From 8b3679a39b6013cc5db2a185717be7ad1a6b56ec Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 18:45:24 -0300 Subject: [PATCH 001/317] Add SO128 to WebUI (HTTP API ENABLE) --- tasmota/xdrv_01_webserver.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 04a403b3f..099e62c3a 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -316,6 +316,7 @@ const char HTTP_FORM_OTHER[] PROGMEM = "
" "

" "
" + "
" "
" "
" "

" @@ -2136,6 +2137,7 @@ void HandleOtherConfiguration(void) { TemplateJson(); WSContentSend_P(HTTP_FORM_OTHER, ResponseData(), (USER_MODULE == Settings->module) ? PSTR(" checked disabled") : "", + (Settings->flag5.disable_referer_chk) ? PSTR(" checked") : "", // SetOption128 - Enable HTTP API (Settings->flag.mqtt_enabled) ? PSTR(" checked") : "", // SetOption3 - Enable MQTT SettingsText(SET_FRIENDLYNAME1), SettingsText(SET_DEVICENAME)); @@ -2186,6 +2188,8 @@ void OtherSaveSettings(void) { cmnd += AddWebCommand(PSTR(D_CMND_WEBPASSWORD "2"), PSTR("wp"), PSTR("\"")); cmnd += F(";" D_CMND_SO "3 "); cmnd += Webserver->hasArg(F("b1")); + cmnd += F(";" D_CMND_SO "128 "); + cmnd += Webserver->hasArg(F("b3")); cmnd += AddWebCommand(PSTR(D_CMND_DEVICENAME), PSTR("dn"), PSTR("\"")); char webindex[5]; char cmnd2[24]; // ";Module 0;Template " @@ -2349,6 +2353,8 @@ void HandleInformation(void) WSContentSend_P(PSTR("}1" D_GATEWAY "}2%_I"), (uint32_t)WiFi.softAPIP()); } WSContentSend_P(PSTR("}1}2 ")); // Empty line + WSContentSend_P(PSTR("}1" D_HTTP_API "}2%s"), Settings->flag5.disable_referer_chk ? PSTR(D_ENABLED) : PSTR(D_DISABLED)); // SetOption 128 + WSContentSend_P(PSTR("}1}2 ")); // Empty line if (Settings->flag.mqtt_enabled) { // SetOption3 - Enable MQTT WSContentSend_P(PSTR("}1" D_MQTT_HOST "}2%s"), SettingsText(SET_MQTT_HOST)); WSContentSend_P(PSTR("}1" D_MQTT_PORT "}2%d"), Settings->mqtt_port); From 9a2267a783c0639110b42f852bce4c04172a26e8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 18:51:53 -0300 Subject: [PATCH 002/317] Add HTTP API Status to STATUS 5 --- tasmota/support_command.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index c728c0fb4..0b518e2ca 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -568,10 +568,11 @@ void CmndStatus(void) if ((0 == payload) || (5 == payload)) { Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS5_NETWORK "\":{\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%_I\",\"" D_JSON_GATEWAY "\":\"%_I\",\"" D_JSON_SUBNETMASK "\":\"%_I\",\"" D_JSON_DNSSERVER "1\":\"%_I\",\"" D_JSON_DNSSERVER "2\":\"%_I\",\"" - D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d,\"" D_CMND_WIFIPOWER "\":%s}}"), + D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d,\"" D_CMND_WIFIPOWER "\":%s,\"" D_HTTP_API "\":\"%s\"}}"), NetworkHostname(), (uint32_t)NetworkAddress(), Settings->ipv4_address[1], Settings->ipv4_address[2], Settings->ipv4_address[3], Settings->ipv4_address[4], - NetworkMacAddress().c_str(), Settings->webserver, Settings->sta_config, WifiGetOutputPower().c_str()); + NetworkMacAddress().c_str(), Settings->webserver, Settings->sta_config, WifiGetOutputPower().c_str(), + (Settings->flag5.disable_referer_chk) ? PSTR(D_ENABLED) : PSTR(D_DISABLED) ); CmndStatusResponse(5); } From 07bc310660aab26086a7321e6416c759e32c2e47 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 18:55:34 -0300 Subject: [PATCH 003/317] Update en_GB.h --- tasmota/language/en_GB.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 8ab8fcae5..40986f104 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Web Admin Password" #define D_MQTT_ENABLE "MQTT enable" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API enable" #define D_FRIENDLY_NAME "Friendly Name" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From b531d7d3f2054233275de5e48817df217f6bd1ed Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 18:56:58 -0300 Subject: [PATCH 004/317] Update af_AF.h --- tasmota/language/af_AF.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 7085f0b56..9cf907e22 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Webadministrateurwagwoord" #define D_MQTT_ENABLE "MQTT inskakel" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API inskakel" #define D_FRIENDLY_NAME "Vriendelike naam" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From b4dd5ca33be98d247b91755c83c03fb40615bc83 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 18:58:56 -0300 Subject: [PATCH 005/317] Update bg_BG.h --- tasmota/language/bg_BG.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 2e55b8280..59af27f2c 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Парола на уеб администратора" #define D_MQTT_ENABLE "Активиране на MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Активиране на HTTP API" #define D_FRIENDLY_NAME "Приятелско име" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From d3b0e477116f8462bb0fe31156b837278a0fd13b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 18:59:31 -0300 Subject: [PATCH 006/317] Update cs_CZ.h --- tasmota/language/cs_CZ.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 4abba8442..6bffd8849 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Heslo Web administrátora" #define D_MQTT_ENABLE "MQTT aktivní" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API aktivní" #define D_FRIENDLY_NAME "Friendly Name" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 2c2e810daef441a02555219128a7e5096cdb6701 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:00:14 -0300 Subject: [PATCH 007/317] Update de_DE.h --- tasmota/language/de_DE.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 388abd2f2..d0fccd6ca 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Passwort für Web Oberfläche" #define D_MQTT_ENABLE "MQTT aktivieren" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API aktivieren" #define D_FRIENDLY_NAME "Name [friendly name]" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From d23e6f96db6eb037d4123ba4bcad849b7eac2fb0 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:00:47 -0300 Subject: [PATCH 008/317] Update el_GR.h --- tasmota/language/el_GR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index d6254a5c8..e71ee964a 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Κωδικός διαχειριστή" #define D_MQTT_ENABLE "Ενεργοποίηση MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Ενεργοποίηση HTTP API" #define D_FRIENDLY_NAME "Φιλική ονομασία" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From f40bf262999c6c9046250491a4bfd0a4df338775 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:01:17 -0300 Subject: [PATCH 009/317] Update es_ES.h --- tasmota/language/es_ES.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 22ff7fe0e..239cb2ac7 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Clave Administrador Web" #define D_MQTT_ENABLE "Habilitar MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Habilitar HTTP API" #define D_FRIENDLY_NAME "Nombre Amigable" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From d6b3a7f47849915e60f7fef7610614c9596433e8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:01:42 -0300 Subject: [PATCH 010/317] Update fr_FR.h --- tasmota/language/fr_FR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 6eb7e9e39..a63b252c0 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Mot de passe Web Admin" #define D_MQTT_ENABLE "MQTT activé" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API activé" #define D_FRIENDLY_NAME "Surnom" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 6440d58a6a3f641925a74d719ec143d2afed2c99 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:02:03 -0300 Subject: [PATCH 011/317] Update fy_NL.h --- tasmota/language/fy_NL.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 50f46a471..3984dc0c5 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Web Admin Wachtwurd" #define D_MQTT_ENABLE "MQTT ynskeakele" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API ynskeakele" #define D_FRIENDLY_NAME "Freonlike namme" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 74ef6d5f2a73ca302b6249527c76e8dade734570 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:02:30 -0300 Subject: [PATCH 012/317] Update he_HE.h --- tasmota/language/he_HE.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index dc35190ee..eba8fa655 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "סיסמת מנהל" #define D_MQTT_ENABLE "MQTT אפשר" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API אפשר" #define D_FRIENDLY_NAME "שם ידידותי" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From df580f72e8ca063aa9bac3f6d11603cf08409056 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:03:04 -0300 Subject: [PATCH 013/317] Update hu_HU.h --- tasmota/language/hu_HU.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 95a6599f2..f7d51de3e 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Web admin jelszó" #define D_MQTT_ENABLE "MQTT engedélyezése" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API engedélyezése" #define D_FRIENDLY_NAME "Név" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From dbe94e149d0a300fc48196d0c7c69b03f60385d1 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:03:59 -0300 Subject: [PATCH 014/317] Update it_IT.h --- tasmota/language/it_IT.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index c0e748418..8d76ab9d3 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Password amministratore web" #define D_MQTT_ENABLE "Abilita MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Abilita HTTP API" #define D_FRIENDLY_NAME "Nome amichevole" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Bridge Hue" From a9e8b764a61be40f3d561241bc6a4813204010e6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:04:48 -0300 Subject: [PATCH 015/317] Update ko_KO.h --- tasmota/language/ko_KO.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index c7683ecf7..5da66f819 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Web Admin 비밀번호" #define D_MQTT_ENABLE "MQTT 사용" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API 사용" #define D_FRIENDLY_NAME "Friendly Name" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From d9560d0f4cd24a8760d1466cea5faf723c87afb3 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:05:15 -0300 Subject: [PATCH 016/317] Update nl_NL.h --- tasmota/language/nl_NL.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index f2830c299..54ed3cc5b 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Web Admin Wachtwoord" #define D_MQTT_ENABLE "MQTT ingeschakeld" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API ingeschakeld" #define D_FRIENDLY_NAME "Beschrijvende naam" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From cf611d83a19350fd4dd9c9183c37a4acdbd84d11 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:05:50 -0300 Subject: [PATCH 017/317] Update pl_PL.h --- tasmota/language/pl_PL.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 5086423f0..d90d6099a 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Hasło administratora" #define D_MQTT_ENABLE "Załącz MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Załącz HTTP API" #define D_FRIENDLY_NAME "Nazwa" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Mostek Hue" From 7b9adf766b4a42fbf89f3d6088302998577cd089 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:06:21 -0300 Subject: [PATCH 018/317] Update pt_BR.h --- tasmota/language/pt_BR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 156ce5a8e..e7b0a938f 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Senha de WEB Admin" #define D_MQTT_ENABLE "MQTT habilitado" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API habilitado" #define D_FRIENDLY_NAME "Nome amigável" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 07ca6ed820ff72ae3e113a29dc6aaadd89a2c15e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:06:54 -0300 Subject: [PATCH 019/317] Update pt_PT.h --- tasmota/language/pt_PT.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 2f467be6b..4eeb9eb28 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Palavra Chave do Admin WEB" #define D_MQTT_ENABLE "MQTT habilitado" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API habilitado" #define D_FRIENDLY_NAME "Nome amigável" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 387eb01a7264b1bb75ddf778c9112b1a00c302b1 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:07:17 -0300 Subject: [PATCH 020/317] Update ro_RO.h --- tasmota/language/ro_RO.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 89ae6aaec..e3ec62390 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Parolă Web Admin" #define D_MQTT_ENABLE "Activare MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Activare HTTP API" #define D_FRIENDLY_NAME "Friendly Name" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 7468b2fa40497812844d812707d4e1c62f3102c9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:07:46 -0300 Subject: [PATCH 021/317] Update ru_RU.h --- tasmota/language/ru_RU.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 5574d2662..9f58134c1 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Пароль Web администратора" #define D_MQTT_ENABLE "MQTT активен" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API активен" #define D_FRIENDLY_NAME "Дружественное Имя" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 8e0d4e1527f589ee28c2b21146af63fa7fd8cade Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:08:06 -0300 Subject: [PATCH 022/317] Update sk_SK.h --- tasmota/language/sk_SK.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 67330366b..ac554d43e 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Heslo Web administrátora" #define D_MQTT_ENABLE "MQTT aktívne" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API aktívne" #define D_FRIENDLY_NAME "Friendly Name" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From ed5668dd0b026016c12c440cbdd01671952b8a38 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:08:31 -0300 Subject: [PATCH 023/317] Update sv_SE.h --- tasmota/language/sv_SE.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index cd9b6ee69..5d46cb0f5 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Webbadmin-lösenord" #define D_MQTT_ENABLE "MQTT aktivera" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API aktivera" #define D_FRIENDLY_NAME "Läsbart namn" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 209724944a74be68f9083b672d3536c71880c76f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:08:55 -0300 Subject: [PATCH 024/317] Update tr_TR.h --- tasmota/language/tr_TR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 05a5202e0..bfdd34f63 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Web Yönetici Şifresi" #define D_MQTT_ENABLE "MQTT aktif" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API aktif" #define D_FRIENDLY_NAME "Kullanıcı Dostu İsim" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 0e48f3f0ab67a071e428fe121b0bcf10115bb69b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:09:20 -0300 Subject: [PATCH 025/317] Update uk_UA.h --- tasmota/language/uk_UA.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 87ab4e379..25ffd199c 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Гасло адміністратора Web" #define D_MQTT_ENABLE "MQTT активний" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API активний" #define D_FRIENDLY_NAME "Дружня назва" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Міст Hue" From 05bf18900a399c936fd8750011df78b99978dc54 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:09:46 -0300 Subject: [PATCH 026/317] Update vi_VN.h --- tasmota/language/vi_VN.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 1c290ddc2..59efb8330 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Mật khẩu quản trị Web" #define D_MQTT_ENABLE "Kích hoạt MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "Kích hoạt HTTP API" #define D_FRIENDLY_NAME "Tên hiển thị thiết bị " #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" From 948c57e5c06d9fae6b5dc5f602463b46c4e84ed7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:10:09 -0300 Subject: [PATCH 027/317] Update zh_CN.h --- tasmota/language/zh_CN.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 8470c322a..036f4c352 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -328,6 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "WEB 管理密码" #define D_MQTT_ENABLE "启用 MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "启用 HTTP API" #define D_FRIENDLY_NAME "昵称" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "飞利浦 Hue 网桥" From 99d09d9b5fbeb578e38f4566ff8904e4b087ec00 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:10:56 -0300 Subject: [PATCH 028/317] Update zh_TW.h --- tasmota/language/zh_TW.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 317b1aad6..18540574f 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -326,8 +326,10 @@ #define D_ACTIVATE "啟動" #define D_DEVICE_NAME "裝置名稱" #define D_WEB_ADMIN_PASSWORD "網頁上的管理員密碼" -#define D_MQTT_ENABLE "MQTT的啟用" +#define D_MQTT_ENABLE "MQTT 的啟用" #define D_MQTT_TLS_ENABLE "MQTT TLS" +#define D_HTTP_API "HTTP API" +#define D_HTTP_API_ENABLE "HTTP API 的啟用" #define D_FRIENDLY_NAME "暱稱" #define D_BELKIN_WEMO "貝爾金 WeMo" #define D_HUE_BRIDGE "Hue 橋接器" From 43642e0b8a5856eea22dffeb6c18708f36cf845a Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 20 Aug 2021 15:54:26 +0200 Subject: [PATCH 029/317] Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility --- CHANGELOG.md | 6 +++++- RELEASENOTES.md | 4 ++-- tasmota/settings.ino | 4 ++++ tasmota/support_command.ino | 5 ++--- tasmota/tasmota_version.h | 2 +- tasmota/xdrv_01_webserver.ino | 6 +++--- 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index baddf5d75..d517da13f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,11 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.5.0.6] +## [9.5.0.7] +### Added +- Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility + +## [9.5.0.6] 20210820 ### Added - Version bump to monitor possible HTTP issues releated to ``SetOption128`` diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 828af7ac0..0ad02bc4f 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -98,10 +98,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.5.0.6 +## Changelog v9.5.0.7 ### Added - Release of [Tasmota WebInstaller](https://arendst.github.io/Tasmota-firmware/) - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled +- Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server @@ -118,7 +119,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651) - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) -- Command ``SetOption128 1`` disabling web referer check default blocking HTTP web commands [#12828](https://github.com/arendst/Tasmota/issues/12828) ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 30f1c0cda..a722ee3b1 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -888,6 +888,7 @@ void SettingsDefaultSet2(void) { Settings->weblog_level = WEB_LOG_LEVEL; SettingsUpdateText(SET_WEBPWD, PSTR(WEB_PASSWORD)); SettingsUpdateText(SET_CORS, PSTR(CORS_DOMAIN)); + Settings->flag5.disable_referer_chk |= true; // Button flag.button_restrict |= KEY_DISABLE_MULTIPRESS; @@ -1395,6 +1396,9 @@ void SettingsDelta(void) { SettingsUpdateText(SET_RGX_SSID, PSTR(WIFI_RGX_SSID)); SettingsUpdateText(SET_RGX_PASSWORD, PSTR(WIFI_RGX_PASSWORD)); } + if (Settings->version < 0x09050007) { + Settings->flag5.disable_referer_chk = true; + } Settings->version = VERSION; SettingsSave(1); diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index 0b518e2ca..f55d35d28 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -568,11 +568,10 @@ void CmndStatus(void) if ((0 == payload) || (5 == payload)) { Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS5_NETWORK "\":{\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%_I\",\"" D_JSON_GATEWAY "\":\"%_I\",\"" D_JSON_SUBNETMASK "\":\"%_I\",\"" D_JSON_DNSSERVER "1\":\"%_I\",\"" D_JSON_DNSSERVER "2\":\"%_I\",\"" - D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d,\"" D_CMND_WIFIPOWER "\":%s,\"" D_HTTP_API "\":\"%s\"}}"), + D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"HTTP_API\":%d,\"" D_CMND_WIFICONFIG "\":%d,\"" D_CMND_WIFIPOWER "\":%s}}"), NetworkHostname(), (uint32_t)NetworkAddress(), Settings->ipv4_address[1], Settings->ipv4_address[2], Settings->ipv4_address[3], Settings->ipv4_address[4], - NetworkMacAddress().c_str(), Settings->webserver, Settings->sta_config, WifiGetOutputPower().c_str(), - (Settings->flag5.disable_referer_chk) ? PSTR(D_ENABLED) : PSTR(D_DISABLED) ); + NetworkMacAddress().c_str(), Settings->webserver, Settings->flag5.disable_referer_chk, Settings->sta_config, WifiGetOutputPower().c_str()); CmndStatusResponse(5); } diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 51dc681e6..6988c52b6 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09050006; +const uint32_t VERSION = 0x09050007; #endif // _TASMOTA_VERSION_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 4f3912876..1057283c9 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -316,7 +316,7 @@ const char HTTP_FORM_OTHER[] PROGMEM = "
" "

" "
" - "
" + "
" "
" "
" "

" @@ -667,7 +667,7 @@ bool HttpCheckPriviledgedAccess(bool autorequestauth = true) return true; } } - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP "Referer denied. Use 'SO128 1' for HTTP API commands. 'Webpassword' is recommended.")); + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_HTTP "Referer '%s' denied. Use 'SO128 1' for HTTP API commands. 'Webpassword' is recommended."), referer.c_str()); return false; } else { return true; @@ -2189,7 +2189,7 @@ void OtherSaveSettings(void) { cmnd += F(";" D_CMND_SO "3 "); cmnd += Webserver->hasArg(F("b1")); cmnd += F(";" D_CMND_SO "128 "); - cmnd += Webserver->hasArg(F("b3")); + cmnd += Webserver->hasArg(F("b3")); cmnd += AddWebCommand(PSTR(D_CMND_DEVICENAME), PSTR("dn"), PSTR("\"")); char webindex[5]; char cmnd2[24]; // ";Module 0;Template " From c1af17251b6868b8bac4055b0b07d50464f0bb8e Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 21 Aug 2021 12:00:38 +0200 Subject: [PATCH 030/317] PSRAM * HAS_PSRAM_FIX --- boards/esp32-cam.json | 2 +- boards/esp32-odroid.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boards/esp32-cam.json b/boards/esp32-cam.json index e9b30d24f..fc3fc4f1f 100644 --- a/boards/esp32-cam.json +++ b/boards/esp32-cam.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "dout", diff --git a/boards/esp32-odroid.json b/boards/esp32-odroid.json index 28b82ba29..10bb8bf4d 100644 --- a/boards/esp32-odroid.json +++ b/boards/esp32-odroid.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ODROID_ESP32 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw", + "extra_flags": "-DARDUINO_ODROID_ESP32 -DBOARD_HAS_PSRAM -DHAS_PSRAM_FIX -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "dout", From b8cbeab951cf50b60bf1f8faa8a139476db7ff73 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 21 Aug 2021 13:01:20 +0200 Subject: [PATCH 031/317] enable PSRAM --- boards/esp32_16M.json | 2 +- boards/esp32_4M.json | 2 +- boards/esp32_8M.json | 2 +- boards/esp32_solo1_4M.json | 2 +- boards/esp32c3.json | 1 + boards/esp32s2.json | 1 + 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/boards/esp32_16M.json b/boards/esp32_16M.json index 7bcc0db53..69abb9a09 100644 --- a/boards/esp32_16M.json +++ b/boards/esp32_16M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_16M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_16M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_4M.json b/boards/esp32_4M.json index 4f549bb3e..f43be6848 100644 --- a/boards/esp32_4M.json +++ b/boards/esp32_4M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_4M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_8M.json b/boards/esp32_8M.json index 616eb16d3..adcd0caaa 100644 --- a/boards/esp32_8M.json +++ b/boards/esp32_8M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_8M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_8M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_solo1_4M.json b/boards/esp32_solo1_4M.json index 64759d331..eb9d242de 100644 --- a/boards/esp32_solo1_4M.json +++ b/boards/esp32_solo1_4M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_4M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32c3.json b/boards/esp32c3.json index cedcf1500..b68f06d92 100644 --- a/boards/esp32c3.json +++ b/boards/esp32c3.json @@ -4,6 +4,7 @@ "ldscript": "esp32c3_out.ld" }, "core": "esp32", + "extra_flags": "-DBOARD_HAS_PSRAM", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "dout", diff --git a/boards/esp32s2.json b/boards/esp32s2.json index a56828c14..e18a2339c 100644 --- a/boards/esp32s2.json +++ b/boards/esp32s2.json @@ -4,6 +4,7 @@ "ldscript": "esp32s2_out.ld" }, "core": "esp32", + "extra_flags": "-DBOARD_HAS_PSRAM", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "dout", From 35698dbe640d8f1d9e2b2f6bde8a37b431a907b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20K=C5=AFrka?= Date: Sun, 22 Aug 2021 11:09:44 +0200 Subject: [PATCH 032/317] Fix for iem3155 wattmeter - CRC error, Power unit error, Energy total number type mismatch --- tasmota/my_user_config.h | 1 + tasmota/xnrg_16_iem3000.ino | 32 +++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 3e3004ab0..649f5c364 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -778,6 +778,7 @@ //#define USE_IEM3000 // Add support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) #define IEM3000_SPEED 19200 // iEM3000-Modbus RS485 serial speed (default: 19200 baud) #define IEM3000_ADDR 1 // iEM3000-Modbus modbus address (default: 0x01) +// #ifdef IEM3000_IEM3155 //Compatibility fix for Iem3155 (changes Power and Energy total readout) //#define USE_WE517 // Add support for Orno WE517-Modbus energy monitor (+1k code) // -- Low level interface devices ----------------- diff --git a/tasmota/xnrg_16_iem3000.ino b/tasmota/xnrg_16_iem3000.ino index 459b45a08..635e3c225 100644 --- a/tasmota/xnrg_16_iem3000.ino +++ b/tasmota/xnrg_16_iem3000.ino @@ -51,9 +51,19 @@ const uint16_t Iem3000_start_addresses[] { 0x0bef, // 7 . IEM3000_P2_POWER (2/Float32) [KW] Active Power Phase 2 0x0bf1, // 8 . IEM3000_P3_POWER (2/Float32) [KW] Active Power Phase 3 0x0c25, // 9 . IEM3000_FREQUENCY (2/Float32) [Hz] Frequency +#ifdef IEM3000_IEM3155 + 0xb02b, // 10 . IEM3000_TOTAL_ACTIVE (2/Float32) [Wh] Total Active Energy Import +#else 0xb02b, // 10 . IEM3000_TOTAL_ACTIVE (4/Int64) [Wh] Total Active Energy Import +#endif }; +#ifdef IEM3000_IEM3155 + #define FLOAT_ParamLimit 11 +#else + #define FLOAT_ParamLimit 10 +#endif + struct IEM3000 { uint8_t read_state = 0; uint8_t send_retry = 0; @@ -65,12 +75,12 @@ void IEM3000Every250ms(void) { bool data_ready = Iem3000Modbus->ReceiveReady(); uint8_t reg_count = 4; - if (Iem3000.read_state < 10) { + if (Iem3000.read_state < FLOAT_ParamLimit) { reg_count = 2; } if (data_ready) { - uint8_t buffer[14]; // At least 5 + sizeof(int64_t) = 13 + uint8_t buffer[16]; // At least 5 + sizeof(int64_t) = 13 uint32_t error = Iem3000Modbus->ReceiveBuffer(buffer, reg_count); AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, Iem3000Modbus->ReceiveCount()); @@ -85,7 +95,7 @@ void IEM3000Every250ms(void) // 01 04 04 43 66 33 34 1B 38 = 230.2 Volt float value; int64_t value64; - if(Iem3000.read_state >= 0 && Iem3000.read_state < 10) { + if(Iem3000.read_state >= 0 && Iem3000.read_state < FLOAT_ParamLimit) { ((uint8_t*)&value)[3] = buffer[3]; // Get float values ((uint8_t*)&value)[2] = buffer[4]; ((uint8_t*)&value)[1] = buffer[5]; @@ -127,15 +137,27 @@ void IEM3000Every250ms(void) break; case 6: +#ifdef IEM3000_IEM3155 + Energy.active_power[0] = value*1000; +#else Energy.active_power[0] = value; +#endif break; case 7: +#ifdef IEM3000_IEM3155 + Energy.active_power[1] = value*1000; +#else Energy.active_power[1] = value; +#endif break; case 8: +#ifdef IEM3000_IEM3155 + Energy.active_power[2] = value*1000; +#else Energy.active_power[2] = value; +#endif break; case 9: @@ -143,7 +165,11 @@ void IEM3000Every250ms(void) break; case 10: +#ifdef IEM3000_IEM3155 + EnergyUpdateTotal(value, true); +#else EnergyUpdateTotal(value64 * 0.001f, true); // 1125 => 1.125 +#endif break; } From eb05c81f065cc1dc4e0fd60e8117d5498b2b32d0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 22 Aug 2021 11:47:11 +0200 Subject: [PATCH 033/317] Update my_user_config.h --- tasmota/my_user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 649f5c364..9357a1ea5 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -778,7 +778,7 @@ //#define USE_IEM3000 // Add support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) #define IEM3000_SPEED 19200 // iEM3000-Modbus RS485 serial speed (default: 19200 baud) #define IEM3000_ADDR 1 // iEM3000-Modbus modbus address (default: 0x01) -// #ifdef IEM3000_IEM3155 //Compatibility fix for Iem3155 (changes Power and Energy total readout) +// #define IEM3000_IEM3155 // Compatibility fix for Iem3155 (changes Power and Energy total readout) //#define USE_WE517 // Add support for Orno WE517-Modbus energy monitor (+1k code) // -- Low level interface devices ----------------- From de37f88644d965a16fb6431763047a7de1dd1ce8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 22 Aug 2021 11:49:27 +0200 Subject: [PATCH 034/317] S2 compile fix --- include/esp32x_fixes.h | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/include/esp32x_fixes.h b/include/esp32x_fixes.h index 606c87b6e..047a343c8 100644 --- a/include/esp32x_fixes.h +++ b/include/esp32x_fixes.h @@ -20,12 +20,12 @@ /* * Xtensa toolchain declares `int32_t` as `int` but RISC-V toolchain * declares `int32_t` as `long int` which causes compilation errors. - * + * * See: * https://github.com/espressif/esp-idf/issues/6906 * https://github.com/espressif/arduino-esp32/issues/5086 - * - * You need to add the following lines in `build_flags`: + * + * You need to add the following lines in `build_flags`: * -I$PROJECT_DIR/include * -include "esp32x_fixes.h" */ @@ -39,16 +39,27 @@ #endif // __riscv -#if CONFIG_IDF_TARGET_ESP32C3 -// fix a bug in esp-idf 4.4 for esp32c3 -#ifndef REG_SPI_BASE -#define REG_SPI_BASE(i) (DR_REG_SPI1_BASE + (((i)>1) ? (((i)* 0x1000) + 0x20000) : (((~(i)) & 1)* 0x1000 ))) -#endif +//alias, deprecated for the chips after esp32s2 +#ifdef CONFIG_IDF_TARGET_ESP32 +#define SPI_HOST SPI1_HOST +#define HSPI_HOST SPI2_HOST +#define VSPI_HOST SPI3_HOST -// SPI_MOSI_DLEN_REG is not defined anymore in esp32c3, instead use SPI_MS_DLEN_REG -#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x) -//alias for different chips, deprecated for the chips after esp32s2 +#elif CONFIG_IDF_TARGET_ESP32S2 +// SPI_HOST (SPI1_HOST) is not supported by the SPI Master and SPI Slave driver on ESP32-S2 and later +#define SPI_HOST SPI1_HOST +#define FSPI_HOST SPI2_HOST +#define HSPI_HOST SPI3_HOST +#define VSPI_HOST SPI3_HOST + +#elif CONFIG_IDF_TARGET_ESP32C3 #define SPI_HOST SPI1_HOST #define HSPI_HOST SPI2_HOST #define VSPI_HOST SPI2_HOST /* No SPI3_host on C3 */ -#endif +// fix a bug in esp-idf 4.4 for esp32c3 +#ifndef REG_SPI_BASE +#define REG_SPI_BASE(i) (DR_REG_SPI1_BASE + (((i)>1) ? (((i)* 0x1000) + 0x20000) : (((~(i)) & 1)* 0x1000 ))) +// SPI_MOSI_DLEN_REG is not defined anymore in esp32c3, instead use SPI_MS_DLEN_REG +#define SPI_MOSI_DLEN_REG(x) SPI_MS_DLEN_REG(x) +#endif // REG_SPI_BASE +#endif // TARGET From 107d247a6ad2a93cd17db486de388e1ac41d7d1f Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 22 Aug 2021 11:51:24 +0200 Subject: [PATCH 035/317] Add support for IEM3155 Wattmeter (#12950) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d517da13f..3cae55428 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.5.0.7] ### Added - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility +- Support for IEM3155 Wattmeter (#12950) ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 0ad02bc4f..d94765d47 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -119,6 +119,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651) - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) +- Support for IEM3155 Wattmeter [#12950](https://github.com/arendst/Tasmota/issues/12950) ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware From 7de0257d1b6cc52d92fceeeb06f74dc1f1d1467b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 22 Aug 2021 13:45:15 +0200 Subject: [PATCH 036/317] Fix issue id --- CHANGELOG.md | 2 +- RELEASENOTES.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cae55428..7be2b3859 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.5.0.7] ### Added - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility -- Support for IEM3155 Wattmeter (#12950) +- Support for IEM3155 Wattmeter (#12940) ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d94765d47..876a178df 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -119,7 +119,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651) - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) -- Support for IEM3155 Wattmeter [#12950](https://github.com/arendst/Tasmota/issues/12950) +- Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware From 68e9e3dbc7e7583962cdb5fba870d27cfda2bd0a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 22 Aug 2021 15:52:00 +0200 Subject: [PATCH 037/317] NimBLE 1.3.1 --- lib/libesp32_div/NimBLE-Arduino/CHANGELOG.md | 46 + lib/libesp32_div/NimBLE-Arduino/README.md | 12 +- .../NimBLE-Arduino/docs/Migration_guide.md | 2 - .../NimBLE_Scan_whitelist.ino | 67 + .../examples/NimBLE_Server/NimBLE_Server.ino | 3 + .../NimBLE_Server_Whitelist.ino | 105 + lib/libesp32_div/NimBLE-Arduino/library.json | 2 +- .../NimBLE-Arduino/library.properties | 2 +- .../NimBLE-Arduino/src/FreeRTOS.cpp | 316 --- .../NimBLE-Arduino/src/FreeRTOS.h | 89 - .../NimBLE-Arduino/src/NimBLE2904.h | 2 +- .../src/NimBLEAdvertisedDevice.cpp | 2 +- .../src/NimBLEAdvertisedDevice.h | 2 +- .../NimBLE-Arduino/src/NimBLEAdvertising.cpp | 31 +- .../src/NimBLECharacteristic.cpp | 144 +- .../NimBLE-Arduino/src/NimBLECharacteristic.h | 43 +- .../NimBLE-Arduino/src/NimBLEClient.cpp | 18 + .../NimBLE-Arduino/src/NimBLEClient.h | 2 + .../NimBLE-Arduino/src/NimBLEConnInfo.h | 55 + .../NimBLE-Arduino/src/NimBLEDescriptor.cpp | 28 +- .../NimBLE-Arduino/src/NimBLEDescriptor.h | 45 +- .../NimBLE-Arduino/src/NimBLEDevice.cpp | 220 +- .../NimBLE-Arduino/src/NimBLEDevice.h | 14 + .../NimBLE-Arduino/src/NimBLELog.h | 20 +- .../src/NimBLERemoteCharacteristic.cpp | 98 +- .../src/NimBLERemoteCharacteristic.h | 3 + .../src/NimBLERemoteService.cpp | 31 +- .../NimBLE-Arduino/src/NimBLERemoteService.h | 1 - .../NimBLE-Arduino/src/NimBLEScan.cpp | 17 +- .../NimBLE-Arduino/src/NimBLEScan.h | 1 + .../NimBLE-Arduino/src/NimBLEServer.cpp | 194 +- .../NimBLE-Arduino/src/NimBLEServer.h | 22 +- .../NimBLE-Arduino/src/NimBLEService.cpp | 141 +- .../NimBLE-Arduino/src/NimBLEService.h | 9 +- .../NimBLE-Arduino/src/NimBLEUUID.cpp | 4 - .../src/esp-hci/src/esp_nimble_hci.c | 18 +- .../NimBLE-Arduino/src/esp_nimble_cfg.h | 278 +- .../NimBLE-Arduino/src/host/ble_gap.h | 157 +- .../NimBLE-Arduino/src/host/ble_hs_adv.h | 28 +- .../NimBLE-Arduino/src/host/ble_hs_log.h | 15 +- .../NimBLE-Arduino/src/host/ble_l2cap.h | 57 +- .../NimBLE-Arduino/src/host/ble_sm.h | 17 +- .../NimBLE-Arduino/src/log_common/ignore.h | 64 + .../log_common.h} | 18 +- .../NimBLE-Arduino/src/logcfg/logcfg.h | 147 ++ .../NimBLE-Arduino/src/mesh/access.h | 243 +- .../NimBLE-Arduino/src/mesh/cfg_cli.h | 7 +- .../NimBLE-Arduino/src/mesh/cfg_srv.h | 7 +- .../NimBLE-Arduino/src/mesh/glue.h | 48 +- .../NimBLE-Arduino/src/mesh/health_cli.h | 7 +- .../NimBLE-Arduino/src/mesh/health_srv.h | 7 +- .../NimBLE-Arduino/src/mesh/main.h | 47 + .../NimBLE-Arduino/src/mesh/model_cli.h | 18 +- .../NimBLE-Arduino/src/mesh/model_srv.h | 37 +- .../NimBLE-Arduino/src/nimble/ble.h | 24 +- .../NimBLE-Arduino/src/nimble/hci_common.h | 1672 +++++++----- .../src/nimble/host/mesh/src/access.c | 317 ++- .../src/nimble/host/mesh/src/access.h | 20 +- .../src/nimble/host/mesh/src/adv.c | 36 +- .../src/nimble/host/mesh/src/adv.h | 13 +- .../src/nimble/host/mesh/src/beacon.c | 48 +- .../src/nimble/host/mesh/src/cfg_cli.c | 126 +- .../src/nimble/host/mesh/src/cfg_srv.c | 530 ++-- .../src/nimble/host/mesh/src/crypto.c | 105 +- .../src/nimble/host/mesh/src/crypto.h | 10 + .../src/nimble/host/mesh/src/foundation.h | 15 +- .../src/nimble/host/mesh/src/friend.c | 627 +++-- .../src/nimble/host/mesh/src/friend.h | 9 +- .../src/nimble/host/mesh/src/glue.c | 35 +- .../src/nimble/host/mesh/src/health_cli.c | 29 +- .../src/nimble/host/mesh/src/health_srv.c | 38 +- .../src/nimble/host/mesh/src/lpn.c | 26 +- .../src/nimble/host/mesh/src/mesh.c | 44 +- .../src/nimble/host/mesh/src/mesh_priv.h | 1 + .../src/nimble/host/mesh/src/model_cli.c | 85 +- .../src/nimble/host/mesh/src/model_srv.c | 90 +- .../src/nimble/host/mesh/src/net.c | 146 +- .../src/nimble/host/mesh/src/net.h | 43 +- .../src/nimble/host/mesh/src/nodes.c | 161 ++ .../src/nimble/host/mesh/src/nodes.h | 10 + .../src/nimble/host/mesh/src/prov.c | 593 ++++- .../src/nimble/host/mesh/src/prov.h | 4 + .../src/nimble/host/mesh/src/proxy.c | 95 +- .../src/nimble/host/mesh/src/proxy.h | 2 +- .../src/nimble/host/mesh/src/settings.c | 574 ++++- .../src/nimble/host/mesh/src/settings.h | 3 + .../src/nimble/host/mesh/src/shell.c | 129 +- .../host/mesh/src/src/ble_att_cmd_priv.h | 20 - .../nimble/host/mesh/src/src/ble_att_priv.h | 6 - .../nimble/host/mesh/src/src/ble_gap_priv.h | 40 +- .../host/mesh/src/src/ble_hs_conn_priv.h | 24 +- .../host/mesh/src/src/ble_hs_flow_priv.h | 2 +- .../host/mesh/src/src/ble_hs_hci_priv.h | 216 +- .../nimble/host/mesh/src/src/ble_hs_priv.h | 29 +- .../host/mesh/src/src/ble_l2cap_coc_priv.h | 37 +- .../nimble/host/mesh/src/src/ble_l2cap_priv.h | 25 +- .../host/mesh/src/src/ble_l2cap_sig_priv.h | 66 +- .../nimble/host/mesh/src/src/ble_sm_priv.h | 60 +- .../src/nimble/host/mesh/src/transport.c | 353 ++- .../src/nimble/host/mesh/src/transport.h | 6 + .../host/services/gap/src/ble_svc_gap.c | 2 +- .../host/services/tps/src/ble_hs_hci_priv.h | 216 +- .../src/nimble/host/src/ble_att_clt.c | 65 - .../src/nimble/host/src/ble_att_cmd.c | 110 - .../src/nimble/host/src/ble_att_cmd_priv.h | 20 - .../src/nimble/host/src/ble_att_priv.h | 6 - .../src/nimble/host/src/ble_att_svr.c | 54 - .../src/nimble/host/src/ble_gap.c | 2295 ++++++++++------- .../src/nimble/host/src/ble_gap_priv.h | 40 +- .../src/nimble/host/src/ble_gattc.c | 2 +- .../src/nimble/host/src/ble_gatts.c | 13 +- .../src/nimble/host/src/ble_hs.c | 20 +- .../src/nimble/host/src/ble_hs_adv.c | 58 +- .../src/nimble/host/src/ble_hs_atomic.c | 5 + .../src/nimble/host/src/ble_hs_conn.c | 39 +- .../src/nimble/host/src/ble_hs_conn_priv.h | 24 +- .../src/nimble/host/src/ble_hs_dbg.c | 695 ----- .../src/nimble/host/src/ble_hs_flow.c | 84 +- .../src/nimble/host/src/ble_hs_flow_priv.h | 2 +- .../src/nimble/host/src/ble_hs_hci.c | 157 +- .../src/nimble/host/src/ble_hs_hci_cmd.c | 1760 +------------ .../src/nimble/host/src/ble_hs_hci_evt.c | 704 +++-- .../src/nimble/host/src/ble_hs_hci_priv.h | 216 +- .../src/nimble/host/src/ble_hs_hci_util.c | 134 +- .../src/nimble/host/src/ble_hs_id.c | 24 +- .../src/nimble/host/src/ble_hs_misc.c | 20 +- .../nimble/host/src/ble_hs_periodic_sync.c | 2 + .../src/nimble/host/src/ble_hs_priv.h | 29 +- .../src/nimble/host/src/ble_hs_pvcy.c | 106 +- .../src/nimble/host/src/ble_hs_resolv.c | 18 +- .../src/nimble/host/src/ble_hs_startup.c | 133 +- .../src/nimble/host/src/ble_hs_stop.c | 102 +- .../src/nimble/host/src/ble_l2cap.c | 78 +- .../src/nimble/host/src/ble_l2cap_coc.c | 143 +- .../src/nimble/host/src/ble_l2cap_coc_priv.h | 37 +- .../src/nimble/host/src/ble_l2cap_priv.h | 25 +- .../src/nimble/host/src/ble_l2cap_sig.c | 697 ++++- .../src/nimble/host/src/ble_l2cap_sig_priv.h | 66 +- .../src/nimble/host/src/ble_sm.c | 144 +- .../src/nimble/host/src/ble_sm_alg.c | 36 +- .../src/nimble/host/src/ble_sm_cmd.c | 94 - .../src/nimble/host/src/ble_sm_priv.h | 60 +- .../src/nimble/host/src/ble_sm_sc.c | 155 +- .../host/store/config/src/ble_store_nvs.c | 6 +- .../NimBLE-Arduino/src/nimconfig.h | 7 + .../NimBLE-Arduino/src/nimconfig_rename.h | 14 +- .../NimBLE-Arduino/src/os/endian.h | 4 + .../NimBLE-Arduino/src/os/os_mbuf.h | 19 + .../src/src/ble_hs_dbg_priv.h => os/util.h} | 28 +- .../src/porting/nimble/src/endian.c | 50 + .../src/porting/nimble/src/os_mbuf.c | 88 +- .../NimBLE-Arduino/src/src/ble_hs_hci_priv.h | 216 +- .../NimBLE-Arduino/src/src/ble_sm_priv.h | 60 +- .../src/store/config/ble_store_config.h | 2 - .../NimBLE-Arduino/src/syscfg/syscfg.h | 762 +++--- .../NimBLE-Arduino/src/sysflash/sysflash.h | 24 + pio-tools/cxx_flags.py | 4 + platformio_tasmota_cenv_sample.ini | 74 +- tasmota/xdrv_79_esp32_ble.ino | 6 +- tasmota/xsns_62_esp32_mi.ino | 4 +- tasmota/xsns_62_esp32_mi_ble.ino | 6 +- 161 files changed, 10822 insertions(+), 8797 deletions(-) create mode 100644 lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino create mode 100644 lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.cpp delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.h create mode 100644 lib/libesp32_div/NimBLE-Arduino/src/NimBLEConnInfo.h create mode 100644 lib/libesp32_div/NimBLE-Arduino/src/log_common/ignore.h rename lib/libesp32_div/NimBLE-Arduino/src/{nimble/host/src/ble_hs_dbg_priv.h => log_common/log_common.h} (72%) create mode 100644 lib/libesp32_div/NimBLE-Arduino/src/logcfg/logcfg.h create mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.c create mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.h delete mode 100644 lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg.c rename lib/libesp32_div/NimBLE-Arduino/src/{nimble/host/mesh/src/src/ble_hs_dbg_priv.h => os/util.h} (56%) create mode 100644 lib/libesp32_div/NimBLE-Arduino/src/sysflash/sysflash.h create mode 100644 pio-tools/cxx_flags.py diff --git a/lib/libesp32_div/NimBLE-Arduino/CHANGELOG.md b/lib/libesp32_div/NimBLE-Arduino/CHANGELOG.md index a76ef59a6..69bb956d7 100644 --- a/lib/libesp32_div/NimBLE-Arduino/CHANGELOG.md +++ b/lib/libesp32_div/NimBLE-Arduino/CHANGELOG.md @@ -2,6 +2,52 @@ All notable changes to this project will be documented in this file. +## [1.3.1] - 2021-08-04 + +### Fixed +- Corrected a compiler/linker error when an application or a library uses bluetooth classic due to the redefinition of `btInUse`. + +## [1.3.0] - 2021-08-02 + +### Added +- `NimBLECharacteristic::removeDescriptor`: Dynamically remove a descriptor from a characterisic. Takes effect after all connections are closed and sends a service changed indication. +- `NimBLEService::removeCharacteristic`: Dynamically remove a characteristic from a service. Takes effect after all connections are closed and sends a service changed indication +- `NimBLEServerCallbacks::onMTUChange`: This is callback is called when the MTU is updated after connection with a client. +- ESP32C3 support + +- Whitelist API: + - `NimBLEDevice::whiteListAdd`: Add a device to the whitelist. + - `NimBLEDevice::whiteListRemove`: Remove a device from the whitelist. + - `NimBLEDevice::onWhiteList`: Check if the device is on the whitelist. + - `NimBLEDevice::getWhiteListCount`: Gets the size of the whitelist + - `NimBLEDevice::getWhiteListAddress`: Get the address of a device on the whitelist by index value. + +- Bond management API: + - `NimBLEDevice::getNumBonds`: Gets the number of bonds stored. + - `NimBLEDevice::isBonded`: Checks if the device is bonded. + - `NimBLEDevice::deleteAllBonds`: Deletes all bonds. + - `NimBLEDevice::getBondedAddress`: Gets the address of a bonded device by the index value. + +- `NimBLECharacteristic::getCallbacks` to retrieve the current callback handler. +- Connection Information class: `NimBLEConnInfo`. +- `NimBLEScan::clearDuplicateCache`: This can be used to reset the cache of advertised devices so they will be immediately discovered again. + +### Changed +- FreeRTOS files have been removed as they are not used by the library. +- Services, characteristics and descriptors can now be created statically and added after. +- Excess logging and some asserts removed. +- Use ESP_LOGx macros to enable using local log level filtering. + +### Fixed +- `NimBLECharacteristicCallbacks::onSubscribe` Is now called after the connection is added to the vector. +- Corrected bonding failure when reinitializing the BLE stack. +- Writing to a characterisic with a std::string value now correctly writes values with null characters. +- Retrieving remote descriptors now uses the characterisic end handle correctly. +- Missing data in long writes to remote descriptors. +- Hanging on task notification when sending an indication from the characteristic callback. +- BLE controller memory could be released when using Arduino as a component. +- Complile errors with NimBLE release 1.3.0. + ## [1.2.0] - 2021-02-08 ### Added diff --git a/lib/libesp32_div/NimBLE-Arduino/README.md b/lib/libesp32_div/NimBLE-Arduino/README.md index 08e2a69c0..fd480fd83 100644 --- a/lib/libesp32_div/NimBLE-Arduino/README.md +++ b/lib/libesp32_div/NimBLE-Arduino/README.md @@ -72,9 +72,9 @@ such as increasing max connections, default is 3, absolute maximum connections i
# Development Status -This Library is tracking the esp-nimble repo, nimble-1.2.0-idf master branch, currently [@f4ae049.](https://github.com/espressif/esp-nimble) +This Library is tracking the esp-nimble repo, nimble-1.3.0-idf master branch, currently [@5bb7b40.](https://github.com/espressif/esp-nimble) -Also tracking the NimBLE related changes in ESP-IDF, master branch, currently [@3caa969.](https://github.com/espressif/esp-idf/tree/master/components/bt/host/nimble) +Also tracking the NimBLE related changes in ESP-IDF, master branch, currently [@639e7ad.](https://github.com/espressif/esp-idf/tree/master/components/bt/host/nimble)
# Acknowledgments @@ -82,10 +82,4 @@ Also tracking the NimBLE related changes in ESP-IDF, master branch, currently [@ * [beegee-tokyo](https://github.com/beegee-tokyo) for contributing your time to test/debug and contributing the beacon examples. * [Jeroen88](https://github.com/Jeroen88) for the amazing help debugging and improving the client code.
- -# Todo -- Improve host reset handler -- Implement random address handling -- Implement bond management -- Add Bluetooth Mesh -
+ diff --git a/lib/libesp32_div/NimBLE-Arduino/docs/Migration_guide.md b/lib/libesp32_div/NimBLE-Arduino/docs/Migration_guide.md index 59854e5fd..62406c622 100644 --- a/lib/libesp32_div/NimBLE-Arduino/docs/Migration_guide.md +++ b/lib/libesp32_div/NimBLE-Arduino/docs/Migration_guide.md @@ -69,8 +69,6 @@ For example `BLEServer::createService(SERVICE_UUID)` will work just as it did be ### Characteristics -The constructor for `(Nim)BLECharacteristic` is now private, so if you currently subclass it to add logic you should switch to use `NimBLEService::createCharacteristic` instead. Any custom processing logic previously in a `BLECharacteristic` subclass should be moved to a `NimBLECharacteristicCallbacks` subclass instead, and passed into `NimBLECharacteristic::setCallbacks`. - `BLEService::createCharacteristic` (`NimBLEService::createCharacteristic`) is used the same way as originally except the properties parameter has changed. When creating a characteristic the properties are now set with `NIMBLE_PROPERTY::XXXX` instead of `BLECharacteristic::XXXX`. diff --git a/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino b/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino new file mode 100644 index 000000000..cddbcc91b --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Scan_Whitelist/NimBLE_Scan_whitelist.ino @@ -0,0 +1,67 @@ +/* + * NimBLE_Scan_Whitelist demo + * + * Created May 16, 2021 + * Author: h2zero + */ + +#include + +int scanTime = 5; //In seconds +NimBLEScan* pBLEScan; + +class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { + void onResult(BLEAdvertisedDevice* advertisedDevice) { + Serial.printf("Advertised Device: %s \n", advertisedDevice->toString().c_str()); + /* + * Here we add the device scanned to the whitelist based on service data but any + * advertised data can be used for your preffered data. + */ + if (advertisedDevice->haveServiceData()) { + /* If this is a device with data we want to capture, add it to the whitelist */ + if (advertisedDevice->getServiceData(NimBLEUUID("AABB")) != "") { + Serial.printf("Adding %s to whitelist\n", std::string(advertisedDevice->getAddress()).c_str()); + NimBLEDevice::whiteListAdd(advertisedDevice->getAddress()); + } + } + } +}; + +void setup() { + Serial.begin(115200); + Serial.println("Scanning..."); + + NimBLEDevice::init(""); + pBLEScan = NimBLEDevice::getScan(); + pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); + pBLEScan->setActiveScan(true); + pBLEScan->setInterval(100); + pBLEScan->setFilterPolicy(BLE_HCI_SCAN_FILT_NO_WL); + pBLEScan->setWindow(99); +} + +void loop() { + NimBLEScanResults foundDevices = pBLEScan->start(scanTime, false); + Serial.print("Devices found: "); + Serial.println(foundDevices.getCount()); + Serial.println("Scan done!"); + + Serial.println("Whitelist contains:"); + for (auto i=0; i 0) { + if (foundDevices.getCount() == 0) { + pBLEScan->setFilterPolicy(BLE_HCI_SCAN_FILT_NO_WL); + } else { + pBLEScan->setFilterPolicy(BLE_HCI_SCAN_FILT_USE_WL); + } + } + pBLEScan->clearResults(); + delay(2000); +} diff --git a/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino b/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino index f66169ce8..409ec64d6 100644 --- a/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino +++ b/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server/NimBLE_Server.ino @@ -39,6 +39,9 @@ class ServerCallbacks: public NimBLEServerCallbacks { Serial.println("Client disconnected - start advertising"); NimBLEDevice::startAdvertising(); }; + void onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc) { + Serial.printf("MTU updated: %u for connection ID: %u\n", MTU, desc->conn_handle); + }; /********************* Security handled here ********************** ****** Note: these are the same return values as defaults ********/ diff --git a/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino b/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino new file mode 100644 index 000000000..4c7d33549 --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/examples/NimBLE_Server_Whitelist/NimBLE_Server_Whitelist.ino @@ -0,0 +1,105 @@ +/* + * NimBLE_Server_Whitelist demo + * + * Created May 17, 2021 + * Author: h2zero + */ + +#include + +NimBLECharacteristic* pCharacteristic = nullptr; +bool deviceConnected = false; +bool oldDeviceConnected = false; +uint32_t value = 0; + +// See the following for generating UUIDs: +// https://www.uuidgenerator.net/ + +#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b" +#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8" + + +class MyServerCallbacks: public NimBLEServerCallbacks { + void onConnect(NimBLEServer* pServer) { + deviceConnected = true; + }; + + void onDisconnect(NimBLEServer* pServer, ble_gap_conn_desc* desc) { + // Peer disconnected, add them to the whitelist + // This allows us to use the whitelist to filter connection attempts + // which will minimize reconnection time. + NimBLEDevice::whiteListAdd(NimBLEAddress(desc->peer_ota_addr)); + deviceConnected = false; + } +}; + +void onAdvComplete(NimBLEAdvertising *pAdvertising) { + Serial.println("Advertising stopped"); + if (deviceConnected) { + return; + } + // If advertising timed out without connection start advertising without whitelist filter + pAdvertising->setScanFilter(false,false); + pAdvertising->start(); +} + + +void setup() { + Serial.begin(115200); + + // Create the BLE Device + NimBLEDevice::init("ESP32"); + + // Create the BLE Server + NimBLEServer* pServer = NimBLEDevice::createServer(); + pServer->setCallbacks(new MyServerCallbacks()); + pServer->advertiseOnDisconnect(false); + + // Create the BLE Service + NimBLEService *pService = pServer->createService(SERVICE_UUID); + + // Create a BLE Characteristic + pCharacteristic = pService->createCharacteristic( + CHARACTERISTIC_UUID, + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE | + NIMBLE_PROPERTY::NOTIFY ); + + // Start the service + pService->start(); + + // Start advertising + NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); + pAdvertising->addServiceUUID(SERVICE_UUID); + pAdvertising->setScanResponse(false); + pAdvertising->start(); + Serial.println("Waiting a client connection to notify..."); +} + +void loop() { + // notify changed value + if (deviceConnected) { + pCharacteristic->setValue((uint8_t*)&value, 4); + pCharacteristic->notify(); + value++; + } + // disconnecting + if (!deviceConnected && oldDeviceConnected) { + NimBLEAdvertising *pAdvertising = NimBLEDevice::getAdvertising(); + if (NimBLEDevice::getWhiteListCount() > 0) { + // Allow anyone to scan but only whitelisted can connect. + pAdvertising->setScanFilter(false,true); + } + // advertise with whitelist for 30 seconds + pAdvertising->start(30, onAdvComplete); + Serial.println("start advertising"); + oldDeviceConnected = deviceConnected; + } + // connecting + if (deviceConnected && !oldDeviceConnected) { + // do stuff here on connecting + oldDeviceConnected = deviceConnected; + } + + delay(2000); +} diff --git a/lib/libesp32_div/NimBLE-Arduino/library.json b/lib/libesp32_div/NimBLE-Arduino/library.json index a56985a06..29cff4dff 100644 --- a/lib/libesp32_div/NimBLE-Arduino/library.json +++ b/lib/libesp32_div/NimBLE-Arduino/library.json @@ -2,7 +2,7 @@ "name": "NimBLE-Arduino", "keywords": "esp32, bluetooth", "description": "Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE", - "version": "1.2.0", + "version": "1.3.1", "frameworks": "arduino", "platforms": "espressif32" } diff --git a/lib/libesp32_div/NimBLE-Arduino/library.properties b/lib/libesp32_div/NimBLE-Arduino/library.properties index 4435958d1..b08519454 100644 --- a/lib/libesp32_div/NimBLE-Arduino/library.properties +++ b/lib/libesp32_div/NimBLE-Arduino/library.properties @@ -1,5 +1,5 @@ name=NimBLE-Arduino -version=1.2.0 +version=1.3.1 author=h2zero maintainer=h2zero sentence=Bluetooth low energy (BLE) library for arduino-esp32 based on NimBLE. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.cpp b/lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.cpp deleted file mode 100644 index 1c398cbf3..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.cpp +++ /dev/null @@ -1,316 +0,0 @@ -/* - * FreeRTOS.cpp - * - * Created on: Feb 24, 2017 - * Author: kolban - */ -#include "sdkconfig.h" -#include "FreeRTOS.h" -#include "NimBLELog.h" - -#include // Include the base FreeRTOS definitions -#include // Include the task definitions -#include // Include the semaphore definitions -#include - -static const char* LOG_TAG = "FreeRTOS"; - - -/** - * Sleep for the specified number of milliseconds. - * @param[in] ms The period in milliseconds for which to sleep. - */ -void FreeRTOS::sleep(uint32_t ms) { - ::vTaskDelay(ms / portTICK_PERIOD_MS); -} // sleep - - -/** - * Start a new task. - * @param[in] task The function pointer to the function to be run in the task. - * @param[in] taskName A string identifier for the task. - * @param[in] param An optional parameter to be passed to the started task. - * @param[in] stackSize An optional paremeter supplying the size of the stack in which to run the task. - */ -void FreeRTOS::startTask(void task(void*), std::string taskName, void* param, uint32_t stackSize) { - ::xTaskCreate(task, taskName.data(), stackSize, param, 5, NULL); -} // startTask - - -/** - * Delete the task. - * @param[in] pTask An optional handle to the task to be deleted. If not supplied the calling task will be deleted. - */ -void FreeRTOS::deleteTask(TaskHandle_t pTask) { - ::vTaskDelete(pTask); -} // deleteTask - - -/** - * Get the time in milliseconds since the %FreeRTOS scheduler started. - * @return The time in milliseconds since the %FreeRTOS scheduler started. - */ -uint32_t FreeRTOS::getTimeSinceStart() { - return (uint32_t) (xTaskGetTickCount() * portTICK_PERIOD_MS); -} // getTimeSinceStart - - -/** - * @brief Wait for a semaphore to be released by trying to take it and - * then releasing it again. - * @param [in] owner A debug tag. - * @return The value associated with the semaphore. - */ -uint32_t FreeRTOS::Semaphore::wait(std::string owner) { - NIMBLE_LOGD(LOG_TAG, ">> wait: Semaphore waiting: %s for %s", toString().c_str(), owner.c_str()); - - if (m_usePthreads) { - pthread_mutex_lock(&m_pthread_mutex); - } else { - xSemaphoreTake(m_semaphore, portMAX_DELAY); - } - - if (m_usePthreads) { - pthread_mutex_unlock(&m_pthread_mutex); - } else { - xSemaphoreGive(m_semaphore); - } - - NIMBLE_LOGD(LOG_TAG, "<< wait: Semaphore released: %s", toString().c_str()); - return m_value; -} // wait - - -/** - * @brief Wait for a semaphore to be released in a given period of time by trying to take it and - * then releasing it again. The value associated with the semaphore can be taken by value() call after return - * @param [in] owner A debug tag. - * @param [in] timeoutMs timeout to wait in ms. - * @return True if we took the semaphore within timeframe. - */ -bool FreeRTOS::Semaphore::timedWait(std::string owner, uint32_t timeoutMs) { - NIMBLE_LOGD(LOG_TAG, ">> wait: Semaphore waiting: %s for %s", toString().c_str(), owner.c_str()); - - if (m_usePthreads && timeoutMs != portMAX_DELAY) { - assert(false); // We apparently don't have a timed wait for pthreads. - } - - auto ret = pdTRUE; - - if (m_usePthreads) { - pthread_mutex_lock(&m_pthread_mutex); - } else { - ret = xSemaphoreTake(m_semaphore, timeoutMs); - } - - if (m_usePthreads) { - pthread_mutex_unlock(&m_pthread_mutex); - } else { - xSemaphoreGive(m_semaphore); - } - - NIMBLE_LOGD(LOG_TAG, "<< wait: Semaphore %s released: %d", toString().c_str(), ret); - return ret; -} // wait - - -/** - * @brief Construct a semaphore, the semaphore is given when created. - * @param [in] name A name string to provide debugging support. - */ -FreeRTOS::Semaphore::Semaphore(std::string name) { - m_usePthreads = false; // Are we using pThreads or FreeRTOS? - if (m_usePthreads) { - pthread_mutex_init(&m_pthread_mutex, nullptr); - } else { - //m_semaphore = xSemaphoreCreateMutex(); - m_semaphore = xSemaphoreCreateBinary(); - xSemaphoreGive(m_semaphore); - } - - m_name = name; - m_owner = std::string(""); - m_value = 0; -} - - -FreeRTOS::Semaphore::~Semaphore() { - if (m_usePthreads) { - pthread_mutex_destroy(&m_pthread_mutex); - } else { - vSemaphoreDelete(m_semaphore); - } -} - - -/** - * @brief Give the semaphore. - */ -void FreeRTOS::Semaphore::give() { - NIMBLE_LOGD(LOG_TAG, "Semaphore giving: %s", toString().c_str()); - m_owner = std::string(""); - - if (m_usePthreads) { - pthread_mutex_unlock(&m_pthread_mutex); - } else { - xSemaphoreGive(m_semaphore); - } -// #ifdef ARDUINO_ARCH_ESP32 -// FreeRTOS::sleep(10); -// #endif - -} // Semaphore::give - - -/** - * @brief Give a semaphore. - * The Semaphore is given with an associated value. - * @param [in] value The value to associate with the semaphore. - */ -void FreeRTOS::Semaphore::give(uint32_t value) { - m_value = value; - give(); -} // give - - -/** - * @brief Give a semaphore from an ISR. - */ -void FreeRTOS::Semaphore::giveFromISR() { - BaseType_t higherPriorityTaskWoken; - if (m_usePthreads) { - assert(false); - } else { - xSemaphoreGiveFromISR(m_semaphore, &higherPriorityTaskWoken); - } -} // giveFromISR - - -/** - * @brief Take a semaphore. - * Take a semaphore and wait indefinitely. - * @param [in] owner The new owner (for debugging) - * @return True if we took the semaphore. - */ -bool FreeRTOS::Semaphore::take(std::string owner) { - NIMBLE_LOGD(LOG_TAG, "Semaphore taking: %s for %s", toString().c_str(), owner.c_str()); - bool rc = false; - if (m_usePthreads) { - pthread_mutex_lock(&m_pthread_mutex); - } else { - rc = ::xSemaphoreTake(m_semaphore, portMAX_DELAY) == pdTRUE; - } - m_owner = owner; - if (rc) { - NIMBLE_LOGD(LOG_TAG, "Semaphore taken: %s", toString().c_str()); - } else { - NIMBLE_LOGE(LOG_TAG, "Semaphore NOT taken: %s", toString().c_str()); - } - return rc; -} // Semaphore::take - - -/** - * @brief Take a semaphore. - * Take a semaphore but return if we haven't obtained it in the given period of milliseconds. - * @param [in] timeoutMs Timeout in milliseconds. - * @param [in] owner The new owner (for debugging) - * @return True if we took the semaphore. - */ -bool FreeRTOS::Semaphore::take(uint32_t timeoutMs, std::string owner) { - NIMBLE_LOGD(LOG_TAG, "Semaphore taking: %s for %s", toString().c_str(), owner.c_str()); - bool rc = false; - if (m_usePthreads) { - assert(false); // We apparently don't have a timed wait for pthreads. - } else { - rc = ::xSemaphoreTake(m_semaphore, timeoutMs / portTICK_PERIOD_MS) == pdTRUE; - } - m_owner = owner; - if (rc) { - NIMBLE_LOGD(LOG_TAG, "Semaphore taken: %s", toString().c_str()); - } else { - NIMBLE_LOGE(LOG_TAG, "Semaphore NOT taken: %s", toString().c_str()); - } - return rc; -} // Semaphore::take - - - -/** - * @brief Create a string representation of the semaphore. - * @return A string representation of the semaphore. - */ -std::string FreeRTOS::Semaphore::toString() { - char hex[9]; - std::string res = "name: " + m_name + " (0x"; - snprintf(hex, sizeof(hex), "%08x", (uint32_t)m_semaphore); - res += hex; - res += "), owner: " + m_owner; - return res; -} // toString - - -/** - * @brief Set the name of the semaphore. - * @param [in] name The name of the semaphore. - */ -void FreeRTOS::Semaphore::setName(std::string name) { - m_name = name; -} // setName - - -/** - * @brief Create a ring buffer. - * @param [in] length The amount of storage to allocate for the ring buffer. - * @param [in] type The type of buffer. One of RINGBUF_TYPE_NOSPLIT, RINGBUF_TYPE_ALLOWSPLIT, RINGBUF_TYPE_BYTEBUF. - */ -#ifdef ESP_IDF_VERSION //Quick hack to detect if using IDF version that replaced ringbuf_type_t -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 0, 0) - Ringbuffer::Ringbuffer(size_t length, RingbufferType_t type) { -#else - Ringbuffer::Ringbuffer(size_t length, ringbuf_type_t type) { -#endif -#else - Ringbuffer::Ringbuffer(size_t length, ringbuf_type_t type) { -#endif - m_handle = ::xRingbufferCreate(length, type); -} // Ringbuffer - - -Ringbuffer::~Ringbuffer() { - ::vRingbufferDelete(m_handle); -} // ~Ringbuffer - - -/** - * @brief Receive data from the buffer. - * @param [out] size On return, the size of data returned. - * @param [in] wait How long to wait. - * @return A pointer to the storage retrieved. - */ -void* Ringbuffer::receive(size_t* size, TickType_t wait) { - return ::xRingbufferReceive(m_handle, size, wait); -} // receive - - -/** - * @brief Return an item. - * @param [in] item The item to be returned/released. - */ -void Ringbuffer::returnItem(void* item) { - ::vRingbufferReturnItem(m_handle, item); -} // returnItem - - -/** - * @brief Send data to the buffer. - * @param [in] data The data to place into the buffer. - * @param [in] length The length of data to place into the buffer. - * @param [in] wait How long to wait before giving up. The default is to wait indefinitely. - * @return - */ -bool Ringbuffer::send(void* data, size_t length, TickType_t wait) { - return ::xRingbufferSend(m_handle, data, length, wait) == pdTRUE; -} // send - - diff --git a/lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.h b/lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.h deleted file mode 100644 index fa33921fe..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/FreeRTOS.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * FreeRTOS.h - * - * Created on: Feb 24, 2017 - * Author: kolban - */ - -#ifndef MAIN_FREERTOS_H_ -#define MAIN_FREERTOS_H_ - -#include // Include the base FreeRTOS definitions. -#include // Include the task definitions. -#include // Include the semaphore definitions. -#include // Include the ringbuffer definitions. - -#include -#include -#include - - -/** - * @brief Interface to %FreeRTOS functions. - */ -class FreeRTOS { -public: - static void sleep(uint32_t ms); - static void startTask(void task(void*), std::string taskName, void* param = nullptr, uint32_t stackSize = 2048); - static void deleteTask(TaskHandle_t pTask = nullptr); - - static uint32_t getTimeSinceStart(); - -/** - * @brief A binary semaphore class that operates like a mutex, it is already given when constructed. - */ - class Semaphore { - public: - Semaphore(std::string owner = ""); - ~Semaphore(); - void give(); - void give(uint32_t value); - void giveFromISR(); - void setName(std::string name); - bool take(std::string owner = ""); - bool take(uint32_t timeoutMs, std::string owner = ""); - std::string toString(); - bool timedWait(std::string owner = "", uint32_t timeoutMs = portMAX_DELAY); - uint32_t wait(std::string owner = ""); - /** - * @brief Get the value of the semaphore. - * @return The value stored if the semaphore was given with give(value); - */ - uint32_t value(){ return m_value; }; - - private: - SemaphoreHandle_t m_semaphore; - pthread_mutex_t m_pthread_mutex; - std::string m_name; - std::string m_owner; - uint32_t m_value; - bool m_usePthreads; - - }; -}; - - -/** - * @brief A wrapper class for a freeRTOS ringbuffer. - */ -class Ringbuffer { -public: -#ifdef ESP_IDF_VERSION //Quick hack to detect if using IDF version that replaced ringbuf_type_t -#if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 0, 0) - Ringbuffer(size_t length, RingbufferType_t type = RINGBUF_TYPE_NOSPLIT); -#else - Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); -#endif -#else - Ringbuffer(size_t length, ringbuf_type_t type = RINGBUF_TYPE_NOSPLIT); -#endif - ~Ringbuffer(); - - void* receive(size_t* size, TickType_t wait = portMAX_DELAY); - void returnItem(void* item); - bool send(void* data, size_t length, TickType_t wait = portMAX_DELAY); -private: - RingbufHandle_t m_handle; -}; - -#endif /* MAIN_FREERTOS_H_ */ diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLE2904.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLE2904.h index 0a6d036a4..d8800dd2f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLE2904.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLE2904.h @@ -42,6 +42,7 @@ struct BLE2904_Data { */ class NimBLE2904: public NimBLEDescriptor { public: + NimBLE2904(NimBLECharacteristic* pCharacterisitic = nullptr); static const uint8_t FORMAT_BOOLEAN = 1; static const uint8_t FORMAT_UINT2 = 2; static const uint8_t FORMAT_UINT4 = 3; @@ -77,7 +78,6 @@ public: void setUnit(uint16_t unit); private: - NimBLE2904(NimBLECharacteristic* pCharacterisitic); friend class NimBLECharacteristic; BLE2904_Data m_data; }; // BLE2904 diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp index c697fe752..ecfd49814 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.cpp @@ -734,7 +734,7 @@ uint8_t* NimBLEAdvertisedDevice::getPayload() { * @param [in] length The length of the payload in bytes. * @param [in] append Indicates if the the data should be appended (scan response). */ -void NimBLEAdvertisedDevice::setPayload(uint8_t *payload, uint8_t length, bool append) { +void NimBLEAdvertisedDevice::setPayload(const uint8_t *payload, uint8_t length, bool append) { if(!append) { m_advLength = length; m_payload.assign(payload, payload + length); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h index ef354bc41..7d378ed0f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertisedDevice.h @@ -137,7 +137,7 @@ private: void setAddress(NimBLEAddress address); void setAdvType(uint8_t advType); - void setPayload(uint8_t *payload, uint8_t length, bool append); + void setPayload(const uint8_t *payload, uint8_t length, bool append); void setRSSI(int rssi); uint8_t findAdvField(uint8_t type, uint8_t index = 0, uint8_t *data_loc = nullptr); uint8_t findServiceData(uint8_t index, uint8_t* bytes); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertising.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertising.cpp index 3e9ae4a64..3112efff0 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertising.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEAdvertising.cpp @@ -383,6 +383,7 @@ void NimBLEAdvertising::setScanResponseData(NimBLEAdvertisementData& advertiseme * @brief Start advertising. * @param [in] duration The duration, in seconds, to advertise, 0 == advertise forever. * @param [in] advCompleteCB A pointer to a callback to be invoked when advertising ends. + * @return True if advertising started successfully. */ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdvertising *pAdv)) { NIMBLE_LOGD(LOG_TAG, ">> Advertising start: customAdvData: %d, customScanResponseData: %d", @@ -471,16 +472,14 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } payloadLen += add; - if(nullptr == (m_advData.uuids16 = (ble_uuid16_t*)realloc(m_advData.uuids16, + if(nullptr == (m_advData.uuids16 = (ble_uuid16_t*)realloc((void*)m_advData.uuids16, (m_advData.num_uuids16 + 1) * sizeof(ble_uuid16_t)))) { NIMBLE_LOGC(LOG_TAG, "Error, no mem"); abort(); } - memcpy(&m_advData.uuids16[m_advData.num_uuids16].value, - &it.getNative()->u16.value, 2); - - m_advData.uuids16[m_advData.num_uuids16].u.type = BLE_UUID_TYPE_16; + memcpy((void*)&m_advData.uuids16[m_advData.num_uuids16], + &it.getNative()->u16, sizeof(ble_uuid16_t)); m_advData.uuids16_is_complete = 1; m_advData.num_uuids16++; } @@ -492,16 +491,14 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } payloadLen += add; - if(nullptr == (m_advData.uuids32 = (ble_uuid32_t*)realloc(m_advData.uuids32, + if(nullptr == (m_advData.uuids32 = (ble_uuid32_t*)realloc((void*)m_advData.uuids32, (m_advData.num_uuids32 + 1) * sizeof(ble_uuid32_t)))) { NIMBLE_LOGC(LOG_TAG, "Error, no mem"); abort(); } - memcpy(&m_advData.uuids32[m_advData.num_uuids32].value, - &it.getNative()->u32.value, 4); - - m_advData.uuids32[m_advData.num_uuids32].u.type = BLE_UUID_TYPE_32; + memcpy((void*)&m_advData.uuids32[m_advData.num_uuids32], + &it.getNative()->u32, sizeof(ble_uuid32_t)); m_advData.uuids32_is_complete = 1; m_advData.num_uuids32++; } @@ -513,16 +510,14 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } payloadLen += add; - if(nullptr == (m_advData.uuids128 = (ble_uuid128_t*)realloc(m_advData.uuids128, + if(nullptr == (m_advData.uuids128 = (ble_uuid128_t*)realloc((void*)m_advData.uuids128, (m_advData.num_uuids128 + 1) * sizeof(ble_uuid128_t)))) { NIMBLE_LOGC(LOG_TAG, "Error, no mem"); abort(); } - memcpy(&m_advData.uuids128[m_advData.num_uuids128].value, - &it.getNative()->u128.value, 16); - - m_advData.uuids128[m_advData.num_uuids128].u.type = BLE_UUID_TYPE_128; + memcpy((void*)&m_advData.uuids128[m_advData.num_uuids128], + &it.getNative()->u128, sizeof(ble_uuid128_t)); m_advData.uuids128_is_complete = 1; m_advData.num_uuids128++; } @@ -599,19 +594,19 @@ bool NimBLEAdvertising::start(uint32_t duration, void (*advCompleteCB)(NimBLEAdv } if(m_advData.num_uuids128 > 0) { - free(m_advData.uuids128); + free((void*)m_advData.uuids128); m_advData.uuids128 = nullptr; m_advData.num_uuids128 = 0; } if(m_advData.num_uuids32 > 0) { - free(m_advData.uuids32); + free((void*)m_advData.uuids32); m_advData.uuids32 = nullptr; m_advData.num_uuids32 = 0; } if(m_advData.num_uuids16 > 0) { - free(m_advData.uuids16); + free((void*)m_advData.uuids16); m_advData.uuids16 = nullptr; m_advData.num_uuids16 = 0; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.cpp index 0ffa9fb03..f3965a4dc 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.cpp @@ -45,15 +45,15 @@ NimBLECharacteristic::NimBLECharacteristic(const char* uuid, uint16_t properties * @param [in] pService - pointer to the service instance this characteristic belongs to. */ NimBLECharacteristic::NimBLECharacteristic(const NimBLEUUID &uuid, uint16_t properties, NimBLEService* pService) { - m_uuid = uuid; - m_handle = NULL_HANDLE; - m_properties = properties; - m_pCallbacks = &defaultCallback; - m_pService = pService; - m_value = ""; - m_valMux = portMUX_INITIALIZER_UNLOCKED; - m_pTaskData = nullptr; - m_timestamp = 0; + m_uuid = uuid; + m_handle = NULL_HANDLE; + m_properties = properties; + m_pCallbacks = &defaultCallback; + m_pService = pService; + m_value = ""; + m_valMux = portMUX_INITIALIZER_UNLOCKED; + m_timestamp = 0; + m_removed = 0; } // NimBLECharacteristic /** @@ -95,9 +95,62 @@ NimBLEDescriptor* NimBLECharacteristic::createDescriptor(const NimBLEUUID &uuid, pDescriptor = new NimBLEDescriptor(uuid, properties, max_len, this); } - m_dscVec.push_back(pDescriptor); + addDescriptor(pDescriptor); return pDescriptor; -} // createCharacteristic +} // createDescriptor + + +/** + * @brief Add a descriptor to the characteristic. + * @param [in] pDescriptor A pointer to the descriptor to add. + */ +void NimBLECharacteristic::addDescriptor(NimBLEDescriptor *pDescriptor) { + bool foundRemoved = false; + + if(pDescriptor->m_removed > 0) { + for(auto& it : m_dscVec) { + if(it == pDescriptor) { + foundRemoved = true; + pDescriptor->m_removed = 0; + } + } + } + + if(!foundRemoved) { + m_dscVec.push_back(pDescriptor); + } + + pDescriptor->setCharacteristic(this); + NimBLEDevice::getServer()->serviceChanged(); +} + + +/** + * @brief Remove a descriptor from the characterisitc. + * @param[in] pDescriptor A pointer to the descriptor instance to remove from the characterisitc. + * @param[in] deleteDsc If true it will delete the descriptor instance and free it's resources. + */ +void NimBLECharacteristic::removeDescriptor(NimBLEDescriptor *pDescriptor, bool deleteDsc) { + // Check if the descriptor was already removed and if so, check if this + // is being called to delete the object and do so if requested. + // Otherwise, ignore the call and return. + if(pDescriptor->m_removed > 0) { + if(deleteDsc) { + for(auto it = m_dscVec.begin(); it != m_dscVec.end(); ++it) { + if ((*it) == pDescriptor) { + delete *it; + m_dscVec.erase(it); + break; + } + } + } + + return; + } + + pDescriptor->m_removed = deleteDsc ? NIMBLE_ATT_REMOVE_DELETE : NIMBLE_ATT_REMOVE_HIDE; + NimBLEDevice::getServer()->serviceChanged(); +} // removeDescriptor /** @@ -165,6 +218,11 @@ NimBLEService* NimBLECharacteristic::getService() { } // getService +void NimBLECharacteristic::setService(NimBLEService *pService) { + m_pService = pService; +} + + /** * @brief Get the UUID of the characteristic. * @return The UUID of the characteristic. @@ -301,16 +359,13 @@ void NimBLECharacteristic::setSubscribe(struct ble_gap_event *event) { subVal |= NIMBLE_SUB_INDICATE; } - if(m_pTaskData != nullptr) { - m_pTaskData->rc = (subVal & NIMBLE_SUB_INDICATE) ? 0 : - NimBLECharacteristicCallbacks::Status::ERROR_INDICATE_DISABLED; - xTaskNotifyGive(m_pTaskData->task); - } - NIMBLE_LOGI(LOG_TAG, "New subscribe value for conn: %d val: %d", - event->subscribe.conn_handle, subVal); + event->subscribe.conn_handle, subVal); + + if(!event->subscribe.cur_indicate && event->subscribe.prev_indicate) { + NimBLEDevice::getServer()->clearIndicateWait(event->subscribe.conn_handle); + } - m_pCallbacks->onSubscribe(this, &desc, subVal); auto it = m_subscribedVec.begin(); for(;it != m_subscribedVec.end(); ++it) { @@ -322,16 +377,14 @@ void NimBLECharacteristic::setSubscribe(struct ble_gap_event *event) { if(subVal > 0) { if(it == m_subscribedVec.end()) { m_subscribedVec.push_back({event->subscribe.conn_handle, subVal}); - return; + } else { + (*it).second = subVal; } - - (*it).second = subVal; - } else if(it != m_subscribedVec.end()) { m_subscribedVec.erase(it); - m_subscribedVec.shrink_to_fit(); } - + + m_pCallbacks->onSubscribe(this, &desc, subVal); } @@ -416,40 +469,20 @@ void NimBLECharacteristic::notify(bool is_notification) { // We also must create it in each loop iteration because it is consumed with each host call. os_mbuf *om = ble_hs_mbuf_from_flat((uint8_t*)value.data(), length); - NimBLECharacteristicCallbacks::Status statusRC; - if(!is_notification && (m_properties & NIMBLE_PROPERTY::INDICATE)) { - ble_task_data_t taskData = {nullptr, xTaskGetCurrentTaskHandle(),0, nullptr}; - m_pTaskData = &taskData; + if(!NimBLEDevice::getServer()->setIndicateWait(it.first)) { + NIMBLE_LOGE(LOG_TAG, "prior Indication in progress"); + os_mbuf_free_chain(om); + return; + } rc = ble_gattc_indicate_custom(it.first, m_handle, om); if(rc != 0){ - statusRC = NimBLECharacteristicCallbacks::Status::ERROR_GATT; - } else { - ulTaskNotifyTake(pdTRUE, portMAX_DELAY); - rc = m_pTaskData->rc; - } - - m_pTaskData = nullptr; - - if(rc == BLE_HS_EDONE) { - rc = 0; - statusRC = NimBLECharacteristicCallbacks::Status::SUCCESS_INDICATE; - } else if(rc == BLE_HS_ETIMEOUT) { - statusRC = NimBLECharacteristicCallbacks::Status::ERROR_INDICATE_TIMEOUT; - } else { - statusRC = NimBLECharacteristicCallbacks::Status::ERROR_INDICATE_FAILURE; + NimBLEDevice::getServer()->clearIndicateWait(it.first); } } else { - rc = ble_gattc_notify_custom(it.first, m_handle, om); - if(rc == 0) { - statusRC = NimBLECharacteristicCallbacks::Status::SUCCESS_NOTIFY; - } else { - statusRC = NimBLECharacteristicCallbacks::Status::ERROR_GATT; - } + ble_gattc_notify_custom(it.first, m_handle, om); } - - m_pCallbacks->onStatus(this, statusRC, rc); } NIMBLE_LOGD(LOG_TAG, "<< notify"); @@ -469,6 +502,13 @@ void NimBLECharacteristic::setCallbacks(NimBLECharacteristicCallbacks* pCallback } } // setCallbacks +/** + * @brief Get the callback handlers for this characteristic. + */ +NimBLECharacteristicCallbacks* NimBLECharacteristic::getCallbacks() { + return m_pCallbacks; +} //getCallbacks + /** * @brief Set the value of the characteristic. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.h index 9bb9d079b..6008d127f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLECharacteristic.h @@ -59,12 +59,26 @@ class NimBLECharacteristicCallbacks; */ class NimBLECharacteristic { public: + NimBLECharacteristic(const char* uuid, + uint16_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + NimBLEService* pService = nullptr); + NimBLECharacteristic(const NimBLEUUID &uuid, + uint16_t properties = + NIMBLE_PROPERTY::READ | + NIMBLE_PROPERTY::WRITE, + NimBLEService* pService = nullptr); + + ~NimBLECharacteristic(); uint16_t getHandle(); NimBLEUUID getUUID(); std::string toString(); void setCallbacks(NimBLECharacteristicCallbacks* pCallbacks); + NimBLECharacteristicCallbacks* + getCallbacks(); void indicate(); void notify(bool is_notification = true); @@ -81,9 +95,11 @@ public: NIMBLE_PROPERTY::WRITE, uint16_t max_len = 100); + void addDescriptor(NimBLEDescriptor *pDescriptor); NimBLEDescriptor* getDescriptorByUUID(const char* uuid); NimBLEDescriptor* getDescriptorByUUID(const NimBLEUUID &uuid); NimBLEDescriptor* getDescriptorByHandle(uint16_t handle); + void removeDescriptor(NimBLEDescriptor *pDescriptor, bool deleteDsc = false); std::string getValue(time_t *timestamp = nullptr); size_t getDataLength(); @@ -115,30 +131,15 @@ public: setValue((uint8_t*)&s, sizeof(T)); } - - - + NimBLEService* getService(); + uint16_t getProperties(); private: - friend class NimBLEServer; - friend class NimBLEService; + friend class NimBLEServer; + friend class NimBLEService; - NimBLECharacteristic(const char* uuid, - uint16_t properties = - NIMBLE_PROPERTY::READ | - NIMBLE_PROPERTY::WRITE, - NimBLEService* pService = nullptr); - NimBLECharacteristic(const NimBLEUUID &uuid, - uint16_t properties = - NIMBLE_PROPERTY::READ | - NIMBLE_PROPERTY::WRITE, - NimBLEService* pService = nullptr); - - ~NimBLECharacteristic(); - - NimBLEService* getService(); - uint16_t getProperties(); + void setService(NimBLEService *pService); void setSubscribe(struct ble_gap_event *event); static int handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg); @@ -150,9 +151,9 @@ private: NimBLEService* m_pService; std::string m_value; std::vector m_dscVec; - ble_task_data_t *m_pTaskData; portMUX_TYPE m_valMux; time_t m_timestamp; + uint8_t m_removed; std::vector> m_subscribedVec; }; // NimBLECharacteristic diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.cpp index ddeb1de70..a171b8cc0 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.cpp @@ -436,6 +436,24 @@ void NimBLEClient::updateConnParams(uint16_t minInterval, uint16_t maxInterval, } // updateConnParams +/** + * @brief Get detailed information about the current peer connection. + */ +NimBLEConnInfo NimBLEClient::getConnInfo() { + NimBLEConnInfo connInfo; + if (!isConnected()) { + NIMBLE_LOGE(LOG_TAG, "Not connected"); + } else { + int rc = ble_gap_conn_find(m_conn_id, &connInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Connection info not found"); + } + } + + return connInfo; +} // getConnInfo + + /** * @brief Set the timeout to wait for connection attempt to complete. * @param [in] time The number of seconds before timeout. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.h index a4b847000..d90086c4a 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEClient.h @@ -23,6 +23,7 @@ #include "NimBLEAddress.h" #include "NimBLEUUID.h" #include "NimBLEUtils.h" +#include "NimBLEConnInfo.h" #include "NimBLEAdvertisedDevice.h" #include "NimBLERemoteService.h" @@ -71,6 +72,7 @@ public: void updateConnParams(uint16_t minInterval, uint16_t maxInterval, uint16_t latency, uint16_t timeout); void discoverAttributes(); + NimBLEConnInfo getConnInfo(); private: NimBLEClient(const NimBLEAddress &peerAddress); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEConnInfo.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEConnInfo.h new file mode 100644 index 000000000..e357d8cbc --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEConnInfo.h @@ -0,0 +1,55 @@ +#ifndef NIMBLECONNINFO_H_ +#define NIMBLECONNINFO_H_ + +#include "NimBLEAddress.h" + +/** + * @brief Connection information. + */ +class NimBLEConnInfo { +friend class NimBLEServer; +friend class NimBLEClient; + ble_gap_conn_desc m_desc; + NimBLEConnInfo() { m_desc = {}; } + NimBLEConnInfo(ble_gap_conn_desc desc) { m_desc = desc; } +public: + /** @brief Gets the over-the-air address of the connected peer */ + NimBLEAddress getAddress() { return NimBLEAddress(m_desc.peer_ota_addr); } + + /** @brief Gets the ID address of the connected peer */ + NimBLEAddress getIdAddress() { return NimBLEAddress(m_desc.peer_id_addr); } + + /** @brief Gets the connection handle of the connected peer */ + uint16_t getConnHandle() { return m_desc.conn_handle; } + + /** @brief Gets the connection interval for this connection (in 1.25ms units) */ + uint16_t getConnInterval() { return m_desc.conn_itvl; } + + /** @brief Gets the supervision timeout for this connection (in 10ms units) */ + uint16_t getConnTimeout() { return m_desc.supervision_timeout; } + + /** @brief Gets the allowable latency for this connection (unit = number of intervals) */ + uint16_t getConnLatency() { return m_desc.conn_latency; } + + /** @brief Gets the maximum transmission unit size for this connection (in bytes) */ + uint16_t getMTU() { return ble_att_mtu(m_desc.conn_handle); } + + /** @brief Check if we are in the master role in this connection */ + bool isMaster() { return (m_desc.role == BLE_GAP_ROLE_MASTER); } + + /** @brief Check if we are in the slave role in this connection */ + bool isSlave() { return (m_desc.role == BLE_GAP_ROLE_SLAVE); } + + /** @brief Check if we are connected to a bonded peer */ + bool isBonded() { return (m_desc.sec_state.bonded == 1); } + + /** @brief Check if the connection in encrypted */ + bool isEncrypted() { return (m_desc.sec_state.encrypted == 1); } + + /** @brief Check if the the connection has been authenticated */ + bool isAuthenticated() { return (m_desc.sec_state.authenticated == 1); } + + /** @brief Gets the key size used to encrypt the connection */ + uint8_t getSecKeySize() { return m_desc.sec_state.key_size; } +}; +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.cpp index 95c3291f3..f94676607 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.cpp @@ -37,6 +37,7 @@ NimBLEDescriptor::NimBLEDescriptor(const char* uuid, uint16_t properties, uint16 : NimBLEDescriptor(NimBLEUUID(uuid), max_len, properties, pCharacteristic) { } + /** * @brief NimBLEDescriptor constructor. */ @@ -47,11 +48,12 @@ NimBLEDescriptor::NimBLEDescriptor(NimBLEUUID uuid, uint16_t properties, uint16_ m_value.attr_len = 0; // Initial length is 0. m_value.attr_max_len = max_len; // Maximum length of the data. m_handle = NULL_HANDLE; // Handle is initially unknown. - m_pCharacteristic = nullptr; // No initial characteristic. + m_pCharacteristic = pCharacteristic; m_pCallbacks = &defaultCallbacks; // No initial callback. m_value.attr_value = (uint8_t*) calloc(max_len,1); // Allocate storage for the value. m_valMux = portMUX_INITIALIZER_UNLOCKED; m_properties = 0; + m_removed = 0; if (properties & BLE_GATT_CHR_F_READ) { // convert uint16_t properties to uint8_t m_properties |= BLE_ATT_F_READ; @@ -122,6 +124,7 @@ uint8_t* NimBLEDescriptor::getValue() { return m_value.attr_value; } // getValue + /** * @brief Get the value of this descriptor as a string. * @return A std::string instance containing a copy of the descriptor's value. @@ -130,9 +133,18 @@ std::string NimBLEDescriptor::getStringValue() { return std::string((char *) m_value.attr_value, m_value.attr_len); } + +/** + * @brief Get the characteristic this descriptor belongs to. + * @return A pointer to the characteristic this descriptor belongs to. + */ +NimBLECharacteristic* NimBLEDescriptor::getCharacteristic() { + return m_pCharacteristic; +} // getCharacteristic + + int NimBLEDescriptor::handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, - struct ble_gatt_access_ctxt *ctxt, - void *arg) { + struct ble_gatt_access_ctxt *ctxt, void *arg) { const ble_uuid_t *uuid; int rc; NimBLEDescriptor* pDescriptor = (NimBLEDescriptor*)arg; @@ -169,7 +181,7 @@ int NimBLEDescriptor::handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, if((len + next->om_len) > pDescriptor->m_value.attr_max_len) { return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; } - memcpy(&buf[len-1], next->om_data, next->om_len); + memcpy(&buf[len], next->om_data, next->om_len); len += next->om_len; next = SLIST_NEXT(next, om_next); } @@ -237,6 +249,14 @@ void NimBLEDescriptor::setValue(const std::string &value) { setValue((uint8_t*) value.data(), value.length()); } // setValue +/** + * @brief Set the characteristic this descriptor belongs to. + * @param [in] pChar A pointer to the characteristic this descriptior belongs to. + */ +void NimBLEDescriptor::setCharacteristic(NimBLECharacteristic* pChar) { + m_pCharacteristic = pChar; +} // setCharacteristic + /** * @brief Return a string representation of the descriptor. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.h index 76318b729..5dc0ce89b 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDescriptor.h @@ -43,46 +43,48 @@ class NimBLEDescriptorCallbacks; */ class NimBLEDescriptor { public: - uint16_t getHandle(); - NimBLEUUID getUUID(); - std::string toString(); + NimBLEDescriptor(const char* uuid, uint16_t properties, + uint16_t max_len, + NimBLECharacteristic* pCharacteristic = nullptr); - void setCallbacks(NimBLEDescriptorCallbacks* pCallbacks); + NimBLEDescriptor(NimBLEUUID uuid, uint16_t properties, + uint16_t max_len, + NimBLECharacteristic* pCharacteristic = nullptr); - size_t getLength(); - uint8_t* getValue(); - std::string getStringValue(); + ~NimBLEDescriptor(); + + uint16_t getHandle(); + NimBLEUUID getUUID(); + std::string toString(); + + void setCallbacks(NimBLEDescriptorCallbacks* pCallbacks); + + size_t getLength(); + uint8_t* getValue(); + std::string getStringValue(); + + void setValue(const uint8_t* data, size_t size); + void setValue(const std::string &value); + NimBLECharacteristic* getCharacteristic(); - void setValue(const uint8_t* data, size_t size); - void setValue(const std::string &value); /** * @brief Convenience template to set the descriptor value to val. * @param [in] s The value to set. */ template - void setValue(const T &s) { + void setValue(const T &s) { setValue((uint8_t*)&s, sizeof(T)); } private: friend class NimBLECharacteristic; friend class NimBLEService; - friend class NimBLE2902; friend class NimBLE2904; - NimBLEDescriptor(const char* uuid, uint16_t properties, - uint16_t max_len, - NimBLECharacteristic* pCharacteristic); - - NimBLEDescriptor(NimBLEUUID uuid, uint16_t properties, - uint16_t max_len, - NimBLECharacteristic* pCharacteristic); - - ~NimBLEDescriptor(); - static int handleGapEvent(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg); void setHandle(uint16_t handle); + void setCharacteristic(NimBLECharacteristic* pChar); NimBLEUUID m_uuid; uint16_t m_handle; @@ -91,6 +93,7 @@ private: uint8_t m_properties; attr_value_t m_value; portMUX_TYPE m_valMux; + uint8_t m_removed; }; // NimBLEDescriptor diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.cpp index dc9caf3d5..bc253659a 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.cpp @@ -30,7 +30,7 @@ #include "services/gap/ble_svc_gap.h" #include "services/gatt/ble_svc_gatt.h" -#ifdef ARDUINO_ARCH_ESP32 +#ifdef CONFIG_ENABLE_ARDUINO_DEPENDS #include "esp32-hal-bt.h" #endif @@ -60,6 +60,7 @@ ble_gap_event_listener NimBLEDevice::m_listener; std::list NimBLEDevice::m_cList; #endif std::list NimBLEDevice::m_ignoreList; +std::vector NimBLEDevice::m_whiteList; NimBLESecurityCallbacks* NimBLEDevice::m_securityCallbacks = nullptr; uint8_t NimBLEDevice::m_own_addr_type = BLE_OWN_ADDR_PUBLIC; uint16_t NimBLEDevice::m_scanDuplicateSize = CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE; @@ -448,6 +449,211 @@ void NimBLEDevice::setScanFilterMode(uint8_t mode) { m_scanFilterMode = mode; } +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) || defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +/** + * @brief Gets the number of bonded peers stored + */ +/*STATIC*/ +int NimBLEDevice::getNumBonds() { + ble_addr_t peer_id_addrs[MYNEWT_VAL(BLE_STORE_MAX_BONDS)]; + int num_peers, rc; + + rc = ble_store_util_bonded_peers(&peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); + if (rc !=0) { + return 0; + } + + return num_peers; +} + + +/** + * @brief Deletes all bonding information. + */ + /*STATIC*/ +void NimBLEDevice::deleteAllBonds() { + ble_store_clear(); +} + + +/** + * @brief Deletes a peer bond. + * @param [in] address The address of the peer with which to delete bond info. + * @returns true on success. + */ +/*STATIC*/ +bool NimBLEDevice::deleteBond(const NimBLEAddress &address) { + ble_addr_t delAddr; + memcpy(&delAddr.val, address.getNative(),6); + delAddr.type = address.getType(); + + int rc = ble_gap_unpair(&delAddr); + if (rc != 0) { + return false; + } + + return true; +} + + +/** + * @brief Checks if a peer device is bonded. + * @param [in] address The address to check for bonding. + * @returns true if bonded. + */ +/*STATIC*/ +bool NimBLEDevice::isBonded(const NimBLEAddress &address) { + ble_addr_t peer_id_addrs[MYNEWT_VAL(BLE_STORE_MAX_BONDS)]; + int num_peers, rc; + + rc = ble_store_util_bonded_peers(&peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); + if (rc != 0) { + return false; + } + + for (int i = 0; i < num_peers; i++) { + NimBLEAddress storedAddr(peer_id_addrs[i]); + if(storedAddr == address) { + return true; + } + } + + return false; +} + + +/** + * @brief Get the address of a bonded peer device by index. + * @param [in] index The index to retrieve the peer address of. + * @returns NimBLEAddress of the found bonded peer or nullptr if not found. + */ +/*STATIC*/ +NimBLEAddress NimBLEDevice::getBondedAddress(int index) { + ble_addr_t peer_id_addrs[MYNEWT_VAL(BLE_STORE_MAX_BONDS)]; + int num_peers, rc; + + rc = ble_store_util_bonded_peers(&peer_id_addrs[0], &num_peers, MYNEWT_VAL(BLE_STORE_MAX_BONDS)); + if (rc != 0) { + return nullptr; + } + + if (index > num_peers || index < 0) { + return nullptr; + } + + return NimBLEAddress(peer_id_addrs[index]); +} +#endif + +/** + * @brief Checks if a peer device is whitelisted. + * @param [in] address The address to check for in the whitelist. + * @returns true if the address is in the whitelist. + */ +bool NimBLEDevice::onWhiteList(const NimBLEAddress & address) { + for (auto &it : m_whiteList) { + if (it == address) { + return true; + } + } + + return false; +} + + +/** + * @brief Add a peer address to the whitelist. + * @param [in] address The address to add to the whitelist. + * @returns true if successful. + */ +bool NimBLEDevice::whiteListAdd(const NimBLEAddress & address) { + if (NimBLEDevice::onWhiteList(address)) { + return true; + } + + m_whiteList.push_back(address); + std::vector wlVec; + wlVec.reserve(m_whiteList.size()); + + for (auto &it : m_whiteList) { + ble_addr_t wlAddr; + memcpy(&wlAddr.val, it.getNative(), 6); + wlAddr.type = it.getType(); + wlVec.push_back(wlAddr); + } + + int rc = ble_gap_wl_set(&wlVec[0], wlVec.size()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed adding to whitelist rc=%d", rc); + return false; + } + + return true; +} + + +/** + * @brief Remove a peer address from the whitelist. + * @param [in] address The address to remove from the whitelist. + * @returns true if successful. + */ +bool NimBLEDevice::whiteListRemove(const NimBLEAddress & address) { + if (!NimBLEDevice::onWhiteList(address)) { + return true; + } + + std::vector wlVec; + wlVec.reserve(m_whiteList.size()); + + for (auto &it : m_whiteList) { + if (it != address) { + ble_addr_t wlAddr; + memcpy(&wlAddr.val, it.getNative(), 6); + wlAddr.type = it.getType(); + wlVec.push_back(wlAddr); + } + } + + int rc = ble_gap_wl_set(&wlVec[0], wlVec.size()); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed removing from whitelist rc=%d", rc); + return false; + } + + // Don't remove from the list unless NimBLE returned success + for (auto it = m_whiteList.begin(); it < m_whiteList.end(); ++it) { + if ((*it) == address) { + m_whiteList.erase(it); + break; + } + } + + return true; +} + + +/** + * @brief Gets the count of addresses in the whitelist. + * @returns The number of addresses in the whitelist. + */ +size_t NimBLEDevice::getWhiteListCount() { + return m_whiteList.size(); +} + + +/** + * @brief Gets the address at the vector index. + * @param [in] index The vector index to retrieve the address from. + * @returns the NimBLEAddress at the whitelist index or nullptr if not found. + */ +NimBLEAddress NimBLEDevice::getWhiteListAddress(size_t index) { + if (index > m_whiteList.size()) { + NIMBLE_LOGE(LOG_TAG, "Invalid index; %u", index); + return nullptr; + } + return m_whiteList[index]; +} + /** * @brief Host reset, we pass the message so we don't make calls until resynced. @@ -534,7 +740,7 @@ void NimBLEDevice::setScanFilterMode(uint8_t mode) { int rc=0; esp_err_t errRc = ESP_OK; -#ifdef ARDUINO_ARCH_ESP32 +#ifdef CONFIG_ENABLE_ARDUINO_DEPENDS // make sure the linker includes esp32-hal-bt.c so ardruino init doesn't release BLE memory. btStarted(); #endif @@ -551,8 +757,12 @@ void NimBLEDevice::setScanFilterMode(uint8_t mode) { esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT); esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); +#ifdef CONFIG_IDF_TARGET_ESP32C3 + bt_cfg.bluetooth_mode = ESP_BT_MODE_BLE; +#else bt_cfg.mode = ESP_BT_MODE_BLE; bt_cfg.ble_max_conn = CONFIG_BT_NIMBLE_MAX_CONNECTIONS; +#endif bt_cfg.normal_adv_size = m_scanDuplicateSize; bt_cfg.scan_duplicate_type = m_scanFilterMode; @@ -771,17 +981,23 @@ void NimBLEDevice::setSecurityCallbacks(NimBLESecurityCallbacks* callbacks) { void NimBLEDevice::setOwnAddrType(uint8_t own_addr_type, bool useNRPA) { m_own_addr_type = own_addr_type; switch (own_addr_type) { +#ifdef CONFIG_IDF_TARGET_ESP32 case BLE_OWN_ADDR_PUBLIC: ble_hs_pvcy_rpa_config(NIMBLE_HOST_DISABLE_PRIVACY); break; +#endif case BLE_OWN_ADDR_RANDOM: setSecurityInitKey(BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID); +#ifdef CONFIG_IDF_TARGET_ESP32 ble_hs_pvcy_rpa_config(useNRPA ? NIMBLE_HOST_ENABLE_NRPA : NIMBLE_HOST_ENABLE_RPA); +#endif break; case BLE_OWN_ADDR_RPA_PUBLIC_DEFAULT: case BLE_OWN_ADDR_RPA_RANDOM_DEFAULT: setSecurityInitKey(BLE_SM_PAIR_KEY_DIST_ENC | BLE_SM_PAIR_KEY_DIST_ID); +#ifdef CONFIG_IDF_TARGET_ESP32 ble_hs_pvcy_rpa_config(NIMBLE_HOST_ENABLE_RPA); +#endif break; } } // setOwnAddrType diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.h index 27549ed60..08a042fc2 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEDevice.h @@ -95,6 +95,11 @@ public: static bool getInitialized(); static NimBLEAddress getAddress(); static std::string toString(); + static bool whiteListAdd(const NimBLEAddress & address); + static bool whiteListRemove(const NimBLEAddress & address); + static bool onWhiteList(const NimBLEAddress & address); + static size_t getWhiteListCount(); + static NimBLEAddress getWhiteListAddress(size_t index); #if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) static NimBLEScan* getScan(); @@ -142,6 +147,14 @@ public: static std::list* getClientList(); #endif +#if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) || defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) + static bool deleteBond(const NimBLEAddress &address); + static int getNumBonds(); + static bool isBonded(const NimBLEAddress &address); + static void deleteAllBonds(); + static NimBLEAddress getBondedAddress(int index); +#endif + private: #if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL) friend class NimBLEClient; @@ -188,6 +201,7 @@ private: static uint8_t m_own_addr_type; static uint16_t m_scanDuplicateSize; static uint8_t m_scanFilterMode; + static std::vector m_whiteList; }; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLELog.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLELog.h index 6e9ed97f3..8c1314634 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLELog.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLELog.h @@ -7,17 +7,19 @@ */ #ifndef MAIN_NIMBLELOG_H_ #define MAIN_NIMBLELOG_H_ + #include "sdkconfig.h" + #if defined(CONFIG_BT_ENABLED) +#ifdef ARDUINO_ARCH_ESP32 #include "syscfg/syscfg.h" #include "modlog/modlog.h" - // If Arduino is being used, strip out the colors and ignore log printing below ui setting. // Note: because CONFIG_LOG_DEFAULT_LEVEL is set at ERROR in Arduino we must use MODLOG_DFLT(ERROR // otherwise no messages will be printed above that level. -#ifdef ARDUINO_ARCH_ESP32 + #ifndef CORE_DEBUG_LEVEL #define CORE_DEBUG_LEVEL CONFIG_ARDUHAL_LOG_DEFAULT_LEVEL #endif @@ -49,11 +51,15 @@ #define NIMBLE_LOGC( tag, format, ... ) MODLOG_DFLT(CRITICAL, "CRIT %s: "#format"\n",tag,##__VA_ARGS__) #else -#define NIMBLE_LOGE( tag, format, ... ) MODLOG_DFLT(ERROR, "\033[0;31mE %s: "#format"\033[0m\n",tag,##__VA_ARGS__) -#define NIMBLE_LOGW( tag, format, ... ) MODLOG_DFLT(WARN, "\033[0;33mW %s: "#format"\033[0m\n",tag,##__VA_ARGS__) -#define NIMBLE_LOGI( tag, format, ... ) MODLOG_DFLT(INFO, "\033[0;32mI %s: "#format"\033[0m\n",tag,##__VA_ARGS__) -#define NIMBLE_LOGD( tag, format, ... ) MODLOG_DFLT(DEBUG, "D %s: "#format"\n",tag,##__VA_ARGS__) -#define NIMBLE_LOGC( tag, format, ... ) MODLOG_DFLT(CRITICAL, "\033[1;31mCRIT %s: "#format"\033[0m\n",tag,##__VA_ARGS__) + +#include "esp_log.h" + +#define NIMBLE_LOGE(tag, format, ...) ESP_LOGE(tag, format, ##__VA_ARGS__) +#define NIMBLE_LOGW(tag, format, ...) ESP_LOGW(tag, format, ##__VA_ARGS__) +#define NIMBLE_LOGI(tag, format, ...) ESP_LOGI(tag, format, ##__VA_ARGS__) +#define NIMBLE_LOGD(tag, format, ...) ESP_LOGD(tag, format, ##__VA_ARGS__) +#define NIMBLE_LOGC(tag, format, ...) ESP_LOGE(tag, format, ##__VA_ARGS__) + #endif /*ARDUINO_ARCH_ESP32*/ #endif /*CONFIG_BT_ENABLED*/ diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp index 8bc5090b1..85c854971 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.cpp @@ -55,6 +55,7 @@ static const char* LOG_TAG = "NimBLERemoteCharacteristic"; m_handle = chr->val_handle; m_defHandle = chr->def_handle; + m_endHandle = 0; m_charProp = chr->properties; m_pRemoteService = pRemoteService; m_notifyCallback = nullptr; @@ -146,31 +147,25 @@ int NimBLERemoteCharacteristic::descriptorDiscCB(uint16_t conn_handle, const struct ble_gatt_dsc *dsc, void *arg) { - NIMBLE_LOGD(LOG_TAG,"Descriptor Discovered >> status: %d handle: %d", - error->status, (error->status == 0) ? dsc->handle : -1); + int rc = error->status; + NIMBLE_LOGD(LOG_TAG, "Descriptor Discovered >> status: %d handle: %d", + rc, (rc == 0) ? dsc->handle : -1); desc_filter_t *filter = (desc_filter_t*)arg; const NimBLEUUID *uuid_filter = filter->uuid; ble_task_data_t *pTaskData = (ble_task_data_t*)filter->task_data; NimBLERemoteCharacteristic *characteristic = (NimBLERemoteCharacteristic*)pTaskData->pATT; - int rc=0; - if(characteristic->getRemoteService()->getClient()->getConnId() != conn_handle){ + if (characteristic->getRemoteService()->getClient()->getConnId() != conn_handle){ return 0; } - switch (error->status) { + switch (rc) { case 0: { - if(dsc->uuid.u.type == BLE_UUID_TYPE_16 && dsc->uuid.u16.value == uint16_t(0x2803)) { - NIMBLE_LOGD(LOG_TAG,"Descriptor NOT found - end of Characteristic definintion"); - rc = BLE_HS_EDONE; - break; - } - if(uuid_filter != nullptr) { - if(ble_uuid_cmp(&uuid_filter->getNative()->u, &dsc->uuid.u) != 0) { + if (uuid_filter != nullptr) { + if (ble_uuid_cmp(&uuid_filter->getNative()->u, &dsc->uuid.u) != 0) { return 0; } else { - NIMBLE_LOGD(LOG_TAG,"Descriptor Found"); rc = BLE_HS_EDONE; } } @@ -180,11 +175,10 @@ int NimBLERemoteCharacteristic::descriptorDiscCB(uint16_t conn_handle, break; } default: - rc = error->status; break; } - /** If rc == BLE_HS_EDONE, resume the task with a success error code and stop the discovery process. + /* If rc == BLE_HS_EDONE, resume the task with a success error code and stop the discovery process. * Else if rc == 0, just return 0 to continue the discovery until we get BLE_HS_EDONE. * If we get any other error code tell the application to abort by returning non-zero in the rc. */ @@ -202,6 +196,38 @@ int NimBLERemoteCharacteristic::descriptorDiscCB(uint16_t conn_handle, } +/** + * @brief callback from NimBLE when the next characteristic of the service is discovered. + */ +int NimBLERemoteCharacteristic::nextCharCB(uint16_t conn_handle, + const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, void *arg) +{ + int rc = error->status; + NIMBLE_LOGD(LOG_TAG, "Next Characteristic >> status: %d handle: %d", + rc, (rc == 0) ? chr->val_handle : -1); + + ble_task_data_t *pTaskData = (ble_task_data_t*)arg; + NimBLERemoteCharacteristic *pChar = (NimBLERemoteCharacteristic*)pTaskData->pATT; + + if (pChar->getRemoteService()->getClient()->getConnId() != conn_handle) { + return 0; + } + + if (rc == 0) { + pChar->m_endHandle = chr->def_handle - 1; + rc = BLE_HS_EDONE; + } else if (rc == BLE_HS_EDONE) { + pChar->m_endHandle = pChar->getRemoteService()->getEndHandle(); + } else { + pTaskData->rc = rc; + } + + xTaskNotifyGive(pTaskData->task); + return rc; +} + + /** * @brief Populate the descriptors (if any) for this characteristic. * @param [in] the end handle of the characteristic, or the service, whichever comes first. @@ -209,35 +235,57 @@ int NimBLERemoteCharacteristic::descriptorDiscCB(uint16_t conn_handle, bool NimBLERemoteCharacteristic::retrieveDescriptors(const NimBLEUUID *uuid_filter) { NIMBLE_LOGD(LOG_TAG, ">> retrieveDescriptors() for characteristic: %s", getUUID().toString().c_str()); - uint16_t endHandle = getRemoteService()->getEndHandle(this); - if(m_handle >= endHandle) { - return false; + // If this is the last handle then there are no descriptors + if (m_handle == getRemoteService()->getEndHandle()) { + return true; } int rc = 0; ble_task_data_t taskData = {this, xTaskGetCurrentTaskHandle(), 0, nullptr}; + + // If we don't know the end handle of this characteristic retrieve the next one in the service + // The end handle is the next characteristic definition handle -1. + if (m_endHandle == 0) { + rc = ble_gattc_disc_all_chrs(getRemoteService()->getClient()->getConnId(), + m_handle, + getRemoteService()->getEndHandle(), + NimBLERemoteCharacteristic::nextCharCB, + &taskData); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Error getting end handle rc=%d", rc); + return false; + } + + ulTaskNotifyTake(pdTRUE, portMAX_DELAY); + + if (taskData.rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Could not retrieve end handle rc=%d", taskData.rc); + return false; + } + } + desc_filter_t filter = {uuid_filter, &taskData}; rc = ble_gattc_disc_all_dscs(getRemoteService()->getClient()->getConnId(), m_handle, - endHandle, + m_endHandle, NimBLERemoteCharacteristic::descriptorDiscCB, &filter); if (rc != 0) { - NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_chrs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); + NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_dscs: rc=%d %s", rc, NimBLEUtils::returnCodeToString(rc)); return false; } ulTaskNotifyTake(pdTRUE, portMAX_DELAY); - if(taskData.rc != 0) { - NIMBLE_LOGE(LOG_TAG, "ble_gattc_disc_all_chrs: startHandle:%d endHandle:%d taskData.rc=%d %s", m_handle, endHandle, taskData.rc, NimBLEUtils::returnCodeToString(0x0100+taskData.rc)); - return false; + if (taskData.rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Failed to retrieve descriptors; startHandle:%d endHandle:%d taskData.rc=%d", + m_handle, m_endHandle, taskData.rc); } - return true; NIMBLE_LOGD(LOG_TAG, "<< retrieveDescriptors(): Found %d descriptors.", m_descriptorVector.size()); + return (taskData.rc == 0); } // retrieveDescriptors @@ -664,7 +712,7 @@ std::string NimBLERemoteCharacteristic::toString() { * @return false if not connected or cant perform write for some reason. */ bool NimBLERemoteCharacteristic::writeValue(const std::string &newValue, bool response) { - return writeValue((uint8_t*)newValue.c_str(), strlen(newValue.c_str()), response); + return writeValue((uint8_t*)newValue.c_str(), newValue.length(), response); } // writeValue diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h index 720a4da29..39e6d40fa 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteCharacteristic.h @@ -148,12 +148,15 @@ private: static int descriptorDiscCB(uint16_t conn_handle, const struct ble_gatt_error *error, uint16_t chr_val_handle, const struct ble_gatt_dsc *dsc, void *arg); + static int nextCharCB(uint16_t conn_handle, const struct ble_gatt_error *error, + const struct ble_gatt_chr *chr, void *arg); // Private properties NimBLEUUID m_uuid; uint8_t m_charProp; uint16_t m_handle; uint16_t m_defHandle; + uint16_t m_endHandle; NimBLERemoteService* m_pRemoteService; std::string m_value; notify_callback m_notifyCallback; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.cpp index cb20e0b3f..efb6662a8 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.cpp @@ -223,6 +223,20 @@ bool NimBLERemoteService::retrieveCharacteristics(const NimBLEUUID *uuid_filter) ulTaskNotifyTake(pdTRUE, portMAX_DELAY); if(taskData.rc == 0){ + if (uuid_filter == nullptr) { + if (m_characteristicVector.size() > 1) { + for (auto it = m_characteristicVector.begin(); it != m_characteristicVector.end(); ++it ) { + auto nx = std::next(it, 1); + if (nx == m_characteristicVector.end()) { + break; + } + (*it)->m_endHandle = (*nx)->m_defHandle - 1; + } + } + + m_characteristicVector.back()->m_endHandle = getEndHandle(); + } + NIMBLE_LOGD(LOG_TAG, "<< retrieveCharacteristics()"); return true; } @@ -249,23 +263,6 @@ uint16_t NimBLERemoteService::getEndHandle() { return m_endHandle; } // getEndHandle -/** - * @brief Get the end handle of specified NimBLERemoteCharacteristic. - */ - -uint16_t NimBLERemoteService::getEndHandle(NimBLERemoteCharacteristic *pCharacteristic) { - uint16_t endHandle = m_endHandle; - - for(auto &it: m_characteristicVector) { - uint16_t defHandle = it->getDefHandle() - 1; - if(defHandle > pCharacteristic->getDefHandle() && endHandle > defHandle) { - endHandle = defHandle; - } - } - - return endHandle; -} // getEndHandle - /** * @brief Get the service start handle. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.h index 4920844e4..751c9effb 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLERemoteService.h @@ -70,7 +70,6 @@ private: uint16_t getStartHandle(); uint16_t getEndHandle(); - uint16_t getEndHandle(NimBLERemoteCharacteristic *pCharacteristic); void releaseSemaphores(); // Properties diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.cpp index 00aeab03c..037055208 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.cpp @@ -110,7 +110,7 @@ NimBLEScan::~NimBLEScan() { advertisedDevice->m_timestamp = time(nullptr); advertisedDevice->setRSSI(event->disc.rssi); - advertisedDevice->setPayload(event->disc.data, event->disc.length_data, + advertisedDevice->setPayload(event->disc.data, event->disc.length_data, event->disc.event_type == BLE_HCI_ADV_RPT_EVTYPE_SCAN_RSP); if (pScan->m_pAdvertisedDeviceCallbacks) { @@ -128,7 +128,7 @@ NimBLEScan::~NimBLEScan() { advertisedDevice->m_callbackSent = true; pScan->m_pAdvertisedDeviceCallbacks->onResult(advertisedDevice); } - // If not storing results and we have invoked the callback, delete the device. + // If not storing results and we have invoked the callback, delete the device. if(pScan->m_maxResults == 0 && advertisedDevice->m_callbackSent) { pScan->erase(advertisedAddress); } @@ -316,6 +316,8 @@ bool NimBLEScan::start(uint32_t duration, void (*scanCompleteCB)(NimBLEScanResul break; case BLE_HS_EALREADY: + // Clear the cache if already scanning in case an advertiser was missed. + clearDuplicateCache(); break; case BLE_HS_EBUSY: @@ -398,6 +400,16 @@ bool NimBLEScan::stop() { } // stop +/** + * @brief Clears the duplicate scan filter cache. + */ +void NimBLEScan::clearDuplicateCache() { +#ifdef CONFIG_IDF_TARGET_ESP32 // Not available for ESP32C3 + esp_ble_scan_dupilcate_list_flush(); +#endif +} + + /** * @brief Delete peer device from the scan results vector. * @param [in] address The address of the device to delete from the results. @@ -453,6 +465,7 @@ void NimBLEScan::clearResults() { delete it; } m_scanResults.m_advertisedDevicesVector.clear(); + clearDuplicateCache(); } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.h index 57e743009..49d67c8ec 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEScan.h @@ -70,6 +70,7 @@ public: void setDuplicateFilter(bool enabled); void setLimitedOnly(bool enabled); void setFilterPolicy(uint8_t filter); + void clearDuplicateCache(); bool stop(); void clearResults(); NimBLEScanResults getResults(); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.cpp index 423e87967..082c51ad8 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.cpp @@ -37,6 +37,7 @@ static NimBLEServerCallbacks defaultCallbacks; * the NimBLEDevice class. */ NimBLEServer::NimBLEServer() { + memset(m_indWait, BLE_HS_CONN_HANDLE_NONE, sizeof(m_indWait)); // m_svcChgChrHdl = 0xffff; // Future Use m_pServerCallbacks = &defaultCallbacks; m_gattsStarted = false; @@ -90,12 +91,7 @@ NimBLEService* NimBLEServer::createService(const NimBLEUUID &uuid, uint32_t numH NimBLEService* pService = new NimBLEService(uuid, numHandles, this); m_svcVec.push_back(pService); // Save a reference to this service being on this server. - - if(m_gattsStarted) { - ble_svc_gatt_changed(0x0001, 0xffff); - m_svcChanged = true; - resetGATT(); - } + serviceChanged(); NIMBLE_LOGD(LOG_TAG, "<< createService"); return pService; @@ -156,6 +152,18 @@ NimBLEAdvertising* NimBLEServer::getAdvertising() { } // getAdvertising +/** + * @brief Sends a service changed notification and resets the GATT server. + */ +void NimBLEServer::serviceChanged() { + if(m_gattsStarted) { + m_svcChanged = true; + ble_svc_gatt_changed(0x0001, 0xffff); + resetGATT(); + } +} + + /** * @brief Start the GATT server. Required to be called after setup of all * services and characteristics / descriptors for the NimBLE host to register them. @@ -253,6 +261,63 @@ size_t NimBLEServer::getConnectedCount() { } // getConnectedCount +/** + * @brief Get the vector of the connected client ID's. + */ +std::vector NimBLEServer::getPeerDevices() { + return m_connectedPeersVec; +} // getPeerDevices + + +/** + * @brief Get the connection information of a connected peer by vector index. + * @param [in] index The vector index of the peer. + */ +NimBLEConnInfo NimBLEServer::getPeerInfo(size_t index) { + if (index >= m_connectedPeersVec.size()) { + NIMBLE_LOGE(LOG_TAG, "No peer at index %u", index); + return NimBLEConnInfo(); + } + + return getPeerIDInfo(m_connectedPeersVec[index]); +} // getPeerInfo + + +/** + * @brief Get the connection information of a connected peer by address. + * @param [in] address The address of the peer. + */ +NimBLEConnInfo NimBLEServer::getPeerInfo(const NimBLEAddress& address) { + ble_addr_t peerAddr; + memcpy(&peerAddr.val, address.getNative(),6); + peerAddr.type = address.getType(); + + NimBLEConnInfo peerInfo; + int rc = ble_gap_conn_find_by_addr(&peerAddr, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Peer info not found"); + } + + return peerInfo; +} // getPeerInfo + + +/** + * @brief Get the connection information of a connected peer by connection ID. + * @param [in] id The connection id of the peer. + */ +NimBLEConnInfo NimBLEServer::getPeerIDInfo(uint16_t id) { + NimBLEConnInfo peerInfo; + + int rc = ble_gap_conn_find(id, &peerInfo.m_desc); + if (rc != 0) { + NIMBLE_LOGE(LOG_TAG, "Peer info not found"); + } + + return peerInfo; +} // getPeerIDInfo + + /** * @brief Handle a GATT Server Event. * @@ -280,7 +345,9 @@ size_t NimBLEServer::getConnectedCount() { server->m_connectedPeersVec.push_back(event->connect.conn_handle); rc = ble_gap_conn_find(event->connect.conn_handle, &desc); - assert(rc == 0); + if (rc != 0) { + return 0; + } server->m_pServerCallbacks->onConnect(server); server->m_pServerCallbacks->onConnect(server, &desc); @@ -335,7 +402,9 @@ size_t NimBLEServer::getConnectedCount() { (it->getProperties() & BLE_GATT_CHR_F_READ_ENC)) { rc = ble_gap_conn_find(event->subscribe.conn_handle, &desc); - assert(rc == 0); + if (rc != 0) { + break; + } if(!desc.sec_state.encrypted) { NimBLEDevice::startSecurity(event->subscribe.conn_handle); @@ -354,22 +423,54 @@ size_t NimBLEServer::getConnectedCount() { NIMBLE_LOGI(LOG_TAG, "mtu update event; conn_handle=%d mtu=%d", event->mtu.conn_handle, event->mtu.value); + rc = ble_gap_conn_find(event->mtu.conn_handle, &desc); + if (rc != 0) { + return 0; + } + + server->m_pServerCallbacks->onMTUChange(event->mtu.value, &desc); return 0; } // BLE_GAP_EVENT_MTU case BLE_GAP_EVENT_NOTIFY_TX: { - if(event->notify_tx.indication && event->notify_tx.status != 0) { - for(auto &it : server->m_notifyChrVec) { - if(it->getHandle() == event->notify_tx.attr_handle) { - if(it->m_pTaskData != nullptr) { - it->m_pTaskData->rc = event->notify_tx.status; - xTaskNotifyGive(it->m_pTaskData->task); - } - break; - } + NimBLECharacteristic *pChar = nullptr; + + for(auto &it : server->m_notifyChrVec) { + if(it->getHandle() == event->notify_tx.attr_handle) { + pChar = it; } } + if(pChar == nullptr) { + return 0; + } + + NimBLECharacteristicCallbacks::Status statusRC; + + if(event->notify_tx.indication) { + if(event->notify_tx.status != 0) { + if(event->notify_tx.status == BLE_HS_EDONE) { + statusRC = NimBLECharacteristicCallbacks::Status::SUCCESS_INDICATE; + } else if(rc == BLE_HS_ETIMEOUT) { + statusRC = NimBLECharacteristicCallbacks::Status::ERROR_INDICATE_TIMEOUT; + } else { + statusRC = NimBLECharacteristicCallbacks::Status::ERROR_INDICATE_FAILURE; + } + } else { + return 0; + } + + server->clearIndicateWait(event->notify_tx.conn_handle); + } else { + if(event->notify_tx.status == 0) { + statusRC = NimBLECharacteristicCallbacks::Status::SUCCESS_NOTIFY; + } else { + statusRC = NimBLECharacteristicCallbacks::Status::ERROR_GATT; + } + } + + pChar->m_pCallbacks->onStatus(pChar, statusRC, event->notify_tx.status); + return 0; } // BLE_GAP_EVENT_NOTIFY_TX @@ -392,7 +493,10 @@ size_t NimBLEServer::getConnectedCount() { /* Delete the old bond. */ rc = ble_gap_conn_find(event->repeat_pairing.conn_handle, &desc); - assert(rc == 0); + if (rc != 0){ + return BLE_GAP_REPEAT_PAIRING_IGNORE; + } + ble_store_util_delete_peer(&desc.peer_id_addr); /* Return BLE_GAP_REPEAT_PAIRING_RETRY to indicate that the host should @@ -533,7 +637,7 @@ void NimBLEServer::removeService(NimBLEService* service, bool deleteSvc) { if(service->m_removed > 0) { if(deleteSvc) { for(auto it = m_svcVec.begin(); it != m_svcVec.end(); ++it) { - if ((*it)->getUUID() == service->getUUID()) { + if ((*it) == service) { delete *it; m_svcVec.erase(it); break; @@ -549,32 +653,35 @@ void NimBLEServer::removeService(NimBLEService* service, bool deleteSvc) { return; } - service->m_removed = deleteSvc ? 2 : 1; - m_svcChanged = true; - - ble_svc_gatt_changed(0x0001, 0xffff); - resetGATT(); + service->m_removed = deleteSvc ? NIMBLE_ATT_REMOVE_DELETE : NIMBLE_ATT_REMOVE_HIDE; + serviceChanged(); NimBLEDevice::getAdvertising()->removeServiceUUID(service->getUUID()); } /** - * @brief Adds a service which was already created, but removed from availability. + * @brief Adds a service which was either already created but removed from availability,\n + * or created and later added to services list. * @param [in] service The service object to add. * @note If it is desired to advertise the service it must be added by * calling NimBLEAdvertising::addServiceUUID. */ void NimBLEServer::addService(NimBLEService* service) { - // If adding a service that was not removed just return. + // Check that a service with the supplied UUID does not already exist. + if(getServiceByUUID(service->getUUID()) != nullptr) { + NIMBLE_LOGW(LOG_TAG, "Warning creating a duplicate service UUID: %s", + std::string(service->getUUID()).c_str()); + } + + // If adding a service that was not removed add it and return. + // Else reset GATT and send service changed notification. if(service->m_removed == 0) { + m_svcVec.push_back(service); return; } service->m_removed = 0; - m_svcChanged = true; - - ble_svc_gatt_changed(0x0001, 0xffff); - resetGATT(); + serviceChanged(); } @@ -593,7 +700,7 @@ void NimBLEServer::resetGATT() { for(auto it = m_svcVec.begin(); it != m_svcVec.end(); ) { if ((*it)->m_removed > 0) { - if ((*it)->m_removed == 2) { + if ((*it)->m_removed == NIMBLE_ATT_REMOVE_DELETE) { delete *it; it = m_svcVec.erase(it); } else { @@ -668,6 +775,27 @@ void NimBLEServer::updateConnParams(uint16_t conn_handle, }// updateConnParams +bool NimBLEServer::setIndicateWait(uint16_t conn_handle) { + for(auto i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++) { + if(m_indWait[i] == conn_handle) { + return false; + } + } + + return true; +} + + +void NimBLEServer::clearIndicateWait(uint16_t conn_handle) { + for(auto i = 0; i < CONFIG_BT_NIMBLE_MAX_CONNECTIONS; i++) { + if(m_indWait[i] == conn_handle) { + m_indWait[i] = BLE_HS_CONN_HANDLE_NONE; + return; + } + } +} + + /** Default callback handlers */ void NimBLEServerCallbacks::onConnect(NimBLEServer* pServer) { @@ -688,6 +816,10 @@ void NimBLEServerCallbacks::onDisconnect(NimBLEServer* pServer, ble_gap_conn_des NIMBLE_LOGD("NimBLEServerCallbacks", "onDisconnect(): Default"); } // onDisconnect +void NimBLEServerCallbacks::onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc) { + NIMBLE_LOGD("NimBLEServerCallbacks", "onMTUChange(): Default"); +} // onMTUChange + uint32_t NimBLEServerCallbacks::onPassKeyRequest(){ NIMBLE_LOGD("NimBLEServerCallbacks", "onPassKeyRequest: default: 123456"); return 123456; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.h index aaaf287d2..ebcf39f23 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEServer.h @@ -20,11 +20,15 @@ #include "nimconfig.h" #if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL) +#define NIMBLE_ATT_REMOVE_HIDE 1 +#define NIMBLE_ATT_REMOVE_DELETE 2 + #include "NimBLEUtils.h" #include "NimBLEAddress.h" #include "NimBLEAdvertising.h" #include "NimBLEService.h" #include "NimBLESecurity.h" +#include "NimBLEConnInfo.h" class NimBLEService; @@ -58,13 +62,17 @@ public: uint16_t minInterval, uint16_t maxInterval, uint16_t latency, uint16_t timeout); uint16_t getPeerMTU(uint16_t conn_id); -// std::vector getPeerDevices(); + std::vector getPeerDevices(); + NimBLEConnInfo getPeerInfo(size_t index); + NimBLEConnInfo getPeerInfo(const NimBLEAddress& address); + NimBLEConnInfo getPeerIDInfo(uint16_t id); void advertiseOnDisconnect(bool); private: NimBLEServer(); ~NimBLEServer(); friend class NimBLECharacteristic; + friend class NimBLEService; friend class NimBLEDevice; friend class NimBLEAdvertising; @@ -73,6 +81,7 @@ private: bool m_svcChanged; NimBLEServerCallbacks* m_pServerCallbacks; bool m_deleteCallbacks; + uint16_t m_indWait[CONFIG_BT_NIMBLE_MAX_CONNECTIONS]; std::vector m_connectedPeersVec; // uint16_t m_svcChgChrHdl; // Future use @@ -81,7 +90,10 @@ private: std::vector m_notifyChrVec; static int handleGapEvent(struct ble_gap_event *event, void *arg); + void serviceChanged(); void resetGATT(); + bool setIndicateWait(uint16_t conn_handle); + void clearIndicateWait(uint16_t conn_handle); }; // NimBLEServer @@ -124,6 +136,14 @@ public: */ virtual void onDisconnect(NimBLEServer* pServer, ble_gap_conn_desc* desc); + /** + * @brief Called when the connection MTU changes. + * @param [in] MTU The new MTU value. + * @param [in] desc A pointer to the connection description structure containig information + * about the connection. + */ + virtual void onMTUChange(uint16_t MTU, ble_gap_conn_desc* desc); + /** * @brief Called when a client requests a passkey for pairing. * @return The passkey to be sent to the client. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.cpp index a830eec95..9c43e900c 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.cpp @@ -35,7 +35,7 @@ static const char* LOG_TAG = "NimBLEService"; // Tag for logging. * @brief Construct an instance of the NimBLEService * @param [in] uuid The UUID of the service. * @param [in] numHandles The maximum number of handles associated with the service. - * @param [in] a pointer to the server instance that this service belongs to. + * @param [in] pServer A pointer to the server instance that this service belongs to. */ NimBLEService::NimBLEService(const char* uuid, uint16_t numHandles, NimBLEServer* pServer) : NimBLEService(NimBLEUUID(uuid), numHandles, pServer) { @@ -46,7 +46,7 @@ NimBLEService::NimBLEService(const char* uuid, uint16_t numHandles, NimBLEServer * @brief Construct an instance of the BLEService * @param [in] uuid The UUID of the service. * @param [in] numHandles The maximum number of handles associated with the service. - * @param [in] a pointer to the server instance that this service belongs to. + * @param [in] pServer A pointer to the server instance that this service belongs to. */ NimBLEService::NimBLEService(const NimBLEUUID &uuid, uint16_t numHandles, NimBLEServer* pServer) { m_uuid = uuid; @@ -118,7 +118,12 @@ NimBLEUUID NimBLEService::getUUID() { */ bool NimBLEService::start() { NIMBLE_LOGD(LOG_TAG, ">> start(): Starting service: %s", toString().c_str()); - int rc = 0; + + // Rebuild the service definition if the server attributes have changed. + if(getServer()->m_svcChanged && m_pSvcDef != nullptr) { + delete(m_pSvcDef); + m_pSvcDef = nullptr; + } if(m_pSvcDef == nullptr) { // Nimble requires an array of services to be sent to the api @@ -132,8 +137,23 @@ bool NimBLEService::start() { svc[0].uuid = &m_uuid.getNative()->u; svc[0].includes = NULL; - size_t numChrs = m_chrVec.size(); + int removedCount = 0; + for(auto it = m_chrVec.begin(); it != m_chrVec.end(); ) { + if ((*it)->m_removed > 0) { + if ((*it)->m_removed == NIMBLE_ATT_REMOVE_DELETE) { + delete *it; + it = m_chrVec.erase(it); + } else { + ++removedCount; + ++it; + } + continue; + } + ++it; + } + + size_t numChrs = m_chrVec.size() - removedCount; NIMBLE_LOGD(LOG_TAG,"Adding %d characteristics for service %s", numChrs, toString().c_str()); if(!numChrs){ @@ -142,40 +162,60 @@ bool NimBLEService::start() { // Nimble requires the last characteristic to have it's uuid = 0 to indicate the end // of the characteristics for the service. We create 1 extra and set it to null // for this purpose. - pChr_a = new ble_gatt_chr_def[numChrs+1]; - NimBLECharacteristic* pCharacteristic = *m_chrVec.begin(); + pChr_a = new ble_gatt_chr_def[numChrs + 1]; + uint8_t i = 0; + for(auto chr_it = m_chrVec.begin(); chr_it != m_chrVec.end(); ++chr_it) { + if((*chr_it)->m_removed > 0) { + continue; + } - for(uint8_t i=0; i < numChrs;) { - uint8_t numDscs = pCharacteristic->m_dscVec.size(); + removedCount = 0; + for(auto it = (*chr_it)->m_dscVec.begin(); it != (*chr_it)->m_dscVec.end(); ) { + if ((*it)->m_removed > 0) { + if ((*it)->m_removed == NIMBLE_ATT_REMOVE_DELETE) { + delete *it; + it = (*chr_it)->m_dscVec.erase(it); + } else { + ++removedCount; + ++it; + } + continue; + } + + ++it; + } + + size_t numDscs = (*chr_it)->m_dscVec.size() - removedCount; if(!numDscs){ pChr_a[i].descriptors = NULL; } else { // Must have last descriptor uuid = 0 so we have to create 1 extra pDsc_a = new ble_gatt_dsc_def[numDscs+1]; - NimBLEDescriptor* pDescriptor = *pCharacteristic->m_dscVec.begin(); - for(uint8_t d=0; d < numDscs;) { - pDsc_a[d].uuid = &pDescriptor->m_uuid.getNative()->u; - pDsc_a[d].att_flags = pDescriptor->m_properties; + uint8_t d = 0; + for(auto dsc_it = (*chr_it)->m_dscVec.begin(); dsc_it != (*chr_it)->m_dscVec.end(); ++dsc_it ) { + if((*dsc_it)->m_removed > 0) { + continue; + } + pDsc_a[d].uuid = &(*dsc_it)->m_uuid.getNative()->u; + pDsc_a[d].att_flags = (*dsc_it)->m_properties; pDsc_a[d].min_key_size = 0; pDsc_a[d].access_cb = NimBLEDescriptor::handleGapEvent; - pDsc_a[d].arg = pDescriptor; - d++; - pDescriptor = *(pCharacteristic->m_dscVec.begin() + d); + pDsc_a[d].arg = (*dsc_it); + ++d; } pDsc_a[numDscs].uuid = NULL; pChr_a[i].descriptors = pDsc_a; } - pChr_a[i].uuid = &pCharacteristic->m_uuid.getNative()->u; + pChr_a[i].uuid = &(*chr_it)->m_uuid.getNative()->u; pChr_a[i].access_cb = NimBLECharacteristic::handleGapEvent; - pChr_a[i].arg = pCharacteristic; - pChr_a[i].flags = pCharacteristic->m_properties; + pChr_a[i].arg = (*chr_it); + pChr_a[i].flags = (*chr_it)->m_properties; pChr_a[i].min_key_size = 0; - pChr_a[i].val_handle = &pCharacteristic->m_handle; - i++; - pCharacteristic = *(m_chrVec.begin() + i); + pChr_a[i].val_handle = &(*chr_it)->m_handle; + ++i; } pChr_a[numChrs].uuid = NULL; @@ -187,7 +227,7 @@ bool NimBLEService::start() { m_pSvcDef = svc; } - rc = ble_gatts_count_cfg((const ble_gatt_svc_def*)m_pSvcDef); + int rc = ble_gatts_count_cfg((const ble_gatt_svc_def*)m_pSvcDef); if (rc != 0) { NIMBLE_LOGE(LOG_TAG, "ble_gatts_count_cfg failed, rc= %d, %s", rc, NimBLEUtils::returnCodeToString(rc)); return false; @@ -239,13 +279,64 @@ NimBLECharacteristic* NimBLEService::createCharacteristic(const NimBLEUUID &uuid std::string(uuid).c_str()); } - // Remember this characteristic in our vector of characteristics. - m_chrVec.push_back(pCharacteristic); - + addCharacteristic(pCharacteristic); return pCharacteristic; } // createCharacteristic +/** + * @brief Add a characteristic to the service. + * @param[in] pCharacteristic A pointer to the characteristic instance to add to the service. + */ +void NimBLEService::addCharacteristic(NimBLECharacteristic* pCharacteristic) { + bool foundRemoved = false; + + if(pCharacteristic->m_removed > 0) { + for(auto& it : m_chrVec) { + if(it == pCharacteristic) { + foundRemoved = true; + pCharacteristic->m_removed = 0; + } + } + } + + if(!foundRemoved) { + m_chrVec.push_back(pCharacteristic); + } + + pCharacteristic->setService(this); + getServer()->serviceChanged(); +} // addCharacteristic + + +/** + * @brief Remove a characteristic from the service. + * @param[in] pCharacteristic A pointer to the characteristic instance to remove from the service. + * @param[in] deleteChr If true it will delete the characteristic instance and free it's resources. + */ +void NimBLEService::removeCharacteristic(NimBLECharacteristic* pCharacteristic, bool deleteChr) { + // Check if the characteristic was already removed and if so, check if this + // is being called to delete the object and do so if requested. + // Otherwise, ignore the call and return. + if(pCharacteristic->m_removed > 0) { + if(deleteChr) { + for(auto it = m_chrVec.begin(); it != m_chrVec.end(); ++it) { + if ((*it) == pCharacteristic) { + m_chrVec.erase(it); + delete *it; + break; + } + } + } + + return; + } + + pCharacteristic->m_removed = deleteChr ? NIMBLE_ATT_REMOVE_DELETE : NIMBLE_ATT_REMOVE_HIDE; + getServer()->serviceChanged(); +} // removeCharacteristic + + /** * @brief Get a pointer to the characteristic object with the specified UUID. * @param [in] uuid The UUID of the characteristic. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.h b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.h index 1203d3e3b..ebf913d32 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEService.h @@ -36,6 +36,10 @@ class NimBLECharacteristic; class NimBLEService { public: + NimBLEService(const char* uuid, uint16_t numHandles, NimBLEServer* pServer); + NimBLEService(const NimBLEUUID &uuid, uint16_t numHandles, NimBLEServer* pServer); + ~NimBLEService(); + NimBLEServer* getServer(); NimBLEUUID getUUID(); @@ -55,6 +59,8 @@ public: NIMBLE_PROPERTY::READ | NIMBLE_PROPERTY::WRITE); + void addCharacteristic(NimBLECharacteristic* pCharacteristic); + void removeCharacteristic(NimBLECharacteristic* pCharacteristic, bool deleteChr = false); NimBLECharacteristic* getCharacteristic(const char* uuid, uint16_t instanceId = 0); NimBLECharacteristic* getCharacteristic(const NimBLEUUID &uuid, uint16_t instanceId = 0); NimBLECharacteristic* getCharacteristicByHandle(uint16_t handle); @@ -65,9 +71,6 @@ public: private: - NimBLEService(const char* uuid, uint16_t numHandles, NimBLEServer* pServer); - NimBLEService(const NimBLEUUID &uuid, uint16_t numHandles, NimBLEServer* pServer); - ~NimBLEService(); friend class NimBLEServer; friend class NimBLEDevice; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEUUID.cpp b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEUUID.cpp index ea58ae7b2..9338d7d00 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/NimBLEUUID.cpp +++ b/lib/libesp32_div/NimBLE-Arduino/src/NimBLEUUID.cpp @@ -277,10 +277,6 @@ std::string NimBLEUUID::toString() const { */ bool NimBLEUUID::operator ==(const NimBLEUUID & rhs) const { if(m_valueSet && rhs.m_valueSet) { - NIMBLE_LOGD(LOG_TAG,"Comparing UUIDs; type %u to %u; UUID %s to %s", - m_uuid.u.type, rhs.m_uuid.u.type, - this->toString().c_str(), rhs.toString().c_str()); - if(m_uuid.u.type != rhs.m_uuid.u.type) { uint8_t uuidBase[16] = { 0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80, diff --git a/lib/libesp32_div/NimBLE-Arduino/src/esp-hci/src/esp_nimble_hci.c b/lib/libesp32_div/NimBLE-Arduino/src/esp-hci/src/esp_nimble_hci.c index 9af13c355..2963e15b3 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/esp-hci/src/esp_nimble_hci.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/esp-hci/src/esp_nimble_hci.c @@ -19,13 +19,6 @@ * under the License. */ -/* - * This file has been modified by Ryan Powell, aka h2zero. - * The modifications are for the purpose of improving performance and support - * for Esprssif versions used by the ardruino-esp32 core that are less current - * than the esp-idf releases. - */ - #include #include "sysinit/sysinit.h" #include "nimble/hci_common.h" @@ -44,6 +37,8 @@ #endif #define NIMBLE_VHCI_TIMEOUT_MS 2000 +#define BLE_HCI_EVENT_HDR_LEN (2) +#define BLE_HCI_CMD_HDR_LEN (3) static ble_hci_trans_rx_cmd_fn *ble_hci_rx_cmd_hs_cb; static void *ble_hci_rx_cmd_hs_arg; @@ -276,7 +271,9 @@ void ble_hci_trans_buf_free(uint8_t *buf) */ int ble_hci_trans_set_acl_free_cb(os_mempool_put_fn *cb, void *arg) { - return BLE_ERR_UNSUPPORTED; + ble_hci_acl_pool.mpe_put_cb = cb; + ble_hci_acl_pool.mpe_put_arg = arg; + return 0; } int ble_hci_trans_reset(void) @@ -313,6 +310,7 @@ static struct os_mbuf *ble_hci_trans_acl_buf_alloc(void) static void ble_hci_rx_acl(uint8_t *data, uint16_t len) { struct os_mbuf *m; + int rc; int sr; if (len < BLE_HCI_DATA_HDR_SZ || len > MYNEWT_VAL(BLE_ACL_BUF_SIZE)) { return; @@ -321,9 +319,11 @@ static void ble_hci_rx_acl(uint8_t *data, uint16_t len) m = ble_hci_trans_acl_buf_alloc(); if (!m) { + ESP_LOGE(TAG, "%s failed to allocate ACL buffers; increase ACL_BUF_COUNT", __func__); return; } - if (os_mbuf_append(m, data, len)) { + if ((rc = os_mbuf_append(m, data, len)) != 0) { + ESP_LOGE(TAG, "%s failed to os_mbuf_append; rc = %d", __func__, rc); os_mbuf_free_chain(m); return; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/esp_nimble_cfg.h b/lib/libesp32_div/NimBLE-Arduino/src/esp_nimble_cfg.h index bafbeac8f..2cebffc85 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/esp_nimble_cfg.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/esp_nimble_cfg.h @@ -25,6 +25,10 @@ #define MYNEWT_VAL_MSYS_1_BLOCK_SIZE (292) #endif +#ifndef MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT +#define MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT (0) +#endif + #ifndef MYNEWT_VAL_MSYS_2_BLOCK_COUNT #define MYNEWT_VAL_MSYS_2_BLOCK_COUNT (0) #endif @@ -43,11 +47,15 @@ /*** nimble */ #ifndef MYNEWT_VAL_BLE_EXT_ADV -#define MYNEWT_VAL_BLE_EXT_ADV (0) +#define MYNEWT_VAL_BLE_EXT_ADV (CONFIG_BT_NIMBLE_EXT_ADV) #endif #ifndef MYNEWT_VAL_BLE_EXT_ADV_MAX_SIZE -#define MYNEWT_VAL_BLE_EXT_ADV_MAX_SIZE (31) +#ifdef CONFIG_BT_NIMBLE_EXT_ADV +#define MYNEWT_VAL_BLE_EXT_ADV_MAX_SIZE (CONFIG_BT_NIMBLE_MAX_EXT_ADV_DATA_LEN) +#else +#define MYNEWT_VAL_BLE_EXT_ADV_MAX_SIZE (0) +#endif #endif #ifndef MYNEWT_VAL_BLE_MAX_CONNECTIONS @@ -55,12 +63,20 @@ #endif #ifndef MYNEWT_VAL_BLE_MULTI_ADV_INSTANCES +#ifdef CONFIG_BT_NIMBLE_EXT_ADV +#define MYNEWT_VAL_BLE_MULTI_ADV_INSTANCES (CONFIG_BT_NIMBLE_MAX_EXT_ADV_INSTANCES) +#else #define MYNEWT_VAL_BLE_MULTI_ADV_INSTANCES (0) #endif +#endif #ifndef MYNEWT_VAL_BLE_MAX_PERIODIC_SYNCS +#ifdef CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV +#define MYNEWT_VAL_BLE_MAX_PERIODIC_SYNCS (CONFIG_BT_NIMBLE_MAX_PERIODIC_SYNCS) +#else #define MYNEWT_VAL_BLE_MAX_PERIODIC_SYNCS (0) #endif +#endif #ifndef MYNEWT_VAL_BLE_ROLE_BROADCASTER #ifdef CONFIG_BT_NIMBLE_ROLE_BROADCASTER @@ -267,9 +283,25 @@ #define MYNEWT_VAL_BLE_ATT_PREFERRED_MTU CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU #endif +#ifndef MYNEWT_VAL_BLE_HS_LOG_LVL +#define MYNEWT_VAL_BLE_HS_LOG_LVL CONFIG_BT_NIMBLE_LOG_LEVEL +#endif + #ifndef MYNEWT_VAL_BLE_PERIODIC_ADV +#ifdef CONFIG_BT_NIMBLE_EXT_ADV +#define MYNEWT_VAL_BLE_PERIODIC_ADV (CONFIG_BT_NIMBLE_ENABLE_PERIODIC_ADV) +#else #define MYNEWT_VAL_BLE_PERIODIC_ADV (0) #endif +#endif + +#ifndef MYNEWT_VAL_BLE_PERIODIC_ADV_SYNC_TRANSFER +#define MYNEWT_VAL_BLE_PERIODIC_ADV_SYNC_TRANSFER (0) +#endif + +#ifndef MYNEWT_VAL_BLE_VERSION +#define MYNEWT_VAL_BLE_VERSION (50) +#endif #ifndef MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO #define MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO (1) @@ -479,6 +511,18 @@ #define MYNEWT_VAL_BLE_HS_REQUIRE_OS (1) #endif +#ifndef MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN +#define MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN (1) +#endif + +#ifndef MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN_TIMEOUT +#define MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN_TIMEOUT CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS +#endif + +#ifndef MYNEWT_VAL_BLE_HS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_HS_SYSINIT_STAGE (200) +#endif + #ifndef MYNEWT_VAL_BLE_L2CAP_COC_MAX_NUM #define MYNEWT_VAL_BLE_L2CAP_COC_MAX_NUM CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM #endif @@ -547,8 +591,12 @@ #define MYNEWT_VAL_BLE_MONITOR_UART_DEV ("uart0") #endif -#ifndef MYNEWT_VAL_BLE_HOST_BASED_PRIVACY +#if CONFIG_IDF_TARGET_ESP32 #define MYNEWT_VAL_BLE_HOST_BASED_PRIVACY (1) +#else +#ifndef MYNEWT_VAL_BLE_HOST_BASED_PRIVACY +#define MYNEWT_VAL_BLE_HOST_BASED_PRIVACY (CONFIG_BT_NIMBLE_HOST_BASED_PRIVACY) +#endif #endif #ifndef MYNEWT_VAL_BLE_RPA_TIMEOUT @@ -615,6 +663,27 @@ #define MYNEWT_VAL_BLE_STORE_MAX_CCCDS CONFIG_BT_NIMBLE_MAX_CCCDS #endif +/*** @apache-mynewt-nimble/nimble/host/mesh */ +#ifndef MYNEWT_VAL_BLE_MESH_ACCESS_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_ACCESS_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_ACCESS_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_ACCESS_LOG_MOD (10) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_ADV_BUF_COUNT +#define MYNEWT_VAL_BLE_MESH_ADV_BUF_COUNT (20) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_ADV_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_ADV_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_ADV_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_ADV_LOG_MOD (11) +#endif + #ifndef MYNEWT_VAL_BLE_STORE_CONFIG_PERSIST #ifdef CONFIG_BT_NIMBLE_NVS_PERSIST #define MYNEWT_VAL_BLE_STORE_CONFIG_PERSIST (1) @@ -645,6 +714,9 @@ #define MYNEWT_VAL_BLE_MESH_ADV_TASK_PRIO (9) #endif +#ifndef MYNEWT_VAL_BLE_MESH_APP_KEY_COUNT +#define MYNEWT_VAL_BLE_MESH_APP_KEY_COUNT (4) +#endif /*** @apache-mynewt-nimble/nimble/host/mesh */ /* Overridden by apps/blemesh (defined by @apache-mynewt-nimble/nimble/host/mesh) */ @@ -758,6 +830,14 @@ #endif #endif +#ifndef MYNEWT_VAL_BLE_MESH_FRIEND_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_FRIEND_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_FRIEND_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_FRIEND_LOG_MOD (14) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_FRIEND_LPN_COUNT #define MYNEWT_VAL_BLE_MESH_FRIEND_LPN_COUNT (2) #endif @@ -802,6 +882,14 @@ #define MYNEWT_VAL_BLE_MESH_LABEL_COUNT (1) #endif +#ifndef MYNEWT_VAL_BLE_MESH_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_LOG_MOD (9) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_LOW_POWER #ifdef CONFIG_BT_NIMBLE_MESH_LOW_POWER #define MYNEWT_VAL_BLE_MESH_LOW_POWER (1) @@ -810,6 +898,14 @@ #endif #endif +#ifndef MYNEWT_VAL_BLE_MESH_LOW_POWER_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_LOW_POWER_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_LOW_POWER_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_LOW_POWER_LOG_MOD (15) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_LPN_AUTO #define MYNEWT_VAL_BLE_MESH_LPN_AUTO (1) #endif @@ -858,6 +954,10 @@ #define MYNEWT_VAL_BLE_MESH_LPN_SCAN_LATENCY (10) #endif +#ifndef MYNEWT_VAL_BLE_MESH_MODEL_EXTENSIONS +#define MYNEWT_VAL_BLE_MESH_MODEL_EXTENSIONS (0) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_MODEL_GROUP_COUNT #define MYNEWT_VAL_BLE_MESH_MODEL_GROUP_COUNT (1) #endif @@ -866,10 +966,30 @@ #define MYNEWT_VAL_BLE_MESH_MODEL_KEY_COUNT (1) #endif +#ifndef MYNEWT_VAL_BLE_MESH_MODEL_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_MODEL_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_MODEL_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_MODEL_LOG_MOD (16) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_MSG_CACHE_SIZE #define MYNEWT_VAL_BLE_MESH_MSG_CACHE_SIZE (10) #endif +#ifndef MYNEWT_VAL_BLE_MESH_NET_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_NET_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_NET_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_NET_LOG_MOD (17) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_NODE_COUNT +#define MYNEWT_VAL_BLE_MESH_NODE_COUNT CONFIG_BT_NIMBLE_MESH_NODE_COUNT +#endif + #ifndef MYNEWT_VAL_BLE_MESH_NODE_ID_TIMEOUT #define MYNEWT_VAL_BLE_MESH_NODE_ID_TIMEOUT (60) #endif @@ -915,6 +1035,22 @@ #endif #endif +#ifndef MYNEWT_VAL_BLE_MESH_PROVISIONER +#ifdef CONFIG_BT_NIMBLE_MESH_PROVISIONER +#define MYNEWT_VAL_BLE_MESH_PROVISIONER (1) +#else +#define MYNEWT_VAL_BLE_MESH_PROVISIONER (0) +#endif +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_PROV_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_PROV_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_PROV_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_PROV_LOG_MOD (18) +#endif + /* Overridden by @apache-mynewt-nimble/nimble/host/mesh (defined by @apache-mynewt-nimble/nimble/host/mesh) */ #ifndef MYNEWT_VAL_BLE_MESH_PROXY #ifdef CONFIG_BT_NIMBLE_MESH_PROXY @@ -928,6 +1064,13 @@ #define MYNEWT_VAL_BLE_MESH_PROXY_FILTER_SIZE (1) #endif +#ifndef MYNEWT_VAL_BLE_MESH_PROXY_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_PROXY_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_PROXY_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_PROXY_LOG_MOD (19) +#endif #ifndef MYNEWT_VAL_BLE_MESH_RELAY #ifdef CONFIG_BT_NIMBLE_MESH_RELAY @@ -949,6 +1092,10 @@ #define MYNEWT_VAL_BLE_MESH_RX_SEG_MSG_COUNT (2) #endif +#ifndef MYNEWT_VAL_BLE_MESH_SEG_RETRANSMIT_ATTEMPTS +#define MYNEWT_VAL_BLE_MESH_SEG_RETRANSMIT_ATTEMPTS (4) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_SEQ_STORE_RATE #define MYNEWT_VAL_BLE_MESH_SEQ_STORE_RATE (128) #endif @@ -958,6 +1105,14 @@ #define MYNEWT_VAL_BLE_MESH_SETTINGS (0) #endif +#ifndef MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_MOD (20) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_SHELL #define MYNEWT_VAL_BLE_MESH_SHELL (0) #endif @@ -974,10 +1129,26 @@ #define MYNEWT_VAL_BLE_MESH_SUBNET_COUNT (1) #endif +#ifndef MYNEWT_VAL_BLE_MESH_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_MESH_SYSINIT_STAGE (500) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_SYSINIT_STAGE_SHELL +#define MYNEWT_VAL_BLE_MESH_SYSINIT_STAGE_SHELL (1000) +#endif + #ifndef MYNEWT_VAL_BLE_MESH_TESTING #define MYNEWT_VAL_BLE_MESH_TESTING (0) #endif +#ifndef MYNEWT_VAL_BLE_MESH_TRANS_LOG_LVL +#define MYNEWT_VAL_BLE_MESH_TRANS_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_MESH_TRANS_LOG_MOD +#define MYNEWT_VAL_BLE_MESH_TRANS_LOG_MOD (21) +#endif + /* Overridden by apps/blemesh (defined by @apache-mynewt-nimble/nimble/host/mesh) */ #ifndef MYNEWT_VAL_BLE_MESH_TX_SEG_MAX #define MYNEWT_VAL_BLE_MESH_TX_SEG_MAX (6) @@ -987,6 +1158,103 @@ #define MYNEWT_VAL_BLE_MESH_TX_SEG_MSG_COUNT (4) #endif +/*** @apache-mynewt-nimble/nimble/host/services/ans */ +#ifndef MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT +#define MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT (0) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_ANS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_ANS_SYSINIT_STAGE (303) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_ANS_UNR_ALERT_CAT +#define MYNEWT_VAL_BLE_SVC_ANS_UNR_ALERT_CAT (0) +#endif + +/*** @apache-mynewt-nimble/nimble/host/services/bas */ +#ifndef MYNEWT_VAL_BLE_SVC_BAS_BATTERY_LEVEL_NOTIFY_ENABLE +#define MYNEWT_VAL_BLE_SVC_BAS_BATTERY_LEVEL_NOTIFY_ENABLE (1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_BAS_BATTERY_LEVEL_READ_PERM +#define MYNEWT_VAL_BLE_SVC_BAS_BATTERY_LEVEL_READ_PERM (0) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_BAS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_BAS_SYSINIT_STAGE (303) +#endif + +/*** @apache-mynewt-nimble/nimble/host/services/dis */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_DEFAULT ("NimBLE") +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_READ_PERM (0) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_DIS_SYSINIT_STAGE (303) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_READ_PERM (-1) +#endif + /*** @apache-mynewt-nimble/nimble/host/services/gap */ #ifndef MYNEWT_VAL_BLE_SVC_GAP_APPEARANCE #define MYNEWT_VAL_BLE_SVC_GAP_APPEARANCE CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE @@ -1102,4 +1370,8 @@ #define MYNEWT_VAL_BLE_HCI_UART_STOP_BITS (1) #endif +#ifndef MYNEWT_VAL_NEWT_FEATURE_LOGCFG +#define MYNEWT_VAL_NEWT_FEATURE_LOGCFG (1) +#endif + #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_gap.h b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_gap.h index b4dbdb051..ed7fbb128 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_gap.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_gap.h @@ -128,6 +128,7 @@ struct hci_conn_update; #define BLE_GAP_EVENT_PERIODIC_REPORT 21 #define BLE_GAP_EVENT_PERIODIC_SYNC_LOST 22 #define BLE_GAP_EVENT_SCAN_REQ_RCVD 23 +#define BLE_GAP_EVENT_PERIODIC_TRANSFER 24 /*** Reason codes for the subscribe GAP event. */ @@ -390,7 +391,7 @@ struct ble_gap_ext_disc_desc { uint8_t length_data; /** Advertising data */ - uint8_t *data; + const uint8_t *data; /** Directed advertising address. Valid if BLE_HCI_ADV_DIRECT_MASK props is * set (BLE_ADDR_ANY otherwise). @@ -420,7 +421,7 @@ struct ble_gap_disc_desc { int8_t rssi; /** Advertising data */ - uint8_t *data; + const uint8_t *data; /** Directed advertising address. Valid for BLE_HCI_ADV_RPT_EVTYPE_DIR_IND * event type (BLE_ADDR_ANY otherwise). @@ -890,7 +891,7 @@ struct ble_gap_event { uint8_t data_length; /** Advertising data */ - uint8_t *data; + const uint8_t *data; } periodic_report; /** @@ -924,6 +925,47 @@ struct ble_gap_event { /** Address of scanner */ ble_addr_t scan_addr; } scan_req_rcvd; +#endif +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) + /** + * Represents a periodic advertising sync transfer received. Valid for + * the following event types: + * o BLE_GAP_EVENT_PERIODIC_TRANSFER + */ + struct { + /** BLE_ERR_SUCCESS on success or error code on failure. Sync handle + * is valid only for success. + */ + uint8_t status; + + /** Periodic sync handle */ + uint16_t sync_handle; + + /** Connection handle */ + uint16_t conn_handle; + + /** Service Data */ + uint16_t service_data; + + /** Advertising Set ID */ + uint8_t sid; + + /** Advertiser address */ + ble_addr_t adv_addr; + + /** Advertising PHY, can be one of following constants: + * - BLE_HCI_LE_PHY_1M + * - LE_HCI_LE_PHY_2M + * - BLE_HCI_LE_PHY_CODED + */ + uint8_t adv_phy; + + /** Periodic advertising interval */ + uint16_t per_adv_itvl; + + /** Advertiser clock accuracy */ + uint8_t adv_clk_accuracy; + } periodic_transfer; #endif }; }; @@ -1097,6 +1139,23 @@ int ble_gap_adv_set_fields(const struct ble_hs_adv_fields *rsp_fields); */ int ble_gap_adv_rsp_set_fields(const struct ble_hs_adv_fields *rsp_fields); +/** + * Configure LE Data Length in controller (OGF = 0x08, OCF = 0x0022). + * + * @param conn_handle Connection handle. + * @param tx_octets The preferred value of payload octets that the Controller + * should use for a new connection (Range + * 0x001B-0x00FB). + * @param tx_time The preferred maximum number of microseconds that the local Controller + * should use to transmit a single link layer packet + * (Range 0x0148-0x4290). + * + * @return 0 on success, + * other error code on failure. + */ +int ble_hs_hci_util_set_data_len(uint16_t conn_handle, uint16_t tx_octets, + uint16_t tx_time); + #if MYNEWT_VAL(BLE_EXT_ADV) /** @brief Extended advertising parameters */ struct ble_gap_ext_adv_params { @@ -1203,8 +1262,8 @@ int ble_gap_ext_adv_set_addr(uint8_t instance, const ble_addr_t *addr); * @param instance Instance ID * @param duration The duration of the advertisement procedure. On * expiration, the procedure ends and - * a BLE_HS_FOREVER event is reported. - * Units are milliseconds. Specify 0 for no + * a BLE_GAP_EVENT_ADV_COMPLETE event is reported. + * Units are 10 milliseconds. Specify 0 for no * expiration. * @params max_events Number of advertising events that should be sent * before advertising ends and @@ -1297,6 +1356,9 @@ struct ble_gap_periodic_sync_params { /** Synchronization timeout for the periodic advertising train in 10ms units */ uint16_t sync_timeout; + + /** If reports should be initially disabled when sync is created */ + unsigned int reports_disabled:1; }; /** @@ -1359,7 +1421,7 @@ int ble_gap_periodic_adv_set_data(uint8_t instance, struct os_mbuf *data); * * @return 0 on success; nonzero on failure. */ -int ble_gap_periodic_adv_create_sync(const ble_addr_t *addr, uint8_t adv_sid, +int ble_gap_periodic_adv_sync_create(const ble_addr_t *addr, uint8_t adv_sid, const struct ble_gap_periodic_sync_params *params, ble_gap_event_fn *cb, void *cb_arg); @@ -1368,7 +1430,7 @@ int ble_gap_periodic_adv_create_sync(const ble_addr_t *addr, uint8_t adv_sid, * * @return 0 on success; nonzero on failure. */ -int ble_gap_periodic_adv_create_sync_cancel(void); +int ble_gap_periodic_adv_sync_create_cancel(void); /** * Terminate synchronization procedure. @@ -1377,7 +1439,74 @@ int ble_gap_periodic_adv_create_sync_cancel(void); * * @return 0 on success; nonzero on failure. */ -int ble_gap_periodic_adv_terminate_sync(uint16_t sync_handle); +int ble_gap_periodic_adv_sync_terminate(uint16_t sync_handle); + +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) +/** + * Disable or enable periodic reports for specified sync. + * + * @param sync_handle Handle identifying synchronization. + * @param enable If reports should be enabled. + * + * @return 0 on success; nonzero on failure. + */ +int ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, bool enable); + +/** + * Initialize sync transfer procedure for specified handles. + * + * This allows to transfer periodic sync to which host is synchronized. + * + * @param sync_handle Handle identifying synchronization. + * @param conn_handle Handle identifying connection. + * @param service_data Sync transfer service data + * + * @return 0 on success; nonzero on failure. + */ +int ble_gap_periodic_adv_sync_transfer(uint16_t sync_handle, + uint16_t conn_handle, + uint16_t service_data); + +/** + * Initialize set info transfer procedure for specified handles. + * + * This allows to transfer periodic sync which is being advertised by host. + * + * @param instance Advertising instance with periodic adv enabled. + * @param conn_handle Handle identifying connection. + * @param service_data Sync transfer service data + * + * @return 0 on success; nonzero on failure. + */ +int ble_gap_periodic_adv_sync_set_info(uint8_t instance, + uint16_t conn_handle, + uint16_t service_data); + +/** + * Enables or disables sync transfer reception on specified connection. + * When sync transfer arrives, BLE_GAP_EVENT_PERIODIC_TRANSFER is sent to the user. + * After that, sync transfer reception on that connection is terminated and user needs + * to call this API again when expect to receive next sync transfers. + * + * Note: If ACL connection gets disconnected before sync transfer arrived, user will + * not receive BLE_GAP_EVENT_PERIODIC_TRANSFER. Instead, sync transfer reception + * is terminated by the host automatically. + * + * @param conn_handle Handle identifying connection. + * @param params Parameters for enabled sync transfer reception. + * Specify NULL to disable reception. + * @param cb The callback to associate with this synchronization + * procedure. BLE_GAP_EVENT_PERIODIC_REPORT events + * are reported only by this callback. + * @param cb_arg The optional argument to pass to the callback + * function. + * + * @return 0 on success; nonzero on failure. + */ +int ble_gap_periodic_adv_sync_receive(uint16_t conn_handle, + const struct ble_gap_periodic_sync_params *params, + ble_gap_event_fn *cb, void *cb_arg); +#endif /** * Add peer device to periodic synchronization list. @@ -1435,7 +1564,8 @@ int ble_gap_read_periodic_adv_list_size(uint8_t *per_adv_list_size); * On expiration, the procedure ends and a * BLE_GAP_EVENT_DISC_COMPLETE event is * reported. Units are milliseconds. Specify - * BLE_HS_FOREVER for no expiration. + * BLE_HS_FOREVER for no expiration. Specify + * 0 to use stack defaults. * @param disc_params Additional arguments specifying the particulars * of the discovery procedure. * @param cb The callback to associate with this discovery @@ -1661,6 +1791,15 @@ int ble_gap_terminate(uint16_t conn_handle, uint8_t hci_reason); */ int ble_gap_wl_set(const ble_addr_t *addrs, uint8_t white_list_count); +/** + * Removes the address from controller's white list. + * + * @param addrs The entry to be removed from the white list. + * + * @return 0 on success; nonzero on failure. + */ +int ble_gap_wl_tx_rmv(const ble_addr_t *addrs); + /** * Initiates a connection parameter update procedure. * diff --git a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_adv.h b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_adv.h index b0d85c02a..e3b6ea709 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_adv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_adv.h @@ -35,7 +35,7 @@ extern "C" { struct ble_hs_adv_field { uint8_t length; uint8_t type; - uint8_t value[]; + uint8_t value[0]; }; typedef int (* ble_hs_adv_parse_func_t) (const struct ble_hs_adv_field *, @@ -46,22 +46,22 @@ struct ble_hs_adv_fields { uint8_t flags; /*** 0x02,0x03 - 16-bit service class UUIDs. */ - ble_uuid16_t *uuids16; + const ble_uuid16_t *uuids16; uint8_t num_uuids16; unsigned uuids16_is_complete:1; /*** 0x04,0x05 - 32-bit service class UUIDs. */ - ble_uuid32_t *uuids32; + const ble_uuid32_t *uuids32; uint8_t num_uuids32; unsigned uuids32_is_complete:1; /*** 0x06,0x07 - 128-bit service class UUIDs. */ - ble_uuid128_t *uuids128; + const ble_uuid128_t *uuids128; uint8_t num_uuids128; unsigned uuids128_is_complete:1; /*** 0x08,0x09 - Local name. */ - uint8_t *name; + const uint8_t *name; uint8_t name_len; unsigned name_is_complete:1; @@ -70,14 +70,14 @@ struct ble_hs_adv_fields { unsigned tx_pwr_lvl_is_present:1; /*** 0x0d - Slave connection interval range. */ - uint8_t *slave_itvl_range; + const uint8_t *slave_itvl_range; /*** 0x16 - Service data - 16-bit UUID. */ - uint8_t *svc_data_uuid16; + const uint8_t *svc_data_uuid16; uint8_t svc_data_uuid16_len; /*** 0x17 - Public target address. */ - uint8_t *public_tgt_addr; + const uint8_t *public_tgt_addr; uint8_t num_public_tgt_addrs; /*** 0x19 - Appearance. */ @@ -89,19 +89,19 @@ struct ble_hs_adv_fields { unsigned adv_itvl_is_present:1; /*** 0x20 - Service data - 32-bit UUID. */ - uint8_t *svc_data_uuid32; + const uint8_t *svc_data_uuid32; uint8_t svc_data_uuid32_len; /*** 0x21 - Service data - 128-bit UUID. */ - uint8_t *svc_data_uuid128; + const uint8_t *svc_data_uuid128; uint8_t svc_data_uuid128_len; /*** 0x24 - URI. */ - uint8_t *uri; + const uint8_t *uri; uint8_t uri_len; /*** 0xff - Manufacturer specific data. */ - uint8_t *mfg_data; + const uint8_t *mfg_data; uint8_t mfg_data_len; }; @@ -164,8 +164,8 @@ int ble_hs_adv_set_fields_mbuf(const struct ble_hs_adv_fields *adv_fields, int ble_hs_adv_set_fields(const struct ble_hs_adv_fields *adv_fields, uint8_t *dst, uint8_t *dst_len, uint8_t max_len); -int ble_hs_adv_parse_fields(struct ble_hs_adv_fields *adv_fields, uint8_t *src, - uint8_t src_len); +int ble_hs_adv_parse_fields(struct ble_hs_adv_fields *adv_fields, + const uint8_t *src, uint8_t src_len); int ble_hs_adv_parse(const uint8_t *data, uint8_t length, ble_hs_adv_parse_func_t func, void *user_data); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_log.h b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_log.h index 3fb1db978..8d0a4596e 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_log.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_hs_log.h @@ -22,6 +22,11 @@ #include "modlog/modlog.h" +/* Only include the logcfg header if this version of newt can generate it. */ +#if MYNEWT_VAL(NEWT_FEATURE_LOGCFG) +#include "logcfg/logcfg.h" +#endif + #ifdef __cplusplus extern "C" { #endif @@ -29,13 +34,13 @@ extern "C" { struct os_mbuf; #define BLE_HS_LOG(lvl, ...) \ - MODLOG_ ## lvl(LOG_MODULE_NIMBLE_HOST, __VA_ARGS__) + BLE_HS_LOG_ ## lvl(__VA_ARGS__) #define BLE_HS_LOG_ADDR(lvl, addr) \ - MODLOG_ ## lvl(LOG_MODULE_NIMBLE_HOST, \ - "%02x:%02x:%02x:%02x:%02x:%02x", \ - (addr)[5], (addr)[4], (addr)[3], \ - (addr)[2], (addr)[1], (addr)[0]) + BLE_HS_LOG_ ## lvl("%02x:%02x:%02x:%02x:%02x:%02x", \ + (addr)[5], (addr)[4], (addr)[3], \ + (addr)[2], (addr)[1], (addr)[0]) + void ble_hs_log_mbuf(const struct os_mbuf *om); void ble_hs_log_flat_buf(const void *data, int len); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_l2cap.h b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_l2cap.h index 644bd9d0d..aef9682cc 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_l2cap.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_l2cap.h @@ -51,10 +51,14 @@ struct ble_hs_conn; #define BLE_L2CAP_SIG_OP_MOVE_CHAN_CONF_RSP 0x11 #define BLE_L2CAP_SIG_OP_UPDATE_REQ 0x12 #define BLE_L2CAP_SIG_OP_UPDATE_RSP 0x13 -#define BLE_L2CAP_SIG_OP_CREDIT_CONNECT_REQ 0x14 -#define BLE_L2CAP_SIG_OP_CREDIT_CONNECT_RSP 0x15 +#define BLE_L2CAP_SIG_OP_LE_CREDIT_CONNECT_REQ 0x14 +#define BLE_L2CAP_SIG_OP_LE_CREDIT_CONNECT_RSP 0x15 #define BLE_L2CAP_SIG_OP_FLOW_CTRL_CREDIT 0x16 -#define BLE_L2CAP_SIG_OP_MAX 0x17 +#define BLE_L2CAP_SIG_OP_CREDIT_CONNECT_REQ 0x17 +#define BLE_L2CAP_SIG_OP_CREDIT_CONNECT_RSP 0x18 +#define BLE_L2CAP_SIG_OP_CREDIT_RECONFIG_REQ 0x19 +#define BLE_L2CAP_SIG_OP_CREDIT_RECONFIG_RSP 0x1A +#define BLE_L2CAP_SIG_OP_MAX 0x1B #define BLE_L2CAP_SIG_ERR_CMD_NOT_UNDERSTOOD 0x0000 #define BLE_L2CAP_SIG_ERR_MTU_EXCEEDED 0x0001 @@ -70,12 +74,21 @@ struct ble_hs_conn; #define BLE_L2CAP_COC_ERR_INVALID_SOURCE_CID 0x0009 #define BLE_L2CAP_COC_ERR_SOURCE_CID_ALREADY_USED 0x000A #define BLE_L2CAP_COC_ERR_UNACCEPTABLE_PARAMETERS 0x000B +#define BLE_L2CAP_COC_ERR_INVALID_PARAMETERS 0x000C + +#define BLE_L2CAP_ERR_RECONFIG_SUCCEED 0x0000 +#define BLE_L2CAP_ERR_RECONFIG_REDUCTION_MTU_NOT_ALLOWED 0x0001 +#define BLE_L2CAP_ERR_RECONFIG_REDUCTION_MPS_NOT_ALLOWED 0x0002 +#define BLE_L2CAP_ERR_RECONFIG_INVALID_DCID 0x0003 +#define BLE_L2CAP_ERR_RECONFIG_UNACCAPTED_PARAM 0x0004 #define BLE_L2CAP_EVENT_COC_CONNECTED 0 #define BLE_L2CAP_EVENT_COC_DISCONNECTED 1 #define BLE_L2CAP_EVENT_COC_ACCEPT 2 #define BLE_L2CAP_EVENT_COC_DATA_RECEIVED 3 #define BLE_L2CAP_EVENT_COC_TX_UNSTALLED 4 +#define BLE_L2CAP_EVENT_COC_RECONFIG_COMPLETED 5 +#define BLE_L2CAP_EVENT_COC_PEER_RECONFIGURED 6 typedef void ble_l2cap_sig_update_fn(uint16_t conn_handle, int status, void *arg); @@ -196,11 +209,44 @@ struct ble_l2cap_event { */ int status; } tx_unstalled; + + /** + * Represents reconfiguration done. Valid for the following event + * types: + * o BLE_L2CAP_EVENT_COC_RECONFIG_COMPLETED + * o BLE_L2CAP_EVENT_COC_PEER_RECONFIGURED + */ + struct { + /** + * The status of the reconfiguration attempt; + * o 0: the reconfiguration was successfully done. + * o BLE host error code: the reconfiguration attempt failed for + * the specified reason. + */ + int status; + + /** Connection handle of the relevant connection */ + uint16_t conn_handle; + + /** The L2CAP channel of the relevant L2CAP connection. */ + struct ble_l2cap_chan *chan; + } reconfigured; }; }; +struct ble_l2cap_chan_info { + uint16_t scid; + uint16_t dcid; + uint16_t our_l2cap_mtu; + uint16_t peer_l2cap_mtu; + uint16_t psm; + uint16_t our_coc_mtu; + uint16_t peer_coc_mtu; +}; + typedef int ble_l2cap_event_fn(struct ble_l2cap_event *event, void *arg); + uint16_t ble_l2cap_get_conn_handle(struct ble_l2cap_chan *chan); int ble_l2cap_create_server(uint16_t psm, uint16_t mtu, ble_l2cap_event_fn *cb, void *cb_arg); @@ -211,10 +257,7 @@ int ble_l2cap_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, int ble_l2cap_disconnect(struct ble_l2cap_chan *chan); int ble_l2cap_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx); int ble_l2cap_recv_ready(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_rx); -int ble_l2cap_get_scid(struct ble_l2cap_chan *chan); -int ble_l2cap_get_dcid(struct ble_l2cap_chan *chan); -int ble_l2cap_get_our_mtu(struct ble_l2cap_chan *chan); -int ble_l2cap_get_peer_mtu(struct ble_l2cap_chan *chan); +int ble_l2cap_get_chan_info(struct ble_l2cap_chan *chan, struct ble_l2cap_chan_info *chan_info); #ifdef __cplusplus } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_sm.h b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_sm.h index 9bd25adfc..ceebb8564 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/host/ble_sm.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/host/ble_sm.h @@ -84,7 +84,16 @@ extern "C" { #define BLE_SM_IOACT_INPUT 2 #define BLE_SM_IOACT_DISP 3 #define BLE_SM_IOACT_NUMCMP 4 -#define BLE_SM_IOACT_MAX_PLUS_ONE 5 +#define BLE_SM_IOACT_OOB_SC 5 +#define BLE_SM_IOACT_MAX_PLUS_ONE 6 + +struct ble_sm_sc_oob_data { + /** Random Number. */ + uint8_t r[16]; + + /** Confirm Value. */ + uint8_t c[16]; +}; struct ble_sm_io { uint8_t action; @@ -92,9 +101,15 @@ struct ble_sm_io { uint32_t passkey; uint8_t oob[16]; uint8_t numcmp_accept; + struct { + struct ble_sm_sc_oob_data *local; + struct ble_sm_sc_oob_data *remote; + } oob_sc_data; }; }; +int ble_sm_sc_oob_generate_data(struct ble_sm_sc_oob_data *oob_data); + #if NIMBLE_BLE_SM int ble_sm_inject_io(uint16_t conn_handle, struct ble_sm_io *pkey); #else diff --git a/lib/libesp32_div/NimBLE-Arduino/src/log_common/ignore.h b/lib/libesp32_div/NimBLE-Arduino/src/log_common/ignore.h new file mode 100644 index 000000000..46282a029 --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/src/log_common/ignore.h @@ -0,0 +1,64 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#ifndef H_IGNORE_ +#define H_IGNORE_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * These macros prevent the "set but not used" warnings for log writes below + * the log level. + */ + +#define IGN_1(X) ((void)(X)) +#define IGN_2(X, ...) ((void)(X));IGN_1(__VA_ARGS__) +#define IGN_3(X, ...) ((void)(X));IGN_2(__VA_ARGS__) +#define IGN_4(X, ...) ((void)(X));IGN_3(__VA_ARGS__) +#define IGN_5(X, ...) ((void)(X));IGN_4(__VA_ARGS__) +#define IGN_6(X, ...) ((void)(X));IGN_5(__VA_ARGS__) +#define IGN_7(X, ...) ((void)(X));IGN_6(__VA_ARGS__) +#define IGN_8(X, ...) ((void)(X));IGN_7(__VA_ARGS__) +#define IGN_9(X, ...) ((void)(X));IGN_8(__VA_ARGS__) +#define IGN_10(X, ...) ((void)(X));IGN_9(__VA_ARGS__) +#define IGN_11(X, ...) ((void)(X));IGN_10(__VA_ARGS__) +#define IGN_12(X, ...) ((void)(X));IGN_11(__VA_ARGS__) +#define IGN_13(X, ...) ((void)(X));IGN_12(__VA_ARGS__) +#define IGN_14(X, ...) ((void)(X));IGN_13(__VA_ARGS__) +#define IGN_15(X, ...) ((void)(X));IGN_14(__VA_ARGS__) +#define IGN_16(X, ...) ((void)(X));IGN_15(__VA_ARGS__) +#define IGN_17(X, ...) ((void)(X));IGN_16(__VA_ARGS__) +#define IGN_18(X, ...) ((void)(X));IGN_17(__VA_ARGS__) +#define IGN_19(X, ...) ((void)(X));IGN_18(__VA_ARGS__) +#define IGN_20(X, ...) ((void)(X));IGN_19(__VA_ARGS__) + +#define GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, \ + _13, _14, _15, _16, _17, _18, _19, _20, NAME, ...) NAME +#define IGNORE(...) \ + GET_MACRO(__VA_ARGS__, IGN_20, IGN_19, IGN_18, IGN_17, IGN_16, IGN_15, \ + IGN_14, IGN_13, IGN_12, IGN_11, IGN_10, IGN_9, IGN_8, IGN_7, \ + IGN_6, IGN_5, IGN_4, IGN_3, IGN_2, IGN_1)(__VA_ARGS__) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/log_common/log_common.h similarity index 72% rename from lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg_priv.h rename to lib/libesp32_div/NimBLE-Arduino/src/log_common/log_common.h index 4d4390f92..f13a61ad9 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/log_common/log_common.h @@ -17,18 +17,26 @@ * under the License. */ -#ifndef H_BLE_HS_DBG_PRIV_ -#define H_BLE_HS_DBG_PRIV_ +#ifndef H_LOG_COMMON_ +#define H_LOG_COMMON_ + +#include "log_common/ignore.h" #ifdef __cplusplus extern "C" { #endif -void ble_hs_dbg_event_disp(uint8_t *evbuf); -void ble_hs_dbg_set_sync_state(uint8_t sync_state); +#define LOG_LEVEL_DEBUG (0) +#define LOG_LEVEL_INFO (1) +#define LOG_LEVEL_WARN (2) +#define LOG_LEVEL_ERROR (3) +#define LOG_LEVEL_CRITICAL (4) +#define LOG_LEVEL_NONE (5) +/* Up to 7 custom log levels. */ +#define LOG_LEVEL_MAX (15) #ifdef __cplusplus } #endif -#endif /* H_HOST_DBG_ */ +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/logcfg/logcfg.h b/lib/libesp32_div/NimBLE-Arduino/src/logcfg/logcfg.h new file mode 100644 index 000000000..764f87f27 --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/src/logcfg/logcfg.h @@ -0,0 +1,147 @@ +/** + * This file was generated by Apache newt version: 1.8.0-dev + */ + +#ifndef H_MYNEWT_LOGCFG_ +#define H_MYNEWT_LOGCFG_ + +#include "modlog/modlog.h" +#include "log_common/log_common.h" + +#if (MYNEWT_VAL(BLE_HS_LOG_LVL) == LOG_LEVEL_DEBUG) +#define BLE_HS_LOG_DEBUG(...) MODLOG_DEBUG(4, __VA_ARGS__) +#else +#define BLE_HS_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#endif + +#if (MYNEWT_VAL(BLE_HS_LOG_LVL) <= LOG_LEVEL_INFO) +#define BLE_HS_LOG_INFO(...) MODLOG_INFO(4, __VA_ARGS__) +#else +#define BLE_HS_LOG_INFO(...) IGNORE(__VA_ARGS__) +#endif + +#if (MYNEWT_VAL(BLE_HS_LOG_LVL) <= LOG_LEVEL_WARN) +#define BLE_HS_LOG_WARN(...) MODLOG_WARN(4, __VA_ARGS__) +#else +#define BLE_HS_LOG_WARN(...) IGNORE(__VA_ARGS__) +#endif + +#if (MYNEWT_VAL(BLE_HS_LOG_LVL) <= LOG_LEVEL_ERROR) +#define BLE_HS_LOG_ERROR(...) MODLOG_ERROR(4, __VA_ARGS__) +#else +#define BLE_HS_LOG_ERROR(...) IGNORE(__VA_ARGS__) +#endif + +#if (MYNEWT_VAL(BLE_HS_LOG_LVL) <= LOG_LEVEL_CRITICAL) +#define BLE_HS_LOG_CRITICAL(...) MODLOG_CRITICAL(4, __VA_ARGS__) +#else +#define BLE_HS_LOG_CRITICAL(...) IGNORE(__VA_ARGS__) +#endif + +#define BLE_HS_LOG_DISABLED(...) MODLOG_DISABLED(4, __VA_ARGS__) + +#define BLE_MESH_ACCESS_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_ACCESS_LOG_INFO(...) MODLOG_INFO(10, __VA_ARGS__) +#define BLE_MESH_ACCESS_LOG_WARN(...) MODLOG_WARN(10, __VA_ARGS__) +#define BLE_MESH_ACCESS_LOG_ERROR(...) MODLOG_ERROR(10, __VA_ARGS__) +#define BLE_MESH_ACCESS_LOG_CRITICAL(...) MODLOG_CRITICAL(10, __VA_ARGS__) +#define BLE_MESH_ACCESS_LOG_DISABLED(...) MODLOG_DISABLED(10, __VA_ARGS__) + +#define BLE_MESH_ADV_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_ADV_LOG_INFO(...) MODLOG_INFO(11, __VA_ARGS__) +#define BLE_MESH_ADV_LOG_WARN(...) MODLOG_WARN(11, __VA_ARGS__) +#define BLE_MESH_ADV_LOG_ERROR(...) MODLOG_ERROR(11, __VA_ARGS__) +#define BLE_MESH_ADV_LOG_CRITICAL(...) MODLOG_CRITICAL(11, __VA_ARGS__) +#define BLE_MESH_ADV_LOG_DISABLED(...) MODLOG_DISABLED(11, __VA_ARGS__) + +#define BLE_MESH_BEACON_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_BEACON_LOG_INFO(...) MODLOG_INFO(12, __VA_ARGS__) +#define BLE_MESH_BEACON_LOG_WARN(...) MODLOG_WARN(12, __VA_ARGS__) +#define BLE_MESH_BEACON_LOG_ERROR(...) MODLOG_ERROR(12, __VA_ARGS__) +#define BLE_MESH_BEACON_LOG_CRITICAL(...) MODLOG_CRITICAL(12, __VA_ARGS__) +#define BLE_MESH_BEACON_LOG_DISABLED(...) MODLOG_DISABLED(12, __VA_ARGS__) + +#define BLE_MESH_CRYPTO_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_CRYPTO_LOG_INFO(...) MODLOG_INFO(13, __VA_ARGS__) +#define BLE_MESH_CRYPTO_LOG_WARN(...) MODLOG_WARN(13, __VA_ARGS__) +#define BLE_MESH_CRYPTO_LOG_ERROR(...) MODLOG_ERROR(13, __VA_ARGS__) +#define BLE_MESH_CRYPTO_LOG_CRITICAL(...) MODLOG_CRITICAL(13, __VA_ARGS__) +#define BLE_MESH_CRYPTO_LOG_DISABLED(...) MODLOG_DISABLED(13, __VA_ARGS__) + +#define BLE_MESH_FRIEND_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_FRIEND_LOG_INFO(...) MODLOG_INFO(14, __VA_ARGS__) +#define BLE_MESH_FRIEND_LOG_WARN(...) MODLOG_WARN(14, __VA_ARGS__) +#define BLE_MESH_FRIEND_LOG_ERROR(...) MODLOG_ERROR(14, __VA_ARGS__) +#define BLE_MESH_FRIEND_LOG_CRITICAL(...) MODLOG_CRITICAL(14, __VA_ARGS__) +#define BLE_MESH_FRIEND_LOG_DISABLED(...) MODLOG_DISABLED(14, __VA_ARGS__) + +#define BLE_MESH_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_LOG_INFO(...) MODLOG_INFO(9, __VA_ARGS__) +#define BLE_MESH_LOG_WARN(...) MODLOG_WARN(9, __VA_ARGS__) +#define BLE_MESH_LOG_ERROR(...) MODLOG_ERROR(9, __VA_ARGS__) +#define BLE_MESH_LOG_CRITICAL(...) MODLOG_CRITICAL(9, __VA_ARGS__) +#define BLE_MESH_LOG_DISABLED(...) MODLOG_DISABLED(9, __VA_ARGS__) + +#define BLE_MESH_LOW_POWER_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_LOW_POWER_LOG_INFO(...) MODLOG_INFO(15, __VA_ARGS__) +#define BLE_MESH_LOW_POWER_LOG_WARN(...) MODLOG_WARN(15, __VA_ARGS__) +#define BLE_MESH_LOW_POWER_LOG_ERROR(...) MODLOG_ERROR(15, __VA_ARGS__) +#define BLE_MESH_LOW_POWER_LOG_CRITICAL(...) MODLOG_CRITICAL(15, __VA_ARGS__) +#define BLE_MESH_LOW_POWER_LOG_DISABLED(...) MODLOG_DISABLED(15, __VA_ARGS__) + +#define BLE_MESH_MODEL_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_MODEL_LOG_INFO(...) MODLOG_INFO(16, __VA_ARGS__) +#define BLE_MESH_MODEL_LOG_WARN(...) MODLOG_WARN(16, __VA_ARGS__) +#define BLE_MESH_MODEL_LOG_ERROR(...) MODLOG_ERROR(16, __VA_ARGS__) +#define BLE_MESH_MODEL_LOG_CRITICAL(...) MODLOG_CRITICAL(16, __VA_ARGS__) +#define BLE_MESH_MODEL_LOG_DISABLED(...) MODLOG_DISABLED(16, __VA_ARGS__) + +#define BLE_MESH_NET_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_NET_LOG_INFO(...) MODLOG_INFO(17, __VA_ARGS__) +#define BLE_MESH_NET_LOG_WARN(...) MODLOG_WARN(17, __VA_ARGS__) +#define BLE_MESH_NET_LOG_ERROR(...) MODLOG_ERROR(17, __VA_ARGS__) +#define BLE_MESH_NET_LOG_CRITICAL(...) MODLOG_CRITICAL(17, __VA_ARGS__) +#define BLE_MESH_NET_LOG_DISABLED(...) MODLOG_DISABLED(17, __VA_ARGS__) + +#define BLE_MESH_PROV_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_PROV_LOG_INFO(...) MODLOG_INFO(18, __VA_ARGS__) +#define BLE_MESH_PROV_LOG_WARN(...) MODLOG_WARN(18, __VA_ARGS__) +#define BLE_MESH_PROV_LOG_ERROR(...) MODLOG_ERROR(18, __VA_ARGS__) +#define BLE_MESH_PROV_LOG_CRITICAL(...) MODLOG_CRITICAL(18, __VA_ARGS__) +#define BLE_MESH_PROV_LOG_DISABLED(...) MODLOG_DISABLED(18, __VA_ARGS__) + +#define BLE_MESH_PROXY_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_PROXY_LOG_INFO(...) MODLOG_INFO(19, __VA_ARGS__) +#define BLE_MESH_PROXY_LOG_WARN(...) MODLOG_WARN(19, __VA_ARGS__) +#define BLE_MESH_PROXY_LOG_ERROR(...) MODLOG_ERROR(19, __VA_ARGS__) +#define BLE_MESH_PROXY_LOG_CRITICAL(...) MODLOG_CRITICAL(19, __VA_ARGS__) +#define BLE_MESH_PROXY_LOG_DISABLED(...) MODLOG_DISABLED(19, __VA_ARGS__) + +#define BLE_MESH_SETTINGS_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_SETTINGS_LOG_INFO(...) MODLOG_INFO(20, __VA_ARGS__) +#define BLE_MESH_SETTINGS_LOG_WARN(...) MODLOG_WARN(20, __VA_ARGS__) +#define BLE_MESH_SETTINGS_LOG_ERROR(...) MODLOG_ERROR(20, __VA_ARGS__) +#define BLE_MESH_SETTINGS_LOG_CRITICAL(...) MODLOG_CRITICAL(20, __VA_ARGS__) +#define BLE_MESH_SETTINGS_LOG_DISABLED(...) MODLOG_DISABLED(20, __VA_ARGS__) + +#define BLE_MESH_TRANS_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define BLE_MESH_TRANS_LOG_INFO(...) MODLOG_INFO(21, __VA_ARGS__) +#define BLE_MESH_TRANS_LOG_WARN(...) MODLOG_WARN(21, __VA_ARGS__) +#define BLE_MESH_TRANS_LOG_ERROR(...) MODLOG_ERROR(21, __VA_ARGS__) +#define BLE_MESH_TRANS_LOG_CRITICAL(...) MODLOG_CRITICAL(21, __VA_ARGS__) +#define BLE_MESH_TRANS_LOG_DISABLED(...) MODLOG_DISABLED(21, __VA_ARGS__) +#define DFLT_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define DFLT_LOG_INFO(...) MODLOG_INFO(0, __VA_ARGS__) +#define DFLT_LOG_WARN(...) MODLOG_WARN(0, __VA_ARGS__) +#define DFLT_LOG_ERROR(...) MODLOG_ERROR(0, __VA_ARGS__) +#define DFLT_LOG_CRITICAL(...) MODLOG_CRITICAL(0, __VA_ARGS__) +#define DFLT_LOG_DISABLED(...) MODLOG_DISABLED(0, __VA_ARGS__) + +#define MFG_LOG_DEBUG(...) IGNORE(__VA_ARGS__) +#define MFG_LOG_INFO(...) IGNORE(__VA_ARGS__) +#define MFG_LOG_WARN(...) IGNORE(__VA_ARGS__) +#define MFG_LOG_ERROR(...) IGNORE(__VA_ARGS__) +#define MFG_LOG_CRITICAL(...) IGNORE(__VA_ARGS__) +#define MFG_LOG_DISABLED(...) MODLOG_DISABLED(128, __VA_ARGS__) + +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/access.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/access.h index 71ca34e2d..1f99f412e 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/access.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/access.h @@ -29,6 +29,12 @@ extern "C" { #define BT_MESH_KEY_UNUSED 0xffff #define BT_MESH_KEY_DEV 0xfffe +#define BT_MESH_KEY_DEV_LOCAL BT_MESH_KEY_DEV +#define BT_MESH_KEY_DEV_REMOTE 0xfffd +#define BT_MESH_KEY_DEV_ANY 0xfffc + +#define BT_MESH_IS_DEV_KEY(key) (key == BT_MESH_KEY_DEV_LOCAL || \ + key == BT_MESH_KEY_DEV_REMOTE) /** Helper to define a mesh element within an array. * @@ -137,11 +143,14 @@ struct bt_mesh_msg_ctx { /** Destination address of a received message. Not used for sending. */ u16_t recv_dst; + /** RSSI of received packet. Not used for sending. */ + s8_t recv_rssi; + /** Received TTL value. Not used for sending. */ - u8_t recv_ttl:7; + u8_t recv_ttl; /** Force sending reliably by using segment acknowledgement */ - u8_t send_rel:1; + bool send_rel; /** TTL, or BT_MESH_TTL_DEFAULT for default TTL. */ u8_t send_ttl; @@ -171,7 +180,66 @@ struct bt_mesh_model_op { /** Helper to define an empty model array */ #define BT_MESH_MODEL_NONE ((struct bt_mesh_model []){}) -#define BT_MESH_MODEL(_id, _op, _pub, _user_data) \ +/** Length of a short Mesh MIC. */ +#define BT_MESH_MIC_SHORT 4 +/** Length of a long Mesh MIC. */ +#define BT_MESH_MIC_LONG 8 + +/** @def BT_MESH_MODEL_OP_LEN + * + * @brief Helper to determine the length of an opcode. + * + * @param _op Opcode. + */ +#define BT_MESH_MODEL_OP_LEN(_op) ((_op) <= 0xff ? 1 : (_op) <= 0xffff ? 2 : 3) + +/** @def BT_MESH_MODEL_BUF_LEN + * + * @brief Helper for model message buffer length. + * + * Returns the length of a Mesh model message buffer, including the opcode + * length and a short MIC. + * + * @param _op Opcode of the message. + * @param _payload_len Length of the model payload. + */ +#define BT_MESH_MODEL_BUF_LEN(_op, _payload_len) \ + (BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_SHORT) + +/** @def BT_MESH_MODEL_BUF_LEN_LONG_MIC + * + * @brief Helper for model message buffer length. + * + * Returns the length of a Mesh model message buffer, including the opcode + * length and a long MIC. + * + * @param _op Opcode of the message. + * @param _payload_len Length of the model payload. + */ +#define BT_MESH_MODEL_BUF_LEN_LONG_MIC(_op, _payload_len) \ + (BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_LONG) + +/** @def BT_MESH_MODEL_BUF_DEFINE + * + * @brief Define a Mesh model message buffer using @ref NET_BUF_SIMPLE. + * + * @param _op Opcode of the message. + * @param _payload_len Length of the model message payload. + */ +#define BT_MESH_MODEL_BUF(_op, _payload_len) \ + NET_BUF_SIMPLE(BT_MESH_MODEL_BUF_LEN(_op, (_payload_len))) + +/** @def BT_MESH_MODEL_CB + * + * @brief Composition data SIG model entry with callback functions. + * + * @param _id Model ID. + * @param _op Array of model opcode handlers. + * @param _pub Model publish parameters. + * @param _user_data User data for the model. + * @param _cb Callback structure, or NULL to keep no callbacks. + */ +#define BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, _cb) \ { \ .id = (_id), \ .op = _op, \ @@ -181,9 +249,21 @@ struct bt_mesh_model_op { .groups = { [0 ... (CONFIG_BT_MESH_MODEL_GROUP_COUNT - 1)] = \ BT_MESH_ADDR_UNASSIGNED }, \ .user_data = _user_data, \ + .cb = _cb, \ } -#define BT_MESH_MODEL_VND(_company, _id, _op, _pub, _user_data) \ +/** @def BT_MESH_MODEL_VND_CB + * + * @brief Composition data vendor model entry with callback functions. + * + * @param _company Company ID. + * @param _id Model ID. + * @param _op Array of model opcode handlers. + * @param _pub Model publish parameters. + * @param _user_data User data for the model. + * @param _cb Callback structure, or NULL to keep no callbacks. + */ +#define BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, _cb) \ { \ .vnd.company = (_company), \ .vnd.id = (_id), \ @@ -194,8 +274,35 @@ struct bt_mesh_model_op { .groups = { [0 ... (CONFIG_BT_MESH_MODEL_GROUP_COUNT - 1)] = \ BT_MESH_ADDR_UNASSIGNED }, \ .user_data = _user_data, \ + .cb = _cb, \ } + +/** @def BT_MESH_MODEL + * + * @brief Composition data SIG model entry. + * + * @param _id Model ID. + * @param _op Array of model opcode handlers. + * @param _pub Model publish parameters. + * @param _user_data User data for the model. + */ +#define BT_MESH_MODEL(_id, _op, _pub, _user_data) \ + BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, NULL) + +/** @def BT_MESH_MODEL_VND + * + * @brief Composition data vendor model entry. + * + * @param _company Company ID. + * @param _id Model ID. + * @param _op Array of model opcode handlers. + * @param _pub Model publish parameters. + * @param _user_data User data for the model. + */ +#define BT_MESH_MODEL_VND(_company, _id, _op, _pub, _user_data) \ + BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, NULL) + /** @def BT_MESH_TRANSMIT * * @brief Encode transmission count & interval steps. @@ -276,6 +383,7 @@ struct bt_mesh_model_pub { u8_t period; /**< Publish Period. */ u8_t period_div:4, /**< Divisor for the Period. */ cred:1, /**< Friendship Credentials Flag. */ + fast_period:1,/**< Use FastPeriodDivisor */ count:3; /**< Retransmissions left. */ u32_t period_start; /**< Start of the current period. */ @@ -317,6 +425,52 @@ struct bt_mesh_model_pub { struct k_delayed_work timer; }; +/** Model callback functions. */ +struct bt_mesh_model_cb { + /** @brief Set value handler of user data tied to the model. + * + * @sa settings_handler::h_set + * + * @param model Model to set the persistent data of. + * @param val Data from the backend. + * + * @return 0 on success, error otherwise. + */ + int (*const settings_set)(struct bt_mesh_model *model, char *val); + + /** @brief Callback called when all settings have been loaded. + * + * This handler gets called after the settings have been loaded in + * full. + * + * @sa settings_handler::h_commit + * + * @param model Model this callback belongs to. + * + * @return 0 on success, error otherwise. + */ + int (*const settings_commit)(struct bt_mesh_model *model); + + /** @brief Model init callback. + * + * Called on every model instance during mesh initialization. + * + * @param model Model to be initialized. + * + * @return 0 on success, error otherwise. + */ + int (*const init)(struct bt_mesh_model *model); + + /** @brief Model reset callback. + * + * Called when the mesh node is reset. All model data is deleted on + * reset, and the model should clear its state. + * + * @param model Model this callback belongs to. + */ + void (*const reset)(struct bt_mesh_model *model); +}; + /** Abstraction that describes a Mesh Model instance */ struct bt_mesh_model { union { @@ -330,7 +484,7 @@ struct bt_mesh_model { /* Internal information, mainly for persistent storage */ u8_t elem_idx; /* Belongs to Nth element */ u8_t mod_idx; /* Is the Nth model in the element */ - u16_t flags; /* Information about what has changed */ + u16_t flags; /* Model flags for internal bookkeeping */ /* Model Publication */ struct bt_mesh_model_pub * const pub; @@ -343,6 +497,15 @@ struct bt_mesh_model { const struct bt_mesh_model_op * const op; + /* Model callback structure. */ + const struct bt_mesh_model_cb * const cb; + +#if MYNEWT_VAL(BLE_MESH_MODEL_EXTENSIONS) + /* Pointer to the next model in a model extension tree. */ + struct bt_mesh_model *next; + /* Pointer to the first model this model extends. */ + struct bt_mesh_model *extends; +#endif /* Model-specific user data */ void *user_data; }; @@ -402,6 +565,76 @@ int bt_mesh_model_publish(struct bt_mesh_model *model); */ struct bt_mesh_elem *bt_mesh_model_elem(struct bt_mesh_model *mod); +/** @brief Find a SIG model. + * + * @param elem Element to search for the model in. + * @param id Model ID of the model. + * + * @return A pointer to the Mesh model matching the given parameters, or NULL + * if no SIG model with the given ID exists in the given element. + */ +struct bt_mesh_model *bt_mesh_model_find(const struct bt_mesh_elem *elem, + u16_t id); + +/** @brief Find a vendor model. + * + * @param elem Element to search for the model in. + * @param company Company ID of the model. + * @param id Model ID of the model. + * + * @return A pointer to the Mesh model matching the given parameters, or NULL + * if no vendor model with the given ID exists in the given element. + */ +struct bt_mesh_model *bt_mesh_model_find_vnd(const struct bt_mesh_elem *elem, + u16_t company, u16_t id); + +/** @brief Get whether the model is in the primary element of the device. + * + * @param mod Mesh model. + * + * @return true if the model is on the primary element, false otherwise. + */ +static inline bool bt_mesh_model_in_primary(const struct bt_mesh_model *mod) +{ + return (mod->elem_idx == 0); +} + +/** @brief Immediately store the model's user data in persistent storage. + * + * @param mod Mesh model. + * @param vnd This is a vendor model. + * @param data Model data to store, or NULL to delete any model data. + * @param data_len Length of the model data. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_model_data_store(struct bt_mesh_model *mod, bool vnd, + const void *data, size_t data_len); + +/** @brief Let a model extend another. + * + * Mesh models may be extended to reuse their functionality, forming a more + * complex model. A Mesh model may extend any number of models, in any element. + * The extensions may also be nested, ie a model that extends another may itself + * be extended. Extensions may not be cyclical, and a model can only be extended + * by one other model. + * + * A set of models that extend each other form a model extension tree. + * + * All models in an extension tree share one subscription list per element. The + * access layer will utilize the combined subscription list of all models in an + * extension tree and element, giving the models extended subscription list + * capacity. + * + * @param[in] mod Mesh model. + * @param[in] base_mod The model being extended. + * + * @retval 0 Successfully extended the base_mod model. + * @retval -EALREADY The base_mod model is already extended. + */ +int bt_mesh_model_extend(struct bt_mesh_model *mod, + struct bt_mesh_model *base_mod); + /** Node Composition */ struct bt_mesh_comp { u16_t cid; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_cli.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_cli.h index 9d80ccda7..7dc237beb 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_cli.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_cli.h @@ -31,10 +31,11 @@ struct bt_mesh_cfg_cli { }; extern const struct bt_mesh_model_op bt_mesh_cfg_cli_op[]; +extern const struct bt_mesh_model_cb bt_mesh_cfg_cli_cb; -#define BT_MESH_MODEL_CFG_CLI(cli_data) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_CFG_CLI, \ - bt_mesh_cfg_cli_op, NULL, cli_data) +#define BT_MESH_MODEL_CFG_CLI(cli_data) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_CFG_CLI, bt_mesh_cfg_cli_op, NULL, \ + cli_data, &bt_mesh_cfg_cli_cb) int bt_mesh_cfg_comp_data_get(u16_t net_idx, u16_t addr, u8_t page, u8_t *status, struct os_mbuf *comp); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_srv.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_srv.h index cb5d25e69..14d8a2956 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_srv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/cfg_srv.h @@ -61,10 +61,11 @@ struct bt_mesh_cfg_srv { }; extern const struct bt_mesh_model_op bt_mesh_cfg_srv_op[]; +extern const struct bt_mesh_model_cb bt_mesh_cfg_srv_cb; -#define BT_MESH_MODEL_CFG_SRV(srv_data) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_CFG_SRV, \ - bt_mesh_cfg_srv_op, NULL, srv_data) +#define BT_MESH_MODEL_CFG_SRV(srv_data) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_CFG_SRV, bt_mesh_cfg_srv_op, NULL, \ + srv_data, &bt_mesh_cfg_srv_cb) #ifdef __cplusplus } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/glue.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/glue.h index d6aee21f9..388ecba39 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/glue.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/glue.h @@ -24,6 +24,8 @@ #include #include "syscfg/syscfg.h" +#include "logcfg/logcfg.h" +#include "modlog/modlog.h" #include "nimble/nimble_npl.h" #include "os/os_mbuf.h" @@ -179,13 +181,19 @@ extern "C" { #define BT_GAP_ADV_SLOW_INT_MIN 0x0640 /* 1 s */ #define BT_GAP_ADV_SLOW_INT_MAX 0x0780 /* 1.2 s */ -#define BT_DBG(fmt, ...) \ - if (BT_DBG_ENABLED) { \ - BLE_HS_LOG(DEBUG, "%s: " fmt "\n", __func__, ## __VA_ARGS__); \ - } -#define BT_INFO(fmt, ...) BLE_HS_LOG(INFO, "%s: " fmt "\n", __func__, ## __VA_ARGS__); -#define BT_WARN(fmt, ...) BLE_HS_LOG(WARN, "%s: " fmt "\n", __func__, ## __VA_ARGS__); -#define BT_ERR(fmt, ...) BLE_HS_LOG(ERROR, "%s: " fmt "\n", __func__, ## __VA_ARGS__); +#ifndef MESH_LOG_MODULE +#define MESH_LOG_MODULE BLE_MESH_LOG +#endif + +#define CAT(a, ...) PRIMITIVE_CAT(a, __VA_ARGS__) +#define PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__ + +#define BLE_MESH_LOG(lvl, ...) CAT(MESH_LOG_MODULE, CAT(_, lvl))(__VA_ARGS__) + +#define BT_DBG(fmt, ...) BLE_MESH_LOG(DEBUG, "%s: " fmt "\n", __func__, ## __VA_ARGS__); +#define BT_INFO(fmt, ...) BLE_MESH_LOG(INFO, "%s: " fmt "\n", __func__, ## __VA_ARGS__); +#define BT_WARN(fmt, ...) BLE_MESH_LOG(WARN, "%s: " fmt "\n", __func__, ## __VA_ARGS__); +#define BT_ERR(fmt, ...) BLE_MESH_LOG(ERROR, "%s: " fmt "\n", __func__, ## __VA_ARGS__); #define BT_GATT_ERR(_att_err) (-(_att_err)) typedef ble_addr_t bt_addr_le_t; @@ -217,6 +225,20 @@ static inline struct os_mbuf * NET_BUF_SIMPLE(uint16_t size) #define K_NO_WAIT (0) #define K_FOREVER (-1) +#if MYNEWT_VAL(BLE_EXT_ADV) +#define BT_MESH_ADV_INST (MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)) + +#if MYNEWT_VAL(BLE_MESH_PROXY) +/* Note that BLE_MULTI_ADV_INSTANCES contains number of additional instances. + * Instance 0 is always there + */ +#if MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES) < 1 +#error "Mesh needs at least BLE_MULTI_ADV_INSTANCES set to 1" +#endif +#define BT_MESH_ADV_GATT_INST (MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES) - 1) +#endif /* BLE_MESH_PROXY */ +#endif /* BLE_EXT_ADV */ + /* This is by purpose */ static inline void net_buf_simple_init(struct os_mbuf *buf, size_t reserve_head) @@ -260,6 +282,11 @@ void net_buf_reserve(struct os_mbuf *om, size_t reserve); #define net_buf_clone(a, b) os_mbuf_dup(a) #define net_buf_add_be32(a, b) net_buf_simple_add_be32(a, b) #define net_buf_add_be16(a, b) net_buf_simple_add_be16(a, b) +#define net_buf_pull(a, b) net_buf_simple_pull(a, b) +#define net_buf_pull_mem(a, b) net_buf_simple_pull_mem(a, b) +#define net_buf_pull_u8(a) net_buf_simple_pull_u8(a) +#define net_buf_pull_be16(a) net_buf_simple_pull_be16(a) +#define net_buf_skip(a, b) net_buf_simple_pull_mem(a, b) #define BT_GATT_CCC_NOTIFY BLE_GATT_CHR_PROP_NOTIFY @@ -370,9 +397,11 @@ static inline unsigned int find_msb_set(u32_t op) #define CONFIG_BT_MESH_PB_ADV BLE_MESH_PB_ADV #define CONFIG_BT_MESH_PB_GATT BLE_MESH_PB_GATT #define CONFIG_BT_MESH_PROV BLE_MESH_PROV +#define CONFIG_BT_MESH_PROXY BLE_MESH_PROXY #define CONFIG_BT_TESTING BLE_MESH_TESTING #define CONFIG_BT_SETTINGS BLE_MESH_SETTINGS #define CONFIG_SETTINGS BLE_MESH_SETTINGS +#define CONFIG_BT_MESH_PROVISIONER BLE_MESH_PROVISIONER /* Above flags are used with IS_ENABLED macro */ #define IS_ENABLED(config) MYNEWT_VAL(config) @@ -394,6 +423,8 @@ static inline unsigned int find_msb_set(u32_t op) #define CONFIG_BT_MESH_IVU_DIVIDER MYNEWT_VAL(BLE_MESH_IVU_DIVIDER) #define CONFIG_BT_DEVICE_NAME MYNEWT_VAL(BLE_MESH_DEVICE_NAME) #define CONFIG_BT_MESH_TX_SEG_MAX MYNEWT_VAL(BLE_MESH_TX_SEG_MAX) +#define CONFIG_BT_MESH_LABEL_COUNT MYNEWT_VAL(BLE_MESH_LABEL_COUNT) +#define CONFIG_BT_MESH_NODE_COUNT MYNEWT_VAL(BLE_MESH_NODE_COUNT) #define printk console_printf @@ -459,7 +490,8 @@ void net_buf_slist_merge_slist(struct net_buf_slist_t *list, #define settings_load conf_load int settings_bytes_from_str(char *val_str, void *vp, int *len); -char *settings_str_from_bytes(void *vp, int vp_len, char *buf, int buf_len); +char *settings_str_from_bytes(const void *vp, int vp_len, + char *buf, int buf_len); #define snprintk snprintf #define BT_SETTINGS_SIZE(in_size) ((((((in_size) - 1) / 3) * 4) + 4) + 1) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_cli.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_cli.h index 719d621e0..8ab8d6d5b 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_cli.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_cli.h @@ -35,10 +35,11 @@ struct bt_mesh_health_cli { }; extern const struct bt_mesh_model_op bt_mesh_health_cli_op[]; +extern const struct bt_mesh_model_cb bt_mesh_health_cli_cb; -#define BT_MESH_MODEL_HEALTH_CLI(cli_data) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_HEALTH_CLI, \ - bt_mesh_health_cli_op, NULL, cli_data) +#define BT_MESH_MODEL_HEALTH_CLI(cli_data) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_HEALTH_CLI, bt_mesh_health_cli_op, \ + NULL, cli_data, &bt_mesh_health_cli_cb) int bt_mesh_health_cli_set(struct bt_mesh_model *model); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_srv.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_srv.h index 0638c982a..83982376f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_srv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/health_srv.h @@ -71,6 +71,7 @@ struct bt_mesh_health_srv { int bt_mesh_fault_update(struct bt_mesh_elem *elem); extern const struct bt_mesh_model_op bt_mesh_health_srv_op[]; +extern const struct bt_mesh_model_cb bt_mesh_health_srv_cb; /** @def BT_MESH_MODEL_HEALTH_SRV * @@ -84,9 +85,9 @@ extern const struct bt_mesh_model_op bt_mesh_health_srv_op[]; * * @return New mesh model instance. */ -#define BT_MESH_MODEL_HEALTH_SRV(srv, pub) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_HEALTH_SRV, \ - bt_mesh_health_srv_op, pub, srv) +#define BT_MESH_MODEL_HEALTH_SRV(srv, pub) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_HEALTH_SRV, bt_mesh_health_srv_op, \ + pub, srv, &bt_mesh_health_srv_cb) #ifdef __cplusplus } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/main.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/main.h index 515d1d527..4a5bedba1 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/main.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/main.h @@ -128,6 +128,28 @@ struct bt_mesh_prov { */ int (*input)(bt_mesh_input_action_t act, u8_t size); + /** @brief The other device finished their OOB input. + * + * This callback notifies the application that it should stop + * displaying its output OOB value, as the other party finished their + * OOB input. + */ + void (*input_complete)(void); + + /** @brief Unprovisioned beacon has been received. + * + * This callback notifies the application that an unprovisioned + * beacon has been received. + * + * @param uuid UUID + * @param oob_info OOB Information + * @param uri_hash Pointer to URI Hash value. NULL if no hash was + * present in the beacon. + */ + void (*unprovisioned_beacon)(u8_t uuid[16], + bt_mesh_prov_oob_info_t oob_info, + u32_t *uri_hash); + /** @brief Provisioning link has been opened. * * This callback notifies the application that a provisioning @@ -157,6 +179,18 @@ struct bt_mesh_prov { */ void (*complete)(u16_t net_idx, u16_t addr); + /** @brief A new node has been added to the provisioning database. + * + * This callback notifies the application that provisioning has + * been successfully completed, and that a node has been assigned + * the specified NetKeyIndex and primary element address. + * + * @param net_idx NetKeyIndex given during provisioning. + * @param addr Primary element address. + * @param num_elem Number of elements that this node has. + */ + void (*node_added)(u16_t net_idx, u16_t addr, u8_t num_elem); + /** @brief Node has been reset. * * This callback notifies the application that the local node @@ -321,6 +355,19 @@ int bt_mesh_provision(const u8_t net_key[16], u16_t net_idx, u8_t flags, u32_t iv_index, u16_t addr, const u8_t dev_key[16]); +/** @brief Provision a Mesh Node using PB-ADV + * + * @param uuid UUID + * @param net_idx Network Key Index + * @param addr Address to assign to remote device. If addr is 0, the lowest + * available address will be chosen. + * @param attention_duration The attention duration to be send to remote device + * + * @return Zero on success or (negative) error code otherwise. + */ +int bt_mesh_provision_adv(const u8_t uuid[16], u16_t net_idx, u16_t addr, + u8_t attention_duration); + /** @brief Check if the local node has been provisioned. * * This API can be used to check if the local node has been provisioned diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_cli.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_cli.h index 33fbd6e9d..f2e77a47f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_cli.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_cli.h @@ -19,20 +19,19 @@ struct bt_mesh_gen_model_cli { void *op_param; }; -extern struct bt_mesh_gen_model_cli gen_onoff_cli; extern const struct bt_mesh_model_op gen_onoff_cli_op[]; +extern const struct bt_mesh_model_cb bt_mesh_gen_onoff_cli_cb; -#define BT_MESH_MODEL_GEN_ONOFF_CLI() \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_GEN_ONOFF_CLI, \ - gen_onoff_cli_op, NULL, &gen_onoff_cli) +#define BT_MESH_MODEL_GEN_ONOFF_CLI(cli_data, pub) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_GEN_ONOFF_CLI, gen_onoff_cli_op, pub,\ + cli_data, &bt_mesh_gen_onoff_cli_cb) -extern struct bt_mesh_gen_model_cli gen_level_cli; extern const struct bt_mesh_model_op gen_level_cli_op[]; +extern const struct bt_mesh_model_cb bt_mesh_gen_level_cli_cb; -#define BT_MESH_MODEL_GEN_LEVEL_CLI(pub) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_GEN_LEVEL_CLI, \ - gen_level_cli_op, NULL, &gen_level_cli) - +#define BT_MESH_MODEL_GEN_LEVEL_CLI(cli_data, pub) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_GEN_LEVEL_CLI, gen_level_cli_op, pub,\ + cli_data, &bt_mesh_gen_level_cli_cb) int bt_mesh_gen_onoff_get(u16_t net_idx, u16_t addr, u16_t app_idx, u8_t *state); @@ -42,7 +41,6 @@ int bt_mesh_gen_level_get(u16_t net_idx, u16_t addr, u16_t app_idx, s16_t *level); int bt_mesh_gen_level_set(u16_t net_idx, u16_t addr, u16_t app_idx, s16_t val, s16_t *state); -int bt_mesh_gen_model_cli_init(struct bt_mesh_model *model, bool primary); #ifdef __cplusplus } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_srv.h b/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_srv.h index c4f4033df..e498ad346 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_srv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/mesh/model_srv.h @@ -11,43 +11,54 @@ extern "C" { #endif -struct bt_mesh_gen_onoff_srv_cb { +struct bt_mesh_gen_onoff_srv { + struct bt_mesh_model *model; + int (*get)(struct bt_mesh_model *model, u8_t *state); int (*set)(struct bt_mesh_model *model, u8_t state); }; extern const struct bt_mesh_model_op gen_onoff_srv_op[]; +extern const struct bt_mesh_model_cb gen_onoff_srv_cb; #define BT_MESH_MODEL_GEN_ONOFF_SRV(srv, pub) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_GEN_ONOFF_SRV, \ - gen_onoff_srv_op, pub, srv) + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_GEN_ONOFF_SRV, \ + gen_onoff_srv_op, pub, srv, &gen_onoff_srv_cb) + +struct bt_mesh_gen_level_srv { + struct bt_mesh_model *model; -struct bt_mesh_gen_level_srv_cb { int (*get)(struct bt_mesh_model *model, s16_t *level); int (*set)(struct bt_mesh_model *model, s16_t level); }; extern const struct bt_mesh_model_op gen_level_srv_op[]; +extern const struct bt_mesh_model_cb gen_level_srv_cb; #define BT_MESH_MODEL_GEN_LEVEL_SRV(srv, pub) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_GEN_LEVEL_SRV, \ - gen_level_srv_op, pub, srv) + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_GEN_LEVEL_SRV, \ + gen_level_srv_op, pub, srv, &gen_level_srv_cb) + +struct bt_mesh_light_lightness_srv { + struct bt_mesh_model *model; -struct bt_mesh_light_lightness_srv_cb { int (*get)(struct bt_mesh_model *model, s16_t *level); int (*set)(struct bt_mesh_model *model, s16_t level); }; extern const struct bt_mesh_model_op light_lightness_srv_op[]; +extern const struct bt_mesh_model_cb light_lightness_srv_cb; #define BT_MESH_MODEL_LIGHT_LIGHTNESS_SRV(srv, pub) \ - BT_MESH_MODEL(BT_MESH_MODEL_ID_LIGHT_LIGHTNESS_SRV, \ - light_lightness_srv_op, pub, srv) + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_LIGHT_LIGHTNESS_SRV, \ + light_lightness_srv_op, pub, srv, &light_lightness_srv_cb) - -void bt_mesh_set_gen_onoff_srv_cb(struct bt_mesh_gen_onoff_srv_cb *gen_onoff_cb); -void bt_mesh_set_gen_level_srv_cb(struct bt_mesh_gen_level_srv_cb *gen_level_cb); -void bt_mesh_set_light_lightness_srv_cb(struct bt_mesh_light_lightness_srv_cb *light_lightness_cb); +void bt_mesh_set_gen_onoff_srv_cb(int (*get)(struct bt_mesh_model *model, u8_t *state), + int (*set)(struct bt_mesh_model *model, u8_t state)); +void bt_mesh_set_gen_level_srv_cb(int (*get)(struct bt_mesh_model *model, s16_t *level), + int (*set)(struct bt_mesh_model *model, s16_t level)); +void bt_mesh_set_light_lightness_srv_cb(int (*get)(struct bt_mesh_model *model, s16_t *level), + int (*set)(struct bt_mesh_model *model, s16_t level)); #ifdef __cplusplus } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/ble.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/ble.h index 1d726958d..3fc2902ec 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/ble.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/ble.h @@ -73,13 +73,19 @@ struct ble_mbuf_hdr_rxinfo /* XXX: we could just use single phy_mode field */ int8_t phy; uint8_t phy_mode; +#if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY) + int8_t rpa_index; +#endif #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_EXT_ADV) void *user_data; #endif }; /* Flag definitions for rxinfo */ +#define BLE_MBUF_HDR_F_IGNORED (0x8000) +#define BLE_MBUF_HDR_F_SCAN_REQ_TXD (0x4000) #define BLE_MBUF_HDR_F_INITA_RESOLVED (0x2000) +#define BLE_MBUF_HDR_F_TARGETA_RESOLVED (0x2000) #define BLE_MBUF_HDR_F_EXT_ADV_SEC (0x1000) #define BLE_MBUF_HDR_F_EXT_ADV (0x0800) #define BLE_MBUF_HDR_F_RESOLVED (0x0400) @@ -89,7 +95,7 @@ struct ble_mbuf_hdr_rxinfo #define BLE_MBUF_HDR_F_DEVMATCH (0x0040) #define BLE_MBUF_HDR_F_MIC_FAILURE (0x0020) #define BLE_MBUF_HDR_F_SCAN_RSP_TXD (0x0010) -#define BLE_MBUF_HDR_F_SCAN_RSP_CHK (0x0008) +#define BLE_MBUF_HDR_F_SCAN_RSP_RXD (0x0008) #define BLE_MBUF_HDR_F_RXSTATE_MASK (0x0007) /* Transmit info. NOTE: no flags defined */ @@ -111,6 +117,12 @@ struct ble_mbuf_hdr uint32_t rem_usecs; }; +#define BLE_MBUF_HDR_IGNORED(hdr) \ + (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_IGNORED)) + +#define BLE_MBUF_HDR_SCAN_REQ_TXD(hdr) \ + (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_SCAN_REQ_TXD)) + #define BLE_MBUF_HDR_EXT_ADV_SEC(hdr) \ (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_EXT_ADV_SEC)) @@ -120,8 +132,8 @@ struct ble_mbuf_hdr #define BLE_MBUF_HDR_DEVMATCH(hdr) \ (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_DEVMATCH)) -#define BLE_MBUF_HDR_SCAN_RSP_RCV(hdr) \ - (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_SCAN_RSP_CHK)) +#define BLE_MBUF_HDR_SCAN_RSP_RXD(hdr) \ + (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_SCAN_RSP_RXD)) #define BLE_MBUF_HDR_AUX_INVALID(hdr) \ (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_AUX_INVALID)) @@ -141,6 +153,9 @@ struct ble_mbuf_hdr #define BLE_MBUF_HDR_INITA_RESOLVED(hdr) \ (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_INITA_RESOLVED)) +#define BLE_MBUF_HDR_TARGETA_RESOLVED(hdr) \ + (!!((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_TARGETA_RESOLVED)) + #define BLE_MBUF_HDR_RX_STATE(hdr) \ ((uint8_t)((hdr)->rxinfo.flags & BLE_MBUF_HDR_F_RXSTATE_MASK)) @@ -235,11 +250,10 @@ enum ble_error_codes BLE_ERR_UNK_ADV_INDENT = 0x42, BLE_ERR_LIMIT_REACHED = 0x43, BLE_ERR_OPERATION_CANCELLED = 0x44, + BLE_ERR_PACKET_TOO_LONG = 0x45, BLE_ERR_MAX = 0xff }; -int ble_err_from_os(int os_err); - /* HW error codes */ #define BLE_HW_ERR_DO_NOT_USE (0) /* XXX: reserve this one for now */ #define BLE_HW_ERR_HCI_SYNC_LOSS (1) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/hci_common.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/hci_common.h index 1b049c88b..10b42e71d 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/hci_common.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/hci_common.h @@ -26,16 +26,22 @@ extern "C" { #endif -/* - * HCI Command Header - * - * Comprises the following fields - * -> Opcode group field & Opcode command field (2) - * -> Parameter Length (1) - * Length of all the parameters (does not include any part of the hci - * command header - */ -#define BLE_HCI_CMD_HDR_LEN (3) +#define BLE_HCI_MAX_DATA_LEN (MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE) - \ + sizeof(struct ble_hci_ev)) + +/* Generic command header */ +struct ble_hci_cmd { + uint16_t opcode; + uint8_t length; + uint8_t data[0]; +} __attribute__((packed)); + +/* Generic event header */ +struct ble_hci_ev { + uint8_t opcode; + uint8_t length; + uint8_t data[0]; +} __attribute__((packed)); #define BLE_HCI_OPCODE_NOP (0) @@ -64,173 +70,775 @@ extern "C" { /* List of OCF for Link Control commands (OGF=0x01) */ #define BLE_HCI_OCF_DISCONNECT_CMD (0x0006) +struct ble_hci_lc_disconnect_cp { + uint16_t conn_handle; + uint8_t reason; +} __attribute__((packed)); + #define BLE_HCI_OCF_RD_REM_VER_INFO (0x001D) +struct ble_hci_rd_rem_ver_info_cp { + uint16_t conn_handle; +} __attribute__((packed)); /* List of OCF for Controller and Baseband commands (OGF=0x03) */ #define BLE_HCI_OCF_CB_SET_EVENT_MASK (0x0001) +struct ble_hci_cb_set_event_mask_cp { + uint64_t event_mask; +} __attribute__((packed)); + #define BLE_HCI_OCF_CB_RESET (0x0003) + #define BLE_HCI_OCF_CB_READ_TX_PWR (0x002D) +struct ble_hci_cb_read_tx_pwr_cp { + uint16_t conn_handle; + uint8_t type; +} __attribute__((packed)); + +struct ble_hci_cb_read_tx_pwr_rp { + uint16_t conn_handle; + int8_t tx_level; +} __attribute__((packed)); + + #define BLE_HCI_OCF_CB_SET_CTLR_TO_HOST_FC (0x0031) +struct ble_hci_cb_ctlr_to_host_fc_cp { + uint8_t enable; +} __attribute__((packed)); + #define BLE_HCI_OCF_CB_HOST_BUF_SIZE (0x0033) +struct ble_hci_cb_host_buf_size_cp { + uint16_t acl_data_len; + uint8_t sco_data_len; + uint16_t acl_num; + uint16_t sco_num; +} __attribute__((packed)); + #define BLE_HCI_OCF_CB_HOST_NUM_COMP_PKTS (0x0035) +struct ble_hci_cb_host_num_comp_pkts_entry { + uint16_t handle; + uint16_t count; +} __attribute__((packed)); +struct ble_hci_cb_host_num_comp_pkts_cp { + uint8_t handles; + struct ble_hci_cb_host_num_comp_pkts_entry h[0]; +} __attribute__((packed)); + #define BLE_HCI_OCF_CB_SET_EVENT_MASK2 (0x0063) +struct ble_hci_cb_set_event_mask2_cp { + uint64_t event_mask2; +} __attribute__((packed)); + #define BLE_HCI_OCF_CB_RD_AUTH_PYLD_TMO (0x007B) +struct ble_hci_cb_rd_auth_pyld_tmo_cp { + uint16_t conn_handle; +} __attribute__((packed)); +struct ble_hci_cb_rd_auth_pyld_tmo_rp { + uint16_t conn_handle; + uint16_t tmo; +} __attribute__((packed)); + #define BLE_HCI_OCF_CB_WR_AUTH_PYLD_TMO (0x007C) +struct ble_hci_cb_wr_auth_pyld_tmo_cp { + uint16_t conn_handle; + uint16_t tmo; +} __attribute__((packed)); +struct ble_hci_cb_wr_auth_pyld_tmo_rp { + uint16_t conn_handle; +} __attribute__((packed)); /* List of OCF for Info Param commands (OGF=0x04) */ #define BLE_HCI_OCF_IP_RD_LOCAL_VER (0x0001) +struct ble_hci_ip_rd_local_ver_rp { + uint8_t hci_ver; + uint16_t hci_rev; + uint8_t lmp_ver; + uint16_t manufacturer; + uint16_t lmp_subver; +} __attribute__((packed)); + #define BLE_HCI_OCF_IP_RD_LOC_SUPP_CMD (0x0002) +struct ble_hci_ip_rd_loc_supp_cmd_rp { + uint8_t commands[64]; +} __attribute__((packed)); + #define BLE_HCI_OCF_IP_RD_LOC_SUPP_FEAT (0x0003) +struct ble_hci_ip_rd_loc_supp_feat_rp { + uint64_t features; +} __attribute__((packed)); + #define BLE_HCI_OCF_IP_RD_BUF_SIZE (0x0005) +struct ble_hci_ip_rd_buf_size_rp { + uint16_t acl_data_len; + uint8_t sco_data_len; + uint16_t acl_num; + uint16_t sco_num; +} __attribute__((packed)); + #define BLE_HCI_OCF_IP_RD_BD_ADDR (0x0009) +struct ble_hci_ip_rd_bd_addr_rp { + uint8_t addr[6]; +} __attribute__((packed)); /* List of OCF for Status parameters commands (OGF = 0x05) */ #define BLE_HCI_OCF_RD_RSSI (0x0005) +struct ble_hci_rd_rssi_cp { + uint16_t handle; +} __attribute__((packed)); +struct ble_hci_rd_rssi_rp { + uint16_t handle; + int8_t rssi; +} __attribute__((packed)); /* List of OCF for LE commands (OGF = 0x08) */ #define BLE_HCI_OCF_LE_SET_EVENT_MASK (0x0001) +struct ble_hci_le_set_event_mask_cp { + uint64_t event_mask; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_BUF_SIZE (0x0002) +struct ble_hci_le_rd_buf_size_rp { + uint16_t data_len; + uint8_t data_packets; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_LOC_SUPP_FEAT (0x0003) +struct ble_hci_le_rd_loc_supp_feat_rp { + uint64_t features; +} __attribute__((packed)); + /* NOTE: 0x0004 is intentionally left undefined */ #define BLE_HCI_OCF_LE_SET_RAND_ADDR (0x0005) +struct ble_hci_le_set_rand_addr_cp { + uint8_t addr[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_ADV_PARAMS (0x0006) +struct ble_hci_le_set_adv_params_cp { + uint16_t min_interval; + uint16_t max_interval; + uint8_t type; + uint8_t own_addr_type; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t chan_map; + uint8_t filter_policy; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_ADV_CHAN_TXPWR (0x0007) +struct ble_hci_le_rd_adv_chan_txpwr_rp { + int8_t power_level; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_ADV_DATA (0x0008) +#define BLE_HCI_MAX_ADV_DATA_LEN (31) +struct ble_hci_le_set_adv_data_cp { + uint8_t adv_data_len; + uint8_t adv_data[BLE_HCI_MAX_ADV_DATA_LEN]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_SCAN_RSP_DATA (0x0009) +#define BLE_HCI_MAX_SCAN_RSP_DATA_LEN (31) +struct ble_hci_le_set_scan_rsp_data_cp { + uint8_t scan_rsp_len; + uint8_t scan_rsp[BLE_HCI_MAX_SCAN_RSP_DATA_LEN]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_ADV_ENABLE (0x000A) +struct ble_hci_le_set_adv_enable_cp { + uint8_t enable; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_SCAN_PARAMS (0x000B) +struct ble_hci_le_set_scan_params_cp { + uint8_t scan_type; + uint16_t scan_itvl; + uint16_t scan_window; + uint8_t own_addr_type; + uint8_t filter_policy; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_SCAN_ENABLE (0x000C) +struct ble_hci_le_set_scan_enable_cp { + uint8_t enable; + uint8_t filter_duplicates; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CREATE_CONN (0x000D) +struct ble_hci_le_create_conn_cp { + uint16_t scan_itvl; + uint16_t scan_window; + uint8_t filter_policy; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t own_addr_type; + uint16_t min_conn_itvl; + uint16_t max_conn_itvl; + uint16_t conn_latency; + uint16_t tmo; + uint16_t min_ce; + uint16_t max_ce; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CREATE_CONN_CANCEL (0x000E) + #define BLE_HCI_OCF_LE_RD_WHITE_LIST_SIZE (0x000F) +struct ble_hci_le_rd_white_list_rp { + uint8_t size; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CLEAR_WHITE_LIST (0x0010) + #define BLE_HCI_OCF_LE_ADD_WHITE_LIST (0x0011) +struct ble_hci_le_add_whte_list_cp { + uint8_t addr_type; + uint8_t addr[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RMV_WHITE_LIST (0x0012) +struct ble_hci_le_rmv_white_list_cp { + uint8_t addr_type; + uint8_t addr[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CONN_UPDATE (0x0013) +struct ble_hci_le_conn_update_cp { + uint16_t conn_handle; + uint16_t conn_itvl_min; + uint16_t conn_itvl_max; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint16_t min_ce_len; + uint16_t max_ce_len; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_HOST_CHAN_CLASS (0x0014) +struct ble_hci_le_set_host_chan_class_cp { + uint8_t chan_map[5]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_CHAN_MAP (0x0015) +struct ble_hci_le_rd_chan_map_cp { + uint16_t conn_handle; +} __attribute__((packed)); +struct ble_hci_le_rd_chan_map_rp { + uint16_t conn_handle; + uint8_t chan_map[5]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_REM_FEAT (0x0016) +struct ble_hci_le_rd_rem_feat_cp { + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_ENCRYPT (0x0017) +struct ble_hci_le_encrypt_cp { + uint8_t key[16]; + uint8_t data[16]; +} __attribute__((packed)); +struct ble_hci_le_encrypt_rp { + uint8_t data[16]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RAND (0x0018) +struct ble_hci_le_rand_rp { + uint64_t random_number; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_START_ENCRYPT (0x0019) +struct ble_hci_le_start_encrypt_cp { + uint16_t conn_handle; + uint64_t rand; + uint16_t div; + uint8_t ltk[16]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY (0x001A) +struct ble_hci_le_lt_key_req_reply_cp { + uint16_t conn_handle; + uint8_t ltk[16]; +} __attribute__((packed)); +struct ble_hci_le_lt_key_req_reply_rp { + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_LT_KEY_REQ_NEG_REPLY (0x001B) +struct ble_hci_le_lt_key_req_neg_reply_cp { + uint16_t conn_handle; +} __attribute__((packed)); +struct ble_hci_le_lt_key_req_neg_reply_rp { + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_SUPP_STATES (0x001C) +struct ble_hci_le_rd_supp_states_rp { + uint64_t states; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RX_TEST (0x001D) +struct ble_hci_le_rx_test_cp { + uint8_t rx_chan; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_TX_TEST (0x001E) +struct ble_hci_le_tx_test_cp { + uint8_t tx_chan; + uint8_t test_data_len; + uint8_t payload; +} __attribute__((packed)); +#if MYNEWT_VAL(BLE_LL_DTM_EXTENSIONS) +struct ble_hci_le_tx_test_ext_cp { + uint8_t tx_chan; + uint8_t test_data_len; + uint8_t payload; + uint16_t interval; + uint16_t pkt_count; +} __attribute__((packed)); +#endif + #define BLE_HCI_OCF_LE_TEST_END (0x001F) +struct ble_hci_le_test_end_rp { + uint16_t num_packets; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_REM_CONN_PARAM_RR (0x0020) +struct ble_hci_le_rem_conn_param_rr_cp { + uint16_t conn_handle; + uint16_t conn_itvl_min; + uint16_t conn_itvl_max; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint16_t min_ce; + uint16_t max_ce; +} __attribute__((packed)); +struct ble_hci_le_rem_conn_param_rr_rp { + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR (0x0021) +struct ble_hci_le_rem_conn_params_nrr_cp { + uint16_t conn_handle; + uint8_t reason; +} __attribute__((packed)); +struct ble_hci_le_rem_conn_params_nrr_rp { + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_DATA_LEN (0x0022) +struct ble_hci_le_set_data_len_cp { + uint16_t conn_handle; + uint16_t tx_octets; + uint16_t tx_time; +} __attribute__((packed)); +struct ble_hci_le_set_data_len_rp { + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_SUGG_DEF_DATA_LEN (0x0023) +struct ble_hci_le_rd_sugg_def_data_len_rp { + uint16_t max_tx_octets; + uint16_t max_tx_time; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_WR_SUGG_DEF_DATA_LEN (0x0024) +struct ble_hci_le_wr_sugg_def_data_len_cp { + uint16_t max_tx_octets; + uint16_t max_tx_time; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_P256_PUBKEY (0x0025) + #define BLE_HCI_OCF_LE_GEN_DHKEY (0x0026) +struct ble_hci_le_gen_dhkey_cp { + uint8_t pkey[64]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_ADD_RESOLV_LIST (0x0027) +struct ble_hci_le_add_resolv_list_cp { + uint8_t peer_addr_type; + uint8_t peer_id_addr[6]; + uint8_t peer_irk[16]; + uint8_t local_irk[16]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RMV_RESOLV_LIST (0x0028) +struct ble_hci_le_rmv_resolve_list_cp { + uint8_t peer_addr_type; + uint8_t peer_id_addr[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CLR_RESOLV_LIST (0x0029) + #define BLE_HCI_OCF_LE_RD_RESOLV_LIST_SIZE (0x002A) +struct ble_hci_le_rd_resolv_list_size_rp { + uint8_t size; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_PEER_RESOLV_ADDR (0x002B) +struct ble_hci_le_rd_peer_recolv_addr_cp { + uint8_t peer_addr_type; + uint8_t peer_id_addr[6]; +} __attribute__((packed)); +struct ble_hci_le_rd_peer_recolv_addr_rp { + uint8_t rpa[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_LOCAL_RESOLV_ADDR (0x002C) +struct ble_hci_le_rd_local_recolv_addr_cp { + uint8_t peer_addr_type; + uint8_t peer_id_addr[6]; +} __attribute__((packed)); +struct ble_hci_le_rd_local_recolv_addr_rp { + uint8_t rpa[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_ADDR_RES_EN (0x002D) +struct ble_hci_le_set_addr_res_en_cp { + uint8_t enable; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_RPA_TMO (0x002E) +struct ble_hci_le_set_rpa_tmo_cp { + uint16_t rpa_timeout; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_MAX_DATA_LEN (0x002F) +struct ble_hci_le_rd_max_data_len_rp { + uint16_t max_tx_octests; + uint16_t max_tx_time; + uint16_t max_rx_octests; + uint16_t max_rx_time; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_PHY (0x0030) +struct ble_hci_le_rd_phy_cp { + uint16_t conn_handle; +} __attribute__((packed)); +struct ble_hci_le_rd_phy_rp { + uint16_t conn_handle; + uint8_t tx_phy; + uint8_t rx_phy; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_DEFAULT_PHY (0x0031) +struct ble_hci_le_set_default_phy_cp { + uint8_t all_phys; + uint8_t tx_phys; + uint8_t rx_phys; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_PHY (0x0032) -#define BLE_HCI_OCF_LE_ENH_RX_TEST (0x0033) -#define BLE_HCI_OCF_LE_ENH_TX_TEST (0x0034) +struct ble_hci_le_set_phy_cp { + uint16_t conn_handle; + uint8_t all_phys; + uint8_t tx_phys; + uint8_t rx_phys; + uint16_t phy_options; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_RX_TEST_V2 (0x0033) +struct ble_hci_le_rx_test_v2_cp { + uint8_t rx_chan; + uint8_t phy; + uint8_t index; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_TX_TEST_V2 (0x0034) +struct ble_hci_le_tx_test_v2_cp { + uint8_t tx_chan; + uint8_t test_data_len; + uint8_t payload; + uint8_t phy; +} __attribute__((packed)); +#if MYNEWT_VAL(BLE_LL_DTM_EXTENSIONS) +struct ble_hci_le_tx_test_v2_ext_cp { + uint8_t tx_chan; + uint8_t test_data_len; + uint8_t payload; + uint8_t phy; + uint16_t interval; + uint16_t pkt_count; +} __attribute__((packed)); +#endif + #define BLE_HCI_OCF_LE_SET_ADV_SET_RND_ADDR (0x0035) +struct ble_hci_le_set_adv_set_rnd_addr_cp { + uint8_t adv_handle; + uint8_t addr[6]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_EXT_ADV_PARAM (0x0036) +struct ble_hci_le_set_ext_adv_params_cp { + uint8_t adv_handle; + uint16_t props; + uint8_t pri_itvl_min[3]; + uint8_t pri_itvl_max[3]; + uint8_t pri_chan_map; + uint8_t own_addr_type; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t filter_policy; + int8_t tx_power; + uint8_t pri_phy; + uint8_t sec_max_skip; + uint8_t sec_phy; + uint8_t sid; + uint8_t scan_req_notif; +} __attribute__((packed)); +struct ble_hci_le_set_ext_adv_params_rp { + int8_t tx_power; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_EXT_ADV_DATA (0x0037) +struct ble_hci_le_set_ext_adv_data_cp { + uint8_t adv_handle; + uint8_t operation; + uint8_t fragment_pref; + uint8_t adv_data_len; + uint8_t adv_data[0]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_EXT_SCAN_RSP_DATA (0x0038) +struct ble_hci_le_set_ext_scan_rsp_data_cp { + uint8_t adv_handle; + uint8_t operation; + uint8_t fragment_pref; + uint8_t scan_rsp_len; + uint8_t scan_rsp[0]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_EXT_ADV_ENABLE (0x0039) +struct adv_set { + uint8_t adv_handle; + uint16_t duration; + uint8_t max_events; +} __attribute__((packed)); +struct ble_hci_le_set_ext_adv_enable_cp { + uint8_t enable; + uint8_t num_sets; + struct adv_set sets[0]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_MAX_ADV_DATA_LEN (0x003A) +struct ble_hci_le_rd_max_adv_data_len_rp { + uint16_t max_adv_data_len; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_NUM_OF_ADV_SETS (0x003B) +struct ble_hci_le_rd_num_of_adv_sets_rp { + uint8_t num_sets; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_REMOVE_ADV_SET (0x003C) +struct ble_hci_le_remove_adv_set_cp { + uint8_t adv_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CLEAR_ADV_SETS (0x003D) + #define BLE_HCI_OCF_LE_SET_PERIODIC_ADV_PARAMS (0x003E) +struct ble_hci_le_set_periodic_adv_params_cp { + uint8_t adv_handle; + uint16_t min_itvl; + uint16_t max_itvl; + uint16_t props; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_PERIODIC_ADV_DATA (0x003F) +struct ble_hci_le_set_periodic_adv_data_cp { + uint8_t adv_handle; + uint8_t operation; + uint8_t adv_data_len; + uint8_t adv_data[0]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_PERIODIC_ADV_ENABLE (0x0040) +struct ble_hci_le_set_periodic_adv_enable_cp { + uint8_t enable; + uint8_t adv_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_EXT_SCAN_PARAM (0x0041) +struct scan_params { + uint8_t type; + uint16_t itvl; + uint16_t window; +} __attribute__((packed)); +struct ble_hci_le_set_ext_scan_params_cp { + uint8_t own_addr_type; + uint8_t filter_policy; + uint8_t phys; + struct scan_params scans[0]; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_EXT_SCAN_ENABLE (0x0042) +struct ble_hci_le_set_ext_scan_enable_cp { + uint8_t enable; + uint8_t filter_dup; + uint16_t duration; + uint16_t period; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_EXT_CREATE_CONN (0x0043) +struct conn_params { + uint16_t scan_itvl; + uint16_t scan_window; + uint16_t conn_min_itvl; + uint16_t conn_max_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint16_t min_ce; + uint16_t max_ce; +} __attribute__((packed)); +struct ble_hci_le_ext_create_conn_cp { + uint8_t filter_policy; + uint8_t own_addr_type; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t init_phy_mask; + struct conn_params conn_params[0]; +} __attribute__((packed)); + +#define BLE_HCI_LE_PERIODIC_ADV_CREATE_SYNC_OPT_FILTER 0x01 +#define BLE_HCI_LE_PERIODIC_ADV_CREATE_SYNC_OPT_DISABLED 0x02 + #define BLE_HCI_OCF_LE_PERIODIC_ADV_CREATE_SYNC (0x0044) +struct ble_hci_le_periodic_adv_create_sync_cp { + uint8_t options; + uint8_t sid; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint16_t skip; + uint16_t sync_timeout; + uint8_t sync_cte_type; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_PERIODIC_ADV_CREATE_SYNC_CANCEL (0x0045) + #define BLE_HCI_OCF_LE_PERIODIC_ADV_TERM_SYNC (0x0046) +struct ble_hci_le_periodic_adv_term_sync_cp { + uint16_t sync_handle; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_ADD_DEV_TO_PERIODIC_ADV_LIST (0x0047) +struct ble_hci_le_add_dev_to_periodic_adv_list_cp { + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t sid; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_REM_DEV_FROM_PERIODIC_ADV_LIST (0x0048) +struct ble_hci_le_rem_dev_from_periodic_adv_list_cp { + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t sid; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_CLEAR_PERIODIC_ADV_LIST (0x0049) + #define BLE_HCI_OCF_LE_RD_PERIODIC_ADV_LIST_SIZE (0x004A) +struct ble_hci_le_rd_periodic_adv_list_size_rp { + uint8_t list_size; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_TRANSMIT_POWER (0x004B) +struct ble_hci_le_rd_transmit_power_rp { + int8_t min_tx_power; + int8_t max_tx_power; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_RD_RF_PATH_COMPENSATION (0x004C) +struct ble_hci_le_rd_rf_path_compensation_rp { + int16_t tx_path_compensation; + int16_t rx_path_compensation; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_WR_RF_PATH_COMPENSATION (0x004D) +struct ble_hci_le_wr_rf_path_compensation_cp { + int16_t tx_path_compensation; + int16_t rx_path_compensation; +} __attribute__((packed)); + #define BLE_HCI_OCF_LE_SET_PRIVACY_MODE (0x004E) +struct ble_hci_le_set_privacy_mode_cp { + uint8_t peer_id_addr_type; + uint8_t peer_id_addr[6]; + uint8_t mode; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_RX_TEST_V3 (0x004F) +#define BLE_HCI_OCF_LE_TX_TEST_V3 (0x0050) +#define BLE_HCI_OCF_LE_SET_CONNLESS_CTE_TX_PARAMS (0x0051) +#define BLE_HCI_OCF_LE_SET_CONNLESS_CTE_TX_ENABLE (0x0052) +#define BLE_HCI_OCF_LE_SET_CONNLESS_IQ_SAMPLING_ENABLE (0x0053) +#define BLE_HCI_OCF_LE_SET_CONN_CTE_RX_PARAMS (0x0054) +#define BLE_HCI_OCF_LE_SET_CONN_CTE_TX_PARAMS (0x0055) +#define BLE_HCI_OCF_LE_SET_CONN_CTE_REQ_ENABLE (0x0056) +#define BLE_HCI_OCF_LE_SET_CONN_CTE_RESP_ENABLE (0x0057) +#define BLE_HCI_OCF_LE_RD_ANTENNA_INFO (0x0058) + +#define BLE_HCI_OCF_LE_PERIODIC_ADV_RECEIVE_ENABLE (0x0059) +struct ble_hci_le_periodic_adv_receive_enable_cp { + uint16_t sync_handle; + uint8_t enable; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_PERIODIC_ADV_SYNC_TRANSFER (0x005A) +struct ble_hci_le_periodic_adv_sync_transfer_cp { + uint16_t conn_handle; + uint16_t service_data; + uint16_t sync_handle; +} __attribute__((packed)); +struct ble_hci_le_periodic_adv_sync_transfer_rp { + uint16_t conn_handle; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_PERIODIC_ADV_SET_INFO_TRANSFER (0x005B) +struct ble_hci_le_periodic_adv_set_info_transfer_cp { + uint16_t conn_handle; + uint16_t service_data; + uint8_t adv_handle; +} __attribute__((packed)); +struct ble_hci_le_periodic_adv_set_info_transfer_rp { + uint16_t conn_handle; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_PERIODIC_ADV_SYNC_TRANSFER_PARAMS (0x005C) +struct ble_hci_le_periodic_adv_sync_transfer_params_cp { + uint16_t conn_handle; + uint8_t mode; + uint16_t skip; + uint16_t sync_timeout; + uint8_t sync_cte_type; +} __attribute__((packed)); +struct ble_hci_le_periodic_adv_sync_transfer_params_rp { + uint16_t conn_handle; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_SET_DEFAULT_SYNC_TRANSFER_PARAMS (0x005D) +struct ble_hci_le_set_default_periodic_sync_transfer_params_cp { + uint8_t mode; + uint16_t skip; + uint16_t sync_timeout; + uint8_t sync_cte_type; +} __attribute__((packed)); + +#define BLE_HCI_OCF_LE_GENERATE_DHKEY_V2 (0x005E) +#define BLE_HCI_OCF_LE_MODIFY_SCA (0x005F) + +#define BLE_HCI_OCF_LE_SET_HOST_FEAT (0x0074) +struct ble_hci_le_set_host_feat_cp { + uint8_t bit_num; + uint8_t val; +} __attribute__((packed)); /* Command Specific Definitions */ -#define BLE_HCI_VARIABLE_LEN (0xFF) - -/* --- Disconnect command (OGF 0x01, OCF 0x0006) --- */ -#define BLE_HCI_DISCONNECT_CMD_LEN (3) - -/* --- Set event mask (OGF 0x03, OCF 0x0001 --- */ -#define BLE_HCI_SET_EVENT_MASK_LEN (8) - /* --- Set controller to host flow control (OGF 0x03, OCF 0x0031) --- */ -#define BLE_HCI_CTLR_TO_HOST_FC_LEN (1) - #define BLE_HCI_CTLR_TO_HOST_FC_OFF (0) #define BLE_HCI_CTLR_TO_HOST_FC_ACL (1) #define BLE_HCI_CTLR_TO_HOST_FC_SYNC (2) #define BLE_HCI_CTLR_TO_HOST_FC_BOTH (3) -/* --- Host buffer size (OGF 0x03, OCF 0x0033) --- */ -#define BLE_HCI_HOST_BUF_SIZE_LEN (7) - -/* --- Host number of completed packets (OGF 0x03, OCF 0x0035) --- */ -#define BLE_HCI_HOST_NUM_COMP_PKTS_HDR_LEN (1) -#define BLE_HCI_HOST_NUM_COMP_PKTS_ENT_LEN (4) - -/* --- Read BD_ADDR (OGF 0x04, OCF 0x0009 --- */ -#define BLE_HCI_IP_RD_BD_ADDR_ACK_PARAM_LEN (6) - -/* --- Read buffer size (OGF 0x04, OCF 0x0005) --- */ -#define BLE_HCI_IP_RD_BUF_SIZE_LEN (0) -#define BLE_HCI_IP_RD_BUF_SIZE_RSPLEN (7) /* No status byte. */ - -/* --- Read/Write authenticated payload timeout (ocf 0x007B/0x007C) */ -#define BLE_HCI_RD_AUTH_PYLD_TMO_LEN (4) -#define BLE_HCI_WR_AUTH_PYLD_TMO_LEN (2) - -/* --- Read local version information (OGF 0x04, OCF 0x0001) --- */ -#define BLE_HCI_RD_LOC_VER_INFO_RSPLEN (8) /* No status byte. */ - -/* --- Read local supported command (OGF 0x04, OCF 0x0002) --- */ -#define BLE_HCI_RD_LOC_SUPP_CMD_RSPLEN (64) /* No status byte. */ - -/* --- Read local supported features (OGF 0x04, OCF 0x0003) --- */ -#define BLE_HCI_RD_LOC_SUPP_FEAT_RSPLEN (8) /* No status byte. */ - -/* --- Read RSSI (OGF 0x05, OCF 0x0005) --- */ -#define BLE_HCI_READ_RSSI_LEN (2) -#define BLE_HCI_READ_RSSI_ACK_PARAM_LEN (3) /* No status byte. */ - -/* --- LE set event mask (OCF 0x0001) --- */ -#define BLE_HCI_SET_LE_EVENT_MASK_LEN (8) - -/* --- LE read buffer size (OCF 0x0002) --- */ -#define BLE_HCI_RD_BUF_SIZE_LEN (0) -#define BLE_HCI_RD_BUF_SIZE_RSPLEN (3) /* No status byte. */ - -/* --- LE read local supported features (OCF 0x0003) --- */ -#define BLE_HCI_RD_LE_LOC_SUPP_FEAT_RSPLEN (8) /* No status byte. */ - -/* --- LE set random address (OCF 0x0005) */ -#define BLE_HCI_SET_RAND_ADDR_LEN (6) - /* --- LE set advertising parameters (OCF 0x0006) */ -#define BLE_HCI_SET_ADV_PARAM_LEN (15) - /* Advertising types */ #define BLE_HCI_ADV_TYPE_ADV_IND (0) #define BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_HD (1) @@ -263,23 +871,10 @@ extern "C" { #define BLE_HCI_ADV_PEER_ADDR_MAX (1) /* --- LE advertising channel tx power (OCF 0x0007) */ -#define BLE_HCI_ADV_CHAN_TXPWR_ACK_PARAM_LEN (2) /* Includes status byte. */ #define BLE_HCI_ADV_CHAN_TXPWR_MIN (-20) #define BLE_HCI_ADV_CHAN_TXPWR_MAX (10) -/* --- LE set advertising data (OCF 0x0008) */ -#define BLE_HCI_MAX_ADV_DATA_LEN (31) -#define BLE_HCI_SET_ADV_DATA_LEN (32) - -/* --- LE set scan response data (OCF 0x0009) */ -#define BLE_HCI_MAX_SCAN_RSP_DATA_LEN (31) -#define BLE_HCI_SET_SCAN_RSP_DATA_LEN (32) - -/* --- LE set advertising enable (OCF 0x000a) */ -#define BLE_HCI_SET_ADV_ENABLE_LEN (1) - /* --- LE set scan enable (OCF 0x000c) */ -#define BLE_HCI_SET_SCAN_ENABLE_LEN (2) /* Connect peer address type */ #define BLE_HCI_CONN_PEER_ADDR_PUBLIC (0) @@ -316,7 +911,6 @@ extern "C" { #define BLE_HCI_ADV_CHANMASK_DEF (0x7) /* all channels */ /* Set scan parameters */ -#define BLE_HCI_SET_SCAN_PARAM_LEN (7) #define BLE_HCI_SCAN_TYPE_PASSIVE (0) #define BLE_HCI_SCAN_TYPE_ACTIVE (1) @@ -378,98 +972,19 @@ extern "C" { #define BLE_HCI_CONN_PEER_ADDR_RAND_ID (3) #define BLE_HCI_CONN_PEER_ADDR_MAX (3) -/* --- LE connection update (OCF 0x0013) */ -#define BLE_HCI_CONN_UPDATE_LEN (14) - -/* --- LE set host channel classification command (OCF 0x0014) */ -#define BLE_HCI_SET_HOST_CHAN_CLASS_LEN (5) - -/* --- LE read channel map command (OCF 0x0015) */ -#define BLE_HCI_RD_CHANMAP_LEN (2) -#define BLE_HCI_RD_CHANMAP_RSP_LEN (7) - -/* --- LE read remote features (OCF 0x0016) */ -#define BLE_HCI_CONN_RD_REM_FEAT_LEN (2) - -/* --- LE encrypt (OCF 0x0017) */ -#define BLE_HCI_LE_ENCRYPT_LEN (32) - -/* --- LE rand (OCF 0x0018) */ -#define BLE_HCI_LE_RAND_LEN (8) - -/* --- LE start encryption (OCF 0x0019) */ -#define BLE_HCI_LE_START_ENCRYPT_LEN (28) - -/* --- LE long term key request reply command (OCF 0x001a) */ -#define BLE_HCI_LT_KEY_REQ_REPLY_LEN (18) -#define BLE_HCI_LT_KEY_REQ_REPLY_ACK_PARAM_LEN (2) /* No status byte. */ - -/* --- LE long term key request negative reply command (OCF 0x001b) */ -#define BLE_HCI_LT_KEY_REQ_NEG_REPLY_LEN (2) -#define BLE_HCI_LT_KEY_REQ_NEG_REPLY_ACK_PARAM_LEN (2) - -/* --- LE read supported states (OCF 0x001C) --- */ -#define BLE_HCI_RD_SUPP_STATES_RSPLEN (8) - -/* --- LE receiver test command (OCF 0x001D) --- */ -#define BLE_HCI_RX_TEST_LEN (1) - -/* --- LE transitter test command (OCF 0x001E) --- */ -#define BLE_HCI_TX_TEST_LEN (3) - -/* --- LE remote connection parameter request reply (OCF 0x0020) */ -#define BLE_HCI_CONN_PARAM_REPLY_LEN (14) - -/* --- LE remote connection parameter request negative reply (OCF 0x0021) */ -#define BLE_HCI_CONN_PARAM_NEG_REPLY_LEN (3) /* --- LE set data length (OCF 0x0022) */ -#define BLE_HCI_SET_DATALEN_LEN (6) -#define BLE_HCI_SET_DATALEN_ACK_PARAM_LEN (2) /* No status byte. */ #define BLE_HCI_SET_DATALEN_TX_OCTETS_MIN (0x001b) #define BLE_HCI_SET_DATALEN_TX_OCTETS_MAX (0x00fb) #define BLE_HCI_SET_DATALEN_TX_TIME_MIN (0x0148) #define BLE_HCI_SET_DATALEN_TX_TIME_MAX (0x4290) -/* --- LE read suggested default data length (OCF 0x0023) */ -#define BLE_HCI_RD_SUGG_DATALEN_RSPLEN (4) - -/* --- LE write suggested default data length (OCF 0x0024) */ -#define BLE_HCI_WR_SUGG_DATALEN_LEN (4) - -/* --- LE generate DHKEY command (OCF 0x0026) */ -#define BLE_HCI_GEN_DHKEY_LEN (64) - -/* --- LE add device to resolving list (OCF 0x0027) */ -#define BLE_HCI_ADD_TO_RESOLV_LIST_LEN (39) - -/* --- LE add device to resolving list (OCF 0x0028) */ -#define BLE_HCI_RMV_FROM_RESOLV_LIST_LEN (7) - -/* --- LE read peer resolvable address (OCF 0x002B) */ -#define BLE_HCI_RD_PEER_RESOLV_ADDR_LEN (7) - -/* --- LE read peer resolvable address (OCF 0x002C) */ -#define BLE_HCI_RD_LOC_RESOLV_ADDR_LEN (7) - -/* --- LE set address resolution enable (OCF 0x002D) */ -#define BLE_HCI_SET_ADDR_RESOL_ENA_LEN (1) - -/* --- LE set resolvable private address timeout (OCF 0x002E) */ -#define BLE_HCI_SET_RESOLV_PRIV_ADDR_TO_LEN (2) - -/* --- LE read maximum data length (OCF 0x002F) */ -#define BLE_HCI_RD_MAX_DATALEN_RSPLEN (8) - /* --- LE read maximum default PHY (OCF 0x0030) */ -#define BLE_HCI_LE_RD_PHY_LEN (2) -#define BLE_HCI_LE_RD_PHY_RSPLEN (4) #define BLE_HCI_LE_PHY_1M (1) #define BLE_HCI_LE_PHY_2M (2) #define BLE_HCI_LE_PHY_CODED (3) /* --- LE set default PHY (OCF 0x0031) */ -#define BLE_HCI_LE_SET_DEFAULT_PHY_LEN (3) #define BLE_HCI_LE_PHY_NO_TX_PREF_MASK (0x01) #define BLE_HCI_LE_PHY_NO_RX_PREF_MASK (0x02) #define BLE_HCI_LE_PHY_1M_PREF_MASK (0x01) @@ -481,27 +996,20 @@ extern "C" { BLE_HCI_LE_PHY_CODED_PREF_MASK) /* --- LE set PHY (OCF 0x0032) */ -#define BLE_HCI_LE_SET_PHY_LEN (7) #define BLE_HCI_LE_PHY_CODED_ANY (0x0000) #define BLE_HCI_LE_PHY_CODED_S2_PREF (0x0001) #define BLE_HCI_LE_PHY_CODED_S8_PREF (0x0002) /* --- LE enhanced receiver test (OCF 0x0033) */ -#define BLE_HCI_LE_ENH_RX_TEST_LEN (3) #define BLE_HCI_LE_PHY_1M (1) #define BLE_HCI_LE_PHY_2M (2) #define BLE_HCI_LE_PHY_CODED (3) /* --- LE enhanced transmitter test (OCF 0x0034) */ -#define BLE_HCI_LE_ENH_TX_TEST_LEN (4) #define BLE_HCI_LE_PHY_CODED_S8 (3) #define BLE_HCI_LE_PHY_CODED_S2 (4) -/* --- LE set advertising set random address (OCF 0x0035) */ -#define BLE_HCI_LE_SET_ADV_SET_RND_ADDR_LEN (7) - /* --- LE set extended advertising parameters (OCF 0x0036) */ -#define BLE_HCI_LE_SET_EXT_ADV_PARAM_LEN (25) #define BLE_HCI_LE_SET_EXT_ADV_PROP_CONNECTABLE (0x0001) #define BLE_HCI_LE_SET_EXT_ADV_PROP_SCANNABLE (0x0002) #define BLE_HCI_LE_SET_EXT_ADV_PROP_DIRECTED (0x0004) @@ -519,9 +1027,7 @@ extern "C" { /* --- LE set extended advertising data (OCF 0x0037) */ #define BLE_HCI_MAX_EXT_ADV_DATA_LEN (251) -#define BLE_HCI_SET_EXT_ADV_DATA_HDR_LEN (4) -#define BLE_HCI_LE_SET_EXT_ADV_DATA_LEN BLE_HCI_VARIABLE_LEN #define BLE_HCI_LE_SET_DATA_OPER_INT (0) #define BLE_HCI_LE_SET_DATA_OPER_FIRST (1) #define BLE_HCI_LE_SET_DATA_OPER_LAST (2) @@ -530,69 +1036,20 @@ extern "C" { /* --- LE set extended scan response data (OCF 0x0038) */ #define BLE_HCI_MAX_EXT_SCAN_RSP_DATA_LEN (251) -#define BLE_HCI_SET_EXT_SCAN_RSP_DATA_HDR_LEN (4) - -#define BLE_HCI_LE_SET_EXT_SCAN_RSP_DATA_LEN BLE_HCI_VARIABLE_LEN - - -/* --- LE set extended advertising enable (OCF 0x0039) */ -#define BLE_HCI_LE_SET_EXT_ADV_ENABLE_LEN BLE_HCI_VARIABLE_LEN - -/* --- LE remove advertising set (OCF 0x003C) */ -#define BLE_HCI_LE_REMOVE_ADV_SET_LEN (1) - -/* --- LE read maximum advertising data length (OCF 0x003A) */ -#define BLE_HCI_RD_MAX_ADV_DATA_LEN (2) - -/* --- LE read number of supported advertising sets (OCF 0x003B) */ -#define BLE_HCI_RD_NR_SUP_ADV_SETS (1) /* --- LE set periodic advertising parameters (OCF 0x003E) */ -#define BLE_HCI_LE_SET_PERIODIC_ADV_PARAMS_LEN (7) #define BLE_HCI_LE_SET_PERIODIC_ADV_PROP_INC_TX_PWR (0x0040) #define BLE_HCI_LE_SET_PERIODIC_ADV_PROP_MASK (0x0040) /* --- LE set periodic advertising data (OCF 0x003F) */ -#define BLE_HCI_LE_SET_PERIODIC_ADV_DATA_LEN BLE_HCI_VARIABLE_LEN #define BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN (252) -#define BLE_HCI_SET_PERIODIC_ADV_DATA_HDR_LEN (3) - -/* --- LE periodic advertising enable (OCF 0x0040) */ -#define BLE_HCI_LE_SET_PERIODIC_ADV_ENABLE_LEN (2) - -/* --- LE set extended scan parameters (OCF 0x0041) */ -#define BLE_HCI_LE_SET_EXT_SCAN_PARAM_LEN BLE_HCI_VARIABLE_LEN -#define BLE_HCI_LE_EXT_SCAN_BASE_LEN (3) -#define BLE_HCI_LE_EXT_SCAN_SINGLE_PARAM_LEN (5) - -/* --- LE set extended scan enable (OCF 0x0042) */ -#define BLE_HCI_LE_SET_EXT_SCAN_ENABLE_LEN (6) - -/* --- LE extended create connection (OCF 0x0043) */ -#define BLE_HCI_LE_EXT_CREATE_CONN_LEN BLE_HCI_VARIABLE_LEN -#define BLE_HCI_LE_EXT_CREATE_CONN_BASE_LEN (10) - -/* --- LE periodic advertising create sync (OCF 0x0044) */ -#define BLE_HCI_LE_PERIODIC_ADV_CREATE_SYNC_LEN (14) - -/* --- LE periodic advertising terminate (OCF 0x0046) */ -#define BLE_HCI_LE_PERIODIC_ADV_TERM_SYNC_LEN (2) - -/* --- LE add device to periodic advertising list (OCF 0x0047) */ -#define BLE_HCI_LE_ADD_DEV_TO_PERIODIC_ADV_LIST_LEN (8) /* --- LE remove device from periodic advertising list (OCF 0x0048) */ -#define BLE_HCI_LE_REM_DEV_FROM_PERIODIC_ADV_LIST_LEN (8) - #define BLE_HCI_PERIODIC_DATA_STATUS_COMPLETE 0x00 #define BLE_HCI_PERIODIC_DATA_STATUS_INCOMPLETE 0x01 #define BLE_HCI_PERIODIC_DATA_STATUS_TRUNCATED 0x02 -/* --- LE write RF path (OCF 0x004D) */ -#define BLE_HCI_LE_WR_RF_PATH_COMPENSATION_LEN (4) - /* --- LE set privacy mode (OCF 0x004E) */ -#define BLE_HCI_LE_SET_PRIVACY_MODE_LEN (8) #define BLE_HCI_PRIVACY_NETWORK (0) #define BLE_HCI_PRIVACY_DEVICE (1) @@ -602,25 +1059,83 @@ extern "C" { #define BLE_HCI_EVCODE_CONN_DONE (0x03) #define BLE_HCI_EVCODE_CONN_REQUEST (0x04) #define BLE_HCI_EVCODE_DISCONN_CMP (0x05) +struct ble_hci_ev_disconn_cmp { + uint8_t status; + uint16_t conn_handle; + uint8_t reason; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_AUTH_CMP (0x06) #define BLE_HCI_EVCODE_REM_NAME_REQ_CMP (0x07) + #define BLE_HCI_EVCODE_ENCRYPT_CHG (0x08) +struct ble_hci_ev_enrypt_chg { + uint8_t status; + uint16_t connection_handle; + uint8_t enabled; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_CHG_LINK_KEY_CMP (0x09) #define BLE_HCI_EVCODE_MASTER_LINK_KEY_CMP (0x0A) #define BLE_HCI_EVCODE_RD_REM_SUPP_FEAT_CMP (0x0B) #define BLE_HCI_EVCODE_RD_REM_VER_INFO_CMP (0x0C) +struct ble_hci_ev_rd_rem_ver_info_cmp { + uint8_t status; + uint16_t conn_handle; + uint8_t version; + uint16_t manufacturer; + uint16_t subversion; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_QOS_SETUP_CMP (0x0D) + #define BLE_HCI_EVCODE_COMMAND_COMPLETE (0x0E) +struct ble_hci_ev_command_complete { + uint8_t num_packets; + uint16_t opcode; + uint8_t status; + uint8_t return_params[0]; +} __attribute__((packed)); +/* NOP is exception and has no return parameters */ +struct ble_hci_ev_command_complete_nop { + uint8_t num_packets; + uint16_t opcode; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_COMMAND_STATUS (0x0F) +struct ble_hci_ev_command_status { + uint8_t status; + uint8_t num_packets; + uint16_t opcode; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_HW_ERROR (0x10) +struct ble_hci_ev_hw_error { + uint8_t hw_code; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_NUM_COMP_PKTS (0x13) +struct comp_pkt { + uint16_t handle; + uint16_t packets; +} __attribute__((packed));; +struct ble_hci_ev_num_comp_pkts { + uint8_t count; + struct comp_pkt completed[0]; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_MODE_CHANGE (0x14) #define BLE_HCI_EVCODE_RETURN_LINK_KEYS (0x15) #define BLE_HCI_EVCODE_PIN_CODE_REQ (0x16) #define BLE_HCI_EVCODE_LINK_KEY_REQ (0x17) #define BLE_HCI_EVCODE_LINK_KEY_NOTIFY (0x18) #define BLE_HCI_EVCODE_LOOPBACK_CMD (0x19) + #define BLE_HCI_EVCODE_DATA_BUF_OVERFLOW (0x1A) +struct ble_hci_ev_data_buf_overflow { + uint8_t link_type; +} __attribute__((packed)); + #define BLE_HCI_EVCODE_MAX_SLOTS_CHG (0x1B) #define BLE_HCI_EVCODE_READ_CLK_OFF_COMP (0x1C) #define BLE_HCI_EVCODE_CONN_PKT_TYPE_CHG (0x1D) @@ -635,7 +1150,13 @@ extern "C" { #define BLE_HCI_EVCODE_SYNCH_CONN_CHG (0x2D) #define BLE_HCI_EVCODE_SNIFF_SUBRATING (0x2E) #define BLE_HCI_EVCODE_EXT_INQ_RESULT (0x2F) + #define BLE_HCI_EVCODE_ENC_KEY_REFRESH (0x30) +struct ble_hci_ev_enc_key_refresh { + uint8_t status; + uint16_t conn_handle; +} __attribute__((packed)); + #define BLE_HCI_EVOCDE_IO_CAP_REQ (0x31) #define BLE_HCI_EVCODE_IO_CAP_RSP (0x32) #define BLE_HCI_EVCODE_USER_CONFIRM_REQ (0x33) @@ -648,7 +1169,13 @@ extern "C" { #define BLE_HCI_EVCODE_USER_PASSKEY_NOTIFY (0x3B) #define BLE_HCI_EVCODE_KEYPRESS_NOTIFY (0x3C) #define BLE_HCI_EVCODE_REM_HOST_SUPP_FEAT (0x3D) + #define BLE_HCI_EVCODE_LE_META (0x3E) +struct ble_hci_ev_le_meta { + uint8_t subevent; + uint8_t data[0]; +} __attribute__((packed)); + /* NOTE: 0x3F not defined */ #define BLE_HCI_EVCODE_PHYS_LINK_COMP (0x40) #define BLE_HCI_EVCODE_CHAN_SELECTED (0x41) @@ -673,63 +1200,251 @@ extern "C" { #define BLE_HCI_EVCODE_SLAVE_PAGE_RSP_TMO (0x54) #define BLE_HCI_EVCODE_SLAVE_BCAST_CHAN_MAP (0x55) #define BLE_HCI_EVCODE_INQ_RSP_NOTIFY (0x56) + #define BLE_HCI_EVCODE_AUTH_PYLD_TMO (0x57) +struct ble_hci_ev_auth_pyld_tmo { + uint16_t conn_handle; +} __attribute__((packed)); + +#define BLE_HCI_EVCODE_SAM_STATUS_CHG (0x58) + #define BLE_HCI_EVCODE_VENDOR_DEBUG (0xFF) +struct ble_hci_ev_vendor_debug { + uint8_t id; + uint8_t data[0]; +}__attribute__((packed)); /* LE sub-event codes */ #define BLE_HCI_LE_SUBEV_CONN_COMPLETE (0x01) +struct ble_hci_ev_le_subev_conn_complete { + uint8_t subev_code; + uint8_t status; + uint16_t conn_handle; + uint8_t role; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint8_t mca; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_ADV_RPT (0x02) +struct adv_report { + uint8_t type; + uint8_t addr_type; + uint8_t addr[6]; + uint8_t data_len; + uint8_t data[0]; +} __attribute__((packed)); +struct ble_hci_ev_le_subev_adv_rpt { + uint8_t subev_code; + uint8_t num_reports; + struct adv_report reports[0]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_CONN_UPD_COMPLETE (0x03) +struct ble_hci_ev_le_subev_conn_upd_complete { + uint8_t subev_code; + uint8_t status; + uint16_t conn_handle; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_RD_REM_USED_FEAT (0x04) +struct ble_hci_ev_le_subev_rd_rem_used_feat { + uint8_t subev_code; + uint8_t status; + uint16_t conn_handle; + uint8_t features[8]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_LT_KEY_REQ (0x05) +struct ble_hci_ev_le_subev_lt_key_req { + uint8_t subev_code; + uint16_t conn_handle; + uint64_t rand; + uint16_t div; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_REM_CONN_PARM_REQ (0x06) +struct ble_hci_ev_le_subev_rem_conn_param_req { + uint8_t subev_code; + uint16_t conn_handle; + uint16_t min_interval; + uint16_t max_interval; + uint16_t latency; + uint16_t timeout; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_DATA_LEN_CHG (0x07) +struct ble_hci_ev_le_subev_data_len_chg { + uint8_t subev_code; + uint16_t conn_handle; + uint16_t max_tx_octets; + uint16_t max_tx_time; + uint16_t max_rx_octets; + uint16_t max_rx_time; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_RD_LOC_P256_PUBKEY (0x08) +struct ble_hci_ev_le_subev_rd_loc_p256_pubkey { + uint8_t subev_code; + uint8_t status; + uint8_t public_key[64]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_GEN_DHKEY_COMPLETE (0x09) +struct ble_hci_ev_le_subev_gen_dhkey_complete { + uint8_t subev_code; + uint8_t status; + uint8_t dh_key[32]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE (0x0A) +struct ble_hci_ev_le_subev_enh_conn_complete { + uint8_t subev_code; + uint8_t status; + uint16_t conn_handle; + uint8_t role; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t local_rpa[6]; + uint8_t peer_rpa[6]; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint8_t mca; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_DIRECT_ADV_RPT (0x0B) +struct dir_adv_report { + uint8_t type; + uint8_t addr_type; + uint8_t addr[6]; + uint8_t dir_addr_type; + uint8_t dir_addr[6]; + int8_t rssi; +} __attribute__((packed)); +struct ble_hci_ev_le_subev_direct_adv_rpt { + uint8_t subev_code; + uint8_t num_reports; + struct dir_adv_report reports[0]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_PHY_UPDATE_COMPLETE (0x0C) +struct ble_hci_ev_le_subev_phy_update_complete { + uint8_t subev_code; + uint8_t status; + uint16_t conn_handle; + uint8_t tx_phy; + uint8_t rx_phy; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_EXT_ADV_RPT (0x0D) +struct ext_adv_report { + uint16_t evt_type; + uint8_t addr_type; + uint8_t addr[6]; + uint8_t pri_phy; + uint8_t sec_phy; + uint8_t sid; + int8_t tx_power; + int8_t rssi; + uint16_t periodic_itvl; + uint8_t dir_addr_type; + uint8_t dir_addr[6]; + uint8_t data_len; + uint8_t data[0]; +} __attribute__((packed)); +struct ble_hci_ev_le_subev_ext_adv_rpt { + uint8_t subev_code; + uint8_t num_reports; + struct ext_adv_report reports[0]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_PERIODIC_ADV_SYNC_ESTAB (0x0E) +struct ble_hci_ev_le_subev_periodic_adv_sync_estab { + uint8_t subev_code; + uint8_t status; + uint16_t sync_handle; + uint8_t sid; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t phy; + uint16_t interval; + uint8_t aca; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_PERIODIC_ADV_RPT (0x0F) +struct ble_hci_ev_le_subev_periodic_adv_rpt { + uint8_t subev_code; + uint16_t sync_handle; + int8_t tx_power; + int8_t rssi; + uint8_t cte_type; + uint8_t data_status; + uint8_t data_len; + uint8_t data[0]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_PERIODIC_ADV_SYNC_LOST (0x10) +struct ble_hci_ev_le_subev_periodic_adv_sync_lost { + uint8_t subev_code; + uint16_t sync_handle; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_SCAN_TIMEOUT (0x11) +struct ble_hci_ev_le_subev_scan_timeout { + uint8_t subev_code; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_ADV_SET_TERMINATED (0x12) +struct ble_hci_ev_le_subev_adv_set_terminated { + uint8_t subev_code; + uint8_t status; + uint8_t adv_handle; + uint16_t conn_handle; + uint8_t num_events; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_SCAN_REQ_RCVD (0x13) +struct ble_hci_ev_le_subev_scan_req_rcvd { + uint8_t subev_code; + uint8_t adv_handle; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; +} __attribute__((packed)); + #define BLE_HCI_LE_SUBEV_CHAN_SEL_ALG (0x14) +struct ble_hci_ev_le_subev_chan_sel_alg { + uint8_t subev_code; + uint16_t conn_handle; + uint8_t csa; +} __attribute__((packed)); -/* Generic event header */ -#define BLE_HCI_EVENT_HDR_LEN (2) +#define BLE_HCI_LE_SUBEV_CONNLESS_IQ_RPT (0x15) +#define BLE_HCI_LE_SUBEV_CONN_IQ_RPT (0x16) +#define BLE_HCI_LE_SUBEV_CTE_REQ_FAILED (0x17) -/* Event specific definitions */ -/* Event disconnect complete */ -#define BLE_HCI_EVENT_DISCONN_COMPLETE_LEN (4) - -/* Event encryption change (code=0x08) */ -#define BLE_HCI_EVENT_ENCRYPT_CHG_LEN (4) - -/* Event hardware error (code=0x10) */ -#define BLE_HCI_EVENT_HW_ERROR_LEN (1) - -/* Event key refresh complete (code=0x30) */ -#define BLE_HCI_EVENT_ENC_KEY_REFRESH_LEN (3) - -/* Event command complete */ -#define BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN (5) -#define BLE_HCI_EVENT_CMD_COMPLETE_MIN_LEN (6) - -/* Event command status */ -#define BLE_HCI_EVENT_CMD_STATUS_LEN (6) - -/* Number of completed packets */ -#define BLE_HCI_EVENT_NUM_COMP_PKTS_HDR_LEN (1) -#define BLE_HCI_EVENT_NUM_COMP_PKTS_ENT_LEN (4) - -/* Read remote version informaton */ -#define BLE_HCI_EVENT_RD_RM_VER_LEN (8) +#define BLE_HCI_LE_SUBEV_PERIODIC_ADV_SYNC_TRANSFER (0x18) +struct ble_hci_ev_le_subev_periodic_adv_sync_transfer { + uint8_t subev_code; + uint8_t status; + uint16_t conn_handle; + uint16_t service_data; + uint16_t sync_handle; + uint8_t sid; + uint8_t peer_addr_type; + uint8_t peer_addr[6]; + uint8_t phy; + uint16_t interval; + uint8_t aca; +} __attribute__((packed)); /* Data buffer overflow event */ -#define BLE_HCI_EVENT_DATABUF_OVERFLOW_LEN (1) #define BLE_HCI_EVENT_ACL_BUF_OVERFLOW (0x01) /* Advertising report */ @@ -747,11 +1462,7 @@ extern "C" { #define BLE_HCI_LEGACY_ADV_EVTYPE_SCAN_RSP_ADV_IND (0x1b) #define BLE_HCI_LEGACY_ADV_EVTYPE_SCAN_RSP_ADV_SCAN_IND (0x1a) -/* LE sub-event specific definitions */ -#define BLE_HCI_LE_MIN_LEN (1) /* Not including event hdr. */ - /* LE connection complete event (sub event 0x01) */ -#define BLE_HCI_LE_CONN_COMPLETE_LEN (19) #define BLE_HCI_LE_CONN_COMPLETE_ROLE_MASTER (0x00) #define BLE_HCI_LE_CONN_COMPLETE_ROLE_SLAVE (0x01) @@ -759,53 +1470,9 @@ extern "C" { #define BLE_HCI_LE_CONN_HANDLE_MAX (0x0eff) /* LE advertising report event. (sub event 0x02) */ -#define BLE_HCI_LE_ADV_RPT_MIN_LEN (12) -#define BLE_HCI_LE_ADV_DIRECT_RPT_LEN (18) #define BLE_HCI_LE_ADV_RPT_NUM_RPTS_MIN (1) #define BLE_HCI_LE_ADV_RPT_NUM_RPTS_MAX (0x19) -/* Length of each record in an LE direct advertising report event. */ -#define BLE_HCI_LE_ADV_DIRECT_RPT_SUB_LEN (16) - -/* LE connection update complete event (sub event 0x03) */ -#define BLE_HCI_LE_CONN_UPD_LEN (10) - -/* LE long term key request event (sub event 0x05) */ -#define BLE_HCI_LE_LT_KEY_REQ_LEN (13) - -/* LE connection update complete event (sub event 0x03) */ -#define BLE_HCI_LE_RD_REM_USED_FEAT_LEN (12) - -/* LE remote connection parameter request event (sub event 0x06) */ -#define BLE_HCI_LE_REM_CONN_PARM_REQ_LEN (11) - -/* LE data length change event (sub event 0x07) */ -#define BLE_HCI_LE_DATA_LEN_CHG_LEN (11) - -/* LE PHY update complete event (sub event 0x0C) */ -#define BLE_HCI_LE_PHY_UPD_LEN (6) - -/* LE Periodic Advertising Sync Established Event (sub event 0x0e) */ -#define BLE_HCI_LE_PERIODIC_ADV_SYNC_ESTAB_LEN (16) - -/* LE Periodic Advertising Report Event (sub event 0x0f) */ -#define BLE_HCI_LE_PERIODIC_ADV_RPT_LEN (8) - -/* LE Periodic Advertising Sync Lost Event (sub event 0x10) */ -#define BLE_HCI_LE_PERIODIC_ADV_SYNC_LOST_LEN (3) - -/* LE Scan Timeout Event (sub event 0x11) */ -#define BLE_HCI_LE_SUBEV_SCAN_TIMEOUT_LEN (1) - -/* LE Advertising Set Terminated Event (sub event 0x12) */ -#define BLE_HCI_LE_SUBEV_ADV_SET_TERMINATED_LEN (6) - -/* LE Scan Request Received event (sub event 0x13) */ -#define BLE_HCI_LE_SUBEV_SCAN_REQ_RCVD_LEN (9) - -/* LE Channel Selection Algorithm event (sub event 0x14) */ -#define BLE_HCI_LE_SUBEV_CHAN_SEL_ALG_LEN (4) - /* Bluetooth Assigned numbers for version information.*/ #define BLE_HCI_VER_BCS_1_0b (0) #define BLE_HCI_VER_BCS_1_1 (1) @@ -817,6 +1484,8 @@ extern "C" { #define BLE_HCI_VER_BCS_4_1 (7) #define BLE_HCI_VER_BCS_4_2 (8) #define BLE_HCI_VER_BCS_5_0 (9) +#define BLE_HCI_VER_BCS_5_1 (10) +#define BLE_HCI_VER_BCS_5_2 (11) #define BLE_LMP_VER_BCS_1_0b (0) #define BLE_LMP_VER_BCS_1_1 (1) @@ -828,399 +1497,22 @@ extern "C" { #define BLE_LMP_VER_BCS_4_1 (7) #define BLE_LMP_VER_BCS_4_2 (8) #define BLE_LMP_VER_BCS_5_0 (9) +#define BLE_LMP_VER_BCS_5_1 (10) +#define BLE_LMP_VER_BCS_5_2 (11) -/* Sub-event 0x0A: enhanced connection complete */ -#define BLE_HCI_LE_ENH_CONN_COMPLETE_LEN (31) - -/*--- Shared data structures ---*/ - -/* Host buffer size (OGF=0x03, OCF=0x0033) */ -struct hci_host_buf_size -{ - uint16_t acl_pkt_len; - uint8_t sync_pkt_len; - uint16_t num_acl_pkts; - uint16_t num_sync_pkts; -}; - -/* Host number of completed packets (OGF=0x03, OCF=0x0035) */ -struct hci_host_num_comp_pkts_entry -{ - uint16_t conn_handle; - uint16_t num_pkts; -}; - -/* Read local version information (OGF=0x0004, OCF=0x0001) */ -struct hci_loc_ver_info -{ - uint8_t status; - uint8_t hci_version; - uint16_t hci_revision; - uint8_t lmp_pal_version; - uint16_t mfrg_name; - uint8_t lmp_pal_subversion; -}; - -/* set random address command (ocf = 0x0005) */ -struct hci_rand_addr -{ - uint8_t addr[6]; -}; - -/* set advertising parameters command (ocf = 0x0006) */ -struct hci_adv_params -{ - uint8_t adv_type; - uint8_t adv_channel_map; - uint8_t own_addr_type; - uint8_t peer_addr_type; - uint8_t adv_filter_policy; - uint16_t adv_itvl_min; - uint16_t adv_itvl_max; - uint8_t peer_addr[BLE_DEV_ADDR_LEN]; -}; - -/* LE create connection command (ocf=0x000d). */ -struct hci_create_conn -{ - uint16_t scan_itvl; - uint16_t scan_window; - uint8_t filter_policy; - uint8_t peer_addr_type; - uint8_t peer_addr[BLE_DEV_ADDR_LEN]; - uint8_t own_addr_type; - uint16_t conn_itvl_min; - uint16_t conn_itvl_max; - uint16_t conn_latency; - uint16_t supervision_timeout; - uint16_t min_ce_len; - uint16_t max_ce_len; -}; - -/* LE Read Local P-256 Public Key Complete Event */ -struct hci_le_subev_rd_loc_p256_pubkey { - uint8_t status; - uint8_t pubkey[64]; -} __attribute__((packed)); - -/* LE Generate DHKey Complete Event */ -struct hci_le_subev_gen_dhkey_complete { - uint8_t status; - uint8_t dhkey[32]; -} __attribute__((packed)); - -/* LE Directed Advertising Report Event */ -struct hci_le_subev_direct_adv_rpt_param { - uint8_t evt_type; - uint8_t addr_type; - uint8_t addr[6]; - uint8_t dir_addr_type; - uint8_t dir_addr[6]; - int8_t rssi; -} __attribute__((packed)); - -struct hci_le_subev_direct_adv_rpt { - uint8_t num_reports; - struct hci_le_subev_direct_adv_rpt_param params[0]; -} __attribute__((packed)); - -#if MYNEWT_VAL(BLE_EXT_ADV) -/* LE create connection command (ocf=0x0043). */ -struct hci_ext_conn_params -{ - uint16_t scan_itvl; - uint16_t scan_window; - uint16_t conn_itvl_min; - uint16_t conn_itvl_max; - uint16_t conn_latency; - uint16_t supervision_timeout; - uint16_t min_ce_len; - uint16_t max_ce_len; -}; - -struct hci_ext_create_conn -{ - uint8_t filter_policy; - uint8_t own_addr_type; - uint8_t peer_addr_type; - uint8_t peer_addr[BLE_DEV_ADDR_LEN]; - uint8_t init_phy_mask; - struct hci_ext_conn_params params[3]; -}; - -struct hci_ext_adv_report_param { - uint16_t evt_type; - uint8_t addr_type; - uint8_t addr[6]; - uint8_t prim_phy; - uint8_t sec_phy; - uint8_t sid; - int8_t tx_power; - int8_t rssi; - uint16_t per_adv_itvl; - uint8_t dir_addr_type; - uint8_t dir_addr[6]; - uint8_t adv_data_len; - uint8_t adv_data[0]; -} __attribute__((packed)); - -struct hci_ext_adv_report { - /* We support one report per event for now */ - uint8_t subevt; - uint8_t num_reports; - struct hci_ext_adv_report_param params[0]; -} __attribute__((packed)); - -/* Ext Adv Set enable parameters, not in HCI order */ -struct hci_ext_adv_set -{ - uint8_t handle; - uint8_t events; - uint16_t duration; -}; - -/* Ext Advertising Parameters */ -struct hci_ext_adv_params -{ - uint16_t properties; - uint32_t min_interval; - uint32_t max_interval; - uint8_t chan_map; - uint8_t own_addr_type; - uint8_t peer_addr_type; - uint8_t peer_addr[6]; - uint8_t filter_policy; - int8_t tx_power; - uint8_t primary_phy; - uint8_t max_skip; - uint8_t secondary_phy; - uint8_t sid; - uint8_t scan_req_notif; -}; - -/* LE Extended Advertising Report Event */ -struct hci_le_subev_ext_adv_rpt { - uint8_t num_reports; - struct hci_ext_adv_report_param params[0]; -} __attribute__((packed)); - -#if MYNEWT_VAL(BLE_PERIODIC_ADV) -/* LE Periodic Advertising Sync Established Event */ -struct hci_le_subev_periodic_adv_sync_estab { - uint8_t status; - uint16_t sync_handle; - uint8_t sid; - uint8_t adv_addr_type; - uint8_t adv_addr[6]; - uint8_t adv_phy; - uint16_t per_adv_ival; - uint8_t adv_clk_accuracy; -} __attribute__((packed)); - -/* LE Periodic Advertising Report Event */ -struct hci_le_subev_periodic_adv_rpt { - uint16_t sync_handle; - int8_t tx_power; - int8_t rssi; - uint8_t unused; - uint8_t data_status; - uint8_t data_length; - uint8_t data[0]; -} __attribute__((packed)); - -/* LE Periodic Advertising Sync Lost Event */ -struct hci_le_subev_periodic_adv_sync_lost { - uint16_t sync_handle; -} __attribute__((packed)); -#endif - -/* LE Advertising Set Terminated Event */ -struct hci_le_subev_adv_set_terminated { - uint8_t status; - uint8_t adv_handle; - uint16_t conn_handle; - uint8_t num_compl_ext_adv_ev; -} __attribute__((packed)); - -/* LE Scan Request Received Event */ -struct hci_le_subev_scan_req_rcvd { - uint8_t adv_handle; - uint8_t scan_addr_type; - uint8_t scan_addr[6]; -} __attribute__((packed)); +/* selected HCI and LMP version */ +#if MYNEWT_VAL(BLE_VERSION) == 50 +#define BLE_HCI_VER_BCS BLE_HCI_VER_BCS_5_0 +#define BLE_LMP_VER_BCS BLE_LMP_VER_BCS_5_0 +#elif MYNEWT_VAL(BLE_VERSION) == 51 +#define BLE_HCI_VER_BCS BLE_HCI_VER_BCS_5_1 +#define BLE_LMP_VER_BCS BLE_LMP_VER_BCS_5_1 +#elif MYNEWT_VAL(BLE_VERSION) == 52 +#define BLE_HCI_VER_BCS BLE_HCI_VER_BCS_5_2 +#define BLE_LMP_VER_BCS BLE_LMP_VER_BCS_5_2 #endif -/* LE Channel Selection Algorithm Event */ -struct hci_le_subev_chan_sel_alg { - uint16_t conn_handle; - uint8_t chan_sel_alg; -} __attribute__((packed)); - -/* LE connection update command (ocf=0x0013). */ -struct hci_conn_update -{ - uint16_t handle; - uint16_t conn_itvl_min; - uint16_t conn_itvl_max; - uint16_t conn_latency; - uint16_t supervision_timeout; - uint16_t min_ce_len; - uint16_t max_ce_len; -}; - -/* LE start encryption command (ocf=0x0019) (note: fields out of order). */ -struct hci_start_encrypt -{ - uint16_t connection_handle; - uint16_t encrypted_diversifier; - uint64_t random_number; - uint8_t long_term_key[16]; -}; - -/* LE long term key request reply command (ocf=0x001a). */ -struct hci_lt_key_req_reply -{ - uint16_t conn_handle; - uint8_t long_term_key[16]; -}; - -/* LE Remote connection parameter request reply command */ -struct hci_conn_param_reply -{ - uint16_t handle; - uint16_t conn_itvl_min; - uint16_t conn_itvl_max; - uint16_t conn_latency; - uint16_t supervision_timeout; - uint16_t min_ce_len; - uint16_t max_ce_len; -}; - -/* LE Remote connection parameter request negative reply command */ -struct hci_conn_param_neg_reply -{ - uint16_t handle; - uint8_t reason; -}; - -/* Encryption change event (code=0x08) (note: fields out of order) */ -struct hci_encrypt_change -{ - uint8_t status; - uint8_t encryption_enabled; - uint16_t connection_handle; -}; - -/* Encryption key refresh complete event (code=0x30) */ -struct hci_encrypt_key_refresh -{ - uint8_t status; - uint16_t connection_handle; -}; - -/* Connection complete LE meta subevent */ -struct hci_le_conn_complete -{ - uint8_t subevent_code; - uint8_t status; - uint16_t connection_handle; - uint8_t role; - uint8_t peer_addr_type; - uint8_t peer_addr[BLE_DEV_ADDR_LEN]; - uint16_t conn_itvl; - uint16_t conn_latency; - uint16_t supervision_timeout; - uint8_t master_clk_acc; - uint8_t local_rpa[BLE_DEV_ADDR_LEN]; - uint8_t peer_rpa[BLE_DEV_ADDR_LEN]; -}; - -/* Connection update complete LE meta subevent */ -struct hci_le_conn_upd_complete -{ - uint8_t subevent_code; - uint8_t status; - uint16_t connection_handle; - uint16_t conn_itvl; - uint16_t conn_latency; - uint16_t supervision_timeout; -}; - -/* Remote connection parameter request LE meta subevent */ -struct hci_le_conn_param_req -{ - uint8_t subevent_code; - uint16_t connection_handle; - uint16_t itvl_min; - uint16_t itvl_max; - uint16_t latency; - uint16_t timeout; -}; - -/* Read Remote Supported Features complete LE meta subevent */ -struct hci_le_rd_rem_supp_feat_complete -{ - uint8_t subevent_code; - uint8_t status; - uint16_t connection_handle; - uint8_t features[8]; -}; - -/* LE long term key request event (note: fields out of order). */ -struct hci_le_lt_key_req -{ - uint64_t random_number; - uint16_t connection_handle; - uint16_t encrypted_diversifier; - uint8_t subevent_code; -}; - -/* Disconnection complete event (note: fields out of order). */ -struct hci_disconn_complete -{ - uint16_t connection_handle; - uint8_t status; - uint8_t reason; -}; - -/* Read RSSI command-complete parameters (note: fields out of order). */ -struct hci_read_rssi_ack_params -{ - uint16_t connection_handle; - uint8_t status; - int8_t rssi; -}; - -/* PHY updated completed LE meta subevent */ -struct hci_le_phy_upd_complete -{ - uint8_t subevent_code; - uint8_t status; - uint16_t connection_handle; - uint8_t tx_phy; - uint8_t rx_phy; -}; - -/* LE Advertising Set Terminated subevent*/ -struct hci_le_adv_set_terminated -{ - uint8_t subevent_code; - uint8_t status; - uint8_t adv_handle; - uint16_t conn_handle; - uint8_t completed_events; -}; - -/* LE Scan Request Received subevent */ -struct hci_le_scan_req_rcvd -{ - uint8_t subevent_code; - uint8_t adv_handle; - uint8_t scan_addr_type; - uint8_t scan_addr[BLE_DEV_ADDR_LEN]; -}; - #define BLE_HCI_DATA_HDR_SZ 4 #define BLE_HCI_DATA_HANDLE(handle_pb_bc) (((handle_pb_bc) & 0x0fff) >> 0) #define BLE_HCI_DATA_PB(handle_pb_bc) (((handle_pb_bc) & 0x3000) >> 12) @@ -1237,16 +1529,6 @@ struct hci_data_hdr #define BLE_HCI_PB_FIRST_FLUSH 2 #define BLE_HCI_PB_FULL 3 -struct hci_add_dev_to_resolving_list { - uint8_t addr_type; - uint8_t addr[6]; - uint8_t local_irk[16]; - uint8_t peer_irk[16]; -}; - -/* External data structures */ -extern const uint8_t g_ble_hci_le_cmd_len[BLE_HCI_NUM_LE_CMDS]; - #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.c index a6a12316b..ff8e99997 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.c @@ -6,14 +6,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include - -#include -#include "mesh/mesh.h" - #include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_ACCESS)) -#include "host/ble_hs_log.h" +#define MESH_LOG_MODULE BLE_MESH_ACCESS_LOG + +#include +#include + +#include "mesh/mesh.h" #include "mesh_priv.h" #include "adv.h" @@ -29,24 +28,6 @@ static const struct bt_mesh_comp *dev_comp; static u16_t dev_primary_addr; -static const struct { - const u16_t id; - int (*const init)(struct bt_mesh_model *model, bool primary); -} model_init[] = { - { BT_MESH_MODEL_ID_CFG_SRV, bt_mesh_cfg_srv_init }, - { BT_MESH_MODEL_ID_HEALTH_SRV, bt_mesh_health_srv_init }, -#if MYNEWT_VAL(BLE_MESH_CFG_CLI) - { BT_MESH_MODEL_ID_CFG_CLI, bt_mesh_cfg_cli_init }, -#endif -#if MYNEWT_VAL(BLE_MESH_HEALTH_CLI) - { BT_MESH_MODEL_ID_HEALTH_CLI, bt_mesh_health_cli_init }, -#endif -#if MYNEWT_VAL(BLE_MESH_SHELL_MODELS) - { BT_MESH_MODEL_ID_GEN_ONOFF_CLI, bt_mesh_gen_model_cli_init }, - { BT_MESH_MODEL_ID_GEN_LEVEL_CLI, bt_mesh_gen_model_cli_init }, -#endif -}; - void bt_mesh_model_foreach(void (*func)(struct bt_mesh_model *mod, struct bt_mesh_elem *elem, bool vnd, bool primary, @@ -101,7 +82,11 @@ s32_t bt_mesh_model_pub_period_get(struct bt_mesh_model *mod) CODE_UNREACHABLE; } - return period >> mod->pub->period_div; + if (mod->pub->fast_period) { + return period >> mod->pub->period_div; + } else { + return period; + } } static s32_t next_period(struct bt_mesh_model *mod) @@ -146,7 +131,24 @@ static void publish_sent(int err, void *user_data) } } +static void publish_start(u16_t duration, int err, void *user_data) +{ + struct bt_mesh_model *mod = user_data; + struct bt_mesh_model_pub *pub = mod->pub; + + if (err) { + BT_ERR("Failed to publish: err %d", err); + return; + } + + /* Initialize the timestamp for the beginning of a new period */ + if (pub->count == BT_MESH_PUB_TRANSMIT_COUNT(pub->retransmit)) { + pub->period_start = k_uptime_get_32(); + } +} + static const struct bt_mesh_send_cb pub_sent_cb = { + .start = publish_start, .end = publish_sent, }; @@ -223,8 +225,6 @@ static void mod_publish(struct ble_npl_event *work) __ASSERT_NO_MSG(pub->update != NULL); - pub->period_start = k_uptime_get_32(); - err = pub->update(pub->mod); if (err) { BT_ERR("Failed to update publication message"); @@ -235,11 +235,6 @@ static void mod_publish(struct ble_npl_event *work) if (err) { BT_ERR("Publishing failed (err %d)", err); } - - if (pub->count) { - /* Retransmissions also control the timer */ - k_delayed_work_cancel(&pub->timer); - } } struct bt_mesh_elem *bt_mesh_model_elem(struct bt_mesh_model *mod) @@ -297,14 +292,8 @@ static void mod_init(struct bt_mesh_model *mod, struct bt_mesh_elem *elem, mod->mod_idx = mod - elem->models; } - if (vnd) { - return; - } - - for (i = 0; i < ARRAY_SIZE(model_init); i++) { - if (model_init[i].id == mod->id) { - model_init[i].init(mod, primary); - } + if (mod->cb && mod->cb->init) { + mod->cb->init(mod); } } @@ -354,7 +343,7 @@ u16_t bt_mesh_primary_addr(void) return dev_primary_addr; } -u16_t *bt_mesh_model_find_group(struct bt_mesh_model *mod, u16_t addr) +static u16_t *model_group_get(struct bt_mesh_model *mod, u16_t addr) { int i; @@ -367,6 +356,45 @@ u16_t *bt_mesh_model_find_group(struct bt_mesh_model *mod, u16_t addr) return NULL; } +struct find_group_visitor_ctx { + u16_t *entry; + struct bt_mesh_model *mod; + u16_t addr; +}; + +static enum bt_mesh_walk find_group_mod_visitor(struct bt_mesh_model *mod, + u32_t depth, void *user_data) +{ + struct find_group_visitor_ctx *ctx = user_data; + + if (mod->elem_idx != ctx->mod->elem_idx) { + return BT_MESH_WALK_CONTINUE; + } + + ctx->entry = model_group_get(mod, ctx->addr); + if (ctx->entry) { + ctx->mod = mod; + return BT_MESH_WALK_STOP; + } + + return BT_MESH_WALK_CONTINUE; +} + +u16_t *bt_mesh_model_find_group(struct bt_mesh_model **mod, u16_t addr) +{ + struct find_group_visitor_ctx ctx = { + .mod = *mod, + .entry = NULL, + .addr = addr, + }; + + bt_mesh_model_tree_walk(bt_mesh_model_root(*mod), + find_group_mod_visitor, &ctx); + + *mod = ctx.mod; + return ctx.entry; +} + static struct bt_mesh_model *bt_mesh_elem_find_group(struct bt_mesh_elem *elem, u16_t group_addr) { @@ -377,7 +405,7 @@ static struct bt_mesh_model *bt_mesh_elem_find_group(struct bt_mesh_elem *elem, for (i = 0; i < elem->model_count; i++) { model = &elem->models[i]; - match = bt_mesh_model_find_group(model, group_addr); + match = model_group_get(model, group_addr); if (match) { return model; } @@ -386,7 +414,7 @@ static struct bt_mesh_model *bt_mesh_elem_find_group(struct bt_mesh_elem *elem, for (i = 0; i < elem->vnd_model_count; i++) { model = &elem->vnd_models[i]; - match = bt_mesh_model_find_group(model, group_addr); + match = model_group_get(model, group_addr); if (match) { return model; } @@ -397,17 +425,21 @@ static struct bt_mesh_model *bt_mesh_elem_find_group(struct bt_mesh_elem *elem, struct bt_mesh_elem *bt_mesh_elem_find(u16_t addr) { - int i; + u16_t index; - for (i = 0; i < dev_comp->elem_count; i++) { - struct bt_mesh_elem *elem = &dev_comp->elem[i]; + if (BT_MESH_ADDR_IS_UNICAST(addr)) { + index = (addr - dev_comp->elem[0].addr); + if (index < dev_comp->elem_count) { + return &dev_comp->elem[index]; + } else { + return NULL; + } + } - if (BT_MESH_ADDR_IS_GROUP(addr) || - BT_MESH_ADDR_IS_VIRTUAL(addr)) { - if (bt_mesh_elem_find_group(elem, addr)) { - return elem; - } - } else if (elem->addr == addr) { + for (index = 0; index < dev_comp->elem_count; index++) { + struct bt_mesh_elem *elem = &dev_comp->elem[index]; + + if (bt_mesh_elem_find_group(elem, addr)) { return elem; } } @@ -425,7 +457,9 @@ static bool model_has_key(struct bt_mesh_model *mod, u16_t key) int i; for (i = 0; i < ARRAY_SIZE(mod->keys); i++) { - if (mod->keys[i] == key) { + if (mod->keys[i] == key || + (mod->keys[i] == BT_MESH_KEY_DEV_ANY && + BT_MESH_IS_DEV_KEY(key))) { return true; } } @@ -433,9 +467,19 @@ static bool model_has_key(struct bt_mesh_model *mod, u16_t key) return false; } +static bool model_has_dst(struct bt_mesh_model *mod, u16_t dst) +{ + if (BT_MESH_ADDR_IS_UNICAST(dst)) { + return (dev_comp->elem[mod->elem_idx].addr == dst); + } else if (BT_MESH_ADDR_IS_GROUP(dst) || BT_MESH_ADDR_IS_VIRTUAL(dst)) { + return bt_mesh_model_find_group(&mod, dst); + } + + return (mod->elem_idx == 0 && bt_mesh_fixed_group_match(dst)); +} + static const struct bt_mesh_model_op *find_op(struct bt_mesh_model *models, - u8_t model_count, u16_t dst, - u16_t app_idx, u32_t opcode, + u8_t model_count, u32_t opcode, struct bt_mesh_model **model) { u8_t i; @@ -445,17 +489,6 @@ static const struct bt_mesh_model_op *find_op(struct bt_mesh_model *models, *model = &models[i]; - if (BT_MESH_ADDR_IS_GROUP(dst) || - BT_MESH_ADDR_IS_VIRTUAL(dst)) { - if (!bt_mesh_model_find_group(*model, dst)) { - continue; - } - } - - if (!model_has_key(*model, app_idx)) { - continue; - } - for (op = (*model)->op; op->func; op++) { if (op->opcode == opcode) { return op; @@ -508,8 +541,7 @@ bool bt_mesh_fixed_group_match(u16_t addr) case BT_MESH_ADDR_ALL_NODES: return true; case BT_MESH_ADDR_PROXIES: - /* TODO: Proxy not yet supported */ - return false; + return (bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_ENABLED); case BT_MESH_ADDR_FRIENDS: return (bt_mesh_friend_get() == BT_MESH_FRIEND_ENABLED); case BT_MESH_ADDR_RELAYS: @@ -540,24 +572,13 @@ void bt_mesh_model_recv(struct bt_mesh_net_rx *rx, struct os_mbuf *buf) for (i = 0; i < dev_comp->elem_count; i++) { struct bt_mesh_elem *elem = &dev_comp->elem[i]; - - if (BT_MESH_ADDR_IS_UNICAST(rx->ctx.recv_dst)) { - if (elem->addr != rx->ctx.recv_dst) { - continue; - } - } else if (BT_MESH_ADDR_IS_GROUP(rx->ctx.recv_dst) || - BT_MESH_ADDR_IS_VIRTUAL(rx->ctx.recv_dst)) { - /* find_op() will do proper model/group matching */ - } else if (i != 0 || - !bt_mesh_fixed_group_match(rx->ctx.recv_dst)) { - continue; - } + struct net_buf_simple_state state; /* SIG models cannot contain 3-byte (vendor) OpCodes, and * vendor models cannot contain SIG (1- or 2-byte) OpCodes, so * we only need to do the lookup in one of the model lists. */ - if (opcode < 0x10000) { + if (BT_MESH_MODEL_OP_LEN(opcode) < 3) { models = elem->models; count = elem->model_count; } else { @@ -565,29 +586,32 @@ void bt_mesh_model_recv(struct bt_mesh_net_rx *rx, struct os_mbuf *buf) count = elem->vnd_model_count; } - op = find_op(models, count, rx->ctx.recv_dst, rx->ctx.app_idx, - opcode, &model); - if (op) { - struct net_buf_simple_state state; + op = find_op(models, count, opcode, &model); + if (!op) { + BT_DBG("No OpCode 0x%08x for elem %d", opcode, i); + continue; + } - if (buf->om_len < op->min_len) { - BT_ERR("Too short message for OpCode 0x%08x", - (unsigned) opcode); + if (!model_has_key(model, rx->ctx.app_idx)) { continue; } - /* The callback will likely parse the buffer, so - * store the parsing state in case multiple models - * receive the message. - */ - net_buf_simple_save(buf, &state); - op->func(model, &rx->ctx, buf); - net_buf_simple_restore(buf, &state); - - } else { - BT_DBG("No OpCode 0x%08x for elem %d", - (unsigned) opcode, i); + if (!model_has_dst(model, rx->ctx.recv_dst)) { + continue; } + + if (buf->om_len < op->min_len) { + BT_ERR("Too short message for OpCode 0x%08x", opcode); + continue; + } + + /* The callback will likely parse the buffer, so + * store the parsing state in case multiple models + * receive the message. + */ + net_buf_simple_save(buf, &state); + op->func(model, &rx->ctx, buf); + net_buf_simple_restore(buf, &state); } } @@ -595,21 +619,21 @@ void bt_mesh_model_msg_init(struct os_mbuf *msg, u32_t opcode) { net_buf_simple_init(msg, 0); - if (opcode < 0x100) { - /* 1-byte OpCode */ + switch (BT_MESH_MODEL_OP_LEN(opcode)) { + case 1: net_buf_simple_add_u8(msg, opcode); - return; - } - - if (opcode < 0x10000) { - /* 2-byte OpCode */ + break; + case 2: net_buf_simple_add_be16(msg, opcode); - return; + break; + case 3: + net_buf_simple_add_u8(msg, ((opcode >> 16) & 0xff)); + net_buf_simple_add_le16(msg, opcode & 0xffff); + break; + default: + BT_WARN("Unknown opcode format"); + break; } - - /* 3-byte OpCode */ - net_buf_simple_add_u8(msg, ((opcode >> 16) & 0xff)); - net_buf_simple_add_le16(msg, opcode & 0xffff); } static int model_send(struct bt_mesh_model *model, @@ -732,7 +756,7 @@ done: return err; } -struct bt_mesh_model *bt_mesh_model_find_vnd(struct bt_mesh_elem *elem, +struct bt_mesh_model *bt_mesh_model_find_vnd(const struct bt_mesh_elem *elem, u16_t company, u16_t id) { u8_t i; @@ -747,7 +771,7 @@ struct bt_mesh_model *bt_mesh_model_find_vnd(struct bt_mesh_elem *elem, return NULL; } -struct bt_mesh_model *bt_mesh_model_find(struct bt_mesh_elem *elem, +struct bt_mesh_model *bt_mesh_model_find(const struct bt_mesh_elem *elem, u16_t id) { u8_t i; @@ -765,3 +789,68 @@ const struct bt_mesh_comp *bt_mesh_comp_get(void) { return dev_comp; } + +struct bt_mesh_model *bt_mesh_model_root(struct bt_mesh_model *mod) +{ +#ifdef CONFIG_BT_MESH_MODEL_EXTENSIONS + while (mod->next) { + mod = mod->next; + } +#endif + return mod; +} + +void bt_mesh_model_tree_walk(struct bt_mesh_model *root, + enum bt_mesh_walk (*cb)(struct bt_mesh_model *mod, + u32_t depth, + void *user_data), + void *user_data) +{ + struct bt_mesh_model *m = root; + u32_t depth = 0; + + do { + if (cb(m, depth, user_data) == BT_MESH_WALK_STOP) { + return; + } +#if MYNEWT_VAL(BLE_MESH_MODEL_EXTENSIONS) + if (m->extends) { + m = m->extends; + depth++; + } else if (m->flags & BT_MESH_MOD_NEXT_IS_PARENT) { + m = m->next->next; + depth--; + } else { + m = m->next; + } +#endif + } while (m && m != root); +} + +#if MYNEWT_VAL(BLE_MESH_MODEL_EXTENSIONS) +int bt_mesh_model_extend(struct bt_mesh_model *mod, + struct bt_mesh_model *base_mod) +{ + /* Form a cyclical LCRS tree: + * The extends-pointer points to the first child, and the next-pointer + * points to the next sibling. The last sibling is marked by the + * BT_MESH_MOD_NEXT_IS_PARENT flag, and its next-pointer points back to + * the parent. This way, the whole tree is accessible from any node. + * + * We add children (extend them) by inserting them as the first child. + */ + if (base_mod->next) { + return -EALREADY; + } + + if (mod->extends) { + base_mod->next = mod->extends; + } else { + base_mod->next = mod; + base_mod->flags |= BT_MESH_MOD_NEXT_IS_PARENT; + } + + mod->extends = base_mod; + return 0; +} +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.h index 5ce7f1990..48514983f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/access.h @@ -16,6 +16,14 @@ enum { BT_MESH_MOD_BIND_PENDING = BIT(0), BT_MESH_MOD_SUB_PENDING = BIT(1), BT_MESH_MOD_PUB_PENDING = BIT(2), + BT_MESH_MOD_DATA_PRESENT = BIT(3), + BT_MESH_MOD_NEXT_IS_PARENT = BIT(4), +}; + +/* Tree walk return codes */ +enum bt_mesh_walk { + BT_MESH_WALK_STOP, + BT_MESH_WALK_CONTINUE, }; void bt_mesh_elem_register(struct bt_mesh_elem *elem, u8_t count); @@ -25,12 +33,14 @@ u8_t bt_mesh_elem_count(void); /* Find local element based on unicast or group address */ struct bt_mesh_elem *bt_mesh_elem_find(u16_t addr); -struct bt_mesh_model *bt_mesh_model_find_vnd(struct bt_mesh_elem *elem, - u16_t company, u16_t id); -struct bt_mesh_model * bt_mesh_model_find(struct bt_mesh_elem *elem, - u16_t id); +struct bt_mesh_model *bt_mesh_model_root(struct bt_mesh_model *mod); +void bt_mesh_model_tree_walk(struct bt_mesh_model *root, + enum bt_mesh_walk (*cb)(struct bt_mesh_model *mod, + u32_t depth, + void *user_data), + void *user_data); -u16_t *bt_mesh_model_find_group(struct bt_mesh_model *mod, u16_t addr); +u16_t *bt_mesh_model_find_group(struct bt_mesh_model **mod, u16_t addr); bool bt_mesh_fixed_group_match(u16_t addr); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.c index 5364ddc73..b8fb1c7de 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.c @@ -7,12 +7,10 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include "mesh/mesh.h" - #include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_ADV)) -#include "host/ble_hs_log.h" +#define MESH_LOG_MODULE BLE_MESH_ADV_LOG +#include "mesh/mesh.h" #include "host/ble_hs_adv.h" #include "host/ble_gap.h" #include "nimble/hci_common.h" @@ -108,9 +106,14 @@ static inline void adv_send(struct os_mbuf *buf) adv_int = max(adv_int_min, BT_MESH_TRANSMIT_INT(BT_MESH_ADV(buf)->xmit)); +#if MYNEWT_VAL(BLE_CONTROLLER) + duration = ((BT_MESH_TRANSMIT_COUNT(BT_MESH_ADV(buf)->xmit) + 1) * + (adv_int + 10)); +#else duration = (MESH_SCAN_WINDOW_MS + ((BT_MESH_TRANSMIT_COUNT(BT_MESH_ADV(buf)->xmit) + 1) * (adv_int + 10))); +#endif BT_DBG("type %u om_len %u: %s", BT_MESH_ADV(buf)->type, buf->om_len, bt_hex(buf->om_data, buf->om_len)); @@ -188,6 +191,8 @@ mesh_adv_thread(void *args) if (BT_MESH_ADV(buf)->busy) { BT_MESH_ADV(buf)->busy = 0; adv_send(buf); + } else { + net_buf_unref(buf); } /* os_sched(NULL); */ @@ -395,6 +400,8 @@ done: int bt_mesh_scan_enable(void) { + int err; + #if MYNEWT_VAL(BLE_EXT_ADV) struct ble_gap_ext_disc_params uncoded_params = { .itvl = MESH_SCAN_INTERVAL, .window = MESH_SCAN_WINDOW, @@ -402,7 +409,7 @@ int bt_mesh_scan_enable(void) BT_DBG(""); - return ble_gap_ext_disc(g_mesh_addr_type, 0, 0, 0, 0, 0, + err = ble_gap_ext_disc(g_mesh_addr_type, 0, 0, 0, 0, 0, &uncoded_params, NULL, NULL, NULL); #else struct ble_gap_disc_params scan_param = @@ -411,13 +418,28 @@ int bt_mesh_scan_enable(void) BT_DBG(""); - return ble_gap_disc(g_mesh_addr_type, BLE_HS_FOREVER, &scan_param, NULL, NULL); + err = ble_gap_disc(g_mesh_addr_type, BLE_HS_FOREVER, &scan_param, + NULL, NULL); #endif + if (err && err != BLE_HS_EALREADY) { + BT_ERR("starting scan failed (err %d)", err); + return err; + } + + return 0; } int bt_mesh_scan_disable(void) { + int err; + BT_DBG(""); - return ble_gap_disc_cancel(); + err = ble_gap_disc_cancel(); + if (err && err != BLE_HS_EALREADY) { + BT_ERR("stopping scan failed (err %d)", err); + return err; + } + + return 0; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.h index 8e76e4197..4d0f7d8ba 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/adv.h @@ -42,15 +42,12 @@ struct bt_mesh_adv { busy:1; u8_t xmit; - union { - /* Address, used e.g. for Friend Queue messages */ - u16_t addr; + /* For transport layer segment sending */ + struct { + u8_t attempts; + } seg; - /* For transport layer segment sending */ - struct { - u8_t attempts; - } seg; - }; + u8_t flags; int ref_cnt; struct ble_npl_event ev; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/beacon.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/beacon.c index da909852f..cd540aa8c 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/beacon.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/beacon.c @@ -6,15 +6,14 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_BEACON_LOG + #include #include #include "os/os_mbuf.h" #include "mesh/mesh.h" -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_BEACON)) -#include "host/ble_hs_log.h" - #include "adv.h" #include "mesh_priv.h" #include "net.h" @@ -147,7 +146,6 @@ static int secure_beacon_send(void) static int unprovisioned_beacon_send(void) { -#if (MYNEWT_VAL(BLE_MESH_PB_ADV)) const struct bt_mesh_prov *prov; u8_t uri_hash[16] = { 0 }; struct os_mbuf *buf; @@ -199,10 +197,43 @@ static int unprovisioned_beacon_send(void) net_buf_unref(buf); } -#endif /* MYNEWT_VAL(BLE_MESH_PB_ADV) */ return 0; } +static void unprovisioned_beacon_recv(struct os_mbuf *buf) +{ +#if MYNEWT_VAL(BLE_MESH_PB_ADV) + const struct bt_mesh_prov *prov; + u8_t *uuid; + u16_t oob_info; + u32_t uri_hash_val; + u32_t *uri_hash = NULL; + + if (buf->om_len != 18 && buf->om_len != 22) { + BT_ERR("Invalid unprovisioned beacon length (%u)", buf->om_len); + return; + } + + uuid = net_buf_simple_pull_mem(buf, 16); + oob_info = net_buf_simple_pull_be16(buf); + + if (buf->om_len == 4) { + uri_hash_val = net_buf_simple_pull_be32(buf); + uri_hash = &uri_hash_val; + } + + BT_DBG("uuid %s", bt_hex(uuid, 16)); + + prov = bt_mesh_prov_get(); + + if (prov->unprovisioned_beacon) { + prov->unprovisioned_beacon(uuid, + (bt_mesh_prov_oob_info_t)oob_info, + uri_hash); + } +#endif +} + static void update_beacon_observation(void) { static bool first_half; @@ -249,11 +280,10 @@ static void beacon_send(struct ble_npl_event *work) k_delayed_work_submit(&beacon_timer, PROVISIONED_INTERVAL); } - } else { + } else if (IS_ENABLED(CONFIG_BT_MESH_PB_ADV)) { unprovisioned_beacon_send(); k_delayed_work_submit(&beacon_timer, UNPROVISIONED_INTERVAL); } - } static void secure_beacon_recv(struct os_mbuf *buf) @@ -351,7 +381,7 @@ void bt_mesh_beacon_recv(struct os_mbuf *buf) type = net_buf_simple_pull_u8(buf); switch (type) { case BEACON_TYPE_UNPROVISIONED: - BT_DBG("Ignoring unprovisioned device beacon"); + unprovisioned_beacon_recv(buf); break; case BEACON_TYPE_SECURE: secure_beacon_recv(buf); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_cli.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_cli.c index 17f01b993..2c2f6c3ff 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_cli.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_cli.c @@ -7,9 +7,9 @@ */ #include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_MODEL_LOG #if MYNEWT_VAL(BLE_MESH_CFG_CLI) -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_MODEL)) #include "mesh/mesh.h" #include @@ -21,6 +21,9 @@ #define CID_NVAL 0xffff +/* 2 byte dummy opcode for getting compile time buffer sizes. */ +#define DUMMY_2_BYTE_OP BT_MESH_MODEL_OP_2(0xff, 0xff) + struct comp_data { u8_t *status; struct os_mbuf *comp; @@ -481,6 +484,38 @@ const struct bt_mesh_model_op bt_mesh_cfg_cli_op[] = { BT_MESH_MODEL_OP_END, }; +static int cfg_cli_init(struct bt_mesh_model *model) +{ + BT_DBG(""); + + if (!bt_mesh_model_in_primary(model)) { + BT_ERR("Configuration Client only allowed in primary element"); + return -EINVAL; + } + + if (!model->user_data) { + BT_ERR("No Configuration Client context provided"); + return -EINVAL; + } + + cli = model->user_data; + cli->model = model; + + /* + * Configuration Model security is device-key based and both the local + * and remote keys are allowed to access this model. + */ + model->keys[0] = BT_MESH_KEY_DEV_ANY; + + k_sem_init(&cli->op_sync, 0, 1); + + return 0; +} + +const struct bt_mesh_model_cb bt_mesh_cfg_cli_cb = { + .init = cfg_cli_init, +}; + static int cli_prepare(void *param, u32_t op) { if (!cli) { @@ -519,10 +554,10 @@ static int cli_wait(void) int bt_mesh_cfg_comp_data_get(u16_t net_idx, u16_t addr, u8_t page, u8_t *status, struct os_mbuf *comp) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_DEV_COMP_DATA_GET, 1); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -556,10 +591,10 @@ done: static int get_state_u8(u16_t net_idx, u16_t addr, u32_t op, u32_t rsp, u8_t *val) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(DUMMY_2_BYTE_OP, 0); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -588,10 +623,10 @@ done: static int set_state_u8(u16_t net_idx, u16_t addr, u32_t op, u32_t rsp, u8_t new_val, u8_t *val) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(DUMMY_2_BYTE_OP, 1); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -670,10 +705,10 @@ int bt_mesh_cfg_gatt_proxy_set(u16_t net_idx, u16_t addr, u8_t val, int bt_mesh_cfg_relay_get(u16_t net_idx, u16_t addr, u8_t *status, u8_t *transmit) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_RELAY_GET, 0); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -706,10 +741,10 @@ done: int bt_mesh_cfg_relay_set(u16_t net_idx, u16_t addr, u8_t new_relay, u8_t new_transmit, u8_t *status, u8_t *transmit) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 2 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_RELAY_SET, 2); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -744,10 +779,10 @@ done: int bt_mesh_cfg_net_key_add(u16_t net_idx, u16_t addr, u16_t key_net_idx, const u8_t net_key[16], u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 18 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NET_KEY_ADD, 18); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -788,10 +823,10 @@ int bt_mesh_cfg_app_key_add(u16_t net_idx, u16_t addr, u16_t key_net_idx, u16_t key_app_idx, const u8_t app_key[16], u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(1 + 19 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_APP_KEY_ADD, 19); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -833,10 +868,10 @@ static int mod_app_bind(u16_t net_idx, u16_t addr, u16_t elem_addr, u16_t mod_app_idx, u16_t mod_id, u16_t cid, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 8 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_APP_BIND, 8); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -904,10 +939,10 @@ int bt_mesh_cfg_mod_app_bind_vnd(u16_t net_idx, u16_t addr, u16_t elem_addr, static int mod_sub(u32_t op, u16_t net_idx, u16_t addr, u16_t elem_addr, u16_t sub_addr, u16_t mod_id, u16_t cid, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 8 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(DUMMY_2_BYTE_OP, 8); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1014,10 +1049,10 @@ static int mod_sub_va(u32_t op, u16_t net_idx, u16_t addr, u16_t elem_addr, const u8_t label[16], u16_t mod_id, u16_t cid, u16_t *virt_addr, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 22 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(DUMMY_2_BYTE_OP, 22); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1133,10 +1168,10 @@ static int mod_pub_get(u16_t net_idx, u16_t addr, u16_t elem_addr, u16_t mod_id, u16_t cid, struct bt_mesh_cfg_mod_pub *pub, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 6 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_PUB_GET, 6); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1205,10 +1240,10 @@ static int mod_pub_set(u16_t net_idx, u16_t addr, u16_t elem_addr, u16_t mod_id, u16_t cid, struct bt_mesh_cfg_mod_pub *pub, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 13 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_PUB_SET, 13); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1230,7 +1265,7 @@ static int mod_pub_set(u16_t net_idx, u16_t addr, u16_t elem_addr, net_buf_simple_add_le16(msg, elem_addr); net_buf_simple_add_le16(msg, pub->addr); - net_buf_simple_add_le16(msg, (pub->app_idx & (pub->cred_flag << 12))); + net_buf_simple_add_le16(msg, (pub->app_idx | (pub->cred_flag << 12))); net_buf_simple_add_u8(msg, pub->ttl); net_buf_simple_add_u8(msg, pub->period); net_buf_simple_add_u8(msg, pub->transmit); @@ -1281,10 +1316,10 @@ int bt_mesh_cfg_mod_pub_set_vnd(u16_t net_idx, u16_t addr, u16_t elem_addr, int bt_mesh_cfg_hb_sub_set(u16_t net_idx, u16_t addr, struct bt_mesh_cfg_hb_sub *sub, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 5 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEARTBEAT_SUB_SET, 5); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1325,10 +1360,10 @@ done: int bt_mesh_cfg_hb_sub_get(u16_t net_idx, u16_t addr, struct bt_mesh_cfg_hb_sub *sub, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEARTBEAT_SUB_GET, 0); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1366,10 +1401,10 @@ done: int bt_mesh_cfg_hb_pub_set(u16_t net_idx, u16_t addr, const struct bt_mesh_cfg_hb_pub *pub, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 9 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEARTBEAT_PUB_SET, 9); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, - .app_idx = BT_MESH_KEY_DEV, + .app_idx = BT_MESH_KEY_DEV_REMOTE, .addr = addr, .send_ttl = BT_MESH_TTL_DEFAULT, }; @@ -1412,7 +1447,7 @@ done: int bt_mesh_cfg_hb_pub_get(u16_t net_idx, u16_t addr, struct bt_mesh_cfg_hb_pub *pub, u8_t *status) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEARTBEAT_PUB_GET, 0); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = BT_MESH_KEY_DEV, @@ -1460,29 +1495,4 @@ void bt_mesh_cfg_cli_timeout_set(s32_t timeout) msg_timeout = timeout; } -int bt_mesh_cfg_cli_init(struct bt_mesh_model *model, bool primary) -{ - BT_DBG("primary %u", primary); - - if (!primary) { - BT_ERR("Configuration Client only allowed in primary element"); - return -EINVAL; - } - - if (!model->user_data) { - BT_ERR("No Configuration Client context provided"); - return -EINVAL; - } - - cli = model->user_data; - cli->model = model; - - /* Configuration Model security is device-key based */ - model->keys[0] = BT_MESH_KEY_DEV; - - k_sem_init(&cli->op_sync, 0, 1); - - return 0; -} - #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_srv.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_srv.c index 4ee9e8cfd..57aac90a3 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_srv.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/cfg_srv.c @@ -6,16 +6,15 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_MODEL_LOG + #include #include #include #include "mesh/mesh.h" -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED MYNEWT_VAL(BLE_MESH_DEBUG_MODEL) -#include "host/ble_hs_log.h" - #include "mesh_priv.h" #include "adv.h" #include "net.h" @@ -34,61 +33,7 @@ static struct bt_mesh_cfg_srv *conf; -static struct label { - u16_t ref; - u16_t addr; - u8_t uuid[16]; -} labels[MYNEWT_VAL(BLE_MESH_LABEL_COUNT)]; - -static void hb_send(struct bt_mesh_model *model) -{ - - struct bt_mesh_cfg_srv *cfg = model->user_data; - u16_t feat = 0; - struct __packed { - u8_t init_ttl; - u16_t feat; - } hb; - struct bt_mesh_msg_ctx ctx = { - .net_idx = cfg->hb_pub.net_idx, - .app_idx = BT_MESH_KEY_UNUSED, - .addr = cfg->hb_pub.dst, - .send_ttl = cfg->hb_pub.ttl, - }; - struct bt_mesh_net_tx tx = { - .sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx), - .ctx = &ctx, - .src = bt_mesh_model_elem(model)->addr, - .xmit = bt_mesh_net_transmit_get(), - }; - - hb.init_ttl = cfg->hb_pub.ttl; - - if (bt_mesh_relay_get() == BT_MESH_RELAY_ENABLED) { - feat |= BT_MESH_FEAT_RELAY; - } - - if (bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_ENABLED) { - feat |= BT_MESH_FEAT_PROXY; - } - - if (bt_mesh_friend_get() == BT_MESH_FRIEND_ENABLED) { - feat |= BT_MESH_FEAT_FRIEND; - } - -#if (MYNEWT_VAL(BLE_MESH_LOW_POWER)) - if (bt_mesh.lpn.state != BT_MESH_LPN_DISABLED) { - feat |= BT_MESH_FEAT_LOW_POWER; - } -#endif - - hb.feat = sys_cpu_to_be16(feat); - - BT_DBG("InitTTL %u feat 0x%04x", cfg->hb_pub.ttl, feat); - - bt_mesh_ctl_send(&tx, TRANS_CTL_OP_HEARTBEAT, &hb, sizeof(hb), - NULL, NULL, NULL); -} +static struct label labels[CONFIG_BT_MESH_LABEL_COUNT]; static int comp_add_elem(struct os_mbuf *buf, struct bt_mesh_elem *elem, bool primary) @@ -175,9 +120,9 @@ static void dev_comp_data_get(struct bt_mesh_model *model, bt_hex(buf->om_data, buf->om_len)); page = net_buf_simple_pull_u8(buf); - if (page != 0) { - BT_WARN("Composition page %u not available", page); - page = 0; + if (page != 0U) { + BT_DBG("Composition page %u not available", page); + page = 0U; } bt_mesh_model_msg_init(sdu, OP_DEV_COMP_DATA_STATUS); @@ -481,7 +426,7 @@ static void app_key_add(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 4 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_APP_KEY_STATUS, 4); u16_t key_net_idx, key_app_idx; u8_t status; @@ -508,7 +453,7 @@ static void app_key_update(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 4 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_APP_KEY_STATUS, 4); u16_t key_net_idx, key_app_idx; u8_t status; @@ -564,7 +509,7 @@ static void app_key_del(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 4 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_APP_KEY_STATUS, 4); u16_t key_net_idx, key_app_idx; struct bt_mesh_app_key *key; u8_t status; @@ -617,8 +562,8 @@ static void app_key_get(struct bt_mesh_model *model, struct os_mbuf *buf) { struct os_mbuf *msg = - NET_BUF_SIMPLE(2 + 3 + 4 + - IDX_LEN(MYNEWT_VAL(BLE_MESH_APP_KEY_COUNT))); + BT_MESH_MODEL_BUF(OP_APP_KEY_LIST, + 3 + IDX_LEN(CONFIG_BT_MESH_APP_KEY_COUNT)); u16_t get_idx, i, prev; u8_t status; @@ -679,8 +624,7 @@ static void beacon_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_BEACON_STATUS, 1); BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -699,8 +643,7 @@ static void beacon_set(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_BEACON_STATUS, 1); struct bt_mesh_cfg_srv *cfg = model->user_data; BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", @@ -744,8 +687,7 @@ static void default_ttl_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_DEFAULT_TTL_STATUS, 1); BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -766,8 +708,7 @@ static void default_ttl_set(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_DEFAULT_TTL_STATUS, 1); struct bt_mesh_cfg_srv *cfg = model->user_data; BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", @@ -803,8 +744,7 @@ done: static void send_gatt_proxy_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_GATT_PROXY_STATUS, 1); bt_mesh_model_msg_init(msg, OP_GATT_PROXY_STATUS); net_buf_simple_add_u8(msg, bt_mesh_gatt_proxy_get()); @@ -833,7 +773,6 @@ static void gatt_proxy_set(struct bt_mesh_model *model, struct os_mbuf *buf) { struct bt_mesh_cfg_srv *cfg = model->user_data; - struct bt_mesh_subnet *sub; BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -866,33 +805,10 @@ static void gatt_proxy_set(struct bt_mesh_model *model, bt_mesh_store_cfg(); } - if (cfg->gatt_proxy == BT_MESH_GATT_PROXY_DISABLED) { - int i; - - /* Section 4.2.11.1: "When the GATT Proxy state is set to - * 0x00, the Node Identity state for all subnets shall be set - * to 0x00 and shall not be changed." - */ - for (i = 0; i < ARRAY_SIZE(bt_mesh.sub); i++) { - struct bt_mesh_subnet *sub = &bt_mesh.sub[i]; - - if (sub->net_idx != BT_MESH_KEY_UNUSED) { - bt_mesh_proxy_identity_stop(sub); - } - } - - /* Section 4.2.11: "Upon transition from GATT Proxy state 0x01 - * to GATT Proxy state 0x00 the GATT Bearer Server shall - * disconnect all GATT Bearer Clients. - */ - bt_mesh_proxy_gatt_disconnect(); - } - bt_mesh_adv_update(); - sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx); - if ((cfg->hb_pub.feat & BT_MESH_FEAT_PROXY) && sub) { - hb_send(model); + if (cfg->hb_pub.feat & BT_MESH_FEAT_PROXY) { + bt_mesh_heartbeat_send(); } send_status: @@ -903,8 +819,7 @@ static void net_transmit_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NET_TRANSMIT_STATUS, 1); BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -925,8 +840,7 @@ static void net_transmit_set(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NET_TRANSMIT_STATUS, 1); struct bt_mesh_cfg_srv *cfg = model->user_data; BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", @@ -961,8 +875,7 @@ static void relay_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 2 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_RELAY_STATUS, 2); BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -984,8 +897,7 @@ static void relay_set(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 2 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_RELAY_STATUS, 2); struct bt_mesh_cfg_srv *cfg = model->user_data; BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", @@ -995,7 +907,6 @@ static void relay_set(struct bt_mesh_model *model, if (!cfg) { BT_WARN("No Configuration Server context available"); } else if (buf->om_data[0] == 0x00 || buf->om_data[0] == 0x01) { - struct bt_mesh_subnet *sub; bool change; if (cfg->relay == BT_MESH_RELAY_NOT_SUPPORTED) { @@ -1016,9 +927,8 @@ static void relay_set(struct bt_mesh_model *model, BT_MESH_TRANSMIT_COUNT(cfg->relay_retransmit), BT_MESH_TRANSMIT_INT(cfg->relay_retransmit)); - sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx); - if ((cfg->hb_pub.feat & BT_MESH_FEAT_RELAY) && sub && change) { - hb_send(model); + if ((cfg->hb_pub.feat & BT_MESH_FEAT_RELAY) && change) { + bt_mesh_heartbeat_send(); } } else { BT_WARN("Invalid Relay value 0x%02x", buf->om_data[0]); @@ -1044,8 +954,7 @@ static void send_mod_pub_status(struct bt_mesh_model *cfg_mod, bool vnd, struct bt_mesh_model *mod, u8_t status, u8_t *mod_id) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 14 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_PUB_STATUS, 14); bt_mesh_model_msg_init(msg, OP_MOD_PUB_STATUS); @@ -1188,25 +1097,61 @@ send_status: status, mod_id); } -#if MYNEWT_VAL(BLE_MESH_LABEL_COUNT) > 0 -static u8_t va_add(u8_t *label_uuid, u16_t *addr) +struct label *get_label(u16_t index) { - struct label *free_slot = NULL; + if (index >= ARRAY_SIZE(labels)) { + return NULL; + } + + return &labels[index]; +} + +#if CONFIG_BT_MESH_LABEL_COUNT > 0 +static inline void va_store(struct label *store) +{ + atomic_set_bit(store->flags, BT_MESH_VA_CHANGED); + if (IS_ENABLED(CONFIG_BT_SETTINGS)) { + bt_mesh_store_label(); + } +} + +static struct label *va_find(const u8_t *label_uuid, + struct label **free_slot) +{ + struct label *match = NULL; int i; + if (free_slot != NULL) { + *free_slot = NULL; + } + for (i = 0; i < ARRAY_SIZE(labels); i++) { - if (!labels[i].ref) { - free_slot = &labels[i]; + if (labels[i].ref == 0) { + if (free_slot != NULL) { + *free_slot = &labels[i]; + } continue; } if (!memcmp(labels[i].uuid, label_uuid, 16)) { - *addr = labels[i].addr; - labels[i].ref++; - return STATUS_SUCCESS; + match = &labels[i]; } } + return match; +} + +static u8_t va_add(u8_t *label_uuid, u16_t *addr) +{ + struct label *update, *free_slot = NULL; + + update = va_find(label_uuid, &free_slot); + if (update) { + update->ref++; + va_store(update); + return 0; + } + if (!free_slot) { return STATUS_INSUFF_RESOURCES; } @@ -1218,23 +1163,24 @@ static u8_t va_add(u8_t *label_uuid, u16_t *addr) free_slot->ref = 1; free_slot->addr = *addr; memcpy(free_slot->uuid, label_uuid, 16); + va_store(free_slot); return STATUS_SUCCESS; } static u8_t va_del(u8_t *label_uuid, u16_t *addr) { - int i; + struct label *update; - for (i = 0; i < ARRAY_SIZE(labels); i++) { - if (!memcmp(labels[i].uuid, label_uuid, 16)) { - if (addr) { - *addr = labels[i].addr; - } + update = va_find(label_uuid, NULL); + if (update) { + update->ref--; - labels[i].ref--; - return STATUS_SUCCESS; + if (addr) { + *addr = update->addr; } + + va_store(update); } if (addr) { @@ -1244,28 +1190,36 @@ static u8_t va_del(u8_t *label_uuid, u16_t *addr) return STATUS_CANNOT_REMOVE; } -static void mod_sub_list_clear(struct bt_mesh_model *mod) +static size_t mod_sub_list_clear(struct bt_mesh_model *mod) { u8_t *label_uuid; + size_t clear_count; int i; /* Unref stored labels related to this model */ - for (i = 0; i < ARRAY_SIZE(mod->groups); i++) { + for (i = 0, clear_count = 0; i < ARRAY_SIZE(mod->groups); i++) { if (!BT_MESH_ADDR_IS_VIRTUAL(mod->groups[i])) { + if (mod->groups[i] != BT_MESH_ADDR_UNASSIGNED) { + mod->groups[i] = BT_MESH_ADDR_UNASSIGNED; + clear_count++; + } + continue; } label_uuid = bt_mesh_label_uuid_get(mod->groups[i]); - if (!label_uuid) { - BT_ERR("Label UUID not found"); - continue; - } - va_del(label_uuid, NULL); + mod->groups[i] = BT_MESH_ADDR_UNASSIGNED; + clear_count++; + + if (label_uuid) { + va_del(label_uuid, NULL); + } else { + BT_ERR("Label UUID not found"); + } } - /* Clear all subscriptions (0x0000 is the unassigned address) */ - memset(mod->groups, 0, sizeof(mod->groups)); + return clear_count; } static void mod_pub_va_set(struct bt_mesh_model *model, @@ -1300,8 +1254,7 @@ static void mod_pub_va_set(struct bt_mesh_model *model, retransmit = net_buf_simple_pull_u8(buf); mod_id = buf->om_data; - BT_DBG("elem_addr 0x%04x pub_addr 0x%04x cred_flag %u", - elem_addr, pub_addr, cred_flag); + BT_DBG("elem_addr 0x%04x cred_flag %u", elem_addr, cred_flag); BT_DBG("pub_app_idx 0x%03x, pub_ttl %u pub_period 0x%02x", pub_app_idx, pub_ttl, pub_period); BT_DBG("retransmit 0x%02x (count %u interval %ums)", retransmit, @@ -1335,10 +1288,20 @@ send_status: status, mod_id); } #else -static void mod_sub_list_clear(struct bt_mesh_model *mod) +static size_t mod_sub_list_clear(struct bt_mesh_model *mod) { - /* Clear all subscriptions (0x0000 is the unassigned address) */ - memset(mod->groups, 0, sizeof(mod->groups)); + size_t clear_count; + int i; + + /* Unref stored labels related to this model */ + for (i = 0, clear_count = 0; i < ARRAY_SIZE(mod->groups); i++) { + if (mod->groups[i] != BT_MESH_ADDR_UNASSIGNED) { + mod->groups[i] = BT_MESH_ADDR_UNASSIGNED; + clear_count++; + } + } + + return clear_count; } static void mod_pub_va_set(struct bt_mesh_model *model, @@ -1395,8 +1358,7 @@ static void send_mod_sub_status(struct bt_mesh_model *model, u16_t elem_addr, u16_t sub_addr, u8_t *mod_id, bool vnd) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 9 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_SUB_STATUS, 9); BT_DBG("status 0x%02x elem_addr 0x%04x sub_addr 0x%04x", status, elem_addr, sub_addr); @@ -1429,8 +1391,8 @@ static void mod_sub_add(struct bt_mesh_model *model, struct bt_mesh_elem *elem; u8_t *mod_id; u8_t status; + u16_t *entry; bool vnd; - int i; elem_addr = net_buf_simple_pull_le16(buf); if (!BT_MESH_ADDR_IS_UNICAST(elem_addr)) { @@ -1463,33 +1425,31 @@ static void mod_sub_add(struct bt_mesh_model *model, goto send_status; } - if (bt_mesh_model_find_group(mod, sub_addr)) { + if (bt_mesh_model_find_group(&mod, sub_addr)) { /* Tried to add existing subscription */ + BT_DBG("found existing subscription"); status = STATUS_SUCCESS; goto send_status; } - for (i = 0; i < ARRAY_SIZE(mod->groups); i++) { - if (mod->groups[i] == BT_MESH_ADDR_UNASSIGNED) { - mod->groups[i] = sub_addr; - break; - } - } - - if (i == ARRAY_SIZE(mod->groups)) { + entry = bt_mesh_model_find_group(&mod, BT_MESH_ADDR_UNASSIGNED); + if (!entry) { status = STATUS_INSUFF_RESOURCES; - } else { - status = STATUS_SUCCESS; - - if (IS_ENABLED(CONFIG_BT_SETTINGS)) { - bt_mesh_store_mod_sub(mod); - } - - if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER)) { - bt_mesh_lpn_group_add(sub_addr); - } + goto send_status; } + *entry = sub_addr; + status = STATUS_SUCCESS; + + if (IS_ENABLED(CONFIG_BT_SETTINGS)) { + bt_mesh_store_mod_sub(mod); + } + + if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER)) { + bt_mesh_lpn_group_add(sub_addr); + } + + send_status: send_mod_sub_status(model, ctx, status, elem_addr, sub_addr, mod_id, vnd); @@ -1547,7 +1507,7 @@ static void mod_sub_del(struct bt_mesh_model *model, bt_mesh_lpn_group_del(&sub_addr, 1); } - match = bt_mesh_model_find_group(mod, sub_addr); + match = bt_mesh_model_find_group(&mod, sub_addr); if (match) { *match = BT_MESH_ADDR_UNASSIGNED; @@ -1561,6 +1521,18 @@ send_status: mod_id, vnd); } +static enum bt_mesh_walk mod_sub_clear_visitor(struct bt_mesh_model *mod, + u32_t depth, void *user_data) +{ + if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER)) { + bt_mesh_lpn_group_del(mod->groups, ARRAY_SIZE(mod->groups)); + } + + mod_sub_list_clear(mod); + + return BT_MESH_WALK_CONTINUE; +} + static void mod_sub_overwrite(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) @@ -1603,13 +1575,10 @@ static void mod_sub_overwrite(struct bt_mesh_model *model, goto send_status; } - if ((MYNEWT_VAL(BLE_MESH_LOW_POWER))) { - bt_mesh_lpn_group_del(mod->groups, ARRAY_SIZE(mod->groups)); - } - - mod_sub_list_clear(mod); - if (ARRAY_SIZE(mod->groups) > 0) { + bt_mesh_model_tree_walk(bt_mesh_model_root(mod), + mod_sub_clear_visitor, NULL); + mod->groups[0] = sub_addr; status = STATUS_SUCCESS; @@ -1665,11 +1634,8 @@ static void mod_sub_del_all(struct bt_mesh_model *model, goto send_status; } - if ((MYNEWT_VAL(BLE_MESH_LOW_POWER))) { - bt_mesh_lpn_group_del(mod->groups, ARRAY_SIZE(mod->groups)); - } - - mod_sub_list_clear(mod); + bt_mesh_model_tree_walk(bt_mesh_model_root(mod), mod_sub_clear_visitor, + NULL); if (IS_ENABLED(CONFIG_BT_SETTINGS)) { bt_mesh_store_mod_sub(mod); @@ -1682,17 +1648,52 @@ send_status: BT_MESH_ADDR_UNASSIGNED, mod_id, vnd); } +struct mod_sub_list_ctx { + u16_t elem_idx; + struct os_mbuf *msg; +}; + +static enum bt_mesh_walk mod_sub_list_visitor(struct bt_mesh_model *mod, + u32_t depth, void *ctx) +{ + struct mod_sub_list_ctx *visit = ctx; + int count = 0; + int i; + + if (mod->elem_idx != visit->elem_idx) { + return BT_MESH_WALK_CONTINUE; + } + + for (i = 0; i < ARRAY_SIZE(mod->groups); i++) { + if (mod->groups[i] == BT_MESH_ADDR_UNASSIGNED) { + continue; + } + + if (net_buf_simple_tailroom(visit->msg) < + 2 + BT_MESH_MIC_SHORT) { + BT_WARN("No room for all groups"); + return BT_MESH_WALK_STOP; + } + + net_buf_simple_add_le16(visit->msg, mod->groups[i]); + count++; + } + + BT_DBG("sublist: model %u:%x: %u groups", mod->elem_idx, mod->id, + count); + + return BT_MESH_WALK_CONTINUE; +} + static void mod_sub_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = - NET_BUF_SIMPLE(2 + 5 + 4 + - MYNEWT_VAL(BLE_MESH_MODEL_GROUP_COUNT) * 2); + struct os_mbuf *msg = NET_BUF_SIMPLE(BT_MESH_TX_SDU_MAX); + struct mod_sub_list_ctx visit_ctx; struct bt_mesh_model *mod; struct bt_mesh_elem *elem; u16_t addr, id; - int i; addr = net_buf_simple_pull_le16(buf); if (!BT_MESH_ADDR_IS_UNICAST(addr)) { @@ -1727,11 +1728,10 @@ static void mod_sub_get(struct bt_mesh_model *model, net_buf_simple_add_le16(msg, addr); net_buf_simple_add_le16(msg, id); - for (i = 0; i < ARRAY_SIZE(mod->groups); i++) { - if (mod->groups[i] != BT_MESH_ADDR_UNASSIGNED) { - net_buf_simple_add_le16(msg, mod->groups[i]); - } - } + visit_ctx.msg = msg; + visit_ctx.elem_idx = mod->elem_idx; + bt_mesh_model_tree_walk(bt_mesh_model_root(mod), mod_sub_list_visitor, + &visit_ctx); send_list: if (bt_mesh_model_send(model, ctx, msg, NULL, NULL)) { @@ -1747,13 +1747,10 @@ static void mod_sub_get_vnd(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = - NET_BUF_SIMPLE(2 + 7 + 4 + - MYNEWT_VAL(BLE_MESH_MODEL_GROUP_COUNT) * 2); + struct os_mbuf *msg = NET_BUF_SIMPLE(BT_MESH_TX_SDU_MAX); struct bt_mesh_model *mod; struct bt_mesh_elem *elem; u16_t company, addr, id; - int i; addr = net_buf_simple_pull_le16(buf); if (!BT_MESH_ADDR_IS_UNICAST(addr)) { @@ -1792,11 +1789,8 @@ static void mod_sub_get_vnd(struct bt_mesh_model *model, net_buf_simple_add_le16(msg, company); net_buf_simple_add_le16(msg, id); - for (i = 0; i < ARRAY_SIZE(mod->groups); i++) { - if (mod->groups[i] != BT_MESH_ADDR_UNASSIGNED) { - net_buf_simple_add_le16(msg, mod->groups[i]); - } - } + bt_mesh_model_tree_walk(bt_mesh_model_root(mod), mod_sub_list_visitor, + msg); send_list: if (bt_mesh_model_send(model, ctx, msg, NULL, NULL)) { @@ -1818,9 +1812,9 @@ static void mod_sub_va_add(struct bt_mesh_model *model, struct bt_mesh_elem *elem; u8_t *label_uuid; u8_t *mod_id; + u16_t *entry; u8_t status; bool vnd; - int i; elem_addr = net_buf_simple_pull_le16(buf); if (!BT_MESH_ADDR_IS_UNICAST(elem_addr)) { @@ -1854,33 +1848,31 @@ static void mod_sub_va_add(struct bt_mesh_model *model, goto send_status; } - if (bt_mesh_model_find_group(mod, sub_addr)) { + if (bt_mesh_model_find_group(&mod, sub_addr)) { /* Tried to add existing subscription */ status = STATUS_SUCCESS; goto send_status; } - for (i = 0; i < ARRAY_SIZE(mod->groups); i++) { - if (mod->groups[i] == BT_MESH_ADDR_UNASSIGNED) { - mod->groups[i] = sub_addr; - break; - } - } - if (i == ARRAY_SIZE(mod->groups)) { + entry = bt_mesh_model_find_group(&mod, BT_MESH_ADDR_UNASSIGNED); + if (!entry) { status = STATUS_INSUFF_RESOURCES; - } else { - if ((MYNEWT_VAL(BLE_MESH_LOW_POWER))) { - bt_mesh_lpn_group_add(sub_addr); + goto send_status; } - if (IS_ENABLED(CONFIG_BT_SETTINGS)) { - bt_mesh_store_mod_sub(mod); - } + *entry = sub_addr; - status = STATUS_SUCCESS; + if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER)) { + bt_mesh_lpn_group_add(sub_addr); } + if (IS_ENABLED(CONFIG_BT_SETTINGS)) { + bt_mesh_store_mod_sub(mod); + } + + status = STATUS_SUCCESS; + send_status: send_mod_sub_status(model, ctx, status, elem_addr, sub_addr, mod_id, vnd); @@ -1936,7 +1928,7 @@ static void mod_sub_va_del(struct bt_mesh_model *model, bt_mesh_lpn_group_del(&sub_addr, 1); } - match = bt_mesh_model_find_group(mod, sub_addr); + match = bt_mesh_model_find_group(&mod, sub_addr); if (match) { *match = BT_MESH_ADDR_UNASSIGNED; @@ -1992,13 +1984,10 @@ static void mod_sub_va_overwrite(struct bt_mesh_model *model, goto send_status; } - if ((MYNEWT_VAL(BLE_MESH_LOW_POWER))) { - bt_mesh_lpn_group_del(mod->groups, ARRAY_SIZE(mod->groups)); - } - - mod_sub_list_clear(mod); - if (ARRAY_SIZE(mod->groups) > 0) { + bt_mesh_model_tree_walk(bt_mesh_model_root(mod), + mod_sub_clear_visitor, NULL); + status = va_add(label_uuid, &sub_addr); if (status == STATUS_SUCCESS) { mod->groups[0] = sub_addr; @@ -2145,8 +2134,7 @@ static void send_net_key_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, u16_t idx, u8_t status) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 3 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NET_KEY_STATUS, 3); bt_mesh_model_msg_init(msg, OP_NET_KEY_STATUS); @@ -2361,8 +2349,8 @@ static void net_key_get(struct bt_mesh_model *model, struct os_mbuf *buf) { struct os_mbuf *msg = - NET_BUF_SIMPLE(2 + 4 + - IDX_LEN(MYNEWT_VAL(BLE_MESH_SUBNET_COUNT))); + BT_MESH_MODEL_BUF(OP_NET_KEY_LIST, + IDX_LEN(CONFIG_BT_MESH_SUBNET_COUNT)); u16_t prev, i; bt_mesh_model_msg_init(msg, OP_NET_KEY_LIST); @@ -2399,8 +2387,7 @@ static void node_identity_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 4 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NODE_IDENTITY_STATUS, 4); struct bt_mesh_subnet *sub; u8_t node_id; u16_t idx; @@ -2441,8 +2428,7 @@ static void node_identity_set(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 4 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NODE_IDENTITY_STATUS, 4); struct bt_mesh_subnet *sub; u8_t node_id; u16_t idx; @@ -2474,12 +2460,7 @@ static void node_identity_set(struct bt_mesh_model *model, net_buf_simple_add_u8(msg, STATUS_SUCCESS); net_buf_simple_add_le16(msg, idx); - /* Section 4.2.11.1: "When the GATT Proxy state is set to - * 0x00, the Node Identity state for all subnets shall be set - * to 0x00 and shall not be changed." - */ - if (MYNEWT_VAL(BLE_MESH_GATT_PROXY) && - bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_ENABLED) { + if (MYNEWT_VAL(BLE_MESH_GATT_PROXY)) { if (node_id) { bt_mesh_proxy_identity_start(sub); } else { @@ -2522,7 +2503,7 @@ static void mod_app_bind(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 9 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_APP_STATUS, 9); u16_t elem_addr, key_app_idx; struct bt_mesh_model *mod; struct bt_mesh_elem *elem; @@ -2583,7 +2564,7 @@ static void mod_app_unbind(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 9 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_MOD_APP_STATUS, 9); u16_t elem_addr, key_app_idx; struct bt_mesh_model *mod; struct bt_mesh_elem *elem; @@ -2638,7 +2619,11 @@ static void mod_app_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 9 + KEY_LIST_LEN + 4); + struct os_mbuf *msg = NET_BUF_SIMPLE(max(BT_MESH_MODEL_BUF_LEN(OP_VND_MOD_APP_LIST, + 9 + KEY_LIST_LEN), + BT_MESH_MODEL_BUF_LEN(OP_SIG_MOD_APP_LIST, + 9 + KEY_LIST_LEN))); + struct bt_mesh_model *mod; struct bt_mesh_elem *elem; u8_t *mod_id, status; @@ -2709,8 +2694,7 @@ static void node_reset(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_NODE_RESET_STATUS, 0); BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -2733,8 +2717,7 @@ static void node_reset(struct bt_mesh_model *model, static void send_friend_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_FRIEND_STATUS, 1); struct bt_mesh_cfg_srv *cfg = model->user_data; bt_mesh_model_msg_init(msg, OP_FRIEND_STATUS); @@ -2762,7 +2745,6 @@ static void friend_set(struct bt_mesh_model *model, struct os_mbuf *buf) { struct bt_mesh_cfg_srv *cfg = model->user_data; - struct bt_mesh_subnet *sub; BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s", ctx->net_idx, ctx->app_idx, ctx->addr, buf->om_len, @@ -2796,9 +2778,8 @@ static void friend_set(struct bt_mesh_model *model, } } - sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx); - if ((cfg->hb_pub.feat & BT_MESH_FEAT_FRIEND) && sub) { - hb_send(model); + if (cfg->hb_pub.feat & BT_MESH_FEAT_FRIEND) { + bt_mesh_heartbeat_send(); } send_status: @@ -2809,8 +2790,7 @@ static void lpn_timeout_get(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 5 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_LPN_TIMEOUT_STATUS, 5); struct bt_mesh_friend *frnd; u16_t lpn_addr; s32_t timeout; @@ -2859,8 +2839,7 @@ static void send_krp_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, u16_t idx, u8_t phase, u8_t status) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 4 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_KRP_STATUS, 4); bt_mesh_model_msg_init(msg, OP_KRP_STATUS); @@ -2999,8 +2978,7 @@ static void hb_pub_send_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, u8_t status, struct hb_pub_param *orig_msg) { - /* Needed size: opcode (1 byte) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(1 + 10 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEARTBEAT_PUB_STATUS, 10); struct bt_mesh_cfg_srv *cfg = model->user_data; BT_DBG("src 0x%04x status 0x%02x", ctx->addr, status); @@ -3125,8 +3103,7 @@ failed: static void hb_sub_send_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, u8_t status) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 9 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEARTBEAT_SUB_STATUS, 9); struct bt_mesh_cfg_srv *cfg = model->user_data; u16_t period; s64_t uptime; @@ -3306,7 +3283,6 @@ const struct bt_mesh_model_op bt_mesh_cfg_srv_op[] = { static void hb_publish(struct ble_npl_event *work) { struct bt_mesh_cfg_srv *cfg = ble_npl_event_get_arg(work); - struct bt_mesh_model *model = cfg->model; struct bt_mesh_subnet *sub; u16_t period_ms; @@ -3329,7 +3305,7 @@ static void hb_publish(struct ble_npl_event *work) k_delayed_work_submit(&cfg->hb_pub.timer, period_ms); } - hb_send(model); + bt_mesh_heartbeat_send(); if (cfg->hb_pub.count != 0xffff) { cfg->hb_pub.count--; @@ -3353,10 +3329,17 @@ static bool conf_is_valid(struct bt_mesh_cfg_srv *cfg) return true; } -int bt_mesh_cfg_srv_init(struct bt_mesh_model *model, bool primary) +static int cfg_srv_init(struct bt_mesh_model *model) { struct bt_mesh_cfg_srv *cfg = model->user_data; + BT_DBG(""); + + if (!bt_mesh_model_in_primary(model)) { + BT_ERR("Configuration Server only allowed in primary element"); + return -EINVAL; + } + if (!cfg) { BT_ERR("No Configuration Server context provided"); return -EINVAL; @@ -3367,8 +3350,11 @@ int bt_mesh_cfg_srv_init(struct bt_mesh_model *model, bool primary) return -EINVAL; } - /* Configuration Model security is device-key based */ - model->keys[0] = BT_MESH_KEY_DEV; + /* + * Configuration Model security is device-key based and only the local + * device-key is allowed to access this model. + */ + model->keys[0] = BT_MESH_KEY_DEV_LOCAL; if (!(MYNEWT_VAL(BLE_MESH_RELAY))) { cfg->relay = BT_MESH_RELAY_NOT_SUPPORTED; @@ -3394,19 +3380,33 @@ int bt_mesh_cfg_srv_init(struct bt_mesh_model *model, bool primary) return 0; } +const struct bt_mesh_model_cb bt_mesh_cfg_srv_cb = { + .init = cfg_srv_init, +}; + static void mod_reset(struct bt_mesh_model *mod, struct bt_mesh_elem *elem, bool vnd, bool primary, void *user_data) { + size_t clear_count; + /* Clear model state that isn't otherwise cleared. E.g. AppKey * binding and model publication is cleared as a consequence - * of removing all app keys, however model subscription clearing - * must be taken care of here. + * of removing all app keys, however model subscription and user data + * clearing must be taken care of here. */ - mod_sub_list_clear(mod); + clear_count = mod_sub_list_clear(mod); if (IS_ENABLED(CONFIG_BT_SETTINGS)) { - bt_mesh_store_mod_sub(mod); + if (clear_count) { + bt_mesh_store_mod_sub(mod); + } + + bt_mesh_model_data_store(mod, vnd, NULL, 0); + } + + if (mod->cb && mod->cb->reset) { + mod->cb->reset(mod); } } @@ -3415,6 +3415,8 @@ void bt_mesh_cfg_reset(void) struct bt_mesh_cfg_srv *cfg = conf; int i; + BT_DBG(""); + if (!cfg) { return; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.c index 79553cba4..20b110378 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.c @@ -6,6 +6,9 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_CRYPTO_LOG + #include #include #include @@ -26,12 +29,8 @@ #include #include #include - #endif -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_CRYPTO)) -#include "host/ble_hs_log.h" - #include "crypto.h" #define NET_MIC_LEN(pdu) (((pdu)[1] & 0x80) ? 8 : 4) @@ -315,7 +314,7 @@ static int bt_mesh_ccm_decrypt(const u8_t key[16], u8_t nonce[13], } } - for (i = 0; i < aad_len; i++, j++) { + for (; i < aad_len; i++, j++) { pmsg[i] = Xn[i] ^ aad[j]; } @@ -479,7 +478,7 @@ static int bt_mesh_ccm_encrypt(const u8_t key[16], u8_t nonce[13], } } - for (i = 0; i < aad_len; i++, j++) { + for (; i < aad_len; i++, j++) { pmsg[i] = Xn[i] ^ aad[j]; } @@ -569,7 +568,6 @@ static int bt_mesh_ccm_encrypt(const u8_t key[16], u8_t nonce[13], return 0; } -#if (MYNEWT_VAL(BLE_MESH_PROXY)) static void create_proxy_nonce(u8_t nonce[13], const u8_t *pdu, u32_t iv_index) { @@ -595,7 +593,6 @@ static void create_proxy_nonce(u8_t nonce[13], const u8_t *pdu, /* IV Index */ sys_put_be32(iv_index, &nonce[9]); } -#endif /* PROXY */ static void create_net_nonce(u8_t nonce[13], const u8_t *pdu, u32_t iv_index) @@ -661,15 +658,11 @@ int bt_mesh_net_encrypt(const u8_t key[16], struct os_mbuf *buf, bt_hex(key, 16), mic_len); BT_DBG("PDU (len %u) %s", buf->om_len, bt_hex(buf->om_data, buf->om_len)); -#if (MYNEWT_VAL(BLE_MESH_PROXY)) - if (proxy) { + if (IS_ENABLED(CONFIG_BT_MESH_PROXY) && proxy) { create_proxy_nonce(nonce, buf->om_data, iv_index); } else { create_net_nonce(nonce, buf->om_data, iv_index); } -#else - create_net_nonce(nonce, buf->om_data, iv_index); -#endif BT_DBG("Nonce %s", bt_hex(nonce, 13)); @@ -692,15 +685,11 @@ int bt_mesh_net_decrypt(const u8_t key[16], struct os_mbuf *buf, BT_DBG("iv_index %u, key %s mic_len %u", (unsigned) iv_index, bt_hex(key, 16), mic_len); -#if (MYNEWT_VAL(BLE_MESH_PROXY)) - if (proxy) { + if (IS_ENABLED(CONFIG_BT_MESH_PROXY) && proxy) { create_proxy_nonce(nonce, buf->om_data, iv_index); } else { create_net_nonce(nonce, buf->om_data, iv_index); } -#else - create_net_nonce(nonce, buf->om_data, iv_index); -#endif BT_DBG("Nonce %s", bt_hex(nonce, 13)); @@ -728,12 +717,11 @@ static void create_app_nonce(u8_t nonce[13], bool dev_key, u8_t aszmic, sys_put_be32(iv_index, &nonce[9]); } -int bt_mesh_app_encrypt(const u8_t key[16], bool dev_key, u8_t aszmic, - struct os_mbuf *buf, const u8_t *ad, - u16_t src, u16_t dst, u32_t seq_num, u32_t iv_index) +static int mesh_app_encrypt(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, const u8_t *ad, + u16_t src, u16_t dst, u32_t seq_num, u32_t iv_index) { u8_t nonce[13]; - int err; BT_DBG("AppKey %s", bt_hex(key, 16)); BT_DBG("dev_key %u src 0x%04x dst 0x%04x", dev_key, src, dst); @@ -745,8 +733,35 @@ int bt_mesh_app_encrypt(const u8_t key[16], bool dev_key, u8_t aszmic, BT_DBG("Nonce %s", bt_hex(nonce, 13)); - err = bt_mesh_ccm_encrypt(key, nonce, buf->om_data, buf->om_len, ad, - ad ? 16 : 0, buf->om_data, APP_MIC_LEN(aszmic)); + return bt_mesh_ccm_encrypt(key, nonce, buf->om_data, buf->om_len, ad, + ad ? 16 : 0, buf->om_data, + APP_MIC_LEN(aszmic)); +} + +int bt_mesh_app_encrypt_in_place(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, const u8_t *ad, u16_t src, + u16_t dst, u32_t seq_num, u32_t iv_index) +{ + int err; + + err = mesh_app_encrypt(key, dev_key, aszmic, buf, ad, src, dst, + seq_num, iv_index); + if (!err) { + BT_DBG("Encr: %s", bt_hex(buf->om_data, buf->om_len)); + } + + return err; +} + +int bt_mesh_app_encrypt(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, const u8_t *ad, + u16_t src, u16_t dst, u32_t seq_num, u32_t iv_index) +{ + int err; + + err = mesh_app_encrypt(key, dev_key, aszmic, buf, ad, src, dst, + seq_num, iv_index); + if (!err) { net_buf_simple_add(buf, APP_MIC_LEN(aszmic)); BT_DBG("Encr: %s", bt_hex(buf->om_data, buf->om_len)); @@ -755,23 +770,43 @@ int bt_mesh_app_encrypt(const u8_t key[16], bool dev_key, u8_t aszmic, return err; } -int bt_mesh_app_decrypt(const u8_t key[16], bool dev_key, u8_t aszmic, - struct os_mbuf *buf, struct os_mbuf *out, - const u8_t *ad, u16_t src, u16_t dst, u32_t seq_num, - u32_t iv_index) +static int mesh_app_decrypt(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, struct os_mbuf *out, + const u8_t *ad, u16_t src, u16_t dst, + u32_t seq_num, u32_t iv_index) { u8_t nonce[13]; - int err; - BT_DBG("EncData (len %u) %s", buf->om_len, bt_hex(buf->om_data, buf->om_len)); + BT_DBG("EncData (len %u) %s", buf->om_len, + bt_hex(buf->om_data, buf->om_len)); create_app_nonce(nonce, dev_key, aszmic, src, dst, seq_num, iv_index); BT_DBG("AppKey %s", bt_hex(key, 16)); BT_DBG("Nonce %s", bt_hex(nonce, 13)); - err = bt_mesh_ccm_decrypt(key, nonce, buf->om_data, buf->om_len, ad, - ad ? 16 : 0, out->om_data, APP_MIC_LEN(aszmic)); + return bt_mesh_ccm_decrypt(key, nonce, buf->om_data, buf->om_len, ad, + ad ? 16 : 0, out->om_data, + APP_MIC_LEN(aszmic)); +} + +int bt_mesh_app_decrypt_in_place(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, const u8_t *ad, u16_t src, + u16_t dst, u32_t seq_num, u32_t iv_index) +{ + return mesh_app_decrypt(key, dev_key, aszmic, buf, buf, + ad, src, dst, seq_num, iv_index); +} + +int bt_mesh_app_decrypt(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, struct os_mbuf *out, + const u8_t *ad, u16_t src, u16_t dst, u32_t seq_num, + u32_t iv_index) +{ + int err; + + err = mesh_app_decrypt(key, dev_key, aszmic, buf, out, + ad, src, dst, seq_num, iv_index); if (!err) { net_buf_simple_add(out, buf->om_len); } @@ -900,6 +935,12 @@ int bt_mesh_prov_decrypt(const u8_t key[16], u8_t nonce[13], return bt_mesh_ccm_decrypt(key, nonce, data, 25, NULL, 0, out, 8); } +int bt_mesh_prov_encrypt(const u8_t key[16], u8_t nonce[13], + const u8_t data[25], u8_t out[25 + 8]) +{ + return bt_mesh_ccm_encrypt(key, nonce, data, 25, NULL, 0, out, 8); +} + int bt_mesh_beacon_auth(const u8_t beacon_key[16], u8_t flags, const u8_t net_id[8], u32_t iv_index, u8_t auth[8]) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.h index a56e6b9e8..745cf324a 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/crypto.h @@ -131,10 +131,18 @@ int bt_mesh_net_encrypt(const u8_t key[16], struct os_mbuf *buf, int bt_mesh_net_decrypt(const u8_t key[16], struct os_mbuf *buf, u32_t iv_index, bool proxy); +int bt_mesh_app_encrypt_in_place(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf*buf, const u8_t *ad, u16_t src, + u16_t dst, u32_t seq_num, u32_t iv_index); + int bt_mesh_app_encrypt(const u8_t key[16], bool dev_key, u8_t aszmic, struct os_mbuf*buf, const u8_t *ad, u16_t src, u16_t dst, u32_t seq_num, u32_t iv_index); +int bt_mesh_app_decrypt_in_place(const u8_t key[16], bool dev_key, u8_t aszmic, + struct os_mbuf *buf, const u8_t *ad, u16_t src, + u16_t dst, u32_t seq_num, u32_t iv_index); + int bt_mesh_app_decrypt(const u8_t key[16], bool dev_key, u8_t aszmic, struct os_mbuf*buf, struct os_mbuf*out, const u8_t *ad, u16_t src, u16_t dst, u32_t seq_num, @@ -157,4 +165,6 @@ int bt_mesh_prov_conf(const u8_t conf_key[16], const u8_t rand[16], int bt_mesh_prov_decrypt(const u8_t key[16], u8_t nonce[13], const u8_t data[25 + 8], u8_t out[25]); +int bt_mesh_prov_encrypt(const u8_t key[16], u8_t nonce[13], + const u8_t data[25], u8_t out[25 + 8]); #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/foundation.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/foundation.h index 2c257ee38..ee615ae9e 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/foundation.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/foundation.h @@ -115,11 +115,16 @@ #define STATUS_UNSPECIFIED 0x10 #define STATUS_INVALID_BINDING 0x11 -int bt_mesh_cfg_srv_init(struct bt_mesh_model *model, bool primary); -int bt_mesh_health_srv_init(struct bt_mesh_model *model, bool primary); +enum { + BT_MESH_VA_CHANGED, /* Label information changed */ +}; -int bt_mesh_cfg_cli_init(struct bt_mesh_model *model, bool primary); -int bt_mesh_health_cli_init(struct bt_mesh_model *model, bool primary); +struct label { + u16_t ref; + u16_t addr; + u8_t uuid[16]; + atomic_t flags[1]; +}; void bt_mesh_cfg_reset(void); @@ -127,6 +132,8 @@ void bt_mesh_heartbeat(u16_t src, u16_t dst, u8_t hops, u16_t feat); void bt_mesh_attention(struct bt_mesh_model *model, u8_t time); +struct label *get_label(u16_t index); + u8_t *bt_mesh_label_uuid_get(u16_t addr); struct bt_mesh_hb_pub *bt_mesh_hb_pub_get(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.c index a9f25f777..9056a8658 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.c @@ -1,4 +1,4 @@ -/* Bluetooth Mesh */ + /* Bluetooth Mesh */ /* * Copyright (c) 2017 Intel Corporation @@ -6,17 +6,15 @@ * SPDX-License-Identifier: Apache-2.0 */ - #include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_CRYPTO_LOG + #if MYNEWT_VAL(BLE_MESH_FRIEND) #include #include #include -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_FRIEND)) -#include "host/ble_hs_log.h" - #include "mesh/mesh.h" #include "mesh/slist.h" #include "mesh_priv.h" @@ -40,9 +38,9 @@ static os_membuf_t friend_buf_mem[OS_MEMPOOL_SIZE( struct os_mbuf_pool friend_os_mbuf_pool; static struct os_mempool friend_buf_mempool; +#define NET_BUF_FRAGS BIT(0) -#define FRIEND_ADV(buf) CONTAINER_OF(BT_MESH_ADV(buf), \ - struct friend_adv, adv) +#define FRIEND_ADV(buf) CONTAINER_OF(BT_MESH_ADV(buf), struct friend_adv, adv) /* PDUs from Friend to the LPN should only be transmitted once with the * smallest possible interval (20ms). @@ -63,54 +61,15 @@ struct friend_pdu_info { static struct friend_adv { struct bt_mesh_adv adv; - u64_t seq_auth; + u16_t app_idx; } adv_pool[FRIEND_BUF_COUNT]; static struct bt_mesh_adv *adv_alloc(int id) { + adv_pool[id].app_idx = BT_MESH_KEY_UNUSED; return &adv_pool[id].adv; } -static void discard_buffer(void) -{ - struct bt_mesh_friend *frnd = &bt_mesh.frnd[0]; - struct os_mbuf *buf; - int i; - - /* Find the Friend context with the most queued buffers */ - for (i = 1; i < ARRAY_SIZE(bt_mesh.frnd); i++) { - if (bt_mesh.frnd[i].queue_size > frnd->queue_size) { - frnd = &bt_mesh.frnd[i]; - } - } - - buf = net_buf_slist_get(&frnd->queue); - __ASSERT_NO_MSG(buf != NULL); - BT_WARN("Discarding buffer %p for LPN 0x%04x", buf, frnd->lpn); - net_buf_unref(buf); -} - -static struct os_mbuf *friend_buf_alloc(u16_t src) -{ - struct os_mbuf *buf; - - do { - buf = bt_mesh_adv_create_from_pool(&friend_os_mbuf_pool, adv_alloc, - BT_MESH_ADV_DATA, - FRIEND_XMIT, K_NO_WAIT); - if (!buf) { - discard_buffer(); - } - } while (!buf); - - BT_MESH_ADV(buf)->addr = src; - FRIEND_ADV(buf)->seq_auth = TRANS_SEQ_AUTH_NVAL; - - BT_DBG("allocated buf %p", buf); - - return buf; -} - static bool is_lpn_unicast(struct bt_mesh_friend *frnd, u16_t addr) { if (frnd->lpn == BT_MESH_ADDR_UNASSIGNED) { @@ -150,6 +109,17 @@ struct bt_mesh_friend *bt_mesh_friend_find(u16_t net_idx, u16_t lpn_addr, return NULL; } +static void purge_buffers(struct net_buf_slist_t *list) +{ + struct os_mbuf *buf; + + while (!net_buf_slist_is_empty(list)) { + buf = (void *)net_buf_slist_get(list); + BT_MESH_ADV(buf)->flags &= ~NET_BUF_FRAGS; + net_buf_unref(buf); + } +} + /* Intentionally start a little bit late into the ReceiveWindow when * it's large enough. This may improve reliability with some platforms, * like the PTS, where the receiver might not have sufficiently compensated @@ -184,16 +154,13 @@ static void friend_clear(struct bt_mesh_friend *frnd) frnd->last = NULL; } - while (!net_buf_slist_is_empty(&frnd->queue)) { - net_buf_unref(net_buf_slist_get(&frnd->queue)); - } + purge_buffers(&frnd->queue); for (i = 0; i < ARRAY_SIZE(frnd->seg); i++) { struct bt_mesh_friend_seg *seg = &frnd->seg[i]; - while (!net_buf_slist_is_empty(&seg->queue)) { - net_buf_unref(net_buf_slist_get(&seg->queue)); - } + purge_buffers(&seg->queue); + seg->seg_count = 0U; } frnd->valid = 0; @@ -327,29 +294,16 @@ static struct os_mbuf *create_friend_pdu(struct bt_mesh_friend *frnd, struct friend_pdu_info *info, struct os_mbuf *sdu) { - struct bt_mesh_subnet *sub; - const u8_t *enc, *priv; struct os_mbuf *buf; - u8_t nid; - sub = bt_mesh_subnet_get(frnd->net_idx); - __ASSERT_NO_MSG(sub != NULL); - - buf = friend_buf_alloc(info->src); - - /* Friend Offer needs master security credentials */ - if (info->ctl && TRANS_CTL_OP(sdu->om_data) == TRANS_CTL_OP_FRIEND_OFFER) { - enc = sub->keys[sub->kr_flag].enc; - priv = sub->keys[sub->kr_flag].privacy; - nid = sub->keys[sub->kr_flag].nid; - } else { - if (friend_cred_get(sub, frnd->lpn, &nid, &enc, &priv)) { - BT_ERR("friend_cred_get failed"); - goto failed; - } + buf = bt_mesh_adv_create_from_pool(&friend_os_mbuf_pool, adv_alloc, + BT_MESH_ADV_DATA, + FRIEND_XMIT, K_NO_WAIT); + if (!buf) { + return NULL; } - net_buf_add_u8(buf, (nid | (info->iv_index & 1) << 7)); + net_buf_add_u8(buf, (info->iv_index & 1) << 7); /* Will be reset in encryption */ if (info->ctl) { net_buf_add_u8(buf, info->ttl | 0x80); @@ -364,25 +318,187 @@ static struct os_mbuf *create_friend_pdu(struct bt_mesh_friend *frnd, net_buf_add_mem(buf, sdu->om_data, sdu->om_len); - /* We re-encrypt and obfuscate using the received IVI rather than - * the normal TX IVI (which may be different) since the transport - * layer nonce includes the IVI. - */ - if (bt_mesh_net_encrypt(enc, buf, info->iv_index, false)) { - BT_ERR("Re-encrypting failed"); - goto failed; - } - - if (bt_mesh_net_obfuscate(buf->om_data, info->iv_index, priv)) { - BT_ERR("Re-obfuscating failed"); - goto failed; - } - return buf; +} -failed: - net_buf_unref(buf); - return NULL; +struct unseg_app_sdu_meta { + struct bt_mesh_net_rx net; + const u8_t *key; + struct bt_mesh_subnet *subnet; + bool is_dev_key; + u8_t aid; + u8_t *ad; +}; + +static int unseg_app_sdu_unpack(struct bt_mesh_friend *frnd, + struct os_mbuf *buf, + struct unseg_app_sdu_meta *meta) +{ + u16_t app_idx = FRIEND_ADV(buf)->app_idx; + int err; + + meta->subnet = bt_mesh_subnet_get(frnd->net_idx); + meta->is_dev_key = (app_idx == BT_MESH_KEY_DEV); + meta->is_dev_key = BT_MESH_IS_DEV_KEY(app_idx); + bt_mesh_net_header_parse(buf, &meta->net); + err = bt_mesh_app_key_get(meta->subnet, app_idx, meta->net.ctx.recv_dst, + &meta->key, &meta->aid); + if (err) { + return err; + } + + if (BT_MESH_ADDR_IS_VIRTUAL(meta->net.ctx.recv_dst)) { + meta->ad = bt_mesh_label_uuid_get(meta->net.ctx.recv_dst); + if (!meta->ad) { + return -ENOENT; + } + } else { + meta->ad = NULL; + } + + return 0; +} + +static int unseg_app_sdu_decrypt(struct bt_mesh_friend *frnd, + struct os_mbuf *buf, + const struct unseg_app_sdu_meta *meta) +{ + struct net_buf_simple_state state; + int err; + + BT_DBG(""); + + net_buf_simple_save(buf, &state); + net_buf_simple_pull_mem(buf, 10); + buf->om_len -= 4; + + err = bt_mesh_app_decrypt_in_place(meta->key, meta->is_dev_key, + 0, buf, meta->ad, meta->net.ctx.addr, + meta->net.ctx.recv_dst, meta->net.seq, + BT_MESH_NET_IVI_TX); + + net_buf_simple_restore(buf, &state); + return err; +} + +static int unseg_app_sdu_encrypt(struct bt_mesh_friend *frnd, + struct os_mbuf *buf, + const struct unseg_app_sdu_meta *meta) +{ + struct net_buf_simple_state state; + int err; + + BT_DBG(""); + + net_buf_simple_save(buf, &state); + net_buf_simple_pull_mem(buf, 10); + buf->om_len -= 4; + + err = bt_mesh_app_encrypt_in_place(meta->key, meta->is_dev_key, 0, buf, + meta->ad, meta->net.ctx.addr, + meta->net.ctx.recv_dst, bt_mesh.seq, + BT_MESH_NET_IVI_TX); + + net_buf_simple_restore(buf, &state); + return err; +} + +static int unseg_app_sdu_prepare(struct bt_mesh_friend *frnd, + struct os_mbuf *buf) +{ + struct unseg_app_sdu_meta meta; + int err; + + BT_DBG(""); + + if (FRIEND_ADV(buf)->app_idx == BT_MESH_KEY_UNUSED) { + return 0; + } + + err = unseg_app_sdu_unpack(frnd, buf, &meta); + if (err) { + return err; + } + + /* No need to reencrypt the message if the sequence number is + * unchanged. + */ + if (meta.net.seq == bt_mesh.seq) { + return 0; + } + + err = unseg_app_sdu_decrypt(frnd, buf, &meta); + if (err) { + BT_WARN("Decryption failed! %d", err); + return err; + } + + err = unseg_app_sdu_encrypt(frnd, buf, &meta); + if (err) { + BT_WARN("Re-encryption failed! %d", err); + } + + return err; +} + +static int encrypt_friend_pdu(struct bt_mesh_friend *frnd, struct os_mbuf *buf, + bool master_cred) +{ + struct bt_mesh_subnet *sub = bt_mesh_subnet_get(frnd->net_idx); + const u8_t *enc, *priv; + u32_t iv_index; + u16_t src; + u8_t nid; + int err; + + if (master_cred) { + enc = sub->keys[sub->kr_flag].enc; + priv = sub->keys[sub->kr_flag].privacy; + nid = sub->keys[sub->kr_flag].nid; + } else { + if (friend_cred_get(sub, frnd->lpn, &nid, &enc, &priv)) { + BT_ERR("friend_cred_get failed"); + return -ENOENT; + } + } + + src = sys_get_be16(&buf->om_data[5]); + + if (bt_mesh_elem_find(src)) { + u32_t seq; + + if (FRIEND_ADV(buf)->app_idx != BT_MESH_KEY_UNUSED) { + err = unseg_app_sdu_prepare(frnd, buf); + if (err) { + return err; + } + } + + seq = bt_mesh_next_seq(); + buf->om_data[2] = seq >> 16; + buf->om_data[3] = seq >> 8; + buf->om_data[4] = seq; + + iv_index = BT_MESH_NET_IVI_TX; + FRIEND_ADV(buf)->app_idx = BT_MESH_KEY_UNUSED; + } else { + u8_t ivi = (buf->om_data[0] >> 7); + iv_index = (bt_mesh.iv_index - ((bt_mesh.iv_index & 1) != ivi)); + } + + buf->om_data[0] = (nid | (iv_index & 1) << 7); + + if (bt_mesh_net_encrypt(enc, buf, iv_index, false)) { + BT_ERR("Encrypting failed"); + return -EINVAL; + } + + if (bt_mesh_net_obfuscate(buf->om_data, iv_index, priv)) { + BT_ERR("Obfuscating failed"); + return -EINVAL; + } + + return 0; } static struct os_mbuf *encode_friend_ctl(struct bt_mesh_friend *frnd, @@ -390,7 +506,6 @@ static struct os_mbuf *encode_friend_ctl(struct bt_mesh_friend *frnd, struct os_mbuf *sdu) { struct friend_pdu_info info; - u32_t seq; BT_DBG("LPN 0x%04x", frnd->lpn); @@ -402,10 +517,7 @@ static struct os_mbuf *encode_friend_ctl(struct bt_mesh_friend *frnd, info.ctl = 1; info.ttl = 0; - seq = bt_mesh_next_seq(); - info.seq[0] = seq >> 16; - info.seq[1] = seq >> 8; - info.seq[2] = seq; + memset(info.seq, 0, sizeof(info.seq)); info.iv_index = BT_MESH_NET_IVI_TX; @@ -455,6 +567,10 @@ static void enqueue_sub_cfm(struct bt_mesh_friend *frnd, u8_t xact) goto done; } + if (encrypt_friend_pdu(frnd, buf, false)) { + return; + } + if (frnd->last) { BT_DBG("Discarding last PDU"); net_buf_unref(frnd->last); @@ -693,8 +809,8 @@ static void clear_procedure_start(struct bt_mesh_friend *frnd) { BT_DBG("LPN 0x%04x (old) Friend 0x%04x", frnd->lpn, frnd->clear.frnd); - frnd->clear.start = k_uptime_get_32() + (2 * frnd->poll_to); - frnd->clear.repeat_sec = 1; + frnd->clear.start = k_uptime_get_32(); + frnd->clear.repeat_sec = 1U; send_friend_clear(frnd); } @@ -763,6 +879,10 @@ static void enqueue_offer(struct bt_mesh_friend *frnd, s8_t rssi) goto done; } + if (encrypt_friend_pdu(frnd, buf, true)) { + return; + } + frnd->counter++; if (frnd->last) { @@ -886,7 +1006,7 @@ init_friend: frnd->clear.frnd = sys_be16_to_cpu(msg->prev_addr); BT_DBG("LPN 0x%04x rssi %d recv_delay %u poll_to %ums", - frnd->lpn, rx->rssi, frnd->recv_delay, + frnd->lpn, rx->ctx.recv_rssi, frnd->recv_delay, (unsigned) frnd->poll_to); if (BT_MESH_ADDR_IS_UNICAST(frnd->clear.frnd) && @@ -895,45 +1015,70 @@ init_friend: } k_delayed_work_submit(&frnd->timer, - offer_delay(frnd, rx->rssi, msg->criteria)); + offer_delay(frnd, rx->ctx.recv_rssi, + msg->criteria)); friend_cred_create(rx->sub, frnd->lpn, frnd->lpn_counter, frnd->counter); - enqueue_offer(frnd, rx->rssi); + enqueue_offer(frnd, rx->ctx.recv_rssi); return 0; } +static bool is_seg(struct bt_mesh_friend_seg *seg, u16_t src, u16_t seq_zero) +{ + struct os_mbuf *buf = (void *)net_buf_slist_peek_head(&seg->queue); + struct net_buf_simple_state state; + u16_t buf_seq_zero; + u16_t buf_src; + + if (!buf) { + return false; + } + + net_buf_simple_save(buf, &state); + net_buf_skip(buf, 5); /* skip IVI, NID, CTL, TTL, SEQ */ + buf_src = net_buf_pull_be16(buf); + net_buf_skip(buf, 3); /* skip DST, OP/AID */ + buf_seq_zero = ((net_buf_pull_be16(buf) >> 2) & TRANS_SEQ_ZERO_MASK); + net_buf_simple_restore(buf, &state); + + return ((src == buf_src) && (seq_zero == buf_seq_zero)); +} + static struct bt_mesh_friend_seg *get_seg(struct bt_mesh_friend *frnd, - u16_t src, u64_t *seq_auth) + u16_t src, u16_t seq_zero, + u8_t seg_count) { struct bt_mesh_friend_seg *unassigned = NULL; int i; for (i = 0; i < ARRAY_SIZE(frnd->seg); i++) { struct bt_mesh_friend_seg *seg = &frnd->seg[i]; - struct os_mbuf *buf = (void *)net_buf_slist_peek_head(&seg->queue); - if (buf && BT_MESH_ADV(buf)->addr == src && - FRIEND_ADV(buf)->seq_auth == *seq_auth) { + if (is_seg(seg, src, seq_zero)) { return seg; } - if (!unassigned && !buf) { + if (!unassigned && !net_buf_slist_peek_head(&seg->queue)) { unassigned = seg; } } + if (unassigned) { + unassigned->seg_count = seg_count; + } + return unassigned; } static void enqueue_friend_pdu(struct bt_mesh_friend *frnd, enum bt_mesh_friend_pdu_type type, + u16_t src, u8_t seg_count, struct os_mbuf *buf) { struct bt_mesh_friend_seg *seg; - struct friend_adv *adv; BT_DBG("type %u", type); @@ -946,11 +1091,11 @@ static void enqueue_friend_pdu(struct bt_mesh_friend *frnd, return; } - adv = FRIEND_ADV(buf); - seg = get_seg(frnd, BT_MESH_ADV(buf)->addr, &adv->seq_auth); + u16_t seq_zero = (((buf->om_data[10] << 8 | buf->om_data[11]) >> 2) & TRANS_SEQ_ZERO_MASK); + + seg = get_seg(frnd, src, seq_zero, seg_count); if (!seg) { - BT_ERR("No free friend segment RX contexts for 0x%04x", - BT_MESH_ADV(buf)->addr); + BT_ERR("No free friend segment RX contexts for 0x%04x", src); net_buf_unref(buf); return; } @@ -962,19 +1107,13 @@ static void enqueue_friend_pdu(struct bt_mesh_friend *frnd, enqueue_update(frnd, 1); } - /* Only acks should have a valid SeqAuth in the Friend queue - * (otherwise we can't easily detect them there), so clear - * the SeqAuth information from the segments before merging. - */ - struct os_mbuf *m; - struct os_mbuf_pkthdr *pkthdr; - NET_BUF_SLIST_FOR_EACH_NODE(&seg->queue, pkthdr) { - m = OS_MBUF_PKTHDR_TO_MBUF(pkthdr); - FRIEND_ADV(m)->seq_auth = TRANS_SEQ_AUTH_NVAL; - frnd->queue_size++; - } - net_buf_slist_merge_slist(&frnd->queue, &seg->queue); + + frnd->queue_size += seg->seg_count; + seg->seg_count = 0U; + } else { + /* Mark the buffer as having more to come after it */ + BT_MESH_ADV(buf)->flags |= NET_BUF_FRAGS; } } @@ -1040,13 +1179,21 @@ static void friend_timeout(struct ble_npl_event *work) return; } - frnd->last = net_buf_slist_get(&frnd->queue); + frnd->last = (void *)net_buf_slist_get(&frnd->queue); if (!frnd->last) { - BT_WARN("Friendship not established with 0x%04x", frnd->lpn); + BT_WARN("Friendship not established with 0x%04x", + frnd->lpn); friend_clear(frnd); return; } + if (encrypt_friend_pdu(frnd, frnd->last, false)) { + return; + } + + /* Clear the flag we use for segment tracking */ + BT_MESH_ADV(frnd->last)->flags &= ~NET_BUF_FRAGS; + BT_DBG("Sending buf %p from Friend Queue of LPN 0x%04x", frnd->last, frnd->lpn); frnd->queue_size--; @@ -1093,6 +1240,42 @@ int bt_mesh_friend_init(void) return 0; } +static bool is_segack(struct os_mbuf *buf, u64_t *seqauth, u16_t src) +{ + struct net_buf_simple_state state; + bool found = false; + + if (buf->om_len != 16) { + return false; + } + + net_buf_simple_save(buf, &state); + + net_buf_skip(buf, 1); /* skip IVI, NID */ + + if (!(net_buf_pull_u8(buf) >> 7)) { + goto end; + } + + net_buf_pull(buf, 3); /* skip SEQNUM */ + + if (src != net_buf_pull_be16(buf)) { + goto end; + } + + net_buf_skip(buf, 2); /* skip dst */ + + if (TRANS_CTL_OP((u8_t *) net_buf_pull_mem(buf, 1)) != TRANS_CTL_OP_ACK) { + goto end; + } + + found = ((net_buf_pull_be16(buf) >> 2) & TRANS_SEQ_ZERO_MASK) == + (*seqauth & TRANS_SEQ_ZERO_MASK); +end: + net_buf_simple_restore(buf, &state); + return found; +} + static void friend_purge_old_ack(struct bt_mesh_friend *frnd, u64_t *seq_auth, u16_t src) { @@ -1104,8 +1287,7 @@ static void friend_purge_old_ack(struct bt_mesh_friend *frnd, u64_t *seq_auth, cur != NULL; prev = cur, cur = net_buf_slist_peek_next(cur)) { struct os_mbuf *buf = (void *)cur; - if (BT_MESH_ADV(buf)->addr == src && - FRIEND_ADV(buf)->seq_auth == *seq_auth) { + if (is_segack(buf, seq_auth, src)) { BT_DBG("Removing old ack from Friend Queue"); net_buf_slist_remove(&frnd->queue, prev, cur); @@ -1120,11 +1302,20 @@ static void friend_purge_old_ack(struct bt_mesh_friend *frnd, u64_t *seq_auth, static void friend_lpn_enqueue_rx(struct bt_mesh_friend *frnd, struct bt_mesh_net_rx *rx, enum bt_mesh_friend_pdu_type type, - u64_t *seq_auth, struct os_mbuf *sbuf) + u64_t *seq_auth, u8_t seg_count, + struct os_mbuf *sbuf) { struct friend_pdu_info info; struct os_mbuf *buf; + /* Because of network loopback, tx packets will also be passed into + * this rx function. These packets have already been added to the + * queue, and should be ignored. + */ + if (bt_mesh_elem_find(rx->ctx.addr)) { + return; + } + BT_DBG("LPN 0x%04x queue_size %u", frnd->lpn, (unsigned) frnd->queue_size); @@ -1155,11 +1346,7 @@ static void friend_lpn_enqueue_rx(struct bt_mesh_friend *frnd, return; } - if (seq_auth) { - FRIEND_ADV(buf)->seq_auth = *seq_auth; - } - - enqueue_friend_pdu(frnd, type, buf); + enqueue_friend_pdu(frnd, type, info.src, seg_count, buf); BT_DBG("Queued message for LPN 0x%04x, queue_size %u", frnd->lpn, (unsigned) frnd->queue_size); @@ -1168,11 +1355,11 @@ static void friend_lpn_enqueue_rx(struct bt_mesh_friend *frnd, static void friend_lpn_enqueue_tx(struct bt_mesh_friend *frnd, struct bt_mesh_net_tx *tx, enum bt_mesh_friend_pdu_type type, - u64_t *seq_auth, struct os_mbuf *sbuf) + u64_t *seq_auth, u8_t seg_count, + struct os_mbuf *sbuf) { struct friend_pdu_info info; struct os_mbuf *buf; - u32_t seq; BT_DBG("LPN 0x%04x", frnd->lpn); @@ -1186,10 +1373,9 @@ static void friend_lpn_enqueue_tx(struct bt_mesh_friend *frnd, info.ttl = tx->ctx->send_ttl; info.ctl = (tx->ctx->app_idx == BT_MESH_KEY_UNUSED); - seq = bt_mesh_next_seq(); - info.seq[0] = seq >> 16; - info.seq[1] = seq >> 8; - info.seq[2] = seq; + info.seq[0] = (bt_mesh.seq >> 16); + info.seq[1] = (bt_mesh.seq >> 8); + info.seq[2] = bt_mesh.seq; info.iv_index = BT_MESH_NET_IVI_TX; @@ -1199,11 +1385,15 @@ static void friend_lpn_enqueue_tx(struct bt_mesh_friend *frnd, return; } - if (seq_auth) { - FRIEND_ADV(buf)->seq_auth = *seq_auth; + if (type == BT_MESH_FRIEND_PDU_SINGLE && !info.ctl) { + /* Unsegmented application packets may be reencrypted later, + * as they depend on the the sequence number being the same + * when encrypting in transport and network. + */ + FRIEND_ADV(buf)->app_idx = tx->ctx->app_idx; } - enqueue_friend_pdu(frnd, type, buf); + enqueue_friend_pdu(frnd, type, info.src, seg_count, buf); BT_DBG("Queued message for LPN 0x%04x", frnd->lpn); } @@ -1253,9 +1443,112 @@ bool bt_mesh_friend_match(u16_t net_idx, u16_t addr) return false; } +static bool friend_queue_has_space(struct bt_mesh_friend *frnd, u16_t addr, + u64_t *seq_auth, u8_t seg_count) +{ + u32_t total = 0; + int i; + + if (seg_count > CONFIG_BT_MESH_FRIEND_QUEUE_SIZE) { + return false; + } + + for (i = 0; i < ARRAY_SIZE(frnd->seg); i++) { + struct bt_mesh_friend_seg *seg = &frnd->seg[i]; + + if (seq_auth && is_seg(seg, addr, *seq_auth & TRANS_SEQ_ZERO_MASK)) { + /* If there's a segment queue for this message then the + * space verification has already happened. + */ + return true; + } + + total += seg->seg_count; + } + + /* If currently pending segments combined with this segmented message + * are more than the Friend Queue Size, then there's no space. This + * is because we don't have a mechanism of aborting already pending + * segmented messages to free up buffers. + */ + return (CONFIG_BT_MESH_FRIEND_QUEUE_SIZE - total) > seg_count; +} + +bool bt_mesh_friend_queue_has_space(u16_t net_idx, u16_t src, u16_t dst, + u64_t *seq_auth, u8_t seg_count) +{ + bool someone_has_space = false, friend_match = false; + int i; + + for (i = 0; i < ARRAY_SIZE(bt_mesh.frnd); i++) { + struct bt_mesh_friend *frnd = &bt_mesh.frnd[i]; + + if (!friend_lpn_matches(frnd, net_idx, dst)) { + continue; + } + + friend_match = true; + + if (friend_queue_has_space(frnd, src, seq_auth, seg_count)) { + someone_has_space = true; + } + } + + /* If there were no matched LPNs treat this as success, so the + * transport layer can continue its work. + */ + if (!friend_match) { + return true; + } + + /* From the transport layers perspective it's good enough that at + * least one Friend Queue has space. If there were multiple Friend + * matches then the destination must be a group address, in which + * case e.g. segment acks are not sent. + */ + return someone_has_space; +} + +static bool friend_queue_prepare_space(struct bt_mesh_friend *frnd, u16_t addr, + u64_t *seq_auth, u8_t seg_count) +{ + bool pending_segments; + u8_t avail_space; + + if (!friend_queue_has_space(frnd, addr, seq_auth, seg_count)) { + return false; + } + + avail_space = CONFIG_BT_MESH_FRIEND_QUEUE_SIZE - frnd->queue_size; + pending_segments = false; + + while (pending_segments || avail_space < seg_count) { + struct os_mbuf *buf = (void *)net_buf_slist_get(&frnd->queue); + + if (!buf) { + BT_ERR("Unable to free up enough buffers"); + return false; + } + + frnd->queue_size--; + avail_space++; + + pending_segments = (BT_MESH_ADV(buf)->flags & NET_BUF_FRAGS); + BT_DBG("PENDING SEGMENTS %d", pending_segments); + + /* Make sure old slist entry state doesn't remain */ + BT_MESH_ADV(buf)->flags &= ~NET_BUF_FRAGS; + + net_buf_unref(buf); + } + + return true; +} + void bt_mesh_friend_enqueue_rx(struct bt_mesh_net_rx *rx, enum bt_mesh_friend_pdu_type type, - u64_t *seq_auth, struct os_mbuf *sbuf) + u64_t *seq_auth, u8_t seg_count, + struct os_mbuf *sbuf) { int i; @@ -1272,16 +1565,25 @@ void bt_mesh_friend_enqueue_rx(struct bt_mesh_net_rx *rx, for (i = 0; i < ARRAY_SIZE(bt_mesh.frnd); i++) { struct bt_mesh_friend *frnd = &bt_mesh.frnd[i]; - if (friend_lpn_matches(frnd, rx->sub->net_idx, - rx->ctx.recv_dst)) { - friend_lpn_enqueue_rx(frnd, rx, type, seq_auth, sbuf); + if (!friend_lpn_matches(frnd, rx->sub->net_idx, + rx->ctx.recv_dst)) { + continue; } + + if (!friend_queue_prepare_space(frnd, rx->ctx.addr, seq_auth, + seg_count)) { + continue; + } + + friend_lpn_enqueue_rx(frnd, rx, type, seq_auth, seg_count, + sbuf); } } bool bt_mesh_friend_enqueue_tx(struct bt_mesh_net_tx *tx, enum bt_mesh_friend_pdu_type type, - u64_t *seq_auth, struct os_mbuf *sbuf) + u64_t *seq_auth, u8_t seg_count, + struct os_mbuf *sbuf) { bool matched = false; int i; @@ -1297,10 +1599,19 @@ bool bt_mesh_friend_enqueue_tx(struct bt_mesh_net_tx *tx, for (i = 0; i < ARRAY_SIZE(bt_mesh.frnd); i++) { struct bt_mesh_friend *frnd = &bt_mesh.frnd[i]; - if (friend_lpn_matches(frnd, tx->sub->net_idx, tx->ctx->addr)) { - friend_lpn_enqueue_tx(frnd, tx, type, seq_auth, sbuf); - matched = true; + if (!friend_lpn_matches(frnd, tx->sub->net_idx, + tx->ctx->addr)) { + continue; } + + if (!friend_queue_prepare_space(frnd, tx->src, seq_auth, + seg_count)) { + continue; + } + + friend_lpn_enqueue_tx(frnd, tx, type, seq_auth, seg_count, + sbuf); + matched = true; } return matched; @@ -1323,26 +1634,16 @@ void bt_mesh_friend_clear_incomplete(struct bt_mesh_subnet *sub, u16_t src, for (j = 0; j < ARRAY_SIZE(frnd->seg); j++) { struct bt_mesh_friend_seg *seg = &frnd->seg[j]; - struct os_mbuf *buf; - buf = (void *)net_buf_slist_peek_head(&seg->queue); - if (!buf) { - continue; - } - - if (BT_MESH_ADV(buf)->addr != src) { - continue; - } - - if (FRIEND_ADV(buf)->seq_auth != *seq_auth) { + if (!is_seg(seg, src, *seq_auth & TRANS_SEQ_ZERO_MASK)) { continue; } BT_WARN("Clearing incomplete segments for 0x%04x", src); - while (!net_buf_slist_is_empty(&seg->queue)) { - net_buf_unref(net_buf_slist_get(&seg->queue)); - } + purge_buffers(&seg->queue); + seg->seg_count = 0U; + break; } } } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.h index 053de146c..10ffa8190 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/friend.h @@ -22,12 +22,17 @@ bool bt_mesh_friend_match(u16_t net_idx, u16_t addr); struct bt_mesh_friend *bt_mesh_friend_find(u16_t net_idx, u16_t lpn_addr, bool valid, bool established); +bool bt_mesh_friend_queue_has_space(u16_t net_idx, u16_t src, u16_t dst, + u64_t *seq_auth, u8_t seg_count); + void bt_mesh_friend_enqueue_rx(struct bt_mesh_net_rx *rx, enum bt_mesh_friend_pdu_type type, - u64_t *seq_auth, struct os_mbuf *sbuf); + u64_t *seq_auth, u8_t seg_count, + struct os_mbuf *sbuf); bool bt_mesh_friend_enqueue_tx(struct bt_mesh_net_tx *tx, enum bt_mesh_friend_pdu_type type, - u64_t *seq_auth, struct os_mbuf *sbuf); + u64_t *seq_auth, u8_t seg_count, + struct os_mbuf *sbuf); void bt_mesh_friend_clear_incomplete(struct bt_mesh_subnet *sub, u16_t src, u16_t dst, u64_t *seq_auth); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/glue.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/glue.c index 3b765ee65..7da73d15b 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/glue.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/glue.c @@ -17,6 +17,9 @@ * under the License. */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_LOG + #include "mesh/glue.h" #include "adv.h" #ifndef MYNEWT @@ -27,22 +30,6 @@ #include "base64/base64.h" #endif -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG)) - -#if MYNEWT_VAL(BLE_EXT_ADV) -#define BT_MESH_ADV_INST (MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)) - -#if MYNEWT_VAL(BLE_MESH_PROXY) -/* Note that BLE_MULTI_ADV_INSTANCES contains number of additional instances. - * Instance 0 is always there - */ -#if MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES) < 1 -#error "Mesh needs at least BLE_MULTI_ADV_INSTANCES set to 1" -#endif -#define BT_MESH_ADV_GATT_INST (MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES) - 1) -#endif /* BLE_MESH_PROXY */ -#endif /* BLE_EXT_ADV */ - extern u8_t g_mesh_addr_type; #if MYNEWT_VAL(BLE_EXT_ADV) @@ -133,13 +120,16 @@ bt_encrypt_be(const uint8_t *key, const uint8_t *plaintext, uint8_t *enc_data) mbedtls_aes_init(&s); if (mbedtls_aes_setkey_enc(&s, key, 128) != 0) { + mbedtls_aes_free(&s); return BLE_HS_EUNKNOWN; } if (mbedtls_aes_crypt_ecb(&s, MBEDTLS_AES_ENCRYPT, plaintext, enc_data) != 0) { + mbedtls_aes_free(&s); return BLE_HS_EUNKNOWN; } + mbedtls_aes_free(&s); return 0; } @@ -872,13 +862,11 @@ void net_buf_slist_remove(struct net_buf_slist_t *list, struct os_mbuf *prev, void net_buf_slist_merge_slist(struct net_buf_slist_t *list, struct net_buf_slist_t *list_to_append) { - struct os_mbuf_pkthdr *pkthdr; - - STAILQ_FOREACH(pkthdr, list_to_append, omp_next) { - STAILQ_INSERT_TAIL(list, pkthdr, omp_next); + if (!STAILQ_EMPTY(list_to_append)) { + *(list)->stqh_last = list_to_append->stqh_first; + (list)->stqh_last = list_to_append->stqh_last; + STAILQ_INIT(list_to_append); } - - STAILQ_INIT(list); } #if MYNEWT_VAL(BLE_MESH_SETTINGS) @@ -889,7 +877,8 @@ int settings_bytes_from_str(char *val_str, void *vp, int *len) return 0; } -char *settings_str_from_bytes(void *vp, int vp_len, char *buf, int buf_len) +char *settings_str_from_bytes(const void *vp, int vp_len, + char *buf, int buf_len) { if (BASE64_ENCODE_SIZE(vp_len) > buf_len) { return NULL; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_cli.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_cli.c index 68543415c..193279c28 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_cli.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_cli.c @@ -6,14 +6,13 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_MODEL_LOG + #include #include #include -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_MODEL)) -#include "host/ble_hs_log.h" - #include "mesh/mesh.h" #include "mesh_priv.h" #include "adv.h" @@ -206,7 +205,7 @@ static int cli_wait(void) int bt_mesh_health_attention_get(u16_t net_idx, u16_t addr, u16_t app_idx, u8_t *attention) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_ATTENTION_GET, 0); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -241,7 +240,7 @@ done: int bt_mesh_health_attention_set(u16_t net_idx, u16_t addr, u16_t app_idx, u8_t attention, u8_t *updated_attention) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_ATTENTION_SET, 1); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -287,7 +286,7 @@ done: int bt_mesh_health_period_get(u16_t net_idx, u16_t addr, u16_t app_idx, u8_t *divisor) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 0 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEALTH_PERIOD_GET, 0); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -322,7 +321,7 @@ done: int bt_mesh_health_period_set(u16_t net_idx, u16_t addr, u16_t app_idx, u8_t divisor, u8_t *updated_divisor) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEALTH_PERIOD_SET, 1); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -369,7 +368,7 @@ int bt_mesh_health_fault_test(u16_t net_idx, u16_t addr, u16_t app_idx, u16_t cid, u8_t test_id, u8_t *faults, size_t *fault_count) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 3 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEALTH_FAULT_TEST, 3); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -420,7 +419,7 @@ int bt_mesh_health_fault_clear(u16_t net_idx, u16_t addr, u16_t app_idx, u16_t cid, u8_t *test_id, u8_t *faults, size_t *fault_count) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 2 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEALTH_FAULT_CLEAR, 2); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -470,7 +469,7 @@ int bt_mesh_health_fault_get(u16_t net_idx, u16_t addr, u16_t app_idx, u16_t cid, u8_t *test_id, u8_t *faults, size_t *fault_count) { - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 2 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEALTH_FAULT_GET, 2); struct bt_mesh_msg_ctx ctx = { .net_idx = net_idx, .app_idx = app_idx, @@ -528,11 +527,11 @@ int bt_mesh_health_cli_set(struct bt_mesh_model *model) return 0; } -int bt_mesh_health_cli_init(struct bt_mesh_model *model, bool primary) +static int health_cli_init(struct bt_mesh_model *model) { struct bt_mesh_health_cli *cli = model->user_data; - BT_DBG("primary %u", primary); + BT_DBG("primary %u", bt_mesh_model_in_primary(model)); if (!cli) { BT_ERR("No Health Client context provided"); @@ -551,3 +550,7 @@ int bt_mesh_health_cli_init(struct bt_mesh_model *model, bool primary) return 0; } + +const struct bt_mesh_model_cb bt_mesh_health_cli_cb = { + .init = health_cli_init, +}; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_srv.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_srv.c index 97e3e043b..16de83a99 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_srv.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/health_srv.c @@ -6,14 +6,13 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_MODEL_LOG + #include #include #include -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_MODEL)) -#include "host/ble_hs_log.h" - #include "mesh/mesh.h" #include "mesh_priv.h" #include "adv.h" @@ -218,8 +217,7 @@ done: static void send_attention_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_ATTENTION_STATUS, 1); struct bt_mesh_health_srv *srv = model->user_data; u8_t time; @@ -273,8 +271,7 @@ static void attention_set(struct bt_mesh_model *model, static void send_health_period_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - /* Needed size: opcode (2 bytes) + msg + MIC */ - struct os_mbuf *msg = NET_BUF_SIMPLE(2 + 1 + 4); + struct os_mbuf *msg = BT_MESH_MODEL_BUF(OP_HEALTH_PERIOD_STATUS, 1); bt_mesh_model_msg_init(msg, OP_HEALTH_PERIOD_STATUS); @@ -347,8 +344,10 @@ static int health_pub_update(struct bt_mesh_model *mod) BT_DBG(""); count = health_get_current(mod, pub->msg); - if (!count) { - pub->period_div = 0; + if (count) { + pub->fast_period = 1U; + } else { + pub->fast_period = 0U; } return 0; @@ -363,6 +362,15 @@ int bt_mesh_fault_update(struct bt_mesh_elem *elem) return -EINVAL; } + /* Let periodic publishing, if enabled, take care of sending the + * Health Current Status. + */ + if (bt_mesh_model_pub_period_get(mod)) { + return 0; + } + + health_pub_update(mod); + return bt_mesh_model_publish(mod); } @@ -376,12 +384,12 @@ static void attention_off(struct ble_npl_event *work) } } -int bt_mesh_health_srv_init(struct bt_mesh_model *model, bool primary) +static int health_srv_init(struct bt_mesh_model *model) { struct bt_mesh_health_srv *srv = model->user_data; if (!srv) { - if (!primary) { + if (!bt_mesh_model_in_primary(model)) { return 0; } @@ -401,13 +409,17 @@ int bt_mesh_health_srv_init(struct bt_mesh_model *model, bool primary) srv->model = model; - if (primary) { + if (bt_mesh_model_in_primary(model)) { health_srv = srv; } return 0; } +const struct bt_mesh_model_cb bt_mesh_health_srv_cb = { + .init = health_srv_init, +}; + void bt_mesh_attention(struct bt_mesh_model *model, u8_t time) { struct bt_mesh_health_srv *srv; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/lpn.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/lpn.c index 0dd00ac6c..ec012a5f0 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/lpn.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/lpn.c @@ -7,14 +7,12 @@ */ #include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_LOW_POWER_LOG #if MYNEWT_VAL(BLE_MESH_LOW_POWER) #include -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_LOW_POWER)) -#include "host/ble_hs_log.h" - #include "mesh/mesh.h" #include "mesh_priv.h" #include "crypto.h" @@ -66,7 +64,7 @@ static void (*lpn_cb)(u16_t friend_addr, bool established); -#if MYNEWT_VAL(BLE_MESH_DEBUG_LOW_POWER) +#if MYNEWT_VAL(BLE_MESH_LOW_POWER_LOG_LVL) == LOG_LEVEL_DEBUG static const char *state2str(int state) { switch (state) { @@ -92,11 +90,11 @@ static const char *state2str(int state) return "(unknown)"; } } -#endif /* CONFIG_BLUETOOTH_MESH_DEBUG_LPN */ +#endif static inline void lpn_set_state(int state) { -#if MYNEWT_VAL(BLE_MESH_DEBUG_LOW_POWER) +#if MYNEWT_VAL(BLE_MESH_LOW_POWER_LOG_LVL) == LOG_LEVEL_DEBUG BT_DBG("%s -> %s", state2str(bt_mesh.lpn.state), state2str(state)); #endif bt_mesh.lpn.state = state; @@ -196,6 +194,7 @@ static int send_friend_clear(void) static void clear_friendship(bool force, bool disable) { + struct bt_mesh_cfg_srv *cfg = bt_mesh_cfg_get(); struct bt_mesh_lpn *lpn = &bt_mesh.lpn; BT_DBG("force %u disable %u", force, disable); @@ -243,6 +242,10 @@ static void clear_friendship(bool force, bool disable) */ lpn->groups_changed = 1; + if (cfg->hb_pub.feat & BT_MESH_FEAT_LOW_POWER) { + bt_mesh_heartbeat_send(); + } + if (disable) { lpn_set_state(BT_MESH_LPN_DISABLED); return; @@ -311,7 +314,7 @@ static void req_sent(u16_t duration, int err, void *user_data) { struct bt_mesh_lpn *lpn = &bt_mesh.lpn; -#if BT_DBG_ENABLED +#if MYNEWT_VAL(BLE_MESH_LOW_POWER_LOG_LVL) == LOG_LEVEL_DEBUG BT_DBG("req 0x%02x duration %u err %d state %s", lpn->sent_req, duration, err, state2str(lpn->state)); #endif @@ -725,7 +728,7 @@ static void lpn_timeout(struct ble_npl_event *work) { struct bt_mesh_lpn *lpn = &bt_mesh.lpn; -#if MYNEWT_VAL(BLE_MESH_DEBUG_LOW_POWER) +#if MYNEWT_VAL(BLE_MESH_LOW_POWER_LOG_LVL) == LOG_LEVEL_DEBUG BT_DBG("state: %s", state2str(lpn->state)); #endif @@ -758,6 +761,7 @@ static void lpn_timeout(struct ble_npl_event *work) } lpn->counter++; lpn_set_state(BT_MESH_LPN_ENABLED); + lpn->sent_req = 0U; k_delayed_work_submit(&lpn->timer, FRIEND_REQ_RETRY_TIMEOUT); break; case BT_MESH_LPN_ESTABLISHED: @@ -940,6 +944,8 @@ int bt_mesh_lpn_friend_update(struct bt_mesh_net_rx *rx, } if (!lpn->established) { + struct bt_mesh_cfg_srv *cfg = bt_mesh_cfg_get(); + /* This is normally checked on the transport layer, however * in this state we're also still accepting master * credentials so we need to ensure the right ones (Friend @@ -954,6 +960,10 @@ int bt_mesh_lpn_friend_update(struct bt_mesh_net_rx *rx, BT_INFO("Friendship established with 0x%04x", lpn->frnd); + if (cfg->hb_pub.feat & BT_MESH_FEAT_LOW_POWER) { + bt_mesh_heartbeat_send(); + } + if (lpn_cb) { lpn_cb(lpn->frnd, true); } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh.c index 80b638b1f..52fbdbf66 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh.c @@ -6,15 +6,14 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_LOG + #include #include #include "os/os_mbuf.h" #include "mesh/mesh.h" - -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG)) -#include "host/ble_hs_log.h" #include "host/ble_uuid.h" #include "adv.h" @@ -50,7 +49,7 @@ int bt_mesh_provision(const u8_t net_key[16], u16_t net_idx, } if ((MYNEWT_VAL(BLE_MESH_PB_GATT))) { - if (bt_mesh_proxy_prov_disable() == 0) { + if (bt_mesh_proxy_prov_disable(false) == 0) { pb_gatt_enabled = true; } else { pb_gatt_enabled = false; @@ -88,6 +87,26 @@ int bt_mesh_provision(const u8_t net_key[16], u16_t net_idx, return 0; } +int bt_mesh_provision_adv(const u8_t uuid[16], u16_t net_idx, u16_t addr, + u8_t attention_duration) +{ + if (!atomic_test_bit(bt_mesh.flags, BT_MESH_VALID)) { + return -EINVAL; + } + + if (bt_mesh_subnet_get(net_idx) == NULL) { + return -EINVAL; + } + + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER) && + IS_ENABLED(CONFIG_BT_MESH_PB_ADV)) { + return bt_mesh_pb_adv_open(uuid, net_idx, addr, + attention_duration); + } + + return -ENOTSUP; +} + void bt_mesh_reset(void) { if (!atomic_test_bit(bt_mesh.flags, BT_MESH_VALID)) { @@ -149,14 +168,12 @@ int bt_mesh_prov_enable(bt_mesh_prov_bearer_t bearers) return -EALREADY; } - if (MYNEWT_VAL(BLE_MESH_DEBUG)) { - char uuid_buf[BLE_UUID_STR_LEN]; - const struct bt_mesh_prov *prov = bt_mesh_prov_get(); - ble_uuid_t *uuid = BLE_UUID128_DECLARE(); + char uuid_buf[BLE_UUID_STR_LEN]; + const struct bt_mesh_prov *prov = bt_mesh_prov_get(); + ble_uuid_t *uuid = BLE_UUID128_DECLARE(); - memcpy(BLE_UUID128(uuid)->value, prov->uuid, 16); - BT_INFO("Device UUID: %s", ble_uuid_to_str(uuid, uuid_buf)); - } + memcpy(BLE_UUID128(uuid)->value, prov->uuid, 16); + BT_INFO("Device UUID: %s", ble_uuid_to_str(uuid, uuid_buf)); if (IS_ENABLED(CONFIG_BT_MESH_PB_ADV) && (bearers & BT_MESH_PROV_ADV)) { @@ -189,8 +206,7 @@ int bt_mesh_prov_disable(bt_mesh_prov_bearer_t bearers) if (IS_ENABLED(CONFIG_BT_MESH_PB_GATT) && (bearers & BT_MESH_PROV_GATT)) { - bt_mesh_proxy_prov_disable(); - bt_mesh_adv_update(); + bt_mesh_proxy_prov_disable(true); } return 0; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh_priv.h index 0a26c903b..f09bb2309 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/mesh_priv.h @@ -32,6 +32,7 @@ struct bt_mesh_net; #define OP_LIGHT_LIGHTNESS_GET BT_MESH_MODEL_OP_2(0x82, 0x4b) #define OP_LIGHT_LIGHTNESS_SET BT_MESH_MODEL_OP_2(0x82, 0x4c) #define OP_LIGHT_LIGHTNESS_SET_UNACK BT_MESH_MODEL_OP_2(0x82, 0x4d) +#define OP_LIGHT_LIGHTNESS_STATUS BT_MESH_MODEL_OP_2(0x82, 0x4e) bool bt_mesh_is_provisioned(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_cli.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_cli.c index c9e9cf622..b00cfa520 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_cli.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_cli.c @@ -4,16 +4,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -#include +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_MODEL_LOG -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_MODEL)) +#include "mesh/mesh.h" #include "mesh/model_cli.h" #include "mesh_priv.h" static s32_t msg_timeout = K_SECONDS(5); -struct bt_mesh_gen_model_cli gen_onoff_cli; -struct bt_mesh_gen_model_cli gen_level_cli; +static struct bt_mesh_gen_model_cli *gen_onoff_cli; +static struct bt_mesh_gen_model_cli *gen_level_cli; static u8_t transaction_id = 0; @@ -90,11 +91,53 @@ const struct bt_mesh_model_op gen_onoff_cli_op[] = { BT_MESH_MODEL_OP_END, }; +static int onoff_cli_init(struct bt_mesh_model *model) +{ + BT_DBG(""); + + if (!model->user_data) { + BT_ERR("No Generic OnOff Client context provided"); + return -EINVAL; + } + + gen_onoff_cli = model->user_data; + gen_onoff_cli->model = model; + + k_sem_init(&gen_onoff_cli->op_sync, 0, 1); + + return 0; +} + +const struct bt_mesh_model_cb bt_mesh_gen_onoff_cli_cb = { + .init = onoff_cli_init, +}; + const struct bt_mesh_model_op gen_level_cli_op[] = { { OP_GEN_LEVEL_STATUS, 2, gen_level_status }, BT_MESH_MODEL_OP_END, }; +static int level_cli_init(struct bt_mesh_model *model) +{ + BT_DBG(""); + + if (!model->user_data) { + BT_ERR("No Generic Level Client context provided"); + return -EINVAL; + } + + gen_level_cli = model->user_data; + gen_level_cli->model = model; + + k_sem_init(&gen_level_cli->op_sync, 0, 1); + + return 0; +} + +const struct bt_mesh_model_cb bt_mesh_gen_level_cli_cb = { + .init = level_cli_init, +}; + static int cli_wait(struct bt_mesh_gen_model_cli *cli, void *param, u32_t op) { int err; @@ -129,13 +172,13 @@ int bt_mesh_gen_onoff_get(u16_t net_idx, u16_t addr, u16_t app_idx, bt_mesh_model_msg_init(msg, OP_GEN_ONOFF_GET); - err = bt_mesh_model_send(gen_onoff_cli.model, &ctx, msg, NULL, NULL); + err = bt_mesh_model_send(gen_onoff_cli->model, &ctx, msg, NULL, NULL); if (err) { BT_ERR("model_send() failed (err %d)", err); goto done; } - err = cli_wait(&gen_onoff_cli, ¶m, OP_GEN_ONOFF_STATUS); + err = cli_wait(gen_onoff_cli, ¶m, OP_GEN_ONOFF_STATUS); done: os_mbuf_free_chain(msg); return err; @@ -165,7 +208,7 @@ int bt_mesh_gen_onoff_set(u16_t net_idx, u16_t addr, u16_t app_idx, net_buf_simple_add_u8(msg, val); net_buf_simple_add_u8(msg, transaction_id); - err = bt_mesh_model_send(gen_onoff_cli.model, &ctx, msg, NULL, NULL); + err = bt_mesh_model_send(gen_onoff_cli->model, &ctx, msg, NULL, NULL); if (err) { BT_ERR("model_send() failed (err %d)", err); goto done; @@ -175,7 +218,7 @@ int bt_mesh_gen_onoff_set(u16_t net_idx, u16_t addr, u16_t app_idx, goto done; } - err = cli_wait(&gen_onoff_cli, ¶m, OP_GEN_ONOFF_STATUS); + err = cli_wait(gen_onoff_cli, ¶m, OP_GEN_ONOFF_STATUS); done: if (err == 0) { transaction_id++; @@ -201,13 +244,13 @@ int bt_mesh_gen_level_get(u16_t net_idx, u16_t addr, u16_t app_idx, bt_mesh_model_msg_init(msg, OP_GEN_LEVEL_GET); - err = bt_mesh_model_send(gen_level_cli.model, &ctx, msg, NULL, NULL); + err = bt_mesh_model_send(gen_level_cli->model, &ctx, msg, NULL, NULL); if (err) { BT_ERR("model_send() failed (err %d)", err); goto done; } - err = cli_wait(&gen_level_cli, ¶m, OP_GEN_LEVEL_STATUS); + err = cli_wait(gen_level_cli, ¶m, OP_GEN_LEVEL_STATUS); done: os_mbuf_free_chain(msg); return err; @@ -237,7 +280,7 @@ int bt_mesh_gen_level_set(u16_t net_idx, u16_t addr, u16_t app_idx, net_buf_simple_add_le16(msg, val); net_buf_simple_add_u8(msg, transaction_id); - err = bt_mesh_model_send(gen_level_cli.model, &ctx, msg, NULL, NULL); + err = bt_mesh_model_send(gen_level_cli->model, &ctx, msg, NULL, NULL); if (err) { BT_ERR("model_send() failed (err %d)", err); goto done; @@ -247,7 +290,7 @@ int bt_mesh_gen_level_set(u16_t net_idx, u16_t addr, u16_t app_idx, goto done; } - err = cli_wait(&gen_level_cli, ¶m, OP_GEN_LEVEL_STATUS); + err = cli_wait(gen_level_cli, ¶m, OP_GEN_LEVEL_STATUS); done: if (err == 0) { transaction_id++; @@ -256,21 +299,3 @@ done: return err; } -int bt_mesh_gen_model_cli_init(struct bt_mesh_model *model, bool primary) -{ - struct bt_mesh_gen_model_cli *cli = model->user_data; - - BT_DBG("primary %u", primary); - - if (!cli) { - BT_ERR("No Generic Model Client context provided"); - return -EINVAL; - } - - cli->model = model; - - k_sem_init(&cli->op_sync, 0, 1); - - return 0; -} - diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_srv.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_srv.c index 1420b1ccc..5f5a8df42 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_srv.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/model_srv.c @@ -4,17 +4,21 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_MODEL_LOG + #include "mesh/mesh.h" - -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_MODEL)) - #include "mesh/model_srv.h" #include "mesh_priv.h" +static struct bt_mesh_gen_onoff_srv *gen_onoff_srv; +static struct bt_mesh_gen_level_srv *gen_level_srv; +static struct bt_mesh_light_lightness_srv *light_lightness_srv; + static void gen_onoff_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - struct bt_mesh_gen_onoff_srv_cb *cb = model->user_data; + struct bt_mesh_gen_onoff_srv *cb = model->user_data; struct os_mbuf *msg = NET_BUF_SIMPLE(3); u8_t *state; @@ -46,7 +50,7 @@ static void gen_onoff_set_unack(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct bt_mesh_gen_onoff_srv_cb *cb = model->user_data; + struct bt_mesh_gen_onoff_srv *cb = model->user_data; u8_t state; state = buf->om_data[0]; @@ -71,7 +75,7 @@ static void gen_onoff_set(struct bt_mesh_model *model, static void gen_level_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - struct bt_mesh_gen_level_srv_cb *cb = model->user_data; + struct bt_mesh_gen_level_srv *cb = model->user_data; struct os_mbuf *msg = NET_BUF_SIMPLE(4); s16_t *level; @@ -102,7 +106,7 @@ static void gen_level_get(struct bt_mesh_model *model, static void gen_level_set_unack(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct bt_mesh_gen_level_srv_cb *cb = model->user_data; + struct bt_mesh_gen_level_srv *cb = model->user_data; s16_t level; level = (s16_t) net_buf_simple_pull_le16(buf); @@ -124,11 +128,11 @@ static void gen_level_set(struct bt_mesh_model *model, static void light_lightness_status(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx) { - struct bt_mesh_light_lightness_srv_cb *cb = model->user_data; + struct bt_mesh_light_lightness_srv *cb = model->user_data; struct os_mbuf *msg = NET_BUF_SIMPLE(4); s16_t *lightness; - bt_mesh_model_msg_init(msg, OP_GEN_LEVEL_STATUS); + bt_mesh_model_msg_init(msg, OP_LIGHT_LIGHTNESS_STATUS); lightness = net_buf_simple_add(msg, 2); if (cb && cb->get) { cb->get(model, lightness); @@ -155,7 +159,7 @@ static void light_lightness_get(struct bt_mesh_model *model, static void light_lightness_set_unack(struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct os_mbuf *buf) { - struct bt_mesh_light_lightness_srv_cb *cb = model->user_data; + struct bt_mesh_light_lightness_srv *cb = model->user_data; s16_t lightness; lightness = (s16_t) net_buf_simple_pull_le16(buf); @@ -194,3 +198,69 @@ const struct bt_mesh_model_op light_lightness_srv_op[] = { { OP_LIGHT_LIGHTNESS_SET_UNACK, 3, light_lightness_set_unack }, BT_MESH_MODEL_OP_END, }; + +static int onoff_srv_init(struct bt_mesh_model *model) +{ + struct bt_mesh_gen_onoff_srv *cfg = model->user_data; + + BT_DBG(""); + + if (!cfg) { + BT_ERR("No Generic OnOff Server context provided"); + return -EINVAL; + } + + cfg->model = model; + + gen_onoff_srv = cfg; + + return 0; +} + +const struct bt_mesh_model_cb gen_onoff_srv_cb = { + .init = onoff_srv_init, +}; + +static int level_srv_init(struct bt_mesh_model *model) +{ + struct bt_mesh_gen_level_srv *cfg = model->user_data; + + BT_DBG(""); + + if (!cfg) { + BT_ERR("No Generic Level Server context provided"); + return -EINVAL; + } + + cfg->model = model; + + gen_level_srv = cfg; + + return 0; +} + +const struct bt_mesh_model_cb gen_level_srv_cb = { + .init = level_srv_init, +}; + +static int lightness_srv_init(struct bt_mesh_model *model) +{ + struct bt_mesh_light_lightness_srv *cfg = model->user_data; + + BT_DBG(""); + + if (!cfg) { + BT_ERR("No Light Lightness Server context provided"); + return -EINVAL; + } + + cfg->model = model; + + light_lightness_srv = cfg; + + return 0; +} + +const struct bt_mesh_model_cb light_lightness_srv_cb = { + .init = lightness_srv_init, +}; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.c index 455893354..cf11c2d4f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.c @@ -6,6 +6,9 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_NET_LOG + #include #include #include @@ -13,10 +16,6 @@ #include "os/os_mbuf.h" #include "mesh/mesh.h" -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED MYNEWT_VAL(BLE_MESH_DEBUG_NET) -#include "host/ble_hs_log.h" - #include "crypto.h" #include "adv.h" #include "mesh_priv.h" @@ -60,9 +59,7 @@ #define FRIEND_CRED_COUNT 0 #endif -#if FRIEND_CRED_COUNT > 0 static struct friend_cred friend_cred[FRIEND_CRED_COUNT]; -#endif static u64_t msg_cache[MYNEWT_VAL(BLE_MESH_MSG_CACHE_SIZE)]; static u16_t msg_cache_next; @@ -80,6 +77,13 @@ struct bt_mesh_net bt_mesh = { .net_idx = BT_MESH_KEY_UNUSED, } }, +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) + .nodes = { + [0 ... (CONFIG_BT_MESH_NODE_COUNT - 1)] = { + .net_idx = BT_MESH_KEY_UNUSED, + } + }, +#endif }; static u32_t dup_cache[4]; @@ -131,7 +135,8 @@ static bool msg_cache_match(struct bt_mesh_net_rx *rx, } /* Add to the cache */ - msg_cache[msg_cache_next++] = hash; + rx->msg_cache_idx = msg_cache_next++; + msg_cache[rx->msg_cache_idx] = hash; msg_cache_next %= ARRAY_SIZE(msg_cache); return false; @@ -203,8 +208,6 @@ int bt_mesh_net_keys_create(struct bt_mesh_subnet_keys *keys, return 0; } -#if ((MYNEWT_VAL(BLE_MESH_LOW_POWER)) || \ - (MYNEWT_VAL(BLE_MESH_FRIEND))) int friend_cred_set(struct friend_cred *cred, u8_t idx, const u8_t net_key[16]) { u16_t lpn_addr, frnd_addr; @@ -251,7 +254,8 @@ int friend_cred_set(struct friend_cred *cred, u8_t idx, const u8_t net_key[16]) void friend_cred_refresh(u16_t net_idx) { int i; - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" for (i = 0; i < ARRAY_SIZE(friend_cred); i++) { struct friend_cred *cred = &friend_cred[i]; @@ -261,6 +265,7 @@ void friend_cred_refresh(u16_t net_idx) sizeof(cred->cred[0])); } } +#pragma GCC diagnostic pop } int friend_cred_update(struct bt_mesh_subnet *sub) @@ -268,7 +273,8 @@ int friend_cred_update(struct bt_mesh_subnet *sub) int err, i; BT_DBG("net_idx 0x%04x", sub->net_idx); - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" for (i = 0; i < ARRAY_SIZE(friend_cred); i++) { struct friend_cred *cred = &friend_cred[i]; @@ -282,7 +288,7 @@ int friend_cred_update(struct bt_mesh_subnet *sub) return err; } } - +#pragma GCC diagnostic pop return 0; } @@ -293,7 +299,8 @@ struct friend_cred *friend_cred_create(struct bt_mesh_subnet *sub, u16_t addr, int i, err; BT_DBG("net_idx 0x%04x addr 0x%04x", sub->net_idx, addr); - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" for (cred = NULL, i = 0; i < ARRAY_SIZE(friend_cred); i++) { if ((friend_cred[i].addr == BT_MESH_ADDR_UNASSIGNED) || (friend_cred[i].addr == addr && @@ -302,7 +309,7 @@ struct friend_cred *friend_cred_create(struct bt_mesh_subnet *sub, u16_t addr, break; } } - +#pragma GCC diagnostic pop if (!cred) { BT_WARN("No free friend credential slots"); return NULL; @@ -342,7 +349,8 @@ void friend_cred_clear(struct friend_cred *cred) int friend_cred_del(u16_t net_idx, u16_t addr) { int i; - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" for (i = 0; i < ARRAY_SIZE(friend_cred); i++) { struct friend_cred *cred = &friend_cred[i]; @@ -351,7 +359,7 @@ int friend_cred_del(u16_t net_idx, u16_t addr) return 0; } } - +#pragma GCC diagnostic pop return -ENOENT; } @@ -361,7 +369,8 @@ int friend_cred_get(struct bt_mesh_subnet *sub, u16_t addr, u8_t *nid, int i; BT_DBG("net_idx 0x%04x addr 0x%04x", sub->net_idx, addr); - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" for (i = 0; i < ARRAY_SIZE(friend_cred); i++) { struct friend_cred *cred = &friend_cred[i]; @@ -387,16 +396,9 @@ int friend_cred_get(struct bt_mesh_subnet *sub, u16_t addr, u8_t *nid, return 0; } - +#pragma GCC diagnostic pop return -ENOENT; } -#else -int friend_cred_get(struct bt_mesh_subnet *sub, u16_t addr, u8_t *nid, - const u8_t **enc, const u8_t **priv) -{ - return -ENOENT; -} -#endif /* FRIEND || LOW_POWER */ u8_t bt_mesh_net_flags(struct bt_mesh_subnet *sub) { @@ -719,6 +721,14 @@ u32_t bt_mesh_next_seq(void) bt_mesh_store_seq(); } + if (!atomic_test_bit(bt_mesh.flags, BT_MESH_IVU_IN_PROGRESS) && + bt_mesh.seq > IV_UPDATE_SEQ_LIMIT && + bt_mesh_subnet_get(BT_MESH_KEY_PRIMARY)) { + bt_mesh_beacon_ivu_initiator(true); + bt_mesh_net_iv_update(bt_mesh.iv_index + 1, true); + bt_mesh_net_sec_update(NULL); + } + return seq; } @@ -728,6 +738,7 @@ int bt_mesh_net_resend(struct bt_mesh_subnet *sub, struct os_mbuf *buf, { const u8_t *enc, *priv; u32_t seq; + u16_t dst; int err; BT_DBG("net_idx 0x%04x new_key %u len %u", sub->net_idx, new_key, @@ -753,6 +764,9 @@ int bt_mesh_net_resend(struct bt_mesh_subnet *sub, struct os_mbuf *buf, buf->om_data[3] = seq >> 8; buf->om_data[4] = seq; + /* Get destination, in case it's a proxy client */ + dst = DST(buf->om_data); + err = bt_mesh_net_encrypt(enc, buf, BT_MESH_NET_IVI_TX, false); if (err) { BT_ERR("encrypt failed (err %d)", err); @@ -765,13 +779,11 @@ int bt_mesh_net_resend(struct bt_mesh_subnet *sub, struct os_mbuf *buf, return err; } - bt_mesh_adv_send(buf, cb, cb_data); - - if (!atomic_test_bit(bt_mesh.flags, BT_MESH_IVU_IN_PROGRESS) && - bt_mesh.seq > IV_UPDATE_SEQ_LIMIT) { - bt_mesh_beacon_ivu_initiator(true); - bt_mesh_net_iv_update(bt_mesh.iv_index + 1, true); - bt_mesh_net_sec_update(NULL); + if (IS_ENABLED(CONFIG_BT_MESH_GATT_PROXY) && + bt_mesh_proxy_relay(buf, dst)) { + send_cb_finalize(cb, cb_data); + } else { + bt_mesh_adv_send(buf, cb, cb_data); } return 0; @@ -886,15 +898,7 @@ int bt_mesh_net_send(struct bt_mesh_net_tx *tx, struct os_mbuf *buf, /* Notify completion if this only went * through the Mesh Proxy. */ - if (cb) { - if (cb->start) { - cb->start(0, 0, cb_data); - } - - if (cb->end) { - cb->end(0, cb_data); - } - } + send_cb_finalize(cb, cb_data); err = 0; goto done; @@ -1019,8 +1023,6 @@ static int net_decrypt(struct bt_mesh_subnet *sub, const u8_t *enc, return bt_mesh_net_decrypt(enc, buf, BT_MESH_NET_IVI_RX(rx), false); } -#if (MYNEWT_VAL(BLE_MESH_LOW_POWER) || \ - MYNEWT_VAL(BLE_MESH_FRIEND)) static int friend_decrypt(struct bt_mesh_subnet *sub, const u8_t *data, size_t data_len, struct bt_mesh_net_rx *rx, struct os_mbuf *buf) @@ -1028,7 +1030,8 @@ static int friend_decrypt(struct bt_mesh_subnet *sub, const u8_t *data, int i; BT_DBG("NID 0x%02x net_idx 0x%04x", NID(data), sub->net_idx); - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wtype-limits" for (i = 0; i < ARRAY_SIZE(friend_cred); i++) { struct friend_cred *cred = &friend_cred[i]; @@ -1053,10 +1056,9 @@ static int friend_decrypt(struct bt_mesh_subnet *sub, const u8_t *data, return 0; } } - +#pragma GCC diagnostic pop return -ENOENT; } -#endif static bool net_find_and_decrypt(const u8_t *data, size_t data_len, struct bt_mesh_net_rx *rx, @@ -1073,15 +1075,14 @@ static bool net_find_and_decrypt(const u8_t *data, size_t data_len, continue; } -#if (MYNEWT_VAL(BLE_MESH_LOW_POWER) || \ - MYNEWT_VAL(BLE_MESH_FRIEND)) - if (!friend_decrypt(sub, data, data_len, rx, buf)) { - rx->friend_cred = 1; + if ((IS_ENABLED(CONFIG_BT_MESH_LOW_POWER) || + IS_ENABLED(CONFIG_BT_MESH_FRIEND)) && + !friend_decrypt(sub, data, data_len, rx, buf)) { + rx->friend_cred = 1U; rx->ctx.net_idx = sub->net_idx; rx->sub = sub; return true; } -#endif if (NID(data) == sub->keys[0].nid && !net_decrypt(sub, sub->keys[0].enc, sub->keys[0].privacy, @@ -1233,6 +1234,17 @@ done: net_buf_unref(buf); } +void bt_mesh_net_header_parse(struct os_mbuf *buf, + struct bt_mesh_net_rx *rx) +{ + rx->old_iv = (IVI(buf->om_data) != (bt_mesh.iv_index & 0x01)); + rx->ctl = CTL(buf->om_data); + rx->ctx.recv_ttl = TTL(buf->om_data); + rx->seq = SEQ(buf->om_data); + rx->ctx.addr = SRC(buf->om_data); + rx->ctx.recv_dst = DST(buf->om_data); +} + int bt_mesh_net_decode(struct os_mbuf *data, enum bt_mesh_net_if net_if, struct bt_mesh_net_rx *rx, struct os_mbuf *buf) { @@ -1303,7 +1315,7 @@ void bt_mesh_net_recv(struct os_mbuf *data, s8_t rssi, enum bt_mesh_net_if net_if) { struct os_mbuf *buf = NET_BUF_SIMPLE(29); - struct bt_mesh_net_rx rx = { .rssi = rssi }; + struct bt_mesh_net_rx rx = { .ctx.recv_rssi = rssi }; struct net_buf_simple_state state; BT_DBG("rssi %d net_if %u", rssi, net_if); @@ -1320,15 +1332,33 @@ void bt_mesh_net_recv(struct os_mbuf *data, s8_t rssi, /* Save the state so the buffer can later be relayed */ net_buf_simple_save(buf, &state); - if ((MYNEWT_VAL(BLE_MESH_GATT_PROXY)) && - net_if == BT_MESH_NET_IF_PROXY) { - bt_mesh_proxy_addr_add(data, rx.ctx.addr); - } - rx.local_match = (bt_mesh_fixed_group_match(rx.ctx.recv_dst) || bt_mesh_elem_find(rx.ctx.recv_dst)); - bt_mesh_trans_recv(buf, &rx); + if ((MYNEWT_VAL(BLE_MESH_GATT_PROXY)) && + net_if == BT_MESH_NET_IF_PROXY) { + bt_mesh_proxy_addr_add(data, rx.ctx.addr); + + if (bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_DISABLED && + !rx.local_match) { + BT_INFO("Proxy is disabled; ignoring message"); + goto done; + } + } + + /* The transport layer has indicated that it has rejected the message, + * but would like to see it again if it is received in the future. + * This can happen if a message is received when the device is in + * Low Power mode, but the message was not encrypted with the friend + * credentials. Remove it from the message cache so that we accept + * it again in the future. + */ + if (bt_mesh_trans_recv(buf, &rx) == -EAGAIN) { + BT_WARN("Removing rejected message from Network Message Cache"); + msg_cache[rx.msg_cache_idx] = 0ULL; + /* Rewind the next index now that we're not using this entry */ + msg_cache_next = rx.msg_cache_idx; + } /* Relay if this was a group/virtual address, or if the destination * was neither a local element nor an LPN we're Friends for. diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.h index e55102c06..976da0053 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/net.h @@ -41,6 +41,13 @@ struct bt_mesh_app_key { } keys[2]; }; +struct bt_mesh_node { + u16_t addr; + u16_t net_idx; + u8_t dev_key[16]; + u8_t num_elem; +}; + struct bt_mesh_subnet { u32_t beacon_sent; /* Timestamp of last sent beacon */ u8_t beacons_last; /* Number of beacons during last @@ -78,7 +85,7 @@ struct bt_mesh_subnet { struct bt_mesh_rpl { u16_t src; bool old_iv; -#if defined(CONFIG_BT_SETTINGS) +#if (MYNEWT_VAL(BLE_MESH_SETTINGS)) bool store; #endif u32_t seq; @@ -115,6 +122,12 @@ struct bt_mesh_friend { struct bt_mesh_friend_seg { struct net_buf_slist_t queue; + + /* The target number of segments, i.e. not necessarily + * the current number of segments, in the queue. This is + * used for Friend Queue free space calculations. + */ + u8_t seg_count; } seg[FRIEND_SEG_RX]; struct os_mbuf *last; @@ -208,7 +221,7 @@ enum { BT_MESH_IVU_TEST, /* IV Update test mode */ BT_MESH_IVU_PENDING, /* Update blocked by SDU in progress */ - /* pending storage actions */ + /* pending storage actions, must reside within first 32 flags */ BT_MESH_RPL_PENDING, BT_MESH_KEYS_PENDING, BT_MESH_NET_PENDING, @@ -217,6 +230,8 @@ enum { BT_MESH_HB_PUB_PENDING, BT_MESH_CFG_PENDING, BT_MESH_MOD_PENDING, + BT_MESH_VA_PENDING, + BT_MESH_NODES_PENDING, /* Don't touch - intentionally last */ BT_MESH_FLAG_COUNT, @@ -249,6 +264,10 @@ struct bt_mesh_net { u8_t dev_key[16]; +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) + struct bt_mesh_node nodes[MYNEWT_VAL(BLE_MESH_NODE_COUNT)]; +#endif + struct bt_mesh_app_key app_keys[MYNEWT_VAL(BLE_MESH_APP_KEY_COUNT)]; struct bt_mesh_subnet sub[MYNEWT_VAL(BLE_MESH_SUBNET_COUNT)]; @@ -276,7 +295,7 @@ struct bt_mesh_net_rx { net_if:2, /* Network interface */ local_match:1, /* Matched a local element */ friend_match:1; /* Matched an LPN we're friends for */ - s8_t rssi; + u16_t msg_cache_idx; /* Index of entry in message cache */ }; /* Encoding context for Network/Transport data */ @@ -346,6 +365,8 @@ u32_t bt_mesh_next_seq(void); void bt_mesh_net_start(void); void bt_mesh_net_init(void); +void bt_mesh_net_header_parse(struct os_mbuf *buf, + struct bt_mesh_net_rx *rx); /* Friendship Credential Management */ struct friend_cred { @@ -372,4 +393,20 @@ struct friend_cred *friend_cred_create(struct bt_mesh_subnet *sub, u16_t addr, void friend_cred_clear(struct friend_cred *cred); int friend_cred_del(u16_t net_idx, u16_t addr); +static inline void send_cb_finalize(const struct bt_mesh_send_cb *cb, + void *cb_data) +{ + if (!cb) { + return; + } + + if (cb->start) { + cb->start(0, 0, cb_data); + } + + if (cb->end) { + cb->end(0, cb_data); + } +} + #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.c new file mode 100644 index 000000000..127ef21e4 --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.c @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2019 Tobias Svehagen + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_PROV_LOG + +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) + +#include "mesh/mesh.h" + +#include "mesh_priv.h" +#include "net.h" +#include "access.h" +#include "settings.h" + +/* + * Check if an address range from addr_start for addr_start + num_elem - 1 is + * free for use. When a conflict is found, next will be set to the next address + * available after the conflicting range and -EAGAIN will be returned. + */ +static int addr_is_free(u16_t addr_start, u8_t num_elem, u16_t *next) +{ + const struct bt_mesh_comp *comp = bt_mesh_comp_get(); + u16_t addr_end = addr_start + num_elem - 1; + u16_t other_start, other_end; + int i; + + if (comp == NULL) { + return -EINVAL; + } + + if (!BT_MESH_ADDR_IS_UNICAST(addr_start) || + !BT_MESH_ADDR_IS_UNICAST(addr_end) || + num_elem == 0 || next == NULL) { + return -EINVAL; + } + + other_start = bt_mesh_primary_addr(); + other_end = other_start + comp->elem_count - 1; + + /* Compare with local element addresses */ + if (!(addr_end < other_start || addr_start > other_end)) { + *next = other_end + 1; + return -EAGAIN; + } + + for (i = 0; i < ARRAY_SIZE(bt_mesh.nodes); i++) { + struct bt_mesh_node *node = &bt_mesh.nodes[i]; + + if (node->net_idx == BT_MESH_KEY_UNUSED) { + continue; + } + + other_start = node->addr; + other_end = other_start + node->num_elem - 1; + + if (!(addr_end < other_start || addr_start > other_end)) { + *next = other_end + 1; + return -EAGAIN; + } + } + + return 0; +} + +/* + * Find the lowest possible starting address that can fit num_elem elements. If + * a free address range cannot be found, BT_MESH_ADDR_UNASSIGNED will be + * returned. Otherwise the first address in the range is returned. + * + * NOTE: This is quite an ineffective algorithm as it might need to look + * through the array of nodes N+2 times. A more effective algorithm + * could be used if the nodes were stored in a sorted list. + */ +static u16_t find_lowest_free_addr(u8_t num_elem) +{ + u16_t addr = 1, next; + int err, i; + + /* + * It takes a maximum of node count + 2 to find a free address if there + * is any. +1 for our own address and +1 for making sure that the + * address range is valid. + */ + for (i = 0; i < ARRAY_SIZE(bt_mesh.nodes) + 2; ++i) { + err = addr_is_free(addr, num_elem, &next); + if (err == 0) { + break; + } else if (err != -EAGAIN) { + addr = BT_MESH_ADDR_UNASSIGNED; + break; + } + + addr = next; + } + + return addr; +} + +struct bt_mesh_node *bt_mesh_node_find(u16_t addr) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(bt_mesh.nodes); i++) { + struct bt_mesh_node *node = &bt_mesh.nodes[i]; + + if (addr >= node->addr && + addr <= node->addr + node->num_elem - 1) { + return node; + } + } + + return NULL; +} + +struct bt_mesh_node *bt_mesh_node_alloc(u16_t addr, u8_t num_elem, + u16_t net_idx) +{ + int i; + + BT_DBG(""); + + if (addr == BT_MESH_ADDR_UNASSIGNED) { + addr = find_lowest_free_addr(num_elem); + if (addr == BT_MESH_ADDR_UNASSIGNED) { + return NULL; + } + } else if (!addr_is_free(addr, num_elem, NULL)) { + return NULL; + } + + for (i = 0; i < ARRAY_SIZE(bt_mesh.nodes); i++) { + struct bt_mesh_node *node = &bt_mesh.nodes[i]; + + if (node->addr == BT_MESH_ADDR_UNASSIGNED) { + node->addr = addr; + node->num_elem = num_elem; + node->net_idx = net_idx; + return node; + } + } + + return NULL; +} + +void bt_mesh_node_del(struct bt_mesh_node *node, bool store) +{ + BT_DBG("Node addr 0x%04x store %u", node->addr, store); + + if (IS_ENABLED(CONFIG_BT_SETTINGS) && store) { + bt_mesh_clear_node(node); + } + + node->addr = BT_MESH_ADDR_UNASSIGNED; + (void)memset(node->dev_key, 0, sizeof(node->dev_key)); +} + +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.h new file mode 100644 index 000000000..f86193d9e --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/nodes.h @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2019 Tobias Svehagen + * + * SPDX-License-Identifier: Apache-2.0 + */ + +struct bt_mesh_node *bt_mesh_node_find(u16_t addr); +struct bt_mesh_node *bt_mesh_node_alloc(u16_t addr, u8_t num_elem, + u16_t net_idx); +void bt_mesh_node_del(struct bt_mesh_node *node, bool store); \ No newline at end of file diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.c index 5c519e75a..fe92c0e34 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.c @@ -5,14 +5,14 @@ * * SPDX-License-Identifier: Apache-2.0 */ + #include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_PROV_LOG + #if MYNEWT_VAL(BLE_MESH_PROV) #include -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_PROV)) -#include "host/ble_hs_log.h" - #include "mesh/mesh.h" #include "mesh_priv.h" @@ -25,6 +25,8 @@ #include "proxy.h" #include "prov.h" #include "testing.h" +#include "settings.h" +#include "nodes.h" /* 3 transmissions, 20ms interval */ #define PROV_XMIT BT_MESH_TRANSMIT(2, 20) @@ -69,6 +71,8 @@ #define PROV_COMPLETE 0x08 #define PROV_FAILED 0x09 +#define PROV_NO_PDU 0xff + #define PROV_ALG_P256 0x00 #define GPCF(gpc) (gpc & 0x03) @@ -98,22 +102,40 @@ #define XACT_NVAL 0xff enum { - REMOTE_PUB_KEY, /* Remote key has been received */ + WAIT_PUB_KEY, /* Waiting for local PubKey to be generated */ LINK_ACTIVE, /* Link has been opened */ - HAVE_DHKEY, /* DHKey has been calculated */ - SEND_CONFIRM, /* Waiting to send Confirm value */ + LINK_ACK_RECVD, /* Ack for link has been received */ + LINK_CLOSING, /* Link is closing down */ + SEND_PUB_KEY, /* Waiting to send PubKey */ WAIT_NUMBER, /* Waiting for number input from user */ WAIT_STRING, /* Waiting for string input from user */ + NOTIFY_INPUT_COMPLETE, /* Notify that input has been completed. */ LINK_INVALID, /* Error occurred during provisioning */ + PROVISIONER, /* The link was opened as provisioner */ NUM_FLAGS, }; +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) +#define PROVISIONER_LINK 1 +#else +#define PROVISIONER_LINK 0 +#endif + +struct provisioner_link { + struct bt_mesh_node *node; + u16_t addr; + u16_t net_idx; + u8_t attention_duration; +}; + struct prov_link { ATOMIC_DEFINE(flags, NUM_FLAGS); #if (MYNEWT_VAL(BLE_MESH_PB_GATT)) uint16_t conn_handle; /* GATT connection */ #endif + struct provisioner_link provisioner[PROVISIONER_LINK]; + u8_t dhkey[32]; /* Calculated DHKey */ u8_t expect; /* Next expected PDU */ @@ -168,6 +190,7 @@ struct prov_rx { #define RETRANSMIT_TIMEOUT K_MSEC(500) #define BUF_TIMEOUT K_MSEC(400) +#define CLOSING_TIMEOUT K_SECONDS(3) #define TRANSACTION_TIMEOUT K_SECONDS(30) #define PROTOCOL_TIMEOUT K_SECONDS(60) @@ -200,6 +223,11 @@ static int reset_state(void) bt_mesh_attention(NULL, 0); } + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER) && + link.provisioner->node != NULL) { + bt_mesh_node_del(link.provisioner->node, false); + } + #if (MYNEWT_VAL(BLE_MESH_PB_ADV)) /* Clear everything except the retransmit and protocol timer * delayed work objects. @@ -210,6 +238,9 @@ static int reset_state(void) #if (MYNEWT_VAL(BLE_MESH_PB_GATT)) link.rx.buf = bt_mesh_proxy_get_buf(); #else + if (!rx_buf) { + rx_buf = NET_BUF_SIMPLE(65); + } net_buf_simple_init(rx_buf, 0); link.rx.buf = rx_buf; #endif /* PB_GATT */ @@ -364,7 +395,7 @@ static void send_reliable(void) } } -static int bearer_ctl_send(u8_t op, void *data, u8_t data_len) +static int bearer_ctl_send(u8_t op, const void *data, u8_t data_len) { struct os_mbuf *buf; @@ -402,11 +433,20 @@ static u8_t last_seg(u8_t len) static inline u8_t next_transaction_id(void) { - if (link.tx.id != 0 && link.tx.id != 0xFF) { - return ++link.tx.id; + if (atomic_test_bit(link.flags, PROVISIONER)) { + if (link.tx.id != 0x7F) { + link.tx.id++; + } else { + link.tx.id = 0; + } + } else { + if (link.tx.id != 0U && link.tx.id != 0xFF) { + link.tx.id++; + } else { + link.tx.id = 0x80; + } } - link.tx.id = 0x80; return link.tx.id; } @@ -576,10 +616,63 @@ done: os_mbuf_free_chain(buf); } +#if MYNEWT_VAL(BLE_MESH_PB_ADV) +static void send_invite(void) +{ + struct os_mbuf *inv = PROV_BUF(2); + + BT_DBG(""); + + prov_buf_init(inv, PROV_INVITE); + net_buf_simple_add_u8(inv, link.provisioner->attention_duration); + + link.conf_inputs[0] = link.provisioner->attention_duration; + + if (prov_send(inv)) { + BT_ERR("Failed to send invite"); + goto done; + } + + link.expect = PROV_CAPABILITIES; + +done: + os_mbuf_free_chain(inv); +} +#endif + +static void send_start(void) +{ + struct os_mbuf *start = PROV_BUF(6); + + BT_DBG(""); + + prov_buf_init(start, PROV_START); + + net_buf_simple_add_u8(start, PROV_ALG_P256); + net_buf_simple_add_u8(start, PUB_KEY_NO_OOB); + net_buf_simple_add_u8(start, AUTH_METHOD_NO_OOB); + memset(link.auth, 0, sizeof(link.auth)); + + net_buf_simple_add_u8(start, 0); /* Auth Action */ + net_buf_simple_add_u8(start, 0); /* Auth Size */ + + memcpy(&link.conf_inputs[12], &start->om_data[1], 5); + + if (prov_send(start)) { + BT_ERR("Failed to send start"); + } + + os_mbuf_free_chain(start); +} + static void prov_capabilities(const u8_t *data) { u16_t algorithms, output_action, input_action; + if (!IS_ENABLED(CONFIG_BT_MESH_PROVISIONER)) { + return; + } + BT_DBG("Elements: %u", data[0]); algorithms = sys_get_be16(&data[1]); @@ -596,6 +689,26 @@ static void prov_capabilities(const u8_t *data) input_action = sys_get_be16(&data[9]); BT_DBG("Input OOB Action: 0x%04x", input_action); + + if (data[0] == 0) { + BT_ERR("Invalid number of elements"); + prov_send_fail_msg(PROV_ERR_NVAL_FMT); + return; + } + + link.provisioner->node = bt_mesh_node_alloc(link.provisioner->addr, + data[0], + link.provisioner->net_idx); + if (link.provisioner->node == NULL) { + prov_send_fail_msg(PROV_ERR_RESOURCES); + return; + } + + memcpy(&link.conf_inputs[1], data, 11); + + atomic_set_bit(link.flags, SEND_PUB_KEY); + + send_start(); } static bt_mesh_output_action_t output_action(u8_t action) @@ -669,6 +782,8 @@ static int prov_auth(u8_t method, u8_t action, u8_t size) return -EINVAL; } + atomic_set_bit(link.flags, NOTIFY_INPUT_COMPLETE); + if (output == BT_MESH_DISPLAY_STRING) { unsigned char str[9]; u8_t i; @@ -810,7 +925,11 @@ static void send_confirm(void) goto done; } - link.expect = PROV_RANDOM; + if (atomic_test_bit(link.flags, PROVISIONER)) { + link.expect = PROV_CONFIRM; + } else { + link.expect = PROV_RANDOM; + } done: os_mbuf_free_chain(cfm); @@ -824,6 +943,7 @@ static void send_input_complete(void) if (prov_send(buf)) { BT_ERR("Failed to send Provisioning Input Complete"); } + link.expect = PROV_CONFIRM; os_mbuf_free_chain(buf); } @@ -840,14 +960,6 @@ int bt_mesh_input_number(u32_t num) send_input_complete(); - if (!atomic_test_bit(link.flags, HAVE_DHKEY)) { - return 0; - } - - if (atomic_test_and_clear_bit(link.flags, SEND_CONFIRM)) { - send_confirm(); - } - return 0; } @@ -863,43 +975,9 @@ int bt_mesh_input_string(const char *str) send_input_complete(); - if (!atomic_test_bit(link.flags, HAVE_DHKEY)) { - return 0; - } - - if (atomic_test_and_clear_bit(link.flags, SEND_CONFIRM)) { - send_confirm(); - } - return 0; } -static void prov_dh_key_cb(const u8_t key[32]) -{ - BT_DBG("%p", key); - - if (!key) { - BT_ERR("DHKey generation failed"); - prov_send_fail_msg(PROV_ERR_UNEXP_ERR); - return; - } - - sys_memcpy_swap(link.dhkey, key, 32); - - BT_DBG("DHkey: %s", bt_hex(link.dhkey, 32)); - - atomic_set_bit(link.flags, HAVE_DHKEY); - - if (atomic_test_bit(link.flags, WAIT_NUMBER) || - atomic_test_bit(link.flags, WAIT_STRING)) { - return; - } - - if (atomic_test_and_clear_bit(link.flags, SEND_CONFIRM)) { - send_confirm(); - } -} - static void send_pub_key(void) { struct os_mbuf *buf = PROV_BUF(65); @@ -914,56 +992,112 @@ static void send_pub_key(void) BT_DBG("Local Public Key: %s", bt_hex(key, 64)); - /* Copy remote key in little-endian for bt_dh_key_gen(). - * X and Y halves are swapped independently. Use response - * buffer as a temporary storage location. The bt_dh_key_gen() - * will also take care of validating the remote public key. - */ - sys_memcpy_swap(buf->om_data, &link.conf_inputs[17], 32); - sys_memcpy_swap(&buf->om_data[32], &link.conf_inputs[49], 32); - - if (bt_dh_key_gen(buf->om_data, prov_dh_key_cb)) { - BT_ERR("Failed to generate DHKey"); - prov_send_fail_msg(PROV_ERR_UNEXP_ERR); - return; - } - prov_buf_init(buf, PROV_PUB_KEY); /* Swap X and Y halves independently to big-endian */ sys_memcpy_swap(net_buf_simple_add(buf, 32), key, 32); sys_memcpy_swap(net_buf_simple_add(buf, 32), &key[32], 32); - memcpy(&link.conf_inputs[81], &buf->om_data[1], 64); + if (atomic_test_bit(link.flags, PROVISIONER)) { + /* PublicKeyProvisioner */ + memcpy(&link.conf_inputs[17], &buf->om_data[1], 64); + } else { + /* PublicKeyRemote */ + memcpy(&link.conf_inputs[81], &buf->om_data[1], 64); + } if (prov_send(buf)) { BT_ERR("Failed to send Public Key"); - return; + goto done; } - link.expect = PROV_CONFIRM; + if (atomic_test_bit(link.flags, PROVISIONER)) { + link.expect = PROV_PUB_KEY; + } else { + if (atomic_test_bit(link.flags, WAIT_NUMBER) || + atomic_test_bit(link.flags, WAIT_STRING)) { + link.expect = PROV_NO_PDU; /* Wait for input */ + } else { + link.expect = PROV_CONFIRM; + } + } done: os_mbuf_free_chain(buf); } +static void prov_dh_key_cb(const u8_t dhkey[32]) +{ + BT_DBG("%p", dhkey); + + if (!dhkey) { + BT_ERR("DHKey generation failed"); + prov_send_fail_msg(PROV_ERR_UNEXP_ERR); + return; + } + + sys_memcpy_swap(link.dhkey, dhkey, 32); + + BT_DBG("DHkey: %s", bt_hex(link.dhkey, 32)); + + if (atomic_test_bit(link.flags, PROVISIONER)) { + send_confirm(); + } else { + send_pub_key(); + } +} + +static void prov_dh_key_gen(void) +{ + u8_t remote_pk_le[64], *remote_pk; + + if (atomic_test_bit(link.flags, PROVISIONER)) { + remote_pk = &link.conf_inputs[81]; + } else { + remote_pk = &link.conf_inputs[17]; + } + + /* Copy remote key in little-endian for bt_dh_key_gen(). + * X and Y halves are swapped independently. The bt_dh_key_gen() + * will also take care of validating the remote public key. + */ + sys_memcpy_swap(remote_pk_le, remote_pk, 32); + sys_memcpy_swap(&remote_pk_le[32], &remote_pk[32], 32); + + if (bt_dh_key_gen(remote_pk_le, prov_dh_key_cb)) { + BT_ERR("Failed to generate DHKey"); + prov_send_fail_msg(PROV_ERR_UNEXP_ERR); + } +} + static void prov_pub_key(const u8_t *data) { BT_DBG("Remote Public Key: %s", bt_hex(data, 64)); - memcpy(&link.conf_inputs[17], data, 64); + if (atomic_test_bit(link.flags, PROVISIONER)) { + /* PublicKeyDevice */ + memcpy(&link.conf_inputs[81], data, 64); - if (!bt_pub_key_get()) { - /* Clear retransmit timer */ #if (MYNEWT_VAL(BLE_MESH_PB_ADV)) prov_clear_tx(); #endif - atomic_set_bit(link.flags, REMOTE_PUB_KEY); - BT_WARN("Waiting for local public key"); - return; + } else { + /* PublicKeyProvisioner */ + memcpy(&link.conf_inputs[17], data, 64); + + if (!bt_pub_key_get()) { + /* Clear retransmit timer */ +#if (MYNEWT_VAL(BLE_MESH_PB_ADV)) + prov_clear_tx(); +#endif + + atomic_set_bit(link.flags, WAIT_PUB_KEY); + BT_WARN("Waiting for local public key"); + return; + } } - send_pub_key(); + prov_dh_key_gen(); } static void pub_key_ready(const u8_t *pkey) @@ -975,53 +1109,145 @@ static void pub_key_ready(const u8_t *pkey) BT_DBG("Local public key ready"); - if (atomic_test_and_clear_bit(link.flags, REMOTE_PUB_KEY)) { - send_pub_key(); + if (atomic_test_and_clear_bit(link.flags, WAIT_PUB_KEY)) { + if (atomic_test_bit(link.flags, PROVISIONER)) { + send_pub_key(); + } else { + prov_dh_key_gen(); + } + } +} + +static void notify_input_complete(void) +{ + if (atomic_test_and_clear_bit(link.flags, NOTIFY_INPUT_COMPLETE) && + prov->input_complete) { + prov->input_complete(); } } static void prov_input_complete(const u8_t *data) { BT_DBG(""); + notify_input_complete(); } -static void prov_confirm(const u8_t *data) +static void send_prov_data(void) { - BT_DBG("Remote Confirm: %s", bt_hex(data, 16)); + struct os_mbuf *pdu = PROV_BUF(34); + struct bt_mesh_subnet *sub; + u8_t session_key[16]; + u8_t nonce[13]; + int err; - memcpy(link.conf, data, 16); - - if (!atomic_test_bit(link.flags, HAVE_DHKEY)) { -#if (MYNEWT_VAL(BLE_MESH_PB_ADV)) - prov_clear_tx(); -#endif - atomic_set_bit(link.flags, SEND_CONFIRM); - } else { - send_confirm(); - } -} - -static void prov_random(const u8_t *data) -{ - struct os_mbuf *rnd = PROV_BUF(16); - u8_t conf_verify[16]; - - BT_DBG("Remote Random: %s", bt_hex(data, 16)); - - if (bt_mesh_prov_conf(link.conf_key, data, link.auth, conf_verify)) { - BT_ERR("Unable to calculate confirmation verification"); + err = bt_mesh_session_key(link.dhkey, link.prov_salt, session_key); + if (err) { + BT_ERR("Unable to generate session key"); prov_send_fail_msg(PROV_ERR_UNEXP_ERR); goto done; } - if (memcmp(conf_verify, link.conf, 16)) { - BT_ERR("Invalid confirmation value"); - BT_DBG("Received: %s", bt_hex(link.conf, 16)); - BT_DBG("Calculated: %s", bt_hex(conf_verify, 16)); - prov_send_fail_msg(PROV_ERR_CFM_FAILED); + BT_DBG("SessionKey: %s", bt_hex(session_key, 16)); + + err = bt_mesh_prov_nonce(link.dhkey, link.prov_salt, nonce); + if (err) { + BT_ERR("Unable to generate session nonce"); + prov_send_fail_msg(PROV_ERR_UNEXP_ERR); goto done; } + BT_DBG("Nonce: %s", bt_hex(nonce, 13)); + + err = bt_mesh_dev_key(link.dhkey, link.prov_salt, + link.provisioner->node->dev_key); + if (err) { + BT_ERR("Unable to generate device key"); + prov_send_fail_msg(PROV_ERR_UNEXP_ERR); + goto done; + } + + BT_DBG("DevKey: %s", bt_hex(link.provisioner->node->dev_key, 16)); + + sub = bt_mesh_subnet_get(link.provisioner->node->net_idx); + if (sub == NULL) { + BT_ERR("No subnet with net_idx %u", + link.provisioner->node->net_idx); + prov_send_fail_msg(PROV_ERR_UNEXP_ERR); + goto done; + } + + prov_buf_init(pdu, PROV_DATA); + net_buf_simple_add_mem(pdu, sub->keys[sub->kr_flag].net, 16); + net_buf_simple_add_be16(pdu, link.provisioner->node->net_idx); + net_buf_simple_add_u8(pdu, bt_mesh_net_flags(sub)); + net_buf_simple_add_be32(pdu, bt_mesh.iv_index); + net_buf_simple_add_be16(pdu, link.provisioner->node->addr); + net_buf_simple_add(pdu, 8); /* For MIC */ + + BT_DBG("net_idx %u, iv_index 0x%08x, addr 0x%04x", + link.provisioner->node->net_idx, bt_mesh.iv_index, + link.provisioner->node->addr); + + err = bt_mesh_prov_encrypt(session_key, nonce, &pdu->om_data[1], + &pdu->om_data[1]); + if (err) { + BT_ERR("Unable to encrypt provisioning data"); + prov_send_fail_msg(PROV_ERR_DECRYPT); + goto done; + } + + if (prov_send(pdu)) { + BT_ERR("Failed to send Provisioning Data"); + goto done; + } + + link.expect = PROV_COMPLETE; + +done: + os_mbuf_free_chain(pdu); +} + +static void prov_complete(const u8_t *data) +{ + if (!IS_ENABLED(CONFIG_BT_MESH_PROVISIONER)) { + return; + } + + struct bt_mesh_node *node = link.provisioner->node; +#if MYNEWT_VAL(BLE_MESH_PB_ADV) + u8_t reason = CLOSE_REASON_SUCCESS; +#endif + + BT_DBG("key %s, net_idx %u, num_elem %u, addr 0x%04x", + bt_hex(node->dev_key, 16), node->net_idx, node->num_elem, + node->addr); + + if (IS_ENABLED(CONFIG_BT_SETTINGS)) { + bt_mesh_store_node(node); + } + + link.provisioner->node = NULL; + link.expect = PROV_NO_PDU; + atomic_set_bit(link.flags, LINK_CLOSING); + +#if MYNEWT_VAL(BLE_MESH_PB_ADV) + bearer_ctl_send(LINK_CLOSE, &reason, sizeof(reason)); +#endif + + bt_mesh_prov_node_added(node->net_idx, node->addr, node->num_elem); + + /* + * According to mesh profile spec (5.3.1.4.3), the close message should + * be restransmitted at least three times. Retransmit the LINK_CLOSE + * message until CLOSING_TIMEOUT has elapsed instead of resetting the + * link here. + */ +} + +static void send_random(void) +{ + struct os_mbuf *rnd = PROV_BUF(17); + prov_buf_init(rnd, PROV_RANDOM); net_buf_simple_add_mem(rnd, link.rand, 16); @@ -1030,19 +1256,75 @@ static void prov_random(const u8_t *data) goto done; } - if (bt_mesh_prov_salt(link.conf_salt, data, link.rand, + if (atomic_test_bit(link.flags, PROVISIONER)) { + link.expect = PROV_RANDOM; + } else { + link.expect = PROV_DATA; + } + +done: + os_mbuf_free_chain(rnd); +} + +static void prov_random(const u8_t *data) +{ + u8_t conf_verify[16]; + const u8_t *prov_rand, *dev_rand; + + BT_DBG("Remote Random: %s", bt_hex(data, 16)); + + if (bt_mesh_prov_conf(link.conf_key, data, link.auth, conf_verify)) { + BT_ERR("Unable to calculate confirmation verification"); + prov_send_fail_msg(PROV_ERR_UNEXP_ERR); + return; + } + + if (memcmp(conf_verify, link.conf, 16)) { + BT_ERR("Invalid confirmation value"); + BT_DBG("Received: %s", bt_hex(link.conf, 16)); + BT_DBG("Calculated: %s", bt_hex(conf_verify, 16)); + prov_send_fail_msg(PROV_ERR_CFM_FAILED); + return; + } + + if (atomic_test_bit(link.flags, PROVISIONER)) { + prov_rand = link.rand; + dev_rand = data; + } else { + prov_rand = data; + dev_rand = link.rand; + } + + if (bt_mesh_prov_salt(link.conf_salt, prov_rand, dev_rand, link.prov_salt)) { BT_ERR("Failed to generate provisioning salt"); prov_send_fail_msg(PROV_ERR_UNEXP_ERR); - goto done; + return; } BT_DBG("ProvisioningSalt: %s", bt_hex(link.prov_salt, 16)); - link.expect = PROV_DATA; + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER) && + atomic_test_bit(link.flags, PROVISIONER)) { + send_prov_data(); + } else { + send_random(); + } +} -done: - os_mbuf_free_chain(rnd); +static void prov_confirm(const u8_t *data) +{ + BT_DBG("Remote Confirm: %s", bt_hex(data, 16)); + + memcpy(link.conf, data, 16); + + notify_input_complete(); + + if (atomic_test_bit(link.flags, PROVISIONER)) { + send_random(); + } else { + send_confirm(); + } } static inline bool is_pb_gatt(void) @@ -1119,7 +1401,7 @@ static void prov_data(const u8_t *data) } /* Ignore any further PDUs on this link */ - link.expect = 0; + link.expect = PROV_NO_PDU; /* Store info, since bt_mesh_provision() will end up clearing it */ if (IS_ENABLED(CONFIG_BT_MESH_GATT_PROXY)) { @@ -1145,11 +1427,6 @@ done: os_mbuf_free_chain(msg); } -static void prov_complete(const u8_t *data) -{ - BT_DBG(""); -} - static void prov_failed(const u8_t *data) { BT_WARN("Error: 0x%02x", data[0]); @@ -1174,7 +1451,7 @@ static const struct { #if (MYNEWT_VAL(BLE_MESH_PB_ADV)) static void prov_retransmit(struct ble_npl_event *work) { - int i; + int i, timeout; BT_DBG(""); @@ -1183,7 +1460,13 @@ static void prov_retransmit(struct ble_npl_event *work) return; } - if (k_uptime_get() - link.tx.start > TRANSACTION_TIMEOUT) { + if (atomic_test_bit(link.flags, LINK_CLOSING)) { + timeout = CLOSING_TIMEOUT; + } else { + timeout = TRANSACTION_TIMEOUT; + } + + if (k_uptime_get() - link.tx.start > timeout) { BT_WARN("Giving up transaction"); reset_adv_link(); return; @@ -1248,12 +1531,26 @@ static void link_open(struct prov_rx *rx, struct os_mbuf *buf) bearer_ctl_send(LINK_ACK, NULL, 0); link.expect = PROV_INVITE; - } static void link_ack(struct prov_rx *rx, struct os_mbuf *buf) { BT_DBG("Link ack: len %u", buf->om_len); + + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER) && + atomic_test_bit(link.flags, PROVISIONER)) { + if (atomic_test_and_set_bit(link.flags, LINK_ACK_RECVD)) { + return; + } + + prov_clear_tx(); + + if (prov->link_open) { + prov->link_open(BT_MESH_PROV_ADV); + } + + send_invite(); + } } static void link_close(struct prov_rx *rx, struct os_mbuf *buf) @@ -1398,7 +1695,21 @@ static void gen_prov_ack(struct prov_rx *rx, struct os_mbuf *buf) } if (rx->xact_id == link.tx.id) { - prov_clear_tx(); + /* Don't clear resending of LINK_CLOSE messages */ + if (!atomic_test_bit(link.flags, LINK_CLOSING)) { + prov_clear_tx(); + } + + /* Send the PubKey when the the Start message is ACK'ed */ + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER) && + atomic_test_and_clear_bit(link.flags, SEND_PUB_KEY)) { + if (!bt_pub_key_get()) { + atomic_set_bit(link.flags, WAIT_PUB_KEY); + BT_WARN("Waiting for local public key"); + } else { + send_pub_key(); + } + } } } @@ -1456,9 +1767,9 @@ static void gen_prov_start(struct prov_rx *rx, struct os_mbuf *buf) } static const struct { - void (*const func)(struct prov_rx *rx, struct os_mbuf *buf); - const u8_t require_link; - const u8_t min_len; + void (*func)(struct prov_rx *rx, struct os_mbuf *buf); + bool require_link; + u8_t min_len; } gen_prov[] = { { gen_prov_start, true, 3 }, { gen_prov_ack, true, 0 }, @@ -1510,6 +1821,31 @@ void bt_mesh_pb_adv_recv(struct os_mbuf *buf) gen_prov_recv(&rx, buf); } + +int bt_mesh_pb_adv_open(const u8_t uuid[16], u16_t net_idx, u16_t addr, + u8_t attention_duration) +{ + BT_DBG("uuid %s", bt_hex(uuid, 16)); + + if (atomic_test_and_set_bit(link.flags, LINK_ACTIVE)) { + return -EBUSY; + } + + atomic_set_bit(link.flags, PROVISIONER); + + bt_rand(&link.id, sizeof(link.id)); + link.tx.id = 0x7F; + link.provisioner->addr = addr; + link.provisioner->net_idx = net_idx; + link.provisioner->attention_duration = attention_duration; + + net_buf_simple_init(link.rx.buf, 0); + + bearer_ctl_send(LINK_OPEN, uuid, 16); + + return 0; +} + #endif /* MYNEWT_VAL(BLE_MESH_PB_ADV) */ #if (MYNEWT_VAL(BLE_MESH_PB_GATT)) @@ -1655,6 +1991,13 @@ void bt_mesh_prov_complete(u16_t net_idx, u16_t addr) } } +void bt_mesh_prov_node_added(u16_t net_idx, u16_t addr, u8_t num_elem) +{ + if (prov->node_added) { + prov->node_added(net_idx, addr, num_elem); + } +} + void bt_mesh_prov_reset(void) { if (prov->reset) { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.h index 3675b6cc7..96e5a447c 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/prov.h @@ -13,6 +13,9 @@ #include "mesh/mesh.h" #include "../src/ble_hs_conn_priv.h" +int bt_mesh_pb_adv_open(const u8_t uuid[16], u16_t net_idx, u16_t addr, + u8_t attention_duration); + void bt_mesh_pb_adv_recv(struct os_mbuf *buf); bool bt_prov_active(void); @@ -28,6 +31,7 @@ int bt_mesh_prov_init(const struct bt_mesh_prov *prov); void bt_mesh_prov_reset_link(void); void bt_mesh_prov_complete(u16_t net_idx, u16_t addr); +void bt_mesh_prov_node_added(u16_t net_idx, u16_t addr, u8_t num_elem); void bt_mesh_prov_reset(void); #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.c index 609da54d2..134a36dd6 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.c @@ -7,13 +7,11 @@ */ #include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_PROXY_LOG #if MYNEWT_VAL(BLE_MESH_PROXY) #include "mesh/mesh.h" - -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_PROXY)) -#include "host/ble_hs_log.h" #include "host/ble_att.h" #include "services/gatt/ble_svc_gatt.h" #include "../../host/src/ble_hs_priv.h" @@ -654,10 +652,7 @@ static void proxy_connected(uint16_t conn_handle) static void proxy_disconnected(uint16_t conn_handle, int reason) { int i; - - BT_INFO("conn_handle %d reason %d", conn_handle, reason); - - conn_count--; + bool disconnected = false; for (i = 0; i < ARRAY_SIZE(clients); i++) { struct bt_mesh_proxy_client *client = &clients[i]; @@ -670,11 +665,16 @@ static void proxy_disconnected(uint16_t conn_handle, int reason) k_delayed_work_cancel(&client->sar_timer); client->conn_handle = BLE_HS_CONN_HANDLE_NONE; + conn_count--; + disconnected = true; break; } } - bt_mesh_adv_update(); + if (disconnected) { + BT_INFO("conn_handle %d reason %d", conn_handle, reason); + bt_mesh_adv_update(); + } } struct os_mbuf *bt_mesh_proxy_get_buf(void) @@ -740,7 +740,7 @@ int bt_mesh_proxy_prov_enable(void) return 0; } -int bt_mesh_proxy_prov_disable(void) +int bt_mesh_proxy_prov_disable(bool disconnect) { uint16_t handle; int rc; @@ -767,13 +767,23 @@ int bt_mesh_proxy_prov_disable(void) for (i = 0; i < ARRAY_SIZE(clients); i++) { struct bt_mesh_proxy_client *client = &clients[i]; - if ((client->conn_handle != BLE_HS_CONN_HANDLE_NONE) - && (client->filter_type == PROV)) { + if ((client->conn_handle == BLE_HS_CONN_HANDLE_NONE) + || (client->filter_type != PROV)) { + continue; + } + + if (disconnect) { + rc = ble_gap_terminate(client->conn_handle, + BLE_ERR_REM_USER_CONN_TERM); + assert(rc == 0); + } else { bt_mesh_pb_gatt_close(client->conn_handle); client->filter_type = NONE; } } + bt_mesh_adv_update(); + return 0; } #endif /* MYNEWT_VAL(BLE_MESH_PB_GATT) */ @@ -907,16 +917,6 @@ static bool client_filter_match(struct bt_mesh_proxy_client *client, BT_DBG("filter_type %u addr 0x%04x", client->filter_type, addr); - if (client->filter_type == WHITELIST) { - for (i = 0; i < ARRAY_SIZE(client->filter); i++) { - if (client->filter[i] == addr) { - return true; - } - } - - return false; - } - if (client->filter_type == BLACKLIST) { for (i = 0; i < ARRAY_SIZE(client->filter); i++) { if (client->filter[i] == addr) { @@ -927,6 +927,18 @@ static bool client_filter_match(struct bt_mesh_proxy_client *client, return true; } + if (addr == BT_MESH_ADDR_ALL_NODES) { + return true; + } + + if (client->filter_type == WHITELIST) { + for (i = 0; i < ARRAY_SIZE(client->filter); i++) { + if (client->filter[i] == addr) { + return true; + } + } + } + return false; } @@ -1146,7 +1158,7 @@ static bool advertise_subnet(struct bt_mesh_subnet *sub) } return (sub->node_id == BT_MESH_NODE_IDENTITY_RUNNING || - bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_ENABLED); + bt_mesh_gatt_proxy_get() != BT_MESH_GATT_PROXY_NOT_SUPPORTED); } static struct bt_mesh_subnet *next_sub(void) @@ -1189,7 +1201,7 @@ static s32_t gatt_proxy_advertise(struct bt_mesh_subnet *sub) BT_DBG(""); if (conn_count == CONFIG_BT_MAX_CONN) { - BT_WARN("Connectable advertising deferred (max connections)"); + BT_DBG("Connectable advertising deferred (max connections)"); return remaining; } @@ -1213,11 +1225,7 @@ static s32_t gatt_proxy_advertise(struct bt_mesh_subnet *sub) } if (sub->node_id == BT_MESH_NODE_IDENTITY_STOPPED) { - if (bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_ENABLED) { - net_id_adv(sub); - } else { - return gatt_proxy_advertise(next_sub()); - } + net_id_adv(sub); } subnet_count = sub_count(); @@ -1353,12 +1361,39 @@ void bt_mesh_proxy_adv_stop(void) } } -int -ble_mesh_proxy_gap_event(struct ble_gap_event *event, void *arg) +static void ble_mesh_handle_connect(struct ble_gap_event *event, void *arg) { +#if MYNEWT_VAL(BLE_EXT_ADV) + /* When EXT ADV is enabled then mesh proxy is connected + * when proxy advertising instance is completed. + * Therefore no need to handle BLE_GAP_EVENT_CONNECT + */ + if (event->type == BLE_GAP_EVENT_ADV_COMPLETE) { + /* Reason 0 means advertising has been completed because + * connection has been established + */ + if (event->adv_complete.reason != 0) { + return; + } + if (event->adv_complete.instance != BT_MESH_ADV_GATT_INST) { + return; + } + + proxy_connected(event->adv_complete.conn_handle); + } +#else if (event->type == BLE_GAP_EVENT_CONNECT) { proxy_connected(event->connect.conn_handle); + } +#endif +} + +int ble_mesh_proxy_gap_event(struct ble_gap_event *event, void *arg) +{ + if ((event->type == BLE_GAP_EVENT_CONNECT) || + (event->type == BLE_GAP_EVENT_ADV_COMPLETE)) { + ble_mesh_handle_connect(event, arg); } else if (event->type == BLE_GAP_EVENT_DISCONNECT) { proxy_disconnected(event->disconnect.conn.conn_handle, event->disconnect.reason); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.h index 9f19be07b..64338a0a3 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/proxy.h @@ -19,7 +19,7 @@ int bt_mesh_proxy_send(uint16_t conn_handle, u8_t type, struct os_mbuf *msg); int bt_mesh_proxy_prov_enable(void); -int bt_mesh_proxy_prov_disable(void); +int bt_mesh_proxy_prov_disable(bool disconnect); int bt_mesh_proxy_gatt_enable(void); int bt_mesh_proxy_gatt_disable(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.c index f0f4a27ea..88d9b302e 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.c @@ -5,11 +5,10 @@ */ #include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_SETTINGS_LOG #if MYNEWT_VAL(BLE_MESH_SETTINGS) -#define BT_DBG_ENABLED MYNEWT_VAL(BLE_MESH_DEBUG_SETTINGS) - #include "mesh/mesh.h" #include "mesh/glue.h" #include "net.h" @@ -19,6 +18,7 @@ #include "foundation.h" #include "proxy.h" #include "settings.h" +#include "nodes.h" #include "config/config.h" @@ -105,6 +105,31 @@ struct mod_pub_val { cred:1; }; +/* Virtual Address information */ +struct va_val { + u16_t ref; + u16_t addr; + u8_t uuid[16]; +} __packed; + +/* Node storage information */ +struct node_val { + u16_t net_idx; + u8_t dev_key[16]; + u8_t num_elem; +} __packed; + +struct node_update { + u16_t addr; + bool clear; +}; + +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) +static struct node_update node_updates[CONFIG_BT_MESH_NODE_COUNT]; +#else +static struct node_update node_updates[0]; +#endif + /* We need this so we don't overwrite app-hardcoded values in case FCB * contains a history of changes but then has a NULL at the end. */ @@ -658,6 +683,14 @@ static int mod_set(bool vnd, int argc, char **argv, char *val) return mod_set_pub(mod, val); } + if (!strcmp(argv[1], "data")) { + mod->flags |= BT_MESH_MOD_DATA_PRESENT; + + if (mod->cb && mod->cb->settings_set) { + return mod->cb->settings_set(mod, val); + } + } + BT_WARN("Unknown module key %s", argv[1]); return -ENOENT; } @@ -672,6 +705,115 @@ static int vnd_mod_set(int argc, char **argv, char *val) return mod_set(true, argc, argv, val); } +#if CONFIG_BT_MESH_LABEL_COUNT > 0 +static int va_set(int argc, char **argv, char *val) +{ + struct va_val va; + struct label *lab; + u16_t index; + int len, err; + + if (argc < 1) { + BT_ERR("Insufficient number of arguments"); + return -ENOENT; + } + + index = strtol(argv[0], NULL, 16); + + if (val == NULL) { + BT_WARN("Mesh Virtual Address length = 0"); + return 0; + } + + err = settings_bytes_from_str(val, &va, &len); + if (err) { + BT_ERR("Failed to decode value %s (err %d)", val, err); + return -EINVAL; + } + + if (len != sizeof(struct va_val)) { + BT_ERR("Invalid length for virtual address"); + return -EINVAL; + } + + if (va.ref == 0) { + BT_WARN("Ignore Mesh Virtual Address ref = 0"); + return 0; + } + + lab = get_label(index); + if (lab == NULL) { + BT_WARN("Out of labels buffers"); + return -ENOBUFS; + } + + memcpy(lab->uuid, va.uuid, 16); + lab->addr = va.addr; + lab->ref = va.ref; + + BT_DBG("Restored Virtual Address, addr 0x%04x ref 0x%04x", + lab->addr, lab->ref); + + return 0; +} +#endif + +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) +static int node_set(int argc, char **argv, char *str) +{ + struct bt_mesh_node *node; + struct node_val val; + u16_t addr; + int len, err; + + if (argc < 1) { + BT_ERR("Insufficient number of arguments"); + return -ENOENT; + } + + addr = strtol(argv[0], NULL, 16); + + if (str == NULL) { + BT_DBG("val (null)"); + BT_DBG("Deleting node 0x%04x", addr); + + node = bt_mesh_node_find(addr); + if (node) { + bt_mesh_node_del(node, false); + } + + return 0; + } + + err = settings_bytes_from_str(str, &val, &len); + if (err) { + BT_ERR("Failed to decode value %s (err %d)", val, err); + return -EINVAL; + } + + if (len != sizeof(struct node_val)) { + BT_ERR("Invalid length for node_val"); + return -EINVAL; + } + + node = bt_mesh_node_find(addr); + if (!node) { + node = bt_mesh_node_alloc(addr, val.num_elem, val.net_idx); + } + + if (!node) { + BT_ERR("No space for a new node"); + return -ENOMEM; + } + + memcpy(node->dev_key, &val.dev_key, 16); + + BT_DBG("Node 0x%04x recovered from storage", addr); + + return 0; +} +#endif + const struct mesh_setting { const char *name; int (*func)(int argc, char **argv, char *val); @@ -686,6 +828,12 @@ const struct mesh_setting { { "Cfg", cfg_set }, { "s", sig_mod_set }, { "v", vnd_mod_set }, +#if CONFIG_BT_MESH_LABEL_COUNT > 0 + { "Va", va_set }, +#endif +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) + { "Node", node_set }, +#endif }; static int mesh_set(int argc, char **argv, char *val) @@ -756,6 +904,10 @@ static void commit_mod(struct bt_mesh_model *mod, struct bt_mesh_elem *elem, k_delayed_work_submit(&mod->pub->timer, ms); } } + + if (mod->cb && mod->cb->settings_commit) { + mod->cb->settings_commit(mod); + } } static int mesh_commit(void) @@ -772,7 +924,7 @@ static int mesh_commit(void) } if (IS_ENABLED(CONFIG_BT_MESH_PB_GATT)) { - bt_mesh_proxy_prov_disable(); + bt_mesh_proxy_prov_disable(true); } for (i = 0; i < ARRAY_SIZE(bt_mesh.sub); i++) { @@ -820,24 +972,41 @@ static int mesh_commit(void) return 0; } +/* Pending flags that use K_NO_WAIT as the storage timeout */ +#define NO_WAIT_PENDING_BITS (BIT(BT_MESH_NET_PENDING) | \ + BIT(BT_MESH_IV_PENDING) | \ + BIT(BT_MESH_SEQ_PENDING)) + +/* Pending flags that use CONFIG_BT_MESH_STORE_TIMEOUT */ +#define GENERIC_PENDING_BITS (BIT(BT_MESH_KEYS_PENDING) | \ + BIT(BT_MESH_HB_PUB_PENDING) | \ + BIT(BT_MESH_CFG_PENDING) | \ + BIT(BT_MESH_MOD_PENDING) | \ + BIT(BT_MESH_NODES_PENDING)) + static void schedule_store(int flag) { - s32_t timeout; + s32_t timeout, remaining; atomic_set_bit(bt_mesh.flags, flag); - if (atomic_test_bit(bt_mesh.flags, BT_MESH_NET_PENDING) || - atomic_test_bit(bt_mesh.flags, BT_MESH_IV_PENDING) || - atomic_test_bit(bt_mesh.flags, BT_MESH_SEQ_PENDING)) { + if (atomic_get(bt_mesh.flags) & NO_WAIT_PENDING_BITS) { timeout = K_NO_WAIT; } else if (atomic_test_bit(bt_mesh.flags, BT_MESH_RPL_PENDING) && - (CONFIG_BT_MESH_RPL_STORE_TIMEOUT < - CONFIG_BT_MESH_STORE_TIMEOUT)) { + (!(atomic_get(bt_mesh.flags) & GENERIC_PENDING_BITS) || + (CONFIG_BT_MESH_RPL_STORE_TIMEOUT < + CONFIG_BT_MESH_STORE_TIMEOUT))) { timeout = K_SECONDS(CONFIG_BT_MESH_RPL_STORE_TIMEOUT); } else { timeout = K_SECONDS(CONFIG_BT_MESH_STORE_TIMEOUT); } + remaining = k_delayed_work_remaining_get(&pending_store); + if (remaining && remaining < timeout) { + BT_DBG("Not rescheduling due to existing earlier deadline"); + return; + } + BT_DBG("Waiting %d seconds", (int) (timeout / MSEC_PER_SEC)); k_delayed_work_submit(&pending_store, timeout); @@ -845,14 +1014,26 @@ static void schedule_store(int flag) static void clear_iv(void) { - BT_DBG("Clearing IV"); - settings_save_one("bt_mesh/IV", NULL); + int err; + + err = settings_save_one("bt_mesh/IV", NULL); + if (err) { + BT_ERR("Failed to clear IV"); + } else { + BT_DBG("Cleared IV"); + } } static void clear_net(void) { - BT_DBG("Clearing Network"); - settings_save_one("bt_mesh/Net", NULL); + int err; + + err = settings_save_one("bt_mesh/Net", NULL); + if (err) { + BT_ERR("Failed to clear Network"); + } else { + BT_DBG("Cleared Network"); + } } static void store_pending_net(void) @@ -860,6 +1041,7 @@ static void store_pending_net(void) char buf[BT_SETTINGS_SIZE(sizeof(struct net_val))]; struct net_val net; char *str; + int err; BT_DBG("addr 0x%04x DevKey %s", bt_mesh_primary_addr(), bt_hex(bt_mesh.dev_key, 16)); @@ -874,7 +1056,12 @@ static void store_pending_net(void) } BT_DBG("Saving Network as value %s", str); - settings_save_one("bt_mesh/Net", str); + err = settings_save_one("bt_mesh/Net", str); + if (err) { + BT_ERR("Failed to store Network"); + } else { + BT_DBG("Stored Network"); + } } void bt_mesh_store_net(void) @@ -887,6 +1074,7 @@ static void store_pending_iv(void) char buf[BT_SETTINGS_SIZE(sizeof(struct iv_val))]; struct iv_val iv; char *str; + int err; iv.iv_index = bt_mesh.iv_index; iv.iv_update = atomic_test_bit(bt_mesh.flags, BT_MESH_IVU_IN_PROGRESS); @@ -899,7 +1087,12 @@ static void store_pending_iv(void) } BT_DBG("Saving IV as value %s", str); - settings_save_one("bt_mesh/IV", str); + err = settings_save_one("bt_mesh/IV", str); + if (err) { + BT_ERR("Failed to store IV"); + } else { + BT_DBG("Stored IV"); + } } void bt_mesh_store_iv(bool only_duration) @@ -917,6 +1110,7 @@ static void store_pending_seq(void) char buf[BT_SETTINGS_SIZE(sizeof(struct seq_val))]; struct seq_val seq; char *str; + int err; seq.val[0] = bt_mesh.seq; seq.val[1] = bt_mesh.seq >> 8; @@ -929,7 +1123,12 @@ static void store_pending_seq(void) } BT_DBG("Saving Seq as value %s", str); - settings_save_one("bt_mesh/Seq", str); + err = settings_save_one("bt_mesh/Seq", str); + if (err) { + BT_ERR("Failed to store Seq"); + } else { + BT_DBG("Stored Seq"); + } } void bt_mesh_store_seq(void) @@ -948,6 +1147,7 @@ static void store_rpl(struct bt_mesh_rpl *entry) struct rpl_val rpl; char path[18]; char *str; + int err; BT_DBG("src 0x%04x seq 0x%06x old_iv %u", entry->src, (unsigned) entry->seq, entry->old_iv); @@ -964,12 +1164,17 @@ static void store_rpl(struct bt_mesh_rpl *entry) snprintk(path, sizeof(path), "bt_mesh/RPL/%x", entry->src); BT_DBG("Saving RPL %s as value %s", path, str); - settings_save_one(path, str); + err = settings_save_one(path, str); + if (err) { + BT_ERR("Failed to store RPL"); + } else { + BT_DBG("Stored RPL"); + } } static void clear_rpl(void) { - int i; + int i, err; BT_DBG(""); @@ -982,7 +1187,12 @@ static void clear_rpl(void) } snprintk(path, sizeof(path), "bt_mesh/RPL/%x", rpl->src); - settings_save_one(path, NULL); + err = settings_save_one(path, NULL); + if (err) { + BT_ERR("Failed to clear RPL"); + } else { + BT_DBG("Cleared RPL"); + } memset(rpl, 0, sizeof(*rpl)); } @@ -1010,6 +1220,7 @@ static void store_pending_hb_pub(void) struct bt_mesh_hb_pub *pub = bt_mesh_hb_pub_get(); struct hb_pub_val val; char *str; + int err; if (!pub) { return; @@ -1035,7 +1246,12 @@ static void store_pending_hb_pub(void) BT_DBG("Saving Heartbeat Publication as value %s", str ? str : "(null)"); - settings_save_one("bt_mesh/HBPub", str); + err = settings_save_one("bt_mesh/HBPub", str); + if (err) { + BT_ERR("Failed to store Heartbeat Publication"); + } else { + BT_DBG("Stored Heartbeat Publication"); + } } static void store_pending_cfg(void) @@ -1044,6 +1260,7 @@ static void store_pending_cfg(void) struct bt_mesh_cfg_srv *cfg = bt_mesh_cfg_get(); struct cfg_val val; char *str; + int err; if (!cfg) { return; @@ -1064,33 +1281,56 @@ static void store_pending_cfg(void) } BT_DBG("Saving configuration as value %s", str); - settings_save_one("bt_mesh/Cfg", str); + err = settings_save_one("bt_mesh/Cfg", str); + if (err) { + BT_ERR("Failed to store configuration"); + } else { + BT_DBG("Stored configuration"); + } } static void clear_cfg(void) { - BT_DBG("Clearing configuration"); - settings_save_one("bt_mesh/Cfg", NULL); + int err; + + err = settings_save_one("bt_mesh/Cfg", NULL); + if (err) { + BT_ERR("Failed to clear configuration"); + } else { + BT_DBG("Cleared configuration"); + } } static void clear_app_key(u16_t app_idx) { char path[20]; + int err; BT_DBG("AppKeyIndex 0x%03x", app_idx); snprintk(path, sizeof(path), "bt_mesh/AppKey/%x", app_idx); - settings_save_one(path, NULL); + err = settings_save_one(path, NULL); + if (err) { + BT_ERR("Failed to clear AppKeyIndex 0x%03x", app_idx); + } else { + BT_DBG("Cleared AppKeyIndex 0x%03x", app_idx); + } } static void clear_net_key(u16_t net_idx) { char path[20]; + int err; BT_DBG("NetKeyIndex 0x%03x", net_idx); snprintk(path, sizeof(path), "bt_mesh/NetKey/%x", net_idx); - settings_save_one(path, NULL); + err = settings_save_one(path, NULL); + if (err) { + BT_ERR("Failed to clear NetKeyIndex 0x%03x", net_idx); + } else { + BT_DBG("Cleared NetKeyIndex 0x%03x", net_idx); + } } static void store_net_key(struct bt_mesh_subnet *sub) @@ -1099,6 +1339,7 @@ static void store_net_key(struct bt_mesh_subnet *sub) struct net_key_val key; char path[20]; char *str; + int err; BT_DBG("NetKeyIndex 0x%03x NetKey %s", sub->net_idx, bt_hex(sub->keys[0].net, 16)); @@ -1117,7 +1358,12 @@ static void store_net_key(struct bt_mesh_subnet *sub) snprintk(path, sizeof(path), "bt_mesh/NetKey/%x", sub->net_idx); BT_DBG("Saving NetKey %s as value %s", path, str); - settings_save_one(path, str); + err = settings_save_one(path, str); + if (err) { + BT_ERR("Failed to store NetKey"); + } else { + BT_DBG("Stored NetKey"); + } } static void store_app_key(struct bt_mesh_app_key *app) @@ -1126,6 +1372,7 @@ static void store_app_key(struct bt_mesh_app_key *app) struct app_key_val key; char path[20]; char *str; + int err; key.net_idx = app->net_idx; key.updated = app->updated; @@ -1141,7 +1388,12 @@ static void store_app_key(struct bt_mesh_app_key *app) snprintk(path, sizeof(path), "bt_mesh/AppKey/%x", app->app_idx); BT_DBG("Saving AppKey %s as value %s", path, str); - settings_save_one(path, str); + err = settings_save_one(path, str); + if (err) { + BT_ERR("Failed to store AppKey"); + } else { + BT_DBG("Stored AppKey"); + } } static void store_pending_keys(void) @@ -1190,6 +1442,104 @@ static void store_pending_keys(void) } } +static void store_node(struct bt_mesh_node *node) +{ + char buf[BT_SETTINGS_SIZE(sizeof(struct node_val))]; + struct node_val val; + char path[20]; + char *str; + int err; + + val.net_idx = node->net_idx; + val.num_elem = node->num_elem; + memcpy(val.dev_key, node->dev_key, 16); + + snprintk(path, sizeof(path), "bt_mesh/Node/%x", node->addr); + + str = settings_str_from_bytes(&val, sizeof(val), buf, sizeof(buf)); + if (!str) { + BT_ERR("Unable to encode Node as value"); + return; + } + + + err = settings_save_one(path, str); + if (err) { + BT_ERR("Failed to store Node %s value", path); + } else { + BT_DBG("Stored Node %s value", path); + } +} + +static void clear_node(u16_t addr) +{ + char path[20]; + int err; + + BT_DBG("Node 0x%04x", addr); + + snprintk(path, sizeof(path), "bt_mesh/Node/%x", addr); + err = settings_save_one(path, NULL); + if (err) { + BT_ERR("Failed to clear Node 0x%04x", addr); + } else { + BT_DBG("Cleared Node 0x%04x", addr); + } +} + +static void store_pending_nodes(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(node_updates); ++i) { + struct node_update *update = &node_updates[i]; + + if (update->addr == BT_MESH_ADDR_UNASSIGNED) { + continue; + } + + if (update->clear) { + clear_node(update->addr); + } else { + struct bt_mesh_node *node; + + node = bt_mesh_node_find(update->addr); + if (node) { + store_node(node); + } else { + BT_WARN("Node 0x%04x not found", update->addr); + } + } + + update->addr = BT_MESH_ADDR_UNASSIGNED; + } +} + +static struct node_update *node_update_find(u16_t addr, + struct node_update **free_slot) +{ + struct node_update *match; + int i; + + match = NULL; + *free_slot = NULL; + + for (i = 0; i < ARRAY_SIZE(node_updates); i++) { + struct node_update *update = &node_updates[i]; + + if (update->addr == BT_MESH_ADDR_UNASSIGNED) { + *free_slot = update; + continue; + } + + if (update->addr == addr) { + match = update; + } + } + + return match; +} + static void encode_mod_path(struct bt_mesh_model *mod, bool vnd, const char *key, char *path, size_t path_len) { @@ -1207,7 +1557,7 @@ static void store_pending_mod_bind(struct bt_mesh_model *mod, bool vnd) u16_t keys[CONFIG_BT_MESH_MODEL_KEY_COUNT]; char buf[BT_SETTINGS_SIZE(sizeof(keys))]; char path[20]; - int i, count; + int i, count, err; char *val; for (i = 0, count = 0; i < ARRAY_SIZE(mod->keys); i++) { @@ -1230,7 +1580,12 @@ static void store_pending_mod_bind(struct bt_mesh_model *mod, bool vnd) encode_mod_path(mod, vnd, "bind", path, sizeof(path)); BT_DBG("Saving %s as %s", path, val ? val : "(null)"); - settings_save_one(path, val); + err = settings_save_one(path, val); + if (err) { + BT_ERR("Failed to store bind"); + } else { + BT_DBG("Stored bind"); + } } static void store_pending_mod_sub(struct bt_mesh_model *mod, bool vnd) @@ -1238,10 +1593,10 @@ static void store_pending_mod_sub(struct bt_mesh_model *mod, bool vnd) u16_t groups[CONFIG_BT_MESH_MODEL_GROUP_COUNT]; char buf[BT_SETTINGS_SIZE(sizeof(groups))]; char path[20]; - int i, count; + int i, count, err; char *val; - for (i = 0, count = 0; i < ARRAY_SIZE(mod->groups); i++) { + for (i = 0, count = 0; i < CONFIG_BT_MESH_MODEL_GROUP_COUNT; i++) { if (mod->groups[i] != BT_MESH_ADDR_UNASSIGNED) { groups[count++] = mod->groups[i]; } @@ -1261,7 +1616,12 @@ static void store_pending_mod_sub(struct bt_mesh_model *mod, bool vnd) encode_mod_path(mod, vnd, "sub", path, sizeof(path)); BT_DBG("Saving %s as %s", path, val ? val : "(null)"); - settings_save_one(path, val); + err = settings_save_one(path, val); + if (err) { + BT_ERR("Failed to store sub"); + } else { + BT_DBG("Stored sub"); + } } static void store_pending_mod_pub(struct bt_mesh_model *mod, bool vnd) @@ -1270,6 +1630,7 @@ static void store_pending_mod_pub(struct bt_mesh_model *mod, bool vnd) struct mod_pub_val pub; char path[20]; char *val; + int err; if (!mod->pub || mod->pub->addr == BT_MESH_ADDR_UNASSIGNED) { val = NULL; @@ -1293,7 +1654,12 @@ static void store_pending_mod_pub(struct bt_mesh_model *mod, bool vnd) encode_mod_path(mod, vnd, "pub", path, sizeof(path)); BT_DBG("Saving %s as %s", path, val ? val : "(null)"); - settings_save_one(path, val); + err = settings_save_one(path, val); + if (err) { + BT_ERR("Failed to store pub"); + } else { + BT_DBG("Stored pub"); + } } static void store_pending_mod(struct bt_mesh_model *mod, @@ -1320,6 +1686,52 @@ static void store_pending_mod(struct bt_mesh_model *mod, } } +#define IS_VA_DEL(_label) ((_label)->ref == 0) +static void store_pending_va(void) +{ + char buf[BT_SETTINGS_SIZE(sizeof(struct va_val))]; + struct label *lab; + struct va_val va; + char path[18]; + char *val; + u16_t i; + int err = 0; + + for (i = 0; (lab = get_label(i)) != NULL; i++) { + if (!atomic_test_and_clear_bit(lab->flags, + BT_MESH_VA_CHANGED)) { + continue; + } + + snprintk(path, sizeof(path), "bt_mesh/Va/%x", i); + + if (IS_VA_DEL(lab)) { + val = NULL; + } else { + va.ref = lab->ref; + va.addr = lab->addr; + memcpy(va.uuid, lab->uuid, 16); + + val = settings_str_from_bytes(&va, sizeof(va), + buf, sizeof(buf)); + if (!val) { + BT_ERR("Unable to encode model publication as value"); + return; + } + + err = settings_save_one(path, val); + } + + if (err) { + BT_ERR("Failed to %s %s value (err %d)", + IS_VA_DEL(lab) ? "delete" : "store", path, err); + } else { + BT_DBG("%s %s value", + IS_VA_DEL(lab) ? "Deleted" : "Stored", path); + } + } +} + static void store_pending(struct ble_npl_event *work) { BT_DBG(""); @@ -1371,6 +1783,15 @@ static void store_pending(struct ble_npl_event *work) if (atomic_test_and_clear_bit(bt_mesh.flags, BT_MESH_MOD_PENDING)) { bt_mesh_model_foreach(store_pending_mod, NULL); } + + if (atomic_test_and_clear_bit(bt_mesh.flags, BT_MESH_VA_PENDING)) { + store_pending_va(); + } + + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER) && + atomic_test_and_clear_bit(bt_mesh.flags, BT_MESH_NODES_PENDING)) { + store_pending_nodes(); + } } void bt_mesh_store_rpl(struct bt_mesh_rpl *entry) @@ -1552,6 +1973,93 @@ void bt_mesh_store_mod_pub(struct bt_mesh_model *mod) schedule_store(BT_MESH_MOD_PENDING); } + +void bt_mesh_store_label(void) +{ + schedule_store(BT_MESH_VA_PENDING); +} + +void bt_mesh_store_node(struct bt_mesh_node *node) +{ + struct node_update *update, *free_slot; + + BT_DBG("Node 0x%04x", node->addr); + + update = node_update_find(node->addr, &free_slot); + if (update) { + update->clear = false; + schedule_store(BT_MESH_NODES_PENDING); + return; + } + + if (!free_slot) { + store_node(node); + return; + } + + free_slot->addr = node->addr; + + schedule_store(BT_MESH_NODES_PENDING); +} + +void bt_mesh_clear_node(struct bt_mesh_node *node) +{ + struct node_update *update, *free_slot; + + BT_DBG("Node 0x%04x", node->addr); + + update = node_update_find(node->addr, &free_slot); + if (update) { + update->clear = true; + schedule_store(BT_MESH_NODES_PENDING); + return; + } + + if (!free_slot) { + clear_node(node->addr); + return; + } + + free_slot->addr = node->addr; + + schedule_store(BT_MESH_NODES_PENDING); +} + +int bt_mesh_model_data_store(struct bt_mesh_model *mod, bool vnd, + const void *data, size_t data_len) +{ + char path[20]; + char buf[BT_SETTINGS_SIZE(sizeof(struct mod_pub_val))]; + char *val; + int err; + + encode_mod_path(mod, vnd, "data", path, sizeof(path)); + + if (data_len) { + mod->flags |= BT_MESH_MOD_DATA_PRESENT; + val = settings_str_from_bytes(data, data_len, + buf, sizeof(buf)); + if (!val) { + BT_ERR("Unable to encode model publication as value"); + return -EINVAL; + } + err = settings_save_one(path, val); + } else if (mod->flags & BT_MESH_MOD_DATA_PRESENT) { + mod->flags &= ~BT_MESH_MOD_DATA_PRESENT; + err = settings_save_one(path, NULL); + } else { + /* Nothing to delete */ + err = 0; + } + + if (err) { + BT_ERR("Failed to store %s value", path); + } else { + BT_DBG("Stored %s value", path); + } + return err; +} + static struct conf_handler bt_mesh_settings_conf_handler = { .ch_name = "bt_mesh", .ch_get = NULL, diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.h index 7bd028477..c630814e5 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/settings.h @@ -15,10 +15,13 @@ void bt_mesh_store_cfg(void); void bt_mesh_store_mod_bind(struct bt_mesh_model *mod); void bt_mesh_store_mod_sub(struct bt_mesh_model *mod); void bt_mesh_store_mod_pub(struct bt_mesh_model *mod); +void bt_mesh_store_label(void); +void bt_mesh_store_node(struct bt_mesh_node *node); void bt_mesh_clear_net(void); void bt_mesh_clear_subnet(struct bt_mesh_subnet *sub); void bt_mesh_clear_app_key(struct bt_mesh_app_key *key); void bt_mesh_clear_rpl(void); +void bt_mesh_clear_node(struct bt_mesh_node *node); void bt_mesh_settings_init(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/shell.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/shell.c index 94a7b58be..91fbd9785 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/shell.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/shell.c @@ -222,37 +222,46 @@ static struct bt_mesh_health_cli health_cli = { #endif /* MYNEWT_VAL(BLE_MESH_HEALTH_CLI) */ #if MYNEWT_VAL(BLE_MESH_SHELL_MODELS) -static struct bt_mesh_model_pub gen_onoff_pub; -static struct bt_mesh_model_pub gen_level_pub; +static struct bt_mesh_gen_model_cli gen_onoff_cli; +static struct bt_mesh_model_pub gen_onoff_cli_pub; +static struct bt_mesh_model_pub gen_onoff_srv_pub; +static struct bt_mesh_gen_model_cli gen_level_cli; +static struct bt_mesh_model_pub gen_level_cli_pub; +static struct bt_mesh_model_pub gen_level_srv_pub; static struct bt_mesh_model_pub light_lightness_pub; -static struct bt_mesh_gen_onoff_srv_cb gen_onoff_srv_cb = { +static struct bt_mesh_gen_onoff_srv gen_onoff_srv = { .get = light_model_gen_onoff_get, .set = light_model_gen_onoff_set, }; -static struct bt_mesh_gen_level_srv_cb gen_level_srv_cb = { +static struct bt_mesh_gen_level_srv gen_level_srv = { .get = light_model_gen_level_get, .set = light_model_gen_level_set, }; -static struct bt_mesh_light_lightness_srv_cb light_lightness_srv_cb = { +static struct bt_mesh_light_lightness_srv light_lightness_srv = { .get = light_model_light_lightness_get, .set = light_model_light_lightness_set, }; -void bt_mesh_set_gen_onoff_srv_cb(struct bt_mesh_gen_onoff_srv_cb *gen_onoff_cb) +void bt_mesh_set_gen_onoff_srv_cb(int (*get)(struct bt_mesh_model *model, u8_t *state), + int (*set)(struct bt_mesh_model *model, u8_t state)) { - gen_onoff_srv_cb = *gen_onoff_cb; + gen_onoff_srv.get = get; + gen_onoff_srv.set = set; } -void bt_mesh_set_gen_level_srv_cb(struct bt_mesh_gen_level_srv_cb *gen_level_cb) +void bt_mesh_set_gen_level_srv_cb(int (*get)(struct bt_mesh_model *model, s16_t *level), + int (*set)(struct bt_mesh_model *model, s16_t level)) { - gen_level_srv_cb = *gen_level_cb; + gen_level_srv.get = get; + gen_level_srv.set = set; } -void bt_mesh_set_light_lightness_srv_cb(struct bt_mesh_light_lightness_srv_cb *light_lightness_cb) +void bt_mesh_set_light_lightness_srv_cb(int (*get)(struct bt_mesh_model *model, s16_t *level), + int (*set)(struct bt_mesh_model *model, s16_t level)) { - light_lightness_srv_cb = *light_lightness_cb; + light_lightness_srv.get = get; + light_lightness_srv.set = set; } - #endif static struct bt_mesh_model root_models[] = { @@ -265,11 +274,11 @@ static struct bt_mesh_model root_models[] = { BT_MESH_MODEL_HEALTH_CLI(&health_cli), #endif #if MYNEWT_VAL(BLE_MESH_SHELL_MODELS) - BT_MESH_MODEL_GEN_ONOFF_SRV(&gen_onoff_srv_cb, &gen_onoff_pub), - BT_MESH_MODEL_GEN_ONOFF_CLI(), - BT_MESH_MODEL_GEN_LEVEL_SRV(&gen_level_srv_cb, &gen_level_pub), - BT_MESH_MODEL_GEN_LEVEL_CLI(), - BT_MESH_MODEL_LIGHT_LIGHTNESS_SRV(&light_lightness_srv_cb, &light_lightness_pub), + BT_MESH_MODEL_GEN_ONOFF_SRV(&gen_onoff_srv, &gen_onoff_srv_pub), + BT_MESH_MODEL_GEN_ONOFF_CLI(&gen_onoff_cli, &gen_onoff_cli_pub), + BT_MESH_MODEL_GEN_LEVEL_SRV(&gen_level_srv, &gen_level_srv_pub), + BT_MESH_MODEL_GEN_LEVEL_CLI(&gen_level_cli, &gen_level_cli_pub), + BT_MESH_MODEL_LIGHT_LIGHTNESS_SRV(&light_lightness_srv, &light_lightness_pub), #endif }; @@ -323,11 +332,25 @@ static void prov_complete(u16_t net_idx, u16_t addr) { printk("Local node provisioned, net_idx 0x%04x address 0x%04x\n", net_idx, addr); - net.net_idx = net_idx, net.local = addr; + net.net_idx = net_idx, net.dst = addr; } +static void prov_node_added(u16_t net_idx, u16_t addr, u8_t num_elem) +{ + printk("Node provisioned, net_idx 0x%04x address " + "0x%04x elements %d", net_idx, addr, num_elem); + + net.net_idx = net_idx, + net.dst = addr; +} + +static void prov_input_complete(void) +{ + printk("Input complete"); +} + static void prov_reset(void) { printk("The local node has been reset and needs reprovisioning\n"); @@ -467,6 +490,7 @@ static struct bt_mesh_prov prov = { .link_open = link_open, .link_close = link_close, .complete = prov_complete, + .node_added = prov_node_added, .reset = prov_reset, .static_val = NULL, .static_val_len = 0, @@ -477,6 +501,7 @@ static struct bt_mesh_prov prov = { .input_size = MYNEWT_VAL(BLE_MESH_OOB_INPUT_SIZE), .input_actions = MYNEWT_VAL(BLE_MESH_OOB_INPUT_ACTIONS), .input = input, + .input_complete = prov_input_complete, }; static int cmd_static_oob(int argc, char *argv[]) @@ -794,19 +819,6 @@ struct shell_cmd_help cmd_net_send_help = { NULL, "", NULL }; -static int cmd_iv_update(int argc, char *argv[]) -{ - if (bt_mesh_iv_update()) { - printk("Transitioned to IV Update In Progress state\n"); - } else { - printk("Transitioned to IV Update Normal state\n"); - } - - printk("IV Index is 0x%08lx\n", bt_mesh.iv_index); - - return 0; -} - static int cmd_rpl_clear(int argc, char *argv[]) { bt_mesh_rpl_clear(); @@ -857,6 +869,20 @@ struct shell_cmd_help cmd_lpn_unsubscribe_help = { }; #endif +#if MYNEWT_VAL(BLE_MESH_IV_UPDATE_TEST) +static int cmd_iv_update(int argc, char *argv[]) +{ + if (bt_mesh_iv_update()) { + printk("Transitioned to IV Update In Progress state\n"); + } else { + printk("Transitioned to IV Update Normal state\n"); + } + + printk("IV Index is 0x%08lx\n", bt_mesh.iv_index); + + return 0; +} + static int cmd_iv_update_test(int argc, char *argv[]) { bool enable; @@ -880,6 +906,7 @@ static int cmd_iv_update_test(int argc, char *argv[]) struct shell_cmd_help cmd_iv_update_test_help = { NULL, "", NULL }; +#endif #if MYNEWT_VAL(BLE_MESH_CFG_CLI) @@ -1802,6 +1829,37 @@ static int cmd_pb_adv(int argc, char *argv[]) { return cmd_pb(BT_MESH_PROV_ADV, argc, argv); } + +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) +static int cmd_provision_adv(int argc, char *argv[]) +{ + u8_t uuid[16]; + u8_t attention_duration; + u16_t net_idx; + u16_t addr; + size_t len; + int err; + + len = hex2bin(argv[1], uuid, sizeof(uuid)); + (void)memset(uuid + len, 0, sizeof(uuid) - len); + + net_idx = strtoul(argv[2], NULL, 0); + addr = strtoul(argv[3], NULL, 0); + attention_duration = strtoul(argv[4], NULL, 0); + + err = bt_mesh_provision_adv(uuid, net_idx, addr, attention_duration); + if (err) { + printk("Provisioning failed (err %d)", err); + } + + return 0; +} + +struct shell_cmd_help cmd_provision_adv_help = { + NULL, " " , NULL +}; +#endif /* CONFIG_BT_MESH_PROVISIONER */ + #endif /* CONFIG_BT_MESH_PB_ADV */ #if MYNEWT_VAL(BLE_MESH_PB_GATT) @@ -2403,6 +2461,13 @@ static const struct shell_cmd mesh_commands[] = { .sc_cmd_func = cmd_pb_adv, .help = &cmd_pb_help, }, +#if MYNEWT_VAL(BLE_MESH_PROVISIONER) + { + .sc_cmd = "provision-adv", + .sc_cmd_func = cmd_provision_adv, + .help = &cmd_provision_adv_help, + }, +#endif #endif #if MYNEWT_VAL(BLE_MESH_PB_GATT) { @@ -2482,6 +2547,7 @@ static const struct shell_cmd mesh_commands[] = { .sc_cmd_func = cmd_net_send, .help = &cmd_net_send_help, }, +#if MYNEWT_VAL(BLE_MESH_IV_UPDATE_TEST) { .sc_cmd = "iv-update", .sc_cmd_func = cmd_iv_update, @@ -2492,6 +2558,7 @@ static const struct shell_cmd mesh_commands[] = { .sc_cmd_func = cmd_iv_update_test, .help = &cmd_iv_update_test_help, }, +#endif { .sc_cmd = "rpl-clear", .sc_cmd_func = cmd_rpl_clear, diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_cmd_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_cmd_priv.h index ddc952bff..70f33260a 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_cmd_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_cmd_priv.h @@ -357,7 +357,6 @@ void ble_att_error_rsp_parse(const void *payload, int len, struct ble_att_error_rsp *rsp); void ble_att_error_rsp_write(void *payload, int len, const struct ble_att_error_rsp *rsp); -void ble_att_error_rsp_log(const struct ble_att_error_rsp *cmd); void ble_att_mtu_req_parse(const void *payload, int len, struct ble_att_mtu_cmd *cmd); void ble_att_mtu_req_write(void *payload, int len, @@ -366,43 +365,34 @@ void ble_att_mtu_rsp_parse(const void *payload, int len, struct ble_att_mtu_cmd *cmd); void ble_att_mtu_rsp_write(void *payload, int len, const struct ble_att_mtu_cmd *cmd); -void ble_att_mtu_cmd_log(const struct ble_att_mtu_cmd *cmd); void ble_att_find_info_req_parse(const void *payload, int len, struct ble_att_find_info_req *req); void ble_att_find_info_req_write(void *payload, int len, const struct ble_att_find_info_req *req); -void ble_att_find_info_req_log(const struct ble_att_find_info_req *cmd); void ble_att_find_info_rsp_parse(const void *payload, int len, struct ble_att_find_info_rsp *rsp); void ble_att_find_info_rsp_write(void *payload, int len, const struct ble_att_find_info_rsp *rsp); -void ble_att_find_info_rsp_log(const struct ble_att_find_info_rsp *cmd); void ble_att_find_type_value_req_parse( const void *payload, int len, struct ble_att_find_type_value_req *req); void ble_att_find_type_value_req_write( void *payload, int len, const struct ble_att_find_type_value_req *req); -void ble_att_find_type_value_req_log( - const struct ble_att_find_type_value_req *cmd); void ble_att_read_type_req_parse(const void *payload, int len, struct ble_att_read_type_req *req); void ble_att_read_type_req_write(void *payload, int len, const struct ble_att_read_type_req *req); -void ble_att_read_type_req_log(const struct ble_att_read_type_req *cmd); void ble_att_read_type_rsp_parse(const void *payload, int len, struct ble_att_read_type_rsp *rsp); void ble_att_read_type_rsp_write(void *payload, int len, const struct ble_att_read_type_rsp *rsp); -void ble_att_read_type_rsp_log(const struct ble_att_read_type_rsp *cmd); void ble_att_read_req_parse(const void *payload, int len, struct ble_att_read_req *req); void ble_att_read_req_write(void *payload, int len, const struct ble_att_read_req *req); -void ble_att_read_req_log(const struct ble_att_read_req *cmd); void ble_att_read_blob_req_parse(const void *payload, int len, struct ble_att_read_blob_req *req); void ble_att_read_blob_req_write(void *payload, int len, const struct ble_att_read_blob_req *req); -void ble_att_read_blob_req_log(const struct ble_att_read_blob_req *cmd); void ble_att_read_mult_req_parse(const void *payload, int len); void ble_att_read_mult_req_write(void *payload, int len); void ble_att_read_mult_rsp_parse(const void *payload, int len); @@ -411,14 +401,10 @@ void ble_att_read_group_type_req_parse( const void *payload, int len, struct ble_att_read_group_type_req *req); void ble_att_read_group_type_req_write( void *payload, int len, const struct ble_att_read_group_type_req *req); -void ble_att_read_group_type_req_log( - const struct ble_att_read_group_type_req *cmd); void ble_att_read_group_type_rsp_parse( const void *payload, int len, struct ble_att_read_group_type_rsp *rsp); void ble_att_read_group_type_rsp_write( void *payload, int len, const struct ble_att_read_group_type_rsp *rsp); -void ble_att_read_group_type_rsp_log( - const struct ble_att_read_group_type_rsp *cmd); void ble_att_write_req_parse(const void *payload, int len, struct ble_att_write_req *req); void ble_att_write_req_write(void *payload, int len, @@ -427,20 +413,16 @@ void ble_att_write_cmd_parse(const void *payload, int len, struct ble_att_write_req *req); void ble_att_write_cmd_write(void *payload, int len, const struct ble_att_write_req *req); -void ble_att_write_cmd_log(const struct ble_att_write_cmd *cmd); -void ble_att_write_req_log(const struct ble_att_write_req *req); void ble_att_prep_write_req_parse(const void *payload, int len, struct ble_att_prep_write_cmd *cmd); void ble_att_prep_write_req_write(void *payload, int len, const struct ble_att_prep_write_cmd *cmd); -void ble_att_prep_write_cmd_log(const struct ble_att_prep_write_cmd *cmd); void ble_att_prep_write_rsp_parse(const void *payload, int len, struct ble_att_prep_write_cmd *cmd); void ble_att_prep_write_rsp_write(void *payload, int len, const struct ble_att_prep_write_cmd *cmd); void ble_att_exec_write_req_parse(const void *payload, int len, struct ble_att_exec_write_req *req); -void ble_att_exec_write_req_log(const struct ble_att_exec_write_req *cmd); void ble_att_exec_write_req_write(void *payload, int len, const struct ble_att_exec_write_req *req); void ble_att_exec_write_rsp_parse(const void *payload, int len); @@ -449,14 +431,12 @@ void ble_att_notify_req_parse(const void *payload, int len, struct ble_att_notify_req *req); void ble_att_notify_req_write(void *payload, int len, const struct ble_att_notify_req *req); -void ble_att_notify_req_log(const struct ble_att_notify_req *cmd); void ble_att_indicate_req_parse(const void *payload, int len, struct ble_att_indicate_req *req); void ble_att_indicate_req_write(void *payload, int len, const struct ble_att_indicate_req *req); void ble_att_indicate_rsp_parse(const void *payload, int len); void ble_att_indicate_rsp_write(void *payload, int len); -void ble_att_indicate_req_log(const struct ble_att_indicate_req *cmd); void *ble_att_cmd_prepare(uint8_t opcode, size_t len, struct os_mbuf *txom); void *ble_att_cmd_get(uint8_t opcode, size_t len, struct os_mbuf **txom); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_priv.h index 2201d4ddb..73b6aeab0 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_att_priv.h @@ -170,12 +170,6 @@ void ble_att_set_peer_mtu(struct ble_l2cap_chan *chan, uint16_t peer_mtu); uint16_t ble_att_chan_mtu(const struct ble_l2cap_chan *chan); int ble_att_init(void); -#define BLE_ATT_LOG_CMD(is_tx, cmd_name, conn_handle, log_cb, cmd) \ - BLE_HS_LOG_CMD((is_tx), "att", (cmd_name), (conn_handle), (log_cb), (cmd)) - -#define BLE_ATT_LOG_EMPTY_CMD(is_tx, cmd_name, conn_handle) \ - BLE_HS_LOG_EMPTY_CMD((is_tx), "att", (cmd_name), (conn_handle)) - /*** @svr */ int ble_att_svr_start(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_gap_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_gap_priv.h index 90c32e22a..2b6b40696 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_gap_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_gap_priv.h @@ -81,23 +81,40 @@ void ble_gap_rx_le_scan_timeout(void); #if MYNEWT_VAL(BLE_EXT_ADV) void ble_gap_rx_ext_adv_report(struct ble_gap_ext_disc_desc *desc); -void ble_gap_rx_adv_set_terminated(struct hci_le_adv_set_terminated *evt); +void ble_gap_rx_adv_set_terminated(const struct ble_hci_ev_le_subev_adv_set_terminated *ev); #if MYNEWT_VAL(BLE_PERIODIC_ADV) -void ble_gap_rx_peroidic_adv_sync_estab(struct hci_le_subev_periodic_adv_sync_estab *evt); -void ble_gap_rx_periodic_adv_rpt(struct hci_le_subev_periodic_adv_rpt *evt); -void ble_gap_rx_periodic_adv_sync_lost(struct hci_le_subev_periodic_adv_sync_lost *evt); +void ble_gap_rx_peroidic_adv_sync_estab(const struct ble_hci_ev_le_subev_periodic_adv_sync_estab *ev); +void ble_gap_rx_periodic_adv_rpt(const struct ble_hci_ev_le_subev_periodic_adv_rpt *ev); +void ble_gap_rx_periodic_adv_sync_lost(const struct ble_hci_ev_le_subev_periodic_adv_sync_lost *ev); +void ble_gap_rx_periodic_adv_sync_transfer(const struct ble_hci_ev_le_subev_periodic_adv_sync_transfer *ev); #endif -void ble_gap_rx_scan_req_rcvd(struct hci_le_scan_req_rcvd *evt); +void ble_gap_rx_scan_req_rcvd(const struct ble_hci_ev_le_subev_scan_req_rcvd *ev); #endif void ble_gap_rx_adv_report(struct ble_gap_disc_desc *desc); -void ble_gap_rx_rd_rem_sup_feat_complete(struct hci_le_rd_rem_supp_feat_complete *evt); -int ble_gap_rx_conn_complete(struct hci_le_conn_complete *evt, uint8_t instance); -void ble_gap_rx_disconn_complete(struct hci_disconn_complete *evt); -void ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt); -void ble_gap_rx_param_req(struct hci_le_conn_param_req *evt); +void ble_gap_rx_rd_rem_sup_feat_complete(const struct ble_hci_ev_le_subev_rd_rem_used_feat *ev); + +struct ble_gap_conn_complete +{ + uint8_t status; + uint16_t connection_handle; + uint8_t role; + uint8_t peer_addr_type; + uint8_t peer_addr[BLE_DEV_ADDR_LEN]; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint8_t master_clk_acc; + uint8_t local_rpa[BLE_DEV_ADDR_LEN]; + uint8_t peer_rpa[BLE_DEV_ADDR_LEN]; +}; + +int ble_gap_rx_conn_complete(struct ble_gap_conn_complete *evt, uint8_t instance); +void ble_gap_rx_disconn_complete(const struct ble_hci_ev_disconn_cmp *ev); +void ble_gap_rx_update_complete(const struct ble_hci_ev_le_subev_conn_upd_complete *ev); +void ble_gap_rx_param_req(const struct ble_hci_ev_le_subev_rem_conn_param_req *ev); int ble_gap_rx_l2cap_update_req(uint16_t conn_handle, struct ble_gap_upd_params *params); -void ble_gap_rx_phy_update_complete(struct hci_le_phy_upd_complete *evt); +void ble_gap_rx_phy_update_complete(const struct ble_hci_ev_le_subev_phy_update_complete *ev); void ble_gap_enc_event(uint16_t conn_handle, int status, int security_restored, int bonded); void ble_gap_passkey_event(uint16_t conn_handle, @@ -118,6 +135,7 @@ int ble_gap_master_in_progress(void); void ble_gap_preempt(void); void ble_gap_preempt_done(void); +int ble_gap_terminate_with_conn(struct ble_hs_conn *conn, uint8_t hci_reason); void ble_gap_conn_broken(uint16_t conn_handle, int reason); void ble_gap_reset_state(int reason); int32_t ble_gap_timer(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_conn_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_conn_priv.h index 92aacd405..0e451194d 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_conn_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_conn_priv.h @@ -38,6 +38,15 @@ typedef uint8_t ble_hs_conn_flags_t; #define BLE_HS_CONN_F_TERMINATING 0x02 #define BLE_HS_CONN_F_TX_FRAG 0x04 /* Cur ACL packet partially txed. */ +#if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) +#define BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN_REM \ + ((MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) % (8 * sizeof(uint32_t))) ? 1 : 0) + +#define BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN \ + (MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) / (8 * sizeof(uint32_t)) + \ + BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN_REM) +#endif + struct ble_hs_conn { SLIST_ENTRY(ble_hs_conn) bhc_next; uint16_t bhc_handle; @@ -61,6 +70,9 @@ struct ble_hs_conn { struct ble_l2cap_chan_list bhc_channels; struct ble_l2cap_chan *bhc_rx_chan; /* Channel rxing current packet. */ ble_npl_time_t bhc_rx_timeout; +#if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) + uint32_t l2cap_coc_cid_mask[BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN]; +#endif /** * Count of packets sent over this connection that the controller has not @@ -86,6 +98,10 @@ struct ble_hs_conn { ble_gap_event_fn *bhc_cb; void *bhc_cb_arg; + +#if MYNEWT_VAL(BLE_PERIODIC_ADV) + struct ble_hs_periodic_sync *psync; +#endif }; struct ble_hs_conn_addrs { @@ -110,15 +126,19 @@ struct ble_l2cap_chan *ble_hs_conn_chan_find_by_scid(struct ble_hs_conn *conn, uint16_t cid); struct ble_l2cap_chan *ble_hs_conn_chan_find_by_dcid(struct ble_hs_conn *conn, uint16_t cid); +bool ble_hs_conn_chan_exist(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); int ble_hs_conn_chan_insert(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); -void -ble_hs_conn_delete_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); +void ble_hs_conn_delete_chan(struct ble_hs_conn *conn, + struct ble_l2cap_chan *chan); void ble_hs_conn_addrs(const struct ble_hs_conn *conn, struct ble_hs_conn_addrs *addrs); int32_t ble_hs_conn_timer(void); +typedef int ble_hs_conn_foreach_fn(struct ble_hs_conn *conn, void *arg); +void ble_hs_conn_foreach(ble_hs_conn_foreach_fn *cb, void *arg); + int ble_hs_conn_init(void); #ifdef __cplusplus diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_flow_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_flow_priv.h index b1aa8c2fc..753eaf8ff 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_flow_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_flow_priv.h @@ -26,7 +26,7 @@ extern "C" { #endif void ble_hs_flow_connection_broken(uint16_t conn_handle); -void ble_hs_flow_fill_acl_usrhdr(struct os_mbuf *om); +void ble_hs_flow_track_data_mbuf(struct os_mbuf *om); int ble_hs_flow_startup(void); #ifdef __cplusplus diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_hci_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_hci_priv.h index ff3604727..362f12cbd 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_hci_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_hci_priv.h @@ -48,7 +48,7 @@ struct os_mbuf; struct ble_hs_hci_ack { int bha_status; /* A BLE_HS_E<...> error; NOT a naked HCI code. */ - uint8_t *bha_params; + const uint8_t *bha_params; int bha_params_len; uint16_t bha_opcode; uint8_t bha_hci_handle; @@ -81,11 +81,8 @@ struct hci_periodic_adv_params extern uint16_t ble_hs_hci_avail_pkts; -int ble_hs_hci_cmd_tx(uint16_t opcode, void *cmd, uint8_t cmd_len, - void *evt_buf, uint8_t evt_buf_len, - uint8_t *out_evt_buf_len); -int ble_hs_hci_cmd_tx_empty_ack(uint16_t opcode, void *cmd, uint8_t cmd_len); -void ble_hs_hci_rx_ack(uint8_t *ack_ev); +int ble_hs_hci_cmd_tx(uint16_t opcode, const void *cmd, uint8_t cmd_len, + void *rsp, uint8_t rsp_len); void ble_hs_hci_init(void); void ble_hs_hci_deinit(void); @@ -103,78 +100,11 @@ int ble_hs_hci_util_read_adv_tx_pwr(int8_t *out_pwr); int ble_hs_hci_util_rand(void *dst, int len); int ble_hs_hci_util_read_rssi(uint16_t conn_handle, int8_t *out_rssi); int ble_hs_hci_util_set_random_addr(const uint8_t *addr); -int ble_hs_hci_util_set_data_len(uint16_t conn_handle, uint16_t tx_octets, - uint16_t tx_time); int ble_hs_hci_util_data_hdr_strip(struct os_mbuf *om, struct hci_data_hdr *out_hdr); -int ble_hs_hci_evt_process(uint8_t *data); +int ble_hs_hci_evt_process(const struct ble_hci_ev *ev); -void ble_hs_hci_cmd_write_hdr(uint8_t ogf, uint16_t ocf, uint8_t len, - void *buf); -int ble_hs_hci_cmd_send_buf(uint16_t opcode, void *buf, uint8_t buf_len); -void ble_hs_hci_cmd_build_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_set_event_mask2(uint64_t event_mask, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_disconnect(uint16_t handle, uint8_t reason, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_read_rssi(uint16_t handle, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_le_set_host_chan_class(const uint8_t *chan_map, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_read_chan_map(uint16_t conn_handle, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_scan_rsp_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_params(const struct hci_adv_params *adv, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_read_buffer_size(void); -void ble_hs_hci_cmd_build_le_set_adv_enable(uint8_t enable, uint8_t *dst, - int dst_len); -int ble_hs_hci_cmd_le_set_adv_enable(uint8_t enable); -int ble_hs_hci_cmd_build_le_set_scan_params(uint8_t scan_type, - uint16_t scan_itvl, - uint16_t scan_window, - uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint8_t *dst, uint8_t dst_len); -int ble_hs_hci_cmd_le_set_scan_enable(uint8_t enable, uint8_t filter_dups); -int ble_hs_hci_cmd_build_le_create_connection( - const struct hci_create_conn *hcc, uint8_t *cmd, int cmd_len); -int ble_hs_hci_cmd_build_le_add_to_whitelist(const uint8_t *addr, - uint8_t addr_type, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_reset(void); -int ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(uint8_t fc_enable); -int ble_hs_hci_cmd_tx_host_buf_size(const struct hci_host_buf_size *cmd); -int ble_hs_hci_cmd_build_host_num_comp_pkts_entry( - const struct hci_host_num_comp_pkts_entry *entry, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_read_adv_pwr(void); -int ble_hs_hci_cmd_le_create_conn_cancel(void); -int ble_hs_hci_cmd_build_le_conn_update(const struct hci_conn_update *hcu, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_update(const struct hci_conn_update *hcu); -void ble_hs_hci_cmd_build_le_lt_key_req_reply( - const struct hci_lt_key_req_reply *hkr, uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_lt_key_req_neg_reply(uint16_t conn_handle, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_conn_param_reply( - const struct hci_conn_param_reply *hcr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_reply(const struct hci_conn_param_reply *hcr); -void ble_hs_hci_cmd_build_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn); -void ble_hs_hci_cmd_build_le_start_encrypt(const struct hci_start_encrypt *cmd, - uint8_t *dst, int dst_len); +int ble_hs_hci_cmd_send_buf(uint16_t opcode, const void *buf, uint8_t buf_len); int ble_hs_hci_set_buf_sz(uint16_t pktlen, uint16_t max_pkts); void ble_hs_hci_add_avail_pkts(uint16_t delta); @@ -184,145 +114,9 @@ uint16_t ble_hs_hci_util_handle_pb_bc_join(uint16_t handle, uint8_t pb, int ble_hs_hci_acl_tx_now(struct ble_hs_conn *conn, struct os_mbuf **om); int ble_hs_hci_acl_tx(struct ble_hs_conn *conn, struct os_mbuf **om); -int ble_hs_hci_cmd_build_set_data_len(uint16_t connection_handle, - uint16_t tx_octets, uint16_t tx_time, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_add_to_resolv_list( - const struct hci_add_dev_to_resolving_list *padd, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_remove_from_resolv_list( - uint8_t addr_type, const uint8_t *addr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_peer_resolv_addr( - uint8_t peer_identity_addr_type, const uint8_t *peer_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_lcl_resolv_addr( - uint8_t local_identity_addr_type, const uint8_t *local_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_addr_res_en( - uint8_t enable, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_resolv_priv_addr_timeout( - uint16_t timeout, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_random_addr(const uint8_t *addr, - uint8_t *dst, int dst_len); - -#if MYNEWT_VAL(BLE_EXT_ADV) -int ble_hs_hci_cmd_build_le_set_ext_scan_params(uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t phy_mask, - uint8_t phy_count, - struct ble_hs_hci_ext_scan_param *params[], - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_ext_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint16_t duration, - uint16_t period, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_ext_create_conn(const struct hci_ext_create_conn *hcc, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_set_random_addr(uint8_t handle, - const uint8_t *addr, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_data(uint8_t handle, uint8_t operation, - uint8_t frag_pref, struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_enable(uint8_t enable, uint8_t sets_num, - const struct hci_ext_adv_set *sets, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_params(uint8_t handle, - const struct hci_ext_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_remove(uint8_t handle, - uint8_t *cmd, int cmd_len); - -#if MYNEWT_VAL(BLE_PERIODIC_ADV) -int -ble_hs_hci_cmd_build_le_periodic_adv_params(uint8_t handle, - const struct hci_periodic_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_enable(uint8_t enable, - uint8_t handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_data(uint8_t handle, uint8_t operation, - struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_periodic_adv_create_sync(uint8_t filter_policy, - uint8_t adv_sid, - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint16_t skip, - uint16_t sync_timeout, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_terminate_sync(uint16_t sync_handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_add_dev_to_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_rem_dev_from_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -#endif - -#endif - -int ble_hs_hci_cmd_build_le_enh_recv_test(uint8_t rx_chan, uint8_t phy, - uint8_t mod_idx, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_enh_trans_test(uint8_t tx_chan, - uint8_t test_data_len, - uint8_t packet_payload_idx, - uint8_t phy, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_priv_mode(const uint8_t *addr, uint8_t addr_type, - uint8_t priv_mode, uint8_t *dst, - uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_read_phy(uint16_t conn_handle, uint8_t *dst, - int dst_len); - -int ble_hs_hci_cmd_build_le_set_default_phy(uint8_t tx_phys_mask, - uint8_t rx_phys_mask, - uint8_t *dst, int dst_len); - -int ble_hs_hci_cmd_build_le_set_phy(uint16_t conn_handle, uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint16_t phy_opts, - uint8_t *dst, int dst_len); - int ble_hs_hci_frag_num_mbufs(void); int ble_hs_hci_frag_num_mbufs_free(void); -#if MYNEWT_VAL(BLE_EXT_ADV) -#endif - -int ble_hs_hci_cmd_build_le_read_remote_feat(uint16_t handle, uint8_t *dst, - int dst_len); #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_priv.h index 49269546c..538d07a97 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_priv.h @@ -26,7 +26,6 @@ #include "ble_att_priv.h" #include "ble_gap_priv.h" #include "ble_gatt_priv.h" -#include "ble_hs_dbg_priv.h" #include "ble_hs_hci_priv.h" #include "ble_hs_atomic_priv.h" #include "ble_hs_conn_priv.h" @@ -118,7 +117,8 @@ int ble_hs_misc_conn_chan_find(uint16_t conn_handle, uint16_t cid, int ble_hs_misc_conn_chan_find_reqd(uint16_t conn_handle, uint16_t cid, struct ble_hs_conn **out_conn, struct ble_l2cap_chan **out_chan); -uint8_t ble_hs_misc_addr_type_to_id(uint8_t addr_type); +uint8_t ble_hs_misc_own_addr_type_to_id(uint8_t addr_type); +uint8_t ble_hs_misc_peer_addr_type_to_id(uint8_t addr_type); int ble_hs_misc_restore_irks(void); int ble_hs_locked_by_cur_task(void); @@ -142,31 +142,6 @@ int ble_mqueue_init(struct ble_mqueue *mq, ble_npl_event_fn *ev_fn, void *ev_arg struct os_mbuf *ble_mqueue_get(struct ble_mqueue *mq); int ble_mqueue_put(struct ble_mqueue *mq, struct ble_npl_eventq *evq, struct os_mbuf *om); -#if MYNEWT_VAL(LOG_LEVEL) <= LOG_LEVEL_DEBUG && !BLE_MONITOR - -#define BLE_HS_LOG_CMD(is_tx, cmd_type, cmd_name, conn_handle, \ - log_cb, cmd) do \ -{ \ - BLE_HS_LOG(DEBUG, "%sed %s command: %s; conn=%d ", \ - (is_tx) ? "tx" : "rx", (cmd_type), (cmd_name), (conn_handle)); \ - (log_cb)(cmd); \ - BLE_HS_LOG(DEBUG, "\n"); \ -} while (0) - -#define BLE_HS_LOG_EMPTY_CMD(is_tx, cmd_type, cmd_name, conn_handle) do \ -{ \ - BLE_HS_LOG(DEBUG, "%sed %s command: %s; conn=%d ", \ - (is_tx) ? "tx" : "rx", (cmd_type), (cmd_name), (conn_handle)); \ - BLE_HS_LOG(DEBUG, "\n"); \ -} while (0) - -#else - -#define BLE_HS_LOG_CMD(is_tx, cmd_type, cmd_name, conn_handle, log_cb, cmd) -#define BLE_HS_LOG_EMPTY_CMD(is_tx, cmd_type, cmd_name, conn_handle) - -#endif - #if MYNEWT_VAL(BLE_HS_DEBUG) #define BLE_HS_DBG_ASSERT(x) assert(x) #define BLE_HS_DBG_ASSERT_EVAL(x) assert(x) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_coc_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_coc_priv.h index 0a1a97b77..5ebdaa050 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_coc_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_coc_priv.h @@ -57,25 +57,46 @@ struct ble_l2cap_coc_srv { int ble_l2cap_coc_init(void); int ble_l2cap_coc_create_server(uint16_t psm, uint16_t mtu, ble_l2cap_event_fn *cb, void *cb_arg); -int ble_l2cap_coc_create_srv_chan(uint16_t conn_handle, uint16_t psm, +int ble_l2cap_coc_create_srv_chan(struct ble_hs_conn *conn, uint16_t psm, struct ble_l2cap_chan **chan); -struct ble_l2cap_chan * ble_l2cap_coc_chan_alloc(uint16_t conn_handle, +struct ble_l2cap_chan * ble_l2cap_coc_chan_alloc(struct ble_hs_conn *conn, uint16_t psm, uint16_t mtu, struct os_mbuf *sdu_rx, ble_l2cap_event_fn *cb, void *cb_arg); -void ble_l2cap_coc_cleanup_chan(struct ble_l2cap_chan *chan); +void ble_l2cap_coc_cleanup_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); void ble_l2cap_coc_le_credits_update(uint16_t conn_handle, uint16_t dcid, uint16_t credits); int ble_l2cap_coc_recv_ready(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_rx); int ble_l2cap_coc_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx); +void ble_l2cap_coc_set_new_mtu_mps(struct ble_l2cap_chan *chan, uint16_t mtu, uint16_t mps); #else -#define ble_l2cap_coc_init() 0 -#define ble_l2cap_coc_create_server(psm, mtu, cb, cb_arg) BLE_HS_ENOTSUP -#define ble_l2cap_coc_recv_ready(chan, sdu_rx) BLE_HS_ENOTSUP -#define ble_l2cap_coc_cleanup_chan(chan) -#define ble_l2cap_coc_send(chan, sdu_tx) BLE_HS_ENOTSUP +static inline int +ble_l2cap_coc_init(void) { + return 0; +} + +static inline int +ble_l2cap_coc_create_server(uint16_t psm, uint16_t mtu, + ble_l2cap_event_fn *cb, void *cb_arg) { + return BLE_HS_ENOTSUP; +} + +static inline int +ble_l2cap_coc_recv_ready(struct ble_l2cap_chan *chan, + struct os_mbuf *sdu_rx) { + return BLE_HS_ENOTSUP; +} + +static inline void +ble_l2cap_coc_cleanup_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) { +} + +static inline int +ble_l2cap_coc_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx) { + return BLE_HS_ENOTSUP; +} #endif #ifdef __cplusplus diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_priv.h index 640974d2a..e3409743b 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_priv.h @@ -65,8 +65,20 @@ struct ble_l2cap_chan { uint16_t conn_handle; uint16_t dcid; uint16_t scid; - uint16_t my_mtu; - uint16_t peer_mtu; /* 0 if not exchanged. */ + + /* Unions just to avoid confusion on MPS/MTU. + * In CoC context, L2CAP MTU is MPS + */ + union { + uint16_t my_mtu; + uint16_t my_coc_mps; + }; + + union { + uint16_t peer_mtu; + uint16_t peer_coc_mps; + }; + ble_l2cap_chan_flags flags; struct os_mbuf *rx_buf; @@ -102,7 +114,7 @@ struct os_mbuf *ble_l2cap_prepend_hdr(struct os_mbuf *om, uint16_t cid, uint16_t len); struct ble_l2cap_chan *ble_l2cap_chan_alloc(uint16_t conn_handle); -void ble_l2cap_chan_free(struct ble_l2cap_chan *chan); +void ble_l2cap_chan_free(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); bool ble_l2cap_is_mtu_req_sent(const struct ble_l2cap_chan *chan); @@ -118,6 +130,13 @@ void ble_l2cap_remove_rx(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); int ble_l2cap_init(void); +/* Below experimental API is available when BLE_VERSION >= 52 */ +int ble_l2cap_enhanced_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg); +int ble_l2cap_reconfig(struct ble_l2cap_chan *chans[], uint8_t num, uint16_t new_mtu); + #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_sig_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_sig_priv.h index 1a6fb8293..a698cd0d8 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_sig_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_l2cap_sig_priv.h @@ -74,6 +74,32 @@ struct ble_l2cap_sig_le_con_rsp { uint16_t result; } __attribute__((packed)); +struct ble_l2cap_sig_credit_base_connect_req { + uint16_t psm; + uint16_t mtu; + uint16_t mps; + uint16_t credits; + uint16_t scids[0]; +} __attribute__((packed)); + +struct ble_l2cap_sig_credit_base_connect_rsp { + uint16_t mtu; + uint16_t mps; + uint16_t credits; + uint16_t result; + uint16_t dcids[0]; +} __attribute__((packed)); + +struct ble_l2cap_sig_credit_base_reconfig_req { + uint16_t mtu; + uint16_t mps; + uint16_t dcids[0]; +} __attribute__((packed)); + +struct ble_l2cap_sig_credit_base_reconfig_rsp { + uint16_t result; +} __attribute__((packed)); + struct ble_l2cap_sig_disc_req { uint16_t dcid; uint16_t scid; @@ -107,9 +133,43 @@ int ble_l2cap_sig_disconnect(struct ble_l2cap_chan *chan); int ble_l2cap_sig_le_credits(uint16_t conn_handle, uint16_t scid, uint16_t credits); #else -#define ble_l2cap_sig_coc_connect(conn_handle, psm, mtu, sdu_rx, cb, cb_arg) \ - BLE_HS_ENOTSUP -#define ble_l2cap_sig_disconnect(chan) BLE_HS_ENOTSUP +static inline int +ble_l2cap_sig_coc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, + struct os_mbuf *sdu_rx, + ble_l2cap_event_fn *cb, void *cb_arg) +{ + return BLE_HS_ENOTSUP; +} + +static inline int +ble_l2cap_sig_disconnect(struct ble_l2cap_chan *chan) +{ + return BLE_HS_ENOTSUP; +} +#endif + +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) +int ble_l2cap_sig_ecoc_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg); +int ble_l2cap_sig_coc_reconfig(uint16_t conn_handle, struct ble_l2cap_chan *chans[], + uint8_t num, uint16_t new_mtu); +#else +static inline int +ble_l2cap_sig_ecoc_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg) +{ + return BLE_HS_ENOTSUP; +} +static inline int +ble_l2cap_sig_coc_reconfig(uint16_t conn_handle, struct ble_l2cap_chan *chans[], + uint8_t num, uint16_t new_mtu) +{ + return BLE_HS_ENOTSUP; +} #endif void ble_l2cap_sig_conn_broken(uint16_t conn_handle, int reason); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_sm_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_sm_priv.h index bbb4b03ae..def0a32f5 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_sm_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_sm_priv.h @@ -269,6 +269,8 @@ struct ble_sm_proc { struct ble_sm_public_key pub_key_peer; uint8_t mackey[16]; uint8_t dhkey[32]; + const struct ble_sm_sc_oob_data *oob_data_local; + const struct ble_sm_sc_oob_data *oob_data_remote; #endif }; @@ -294,44 +296,33 @@ void ble_sm_dbg_set_sc_keys(uint8_t *pubkey, uint8_t *privkey); int ble_sm_num_procs(void); -void ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd); -void ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd); -void ble_sm_pair_random_log(struct ble_sm_pair_random *cmd); -void ble_sm_pair_fail_log(struct ble_sm_pair_fail *cmd); -void ble_sm_enc_info_log(struct ble_sm_enc_info *cmd); -void ble_sm_master_id_log(struct ble_sm_master_id *cmd); -void ble_sm_id_info_log(struct ble_sm_id_info *cmd); -void ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd); -void ble_sm_sign_info_log(struct ble_sm_sign_info *cmd); -void ble_sm_sec_req_log(struct ble_sm_sec_req *cmd); -void ble_sm_public_key_log(struct ble_sm_public_key *cmd); -void ble_sm_dhkey_check_log(struct ble_sm_dhkey_check *cmd); - -int ble_sm_alg_s1(uint8_t *k, uint8_t *r1, uint8_t *r2, uint8_t *out); -int ble_sm_alg_c1(uint8_t *k, uint8_t *r, - uint8_t *preq, uint8_t *pres, +int ble_sm_alg_s1(const uint8_t *k, const uint8_t *r1, const uint8_t *r2, + uint8_t *out); +int ble_sm_alg_c1(const uint8_t *k, const uint8_t *r, + const uint8_t *preq, const uint8_t *pres, uint8_t iat, uint8_t rat, - uint8_t *ia, uint8_t *ra, + const uint8_t *ia, const uint8_t *ra, uint8_t *out_enc_data); -int ble_sm_alg_f4(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t z, - uint8_t *out_enc_data); -int ble_sm_alg_g2(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t *y, - uint32_t *passkey); -int ble_sm_alg_f5(uint8_t *w, uint8_t *n1, uint8_t *n2, uint8_t a1t, - uint8_t *a1, uint8_t a2t, uint8_t *a2, - uint8_t *mackey, uint8_t *ltk); +int ble_sm_alg_f4(const uint8_t *u, const uint8_t *v, const uint8_t *x, + uint8_t z, uint8_t *out_enc_data); +int ble_sm_alg_g2(const uint8_t *u, const uint8_t *v, const uint8_t *x, + const uint8_t *y, uint32_t *passkey); +int ble_sm_alg_f5(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, + uint8_t a1t, const uint8_t *a1, uint8_t a2t, + const uint8_t *a2, uint8_t *mackey, uint8_t *ltk); int ble_sm_alg_f6(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, const uint8_t *r, const uint8_t *iocap, uint8_t a1t, const uint8_t *a1, uint8_t a2t, const uint8_t *a2, uint8_t *check); -int ble_sm_alg_gen_dhkey(uint8_t *peer_pub_key_x, uint8_t *peer_pub_key_y, - uint8_t *our_priv_key, uint8_t *out_dhkey); +int ble_sm_alg_gen_dhkey(const uint8_t *peer_pub_key_x, + const uint8_t *peer_pub_key_y, + const uint8_t *our_priv_key, uint8_t *out_dhkey); int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv); void ble_sm_alg_ecc_init(void); -void ble_sm_enc_change_rx(struct hci_encrypt_change *evt); -void ble_sm_enc_key_refresh_rx(struct hci_encrypt_key_refresh *evt); -int ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt); +void ble_sm_enc_change_rx(const struct ble_hci_ev_enrypt_chg *ev); +void ble_sm_enc_key_refresh_rx(const struct ble_hci_ev_enc_key_refresh *ev); +int ble_sm_ltk_req_rx(const struct ble_hci_ev_le_subev_lt_key_req *ev); #if MYNEWT_VAL(BLE_SM_LEGACY) int ble_sm_lgcy_io_action(struct ble_sm_proc *proc, uint8_t *action); @@ -364,6 +355,10 @@ void ble_sm_sc_dhkey_check_exec(struct ble_sm_proc *proc, struct ble_sm_result *res, void *arg); void ble_sm_sc_dhkey_check_rx(uint16_t conn_handle, struct os_mbuf **rxom, struct ble_sm_result *res); +bool ble_sm_sc_oob_data_check(struct ble_sm_proc *proc, + bool oob_data_local_present, + bool oob_data_remote_present); +void ble_sm_sc_oob_confirm(struct ble_sm_proc *proc, struct ble_sm_result *res); void ble_sm_sc_init(void); #else #define ble_sm_sc_io_action(proc, action) (BLE_HS_ENOTSUP) @@ -399,12 +394,9 @@ int ble_sm_slave_initiate(uint16_t conn_handle); int ble_sm_enc_initiate(uint16_t conn_handle, uint8_t key_size, const uint8_t *ltk, uint16_t ediv, uint64_t rand_val, int auth); -int ble_sm_alg_encrypt(uint8_t *key, uint8_t *plaintext, uint8_t *enc_data); +int ble_sm_alg_encrypt(const uint8_t *key, const uint8_t *plaintext, + uint8_t *enc_data); int ble_sm_init(void); - -#define BLE_SM_LOG_CMD(is_tx, cmd_name, conn_handle, log_cb, cmd) \ - BLE_HS_LOG_CMD((is_tx), "sm", (cmd_name), (conn_handle), (log_cb), (cmd)) - #else #define ble_sm_enc_change_rx(evt) ((void)(evt)) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.c index f85cbc863..caf1b4f12 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.c @@ -6,6 +6,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "syscfg/syscfg.h" +#define MESH_LOG_MODULE BLE_MESH_TRANS_LOG #include #include @@ -13,10 +15,6 @@ #include "mesh/mesh.h" #include "mesh_priv.h" -#include "syscfg/syscfg.h" -#define BT_DBG_ENABLED (MYNEWT_VAL(BLE_MESH_DEBUG_TRANS)) -#include "host/ble_hs_log.h" - #include "crypto.h" #include "adv.h" #include "net.h" @@ -27,6 +25,7 @@ #include "settings.h" #include "transport.h" #include "testing.h" +#include "nodes.h" /* The transport layer needs at least three buffers for itself to avoid * deadlocks. Ensure that there are a sufficient number of advertising @@ -52,7 +51,7 @@ BUILD_ASSERT(CONFIG_BT_MESH_ADV_BUF_COUNT >= (CONFIG_BT_MESH_TX_SEG_MAX + 3)); #define SEQ_AUTH(iv_index, seq) (((u64_t)iv_index) << 24 | (u64_t)seq) /* Number of retransmit attempts (after the initial transmit) per segment */ -#define SEG_RETRANSMIT_ATTEMPTS 4 +#define SEG_RETRANSMIT_ATTEMPTS (MYNEWT_VAL(BLE_MESH_SEG_RETRANSMIT_ATTEMPTS)) /* "This timer shall be set to a minimum of 200 + 50 * TTL milliseconds.". * We use 400 since 300 is a common send duration for standard HCI, and we @@ -119,7 +118,7 @@ static int send_unseg(struct bt_mesh_net_tx *tx, struct os_mbuf *sdu, net_buf_reserve(buf, BT_MESH_NET_HDR_LEN); - if (tx->ctx->app_idx == BT_MESH_KEY_DEV) { + if (BT_MESH_IS_DEV_KEY(tx->ctx->app_idx)) { net_buf_add_u8(buf, UNSEG_HDR(0, 0)); } else { net_buf_add_u8(buf, UNSEG_HDR(1, tx->aid)); @@ -128,17 +127,32 @@ static int send_unseg(struct bt_mesh_net_tx *tx, struct os_mbuf *sdu, net_buf_add_mem(buf, sdu->om_data, sdu->om_len); if (IS_ENABLED(CONFIG_BT_MESH_FRIEND)) { + if (!bt_mesh_friend_queue_has_space(tx->sub->net_idx, + tx->src, tx->ctx->addr, + NULL, 1)) { + if (BT_MESH_ADDR_IS_UNICAST(tx->ctx->addr)) { + BT_ERR("Not enough space in Friend Queue"); + net_buf_unref(buf); + return -ENOBUFS; + } else { + BT_WARN("No space in Friend Queue"); + goto send; + } + } + if (bt_mesh_friend_enqueue_tx(tx, BT_MESH_FRIEND_PDU_SINGLE, - NULL, buf) && + NULL, 1, buf) && BT_MESH_ADDR_IS_UNICAST(tx->ctx->addr)) { /* PDUs for a specific Friend should only go * out through the Friend Queue. */ net_buf_unref(buf); + send_cb_finalize(cb, cb_data); return 0; } } +send: return bt_mesh_net_send(tx, buf, cb, cb_data); } @@ -318,7 +332,7 @@ static int send_seg(struct bt_mesh_net_tx *net_tx, struct os_mbuf *sdu, return -EBUSY; } - if (net_tx->ctx->app_idx == BT_MESH_KEY_DEV) { + if (BT_MESH_IS_DEV_KEY(net_tx->ctx->app_idx)) { seg_hdr = SEG_HDR(0, 0); } else { seg_hdr = SEG_HDR(1, net_tx->aid); @@ -340,10 +354,21 @@ static int send_seg(struct bt_mesh_net_tx *net_tx, struct os_mbuf *sdu, tx->ttl = net_tx->ctx->send_ttl; } - seq_zero = tx->seq_auth & 0x1fff; + seq_zero = tx->seq_auth & TRANS_SEQ_ZERO_MASK; BT_DBG("SeqZero 0x%04x", seq_zero); + if (IS_ENABLED(CONFIG_BT_MESH_FRIEND) && + !bt_mesh_friend_queue_has_space(tx->sub->net_idx, net_tx->src, + tx->dst, &tx->seq_auth, + tx->seg_n + 1) && + BT_MESH_ADDR_IS_UNICAST(tx->dst)) { + BT_ERR("Not enough space in Friend Queue for %u segments", + tx->seg_n + 1); + seg_tx_reset(tx); + return -ENOBUFS; + } + for (seg_o = 0; sdu->om_len; seg_o++) { struct os_mbuf *seg; u16_t len; @@ -371,8 +396,6 @@ static int send_seg(struct bt_mesh_net_tx *net_tx, struct os_mbuf *sdu, net_buf_add_mem(seg, sdu->om_data, len); net_buf_simple_pull(sdu, len); - tx->seg[seg_o] = net_buf_ref(seg); - if (IS_ENABLED(CONFIG_BT_MESH_FRIEND)) { enum bt_mesh_friend_pdu_type type; @@ -384,16 +407,19 @@ static int send_seg(struct bt_mesh_net_tx *net_tx, struct os_mbuf *sdu, if (bt_mesh_friend_enqueue_tx(net_tx, type, &tx->seq_auth, + tx->seg_n + 1, seg) && BT_MESH_ADDR_IS_UNICAST(net_tx->ctx->addr)) { /* PDUs for a specific Friend should only go * out through the Friend Queue. */ net_buf_unref(seg); - return 0; + continue; } } + tx->seg[seg_o] = net_buf_ref(seg); + BT_DBG("Sending %u/%u", seg_o, tx->seg_n); err = bt_mesh_net_send(net_tx, seg, @@ -406,6 +432,17 @@ static int send_seg(struct bt_mesh_net_tx *net_tx, struct os_mbuf *sdu, } } + /* This can happen if segments only went into the Friend Queue */ + if (IS_ENABLED(CONFIG_BT_MESH_FRIEND) && !tx->seg[0]) { + seg_tx_reset(tx); + + /* If there was a callback notify sending immediately since + * there's no other way to track this (at least currently) + * with the Friend Queue. + */ + send_cb_finalize(cb, cb_data); + } + if (IS_ENABLED(CONFIG_BT_MESH_LOW_POWER) && bt_mesh_lpn_established()) { bt_mesh_lpn_poll(); @@ -435,6 +472,7 @@ int bt_mesh_trans_send(struct bt_mesh_net_tx *tx, struct os_mbuf *msg, { const u8_t *key; u8_t *ad; + u8_t aid; int err; if (net_buf_simple_tailroom(msg) < 4) { @@ -444,33 +482,21 @@ int bt_mesh_trans_send(struct bt_mesh_net_tx *tx, struct os_mbuf *msg, if (msg->om_len > 11) { tx->ctx->send_rel = 1; + tx->ctx->send_rel = true; } BT_DBG("net_idx 0x%04x app_idx 0x%04x dst 0x%04x", tx->sub->net_idx, tx->ctx->app_idx, tx->ctx->addr); BT_DBG("len %u: %s", msg->om_len, bt_hex(msg->om_data, msg->om_len)); - if (tx->ctx->app_idx == BT_MESH_KEY_DEV) { - key = bt_mesh.dev_key; - tx->aid = 0; - } else { - struct bt_mesh_app_key *app_key; - - app_key = bt_mesh_app_key_find(tx->ctx->app_idx); - if (!app_key) { - return -EINVAL; - } - - if (tx->sub->kr_phase == BT_MESH_KR_PHASE_2 && - app_key->updated) { - key = app_key->keys[1].val; - tx->aid = app_key->keys[1].id; - } else { - key = app_key->keys[0].val; - tx->aid = app_key->keys[0].id; - } + err = bt_mesh_app_key_get(tx->sub, tx->ctx->app_idx, + tx->ctx->addr, &key, &aid); + if (err) { + return err; } + tx->aid = aid; + if (!tx->ctx->send_rel || net_buf_simple_tailroom(msg) < 8) { tx->aszmic = 0; } else { @@ -483,10 +509,9 @@ int bt_mesh_trans_send(struct bt_mesh_net_tx *tx, struct os_mbuf *msg, ad = NULL; } - err = bt_mesh_app_encrypt(key, tx->ctx->app_idx == BT_MESH_KEY_DEV, - tx->aszmic, msg, ad, tx->src, - tx->ctx->addr, bt_mesh.seq, - BT_MESH_NET_IVI_TX); + err = bt_mesh_app_encrypt(key, BT_MESH_IS_DEV_KEY(tx->ctx->app_idx), + tx->aszmic, msg, ad, tx->src, tx->ctx->addr, + bt_mesh.seq, BT_MESH_NET_IVI_TX); if (err) { return err; } @@ -500,26 +525,23 @@ int bt_mesh_trans_send(struct bt_mesh_net_tx *tx, struct os_mbuf *msg, return err; } -int bt_mesh_trans_resend(struct bt_mesh_net_tx *tx, struct os_mbuf *msg, - const struct bt_mesh_send_cb *cb, void *cb_data) +static void update_rpl(struct bt_mesh_rpl *rpl, struct bt_mesh_net_rx *rx) { - struct net_buf_simple_state state; - int err; + rpl->src = rx->ctx.addr; + rpl->seq = rx->seq; + rpl->old_iv = rx->old_iv; - net_buf_simple_save(msg, &state); - - if (tx->ctx->send_rel || msg->om_len > 15) { - err = send_seg(tx, msg, cb, cb_data); - } else { - err = send_unseg(tx, msg, cb, cb_data); + if (IS_ENABLED(CONFIG_BT_SETTINGS)) { + bt_mesh_store_rpl(rpl); } - - net_buf_simple_restore(msg, &state); - - return err; } -static bool is_replay(struct bt_mesh_net_rx *rx) +/* Check the Replay Protection List for a replay attempt. If non-NULL match + * parameter is given the RPL slot is returned but it is not immediately + * updated (needed for segmented messages), whereas if a NULL match is given + * the RPL is immediately updated (used for unsegmented messages). + */ +static bool is_replay(struct bt_mesh_net_rx *rx, struct bt_mesh_rpl **match) { int i; @@ -528,17 +550,20 @@ static bool is_replay(struct bt_mesh_net_rx *rx) return false; } + /* The RPL is used only for the local node */ + if (!rx->local_match) { + return false; + } + for (i = 0; i < ARRAY_SIZE(bt_mesh.rpl); i++) { struct bt_mesh_rpl *rpl = &bt_mesh.rpl[i]; /* Empty slot */ if (!rpl->src) { - rpl->src = rx->ctx.addr; - rpl->seq = rx->seq; - rpl->old_iv = rx->old_iv; - - if (IS_ENABLED(CONFIG_BT_SETTINGS)) { - bt_mesh_store_rpl(rpl); + if (match) { + *match = rpl; + } else { + update_rpl(rpl, rx); } return false; @@ -552,11 +577,10 @@ static bool is_replay(struct bt_mesh_net_rx *rx) if ((!rx->old_iv && rpl->old_iv) || rpl->seq < rx->seq) { - rpl->seq = rx->seq; - rpl->old_iv = rx->old_iv; - - if (IS_ENABLED(CONFIG_BT_SETTINGS)) { - bt_mesh_store_rpl(rpl); + if (match) { + *match = rpl; + } else { + update_rpl(rpl, rx); } return false; @@ -591,7 +615,6 @@ static int sdu_recv(struct bt_mesh_net_rx *rx, u32_t seq, u8_t hdr, if (IS_ENABLED(CONFIG_BT_MESH_FRIEND) && !rx->local_match) { BT_DBG("Ignoring PDU for LPN 0x%04x of this Friend", rx->ctx.recv_dst); - err = 0; goto done; } @@ -611,14 +634,45 @@ static int sdu_recv(struct bt_mesh_net_rx *rx, u32_t seq, u8_t hdr, rx->ctx.recv_dst, seq, BT_MESH_NET_IVI_RX(rx)); if (err) { - BT_ERR("Unable to decrypt with DevKey"); - err = -EINVAL; + BT_WARN("Unable to decrypt with local DevKey"); + } else { + rx->ctx.app_idx = BT_MESH_KEY_DEV_LOCAL; + bt_mesh_model_recv(rx, sdu); goto done; } - rx->ctx.app_idx = BT_MESH_KEY_DEV; - bt_mesh_model_recv(rx, sdu); - goto done; + if (IS_ENABLED(CONFIG_BT_MESH_PROVISIONER)) { + struct bt_mesh_node *node; + + /* + * There is no way of knowing if we should use our + * local DevKey or the remote DevKey to decrypt the + * message so we must try both. + */ + + node = bt_mesh_node_find(rx->ctx.addr); + if (node == NULL) { + BT_ERR("No node found for addr 0x%04x", + rx->ctx.addr); + return -EINVAL; + } + + net_buf_simple_init(sdu, 0); + err = bt_mesh_app_decrypt(node->dev_key, true, aszmic, + buf, sdu, ad, rx->ctx.addr, + rx->ctx.recv_dst, seq, + BT_MESH_NET_IVI_RX(rx)); + if (err) { + BT_ERR("Unable to decrypt with node DevKey"); + return -EINVAL; + } + + rx->ctx.app_idx = BT_MESH_KEY_DEV_REMOTE; + bt_mesh_model_recv(rx, sdu); + return 0; + } + + return -EINVAL; } for (i = 0; i < ARRAY_SIZE(bt_mesh.app_keys); i++) { @@ -675,7 +729,7 @@ static struct seg_tx *seg_tx_lookup(u16_t seq_zero, u8_t obo, u16_t addr) for (i = 0; i < ARRAY_SIZE(seg_tx); i++) { tx = &seg_tx[i]; - if ((tx->seq_auth & 0x1fff) != seq_zero) { + if ((tx->seq_auth & TRANS_SEQ_ZERO_MASK) != seq_zero) { continue; } @@ -713,7 +767,7 @@ static int trans_ack(struct bt_mesh_net_rx *rx, u8_t hdr, seq_zero = net_buf_simple_pull_be16(buf); obo = seq_zero >> 15; - seq_zero = (seq_zero >> 2) & 0x1fff; + seq_zero = (seq_zero >> 2) & TRANS_SEQ_ZERO_MASK; if (IS_ENABLED(CONFIG_BT_MESH_FRIEND) && rx->friend_match) { BT_DBG("Ack for LPN 0x%04x of this Friend", rx->ctx.recv_dst); @@ -876,7 +930,7 @@ static int trans_unseg(struct os_mbuf *buf, struct bt_mesh_net_rx *rx, return -EINVAL; } - if (rx->local_match && is_replay(rx)) { + if (is_replay(rx, NULL)) { BT_WARN("Replay: src 0x%04x dst 0x%04x seq 0x%06x", rx->ctx.addr, rx->ctx.recv_dst, (unsigned) rx->seq); return -EINVAL; @@ -945,7 +999,7 @@ int bt_mesh_ctl_send(struct bt_mesh_net_tx *tx, u8_t ctl_op, void *data, if (IS_ENABLED(CONFIG_BT_MESH_FRIEND)) { if (bt_mesh_friend_enqueue_tx(tx, BT_MESH_FRIEND_PDU_SINGLE, - seq_auth, buf) && + seq_auth, 1, buf) && BT_MESH_ADDR_IS_UNICAST(tx->ctx->addr)) { /* PDUs for a specific Friend should only go * out through the Friend Queue. @@ -973,7 +1027,7 @@ static int send_ack(struct bt_mesh_subnet *sub, u16_t src, u16_t dst, .src = obo ? bt_mesh_primary_addr() : src, .xmit = bt_mesh_net_transmit_get(), }; - u16_t seq_zero = *seq_auth & 0x1fff; + u16_t seq_zero = *seq_auth & TRANS_SEQ_ZERO_MASK; u8_t buf[6]; BT_DBG("SeqZero 0x%04x Block 0x%08x OBO %u", seq_zero, @@ -1156,10 +1210,12 @@ static struct seg_rx *seg_rx_alloc(struct bt_mesh_net_rx *net_rx, } static int trans_seg(struct os_mbuf *buf, struct bt_mesh_net_rx *net_rx, - enum bt_mesh_friend_pdu_type *pdu_type, u64_t *seq_auth) + enum bt_mesh_friend_pdu_type *pdu_type, u64_t *seq_auth, + u8_t *seg_count) { + struct bt_mesh_rpl *rpl = NULL; struct seg_rx *rx; - u8_t *hdr = buf->om_data; + u8_t *hdr = buf->om_data; u16_t seq_zero; u8_t seg_n; u8_t seg_o; @@ -1170,13 +1226,19 @@ static int trans_seg(struct os_mbuf *buf, struct bt_mesh_net_rx *net_rx, return -EINVAL; } + if (is_replay(net_rx, &rpl)) { + BT_WARN("Replay: src 0x%04x dst 0x%04x seq 0x%06x", + net_rx->ctx.addr, net_rx->ctx.recv_dst, net_rx->seq); + return -EINVAL; + } + BT_DBG("ASZMIC %u AKF %u AID 0x%02x", ASZMIC(hdr), AKF(hdr), AID(hdr)); net_buf_simple_pull(buf, 1); seq_zero = net_buf_simple_pull_be16(buf); seg_o = (seq_zero & 0x03) << 3; - seq_zero = (seq_zero >> 2) & 0x1fff; + seq_zero = (seq_zero >> 2) & TRANS_SEQ_ZERO_MASK; seg_n = net_buf_simple_pull_u8(buf); seg_o |= seg_n >> 5; seg_n &= 0x1f; @@ -1206,6 +1268,8 @@ static int trans_seg(struct os_mbuf *buf, struct bt_mesh_net_rx *net_rx, ((((net_rx->seq & BIT_MASK(14)) - seq_zero)) & BIT_MASK(13)))); + *seg_count = seg_n + 1; + /* Look for old RX sessions */ rx = seg_rx_find(net_rx, seq_auth); if (rx) { @@ -1227,9 +1291,15 @@ static int trans_seg(struct os_mbuf *buf, struct bt_mesh_net_rx *net_rx, if (rx->block == BLOCK_COMPLETE(rx->seg_n)) { BT_WARN("Got segment for already complete SDU"); + send_ack(net_rx->sub, net_rx->ctx.recv_dst, net_rx->ctx.addr, net_rx->ctx.send_ttl, seq_auth, rx->block, rx->obo); + + if (rpl) { + update_rpl(rpl, net_rx); + } + return -EALREADY; } @@ -1250,6 +1320,22 @@ static int trans_seg(struct os_mbuf *buf, struct bt_mesh_net_rx *net_rx, return -EMSGSIZE; } + /* Verify early that there will be space in the Friend Queue(s) in + * case this message is destined to an LPN of ours. + */ + if (IS_ENABLED(CONFIG_BT_MESH_FRIEND) && + net_rx->friend_match && !net_rx->local_match && + !bt_mesh_friend_queue_has_space(net_rx->sub->net_idx, + net_rx->ctx.addr, + net_rx->ctx.recv_dst, seq_auth, + *seg_count)) { + BT_ERR("No space in Friend Queue for %u segments", *seg_count); + send_ack(net_rx->sub, net_rx->ctx.recv_dst, net_rx->ctx.addr, + net_rx->ctx.send_ttl, seq_auth, 0, + net_rx->friend_match); + return -ENOBUFS; + } + /* Look for free slot for a new RX session */ rx = seg_rx_alloc(net_rx, hdr, seq_auth, seg_n); if (!rx) { @@ -1317,13 +1403,8 @@ found_rx: BT_DBG("Complete SDU"); - if (net_rx->local_match && is_replay(net_rx)) { - BT_WARN("Replay: src 0x%04x dst 0x%04x seq 0x%06x", - net_rx->ctx.addr, net_rx->ctx.recv_dst, - (unsigned) net_rx->seq); - /* Clear the segment's bit */ - rx->block &= ~BIT(seg_o); - return -EINVAL; + if (rpl) { + update_rpl(rpl, net_rx); } *pdu_type = BT_MESH_FRIEND_PDU_COMPLETE; @@ -1349,6 +1430,7 @@ int bt_mesh_trans_recv(struct os_mbuf *buf, struct bt_mesh_net_rx *rx) u64_t seq_auth = TRANS_SEQ_AUTH_NVAL; enum bt_mesh_friend_pdu_type pdu_type = BT_MESH_FRIEND_PDU_SINGLE; struct net_buf_simple_state state; + u8_t seg_count = 0; int err; if (IS_ENABLED(CONFIG_BT_MESH_FRIEND)) { @@ -1396,8 +1478,9 @@ int bt_mesh_trans_recv(struct os_mbuf *buf, struct bt_mesh_net_rx *rx) return 0; } - err = trans_seg(buf, rx, &pdu_type, &seq_auth); + err = trans_seg(buf, rx, &pdu_type, &seq_auth, &seg_count); } else { + seg_count = 1; err = trans_unseg(buf, rx, &seq_auth); } @@ -1422,9 +1505,11 @@ int bt_mesh_trans_recv(struct os_mbuf *buf, struct bt_mesh_net_rx *rx) if (IS_ENABLED(CONFIG_BT_MESH_FRIEND) && rx->friend_match && !err) { if (seq_auth == TRANS_SEQ_AUTH_NVAL) { - bt_mesh_friend_enqueue_rx(rx, pdu_type, NULL, buf); + bt_mesh_friend_enqueue_rx(rx, pdu_type, NULL, + seg_count, buf); } else { - bt_mesh_friend_enqueue_rx(rx, pdu_type, &seq_auth, buf); + bt_mesh_friend_enqueue_rx(rx, pdu_type, &seq_auth, + seg_count, buf); } } @@ -1483,3 +1568,101 @@ void bt_mesh_rpl_clear(void) BT_DBG(""); memset(bt_mesh.rpl, 0, sizeof(bt_mesh.rpl)); } + +void bt_mesh_heartbeat_send(void) +{ + struct bt_mesh_cfg_srv *cfg = bt_mesh_cfg_get(); + u16_t feat = 0U; + struct __packed { + u8_t init_ttl; + u16_t feat; + } hb; + struct bt_mesh_msg_ctx ctx = { + .net_idx = cfg->hb_pub.net_idx, + .app_idx = BT_MESH_KEY_UNUSED, + .addr = cfg->hb_pub.dst, + .send_ttl = cfg->hb_pub.ttl, + }; + struct bt_mesh_net_tx tx = { + .sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx), + .ctx = &ctx, + .src = bt_mesh_model_elem(cfg->model)->addr, + .xmit = bt_mesh_net_transmit_get(), + }; + + /* Do nothing if heartbeat publication is not enabled */ + if (cfg->hb_pub.dst == BT_MESH_ADDR_UNASSIGNED) { + return; + } + + hb.init_ttl = cfg->hb_pub.ttl; + + if (bt_mesh_relay_get() == BT_MESH_RELAY_ENABLED) { + feat |= BT_MESH_FEAT_RELAY; + } + + if (bt_mesh_gatt_proxy_get() == BT_MESH_GATT_PROXY_ENABLED) { + feat |= BT_MESH_FEAT_PROXY; + } + + if (bt_mesh_friend_get() == BT_MESH_FRIEND_ENABLED) { + feat |= BT_MESH_FEAT_FRIEND; + } + + if (bt_mesh_lpn_established()) { + feat |= BT_MESH_FEAT_LOW_POWER; + } + + hb.feat = sys_cpu_to_be16(feat); + + BT_DBG("InitTTL %u feat 0x%04x", cfg->hb_pub.ttl, feat); + + bt_mesh_ctl_send(&tx, TRANS_CTL_OP_HEARTBEAT, &hb, sizeof(hb), + NULL, NULL, NULL); +} + +int bt_mesh_app_key_get(const struct bt_mesh_subnet *subnet, u16_t app_idx, + u16_t addr, const u8_t **key, u8_t *aid) +{ + struct bt_mesh_app_key *app_key; + + if (app_idx == BT_MESH_KEY_DEV_LOCAL || + (app_idx == BT_MESH_KEY_DEV_REMOTE && + bt_mesh_elem_find(addr) != NULL)) { + *aid = 0; + *key = bt_mesh.dev_key; + return 0; + } else if (app_idx == BT_MESH_KEY_DEV_REMOTE) { + if (!IS_ENABLED(CONFIG_BT_MESH_PROVISIONER)) { + return -EINVAL; + } + + struct bt_mesh_node *node = bt_mesh_node_find(addr); + if (!node) { + return -EINVAL; + } + + *key = node->dev_key; + *aid = 0; + return 0; + } + + if (!subnet) { + return -EINVAL; + } + + app_key = bt_mesh_app_key_find(app_idx); + if (!app_key) { + return -ENOENT; + } + + if (subnet->kr_phase == BT_MESH_KR_PHASE_2 && app_key->updated) { + *key = app_key->keys[1].val; + *aid = app_key->keys[1].id; + } else { + *key = app_key->keys[0].val; + *aid = app_key->keys[0].id; + } + + return 0; +} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.h index ac6b3f8ee..eff768e9f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/transport.h @@ -13,6 +13,7 @@ #define BT_MESH_TX_SDU_MAX (CONFIG_BT_MESH_TX_SEG_MAX * 12) +#define TRANS_SEQ_ZERO_MASK ((u16_t)BIT_MASK(13)) #define TRANS_CTL_OP_MASK ((u8_t)BIT_MASK(7)) #define TRANS_CTL_OP(data) ((data)[0] & TRANS_CTL_OP_MASK) #define TRANS_CTL_HDR(op, seg) ((op & TRANS_CTL_OP_MASK) | (seg << 7)) @@ -97,3 +98,8 @@ int bt_mesh_trans_recv(struct os_mbuf *buf, struct bt_mesh_net_rx *rx); void bt_mesh_trans_init(void); void bt_mesh_rpl_clear(void); + +void bt_mesh_heartbeat_send(void); + +int bt_mesh_app_key_get(const struct bt_mesh_subnet *subnet, u16_t app_idx, + u16_t addr, const u8_t **key, u8_t *aid); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/gap/src/ble_svc_gap.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/gap/src/ble_svc_gap.c index 7a1e76f98..e79b2b872 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/gap/src/ble_svc_gap.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/gap/src/ble_svc_gap.c @@ -161,7 +161,7 @@ ble_svc_gap_appearance_write_access(struct ble_gatt_access_ctxt *ctxt) return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN; } - rc = ble_hs_mbuf_to_flat(ctxt->om, ble_svc_gap_appearance, om_len, NULL); + rc = ble_hs_mbuf_to_flat(ctxt->om, &ble_svc_gap_appearance, om_len, NULL); if (rc != 0) { return BLE_ATT_ERR_UNLIKELY; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/tps/src/ble_hs_hci_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/tps/src/ble_hs_hci_priv.h index ff3604727..362f12cbd 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/tps/src/ble_hs_hci_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/services/tps/src/ble_hs_hci_priv.h @@ -48,7 +48,7 @@ struct os_mbuf; struct ble_hs_hci_ack { int bha_status; /* A BLE_HS_E<...> error; NOT a naked HCI code. */ - uint8_t *bha_params; + const uint8_t *bha_params; int bha_params_len; uint16_t bha_opcode; uint8_t bha_hci_handle; @@ -81,11 +81,8 @@ struct hci_periodic_adv_params extern uint16_t ble_hs_hci_avail_pkts; -int ble_hs_hci_cmd_tx(uint16_t opcode, void *cmd, uint8_t cmd_len, - void *evt_buf, uint8_t evt_buf_len, - uint8_t *out_evt_buf_len); -int ble_hs_hci_cmd_tx_empty_ack(uint16_t opcode, void *cmd, uint8_t cmd_len); -void ble_hs_hci_rx_ack(uint8_t *ack_ev); +int ble_hs_hci_cmd_tx(uint16_t opcode, const void *cmd, uint8_t cmd_len, + void *rsp, uint8_t rsp_len); void ble_hs_hci_init(void); void ble_hs_hci_deinit(void); @@ -103,78 +100,11 @@ int ble_hs_hci_util_read_adv_tx_pwr(int8_t *out_pwr); int ble_hs_hci_util_rand(void *dst, int len); int ble_hs_hci_util_read_rssi(uint16_t conn_handle, int8_t *out_rssi); int ble_hs_hci_util_set_random_addr(const uint8_t *addr); -int ble_hs_hci_util_set_data_len(uint16_t conn_handle, uint16_t tx_octets, - uint16_t tx_time); int ble_hs_hci_util_data_hdr_strip(struct os_mbuf *om, struct hci_data_hdr *out_hdr); -int ble_hs_hci_evt_process(uint8_t *data); +int ble_hs_hci_evt_process(const struct ble_hci_ev *ev); -void ble_hs_hci_cmd_write_hdr(uint8_t ogf, uint16_t ocf, uint8_t len, - void *buf); -int ble_hs_hci_cmd_send_buf(uint16_t opcode, void *buf, uint8_t buf_len); -void ble_hs_hci_cmd_build_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_set_event_mask2(uint64_t event_mask, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_disconnect(uint16_t handle, uint8_t reason, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_read_rssi(uint16_t handle, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_le_set_host_chan_class(const uint8_t *chan_map, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_read_chan_map(uint16_t conn_handle, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_scan_rsp_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_params(const struct hci_adv_params *adv, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_read_buffer_size(void); -void ble_hs_hci_cmd_build_le_set_adv_enable(uint8_t enable, uint8_t *dst, - int dst_len); -int ble_hs_hci_cmd_le_set_adv_enable(uint8_t enable); -int ble_hs_hci_cmd_build_le_set_scan_params(uint8_t scan_type, - uint16_t scan_itvl, - uint16_t scan_window, - uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint8_t *dst, uint8_t dst_len); -int ble_hs_hci_cmd_le_set_scan_enable(uint8_t enable, uint8_t filter_dups); -int ble_hs_hci_cmd_build_le_create_connection( - const struct hci_create_conn *hcc, uint8_t *cmd, int cmd_len); -int ble_hs_hci_cmd_build_le_add_to_whitelist(const uint8_t *addr, - uint8_t addr_type, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_reset(void); -int ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(uint8_t fc_enable); -int ble_hs_hci_cmd_tx_host_buf_size(const struct hci_host_buf_size *cmd); -int ble_hs_hci_cmd_build_host_num_comp_pkts_entry( - const struct hci_host_num_comp_pkts_entry *entry, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_read_adv_pwr(void); -int ble_hs_hci_cmd_le_create_conn_cancel(void); -int ble_hs_hci_cmd_build_le_conn_update(const struct hci_conn_update *hcu, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_update(const struct hci_conn_update *hcu); -void ble_hs_hci_cmd_build_le_lt_key_req_reply( - const struct hci_lt_key_req_reply *hkr, uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_lt_key_req_neg_reply(uint16_t conn_handle, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_conn_param_reply( - const struct hci_conn_param_reply *hcr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_reply(const struct hci_conn_param_reply *hcr); -void ble_hs_hci_cmd_build_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn); -void ble_hs_hci_cmd_build_le_start_encrypt(const struct hci_start_encrypt *cmd, - uint8_t *dst, int dst_len); +int ble_hs_hci_cmd_send_buf(uint16_t opcode, const void *buf, uint8_t buf_len); int ble_hs_hci_set_buf_sz(uint16_t pktlen, uint16_t max_pkts); void ble_hs_hci_add_avail_pkts(uint16_t delta); @@ -184,145 +114,9 @@ uint16_t ble_hs_hci_util_handle_pb_bc_join(uint16_t handle, uint8_t pb, int ble_hs_hci_acl_tx_now(struct ble_hs_conn *conn, struct os_mbuf **om); int ble_hs_hci_acl_tx(struct ble_hs_conn *conn, struct os_mbuf **om); -int ble_hs_hci_cmd_build_set_data_len(uint16_t connection_handle, - uint16_t tx_octets, uint16_t tx_time, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_add_to_resolv_list( - const struct hci_add_dev_to_resolving_list *padd, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_remove_from_resolv_list( - uint8_t addr_type, const uint8_t *addr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_peer_resolv_addr( - uint8_t peer_identity_addr_type, const uint8_t *peer_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_lcl_resolv_addr( - uint8_t local_identity_addr_type, const uint8_t *local_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_addr_res_en( - uint8_t enable, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_resolv_priv_addr_timeout( - uint16_t timeout, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_random_addr(const uint8_t *addr, - uint8_t *dst, int dst_len); - -#if MYNEWT_VAL(BLE_EXT_ADV) -int ble_hs_hci_cmd_build_le_set_ext_scan_params(uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t phy_mask, - uint8_t phy_count, - struct ble_hs_hci_ext_scan_param *params[], - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_ext_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint16_t duration, - uint16_t period, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_ext_create_conn(const struct hci_ext_create_conn *hcc, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_set_random_addr(uint8_t handle, - const uint8_t *addr, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_data(uint8_t handle, uint8_t operation, - uint8_t frag_pref, struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_enable(uint8_t enable, uint8_t sets_num, - const struct hci_ext_adv_set *sets, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_params(uint8_t handle, - const struct hci_ext_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_remove(uint8_t handle, - uint8_t *cmd, int cmd_len); - -#if MYNEWT_VAL(BLE_PERIODIC_ADV) -int -ble_hs_hci_cmd_build_le_periodic_adv_params(uint8_t handle, - const struct hci_periodic_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_enable(uint8_t enable, - uint8_t handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_data(uint8_t handle, uint8_t operation, - struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_periodic_adv_create_sync(uint8_t filter_policy, - uint8_t adv_sid, - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint16_t skip, - uint16_t sync_timeout, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_terminate_sync(uint16_t sync_handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_add_dev_to_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_rem_dev_from_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -#endif - -#endif - -int ble_hs_hci_cmd_build_le_enh_recv_test(uint8_t rx_chan, uint8_t phy, - uint8_t mod_idx, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_enh_trans_test(uint8_t tx_chan, - uint8_t test_data_len, - uint8_t packet_payload_idx, - uint8_t phy, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_priv_mode(const uint8_t *addr, uint8_t addr_type, - uint8_t priv_mode, uint8_t *dst, - uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_read_phy(uint16_t conn_handle, uint8_t *dst, - int dst_len); - -int ble_hs_hci_cmd_build_le_set_default_phy(uint8_t tx_phys_mask, - uint8_t rx_phys_mask, - uint8_t *dst, int dst_len); - -int ble_hs_hci_cmd_build_le_set_phy(uint16_t conn_handle, uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint16_t phy_opts, - uint8_t *dst, int dst_len); - int ble_hs_hci_frag_num_mbufs(void); int ble_hs_hci_frag_num_mbufs_free(void); -#if MYNEWT_VAL(BLE_EXT_ADV) -#endif - -int ble_hs_hci_cmd_build_le_read_remote_feat(uint16_t handle, uint8_t *dst, - int dst_len); #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_clt.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_clt.c index b33f8375e..09fc9ea23 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_clt.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_clt.c @@ -43,8 +43,6 @@ ble_att_clt_rx_error(uint16_t conn_handle, struct os_mbuf **rxom) rsp = (struct ble_att_error_rsp *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "error rsp", conn_handle, ble_att_error_rsp_log, rsp); - ble_gattc_rx_err(conn_handle, le16toh(rsp->baep_handle), le16toh(rsp->baep_error_code)); @@ -96,8 +94,6 @@ ble_att_clt_tx_mtu(uint16_t conn_handle, uint16_t mtu) return rc; } - BLE_ATT_LOG_CMD(1, "mtu req", conn_handle, ble_att_mtu_cmd_log, req); - ble_hs_lock(); rc = ble_att_conn_chan_find(conn_handle, &conn, &chan); @@ -124,8 +120,6 @@ ble_att_clt_rx_mtu(uint16_t conn_handle, struct os_mbuf **rxom) if (rc == 0) { cmd = (struct ble_att_mtu_cmd *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "mtu rsp", conn_handle, ble_att_mtu_cmd_log, cmd); - ble_hs_lock(); rc = ble_att_conn_chan_find(conn_handle, NULL, &chan); @@ -172,9 +166,6 @@ ble_att_clt_tx_find_info(uint16_t conn_handle, uint16_t start_handle, req->bafq_start_handle = htole16(start_handle); req->bafq_end_handle = htole16(end_handle); - BLE_ATT_LOG_CMD(1, "find info req", conn_handle, - ble_att_find_info_req_log, req); - return ble_att_tx(conn_handle, txom); } @@ -247,9 +238,6 @@ ble_att_clt_rx_find_info(uint16_t conn_handle, struct os_mbuf **om) rsp = (struct ble_att_find_info_rsp *)(*om)->om_data; - BLE_ATT_LOG_CMD(0, "find info rsp", conn_handle, ble_att_find_info_rsp_log, - rsp); - /* Strip the response base from the front of the mbuf. */ os_mbuf_adj((*om), sizeof(*rsp)); @@ -306,9 +294,6 @@ ble_att_clt_tx_find_type_value(uint16_t conn_handle, uint16_t start_handle, req->bavq_attr_type = htole16(attribute_type); memcpy(req->bavq_value, attribute_value, value_len); - BLE_ATT_LOG_CMD(1, "find type value req", conn_handle, - ble_att_find_type_value_req_log, req); - return ble_att_tx(conn_handle, txom); } @@ -344,8 +329,6 @@ ble_att_clt_rx_find_type_value(uint16_t conn_handle, struct os_mbuf **rxom) struct ble_att_find_type_value_hinfo hinfo; int rc; - BLE_ATT_LOG_EMPTY_CMD(0, "find type value rsp", conn_handle); - /* Parse the Handles-Information-List field, passing each entry to GATT. */ rc = 0; while (OS_MBUF_PKTLEN(*rxom) > 0) { @@ -393,9 +376,6 @@ ble_att_clt_tx_read_type(uint16_t conn_handle, uint16_t start_handle, ble_uuid_flat(uuid, req->uuid); - BLE_ATT_LOG_CMD(1, "read type req", conn_handle, - ble_att_read_type_req_log, req); - return ble_att_tx(conn_handle, txom); } @@ -419,9 +399,6 @@ ble_att_clt_rx_read_type(uint16_t conn_handle, struct os_mbuf **rxom) rsp = (struct ble_att_read_type_rsp *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "read type rsp", conn_handle, ble_att_read_type_rsp_log, - rsp); - data_len = rsp->batp_length; /* Strip the response base from the front of the mbuf. */ @@ -487,8 +464,6 @@ ble_att_clt_tx_read(uint16_t conn_handle, uint16_t handle) return rc; } - BLE_ATT_LOG_CMD(1, "read req", conn_handle, ble_att_read_req_log, req); - return 0; } @@ -499,8 +474,6 @@ ble_att_clt_rx_read(uint16_t conn_handle, struct os_mbuf **rxom) return BLE_HS_ENOTSUP; #endif - BLE_ATT_LOG_EMPTY_CMD(0, "read rsp", conn_handle); - /* Pass the Attribute Value field to GATT. */ ble_gattc_rx_read_rsp(conn_handle, 0, rxom); return 0; @@ -538,9 +511,6 @@ ble_att_clt_tx_read_blob(uint16_t conn_handle, uint16_t handle, uint16_t offset) return rc; } - BLE_ATT_LOG_CMD(1, "read blob req", conn_handle, - ble_att_read_blob_req_log, req); - return 0; } @@ -551,8 +521,6 @@ ble_att_clt_rx_read_blob(uint16_t conn_handle, struct os_mbuf **rxom) return BLE_HS_ENOTSUP; #endif - BLE_ATT_LOG_EMPTY_CMD(0, "read blob rsp", conn_handle); - /* Pass the Attribute Value field to GATT. */ ble_gattc_rx_read_blob_rsp(conn_handle, 0, rxom); return 0; @@ -573,8 +541,6 @@ ble_att_clt_tx_read_mult(uint16_t conn_handle, const uint16_t *handles, struct os_mbuf *txom; int i; - BLE_ATT_LOG_EMPTY_CMD(1, "reqd mult req", conn_handle); - if (num_handles < 1) { return BLE_HS_EINVAL; } @@ -600,8 +566,6 @@ ble_att_clt_rx_read_mult(uint16_t conn_handle, struct os_mbuf **rxom) return BLE_HS_ENOTSUP; #endif - BLE_ATT_LOG_EMPTY_CMD(0, "read mult rsp", conn_handle); - /* Pass the Attribute Value field to GATT. */ ble_gattc_rx_read_mult_rsp(conn_handle, 0, rxom); return 0; @@ -637,9 +601,6 @@ ble_att_clt_tx_read_group_type(uint16_t conn_handle, req->bagq_end_handle = htole16(end_handle); ble_uuid_flat(uuid, req->uuid); - BLE_ATT_LOG_CMD(1, "read group type req", conn_handle, - ble_att_read_group_type_req_log, req); - return ble_att_tx(conn_handle, txom); } @@ -686,9 +647,6 @@ ble_att_clt_rx_read_group_type(uint16_t conn_handle, struct os_mbuf **rxom) rsp = (struct ble_att_read_group_type_rsp *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "read group type rsp", conn_handle, - ble_att_read_group_type_rsp_log, rsp); - len = rsp->bagp_length; /* Strip the base from the front of the response. */ @@ -735,8 +693,6 @@ ble_att_clt_tx_write_req(uint16_t conn_handle, uint16_t handle, req->bawq_handle = htole16(handle); os_mbuf_concat(txom2, txom); - BLE_ATT_LOG_CMD(1, "write req", conn_handle, ble_att_write_req_log, req); - return ble_att_tx(conn_handle, txom2); } @@ -774,8 +730,6 @@ ble_att_clt_tx_write_cmd(uint16_t conn_handle, uint16_t handle, cmd->handle = htole16(handle); os_mbuf_concat(txom2, txom); - BLE_ATT_LOG_CMD(1, "write cmd", conn_handle, ble_att_write_cmd_log, cmd); - return ble_att_tx(conn_handle, txom2); } @@ -786,8 +740,6 @@ ble_att_clt_rx_write(uint16_t conn_handle, struct os_mbuf **rxom) return BLE_HS_ENOTSUP; #endif - BLE_ATT_LOG_EMPTY_CMD(0, "write rsp", conn_handle); - /* No payload. */ ble_gattc_rx_write_rsp(conn_handle); return 0; @@ -835,9 +787,6 @@ ble_att_clt_tx_prep_write(uint16_t conn_handle, uint16_t handle, req->bapc_offset = htole16(offset); os_mbuf_concat(txom2, txom); - BLE_ATT_LOG_CMD(1, "prep write req", conn_handle, - ble_att_prep_write_cmd_log, req); - return ble_att_tx(conn_handle, txom2); err: @@ -866,8 +815,6 @@ ble_att_clt_rx_prep_write(uint16_t conn_handle, struct os_mbuf **rxom) } rsp = (struct ble_att_prep_write_cmd *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "prep write rsp", conn_handle, - ble_att_prep_write_cmd_log, rsp); handle = le16toh(rsp->bapc_handle); offset = le16toh(rsp->bapc_offset); @@ -908,9 +855,6 @@ ble_att_clt_tx_exec_write(uint16_t conn_handle, uint8_t flags) return rc; } - BLE_ATT_LOG_CMD(1, "exec write req", conn_handle, - ble_att_exec_write_req_log, req); - return 0; } @@ -921,8 +865,6 @@ ble_att_clt_rx_exec_write(uint16_t conn_handle, struct os_mbuf **rxom) return BLE_HS_ENOTSUP; #endif - BLE_ATT_LOG_EMPTY_CMD(0, "exec write rsp", conn_handle); - ble_gattc_rx_exec_write_rsp(conn_handle, 0); return 0; } @@ -957,8 +899,6 @@ ble_att_clt_tx_notify(uint16_t conn_handle, uint16_t handle, req->banq_handle = htole16(handle); os_mbuf_concat(txom2, txom); - BLE_ATT_LOG_CMD(1, "notify req", conn_handle, ble_att_notify_req_log, req); - return ble_att_tx(conn_handle, txom2); err: @@ -996,9 +936,6 @@ ble_att_clt_tx_indicate(uint16_t conn_handle, uint16_t handle, req->baiq_handle = htole16(handle); os_mbuf_concat(txom2, txom); - BLE_ATT_LOG_CMD(1, "indicate req", conn_handle, ble_att_indicate_req_log, - req); - return ble_att_tx(conn_handle, txom2); err: @@ -1013,8 +950,6 @@ ble_att_clt_rx_indicate(uint16_t conn_handle, struct os_mbuf **rxom) return BLE_HS_ENOTSUP; #endif - BLE_ATT_LOG_EMPTY_CMD(0, "indicate rsp", conn_handle); - /* No payload. */ ble_gattc_rx_indicate_rsp(conn_handle); return 0; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd.c index bad192df5..81b070f9c 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd.c @@ -135,13 +135,6 @@ ble_att_error_rsp_write(void *payload, int len, dst->baep_error_code = src->baep_error_code; } -void -ble_att_error_rsp_log(const struct ble_att_error_rsp *cmd) -{ - BLE_HS_LOG(DEBUG, "req_op=%d handle=0x%04x error_code=%d", - cmd->baep_req_op, cmd->baep_handle, cmd->baep_error_code); -} - void ble_att_mtu_req_parse(const void *payload, int len, struct ble_att_mtu_cmd *dst) @@ -189,12 +182,6 @@ ble_att_mtu_rsp_write(void *payload, int len, dst->bamc_mtu = htole16(src->bamc_mtu); } -void -ble_att_mtu_cmd_log(const struct ble_att_mtu_cmd *cmd) -{ - BLE_HS_LOG(DEBUG, "mtu=%d", cmd->bamc_mtu); -} - void ble_att_find_info_req_parse(const void *payload, int len, struct ble_att_find_info_req *dst) @@ -221,13 +208,6 @@ ble_att_find_info_req_write(void *payload, int len, dst->bafq_end_handle = htole16(src->bafq_end_handle); } -void -ble_att_find_info_req_log(const struct ble_att_find_info_req *cmd) -{ - BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x", - cmd->bafq_start_handle, cmd->bafq_end_handle); -} - void ble_att_find_info_rsp_parse(const void *payload, int len, struct ble_att_find_info_rsp *dst) @@ -252,12 +232,6 @@ ble_att_find_info_rsp_write(void *payload, int len, dst->bafp_format = src->bafp_format; } -void -ble_att_find_info_rsp_log(const struct ble_att_find_info_rsp *cmd) -{ - BLE_HS_LOG(DEBUG, "format=%d", cmd->bafp_format); -} - void ble_att_find_type_value_req_parse(const void *payload, int len, struct ble_att_find_type_value_req *dst) @@ -286,14 +260,6 @@ ble_att_find_type_value_req_write( dst->bavq_attr_type = htole16(src->bavq_attr_type); } -void -ble_att_find_type_value_req_log(const struct ble_att_find_type_value_req *cmd) -{ - BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x attr_type=%d", - cmd->bavq_start_handle, cmd->bavq_end_handle, - cmd->bavq_attr_type); -} - void ble_att_read_type_req_parse(const void *payload, int len, struct ble_att_read_type_req *dst) @@ -320,13 +286,6 @@ ble_att_read_type_req_write(void *payload, int len, dst->batq_end_handle = htole16(src->batq_end_handle); } -void -ble_att_read_type_req_log(const struct ble_att_read_type_req *cmd) -{ - BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x", - cmd->batq_start_handle, cmd->batq_end_handle); -} - void ble_att_read_type_rsp_parse(const void *payload, int len, struct ble_att_read_type_rsp *dst) @@ -351,12 +310,6 @@ ble_att_read_type_rsp_write(void *payload, int len, dst->batp_length = src->batp_length; } -void -ble_att_read_type_rsp_log(const struct ble_att_read_type_rsp *cmd) -{ - BLE_HS_LOG(DEBUG, "length=%d", cmd->batp_length); -} - void ble_att_read_req_parse(const void *payload, int len, struct ble_att_read_req *dst) @@ -381,12 +334,6 @@ ble_att_read_req_write(void *payload, int len, dst->barq_handle = htole16(src->barq_handle); } -void -ble_att_read_req_log(const struct ble_att_read_req *cmd) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->barq_handle); -} - void ble_att_read_blob_req_parse(const void *payload, int len, struct ble_att_read_blob_req *dst) @@ -413,13 +360,6 @@ ble_att_read_blob_req_write(void *payload, int len, dst->babq_offset = htole16(src->babq_offset); } -void -ble_att_read_blob_req_log(const struct ble_att_read_blob_req *cmd) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x offset=%d", cmd->babq_handle, - cmd->babq_offset); -} - void ble_att_read_mult_req_parse(const void *payload, int len) { @@ -474,13 +414,6 @@ ble_att_read_group_type_req_write( dst->bagq_end_handle = htole16(src->bagq_end_handle); } -void -ble_att_read_group_type_req_log(const struct ble_att_read_group_type_req *cmd) -{ - BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x", - cmd->bagq_start_handle, cmd->bagq_end_handle); -} - void ble_att_read_group_type_rsp_parse(const void *payload, int len, struct ble_att_read_group_type_rsp *dst) @@ -505,12 +438,6 @@ ble_att_read_group_type_rsp_write( dst->bagp_length = src->bagp_length; } -void -ble_att_read_group_type_rsp_log(const struct ble_att_read_group_type_rsp *cmd) -{ - BLE_HS_LOG(DEBUG, "length=%d", cmd->bagp_length); -} - void ble_att_write_req_parse(const void *payload, int len, struct ble_att_write_req *dst) @@ -556,18 +483,6 @@ ble_att_write_cmd_write(void *payload, int len, dst->bawq_handle = htole16(src->bawq_handle); } -void -ble_att_write_cmd_log(const struct ble_att_write_cmd *cmd) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->handle); -} - -void -ble_att_write_req_log(const struct ble_att_write_req *req) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x", req->bawq_handle); -} - void ble_att_prep_write_req_parse(const void *payload, int len, struct ble_att_prep_write_cmd *dst) @@ -620,13 +535,6 @@ ble_att_prep_write_rsp_write(void *payload, int len, dst->bapc_offset = htole16(src->bapc_offset); } -void -ble_att_prep_write_cmd_log(const struct ble_att_prep_write_cmd *cmd) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x offset=%d", cmd->bapc_handle, - cmd->bapc_offset); -} - void ble_att_exec_write_req_parse(const void *payload, int len, struct ble_att_exec_write_req *dst) @@ -651,12 +559,6 @@ ble_att_exec_write_req_write(void *payload, int len, dst->baeq_flags = src->baeq_flags; } -void -ble_att_exec_write_req_log(const struct ble_att_exec_write_req *cmd) -{ - BLE_HS_LOG(DEBUG, "flags=0x%02x", cmd->baeq_flags); -} - void ble_att_exec_write_rsp_parse(const void *payload, int len) { @@ -695,12 +597,6 @@ ble_att_notify_req_write(void *payload, int len, dst->banq_handle = htole16(src->banq_handle); } -void -ble_att_notify_req_log(const struct ble_att_notify_req *cmd) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->banq_handle); -} - void ble_att_indicate_req_parse(const void *payload, int len, struct ble_att_indicate_req *dst) @@ -725,12 +621,6 @@ ble_att_indicate_req_write(void *payload, int len, dst->baiq_handle = htole16(src->baiq_handle); } -void -ble_att_indicate_req_log(const struct ble_att_indicate_req *cmd) -{ - BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->baiq_handle); -} - void ble_att_indicate_rsp_parse(const void *payload, int len) { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd_priv.h index ddc952bff..70f33260a 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_cmd_priv.h @@ -357,7 +357,6 @@ void ble_att_error_rsp_parse(const void *payload, int len, struct ble_att_error_rsp *rsp); void ble_att_error_rsp_write(void *payload, int len, const struct ble_att_error_rsp *rsp); -void ble_att_error_rsp_log(const struct ble_att_error_rsp *cmd); void ble_att_mtu_req_parse(const void *payload, int len, struct ble_att_mtu_cmd *cmd); void ble_att_mtu_req_write(void *payload, int len, @@ -366,43 +365,34 @@ void ble_att_mtu_rsp_parse(const void *payload, int len, struct ble_att_mtu_cmd *cmd); void ble_att_mtu_rsp_write(void *payload, int len, const struct ble_att_mtu_cmd *cmd); -void ble_att_mtu_cmd_log(const struct ble_att_mtu_cmd *cmd); void ble_att_find_info_req_parse(const void *payload, int len, struct ble_att_find_info_req *req); void ble_att_find_info_req_write(void *payload, int len, const struct ble_att_find_info_req *req); -void ble_att_find_info_req_log(const struct ble_att_find_info_req *cmd); void ble_att_find_info_rsp_parse(const void *payload, int len, struct ble_att_find_info_rsp *rsp); void ble_att_find_info_rsp_write(void *payload, int len, const struct ble_att_find_info_rsp *rsp); -void ble_att_find_info_rsp_log(const struct ble_att_find_info_rsp *cmd); void ble_att_find_type_value_req_parse( const void *payload, int len, struct ble_att_find_type_value_req *req); void ble_att_find_type_value_req_write( void *payload, int len, const struct ble_att_find_type_value_req *req); -void ble_att_find_type_value_req_log( - const struct ble_att_find_type_value_req *cmd); void ble_att_read_type_req_parse(const void *payload, int len, struct ble_att_read_type_req *req); void ble_att_read_type_req_write(void *payload, int len, const struct ble_att_read_type_req *req); -void ble_att_read_type_req_log(const struct ble_att_read_type_req *cmd); void ble_att_read_type_rsp_parse(const void *payload, int len, struct ble_att_read_type_rsp *rsp); void ble_att_read_type_rsp_write(void *payload, int len, const struct ble_att_read_type_rsp *rsp); -void ble_att_read_type_rsp_log(const struct ble_att_read_type_rsp *cmd); void ble_att_read_req_parse(const void *payload, int len, struct ble_att_read_req *req); void ble_att_read_req_write(void *payload, int len, const struct ble_att_read_req *req); -void ble_att_read_req_log(const struct ble_att_read_req *cmd); void ble_att_read_blob_req_parse(const void *payload, int len, struct ble_att_read_blob_req *req); void ble_att_read_blob_req_write(void *payload, int len, const struct ble_att_read_blob_req *req); -void ble_att_read_blob_req_log(const struct ble_att_read_blob_req *cmd); void ble_att_read_mult_req_parse(const void *payload, int len); void ble_att_read_mult_req_write(void *payload, int len); void ble_att_read_mult_rsp_parse(const void *payload, int len); @@ -411,14 +401,10 @@ void ble_att_read_group_type_req_parse( const void *payload, int len, struct ble_att_read_group_type_req *req); void ble_att_read_group_type_req_write( void *payload, int len, const struct ble_att_read_group_type_req *req); -void ble_att_read_group_type_req_log( - const struct ble_att_read_group_type_req *cmd); void ble_att_read_group_type_rsp_parse( const void *payload, int len, struct ble_att_read_group_type_rsp *rsp); void ble_att_read_group_type_rsp_write( void *payload, int len, const struct ble_att_read_group_type_rsp *rsp); -void ble_att_read_group_type_rsp_log( - const struct ble_att_read_group_type_rsp *cmd); void ble_att_write_req_parse(const void *payload, int len, struct ble_att_write_req *req); void ble_att_write_req_write(void *payload, int len, @@ -427,20 +413,16 @@ void ble_att_write_cmd_parse(const void *payload, int len, struct ble_att_write_req *req); void ble_att_write_cmd_write(void *payload, int len, const struct ble_att_write_req *req); -void ble_att_write_cmd_log(const struct ble_att_write_cmd *cmd); -void ble_att_write_req_log(const struct ble_att_write_req *req); void ble_att_prep_write_req_parse(const void *payload, int len, struct ble_att_prep_write_cmd *cmd); void ble_att_prep_write_req_write(void *payload, int len, const struct ble_att_prep_write_cmd *cmd); -void ble_att_prep_write_cmd_log(const struct ble_att_prep_write_cmd *cmd); void ble_att_prep_write_rsp_parse(const void *payload, int len, struct ble_att_prep_write_cmd *cmd); void ble_att_prep_write_rsp_write(void *payload, int len, const struct ble_att_prep_write_cmd *cmd); void ble_att_exec_write_req_parse(const void *payload, int len, struct ble_att_exec_write_req *req); -void ble_att_exec_write_req_log(const struct ble_att_exec_write_req *cmd); void ble_att_exec_write_req_write(void *payload, int len, const struct ble_att_exec_write_req *req); void ble_att_exec_write_rsp_parse(const void *payload, int len); @@ -449,14 +431,12 @@ void ble_att_notify_req_parse(const void *payload, int len, struct ble_att_notify_req *req); void ble_att_notify_req_write(void *payload, int len, const struct ble_att_notify_req *req); -void ble_att_notify_req_log(const struct ble_att_notify_req *cmd); void ble_att_indicate_req_parse(const void *payload, int len, struct ble_att_indicate_req *req); void ble_att_indicate_req_write(void *payload, int len, const struct ble_att_indicate_req *req); void ble_att_indicate_rsp_parse(const void *payload, int len); void ble_att_indicate_rsp_write(void *payload, int len); -void ble_att_indicate_req_log(const struct ble_att_indicate_req *cmd); void *ble_att_cmd_prepare(uint8_t opcode, size_t len, struct os_mbuf *txom); void *ble_att_cmd_get(uint8_t opcode, size_t len, struct os_mbuf **txom); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_priv.h index 2201d4ddb..73b6aeab0 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_priv.h @@ -170,12 +170,6 @@ void ble_att_set_peer_mtu(struct ble_l2cap_chan *chan, uint16_t peer_mtu); uint16_t ble_att_chan_mtu(const struct ble_l2cap_chan *chan); int ble_att_init(void); -#define BLE_ATT_LOG_CMD(is_tx, cmd_name, conn_handle, log_cb, cmd) \ - BLE_HS_LOG_CMD((is_tx), "att", (cmd_name), (conn_handle), (log_cb), (cmd)) - -#define BLE_ATT_LOG_EMPTY_CMD(is_tx, cmd_name, conn_handle) \ - BLE_HS_LOG_EMPTY_CMD((is_tx), "att", (cmd_name), (conn_handle)) - /*** @svr */ int ble_att_svr_start(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_svr.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_svr.c index 045c1ca06..afcf90372 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_svr.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_att_svr.c @@ -578,8 +578,6 @@ ble_att_svr_tx_error_rsp(uint16_t conn_handle, struct os_mbuf *txom, rsp->baep_handle = htole16(handle); rsp->baep_error_code = error_code; - BLE_ATT_LOG_CMD(1, "error rsp", conn_handle, ble_att_error_rsp_log, rsp); - return ble_att_tx(conn_handle, txom); } @@ -706,8 +704,6 @@ ble_att_svr_build_mtu_rsp(uint16_t conn_handle, struct os_mbuf **rxom, cmd->bamc_mtu = htole16(mtu); - BLE_ATT_LOG_CMD(1, "mtu rsp", conn_handle, ble_att_mtu_cmd_log, cmd); - rc = 0; done: @@ -735,7 +731,6 @@ ble_att_svr_rx_mtu(uint16_t conn_handle, struct os_mbuf **rxom) } cmd = (struct ble_att_mtu_cmd *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "mtu req", conn_handle, ble_att_mtu_cmd_log, cmd); mtu = le16toh(cmd->bamc_mtu); @@ -889,9 +884,6 @@ ble_att_svr_build_find_info_rsp(uint16_t conn_handle, goto done; } - BLE_ATT_LOG_CMD(1, "find info rsp", conn_handle, ble_att_find_info_rsp_log, - rsp); - rc = 0; done: @@ -927,9 +919,6 @@ ble_att_svr_rx_find_info(uint16_t conn_handle, struct os_mbuf **rxom) start_handle = le16toh(req->bafq_start_handle); end_handle = le16toh(req->bafq_end_handle); - BLE_ATT_LOG_CMD(0, "find info req", conn_handle, ble_att_find_info_req_log, - req); - /* Tx error response if start handle is greater than end handle or is equal * to 0 (Vol. 3, Part F, 3.4.3.1). */ @@ -1202,8 +1191,6 @@ ble_att_svr_build_find_type_value_rsp(uint16_t conn_handle, goto done; } - BLE_ATT_LOG_EMPTY_CMD(1, "find type value rsp", conn_handle); - rc = 0; done: @@ -1240,8 +1227,6 @@ ble_att_svr_rx_find_type_value(uint16_t conn_handle, struct os_mbuf **rxom) start_handle = le16toh(req->bavq_start_handle); end_handle = le16toh(req->bavq_end_handle); attr_type = (ble_uuid16_t) BLE_UUID16_INIT(le16toh(req->bavq_attr_type)); - BLE_ATT_LOG_CMD(0, "find type value req", conn_handle, - ble_att_find_type_value_req_log, req); /* Tx error response if start handle is greater than end handle or is equal * to 0 (Vol. 3, Part F, 3.4.3.3). @@ -1377,8 +1362,6 @@ done: /* Fill the response base. */ rsp->batp_length = htole16(sizeof(*data) + prev_attr_len); - BLE_ATT_LOG_CMD(1, "read type rsp", conn_handle, - ble_att_read_type_rsp_log, rsp); } *out_txom = txom; @@ -1421,9 +1404,6 @@ ble_att_svr_rx_read_type(uint16_t conn_handle, struct os_mbuf **rxom) req = (struct ble_att_read_type_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "read type req", conn_handle, ble_att_read_type_req_log, - req); - start_handle = le16toh(req->batq_start_handle); end_handle = le16toh(req->batq_end_handle); @@ -1481,7 +1461,6 @@ ble_att_svr_rx_read(uint16_t conn_handle, struct os_mbuf **rxom) } req = (struct ble_att_read_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "read req", conn_handle, ble_att_read_req_log, req); err_handle = le16toh(req->barq_handle); @@ -1531,8 +1510,6 @@ ble_att_svr_rx_read_blob(uint16_t conn_handle, struct os_mbuf **rxom) } req = (struct ble_att_read_blob_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "read blob req", conn_handle, ble_att_read_blob_req_log, - req); err_handle = le16toh(req->babq_handle); offset = le16toh(req->babq_offset); @@ -1554,8 +1531,6 @@ ble_att_svr_rx_read_blob(uint16_t conn_handle, struct os_mbuf **rxom) goto done; } - BLE_ATT_LOG_EMPTY_CMD(1, "read blob rsp", conn_handle); - rc = 0; done: @@ -1618,7 +1593,6 @@ ble_att_svr_build_read_mult_rsp(uint16_t conn_handle, } } - BLE_ATT_LOG_EMPTY_CMD(1, "read mult rsp", conn_handle); rc = 0; done: @@ -1638,8 +1612,6 @@ ble_att_svr_rx_read_mult(uint16_t conn_handle, struct os_mbuf **rxom) uint8_t att_err; int rc; - BLE_ATT_LOG_EMPTY_CMD(0, "read mult req", conn_handle); - /* Initialize some values in case of early error. */ txom = NULL; err_handle = 0; @@ -1875,8 +1847,6 @@ done: } if (rc == 0 || rc == BLE_HS_EMSGSIZE) { - BLE_ATT_LOG_CMD(1, "read group type rsp", conn_handle, - ble_att_read_group_type_rsp_log, rsp); rc = 0; } @@ -1918,8 +1888,6 @@ ble_att_svr_rx_read_group_type(uint16_t conn_handle, struct os_mbuf **rxom) } req = (struct ble_att_read_group_type_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "read group type req", conn_handle, - ble_att_read_group_type_req_log, req); start_handle = le16toh(req->bagq_start_handle); end_handle = le16toh(req->bagq_end_handle); @@ -2017,9 +1985,6 @@ ble_att_svr_rx_write(uint16_t conn_handle, struct os_mbuf **rxom) req = (struct ble_att_write_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "write req", conn_handle, - ble_att_write_req_log, req); - handle = le16toh(req->bawq_handle); /* Allocate the write response. This must be done prior to processing the @@ -2038,8 +2003,6 @@ ble_att_svr_rx_write(uint16_t conn_handle, struct os_mbuf **rxom) goto done; } - BLE_ATT_LOG_EMPTY_CMD(1, "write rsp", conn_handle); - rc = 0; done: @@ -2066,8 +2029,6 @@ ble_att_svr_rx_write_no_rsp(uint16_t conn_handle, struct os_mbuf **rxom) } req = (struct ble_att_write_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "write cmd", conn_handle, - ble_att_write_req_log, req); handle = le16toh(req->bawq_handle); @@ -2362,9 +2323,6 @@ ble_att_svr_rx_prep_write(uint16_t conn_handle, struct os_mbuf **rxom) req = (struct ble_att_prep_write_cmd *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "prep write req", conn_handle, - ble_att_prep_write_cmd_log, req); - err_handle = le16toh(req->bapc_handle); attr_entry = ble_att_svr_find_by_handle(le16toh(req->bapc_handle)); @@ -2412,9 +2370,6 @@ ble_att_svr_rx_prep_write(uint16_t conn_handle, struct os_mbuf **rxom) os_mbuf_prepend(txom, 1); txom->om_data[0] = BLE_ATT_OP_PREP_WRITE_RSP; - BLE_ATT_LOG_CMD(1, "prep write rsp", conn_handle, - ble_att_prep_write_cmd_log, req); - rc = 0; done: @@ -2450,8 +2405,6 @@ ble_att_svr_rx_exec_write(uint16_t conn_handle, struct os_mbuf **rxom) } req = (struct ble_att_exec_write_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "exec write req", conn_handle, - ble_att_exec_write_req_log, req); flags = req->baeq_flags; @@ -2518,9 +2471,6 @@ ble_att_svr_rx_notify(uint16_t conn_handle, struct os_mbuf **rxom) req = (struct ble_att_notify_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "notify req", conn_handle, - ble_att_notify_req_log, req); - handle = le16toh(req->banq_handle); if (handle == 0) { @@ -2592,8 +2542,6 @@ ble_att_svr_rx_indicate(uint16_t conn_handle, struct os_mbuf **rxom) } req = (struct ble_att_indicate_req *)(*rxom)->om_data; - BLE_ATT_LOG_CMD(0, "indicate req", conn_handle, - ble_att_indicate_req_log, req); handle = le16toh(req->baiq_handle); @@ -2616,8 +2564,6 @@ ble_att_svr_rx_indicate(uint16_t conn_handle, struct os_mbuf **rxom) ble_gap_notify_rx_event(conn_handle, handle, *rxom, 1); *rxom = NULL; - BLE_ATT_LOG_EMPTY_CMD(1, "indicate rsp", conn_handle); - rc = 0; done: diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap.c index d77ff6a87..17ff4eae0 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap.c @@ -90,6 +90,7 @@ #define BLE_GAP_UPDATE_TIMEOUT_MS 40000 /* ms */ +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) static const struct ble_gap_conn_params ble_gap_conn_params_dflt = { .scan_itvl = 0x0010, .scan_window = 0x0010, @@ -100,6 +101,22 @@ static const struct ble_gap_conn_params ble_gap_conn_params_dflt = { .min_ce_len = BLE_GAP_INITIAL_CONN_MIN_CE_LEN, .max_ce_len = BLE_GAP_INITIAL_CONN_MAX_CE_LEN, }; +#endif + +#if NIMBLE_BLE_CONNECT && CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT +struct ble_gap_connect_reattempt_ctxt { + uint8_t own_addr_type; + ble_addr_t peer_addr; + int32_t duration_ms; + struct ble_gap_conn_params conn_params; + ble_gap_event_fn *cb; + void *cb_arg; +}; + +static struct ble_gap_connect_reattempt_ctxt ble_conn_reattempt[MYNEWT_VAL(BLE_MAX_CONNECTIONS)]; +static uint16_t reattempt_idx; +static bool conn_cookie_enabled; +#endif /** * The state of the in-progress master connection. If no master connection is @@ -165,6 +182,7 @@ struct ble_gap_slave_state { unsigned int configured:1; /** If instance is configured */ unsigned int scannable:1; unsigned int directed:1; + unsigned int high_duty_directed:1; unsigned int legacy_pdu:1; unsigned int rnd_addr_set:1; #if MYNEWT_VAL(BLE_PERIODIC_ADV) @@ -206,15 +224,23 @@ static struct os_mempool ble_gap_update_entry_pool; static struct ble_gap_update_entry_list ble_gap_update_entries; static void ble_gap_update_entry_free(struct ble_gap_update_entry *entry); + +#if NIMBLE_BLE_CONNECT static struct ble_gap_update_entry * ble_gap_update_entry_find(uint16_t conn_handle, struct ble_gap_update_entry **out_prev); -static struct ble_gap_update_entry * -ble_gap_update_entry_remove(uint16_t conn_handle); + static void ble_gap_update_l2cap_cb(uint16_t conn_handle, int status, void *arg); +#endif +static struct ble_gap_update_entry * +ble_gap_update_entry_remove(uint16_t conn_handle); + +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) static int ble_gap_adv_enable_tx(int enable); +#endif + static int ble_gap_conn_cancel_tx(void); #if NIMBLE_BLE_SCAN && !MYNEWT_VAL(BLE_EXT_ADV) @@ -290,7 +316,7 @@ ble_gap_log_duration(int32_t duration_ms) } #endif -#if !MYNEWT_VAL(BLE_EXT_ADV) +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) && !MYNEWT_VAL(BLE_EXT_ADV) static void ble_gap_log_conn(uint8_t own_addr_type, const ble_addr_t *peer_addr, const struct ble_gap_conn_params *params) @@ -322,6 +348,7 @@ ble_gap_log_disc(uint8_t own_addr_type, int32_t duration_ms, } #endif +#if NIMBLE_BLE_CONNECT static void ble_gap_log_update(uint16_t conn_handle, const struct ble_gap_upd_params *params) @@ -333,7 +360,9 @@ ble_gap_log_update(uint16_t conn_handle, params->latency, params->supervision_timeout, params->min_ce_len, params->max_ce_len); } +#endif +#if MYNEWT_VAL(BLE_WHITELIST) static void ble_gap_log_wl(const ble_addr_t *addr, uint8_t white_list_count) { @@ -347,6 +376,7 @@ ble_gap_log_wl(const ble_addr_t *addr, uint8_t white_list_count) BLE_HS_LOG(INFO, "} "); } } +#endif #if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) static void @@ -527,10 +557,9 @@ ble_gap_set_priv_mode(const ble_addr_t *peer_addr, uint8_t priv_mode) int ble_gap_read_le_phy(uint16_t conn_handle, uint8_t *tx_phy, uint8_t *rx_phy) { + struct ble_hci_le_rd_phy_cp cmd; + struct ble_hci_le_rd_phy_rp rsp; struct ble_hs_conn *conn; - uint8_t buf[BLE_HCI_LE_RD_PHY_LEN]; - uint8_t rspbuf[4]; - uint8_t rsplen; int rc; ble_hs_lock(); @@ -541,25 +570,21 @@ ble_gap_read_le_phy(uint16_t conn_handle, uint8_t *tx_phy, uint8_t *rx_phy) return BLE_HS_ENOTCONN; } - rc = ble_hs_hci_cmd_build_le_read_phy(conn_handle, buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + cmd.conn_handle = htole16(conn_handle); rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RD_PHY), - buf, sizeof(buf), rspbuf, sizeof(rspbuf), &rsplen); + &cmd, sizeof(cmd), &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (rsplen != sizeof(rspbuf)) { + /* sanity check for response */ + if (le16toh(rsp.conn_handle) != conn_handle) { return BLE_HS_ECONTROLLER; } - /* First two octets is conn_handle. We can ignore it */ - - *tx_phy = rspbuf[2]; - *rx_phy = rspbuf[3]; + *tx_phy = rsp.tx_phy; + *rx_phy = rsp.rx_phy; return 0; } @@ -567,27 +592,45 @@ ble_gap_read_le_phy(uint16_t conn_handle, uint8_t *tx_phy, uint8_t *rx_phy) int ble_gap_set_prefered_default_le_phy(uint8_t tx_phys_mask, uint8_t rx_phys_mask) { - uint8_t buf[BLE_HCI_LE_SET_DEFAULT_PHY_LEN]; - int rc; + struct ble_hci_le_set_default_phy_cp cmd; - rc = ble_hs_hci_cmd_build_le_set_default_phy(tx_phys_mask, rx_phys_mask, - buf, sizeof(buf)); - if (rc != 0) { - return rc; + if (tx_phys_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | + BLE_HCI_LE_PHY_2M_PREF_MASK | + BLE_HCI_LE_PHY_CODED_PREF_MASK)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + if (rx_phys_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | + BLE_HCI_LE_PHY_2M_PREF_MASK | + BLE_HCI_LE_PHY_CODED_PREF_MASK)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + memset(&cmd, 0, sizeof(cmd)); + + if (tx_phys_mask == 0) { + cmd.all_phys |= BLE_HCI_LE_PHY_NO_TX_PREF_MASK; + } else { + cmd.tx_phys = tx_phys_mask; + } + + if (rx_phys_mask == 0) { + cmd.all_phys |= BLE_HCI_LE_PHY_NO_RX_PREF_MASK; + } else { + cmd.rx_phys = rx_phys_mask; } return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_DEFAULT_PHY), - buf, sizeof(buf), NULL, 0, NULL); + &cmd, sizeof(cmd), NULL, 0); } int ble_gap_set_prefered_le_phy(uint16_t conn_handle, uint8_t tx_phys_mask, uint8_t rx_phys_mask, uint16_t phy_opts) { + struct ble_hci_le_set_phy_cp cmd; struct ble_hs_conn *conn; - uint8_t buf[BLE_HCI_LE_SET_PHY_LEN]; - int rc; ble_hs_lock(); conn = ble_hs_conn_find(conn_handle); @@ -597,16 +640,41 @@ ble_gap_set_prefered_le_phy(uint16_t conn_handle, uint8_t tx_phys_mask, return BLE_HS_ENOTCONN; } - rc = ble_hs_hci_cmd_build_le_set_phy(conn_handle, tx_phys_mask, - rx_phys_mask, phy_opts, buf, - sizeof(buf)); - if (rc != 0) { - return rc; + if (tx_phys_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | + BLE_HCI_LE_PHY_2M_PREF_MASK | + BLE_HCI_LE_PHY_CODED_PREF_MASK)) { + return BLE_ERR_INV_HCI_CMD_PARMS; } - return ble_hs_hci_cmd_tx( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PHY), - buf, sizeof(buf), NULL, 0, NULL); + if (rx_phys_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | + BLE_HCI_LE_PHY_2M_PREF_MASK | + BLE_HCI_LE_PHY_CODED_PREF_MASK)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + if (phy_opts > BLE_HCI_LE_PHY_CODED_S8_PREF) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + memset(&cmd, 0, sizeof(cmd)); + cmd.conn_handle = htole16(conn_handle); + + if (tx_phys_mask == 0) { + cmd.all_phys |= BLE_HCI_LE_PHY_NO_TX_PREF_MASK; + } else { + cmd.tx_phys = tx_phys_mask; + } + + if (rx_phys_mask == 0) { + cmd.all_phys |= BLE_HCI_LE_PHY_NO_RX_PREF_MASK; + } else { + cmd.rx_phys = rx_phys_mask; + } + + cmd.phy_options = htole16(phy_opts); + + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PHY), + &cmd, sizeof(cmd), NULL, 0); } /***************************************************************************** @@ -679,6 +747,7 @@ ble_gap_is_preempted(void) return false; } +#if NIMBLE_BLE_CONNECT static void ble_gap_master_reset_state(void) { @@ -688,6 +757,7 @@ ble_gap_master_reset_state(void) ble_hs_timer_resched(); } +#endif static void ble_gap_slave_reset_state(uint8_t instance) @@ -700,6 +770,7 @@ ble_gap_slave_reset_state(uint8_t instance) #endif } +#if NIMBLE_BLE_CONNECT static bool ble_gap_has_client(struct ble_gap_master_state *out_state) { @@ -725,6 +796,7 @@ ble_gap_master_extract_state(struct ble_gap_master_state *out_state, ble_hs_unlock(); } +#endif static void ble_gap_slave_extract_cb(uint8_t instance, @@ -747,41 +819,24 @@ ble_gap_adv_finished(uint8_t instance, int reason, uint16_t conn_handle, ble_gap_event_fn *cb; void *cb_arg; + memset(&event, 0, sizeof event); + event.type = BLE_GAP_EVENT_ADV_COMPLETE; + event.adv_complete.reason = reason; +#if MYNEWT_VAL(BLE_EXT_ADV) + event.adv_complete.instance = instance; + event.adv_complete.conn_handle = conn_handle; + event.adv_complete.num_ext_adv_events = num_events; +#endif + + ble_gap_event_listener_call(&event); + ble_gap_slave_extract_cb(instance, &cb, &cb_arg); if (cb != NULL) { - memset(&event, 0, sizeof event); - event.type = BLE_GAP_EVENT_ADV_COMPLETE; - event.adv_complete.reason = reason; -#if MYNEWT_VAL(BLE_EXT_ADV) - event.adv_complete.instance = instance; - event.adv_complete.conn_handle = conn_handle; - event.adv_complete.num_ext_adv_events = num_events; -#endif cb(&event, cb_arg); } } -#if MYNEWT_VAL(BLE_EXT_ADV) -static void -ble_gap_scan_req_rcvd(uint8_t instance, uint8_t scan_addr_type, - uint8_t *scan_addr) -{ - struct ble_gap_event event; - ble_gap_event_fn *cb; - void *cb_arg; - - ble_gap_slave_extract_cb(instance, &cb, &cb_arg); - if (cb != NULL) { - memset(&event, 0, sizeof event); - event.type = BLE_GAP_EVENT_SCAN_REQ_RCVD; - event.scan_req_rcvd.instance = instance; - event.scan_req_rcvd.scan_addr.type = scan_addr_type; - memcpy(event.scan_req_rcvd.scan_addr.val, scan_addr, 6); - cb(&event, cb_arg); - } -} -#endif - +#if NIMBLE_BLE_CONNECT static int ble_gap_master_connect_failure(int status) { @@ -825,6 +880,95 @@ ble_gap_master_connect_cancelled(void) } } +#if CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT +static void +ble_gap_update_notify(uint16_t conn_handle, int status); + +static int +ble_gap_find_retry_conn_param(const struct ble_gap_conn_desc *conn_desc) +{ + int i; + + for(i = 0; i < MYNEWT_VAL(BLE_MAX_CONNECTIONS); i++) { + if (memcmp(&ble_conn_reattempt[i].peer_addr, &conn_desc->peer_ota_addr, sizeof(ble_addr_t)) == 0) { + return i; + } + } + /* No matching entry found. Return invalid index */ + return MYNEWT_VAL(BLE_MAX_CONNECTIONS); +} + +int +ble_gap_master_connect_reattempt(uint16_t conn_handle) +{ + struct ble_gap_snapshot snap; + struct ble_gap_conn_desc conn; + struct ble_gap_update_entry *entry; + int idx; + int rc = BLE_HS_EUNKNOWN; + + snap.desc = &conn; + rc = ble_gap_find_snapshot(conn_handle, &snap); + if (rc != 0) { + return rc; + } + + if (conn.role == BLE_GAP_ROLE_MASTER) { + idx = ble_gap_find_retry_conn_param(&conn); + if (idx >= MYNEWT_VAL(BLE_MAX_CONNECTIONS)) { + return BLE_HS_EINVAL; + } + + /* XXX Connection state in host needs to be removed and cleaned + * up to validate the connection when re-attempting. */ + + /* If there was a connection update in progress, indicate to the + * application that it did not complete. + */ + ble_hs_lock(); + entry = ble_gap_update_entry_remove(conn_handle); + ble_hs_unlock(); + + if (entry != NULL) { + ble_gap_update_notify(conn_handle, BLE_ERR_CONN_ESTABLISHMENT); + ble_gap_update_entry_free(entry); + } + + ble_l2cap_sig_conn_broken(conn_handle, BLE_ERR_CONN_ESTABLISHMENT); + ble_sm_connection_broken(conn_handle); + ble_gatts_connection_broken(conn_handle); + ble_gattc_connection_broken(conn_handle); + ble_hs_flow_connection_broken(conn_handle);; + + rc = ble_hs_atomic_conn_delete(conn_handle); + if (rc != 0) { + return rc; + } + + /* Utilize cookie to get the index updated correctly for re-attempt */ + ble_conn_reattempt[idx].cb_arg = &conn; + conn_cookie_enabled = true; + + rc = ble_gap_connect(ble_conn_reattempt[idx].own_addr_type, + &ble_conn_reattempt[idx].peer_addr, + ble_conn_reattempt[idx].duration_ms, + &ble_conn_reattempt[idx].conn_params, + ble_conn_reattempt[idx].cb, + ble_conn_reattempt[idx].cb_arg); + if (rc != 0) { + return rc; + } + } else { + rc = BLE_HS_EUNKNOWN; + } + + return rc; +} +#endif + +#endif + +#if NIMBLE_BLE_SCAN static void ble_gap_disc_report(void *desc) { @@ -848,7 +992,6 @@ ble_gap_disc_report(void *desc) ble_gap_event_listener_call(&event); } -#if NIMBLE_BLE_SCAN static void ble_gap_disc_complete(void) { @@ -907,7 +1050,7 @@ ble_gap_master_ticks_until_exp(void) return 0; } -#if !MYNEWT_VAL(BLE_EXT_ADV) +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) static uint32_t ble_gap_slave_ticks_until_exp(void) { @@ -975,6 +1118,7 @@ ble_gap_update_next_exp(int32_t *out_ticks_from_now) } +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) static void ble_gap_master_set_timer(uint32_t ticks_from_now) { @@ -983,6 +1127,7 @@ ble_gap_master_set_timer(uint32_t ticks_from_now) ble_hs_timer_resched(); } +#endif #if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) static void @@ -995,6 +1140,7 @@ ble_gap_slave_set_timer(uint32_t ticks_from_now) } #endif +#if NIMBLE_BLE_CONNECT /** * Called when an error is encountered while the master-connection-fsm is * active. @@ -1017,7 +1163,7 @@ ble_gap_master_failed(int status) #endif default: - //BLE_HS_DBG_ASSERT(0); + BLE_HS_DBG_ASSERT(0); break; } } @@ -1037,6 +1183,7 @@ ble_gap_update_failed(uint16_t conn_handle, int status) ble_gap_update_notify(conn_handle, status); } +#endif void ble_gap_conn_broken(uint16_t conn_handle, int reason) @@ -1088,6 +1235,7 @@ ble_gap_conn_broken(uint16_t conn_handle, int reason) STATS_INC(ble_gap_stats, disconnect); } +#if NIMBLE_BLE_CONNECT static void ble_gap_update_to_l2cap(const struct ble_gap_upd_params *params, struct ble_l2cap_sig_update_params *l2cap_params) @@ -1097,43 +1245,40 @@ ble_gap_update_to_l2cap(const struct ble_gap_upd_params *params, l2cap_params->slave_latency = params->latency; l2cap_params->timeout_multiplier = params->supervision_timeout; } - -void -ble_gap_rx_disconn_complete(struct hci_disconn_complete *evt) -{ -#if !NIMBLE_BLE_CONNECT - return; #endif +void +ble_gap_rx_disconn_complete(const struct ble_hci_ev_disconn_cmp *ev) +{ +#if NIMBLE_BLE_CONNECT struct ble_gap_event event; + uint16_t handle = le16toh(ev->conn_handle); STATS_INC(ble_gap_stats, rx_disconnect); - if (evt->status == 0) { - ble_gap_conn_broken(evt->connection_handle, - BLE_HS_HCI_ERR(evt->reason)); + if (ev->status == 0) { + ble_gap_conn_broken(handle, BLE_HS_HCI_ERR(ev->reason)); } else { memset(&event, 0, sizeof event); event.type = BLE_GAP_EVENT_TERM_FAILURE; - event.term_failure.conn_handle = evt->connection_handle; - event.term_failure.status = BLE_HS_HCI_ERR(evt->status); + event.term_failure.conn_handle = handle; + event.term_failure.status = BLE_HS_HCI_ERR(ev->status); ble_gap_event_listener_call(&event); - ble_gap_call_conn_event_cb(&event, evt->connection_handle); + ble_gap_call_conn_event_cb(&event, handle); } +#endif } void -ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt) +ble_gap_rx_update_complete(const struct ble_hci_ev_le_subev_conn_upd_complete *ev) { -#if !NIMBLE_BLE_CONNECT - return; -#endif - +#if NIMBLE_BLE_CONNECT struct ble_gap_update_entry *entry; struct ble_l2cap_sig_update_params l2cap_params; struct ble_gap_event event; struct ble_hs_conn *conn; + uint16_t conn_handle; int cb_status; int call_cb; int rc; @@ -1145,14 +1290,16 @@ ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt) ble_hs_lock(); - conn = ble_hs_conn_find(evt->connection_handle); + conn_handle = le16toh(ev->conn_handle); + + conn = ble_hs_conn_find(conn_handle); if (conn != NULL) { - switch (evt->status) { + switch (ev->status) { case 0: /* Connection successfully updated. */ - conn->bhc_itvl = evt->conn_itvl; - conn->bhc_latency = evt->conn_latency; - conn->bhc_supervision_timeout = evt->supervision_timeout; + conn->bhc_itvl = le16toh(ev->conn_itvl); + conn->bhc_latency = le16toh(ev->conn_latency); + conn->bhc_supervision_timeout = le16toh(ev->supervision_timeout); break; case BLE_ERR_UNSUPP_REM_FEATURE: @@ -1161,7 +1308,7 @@ ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt) * Request Procedure. If we are the slave, fail over to the L2CAP * update procedure. */ - entry = ble_gap_update_entry_find(evt->connection_handle, NULL); + entry = ble_gap_update_entry_find(conn_handle, NULL); if (entry != NULL && !(conn->bhc_flags & BLE_HS_CONN_F_MASTER)) { ble_gap_update_to_l2cap(&entry->params, &l2cap_params); entry->exp_os_ticks = ble_npl_time_get() + @@ -1176,15 +1323,14 @@ ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt) /* We aren't failing over to L2CAP, the update procedure is complete. */ if (l2cap_params.itvl_min == 0) { - entry = ble_gap_update_entry_remove(evt->connection_handle); + entry = ble_gap_update_entry_remove(conn_handle); ble_gap_update_entry_free(entry); } ble_hs_unlock(); if (l2cap_params.itvl_min != 0) { - rc = ble_l2cap_sig_update(evt->connection_handle, - &l2cap_params, + rc = ble_l2cap_sig_update(conn_handle, &l2cap_params, ble_gap_update_l2cap_cb, NULL); if (rc == 0) { call_cb = 0; @@ -1194,12 +1340,13 @@ ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt) } } else { call_cb = 1; - cb_status = BLE_HS_HCI_ERR(evt->status); + cb_status = BLE_HS_HCI_ERR(ev->status); } if (call_cb) { - ble_gap_update_notify(evt->connection_handle, cb_status); + ble_gap_update_notify(conn_handle, cb_status); } +#endif } /** @@ -1211,34 +1358,6 @@ ble_gap_master_in_progress(void) return ble_gap_master.op != BLE_GAP_OP_NULL; } -static int -ble_gap_accept_master_conn(void) -{ - int rc; - - switch (ble_gap_master.op) { - case BLE_GAP_OP_NULL: - case BLE_GAP_OP_M_DISC: - rc = BLE_HS_ENOENT; - break; - - case BLE_GAP_OP_M_CONN: - rc = 0; - break; - - default: - BLE_HS_DBG_ASSERT(0); - rc = BLE_HS_ENOENT; - break; - } - - if (rc == 0) { - STATS_INC(ble_gap_stats, connect_mst); - } - - return rc; -} - static int ble_gap_adv_active_instance(uint8_t instance) { @@ -1286,6 +1405,35 @@ ble_gap_reset_state(int reason) #endif } +#if NIMBLE_BLE_CONNECT +static int +ble_gap_accept_master_conn(void) +{ + int rc; + + switch (ble_gap_master.op) { + case BLE_GAP_OP_NULL: + case BLE_GAP_OP_M_DISC: + rc = BLE_HS_ENOENT; + break; + + case BLE_GAP_OP_M_CONN: + rc = 0; + break; + + default: + BLE_HS_DBG_ASSERT(0); + rc = BLE_HS_ENOENT; + break; + } + + if (rc == 0) { + STATS_INC(ble_gap_stats, connect_mst); + } + + return rc; +} + static int ble_gap_accept_slave_conn(uint8_t instance) { @@ -1309,9 +1457,11 @@ ble_gap_accept_slave_conn(uint8_t instance) return rc; } +#endif +#if NIMBLE_BLE_SCAN static int -ble_gap_rx_adv_report_sanity_check(uint8_t *adv_data, uint8_t adv_data_len) +ble_gap_rx_adv_report_sanity_check(const uint8_t *adv_data, uint8_t adv_data_len) { const struct ble_hs_adv_field *flags; int rc; @@ -1336,30 +1486,28 @@ ble_gap_rx_adv_report_sanity_check(uint8_t *adv_data, uint8_t adv_data_len) return 0; } +#endif void ble_gap_rx_adv_report(struct ble_gap_disc_desc *desc) { -#if !NIMBLE_BLE_SCAN - return; -#endif - +#if NIMBLE_BLE_SCAN if (ble_gap_rx_adv_report_sanity_check(desc->data, desc->length_data)) { return; } ble_gap_disc_report(desc); +#endif } -#if MYNEWT_VAL(BLE_EXT_ADV) && NIMBLE_BLE_SCAN +#if MYNEWT_VAL(BLE_EXT_ADV) +#if NIMBLE_BLE_SCAN void ble_gap_rx_le_scan_timeout(void) { ble_gap_disc_complete(); } -#endif -#if MYNEWT_VAL(BLE_EXT_ADV) void ble_gap_rx_ext_adv_report(struct ble_gap_ext_disc_desc *desc) { @@ -1369,31 +1517,43 @@ ble_gap_rx_ext_adv_report(struct ble_gap_ext_disc_desc *desc) ble_gap_disc_report(desc); } +#endif void -ble_gap_rx_adv_set_terminated(struct hci_le_adv_set_terminated *evt) +ble_gap_rx_adv_set_terminated(const struct ble_hci_ev_le_subev_adv_set_terminated *ev) { uint16_t conn_handle; int reason; /* Currently spec allows only 0x3c and 0x43 when advertising was stopped * due to timeout or events limit, mp this for timeout error for now */ - if (evt->status) { + if (ev->status) { reason = BLE_HS_ETIMEOUT; conn_handle = 0; } else { reason = 0; - conn_handle = evt->conn_handle; + conn_handle = le16toh(ev->conn_handle); } - ble_gap_adv_finished(evt->adv_handle, reason, conn_handle, - evt->completed_events); + ble_gap_adv_finished(ev->adv_handle, reason, conn_handle, ev->num_events); } void -ble_gap_rx_scan_req_rcvd(struct hci_le_scan_req_rcvd *evt) +ble_gap_rx_scan_req_rcvd(const struct ble_hci_ev_le_subev_scan_req_rcvd *ev) { - ble_gap_scan_req_rcvd(evt->adv_handle, evt->scan_addr_type, evt->scan_addr); + struct ble_gap_event event; + ble_gap_event_fn *cb; + void *cb_arg; + + ble_gap_slave_extract_cb(ev->adv_handle, &cb, &cb_arg); + if (cb != NULL) { + memset(&event, 0, sizeof event); + event.type = BLE_GAP_EVENT_SCAN_REQ_RCVD; + event.scan_req_rcvd.instance = ev->adv_handle; + event.scan_req_rcvd.scan_addr.type = ev->peer_addr_type; + memcpy(event.scan_req_rcvd.scan_addr.val, ev->peer_addr, BLE_DEV_ADDR_LEN); + cb(&event, cb_arg); + } } #endif @@ -1401,8 +1561,9 @@ ble_gap_rx_scan_req_rcvd(struct hci_le_scan_req_rcvd *evt) #if MYNEWT_VAL(BLE_PERIODIC_ADV) void -ble_gap_rx_peroidic_adv_sync_estab(struct hci_le_subev_periodic_adv_sync_estab *evt) +ble_gap_rx_peroidic_adv_sync_estab(const struct ble_hci_ev_le_subev_periodic_adv_sync_estab *ev) { + uint16_t sync_handle; struct ble_gap_event event; ble_gap_event_fn *cb; void *cb_arg; @@ -1410,27 +1571,29 @@ ble_gap_rx_peroidic_adv_sync_estab(struct hci_le_subev_periodic_adv_sync_estab * memset(&event, 0, sizeof event); event.type = BLE_GAP_EVENT_PERIODIC_SYNC; - event.periodic_sync.status = evt->status; + event.periodic_sync.status = ev->status; ble_hs_lock(); BLE_HS_DBG_ASSERT(ble_gap_sync.psync); - if (!evt->status) { - ble_gap_sync.psync->sync_handle = evt->sync_handle; - ble_gap_sync.psync->adv_sid = evt->sid; - memcpy(ble_gap_sync.psync->advertiser_addr.val, evt->adv_addr, 6); - ble_gap_sync.psync->advertiser_addr.type = evt->adv_addr_type; + if (!ev->status) { + sync_handle = le16toh(ev->sync_handle); + + ble_gap_sync.psync->sync_handle = sync_handle; + ble_gap_sync.psync->adv_sid = ev->sid; + memcpy(ble_gap_sync.psync->advertiser_addr.val, ev->peer_addr, 6); + ble_gap_sync.psync->advertiser_addr.type = ev->peer_addr_type; ble_gap_sync.psync->cb = ble_gap_sync.cb; ble_gap_sync.psync->cb_arg = ble_gap_sync.cb_arg; - event.periodic_sync.sync_handle = evt->sync_handle; - event.periodic_sync.sid = evt->sid; + event.periodic_sync.sync_handle = sync_handle; + event.periodic_sync.sid = ev->sid; event.periodic_sync.adv_addr = ble_gap_sync.psync->advertiser_addr; - event.periodic_sync.adv_phy = evt->adv_phy; - event.periodic_sync.per_adv_ival = evt->per_adv_ival; - event.periodic_sync.adv_clk_accuracy = evt->adv_clk_accuracy; + event.periodic_sync.adv_phy = ev->phy; + event.periodic_sync.per_adv_ival = ev->interval; + event.periodic_sync.adv_clk_accuracy = ev->aca; ble_hs_periodic_sync_insert(ble_gap_sync.psync); } else { @@ -1454,7 +1617,7 @@ ble_gap_rx_peroidic_adv_sync_estab(struct hci_le_subev_periodic_adv_sync_estab * } void -ble_gap_rx_periodic_adv_rpt(struct hci_le_subev_periodic_adv_rpt *evt) +ble_gap_rx_periodic_adv_rpt(const struct ble_hci_ev_le_subev_periodic_adv_rpt *ev) { struct ble_hs_periodic_sync *psync; struct ble_gap_event event; @@ -1462,7 +1625,7 @@ ble_gap_rx_periodic_adv_rpt(struct hci_le_subev_periodic_adv_rpt *evt) void *cb_arg = NULL; ble_hs_lock(); - psync = ble_hs_periodic_sync_find_by_handle(evt->sync_handle); + psync = ble_hs_periodic_sync_find_by_handle(le16toh(ev->sync_handle)); if (psync) { cb = psync->cb; cb_arg = psync->cb_arg; @@ -1476,12 +1639,12 @@ ble_gap_rx_periodic_adv_rpt(struct hci_le_subev_periodic_adv_rpt *evt) memset(&event, 0, sizeof event); event.type = BLE_GAP_EVENT_PERIODIC_REPORT; - event.periodic_report.sync_handle = evt->sync_handle; - event.periodic_report.tx_power = evt->tx_power; - event.periodic_report.rssi = evt->rssi; - event.periodic_report.data_status = evt->data_status; - event.periodic_report.data_length = evt->data_length; - event.periodic_report.data = evt->data; + event.periodic_report.sync_handle = psync->sync_handle; + event.periodic_report.tx_power = ev->tx_power; + event.periodic_report.rssi = ev->rssi; + event.periodic_report.data_status = ev->data_status; + event.periodic_report.data_length = ev->data_len; + event.periodic_report.data = ev->data; /* TODO should we allow for listener too? this can be spammy and is more * like ACL data, not general event @@ -1490,22 +1653,16 @@ ble_gap_rx_periodic_adv_rpt(struct hci_le_subev_periodic_adv_rpt *evt) } void -ble_gap_rx_periodic_adv_sync_lost(struct hci_le_subev_periodic_adv_sync_lost *evt) +ble_gap_rx_periodic_adv_sync_lost(const struct ble_hci_ev_le_subev_periodic_adv_sync_lost *ev) { struct ble_hs_periodic_sync *psync; struct ble_gap_event event; ble_gap_event_fn *cb; void *cb_arg; - memset(&event, 0, sizeof event); - - event.type = BLE_GAP_EVENT_PERIODIC_SYNC_LOST; - event.periodic_sync_lost.sync_handle = evt->sync_handle; - event.periodic_sync_lost.reason = BLE_HS_ETIMEOUT; - ble_hs_lock(); /* The handle must be in the list */ - psync = ble_hs_periodic_sync_find_by_handle(evt->sync_handle); + psync = ble_hs_periodic_sync_find_by_handle(le16toh(ev->sync_handle)); BLE_HS_DBG_ASSERT(psync); cb = psync->cb; @@ -1515,6 +1672,12 @@ ble_gap_rx_periodic_adv_sync_lost(struct hci_le_subev_periodic_adv_sync_lost *ev ble_hs_periodic_sync_remove(psync); ble_hs_unlock(); + memset(&event, 0, sizeof event); + + event.type = BLE_GAP_EVENT_PERIODIC_SYNC_LOST; + event.periodic_sync_lost.sync_handle = psync->sync_handle; + event.periodic_sync_lost.reason = BLE_HS_ETIMEOUT; + /* remove any sync_lost event from queue */ ble_npl_eventq_remove(ble_hs_evq_get(), &psync->lost_ev); @@ -1528,38 +1691,132 @@ ble_gap_rx_periodic_adv_sync_lost(struct hci_le_subev_periodic_adv_sync_lost *ev } #endif +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) +static int +periodic_adv_transfer_disable(uint16_t conn_handle) +{ + struct ble_hci_le_periodic_adv_sync_transfer_params_cp cmd; + struct ble_hci_le_periodic_adv_sync_transfer_params_rp rsp; + uint16_t opcode; + int rc; + + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_SYNC_TRANSFER_PARAMS); + + cmd.conn_handle = htole16(conn_handle); + cmd.sync_cte_type = 0x00; + cmd.mode = 0x00; + cmd.skip = 0x0000; + cmd.sync_timeout = 0x000a; + + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), &rsp, sizeof(rsp)); + if (!rc) { + BLE_HS_DBG_ASSERT(le16toh(rsp.conn_handle) == conn_handle); + } + + return rc; +} + +void +ble_gap_rx_periodic_adv_sync_transfer(const struct ble_hci_ev_le_subev_periodic_adv_sync_transfer *ev) +{ + struct ble_hci_le_periodic_adv_term_sync_cp cmd_term; + struct ble_gap_event event; + struct ble_hs_conn *conn; + ble_gap_event_fn *cb; + uint16_t sync_handle; + uint16_t conn_handle; + uint16_t opcode; + void *cb_arg; + + conn_handle = le16toh(ev->conn_handle); + + ble_hs_lock(); + + /* Unfortunately spec sucks here as it doesn't explicitly stop + * transfer reception on first transfer... for now just disable it on + * every transfer event we get. + */ + periodic_adv_transfer_disable(conn_handle); + + conn = ble_hs_conn_find(le16toh(ev->conn_handle)); + if (!conn || !conn->psync) { + /* terminate sync if we didn't expect it */ + if (!ev->status) { + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_TERM_SYNC); + cmd_term.sync_handle = ev->sync_handle; + ble_hs_hci_cmd_tx(opcode, &cmd_term, sizeof(cmd_term), NULL, 0); + } + + ble_hs_unlock(); + return; + } + + cb = conn->psync->cb; + cb_arg = conn->psync->cb_arg; + + memset(&event, 0, sizeof event); + + event.type = BLE_GAP_EVENT_PERIODIC_TRANSFER; + event.periodic_transfer.status = ev->status; + + /* only sync handle is not valid on error */ + if (ev->status) { + sync_handle = 0; + ble_hs_periodic_sync_free(conn->psync); + } else { + sync_handle = le16toh(ev->sync_handle); + + conn->psync->sync_handle = sync_handle; + conn->psync->adv_sid = ev->sid; + memcpy(conn->psync->advertiser_addr.val, ev->peer_addr, 6); + conn->psync->advertiser_addr.type = ev->peer_addr_type; + ble_hs_periodic_sync_insert(conn->psync); + } + + conn->psync = NULL; + + event.periodic_transfer.sync_handle = sync_handle; + event.periodic_transfer.conn_handle = conn_handle; + event.periodic_transfer.service_data = le16toh(ev->service_data); + event.periodic_transfer.sid = ev->sid; + memcpy(event.periodic_transfer.adv_addr.val, ev->peer_addr, 6); + event.periodic_transfer.adv_addr.type = ev->peer_addr_type; + + event.periodic_transfer.adv_phy = ev->phy; + event.periodic_transfer.per_adv_itvl = le16toh(ev->interval); + event.periodic_transfer.adv_clk_accuracy = ev->aca; + + ble_hs_unlock(); + + ble_gap_event_listener_call(&event); + if (cb) { + cb(&event, cb_arg); + } +} +#endif + +#if NIMBLE_BLE_CONNECT static int ble_gap_rd_rem_sup_feat_tx(uint16_t handle) { - uint8_t buf[BLE_HCI_CONN_RD_REM_FEAT_LEN]; - int rc; + struct ble_hci_le_rd_rem_feat_cp cmd; - rc = ble_hs_hci_cmd_build_le_read_remote_feat(handle, buf, sizeof buf); - if (rc != 0) { - return BLE_HS_EUNKNOWN; - } + cmd.conn_handle = htole16(handle); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_RD_REM_FEAT), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_RD_REM_FEAT), + &cmd, sizeof(cmd), NULL, 0); } +#endif /** * Processes an incoming connection-complete HCI event. * instance parameter is valid only for slave connection. */ int -ble_gap_rx_conn_complete(struct hci_le_conn_complete *evt, uint8_t instance) +ble_gap_rx_conn_complete(struct ble_gap_conn_complete *evt, uint8_t instance) { -#if !NIMBLE_BLE_CONNECT - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_CONNECT struct ble_gap_event event; struct ble_hs_conn *conn; int rc; @@ -1691,26 +1948,26 @@ ble_gap_rx_conn_complete(struct hci_le_conn_complete *evt, uint8_t instance) ble_gap_rd_rem_sup_feat_tx(evt->connection_handle); return 0; +#else + return BLE_HS_ENOTSUP; +#endif } void -ble_gap_rx_rd_rem_sup_feat_complete( - struct hci_le_rd_rem_supp_feat_complete *evt) +ble_gap_rx_rd_rem_sup_feat_complete(const struct ble_hci_ev_le_subev_rd_rem_used_feat *ev) { -#if !NIMBLE_BLE_CONNECT - return; -#endif - +#if NIMBLE_BLE_CONNECT struct ble_hs_conn *conn; ble_hs_lock(); - conn = ble_hs_conn_find(evt->connection_handle); - if (conn != NULL && evt->status == 0) { - conn->supported_feat = get_le32(evt->features); + conn = ble_hs_conn_find(le16toh(ev->conn_handle)); + if ((conn != NULL) && (ev->status == 0)) { + conn->supported_feat = get_le32(ev->features); } ble_hs_unlock(); +#endif } int @@ -1730,19 +1987,20 @@ ble_gap_rx_l2cap_update_req(uint16_t conn_handle, } void -ble_gap_rx_phy_update_complete(struct hci_le_phy_upd_complete *evt) +ble_gap_rx_phy_update_complete(const struct ble_hci_ev_le_subev_phy_update_complete *ev) { struct ble_gap_event event; + uint16_t conn_handle = le16toh(ev->conn_handle); memset(&event, 0, sizeof event); event.type = BLE_GAP_EVENT_PHY_UPDATE_COMPLETE; - event.phy_updated.status = evt->status; - event.phy_updated.conn_handle = evt->connection_handle; - event.phy_updated.tx_phy = evt->tx_phy; - event.phy_updated.rx_phy = evt->rx_phy; + event.phy_updated.status = ev->status; + event.phy_updated.conn_handle = conn_handle; + event.phy_updated.tx_phy = ev->tx_phy; + event.phy_updated.rx_phy = ev->rx_phy; ble_gap_event_listener_call(&event); - ble_gap_call_conn_event_cb(&event, evt->connection_handle); + ble_gap_call_conn_event_cb(&event, conn_handle); } static int32_t @@ -1801,7 +2059,7 @@ ble_gap_master_timer(void) return BLE_HS_FOREVER; } -#if !MYNEWT_VAL(BLE_EXT_ADV) +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) static int32_t ble_gap_slave_timer(void) { @@ -1900,7 +2158,7 @@ ble_gap_timer(void) min_ticks = min(master_ticks, update_ticks); -#if !MYNEWT_VAL(BLE_EXT_ADV) +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) min_ticks = min(min_ticks, ble_gap_slave_timer()); #endif @@ -1911,12 +2169,10 @@ ble_gap_timer(void) * $white list * *****************************************************************************/ +#if MYNEWT_VAL(BLE_WHITELIST) static int ble_gap_wl_busy(void) { -#if !MYNEWT_VAL(BLE_WHITELIST) - return BLE_HS_ENOTSUP; -#endif #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) if (ble_host_rpa_enabled()) { @@ -1933,52 +2189,56 @@ ble_gap_wl_busy(void) static int ble_gap_wl_tx_add(const ble_addr_t *addr) { - uint8_t buf[BLE_HCI_ADD_WHITE_LIST_LEN]; - int rc; + struct ble_hci_le_add_whte_list_cp cmd; - rc = ble_hs_hci_cmd_build_le_add_to_whitelist(addr->val, addr->type, - buf, sizeof buf); - if (rc != 0) { - return rc; + if (addr->type > BLE_ADDR_RANDOM) { + return BLE_HS_EINVAL; } - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_ADD_WHITE_LIST), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + memcpy(cmd.addr, addr->val, BLE_DEV_ADDR_LEN); + cmd.addr_type = addr->type; - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_ADD_WHITE_LIST), + &cmd, sizeof(cmd), NULL, 0); } static int ble_gap_wl_tx_clear(void) { - int rc; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_CLEAR_WHITE_LIST), + NULL, 0, NULL, 0 ); +} +#endif - rc = ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_CLEAR_WHITE_LIST), - NULL, 0); - if (rc != 0) { - return rc; +int +ble_gap_wl_tx_rmv(const ble_addr_t *addr) +{ + struct ble_hci_le_rmv_white_list_cp cmd; + + if (addr->type > BLE_ADDR_RANDOM) { + return BLE_HS_EINVAL; } - return 0; + memcpy(cmd.addr, addr->val, BLE_DEV_ADDR_LEN); + cmd.addr_type = addr->type; + + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_RMV_WHITE_LIST), + &cmd, sizeof(cmd), NULL, 0); } int ble_gap_wl_set(const ble_addr_t *addrs, uint8_t white_list_count) { -#if !MYNEWT_VAL(BLE_WHITELIST) - return BLE_HS_ENOTSUP; -#endif - #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) if (ble_host_rpa_enabled()) { return BLE_HS_ENOTSUP; } #endif + +#if MYNEWT_VAL(BLE_WHITELIST) int rc; int i; @@ -2030,37 +2290,30 @@ done: STATS_INC(ble_gap_stats, wl_set_fail); } return rc; +#else + return BLE_HS_ENOTSUP; +#endif } /***************************************************************************** * $stop advertise * *****************************************************************************/ - +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) static int ble_gap_adv_enable_tx(int enable) { - uint8_t buf[BLE_HCI_SET_ADV_ENABLE_LEN]; - uint16_t opcode; - int rc; + struct ble_hci_le_set_adv_enable_cp cmd; - opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_ADV_ENABLE); - ble_hs_hci_cmd_build_le_set_adv_enable(!!enable, buf, sizeof buf); + cmd.enable = !!enable; - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_ADV_ENABLE), + &cmd, sizeof(cmd), NULL, 0); } static int ble_gap_adv_stop_no_lock(void) { -#if !NIMBLE_BLE_ADVERTISE - return BLE_HS_ENOTSUP; -#endif - bool active; int rc; @@ -2092,14 +2345,12 @@ done: return rc; } +#endif int ble_gap_adv_stop(void) { -#if !NIMBLE_BLE_ADVERTISE || MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) int rc; ble_hs_lock(); @@ -2107,6 +2358,9 @@ ble_gap_adv_stop(void) ble_hs_unlock(); return rc; +#else + return BLE_HS_ENOTSUP; +#endif } /***************************************************************************** @@ -2162,6 +2416,8 @@ ble_gap_adv_dflt_itvls(uint8_t conn_mode, default: BLE_HS_DBG_ASSERT(0); + *out_itvl_min = BLE_GAP_ADV_FAST_INTERVAL1_MIN; + *out_itvl_max = BLE_GAP_ADV_FAST_INTERVAL1_MAX; break; } } @@ -2172,52 +2428,43 @@ ble_gap_adv_params_tx(uint8_t own_addr_type, const ble_addr_t *peer_addr, { const ble_addr_t *peer_any = BLE_ADDR_ANY; - struct hci_adv_params hci_adv_params; - uint8_t buf[BLE_HCI_SET_ADV_PARAM_LEN]; - int rc; + struct ble_hci_le_set_adv_params_cp cmd; + uint16_t opcode; + uint16_t min; + uint16_t max; + + /* Fill optional fields if application did not specify them. */ + if ((adv_params->itvl_min == 0) && (adv_params->itvl_max == 0)) { + ble_gap_adv_dflt_itvls(adv_params->conn_mode, &min, &max); + cmd.min_interval = htole16(min); + cmd.max_interval = htole16(max); + } else { + cmd.min_interval = htole16(adv_params->itvl_min); + cmd.max_interval = htole16(adv_params->itvl_max); + } + + cmd.type = ble_gap_adv_type(adv_params); + cmd.own_addr_type = own_addr_type; if (peer_addr == NULL) { peer_addr = peer_any; } - hci_adv_params.own_addr_type = own_addr_type; - hci_adv_params.peer_addr_type = peer_addr->type; - memcpy(hci_adv_params.peer_addr, peer_addr->val, - sizeof hci_adv_params.peer_addr); + cmd.peer_addr_type = peer_addr->type; + memcpy(&cmd.peer_addr, peer_addr->val, sizeof(cmd.peer_addr)); - /* Fill optional fields if application did not specify them. */ - if (adv_params->itvl_min == 0 && adv_params->itvl_max == 0) { - ble_gap_adv_dflt_itvls(adv_params->conn_mode, - &hci_adv_params.adv_itvl_min, - &hci_adv_params.adv_itvl_max); - } else { - hci_adv_params.adv_itvl_min = adv_params->itvl_min; - hci_adv_params.adv_itvl_max = adv_params->itvl_max; - } if (adv_params->channel_map == 0) { - hci_adv_params.adv_channel_map = BLE_GAP_ADV_DFLT_CHANNEL_MAP; + cmd.chan_map = BLE_GAP_ADV_DFLT_CHANNEL_MAP; } else { - hci_adv_params.adv_channel_map = adv_params->channel_map; + cmd.chan_map = adv_params->channel_map; } /* Zero is the default value for filter policy and high duty cycle */ - hci_adv_params.adv_filter_policy = adv_params->filter_policy; + cmd.filter_policy = adv_params->filter_policy; - hci_adv_params.adv_type = ble_gap_adv_type(adv_params); - rc = ble_hs_hci_cmd_build_le_set_adv_params(&hci_adv_params, - buf, sizeof buf); - if (rc != 0) { - return BLE_HS_EINVAL; - } + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_ADV_PARAMS); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_ADV_PARAMS), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); } static int @@ -2297,9 +2544,7 @@ ble_gap_adv_start(uint8_t own_addr_type, const ble_addr_t *direct_addr, const struct ble_gap_adv_params *adv_params, ble_gap_event_fn *cb, void *cb_arg) { -#if !NIMBLE_BLE_ADVERTISE || MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#else +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) uint32_t duration_ticks; int rc; @@ -2376,83 +2621,66 @@ done: STATS_INC(ble_gap_stats, adv_start_fail); } return rc; +#else + return BLE_HS_ENOTSUP; #endif } int ble_gap_adv_set_data(const uint8_t *data, int data_len) { -#if !NIMBLE_BLE_ADVERTISE || MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#endif - - uint8_t buf[BLE_HCI_SET_ADV_DATA_LEN]; +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) + struct ble_hci_le_set_adv_data_cp cmd; uint16_t opcode; - int rc; STATS_INC(ble_gap_stats, adv_set_data); - ble_hs_lock(); + /* Check for valid parameters */ + if (((data == NULL) && (data_len != 0)) || + (data_len > BLE_HCI_MAX_ADV_DATA_LEN)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + memcpy(cmd.adv_data, data, data_len); + cmd.adv_data_len = data_len; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_ADV_DATA); - rc = ble_hs_hci_cmd_build_le_set_adv_data(data, data_len, buf, - sizeof(buf)); - if (rc != 0) { - goto done; - } - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); - if (rc != 0) { - goto done; - } - - rc = 0; - -done: - ble_hs_unlock(); - return rc; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); +#else + return BLE_HS_ENOTSUP; +#endif } int ble_gap_adv_rsp_set_data(const uint8_t *data, int data_len) { -#if !NIMBLE_BLE_ADVERTISE || MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#endif - - uint8_t buf[BLE_HCI_SET_SCAN_RSP_DATA_LEN]; +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) + struct ble_hci_le_set_scan_rsp_data_cp cmd; uint16_t opcode; - int rc; - ble_hs_lock(); + + /* Check for valid parameters */ + if (((data == NULL) && (data_len != 0)) || + (data_len > BLE_HCI_MAX_SCAN_RSP_DATA_LEN)) { + return BLE_HS_EINVAL; + } + + memcpy(cmd.scan_rsp, data, data_len); + cmd.scan_rsp_len = data_len; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_SCAN_RSP_DATA); - rc = ble_hs_hci_cmd_build_le_set_scan_rsp_data(data, data_len, - buf, sizeof(buf)); - if (rc != 0) { - rc = BLE_HS_HCI_ERR(rc); - goto done; - } - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); - if (rc != 0) { - goto done; - } - - rc = 0; - -done: - ble_hs_unlock(); - return rc; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); +#else + return BLE_HS_ENOTSUP; +#endif } int ble_gap_adv_set_fields(const struct ble_hs_adv_fields *adv_fields) { -#if !NIMBLE_BLE_ADVERTISE || MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) uint8_t buf[BLE_HS_ADV_MAX_SZ]; uint8_t buf_sz; int rc; @@ -2468,15 +2696,15 @@ ble_gap_adv_set_fields(const struct ble_hs_adv_fields *adv_fields) } return 0; +#else + return BLE_HS_ENOTSUP; +#endif } int ble_gap_adv_rsp_set_fields(const struct ble_hs_adv_fields *rsp_fields) { -#if !NIMBLE_BLE_ADVERTISE || MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_ADVERTISE && !MYNEWT_VAL(BLE_EXT_ADV) uint8_t buf[BLE_HS_ADV_MAX_SZ]; uint8_t buf_sz; int rc; @@ -2492,6 +2720,9 @@ ble_gap_adv_rsp_set_fields(const struct ble_hs_adv_fields *rsp_fields) } return 0; +#else + return BLE_HS_ENOTSUP; +#endif } int @@ -2507,87 +2738,81 @@ ble_gap_ext_adv_params_tx(uint8_t instance, int8_t *selected_tx_power) { - struct hci_ext_adv_params hci_adv_params; - uint8_t buf[BLE_HCI_LE_SET_EXT_ADV_PARAM_LEN]; - uint8_t rsp; + struct ble_hci_le_set_ext_adv_params_cp cmd; + struct ble_hci_le_set_ext_adv_params_rp rsp; int rc; - memset(&hci_adv_params, 0, sizeof(hci_adv_params)); + memset(&cmd, 0, sizeof(cmd)); + + cmd.adv_handle = instance; if (params->connectable) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_CONNECTABLE; + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_CONNECTABLE; } if (params->scannable) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_SCANNABLE; + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_SCANNABLE; } if (params->directed) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_DIRECTED; - hci_adv_params.peer_addr_type = params->peer.type; - memcpy(hci_adv_params.peer_addr, params->peer.val, 6); + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_DIRECTED; + cmd.peer_addr_type = params->peer.type; + memcpy(cmd.peer_addr, params->peer.val, BLE_DEV_ADDR_LEN); } if (params->high_duty_directed) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_HD_DIRECTED; + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_HD_DIRECTED; } if (params->legacy_pdu) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_LEGACY; + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_LEGACY; } if (params->anonymous) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_ANON_ADV; + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_ANON_ADV; } if (params->include_tx_power) { - hci_adv_params.properties |= BLE_HCI_LE_SET_EXT_ADV_PROP_INC_TX_PWR; + cmd.props |= BLE_HCI_LE_SET_EXT_ADV_PROP_INC_TX_PWR; } /* Fill optional fields if application did not specify them. */ if (params->itvl_min == 0 && params->itvl_max == 0) { /* TODO for now limited to legacy values*/ - hci_adv_params.min_interval = BLE_GAP_ADV_FAST_INTERVAL1_MIN; - hci_adv_params.max_interval = BLE_GAP_ADV_FAST_INTERVAL2_MAX; - + put_le24(cmd.pri_itvl_min, BLE_GAP_ADV_FAST_INTERVAL1_MIN); + put_le24(cmd.pri_itvl_max, BLE_GAP_ADV_FAST_INTERVAL2_MAX); } else { - hci_adv_params.min_interval = params->itvl_min; - hci_adv_params.max_interval = params->itvl_max; + put_le24(cmd.pri_itvl_min, params->itvl_min); + put_le24(cmd.pri_itvl_max, params->itvl_max); } if (params->channel_map == 0) { - hci_adv_params.chan_map = BLE_GAP_ADV_DFLT_CHANNEL_MAP; + cmd.pri_chan_map = BLE_GAP_ADV_DFLT_CHANNEL_MAP; } else { - hci_adv_params.chan_map = params->channel_map; + cmd.pri_chan_map = params->channel_map; } /* Zero is the default value for filter policy and high duty cycle */ - hci_adv_params.filter_policy = params->filter_policy; - hci_adv_params.tx_power = params->tx_power; + cmd.filter_policy = params->filter_policy; + cmd.tx_power = params->tx_power; if (params->legacy_pdu) { - hci_adv_params.primary_phy = BLE_HCI_LE_PHY_1M; - hci_adv_params.secondary_phy = BLE_HCI_LE_PHY_1M; + cmd.pri_phy = BLE_HCI_LE_PHY_1M; + cmd.sec_phy = BLE_HCI_LE_PHY_1M; } else { - hci_adv_params.primary_phy = params->primary_phy; - hci_adv_params.secondary_phy = params->secondary_phy; + cmd.pri_phy = params->primary_phy; + cmd.sec_phy = params->secondary_phy; } - hci_adv_params.own_addr_type = params->own_addr_type; - hci_adv_params.max_skip = 0; - hci_adv_params.sid = params->sid; - hci_adv_params.scan_req_notif = params->scan_req_notif; + cmd.own_addr_type = params->own_addr_type; + cmd.sec_max_skip = 0; + cmd.sid = params->sid; + cmd.scan_req_notif = params->scan_req_notif; - rc = ble_hs_hci_cmd_build_le_ext_adv_params(instance, &hci_adv_params, - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - rc = ble_hs_hci_cmd_tx( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_EXT_ADV_PARAM), - buf, sizeof(buf), &rsp, 1, NULL); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_EXT_ADV_PARAM), + &cmd, sizeof(cmd), &rsp, sizeof(rsp)); if (rc != 0) { return rc; } if (selected_tx_power) { - *selected_tx_power = rsp; + *selected_tx_power = rsp.tx_power; } return 0; @@ -2677,6 +2902,7 @@ ble_gap_ext_adv_configure(uint8_t instance, ble_gap_slave[instance].connectable = params->connectable; ble_gap_slave[instance].scannable = params->scannable; ble_gap_slave[instance].directed = params->directed; + ble_gap_slave[instance].high_duty_directed = params->high_duty_directed; ble_gap_slave[instance].legacy_pdu = params->legacy_pdu; ble_hs_unlock(); @@ -2686,18 +2912,15 @@ ble_gap_ext_adv_configure(uint8_t instance, static int ble_gap_ext_adv_set_addr_no_lock(uint8_t instance, const uint8_t *addr) { - uint8_t buf[BLE_HCI_LE_SET_ADV_SET_RND_ADDR_LEN]; + struct ble_hci_le_set_adv_set_rnd_addr_cp cmd; int rc; - rc = ble_hs_hci_cmd_build_le_ext_adv_set_random_addr(instance, addr, buf, - sizeof(buf)); - if (rc != 0) { - return rc; - } + cmd.adv_handle = instance; + memcpy(cmd.addr, addr, BLE_DEV_ADDR_LEN); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_ADV_SET_RND_ADDR), - buf, sizeof(buf)); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_ADV_SET_RND_ADDR), + &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { return rc; } @@ -2727,9 +2950,9 @@ ble_gap_ext_adv_set_addr(uint8_t instance, const ble_addr_t *addr) int ble_gap_ext_adv_start(uint8_t instance, int duration, int max_events) { + struct ble_hci_le_set_ext_adv_enable_cp *cmd; + uint8_t buf[sizeof(*cmd) + sizeof(cmd->sets[0])]; const uint8_t *rnd_addr; - uint8_t buf[6]; - struct hci_ext_adv_set set; uint16_t opcode; int rc; @@ -2748,7 +2971,9 @@ ble_gap_ext_adv_start(uint8_t instance, int duration, int max_events) return BLE_HS_EALREADY; } - if (ble_gap_slave[instance].directed && duration > 1280) { + /* HD directed duration shall not be 0 or larger than >1.28s */ + if (ble_gap_slave[instance].high_duty_directed && + ((duration == 0) || (duration > 128)) ) { ble_hs_unlock(); return BLE_HS_EINVAL; } @@ -2800,17 +3025,16 @@ ble_gap_ext_adv_start(uint8_t instance, int duration, int max_events) opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_EXT_ADV_ENABLE); - set.handle = instance; - set.duration = duration; - set.events = max_events; + cmd = (void *) buf; - rc = ble_hs_hci_cmd_build_le_ext_adv_enable(1, 1, &set, buf, sizeof(buf)); - if (rc != 0) { - ble_hs_unlock(); - return rc; - } + cmd->enable = 0x01; + cmd->num_sets = 1; - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + cmd->sets[0].adv_handle = instance; + cmd->sets[0].duration = htole16(duration); + cmd->sets[0].max_events = max_events; + + rc = ble_hs_hci_cmd_tx(opcode, cmd, sizeof(buf), NULL, 0); if (rc != 0) { ble_hs_unlock(); return rc; @@ -2825,8 +3049,8 @@ ble_gap_ext_adv_start(uint8_t instance, int duration, int max_events) static int ble_gap_ext_adv_stop_no_lock(uint8_t instance) { - uint8_t buf[6]; - struct hci_ext_adv_set set; + struct ble_hci_le_set_ext_adv_enable_cp *cmd; + uint8_t buf[sizeof(*cmd) + sizeof(cmd->sets[0])]; uint16_t opcode; bool active; int rc; @@ -2837,18 +3061,17 @@ ble_gap_ext_adv_stop_no_lock(uint8_t instance) active = ble_gap_adv_active_instance(instance); + cmd = (void *) buf; + + cmd->enable = 0x00; + cmd->num_sets = 1; + cmd->sets[0].adv_handle = instance; + cmd->sets[0].duration = 0x0000; + cmd->sets[0].max_events = 0x00; + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_EXT_ADV_ENABLE); - set.handle = instance; - set.duration = 0; - set.events = 0; - - rc = ble_hs_hci_cmd_build_le_ext_adv_enable(0, 1, &set, buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + rc = ble_hs_hci_cmd_tx(opcode, cmd, sizeof(buf), NULL, 0); if (rc != 0) { return rc; } @@ -2925,65 +3148,63 @@ ble_gap_ext_adv_set(uint8_t instance, uint16_t opcode, struct os_mbuf **data) { /* in that case we always fit all data in single HCI command */ #if MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE) <= BLE_HCI_MAX_EXT_ADV_DATA_LEN - static uint8_t buf[BLE_HCI_SET_EXT_ADV_DATA_HDR_LEN + \ + static uint8_t buf[sizeof(struct ble_hci_le_set_ext_adv_data_cp) + \ MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)]; + struct ble_hci_le_set_ext_adv_data_cp *cmd = (void *)buf; uint16_t len = OS_MBUF_PKTLEN(*data); - int rc; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, opcode); + cmd->adv_handle = instance; + cmd->operation = BLE_HCI_LE_SET_DATA_OPER_COMPLETE; + cmd->fragment_pref = 0; + cmd->adv_data_len = len; + os_mbuf_copydata(*data, 0, len, cmd->adv_data); - rc = ble_hs_hci_cmd_build_le_ext_adv_data(instance, - BLE_HCI_LE_SET_DATA_OPER_COMPLETE, - 0, *data, len, buf, sizeof(buf)); - if (rc) { - return rc; - } - - os_mbuf_adj(*data, MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)); + os_mbuf_adj(*data, len); *data = os_mbuf_trim_front(*data); - return ble_hs_hci_cmd_tx_empty_ack(opcode, buf, - BLE_HCI_SET_EXT_ADV_DATA_HDR_LEN + len); + return ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); #else - static uint8_t buf[BLE_HCI_SET_EXT_ADV_DATA_HDR_LEN + \ + static uint8_t buf[sizeof(struct ble_hci_le_set_ext_adv_data_cp) + \ BLE_HCI_MAX_EXT_ADV_DATA_LEN]; + struct ble_hci_le_set_ext_adv_data_cp *cmd = (void *)buf; uint16_t len = OS_MBUF_PKTLEN(*data); uint8_t op; int rc; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, opcode); + cmd->adv_handle = instance; + /* complete data */ if (len <= BLE_HCI_MAX_EXT_ADV_DATA_LEN) { - rc = ble_hs_hci_cmd_build_le_ext_adv_data(instance, - BLE_HCI_LE_SET_DATA_OPER_COMPLETE, - 0, *data, len, buf,sizeof(buf)); - if (rc) { - return rc; - } + cmd->operation = BLE_HCI_LE_SET_DATA_OPER_COMPLETE; + cmd->fragment_pref = 0; + cmd->adv_data_len = len; + os_mbuf_copydata(*data, 0, len, cmd->adv_data); os_mbuf_adj(*data, len); *data = os_mbuf_trim_front(*data); - return ble_hs_hci_cmd_tx_empty_ack(opcode, buf, - BLE_HCI_SET_EXT_ADV_DATA_HDR_LEN + len); + return ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); } /* first fragment */ op = BLE_HCI_LE_SET_DATA_OPER_FIRST; do { - rc = ble_hs_hci_cmd_build_le_ext_adv_data(instance, op, 0, *data, - BLE_HCI_MAX_EXT_ADV_DATA_LEN, - buf, sizeof(buf)); - if (rc) { - return rc; - } + cmd->operation = op; + cmd->fragment_pref = 0; + cmd->adv_data_len = BLE_HCI_MAX_EXT_ADV_DATA_LEN; + os_mbuf_copydata(*data, 0, BLE_HCI_MAX_EXT_ADV_DATA_LEN, cmd->adv_data); os_mbuf_adj(*data, BLE_HCI_MAX_EXT_ADV_DATA_LEN); *data = os_mbuf_trim_front(*data); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + rc = ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); if (rc) { return rc; } @@ -2993,18 +3214,16 @@ ble_gap_ext_adv_set(uint8_t instance, uint16_t opcode, struct os_mbuf **data) } while (len > BLE_HCI_MAX_EXT_ADV_DATA_LEN); /* last fragment */ - rc = ble_hs_hci_cmd_build_le_ext_adv_data(instance, - BLE_HCI_LE_SET_DATA_OPER_LAST, - 0, *data, len, buf, sizeof(buf)); - if (rc) { - return rc; - } + cmd->operation = BLE_HCI_LE_SET_DATA_OPER_LAST; + cmd->fragment_pref = 0; + cmd->adv_data_len = len; + os_mbuf_copydata(*data, 0, len, cmd->adv_data); os_mbuf_adj(*data, len); *data = os_mbuf_trim_front(*data); - return ble_hs_hci_cmd_tx_empty_ack(opcode, buf, - BLE_HCI_SET_EXT_ADV_DATA_HDR_LEN + len); + return ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); #endif } @@ -3105,7 +3324,7 @@ done: int ble_gap_ext_adv_remove(uint8_t instance) { - uint8_t buf[BLE_HCI_LE_REMOVE_ADV_SET_LEN]; + struct ble_hci_le_remove_adv_set_cp cmd; uint16_t opcode; int rc; @@ -3124,15 +3343,10 @@ ble_gap_ext_adv_remove(uint8_t instance) return BLE_HS_EBUSY; } + cmd.adv_handle = instance; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_REMOVE_ADV_SET); - rc = ble_hs_hci_cmd_build_le_ext_adv_remove(instance, buf, sizeof(buf)); - if (rc != 0) { - ble_hs_unlock(); - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { ble_hs_unlock(); return rc; @@ -3172,7 +3386,7 @@ ble_gap_ext_adv_clear(void) opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_CLEAR_ADV_SETS); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, NULL, 0); + rc = ble_hs_hci_cmd_tx(opcode, NULL, 0, NULL, 0); if (rc != 0) { ble_hs_unlock(); return rc; @@ -3187,44 +3401,34 @@ ble_gap_ext_adv_clear(void) #if MYNEWT_VAL(BLE_PERIODIC_ADV) static int ble_gap_periodic_adv_params_tx(uint8_t instance, - const struct ble_gap_periodic_adv_params *params) + const struct ble_gap_periodic_adv_params *params) { - struct hci_periodic_adv_params hci_adv_params; - uint8_t buf[BLE_HCI_LE_SET_PERIODIC_ADV_PARAMS_LEN]; - int rc; + struct ble_hci_le_set_periodic_adv_params_cp cmd; + uint16_t opcode; - memset(&hci_adv_params, 0, sizeof(hci_adv_params)); - - if (params->include_tx_power) { - hci_adv_params.properties |= BLE_HCI_LE_SET_PERIODIC_ADV_PROP_INC_TX_PWR; - } + cmd.adv_handle = instance; /* Fill optional fields if application did not specify them. */ if (params->itvl_min == 0 && params->itvl_max == 0) { - hci_adv_params.min_interval = 30 / 1.25; //30 ms - hci_adv_params.max_interval = 60 / 1.25; //150 ms + /* TODO defines for those */ + cmd.min_itvl = htole16(30 / 1.25); //30 ms + cmd.max_itvl = htole16(60 / 1.25); //150 ms } else { - hci_adv_params.min_interval = params->itvl_min; - hci_adv_params.max_interval = params->itvl_max; + cmd.min_itvl = htole16( params->itvl_min); + cmd.max_itvl = htole16(params->itvl_max); } - rc = ble_hs_hci_cmd_build_le_periodic_adv_params(instance, &hci_adv_params, buf, - sizeof(buf)); - if (rc != 0) { - return rc; + if (params->include_tx_power) { + cmd.props = BLE_HCI_LE_SET_PERIODIC_ADV_PROP_INC_TX_PWR; + } else { + cmd.props = 0; } - rc = ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_PARAMS), buf, - sizeof(buf)); + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_PARAMS); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); } static int @@ -3292,7 +3496,7 @@ ble_gap_periodic_adv_configure(uint8_t instance, int ble_gap_periodic_adv_start(uint8_t instance) { - uint8_t buf[BLE_HCI_LE_SET_PERIODIC_ADV_ENABLE_LEN]; + struct ble_hci_le_set_periodic_adv_enable_cp cmd; uint16_t opcode; int rc; @@ -3308,16 +3512,12 @@ ble_gap_periodic_adv_start(uint8_t instance) return BLE_HS_EINVAL; } - opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_PERIODIC_ADV_ENABLE); - rc = ble_hs_hci_cmd_build_le_periodic_adv_enable(1, instance, buf, - sizeof(buf)); - if (rc != 0) { - ble_hs_unlock(); - return rc; - } + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_ENABLE); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + cmd.enable = 0x01; + cmd.adv_handle = instance; + + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { ble_hs_unlock(); return rc; @@ -3330,57 +3530,51 @@ ble_gap_periodic_adv_start(uint8_t instance) } static int -ble_gap_periodic_adv_set(uint8_t instance, uint16_t opcode, - struct os_mbuf **data) +ble_gap_periodic_adv_set(uint8_t instance, struct os_mbuf **data) { /* In that case we always fit all data in single HCI command */ #if MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE) <= BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN - - static uint8_t buf[BLE_HCI_SET_PERIODIC_ADV_DATA_HDR_LEN + + static uint8_t buf[sizeof(struct ble_hci_le_set_periodic_adv_data_cp) + MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)]; + struct ble_hci_le_set_periodic_adv_data_cp *cmd = (void *) buf; uint16_t len = OS_MBUF_PKTLEN(*data); - int rc; + uint16_t opcode; - opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, opcode); + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_DATA); - rc = ble_hs_hci_cmd_build_le_periodic_adv_data( - instance, - BLE_HCI_LE_SET_DATA_OPER_COMPLETE, - *data, len, - buf, sizeof(buf)); + cmd->adv_handle = instance; + cmd->operation = BLE_HCI_LE_SET_DATA_OPER_COMPLETE; + cmd->adv_data_len = len; + os_mbuf_copydata(*data, 0, len, cmd->adv_data); - if (rc) { - return rc; - } - - os_mbuf_adj(*data, MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)); + os_mbuf_adj(*data, len); *data = os_mbuf_trim_front(*data); - return ble_hs_hci_cmd_tx_empty_ack(opcode, buf, - BLE_HCI_SET_PERIODIC_ADV_DATA_HDR_LEN + len); + return ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); #else - static uint8_t buf[BLE_HCI_SET_PERIODIC_ADV_DATA_HDR_LEN + + static uint8_t buf[sizeof(struct ble_hci_le_set_periodic_adv_data_cp) + BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN]; + struct ble_hci_le_set_periodic_adv_data_cp *cmd = (void *) buf; uint16_t len = OS_MBUF_PKTLEN(*data); + uint16_t opcode; uint8_t op; int rc; - opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, opcode); + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_DATA); + cmd->adv_handle = instance; /* Complete data */ if (len <= BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN) { - rc = ble_hs_hci_cmd_build_le_periodic_adv_data(instance, - BLE_HCI_LE_SET_DATA_OPER_COMPLETE, *data, len, buf, - sizeof(buf)); - if (rc) { - return rc; - } + cmd->operation = BLE_HCI_LE_SET_DATA_OPER_COMPLETE; + cmd->adv_data_len = len; + os_mbuf_copydata(*data, 0, len, cmd->adv_data); os_mbuf_adj(*data, len); *data = os_mbuf_trim_front(*data); - return ble_hs_hci_cmd_tx_empty_ack(opcode, buf, - BLE_HCI_SET_PERIODIC_ADV_DATA_HDR_LEN + len); + return ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); } /* If the periodic advertising is already enabled, the periodic advertising @@ -3395,16 +3589,16 @@ ble_gap_periodic_adv_set(uint8_t instance, uint16_t opcode, op = BLE_HCI_LE_SET_DATA_OPER_FIRST; do{ - rc = ble_hs_hci_cmd_build_le_periodic_adv_data(instance, op, *data, - BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN, buf, sizeof(buf)); - if (rc) { - return rc; - } + cmd->operation = op; + cmd->adv_data_len = BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN; + os_mbuf_copydata(*data, 0, BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN, + cmd->adv_data); os_mbuf_adj(*data, BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN); *data = os_mbuf_trim_front(*data); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + rc = ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); if (rc) { return rc; } @@ -3414,19 +3608,15 @@ ble_gap_periodic_adv_set(uint8_t instance, uint16_t opcode, } while (len > BLE_HCI_MAX_PERIODIC_ADV_DATA_LEN); /* Last fragment */ - rc = ble_hs_hci_cmd_build_le_periodic_adv_data( - instance, - BLE_HCI_LE_SET_DATA_OPER_LAST, - *data, len, buf, sizeof(buf)); - if (rc) { - return rc; - } + cmd->operation = BLE_HCI_LE_SET_DATA_OPER_LAST; + cmd->adv_data_len = len; + os_mbuf_copydata(*data, 0, len, cmd->adv_data); os_mbuf_adj(*data, len); *data = os_mbuf_trim_front(*data); - return ble_hs_hci_cmd_tx_empty_ack(opcode, buf, - BLE_HCI_SET_PERIODIC_ADV_DATA_HDR_LEN + len); + return ble_hs_hci_cmd_tx(opcode, cmd, sizeof(*cmd) + cmd->adv_data_len, + NULL, 0); #endif } @@ -3469,8 +3659,7 @@ ble_gap_periodic_adv_set_data(uint8_t instance, struct os_mbuf *data) goto done; } - rc = ble_gap_periodic_adv_set(instance, - BLE_HCI_OCF_LE_SET_PERIODIC_ADV_DATA, &data); + rc = ble_gap_periodic_adv_set(instance, &data); ble_hs_unlock(); @@ -3482,18 +3671,16 @@ done: static int ble_gap_periodic_adv_stop_no_lock(uint8_t instance) { - uint8_t buf[BLE_HCI_LE_SET_PERIODIC_ADV_ENABLE_LEN]; + struct ble_hci_le_set_periodic_adv_enable_cp cmd; uint16_t opcode; int rc; + cmd.enable = 0x00; + cmd.adv_handle = instance; + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PERIODIC_ADV_ENABLE); - rc = ble_hs_hci_cmd_build_le_periodic_adv_enable(0, instance, buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { return rc; } @@ -3548,14 +3735,25 @@ ble_gap_npl_sync_lost(struct ble_npl_event *ev) } int -ble_gap_periodic_adv_create_sync(const ble_addr_t *addr, uint8_t adv_sid, +ble_gap_periodic_adv_sync_create(const ble_addr_t *addr, uint8_t adv_sid, const struct ble_gap_periodic_sync_params *params, ble_gap_event_fn *cb, void *cb_arg) { - uint8_t buf[BLE_HCI_LE_PERIODIC_ADV_CREATE_SYNC_LEN]; + struct ble_hci_le_periodic_adv_create_sync_cp cmd; struct ble_hs_periodic_sync *psync; uint16_t opcode; - int rc = 0; + int rc; + + if (addr && (addr->type > BLE_ADDR_RANDOM)) { + return BLE_HS_EINVAL; + } + if (adv_sid > 0x0f) { + return BLE_HS_EINVAL; + } + if ((params->skip > 0x1f3) || (params->sync_timeout > 0x4000) || + (params->sync_timeout < 0x0A)) { + return BLE_HS_EINVAL; + } ble_hs_lock(); @@ -3581,24 +3779,22 @@ ble_gap_periodic_adv_create_sync(const ble_addr_t *addr, uint8_t adv_sid, ble_npl_event_init(&psync->lost_ev, ble_gap_npl_sync_lost, psync); if (addr) { - rc = ble_hs_hci_cmd_build_le_periodic_adv_create_sync(0x00, adv_sid, - addr->type, addr->val, params->skip, - params->sync_timeout, buf, sizeof(buf)); + cmd.options = 0x00; + cmd.peer_addr_type = addr->type; + memcpy(cmd.peer_addr, addr->val, BLE_DEV_ADDR_LEN); } else { - rc = ble_hs_hci_cmd_build_le_periodic_adv_create_sync(0x01, adv_sid, - BLE_ADDR_ANY->type, BLE_ADDR_ANY->val, params->skip, - params->sync_timeout, buf, sizeof(buf)); + cmd.options = 0x01; + cmd.peer_addr_type = BLE_ADDR_ANY->type; + memcpy(cmd.peer_addr, BLE_ADDR_ANY->val, BLE_DEV_ADDR_LEN); } - if (rc != 0) { - ble_hs_periodic_sync_free(psync); - ble_hs_unlock(); - return rc; - } + cmd.sid = adv_sid; + cmd.skip = params->skip; + cmd.sync_timeout = htole16(params->sync_timeout); + cmd.sync_cte_type = 0x00; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_CREATE_SYNC); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); - + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); if (!rc) { /* This shall be reset upon receiving sync_established event, * or if the sync is cancelled before receiving that event. @@ -3617,7 +3813,7 @@ ble_gap_periodic_adv_create_sync(const ble_addr_t *addr, uint8_t adv_sid, } int -ble_gap_periodic_adv_create_sync_cancel(void) +ble_gap_periodic_adv_sync_create_cancel(void) { uint16_t opcode; int rc = 0; @@ -3632,15 +3828,7 @@ ble_gap_periodic_adv_create_sync_cancel(void) opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_CREATE_SYNC_CANCEL); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, NULL, 0); - - if (!rc) { - ble_gap_sync.op = BLE_GAP_OP_NULL; - ble_gap_sync.cb = NULL; - ble_gap_sync.cb_arg = NULL; - ble_hs_periodic_sync_free(ble_gap_sync.psync); - ble_gap_sync.psync = NULL; - } + rc = ble_hs_hci_cmd_tx(opcode, NULL, 0, NULL, 0); ble_hs_unlock(); @@ -3648,12 +3836,12 @@ ble_gap_periodic_adv_create_sync_cancel(void) } int -ble_gap_periodic_adv_terminate_sync(uint16_t sync_handle) +ble_gap_periodic_adv_sync_terminate(uint16_t sync_handle) { - uint8_t buf[BLE_HCI_LE_PERIODIC_ADV_TERM_SYNC_LEN]; - uint16_t opcode; + struct ble_hci_le_periodic_adv_term_sync_cp cmd; struct ble_hs_periodic_sync *psync; - int rc = 0; + uint16_t opcode; + int rc; ble_hs_lock(); @@ -3675,15 +3863,9 @@ ble_gap_periodic_adv_terminate_sync(uint16_t sync_handle) opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_TERM_SYNC); - rc = ble_hs_hci_cmd_build_le_periodic_adv_terminate_sync(sync_handle, - buf, sizeof(buf)); - if (rc != 0) { - ble_hs_unlock(); - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + cmd.sync_handle = htole16(sync_handle); + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); if (rc == 0) { /* Remove the handle from the list */ ble_hs_periodic_sync_remove(psync); @@ -3698,52 +3880,245 @@ ble_gap_periodic_adv_terminate_sync(uint16_t sync_handle) return rc; } - +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) int -ble_gap_add_dev_to_periodic_adv_list(const ble_addr_t *peer_addr, - uint8_t adv_sid) +ble_gap_periodic_adv_sync_reporting(uint16_t sync_handle, bool enable) { - uint8_t buf[BLE_HCI_LE_ADD_DEV_TO_PERIODIC_ADV_LIST_LEN]; + struct ble_hci_le_periodic_adv_receive_enable_cp cmd; + struct ble_hs_periodic_sync *psync; uint16_t opcode; - int rc = 0; + int rc; - opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_ADD_DEV_TO_PERIODIC_ADV_LIST); + ble_hs_lock(); - rc = ble_hs_hci_cmd_build_le_add_dev_to_periodic_adv_list(peer_addr->type, - peer_addr->val, - adv_sid, buf, - sizeof(buf)); - if (rc != 0) { - return rc; + if (ble_gap_sync.op == BLE_GAP_OP_SYNC) { + ble_hs_unlock(); + return BLE_HS_EBUSY; } - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); + psync = ble_hs_periodic_sync_find_by_handle(sync_handle); + if (!psync) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_RECEIVE_ENABLE); + + cmd.sync_handle = htole16(sync_handle); + cmd.enable = enable ? 0x01 : 0x00; + + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); + + ble_hs_unlock(); return rc; } +int +ble_gap_periodic_adv_sync_transfer(uint16_t sync_handle, uint16_t conn_handle, + uint16_t service_data) +{ + struct ble_hci_le_periodic_adv_sync_transfer_cp cmd; + struct ble_hci_le_periodic_adv_sync_transfer_rp rsp; + struct ble_hs_periodic_sync *psync; + struct ble_hs_conn *conn; + uint16_t opcode; + int rc; + + ble_hs_lock(); + + conn = ble_hs_conn_find(conn_handle); + if (!conn) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + psync = ble_hs_periodic_sync_find_by_handle(sync_handle); + if (!psync) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_SYNC_TRANSFER); + + cmd.conn_handle = htole16(conn_handle); + cmd.sync_handle = htole16(sync_handle); + cmd.service_data = htole16(service_data); + + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), &rsp, sizeof(rsp)); + if (!rc) { + BLE_HS_DBG_ASSERT(le16toh(rsp.conn_handle) == conn_handle); + } + + ble_hs_unlock(); + + return rc; +} + +int +ble_gap_periodic_adv_sync_set_info(uint8_t instance, uint16_t conn_handle, + uint16_t service_data) +{ + struct ble_hci_le_periodic_adv_set_info_transfer_cp cmd; + struct ble_hci_le_periodic_adv_set_info_transfer_rp rsp; + struct ble_hs_conn *conn; + uint16_t opcode; + int rc; + + if (instance >= BLE_ADV_INSTANCES) { + return BLE_HS_EINVAL; + } + + ble_hs_lock(); + if (ble_gap_slave[instance].periodic_op != BLE_GAP_OP_S_PERIODIC_ADV) { + /* periodic adv not enabled */ + ble_hs_unlock(); + return BLE_HS_EINVAL; + } + + conn = ble_hs_conn_find(conn_handle); + if (!conn) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_SET_INFO_TRANSFER); + + cmd.conn_handle = htole16(conn_handle); + cmd.adv_handle = instance; + cmd.service_data = htole16(service_data); + + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), &rsp, sizeof(rsp)); + if (!rc) { + BLE_HS_DBG_ASSERT(le16toh(rsp.conn_handle) == conn_handle); + } + + ble_hs_unlock(); + + return rc; +} + +static int +periodic_adv_transfer_enable(uint16_t conn_handle, + const struct ble_gap_periodic_sync_params *params) +{ + struct ble_hci_le_periodic_adv_sync_transfer_params_cp cmd; + struct ble_hci_le_periodic_adv_sync_transfer_params_rp rsp; + uint16_t opcode; + int rc; + + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_PERIODIC_ADV_SYNC_TRANSFER_PARAMS); + + cmd.conn_handle = htole16(conn_handle); + cmd.sync_cte_type = 0x00; + cmd.mode = params->reports_disabled ? 0x01 : 0x02; + cmd.skip = htole16(params->skip); + cmd.sync_timeout = htole16(params->sync_timeout); + + rc = ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), &rsp, sizeof(rsp)); + if (!rc) { + BLE_HS_DBG_ASSERT(le16toh(rsp.conn_handle) == conn_handle); + } + + return rc; +} + +int +ble_gap_periodic_adv_sync_receive(uint16_t conn_handle, + const struct ble_gap_periodic_sync_params *params, + ble_gap_event_fn *cb, void *cb_arg) +{ + struct ble_hs_conn *conn; + int rc; + + ble_hs_lock(); + + conn = ble_hs_conn_find(conn_handle); + if (!conn) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + if (params) { + if (conn->psync) { + ble_hs_unlock(); + return BLE_HS_EALREADY; + } + + conn->psync = ble_hs_periodic_sync_alloc(); + if (!conn->psync) { + ble_hs_unlock(); + return BLE_HS_ENOMEM; + } + + rc = periodic_adv_transfer_enable(conn_handle, params); + if (rc) { + ble_hs_periodic_sync_free(conn->psync); + conn->psync = NULL; + } else { + conn->psync->cb = cb; + conn->psync->cb_arg = cb_arg; + ble_npl_event_init(&conn->psync->lost_ev, ble_gap_npl_sync_lost, + conn->psync); + } + } else { + if (!conn->psync) { + ble_hs_unlock(); + return BLE_HS_EALREADY; + } + + rc = periodic_adv_transfer_disable(conn_handle); + if (!rc) { + ble_hs_periodic_sync_free(conn->psync); + conn->psync = NULL; + } + } + + ble_hs_unlock(); + + return rc; +} +#endif + +int +ble_gap_add_dev_to_periodic_adv_list(const ble_addr_t *peer_addr, + uint8_t adv_sid) +{ + struct ble_hci_le_add_dev_to_periodic_adv_list_cp cmd; + uint16_t opcode; + + if ((peer_addr->type > BLE_ADDR_RANDOM) || (adv_sid > 0x0f)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + cmd.peer_addr_type = peer_addr->type; + memcpy(cmd.peer_addr, peer_addr->val, BLE_DEV_ADDR_LEN); + cmd.sid = adv_sid; + + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_ADD_DEV_TO_PERIODIC_ADV_LIST); + + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); +} + int ble_gap_rem_dev_from_periodic_adv_list(const ble_addr_t *peer_addr, uint8_t adv_sid) { - uint8_t buf[BLE_HCI_LE_REM_DEV_FROM_PERIODIC_ADV_LIST_LEN]; + struct ble_hci_le_rem_dev_from_periodic_adv_list_cp cmd; uint16_t opcode; - int rc = 0; + + if ((peer_addr->type > BLE_ADDR_RANDOM) || (adv_sid > 0x0f)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + cmd.peer_addr_type = peer_addr->type; + memcpy(cmd.peer_addr, peer_addr->val, BLE_DEV_ADDR_LEN); + cmd.sid = adv_sid; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_REM_DEV_FROM_PERIODIC_ADV_LIST); - rc = ble_hs_hci_cmd_build_le_rem_dev_from_periodic_adv_list(peer_addr->type, - peer_addr->val, - adv_sid, buf, - sizeof(buf)); - if (rc != 0) { - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, buf, sizeof(buf)); - - return rc; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); } int @@ -3754,7 +4129,7 @@ ble_gap_clear_periodic_adv_list(void) opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_CLEAR_PERIODIC_ADV_LIST); - rc = ble_hs_hci_cmd_tx_empty_ack(opcode, NULL, 0); + rc = ble_hs_hci_cmd_tx(opcode, NULL, 0, NULL, 0); return rc; } @@ -3762,23 +4137,18 @@ ble_gap_clear_periodic_adv_list(void) int ble_gap_read_periodic_adv_list_size(uint8_t *per_adv_list_size) { - uint8_t rspbuf[1]; - uint8_t rsplen; + struct ble_hci_le_rd_periodic_adv_list_size_rp rsp; uint16_t opcode; int rc = 0; opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RD_PERIODIC_ADV_LIST_SIZE); - rc = ble_hs_hci_cmd_tx(opcode, NULL, 0, rspbuf, sizeof(rspbuf), &rsplen); + rc = ble_hs_hci_cmd_tx(opcode, NULL, 0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (rsplen != sizeof(rspbuf)) { - return BLE_HS_ECONTROLLER; - } - - *per_adv_list_size = rspbuf[0]; + *per_adv_list_size = rsp.list_size; return 0; } @@ -3794,58 +4164,73 @@ ble_gap_ext_disc_tx_params(uint8_t own_addr_type, uint8_t filter_policy, const struct ble_hs_hci_ext_scan_param *uncoded_params, const struct ble_hs_hci_ext_scan_param *coded_params) { - uint8_t buf[BLE_HCI_LE_EXT_SCAN_BASE_LEN + - 2 * BLE_HCI_LE_EXT_SCAN_SINGLE_PARAM_LEN]; - uint8_t phy_mask = 0; - struct ble_hs_hci_ext_scan_param param[2] = {{0}}; - struct ble_hs_hci_ext_scan_param *p = param; - int phy_count = 0; - uint8_t len; - int rc; + struct ble_hci_le_set_ext_scan_params_cp *cmd; + struct scan_params *params; + uint8_t buf[sizeof(*cmd) + 2 * sizeof(*params)]; + uint8_t len = sizeof(*cmd); + + /* Check own addr type */ + if (own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check scanner filter policy */ + if (filter_policy > BLE_HCI_SCAN_FILT_MAX) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + cmd = (void *) buf; + params = cmd->scans; + + cmd->filter_policy = filter_policy; + cmd->own_addr_type = own_addr_type; + cmd->phys = 0; if (uncoded_params) { - phy_mask |= BLE_HCI_LE_PHY_1M_PREF_MASK; - memcpy(¶m[phy_count], uncoded_params, sizeof(*uncoded_params)); - phy_count++; + cmd->phys |= BLE_HCI_LE_PHY_1M_PREF_MASK; + + params->type = uncoded_params->scan_type; + params->itvl = htole16(uncoded_params->scan_itvl); + params->window = htole16(uncoded_params->scan_window); + + len += sizeof(*params); + params++; } if (coded_params) { - phy_mask |= BLE_HCI_LE_PHY_CODED_PREF_MASK; - memcpy(¶m[phy_count], coded_params, sizeof(*coded_params)); - phy_count++; + cmd->phys |= BLE_HCI_LE_PHY_CODED_PREF_MASK; + + params->type = coded_params->scan_type; + params->itvl = htole16(coded_params->scan_itvl); + params->window = htole16(coded_params->scan_window); + + len += sizeof(*params); + params++; } - rc = ble_hs_hci_cmd_build_le_set_ext_scan_params(own_addr_type, - filter_policy, - phy_mask, - phy_count, - &p, buf, sizeof(buf)); - - if (rc != 0) { - return BLE_HS_EINVAL; + if (!cmd->phys) { + return BLE_ERR_INV_HCI_CMD_PARMS; } - len = BLE_HCI_LE_EXT_SCAN_BASE_LEN + - BLE_HCI_LE_EXT_SCAN_SINGLE_PARAM_LEN * phy_count; - - return ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_EXT_SCAN_PARAM), - buf, len); + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_EXT_SCAN_PARAM), + cmd, len, NULL, 0); } static int ble_gap_ext_disc_enable_tx(uint8_t enable, uint8_t filter_duplicates, uint16_t duration, uint16_t period) { - uint8_t buf[BLE_HCI_LE_SET_EXT_SCAN_ENABLE_LEN]; + struct ble_hci_le_set_ext_scan_enable_cp cmd; - ble_hs_hci_cmd_build_le_set_ext_scan_enable(enable, filter_duplicates, - duration, period, - buf, sizeof buf); + cmd.enable = enable; + cmd.filter_dup = filter_duplicates; + cmd.duration = htole16(duration); + cmd.period = htole16(period); - return ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_EXT_SCAN_ENABLE), - buf, sizeof(buf)); + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_EXT_SCAN_ENABLE), + &cmd, sizeof(cmd), NULL, 0); } #endif #endif @@ -3854,53 +4239,38 @@ ble_gap_ext_disc_enable_tx(uint8_t enable, uint8_t filter_duplicates, static int ble_gap_disc_enable_tx(int enable, int filter_duplicates) { - uint8_t buf[BLE_HCI_SET_SCAN_ENABLE_LEN]; - int rc; + struct ble_hci_le_set_scan_enable_cp cmd; + uint16_t opcode; - ble_hs_hci_cmd_build_le_set_scan_enable(!!enable, !!filter_duplicates, - buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_SCAN_ENABLE), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + cmd.enable = !!enable; + cmd.filter_duplicates = !!filter_duplicates; - return 0; + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_SCAN_ENABLE); + + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); } static int ble_gap_disc_tx_params(uint8_t own_addr_type, const struct ble_gap_disc_params *disc_params) { - uint8_t buf[BLE_HCI_SET_SCAN_PARAM_LEN]; - uint8_t scan_type; - int rc; + struct ble_hci_le_set_scan_params_cp cmd; + uint16_t opcode; if (disc_params->passive) { - scan_type = BLE_HCI_SCAN_TYPE_PASSIVE; + cmd.scan_type = BLE_HCI_SCAN_TYPE_PASSIVE; } else { - scan_type = BLE_HCI_SCAN_TYPE_ACTIVE; + cmd.scan_type = BLE_HCI_SCAN_TYPE_ACTIVE; } - rc = ble_hs_hci_cmd_build_le_set_scan_params(scan_type, - disc_params->itvl, - disc_params->window, - own_addr_type, - disc_params->filter_policy, - buf, sizeof buf); - if (rc != 0) { - return BLE_HS_EINVAL; - } + cmd.scan_itvl = htole16(disc_params->itvl); + cmd.scan_window = htole16(disc_params->window); + cmd.own_addr_type = own_addr_type; + cmd.filter_policy = disc_params->filter_policy; - rc = ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_SCAN_PARAMS), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_SCAN_PARAMS); - return 0; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); } #endif @@ -3945,10 +4315,7 @@ done: int ble_gap_disc_cancel(void) { -#if !NIMBLE_BLE_SCAN - return BLE_HS_ENOTSUP; -#else - +#if NIMBLE_BLE_SCAN int rc; ble_hs_lock(); @@ -3956,6 +4323,8 @@ ble_gap_disc_cancel(void) ble_hs_unlock(); return rc; +#else + return BLE_HS_ENOTSUP; #endif } @@ -4035,10 +4404,7 @@ ble_gap_ext_disc(uint8_t own_addr_type, uint16_t duration, uint16_t period, const struct ble_gap_ext_disc_params *coded_params, ble_gap_event_fn *cb, void *cb_arg) { -#if !NIMBLE_BLE_SCAN || !MYNEWT_VAL(BLE_EXT_ADV) - return BLE_HS_ENOTSUP; -#else - +#if NIMBLE_BLE_SCAN && MYNEWT_VAL(BLE_EXT_ADV) struct ble_hs_hci_ext_scan_param ucp; struct ble_hs_hci_ext_scan_param cp; int rc; @@ -4110,6 +4476,8 @@ done: STATS_INC(ble_gap_stats, discover_fail); } return rc; +#else + return BLE_HS_ENOTSUP; #endif } @@ -4142,6 +4510,20 @@ ble_gap_disc_validate(uint8_t own_addr_type, return BLE_HS_EINVAL; } + /* Check interval and window */ + if ((disc_params->itvl < BLE_HCI_SCAN_ITVL_MIN) || + (disc_params->itvl > BLE_HCI_SCAN_ITVL_MAX) || + (disc_params->window < BLE_HCI_SCAN_WINDOW_MIN) || + (disc_params->window > BLE_HCI_SCAN_WINDOW_MAX) || + (disc_params->itvl < disc_params->window)) { + return BLE_HS_EINVAL; + } + + /* Check scanner filter policy */ + if (disc_params->filter_policy > BLE_HCI_SCAN_FILT_MAX) { + return BLE_HS_EINVAL; + } + return ble_gap_disc_ext_validate(own_addr_type); } #endif @@ -4151,10 +4533,7 @@ ble_gap_disc(uint8_t own_addr_type, int32_t duration_ms, const struct ble_gap_disc_params *disc_params, ble_gap_event_fn *cb, void *cb_arg) { -#if !NIMBLE_BLE_SCAN - return BLE_HS_ENOTSUP; -#else - +#if NIMBLE_BLE_SCAN #if MYNEWT_VAL(BLE_EXT_ADV) struct ble_gap_ext_disc_params p = {0}; @@ -4162,6 +4541,12 @@ ble_gap_disc(uint8_t own_addr_type, int32_t duration_ms, p.passive = disc_params->passive; p.window = disc_params->window; + if (duration_ms == BLE_HS_FOREVER) { + duration_ms = 0; + } else if (duration_ms == 0) { + duration_ms = BLE_GAP_DISC_DUR_DFLT; + } + return ble_gap_ext_disc(own_addr_type, duration_ms/10, 0, disc_params->filter_duplicates, disc_params->filter_policy, disc_params->limited, @@ -4241,6 +4626,8 @@ done: } return rc; #endif +#else + return BLE_HS_ENOTSUP; #endif } @@ -4251,7 +4638,7 @@ ble_gap_disc_active(void) return ble_gap_master.op == BLE_GAP_OP_M_DISC; } -#if !MYNEWT_VAL(BLE_EXT_ADV) +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) && !MYNEWT_VAL(BLE_EXT_ADV) /***************************************************************************** * $connection establishment procedures * *****************************************************************************/ @@ -4260,64 +4647,84 @@ static int ble_gap_conn_create_tx(uint8_t own_addr_type, const ble_addr_t *peer_addr, const struct ble_gap_conn_params *params) { - uint8_t buf[BLE_HCI_CREATE_CONN_LEN]; - struct hci_create_conn hcc; - int rc; - - hcc.scan_itvl = params->scan_itvl; - hcc.scan_window = params->scan_window; + struct ble_hci_le_create_conn_cp cmd; + uint16_t opcode; + cmd.scan_itvl = htole16(params->scan_itvl); + cmd.scan_window = htole16(params->scan_window); if (peer_addr == NULL) { /* Application wants to connect to any device in the white list. The * peer address type and peer address fields are ignored by the * controller; fill them with dummy values. */ - hcc.filter_policy = BLE_HCI_CONN_FILT_USE_WL; - hcc.peer_addr_type = 0; - memset(hcc.peer_addr, 0, sizeof hcc.peer_addr); + cmd.filter_policy = BLE_HCI_CONN_FILT_USE_WL; + cmd.peer_addr_type = 0; + memset(cmd.peer_addr, 0, sizeof(cmd.peer_addr)); } else { - hcc.filter_policy = BLE_HCI_CONN_FILT_NO_WL; - hcc.peer_addr_type = peer_addr->type; - memcpy(hcc.peer_addr, peer_addr->val, sizeof hcc.peer_addr); + cmd.filter_policy = BLE_HCI_CONN_FILT_NO_WL; + cmd.peer_addr_type = peer_addr->type; + memcpy(cmd.peer_addr, peer_addr->val, sizeof(cmd.peer_addr)); } - hcc.own_addr_type = own_addr_type; - hcc.conn_itvl_min = params->itvl_min; - hcc.conn_itvl_max = params->itvl_max; - hcc.conn_latency = params->latency; - hcc.supervision_timeout = params->supervision_timeout; - hcc.min_ce_len = params->min_ce_len; - hcc.max_ce_len = params->max_ce_len; + cmd.own_addr_type = own_addr_type; + cmd.min_conn_itvl = htole16(params->itvl_min); + cmd.max_conn_itvl = htole16(params->itvl_max); + cmd.conn_latency = htole16(params->latency); + cmd.tmo = htole16(params->supervision_timeout); + cmd.min_ce = htole16(params->min_ce_len); + cmd.max_ce = htole16(params->max_ce_len); - rc = ble_hs_hci_cmd_build_le_create_connection(&hcc, buf, sizeof buf); - if (rc != 0) { - return BLE_HS_EUNKNOWN; - } + opcode = BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_CREATE_CONN); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_CREATE_CONN), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(opcode, &cmd, sizeof(cmd), NULL, 0); } #endif #if MYNEWT_VAL(BLE_EXT_ADV) -static void -ble_gap_copy_params(struct hci_ext_conn_params *hcc_params, - const struct ble_gap_conn_params *gap_params) +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) +static int +ble_gap_check_conn_params(uint8_t phy, const struct ble_gap_conn_params *params) { - hcc_params->scan_itvl = gap_params->scan_itvl; - hcc_params->scan_window = gap_params->scan_window; - hcc_params->conn_itvl_max = gap_params->itvl_max; - hcc_params->conn_itvl_min = gap_params->itvl_min; - hcc_params->max_ce_len = gap_params->max_ce_len; - hcc_params->min_ce_len = gap_params->min_ce_len; - hcc_params->conn_latency = gap_params->latency; - hcc_params->supervision_timeout = gap_params->supervision_timeout; + if (phy != BLE_HCI_LE_PHY_2M) { + /* Check scan interval and window */ + if ((params->scan_itvl < BLE_HCI_SCAN_ITVL_MIN) || + (params->scan_itvl > BLE_HCI_SCAN_ITVL_MAX) || + (params->scan_window < BLE_HCI_SCAN_WINDOW_MIN) || + (params->scan_window > BLE_HCI_SCAN_WINDOW_MAX) || + (params->scan_itvl < params->scan_window)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + } + /* Check connection interval min */ + if ((params->itvl_min < BLE_HCI_CONN_ITVL_MIN) || + (params->itvl_min > BLE_HCI_CONN_ITVL_MAX)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + /* Check connection interval max */ + if ((params->itvl_max < BLE_HCI_CONN_ITVL_MIN) || + (params->itvl_max > BLE_HCI_CONN_ITVL_MAX) || + (params->itvl_max < params->itvl_min)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check connection latency */ + if ((params->latency < BLE_HCI_CONN_LATENCY_MIN) || + (params->latency > BLE_HCI_CONN_LATENCY_MAX)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check supervision timeout */ + if ((params->supervision_timeout < BLE_HCI_CONN_SPVN_TIMEOUT_MIN) || + (params->supervision_timeout > BLE_HCI_CONN_SPVN_TIMEOUT_MAX)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + /* Check connection event length */ + if (params->min_ce_len > params->max_ce_len) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + return 0; } static int @@ -4327,57 +4734,110 @@ ble_gap_ext_conn_create_tx( const struct ble_gap_conn_params *phy_2m_conn_params, const struct ble_gap_conn_params *phy_coded_conn_params) { - uint8_t buf[sizeof(struct hci_ext_create_conn)]; - struct hci_ext_create_conn hcc = {0}; + struct ble_hci_le_ext_create_conn_cp *cmd; + struct conn_params *params; + uint8_t buf[sizeof(*cmd) + 3 * sizeof(*params)]; + uint8_t len = sizeof(*cmd); int rc; + /* Check own addr type */ + if (own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + if (phy_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | + BLE_HCI_LE_PHY_2M_PREF_MASK | + BLE_HCI_LE_PHY_CODED_PREF_MASK)) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + cmd = (void *) buf; + params = cmd->conn_params; + if (peer_addr == NULL) { /* Application wants to connect to any device in the white list. The * peer address type and peer address fields are ignored by the * controller; fill them with dummy values. */ - hcc.filter_policy = BLE_HCI_CONN_FILT_USE_WL; - hcc.peer_addr_type = 0; - memset(hcc.peer_addr, 0, sizeof hcc.peer_addr); + cmd->filter_policy = BLE_HCI_CONN_FILT_USE_WL; + cmd->peer_addr_type = 0; + memset(cmd->peer_addr, 0, sizeof(cmd->peer_addr)); } else { - hcc.filter_policy = BLE_HCI_CONN_FILT_NO_WL; - hcc.peer_addr_type = peer_addr->type;; - memcpy(hcc.peer_addr, peer_addr->val, sizeof hcc.peer_addr); + /* Check peer addr type */ + if (peer_addr->type > BLE_HCI_CONN_PEER_ADDR_MAX) { + return BLE_ERR_INV_HCI_CMD_PARMS; + } + + cmd->filter_policy = BLE_HCI_CONN_FILT_NO_WL; + cmd->peer_addr_type = peer_addr->type; + memcpy(cmd->peer_addr, peer_addr->val, sizeof(cmd->peer_addr)); } - hcc.own_addr_type = own_addr_type; - - hcc.init_phy_mask = phy_mask; + cmd->own_addr_type = own_addr_type; + cmd->init_phy_mask = phy_mask; if (phy_mask & BLE_GAP_LE_PHY_1M_MASK) { - /* XXX same structs */ - ble_gap_copy_params(&hcc.params[0], phy_1m_conn_params); + rc = ble_gap_check_conn_params(BLE_HCI_LE_PHY_1M, phy_1m_conn_params); + if (rc) { + return rc; + } + + params->scan_itvl = htole16(phy_1m_conn_params->scan_itvl); + params->scan_window = htole16(phy_1m_conn_params->scan_window); + params->conn_min_itvl = htole16(phy_1m_conn_params->itvl_min); + params->conn_max_itvl = htole16(phy_1m_conn_params->itvl_max); + params->conn_latency = htole16(phy_1m_conn_params->latency); + params->supervision_timeout = htole16(phy_1m_conn_params->supervision_timeout); + params->min_ce = htole16(phy_1m_conn_params->min_ce_len); + params->max_ce = htole16(phy_1m_conn_params->max_ce_len); + + params++; + len += sizeof(*params); } if (phy_mask & BLE_GAP_LE_PHY_2M_MASK) { - /* XXX same structs */ - ble_gap_copy_params(&hcc.params[1], phy_2m_conn_params); + rc = ble_gap_check_conn_params(BLE_HCI_LE_PHY_2M, phy_2m_conn_params); + if (rc) { + return rc; + } + + params->scan_itvl = htole16(phy_2m_conn_params->scan_itvl); + params->scan_window = htole16(phy_2m_conn_params->scan_window); + params->conn_min_itvl = htole16(phy_2m_conn_params->itvl_min); + params->conn_max_itvl = htole16(phy_2m_conn_params->itvl_max); + params->conn_latency = htole16(phy_2m_conn_params->latency); + params->supervision_timeout = htole16(phy_2m_conn_params->supervision_timeout); + params->min_ce = htole16(phy_2m_conn_params->min_ce_len); + params->max_ce = htole16(phy_2m_conn_params->max_ce_len); + + params++; + len += sizeof(*params); } if (phy_mask & BLE_GAP_LE_PHY_CODED_MASK) { - /* XXX same structs */ - ble_gap_copy_params(&hcc.params[2], phy_coded_conn_params); + rc = ble_gap_check_conn_params(BLE_HCI_LE_PHY_CODED, phy_coded_conn_params); + if (rc) { + return rc; + } + + params->scan_itvl = htole16(phy_coded_conn_params->scan_itvl); + params->scan_window = htole16(phy_coded_conn_params->scan_window); + params->conn_min_itvl = htole16(phy_coded_conn_params->itvl_min); + params->conn_max_itvl = htole16(phy_coded_conn_params->itvl_max); + params->conn_latency = htole16(phy_coded_conn_params->latency); + params->supervision_timeout = htole16(phy_coded_conn_params->supervision_timeout); + params->min_ce = htole16(phy_coded_conn_params->min_ce_len); + params->max_ce = htole16(phy_coded_conn_params->max_ce_len); + + params++; + len += sizeof(*params); } - rc = ble_hs_hci_cmd_build_le_ext_create_conn(&hcc, buf, sizeof buf); - if (rc != 0) { - return BLE_HS_EUNKNOWN; - } - - rc = ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_EXT_CREATE_CONN), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_EXT_CREATE_CONN), + cmd, len, NULL, 0); } +#endif /** * Initiates a connect procedure. @@ -4438,10 +4898,7 @@ ble_gap_ext_connect(uint8_t own_addr_type, const ble_addr_t *peer_addr, const struct ble_gap_conn_params *phy_coded_conn_params, ble_gap_event_fn *cb, void *cb_arg) { -#if !MYNEWT_VAL(BLE_ROLE_CENTRAL) - return BLE_HS_ENOTSUP; -#endif - +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) ble_npl_time_t duration_ticks; int rc; @@ -4551,6 +5008,10 @@ done: STATS_INC(ble_gap_stats, initiate_fail); } return rc; +#else + return BLE_HS_ENOTSUP; +#endif + } #endif @@ -4560,10 +5021,7 @@ ble_gap_connect(uint8_t own_addr_type, const ble_addr_t *peer_addr, const struct ble_gap_conn_params *conn_params, ble_gap_event_fn *cb, void *cb_arg) { -#if !MYNEWT_VAL(BLE_ROLE_CENTRAL) - return BLE_HS_ENOTSUP; -#endif - +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) #if MYNEWT_VAL(BLE_EXT_ADV) return ble_gap_ext_connect(own_addr_type, peer_addr, duration_ms, BLE_GAP_LE_PHY_1M_MASK, @@ -4652,6 +5110,31 @@ ble_gap_connect(uint8_t own_addr_type, const ble_addr_t *peer_addr, ble_gap_master.op = BLE_GAP_OP_M_CONN; +#if CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT + /* ble_gap_connect_reattempt save the connection parameters */ + if ((cb_arg != NULL) && conn_cookie_enabled) { + struct ble_gap_conn_desc *conn_desc = cb_arg; + /* reattempt_idx should follow conn handle corresponding to MASTER role */ + reattempt_idx = conn_desc->conn_handle; + /* Reset cookie_enabled flag, it will be set again by reattempt call */ + conn_cookie_enabled = false; + } + + ble_conn_reattempt[reattempt_idx].own_addr_type = own_addr_type; + memcpy(&ble_conn_reattempt[reattempt_idx].peer_addr, peer_addr, + sizeof(ble_addr_t)); + ble_conn_reattempt[reattempt_idx].duration_ms = duration_ms; + memcpy(&ble_conn_reattempt[reattempt_idx].conn_params, + conn_params, + sizeof(struct ble_gap_conn_params)); + ble_conn_reattempt[reattempt_idx].cb = cb; + ble_conn_reattempt[reattempt_idx].cb_arg = cb_arg; + /* reattempt_idx need to be within limits. This may end up being unnecessary + * operation. However, it is better to be sure as it can get tricky with + * multiple connections and client + server roles XXX*/ + reattempt_idx = (reattempt_idx + 1) % MYNEWT_VAL(BLE_MAX_CONNECTIONS); +#endif + rc = ble_gap_conn_create_tx(own_addr_type, peer_addr, conn_params); if (rc != 0) { @@ -4673,6 +5156,10 @@ done: } return rc; #endif +#else + return BLE_HS_ENOTSUP; +#endif + } int @@ -4685,11 +5172,38 @@ ble_gap_conn_active(void) /***************************************************************************** * $terminate connection procedure * *****************************************************************************/ +int +ble_gap_terminate_with_conn(struct ble_hs_conn *conn, uint8_t hci_reason) +{ + struct ble_hci_lc_disconnect_cp cmd; + int rc; + + BLE_HS_DBG_ASSERT(ble_hs_locked_by_cur_task()); + if (conn->bhc_flags & BLE_HS_CONN_F_TERMINATING) { + return BLE_HS_EALREADY; + } + + BLE_HS_LOG(INFO, "GAP procedure initiated: terminate connection; " + "conn_handle=%d hci_reason=%d\n", + conn->bhc_handle, hci_reason); + + cmd.conn_handle = htole16(conn->bhc_handle); + cmd.reason = hci_reason; + + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LINK_CTRL, + BLE_HCI_OCF_DISCONNECT_CMD), + &cmd, sizeof(cmd), NULL, 0); + if (rc != 0) { + return rc; + } + + conn->bhc_flags |= BLE_HS_CONN_F_TERMINATING; + return 0; +} int ble_gap_terminate(uint16_t conn_handle, uint8_t hci_reason) { - uint8_t buf[BLE_HCI_DISCONNECT_CMD_LEN]; struct ble_hs_conn *conn; int rc; @@ -4703,26 +5217,7 @@ ble_gap_terminate(uint16_t conn_handle, uint8_t hci_reason) goto done; } - if (conn->bhc_flags & BLE_HS_CONN_F_TERMINATING) { - rc = BLE_HS_EALREADY; - goto done; - } - - BLE_HS_LOG(INFO, "GAP procedure initiated: terminate connection; " - "conn_handle=%d hci_reason=%d\n", - conn_handle, hci_reason); - - ble_hs_hci_cmd_build_disconnect(conn_handle, hci_reason, - buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LINK_CTRL, - BLE_HCI_OCF_DISCONNECT_CMD), - buf, sizeof(buf)); - if (rc != 0) { - goto done; - } - - conn->bhc_flags |= BLE_HS_CONN_F_TERMINATING; - rc = 0; + rc = ble_gap_terminate_with_conn(conn, hci_reason); done: ble_hs_unlock(); @@ -4742,9 +5237,9 @@ ble_gap_conn_cancel_tx(void) { int rc; - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_CREATE_CONN_CANCEL), - NULL, 0); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_CREATE_CONN_CANCEL), + NULL, 0, NULL, 0); if (rc != 0) { return rc; } @@ -4752,13 +5247,10 @@ ble_gap_conn_cancel_tx(void) return 0; } +#if NIMBLE_BLE_CONNECT static int ble_gap_conn_cancel_no_lock(void) { -#if !MYNEWT_VAL(BLE_ROLE_CENTRAL) - return BLE_HS_ENOTSUP; -#endif - int rc; STATS_INC(ble_gap_stats, cancel); @@ -4785,14 +5277,12 @@ done: return rc; } +#endif int ble_gap_conn_cancel(void) { -#if !MYNEWT_VAL(BLE_ROLE_CENTRAL) - return BLE_HS_ENOTSUP; -#endif - +#if MYNEWT_VAL(BLE_ROLE_CENTRAL) int rc; ble_hs_lock(); @@ -4800,12 +5290,17 @@ ble_gap_conn_cancel(void) ble_hs_unlock(); return rc; +#else + return BLE_HS_ENOTSUP; +#endif + } /***************************************************************************** * $update connection parameters * *****************************************************************************/ +#if NIMBLE_BLE_CONNECT static struct ble_gap_update_entry * ble_gap_update_entry_alloc(void) { @@ -4818,6 +5313,7 @@ ble_gap_update_entry_alloc(void) return entry; } +#endif static void ble_gap_update_entry_free(struct ble_gap_update_entry *entry) @@ -4877,6 +5373,7 @@ ble_gap_update_entry_remove(uint16_t conn_handle) return entry; } +#if NIMBLE_BLE_CONNECT static void ble_gap_update_l2cap_cb(uint16_t conn_handle, int status, void *arg) { @@ -4903,71 +5400,51 @@ static int ble_gap_tx_param_pos_reply(uint16_t conn_handle, struct ble_gap_upd_params *params) { - uint8_t buf[BLE_HCI_CONN_PARAM_REPLY_LEN]; - struct hci_conn_param_reply pos_reply; - int rc; + struct ble_hci_le_rem_conn_param_rr_cp cmd; - pos_reply.handle = conn_handle; - pos_reply.conn_itvl_min = params->itvl_min; - pos_reply.conn_itvl_max = params->itvl_max; - pos_reply.conn_latency = params->latency; - pos_reply.supervision_timeout = params->supervision_timeout; - pos_reply.min_ce_len = params->min_ce_len; - pos_reply.max_ce_len = params->max_ce_len; + cmd.conn_handle = htole16(conn_handle); + cmd.conn_itvl_min = htole16(params->itvl_min); + cmd.conn_itvl_max = htole16(params->itvl_max); + cmd.conn_latency = htole16(params->latency); + cmd.supervision_timeout = htole16(params->supervision_timeout); + cmd.min_ce = htole16(params->min_ce_len); + cmd.max_ce = htole16(params->max_ce_len); - ble_hs_hci_cmd_build_le_conn_param_reply(&pos_reply, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_REM_CONN_PARAM_RR), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_REM_CONN_PARAM_RR), + &cmd, sizeof(cmd), NULL, 0); } static int ble_gap_tx_param_neg_reply(uint16_t conn_handle, uint8_t reject_reason) { - uint8_t buf[BLE_HCI_CONN_PARAM_NEG_REPLY_LEN]; - struct hci_conn_param_neg_reply neg_reply; - int rc; + struct ble_hci_le_rem_conn_params_nrr_cp cmd; - neg_reply.handle = conn_handle; - neg_reply.reason = reject_reason; + cmd.conn_handle = htole16(conn_handle); + cmd.reason = reject_reason; - ble_hs_hci_cmd_build_le_conn_param_neg_reply(&neg_reply, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR), + &cmd, sizeof(cmd), NULL, 0); } - -void -ble_gap_rx_param_req(struct hci_le_conn_param_req *evt) -{ -#if !NIMBLE_BLE_CONNECT - return; #endif +void +ble_gap_rx_param_req(const struct ble_hci_ev_le_subev_rem_conn_param_req *ev) +{ +#if NIMBLE_BLE_CONNECT struct ble_gap_upd_params peer_params; struct ble_gap_upd_params self_params; struct ble_gap_event event; - uint8_t reject_reason; + uint16_t conn_handle; int rc; - reject_reason = 0; /* Silence warning. */ - memset(&event, 0, sizeof event); - peer_params.itvl_min = evt->itvl_min; - peer_params.itvl_max = evt->itvl_max; - peer_params.latency = evt->latency; - peer_params.supervision_timeout = evt->timeout; + peer_params.itvl_min = le16toh(ev->min_interval); + peer_params.itvl_max = le16toh(ev->max_interval); + peer_params.latency = le16toh(ev->latency); + peer_params.supervision_timeout = le16toh(ev->timeout); peer_params.min_ce_len = 0; peer_params.max_ce_len = 0; @@ -4977,55 +5454,43 @@ ble_gap_rx_param_req(struct hci_le_conn_param_req *evt) */ self_params = peer_params; + conn_handle = le16toh(ev->conn_handle); + memset(&event, 0, sizeof event); event.type = BLE_GAP_EVENT_CONN_UPDATE_REQ; - event.conn_update_req.conn_handle = evt->connection_handle; + event.conn_update_req.conn_handle = conn_handle; event.conn_update_req.self_params = &self_params; event.conn_update_req.peer_params = &peer_params; - rc = ble_gap_call_conn_event_cb(&event, evt->connection_handle); - if (rc != 0) { - reject_reason = rc; - } - + rc = ble_gap_call_conn_event_cb(&event, conn_handle); if (rc == 0) { - rc = ble_gap_tx_param_pos_reply(evt->connection_handle, &self_params); + rc = ble_gap_tx_param_pos_reply(conn_handle, &self_params); if (rc != 0) { - ble_gap_update_failed(evt->connection_handle, rc); + ble_gap_update_failed(conn_handle, rc); } } else { - ble_gap_tx_param_neg_reply(evt->connection_handle, reject_reason); + ble_gap_tx_param_neg_reply(conn_handle, rc); } +#endif } +#if NIMBLE_BLE_CONNECT static int ble_gap_update_tx(uint16_t conn_handle, const struct ble_gap_upd_params *params) { - uint8_t buf[BLE_HCI_CONN_UPDATE_LEN]; - struct hci_conn_update cmd; - int rc; + struct ble_hci_le_conn_update_cp cmd; - cmd.handle = conn_handle; - cmd.conn_itvl_min = params->itvl_min; - cmd.conn_itvl_max = params->itvl_max; - cmd.conn_latency = params->latency; - cmd.supervision_timeout = params->supervision_timeout; - cmd.min_ce_len = params->min_ce_len; - cmd.max_ce_len = params->max_ce_len; + cmd.conn_handle = htole16(conn_handle); + cmd.conn_itvl_min = htole16(params->itvl_min); + cmd.conn_itvl_max = htole16(params->itvl_max); + cmd.conn_latency = htole16(params->latency); + cmd.supervision_timeout = htole16(params->supervision_timeout); + cmd.min_ce_len = htole16(params->min_ce_len); + cmd.max_ce_len = htole16(params->max_ce_len); - rc = ble_hs_hci_cmd_build_le_conn_update(&cmd, buf, sizeof buf); - if (rc != 0) { - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_CONN_UPDATE), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_CONN_UPDATE), + &cmd, sizeof(cmd), NULL, 0); } static bool @@ -5057,15 +5522,13 @@ ble_gap_validate_conn_params(const struct ble_gap_upd_params *params) return true; } +#endif int ble_gap_update_params(uint16_t conn_handle, const struct ble_gap_upd_params *params) { -#if !NIMBLE_BLE_CONNECT - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_CONNECT struct ble_l2cap_sig_update_params l2cap_params; struct ble_gap_update_entry *entry; struct ble_gap_update_entry *dup; @@ -5149,6 +5612,9 @@ done: ble_hs_unlock(); return rc; +#else + return BLE_HS_ENOTSUP; +#endif } /***************************************************************************** @@ -5157,10 +5623,7 @@ done: int ble_gap_security_initiate(uint16_t conn_handle) { -#if !NIMBLE_BLE_SM - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_SM struct ble_store_value_sec value_sec; struct ble_store_key_sec key_sec; struct ble_hs_conn_addrs addrs; @@ -5221,6 +5684,9 @@ done: } return rc; +#else + return BLE_HS_ENOTSUP; +#endif } int @@ -5241,10 +5707,7 @@ ble_gap_encryption_initiate(uint16_t conn_handle, uint64_t rand_val, int auth) { -#if !NIMBLE_BLE_SM - return BLE_HS_ENOTSUP; -#endif - +#if NIMBLE_BLE_SM ble_hs_conn_flags_t conn_flags; int rc; @@ -5260,6 +5723,9 @@ ble_gap_encryption_initiate(uint16_t conn_handle, rc = ble_sm_enc_initiate(conn_handle, key_size, ltk, ediv, rand_val, auth); return rc; +#else + return BLE_HS_ENOTSUP; +#endif } int @@ -5275,7 +5741,7 @@ ble_gap_unpair(const ble_addr_t *peer_addr) conn = ble_hs_conn_find_by_addr(peer_addr); if (conn != NULL) { - ble_gap_terminate(conn->bhc_handle, BLE_ERR_REM_USER_CONN_TERM); + ble_gap_terminate_with_conn(conn, BLE_ERR_REM_USER_CONN_TERM); } ble_hs_unlock(); @@ -5345,10 +5811,7 @@ void ble_gap_passkey_event(uint16_t conn_handle, struct ble_gap_passkey_params *passkey_params) { -#if !NIMBLE_BLE_SM - return; -#endif - +#if NIMBLE_BLE_SM struct ble_gap_event event; BLE_HS_LOG(DEBUG, "send passkey action request %d\n", @@ -5359,16 +5822,14 @@ ble_gap_passkey_event(uint16_t conn_handle, event.passkey.conn_handle = conn_handle; event.passkey.params = *passkey_params; ble_gap_call_conn_event_cb(&event, conn_handle); +#endif } void ble_gap_enc_event(uint16_t conn_handle, int status, int security_restored, int bonded) { -#if !NIMBLE_BLE_SM - return; -#endif - +#if NIMBLE_BLE_SM struct ble_gap_event event; memset(&event, 0, sizeof event); @@ -5398,15 +5859,13 @@ ble_gap_enc_event(uint16_t conn_handle, int status, if (bonded) { ble_gatts_bonding_established(conn_handle); } +#endif } void ble_gap_identity_event(uint16_t conn_handle) { -#if !NIMBLE_BLE_SM - return; -#endif - +#if NIMBLE_BLE_SM struct ble_gap_event event; BLE_HS_LOG(DEBUG, "send identity changed"); @@ -5415,15 +5874,13 @@ ble_gap_identity_event(uint16_t conn_handle) event.type = BLE_GAP_EVENT_IDENTITY_RESOLVED; event.identity_resolved.conn_handle = conn_handle; ble_gap_call_conn_event_cb(&event, conn_handle); +#endif } int ble_gap_repeat_pairing_event(const struct ble_gap_repeat_pairing *rp) { -#if !NIMBLE_BLE_SM - return 0; -#endif - +#if NIMBLE_BLE_SM struct ble_gap_event event; int rc; @@ -5432,6 +5889,9 @@ ble_gap_repeat_pairing_event(const struct ble_gap_repeat_pairing *rp) event.repeat_pairing = *rp; rc = ble_gap_call_conn_event_cb(&event, rp->conn_handle); return rc; +#else + return 0; +#endif } /***************************************************************************** @@ -5477,10 +5937,7 @@ void ble_gap_notify_tx_event(int status, uint16_t conn_handle, uint16_t attr_handle, int is_indication) { -#if !MYNEWT_VAL(BLE_GATT_NOTIFY) && !MYNEWT_VAL(BLE_GATT_INDICATE) - return; -#endif - +#if MYNEWT_VAL(BLE_GATT_NOTIFY) || MYNEWT_VAL(BLE_GATT_INDICATE) struct ble_gap_event event; memset(&event, 0, sizeof event); @@ -5489,7 +5946,9 @@ ble_gap_notify_tx_event(int status, uint16_t conn_handle, uint16_t attr_handle, event.notify_tx.status = status; event.notify_tx.attr_handle = attr_handle; event.notify_tx.indication = is_indication; + ble_gap_event_listener_call(&event); ble_gap_call_conn_event_cb(&event, conn_handle); +#endif } /***************************************************************************** diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap_priv.h index 90c32e22a..2b6b40696 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gap_priv.h @@ -81,23 +81,40 @@ void ble_gap_rx_le_scan_timeout(void); #if MYNEWT_VAL(BLE_EXT_ADV) void ble_gap_rx_ext_adv_report(struct ble_gap_ext_disc_desc *desc); -void ble_gap_rx_adv_set_terminated(struct hci_le_adv_set_terminated *evt); +void ble_gap_rx_adv_set_terminated(const struct ble_hci_ev_le_subev_adv_set_terminated *ev); #if MYNEWT_VAL(BLE_PERIODIC_ADV) -void ble_gap_rx_peroidic_adv_sync_estab(struct hci_le_subev_periodic_adv_sync_estab *evt); -void ble_gap_rx_periodic_adv_rpt(struct hci_le_subev_periodic_adv_rpt *evt); -void ble_gap_rx_periodic_adv_sync_lost(struct hci_le_subev_periodic_adv_sync_lost *evt); +void ble_gap_rx_peroidic_adv_sync_estab(const struct ble_hci_ev_le_subev_periodic_adv_sync_estab *ev); +void ble_gap_rx_periodic_adv_rpt(const struct ble_hci_ev_le_subev_periodic_adv_rpt *ev); +void ble_gap_rx_periodic_adv_sync_lost(const struct ble_hci_ev_le_subev_periodic_adv_sync_lost *ev); +void ble_gap_rx_periodic_adv_sync_transfer(const struct ble_hci_ev_le_subev_periodic_adv_sync_transfer *ev); #endif -void ble_gap_rx_scan_req_rcvd(struct hci_le_scan_req_rcvd *evt); +void ble_gap_rx_scan_req_rcvd(const struct ble_hci_ev_le_subev_scan_req_rcvd *ev); #endif void ble_gap_rx_adv_report(struct ble_gap_disc_desc *desc); -void ble_gap_rx_rd_rem_sup_feat_complete(struct hci_le_rd_rem_supp_feat_complete *evt); -int ble_gap_rx_conn_complete(struct hci_le_conn_complete *evt, uint8_t instance); -void ble_gap_rx_disconn_complete(struct hci_disconn_complete *evt); -void ble_gap_rx_update_complete(struct hci_le_conn_upd_complete *evt); -void ble_gap_rx_param_req(struct hci_le_conn_param_req *evt); +void ble_gap_rx_rd_rem_sup_feat_complete(const struct ble_hci_ev_le_subev_rd_rem_used_feat *ev); + +struct ble_gap_conn_complete +{ + uint8_t status; + uint16_t connection_handle; + uint8_t role; + uint8_t peer_addr_type; + uint8_t peer_addr[BLE_DEV_ADDR_LEN]; + uint16_t conn_itvl; + uint16_t conn_latency; + uint16_t supervision_timeout; + uint8_t master_clk_acc; + uint8_t local_rpa[BLE_DEV_ADDR_LEN]; + uint8_t peer_rpa[BLE_DEV_ADDR_LEN]; +}; + +int ble_gap_rx_conn_complete(struct ble_gap_conn_complete *evt, uint8_t instance); +void ble_gap_rx_disconn_complete(const struct ble_hci_ev_disconn_cmp *ev); +void ble_gap_rx_update_complete(const struct ble_hci_ev_le_subev_conn_upd_complete *ev); +void ble_gap_rx_param_req(const struct ble_hci_ev_le_subev_rem_conn_param_req *ev); int ble_gap_rx_l2cap_update_req(uint16_t conn_handle, struct ble_gap_upd_params *params); -void ble_gap_rx_phy_update_complete(struct hci_le_phy_upd_complete *evt); +void ble_gap_rx_phy_update_complete(const struct ble_hci_ev_le_subev_phy_update_complete *ev); void ble_gap_enc_event(uint16_t conn_handle, int status, int security_restored, int bonded); void ble_gap_passkey_event(uint16_t conn_handle, @@ -118,6 +135,7 @@ int ble_gap_master_in_progress(void); void ble_gap_preempt(void); void ble_gap_preempt_done(void); +int ble_gap_terminate_with_conn(struct ble_hs_conn *conn, uint8_t hci_reason); void ble_gap_conn_broken(uint16_t conn_handle, int reason); void ble_gap_reset_state(int reason); int32_t ble_gap_timer(void); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gattc.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gattc.c index c3ff060b0..a6e114cc2 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gattc.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gattc.c @@ -912,7 +912,7 @@ ble_gattc_proc_matches_conn_rx_entry(struct ble_gattc_proc *proc, void *arg) criteria->matching_rx_entry = ble_gattc_rx_entry_find( proc->op, criteria->rx_entries, criteria->num_rx_entries); - return 1; + return (criteria->matching_rx_entry != NULL); } static void diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gatts.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gatts.c index fccf10274..e53cc116f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gatts.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_gatts.c @@ -719,6 +719,8 @@ ble_gatts_clt_cfg_access_locked(struct ble_hs_conn *conn, uint16_t attr_handle, /* Successful writes get persisted for bonded connections. */ if (conn->bhc_sec_state.bonded) { out_cccd->peer_addr = conn->bhc_peer_addr; + out_cccd->peer_addr.type = + ble_hs_misc_peer_addr_type_to_id(conn->bhc_peer_addr.type); out_cccd->chr_val_handle = chr_val_handle; out_cccd->flags = clt_cfg->flags; out_cccd->value_changed = 0; @@ -1464,6 +1466,8 @@ ble_gatts_rx_indicate_ack(uint16_t conn_handle, uint16_t chr_val_handle) !(clt_cfg->flags & BLE_GATTS_CLT_CFG_F_MODIFIED); if (persist) { cccd_value.peer_addr = conn->bhc_peer_addr; + cccd_value.peer_addr.type = + ble_hs_misc_peer_addr_type_to_id(conn->bhc_peer_addr.type); cccd_value.chr_val_handle = chr_val_handle; cccd_value.flags = clt_cfg->flags; cccd_value.value_changed = 0; @@ -1692,13 +1696,12 @@ ble_gatts_bonding_established(uint16_t conn_handle) BLE_HS_DBG_ASSERT(conn->bhc_sec_state.bonded); cccd_value.peer_addr = conn->bhc_peer_addr; + cccd_value.peer_addr.type = + ble_hs_misc_peer_addr_type_to_id(conn->bhc_peer_addr.type); gatt_srv = &conn->bhc_gatt_svr; for (i = 0; i < gatt_srv->num_clt_cfgs; ++i) { - clt_cfg = (gatt_srv->clt_cfgs + i); - if (clt_cfg == NULL) { - continue; - } + clt_cfg = &gatt_srv->clt_cfgs[i]; if (clt_cfg->flags != 0) { cccd_value.chr_val_handle = clt_cfg->chr_val_handle; @@ -1743,6 +1746,8 @@ ble_gatts_bonding_restored(uint16_t conn_handle) BLE_HS_DBG_ASSERT(conn->bhc_sec_state.bonded); cccd_key.peer_addr = conn->bhc_peer_addr; + cccd_key.peer_addr.type = + ble_hs_misc_peer_addr_type_to_id(conn->bhc_peer_addr.type); cccd_key.chr_val_handle = 0; cccd_key.idx = 0; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs.c index adb8046a7..d819e20df 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs.c @@ -504,20 +504,20 @@ ble_hs_sched_start(void) static void ble_hs_event_rx_hci_ev(struct ble_npl_event *ev) { - uint8_t *hci_evt; + const struct ble_hci_ev *hci_ev; int rc; - hci_evt = ble_npl_event_get_arg(ev); + hci_ev = ble_npl_event_get_arg(ev); rc = os_memblock_put(&ble_hs_hci_ev_pool, ev); BLE_HS_DBG_ASSERT_EVAL(rc == 0); #if BLE_MONITOR - ble_monitor_send(BLE_MONITOR_OPCODE_EVENT_PKT, hci_evt, - hci_evt[1] + BLE_HCI_EVENT_HDR_LEN); + ble_monitor_send(BLE_MONITOR_OPCODE_EVENT_PKT, hci_ev, + hci_ev->length + sizeof(*hci_ev)); #endif - ble_hs_hci_evt_process(hci_evt); + ble_hs_hci_evt_process(hci_ev); } static void @@ -684,7 +684,7 @@ ble_hs_rx_data(struct os_mbuf *om, void *arg) /* If flow control is enabled, mark this packet with its corresponding * connection handle. */ - ble_hs_flow_fill_acl_usrhdr(om); + ble_hs_flow_track_data_mbuf(om); rc = ble_mqueue_put(&ble_hs_rx_q, ble_hs_evq, om); if (rc != 0) { @@ -747,8 +747,10 @@ ble_hs_init(void) rc = ble_hs_conn_init(); SYSINIT_PANIC_ASSERT(rc == 0); +#if MYNEWT_VAL(BLE_PERIODIC_ADV) rc = ble_hs_periodic_sync_init(); SYSINIT_PANIC_ASSERT(rc == 0); +#endif rc = ble_l2cap_init(); SYSINIT_PANIC_ASSERT(rc == 0); @@ -784,15 +786,15 @@ ble_hs_init(void) ble_hs_dbg_mutex_locked = 0; #endif - /* Configure the HCI transport to communicate with a host. */ - ble_hci_trans_cfg_hs(ble_hs_hci_rx_evt, NULL, ble_hs_rx_data, NULL); - #ifdef MYNEWT ble_hs_evq_set((struct ble_npl_eventq *)os_eventq_dflt_get()); #else ble_hs_evq_set(nimble_port_get_dflt_eventq()); #endif + /* Configure the HCI transport to communicate with a host. */ + ble_hci_trans_cfg_hs(ble_hs_hci_rx_evt, NULL, ble_hs_rx_data, NULL); + #if BLE_MONITOR rc = ble_monitor_init(); SYSINIT_PANIC_ASSERT(rc == 0); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_adv.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_adv.c index 1066182d0..1d938b958 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_adv.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_adv.c @@ -63,8 +63,8 @@ ble_hs_adv_set_hdr(uint8_t type, uint8_t data_len, uint8_t max_len, static int ble_hs_adv_set_flat_mbuf(uint8_t type, int data_len, const void *data, - uint8_t *dst, uint8_t *dst_len, uint8_t max_len, - struct os_mbuf *om) + uint8_t *dst, uint8_t *dst_len, uint8_t max_len, + struct os_mbuf *om) { int rc; @@ -235,11 +235,10 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, uint8_t type; int8_t tx_pwr_lvl; + uint8_t dst_len_local; int rc; - if (dst_len) { - *dst_len = 0; - } + dst_len_local = 0; /*** 0x01 - Flags. */ /* The application has two options concerning the flags field: @@ -251,7 +250,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, */ if (adv_fields->flags != 0) { rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_FLAGS, 1, - &adv_fields->flags, dst, dst_len, + &adv_fields->flags, dst, &dst_len_local, max_len, om); if (rc != 0) { @@ -268,7 +267,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, } rc = ble_hs_adv_set_array_uuid16(type, adv_fields->num_uuids16, - adv_fields->uuids16, dst, dst_len, + adv_fields->uuids16, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -284,7 +283,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, } rc = ble_hs_adv_set_array_uuid32(type, adv_fields->num_uuids32, - adv_fields->uuids32, dst, dst_len, + adv_fields->uuids32, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -300,7 +299,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, } rc = ble_hs_adv_set_array_uuid128(type, adv_fields->num_uuids128, - adv_fields->uuids128, dst, dst_len, + adv_fields->uuids128, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -316,7 +315,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, } rc = ble_hs_adv_set_flat_mbuf(type, adv_fields->name_len, - adv_fields->name, dst, dst_len, max_len, + adv_fields->name, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -338,7 +337,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, } rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_TX_PWR_LVL, 1, - &tx_pwr_lvl, dst, dst_len, max_len, om); + &tx_pwr_lvl, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; } @@ -349,7 +348,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_SLAVE_ITVL_RANGE, BLE_HS_ADV_SLAVE_ITVL_RANGE_LEN, adv_fields->slave_itvl_range, dst, - dst_len, max_len, om); + &dst_len_local, max_len, om); if (rc != 0) { return rc; } @@ -359,7 +358,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, if (adv_fields->svc_data_uuid16 != NULL && adv_fields->svc_data_uuid16_len) { rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_SVC_DATA_UUID16, adv_fields->svc_data_uuid16_len, - adv_fields->svc_data_uuid16, dst, dst_len, + adv_fields->svc_data_uuid16, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -373,7 +372,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_PUBLIC_TGT_ADDR, BLE_HS_ADV_PUBLIC_TGT_ADDR_ENTRY_LEN * adv_fields->num_public_tgt_addrs, - adv_fields->public_tgt_addr, dst, dst_len, + adv_fields->public_tgt_addr, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -384,7 +383,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, if (adv_fields->appearance_is_present) { rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_APPEARANCE, BLE_HS_ADV_APPEARANCE_LEN, - &adv_fields->appearance, dst, dst_len, + &adv_fields->appearance, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -394,7 +393,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, /*** 0x1a - Advertising interval. */ if (adv_fields->adv_itvl_is_present) { rc = ble_hs_adv_set_array16(BLE_HS_ADV_TYPE_ADV_ITVL, 1, - &adv_fields->adv_itvl, dst, dst_len, + &adv_fields->adv_itvl, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -405,7 +404,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, if (adv_fields->svc_data_uuid32 != NULL && adv_fields->svc_data_uuid32_len) { rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_SVC_DATA_UUID32, adv_fields->svc_data_uuid32_len, - adv_fields->svc_data_uuid32, dst, dst_len, + adv_fields->svc_data_uuid32, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -417,7 +416,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_SVC_DATA_UUID128, adv_fields->svc_data_uuid128_len, adv_fields->svc_data_uuid128, dst, - dst_len, max_len, om); + &dst_len_local, max_len, om); if (rc != 0) { return rc; } @@ -426,7 +425,7 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, /*** 0x24 - URI. */ if (adv_fields->uri != NULL && adv_fields->uri_len) { rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_URI, adv_fields->uri_len, - adv_fields->uri, dst, dst_len, max_len, + adv_fields->uri, dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; @@ -438,12 +437,16 @@ adv_set_fields(const struct ble_hs_adv_fields *adv_fields, rc = ble_hs_adv_set_flat_mbuf(BLE_HS_ADV_TYPE_MFG_DATA, adv_fields->mfg_data_len, adv_fields->mfg_data, - dst, dst_len, max_len, om); + dst, &dst_len_local, max_len, om); if (rc != 0) { return rc; } } + if (dst_len) { + *dst_len = dst_len_local; + } + return 0; } @@ -489,7 +492,7 @@ ble_hs_adv_parse_uuids16(struct ble_hs_adv_fields *adv_fields, for (i = 0; i < adv_fields->num_uuids16; i++) { ble_uuid_init_from_buf(&uuid, data + i * 2, 2); - adv_fields->uuids16[i] = uuid.u16; + ble_hs_adv_uuids16[i] = uuid.u16; } return 0; @@ -511,7 +514,7 @@ ble_hs_adv_parse_uuids32(struct ble_hs_adv_fields *adv_fields, for (i = 0; i < adv_fields->num_uuids32; i++) { ble_uuid_init_from_buf(&uuid, data + i * 4, 4); - adv_fields->uuids32[i] = uuid.u32; + ble_hs_adv_uuids32[i] = uuid.u32; } return 0; @@ -533,7 +536,7 @@ ble_hs_adv_parse_uuids128(struct ble_hs_adv_fields *adv_fields, for (i = 0; i < adv_fields->num_uuids128; i++) { ble_uuid_init_from_buf(&uuid, data + i * 16, 16); - adv_fields->uuids128[i] = uuid.u128; + ble_hs_adv_uuids128[i] = uuid.u128; } return 0; @@ -541,11 +544,12 @@ ble_hs_adv_parse_uuids128(struct ble_hs_adv_fields *adv_fields, static int ble_hs_adv_parse_one_field(struct ble_hs_adv_fields *adv_fields, - uint8_t *total_len, uint8_t *src, uint8_t src_len) + uint8_t *total_len, const uint8_t *src, + uint8_t src_len) { uint8_t data_len; uint8_t type; - uint8_t *data; + const uint8_t *data; int rc; if (src_len < 1) { @@ -715,8 +719,8 @@ ble_hs_adv_parse_one_field(struct ble_hs_adv_fields *adv_fields, } int -ble_hs_adv_parse_fields(struct ble_hs_adv_fields *adv_fields, uint8_t *src, - uint8_t src_len) +ble_hs_adv_parse_fields(struct ble_hs_adv_fields *adv_fields, + const uint8_t *src, uint8_t src_len) { uint8_t field_len; int rc; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_atomic.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_atomic.c index 5d51fbe1a..f26ba7acc 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_atomic.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_atomic.c @@ -28,6 +28,11 @@ ble_hs_atomic_conn_delete(uint16_t conn_handle) conn = ble_hs_conn_find(conn_handle); if (conn != NULL) { ble_hs_conn_remove(conn); +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) + if (conn->psync) { + ble_hs_periodic_sync_free(conn->psync); + } +#endif ble_hs_conn_free(conn); } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn.c index b45128e23..31830c98a 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn.c @@ -84,14 +84,29 @@ ble_hs_conn_chan_find_by_dcid(struct ble_hs_conn *conn, uint16_t cid) if (chan->dcid == cid) { return chan; } - if (chan->dcid > cid) { - return NULL; - } } return NULL; } +bool +ble_hs_conn_chan_exist(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) +{ +#if !NIMBLE_BLE_CONNECT + return NULL; +#endif + + struct ble_l2cap_chan *tmp; + + SLIST_FOREACH(tmp, &conn->bhc_channels, next) { + if (chan == tmp) { + return true; + } + } + + return false; +} + int ble_hs_conn_chan_insert(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) { @@ -197,7 +212,21 @@ ble_hs_conn_delete_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) } SLIST_REMOVE(&conn->bhc_channels, chan, ble_l2cap_chan, next); - ble_l2cap_chan_free(chan); + ble_l2cap_chan_free(conn, chan); +} + +void +ble_hs_conn_foreach(ble_hs_conn_foreach_fn *cb, void *arg) +{ + struct ble_hs_conn *conn; + + BLE_HS_DBG_ASSERT(ble_hs_locked_by_cur_task()); + + SLIST_FOREACH(conn, &ble_hs_conns, bhc_next) { + if (cb(conn, arg) != 0) { + return; + } + } } void @@ -377,7 +406,7 @@ ble_hs_conn_addrs(const struct ble_hs_conn *conn, /* Determine our address information. */ addrs->our_id_addr.type = - ble_hs_misc_addr_type_to_id(conn->bhc_our_addr_type); + ble_hs_misc_own_addr_type_to_id(conn->bhc_our_addr_type); #if MYNEWT_VAL(BLE_EXT_ADV) /* With EA enabled random address for slave connection is per advertising diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn_priv.h index 92aacd405..0e451194d 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_conn_priv.h @@ -38,6 +38,15 @@ typedef uint8_t ble_hs_conn_flags_t; #define BLE_HS_CONN_F_TERMINATING 0x02 #define BLE_HS_CONN_F_TX_FRAG 0x04 /* Cur ACL packet partially txed. */ +#if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) +#define BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN_REM \ + ((MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) % (8 * sizeof(uint32_t))) ? 1 : 0) + +#define BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN \ + (MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) / (8 * sizeof(uint32_t)) + \ + BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN_REM) +#endif + struct ble_hs_conn { SLIST_ENTRY(ble_hs_conn) bhc_next; uint16_t bhc_handle; @@ -61,6 +70,9 @@ struct ble_hs_conn { struct ble_l2cap_chan_list bhc_channels; struct ble_l2cap_chan *bhc_rx_chan; /* Channel rxing current packet. */ ble_npl_time_t bhc_rx_timeout; +#if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) + uint32_t l2cap_coc_cid_mask[BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN]; +#endif /** * Count of packets sent over this connection that the controller has not @@ -86,6 +98,10 @@ struct ble_hs_conn { ble_gap_event_fn *bhc_cb; void *bhc_cb_arg; + +#if MYNEWT_VAL(BLE_PERIODIC_ADV) + struct ble_hs_periodic_sync *psync; +#endif }; struct ble_hs_conn_addrs { @@ -110,15 +126,19 @@ struct ble_l2cap_chan *ble_hs_conn_chan_find_by_scid(struct ble_hs_conn *conn, uint16_t cid); struct ble_l2cap_chan *ble_hs_conn_chan_find_by_dcid(struct ble_hs_conn *conn, uint16_t cid); +bool ble_hs_conn_chan_exist(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); int ble_hs_conn_chan_insert(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); -void -ble_hs_conn_delete_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); +void ble_hs_conn_delete_chan(struct ble_hs_conn *conn, + struct ble_l2cap_chan *chan); void ble_hs_conn_addrs(const struct ble_hs_conn *conn, struct ble_hs_conn_addrs *addrs); int32_t ble_hs_conn_timer(void); +typedef int ble_hs_conn_foreach_fn(struct ble_hs_conn *conn, void *arg); +void ble_hs_conn_foreach(ble_hs_conn_foreach_fn *cb, void *arg); + int ble_hs_conn_init(void); #ifdef __cplusplus diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg.c deleted file mode 100644 index 6659c00df..000000000 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_dbg.c +++ /dev/null @@ -1,695 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -#include -#include -#include -#include -#include "os/os.h" -#include "nimble/hci_common.h" -#include "nimble/ble_hci_trans.h" -#include "host/ble_monitor.h" -#include "ble_hs_priv.h" - -static void -ble_hs_dbg_le_event_disp(uint8_t subev, uint8_t len, uint8_t *evdata) -{ - int8_t rssi; - uint8_t advlen; - uint8_t status; - int i; - int imax; - uint8_t *dptr; - char *adv_ptr; - char adv_data_buf[32]; - - switch (subev) { - case BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE: - case BLE_HCI_LE_SUBEV_CONN_COMPLETE: - status = evdata[0]; - if (status == BLE_ERR_SUCCESS) { - BLE_HS_LOG(DEBUG, "LE connection complete. handle=%u role=%u " - "paddrtype=%u addr=%x.%x.%x.%x.%x.%x ", - get_le16(evdata + 1), evdata[3], evdata[4], - evdata[10], evdata[9], evdata[8], evdata[7], - evdata[6], evdata[5]); - - evdata += 11; - if (subev == BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE) { - BLE_HS_LOG(DEBUG, "local_rpa=%x.%x.%x.%x.%x.%x " - "peer_rpa=%x.%x.%x.%x.%x.%x ", - evdata[5], evdata[4], evdata[3], evdata[2], - evdata[1], evdata[0], - evdata[11], evdata[10], evdata[9], evdata[8], - evdata[7], evdata[6]); - - evdata += 12; - } - BLE_HS_LOG(DEBUG, "itvl=%u latency=%u spvn_tmo=%u mca=%u\n", - get_le16(evdata), get_le16(evdata + 2), - get_le16(evdata + 4), evdata[6]); - } else { - BLE_HS_LOG(DEBUG, "LE connection complete. FAIL (status=%u)\n", - status); - } - break; - case BLE_HCI_LE_SUBEV_ADV_RPT: - advlen = evdata[9]; - rssi = evdata[10 + advlen]; - BLE_HS_LOG(DEBUG, "LE advertising report. len=%u num=%u evtype=%u " - "addrtype=%u addr=%x.%x.%x.%x.%x.%x advlen=%u " - "rssi=%d\n", len, evdata[0], evdata[1], evdata[2], - evdata[8], evdata[7], evdata[6], evdata[5], - evdata[4], evdata[3], advlen, rssi); - if (advlen) { - dptr = &evdata[10]; - while (advlen > 0) { - memset(adv_data_buf, 0, 32); - imax = advlen; - if (imax > 8) { - imax = 8; - } - adv_ptr = &adv_data_buf[0]; - for (i = 0; i < imax; ++i) { - snprintf(adv_ptr, 4, "%02x ", *dptr); - adv_ptr += 3; - ++dptr; - } - advlen -= imax; - BLE_HS_LOG(DEBUG, "%s\n", adv_data_buf); - } - } - break; - case BLE_HCI_LE_SUBEV_CONN_UPD_COMPLETE: - status = evdata[0]; - if (status == BLE_ERR_SUCCESS) { - BLE_HS_LOG(DEBUG, "LE Connection Update Complete. handle=%u " - "itvl=%u latency=%u timeout=%u\n", - get_le16(evdata + 1), get_le16(evdata + 3), - get_le16(evdata + 5), get_le16(evdata + 7)); - } else { - BLE_HS_LOG(DEBUG, "LE Connection Update Complete. FAIL " - "(status=%u)\n", status); - } - break; - - case BLE_HCI_LE_SUBEV_DATA_LEN_CHG: - BLE_HS_LOG(DEBUG, "LE Data Length Change. handle=%u max_tx_bytes=%u " - "max_tx_time=%u max_rx_bytes=%u max_rx_time=%u\n", - get_le16(evdata), get_le16(evdata + 2), - get_le16(evdata + 4), get_le16(evdata + 6), - get_le16(evdata + 8)); - break; - case BLE_HCI_LE_SUBEV_REM_CONN_PARM_REQ: - BLE_HS_LOG(DEBUG, "LE Remote Connection Parameter Request. handle=%u " - "min_itvl=%u max_itvl=%u latency=%u timeout=%u\n", - get_le16(evdata), get_le16(evdata + 2), - get_le16(evdata + 4), get_le16(evdata + 6), - get_le16(evdata + 8)); - break; - - case BLE_HCI_LE_SUBEV_RD_REM_USED_FEAT: - status = evdata[0]; - if (status == BLE_ERR_SUCCESS) { - BLE_HS_LOG(DEBUG, "LE Remote Used Features. handle=%u feat=", - get_le16(evdata + 1)); - for (i = 0; i < BLE_HCI_RD_LOC_SUPP_FEAT_RSPLEN; ++i) { - BLE_HS_LOG(DEBUG, "%02x ", evdata[3 + i]); - } - BLE_HS_LOG(DEBUG, "\n"); - } else { - BLE_HS_LOG(DEBUG, "LE Remote Used Features. FAIL (status=%u)\n", - status); - } - break; - - case BLE_HCI_LE_SUBEV_LT_KEY_REQ: - BLE_HS_LOG(DEBUG, "LE LTK Req. handle=%u rand=%x%x encdiv=%u\n", - get_le16(evdata), get_le32(evdata + 6), - get_le32(evdata + 2), get_le16(evdata + 10)); - break; - - case BLE_HCI_LE_SUBEV_PHY_UPDATE_COMPLETE: - BLE_HS_LOG(DEBUG, "PHY update. handle=%u tx=%u rx=%u\n", - get_le16(evdata + 1), evdata[3], evdata[4]); - break; - - case BLE_HCI_LE_SUBEV_DIRECT_ADV_RPT: - { - struct hci_le_subev_direct_adv_rpt *data = (void *) evdata; - struct hci_le_subev_direct_adv_rpt_param *params = data->params; - - if (len < sizeof(*data) || - len < sizeof(*data) + data->num_reports * sizeof(*params)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Directed Advertising Report " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Directed Advertising Report len=%u " - "num=0x%02x ", len, data->num_reports); - - for (i = 0; i < data->num_reports; i++) { - BLE_HS_LOG(DEBUG, "[%d]={evttype=0x%02x}\n", i, params->evt_type); - params += 1; - } - break; - } - - case BLE_HCI_LE_SUBEV_RD_LOC_P256_PUBKEY: - { - struct hci_le_subev_rd_loc_p256_pubkey *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Read Local P-256 Public Key " - "Complete Event len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Read Local P-256 Public Key Complete " - "len=%u status=0x%02x\n", len, data->status); - break; - } - - case BLE_HCI_LE_SUBEV_GEN_DHKEY_COMPLETE: - { - struct hci_le_subev_gen_dhkey_complete *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Generate DHKey Complete " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Generate DHKey Complete Event len=%u " - "status=0x%02x\n", len, data->status); - break; - } - -#if MYNEWT_VAL(BLE_EXT_ADV) - case BLE_HCI_LE_SUBEV_EXT_ADV_RPT: - { - struct hci_le_subev_ext_adv_rpt *data = (void *) evdata; - struct hci_ext_adv_report_param *params; - - if (len < sizeof(*data) + sizeof(*params)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Extended Advertising Report " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Extended Advertising Report len=%u num=0x%02x ", - len, data->num_reports); - - for (i = 0, dptr = &evdata[1]; i < data->num_reports; i++) { - params = (void *) dptr; - BLE_HS_LOG(DEBUG, "[%d]={evttype=0x%04x advlen=%u}\n", - i, le16toh(params->evt_type), params->adv_data_len); - dptr += sizeof(*params) + params->adv_data_len; - } - break; - } -#if MYNEWT_VAL(BLE_PERIODIC_ADV) - case BLE_HCI_LE_SUBEV_PERIODIC_ADV_SYNC_ESTAB: - { - struct hci_le_subev_periodic_adv_sync_estab *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Periodic Advertising Sync " - "Established len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Periodic Advertising Sync Established " - "len=%u status=0x%02x handle=0x%04x", len, data->status, - le16toh(data->sync_handle)); - break; - } - - case BLE_HCI_LE_SUBEV_PERIODIC_ADV_RPT: - { - struct hci_le_subev_periodic_adv_rpt *data = (void *) evdata; - - if (len < sizeof(*data) || len != sizeof(*data) + data->data_length) { - BLE_HS_LOG(DEBUG, "Corrupted LE Periodic Advertising Report " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Periodic Advertising Report " - "len=%u handle=0x%04x data_status=0x%02x data_len=0x%02x", - len, le16toh(data->sync_handle), data->data_status, - data->data_length); - break; - } - - case BLE_HCI_LE_SUBEV_PERIODIC_ADV_SYNC_LOST: - { - struct hci_le_subev_periodic_adv_sync_lost *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Periodic Advertising Sync Lost " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Periodic Advertising Sync Lost " - "len=%u handle=0x%04x", len, le16toh(data->sync_handle)); - break; - } -#endif - - case BLE_HCI_LE_SUBEV_SCAN_TIMEOUT: - if (len) { - BLE_HS_LOG(DEBUG, "Corrupted LE Scan Timeout len=%u", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Scan Timeout Event len=%u", len); - break; - - case BLE_HCI_LE_SUBEV_ADV_SET_TERMINATED: - { - struct hci_le_subev_adv_set_terminated *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Advertising Set Terminated " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Advertising Set Terminated len=%u " - "status=0x%02x adv_handle=0x%02x conn_handle=0x%04x " - "num_compl_ext_adv_ev=0x%02x", len, data->status, - data->adv_handle, le16toh(data->conn_handle), - data->num_compl_ext_adv_ev); - break; - } - - case BLE_HCI_LE_SUBEV_SCAN_REQ_RCVD: - { - struct hci_le_subev_scan_req_rcvd *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Scan Request Received " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Scan Request Received len=%u " - "adv_handle=0x%02x", len, data->adv_handle); - break; - } -#endif /* MYNEWT_VAL(BLE_EXT_ADV) */ - - case BLE_HCI_LE_SUBEV_CHAN_SEL_ALG: - { - struct hci_le_subev_chan_sel_alg *data = (void *) evdata; - - if (len != sizeof(*data)) { - BLE_HS_LOG(DEBUG, "Corrupted LE Channel Selection Algorithm " - "len=%u\n", len); - break; - } - - BLE_HS_LOG(DEBUG, "LE Channel Selection Algorithm len=%u " - "conn_handle=0x%04x chan_sel_alg=0x%02x\n", len, - le16toh(data->conn_handle), data->chan_sel_alg); - break; - } - - default: - BLE_HS_LOG(DEBUG, "LE Meta SubEvent op=0x%02x\n", subev); - break; - } -} - -/** - * Display a disconnection complete command. - * - * - * @param evdata - * @param len - */ -static void -ble_hs_dbg_disconn_comp_disp(uint8_t *evdata, uint8_t len) -{ - uint8_t status; - uint8_t reason; - uint16_t handle; - - status = evdata[0]; - handle = get_le16(evdata + 1); - /* Ignore reason if status is not success */ - if (status != BLE_ERR_SUCCESS) { - reason = 0; - } else { - reason = evdata[3]; - } - BLE_HS_LOG(DEBUG, "Disconnection Complete: status=%u handle=%u " - "reason=%u\n", status, handle, reason); -} - -/** - * Display an encryption change event or encryption key refresh event - * - * @param evdata - * @param len - */ -static void -ble_hs_dbg_encrypt_chg_disp(uint8_t *evdata, uint8_t len) -{ - uint8_t status; - uint8_t enabled; - uint16_t handle; - - status = evdata[0]; - handle = get_le16(evdata + 1); - - /* Ignore reason if status is not success */ - if (status != BLE_ERR_SUCCESS) { - enabled = 0; - } else { - enabled = evdata[3]; - } - BLE_HS_LOG(DEBUG, "Encrypt change: status=%u handle=%u state=%u\n", - status, handle, enabled); -} - -/** - * Display an encryption encryption key refresh event - * - * @param evdata - * @param len - */ -static void -ble_hs_dbg_encrypt_refresh_disp(uint8_t *evdata, uint8_t len) -{ - uint8_t status; - uint16_t handle; - - status = evdata[0]; - handle = get_le16(evdata + 1); - - BLE_HS_LOG(DEBUG, "Encrypt key refresh: status=%u handle=%u\n", - status, handle); -} - -/** - * Display a version information event - * - * @param evdata - * @param len - */ -static void -ble_hs_dbg_rd_rem_ver_disp(uint8_t *evdata, uint8_t len) -{ - BLE_HS_LOG(DEBUG, "Remote Version Info: status=%u handle=%u vers_nr=%u " - "compid=%u subver=%u\n", - evdata[0], get_le16(evdata + 1), evdata[3], - get_le16(evdata + 4), get_le16(evdata + 6)); -} - -/** - * Display the number of completed packets event - * - * @param evdata - * @param len - */ -static void -ble_hs_dbg_num_comp_pkts_disp(uint8_t *evdata, uint8_t len) -{ - uint8_t handles; - uint8_t *handle_ptr; - uint16_t handle; - uint16_t pkts; - - handles = evdata[0]; - if (len != ((handles * 4) + 1)) { - BLE_HS_LOG(DEBUG, "ERR: Number of Completed Packets bad length: " - "num_handles=%u len=%u\n", handles, len); - return; - - } - - BLE_HS_LOG(DEBUG, "Number of Completed Packets: num_handles=%u\n", - handles); - if (handles) { - handle_ptr = evdata + 1; - while (handles) { - handle = get_le16(handle_ptr); - pkts = get_le16(handle_ptr + 2); - handle_ptr += 4; - BLE_HS_LOG(DEBUG, "handle:%u pkts:%u\n", handle, pkts); - --handles; - } - } -} - -/** - * Display the authenticated payload timeout event - * - * @param evdata - * @param len - */ -static void -ble_hs_dbg_auth_pyld_tmo_disp(uint8_t *evdata, uint8_t len) -{ - uint16_t handle; - - if (len != sizeof(uint16_t)) { - BLE_HS_LOG(DEBUG, "ERR: AuthPyldTmoEvent bad length %u\n", len); - return; - - } - - handle = get_le16(evdata); - BLE_HS_LOG(DEBUG, "AuthPyldTmo: handle=%u\n", handle); -} - - -static void -ble_hs_dbg_cmd_comp_info_params(uint8_t status, uint8_t ocf, uint8_t *evdata) -{ - int i; - uint8_t *dptr; - - if (status != BLE_ERR_SUCCESS) { - return; - } - - switch (ocf) { - case BLE_HCI_OCF_IP_RD_LOCAL_VER: - BLE_HS_LOG(DEBUG, "hci_ver=%u hci_rev=%u lmp_ver=%u mfrg=%u " - "lmp_subver=%u", - evdata[0], get_le16(evdata + 1), evdata[3], - get_le16(evdata + 4), get_le16(evdata + 6)); - break; - case BLE_HCI_OCF_IP_RD_LOC_SUPP_CMD: - BLE_HS_LOG(DEBUG, "supp_cmds="); - dptr = evdata; - for (i = 0; i < 8; ++i) { - BLE_HS_LOG(DEBUG, "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:", - dptr[0], dptr[1], dptr[2], dptr[3], - dptr[4], dptr[5], dptr[6], dptr[7]); - dptr += 8; - } - break; - case BLE_HCI_OCF_IP_RD_LOC_SUPP_FEAT: - BLE_HS_LOG(DEBUG, "supp_feat=0x%x%08x", - get_le32(evdata + 4), get_le32(evdata)); - break; - case BLE_HCI_OCF_IP_RD_BD_ADDR: - BLE_HS_LOG(DEBUG, "bd_addr=%x:%x:%x:%x:%x:%x", - evdata[5], evdata[4], evdata[3], - evdata[2], evdata[1], evdata[0]); - break; - default: - break; - } -} - -static void -ble_hs_dbg_cmd_complete_disp(uint8_t *evdata, uint8_t len) -{ - uint8_t cmd_pkts; - uint8_t ogf; - uint8_t ocf; - uint8_t status; - uint16_t opcode; - - if (len < 3) { - BLE_HS_LOG(DEBUG, "Invalid command complete: len=%d " - "(expected >= 3)", len); - goto done; - } - - cmd_pkts = evdata[0]; - opcode = get_le16(evdata + 1); - ogf = BLE_HCI_OGF(opcode); - ocf = BLE_HCI_OCF(opcode); - - BLE_HS_LOG(DEBUG, "Command complete: cmd_pkts=%u ogf=0x%x ocf=0x%x", - cmd_pkts, ogf, ocf); - - if (len == 3) { - goto done; - } - - status = evdata[3]; - BLE_HS_LOG(DEBUG, " status=%u ", status); - - /* Move past header and status */ - evdata += 4; - - /* Display parameters based on command. */ - switch (ogf) { - case BLE_HCI_OGF_INFO_PARAMS: - ble_hs_dbg_cmd_comp_info_params(status, ocf, evdata); - break; - case BLE_HCI_OGF_STATUS_PARAMS: - switch (ocf) { - case BLE_HCI_OCF_RD_RSSI: - BLE_HS_LOG(DEBUG, "handle=%u rssi=%d", get_le16(evdata), - (int8_t)evdata[2]); - break; - default: - break; - } - break; - case BLE_HCI_OGF_LE: - switch (ocf) { - case BLE_HCI_OCF_LE_RD_CHAN_MAP: - BLE_HS_LOG(DEBUG, "handle=%u chanmap=%x.%x.%x.%x.%x", - get_le16(evdata), evdata[2], evdata[3], evdata[4], - evdata[5], evdata[6]); - break; - case BLE_HCI_OCF_LE_RD_MAX_DATA_LEN: - BLE_HS_LOG(DEBUG, "txoct=%u txtime=%u rxoct=%u rxtime=%u", - get_le16(evdata), get_le16(evdata + 2), - get_le16(evdata + 4), get_le16(evdata + 6)); - break; - case BLE_HCI_OCF_LE_RD_SUPP_STATES: - BLE_HS_LOG(DEBUG, "states=0x%x%08x", get_le32(evdata + 4), - get_le32(evdata)); - break; - case BLE_HCI_OCF_LE_ENCRYPT: - BLE_HS_LOG(DEBUG, "encdata=0x%02x%02x%02x%02x%02x%02x%02x%02x", - evdata[15], evdata[14], evdata[13], evdata[12], - evdata[11], evdata[10], evdata[9], evdata[8]); - BLE_HS_LOG(DEBUG, "%02x%02x%02x%02x%02x%02x%02x%02x", - evdata[7], evdata[6], evdata[5], evdata[4], - evdata[3], evdata[2], evdata[1], evdata[0]); - - break; - case BLE_HCI_OCF_LE_RAND: - BLE_HS_LOG(DEBUG, "rand=0x%02x%02x%02x%02x%02x%02x%02x%02x", - evdata[0], evdata[1], evdata[2], evdata[3], - evdata[4], evdata[5], evdata[6], evdata[7]); - break; - case BLE_HCI_OCF_LE_RD_SUGG_DEF_DATA_LEN: - BLE_HS_LOG(DEBUG, "txoct=%u txtime=%u", get_le16(evdata), - get_le16(evdata + 2)); - break; - case BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY: - case BLE_HCI_OCF_LE_LT_KEY_REQ_NEG_REPLY: - case BLE_HCI_OCF_LE_SET_DATA_LEN: - BLE_HS_LOG(DEBUG, "handle=%u", get_le16(evdata)); - break; - default: - break; - } - break; - default: - break; - } - -done: - BLE_HS_LOG(DEBUG, "\n"); -} - -static void -ble_hs_dbg_cmd_status_disp(uint8_t *evdata, uint8_t len) -{ - uint8_t ogf; - uint8_t ocf; - uint16_t opcode; - - opcode = get_le16(evdata + 2); - ogf = BLE_HCI_OGF(opcode); - ocf = BLE_HCI_OCF(opcode); - - BLE_HS_LOG(DEBUG, "Command Status: status=%u cmd_pkts=%u ocf=0x%x " - "ogf=0x%x\n", evdata[0], evdata[1], ocf, ogf); -} - -void -ble_hs_dbg_event_disp(uint8_t *evbuf) -{ -#if MYNEWT_VAL(LOG_LEVEL) > LOG_LEVEL_DEBUG || BLE_MONITOR - return; -#endif - - uint8_t *evdata; - uint8_t evcode; - uint8_t len; - - /* Extract event code and length; move pointer to event parameter data */ - evcode = evbuf[0]; - len = evbuf[1]; - evdata = evbuf + BLE_HCI_EVENT_HDR_LEN; - - switch (evcode) { - case BLE_HCI_EVCODE_DISCONN_CMP: - ble_hs_dbg_disconn_comp_disp(evdata, len); - break; - case BLE_HCI_EVCODE_ENC_KEY_REFRESH: - ble_hs_dbg_encrypt_refresh_disp(evdata, len); - break; - case BLE_HCI_EVCODE_ENCRYPT_CHG: - ble_hs_dbg_encrypt_chg_disp(evdata, len); - break; - case BLE_HCI_EVCODE_RD_REM_VER_INFO_CMP: - ble_hs_dbg_rd_rem_ver_disp(evdata, len); - break; - case BLE_HCI_EVCODE_COMMAND_COMPLETE: - ble_hs_dbg_cmd_complete_disp(evdata, len); - break; - case BLE_HCI_EVCODE_COMMAND_STATUS: - ble_hs_dbg_cmd_status_disp(evdata, len); - break; - case BLE_HCI_EVCODE_NUM_COMP_PKTS: - ble_hs_dbg_num_comp_pkts_disp(evdata, len); - break; - case BLE_HCI_EVCODE_LE_META: - ble_hs_dbg_le_event_disp(evdata[0], len-1, evdata + 1); - break; - case BLE_HCI_EVCODE_AUTH_PYLD_TMO: - ble_hs_dbg_auth_pyld_tmo_disp(evdata, len); - break; - default: - BLE_HS_LOG(DEBUG, "Unknown event 0x%x len=%u\n", evcode, len); - break; - } -} - -void -ble_hs_dbg_set_sync_state(uint8_t sync_state) -{ - ble_hs_sync_state = sync_state; -} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow.c index 35e3cd9ab..2520c8541 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow.c @@ -40,14 +40,31 @@ static ble_npl_event_fn ble_hs_flow_event_cb; static struct ble_npl_event ble_hs_flow_ev; +/* Connection handle associated with each mbuf in ACL pool */ +static uint16_t ble_hs_flow_mbuf_conn_handle[ MYNEWT_VAL(BLE_ACL_BUF_COUNT) ]; + +static inline int +ble_hs_flow_mbuf_index(const struct os_mbuf *om) +{ + const struct os_mempool *mp = om->om_omp->omp_pool; + uintptr_t addr = (uintptr_t)om; + int idx; + + idx = (addr - mp->mp_membuf_addr) / mp->mp_block_size; + + BLE_HS_DBG_ASSERT(mp->mp_membuf_addr + idx * mp->mp_block_size == addr); + + return idx; +} + static int ble_hs_flow_tx_num_comp_pkts(void) { uint8_t buf[ - BLE_HCI_HOST_NUM_COMP_PKTS_HDR_LEN + - BLE_HCI_HOST_NUM_COMP_PKTS_ENT_LEN + sizeof(struct ble_hci_cb_host_num_comp_pkts_cp) + + sizeof(struct ble_hci_cb_host_num_comp_pkts_entry) ]; - struct hci_host_num_comp_pkts_entry entry; + struct ble_hci_cb_host_num_comp_pkts_cp *cmd = (void *) buf; struct ble_hs_conn *conn; int rc; @@ -62,16 +79,12 @@ ble_hs_flow_tx_num_comp_pkts(void) if (conn->bhc_completed_pkts > 0) { /* Only specify one connection per command. */ - buf[0] = 1; + /* TODO could combine this in single HCI command */ + cmd->handles = 1; /* Append entry for this connection. */ - entry.conn_handle = conn->bhc_handle; - entry.num_pkts = conn->bhc_completed_pkts; - rc = ble_hs_hci_cmd_build_host_num_comp_pkts_entry( - &entry, - buf + BLE_HCI_HOST_NUM_COMP_PKTS_HDR_LEN, - sizeof buf - BLE_HCI_HOST_NUM_COMP_PKTS_HDR_LEN); - BLE_HS_DBG_ASSERT(rc == 0); + cmd->h[0].handle = htole16(conn->bhc_handle); + cmd->h[0].count = htole16(conn->bhc_completed_pkts); conn->bhc_completed_pkts = 0; @@ -147,18 +160,13 @@ ble_hs_flow_acl_free(struct os_mempool_ext *mpe, void *data, void *arg) struct ble_hs_conn *conn; const struct os_mbuf *om; uint16_t conn_handle; + int idx; int rc; om = data; - /* An ACL data packet must be a single mbuf, and it must contain the - * corresponding connection handle in its user header. - */ - assert(OS_MBUF_IS_PKTHDR(om)); - assert(OS_MBUF_USRHDR_LEN(om) >= sizeof conn_handle); - - /* Copy the connection handle out of the mbuf. */ - memcpy(&conn_handle, OS_MBUF_USRHDR(om), sizeof conn_handle); + idx = ble_hs_flow_mbuf_index(om); + conn_handle = ble_hs_flow_mbuf_conn_handle[idx]; /* Free the mbuf back to its pool. */ rc = os_memblock_put_from_cb(&mpe->mpe_mp, data); @@ -194,23 +202,19 @@ ble_hs_flow_connection_broken(uint16_t conn_handle) } /** - * Fills the user header of an incoming data packet. On function return, the - * header contains the connection handle associated with the sender. + * Associates incoming data packet with a connection handle of the sender. * * If flow control is disabled, this function is a no-op. */ void -ble_hs_flow_fill_acl_usrhdr(struct os_mbuf *om) +ble_hs_flow_track_data_mbuf(struct os_mbuf *om) { #if MYNEWT_VAL(BLE_HS_FLOW_CTRL) const struct hci_data_hdr *hdr; - uint16_t *conn_handle; - - BLE_HS_DBG_ASSERT(OS_MBUF_USRHDR_LEN(om) >= sizeof *conn_handle); - conn_handle = OS_MBUF_USRHDR(om); + int idx = ble_hs_flow_mbuf_index(om); hdr = (void *)om->om_data; - *conn_handle = BLE_HCI_DATA_HANDLE(hdr->hdh_handle_pb_bc); + ble_hs_flow_mbuf_conn_handle[idx] = BLE_HCI_DATA_HANDLE(hdr->hdh_handle_pb_bc); #endif } @@ -224,29 +228,39 @@ int ble_hs_flow_startup(void) { #if MYNEWT_VAL(BLE_HS_FLOW_CTRL) - struct hci_host_buf_size buf_size_cmd; + struct ble_hci_cb_ctlr_to_host_fc_cp enable_cmd; + struct ble_hci_cb_host_buf_size_cp buf_size_cmd = { + .acl_data_len = htole16(MYNEWT_VAL(BLE_ACL_BUF_SIZE)), + .acl_num = htole16(MYNEWT_VAL(BLE_ACL_BUF_COUNT)), + }; int rc; ble_npl_event_init(&ble_hs_flow_ev, ble_hs_flow_event_cb, NULL); /* Assume failure. */ ble_hci_trans_set_acl_free_cb(NULL, NULL); + #if MYNEWT_VAL(SELFTEST) ble_npl_callout_stop(&ble_hs_flow_timer); #endif - rc = ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(BLE_HCI_CTLR_TO_HOST_FC_ACL); + enable_cmd.enable = BLE_HCI_CTLR_TO_HOST_FC_ACL; + + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, + BLE_HCI_OCF_CB_SET_CTLR_TO_HOST_FC), + &enable_cmd, sizeof(enable_cmd), NULL, 0); if (rc != 0) { return rc; } - buf_size_cmd = (struct hci_host_buf_size) { - .acl_pkt_len = MYNEWT_VAL(BLE_ACL_BUF_SIZE), - .num_acl_pkts = MYNEWT_VAL(BLE_ACL_BUF_COUNT), - }; - rc = ble_hs_hci_cmd_tx_host_buf_size(&buf_size_cmd); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, + BLE_HCI_OCF_CB_HOST_BUF_SIZE), + &buf_size_cmd, sizeof(buf_size_cmd), NULL, 0); if (rc != 0) { - ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(BLE_HCI_CTLR_TO_HOST_FC_OFF); + enable_cmd.enable = BLE_HCI_CTLR_TO_HOST_FC_OFF; + ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, + BLE_HCI_OCF_CB_SET_CTLR_TO_HOST_FC), + &enable_cmd, sizeof(enable_cmd), NULL, 0); return rc; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow_priv.h index b1aa8c2fc..753eaf8ff 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_flow_priv.h @@ -26,7 +26,7 @@ extern "C" { #endif void ble_hs_flow_connection_broken(uint16_t conn_handle); -void ble_hs_flow_fill_acl_usrhdr(struct os_mbuf *om); +void ble_hs_flow_track_data_mbuf(struct os_mbuf *om); int ble_hs_flow_startup(void); #ifdef __cplusplus diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci.c index 92ffde8fd..3cfed27e2 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci.c @@ -25,7 +25,6 @@ #include "nimble/ble_hci_trans.h" #include "host/ble_monitor.h" #include "ble_hs_priv.h" -#include "ble_hs_dbg_priv.h" #include "ble_monitor_priv.h" #define BLE_HCI_CMD_TIMEOUT_MS 2000 @@ -33,10 +32,13 @@ static struct ble_npl_mutex ble_hs_hci_mutex; static struct ble_npl_sem ble_hs_hci_sem; -static uint8_t *ble_hs_hci_ack; +static struct ble_hci_ev *ble_hs_hci_ack; static uint16_t ble_hs_hci_buf_sz; static uint8_t ble_hs_hci_max_pkts; + +/* For now 32-bits of features is enough */ static uint32_t ble_hs_hci_sup_feat; + static uint8_t ble_hs_hci_version; #define BLE_HS_HCI_FRAG_DATABUF_SIZE \ @@ -128,71 +130,66 @@ ble_hs_hci_add_avail_pkts(uint16_t delta) } static int -ble_hs_hci_rx_cmd_complete(uint8_t event_code, uint8_t *data, int len, +ble_hs_hci_rx_cmd_complete(const void *data, int len, struct ble_hs_hci_ack *out_ack) { + const struct ble_hci_ev_command_complete *ev = data; + const struct ble_hci_ev_command_complete_nop *nop = data; uint16_t opcode; - uint8_t *params; - uint8_t params_len; - uint8_t num_pkts; - if (len < BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN) { - return BLE_HS_ECONTROLLER; + if (len < sizeof(*ev)) { + if (len < sizeof(*nop)) { + return BLE_HS_ECONTROLLER; + } + + /* nop is special as it doesn't have status and response */ + + opcode = le16toh(nop->opcode); + if (opcode != BLE_HCI_OPCODE_NOP) { + return BLE_HS_ECONTROLLER; + } + + /* TODO Process num_pkts field. */ + + out_ack->bha_status = 0; + out_ack->bha_params = NULL; + out_ack->bha_params_len = 0; + return 0; } - num_pkts = data[2]; - opcode = get_le16(data + 3); - params = data + 5; + opcode = le16toh(ev->opcode); - /* XXX: Process num_pkts field. */ - (void)num_pkts; + /* TODO Process num_pkts field. */ out_ack->bha_opcode = opcode; - params_len = len - BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN; - if (params_len > 0) { - out_ack->bha_status = BLE_HS_HCI_ERR(params[0]); - } else if (opcode == BLE_HCI_OPCODE_NOP) { - out_ack->bha_status = 0; - } else { - out_ack->bha_status = BLE_HS_ECONTROLLER; - } - - /* Don't include the status byte in the parameters blob. */ - if (params_len > 1) { - out_ack->bha_params = params + 1; - out_ack->bha_params_len = params_len - 1; + out_ack->bha_status = BLE_HS_HCI_ERR(ev->status); + out_ack->bha_params_len = len - sizeof(*ev); + if (out_ack->bha_params_len) { + out_ack->bha_params = ev->return_params; } else { out_ack->bha_params = NULL; - out_ack->bha_params_len = 0; } return 0; } static int -ble_hs_hci_rx_cmd_status(uint8_t event_code, uint8_t *data, int len, +ble_hs_hci_rx_cmd_status(const void *data, int len, struct ble_hs_hci_ack *out_ack) { - uint16_t opcode; - uint8_t num_pkts; - uint8_t status; + const struct ble_hci_ev_command_status *ev = data; - if (len < BLE_HCI_EVENT_CMD_STATUS_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - status = data[2]; - num_pkts = data[3]; - opcode = get_le16(data + 4); - /* XXX: Process num_pkts field. */ - (void)num_pkts; - out_ack->bha_opcode = opcode; + out_ack->bha_opcode = le16toh(ev->opcode); out_ack->bha_params = NULL; out_ack->bha_params_len = 0; - out_ack->bha_status = BLE_HS_HCI_ERR(status); + out_ack->bha_status = BLE_HS_HCI_ERR(ev->status); return 0; } @@ -202,9 +199,6 @@ ble_hs_hci_process_ack(uint16_t expected_opcode, uint8_t *params_buf, uint8_t params_buf_len, struct ble_hs_hci_ack *out_ack) { - uint8_t event_code; - uint8_t param_len; - uint8_t event_len; int rc; BLE_HS_DBG_ASSERT(ble_hs_hci_ack != NULL); @@ -212,25 +206,19 @@ ble_hs_hci_process_ack(uint16_t expected_opcode, /* Count events received */ STATS_INC(ble_hs_stats, hci_event); - /* Display to console */ - ble_hs_dbg_event_disp(ble_hs_hci_ack); - - event_code = ble_hs_hci_ack[0]; - param_len = ble_hs_hci_ack[1]; - event_len = param_len + 2; /* Clear ack fields up front to silence spurious gcc warnings. */ memset(out_ack, 0, sizeof *out_ack); - switch (event_code) { + switch (ble_hs_hci_ack->opcode) { case BLE_HCI_EVCODE_COMMAND_COMPLETE: - rc = ble_hs_hci_rx_cmd_complete(event_code, ble_hs_hci_ack, - event_len, out_ack); + rc = ble_hs_hci_rx_cmd_complete(ble_hs_hci_ack->data, + ble_hs_hci_ack->length, out_ack); break; case BLE_HCI_EVCODE_COMMAND_STATUS: - rc = ble_hs_hci_rx_cmd_status(event_code, ble_hs_hci_ack, - event_len, out_ack); + rc = ble_hs_hci_rx_cmd_status(ble_hs_hci_ack->data, + ble_hs_hci_ack->length, out_ack); break; default: @@ -273,20 +261,20 @@ ble_hs_hci_wait_for_ack(void) rc = BLE_HS_ETIMEOUT_HCI; } else { ble_hs_hci_ack = - ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_CMD); + (void *) ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_CMD); BLE_HS_DBG_ASSERT(ble_hs_hci_ack != NULL); - rc = ble_hs_hci_phony_ack_cb(ble_hs_hci_ack, 260); + rc = ble_hs_hci_phony_ack_cb((void *)ble_hs_hci_ack, 260); } #else rc = ble_npl_sem_pend(&ble_hs_hci_sem, - ble_npl_time_ms_to_ticks32(BLE_HCI_CMD_TIMEOUT_MS)); + ble_npl_time_ms_to_ticks32(BLE_HCI_CMD_TIMEOUT_MS)); switch (rc) { case 0: BLE_HS_DBG_ASSERT(ble_hs_hci_ack != NULL); #if BLE_MONITOR - ble_monitor_send(BLE_MONITOR_OPCODE_EVENT_PKT, ble_hs_hci_ack, - ble_hs_hci_ack[1] + BLE_HCI_EVENT_HDR_LEN); + ble_monitor_send(BLE_MONITOR_OPCODE_EVENT_PKT, (void *) ble_hs_hci_ack, + sizeof(*ble_hs_hci_ack) + ble_hs_hci_ack->length); #endif break; @@ -304,9 +292,8 @@ ble_hs_hci_wait_for_ack(void) } int -ble_hs_hci_cmd_tx(uint16_t opcode, void *cmd, uint8_t cmd_len, - void *evt_buf, uint8_t evt_buf_len, - uint8_t *out_evt_buf_len) +ble_hs_hci_cmd_tx(uint16_t opcode, const void *cmd, uint8_t cmd_len, + void *rsp, uint8_t rsp_len) { struct ble_hs_hci_ack ack; int rc; @@ -325,21 +312,23 @@ ble_hs_hci_cmd_tx(uint16_t opcode, void *cmd, uint8_t cmd_len, goto done; } - rc = ble_hs_hci_process_ack(opcode, evt_buf, evt_buf_len, &ack); + rc = ble_hs_hci_process_ack(opcode, rsp, rsp_len, &ack); if (rc != 0) { ble_hs_sched_reset(rc); goto done; } - if (out_evt_buf_len != NULL) { - *out_evt_buf_len = ack.bha_params_len; - } - rc = ack.bha_status; + /* on success we should always get full response */ + if (!rc && (ack.bha_params_len != rsp_len)) { + ble_hs_sched_reset(rc); + goto done; + } + done: if (ble_hs_hci_ack != NULL) { - ble_hci_trans_buf_free(ble_hs_hci_ack); + ble_hci_trans_buf_free((uint8_t *) ble_hs_hci_ack); ble_hs_hci_ack = NULL; } @@ -347,20 +336,7 @@ done: return rc; } -int -ble_hs_hci_cmd_tx_empty_ack(uint16_t opcode, void *cmd, uint8_t cmd_len) -{ - int rc; - - rc = ble_hs_hci_cmd_tx(opcode, cmd, cmd_len, NULL, 0, NULL); - if (rc != 0) { - return rc; - } - - return 0; -} - -void +static void ble_hs_hci_rx_ack(uint8_t *ack_ev) { if (ble_npl_sem_get_count(&ble_hs_hci_sem) > 0) { @@ -373,30 +349,27 @@ ble_hs_hci_rx_ack(uint8_t *ack_ev) /* Unblock the application now that the HCI command buffer is populated * with the acknowledgement. */ - ble_hs_hci_ack = ack_ev; + ble_hs_hci_ack = (struct ble_hci_ev *) ack_ev; ble_npl_sem_release(&ble_hs_hci_sem); } int ble_hs_hci_rx_evt(uint8_t *hci_ev, void *arg) { - int enqueue = 0; + struct ble_hci_ev *ev = (void *) hci_ev; + struct ble_hci_ev_command_complete *cmd_complete = (void *) ev->data; + struct ble_hci_ev_command_status *cmd_status = (void *) ev->data; + int enqueue; BLE_HS_DBG_ASSERT(hci_ev != NULL); - switch (hci_ev[0]) { + switch (ev->opcode) { case BLE_HCI_EVCODE_COMMAND_COMPLETE: - if (hci_ev[3] == 0 && hci_ev[4] == 0) { - enqueue = 1; - } + enqueue = (cmd_complete->opcode == BLE_HCI_OPCODE_NOP); break; - case BLE_HCI_EVCODE_COMMAND_STATUS: - if (hci_ev[4] == 0 && hci_ev[5] == 0) { - enqueue = 1; - } + enqueue = (cmd_status->opcode == BLE_HCI_OPCODE_NOP); break; - default: enqueue = 1; break; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_cmd.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_cmd.c index 38acdaa34..7aa9e4e74 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_cmd.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_cmd.c @@ -25,21 +25,31 @@ #include "nimble/hci_common.h" #include "nimble/ble_hci_trans.h" #include "host/ble_monitor.h" -#include "ble_hs_dbg_priv.h" #include "ble_hs_priv.h" #include "ble_monitor_priv.h" +/* + * HCI Command Header + * + * Comprises the following fields + * -> Opcode group field & Opcode command field (2) + * -> Parameter Length (1) + * Length of all the parameters (does not include any part of the hci + * command header + */ +#define BLE_HCI_CMD_HDR_LEN (3) + static int -ble_hs_hci_cmd_transport(uint8_t *cmdbuf) +ble_hs_hci_cmd_transport(struct ble_hci_cmd *cmd) { int rc; #if BLE_MONITOR - ble_monitor_send(BLE_MONITOR_OPCODE_COMMAND_PKT, cmdbuf, - cmdbuf[2] + BLE_HCI_CMD_HDR_LEN); + ble_monitor_send(BLE_MONITOR_OPCODE_COMMAND_PKT, cmd, + cmd->length + sizeof(*cmd)); #endif - rc = ble_hci_trans_hs_cmd_tx(cmdbuf); + rc = ble_hci_trans_hs_cmd_tx((uint8_t *) cmd); switch (rc) { case 0: return 0; @@ -52,19 +62,6 @@ ble_hs_hci_cmd_transport(uint8_t *cmdbuf) } } -void -ble_hs_hci_cmd_write_hdr(uint8_t ogf, uint16_t ocf, uint8_t len, void *buf) -{ - uint16_t opcode; - uint8_t *u8ptr; - - u8ptr = buf; - - opcode = (ogf << 10) | ocf; - put_le16(u8ptr, opcode); - u8ptr[2] = len; -} - static int ble_hs_hci_cmd_send(uint16_t opcode, uint8_t len, const void *cmddata) { @@ -90,7 +87,7 @@ ble_hs_hci_cmd_send(uint16_t opcode, uint8_t len, const void *cmddata) #endif buf--; - rc = ble_hs_hci_cmd_transport(buf); + rc = ble_hs_hci_cmd_transport((void *) buf); if (rc == 0) { STATS_INC(ble_hs_stats, hci_cmd); @@ -102,7 +99,7 @@ ble_hs_hci_cmd_send(uint16_t opcode, uint8_t len, const void *cmddata) } int -ble_hs_hci_cmd_send_buf(uint16_t opcode, void *buf, uint8_t buf_len) +ble_hs_hci_cmd_send_buf(uint16_t opcode, const void *buf, uint8_t buf_len) { switch (ble_hs_sync_state) { case BLE_HS_SYNC_STATE_BAD: @@ -124,1726 +121,3 @@ ble_hs_hci_cmd_send_buf(uint16_t opcode, void *buf, uint8_t buf_len) return ble_hs_hci_cmd_send(opcode, buf_len, buf); } - - -/** - * Send a LE command from the host to the controller. - * - * @param ocf - * @param len - * @param cmddata - * - * @return int - */ -static int -ble_hs_hci_cmd_le_send(uint16_t ocf, uint8_t len, void *cmddata) -{ - return ble_hs_hci_cmd_send(BLE_HCI_OP(BLE_HCI_OGF_LE, ocf), len, cmddata); -} - -static int -ble_hs_hci_cmd_body_le_whitelist_chg(const uint8_t *addr, uint8_t addr_type, - uint8_t *dst) -{ - if (addr_type > BLE_ADDR_RANDOM) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = addr_type; - memcpy(dst + 1, addr, BLE_DEV_ADDR_LEN); - - return 0; -} - -static int -ble_hs_hci_cmd_body_le_set_adv_params(const struct hci_adv_params *adv, - uint8_t *dst) -{ - uint16_t itvl; - - BLE_HS_DBG_ASSERT(adv != NULL); - - /* Make sure parameters are valid */ - if ((adv->adv_itvl_min > adv->adv_itvl_max) || - (adv->own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) || - (adv->peer_addr_type > BLE_HCI_ADV_PEER_ADDR_MAX) || - (adv->adv_filter_policy > BLE_HCI_ADV_FILT_MAX) || - (adv->adv_type > BLE_HCI_ADV_TYPE_MAX) || - (adv->adv_channel_map == 0) || - ((adv->adv_channel_map & 0xF8) != 0)) { - /* These parameters are not valid */ - return -1; - } - -/* When build with nimBLE controller we know it is BT5 compliant so no need - * to limit non-connectable advertising interval - */ -#if MYNEWT_VAL(BLE_CONTROLLER) - itvl = BLE_HCI_ADV_ITVL_MIN; -#else -#if MYNEWT_VAL(ESP_BLE_MESH) - itvl = BLE_HCI_ADV_ITVL_MIN; -#else - /* Make sure interval is valid for advertising type. */ - if (((adv->adv_type == BLE_HCI_ADV_TYPE_ADV_NONCONN_IND) || - (adv->adv_type == BLE_HCI_ADV_TYPE_ADV_SCAN_IND)) && - ble_hs_hci_get_hci_version() < BLE_HCI_VER_BCS_5_0) { - itvl = BLE_HCI_ADV_ITVL_NONCONN_MIN; - } else { - itvl = BLE_HCI_ADV_ITVL_MIN; - } -#endif -#endif - - /* Do not check if high duty-cycle directed */ - if (adv->adv_type != BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_HD) { - if ((adv->adv_itvl_min < itvl) || - (adv->adv_itvl_min > BLE_HCI_ADV_ITVL_MAX)) { - return -1; - } - } - - put_le16(dst, adv->adv_itvl_min); - put_le16(dst + 2, adv->adv_itvl_max); - dst[4] = adv->adv_type; - dst[5] = adv->own_addr_type; - dst[6] = adv->peer_addr_type; - memcpy(dst + 7, adv->peer_addr, BLE_DEV_ADDR_LEN); - dst[13] = adv->adv_channel_map; - dst[14] = adv->adv_filter_policy; - - return 0; -} - -int -ble_hs_hci_cmd_build_le_set_adv_params(const struct hci_adv_params *adv, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_ADV_PARAM_LEN); - - return ble_hs_hci_cmd_body_le_set_adv_params(adv, dst); -} - -/** - * Set advertising data - * - * OGF = 0x08 (LE) - * OCF = 0x0008 - * - * @param data - * @param len - * @param dst - * - * @return int - */ -static int -ble_hs_hci_cmd_body_le_set_adv_data(const uint8_t *data, uint8_t len, - uint8_t *dst) -{ - /* Check for valid parameters */ - if (((data == NULL) && (len != 0)) || (len > BLE_HCI_MAX_ADV_DATA_LEN)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - memset(dst, 0, BLE_HCI_SET_ADV_DATA_LEN); - dst[0] = len; - memcpy(dst + 1, data, len); - - return 0; -} - -/** - * Set advertising data - * - * OGF = 0x08 (LE) - * OCF = 0x0008 - * - * @param data - * @param len - * @param dst - * - * @return int - */ -int -ble_hs_hci_cmd_build_le_set_adv_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_ADV_DATA_LEN); - - return ble_hs_hci_cmd_body_le_set_adv_data(data, len, dst); -} - -static int -ble_hs_hci_cmd_body_le_set_scan_rsp_data(const uint8_t *data, uint8_t len, - uint8_t *dst) -{ - /* Check for valid parameters */ - if (((data == NULL) && (len != 0)) || - (len > BLE_HCI_MAX_SCAN_RSP_DATA_LEN)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - memset(dst, 0, BLE_HCI_SET_SCAN_RSP_DATA_LEN); - dst[0] = len; - memcpy(dst + 1, data, len); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_set_scan_rsp_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_SCAN_RSP_DATA_LEN); - - return ble_hs_hci_cmd_body_le_set_scan_rsp_data(data, len, dst); -} - -static void -ble_hs_hci_cmd_body_set_event_mask(uint64_t event_mask, uint8_t *dst) -{ - put_le64(dst, event_mask); -} - -void -ble_hs_hci_cmd_build_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_EVENT_MASK_LEN); - - ble_hs_hci_cmd_body_set_event_mask(event_mask, dst); -} - -void -ble_hs_hci_cmd_build_set_event_mask2(uint64_t event_mask, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_EVENT_MASK_LEN); - - ble_hs_hci_cmd_body_set_event_mask(event_mask, dst); -} - -static void -ble_hs_hci_cmd_body_disconnect(uint16_t handle, uint8_t reason, uint8_t *dst) -{ - put_le16(dst + 0, handle); - dst[2] = reason; -} - -void -ble_hs_hci_cmd_build_disconnect(uint16_t handle, uint8_t reason, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_DISCONNECT_CMD_LEN); - - ble_hs_hci_cmd_body_disconnect(handle, reason, dst); -} - -static void -ble_hs_hci_cmd_body_le_set_event_mask(uint64_t event_mask, uint8_t *dst) -{ - put_le64(dst, event_mask); -} - -void -ble_hs_hci_cmd_build_le_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_LE_EVENT_MASK_LEN); - - ble_hs_hci_cmd_body_le_set_event_mask(event_mask, dst); -} - -static void -ble_hs_hci_cmd_body_le_set_adv_enable(uint8_t enable, uint8_t *dst) -{ - dst[0] = enable; -} - -void -ble_hs_hci_cmd_build_le_set_adv_enable(uint8_t enable, uint8_t *dst, - int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_ADV_ENABLE_LEN); - - ble_hs_hci_cmd_body_le_set_adv_enable(enable, dst); -} - -static int -ble_hs_hci_cmd_body_le_set_scan_params( - uint8_t scan_type, uint16_t scan_itvl, uint16_t scan_window, - uint8_t own_addr_type, uint8_t filter_policy, uint8_t *dst) { - - /* Make sure parameters are valid */ - if ((scan_type != BLE_HCI_SCAN_TYPE_PASSIVE) && - (scan_type != BLE_HCI_SCAN_TYPE_ACTIVE)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check interval and window */ - if ((scan_itvl < BLE_HCI_SCAN_ITVL_MIN) || - (scan_itvl > BLE_HCI_SCAN_ITVL_MAX) || - (scan_window < BLE_HCI_SCAN_WINDOW_MIN) || - (scan_window > BLE_HCI_SCAN_WINDOW_MAX) || - (scan_itvl < scan_window)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check own addr type */ - if (own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check scanner filter policy */ - if (filter_policy > BLE_HCI_SCAN_FILT_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = scan_type; - put_le16(dst + 1, scan_itvl); - put_le16(dst + 3, scan_window); - dst[5] = own_addr_type; - dst[6] = filter_policy; - - return 0; -} - -int -ble_hs_hci_cmd_build_le_set_scan_params(uint8_t scan_type, - uint16_t scan_itvl, - uint16_t scan_window, - uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_SCAN_PARAM_LEN); - - return ble_hs_hci_cmd_body_le_set_scan_params(scan_type, scan_itvl, - scan_window, own_addr_type, - filter_policy, dst); -} - -static void -ble_hs_hci_cmd_body_le_set_scan_enable(uint8_t enable, uint8_t filter_dups, - uint8_t *dst) -{ - dst[0] = enable; - dst[1] = filter_dups; -} - -void -ble_hs_hci_cmd_build_le_set_scan_enable(uint8_t enable, uint8_t filter_dups, - uint8_t *dst, uint8_t dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_SCAN_ENABLE_LEN); - - ble_hs_hci_cmd_body_le_set_scan_enable(enable, filter_dups, dst); -} - -static int -ble_hs_hci_cmd_body_le_create_connection(const struct hci_create_conn *hcc, - uint8_t *cmd) -{ - /* Check scan interval and scan window */ - if ((hcc->scan_itvl < BLE_HCI_SCAN_ITVL_MIN) || - (hcc->scan_itvl > BLE_HCI_SCAN_ITVL_MAX) || - (hcc->scan_window < BLE_HCI_SCAN_WINDOW_MIN) || - (hcc->scan_window > BLE_HCI_SCAN_WINDOW_MAX) || - (hcc->scan_itvl < hcc->scan_window)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check initiator filter policy */ - if (hcc->filter_policy > BLE_HCI_CONN_FILT_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check peer addr type */ - if (hcc->peer_addr_type > BLE_HCI_CONN_PEER_ADDR_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check own addr type */ - if (hcc->own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check connection interval min */ - if ((hcc->conn_itvl_min < BLE_HCI_CONN_ITVL_MIN) || - (hcc->conn_itvl_min > BLE_HCI_CONN_ITVL_MAX)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check connection interval max */ - if ((hcc->conn_itvl_max < BLE_HCI_CONN_ITVL_MIN) || - (hcc->conn_itvl_max > BLE_HCI_CONN_ITVL_MAX) || - (hcc->conn_itvl_max < hcc->conn_itvl_min)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check connection latency */ - if ( -#if BLE_HCI_CONN_LATENCY_MIN - (hcc->conn_latency < BLE_HCI_CONN_LATENCY_MIN) || -#endif - (hcc->conn_latency > BLE_HCI_CONN_LATENCY_MAX)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check supervision timeout */ - if ((hcc->supervision_timeout < BLE_HCI_CONN_SPVN_TIMEOUT_MIN) || - (hcc->supervision_timeout > BLE_HCI_CONN_SPVN_TIMEOUT_MAX)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check connection event length */ - if (hcc->min_ce_len > hcc->max_ce_len) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - put_le16(cmd + 0, hcc->scan_itvl); - put_le16(cmd + 2, hcc->scan_window); - cmd[4] = hcc->filter_policy; - cmd[5] = hcc->peer_addr_type; - memcpy(cmd + 6, hcc->peer_addr, BLE_DEV_ADDR_LEN); - cmd[12] = hcc->own_addr_type; - put_le16(cmd + 13, hcc->conn_itvl_min); - put_le16(cmd + 15, hcc->conn_itvl_max); - put_le16(cmd + 17, hcc->conn_latency); - put_le16(cmd + 19, hcc->supervision_timeout); - put_le16(cmd + 21, hcc->min_ce_len); - put_le16(cmd + 23, hcc->max_ce_len); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_create_connection(const struct hci_create_conn *hcc, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_CREATE_CONN_LEN); - - return ble_hs_hci_cmd_body_le_create_connection(hcc, cmd); -} - -int -ble_hs_hci_cmd_build_le_add_to_whitelist(const uint8_t *addr, - uint8_t addr_type, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_ADD_WHITE_LIST_LEN); - - return ble_hs_hci_cmd_body_le_whitelist_chg(addr, addr_type, dst); -} - -/** - * Reset the controller and link manager. - * - * @return int - */ -int -ble_hs_hci_cmd_reset(void) -{ - return ble_hs_hci_cmd_send(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, - BLE_HCI_OCF_CB_RESET), - 0, NULL); -} - -/** Set controller to host flow control (OGF 0x03, OCF 0x0031). */ -int -ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(uint8_t fc_enable) -{ - if (fc_enable > BLE_HCI_CTLR_TO_HOST_FC_BOTH) { - return BLE_HS_EINVAL; - } - - return ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, - BLE_HCI_OCF_CB_SET_CTLR_TO_HOST_FC), - &fc_enable, 1); -} - -/* Host buffer size (OGF 0x03, OCF 0x0033). */ -int -ble_hs_hci_cmd_tx_host_buf_size(const struct hci_host_buf_size *cmd) -{ - uint8_t buf[BLE_HCI_HOST_BUF_SIZE_LEN]; - - put_le16(buf + 0, cmd->acl_pkt_len); - buf[2] = cmd->sync_pkt_len; - put_le16(buf + 3, cmd->num_acl_pkts); - put_le16(buf + 5, cmd->num_sync_pkts); - - return ble_hs_hci_cmd_tx_empty_ack( - BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, BLE_HCI_OCF_CB_HOST_BUF_SIZE), - buf, sizeof buf); -} - -/* Host number of completed packets (OGF 0x03, OCF 0x0035). */ -int -ble_hs_hci_cmd_build_host_num_comp_pkts_entry( - const struct hci_host_num_comp_pkts_entry *entry, - uint8_t *dst, int dst_len) -{ - if (dst_len < BLE_HCI_HOST_NUM_COMP_PKTS_ENT_LEN) { - return BLE_HS_EMSGSIZE; - } - - put_le16(dst + 0, entry->conn_handle); - put_le16(dst + 2, entry->num_pkts); - - return 0; -} - -/** - * Read the transmit power level used for LE advertising channel packets. - * - * @return int - */ -int -ble_hs_hci_cmd_read_adv_pwr(void) -{ - return ble_hs_hci_cmd_send(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_RD_ADV_CHAN_TXPWR), - 0, NULL); -} - -int -ble_hs_hci_cmd_le_create_conn_cancel(void) -{ - return ble_hs_hci_cmd_send(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_CREATE_CONN_CANCEL), - 0, NULL); -} - -static int -ble_hs_hci_cmd_body_le_conn_update(const struct hci_conn_update *hcu, - uint8_t *dst) -{ - /* XXX: add parameter checking later */ - put_le16(dst + 0, hcu->handle); - put_le16(dst + 2, hcu->conn_itvl_min); - put_le16(dst + 4, hcu->conn_itvl_max); - put_le16(dst + 6, hcu->conn_latency); - put_le16(dst + 8, hcu->supervision_timeout); - put_le16(dst + 10, hcu->min_ce_len); - put_le16(dst + 12, hcu->max_ce_len); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_conn_update(const struct hci_conn_update *hcu, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_CONN_UPDATE_LEN); - - return ble_hs_hci_cmd_body_le_conn_update(hcu, dst); -} - -int -ble_hs_hci_cmd_le_conn_update(const struct hci_conn_update *hcu) -{ - uint8_t cmd[BLE_HCI_CONN_UPDATE_LEN]; - int rc; - - rc = ble_hs_hci_cmd_body_le_conn_update(hcu, cmd); - if (rc != 0) { - return rc; - } - - return ble_hs_hci_cmd_le_send(BLE_HCI_OCF_LE_CONN_UPDATE, - BLE_HCI_CONN_UPDATE_LEN, cmd); -} - -static void -ble_hs_hci_cmd_body_le_lt_key_req_reply(const struct hci_lt_key_req_reply *hkr, - uint8_t *dst) -{ - put_le16(dst + 0, hkr->conn_handle); - memcpy(dst + 2, hkr->long_term_key, sizeof hkr->long_term_key); -} - -/** - * Sends the long-term key (LTK) to the controller. - * - * Note: This function expects the 128-bit key to be in little-endian byte - * order. - * - * OGF = 0x08 (LE) - * OCF = 0x001a - * - * @param key - * @param pt - * - * @return int - */ -void -ble_hs_hci_cmd_build_le_lt_key_req_reply( - const struct hci_lt_key_req_reply *hkr, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LT_KEY_REQ_REPLY_LEN); - - ble_hs_hci_cmd_body_le_lt_key_req_reply(hkr, dst); -} - -void -ble_hs_hci_cmd_build_le_lt_key_req_neg_reply(uint16_t conn_handle, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LT_KEY_REQ_NEG_REPLY_LEN); - - put_le16(dst, conn_handle); -} - -static void -ble_hs_hci_cmd_body_le_conn_param_reply(const struct hci_conn_param_reply *hcr, - uint8_t *dst) -{ - put_le16(dst + 0, hcr->handle); - put_le16(dst + 2, hcr->conn_itvl_min); - put_le16(dst + 4, hcr->conn_itvl_max); - put_le16(dst + 6, hcr->conn_latency); - put_le16(dst + 8, hcr->supervision_timeout); - put_le16(dst + 10, hcr->min_ce_len); - put_le16(dst + 12, hcr->max_ce_len); -} - -void -ble_hs_hci_cmd_build_le_conn_param_reply( - const struct hci_conn_param_reply *hcr, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_CONN_PARAM_REPLY_LEN); - - ble_hs_hci_cmd_body_le_conn_param_reply(hcr, dst); -} - -int -ble_hs_hci_cmd_le_conn_param_reply(const struct hci_conn_param_reply *hcr) -{ - uint8_t cmd[BLE_HCI_CONN_PARAM_REPLY_LEN]; - - put_le16(cmd + 0, hcr->handle); - put_le16(cmd + 2, hcr->conn_itvl_min); - put_le16(cmd + 4, hcr->conn_itvl_max); - put_le16(cmd + 6, hcr->conn_latency); - put_le16(cmd + 8, hcr->supervision_timeout); - put_le16(cmd + 10, hcr->min_ce_len); - put_le16(cmd + 12, hcr->max_ce_len); - - return ble_hs_hci_cmd_le_send(BLE_HCI_OCF_LE_REM_CONN_PARAM_RR, - BLE_HCI_CONN_PARAM_REPLY_LEN, cmd); -} - -static void -ble_hs_hci_cmd_body_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn, uint8_t *dst) -{ - put_le16(dst + 0, hcn->handle); - dst[2] = hcn->reason; -} - - -void -ble_hs_hci_cmd_build_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_CONN_PARAM_NEG_REPLY_LEN); - - ble_hs_hci_cmd_body_le_conn_param_neg_reply(hcn, dst); -} - -int -ble_hs_hci_cmd_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn) -{ - uint8_t cmd[BLE_HCI_CONN_PARAM_NEG_REPLY_LEN]; - - ble_hs_hci_cmd_body_le_conn_param_neg_reply(hcn, cmd); - - return ble_hs_hci_cmd_le_send(BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR, - BLE_HCI_CONN_PARAM_NEG_REPLY_LEN, cmd); -} - -static void -ble_hs_hci_cmd_body_le_start_encrypt(const struct hci_start_encrypt *cmd, - uint8_t *dst) -{ - put_le16(dst + 0, cmd->connection_handle); - put_le64(dst + 2, cmd->random_number); - put_le16(dst + 10, cmd->encrypted_diversifier); - memcpy(dst + 12, cmd->long_term_key, sizeof cmd->long_term_key); -} - -/* - * OGF=0x08 OCF=0x0019 - */ -void -ble_hs_hci_cmd_build_le_start_encrypt(const struct hci_start_encrypt *cmd, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_START_ENCRYPT_LEN); - - ble_hs_hci_cmd_body_le_start_encrypt(cmd, dst); -} - -/** - * Read the RSSI for a given connection handle - * - * NOTE: OGF=0x05 OCF=0x0005 - * - * @param handle - * - * @return int - */ -static void -ble_hs_hci_cmd_body_read_rssi(uint16_t handle, uint8_t *dst) -{ - put_le16(dst, handle); -} - -void -ble_hs_hci_cmd_build_read_rssi(uint16_t handle, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_READ_RSSI_LEN); - - ble_hs_hci_cmd_body_read_rssi(handle, dst); -} - -/** - * LE Set Host Channel Classification - * - * OGF = 0x08 (LE) - * OCF = 0x0014 - */ -void -ble_hs_hci_cmd_build_le_set_host_chan_class(const uint8_t *chan_map, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_HOST_CHAN_CLASS_LEN); - - memcpy(dst, chan_map, BLE_HCI_SET_HOST_CHAN_CLASS_LEN); -} - -/** - * LE Read Channel Map - * - * OGF = 0x08 (LE) - * OCF = 0x0015 - */ -void -ble_hs_hci_cmd_build_le_read_chan_map(uint16_t conn_handle, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_RD_CHANMAP_LEN); - - put_le16(dst + 0, conn_handle); -} - -static int -ble_hs_hci_cmd_body_set_data_len(uint16_t connection_handle, - uint16_t tx_octets, - uint16_t tx_time, uint8_t *dst) -{ - - if (tx_octets < BLE_HCI_SET_DATALEN_TX_OCTETS_MIN || - tx_octets > BLE_HCI_SET_DATALEN_TX_OCTETS_MAX) { - - return BLE_HS_EINVAL; - } - - if (tx_time < BLE_HCI_SET_DATALEN_TX_TIME_MIN || - tx_time > BLE_HCI_SET_DATALEN_TX_TIME_MAX) { - - return BLE_HS_EINVAL; - } - - put_le16(dst + 0, connection_handle); - put_le16(dst + 2, tx_octets); - put_le16(dst + 4, tx_time); - - return 0; -} - -/* - * OGF=0x08 OCF=0x0022 - */ -int -ble_hs_hci_cmd_build_set_data_len(uint16_t connection_handle, - uint16_t tx_octets, uint16_t tx_time, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_DATALEN_LEN); - - return ble_hs_hci_cmd_body_set_data_len(connection_handle, tx_octets, - tx_time, dst); -} - -/** - * IRKs are in little endian. - */ -static int -ble_hs_hci_cmd_body_add_to_resolv_list(uint8_t addr_type, const uint8_t *addr, - const uint8_t *peer_irk, - const uint8_t *local_irk, - uint8_t *dst) -{ - if (addr_type > BLE_ADDR_RANDOM) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = addr_type; - memcpy(dst + 1, addr, BLE_DEV_ADDR_LEN); - memcpy(dst + 1 + 6, peer_irk , 16); - memcpy(dst + 1 + 6 + 16, local_irk , 16); - /* 16 + 16 + 6 + 1 == 39 */ - return 0; -} - -/** - * OGF=0x08 OCF=0x0027 - * - * IRKs are in little endian. - */ -int -ble_hs_hci_cmd_build_add_to_resolv_list( - const struct hci_add_dev_to_resolving_list *padd, - uint8_t *dst, - int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_ADD_TO_RESOLV_LIST_LEN); - - return ble_hs_hci_cmd_body_add_to_resolv_list( - padd->addr_type, padd->addr, padd->peer_irk, padd->local_irk, dst); -} - -static int -ble_hs_hci_cmd_body_remove_from_resolv_list(uint8_t addr_type, - const uint8_t *addr, - uint8_t *dst) -{ - if (addr_type > BLE_ADDR_RANDOM) { - addr_type = addr_type % 2; - } - - dst[0] = addr_type; - memcpy(dst + 1, addr, BLE_DEV_ADDR_LEN); - return 0; -} - - -int -ble_hs_hci_cmd_build_remove_from_resolv_list(uint8_t addr_type, - const uint8_t *addr, - uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_RMV_FROM_RESOLV_LIST_LEN); - - return ble_hs_hci_cmd_body_remove_from_resolv_list(addr_type, addr, dst); -} - -static int -ble_hs_hci_cmd_body_read_peer_resolv_addr(uint8_t peer_identity_addr_type, - const uint8_t *peer_identity_addr, - uint8_t *dst) -{ - if (peer_identity_addr_type > BLE_ADDR_RANDOM) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = peer_identity_addr_type; - memcpy(dst + 1, peer_identity_addr, BLE_DEV_ADDR_LEN); - return 0; -} - -int -ble_hs_hci_cmd_build_read_peer_resolv_addr(uint8_t peer_identity_addr_type, - const uint8_t *peer_identity_addr, - uint8_t *dst, - int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_RD_PEER_RESOLV_ADDR_LEN); - - return ble_hs_hci_cmd_body_read_peer_resolv_addr(peer_identity_addr_type, - peer_identity_addr, dst); -} - -static int -ble_hs_hci_cmd_body_read_lcl_resolv_addr( - uint8_t local_identity_addr_type, - const uint8_t *local_identity_addr, - uint8_t *dst) -{ - if (local_identity_addr_type > BLE_ADDR_RANDOM) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = local_identity_addr_type; - memcpy(dst + 1, local_identity_addr, BLE_DEV_ADDR_LEN); - return 0; -} - -/* - * OGF=0x08 OCF=0x002c - */ -int -ble_hs_hci_cmd_build_read_lcl_resolv_addr(uint8_t local_identity_addr_type, - const uint8_t *local_identity_addr, - uint8_t *dst, - int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_RD_LOC_RESOLV_ADDR_LEN); - - return ble_hs_hci_cmd_body_read_lcl_resolv_addr(local_identity_addr_type, - local_identity_addr, dst); -} - -static int -ble_hs_hci_cmd_body_set_addr_res_en(uint8_t enable, uint8_t *dst) -{ - if (enable > 1) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = enable; - return 0; -} - -/* - * OGF=0x08 OCF=0x002d - */ -int -ble_hs_hci_cmd_build_set_addr_res_en(uint8_t enable, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_ADDR_RESOL_ENA_LEN); - - return ble_hs_hci_cmd_body_set_addr_res_en(enable, dst); -} - -static int -ble_hs_hci_cmd_body_set_resolv_priv_addr_timeout(uint16_t timeout, - uint8_t *dst) -{ - if (timeout == 0 || timeout > 0xA1B8) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - put_le16(dst, timeout); - return 0; -} - -/* - * OGF=0x08 OCF=0x002e - */ -int -ble_hs_hci_cmd_build_set_resolv_priv_addr_timeout( - uint16_t timeout, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_RESOLV_PRIV_ADDR_TO_LEN); - - return ble_hs_hci_cmd_body_set_resolv_priv_addr_timeout(timeout, dst); -} - -/* - * OGF=0x08 OCF=0x0030 - */ -int -ble_hs_hci_cmd_build_le_read_phy(uint16_t conn_handle, uint8_t *dst, int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_RD_PHY_LEN); - - put_le16(dst, conn_handle); - - return 0; -} - -static int -ble_hs_hci_verify_le_phy_params(uint8_t tx_phys_mask, uint8_t rx_phys_mask, - uint16_t phy_opts) -{ - if (tx_phys_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | - BLE_HCI_LE_PHY_2M_PREF_MASK | - BLE_HCI_LE_PHY_CODED_PREF_MASK)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - if (rx_phys_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | - BLE_HCI_LE_PHY_2M_PREF_MASK | - BLE_HCI_LE_PHY_CODED_PREF_MASK)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - if (phy_opts > BLE_HCI_LE_PHY_CODED_S8_PREF) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - return 0; -} - -static int -ble_hs_hci_cmd_body_le_set_default_phy(uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint8_t *dst) -{ - int rc; - - rc = ble_hs_hci_verify_le_phy_params(tx_phys_mask, rx_phys_mask, 0); - if (rc !=0 ) { - return rc; - } - - if (tx_phys_mask == 0) { - dst[0] |= BLE_HCI_LE_PHY_NO_TX_PREF_MASK; - } else { - dst[1] = tx_phys_mask; - } - - if (rx_phys_mask == 0){ - dst[0] |= BLE_HCI_LE_PHY_NO_RX_PREF_MASK; - } else { - dst[2] = rx_phys_mask; - } - - return 0; -} - -/* - * OGF=0x08 OCF=0x0031 - */ -int -ble_hs_hci_cmd_build_le_set_default_phy(uint8_t tx_phys_mask, uint8_t rx_phys_mask, - uint8_t *dst, int dst_len) -{ - - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_SET_DEFAULT_PHY_LEN); - - memset(dst, 0, dst_len); - - return ble_hs_hci_cmd_body_le_set_default_phy(tx_phys_mask, rx_phys_mask, - dst); -} - -static int -ble_hs_hci_cmd_body_le_set_phy(uint16_t conn_handle, uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint16_t phy_opts, - uint8_t *dst) -{ - int rc; - - rc = ble_hs_hci_verify_le_phy_params(tx_phys_mask, rx_phys_mask, phy_opts); - if (rc != 0) { - return rc; - } - - put_le16(dst, conn_handle); - - if (tx_phys_mask == 0) { - dst[2] |= BLE_HCI_LE_PHY_NO_TX_PREF_MASK; - } else { - dst[3] = tx_phys_mask; - } - - if (rx_phys_mask == 0){ - dst[2] |= BLE_HCI_LE_PHY_NO_RX_PREF_MASK; - } else { - dst[4] = rx_phys_mask; - } - - put_le16(dst + 5, phy_opts); - - return 0; -} - -/* - * OGF=0x08 OCF=0x0032 - */ -int -ble_hs_hci_cmd_build_le_set_phy(uint16_t conn_handle, uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint16_t phy_opts, - uint8_t *dst, int dst_len) -{ - - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_SET_PHY_LEN); - - memset(dst, 0, dst_len); - - return ble_hs_hci_cmd_body_le_set_phy(conn_handle, tx_phys_mask, - rx_phys_mask, phy_opts, dst); -} - -static int -ble_hs_hci_cmd_body_le_enhanced_recv_test(uint8_t chan, uint8_t phy, - uint8_t mod_idx, uint8_t *dst) -{ - /* Parameters check according to Bluetooth 5.0 Vol 2, Part E - * 7.8.50 LE Enhanced Receiver Test Command - */ - if (phy > BLE_HCI_LE_PHY_CODED || chan > 0x27 || mod_idx > 1) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = chan; - dst[1] = phy; - dst[2] = mod_idx; - - return 0; -} - -/* - * OGF=0x08 OCF=0x0033 - */ -int -ble_hs_hci_cmd_build_le_enh_recv_test(uint8_t rx_chan, uint8_t phy, - uint8_t mod_idx, - uint8_t *dst, uint16_t dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_ENH_RX_TEST_LEN); - - return ble_hs_hci_cmd_body_le_enhanced_recv_test(rx_chan, phy, mod_idx, dst); -} - -static int -ble_hs_hci_cmd_body_le_enhanced_trans_test(uint8_t chan, uint8_t test_data_len, - uint8_t packet_payload_idx, - uint8_t phy, - uint8_t *dst) -{ - /* Parameters check according to Bluetooth 5.0 Vol 2, Part E - * 7.8.51 LE Enhanced Transmitter Test Command - */ - if (phy > BLE_HCI_LE_PHY_CODED_S2 || chan > 0x27 || - packet_payload_idx > 0x07) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = chan; - dst[1] = test_data_len; - dst[2] = packet_payload_idx; - dst[3] = phy; - - return 0; -} - -/* - * OGF=0x08 OCF=0x0034 - */ -int -ble_hs_hci_cmd_build_le_enh_trans_test(uint8_t tx_chan, uint8_t test_data_len, - uint8_t packet_payload_idx, uint8_t phy, - uint8_t *dst, uint16_t dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_ENH_TX_TEST_LEN); - - return ble_hs_hci_cmd_body_le_enhanced_trans_test(tx_chan, test_data_len, - packet_payload_idx, - phy, dst); -} - -#if MYNEWT_VAL(BLE_EXT_ADV) -static int -ble_hs_hci_check_scan_params(uint16_t scan_itvl, uint16_t scan_window) -{ - /* Check interval and window */ - if ((scan_itvl < BLE_HCI_SCAN_ITVL_MIN) || - (scan_itvl > BLE_HCI_SCAN_ITVL_MAX) || - (scan_window < BLE_HCI_SCAN_WINDOW_MIN) || - (scan_window > BLE_HCI_SCAN_WINDOW_MAX) || - (scan_itvl < scan_window)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - return 0; -} - -static int -ble_hs_hci_cmd_body_le_set_ext_scan_param(uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t phy_mask, - uint8_t phy_count, - struct ble_hs_hci_ext_scan_param *params[], - uint8_t *dst) -{ - int i; - int rc; - uint8_t *dst_params; - struct ble_hs_hci_ext_scan_param *p; - - if (phy_mask > - (BLE_HCI_LE_PHY_1M_PREF_MASK | BLE_HCI_LE_PHY_CODED_PREF_MASK)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check own addr type */ - if (own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check scanner filter policy */ - if (filter_policy > BLE_HCI_SCAN_FILT_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = own_addr_type; - dst[1] = filter_policy; - dst[2] = phy_mask; - dst_params = &dst[3]; - - for (i = 0; i < phy_count; i++) { - p = (*params) + i; - rc = ble_hs_hci_check_scan_params(p->scan_itvl, p->scan_window); - if (rc) { - return rc; - } - - dst_params[0] = p->scan_type; - put_le16(dst_params + 1, p->scan_itvl); - put_le16(dst_params + 3, p->scan_window); - - dst_params += BLE_HCI_LE_EXT_SCAN_SINGLE_PARAM_LEN; - } - - return 0; -} - -/* - * OGF=0x08 OCF=0x0041 - */ -int -ble_hs_hci_cmd_build_le_set_ext_scan_params(uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t phy_mask, - uint8_t phy_count, - struct ble_hs_hci_ext_scan_param *params[], - uint8_t *dst, uint16_t dst_len) -{ - if (phy_count == 0) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_EXT_SCAN_BASE_LEN + - BLE_HCI_LE_EXT_SCAN_SINGLE_PARAM_LEN * phy_count); - - return ble_hs_hci_cmd_body_le_set_ext_scan_param(own_addr_type, - filter_policy, - phy_mask, - phy_count, - params, - dst); -} - -static int -ble_hs_hci_cmd_body_le_set_ext_scan_enable(uint8_t enable, uint8_t filter_dups, - uint16_t duration, uint16_t period, - uint8_t *dst) -{ - if (enable > 0x01 || filter_dups > 0x03) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = enable; - dst[1] = filter_dups; - put_le16(dst + 2, duration); - put_le16(dst + 4, period); - - return 0; -} - -/* - * OGF=0x08 OCF=0x0042 - */ -int -ble_hs_hci_cmd_build_le_set_ext_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint16_t duration, - uint16_t period, - uint8_t *dst, uint16_t dst_len) -{ - - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_SET_EXT_SCAN_ENABLE_LEN); - - return ble_hs_hci_cmd_body_le_set_ext_scan_enable(enable, filter_dups, - duration, period, dst); -} - -static int -ble_hs_hci_check_conn_params(uint8_t phy, - const struct hci_ext_conn_params *params) -{ - if (phy != BLE_HCI_LE_PHY_2M) { - if (ble_hs_hci_check_scan_params(params->scan_itvl, params->scan_window)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - } - /* Check connection interval min */ - if ((params->conn_itvl_min < BLE_HCI_CONN_ITVL_MIN) || - (params->conn_itvl_min > BLE_HCI_CONN_ITVL_MAX)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - /* Check connection interval max */ - if ((params->conn_itvl_max < BLE_HCI_CONN_ITVL_MIN) || - (params->conn_itvl_max > BLE_HCI_CONN_ITVL_MAX) || - (params->conn_itvl_max < params->conn_itvl_min)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check connection latency */ - if ( -#if BLE_HCI_CONN_LATENCY_MIN - (params->conn_latency < BLE_HCI_CONN_LATENCY_MIN) || -#endif - (params->conn_latency > BLE_HCI_CONN_LATENCY_MAX)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check supervision timeout */ - if ((params->supervision_timeout < BLE_HCI_CONN_SPVN_TIMEOUT_MIN) || - (params->supervision_timeout > BLE_HCI_CONN_SPVN_TIMEOUT_MAX)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - /* Check connection event length */ - if (params->min_ce_len > params->max_ce_len) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - return 0; -} - -static int -ble_hs_hci_cmd_body_le_ext_create_conn(const struct hci_ext_create_conn *hcc, - uint8_t *cmd) -{ - int iter = 0; - const struct hci_ext_conn_params *params; - - /* Check initiator filter policy */ - if (hcc->filter_policy > BLE_HCI_CONN_FILT_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - cmd[iter] = hcc->filter_policy; - iter++; - /* Check own addr type */ - if (hcc->own_addr_type > BLE_HCI_ADV_OWN_ADDR_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - cmd[iter] = hcc->own_addr_type; - iter++; - - /* Check peer addr type */ - if (hcc->peer_addr_type > BLE_HCI_CONN_PEER_ADDR_MAX) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - cmd[iter] = hcc->peer_addr_type; - iter++; - - memcpy(cmd + iter, hcc->peer_addr, BLE_DEV_ADDR_LEN); - iter += BLE_DEV_ADDR_LEN; - - if (hcc->init_phy_mask > (BLE_HCI_LE_PHY_1M_PREF_MASK | - BLE_HCI_LE_PHY_2M_PREF_MASK | - BLE_HCI_LE_PHY_CODED_PREF_MASK)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - cmd[iter] = hcc->init_phy_mask; - iter++; - - if (hcc->init_phy_mask & BLE_HCI_LE_PHY_1M_PREF_MASK) { - params = &hcc->params[0]; - if (ble_hs_hci_check_conn_params(BLE_HCI_LE_PHY_1M, params)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - put_le16(cmd + iter, params->scan_itvl); - put_le16(cmd + iter + 2, params->scan_window); - put_le16(cmd + iter + 4, params->conn_itvl_min); - put_le16(cmd + iter + 6, params->conn_itvl_max); - put_le16(cmd + iter + 8, params->conn_latency); - put_le16(cmd + iter + 10, params->supervision_timeout); - put_le16(cmd + iter + 12, params->min_ce_len); - put_le16(cmd + iter + 14, params->max_ce_len); - iter += 16; - } - - if (hcc->init_phy_mask & BLE_HCI_LE_PHY_2M_PREF_MASK) { - params = &hcc->params[1]; - if (ble_hs_hci_check_conn_params(BLE_HCI_LE_PHY_2M, params)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - put_le16(cmd + iter, 0); - put_le16(cmd + iter + 2, 0); - put_le16(cmd + iter + 4, params->conn_itvl_min); - put_le16(cmd + iter + 6, params->conn_itvl_max); - put_le16(cmd + iter + 8, params->conn_latency); - put_le16(cmd + iter + 10, params->supervision_timeout); - put_le16(cmd + iter + 12, params->min_ce_len); - put_le16(cmd + iter + 14, params->max_ce_len); - iter += 16; - } - - if (hcc->init_phy_mask & BLE_HCI_LE_PHY_CODED_PREF_MASK) { - params = &hcc->params[2]; - if (ble_hs_hci_check_conn_params(BLE_HCI_LE_PHY_CODED, params)) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - put_le16(cmd + iter, params->scan_itvl); - put_le16(cmd + iter + 2, params->scan_window); - put_le16(cmd + iter + 4, params->conn_itvl_min); - put_le16(cmd + iter + 6, params->conn_itvl_max); - put_le16(cmd + iter + 8, params->conn_latency); - put_le16(cmd + iter + 10, params->supervision_timeout); - put_le16(cmd + iter + 12, params->min_ce_len); - put_le16(cmd + iter + 14, params->max_ce_len); - iter += 16; - } - - return 0; -} - -int -ble_hs_hci_cmd_build_le_ext_create_conn(const struct hci_ext_create_conn *hcc, - uint8_t *cmd, int cmd_len) -{ - uint8_t size; - - size = BLE_HCI_LE_EXT_CREATE_CONN_BASE_LEN; - if (hcc->init_phy_mask & BLE_HCI_LE_PHY_1M_PREF_MASK) { - size += sizeof(struct hci_ext_conn_params); - } - - if (hcc->init_phy_mask & BLE_HCI_LE_PHY_2M_PREF_MASK) { - size += sizeof(struct hci_ext_conn_params); - } - - if (hcc->init_phy_mask & BLE_HCI_LE_PHY_CODED_PREF_MASK) { - size += sizeof(struct hci_ext_conn_params); - } - - BLE_HS_DBG_ASSERT(cmd_len >= size); - - return ble_hs_hci_cmd_body_le_ext_create_conn(hcc, cmd); -} - -int -ble_hs_hci_cmd_build_le_ext_adv_set_random_addr(uint8_t handle, - const uint8_t *addr, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_SET_ADV_SET_RND_ADDR_LEN); - - cmd[0] = handle; - memcpy(cmd + 1, addr, BLE_DEV_ADDR_LEN); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_ext_adv_data(uint8_t handle, uint8_t operation, - uint8_t frag_pref, struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= 4 + data_len); - - cmd[0] = handle; - cmd[1] = operation; - cmd[2] = frag_pref; - cmd[3] = data_len; - os_mbuf_copydata(data, 0, data_len, cmd + 4); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_ext_adv_enable(uint8_t enable, uint8_t sets_num, - const struct hci_ext_adv_set *sets, - uint8_t *cmd, int cmd_len) -{ - int i; - - BLE_HS_DBG_ASSERT(cmd_len >= 2 + (sets_num * 4)); - - cmd[0] = enable; - cmd[1] = sets_num; - - cmd += 2; - - for (i = 0; i < sets_num; i++) { - cmd[0] = sets[i].handle; - put_le16(&cmd[1], sets[i].duration); - cmd[3] = sets[i].events; - - cmd += 4; - } - - return 0; -} - -int -ble_hs_hci_cmd_build_le_ext_adv_params(uint8_t handle, - const struct hci_ext_adv_params *params, - uint8_t *cmd, int cmd_len) -{ - uint32_t tmp; - - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_SET_EXT_ADV_PARAM_LEN); - - cmd[0] = handle; - put_le16(&cmd[1], params->properties); - - tmp = htole32(params->min_interval); - memcpy(&cmd[3], &tmp, 3); - - tmp = htole32(params->max_interval); - memcpy(&cmd[6], &tmp, 3); - - cmd[9] = params->chan_map; - cmd[10] = params->own_addr_type; - cmd[11] = params->peer_addr_type; - memcpy(&cmd[12], params->peer_addr, BLE_DEV_ADDR_LEN); - cmd[18] = params->filter_policy; - cmd[19] = params->tx_power; - cmd[20] = params->primary_phy; - cmd[21] = params->max_skip; - cmd[22] = params->secondary_phy; - cmd[23] = params->sid; - cmd[24] = params->scan_req_notif; - - return 0; -} -int -ble_hs_hci_cmd_build_le_ext_adv_remove(uint8_t handle, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_REMOVE_ADV_SET_LEN); - - cmd[0] = handle; - - return 0; -} - -#if MYNEWT_VAL(BLE_PERIODIC_ADV) -int -ble_hs_hci_cmd_build_le_periodic_adv_params(uint8_t handle, - const struct hci_periodic_adv_params *params, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_SET_PERIODIC_ADV_PARAMS_LEN); - - if (handle > 0xEF){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - if (params->max_interval > 0xFFFF || params->max_interval < 6){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - if (params->min_interval > 0xFFFF || params->min_interval < 6){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - cmd[0] = handle; - - put_le16(&cmd[1], params->min_interval); - put_le16(&cmd[3], params->max_interval); - put_le16(&cmd[5], params->properties); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_periodic_adv_enable(uint8_t enable, - uint8_t handle, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_SET_PERIODIC_ADV_ENABLE_LEN); - - if (enable > 1){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - cmd[0] = enable; - cmd[1] = handle; - - return 0; -} - -int -ble_hs_hci_cmd_build_le_periodic_adv_data(uint8_t handle, - uint8_t operation, - struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= 3 + data_len); - - if (!data){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - if (!data->om_data){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - if (handle > 0xEF){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - cmd[0] = handle; - cmd[1] = operation; - cmd[2] = data_len; - os_mbuf_copydata(data, 0, data_len, cmd + 3); - - return 0; -} - -int -ble_hs_hci_cmd_build_le_periodic_adv_create_sync(uint8_t filter_policy, - uint8_t adv_sid, - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint16_t skip, - uint16_t sync_timeout, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_PERIODIC_ADV_CREATE_SYNC_LEN); - - if (filter_policy > 1 || adv_add_type > 1){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - if (adv_sid > 0x0f){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - if (skip > 0x1f3 || sync_timeout > 0x4000 || sync_timeout < 0x0A){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - cmd[0] = filter_policy; - cmd[1] = adv_sid; - cmd[2] = adv_add_type; - memcpy(&cmd[3], adv_addr, 6); - put_le16(&cmd[9], skip); - put_le16(&cmd[11], sync_timeout); - cmd[13] = 0x00; - return 0; -} - -int -ble_hs_hci_cmd_build_le_periodic_adv_terminate_sync(uint16_t sync_handle, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_PERIODIC_ADV_TERM_SYNC_LEN); - - if (sync_handle > 0xEF){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - cmd[0] = sync_handle; - - return 0; -} - -int -ble_hs_hci_cmd_build_le_add_dev_to_periodic_adv_list( - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_ADD_DEV_TO_PERIODIC_ADV_LIST_LEN); - - if (adv_add_type > 1 || adv_sid > 0x0f){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - cmd[0] = adv_add_type; - memcpy(&cmd[1], adv_addr, 6); - cmd[7] = adv_sid; - - return 0; -} - -int -ble_hs_hci_cmd_build_le_rem_dev_from_periodic_adv_list( - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len) -{ - BLE_HS_DBG_ASSERT(cmd_len >= BLE_HCI_LE_REM_DEV_FROM_PERIODIC_ADV_LIST_LEN); - - if (adv_add_type > 1 || adv_sid > 0x0f){ - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - cmd[0] = adv_add_type; - memcpy(&cmd[1], adv_addr, 6); - cmd[7] = adv_sid; - - return 0; -} -#endif - -#endif - -static int -ble_hs_hci_cmd_body_le_set_priv_mode(const uint8_t *addr, uint8_t addr_type, - uint8_t priv_mode, uint8_t *dst) -{ - /* In this command addr type can be either: - * - public identity (0x00) - * - random (static) identity (0x01) - */ - if (addr_type > BLE_ADDR_RANDOM) { - return BLE_ERR_INV_HCI_CMD_PARMS; - } - - dst[0] = addr_type; - memcpy(dst + 1, addr, BLE_DEV_ADDR_LEN); - dst[7] = priv_mode; - - return 0; -} - -/* - * OGF=0x08 OCF=0x004e - */ -int -ble_hs_hci_cmd_build_le_set_priv_mode(const uint8_t *addr, uint8_t addr_type, - uint8_t priv_mode, uint8_t *dst, - uint16_t dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_LE_SET_PRIVACY_MODE_LEN); - - return ble_hs_hci_cmd_body_le_set_priv_mode(addr, addr_type, priv_mode, dst); -} - -static int -ble_hs_hci_cmd_body_set_random_addr(const struct hci_rand_addr *paddr, - uint8_t *dst) -{ - memcpy(dst, paddr->addr, BLE_DEV_ADDR_LEN); - return 0; -} - -int -ble_hs_hci_cmd_build_set_random_addr(const uint8_t *addr, - uint8_t *dst, int dst_len) -{ - struct hci_rand_addr r_addr; - - memcpy(r_addr.addr, addr, sizeof(r_addr.addr)); - - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_SET_RAND_ADDR_LEN); - - return ble_hs_hci_cmd_body_set_random_addr(&r_addr, dst); -} - -static void -ble_hs_hci_cmd_body_le_read_remote_feat(uint16_t handle, uint8_t *dst) -{ - put_le16(dst, handle); -} - -int -ble_hs_hci_cmd_build_le_read_remote_feat(uint16_t handle, uint8_t *dst, - int dst_len) -{ - BLE_HS_DBG_ASSERT(dst_len >= BLE_HCI_CONN_RD_REM_FEAT_LEN); - - ble_hs_hci_cmd_body_le_read_remote_feat(handle, dst); - - return 0; -} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_evt.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_evt.c index 30dc92f28..4a6b0716e 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_evt.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_evt.c @@ -26,13 +26,24 @@ #include "host/ble_gap.h" #include "host/ble_monitor.h" #include "ble_hs_priv.h" -#include "ble_hs_dbg_priv.h" #include "ble_hs_resolv_priv.h" +#if CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT +static uint16_t reattempt_conn[MYNEWT_VAL(BLE_MAX_CONNECTIONS)]; +extern int ble_gap_master_connect_reattempt(uint16_t conn_handle); + +#ifdef CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT +#define MAX_REATTEMPT_ALLOWED CONFIG_BT_NIMBLE_MAX_CONN_REATTEMPT +#else +#define MAX_REATTEMPT_ALLOWED 0 +#endif +#endif + _Static_assert(sizeof (struct hci_data_hdr) == BLE_HCI_DATA_HDR_SZ, "struct hci_data_hdr must be 4 bytes"); -typedef int ble_hs_hci_evt_fn(uint8_t event_code, uint8_t *data, int len); +typedef int ble_hs_hci_evt_fn(uint8_t event_code, const void *data, + unsigned int len); static ble_hs_hci_evt_fn ble_hs_hci_evt_disconn_complete; static ble_hs_hci_evt_fn ble_hs_hci_evt_encrypt_change; static ble_hs_hci_evt_fn ble_hs_hci_evt_hw_error; @@ -40,7 +51,8 @@ static ble_hs_hci_evt_fn ble_hs_hci_evt_num_completed_pkts; static ble_hs_hci_evt_fn ble_hs_hci_evt_enc_key_refresh; static ble_hs_hci_evt_fn ble_hs_hci_evt_le_meta; -typedef int ble_hs_hci_evt_le_fn(uint8_t subevent, uint8_t *data, int len); +typedef int ble_hs_hci_evt_le_fn(uint8_t subevent, const void *data, + unsigned int len); static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_conn_complete; static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_adv_rpt; static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_conn_upd_complete; @@ -56,6 +68,9 @@ static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_periodic_adv_sync_estab; static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_periodic_adv_rpt; static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_periodic_adv_sync_lost; static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_scan_req_rcvd; +static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_enh_conn_complete; +static ble_hs_hci_evt_le_fn ble_hs_hci_evt_le_periodic_adv_sync_transfer; + /* Statistics */ struct host_hci_stats { @@ -91,7 +106,7 @@ static ble_hs_hci_evt_le_fn * const ble_hs_hci_evt_le_dispatch[] = { [BLE_HCI_LE_SUBEV_CONN_UPD_COMPLETE] = ble_hs_hci_evt_le_conn_upd_complete, [BLE_HCI_LE_SUBEV_LT_KEY_REQ] = ble_hs_hci_evt_le_lt_key_req, [BLE_HCI_LE_SUBEV_REM_CONN_PARM_REQ] = ble_hs_hci_evt_le_conn_parm_req, - [BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE] = ble_hs_hci_evt_le_conn_complete, + [BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE] = ble_hs_hci_evt_le_enh_conn_complete, [BLE_HCI_LE_SUBEV_DIRECT_ADV_RPT] = ble_hs_hci_evt_le_dir_adv_rpt, [BLE_HCI_LE_SUBEV_PHY_UPDATE_COMPLETE] = ble_hs_hci_evt_le_phy_update_complete, [BLE_HCI_LE_SUBEV_EXT_ADV_RPT] = ble_hs_hci_evt_le_ext_adv_rpt, @@ -102,6 +117,7 @@ static ble_hs_hci_evt_le_fn * const ble_hs_hci_evt_le_dispatch[] = { [BLE_HCI_LE_SUBEV_SCAN_TIMEOUT] = ble_hs_hci_evt_le_scan_timeout, [BLE_HCI_LE_SUBEV_ADV_SET_TERMINATED] = ble_hs_hci_evt_le_adv_set_terminated, [BLE_HCI_LE_SUBEV_SCAN_REQ_RCVD] = ble_hs_hci_evt_le_scan_req_rcvd, + [BLE_HCI_LE_SUBEV_PERIODIC_ADV_SYNC_TRANSFER] = ble_hs_hci_evt_le_periodic_adv_sync_transfer, }; #define BLE_HS_HCI_EVT_LE_DISPATCH_SZ \ @@ -134,27 +150,50 @@ ble_hs_hci_evt_le_dispatch_find(uint8_t event_code) } static int -ble_hs_hci_evt_disconn_complete(uint8_t event_code, uint8_t *data, int len) +ble_hs_hci_evt_disconn_complete(uint8_t event_code, const void *data, + unsigned int len) { - struct hci_disconn_complete evt; + const struct ble_hci_ev_disconn_cmp *ev = data; const struct ble_hs_conn *conn; - if (len < BLE_HCI_EVENT_DISCONN_COMPLETE_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.status = data[2]; - evt.connection_handle = get_le16(data + 3); - evt.reason = data[5]; - ble_hs_lock(); - conn = ble_hs_conn_find(evt.connection_handle); + conn = ble_hs_conn_find(le16toh(ev->conn_handle)); if (conn != NULL) { ble_hs_hci_add_avail_pkts(conn->bhc_outstanding_pkts); } ble_hs_unlock(); - ble_gap_rx_disconn_complete(&evt); +#if CONFIG_BT_NIMBLE_ENABLE_CONN_REATTEMPT + int rc; + + if (ev->reason == BLE_ERR_CONN_ESTABLISHMENT && (conn != NULL)) { + BLE_HS_LOG(DEBUG, "Reattempt connection; reason = 0x%x, status = %d," + " reattempt count = %d ", ev->reason, ev->status, + reattempt_conn[ev->conn_handle]); + if (conn->bhc_flags & BLE_HS_CONN_F_MASTER) { + if (reattempt_conn[ev->conn_handle] < MAX_REATTEMPT_ALLOWED) { + reattempt_conn[ev->conn_handle] += 1; + rc = ble_gap_master_connect_reattempt(ev->conn_handle); + if (rc != 0) { + BLE_HS_LOG(DEBUG, "Master reconnect attempt failed; rc = %d", rc); + } + } else { + reattempt_conn[ev->conn_handle] = 0; + } + } + } else { + /* Disconnect completed with some other reason than + * BLE_ERR_CONN_ESTABLISHMENT, reset the corresponding reattempt count + * */ + reattempt_conn[ev->conn_handle] = 0; + } +#endif + + ble_gap_rx_disconn_complete(ev); /* The connection termination may have freed up some capacity in the * controller for additional ACL data packets. Wake up any stalled @@ -166,86 +205,68 @@ ble_hs_hci_evt_disconn_complete(uint8_t event_code, uint8_t *data, int len) } static int -ble_hs_hci_evt_encrypt_change(uint8_t event_code, uint8_t *data, int len) +ble_hs_hci_evt_encrypt_change(uint8_t event_code, const void *data, + unsigned int len) { - struct hci_encrypt_change evt; + const struct ble_hci_ev_enrypt_chg *ev = data; - if (len < BLE_HCI_EVENT_ENCRYPT_CHG_LEN) { + if (len != sizeof (*ev)) { return BLE_HS_ECONTROLLER; } - evt.status = data[2]; - evt.connection_handle = get_le16(data + 3); - evt.encryption_enabled = data[5]; - - ble_sm_enc_change_rx(&evt); + ble_sm_enc_change_rx(ev); return 0; } static int -ble_hs_hci_evt_hw_error(uint8_t event_code, uint8_t *data, int len) +ble_hs_hci_evt_hw_error(uint8_t event_code, const void *data, unsigned int len) { - uint8_t hw_code; + const struct ble_hci_ev_hw_error *ev = data; - if (len < BLE_HCI_EVENT_HW_ERROR_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - hw_code = data[0]; - ble_hs_hw_error(hw_code); + ble_hs_hw_error(ev->hw_code); return 0; } static int -ble_hs_hci_evt_enc_key_refresh(uint8_t event_code, uint8_t *data, int len) +ble_hs_hci_evt_enc_key_refresh(uint8_t event_code, const void *data, + unsigned int len) { - struct hci_encrypt_key_refresh evt; + const struct ble_hci_ev_enc_key_refresh *ev = data; - if (len < BLE_HCI_EVENT_ENC_KEY_REFRESH_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.status = data[2]; - evt.connection_handle = get_le16(data + 3); - - ble_sm_enc_key_refresh_rx(&evt); + ble_sm_enc_key_refresh_rx(ev); return 0; } static int -ble_hs_hci_evt_num_completed_pkts(uint8_t event_code, uint8_t *data, - int len) +ble_hs_hci_evt_num_completed_pkts(uint8_t event_code, const void *data, + unsigned int len) { + const struct ble_hci_ev_num_comp_pkts *ev = data; struct ble_hs_conn *conn; uint16_t num_pkts; - uint16_t handle; - uint8_t num_handles; - int off; int i; - if (len < BLE_HCI_EVENT_HDR_LEN + BLE_HCI_EVENT_NUM_COMP_PKTS_HDR_LEN) { + if (len != sizeof(*ev) + (ev->count * sizeof(ev->completed[0]))) { return BLE_HS_ECONTROLLER; } - off = BLE_HCI_EVENT_HDR_LEN; - num_handles = data[off]; - if (len < BLE_HCI_EVENT_NUM_COMP_PKTS_HDR_LEN + - num_handles * BLE_HCI_EVENT_NUM_COMP_PKTS_ENT_LEN) { - return BLE_HS_ECONTROLLER; - } - off++; - - for (i = 0; i < num_handles; i++) { - handle = get_le16(data + off); - num_pkts = get_le16(data + off + 2); - off += (2 * sizeof(uint16_t)); + for (i = 0; i < ev->count; i++) { + num_pkts = le16toh(ev->completed[i].packets); if (num_pkts > 0) { ble_hs_lock(); - conn = ble_hs_conn_find(handle); + conn = ble_hs_conn_find(le16toh(ev->completed[i].handle)); if (conn != NULL) { if (conn->bhc_outstanding_pkts < num_pkts) { ble_hs_sched_reset(BLE_HS_ECONTROLLER); @@ -266,87 +287,121 @@ ble_hs_hci_evt_num_completed_pkts(uint8_t event_code, uint8_t *data, } static int -ble_hs_hci_evt_le_meta(uint8_t event_code, uint8_t *data, int len) +ble_hs_hci_evt_le_meta(uint8_t event_code, const void *data, unsigned int len) { + const struct ble_hci_ev_le_meta *ev = data; ble_hs_hci_evt_le_fn *fn; - uint8_t subevent; - int rc; - if (len < BLE_HCI_EVENT_HDR_LEN + BLE_HCI_LE_MIN_LEN) { + if (len < sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - subevent = data[2]; - fn = ble_hs_hci_evt_le_dispatch_find(subevent); + fn = ble_hs_hci_evt_le_dispatch_find(ev->subevent); if (fn) { - rc = fn(subevent, data + BLE_HCI_EVENT_HDR_LEN, - len - BLE_HCI_EVENT_HDR_LEN); - if (rc != 0) { - return rc; - } + return fn(ev->subevent, data, len); } return 0; } #if MYNEWT_VAL(BLE_EXT_ADV) -static struct hci_le_conn_complete pend_conn_complete; +static struct ble_gap_conn_complete pend_conn_complete; #endif static int -ble_hs_hci_evt_le_conn_complete(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_enh_conn_complete(uint8_t subevent, const void *data, + unsigned int len) { - struct hci_le_conn_complete evt; - int extended_offset = 0; + const struct ble_hci_ev_le_subev_enh_conn_complete *ev = data; + struct ble_gap_conn_complete evt; - if (len < BLE_HCI_LE_CONN_COMPLETE_LEN) { - return BLE_HS_ECONTROLLER; - } - - /* this code processes two different events that are really similar */ - if ((subevent == BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE) && - ( len < BLE_HCI_LE_ENH_CONN_COMPLETE_LEN)) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } memset(&evt, 0, sizeof(evt)); - evt.subevent_code = data[0]; - evt.status = data[1]; + evt.status = ev->status; if (evt.status == BLE_ERR_SUCCESS) { - evt.connection_handle = get_le16(data + 2); - evt.role = data[4]; - evt.peer_addr_type = data[5]; - memcpy(evt.peer_addr, data + 6, BLE_DEV_ADDR_LEN); + evt.connection_handle = le16toh(ev->conn_handle); + evt.role = ev->role; + evt.peer_addr_type = ev->peer_addr_type; + memcpy(evt.peer_addr, ev->peer_addr, BLE_DEV_ADDR_LEN); + memcpy(evt.local_rpa, ev->local_rpa, BLE_DEV_ADDR_LEN); + memcpy(evt.peer_rpa,ev->peer_rpa, BLE_DEV_ADDR_LEN); - /* enhanced connection event has the same information with these - * extra fields stuffed into the middle */ - if (subevent == BLE_HCI_LE_SUBEV_ENH_CONN_COMPLETE) { - memcpy(evt.local_rpa, data + 12, BLE_DEV_ADDR_LEN); - memcpy(evt.peer_rpa, data + 18, BLE_DEV_ADDR_LEN); - extended_offset = 12; #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) - /* RPA needs to be resolved here, as controller is not aware of the - * address is RPA in Host based RPA */ - if (ble_host_rpa_enabled()) { - uint8_t *local_id_rpa = ble_hs_get_rpa_local(); - memcpy(evt.local_rpa, local_id_rpa, 6); - } - - struct ble_hs_resolv_entry *rl = NULL; - ble_rpa_replace_peer_params_with_rl(evt.peer_addr, - &evt.peer_addr_type, &rl); -#endif - } else { - memset(evt.local_rpa, 0, BLE_DEV_ADDR_LEN); - memset(evt.peer_rpa, 0, BLE_DEV_ADDR_LEN); + /* RPA needs to be resolved here, as controller is not aware of the + * address is RPA in Host based RPA */ + if (ble_host_rpa_enabled()) { + uint8_t *local_id_rpa = ble_hs_get_rpa_local(); + memcpy(evt.local_rpa, local_id_rpa, BLE_DEV_ADDR_LEN); } - evt.conn_itvl = get_le16(data + 12 + extended_offset); - evt.conn_latency = get_le16(data + 14 + extended_offset); - evt.supervision_timeout = get_le16(data + 16 + extended_offset); - evt.master_clk_acc = data[18 + extended_offset]; + struct ble_hs_resolv_entry *rl = NULL; + ble_rpa_replace_peer_params_with_rl(evt.peer_addr, + &evt.peer_addr_type, &rl); +#endif + evt.conn_itvl = le16toh(ev->conn_itvl); + evt.conn_latency = le16toh(ev->conn_latency); + evt.supervision_timeout = le16toh(ev->supervision_timeout); + evt.master_clk_acc = ev->mca; + } else { +#if MYNEWT_VAL(BLE_HS_DEBUG) + evt.connection_handle = BLE_HS_CONN_HANDLE_NONE; +#endif + } + +#if MYNEWT_VAL(BLE_EXT_ADV) + if (evt.status == BLE_ERR_DIR_ADV_TMO || + evt.role == BLE_HCI_LE_CONN_COMPLETE_ROLE_SLAVE) { + /* store this until we get set terminated event with adv handle */ + memcpy(&pend_conn_complete, &evt, sizeof(evt)); + return 0; + } +#endif + return ble_gap_rx_conn_complete(&evt, 0); + +} + +static int +ble_hs_hci_evt_le_conn_complete(uint8_t subevent, const void *data, + unsigned int len) +{ + const struct ble_hci_ev_le_subev_conn_complete *ev = data; + struct ble_gap_conn_complete evt; + + if (len != sizeof(*ev)) { + return BLE_HS_ECONTROLLER; + } + + memset(&evt, 0, sizeof(evt)); + + evt.status = ev->status; + + if (evt.status == BLE_ERR_SUCCESS) { + evt.connection_handle = le16toh(ev->conn_handle); + evt.role = ev->role; + evt.peer_addr_type = ev->peer_addr_type; + memcpy(evt.peer_addr, ev->peer_addr, BLE_DEV_ADDR_LEN); + +#if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) + /* RPA needs to be resolved here, as controller is not aware of the + * address is RPA in Host based RPA */ + if (ble_host_rpa_enabled()) { + uint8_t *local_id_rpa = ble_hs_get_rpa_local(); + memcpy(evt.local_rpa, local_id_rpa, BLE_DEV_ADDR_LEN); + } + + struct ble_hs_resolv_entry *rl = NULL; + ble_rpa_replace_peer_params_with_rl(evt.peer_addr, + &evt.peer_addr_type, &rl); +#endif + evt.conn_itvl = le16toh(ev->conn_itvl); + evt.conn_latency = le16toh(ev->conn_latency); + evt.supervision_timeout = le16toh(ev->supervision_timeout); + evt.master_clk_acc = ev->mca; } else { #if MYNEWT_VAL(BLE_HS_DEBUG) evt.connection_handle = BLE_HS_CONN_HANDLE_NONE; @@ -365,51 +420,58 @@ ble_hs_hci_evt_le_conn_complete(uint8_t subevent, uint8_t *data, int len) } static int -ble_hs_hci_evt_le_adv_rpt_first_pass(uint8_t *data, int len) +ble_hs_hci_evt_le_adv_rpt_first_pass(const void *data, unsigned int len) { - uint8_t num_reports; - int off; + const struct ble_hci_ev_le_subev_adv_rpt *ev = data; + const struct adv_report *rpt; int i; - if (len < BLE_HCI_LE_ADV_RPT_MIN_LEN) { + if (len < sizeof(*ev)) { return BLE_HS_ECONTROLLER; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpointer-arith" + len -= sizeof(*ev); + data += sizeof(*ev); - num_reports = data[1]; - if (num_reports < BLE_HCI_LE_ADV_RPT_NUM_RPTS_MIN || - num_reports > BLE_HCI_LE_ADV_RPT_NUM_RPTS_MAX) { + if (ev->num_reports < BLE_HCI_LE_ADV_RPT_NUM_RPTS_MIN || + ev->num_reports > BLE_HCI_LE_ADV_RPT_NUM_RPTS_MAX) { return BLE_HS_EBADDATA; } - off = 2; /* Subevent code and num reports. */ - for (i = 0; i < num_reports; i++) { - /* Move past event type (1), address type (1) and address (6) */ - off += 8; - - /* Add advertising data length (N), length (1) and rssi (1) */ - off += data[off]; - off += 2; - - /* Make sure we are not past length */ - if (off > len) { + for (i = 0; i < ev->num_reports; i++) { + /* extra byte for RSSI after adv data */ + if (len < sizeof(*rpt) + 1) { return BLE_HS_ECONTROLLER; } + + rpt = data; + + len -= sizeof(*rpt) + 1; + data += sizeof(rpt) + 1; + + if (rpt->data_len > len) { + return BLE_HS_ECONTROLLER; + } + + len -= rpt->data_len; + data += rpt->data_len; } /* Make sure length was correct */ - if (off != len) { + if (len) { return BLE_HS_ECONTROLLER; } - +#pragma GCC diagnostic pop return 0; } static int -ble_hs_hci_evt_le_adv_rpt(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_adv_rpt(uint8_t subevent, const void *data, unsigned int len) { + const struct ble_hci_ev_le_subev_adv_rpt *ev = data; struct ble_gap_disc_desc desc = {0}; - uint8_t num_reports; - int off; + const struct adv_report *rpt; int rc; int i; @@ -418,51 +480,38 @@ ble_hs_hci_evt_le_adv_rpt(uint8_t subevent, uint8_t *data, int len) if (rc != 0) { return rc; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpointer-arith" + data += sizeof(*ev); desc.direct_addr = *BLE_ADDR_ANY; - off = 2; /* skip sub-event and num reports */ - num_reports = data[1]; - for (i = 0; i < num_reports; i++) { - desc.event_type = data[off]; - ++off; + for (i = 0; i < ev->num_reports; i++) { + rpt = data; - desc.addr.type = data[off]; - ++off; + data += sizeof(rpt) + rpt->data_len + 1; - memcpy(desc.addr.val, data + off, 6); - off += 6; - - desc.length_data = data[off]; - ++off; - - desc.data = data + off; - off += desc.length_data; - - desc.rssi = data[off]; - ++off; + desc.event_type = rpt->type; + desc.addr.type = rpt->addr_type; + memcpy(desc.addr.val, rpt->addr, BLE_DEV_ADDR_LEN); + desc.length_data = rpt->data_len; + desc.data = rpt->data; + desc.rssi = rpt->data[rpt->data_len]; ble_gap_rx_adv_report(&desc); } - +#pragma GCC diagnostic pop return 0; } static int -ble_hs_hci_evt_le_dir_adv_rpt(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_dir_adv_rpt(uint8_t subevent, const void *data, unsigned int len) { + const struct ble_hci_ev_le_subev_direct_adv_rpt *ev = data; struct ble_gap_disc_desc desc = {0}; - uint8_t num_reports; - int suboff; - int off; int i; - if (len < BLE_HCI_LE_ADV_DIRECT_RPT_LEN) { - return BLE_HS_ECONTROLLER; - } - - num_reports = data[1]; - if (len != 2 + num_reports * BLE_HCI_LE_ADV_DIRECT_RPT_SUB_LEN) { + if (len < sizeof(*ev) || len != ev->num_reports * sizeof(ev->reports[0])) { return BLE_HS_ECONTROLLER; } @@ -470,32 +519,13 @@ ble_hs_hci_evt_le_dir_adv_rpt(uint8_t subevent, uint8_t *data, int len) desc.data = NULL; desc.length_data = 0; - for (i = 0; i < num_reports; i++) { - suboff = 0; - - off = 2 + suboff * num_reports + i; - desc.event_type = data[off]; - suboff++; - - off = 2 + suboff * num_reports + i; - desc.addr.type = data[off]; - suboff++; - - off = 2 + suboff * num_reports + i * 6; - memcpy(desc.addr.val, data + off, 6); - suboff += 6; - - off = 2 + suboff * num_reports + i; - desc.direct_addr.type = data[off]; - suboff++; - - off = 2 + suboff * num_reports + i * 6; - memcpy(desc.direct_addr.val, data + off, 6); - suboff += 6; - - off = 2 + suboff * num_reports + i; - desc.rssi = data[off]; - suboff++; + for (i = 0; i < ev->num_reports; i++) { + desc.event_type = ev->reports[i].type; + desc.addr.type = ev->reports[i].addr_type; + memcpy(desc.addr.val, ev->reports[i].addr, BLE_DEV_ADDR_LEN); + desc.direct_addr.type = ev->reports[i].dir_addr_type; + memcpy(desc.direct_addr.val, ev->reports[i].dir_addr, BLE_DEV_ADDR_LEN); + desc.rssi = ev->reports[i].rssi; ble_gap_rx_adv_report(&desc); } @@ -504,27 +534,21 @@ ble_hs_hci_evt_le_dir_adv_rpt(uint8_t subevent, uint8_t *data, int len) } static int -ble_hs_hci_evt_le_rd_rem_used_feat_complete(uint8_t subevent, - uint8_t *data, - int len) +ble_hs_hci_evt_le_rd_rem_used_feat_complete(uint8_t subevent, const void *data, + unsigned int len) { - struct hci_le_rd_rem_supp_feat_complete evt; + const struct ble_hci_ev_le_subev_rd_rem_used_feat *ev = data; - if (len < BLE_HCI_LE_RD_REM_USED_FEAT_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.status = data[1]; - evt.connection_handle = get_le16(data + 2); - memcpy(evt.features, data + 4, 8); - - ble_gap_rx_rd_rem_sup_feat_complete(&evt); + ble_gap_rx_rd_rem_sup_feat_complete(ev); return 0; } -#if MYNEWT_VAL(BLE_EXT_ADV) +#if MYNEWT_VAL(BLE_EXT_ADV) && NIMBLE_BLE_SCAN static int ble_hs_hci_decode_legacy_type(uint16_t evt_type) { @@ -546,47 +570,42 @@ ble_hs_hci_decode_legacy_type(uint16_t evt_type) #endif static int -ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, const void *data, + unsigned int len) { -#if MYNEWT_VAL(BLE_EXT_ADV) +#if MYNEWT_VAL(BLE_EXT_ADV) && NIMBLE_BLE_SCAN + const struct ble_hci_ev_le_subev_ext_adv_rpt *ev = data; + const struct ext_adv_report *report; struct ble_gap_ext_disc_desc desc; - struct hci_ext_adv_report *ext_adv; - struct hci_ext_adv_report_param *params; - int num_reports; int i; int legacy_event_type; - if (len < sizeof(*ext_adv)) { + if (len < sizeof(*ev)) { return BLE_HS_EBADDATA; } - ext_adv = (struct hci_ext_adv_report *) data; - num_reports = ext_adv->num_reports; - if (num_reports < BLE_HCI_LE_ADV_RPT_NUM_RPTS_MIN || - num_reports > BLE_HCI_LE_ADV_RPT_NUM_RPTS_MAX) { - + if (ev->num_reports < BLE_HCI_LE_ADV_RPT_NUM_RPTS_MIN || + ev->num_reports > BLE_HCI_LE_ADV_RPT_NUM_RPTS_MAX) { return BLE_HS_EBADDATA; } - if (len < (sizeof(*ext_adv) + ext_adv->num_reports * sizeof(*params))) { - return BLE_HS_ECONTROLLER; - } + /* TODO properly validate len of the event */ - params = &ext_adv->params[0]; - for (i = 0; i < num_reports; i++) { + report = &ev->reports[0]; + for (i = 0; i < ev->num_reports; i++) { memset(&desc, 0, sizeof(desc)); - desc.props = (params->evt_type) & 0x1F; + desc.props = (report->evt_type) & 0x1F; if (desc.props & BLE_HCI_ADV_LEGACY_MASK) { - legacy_event_type = ble_hs_hci_decode_legacy_type(params->evt_type); + legacy_event_type = ble_hs_hci_decode_legacy_type(report->evt_type); if (legacy_event_type < 0) { - params += 1; + report = (const void *) &report->data[report->data_len]; continue; } desc.legacy_event_type = legacy_event_type; desc.data_status = BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE; } else { - switch(params->evt_type & BLE_HCI_ADV_DATA_STATUS_MASK) { + switch(report->evt_type & BLE_HCI_ADV_DATA_STATUS_MASK) { case BLE_HCI_ADV_DATA_STATUS_COMPLETE: desc.data_status = BLE_GAP_EXT_ADV_DATA_STATUS_COMPLETE; break; @@ -600,296 +619,247 @@ ble_hs_hci_evt_le_ext_adv_rpt(uint8_t subevent, uint8_t *data, int len) assert(false); } } - desc.addr.type = params->addr_type; - memcpy(desc.addr.val, params->addr, 6); - desc.length_data = params->adv_data_len; - desc.data = params->adv_data; - desc.rssi = params->rssi; - desc.tx_power = params->tx_power; - memcpy(desc.direct_addr.val, params->dir_addr, 6); - desc.direct_addr.type = params->dir_addr_type; - desc.sid = params->sid; - desc.prim_phy = params->prim_phy; - desc.sec_phy = params->sec_phy; - desc.periodic_adv_itvl = params->per_adv_itvl; + desc.addr.type = report->addr_type; + memcpy(desc.addr.val, report->addr, 6); + desc.length_data = report->data_len; + desc.data = report->data; + desc.rssi = report->rssi; + desc.tx_power = report->tx_power; + memcpy(desc.direct_addr.val, report->dir_addr, 6); + desc.direct_addr.type = report->dir_addr_type; + desc.sid = report->sid; + desc.prim_phy = report->pri_phy; + desc.sec_phy = report->sec_phy; + desc.periodic_adv_itvl = report->periodic_itvl; + ble_gap_rx_ext_adv_report(&desc); - params += 1; + + report = (const void *) &report->data[report->data_len]; } #endif return 0; } static int -ble_hs_hci_evt_le_periodic_adv_sync_estab(uint8_t subevent, uint8_t *data, - int len) +ble_hs_hci_evt_le_periodic_adv_sync_estab(uint8_t subevent, const void *data, + unsigned int len) { #if MYNEWT_VAL(BLE_PERIODIC_ADV) - struct hci_le_subev_periodic_adv_sync_estab evt; + const struct ble_hci_ev_le_subev_periodic_adv_sync_estab *ev = data; - if (len < BLE_HCI_LE_PERIODIC_ADV_SYNC_ESTAB_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.status = data[1]; - evt.sync_handle = get_le16(data + 2); - evt.sid = data[4]; - evt.adv_addr_type = data[5]; - memcpy(evt.adv_addr, &data[6], 6); - evt.adv_phy = data[12]; - evt.per_adv_ival = get_le16(data + 13); - evt.adv_clk_accuracy = data[15]; - - ble_gap_rx_peroidic_adv_sync_estab(&evt); + ble_gap_rx_peroidic_adv_sync_estab(ev); #endif return 0; } static int -ble_hs_hci_evt_le_periodic_adv_rpt(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_periodic_adv_rpt(uint8_t subevent, const void *data, + unsigned int len) { #if MYNEWT_VAL(BLE_PERIODIC_ADV) - struct hci_le_subev_periodic_adv_rpt* evt; + const struct ble_hci_ev_le_subev_periodic_adv_rpt *ev = data; - if (len < BLE_HCI_LE_PERIODIC_ADV_RPT_LEN) { + if (len < sizeof(*ev) || len != (sizeof(*ev) + ev->data_len)) { return BLE_HS_EBADDATA; } - evt = (struct hci_le_subev_periodic_adv_rpt *)(data + 1); - ble_gap_rx_periodic_adv_rpt(evt); + ble_gap_rx_periodic_adv_rpt(ev); #endif return 0; } static int -ble_hs_hci_evt_le_periodic_adv_sync_lost(uint8_t subevent, uint8_t *data, - int len) +ble_hs_hci_evt_le_periodic_adv_sync_lost(uint8_t subevent, const void *data, + unsigned int len) { #if MYNEWT_VAL(BLE_PERIODIC_ADV) - struct hci_le_subev_periodic_adv_sync_lost evt; + const struct ble_hci_ev_le_subev_periodic_adv_sync_lost *ev = data; - if (len < BLE_HCI_LE_PERIODIC_ADV_SYNC_LOST_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_EBADDATA; } - evt.sync_handle = get_le16(data + 1); - - ble_gap_rx_periodic_adv_sync_lost(&evt); + ble_gap_rx_periodic_adv_sync_lost(ev); #endif return 0; } +static int +ble_hs_hci_evt_le_periodic_adv_sync_transfer(uint8_t subevent, const void *data, + unsigned int len) +{ +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) + const struct ble_hci_ev_le_subev_periodic_adv_sync_transfer *ev = data; + + if (len != sizeof(*ev)) { + return BLE_HS_EBADDATA; + } + + ble_gap_rx_periodic_adv_sync_transfer(ev); + +#endif + return 0; +} static int -ble_hs_hci_evt_le_scan_timeout(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_scan_timeout(uint8_t subevent, const void *data, + unsigned int len) { #if MYNEWT_VAL(BLE_EXT_ADV) && NIMBLE_BLE_SCAN - ble_gap_rx_le_scan_timeout(); + const struct ble_hci_ev_le_subev_scan_timeout *ev = data; + + if (len != sizeof(*ev)) { + return BLE_HS_EBADDATA; + } + + ble_gap_rx_le_scan_timeout(); #endif - return 0; + return 0; } static int -ble_hs_hci_evt_le_adv_set_terminated(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_adv_set_terminated(uint8_t subevent, const void *data, + unsigned int len) { #if MYNEWT_VAL(BLE_EXT_ADV) - struct hci_le_adv_set_terminated evt; + const struct ble_hci_ev_le_subev_adv_set_terminated *ev = data; - if (len < BLE_HCI_LE_SUBEV_ADV_SET_TERMINATED_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.status = data[1]; - evt.adv_handle = data[2]; - evt.conn_handle = get_le16(data + 3); - evt.completed_events = data[5]; - - if (evt.status == 0) { + if (ev->status == 0) { /* ignore return code as we need to terminate advertising set anyway */ - ble_gap_rx_conn_complete(&pend_conn_complete, evt.adv_handle); + ble_gap_rx_conn_complete(&pend_conn_complete, ev->adv_handle); } - ble_gap_rx_adv_set_terminated(&evt); + ble_gap_rx_adv_set_terminated(ev); #endif return 0; } static int -ble_hs_hci_evt_le_scan_req_rcvd(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_scan_req_rcvd(uint8_t subevent, const void *data, + unsigned int len) { #if MYNEWT_VAL(BLE_EXT_ADV) - struct hci_le_scan_req_rcvd evt; + const struct ble_hci_ev_le_subev_scan_req_rcvd *ev = data; - if (len != BLE_HCI_LE_SUBEV_SCAN_REQ_RCVD_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.adv_handle = data[1]; - evt.scan_addr_type = data[2]; - memcpy(evt.scan_addr, data + 3, 6); - - ble_gap_rx_scan_req_rcvd(&evt); + ble_gap_rx_scan_req_rcvd(ev); #endif return 0; } static int -ble_hs_hci_evt_le_conn_upd_complete(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_conn_upd_complete(uint8_t subevent, const void *data, + unsigned int len) { - struct hci_le_conn_upd_complete evt; + const struct ble_hci_ev_le_subev_conn_upd_complete *ev = data; - if (len < BLE_HCI_LE_CONN_UPD_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.status = data[1]; - evt.connection_handle = get_le16(data + 2); - evt.conn_itvl = get_le16(data + 4); - evt.conn_latency = get_le16(data + 6); - evt.supervision_timeout = get_le16(data + 8); + if (ev->status == 0) { + BLE_HS_DBG_ASSERT(le16toh(ev->conn_itvl) >= BLE_HCI_CONN_ITVL_MIN); + BLE_HS_DBG_ASSERT(le16toh(ev->conn_itvl) <= BLE_HCI_CONN_ITVL_MAX); - if (evt.status == 0) { - if (evt.conn_itvl < BLE_HCI_CONN_ITVL_MIN || - evt.conn_itvl > BLE_HCI_CONN_ITVL_MAX) { + BLE_HS_DBG_ASSERT(le16toh(ev->conn_latency) >= BLE_HCI_CONN_LATENCY_MIN); + BLE_HS_DBG_ASSERT(le16toh(ev->conn_latency) <= BLE_HCI_CONN_LATENCY_MAX); - return BLE_HS_EBADDATA; - } - if ( -#if BLE_HCI_CONN_LATENCY_MIN - (evt.conn_latency < BLE_HCI_CONN_LATENCY_MIN) || -#endif - evt.conn_latency > BLE_HCI_CONN_LATENCY_MAX) { - - return BLE_HS_EBADDATA; - } - if (evt.supervision_timeout < BLE_HCI_CONN_SPVN_TIMEOUT_MIN || - evt.supervision_timeout > BLE_HCI_CONN_SPVN_TIMEOUT_MAX) { - - return BLE_HS_EBADDATA; - } + BLE_HS_DBG_ASSERT(le16toh(ev->supervision_timeout) >= BLE_HCI_CONN_SPVN_TIMEOUT_MIN); + BLE_HS_DBG_ASSERT(le16toh(ev->supervision_timeout) <= BLE_HCI_CONN_SPVN_TIMEOUT_MAX); } - ble_gap_rx_update_complete(&evt); + ble_gap_rx_update_complete(ev); return 0; } static int -ble_hs_hci_evt_le_lt_key_req(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_lt_key_req(uint8_t subevent, const void *data, unsigned int len) { - struct hci_le_lt_key_req evt; + const struct ble_hci_ev_le_subev_lt_key_req *ev = data; - if (len < BLE_HCI_LE_LT_KEY_REQ_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.connection_handle = get_le16(data + 1); - evt.random_number = get_le64(data + 3); - evt.encrypted_diversifier = get_le16(data + 11); - - ble_sm_ltk_req_rx(&evt); + ble_sm_ltk_req_rx(ev); return 0; } static int -ble_hs_hci_evt_le_conn_parm_req(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_conn_parm_req(uint8_t subevent, const void *data, unsigned int len) { - struct hci_le_conn_param_req evt; + const struct ble_hci_ev_le_subev_rem_conn_param_req *ev = data; - if (len < BLE_HCI_LE_REM_CONN_PARM_REQ_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.connection_handle = get_le16(data + 1); - evt.itvl_min = get_le16(data + 3); - evt.itvl_max = get_le16(data + 5); - evt.latency = get_le16(data + 7); - evt.timeout = get_le16(data + 9); + BLE_HS_DBG_ASSERT(le16toh(ev->min_interval) >= BLE_HCI_CONN_ITVL_MIN); + BLE_HS_DBG_ASSERT(le16toh(ev->max_interval) <= BLE_HCI_CONN_ITVL_MAX); + BLE_HS_DBG_ASSERT(le16toh(ev->max_interval) >= le16toh(ev->min_interval)); - if (evt.itvl_min < BLE_HCI_CONN_ITVL_MIN || - evt.itvl_max > BLE_HCI_CONN_ITVL_MAX || - evt.itvl_min > evt.itvl_max) { + BLE_HS_DBG_ASSERT(le16toh(ev->latency) >= BLE_HCI_CONN_LATENCY_MIN); + BLE_HS_DBG_ASSERT(le16toh(ev->latency) <= BLE_HCI_CONN_LATENCY_MAX); - return BLE_HS_EBADDATA; - } - if ( -#if BLE_HCI_CONN_LATENCY_MIN - (evt.latency < BLE_HCI_CONN_LATENCY_MIN) || -#endif - evt.latency > BLE_HCI_CONN_LATENCY_MAX) { + BLE_HS_DBG_ASSERT(le16toh(ev->timeout) >= BLE_HCI_CONN_SPVN_TIMEOUT_MIN); + BLE_HS_DBG_ASSERT(le16toh(ev->timeout) <= BLE_HCI_CONN_SPVN_TIMEOUT_MAX); - return BLE_HS_EBADDATA; - } - if (evt.timeout < BLE_HCI_CONN_SPVN_TIMEOUT_MIN || - evt.timeout > BLE_HCI_CONN_SPVN_TIMEOUT_MAX) { - - return BLE_HS_EBADDATA; - } - - ble_gap_rx_param_req(&evt); + ble_gap_rx_param_req(ev); return 0; } static int -ble_hs_hci_evt_le_phy_update_complete(uint8_t subevent, uint8_t *data, int len) +ble_hs_hci_evt_le_phy_update_complete(uint8_t subevent, const void *data, + unsigned int len) { - struct hci_le_phy_upd_complete evt; + const struct ble_hci_ev_le_subev_phy_update_complete *ev = data; - if (len < BLE_HCI_LE_PHY_UPD_LEN) { + if (len != sizeof(*ev)) { return BLE_HS_ECONTROLLER; } - evt.subevent_code = data[0]; - evt.status = data[1]; - evt.connection_handle = get_le16(data + 2); - evt.tx_phy = data[4]; - evt.rx_phy = data[5]; - - ble_gap_rx_phy_update_complete(&evt); + ble_gap_rx_phy_update_complete(ev); return 0; } int -ble_hs_hci_evt_process(uint8_t *data) +ble_hs_hci_evt_process(const struct ble_hci_ev *ev) { const struct ble_hs_hci_evt_dispatch_entry *entry; - uint8_t event_code; - uint8_t param_len; - int event_len; int rc; /* Count events received */ STATS_INC(ble_hs_stats, hci_event); - /* Display to console */ - ble_hs_dbg_event_disp(data); - /* Process the event */ - event_code = data[0]; - param_len = data[1]; - - event_len = param_len + 2; - - entry = ble_hs_hci_evt_dispatch_find(event_code); + entry = ble_hs_hci_evt_dispatch_find(ev->opcode); if (entry == NULL) { STATS_INC(ble_hs_stats, hci_unknown_event); rc = BLE_HS_ENOTSUP; } else { - rc = entry->cb(event_code, data, event_len); + rc = entry->cb(ev->opcode, ev->data, ev->length); } - ble_hci_trans_buf_free(data); + ble_hci_trans_buf_free((uint8_t *) ev); return rc; } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_priv.h index ff3604727..362f12cbd 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_priv.h @@ -48,7 +48,7 @@ struct os_mbuf; struct ble_hs_hci_ack { int bha_status; /* A BLE_HS_E<...> error; NOT a naked HCI code. */ - uint8_t *bha_params; + const uint8_t *bha_params; int bha_params_len; uint16_t bha_opcode; uint8_t bha_hci_handle; @@ -81,11 +81,8 @@ struct hci_periodic_adv_params extern uint16_t ble_hs_hci_avail_pkts; -int ble_hs_hci_cmd_tx(uint16_t opcode, void *cmd, uint8_t cmd_len, - void *evt_buf, uint8_t evt_buf_len, - uint8_t *out_evt_buf_len); -int ble_hs_hci_cmd_tx_empty_ack(uint16_t opcode, void *cmd, uint8_t cmd_len); -void ble_hs_hci_rx_ack(uint8_t *ack_ev); +int ble_hs_hci_cmd_tx(uint16_t opcode, const void *cmd, uint8_t cmd_len, + void *rsp, uint8_t rsp_len); void ble_hs_hci_init(void); void ble_hs_hci_deinit(void); @@ -103,78 +100,11 @@ int ble_hs_hci_util_read_adv_tx_pwr(int8_t *out_pwr); int ble_hs_hci_util_rand(void *dst, int len); int ble_hs_hci_util_read_rssi(uint16_t conn_handle, int8_t *out_rssi); int ble_hs_hci_util_set_random_addr(const uint8_t *addr); -int ble_hs_hci_util_set_data_len(uint16_t conn_handle, uint16_t tx_octets, - uint16_t tx_time); int ble_hs_hci_util_data_hdr_strip(struct os_mbuf *om, struct hci_data_hdr *out_hdr); -int ble_hs_hci_evt_process(uint8_t *data); +int ble_hs_hci_evt_process(const struct ble_hci_ev *ev); -void ble_hs_hci_cmd_write_hdr(uint8_t ogf, uint16_t ocf, uint8_t len, - void *buf); -int ble_hs_hci_cmd_send_buf(uint16_t opcode, void *buf, uint8_t buf_len); -void ble_hs_hci_cmd_build_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_set_event_mask2(uint64_t event_mask, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_disconnect(uint16_t handle, uint8_t reason, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_read_rssi(uint16_t handle, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_le_set_host_chan_class(const uint8_t *chan_map, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_read_chan_map(uint16_t conn_handle, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_scan_rsp_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_params(const struct hci_adv_params *adv, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_read_buffer_size(void); -void ble_hs_hci_cmd_build_le_set_adv_enable(uint8_t enable, uint8_t *dst, - int dst_len); -int ble_hs_hci_cmd_le_set_adv_enable(uint8_t enable); -int ble_hs_hci_cmd_build_le_set_scan_params(uint8_t scan_type, - uint16_t scan_itvl, - uint16_t scan_window, - uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint8_t *dst, uint8_t dst_len); -int ble_hs_hci_cmd_le_set_scan_enable(uint8_t enable, uint8_t filter_dups); -int ble_hs_hci_cmd_build_le_create_connection( - const struct hci_create_conn *hcc, uint8_t *cmd, int cmd_len); -int ble_hs_hci_cmd_build_le_add_to_whitelist(const uint8_t *addr, - uint8_t addr_type, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_reset(void); -int ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(uint8_t fc_enable); -int ble_hs_hci_cmd_tx_host_buf_size(const struct hci_host_buf_size *cmd); -int ble_hs_hci_cmd_build_host_num_comp_pkts_entry( - const struct hci_host_num_comp_pkts_entry *entry, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_read_adv_pwr(void); -int ble_hs_hci_cmd_le_create_conn_cancel(void); -int ble_hs_hci_cmd_build_le_conn_update(const struct hci_conn_update *hcu, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_update(const struct hci_conn_update *hcu); -void ble_hs_hci_cmd_build_le_lt_key_req_reply( - const struct hci_lt_key_req_reply *hkr, uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_lt_key_req_neg_reply(uint16_t conn_handle, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_conn_param_reply( - const struct hci_conn_param_reply *hcr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_reply(const struct hci_conn_param_reply *hcr); -void ble_hs_hci_cmd_build_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn); -void ble_hs_hci_cmd_build_le_start_encrypt(const struct hci_start_encrypt *cmd, - uint8_t *dst, int dst_len); +int ble_hs_hci_cmd_send_buf(uint16_t opcode, const void *buf, uint8_t buf_len); int ble_hs_hci_set_buf_sz(uint16_t pktlen, uint16_t max_pkts); void ble_hs_hci_add_avail_pkts(uint16_t delta); @@ -184,145 +114,9 @@ uint16_t ble_hs_hci_util_handle_pb_bc_join(uint16_t handle, uint8_t pb, int ble_hs_hci_acl_tx_now(struct ble_hs_conn *conn, struct os_mbuf **om); int ble_hs_hci_acl_tx(struct ble_hs_conn *conn, struct os_mbuf **om); -int ble_hs_hci_cmd_build_set_data_len(uint16_t connection_handle, - uint16_t tx_octets, uint16_t tx_time, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_add_to_resolv_list( - const struct hci_add_dev_to_resolving_list *padd, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_remove_from_resolv_list( - uint8_t addr_type, const uint8_t *addr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_peer_resolv_addr( - uint8_t peer_identity_addr_type, const uint8_t *peer_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_lcl_resolv_addr( - uint8_t local_identity_addr_type, const uint8_t *local_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_addr_res_en( - uint8_t enable, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_resolv_priv_addr_timeout( - uint16_t timeout, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_random_addr(const uint8_t *addr, - uint8_t *dst, int dst_len); - -#if MYNEWT_VAL(BLE_EXT_ADV) -int ble_hs_hci_cmd_build_le_set_ext_scan_params(uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t phy_mask, - uint8_t phy_count, - struct ble_hs_hci_ext_scan_param *params[], - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_ext_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint16_t duration, - uint16_t period, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_ext_create_conn(const struct hci_ext_create_conn *hcc, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_set_random_addr(uint8_t handle, - const uint8_t *addr, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_data(uint8_t handle, uint8_t operation, - uint8_t frag_pref, struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_enable(uint8_t enable, uint8_t sets_num, - const struct hci_ext_adv_set *sets, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_params(uint8_t handle, - const struct hci_ext_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_remove(uint8_t handle, - uint8_t *cmd, int cmd_len); - -#if MYNEWT_VAL(BLE_PERIODIC_ADV) -int -ble_hs_hci_cmd_build_le_periodic_adv_params(uint8_t handle, - const struct hci_periodic_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_enable(uint8_t enable, - uint8_t handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_data(uint8_t handle, uint8_t operation, - struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_periodic_adv_create_sync(uint8_t filter_policy, - uint8_t adv_sid, - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint16_t skip, - uint16_t sync_timeout, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_terminate_sync(uint16_t sync_handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_add_dev_to_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_rem_dev_from_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -#endif - -#endif - -int ble_hs_hci_cmd_build_le_enh_recv_test(uint8_t rx_chan, uint8_t phy, - uint8_t mod_idx, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_enh_trans_test(uint8_t tx_chan, - uint8_t test_data_len, - uint8_t packet_payload_idx, - uint8_t phy, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_priv_mode(const uint8_t *addr, uint8_t addr_type, - uint8_t priv_mode, uint8_t *dst, - uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_read_phy(uint16_t conn_handle, uint8_t *dst, - int dst_len); - -int ble_hs_hci_cmd_build_le_set_default_phy(uint8_t tx_phys_mask, - uint8_t rx_phys_mask, - uint8_t *dst, int dst_len); - -int ble_hs_hci_cmd_build_le_set_phy(uint16_t conn_handle, uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint16_t phy_opts, - uint8_t *dst, int dst_len); - int ble_hs_hci_frag_num_mbufs(void); int ble_hs_hci_frag_num_mbufs_free(void); -#if MYNEWT_VAL(BLE_EXT_ADV) -#endif - -int ble_hs_hci_cmd_build_le_read_remote_feat(uint16_t handle, uint8_t *dst, - int dst_len); #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_util.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_util.c index e99dcbdff..996e0fc10 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_util.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_hci_util.c @@ -37,18 +37,19 @@ ble_hs_hci_util_handle_pb_bc_join(uint16_t handle, uint8_t pb, uint8_t bc) int ble_hs_hci_util_read_adv_tx_pwr(int8_t *out_tx_pwr) { - uint8_t params_len; + struct ble_hci_le_rd_adv_chan_txpwr_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RD_ADV_CHAN_TXPWR), - NULL, 0,out_tx_pwr, 1, ¶ms_len); + NULL, 0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (params_len != 1 || - *out_tx_pwr < BLE_HCI_ADV_CHAN_TXPWR_MIN || + *out_tx_pwr = rsp.power_level; + + if (*out_tx_pwr < BLE_HCI_ADV_CHAN_TXPWR_MIN || *out_tx_pwr > BLE_HCI_ADV_CHAN_TXPWR_MAX) { BLE_HS_LOG(WARN, "advertiser txpwr out of range\n"); } @@ -59,8 +60,7 @@ ble_hs_hci_util_read_adv_tx_pwr(int8_t *out_tx_pwr) int ble_hs_hci_util_rand(void *dst, int len) { - uint8_t rsp_buf[BLE_HCI_LE_RAND_LEN]; - uint8_t params_len; + struct ble_hci_le_rand_rp rsp; uint8_t *u8ptr; int chunk_sz; int rc; @@ -68,16 +68,13 @@ ble_hs_hci_util_rand(void *dst, int len) u8ptr = dst; while (len > 0) { rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RAND), - NULL, 0, rsp_buf, sizeof rsp_buf, ¶ms_len); + NULL, 0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (params_len != sizeof rsp_buf) { - return BLE_HS_ECONTROLLER; - } - chunk_sz = min(len, sizeof rsp_buf); - memcpy(u8ptr, rsp_buf, chunk_sz); + chunk_sz = min(len, sizeof(rsp)); + memcpy(u8ptr, &rsp.random_number, chunk_sz); len -= chunk_sz; u8ptr += chunk_sz; @@ -89,30 +86,25 @@ ble_hs_hci_util_rand(void *dst, int len) int ble_hs_hci_util_read_rssi(uint16_t conn_handle, int8_t *out_rssi) { - uint8_t buf[BLE_HCI_READ_RSSI_LEN]; - uint8_t params[BLE_HCI_READ_RSSI_ACK_PARAM_LEN]; - uint16_t params_conn_handle; - uint8_t params_len; + struct ble_hci_rd_rssi_cp cmd; + struct ble_hci_rd_rssi_rp rsp; + int rc; - ble_hs_hci_cmd_build_read_rssi(conn_handle, buf, sizeof buf); + cmd.handle = htole16(conn_handle); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_STATUS_PARAMS, - BLE_HCI_OCF_RD_RSSI), buf, sizeof(buf), - params, sizeof(params), ¶ms_len); + BLE_HCI_OCF_RD_RSSI), &cmd, sizeof(cmd), + &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (params_len != BLE_HCI_READ_RSSI_ACK_PARAM_LEN) { + if (le16toh(rsp.handle) != conn_handle) { return BLE_HS_ECONTROLLER; } - params_conn_handle = get_le16(params + 0); - if (params_conn_handle != conn_handle) { - return BLE_HS_ECONTROLLER; - } - - *out_rssi = params[2]; + *out_rssi = rsp.rssi; return 0; } @@ -120,57 +112,45 @@ ble_hs_hci_util_read_rssi(uint16_t conn_handle, int8_t *out_rssi) int ble_hs_hci_util_set_random_addr(const uint8_t *addr) { - uint8_t buf[BLE_HCI_SET_RAND_ADDR_LEN]; - int rc; + struct ble_hci_le_set_rand_addr_cp cmd; - /* set the address in the controller */ + memcpy(cmd.addr, addr, BLE_DEV_ADDR_LEN); - rc = ble_hs_hci_cmd_build_set_random_addr(addr, buf, sizeof(buf)); - if (rc != 0) { - return rc; - } - - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_RAND_ADDR), - buf, BLE_HCI_SET_RAND_ADDR_LEN); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_RAND_ADDR), + &cmd, sizeof(cmd), NULL, 0); } int ble_hs_hci_util_set_data_len(uint16_t conn_handle, uint16_t tx_octets, uint16_t tx_time) { - - uint8_t buf[BLE_HCI_SET_DATALEN_LEN]; - uint8_t params[BLE_HCI_SET_DATALEN_ACK_PARAM_LEN]; - uint16_t params_conn_handle; - uint8_t params_len; + struct ble_hci_le_set_data_len_cp cmd; + struct ble_hci_le_set_data_len_rp rsp; int rc; - rc = ble_hs_hci_cmd_build_set_data_len(conn_handle, tx_octets, tx_time, - buf, sizeof buf); - if (rc != 0) { - return BLE_HS_HCI_ERR(rc); + if (tx_octets < BLE_HCI_SET_DATALEN_TX_OCTETS_MIN || + tx_octets > BLE_HCI_SET_DATALEN_TX_OCTETS_MAX) { + return BLE_HS_EINVAL; } + if (tx_time < BLE_HCI_SET_DATALEN_TX_TIME_MIN || + tx_time > BLE_HCI_SET_DATALEN_TX_TIME_MAX) { + return BLE_HS_EINVAL; + } + + cmd.conn_handle = htole16(conn_handle); + cmd.tx_octets = htole16(tx_octets); + cmd.tx_time = htole16(tx_time); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_DATA_LEN), - buf, sizeof(buf), params, - BLE_HCI_SET_DATALEN_ACK_PARAM_LEN, ¶ms_len); + &cmd, sizeof(cmd), &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (params_len != BLE_HCI_SET_DATALEN_ACK_PARAM_LEN) { - return BLE_HS_ECONTROLLER; - } - - params_conn_handle = get_le16(params + 0); - if (params_conn_handle != conn_handle) { + if (le16toh(rsp.conn_handle) != conn_handle) { return BLE_HS_ECONTROLLER; } @@ -200,31 +180,24 @@ ble_hs_hci_util_data_hdr_strip(struct os_mbuf *om, int ble_hs_hci_read_chan_map(uint16_t conn_handle, uint8_t *out_chan_map) { - uint8_t buf[BLE_HCI_RD_CHANMAP_LEN]; - uint8_t params[BLE_HCI_RD_CHANMAP_RSP_LEN]; - uint16_t params_conn_handle; - uint8_t params_len; + struct ble_hci_le_rd_chan_map_cp cmd; + struct ble_hci_le_rd_chan_map_rp rsp; int rc; - ble_hs_hci_cmd_build_le_read_chan_map(conn_handle, buf, sizeof buf); + cmd.conn_handle = htole16(conn_handle); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RD_CHAN_MAP), - buf, sizeof(buf), params, BLE_HCI_RD_CHANMAP_RSP_LEN, - ¶ms_len); + &cmd, sizeof(cmd), &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (params_len != BLE_HCI_RD_CHANMAP_RSP_LEN) { + if (le16toh(rsp.conn_handle) != conn_handle) { return BLE_HS_ECONTROLLER; } - params_conn_handle = get_le16(params + 0); - if (params_conn_handle != conn_handle) { - return BLE_HS_ECONTROLLER; - } - - memcpy(out_chan_map, params + 2, 5); + memcpy(out_chan_map, rsp.chan_map, 5); return 0; } @@ -232,16 +205,11 @@ ble_hs_hci_read_chan_map(uint16_t conn_handle, uint8_t *out_chan_map) int ble_hs_hci_set_chan_class(const uint8_t *chan_map) { - uint8_t buf[BLE_HCI_SET_HOST_CHAN_CLASS_LEN]; - int rc; + struct ble_hci_le_set_host_chan_class_cp cmd; - ble_hs_hci_cmd_build_le_set_host_chan_class(chan_map, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_HOST_CHAN_CLASS), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + memcpy(cmd.chan_map, chan_map, sizeof(cmd.chan_map)); - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_HOST_CHAN_CLASS), + &cmd, sizeof(cmd), NULL, 0); } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_id.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_id.c index db32f90df..e30a3a1bc 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_id.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_id.c @@ -153,20 +153,24 @@ ble_hs_id_set_rnd(const uint8_t *rnd_addr) { uint8_t addr_type_byte; int rc; - int i, rnd_part_sum = 0; + int ones; ble_hs_lock(); - /* Make sure random part of rnd_addr is not all ones or zeros */ + /* Make sure random part of rnd_addr is not all ones or zeros. Reference: + * Core v5.0, Vol 6, Part B, section 1.3.2.1 */ addr_type_byte = rnd_addr[5] & 0xc0; - for (i = 0; i < BLE_DEV_ADDR_LEN; i++) { - rnd_part_sum += *(rnd_addr + i); - } - rnd_part_sum -= addr_type_byte; - /* All ones in random part: 5*(0xFF) + 0x3F = 0x53A */ + /* count bits set to 1 in random part of address */ + ones = __builtin_popcount(rnd_addr[0]); + ones += __builtin_popcount(rnd_addr[1]); + ones += __builtin_popcount(rnd_addr[2]); + ones += __builtin_popcount(rnd_addr[3]); + ones += __builtin_popcount(rnd_addr[4]); + ones += __builtin_popcount(rnd_addr[5] & 0x3f); + if ((addr_type_byte != 0x00 && addr_type_byte != 0xc0) || - (rnd_part_sum == 0) || (rnd_part_sum == 0x53A)) { + (ones == 0 || ones == 46)) { rc = BLE_HS_EINVAL; goto done; } @@ -178,8 +182,6 @@ ble_hs_id_set_rnd(const uint8_t *rnd_addr) memcpy(ble_hs_id_rnd, rnd_addr, 6); - rc = 0; - done: ble_hs_unlock(); return rc; @@ -286,7 +288,7 @@ ble_hs_id_addr_type_usable(uint8_t own_addr_type) case BLE_OWN_ADDR_RPA_PUBLIC_DEFAULT: case BLE_OWN_ADDR_RPA_RANDOM_DEFAULT: - id_addr_type = ble_hs_misc_addr_type_to_id(own_addr_type); + id_addr_type = ble_hs_misc_own_addr_type_to_id(own_addr_type); rc = ble_hs_id_addr(id_addr_type, NULL, &nrpa); if (rc != 0) { return rc; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_misc.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_misc.c index 00200d316..dfb46b741 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_misc.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_misc.c @@ -81,7 +81,7 @@ ble_hs_misc_conn_chan_find_reqd(uint16_t conn_handle, uint16_t cid, } uint8_t -ble_hs_misc_addr_type_to_id(uint8_t own_addr_type) +ble_hs_misc_own_addr_type_to_id(uint8_t own_addr_type) { switch (own_addr_type) { case BLE_OWN_ADDR_PUBLIC: @@ -98,6 +98,24 @@ ble_hs_misc_addr_type_to_id(uint8_t own_addr_type) } } +uint8_t +ble_hs_misc_peer_addr_type_to_id(uint8_t peer_addr_type) +{ + switch (peer_addr_type) { + case BLE_ADDR_PUBLIC: + case BLE_ADDR_PUBLIC_ID: + return BLE_ADDR_PUBLIC; + + case BLE_ADDR_RANDOM: + case BLE_ADDR_RANDOM_ID: + return BLE_ADDR_RANDOM; + + default: + BLE_HS_DBG_ASSERT(0); + return BLE_ADDR_PUBLIC; + } +} + static int ble_hs_misc_restore_one_irk(int obj_type, union ble_store_value *val, void *cookie) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_periodic_sync.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_periodic_sync.c index c594ce53a..dad535138 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_periodic_sync.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_periodic_sync.c @@ -24,6 +24,7 @@ #include "host/ble_hs_id.h" #include "ble_hs_priv.h" +#if MYNEWT_VAL(BLE_PERIODIC_ADV) static SLIST_HEAD(, ble_hs_periodic_sync) g_ble_hs_periodic_sync_handles; static struct os_mempool ble_hs_periodic_sync_pool; @@ -150,3 +151,4 @@ ble_hs_periodic_sync_init(void) return 0; } +#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_priv.h index 49269546c..538d07a97 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_priv.h @@ -26,7 +26,6 @@ #include "ble_att_priv.h" #include "ble_gap_priv.h" #include "ble_gatt_priv.h" -#include "ble_hs_dbg_priv.h" #include "ble_hs_hci_priv.h" #include "ble_hs_atomic_priv.h" #include "ble_hs_conn_priv.h" @@ -118,7 +117,8 @@ int ble_hs_misc_conn_chan_find(uint16_t conn_handle, uint16_t cid, int ble_hs_misc_conn_chan_find_reqd(uint16_t conn_handle, uint16_t cid, struct ble_hs_conn **out_conn, struct ble_l2cap_chan **out_chan); -uint8_t ble_hs_misc_addr_type_to_id(uint8_t addr_type); +uint8_t ble_hs_misc_own_addr_type_to_id(uint8_t addr_type); +uint8_t ble_hs_misc_peer_addr_type_to_id(uint8_t addr_type); int ble_hs_misc_restore_irks(void); int ble_hs_locked_by_cur_task(void); @@ -142,31 +142,6 @@ int ble_mqueue_init(struct ble_mqueue *mq, ble_npl_event_fn *ev_fn, void *ev_arg struct os_mbuf *ble_mqueue_get(struct ble_mqueue *mq); int ble_mqueue_put(struct ble_mqueue *mq, struct ble_npl_eventq *evq, struct os_mbuf *om); -#if MYNEWT_VAL(LOG_LEVEL) <= LOG_LEVEL_DEBUG && !BLE_MONITOR - -#define BLE_HS_LOG_CMD(is_tx, cmd_type, cmd_name, conn_handle, \ - log_cb, cmd) do \ -{ \ - BLE_HS_LOG(DEBUG, "%sed %s command: %s; conn=%d ", \ - (is_tx) ? "tx" : "rx", (cmd_type), (cmd_name), (conn_handle)); \ - (log_cb)(cmd); \ - BLE_HS_LOG(DEBUG, "\n"); \ -} while (0) - -#define BLE_HS_LOG_EMPTY_CMD(is_tx, cmd_type, cmd_name, conn_handle) do \ -{ \ - BLE_HS_LOG(DEBUG, "%sed %s command: %s; conn=%d ", \ - (is_tx) ? "tx" : "rx", (cmd_type), (cmd_name), (conn_handle)); \ - BLE_HS_LOG(DEBUG, "\n"); \ -} while (0) - -#else - -#define BLE_HS_LOG_CMD(is_tx, cmd_type, cmd_name, conn_handle, log_cb, cmd) -#define BLE_HS_LOG_EMPTY_CMD(is_tx, cmd_type, cmd_name, conn_handle) - -#endif - #if MYNEWT_VAL(BLE_HS_DEBUG) #define BLE_HS_DBG_ASSERT(x) assert(x) #define BLE_HS_DBG_ASSERT_EVAL(x) assert(x) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_pvcy.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_pvcy.c index 69f3da543..9e92c660f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_pvcy.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_pvcy.c @@ -36,87 +36,66 @@ const uint8_t ble_hs_pvcy_default_irk[16] = { static int ble_hs_pvcy_set_addr_timeout(uint16_t timeout) { + struct ble_hci_le_set_rpa_tmo_cp cmd; + #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) return ble_hs_resolv_set_rpa_tmo(timeout); #endif - uint8_t buf[BLE_HCI_SET_RESOLV_PRIV_ADDR_TO_LEN]; - int rc; - - rc = ble_hs_hci_cmd_build_set_resolv_priv_addr_timeout(timeout, buf, - sizeof(buf)); - if (rc != 0) { - return rc; + if (timeout == 0 || timeout > 0xA1B8) { + return BLE_ERR_INV_HCI_CMD_PARMS; } + cmd.rpa_timeout = htole16(timeout); + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_RPA_TMO), - buf, sizeof(buf), NULL, 0, NULL); + &cmd, sizeof(cmd), NULL, 0); } #if (!MYNEWT_VAL(BLE_HOST_BASED_PRIVACY)) static int ble_hs_pvcy_set_resolve_enabled(int enable) { - uint8_t buf[BLE_HCI_SET_ADDR_RESOL_ENA_LEN]; - int rc; + struct ble_hci_le_set_addr_res_en_cp cmd; - rc = ble_hs_hci_cmd_build_set_addr_res_en(enable, buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + cmd.enable = enable; - rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_ADDR_RES_EN), - buf, sizeof(buf), NULL, 0, NULL); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_ADDR_RES_EN), + &cmd, sizeof(cmd), NULL, 0); } #endif int ble_hs_pvcy_remove_entry(uint8_t addr_type, const uint8_t *addr) { - uint8_t buf[BLE_HCI_RMV_FROM_RESOLV_LIST_LEN]; + struct ble_hci_le_rmv_resolve_list_cp cmd; int rc; - rc = ble_hs_hci_cmd_build_remove_from_resolv_list(addr_type, addr, - buf, sizeof(buf)); - if (rc != 0) { - return rc; + if (addr_type > BLE_ADDR_RANDOM) { + addr_type = addr_type % 2; } + cmd.peer_addr_type = addr_type; + memcpy(cmd.peer_id_addr, addr, BLE_DEV_ADDR_LEN); #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) - rc = ble_hs_resolv_list_rmv(buf[0], &buf[1]); + rc = ble_hs_resolv_list_rmv(addr_type, &cmd.peer_id_addr[0]); #else rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RMV_RESOLV_LIST), - buf, sizeof(buf), NULL, 0, NULL); + &cmd, sizeof(cmd), NULL, 0); #endif - if (rc != 0) { - return rc; - } - - return 0; + return rc; } #if (!MYNEWT_VAL(BLE_HOST_BASED_PRIVACY)) static int ble_hs_pvcy_clear_entries(void) { - int rc; - - rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_CLR_RESOLV_LIST), - NULL, 0, NULL, 0, NULL); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_CLR_RESOLV_LIST), + NULL, 0, NULL, 0); } #endif @@ -124,21 +103,20 @@ static int ble_hs_pvcy_add_entry_hci(const uint8_t *addr, uint8_t addr_type, const uint8_t *irk) { - struct hci_add_dev_to_resolving_list add; - uint8_t buf[BLE_HCI_ADD_TO_RESOLV_LIST_LEN]; + struct ble_hci_le_add_resolv_list_cp cmd; int rc; - add.addr_type = addr_type; - memcpy(add.addr, addr, 6); - memcpy(add.local_irk, ble_hs_pvcy_irk, 16); - memcpy(add.peer_irk, irk, 16); - - rc = ble_hs_hci_cmd_build_add_to_resolv_list(&add, buf, sizeof(buf)); - if (rc != 0) { - return rc; + if (addr_type > BLE_ADDR_RANDOM) { + return BLE_ERR_INV_HCI_CMD_PARMS; } + + cmd.peer_addr_type = addr_type; + memcpy(cmd.peer_id_addr, addr, 6); + memcpy(cmd.local_irk, ble_hs_pvcy_irk, 16); + memcpy(cmd.peer_irk, irk, 16); + #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) - rc = ble_hs_resolv_list_add(buf); + rc = ble_hs_resolv_list_add((uint8_t *) &cmd); if (rc != 0) { return rc; } @@ -148,12 +126,11 @@ ble_hs_pvcy_add_entry_hci(const uint8_t *addr, uint8_t addr_type, rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_ADD_RESOLV_LIST), - buf, sizeof(buf), NULL, 0, NULL); + &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { return rc; } - /* FIXME Controller is BT5.0 and default privacy mode is network which * can cause problems for apps which are not aware of it. We need to * sort it out somehow. For now we set device mode for all of the peer @@ -304,18 +281,19 @@ ble_hs_pvcy_our_irk(const uint8_t **out_irk) int ble_hs_pvcy_set_mode(const ble_addr_t *addr, uint8_t priv_mode) { - uint8_t buf[BLE_HCI_LE_SET_PRIVACY_MODE_LEN]; - int rc; + struct ble_hci_le_set_privacy_mode_cp cmd; - rc = ble_hs_hci_cmd_build_le_set_priv_mode(addr->val, addr->type, priv_mode, - buf, sizeof(buf)); - if (rc != 0) { - return rc; + if (addr->type > BLE_ADDR_RANDOM) { + return BLE_ERR_INV_HCI_CMD_PARMS; } + cmd.mode = priv_mode; + cmd.peer_id_addr_type = addr->type; + memcpy(cmd.peer_id_addr, addr->val, BLE_DEV_ADDR_LEN); + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_PRIVACY_MODE), - buf, sizeof(buf), NULL, 0, NULL); + &cmd, sizeof(cmd), NULL, 0); } bool diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_resolv.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_resolv.c index 46e5577f6..6add1018b 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_resolv.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_resolv.c @@ -96,7 +96,7 @@ ble_rpa_remove_peer_dev_rec(struct ble_hs_dev_records *p_dev_rec) ble_store_num_peer_dev_rec--; if ((i != ble_store_num_peer_dev_rec) && (ble_store_num_peer_dev_rec != 0)) { memmove(&peer_dev_rec[i], &peer_dev_rec[i + 1], - (ble_store_num_peer_dev_rec - i + 1) * sizeof(struct ble_hs_dev_records )); + (ble_store_num_peer_dev_rec - i) * sizeof(struct ble_hs_dev_records )); } BLE_HS_LOG(DEBUG, " RPA: removed device at index = %d, no. of peer records" @@ -567,9 +567,25 @@ ble_hs_resolv_list_add(uint8_t *cmdbuf) addr_type = cmdbuf[0]; ident_addr = cmdbuf + 1; +/*--------------------------------------------------------------------------------*/ + /* Temporary workaround to resolve an issue when deinitializing the stack + * and reinitializing. If the a peer deletes the bonding info after deiniting + * it will not be able to re-bond without this. Awaiting upstream fix. + */ +/* if (ble_hs_is_on_resolv_list(ident_addr, addr_type)) { return BLE_HS_EINVAL; } +*/ + int position = ble_hs_is_on_resolv_list(ident_addr, addr_type); + if (position) { + memmove(&g_ble_hs_resolv_list[position], + &g_ble_hs_resolv_list[position + 1], + (g_ble_hs_resolv_data.rl_cnt - position) * sizeof (struct + ble_hs_resolv_entry)); + --g_ble_hs_resolv_data.rl_cnt; + } +/*--------------------------------------------------------------------------------*/ rl = &g_ble_hs_resolv_list[g_ble_hs_resolv_data.rl_cnt]; memset(rl, 0, sizeof(*rl)); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_startup.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_startup.c index b21db7513..83026ac18 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_startup.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_startup.c @@ -27,26 +27,20 @@ static int ble_hs_startup_read_sup_f_tx(void) { - uint8_t ack_params[BLE_HCI_RD_LOC_SUPP_FEAT_RSPLEN]; - uint8_t ack_params_len; + struct ble_hci_ip_rd_loc_supp_feat_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_INFO_PARAMS, BLE_HCI_OCF_IP_RD_LOC_SUPP_FEAT), - NULL,0, ack_params, sizeof ack_params, - &ack_params_len); + NULL, 0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_RD_LOC_SUPP_FEAT_RSPLEN) { - return BLE_HS_ECONTROLLER; - } - /* for now we don't use it outside of init sequence so check this here * LE Supported (Controller) byte 4, bit 6 */ - if (!(ack_params[4] & 0x60)) { + if (!(rsp.features & 0x0000006000000000)) { BLE_HS_LOG(ERROR, "Controller doesn't support LE\n"); return BLE_HS_ECONTROLLER; } @@ -58,26 +52,18 @@ ble_hs_startup_read_sup_f_tx(void) static int ble_hs_startup_read_local_ver_tx(void) { - uint8_t ack_params[BLE_HCI_RD_LOC_VER_INFO_RSPLEN]; - uint8_t ack_params_len; - uint8_t hci_version; + struct ble_hci_ip_rd_local_ver_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_INFO_PARAMS, BLE_HCI_OCF_IP_RD_LOCAL_VER), - NULL,0, ack_params, sizeof ack_params, - &ack_params_len); + NULL, 0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_RD_LOC_VER_INFO_RSPLEN) { - return BLE_HS_ECONTROLLER; - } - /* For now we are interested only in HCI Version */ - hci_version = ack_params[0]; - ble_hs_hci_set_hci_version(hci_version); + ble_hs_hci_set_hci_version(rsp.hci_ver); return 0; } @@ -85,26 +71,17 @@ ble_hs_startup_read_local_ver_tx(void) static int ble_hs_startup_le_read_sup_f_tx(void) { - uint8_t ack_params[BLE_HCI_RD_LE_LOC_SUPP_FEAT_RSPLEN]; - uint8_t ack_params_len; - uint32_t feat; + struct ble_hci_le_rd_loc_supp_feat_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RD_LOC_SUPP_FEAT), - NULL,0, ack_params, sizeof ack_params, - &ack_params_len); + NULL,0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_RD_LE_LOC_SUPP_FEAT_RSPLEN) { - return BLE_HS_ECONTROLLER; - } - - /* For now 32-bits of features is enough */ - feat = get_le32(ack_params); - ble_hs_hci_set_le_supported_feat(feat); + ble_hs_hci_set_le_supported_feat(le64toh(rsp.features)); return 0; } @@ -112,23 +89,18 @@ ble_hs_startup_le_read_sup_f_tx(void) static int ble_hs_startup_le_read_buf_sz_tx(uint16_t *out_pktlen, uint8_t *out_max_pkts) { - uint8_t ack_params[BLE_HCI_RD_BUF_SIZE_RSPLEN]; - uint8_t ack_params_len; + struct ble_hci_le_rd_buf_size_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_RD_BUF_SIZE), NULL, 0, - ack_params, sizeof ack_params, &ack_params_len); + &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_RD_BUF_SIZE_RSPLEN) { - return BLE_HS_ECONTROLLER; - } - - *out_pktlen = get_le16(ack_params + 0); - *out_max_pkts = ack_params[2]; + *out_pktlen = le16toh(rsp.data_len); + *out_max_pkts = rsp.data_packets; return 0; } @@ -136,23 +108,18 @@ ble_hs_startup_le_read_buf_sz_tx(uint16_t *out_pktlen, uint8_t *out_max_pkts) static int ble_hs_startup_read_buf_sz_tx(uint16_t *out_pktlen, uint16_t *out_max_pkts) { - uint8_t ack_params[BLE_HCI_IP_RD_BUF_SIZE_RSPLEN]; - uint8_t ack_params_len; + struct ble_hci_ip_rd_buf_size_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_INFO_PARAMS, BLE_HCI_OCF_IP_RD_BUF_SIZE), NULL, 0, - ack_params, sizeof ack_params, &ack_params_len); + &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_IP_RD_BUF_SIZE_RSPLEN) { - return BLE_HS_ECONTROLLER; - } - - *out_pktlen = get_le16(ack_params + 0); - *out_max_pkts = get_le16(ack_params + 3); + *out_pktlen = le16toh(rsp.acl_data_len); + *out_max_pkts = le16toh(rsp.acl_num); return 0; } @@ -192,30 +159,24 @@ ble_hs_startup_read_buf_sz(void) static int ble_hs_startup_read_bd_addr(void) { - uint8_t ack_params[BLE_HCI_IP_RD_BD_ADDR_ACK_PARAM_LEN]; - uint8_t ack_params_len; + struct ble_hci_ip_rd_bd_addr_rp rsp; int rc; rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_INFO_PARAMS, BLE_HCI_OCF_IP_RD_BD_ADDR), - NULL, 0, ack_params, sizeof ack_params, - &ack_params_len); + NULL, 0, &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != sizeof ack_params) { - return BLE_HS_ECONTROLLER; - } - - ble_hs_id_set_pub(ack_params); + ble_hs_id_set_pub(rsp.addr); return 0; } static int ble_hs_startup_le_set_evmask_tx(void) { - uint8_t buf[BLE_HCI_SET_LE_EVENT_MASK_LEN]; + struct ble_hci_le_set_event_mask_cp cmd; uint8_t version; uint64_t mask; int rc; @@ -267,10 +228,21 @@ ble_hs_startup_le_set_evmask_tx(void) mask |= 0x00000000000ff800; } - ble_hs_hci_cmd_build_le_set_event_mask(mask, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_SET_EVENT_MASK), - buf, sizeof(buf)); +#if MYNEWT_VAL(BLE_PERIODIC_ADV_SYNC_TRANSFER) + if (version >= BLE_HCI_VER_BCS_5_1) { + /** + * Enable the following LE events: + * 0x0000000000800000 LE Periodic Advertising Sync Transfer Received event + */ + mask |= 0x0000000000800000; + } +#endif + + cmd.event_mask = htole64(mask); + + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_SET_EVENT_MASK), + &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { return rc; } @@ -281,7 +253,8 @@ ble_hs_startup_le_set_evmask_tx(void) static int ble_hs_startup_set_evmask_tx(void) { - uint8_t buf[BLE_HCI_SET_EVENT_MASK_LEN]; + struct ble_hci_cb_set_event_mask_cp cmd; + struct ble_hci_cb_set_event_mask2_cp cmd2; uint8_t version; int rc; @@ -296,10 +269,11 @@ ble_hs_startup_set_evmask_tx(void) * 0x0000800000000000 Encryption Key Refresh Complete Event * 0x2000000000000000 LE Meta-Event */ - ble_hs_hci_cmd_build_set_event_mask(0x2000800002008090, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, - BLE_HCI_OCF_CB_SET_EVENT_MASK), - buf, sizeof(buf)); + cmd.event_mask = htole64(0x2000800002008090); + + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, + BLE_HCI_OCF_CB_SET_EVENT_MASK), + &cmd, sizeof(cmd), NULL, 0); if (rc != 0) { return rc; } @@ -309,10 +283,10 @@ ble_hs_startup_set_evmask_tx(void) * Enable the following events: * 0x0000000000800000 Authenticated Payload Timeout Event */ - ble_hs_hci_cmd_build_set_event_mask2(0x0000000000800000, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, - BLE_HCI_OCF_CB_SET_EVENT_MASK2), - buf, sizeof(buf)); + cmd2.event_mask2 = htole64(0x0000000000800000); + rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, + BLE_HCI_OCF_CB_SET_EVENT_MASK2), + &cmd2, sizeof(cmd2), NULL, 0); if (rc != 0) { return rc; } @@ -324,16 +298,9 @@ ble_hs_startup_set_evmask_tx(void) static int ble_hs_startup_reset_tx(void) { - int rc; - - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, - BLE_HCI_OCF_CB_RESET), - NULL, 0); - if (rc != 0) { - return rc; - } - - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_CTLR_BASEBAND, + BLE_HCI_OCF_CB_RESET), + NULL, 0, NULL, 0); } int diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_stop.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_stop.c index ff540b931..b90d3ec6f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_stop.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_hs_stop.c @@ -21,9 +21,12 @@ #include "sysinit/sysinit.h" #include "syscfg/syscfg.h" #include "ble_hs_priv.h" +#include "nimble/nimble_npl.h" +#ifndef MYNEWT +#include "nimble/nimble_port.h" +#endif -static ble_npl_event_fn ble_hs_stop_term_event_cb; -static struct ble_npl_event ble_hs_stop_term_ev; +#define BLE_HOST_STOP_TIMEOUT_MS MYNEWT_VAL(BLE_HS_STOP_ON_SHUTDOWN_TIMEOUT) static struct ble_gap_event_listener ble_hs_stop_gap_listener; @@ -33,6 +36,11 @@ static struct ble_gap_event_listener ble_hs_stop_gap_listener; SLIST_HEAD(ble_hs_stop_listener_slist, ble_hs_stop_listener); static struct ble_hs_stop_listener_slist ble_hs_stop_listeners; +/* Track number of connections */ +static uint8_t ble_hs_stop_conn_cnt; + +static struct ble_npl_callout ble_hs_stop_terminate_tmo; + /** * Called when a stop procedure has completed. */ @@ -42,6 +50,8 @@ ble_hs_stop_done(int status) struct ble_hs_stop_listener_slist slist; struct ble_hs_stop_listener *listener; + ble_npl_callout_stop(&ble_hs_stop_terminate_tmo); + ble_hs_lock(); ble_gap_event_listener_unregister(&ble_hs_stop_gap_listener); @@ -82,7 +92,7 @@ ble_hs_stop_terminate_all_periodic_sync(void) * ble_hs_periodic_sync_first yields the next psync handle */ sync_handle = psync->sync_handle; - rc = ble_gap_periodic_adv_terminate_sync(sync_handle); + rc = ble_gap_periodic_adv_sync_terminate(sync_handle); if (rc != 0 && rc != BLE_HS_ENOTCONN) { BLE_HS_LOG(ERROR, "failed to terminate periodic sync=0x%04x, rc=%d\n", sync_handle, rc); @@ -95,47 +105,41 @@ ble_hs_stop_terminate_all_periodic_sync(void) #endif /** - * Terminates the first open connection. - * - * If there are no open connections, Check for any active periodic sync - * handles. + * Terminates connection. */ -static void -ble_hs_stop_terminate_next_conn(void) +static int +ble_hs_stop_terminate_conn(struct ble_hs_conn *conn, void *arg) { - uint16_t handle; int rc; - handle = ble_hs_atomic_first_conn_handle(); - if (handle == BLE_HS_CONN_HANDLE_NONE) { - /* No open connections. Signal completion of the stop procedure. */ - ble_hs_stop_done(0); - return; - } - - rc = ble_gap_terminate(handle, BLE_ERR_REM_USER_CONN_TERM); + rc = ble_gap_terminate_with_conn(conn, BLE_ERR_REM_USER_CONN_TERM); if (rc == 0) { /* Terminate procedure successfully initiated. Let the GAP event * handler deal with the result. */ + ble_hs_stop_conn_cnt++; } else { - BLE_HS_LOG(ERROR, - "ble_hs_stop: failed to terminate connection; rc=%d\n", rc); - ble_hs_stop_done(rc); + /* If failed, just make sure we are not going to wait for connection complete event, + * just count it as already disconnected + */ + BLE_HS_LOG(ERROR, "ble_hs_stop: failed to terminate connection; rc=%d\n", rc); } + + return 0; } /** - * Event handler. Attempts to terminate the first open connection if there is - * one. All additional connections are terminated elsewhere in the GAP event - * handler. - * - * If there are no connections, signals completion of the stop procedure. + * This is called when host graceful disconnect timeout fires. That means some devices + * are out of range and disconnection completed did no happen yet. */ static void -ble_hs_stop_term_event_cb(struct ble_npl_event *ev) +ble_hs_stop_terminate_timeout_cb(struct ble_npl_event *ev) { - ble_hs_stop_terminate_next_conn(); + BLE_HS_LOG(ERROR, "ble_hs_stop_terminate_timeout_cb," + "%d connection(s) still up \n", ble_hs_stop_conn_cnt); + + /* TODO: Shall we send error here? */ + ble_hs_stop_done(0); } /** @@ -151,7 +155,11 @@ ble_hs_stop_gap_event(struct ble_gap_event *event, void *arg) if (event->type == BLE_GAP_EVENT_DISCONNECT || event->type == BLE_GAP_EVENT_TERM_FAILURE) { - ble_hs_stop_terminate_next_conn(); + ble_hs_stop_conn_cnt--; + + if (ble_hs_stop_conn_cnt == 0) { + ble_hs_stop_done(0); + } } return 0; @@ -233,12 +241,6 @@ ble_hs_stop(struct ble_hs_stop_listener *listener, ble_gap_preempt(); ble_gap_preempt_done(); - rc = ble_gap_event_listener_register(&ble_hs_stop_gap_listener, - ble_hs_stop_gap_event, NULL); - if (rc != 0) { - return rc; - } - #if MYNEWT_VAL(BLE_PERIODIC_ADV) /* Check for active periodic sync first and terminate it all */ rc = ble_hs_stop_terminate_all_periodic_sync(); @@ -247,11 +249,23 @@ ble_hs_stop(struct ble_hs_stop_listener *listener, } #endif - /* Schedule termination of all open connections in the host task. This is - * done even if there are no open connections so that the result of the - * stop procedure is signaled in a consistent manner (asynchronously). - */ - ble_npl_eventq_put(ble_hs_evq_get(), &ble_hs_stop_term_ev); + rc = ble_gap_event_listener_register(&ble_hs_stop_gap_listener, + ble_hs_stop_gap_event, NULL); + if (rc != 0) { + return rc; + } + + ble_hs_lock(); + ble_hs_conn_foreach(ble_hs_stop_terminate_conn, NULL); + ble_hs_unlock(); + + if (ble_hs_stop_conn_cnt > 0) { + ble_npl_callout_reset(&ble_hs_stop_terminate_tmo, + ble_npl_time_ms_to_ticks32(BLE_HOST_STOP_TIMEOUT_MS)); + } else { + /* No connections, stop is completed */ + ble_hs_stop_done(0); + } return 0; } @@ -259,5 +273,11 @@ ble_hs_stop(struct ble_hs_stop_listener *listener, void ble_hs_stop_init(void) { - ble_npl_event_init(&ble_hs_stop_term_ev, ble_hs_stop_term_event_cb, NULL); +#ifdef MYNEWT + ble_npl_callout_init(&ble_hs_stop_terminate_tmo, ble_npl_eventq_dflt_get(), + ble_hs_stop_terminate_timeout_cb, NULL); +#else + ble_npl_callout_init(&ble_hs_stop_terminate_tmo, nimble_port_get_dflt_eventq(), + ble_hs_stop_terminate_timeout_cb, NULL); +#endif } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap.c index a9252b8e0..0d9f082d4 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap.c @@ -70,7 +70,7 @@ ble_l2cap_chan_alloc(uint16_t conn_handle) } void -ble_l2cap_chan_free(struct ble_l2cap_chan *chan) +ble_l2cap_chan_free(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) { int rc; @@ -79,7 +79,7 @@ ble_l2cap_chan_free(struct ble_l2cap_chan *chan) } os_mbuf_free_chain(chan->rx_buf); - ble_l2cap_coc_cleanup_chan(chan); + ble_l2cap_coc_cleanup_chan(conn, chan); #if MYNEWT_VAL(BLE_HS_DEBUG) memset(chan, 0xff, sizeof *chan); @@ -155,7 +155,62 @@ ble_l2cap_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, return ble_l2cap_sig_coc_connect(conn_handle, psm, mtu, sdu_rx, cb, cb_arg); } -int ble_l2cap_disconnect(struct ble_l2cap_chan *chan) +int +ble_l2cap_get_chan_info(struct ble_l2cap_chan *chan, struct ble_l2cap_chan_info *chan_info) +{ + if (!chan || !chan_info) { + return BLE_HS_EINVAL; + } + + memset(chan_info, 0, sizeof(*chan_info)); + chan_info->dcid = chan->dcid; + chan_info->scid = chan->scid; + chan_info->our_l2cap_mtu = chan->my_mtu; + chan_info->peer_l2cap_mtu = chan->peer_mtu; + +#if MYNEWT_VAL(BLE_L2CAP_COC_MAX_NUM) + chan_info->psm = chan->psm; + chan_info->our_coc_mtu = chan->coc_rx.mtu; + chan_info->peer_coc_mtu = chan->coc_tx.mtu; +#endif + + return 0; +} + +int +ble_l2cap_enhanced_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg) +{ + return ble_l2cap_sig_ecoc_connect(conn_handle, psm, mtu, + num, sdu_rx, cb, cb_arg); +} + +int +ble_l2cap_reconfig(struct ble_l2cap_chan *chans[], uint8_t num, uint16_t new_mtu) +{ + int i; + uint16_t conn_handle; + + if (num == 0 || !chans) { + return BLE_HS_EINVAL; + } + + conn_handle = chans[0]->conn_handle; + + for (i = 1; i < num; i++) { + if (conn_handle != chans[i]->conn_handle) { + BLE_HS_LOG(ERROR, "All channels should have same conn handle\n"); + return BLE_HS_EINVAL; + } + } + + return ble_l2cap_sig_coc_reconfig(conn_handle, chans, num, new_mtu); +} + +int +ble_l2cap_disconnect(struct ble_l2cap_chan *chan) { return ble_l2cap_sig_disconnect(chan); } @@ -188,23 +243,18 @@ ble_l2cap_remove_rx(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) static void ble_l2cap_append_rx(struct ble_l2cap_chan *chan, struct os_mbuf *frag) { - int rc; - - (void)rc; - #if MYNEWT_VAL(BLE_L2CAP_JOIN_RX_FRAGS) - /* Copy the data from the incoming fragment into the packet in progress. */ - rc = os_mbuf_appendfrom(chan->rx_buf, frag, 0, OS_MBUF_PKTLEN(frag)); - if (rc == 0) { - os_mbuf_free_chain(frag); - return; - } -#endif + struct os_mbuf *m; + /* Copy the data from the incoming fragment into the packet in progress. */ + m = os_mbuf_pack_chains(chan->rx_buf, frag); + assert(m); +#else /* Join disabled or append failed due to mbuf shortage. Just attach the * mbuf to the end of the packet. */ os_mbuf_concat(chan->rx_buf, frag); +#endif } static int diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc.c index bc597f936..41a831565 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc.c @@ -88,17 +88,56 @@ ble_l2cap_coc_create_server(uint16_t psm, uint16_t mtu, return 0; } -static uint16_t -ble_l2cap_coc_get_cid(void) +static inline void +ble_l2cap_set_used_cid(uint32_t *cid_mask, int bit) { - static uint16_t next_cid = BLE_L2CAP_COC_CID_START; + cid_mask[bit / 32] |= (1 << (bit % 32)); +} - if (next_cid > BLE_L2CAP_COC_CID_END) { - next_cid = BLE_L2CAP_COC_CID_START; +static inline void +ble_l2cap_clear_used_cid(uint32_t *cid_mask, int bit) +{ + cid_mask[bit / 32] &= ~(1 << (bit % 32)); +} + +static inline int +ble_l2cap_get_first_available_bit(uint32_t *cid_mask) +{ + int i; + int bit = 0; + + for (i = 0; i < BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN; i++) { + /* Find first available index by finding first available bit + * in the mask. + * Note: + * a) If bit == 0 means all the bits are used + * b) this function returns 1 + index + */ + bit = __builtin_ffs(~(unsigned int)(cid_mask[i])); + if (bit != 0) { + break; + } } - /*TODO: Make it smarter*/ - return next_cid++; + if (i == BLE_HS_CONN_L2CAP_COC_CID_MASK_LEN) { + return -1; + } + + return (i * 32 + bit - 1); +} + +static int +ble_l2cap_coc_get_cid(uint32_t *cid_mask) +{ + int bit; + + bit = ble_l2cap_get_first_available_bit(cid_mask); + if (bit < 0) { + return -1; + } + + ble_l2cap_set_used_cid(cid_mask, bit); + return BLE_L2CAP_COC_CID_START + bit; } static struct ble_l2cap_coc_srv * @@ -145,22 +184,26 @@ ble_l2cap_coc_rx_fn(struct ble_l2cap_chan *chan) /* Create a shortcut to rx endpoint */ rx = &chan->coc_rx; + BLE_HS_DBG_ASSERT(rx != NULL); om_total = OS_MBUF_PKTLEN(*om); - rc = ble_hs_mbuf_pullup_base(om, BLE_L2CAP_SDU_SIZE); - if (rc != 0) { - return rc; - } /* First LE frame */ if (OS_MBUF_PKTLEN(rx->sdu) == 0) { uint16_t sdu_len; + rc = ble_hs_mbuf_pullup_base(om, BLE_L2CAP_SDU_SIZE); + if (rc != 0) { + return rc; + } + sdu_len = get_le16((*om)->om_data); if (sdu_len > rx->mtu) { - /* TODO Disconnect?*/ BLE_HS_LOG(INFO, "error: sdu_len > rx->mtu (%d>%d)\n", sdu_len, rx->mtu); + + /* Disconnect peer with invalid behaviour */ + ble_l2cap_disconnect(chan); return BLE_HS_EBADDATA; } @@ -231,14 +274,25 @@ ble_l2cap_coc_rx_fn(struct ble_l2cap_chan *chan) return 0; } +void +ble_l2cap_coc_set_new_mtu_mps(struct ble_l2cap_chan *chan, uint16_t mtu, uint16_t mps) +{ + chan->my_coc_mps = mps; + chan->coc_rx.mtu = mtu; + chan->initial_credits = mtu / chan->my_coc_mps; + if (mtu % chan->my_coc_mps) { + chan->initial_credits++; + } +} + struct ble_l2cap_chan * -ble_l2cap_coc_chan_alloc(uint16_t conn_handle, uint16_t psm, uint16_t mtu, +ble_l2cap_coc_chan_alloc(struct ble_hs_conn *conn, uint16_t psm, uint16_t mtu, struct os_mbuf *sdu_rx, ble_l2cap_event_fn *cb, void *cb_arg) { struct ble_l2cap_chan *chan; - chan = ble_l2cap_chan_alloc(conn_handle); + chan = ble_l2cap_chan_alloc(conn->bhc_handle); if (!chan) { return NULL; } @@ -246,8 +300,8 @@ ble_l2cap_coc_chan_alloc(uint16_t conn_handle, uint16_t psm, uint16_t mtu, chan->psm = psm; chan->cb = cb; chan->cb_arg = cb_arg; - chan->scid = ble_l2cap_coc_get_cid(); - chan->my_mtu = MYNEWT_VAL(BLE_L2CAP_COC_MPS); + chan->scid = ble_l2cap_coc_get_cid(conn->l2cap_coc_cid_mask); + chan->my_coc_mps = MYNEWT_VAL(BLE_L2CAP_COC_MPS); chan->rx_fn = ble_l2cap_coc_rx_fn; chan->coc_rx.mtu = mtu; chan->coc_rx.sdu = sdu_rx; @@ -255,8 +309,8 @@ ble_l2cap_coc_chan_alloc(uint16_t conn_handle, uint16_t psm, uint16_t mtu, /* Number of credits should allow to send full SDU with on given * L2CAP MTU */ - chan->coc_rx.credits = mtu / chan->my_mtu; - if (mtu % chan->my_mtu) { + chan->coc_rx.credits = mtu / chan->my_coc_mps; + if (mtu % chan->my_coc_mps) { chan->coc_rx.credits++; } @@ -265,7 +319,7 @@ ble_l2cap_coc_chan_alloc(uint16_t conn_handle, uint16_t psm, uint16_t mtu, } int -ble_l2cap_coc_create_srv_chan(uint16_t conn_handle, uint16_t psm, +ble_l2cap_coc_create_srv_chan(struct ble_hs_conn *conn, uint16_t psm, struct ble_l2cap_chan **chan) { struct ble_l2cap_coc_srv *srv; @@ -276,7 +330,7 @@ ble_l2cap_coc_create_srv_chan(uint16_t conn_handle, uint16_t psm, return BLE_HS_ENOTSUP; } - *chan = ble_l2cap_coc_chan_alloc(conn_handle, psm, srv->mtu, NULL, srv->cb, + *chan = ble_l2cap_coc_chan_alloc(conn, psm, srv->mtu, NULL, srv->cb, srv->cb_arg); if (!*chan) { return BLE_HS_ENOMEM; @@ -303,7 +357,7 @@ ble_l2cap_event_coc_disconnected(struct ble_l2cap_chan *chan) } void -ble_l2cap_coc_cleanup_chan(struct ble_l2cap_chan *chan) +ble_l2cap_coc_cleanup_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) { /* PSM 0 is used for fixed channels. */ if (chan->psm == 0) { @@ -312,6 +366,11 @@ ble_l2cap_coc_cleanup_chan(struct ble_l2cap_chan *chan) ble_l2cap_event_coc_disconnected(chan); + if (conn && chan->scid) { + ble_l2cap_clear_used_cid(conn->l2cap_coc_cid_mask, + chan->scid - BLE_L2CAP_COC_CID_START); + } + os_mbuf_free_chain(chan->coc_rx.sdu); os_mbuf_free_chain(chan->coc_tx.sdu); } @@ -364,7 +423,7 @@ ble_l2cap_coc_continue_tx(struct ble_l2cap_chan *chan) } /* Take into account peer MTU */ - len = min(left_to_send, chan->peer_mtu); + len = min(left_to_send, chan->peer_coc_mps); /* Prepare packet */ txom = ble_hs_mbuf_l2cap_pkt(); @@ -540,46 +599,6 @@ ble_l2cap_coc_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx) return ble_l2cap_coc_continue_tx(chan); } -int -ble_l2cap_get_scid(struct ble_l2cap_chan *chan) -{ - if (!chan) { - return 0; - } - - return chan->scid; -} - -int -ble_l2cap_get_dcid(struct ble_l2cap_chan *chan) -{ - if (!chan) { - return 0; - } - - return chan->dcid; -} - -int -ble_l2cap_get_our_mtu(struct ble_l2cap_chan *chan) -{ - if (!chan) { - return 0; - } - - return chan->my_mtu; -} - -int -ble_l2cap_get_peer_mtu(struct ble_l2cap_chan *chan) -{ - if (!chan) { - return 0; - } - - return chan->peer_mtu; -} - int ble_l2cap_coc_init(void) { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc_priv.h index 0a1a97b77..5ebdaa050 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_coc_priv.h @@ -57,25 +57,46 @@ struct ble_l2cap_coc_srv { int ble_l2cap_coc_init(void); int ble_l2cap_coc_create_server(uint16_t psm, uint16_t mtu, ble_l2cap_event_fn *cb, void *cb_arg); -int ble_l2cap_coc_create_srv_chan(uint16_t conn_handle, uint16_t psm, +int ble_l2cap_coc_create_srv_chan(struct ble_hs_conn *conn, uint16_t psm, struct ble_l2cap_chan **chan); -struct ble_l2cap_chan * ble_l2cap_coc_chan_alloc(uint16_t conn_handle, +struct ble_l2cap_chan * ble_l2cap_coc_chan_alloc(struct ble_hs_conn *conn, uint16_t psm, uint16_t mtu, struct os_mbuf *sdu_rx, ble_l2cap_event_fn *cb, void *cb_arg); -void ble_l2cap_coc_cleanup_chan(struct ble_l2cap_chan *chan); +void ble_l2cap_coc_cleanup_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); void ble_l2cap_coc_le_credits_update(uint16_t conn_handle, uint16_t dcid, uint16_t credits); int ble_l2cap_coc_recv_ready(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_rx); int ble_l2cap_coc_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx); +void ble_l2cap_coc_set_new_mtu_mps(struct ble_l2cap_chan *chan, uint16_t mtu, uint16_t mps); #else -#define ble_l2cap_coc_init() 0 -#define ble_l2cap_coc_create_server(psm, mtu, cb, cb_arg) BLE_HS_ENOTSUP -#define ble_l2cap_coc_recv_ready(chan, sdu_rx) BLE_HS_ENOTSUP -#define ble_l2cap_coc_cleanup_chan(chan) -#define ble_l2cap_coc_send(chan, sdu_tx) BLE_HS_ENOTSUP +static inline int +ble_l2cap_coc_init(void) { + return 0; +} + +static inline int +ble_l2cap_coc_create_server(uint16_t psm, uint16_t mtu, + ble_l2cap_event_fn *cb, void *cb_arg) { + return BLE_HS_ENOTSUP; +} + +static inline int +ble_l2cap_coc_recv_ready(struct ble_l2cap_chan *chan, + struct os_mbuf *sdu_rx) { + return BLE_HS_ENOTSUP; +} + +static inline void +ble_l2cap_coc_cleanup_chan(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan) { +} + +static inline int +ble_l2cap_coc_send(struct ble_l2cap_chan *chan, struct os_mbuf *sdu_tx) { + return BLE_HS_ENOTSUP; +} #endif #ifdef __cplusplus diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_priv.h index 640974d2a..e3409743b 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_priv.h @@ -65,8 +65,20 @@ struct ble_l2cap_chan { uint16_t conn_handle; uint16_t dcid; uint16_t scid; - uint16_t my_mtu; - uint16_t peer_mtu; /* 0 if not exchanged. */ + + /* Unions just to avoid confusion on MPS/MTU. + * In CoC context, L2CAP MTU is MPS + */ + union { + uint16_t my_mtu; + uint16_t my_coc_mps; + }; + + union { + uint16_t peer_mtu; + uint16_t peer_coc_mps; + }; + ble_l2cap_chan_flags flags; struct os_mbuf *rx_buf; @@ -102,7 +114,7 @@ struct os_mbuf *ble_l2cap_prepend_hdr(struct os_mbuf *om, uint16_t cid, uint16_t len); struct ble_l2cap_chan *ble_l2cap_chan_alloc(uint16_t conn_handle); -void ble_l2cap_chan_free(struct ble_l2cap_chan *chan); +void ble_l2cap_chan_free(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); bool ble_l2cap_is_mtu_req_sent(const struct ble_l2cap_chan *chan); @@ -118,6 +130,13 @@ void ble_l2cap_remove_rx(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan); int ble_l2cap_init(void); +/* Below experimental API is available when BLE_VERSION >= 52 */ +int ble_l2cap_enhanced_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg); +int ble_l2cap_reconfig(struct ble_l2cap_chan *chans[], uint8_t num, uint16_t new_mtu); + #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig.c index bc73d954a..58f96b0f3 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig.c @@ -56,8 +56,17 @@ #define BLE_L2CAP_SIG_PROC_OP_UPDATE 0 #define BLE_L2CAP_SIG_PROC_OP_CONNECT 1 -#define BLE_L2CAP_SIG_PROC_OP_DISCONNECT 2 -#define BLE_L2CAP_SIG_PROC_OP_MAX 3 +#define BLE_L2CAP_SIG_PROC_OP_RECONFIG 2 +#define BLE_L2CAP_SIG_PROC_OP_DISCONNECT 3 +#define BLE_L2CAP_SIG_PROC_OP_MAX 4 + +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) +#define BLE_L2CAP_ECOC_MIN_MTU (64) + +#define BLE_L2CAP_MAX_COC_CONN_REQ (5) +#else +#define BLE_L2CAP_MAX_COC_CONN_REQ (1) +#endif struct ble_l2cap_sig_proc { STAILQ_ENTRY(ble_l2cap_sig_proc) next; @@ -73,11 +82,20 @@ struct ble_l2cap_sig_proc { void *cb_arg; } update; struct { - struct ble_l2cap_chan *chan; + uint8_t chan_cnt; + struct ble_l2cap_chan *chan[BLE_L2CAP_MAX_COC_CONN_REQ]; } connect; struct { struct ble_l2cap_chan *chan; } disconnect; +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) + struct { + uint8_t cid_cnt; + uint16_t cids[BLE_L2CAP_MAX_COC_CONN_REQ]; + uint16_t new_mps; + uint16_t new_mtu; + } reconfig; +#endif }; }; @@ -105,7 +123,19 @@ static ble_l2cap_sig_rx_fn ble_l2cap_sig_le_credits_rx; #define ble_l2cap_sig_coc_rsp_rx ble_l2cap_sig_rx_noop #define ble_l2cap_sig_disc_rsp_rx ble_l2cap_sig_rx_noop #define ble_l2cap_sig_disc_req_rx ble_l2cap_sig_rx_noop -#define ble_l2cap_sig_le_credits_rx ble_l2cap_sig_rx_noop +#define ble_l2cap_sig_le_credits_rx ble_l2cap_sig_rx_noop +#endif + +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) +static ble_l2cap_sig_rx_fn ble_l2cap_sig_credit_base_con_req_rx; +static ble_l2cap_sig_rx_fn ble_l2cap_sig_credit_base_con_rsp_rx; +static ble_l2cap_sig_rx_fn ble_l2cap_sig_credit_base_reconfig_req_rx; +static ble_l2cap_sig_rx_fn ble_l2cap_sig_credit_base_reconfig_rsp_rx; +#else +#define ble_l2cap_sig_credit_base_con_req_rx ble_l2cap_sig_rx_noop +#define ble_l2cap_sig_credit_base_con_rsp_rx ble_l2cap_sig_rx_noop +#define ble_l2cap_sig_credit_base_reconfig_req_rx ble_l2cap_sig_rx_noop +#define ble_l2cap_sig_credit_base_reconfig_rsp_rx ble_l2cap_sig_rx_noop #endif static ble_l2cap_sig_rx_fn * const ble_l2cap_sig_dispatch[] = { @@ -121,9 +151,13 @@ static ble_l2cap_sig_rx_fn * const ble_l2cap_sig_dispatch[] = { [BLE_L2CAP_SIG_OP_MOVE_CHAN_CONF_RSP] = ble_l2cap_sig_rx_noop, [BLE_L2CAP_SIG_OP_UPDATE_REQ] = ble_l2cap_sig_update_req_rx, [BLE_L2CAP_SIG_OP_UPDATE_RSP] = ble_l2cap_sig_update_rsp_rx, - [BLE_L2CAP_SIG_OP_CREDIT_CONNECT_REQ] = ble_l2cap_sig_coc_req_rx, - [BLE_L2CAP_SIG_OP_CREDIT_CONNECT_RSP] = ble_l2cap_sig_coc_rsp_rx, + [BLE_L2CAP_SIG_OP_LE_CREDIT_CONNECT_REQ] = ble_l2cap_sig_coc_req_rx, + [BLE_L2CAP_SIG_OP_LE_CREDIT_CONNECT_RSP] = ble_l2cap_sig_coc_rsp_rx, [BLE_L2CAP_SIG_OP_FLOW_CTRL_CREDIT] = ble_l2cap_sig_le_credits_rx, + [BLE_L2CAP_SIG_OP_CREDIT_CONNECT_REQ] = ble_l2cap_sig_credit_base_con_req_rx, + [BLE_L2CAP_SIG_OP_CREDIT_CONNECT_RSP] = ble_l2cap_sig_credit_base_con_rsp_rx, + [BLE_L2CAP_SIG_OP_CREDIT_RECONFIG_REQ] = ble_l2cap_sig_credit_base_reconfig_req_rx, + [BLE_L2CAP_SIG_OP_CREDIT_RECONFIG_RSP] = ble_l2cap_sig_credit_base_reconfig_rsp_rx, }; static uint8_t ble_l2cap_sig_cur_id; @@ -286,6 +320,7 @@ ble_l2cap_sig_proc_extract(uint16_t conn_handle, uint8_t op, } break; } + prev = proc; } ble_hs_unlock(); @@ -611,29 +646,461 @@ ble_l2cap_event_coc_accept(struct ble_l2cap_chan *chan, uint16_t peer_sdu_size) static void ble_l2cap_sig_coc_connect_cb(struct ble_l2cap_sig_proc *proc, int status) { + struct ble_hs_conn *conn; struct ble_l2cap_chan *chan; + int i; + bool some_not_connected = false; if (!proc) { return; } - chan = proc->connect.chan; - if (!chan || !chan->cb) { + for (i = 0; i < proc->connect.chan_cnt; i++) { + chan = proc->connect.chan[i]; + if (!chan || !chan->cb) { + continue; + } + + if ((status == 0) && (chan->dcid != 0)) { + ble_l2cap_event_coc_connected(chan, status); + /* Let's forget about connected channel now. + * Not connected will be freed later on. + */ + proc->connect.chan[i] = NULL; + continue; + } + some_not_connected = true; + ble_l2cap_event_coc_connected(chan, status ? status : BLE_HS_EREJECT); + } + + if (!some_not_connected) { return; } - ble_l2cap_event_coc_connected(chan, status); + /* Free not connected channels*/ - if (status) { - /* Normally in channel free we send disconnected event to application. - * However in case on error during creation connection we send connected - * event with error status. To avoid additional disconnected event lets - * clear callbacks since we don't needed it anymore.*/ - chan->cb = NULL; - ble_l2cap_chan_free(chan); + ble_hs_lock(); + conn = ble_hs_conn_find(chan->conn_handle); + for (i = 0; i < proc->connect.chan_cnt; i++) { + chan = proc->connect.chan[i]; + if (chan) { + /* Normally in channel free we send disconnected event to application. + * However in case on error during creation connection we send connected + * event with error status. To avoid additional disconnected event lets + * clear callbacks since we don't needed it anymore. + */ + chan->cb = NULL; + ble_l2cap_chan_free(conn, chan); + } + } + ble_hs_unlock(); +} + +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) +static void +ble_l2cap_event_coc_reconfigured(uint16_t conn_handle, uint16_t status, + struct ble_l2cap_chan *chan, bool peer) +{ + struct ble_l2cap_event event = { }; + + if (peer) { + event.type = BLE_L2CAP_EVENT_COC_PEER_RECONFIGURED; + } else { + event.type = BLE_L2CAP_EVENT_COC_RECONFIG_COMPLETED; + } + event.reconfigured.conn_handle = conn_handle; + event.reconfigured.chan = chan; + event.reconfigured.status = status; + + chan->cb(&event, chan->cb_arg); +} + +static int +ble_l2cap_sig_credit_base_reconfig_req_rx(uint16_t conn_handle, + struct ble_l2cap_sig_hdr *hdr, + struct os_mbuf **om) +{ + struct ble_l2cap_chan *chan[BLE_L2CAP_MAX_COC_CONN_REQ] = {0}; + struct ble_l2cap_sig_credit_base_reconfig_req *req; + struct ble_l2cap_sig_credit_base_reconfig_rsp *rsp; + struct ble_hs_conn *conn; + struct os_mbuf *txom; + int i; + int rc; + uint8_t cid_cnt; + uint8_t reduction_mps = 0; + + rc = ble_hs_mbuf_pullup_base(om, hdr->length); + if (rc != 0) { + return rc; + } + + ble_hs_lock(); + conn = ble_hs_conn_find(conn_handle); + if (!conn) { + ble_hs_unlock(); + return 0; + } + + rsp = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_CREDIT_RECONFIG_RSP, + hdr->identifier, sizeof(*rsp) , &txom); + if (!rsp) { + /* TODO: Reuse request buffer for the response. For now in such a case + * remote will timeout. + */ + BLE_HS_LOG(ERROR, "No memory for the response\n"); + ble_hs_unlock(); + return 0; + } + + if (hdr->length <= sizeof(*req)) { + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_UNACCAPTED_PARAM); + goto failed; + } + + req = (struct ble_l2cap_sig_credit_base_reconfig_req *)(*om)->om_data; + + if ((req->mps < BLE_L2CAP_ECOC_MIN_MTU) || (req->mtu < BLE_L2CAP_ECOC_MIN_MTU)) { + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_UNACCAPTED_PARAM); + goto failed; + } + + /* Assume request will succeed. If not, result will be updated */ + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_SUCCEED); + + cid_cnt = (hdr->length - sizeof(*req)) / sizeof(uint16_t); + if (cid_cnt > BLE_L2CAP_MAX_COC_CONN_REQ) { + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_UNACCAPTED_PARAM); + goto failed; + } + + for (i = 0; i < cid_cnt; i++) { + chan[i] = ble_hs_conn_chan_find_by_dcid(conn, req->dcids[i]); + if (!chan[i]) { + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_INVALID_DCID); + goto failed; + } + + if (chan[i]->peer_coc_mps > req->mps) { + reduction_mps++; + if (reduction_mps > 1) { + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_REDUCTION_MPS_NOT_ALLOWED); + goto failed; + } + } + + if (chan[i]->coc_tx.mtu > req->mtu) { + rsp->result = htole16(BLE_L2CAP_ERR_RECONFIG_REDUCTION_MTU_NOT_ALLOWED); + goto failed; + } + } + + ble_hs_unlock(); + + for (i = 0; i < cid_cnt; i++) { + chan[i]->coc_tx.mtu = req->mtu; + chan[i]->peer_coc_mps = req->mps; + ble_l2cap_event_coc_reconfigured(conn_handle, 0, chan[i], true); + } + + ble_l2cap_sig_tx(conn_handle, txom); + return 0; + +failed: + ble_hs_unlock(); + ble_l2cap_sig_tx(conn_handle, txom); + return 0; +} + +static void +ble_l2cap_sig_coc_reconfig_cb(struct ble_l2cap_sig_proc *proc, int status) +{ + int i; + struct ble_l2cap_chan *chan[BLE_L2CAP_MAX_COC_CONN_REQ] = {0}; + struct ble_hs_conn *conn; + + ble_hs_lock(); + + conn = ble_hs_conn_find(proc->conn_handle); + if (!conn) { + ble_hs_unlock(); + return; + } + + for (i = 0; i< proc->reconfig.cid_cnt; i++) { + chan[i] = ble_hs_conn_chan_find_by_scid(conn, proc->reconfig.cids[i]); + if (status == 0) { + ble_l2cap_coc_set_new_mtu_mps(chan[i], proc->reconfig.new_mtu, proc->reconfig.new_mps); + } + } + + ble_hs_unlock(); + + for (i = 0; i < proc->reconfig.cid_cnt; i++) { + ble_l2cap_event_coc_reconfigured(proc->conn_handle, status, chan[i], false); } } +static int +ble_l2cap_sig_credit_base_reconfig_rsp_rx(uint16_t conn_handle, + struct ble_l2cap_sig_hdr *hdr, + struct os_mbuf **om) +{ + struct ble_l2cap_sig_proc *proc; + struct ble_l2cap_sig_credit_base_reconfig_rsp *rsp; + int rc; + + proc = ble_l2cap_sig_proc_extract(conn_handle, + BLE_L2CAP_SIG_PROC_OP_RECONFIG, + hdr->identifier); + if (!proc) { + return 0; + } + + rc = ble_hs_mbuf_pullup_base(om, hdr->length); + if (rc != 0) { + return rc; + } + + rsp = (struct ble_l2cap_sig_credit_base_reconfig_rsp *)(*om)->om_data; + ble_l2cap_sig_coc_reconfig_cb(proc, (rsp->result > 0) ? BLE_HS_EREJECT : 0); + + return 0; +} + +static int +ble_l2cap_sig_credit_base_con_req_rx(uint16_t conn_handle, + struct ble_l2cap_sig_hdr *hdr, + struct os_mbuf **om) +{ + int rc; + struct ble_l2cap_sig_credit_base_connect_req *req; + struct os_mbuf *txom; + struct ble_l2cap_sig_credit_base_connect_rsp *rsp; + struct ble_l2cap_chan *chans[5] = { 0 }; + struct ble_hs_conn *conn; + uint16_t scid; + uint8_t num_of_scids; + uint8_t chan_created = 0; + int i; + uint8_t len; + + rc = ble_hs_mbuf_pullup_base(om, hdr->length); + if (rc != 0) { + return rc; + } + + len = (hdr->length > sizeof(*req)) ? hdr->length : sizeof(*req); + + rsp = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_CREDIT_CONNECT_RSP, + hdr->identifier, len , &txom); + if (!rsp) { + /* Well, nothing smart we can do if there is no memory for response. + * Remote will timeout. + */ + return 0; + } + + ble_hs_lock(); + + memset(rsp, 0, len); + + /* Initial dummy values in case of error, just to satisfy PTS */ + rsp->credits = htole16(1); + rsp->mps = htole16(BLE_L2CAP_ECOC_MIN_MTU); + rsp->mtu = htole16(BLE_L2CAP_ECOC_MIN_MTU); + + if (hdr->length <= sizeof(*req)) { + rsp->result = htole16(BLE_L2CAP_COC_ERR_INVALID_PARAMETERS); + goto failed; + } + + req = (struct ble_l2cap_sig_credit_base_connect_req *)(*om)->om_data; + + num_of_scids = (hdr->length - sizeof(*req)) / sizeof(uint16_t); + if (num_of_scids > 5) { + rsp->result = htole16(BLE_L2CAP_COC_ERR_INVALID_PARAMETERS); + goto failed; + } + + if ((req->mtu < BLE_L2CAP_ECOC_MIN_MTU) || (req->mps < BLE_L2CAP_ECOC_MIN_MTU)) { + rsp->result = htole16(BLE_L2CAP_COC_ERR_INVALID_PARAMETERS); + goto failed; + } + + conn = ble_hs_conn_find_assert(conn_handle); + + /* First verify that provided SCIDs are good */ + for (i = 0; i < num_of_scids; i++) { + scid = le16toh(req->scids[i]); + if (scid < BLE_L2CAP_COC_CID_START || scid > BLE_L2CAP_COC_CID_END) { + rsp->result = htole16(BLE_L2CAP_COC_ERR_INVALID_SOURCE_CID); + goto failed; + } + } + + /* Let us try to connect channels */ + for (i = 0; i < num_of_scids; i++) { + /* Verify CID. Note, scid in the request is dcid for out local channel */ + scid = le16toh(req->scids[i]); + chans[i] = ble_hs_conn_chan_find_by_dcid(conn, scid); + if (chans[i]) { + rsp->result = htole16(BLE_L2CAP_COC_ERR_SOURCE_CID_ALREADY_USED); + rsp->dcids[i] = htole16(chans[i]->scid); + continue; + } + + rc = ble_l2cap_coc_create_srv_chan(conn, le16toh(req->psm), &chans[i]); + if (rc != 0) { + if (i == 0) { + /* In case it is very first channel we cannot create it means PSM is incorrect + * or we are out of resources. Just send a response now. + */ + rsp->result = htole16(ble_l2cap_sig_ble_hs_err2coc_err(rc)); + goto failed; + } else { + /* We cannot create number of channels req by peer due to limited resources. */ + rsp->result = htole16(BLE_L2CAP_COC_ERR_NO_RESOURCES); + goto done; + } + } + + /* Fill up remote configuration. Note MPS is the L2CAP MTU*/ + chans[i]->dcid = scid; + chans[i]->peer_coc_mps = le16toh(req->mps); + chans[i]->coc_tx.credits = le16toh(req->credits); + chans[i]->coc_tx.mtu = le16toh(req->mtu); + + ble_hs_conn_chan_insert(conn, chans[i]); + /* Sending event to the app. Unlock hs */ + ble_hs_unlock(); + + rc = ble_l2cap_event_coc_accept(chans[i], le16toh(req->mtu)); + if (rc == 0) { + rsp->dcids[i] = htole16(chans[i]->scid); + chan_created++; + if (chan_created == 1) { + /* We need to set it once as there are same initial parameters + * for all the channels + */ + rsp->credits = htole16(chans[i]->coc_rx.credits); + rsp->mps = htole16(chans[i]->my_mtu); + rsp->mtu = htole16(chans[i]->coc_rx.mtu); + } + } else { + /* Make sure we do not send disconnect event when removing channel */ + chans[i]->cb = NULL; + + ble_hs_lock(); + conn = ble_hs_conn_find_assert(conn_handle); + ble_hs_conn_delete_chan(conn, chans[i]); + chans[i] = NULL; + rsp->result = htole16(ble_l2cap_sig_ble_hs_err2coc_err(rc)); + rc = 0; + ble_hs_unlock(); + } + + ble_hs_lock(); + conn = ble_hs_conn_find_assert(conn_handle); + } + +done: + ble_hs_unlock(); + rc = ble_l2cap_sig_tx(conn_handle, txom); + if (rc != 0) { + ble_hs_lock(); + conn = ble_hs_conn_find_assert(conn_handle); + for (i = 0; i < num_of_scids; i++) { + if (chans[i]) { + ble_hs_conn_delete_chan(conn, chans[i]); + } + } + ble_hs_unlock(); + return 0; + } + + /* Notify user about connection status */ + for (i = 0; i < num_of_scids; i++) { + if (chans[i]) { + ble_l2cap_event_coc_connected(chans[i], rc); + } + } + + return 0; + +failed: + ble_hs_unlock(); + ble_l2cap_sig_tx(conn_handle, txom); + return 0; +} + +static int +ble_l2cap_sig_credit_base_con_rsp_rx(uint16_t conn_handle, + struct ble_l2cap_sig_hdr *hdr, + struct os_mbuf **om) +{ + struct ble_l2cap_sig_proc *proc; + struct ble_l2cap_sig_credit_base_connect_rsp *rsp; + struct ble_l2cap_chan *chan; + struct ble_hs_conn *conn; + int rc; + int i; + +#if !BLE_MONITOR + BLE_HS_LOG(DEBUG, "L2CAP LE COC connection response received\n"); +#endif + + proc = ble_l2cap_sig_proc_extract(conn_handle, + BLE_L2CAP_SIG_PROC_OP_CONNECT, + hdr->identifier); + if (!proc) { + return 0; + } + + rc = ble_hs_mbuf_pullup_base(om, hdr->length); + if (rc != 0) { + goto done; + } + + rsp = (struct ble_l2cap_sig_credit_base_connect_rsp *)(*om)->om_data; + + if (rsp->result) { + rc = ble_l2cap_sig_coc_err2ble_hs_err(le16toh(rsp->result)); + goto done; + } + + ble_hs_lock(); + conn = ble_hs_conn_find(conn_handle); + assert(conn != NULL); + + for (i = 0; i < proc->connect.chan_cnt; i++) { + chan = proc->connect.chan[i]; + if (rsp->dcids[i] == 0) { + /* Channel rejected, dont put it on the list. + * User will get notified later in that function + */ + chan->dcid = 0; + continue; + } + chan->peer_coc_mps = le16toh(rsp->mps); + chan->dcid = le16toh(rsp->dcids[i]); + chan->coc_tx.mtu = le16toh(rsp->mtu); + chan->coc_tx.credits = le16toh(rsp->credits); + + ble_hs_conn_chan_insert(conn, chan); + } + + ble_hs_unlock(); + +done: + ble_l2cap_sig_coc_connect_cb(proc, rc); + ble_l2cap_sig_proc_free(proc); + + /* Silently ignore errors as this is response signal */ + return 0; +} +#endif + static int ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, struct os_mbuf **om) @@ -651,7 +1118,7 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, return rc; } - rsp = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_CREDIT_CONNECT_RSP, + rsp = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_LE_CREDIT_CONNECT_RSP, hdr->identifier, sizeof(*rsp), &txom); if (!rsp) { /* Well, nothing smart we can do if there is no memory for response. @@ -682,7 +1149,7 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, goto failed; } - rc = ble_l2cap_coc_create_srv_chan(conn_handle, le16toh(req->psm), &chan); + rc = ble_l2cap_coc_create_srv_chan(conn, le16toh(req->psm), &chan); if (rc != 0) { uint16_t coc_err = ble_l2cap_sig_ble_hs_err2coc_err(rc); rsp->result = htole16(coc_err); @@ -692,7 +1159,7 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, /* Fill up remote configuration. Note MPS is the L2CAP MTU*/ chan->dcid = scid; - chan->peer_mtu = le16toh(req->mps); + chan->peer_coc_mps = le16toh(req->mps); chan->coc_tx.credits = le16toh(req->credits); chan->coc_tx.mtu = le16toh(req->mtu); @@ -707,6 +1174,7 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, chan->cb = NULL; ble_hs_lock(); + conn = ble_hs_conn_find_assert(conn_handle); ble_hs_conn_delete_chan(conn, chan); ble_hs_unlock(); rsp->result = htole16(coc_err); @@ -715,13 +1183,14 @@ ble_l2cap_sig_coc_req_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, rsp->dcid = htole16(chan->scid); rsp->credits = htole16(chan->coc_rx.credits); - rsp->mps = htole16(chan->my_mtu); + rsp->mps = htole16(chan->my_coc_mps); rsp->mtu = htole16(chan->coc_rx.mtu); rsp->result = htole16(BLE_L2CAP_COC_ERR_CONNECTION_SUCCESS); rc = ble_l2cap_sig_tx(conn_handle, txom); if (rc != 0) { ble_hs_lock(); + conn = ble_hs_conn_find_assert(conn_handle); ble_hs_conn_delete_chan(conn, chan); ble_hs_unlock(); return 0; @@ -765,7 +1234,7 @@ ble_l2cap_sig_coc_rsp_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, rsp = (struct ble_l2cap_sig_le_con_rsp *)(*om)->om_data; - chan = proc->connect.chan; + chan = proc->connect.chan[0]; if (rsp->result) { rc = ble_l2cap_sig_coc_err2ble_hs_err(le16toh(rsp->result)); @@ -775,7 +1244,7 @@ ble_l2cap_sig_coc_rsp_rx(uint16_t conn_handle, struct ble_l2cap_sig_hdr *hdr, /* Fill up remote configuration * Note MPS is the L2CAP MTU */ - chan->peer_mtu = le16toh(rsp->mps); + chan->peer_coc_mps = le16toh(rsp->mps); chan->dcid = le16toh(rsp->dcid); chan->coc_tx.mtu = le16toh(rsp->mtu); chan->coc_tx.credits = le16toh(rsp->credits); @@ -820,7 +1289,7 @@ ble_l2cap_sig_coc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, return BLE_HS_ENOTCONN; } - chan = ble_l2cap_coc_chan_alloc(conn_handle, psm, mtu, sdu_rx, cb, cb_arg); + chan = ble_l2cap_coc_chan_alloc(conn, psm, mtu, sdu_rx, cb, cb_arg); if (!chan) { ble_hs_unlock(); return BLE_HS_ENOMEM; @@ -828,7 +1297,7 @@ ble_l2cap_sig_coc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, proc = ble_l2cap_sig_proc_alloc(); if (!proc) { - ble_l2cap_chan_free(chan); + ble_l2cap_chan_free(conn, chan); ble_hs_unlock(); return BLE_HS_ENOMEM; } @@ -836,34 +1305,193 @@ ble_l2cap_sig_coc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, proc->op = BLE_L2CAP_SIG_PROC_OP_CONNECT; proc->id = ble_l2cap_sig_next_id(); proc->conn_handle = conn_handle; - proc->connect.chan = chan; + proc->connect.chan[0] = chan; + proc->connect.chan_cnt = 1; - req = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_CREDIT_CONNECT_REQ, proc->id, + req = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_LE_CREDIT_CONNECT_REQ, proc->id, sizeof(*req), &txom); if (!req) { - ble_l2cap_chan_free(chan); + ble_l2cap_chan_free(conn, chan); ble_hs_unlock(); - return BLE_HS_ENOMEM; + rc = BLE_HS_ENOMEM; + /* Goto done to clear proc */ + goto done; } req->psm = htole16(psm); req->scid = htole16(chan->scid); req->mtu = htole16(chan->coc_rx.mtu); - req->mps = htole16(chan->my_mtu); + req->mps = htole16(chan->my_coc_mps); req->credits = htole16(chan->coc_rx.credits); ble_hs_unlock(); rc = ble_l2cap_sig_tx(proc->conn_handle, txom); if (rc != 0) { - ble_l2cap_chan_free(chan); + ble_hs_lock(); + conn = ble_hs_conn_find_assert(conn_handle); + ble_l2cap_chan_free(conn, chan); + ble_hs_unlock(); } +done: ble_l2cap_sig_process_status(proc, rc); return rc; } +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) +int +ble_l2cap_sig_ecoc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg) +{ + struct ble_hs_conn *conn; + struct ble_l2cap_sig_proc *proc; + struct ble_l2cap_chan *chan = NULL; + struct os_mbuf *txom; + struct ble_l2cap_sig_credit_base_connect_req *req; + int rc; + int i; + int j; + + if (!sdu_rx || !cb) { + return BLE_HS_EINVAL; + } + + ble_hs_lock(); + conn = ble_hs_conn_find(conn_handle); + + if (!conn) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + proc = ble_l2cap_sig_proc_alloc(); + if (!proc) { + ble_hs_unlock(); + return BLE_HS_ENOMEM; + } + + proc->op = BLE_L2CAP_SIG_PROC_OP_CONNECT; + proc->id = ble_l2cap_sig_next_id(); + proc->conn_handle = conn_handle; + + req = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_CREDIT_CONNECT_REQ, proc->id, + sizeof(*req) + num * sizeof(uint16_t), &txom); + if (!req) { + ble_hs_unlock(); + rc = BLE_HS_ENOMEM; + /* Goto done to clear proc */ + goto done; + } + + for (i = 0; i < num; i++) { + chan = ble_l2cap_coc_chan_alloc(conn, psm, mtu, sdu_rx[i], cb, cb_arg); + if (!chan) { + /* Clear request buffer */ + os_mbuf_free_chain(txom); + + for (j = 0; j < i; j++) { + /* Clear callback to make sure "Disconnected event" to the user */ + chan[j].cb = NULL; + ble_l2cap_chan_free(conn, proc->connect.chan[j]); + } + ble_hs_unlock(); + rc = BLE_HS_ENOMEM; + goto done; + } + proc->connect.chan[i] = chan; + } + proc->connect.chan_cnt = num; + + req->psm = htole16(psm); + req->mtu = htole16(chan->coc_rx.mtu); + req->mps = htole16(chan->my_mtu); + req->credits = htole16(chan->coc_rx.credits); + for (i = 0; i < num; i++) { + req->scids[i] = htole16(proc->connect.chan[i]->scid); + } + + ble_hs_unlock(); + + rc = ble_l2cap_sig_tx(proc->conn_handle, txom); + +done: + ble_l2cap_sig_process_status(proc, rc); + + return rc; +} + +int +ble_l2cap_sig_coc_reconfig(uint16_t conn_handle, struct ble_l2cap_chan *chans[], + uint8_t num, uint16_t new_mtu) +{ + struct ble_hs_conn *conn; + struct ble_l2cap_sig_proc *proc; + struct os_mbuf *txom; + struct ble_l2cap_sig_credit_base_reconfig_req *req; + int rc; + int i; + + ble_hs_lock(); + conn = ble_hs_conn_find(conn_handle); + + if (!conn) { + ble_hs_unlock(); + return BLE_HS_ENOTCONN; + } + + proc = ble_l2cap_sig_proc_alloc(); + if (!proc) { + ble_hs_unlock(); + return BLE_HS_ENOMEM; + } + + for (i = 0; i < num; i++) { + if (ble_hs_conn_chan_exist(conn, chans[i])) { + proc->reconfig.cids[i] = chans[i]->scid; + } else { + ble_hs_unlock(); + rc = BLE_HS_ENOMEM; + goto done; + } + } + + proc->op = BLE_L2CAP_SIG_PROC_OP_RECONFIG; + proc->reconfig.cid_cnt = num; + proc->reconfig.new_mtu = new_mtu; + proc->reconfig.new_mps = MYNEWT_VAL(BLE_L2CAP_COC_MPS); + proc->id = ble_l2cap_sig_next_id(); + proc->conn_handle = conn_handle; + + req = ble_l2cap_sig_cmd_get(BLE_L2CAP_SIG_OP_CREDIT_RECONFIG_REQ, proc->id, + sizeof(*req) + num * sizeof(uint16_t), &txom); + if (!req) { + ble_hs_unlock(); + rc = BLE_HS_ENOMEM; + goto done; + } + + /* For now we allow to change CoC MTU only.*/ + req->mtu = htole16(proc->reconfig.new_mtu); + req->mps = htole16(proc->reconfig.new_mps); + + for (i = 0; i < num; i++) { + req->dcids[i] = htole16(proc->reconfig.cids[i]); + } + + ble_hs_unlock(); + + rc = ble_l2cap_sig_tx(proc->conn_handle, txom); + +done: + ble_l2cap_sig_process_status(proc, rc); + + return rc; +} +#endif + /***************************************************************************** * $disconnect * *****************************************************************************/ @@ -945,11 +1573,11 @@ ble_l2cap_sig_coc_disconnect_cb(struct ble_l2cap_sig_proc *proc, int status) done: ble_hs_lock(); - conn = ble_hs_conn_find(chan->conn_handle); + conn = ble_hs_conn_find_assert(chan->conn_handle); if (conn) { ble_hs_conn_delete_chan(conn, chan); } else { - ble_l2cap_chan_free(chan); + ble_l2cap_chan_free(NULL, chan); } ble_hs_unlock(); } @@ -1241,6 +1869,11 @@ ble_l2cap_sig_conn_broken(uint16_t conn_handle, int reason) case BLE_L2CAP_SIG_PROC_OP_DISCONNECT: ble_l2cap_sig_coc_disconnect_cb(proc, reason); break; +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) + case BLE_L2CAP_SIG_PROC_OP_RECONFIG: + ble_l2cap_sig_coc_reconfig_cb(proc, reason); + break; +#endif #endif } diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig_priv.h index 1a6fb8293..a698cd0d8 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_l2cap_sig_priv.h @@ -74,6 +74,32 @@ struct ble_l2cap_sig_le_con_rsp { uint16_t result; } __attribute__((packed)); +struct ble_l2cap_sig_credit_base_connect_req { + uint16_t psm; + uint16_t mtu; + uint16_t mps; + uint16_t credits; + uint16_t scids[0]; +} __attribute__((packed)); + +struct ble_l2cap_sig_credit_base_connect_rsp { + uint16_t mtu; + uint16_t mps; + uint16_t credits; + uint16_t result; + uint16_t dcids[0]; +} __attribute__((packed)); + +struct ble_l2cap_sig_credit_base_reconfig_req { + uint16_t mtu; + uint16_t mps; + uint16_t dcids[0]; +} __attribute__((packed)); + +struct ble_l2cap_sig_credit_base_reconfig_rsp { + uint16_t result; +} __attribute__((packed)); + struct ble_l2cap_sig_disc_req { uint16_t dcid; uint16_t scid; @@ -107,9 +133,43 @@ int ble_l2cap_sig_disconnect(struct ble_l2cap_chan *chan); int ble_l2cap_sig_le_credits(uint16_t conn_handle, uint16_t scid, uint16_t credits); #else -#define ble_l2cap_sig_coc_connect(conn_handle, psm, mtu, sdu_rx, cb, cb_arg) \ - BLE_HS_ENOTSUP -#define ble_l2cap_sig_disconnect(chan) BLE_HS_ENOTSUP +static inline int +ble_l2cap_sig_coc_connect(uint16_t conn_handle, uint16_t psm, uint16_t mtu, + struct os_mbuf *sdu_rx, + ble_l2cap_event_fn *cb, void *cb_arg) +{ + return BLE_HS_ENOTSUP; +} + +static inline int +ble_l2cap_sig_disconnect(struct ble_l2cap_chan *chan) +{ + return BLE_HS_ENOTSUP; +} +#endif + +#if MYNEWT_VAL(BLE_L2CAP_ENHANCED_COC) +int ble_l2cap_sig_ecoc_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg); +int ble_l2cap_sig_coc_reconfig(uint16_t conn_handle, struct ble_l2cap_chan *chans[], + uint8_t num, uint16_t new_mtu); +#else +static inline int +ble_l2cap_sig_ecoc_connect(uint16_t conn_handle, + uint16_t psm, uint16_t mtu, + uint8_t num, struct os_mbuf *sdu_rx[], + ble_l2cap_event_fn *cb, void *cb_arg) +{ + return BLE_HS_ENOTSUP; +} +static inline int +ble_l2cap_sig_coc_reconfig(uint16_t conn_handle, struct ble_l2cap_chan *chans[], + uint8_t num, uint16_t new_mtu) +{ + return BLE_HS_ENOTSUP; +} #endif void ble_l2cap_sig_conn_broken(uint16_t conn_handle, int reason); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm.c index 6fa6f00c4..8422c044f 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm.c @@ -95,6 +95,14 @@ static ble_sm_rx_fn * const ble_sm_dispatch[] = { #endif }; +struct hci_start_encrypt +{ + uint16_t connection_handle; + uint16_t encrypted_diversifier; + uint64_t random_number; + uint8_t long_term_key[16]; +}; + typedef void ble_sm_state_fn(struct ble_sm_proc *proc, struct ble_sm_result *res, void *arg); @@ -575,7 +583,8 @@ ble_sm_persist_keys(struct ble_sm_proc *proc) } } else { peer_addr = conn->bhc_peer_addr; - peer_addr.type = ble_hs_misc_addr_type_to_id(conn->bhc_peer_addr.type); + peer_addr.type = + ble_hs_misc_peer_addr_type_to_id(conn->bhc_peer_addr.type); } ble_hs_unlock(); @@ -758,6 +767,9 @@ ble_sm_ioact_state(uint8_t action) case BLE_SM_IOACT_NUMCMP: return BLE_SM_PROC_STATE_DHKEY_CHECK; + case BLE_SM_IOACT_OOB_SC: + return BLE_SM_PROC_STATE_RANDOM; + case BLE_SM_IOACT_OOB: case BLE_SM_IOACT_INPUT: case BLE_SM_IOACT_DISP: @@ -815,13 +827,17 @@ ble_sm_pair_fail_tx(uint16_t conn_handle, uint8_t reason) { struct ble_sm_pair_fail *cmd; struct os_mbuf *txom; + int rc; BLE_HS_DBG_ASSERT(reason > 0 && reason < BLE_SM_ERR_MAX_PLUS_1); cmd = ble_sm_cmd_get(BLE_SM_OP_PAIR_FAIL, sizeof(*cmd), &txom); if (cmd) { cmd->reason = reason; - ble_sm_tx(conn_handle, txom); + rc = ble_sm_tx(conn_handle, txom); + if (rc) { + BLE_HS_LOG(ERROR, "ble_sm_pair_fail_tx failed, rc = %d\n", rc); + } } } @@ -1059,20 +1075,18 @@ ble_sm_chk_store_overflow(uint16_t conn_handle) *****************************************************************************/ static int -ble_sm_start_encrypt_tx(struct hci_start_encrypt *cmd) +ble_sm_start_encrypt_tx(struct hci_start_encrypt *params) { - uint8_t buf[BLE_HCI_LE_START_ENCRYPT_LEN]; - int rc; + struct ble_hci_le_start_encrypt_cp cmd; - ble_hs_hci_cmd_build_le_start_encrypt(cmd, buf, sizeof buf); - rc = ble_hs_hci_cmd_tx_empty_ack(BLE_HCI_OP(BLE_HCI_OGF_LE, - BLE_HCI_OCF_LE_START_ENCRYPT), - buf, sizeof(buf)); - if (rc != 0) { - return rc; - } + cmd.conn_handle = htole16(params->connection_handle); + cmd.div = htole16(params->encrypted_diversifier); + cmd.rand = htole64(params->random_number); + memcpy(cmd.ltk, params->long_term_key, sizeof(cmd.ltk)); - return 0; + return ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, + BLE_HCI_OCF_LE_START_ENCRYPT), + &cmd, sizeof(cmd), NULL, 0); } static void @@ -1208,19 +1222,19 @@ ble_sm_enc_event_rx(uint16_t conn_handle, uint8_t evt_status, int encrypted) } void -ble_sm_enc_change_rx(struct hci_encrypt_change *evt) +ble_sm_enc_change_rx(const struct ble_hci_ev_enrypt_chg *ev) { /* For encrypted state: read LE-encryption bit; ignore BR/EDR and reserved * bits. */ - ble_sm_enc_event_rx(evt->connection_handle, evt->status, - evt->encryption_enabled & 0x01); + ble_sm_enc_event_rx(le16toh(ev->connection_handle), ev->status, + ev->enabled & 0x01); } void -ble_sm_enc_key_refresh_rx(struct hci_encrypt_key_refresh *evt) +ble_sm_enc_key_refresh_rx(const struct ble_hci_ev_enc_key_refresh *ev) { - ble_sm_enc_event_rx(evt->connection_handle, evt->status, 1); + ble_sm_enc_event_rx(le16toh(ev->conn_handle), ev->status, 1); } /***************************************************************************** @@ -1228,7 +1242,7 @@ ble_sm_enc_key_refresh_rx(struct hci_encrypt_key_refresh *evt) *****************************************************************************/ static int -ble_sm_retrieve_ltk(struct hci_le_lt_key_req *evt, uint8_t peer_addr_type, +ble_sm_retrieve_ltk(uint16_t ediv, uint64_t rand, uint8_t peer_addr_type, uint8_t *peer_addr, struct ble_store_value_sec *value_sec) { struct ble_store_key_sec key_sec; @@ -1238,8 +1252,8 @@ ble_sm_retrieve_ltk(struct hci_le_lt_key_req *evt, uint8_t peer_addr_type, memset(&key_sec, 0, sizeof key_sec); key_sec.peer_addr.type = peer_addr_type; memcpy(key_sec.peer_addr.val, peer_addr, 6); - key_sec.ediv = evt->encrypted_diversifier; - key_sec.rand_num = evt->random_number; + key_sec.ediv = ediv; + key_sec.rand_num = rand; key_sec.ediv_rand_present = 1; rc = ble_store_read_our_sec(&key_sec, value_sec); @@ -1247,30 +1261,23 @@ ble_sm_retrieve_ltk(struct hci_le_lt_key_req *evt, uint8_t peer_addr_type, } static int -ble_sm_ltk_req_reply_tx(uint16_t conn_handle, uint8_t *ltk) +ble_sm_ltk_req_reply_tx(uint16_t conn_handle, const uint8_t *ltk) { - struct hci_lt_key_req_reply cmd; - uint16_t ack_conn_handle; - uint8_t buf[BLE_HCI_LT_KEY_REQ_REPLY_LEN]; - uint8_t ack_params_len; + struct ble_hci_le_lt_key_req_reply_cp cmd; + struct ble_hci_le_lt_key_req_reply_rp rsp; int rc; - cmd.conn_handle = conn_handle; - memcpy(cmd.long_term_key, ltk, 16); + cmd.conn_handle = htole16(conn_handle); + memcpy(cmd.ltk, ltk, 16); - ble_hs_hci_cmd_build_le_lt_key_req_reply(&cmd, buf, sizeof buf); rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY), - buf, sizeof(buf), &ack_conn_handle, - sizeof(ack_conn_handle), &ack_params_len); + &cmd, sizeof(cmd), &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_LT_KEY_REQ_REPLY_ACK_PARAM_LEN) { - return BLE_HS_ECONTROLLER; - } - if (le16toh(ack_conn_handle) != conn_handle) { + if (le16toh(rsp.conn_handle) != conn_handle) { return BLE_HS_ECONTROLLER; } @@ -1280,24 +1287,19 @@ ble_sm_ltk_req_reply_tx(uint16_t conn_handle, uint8_t *ltk) static int ble_sm_ltk_req_neg_reply_tx(uint16_t conn_handle) { - uint16_t ack_conn_handle; - uint8_t buf[BLE_HCI_LT_KEY_REQ_NEG_REPLY_LEN]; - uint8_t ack_params_len; + struct ble_hci_le_lt_key_req_neg_reply_cp cmd; + struct ble_hci_le_lt_key_req_neg_reply_cp rsp; int rc; - ble_hs_hci_cmd_build_le_lt_key_req_neg_reply(conn_handle, buf, sizeof buf); + cmd.conn_handle = htole16(conn_handle); rc = ble_hs_hci_cmd_tx(BLE_HCI_OP(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_LT_KEY_REQ_NEG_REPLY), - buf, sizeof(buf), &ack_conn_handle, - sizeof(ack_conn_handle), &ack_params_len); + &cmd, sizeof(cmd), &rsp, sizeof(rsp)); if (rc != 0) { return rc; } - if (ack_params_len != BLE_HCI_LT_KEY_REQ_NEG_REPLY_ACK_PARAM_LEN) { - return BLE_HS_ECONTROLLER; - } - if (le16toh(ack_conn_handle) != conn_handle) { + if (le16toh(rsp.conn_handle) != conn_handle) { return BLE_HS_ECONTROLLER; } @@ -1356,7 +1358,7 @@ ble_sm_ltk_restore_exec(struct ble_sm_proc *proc, struct ble_sm_result *res, } int -ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt) +ble_sm_ltk_req_rx(const struct ble_hci_ev_le_subev_lt_key_req *ev) { struct ble_store_value_sec value_sec; struct ble_hs_conn_addrs addrs; @@ -1367,11 +1369,12 @@ ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt) int store_rc; int restore; + uint16_t conn_handle = le16toh(ev->conn_handle); + memset(&res, 0, sizeof res); ble_hs_lock(); - proc = ble_sm_proc_find(evt->connection_handle, BLE_SM_PROC_STATE_NONE, - 0, NULL); + proc = ble_sm_proc_find(conn_handle, BLE_SM_PROC_STATE_NONE, 0, NULL); if (proc == NULL) { /* The peer is attempting to restore a encrypted connection via the * encryption procedure. Create a proc entry to indicate that security @@ -1383,7 +1386,7 @@ ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt) if (proc == NULL) { res.app_status = BLE_HS_ENOMEM; } else { - proc->conn_handle = evt->connection_handle; + proc->conn_handle = conn_handle; proc->state = BLE_SM_PROC_STATE_LTK_RESTORE; ble_sm_insert(proc); @@ -1405,12 +1408,12 @@ ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt) } else { /* The request is unexpected; nack and forget. */ restore = 0; - ble_sm_ltk_req_neg_reply_tx(evt->connection_handle); + ble_sm_ltk_req_neg_reply_tx(conn_handle); proc = NULL; } if (restore) { - conn = ble_hs_conn_find_assert(evt->connection_handle); + conn = ble_hs_conn_find_assert(conn_handle); ble_hs_conn_addrs(conn, &addrs); memcpy(peer_id_addr, addrs.peer_id_addr.val, 6); } @@ -1423,7 +1426,8 @@ ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt) if (res.app_status == 0) { if (restore) { - store_rc = ble_sm_retrieve_ltk(evt, addrs.peer_id_addr.type, + store_rc = ble_sm_retrieve_ltk(le16toh(ev->div), le64toh(ev->rand), + addrs.peer_id_addr.type, peer_id_addr, &value_sec); if (store_rc == 0) { /* Send the key to the controller. */ @@ -1435,7 +1439,7 @@ ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt) } } - ble_sm_process_result(evt->connection_handle, &res); + ble_sm_process_result(conn_handle, &res); return 0; } @@ -1491,8 +1495,6 @@ ble_sm_random_rx(uint16_t conn_handle, struct os_mbuf **om, cmd = (struct ble_sm_pair_random *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "random", conn_handle, ble_sm_pair_random_log, cmd); - ble_hs_lock(); proc = ble_sm_proc_find(conn_handle, BLE_SM_PROC_STATE_RANDOM, -1, NULL); if (proc == NULL) { @@ -1541,8 +1543,6 @@ ble_sm_confirm_rx(uint16_t conn_handle, struct os_mbuf **om, cmd = (struct ble_sm_pair_confirm *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "confirm", conn_handle, ble_sm_pair_confirm_log, cmd); - ble_hs_lock(); proc = ble_sm_proc_find(conn_handle, BLE_SM_PROC_STATE_CONFIRM, -1, NULL); if (proc == NULL) { @@ -1789,8 +1789,6 @@ ble_sm_pair_req_rx(uint16_t conn_handle, struct os_mbuf **om, req = (struct ble_sm_pair_cmd *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "pair req", conn_handle, ble_sm_pair_cmd_log, req); - ble_hs_lock(); /* XXX: Check connection state; reject if not appropriate. */ @@ -1902,8 +1900,6 @@ ble_sm_pair_rsp_rx(uint16_t conn_handle, struct os_mbuf **om, rsp = (struct ble_sm_pair_cmd *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "pair rsp", conn_handle, ble_sm_pair_cmd_log, rsp); - ble_hs_lock(); proc = ble_sm_proc_find(conn_handle, BLE_SM_PROC_STATE_PAIR, 1, NULL); if (proc != NULL) { @@ -1982,7 +1978,6 @@ ble_sm_sec_req_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_sec_req *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "sec req", conn_handle, ble_sm_sec_req_log, cmd); /* XXX: Reject if: * o authreq-reserved flags set? @@ -2266,7 +2261,6 @@ ble_sm_enc_info_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_enc_info *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "enc info", conn_handle, ble_sm_enc_info_log, cmd); ble_hs_lock(); @@ -2301,7 +2295,6 @@ ble_sm_master_id_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_master_id *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "master id", conn_handle, ble_sm_master_id_log, cmd); ble_hs_lock(); @@ -2337,7 +2330,6 @@ ble_sm_id_info_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_id_info *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "id info", conn_handle, ble_sm_id_info_log, cmd); ble_hs_lock(); @@ -2372,8 +2364,6 @@ ble_sm_id_addr_info_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_id_addr_info *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "id addr info", conn_handle, ble_sm_id_addr_info_log, - cmd); ble_hs_lock(); @@ -2408,7 +2398,6 @@ ble_sm_sign_info_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_sign_info *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "sign info", conn_handle, ble_sm_sign_info_log, cmd); ble_hs_lock(); @@ -2443,7 +2432,6 @@ ble_sm_fail_rx(uint16_t conn_handle, struct os_mbuf **om, res->app_status = ble_hs_mbuf_pullup_base(om, sizeof(*cmd)); if (res->app_status == 0) { cmd = (struct ble_sm_pair_fail *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "fail", conn_handle, ble_sm_pair_fail_log, cmd); res->app_status = BLE_HS_SM_PEER_ERR(cmd->reason); } @@ -2744,6 +2732,24 @@ ble_sm_inject_io(uint16_t conn_handle, struct ble_sm_io *pkey) } break; +#if MYNEWT_VAL(BLE_SM_SC) + case BLE_SM_IOACT_OOB_SC: + if (!ble_sm_sc_oob_data_check(proc, + (pkey->oob_sc_data.local != NULL), + (pkey->oob_sc_data.remote != NULL))) { + res.app_status = BLE_HS_SM_US_ERR(BLE_SM_ERR_OOB); + res.sm_err = BLE_SM_ERR_OOB; + } else { + proc->flags |= BLE_SM_PROC_F_IO_INJECTED; + proc->oob_data_local = pkey->oob_sc_data.local; + proc->oob_data_remote = pkey->oob_sc_data.remote; + + /* Execute Confirm step */ + ble_sm_sc_oob_confirm(proc, &res); + } + break; +#endif + default: BLE_HS_DBG_ASSERT(0); rc = BLE_HS_EINVAL; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_alg.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_alg.c index 93453c603..ee8b937c5 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_alg.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_alg.c @@ -66,7 +66,7 @@ static struct trng_dev *g_trng; #endif static void -ble_sm_alg_xor_128(uint8_t *p, uint8_t *q, uint8_t *r) +ble_sm_alg_xor_128(const uint8_t *p, const uint8_t *q, uint8_t *r) { int i; @@ -76,7 +76,8 @@ ble_sm_alg_xor_128(uint8_t *p, uint8_t *q, uint8_t *r) } int -ble_sm_alg_encrypt(uint8_t *key, uint8_t *plaintext, uint8_t *enc_data) +ble_sm_alg_encrypt(const uint8_t *key, const uint8_t *plaintext, + uint8_t *enc_data) { uint8_t tmp[16]; @@ -87,14 +88,18 @@ ble_sm_alg_encrypt(uint8_t *key, uint8_t *plaintext, uint8_t *enc_data) mbedtls_aes_init(&s); if (mbedtls_aes_setkey_enc(&s, tmp, 128) != 0) { + mbedtls_aes_free(&s); return BLE_HS_EUNKNOWN; } swap_buf(tmp, plaintext, 16); if (mbedtls_aes_crypt_ecb(&s, MBEDTLS_AES_ENCRYPT, tmp, enc_data) != 0) { + mbedtls_aes_free(&s); return BLE_HS_EUNKNOWN; } + + mbedtls_aes_free(&s); #else struct tc_aes_key_sched_struct s; @@ -115,7 +120,8 @@ ble_sm_alg_encrypt(uint8_t *key, uint8_t *plaintext, uint8_t *enc_data) } int -ble_sm_alg_s1(uint8_t *k, uint8_t *r1, uint8_t *r2, uint8_t *out) +ble_sm_alg_s1(const uint8_t *k, const uint8_t *r1, const uint8_t *r2, + uint8_t *out) { int rc; @@ -150,10 +156,10 @@ ble_sm_alg_s1(uint8_t *k, uint8_t *r1, uint8_t *r2, uint8_t *out) } int -ble_sm_alg_c1(uint8_t *k, uint8_t *r, - uint8_t *preq, uint8_t *pres, +ble_sm_alg_c1(const uint8_t *k, const uint8_t *r, + const uint8_t *preq, const uint8_t *pres, uint8_t iat, uint8_t rat, - uint8_t *ia, uint8_t *ra, + const uint8_t *ia, const uint8_t *ra, uint8_t *out_enc_data) { uint8_t p1[16], p2[16]; @@ -301,8 +307,8 @@ ble_sm_alg_aes_cmac(const uint8_t *key, const uint8_t *in, size_t len, #endif int -ble_sm_alg_f4(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t z, - uint8_t *out_enc_data) +ble_sm_alg_f4(const uint8_t *u, const uint8_t *v, const uint8_t *x, + uint8_t z, uint8_t *out_enc_data) { uint8_t xs[16]; uint8_t m[65]; @@ -346,9 +352,9 @@ ble_sm_alg_f4(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t z, } int -ble_sm_alg_f5(uint8_t *w, uint8_t *n1, uint8_t *n2, uint8_t a1t, - uint8_t *a1, uint8_t a2t, uint8_t *a2, uint8_t *mackey, - uint8_t *ltk) +ble_sm_alg_f5(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, + uint8_t a1t, const uint8_t *a1, uint8_t a2t, const uint8_t *a2, + uint8_t *mackey, uint8_t *ltk) { static const uint8_t salt[16] = { 0x6c, 0x88, 0x83, 0x91, 0xaa, 0xf5, 0xa5, 0x38, 0x60, 0x37, 0x0b, 0xdb, @@ -462,8 +468,8 @@ ble_sm_alg_f6(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, } int -ble_sm_alg_g2(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t *y, - uint32_t *passkey) +ble_sm_alg_g2(const uint8_t *u, const uint8_t *v, const uint8_t *x, + const uint8_t *y, uint32_t *passkey) { uint8_t m[80], xs[16]; int rc; @@ -495,8 +501,8 @@ ble_sm_alg_g2(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t *y, } int -ble_sm_alg_gen_dhkey(uint8_t *peer_pub_key_x, uint8_t *peer_pub_key_y, - uint8_t *our_priv_key, uint8_t *out_dhkey) +ble_sm_alg_gen_dhkey(const uint8_t *peer_pub_key_x, const uint8_t *peer_pub_key_y, + const uint8_t *our_priv_key, uint8_t *out_dhkey) { uint8_t dh[32]; uint8_t pk[64]; diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_cmd.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_cmd.c index e12e109d5..01651f1df 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_cmd.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_cmd.c @@ -66,97 +66,3 @@ ble_sm_tx(uint16_t conn_handle, struct os_mbuf *txom) return rc; } - -#if NIMBLE_BLE_SM -void -ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd) -{ - BLE_HS_LOG(DEBUG, "io_cap=%d oob_data_flag=%d authreq=0x%02x " - "mac_enc_key_size=%d init_key_dist=%d " - "resp_key_dist=%d", - cmd->io_cap, cmd->oob_data_flag, cmd->authreq, - cmd->max_enc_key_size, cmd->init_key_dist, - cmd->resp_key_dist); -} - -void -ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd) -{ - BLE_HS_LOG(DEBUG, "value="); - ble_hs_log_flat_buf(cmd->value, sizeof cmd->value); -} - -void -ble_sm_pair_random_log(struct ble_sm_pair_random *cmd) -{ - BLE_HS_LOG(DEBUG, "value="); - ble_hs_log_flat_buf(cmd->value, sizeof cmd->value); -} - -void -ble_sm_pair_fail_log(struct ble_sm_pair_fail *cmd) -{ - BLE_HS_LOG(DEBUG, "reason=%d", cmd->reason); -} - -void -ble_sm_enc_info_log(struct ble_sm_enc_info *cmd) -{ - BLE_HS_LOG(DEBUG, "ltk="); - ble_hs_log_flat_buf(cmd->ltk, sizeof cmd->ltk); -} - -void -ble_sm_master_id_log(struct ble_sm_master_id *cmd) -{ - /* These get logged separately to accommodate a bug in the va_args - * implementation related to 64-bit integers. - */ - BLE_HS_LOG(DEBUG, "ediv=0x%04x ", cmd->ediv); - BLE_HS_LOG(DEBUG, "rand=0x%016llx", cmd->rand_val); -} - -void -ble_sm_id_info_log(struct ble_sm_id_info *cmd) -{ - BLE_HS_LOG(DEBUG, "irk="); - ble_hs_log_flat_buf(cmd->irk, sizeof cmd->irk); -} - -void -ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd) -{ - BLE_HS_LOG(DEBUG, "addr_type=%d addr=", cmd->addr_type); - BLE_HS_LOG_ADDR(DEBUG, cmd->bd_addr); -} - -void -ble_sm_sign_info_log(struct ble_sm_sign_info *cmd) -{ - BLE_HS_LOG(DEBUG, "sig_key="); - ble_hs_log_flat_buf(cmd->sig_key, sizeof cmd->sig_key); -} - -void -ble_sm_sec_req_log(struct ble_sm_sec_req *cmd) -{ - BLE_HS_LOG(DEBUG, "authreq=0x%02x", cmd->authreq); -} - -void -ble_sm_public_key_log(struct ble_sm_public_key *cmd) -{ - BLE_HS_LOG(DEBUG, "x="); - ble_hs_log_flat_buf(cmd->x, sizeof cmd->x); - BLE_HS_LOG(DEBUG, "y="); - ble_hs_log_flat_buf(cmd->y, sizeof cmd->y); -} - -void -ble_sm_dhkey_check_log(struct ble_sm_dhkey_check *cmd) -{ - BLE_HS_LOG(DEBUG, "value="); - ble_hs_log_flat_buf(cmd->value, sizeof cmd->value); -} - -#endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_priv.h index bbb4b03ae..def0a32f5 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_priv.h @@ -269,6 +269,8 @@ struct ble_sm_proc { struct ble_sm_public_key pub_key_peer; uint8_t mackey[16]; uint8_t dhkey[32]; + const struct ble_sm_sc_oob_data *oob_data_local; + const struct ble_sm_sc_oob_data *oob_data_remote; #endif }; @@ -294,44 +296,33 @@ void ble_sm_dbg_set_sc_keys(uint8_t *pubkey, uint8_t *privkey); int ble_sm_num_procs(void); -void ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd); -void ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd); -void ble_sm_pair_random_log(struct ble_sm_pair_random *cmd); -void ble_sm_pair_fail_log(struct ble_sm_pair_fail *cmd); -void ble_sm_enc_info_log(struct ble_sm_enc_info *cmd); -void ble_sm_master_id_log(struct ble_sm_master_id *cmd); -void ble_sm_id_info_log(struct ble_sm_id_info *cmd); -void ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd); -void ble_sm_sign_info_log(struct ble_sm_sign_info *cmd); -void ble_sm_sec_req_log(struct ble_sm_sec_req *cmd); -void ble_sm_public_key_log(struct ble_sm_public_key *cmd); -void ble_sm_dhkey_check_log(struct ble_sm_dhkey_check *cmd); - -int ble_sm_alg_s1(uint8_t *k, uint8_t *r1, uint8_t *r2, uint8_t *out); -int ble_sm_alg_c1(uint8_t *k, uint8_t *r, - uint8_t *preq, uint8_t *pres, +int ble_sm_alg_s1(const uint8_t *k, const uint8_t *r1, const uint8_t *r2, + uint8_t *out); +int ble_sm_alg_c1(const uint8_t *k, const uint8_t *r, + const uint8_t *preq, const uint8_t *pres, uint8_t iat, uint8_t rat, - uint8_t *ia, uint8_t *ra, + const uint8_t *ia, const uint8_t *ra, uint8_t *out_enc_data); -int ble_sm_alg_f4(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t z, - uint8_t *out_enc_data); -int ble_sm_alg_g2(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t *y, - uint32_t *passkey); -int ble_sm_alg_f5(uint8_t *w, uint8_t *n1, uint8_t *n2, uint8_t a1t, - uint8_t *a1, uint8_t a2t, uint8_t *a2, - uint8_t *mackey, uint8_t *ltk); +int ble_sm_alg_f4(const uint8_t *u, const uint8_t *v, const uint8_t *x, + uint8_t z, uint8_t *out_enc_data); +int ble_sm_alg_g2(const uint8_t *u, const uint8_t *v, const uint8_t *x, + const uint8_t *y, uint32_t *passkey); +int ble_sm_alg_f5(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, + uint8_t a1t, const uint8_t *a1, uint8_t a2t, + const uint8_t *a2, uint8_t *mackey, uint8_t *ltk); int ble_sm_alg_f6(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, const uint8_t *r, const uint8_t *iocap, uint8_t a1t, const uint8_t *a1, uint8_t a2t, const uint8_t *a2, uint8_t *check); -int ble_sm_alg_gen_dhkey(uint8_t *peer_pub_key_x, uint8_t *peer_pub_key_y, - uint8_t *our_priv_key, uint8_t *out_dhkey); +int ble_sm_alg_gen_dhkey(const uint8_t *peer_pub_key_x, + const uint8_t *peer_pub_key_y, + const uint8_t *our_priv_key, uint8_t *out_dhkey); int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv); void ble_sm_alg_ecc_init(void); -void ble_sm_enc_change_rx(struct hci_encrypt_change *evt); -void ble_sm_enc_key_refresh_rx(struct hci_encrypt_key_refresh *evt); -int ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt); +void ble_sm_enc_change_rx(const struct ble_hci_ev_enrypt_chg *ev); +void ble_sm_enc_key_refresh_rx(const struct ble_hci_ev_enc_key_refresh *ev); +int ble_sm_ltk_req_rx(const struct ble_hci_ev_le_subev_lt_key_req *ev); #if MYNEWT_VAL(BLE_SM_LEGACY) int ble_sm_lgcy_io_action(struct ble_sm_proc *proc, uint8_t *action); @@ -364,6 +355,10 @@ void ble_sm_sc_dhkey_check_exec(struct ble_sm_proc *proc, struct ble_sm_result *res, void *arg); void ble_sm_sc_dhkey_check_rx(uint16_t conn_handle, struct os_mbuf **rxom, struct ble_sm_result *res); +bool ble_sm_sc_oob_data_check(struct ble_sm_proc *proc, + bool oob_data_local_present, + bool oob_data_remote_present); +void ble_sm_sc_oob_confirm(struct ble_sm_proc *proc, struct ble_sm_result *res); void ble_sm_sc_init(void); #else #define ble_sm_sc_io_action(proc, action) (BLE_HS_ENOTSUP) @@ -399,12 +394,9 @@ int ble_sm_slave_initiate(uint16_t conn_handle); int ble_sm_enc_initiate(uint16_t conn_handle, uint8_t key_size, const uint8_t *ltk, uint16_t ediv, uint64_t rand_val, int auth); -int ble_sm_alg_encrypt(uint8_t *key, uint8_t *plaintext, uint8_t *enc_data); +int ble_sm_alg_encrypt(const uint8_t *key, const uint8_t *plaintext, + uint8_t *enc_data); int ble_sm_init(void); - -#define BLE_SM_LOG_CMD(is_tx, cmd_name, conn_handle, log_cb, cmd) \ - BLE_HS_LOG_CMD((is_tx), "sm", (cmd_name), (conn_handle), (log_cb), (cmd)) - #else #define ble_sm_enc_change_rx(evt) ((void)(evt)) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_sc.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_sc.c index 1293de3a4..333310702 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_sc.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/src/ble_sm_sc.c @@ -106,7 +106,7 @@ ble_sm_sc_io_action(struct ble_sm_proc *proc, uint8_t *action) if (pair_req->oob_data_flag == BLE_SM_PAIR_OOB_YES || pair_rsp->oob_data_flag == BLE_SM_PAIR_OOB_YES) { - *action = BLE_SM_IOACT_OOB; + *action = BLE_SM_IOACT_OOB_SC; } else if (!(pair_req->authreq & BLE_SM_PAIR_AUTHREQ_MITM) && !(pair_rsp->authreq & BLE_SM_PAIR_AUTHREQ_MITM)) { @@ -125,7 +125,7 @@ ble_sm_sc_io_action(struct ble_sm_proc *proc, uint8_t *action) proc->pair_alg = BLE_SM_PAIR_ALG_JW; break; - case BLE_SM_IOACT_OOB: + case BLE_SM_IOACT_OOB_SC: proc->pair_alg = BLE_SM_PAIR_ALG_OOB; proc->flags |= BLE_SM_PROC_F_AUTHENTICATED; break; @@ -233,11 +233,11 @@ ble_sm_sc_gen_ri(struct ble_sm_proc *proc) { int byte; int bit; - int rc; switch (proc->pair_alg) { case BLE_SM_PAIR_ALG_JW: case BLE_SM_PAIR_ALG_NUMCMP: + case BLE_SM_PAIR_ALG_OOB: proc->ri = 0; return 0; @@ -253,16 +253,49 @@ ble_sm_sc_gen_ri(struct ble_sm_proc *proc) return 0; - case BLE_SM_PAIR_ALG_OOB: - rc = ble_hs_hci_util_rand(&proc->ri, 1); - return rc; - default: BLE_HS_DBG_ASSERT(0); return BLE_HS_EUNKNOWN; } } +void +ble_sm_sc_oob_confirm(struct ble_sm_proc *proc, struct ble_sm_result *res) +{ + int err; + bool match; + uint8_t c[16]; + + /* Authentication stage 1: Step 5 */ + if (proc->oob_data_remote) { + err = ble_sm_alg_f4(proc->pub_key_peer.x, proc->pub_key_peer.x, + proc->oob_data_remote->r, 0, c); + if (err) { + res->sm_err = BLE_SM_ERR_UNSPECIFIED; + res->app_status = BLE_HS_SM_US_ERR(BLE_SM_ERR_UNSPECIFIED); + res->enc_cb = 1; + return; + } + + match = (memcmp(c, proc->oob_data_remote->c, sizeof(c)) == 0); + if (!match) { + /* Random number mismatch. */ + res->sm_err = BLE_SM_ERR_CONFIRM_MISMATCH; + res->app_status = BLE_HS_SM_US_ERR(BLE_SM_ERR_CONFIRM_MISMATCH); + res->enc_cb = 1; + return; + } + } + + if ((proc->flags & BLE_SM_PROC_F_INITIATOR) || + (proc->flags & BLE_SM_PROC_F_ADVANCE_ON_IO)) { + /* If is initiator or was waiting on + * IO then execute step 6: send Random + */ + res->execute = 1; + } +} + void ble_sm_sc_confirm_exec(struct ble_sm_proc *proc, struct ble_sm_result *res) { @@ -414,8 +447,9 @@ ble_sm_sc_random_rx(struct ble_sm_proc *proc, struct ble_sm_result *res) uint8_t rat; int rc; - if (proc->flags & BLE_SM_PROC_F_INITIATOR || - ble_sm_sc_responder_verifies_random(proc)) { + if (proc->pair_alg != BLE_SM_PAIR_ALG_OOB && ( + proc->flags & BLE_SM_PROC_F_INITIATOR || + ble_sm_sc_responder_verifies_random(proc))) { BLE_HS_LOG(DEBUG, "tk="); ble_hs_log_flat_buf(proc->tk, 16); @@ -487,7 +521,12 @@ ble_sm_sc_random_rx(struct ble_sm_proc *proc, struct ble_sm_result *res) res->execute = 1; } } else { - res->execute = 1; + if (proc->pair_alg == BLE_SM_PAIR_ALG_OOB && + !(proc->flags & BLE_SM_PROC_F_IO_INJECTED)) { + proc->flags |= BLE_SM_PROC_F_ADVANCE_ON_IO; + } else { + res->execute = 1; + } } } @@ -526,7 +565,11 @@ ble_sm_sc_public_key_exec(struct ble_sm_proc *proc, struct ble_sm_result *res, } if (!(proc->flags & BLE_SM_PROC_F_INITIATOR)) { - proc->state = BLE_SM_PROC_STATE_CONFIRM; + if (proc->pair_alg == BLE_SM_PAIR_ALG_OOB) { + proc->state = BLE_SM_PROC_STATE_RANDOM; + } else { + proc->state = BLE_SM_PROC_STATE_CONFIRM; + } rc = ble_sm_sc_io_action(proc, &ioact); if (rc != 0) { @@ -568,7 +611,13 @@ ble_sm_sc_public_key_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_public_key *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "public key", conn_handle, ble_sm_public_key_log, cmd); + /* Check if the peer public key is same as our generated public key. + * Return fail if the public keys match. */ + if (memcmp(cmd, ble_sm_sc_pub_key, 64) == 0) { + res->enc_cb = 1; + res->sm_err = BLE_SM_ERR_AUTHREQ; + return; + } ble_hs_lock(); proc = ble_sm_proc_find(conn_handle, BLE_SM_PROC_STATE_PUBLIC_KEY, -1, @@ -588,8 +637,11 @@ ble_sm_sc_public_key_rx(uint16_t conn_handle, struct os_mbuf **om, res->enc_cb = 1; } else { if (proc->flags & BLE_SM_PROC_F_INITIATOR) { - - proc->state = BLE_SM_PROC_STATE_CONFIRM; + if (proc->pair_alg == BLE_SM_PAIR_ALG_OOB) { + proc->state = BLE_SM_PROC_STATE_RANDOM; + } else { + proc->state = BLE_SM_PROC_STATE_CONFIRM; + } rc = ble_sm_sc_io_action(proc, &ioact); if (rc != 0) { @@ -651,6 +703,14 @@ ble_sm_sc_dhkey_check_exec(struct ble_sm_proc *proc, struct ble_sm_result *res, iocap = &pair_rsp->io_cap; } + if (proc->pair_alg == BLE_SM_PAIR_ALG_OOB) { + if (proc->oob_data_remote) { + memcpy(proc->tk, proc->oob_data_remote->r, 16); + } else { + memset(proc->tk, 0, 16); + } + } + ble_sm_sc_dhkey_addrs(proc, &our_addr, &peer_addr); cmd = ble_sm_cmd_get(BLE_SM_OP_PAIR_DHKEY_CHECK, sizeof(*cmd), &txom); @@ -702,11 +762,27 @@ ble_sm_dhkey_check_process(struct ble_sm_proc *proc, pair_rsp = (struct ble_sm_pair_cmd *) &proc->pair_rsp[1]; iocap = &pair_rsp->io_cap; + + if (proc->pair_alg == BLE_SM_PAIR_ALG_OOB) { + if (pair_rsp->oob_data_flag) { + memcpy(proc->tk, proc->oob_data_local->r, 16); + } else { + memset(proc->tk, 0, 16); + } + } } else { struct ble_sm_pair_cmd *pair_req; pair_req = (struct ble_sm_pair_cmd *) &proc->pair_req[1]; iocap = &pair_req->io_cap; + + if (proc->pair_alg == BLE_SM_PAIR_ALG_OOB) { + if (pair_req->oob_data_flag) { + memcpy(proc->tk, proc->oob_data_local->r, 16); + } else { + memset(proc->tk, 0, 16); + } + } } ble_sm_sc_dhkey_addrs(proc, &our_addr, &peer_addr); @@ -768,7 +844,6 @@ ble_sm_sc_dhkey_check_rx(uint16_t conn_handle, struct os_mbuf **om, } cmd = (struct ble_sm_dhkey_check *)(*om)->om_data; - BLE_SM_LOG_CMD(0, "dhkey check", conn_handle, ble_sm_dhkey_check_log, cmd); ble_hs_lock(); proc = ble_sm_proc_find(conn_handle, BLE_SM_PROC_STATE_DHKEY_CHECK, -1, @@ -781,6 +856,56 @@ ble_sm_sc_dhkey_check_rx(uint16_t conn_handle, struct os_mbuf **om, ble_hs_unlock(); } +bool +ble_sm_sc_oob_data_check(struct ble_sm_proc *proc, + bool oob_data_local_present, + bool oob_data_remote_present) +{ + struct ble_sm_pair_cmd *pair_req; + struct ble_sm_pair_cmd *pair_rsp; + bool req_oob_present; + bool rsp_oob_present; + + pair_req = (struct ble_sm_pair_cmd *) &proc->pair_req[1]; + pair_rsp = (struct ble_sm_pair_cmd *) &proc->pair_rsp[1]; + req_oob_present = pair_req->oob_data_flag == BLE_SM_PAIR_OOB_YES; + rsp_oob_present = pair_rsp->oob_data_flag == BLE_SM_PAIR_OOB_YES; + + if (proc->flags & BLE_SM_PROC_F_INITIATOR) { + return req_oob_present == oob_data_remote_present; + } else { + return rsp_oob_present == oob_data_remote_present; + } +} + +int +ble_sm_sc_oob_generate_data(struct ble_sm_sc_oob_data *oob_data) +{ + int rc; + +#if !MYNEWT_VAL(BLE_SM_SC) + return BLE_HS_ENOTSUP; +#endif + + rc = ble_sm_sc_ensure_keys_generated(); + if (rc) { + return rc; + } + + rc = ble_hs_hci_util_rand(oob_data->r, 16); + if (rc) { + return rc; + } + + rc = ble_sm_alg_f4(ble_sm_sc_pub_key, ble_sm_sc_pub_key, oob_data->r, 0, + oob_data->c); + if (rc) { + return rc; + } + + return 0; +} + void ble_sm_sc_init(void) { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/store/config/src/ble_store_nvs.c b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/store/config/src/ble_store_nvs.c index 13dae8d2b..49ca6ed73 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/store/config/src/ble_store_nvs.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/store/config/src/ble_store_nvs.c @@ -214,8 +214,10 @@ get_nvs_db_attribute(int obj_type, bool empty, void *value, int num_value) if (value) { #if MYNEWT_VAL(BLE_HOST_BASED_PRIVACY) if (obj_type == BLE_STORE_OBJ_TYPE_PEER_DEV_REC) { - err = get_nvs_matching_index(&p_dev_rec, value, num_value, - sizeof(struct ble_hs_dev_records)); + err = get_nvs_matching_index(&p_dev_rec.peer_sec, + &((struct ble_hs_dev_records *)value)->peer_sec, + num_value, + sizeof(struct ble_hs_peer_sec)); } else #endif { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimconfig.h b/lib/libesp32_div/NimBLE-Arduino/src/nimconfig.h index 5ad95ddb9..cf7711c08 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimconfig.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimconfig.h @@ -186,6 +186,8 @@ #define CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH 2 #define CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT 1 +#define CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS 2000 + #ifndef CONFIG_BT_ENABLED #define CONFIG_BT_ENABLED #endif @@ -194,6 +196,11 @@ #define CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY #endif + +#if !defined(CONFIG_IDF_TARGET_ESP32) && !defined(CONFIG_IDF_TARGET_ESP32C3) +#define CONFIG_IDF_TARGET_ESP32 1 +#endif + /* Cannot use client without scan */ #if defined(CONFIG_BT_NIMBLE_ROLE_CENTRAL) && !defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER) #define CONFIG_BT_NIMBLE_ROLE_OBSERVER diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimconfig_rename.h b/lib/libesp32_div/NimBLE-Arduino/src/nimconfig_rename.h index 3b96c1fec..c45aa8bf6 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimconfig_rename.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/nimconfig_rename.h @@ -41,13 +41,21 @@ #endif #if defined(CONFIG_SCAN_DUPLICATE_TYPE) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE) -#define CONFIG_BTDM_SCAN_DUPL_TYPE CONFIG_SCAN_DUPLICATE_TYPE +#define CONFIG_BTDM_SCAN_DUPL_TYPE CONFIG_SCAN_DUPLICATE_TYPE +#endif + +#if defined(CONFIG_BT_CTRL_SCAN_DUPL_TYPE) && !defined(CONFIG_BTDM_SCAN_DUPL_TYPE) +#define CONFIG_BTDM_SCAN_DUPL_TYPE CONFIG_BT_CTRL_SCAN_DUPL_TYPE #endif #if defined(CONFIG_DUPLICATE_SCAN_CACHE_SIZE) && !defined(CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE) -#define CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE CONFIG_DUPLICATE_SCAN_CACHE_SIZE +#define CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE CONFIG_DUPLICATE_SCAN_CACHE_SIZE +#endif + +#if defined(CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE) && !defined(CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE) +#define CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE #endif #if defined(CONFIG_NIMBLE_MAX_CONNECTIONS ) && !defined(CONFIG_BT_NIMBLE_MAX_CONNECTIONS) -#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS CONFIG_NIMBLE_MAX_CONNECTIONS +#define CONFIG_BT_NIMBLE_MAX_CONNECTIONS CONFIG_NIMBLE_MAX_CONNECTIONS #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/os/endian.h b/lib/libesp32_div/NimBLE-Arduino/src/os/endian.h index e80ca8697..152727225 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/os/endian.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/os/endian.h @@ -207,15 +207,19 @@ extern "C" { #endif void put_le16(void *buf, uint16_t x); +void put_le24(void *buf, uint32_t x); void put_le32(void *buf, uint32_t x); void put_le64(void *buf, uint64_t x); uint16_t get_le16(const void *buf); +uint32_t get_le24(const void *buf); uint32_t get_le32(const void *buf); uint64_t get_le64(const void *buf); void put_be16(void *buf, uint16_t x); +void put_be24(void *buf, uint32_t x); void put_be32(void *buf, uint32_t x); void put_be64(void *buf, uint64_t x); uint16_t get_be16(const void *buf); +uint32_t get_be24(const void *buf); uint32_t get_be32(const void *buf); uint64_t get_be64(const void *buf); void swap_in_place(void *buf, int len); diff --git a/lib/libesp32_div/NimBLE-Arduino/src/os/os_mbuf.h b/lib/libesp32_div/NimBLE-Arduino/src/os/os_mbuf.h index b1e234039..f3857fe46 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/os/os_mbuf.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/os/os_mbuf.h @@ -614,6 +614,25 @@ struct os_mbuf *os_mbuf_pullup(struct os_mbuf *om, uint16_t len); */ struct os_mbuf *os_mbuf_trim_front(struct os_mbuf *om); +/** + * Creates a single chained mbuf from m1 and m2 utilizing all + * the available buffer space in all mbufs in the resulting + * chain. In other words, ensures there is no leading space in + * any mbuf in the resulting chain and trailing space only in + * the last mbuf in the chain. Mbufs from either chain may be + * freed if not needed. No mbufs are allocated. Note that mbufs + * from m2 are added to the end of m1. If m1 has a packet + * header, it is retained and length updated. If m2 has a packet + * header it is discarded. If m1 is NULL, NULL is returned and + * m2 is left untouched. + * + * @param m1 Pointer to first mbuf chain to pack + * @param m2 Pointer to second mbuf chain to pack + * + * @return struct os_mbuf* Pointer to resulting mbuf chain + */ +struct os_mbuf *os_mbuf_pack_chains(struct os_mbuf *m1, struct os_mbuf *m2); + #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_dbg_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/os/util.h similarity index 56% rename from lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_dbg_priv.h rename to lib/libesp32_div/NimBLE-Arduino/src/os/util.h index 4d4390f92..3e59670c4 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/nimble/host/mesh/src/src/ble_hs_dbg_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/os/util.h @@ -17,18 +17,22 @@ * under the License. */ -#ifndef H_BLE_HS_DBG_PRIV_ -#define H_BLE_HS_DBG_PRIV_ +#ifndef H_OS_UTIL_ +#define H_OS_UTIL_ -#ifdef __cplusplus -extern "C" { +/* Helpers to pass integers as pointers and vice-versa */ +#define POINTER_TO_UINT(p) ((unsigned int) ((uintptr_t) (p))) +#define UINT_TO_POINTER(u) ((void *) ((uintptr_t) (u))) +#define POINTER_TO_INT(p) ((int) ((intptr_t) (p))) +#define INT_TO_POINTER(u) ((void *) ((intptr_t) (u))) + +/* Helper to retrieve pointer to "parent" object in structure */ +#define CONTAINER_OF(ptr, type, field) \ + ((type *)(((char *)(ptr)) - offsetof(type, field))) + +/* Helper to calculate number of elements in array */ +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(array) \ + (sizeof(array) / sizeof((array)[0])) #endif - -void ble_hs_dbg_event_disp(uint8_t *evbuf); -void ble_hs_dbg_set_sync_state(uint8_t sync_state); - -#ifdef __cplusplus -} #endif - -#endif /* H_HOST_DBG_ */ diff --git a/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/endian.c b/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/endian.c index 1311f43ef..2afd6a22e 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/endian.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/endian.c @@ -29,6 +29,17 @@ put_le16(void *buf, uint16_t x) u8ptr[1] = (uint8_t)(x >> 8); } +void +put_le24(void *buf, uint32_t x) +{ + uint8_t *u8ptr; + + u8ptr = buf; + u8ptr[0] = (uint8_t)x; + u8ptr[1] = (uint8_t)(x >> 8); + u8ptr[2] = (uint8_t)(x >> 16); +} + void put_le32(void *buf, uint32_t x) { @@ -70,6 +81,20 @@ get_le16(const void *buf) return x; } +uint32_t +get_le24(const void *buf) +{ + const uint8_t *u8ptr; + uint32_t x; + + u8ptr = buf; + x = u8ptr[0]; + x |= (uint32_t)u8ptr[1] << 8; + x |= (uint32_t)u8ptr[2] << 16; + + return x; +} + uint32_t get_le32(const void *buf) { @@ -114,6 +139,17 @@ put_be16(void *buf, uint16_t x) u8ptr[1] = (uint8_t)x; } +void +put_be24(void *buf, uint32_t x) +{ + uint8_t *u8ptr; + + u8ptr = buf; + u8ptr[0] = (uint8_t)(x >> 24); + u8ptr[1] = (uint8_t)(x >> 16); + u8ptr[2] = (uint8_t)(x >> 8); +} + void put_be32(void *buf, uint32_t x) { @@ -155,6 +191,20 @@ get_be16(const void *buf) return x; } +uint32_t +get_be24(const void *buf) +{ + const uint8_t *u8ptr; + uint32_t x; + + u8ptr = buf; + x = (uint32_t)u8ptr[0] << 24; + x |= (uint32_t)u8ptr[1] << 16; + x |= (uint32_t)u8ptr[2] << 8; + + return x; +} + uint32_t get_be32(const void *buf) { diff --git a/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/os_mbuf.c b/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/os_mbuf.c index 4da8b9625..ed18405b8 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/os_mbuf.c +++ b/lib/libesp32_div/NimBLE-Arduino/src/porting/nimble/src/os_mbuf.c @@ -660,10 +660,10 @@ os_mbuf_cmpf(const struct os_mbuf *om, int off, const void *data, int len) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpointer-arith" rc = memcmp(om->om_data + om_off, data + data_off, chunk_sz); -#pragma GCC diagnostic pop if (rc != 0) { return rc; } +#pragma GCC diagnostic pop } data_off += chunk_sz; @@ -1046,3 +1046,89 @@ os_mbuf_trim_front(struct os_mbuf *om) return om; } +struct os_mbuf * +os_mbuf_pack_chains(struct os_mbuf *m1, struct os_mbuf *m2) +{ + uint16_t rem_len; + uint16_t copylen; + uint8_t *dptr; + struct os_mbuf *cur; + struct os_mbuf *next; + + /* If m1 is NULL, return NULL */ + if (m1 == NULL) { + return NULL; + } + + /* + * Concatenate the two chains to start. This will discard packet header in + * m2 and adjust packet length in m1 if m1 has a packet header. + */ + if (m2 != NULL) { + os_mbuf_concat(m1, m2); + } + + cur = m1; + while (1) { + /* If there is leading space in the mbuf, move data up */ + if (OS_MBUF_LEADINGSPACE(cur)) { + dptr = &cur->om_databuf[0]; + if (OS_MBUF_IS_PKTHDR(cur)) { + dptr += cur->om_pkthdr_len; + } + memmove(dptr, cur->om_data, cur->om_len); + cur->om_data = dptr; + } + + /* Set pointer to where we will begin copying data in current mbuf */ + dptr = cur->om_data + cur->om_len; + + /* Get a pointer to the next buf we want to absorb */ + next = SLIST_NEXT(cur, om_next); + + /* + * Is there trailing space in the mbuf? If so, copy data from + * following mbufs into the current mbuf + */ + rem_len = OS_MBUF_TRAILINGSPACE(cur); + while (rem_len && next) { + copylen = min(rem_len, next->om_len); + memcpy(dptr, next->om_data, copylen); + cur->om_len += copylen; + dptr += copylen; + rem_len -= copylen; + + /* + * We copied bytes from the next mbuf. Move the data pointer + * and subtract from its length + */ + next->om_data += copylen; + next->om_len -= copylen; + + /* + * Keep removing and freeing consecutive zero length mbufs, + * stopping when we find one with data in it or we have + * reached the end. This will prevent any zero length mbufs + * from remaining in the chain. + */ + while (next->om_len == 0) { + SLIST_NEXT(cur, om_next) = SLIST_NEXT(next, om_next); + os_mbuf_free(next); + next = SLIST_NEXT(cur, om_next); + if (next == NULL) { + break; + } + } + } + + /* If no mbufs are left, we are done */ + if (next == NULL) { + break; + } + + /* Move cur to next as we filled up current */ + cur = next; + } + + return m1; +} diff --git a/lib/libesp32_div/NimBLE-Arduino/src/src/ble_hs_hci_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/src/ble_hs_hci_priv.h index ff3604727..362f12cbd 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/src/ble_hs_hci_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/src/ble_hs_hci_priv.h @@ -48,7 +48,7 @@ struct os_mbuf; struct ble_hs_hci_ack { int bha_status; /* A BLE_HS_E<...> error; NOT a naked HCI code. */ - uint8_t *bha_params; + const uint8_t *bha_params; int bha_params_len; uint16_t bha_opcode; uint8_t bha_hci_handle; @@ -81,11 +81,8 @@ struct hci_periodic_adv_params extern uint16_t ble_hs_hci_avail_pkts; -int ble_hs_hci_cmd_tx(uint16_t opcode, void *cmd, uint8_t cmd_len, - void *evt_buf, uint8_t evt_buf_len, - uint8_t *out_evt_buf_len); -int ble_hs_hci_cmd_tx_empty_ack(uint16_t opcode, void *cmd, uint8_t cmd_len); -void ble_hs_hci_rx_ack(uint8_t *ack_ev); +int ble_hs_hci_cmd_tx(uint16_t opcode, const void *cmd, uint8_t cmd_len, + void *rsp, uint8_t rsp_len); void ble_hs_hci_init(void); void ble_hs_hci_deinit(void); @@ -103,78 +100,11 @@ int ble_hs_hci_util_read_adv_tx_pwr(int8_t *out_pwr); int ble_hs_hci_util_rand(void *dst, int len); int ble_hs_hci_util_read_rssi(uint16_t conn_handle, int8_t *out_rssi); int ble_hs_hci_util_set_random_addr(const uint8_t *addr); -int ble_hs_hci_util_set_data_len(uint16_t conn_handle, uint16_t tx_octets, - uint16_t tx_time); int ble_hs_hci_util_data_hdr_strip(struct os_mbuf *om, struct hci_data_hdr *out_hdr); -int ble_hs_hci_evt_process(uint8_t *data); +int ble_hs_hci_evt_process(const struct ble_hci_ev *ev); -void ble_hs_hci_cmd_write_hdr(uint8_t ogf, uint16_t ocf, uint8_t len, - void *buf); -int ble_hs_hci_cmd_send_buf(uint16_t opcode, void *buf, uint8_t buf_len); -void ble_hs_hci_cmd_build_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_set_event_mask2(uint64_t event_mask, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_disconnect(uint16_t handle, uint8_t reason, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_read_rssi(uint16_t handle, uint8_t *dst, - int dst_len); -void ble_hs_hci_cmd_build_le_set_host_chan_class(const uint8_t *chan_map, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_read_chan_map(uint16_t conn_handle, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_scan_rsp_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_data(const uint8_t *data, uint8_t len, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_le_set_adv_params(const struct hci_adv_params *adv, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_event_mask(uint64_t event_mask, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_read_buffer_size(void); -void ble_hs_hci_cmd_build_le_set_adv_enable(uint8_t enable, uint8_t *dst, - int dst_len); -int ble_hs_hci_cmd_le_set_adv_enable(uint8_t enable); -int ble_hs_hci_cmd_build_le_set_scan_params(uint8_t scan_type, - uint16_t scan_itvl, - uint16_t scan_window, - uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_set_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint8_t *dst, uint8_t dst_len); -int ble_hs_hci_cmd_le_set_scan_enable(uint8_t enable, uint8_t filter_dups); -int ble_hs_hci_cmd_build_le_create_connection( - const struct hci_create_conn *hcc, uint8_t *cmd, int cmd_len); -int ble_hs_hci_cmd_build_le_add_to_whitelist(const uint8_t *addr, - uint8_t addr_type, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_reset(void); -int ble_hs_hci_cmd_tx_set_ctlr_to_host_fc(uint8_t fc_enable); -int ble_hs_hci_cmd_tx_host_buf_size(const struct hci_host_buf_size *cmd); -int ble_hs_hci_cmd_build_host_num_comp_pkts_entry( - const struct hci_host_num_comp_pkts_entry *entry, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_read_adv_pwr(void); -int ble_hs_hci_cmd_le_create_conn_cancel(void); -int ble_hs_hci_cmd_build_le_conn_update(const struct hci_conn_update *hcu, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_update(const struct hci_conn_update *hcu); -void ble_hs_hci_cmd_build_le_lt_key_req_reply( - const struct hci_lt_key_req_reply *hkr, uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_lt_key_req_neg_reply(uint16_t conn_handle, - uint8_t *dst, int dst_len); -void ble_hs_hci_cmd_build_le_conn_param_reply( - const struct hci_conn_param_reply *hcr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_reply(const struct hci_conn_param_reply *hcr); -void ble_hs_hci_cmd_build_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_le_conn_param_neg_reply( - const struct hci_conn_param_neg_reply *hcn); -void ble_hs_hci_cmd_build_le_start_encrypt(const struct hci_start_encrypt *cmd, - uint8_t *dst, int dst_len); +int ble_hs_hci_cmd_send_buf(uint16_t opcode, const void *buf, uint8_t buf_len); int ble_hs_hci_set_buf_sz(uint16_t pktlen, uint16_t max_pkts); void ble_hs_hci_add_avail_pkts(uint16_t delta); @@ -184,145 +114,9 @@ uint16_t ble_hs_hci_util_handle_pb_bc_join(uint16_t handle, uint8_t pb, int ble_hs_hci_acl_tx_now(struct ble_hs_conn *conn, struct os_mbuf **om); int ble_hs_hci_acl_tx(struct ble_hs_conn *conn, struct os_mbuf **om); -int ble_hs_hci_cmd_build_set_data_len(uint16_t connection_handle, - uint16_t tx_octets, uint16_t tx_time, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_add_to_resolv_list( - const struct hci_add_dev_to_resolving_list *padd, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_remove_from_resolv_list( - uint8_t addr_type, const uint8_t *addr, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_peer_resolv_addr( - uint8_t peer_identity_addr_type, const uint8_t *peer_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_read_lcl_resolv_addr( - uint8_t local_identity_addr_type, const uint8_t *local_identity_addr, - uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_addr_res_en( - uint8_t enable, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_resolv_priv_addr_timeout( - uint16_t timeout, uint8_t *dst, int dst_len); -int ble_hs_hci_cmd_build_set_random_addr(const uint8_t *addr, - uint8_t *dst, int dst_len); - -#if MYNEWT_VAL(BLE_EXT_ADV) -int ble_hs_hci_cmd_build_le_set_ext_scan_params(uint8_t own_addr_type, - uint8_t filter_policy, - uint8_t phy_mask, - uint8_t phy_count, - struct ble_hs_hci_ext_scan_param *params[], - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_ext_scan_enable(uint8_t enable, - uint8_t filter_dups, - uint16_t duration, - uint16_t period, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_ext_create_conn(const struct hci_ext_create_conn *hcc, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_set_random_addr(uint8_t handle, - const uint8_t *addr, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_data(uint8_t handle, uint8_t operation, - uint8_t frag_pref, struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_enable(uint8_t enable, uint8_t sets_num, - const struct hci_ext_adv_set *sets, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_params(uint8_t handle, - const struct hci_ext_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_ext_adv_remove(uint8_t handle, - uint8_t *cmd, int cmd_len); - -#if MYNEWT_VAL(BLE_PERIODIC_ADV) -int -ble_hs_hci_cmd_build_le_periodic_adv_params(uint8_t handle, - const struct hci_periodic_adv_params *params, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_enable(uint8_t enable, - uint8_t handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_data(uint8_t handle, uint8_t operation, - struct os_mbuf *data, - uint8_t data_len, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_periodic_adv_create_sync(uint8_t filter_policy, - uint8_t adv_sid, - uint8_t adv_add_type, - const uint8_t *adv_addr, - uint16_t skip, - uint16_t sync_timeout, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_periodic_adv_terminate_sync(uint16_t sync_handle, - uint8_t *cmd, int cmd_len); - -int -ble_hs_hci_cmd_build_le_add_dev_to_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -int -ble_hs_hci_cmd_build_le_rem_dev_from_periodic_adv_list(uint8_t adv_add_type, - const uint8_t *adv_addr, - uint8_t adv_sid, - uint8_t *cmd, int cmd_len); -#endif - -#endif - -int ble_hs_hci_cmd_build_le_enh_recv_test(uint8_t rx_chan, uint8_t phy, - uint8_t mod_idx, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_enh_trans_test(uint8_t tx_chan, - uint8_t test_data_len, - uint8_t packet_payload_idx, - uint8_t phy, - uint8_t *dst, uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_set_priv_mode(const uint8_t *addr, uint8_t addr_type, - uint8_t priv_mode, uint8_t *dst, - uint16_t dst_len); - -int ble_hs_hci_cmd_build_le_read_phy(uint16_t conn_handle, uint8_t *dst, - int dst_len); - -int ble_hs_hci_cmd_build_le_set_default_phy(uint8_t tx_phys_mask, - uint8_t rx_phys_mask, - uint8_t *dst, int dst_len); - -int ble_hs_hci_cmd_build_le_set_phy(uint16_t conn_handle, uint8_t tx_phys_mask, - uint8_t rx_phys_mask, uint16_t phy_opts, - uint8_t *dst, int dst_len); - int ble_hs_hci_frag_num_mbufs(void); int ble_hs_hci_frag_num_mbufs_free(void); -#if MYNEWT_VAL(BLE_EXT_ADV) -#endif - -int ble_hs_hci_cmd_build_le_read_remote_feat(uint16_t handle, uint8_t *dst, - int dst_len); #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/src/ble_sm_priv.h b/lib/libesp32_div/NimBLE-Arduino/src/src/ble_sm_priv.h index bbb4b03ae..def0a32f5 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/src/ble_sm_priv.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/src/ble_sm_priv.h @@ -269,6 +269,8 @@ struct ble_sm_proc { struct ble_sm_public_key pub_key_peer; uint8_t mackey[16]; uint8_t dhkey[32]; + const struct ble_sm_sc_oob_data *oob_data_local; + const struct ble_sm_sc_oob_data *oob_data_remote; #endif }; @@ -294,44 +296,33 @@ void ble_sm_dbg_set_sc_keys(uint8_t *pubkey, uint8_t *privkey); int ble_sm_num_procs(void); -void ble_sm_pair_cmd_log(struct ble_sm_pair_cmd *cmd); -void ble_sm_pair_confirm_log(struct ble_sm_pair_confirm *cmd); -void ble_sm_pair_random_log(struct ble_sm_pair_random *cmd); -void ble_sm_pair_fail_log(struct ble_sm_pair_fail *cmd); -void ble_sm_enc_info_log(struct ble_sm_enc_info *cmd); -void ble_sm_master_id_log(struct ble_sm_master_id *cmd); -void ble_sm_id_info_log(struct ble_sm_id_info *cmd); -void ble_sm_id_addr_info_log(struct ble_sm_id_addr_info *cmd); -void ble_sm_sign_info_log(struct ble_sm_sign_info *cmd); -void ble_sm_sec_req_log(struct ble_sm_sec_req *cmd); -void ble_sm_public_key_log(struct ble_sm_public_key *cmd); -void ble_sm_dhkey_check_log(struct ble_sm_dhkey_check *cmd); - -int ble_sm_alg_s1(uint8_t *k, uint8_t *r1, uint8_t *r2, uint8_t *out); -int ble_sm_alg_c1(uint8_t *k, uint8_t *r, - uint8_t *preq, uint8_t *pres, +int ble_sm_alg_s1(const uint8_t *k, const uint8_t *r1, const uint8_t *r2, + uint8_t *out); +int ble_sm_alg_c1(const uint8_t *k, const uint8_t *r, + const uint8_t *preq, const uint8_t *pres, uint8_t iat, uint8_t rat, - uint8_t *ia, uint8_t *ra, + const uint8_t *ia, const uint8_t *ra, uint8_t *out_enc_data); -int ble_sm_alg_f4(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t z, - uint8_t *out_enc_data); -int ble_sm_alg_g2(uint8_t *u, uint8_t *v, uint8_t *x, uint8_t *y, - uint32_t *passkey); -int ble_sm_alg_f5(uint8_t *w, uint8_t *n1, uint8_t *n2, uint8_t a1t, - uint8_t *a1, uint8_t a2t, uint8_t *a2, - uint8_t *mackey, uint8_t *ltk); +int ble_sm_alg_f4(const uint8_t *u, const uint8_t *v, const uint8_t *x, + uint8_t z, uint8_t *out_enc_data); +int ble_sm_alg_g2(const uint8_t *u, const uint8_t *v, const uint8_t *x, + const uint8_t *y, uint32_t *passkey); +int ble_sm_alg_f5(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, + uint8_t a1t, const uint8_t *a1, uint8_t a2t, + const uint8_t *a2, uint8_t *mackey, uint8_t *ltk); int ble_sm_alg_f6(const uint8_t *w, const uint8_t *n1, const uint8_t *n2, const uint8_t *r, const uint8_t *iocap, uint8_t a1t, const uint8_t *a1, uint8_t a2t, const uint8_t *a2, uint8_t *check); -int ble_sm_alg_gen_dhkey(uint8_t *peer_pub_key_x, uint8_t *peer_pub_key_y, - uint8_t *our_priv_key, uint8_t *out_dhkey); +int ble_sm_alg_gen_dhkey(const uint8_t *peer_pub_key_x, + const uint8_t *peer_pub_key_y, + const uint8_t *our_priv_key, uint8_t *out_dhkey); int ble_sm_alg_gen_key_pair(uint8_t *pub, uint8_t *priv); void ble_sm_alg_ecc_init(void); -void ble_sm_enc_change_rx(struct hci_encrypt_change *evt); -void ble_sm_enc_key_refresh_rx(struct hci_encrypt_key_refresh *evt); -int ble_sm_ltk_req_rx(struct hci_le_lt_key_req *evt); +void ble_sm_enc_change_rx(const struct ble_hci_ev_enrypt_chg *ev); +void ble_sm_enc_key_refresh_rx(const struct ble_hci_ev_enc_key_refresh *ev); +int ble_sm_ltk_req_rx(const struct ble_hci_ev_le_subev_lt_key_req *ev); #if MYNEWT_VAL(BLE_SM_LEGACY) int ble_sm_lgcy_io_action(struct ble_sm_proc *proc, uint8_t *action); @@ -364,6 +355,10 @@ void ble_sm_sc_dhkey_check_exec(struct ble_sm_proc *proc, struct ble_sm_result *res, void *arg); void ble_sm_sc_dhkey_check_rx(uint16_t conn_handle, struct os_mbuf **rxom, struct ble_sm_result *res); +bool ble_sm_sc_oob_data_check(struct ble_sm_proc *proc, + bool oob_data_local_present, + bool oob_data_remote_present); +void ble_sm_sc_oob_confirm(struct ble_sm_proc *proc, struct ble_sm_result *res); void ble_sm_sc_init(void); #else #define ble_sm_sc_io_action(proc, action) (BLE_HS_ENOTSUP) @@ -399,12 +394,9 @@ int ble_sm_slave_initiate(uint16_t conn_handle); int ble_sm_enc_initiate(uint16_t conn_handle, uint8_t key_size, const uint8_t *ltk, uint16_t ediv, uint64_t rand_val, int auth); -int ble_sm_alg_encrypt(uint8_t *key, uint8_t *plaintext, uint8_t *enc_data); +int ble_sm_alg_encrypt(const uint8_t *key, const uint8_t *plaintext, + uint8_t *enc_data); int ble_sm_init(void); - -#define BLE_SM_LOG_CMD(is_tx, cmd_name, conn_handle, log_cb, cmd) \ - BLE_HS_LOG_CMD((is_tx), "sm", (cmd_name), (conn_handle), (log_cb), (cmd)) - #else #define ble_sm_enc_change_rx(evt) ((void)(evt)) diff --git a/lib/libesp32_div/NimBLE-Arduino/src/store/config/ble_store_config.h b/lib/libesp32_div/NimBLE-Arduino/src/store/config/ble_store_config.h index 2cc411c30..1b3f8e6ce 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/store/config/ble_store_config.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/store/config/ble_store_config.h @@ -32,8 +32,6 @@ int ble_store_config_read(int obj_type, const union ble_store_key *key, int ble_store_config_write(int obj_type, const union ble_store_value *val); int ble_store_config_delete(int obj_type, const union ble_store_key *key); -void ble_store_config_init(void); - #ifdef __cplusplus } #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/syscfg/syscfg.h b/lib/libesp32_div/NimBLE-Arduino/src/syscfg/syscfg.h index ce2832876..8dccca5eb 100644 --- a/lib/libesp32_div/NimBLE-Arduino/src/syscfg/syscfg.h +++ b/lib/libesp32_div/NimBLE-Arduino/src/syscfg/syscfg.h @@ -1,5 +1,5 @@ /** - * This file was generated by Apache Newt version: 1.4.1 + * This file was generated by Apache newt version: 1.8.0-dev */ #ifndef H_MYNEWT_SYSCFG_ @@ -16,285 +16,46 @@ * attempt to use these macros without including this header will result in a * compiler error. */ -#define MYNEWT_VAL(x) MYNEWT_VAL_ ## x +#define MYNEWT_VAL(_name) MYNEWT_VAL_ ## _name +#define MYNEWT_VAL_CHOICE(_name, _val) MYNEWT_VAL_ ## _name ## __ ## _val -/*** compiler/arm-none-eabi-m4 */ -#ifndef MYNEWT_VAL_HARDFLOAT -#define MYNEWT_VAL_HARDFLOAT (0) +/*** @apache-mynewt-core/crypto/tinycrypt */ +#ifndef MYNEWT_VAL_TINYCRYPT_SYSINIT_STAGE +#define MYNEWT_VAL_TINYCRYPT_SYSINIT_STAGE (200) #endif -/*** hw/bsp/nrf52840pdk */ -#ifndef MYNEWT_VAL_BSP_NRF52840 -#define MYNEWT_VAL_BSP_NRF52840 (1) +#ifndef MYNEWT_VAL_TINYCRYPT_UECC_RNG_TRNG_DEV_NAME +#define MYNEWT_VAL_TINYCRYPT_UECC_RNG_TRNG_DEV_NAME ("trng") #endif -#ifndef MYNEWT_VAL_I2C_0_FREQ_KHZ -#define MYNEWT_VAL_I2C_0_FREQ_KHZ (100) +#ifndef MYNEWT_VAL_TINYCRYPT_UECC_RNG_USE_TRNG +#define MYNEWT_VAL_TINYCRYPT_UECC_RNG_USE_TRNG (0) #endif -#ifndef MYNEWT_VAL_I2C_0_PIN_SCL -#define MYNEWT_VAL_I2C_0_PIN_SCL (27) +/*** @apache-mynewt-core/hw/hal */ +#ifndef MYNEWT_VAL_HAL_ENABLE_SOFTWARE_BREAKPOINTS +#define MYNEWT_VAL_HAL_ENABLE_SOFTWARE_BREAKPOINTS (1) #endif -#ifndef MYNEWT_VAL_I2C_0_PIN_SDA -#define MYNEWT_VAL_I2C_0_PIN_SDA (26) +#ifndef MYNEWT_VAL_HAL_FLASH_VERIFY_BUF_SZ +#define MYNEWT_VAL_HAL_FLASH_VERIFY_BUF_SZ (16) #endif -#ifndef MYNEWT_VAL_PWM_3 -#define MYNEWT_VAL_PWM_3 (0) +#ifndef MYNEWT_VAL_HAL_FLASH_VERIFY_ERASES +#define MYNEWT_VAL_HAL_FLASH_VERIFY_ERASES (0) #endif -#ifndef MYNEWT_VAL_SPI_0_MASTER_PIN_MISO -#define MYNEWT_VAL_SPI_0_MASTER_PIN_MISO (47) +#ifndef MYNEWT_VAL_HAL_FLASH_VERIFY_WRITES +#define MYNEWT_VAL_HAL_FLASH_VERIFY_WRITES (0) #endif -#ifndef MYNEWT_VAL_SPI_0_MASTER_PIN_MOSI -#define MYNEWT_VAL_SPI_0_MASTER_PIN_MOSI (46) +#ifndef MYNEWT_VAL_HAL_SYSTEM_RESET_CB +#define MYNEWT_VAL_HAL_SYSTEM_RESET_CB (0) #endif -#ifndef MYNEWT_VAL_SPI_0_MASTER_PIN_SCK -#define MYNEWT_VAL_SPI_0_MASTER_PIN_SCK (45) -#endif - -#ifndef MYNEWT_VAL_SPI_0_SLAVE_PIN_MISO -#define MYNEWT_VAL_SPI_0_SLAVE_PIN_MISO (47) -#endif - -#ifndef MYNEWT_VAL_SPI_0_SLAVE_PIN_MOSI -#define MYNEWT_VAL_SPI_0_SLAVE_PIN_MOSI (46) -#endif - -#ifndef MYNEWT_VAL_SPI_0_SLAVE_PIN_SCK -#define MYNEWT_VAL_SPI_0_SLAVE_PIN_SCK (45) -#endif - -#ifndef MYNEWT_VAL_SPI_0_SLAVE_PIN_SS -#define MYNEWT_VAL_SPI_0_SLAVE_PIN_SS (44) -#endif - -#ifndef MYNEWT_VAL_TIMER_0 -#define MYNEWT_VAL_TIMER_0 (1) -#endif - -#ifndef MYNEWT_VAL_TIMER_1 -#define MYNEWT_VAL_TIMER_1 (0) -#endif - -#ifndef MYNEWT_VAL_TIMER_2 -#define MYNEWT_VAL_TIMER_2 (0) -#endif - -#ifndef MYNEWT_VAL_TIMER_3 -#define MYNEWT_VAL_TIMER_3 (0) -#endif - -#ifndef MYNEWT_VAL_TIMER_4 -#define MYNEWT_VAL_TIMER_4 (0) -#endif - -#ifndef MYNEWT_VAL_TIMER_5 -#define MYNEWT_VAL_TIMER_5 (0) -#endif - -#ifndef MYNEWT_VAL_UART_0 -#define MYNEWT_VAL_UART_0 (1) -#endif - -#ifndef MYNEWT_VAL_UART_0_PIN_CTS -#define MYNEWT_VAL_UART_0_PIN_CTS (7) -#endif - -#ifndef MYNEWT_VAL_UART_0_PIN_RTS -#define MYNEWT_VAL_UART_0_PIN_RTS (5) -#endif - -#ifndef MYNEWT_VAL_UART_0_PIN_RX -#define MYNEWT_VAL_UART_0_PIN_RX (8) -#endif - -#ifndef MYNEWT_VAL_UART_0_PIN_TX -#define MYNEWT_VAL_UART_0_PIN_TX (6) -#endif - -#ifndef MYNEWT_VAL_UART_1 -#define MYNEWT_VAL_UART_1 (0) -#endif - -#ifndef MYNEWT_VAL_UART_1_PIN_CTS -#define MYNEWT_VAL_UART_1_PIN_CTS (-1) -#endif - -#ifndef MYNEWT_VAL_UART_1_PIN_RTS -#define MYNEWT_VAL_UART_1_PIN_RTS (-1) -#endif - -#ifndef MYNEWT_VAL_UART_1_PIN_RX -#define MYNEWT_VAL_UART_1_PIN_RX (-1) -#endif - -#ifndef MYNEWT_VAL_UART_1_PIN_TX -#define MYNEWT_VAL_UART_1_PIN_TX (-1) -#endif - -/*** hw/mcu/nordic/nrf52xxx */ -#ifndef MYNEWT_VAL_ADC_0 -#define MYNEWT_VAL_ADC_0 (0) -#endif - -#ifndef MYNEWT_VAL_ADC_0_REFMV_0 -#define MYNEWT_VAL_ADC_0_REFMV_0 (0) -#endif - -#ifndef MYNEWT_VAL_I2C_0 -#define MYNEWT_VAL_I2C_0 (0) -#endif - -#ifndef MYNEWT_VAL_I2C_1 -#define MYNEWT_VAL_I2C_1 (0) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_MCU_DCDC_ENABLED -#define MYNEWT_VAL_MCU_DCDC_ENABLED (1) -#endif - -#ifndef MYNEWT_VAL_MCU_FLASH_MIN_WRITE_SIZE -#define MYNEWT_VAL_MCU_FLASH_MIN_WRITE_SIZE (1) -#endif - -#ifndef MYNEWT_VAL_PWM_0 -#define MYNEWT_VAL_PWM_0 (0) -#endif - -#ifndef MYNEWT_VAL_PWM_1 -#define MYNEWT_VAL_PWM_1 (0) -#endif - -#ifndef MYNEWT_VAL_PWM_2 -#define MYNEWT_VAL_PWM_2 (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_ADDRMODE -#define MYNEWT_VAL_QSPI_ADDRMODE (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_DPMCONFIG -#define MYNEWT_VAL_QSPI_DPMCONFIG (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_ENABLE -#define MYNEWT_VAL_QSPI_ENABLE (0) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_FLASH_PAGE_SIZE -#define MYNEWT_VAL_QSPI_FLASH_PAGE_SIZE (256) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_FLASH_SECTOR_COUNT -#define MYNEWT_VAL_QSPI_FLASH_SECTOR_COUNT (4096) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_FLASH_SECTOR_SIZE -#define MYNEWT_VAL_QSPI_FLASH_SECTOR_SIZE (4096) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_PIN_CS -#define MYNEWT_VAL_QSPI_PIN_CS (17) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_PIN_DIO0 -#define MYNEWT_VAL_QSPI_PIN_DIO0 (20) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_PIN_DIO1 -#define MYNEWT_VAL_QSPI_PIN_DIO1 (21) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_PIN_DIO2 -#define MYNEWT_VAL_QSPI_PIN_DIO2 (22) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_PIN_DIO3 -#define MYNEWT_VAL_QSPI_PIN_DIO3 (23) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_QSPI_PIN_SCK -#define MYNEWT_VAL_QSPI_PIN_SCK (19) -#endif - -#ifndef MYNEWT_VAL_QSPI_READOC -#define MYNEWT_VAL_QSPI_READOC (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_SCK_DELAY -#define MYNEWT_VAL_QSPI_SCK_DELAY (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_SCK_FREQ -#define MYNEWT_VAL_QSPI_SCK_FREQ (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_SPI_MODE -#define MYNEWT_VAL_QSPI_SPI_MODE (0) -#endif - -#ifndef MYNEWT_VAL_QSPI_WRITEOC -#define MYNEWT_VAL_QSPI_WRITEOC (0) -#endif - -#ifndef MYNEWT_VAL_SOFT_PWM -#define MYNEWT_VAL_SOFT_PWM (0) -#endif - -#ifndef MYNEWT_VAL_SPI_0_MASTER -#define MYNEWT_VAL_SPI_0_MASTER (0) -#endif - -#ifndef MYNEWT_VAL_SPI_0_SLAVE -#define MYNEWT_VAL_SPI_0_SLAVE (0) -#endif - -#ifndef MYNEWT_VAL_SPI_1_MASTER -#define MYNEWT_VAL_SPI_1_MASTER (0) -#endif - -#ifndef MYNEWT_VAL_SPI_1_SLAVE -#define MYNEWT_VAL_SPI_1_SLAVE (0) -#endif - -#ifndef MYNEWT_VAL_SPI_2_MASTER -#define MYNEWT_VAL_SPI_2_MASTER (0) -#endif - -#ifndef MYNEWT_VAL_SPI_2_SLAVE -#define MYNEWT_VAL_SPI_2_SLAVE (0) -#endif - -/* Overridden by hw/bsp/nrf52840pdk (defined by hw/mcu/nordic/nrf52xxx) */ -#ifndef MYNEWT_VAL_XTAL_32768 -#define MYNEWT_VAL_XTAL_32768 (1) -#endif - -#ifndef MYNEWT_VAL_XTAL_32768_SYNTH -#define MYNEWT_VAL_XTAL_32768_SYNTH (0) -#endif - -#ifndef MYNEWT_VAL_XTAL_RC -#define MYNEWT_VAL_XTAL_RC (0) -#endif - -/*** kernel/os */ +/*** @apache-mynewt-core/kernel/os */ #ifndef MYNEWT_VAL_FLOAT_USER #define MYNEWT_VAL_FLOAT_USER (0) #endif @@ -307,6 +68,10 @@ #define MYNEWT_VAL_MSYS_1_BLOCK_SIZE (292) #endif +#ifndef MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT +#define MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT (0) +#endif + #ifndef MYNEWT_VAL_MSYS_2_BLOCK_COUNT #define MYNEWT_VAL_MSYS_2_BLOCK_COUNT (0) #endif @@ -315,6 +80,18 @@ #define MYNEWT_VAL_MSYS_2_BLOCK_SIZE (0) #endif +#ifndef MYNEWT_VAL_MSYS_2_SANITY_MIN_COUNT +#define MYNEWT_VAL_MSYS_2_SANITY_MIN_COUNT (0) +#endif + +#ifndef MYNEWT_VAL_MSYS_SANITY_TIMEOUT +#define MYNEWT_VAL_MSYS_SANITY_TIMEOUT (60000) +#endif + +#ifndef MYNEWT_VAL_OS_ASSERT_CB +#define MYNEWT_VAL_OS_ASSERT_CB (0) +#endif + #ifndef MYNEWT_VAL_OS_CLI #define MYNEWT_VAL_OS_CLI (0) #endif @@ -331,6 +108,22 @@ #define MYNEWT_VAL_OS_CPUTIME_TIMER_NUM (0) #endif +#ifndef MYNEWT_VAL_OS_CRASH_FILE_LINE +#define MYNEWT_VAL_OS_CRASH_FILE_LINE (0) +#endif + +#ifndef MYNEWT_VAL_OS_CRASH_LOG +#define MYNEWT_VAL_OS_CRASH_LOG (0) +#endif + +#ifndef MYNEWT_VAL_OS_CRASH_RESTORE_REGS +#define MYNEWT_VAL_OS_CRASH_RESTORE_REGS (0) +#endif + +#ifndef MYNEWT_VAL_OS_CRASH_STACKTRACE +#define MYNEWT_VAL_OS_CRASH_STACKTRACE (0) +#endif + #ifndef MYNEWT_VAL_OS_CTX_SW_STACK_CHECK #define MYNEWT_VAL_OS_CTX_SW_STACK_CHECK (0) #endif @@ -339,6 +132,26 @@ #define MYNEWT_VAL_OS_CTX_SW_STACK_GUARD (4) #endif +#ifndef MYNEWT_VAL_OS_DEBUG_MODE +#define MYNEWT_VAL_OS_DEBUG_MODE (0) +#endif + +#ifndef MYNEWT_VAL_OS_EVENTQ_DEBUG +#define MYNEWT_VAL_OS_EVENTQ_DEBUG (0) +#endif + +#ifndef MYNEWT_VAL_OS_EVENTQ_MONITOR +#define MYNEWT_VAL_OS_EVENTQ_MONITOR (0) +#endif + +#ifndef MYNEWT_VAL_OS_IDLE_TICKLESS_MS_MAX +#define MYNEWT_VAL_OS_IDLE_TICKLESS_MS_MAX (600000) +#endif + +#ifndef MYNEWT_VAL_OS_IDLE_TICKLESS_MS_MIN +#define MYNEWT_VAL_OS_IDLE_TICKLESS_MS_MIN (100) +#endif + #ifndef MYNEWT_VAL_OS_MAIN_STACK_SIZE #define MYNEWT_VAL_OS_MAIN_STACK_SIZE (1024) #endif @@ -347,10 +160,18 @@ #define MYNEWT_VAL_OS_MAIN_TASK_PRIO (127) #endif +#ifndef MYNEWT_VAL_OS_MAIN_TASK_SANITY_ITVL_MS +#define MYNEWT_VAL_OS_MAIN_TASK_SANITY_ITVL_MS (0) +#endif + #ifndef MYNEWT_VAL_OS_MEMPOOL_CHECK #define MYNEWT_VAL_OS_MEMPOOL_CHECK (0) #endif +#ifndef MYNEWT_VAL_OS_MEMPOOL_GUARD +#define MYNEWT_VAL_OS_MEMPOOL_GUARD (0) +#endif + #ifndef MYNEWT_VAL_OS_MEMPOOL_POISON #define MYNEWT_VAL_OS_MEMPOOL_POISON (0) #endif @@ -359,10 +180,50 @@ #define MYNEWT_VAL_OS_SCHEDULING (1) #endif +#ifndef MYNEWT_VAL_OS_SYSINIT_STAGE +#define MYNEWT_VAL_OS_SYSINIT_STAGE (0) +#endif + #ifndef MYNEWT_VAL_OS_SYSVIEW #define MYNEWT_VAL_OS_SYSVIEW (0) #endif +#ifndef MYNEWT_VAL_OS_SYSVIEW_TRACE_CALLOUT +#define MYNEWT_VAL_OS_SYSVIEW_TRACE_CALLOUT (1) +#endif + +#ifndef MYNEWT_VAL_OS_SYSVIEW_TRACE_EVENTQ +#define MYNEWT_VAL_OS_SYSVIEW_TRACE_EVENTQ (1) +#endif + +#ifndef MYNEWT_VAL_OS_SYSVIEW_TRACE_MBUF +#define MYNEWT_VAL_OS_SYSVIEW_TRACE_MBUF (0) +#endif + +#ifndef MYNEWT_VAL_OS_SYSVIEW_TRACE_MEMPOOL +#define MYNEWT_VAL_OS_SYSVIEW_TRACE_MEMPOOL (0) +#endif + +#ifndef MYNEWT_VAL_OS_SYSVIEW_TRACE_MUTEX +#define MYNEWT_VAL_OS_SYSVIEW_TRACE_MUTEX (1) +#endif + +#ifndef MYNEWT_VAL_OS_SYSVIEW_TRACE_SEM +#define MYNEWT_VAL_OS_SYSVIEW_TRACE_SEM (1) +#endif + +#ifndef MYNEWT_VAL_OS_TASK_RUN_TIME_CPUTIME +#define MYNEWT_VAL_OS_TASK_RUN_TIME_CPUTIME (0) +#endif + +#ifndef MYNEWT_VAL_OS_TIME_DEBUG +#define MYNEWT_VAL_OS_TIME_DEBUG (0) +#endif + +#ifndef MYNEWT_VAL_OS_WATCHDOG_MONITOR +#define MYNEWT_VAL_OS_WATCHDOG_MONITOR (0) +#endif + #ifndef MYNEWT_VAL_SANITY_INTERVAL #define MYNEWT_VAL_SANITY_INTERVAL (15000) #endif @@ -371,16 +232,137 @@ #define MYNEWT_VAL_WATCHDOG_INTERVAL (30000) #endif -/*** libc/baselibc */ -#ifndef MYNEWT_VAL_BASELIBC_ASSERT_FILE_LINE -#define MYNEWT_VAL_BASELIBC_ASSERT_FILE_LINE (0) +/*** @apache-mynewt-core/sys/console/stub */ +#ifndef MYNEWT_VAL_CONSOLE_UART_BAUD +#define MYNEWT_VAL_CONSOLE_UART_BAUD (115200) #endif -#ifndef MYNEWT_VAL_BASELIBC_PRESENT -#define MYNEWT_VAL_BASELIBC_PRESENT (1) +#ifndef MYNEWT_VAL_CONSOLE_UART_DEV +#define MYNEWT_VAL_CONSOLE_UART_DEV ("uart0") #endif -/*** nimble */ +#ifndef MYNEWT_VAL_CONSOLE_UART_FLOW_CONTROL +#define MYNEWT_VAL_CONSOLE_UART_FLOW_CONTROL (UART_FLOW_CTL_NONE) +#endif + +/*** @apache-mynewt-core/sys/flash_map */ +#ifndef MYNEWT_VAL_FLASH_MAP_MAX_AREAS +#define MYNEWT_VAL_FLASH_MAP_MAX_AREAS (10) +#endif + +#ifndef MYNEWT_VAL_FLASH_MAP_SYSINIT_STAGE +#define MYNEWT_VAL_FLASH_MAP_SYSINIT_STAGE (2) +#endif + +/*** @apache-mynewt-core/sys/log/common */ +#ifndef MYNEWT_VAL_DFLT_LOG_LVL +#define MYNEWT_VAL_DFLT_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_DFLT_LOG_MOD +#define MYNEWT_VAL_DFLT_LOG_MOD (0) +#endif + +#ifndef MYNEWT_VAL_LOG_GLOBAL_IDX +#define MYNEWT_VAL_LOG_GLOBAL_IDX (1) +#endif + +/*** @apache-mynewt-core/sys/log/modlog */ +#ifndef MYNEWT_VAL_MODLOG_CONSOLE_DFLT +#define MYNEWT_VAL_MODLOG_CONSOLE_DFLT (1) +#endif + +#ifndef MYNEWT_VAL_MODLOG_LOG_MACROS +#define MYNEWT_VAL_MODLOG_LOG_MACROS (0) +#endif + +#ifndef MYNEWT_VAL_MODLOG_MAX_MAPPINGS +#define MYNEWT_VAL_MODLOG_MAX_MAPPINGS (16) +#endif + +#ifndef MYNEWT_VAL_MODLOG_MAX_PRINTF_LEN +#define MYNEWT_VAL_MODLOG_MAX_PRINTF_LEN (128) +#endif + +#ifndef MYNEWT_VAL_MODLOG_SYSINIT_STAGE +#define MYNEWT_VAL_MODLOG_SYSINIT_STAGE (100) +#endif + +/*** @apache-mynewt-core/sys/log/stub */ +#ifndef MYNEWT_VAL_LOG_CONSOLE +#define MYNEWT_VAL_LOG_CONSOLE (1) +#endif + +#ifndef MYNEWT_VAL_LOG_FCB +#define MYNEWT_VAL_LOG_FCB (0) +#endif + +#ifndef MYNEWT_VAL_LOG_FCB_SLOT1 +#define MYNEWT_VAL_LOG_FCB_SLOT1 (0) +#endif + +#ifndef MYNEWT_VAL_LOG_LEVEL +#define MYNEWT_VAL_LOG_LEVEL (255) +#endif + +/*** @apache-mynewt-core/sys/mfg */ +#ifndef MYNEWT_VAL_MFG_LOG_LVL +#define MYNEWT_VAL_MFG_LOG_LVL (15) +#endif + +#ifndef MYNEWT_VAL_MFG_LOG_MODULE +#define MYNEWT_VAL_MFG_LOG_MODULE (128) +#endif + +#ifndef MYNEWT_VAL_MFG_MAX_MMRS +#define MYNEWT_VAL_MFG_MAX_MMRS (2) +#endif + +#ifndef MYNEWT_VAL_MFG_SYSINIT_STAGE +#define MYNEWT_VAL_MFG_SYSINIT_STAGE (100) +#endif + +/*** @apache-mynewt-core/sys/sys */ +#ifndef MYNEWT_VAL_DEBUG_PANIC_ENABLED +#define MYNEWT_VAL_DEBUG_PANIC_ENABLED (1) +#endif + +/*** @apache-mynewt-core/sys/sysdown */ +#ifndef MYNEWT_VAL_SYSDOWN_CONSTRAIN_DOWN +#define MYNEWT_VAL_SYSDOWN_CONSTRAIN_DOWN (1) +#endif + +#ifndef MYNEWT_VAL_SYSDOWN_PANIC_FILE_LINE +#define MYNEWT_VAL_SYSDOWN_PANIC_FILE_LINE (0) +#endif + +#ifndef MYNEWT_VAL_SYSDOWN_PANIC_MESSAGE +#define MYNEWT_VAL_SYSDOWN_PANIC_MESSAGE (0) +#endif + +#ifndef MYNEWT_VAL_SYSDOWN_TIMEOUT_MS +#define MYNEWT_VAL_SYSDOWN_TIMEOUT_MS (10000) +#endif + +/*** @apache-mynewt-core/sys/sysinit */ +#ifndef MYNEWT_VAL_SYSINIT_CONSTRAIN_INIT +#define MYNEWT_VAL_SYSINIT_CONSTRAIN_INIT (1) +#endif + +#ifndef MYNEWT_VAL_SYSINIT_PANIC_FILE_LINE +#define MYNEWT_VAL_SYSINIT_PANIC_FILE_LINE (0) +#endif + +#ifndef MYNEWT_VAL_SYSINIT_PANIC_MESSAGE +#define MYNEWT_VAL_SYSINIT_PANIC_MESSAGE (0) +#endif + +/*** @apache-mynewt-core/util/rwlock */ +#ifndef MYNEWT_VAL_RWLOCK_DEBUG +#define MYNEWT_VAL_RWLOCK_DEBUG (0) +#endif + +/*** @apache-mynewt-nimble/nimble */ #ifndef MYNEWT_VAL_BLE_EXT_ADV #define MYNEWT_VAL_BLE_EXT_ADV (0) #endif @@ -394,13 +376,21 @@ #endif #ifndef MYNEWT_VAL_BLE_MAX_PERIODIC_SYNCS -#define MYNEWT_VAL_BLE_MAX_PERIODIC_SYNCS (0) +#define MYNEWT_VAL_BLE_MAX_PERIODIC_SYNCS (1) #endif #ifndef MYNEWT_VAL_BLE_MULTI_ADV_INSTANCES #define MYNEWT_VAL_BLE_MULTI_ADV_INSTANCES (0) #endif +#ifndef MYNEWT_VAL_BLE_PERIODIC_ADV +#define MYNEWT_VAL_BLE_PERIODIC_ADV (0) +#endif + +#ifndef MYNEWT_VAL_BLE_PERIODIC_ADV_SYNC_TRANSFER +#define MYNEWT_VAL_BLE_PERIODIC_ADV_SYNC_TRANSFER (0) +#endif + #ifndef MYNEWT_VAL_BLE_ROLE_BROADCASTER #define MYNEWT_VAL_BLE_ROLE_BROADCASTER (1) #endif @@ -417,6 +407,10 @@ #define MYNEWT_VAL_BLE_ROLE_PERIPHERAL (1) #endif +#ifndef MYNEWT_VAL_BLE_VERSION +#define MYNEWT_VAL_BLE_VERSION (50) +#endif + #ifndef MYNEWT_VAL_BLE_WHITELIST #define MYNEWT_VAL_BLE_WHITELIST (1) #endif @@ -590,11 +584,6 @@ #define MYNEWT_VAL_BLE_ATT_PREFERRED_MTU (256) #endif - -#ifndef MYNEWT_VAL_BLE_PERIODIC_ADV -#define MYNEWT_VAL_BLE_PERIODIC_ADV (0) -#endif - #ifndef MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO #define MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO (1) #endif @@ -771,6 +760,14 @@ #define MYNEWT_VAL_BLE_HS_FLOW_CTRL_TX_ON_DISCONNECT (0) #endif +#ifndef MYNEWT_VAL_BLE_HS_LOG_LVL +#define MYNEWT_VAL_BLE_HS_LOG_LVL (1) +#endif + +#ifndef MYNEWT_VAL_BLE_HS_LOG_MOD +#define MYNEWT_VAL_BLE_HS_LOG_MOD (4) +#endif + #ifndef MYNEWT_VAL_BLE_HS_PHONY_HCI_ACKS #define MYNEWT_VAL_BLE_HS_PHONY_HCI_ACKS (0) #endif @@ -779,10 +776,30 @@ #define MYNEWT_VAL_BLE_HS_REQUIRE_OS (1) #endif +#ifndef MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN +#define MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN (1) +#endif + +#ifndef MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN_TIMEOUT +#define MYNEWT_VAL_BLE_HS_STOP_ON_SHUTDOWN_TIMEOUT (2000) +#endif + +#ifndef MYNEWT_VAL_BLE_HS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_HS_SYSINIT_STAGE (200) +#endif + #ifndef MYNEWT_VAL_BLE_L2CAP_COC_MAX_NUM #define MYNEWT_VAL_BLE_L2CAP_COC_MAX_NUM (0) #endif +#ifndef MYNEWT_VAL_BLE_L2CAP_COC_MPS +#define MYNEWT_VAL_BLE_L2CAP_COC_MPS (MYNEWT_VAL_MSYS_1_BLOCK_SIZE-8) +#endif + +#ifndef MYNEWT_VAL_BLE_L2CAP_ENHANCED_COC +#define MYNEWT_VAL_BLE_L2CAP_ENHANCED_COC (0) +#endif + #ifndef MYNEWT_VAL_BLE_L2CAP_JOIN_RX_FRAGS #define MYNEWT_VAL_BLE_L2CAP_JOIN_RX_FRAGS (1) #endif @@ -816,7 +833,7 @@ #endif #ifndef MYNEWT_VAL_BLE_MONITOR_RTT_BUFFER_NAME -#define MYNEWT_VAL_BLE_MONITOR_RTT_BUFFER_NAME ("monitor") +#define MYNEWT_VAL_BLE_MONITOR_RTT_BUFFER_NAME ("btmonitor") #endif #ifndef MYNEWT_VAL_BLE_MONITOR_RTT_BUFFER_SIZE @@ -879,6 +896,10 @@ #define MYNEWT_VAL_BLE_SM_SC (1) #endif +#ifndef MYNEWT_VAL_BLE_SM_SC_DEBUG_KEYS +#define MYNEWT_VAL_BLE_SM_SC_DEBUG_KEYS (0) +#endif + #ifndef MYNEWT_VAL_BLE_SM_THEIR_KEY_DIST #define MYNEWT_VAL_BLE_SM_THEIR_KEY_DIST (0) #endif @@ -891,17 +912,20 @@ #define MYNEWT_VAL_BLE_STORE_MAX_CCCDS (8) #endif -/*** nimble/host/services/ans */ +/*** @apache-mynewt-nimble/nimble/host/services/ans */ #ifndef MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT #define MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT (0) #endif +#ifndef MYNEWT_VAL_BLE_SVC_ANS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_ANS_SYSINIT_STAGE (303) +#endif #ifndef MYNEWT_VAL_BLE_SVC_ANS_UNR_ALERT_CAT #define MYNEWT_VAL_BLE_SVC_ANS_UNR_ALERT_CAT (0) #endif -/*** nimble/host/services/bas */ +/*** @apache-mynewt-nimble/nimble/host/services/bas */ #ifndef MYNEWT_VAL_BLE_SVC_BAS_BATTERY_LEVEL_NOTIFY_ENABLE #define MYNEWT_VAL_BLE_SVC_BAS_BATTERY_LEVEL_NOTIFY_ENABLE (1) #endif @@ -1222,6 +1246,81 @@ #define MYNEWT_VAL_BLE_MESH_TX_SEG_MSG_COUNT (4) #endif +#ifndef MYNEWT_VAL_BLE_SVC_BAS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_BAS_SYSINIT_STAGE (303) +#endif + +/*** @apache-mynewt-nimble/nimble/host/services/dis */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_DEFAULT_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_FIRMWARE_REVISION_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_HARDWARE_REVISION_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_MANUFACTURER_NAME_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_DEFAULT ("Apache Mynewt NimBLE") +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_MODEL_NUMBER_READ_PERM (0) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_SERIAL_NUMBER_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_SOFTWARE_REVISION_READ_PERM (-1) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_DIS_SYSINIT_STAGE (303) +#endif + +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_DEFAULT +#define MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_DEFAULT (NULL) +#endif + +/* Value copied from BLE_SVC_DIS_DEFAULT_READ_PERM */ +#ifndef MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_READ_PERM +#define MYNEWT_VAL_BLE_SVC_DIS_SYSTEM_ID_READ_PERM (-1) +#endif + /*** @apache-mynewt-nimble/nimble/host/services/gap */ #ifndef MYNEWT_VAL_BLE_SVC_GAP_APPEARANCE #define MYNEWT_VAL_BLE_SVC_GAP_APPEARANCE (0) @@ -1263,32 +1362,38 @@ #define MYNEWT_VAL_BLE_SVC_GAP_PPCP_SUPERVISION_TMO (0) #endif -/*** nimble/transport */ -#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_EMSPI -#define MYNEWT_VAL_BLE_HCI_TRANSPORT_EMSPI (0) +#ifndef MYNEWT_VAL_BLE_SVC_GAP_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_GAP_SYSINIT_STAGE (301) #endif -/* Overridden by targets/porting-nimble (defined by nimble/transport) */ -#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_NIMBLE_BUILTIN -#define MYNEWT_VAL_BLE_HCI_TRANSPORT_NIMBLE_BUILTIN (0) +/*** @apache-mynewt-nimble/nimble/host/services/gatt */ +#ifndef MYNEWT_VAL_BLE_SVC_GATT_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_GATT_SYSINIT_STAGE (302) #endif -#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_RAM -#define MYNEWT_VAL_BLE_HCI_TRANSPORT_RAM (0) +/*** @apache-mynewt-nimble/nimble/host/services/ias */ +#ifndef MYNEWT_VAL_BLE_SVC_IAS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_IAS_SYSINIT_STAGE (303) #endif -#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_SOCKET -#define MYNEWT_VAL_BLE_HCI_TRANSPORT_SOCKET (0) +/*** @apache-mynewt-nimble/nimble/host/services/ipss */ +#ifndef MYNEWT_VAL_BLE_SVC_IPSS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_IPSS_SYSINIT_STAGE (303) #endif -/* Overridden by targets/porting-nimble (defined by nimble/transport) */ -#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_UART -#define MYNEWT_VAL_BLE_HCI_TRANSPORT_UART (1) +/*** @apache-mynewt-nimble/nimble/host/services/lls */ +#ifndef MYNEWT_VAL_BLE_SVC_LLS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_LLS_SYSINIT_STAGE (303) #endif -/*** nimble/transport/uart */ +/*** @apache-mynewt-nimble/nimble/host/services/tps */ +#ifndef MYNEWT_VAL_BLE_SVC_TPS_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SVC_TPS_SYSINIT_STAGE (303) +#endif + +/*** @apache-mynewt-nimble/nimble/transport/socket */ #ifndef MYNEWT_VAL_BLE_ACL_BUF_COUNT -#define MYNEWT_VAL_BLE_ACL_BUF_COUNT (12) +#define MYNEWT_VAL_BLE_ACL_BUF_COUNT (24) #endif #ifndef MYNEWT_VAL_BLE_ACL_BUF_SIZE @@ -1311,74 +1416,73 @@ #define MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT (8) #endif -/* Overridden by targets/porting-nimble (defined by nimble/transport/uart) */ -#ifndef MYNEWT_VAL_BLE_HCI_UART_BAUD -#define MYNEWT_VAL_BLE_HCI_UART_BAUD (115200) +#ifndef MYNEWT_VAL_BLE_SOCK_CLI_SYSINIT_STAGE +#define MYNEWT_VAL_BLE_SOCK_CLI_SYSINIT_STAGE (500) #endif -#ifndef MYNEWT_VAL_BLE_HCI_UART_DATA_BITS -#define MYNEWT_VAL_BLE_HCI_UART_DATA_BITS (8) +#ifndef MYNEWT_VAL_BLE_SOCK_LINUX_DEV +#define MYNEWT_VAL_BLE_SOCK_LINUX_DEV (0) #endif -/* Overridden by targets/porting-nimble (defined by nimble/transport/uart) */ -#ifndef MYNEWT_VAL_BLE_HCI_UART_FLOW_CTRL -#define MYNEWT_VAL_BLE_HCI_UART_FLOW_CTRL (0) +#ifndef MYNEWT_VAL_BLE_SOCK_STACK_SIZE +#define MYNEWT_VAL_BLE_SOCK_STACK_SIZE (80) #endif -#ifndef MYNEWT_VAL_BLE_HCI_UART_PARITY -#define MYNEWT_VAL_BLE_HCI_UART_PARITY (HAL_UART_PARITY_NONE) +#ifndef MYNEWT_VAL_BLE_SOCK_TASK_PRIO +#define MYNEWT_VAL_BLE_SOCK_TASK_PRIO (9) #endif -#ifndef MYNEWT_VAL_BLE_HCI_UART_PORT -#define MYNEWT_VAL_BLE_HCI_UART_PORT (0) +#ifndef MYNEWT_VAL_BLE_SOCK_TCP_PORT +#define MYNEWT_VAL_BLE_SOCK_TCP_PORT (14433) #endif -#ifndef MYNEWT_VAL_BLE_HCI_UART_STOP_BITS -#define MYNEWT_VAL_BLE_HCI_UART_STOP_BITS (1) +#ifndef MYNEWT_VAL_BLE_SOCK_USE_LINUX_BLUE +#define MYNEWT_VAL_BLE_SOCK_USE_LINUX_BLUE (0) #endif -/*** sys/console/stub */ -#ifndef MYNEWT_VAL_CONSOLE_UART_BAUD -#define MYNEWT_VAL_CONSOLE_UART_BAUD (115200) +#ifndef MYNEWT_VAL_BLE_SOCK_USE_TCP +#define MYNEWT_VAL_BLE_SOCK_USE_TCP (1) #endif -#ifndef MYNEWT_VAL_CONSOLE_UART_DEV -#define MYNEWT_VAL_CONSOLE_UART_DEV ("uart0") +/*** newt */ +#ifndef MYNEWT_VAL_APP_NAME +#define MYNEWT_VAL_APP_NAME ("dummy_app") #endif -#ifndef MYNEWT_VAL_CONSOLE_UART_FLOW_CONTROL -#define MYNEWT_VAL_CONSOLE_UART_FLOW_CONTROL (UART_FLOW_CTL_NONE) +#ifndef MYNEWT_VAL_APP_dummy_app +#define MYNEWT_VAL_APP_dummy_app (1) #endif -/*** sys/flash_map */ -#ifndef MYNEWT_VAL_FLASH_MAP_MAX_AREAS -#define MYNEWT_VAL_FLASH_MAP_MAX_AREAS (10) +#ifndef MYNEWT_VAL_ARCH_NAME +#define MYNEWT_VAL_ARCH_NAME ("dummy") #endif -/*** sys/log/stub */ -#ifndef MYNEWT_VAL_LOG_CONSOLE -#define MYNEWT_VAL_LOG_CONSOLE (1) +#ifndef MYNEWT_VAL_ARCH_dummy +#define MYNEWT_VAL_ARCH_dummy (1) #endif -#ifndef MYNEWT_VAL_LOG_FCB -#define MYNEWT_VAL_LOG_FCB (0) +#ifndef MYNEWT_VAL_BSP_NAME +#define MYNEWT_VAL_BSP_NAME ("dummy_bsp") #endif -#ifndef MYNEWT_VAL_LOG_LEVEL -#define MYNEWT_VAL_LOG_LEVEL (255) +#ifndef MYNEWT_VAL_BSP_dummy_bsp +#define MYNEWT_VAL_BSP_dummy_bsp (1) #endif -/*** sys/sysinit */ -#ifndef MYNEWT_VAL_SYSINIT_CONSTRAIN_INIT -#define MYNEWT_VAL_SYSINIT_CONSTRAIN_INIT (1) +#ifndef MYNEWT_VAL_NEWT_FEATURE_LOGCFG +#define MYNEWT_VAL_NEWT_FEATURE_LOGCFG (1) #endif -#ifndef MYNEWT_VAL_SYSINIT_PANIC_FILE_LINE -#define MYNEWT_VAL_SYSINIT_PANIC_FILE_LINE (0) +#ifndef MYNEWT_VAL_NEWT_FEATURE_SYSDOWN +#define MYNEWT_VAL_NEWT_FEATURE_SYSDOWN (1) #endif -#ifndef MYNEWT_VAL_SYSINIT_PANIC_MESSAGE -#define MYNEWT_VAL_SYSINIT_PANIC_MESSAGE (0) +#ifndef MYNEWT_VAL_TARGET_NAME +#define MYNEWT_VAL_TARGET_NAME ("porting_default") +#endif + +#ifndef MYNEWT_VAL_TARGET_porting_default +#define MYNEWT_VAL_TARGET_porting_default (1) #endif #endif #endif diff --git a/lib/libesp32_div/NimBLE-Arduino/src/sysflash/sysflash.h b/lib/libesp32_div/NimBLE-Arduino/src/sysflash/sysflash.h new file mode 100644 index 000000000..413cb2679 --- /dev/null +++ b/lib/libesp32_div/NimBLE-Arduino/src/sysflash/sysflash.h @@ -0,0 +1,24 @@ +/** + * This file was generated by Apache newt version: 1.8.0-dev + */ + +#ifndef H_MYNEWT_SYSFLASH_ +#define H_MYNEWT_SYSFLASH_ + +#include "flash_map/flash_map.h" + +/** + * This flash map definition is used for two purposes: + * 1. To locate the meta area, which contains the true flash map definition. + * 2. As a fallback in case the meta area cannot be read from flash. + */ +extern const struct flash_area sysflash_map_dflt[6]; + +#define FLASH_AREA_BOOTLOADER 0 +#define FLASH_AREA_IMAGE_0 1 +#define FLASH_AREA_IMAGE_1 2 +#define FLASH_AREA_IMAGE_SCRATCH 3 +#define FLASH_AREA_REBOOT_LOG 16 +#define FLASH_AREA_NFFS 17 + +#endif diff --git a/pio-tools/cxx_flags.py b/pio-tools/cxx_flags.py new file mode 100644 index 000000000..74cf99e7c --- /dev/null +++ b/pio-tools/cxx_flags.py @@ -0,0 +1,4 @@ +Import("env") + +# General options that are passed to the C++ compiler +env.Append(CXXFLAGS=["-fpermissive"]) \ No newline at end of file diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 05f221c56..1d1da267c 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -49,31 +49,14 @@ build_flags = ${env:tasmota32_base.build_flags} extends = env:tasmota32_base board = esp32s2 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/385/framework-arduinoespressif32-master-cd287c4d6.tar.gz - platformio/tool-mklittlefs @ ~1.203.200522 -build_unflags = ${env:tasmota32_base.build_unflags} -build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_LITE -lib_extra_dirs = lib/libesp32 - lib/lib_basic -lib_ignore = - NimBLE-Arduino - Micro-RTSP - ESP32-HomeKit - -; *** EXPERIMENTAL Tasmota version for ESP32-C3 -[env:tasmota32c3] -extends = env:tasmota32_base -board = esp32c3 -platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/385/framework-arduinoespressif32-master-cd287c4d6.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/408/framework-arduinoespressif32-master-54caa4c74.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable - -mtarget-align - -DNDEBUG + -Wstringop-overflow build_flags = ${env:tasmota32_base.build_flags} -Wno-switch-unreachable - ;-DESP32_STAGE=true + -Wno-stringop-overflow lib_extra_dirs = lib/libesp32 lib/libesp32_lvgl lib/lib_basic @@ -82,24 +65,71 @@ lib_extra_dirs = lib/libesp32 lib/lib_display lib_ignore = NimBLE-Arduino + TTGO TWatch Library + ESP32-HomeKit + Micro-RTSP + +; *** EXPERIMENTAL Tasmota version for ESP32-C3 +[env:tasmota32c3] +extends = env:tasmota32_base +board = esp32c3 +platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/408/framework-arduinoespressif32-master-54caa4c74.tar.gz + platformio/tool-mklittlefs @ ~1.203.200522 +build_unflags = ${env:tasmota32_base.build_unflags} + -Wswitch-unreachable + -mtarget-align + -DNDEBUG +build_flags = ${env:tasmota32_base.build_flags} + -Wno-switch-unreachable +; *** Comment next two lines to disable BLE + -DUSE_BLE_ESP32 + -DUSE_MI_ESP32 + ;-DESP32_STAGE=true +extra_scripts = ${common.extra_scripts} + pre:pio-tools/cxx_flags.py +lib_extra_dirs = lib/libesp32 + lib/libesp32_div + lib/libesp32_lvgl + lib/lib_basic + lib/lib_i2c + lib/lib_ssl + lib/lib_display +lib_ignore = +lib_ignore = + TTGO TWatch Library + ESP32-HomeKit Micro-RTSP ; *** EXPERIMENTAL Tasmota version for ESP32 IDF4.4. [env:tasmota32idf4] extends = env:tasmota32_base platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/385/framework-arduinoespressif32-master-cd287c4d6.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/408/framework-arduinoespressif32-master-54caa4c74.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable -Wincompatible-pointer-types build_flags = ${env:tasmota32_base.build_flags} -Wno-switch-unreachable + -Wdiscarded-qualifiers +; ***Uncomment next two lines to enable BLE + ;-DUSE_BLE_ESP32 + ;-DUSE_MI_ESP32 ;-DESP32_STAGE=true +extra_scripts = ${common.extra_scripts} + pre:pio-tools/cxx_flags.py +lib_extra_dirs = lib/libesp32 + lib/libesp32_div + lib/libesp32_lvgl + lib/lib_basic + lib/lib_i2c + lib/lib_ssl + lib/lib_display [env:tasmota32-rangeextender] extends = env:tasmota32idf4 -build_flags = ${env:tasmota32idf4.build_flags} +build_flags = ${env:tasmota32idf4.build_flags} -D FIRMWARE_TASMOTA32 -D USE_WIFI_RANGE_EXTENDER -D USE_WIFI_RANGE_EXTENDER_NAPT diff --git a/tasmota/xdrv_79_esp32_ble.ino b/tasmota/xdrv_79_esp32_ble.ino index 9f4ed2e9c..c96f5f8e2 100644 --- a/tasmota/xdrv_79_esp32_ble.ino +++ b/tasmota/xdrv_79_esp32_ble.ino @@ -31,8 +31,8 @@ #define USE_BLE_ESP32 #endif -#ifdef ESP32 // ESP32 only. Use define USE_HM10 for ESP8266 support -#if CONFIG_IDF_TARGET_ESP32 +#ifdef ESP32 // ESP32 family only. Use define USE_HM10 for ESP8266 support +#if defined CONFIG_IDF_TARGET_ESP32 || defined CONFIG_IDF_TARGET_ESP32C3 #ifdef USE_BLE_ESP32 /* @@ -3723,7 +3723,7 @@ void sendExample(){ #endif -#endif // CONFIG_IDF_TARGET_ESP32 +#endif // CONFIG_IDF_TARGET_ESP32 or CONFIG_IDF_TARGET_ESP32C3 #endif // ESP32 diff --git a/tasmota/xsns_62_esp32_mi.ino b/tasmota/xsns_62_esp32_mi.ino index ce9ac10ca..ecc9d228c 100644 --- a/tasmota/xsns_62_esp32_mi.ino +++ b/tasmota/xsns_62_esp32_mi.ino @@ -49,7 +49,7 @@ */ #ifndef USE_BLE_ESP32 #ifdef ESP32 // ESP32 only. Use define USE_HM10 for ESP8266 support -#if CONFIG_IDF_TARGET_ESP32 +#if defined CONFIG_IDF_TARGET_ESP32 || defined CONFIG_IDF_TARGET_ESP32C3 #ifdef USE_MI_ESP32 @@ -2334,6 +2334,6 @@ bool Xsns62(uint8_t function) return result; } #endif // USE_MI_ESP32 -#endif // CONFIG_IDF_TARGET_ESP32 +#endif // CONFIG_IDF_TARGET_ESP32 or CONFIG_IDF_TARGET_ESP32C3 #endif // ESP32 #endif // USE_BLE_ESP32 diff --git a/tasmota/xsns_62_esp32_mi_ble.ino b/tasmota/xsns_62_esp32_mi_ble.ino index f8011351f..635204cb0 100644 --- a/tasmota/xsns_62_esp32_mi_ble.ino +++ b/tasmota/xsns_62_esp32_mi_ble.ino @@ -70,8 +70,8 @@ // for testing of BLE_ESP32, we remove xsns_62_MI_ESP32.ino completely, and instead add this modified xsns_52_ibeacon_BLE_ESP32.ino #ifdef USE_BLE_ESP32 -#ifdef ESP32 // ESP32 only. Use define USE_HM10 for ESP8266 support -#if CONFIG_IDF_TARGET_ESP32 +#ifdef ESP32 // ESP32 family only. Use define USE_HM10 for ESP8266 support +#if defined CONFIG_IDF_TARGET_ESP32 || defined CONFIG_IDF_TARGET_ESP32C3 #ifdef USE_MI_ESP32 @@ -3269,7 +3269,7 @@ bool Xsns62(uint8_t function) return result; } #endif // USE_MI_ESP32 -#endif // CONFIG_IDF_TARGET_ESP32 +#endif // CONFIG_IDF_TARGET_ESP32 or CONFIG_IDF_TARGET_ESP32C3 #endif // ESP32 #endif \ No newline at end of file From 3f81f939db027aaae36728621a3559eacc811296 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Sun, 22 Aug 2021 15:59:01 +0200 Subject: [PATCH 038/317] Update xdrv_27_shutter.ino Fixing WDT reset on shutters with stepper motors during deceleration #12849 --- tasmota/xdrv_27_shutter.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index b886c58f4..7368ecef5 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -1084,6 +1084,7 @@ void CmndShutterPosition(void) } int8_t new_shutterdirection = Shutter[index].real_position < Shutter[index].target_position ? 1 : -1; if (Shutter[index].direction == -new_shutterdirection) { + Shutter[index].start_position = Shutter[index].target_position; ShutterPowerOff(index); } if (Shutter[index].direction != new_shutterdirection) { From e8d1be6b025d3f15e2d39c7b6166601915e657ce Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 22 Aug 2021 16:03:16 +0200 Subject: [PATCH 039/317] revert enable always PSRAM --- boards/esp32_16M.json | 2 +- boards/esp32_4M.json | 2 +- boards/esp32_8M.json | 2 +- boards/esp32_solo1_4M.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boards/esp32_16M.json b/boards/esp32_16M.json index 69abb9a09..7bcc0db53 100644 --- a/boards/esp32_16M.json +++ b/boards/esp32_16M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_16M", + "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_16M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_4M.json b/boards/esp32_4M.json index f43be6848..4f549bb3e 100644 --- a/boards/esp32_4M.json +++ b/boards/esp32_4M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M", + "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_4M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_8M.json b/boards/esp32_8M.json index adcd0caaa..616eb16d3 100644 --- a/boards/esp32_8M.json +++ b/boards/esp32_8M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_8M", + "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_8M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_solo1_4M.json b/boards/esp32_solo1_4M.json index eb9d242de..64759d331 100644 --- a/boards/esp32_solo1_4M.json +++ b/boards/esp32_solo1_4M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M", + "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_4M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", From 5eb1ab0ab489e60fb98da26c85347627bb4ec208 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 22 Aug 2021 16:09:56 +0200 Subject: [PATCH 040/317] Fix WDT reset on shutters with stepper motors during deceleration (#12849) --- CHANGELOG.md | 3 +++ RELEASENOTES.md | 1 + 2 files changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7be2b3859..f358e39ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ All notable changes to this project will be documented in this file. - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility - Support for IEM3155 Wattmeter (#12940) +### Fixed +- WDT reset on shutters with stepper motors during deceleration (#12849) + ## [9.5.0.6] 20210820 ### Added - Version bump to monitor possible HTTP issues releated to ``SetOption128`` diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 876a178df..90ebec0c6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -165,4 +165,5 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Discovery fails when using ``%hostname%`` in a topic [#12710](https://github.com/arendst/Tasmota/issues/12710) - ESP32 buzzer in PWM mode exception (#12717)[#12717](https://github.com/arendst/Tasmota/issues/12717) - Neopool communication error [#12813](https://github.com/arendst/Tasmota/issues/12813) +- WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) - Negative power values for ADE7953 based devices like Shelly EM [#12874](https://github.com/arendst/Tasmota/issues/12874) From 97cbd167e7b3a1842e9f60311b95d6923f530012 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 22 Aug 2021 16:35:33 +0200 Subject: [PATCH 041/317] rm -Wdiscarded-qualifiers --- platformio_tasmota_cenv_sample.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 1d1da267c..904a10a06 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -112,7 +112,6 @@ build_unflags = ${env:tasmota32_base.build_unflags} -Wincompatible-pointer-types build_flags = ${env:tasmota32_base.build_flags} -Wno-switch-unreachable - -Wdiscarded-qualifiers ; ***Uncomment next two lines to enable BLE ;-DUSE_BLE_ESP32 ;-DUSE_MI_ESP32 From db7ee8424edeeb621760b568206406556ed4d1db Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 22 Aug 2021 22:44:21 +0200 Subject: [PATCH 042/317] Zigee increase auto-bind range #10399 --- tasmota/my_user_config.h | 2 ++ tasmota/xdrv_23_zigbee_8_parsers.ino | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 9357a1ea5..1dbb347cb 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -856,6 +856,8 @@ // Auto-binding constants, see `Z_autoAttributeReporting` + #define USE_ZIGBEE_AUTOBIND_MAX_ENDPOINTS 8 // max number of endpoint receiving auto-bind requests + #define USE_ZIGBEE_AUTOBIND_MAX_CLUSTER 0x10 // max endpoint number (excluded receiving auto-bind requests) // Below are the threshold for attribute reporting #define USE_ZIGBEE_AUTOBIND_BATTVOLTAGE 0.2 // V #define USE_ZIGBEE_AUTOBIND_BATTPERCENT 5 // % diff --git a/tasmota/xdrv_23_zigbee_8_parsers.ino b/tasmota/xdrv_23_zigbee_8_parsers.ino index 72b994a57..2f3b9688f 100644 --- a/tasmota/xdrv_23_zigbee_8_parsers.ino +++ b/tasmota/xdrv_23_zigbee_8_parsers.ino @@ -638,7 +638,7 @@ int32_t Z_ReceiveActiveEp(int32_t res, const SBuffer &buf) { for (uint32_t i = 0; i < activeEpCount; i++) { uint8_t ep = activeEpList[i]; zigbee_devices.getShortAddr(nwkAddr).addEndpoint(ep); - if ((i < 4) && (ep < 0x10)) { + if ((i < USE_ZIGBEE_AUTOBIND_MAX_ENDPOINTS) && (ep < USE_ZIGBEE_AUTOBIND_MAX_CLUSTER)) { zigbee_devices.queueTimer(nwkAddr, 0 /* groupaddr */, 1500, ep /* fake cluster as ep */, ep, Z_CAT_EP_DESC, 0 /* value */, &Z_SendSimpleDescReq); } } From aa6af84693973513b36c392aaf24bd5fafb9425e Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Mon, 23 Aug 2021 13:29:15 +0200 Subject: [PATCH 043/317] Berry vararg prep (#12951) * Berry prepare for vararg, and fix string format * Cosmetic fix --- lib/libesp32/Berry/default/be_driverlib.c | 30 +++++++++-------- lib/libesp32/Berry/default/be_i2c_driverlib.c | 8 +++++ .../Berry/default/be_lvgl_signal_bars_lib.c | 17 ++++++---- .../Berry/default/be_lvgl_signal_wifi_lib.c | 2 ++ lib/libesp32/Berry/default/be_modtab.c | 2 +- lib/libesp32/Berry/default/be_tasmotalib.c | 13 ++++++++ lib/libesp32/Berry/default/be_timer_class.c | 8 +++-- lib/libesp32/Berry/default/be_wirelib.c | 2 ++ .../generate/be_fixed_be_class_aes_gcm.h | 4 +-- .../be_fixed_be_class_audio_file_source.h | 2 +- .../be_fixed_be_class_audio_generator.h | 2 +- .../generate/be_fixed_be_class_audio_output.h | 2 +- .../Berry/generate/be_fixed_be_class_bytes.h | 2 +- .../Berry/generate/be_fixed_be_class_list.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_arc.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_bar.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_btn.h | 2 +- .../generate/be_fixed_be_class_lv_btnmatrix.h | 2 +- .../generate/be_fixed_be_class_lv_calendar.h | 2 +- .../generate/be_fixed_be_class_lv_canvas.h | 2 +- .../generate/be_fixed_be_class_lv_chart.h | 2 +- .../generate/be_fixed_be_class_lv_checkbox.h | 2 +- .../generate/be_fixed_be_class_lv_color.h | 2 +- .../generate/be_fixed_be_class_lv_cont.h | 2 +- .../generate/be_fixed_be_class_lv_cpicker.h | 2 +- .../generate/be_fixed_be_class_lv_ctypes.h | 2 +- .../generate/be_fixed_be_class_lv_dropdown.h | 2 +- .../generate/be_fixed_be_class_lv_font.h | 2 +- .../generate/be_fixed_be_class_lv_gauge.h | 2 +- .../generate/be_fixed_be_class_lv_group.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_img.h | 2 +- .../generate/be_fixed_be_class_lv_imgbtn.h | 2 +- .../generate/be_fixed_be_class_lv_indev.h | 2 +- .../generate/be_fixed_be_class_lv_keyboard.h | 2 +- .../generate/be_fixed_be_class_lv_label.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_led.h | 2 +- .../generate/be_fixed_be_class_lv_line.h | 2 +- .../generate/be_fixed_be_class_lv_linemeter.h | 2 +- .../generate/be_fixed_be_class_lv_list.h | 2 +- .../generate/be_fixed_be_class_lv_msgbox.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_obj.h | 2 +- .../generate/be_fixed_be_class_lv_objmask.h | 2 +- .../generate/be_fixed_be_class_lv_page.h | 2 +- .../generate/be_fixed_be_class_lv_roller.h | 2 +- .../generate/be_fixed_be_class_lv_slider.h | 2 +- .../generate/be_fixed_be_class_lv_spinbox.h | 2 +- .../generate/be_fixed_be_class_lv_spinner.h | 2 +- .../generate/be_fixed_be_class_lv_style.h | 2 +- .../generate/be_fixed_be_class_lv_switch.h | 2 +- .../generate/be_fixed_be_class_lv_table.h | 2 +- .../generate/be_fixed_be_class_lv_tabview.h | 2 +- .../generate/be_fixed_be_class_lv_textarea.h | 2 +- .../generate/be_fixed_be_class_lv_tileview.h | 2 +- .../Berry/generate/be_fixed_be_class_lv_win.h | 2 +- .../Berry/generate/be_fixed_be_class_map.h | 2 +- .../Berry/generate/be_fixed_be_class_md5.h | 2 +- .../Berry/generate/be_fixed_be_class_range.h | 4 +-- .../generate/be_fixed_be_class_tasmota.h | 14 ++++---- .../be_fixed_be_class_tasmota_i2c_driver.h | 6 ++-- .../generate/be_fixed_be_class_tasmota_wire.h | 2 +- .../Berry/generate/be_fixed_be_lvgl_cb.h | 2 +- lib/libesp32/Berry/src/be_byteslib.c | 11 ++++--- lib/libesp32/Berry/src/be_constobj.h | 4 +-- lib/libesp32/Berry/src/be_debug.c | 21 +++++++++--- lib/libesp32/Berry/src/be_decoder.h | 3 ++ lib/libesp32/Berry/src/be_opcodes.h | 4 +-- lib/libesp32/Berry/src/be_solidifylib.c | 9 ++--- lib/libesp32/Berry/src/be_strlib.c | 6 +++- lib/libesp32/Berry/src/berry.h | 4 +-- lib/libesp32/Berry/tests/bytes.be | 33 ++----------------- lib/libesp32/Berry/tests/bytes_b64.be | 15 +++++++++ lib/libesp32/Berry/tests/compiler.be | 28 ++++++++++++++++ lib/libesp32/Berry/tests/string.be | 6 ++++ lib/libesp32/Berry/tools/coc/hash_map.cpp | 2 +- 74 files changed, 215 insertions(+), 139 deletions(-) create mode 100644 lib/libesp32/Berry/tests/bytes_b64.be create mode 100644 lib/libesp32/Berry/tests/compiler.be diff --git a/lib/libesp32/Berry/default/be_driverlib.c b/lib/libesp32/Berry/default/be_driverlib.c index 6035a8736..72874c08b 100644 --- a/lib/libesp32/Berry/default/be_driverlib.c +++ b/lib/libesp32/Berry/default/be_driverlib.c @@ -13,6 +13,7 @@ be_local_closure(init, /* name */ be_nested_proto( 1, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -36,6 +37,7 @@ be_local_closure(get_tasmota, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -62,6 +64,7 @@ be_local_closure(add_cmd, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -69,6 +72,7 @@ be_local_closure(add_cmd, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ + 0, /* varg */ 1, /* has upvals */ ( &(const bupvaldesc[ 2]) { /* upvals */ be_local_const_upval(1, 2), @@ -121,21 +125,21 @@ be_local_class(Driver, NULL, be_nested_map(16, ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("web_add_main_button", -334599632, 19, 14), be_const_index(4) }, - { be_nested_key("web_add_console_button", -813531104, 22, -1), be_const_index(7) }, - { be_nested_key("web_add_management_button", -1556090110, 25, 8), be_const_index(5) }, + { be_nested_key("web_add_main_button", -334599632, 19, 14), be_const_var(4) }, + { be_nested_key("web_add_console_button", -813531104, 22, -1), be_const_var(7) }, + { be_nested_key("web_add_management_button", -1556090110, 25, 8), be_const_var(5) }, { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, - { be_nested_key("json_append", -1292948012, 11, -1), be_const_index(10) }, - { be_nested_key("web_add_config_button", 639674325, 21, 7), be_const_index(6) }, - { be_nested_key("every_100ms", 1546407804, 11, -1), be_const_index(1) }, - { be_nested_key("display", 1164572437, 7, -1), be_const_index(12) }, - { be_nested_key("web_add_button", -757092238, 14, 13), be_const_index(3) }, - { be_nested_key("every_second", 2075451465, 12, -1), be_const_index(0) }, - { be_nested_key("save_before_restart", 1253239338, 19, -1), be_const_index(8) }, + { be_nested_key("json_append", -1292948012, 11, -1), be_const_var(10) }, + { be_nested_key("web_add_config_button", 639674325, 21, 7), be_const_var(6) }, + { be_nested_key("every_100ms", 1546407804, 11, -1), be_const_var(1) }, + { be_nested_key("display", 1164572437, 7, -1), be_const_var(12) }, + { be_nested_key("web_add_button", -757092238, 14, 13), be_const_var(3) }, + { be_nested_key("every_second", 2075451465, 12, -1), be_const_var(0) }, + { be_nested_key("save_before_restart", 1253239338, 19, -1), be_const_var(8) }, { be_nested_key("get_tasmota", 334356779, 11, -1), be_const_closure(get_tasmota_closure) }, - { be_nested_key("web_sensor", -1394870324, 10, 6), be_const_index(9) }, - { be_nested_key("web_add_handler", -304792334, 15, -1), be_const_index(2) }, - { be_nested_key("button_pressed", 1694209616, 14, 1), be_const_index(11) }, + { be_nested_key("web_sensor", -1394870324, 10, 6), be_const_var(9) }, + { be_nested_key("web_add_handler", -304792334, 15, -1), be_const_var(2) }, + { be_nested_key("button_pressed", 1694209616, 14, 1), be_const_var(11) }, { be_nested_key("add_cmd", -933336417, 7, -1), be_const_closure(add_cmd_closure) }, })), (be_nested_const_str("Driver", -718580993, 6)) diff --git a/lib/libesp32/Berry/default/be_i2c_driverlib.c b/lib/libesp32/Berry/default/be_i2c_driverlib.c index 4fe868dae..75e003210 100644 --- a/lib/libesp32/Berry/default/be_i2c_driverlib.c +++ b/lib/libesp32/Berry/default/be_i2c_driverlib.c @@ -18,6 +18,7 @@ be_local_closure(init, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -94,6 +95,7 @@ be_local_closure(write8, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -128,6 +130,7 @@ be_local_closure(write_bit, /* name */ be_nested_proto( 11, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -180,6 +183,7 @@ be_local_closure(read8, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -213,6 +217,7 @@ be_local_closure(read12, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -253,6 +258,7 @@ be_local_closure(read13, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -293,6 +299,7 @@ be_local_closure(read24, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -338,6 +345,7 @@ be_local_closure(read32, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c index 060789ae0..7eade5edb 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c @@ -14,6 +14,7 @@ be_local_closure(my_design_cb, /* name */ be_nested_proto( 21, /* nstack */ 3, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 1, /* has sup protos */ @@ -21,6 +22,7 @@ be_local_closure(my_design_cb, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -212,6 +214,7 @@ be_local_closure(get_percentage, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -238,6 +241,7 @@ be_local_closure(init, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -304,6 +308,7 @@ be_local_closure(set_percentage, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -350,16 +355,16 @@ be_local_class(lv_signal_bars, &be_class_lv_obj, be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("p1", -1605446022, 2, -1), be_const_index(2) }, + { be_nested_key("p1", -1605446022, 2, -1), be_const_var(2) }, { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, { be_nested_key("get_percentage", -1414483304, 14, -1), be_const_closure(get_percentage_closure) }, { be_nested_key("init", 380752755, 4, 7), be_const_closure(init_closure) }, { be_nested_key("set_percentage", -1342944572, 14, 0), be_const_closure(set_percentage_closure) }, - { be_nested_key("percentage", -1756136011, 10, 3), be_const_index(1) }, - { be_nested_key("area", -1693507260, 4, -1), be_const_index(5) }, - { be_nested_key("p2", -1622223641, 2, -1), be_const_index(3) }, - { be_nested_key("line_dsc", -200476318, 8, 1), be_const_index(4) }, - { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_index(0) }, + { be_nested_key("percentage", -1756136011, 10, 3), be_const_var(1) }, + { be_nested_key("area", -1693507260, 4, -1), be_const_var(5) }, + { be_nested_key("p2", -1622223641, 2, -1), be_const_var(3) }, + { be_nested_key("line_dsc", -200476318, 8, 1), be_const_var(4) }, + { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, })), (be_nested_const_str("lv_signal_bars", -780994737, 14)) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c index 6e0a401af..304a9ab86 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c @@ -14,6 +14,7 @@ be_local_closure(init, /* name */ be_nested_proto( 7, /* nstack */ 3, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -54,6 +55,7 @@ be_local_closure(every_second, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index edde70854..6eaa6b03c 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -20,8 +20,8 @@ be_extern_native_module(sys); be_extern_native_module(debug); be_extern_native_module(gc); be_extern_native_module(solidify); -be_extern_native_module(strict); be_extern_native_module(introspect); +be_extern_native_module(strict); /* Tasmota specific */ be_extern_native_module(light); diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 81c6c6016..fef78e8ed 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -505,6 +505,7 @@ be_local_closure(remove_rule, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -932,6 +933,7 @@ be_local_closure(set_timer, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -974,6 +976,7 @@ be_local_closure(run_deferred, /* name */ be_nested_proto( 6, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1031,6 +1034,7 @@ be_local_closure(remove_timer, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1182,6 +1186,7 @@ be_local_closure(remove_cmd, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1213,6 +1218,7 @@ be_local_closure(exec_cmd, /* name */ be_nested_proto( 12, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1276,6 +1282,7 @@ be_local_closure(gc, /* name */ be_nested_proto( 4, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1307,6 +1314,7 @@ be_local_closure(event, /* name */ be_nested_proto( 19, /* nstack */ 6, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1423,6 +1431,7 @@ be_local_closure(add_driver, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1459,6 +1468,7 @@ be_local_closure(load, /* name */ be_nested_proto( 14, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1670,6 +1680,7 @@ be_local_closure(time_str, /* name */ be_nested_proto( 13, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1989,6 +2000,7 @@ be_local_closure(cb_dispatch, /* name */ be_nested_proto( 12, /* nstack */ 6, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -2034,6 +2046,7 @@ be_local_closure(gen_cb, /* name */ be_nested_proto( 7, /* nstack */ 2, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ diff --git a/lib/libesp32/Berry/default/be_timer_class.c b/lib/libesp32/Berry/default/be_timer_class.c index 84ed2a8ce..4ee9d0ade 100644 --- a/lib/libesp32/Berry/default/be_timer_class.c +++ b/lib/libesp32/Berry/default/be_timer_class.c @@ -12,6 +12,7 @@ be_local_closure(tostring, /* name */ be_nested_proto( 10, /* nstack */ 1, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -60,6 +61,7 @@ be_local_closure(init, /* name */ be_nested_proto( 4, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -92,9 +94,9 @@ be_local_class(Timer, be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { { be_nested_key("tostring", -1995258651, 8, 4), be_const_closure(tostring_closure) }, - { be_nested_key("id", 926444256, 2, 2), be_const_index(2) }, - { be_nested_key("f", -485742695, 1, -1), be_const_index(1) }, - { be_nested_key("due", -399437003, 3, -1), be_const_index(0) }, + { be_nested_key("id", 926444256, 2, 2), be_const_var(2) }, + { be_nested_key("f", -485742695, 1, -1), be_const_var(1) }, + { be_nested_key("due", -399437003, 3, -1), be_const_var(0) }, { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, })), (be_nested_const_str("Timer", -346839614, 5)) diff --git a/lib/libesp32/Berry/default/be_wirelib.c b/lib/libesp32/Berry/default/be_wirelib.c index 1a2dbd237..7a63f312f 100644 --- a/lib/libesp32/Berry/default/be_wirelib.c +++ b/lib/libesp32/Berry/default/be_wirelib.c @@ -45,6 +45,7 @@ be_local_closure(read_bytes, /* name */ be_nested_proto( 8, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -107,6 +108,7 @@ be_local_closure(write_bytes, /* name */ be_nested_proto( 7, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h b/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h index 593696b3f..a603e4de3 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h @@ -2,10 +2,10 @@ static be_define_const_map_slots(be_class_aes_gcm_map) { { be_const_key(encrypt, 4), be_const_func(m_aes_gcm_encryt) }, - { be_const_key(dot_p2, -1), be_const_index(0) }, + { be_const_key(dot_p2, -1), be_const_var(0) }, { be_const_key(decrypt, -1), be_const_func(m_aes_gcm_decryt) }, { be_const_key(init, -1), be_const_func(m_aes_gcm_init) }, - { be_const_key(dot_p1, -1), be_const_index(1) }, + { be_const_key(dot_p1, -1), be_const_var(1) }, { be_const_key(tag, -1), be_const_func(m_aes_gcm_tag) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_audio_file_source.h b/lib/libesp32/Berry/generate/be_fixed_be_class_audio_file_source.h index c862ef474..e7e5e0998 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_audio_file_source.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_audio_file_source.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_audio_file_source_map) { - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_audio_generator.h b/lib/libesp32/Berry/generate/be_fixed_be_class_audio_generator.h index d6c5c9a6a..840da47d1 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_audio_generator.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_audio_generator.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_audio_generator_map) { - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_audio_output.h b/lib/libesp32/Berry/generate/be_fixed_be_class_audio_output.h index cb9c6282d..afb2705cb 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_audio_output.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_audio_output.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_audio_output_map) { - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h index 86075ac4e..58ccee454 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_bytes_map) { - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(seti, 6), be_const_func(m_set) }, { be_const_key(get, 7), be_const_func(m_getu) }, { be_const_key(size, 10), be_const_func(m_size) }, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_list.h b/lib/libesp32/Berry/generate/be_fixed_be_class_list.h index 6d94eb931..300efcce0 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_list.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_list.h @@ -14,7 +14,7 @@ static be_define_const_map_slots(be_class_list_map) { { be_const_key(tostring, 3), be_const_func(m_tostring) }, { be_const_key(opt_eq, -1), be_const_func(m_equal) }, { be_const_key(init, -1), be_const_func(m_init) }, - { be_const_key(dot_p, 17), be_const_index(0) }, + { be_const_key(dot_p, 17), be_const_var(0) }, { be_const_key(setitem, -1), be_const_func(m_setitem) }, { be_const_key(opt_connect, 4), be_const_func(m_connect) }, { be_const_key(opt_neq, -1), be_const_func(m_nequal) }, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h index df2ec5f5f..d0512204e 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_arc_map) { { be_const_key(init, 2), be_const_func(lvbe_arc_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h index 0d178107a..c96c467db 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_bar_map) { { be_const_key(init, 2), be_const_func(lvbe_bar_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h index e11d63c37..29590fa55 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_btn_map) { { be_const_key(init, 2), be_const_func(lvbe_btn_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h index eaec83aa4..3a029c9c3 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_btnmatrix_map) { { be_const_key(init, 2), be_const_func(lvbe_btnmatrix_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h index 7434f5004..80f07efb6 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_calendar_map) { { be_const_key(init, 2), be_const_func(lvbe_calendar_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h index 7c0b03d35..4fd9bb5ea 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_canvas_map) { { be_const_key(init, 2), be_const_func(lvbe_canvas_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h index f71d24f42..6b09657c2 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_chart_map) { { be_const_key(init, 2), be_const_func(lvbe_chart_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h index a73e60029..3165be40a 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_checkbox_map) { { be_const_key(init, 2), be_const_func(lvbe_checkbox_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h index e688d2573..1e16b7dd2 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h @@ -4,7 +4,7 @@ static be_define_const_map_slots(be_class_lv_color_map) { { be_const_key(init, -1), be_const_func(lco_init) }, { be_const_key(tostring, 2), be_const_func(lco_tostring) }, { be_const_key(toint, -1), be_const_func(lco_toint) }, - { be_const_key(dot_p, 0), be_const_index(0) }, + { be_const_key(dot_p, 0), be_const_var(0) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h index 69e3e156d..609766430 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_cont_map) { { be_const_key(init, 2), be_const_func(lvbe_cont_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h index cd1c2af01..e9be78a9a 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_cpicker_map) { { be_const_key(init, 2), be_const_func(lvbe_cpicker_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h index c81a8a43e..0fea061de 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_ctypes_map) { - { be_const_key(dot_def, -1), be_const_index(0) }, + { be_const_key(dot_def, -1), be_const_var(0) }, { be_const_key(setmember, -1), be_const_func(be_ctypes_setmember) }, { be_const_key(init, -1), be_const_func(be_ctypes_init) }, { be_const_key(member, 2), be_const_func(be_ctypes_member) }, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h index ebe16e2f0..b5011f491 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_dropdown_map) { { be_const_key(init, 2), be_const_func(lvbe_dropdown_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h index ee3fb3136..1e1ebc351 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_font_map) { { be_const_key(init, -1), be_const_func(lvx_init) }, { be_const_key(tostring, 2), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h index e0d014cc6..cb86f23c3 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_gauge_map) { { be_const_key(init, 2), be_const_func(lvbe_gauge_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h index 393e4cad3..f939812a2 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_group_map) { { be_const_key(init, 2), be_const_func(lvbe_group_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h index 2536f53b5..e00cc4a9a 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_img_map) { { be_const_key(init, 2), be_const_func(lvbe_img_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h index aa272b8a9..c35b0d8cd 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_imgbtn_map) { { be_const_key(init, 2), be_const_func(lvbe_imgbtn_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h index ecda18431..591758d8f 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_indev_map) { { be_const_key(init, 2), be_const_func(lv0_init) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h index 293f8c091..f1ffefb5b 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_keyboard_map) { { be_const_key(init, 2), be_const_func(lvbe_keyboard_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h index b8cb81e58..c05287a03 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_label_map) { { be_const_key(init, 2), be_const_func(lvbe_label_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h index a0f3b0b85..e3995f1e0 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_led_map) { { be_const_key(init, 2), be_const_func(lvbe_led_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h index 34dd43d2d..e12a41e8b 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_line_map) { { be_const_key(init, 2), be_const_func(lvbe_line_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h index 9242241d7..72d00f372 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_linemeter_map) { { be_const_key(init, 2), be_const_func(lvbe_linemeter_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h index 630146d49..ddbf5a12d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_list_map) { { be_const_key(init, 2), be_const_func(lvbe_list_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h index d922885c0..f4402002b 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_msgbox_map) { { be_const_key(init, 2), be_const_func(lvbe_msgbox_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h index a145b957a..242fd7edb 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_obj_map) { { be_const_key(init, 2), be_const_func(lvbe_obj_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h index 7bf87f4d7..76ec1d349 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_objmask_map) { { be_const_key(init, 2), be_const_func(lvbe_objmask_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h index a8e711925..99b08a995 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_page_map) { { be_const_key(init, 2), be_const_func(lvbe_page_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h index 8dc63062b..32c3b9ec3 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_roller_map) { { be_const_key(init, 2), be_const_func(lvbe_roller_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h index d37d39db0..2b5f13dee 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_slider_map) { { be_const_key(init, 2), be_const_func(lvbe_slider_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h index 6258e8832..b511ad385 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_spinbox_map) { { be_const_key(init, 2), be_const_func(lvbe_spinbox_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h index b782385f1..d4c71b01e 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_spinner_map) { { be_const_key(init, 2), be_const_func(lvbe_spinner_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h index 789c6be38..0cec3423e 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_style_map) { { be_const_key(init, 2), be_const_func(lvs_init) }, { be_const_key(tostring, -1), be_const_func(lvs_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h index 2033de3b4..c84d70737 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_switch_map) { { be_const_key(init, 2), be_const_func(lvbe_switch_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h index f351e768d..b9449ea7d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_table_map) { { be_const_key(init, 2), be_const_func(lvbe_table_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h index 514c2520e..39c793ba8 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_tabview_map) { { be_const_key(init, 2), be_const_func(lvbe_tabview_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h index 25eeb27d7..290a439bc 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_textarea_map) { { be_const_key(init, 2), be_const_func(lvbe_textarea_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h index 04404de1f..88b478d11 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_tileview_map) { { be_const_key(init, 2), be_const_func(lvbe_tileview_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h index 96e5c6970..edca478bd 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h @@ -3,7 +3,7 @@ static be_define_const_map_slots(be_class_lv_win_map) { { be_const_key(init, 2), be_const_func(lvbe_win_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_map.h b/lib/libesp32/Berry/generate/be_fixed_be_class_map.h index d9c033a8b..76e99df82 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_map.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_map.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_map_map) { - { be_const_key(dot_p, 2), be_const_index(0) }, + { be_const_key(dot_p, 2), be_const_var(0) }, { be_const_key(insert, -1), be_const_func(m_insert) }, { be_const_key(remove, -1), be_const_func(m_remove) }, { be_const_key(tostring, -1), be_const_func(m_tostring) }, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_md5.h b/lib/libesp32/Berry/generate/be_fixed_be_class_md5.h index 34f7ae7e5..121a8e6ea 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_md5.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_md5.h @@ -2,7 +2,7 @@ static be_define_const_map_slots(be_class_md5_map) { { be_const_key(update, -1), be_const_func(m_md5_update) }, - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(finish, -1), be_const_func(m_md5_finish) }, { be_const_key(init, 1), be_const_func(m_md5_init) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_range.h b/lib/libesp32/Berry/generate/be_fixed_be_class_range.h index cce2842eb..371840af1 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_range.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_range.h @@ -5,9 +5,9 @@ static be_define_const_map_slots(be_class_range_map) { { be_const_key(iter, -1), be_const_func(m_iter) }, { be_const_key(lower, -1), be_const_func(m_lower) }, { be_const_key(init, 4), be_const_func(m_init) }, - { be_const_key(__upper__, -1), be_const_index(0) }, + { be_const_key(__upper__, -1), be_const_var(0) }, { be_const_key(tostring, -1), be_const_func(m_tostring) }, - { be_const_key(__lower__, -1), be_const_index(1) }, + { be_const_key(__lower__, -1), be_const_var(1) }, { be_const_key(upper, 1), be_const_func(m_upper) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h index ca2cda50c..5aead845e 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h @@ -10,24 +10,24 @@ static be_define_const_map_slots(be_class_tasmota_map) { { be_const_key(remove_rule, -1), be_const_closure(remove_rule_closure) }, { be_const_key(event, -1), be_const_closure(event_closure) }, { be_const_key(log, 25), be_const_func(l_logInfo) }, - { be_const_key(_drivers, -1), be_const_index(0) }, + { be_const_key(_drivers, -1), be_const_var(0) }, { be_const_key(set_light, -1), be_const_closure(set_light_closure) }, - { be_const_key(wire2, 26), be_const_index(1) }, + { be_const_key(wire2, 26), be_const_var(1) }, { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, { be_const_key(resp_cmnd_failed, -1), be_const_func(l_respCmndFailed) }, { be_const_key(publish_result, -1), be_const_func(l_publish_result) }, - { be_const_key(wire1, -1), be_const_index(2) }, + { be_const_key(wire1, -1), be_const_var(2) }, { be_const_key(set_power, 46), be_const_func(l_setpower) }, { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, { be_const_key(get_light, 42), be_const_closure(get_light_closure) }, - { be_const_key(_rules, 54), be_const_index(3) }, + { be_const_key(_rules, 54), be_const_var(3) }, { be_const_key(run_deferred, 19), be_const_closure(run_deferred_closure) }, { be_const_key(try_rule, 18), be_const_closure(try_rule_closure) }, { be_const_key(remove_cmd, 41), be_const_closure(remove_cmd_closure) }, { be_const_key(add_driver, 0), be_const_closure(add_driver_closure) }, { be_const_key(get_power, 36), be_const_func(l_getpower) }, { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, - { be_const_key(_timers, -1), be_const_index(4) }, + { be_const_key(_timers, -1), be_const_var(4) }, { be_const_key(add_rule, 33), be_const_closure(add_rule_closure) }, { be_const_key(time_reached, -1), be_const_func(l_timereached) }, { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, @@ -49,7 +49,7 @@ static be_define_const_map_slots(be_class_tasmota_map) { { be_const_key(web_send_decimal, 44), be_const_func(l_webSendDecimal) }, { be_const_key(load, -1), be_const_closure(load_closure) }, { be_const_key(web_send, 56), be_const_func(l_webSend) }, - { be_const_key(_ccmd, -1), be_const_index(5) }, + { be_const_key(_ccmd, -1), be_const_var(5) }, { be_const_key(i2c_enabled, 48), be_const_func(l_i2cenabled) }, { be_const_key(save, -1), be_const_func(l_save) }, { be_const_key(exec_cmd, 2), be_const_closure(exec_cmd_closure) }, @@ -57,7 +57,7 @@ static be_define_const_map_slots(be_class_tasmota_map) { { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, { be_const_key(delay, -1), be_const_func(l_delay) }, - { be_const_key(_cb, -1), be_const_index(6) }, + { be_const_key(_cb, -1), be_const_var(6) }, { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, { be_const_key(_get_cb, -1), be_const_func(l_get_cb) }, { be_const_key(yield, -1), be_const_func(l_yield) }, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h index b28ffdabd..131e02766 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h @@ -3,13 +3,13 @@ static be_define_const_map_slots(be_class_tasmota_i2c_driver_map) { { be_const_key(read32, -1), be_const_closure(read32_closure) }, { be_const_key(write8, 6), be_const_closure(write8_closure) }, - { be_const_key(name, -1), be_const_index(0) }, - { be_const_key(addr, 10), be_const_index(1) }, + { be_const_key(name, -1), be_const_var(0) }, + { be_const_key(addr, 10), be_const_var(1) }, { be_const_key(read12, -1), be_const_closure(read12_closure) }, { be_const_key(write_bit, 8), be_const_closure(write_bit_closure) }, { be_const_key(read13, -1), be_const_closure(read13_closure) }, { be_const_key(read24, -1), be_const_closure(read24_closure) }, - { be_const_key(wire, -1), be_const_index(2) }, + { be_const_key(wire, -1), be_const_var(2) }, { be_const_key(init, -1), be_const_closure(init_closure) }, { be_const_key(read8, -1), be_const_closure(read8_closure) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h index 9c5543578..71ade9f7e 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_wire.h @@ -2,7 +2,7 @@ static be_define_const_map_slots(be_class_tasmota_wire_map) { { be_const_key(_end_transmission, 10), be_const_func(b_wire_endtransmission) }, - { be_const_key(bus, -1), be_const_index(0) }, + { be_const_key(bus, -1), be_const_var(0) }, { be_const_key(_read, 7), be_const_func(b_wire_read) }, { be_const_key(read, -1), be_const_func(b_wire_validread) }, { be_const_key(_request_from, -1), be_const_func(b_wire_requestfrom) }, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h index a0ddbeb33..433187e60 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h @@ -1,7 +1,7 @@ #include "be_constobj.h" static be_define_const_map_slots(be_lvgl_cb_map) { - { be_const_key(dot_p, -1), be_const_index(0) }, + { be_const_key(dot_p, -1), be_const_var(0) }, { be_const_key(tostring, 2), be_const_func(lvx_tostring) }, { be_const_key(call, -1), be_const_func(lv_cb_call) }, { be_const_key(init, 0), be_const_func(lv0_init) }, diff --git a/lib/libesp32/Berry/src/be_byteslib.c b/lib/libesp32/Berry/src/be_byteslib.c index 4c35d2113..5211a0a4c 100644 --- a/lib/libesp32/Berry/src/be_byteslib.c +++ b/lib/libesp32/Berry/src/be_byteslib.c @@ -536,7 +536,7 @@ static size_t tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) { static int m_tostring(bvm *vm) { int argc = be_top(vm); - int max_len = 32; /* limit to 32 bytes by default */ + size_t max_len = 32; /* limit to 32 bytes by default */ int truncated = 0; if (argc > 1 && be_isint(vm, 2)) { max_len = be_toint(vm, 2); /* you can specify the len as second argument, or 0 for unlimited */ @@ -918,7 +918,7 @@ static int m_tob64(bvm *vm) size_t b64_len = encode_base64_length(len) + 1; /* size of base64 encoded string for this binary length, add NULL terminator */ char * b64_out = be_pushbuffer(vm, b64_len); - size_t converted = encode_base64(buf_get_buf(buf), len, b64_out); + size_t converted = encode_base64(buf_get_buf(buf), len, (unsigned char*)b64_out); be_pushnstring(vm, b64_out, converted); /* make string from buffer */ be_remove(vm, -2); /* remove buffer */ @@ -935,8 +935,7 @@ static int m_fromb64(bvm *vm) int argc = be_top(vm); if (argc >= 2 && be_isstring(vm, 2)) { const char *s = be_tostring(vm, 2); - size_t len = be_strlen(vm, 2); - size_t bin_len = decode_base64_length(s); /* do a first pass to calculate the buffer size */ + size_t bin_len = decode_base64_length((unsigned char*)s); /* do a first pass to calculate the buffer size */ buf_impl * buf = bytes_check_data(vm, 0); buf = bytes_resize(vm, buf, bin_len); /* resize if needed */ @@ -944,7 +943,7 @@ static int m_fromb64(bvm *vm) be_raise(vm, "memory_error", "cannot allocate buffer"); } - size_t bin_len_final = decode_base64(s, buf_get_buf(buf)); /* decode */ + size_t bin_len_final = decode_base64((unsigned char*)s, buf_get_buf(buf)); /* decode */ buf->len = bin_len_final; be_pop(vm, 1); /* remove arg to leave instance */ be_return(vm); @@ -1106,6 +1105,7 @@ be_local_closure(getbits, /* name */ be_nested_proto( 9, /* nstack */ 3, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ @@ -1165,6 +1165,7 @@ be_local_closure(setbits, /* name */ be_nested_proto( 10, /* nstack */ 4, /* argc */ + 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ diff --git a/lib/libesp32/Berry/src/be_constobj.h b/lib/libesp32/Berry/src/be_constobj.h index b1a5165ff..8dcf17d78 100644 --- a/lib/libesp32/Berry/src/be_constobj.h +++ b/lib/libesp32/Berry/src/be_constobj.h @@ -47,7 +47,7 @@ extern "C" { .type = BE_INT \ } -#define be_const_index(_val) { \ +#define be_const_var(_val) { \ .v.i = (bint)(_val), \ .type = BE_INDEX \ } @@ -203,7 +203,7 @@ const bntvmodule be_native_module(_module) = { \ BE_BOOL \ } -#define be_const_index(_val) { \ +#define be_const_var(_val) { \ bvaldata(bint(_val)), \ BE_INDEX \ } diff --git a/lib/libesp32/Berry/src/be_debug.c b/lib/libesp32/Berry/src/be_debug.c index 469e30b63..0b1cd914b 100644 --- a/lib/libesp32/Berry/src/be_debug.c +++ b/lib/libesp32/Berry/src/be_debug.c @@ -60,16 +60,20 @@ void be_print_inst(binstruction ins, int pc) case OP_GETMBR: case OP_SETMBR: case OP_GETMET: case OP_GETIDX: case OP_SETIDX: case OP_AND: case OP_OR: case OP_XOR: case OP_SHL: case OP_SHR: - logbuf("%s\tR%d\tR%d\tR%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); + logbuf("%s\tR%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), + isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK, + isKB(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); break; case OP_GETNGBL: case OP_SETNGBL: - logbuf("%s\tR%d\tR%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins)); + logbuf("%s\tR%d\t%c%d", opc2str(op), IGET_RA(ins), + isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK); break; case OP_GETGBL: case OP_SETGBL: logbuf("%s\tR%d\tG%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); break; case OP_MOVE: case OP_SETSUPER: case OP_NEG: case OP_FLIP: case OP_IMPORT: - logbuf("%s\tR%d\tR%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins)); + logbuf("%s\tR%d\t%c%d", opc2str(op), IGET_RA(ins), + isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK); break; case OP_JMP: logbuf("%s\t\t#%.4X", opc2str(op), IGET_sBx(ins) + pc + 1); @@ -84,7 +88,12 @@ void be_print_inst(binstruction ins, int pc) logbuf("%s\tR%d\t%d\t%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); break; case OP_RET: - logbuf("%s\t%d\tR%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins)); + if (IGET_RA(ins)) { + logbuf("%s\t%d\t%c%d", opc2str(op), IGET_RA(ins), + isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK); + } else { + logbuf("%s\t%d", opc2str(op), IGET_RA(ins)); /* RET 0 does not take an additional parameter */ + } break; case OP_GETUPV: case OP_SETUPV: logbuf("%s\tR%d\tU%d", opc2str(op), IGET_RA(ins), IGET_Bx(ins)); @@ -105,7 +114,9 @@ void be_print_inst(binstruction ins, int pc) logbuf("%s\t%d", opc2str(op), IGET_RA(ins)); break; case OP_RAISE: - logbuf("%s\t%d\tR%d\tR%d", opc2str(op), IGET_RA(ins), IGET_RKB(ins), IGET_RKC(ins)); + logbuf("%s\t%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), + isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK, + isKB(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); break; case OP_EXBLK: if (IGET_RA(ins)) { diff --git a/lib/libesp32/Berry/src/be_decoder.h b/lib/libesp32/Berry/src/be_decoder.h index 354de5665..c6cfd7ade 100644 --- a/lib/libesp32/Berry/src/be_decoder.h +++ b/lib/libesp32/Berry/src/be_decoder.h @@ -46,6 +46,9 @@ #define IsBx_MAX cast_int(IBx_MASK >> 1) #define IsBx_MIN cast_int(-IsBx_MAX - 1) +/* mask for K/R values */ +#define KR_MASK ((1 << (IRKB_BITS-1)) - 1) + /* get field */ #define IGET_OP(i) cast(bopcode, INS_GETx(i, IOP_MASK, IOP_POS)) #define IGET_RA(i) INS_GETx(i, IRA_MASK, IRA_POS) diff --git a/lib/libesp32/Berry/src/be_opcodes.h b/lib/libesp32/Berry/src/be_opcodes.h index 2fe9dbcae..12c3781e0 100644 --- a/lib/libesp32/Berry/src/be_opcodes.h +++ b/lib/libesp32/Berry/src/be_opcodes.h @@ -53,5 +53,5 @@ OPCODE(EXBLK), /* A, Bx | ... */ OPCODE(CATCH), /* A, B, C | ... */ OPCODE(RAISE), /* A, B, C | RAISE(B,C) B is code, C is description. A==0 only B provided, A==1 B and C are provided, A==2 rethrow with both parameters already on stack */ OPCODE(CLASS), /* Bx | init class in K[Bx] */ -OPCODE(GETNGBL), /* A, B | R(A) <- GLOBAL[B] by name */ -OPCODE(SETNGBL) /* A, B | R(A) -> GLOBAL[B] by name */ +OPCODE(GETNGBL), /* A, B | R(A) <- GLOBAL[RK(B)] by name */ +OPCODE(SETNGBL) /* A, B | R(A) -> GLOBAL[RK(B)] by name */ diff --git a/lib/libesp32/Berry/src/be_solidifylib.c b/lib/libesp32/Berry/src/be_solidifylib.c index 473f74c0b..9e2759702 100644 --- a/lib/libesp32/Berry/src/be_solidifylib.c +++ b/lib/libesp32/Berry/src/be_solidifylib.c @@ -51,9 +51,9 @@ static void m_solidify_bvalue(bvm *vm, bvalue * value) break; case BE_INDEX: #if BE_INTGER_TYPE == 2 - logfmt("be_const_index(%lli)", var_toint(value)); + logfmt("be_const_var(%lli)", var_toint(value)); #else - logfmt("be_const_index(%i)", var_toint(value)); + logfmt("be_const_var(%i)", var_toint(value)); #endif break; case BE_REAL: @@ -96,6 +96,7 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu logfmt("%*s%d, /* nstack */\n", indent, "", pr->nstack); logfmt("%*s%d, /* argc */\n", indent, "", pr->argc); + logfmt("%*s%d, /* varg */\n", indent, "", pr->varg); logfmt("%*s%d, /* has upvals */\n", indent, "", (pr->nupvals > 0) ? 1 : 0); if (pr->nupvals > 0) { @@ -127,9 +128,9 @@ static void m_solidify_proto(bvm *vm, bproto *pr, const char * func_name, int bu if (pr->nconst > 0) { logfmt("%*s( &(const bvalue[%2d]) { /* constants */\n", indent, "", pr->nconst); for (int k = 0; k < pr->nconst; k++) { - logfmt("%*s ", indent, ""); + logfmt("%*s/* K%-3d */ ", indent, "", k); m_solidify_bvalue(vm, &pr->ktab[k]); - logfmt(", /* R%d - K%d */\n", 256+k, k); + logfmt(",\n"); } logfmt("%*s}),\n", indent, ""); } else { diff --git a/lib/libesp32/Berry/src/be_strlib.c b/lib/libesp32/Berry/src/be_strlib.c index 4bef42d10..257bd8c1a 100644 --- a/lib/libesp32/Berry/src/be_strlib.c +++ b/lib/libesp32/Berry/src/be_strlib.c @@ -512,11 +512,15 @@ static int str_format(bvm *vm) concat2(vm); p = get_mode(p + 1, mode); buf[0] = '\0'; - if (index > top) { + if (index > top && *p != '%') { be_raise(vm, "runtime_error", be_pushfstring(vm, "bad argument #%d to 'format': no value", index)); } switch (*p) { + case '%': + be_pushstring(vm, "%"); + --index; /* compensate the future ++index */ + break; case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': if (be_isint(vm, index)) { diff --git a/lib/libesp32/Berry/src/berry.h b/lib/libesp32/Berry/src/berry.h index 1637dc434..85553964b 100644 --- a/lib/libesp32/Berry/src/berry.h +++ b/lib/libesp32/Berry/src/berry.h @@ -329,7 +329,7 @@ typedef struct bntvmodule { } /* new version for more compact literals */ -#define be_nested_proto(_nstack, _argc, _has_upval, _upvals, _has_subproto, _protos, _has_const, _ktab, _fname, _source, _code) \ +#define be_nested_proto(_nstack, _argc, _varg, _has_upval, _upvals, _has_subproto, _protos, _has_const, _ktab, _fname, _source, _code) \ & (const bproto) { \ NULL, /* bgcobject *next */ \ BE_PROTO, /* type BE_PROTO */ \ @@ -337,7 +337,7 @@ typedef struct bntvmodule { (_nstack), /* nstack */ \ BE_IIF(_has_upval)(sizeof(*_upvals)/sizeof(bupvaldesc),0), /* nupvals */ \ (_argc), /* argc */ \ - 0, /* varg */ \ + (_varg), /* varg */ \ NULL, /* bgcobject *gray */ \ (bupvaldesc*) _upvals, /* bupvaldesc *upvals */ \ (bvalue*) _ktab, /* ktab */ \ diff --git a/lib/libesp32/Berry/tests/bytes.be b/lib/libesp32/Berry/tests/bytes.be index 40a784c34..57b3f12a2 100644 --- a/lib/libesp32/Berry/tests/bytes.be +++ b/lib/libesp32/Berry/tests/bytes.be @@ -164,34 +164,5 @@ b.fromstring("Aa0") assert(str(b) =="bytes('416130')") b=bytes() b.fromstring("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") -assert(str(b) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')") - -#- setters -# -b=bytes().resize(16) -b.set(5,-1,2) -assert(b == bytes('0000000000FFFF000000000000000000')) -b.set(10,-2,4) -assert(b == bytes('0000000000FFFF000000FEFFFFFF0000')) -b.set(0,0xAA55,1) -assert(b == bytes('5500000000FFFF000000FEFFFFFF0000')) - -#- getbits -# -b=bytes("00AAFF55010300") -assert(b.getbits(8,8) == 0xAA) -assert(b.getbits(0,1) == 0) -assert(b.getbits(8,1) == 0) -assert(b.getbits(9,1) == 1) -assert(b.getbits(16,8) == 0xFF) -assert(b.getbits(16,16) == 0x55FF) -assert(b.getbits(16,24) == 0x0155FF) -assert(b.getbits(16,32) == 0x030155FF) -assert(b.getbits(20,8) == 0x5F) - -#- setbits -# -b=bytes("00000000FFFFFFFF") -assert(b.setbits(0,1,1) == bytes('01000000FFFFFFFF')) -assert(b.setbits(1,1,1) == bytes('03000000FFFFFFFF')) -assert(b.setbits(0,1,0) == bytes('02000000FFFFFFFF')) -assert(b.setbits(12,16,0xAA55) == bytes('0250A50AFFFFFFFF')) -assert(b.setbits(63,0,0) == bytes('0250A50AFFFFFFFF')) -assert(b.setbits(63,1,0) == bytes('0250A50AFFFFFF7F')) +assert(str(b) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73...')") +assert(b.tostring(0) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')") diff --git a/lib/libesp32/Berry/tests/bytes_b64.be b/lib/libesp32/Berry/tests/bytes_b64.be new file mode 100644 index 000000000..a7f57850e --- /dev/null +++ b/lib/libesp32/Berry/tests/bytes_b64.be @@ -0,0 +1,15 @@ +#- base64 encode -# +b=bytes() +assert(b.tob64() == '') +b=bytes('00') +assert(b.tob64() == 'AA==') +b=bytes('1122334455') +assert(b.tob64() == 'ESIzRFU=') + +#- base64 decode -# +b=bytes().fromb64('') +assert(str(b) == str(bytes(''))) +b=bytes().fromb64('AA==') +assert(str(b) == str(bytes('00'))) +b=bytes().fromb64('ESIzRFU=') +assert(str(b) == str(bytes('1122334455'))) diff --git a/lib/libesp32/Berry/tests/compiler.be b/lib/libesp32/Berry/tests/compiler.be new file mode 100644 index 000000000..90303734f --- /dev/null +++ b/lib/libesp32/Berry/tests/compiler.be @@ -0,0 +1,28 @@ +#- test for issue #117 -# + +class A var a end +a=A() +a.a = ["foo", "bar"] + +s = nil +def fs(m) s = m end + +class B + var b, i + def nok() + fs(self.b.a[self.i]) # wrong behavior + end + def ok() + var i = self.i + fs(self.b.a[i]) # works correctly + end +end +b=B() +b.i=0 +b.b=a + +b.nok() +assert(s == "foo") + +b.ok() +assert(s == "foo") diff --git a/lib/libesp32/Berry/tests/string.be b/lib/libesp32/Berry/tests/string.be index fad58f935..683f7d585 100644 --- a/lib/libesp32/Berry/tests/string.be +++ b/lib/libesp32/Berry/tests/string.be @@ -28,3 +28,9 @@ assert(s.split('a b c d e f', '1') == ['a b c d e f']) assert(s.split('a b c d e f', ' ') == ['a', 'b', 'c', 'd', 'e', 'f']) assert(s.split('a b c d e f', ' ', 2) == ['a', 'b', 'c d e f']) assert(s.split('a b c d e f', '') == ['a b c d e f']) + +assert(s.format("%%") == "%") +assert(s.format("%i%%", 12) == "12%") +assert(s.format("%i%%%i", 12, 13) == "12%13") +assert(s.format("%s%%", "foo") == "foo%") +assert(s.format("%.1f%%", 3.5) == "3.5%") diff --git a/lib/libesp32/Berry/tools/coc/hash_map.cpp b/lib/libesp32/Berry/tools/coc/hash_map.cpp index 9d917a81c..e05ca4677 100755 --- a/lib/libesp32/Berry/tools/coc/hash_map.cpp +++ b/lib/libesp32/Berry/tools/coc/hash_map.cpp @@ -128,7 +128,7 @@ hash_map::entry hash_map::entry_modify(entry entry, int *var_count) { entry.key = coc::escape_operator(entry.key); if (entry.value == "var") { - entry.value = "be_const_index(" + entry.value = "be_const_var(" + std::to_string(*var_count) + ")"; ++(*var_count); } else { From 74b24298bde1603809fddd0f98b3956d38446985 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 23 Aug 2021 16:18:21 +0200 Subject: [PATCH 044/317] Fix Shelly 2.5 negative power values on relay 1 regression from 9.5.0.5 Fix Shelly 2.5 negative power values on relay 1 regression from 9.5.0.5 (#12943) --- CHANGELOG.md | 1 + tasmota/tasmota_template.h | 2 +- tasmota/xnrg_07_ade7953.ino | 24 ++++++++++++++++-------- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f358e39ea..ca83faf51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. ### Fixed - WDT reset on shutters with stepper motors during deceleration (#12849) +- Shelly 2.5 negative power values on relay 1 regression from 9.5.0.5 ## [9.5.0.6] 20210820 ### Added diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index d30ce1472..fb7220586 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -639,7 +639,7 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_HJL_CF), // HJL-01/BL0937 CF power #endif #if defined(USE_I2C) && defined(USE_ADE7953) - AGPIO(GPIO_ADE7953_IRQ), // ADE7953 IRQ + AGPIO(GPIO_ADE7953_IRQ) + 2, // ADE7953 IRQ #endif #ifdef USE_CSE7761 AGPIO(GPIO_CSE7761_TX), // CSE7761 Serial interface (Dual R3) diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index 4f94b25ce..fc900b699 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -21,7 +21,10 @@ #ifdef USE_ENERGY_SENSOR #ifdef USE_ADE7953 /*********************************************************************************************\ - * ADE7953 - Energy (Shelly 2.5) + * ADE7953 - Energy used in Shelly 2.5 (model 0) and Shelly EM (model 1) + * + * {"NAME":"Shelly 2.5","GPIO":[320,0,32,0,224,193,0,0,640,192,608,225,3456,4736],"FLAG":0,"BASE":18} + * {"NAME":"Shelly EM","GPIO":[0,0,0,0,0,0,0,0,640,3457,608,224,0,1],"FLAG":0,"BASE":18} * * Based on datasheet from https://www.analog.com/en/products/ade7953.html * @@ -69,6 +72,7 @@ struct Ade7953 { uint32_t current_rms[2] = { 0, 0 }; uint32_t active_power[2] = { 0, 0 }; uint8_t init_step = 0; + uint8_t model = 0; // 0 = Shelly 2.5, 1 = Shelly EM } Ade7953; int Ade7953RegSize(uint16_t reg) @@ -182,12 +186,14 @@ void Ade7953GetData(void) for (uint32_t channel = 0; channel < 2; channel++) { Energy.data_valid[channel] = 0; Energy.active_power[channel] = (float)Ade7953.active_power[channel] / (Settings->energy_power_calibration / 10); - if ((acc_mode & APSIGN[channel]) != 0) { - Energy.active_power[channel] = Energy.active_power[channel] * -1; - } Energy.reactive_power[channel] = (float)reactive_power[channel] / (Settings->energy_power_calibration / 10); - if ((acc_mode & VARSIGN[channel]) != 0) { - Energy.reactive_power[channel] = Energy.reactive_power[channel] * -1; + if (1 == Ade7953.model) { // Shelly EM + if ((acc_mode & APSIGN[channel]) != 0) { + Energy.active_power[channel] = Energy.active_power[channel] * -1; + } + if ((acc_mode & VARSIGN[channel]) != 0) { + Energy.reactive_power[channel] = Energy.reactive_power[channel] * -1; + } } Energy.apparent_power[channel] = (float)apparent_power[channel] / (Settings->energy_power_calibration / 10); if (0 == Energy.active_power[channel]) { @@ -223,8 +229,10 @@ void Ade7953EnergyEverySecond(void) void Ade7953DrvInit(void) { - if (PinUsed(GPIO_ADE7953_IRQ)) { // Irq on GPIO16 is not supported... - pinMode(Pin(GPIO_ADE7953_IRQ), INPUT); // Related to resetPins() - Must be set to input + if (PinUsed(GPIO_ADE7953_IRQ, GPIO_ANY)) { // Irq on GPIO16 is not supported... + uint32_t pin_irq = Pin(GPIO_ADE7953_IRQ, GPIO_ANY); + pinMode(pin_irq, INPUT); // Related to resetPins() - Must be set to input + Ade7953.model = GetPin(pin_irq) - AGPIO(GPIO_ADE7953_IRQ); // 0 .. 1 ; delay(100); // Need 100mS to init ADE7953 if (I2cSetDevice(ADE7953_ADDR)) { if (HLW_PREF_PULSE == Settings->energy_power_calibration) { From 8e9960be80dd6bb1cd000322667afd7970803a4d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 23 Aug 2021 17:24:42 +0200 Subject: [PATCH 045/317] Allow correct negative values on Shelly 2.5 relay1 --- tasmota/xnrg_07_ade7953.ino | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index fc900b699..a2c58e6f1 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -147,6 +147,10 @@ void Ade7953GetData(void) Ade7953.period = value; // Period } else if (10 == i) { acc_mode = value; // Accumulation mode + if (0 == Ade7953.model) { // Shelly 2.5 - Swap channel B values due to hardware connection + if (acc_mode & APSIGN[0]) { acc_mode &= ~APSIGN[0]; } else { acc_mode |= APSIGN[0]; } + if (acc_mode & VARSIGN[0]) { acc_mode &= ~VARSIGN[0]; } else { acc_mode |= VARSIGN[0]; } + } } else { reg[i >> 2][i &3] = value; } @@ -187,14 +191,14 @@ void Ade7953GetData(void) Energy.data_valid[channel] = 0; Energy.active_power[channel] = (float)Ade7953.active_power[channel] / (Settings->energy_power_calibration / 10); Energy.reactive_power[channel] = (float)reactive_power[channel] / (Settings->energy_power_calibration / 10); - if (1 == Ade7953.model) { // Shelly EM +// if (1 == Ade7953.model) { // Shelly EM if ((acc_mode & APSIGN[channel]) != 0) { Energy.active_power[channel] = Energy.active_power[channel] * -1; } if ((acc_mode & VARSIGN[channel]) != 0) { Energy.reactive_power[channel] = Energy.reactive_power[channel] * -1; } - } +// } Energy.apparent_power[channel] = (float)apparent_power[channel] / (Settings->energy_power_calibration / 10); if (0 == Energy.active_power[channel]) { Energy.current[channel] = 0; From 7d1bcda887369eafaaebb3c19385963d720f3ee8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 23 Aug 2021 17:37:12 +0200 Subject: [PATCH 046/317] Saving bytes for same result --- tasmota/xnrg_07_ade7953.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index a2c58e6f1..5ed9f3518 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -148,8 +148,10 @@ void Ade7953GetData(void) } else if (10 == i) { acc_mode = value; // Accumulation mode if (0 == Ade7953.model) { // Shelly 2.5 - Swap channel B values due to hardware connection - if (acc_mode & APSIGN[0]) { acc_mode &= ~APSIGN[0]; } else { acc_mode |= APSIGN[0]; } - if (acc_mode & VARSIGN[0]) { acc_mode &= ~VARSIGN[0]; } else { acc_mode |= VARSIGN[0]; } +// if (acc_mode & APSIGN[0]) { acc_mode &= ~APSIGN[0]; } else { acc_mode |= APSIGN[0]; } +// if (acc_mode & VARSIGN[0]) { acc_mode &= ~VARSIGN[0]; } else { acc_mode |= VARSIGN[0]; } + acc_mode ^= (APSIGN[0] | VARSIGN[0]); +// acc_mode ^= 0xA00; } } else { reg[i >> 2][i &3] = value; From 0f3a74bad24cdc80801d4acda59b99c9cbce0a96 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 23 Aug 2021 18:18:11 +0200 Subject: [PATCH 047/317] Final fix for Shelly 2.5 --- tasmota/xnrg_07_ade7953.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index 5ed9f3518..f4270deaf 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -147,12 +147,14 @@ void Ade7953GetData(void) Ade7953.period = value; // Period } else if (10 == i) { acc_mode = value; // Accumulation mode +/* if (0 == Ade7953.model) { // Shelly 2.5 - Swap channel B values due to hardware connection // if (acc_mode & APSIGN[0]) { acc_mode &= ~APSIGN[0]; } else { acc_mode |= APSIGN[0]; } // if (acc_mode & VARSIGN[0]) { acc_mode &= ~VARSIGN[0]; } else { acc_mode |= VARSIGN[0]; } acc_mode ^= (APSIGN[0] | VARSIGN[0]); // acc_mode ^= 0xA00; } +*/ } else { reg[i >> 2][i &3] = value; } @@ -193,14 +195,14 @@ void Ade7953GetData(void) Energy.data_valid[channel] = 0; Energy.active_power[channel] = (float)Ade7953.active_power[channel] / (Settings->energy_power_calibration / 10); Energy.reactive_power[channel] = (float)reactive_power[channel] / (Settings->energy_power_calibration / 10); -// if (1 == Ade7953.model) { // Shelly EM + if (1 == Ade7953.model) { // Shelly EM if ((acc_mode & APSIGN[channel]) != 0) { Energy.active_power[channel] = Energy.active_power[channel] * -1; } if ((acc_mode & VARSIGN[channel]) != 0) { Energy.reactive_power[channel] = Energy.reactive_power[channel] * -1; } -// } + } Energy.apparent_power[channel] = (float)apparent_power[channel] / (Settings->energy_power_calibration / 10); if (0 == Energy.active_power[channel]) { Energy.current[channel] = 0; From 0e1a5a0a792cc844568ddf6a6eed5cbfac579ef2 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 23 Aug 2021 19:47:37 +0200 Subject: [PATCH 048/317] Berry support for vararg --- CHANGELOG.md | 1 + lib/libesp32/Berry/src/be_parser.c | 34 ++++++++++++++++++++++++------ lib/libesp32/Berry/src/be_vm.c | 15 +++++++++++++ lib/libesp32/Berry/tests/vararg.be | 14 ++++++++++++ tasmota/xdrv_52_9_berry.ino | 2 +- 5 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 lib/libesp32/Berry/tests/vararg.be diff --git a/CHANGELOG.md b/CHANGELOG.md index ca83faf51..e3ea9ded4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility - Support for IEM3155 Wattmeter (#12940) +- Berry support for vararg ### Fixed - WDT reset on shutters with stepper motors during deceleration (#12849) diff --git a/lib/libesp32/Berry/src/be_parser.c b/lib/libesp32/Berry/src/be_parser.c index f326d34d0..1f38f48e2 100644 --- a/lib/libesp32/Berry/src/be_parser.c +++ b/lib/libesp32/Berry/src/be_parser.c @@ -528,23 +528,45 @@ static void singlevar(bparser *parser, bexpdesc *var) } } +/* parse a vararg argument in the form `def f(a, *b) end` */ +/* Munch the '*', read the token, create variable and declare the function as vararg */ +static void func_vararg(bparser *parser) { + bexpdesc v; + bstring *str; + match_token(parser, OptMul); /* skip '*' */ + str = next_token(parser).u.s; + match_token(parser, TokenId); /* match and skip ID */ + new_var(parser, str, &v); /* new variable */ + parser->finfo->proto->varg = 1; /* set varg flag */ +} + /* Parse function or method definition variable list */ /* Create an implicit local variable for each argument starting at R0 */ /* Update function proto argc to the expected number or arguments */ /* Raise an exception if multiple arguments have the same name */ +/* New: vararg support */ static void func_varlist(bparser *parser) { bexpdesc v; bstring *str; - /* '(' [ID {',' ID}] ')' */ + /* '(' [ ID {',' ID}] ')' or */ + /* '(' '*' ID ')' or */ + /* '(' [ ID {',' ID}] ',' '*' ID ')' */ match_token(parser, OptLBK); /* skip '(' */ - if (match_id(parser, str) != NULL) { + if (next_type(parser) == OptMul) { + func_vararg(parser); + } else if (match_id(parser, str) != NULL) { new_var(parser, str, &v); /* new variable */ while (match_skip(parser, OptComma)) { /* ',' */ - str = next_token(parser).u.s; - match_token(parser, TokenId); /* match and skip ID */ - /* new local variable */ - new_var(parser, str, &v); + if (next_type(parser) == OptMul) { + func_vararg(parser); + break; + } else { + str = next_token(parser).u.s; + match_token(parser, TokenId); /* match and skip ID */ + /* new local variable */ + new_var(parser, str, &v); + } } } match_token(parser, OptRBK); /* skip ')' */ diff --git a/lib/libesp32/Berry/src/be_vm.c b/lib/libesp32/Berry/src/be_vm.c index 359aaa2d5..370a7997c 100644 --- a/lib/libesp32/Berry/src/be_vm.c +++ b/lib/libesp32/Berry/src/be_vm.c @@ -12,6 +12,7 @@ #include "be_class.h" #include "be_func.h" #include "be_vector.h" +#include "be_list.h" #include "be_map.h" #include "be_module.h" #include "be_mem.h" @@ -1086,6 +1087,20 @@ newframe: /* a new call frame */ for (; v < end; ++v) { /* set all not provided arguments to nil */ var_setnil(v); } + if (proto->varg) { /* there are vararg at the last argument, build the list */ + /* code below uses mostly low-level calls for performance */ + be_stack_require(vm, argc + 2); /* make sure we don't overflow the stack */ + bvalue *top_save = vm->top; /* save original stack, we need fresh slots to create the 'list' instance */ + vm->top = v; /* move top of stack right after last argument */ + be_newobject(vm, "list"); /* this creates 2 objects on stack: list instance, BE_LIST object */ + blist *list = var_toobj(vm->top-1); /* get low-level BE_LIST structure */ + v = reg + proto->argc - 1; /* last argument */ + for (; v < reg + argc; v++) { + be_list_push(vm, list, v); /* push all varargs into list */ + } + *(reg + proto->argc - 1) = *(vm->top-2); /* change the vararg argument to now contain the list instance */ + vm->top = top_save; /* restore top of stack pointer */ + } goto newframe; /* continue execution of the closure */ } case BE_NTVCLOS: { diff --git a/lib/libesp32/Berry/tests/vararg.be b/lib/libesp32/Berry/tests/vararg.be new file mode 100644 index 000000000..7dd3541d3 --- /dev/null +++ b/lib/libesp32/Berry/tests/vararg.be @@ -0,0 +1,14 @@ +#- vararg -# +def f(a,*b) return b end + +assert(f() == []) +assert(f(1) == []) +assert(f(1,2) == [2]) +assert(f(1,2,3) == [2, 3]) + +def g(*a) return a end + +assert(g() == []) +assert(g("foo") == ["foo"]) +assert(g("foo", nil) == ["foo", nil]) +assert(g("foo", nil, 2) == ["foo", nil, 2]) diff --git a/tasmota/xdrv_52_9_berry.ino b/tasmota/xdrv_52_9_berry.ino index 6095a7750..36d006618 100644 --- a/tasmota/xdrv_52_9_berry.ino +++ b/tasmota/xdrv_52_9_berry.ino @@ -347,7 +347,7 @@ void BrLoad(const char * script_name) { bool loaded = be_tobool(berry.vm, -2); // did it succeed? be_pop(berry.vm, 2); if (loaded) { - AddLog(LOG_LEVEL_INFO, D_LOG_BERRY "sucessfully loaded '%s'", script_name); + AddLog(LOG_LEVEL_INFO, D_LOG_BERRY "successfully loaded '%s'", script_name); } else { AddLog(LOG_LEVEL_INFO, D_LOG_BERRY "no '%s'", script_name); } From ce8958c89b85bd3348d2b94767614fe9b536d08a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 23 Aug 2021 20:32:32 +0200 Subject: [PATCH 049/317] Berry preliminary support for OneWire --- lib/libesp32/Berry/default/be_modtab.c | 4 + lib/libesp32/Berry/default/be_onewire_lib.c | 57 + lib/libesp32/Berry/generate/be_const_strtab.h | 1296 +++++------ .../Berry/generate/be_const_strtab_def.h | 1904 +++++++++-------- .../be_fixed_be_class_tasmota_onewire.h | 28 + tasmota/xdrv_52_3_berry_onewire.ino | 232 ++ 6 files changed, 1931 insertions(+), 1590 deletions(-) create mode 100644 lib/libesp32/Berry/default/be_onewire_lib.c create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_onewire.h create mode 100644 tasmota/xdrv_52_3_berry_onewire.ino diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 6eaa6b03c..04e33c3d2 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -104,6 +104,7 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = { #ifdef ESP32 extern void be_load_tasmota_ntvlib(bvm *vm); extern void be_load_wirelib(bvm *vm); +extern void be_load_onewirelib(bvm *vm); extern void be_load_Driver_class(bvm *vm); extern void be_load_Timer_class(bvm *vm); extern void be_load_driver_i2c_lib(bvm *vm); @@ -147,6 +148,9 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_wirelib(vm); be_load_driver_i2c_lib(vm); #endif // USE_I2C +#if defined(USE_ONEWIRE) || defined(USE_DS18x20) + be_load_onewirelib(vm); +#endif #ifdef USE_I2S_AUDIO_BERRY be_load_driver_audio_lib(vm); #endif diff --git a/lib/libesp32/Berry/default/be_onewire_lib.c b/lib/libesp32/Berry/default/be_onewire_lib.c new file mode 100644 index 000000000..838e6ccf9 --- /dev/null +++ b/lib/libesp32/Berry/default/be_onewire_lib.c @@ -0,0 +1,57 @@ +/******************************************************************** + * Tasmota lib + * + * To use: `import wire` + * + * 2 wire communication - I2C + *******************************************************************/ +#include "be_constobj.h" + +#if defined(USE_ONEWIRE) || defined(USE_DS18x20) + +extern int b_onewire_init(bvm *vm); +extern int b_onewire_deinit(bvm *vm); + +extern int b_onewire_reset(bvm *vm); +extern int b_onewire_select(bvm *vm); +extern int b_onewire_skip(bvm *vm); +extern int b_onewire_depower(bvm *vm); + +extern int b_onewire_write(bvm *vm); +extern int b_onewire_read(bvm *vm); + +extern int b_onewire_reset_search(bvm *vm); +extern int b_onewire_target_search(bvm *vm); +extern int b_onewire_search(bvm *vm); + +#include "../generate/be_fixed_be_class_tasmota_onewire.h" + +void be_load_onewirelib(bvm *vm) { + be_pushntvclass(vm, &be_class_tasmota_onewire); + be_setglobal(vm, "OneWire"); + be_pop(vm, 1); +} + +/* @const_object_info_begin + +class be_class_tasmota_onewire (scope: global, name: OneWire) { + .p, var + + init, func(b_onewire_init) + deinit, func(b_onewire_deinit) + + reset, func(b_onewire_reset) + select, func(b_onewire_select) + skip, func(b_onewire_skip) + depower, func(b_onewire_depower) + + write, func(b_onewire_write) + read, func(b_onewire_read) + + reset_search, func(b_onewire_reset_search) + target_search, func(b_onewire_target_search) + search, func(b_onewire_search) +} +@const_object_info_end */ + +#endif // defined(USE_ONEWIRE) || defined(USE_DS18x20) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 7c3ca35d0..905ac6f52 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,655 +1,663 @@ -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_fromb64; extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_lv_area; extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_int; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_XPT2046_CS; extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_GCM; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SDCARD_CS; extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_SYMBOL_UPLOAD; extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_dot_p1; extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_GCM; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_LED1; extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_push; extern const bcstring be_const_str_TASMOTACLIENT_RXD; extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_MAX7219CS; extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_lv_img; extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_class; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 5d12d4165..e1956547d 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,980 +1,992 @@ -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, NULL); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_KEY1); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_MGC3130_RESET); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_IBEACON_TX); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_GPS); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_I2C_SCL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SDM120_TX); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_KEY1_PD); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_EXS_ENABLE); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_DSB); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_exec_rules); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_IRRECV); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ELECTRIQ_MOODL_TX); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_setmember); be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_CSE7766_RX); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(GCM, "GCM", 3790320054u, 0, 3, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_LE01MR_RX); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_IBEACON_RX); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_MAX7219DIN); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_BATTERY_FULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HX711_DAT); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_DDS2382_TX); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_CUT); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_BACKLIGHT); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_KEY1_NP); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_NRG_SEL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_MIEL_HVAC_RX); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_DHT11); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(GCM, "GCM", 3790320054u, 0, 3, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_ETH_PHY_MDC); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_AudioGenerator); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_DDS2382_RX); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_CUT); be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_ARIRFSEL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_setbits); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_FTC532); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_CSE7766_RX); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_SM16716_SEL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_DDS2382_TX); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_MAX31855CLK); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_ILI9341_CS); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, NULL); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_setbits); be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_HX711_DAT); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ETH_PHY_POWER); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_SYMBOL_BATTERY_FULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_ETH_PHY_MDIO); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_NONE); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_AudioGeneratorWAV); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_MGC3130_XFER); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_RF_SENSOR); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_BOILER_OT_TX); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, NULL); +be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_LED1_INV); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_LE01MR_TX); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - NULL, - (const bstring *)&be_const_str_MCP39F5_TX, - NULL, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_content_button, - (const bstring *)&be_const_str_HPMA_TX, - NULL, - NULL, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_WEBCAM_HSD, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_codedump, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_attrdump, - (const bstring *)&be_const_str_SWT1_PD, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_OLED_RESET, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_tolower, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_copy, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_def, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, + (const bstring *)&be_const_str_WEBCAM_PWDN, + (const bstring *)&be_const_str_opt_eq, (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_SYMBOL_PLAY, + NULL, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_lv_point, + (const bstring *)&be_const_str_MAX31855CS, + NULL, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_raise, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_exp, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + NULL, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_NEOPOOL_TX, (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_detect, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_ADC_BUTTON_INV, NULL, - (const bstring *)&be_const_str_REL1, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_PULLUP, NULL, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_GCM, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_SSPI_MOSI, NULL, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_members, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_ADC_LIGHT, + NULL, + (const bstring *)&be_const_str_lv_chart, (const bstring *)&be_const_str_LED1, NULL, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str__end_transmission, - NULL, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - NULL, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_sin, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_lv_draw_mask_saved, - (const bstring *)&be_const_str_OUTPUT_LO, - NULL, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_iter, - (const bstring *)&be_const_str__begin_transmission, - NULL, - (const bstring *)&be_const_str_DI, - NULL, - (const bstring *)&be_const_str_imin, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_IEM3000_TX, - NULL, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_rtc, - NULL, - NULL, - (const bstring *)&be_const_str_read24, - (const bstring *)&be_const_str_digital_read, - (const bstring *)&be_const_str_lv_checkbox, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_SYMBOL_STOP, - NULL, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_TM1638CLK, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str_lv_tileview, - (const bstring *)&be_const_str_WEBCAM_VSYNC, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_arg_size, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_gc, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_TCP_TX, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_lv_cont, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_lv_msgbox, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_add_cmd, - NULL, - (const bstring *)&be_const_str_EPD_DATA, - NULL, - (const bstring *)&be_const_str_MD5, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_ZIGBEE_RST, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_true, - (const bstring *)&be_const_str_resp_cmnd, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_MCP39F5_RST, - NULL, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_DDS2382_RX, - NULL, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_acos, - NULL, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_AudioFileSourceFS, - NULL, - (const bstring *)&be_const_str_lv_img, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_module, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_SYMBOL_WARNING, - (const bstring *)&be_const_str_input, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_setmember, - (const bstring *)&be_const_str_lv_point, - (const bstring *)&be_const_str_get, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_erase, - (const bstring *)&be_const_str_lv_indev, - NULL, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_TXD, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_traceback, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_lv_draw_mask_fade_param, - (const bstring *)&be_const_str_collect, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_lv_draw_img_dsc, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_ADC_BUTTON, - NULL, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_SSPI_CS, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_lv_color, - (const bstring *)&be_const_str_WINDMETER_SPEED, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_GCM, - (const bstring *)&be_const_str_content_send_style, - (const bstring *)&be_const_str_publish_result, - (const bstring *)&be_const_str_as, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_get_light, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_add_driver, - NULL, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_PN532_RXD, - NULL, - NULL, - (const bstring *)&be_const_str_content_start, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_top, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_lv_gauge_format_cb, - (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_read, + (const bstring *)&be_const_str_SYMBOL_LIST, (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_size, - (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_save, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_arg_name, + NULL, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_SYMBOL_HOME, + (const bstring *)&be_const_str_SYMBOL_WARNING, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str__write, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_RA8876_CS, + NULL, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_lv_line, + (const bstring *)&be_const_str_init, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_LMT01, + NULL, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_SSD1351_CS, + NULL, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_try_rule, + (const bstring *)&be_const_str_var, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_lv_gauge_format_cb, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_lv_event_cb, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_wire1, + (const bstring *)&be_const_str_SYMBOL_FILE, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_SYMBOL_PLUS, + NULL, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str__rules, + (const bstring *)&be_const_str_lv_tabview, + (const bstring *)&be_const_str_CC1101_GDO0, + NULL, + (const bstring *)&be_const_str_erase, + (const bstring *)&be_const_str_rand, + NULL, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_SSPI_CS, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + (const bstring *)&be_const_str_TXD, NULL, NULL, - (const bstring *)&be_const_str_RC522_CS, - NULL, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_tostring, + (const bstring *)&be_const_str_PULLDOWN, + (const bstring *)&be_const_str_lv_img, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_chars_in_string, + (const bstring *)&be_const_str_select, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_rtc, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, (const bstring *)&be_const_str_addr, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_DHT11, + NULL, + (const bstring *)&be_const_str_add, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_lv_design_cb, + (const bstring *)&be_const_str_SYMBOL_WIFI, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_time_dump, + (const bstring *)&be_const_str_classname, + (const bstring *)&be_const_str_lv_obj, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_SYMBOL_VIDEO, (const bstring *)&be_const_str_lv_textarea, NULL, NULL, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str___iterator__, + NULL, + (const bstring *)&be_const_str_MAX7219CLK, + NULL, + (const bstring *)&be_const_str_I2S_IN_CLK, + NULL, + (const bstring *)&be_const_str_WEBCAM_SIOD, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_try, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_detect, + NULL, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_PZEM016_RX, (const bstring *)&be_const_str_IEM3000_RX, NULL, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_lv_group, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_LOW, NULL, - (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_lv_draw_img_dsc, + NULL, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_SYMBOL_NEW_LINE, + (const bstring *)&be_const_str_TELEINFO_RX, + NULL, + NULL, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_map, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_lv_linemeter, + (const bstring *)&be_const_str_count, + NULL, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_content_button, (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_lv_dropdown, NULL, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_exists, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_SENSOR_END, + NULL, + NULL, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + NULL, + NULL, + (const bstring *)&be_const_str_content_start, + NULL, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_str, + (const bstring *)&be_const_str_SSD1351_DC, + (const bstring *)&be_const_str_montserrat_font, (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_deinit, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, - (const bstring *)&be_const_str_SYMBOL_SHUFFLE, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_super, + (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, NULL, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_BOILER_OT_TX, - NULL, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_WE517_RX, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_A4988_ENA, NULL, + (const bstring *)&be_const_str_cos, + (const bstring *)&be_const_str_module, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_resize, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_insert, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_cmd, + (const bstring *)&be_const_str_nil, + (const bstring *)&be_const_str_lv_slider, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_lv_switch, (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_opt_neq + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_set_light, + NULL, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_BS814_DAT, + NULL, + (const bstring *)&be_const_str_atan }; static const struct bconststrtab m_const_string_table = { - .size = 316, - .count = 633, + .size = 320, + .count = 641, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_onewire.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_onewire.h new file mode 100644 index 000000000..6363d83b2 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_onewire.h @@ -0,0 +1,28 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_tasmota_onewire_map) { + { be_const_key(reset, -1), be_const_func(b_onewire_reset) }, + { be_const_key(search, 10), be_const_func(b_onewire_search) }, + { be_const_key(depower, -1), be_const_func(b_onewire_depower) }, + { be_const_key(init, 2), be_const_func(b_onewire_init) }, + { be_const_key(deinit, -1), be_const_func(b_onewire_deinit) }, + { be_const_key(reset_search, -1), be_const_func(b_onewire_reset_search) }, + { be_const_key(skip, -1), be_const_func(b_onewire_skip) }, + { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(write, -1), be_const_func(b_onewire_write) }, + { be_const_key(read, -1), be_const_func(b_onewire_read) }, + { be_const_key(select, 11), be_const_func(b_onewire_select) }, + { be_const_key(target_search, -1), be_const_func(b_onewire_target_search) }, +}; + +static be_define_const_map( + be_class_tasmota_onewire_map, + 12 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_tasmota_onewire, + 1, + NULL, + OneWire +); diff --git a/tasmota/xdrv_52_3_berry_onewire.ino b/tasmota/xdrv_52_3_berry_onewire.ino new file mode 100644 index 000000000..a173b4b8e --- /dev/null +++ b/tasmota/xdrv_52_3_berry_onewire.ino @@ -0,0 +1,232 @@ +/* + xdrv_52_3_berry_native.ino - Berry scripting language, native fucnctions + + Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#ifdef USE_BERRY + +#if defined(USE_ONEWIRE) || defined(USE_DS18x20) + +#include +#include + +// // read the `bus` attribute and return `Wire` or `Wire1` +// TwoWire & getWire(bvm *vm); +// TwoWire & getWire(bvm *vm) { +// be_getmember(vm, 1, "bus"); +// int32_t bus = be_toint(vm, -1); // bus is 1 or 2 +// be_pop(vm, 1); +// if (2 != bus) { +// return Wire; +// } else { +// return Wire1; +// } +// } +// int32_t getBus(bvm *vm); // 1 or 2 +// int32_t getBus(bvm *vm) { +// be_getmember(vm, 1, "bus"); +// int32_t bus = be_toint(vm, -1); +// be_pop(vm, 1); +// return bus; +// } + +/*********************************************************************************************\ + * Native functions mapped to Berry functions + * + * import wire + * + * wire.get_free_heap() -> int + * +\*********************************************************************************************/ +extern "C" { + OneWire * b_onewire_get(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + OneWire * ow = (OneWire *) be_tocomptr(vm, -1); + be_pop(vm, 1); + return ow; + } + + // Berry: `init(gpio:int)` + int32_t b_onewire_init(struct bvm *vm); + int32_t b_onewire_init(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc > 1 && be_isint(vm, 2)) { + int gpio = be_toint(vm, 2); + OneWire * ow = new OneWire(gpio); + be_pushcomptr(vm, (void*) ow); + be_setmember(vm, 1, ".p"); + be_return_nil(vm); + } + be_raise(vm, kTypeError, "gpio number expected"); + } + + // Berry: `deinit(void)` + int32_t b_onewire_deinit(struct bvm *vm); + int32_t b_onewire_deinit(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + OneWire * ow = (OneWire *) be_tocomptr(vm, -1); + if (ow) { + delete ow; + // clear + be_pushcomptr(vm, (void*) NULL); + be_setmember(vm, 1, ".p"); + } + be_return_nil(vm); + } + + // Berry: `reset(void) -> bool` + // returns true if a device is present + int32_t b_onewire_reset(struct bvm *vm); + int32_t b_onewire_reset(struct bvm *vm) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + uint8_t resp = ow->reset(); + be_pushbool(vm, resp != 0); + be_return(vm); + } + be_return_nil(vm); + } + + // Berry: `skip(void) -> nil` + int32_t b_onewire_skip(struct bvm *vm); + int32_t b_onewire_skip(struct bvm *vm) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + ow->skip(); + } + be_return_nil(vm); + } + + // Berry: `depower(void) -> nil` + int32_t b_onewire_depower(struct bvm *vm); + int32_t b_onewire_depower(struct bvm *vm) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + ow->depower(); + } + be_return_nil(vm); + } + + // Berry: `select(bytes) -> nil` + // returns true if a device is present + int32_t b_onewire_select(struct bvm *vm); + int32_t b_onewire_select(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc > 1 && be_isbytes(vm, 2)) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + uint8_t rom[8] = {0}; + size_t len; + const void * buf = be_tobytes(vm, 2, &len); + if (len > 8) { len = 8; } /* 8 bytes max */ + memmove(rom, buf, len); + ow->select(rom); + } + be_return_nil(vm); + } + be_raise(vm, kTypeError, NULL); + } + + // Berry: `write(byte:int | bytes [, power:bool = false]) -> nil` + int32_t b_onewire_write(struct bvm *vm); + int32_t b_onewire_write(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + bool power = false; + if (argc > 1 && (be_isint(vm, 2) || be_isbytes(vm, 2))) { + if (argc > 2 && (be_isbool(vm, 3) || be_isint(vm,3))) { + power = be_tobool(vm, 3); + } + uint8_t val = 0; + if (be_isint(vm, 2)) { + val = be_toint(vm, 2); + } else { /* bytes */ + size_t len = 0; + const uint8_t * buf = (const uint8_t *) be_tobytes(vm, 2, &len); + if (len > 0) { + val = buf[0]; + } else { + be_return_nil(vm); /* abort */ + } + } + OneWire * ow = b_onewire_get(vm); + if (ow) { + ow->write(val, power); + } + be_return_nil(vm); + } + be_raise(vm, kTypeError, NULL); + } + + // Berry: `read(void) -> bytes()` + int32_t b_onewire_read(struct bvm *vm); + int32_t b_onewire_read(struct bvm *vm) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + uint8_t val = ow->read(); + be_pushbytes(vm, &val, 1); + be_return(vm); + } + be_return_nil(vm); + } + + // Berry: `reset_search(void) -> nil` + int32_t b_onewire_reset_search(struct bvm *vm); + int32_t b_onewire_reset_search(struct bvm *vm) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + ow->reset_search(); + } + be_return_nil(vm); + } + + // Berry: `target_search(family_code:int) -> nil` + int32_t b_onewire_target_search(struct bvm *vm); + int32_t b_onewire_target_search(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc > 1 && be_isint(vm, 2)) { + OneWire * ow = b_onewire_get(vm); + if (ow) { + ow->target_search(be_toint(vm, 2)); + } + be_return_nil(vm); + } + be_raise(vm, kTypeError, NULL); + } + + // Berry: `search(void) -> bytes() or nil` + int32_t b_onewire_search(struct bvm *vm); + int32_t b_onewire_search(struct bvm *vm) { + uint8_t rom[8] = {0}; + OneWire * ow = b_onewire_get(vm); + if (ow) { + uint8_t res = ow->search(rom); + if (res) { + be_pushbytes(vm, rom, sizeof(rom)); + be_return(vm); + } else { + be_return_nil(vm); + } + } + be_return_nil(vm); + } + +} + +#endif // USE_I2C + +#endif // USE_BERRY From e3189842a997dbb790459bca468d3929b1e06b85 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 24 Aug 2021 11:25:15 +0200 Subject: [PATCH 050/317] rm duplicate entry --- platformio_tasmota_cenv_sample.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 904a10a06..f3e59e54b 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -95,7 +95,6 @@ lib_extra_dirs = lib/libesp32 lib/lib_i2c lib/lib_ssl lib/lib_display -lib_ignore = lib_ignore = TTGO TWatch Library ESP32-HomeKit From 75d259a77eeb6d2e238804fb7868a3b2397a165c Mon Sep 17 00:00:00 2001 From: David Stein Date: Tue, 24 Aug 2021 15:54:02 +0200 Subject: [PATCH 051/317] xsns_82_wiegand - fix for zero key if keypad is used in the single key mode (SetOption124 1) --- tasmota/xsns_82_wiegand.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_82_wiegand.ino b/tasmota/xsns_82_wiegand.ino index 59b47f375..2a340b869 100644 --- a/tasmota/xsns_82_wiegand.ino +++ b/tasmota/xsns_82_wiegand.ino @@ -396,7 +396,7 @@ void Wiegand::ScanForTag() { for (int i= 0; i < WIEGAND_RFID_ARRAY_SIZE; i++) { - if (rfid_found[i].RFID != 0) { + if (rfid_found[i].RFID != 0 || (rfid_found[i].RFID == 0 && i == 0)) { uint64_t oldTag = rfid; bool validKey = WiegandConversion(rfid_found[i].RFID, rfid_found[i].bitCount); #if (DEV_WIEGAND_TEST_MODE)>0 From c3b38c0d2cc0f16538be7a5773258c8364c25302 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 24 Aug 2021 20:48:50 +0200 Subject: [PATCH 052/317] Fix ESP32-C3 compilation (#12961) --- tasmota/xsns_33_ds3231.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_33_ds3231.ino b/tasmota/xsns_33_ds3231.ino index 7c933f855..34e952ab4 100644 --- a/tasmota/xsns_33_ds3231.ino +++ b/tasmota/xsns_33_ds3231.ino @@ -150,7 +150,7 @@ void DS3231EverySecond(void) TasmotaGlobal.rules_flag.time_set = 1; } } - else if (!ds3231WriteStatus && Rtc.utc_time > START_VALID_TIME && abs(Rtc.utc_time - ReadFromDS3231()) > 60) {//if time is valid and is drift from RTC in more that 60 second + else if (!ds3231WriteStatus && Rtc.utc_time > START_VALID_TIME && abs((int32_t)(Rtc.utc_time - ReadFromDS3231())) > 60) { // If time is valid and is drift from RTC in more that 60 second AddLog(LOG_LEVEL_INFO, PSTR("Write Time TO DS3231 from NTP (" D_UTC_TIME ") %s, (" D_DST_TIME ") %s, (" D_STD_TIME ") %s"), GetDateAndTime(DT_UTC).c_str(), GetDateAndTime(DT_DST).c_str(), GetDateAndTime(DT_STD).c_str()); SetDS3231Time (Rtc.utc_time); //update the DS3231 time From 04cd9a3c33075f814b7855085af712fabe709e63 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 24 Aug 2021 20:58:17 +0200 Subject: [PATCH 053/317] Update changelogs --- CHANGELOG.md | 4 ++++ RELEASENOTES.md | 3 +++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3ea9ded4..a0222c54e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,13 @@ All notable changes to this project will be documented in this file. - Support for IEM3155 Wattmeter (#12940) - Berry support for vararg +### Changed +- Shelly EM template needs to use GPIO ADE7953_IRQ_2 + ### Fixed - WDT reset on shutters with stepper motors during deceleration (#12849) - Shelly 2.5 negative power values on relay 1 regression from 9.5.0.5 +- Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` (#12960) ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 90ebec0c6..5961f38a0 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -111,6 +111,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Initial support for Tasmota Mesh (TasMesh) providing node/broker communication using ESP-NOW [#11939](https://github.com/arendst/Tasmota/issues/11939) - Berry ESP32 partition manager [#12465](https://github.com/arendst/Tasmota/issues/12465) - Berry ESP32 support for I2S audio mp3 playback +- Berry ESP32 support for vararg - Support for AM2320 Temperature and Humidity Sensor by Lars Wessels [#12485](https://github.com/arendst/Tasmota/issues/12485) - Rule event support as JSON payload [#12496](https://github.com/arendst/Tasmota/issues/12496) - MQTT minimum password length restriction in GUI [#12553](https://github.com/arendst/Tasmota/issues/12553) @@ -145,6 +146,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Prometheus: All metrics are prefixed with ``tasmota_`` [#12842](https://github.com/arendst/Tasmota/issues/12842) Memory metrics have been cleaned up to work consistently between ESP8266 and ESP32 The device name is reported as an info metric +- Shelly EM template needs to use GPIO ADE7953_IRQ_2 ### Fixed - ESP32 core v2.0.0 setting hostname @@ -167,3 +169,4 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Neopool communication error [#12813](https://github.com/arendst/Tasmota/issues/12813) - WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) - Negative power values for ADE7953 based devices like Shelly EM [#12874](https://github.com/arendst/Tasmota/issues/12874) +- Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` [#12960](https://github.com/arendst/Tasmota/issues/12960) From 228593c0922c9023364453d11fe4d3595be501db Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 24 Aug 2021 21:38:11 +0200 Subject: [PATCH 054/317] Fix propagated extra_scripts for ESP32-C3 --- platformio_tasmota_cenv_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index f3e59e54b..21aac4bb2 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -86,7 +86,7 @@ build_flags = ${env:tasmota32_base.build_flags} -DUSE_BLE_ESP32 -DUSE_MI_ESP32 ;-DESP32_STAGE=true -extra_scripts = ${common.extra_scripts} +extra_scripts = ${env:tasmota32_base.extra_scripts} pre:pio-tools/cxx_flags.py lib_extra_dirs = lib/libesp32 lib/libesp32_div From 5ab0081f4796dc053d5c3df2e8b790e8227870bc Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 24 Aug 2021 22:44:33 +0200 Subject: [PATCH 055/317] Berry upgrade to latest changes --- lib/libesp32/Berry/src/be_api.c | 28 ++-- lib/libesp32/Berry/src/be_bytecode.c | 82 +++++++---- lib/libesp32/Berry/src/be_class.c | 26 +++- lib/libesp32/Berry/src/be_code.c | 15 +- lib/libesp32/Berry/src/be_debug.c | 4 +- lib/libesp32/Berry/src/be_module.c | 46 +++++- lib/libesp32/Berry/src/be_module.h | 4 +- lib/libesp32/Berry/src/be_parser.c | 8 ++ lib/libesp32/Berry/src/be_string.c | 1 - lib/libesp32/Berry/src/be_vm.c | 133 ++++-------------- .../Berry/tools/grammar/berry.bytecode | 28 ++-- tasmota/xdrv_52_3_berry_lvgl.ino | 4 +- tasmota/xdrv_52_3_berry_webserver.ino | 5 +- 13 files changed, 197 insertions(+), 187 deletions(-) diff --git a/lib/libesp32/Berry/src/be_api.c b/lib/libesp32/Berry/src/be_api.c index ea78283dc..d883c08d7 100644 --- a/lib/libesp32/Berry/src/be_api.c +++ b/lib/libesp32/Berry/src/be_api.c @@ -608,23 +608,18 @@ BERRY_API bbool be_getbuiltin(bvm *vm, const char *name) BERRY_API bbool be_setmember(bvm *vm, int index, const char *k) { - int res = BE_NIL; bvalue *o = be_indexof(vm, index); + bvalue *v = be_indexof(vm, -1); if (var_isinstance(o)) { bstring *key = be_newstr(vm, k); - bvalue *v = be_indexof(vm, -1); binstance *obj = var_toobj(o); - res = be_instance_setmember(vm, obj, key, v); + return be_instance_setmember(vm, obj, key, v); } else if (var_ismodule(o)) { bstring *key = be_newstr(vm, k); bmodule *mod = var_toobj(o); - bvalue *v = be_module_bind(vm, mod, key); - if (v) { - *v = *be_indexof(vm, -1); - return btrue; - } + return be_module_setmember(vm, mod, key, v); } - return res != BE_NIL; + return bfalse; } BERRY_API bbool be_copy(bvm *vm, int index) @@ -650,16 +645,15 @@ static int ins_member(bvm *vm, int index, const char *k, bbool onlyins) if (var_isinstance(o)) { binstance *obj = var_toobj(o); type = be_instance_member(vm, obj, be_newstr(vm, k), top); - if (type == BE_NONE) { - type = BE_NIL; - } + } else if (var_isclass(o) && !onlyins) { + bclass *cl = var_toobj(o); + type = be_class_member(vm, cl, be_newstr(vm, k), top); } else if (var_ismodule(o) && !onlyins) { bmodule *module = var_toobj(o); - bvalue *v = be_module_attr(vm, module, be_newstr(vm, k)); - if (v != NULL) { - *top = *v; - type = v->type; - } + type = be_module_attr(vm, module, be_newstr(vm, k), top); + } + if (type == BE_NONE) { + type = BE_NIL; } return type; } diff --git a/lib/libesp32/Berry/src/be_bytecode.c b/lib/libesp32/Berry/src/be_bytecode.c index e6d69a0dd..0e0cbf723 100644 --- a/lib/libesp32/Berry/src/be_bytecode.c +++ b/lib/libesp32/Berry/src/be_bytecode.c @@ -23,7 +23,7 @@ #define MAGIC_NUMBER1 0xBE #define MAGIC_NUMBER2 0xCD #define MAGIC_NUMBER3 0xFE -#define BYTECODE_VERSION 1 +#define BYTECODE_VERSION 2 #define USE_64BIT_INT (BE_INTGER_TYPE == 2 \ || BE_INTGER_TYPE == 1 && LONG_MAX == 9223372036854775807L) @@ -179,12 +179,18 @@ static void save_value(bvm *vm, void *fp, bvalue *v) } } -static void save_bytecode(void *fp, bproto *proto) +static void save_bytecode(bvm *vm, void *fp, bproto *proto) { + int forbid_gbl = comp_is_named_gbl(vm); binstruction *code = proto->code, *end; save_long(fp, (uint32_t)proto->codesize); for (end = code + proto->codesize; code < end; ++code) { save_long(fp, (uint32_t)*code); + if (forbid_gbl) { /* we are saving only named globals, so make sure we don't save OP_GETGBL or OP_SETGBL */ + if ((uint32_t)*code == OP_GETGBL || (uint32_t)*code == OP_SETGBL) { + be_raise(vm, "internal_error", "GETGBL/SETGBL found when saving with named globals"); + } + } } } @@ -223,7 +229,9 @@ static void save_proto(bvm *vm, void *fp, bproto *proto) save_string(fp, proto->source); /* source */ save_byte(fp, proto->argc); /* argc */ save_byte(fp, proto->nstack); /* nstack */ - save_bytecode(fp, proto); /* bytecode */ + save_byte(fp, proto->varg); /* varg */ + save_byte(fp, 0x00); /* reserved */ + save_bytecode(vm, fp, proto); /* bytecode */ save_constants(vm, fp, proto); /* constant */ save_proto_table(vm, fp, proto); /* proto table */ save_upvals(fp, proto); /* upvals description table */ @@ -253,8 +261,13 @@ static void save_globals(bvm *vm, void *fp) static void save_global_info(bvm *vm, void *fp) { save_long(fp, be_builtin_count(vm)); - save_long(fp, be_global_count(vm)); - save_globals(vm, fp); + if (comp_is_named_gbl(vm)) { + /* named globals only so no need to save current globals */ + save_long(fp, 0); + } else { + save_long(fp, be_global_count(vm)); + save_globals(vm, fp); + } } void be_bytecode_save(bvm *vm, const char *filename, bproto *proto) @@ -273,7 +286,7 @@ void be_bytecode_save(bvm *vm, const char *filename, bproto *proto) #endif /* BE_USE_BYTECODE_SAVER */ #if BE_USE_BYTECODE_LOADER -static void load_proto(bvm *vm, void *fp, bproto **proto, int info); +static void load_proto(bvm *vm, void *fp, bproto **proto, int info, int version); static uint8_t load_byte(void *fp) { @@ -313,9 +326,13 @@ static int load_head(void *fp) res = buffer[0] == MAGIC_NUMBER1 && buffer[1] == MAGIC_NUMBER2 && buffer[2] == MAGIC_NUMBER3 && - buffer[3] == BYTECODE_VERSION && + buffer[3] <= BYTECODE_VERSION && buffer[4] == vm_sizeinfo(); - return res; + if (res) { + return buffer[3]; + } else { + return 0; + } } bbool be_bytecode_check(const char *path) @@ -385,7 +402,7 @@ static bstring* cache_string(bvm *vm, void *fp) return str; } -static void load_class(bvm *vm, void *fp, bvalue *v) +static void load_class(bvm *vm, void *fp, bvalue *v, int version) { int nvar, count; bclass *c = be_newclass(vm, NULL, NULL); @@ -399,7 +416,7 @@ static void load_class(bvm *vm, void *fp, bvalue *v) value = vm->top; var_setproto(value, NULL); be_incrtop(vm); - load_proto(vm, fp, (bproto**)&var_toobj(value), -3); + load_proto(vm, fp, (bproto**)&var_toobj(value), -3, version); be_method_bind(vm, c, name, var_toobj(value)); be_stackpop(vm, 2); /* pop the cached string and proto */ } @@ -410,13 +427,13 @@ static void load_class(bvm *vm, void *fp, bvalue *v) } } -static void load_value(bvm *vm, void *fp, bvalue *v) +static void load_value(bvm *vm, void *fp, bvalue *v, int version) { switch (load_byte(fp)) { case BE_INT: var_setint(v, load_int(fp)); break; case BE_REAL: var_setreal(v, load_real(fp)); break; case BE_STRING: var_setstr(v, load_string(vm, fp)); break; - case BE_CLASS: load_class(vm, fp, v); break; + case BE_CLASS: load_class(vm, fp, v, version); break; default: break; } } @@ -449,7 +466,7 @@ static void load_bytecode(bvm *vm, void *fp, bproto *proto, int info) } } -static void load_constant(bvm *vm, void *fp, bproto *proto) +static void load_constant(bvm *vm, void *fp, bproto *proto, int version) { int size = (int)load_long(fp); /* nconst */ if (size) { @@ -458,12 +475,12 @@ static void load_constant(bvm *vm, void *fp, bproto *proto) proto->ktab = v; proto->nconst = size; for (end = v + size; v < end; ++v) { - load_value(vm, fp, v); + load_value(vm, fp, v, version); } } } -static void load_proto_table(bvm *vm, void *fp, bproto *proto) +static void load_proto_table(bvm *vm, void *fp, bproto *proto, int version) { int size = (int)load_long(fp); /* proto count */ if (size) { @@ -472,7 +489,7 @@ static void load_proto_table(bvm *vm, void *fp, bproto *proto) proto->ptab = p; proto->nproto = size; while (size--) { - load_proto(vm, fp, p++, -1); + load_proto(vm, fp, p++, -1, version); } } } @@ -492,16 +509,20 @@ static void load_upvals(bvm *vm, void *fp, bproto *proto) } } -static void load_proto(bvm *vm, void *fp, bproto **proto, int info) +static void load_proto(bvm *vm, void *fp, bproto **proto, int info, int version) { *proto = be_newproto(vm); (*proto)->name = load_string(vm, fp); (*proto)->source = load_string(vm, fp); (*proto)->argc = load_byte(fp); (*proto)->nstack = load_byte(fp); + if (version > 1) { + (*proto)->varg = load_byte(fp); + load_byte(fp); /* discard reserved byte */ + } load_bytecode(vm, fp, *proto, info); - load_constant(vm, fp, *proto); - load_proto_table(vm, fp, *proto); + load_constant(vm, fp, *proto, version); + load_proto_table(vm, fp, *proto, version); load_upvals(vm, fp, *proto); } @@ -510,7 +531,7 @@ void load_global_info(bvm *vm, void *fp) int i; int bcnt = (int)load_long(fp); /* builtin count */ int gcnt = (int)load_long(fp); /* global count */ - if (bcnt != be_builtin_count(vm)) { + if (bcnt > be_builtin_count(vm)) { bytecode_error(vm, be_pushfstring(vm, "inconsistent number of builtin objects.")); } @@ -530,15 +551,18 @@ bclosure* be_bytecode_load(bvm *vm, const char *filename) if (fp == NULL) { bytecode_error(vm, be_pushfstring(vm, "can not open file '%s'.", filename)); - } else if (load_head(fp)) { - bclosure *cl = be_newclosure(vm, 0); - var_setclosure(vm->top, cl); - be_stackpush(vm); - load_global_info(vm, fp); - load_proto(vm, fp, &cl->proto, -1); - be_stackpop(vm, 2); /* pop the closure and list */ - be_fclose(fp); - return cl; + } else { + int version = load_head(fp); + if (version) { + bclosure *cl = be_newclosure(vm, 0); + var_setclosure(vm->top, cl); + be_stackpush(vm); + load_global_info(vm, fp); + load_proto(vm, fp, &cl->proto, -1, version); + be_stackpop(vm, 2); /* pop the closure and list */ + be_fclose(fp); + return cl; + } } bytecode_error(vm, be_pushfstring(vm, "invalid bytecode file '%s'.", filename)); diff --git a/lib/libesp32/Berry/src/be_class.c b/lib/libesp32/Berry/src/be_class.c index 4bd264446..b8e3ea2fb 100644 --- a/lib/libesp32/Berry/src/be_class.c +++ b/lib/libesp32/Berry/src/be_class.c @@ -241,20 +241,38 @@ bbool be_class_newobj(bvm *vm, bclass *c, bvalue *reg, int argc, int mode) /* Input: none of `obj`, `name` and `dst` may not be NULL */ /* Returns the type of the member or BE_NONE if member not found */ /* TODO need to support synthetic members */ -int be_instance_member(bvm *vm, binstance *obj, bstring *name, bvalue *dst) +int be_instance_member(bvm *vm, binstance *instance, bstring *name, bvalue *dst) { int type; be_assert(name != NULL); - obj = instance_member(vm, obj, name, dst); + binstance * obj = instance_member(vm, instance, name, dst); type = var_type(dst); if (obj && type == MT_VARIABLE) { *dst = obj->members[dst->v.i]; } if (obj) { return type; - } else { - return BE_NONE; + } else { /* if no method found, try virtual */ + /* get method 'member' */ + obj = instance_member(vm, instance, str_literal(vm, "member"), vm->top); + if (obj && basetype(var_type(vm->top)) == BE_FUNCTION) { + bvalue *top = vm->top; + var_setinstance(&top[1], instance); + var_setstr(&top[2], name); + vm->top += 3; /* prevent gc collection results */ + be_dofunc(vm, top, 2); /* call method 'member' */ + vm->top -= 3; + *dst = *vm->top; /* copy result to R(A) */ + if (obj && var_type(dst) == MT_VARIABLE) { + *dst = obj->members[dst->v.i]; + } + type = var_type(dst); + if (type != BE_NIL) { + return type; + } + } } + return BE_NONE; } int be_class_member(bvm *vm, bclass *obj, bstring *name, bvalue *dst) diff --git a/lib/libesp32/Berry/src/be_code.c b/lib/libesp32/Berry/src/be_code.c index e9d0e4d9f..cf1a265b3 100644 --- a/lib/libesp32/Berry/src/be_code.c +++ b/lib/libesp32/Berry/src/be_code.c @@ -251,7 +251,7 @@ static int newconst(bfuncinfo *finfo, bvalue *k) } /* Find constant by value and return constant number, or -1 if constant does not exist */ -/* The search is linear and lilited to 50 elements for performance reasons */ +/* The search is linear and limited to 100 elements for performance reasons */ static int findconst(bfuncinfo *finfo, bexpdesc *e) { int i, count = be_vector_count(&finfo->kvec); @@ -260,7 +260,7 @@ static int findconst(bfuncinfo *finfo, bexpdesc *e) * so only search the constant table for the * previous value. **/ - count = count < 50 ? count : 50; + count = count < 100 ? count : 100; for (i = 0; i < count; ++i) { bvalue *k = be_vector_at(&finfo->kvec, i); switch (e->type) { @@ -746,10 +746,12 @@ int be_code_proto(bfuncinfo *finfo, bproto *proto) void be_code_closure(bfuncinfo *finfo, bexpdesc *e, int idx) { - int reg = e->type == ETGLOBAL ? finfo->freereg: e->v.idx; + int reg = (e->type == ETGLOBAL || e->type == ETNGLOBAL) ? finfo->freereg: e->v.idx; code_closure(finfo, idx, reg); - if (e->type == ETGLOBAL) { /* store to grobal R(A) -> G(Bx) */ + if (e->type == ETGLOBAL) { /* store to global R(A) -> G(Bx) */ codeABx(finfo, OP_SETGBL, reg, e->v.idx); + } else if (e->type == ETNGLOBAL) { /* store R(A) -> GLOBAL[RK(B)] */ + codeABC(finfo, OP_SETNGBL, reg, e->v.idx, 0); } } @@ -841,9 +843,12 @@ void be_code_class(bfuncinfo *finfo, bexpdesc *dst, bclass *c) src = newconst(finfo, &var); /* allocate a new constant and return kreg */ if (dst->type == ETLOCAL) { /* if target is a local variable, just assign */ codeABx(finfo, OP_LDCONST, dst->v.idx, src); - } else { /* otherwise set as global with same name as class name */ + } else if (dst->type == ETGLOBAL) { /* otherwise set as global with same name as class name */ codeABx(finfo, OP_LDCONST, finfo->freereg, src); codeABx(finfo, OP_SETGBL, finfo->freereg, dst->v.idx); + } else if (dst->type == ETNGLOBAL) { + codeABx(finfo, OP_LDCONST, finfo->freereg, src); + codeABC(finfo, OP_SETNGBL, finfo->freereg, dst->v.idx, 0); } codeABx(finfo, OP_CLASS, 0, src); /* emit CLASS opcode to register class */ } diff --git a/lib/libesp32/Berry/src/be_debug.c b/lib/libesp32/Berry/src/be_debug.c index 0b1cd914b..33db01d36 100644 --- a/lib/libesp32/Berry/src/be_debug.c +++ b/lib/libesp32/Berry/src/be_debug.c @@ -62,7 +62,7 @@ void be_print_inst(binstruction ins, int pc) case OP_OR: case OP_XOR: case OP_SHL: case OP_SHR: logbuf("%s\tR%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK, - isKB(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); + isKC(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); break; case OP_GETNGBL: case OP_SETNGBL: logbuf("%s\tR%d\t%c%d", opc2str(op), IGET_RA(ins), @@ -116,7 +116,7 @@ void be_print_inst(binstruction ins, int pc) case OP_RAISE: logbuf("%s\t%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), isKB(ins) ? 'K' : 'R', IGET_RKB(ins) & KR_MASK, - isKB(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); + isKC(ins) ? 'K' : 'R', IGET_RKC(ins) & KR_MASK); break; case OP_EXBLK: if (IGET_RA(ins)) { diff --git a/lib/libesp32/Berry/src/be_module.c b/lib/libesp32/Berry/src/be_module.c index 096a7c826..4cbc86a95 100644 --- a/lib/libesp32/Berry/src/be_module.c +++ b/lib/libesp32/Berry/src/be_module.c @@ -299,22 +299,58 @@ void be_module_delete(bvm *vm, bmodule *module) be_free(vm, module, sizeof(bmodule)); } -bvalue* be_module_attr(bvm *vm, bmodule *module, bstring *attr) +int be_module_attr(bvm *vm, bmodule *module, bstring *attr, bvalue *dst) { - return be_map_findstr(vm, module->table, attr); + bvalue *member = be_map_findstr(vm, module->table, attr); + if (!member) { /* try the 'member' function */ + member = be_map_findstr(vm, module->table, str_literal(vm, "member")); + if (member && var_basetype(member) == BE_FUNCTION) { + bvalue *top = vm->top; + top[0] = *member; + var_setstr(&top[1], attr); + vm->top += 2; /* prevent collection results */ + be_dofunc(vm, top, 1); /* call method 'method' */ + vm->top -= 2; + *dst = *vm->top; /* copy result to R(A) */ + if (var_basetype(dst) != BE_NIL) { + return var_type(dst); + } + } + return BE_NONE; + } else { + *dst = *member; + return var_type(dst); + } } -bvalue* be_module_bind(bvm *vm, bmodule *module, bstring *attr) +bbool be_module_setmember(bvm *vm, bmodule *module, bstring *attr, bvalue *src) { + assert(src); bmap *attrs = module->table; if (!gc_isconst(attrs)) { bvalue *v = be_map_findstr(vm, attrs, attr); if (v == NULL) { v = be_map_insertstr(vm, attrs, attr, NULL); } - return v; + if (v) { + *v = *src; + return btrue; + } + } else { + /* if not writable, try 'setmember' */ + int type = be_module_attr(vm, module, str_literal(vm, "setmember"), vm->top); + if (type == BE_FUNCTION) { + bvalue *top = vm->top; + // top[0] already has 'member' + var_setstr(&top[1], attr); /* attribute name */ + top[2] = *src; /* new value */ + vm->top += 3; /* prevent collection results */ + be_dofunc(vm, top, 2); /* call method 'setmember' */ + vm->top -= 3; + return btrue; + } } - return NULL; + return bfalse; } const char* be_module_name(bmodule *module) diff --git a/lib/libesp32/Berry/src/be_module.h b/lib/libesp32/Berry/src/be_module.h index 1a95df59b..4f9b869de 100644 --- a/lib/libesp32/Berry/src/be_module.h +++ b/lib/libesp32/Berry/src/be_module.h @@ -34,8 +34,8 @@ typedef struct bmodule { bmodule* be_module_new(bvm *vm); void be_module_delete(bvm *vm, bmodule *module); int be_module_load(bvm *vm, bstring *path); -bvalue* be_module_attr(bvm *vm, bmodule *module, bstring *attr); -bvalue* be_module_bind(bvm *vm, bmodule *module, bstring *attr); +int be_module_attr(bvm *vm, bmodule *module, bstring *attr, bvalue *dst); +bbool be_module_setmember(bvm *vm, bmodule *module, bstring *attr, bvalue *src); const char* be_module_name(bmodule *module); bbool be_module_setname(bmodule *module, bstring *name); diff --git a/lib/libesp32/Berry/src/be_parser.c b/lib/libesp32/Berry/src/be_parser.c index 1f38f48e2..b04b24383 100644 --- a/lib/libesp32/Berry/src/be_parser.c +++ b/lib/libesp32/Berry/src/be_parser.c @@ -461,6 +461,14 @@ static void new_var(bparser *parser, bstring *name, bexpdesc *var) push_error(parser, "too many global variables (in '%s')", str(name)); } + if (comp_is_named_gbl(parser->vm)) { + /* change to ETNGLBAL */ + bexpdesc key; + init_exp(&key, ETSTRING, 0); + key.v.s = name; + init_exp(var, ETNGLOBAL, 0); + var->v.idx = be_code_nglobal(parser->finfo, &key); + } } } diff --git a/lib/libesp32/Berry/src/be_string.c b/lib/libesp32/Berry/src/be_string.c index d9685968f..b6890a937 100644 --- a/lib/libesp32/Berry/src/be_string.c +++ b/lib/libesp32/Berry/src/be_string.c @@ -55,7 +55,6 @@ int be_eqstr(bstring *s1, bstring *s2) blstring *ls2 = cast(blstring*, s2); return ls1->llen == ls2->llen && !strcmp(lstr(ls1), lstr(ls2)); } - // TODO one is long const and the other is long string /* const short strings */ if (gc_isconst(s1) || gc_isconst(s2)) { /* one of the two string is short const */ if (cast(bcstring*, s1)->hash && cast(bcstring*, s2)->hash) { diff --git a/lib/libesp32/Berry/src/be_vm.c b/lib/libesp32/Berry/src/be_vm.c index 370a7997c..49e20517f 100644 --- a/lib/libesp32/Berry/src/be_vm.c +++ b/lib/libesp32/Berry/src/be_vm.c @@ -275,26 +275,10 @@ static void obj_method(bvm *vm, bvalue *o, bstring *attr, bvalue *dst) } } -static int obj_attribute(bvm *vm, bvalue *o, bvalue *c, bvalue *dst) +static int obj_attribute(bvm *vm, bvalue *o, bstring *attr, bvalue *dst) { - bvalue instance = *o; /* save instance to send it later to member */ - bstring *attr = var_tostr(c); binstance *obj = var_toobj(o); int type = be_instance_member(vm, obj, attr, dst); - if (type == BE_NONE) { /* if no method found, try virtual */ - /* get method 'member' */ - int type2 = be_instance_member(vm, obj, str_literal(vm, "member"), vm->top); - if (basetype(type2) == BE_FUNCTION) { - bvalue *top = vm->top; - top[1] = instance; /* move instance to argv[0] */ - top[2] = *c; /* move method name to argv[1] */ - vm->top += 3; /* prevent collection results */ - be_dofunc(vm, top, 2); /* call method 'member' */ - vm->top -= 3; - *dst = *vm->top; /* copy result to R(A) */ - type = var_type(dst); - } - } if (type == BE_NONE) { vm_error(vm, "attribute_error", "the '%s' object has no attribute '%s'", @@ -316,6 +300,19 @@ static int class_attribute(bvm *vm, bvalue *o, bvalue *c, bvalue *dst) return type; } +static int module_attribute(bvm *vm, bvalue *o, bvalue *c, bvalue *dst) +{ + bstring *attr = var_tostr(c); + bmodule *module = var_toobj(o); + int type = be_module_attr(vm, module, attr, dst); + if (type == BE_NONE) { + vm_error(vm, "attribute_error", + "module '%s' has no member '%s'", + be_module_name(module), str(attr)); + } + return type; +} + static bbool object_eqop(bvm *vm, const char *op, bbool iseq, bvalue *a, bvalue *b) { @@ -529,12 +526,8 @@ newframe: /* a new call frame */ bvalue *b = RKB(); if (var_isstr(b)) { bstring *name = var_tostr(b); - int idx = be_global_find(vm, name); - if (idx > -1) { - *be_global_var(vm, idx) = *v; - } else { - vm_error(vm, "attribute_error", "'%s' undeclared", str(name)); - } + int idx = be_global_new(vm, name); + *be_global_var(vm, idx) = *v; } else { vm_error(vm, "internal_error", "global name must be a string"); } @@ -793,35 +786,14 @@ newframe: /* a new call frame */ opcase(GETMBR): { bvalue *a = RA(), *b = RKB(), *c = RKC(); if (var_isinstance(b) && var_isstr(c)) { - obj_attribute(vm, b, c, a); + obj_attribute(vm, b, var_tostr(c), a); reg = vm->reg; } else if (var_isclass(b) && var_isstr(c)) { class_attribute(vm, b, c, a); reg = vm->reg; } else if (var_ismodule(b) && var_isstr(c)) { - bstring *attr = var_tostr(c); - bmodule *module = var_toobj(b); - bvalue *v = be_module_attr(vm, module, attr); - if (v) { - *a = *v; - } else { - bvalue *member = be_module_attr(vm, module, str_literal(vm, "member")); - var_setnil(a); - if (member && var_basetype(member) == BE_FUNCTION) { - bvalue *top = vm->top; - top[0] = *member; - top[1] = *c; /* move name to argv[0] */ - vm->top += 2; /* prevent collection results */ - be_dofunc(vm, top, 1); /* call method 'method' */ - vm->top -= 2; - *a = *vm->top; /* copy result to R(A) */ - } - if (var_basetype(a) == BE_NIL) { - vm_error(vm, "attribute_error", - "module '%s' has no attribute '%s'", - be_module_name(module), str(attr)); - } - } + module_attribute(vm, b, c, a); + reg = vm->reg; } else { attribute_error(vm, "attribute", b, c); } @@ -830,49 +802,23 @@ newframe: /* a new call frame */ opcase(GETMET): { bvalue *a = RA(), *b = RKB(), *c = RKC(); if (var_isinstance(b) && var_isstr(c)) { - bvalue self = *b; - bstring *attr = var_tostr(c); binstance *obj = var_toobj(b); - int type = obj_attribute(vm, b, c, a); + int type = obj_attribute(vm, b, var_tostr(c), a); reg = vm->reg; if (basetype(type) == BE_FUNCTION) { /* check if the object is a superinstance, if so get the lowest possible subclass */ while (obj->sub) { obj = obj->sub; } - var_setobj(&self, var_type(&self), obj); /* replace superinstance by lowest subinstance */ - a[1] = self; + var_setinstance(&a[1], obj); /* replace superinstance by lowest subinstance */ } else { vm_error(vm, "attribute_error", "class '%s' has no method '%s'", - str(be_instance_name(obj)), str(attr)); + str(be_instance_name(obj)), str(var_tostr(c))); } } else if (var_ismodule(b) && var_isstr(c)) { - bstring *attr = var_tostr(c); - bmodule *module = var_toobj(b); - bvalue *src = be_module_attr(vm, module, attr); - if (src) { - var_settype(a, NOT_METHOD); - a[1] = *src; - } else { - bvalue *member = be_module_attr(vm, module, str_literal(vm, "member")); - var_setnil(a); - if (member && var_basetype(member) == BE_FUNCTION) { - bvalue *top = vm->top; - top[0] = *member; - top[1] = *c; /* move name to argv[0] */ - vm->top += 2; /* prevent collection results */ - be_dofunc(vm, top, 1); /* call method 'method' */ - vm->top -= 2; - var_settype(a, NOT_METHOD); - a[1] = *vm->top; /* copy result to R(A) */ - } - if (var_basetype(a) == BE_NIL) { - vm_error(vm, "attribute_error", - "module '%s' has no method '%s'", - be_module_name(module), str(attr)); - } - } + module_attribute(vm, b, c, &a[1]); + var_settype(a, NOT_METHOD); } else { attribute_error(vm, "method", b, c); } @@ -903,23 +849,10 @@ newframe: /* a new call frame */ if (var_ismodule(a) && var_isstr(b)) { bmodule *obj = var_toobj(a); bstring *attr = var_tostr(b); - bvalue tmp = *c; /* stack may change */ - bvalue *v = be_module_bind(vm, obj, attr); - if (v != NULL) { - *v = tmp; - dispatch(); - } - /* if it failed, try 'setmeemner' */ - bvalue *member = be_module_attr(vm, obj, str_literal(vm, "setmember")); - if (member && var_basetype(member) == BE_FUNCTION) { - bvalue *top = vm->top; - top[0] = *member; - top[1] = *b; /* move name to argv[0] */ - top[2] = tmp; /* move value to argv[1] */ - vm->top += 3; /* prevent collection results */ - be_dofunc(vm, top, 2); /* call method 'setmember' */ - vm->top -= 3; + if (be_module_setmember(vm, obj, attr, c)) { dispatch(); + } else { + // fall through exception below } } attribute_error(vm, "writable attribute", a, b); @@ -1118,14 +1051,10 @@ newframe: /* a new call frame */ break; } case BE_MODULE: { - bmodule *f = var_toobj(var); - bvalue *member = be_module_attr(vm, f, str_literal(vm, "()")); - if (member && var_basetype(member) == BE_FUNCTION) { - *var = *member; - goto recall; /* call '()' method */ - } else { - call_error(vm, var); - } + bvalue attr; + var_setstr(&attr, str_literal(vm, "()")); + module_attribute(vm, var, &attr, var); /* exception if not found */ + goto recall; /* call '()' method */ break; } default: diff --git a/lib/libesp32/Berry/tools/grammar/berry.bytecode b/lib/libesp32/Berry/tools/grammar/berry.bytecode index 9e150635d..2c265fb5c 100755 --- a/lib/libesp32/Berry/tools/grammar/berry.bytecode +++ b/lib/libesp32/Berry/tools/grammar/berry.bytecode @@ -4,18 +4,13 @@ -- description -- -- a double dash ('--') start a line comment. --- a: n means that the size of entity 'a' is 'n' bytes. --- 'a: .n means that the size of entity 'a' is 'n' bits. --- a: --- b means that the entity 'a' is realized by the 'b' structure. --- a: --- b --- c 'b' and 'c' are arranged in a compact order (one byte alignment). +-- a: b means that the entity 'a' is realized by the 'b' structure. +-- a: b c 'b' and 'c' are arranged in a compact order (one byte alignment). -- [a] means that structure 'a' can be repeated 0 to any times. -- [a](b) means that structure 'a' can be repeated 'b' times. -- a | b means that the entity can be implemented by structure 'a' or 'b'. --- a -> b is equivalent to 'a: --- b'. +-- N a number indicates the byte count of the field (eg. 'a: 1'). +-- .N means the number of bits in the field (eg. 'a: .1'). -- only the first entity is a file entity (the root). ------------------------------------------------------------------------------- @@ -26,7 +21,7 @@ bytecode_file: -- little endian header: 8 magic_number: 3 -- 0xbecdfe (berry code file) - version: 1 -- update with file structure definition + version: 2 -- update with file structure definition integer_size: .1 float_size: .1 -- reserved space @@ -35,7 +30,7 @@ main_function -> function global_desc: builtin_count: 4 - global_count: 4 + global_count: 4 -- excluding builtins global_name -> [ string ](global_count) @@ -48,7 +43,8 @@ function: string argc: 1 -- arguments count nstack: 1 -- number of stack size by this function - extra: 2 -- extra data + varg: 1 + extra: 1 -- extra data bytecode: code_size: 4 code_array -> [ -- bytecode array @@ -62,7 +58,7 @@ function: [function](proto_count) upval_table: upval_count: 1 - upvals -> [ + upvals: [ instack: 1 index: 1 ](upval_count) @@ -82,7 +78,7 @@ class: string member_count: 4 -- number of member variables method_count: 4 -- number of method - method_table -> [ + method_table: [ string -- method name function -- method function body ](method_count) @@ -92,5 +88,5 @@ class: nil: 1 boolean: 1 -integer: 4 or 8 -float: 4 or 8 +integer: 4 | 8 +float: 4 | 8 diff --git a/tasmota/xdrv_52_3_berry_lvgl.ino b/tasmota/xdrv_52_3_berry_lvgl.ino index 2e6c302c3..30daf6fb3 100644 --- a/tasmota/xdrv_52_3_berry_lvgl.ino +++ b/tasmota/xdrv_52_3_berry_lvgl.ino @@ -809,12 +809,10 @@ extern "C" { // all good be_return(vm); - } else { - be_return_nil(vm); } } } - be_raise(vm, "attribute_error", "module 'lvgl' has no such attribute"); + be_return_nil(vm); } /*********************************************************************************************\ diff --git a/tasmota/xdrv_52_3_berry_webserver.ino b/tasmota/xdrv_52_3_berry_webserver.ino index fb98e0ce3..2faa223ba 100644 --- a/tasmota/xdrv_52_3_berry_webserver.ino +++ b/tasmota/xdrv_52_3_berry_webserver.ino @@ -57,9 +57,12 @@ extern "C" { // we did have a match, low == high be_pushint(vm, webserver_constants[constant_idx].value); be_return(vm); + } else if (strcmp(needle, "init")) { + /* don't throw an exception if the 'init' function is requested */ + be_raise(vm, "attribute_error", be_pushfstring(vm, "module 'webserver' has no such attribute '%s'", needle)); } } - be_raise(vm, "attribute_error", "module 'webserver' has no such attribute"); + be_return_nil(vm); } } From 6e2a3f5d600dacd4e25be150075dbbaa6991b022 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 25 Aug 2021 09:41:07 +0200 Subject: [PATCH 056/317] Fix Hass and Tasmota discovery Fix Hass and Tasmota discovery prefix topic notifications (#12972) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xdrv_12_discovery.ino | 6 +- tasmota/xdrv_12_home_assistant.ino | 257 +++++++++++++++-------------- 4 files changed, 142 insertions(+), 123 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0222c54e..d62165be9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file. - WDT reset on shutters with stepper motors during deceleration (#12849) - Shelly 2.5 negative power values on relay 1 regression from 9.5.0.5 - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` (#12960) +- Hass and Tasmota discovery prefix topic notifications (#12972) ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5961f38a0..0f236ebfd 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -170,3 +170,4 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) - Negative power values for ADE7953 based devices like Shelly EM [#12874](https://github.com/arendst/Tasmota/issues/12874) - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` [#12960](https://github.com/arendst/Tasmota/issues/12960) +- Hass and Tasmota discovery prefix topic notifications [#12972](https://github.com/arendst/Tasmota/issues/12972) diff --git a/tasmota/xdrv_12_discovery.ino b/tasmota/xdrv_12_discovery.ino index f6ab5a425..1f07488a8 100644 --- a/tasmota/xdrv_12_discovery.ino +++ b/tasmota/xdrv_12_discovery.ino @@ -75,9 +75,9 @@ void TasDiscoverMessage(void) { TasmotaGlobal.version, TasmotaGlobal.mqtt_topic, SettingsText(SET_MQTT_FULLTOPIC), - PSTR(SUB_PREFIX), - PSTR(PUB_PREFIX), - PSTR(PUB_PREFIX2)); + SettingsText(SET_MQTTPREFIX1), + SettingsText(SET_MQTTPREFIX2), + SettingsText(SET_MQTTPREFIX3)); uint8_t light_idx = MAX_RELAYS + 1; // Will store the starting position of the lights uint8_t light_subtype = 0; diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index ed5aeb89a..5fb759f15 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -186,60 +186,74 @@ uint8_t hass_mode = 0; int hass_tele_period = 0; // NEW DISCOVERY +void HassDiscoverMessage(void) { + Response_P(PSTR("{\"ip\":\"%_I\"," // IP Address + "\"dn\":\"%s\"," // Device Name + "\"fn\":["), // Friendly Names (start) + (uint32_t)WiFi.localIP(), + SettingsText(SET_DEVICENAME)); -const char HASS_DISCOVER_DEVICE[] PROGMEM = // Basic parameters for Discovery - "{\"ip\":\"%_I\"," // IP Address - "\"dn\":\"%s\"," // Device Name - "\"fn\":[%s]," // Friendly Names - "\"hn\":\"%s\"," // Host Name - "\"mac\":\"%s\"," // Full MAC as Device id - "\"md\":\"%s\"," // Module or Template Name - "\"ty\":%d,\"if\":%d," // Flag for TuyaMCU and Ifan devices - "\"ofln\":\"" MQTT_LWT_OFFLINE "\"," // Payload Offline - "\"onln\":\"" MQTT_LWT_ONLINE "\"," // Payload Online - "\"state\":[\"%s\",\"%s\",\"%s\",\"%s\"]," // State text for "OFF","ON","TOGGLE","HOLD" - "\"sw\":\"%s\"," // Software Version - "\"t\":\"%s\"," // Topic - "\"ft\":\"%s\"," // Full Topic - "\"tp\":[\"%s\",\"%s\",\"%s\"]," // Topics for command, stat and tele - "\"rl\":[%s],\"swc\":[%s],\"swn\":[%s],\"btn\":[%s]," // Inputs / Outputs - "\"so\":{\"4\":%d,\"11\":%d,\"13\":%d,\"17\":%d,\"20\":%d," // SetOptions - "\"30\":%d,\"68\":%d,\"73\":%d,\"82\":%d,\"114\":%d,\"117\":%d}," - "\"lk\":%d,\"lt_st\":%d,\"sho\":[%s],\"ver\":1}"; // Light SubType, Shutter Options and Discovery version - -typedef struct HASS { - uint16_t Relay[MAX_RELAYS]; // Base array to store the relay type - char RelLst[MAX_RELAYS*2]; // Relay as a char list, "0,0,0,0,0,0,0,0" - bool RelPst; // Needed for Switches. If Power devices are not present entities will be created even when switchtopic in not set. -} HASS; - -void HassDiscoveryRelays(struct HASS &Hass) -{ - Hass = {.Relay={0,0,0,0,0,0,0,0}, .RelLst={'\0'}}; - uint16_t Shutter[MAX_RELAYS] = { 0 }; // Array to store a temp list for shutters - uint8_t lightidx = MAX_RELAYS + 1; // Will store the starting position of the lights - bool iFan = false; - - Hass.RelPst = TasmotaGlobal.devices_present > 0; + uint32_t maxfn = (TasmotaGlobal.devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : (!TasmotaGlobal.devices_present) ? 1 : TasmotaGlobal.devices_present; + for (uint32_t i = 0; i < MAX_FRIENDLYNAMES; i++) { + char fname[TOPSZ]; + snprintf_P(fname, sizeof(fname), PSTR("\"%s\""), EscapeJSONString(SettingsText(SET_FRIENDLYNAME1 +i)).c_str()); + ResponseAppend_P(PSTR("%s%s"), (i > 0 ? "," : ""), (i < maxfn) ? fname : PSTR("null")); + } + bool TuyaMod = false; + bool iFanMod = false; #ifdef ESP8266 - if (SONOFF_IFAN02 == TasmotaGlobal.module_type || SONOFF_IFAN03 == TasmotaGlobal.module_type) { iFan = true;} -#endif // ESP8266 + if ((TUYA_DIMMER == TasmotaGlobal.module_type) || (SK03_TUYA == TasmotaGlobal.module_type)) { TuyaMod = true; }; + if ((SONOFF_IFAN02 == TasmotaGlobal.module_type) || (SONOFF_IFAN03 == TasmotaGlobal.module_type)) { iFanMod = true; }; +#endif // ESP8266 - if (Light.subtype > LST_NONE) { - if (!light_controller.isCTRGBLinked()) { // One or two lights present - lightidx = TasmotaGlobal.devices_present - 2; + ResponseAppend_P(PSTR("]," // Friendly Names (end) + "\"hn\":\"%s\"," // Host Name + "\"mac\":\"%s\"," // Full MAC as Device id + "\"md\":\"%s\"," // Module or Template Name + "\"ty\":%d,\"if\":%d," // Flag for TuyaMCU and Ifan devices + "\"ofln\":\"" MQTT_LWT_OFFLINE "\"," // Payload Offline + "\"onln\":\"" MQTT_LWT_ONLINE "\"," // Payload Online + "\"state\":[\"%s\",\"%s\",\"%s\",\"%s\"]," // State text for "OFF","ON","TOGGLE","HOLD" + "\"sw\":\"%s\"," // Software Version + "\"t\":\"%s\"," // Topic + "\"ft\":\"%s\"," // Full Topic + "\"tp\":[\"%s\",\"%s\",\"%s\"]," // Topics for command, stat and tele + "\"rl\":["), // Relays (start) + TasmotaGlobal.hostname, + NetworkUniqueId().c_str(), + ModuleName().c_str(), + TuyaMod, iFanMod, + GetStateText(0), GetStateText(1), GetStateText(2), GetStateText(3), + TasmotaGlobal.version, + TasmotaGlobal.mqtt_topic, + SettingsText(SET_MQTT_FULLTOPIC), + SettingsText(SET_MQTTPREFIX1), + SettingsText(SET_MQTTPREFIX2), + SettingsText(SET_MQTTPREFIX3)); + + uint8_t light_idx = MAX_RELAYS + 1; // Will store the starting position of the lights + uint8_t light_subtype = 0; + bool light_controller_isCTRGBLinked = false; +#ifdef USE_LIGHT + light_subtype = Light.subtype; + if (light_subtype > LST_NONE) { + light_controller_isCTRGBLinked = light_controller.isCTRGBLinked(); + if (!light_controller_isCTRGBLinked) { // One or two lights present + light_idx = TasmotaGlobal.devices_present - 2; } else { - lightidx = TasmotaGlobal.devices_present - 1; + light_idx = TasmotaGlobal.devices_present - 1; } } - if (Light.device > 0 && Settings->flag3.pwm_multi_channels) { // How many relays are light devices? - lightidx = TasmotaGlobal.devices_present - Light.subtype; + if ((Light.device > 0) && Settings->flag3.pwm_multi_channels) { // How many relays are light devices? + light_idx = TasmotaGlobal.devices_present - light_subtype; } +#endif // USE_LIGHT + uint16_t Relay[MAX_RELAYS] = { 0 }; // Base array to store the relay type + uint16_t Shutter[MAX_RELAYS] = { 0 }; // Array to store a temp list for shutters for (uint32_t i = 0; i < MAX_RELAYS; i++) { - if (i < TasmotaGlobal.devices_present) { #ifdef USE_SHUTTER @@ -254,112 +268,115 @@ void HassDiscoveryRelays(struct HASS &Hass) } } } -#endif // USE_SHUTTER +#endif // USE_SHUTTER - if (Shutter[i] != 0) { // Check if there are shutters present - Hass.Relay[i] = 3; // Relay is a shutter + if (Shutter[i] != 0) { // Check if there are shutters present + Relay[i] = 3; // Relay is a shutter } else { - if (i >= lightidx || (iFan && i == 0)) { // First relay on Ifan controls the light - Hass.Relay[i] = 2; // Relay is a light + if (i >= light_idx || (iFanMod && (0 == i))) { // First relay on Ifan controls the light + Relay[i] = 2; // Relay is a light } else { - if (!iFan) { // Relays 2-4 for ifan are controlled by FANSPEED and don't need to be present if TasmotaGlobal.module_type = SONOFF_IFAN02 or SONOFF_IFAN03 - Hass.Relay[i] = 1; // Simple Relay + if (!iFanMod) { // Relays 2-4 for ifan are controlled by FANSPEED and don't need to be present if TasmotaGlobal.module_type = SONOFF_IFAN02 or SONOFF_IFAN03 + Relay[i] = 1; // Simple Relay } } } } - snprintf_P(Hass.RelLst, sizeof(Hass.RelLst), PSTR("%s%s%d"), Hass.RelLst, (i > 0 ? "," : ""), Hass.Relay[i]); // Vector for the Official Integration - } -} - -void NewHAssDiscovery(void) -{ - char stopic[TOPSZ]; - char stemp1[TOPSZ]; - char stemp2[200]; - char switch_mode[90]; - char switch_name[300]; - char stemp5[90]; - char stemp6[90]; - char unique_id[30]; - char relays[TOPSZ]; - char *state_topic = stemp1; - bool SerialButton = false; - bool TuyaMod = false; - bool iFanMod = false; - - stemp2[0] = '\0'; - struct HASS Hass; - HassDiscoveryRelays(Hass); - -#ifdef ESP8266 - if (TUYA_DIMMER == TasmotaGlobal.module_type || SK03_TUYA == TasmotaGlobal.module_type) { TuyaMod = true; } - if (SONOFF_IFAN02 == TasmotaGlobal.module_type || SONOFF_IFAN03 == TasmotaGlobal.module_type) { iFanMod = true; } -#endif // ESP8266 - - uint32_t maxfn = (TasmotaGlobal.devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : (!TasmotaGlobal.devices_present) ? 1 : TasmotaGlobal.devices_present; - for (uint32_t i = 0; i < MAX_FRIENDLYNAMES; i++) { - char fname[TOPSZ]; - snprintf_P(fname, sizeof(fname), PSTR("\"%s\""), EscapeJSONString(SettingsText(SET_FRIENDLYNAME1 +i)).c_str()); - snprintf_P(stemp2, sizeof(stemp2), PSTR("%s%s%s"), stemp2, (i > 0 ? "," : ""), (i < maxfn) ? fname : PSTR("null")); + ResponseAppend_P(PSTR("%s%d"), (i > 0 ? "," : ""), Relay[i]); // Vector for the Official Integration } - switch_mode[0] = '\0'; - switch_name[0] = '\0'; + ResponseAppend_P(PSTR("]," // Relays (end) + "\"swc\":[")); // Switch modes (start) + + // Enable Discovery for Switches only if SetOption114 is enabled + for (uint32_t i = 0; i < MAX_SWITCHES; i++) { + ResponseAppend_P(PSTR("%s%d"), (i > 0 ? "," : ""), (PinUsed(GPIO_SWT1, i) && Settings->flag5.mqtt_switches) ? Settings->switchmode[i] : -1); + } + + ResponseAppend_P(PSTR("]," // Switch modes (end) + "\"swn\":[")); // Switch names (start) + // Enable Discovery for Switches only if SetOption114 is enabled for (uint32_t i = 0; i < MAX_SWITCHES; i++) { char sname[TOPSZ]; snprintf_P(sname, sizeof(sname), PSTR("\"%s\""), GetSwitchText(i).c_str()); - snprintf_P(switch_mode, sizeof(switch_mode), PSTR("%s%s%d"), switch_mode, (i > 0 ? "," : ""), (PinUsed(GPIO_SWT1, i) & Settings->flag5.mqtt_switches) ? Settings->switchmode[i] : -1); - snprintf_P(switch_name, sizeof(switch_name), PSTR("%s%s%s"), switch_name, (i > 0 ? "," : ""), (PinUsed(GPIO_SWT1, i) & Settings->flag5.mqtt_switches) ? sname : PSTR("null")); + ResponseAppend_P(PSTR("%s%s"), (i > 0 ? "," : ""), (PinUsed(GPIO_SWT1, i) && Settings->flag5.mqtt_switches) ? sname : PSTR("null")); } - stemp5[0] = '\0'; + ResponseAppend_P(PSTR("]," // Switch names (end) + "\"btn\":[")); // Button flag (start) + + bool SerialButton = false; // Enable Discovery for Buttons only if SetOption73 is enabled for (uint32_t i = 0; i < MAX_KEYS; i++) { #ifdef ESP8266 - if (i == 0 && (SONOFF_DUAL == TasmotaGlobal.module_type )) { SerialButton = true; } -#endif // ESP8266 - snprintf_P(stemp5, sizeof(stemp5), PSTR("%s%s%d"), stemp5, (i > 0 ? "," : ""), (SerialButton ? 1 : (PinUsed(GPIO_KEY1, i)) & Settings->flag3.mqtt_buttons)); - SerialButton = false; + SerialButton = ((0 == i) && (SONOFF_DUAL == TasmotaGlobal.module_type )); +#endif // ESP8266 + ResponseAppend_P(PSTR("%s%d"), (i > 0 ? "," : ""), (SerialButton ? 1 : (PinUsed(GPIO_KEY1, i)) && Settings->flag3.mqtt_buttons)); } - stemp6[0] = '\0'; -#ifdef USE_SHUTTER + + ResponseAppend_P(PSTR("]," // Button flag (end) + "\"so\":{\"4\":%d," // SetOptions + "\"11\":%d," + "\"13\":%d," + "\"17\":%d," + "\"20\":%d," + "\"30\":%d," + "\"68\":%d," + "\"73\":%d," + "\"82\":%d," + "\"114\":%d," + "\"117\":%d}," + "\"lk\":%d," // Light CTRGB linked + "\"lt_st\":%d," // Light SubType + "\"sho\":["), // Shutter Options (start) + Settings->flag.mqtt_response, + Settings->flag.button_swap, + Settings->flag.button_single, + Settings->flag.decimal_text, + Settings->flag.not_power_linked, + Settings->flag.hass_light, + Settings->flag3.pwm_multi_channels, + Settings->flag3.mqtt_buttons, + Settings->flag4.alexa_ct_range, + Settings->flag5.mqtt_switches, + Settings->flag5.fade_fixed_duration, + light_controller_isCTRGBLinked, + light_subtype); + for (uint32_t i = 0; i < MAX_SHUTTERS; i++) { - snprintf_P(stemp6, sizeof(stemp6), PSTR("%s%s%d"), stemp6, (i > 0 ? "," : ""), Settings->shutter_options[i]); - } +#ifdef USE_SHUTTER + ResponseAppend_P(PSTR("%s%d"), (i > 0 ? "," : ""), Settings->shutter_options[i]); #else - snprintf_P(stemp6, sizeof(stemp6), PSTR("0,0,0,0")); -#endif // USE_SHUTTER - - ResponseClear(); // Clear retained message - - // Full 12 chars MAC address as ID - snprintf_P(unique_id, sizeof(unique_id), PSTR("%s"), NetworkUniqueId().c_str()); - snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/config"), unique_id); - - // Send empty message if new discovery is disabled - TasmotaGlobal.masterlog_level = 4; // Hide topic on clean and remove use weblog 4 to show it - if (!Settings->flag.hass_discovery) { // HassDiscoveryRelays(relays) - Response_P(HASS_DISCOVER_DEVICE, (uint32_t)WiFi.localIP(), SettingsText(SET_DEVICENAME), - stemp2, TasmotaGlobal.hostname, unique_id, ModuleName().c_str(), TuyaMod, iFanMod, GetStateText(0), GetStateText(1), GetStateText(2), GetStateText(3), - TasmotaGlobal.version, TasmotaGlobal.mqtt_topic, SettingsText(SET_MQTT_FULLTOPIC), PSTR(SUB_PREFIX), PSTR(PUB_PREFIX), PSTR(PUB_PREFIX2), Hass.RelLst, switch_mode, switch_name, - stemp5, Settings->flag.mqtt_response, Settings->flag.button_swap, Settings->flag.button_single, Settings->flag.decimal_text, Settings->flag.not_power_linked, - Settings->flag.hass_light, Settings->flag3.pwm_multi_channels, Settings->flag3.mqtt_buttons, Settings->flag4.alexa_ct_range, Settings->flag5.mqtt_switches, - Settings->flag5.fade_fixed_duration, light_controller.isCTRGBLinked(), Light.subtype, stemp6); + ResponseAppend_P(PSTR("%s0"), (i > 0 ? "," : "")); +#endif // USE_SHUTTER } + + ResponseAppend_P(PSTR("]," // Shutter Options (end) + "\"ver\":1}")); // Discovery version +} + +void NewHAssDiscovery(void) { + TasmotaGlobal.masterlog_level = LOG_LEVEL_DEBUG_MORE; // Hide topic on clean and remove use weblog 4 to show it + + ResponseClear(); // Clear retained message + if (!Settings->flag.hass_discovery) { // SetOption19 - Clear retained message + HassDiscoverMessage(); // Build discovery message + } + char stopic[TOPSZ]; + snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/config"), NetworkUniqueId().c_str()); MqttPublish(stopic, true); - if (!Settings->flag.hass_discovery) { - snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/sensors"), unique_id); + if (!Settings->flag.hass_discovery) { // SetOption19 - Clear retained message Response_P(PSTR("{\"sn\":")); MqttShowSensor(); ResponseAppend_P(PSTR(",\"ver\":1}")); - MqttPublish(stopic, true); } - TasmotaGlobal.masterlog_level = 0; // Restore WebLog state -} + snprintf_P(stopic, sizeof(stopic), PSTR("tasmota/discovery/%s/sensors"), NetworkUniqueId().c_str()); + MqttPublish(stopic, true); + TasmotaGlobal.masterlog_level = LOG_LEVEL_NONE; // Restore WebLog state +} // NEW DISCOVERY void TryResponseAppend_P(const char *format, ...) { From 4b5ba3971b097db253a3d98d975bcedf0bcad10a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Wed, 25 Aug 2021 14:42:25 +0200 Subject: [PATCH 057/317] silence some compiler warnings in the experimental builds --- platformio_tasmota_cenv_sample.ini | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 21aac4bb2..e8d84aed0 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -54,6 +54,7 @@ platform_packages = framework-arduinoespressif32 @ https://github.com/ build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable -Wstringop-overflow + -Wincompatible-pointer-types build_flags = ${env:tasmota32_base.build_flags} -Wno-switch-unreachable -Wno-stringop-overflow @@ -78,10 +79,13 @@ platform_packages = framework-arduinoespressif32 @ https://github.com/ platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable + -Wstringop-overflow + -Wincompatible-pointer-types -mtarget-align -DNDEBUG build_flags = ${env:tasmota32_base.build_flags} -Wno-switch-unreachable + -Wno-stringop-overflow ; *** Comment next two lines to disable BLE -DUSE_BLE_ESP32 -DUSE_MI_ESP32 @@ -108,9 +112,11 @@ platform_packages = framework-arduinoespressif32 @ https://github.com/ platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable + -Wstringop-overflow -Wincompatible-pointer-types build_flags = ${env:tasmota32_base.build_flags} -Wno-switch-unreachable + -Wno-stringop-overflow ; ***Uncomment next two lines to enable BLE ;-DUSE_BLE_ESP32 ;-DUSE_MI_ESP32 From e2ca51454b1747c701b3e2bba2470ed5c6cd1e7b Mon Sep 17 00:00:00 2001 From: ujp83wi Date: Wed, 25 Aug 2021 14:44:17 +0200 Subject: [PATCH 058/317] [#12712 / #12713] Add SetOption129 which changes behavior of SwitchMode11 & 12: SetOption129 0 (default) triggers the single press event (State#2) at push (for mode 12 it is inverted) SetOption129 1 triggers the single press event (State#2) at release (for mode 12 it is inverted) This makes the double-click usable for other things than switching the relay which is switched by single-click --- tasmota/settings.h | 2 +- tasmota/support_switch.ino | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/tasmota/settings.h b/tasmota/settings.h index 9fb21e886..30a665cf0 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -158,7 +158,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t ds18x20_mean : 1; // bit 12 (v9.3.1.2) - SetOption126 - (DS18x20) Enable arithmetic mean over teleperiod for JSON temperature (1) uint32_t wifi_no_sleep : 1; // bit 13 (v9.5.0.2) - SetOption127 - (Wifi) Keep wifi in no-sleep mode, prevents some occasional unresponsiveness uint32_t disable_referer_chk : 1; // bit 14 (v9.5.0.5) - SetOption128 - (Web) Allow access without referer check - uint32_t spare15 : 1; // bit 15 + uint32_t switch_dimmer_act_at_rls : 1; // bit 15 (v9.5.0.7) - SetOption129 - (Switch) With Switchmode11 & 12, State#2 is tiggered at push (0, default) or release (1) uint32_t spare16 : 1; // bit 16 uint32_t spare17 : 1; // bit 17 uint32_t spare18 : 1; // bit 18 diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index 68400e5a9..852cb595a 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -240,11 +240,14 @@ void SwitchHandler(uint32_t mode) { if (Switch.hold_timer[i] & (((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)) ? SM_TIMER_MASK: SM_NO_TIMER_MASK)) { Switch.hold_timer[i]--; if ((Switch.hold_timer[i] & SM_TIMER_MASK) == loops_per_second * Settings->param[P_HOLD_TIME] / 25) { - if ((switchmode == PUSHHOLDMULTI) & (NOT_PRESSED == Switch.last_state[i])) { - SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT - } - if ((switchmode == PUSHHOLDMULTI_INV) & (PRESSED == Switch.last_state[i])) { - SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT + if ((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)){ + if (((switchmode == PUSHHOLDMULTI) & (NOT_PRESSED == Switch.last_state[i])) | ((switchmode == PUSHHOLDMULTI_INV) & (PRESSED == Switch.last_state[i]))) { + SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT + } + else if ((Settings->flag5.switch_dimmer_act_at_rls) & ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS)) { + switchflag = POWER_TOGGLE; // Toggle with pushbutton + Switch.hold_timer[i] = 0; + } } } if (0 == (Switch.hold_timer[i] & (((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)) ? SM_TIMER_MASK: SM_NO_TIMER_MASK))) { @@ -351,7 +354,9 @@ void SwitchHandler(uint32_t mode) { if ((Switch.hold_timer[i] & SM_TIMER_MASK) > loops_per_second * Settings->param[P_HOLD_TIME] / 25) { if((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { Switch.hold_timer[i]= SM_FIRST_PRESS; - switchflag = POWER_TOGGLE; // Toggle with pushbutton + if (!Settings->flag5.switch_dimmer_act_at_rls){ + switchflag = POWER_TOGGLE; // Toggle with pushbutton + } } else{ SendKey(KEY_SWITCH, i +1, POWER_100); // Execute command via MQTT @@ -377,7 +382,9 @@ void SwitchHandler(uint32_t mode) { if ((Switch.hold_timer[i] & SM_TIMER_MASK)> loops_per_second * Settings->param[P_HOLD_TIME] / 25) { if((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { Switch.hold_timer[i]= SM_FIRST_PRESS; - switchflag = POWER_TOGGLE; // Toggle with pushbutton + if (!Settings->flag5.switch_dimmer_act_at_rls){ + switchflag = POWER_TOGGLE; // Toggle with pushbutton + } } else{ SendKey(KEY_SWITCH, i +1, POWER_100); // Execute command via MQTT From 5791908584e7053ae1d8d1614b7c02e764f922e2 Mon Sep 17 00:00:00 2001 From: ujp83wi Date: Wed, 25 Aug 2021 14:52:23 +0200 Subject: [PATCH 059/317] Commit Changelog entry based on previous commit for [#12712 / #12713] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d62165be9..5f2b38ee9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility - Support for IEM3155 Wattmeter (#12940) - Berry support for vararg +- Switchmode11 and 12: ``SetOption129 1`` delays single press events from pressing to release switch (#12712 / #12713) ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 From a6310780ee665394edb5c9b570acef4155f1b6a8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 25 Aug 2021 15:24:55 +0200 Subject: [PATCH 060/317] Fix Sonoff L1 Lite MusicSync mode Fix unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 (#12930) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xlgt_05_sonoff_l1.ino | 18 +++++++++--------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d62165be9..2efdb2ef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file. - Shelly 2.5 negative power values on relay 1 regression from 9.5.0.5 - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` (#12960) - Hass and Tasmota discovery prefix topic notifications (#12972) +- Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 (#12930) ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 0f236ebfd..13c750ec0 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -169,5 +169,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Neopool communication error [#12813](https://github.com/arendst/Tasmota/issues/12813) - WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) - Negative power values for ADE7953 based devices like Shelly EM [#12874](https://github.com/arendst/Tasmota/issues/12874) +- Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 [#12930](https://github.com/arendst/Tasmota/issues/12930) - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` [#12960](https://github.com/arendst/Tasmota/issues/12960) - Hass and Tasmota discovery prefix topic notifications [#12972](https://github.com/arendst/Tasmota/issues/12972) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index f120bbd79..299c054f0 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -250,19 +250,19 @@ bool SnfL1SetChannels(void) { } if (!power_changed && !dimmer_changed && !color_changed && (Snfl1.old_music_sync == Settings->sbflag1.sonoff_l1_music_sync)) { return true; } - uint32_t mode = SONOFF_L1_MODE_COLORFUL; - if (Settings->sbflag1.sonoff_l1_music_sync) { - mode = SONOFF_L1_MODE_SYNC_TO_MUSIC; - } - - snprintf_P(Snfl1.buffer, SONOFF_L1_BUFFER_SIZE, PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d,\"sensitive\":%d,\"speed\":%d"), + uint32_t mode = (Settings->sbflag1.sonoff_l1_music_sync) ? SONOFF_L1_MODE_SYNC_TO_MUSIC : SONOFF_L1_MODE_COLORFUL; + snprintf_P(Snfl1.buffer, SONOFF_L1_BUFFER_SIZE, PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d"), LocalTime(), millis()%1000, Snfl1.power ? "on" : "off", Snfl1.color[0], Snfl1.color[1], Snfl1.color[2], Snfl1.dimmer, - mode, - Snfl1.sensitive, - Snfl1.speed); + mode); + if (SONOFF_L1_MODE_SYNC_TO_MUSIC == mode) { + snprintf_P(Snfl1.buffer, SONOFF_L1_BUFFER_SIZE, PSTR("%s,\"sensitive\":%d,\"speed\":%d"), + Snfl1.buffer, + Snfl1.sensitive, + Snfl1.speed); + } #ifdef SONOFF_L1_START_DELAY static bool first_call = true; From 7ad29750635b489b7a8400370ed6a8c53e14a397 Mon Sep 17 00:00:00 2001 From: Wouter Breukink Date: Sun, 8 Aug 2021 21:19:44 +0100 Subject: [PATCH 061/317] Added support for Hydreon RG-15 Rain Sensor --- tasmota/language/af_AF.h | 2 + tasmota/language/bg_BG.h | 2 + tasmota/language/cs_CZ.h | 2 + tasmota/language/de_DE.h | 2 + tasmota/language/el_GR.h | 2 + tasmota/language/en_GB.h | 2 + tasmota/language/es_ES.h | 2 + tasmota/language/fr_FR.h | 2 + tasmota/language/fy_NL.h | 2 + tasmota/language/he_HE.h | 2 + tasmota/language/hu_HU.h | 2 + tasmota/language/it_IT.h | 2 + tasmota/language/ko_KO.h | 2 + tasmota/language/nl_NL.h | 2 + tasmota/language/pl_PL.h | 2 + tasmota/language/pt_BR.h | 2 + tasmota/language/pt_PT.h | 2 + tasmota/language/ro_RO.h | 2 + tasmota/language/ru_RU.h | 2 + tasmota/language/sk_SK.h | 2 + tasmota/language/sv_SE.h | 2 + tasmota/language/tr_TR.h | 2 + tasmota/language/uk_UA.h | 2 + tasmota/language/vi_VN.h | 2 + tasmota/language/zh_CN.h | 2 + tasmota/language/zh_TW.h | 2 + tasmota/tasmota_template.h | 6 + tasmota/xsns_90_hrg15.ino | 233 +++++++++++++++++++++++++++++++++++++ 28 files changed, 291 insertions(+) create mode 100644 tasmota/xsns_90_hrg15.ino diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 9cf907e22..3de656a31 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 59af27f2c..a48eb1002 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -835,6 +835,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 6bffd8849..132db487a 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index d0fccd6ca..625354541 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index e71ee964a..9ce804712 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 40986f104..daa138c52 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 239cb2ac7..4c62fdb4b 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index a63b252c0..2a6ee9205 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 3984dc0c5..466f5d019 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index eba8fa655..ef070a454 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index f7d51de3e..40dd559c3 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 8d76ab9d3..1dcb99651 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "Effetto hall" #define D_SENSOR_EPD_DATA "EPD - Dati" #define D_SENSOR_MCP2515_CS "MCP2515 - CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 5da66f819..0e0ba113e 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 54ed3cc5b..ca755b4aa 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index d90d6099a..af637038c 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "Efekt Halla" #define D_SENSOR_EPD_DATA "EPD Dane" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index e7b0a938f..e1054caf0 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "Efeito Hall" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 4eeb9eb28..6cc66ce12 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "Efeito Hall" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index e3ec62390..8b7bc46cd 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 9f58134c1..b4167028e 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index ac554d43e..50b299796 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 5d46cb0f5..03d2537b5 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index bfdd34f63..6d53258de 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 25ffd199c..5a21b20a9 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 59efb8330..c36fb29b1 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 036f4c352..97533a1c2 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 18540574f..f7b4437f7 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -836,6 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" +#define D_SENSOR_HRG15_RX "HRG15 RX" +#define D_SENSOR_HRG15_TX "HRG15 TX" // Units #define D_UNIT_AMPERE "安培" diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index fb7220586..94e7f6f2d 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -170,6 +170,7 @@ enum UserSelectablePins { GPIO_I2S_IN_DATA, GPIO_I2S_IN_CLK, GPIO_I2S_IN_SLCT, GPIO_INTERRUPT, GPIO_MCP2515_CS, // MCP2515 Chip Select + GPIO_HRG15_RX, GPIO_HRG15_TX, // Hydreon RG-15 rain sensor serial interface GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -360,6 +361,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_I2S_IN_DATA "|" D_SENSOR_I2S_IN_CLK "|" D_SENSOR_I2S_IN_SLCT "|" D_SENSOR_INTERRUPT "|" D_SENSOR_MCP2515_CS "|" + D_SENSOR_HRG15_RX "|" D_SENSOR_HRG15_TX ; const char kSensorNamesFixed[] PROGMEM = @@ -791,6 +793,10 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_AS608_TX), AGPIO(GPIO_AS608_RX), #endif +#ifdef USE_HRG15 + AGPIO(GPIO_HRG15_RX), + AGPIO(GPIO_HRG15_TX), +#endif /*-------------------------------------------------------------------------------------------*\ * Other sensors diff --git a/tasmota/xsns_90_hrg15.ino b/tasmota/xsns_90_hrg15.ino new file mode 100644 index 000000000..adf7461c0 --- /dev/null +++ b/tasmota/xsns_90_hrg15.ino @@ -0,0 +1,233 @@ +/* + xsns_90-hrg15.ino - Hydreon RG-15 support for Tasmota + + Copyright (c) 2021 Wouter Breukink + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_HRG15 +/*********************************************************************************************\ + * Hydreon RG-15 + * See https://rainsensors.com/products/rg-15/ +\*********************************************************************************************/ + +#define XSNS_90 90 + +#define RG15_NAME "RG-15" +#define RG15_BAUDRATE 9600 +#define RG15_READ_TIMEOUT 500 +#define RG15_EVENT_TIMEOUT 60 + +#include + +#ifdef USE_WEBSERVER +const char HTTP_RG15[] PROGMEM = + // {s} = , {m} = , {e} = + "{s}" RG15_NAME " " D_JSON_ACTIVE "{m}%2_f " D_UNIT_MILLIMETER "{e}" + "{s}" RG15_NAME " " D_JSON_EVENT "{m}%2_f " D_UNIT_MILLIMETER "{e}" + "{s}" RG15_NAME " " D_JSON_TOTAL "{m}%2_f " D_UNIT_MILLIMETER "{e}" + "{s}" RG15_NAME " " D_JSON_FLOWRATE "{m}%2_f " D_UNIT_MILLIMETER "/" D_UNIT_HOUR "{e}"; +#endif // USE_WEBSERVER + +TasmotaSerial *HydreonSerial; + +struct RG15 { + uint16_t time = RG15_EVENT_TIMEOUT; + uint8_t ready = 1; + uint8_t received = 0; + float acc = 0.0f; + float event = 0.0f; + float total = 0.0f; + float rate = 0.0f; +} Rg15; + +void Rg15Init(void) +{ + Rg15.ready = 0; + if (PinUsed(GPIO_HRG15_RX) && PinUsed(GPIO_HRG15_TX)) { + HydreonSerial = new TasmotaSerial(Pin(GPIO_HRG15_RX), Pin(GPIO_HRG15_TX)); + if (HydreonSerial->begin(RG15_BAUDRATE)) { + if (HydreonSerial->hardwareSerial()) { ClaimSerial(); } + + HydreonSerial->println('R'); + + Rg15.ready = 1; + } + } +} + +bool Rg15Poll(void) { + + // Trigger the first update + if (! Rg15.received) { + HydreonSerial->println('R'); + } + + if (! HydreonSerial->available()) { + + // Check if the rain event has timed out, reset rate to 0 + if (++Rg15.time == RG15_EVENT_TIMEOUT) { + Rg15.acc = 0; + Rg15.rate = 0; + MqttPublishSensor(); + } + + return false; + } + + // Now read what's available + char rg15_buffer[255]; + + while (HydreonSerial->available()) { + Rg15ReadLine(rg15_buffer); + AddLog(LOG_LEVEL_DEBUG_MORE,PSTR("%s:" D_JSON_SERIALRECEIVED " = %s"),"HRG", rg15_buffer); + + Rg15Process(rg15_buffer); + } + + MqttPublishSensor(); + + return true; +} + +bool Rg15ReadLine(char* buffer) +{ + char c; + uint8_t i = 0; + uint32_t cmillis = millis(); + + while (1) { + if (HydreonSerial->available()) { + c = HydreonSerial->read(); + buffer[i++] = c; + + if (c == 10) { break; } // New line ends the message + if (i == 254) { break; } // Overflow + } + + if ((millis() - cmillis) > RG15_READ_TIMEOUT) { + return false; + } + } + + buffer[i-2] = '\0'; + return true; +} + +void Rg15Process(char* buffer) { + + // Process payload, example: Acc 0.01 mm, EventAcc 2.07 mm, TotalAcc 54.85 mm, RInt 2.89 mmph + Rg15.received = 1; + Rg15.acc = Rg15Parse(buffer, "Acc"); + Rg15.event = Rg15Parse(buffer, "EventAcc"); + Rg15.total = Rg15Parse(buffer, "TotalAcc"); + Rg15.rate = Rg15Parse(buffer, "RInt"); + + if (Rg15.acc > 0.0f) { + Rg15.time = 0; // We have some data, so the rain event is on-going + } +} + +float Rg15Parse(char* buffer, const char* item) { + char* start = strstr(buffer, item); + if (start != nullptr) { + char* end = strstr(start, " mm"); + char tmp = end[0]; + end[0] = '\0'; + float result = CharToFloat (start + strlen(item)); + end[0] = tmp; + return result; + } else { + return 0.0f; + } +} + +bool Rg15Command(void) { + bool serviced = true; + + if (XdrvMailbox.data_len == 1) { + char *send = XdrvMailbox.data; + HydreonSerial->println(send); + HydreonSerial->flush(); + + if (send[0] == 'k' || send[0] == 'K' || send[0] == 'o' || send[0] == 'O') { + ResponseCmndDone(); + return serviced; + } + + char rg15_buffer[255]; + if (Rg15ReadLine(rg15_buffer)) { + Response_P(PSTR("{\"" D_JSON_SERIALRECEIVED "\":%s\"}"), rg15_buffer); + Rg15Process(rg15_buffer); + } + } + + return serviced; +} + +void Rg15Show(bool json) +{ + if (!Rg15.received) { + return; + } + + if (json) { + ResponseAppend_P(PSTR(",\"" RG15_NAME "\":{\"" D_JSON_ACTIVE "\":%2_f, \"" D_JSON_EVENT "\":%2_f, \"" D_JSON_TOTAL "\":%2_f, \"" D_JSON_FLOWRATE "\":%2_f}"), &Rg15.acc, &Rg15.event, &Rg15.total, &Rg15.rate); +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_RG15, &Rg15.acc, &Rg15.event, &Rg15.total, &Rg15.rate); +#endif // USE_WEBSERVER + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns90(uint8_t function) +{ + + bool result = false; + + if (Rg15.ready) + { + switch (function) + { + case FUNC_INIT: + Rg15Init(); + break; + case FUNC_COMMAND_SENSOR: + if (XSNS_90 == XdrvMailbox.index) { + Rg15Command(); + } + break; + case FUNC_EVERY_SECOND: + Rg15Poll(); + break; + case FUNC_JSON_APPEND: + Rg15Show(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + Rg15Show(0); + break; +#endif // USE_WEBSERVER + } + } + + return result; +} + +#endif // USE_HRG15 \ No newline at end of file From a4e36d8224059212ccb127af907b209dc6b27679 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 25 Aug 2021 16:40:03 +0200 Subject: [PATCH 062/317] Add command ``Subscribe2 ...`` Add command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" (#12858) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xdrv_10_rules.ino | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2efdb2ef2..6317047c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility - Support for IEM3155 Wattmeter (#12940) - Berry support for vararg +- Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" (#12858) ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 13c750ec0..73091dd66 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -120,6 +120,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651) - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) +- Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) ### Changed diff --git a/tasmota/xdrv_10_rules.ino b/tasmota/xdrv_10_rules.ino index a4d454040..9e2652d06 100644 --- a/tasmota/xdrv_10_rules.ino +++ b/tasmota/xdrv_10_rules.ino @@ -1171,7 +1171,11 @@ void CmndSubscribe(void) subscription_item.Key = key; subscriptions.add(subscription_item); + if (2 == XdrvMailbox.index) { + topic = subscription_item.Topic; // Do not append "/#"" + } MqttSubscribe(topic.c_str()); + events.concat(event_name + "," + topic + (key.length()>0 ? "," : "") + key); From d4f444a85af216ffc0cc1cb8c22fc92685a0b265 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 25 Aug 2021 17:25:11 +0200 Subject: [PATCH 063/317] Add support for Hydreon RG-15 Solid State Rain sensor Add support for Hydreon RG-15 Solid State Rain sensor (#12974) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/language/af_AF.h | 4 ++-- tasmota/language/bg_BG.h | 4 ++-- tasmota/language/cs_CZ.h | 4 ++-- tasmota/language/de_DE.h | 4 ++-- tasmota/language/el_GR.h | 4 ++-- tasmota/language/en_GB.h | 4 ++-- tasmota/language/es_ES.h | 4 ++-- tasmota/language/fr_FR.h | 4 ++-- tasmota/language/fy_NL.h | 4 ++-- tasmota/language/he_HE.h | 4 ++-- tasmota/language/hu_HU.h | 4 ++-- tasmota/language/it_IT.h | 4 ++-- tasmota/language/ko_KO.h | 4 ++-- tasmota/language/nl_NL.h | 4 ++-- tasmota/language/pl_PL.h | 4 ++-- tasmota/language/pt_BR.h | 4 ++-- tasmota/language/pt_PT.h | 4 ++-- tasmota/language/ro_RO.h | 4 ++-- tasmota/language/ru_RU.h | 4 ++-- tasmota/language/sk_SK.h | 4 ++-- tasmota/language/sv_SE.h | 4 ++-- tasmota/language/tr_TR.h | 4 ++-- tasmota/language/uk_UA.h | 4 ++-- tasmota/language/vi_VN.h | 4 ++-- tasmota/language/zh_CN.h | 4 ++-- tasmota/language/zh_TW.h | 4 ++-- tasmota/my_user_config.h | 1 + tasmota/support_features.ino | 5 +++-- tasmota/tasmota_configurations.h | 1 + tasmota/tasmota_configurations_ESP32.h | 1 + tasmota/tasmota_template.h | 6 +++--- tasmota/xsns_90_hrg15.ino | 6 +++--- tools/decode-status.py | 4 ++-- 35 files changed, 68 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6317047c5..a6c34906a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Support for IEM3155 Wattmeter (#12940) - Berry support for vararg - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" (#12858) +- Support for Hydreon RG-15 Solid State Rain sensor (#12974) ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 73091dd66..4af686e81 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -122,6 +122,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) +- Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 3de656a31..18d3fd4b8 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index a48eb1002..6b256c80c 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -835,8 +835,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index 132db487a..c37b21952 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 625354541..29ab0818d 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index 9ce804712..e49a964ea 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index daa138c52..ba6b11cd0 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index 4c62fdb4b..d41a70ac1 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index 2a6ee9205..ec04ab26b 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 466f5d019..7b2e0b366 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index ef070a454..68f324a8c 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 40dd559c3..7455ee7f6 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 1dcb99651..7fe20f02d 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "Effetto hall" #define D_SENSOR_EPD_DATA "EPD - Dati" #define D_SENSOR_MCP2515_CS "MCP2515 - CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 0e0ba113e..86f9c0ea3 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index ca755b4aa..46243e5e7 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index af637038c..7d2ccf154 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "Efekt Halla" #define D_SENSOR_EPD_DATA "EPD Dane" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index e1054caf0..ed2812cc8 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "Efeito Hall" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 6cc66ce12..4853fdd0a 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "Efeito Hall" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 8b7bc46cd..88f9a99f9 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index b4167028e..6642506b1 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 50b299796..7cbb51d2f 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 03d2537b5..9de80ed08 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 6d53258de..6f236ed7f 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 5a21b20a9..68181966b 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index c36fb29b1..11a35daea 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 97533a1c2..3d6475d37 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index f7b4437f7..08ac66206 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "HallEffect" #define D_SENSOR_EPD_DATA "EPD Data" #define D_SENSOR_MCP2515_CS "MCP2515 CS" -#define D_SENSOR_HRG15_RX "HRG15 RX" -#define D_SENSOR_HRG15_TX "HRG15 TX" +#define D_SENSOR_HRG15_RX "HRG15 Rx" +#define D_SENSOR_HRG15_TX "HRG15 Tx" // Units #define D_UNIT_AMPERE "安培" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 1dbb347cb..bb6a5a45d 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -743,6 +743,7 @@ //#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k code) // #define USE_AS608_MESSAGES // Add verbose error messages (+0k4 code) //#define USE_TFMINIPLUS // Add support for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface (+0k8) +//#define USE_HRG15 // Add support for Hydreon RG-15 Solid State Rain sensor (+1k5 code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_SENSOR // Add support for Energy Monitors (+14k code) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index ec5bc7bdd..68008637c 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -762,8 +762,9 @@ void ResponseAppendFeatures(void) #ifdef USE_INFLUXDB feature8 |= 0x00000800; // xdrv_59_influxdb.ino #endif - -// feature8 |= 0x00001000; +#ifdef USE_HRG15 + feature8 |= 0x00001000; // xsns_90_hrg15.ino +#endif // feature8 |= 0x00002000; // feature8 |= 0x00004000; // feature8 |= 0x00008000; diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 6530cdbc3..bdcb005cc 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -188,6 +188,7 @@ // #define USE_PROJECTOR_CTRL_OPTOMA // Use codes for OPTOMA //#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) //#define USE_TFMINIPLUS // Add suppoer for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface +//#define USE_HRG15 // Add support for Hydreon RG-15 Solid State Rain sensor (+1k5 code) #define USE_ENERGY_SENSOR // Add energy sensors (-14k code) #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 5f944082d..c25f42de9 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -476,6 +476,7 @@ // #define USE_PROJECTOR_CTRL_OPTOMA // Use codes for OPTOMA //#define USE_AS608 // Add support for AS608 optical and R503 capacitive fingerprint sensor (+3k4 code) //#define USE_TFMINIPLUS // Add support for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface +//#define USE_HRG15 // Add support for Hydreon RG-15 Solid State Rain sensor (+1k5 code) #define USE_ENERGY_SENSOR // Add energy sensors (-14k code) #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 94e7f6f2d..acede8653 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -170,7 +170,7 @@ enum UserSelectablePins { GPIO_I2S_IN_DATA, GPIO_I2S_IN_CLK, GPIO_I2S_IN_SLCT, GPIO_INTERRUPT, GPIO_MCP2515_CS, // MCP2515 Chip Select - GPIO_HRG15_RX, GPIO_HRG15_TX, // Hydreon RG-15 rain sensor serial interface + GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -361,7 +361,7 @@ const char kSensorNames[] PROGMEM = D_SENSOR_I2S_IN_DATA "|" D_SENSOR_I2S_IN_CLK "|" D_SENSOR_I2S_IN_SLCT "|" D_SENSOR_INTERRUPT "|" D_SENSOR_MCP2515_CS "|" - D_SENSOR_HRG15_RX "|" D_SENSOR_HRG15_TX + D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX ; const char kSensorNamesFixed[] PROGMEM = @@ -794,8 +794,8 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_AS608_RX), #endif #ifdef USE_HRG15 - AGPIO(GPIO_HRG15_RX), AGPIO(GPIO_HRG15_TX), + AGPIO(GPIO_HRG15_RX), #endif /*-------------------------------------------------------------------------------------------*\ diff --git a/tasmota/xsns_90_hrg15.ino b/tasmota/xsns_90_hrg15.ino index adf7461c0..f7ba63721 100644 --- a/tasmota/xsns_90_hrg15.ino +++ b/tasmota/xsns_90_hrg15.ino @@ -1,7 +1,7 @@ /* xsns_90-hrg15.ino - Hydreon RG-15 support for Tasmota - Copyright (c) 2021 Wouter Breukink + Copyright (c) 2021 Wouter Breukink 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 @@ -93,7 +93,7 @@ bool Rg15Poll(void) { while (HydreonSerial->available()) { Rg15ReadLine(rg15_buffer); AddLog(LOG_LEVEL_DEBUG_MORE,PSTR("%s:" D_JSON_SERIALRECEIVED " = %s"),"HRG", rg15_buffer); - + Rg15Process(rg15_buffer); } @@ -127,7 +127,7 @@ bool Rg15ReadLine(char* buffer) } void Rg15Process(char* buffer) { - + // Process payload, example: Acc 0.01 mm, EventAcc 2.07 mm, TotalAcc 54.85 mm, RInt 2.89 mmph Rg15.received = 1; Rg15.acc = Rg15Parse(buffer, "Acc"); diff --git a/tools/decode-status.py b/tools/decode-status.py index b2f54a711..a7c900ed9 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -256,7 +256,7 @@ a_features = [[ "USE_MPU_ACCEL","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY", "USE_BM8563","USE_ENERGY_DUMMY","USE_AM2320","USE_T67XX", "USE_MCP2515","USE_TASMESH","USE_WIFI_RANGE_EXTENDER","USE_INFLUXDB", - "","","","", + "USE_HRG15","","","", "","","","", "","","","", "","","","", @@ -288,7 +288,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20210812 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20210825 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From 454d4601b48a6945cecca2e521fd1e641280f404 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 26 Aug 2021 11:16:28 +0200 Subject: [PATCH 064/317] Add support for IKEA VINDRIKTNING Add support for IKEA VINDRIKTNING particle concentration sensor (#12976) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/language/af_AF.h | 1 + tasmota/language/bg_BG.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 1 + tasmota/language/fy_NL.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/it_IT.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 1 + tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + tasmota/my_user_config.h | 1 + tasmota/support_features.ino | 4 +- tasmota/tasmota_template.h | 7 +- tasmota/xsns_91_vindriktning.ino | 170 +++++++++++++++++++++++++++++++ tools/decode-status.py | 4 +- 33 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 tasmota/xsns_91_vindriktning.ino diff --git a/CHANGELOG.md b/CHANGELOG.md index a6c34906a..336c85abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Berry support for vararg - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" (#12858) - Support for Hydreon RG-15 Solid State Rain sensor (#12974) +- Support for IKEA VINDRIKTNING particle concentration sensor (#12976) ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 4af686e81..f87825dd6 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -123,6 +123,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) - Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) +- Support for IKEA VINDRIKTNING particle concentration sensor [#12976](https://github.com/arendst/Tasmota/issues/12976) ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 18d3fd4b8..766f31d6a 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 6b256c80c..358390bc9 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -837,6 +837,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index c37b21952..be7396a92 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 29ab0818d..fdee2f6c3 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index e49a964ea..d18aa9bce 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index ba6b11cd0..2caab6abc 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index d41a70ac1..c5d98d79e 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index ec04ab26b..bd63fc53f 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 7b2e0b366..86e0fb7d2 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index 68f324a8c..efd02b2f4 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 7455ee7f6..3da61ccc6 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 7fe20f02d..2d80dea18 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 - CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index 86f9c0ea3..d427966cd 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 46243e5e7..56015b023 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 7d2ccf154..7f9b79727 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index ed2812cc8..83a9d88c3 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 4853fdd0a..831563664 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index 88f9a99f9..b1058e60d 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index 6642506b1..b6fb1bc35 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 7cbb51d2f..3ac233b00 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index 9de80ed08..c026d53b6 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 6f236ed7f..5d2d969b4 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 68181966b..3be6240c2 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "А" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index 11a35daea..d1e855bec 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index 3d6475d37..c9a64adac 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "A" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 08ac66206..2074f04f7 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -838,6 +838,7 @@ #define D_SENSOR_MCP2515_CS "MCP2515 CS" #define D_SENSOR_HRG15_RX "HRG15 Rx" #define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units #define D_UNIT_AMPERE "安培" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index bb6a5a45d..9c85c7549 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -744,6 +744,7 @@ // #define USE_AS608_MESSAGES // Add verbose error messages (+0k4 code) //#define USE_TFMINIPLUS // Add support for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface (+0k8) //#define USE_HRG15 // Add support for Hydreon RG-15 Solid State Rain sensor (+1k5 code) +//#define USE_VINDRIKTNING // Add support for IKEA VINDRIKTNING particle concentration sensor (+1k code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_SENSOR // Add support for Energy Monitors (+14k code) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index 68008637c..114809a00 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -765,7 +765,9 @@ void ResponseAppendFeatures(void) #ifdef USE_HRG15 feature8 |= 0x00001000; // xsns_90_hrg15.ino #endif -// feature8 |= 0x00002000; +#ifdef USE_VINDRIKTNING + feature8 |= 0x00002000; // xsns_91_vindriktning.ino +#endif // feature8 |= 0x00004000; // feature8 |= 0x00008000; diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index acede8653..cb8b664af 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -171,6 +171,7 @@ enum UserSelectablePins { GPIO_INTERRUPT, GPIO_MCP2515_CS, // MCP2515 Chip Select GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface + GPIO_VINDRIKTNING_RX, // IKEA VINDRIKTNING Serial interface GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -361,7 +362,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_I2S_IN_DATA "|" D_SENSOR_I2S_IN_CLK "|" D_SENSOR_I2S_IN_SLCT "|" D_SENSOR_INTERRUPT "|" D_SENSOR_MCP2515_CS "|" - D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX + D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|" + D_SENSOR_VINDRIKTNING_RX ; const char kSensorNamesFixed[] PROGMEM = @@ -797,6 +799,9 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_HRG15_TX), AGPIO(GPIO_HRG15_RX), #endif +#ifdef USE_VINDRIKTNING + AGPIO(GPIO_VINDRIKTNING_RX), +#endif /*-------------------------------------------------------------------------------------------*\ * Other sensors diff --git a/tasmota/xsns_91_vindriktning.ino b/tasmota/xsns_91_vindriktning.ino new file mode 100644 index 000000000..640eeede9 --- /dev/null +++ b/tasmota/xsns_91_vindriktning.ino @@ -0,0 +1,170 @@ +/* + xsns_91_vindriktning.ino - IKEA vindriktning particle concentration sensor support for Tasmota + + Copyright (C) 2021 Marcel Ritter and Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_VINDRIKTNING +/*********************************************************************************************\ + * IKEA VINDRIKTNING particle concentration sensor +\*********************************************************************************************/ + +#define XSNS_91 91 + +#include + +#ifndef MIN_INTERVAL_PERIOD +#define MIN_INTERVAL_PERIOD 60 // minimum interval period in seconds required for passive mode +#endif + +#define VINDRIKTNING_DATASET_SIZE 20 + +TasmotaSerial *VindriktningSerial; + +struct VINDRIKTNING { + uint16_t pm2_5 = 0; + uint16_t pm1_0 = 0; + uint16_t pm10 = 0; + uint8_t type = 1; + uint8_t valid = 0; + bool discovery_triggered = false; +} Vindriktning; + +bool VindriktningReadData(void) { + if (!VindriktningSerial->available()) { + return false; + } + + int serial_in_byte_counter = 0; + uint8_t buffer[VINDRIKTNING_DATASET_SIZE]; + uint8_t crc = 0; + + while (VindriktningSerial->available()) { + uint8_t serial_in_byte = VindriktningSerial->read(); + if (serial_in_byte_counter <= VINDRIKTNING_DATASET_SIZE -1) { + buffer[serial_in_byte_counter++] = serial_in_byte; + crc += serial_in_byte; + } + } + VindriktningSerial->flush(); // Make room for another burst + + AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, VINDRIKTNING_DATASET_SIZE); + + if (serial_in_byte_counter < VINDRIKTNING_DATASET_SIZE) { + AddLog(LOG_LEVEL_DEBUG, PSTR("VDN: Not enough data (%d < 20)"), serial_in_byte_counter); + return false; + } + + if (crc != 0) { + AddLog(LOG_LEVEL_DEBUG, PSTR("VDN: " D_CHECKSUM_FAILURE)); + return false; + } + + // sample data: + // 16 11 0b 00 00 00 0c 00 00 03 cb 00 00 00 0c 01 00 00 00 e7 + // |pm2_5| |pm1_0| |pm10 | | CRC | + Vindriktning.pm2_5 = (buffer[5] << 8) | buffer[6]; + Vindriktning.pm1_0 = (buffer[9] << 8) | buffer[10]; + Vindriktning.pm10 = (buffer[13] << 8) | buffer[14]; + + if (!Vindriktning.discovery_triggered) { + TasmotaGlobal.discovery_counter = 1; // force TasDiscovery() + Vindriktning.discovery_triggered = true; + } + return true; +} + +/*********************************************************************************************/ + +void VindriktningSecond(void) { // Every second + if (VindriktningReadData()) { + Vindriktning.valid = MIN_INTERVAL_PERIOD; + } else { + if (Vindriktning.valid) { + Vindriktning.valid--; + } + } +} + +/*********************************************************************************************/ + +void VindriktningInit(void) { + Vindriktning.type = 0; + if (PinUsed(GPIO_VINDRIKTNING_RX)) { + VindriktningSerial = new TasmotaSerial(Pin(GPIO_VINDRIKTNING_RX), -1, 1); + if (VindriktningSerial->begin(9600)) { + if (VindriktningSerial->hardwareSerial()) { ClaimSerial(); } + Vindriktning.type = 1; + } + } +} + +#ifdef USE_WEBSERVER +const char HTTP_VINDRIKTNING_SNS[] PROGMEM = + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 1.0 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 10 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = +#endif // USE_WEBSERVER + +void VindriktningShow(bool json) { + if (Vindriktning.valid) { + if (json) { + ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{\"PM1\":%d,\"PM2.5\":%d,\"PM10\":%d}"), + Vindriktning.pm1_0, Vindriktning.pm2_5, Vindriktning.pm10); +#ifdef USE_DOMOTICZ + if (0 == TasmotaGlobal.tele_period) { + DomoticzSensor(DZ_COUNT, Vindriktning.pm1_0); // PM1.0 + DomoticzSensor(DZ_VOLTAGE, Vindriktning.pm2_5); // PM2.5 + DomoticzSensor(DZ_CURRENT, Vindriktning.pm10); // PM10 + } +#endif // USE_DOMOTICZ +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_VINDRIKTNING_SNS, Vindriktning.pm1_0, Vindriktning.pm2_5, Vindriktning.pm10); +#endif // USE_WEBSERVER + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns91(uint8_t function) { + bool result = false; + + if (Vindriktning.type) { + switch (function) { + case FUNC_EVERY_SECOND: + VindriktningSecond(); + break; + case FUNC_JSON_APPEND: + VindriktningShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + VindriktningShow(0); + break; +#endif // USE_WEBSERVER + case FUNC_INIT: + VindriktningInit(); + break; + } + } + return result; +} + +#endif // USE_VINDRIKTNING \ No newline at end of file diff --git a/tools/decode-status.py b/tools/decode-status.py index a7c900ed9..ffbbca5b0 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -256,7 +256,7 @@ a_features = [[ "USE_MPU_ACCEL","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY", "USE_BM8563","USE_ENERGY_DUMMY","USE_AM2320","USE_T67XX", "USE_MCP2515","USE_TASMESH","USE_WIFI_RANGE_EXTENDER","USE_INFLUXDB", - "USE_HRG15","","","", + "USE_HRG15","USE_VINDRIKTNING","","", "","","","", "","","","", "","","","", @@ -288,7 +288,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20210825 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20210826 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From c17b5a6178f647fca80a63c778a81a4edd1230a2 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 26 Aug 2021 11:50:15 +0200 Subject: [PATCH 065/317] Add PMS5003 delayed discovery --- tasmota/xsns_18_pms5003.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tasmota/xsns_18_pms5003.ino b/tasmota/xsns_18_pms5003.ino index 604583067..b1cac1a81 100644 --- a/tasmota/xsns_18_pms5003.ino +++ b/tasmota/xsns_18_pms5003.ino @@ -48,6 +48,7 @@ struct PMS5003 { uint8_t valid = 0; uint8_t wake_mode = 1; uint8_t ready = 1; + bool discovery_triggered = false; } Pms; enum PmsCommands @@ -156,6 +157,11 @@ bool PmsReadData(void) #endif // PMS_MODEL_PMS3003 Pms.valid = 10; + if (!Pms.discovery_triggered) { + TasmotaGlobal.discovery_counter = 1; // Force discovery + Pms.discovery_triggered = true; + } + return true; } From 6836f232a3c32cd2c9a3bec27031beb246720d92 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 26 Aug 2021 13:50:05 +0200 Subject: [PATCH 066/317] enable PSRAM if found --- boards/esp32_16M.json | 2 +- boards/esp32_4M.json | 2 +- boards/esp32_8M.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boards/esp32_16M.json b/boards/esp32_16M.json index 7bcc0db53..69abb9a09 100644 --- a/boards/esp32_16M.json +++ b/boards/esp32_16M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_16M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_16M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_4M.json b/boards/esp32_4M.json index 4f549bb3e..f43be6848 100644 --- a/boards/esp32_4M.json +++ b/boards/esp32_4M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_4M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_4M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", diff --git a/boards/esp32_8M.json b/boards/esp32_8M.json index 616eb16d3..adcd0caaa 100644 --- a/boards/esp32_8M.json +++ b/boards/esp32_8M.json @@ -4,7 +4,7 @@ "ldscript": "esp32_out.ld" }, "core": "esp32", - "extra_flags": "-DARDUINO_ESP32_DEV -DESP32_8M", + "extra_flags": "-DARDUINO_ESP32_DEV -DBOARD_HAS_PSRAM -DESP32_8M", "f_cpu": "80000000L", "f_flash": "40000000L", "flash_mode": "dout", From e2e90cc18a939894142a3ccc7cec0d89acb6937c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 26 Aug 2021 16:36:04 +0200 Subject: [PATCH 067/317] Add commands ``SwitchMode 17`` and ``SwitchMode 18`` Add commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event (#12973) --- CHANGELOG.md | 3 ++- RELEASENOTES.md | 1 + tasmota/support_switch.ino | 38 ++++++++++++++++++++++++++++---------- tasmota/tasmota.h | 3 ++- 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 336c85abe..b41715cea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" (#12858) - Support for Hydreon RG-15 Solid State Rain sensor (#12974) - Support for IKEA VINDRIKTNING particle concentration sensor (#12976) +- Commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event (#12973) ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 @@ -1037,7 +1038,7 @@ All notable changes to this project will be documented in this file. ## [8.1.0.6] - 20200205 ### Added - Support for sensors DS18x20 and DHT family on Shelly 1 and Shelly 1PM using Shelly Add-On adapter (#7469) -- Commands ``SwitchMode 11`` PushHoldMulti and ``SwitchMode 12`` PushHoldInverted (#7603) +- Commands ``SwitchMode 11`` PushHoldMulti and ``SwitchMode 12`` PushHoldMultiInverted (#7603) - Command ``Buzzer -1`` for infinite mode and command ``Buzzer -2`` for following led mode (#7623) - Support for MI-BLE sensors using HM-10 Bluetooth 4.0 module by Christian Staars (#7683) - BootCount Reset Time as BCResetTime to ``Status 1`` diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f87825dd6..19bace10e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,6 +104,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver +- Commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event [#12973](https://github.com/arendst/Tasmota/issues/12973) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server - Support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index 68400e5a9..4b1688c72 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -237,17 +237,32 @@ void SwitchHandler(uint32_t mode) { uint32_t mqtt_action = POWER_NONE; uint32_t switchmode = Settings->switchmode[i]; - if (Switch.hold_timer[i] & (((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)) ? SM_TIMER_MASK: SM_NO_TIMER_MASK)) { + bool push_hold_multi_delay = ((PUSHHOLDMULTIDELAY == switchmode) || (PUSHHOLDMULTIDELAY_INV == switchmode)); + if (push_hold_multi_delay) { + switchmode -= (PUSHHOLDMULTIDELAY - PUSHHOLDMULTI); + } + bool push_hold_multi = ((PUSHHOLDMULTI == switchmode) || (PUSHHOLDMULTI_INV == switchmode)); + + if (Switch.hold_timer[i] & ((push_hold_multi) ? SM_TIMER_MASK : SM_NO_TIMER_MASK)) { Switch.hold_timer[i]--; if ((Switch.hold_timer[i] & SM_TIMER_MASK) == loops_per_second * Settings->param[P_HOLD_TIME] / 25) { - if ((switchmode == PUSHHOLDMULTI) & (NOT_PRESSED == Switch.last_state[i])) { - SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT + bool do_sendkey = false; + switch (switchmode) { + case PUSHHOLDMULTI: + do_sendkey = (NOT_PRESSED == Switch.last_state[i]); + break; + case PUSHHOLDMULTI_INV: + do_sendkey = (PRESSED == Switch.last_state[i]); + break; } - if ((switchmode == PUSHHOLDMULTI_INV) & (PRESSED == Switch.last_state[i])) { + if (do_sendkey) { SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT + } else if (push_hold_multi_delay && ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS)) { + switchflag = POWER_TOGGLE; // Toggle with pushbutton + Switch.hold_timer[i] = 0; } } - if (0 == (Switch.hold_timer[i] & (((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)) ? SM_TIMER_MASK: SM_NO_TIMER_MASK))) { + if (0 == (Switch.hold_timer[i] & ((push_hold_multi) ? SM_TIMER_MASK: SM_NO_TIMER_MASK))) { switch (switchmode) { case TOGGLEMULTI: switchflag = POWER_TOGGLE; // Toggle after hold @@ -274,7 +289,6 @@ void SwitchHandler(uint32_t mode) { Switch.hold_timer[i] = loops_per_second * Settings->param[P_HOLD_TIME] / 25; SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT mqtt_action = POWER_INCREMENT; - } else { Switch.hold_timer[i]= 0; SendKey(KEY_SWITCH, i +1, POWER_CLEAR); // Execute command via MQTT @@ -349,9 +363,11 @@ void SwitchHandler(uint32_t mode) { } } else { if ((Switch.hold_timer[i] & SM_TIMER_MASK) > loops_per_second * Settings->param[P_HOLD_TIME] / 25) { - if((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { + if ((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { Switch.hold_timer[i]= SM_FIRST_PRESS; - switchflag = POWER_TOGGLE; // Toggle with pushbutton + if (!push_hold_multi_delay) { + switchflag = POWER_TOGGLE; // Toggle with pushbutton + } } else{ SendKey(KEY_SWITCH, i +1, POWER_100); // Execute command via MQTT @@ -375,9 +391,11 @@ void SwitchHandler(uint32_t mode) { } } else { if ((Switch.hold_timer[i] & SM_TIMER_MASK)> loops_per_second * Settings->param[P_HOLD_TIME] / 25) { - if((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { + if ((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { Switch.hold_timer[i]= SM_FIRST_PRESS; - switchflag = POWER_TOGGLE; // Toggle with pushbutton + if (!push_hold_multi_delay) { + switchflag = POWER_TOGGLE; // Toggle with pushbutton + } } else{ SendKey(KEY_SWITCH, i +1, POWER_100); // Execute command via MQTT diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 5a475cc9d..19f485329 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -280,7 +280,8 @@ enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_D enum WifiConfigOptions {WIFI_RESTART, EX_WIFI_SMARTCONFIG, WIFI_MANAGER, EX_WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY, MAX_WIFI_OPTION}; enum SwitchModeOptions {TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE, TOGGLEMULTI, - FOLLOWMULTI, FOLLOWMULTI_INV, PUSHHOLDMULTI, PUSHHOLDMULTI_INV, PUSHON, PUSHON_INV, PUSH_IGNORE, MAX_SWITCH_OPTION}; + FOLLOWMULTI, FOLLOWMULTI_INV, PUSHHOLDMULTI, PUSHHOLDMULTI_INV, PUSHON, PUSHON_INV, PUSH_IGNORE, PUSHNOTUSED, PUSHHOLDMULTIDELAY, + PUSHHOLDMULTIDELAY_INV, MAX_SWITCH_OPTION}; enum LedStateOptions {LED_OFF, LED_POWER, LED_MQTTSUB, LED_POWER_MQTTSUB, LED_MQTTPUB, LED_POWER_MQTTPUB, LED_MQTT, LED_POWER_MQTT, MAX_LED_OPTION}; From 9be8f4fc7a6f7fa87200491389825e818156ed71 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 26 Aug 2021 18:52:08 +0200 Subject: [PATCH 068/317] Berry fix bug in conditional --- lib/libesp32/Berry/src/be_debug.c | 2 +- lib/libesp32/Berry/src/be_parser.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/libesp32/Berry/src/be_debug.c b/lib/libesp32/Berry/src/be_debug.c index 33db01d36..4c6be85a8 100644 --- a/lib/libesp32/Berry/src/be_debug.c +++ b/lib/libesp32/Berry/src/be_debug.c @@ -111,7 +111,7 @@ void be_print_inst(binstruction ins, int pc) logbuf("%s\tK%d", opc2str(op), IGET_Bx(ins)); break; case OP_CLOSE: case OP_LDNIL: - logbuf("%s\t%d", opc2str(op), IGET_RA(ins)); + logbuf("%s\tR%d", opc2str(op), IGET_RA(ins)); break; case OP_RAISE: logbuf("%s\t%d\t%c%d\t%c%d", opc2str(op), IGET_RA(ins), diff --git a/lib/libesp32/Berry/src/be_parser.c b/lib/libesp32/Berry/src/be_parser.c index b04b24383..805a85021 100644 --- a/lib/libesp32/Berry/src/be_parser.c +++ b/lib/libesp32/Berry/src/be_parser.c @@ -97,7 +97,7 @@ static void match_notoken(bparser *parser, btokentype type) } } -/* check that if the expdesc is a symbol, it is avalid one or raise an exception */ +/* check that if the expdesc is a symbol, it is a valid one or raise an exception */ static void check_symbol(bparser *parser, bexpdesc *e) { if (e->type == ETVOID && e->v.s == NULL) { /* error when token is not a symbol */ @@ -106,7 +106,7 @@ static void check_symbol(bparser *parser, bexpdesc *e) } } -/* check that the value in `e` is valid for a variable, i.e. conatins a value or a valid symbol */ +/* check that the value in `e` is valid for a variable, i.e. contains a value or a valid symbol */ static void check_var(bparser *parser, bexpdesc *e) { check_symbol(parser, e); /* check the token is a symbol */ @@ -989,6 +989,7 @@ static void cond_expr(bparser *parser, bexpdesc *e) if (next_type(parser) == OptQuestion) { int jf, jl = NO_JUMP; /* jump list */ bfuncinfo *finfo = parser->finfo; + check_var(parser, e); /* check if valid */ scan_next_token(parser); /* skip '?' */ be_code_jumpbool(finfo, e, bfalse); /* go if true */ jf = e->f; From 538734579496e7bd5edb365e44106c2fe7de9c40 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 26 Aug 2021 19:30:57 +0200 Subject: [PATCH 069/317] Berry improved `super()` for inheritance --- lib/libesp32/Berry/src/be_baselib.c | 108 +++++++++++++++--- lib/libesp32/Berry/src/be_class.c | 44 +++++--- lib/libesp32/Berry/tests/super_auto.be | 132 ++++++++++++++++++++++ lib/libesp32/Berry/tests/super_leveled.be | 7 +- 4 files changed, 253 insertions(+), 38 deletions(-) create mode 100644 lib/libesp32/Berry/tests/super_auto.be diff --git a/lib/libesp32/Berry/src/be_baselib.c b/lib/libesp32/Berry/src/be_baselib.c index d5d3e56f1..27a650827 100644 --- a/lib/libesp32/Berry/src/be_baselib.c +++ b/lib/libesp32/Berry/src/be_baselib.c @@ -11,6 +11,9 @@ #include "be_mem.h" #include "be_gc.h" #include "be_class.h" +#include "be_vector.h" +#include "be_string.h" +#include "be_map.h" #include #define READLINE_STEP 100 @@ -73,36 +76,105 @@ static int l_input(bvm *vm) return m_readline(vm); } +/* Look in the current class and all super classes for a method corresponding to a specific closure pointer */ +static bclass *find_class_closure(bclass *cl, bclosure *needle) +{ + while (cl) { + bmapnode *node; /* iterate on members of the class */ + bmap *members = be_class_members(cl); + if (members) { /* only iterate if there are members */ + bmapiter iter = be_map_iter(); + while ((node = be_map_next(members, &iter)) != NULL) { + if (var_type(&node->value) == BE_CLOSURE) { /* only native functions are considered */ + bclosure *clos_iter = var_toobj(&node->value); /* retrieve the method's closure */ + if (clos_iter == needle) { + /* we found the closure, we now know its class */ + return cl; + } + } + } + } + cl = be_class_super(cl); /* move to super class */ + } + return NULL; /* not found */ +} + static int l_super(bvm *vm) { int argc = be_top(vm); - if (argc) { + + /* if no argument, or arg 1 is nil, return nil */ + if (argc == 0 || be_isnil(vm, 1)) { + be_return_nil(vm); + } + + /* if arg 1 is a class, simply return super */ + if (be_isclass(vm, 1)) { + be_getsuper(vm, 1); + be_return(vm); + } + + /* arg 1 is an instance */ + if (be_isinstance(vm, 1)) { + binstance *o = var_toobj(be_indexof(vm, 1)); + bclass *target_class = NULL; /* the minimal class expected, or any super class */ + bclass *base_class = NULL; /* current class of the caller, if any */ + + /* if arg 2 is present, it must be a class */ if (argc >= 2) { - if (be_isinstance(vm, 1) && be_isclass(vm, 2)) { - /* leveled super, i.e. fix the parenthood class level */ - binstance *o = var_toobj(be_indexof(vm, 1)); - bclass *bc = var_toobj(be_indexof(vm, 2)); - while (o) { - bclass *c = be_instance_class(o); - if (c == bc) break; /* found */ - o = be_instance_super(o); - } - bvalue *top = be_incrtop(vm); - if (o) { - var_setinstance(top, o); /* return the instance with the specified parent class */ - } else { - var_setnil(top); /* not found, return nil */ - } - be_return(vm); + if (be_isclass(vm, 2)) { + target_class = var_toobj(be_indexof(vm, 2)); + } else if (be_isnil(vm, 2)) { + // ignore, revert to standard super() behavior if second arg is explicit nil } else { be_raise(vm, "type_error", "leveled super() requires 'instance' and 'class' arguments"); } + } + + /* now the more complex part, if arg 1 is an instance */ + /* if instance is the sole argument, try to find if it comes from a method of a class and set 'base_class' accordinly */ + /* later it will be equivalent to passing this class as second argument */ + if (argc == 1) { + /* we look in the callstack for the caller's closure */ + int size = be_stack_count(&vm->callstack); + if (size >= 2) { /* need at least 2 stackframes: current (for super() native) and caller (the one we are interested in) */ + bcallframe *caller = be_vector_at(&vm->callstack, size - 2); /* get the callframe of caller */ + bvalue *func = caller->func; /* function object of caller */ + if (var_type(func) == BE_CLOSURE) { /* only useful if the caller is a Berry closure (i.e. not native) */ + bclosure *clos_ctx = var_toobj(func); /* this is the closure we look for in the class chain */ + base_class = find_class_closure(o->_class, clos_ctx); /* iterate on current and super classes to find where the closure belongs */ + } + } + } + + if (base_class || target_class) { + if (base_class) { + target_class = base_class->super; + if (!target_class) be_return_nil(vm); /* fast exit if top class */ + } + /* leveled super, i.e. fix the parenthood class level */ + if (o) { + o = be_instance_super(o); /* always skip the current class and move to super */ + } + while (o) { + bclass *c = be_instance_class(o); + if (c == target_class) break; /* found */ + o = be_instance_super(o); + } + bvalue *top = be_incrtop(vm); + if (o) { + var_setinstance(top, o); /* return the instance with the specified parent class */ + } else { + var_setnil(top); /* not found, return nil */ + } + be_return(vm); } else { - /* simple use of super */ be_getsuper(vm, 1); be_return(vm); } } + + /* fall through, return nil if we don't know what to do */ be_return_nil(vm); } diff --git a/lib/libesp32/Berry/src/be_class.c b/lib/libesp32/Berry/src/be_class.c index b8e3ea2fb..5441b372b 100644 --- a/lib/libesp32/Berry/src/be_class.c +++ b/lib/libesp32/Berry/src/be_class.c @@ -14,6 +14,7 @@ #include "be_vm.h" #include "be_func.h" #include "be_var.h" +#include #define check_members(vm, c) \ if (!(c)->members) { \ @@ -237,6 +238,11 @@ bbool be_class_newobj(bvm *vm, bclass *c, bvalue *reg, int argc, int mode) return bfalse; } +/* Default empty constructor */ +static int default_init_native_method(bvm *vm) { + be_return_nil(vm); +} + /* Find instance member by name and copy value to `dst` */ /* Input: none of `obj`, `name` and `dst` may not be NULL */ /* Returns the type of the member or BE_NONE if member not found */ @@ -253,22 +259,28 @@ int be_instance_member(bvm *vm, binstance *instance, bstring *name, bvalue *dst) if (obj) { return type; } else { /* if no method found, try virtual */ - /* get method 'member' */ - obj = instance_member(vm, instance, str_literal(vm, "member"), vm->top); - if (obj && basetype(var_type(vm->top)) == BE_FUNCTION) { - bvalue *top = vm->top; - var_setinstance(&top[1], instance); - var_setstr(&top[2], name); - vm->top += 3; /* prevent gc collection results */ - be_dofunc(vm, top, 2); /* call method 'member' */ - vm->top -= 3; - *dst = *vm->top; /* copy result to R(A) */ - if (obj && var_type(dst) == MT_VARIABLE) { - *dst = obj->members[dst->v.i]; - } - type = var_type(dst); - if (type != BE_NIL) { - return type; + /* if 'init' does not exist, create a virtual empty constructor */ + if (strcmp(str(name), "init") == 0) { + var_setntvfunc(dst, default_init_native_method); + return var_type(dst); + } else { + /* get method 'member' */ + obj = instance_member(vm, instance, str_literal(vm, "member"), vm->top); + if (obj && basetype(var_type(vm->top)) == BE_FUNCTION) { + bvalue *top = vm->top; + var_setinstance(&top[1], instance); + var_setstr(&top[2], name); + vm->top += 3; /* prevent gc collection results */ + be_dofunc(vm, top, 2); /* call method 'member' */ + vm->top -= 3; + *dst = *vm->top; /* copy result to R(A) */ + if (obj && var_type(dst) == MT_VARIABLE) { + *dst = obj->members[dst->v.i]; + } + type = var_type(dst); + if (type != BE_NIL) { + return type; + } } } } diff --git a/lib/libesp32/Berry/tests/super_auto.be b/lib/libesp32/Berry/tests/super_auto.be new file mode 100644 index 000000000..8d7ede85f --- /dev/null +++ b/lib/libesp32/Berry/tests/super_auto.be @@ -0,0 +1,132 @@ +#- test for new auto class inference of super() -# + +#- test that we can call init() even if it's not defined -# +class Z end +z=Z() +assert(z.init != nil) +z.init() #- should do nothing -# + +#- check the old way still works -# +class A1 + var a + def init(a) + self.a = a + end +end +class B1:A1 + var b + def init(a,b) + super(self,A1).init(a) + self.b = b + end +end +class C1:B1 + var c + def init(a,b,c) + super(self,B1).init(a,b) + self.c = c + end +end +#- -# +c1=C1(1,2,3) +assert(c1.a == 1) +assert(c1.b == 2) +assert(c1.c == 3) + +#- test simple behavior -# +class A0 var a end +class B0:A0 var b end +class C0:B0 end +c0=C0() +assert(classof(c0) == C0) +assert(classof(super(c0)) == B0) +assert(classof(super(super(c0))) == A0) +assert(super(super(super(c0))) == nil) + +assert(super(C0) == B0) +assert(super(super(C0)) == A0) +assert(super(super(super(C0))) == nil) + +assert(classof(super(c0,B0)) == B0) +assert(classof(super(c0,A0)) == A0) + +#- test auto inference of target superclass -# +class A + var a + def init(a) + self.a = a + end +end +class B:A + var b + def init(a,b) + super(self).init(a) + self.b = b + end +end +class C:B + var c + def init(a,b,c) + super(self).init(a,b) + self.c = c + end +end +#- -# +c=C(1,2,3) + +assert(c.a == 1) +assert(c.b == 2) +assert(c.c == 3)class A +end +class B:A + var b + def init(a,b) super(self).init(a) self.b = b end +end +class C:B + var c + def init(a,b,c) super(self).init(a,b) self.c = c end +end +c=C(1,2,3) + +#- variant if A2 does not have an init() method, still works -# +class A2 + static a=1 +end +class B2:A2 + var b + def init(a,b) super(self).init(a) self.b = b end +end +class C2:B2 + var c + def init(a,b,c) super(self).init(a,b) self.c = c end +end +#- -# +c2=C2(1,2,3) +assert(c2.a == 1) +assert(c2.b == 2) +assert(c2.c == 3) + +#- difference in behavior whether the second arg is provided or not -# +class A3 +end +class B3:A3 + def b1() + return super(self) + end + def b2(c) + return super(self, c) + end +end +class C3:B3 +end +#- -# +b3=B3() +c3=C3() +assert(classof(c3.b1()) == A3) +assert(classof(b3.b1()) == A3) +assert(classof(c3.b2(B3)) == B3) +assert(classof(c3.b2(A3)) == A3) + +assert(classof(c3.b2(nil)) == B3) #- testing super(self,nil) in B3::b2() -# + +assert(c3.b2(C3) == nil) #- if specifying the current class, can't find any relevant class in supers -# \ No newline at end of file diff --git a/lib/libesp32/Berry/tests/super_leveled.be b/lib/libesp32/Berry/tests/super_leveled.be index 09b7a115b..e88914941 100644 --- a/lib/libesp32/Berry/tests/super_leveled.be +++ b/lib/libesp32/Berry/tests/super_leveled.be @@ -26,10 +26,9 @@ assert(classname(super(super(C))) == 'A') assert(super(super(super(C))) == nil) #- super() levele -# -assert(super(a,A) == a) -assert(classname(super(a,A)) == 'A') -assert(classname(super(b,B)) == 'B') -assert(classname(super(c,C)) == 'C') +assert(super(a,A) == nil) +assert(super(b,B) == nil) +assert(super(c,C) == nil) assert(classname(super(c,B)) == 'B') assert(classname(super(c,A)) == 'A') assert(super(c,map) == nil) #- not a parent class -# From 4541438e70934fab005fb96d8297615c46be5606 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 26 Aug 2021 19:57:03 +0200 Subject: [PATCH 070/317] Berry take into account `bytes()` in gc size --- .../Berry/generate/be_fixed_be_class_bytes.h | 49 +++++++-------- lib/libesp32/Berry/src/be_byteslib.c | 60 +++++++++++-------- lib/libesp32/Berry/src/be_gc.c | 5 +- 3 files changed, 65 insertions(+), 49 deletions(-) diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h index 58ccee454..76f24a936 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h @@ -1,36 +1,37 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_bytes_map) { - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(seti, 6), be_const_func(m_set) }, - { be_const_key(get, 7), be_const_func(m_getu) }, - { be_const_key(size, 10), be_const_func(m_size) }, - { be_const_key(resize, 1), be_const_func(m_resize) }, - { be_const_key(opt_add, 22), be_const_func(m_merge) }, - { be_const_key(getbits, -1), be_const_closure(getbits_closure) }, - { be_const_key(geti, 16), be_const_func(m_geti) }, - { be_const_key(setitem, -1), be_const_func(m_setitem) }, - { be_const_key(add, -1), be_const_func(m_add) }, - { be_const_key(fromb64, -1), be_const_func(m_fromb64) }, - { be_const_key(opt_neq, -1), be_const_func(m_nequal) }, - { be_const_key(set, -1), be_const_func(m_set) }, - { be_const_key(asstring, -1), be_const_func(m_asstring) }, - { be_const_key(copy, 3), be_const_func(m_copy) }, - { be_const_key(opt_eq, 2), be_const_func(m_equal) }, - { be_const_key(tob64, -1), be_const_func(m_tob64) }, - { be_const_key(setbits, 12), be_const_closure(setbits_closure) }, - { be_const_key(_buffer, -1), be_const_func(m_buffer) }, - { be_const_key(fromstring, 0), be_const_func(m_fromstring) }, - { be_const_key(tostring, 9), be_const_func(m_tostring) }, - { be_const_key(item, 8), be_const_func(m_item) }, - { be_const_key(init, 23), be_const_func(m_init) }, + { be_const_key(deinit, -1), be_const_func(m_deinit) }, { be_const_key(opt_connect, -1), be_const_func(m_connect) }, + { be_const_key(item, 3), be_const_func(m_item) }, + { be_const_key(seti, 22), be_const_func(m_set) }, + { be_const_key(asstring, -1), be_const_func(m_asstring) }, + { be_const_key(getbits, -1), be_const_closure(getbits_closure) }, + { be_const_key(copy, -1), be_const_func(m_copy) }, + { be_const_key(get, -1), be_const_func(m_getu) }, + { be_const_key(_buffer, -1), be_const_func(m_buffer) }, + { be_const_key(fromb64, -1), be_const_func(m_fromb64) }, + { be_const_key(add, -1), be_const_func(m_add) }, + { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(size, 0), be_const_func(m_size) }, + { be_const_key(tostring, -1), be_const_func(m_tostring) }, + { be_const_key(opt_add, 10), be_const_func(m_merge) }, + { be_const_key(resize, -1), be_const_func(m_resize) }, + { be_const_key(setitem, -1), be_const_func(m_setitem) }, + { be_const_key(set, -1), be_const_func(m_set) }, + { be_const_key(geti, -1), be_const_func(m_geti) }, + { be_const_key(init, -1), be_const_func(m_init) }, { be_const_key(clear, -1), be_const_func(m_clear) }, + { be_const_key(opt_neq, 23), be_const_func(m_nequal) }, + { be_const_key(tob64, 24), be_const_func(m_tob64) }, + { be_const_key(opt_eq, -1), be_const_func(m_equal) }, + { be_const_key(fromstring, -1), be_const_func(m_fromstring) }, + { be_const_key(setbits, -1), be_const_closure(setbits_closure) }, }; static be_define_const_map( be_class_bytes_map, - 25 + 26 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/src/be_byteslib.c b/lib/libesp32/Berry/src/be_byteslib.c index 5211a0a4c..e63f1932f 100644 --- a/lib/libesp32/Berry/src/be_byteslib.c +++ b/lib/libesp32/Berry/src/be_byteslib.c @@ -419,26 +419,17 @@ static void buf_add_hex(buf_impl* buf, const char *hex, size_t len) /******************************************************************** ** Wrapping into lib ********************************************************************/ -// typedef int (*bntvfunc)(bvm*); /* native function pointer */ -int free_bytes_buf(bvm* vm) -{ - int argc = be_top(vm); - if (argc > 0) { - buf_impl * buf = (buf_impl*) be_tocomptr(vm, 1); - if (buf != NULL) { - be_os_free(buf); - } - } - be_return_nil(vm); -} -buf_impl * bytes_alloc(int32_t size) +buf_impl * bytes_realloc(bvm *vm, buf_impl *oldbuf, int32_t size) { if (size < 4) { size = 4; } if (size > BYTES_MAX_SIZE) { size = BYTES_MAX_SIZE; } - buf_impl * next = (buf_impl*) be_os_malloc(size + BYTES_OVERHEAD); + size_t oldsize = oldbuf ? oldbuf->size + BYTES_OVERHEAD : 0; + buf_impl * next = (buf_impl*) be_realloc(vm, oldbuf, oldsize, size + BYTES_OVERHEAD); /* malloc */ next->size = size; - next->len = 0; + if (!oldbuf) { + next->len = 0; /* allocate a new buffer */ + } return next; } @@ -467,10 +458,10 @@ static int m_init(bvm *vm) } else if (argc > 1 && be_isstring(vm, 2)) { hex_in = be_tostring(vm, 2); if (hex_in) { - size = strlen(hex_in) / 2 + BYTES_HEADROOM; // allocate headroom + size = strlen(hex_in) / 2 + BYTES_HEADROOM; /* allocate headroom */ } } - buf_impl * buf = bytes_alloc(size); + buf_impl * buf = bytes_realloc(vm, NULL, size); /* allocate new buffer */ if (!buf) { be_throw(vm, BE_MALLOC_FAIL); } @@ -478,22 +469,35 @@ static int m_init(bvm *vm) if (hex_in) { buf_add_hex(buf, hex_in, strlen(hex_in)); } - be_newcomobj(vm, buf, &free_bytes_buf); + be_pushcomptr(vm, buf); be_setmember(vm, 1, ".p"); be_return_nil(vm); } +/* deallocate buffer */ +static int m_deinit(bvm *vm) { +{ + be_getmember(vm, 1, ".p"); + buf_impl * buf = be_tocomptr(vm, -1); + be_pop(vm, 1); + if (buf != NULL) { + be_realloc(vm, buf, buf->size + BYTES_OVERHEAD, 0); + } + be_pushcomptr(vm, NULL); /* push NULL pointer instead, just in case */ + be_setmember(vm, 1, ".p"); + be_return_nil(vm); +} +} + /* grow or shrink to the exact value */ /* stack item 1 must contain the instance */ static buf_impl * _bytes_resize(bvm *vm, buf_impl * buf, size_t new_size) { - buf_impl * new_buf = bytes_alloc(new_size); + buf_impl *new_buf = bytes_realloc(vm, buf, new_size); if (!new_buf) { be_throw(vm, BE_MALLOC_FAIL); } - memmove(buf_get_buf(new_buf), buf_get_buf(buf), buf->len); - new_buf->len = buf->len; - /* replace the .p attribute */ - be_newcomobj(vm, new_buf, &free_bytes_buf); + /* replace the .p attribute since address may have changed */ + be_pushcomptr(vm, new_buf); be_setmember(vm, 1, ".p"); be_pop(vm, 1); /* remove comobj from stack */ /* the old buffer will be garbage collected later */ @@ -504,7 +508,13 @@ static buf_impl * _bytes_resize(bvm *vm, buf_impl * buf, size_t new_size) { /* if grow, then add some headroom */ /* stack item 1 must contain the instance */ static buf_impl * bytes_resize(bvm *vm, buf_impl * buf, size_t new_size) { - if (buf->size >= new_size) { return buf; } /* no resize needed */ + /* when resized to smaller, we introduce a new heurstic */ + /* If the buffer is 64 bytes or smaller, don't shrink */ + /* Shrink buffer only if target size is smaller than half the original size */ + if (buf->size >= new_size) { /* enough room, consider if need to shrink */ + if (buf->size <= 64) { return buf; } /* don't shrink if below 64 bytes */ + if (buf->size < new_size * 2) { return buf; } + } return _bytes_resize(vm, buf, new_size + BYTES_HEADROOM); } @@ -1226,6 +1236,7 @@ void be_load_byteslib(bvm *vm) { ".p", NULL }, { "_buffer", m_buffer }, { "init", m_init }, + { "deinit", m_deinit }, { "tostring", m_tostring }, { "asstring", m_asstring }, { "fromstring", m_fromstring }, @@ -1261,6 +1272,7 @@ class be_class_bytes (scope: global, name: bytes) { .p, var _buffer, func(m_buffer) init, func(m_init) + deinit, func(m_deinit) tostring, func(m_tostring) asstring, func(m_asstring) fromstring, func(m_fromstring) diff --git a/lib/libesp32/Berry/src/be_gc.c b/lib/libesp32/Berry/src/be_gc.c index 8e6ac005e..dc5e2d09c 100644 --- a/lib/libesp32/Berry/src/be_gc.c +++ b/lib/libesp32/Berry/src/be_gc.c @@ -461,7 +461,10 @@ static void destruct_object(bvm *vm, bgcobject *obj) type = be_instance_member(vm, ins, str_literal(vm, "deinit"), vm->top); be_incrtop(vm); if (basetype(type) == BE_FUNCTION) { - be_dofunc(vm, vm->top - 1, 1); + var_setinstance(vm->top, ins); /* push instance on stack as arg 1 */ + be_incrtop(vm); + be_dofunc(vm, vm->top - 2, 1); /* warning, there shoudln't be any exception raised here, or the gc stops */ + be_stackpop(vm, 1); } be_stackpop(vm, 1); } From 55883242748015ffa88479750deec608c4b4f2b2 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 26 Aug 2021 21:51:19 +0200 Subject: [PATCH 071/317] Berry fix deinit --- lib/libesp32/Berry/src/be_class.c | 14 ++++++++++++++ lib/libesp32/Berry/src/be_class.h | 1 + lib/libesp32/Berry/src/be_gc.c | 2 +- lib/libesp32/Berry/src/be_vm.c | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/libesp32/Berry/src/be_class.c b/lib/libesp32/Berry/src/be_class.c index 5441b372b..74348fc3f 100644 --- a/lib/libesp32/Berry/src/be_class.c +++ b/lib/libesp32/Berry/src/be_class.c @@ -243,6 +243,20 @@ static int default_init_native_method(bvm *vm) { be_return_nil(vm); } +/* Find instance member by name and copy value to `dst` */ +/* Do not look into virtual members */ +int be_instance_member_simple(bvm *vm, binstance *instance, bstring *name, bvalue *dst) +{ + int type; + be_assert(name != NULL); + binstance * obj = instance_member(vm, instance, name, dst); + type = var_type(dst); + if (obj && type == MT_VARIABLE) { + *dst = obj->members[dst->v.i]; + } + return type; +} + /* Find instance member by name and copy value to `dst` */ /* Input: none of `obj`, `name` and `dst` may not be NULL */ /* Returns the type of the member or BE_NONE if member not found */ diff --git a/lib/libesp32/Berry/src/be_class.h b/lib/libesp32/Berry/src/be_class.h index 3186afd66..6a114f53b 100644 --- a/lib/libesp32/Berry/src/be_class.h +++ b/lib/libesp32/Berry/src/be_class.h @@ -59,6 +59,7 @@ void be_closure_method_bind(bvm *vm, bclass *c, bstring *name, bclosure *cl); int be_class_closure_count(bclass *c); void be_class_upvalue_init(bvm *vm, bclass *c); bbool be_class_newobj(bvm *vm, bclass *c, bvalue *argv, int argc, int mode); +int be_instance_member_simple(bvm *vm, binstance *obj, bstring *name, bvalue *dst); int be_instance_member(bvm *vm, binstance *obj, bstring *name, bvalue *dst); int be_class_member(bvm *vm, bclass *obj, bstring *name, bvalue *dst); bbool be_instance_setmember(bvm *vm, binstance *obj, bstring *name, bvalue *src); diff --git a/lib/libesp32/Berry/src/be_gc.c b/lib/libesp32/Berry/src/be_gc.c index dc5e2d09c..0475de7b3 100644 --- a/lib/libesp32/Berry/src/be_gc.c +++ b/lib/libesp32/Berry/src/be_gc.c @@ -458,7 +458,7 @@ static void destruct_object(bvm *vm, bgcobject *obj) int type; binstance *ins = cast_instance(obj); /* does not GC when creating the string "deinit". */ - type = be_instance_member(vm, ins, str_literal(vm, "deinit"), vm->top); + type = be_instance_member_simple(vm, ins, str_literal(vm, "deinit"), vm->top); be_incrtop(vm); if (basetype(type) == BE_FUNCTION) { var_setinstance(vm->top, ins); /* push instance on stack as arg 1 */ diff --git a/lib/libesp32/Berry/src/be_vm.c b/lib/libesp32/Berry/src/be_vm.c index 49e20517f..70857ef72 100644 --- a/lib/libesp32/Berry/src/be_vm.c +++ b/lib/libesp32/Berry/src/be_vm.c @@ -267,7 +267,7 @@ bbool be_value2bool(bvm *vm, bvalue *v) static void obj_method(bvm *vm, bvalue *o, bstring *attr, bvalue *dst) { binstance *obj = var_toobj(o); - int type = be_instance_member(vm, obj, attr, dst); + int type = be_instance_member_simple(vm, obj, attr, dst); if (basetype(type) != BE_FUNCTION) { vm_error(vm, "attribute_error", "the '%s' object has no method '%s'", From df8fb263e03ec46a7d72e4bc6bf3a86274fd8f5f Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 27 Aug 2021 09:10:29 +0200 Subject: [PATCH 072/317] Berry support for indirect members --- lib/libesp32/Berry/src/be_parser.c | 7 ++ lib/libesp32/Berry/tests/member_indirect.be | 75 +++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 lib/libesp32/Berry/tests/member_indirect.be diff --git a/lib/libesp32/Berry/src/be_parser.c b/lib/libesp32/Berry/src/be_parser.c index 805a85021..bb455df68 100644 --- a/lib/libesp32/Berry/src/be_parser.c +++ b/lib/libesp32/Berry/src/be_parser.c @@ -792,6 +792,13 @@ static void member_expr(bparser *parser, bexpdesc *e) init_exp(&key, ETSTRING, 0); key.v.s = str; be_code_member(parser->finfo, e, &key); + } else if (next_type(parser) == OptLBK) { + scan_next_token(parser); /* skip '(' */ + bexpdesc key; + expr(parser, &key); + check_var(parser, &key); + match_token(parser, OptRBK); /* skip ')' */ + be_code_member(parser->finfo, e, &key); } else { push_error(parser, "invalid syntax near '%s'", be_token2str(parser->vm, &next_token(parser))); diff --git a/lib/libesp32/Berry/tests/member_indirect.be b/lib/libesp32/Berry/tests/member_indirect.be new file mode 100644 index 000000000..046521acd --- /dev/null +++ b/lib/libesp32/Berry/tests/member_indirect.be @@ -0,0 +1,75 @@ +#- new syntax for indirect members -# + +#- module accessor -# +s_pi = 'pi' + +import math +assert(math.('pi') == math.pi) +assert(math.(s_pi) == math.pi) + +#- module writer -# +m = module("m") + +m.('aa') = 1 +m.('a' + 'b') = 2 +s_ac = 'ac' +m.(s_ac) = 3 +assert(m.aa == 1) +assert(m.ab == 2) +assert(m.ac == 3) +assert(m.('a'+'a') == 1) + +#- class accessor -# +class A1 + static a = 1, b = 2 + static s = "foo" + def f() return 0 end +end +assert(A1.a == 1) +assert(A1.b == 2) +assert(A1.s == "foo") +assert(type(A1.f) == 'function') + +#- instance accessor -# +class A2 + var a, b + static s_a = 'a' + def init(a,b) + self.(self.('s_a')) = a + self.('b') = b + end + def f(x) + return x+1 + end + def g(a,b) + return A2(a,b) + end +end +a = A2(1,2) + +#- reading members -# +assert(a.a == 1) +assert(a.b == 2) +assert(a.(A2.s_a) == 1) +assert(a.('b') == 2) + +#- writing members -# +a.('a') = 10 +a.('bb'[0]) = 11 +assert(a.a == 10) +assert(a.b == 11) + +#- calling methods -# +assert(a.f(1) == 2) +assert(a.('f')(2) == 3) + +#- mulit-level -# +assert(a.('g')(3,4).('a') == 3) +a.('a') = a.g(3,4) +assert(a.a.b == 4) +assert(a.('a').b == 4) +assert(a.('a').('b') == 4) +assert(a.a.('b') == 4) + +a.('a').('b') += 1 +assert(a.a.b == 5) From e1db23b7c58267f63beaed6d30ddcbb29e31114e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 27 Aug 2021 15:50:17 +0200 Subject: [PATCH 073/317] Add Sonoff L1 MusicSync off when a remote button is received Add Sonoff L1 MusicSync off when a remote button is received (#12930) --- tasmota/xlgt_05_sonoff_l1.ino | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index 299c054f0..b8b246b70 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -182,6 +182,11 @@ bool SnfL1SerialInput(void) { snprintf_P(cmnd_dimmer, sizeof(cmnd_dimmer), PSTR(D_CMND_DIMMER " %d"), dimmer); } + else if (!strncmp(token2, "\"mode\"", 6)) { + uint8_t received_mode = atoi(token3); + Settings->sbflag1.sonoff_l1_music_sync = (SONOFF_L1_MODE_SYNC_TO_MUSIC == received_mode); + } + token = strtok_r(nullptr, ",", &end_str); } From d9e5fea17c4aaf440bdd0880f9e3893ddc166259 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 27 Aug 2021 16:04:12 +0200 Subject: [PATCH 074/317] add trigger for Tasmota-specials repo --- .github/workflows/Tasmota_build_development.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/Tasmota_build_development.yml b/.github/workflows/Tasmota_build_development.yml index f36fec5a8..256ebfb72 100644 --- a/.github/workflows/Tasmota_build_development.yml +++ b/.github/workflows/Tasmota_build_development.yml @@ -1351,3 +1351,17 @@ jobs: destination_repo: 'arendst/Tasmota-firmware' user_email: 'github-actions@github.com' user_name: 'github-actions' + - name: Creat trigger.txt + run: | + echo ${GITHUB_SHA} &> trigger.txt + echo "$( Date: Fri, 27 Aug 2021 16:26:51 +0200 Subject: [PATCH 075/317] revert trigger different repo --- .github/workflows/Tasmota_build_development.yml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/.github/workflows/Tasmota_build_development.yml b/.github/workflows/Tasmota_build_development.yml index 256ebfb72..f36fec5a8 100644 --- a/.github/workflows/Tasmota_build_development.yml +++ b/.github/workflows/Tasmota_build_development.yml @@ -1351,17 +1351,3 @@ jobs: destination_repo: 'arendst/Tasmota-firmware' user_email: 'github-actions@github.com' user_name: 'github-actions' - - name: Creat trigger.txt - run: | - echo ${GITHUB_SHA} &> trigger.txt - echo "$( Date: Fri, 27 Aug 2021 16:39:18 +0200 Subject: [PATCH 076/317] Add Sonoff L1 MusicSync off when a color change is requested Add Sonoff L1 MusicSync off when a color change is requested (#12930) --- tasmota/xlgt_05_sonoff_l1.ino | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index b8b246b70..6be1205f2 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -286,6 +286,16 @@ bool SnfL1SetChannels(void) { return true; } +bool SnfL1SetChannelsFromFunc(void) { + static bool first_call = true; + if (first_call) { + first_call = false; // Allow MusicSync at init time + } else { + Settings->sbflag1.sonoff_l1_music_sync = 0; // Disable MusicSync on user color change + } + return SnfL1SetChannels(); +} + bool SnfL1ModuleSelected(void) { if (SONOFF_L1 == TasmotaGlobal.module_type) { if (PinUsed(GPIO_RXD) && PinUsed(GPIO_TXD)) { @@ -345,7 +355,7 @@ bool Xlgt05(uint8_t function) result = SnfL1SerialInput(); break; case FUNC_SET_CHANNELS: - result = SnfL1SetChannels(); + result = SnfL1SetChannelsFromFunc(); break; case FUNC_MODULE_INIT: result = SnfL1ModuleSelected(); From db50783dd3b5c6cc659f22015dcce0215e880695 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 27 Aug 2021 17:14:33 +0200 Subject: [PATCH 077/317] try trigger #2 --- .github/workflows/Tasmota_build_development.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/Tasmota_build_development.yml b/.github/workflows/Tasmota_build_development.yml index f36fec5a8..256ebfb72 100644 --- a/.github/workflows/Tasmota_build_development.yml +++ b/.github/workflows/Tasmota_build_development.yml @@ -1351,3 +1351,17 @@ jobs: destination_repo: 'arendst/Tasmota-firmware' user_email: 'github-actions@github.com' user_name: 'github-actions' + - name: Creat trigger.txt + run: | + echo ${GITHUB_SHA} &> trigger.txt + echo "$( Date: Fri, 27 Aug 2021 19:15:25 +0200 Subject: [PATCH 078/317] Berry fix bytecode load/save for static class members --- lib/libesp32/Berry/src/be_bytecode.c | 59 ++++++++++++++++++---------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/lib/libesp32/Berry/src/be_bytecode.c b/lib/libesp32/Berry/src/be_bytecode.c index 0e0cbf723..521317e63 100644 --- a/lib/libesp32/Berry/src/be_bytecode.c +++ b/lib/libesp32/Berry/src/be_bytecode.c @@ -137,14 +137,21 @@ static bstring** save_members(bvm *vm, void *fp, bclass *c, int nvar) } else { /* save method's name and function */ bproto *proto; bvalue *value = &node->value; - be_assert(var_isclosure(value) || var_isproto(value)); + be_assert(var_isclosure(value) || var_isproto(value) || var_isnil(value)); save_string(fp, var_tostr(&node->key)); /* save method name */ if (var_isproto(value)) { /* the method is a prototype */ proto = var_toobj(value); - } else { /* the method is a closure */ - proto = cast(bclosure *, var_toobj(value))->proto; + save_proto(vm, fp, proto); /* only save prototype */ + } else if (var_isclosure(value)) { /* the method is a closure */ + proto = cast(bclosure *, var_toobj(value))->proto; + save_proto(vm, fp, proto); /* only save prototype */ + } else if (var_isnil(value)) { + /* this is a static member (nil default) */ + save_word(fp, 0); /* store a zero byte that will be seen as a zero length method name which is invalid */ + } else { + be_raise(vm, "internal_error", "unsupported member in class"); + return NULL; /* should never be executed */ } - save_proto(vm, fp, proto); /* only save prototype */ } } return vars; @@ -286,7 +293,7 @@ void be_bytecode_save(bvm *vm, const char *filename, bproto *proto) #endif /* BE_USE_BYTECODE_SAVER */ #if BE_USE_BYTECODE_LOADER -static void load_proto(bvm *vm, void *fp, bproto **proto, int info, int version); +static bbool load_proto(bvm *vm, void *fp, bproto **proto, int info, int version); static uint8_t load_byte(void *fp) { @@ -416,8 +423,13 @@ static void load_class(bvm *vm, void *fp, bvalue *v, int version) value = vm->top; var_setproto(value, NULL); be_incrtop(vm); - load_proto(vm, fp, (bproto**)&var_toobj(value), -3, version); - be_method_bind(vm, c, name, var_toobj(value)); + if (load_proto(vm, fp, (bproto**)&var_toobj(value), -3, version)) { + /* actual method */ + be_method_bind(vm, c, name, var_toobj(value)); + } else { + /* no proto, static member set to nil */ + be_member_bind(vm, c, name, bfalse); + } be_stackpop(vm, 2); /* pop the cached string and proto */ } for (count = 0; count < nvar; ++count) { /* load member-variable table */ @@ -509,21 +521,28 @@ static void load_upvals(bvm *vm, void *fp, bproto *proto) } } -static void load_proto(bvm *vm, void *fp, bproto **proto, int info, int version) +static bbool load_proto(bvm *vm, void *fp, bproto **proto, int info, int version) { - *proto = be_newproto(vm); - (*proto)->name = load_string(vm, fp); - (*proto)->source = load_string(vm, fp); - (*proto)->argc = load_byte(fp); - (*proto)->nstack = load_byte(fp); - if (version > 1) { - (*proto)->varg = load_byte(fp); - load_byte(fp); /* discard reserved byte */ + /* first load the name */ + /* if empty, it's a static member so don't allocate an actual proto */ + bstring *name = load_string(vm, fp); + if (str_len(name)) { + *proto = be_newproto(vm); + (*proto)->name = name; + (*proto)->source = load_string(vm, fp); + (*proto)->argc = load_byte(fp); + (*proto)->nstack = load_byte(fp); + if (version > 1) { + (*proto)->varg = load_byte(fp); + load_byte(fp); /* discard reserved byte */ + } + load_bytecode(vm, fp, *proto, info); + load_constant(vm, fp, *proto, version); + load_proto_table(vm, fp, *proto, version); + load_upvals(vm, fp, *proto); + return btrue; } - load_bytecode(vm, fp, *proto, info); - load_constant(vm, fp, *proto, version); - load_proto_table(vm, fp, *proto, version); - load_upvals(vm, fp, *proto); + return bfalse; /* no proto read */ } void load_global_info(bvm *vm, void *fp) From bf9467d7b5210be261e057994056764c9c437d18 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 27 Aug 2021 23:23:39 +0200 Subject: [PATCH 079/317] Create copycat_master.yml --- .github/workflows/copycat_master.yml | 37 ++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/copycat_master.yml diff --git a/.github/workflows/copycat_master.yml b/.github/workflows/copycat_master.yml new file mode 100644 index 000000000..0f8c26ebf --- /dev/null +++ b/.github/workflows/copycat_master.yml @@ -0,0 +1,37 @@ +name: Copy_firmware_master + +on: + push: + +copycat: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: copycat tasmota + uses: andstor/copycat-action@v3 + with: + personal_token: ${{ secrets.API_TOKEN_GITHUB }} + src_path: release-firmware/tasmota/. + src_branch: master + dst_path: firmware/release + dst_owner: tasmota + dst_branch: main + dst_repo_name: install + username: workflow + commit_message: "Update from official release" + copycat32: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: copycat tasmota32 + uses: andstor/copycat-action@v3 + with: + personal_token: ${{ secrets.API_TOKEN_GITHUB }} + src_path: release-firmware/tasmota32/. + src_branch: main + dst_path: firmware/release + dst_owner: tasmota + dst_branch: main + dst_repo_name: install + username: workflow + commit_message: "Update from official release" From 1e3427ad89653b658c721aa6ef773c2f9f75a129 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 27 Aug 2021 23:27:24 +0200 Subject: [PATCH 080/317] Update copycat_master.yml --- .github/workflows/copycat_master.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copycat_master.yml b/.github/workflows/copycat_master.yml index 0f8c26ebf..1bdb644dc 100644 --- a/.github/workflows/copycat_master.yml +++ b/.github/workflows/copycat_master.yml @@ -2,8 +2,8 @@ name: Copy_firmware_master on: push: - -copycat: +jobs: + copycat: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -19,6 +19,7 @@ copycat: dst_repo_name: install username: workflow commit_message: "Update from official release" + copycat32: runs-on: ubuntu-latest steps: From 61a85b842d98494e81206dd6c407961d1f7ce9dd Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 27 Aug 2021 23:29:11 +0200 Subject: [PATCH 081/317] Update copycat_master.yml --- .github/workflows/copycat_master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/copycat_master.yml b/.github/workflows/copycat_master.yml index 1bdb644dc..60990c867 100644 --- a/.github/workflows/copycat_master.yml +++ b/.github/workflows/copycat_master.yml @@ -29,7 +29,7 @@ jobs: with: personal_token: ${{ secrets.API_TOKEN_GITHUB }} src_path: release-firmware/tasmota32/. - src_branch: main + src_branch: master dst_path: firmware/release dst_owner: tasmota dst_branch: main From 554a155fd232777c8ad35c04f5998cd6ceb01258 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 27 Aug 2021 23:31:56 +0200 Subject: [PATCH 082/317] Rename copycat_master.yml to copycat_master.yml.off --- .github/workflows/{copycat_master.yml => copycat_master.yml.off} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{copycat_master.yml => copycat_master.yml.off} (100%) diff --git a/.github/workflows/copycat_master.yml b/.github/workflows/copycat_master.yml.off similarity index 100% rename from .github/workflows/copycat_master.yml rename to .github/workflows/copycat_master.yml.off From d40b055f9ee602e79777c4d9733acb15902664e7 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 28 Aug 2021 12:04:25 +0200 Subject: [PATCH 083/317] Update and rename copycat_master.yml.off to copycat_master.yml --- .../workflows/{copycat_master.yml.off => copycat_master.yml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{copycat_master.yml.off => copycat_master.yml} (92%) diff --git a/.github/workflows/copycat_master.yml.off b/.github/workflows/copycat_master.yml similarity index 92% rename from .github/workflows/copycat_master.yml.off rename to .github/workflows/copycat_master.yml index 60990c867..64c443d16 100644 --- a/.github/workflows/copycat_master.yml.off +++ b/.github/workflows/copycat_master.yml @@ -13,7 +13,7 @@ jobs: personal_token: ${{ secrets.API_TOKEN_GITHUB }} src_path: release-firmware/tasmota/. src_branch: master - dst_path: firmware/release + dst_path: firmware/release/. dst_owner: tasmota dst_branch: main dst_repo_name: install @@ -30,7 +30,7 @@ jobs: personal_token: ${{ secrets.API_TOKEN_GITHUB }} src_path: release-firmware/tasmota32/. src_branch: master - dst_path: firmware/release + dst_path: firmware/release/. dst_owner: tasmota dst_branch: main dst_repo_name: install From 447d544d534e3d84e4275082423a9e5432385b80 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 28 Aug 2021 12:07:53 +0200 Subject: [PATCH 084/317] Update copycat_master.yml --- .github/workflows/copycat_master.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/copycat_master.yml b/.github/workflows/copycat_master.yml index 64c443d16..6dda1ebae 100644 --- a/.github/workflows/copycat_master.yml +++ b/.github/workflows/copycat_master.yml @@ -13,7 +13,7 @@ jobs: personal_token: ${{ secrets.API_TOKEN_GITHUB }} src_path: release-firmware/tasmota/. src_branch: master - dst_path: firmware/release/. + dst_path: ./firmware/release/. dst_owner: tasmota dst_branch: main dst_repo_name: install @@ -30,7 +30,7 @@ jobs: personal_token: ${{ secrets.API_TOKEN_GITHUB }} src_path: release-firmware/tasmota32/. src_branch: master - dst_path: firmware/release/. + dst_path: ./firmware/release/. dst_owner: tasmota dst_branch: main dst_repo_name: install From 6444627997d40987d88303d372d1db843565f75b Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 28 Aug 2021 12:10:31 +0200 Subject: [PATCH 085/317] Rename copycat_master.yml to copycat_master.yml.off --- .github/workflows/{copycat_master.yml => copycat_master.yml.off} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{copycat_master.yml => copycat_master.yml.off} (100%) diff --git a/.github/workflows/copycat_master.yml b/.github/workflows/copycat_master.yml.off similarity index 100% rename from .github/workflows/copycat_master.yml rename to .github/workflows/copycat_master.yml.off From f3ede20cbb04607958abcc49c6a539e0559473a1 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 28 Aug 2021 12:15:01 +0200 Subject: [PATCH 086/317] Delete copycat_master.yml.off --- .github/workflows/copycat_master.yml.off | 38 ------------------------ 1 file changed, 38 deletions(-) delete mode 100644 .github/workflows/copycat_master.yml.off diff --git a/.github/workflows/copycat_master.yml.off b/.github/workflows/copycat_master.yml.off deleted file mode 100644 index 6dda1ebae..000000000 --- a/.github/workflows/copycat_master.yml.off +++ /dev/null @@ -1,38 +0,0 @@ -name: Copy_firmware_master - -on: - push: -jobs: - copycat: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: copycat tasmota - uses: andstor/copycat-action@v3 - with: - personal_token: ${{ secrets.API_TOKEN_GITHUB }} - src_path: release-firmware/tasmota/. - src_branch: master - dst_path: ./firmware/release/. - dst_owner: tasmota - dst_branch: main - dst_repo_name: install - username: workflow - commit_message: "Update from official release" - - copycat32: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: copycat tasmota32 - uses: andstor/copycat-action@v3 - with: - personal_token: ${{ secrets.API_TOKEN_GITHUB }} - src_path: release-firmware/tasmota32/. - src_branch: master - dst_path: ./firmware/release/. - dst_owner: tasmota - dst_branch: main - dst_repo_name: install - username: workflow - commit_message: "Update from official release" From 6839a7ef8a55595b98a7a3d3fe9ba8eb6c0ed66c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 28 Aug 2021 13:30:39 +0200 Subject: [PATCH 087/317] reduce checkout time for trigger.txt --- .github/workflows/Tasmota_build_development.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Tasmota_build_development.yml b/.github/workflows/Tasmota_build_development.yml index 256ebfb72..bed9c00a2 100644 --- a/.github/workflows/Tasmota_build_development.yml +++ b/.github/workflows/Tasmota_build_development.yml @@ -1362,6 +1362,6 @@ jobs: with: source_file: 'trigger.txt' destination_repo: 'Jason2866/Tasmota-specials' - destination_branch: 'special_builder' + destination_branch: 'start_build' user_email: 'github-actions@github.com' user_name: 'github-actions' From e3f39bc1b47f28fe6d5c375e8d0d415a238adde1 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 28 Aug 2021 16:55:26 +0200 Subject: [PATCH 088/317] Update Tasmota_build_development.yml --- .github/workflows/Tasmota_build_development.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Tasmota_build_development.yml b/.github/workflows/Tasmota_build_development.yml index bed9c00a2..63114faf0 100644 --- a/.github/workflows/Tasmota_build_development.yml +++ b/.github/workflows/Tasmota_build_development.yml @@ -1355,13 +1355,13 @@ jobs: run: | echo ${GITHUB_SHA} &> trigger.txt echo "$( Date: Sat, 28 Aug 2021 16:57:43 +0200 Subject: [PATCH 089/317] Update Tasmota_build_master.yml --- .github/workflows/Tasmota_build_master.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/Tasmota_build_master.yml b/.github/workflows/Tasmota_build_master.yml index 5bc79c06d..0e13d2d63 100644 --- a/.github/workflows/Tasmota_build_master.yml +++ b/.github/workflows/Tasmota_build_master.yml @@ -1358,3 +1358,17 @@ jobs: destination_repo: 'arendst/Tasmota-firmware' user_email: 'github-actions@github.com' user_name: 'github-actions' + - name: Creat trigger.txt + run: | + echo ${GITHUB_SHA} &> trigger.txt + echo "$( Date: Sat, 28 Aug 2021 15:02:06 -0300 Subject: [PATCH 090/317] Fix compilation if undef USE_LIGHT and def USE_HOME_ASSISTANT --- tasmota/xdrv_12_home_assistant.ino | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index 5fb759f15..38ce11a41 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -422,7 +422,9 @@ void HAssAnnounceRelayLight(void) char stemp3[TOPSZ]; char unique_id[30]; +#ifdef USE_LIGHT bool LightControl = light_controller.isCTRGBLinked(); // SetOption37 - Color remapping for led channels, also provides an option for allowing independent handling of RGB and white channels +#endif //USE_LIGHT bool PwmMulti = Settings->flag3.pwm_multi_channels; // SetOption68 - Multi-channel PWM instead of a single light bool is_topic_light = false; // Switch HAss domain between Lights and Relays bool ind_light = false; // Controls Separated Lights when SetOption37 is >= 128 @@ -448,14 +450,15 @@ void HAssAnnounceRelayLight(void) if (TUYA_DIMMER == TasmotaGlobal.module_type || SK03_TUYA == TasmotaGlobal.module_type) { TuyaMod = true; } #endif //ESP8266 +#ifdef USE_LIGHT // If there is a special Light to be enabled and managed with SetOption68 or SetOption37 >= 128, Discovery calculates the maximum number of entities to be generated in advance - if (PwmMulti) { max_lights = Light.subtype; } if (!LightControl) { ind_light = true; if (!PwmMulti) { max_lights = 2;} } +#endif //USE_LIGHT #ifdef USE_SHUTTER if (Settings->flag3.shutter_mode) { @@ -500,9 +503,11 @@ void HAssAnnounceRelayLight(void) if (bitRead(shutter_mask, i-1)) { // suppress shutter relays +#ifdef USE_LIGHT } else if ((i < Light.device) && !RelayX) { err_flag = true; AddLog(LOG_LEVEL_ERROR, PSTR("%s"), kHAssError2); +#endif //USE_LIGHT } else { if (Settings->flag.hass_discovery && (RelayX || (Light.device > 0) && (max_lights > 0)) && !err_flag ) { // SetOption19 - Control Home Assistant automatic discovery (See SetOption59) From c09a23d87501673ae2ce04eebccfa23a49f5944b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 15:13:52 -0300 Subject: [PATCH 091/317] Add requirements for PWM DIMMER and COUNTER --- tasmota/tasmota_configurations.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index bdcb005cc..e65a70d62 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -982,6 +982,14 @@ #define USE_EMULATION #endif +#ifdef USE_COUNTER +#define USE_LIGHT +#endif + +#ifdef USE_PWM_DIMMER +#define USE_LIGHT +#endif + // Convert legacy slave to client #ifdef USE_TASMOTA_SLAVE #define USE_TASMOTA_CLIENT From 868edc296ba900db8a050b6cbbe9d1b145dbb1b9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 15:15:22 -0300 Subject: [PATCH 092/317] Add requirement for PWM DIMMER --- tasmota/xdrv_35_pwm_dimmer.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdrv_35_pwm_dimmer.ino b/tasmota/xdrv_35_pwm_dimmer.ino index 6bcc3a28b..83f030c71 100644 --- a/tasmota/xdrv_35_pwm_dimmer.ino +++ b/tasmota/xdrv_35_pwm_dimmer.ino @@ -18,6 +18,7 @@ */ #ifdef USE_PWM_DIMMER +#ifdef USE_LIGHT /*********************************************************************************************\ * Support for Martin Jerry/acenx/Tessan/NTONPOWER SD0x PWM dimmer switches. The brightness of @@ -886,4 +887,5 @@ bool Xdrv35(uint8_t function) return result; } +#endif // USE_LIGHT #endif // USE_PWM_DIMMER From b6e8712d3b0e8fb3b8e59477ad7130f262780d96 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 17:17:52 -0300 Subject: [PATCH 093/317] Moving Key USE_AC_ZERO_CROSS_DIMMER to my_user_config.h --- tasmota/xsns_01_counter.ino | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/tasmota/xsns_01_counter.ino b/tasmota/xsns_01_counter.ino index ba0758290..7bac7f9d3 100644 --- a/tasmota/xsns_01_counter.ino +++ b/tasmota/xsns_01_counter.ino @@ -24,8 +24,6 @@ #define XSNS_01 1 -#define USE_AC_ZERO_CROSS_DIMMER 1 - #define D_PRFX_COUNTER "Counter" #define D_CMND_COUNTERTYPE "Type" #define D_CMND_COUNTERDEBOUNCE "Debounce" @@ -59,7 +57,7 @@ struct AC_ZERO_CROSS_DIMMER { uint32_t lastCycleCount = 0; uint32_t currentSteps = 100; } ac_zero_cross_dimmer; -#endif +#endif //USE_AC_ZERO_CROSS_DIMMER void IRAM_ATTR CounterIsrArg(void *arg) { uint32_t index = *static_cast(arg); @@ -101,7 +99,7 @@ void IRAM_ATTR CounterIsrArg(void *arg) { } ac_zero_cross_dimmer.lastCycleCount = ac_zero_cross_dimmer.currentCycleCount; } -#endif +#endif //USE_AC_ZERO_CROSS_DIMMER return; } } @@ -152,7 +150,7 @@ void CounterInit(void) if (PinUsed(GPIO_CNTR1, i)) { #ifdef USE_AC_ZERO_CROSS_DIMMER ac_zero_cross_dimmer.tobe_cycle_timeClockCycles = microsecondsToClockCycles(1000000 / Settings->pwm_frequency); -#endif +#endif //USE_AC_ZERO_CROSS_DIMMER Counter.any_counter = true; pinMode(Pin(GPIO_CNTR1, i), bitRead(Counter.no_pullup, i) ? INPUT : INPUT_PULLUP); if ((0 == Settings->pulse_counter_debounce_low) && (0 == Settings->pulse_counter_debounce_high) && !Settings->flag4.zerocross_dimmer) { @@ -269,7 +267,7 @@ void SyncACDimmer(void) } } } -#endif +#endif //USE_AC_ZERO_CROSS_DIMMER /*********************************************************************************************\ * Commands @@ -349,7 +347,7 @@ bool Xsns01(uint8_t function) case FUNC_LOOP: SyncACDimmer(); break; -#endif +#endif //USE_AC_ZERO_CROSS_DIMMER #ifdef USE_WEBSERVER case FUNC_WEB_SENSOR: CounterShow(0); From 09a7d0b4a5b5fe31db1e8b0186c6b49e21a6f79e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 17:20:10 -0300 Subject: [PATCH 094/317] Fix compilation if undef USE_LIGHT and def USE_HOME_ASSISTANT --- tasmota/xdrv_12_home_assistant.ino | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_12_home_assistant.ino b/tasmota/xdrv_12_home_assistant.ino index 38ce11a41..ddfb29923 100644 --- a/tasmota/xdrv_12_home_assistant.ino +++ b/tasmota/xdrv_12_home_assistant.ino @@ -507,9 +507,12 @@ void HAssAnnounceRelayLight(void) } else if ((i < Light.device) && !RelayX) { err_flag = true; AddLog(LOG_LEVEL_ERROR, PSTR("%s"), kHAssError2); -#endif //USE_LIGHT } else { if (Settings->flag.hass_discovery && (RelayX || (Light.device > 0) && (max_lights > 0)) && !err_flag ) +#else + } else { + if (Settings->flag.hass_discovery && RelayX ) +#endif //USE_LIGHT { // SetOption19 - Control Home Assistant automatic discovery (See SetOption59) char name[TOPSZ]; // friendlyname(33) + " " + index char value_template[33]; From ee27476890690319fadc462851dffcfa73605c64 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 17:23:25 -0300 Subject: [PATCH 095/317] Satisfy requirements for features that require USE_LIGHT --- tasmota/tasmota_configurations.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index e65a70d62..2bb06a2ea 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -506,7 +506,6 @@ //#undef USE_WEBSERVER // Disable Webserver #undef USE_ENHANCED_GUI_WIFI_SCAN // Disable wifi scan output with BSSID (+0k5 code) //#undef USE_WEBSEND_RESPONSE // Disable command WebSend response message (+1k code) -#define USE_EMULATION // Enable Hue emulation #define USE_EMULATION_HUE // Enable Hue Bridge emulation for Alexa (+14k code, +2k mem common) #undef USE_EMULATION_WEMO // Disable Belkin WeMo emulation for Alexa (+6k code, +2k mem common) #undef USE_CUSTOM // Disable Custom features @@ -981,8 +980,12 @@ #ifdef USE_EMULATION_WEMO #define USE_EMULATION #endif +#ifdef USE_EMULATION +#define USE_LIGHT +#endif -#ifdef USE_COUNTER +#ifdef USE_AC_ZERO_CROSS_DIMMER +#define USE_COUNTER #define USE_LIGHT #endif @@ -990,6 +993,14 @@ #define USE_LIGHT #endif +#ifdef USE_TUYA_MCU +#define USE_LIGHT +#endif + +#ifdef USE_ARILUX_RF +#define USE_LIGHT +#endif + // Convert legacy slave to client #ifdef USE_TASMOTA_SLAVE #define USE_TASMOTA_CLIENT From d8df7d7f17acbfe0662113ef7d7895fce4155289 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 17:26:14 -0300 Subject: [PATCH 096/317] Add USE_AC_ZERO_CROSS_DIMMER Key to my_user_config --- tasmota/my_user_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 9c85c7549..954ba54c2 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -321,6 +321,7 @@ #define LIGHT_VIRTUAL_CT false // [SetOption106] Virtual CT - Creates a virtual White ColorTemp for RGBW lights #define LIGHT_VIRTUAL_CT_CW false // [SetOption107] Virtual CT Channel - signals whether the hardware white is cold CW (true) or warm WW (false) #define LIGHT_VIRTUAL_CT_POINTS 3 // Number of reference points for Virtual CT (min 2, default 3) +#define USE_AC_ZERO_CROSS_DIMMER // Requires USE_COUNTER and USE_LIGHT // -- Energy -------------------------------------- #define ENERGY_VOLTAGE_ALWAYS false // [SetOption21] Enable show voltage even if powered off From 506342a0e1fde958ebf0a65e7e9dd9637162fe65 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 18:06:02 -0300 Subject: [PATCH 097/317] Disable AC DIMMER for Minimal Firmware --- tasmota/tasmota_configurations.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 2bb06a2ea..f0d71750e 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -898,6 +898,7 @@ #undef USE_PROMETHEUS // Disable support for https://prometheus.io/ metrics exporting over HTTP /metrics endpoint #undef DEBUG_THEO // Disable debug code #undef USE_DEBUG_DRIVER // Disable debug code +#undef USE_AC_ZERO_CROSS_DIMMER // Disable support for AC_ZERO_CROSS_DIMMER #endif // FIRMWARE_MINIMAL #endif // ifndef FIRMWARE_MINICUSTOM From 5eedf7a6909949a15135b201df54faf4a4cbad71 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 18:18:53 -0300 Subject: [PATCH 098/317] Disable AC_ZERO_CROSS_DIMMER for Tasmota-Lite --- tasmota/tasmota_configurations.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index f0d71750e..e00ed0c22 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -754,6 +754,7 @@ #undef USE_THERMOSTAT // Disable support for Thermostat #undef DEBUG_THEO // Disable debug code #undef USE_DEBUG_DRIVER // Disable debug code +#undef USE_AC_ZERO_CROSS_DIMMER // Disable support for AC_ZERO_CROSS_DIMMER #endif // FIRMWARE_LITE From 9cdeab19d5201db1d2fe547371e3e1752842fcf5 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 28 Aug 2021 21:20:00 -0300 Subject: [PATCH 099/317] Update BUILDS.md --- BUILDS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILDS.md b/BUILDS.md index cbf0198f7..5939ba1d6 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -55,6 +55,7 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display | USE_KEELOQ | - | - | - / - | - | - | - | - | | USE_SONOFF_D1 | - | - | x / - | x | - | - | - | | USE_SHELLY_DIMMER | - | - | x / - | - | - | - | - | +| USE_AC_ZERO_CROSS_DIMMER | - | - | x / x | x | x | x | x | | | | | | | | | | | Feature or Sensor | m | l | t | k | s | i | d | Remarks | USE_LIGHT | - | x | x / x | x | x | x | x | From b35072c1e15c1aef3ad0a94a328027fa5c318135 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 29 Aug 2021 16:58:20 +0200 Subject: [PATCH 100/317] Some corrections --- tasmota/language/de_DE.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index fdee2f6c3..2e94554d1 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v9.5.0.3 + * Updated until v9.5.0.7 \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -234,8 +234,8 @@ #define D_SYSLOG_HOST_NOT_FOUND "Syslog-Host nicht gefunden" // settings.ino -#define D_SAVED_TO_FLASH_AT "in Flash gespeichert am" -#define D_LOADED_FROM_FLASH_AT "aus Flash geladen am" +#define D_SAVED_TO_FLASH_AT "in Flash gespeichert an" +#define D_LOADED_FROM_FLASH_AT "aus Flash geladen von" #define D_USE_DEFAULTS "Standard verwenden" #define D_ERASED_SECTOR "gelöschter Sektor" @@ -330,7 +330,7 @@ #define D_MQTT_TLS_ENABLE "MQTT TLS" #define D_HTTP_API "HTTP API" #define D_HTTP_API_ENABLE "HTTP API aktivieren" -#define D_FRIENDLY_NAME "Name [friendly name]" +#define D_FRIENDLY_NAME "Name [Friendly Name]" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Hue Bridge" #define D_SINGLE_DEVICE "Einzelnes Gerät" @@ -493,19 +493,19 @@ #define D_ZIGBEE_UNKNWON_ATTRIBUTE "Unbekannter Attribut Name (ignoriert): %s" #define D_ZIGBEE_TOO_MANY_CLUSTERS "Nur eine Cluster id pro Kommando" #define D_ZIGBEE_WRONG_DELIMITER "Falscher Delimeter für Payload" -#define D_ZIGBEE_UNRECOGNIZED_COMMAND "Unerkanntes zigbee Kommando: %s" +#define D_ZIGBEE_UNRECOGNIZED_COMMAND "Unerkanntes Zigbee Kommando: %s" #define D_ZIGBEE_TOO_MANY_COMMANDS "Nur 1 Kommando zulässig (%d)" #define D_ZIGBEE_NO_ATTRIBUTE "Kein Attribut in der Liste" #define D_ZIGBEE_UNSUPPORTED_ATTRIBUTE_TYPE "Nicht unterstützter Attribut Typ" #define D_ZIGBEE_JSON_REQUIRED "Konfiguration muss JSON basiert sein" #define D_ZIGBEE_RESET_1_OR_2 "1 oder 2 für Reset" -#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden auf Adresse" +#define D_ZIGBEE_EEPROM_FOUND_AT_ADDRESS "ZBBridge EEPROM gefunden an Adresse" #define D_ZIGBEE_RANDOMIZING_ZBCONFIG "Zufällige Zigbee Parameter erstellt, Überprüfung mit 'ZbConfig'" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie heute" #define D_ENERGY_YESTERDAY "Energie gestern" -#define D_ENERGY_TOTAL "Energie insgesamt" +#define D_ENERGY_TOTAL "Energie gesamt" // xdrv_27_shutter.ino #define D_OPEN "Öffnen" @@ -533,7 +533,7 @@ #define D_CHECKSUM_FAILURE "Prüfsummen-Fehler" // xsns_07_sht1x.ino -#define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor hat ACK-Befehl nicht ausgeführt" +#define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor hat Befehl nicht ausgeführt" #define D_SHT1X_FOUND "SHT1X gefunden" // xsns_18_pms5003.ino @@ -945,9 +945,9 @@ #define D_FS_SIZE "Größe" #define D_FS_FREE "Frei" #define D_NEW_FILE "neue-datei.txt" -#define D_CREATE_NEW_FILE "Neue Datei erstellen und bearbeiten" +#define D_CREATE_NEW_FILE "Datei erstellen und bearbeiten" #define D_EDIT_FILE "Datei bearbeiten" -#define D_CONFIRM_FILE_DEL "Löschen der Datei bestätigen" +#define D_CONFIRM_FILE_DEL "Datei löschen bestätigen" //xsns_67_as3935.ino #define D_AS3935_GAIN "Umgebung:" @@ -1017,7 +1017,7 @@ #define D_FP_INVALIDIMAGE "Abbild ungültig" // 0x15 Failed to generate image because of lac of valid primary image #define D_FP_FLASHERR "Flash Schreibfehler" // 0x18 Error when writing flash #define D_FP_INVALIDREG "Ungültige ID-Nummer" // 0x1A Invalid register number -#define D_FP_ADDRCODE "Addresse" // 0x20 Address code +#define D_FP_ADDRCODE "Adresse" // 0x20 Address code #define D_FP_PASSVERIFY "Übereinstimmung" // 0x21 Verify the fingerprint passed #define D_FP_UNKNOWNERROR "Fehler" // Any other error From 1d5fd6f20a19b487510e9ef4abb5b15db1dbb61a Mon Sep 17 00:00:00 2001 From: Seestern93 <75477504+Seestern93@users.noreply.github.com> Date: Sun, 29 Aug 2021 23:03:14 +0200 Subject: [PATCH 101/317] SwitchState10 Add Switch#State=10 to SwitchMode11&12; Revert changes done by arendst (Switchmode17&18) as new proposal for integrating POWER_DELAYED into existing switch modes 11 & 12 --- tasmota/settings.h | 2 +- tasmota/support_switch.ino | 42 ++++++++++++------------------------- tasmota/support_tasmota.ino | 1 + tasmota/tasmota.h | 3 +-- 4 files changed, 16 insertions(+), 32 deletions(-) diff --git a/tasmota/settings.h b/tasmota/settings.h index 30a665cf0..9fb21e886 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -158,7 +158,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t ds18x20_mean : 1; // bit 12 (v9.3.1.2) - SetOption126 - (DS18x20) Enable arithmetic mean over teleperiod for JSON temperature (1) uint32_t wifi_no_sleep : 1; // bit 13 (v9.5.0.2) - SetOption127 - (Wifi) Keep wifi in no-sleep mode, prevents some occasional unresponsiveness uint32_t disable_referer_chk : 1; // bit 14 (v9.5.0.5) - SetOption128 - (Web) Allow access without referer check - uint32_t switch_dimmer_act_at_rls : 1; // bit 15 (v9.5.0.7) - SetOption129 - (Switch) With Switchmode11 & 12, State#2 is tiggered at push (0, default) or release (1) + uint32_t spare15 : 1; // bit 15 uint32_t spare16 : 1; // bit 16 uint32_t spare17 : 1; // bit 17 uint32_t spare18 : 1; // bit 18 diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index 4b1688c72..0c8d1e15a 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -37,7 +37,7 @@ const uint8_t AC_PERIOD = (20 + SWITCH_FAST_PROBE_INTERVAL - 1) / SWITCH_FAST_PR #define POWER_NONE 99 const char kSwitchPressStates[] PROGMEM = - "||||POWER_INCREMENT|POWER_INV|POWER_CLEAR|POWER_RELEASE|POWER_100|"; + "||||POWER_INCREMENT|POWER_INV|POWER_CLEAR|POWER_RELEASE|POWER_100|POWER_DELAYED"; #include @@ -237,32 +237,20 @@ void SwitchHandler(uint32_t mode) { uint32_t mqtt_action = POWER_NONE; uint32_t switchmode = Settings->switchmode[i]; - bool push_hold_multi_delay = ((PUSHHOLDMULTIDELAY == switchmode) || (PUSHHOLDMULTIDELAY_INV == switchmode)); - if (push_hold_multi_delay) { - switchmode -= (PUSHHOLDMULTIDELAY - PUSHHOLDMULTI); - } - bool push_hold_multi = ((PUSHHOLDMULTI == switchmode) || (PUSHHOLDMULTI_INV == switchmode)); - - if (Switch.hold_timer[i] & ((push_hold_multi) ? SM_TIMER_MASK : SM_NO_TIMER_MASK)) { + if (Switch.hold_timer[i] & (((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)) ? SM_TIMER_MASK: SM_NO_TIMER_MASK)) { Switch.hold_timer[i]--; if ((Switch.hold_timer[i] & SM_TIMER_MASK) == loops_per_second * Settings->param[P_HOLD_TIME] / 25) { - bool do_sendkey = false; - switch (switchmode) { - case PUSHHOLDMULTI: - do_sendkey = (NOT_PRESSED == Switch.last_state[i]); - break; - case PUSHHOLDMULTI_INV: - do_sendkey = (PRESSED == Switch.last_state[i]); - break; - } - if (do_sendkey) { - SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT - } else if (push_hold_multi_delay && ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS)) { - switchflag = POWER_TOGGLE; // Toggle with pushbutton - Switch.hold_timer[i] = 0; + if ((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)){ + if (((switchmode == PUSHHOLDMULTI) & (NOT_PRESSED == Switch.last_state[i])) | ((switchmode == PUSHHOLDMULTI_INV) & (PRESSED == Switch.last_state[i]))) { + SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT + } + else if ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS) { + switchflag = POWER_DELAYED; // Toggle with pushbutton + Switch.hold_timer[i] = 0; + } } } - if (0 == (Switch.hold_timer[i] & ((push_hold_multi) ? SM_TIMER_MASK: SM_NO_TIMER_MASK))) { + if (0 == (Switch.hold_timer[i] & (((switchmode == PUSHHOLDMULTI) | (switchmode == PUSHHOLDMULTI_INV)) ? SM_TIMER_MASK: SM_NO_TIMER_MASK))) { switch (switchmode) { case TOGGLEMULTI: switchflag = POWER_TOGGLE; // Toggle after hold @@ -365,9 +353,7 @@ void SwitchHandler(uint32_t mode) { if ((Switch.hold_timer[i] & SM_TIMER_MASK) > loops_per_second * Settings->param[P_HOLD_TIME] / 25) { if ((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { Switch.hold_timer[i]= SM_FIRST_PRESS; - if (!push_hold_multi_delay) { - switchflag = POWER_TOGGLE; // Toggle with pushbutton - } + switchflag = POWER_TOGGLE; // Toggle with pushbutton } else{ SendKey(KEY_SWITCH, i +1, POWER_100); // Execute command via MQTT @@ -393,9 +379,7 @@ void SwitchHandler(uint32_t mode) { if ((Switch.hold_timer[i] & SM_TIMER_MASK)> loops_per_second * Settings->param[P_HOLD_TIME] / 25) { if ((Switch.hold_timer[i] & ~SM_TIMER_MASK) != SM_SECOND_PRESS) { Switch.hold_timer[i]= SM_FIRST_PRESS; - if (!push_hold_multi_delay) { - switchflag = POWER_TOGGLE; // Toggle with pushbutton - } + switchflag = POWER_TOGGLE; // Toggle with pushbutton } else{ SendKey(KEY_SWITCH, i +1, POWER_100); // Execute command via MQTT diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 22bb3a136..af5a9075e 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -515,6 +515,7 @@ bool SendKey(uint32_t key, uint32_t device, uint32_t state) // state 6 = POWER_CLEAR = button released // state 7 = POWER_RELEASE = button released // state 9 = CLEAR_RETAIN = clear retain flag +// state 10 = POWER_DELAYED = button released delayed char stopic[TOPSZ]; char scommand[CMDSZ]; diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 19f485329..5a475cc9d 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -280,8 +280,7 @@ enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_D enum WifiConfigOptions {WIFI_RESTART, EX_WIFI_SMARTCONFIG, WIFI_MANAGER, EX_WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL, WIFI_MANAGER_RESET_ONLY, MAX_WIFI_OPTION}; enum SwitchModeOptions {TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE, TOGGLEMULTI, - FOLLOWMULTI, FOLLOWMULTI_INV, PUSHHOLDMULTI, PUSHHOLDMULTI_INV, PUSHON, PUSHON_INV, PUSH_IGNORE, PUSHNOTUSED, PUSHHOLDMULTIDELAY, - PUSHHOLDMULTIDELAY_INV, MAX_SWITCH_OPTION}; + FOLLOWMULTI, FOLLOWMULTI_INV, PUSHHOLDMULTI, PUSHHOLDMULTI_INV, PUSHON, PUSHON_INV, PUSH_IGNORE, MAX_SWITCH_OPTION}; enum LedStateOptions {LED_OFF, LED_POWER, LED_MQTTSUB, LED_POWER_MQTTSUB, LED_MQTTPUB, LED_POWER_MQTTPUB, LED_MQTT, LED_POWER_MQTT, MAX_LED_OPTION}; From dbeb82c93e55b6a6268efcefb08e96df35df73c6 Mon Sep 17 00:00:00 2001 From: Seestern93 <75477504+Seestern93@users.noreply.github.com> Date: Sun, 29 Aug 2021 23:24:31 +0200 Subject: [PATCH 102/317] Update tasmota.h Add enum of new state#10 --- tasmota/tasmota.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 5a475cc9d..294384522 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -293,7 +293,7 @@ enum UploadTypes { UPL_TASMOTA = 1, UPL_SETTINGS, UPL_EFM8BB1, UPL_TASMOTACLIENT enum ExecuteCommandPowerOptions { POWER_OFF, POWER_ON, POWER_TOGGLE, POWER_BLINK, POWER_BLINK_STOP, POWER_OFF_NO_STATE = 8, POWER_ON_NO_STATE, POWER_TOGGLE_NO_STATE, POWER_SHOW_STATE = 16 }; -enum SendKeyPowerOptions { POWER_HOLD = 3, POWER_INCREMENT = 4, POWER_INV = 5, POWER_CLEAR = 6, POWER_RELEASE = 7, POWER_100 = 8, CLEAR_RETAIN = 9 }; +enum SendKeyPowerOptions { POWER_HOLD = 3, POWER_INCREMENT = 4, POWER_INV = 5, POWER_CLEAR = 6, POWER_RELEASE = 7, POWER_100 = 8, CLEAR_RETAIN = 9, POWER_DELAYED = 10}; enum SendKeyOptions { KEY_BUTTON, KEY_SWITCH }; enum SendKeyMultiClick { SINGLE = 10, DOUBLE = 11, TRIPLE = 12, QUAD = 13, PENTA = 14}; From d24221da004cd2ff5a50408f0c6f259169b56bcb Mon Sep 17 00:00:00 2001 From: Seestern93 <75477504+Seestern93@users.noreply.github.com> Date: Mon, 30 Aug 2021 00:13:40 +0200 Subject: [PATCH 103/317] Adapt action for state 10 Adapt action to execute switch#state=10 as needed. --- tasmota/support_switch.ino | 5 +++-- tasmota/tasmota.h | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tasmota/support_switch.ino b/tasmota/support_switch.ino index 0c8d1e15a..485f932d9 100644 --- a/tasmota/support_switch.ino +++ b/tasmota/support_switch.ino @@ -37,7 +37,7 @@ const uint8_t AC_PERIOD = (20 + SWITCH_FAST_PROBE_INTERVAL - 1) / SWITCH_FAST_PR #define POWER_NONE 99 const char kSwitchPressStates[] PROGMEM = - "||||POWER_INCREMENT|POWER_INV|POWER_CLEAR|POWER_RELEASE|POWER_100|POWER_DELAYED"; + "||||POWER_INCREMENT|POWER_INV|POWER_CLEAR|POWER_RELEASE|POWER_100||POWER_DELAYED"; #include @@ -245,7 +245,8 @@ void SwitchHandler(uint32_t mode) { SendKey(KEY_SWITCH, i +1, POWER_INCREMENT); // Execute command via MQTT } else if ((Switch.hold_timer[i] & ~SM_TIMER_MASK) == SM_FIRST_PRESS) { - switchflag = POWER_DELAYED; // Toggle with pushbutton + SendKey(KEY_SWITCH, i +1, POWER_DELAYED); // Execute command via MQTT + mqtt_action = POWER_DELAYED; Switch.hold_timer[i] = 0; } } diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 294384522..6adc7ffb3 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -293,7 +293,8 @@ enum UploadTypes { UPL_TASMOTA = 1, UPL_SETTINGS, UPL_EFM8BB1, UPL_TASMOTACLIENT enum ExecuteCommandPowerOptions { POWER_OFF, POWER_ON, POWER_TOGGLE, POWER_BLINK, POWER_BLINK_STOP, POWER_OFF_NO_STATE = 8, POWER_ON_NO_STATE, POWER_TOGGLE_NO_STATE, POWER_SHOW_STATE = 16 }; -enum SendKeyPowerOptions { POWER_HOLD = 3, POWER_INCREMENT = 4, POWER_INV = 5, POWER_CLEAR = 6, POWER_RELEASE = 7, POWER_100 = 8, CLEAR_RETAIN = 9, POWER_DELAYED = 10}; +enum SendKeyPowerOptions { POWER_HOLD = 3, POWER_INCREMENT = 4, POWER_INV = 5, POWER_CLEAR = 6, POWER_RELEASE = 7, + POWER_100 = 8, CLEAR_RETAIN = 9, POWER_DELAYED = 10 }; enum SendKeyOptions { KEY_BUTTON, KEY_SWITCH }; enum SendKeyMultiClick { SINGLE = 10, DOUBLE = 11, TRIPLE = 12, QUAD = 13, PENTA = 14}; From 3a85922a94281e3b7b769b9e9ca63c1707756768 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 30 Aug 2021 10:53:23 +0200 Subject: [PATCH 104/317] Fix Shelly Dimmer 2 Energy calculation Fix Shelly Dimmer Energy calculation (#12815) --- tasmota/xdrv_45_shelly_dimmer.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino index ea9de57e3..32449faa8 100644 --- a/tasmota/xdrv_45_shelly_dimmer.ino +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -536,7 +536,7 @@ bool ShdPacketProcess(void) Energy.current[0] = current; Energy.apparent_power[0] = voltage * current; if ((voltage * current) > wattage) - Energy.reactive_power[0] = sqrt((voltage * current) * (voltage * current) - wattage * wattage); + Energy.reactive_power[0] = sqrtf((voltage * current) * (voltage * current) - wattage * wattage); else Energy.reactive_power[0] = 0; if (wattage > (voltage * current)) @@ -552,7 +552,7 @@ bool ShdPacketProcess(void) #ifdef SHELLY_DIMMER_DEBUG AddLog(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME "Adding %i mWh to todays usage from %lu to %lu"), (int)(kWhused * 10), Shd.last_power_check, Rtc.utc_time); #endif // SHELLY_DIMMER_DEBUG - Energy.kWhtoday += kWhused; + Energy.kWhtoday_delta += kWhused; EnergyUpdateToday(); } Shd.last_power_check = Rtc.utc_time; From 547791058aa805b1b1c42e8be0f2654b5a8e4853 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 30 Aug 2021 11:09:10 +0200 Subject: [PATCH 105/317] Remove redundant code --- tasmota/xdrv_45_shelly_dimmer.ino | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino index 32449faa8..aa8534cf8 100644 --- a/tasmota/xdrv_45_shelly_dimmer.ino +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -534,18 +534,22 @@ bool ShdPacketProcess(void) Energy.active_power[0] = wattage; Energy.voltage[0] = voltage; Energy.current[0] = current; +/* + // This is duplicated code as it is already services by the Energy driver (xdrv_03_energy.ino) Energy.apparent_power[0] = voltage * current; + if ((voltage * current) > wattage) Energy.reactive_power[0] = sqrtf((voltage * current) * (voltage * current) - wattage * wattage); else Energy.reactive_power[0] = 0; + if (wattage > (voltage * current)) Energy.power_factor[0] = 1; else if ((voltage * current) == 0) Energy.power_factor[0] = 0; else Energy.power_factor[0] = wattage / (voltage * current); - +*/ if (Shd.last_power_check > 10 && Energy.active_power[0] > 0) { float kWhused = (float)Energy.active_power[0] * (Rtc.utc_time - Shd.last_power_check) / 36; From e45dbc66e0432bba1497c98a1e2e9906aaa2742c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 30 Aug 2021 18:03:24 +0200 Subject: [PATCH 106/317] Fix Shelly Dimmer 2 Energy usage Fix Shelly Dimmer 2 Energy usage (#12815) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xdrv_45_shelly_dimmer.ino | 44 ++++++++++--------------------- 3 files changed, 16 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b41715cea..9d0feb195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file. - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` (#12960) - Hass and Tasmota discovery prefix topic notifications (#12972) - Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 (#12930) +- Shelly Dimmer 2 Energy usage (#12815) ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 19bace10e..d7c6c6b6e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -171,6 +171,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Discovery fails when using ``%hostname%`` in a topic [#12710](https://github.com/arendst/Tasmota/issues/12710) - ESP32 buzzer in PWM mode exception (#12717)[#12717](https://github.com/arendst/Tasmota/issues/12717) - Neopool communication error [#12813](https://github.com/arendst/Tasmota/issues/12813) +- Shelly Dimmer 2 Energy usage [#12815](https://github.com/arendst/Tasmota/issues/12815) - WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) - Negative power values for ADE7953 based devices like Shelly EM [#12874](https://github.com/arendst/Tasmota/issues/12874) - Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 [#12930](https://github.com/arendst/Tasmota/issues/12930) diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino index aa8534cf8..b96b83d4b 100644 --- a/tasmota/xdrv_45_shelly_dimmer.ino +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -85,22 +85,22 @@ typedef struct struct SHD { + SHD_DIMMER dimmer; uint8_t *buffer = nullptr; // Serial receive buffer int byte_counter = 0; // Index in serial receive buffer - uint16_t req_brightness = 0; - bool req_on = false; - SHD_DIMMER dimmer; +#ifdef USE_ENERGY_SENSOR + uint32_t last_power_check = 0; // Time when last power was checked +#endif // USE_ENERGY_SENSOR uint32_t start_time = 0; - uint8_t counter = 1; // Packet counter + uint16_t req_brightness = 0; uint16_t req_fade_rate = 0; uint16_t leading_edge = 2; // Leading edge = 2 Trailing edge = 1 uint16_t warmup_brightness = 100; // 10% uint16_t warmup_time = 20; // 20ms -#ifdef USE_ENERGY_SENSOR - uint32_t last_power_check = 0; // Time when last power was checked -#endif // USE_ENERGY_SENSOR - bool present = false; + uint8_t counter = 1; // Packet counter uint8_t hw_version = 0; // Dimmer 1 = 1 Dimmer 2 = 2 + bool present = false; + bool req_on = false; } Shd; /*********************************************************************************************\ @@ -534,32 +534,16 @@ bool ShdPacketProcess(void) Energy.active_power[0] = wattage; Energy.voltage[0] = voltage; Energy.current[0] = current; -/* - // This is duplicated code as it is already services by the Energy driver (xdrv_03_energy.ino) - Energy.apparent_power[0] = voltage * current; - - if ((voltage * current) > wattage) - Energy.reactive_power[0] = sqrtf((voltage * current) * (voltage * current) - wattage * wattage); - else - Energy.reactive_power[0] = 0; - - if (wattage > (voltage * current)) - Energy.power_factor[0] = 1; - else if ((voltage * current) == 0) - Energy.power_factor[0] = 0; - else - Energy.power_factor[0] = wattage / (voltage * current); -*/ - if (Shd.last_power_check > 10 && Energy.active_power[0] > 0) - { - float kWhused = (float)Energy.active_power[0] * (Rtc.utc_time - Shd.last_power_check) / 36; + if (Shd.last_power_check > 10 && Energy.active_power[0] > 0) { + uint32_t time_passed = abs(TimePassedSince(Shd.last_power_check)); // Time passed in milliseconds + uint32_t deca_microWh = (uint32_t)(Energy.active_power[0] * time_passed) / 36; #ifdef SHELLY_DIMMER_DEBUG - AddLog(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME "Adding %i mWh to todays usage from %lu to %lu"), (int)(kWhused * 10), Shd.last_power_check, Rtc.utc_time); + AddLog(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME "%4_f W is %u dmWh during %u ms"), &Energy.active_power[0], deca_microWh, time_passed); #endif // SHELLY_DIMMER_DEBUG - Energy.kWhtoday_delta += kWhused; + Energy.kWhtoday_delta += deca_microWh; EnergyUpdateToday(); } - Shd.last_power_check = Rtc.utc_time; + Shd.last_power_check = millis(); #endif // USE_ENERGY_SENSOR #ifdef SHELLY_DIMMER_DEBUG From 66998aa42992c94fc88c7f32be3c75dd4282662b Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 30 Aug 2021 19:10:17 +0200 Subject: [PATCH 107/317] Berry constant search size --- lib/libesp32/Berry/default/berry_conf.h | 10 ++++++++++ lib/libesp32/Berry/src/be_code.c | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/libesp32/Berry/default/berry_conf.h b/lib/libesp32/Berry/default/berry_conf.h index e51ebd1a7..6f0f4a807 100644 --- a/lib/libesp32/Berry/default/berry_conf.h +++ b/lib/libesp32/Berry/default/berry_conf.h @@ -85,6 +85,16 @@ **/ #define BE_STACK_FREE_MIN 20 +/* Macro: BE_CONST_SEARCH_SIZE + * Constants in function are limited to 255. However the compiler + * will look for a maximum of pre-existing constants to avoid + * performance degradation. This may cause the number of constants + * to be higher than required. + * Increase is you need to solidify functions. + * Default: 50 + **/ +#define BE_CONST_SEARCH_SIZE 150 + /* Macro: BE_STACK_FREE_MIN * The short string will hold the hash value when the value is * true. It may be faster but requires more RAM. diff --git a/lib/libesp32/Berry/src/be_code.c b/lib/libesp32/Berry/src/be_code.c index cf1a265b3..b0feff4e1 100644 --- a/lib/libesp32/Berry/src/be_code.c +++ b/lib/libesp32/Berry/src/be_code.c @@ -251,7 +251,7 @@ static int newconst(bfuncinfo *finfo, bvalue *k) } /* Find constant by value and return constant number, or -1 if constant does not exist */ -/* The search is linear and limited to 100 elements for performance reasons */ +/* The search is linear and limited to BE_CONST_SEARCH_SIZE elements for performance reasons */ static int findconst(bfuncinfo *finfo, bexpdesc *e) { int i, count = be_vector_count(&finfo->kvec); @@ -260,7 +260,7 @@ static int findconst(bfuncinfo *finfo, bexpdesc *e) * so only search the constant table for the * previous value. **/ - count = count < 100 ? count : 100; + count = count < BE_CONST_SEARCH_SIZE ? count : BE_CONST_SEARCH_SIZE; for (i = 0; i < count; ++i) { bvalue *k = be_vector_at(&finfo->kvec, i); switch (e->type) { From 06037b10a5cf73473c471264e90b7eaa9f55a42a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 30 Aug 2021 21:01:06 +0200 Subject: [PATCH 108/317] Berry support for Curve 25519 EC crypto --- CHANGELOG.md | 1 + .../bearssl-esp8266/src/ec/ec_c25519_i15.c | 398 ---- .../bearssl-esp8266/src/ec/ec_c25519_m15.c | 1478 +++++++++++++ .../{be_aes_gcm_lib.c => be_crypto_lib.c} | 28 +- lib/libesp32/Berry/default/be_modtab.c | 4 +- .../Berry/default/embedded/test_crypto.be | 30 + lib/libesp32/Berry/generate/be_const_strtab.h | 1299 +++++------ .../Berry/generate/be_const_strtab_def.h | 1919 +++++++++-------- .../generate/be_fixed_be_class_aes_gcm.h | 2 +- .../generate/be_fixed_be_class_ec_c25519.h | 18 + ...aes_gcm.ino => xdrv_52_3_berry_crypto.ino} | 101 +- 11 files changed, 3225 insertions(+), 2053 deletions(-) delete mode 100644 lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c create mode 100644 lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c rename lib/libesp32/Berry/default/{be_aes_gcm_lib.c => be_crypto_lib.c} (59%) create mode 100644 lib/libesp32/Berry/default/embedded/test_crypto.be create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h rename tasmota/{xdrv_52_3_berry_aes_gcm.ino => xdrv_52_3_berry_crypto.ino} (66%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d0feb195..73f80bcf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Support for Hydreon RG-15 Solid State Rain sensor (#12974) - Support for IKEA VINDRIKTNING particle concentration sensor (#12976) - Commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event (#12973) +- Berry support for Curve 25519 EC crypto ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 diff --git a/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c b/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c deleted file mode 100644 index cea8091d8..000000000 --- a/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_i15.c +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Copyright (c) 2017 Thomas Pornin - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "t_inner.h" - -/* - * Parameters for the field: - * - field modulus p = 2^255-19 - * - R^2 mod p (R = 2^(15k) for the smallest k such that R >= p) - */ - -static const uint16_t C255_P[] = { - 0x0110, - 0x7FED, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, - 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, - 0x7FFF -}; - -#define P0I 0x4A1B - -static const uint16_t C255_R2[] = { - 0x0110, - 0x0169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000 -}; - -/* obsolete -#include -#include -static void -print_int_mont(const char *name, const uint16_t *x) -{ - uint16_t y[18]; - unsigned char tmp[32]; - size_t u; - - printf("%s = ", name); - memcpy(y, x, sizeof y); - br_i15_from_monty(y, C255_P, P0I); - br_i15_encode(tmp, sizeof tmp, y); - for (u = 0; u < sizeof tmp; u ++) { - printf("%02X", tmp[u]); - } - printf("\n"); -} -*/ - -static const uint16_t C255_A24[] = { - 0x0110, - 0x45D3, 0x0046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000 -}; - -static const unsigned char GEN[] PROGMEM = { - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -static const unsigned char ORDER[] PROGMEM = { - 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF -}; - -static const unsigned char * -api_generator(int curve, size_t *len) -{ - (void)curve; - *len = 32; - return GEN; -} - -static const unsigned char * -api_order(int curve, size_t *len) -{ - (void)curve; - *len = 32; - return ORDER; -} - -static size_t -api_xoff(int curve, size_t *len) -{ - (void)curve; - *len = 32; - return 0; -} - -static void -cswap(uint16_t *a, uint16_t *b, uint32_t ctl) -{ - int i; - - ctl = -ctl; - for (i = 0; i < 18; i ++) { - uint32_t aw, bw, tw; - - aw = a[i]; - bw = b[i]; - tw = ctl & (aw ^ bw); - a[i] = aw ^ tw; - b[i] = bw ^ tw; - } -} - -static void -c255_add(uint16_t *d, const uint16_t *a, const uint16_t *b) -{ - uint32_t ctl; - uint16_t t[18]; - - memcpy_P(t, a, sizeof t); - ctl = br_i15_add(t, b, 1); - ctl |= NOT(br_i15_sub(t, C255_P, 0)); - br_i15_sub(t, C255_P, ctl); - memcpy(d, t, sizeof t); -} - -static void -c255_sub(uint16_t *d, const uint16_t *a, const uint16_t *b) -{ - uint16_t t[18]; - - memcpy_P(t, a, sizeof t); - br_i15_add(t, C255_P, br_i15_sub(t, b, 1)); - memcpy(d, t, sizeof t); -} - -static void -c255_mul(uint16_t *d, const uint16_t *a, const uint16_t *b) -{ - uint16_t t[18]; - - br_i15_montymul(t, a, b, C255_P, P0I); - memcpy(d, t, sizeof t); -} - -static void -byteswap(unsigned char *G) -{ - int i; - - for (i = 0; i < 16; i ++) { - unsigned char t; - - t = G[i]; - G[i] = G[31 - i]; - G[31 - i] = t; - } -} - -static uint32_t -api_mul(unsigned char *G, size_t Glen, - const unsigned char *kb, size_t kblen, int curve) -{ -#define ILEN (18 * sizeof(uint16_t)) - - /* - * The a[] and b[] arrays have an extra word to allow for - * decoding without using br_i15_decode_reduce(). - */ - uint16_t x1[18], x2[18], x3[18], z2[18], z3[18]; - uint16_t a[19], aa[18], b[19], bb[18]; - uint16_t c[18], d[18], e[18], da[18], cb[18]; - unsigned char k[32]; - uint32_t swap; - int i; - - (void)curve; - - /* - * Points are encoded over exactly 32 bytes. Multipliers must fit - * in 32 bytes as well. - * RFC 7748 mandates that the high bit of the last point byte must - * be ignored/cleared. - */ - if (Glen != 32 || kblen > 32) { - return 0; - } - G[31] &= 0x7F; - - /* - * Byteswap the point encoding, because it uses little-endian, and - * the generic decoding routine uses big-endian. - */ - byteswap(G); - - /* - * Decode the point ('u' coordinate). This should be reduced - * modulo p, but we prefer to avoid the dependency on - * br_i15_decode_reduce(). Instead, we use br_i15_decode_mod() - * with a synthetic modulus of value 2^255 (this must work - * since G was truncated to 255 bits), then use a conditional - * subtraction. We use br_i15_decode_mod() and not - * br_i15_decode(), because the ec_prime_i15 implementation uses - * the former but not the latter. - * br_i15_decode_reduce(a, G, 32, C255_P); - */ - br_i15_zero(b, 0x111); - b[18] = 1; - br_i15_decode_mod(a, G, 32, b); - a[0] = 0x110; - br_i15_sub(a, C255_P, NOT(br_i15_sub(a, C255_P, 0))); - - /* - * Initialise variables x1, x2, z2, x3 and z3. We set all of them - * into Montgomery representation. - */ - br_i15_montymul(x1, a, C255_R2, C255_P, P0I); - memcpy(x3, x1, ILEN); - br_i15_zero(z2, C255_P[0]); - memcpy(x2, z2, ILEN); - x2[1] = 19; - memcpy(z3, x2, ILEN); - - memset(k, 0, (sizeof k) - kblen); - memcpy_P(k + (sizeof k) - kblen, kb, kblen); - k[31] &= 0xF8; - k[0] &= 0x7F; - k[0] |= 0x40; - - /* obsolete - print_int_mont("x1", x1); - */ - - swap = 0; - for (i = 254; i >= 0; i --) { - uint32_t kt; - - kt = (k[31 - (i >> 3)] >> (i & 7)) & 1; - swap ^= kt; - cswap(x2, x3, swap); - cswap(z2, z3, swap); - swap = kt; - - /* obsolete - print_int_mont("x2", x2); - print_int_mont("z2", z2); - print_int_mont("x3", x3); - print_int_mont("z3", z3); - */ - - c255_add(a, x2, z2); - c255_mul(aa, a, a); - c255_sub(b, x2, z2); - c255_mul(bb, b, b); - c255_sub(e, aa, bb); - c255_add(c, x3, z3); - c255_sub(d, x3, z3); - c255_mul(da, d, a); - c255_mul(cb, c, b); - - /* obsolete - print_int_mont("a ", a); - print_int_mont("aa", aa); - print_int_mont("b ", b); - print_int_mont("bb", bb); - print_int_mont("e ", e); - print_int_mont("c ", c); - print_int_mont("d ", d); - print_int_mont("da", da); - print_int_mont("cb", cb); - */ - - c255_add(x3, da, cb); - c255_mul(x3, x3, x3); - c255_sub(z3, da, cb); - c255_mul(z3, z3, z3); - c255_mul(z3, z3, x1); - c255_mul(x2, aa, bb); - c255_mul(z2, C255_A24, e); - c255_add(z2, z2, aa); - c255_mul(z2, e, z2); - - /* obsolete - print_int_mont("x2", x2); - print_int_mont("z2", z2); - print_int_mont("x3", x3); - print_int_mont("z3", z3); - */ - } - cswap(x2, x3, swap); - cswap(z2, z3, swap); - - /* - * Inverse z2 with a modular exponentiation. This is a simple - * square-and-multiply algorithm; we mutualise most non-squarings - * since the exponent contains almost only ones. - */ - memcpy(a, z2, ILEN); - for (i = 0; i < 15; i ++) { - c255_mul(a, a, a); - c255_mul(a, a, z2); - } - memcpy(b, a, ILEN); - for (i = 0; i < 14; i ++) { - int j; - - for (j = 0; j < 16; j ++) { - c255_mul(b, b, b); - } - c255_mul(b, b, a); - } - for (i = 14; i >= 0; i --) { - c255_mul(b, b, b); - if ((0xFFEB >> i) & 1) { - c255_mul(b, z2, b); - } - } - c255_mul(b, x2, b); - - /* - * To avoid a dependency on br_i15_from_monty(), we use a - * Montgomery multiplication with 1. - * memcpy(x2, b, ILEN); - * br_i15_from_monty(x2, C255_P, P0I); - */ - br_i15_zero(a, C255_P[0]); - a[1] = 1; - br_i15_montymul(x2, a, b, C255_P, P0I); - - br_i15_encode(G, 32, x2); - byteswap(G); - return 1; - -#undef ILEN -} - -static size_t -api_mulgen(unsigned char *R, - const unsigned char *x, size_t xlen, int curve) -{ - const unsigned char *G; - size_t Glen; - - G = api_generator(curve, &Glen); - memcpy(R, G, Glen); - api_mul(R, Glen, x, xlen, curve); - return Glen; -} - -static uint32_t -api_muladd(unsigned char *A, const unsigned char *B, size_t len, - const unsigned char *x, size_t xlen, - const unsigned char *y, size_t ylen, int curve) -{ - /* - * We don't implement this method, since it is used for ECDSA - * only, and there is no ECDSA over Curve25519 (which instead - * uses EdDSA). - */ - (void)A; - (void)B; - (void)len; - (void)x; - (void)xlen; - (void)y; - (void)ylen; - (void)curve; - return 0; -} - -/* see bearssl_ec.h */ -const br_ec_impl br_ec_c25519_i15 PROGMEM = { - (uint32_t)0x20000000, - &api_generator, - &api_order, - &api_xoff, - &api_mul, - &api_mulgen, - &api_muladd -}; diff --git a/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c b/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c new file mode 100644 index 000000000..115d51a63 --- /dev/null +++ b/lib/lib_ssl/bearssl-esp8266/src/ec/ec_c25519_m15.c @@ -0,0 +1,1478 @@ +/* + * Copyright (c) 2017 Thomas Pornin + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "t_inner.h" + +/* obsolete +#include +#include +static void +print_int(const char *name, const uint32_t *x) +{ + size_t u; + unsigned char tmp[36]; + + printf("%s = ", name); + for (u = 0; u < 20; u ++) { + if (x[u] > 0x1FFF) { + printf("INVALID:"); + for (u = 0; u < 20; u ++) { + printf(" %04X", x[u]); + } + printf("\n"); + return; + } + } + memset(tmp, 0, sizeof tmp); + for (u = 0; u < 20; u ++) { + uint32_t w; + int j, k; + + w = x[u]; + j = 13 * (int)u; + k = j & 7; + if (k != 0) { + w <<= k; + j -= k; + } + k = j >> 3; + tmp[35 - k] |= (unsigned char)w; + tmp[34 - k] |= (unsigned char)(w >> 8); + tmp[33 - k] |= (unsigned char)(w >> 16); + tmp[32 - k] |= (unsigned char)(w >> 24); + } + for (u = 4; u < 36; u ++) { + printf("%02X", tmp[u]); + } + printf("\n"); +} +*/ + +/* + * If BR_NO_ARITH_SHIFT is undefined, or defined to 0, then we _assume_ + * that right-shifting a signed negative integer copies the sign bit + * (arithmetic right-shift). This is "implementation-defined behaviour", + * i.e. it is not undefined, but it may differ between compilers. Each + * compiler is supposed to document its behaviour in that respect. GCC + * explicitly defines that an arithmetic right shift is used. We expect + * all other compilers to do the same, because underlying CPU offer an + * arithmetic right shift opcode that could not be used otherwise. + */ +#if BR_NO_ARITH_SHIFT +#define ARSH(x, n) (((uint32_t)(x) >> (n)) \ + | ((-((uint32_t)(x) >> 31)) << (32 - (n)))) +#else +#define ARSH(x, n) ((*(int32_t *)&(x)) >> (n)) +#endif + +/* + * Convert an integer from unsigned little-endian encoding to a sequence of + * 13-bit words in little-endian order. The final "partial" word is + * returned. + */ +static uint32_t +le8_to_le13(uint32_t *dst, const unsigned char *src, size_t len) +{ + uint32_t acc; + int acc_len; + + acc = 0; + acc_len = 0; + while (len -- > 0) { + acc |= (uint32_t)(*src ++) << acc_len; + acc_len += 8; + if (acc_len >= 13) { + *dst ++ = acc & 0x1FFF; + acc >>= 13; + acc_len -= 13; + } + } + return acc; +} + +/* + * Convert an integer (13-bit words, little-endian) to unsigned + * little-endian encoding. The total encoding length is provided; all + * the destination bytes will be filled. + */ +static void +le13_to_le8(unsigned char *dst, size_t len, const uint32_t *src) +{ + uint32_t acc; + int acc_len; + + acc = 0; + acc_len = 0; + while (len -- > 0) { + if (acc_len < 8) { + acc |= (*src ++) << acc_len; + acc_len += 13; + } + *dst ++ = (unsigned char)acc; + acc >>= 8; + acc_len -= 8; + } +} + +/* + * Normalise an array of words to a strict 13 bits per word. Returned + * value is the resulting carry. The source (w) and destination (d) + * arrays may be identical, but shall not overlap partially. + */ +static inline uint32_t +norm13(uint32_t *d, const uint32_t *w, size_t len) +{ + size_t u; + uint32_t cc; + + cc = 0; + for (u = 0; u < len; u ++) { + int32_t z; + + z = w[u] + cc; + d[u] = z & 0x1FFF; + cc = ARSH(z, 13); + } + return cc; +} + +/* + * mul20() multiplies two 260-bit integers together. Each word must fit + * on 13 bits; source operands use 20 words, destination operand + * receives 40 words. All overlaps allowed. + * + * square20() computes the square of a 260-bit integer. Each word must + * fit on 13 bits; source operand uses 20 words, destination operand + * receives 40 words. All overlaps allowed. + */ + +#if BR_SLOW_MUL15 + +static void +mul20(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + /* + * Two-level Karatsuba: turns a 20x20 multiplication into + * nine 5x5 multiplications. We use 13-bit words but do not + * propagate carries immediately, so words may expand: + * + * - First Karatsuba decomposition turns the 20x20 mul on + * 13-bit words into three 10x10 muls, two on 13-bit words + * and one on 14-bit words. + * + * - Second Karatsuba decomposition further splits these into: + * + * * four 5x5 muls on 13-bit words + * * four 5x5 muls on 14-bit words + * * one 5x5 mul on 15-bit words + * + * Highest word value is 8191, 16382 or 32764, for 13-bit, 14-bit + * or 15-bit words, respectively. + */ + uint32_t u[45], v[45], w[90]; + uint32_t cc; + int i; + +#define ZADD(dw, d_off, s1w, s1_off, s2w, s2_off) do { \ + (dw)[5 * (d_off) + 0] = (s1w)[5 * (s1_off) + 0] \ + + (s2w)[5 * (s2_off) + 0]; \ + (dw)[5 * (d_off) + 1] = (s1w)[5 * (s1_off) + 1] \ + + (s2w)[5 * (s2_off) + 1]; \ + (dw)[5 * (d_off) + 2] = (s1w)[5 * (s1_off) + 2] \ + + (s2w)[5 * (s2_off) + 2]; \ + (dw)[5 * (d_off) + 3] = (s1w)[5 * (s1_off) + 3] \ + + (s2w)[5 * (s2_off) + 3]; \ + (dw)[5 * (d_off) + 4] = (s1w)[5 * (s1_off) + 4] \ + + (s2w)[5 * (s2_off) + 4]; \ + } while (0) + +#define ZADDT(dw, d_off, sw, s_off) do { \ + (dw)[5 * (d_off) + 0] += (sw)[5 * (s_off) + 0]; \ + (dw)[5 * (d_off) + 1] += (sw)[5 * (s_off) + 1]; \ + (dw)[5 * (d_off) + 2] += (sw)[5 * (s_off) + 2]; \ + (dw)[5 * (d_off) + 3] += (sw)[5 * (s_off) + 3]; \ + (dw)[5 * (d_off) + 4] += (sw)[5 * (s_off) + 4]; \ + } while (0) + +#define ZSUB2F(dw, d_off, s1w, s1_off, s2w, s2_off) do { \ + (dw)[5 * (d_off) + 0] -= (s1w)[5 * (s1_off) + 0] \ + + (s2w)[5 * (s2_off) + 0]; \ + (dw)[5 * (d_off) + 1] -= (s1w)[5 * (s1_off) + 1] \ + + (s2w)[5 * (s2_off) + 1]; \ + (dw)[5 * (d_off) + 2] -= (s1w)[5 * (s1_off) + 2] \ + + (s2w)[5 * (s2_off) + 2]; \ + (dw)[5 * (d_off) + 3] -= (s1w)[5 * (s1_off) + 3] \ + + (s2w)[5 * (s2_off) + 3]; \ + (dw)[5 * (d_off) + 4] -= (s1w)[5 * (s1_off) + 4] \ + + (s2w)[5 * (s2_off) + 4]; \ + } while (0) + +#define CPR1(w, cprcc) do { \ + uint32_t cprz = (w) + cprcc; \ + (w) = cprz & 0x1FFF; \ + cprcc = cprz >> 13; \ + } while (0) + +#define CPR(dw, d_off) do { \ + uint32_t cprcc; \ + cprcc = 0; \ + CPR1((dw)[(d_off) + 0], cprcc); \ + CPR1((dw)[(d_off) + 1], cprcc); \ + CPR1((dw)[(d_off) + 2], cprcc); \ + CPR1((dw)[(d_off) + 3], cprcc); \ + CPR1((dw)[(d_off) + 4], cprcc); \ + CPR1((dw)[(d_off) + 5], cprcc); \ + CPR1((dw)[(d_off) + 6], cprcc); \ + CPR1((dw)[(d_off) + 7], cprcc); \ + CPR1((dw)[(d_off) + 8], cprcc); \ + (dw)[(d_off) + 9] = cprcc; \ + } while (0) + + memcpy_P(u, a, 20 * sizeof *a); + ZADD(u, 4, a, 0, a, 1); + ZADD(u, 5, a, 2, a, 3); + ZADD(u, 6, a, 0, a, 2); + ZADD(u, 7, a, 1, a, 3); + ZADD(u, 8, u, 6, u, 7); + + memcpy_P(v, b, 20 * sizeof *b); + ZADD(v, 4, b, 0, b, 1); + ZADD(v, 5, b, 2, b, 3); + ZADD(v, 6, b, 0, b, 2); + ZADD(v, 7, b, 1, b, 3); + ZADD(v, 8, v, 6, v, 7); + + /* + * Do the eight first 8x8 muls. Source words are at most 16382 + * each, so we can add product results together "as is" in 32-bit + * words. + */ + for (i = 0; i < 40; i += 5) { + w[(i << 1) + 0] = MUL15(u[i + 0], v[i + 0]); + w[(i << 1) + 1] = MUL15(u[i + 0], v[i + 1]) + + MUL15(u[i + 1], v[i + 0]); + w[(i << 1) + 2] = MUL15(u[i + 0], v[i + 2]) + + MUL15(u[i + 1], v[i + 1]) + + MUL15(u[i + 2], v[i + 0]); + w[(i << 1) + 3] = MUL15(u[i + 0], v[i + 3]) + + MUL15(u[i + 1], v[i + 2]) + + MUL15(u[i + 2], v[i + 1]) + + MUL15(u[i + 3], v[i + 0]); + w[(i << 1) + 4] = MUL15(u[i + 0], v[i + 4]) + + MUL15(u[i + 1], v[i + 3]) + + MUL15(u[i + 2], v[i + 2]) + + MUL15(u[i + 3], v[i + 1]) + + MUL15(u[i + 4], v[i + 0]); + w[(i << 1) + 5] = MUL15(u[i + 1], v[i + 4]) + + MUL15(u[i + 2], v[i + 3]) + + MUL15(u[i + 3], v[i + 2]) + + MUL15(u[i + 4], v[i + 1]); + w[(i << 1) + 6] = MUL15(u[i + 2], v[i + 4]) + + MUL15(u[i + 3], v[i + 3]) + + MUL15(u[i + 4], v[i + 2]); + w[(i << 1) + 7] = MUL15(u[i + 3], v[i + 4]) + + MUL15(u[i + 4], v[i + 3]); + w[(i << 1) + 8] = MUL15(u[i + 4], v[i + 4]); + w[(i << 1) + 9] = 0; + } + + /* + * For the 9th multiplication, source words are up to 32764, + * so we must do some carry propagation. If we add up to + * 4 products and the carry is no more than 524224, then the + * result fits in 32 bits, and the next carry will be no more + * than 524224 (because 4*(32764^2)+524224 < 8192*524225). + * + * We thus just skip one of the products in the middle word, + * then do a carry propagation (this reduces words to 13 bits + * each, except possibly the last, which may use up to 17 bits + * or so), then add the missing product. + */ + w[80 + 0] = MUL15(u[40 + 0], v[40 + 0]); + w[80 + 1] = MUL15(u[40 + 0], v[40 + 1]) + + MUL15(u[40 + 1], v[40 + 0]); + w[80 + 2] = MUL15(u[40 + 0], v[40 + 2]) + + MUL15(u[40 + 1], v[40 + 1]) + + MUL15(u[40 + 2], v[40 + 0]); + w[80 + 3] = MUL15(u[40 + 0], v[40 + 3]) + + MUL15(u[40 + 1], v[40 + 2]) + + MUL15(u[40 + 2], v[40 + 1]) + + MUL15(u[40 + 3], v[40 + 0]); + w[80 + 4] = MUL15(u[40 + 0], v[40 + 4]) + + MUL15(u[40 + 1], v[40 + 3]) + + MUL15(u[40 + 2], v[40 + 2]) + + MUL15(u[40 + 3], v[40 + 1]); + /* + MUL15(u[40 + 4], v[40 + 0]) */ + w[80 + 5] = MUL15(u[40 + 1], v[40 + 4]) + + MUL15(u[40 + 2], v[40 + 3]) + + MUL15(u[40 + 3], v[40 + 2]) + + MUL15(u[40 + 4], v[40 + 1]); + w[80 + 6] = MUL15(u[40 + 2], v[40 + 4]) + + MUL15(u[40 + 3], v[40 + 3]) + + MUL15(u[40 + 4], v[40 + 2]); + w[80 + 7] = MUL15(u[40 + 3], v[40 + 4]) + + MUL15(u[40 + 4], v[40 + 3]); + w[80 + 8] = MUL15(u[40 + 4], v[40 + 4]); + + CPR(w, 80); + + w[80 + 4] += MUL15(u[40 + 4], v[40 + 0]); + + /* + * The products on 14-bit words in slots 6 and 7 yield values + * up to 5*(16382^2) each, and we need to subtract two such + * values from the higher word. We need the subtraction to fit + * in a _signed_ 32-bit integer, i.e. 31 bits + a sign bit. + * However, 10*(16382^2) does not fit. So we must perform a + * bit of reduction here. + */ + CPR(w, 60); + CPR(w, 70); + + /* + * Recompose results. + */ + + /* 0..1*0..1 into 0..3 */ + ZSUB2F(w, 8, w, 0, w, 2); + ZSUB2F(w, 9, w, 1, w, 3); + ZADDT(w, 1, w, 8); + ZADDT(w, 2, w, 9); + + /* 2..3*2..3 into 4..7 */ + ZSUB2F(w, 10, w, 4, w, 6); + ZSUB2F(w, 11, w, 5, w, 7); + ZADDT(w, 5, w, 10); + ZADDT(w, 6, w, 11); + + /* (0..1+2..3)*(0..1+2..3) into 12..15 */ + ZSUB2F(w, 16, w, 12, w, 14); + ZSUB2F(w, 17, w, 13, w, 15); + ZADDT(w, 13, w, 16); + ZADDT(w, 14, w, 17); + + /* first-level recomposition */ + ZSUB2F(w, 12, w, 0, w, 4); + ZSUB2F(w, 13, w, 1, w, 5); + ZSUB2F(w, 14, w, 2, w, 6); + ZSUB2F(w, 15, w, 3, w, 7); + ZADDT(w, 2, w, 12); + ZADDT(w, 3, w, 13); + ZADDT(w, 4, w, 14); + ZADDT(w, 5, w, 15); + + /* + * Perform carry propagation to bring all words down to 13 bits. + */ + cc = norm13(d, w, 40); + d[39] += (cc << 13); + +#undef ZADD +#undef ZADDT +#undef ZSUB2F +#undef CPR1 +#undef CPR +} + +static inline void +square20(uint32_t *d, const uint32_t *a) +{ + mul20(d, a, a); +} + +#else + +/*static*/ void +mul20(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + uint32_t t[39]; + + t[ 0] = MUL15(a[ 0], b[ 0]); + t[ 1] = MUL15(a[ 0], b[ 1]) + + MUL15(a[ 1], b[ 0]); + t[ 2] = MUL15(a[ 0], b[ 2]) + + MUL15(a[ 1], b[ 1]) + + MUL15(a[ 2], b[ 0]); + t[ 3] = MUL15(a[ 0], b[ 3]) + + MUL15(a[ 1], b[ 2]) + + MUL15(a[ 2], b[ 1]) + + MUL15(a[ 3], b[ 0]); + t[ 4] = MUL15(a[ 0], b[ 4]) + + MUL15(a[ 1], b[ 3]) + + MUL15(a[ 2], b[ 2]) + + MUL15(a[ 3], b[ 1]) + + MUL15(a[ 4], b[ 0]); + t[ 5] = MUL15(a[ 0], b[ 5]) + + MUL15(a[ 1], b[ 4]) + + MUL15(a[ 2], b[ 3]) + + MUL15(a[ 3], b[ 2]) + + MUL15(a[ 4], b[ 1]) + + MUL15(a[ 5], b[ 0]); + t[ 6] = MUL15(a[ 0], b[ 6]) + + MUL15(a[ 1], b[ 5]) + + MUL15(a[ 2], b[ 4]) + + MUL15(a[ 3], b[ 3]) + + MUL15(a[ 4], b[ 2]) + + MUL15(a[ 5], b[ 1]) + + MUL15(a[ 6], b[ 0]); + t[ 7] = MUL15(a[ 0], b[ 7]) + + MUL15(a[ 1], b[ 6]) + + MUL15(a[ 2], b[ 5]) + + MUL15(a[ 3], b[ 4]) + + MUL15(a[ 4], b[ 3]) + + MUL15(a[ 5], b[ 2]) + + MUL15(a[ 6], b[ 1]) + + MUL15(a[ 7], b[ 0]); + t[ 8] = MUL15(a[ 0], b[ 8]) + + MUL15(a[ 1], b[ 7]) + + MUL15(a[ 2], b[ 6]) + + MUL15(a[ 3], b[ 5]) + + MUL15(a[ 4], b[ 4]) + + MUL15(a[ 5], b[ 3]) + + MUL15(a[ 6], b[ 2]) + + MUL15(a[ 7], b[ 1]) + + MUL15(a[ 8], b[ 0]); + t[ 9] = MUL15(a[ 0], b[ 9]) + + MUL15(a[ 1], b[ 8]) + + MUL15(a[ 2], b[ 7]) + + MUL15(a[ 3], b[ 6]) + + MUL15(a[ 4], b[ 5]) + + MUL15(a[ 5], b[ 4]) + + MUL15(a[ 6], b[ 3]) + + MUL15(a[ 7], b[ 2]) + + MUL15(a[ 8], b[ 1]) + + MUL15(a[ 9], b[ 0]); + t[10] = MUL15(a[ 0], b[10]) + + MUL15(a[ 1], b[ 9]) + + MUL15(a[ 2], b[ 8]) + + MUL15(a[ 3], b[ 7]) + + MUL15(a[ 4], b[ 6]) + + MUL15(a[ 5], b[ 5]) + + MUL15(a[ 6], b[ 4]) + + MUL15(a[ 7], b[ 3]) + + MUL15(a[ 8], b[ 2]) + + MUL15(a[ 9], b[ 1]) + + MUL15(a[10], b[ 0]); + t[11] = MUL15(a[ 0], b[11]) + + MUL15(a[ 1], b[10]) + + MUL15(a[ 2], b[ 9]) + + MUL15(a[ 3], b[ 8]) + + MUL15(a[ 4], b[ 7]) + + MUL15(a[ 5], b[ 6]) + + MUL15(a[ 6], b[ 5]) + + MUL15(a[ 7], b[ 4]) + + MUL15(a[ 8], b[ 3]) + + MUL15(a[ 9], b[ 2]) + + MUL15(a[10], b[ 1]) + + MUL15(a[11], b[ 0]); + t[12] = MUL15(a[ 0], b[12]) + + MUL15(a[ 1], b[11]) + + MUL15(a[ 2], b[10]) + + MUL15(a[ 3], b[ 9]) + + MUL15(a[ 4], b[ 8]) + + MUL15(a[ 5], b[ 7]) + + MUL15(a[ 6], b[ 6]) + + MUL15(a[ 7], b[ 5]) + + MUL15(a[ 8], b[ 4]) + + MUL15(a[ 9], b[ 3]) + + MUL15(a[10], b[ 2]) + + MUL15(a[11], b[ 1]) + + MUL15(a[12], b[ 0]); + t[13] = MUL15(a[ 0], b[13]) + + MUL15(a[ 1], b[12]) + + MUL15(a[ 2], b[11]) + + MUL15(a[ 3], b[10]) + + MUL15(a[ 4], b[ 9]) + + MUL15(a[ 5], b[ 8]) + + MUL15(a[ 6], b[ 7]) + + MUL15(a[ 7], b[ 6]) + + MUL15(a[ 8], b[ 5]) + + MUL15(a[ 9], b[ 4]) + + MUL15(a[10], b[ 3]) + + MUL15(a[11], b[ 2]) + + MUL15(a[12], b[ 1]) + + MUL15(a[13], b[ 0]); + t[14] = MUL15(a[ 0], b[14]) + + MUL15(a[ 1], b[13]) + + MUL15(a[ 2], b[12]) + + MUL15(a[ 3], b[11]) + + MUL15(a[ 4], b[10]) + + MUL15(a[ 5], b[ 9]) + + MUL15(a[ 6], b[ 8]) + + MUL15(a[ 7], b[ 7]) + + MUL15(a[ 8], b[ 6]) + + MUL15(a[ 9], b[ 5]) + + MUL15(a[10], b[ 4]) + + MUL15(a[11], b[ 3]) + + MUL15(a[12], b[ 2]) + + MUL15(a[13], b[ 1]) + + MUL15(a[14], b[ 0]); + t[15] = MUL15(a[ 0], b[15]) + + MUL15(a[ 1], b[14]) + + MUL15(a[ 2], b[13]) + + MUL15(a[ 3], b[12]) + + MUL15(a[ 4], b[11]) + + MUL15(a[ 5], b[10]) + + MUL15(a[ 6], b[ 9]) + + MUL15(a[ 7], b[ 8]) + + MUL15(a[ 8], b[ 7]) + + MUL15(a[ 9], b[ 6]) + + MUL15(a[10], b[ 5]) + + MUL15(a[11], b[ 4]) + + MUL15(a[12], b[ 3]) + + MUL15(a[13], b[ 2]) + + MUL15(a[14], b[ 1]) + + MUL15(a[15], b[ 0]); + t[16] = MUL15(a[ 0], b[16]) + + MUL15(a[ 1], b[15]) + + MUL15(a[ 2], b[14]) + + MUL15(a[ 3], b[13]) + + MUL15(a[ 4], b[12]) + + MUL15(a[ 5], b[11]) + + MUL15(a[ 6], b[10]) + + MUL15(a[ 7], b[ 9]) + + MUL15(a[ 8], b[ 8]) + + MUL15(a[ 9], b[ 7]) + + MUL15(a[10], b[ 6]) + + MUL15(a[11], b[ 5]) + + MUL15(a[12], b[ 4]) + + MUL15(a[13], b[ 3]) + + MUL15(a[14], b[ 2]) + + MUL15(a[15], b[ 1]) + + MUL15(a[16], b[ 0]); + t[17] = MUL15(a[ 0], b[17]) + + MUL15(a[ 1], b[16]) + + MUL15(a[ 2], b[15]) + + MUL15(a[ 3], b[14]) + + MUL15(a[ 4], b[13]) + + MUL15(a[ 5], b[12]) + + MUL15(a[ 6], b[11]) + + MUL15(a[ 7], b[10]) + + MUL15(a[ 8], b[ 9]) + + MUL15(a[ 9], b[ 8]) + + MUL15(a[10], b[ 7]) + + MUL15(a[11], b[ 6]) + + MUL15(a[12], b[ 5]) + + MUL15(a[13], b[ 4]) + + MUL15(a[14], b[ 3]) + + MUL15(a[15], b[ 2]) + + MUL15(a[16], b[ 1]) + + MUL15(a[17], b[ 0]); + t[18] = MUL15(a[ 0], b[18]) + + MUL15(a[ 1], b[17]) + + MUL15(a[ 2], b[16]) + + MUL15(a[ 3], b[15]) + + MUL15(a[ 4], b[14]) + + MUL15(a[ 5], b[13]) + + MUL15(a[ 6], b[12]) + + MUL15(a[ 7], b[11]) + + MUL15(a[ 8], b[10]) + + MUL15(a[ 9], b[ 9]) + + MUL15(a[10], b[ 8]) + + MUL15(a[11], b[ 7]) + + MUL15(a[12], b[ 6]) + + MUL15(a[13], b[ 5]) + + MUL15(a[14], b[ 4]) + + MUL15(a[15], b[ 3]) + + MUL15(a[16], b[ 2]) + + MUL15(a[17], b[ 1]) + + MUL15(a[18], b[ 0]); + t[19] = MUL15(a[ 0], b[19]) + + MUL15(a[ 1], b[18]) + + MUL15(a[ 2], b[17]) + + MUL15(a[ 3], b[16]) + + MUL15(a[ 4], b[15]) + + MUL15(a[ 5], b[14]) + + MUL15(a[ 6], b[13]) + + MUL15(a[ 7], b[12]) + + MUL15(a[ 8], b[11]) + + MUL15(a[ 9], b[10]) + + MUL15(a[10], b[ 9]) + + MUL15(a[11], b[ 8]) + + MUL15(a[12], b[ 7]) + + MUL15(a[13], b[ 6]) + + MUL15(a[14], b[ 5]) + + MUL15(a[15], b[ 4]) + + MUL15(a[16], b[ 3]) + + MUL15(a[17], b[ 2]) + + MUL15(a[18], b[ 1]) + + MUL15(a[19], b[ 0]); + t[20] = MUL15(a[ 1], b[19]) + + MUL15(a[ 2], b[18]) + + MUL15(a[ 3], b[17]) + + MUL15(a[ 4], b[16]) + + MUL15(a[ 5], b[15]) + + MUL15(a[ 6], b[14]) + + MUL15(a[ 7], b[13]) + + MUL15(a[ 8], b[12]) + + MUL15(a[ 9], b[11]) + + MUL15(a[10], b[10]) + + MUL15(a[11], b[ 9]) + + MUL15(a[12], b[ 8]) + + MUL15(a[13], b[ 7]) + + MUL15(a[14], b[ 6]) + + MUL15(a[15], b[ 5]) + + MUL15(a[16], b[ 4]) + + MUL15(a[17], b[ 3]) + + MUL15(a[18], b[ 2]) + + MUL15(a[19], b[ 1]); + t[21] = MUL15(a[ 2], b[19]) + + MUL15(a[ 3], b[18]) + + MUL15(a[ 4], b[17]) + + MUL15(a[ 5], b[16]) + + MUL15(a[ 6], b[15]) + + MUL15(a[ 7], b[14]) + + MUL15(a[ 8], b[13]) + + MUL15(a[ 9], b[12]) + + MUL15(a[10], b[11]) + + MUL15(a[11], b[10]) + + MUL15(a[12], b[ 9]) + + MUL15(a[13], b[ 8]) + + MUL15(a[14], b[ 7]) + + MUL15(a[15], b[ 6]) + + MUL15(a[16], b[ 5]) + + MUL15(a[17], b[ 4]) + + MUL15(a[18], b[ 3]) + + MUL15(a[19], b[ 2]); + t[22] = MUL15(a[ 3], b[19]) + + MUL15(a[ 4], b[18]) + + MUL15(a[ 5], b[17]) + + MUL15(a[ 6], b[16]) + + MUL15(a[ 7], b[15]) + + MUL15(a[ 8], b[14]) + + MUL15(a[ 9], b[13]) + + MUL15(a[10], b[12]) + + MUL15(a[11], b[11]) + + MUL15(a[12], b[10]) + + MUL15(a[13], b[ 9]) + + MUL15(a[14], b[ 8]) + + MUL15(a[15], b[ 7]) + + MUL15(a[16], b[ 6]) + + MUL15(a[17], b[ 5]) + + MUL15(a[18], b[ 4]) + + MUL15(a[19], b[ 3]); + t[23] = MUL15(a[ 4], b[19]) + + MUL15(a[ 5], b[18]) + + MUL15(a[ 6], b[17]) + + MUL15(a[ 7], b[16]) + + MUL15(a[ 8], b[15]) + + MUL15(a[ 9], b[14]) + + MUL15(a[10], b[13]) + + MUL15(a[11], b[12]) + + MUL15(a[12], b[11]) + + MUL15(a[13], b[10]) + + MUL15(a[14], b[ 9]) + + MUL15(a[15], b[ 8]) + + MUL15(a[16], b[ 7]) + + MUL15(a[17], b[ 6]) + + MUL15(a[18], b[ 5]) + + MUL15(a[19], b[ 4]); + t[24] = MUL15(a[ 5], b[19]) + + MUL15(a[ 6], b[18]) + + MUL15(a[ 7], b[17]) + + MUL15(a[ 8], b[16]) + + MUL15(a[ 9], b[15]) + + MUL15(a[10], b[14]) + + MUL15(a[11], b[13]) + + MUL15(a[12], b[12]) + + MUL15(a[13], b[11]) + + MUL15(a[14], b[10]) + + MUL15(a[15], b[ 9]) + + MUL15(a[16], b[ 8]) + + MUL15(a[17], b[ 7]) + + MUL15(a[18], b[ 6]) + + MUL15(a[19], b[ 5]); + t[25] = MUL15(a[ 6], b[19]) + + MUL15(a[ 7], b[18]) + + MUL15(a[ 8], b[17]) + + MUL15(a[ 9], b[16]) + + MUL15(a[10], b[15]) + + MUL15(a[11], b[14]) + + MUL15(a[12], b[13]) + + MUL15(a[13], b[12]) + + MUL15(a[14], b[11]) + + MUL15(a[15], b[10]) + + MUL15(a[16], b[ 9]) + + MUL15(a[17], b[ 8]) + + MUL15(a[18], b[ 7]) + + MUL15(a[19], b[ 6]); + t[26] = MUL15(a[ 7], b[19]) + + MUL15(a[ 8], b[18]) + + MUL15(a[ 9], b[17]) + + MUL15(a[10], b[16]) + + MUL15(a[11], b[15]) + + MUL15(a[12], b[14]) + + MUL15(a[13], b[13]) + + MUL15(a[14], b[12]) + + MUL15(a[15], b[11]) + + MUL15(a[16], b[10]) + + MUL15(a[17], b[ 9]) + + MUL15(a[18], b[ 8]) + + MUL15(a[19], b[ 7]); + t[27] = MUL15(a[ 8], b[19]) + + MUL15(a[ 9], b[18]) + + MUL15(a[10], b[17]) + + MUL15(a[11], b[16]) + + MUL15(a[12], b[15]) + + MUL15(a[13], b[14]) + + MUL15(a[14], b[13]) + + MUL15(a[15], b[12]) + + MUL15(a[16], b[11]) + + MUL15(a[17], b[10]) + + MUL15(a[18], b[ 9]) + + MUL15(a[19], b[ 8]); + t[28] = MUL15(a[ 9], b[19]) + + MUL15(a[10], b[18]) + + MUL15(a[11], b[17]) + + MUL15(a[12], b[16]) + + MUL15(a[13], b[15]) + + MUL15(a[14], b[14]) + + MUL15(a[15], b[13]) + + MUL15(a[16], b[12]) + + MUL15(a[17], b[11]) + + MUL15(a[18], b[10]) + + MUL15(a[19], b[ 9]); + t[29] = MUL15(a[10], b[19]) + + MUL15(a[11], b[18]) + + MUL15(a[12], b[17]) + + MUL15(a[13], b[16]) + + MUL15(a[14], b[15]) + + MUL15(a[15], b[14]) + + MUL15(a[16], b[13]) + + MUL15(a[17], b[12]) + + MUL15(a[18], b[11]) + + MUL15(a[19], b[10]); + t[30] = MUL15(a[11], b[19]) + + MUL15(a[12], b[18]) + + MUL15(a[13], b[17]) + + MUL15(a[14], b[16]) + + MUL15(a[15], b[15]) + + MUL15(a[16], b[14]) + + MUL15(a[17], b[13]) + + MUL15(a[18], b[12]) + + MUL15(a[19], b[11]); + t[31] = MUL15(a[12], b[19]) + + MUL15(a[13], b[18]) + + MUL15(a[14], b[17]) + + MUL15(a[15], b[16]) + + MUL15(a[16], b[15]) + + MUL15(a[17], b[14]) + + MUL15(a[18], b[13]) + + MUL15(a[19], b[12]); + t[32] = MUL15(a[13], b[19]) + + MUL15(a[14], b[18]) + + MUL15(a[15], b[17]) + + MUL15(a[16], b[16]) + + MUL15(a[17], b[15]) + + MUL15(a[18], b[14]) + + MUL15(a[19], b[13]); + t[33] = MUL15(a[14], b[19]) + + MUL15(a[15], b[18]) + + MUL15(a[16], b[17]) + + MUL15(a[17], b[16]) + + MUL15(a[18], b[15]) + + MUL15(a[19], b[14]); + t[34] = MUL15(a[15], b[19]) + + MUL15(a[16], b[18]) + + MUL15(a[17], b[17]) + + MUL15(a[18], b[16]) + + MUL15(a[19], b[15]); + t[35] = MUL15(a[16], b[19]) + + MUL15(a[17], b[18]) + + MUL15(a[18], b[17]) + + MUL15(a[19], b[16]); + t[36] = MUL15(a[17], b[19]) + + MUL15(a[18], b[18]) + + MUL15(a[19], b[17]); + t[37] = MUL15(a[18], b[19]) + + MUL15(a[19], b[18]); + t[38] = MUL15(a[19], b[19]); + + d[39] = norm13(d, t, 39); +} + +/*static*/ void +square20(uint32_t *d, const uint32_t *a) +{ + uint32_t t[39]; + + t[ 0] = MUL15(a[ 0], a[ 0]); + t[ 1] = ((MUL15(a[ 0], a[ 1])) << 1); + t[ 2] = MUL15(a[ 1], a[ 1]) + + ((MUL15(a[ 0], a[ 2])) << 1); + t[ 3] = ((MUL15(a[ 0], a[ 3]) + + MUL15(a[ 1], a[ 2])) << 1); + t[ 4] = MUL15(a[ 2], a[ 2]) + + ((MUL15(a[ 0], a[ 4]) + + MUL15(a[ 1], a[ 3])) << 1); + t[ 5] = ((MUL15(a[ 0], a[ 5]) + + MUL15(a[ 1], a[ 4]) + + MUL15(a[ 2], a[ 3])) << 1); + t[ 6] = MUL15(a[ 3], a[ 3]) + + ((MUL15(a[ 0], a[ 6]) + + MUL15(a[ 1], a[ 5]) + + MUL15(a[ 2], a[ 4])) << 1); + t[ 7] = ((MUL15(a[ 0], a[ 7]) + + MUL15(a[ 1], a[ 6]) + + MUL15(a[ 2], a[ 5]) + + MUL15(a[ 3], a[ 4])) << 1); + t[ 8] = MUL15(a[ 4], a[ 4]) + + ((MUL15(a[ 0], a[ 8]) + + MUL15(a[ 1], a[ 7]) + + MUL15(a[ 2], a[ 6]) + + MUL15(a[ 3], a[ 5])) << 1); + t[ 9] = ((MUL15(a[ 0], a[ 9]) + + MUL15(a[ 1], a[ 8]) + + MUL15(a[ 2], a[ 7]) + + MUL15(a[ 3], a[ 6]) + + MUL15(a[ 4], a[ 5])) << 1); + t[10] = MUL15(a[ 5], a[ 5]) + + ((MUL15(a[ 0], a[10]) + + MUL15(a[ 1], a[ 9]) + + MUL15(a[ 2], a[ 8]) + + MUL15(a[ 3], a[ 7]) + + MUL15(a[ 4], a[ 6])) << 1); + t[11] = ((MUL15(a[ 0], a[11]) + + MUL15(a[ 1], a[10]) + + MUL15(a[ 2], a[ 9]) + + MUL15(a[ 3], a[ 8]) + + MUL15(a[ 4], a[ 7]) + + MUL15(a[ 5], a[ 6])) << 1); + t[12] = MUL15(a[ 6], a[ 6]) + + ((MUL15(a[ 0], a[12]) + + MUL15(a[ 1], a[11]) + + MUL15(a[ 2], a[10]) + + MUL15(a[ 3], a[ 9]) + + MUL15(a[ 4], a[ 8]) + + MUL15(a[ 5], a[ 7])) << 1); + t[13] = ((MUL15(a[ 0], a[13]) + + MUL15(a[ 1], a[12]) + + MUL15(a[ 2], a[11]) + + MUL15(a[ 3], a[10]) + + MUL15(a[ 4], a[ 9]) + + MUL15(a[ 5], a[ 8]) + + MUL15(a[ 6], a[ 7])) << 1); + t[14] = MUL15(a[ 7], a[ 7]) + + ((MUL15(a[ 0], a[14]) + + MUL15(a[ 1], a[13]) + + MUL15(a[ 2], a[12]) + + MUL15(a[ 3], a[11]) + + MUL15(a[ 4], a[10]) + + MUL15(a[ 5], a[ 9]) + + MUL15(a[ 6], a[ 8])) << 1); + t[15] = ((MUL15(a[ 0], a[15]) + + MUL15(a[ 1], a[14]) + + MUL15(a[ 2], a[13]) + + MUL15(a[ 3], a[12]) + + MUL15(a[ 4], a[11]) + + MUL15(a[ 5], a[10]) + + MUL15(a[ 6], a[ 9]) + + MUL15(a[ 7], a[ 8])) << 1); + t[16] = MUL15(a[ 8], a[ 8]) + + ((MUL15(a[ 0], a[16]) + + MUL15(a[ 1], a[15]) + + MUL15(a[ 2], a[14]) + + MUL15(a[ 3], a[13]) + + MUL15(a[ 4], a[12]) + + MUL15(a[ 5], a[11]) + + MUL15(a[ 6], a[10]) + + MUL15(a[ 7], a[ 9])) << 1); + t[17] = ((MUL15(a[ 0], a[17]) + + MUL15(a[ 1], a[16]) + + MUL15(a[ 2], a[15]) + + MUL15(a[ 3], a[14]) + + MUL15(a[ 4], a[13]) + + MUL15(a[ 5], a[12]) + + MUL15(a[ 6], a[11]) + + MUL15(a[ 7], a[10]) + + MUL15(a[ 8], a[ 9])) << 1); + t[18] = MUL15(a[ 9], a[ 9]) + + ((MUL15(a[ 0], a[18]) + + MUL15(a[ 1], a[17]) + + MUL15(a[ 2], a[16]) + + MUL15(a[ 3], a[15]) + + MUL15(a[ 4], a[14]) + + MUL15(a[ 5], a[13]) + + MUL15(a[ 6], a[12]) + + MUL15(a[ 7], a[11]) + + MUL15(a[ 8], a[10])) << 1); + t[19] = ((MUL15(a[ 0], a[19]) + + MUL15(a[ 1], a[18]) + + MUL15(a[ 2], a[17]) + + MUL15(a[ 3], a[16]) + + MUL15(a[ 4], a[15]) + + MUL15(a[ 5], a[14]) + + MUL15(a[ 6], a[13]) + + MUL15(a[ 7], a[12]) + + MUL15(a[ 8], a[11]) + + MUL15(a[ 9], a[10])) << 1); + t[20] = MUL15(a[10], a[10]) + + ((MUL15(a[ 1], a[19]) + + MUL15(a[ 2], a[18]) + + MUL15(a[ 3], a[17]) + + MUL15(a[ 4], a[16]) + + MUL15(a[ 5], a[15]) + + MUL15(a[ 6], a[14]) + + MUL15(a[ 7], a[13]) + + MUL15(a[ 8], a[12]) + + MUL15(a[ 9], a[11])) << 1); + t[21] = ((MUL15(a[ 2], a[19]) + + MUL15(a[ 3], a[18]) + + MUL15(a[ 4], a[17]) + + MUL15(a[ 5], a[16]) + + MUL15(a[ 6], a[15]) + + MUL15(a[ 7], a[14]) + + MUL15(a[ 8], a[13]) + + MUL15(a[ 9], a[12]) + + MUL15(a[10], a[11])) << 1); + t[22] = MUL15(a[11], a[11]) + + ((MUL15(a[ 3], a[19]) + + MUL15(a[ 4], a[18]) + + MUL15(a[ 5], a[17]) + + MUL15(a[ 6], a[16]) + + MUL15(a[ 7], a[15]) + + MUL15(a[ 8], a[14]) + + MUL15(a[ 9], a[13]) + + MUL15(a[10], a[12])) << 1); + t[23] = ((MUL15(a[ 4], a[19]) + + MUL15(a[ 5], a[18]) + + MUL15(a[ 6], a[17]) + + MUL15(a[ 7], a[16]) + + MUL15(a[ 8], a[15]) + + MUL15(a[ 9], a[14]) + + MUL15(a[10], a[13]) + + MUL15(a[11], a[12])) << 1); + t[24] = MUL15(a[12], a[12]) + + ((MUL15(a[ 5], a[19]) + + MUL15(a[ 6], a[18]) + + MUL15(a[ 7], a[17]) + + MUL15(a[ 8], a[16]) + + MUL15(a[ 9], a[15]) + + MUL15(a[10], a[14]) + + MUL15(a[11], a[13])) << 1); + t[25] = ((MUL15(a[ 6], a[19]) + + MUL15(a[ 7], a[18]) + + MUL15(a[ 8], a[17]) + + MUL15(a[ 9], a[16]) + + MUL15(a[10], a[15]) + + MUL15(a[11], a[14]) + + MUL15(a[12], a[13])) << 1); + t[26] = MUL15(a[13], a[13]) + + ((MUL15(a[ 7], a[19]) + + MUL15(a[ 8], a[18]) + + MUL15(a[ 9], a[17]) + + MUL15(a[10], a[16]) + + MUL15(a[11], a[15]) + + MUL15(a[12], a[14])) << 1); + t[27] = ((MUL15(a[ 8], a[19]) + + MUL15(a[ 9], a[18]) + + MUL15(a[10], a[17]) + + MUL15(a[11], a[16]) + + MUL15(a[12], a[15]) + + MUL15(a[13], a[14])) << 1); + t[28] = MUL15(a[14], a[14]) + + ((MUL15(a[ 9], a[19]) + + MUL15(a[10], a[18]) + + MUL15(a[11], a[17]) + + MUL15(a[12], a[16]) + + MUL15(a[13], a[15])) << 1); + t[29] = ((MUL15(a[10], a[19]) + + MUL15(a[11], a[18]) + + MUL15(a[12], a[17]) + + MUL15(a[13], a[16]) + + MUL15(a[14], a[15])) << 1); + t[30] = MUL15(a[15], a[15]) + + ((MUL15(a[11], a[19]) + + MUL15(a[12], a[18]) + + MUL15(a[13], a[17]) + + MUL15(a[14], a[16])) << 1); + t[31] = ((MUL15(a[12], a[19]) + + MUL15(a[13], a[18]) + + MUL15(a[14], a[17]) + + MUL15(a[15], a[16])) << 1); + t[32] = MUL15(a[16], a[16]) + + ((MUL15(a[13], a[19]) + + MUL15(a[14], a[18]) + + MUL15(a[15], a[17])) << 1); + t[33] = ((MUL15(a[14], a[19]) + + MUL15(a[15], a[18]) + + MUL15(a[16], a[17])) << 1); + t[34] = MUL15(a[17], a[17]) + + ((MUL15(a[15], a[19]) + + MUL15(a[16], a[18])) << 1); + t[35] = ((MUL15(a[16], a[19]) + + MUL15(a[17], a[18])) << 1); + t[36] = MUL15(a[18], a[18]) + + ((MUL15(a[17], a[19])) << 1); + t[37] = ((MUL15(a[18], a[19])) << 1); + t[38] = MUL15(a[19], a[19]); + + d[39] = norm13(d, t, 39); +} + +#endif + +/* + * Perform a "final reduction" in field F255 (field for Curve25519) + * The source value must be less than twice the modulus. If the value + * is not lower than the modulus, then the modulus is subtracted and + * this function returns 1; otherwise, it leaves it untouched and it + * returns 0. + */ +static uint32_t +reduce_final_f255(uint32_t *d) +{ + uint32_t t[20]; + uint32_t cc; + int i; + + memcpy(t, d, sizeof t); + cc = 19; + for (i = 0; i < 20; i ++) { + uint32_t w; + + w = t[i] + cc; + cc = w >> 13; + t[i] = w & 0x1FFF; + } + cc = t[19] >> 8; + t[19] &= 0xFF; + CCOPY(cc, d, t, sizeof t); + return cc; +} + +static void +f255_mulgen(uint32_t *d, const uint32_t *a, const uint32_t *b, int square) +{ + uint32_t t[40], cc, w; + + /* + * Compute raw multiplication. All result words fit in 13 bits + * each; upper word (t[39]) must fit on 5 bits, since the product + * of two 256-bit integers must fit on 512 bits. + */ + if (square) { + square20(t, a); + } else { + mul20(t, a, b); + } + + /* + * Modular reduction: each high word is added where necessary. + * Since the modulus is 2^255-19 and word 20 corresponds to + * offset 20*13 = 260, word 20+k must be added to word k with + * a factor of 19*2^5 = 608. The extra bits in word 19 are also + * added that way. + */ + cc = MUL15(t[19] >> 8, 19); + t[19] &= 0xFF; + +#define MM1(x) do { \ + w = t[x] + cc + MUL15(t[(x) + 20], 608); \ + t[x] = w & 0x1FFF; \ + cc = w >> 13; \ + } while (0) + + MM1( 0); + MM1( 1); + MM1( 2); + MM1( 3); + MM1( 4); + MM1( 5); + MM1( 6); + MM1( 7); + MM1( 8); + MM1( 9); + MM1(10); + MM1(11); + MM1(12); + MM1(13); + MM1(14); + MM1(15); + MM1(16); + MM1(17); + MM1(18); + MM1(19); + +#undef MM1 + + cc = MUL15(w >> 8, 19); + t[19] &= 0xFF; + +#define MM2(x) do { \ + w = t[x] + cc; \ + d[x] = w & 0x1FFF; \ + cc = w >> 13; \ + } while (0) + + MM2( 0); + MM2( 1); + MM2( 2); + MM2( 3); + MM2( 4); + MM2( 5); + MM2( 6); + MM2( 7); + MM2( 8); + MM2( 9); + MM2(10); + MM2(11); + MM2(12); + MM2(13); + MM2(14); + MM2(15); + MM2(16); + MM2(17); + MM2(18); + MM2(19); + +#undef MM2 +} + +/* + * Perform a multiplication of two integers modulo 2^255-19. + * Operands are arrays of 20 words, each containing 13 bits of data, in + * little-endian order. Input value may be up to 2^256-1; on output, value + * fits on 256 bits and is lower than twice the modulus. + * + * f255_mul() is the general multiplication, f255_square() is specialised + * for squarings. + */ +#define f255_mul(d, a, b) f255_mulgen(d, a, b, 0) +#define f255_square(d, a) f255_mulgen(d, a, a, 1) + +/* + * Add two values in F255. Partial reduction is performed (down to less + * than twice the modulus). + */ +static void +f255_add(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + int i; + uint32_t cc, w; + + cc = 0; + for (i = 0; i < 20; i ++) { + w = a[i] + b[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } + cc = MUL15(w >> 8, 19); + d[19] &= 0xFF; + for (i = 0; i < 20; i ++) { + w = d[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } +} + +/* + * Subtract one value from another in F255. Partial reduction is + * performed (down to less than twice the modulus). + */ +static void +f255_sub(uint32_t *d, const uint32_t *a, const uint32_t *b) +{ + /* + * We actually compute a - b + 2*p, so that the final value is + * necessarily positive. + */ + int i; + uint32_t cc, w; + + cc = (uint32_t)-38; + for (i = 0; i < 20; i ++) { + w = a[i] - b[i] + cc; + d[i] = w & 0x1FFF; + cc = ARSH(w, 13); + } + cc = MUL15((w + 0x200) >> 8, 19); + d[19] &= 0xFF; + for (i = 0; i < 20; i ++) { + w = d[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } +} + +/* + * Multiply an integer by the 'A24' constant (121665). Partial reduction + * is performed (down to less than twice the modulus). + */ +static void +f255_mul_a24(uint32_t *d, const uint32_t *a) +{ + int i; + uint32_t cc, w; + + cc = 0; + for (i = 0; i < 20; i ++) { + w = MUL15(a[i], 121665) + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } + cc = MUL15(w >> 8, 19); + d[19] &= 0xFF; + for (i = 0; i < 20; i ++) { + w = d[i] + cc; + d[i] = w & 0x1FFF; + cc = w >> 13; + } +} + +static const unsigned char GEN[] PROGMEM = { + 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char ORDER[] PROGMEM = { + 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF +}; + +static const unsigned char * +api_generator(int curve, size_t *len) +{ + (void)curve; + *len = 32; + return GEN; +} + +static const unsigned char * +api_order(int curve, size_t *len) +{ + (void)curve; + *len = 32; + return ORDER; +} + +static size_t +api_xoff(int curve, size_t *len) +{ + (void)curve; + *len = 32; + return 0; +} + +static void +cswap(uint32_t *a, uint32_t *b, uint32_t ctl) +{ + int i; + + ctl = -ctl; + for (i = 0; i < 20; i ++) { + uint32_t aw, bw, tw; + + aw = a[i]; + bw = b[i]; + tw = ctl & (aw ^ bw); + a[i] = aw ^ tw; + b[i] = bw ^ tw; + } +} + +static uint32_t +api_mul(unsigned char *G, size_t Glen, + const unsigned char *kb, size_t kblen, int curve) +{ + uint32_t x1[20], x2[20], x3[20], z2[20], z3[20]; + uint32_t a[20], aa[20], b[20], bb[20]; + uint32_t c[20], d[20], e[20], da[20], cb[20]; + unsigned char k[32]; + uint32_t swap; + int i; + + (void)curve; + + /* + * Points are encoded over exactly 32 bytes. Multipliers must fit + * in 32 bytes as well. + * RFC 7748 mandates that the high bit of the last point byte must + * be ignored/cleared. + */ + if (Glen != 32 || kblen > 32) { + return 0; + } + G[31] &= 0x7F; + + /* + * Initialise variables x1, x2, z2, x3 and z3. We set all of them + * into Montgomery representation. + */ + x1[19] = le8_to_le13(x1, G, 32); + memcpy(x3, x1, sizeof x1); + memset(z2, 0, sizeof z2); + memset(x2, 0, sizeof x2); + x2[0] = 1; + memset(z3, 0, sizeof z3); + z3[0] = 1; + + memset(k, 0, (sizeof k) - kblen); + memcpy(k + (sizeof k) - kblen, kb, kblen); + k[31] &= 0xF8; + k[0] &= 0x7F; + k[0] |= 0x40; + + /* obsolete + print_int("x1", x1); + */ + + swap = 0; + for (i = 254; i >= 0; i --) { + uint32_t kt; + + kt = (k[31 - (i >> 3)] >> (i & 7)) & 1; + swap ^= kt; + cswap(x2, x3, swap); + cswap(z2, z3, swap); + swap = kt; + + /* obsolete + print_int("x2", x2); + print_int("z2", z2); + print_int("x3", x3); + print_int("z3", z3); + */ + + f255_add(a, x2, z2); + f255_square(aa, a); + f255_sub(b, x2, z2); + f255_square(bb, b); + f255_sub(e, aa, bb); + f255_add(c, x3, z3); + f255_sub(d, x3, z3); + f255_mul(da, d, a); + f255_mul(cb, c, b); + + /* obsolete + print_int("a ", a); + print_int("aa", aa); + print_int("b ", b); + print_int("bb", bb); + print_int("e ", e); + print_int("c ", c); + print_int("d ", d); + print_int("da", da); + print_int("cb", cb); + */ + + f255_add(x3, da, cb); + f255_square(x3, x3); + f255_sub(z3, da, cb); + f255_square(z3, z3); + f255_mul(z3, z3, x1); + f255_mul(x2, aa, bb); + f255_mul_a24(z2, e); + f255_add(z2, z2, aa); + f255_mul(z2, e, z2); + + /* obsolete + print_int("x2", x2); + print_int("z2", z2); + print_int("x3", x3); + print_int("z3", z3); + */ + } + cswap(x2, x3, swap); + cswap(z2, z3, swap); + + /* + * Inverse z2 with a modular exponentiation. This is a simple + * square-and-multiply algorithm; we mutualise most non-squarings + * since the exponent contains almost only ones. + */ + memcpy(a, z2, sizeof z2); + for (i = 0; i < 15; i ++) { + f255_square(a, a); + f255_mul(a, a, z2); + } + memcpy(b, a, sizeof a); + for (i = 0; i < 14; i ++) { + int j; + + for (j = 0; j < 16; j ++) { + f255_square(b, b); + } + f255_mul(b, b, a); + } + for (i = 14; i >= 0; i --) { + f255_square(b, b); + if ((0xFFEB >> i) & 1) { + f255_mul(b, z2, b); + } + } + f255_mul(x2, x2, b); + reduce_final_f255(x2); + le13_to_le8(G, 32, x2); + return 1; +} + +static size_t +api_mulgen(unsigned char *R, + const unsigned char *x, size_t xlen, int curve) +{ + const unsigned char *G; + size_t Glen; + + G = api_generator(curve, &Glen); + memcpy_P(R, G, Glen); + api_mul(R, Glen, x, xlen, curve); + return Glen; +} + +static uint32_t +api_muladd(unsigned char *A, const unsigned char *B, size_t len, + const unsigned char *x, size_t xlen, + const unsigned char *y, size_t ylen, int curve) +{ + /* + * We don't implement this method, since it is used for ECDSA + * only, and there is no ECDSA over Curve25519 (which instead + * uses EdDSA). + */ + (void)A; + (void)B; + (void)len; + (void)x; + (void)xlen; + (void)y; + (void)ylen; + (void)curve; + return 0; +} + +/* see bearssl_ec.h */ +const br_ec_impl br_ec_c25519_m15 PROGMEM = { + (uint32_t)0x20000000, + &api_generator, + &api_order, + &api_xoff, + &api_mul, + &api_mulgen, + &api_muladd +}; \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_aes_gcm_lib.c b/lib/libesp32/Berry/default/be_crypto_lib.c similarity index 59% rename from lib/libesp32/Berry/default/be_aes_gcm_lib.c rename to lib/libesp32/Berry/default/be_crypto_lib.c index 3276cdd05..04a10b28e 100644 --- a/lib/libesp32/Berry/default/be_aes_gcm_lib.c +++ b/lib/libesp32/Berry/default/be_crypto_lib.c @@ -14,23 +14,29 @@ extern int m_aes_gcm_encryt(bvm *vm); extern int m_aes_gcm_decryt(bvm *vm); extern int m_aes_gcm_tag(bvm *vm); -#if BE_USE_PRECOMPILED_OBJECT -#include "../generate/be_fixed_be_class_aes_gcm.h" -#endif +extern int m_ec_c25519_pubkey(bvm *vm); +extern int m_ec_c25519_sharedkey(bvm *vm); -void be_load_aes_gcm_lib(bvm *vm) { +#include "../generate/be_fixed_be_class_aes_gcm.h" +#include "../generate/be_fixed_be_class_ec_c25519.h" + +void be_load_crypto_lib(bvm *vm) { // insert the class GCM in module AES be_newmodule(vm); - be_setname(vm, -1, "AES"); - be_setglobal(vm, "AES"); + be_setname(vm, -1, "crypto"); + be_setglobal(vm, "crypto"); be_pushntvclass(vm, &be_class_aes_gcm); - be_setmember(vm, -2, "GCM"); + be_setmember(vm, -2, "AES_GCM"); + be_pop(vm, 1); + + be_pushntvclass(vm, &be_class_ec_c25519); + be_setmember(vm, -2, "EC_C25519"); be_pop(vm, 2); } /* @const_object_info_begin -class be_class_aes_gcm (scope: global, name: GCM) { +class be_class_aes_gcm (scope: global, name: AES_GCM) { .p1, var .p2, var @@ -39,6 +45,12 @@ class be_class_aes_gcm (scope: global, name: GCM) { decrypt, func(m_aes_gcm_decryt) tag, func(m_aes_gcm_tag) } + +class be_class_ec_c25519 (scope: global, name: EC_C25519) { + public_key, func(m_ec_c25519_pubkey) + shared_key, func(m_ec_c25519_sharedkey) +} + @const_object_info_end */ #endif // USE_ALEXA_AVS diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 04e33c3d2..189da0e61 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -109,7 +109,7 @@ extern void be_load_Driver_class(bvm *vm); extern void be_load_Timer_class(bvm *vm); extern void be_load_driver_i2c_lib(bvm *vm); extern void be_load_md5_lib(bvm *vm); -extern void be_load_aes_gcm_lib(bvm *vm); +extern void be_load_crypto_lib(bvm *vm); #ifdef USE_I2S_AUDIO_BERRY extern void be_load_driver_audio_lib(bvm *vm); @@ -142,7 +142,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_Driver_class(vm); be_load_md5_lib(vm); #ifdef USE_ALEXA_AVS - be_load_aes_gcm_lib(vm); + be_load_crypto_lib(vm); #endif #ifdef USE_I2C be_load_wirelib(vm); diff --git a/lib/libesp32/Berry/default/embedded/test_crypto.be b/lib/libesp32/Berry/default/embedded/test_crypto.be new file mode 100644 index 000000000..f2edbfee5 --- /dev/null +++ b/lib/libesp32/Berry/default/embedded/test_crypto.be @@ -0,0 +1,30 @@ +ec = crypto.EC_C25519() + +# Alice +sk_A = bytes('77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a') +pk_A = ec.public_key(sk_A) +assert(pk_A == bytes('8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a')) + +# Bob +sk_B = bytes('5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb') +pk_B = ec.public_key(sk_B) +assert(pk_B == bytes('de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f')) + +psk = ec.shared_key(sk_A, pk_B) +assert(psk == bytes('4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742')) +psk2 = ec.shared_key(sk_B, pk_A) +assert(psk2 == bytes('4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742')) + +#- test vectors from RFC77748 + + Alice's private key, a: + 77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a + Alice's public key, X25519(a, 9): + 8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a + Bob's private key, b: + 5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb + Bob's public key, X25519(b, 9): + de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f + Their shared secret, K: + 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 +-# diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 905ac6f52..40a05da5a 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,663 +1,666 @@ -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_GCM; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_SPI_DC; extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_SYMBOL_WARNING; extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_as; extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_web_send_decimal; extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_ZIGBEE_RX; extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_ctypes_bytes; extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_search; +extern const bcstring be_const_str_lv_tileview; extern const bcstring be_const_str_srand; extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_time_str; extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_ADC_BUTTON_INV; extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_lower; extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_get; extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_add_driver; extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_deg; extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_OLED_RESET; extern const bcstring be_const_str_class; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_read_bytes; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index e1956547d..239d3ac8c 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,992 +1,997 @@ -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_BACKLIGHT); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_DHT11); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(GCM, "GCM", 3790320054u, 0, 3, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_ETH_PHY_MDC); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_AudioGenerator); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_DDS2382_RX); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_FTC532); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_lv_gauge); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_gauge); be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_CSE7766_RX); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_SM16716_SEL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_DDS2382_TX); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_MAX31855CLK); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_ILI9341_CS); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SYMBOL_LEFT); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, NULL); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_HX711_DAT); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ETH_PHY_POWER); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_SYMBOL_BATTERY_FULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_ETH_PHY_MDIO); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_I2C_Driver); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_NONE); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_AudioGeneratorWAV); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_MGC3130_XFER); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_RF_SENSOR); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_BOILER_OT_TX); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, &be_const_str_as); be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, NULL); -be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_LED1_INV); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_LE01MR_TX); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_state); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ETH_PHY_MDC); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_FTC532); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_P9813_DAT); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_IBEACON_RX); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, NULL); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_CSE7761_TX); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_DDS2382_RX); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_set_light); be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_class); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_DDS2382_TX); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_I2S_IN_SLCT); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_DHT11_OUT); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_AudioFileSource); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_class); be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_copy, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_def, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_HX711_SCK, NULL, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_ROT1A_NP, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_lv_point, - (const bstring *)&be_const_str_MAX31855CS, - NULL, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_raise, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_exp, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - NULL, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - NULL, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_PULLUP, - NULL, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_GCM, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_SSPI_MOSI, - NULL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_ADC_LIGHT, - NULL, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_LED1, - NULL, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_read, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_arg_name, - NULL, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_SYMBOL_HOME, - (const bstring *)&be_const_str_SYMBOL_WARNING, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_state, (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_web_send_decimal, + NULL, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_get_power, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_find, + (const bstring *)&be_const_str_read8, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_content_stop, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_lv_group, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, + NULL, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_wire2, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + NULL, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_ARIRFSEL, (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_KEY1_INV, (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str__write, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_WEBCAM_SIOD, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_NRG_SEL, + NULL, + (const bstring *)&be_const_str_dump, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_response_append, + (const bstring *)&be_const_str_lv_textarea, + (const bstring *)&be_const_str_LE01MR_TX, + NULL, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_EXS_ENABLE, + NULL, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_SYMBOL_WIFI, + NULL, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_LED1_INV, + NULL, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_SDS0X1_RX, (const bstring *)&be_const_str_RA8876_CS, NULL, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_lv_line, - (const bstring *)&be_const_str_init, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_LMT01, NULL, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_SSD1351_CS, - NULL, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_try_rule, - (const bstring *)&be_const_str_var, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_lv_gauge_format_cb, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_lv_event_cb, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_wire1, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_SYMBOL_PLUS, - NULL, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str__rules, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_CC1101_GDO0, - NULL, - (const bstring *)&be_const_str_erase, - (const bstring *)&be_const_str_rand, - NULL, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_SSPI_CS, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_push, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, - (const bstring *)&be_const_str_TXD, - NULL, - NULL, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_tostring, - (const bstring *)&be_const_str_PULLDOWN, - (const bstring *)&be_const_str_lv_img, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_LE01MR_RX, (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_chars_in_string, - (const bstring *)&be_const_str_select, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_rtc, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_module, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_MAX31855CLK, NULL, - (const bstring *)&be_const_str_add, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_lv_design_cb, - (const bstring *)&be_const_str_SYMBOL_WIFI, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_DSB, + NULL, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str__write, (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_time_dump, - (const bstring *)&be_const_str_classname, - (const bstring *)&be_const_str_lv_obj, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_lv_textarea, + (const bstring *)&be_const_str_SYMBOL_SETTINGS, + (const bstring *)&be_const_str_SYMBOL_GPS, + NULL, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_setbits, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_IBEACON_TX, NULL, NULL, + (const bstring *)&be_const_str_SYMBOL_STOP, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_lv_draw_rect_dsc, + (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_lv_table, + (const bstring *)&be_const_str_SYMBOL_EJECT, NULL, - (const bstring *)&be_const_str_MAX7219CLK, NULL, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_A4988_STP, (const bstring *)&be_const_str_I2S_IN_CLK, NULL, - (const bstring *)&be_const_str_WEBCAM_SIOD, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_try, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_detect, - NULL, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_IEM3000_RX, - NULL, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_LOW, - NULL, - (const bstring *)&be_const_str_lv_draw_img_dsc, - NULL, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_SYMBOL_NEW_LINE, - (const bstring *)&be_const_str_TELEINFO_RX, - NULL, - NULL, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_map, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_lv_linemeter, - (const bstring *)&be_const_str_count, - NULL, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_content_button, - (const bstring *)&be_const_str_AudioGeneratorMP3, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_exists, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_SENSOR_END, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - NULL, - NULL, - (const bstring *)&be_const_str_content_start, - NULL, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_str, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str_montserrat_font, + (const bstring *)&be_const_str_SYMBOL_CALL, (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_super, + (const bstring *)&be_const_str_ARIRFRCV, (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - NULL, - (const bstring *)&be_const_str_WE517_RX, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_A4988_ENA, - NULL, - (const bstring *)&be_const_str_cos, - (const bstring *)&be_const_str_module, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_resize, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_nil, - (const bstring *)&be_const_str_lv_slider, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_lv_tabview, (const bstring *)&be_const_str_KEY1_TC, + NULL, + (const bstring *)&be_const_str_get_free_heap, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_gen_cb, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_lv_draw_label_dsc, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_web_send, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_lv_roller, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_get_light, + NULL, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_digital_write, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_item, + (const bstring *)&be_const_str_time_dump, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_on, + (const bstring *)&be_const_str_try_rule, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_SWT1_NP, (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_set_light, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_DEEPSLEEP, + NULL, + NULL, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_lv_event_cb, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SYMBOL_HOME, + NULL, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_return, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_lv_draw_mask_saved, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SOLAXX1_RX, + NULL, + (const bstring *)&be_const_str_pin_mode, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_pop, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_cb_dispatch, + (const bstring *)&be_const_str_ADC_INPUT, + NULL, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_wire1, + (const bstring *)&be_const_str_SYMBOL_CUT, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str_opt_eq, + NULL, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_SSPI_CS, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_SSD1331_DC, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_lv_dropdown, + (const bstring *)&be_const_str_HM10_TX, + NULL, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, + NULL, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_SSD1331_CS, + NULL, + (const bstring *)&be_const_str_publish, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + NULL, + NULL, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + NULL, + (const bstring *)&be_const_str_EPD_DATA, + NULL, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_SSD1351_CS, NULL, (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_ADC_LIGHT, NULL, - (const bstring *)&be_const_str_atan + (const bstring *)&be_const_str_setitem, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_OUTPUT_LO, + NULL, + NULL, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_if, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + NULL, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_HIGH, + NULL, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_asstring, + (const bstring *)&be_const_str_toint, + (const bstring *)&be_const_str_MAX31855DO, + NULL, + (const bstring *)&be_const_str_ILI9341_DC, + NULL, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_remove_timer, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_lv_list, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + NULL, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_I2C_SCL, + NULL, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_erase }; static const struct bconststrtab m_const_string_table = { - .size = 320, - .count = 641, + .size = 322, + .count = 644, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h b/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h index a603e4de3..829383a3f 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_aes_gcm.h @@ -18,5 +18,5 @@ BE_EXPORT_VARIABLE be_define_const_class( be_class_aes_gcm, 2, NULL, - GCM + AES_GCM ); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h b/lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h new file mode 100644 index 000000000..87182a254 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_ec_c25519.h @@ -0,0 +1,18 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_ec_c25519_map) { + { be_const_key(public_key, 1), be_const_func(m_ec_c25519_pubkey) }, + { be_const_key(shared_key, -1), be_const_func(m_ec_c25519_sharedkey) }, +}; + +static be_define_const_map( + be_class_ec_c25519_map, + 2 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_ec_c25519, + 0, + NULL, + EC_C25519 +); diff --git a/tasmota/xdrv_52_3_berry_aes_gcm.ino b/tasmota/xdrv_52_3_berry_crypto.ino similarity index 66% rename from tasmota/xdrv_52_3_berry_aes_gcm.ino rename to tasmota/xdrv_52_3_berry_crypto.ino index ae0559794..e80f585ce 100644 --- a/tasmota/xdrv_52_3_berry_aes_gcm.ino +++ b/tasmota/xdrv_52_3_berry_crypto.ino @@ -146,50 +146,73 @@ extern "C" { } while (0); be_raise(vm, kTypeError, nullptr); } +} -// // `Md5.update(content:bytes()) -> nil` -// // -// // Add raw bytes to the MD5 calculation -// int32_t m_md5_update(struct bvm *vm); -// int32_t m_md5_update(struct bvm *vm) { -// int32_t argc = be_top(vm); // Get the number of arguments -// if (argc >= 2 && be_isinstance(vm, 2)) { -// do { -// be_getglobal(vm, "bytes"); /* get the bytes class */ /* TODO eventually replace with be_getbuiltin */ -// if (!be_isderived(vm, 2)) break; -// size_t length = 0; -// const void * bytes = be_tobytes(vm, 2, &length); -// if (!bytes) break; +/*********************************************************************************************\ + * EC C25519 class + * +\*********************************************************************************************/ +#define BR_EC25519_IMPL br_ec_c25519_m15 // BearSSL implementation for Curve 25519 -// be_getmember(vm, 1, ".p"); -// struct MD5Context * ctx; -// ctx = (struct MD5Context *) be_tocomptr(vm, -1); -// if (!ctx) break; +extern "C" { + // crypto.EC_C25519().public_key(private_key:bytes(32)) -> bytes(32) + // Computes the public key from a completely random private key of 32 bytes + int32_t m_ec_c25519_pubkey(bvm *vm); + int32_t m_ec_c25519_pubkey(bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc >= 2 && be_isbytes(vm, 2)) { + size_t buf_len = 0; + const uint8_t * buf = (const uint8_t*) be_tobytes(vm, 2, &buf_len); + if (buf_len == 32) { + /* create the private key structure */ + uint8_t sk[32]; + for (int32_t i=0; i<32; i++) { + sk[i] = buf[31-i]; + } + br_ec_private_key br_sk = { BR_EC_curve25519, sk, 32 }; -// if (length > 0) { -// MD5Update(ctx, (const uint8_t*) bytes, length); -// } -// be_return_nil(vm); -// // success -// } while (0); -// } -// be_raise(vm, kTypeError, nullptr); -// } + uint8_t pk_buf[32]; /* EC 25519 is 32 bytes */ + size_t ret = br_ec_compute_pub(&BR_EC25519_IMPL, nullptr, pk_buf, &br_sk); + if (ret == 32) { + be_pushbytes(vm, pk_buf, ret); + be_return(vm); + } + } + be_raise(vm, "value_error", "invalid input"); + } + be_raise(vm, kTypeError, nullptr); + } -// // `Md5.update(content:bytes()) -> nil` -// // -// // Add raw bytes to the MD5 calculation -// int32_t m_md5_finish(struct bvm *vm); -// int32_t m_md5_finish(struct bvm *vm) { -// be_getmember(vm, 1, ".p"); -// struct MD5Context * ctx; -// ctx = (struct MD5Context *) be_tocomptr(vm, -1); + // crypto.EC_C25519().shared_key(my_private_key:bytes(32), their_public_key:bytes(32)) -> bytes(32) + // Computes the shared pre-key. Normally this shared pre-key is hashed with another algorithm. + int32_t m_ec_c25519_sharedkey(bvm *vm); + int32_t m_ec_c25519_sharedkey(bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc >= 3 && be_isbytes(vm, 2) && be_isbytes(vm, 3)) { + size_t sk_len = 0; + const uint8_t * sk_buf = (const uint8_t*) be_tobytes(vm, 2, &sk_len); + uint8_t sk[32]; + for (int32_t i=0; i<32; i++) { + sk[i] = sk_buf[31-i]; + } + size_t pk_len = 0; + const uint8_t * pk_const = (const uint8_t*) be_tobytes(vm, 3, &pk_len); + uint8_t pk[32]; + memmove(pk, pk_const, sizeof(pk)); /* copy to a non-const variable to receive the result */ -// uint8_t output[16]; -// MD5Final(output, ctx); -// be_pushbytes(vm, output, sizeof(output)); -// be_return(vm); -// } + if (sk_len == 32 && pk_len == 32) { + if (BR_EC25519_IMPL.mul(pk, pk_len, sk, sk_len, BR_EC_curve25519)) { + /* return value (xoff is zero so no offset) */ + be_pushbytes(vm, pk, pk_len); + be_return(vm); + } else { + be_raise(vm, "internal_error", "internal bearssl error in 519_m15.mul()"); + } + } + be_raise(vm, "value_error", "invalid input"); + } + be_raise(vm, kTypeError, nullptr); + } } #endif // USE_ALEXA_AVS From 066029cd9724301b3a0897ff03a219eb1d9e9cd8 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 30 Aug 2021 21:08:41 +0200 Subject: [PATCH 109/317] IRremoteESP8266 library from v2.7.19 to v2.7.20 --- CHANGELOG.md | 1 + .../IRremoteESP8266/IRremoteESP8266/Doxyfile | 1 + .../IRremoteESP8266/IRremoteESP8266/README.md | 11 +- .../IRremoteESP8266/README_de.md | 12 +- .../IRremoteESP8266/README_fr.md | 13 +- .../IRremoteESP8266/ReleaseNotes.md | 33 + .../IRremoteESP8266/SupportedProtocols.md | 22 +- .../IRremoteESP8266/docs/README.md | 61 - .../IRremoteESP8266/docs/README_de.md | 59 - .../IRremoteESP8266/docs/README_fr.md | 64 - .../IRremoteESP8266/docs/_config.yml | 1 - .../docs/doxygen/html/IRac_8cpp.html | 99 - .../docs/doxygen/html/IRac_8h.html | 132 - .../docs/doxygen/html/IRac_8h_source.html | 746 -- .../docs/doxygen/html/IRrecv_8cpp.html | 119 - .../docs/doxygen/html/IRrecv_8h.html | 425 - .../docs/doxygen/html/IRrecv_8h_source.html | 1095 --- .../docs/doxygen/html/IRremoteESP8266_8h.html | 4077 -------- .../html/IRremoteESP8266_8h_source.html | 1668 ---- .../docs/doxygen/html/IRsend_8cpp.html | 80 - .../docs/doxygen/html/IRsend_8h.html | 479 - .../docs/doxygen/html/IRsend_8h_source.html | 1209 --- .../docs/doxygen/html/IRtext_8cpp.html | 2959 ------ .../docs/doxygen/html/IRtext_8h.html | 2959 ------ .../docs/doxygen/html/IRtext_8h_source.html | 399 - .../docs/doxygen/html/IRtimer_8cpp.html | 119 - .../docs/doxygen/html/IRtimer_8h.html | 94 - .../docs/doxygen/html/IRtimer_8h_source.html | 128 - .../docs/doxygen/html/IRutils_8cpp.html | 933 -- .../docs/doxygen/html/IRutils_8h.html | 1004 -- .../docs/doxygen/html/IRutils_8h_source.html | 268 - .../docs/doxygen/html/README_8md.html | 76 - .../docs/doxygen/html/annotated.html | 193 - .../docs/doxygen/html/bc_s.png | Bin 676 -> 0 bytes .../docs/doxygen/html/bdwn.png | Bin 147 -> 0 bytes .../html/classIRAirwellAc-members.html | 102 - .../docs/doxygen/html/classIRAirwellAc.html | 793 -- .../html/classIRAirwellAc__coll__graph.map | 5 - .../html/classIRAirwellAc__coll__graph.md5 | 1 - .../html/classIRAirwellAc__coll__graph.png | Bin 5989 -> 0 bytes .../doxygen/html/classIRAmcorAc-members.html | 109 - .../docs/doxygen/html/classIRAmcorAc.html | 1022 -- .../html/classIRAmcorAc__coll__graph.map | 5 - .../html/classIRAmcorAc__coll__graph.md5 | 1 - .../html/classIRAmcorAc__coll__graph.png | Bin 5829 -> 0 bytes .../doxygen/html/classIRArgoAC-members.html | 122 - .../docs/doxygen/html/classIRArgoAC.html | 1383 --- .../html/classIRArgoAC__coll__graph.map | 5 - .../html/classIRArgoAC__coll__graph.md5 | 1 - .../html/classIRArgoAC__coll__graph.png | Bin 5939 -> 0 bytes .../html/classIRCarrierAc64-members.html | 117 - .../docs/doxygen/html/classIRCarrierAc64.html | 1228 --- .../html/classIRCarrierAc64__coll__graph.map | 5 - .../html/classIRCarrierAc64__coll__graph.md5 | 1 - .../html/classIRCarrierAc64__coll__graph.png | Bin 6489 -> 0 bytes .../doxygen/html/classIRCoolixAC-members.html | 137 - .../docs/doxygen/html/classIRCoolixAC.html | 1758 ---- .../html/classIRCoolixAC__coll__graph.map | 5 - .../html/classIRCoolixAC__coll__graph.md5 | 1 - .../html/classIRCoolixAC__coll__graph.png | Bin 6023 -> 0 bytes .../doxygen/html/classIRCoronaAc-members.html | 119 - .../docs/doxygen/html/classIRCoronaAc.html | 1347 --- .../html/classIRCoronaAc__coll__graph.map | 6 - .../html/classIRCoronaAc__coll__graph.md5 | 1 - .../html/classIRCoronaAc__coll__graph.png | Bin 7060 -> 0 bytes .../html/classIRDaikin128-members.html | 128 - .../docs/doxygen/html/classIRDaikin128.html | 1526 --- .../html/classIRDaikin128__coll__graph.map | 5 - .../html/classIRDaikin128__coll__graph.md5 | 1 - .../html/classIRDaikin128__coll__graph.png | Bin 6783 -> 0 bytes .../html/classIRDaikin152-members.html | 116 - .../docs/doxygen/html/classIRDaikin152.html | 1175 --- .../html/classIRDaikin152__coll__graph.map | 5 - .../html/classIRDaikin152__coll__graph.md5 | 1 - .../html/classIRDaikin152__coll__graph.png | Bin 6616 -> 0 bytes .../html/classIRDaikin160-members.html | 108 - .../docs/doxygen/html/classIRDaikin160.html | 986 -- .../html/classIRDaikin160__coll__graph.map | 5 - .../html/classIRDaikin160__coll__graph.md5 | 1 - .../html/classIRDaikin160__coll__graph.png | Bin 6831 -> 0 bytes .../html/classIRDaikin176-members.html | 111 - .../docs/doxygen/html/classIRDaikin176.html | 1089 --- .../html/classIRDaikin176__coll__graph.map | 5 - .../html/classIRDaikin176__coll__graph.md5 | 1 - .../html/classIRDaikin176__coll__graph.png | Bin 6624 -> 0 bytes .../doxygen/html/classIRDaikin2-members.html | 152 - .../docs/doxygen/html/classIRDaikin2.html | 2169 ----- .../html/classIRDaikin216-members.html | 112 - .../docs/doxygen/html/classIRDaikin216.html | 1071 --- .../html/classIRDaikin216__coll__graph.map | 5 - .../html/classIRDaikin216__coll__graph.md5 | 1 - .../html/classIRDaikin216__coll__graph.png | Bin 6721 -> 0 bytes .../html/classIRDaikin2__coll__graph.map | 5 - .../html/classIRDaikin2__coll__graph.md5 | 1 - .../html/classIRDaikin2__coll__graph.png | Bin 6058 -> 0 bytes .../doxygen/html/classIRDaikin64-members.html | 123 - .../docs/doxygen/html/classIRDaikin64.html | 1396 --- .../html/classIRDaikin64__coll__graph.map | 5 - .../html/classIRDaikin64__coll__graph.md5 | 1 - .../html/classIRDaikin64__coll__graph.png | Bin 6496 -> 0 bytes .../html/classIRDaikinESP-members.html | 136 - .../docs/doxygen/html/classIRDaikinESP.html | 1729 ---- .../html/classIRDaikinESP__coll__graph.map | 5 - .../html/classIRDaikinESP__coll__graph.md5 | 1 - .../html/classIRDaikinESP__coll__graph.png | Bin 6532 -> 0 bytes .../html/classIRDelonghiAc-members.html | 123 - .../docs/doxygen/html/classIRDelonghiAc.html | 1396 --- .../html/classIRDelonghiAc__coll__graph.map | 5 - .../html/classIRDelonghiAc__coll__graph.md5 | 1 - .../html/classIRDelonghiAc__coll__graph.png | Bin 6477 -> 0 bytes .../html/classIREcoclimAc-members.html | 118 - .../docs/doxygen/html/classIREcoclimAc.html | 1203 --- .../html/classIREcoclimAc__coll__graph.map | 5 - .../html/classIREcoclimAc__coll__graph.md5 | 1 - .../html/classIREcoclimAc__coll__graph.png | Bin 5767 -> 0 bytes .../html/classIRElectraAc-members.html | 117 - .../docs/doxygen/html/classIRElectraAc.html | 1256 --- .../html/classIRElectraAc__coll__graph.map | 5 - .../html/classIRElectraAc__coll__graph.md5 | 1 - .../html/classIRElectraAc__coll__graph.png | Bin 5826 -> 0 bytes .../html/classIRFujitsuAC-members.html | 143 - .../docs/doxygen/html/classIRFujitsuAC.html | 1950 ---- .../html/classIRFujitsuAC__coll__graph.map | 5 - .../html/classIRFujitsuAC__coll__graph.md5 | 1 - .../html/classIRFujitsuAC__coll__graph.png | Bin 5790 -> 0 bytes .../html/classIRGoodweatherAc-members.html | 115 - .../doxygen/html/classIRGoodweatherAc.html | 1143 --- .../classIRGoodweatherAc__coll__graph.map | 5 - .../classIRGoodweatherAc__coll__graph.md5 | 1 - .../classIRGoodweatherAc__coll__graph.png | Bin 7130 -> 0 bytes .../doxygen/html/classIRGreeAC-members.html | 135 - .../docs/doxygen/html/classIRGreeAC.html | 1773 ---- .../html/classIRGreeAC__coll__graph.map | 5 - .../html/classIRGreeAC__coll__graph.md5 | 1 - .../html/classIRGreeAC__coll__graph.png | Bin 5813 -> 0 bytes .../doxygen/html/classIRHaierAC-members.html | 119 - .../docs/doxygen/html/classIRHaierAC.html | 1303 --- .../html/classIRHaierACYRW02-members.html | 118 - .../doxygen/html/classIRHaierACYRW02.html | 1274 --- .../html/classIRHaierACYRW02__coll__graph.map | 5 - .../html/classIRHaierACYRW02__coll__graph.md5 | 1 - .../html/classIRHaierACYRW02__coll__graph.png | Bin 7509 -> 0 bytes .../html/classIRHaierAC__coll__graph.map | 5 - .../html/classIRHaierAC__coll__graph.md5 | 1 - .../html/classIRHaierAC__coll__graph.png | Bin 5758 -> 0 bytes .../html/classIRHitachiAc-members.html | 112 - .../docs/doxygen/html/classIRHitachiAc.html | 1121 --- .../html/classIRHitachiAc1-members.html | 123 - .../docs/doxygen/html/classIRHitachiAc1.html | 1428 --- .../html/classIRHitachiAc1__coll__graph.map | 5 - .../html/classIRHitachiAc1__coll__graph.md5 | 1 - .../html/classIRHitachiAc1__coll__graph.png | Bin 5926 -> 0 bytes .../html/classIRHitachiAc3-members.html | 91 - .../docs/doxygen/html/classIRHitachiAc3.html | 498 - .../html/classIRHitachiAc344-members.html | 118 - .../doxygen/html/classIRHitachiAc344.html | 615 -- .../html/classIRHitachiAc344__coll__graph.map | 6 - .../html/classIRHitachiAc344__coll__graph.md5 | 1 - .../html/classIRHitachiAc344__coll__graph.png | Bin 8528 -> 0 bytes .../classIRHitachiAc344__inherit__graph.map | 4 - .../classIRHitachiAc344__inherit__graph.md5 | 1 - .../classIRHitachiAc344__inherit__graph.png | Bin 3189 -> 0 bytes .../html/classIRHitachiAc3__coll__graph.map | 4 - .../html/classIRHitachiAc3__coll__graph.md5 | 1 - .../html/classIRHitachiAc3__coll__graph.png | Bin 3209 -> 0 bytes .../html/classIRHitachiAc424-members.html | 112 - .../doxygen/html/classIRHitachiAc424.html | 1149 --- .../html/classIRHitachiAc424__coll__graph.map | 5 - .../html/classIRHitachiAc424__coll__graph.md5 | 1 - .../html/classIRHitachiAc424__coll__graph.png | Bin 6450 -> 0 bytes .../classIRHitachiAc424__inherit__graph.map | 4 - .../classIRHitachiAc424__inherit__graph.md5 | 1 - .../classIRHitachiAc424__inherit__graph.png | Bin 3162 -> 0 bytes .../html/classIRHitachiAc__coll__graph.map | 5 - .../html/classIRHitachiAc__coll__graph.md5 | 1 - .../html/classIRHitachiAc__coll__graph.png | Bin 5726 -> 0 bytes .../doxygen/html/classIRKelonAc-members.html | 118 - .../docs/doxygen/html/classIRKelonAc.html | 1209 --- .../html/classIRKelonAc__coll__graph.map | 5 - .../html/classIRKelonAc__coll__graph.md5 | 1 - .../html/classIRKelonAc__coll__graph.png | Bin 5872 -> 0 bytes .../html/classIRKelvinatorAC-members.html | 121 - .../doxygen/html/classIRKelvinatorAC.html | 1340 --- .../html/classIRKelvinatorAC__coll__graph.map | 5 - .../html/classIRKelvinatorAC__coll__graph.md5 | 1 - .../html/classIRKelvinatorAC__coll__graph.png | Bin 6816 -> 0 bytes .../doxygen/html/classIRLgAc-members.html | 113 - .../docs/doxygen/html/classIRLgAc.html | 1117 --- .../doxygen/html/classIRLgAc__coll__graph.map | 5 - .../doxygen/html/classIRLgAc__coll__graph.md5 | 1 - .../doxygen/html/classIRLgAc__coll__graph.png | Bin 5431 -> 0 bytes .../doxygen/html/classIRMideaAC-members.html | 143 - .../docs/doxygen/html/classIRMideaAC.html | 1927 ---- .../html/classIRMideaAC__coll__graph.map | 5 - .../html/classIRMideaAC__coll__graph.md5 | 1 - .../html/classIRMideaAC__coll__graph.png | Bin 6165 -> 0 bytes .../html/classIRMitsubishi112-members.html | 115 - .../doxygen/html/classIRMitsubishi112.html | 1188 --- .../classIRMitsubishi112__coll__graph.map | 5 - .../classIRMitsubishi112__coll__graph.md5 | 1 - .../classIRMitsubishi112__coll__graph.png | Bin 6763 -> 0 bytes .../html/classIRMitsubishi136-members.html | 112 - .../doxygen/html/classIRMitsubishi136.html | 1106 --- .../classIRMitsubishi136__coll__graph.map | 5 - .../classIRMitsubishi136__coll__graph.md5 | 1 - .../classIRMitsubishi136__coll__graph.png | Bin 7217 -> 0 bytes .../html/classIRMitsubishiAC-members.html | 125 - .../doxygen/html/classIRMitsubishiAC.html | 1497 --- .../html/classIRMitsubishiAC__coll__graph.map | 5 - .../html/classIRMitsubishiAC__coll__graph.md5 | 1 - .../html/classIRMitsubishiAC__coll__graph.png | Bin 6838 -> 0 bytes .../classIRMitsubishiHeavy152Ac-members.html | 129 - .../html/classIRMitsubishiHeavy152Ac.html | 1591 ---- ...assIRMitsubishiHeavy152Ac__coll__graph.map | 5 - ...assIRMitsubishiHeavy152Ac__coll__graph.md5 | 1 - ...assIRMitsubishiHeavy152Ac__coll__graph.png | Bin 7981 -> 0 bytes .../classIRMitsubishiHeavy88Ac-members.html | 122 - .../html/classIRMitsubishiHeavy88Ac.html | 1394 --- ...lassIRMitsubishiHeavy88Ac__coll__graph.map | 5 - ...lassIRMitsubishiHeavy88Ac__coll__graph.md5 | 1 - ...lassIRMitsubishiHeavy88Ac__coll__graph.png | Bin 7602 -> 0 bytes .../html/classIRNeoclimaAc-members.html | 133 - .../docs/doxygen/html/classIRNeoclimaAc.html | 1687 ---- .../html/classIRNeoclimaAc__coll__graph.map | 5 - .../html/classIRNeoclimaAc__coll__graph.md5 | 1 - .../html/classIRNeoclimaAc__coll__graph.png | Bin 6475 -> 0 bytes .../html/classIRPanasonicAc-members.html | 138 - .../docs/doxygen/html/classIRPanasonicAc.html | 1936 ---- .../html/classIRPanasonicAc32-members.html | 108 - .../doxygen/html/classIRPanasonicAc32.html | 986 -- .../classIRPanasonicAc32__coll__graph.map | 5 - .../classIRPanasonicAc32__coll__graph.md5 | 1 - .../classIRPanasonicAc32__coll__graph.png | Bin 7290 -> 0 bytes .../html/classIRPanasonicAc__coll__graph.map | 4 - .../html/classIRPanasonicAc__coll__graph.md5 | 1 - .../html/classIRPanasonicAc__coll__graph.png | Bin 3434 -> 0 bytes .../html/classIRSamsungAc-members.html | 128 - .../docs/doxygen/html/classIRSamsungAc.html | 1599 ---- .../html/classIRSamsungAc__coll__graph.map | 5 - .../html/classIRSamsungAc__coll__graph.md5 | 1 - .../html/classIRSamsungAc__coll__graph.png | Bin 7008 -> 0 bytes .../doxygen/html/classIRSanyoAc-members.html | 121 - .../docs/doxygen/html/classIRSanyoAc.html | 1375 --- .../html/classIRSanyoAc__coll__graph.map | 5 - .../html/classIRSanyoAc__coll__graph.md5 | 1 - .../html/classIRSanyoAc__coll__graph.png | Bin 6451 -> 0 bytes .../doxygen/html/classIRSharpAc-members.html | 137 - .../docs/doxygen/html/classIRSharpAc.html | 1897 ---- .../html/classIRSharpAc__coll__graph.map | 5 - .../html/classIRSharpAc__coll__graph.md5 | 1 - .../html/classIRSharpAc__coll__graph.png | Bin 6284 -> 0 bytes .../doxygen/html/classIRTcl112Ac-members.html | 119 - .../docs/doxygen/html/classIRTcl112Ac.html | 1312 --- .../html/classIRTcl112Ac__coll__graph.map | 5 - .../html/classIRTcl112Ac__coll__graph.md5 | 1 - .../html/classIRTcl112Ac__coll__graph.png | Bin 5627 -> 0 bytes .../html/classIRTechnibelAc-members.html | 122 - .../docs/doxygen/html/classIRTechnibelAc.html | 1374 --- .../html/classIRTechnibelAc__coll__graph.map | 5 - .../html/classIRTechnibelAc__coll__graph.md5 | 1 - .../html/classIRTechnibelAc__coll__graph.png | Bin 6013 -> 0 bytes .../doxygen/html/classIRTecoAc-members.html | 117 - .../docs/doxygen/html/classIRTecoAc.html | 1196 --- .../html/classIRTecoAc__coll__graph.map | 5 - .../html/classIRTecoAc__coll__graph.md5 | 1 - .../html/classIRTecoAc__coll__graph.png | Bin 5539 -> 0 bytes .../html/classIRToshibaAC-members.html | 122 - .../docs/doxygen/html/classIRToshibaAC.html | 1448 --- .../html/classIRToshibaAC__coll__graph.map | 5 - .../html/classIRToshibaAC__coll__graph.md5 | 1 - .../html/classIRToshibaAC__coll__graph.png | Bin 6229 -> 0 bytes .../html/classIRTranscoldAc-members.html | 112 - .../docs/doxygen/html/classIRTranscoldAc.html | 1078 --- .../html/classIRTranscoldAc__coll__graph.map | 5 - .../html/classIRTranscoldAc__coll__graph.md5 | 1 - .../html/classIRTranscoldAc__coll__graph.png | Bin 6296 -> 0 bytes .../html/classIRTrotecESP-members.html | 113 - .../docs/doxygen/html/classIRTrotecESP.html | 1139 --- .../html/classIRTrotecESP__coll__graph.map | 5 - .../html/classIRTrotecESP__coll__graph.md5 | 1 - .../html/classIRTrotecESP__coll__graph.png | Bin 5848 -> 0 bytes .../doxygen/html/classIRTrumaAc-members.html | 111 - .../docs/doxygen/html/classIRTrumaAc.html | 1057 --- .../html/classIRTrumaAc__coll__graph.map | 5 - .../html/classIRTrumaAc__coll__graph.md5 | 1 - .../html/classIRTrumaAc__coll__graph.png | Bin 5927 -> 0 bytes .../doxygen/html/classIRVestelAc-members.html | 132 - .../docs/doxygen/html/classIRVestelAc.html | 1619 ---- .../html/classIRVestelAc__coll__graph.map | 5 - .../html/classIRVestelAc__coll__graph.md5 | 1 - .../html/classIRVestelAc__coll__graph.png | Bin 5961 -> 0 bytes .../doxygen/html/classIRVoltas-members.html | 130 - .../docs/doxygen/html/classIRVoltas.html | 1585 ---- .../html/classIRVoltas__coll__graph.map | 5 - .../html/classIRVoltas__coll__graph.md5 | 1 - .../html/classIRVoltas__coll__graph.png | Bin 5880 -> 0 bytes .../html/classIRWhirlpoolAc-members.html | 130 - .../docs/doxygen/html/classIRWhirlpoolAc.html | 1647 ---- .../html/classIRWhirlpoolAc__coll__graph.map | 5 - .../html/classIRWhirlpoolAc__coll__graph.md5 | 1 - .../html/classIRWhirlpoolAc__coll__graph.png | Bin 6537 -> 0 bytes .../docs/doxygen/html/classIRac-members.html | 160 - .../docs/doxygen/html/classIRac.html | 6544 ------------- .../doxygen/html/classIRac__coll__graph.map | 4 - .../doxygen/html/classIRac__coll__graph.md5 | 1 - .../doxygen/html/classIRac__coll__graph.png | Bin 3252 -> 0 bytes .../doxygen/html/classIRrecv-members.html | 207 - .../docs/doxygen/html/classIRrecv.html | 8301 ----------------- .../doxygen/html/classIRrecv__coll__graph.map | 4 - .../doxygen/html/classIRrecv__coll__graph.md5 | 1 - .../doxygen/html/classIRrecv__coll__graph.png | Bin 3293 -> 0 bytes .../doxygen/html/classIRsend-members.html | 229 - .../docs/doxygen/html/classIRsend.html | 7377 --------------- .../doxygen/html/classIRtimer-members.html | 84 - .../docs/doxygen/html/classIRtimer.html | 238 - .../doxygen/html/classTimerMs-members.html | 84 - .../docs/doxygen/html/classTimerMs.html | 238 - .../html/classdecode__results-members.html | 89 - .../doxygen/html/classdecode__results.html | 274 - .../docs/doxygen/html/classes.html | 257 - .../docs/doxygen/html/closed.png | Bin 132 -> 0 bytes .../docs/doxygen/html/de-CH_8h.html | 82 - .../docs/doxygen/html/de-CH_8h_source.html | 239 - .../docs/doxygen/html/de-DE_8h.html | 82 - .../docs/doxygen/html/de-DE_8h_source.html | 215 - .../docs/doxygen/html/defaults_8h.html | 82 - .../docs/doxygen/html/defaults_8h_source.html | 913 -- .../docs/doxygen/html/deprecated.html | 85 - .../dir_49e56c817e5e54854c35e136979f97ca.html | 80 - .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 434 - .../dir_84fe998d1eb06414cc389ad334e77e63.html | 108 - .../IRremoteESP8266/docs/doxygen/html/doc.png | Bin 746 -> 0 bytes .../docs/doxygen/html/doxygen.css | 1771 ---- .../docs/doxygen/html/doxygen.png | Bin 3779 -> 0 bytes .../docs/doxygen/html/doxygen__index_8md.html | 76 - .../docs/doxygen/html/dynsections.js | 120 - .../docs/doxygen/html/en-AU_8h.html | 82 - .../docs/doxygen/html/en-AU_8h_source.html | 88 - .../docs/doxygen/html/en-IE_8h.html | 82 - .../docs/doxygen/html/en-IE_8h_source.html | 88 - .../docs/doxygen/html/en-UK_8h.html | 82 - .../docs/doxygen/html/en-UK_8h_source.html | 88 - .../docs/doxygen/html/en-US_8h.html | 82 - .../docs/doxygen/html/en-US_8h_source.html | 93 - .../docs/doxygen/html/es-ES_8h.html | 82 - .../docs/doxygen/html/es-ES_8h_source.html | 216 - .../docs/doxygen/html/files.html | 215 - .../docs/doxygen/html/folderclosed.png | Bin 616 -> 0 bytes .../docs/doxygen/html/folderopen.png | Bin 597 -> 0 bytes .../docs/doxygen/html/fr-FR_8h.html | 82 - .../docs/doxygen/html/fr-FR_8h_source.html | 197 - .../docs/doxygen/html/functions.html | 793 -- .../docs/doxygen/html/functions_a.html | 98 - .../docs/doxygen/html/functions_b.html | 173 - .../docs/doxygen/html/functions_c.html | 493 - .../docs/doxygen/html/functions_d.html | 437 - .../docs/doxygen/html/functions_e.html | 181 - .../docs/doxygen/html/functions_f.html | 183 - .../docs/doxygen/html/functions_func.html | 131 - .../docs/doxygen/html/functions_func_a.html | 89 - .../docs/doxygen/html/functions_func_b.html | 136 - .../docs/doxygen/html/functions_func_c.html | 399 - .../docs/doxygen/html/functions_func_d.html | 398 - .../docs/doxygen/html/functions_func_e.html | 156 - .../docs/doxygen/html/functions_func_f.html | 89 - .../docs/doxygen/html/functions_func_g.html | 917 -- .../docs/doxygen/html/functions_func_h.html | 107 - .../docs/doxygen/html/functions_func_i.html | 299 - .../docs/doxygen/html/functions_func_k.html | 82 - .../docs/doxygen/html/functions_func_l.html | 85 - .../docs/doxygen/html/functions_func_m.html | 139 - .../docs/doxygen/html/functions_func_n.html | 79 - .../docs/doxygen/html/functions_func_o.html | 169 - .../docs/doxygen/html/functions_func_p.html | 82 - .../docs/doxygen/html/functions_func_r.html | 86 - .../docs/doxygen/html/functions_func_s.html | 1364 --- .../docs/doxygen/html/functions_func_t.html | 347 - .../docs/doxygen/html/functions_func_u.html | 82 - .../docs/doxygen/html/functions_func_v.html | 126 - .../docs/doxygen/html/functions_func_w.html | 79 - .../docs/doxygen/html/functions_func_~.html | 79 - .../docs/doxygen/html/functions_g.html | 917 -- .../docs/doxygen/html/functions_h.html | 142 - .../docs/doxygen/html/functions_i.html | 330 - .../docs/doxygen/html/functions_j.html | 79 - .../docs/doxygen/html/functions_k.html | 82 - .../docs/doxygen/html/functions_l.html | 127 - .../docs/doxygen/html/functions_m.html | 228 - .../docs/doxygen/html/functions_n.html | 86 - .../docs/doxygen/html/functions_o.html | 313 - .../docs/doxygen/html/functions_p.html | 237 - .../docs/doxygen/html/functions_q.html | 91 - .../docs/doxygen/html/functions_r.html | 162 - .../docs/doxygen/html/functions_rela.html | 77 - .../docs/doxygen/html/functions_s.html | 1630 ---- .../docs/doxygen/html/functions_t.html | 489 - .../docs/doxygen/html/functions_u.html | 111 - .../docs/doxygen/html/functions_v.html | 141 - .../docs/doxygen/html/functions_vars.html | 738 -- .../docs/doxygen/html/functions_vars_a.html | 85 - .../docs/doxygen/html/functions_vars_b.html | 113 - .../docs/doxygen/html/functions_vars_c.html | 170 - .../docs/doxygen/html/functions_vars_d.html | 115 - .../docs/doxygen/html/functions_vars_e.html | 101 - .../docs/doxygen/html/functions_vars_f.html | 170 - .../docs/doxygen/html/functions_vars_h.html | 111 - .../docs/doxygen/html/functions_vars_i.html | 106 - .../docs/doxygen/html/functions_vars_j.html | 79 - .../docs/doxygen/html/functions_vars_l.html | 118 - .../docs/doxygen/html/functions_vars_m.html | 165 - .../docs/doxygen/html/functions_vars_n.html | 83 - .../docs/doxygen/html/functions_vars_o.html | 220 - .../docs/doxygen/html/functions_vars_p.html | 231 - .../docs/doxygen/html/functions_vars_q.html | 91 - .../docs/doxygen/html/functions_vars_r.html | 152 - .../docs/doxygen/html/functions_vars_s.html | 342 - .../docs/doxygen/html/functions_vars_t.html | 218 - .../docs/doxygen/html/functions_vars_u.html | 105 - .../docs/doxygen/html/functions_vars_v.html | 91 - .../docs/doxygen/html/functions_vars_w.html | 95 - .../docs/doxygen/html/functions_vars_x.html | 82 - .../docs/doxygen/html/functions_vars_z.html | 82 - .../docs/doxygen/html/functions_w.html | 98 - .../docs/doxygen/html/functions_x.html | 82 - .../docs/doxygen/html/functions_z.html | 82 - .../docs/doxygen/html/functions_~.html | 79 - .../docs/doxygen/html/globals.html | 82 - .../docs/doxygen/html/globals_a.html | 118 - .../docs/doxygen/html/globals_c.html | 100 - .../docs/doxygen/html/globals_d.html | 121 - .../docs/doxygen/html/globals_e.html | 88 - .../docs/doxygen/html/globals_enum.html | 101 - .../docs/doxygen/html/globals_eval.html | 560 -- .../docs/doxygen/html/globals_f.html | 86 - .../docs/doxygen/html/globals_func.html | 188 - .../docs/doxygen/html/globals_g.html | 98 - .../docs/doxygen/html/globals_h.html | 113 - .../docs/doxygen/html/globals_i.html | 87 - .../docs/doxygen/html/globals_j.html | 79 - .../docs/doxygen/html/globals_k.html | 6976 -------------- .../docs/doxygen/html/globals_l.html | 94 - .../docs/doxygen/html/globals_m.html | 121 - .../docs/doxygen/html/globals_n.html | 88 - .../docs/doxygen/html/globals_p.html | 94 - .../docs/doxygen/html/globals_r.html | 121 - .../docs/doxygen/html/globals_s.html | 130 - .../docs/doxygen/html/globals_t.html | 104 - .../docs/doxygen/html/globals_type.html | 80 - .../docs/doxygen/html/globals_u.html | 86 - .../docs/doxygen/html/globals_v.html | 85 - .../docs/doxygen/html/globals_vars.html | 82 - .../docs/doxygen/html/globals_vars_k.html | 6940 -------------- .../docs/doxygen/html/globals_w.html | 85 - .../docs/doxygen/html/globals_x.html | 83 - .../docs/doxygen/html/globals_y.html | 82 - .../docs/doxygen/html/globals_z.html | 79 - .../docs/doxygen/html/graph_legend.html | 136 - .../docs/doxygen/html/graph_legend.md5 | 1 - .../docs/doxygen/html/graph_legend.png | Bin 20615 -> 0 bytes .../docs/doxygen/html/hierarchy.html | 194 - .../docs/doxygen/html/i18n_8h.html | 82 - .../docs/doxygen/html/i18n_8h_source.html | 107 - .../docs/doxygen/html/index.html | 104 - .../docs/doxygen/html/inherit_graph_0.map | 3 - .../docs/doxygen/html/inherit_graph_0.md5 | 1 - .../docs/doxygen/html/inherit_graph_0.png | Bin 1531 -> 0 bytes .../docs/doxygen/html/inherit_graph_1.map | 3 - .../docs/doxygen/html/inherit_graph_1.md5 | 1 - .../docs/doxygen/html/inherit_graph_1.png | Bin 1156 -> 0 bytes .../docs/doxygen/html/inherit_graph_10.map | 3 - .../docs/doxygen/html/inherit_graph_10.md5 | 1 - .../docs/doxygen/html/inherit_graph_10.png | Bin 1671 -> 0 bytes .../docs/doxygen/html/inherit_graph_100.map | 3 - .../docs/doxygen/html/inherit_graph_100.md5 | 1 - .../docs/doxygen/html/inherit_graph_100.png | Bin 1185 -> 0 bytes .../docs/doxygen/html/inherit_graph_101.map | 3 - .../docs/doxygen/html/inherit_graph_101.md5 | 1 - .../docs/doxygen/html/inherit_graph_101.png | Bin 1443 -> 0 bytes .../docs/doxygen/html/inherit_graph_102.map | 3 - .../docs/doxygen/html/inherit_graph_102.md5 | 1 - .../docs/doxygen/html/inherit_graph_102.png | Bin 1141 -> 0 bytes .../docs/doxygen/html/inherit_graph_103.map | 3 - .../docs/doxygen/html/inherit_graph_103.md5 | 1 - .../docs/doxygen/html/inherit_graph_103.png | Bin 985 -> 0 bytes .../docs/doxygen/html/inherit_graph_104.map | 3 - .../docs/doxygen/html/inherit_graph_104.md5 | 1 - .../docs/doxygen/html/inherit_graph_104.png | Bin 1518 -> 0 bytes .../docs/doxygen/html/inherit_graph_105.map | 3 - .../docs/doxygen/html/inherit_graph_105.md5 | 1 - .../docs/doxygen/html/inherit_graph_105.png | Bin 1527 -> 0 bytes .../docs/doxygen/html/inherit_graph_106.map | 3 - .../docs/doxygen/html/inherit_graph_106.md5 | 1 - .../docs/doxygen/html/inherit_graph_106.png | Bin 1083 -> 0 bytes .../docs/doxygen/html/inherit_graph_107.map | 3 - .../docs/doxygen/html/inherit_graph_107.md5 | 1 - .../docs/doxygen/html/inherit_graph_107.png | Bin 1234 -> 0 bytes .../docs/doxygen/html/inherit_graph_108.map | 3 - .../docs/doxygen/html/inherit_graph_108.md5 | 1 - .../docs/doxygen/html/inherit_graph_108.png | Bin 1366 -> 0 bytes .../docs/doxygen/html/inherit_graph_109.map | 3 - .../docs/doxygen/html/inherit_graph_109.md5 | 1 - .../docs/doxygen/html/inherit_graph_109.png | Bin 1349 -> 0 bytes .../docs/doxygen/html/inherit_graph_11.map | 3 - .../docs/doxygen/html/inherit_graph_11.md5 | 1 - .../docs/doxygen/html/inherit_graph_11.png | Bin 1668 -> 0 bytes .../docs/doxygen/html/inherit_graph_110.map | 3 - .../docs/doxygen/html/inherit_graph_110.md5 | 1 - .../docs/doxygen/html/inherit_graph_110.png | Bin 1411 -> 0 bytes .../docs/doxygen/html/inherit_graph_12.map | 3 - .../docs/doxygen/html/inherit_graph_12.md5 | 1 - .../docs/doxygen/html/inherit_graph_12.png | Bin 1479 -> 0 bytes .../docs/doxygen/html/inherit_graph_13.map | 3 - .../docs/doxygen/html/inherit_graph_13.md5 | 1 - .../docs/doxygen/html/inherit_graph_13.png | Bin 1593 -> 0 bytes .../docs/doxygen/html/inherit_graph_14.map | 3 - .../docs/doxygen/html/inherit_graph_14.md5 | 1 - .../docs/doxygen/html/inherit_graph_14.png | Bin 1569 -> 0 bytes .../docs/doxygen/html/inherit_graph_15.map | 3 - .../docs/doxygen/html/inherit_graph_15.md5 | 1 - .../docs/doxygen/html/inherit_graph_15.png | Bin 1406 -> 0 bytes .../docs/doxygen/html/inherit_graph_16.map | 3 - .../docs/doxygen/html/inherit_graph_16.md5 | 1 - .../docs/doxygen/html/inherit_graph_16.png | Bin 1465 -> 0 bytes .../docs/doxygen/html/inherit_graph_17.map | 3 - .../docs/doxygen/html/inherit_graph_17.md5 | 1 - .../docs/doxygen/html/inherit_graph_17.png | Bin 1087 -> 0 bytes .../docs/doxygen/html/inherit_graph_18.map | 3 - .../docs/doxygen/html/inherit_graph_18.md5 | 1 - .../docs/doxygen/html/inherit_graph_18.png | Bin 1331 -> 0 bytes .../docs/doxygen/html/inherit_graph_19.map | 3 - .../docs/doxygen/html/inherit_graph_19.md5 | 1 - .../docs/doxygen/html/inherit_graph_19.png | Bin 1191 -> 0 bytes .../docs/doxygen/html/inherit_graph_2.map | 3 - .../docs/doxygen/html/inherit_graph_2.md5 | 1 - .../docs/doxygen/html/inherit_graph_2.png | Bin 1217 -> 0 bytes .../docs/doxygen/html/inherit_graph_20.map | 3 - .../docs/doxygen/html/inherit_graph_20.md5 | 1 - .../docs/doxygen/html/inherit_graph_20.png | Bin 1777 -> 0 bytes .../docs/doxygen/html/inherit_graph_21.map | 3 - .../docs/doxygen/html/inherit_graph_21.md5 | 1 - .../docs/doxygen/html/inherit_graph_21.png | Bin 1204 -> 0 bytes .../docs/doxygen/html/inherit_graph_22.map | 3 - .../docs/doxygen/html/inherit_graph_22.md5 | 1 - .../docs/doxygen/html/inherit_graph_22.png | Bin 1220 -> 0 bytes .../docs/doxygen/html/inherit_graph_23.map | 3 - .../docs/doxygen/html/inherit_graph_23.md5 | 1 - .../docs/doxygen/html/inherit_graph_23.png | Bin 2265 -> 0 bytes .../docs/doxygen/html/inherit_graph_24.map | 3 - .../docs/doxygen/html/inherit_graph_24.md5 | 1 - .../docs/doxygen/html/inherit_graph_24.png | Bin 1197 -> 0 bytes .../docs/doxygen/html/inherit_graph_25.map | 3 - .../docs/doxygen/html/inherit_graph_25.md5 | 1 - .../docs/doxygen/html/inherit_graph_25.png | Bin 1417 -> 0 bytes .../docs/doxygen/html/inherit_graph_26.map | 3 - .../docs/doxygen/html/inherit_graph_26.md5 | 1 - .../docs/doxygen/html/inherit_graph_26.png | Bin 1140 -> 0 bytes .../docs/doxygen/html/inherit_graph_27.map | 3 - .../docs/doxygen/html/inherit_graph_27.md5 | 1 - .../docs/doxygen/html/inherit_graph_27.png | Bin 674 -> 0 bytes .../docs/doxygen/html/inherit_graph_28.map | 3 - .../docs/doxygen/html/inherit_graph_28.md5 | 1 - .../docs/doxygen/html/inherit_graph_28.png | Bin 1301 -> 0 bytes .../docs/doxygen/html/inherit_graph_29.map | 3 - .../docs/doxygen/html/inherit_graph_29.md5 | 1 - .../docs/doxygen/html/inherit_graph_29.png | Bin 1068 -> 0 bytes .../docs/doxygen/html/inherit_graph_3.map | 3 - .../docs/doxygen/html/inherit_graph_3.md5 | 1 - .../docs/doxygen/html/inherit_graph_3.png | Bin 1328 -> 0 bytes .../docs/doxygen/html/inherit_graph_30.map | 3 - .../docs/doxygen/html/inherit_graph_30.md5 | 1 - .../docs/doxygen/html/inherit_graph_30.png | Bin 1161 -> 0 bytes .../docs/doxygen/html/inherit_graph_31.map | 3 - .../docs/doxygen/html/inherit_graph_31.md5 | 1 - .../docs/doxygen/html/inherit_graph_31.png | Bin 1579 -> 0 bytes .../docs/doxygen/html/inherit_graph_32.map | 3 - .../docs/doxygen/html/inherit_graph_32.md5 | 1 - .../docs/doxygen/html/inherit_graph_32.png | Bin 1141 -> 0 bytes .../docs/doxygen/html/inherit_graph_33.map | 3 - .../docs/doxygen/html/inherit_graph_33.md5 | 1 - .../docs/doxygen/html/inherit_graph_33.png | Bin 1277 -> 0 bytes .../docs/doxygen/html/inherit_graph_34.map | 3 - .../docs/doxygen/html/inherit_graph_34.md5 | 1 - .../docs/doxygen/html/inherit_graph_34.png | Bin 1330 -> 0 bytes .../docs/doxygen/html/inherit_graph_35.map | 3 - .../docs/doxygen/html/inherit_graph_35.md5 | 1 - .../docs/doxygen/html/inherit_graph_35.png | Bin 1257 -> 0 bytes .../docs/doxygen/html/inherit_graph_36.map | 3 - .../docs/doxygen/html/inherit_graph_36.md5 | 1 - .../docs/doxygen/html/inherit_graph_36.png | Bin 1371 -> 0 bytes .../docs/doxygen/html/inherit_graph_37.map | 3 - .../docs/doxygen/html/inherit_graph_37.md5 | 1 - .../docs/doxygen/html/inherit_graph_37.png | Bin 1281 -> 0 bytes .../docs/doxygen/html/inherit_graph_38.map | 3 - .../docs/doxygen/html/inherit_graph_38.md5 | 1 - .../docs/doxygen/html/inherit_graph_38.png | Bin 1088 -> 0 bytes .../docs/doxygen/html/inherit_graph_39.map | 3 - .../docs/doxygen/html/inherit_graph_39.md5 | 1 - .../docs/doxygen/html/inherit_graph_39.png | Bin 1317 -> 0 bytes .../docs/doxygen/html/inherit_graph_4.map | 3 - .../docs/doxygen/html/inherit_graph_4.md5 | 1 - .../docs/doxygen/html/inherit_graph_4.png | Bin 1339 -> 0 bytes .../docs/doxygen/html/inherit_graph_40.map | 3 - .../docs/doxygen/html/inherit_graph_40.md5 | 1 - .../docs/doxygen/html/inherit_graph_40.png | Bin 1237 -> 0 bytes .../docs/doxygen/html/inherit_graph_41.map | 3 - .../docs/doxygen/html/inherit_graph_41.md5 | 1 - .../docs/doxygen/html/inherit_graph_41.png | Bin 1264 -> 0 bytes .../docs/doxygen/html/inherit_graph_42.map | 3 - .../docs/doxygen/html/inherit_graph_42.md5 | 1 - .../docs/doxygen/html/inherit_graph_42.png | Bin 1482 -> 0 bytes .../docs/doxygen/html/inherit_graph_43.map | 3 - .../docs/doxygen/html/inherit_graph_43.md5 | 1 - .../docs/doxygen/html/inherit_graph_43.png | Bin 1114 -> 0 bytes .../docs/doxygen/html/inherit_graph_44.map | 3 - .../docs/doxygen/html/inherit_graph_44.md5 | 1 - .../docs/doxygen/html/inherit_graph_44.png | Bin 1334 -> 0 bytes .../docs/doxygen/html/inherit_graph_45.map | 3 - .../docs/doxygen/html/inherit_graph_45.md5 | 1 - .../docs/doxygen/html/inherit_graph_45.png | Bin 1280 -> 0 bytes .../docs/doxygen/html/inherit_graph_46.map | 3 - .../docs/doxygen/html/inherit_graph_46.md5 | 1 - .../docs/doxygen/html/inherit_graph_46.png | Bin 1904 -> 0 bytes .../docs/doxygen/html/inherit_graph_47.map | 3 - .../docs/doxygen/html/inherit_graph_47.md5 | 1 - .../docs/doxygen/html/inherit_graph_47.png | Bin 1214 -> 0 bytes .../docs/doxygen/html/inherit_graph_48.map | 3 - .../docs/doxygen/html/inherit_graph_48.md5 | 1 - .../docs/doxygen/html/inherit_graph_48.png | Bin 1300 -> 0 bytes .../docs/doxygen/html/inherit_graph_49.map | 3 - .../docs/doxygen/html/inherit_graph_49.md5 | 1 - .../docs/doxygen/html/inherit_graph_49.png | Bin 1924 -> 0 bytes .../docs/doxygen/html/inherit_graph_5.map | 3 - .../docs/doxygen/html/inherit_graph_5.md5 | 1 - .../docs/doxygen/html/inherit_graph_5.png | Bin 1198 -> 0 bytes .../docs/doxygen/html/inherit_graph_50.map | 3 - .../docs/doxygen/html/inherit_graph_50.md5 | 1 - .../docs/doxygen/html/inherit_graph_50.png | Bin 1089 -> 0 bytes .../docs/doxygen/html/inherit_graph_51.map | 3 - .../docs/doxygen/html/inherit_graph_51.md5 | 1 - .../docs/doxygen/html/inherit_graph_51.png | Bin 1144 -> 0 bytes .../docs/doxygen/html/inherit_graph_52.map | 3 - .../docs/doxygen/html/inherit_graph_52.md5 | 1 - .../docs/doxygen/html/inherit_graph_52.png | Bin 1273 -> 0 bytes .../docs/doxygen/html/inherit_graph_53.map | 4 - .../docs/doxygen/html/inherit_graph_53.md5 | 1 - .../docs/doxygen/html/inherit_graph_53.png | Bin 2195 -> 0 bytes .../docs/doxygen/html/inherit_graph_54.map | 3 - .../docs/doxygen/html/inherit_graph_54.md5 | 1 - .../docs/doxygen/html/inherit_graph_54.png | Bin 1269 -> 0 bytes .../docs/doxygen/html/inherit_graph_55.map | 3 - .../docs/doxygen/html/inherit_graph_55.md5 | 1 - .../docs/doxygen/html/inherit_graph_55.png | Bin 1725 -> 0 bytes .../docs/doxygen/html/inherit_graph_56.map | 3 - .../docs/doxygen/html/inherit_graph_56.md5 | 1 - .../docs/doxygen/html/inherit_graph_56.png | Bin 911 -> 0 bytes .../docs/doxygen/html/inherit_graph_57.map | 3 - .../docs/doxygen/html/inherit_graph_57.md5 | 1 - .../docs/doxygen/html/inherit_graph_57.png | Bin 1369 -> 0 bytes .../docs/doxygen/html/inherit_graph_58.map | 3 - .../docs/doxygen/html/inherit_graph_58.md5 | 1 - .../docs/doxygen/html/inherit_graph_58.png | Bin 1340 -> 0 bytes .../docs/doxygen/html/inherit_graph_59.map | 3 - .../docs/doxygen/html/inherit_graph_59.md5 | 1 - .../docs/doxygen/html/inherit_graph_59.png | Bin 1573 -> 0 bytes .../docs/doxygen/html/inherit_graph_6.map | 3 - .../docs/doxygen/html/inherit_graph_6.md5 | 1 - .../docs/doxygen/html/inherit_graph_6.png | Bin 1556 -> 0 bytes .../docs/doxygen/html/inherit_graph_60.map | 3 - .../docs/doxygen/html/inherit_graph_60.md5 | 1 - .../docs/doxygen/html/inherit_graph_60.png | Bin 1583 -> 0 bytes .../docs/doxygen/html/inherit_graph_61.map | 3 - .../docs/doxygen/html/inherit_graph_61.md5 | 1 - .../docs/doxygen/html/inherit_graph_61.png | Bin 2616 -> 0 bytes .../docs/doxygen/html/inherit_graph_62.map | 3 - .../docs/doxygen/html/inherit_graph_62.md5 | 1 - .../docs/doxygen/html/inherit_graph_62.png | Bin 2503 -> 0 bytes .../docs/doxygen/html/inherit_graph_63.map | 3 - .../docs/doxygen/html/inherit_graph_63.md5 | 1 - .../docs/doxygen/html/inherit_graph_63.png | Bin 1440 -> 0 bytes .../docs/doxygen/html/inherit_graph_64.map | 3 - .../docs/doxygen/html/inherit_graph_64.md5 | 1 - .../docs/doxygen/html/inherit_graph_64.png | Bin 1494 -> 0 bytes .../docs/doxygen/html/inherit_graph_65.map | 3 - .../docs/doxygen/html/inherit_graph_65.md5 | 1 - .../docs/doxygen/html/inherit_graph_65.png | Bin 1882 -> 0 bytes .../docs/doxygen/html/inherit_graph_66.map | 3 - .../docs/doxygen/html/inherit_graph_66.md5 | 1 - .../docs/doxygen/html/inherit_graph_66.png | Bin 1122 -> 0 bytes .../docs/doxygen/html/inherit_graph_67.map | 3 - .../docs/doxygen/html/inherit_graph_67.md5 | 1 - .../docs/doxygen/html/inherit_graph_67.png | Bin 878 -> 0 bytes .../docs/doxygen/html/inherit_graph_68.map | 3 - .../docs/doxygen/html/inherit_graph_68.md5 | 1 - .../docs/doxygen/html/inherit_graph_68.png | Bin 1648 -> 0 bytes .../docs/doxygen/html/inherit_graph_69.map | 3 - .../docs/doxygen/html/inherit_graph_69.md5 | 1 - .../docs/doxygen/html/inherit_graph_69.png | Bin 1443 -> 0 bytes .../docs/doxygen/html/inherit_graph_7.map | 3 - .../docs/doxygen/html/inherit_graph_7.md5 | 1 - .../docs/doxygen/html/inherit_graph_7.png | Bin 1726 -> 0 bytes .../docs/doxygen/html/inherit_graph_70.map | 3 - .../docs/doxygen/html/inherit_graph_70.md5 | 1 - .../docs/doxygen/html/inherit_graph_70.png | Bin 925 -> 0 bytes .../docs/doxygen/html/inherit_graph_71.map | 3 - .../docs/doxygen/html/inherit_graph_71.md5 | 1 - .../docs/doxygen/html/inherit_graph_71.png | Bin 1459 -> 0 bytes .../docs/doxygen/html/inherit_graph_72.map | 3 - .../docs/doxygen/html/inherit_graph_72.md5 | 1 - .../docs/doxygen/html/inherit_graph_72.png | Bin 1014 -> 0 bytes .../docs/doxygen/html/inherit_graph_73.map | 3 - .../docs/doxygen/html/inherit_graph_73.md5 | 1 - .../docs/doxygen/html/inherit_graph_73.png | Bin 1212 -> 0 bytes .../docs/doxygen/html/inherit_graph_74.map | 3 - .../docs/doxygen/html/inherit_graph_74.md5 | 1 - .../docs/doxygen/html/inherit_graph_74.png | Bin 1059 -> 0 bytes .../docs/doxygen/html/inherit_graph_75.map | 3 - .../docs/doxygen/html/inherit_graph_75.md5 | 1 - .../docs/doxygen/html/inherit_graph_75.png | Bin 869 -> 0 bytes .../docs/doxygen/html/inherit_graph_76.map | 3 - .../docs/doxygen/html/inherit_graph_76.md5 | 1 - .../docs/doxygen/html/inherit_graph_76.png | Bin 1428 -> 0 bytes .../docs/doxygen/html/inherit_graph_77.map | 3 - .../docs/doxygen/html/inherit_graph_77.md5 | 1 - .../docs/doxygen/html/inherit_graph_77.png | Bin 1466 -> 0 bytes .../docs/doxygen/html/inherit_graph_78.map | 3 - .../docs/doxygen/html/inherit_graph_78.md5 | 1 - .../docs/doxygen/html/inherit_graph_78.png | Bin 1328 -> 0 bytes .../docs/doxygen/html/inherit_graph_79.map | 3 - .../docs/doxygen/html/inherit_graph_79.md5 | 1 - .../docs/doxygen/html/inherit_graph_79.png | Bin 1154 -> 0 bytes .../docs/doxygen/html/inherit_graph_8.map | 3 - .../docs/doxygen/html/inherit_graph_8.md5 | 1 - .../docs/doxygen/html/inherit_graph_8.png | Bin 1647 -> 0 bytes .../docs/doxygen/html/inherit_graph_80.map | 3 - .../docs/doxygen/html/inherit_graph_80.md5 | 1 - .../docs/doxygen/html/inherit_graph_80.png | Bin 1310 -> 0 bytes .../docs/doxygen/html/inherit_graph_81.map | 3 - .../docs/doxygen/html/inherit_graph_81.md5 | 1 - .../docs/doxygen/html/inherit_graph_81.png | Bin 1104 -> 0 bytes .../docs/doxygen/html/inherit_graph_82.map | 3 - .../docs/doxygen/html/inherit_graph_82.md5 | 1 - .../docs/doxygen/html/inherit_graph_82.png | Bin 1480 -> 0 bytes .../docs/doxygen/html/inherit_graph_83.map | 3 - .../docs/doxygen/html/inherit_graph_83.md5 | 1 - .../docs/doxygen/html/inherit_graph_83.png | Bin 1244 -> 0 bytes .../docs/doxygen/html/inherit_graph_84.map | 3 - .../docs/doxygen/html/inherit_graph_84.md5 | 1 - .../docs/doxygen/html/inherit_graph_84.png | Bin 1518 -> 0 bytes .../docs/doxygen/html/inherit_graph_85.map | 3 - .../docs/doxygen/html/inherit_graph_85.md5 | 1 - .../docs/doxygen/html/inherit_graph_85.png | Bin 1126 -> 0 bytes .../docs/doxygen/html/inherit_graph_86.map | 3 - .../docs/doxygen/html/inherit_graph_86.md5 | 1 - .../docs/doxygen/html/inherit_graph_86.png | Bin 1310 -> 0 bytes .../docs/doxygen/html/inherit_graph_87.map | 3 - .../docs/doxygen/html/inherit_graph_87.md5 | 1 - .../docs/doxygen/html/inherit_graph_87.png | Bin 1308 -> 0 bytes .../docs/doxygen/html/inherit_graph_88.map | 3 - .../docs/doxygen/html/inherit_graph_88.md5 | 1 - .../docs/doxygen/html/inherit_graph_88.png | Bin 1446 -> 0 bytes .../docs/doxygen/html/inherit_graph_89.map | 3 - .../docs/doxygen/html/inherit_graph_89.md5 | 1 - .../docs/doxygen/html/inherit_graph_89.png | Bin 1693 -> 0 bytes .../docs/doxygen/html/inherit_graph_9.map | 3 - .../docs/doxygen/html/inherit_graph_9.md5 | 1 - .../docs/doxygen/html/inherit_graph_9.png | Bin 1746 -> 0 bytes .../docs/doxygen/html/inherit_graph_90.map | 3 - .../docs/doxygen/html/inherit_graph_90.md5 | 1 - .../docs/doxygen/html/inherit_graph_90.png | Bin 1929 -> 0 bytes .../docs/doxygen/html/inherit_graph_91.map | 3 - .../docs/doxygen/html/inherit_graph_91.md5 | 1 - .../docs/doxygen/html/inherit_graph_91.png | Bin 1668 -> 0 bytes .../docs/doxygen/html/inherit_graph_92.map | 3 - .../docs/doxygen/html/inherit_graph_92.md5 | 1 - .../docs/doxygen/html/inherit_graph_92.png | Bin 1833 -> 0 bytes .../docs/doxygen/html/inherit_graph_93.map | 3 - .../docs/doxygen/html/inherit_graph_93.md5 | 1 - .../docs/doxygen/html/inherit_graph_93.png | Bin 1732 -> 0 bytes .../docs/doxygen/html/inherit_graph_94.map | 3 - .../docs/doxygen/html/inherit_graph_94.md5 | 1 - .../docs/doxygen/html/inherit_graph_94.png | Bin 1434 -> 0 bytes .../docs/doxygen/html/inherit_graph_95.map | 3 - .../docs/doxygen/html/inherit_graph_95.md5 | 1 - .../docs/doxygen/html/inherit_graph_95.png | Bin 1936 -> 0 bytes .../docs/doxygen/html/inherit_graph_96.map | 3 - .../docs/doxygen/html/inherit_graph_96.md5 | 1 - .../docs/doxygen/html/inherit_graph_96.png | Bin 1790 -> 0 bytes .../docs/doxygen/html/inherit_graph_97.map | 3 - .../docs/doxygen/html/inherit_graph_97.md5 | 1 - .../docs/doxygen/html/inherit_graph_97.png | Bin 1449 -> 0 bytes .../docs/doxygen/html/inherit_graph_98.map | 3 - .../docs/doxygen/html/inherit_graph_98.md5 | 1 - .../docs/doxygen/html/inherit_graph_98.png | Bin 1530 -> 0 bytes .../docs/doxygen/html/inherit_graph_99.map | 3 - .../docs/doxygen/html/inherit_graph_99.md5 | 1 - .../docs/doxygen/html/inherit_graph_99.png | Bin 1307 -> 0 bytes .../docs/doxygen/html/inherits.html | 636 -- .../docs/doxygen/html/ir__Airwell_8cpp.html | 172 - .../docs/doxygen/html/ir__Airwell_8h.html | 296 - .../doxygen/html/ir__Airwell_8h_source.html | 221 - .../docs/doxygen/html/ir__Aiwa_8cpp.html | 157 - .../docs/doxygen/html/ir__Amcor_8cpp.html | 239 - .../docs/doxygen/html/ir__Amcor_8h.html | 346 - .../doxygen/html/ir__Amcor_8h_source.html | 274 - .../docs/doxygen/html/ir__Argo_8cpp.html | 188 - .../docs/doxygen/html/ir__Argo_8h.html | 488 - .../docs/doxygen/html/ir__Argo_8h_source.html | 366 - .../docs/doxygen/html/ir__Carrier_8cpp.html | 400 - .../docs/doxygen/html/ir__Carrier_8h.html | 315 - .../doxygen/html/ir__Carrier_8h_source.html | 283 - .../docs/doxygen/html/ir__Coolix_8cpp.html | 301 - .../docs/doxygen/html/ir__Coolix_8h.html | 588 -- .../doxygen/html/ir__Coolix_8h_source.html | 365 - .../docs/doxygen/html/ir__Corona_8cpp.html | 256 - .../docs/doxygen/html/ir__Corona_8h.html | 454 - .../doxygen/html/ir__Corona_8h_source.html | 330 - .../docs/doxygen/html/ir__Daikin_8cpp.html | 114 - .../docs/doxygen/html/ir__Daikin_8h.html | 3138 ------- .../doxygen/html/ir__Daikin_8h_source.html | 1916 ---- .../docs/doxygen/html/ir__Delonghi_8cpp.html | 220 - .../docs/doxygen/html/ir__Delonghi_8h.html | 362 - .../doxygen/html/ir__Delonghi_8h_source.html | 290 - .../docs/doxygen/html/ir__Denon_8cpp.html | 346 - .../docs/doxygen/html/ir__Dish_8cpp.html | 305 - .../docs/doxygen/html/ir__Doshisha_8cpp.html | 429 - .../docs/doxygen/html/ir__Ecoclim_8cpp.html | 258 - .../docs/doxygen/html/ir__Ecoclim_8h.html | 410 - .../doxygen/html/ir__Ecoclim_8h_source.html | 290 - .../docs/doxygen/html/ir__Electra_8cpp.html | 195 - .../docs/doxygen/html/ir__Electra_8h.html | 377 - .../doxygen/html/ir__Electra_8h_source.html | 305 - .../doxygen/html/ir__EliteScreens_8cpp.html | 143 - .../docs/doxygen/html/ir__Epson_8cpp.html | 86 - .../docs/doxygen/html/ir__Fujitsu_8cpp.html | 206 - .../docs/doxygen/html/ir__Fujitsu_8h.html | 653 -- .../doxygen/html/ir__Fujitsu_8h_source.html | 453 - .../docs/doxygen/html/ir__GICable_8cpp.html | 233 - .../doxygen/html/ir__GlobalCache_8cpp.html | 189 - .../doxygen/html/ir__Goodweather_8cpp.html | 86 - .../docs/doxygen/html/ir__Goodweather_8h.html | 633 -- .../html/ir__Goodweather_8h_source.html | 315 - .../docs/doxygen/html/ir__Gree_8cpp.html | 229 - .../docs/doxygen/html/ir__Gree_8h.html | 555 -- .../docs/doxygen/html/ir__Gree_8h_source.html | 405 - .../docs/doxygen/html/ir__Haier_8cpp.html | 201 - .../docs/doxygen/html/ir__Haier_8h.html | 1049 --- .../doxygen/html/ir__Haier_8h_source.html | 622 -- .../docs/doxygen/html/ir__Hitachi_8cpp.html | 423 - .../docs/doxygen/html/ir__Hitachi_8h.html | 1413 --- .../doxygen/html/ir__Hitachi_8h_source.html | 791 -- .../docs/doxygen/html/ir__Inax_8cpp.html | 207 - .../docs/doxygen/html/ir__JVC_8cpp.html | 343 - .../docs/doxygen/html/ir__Kelon_8cpp.html | 210 - .../docs/doxygen/html/ir__Kelon_8h.html | 316 - .../doxygen/html/ir__Kelon_8h_source.html | 311 - .../doxygen/html/ir__Kelvinator_8cpp.html | 361 - .../docs/doxygen/html/ir__Kelvinator_8h.html | 296 - .../html/ir__Kelvinator_8h_source.html | 338 - .../docs/doxygen/html/ir__LG_8cpp.html | 359 - .../docs/doxygen/html/ir__LG_8h.html | 377 - .../docs/doxygen/html/ir__LG_8h_source.html | 261 - .../docs/doxygen/html/ir__Lasertag_8cpp.html | 221 - .../docs/doxygen/html/ir__Lego_8cpp.html | 176 - .../docs/doxygen/html/ir__Lutron_8cpp.html | 144 - .../docs/doxygen/html/ir__MWM_8cpp.html | 237 - .../docs/doxygen/html/ir__Magiquest_8cpp.html | 88 - .../docs/doxygen/html/ir__Magiquest_8h.html | 232 - .../doxygen/html/ir__Magiquest_8h_source.html | 137 - .../docs/doxygen/html/ir__Metz_8cpp.html | 239 - .../docs/doxygen/html/ir__Midea_8cpp.html | 344 - .../docs/doxygen/html/ir__Midea_8h.html | 588 -- .../doxygen/html/ir__Midea_8h_source.html | 412 - .../docs/doxygen/html/ir__MilesTag2_8cpp.html | 273 - .../docs/doxygen/html/ir__Mirage_8cpp.html | 226 - .../html/ir__MitsubishiHeavy_8cpp.html | 194 - .../doxygen/html/ir__MitsubishiHeavy_8h.html | 1048 --- .../html/ir__MitsubishiHeavy_8h_source.html | 595 -- .../doxygen/html/ir__Mitsubishi_8cpp.html | 726 -- .../docs/doxygen/html/ir__Mitsubishi_8h.html | 1287 --- .../html/ir__Mitsubishi_8h_source.html | 701 -- .../doxygen/html/ir__Multibrackets_8cpp.html | 175 - .../docs/doxygen/html/ir__NEC_8cpp.html | 86 - .../docs/doxygen/html/ir__NEC_8h.html | 642 -- .../docs/doxygen/html/ir__NEC_8h_source.html | 189 - .../docs/doxygen/html/ir__Neoclima_8cpp.html | 193 - .../docs/doxygen/html/ir__Neoclima_8h.html | 651 -- .../doxygen/html/ir__Neoclima_8h_source.html | 385 - .../docs/doxygen/html/ir__Nikai_8cpp.html | 301 - .../docs/doxygen/html/ir__Panasonic_8cpp.html | 447 - .../docs/doxygen/html/ir__Panasonic_8h.html | 1075 --- .../doxygen/html/ir__Panasonic_8h_source.html | 502 - .../docs/doxygen/html/ir__Pioneer_8cpp.html | 251 - .../docs/doxygen/html/ir__Pronto_8cpp.html | 195 - .../docs/doxygen/html/ir__RC5__RC6_8cpp.html | 361 - .../docs/doxygen/html/ir__RCMM_8cpp.html | 429 - .../docs/doxygen/html/ir__Samsung_8cpp.html | 621 -- .../docs/doxygen/html/ir__Samsung_8h.html | 447 - .../doxygen/html/ir__Samsung_8h_source.html | 374 - .../docs/doxygen/html/ir__Sanyo_8cpp.html | 489 - .../docs/doxygen/html/ir__Sanyo_8h.html | 514 - .../doxygen/html/ir__Sanyo_8h_source.html | 319 - .../docs/doxygen/html/ir__Sharp_8cpp.html | 301 - .../docs/doxygen/html/ir__Sharp_8h.html | 793 -- .../doxygen/html/ir__Sharp_8h_source.html | 413 - .../docs/doxygen/html/ir__Sherwood_8cpp.html | 85 - .../docs/doxygen/html/ir__Sony_8cpp.html | 335 - .../docs/doxygen/html/ir__Symphony_8cpp.html | 181 - .../docs/doxygen/html/ir__Tcl_8cpp.html | 86 - .../docs/doxygen/html/ir__Tcl_8h.html | 440 - .../docs/doxygen/html/ir__Tcl_8h_source.html | 311 - .../docs/doxygen/html/ir__Technibel_8cpp.html | 204 - .../docs/doxygen/html/ir__Technibel_8h.html | 379 - .../doxygen/html/ir__Technibel_8h_source.html | 294 - .../docs/doxygen/html/ir__Teco_8cpp.html | 188 - .../docs/doxygen/html/ir__Teco_8h.html | 296 - .../docs/doxygen/html/ir__Teco_8h_source.html | 276 - .../doxygen/html/ir__Teknopoint_8cpp.html | 205 - .../docs/doxygen/html/ir__Toshiba_8cpp.html | 213 - .../docs/doxygen/html/ir__Toshiba_8h.html | 478 - .../doxygen/html/ir__Toshiba_8h_source.html | 332 - .../docs/doxygen/html/ir__Transcold_8cpp.html | 188 - .../docs/doxygen/html/ir__Transcold_8h.html | 491 - .../doxygen/html/ir__Transcold_8h_source.html | 314 - .../docs/doxygen/html/ir__Trotec_8cpp.html | 207 - .../docs/doxygen/html/ir__Trotec_8h.html | 315 - .../doxygen/html/ir__Trotec_8h_source.html | 292 - .../docs/doxygen/html/ir__Truma_8cpp.html | 223 - .../docs/doxygen/html/ir__Truma_8h.html | 302 - .../doxygen/html/ir__Truma_8h_source.html | 255 - .../docs/doxygen/html/ir__Vestel_8cpp.html | 85 - .../docs/doxygen/html/ir__Vestel_8h.html | 536 -- .../doxygen/html/ir__Vestel_8h_source.html | 353 - .../docs/doxygen/html/ir__Voltas_8cpp.html | 169 - .../docs/doxygen/html/ir__Voltas_8h.html | 352 - .../doxygen/html/ir__Voltas_8h_source.html | 330 - .../docs/doxygen/html/ir__Whirlpool_8cpp.html | 224 - .../docs/doxygen/html/ir__Whirlpool_8h.html | 524 -- .../doxygen/html/ir__Whirlpool_8h_source.html | 385 - .../docs/doxygen/html/ir__Whynter_8cpp.html | 344 - .../docs/doxygen/html/ir__Xmp_8cpp.html | 304 - .../docs/doxygen/html/ir__Zepeal_8cpp.html | 333 - .../docs/doxygen/html/it-IT_8h.html | 82 - .../docs/doxygen/html/it-IT_8h_source.html | 239 - .../docs/doxygen/html/jquery.js | 35 - .../doxygen/html/md_src_locale_README.html | 135 - .../IRremoteESP8266/docs/doxygen/html/menu.js | 50 - .../docs/doxygen/html/menudata.js | 210 - .../docs/doxygen/html/namespaceIRAcUtils.html | 166 - .../doxygen/html/namespaceIRXmpUtils.html | 326 - .../docs/doxygen/html/namespace__IRrecv.html | 131 - .../docs/doxygen/html/namespaceirutils.html | 1743 ---- .../docs/doxygen/html/namespacemembers.html | 252 - .../doxygen/html/namespacemembers_enum.html | 86 - .../doxygen/html/namespacemembers_func.html | 219 - .../doxygen/html/namespacemembers_vars.html | 83 - .../docs/doxygen/html/namespaces.html | 85 - .../docs/doxygen/html/namespacestdAc.html | 286 - .../docs/doxygen/html/nav_f.png | Bin 153 -> 0 bytes .../docs/doxygen/html/nav_g.png | Bin 95 -> 0 bytes .../docs/doxygen/html/nav_h.png | Bin 98 -> 0 bytes .../docs/doxygen/html/open.png | Bin 123 -> 0 bytes .../docs/doxygen/html/pages.html | 83 - .../docs/doxygen/html/pt-BR_8h.html | 82 - .../docs/doxygen/html/pt-BR_8h_source.html | 247 - .../docs/doxygen/html/search/all_0.html | 30 - .../docs/doxygen/html/search/all_0.js | 88 - .../docs/doxygen/html/search/all_1.html | 30 - .../docs/doxygen/html/search/all_1.js | 37 - .../docs/doxygen/html/search/all_10.html | 30 - .../docs/doxygen/html/search/all_10.js | 37 - .../docs/doxygen/html/search/all_11.html | 30 - .../docs/doxygen/html/search/all_11.js | 6 - .../docs/doxygen/html/search/all_12.html | 30 - .../docs/doxygen/html/search/all_12.js | 29 - .../docs/doxygen/html/search/all_13.html | 30 - .../docs/doxygen/html/search/all_13.js | 317 - .../docs/doxygen/html/search/all_14.html | 30 - .../docs/doxygen/html/search/all_14.js | 61 - .../docs/doxygen/html/search/all_15.html | 30 - .../docs/doxygen/html/search/all_15.js | 17 - .../docs/doxygen/html/search/all_16.html | 30 - .../docs/doxygen/html/search/all_16.js | 16 - .../docs/doxygen/html/search/all_17.html | 30 - .../docs/doxygen/html/search/all_17.js | 13 - .../docs/doxygen/html/search/all_18.html | 30 - .../docs/doxygen/html/search/all_18.js | 6 - .../docs/doxygen/html/search/all_19.html | 30 - .../docs/doxygen/html/search/all_19.js | 5 - .../docs/doxygen/html/search/all_1a.html | 30 - .../docs/doxygen/html/search/all_1a.js | 7 - .../docs/doxygen/html/search/all_1b.html | 30 - .../docs/doxygen/html/search/all_1b.js | 4 - .../docs/doxygen/html/search/all_2.html | 30 - .../docs/doxygen/html/search/all_2.js | 17 - .../docs/doxygen/html/search/all_3.html | 30 - .../docs/doxygen/html/search/all_3.js | 67 - .../docs/doxygen/html/search/all_4.html | 30 - .../docs/doxygen/html/search/all_4.js | 145 - .../docs/doxygen/html/search/all_5.html | 30 - .../docs/doxygen/html/search/all_5.js | 42 - .../docs/doxygen/html/search/all_6.html | 30 - .../docs/doxygen/html/search/all_6.js | 26 - .../docs/doxygen/html/search/all_7.html | 30 - .../docs/doxygen/html/search/all_7.js | 137 - .../docs/doxygen/html/search/all_8.html | 30 - .../docs/doxygen/html/search/all_8.js | 41 - .../docs/doxygen/html/search/all_9.html | 30 - .../docs/doxygen/html/search/all_9.js | 215 - .../docs/doxygen/html/search/all_a.html | 30 - .../docs/doxygen/html/search/all_a.js | 5 - .../docs/doxygen/html/search/all_b.html | 30 - .../docs/doxygen/html/search/all_b.js | 2276 ----- .../docs/doxygen/html/search/all_c.html | 30 - .../docs/doxygen/html/search/all_c.js | 23 - .../docs/doxygen/html/search/all_d.html | 30 - .../docs/doxygen/html/search/all_d.js | 56 - .../docs/doxygen/html/search/all_e.html | 30 - .../docs/doxygen/html/search/all_e.js | 10 - .../docs/doxygen/html/search/all_f.html | 30 - .../docs/doxygen/html/search/all_f.js | 40 - .../docs/doxygen/html/search/classes_0.html | 30 - .../docs/doxygen/html/search/classes_0.js | 6 - .../docs/doxygen/html/search/classes_1.html | 30 - .../docs/doxygen/html/search/classes_1.js | 7 - .../docs/doxygen/html/search/classes_10.html | 30 - .../docs/doxygen/html/search/classes_10.js | 4 - .../docs/doxygen/html/search/classes_2.html | 30 - .../docs/doxygen/html/search/classes_2.js | 13 - .../docs/doxygen/html/search/classes_3.html | 30 - .../docs/doxygen/html/search/classes_3.js | 5 - .../docs/doxygen/html/search/classes_4.html | 30 - .../docs/doxygen/html/search/classes_4.js | 4 - .../docs/doxygen/html/search/classes_5.html | 30 - .../docs/doxygen/html/search/classes_5.js | 5 - .../docs/doxygen/html/search/classes_6.html | 30 - .../docs/doxygen/html/search/classes_6.js | 8 - .../docs/doxygen/html/search/classes_7.html | 30 - .../docs/doxygen/html/search/classes_7.js | 60 - .../docs/doxygen/html/search/classes_8.html | 30 - .../docs/doxygen/html/search/classes_8.js | 5 - .../docs/doxygen/html/search/classes_9.html | 30 - .../docs/doxygen/html/search/classes_9.js | 4 - .../docs/doxygen/html/search/classes_a.html | 30 - .../docs/doxygen/html/search/classes_a.js | 11 - .../docs/doxygen/html/search/classes_b.html | 30 - .../docs/doxygen/html/search/classes_b.js | 4 - .../docs/doxygen/html/search/classes_c.html | 30 - .../docs/doxygen/html/search/classes_c.js | 4 - .../docs/doxygen/html/search/classes_d.html | 30 - .../docs/doxygen/html/search/classes_d.js | 7 - .../docs/doxygen/html/search/classes_e.html | 30 - .../docs/doxygen/html/search/classes_e.js | 11 - .../docs/doxygen/html/search/classes_f.html | 30 - .../docs/doxygen/html/search/classes_f.js | 5 - .../docs/doxygen/html/search/close.png | Bin 273 -> 0 bytes .../docs/doxygen/html/search/enums_0.html | 30 - .../docs/doxygen/html/search/enums_0.js | 4 - .../docs/doxygen/html/search/enums_1.html | 30 - .../docs/doxygen/html/search/enums_1.js | 5 - .../docs/doxygen/html/search/enums_2.html | 30 - .../docs/doxygen/html/search/enums_2.js | 4 - .../docs/doxygen/html/search/enums_3.html | 30 - .../docs/doxygen/html/search/enums_3.js | 4 - .../docs/doxygen/html/search/enums_4.html | 30 - .../docs/doxygen/html/search/enums_4.js | 4 - .../docs/doxygen/html/search/enums_5.html | 30 - .../docs/doxygen/html/search/enums_5.js | 4 - .../docs/doxygen/html/search/enums_6.html | 30 - .../docs/doxygen/html/search/enums_6.js | 4 - .../docs/doxygen/html/search/enums_7.html | 30 - .../docs/doxygen/html/search/enums_7.js | 6 - .../docs/doxygen/html/search/enums_8.html | 30 - .../docs/doxygen/html/search/enums_8.js | 4 - .../docs/doxygen/html/search/enums_9.html | 30 - .../docs/doxygen/html/search/enums_9.js | 4 - .../doxygen/html/search/enumvalues_0.html | 30 - .../docs/doxygen/html/search/enumvalues_0.js | 17 - .../doxygen/html/search/enumvalues_1.html | 30 - .../docs/doxygen/html/search/enumvalues_1.js | 8 - .../doxygen/html/search/enumvalues_10.html | 30 - .../docs/doxygen/html/search/enumvalues_10.js | 11 - .../doxygen/html/search/enumvalues_11.html | 30 - .../docs/doxygen/html/search/enumvalues_11.js | 5 - .../doxygen/html/search/enumvalues_12.html | 30 - .../docs/doxygen/html/search/enumvalues_12.js | 5 - .../doxygen/html/search/enumvalues_13.html | 30 - .../docs/doxygen/html/search/enumvalues_13.js | 5 - .../doxygen/html/search/enumvalues_14.html | 30 - .../docs/doxygen/html/search/enumvalues_14.js | 4 - .../doxygen/html/search/enumvalues_15.html | 30 - .../docs/doxygen/html/search/enumvalues_15.js | 5 - .../doxygen/html/search/enumvalues_16.html | 30 - .../docs/doxygen/html/search/enumvalues_16.js | 4 - .../doxygen/html/search/enumvalues_2.html | 30 - .../docs/doxygen/html/search/enumvalues_2.js | 17 - .../doxygen/html/search/enumvalues_3.html | 30 - .../docs/doxygen/html/search/enumvalues_3.js | 7 - .../doxygen/html/search/enumvalues_4.html | 30 - .../docs/doxygen/html/search/enumvalues_4.js | 4 - .../doxygen/html/search/enumvalues_5.html | 30 - .../docs/doxygen/html/search/enumvalues_5.js | 8 - .../doxygen/html/search/enumvalues_6.html | 30 - .../docs/doxygen/html/search/enumvalues_6.js | 12 - .../doxygen/html/search/enumvalues_7.html | 30 - .../docs/doxygen/html/search/enumvalues_7.js | 4 - .../doxygen/html/search/enumvalues_8.html | 30 - .../docs/doxygen/html/search/enumvalues_8.js | 4 - .../doxygen/html/search/enumvalues_9.html | 30 - .../docs/doxygen/html/search/enumvalues_9.js | 38 - .../doxygen/html/search/enumvalues_a.html | 30 - .../docs/doxygen/html/search/enumvalues_a.js | 8 - .../doxygen/html/search/enumvalues_b.html | 30 - .../docs/doxygen/html/search/enumvalues_b.js | 18 - .../doxygen/html/search/enumvalues_c.html | 30 - .../docs/doxygen/html/search/enumvalues_c.js | 7 - .../doxygen/html/search/enumvalues_d.html | 30 - .../docs/doxygen/html/search/enumvalues_d.js | 8 - .../doxygen/html/search/enumvalues_e.html | 30 - .../docs/doxygen/html/search/enumvalues_e.js | 10 - .../doxygen/html/search/enumvalues_f.html | 30 - .../docs/doxygen/html/search/enumvalues_f.js | 15 - .../docs/doxygen/html/search/files_0.html | 30 - .../docs/doxygen/html/search/files_0.js | 7 - .../docs/doxygen/html/search/files_1.html | 30 - .../docs/doxygen/html/search/files_1.js | 8 - .../docs/doxygen/html/search/files_2.html | 30 - .../docs/doxygen/html/search/files_2.js | 4 - .../docs/doxygen/html/search/files_3.html | 30 - .../docs/doxygen/html/search/files_3.js | 124 - .../docs/doxygen/html/search/files_4.html | 30 - .../docs/doxygen/html/search/files_4.js | 4 - .../docs/doxygen/html/search/files_5.html | 30 - .../docs/doxygen/html/search/files_5.js | 4 - .../docs/doxygen/html/search/files_6.html | 30 - .../docs/doxygen/html/search/files_6.js | 4 - .../docs/doxygen/html/search/functions_0.html | 30 - .../docs/doxygen/html/search/functions_0.js | 21 - .../docs/doxygen/html/search/functions_1.html | 30 - .../docs/doxygen/html/search/functions_1.js | 20 - .../doxygen/html/search/functions_10.html | 30 - .../docs/doxygen/html/search/functions_10.js | 13 - .../doxygen/html/search/functions_11.html | 30 - .../docs/doxygen/html/search/functions_11.js | 251 - .../doxygen/html/search/functions_12.html | 30 - .../docs/doxygen/html/search/functions_12.js | 25 - .../doxygen/html/search/functions_13.html | 30 - .../docs/doxygen/html/search/functions_13.js | 8 - .../doxygen/html/search/functions_14.html | 30 - .../docs/doxygen/html/search/functions_14.js | 7 - .../doxygen/html/search/functions_15.html | 30 - .../docs/doxygen/html/search/functions_15.js | 4 - .../doxygen/html/search/functions_16.html | 30 - .../docs/doxygen/html/search/functions_16.js | 4 - .../doxygen/html/search/functions_17.html | 30 - .../docs/doxygen/html/search/functions_17.js | 4 - .../docs/doxygen/html/search/functions_2.html | 30 - .../docs/doxygen/html/search/functions_2.js | 7 - .../docs/doxygen/html/search/functions_3.html | 30 - .../docs/doxygen/html/search/functions_3.js | 38 - .../docs/doxygen/html/search/functions_4.html | 30 - .../docs/doxygen/html/search/functions_4.js | 110 - .../docs/doxygen/html/search/functions_5.html | 30 - .../docs/doxygen/html/search/functions_5.js | 28 - .../docs/doxygen/html/search/functions_6.html | 30 - .../docs/doxygen/html/search/functions_6.js | 8 - .../docs/doxygen/html/search/functions_7.html | 30 - .../docs/doxygen/html/search/functions_7.js | 131 - .../docs/doxygen/html/search/functions_8.html | 30 - .../docs/doxygen/html/search/functions_8.js | 15 - .../docs/doxygen/html/search/functions_9.html | 30 - .../docs/doxygen/html/search/functions_9.js | 79 - .../docs/doxygen/html/search/functions_a.html | 30 - .../docs/doxygen/html/search/functions_a.js | 5 - .../docs/doxygen/html/search/functions_b.html | 30 - .../docs/doxygen/html/search/functions_b.js | 7 - .../docs/doxygen/html/search/functions_c.html | 30 - .../docs/doxygen/html/search/functions_c.js | 27 - .../docs/doxygen/html/search/functions_d.html | 30 - .../docs/doxygen/html/search/functions_d.js | 4 - .../docs/doxygen/html/search/functions_e.html | 30 - .../docs/doxygen/html/search/functions_e.js | 6 - .../docs/doxygen/html/search/functions_f.html | 30 - .../docs/doxygen/html/search/functions_f.js | 5 - .../docs/doxygen/html/search/mag_sel.png | Bin 465 -> 0 bytes .../doxygen/html/search/namespaces_0.html | 30 - .../docs/doxygen/html/search/namespaces_0.js | 4 - .../doxygen/html/search/namespaces_1.html | 30 - .../docs/doxygen/html/search/namespaces_1.js | 6 - .../doxygen/html/search/namespaces_2.html | 30 - .../docs/doxygen/html/search/namespaces_2.js | 4 - .../docs/doxygen/html/search/nomatches.html | 12 - .../docs/doxygen/html/search/pages_0.html | 30 - .../docs/doxygen/html/search/pages_0.js | 4 - .../docs/doxygen/html/search/pages_1.html | 30 - .../docs/doxygen/html/search/pages_1.js | 5 - .../docs/doxygen/html/search/pages_2.html | 30 - .../docs/doxygen/html/search/pages_2.js | 4 - .../docs/doxygen/html/search/related_0.html | 30 - .../docs/doxygen/html/search/related_0.js | 4 - .../docs/doxygen/html/search/search.css | 271 - .../docs/doxygen/html/search/search.js | 814 -- .../docs/doxygen/html/search/search_l.png | Bin 567 -> 0 bytes .../docs/doxygen/html/search/search_m.png | Bin 158 -> 0 bytes .../docs/doxygen/html/search/search_r.png | Bin 553 -> 0 bytes .../docs/doxygen/html/search/searchdata.js | 45 - .../docs/doxygen/html/search/typedefs_0.html | 30 - .../docs/doxygen/html/search/typedefs_0.js | 4 - .../docs/doxygen/html/search/typedefs_1.html | 30 - .../docs/doxygen/html/search/typedefs_1.js | 4 - .../docs/doxygen/html/search/variables_0.html | 30 - .../docs/doxygen/html/search/variables_0.js | 69 - .../docs/doxygen/html/search/variables_1.html | 30 - .../docs/doxygen/html/search/variables_1.js | 6 - .../doxygen/html/search/variables_10.html | 30 - .../docs/doxygen/html/search/variables_10.js | 6 - .../doxygen/html/search/variables_11.html | 30 - .../docs/doxygen/html/search/variables_11.js | 12 - .../doxygen/html/search/variables_12.html | 30 - .../docs/doxygen/html/search/variables_12.js | 51 - .../doxygen/html/search/variables_13.html | 30 - .../docs/doxygen/html/search/variables_13.js | 27 - .../doxygen/html/search/variables_14.html | 30 - .../docs/doxygen/html/search/variables_14.js | 11 - .../doxygen/html/search/variables_15.html | 30 - .../docs/doxygen/html/search/variables_15.js | 8 - .../doxygen/html/search/variables_16.html | 30 - .../docs/doxygen/html/search/variables_16.js | 8 - .../doxygen/html/search/variables_17.html | 30 - .../docs/doxygen/html/search/variables_17.js | 4 - .../doxygen/html/search/variables_18.html | 30 - .../docs/doxygen/html/search/variables_18.js | 5 - .../docs/doxygen/html/search/variables_2.html | 30 - .../docs/doxygen/html/search/variables_2.js | 13 - .../docs/doxygen/html/search/variables_3.html | 30 - .../docs/doxygen/html/search/variables_3.js | 25 - .../docs/doxygen/html/search/variables_4.html | 30 - .../docs/doxygen/html/search/variables_4.js | 16 - .../docs/doxygen/html/search/variables_5.html | 30 - .../docs/doxygen/html/search/variables_5.js | 7 - .../docs/doxygen/html/search/variables_6.html | 30 - .../docs/doxygen/html/search/variables_6.js | 16 - .../docs/doxygen/html/search/variables_7.html | 30 - .../docs/doxygen/html/search/variables_7.js | 13 - .../docs/doxygen/html/search/variables_8.html | 30 - .../docs/doxygen/html/search/variables_8.js | 11 - .../docs/doxygen/html/search/variables_9.html | 30 - .../docs/doxygen/html/search/variables_9.js | 4 - .../docs/doxygen/html/search/variables_a.html | 30 - .../docs/doxygen/html/search/variables_a.js | 2239 ----- .../docs/doxygen/html/search/variables_b.html | 30 - .../docs/doxygen/html/search/variables_b.js | 13 - .../docs/doxygen/html/search/variables_c.html | 30 - .../docs/doxygen/html/search/variables_c.js | 14 - .../docs/doxygen/html/search/variables_d.html | 30 - .../docs/doxygen/html/search/variables_d.js | 5 - .../docs/doxygen/html/search/variables_e.html | 30 - .../docs/doxygen/html/search/variables_e.js | 36 - .../docs/doxygen/html/search/variables_f.html | 30 - .../docs/doxygen/html/search/variables_f.js | 28 - .../docs/doxygen/html/splitbar.png | Bin 314 -> 0 bytes .../html/structCoronaSection-members.html | 86 - .../doxygen/html/structCoronaSection.html | 206 - .../html/structirparams__t-members.html | 87 - .../docs/doxygen/html/structirparams__t.html | 222 - .../html/structmatch__result__t-members.html | 82 - .../doxygen/html/structmatch__result__t.html | 142 - .../html/structstdAc_1_1state__t-members.html | 101 - .../doxygen/html/structstdAc_1_1state__t.html | 386 - .../docs/doxygen/html/sync_off.png | Bin 853 -> 0 bytes .../docs/doxygen/html/sync_on.png | Bin 845 -> 0 bytes .../docs/doxygen/html/tab_a.png | Bin 142 -> 0 bytes .../docs/doxygen/html/tab_b.png | Bin 169 -> 0 bytes .../docs/doxygen/html/tab_h.png | Bin 177 -> 0 bytes .../docs/doxygen/html/tab_s.png | Bin 184 -> 0 bytes .../docs/doxygen/html/tabs.css | 1 - .../docs/doxygen/html/todo.html | 101 - .../html/unionAirwellProtocol-members.html | 87 - .../doxygen/html/unionAirwellProtocol.html | 239 - .../html/unionAmcorProtocol-members.html | 96 - .../docs/doxygen/html/unionAmcorProtocol.html | 383 - .../html/unionArgoProtocol-members.html | 107 - .../docs/doxygen/html/unionArgoProtocol.html | 562 -- .../html/unionCarrierProtocol-members.html | 99 - .../doxygen/html/unionCarrierProtocol.html | 434 - .../html/unionCoolixProtocol-members.html | 89 - .../doxygen/html/unionCoolixProtocol.html | 295 - .../html/unionCoronaProtocol-members.html | 96 - .../doxygen/html/unionCoronaProtocol.html | 395 - .../html/unionCoronaProtocol__coll__graph.map | 4 - .../html/unionCoronaProtocol__coll__graph.md5 | 1 - .../html/unionCoronaProtocol__coll__graph.png | Bin 3779 -> 0 bytes .../html/unionDaikin128Protocol-members.html | 105 - .../doxygen/html/unionDaikin128Protocol.html | 530 -- .../html/unionDaikin152Protocol-members.html | 103 - .../doxygen/html/unionDaikin152Protocol.html | 498 - .../html/unionDaikin160Protocol-members.html | 97 - .../doxygen/html/unionDaikin160Protocol.html | 402 - .../html/unionDaikin176Protocol-members.html | 99 - .../doxygen/html/unionDaikin176Protocol.html | 434 - .../html/unionDaikin216Protocol-members.html | 100 - .../doxygen/html/unionDaikin216Protocol.html | 450 - .../html/unionDaikin2Protocol-members.html | 133 - .../doxygen/html/unionDaikin2Protocol.html | 996 -- .../html/unionDaikin64Protocol-members.html | 97 - .../doxygen/html/unionDaikin64Protocol.html | 402 - .../html/unionDaikinESPProtocol-members.html | 120 - .../doxygen/html/unionDaikinESPProtocol.html | 770 -- .../html/unionDelonghiProtocol-members.html | 100 - .../doxygen/html/unionDelonghiProtocol.html | 450 - .../html/unionEcoclimProtocol-members.html | 96 - .../doxygen/html/unionEcoclimProtocol.html | 428 - .../html/unionElectraProtocol-members.html | 103 - .../doxygen/html/unionElectraProtocol.html | 498 - .../html/unionFujitsuProtocol-members.html | 111 - .../doxygen/html/unionFujitsuProtocol.html | 643 -- .../unionGoodweatherProtocol-members.html | 97 - .../html/unionGoodweatherProtocol.html | 402 - .../html/unionGreeProtocol-members.html | 108 - .../docs/doxygen/html/unionGreeProtocol.html | 578 -- .../html/unionHaierProtocol-members.html | 100 - .../docs/doxygen/html/unionHaierProtocol.html | 450 - .../html/unionHaierYRW02Protocol-members.html | 104 - .../doxygen/html/unionHaierYRW02Protocol.html | 514 - .../html/unionHitachi1Protocol-members.html | 100 - .../doxygen/html/unionHitachi1Protocol.html | 450 - .../html/unionHitachi424Protocol-members.html | 97 - .../doxygen/html/unionHitachi424Protocol.html | 402 - .../html/unionHitachiProtocol-members.html | 94 - .../doxygen/html/unionHitachiProtocol.html | 354 - .../html/unionKelonProtocol-members.html | 96 - .../docs/doxygen/html/unionKelonProtocol.html | 378 - .../html/unionKelvinatorProtocol-members.html | 114 - .../doxygen/html/unionKelvinatorProtocol.html | 674 -- .../doxygen/html/unionLGProtocol-members.html | 88 - .../docs/doxygen/html/unionLGProtocol.html | 258 - .../html/unionMideaProtocol-members.html | 96 - .../docs/doxygen/html/unionMideaProtocol.html | 410 - .../unionMitsubishi112Protocol-members.html | 96 - .../html/unionMitsubishi112Protocol.html | 386 - .../unionMitsubishi136Protocol-members.html | 91 - .../html/unionMitsubishi136Protocol.html | 306 - .../unionMitsubishi144Protocol-members.html | 104 - .../html/unionMitsubishi144Protocol.html | 514 - .../unionMitsubishi152Protocol-members.html | 106 - .../html/unionMitsubishi152Protocol.html | 546 -- .../unionMitsubishi88Protocol-members.html | 95 - .../html/unionMitsubishi88Protocol.html | 370 - .../html/unionNeoclimaProtocol-members.html | 110 - .../doxygen/html/unionNeoclimaProtocol.html | 610 -- .../unionPanasonicAc32Protocol-members.html | 90 - .../html/unionPanasonicAc32Protocol.html | 293 - .../html/unionSamsungProtocol-members.html | 117 - .../doxygen/html/unionSamsungProtocol.html | 751 -- .../html/unionSanyoProtocol-members.html | 102 - .../docs/doxygen/html/unionSanyoProtocol.html | 485 - .../html/unionSharpProtocol-members.html | 106 - .../docs/doxygen/html/unionSharpProtocol.html | 546 -- .../html/unionTcl112Protocol-members.html | 102 - .../doxygen/html/unionTcl112Protocol.html | 482 - .../html/unionTechnibelProtocol-members.html | 98 - .../doxygen/html/unionTechnibelProtocol.html | 415 - .../html/unionTecoProtocol-members.html | 96 - .../docs/doxygen/html/unionTecoProtocol.html | 386 - .../html/unionToshibaProtocol-members.html | 97 - .../doxygen/html/unionToshibaProtocol.html | 405 - .../html/unionTranscoldProtocol-members.html | 86 - .../doxygen/html/unionTranscoldProtocol.html | 226 - .../html/unionTrotecProtocol-members.html | 97 - .../doxygen/html/unionTrotecProtocol.html | 402 - .../html/unionTrumaProtocol-members.html | 91 - .../docs/doxygen/html/unionTrumaProtocol.html | 312 - .../html/unionVestelProtocol-members.html | 107 - .../doxygen/html/unionVestelProtocol.html | 576 -- .../html/unionVoltasProtocol-members.html | 109 - .../doxygen/html/unionVoltasProtocol.html | 594 -- .../html/unionWhirlpoolProtocol-members.html | 121 - .../doxygen/html/unionWhirlpoolProtocol.html | 786 -- .../doxygen/html/unionmagiquest-members.html | 87 - .../docs/doxygen/html/unionmagiquest.html | 223 - .../docs/doxygen/html/zh-CN_8h.html | 82 - .../docs/doxygen/html/zh-CN_8h_source.html | 545 -- .../IRremoteESP8266/docs/doxygen_index.md | 60 - .../examples/IRMQTTServer/IRMQTTServer.h | 7 +- .../examples/IRMQTTServer/platformio.ini | 16 +- .../IRremoteESP8266/keywords.txt | 142 +- .../IRremoteESP8266/library.json | 2 +- .../IRremoteESP8266/library.properties | 2 +- .../IRremoteESP8266/src/IRac.cpp | 270 +- .../IRremoteESP8266/src/IRac.h | 30 +- .../IRremoteESP8266/src/IRrecv.cpp | 12 + .../IRremoteESP8266/src/IRrecv.h | 23 +- .../IRremoteESP8266/src/IRremoteESP8266.h | 35 +- .../IRremoteESP8266/src/IRsend.cpp | 21 + .../IRremoteESP8266/src/IRsend.h | 18 +- .../IRremoteESP8266/src/IRtext.cpp | 9 +- .../IRremoteESP8266/src/IRtext.h | 2 + .../IRremoteESP8266/src/IRutils.cpp | 68 +- .../IRremoteESP8266/src/ir_Bose.cpp | 69 + .../IRremoteESP8266/src/ir_Daikin.cpp | 464 +- .../IRremoteESP8266/src/ir_Daikin.h | 51 +- .../IRremoteESP8266/src/ir_Gree.cpp | 6 +- .../IRremoteESP8266/src/ir_Haier.cpp | 254 +- .../IRremoteESP8266/src/ir_Haier.h | 126 +- .../IRremoteESP8266/src/ir_LG.cpp | 446 +- .../IRremoteESP8266/src/ir_LG.h | 106 +- .../IRremoteESP8266/src/ir_Midea.h | 2 + .../IRremoteESP8266/src/ir_Mitsubishi.cpp | 164 +- .../IRremoteESP8266/src/ir_Mitsubishi.h | 16 +- .../IRremoteESP8266/src/ir_Panasonic.h | 2 + .../IRremoteESP8266/src/ir_Samsung.cpp | 126 +- .../IRremoteESP8266/src/ir_Samsung.h | 71 +- .../IRremoteESP8266/src/ir_Sanyo.cpp | 326 +- .../IRremoteESP8266/src/ir_Sanyo.h | 115 +- .../IRremoteESP8266/src/ir_Tcl.cpp | 177 +- .../IRremoteESP8266/src/ir_Tcl.h | 25 +- .../IRremoteESP8266/src/ir_Trotec.cpp | 302 + .../IRremoteESP8266/src/ir_Trotec.h | 106 +- .../IRremoteESP8266/src/locale/defaults.h | 15 + .../IRremoteESP8266/test/IRac_test.cpp | 303 +- .../IRremoteESP8266/test/ir_Bose_test.cpp | 108 + .../IRremoteESP8266/test/ir_Daikin_test.cpp | 440 +- .../IRremoteESP8266/test/ir_Haier_test.cpp | 203 +- .../IRremoteESP8266/test/ir_LG_test.cpp | 274 +- .../test/ir_Mitsubishi_test.cpp | 158 +- .../IRremoteESP8266/test/ir_Samsung_test.cpp | 455 +- .../IRremoteESP8266/test/ir_Sanyo_test.cpp | 322 +- .../IRremoteESP8266/test/ir_Tcl_test.cpp | 204 +- .../IRremoteESP8266/test/ir_Trotec_test.cpp | 292 +- .../tools/auto_analyse_raw_data.py | 11 +- .../tools/scrape_supported_devices.py | 6 +- 1430 files changed, 5070 insertions(+), 267781 deletions(-) delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README.md delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_de.md delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_fr.md delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/_config.yml delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/README_8md.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/annotated.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/bc_s.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/bdwn.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classes.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/closed.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/deprecated.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doc.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.css delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen__index_8md.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dynsections.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-AU_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-AU_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/files.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/folderclosed.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/folderopen.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_g.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_i.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_k.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_l.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_m.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_n.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_o.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_p.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_r.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_s.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_u.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_v.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_w.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_~.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_g.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_i.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_j.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_k.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_l.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_m.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_n.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_o.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_p.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_q.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_r.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_rela.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_s.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_u.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_v.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_i.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_j.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_l.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_m.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_n.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_o.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_p.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_q.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_r.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_s.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_u.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_v.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_w.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_x.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_z.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_w.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_x.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_z.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_~.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_enum.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_eval.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_func.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_g.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_i.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_j.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_k.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_l.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_m.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_n.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_p.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_r.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_s.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_type.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_u.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_v.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars_k.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_w.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_x.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_y.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_z.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/hierarchy.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/index.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherits.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Aiwa_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Denon_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Dish_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Doshisha_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__EliteScreens_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Epson_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GICable_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GlobalCache_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Inax_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__JVC_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lasertag_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lego_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lutron_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MWM_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Metz_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MilesTag2_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mirage_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Multibrackets_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Nikai_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pioneer_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pronto_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RC5__RC6_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RCMM_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sherwood_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sony_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Symphony_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teknopoint_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whynter_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Xmp_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Zepeal_8cpp.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/jquery.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/md_src_locale_README.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menu.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menudata.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRAcUtils.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRXmpUtils.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespace__IRrecv.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceirutils.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_enum.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_func.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_vars.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaces.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacestdAc.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_f.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_g.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_h.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/open.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pages.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/close.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/mag_sel.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/nomatches.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.css delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search_l.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search_m.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search_r.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/searchdata.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.js delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/splitbar.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/sync_off.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/sync_on.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_a.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_b.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_h.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_s.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tabs.css delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/todo.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.map delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.png delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest-members.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h_source.html delete mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen_index.md create mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Bose.cpp create mode 100644 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Bose_test.cpp diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d0feb195..5c69de80b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 +- IRremoteESP8266 library from v2.7.19 to v2.7.20 ### Fixed - WDT reset on shutters with stepper motors during deceleration (#12849) diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/Doxyfile b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/Doxyfile index 224c07315..8714b0476 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/Doxyfile +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/Doxyfile @@ -13,3 +13,4 @@ GENERATE_LATEX = NO ENABLE_PREPROCESSING = NO QUIET = YES WARN_NO_PARAMDOC = YES +WARN_AS_ERROR = YES diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md index de007d9c8..5dae9cfd9 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README.md @@ -1,16 +1,17 @@ ![IRremoteESP8266 Library](./assets/images/banner.svg) -[![Build Status](https://travis-ci.com/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.com/crankyoldgit/IRremoteESP8266) +[![Build Status](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Build.yml/badge.svg)](../../actions/workflows/Build.yml) +[![Code Lint](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Lint.yml/badge.svg)](../../actions/workflows/Lint.yml) +[![Tests](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/UnitTests.yml/badge.svg)](../../actions/workflows/UnitTests.yml) +[![Documentation](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Documentation.yml/badge.svg)](../../actions/workflows/Documentation.yml/badge.svg) [![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) -[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Average time to resolve an issue") -[![Percentage of issues still open](http://isitmaintained.com/badge/open/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Percentage of issues still open") [![GitLicense](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an [ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc. -## v2.7.19 Now Available -Version 2.7.19 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. +## v2.7.20 Now Available +Version 2.7.20 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. #### Upgrading from pre-v2.0 Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md index 690ce281a..51ded0420 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_de.md @@ -1,16 +1,18 @@ ![IRremoteESP8266 Library](./assets/images/banner.svg) -[![Build-Status](https://travis-ci.com/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.com/crankyoldgit/IRremoteESP8266) +[![Build-Status](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Build.yml/badge.svg)](../../actions/workflows/Build.yml/badge.svg) +[![Code-Lint](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Lint.yml/badge.svg)](../../actions/workflows/Lint.yml) +[![Tests](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/UnitTests.yml/badge.svg)](../../ctions/workflows/UnitTests.yml) +[![Dokumentation](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Documentation.yml/badge.svg)](../../actions/workflows/Documentation.yml) +[![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) [![Arduino-Bibliothek-Abzeichen](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) -[![Durchschnittliche Zeit bis zur Problemlösung](http://isitmaintained.com/badge/resolution/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Resolution Time") -[![Prozentsatz der offenen Probleme](http://isitmaintained.com/badge/open/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Open issues") [![Git-Lizenz](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarotsignalen mit [ESP8266](https://github.com/esp8266/Arduino)- und [ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs undIR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren. -## v2.7.19 jetzt verfügbar -Version 2.7.19 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen. +## v2.7.20 jetzt verfügbar +Version 2.7.20 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen. #### Hinweis für Nutzer von Versionen vor v2.0 Die Benutzung der Bibliothek hat sich mit Version 2.0 leicht geändert. Einige Anpassungen im aufrufenden Code werden nötig sein, um mit Version ab 2.0 korrekt zu funktionieren. Mehr zu den Anpassungen finden sich auf unserer [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0)-Seite. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md index c87ab75cf..fe314c459 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/README_fr.md @@ -1,16 +1,17 @@ ![IRremoteESP8266 Library](./assets/images/banner.svg) -[![Build Status](https://travis-ci.com/crankyoldgit/IRremoteESP8266.svg?branch=master)](https://travis-ci.com/crankyoldgit/IRremoteESP8266) +[![Construire](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Build.yml/badge.svg)](../../actions/workflows/Build.yml) +[![Charbon de code](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Lint.yml/badge.svg)](../../actions/workflows/Lint.yml) +[![Essais](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/UnitTests.yml/badge.svg)](../../actions/workflows/UnitTests.yml) +[![Documentation](https://github.com/crankyoldgit/IRremoteESP8266/actions/workflows/Documentation.yml/badge.svg)](../../actions/workflows/Documentation.yml) [![arduino-library-badge](https://www.ardu-badge.com/badge/IRremoteESP8266.svg?)](https://www.ardu-badge.com/IRremoteESP8266) -[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Average time to resolve an issue") -[![Percentage of issues still open](http://isitmaintained.com/badge/open/crankyoldgit/IRremoteESP8266.svg)](http://isitmaintained.com/project/crankyoldgit/IRremoteESP8266 "Percentage of issues still open") -[![GitLicense](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) +[![LicenseGit](https://gitlicense.com/badge/crankyoldgit/IRremoteESP8266)](https://gitlicense.com/license/crankyoldgit/IRremoteESP8266) Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole [ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc. -## v2.7.19 disponible -Version 2.7.19 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. +## v2.7.20 disponible +Version 2.7.20 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. #### mise à jour depuis pre-v2.0 L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md index 6fcd6f183..f5bc0f66a 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/ReleaseNotes.md @@ -1,5 +1,38 @@ # Release Notes +## _v2.7.20 (20210828)_ + +**[Bug Fixes]** +- Make `strToSwingH()` match "Right Max" (#1550 #1551) + +**[Features]** +- Experimental Bose remote support (#1579) +- Added MitsubishiAC VaneLeft (#1572 #1576) +- HAIER_AC176: Add experimental detailed support (#1480 #1571) +- Detailed support for Tornado/Sanyo 88-bit A/C protocol (#1503 #1568) +- Add support for new `TROTEC_3550` A/C protocol (#1563 #1566 #1507) +- SamsungAc: Use `sendExtended()` going forward. (#1484 #1562) +- SamsungAc: Redo/fix checksum calculations. (#1538 #1554) +- LG: Add support for `AKB73757604` model (#1531 #1545) +- Daikin176: Add support for Unit Id. (#1543 #1544) +- Daikin2: Add support for Humidity setting/operation. (#1535 #1540) +- TCL112AC: Add support for quiet/mute setting. (#1528 #1529) +- LG2: Add Fan speed, Swing, & Light support for new `AKB74955603` model (#1513 #1530) +- Add Mitsubishi AC "fan only" mode (#1527) + +**[Misc]** +- Change when some github workflows run (#1583) +- Add/update supported device info (#1580 #1581 #1585) +- Fix pylint issues due to pylint update. (#1569 #1570) +- DAIKIN216: Update supported models. (#1552 #1567) +- IRMQTTServer: Build a minimal OTA image via PlatformIO. (#1513 #1541) +- Reduce memory fragmentation cause by String usage. (#1493 #1536) +- Refactor `decodeMitsubishiAC()` (#1523 #1532) +- Fix incorrect comment. +- Migrate from Travis to GitHub Actions (#1522 #1526) +- Documentation update with additional supported Panasonic AC models (#1525) + + ## _v2.7.19 (20210706)_ **[Bug Fixes]** diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md index 9f91b52e9..348a6d641 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/SupportedProtocols.md @@ -1,6 +1,6 @@ + Last generated: Sat 28 Aug 2021 07:53:10 +0000 ---> # IR Protocols supported by this library | Protocol | Brand | Model | A/C Model | Detailed A/C Support | @@ -9,6 +9,7 @@ | [Aiwa](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Aiwa.cpp) | **Aiwa** | RC-T501 RCU | | - | | [Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.cpp) | **[Amcor](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Amcor.h)** | ADR-853H A/C
TAC-444 remote
TAC-495 remote | | Yes | | [Argo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Argo.cpp) | **[Argo](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Argo.h)** | Ulisse 13 DCI Mobile Split A/C | | Yes | +| [Bose](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Bose.cpp) | **Bose** | Bose TV Speaker | | - | | [Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.cpp) | **[Carrier/Surrey](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Carrier.h)** | 42QG5A55970 remote
53NGK009/012 Inverter
619EGX0090E0 A/C
619EGX0120E0 A/C
619EGX0180E0 A/C
619EGX0220E0 A/C | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Airwell](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RC08B remote | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Beko](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | BINR 070/071 split-type A/C
RG57K7(B)/BGEF Remote | | Yes | @@ -18,7 +19,7 @@ | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Tokio](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RAS-4M27YAV-E A/C
RAS-M10YKV-E A/C
RAS-M13YKV-E A/C
WH-E1YE remote | | Yes | | [Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.cpp) | **[Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.h)** | AR-01 remote
CSH-N2211 A/C
CSH-N2511 A/C
CSH-N2811 A/C
CSH-N4011 A/C | | Yes | -| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series A/C (DAIKIN128)
ARC423A5 remote (DAIKIN160)
ARC433** remote (DAIKIN)
ARC433B69 remote (DAIKIN216)
ARC466A33 remote (DAIKIN)
ARC477A1 remote (DAIKIN2)
ARC480A5 remote (DAIKIN152)
BRC4C151 remote (DAIKIN176)
BRC4C153 remote (DAIKIN176)
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FFQ35B8V1B A/C (DAIKIN176)
FTE12HV2S A/C
FTWX35AXV1 A/C (DAIKIN64)
FTXB09AXVJU A/C (DAIKIN128)
FTXB12AXVJU A/C (DAIKIN128)
FTXM-M A/C (DAIKIN)
FTXZ25NV1B A/C (DAIKIN2)
FTXZ35NV1B A/C (DAIKIN2)
FTXZ50NV1B A/C (DAIKIN2)
M Series A/C (DAIKIN) | | Yes | +| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series A/C (DAIKIN128)
ARC423A5 remote (DAIKIN160)
ARC433** remote (DAIKIN)
ARC433B69 remote (DAIKIN216)
ARC466A33 remote (DAIKIN)
ARC477A1 remote (DAIKIN2)
ARC480A5 remote (DAIKIN152)
ARC484A4 remote (DAIKIN216)
BRC4C151 remote (DAIKIN176)
BRC4C153 remote (DAIKIN176)
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FFQ35B8V1B A/C (DAIKIN176)
FTE12HV2S A/C
FTQ60TV16U2 A/C (DAIKIN216)
FTWX35AXV1 A/C (DAIKIN64)
FTXB09AXVJU A/C (DAIKIN128)
FTXB12AXVJU A/C (DAIKIN128)
FTXM-M A/C (DAIKIN)
FTXZ25NV1B A/C (DAIKIN2)
FTXZ35NV1B A/C (DAIKIN2)
FTXZ50NV1B A/C (DAIKIN2)
M Series A/C (DAIKIN) | | Yes | | [Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.cpp) | **[Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.h)** | PAC A95 | | Yes | | [Denon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Denon.cpp) | **Denon** | AVR-3801 A/V Receiver (probably) | | - | | [Dish](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Dish.cpp) | **DISH NETWORK** | echostar 301 | | - | @@ -51,8 +52,8 @@ | [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAPOF3 remote | | Yes | | [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | KSV26CRC A/C
KSV26HRC A/C
KSV35CRC A/C
KSV35HRC A/C
KSV53HRC A/C
KSV62HRC A/C
KSV70CRC A/C
KSV70HRC A/C
KSV80HRC A/C
YALIF Remote | | Yes | | [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | A5VEY A/C
YB1FA remote | | Yes | -| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M A/C Remote
AG1BH09AW101 Split A/C | | Yes | -| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote (LG)
AKB74395308 remote (LG2)
AKB75215403 remote (LG2)
S4-W12JA3AA A/C (LG2) | | Yes | +| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M A/C Remote (LG)
AG1BH09AW101 Split A/C (LG) | | Yes | +| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote (LG)
A4UW30GFA2 A/C (LG2 - AKB74955603 & AKB73757604)
AKB73757604 remote (LG2 - AKB73757604)
AKB74395308 remote (LG2)
AKB74955603 remote (LG2 - AKB74955603)
AKB75215403 remote (LG2)
AMNW09GSJA0 A/C (LG2 - AKB74955603)
AMNW24GTPA1 A/C (LG2 - AKB73757604)
S4-W12JA3AA A/C (LG2) | | Yes | | [Lasertag](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lasertag.cpp) | **Lasertag** | Phaser emitters | | - | | [Lego](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lego.cpp) | **LEGO Power Functions** | IR Receiver | | - | | [Lutron](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lutron.cpp) | **Lutron** | MIR-ITFS remote
MIR-ITFS-F remote
MIR-ITFS-LF remote
SP-HT remote | | - | @@ -66,10 +67,11 @@ | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | FS40-7AR Stand Fan (MIDEA24) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[MrCool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57A6/BGEFU1 remote (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Pioneer System](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG66B6(B)/BGEFU1 remote (MIDEA)
RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
RYBO12GMFILCAD A/C (12K BTU) (MIDEA)
UB018GMFILCFHD A/C (12K BTU) (MIDEA)
WS012GMFI22HLD A/C (12K BTU) (MIDEA)
WS018GMFI22HLD A/C (12K BTU) (MIDEA) | | Yes | +| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57H(B)/BGE remote (MIDEA)
TROTEC PAC 3900 X (MIDEA) | | Yes | | [MilesTag2](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MilesTag2.cpp) | **Milestag2** | Various | | - | | [Mirage](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mirage.cpp) | **Mirage** | VLU series A/C | | - | | [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | HC3000 Projector (MITSUBISHI2)
KM14A 0179213 remote
MS-GK24VA A/C
TV (MITSUBISHI) | | Yes | -| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote (MITSUBISHI136)
KPOA remote (MITSUBISHI112)
MLZ-RX5017AS A/C (MITSUBISHI_AC)
MSH-A24WV A/C (MITSUBISHI112)
MSZ-GV2519 A/C (MITSUBISHI_AC)
MUH-A24WV A/C (MITSUBISHI112)
PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
RH151/M21ED6426 remote (MITSUBISHI_AC)
SG153/M21EDF426 remote (MITSUBISHI_AC) | | Yes | +| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote (MITSUBISHI136)
KPOA remote (MITSUBISHI112)
MLZ-RX5017AS A/C (MITSUBISHI_AC)
MSH-A24WV A/C (MITSUBISHI112)
MSZ-GV2519 A/C (MITSUBISHI_AC)
MSZ-SF25VE3 A/C (MITSUBISHI_AC)
MSZ-ZW4017S A/C (MITSUBISHI_AC)
MUH-A24WV A/C (MITSUBISHI112)
PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
RH151/M21ED6426 remote (MITSUBISHI_AC)
SG153/M21EDF426 remote (MITSUBISHI_AC)
SG15D remote (MITSUBISHI_AC) | | Yes | | [MitsubishiHeavy](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.cpp) | **[Mitsubishi Heavy Industries](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.h)** | RKX502A001C remote (88 bit)
RLA502A700B remote (152 bit)
SRKxxZJ-S A/C (88 bit)
SRKxxZM-S A/C (152 bit)
SRKxxZMXA-S A/C (152 bit) | | Yes | | [Multibrackets](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Multibrackets.cpp) | **Multibrackets** | Motorized Swing mount large - 4500 | | - | | [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Aloka](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SleepyLights LED Lamp | | - | @@ -80,7 +82,7 @@ | [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | NS-09AHTI A/C
ZH/TY-01 remote | | Yes | | [Neoclima](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.cpp) | **[Soleus Air](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Neoclima.h)** | TTWM1-10-01 A/C
ZCF/TL-05 remote | | Yes | | [Nikai](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Nikai.cpp) | **Nikai** | Unknown LCD TV | | - | -| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2295 remote (PANASONIC_AC32)
A75C2311 remote (PANASONIC_AC CKP/5)
A75C2616-1 remote (PANASONIC_AC DKE/3)
A75C3704 remote (PANASONIC_AC DKE/3)
A75C3747 remote (PANASONIC_AC JKE/4)
CKP series A/C (PANASONIC_AC CKP/5)
CS-E7PKR A/C (PANASONIC_AC DKE/2)
CS-E9CKP series A/C (PANASONIC_AC32)
CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
CS-YW9MKD A/C (PANASONIC_AC JKE/4)
CS-Z9RKR A/C (PANASONIC_AC RKR/6)
DKE series A/C (PANASONIC_AC DKE/3)
DKW series A/C (PANASONIC_AC DKE/3)
JKE series A/C (PANASONIC_AC JKE/4)
NKE series A/C (PANASONIC_AC NKE/2)
PKR series A/C (PANASONIC_AC DKE/3)
RKR series A/C (PANASONIC_AC RKR/6)
TV (PANASONIC) | CKP
DKE
JKE
LKE
NKE
RKR | Yes | +| [Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.cpp) | **[Panasonic](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Panasonic.h)** | A75C2295 remote (PANASONIC_AC32)
A75C2311 remote (PANASONIC_AC CKP/5)
A75C2616-1 remote (PANASONIC_AC DKE/3)
A75C3704 remote (PANASONIC_AC DKE/3)
A75C3747 remote (PANASONIC_AC JKE/4)
A75C4762 remote (PANASONIC_AC RKR/6)
CKP series A/C (PANASONIC_AC CKP/5)
CS-E7PKR A/C (PANASONIC_AC DKE/2)
CS-E9CKP series A/C (PANASONIC_AC32)
CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
CS-YW9MKD A/C (PANASONIC_AC JKE/4)
CS-Z24RKR A/C (PANASONIC_AC RKR/6)
CS-Z9RKR A/C (PANASONIC_AC RKR/6)
DKE series A/C (PANASONIC_AC DKE/3)
DKW series A/C (PANASONIC_AC DKE/3)
JKE series A/C (PANASONIC_AC JKE/4)
NKE series A/C (PANASONIC_AC NKE/2)
PKR series A/C (PANASONIC_AC DKE/3)
RKR series A/C (PANASONIC_AC RKR/6)
TV (PANASONIC) | CKP
DKE
JKE
LKE
NKE
RKR | Yes | | [Pioneer](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pioneer.cpp) | **Pioneer** | AV Receivers
AXD7690 Remote
VSX-324 AV Receiver | | - | | [Pronto](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Pronto.cpp) | **Pronto** | Pronto Hex | | - | | [RC5_RC6](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_RC5_RC6.cpp) | **Philips** | RC-5X (RC5X)
Standard RC-5 (RC5)
Standard RC-6 (RC6) | | - | @@ -96,14 +98,15 @@ | [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Symphony** | Air Cooler 3Di | | - | | [Symphony](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Symphony.cpp) | **Westinghouse** | 78095 Remote
Ceiling fan | | - | | [Tcl](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.cpp) | **[Leberg](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.h)** | LBS-TOR07 A/C | | Yes | +| [Tcl](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.cpp) | **[TCL](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.h)** | TAC-09CHSD/XA31I A/C | | Yes | | [Technibel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Technibel.cpp) | **[Technibel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Technibel.h)** | IRO PLUS | | Yes | | [Teco](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.cpp) | **[Alaska](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.h)** | SAC9010QC A/C
SAC9010QC remote | | Yes | | [Teknopoint](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teknopoint.cpp) | **Teknopoint** | Allegro SSA-09H A/C
GZ-055B-E1 remote | | - | | [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | 42NQV025M2 / 38NYV025M2 A/C
42NQV035M2 / 38NYV035M2 A/C
42NQV050M2 / 38NYV050M2 A/C
42NQV060M2 / 38NYV060M2 A/C | | Yes | | [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | Akita EVO II
RAS 18SKP-ES
RAS-2558V A/C
RAS-B13N3KV2
RAS-B13N3KVP-E
WC-L03SE
WH-TA04NE
WH-UB03NJ remote | | Yes | | [Transcold](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Transcold.cpp) | **[Transcold](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Transcold.h)** | M1-F-NO-6 A/C | | Yes | -| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Duux](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | Blizzard Smart 10K / DXMA04 A/C | | Yes | -| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | PAC 3200 A/C | | Yes | +| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Duux](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | Blizzard Smart 10K / DXMA04 A/C (TROTEC) | | Yes | +| [Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.cpp) | **[Trotec](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Trotec.h)** | PAC 3200 A/C (TROTEC)
PAC 3550 Pro A/C (TROTEC_3550) | | Yes | | [Truma](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Truma.cpp) | **[Truma](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Truma.h)** | 40091-86700 remote
Aventa A/C | | Yes | | [Vestel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Vestel.cpp) | **[Vestel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Vestel.h)** | BIOX CXP-9 A/C (9K BTU) | | Yes | | [Voltas](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Voltas.cpp) | **[Voltas](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Voltas.h)** | 122LZF 4011252 Window A/C | 122LZF | Yes | @@ -128,6 +131,7 @@ - AIWA_RC_T501 - AMCOR - ARGO +- BOSE - CARRIER_AC - CARRIER_AC40 - CARRIER_AC64 @@ -203,6 +207,7 @@ - SAMSUNG_AC - SANYO - SANYO_AC +- SANYO_AC88 - SANYO_LC7461 - SHARP - SHARP_AC @@ -215,6 +220,7 @@ - TOSHIBA_AC - TRANSCOLD - TROTEC +- TROTEC_3550 - TRUMA - VESTEL_AC - VOLTAS diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README.md deleted file mode 100644 index 262e82b62..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# IRremoteESP8266 Library - -This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an -[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc. - -## Supported Protocols -You can find the details of which protocols & devices are supported -[here](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). - -## Troubleshooting -Before reporting an issue or asking for help, please try to follow our [Troubleshooting Guide](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) first. - -## Frequently Asked Questions -Some common answers to common questions and problems are on our [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). - -## Library API Documentation -This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). -You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). - -## Installation -##### Official releases via the Arduino IDE v1.8+ (Windows & Linux) -1. Click the _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. -1. Enter `IRremoteESP8266` into the _"Filter your search..."_ top right search box. -1. Click on the IRremoteESP8266 result of the search. -1. Select the version you wish to install and click _"Install"_. - -##### Manual Installation for Windows -1. Click on _"Clone or Download"_ button, then _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. -1. Extract the contents of the downloaded zip file. -1. Rename the extracted folder to _"IRremoteESP8266"_. -1. Move this folder to your libraries directory. (under windows: `C:\Users\YOURNAME\Documents\Arduino\libraries\`) -1. Restart your Arduino IDE. -1. Check out the examples. - -##### Using Git to install the library ( Linux ) -``` -cd ~/Arduino/libraries -git clone https://github.com/crankyoldgit/IRremoteESP8266.git -``` -###### To update to the latest version of the library -``` -cd ~/Arduino/libraries/IRremoteESP8266 && git pull -``` - -## Contributing -If you want to [contribute](.github/CONTRIBUTING.md#how-can-i-contribute) to this project, consider: -- [Reporting](.github/CONTRIBUTING.md#reporting-bugs) bugs and errors -- Ask for enhancements -- Improve our documentation -- [Creating issues](.github/CONTRIBUTING.md#reporting-bugs) and [pull requests](.github/CONTRIBUTING.md#pull-requests) -- Tell other people about this library - -## Contributors -Available [here](.github/Contributors.md) - -## Library History -This library was originally based on Ken Shirriff's work (https://github.com/shirriff/Arduino-IRremote/) - -[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) has updated the IRsend class to work on ESP8266 and [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) the receiving & decoding part (IRrecv class). - -As of v2.0, the library was almost entirely re-written with the ESP8266's resources in mind. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_de.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_de.md deleted file mode 100644 index 4ef3bccc5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_de.md +++ /dev/null @@ -1,59 +0,0 @@ -# IRremoteESP8266 Library - -Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarot-Signalen mit [ESP8266](https://github.com/esp8266/Arduino)- oder [ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs und IR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren. - -## Unterstützte Protokolle -Details zu den unterstützten Protokollen und Geräten befinden sich [hier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). - -## Fehlersuche -Bitte erst den [Troubleshooting Guide](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) lesen, bevor Probleme gemeldet werden oder um Hilfe gebeten wird. - -## FAQ - häufige Fragen -Einige Antworten zu häufig gestellten Fragen sind auf unserer [F.A.Q. Wiki-Seite](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions) hinterlegt. - -## Library API-Dokumentation -Diese Bibliothek benutzt [Doxygen](https://www.doxygen.nl/index.html) zur [automatischen Dokumentation](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) der [API](https://en.wikipedia.org/wiki/Application_programming_interface) dieser [Bibliothek](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). -Sie ist [hier](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) zu finden. - -## Installation -##### Installation von offiziellen Releases über die Arduino-IDE v1.8+ (Windows & Linux) -1. Das Untermenü _"Sketch"_ -> _"Bibliothek einbinden"_ -> _"Bibliotheken verwalten..."_ aufrufen. -1. In das Suchfeld oben rechts (_"Grenzen Sie Ihre Suche ein..."_) `IRremoteESP8266` eintragen. -1. Bei den Suchergebnissen IRremoteESP8266 auswählen. -1. Die Version markieren, die installiert werden soll, und dann _"Installieren"_ klicken. - -##### Manuelle Installation (Windows) -1. Auf der Website auf den grünen _"Code"_-Knopf klicken, dann _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ auswählen. -1. Die heruntergeladene Zip-Datei entpacken. -1. Den entpackten Dateiordner in _"IRremoteESP8266"_ umbenennen. -1. Diesen Ordner anschließend in den Bibliotheken-Pfad verschieben. (Unter Windows: `C:\Users\BENUTZER\Dokumente\Arduino\libraries\`) -1. Die Arduino-IDE neu starten. -1. Unter den Beispielen finden sich neue Einträge. - -##### Benutzung von Git für die Installation der Bibliothek (Linux) -``` -cd ~/Arduino/libraries -git clone https://github.com/crankyoldgit/IRremoteESP8266.git -``` -###### Um die neueste Version der Bibliothek zu beziehen -``` -cd ~/Arduino/libraries/IRremoteESP8266 && git pull -``` - -## Mithelfen -Anregungen für die [Mithilfe](.github/CONTRIBUTING.md#how-can-i-contribute) am Projekt: -- Das [Melden](.github/CONTRIBUTING.md#reporting-bugs) von Bugs und Fehlern -- Das Einreichen von Verbesserungs- und Erweiterungsvorschlägen -- Das Erstellen und Verbessern der Dokumentation -- Das [Melden von Problemen](.github/CONTRIBUTING.md#reporting-bugs) und Einreichen von [Pull-Requests](.github/CONTRIBUTING.md#pull-requests) -- Anderen Leuten von dieser Bibliothek erzählen - -## Beitragende -Die Beitragenden sind [hier](.github/Contributors.md) aufgelistet. - -## Historie der Bibliothek -Diese Bibliothek basiert auf Ken Shirriff's Vorarbeit (https://github.com/shirriff/Arduino-IRremote/). - -[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) programmierte die IRsend-Klassen auf ESP8266 und [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) war verantwortlich für die Empfangs- und Dekodier-Teile (IRrecv-Klassen). - -Die Bibliothek wurde ab Version v2.0 fast komplett neu geschrieben, um besser auf die ESP8266-Ressourcen Rücksicht zu nehmen. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_fr.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_fr.md deleted file mode 100644 index 3ff81c5d8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/README_fr.md +++ /dev/null @@ -1,64 +0,0 @@ -# IRremoteESP8266 Library - -Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole -[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc. - -## Protocoles supportés -Vous pouvez trouver le détails des protocoles et machines supportés -[here](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/SupportedProtocols.md). - -## Dépannage -Avant de reporter un probème ou de demander de l'aide, essayez de suivre notre [guide de dépannage](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Troubleshooting-Guide) first. - -## Questions fréquentes -Les questions les plus fréquentes sont ici, avec des réponses [F.A.Q. wiki page](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Frequently-Asked-Questions). - -## Documentation API de la bibliothèque -Cette bibliothèque utilise [Doxygen](https://www.doxygen.nl/index.html) pour [documenter automatiquement](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [l'API](https://en.wikipedia.org/wiki/Application_programming_interface) de la [bibliothèque](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). Vous pouvez le trouver [ici](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). - -## Installation -##### Officiel releases avec l'Arduino IDE v1.8+ (Windows & Linux) -1. Cliquez sur _"Sketch"_ -> _"Include Library"_ -> _"Manage Libraries..."_ Menu items. -1. Entrez `IRremoteESP8266` dans le _"Filter your search..."_ barre de recherche en haut à droite. -1. Cliquez sur le IRremoteESP8266 pour avoir les résultats de la recherche. -1. Selectionnez la version que vous voulez installer et cliquez sur _"Install"_. - -## Library API Documentation -This library uses [Doxygen](https://www.doxygen.nl/index.html) to [automatically document](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) the [library's](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/) [API](https://en.wikipedia.org/wiki/Application_programming_interface). -You can find it [here](https://crankyoldgit.github.io/IRremoteESP8266/doxygen/html/). - -##### Installation manuelle pour Windows -1. cliquez le boutton sur _"Clone or Download"_ , et _"[Download ZIP](https://github.com/crankyoldgit/IRremoteESP8266/archive->master.zip)"_ on the page. -1. Extraire l'archive. -1. renommez le fichier par _"IRremoteESP8266"_. -1. déplacer le fichier dans votre fichier de bibliothèques. (Pour windows : `C:\Users\VOTRE_NOM\Documents\Arduino\libraries\`) -1. Redemarrez arduino IDE. -1. Regardez les exemples. - -##### En utilisant GIT ( Linux ) -``` -cd ~/Arduino/libraries -git clone https://github.com/crankyoldgit/IRremoteESP8266.git -``` -###### Pour se mettre à jour -``` -cd ~/Arduino/libraries/IRremoteESP8266 && git pull -``` - -## Contribution -Si vous voulez [contribuer](.github/CONTRIBUTING.md#how-can-i-contribute) au projet, pour les erreurs: -- [Reporting](.github/CONTRIBUTING.md#reporting-bugs) bug et erreurs -- Demander des améliorations -- Améliorer notre documentation -- [Création d'issues](.github/CONTRIBUTING.md#reporting-bugs) et [pull requests](.github/CONTRIBUTING.md#pull-requests) -- Parlez de cettre librairie à d'autres personnes - -## Contributeurs -disponible [ici](.github/Contributors.md) - -## Historique de la bibliothèque -Elle est basée sur le travail de Shirriff (https://github.com/shirriff/Arduino-IRremote/) - -[Mark Szabo](https://github.com/crankyoldgit/IRremoteESP8266) à mis a jour la IRsend class pour qu'elle soit fonctionnelle sur ESP8266 et [Sebastien Warin](https://github.com/sebastienwarin/IRremoteESP8266) s'est occupé de la partie réception et décodage (IRrecv class). - -Comme pour la version 2.0, la bibliothèque à été completement réécrite avec les ressources sur ESP8266. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/_config.yml b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/_config.yml deleted file mode 100644 index c74188174..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-slate \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8cpp.html deleted file mode 100644 index 712ddbf93..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8cpp.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRac.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRac.cpp File Reference
-
-
- - - - - -

-Namespaces

 IRAcUtils
 Common functions for use with all A/Cs supported by the IRac class.
 
- - - - - - - -

-Functions

String IRAcUtils::resultAcToString (const decode_results *const result)
 Display the human readable state of an A/C message if we can. More...
 
bool IRAcUtils::decodeToState (const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
 Convert a valid IR A/C remote message that we understand enough into a Common A/C state. More...
 
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h.html deleted file mode 100644 index 5aec953b6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRac.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRac.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - -

-Classes

class  IRac
 A universal/common/generic interface for controling supported A/Cs. More...
 
- - - - -

-Namespaces

 IRAcUtils
 Common functions for use with all A/Cs supported by the IRac class.
 
- - - - - - - -

-Functions

String IRAcUtils::resultAcToString (const decode_results *const result)
 Display the human readable state of an A/C message if we can. More...
 
bool IRAcUtils::decodeToState (const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
 Convert a valid IR A/C remote message that we understand enough into a Common A/C state. More...
 
- - - - -

-Variables

const int8_t kGpioUnused = -1
 A placeholder for not using an actual GPIO. More...
 
-

Variable Documentation

- -

◆ kGpioUnused

- -
-
- - - - -
const int8_t kGpioUnused = -1
-
- -

A placeholder for not using an actual GPIO.

- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h_source.html deleted file mode 100644 index d5c997fb1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRac_8h_source.html +++ /dev/null @@ -1,746 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRac.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRac.h
-
-
-Go to the documentation of this file.
1 #ifndef IRAC_H_
-
2 #define IRAC_H_
-
3 
-
4 // Copyright 2019 David Conran
-
5 
-
6 #ifndef UNIT_TEST
-
7 #include <Arduino.h>
-
8 #endif
-
9 #include "IRremoteESP8266.h"
-
10 #include "ir_Airwell.h"
-
11 #include "ir_Amcor.h"
-
12 #include "ir_Argo.h"
-
13 #include "ir_Carrier.h"
-
14 #include "ir_Coolix.h"
-
15 #include "ir_Corona.h"
-
16 #include "ir_Daikin.h"
-
17 #include "ir_Delonghi.h"
-
18 #include "ir_Fujitsu.h"
-
19 #include "ir_Ecoclim.h"
-
20 #include "ir_Electra.h"
-
21 #include "ir_Goodweather.h"
-
22 #include "ir_Gree.h"
-
23 #include "ir_Haier.h"
-
24 #include "ir_Hitachi.h"
-
25 #include "ir_Kelon.h"
-
26 #include "ir_Kelvinator.h"
-
27 #include "ir_LG.h"
-
28 #include "ir_Midea.h"
-
29 #include "ir_Mitsubishi.h"
-
30 #include "ir_MitsubishiHeavy.h"
-
31 #include "ir_Neoclima.h"
-
32 #include "ir_Panasonic.h"
-
33 #include "ir_Samsung.h"
-
34 #include "ir_Sanyo.h"
-
35 #include "ir_Sharp.h"
-
36 #include "ir_Tcl.h"
-
37 #include "ir_Technibel.h"
-
38 #include "ir_Teco.h"
-
39 #include "ir_Toshiba.h"
-
40 #include "ir_Transcold.h"
-
41 #include "ir_Trotec.h"
-
42 #include "ir_Truma.h"
-
43 #include "ir_Vestel.h"
-
44 #include "ir_Voltas.h"
-
45 #include "ir_Whirlpool.h"
-
46 
-
47 // Constants
-
48 const int8_t kGpioUnused = -1;
-
49 
-
50 // Class
-
52 class IRac {
-
53  public:
-
54  explicit IRac(const uint16_t pin, const bool inverted = false,
-
55  const bool use_modulation = true);
-
56  static bool isProtocolSupported(const decode_type_t protocol);
-
57  static void initState(stdAc::state_t *state,
-
58  const decode_type_t vendor, const int16_t model,
-
59  const bool power, const stdAc::opmode_t mode,
-
60  const float degrees, const bool celsius,
-
61  const stdAc::fanspeed_t fan,
-
62  const stdAc::swingv_t swingv,
-
63  const stdAc::swingh_t swingh,
-
64  const bool quiet, const bool turbo, const bool econo,
-
65  const bool light, const bool filter, const bool clean,
-
66  const bool beep, const int16_t sleep,
-
67  const int16_t clock);
-
68  static void initState(stdAc::state_t *state);
-
69  void markAsSent(void);
-
70  bool sendAc(void);
-
71  bool sendAc(const stdAc::state_t desired, const stdAc::state_t *prev = NULL);
-
72  bool sendAc(const decode_type_t vendor, const int16_t model,
-
73  const bool power, const stdAc::opmode_t mode, const float degrees,
-
74  const bool celsius, const stdAc::fanspeed_t fan,
-
75  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
76  const bool quiet, const bool turbo, const bool econo,
-
77  const bool light, const bool filter, const bool clean,
-
78  const bool beep, const int16_t sleep = -1,
-
79  const int16_t clock = -1);
-
80  static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b);
-
81  static bool strToBool(const char *str, const bool def = false);
-
82  static int16_t strToModel(const char *str, const int16_t def = -1);
- -
84  const char *str, const stdAc::opmode_t def = stdAc::opmode_t::kAuto);
- -
86  const char *str,
- - -
89  const char *str, const stdAc::swingv_t def = stdAc::swingv_t::kOff);
- -
91  const char *str, const stdAc::swingh_t def = stdAc::swingh_t::kOff);
-
92  static String boolToString(const bool value);
-
93  static String opmodeToString(const stdAc::opmode_t mode);
-
94  static String fanspeedToString(const stdAc::fanspeed_t speed);
-
95  static String swingvToString(const stdAc::swingv_t swingv);
-
96  static String swinghToString(const stdAc::swingh_t swingh);
- - -
99  bool hasStateChanged(void);
- -
101 #ifndef UNIT_TEST
-
102 
-
103  private:
-
104 #endif
-
105  uint16_t _pin;
-
106  bool _inverted;
-
107  bool _modulation;
- -
109 #if SEND_AIRWELL
-
110  void airwell(IRAirwellAc *ac,
-
111  const bool on, const stdAc::opmode_t mode, const float degrees,
-
112  const stdAc::fanspeed_t fan);
-
113 #endif // SEND_AIRWELL
-
114 #if SEND_AMCOR
-
115  void amcor(IRAmcorAc *ac,
-
116  const bool on, const stdAc::opmode_t mode, const float degrees,
-
117  const stdAc::fanspeed_t fan);
-
118 #endif // SEND_AMCOR
-
119 #if SEND_ARGO
-
120  void argo(IRArgoAC *ac,
-
121  const bool on, const stdAc::opmode_t mode, const float degrees,
-
122  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
123  const bool turbo, const int16_t sleep = -1);
-
124 #endif // SEND_ARGO
-
125 #if SEND_CARRIER_AC64
-
126 void carrier64(IRCarrierAc64 *ac,
-
127  const bool on, const stdAc::opmode_t mode,
-
128  const float degrees, const stdAc::fanspeed_t fan,
-
129  const stdAc::swingv_t swingv, const int16_t sleep = -1);
-
130 #endif // SEND_CARRIER_AC64
-
131 #if SEND_COOLIX
-
132  void coolix(IRCoolixAC *ac,
-
133  const bool on, const stdAc::opmode_t mode, const float degrees,
-
134  const stdAc::fanspeed_t fan,
-
135  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
136  const bool turbo, const bool light, const bool clean,
-
137  const int16_t sleep = -1);
-
138 #endif // SEND_COOLIX
-
139 #if SEND_CORONA_AC
-
140  void corona(IRCoronaAc *ac,
-
141  const bool on, const stdAc::opmode_t mode,
-
142  const float degrees, const stdAc::fanspeed_t fan,
-
143  const stdAc::swingv_t swingv, const bool econo);
-
144 #endif // SEND_CORONA_AC
-
145 #if SEND_DAIKIN
-
146  void daikin(IRDaikinESP *ac,
-
147  const bool on, const stdAc::opmode_t mode, const float degrees,
-
148  const stdAc::fanspeed_t fan,
-
149  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
150  const bool quiet, const bool turbo, const bool econo,
-
151  const bool clean);
-
152 #endif // SEND_DAIKIN
-
153 #if SEND_DAIKIN128
-
154  void daikin128(IRDaikin128 *ac,
-
155  const bool on, const stdAc::opmode_t mode,
-
156  const float degrees, const stdAc::fanspeed_t fan,
-
157  const stdAc::swingv_t swingv,
-
158  const bool quiet, const bool turbo, const bool light,
-
159  const bool econo, const int16_t sleep = -1,
-
160  const int16_t clock = -1);
-
161 #endif // SEND_DAIKIN128
-
162 #if SEND_DAIKIN152
-
163  void daikin152(IRDaikin152 *ac,
-
164  const bool on, const stdAc::opmode_t mode,
-
165  const float degrees, const stdAc::fanspeed_t fan,
-
166  const stdAc::swingv_t swingv,
-
167  const bool quiet, const bool turbo, const bool econo);
-
168 #endif // SEND_DAIKIN152
-
169 #if SEND_DAIKIN160
-
170  void daikin160(IRDaikin160 *ac,
-
171  const bool on, const stdAc::opmode_t mode,
-
172  const float degrees, const stdAc::fanspeed_t fan,
-
173  const stdAc::swingv_t swingv);
-
174 #endif // SEND_DAIKIN160
-
175 #if SEND_DAIKIN176
-
176  void daikin176(IRDaikin176 *ac,
-
177  const bool on, const stdAc::opmode_t mode,
-
178  const float degrees, const stdAc::fanspeed_t fan,
-
179  const stdAc::swingh_t swingh);
-
180 #endif // SEND_DAIKIN176
-
181 #if SEND_DAIKIN2
-
182  void daikin2(IRDaikin2 *ac,
-
183  const bool on, const stdAc::opmode_t mode,
-
184  const float degrees, const stdAc::fanspeed_t fan,
-
185  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
186  const bool quiet, const bool turbo, const bool light,
-
187  const bool econo, const bool filter, const bool clean,
-
188  const bool beep, const int16_t sleep = -1,
-
189  const int16_t clock = -1);
-
190 #endif // SEND_DAIKIN2
-
191 #if SEND_DAIKIN216
-
192 void daikin216(IRDaikin216 *ac,
-
193  const bool on, const stdAc::opmode_t mode,
-
194  const float degrees, const stdAc::fanspeed_t fan,
-
195  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
196  const bool quiet, const bool turbo);
-
197 #endif // SEND_DAIKIN216
-
198 #if SEND_DAIKIN64
-
199  void daikin64(IRDaikin64 *ac,
-
200  const bool on, const stdAc::opmode_t mode,
-
201  const float degrees, const stdAc::fanspeed_t fan,
-
202  const stdAc::swingv_t swingv,
-
203  const bool quiet, const bool turbo,
-
204  const int16_t sleep = -1, const int16_t clock = -1);
-
205 #endif // SEND_DAIKIN64
-
206 #if SEND_DELONGHI_AC
-
207  void delonghiac(IRDelonghiAc *ac,
-
208  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
209  const float degrees, const stdAc::fanspeed_t fan,
-
210  const bool turbo, const int16_t sleep = -1);
-
211 #endif // SEND_DELONGHI_AC
-
212 #if SEND_ECOCLIM
-
213 void ecoclim(IREcoclimAc *ac,
-
214  const bool on, const stdAc::opmode_t mode,
-
215  const float degrees, const stdAc::fanspeed_t fan,
-
216  const int16_t sleep = -1, const int16_t clock = -1);
-
217 #endif // SEND_ECOCLIM
-
218 #if SEND_ELECTRA_AC
-
219 void electra(IRElectraAc *ac,
-
220  const bool on, const stdAc::opmode_t mode,
-
221  const float degrees, const stdAc::fanspeed_t fan,
-
222  const stdAc::swingv_t swingv,
-
223  const stdAc::swingh_t swingh, const bool turbo,
-
224  const bool lighttoggle, const bool clean);
-
225 #endif // SEND_ELECTRA_AC
-
226 #if SEND_FUJITSU_AC
-
227  void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model,
-
228  const bool on, const stdAc::opmode_t mode,
-
229  const bool celsius, const float degrees,
-
230  const stdAc::fanspeed_t fan,
-
231  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
232  const bool quiet, const bool turbo, const bool econo,
-
233  const bool filter, const bool clean, const int16_t sleep = -1);
-
234 #endif // SEND_FUJITSU_AC
-
235 #if SEND_GOODWEATHER
-
236  void goodweather(IRGoodweatherAc *ac,
-
237  const bool on, const stdAc::opmode_t mode,
-
238  const float degrees,
-
239  const stdAc::fanspeed_t fan,
-
240  const stdAc::swingv_t swingv,
-
241  const bool turbo, const bool light,
-
242  const int16_t sleep = -1);
-
243 #endif // SEND_GOODWEATHER
-
244 #if SEND_GREE
-
245  void gree(IRGreeAC *ac, const gree_ac_remote_model_t model,
-
246  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
247  const float degrees, const stdAc::fanspeed_t fan,
-
248  const stdAc::swingv_t swingv, const bool turbo, const bool light,
-
249  const bool clean, const int16_t sleep = -1);
-
250 #endif // SEND_GREE
-
251 #if SEND_HAIER_AC
-
252  void haier(IRHaierAC *ac,
-
253  const bool on, const stdAc::opmode_t mode, const float degrees,
-
254  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
255  const bool filter, const int16_t sleep = -1,
-
256  const int16_t clock = -1);
-
257 #endif // SEND_HAIER_AC
-
258 #if SEND_HAIER_AC_YRW02
-
259  void haierYrwo2(IRHaierACYRW02 *ac,
-
260  const bool on, const stdAc::opmode_t mode,
-
261  const float degrees, const stdAc::fanspeed_t fan,
-
262  const stdAc::swingv_t swingv,
-
263  const bool turbo, const bool filter,
-
264  const int16_t sleep = -1);
-
265 #endif // SEND_HAIER_AC_YRW02
-
266 #if SEND_HITACHI_AC
-
267  void hitachi(IRHitachiAc *ac,
-
268  const bool on, const stdAc::opmode_t mode,
-
269  const float degrees, const stdAc::fanspeed_t fan,
-
270  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
-
271 #endif // SEND_HITACHI_AC
-
272 #if SEND_HITACHI_AC1
-
273  void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model,
-
274  const bool on, const bool power_toggle,
-
275  const stdAc::opmode_t mode,
-
276  const float degrees, const stdAc::fanspeed_t fan,
-
277  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
278  const bool swing_toggle, const int16_t sleep = -1);
-
279 #endif // SEND_HITACHI_AC1
-
280 #if SEND_HITACHI_AC344
-
281  void hitachi344(IRHitachiAc344 *ac,
-
282  const bool on, const stdAc::opmode_t mode,
-
283  const float degrees, const stdAc::fanspeed_t fan,
-
284  const stdAc::swingv_t swingv,
-
285  const stdAc::swingh_t swingh);
-
286 #endif // SEND_HITACHI_AC344
-
287 #if SEND_HITACHI_AC424
-
288  void hitachi424(IRHitachiAc424 *ac,
-
289  const bool on, const stdAc::opmode_t mode,
-
290  const float degrees, const stdAc::fanspeed_t fan,
-
291  const stdAc::swingv_t swingv);
-
292 #endif // SEND_HITACHI_AC424
-
293 #if SEND_KELON
-
294  void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
-
295  const int8_t dryGrade, const float degrees,
-
296  const stdAc::fanspeed_t fan, const bool toggleSwing,
-
297  const bool superCool, const int16_t sleep);
-
298 #endif // SEND_KELON
-
299 #if SEND_KELVINATOR
-
300  void kelvinator(IRKelvinatorAC *ac,
-
301  const bool on, const stdAc::opmode_t mode,
-
302  const float degrees, const stdAc::fanspeed_t fan,
-
303  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
304  const bool quiet, const bool turbo, const bool light,
-
305  const bool filter, const bool clean);
-
306 #endif // SEND_KELVINATOR
-
307 #if SEND_LG
-
308  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
-
309  const bool on, const stdAc::opmode_t mode,
-
310  const float degrees, const stdAc::fanspeed_t fan);
-
311 #endif // SEND_LG
-
312 #if SEND_MIDEA
-
313  void midea(IRMideaAC *ac,
-
314  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
315  const float degrees, const stdAc::fanspeed_t fan,
-
316  const stdAc::swingv_t swingv, const bool turbo, const bool econo,
-
317  const bool light, const int16_t sleep = -1);
-
318 #endif // SEND_MIDEA
-
319 #if SEND_MITSUBISHI_AC
-
320  void mitsubishi(IRMitsubishiAC *ac,
-
321  const bool on, const stdAc::opmode_t mode,
-
322  const float degrees,
-
323  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
324  const stdAc::swingh_t swingh,
-
325  const bool quiet, const int16_t clock = -1);
-
326 #endif // SEND_MITSUBISHI_AC
-
327 #if SEND_MITSUBISHI112
- -
329  const bool on, const stdAc::opmode_t mode,
-
330  const float degrees, const stdAc::fanspeed_t fan,
-
331  const stdAc::swingv_t swingv,
-
332  const stdAc::swingh_t swingh,
-
333  const bool quiet);
-
334 #endif // SEND_MITSUBISHI112
-
335 #if SEND_MITSUBISHI136
- -
337  const bool on, const stdAc::opmode_t mode,
-
338  const float degrees, const stdAc::fanspeed_t fan,
-
339  const stdAc::swingv_t swingv, const bool quiet);
-
340 #endif // SEND_MITSUBISHI136
-
341 #if SEND_MITSUBISHIHEAVY
- -
343  const bool on, const stdAc::opmode_t mode,
-
344  const float degrees, const stdAc::fanspeed_t fan,
-
345  const stdAc::swingv_t swingv,
-
346  const stdAc::swingh_t swingh,
-
347  const bool turbo, const bool econo, const bool clean);
- -
349  const bool on, const stdAc::opmode_t mode,
-
350  const float degrees, const stdAc::fanspeed_t fan,
-
351  const stdAc::swingv_t swingv,
-
352  const stdAc::swingh_t swingh,
-
353  const bool quiet, const bool turbo, const bool econo,
-
354  const bool filter, const bool clean,
-
355  const int16_t sleep = -1);
-
356 #endif // SEND_MITSUBISHIHEAVY
-
357 #if SEND_NEOCLIMA
-
358  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
-
359  const bool celsius, const float degrees,
-
360  const stdAc::fanspeed_t fan,
-
361  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
362  const bool turbo, const bool econo, const bool light,
-
363  const bool filter, const int16_t sleep = -1);
-
364 #endif // SEND_NEOCLIMA
-
365 #if SEND_PANASONIC_AC
- -
367  const bool on, const stdAc::opmode_t mode, const float degrees,
-
368  const stdAc::fanspeed_t fan,
-
369  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
370  const bool quiet, const bool turbo, const bool filter,
-
371  const int16_t clock = -1);
-
372 #endif // SEND_PANASONIC_AC
-
373 #if SEND_PANASONIC_AC32
-
374  void panasonic32(IRPanasonicAc32 *ac,
-
375  const bool on, const stdAc::opmode_t mode,
-
376  const float degrees, const stdAc::fanspeed_t fan,
-
377  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
-
378 #endif // SEND_PANASONIC_AC32
-
379 #if SEND_SAMSUNG_AC
-
380  void samsung(IRSamsungAc *ac,
-
381  const bool on, const stdAc::opmode_t mode, const float degrees,
-
382  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
383  const bool quiet, const bool turbo, const bool light,
-
384  const bool filter, const bool clean,
-
385  const bool beep, const bool prevpower = true,
-
386  const bool forcepower = true);
-
387 #endif // SEND_SAMSUNG_AC
-
388 #if SEND_SANYO_AC
-
389  void sanyo(IRSanyoAc *ac,
-
390  const bool on, const stdAc::opmode_t mode, const float degrees,
-
391  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
392  const bool beep, const int16_t sleep = -1);
-
393 #endif // SEND_SANYO_AC
-
394 #if SEND_SHARP_AC
-
395  void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
-
396  const bool on, const bool prev_power, const stdAc::opmode_t mode,
-
397  const float degrees, const stdAc::fanspeed_t fan,
-
398  const stdAc::swingv_t swingv, const bool turbo, const bool light,
-
399  const bool filter, const bool clean);
-
400 #endif // SEND_SHARP_AC
-
401 #if SEND_TCL112AC
-
402  void tcl112(IRTcl112Ac *ac,
-
403  const bool on, const stdAc::opmode_t mode, const float degrees,
-
404  const stdAc::fanspeed_t fan,
-
405  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
406  const bool turbo, const bool light, const bool econo,
-
407  const bool filter);
-
408 #endif // SEND_TCL112AC
-
409 #if SEND_TECHNIBEL_AC
-
410  void technibel(IRTechnibelAc *ac,
-
411  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
412  const float degrees, const stdAc::fanspeed_t fan,
-
413  const stdAc::swingv_t swingv, const int16_t sleep = -1);
-
414 #endif // SEND_TECHNIBEL_AC
-
415 #if SEND_TECO
-
416  void teco(IRTecoAc *ac,
-
417  const bool on, const stdAc::opmode_t mode, const float degrees,
-
418  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
419  const bool light, const int16_t sleep = -1);
-
420 #endif // SEND_TECO
-
421 #if SEND_TOSHIBA_AC
-
422  void toshiba(IRToshibaAC *ac,
-
423  const bool on, const stdAc::opmode_t mode, const float degrees,
-
424  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
425  const bool turbo, const bool econo);
-
426 #endif // SEND_TOSHIBA_AC
-
427 #if SEND_TROTEC
-
428  void trotec(IRTrotecESP *ac,
-
429  const bool on, const stdAc::opmode_t mode, const float degrees,
-
430  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
-
431 #endif // SEND_TROTEC
-
432 #if SEND_TRUMA
-
433  void truma(IRTrumaAc *ac,
-
434  const bool on, const stdAc::opmode_t mode, const float degrees,
-
435  const stdAc::fanspeed_t fan, const bool quiet);
-
436 #endif // SEND_TRUMA
-
437 #if SEND_VESTEL_AC
-
438  void vestel(IRVestelAc *ac,
-
439  const bool on, const stdAc::opmode_t mode, const float degrees,
-
440  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
441  const bool turbo, const bool filter,
-
442  const int16_t sleep = -1, const int16_t clock = -1,
-
443  const bool sendNormal = true);
-
444 #endif // SEND_VESTEL_AC
-
445 #if SEND_VOLTAS
-
446  void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
-
447  const bool on, const stdAc::opmode_t mode,
-
448  const float degrees, const stdAc::fanspeed_t fan,
-
449  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
450  const bool turbo, const bool econo, const bool light,
-
451  const int16_t sleep = -1);
-
452 #endif // SEND_VOLTAS
-
453 #if SEND_WHIRLPOOL_AC
- -
455  const bool on, const stdAc::opmode_t mode, const float degrees,
-
456  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
457  const bool turbo, const bool light,
-
458  const int16_t sleep = -1, const int16_t clock = -1);
-
459 #endif // SEND_WHIRLPOOL_AC
-
460 #if SEND_TRANSCOLD
-
461  void transcold(IRTranscoldAc *ac,
-
462  const bool on, const stdAc::opmode_t mode, const float degrees,
-
463  const stdAc::fanspeed_t fan,
-
464  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
-
465 #endif // SEND_TRANSCOLD
-
466 static stdAc::state_t cleanState(const stdAc::state_t state);
-
467 static stdAc::state_t handleToggles(const stdAc::state_t desired,
-
468  const stdAc::state_t *prev = NULL);
-
469 }; // IRac class
-
470 
-
472 namespace IRAcUtils {
-
473  String resultAcToString(const decode_results * const results);
-
474  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
-
475  const stdAc::state_t *prev = NULL);
-
476 } // namespace IRAcUtils
-
477 #endif // IRAC_H_
-
-
Class for handling detailed Panasonic A/C messages.
Definition: ir_Panasonic.h:102
-
void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Airwell A/C message with the supplied settings.
Definition: IRac.cpp:306
-
Support for Kelvinator A/C protocols.
-
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:132
-
void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi A/C message with the supplied settings.
Definition: IRac.cpp:1123
-
Class for handling detailed Toshiba A/C messages.
Definition: ir_Toshiba.h:121
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:823
-
stdAc::state_t getStatePrev(void)
Get the previous internal A/C climate state that should have already been sent to the device....
Definition: IRac.cpp:136
-
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:131
-
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:184
-
static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2992
-
void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:1808
-
void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi 344-bit A/C message with the supplied settings.
Definition: IRac.cpp:1199
- -
Support for Electra A/C protocols.
-
void ecoclim(IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1, const int16_t clock=-1)
Send an EcoClim A/C message with the supplied settings.
Definition: IRac.cpp:824
-
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:2855
-
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
-
Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
-
void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin2 A/C message with the supplied settings.
Definition: IRac.cpp:701
-
Support for Trotec protocols.
-
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1764
-
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:660
-
void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1336
-
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:73
-
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:107
-
void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Kelvinator A/C message with the supplied settings.
Definition: IRac.cpp:1302
-
Class for handling detailed Daikin 312-bit A/C messages.
Definition: ir_Daikin.h:742
-
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:909
-
Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
-
Class for handling detailed Daikin 128-bit A/C messages.
Definition: ir_Daikin.h:1003
-
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
-
Support for Sharp protocols.
-
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition: IRac.cpp:3142
-
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:170
-
Carrier A/C.
-
void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
Send a Whirlpool A/C message with the supplied settings.
Definition: IRac.cpp:2150
-
Results returned from the decoder.
Definition: IRrecv.h:92
-
void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:770
-
void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Voltas A/C message with the supplied settings.
Definition: IRac.cpp:2109
-
void tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1861
-
void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Transcold A/C message with the supplied settings.
Definition: IRac.cpp:2187
-
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:2861
-
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:2872
-
Support for Midea protocols. Midea added by crankyoldgit & bwze.
-
Support for Daikin A/C protocols.
-
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:134
-
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:1133
-
Support for Coolix A/C protocols.
-
void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
Send a Vestel A/C message with the supplied settings.
Definition: IRac.cpp:2067
-
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:371
-
void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
Send a Daikin A/C message with the supplied settings.
Definition: IRac.cpp:537
-
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:57
-
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:838
-
Class for handling detailed Voltas A/C messages.
Definition: ir_Voltas.h:90
-
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:140
-
void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:1723
-
void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 128-bit A/C message with the supplied settings.
Definition: IRac.cpp:577
-
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:246
-
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition: IRac.h:48
-
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:3211
-
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:106
-
void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Haier A/C message with the supplied settings.
Definition: IRac.cpp:1054
-
Definition: ir_Kelon.h:70
-
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:132
-
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:459
-
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:3113
-
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:100
-
std::string String
Definition: IRremoteESP8266.h:1250
-
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition: ir_Mitsubishi.h:242
-
void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
Send a Trotec A/C message with the supplied settings.
Definition: IRac.cpp:1999
-
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3032
-
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:90
-
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition: ir_Mitsubishi.h:362
-
EcoClim A/C protocol.
-
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:89
-
void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
Send a Daikin 176-bit A/C message with the supplied settings.
Definition: IRac.cpp:669
-
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:99
-
Support for TCL protocols.
-
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:2884
-
void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:1091
-
void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
Send a Daikin 216-bit A/C message with the supplied settings.
Definition: IRac.cpp:740
-
Support for Transcold A/C protocols.
-
Support for Hitachi A/C protocols.
-
Support for Panasonic protocols.
-
static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
Create a new state base on desired & previous states but handle any state changes for options that ne...
Definition: IRac.cpp:2236
-
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:308
-
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:146
- -
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
-
void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
Send a Mitsubishi 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1448
-
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition: IRac.cpp:3604
-
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:303
-
void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Hitachi 424-bit A/C message with the supplied settings.
Definition: IRac.cpp:1233
-
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
-
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:3217
-
void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
Send a Daikin 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:614
-
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
-
Support for Gree A/C protocols.
-
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:84
-
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:151
-
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:121
-
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition: IRac.h:106
-
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:169
-
Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...
-
Class for handling detailed Coolix A/C messages.
Definition: ir_Coolix.h:116
-
void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1373
-
void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1645
-
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3164
-
Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
-
A universal/common/generic interface for controling supported A/Cs.
Definition: IRac.h:52
-
Support for Teco protocols.
-
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:1016
-
Delonghi A/C.
-
void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:866
-
static stdAc::state_t cleanState(const stdAc::state_t state)
Create a new state base on the provided state that has been suitably fixed.
Definition: IRac.cpp:2223
-
Support for Argo Ulisse 13 DCI Mobile Split ACs.
-
void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
Send a Mitsubishi A/C message with the supplied settings.
Definition: IRac.cpp:1411
-
void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Amcor A/C message with the supplied settings.
Definition: IRac.cpp:334
-
Class for handling detailed Technibel A/C messages.
Definition: ir_Technibel.h:77
-
Class for handling detailed EcoClim A/C 56 bit messages.
Definition: ir_Ecoclim.h:84
-
Class for handling detailed Airwell A/C messages.
Definition: ir_Airwell.h:60
-
Support for Voltas A/C protocol.
-
Class for handling detailed Daikin 152-bit A/C messages.
Definition: ir_Daikin.h:1073
-
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:67
-
Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
-
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:246
-
void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:1604
-
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:894
-
static String opmodeToString(const stdAc::opmode_t mode)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:3120
-
Class for handling detailed Sharp A/C messages.
Definition: ir_Sharp.h:137
-
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:1963
-
Support for Goodweather compatible HVAC protocols.
-
void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:366
-
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:176
-
void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
Send a Mitsubishi 136-bit A/C message with the supplied settings.
Definition: IRac.cpp:1484
- -
bool _modulation
Is frequency modulation to be used?
Definition: IRac.h:107
-
void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
Send a Teco A/C message with the supplied settings.
Definition: IRac.cpp:1930
-
static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2890
-
Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B origina...
-
void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
Send a Hitachi1 A/C message with the supplied settings.
Definition: IRac.cpp:1160
-
Class for handling detailed Transcold A/C messages.
Definition: ir_Transcold.h:120
- -
void panasonic32(IRPanasonicAc32 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1681
-
Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
-
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition: IRac.cpp:3095
-
void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:1519
-
static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2951
-
Class for handling detailed Vestel A/C messages.
Definition: ir_Vestel.h:100
-
Class for handling detailed Panasonic 32bit A/C messages.
Definition: ir_Panasonic.h:221
-
Class for handling detailed Trotec A/C messages.
Definition: ir_Trotec.h:91
-
Support for Truma protocol.
-
Class for handling detailed Teco A/C messages.
Definition: ir_Teco.h:62
-
void truma(IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)
Send a Truma A/C message with the supplied settings.
Definition: IRac.cpp:2030
-
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3188
-
Class for handling detailed Truma A/C messages.
Definition: ir_Truma.h:69
-
Support for Technibel protocol.
-
void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
Send a Delonghi A/C message with the supplied settings.
Definition: IRac.cpp:800
-
void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode, const int8_t dryGrade, const float degrees, const stdAc::fanspeed_t fan, const bool toggleSwing, const bool superCool, const int16_t sleep)
Send a Kelon A/C message with the supplied settings.
Definition: IRac.cpp:1268
-
Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KE...
-
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition: IRac.h:108
-
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:316
-
void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Daikin 160-bit A/C message with the supplied settings.
Definition: IRac.cpp:647
-
void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
Send a Corona A/C message with the supplied settings.
Definition: IRac.cpp:502
-
static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
Initialise the given state with the supplied settings.
Definition: IRac.cpp:88
-
void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:1560
- -
Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
-
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:271
-
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:136
-
void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:435
-
static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:2920
-
Support for Toshiba protocols.
-
void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
Send a Goodweather A/C message with the supplied settings.
Definition: IRac.cpp:974
-
Structure to hold a common A/C state.
Definition: IRsend.h:97
-
Class for handling detailed Goodweather A/C messages.
Definition: ir_Goodweather.h:100
-
Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
- -
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:127
-
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:120
-
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:141
-
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:946
-
Amcor A/C protocol.
-
uint16_t _pin
The GPIO to use to transmit messages from.
Definition: IRac.h:105
-
void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Technibel A/C message with the supplied settings.
Definition: IRac.cpp:1897
-
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition: IRsend.h:164
-
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition: IRsend.h:157
-
Support for LG protocols.
-
void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Carrier 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:398
-
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8cpp.html deleted file mode 100644 index 301916911..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8cpp.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRrecv.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRrecv.cpp File Reference
-
-
- - - - -

-Namespaces

 _IRrecv
 
- - - -

-Typedefs

typedef struct hw_timer_s hw_timer_t
 
- - - - - - - -

-Variables

portMUX_TYPE _IRrecv::mux = portMUX_INITIALIZER_UNLOCKED
 
volatile irparams_t _IRrecv::params
 
irparams_t_IRrecv::params_save
 
-

Typedef Documentation

- -

◆ hw_timer_t

- -
-
- - - - -
typedef struct hw_timer_s hw_timer_t
-
- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h.html deleted file mode 100644 index 726b05484..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRrecv.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRrecv.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Classes

struct  irparams_t
 Information for the interrupt handler. More...
 
struct  match_result_t
 Results from a data match. More...
 
class  decode_results
 Results returned from the decoder. More...
 
class  IRrecv
 Class for receiving IR messages. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const uint16_t kHeader = 2
 
const uint16_t kFooter = 2
 
const uint16_t kStartOffset = 1
 
const uint16_t kMarkExcess = 50
 
const uint16_t kRawBuf = 100
 
const uint64_t kRepeat = UINT64_MAX
 
const uint16_t kUnknownThreshold = 6
 
const uint8_t kIdleState = 2
 
const uint8_t kMarkState = 3
 
const uint8_t kSpaceState = 4
 
const uint8_t kStopState = 5
 
const uint8_t kTolerance = 25
 
const uint8_t kUseDefTol = 255
 
const uint16_t kRawTick = 2
 
const uint8_t kTimeoutMs = 15
 
const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1))
 
const uint32_t kFnvPrime32 = 16777619UL
 
const uint32_t kFnvBasis32 = 2166136261UL
 
const uint8_t kDefaultESP32Timer = 3
 
const uint16_t kStateSizeMax = kHitachiAc2StateLength
 
-

Variable Documentation

- -

◆ kDefaultESP32Timer

- -
-
- - - - -
const uint8_t kDefaultESP32Timer = 3
-
- -
-
- -

◆ kFnvBasis32

- -
-
- - - - -
const uint32_t kFnvBasis32 = 2166136261UL
-
- -
-
- -

◆ kFnvPrime32

- -
-
- - - - -
const uint32_t kFnvPrime32 = 16777619UL
-
- -
-
- -

◆ kFooter

- -
-
- - - - -
const uint16_t kFooter = 2
-
- -
-
- -

◆ kHeader

- -
-
- - - - -
const uint16_t kHeader = 2
-
- -
-
- -

◆ kIdleState

- -
-
- - - - -
const uint8_t kIdleState = 2
-
- -
-
- -

◆ kMarkExcess

- -
-
- - - - -
const uint16_t kMarkExcess = 50
-
- -
-
- -

◆ kMarkState

- -
-
- - - - -
const uint8_t kMarkState = 3
-
- -
-
- -

◆ kMaxTimeoutMs

- -
-
- - - - -
const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1))
-
- -
-
- -

◆ kRawBuf

- -
-
- - - - -
const uint16_t kRawBuf = 100
-
- -
-
- -

◆ kRawTick

- -
-
- - - - -
const uint16_t kRawTick = 2
-
- -
-
- -

◆ kRepeat

- -
-
- - - - -
const uint64_t kRepeat = UINT64_MAX
-
- -
-
- -

◆ kSpaceState

- -
-
- - - - -
const uint8_t kSpaceState = 4
-
- -
-
- -

◆ kStartOffset

- -
-
- - - - -
const uint16_t kStartOffset = 1
-
- -
-
- -

◆ kStateSizeMax

- -
-
- - - - -
const uint16_t kStateSizeMax = kHitachiAc2StateLength
-
- -
-
- -

◆ kStopState

- -
-
- - - - -
const uint8_t kStopState = 5
-
- -
-
- -

◆ kTimeoutMs

- -
-
- - - - -
const uint8_t kTimeoutMs = 15
-
- -
-
- -

◆ kTolerance

- -
-
- - - - -
const uint8_t kTolerance = 25
-
- -
-
- -

◆ kUnknownThreshold

- -
-
- - - - -
const uint16_t kUnknownThreshold = 6
-
- -
-
- -

◆ kUseDefTol

- -
-
- - - - -
const uint8_t kUseDefTol = 255
-
- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h_source.html deleted file mode 100644 index 41053ef86..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRrecv_8h_source.html +++ /dev/null @@ -1,1095 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRrecv.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRrecv.h
-
-
-Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
-
2 // Copyright 2015 Mark Szabo
-
3 // Copyright 2015 Sebastien Warin
-
4 // Copyright 2017 David Conran
-
5 
-
6 #ifndef IRRECV_H_
-
7 #define IRRECV_H_
-
8 
-
9 #ifndef UNIT_TEST
-
10 #include <Arduino.h>
-
11 #endif
-
12 #include <stddef.h>
-
13 #define __STDC_LIMIT_MACROS
-
14 #include <stdint.h>
-
15 #include "IRremoteESP8266.h"
-
16 
-
17 // Constants
-
18 const uint16_t kHeader = 2; // Usual nr. of header entries.
-
19 const uint16_t kFooter = 2; // Usual nr. of footer (stop bits) entries.
-
20 const uint16_t kStartOffset = 1; // Usual rawbuf entry to start from.
-
21 #define MS_TO_USEC(x) (x * 1000U) // Convert milli-Seconds to micro-Seconds.
-
22 // Marks tend to be 100us too long, and spaces 100us too short
-
23 // when received due to sensor lag.
-
24 const uint16_t kMarkExcess = 50;
-
25 const uint16_t kRawBuf = 100; // Default length of raw capture buffer
-
26 const uint64_t kRepeat = UINT64_MAX;
-
27 // Default min size of reported UNKNOWN messages.
-
28 const uint16_t kUnknownThreshold = 6;
-
29 
-
30 // receiver states
-
31 const uint8_t kIdleState = 2;
-
32 const uint8_t kMarkState = 3;
-
33 const uint8_t kSpaceState = 4;
-
34 const uint8_t kStopState = 5;
-
35 const uint8_t kTolerance = 25; // default percent tolerance in measurements.
-
36 const uint8_t kUseDefTol = 255; // Indicate to use the class default tolerance.
-
37 const uint16_t kRawTick = 2; // Capture tick to uSec factor.
-
38 #define RAWTICK kRawTick // Deprecated. For legacy user code support only.
-
39 // How long (ms) before we give up wait for more data?
-
40 // Don't exceed kMaxTimeoutMs without a good reason.
-
41 // That is the capture buffers maximum value size. (UINT16_MAX / kRawTick)
-
42 // Typically messages/protocols tend to repeat around the 100ms timeframe,
-
43 // thus we should timeout before that to give us some time to try to decode
-
44 // before we need to start capturing a possible new message.
-
45 // Typically 15ms suits most applications. However, some protocols demand a
-
46 // higher value. e.g. 90ms for XMP-1 and some aircon units.
-
47 const uint8_t kTimeoutMs = 15; // In MilliSeconds.
-
48 #define TIMEOUT_MS kTimeoutMs // For legacy documentation.
-
49 const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1));
-
50 
-
51 // Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param
-
52 const uint32_t kFnvPrime32 = 16777619UL;
-
53 const uint32_t kFnvBasis32 = 2166136261UL;
-
54 
-
55 // Which of the ESP32 timers to use by default. (0-3)
-
56 const uint8_t kDefaultESP32Timer = 3;
-
57 
-
58 #if DECODE_AC
-
59 // Hitachi AC is the current largest state size.
- -
61 #else
-
62 // Just define something
-
63 const uint16_t kStateSizeMax = 0;
-
64 #endif
-
65 
-
66 // Types
-
67 
-
69 typedef struct {
-
70  uint8_t recvpin; // pin for IR data from detector
-
71  uint8_t rcvstate; // state machine
-
72  uint16_t timer; // state timer, counts 50uS ticks.
-
73  uint16_t bufsize; // max. nr. of entries in the capture buffer.
-
74  uint16_t *rawbuf; // raw data
-
75  // uint16_t is used for rawlen as it saves 3 bytes of iram in the interrupt
-
76  // handler. Don't ask why, I don't know. It just does.
-
77  uint16_t rawlen; // counter of entries in rawbuf.
-
78  uint8_t overflow; // Buffer overflow indicator.
-
79  uint8_t timeout; // Nr. of milliSeconds before we give up.
-
80 } irparams_t;
-
81 
-
83 typedef struct {
-
84  bool success; // Was the match successful?
-
85  uint64_t data; // The data found.
-
86  uint16_t used; // How many buffer positions were used.
- -
88 
-
89 // Classes
-
90 
- -
93  public:
-
94  decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN
-
95  // value, address, & command are all mutually exclusive with state.
-
96  // i.e. They MUST NOT be used at the same time as state, so we can use a union
-
97  // structure to save us a handful of valuable bytes of memory.
-
98  union {
-
99  struct {
-
100  uint64_t value; // Decoded value
-
101  uint32_t address; // Decoded device address.
-
102  uint32_t command; // Decoded command.
-
103  };
-
104  uint8_t state[kStateSizeMax]; // Multi-byte results.
-
105  };
-
106  uint16_t bits; // Number of bits in decoded value
-
107  volatile uint16_t *rawbuf; // Raw intervals in .5 us ticks
-
108  uint16_t rawlen; // Number of records in rawbuf.
-
109  bool overflow;
-
110  bool repeat; // Is the result a repeat code?
-
111 };
-
112 
-
114 class IRrecv {
-
115  public:
-
116 #if defined(ESP32)
-
117  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
-
118  const uint8_t timeout = kTimeoutMs,
-
119  const bool save_buffer = false,
-
120  const uint8_t timer_num = kDefaultESP32Timer); // Constructor
-
121 #else // ESP32
-
122  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
-
123  const uint8_t timeout = kTimeoutMs,
-
124  const bool save_buffer = false); // Constructor
-
125 #endif // ESP32
-
126  ~IRrecv(void); // Destructor
-
127  void setTolerance(const uint8_t percent = kTolerance);
-
128  uint8_t getTolerance(void);
-
129  bool decode(decode_results *results, irparams_t *save = NULL,
-
130  uint8_t max_skip = 0, uint16_t noise_floor = 0);
-
131  void enableIRIn(const bool pullup = false);
-
132  void disableIRIn(void);
-
133  void resume(void);
-
134  uint16_t getBufSize(void);
-
135 #if DECODE_HASH
-
136  void setUnknownThreshold(const uint16_t length);
-
137 #endif
-
138  bool match(const uint32_t measured, const uint32_t desired,
-
139  const uint8_t tolerance = kUseDefTol,
-
140  const uint16_t delta = 0);
-
141  bool matchMark(const uint32_t measured, const uint32_t desired,
-
142  const uint8_t tolerance = kUseDefTol,
-
143  const int16_t excess = kMarkExcess);
-
144  bool matchMarkRange(const uint32_t measured, const uint32_t desired,
-
145  const uint16_t range = 100,
-
146  const int16_t excess = kMarkExcess);
-
147  bool matchSpace(const uint32_t measured, const uint32_t desired,
-
148  const uint8_t tolerance = kUseDefTol,
-
149  const int16_t excess = kMarkExcess);
-
150  bool matchSpaceRange(const uint32_t measured, const uint32_t desired,
-
151  const uint16_t range = 100,
-
152  const int16_t excess = kMarkExcess);
-
153 #ifndef UNIT_TEST
-
154 
-
155  private:
-
156 #endif
- -
158  uint8_t _tolerance;
-
159 #if defined(ESP32)
-
160  uint8_t _timer_num;
-
161 #endif // defined(ESP32)
-
162 #if DECODE_HASH
- -
164 #endif
-
165 #ifdef UNIT_TEST
-
166  volatile irparams_t *_getParamsPtr(void);
-
167 #endif // UNIT_TEST
-
168  // These are called by decode
-
169  uint8_t _validTolerance(const uint8_t percentage);
-
170  void copyIrParams(volatile irparams_t *src, irparams_t *dst);
-
171  uint16_t compare(const uint16_t oldval, const uint16_t newval);
-
172  uint32_t ticksLow(const uint32_t usecs,
-
173  const uint8_t tolerance = kUseDefTol,
-
174  const uint16_t delta = 0);
-
175  uint32_t ticksHigh(const uint32_t usecs,
-
176  const uint8_t tolerance = kUseDefTol,
-
177  const uint16_t delta = 0);
-
178  bool matchAtLeast(const uint32_t measured, const uint32_t desired,
-
179  const uint8_t tolerance = kUseDefTol,
-
180  const uint16_t delta = 0);
-
181  uint16_t _matchGeneric(volatile uint16_t *data_ptr,
-
182  uint64_t *result_bits_ptr,
-
183  uint8_t *result_ptr,
-
184  const bool use_bits,
-
185  const uint16_t remaining,
-
186  const uint16_t required,
-
187  const uint16_t hdrmark,
-
188  const uint32_t hdrspace,
-
189  const uint16_t onemark,
-
190  const uint32_t onespace,
-
191  const uint16_t zeromark,
-
192  const uint32_t zerospace,
-
193  const uint16_t footermark,
-
194  const uint32_t footerspace,
-
195  const bool atleast = false,
-
196  const uint8_t tolerance = kUseDefTol,
-
197  const int16_t excess = kMarkExcess,
-
198  const bool MSBfirst = true);
-
199  match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits,
-
200  const uint16_t onemark, const uint32_t onespace,
-
201  const uint16_t zeromark, const uint32_t zerospace,
-
202  const uint8_t tolerance = kUseDefTol,
-
203  const int16_t excess = kMarkExcess,
-
204  const bool MSBfirst = true,
-
205  const bool expectlastspace = true);
-
206  uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr,
-
207  const uint16_t remaining, const uint16_t nbytes,
-
208  const uint16_t onemark, const uint32_t onespace,
-
209  const uint16_t zeromark, const uint32_t zerospace,
-
210  const uint8_t tolerance = kUseDefTol,
-
211  const int16_t excess = kMarkExcess,
-
212  const bool MSBfirst = true,
-
213  const bool expectlastspace = true);
-
214  uint16_t matchGeneric(volatile uint16_t *data_ptr,
-
215  uint64_t *result_ptr,
-
216  const uint16_t remaining, const uint16_t nbits,
-
217  const uint16_t hdrmark, const uint32_t hdrspace,
-
218  const uint16_t onemark, const uint32_t onespace,
-
219  const uint16_t zeromark, const uint32_t zerospace,
-
220  const uint16_t footermark, const uint32_t footerspace,
-
221  const bool atleast = false,
-
222  const uint8_t tolerance = kUseDefTol,
-
223  const int16_t excess = kMarkExcess,
-
224  const bool MSBfirst = true);
-
225  uint16_t matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr,
-
226  const uint16_t remaining, const uint16_t nbits,
-
227  const uint16_t hdrmark, const uint32_t hdrspace,
-
228  const uint16_t onemark, const uint32_t onespace,
-
229  const uint16_t zeromark, const uint32_t zerospace,
-
230  const uint16_t footermark,
-
231  const uint32_t footerspace,
-
232  const bool atleast = false,
-
233  const uint8_t tolerance = kUseDefTol,
-
234  const int16_t excess = kMarkExcess,
-
235  const bool MSBfirst = true);
-
236  uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr,
-
237  uint64_t *result_ptr,
-
238  const uint16_t remaining,
-
239  const uint16_t nbits,
-
240  const uint16_t hdrmark,
-
241  const uint32_t hdrspace,
-
242  const uint16_t one,
-
243  const uint32_t zero,
-
244  const uint16_t footermark,
-
245  const uint32_t footerspace,
-
246  const bool atleast = false,
-
247  const uint8_t tolerance = kUseDefTol,
-
248  const int16_t excess = kMarkExcess,
-
249  const bool MSBfirst = true);
-
250  uint16_t matchManchesterData(volatile const uint16_t *data_ptr,
-
251  uint64_t *result_ptr,
-
252  const uint16_t remaining,
-
253  const uint16_t nbits,
-
254  const uint16_t half_period,
-
255  const uint16_t starting_balance = 0,
-
256  const uint8_t tolerance = kUseDefTol,
-
257  const int16_t excess = kMarkExcess,
-
258  const bool MSBfirst = true,
-
259  const bool GEThomas = true);
-
260  uint16_t matchManchester(volatile const uint16_t *data_ptr,
-
261  uint64_t *result_ptr,
-
262  const uint16_t remaining,
-
263  const uint16_t nbits,
-
264  const uint16_t hdrmark,
-
265  const uint32_t hdrspace,
-
266  const uint16_t clock_period,
-
267  const uint16_t footermark,
-
268  const uint32_t footerspace,
-
269  const bool atleast = false,
-
270  const uint8_t tolerance = kUseDefTol,
-
271  const int16_t excess = kMarkExcess,
-
272  const bool MSBfirst = true,
-
273  const bool GEThomas = true);
-
274  void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0);
-
275  bool decodeHash(decode_results *results);
-
276 #if DECODE_VOLTAS
-
277  bool decodeVoltas(decode_results *results,
-
278  uint16_t offset = kStartOffset,
-
279  const uint16_t nbits = kVoltasBits,
-
280  const bool strict = true);
-
281 #endif // DECODE_VOLTAS
-
282 #if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)
-
283  bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset,
-
284  const uint16_t nbits = kNECBits, const bool strict = true);
-
285 #endif
-
286 #if DECODE_ARGO
-
287  bool decodeArgo(decode_results *results, uint16_t offset = kStartOffset,
-
288  const uint16_t nbits = kArgoBits, const bool strict = true);
-
289 #endif // DECODE_ARGO
-
290 #if DECODE_SONY
-
291  bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
-
292  const uint16_t nbits = kSonyMinBits,
-
293  const bool strict = false);
-
294 #endif
-
295 #if DECODE_SANYO
-
296  // DISABLED due to poor quality.
-
297  // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
-
298  // uint16_t nbits = kSanyoSA8650BBits,
-
299  // bool strict = false);
-
300  bool decodeSanyoLC7461(decode_results *results,
-
301  uint16_t offset = kStartOffset,
-
302  const uint16_t nbits = kSanyoLC7461Bits,
-
303  const bool strict = true);
-
304 #endif
-
305 #if DECODE_SANYO_AC
-
306  bool decodeSanyoAc(decode_results *results,
-
307  uint16_t offset = kStartOffset,
-
308  const uint16_t nbits = kSanyoAcBits,
-
309  const bool strict = true);
-
310 #endif // DECODE_SANYO_AC
-
311 #if DECODE_MITSUBISHI
-
312  bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
-
313  const uint16_t nbits = kMitsubishiBits,
-
314  const bool strict = true);
-
315 #endif
-
316 #if DECODE_MITSUBISHI2
-
317  bool decodeMitsubishi2(decode_results *results,
-
318  uint16_t offset = kStartOffset,
-
319  const uint16_t nbits = kMitsubishiBits,
-
320  const bool strict = true);
-
321 #endif
-
322 #if DECODE_MITSUBISHI_AC
-
323  bool decodeMitsubishiAC(decode_results *results,
-
324  uint16_t offset = kStartOffset,
-
325  const uint16_t nbits = kMitsubishiACBits,
-
326  const bool strict = false);
-
327 #endif
-
328 #if DECODE_MITSUBISHI136
-
329  bool decodeMitsubishi136(decode_results *results,
-
330  uint16_t offset = kStartOffset,
-
331  const uint16_t nbits = kMitsubishi136Bits,
-
332  const bool strict = true);
-
333 #endif
-
334 #if DECODE_MITSUBISHI112
-
335  bool decodeMitsubishi112(decode_results *results,
-
336  uint16_t offset = kStartOffset,
-
337  const uint16_t nbits = kMitsubishi112Bits,
-
338  const bool strict = true);
-
339 #endif
-
340 #if DECODE_MITSUBISHIHEAVY
- -
342  uint16_t offset = kStartOffset,
-
343  const uint16_t nbits = kMitsubishiHeavy152Bits,
-
344  const bool strict = true);
-
345 #endif
-
346 #if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG || DECODE_MWM)
-
347  int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
-
348  uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
-
349  const int16_t excess = kMarkExcess,
-
350  const uint16_t delta = 0, const uint8_t maxwidth = 3);
-
351 #endif
-
352 #if DECODE_RC5
-
353  bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
-
354  const uint16_t nbits = kRC5XBits,
-
355  const bool strict = true);
-
356 #endif
-
357 #if DECODE_RC6
-
358  bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
-
359  const uint16_t nbits = kRC6Mode0Bits,
-
360  const bool strict = false);
-
361 #endif
-
362 #if DECODE_RCMM
-
363  bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
-
364  const uint16_t nbits = kRCMMBits,
-
365  const bool strict = false);
-
366 #endif
-
367 #if (DECODE_PANASONIC || DECODE_DENON)
-
368  bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
-
369  const uint16_t nbits = kPanasonicBits,
-
370  const bool strict = false,
-
371  const uint32_t manufacturer = kPanasonicManufacturer);
-
372 #endif
-
373 #if DECODE_LG
-
374  bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
-
375  const uint16_t nbits = kLgBits,
-
376  const bool strict = false);
-
377 #endif
-
378 #if DECODE_INAX
-
379  bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
-
380  const uint16_t nbits = kInaxBits,
-
381  const bool strict = true);
-
382 #endif // DECODE_INAX
-
383 #if DECODE_JVC
-
384  bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
-
385  const uint16_t nbits = kJvcBits,
-
386  const bool strict = true);
-
387 #endif
-
388 #if DECODE_SAMSUNG
-
389  bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
-
390  const uint16_t nbits = kSamsungBits,
-
391  const bool strict = true);
-
392 #endif
-
393 #if DECODE_SAMSUNG
-
394  bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
-
395  const uint16_t nbits = kSamsung36Bits,
-
396  const bool strict = true);
-
397 #endif
-
398 #if DECODE_SAMSUNG_AC
-
399  bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
-
400  const uint16_t nbits = kSamsungAcBits,
-
401  const bool strict = true);
-
402 #endif
-
403 #if DECODE_WHYNTER
-
404  bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
-
405  const uint16_t nbits = kWhynterBits,
-
406  const bool strict = true);
-
407 #endif
-
408 #if DECODE_COOLIX
-
409  bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
-
410  const uint16_t nbits = kCoolixBits,
-
411  const bool strict = true);
-
412 #endif
-
413 #if DECODE_DENON
-
414  bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
-
415  const uint16_t nbits = kDenonBits,
-
416  const bool strict = true);
-
417 #endif
-
418 #if DECODE_DISH
-
419  bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
-
420  const uint16_t nbits = kDishBits,
-
421  const bool strict = true);
-
422 #endif
-
423 #if (DECODE_SHARP || DECODE_DENON)
-
424  bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
-
425  const uint16_t nbits = kSharpBits,
-
426  const bool strict = true, const bool expansion = true);
-
427 #endif
-
428 #if DECODE_SHARP_AC
-
429  bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
-
430  const uint16_t nbits = kSharpAcBits,
-
431  const bool strict = true);
-
432 #endif
-
433 #if DECODE_AIWA_RC_T501
-
434  bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
-
435  const uint16_t nbits = kAiwaRcT501Bits,
-
436  const bool strict = true);
-
437 #endif
-
438 #if DECODE_NIKAI
-
439  bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
-
440  const uint16_t nbits = kNikaiBits,
-
441  const bool strict = true);
-
442 #endif
-
443 #if DECODE_MAGIQUEST
-
444  bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
-
445  const uint16_t nbits = kMagiquestBits,
-
446  const bool strict = true);
-
447 #endif
-
448 #if DECODE_KELVINATOR
-
449  bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
-
450  const uint16_t nbits = kKelvinatorBits,
-
451  const bool strict = true);
-
452 #endif
-
453 #if DECODE_DAIKIN
-
454  bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
-
455  const uint16_t nbits = kDaikinBits,
-
456  const bool strict = true);
-
457 #endif
-
458 #if DECODE_DAIKIN64
-
459  bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
-
460  const uint16_t nbits = kDaikin64Bits,
-
461  const bool strict = true);
-
462 #endif // DECODE_DAIKIN64
-
463 #if DECODE_DAIKIN128
-
464  bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
-
465  const uint16_t nbits = kDaikin128Bits,
-
466  const bool strict = true);
-
467 #endif // DECODE_DAIKIN128
-
468 #if DECODE_DAIKIN152
-
469  bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
-
470  const uint16_t nbits = kDaikin152Bits,
-
471  const bool strict = true);
-
472 #endif // DECODE_DAIKIN152
-
473 #if DECODE_DAIKIN160
-
474  bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
-
475  const uint16_t nbits = kDaikin160Bits,
-
476  const bool strict = true);
-
477 #endif // DECODE_DAIKIN160
-
478 #if DECODE_DAIKIN176
-
479  bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
-
480  const uint16_t nbits = kDaikin176Bits,
-
481  const bool strict = true);
-
482 #endif // DECODE_DAIKIN176
-
483 #if DECODE_DAIKIN2
-
484  bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
-
485  const uint16_t nbits = kDaikin2Bits,
-
486  const bool strict = true);
-
487 #endif
-
488 #if DECODE_DAIKIN216
-
489  bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
-
490  const uint16_t nbits = kDaikin216Bits,
-
491  const bool strict = true);
-
492 #endif
-
493 #if DECODE_TOSHIBA_AC
-
494  bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
-
495  const uint16_t nbits = kToshibaACBits,
-
496  const bool strict = true);
-
497 #endif
-
498 #if DECODE_TROTEC
-
499  bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
-
500  const uint16_t nbits = kTrotecBits,
-
501  const bool strict = true);
-
502 #endif // DECODE_TROTEC
-
503 #if DECODE_MIDEA
-
504  bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
-
505  const uint16_t nbits = kMideaBits,
-
506  const bool strict = true);
-
507 #endif // DECODE_MIDEA
-
508 #if DECODE_MIDEA24
-
509  bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
-
510  const uint16_t nbits = kMidea24Bits,
-
511  const bool strict = true);
-
512 #endif // DECODE_MIDEA24
-
513 #if DECODE_FUJITSU_AC
-
514  bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
-
515  const uint16_t nbits = kFujitsuAcBits,
-
516  const bool strict = false);
-
517 #endif
-
518 #if DECODE_LASERTAG
-
519  bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
-
520  const uint16_t nbits = kLasertagBits,
-
521  const bool strict = true);
-
522 #endif
-
523 #if DECODE_MILESTAG2
-
524  bool decodeMilestag2(decode_results *results, uint16_t offset = kStartOffset,
-
525  const uint16_t nbits = kMilesTag2ShotBits,
-
526  const bool strict = true);
-
527 #endif
-
528 #if DECODE_CARRIER_AC
-
529  bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
-
530  const uint16_t nbits = kCarrierAcBits,
-
531  const bool strict = true);
-
532 #endif // DECODE_CARRIER_AC
-
533 #if DECODE_CARRIER_AC40
-
534  bool decodeCarrierAC40(decode_results *results,
-
535  uint16_t offset = kStartOffset,
-
536  const uint16_t nbits = kCarrierAc40Bits,
-
537  const bool strict = true);
-
538 #endif // DECODE_CARRIER_AC40
-
539 #if DECODE_CARRIER_AC64
-
540  bool decodeCarrierAC64(decode_results *results,
-
541  uint16_t offset = kStartOffset,
-
542  const uint16_t nbits = kCarrierAc64Bits,
-
543  const bool strict = true);
-
544 #endif // DECODE_CARRIER_AC64
-
545 #if DECODE_GOODWEATHER
-
546  bool decodeGoodweather(decode_results *results,
-
547  uint16_t offset = kStartOffset,
-
548  const uint16_t nbits = kGoodweatherBits,
-
549  const bool strict = true);
-
550 #endif // DECODE_GOODWEATHER
-
551 #if DECODE_GREE
-
552  bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
-
553  const uint16_t nbits = kGreeBits,
-
554  const bool strict = true);
-
555 #endif
-
556 #if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02)
-
557  bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
-
558  const uint16_t nbits = kHaierACBits,
-
559  const bool strict = true);
-
560 #endif
-
561 #if DECODE_HAIER_AC_YRW02
-
562  bool decodeHaierACYRW02(decode_results *results,
-
563  uint16_t offset = kStartOffset,
-
564  const uint16_t nbits = kHaierACYRW02Bits,
-
565  const bool strict = true);
-
566 #endif
-
567 #if DECODE_HAIER_AC176
-
568  bool decodeHaierAC176(decode_results *results,
-
569  uint16_t offset = kStartOffset,
-
570  const uint16_t nbits = kHaierAC176Bits,
-
571  const bool strict = true);
-
572 #endif // DECODE_HAIER_AC176
-
573 #if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC344)
-
574  bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
-
575  const uint16_t nbits = kHitachiAcBits,
-
576  const bool strict = true, const bool MSBfirst = true);
-
577 #endif
-
578 #if DECODE_HITACHI_AC1
-
579  bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
-
580  const uint16_t nbits = kHitachiAc1Bits,
-
581  const bool strict = true);
-
582 #endif
-
583 #if DECODE_HITACHI_AC3
-
584  bool decodeHitachiAc3(decode_results *results,
-
585  uint16_t offset = kStartOffset,
-
586  const uint16_t nbits = kHitachiAc3Bits,
-
587  const bool strict = true);
-
588 #endif // DECODE_HITACHI_AC3
-
589 #if DECODE_HITACHI_AC424
-
590  bool decodeHitachiAc424(decode_results *results,
-
591  uint16_t offset = kStartOffset,
-
592  const uint16_t nbits = kHitachiAc424Bits,
-
593  const bool strict = true);
-
594 #endif // DECODE_HITACHI_AC424
-
595 #if DECODE_GICABLE
-
596  bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
-
597  const uint16_t nbits = kGicableBits,
-
598  const bool strict = true);
-
599 #endif
-
600 #if DECODE_WHIRLPOOL_AC
-
601  bool decodeWhirlpoolAC(decode_results *results,
-
602  uint16_t offset = kStartOffset,
-
603  const uint16_t nbits = kWhirlpoolAcBits,
-
604  const bool strict = true);
-
605 #endif
-
606 #if DECODE_LUTRON
-
607  bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
-
608  const uint16_t nbits = kLutronBits,
-
609  const bool strict = true);
-
610 #endif
-
611 #if DECODE_ELECTRA_AC
-
612  bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
-
613  const uint16_t nbits = kElectraAcBits,
-
614  const bool strict = true);
-
615 #endif
-
616 #if DECODE_PANASONIC_AC
-
617  bool decodePanasonicAC(decode_results *results,
-
618  uint16_t offset = kStartOffset,
-
619  const uint16_t nbits = kPanasonicAcBits,
-
620  const bool strict = true);
-
621 #endif // DECODE_PANASONIC_AC
-
622 #if DECODE_PANASONIC_AC32
-
623  bool decodePanasonicAC32(decode_results *results,
-
624  uint16_t offset = kStartOffset,
-
625  const uint16_t nbits = kPanasonicAc32Bits,
-
626  const bool strict = true);
-
627 #endif // DECODE_PANASONIC_AC32
-
628 #if DECODE_PIONEER
-
629  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
-
630  const uint16_t nbits = kPioneerBits,
-
631  const bool strict = true);
-
632 #endif
-
633 #if DECODE_MWM
-
634  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
-
635  const uint16_t nbits = 24,
-
636  const bool strict = true);
-
637 #endif
-
638 #if DECODE_VESTEL_AC
-
639  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
-
640  const uint16_t nbits = kVestelAcBits,
-
641  const bool strict = true);
-
642 #endif
-
643 #if DECODE_TECO
-
644  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
-
645  const uint16_t nbits = kTecoBits,
-
646  const bool strict = false);
-
647 #endif
-
648 #if DECODE_LEGOPF
-
649  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
-
650  const uint16_t nbits = kLegoPfBits,
-
651  const bool strict = true);
-
652 #endif
-
653 #if DECODE_NEOCLIMA
-
654  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
-
655  const uint16_t nbits = kNeoclimaBits,
-
656  const bool strict = true);
-
657 #endif // DECODE_NEOCLIMA
-
658 #if DECODE_AMCOR
-
659  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
-
660  const uint16_t nbits = kAmcorBits,
-
661  const bool strict = true);
-
662 #endif // DECODE_AMCOR
-
663 #if DECODE_EPSON
-
664  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
-
665  const uint16_t nbits = kEpsonBits,
-
666  const bool strict = true);
-
667 #endif // DECODE_EPSON
-
668 #if DECODE_SYMPHONY
-
669  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
-
670  const uint16_t nbits = kSymphonyBits,
-
671  const bool strict = true);
-
672 #endif // DECODE_SYMPHONY
-
673 #if DECODE_AIRWELL
-
674  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
-
675  const uint16_t nbits = kAirwellBits,
-
676  const bool strict = true);
-
677 #endif // DECODE_AIRWELL
-
678 #if DECODE_DELONGHI_AC
-
679  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
-
680  const uint16_t nbits = kDelonghiAcBits,
-
681  const bool strict = true);
-
682 #endif // DECODE_DELONGHI_AC
-
683 #if DECODE_DOSHISHA
-
684  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
-
685  const uint16_t nbits = kDoshishaBits,
-
686  const bool strict = true);
-
687 #endif // DECODE_DOSHISHA
-
688 #if DECODE_MULTIBRACKETS
-
689  bool decodeMultibrackets(decode_results *results,
-
690  uint16_t offset = kStartOffset,
-
691  const uint16_t nbits = kMultibracketsBits,
-
692  const bool strict = true);
-
693 #endif // DECODE_MULTIBRACKETS
-
694 #if DECODE_TECHNIBEL_AC
-
695  bool decodeTechnibelAc(decode_results *results,
-
696  uint16_t offset = kStartOffset,
-
697  const uint16_t nbits = kTechnibelAcBits,
-
698  const bool strict = true);
-
699 #endif // DECODE_TECHNIBEL_AC
-
700 #if DECODE_CORONA_AC
-
701  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
-
702  const uint16_t nbits = kCoronaAcBitsShort,
-
703  const bool strict = true);
-
704 #endif // DECODE_CORONA_AC
-
705 #if DECODE_ZEPEAL
-
706  bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
-
707  const uint16_t nbits = kZepealBits,
-
708  const bool strict = true);
-
709 #endif // DECODE_ZEPEAL
-
710 #if DECODE_METZ
-
711  bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
-
712  const uint16_t nbits = kMetzBits,
-
713  const bool strict = true);
-
714 #endif // DECODE_METZ
-
715 #if DECODE_TRANSCOLD
-
716  bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
-
717  const uint16_t nbits = kTranscoldBits,
-
718  const bool strict = true);
-
719 #endif // DECODE_TRANSCOLD
-
720 #if DECODE_MIRAGE
-
721  bool decodeMirage(decode_results *results,
-
722  uint16_t offset = kStartOffset,
-
723  const uint16_t nbits = kMirageBits,
-
724  const bool strict = true);
-
725 #endif // DECODE_MIRAGE
-
726 #if DECODE_ELITESCREENS
-
727  bool decodeElitescreens(decode_results *results,
-
728  uint16_t offset = kStartOffset,
-
729  const uint16_t nbits = kEliteScreensBits,
-
730  const bool strict = true);
-
731 #endif // DECODE_ELITESCREENS
-
732 #if DECODE_ECOCLIM
-
733  bool decodeEcoclim(decode_results *results, uint16_t offset = kStartOffset,
-
734  const uint16_t nbits = kEcoclimBits,
-
735  const bool strict = true);
-
736 #endif // DECODE_ECOCLIM
-
737 #if DECODE_XMP
-
738  bool decodeXmp(decode_results *results, uint16_t offset = kStartOffset,
-
739  const uint16_t nbits = kXmpBits, const bool strict = true);
-
740 #endif // DECODE_XMP
-
741 #if DECODE_TRUMA
-
742  bool decodeTruma(decode_results *results, uint16_t offset = kStartOffset,
-
743  const uint16_t nbits = kTrumaBits, const bool strict = true);
-
744 #endif // DECODE_TRUMA
-
745 #if DECODE_TEKNOPOINT
-
746  bool decodeTeknopoint(decode_results *results, uint16_t offset = kStartOffset,
-
747  const uint16_t nbits = kTeknopointBits,
-
748  const bool strict = true);
-
749 #endif // DECODE_TEKNOPOINT
-
750 #if DECODE_KELON
-
751  bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset,
-
752  const uint16_t nbits = kKelonBits, const bool strict = true);
-
753 #endif // DECODE_KELON
-
754 };
-
755 
-
756 #endif // IRRECV_H_
-
-
bool decodeMultibrackets(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)
Decode the Multibrackets message. Status: BETA / Appears to be working.
Definition: ir_Multibrackets.cpp:59
-
uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)
Match & decode the typical data section of an IR message. The bytes are stored at result_ptr....
Definition: IRrecv.cpp:1350
-
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:985
-
bool decodeMitsubishi(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:126
-
const uint16_t kMirageBits
Definition: IRremoteESP8266.h:1063
-
bool decodeHaierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)
Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:987
-
bool decodeNEC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)
Decode the supplied NEC (Renesas) message. Status: STABLE / Known good.
Definition: ir_NEC.cpp:81
-
const uint32_t kFnvPrime32
Definition: IRrecv.h:52
-
bool overflow
Definition: IRrecv.h:109
-
bool decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)
Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:3001
-
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1009
-
uint16_t matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr.
Definition: IRrecv.cpp:1504
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:823
-
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:950
-
bool decodeTranscold(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTranscoldBits, const bool strict=true)
Decode the supplied Transcold A/C message. Status: STABLE / Known Working.
Definition: ir_Transcold.cpp:447
-
int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used, uint16_t bitTime, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const uint16_t delta=0, const uint8_t maxwidth=3)
Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is b...
Definition: ir_RC5_RC6.cpp:243
-
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1084
-
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:1125
-
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1159
-
bool decodeSanyoAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAcBits, const bool strict=true)
Decode the supplied SanyoAc message. Status: STABLE / Reported as working.
Definition: ir_Sanyo.cpp:273
-
uint8_t overflow
Definition: IRrecv.h:78
-
bool decodeMitsubishi2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:191
-
bool decodeGree(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)
Decode the supplied Gree HVAC message. Status: STABLE / Working.
Definition: ir_Gree.cpp:660
-
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:937
-
irparams_t * irparams_save
Definition: IRrecv.h:157
-
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:1070
-
bool decodeFujitsuAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)
Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working.
Definition: ir_Fujitsu.cpp:946
-
bool matchMarkRange(const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)
Check if we match a mark signal(measured) with the desired within a range (in uSeconds) either side o...
Definition: IRrecv.cpp:1173
-
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:987
-
bool decodeTrotec(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)
Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices.
Definition: ir_Trotec.cpp:307
-
bool decodeNeoclima(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)
Decode the supplied Neoclima message. Status: STABLE / Known working.
Definition: ir_Neoclima.cpp:571
-
const uint16_t kVoltasBits
Definition: IRremoteESP8266.h:1164
-
bool decodeMitsubishi112(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)
Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Re...
Definition: ir_Mitsubishi.cpp:1243
-
bool decodeSamsungAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)
Decode the supplied Samsung A/C message. Status: Stable / Known to be working.
Definition: ir_Samsung.cpp:772
-
bool decodeAirwell(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)
Decode the supplied Airwell "Manchester code" message.
Definition: ir_Airwell.cpp:53
-
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:1103
-
bool decodeMagiQuest(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)
Decode the supplied MagiQuest message. Status: Beta / Should work.
Definition: ir_Magiquest.cpp:69
-
uint16_t rawlen
Definition: IRrecv.h:77
-
const uint8_t kUseDefTol
Definition: IRrecv.h:36
-
bool decodeDelonghiAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDelonghiAcBits, const bool strict=true)
Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working.
Definition: ir_Delonghi.cpp:58
-
Class for receiving IR messages.
Definition: IRrecv.h:114
-
uint16_t bufsize
Definition: IRrecv.h:73
-
Results returned from the decoder.
Definition: IRrecv.h:92
-
uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_...
Definition: IRrecv.cpp:1598
-
bool decodeCarrierAC64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)
Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working.
Definition: ir_Carrier.cpp:195
-
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:948
-
bool decodeArgo(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)
Decode the supplied Argo message. Status: BETA / Probably works.
Definition: ir_Argo.cpp:445
-
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:958
-
uint64_t data
Definition: IRrecv.h:85
-
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1108
-
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1055
-
uint16_t * rawbuf
Definition: IRrecv.h:74
-
Information for the interrupt handler.
Definition: IRrecv.h:69
-
uint16_t getBufSize(void)
Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.
Definition: IRrecv.cpp:416
-
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1119
-
bool repeat
Definition: IRrecv.h:110
-
bool decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)
Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.
Definition: ir_Hitachi.cpp:846
-
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1153
-
bool decodeVestelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)
Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device.
Definition: ir_Vestel.cpp:537
-
const uint8_t kIdleState
Definition: IRrecv.h:31
-
bool decodeAmcor(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)
Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working.
Definition: ir_Amcor.cpp:58
-
bool decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)
Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.
Definition: ir_Daikin.cpp:597
-
bool decodeTeknopoint(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTeknopointBits, const bool strict=true)
Decode the supplied Teknopoint message. Status: Alpha / Probably works.
Definition: ir_Teknopoint.cpp:49
-
bool decodeHaierAC176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierAC176Bits, const bool strict=true)
Decode the supplied Haier 176 bit remote A/C message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:1066
-
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1002
-
uint8_t recvpin
Definition: IRrecv.h:70
-
uint16_t timer
Definition: IRrecv.h:72
-
bool decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)
Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.
Definition: ir_Daikin.cpp:3473
-
bool decodeMetz(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMetzBits, const bool strict=true)
Decode the supplied Metz message. Status: BETA / Probably works.
Definition: ir_Metz.cpp:67
-
bool success
Definition: IRrecv.h:84
-
bool decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)
Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.
Definition: ir_Daikin.cpp:1352
-
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:1000
-
bool matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
Check if we match a space signal(measured) with the desired within +/-tolerance percent,...
Definition: IRrecv.cpp:1192
-
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:1132
-
const uint16_t kHaierAC176Bits
Definition: IRremoteESP8266.h:1023
-
const uint8_t kStopState
Definition: IRrecv.h:34
-
uint16_t rawlen
Definition: IRrecv.h:108
-
const uint16_t kMaxTimeoutMs
Definition: IRrecv.h:49
-
bool decodePanasonicAC32(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAc32Bits, const bool strict=true)
Decode the supplied Panasonic AC 32/16bit message. Status: STABLE / Confirmed working.
Definition: ir_Panasonic.cpp:982
-
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:966
-
bool decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)
Decode the supplied Panasonic message. Status: STABLE / Should be working.
Definition: ir_Panasonic.cpp:128
-
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:1029
-
bool decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)
Decode the supplied Electra A/C message. Status: STABLE / Known working.
Definition: ir_Electra.cpp:370
-
bool decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)
Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.
Definition: ir_Daikin.cpp:1715
-
bool decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)
Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:3090
-
bool decodeElitescreens(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEliteScreensBits, const bool strict=true)
Decode the supplied Elite Screens message. Status: STABLE / Confirmed working.
Definition: ir_EliteScreens.cpp:63
-
bool decodeDenon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)
Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine.
Definition: ir_Denon.cpp:70
-
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:1091
-
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1166
-
decode_type_t decode_type
Definition: IRrecv.h:94
-
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:1095
-
bool decodeTechnibelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTechnibelAcBits, const bool strict=true)
Status: STABLE / Reported as working on a real device.
Definition: ir_Technibel.cpp:54
-
const uint64_t kRepeat
Definition: IRrecv.h:26
-
void setTolerance(const uint8_t percent=kTolerance)
Set the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:429
-
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1161
-
bool decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)
Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.
Definition: ir_Midea.cpp:666
-
bool decodeVoltas(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVoltasBits, const bool strict=true)
Decode the supplied Voltas message. Status: STABLE / Working on real device.
Definition: ir_Voltas.cpp:61
-
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:971
-
void copyIrParams(volatile irparams_t *src, irparams_t *dst)
Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile,...
Definition: IRrecv.cpp:392
-
bool decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)
Decode the supplied Kelvinator message. Status: STABLE / Known working.
Definition: ir_Kelvinator.cpp:459
-
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1011
-
bool decodeMWM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)
Decode the supplied MWM message. Status: Implemented.
Definition: ir_MWM.cpp:81
-
void enableIRIn(const bool pullup=false)
Set up and (re)start the IR capture mechanism.
Definition: IRrecv.cpp:323
-
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:977
-
bool matchSpaceRange(const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)
Check if we match a space signal(measured) with the desired within a range (in uSeconds) either side ...
Definition: IRrecv.cpp:1212
-
bool decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)
Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).
Definition: ir_Panasonic.cpp:853
-
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1043
-
bool decodeDoshisha(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)
Decode the supplied Doshisha message. Status: STABLE / Works on real device.
Definition: ir_Doshisha.cpp:85
-
bool decodeZepeal(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)
Decode the supplied Zepeal message. Status: STABLE / Works on real device.
Definition: ir_Zepeal.cpp:67
-
bool decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)
Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.
Definition: ir_Daikin.cpp:2080
-
bool decodeLasertag(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)
Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time.
Definition: ir_Lasertag.cpp:70
- -
const uint8_t kTimeoutMs
Definition: IRrecv.h:47
-
uint16_t _matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_pt...
Definition: IRrecv.cpp:1402
-
const uint8_t kMarkState
Definition: IRrecv.h:32
-
void setUnknownThreshold(const uint16_t length)
Set the minimum length we will consider for reporting UNKNOWN message types.
Definition: IRrecv.cpp:421
-
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1134
-
bool decodeMirage(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMirageBits, const bool strict=true)
Decode the supplied Mirage message. Status: STABLE / Reported as working.
Definition: ir_Mirage.cpp:50
-
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1104
-
const uint16_t kStateSizeMax
Definition: IRrecv.h:60
-
Results from a data match.
Definition: IRrecv.h:83
-
uint8_t rcvstate
Definition: IRrecv.h:71
-
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1056
-
bool decodeRC6(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)
Decode the supplied RC6 message. Status: Stable.
Definition: ir_RC5_RC6.cpp:383
-
bool decodeRC5(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)
Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha)
Definition: ir_RC5_RC6.cpp:309
-
~IRrecv(void)
Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the...
Definition: IRrecv.cpp:308
-
bool decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)
Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.
Definition: ir_Hitachi.cpp:1425
-
bool decodeWhynter(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)
Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA.
Definition: ir_Whynter.cpp:74
-
bool decodeCarrierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)
Decode the supplied Carrier HVAC message.
Definition: ir_Carrier.cpp:82
-
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:1082
-
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:994
-
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:952
-
const uint16_t kStartOffset
Definition: IRrecv.h:20
-
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:943
-
bool decodeRCMM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)
Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working.
Definition: ir_RCMM.cpp:96
-
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)
Class constructor Args:
Definition: IRrecv.cpp:247
-
bool decodeMitsubishi136(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)
Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as work...
Definition: ir_Mitsubishi.cpp:869
-
volatile uint16_t * rawbuf
Definition: IRrecv.h:107
-
const uint8_t kTolerance
Definition: IRrecv.h:35
-
bool decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
Decode the supplied Sharp message. Status: STABLE / Working fine.
Definition: ir_Sharp.cpp:155
-
uint16_t used
Definition: IRrecv.h:86
-
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:1092
-
uint32_t address
Definition: IRrecv.h:101
-
bool decodeNikai(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)
Decode the supplied Nikai message. Status: STABLE / Working.
Definition: ir_Nikai.cpp:52
-
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:1065
-
bool match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed d...
Definition: IRrecv.cpp:1080
-
bool decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)
Decode the supplied Symphony packet/message. Status: STABLE / Should be working.
Definition: ir_Symphony.cpp:60
-
bool decodeTruma(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrumaBits, const bool strict=true)
Decode the supplied Truma message. Status: STABLE / Confirmed working with real device.
Definition: ir_Truma.cpp:65
-
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:1110
-
const uint16_t kUnknownThreshold
Definition: IRrecv.h:28
-
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1058
-
bool decodeAiwaRCT501(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)
Decode the supplied Aiwa RC T501 message. Status: BETA / Should work.
Definition: ir_Aiwa.cpp:61
-
const uint16_t kKelvinatorBits
Definition: IRremoteESP8266.h:1045
-
bool decodeGICable(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)
Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device.
Definition: ir_GICable.cpp:63
-
bool decodeTeco(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)
Decode the supplied Teco message. Status: STABLE / Tested.
Definition: ir_Teco.cpp:353
-
bool decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, const bool strict=true)
Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.
Definition: ir_Sanyo.cpp:136
-
bool decodeCarrierAC40(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)
Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits,...
Definition: ir_Carrier.cpp:147
-
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1087
-
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:989
-
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:1017
-
bool matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta...
Definition: IRrecv.cpp:1111
-
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1162
-
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1060
-
bool decodeKelon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelonBits, const bool strict=true)
Decode the supplied Kelon message. Status: STABLE / Working.
Definition: ir_Kelon.cpp:71
-
bool decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)
Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.
Definition: ir_Daikin.cpp:2472
-
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:1089
-
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1157
-
bool decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)
Decode the supplied Sharp A/C message. Status: STABLE / Known working.
Definition: ir_Sharp.cpp:855
-
bool decodeJVC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)
Decode the supplied JVC message. Status: Stable / Known working.
Definition: ir_JVC.cpp:94
-
bool decodeEcoclim(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEcoclimBits, const bool strict=true)
Decode the supplied EcoClim A/C message. Status: STABLE / Confirmed working on real remote.
Definition: ir_Ecoclim.cpp:68
-
bool decodeMitsubishiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)
Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works.
Definition: ir_Mitsubishi.cpp:257
-
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:954
-
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1099
-
uint16_t bits
Definition: IRrecv.h:106
-
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1014
-
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1042
-
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1047
-
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:974
-
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:939
-
uint32_t ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Calculate the lower bound of the nr. of ticks.
Definition: IRrecv.cpp:1054
-
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1155
-
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1139
-
bool decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)
Decode the supplied Epson message. Status: Beta / Probably works.
Definition: ir_Epson.cpp:45
-
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1144
-
bool decodeSony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)
Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Unt...
Definition: ir_Sony.cpp:121
-
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:961
-
bool matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
Check if we match a mark signal(measured) with the desired within +/-tolerance percent,...
Definition: IRrecv.cpp:1153
-
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:1026
-
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:1033
-
const uint16_t kRawBuf
Definition: IRrecv.h:25
-
bool decode(decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)
Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting ...
Definition: IRrecv.cpp:506
-
bool decodePioneer(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)
Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real example...
Definition: ir_Pioneer.cpp:92
-
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:435
-
const uint16_t kDishBits
Definition: IRremoteESP8266.h:992
-
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition: IRrecv.cpp:1230
-
uint32_t command
Definition: IRrecv.h:102
-
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:1007
-
uint64_t value
Definition: IRrecv.h:100
-
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:946
-
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1030
-
bool decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)
Decode the supplied Samsung36 message. Status: STABLE / Expected to work.
Definition: ir_Samsung.cpp:192
-
const uint16_t kFooter
Definition: IRrecv.h:19
-
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1086
-
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1054
-
bool decodeXmp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kXmpBits, const bool strict=true)
Decode the supplied XMP packet/message. Status: BETA / Probably works.
Definition: ir_Xmp.cpp:160
-
uint8_t timeout
Definition: IRrecv.h:79
-
bool decodeCoronaAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)
Decode the supplied CoronaAc message. Status: STABLE / Appears to be working.
Definition: ir_Corona.cpp:88
-
bool decodeLutron(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)
Decode the supplied Lutron message. Status: STABLE / Working.
Definition: ir_Lutron.cpp:65
-
bool decodeDISH(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)
Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed....
Definition: ir_Dish.cpp:77
-
const uint16_t kRawTick
Definition: IRrecv.h:37
-
uint16_t matchManchesterData(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
Match & decode a Manchester Code data (<= 64bits.
Definition: IRrecv.cpp:1792
-
void resume(void)
Resume collection of received IR data.
Definition: IRrecv.cpp:377
-
bool decodeMilestag2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMilesTag2ShotBits, const bool strict=true)
Decode the supplied MilesTag2 message. Status: ALPHA / Probably works but needs testing with a real d...
Definition: ir_MilesTag2.cpp:63
-
const uint16_t kEcoclimBits
Definition: IRremoteESP8266.h:995
-
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:1020
-
match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)
Match & decode the typical data section of an IR message. The data value is stored in the least signi...
Definition: IRrecv.cpp:1289
-
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:1039
-
bool decodeWhirlpoolAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)
Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended.
Definition: ir_Whirlpool.cpp:607
-
const uint16_t kMarkExcess
Definition: IRrecv.h:24
-
bool decodeHaierACYRW02(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)
Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working.
Definition: ir_Haier.cpp:1033
-
bool decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)
Decode the supplied LG message. Status: STABLE / Working.
Definition: ir_LG.cpp:139
-
bool decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
Decode the supplied Coolix A/C message. Status: STABLE / Known Working.
Definition: ir_Coolix.cpp:628
-
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1049
-
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1123
-
bool decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)
Decode the supplied Goodweather message. Status: BETA / Probably works.
Definition: ir_Goodweather.cpp:424
-
uint8_t _tolerance
Definition: IRrecv.h:158
-
const uint8_t kDefaultESP32Timer
Definition: IRrecv.h:56
-
uint16_t matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.
Definition: IRrecv.cpp:1685
-
bool decodeInax(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)
Decode the supplied Inax Toilet message. Status: Stable / Known working.
Definition: ir_Inax.cpp:51
-
void crudeNoiseFilter(decode_results *results, const uint16_t floor=0)
Remove or merge pulses in the capture buffer that are too short.
Definition: IRrecv.cpp:442
-
bool decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
-
bool decodeSAMSUNG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)
Decode the supplied Samsung 32-bit message. Status: STABLE.
Definition: ir_Samsung.cpp:118
-
bool decodeLegoPf(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)
Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work.
Definition: ir_Lego.cpp:71
-
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:1106
-
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1160
-
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1150
-
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1040
-
bool decodeMitsubishiHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)
Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working....
Definition: ir_MitsubishiHeavy.cpp:1003
-
uint16_t _unknown_threshold
Definition: IRrecv.h:163
-
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:980
-
bool decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)
Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.
Definition: ir_Midea.cpp:759
-
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition: IRrecv.cpp:360
-
bool decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)
Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.
Definition: ir_Hitachi.cpp:959
-
bool decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kToshibaACBits, const bool strict=true)
Decode the supplied Toshiba A/C message. Status: STABLE / Working.
Definition: ir_Toshiba.cpp:493
-
uint32_t ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Calculate the upper bound of the nr. of ticks.
Definition: IRrecv.cpp:1067
-
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1107
-
uint8_t _timer_num
Definition: IRrecv.h:160
-
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:968
-
const uint16_t kTeknopointBits
Definition: IRremoteESP8266.h:1142
-
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1098
-
volatile irparams_t * _getParamsPtr(void)
Unit test helper to get access to the params structure.
Definition: IRrecv.cpp:1890
-
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:983
-
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:1073
-
const uint16_t kSanyoAcBits
Definition: IRremoteESP8266.h:1115
-
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:1076
-
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:997
-
uint8_t state[kStateSizeMax]
Definition: IRrecv.h:104
-
bool decodeHash(decode_results *results)
Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encodi...
Definition: IRrecv.cpp:1251
-
const uint8_t kSpaceState
Definition: IRrecv.h:33
-
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1051
-
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition: IRrecv.cpp:1045
-
const uint16_t kHeader
Definition: IRrecv.h:18
-
const uint32_t kFnvBasis32
Definition: IRrecv.h:53
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h.html deleted file mode 100644 index 7b79c0ccd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h.html +++ /dev/null @@ -1,4077 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRremoteESP8266.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRremoteESP8266.h File Reference
-
-
- -

Go to the source code of this file.

- - - - -

-Typedefs

typedef std::string String
 
- - - - -

-Enumerations

enum  decode_type_t {
-  UNKNOWN = -1, -UNUSED = 0, -RC5, -RC6, -
-  NEC, -SONY, -PANASONIC, -JVC, -
-  SAMSUNG, -WHYNTER, -AIWA_RC_T501, -LG, -
-  SANYO, -MITSUBISHI, -DISH, -SHARP, -
-  COOLIX, -DAIKIN, -DENON, -KELVINATOR, -
-  SHERWOOD, -MITSUBISHI_AC, -RCMM, -SANYO_LC7461, -
-  RC5X, -GREE, -PRONTO, -NEC_LIKE, -
-  ARGO, -TROTEC, -NIKAI, -RAW, -
-  GLOBALCACHE, -TOSHIBA_AC, -FUJITSU_AC, -MIDEA, -
-  MAGIQUEST, -LASERTAG, -CARRIER_AC, -HAIER_AC, -
-  MITSUBISHI2, -HITACHI_AC, -HITACHI_AC1, -HITACHI_AC2, -
-  GICABLE, -HAIER_AC_YRW02, -WHIRLPOOL_AC, -SAMSUNG_AC, -
-  LUTRON, -ELECTRA_AC, -PANASONIC_AC, -PIONEER, -
-  LG2, -MWM, -DAIKIN2, -VESTEL_AC, -
-  TECO, -SAMSUNG36, -TCL112AC, -LEGOPF, -
-  MITSUBISHI_HEAVY_88, -MITSUBISHI_HEAVY_152, -DAIKIN216, -SHARP_AC, -
-  GOODWEATHER, -INAX, -DAIKIN160, -NEOCLIMA, -
-  DAIKIN176, -DAIKIN128, -AMCOR, -DAIKIN152, -
-  MITSUBISHI136, -MITSUBISHI112, -HITACHI_AC424, -SONY_38K, -
-  EPSON, -SYMPHONY, -HITACHI_AC3, -DAIKIN64, -
-  AIRWELL, -DELONGHI_AC, -DOSHISHA, -MULTIBRACKETS, -
-  CARRIER_AC40, -CARRIER_AC64, -HITACHI_AC344, -CORONA_AC, -
-  MIDEA24, -ZEPEAL, -SANYO_AC, -VOLTAS, -
-  METZ, -TRANSCOLD, -TECHNIBEL_AC, -MIRAGE, -
-  ELITESCREENS, -PANASONIC_AC32, -MILESTAG2, -ECOCLIM, -
-  XMP, -TRUMA, -HAIER_AC176, -TEKNOPOINT, -
-  KELON, -kLastDecodeType = KELON -
- }
 Enumerator for defining and numbering of supported IR protocol. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const uint16_t kNoRepeat = 0
 
const uint16_t kSingleRepeat = 1
 
const uint16_t kAirwellBits = 34
 
const uint16_t kAirwellMinRepeats = 2
 
const uint16_t kAiwaRcT501Bits = 15
 
const uint16_t kAiwaRcT501MinRepeats = kSingleRepeat
 
const uint16_t kAlokaBits = 32
 
const uint16_t kAmcorStateLength = 8
 
const uint16_t kAmcorBits = kAmcorStateLength * 8
 
const uint16_t kAmcorDefaultRepeat = kSingleRepeat
 
const uint16_t kArgoStateLength = 12
 
const uint16_t kArgoBits = kArgoStateLength * 8
 
const uint16_t kArgoDefaultRepeat = kNoRepeat
 
const uint16_t kCoolixBits = 24
 
const uint16_t kCoolixDefaultRepeat = kSingleRepeat
 
const uint16_t kCarrierAcBits = 32
 
const uint16_t kCarrierAcMinRepeat = kNoRepeat
 
const uint16_t kCarrierAc40Bits = 40
 
const uint16_t kCarrierAc40MinRepeat = 2
 
const uint16_t kCarrierAc64Bits = 64
 
const uint16_t kCarrierAc64MinRepeat = kNoRepeat
 
const uint16_t kCoronaAcStateLengthShort = 7
 
const uint16_t kCoronaAcStateLength = kCoronaAcStateLengthShort * 3
 
const uint16_t kCoronaAcBitsShort = kCoronaAcStateLengthShort * 8
 
const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8
 
const uint16_t kDaikinStateLength = 35
 
const uint16_t kDaikinBits = kDaikinStateLength * 8
 
const uint16_t kDaikinStateLengthShort = kDaikinStateLength - 8
 
const uint16_t kDaikinBitsShort = kDaikinStateLengthShort * 8
 
const uint16_t kDaikinDefaultRepeat = kNoRepeat
 
const uint16_t kDaikin2StateLength = 39
 
const uint16_t kDaikin2Bits = kDaikin2StateLength * 8
 
const uint16_t kDaikin2DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin64Bits = 64
 
const uint16_t kDaikin64DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin160StateLength = 20
 
const uint16_t kDaikin160Bits = kDaikin160StateLength * 8
 
const uint16_t kDaikin160DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin128StateLength = 16
 
const uint16_t kDaikin128Bits = kDaikin128StateLength * 8
 
const uint16_t kDaikin128DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin152StateLength = 19
 
const uint16_t kDaikin152Bits = kDaikin152StateLength * 8
 
const uint16_t kDaikin152DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin176StateLength = 22
 
const uint16_t kDaikin176Bits = kDaikin176StateLength * 8
 
const uint16_t kDaikin176DefaultRepeat = kNoRepeat
 
const uint16_t kDaikin216StateLength = 27
 
const uint16_t kDaikin216Bits = kDaikin216StateLength * 8
 
const uint16_t kDaikin216DefaultRepeat = kNoRepeat
 
const uint16_t kDelonghiAcBits = 64
 
const uint16_t kDelonghiAcDefaultRepeat = kNoRepeat
 
const uint16_t kTechnibelAcBits = 56
 
const uint16_t kTechnibelAcDefaultRepeat = kNoRepeat
 
const uint16_t kDenonBits = 15
 
const uint16_t kDenon48Bits = 48
 
const uint16_t kDenonLegacyBits = 14
 
const uint16_t kDishBits = 16
 
const uint16_t kDishMinRepeat = 3
 
const uint16_t kDoshishaBits = 40
 
const uint16_t kEcoclimBits = 56
 
const uint16_t kEcoclimShortBits = 15
 
const uint16_t kEpsonBits = 32
 
const uint16_t kEpsonMinRepeat = 2
 
const uint16_t kElectraAcStateLength = 13
 
const uint16_t kElectraAcBits = kElectraAcStateLength * 8
 
const uint16_t kElectraAcMinRepeat = kNoRepeat
 
const uint16_t kEliteScreensBits = 32
 
const uint16_t kEliteScreensDefaultRepeat = kSingleRepeat
 
const uint16_t kFujitsuAcMinRepeat = kNoRepeat
 
const uint16_t kFujitsuAcStateLength = 16
 
const uint16_t kFujitsuAcStateLengthShort = 7
 
const uint16_t kFujitsuAcBits = kFujitsuAcStateLength * 8
 
const uint16_t kFujitsuAcMinBits = (kFujitsuAcStateLengthShort - 1) * 8
 
const uint16_t kGicableBits = 16
 
const uint16_t kGicableMinRepeat = kSingleRepeat
 
const uint16_t kGoodweatherBits = 48
 
const uint16_t kGoodweatherMinRepeat = kNoRepeat
 
const uint16_t kGreeStateLength = 8
 
const uint16_t kGreeBits = kGreeStateLength * 8
 
const uint16_t kGreeDefaultRepeat = kNoRepeat
 
const uint16_t kHaierACStateLength = 9
 
const uint16_t kHaierACBits = kHaierACStateLength * 8
 
const uint16_t kHaierAcDefaultRepeat = kNoRepeat
 
const uint16_t kHaierACYRW02StateLength = 14
 
const uint16_t kHaierACYRW02Bits = kHaierACYRW02StateLength * 8
 
const uint16_t kHaierAcYrw02DefaultRepeat = kNoRepeat
 
const uint16_t kHaierAC176StateLength = 22
 
const uint16_t kHaierAC176Bits = kHaierAC176StateLength * 8
 
const uint16_t kHaierAc176DefaultRepeat = kNoRepeat
 
const uint16_t kHitachiAcStateLength = 28
 
const uint16_t kHitachiAcBits = kHitachiAcStateLength * 8
 
const uint16_t kHitachiAcDefaultRepeat = kNoRepeat
 
const uint16_t kHitachiAc1StateLength = 13
 
const uint16_t kHitachiAc1Bits = kHitachiAc1StateLength * 8
 
const uint16_t kHitachiAc2StateLength = 53
 
const uint16_t kHitachiAc2Bits = kHitachiAc2StateLength * 8
 
const uint16_t kHitachiAc3StateLength = 27
 
const uint16_t kHitachiAc3Bits = kHitachiAc3StateLength * 8
 
const uint16_t kHitachiAc3MinStateLength = 15
 
const uint16_t kHitachiAc3MinBits = kHitachiAc3MinStateLength * 8
 
const uint16_t kHitachiAc344StateLength = 43
 
const uint16_t kHitachiAc344Bits = kHitachiAc344StateLength * 8
 
const uint16_t kHitachiAc424StateLength = 53
 
const uint16_t kHitachiAc424Bits = kHitachiAc424StateLength * 8
 
const uint16_t kInaxBits = 24
 
const uint16_t kInaxMinRepeat = kSingleRepeat
 
const uint16_t kJvcBits = 16
 
const uint16_t kKelonBits = 48
 
const uint16_t kKelvinatorStateLength = 16
 
const uint16_t kKelvinatorBits = kKelvinatorStateLength * 8
 
const uint16_t kKelvinatorDefaultRepeat = kNoRepeat
 
const uint16_t kLasertagBits = 13
 
const uint16_t kLasertagMinRepeat = kNoRepeat
 
const uint16_t kLegoPfBits = 16
 
const uint16_t kLegoPfMinRepeat = kNoRepeat
 
const uint16_t kLgBits = 28
 
const uint16_t kLg32Bits = 32
 
const uint16_t kLgDefaultRepeat = kNoRepeat
 
const uint16_t kLutronBits = 35
 
const uint16_t kMagiquestBits = 56
 
const uint16_t kMetzBits = 19
 
const uint16_t kMetzMinRepeat = kNoRepeat
 
const uint16_t kMideaBits = 48
 
const uint16_t kMideaMinRepeat = kNoRepeat
 
const uint16_t kMidea24Bits = 24
 
const uint16_t kMidea24MinRepeat = kSingleRepeat
 
const uint16_t kMirageStateLength = 15
 
const uint16_t kMirageBits = kMirageStateLength * 8
 
const uint16_t kMirageMinRepeat = kNoRepeat
 
const uint16_t kMitsubishiBits = 16
 
const uint16_t kMitsubishiMinRepeat = kSingleRepeat
 
const uint16_t kMitsubishiACStateLength = 18
 
const uint16_t kMitsubishiACBits = kMitsubishiACStateLength * 8
 
const uint16_t kMitsubishiACMinRepeat = kSingleRepeat
 
const uint16_t kMitsubishi136StateLength = 17
 
const uint16_t kMitsubishi136Bits = kMitsubishi136StateLength * 8
 
const uint16_t kMitsubishi136MinRepeat = kNoRepeat
 
const uint16_t kMitsubishi112StateLength = 14
 
const uint16_t kMitsubishi112Bits = kMitsubishi112StateLength * 8
 
const uint16_t kMitsubishi112MinRepeat = kNoRepeat
 
const uint16_t kMitsubishiHeavy88StateLength = 11
 
const uint16_t kMitsubishiHeavy88Bits = kMitsubishiHeavy88StateLength * 8
 
const uint16_t kMitsubishiHeavy88MinRepeat = kNoRepeat
 
const uint16_t kMitsubishiHeavy152StateLength = 19
 
const uint16_t kMitsubishiHeavy152Bits = kMitsubishiHeavy152StateLength * 8
 
const uint16_t kMitsubishiHeavy152MinRepeat = kNoRepeat
 
const uint16_t kMultibracketsBits = 8
 
const uint16_t kMultibracketsDefaultRepeat = kSingleRepeat
 
const uint16_t kNikaiBits = 24
 
const uint16_t kNECBits = 32
 
const uint16_t kNeoclimaStateLength = 12
 
const uint16_t kNeoclimaBits = kNeoclimaStateLength * 8
 
const uint16_t kNeoclimaMinRepeat = kNoRepeat
 
const uint16_t kPanasonicBits = 48
 
const uint32_t kPanasonicManufacturer = 0x4004
 
const uint16_t kPanasonicAcStateLength = 27
 
const uint16_t kPanasonicAcStateShortLength = 16
 
const uint16_t kPanasonicAcBits = kPanasonicAcStateLength * 8
 
const uint16_t kPanasonicAcShortBits = kPanasonicAcStateShortLength * 8
 
const uint16_t kPanasonicAcDefaultRepeat = kNoRepeat
 
const uint16_t kPanasonicAc32Bits = 32
 
const uint16_t kPioneerBits = 64
 
const uint16_t kProntoMinLength = 6
 
const uint16_t kRC5RawBits = 14
 
const uint16_t kRC5Bits = kRC5RawBits - 2
 
const uint16_t kRC5XBits = kRC5RawBits - 1
 
const uint16_t kRC6Mode0Bits = 20
 
const uint16_t kRC6_36Bits = 36
 
const uint16_t kRCMMBits = 24
 
const uint16_t kSamsungBits = 32
 
const uint16_t kSamsung36Bits = 36
 
const uint16_t kSamsungAcStateLength = 14
 
const uint16_t kSamsungAcBits = kSamsungAcStateLength * 8
 
const uint16_t kSamsungAcExtendedStateLength = 21
 
const uint16_t kSamsungAcExtendedBits = kSamsungAcExtendedStateLength * 8
 
const uint16_t kSamsungAcDefaultRepeat = kNoRepeat
 
const uint16_t kSanyoAcStateLength = 9
 
const uint16_t kSanyoAcBits = kSanyoAcStateLength * 8
 
const uint16_t kSanyoSA8650BBits = 12
 
const uint16_t kSanyoLC7461AddressBits = 13
 
const uint16_t kSanyoLC7461CommandBits = 8
 
const uint16_t kSanyoLC7461Bits
 
const uint8_t kSharpAddressBits = 5
 
const uint8_t kSharpCommandBits = 8
 
const uint16_t kSharpBits = kSharpAddressBits + kSharpCommandBits + 2
 
const uint16_t kSharpAcStateLength = 13
 
const uint16_t kSharpAcBits = kSharpAcStateLength * 8
 
const uint16_t kSharpAcDefaultRepeat = kNoRepeat
 
const uint8_t kSherwoodBits = kNECBits
 
const uint16_t kSherwoodMinRepeat = kSingleRepeat
 
const uint16_t kSony12Bits = 12
 
const uint16_t kSony15Bits = 15
 
const uint16_t kSony20Bits = 20
 
const uint16_t kSonyMinBits = 12
 
const uint16_t kSonyMinRepeat = 2
 
const uint16_t kSymphonyBits = 12
 
const uint16_t kSymphonyDefaultRepeat = 3
 
const uint16_t kTcl112AcStateLength = 14
 
const uint16_t kTcl112AcBits = kTcl112AcStateLength * 8
 
const uint16_t kTcl112AcDefaultRepeat = kNoRepeat
 
const uint16_t kTecoBits = 35
 
const uint16_t kTecoDefaultRepeat = kNoRepeat
 
const uint16_t kTeknopointStateLength = 14
 
const uint16_t kTeknopointBits = kTeknopointStateLength * 8
 
const uint16_t kToshibaACStateLength = 9
 
const uint16_t kToshibaACBits = kToshibaACStateLength * 8
 
const uint16_t kToshibaACMinRepeat = kSingleRepeat
 
const uint16_t kToshibaACStateLengthShort = kToshibaACStateLength - 2
 
const uint16_t kToshibaACBitsShort = kToshibaACStateLengthShort * 8
 
const uint16_t kToshibaACStateLengthLong = kToshibaACStateLength + 1
 
const uint16_t kToshibaACBitsLong = kToshibaACStateLengthLong * 8
 
const uint16_t kTranscoldBits = 24
 
const uint16_t kTranscoldDefaultRepeat = kNoRepeat
 
const uint16_t kTrotecStateLength = 9
 
const uint16_t kTrotecBits = kTrotecStateLength * 8
 
const uint16_t kTrotecDefaultRepeat = kNoRepeat
 
const uint16_t kTrumaBits = 56
 
const uint16_t kWhirlpoolAcStateLength = 21
 
const uint16_t kWhirlpoolAcBits = kWhirlpoolAcStateLength * 8
 
const uint16_t kWhirlpoolAcDefaultRepeat = kNoRepeat
 
const uint16_t kWhynterBits = 32
 
const uint8_t kVestelAcBits = 56
 
const uint16_t kXmpBits = 64
 
const uint16_t kZepealBits = 16
 
const uint16_t kZepealMinRepeat = 4
 
const uint16_t kVoltasBits = 80
 
const uint16_t kVoltasStateLength = 10
 
const uint16_t kMilesTag2ShotBits = 14
 
const uint16_t kMilesTag2MsgBits = 24
 
const uint16_t kMilesMinRepeat = 0
 
-

Typedef Documentation

- -

◆ String

- -
-
- - - - -
typedef std::string String
-
- -
-
-

Enumeration Type Documentation

- -

◆ decode_type_t

- -
-
- - - - -
enum decode_type_t
-
- -

Enumerator for defining and numbering of supported IR protocol.

-
Note
Always add to the end of the list and should never remove entries or change order. Projects may save the type number for later usage so numbering should always stay the same.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Enumerator
UNKNOWN 
UNUSED 
RC5 
RC6 
NEC 
SONY 
PANASONIC 
JVC 
SAMSUNG 
WHYNTER 
AIWA_RC_T501 
LG 
SANYO 
MITSUBISHI 
DISH 
SHARP 
COOLIX 
DAIKIN 
DENON 
KELVINATOR 
SHERWOOD 
MITSUBISHI_AC 
RCMM 
SANYO_LC7461 
RC5X 
GREE 
PRONTO 
NEC_LIKE 
ARGO 
TROTEC 
NIKAI 
RAW 
GLOBALCACHE 
TOSHIBA_AC 
FUJITSU_AC 
MIDEA 
MAGIQUEST 
LASERTAG 
CARRIER_AC 
HAIER_AC 
MITSUBISHI2 
HITACHI_AC 
HITACHI_AC1 
HITACHI_AC2 
GICABLE 
HAIER_AC_YRW02 
WHIRLPOOL_AC 
SAMSUNG_AC 
LUTRON 
ELECTRA_AC 
PANASONIC_AC 
PIONEER 
LG2 
MWM 
DAIKIN2 
VESTEL_AC 
TECO 
SAMSUNG36 
TCL112AC 
LEGOPF 
MITSUBISHI_HEAVY_88 
MITSUBISHI_HEAVY_152 
DAIKIN216 
SHARP_AC 
GOODWEATHER 
INAX 
DAIKIN160 
NEOCLIMA 
DAIKIN176 
DAIKIN128 
AMCOR 
DAIKIN152 
MITSUBISHI136 
MITSUBISHI112 
HITACHI_AC424 
SONY_38K 
EPSON 
SYMPHONY 
HITACHI_AC3 
DAIKIN64 
AIRWELL 
DELONGHI_AC 
DOSHISHA 
MULTIBRACKETS 
CARRIER_AC40 
CARRIER_AC64 
HITACHI_AC344 
CORONA_AC 
MIDEA24 
ZEPEAL 
SANYO_AC 
VOLTAS 
METZ 
TRANSCOLD 
TECHNIBEL_AC 
MIRAGE 
ELITESCREENS 
PANASONIC_AC32 
MILESTAG2 
ECOCLIM 
XMP 
TRUMA 
HAIER_AC176 
TEKNOPOINT 
KELON 
kLastDecodeType 
- -
-
-

Variable Documentation

- -

◆ kAirwellBits

- -
-
- - - - -
const uint16_t kAirwellBits = 34
-
- -
-
- -

◆ kAirwellMinRepeats

- -
-
- - - - -
const uint16_t kAirwellMinRepeats = 2
-
- -
-
- -

◆ kAiwaRcT501Bits

- -
-
- - - - -
const uint16_t kAiwaRcT501Bits = 15
-
- -
-
- -

◆ kAiwaRcT501MinRepeats

- -
-
- - - - -
const uint16_t kAiwaRcT501MinRepeats = kSingleRepeat
-
- -
-
- -

◆ kAlokaBits

- -
-
- - - - -
const uint16_t kAlokaBits = 32
-
- -
-
- -

◆ kAmcorBits

- -
-
- - - - -
const uint16_t kAmcorBits = kAmcorStateLength * 8
-
- -
-
- -

◆ kAmcorDefaultRepeat

- -
-
- - - - -
const uint16_t kAmcorDefaultRepeat = kSingleRepeat
-
- -
-
- -

◆ kAmcorStateLength

- -
-
- - - - -
const uint16_t kAmcorStateLength = 8
-
- -
-
- -

◆ kArgoBits

- -
-
- - - - -
const uint16_t kArgoBits = kArgoStateLength * 8
-
- -
-
- -

◆ kArgoDefaultRepeat

- -
-
- - - - -
const uint16_t kArgoDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kArgoStateLength

- -
-
- - - - -
const uint16_t kArgoStateLength = 12
-
- -
-
- -

◆ kCarrierAc40Bits

- -
-
- - - - -
const uint16_t kCarrierAc40Bits = 40
-
- -
-
- -

◆ kCarrierAc40MinRepeat

- -
-
- - - - -
const uint16_t kCarrierAc40MinRepeat = 2
-
- -
-
- -

◆ kCarrierAc64Bits

- -
-
- - - - -
const uint16_t kCarrierAc64Bits = 64
-
- -
-
- -

◆ kCarrierAc64MinRepeat

- -
-
- - - - -
const uint16_t kCarrierAc64MinRepeat = kNoRepeat
-
- -
-
- -

◆ kCarrierAcBits

- -
-
- - - - -
const uint16_t kCarrierAcBits = 32
-
- -
-
- -

◆ kCarrierAcMinRepeat

- -
-
- - - - -
const uint16_t kCarrierAcMinRepeat = kNoRepeat
-
- -
-
- -

◆ kCoolixBits

- -
-
- - - - -
const uint16_t kCoolixBits = 24
-
- -
-
- -

◆ kCoolixDefaultRepeat

- -
-
- - - - -
const uint16_t kCoolixDefaultRepeat = kSingleRepeat
-
- -
-
- -

◆ kCoronaAcBits

- -
-
- - - - -
const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8
-
- -
-
- -

◆ kCoronaAcBitsShort

- -
-
- - - - -
const uint16_t kCoronaAcBitsShort = kCoronaAcStateLengthShort * 8
-
- -
-
- -

◆ kCoronaAcStateLength

- -
-
- - - - -
const uint16_t kCoronaAcStateLength = kCoronaAcStateLengthShort * 3
-
- -
-
- -

◆ kCoronaAcStateLengthShort

- -
-
- - - - -
const uint16_t kCoronaAcStateLengthShort = 7
-
- -
-
- -

◆ kDaikin128Bits

- -
-
- - - - -
const uint16_t kDaikin128Bits = kDaikin128StateLength * 8
-
- -
-
- -

◆ kDaikin128DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin128DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikin128StateLength

- -
-
- - - - -
const uint16_t kDaikin128StateLength = 16
-
- -
-
- -

◆ kDaikin152Bits

- -
-
- - - - -
const uint16_t kDaikin152Bits = kDaikin152StateLength * 8
-
- -
-
- -

◆ kDaikin152DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin152DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikin152StateLength

- -
-
- - - - -
const uint16_t kDaikin152StateLength = 19
-
- -
-
- -

◆ kDaikin160Bits

- -
-
- - - - -
const uint16_t kDaikin160Bits = kDaikin160StateLength * 8
-
- -
-
- -

◆ kDaikin160DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin160DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikin160StateLength

- -
-
- - - - -
const uint16_t kDaikin160StateLength = 20
-
- -
-
- -

◆ kDaikin176Bits

- -
-
- - - - -
const uint16_t kDaikin176Bits = kDaikin176StateLength * 8
-
- -
-
- -

◆ kDaikin176DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin176DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikin176StateLength

- -
-
- - - - -
const uint16_t kDaikin176StateLength = 22
-
- -
-
- -

◆ kDaikin216Bits

- -
-
- - - - -
const uint16_t kDaikin216Bits = kDaikin216StateLength * 8
-
- -
-
- -

◆ kDaikin216DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin216DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikin216StateLength

- -
-
- - - - -
const uint16_t kDaikin216StateLength = 27
-
- -
-
- -

◆ kDaikin2Bits

- -
-
- - - - -
const uint16_t kDaikin2Bits = kDaikin2StateLength * 8
-
- -
-
- -

◆ kDaikin2DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin2DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikin2StateLength

- -
-
- - - - -
const uint16_t kDaikin2StateLength = 39
-
- -
-
- -

◆ kDaikin64Bits

- -
-
- - - - -
const uint16_t kDaikin64Bits = 64
-
- -
-
- -

◆ kDaikin64DefaultRepeat

- -
-
- - - - -
const uint16_t kDaikin64DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikinBits

- -
-
- - - - -
const uint16_t kDaikinBits = kDaikinStateLength * 8
-
- -
-
- -

◆ kDaikinBitsShort

- -
-
- - - - -
const uint16_t kDaikinBitsShort = kDaikinStateLengthShort * 8
-
- -
-
- -

◆ kDaikinDefaultRepeat

- -
-
- - - - -
const uint16_t kDaikinDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDaikinStateLength

- -
-
- - - - -
const uint16_t kDaikinStateLength = 35
-
- -
-
- -

◆ kDaikinStateLengthShort

- -
-
- - - - -
const uint16_t kDaikinStateLengthShort = kDaikinStateLength - 8
-
- -
-
- -

◆ kDelonghiAcBits

- -
-
- - - - -
const uint16_t kDelonghiAcBits = 64
-
- -
-
- -

◆ kDelonghiAcDefaultRepeat

- -
-
- - - - -
const uint16_t kDelonghiAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kDenon48Bits

- -
-
- - - - -
const uint16_t kDenon48Bits = 48
-
- -
-
- -

◆ kDenonBits

- -
-
- - - - -
const uint16_t kDenonBits = 15
-
- -
-
- -

◆ kDenonLegacyBits

- -
-
- - - - -
const uint16_t kDenonLegacyBits = 14
-
- -
-
- -

◆ kDishBits

- -
-
- - - - -
const uint16_t kDishBits = 16
-
- -
-
- -

◆ kDishMinRepeat

- -
-
- - - - -
const uint16_t kDishMinRepeat = 3
-
- -
-
- -

◆ kDoshishaBits

- -
-
- - - - -
const uint16_t kDoshishaBits = 40
-
- -
-
- -

◆ kEcoclimBits

- -
-
- - - - -
const uint16_t kEcoclimBits = 56
-
- -
-
- -

◆ kEcoclimShortBits

- -
-
- - - - -
const uint16_t kEcoclimShortBits = 15
-
- -
-
- -

◆ kElectraAcBits

- -
-
- - - - -
const uint16_t kElectraAcBits = kElectraAcStateLength * 8
-
- -
-
- -

◆ kElectraAcMinRepeat

- -
-
- - - - -
const uint16_t kElectraAcMinRepeat = kNoRepeat
-
- -
-
- -

◆ kElectraAcStateLength

- -
-
- - - - -
const uint16_t kElectraAcStateLength = 13
-
- -
-
- -

◆ kEliteScreensBits

- -
-
- - - - -
const uint16_t kEliteScreensBits = 32
-
- -
-
- -

◆ kEliteScreensDefaultRepeat

- -
-
- - - - -
const uint16_t kEliteScreensDefaultRepeat = kSingleRepeat
-
- -
-
- -

◆ kEpsonBits

- -
-
- - - - -
const uint16_t kEpsonBits = 32
-
- -
-
- -

◆ kEpsonMinRepeat

- -
-
- - - - -
const uint16_t kEpsonMinRepeat = 2
-
- -
-
- -

◆ kFujitsuAcBits

- -
-
- - - - -
const uint16_t kFujitsuAcBits = kFujitsuAcStateLength * 8
-
- -
-
- -

◆ kFujitsuAcMinBits

- -
-
- - - - -
const uint16_t kFujitsuAcMinBits = (kFujitsuAcStateLengthShort - 1) * 8
-
- -
-
- -

◆ kFujitsuAcMinRepeat

- -
-
- - - - -
const uint16_t kFujitsuAcMinRepeat = kNoRepeat
-
- -
-
- -

◆ kFujitsuAcStateLength

- -
-
- - - - -
const uint16_t kFujitsuAcStateLength = 16
-
- -
-
- -

◆ kFujitsuAcStateLengthShort

- -
-
- - - - -
const uint16_t kFujitsuAcStateLengthShort = 7
-
- -
-
- -

◆ kGicableBits

- -
-
- - - - -
const uint16_t kGicableBits = 16
-
- -
-
- -

◆ kGicableMinRepeat

- -
-
- - - - -
const uint16_t kGicableMinRepeat = kSingleRepeat
-
- -
-
- -

◆ kGoodweatherBits

- -
-
- - - - -
const uint16_t kGoodweatherBits = 48
-
- -
-
- -

◆ kGoodweatherMinRepeat

- -
-
- - - - -
const uint16_t kGoodweatherMinRepeat = kNoRepeat
-
- -
-
- -

◆ kGreeBits

- -
-
- - - - -
const uint16_t kGreeBits = kGreeStateLength * 8
-
- -
-
- -

◆ kGreeDefaultRepeat

- -
-
- - - - -
const uint16_t kGreeDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kGreeStateLength

- -
-
- - - - -
const uint16_t kGreeStateLength = 8
-
- -
-
- -

◆ kHaierAC176Bits

- -
-
- - - - -
const uint16_t kHaierAC176Bits = kHaierAC176StateLength * 8
-
- -
-
- -

◆ kHaierAc176DefaultRepeat

- -
-
- - - - -
const uint16_t kHaierAc176DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kHaierAC176StateLength

- -
-
- - - - -
const uint16_t kHaierAC176StateLength = 22
-
- -
-
- -

◆ kHaierACBits

- -
-
- - - - -
const uint16_t kHaierACBits = kHaierACStateLength * 8
-
- -
-
- -

◆ kHaierAcDefaultRepeat

- -
-
- - - - -
const uint16_t kHaierAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kHaierACStateLength

- -
-
- - - - -
const uint16_t kHaierACStateLength = 9
-
- -
-
- -

◆ kHaierACYRW02Bits

- -
-
- - - - -
const uint16_t kHaierACYRW02Bits = kHaierACYRW02StateLength * 8
-
- -
-
- -

◆ kHaierAcYrw02DefaultRepeat

- -
-
- - - - -
const uint16_t kHaierAcYrw02DefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kHaierACYRW02StateLength

- -
-
- - - - -
const uint16_t kHaierACYRW02StateLength = 14
-
- -
-
- -

◆ kHitachiAc1Bits

- -
-
- - - - -
const uint16_t kHitachiAc1Bits = kHitachiAc1StateLength * 8
-
- -
-
- -

◆ kHitachiAc1StateLength

- -
-
- - - - -
const uint16_t kHitachiAc1StateLength = 13
-
- -
-
- -

◆ kHitachiAc2Bits

- -
-
- - - - -
const uint16_t kHitachiAc2Bits = kHitachiAc2StateLength * 8
-
- -
-
- -

◆ kHitachiAc2StateLength

- -
-
- - - - -
const uint16_t kHitachiAc2StateLength = 53
-
- -
-
- -

◆ kHitachiAc344Bits

- -
-
- - - - -
const uint16_t kHitachiAc344Bits = kHitachiAc344StateLength * 8
-
- -
-
- -

◆ kHitachiAc344StateLength

- -
-
- - - - -
const uint16_t kHitachiAc344StateLength = 43
-
- -
-
- -

◆ kHitachiAc3Bits

- -
-
- - - - -
const uint16_t kHitachiAc3Bits = kHitachiAc3StateLength * 8
-
- -
-
- -

◆ kHitachiAc3MinBits

- -
-
- - - - -
const uint16_t kHitachiAc3MinBits = kHitachiAc3MinStateLength * 8
-
- -
-
- -

◆ kHitachiAc3MinStateLength

- -
-
- - - - -
const uint16_t kHitachiAc3MinStateLength = 15
-
- -
-
- -

◆ kHitachiAc3StateLength

- -
-
- - - - -
const uint16_t kHitachiAc3StateLength = 27
-
- -
-
- -

◆ kHitachiAc424Bits

- -
-
- - - - -
const uint16_t kHitachiAc424Bits = kHitachiAc424StateLength * 8
-
- -
-
- -

◆ kHitachiAc424StateLength

- -
-
- - - - -
const uint16_t kHitachiAc424StateLength = 53
-
- -
-
- -

◆ kHitachiAcBits

- -
-
- - - - -
const uint16_t kHitachiAcBits = kHitachiAcStateLength * 8
-
- -
-
- -

◆ kHitachiAcDefaultRepeat

- -
-
- - - - -
const uint16_t kHitachiAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kHitachiAcStateLength

- -
-
- - - - -
const uint16_t kHitachiAcStateLength = 28
-
- -
-
- -

◆ kInaxBits

- -
-
- - - - -
const uint16_t kInaxBits = 24
-
- -
-
- -

◆ kInaxMinRepeat

- -
-
- - - - -
const uint16_t kInaxMinRepeat = kSingleRepeat
-
- -
-
- -

◆ kJvcBits

- -
-
- - - - -
const uint16_t kJvcBits = 16
-
- -
-
- -

◆ kKelonBits

- -
-
- - - - -
const uint16_t kKelonBits = 48
-
- -
-
- -

◆ kKelvinatorBits

- -
-
- - - - -
const uint16_t kKelvinatorBits = kKelvinatorStateLength * 8
-
- -
-
- -

◆ kKelvinatorDefaultRepeat

- -
-
- - - - -
const uint16_t kKelvinatorDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kKelvinatorStateLength

- -
-
- - - - -
const uint16_t kKelvinatorStateLength = 16
-
- -
-
- -

◆ kLasertagBits

- -
-
- - - - -
const uint16_t kLasertagBits = 13
-
- -
-
- -

◆ kLasertagMinRepeat

- -
-
- - - - -
const uint16_t kLasertagMinRepeat = kNoRepeat
-
- -
-
- -

◆ kLegoPfBits

- -
-
- - - - -
const uint16_t kLegoPfBits = 16
-
- -
-
- -

◆ kLegoPfMinRepeat

- -
-
- - - - -
const uint16_t kLegoPfMinRepeat = kNoRepeat
-
- -
-
- -

◆ kLg32Bits

- -
-
- - - - -
const uint16_t kLg32Bits = 32
-
- -
-
- -

◆ kLgBits

- -
-
- - - - -
const uint16_t kLgBits = 28
-
- -
-
- -

◆ kLgDefaultRepeat

- -
-
- - - - -
const uint16_t kLgDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kLutronBits

- -
-
- - - - -
const uint16_t kLutronBits = 35
-
- -
-
- -

◆ kMagiquestBits

- -
-
- - - - -
const uint16_t kMagiquestBits = 56
-
- -
-
- -

◆ kMetzBits

- -
-
- - - - -
const uint16_t kMetzBits = 19
-
- -
-
- -

◆ kMetzMinRepeat

- -
-
- - - - -
const uint16_t kMetzMinRepeat = kNoRepeat
-
- -
-
- -

◆ kMidea24Bits

- -
-
- - - - -
const uint16_t kMidea24Bits = 24
-
- -
-
- -

◆ kMidea24MinRepeat

- -
-
- - - - -
const uint16_t kMidea24MinRepeat = kSingleRepeat
-
- -
-
- -

◆ kMideaBits

- -
-
- - - - -
const uint16_t kMideaBits = 48
-
- -
-
- -

◆ kMideaMinRepeat

- -
-
- - - - -
const uint16_t kMideaMinRepeat = kNoRepeat
-
- -
-
- -

◆ kMilesMinRepeat

- -
-
- - - - -
const uint16_t kMilesMinRepeat = 0
-
- -
-
- -

◆ kMilesTag2MsgBits

- -
-
- - - - -
const uint16_t kMilesTag2MsgBits = 24
-
- -
-
- -

◆ kMilesTag2ShotBits

- -
-
- - - - -
const uint16_t kMilesTag2ShotBits = 14
-
- -
-
- -

◆ kMirageBits

- -
-
- - - - -
const uint16_t kMirageBits = kMirageStateLength * 8
-
- -
-
- -

◆ kMirageMinRepeat

- -
-
- - - - -
const uint16_t kMirageMinRepeat = kNoRepeat
-
- -
-
- -

◆ kMirageStateLength

- -
-
- - - - -
const uint16_t kMirageStateLength = 15
-
- -
-
- -

◆ kMitsubishi112Bits

- -
-
- - - - -
const uint16_t kMitsubishi112Bits = kMitsubishi112StateLength * 8
-
- -
-
- -

◆ kMitsubishi112MinRepeat

- -
-
- - - - -
const uint16_t kMitsubishi112MinRepeat = kNoRepeat
-
- -
-
- -

◆ kMitsubishi112StateLength

- -
-
- - - - -
const uint16_t kMitsubishi112StateLength = 14
-
- -
-
- -

◆ kMitsubishi136Bits

- -
-
- - - - -
const uint16_t kMitsubishi136Bits = kMitsubishi136StateLength * 8
-
- -
-
- -

◆ kMitsubishi136MinRepeat

- -
-
- - - - -
const uint16_t kMitsubishi136MinRepeat = kNoRepeat
-
- -
-
- -

◆ kMitsubishi136StateLength

- -
-
- - - - -
const uint16_t kMitsubishi136StateLength = 17
-
- -
-
- -

◆ kMitsubishiACBits

- -
-
- - - - -
const uint16_t kMitsubishiACBits = kMitsubishiACStateLength * 8
-
- -
-
- -

◆ kMitsubishiACMinRepeat

- -
-
- - - - -
const uint16_t kMitsubishiACMinRepeat = kSingleRepeat
-
- -
-
- -

◆ kMitsubishiACStateLength

- -
-
- - - - -
const uint16_t kMitsubishiACStateLength = 18
-
- -
-
- -

◆ kMitsubishiBits

- -
-
- - - - -
const uint16_t kMitsubishiBits = 16
-
- -
-
- -

◆ kMitsubishiHeavy152Bits

- -
-
- - - - -
const uint16_t kMitsubishiHeavy152Bits = kMitsubishiHeavy152StateLength * 8
-
- -
-
- -

◆ kMitsubishiHeavy152MinRepeat

- -
-
- - - - -
const uint16_t kMitsubishiHeavy152MinRepeat = kNoRepeat
-
- -
-
- -

◆ kMitsubishiHeavy152StateLength

- -
-
- - - - -
const uint16_t kMitsubishiHeavy152StateLength = 19
-
- -
-
- -

◆ kMitsubishiHeavy88Bits

- -
-
- - - - -
const uint16_t kMitsubishiHeavy88Bits = kMitsubishiHeavy88StateLength * 8
-
- -
-
- -

◆ kMitsubishiHeavy88MinRepeat

- -
-
- - - - -
const uint16_t kMitsubishiHeavy88MinRepeat = kNoRepeat
-
- -
-
- -

◆ kMitsubishiHeavy88StateLength

- -
-
- - - - -
const uint16_t kMitsubishiHeavy88StateLength = 11
-
- -
-
- -

◆ kMitsubishiMinRepeat

- -
-
- - - - -
const uint16_t kMitsubishiMinRepeat = kSingleRepeat
-
- -
-
- -

◆ kMultibracketsBits

- -
-
- - - - -
const uint16_t kMultibracketsBits = 8
-
- -
-
- -

◆ kMultibracketsDefaultRepeat

- -
-
- - - - -
const uint16_t kMultibracketsDefaultRepeat = kSingleRepeat
-
- -
-
- -

◆ kNECBits

- -
-
- - - - -
const uint16_t kNECBits = 32
-
- -
-
- -

◆ kNeoclimaBits

- -
-
- - - - -
const uint16_t kNeoclimaBits = kNeoclimaStateLength * 8
-
- -
-
- -

◆ kNeoclimaMinRepeat

- -
-
- - - - -
const uint16_t kNeoclimaMinRepeat = kNoRepeat
-
- -
-
- -

◆ kNeoclimaStateLength

- -
-
- - - - -
const uint16_t kNeoclimaStateLength = 12
-
- -
-
- -

◆ kNikaiBits

- -
-
- - - - -
const uint16_t kNikaiBits = 24
-
- -
-
- -

◆ kNoRepeat

- -
-
- - - - -
const uint16_t kNoRepeat = 0
-
- -
-
- -

◆ kPanasonicAc32Bits

- -
-
- - - - -
const uint16_t kPanasonicAc32Bits = 32
-
- -
-
- -

◆ kPanasonicAcBits

- -
-
- - - - -
const uint16_t kPanasonicAcBits = kPanasonicAcStateLength * 8
-
- -
-
- -

◆ kPanasonicAcDefaultRepeat

- -
-
- - - - -
const uint16_t kPanasonicAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kPanasonicAcShortBits

- -
-
- - - - -
const uint16_t kPanasonicAcShortBits = kPanasonicAcStateShortLength * 8
-
- -
-
- -

◆ kPanasonicAcStateLength

- -
-
- - - - -
const uint16_t kPanasonicAcStateLength = 27
-
- -
-
- -

◆ kPanasonicAcStateShortLength

- -
-
- - - - -
const uint16_t kPanasonicAcStateShortLength = 16
-
- -
-
- -

◆ kPanasonicBits

- -
-
- - - - -
const uint16_t kPanasonicBits = 48
-
- -
-
- -

◆ kPanasonicManufacturer

- -
-
- - - - -
const uint32_t kPanasonicManufacturer = 0x4004
-
- -
-
- -

◆ kPioneerBits

- -
-
- - - - -
const uint16_t kPioneerBits = 64
-
- -
-
- -

◆ kProntoMinLength

- -
-
- - - - -
const uint16_t kProntoMinLength = 6
-
- -
-
- -

◆ kRC5Bits

- -
-
- - - - -
const uint16_t kRC5Bits = kRC5RawBits - 2
-
- -
-
- -

◆ kRC5RawBits

- -
-
- - - - -
const uint16_t kRC5RawBits = 14
-
- -
-
- -

◆ kRC5XBits

- -
-
- - - - -
const uint16_t kRC5XBits = kRC5RawBits - 1
-
- -
-
- -

◆ kRC6_36Bits

- -
-
- - - - -
const uint16_t kRC6_36Bits = 36
-
- -
-
- -

◆ kRC6Mode0Bits

- -
-
- - - - -
const uint16_t kRC6Mode0Bits = 20
-
- -
-
- -

◆ kRCMMBits

- -
-
- - - - -
const uint16_t kRCMMBits = 24
-
- -
-
- -

◆ kSamsung36Bits

- -
-
- - - - -
const uint16_t kSamsung36Bits = 36
-
- -
-
- -

◆ kSamsungAcBits

- -
-
- - - - -
const uint16_t kSamsungAcBits = kSamsungAcStateLength * 8
-
- -
-
- -

◆ kSamsungAcDefaultRepeat

- -
-
- - - - -
const uint16_t kSamsungAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kSamsungAcExtendedBits

- -
-
- - - - -
const uint16_t kSamsungAcExtendedBits = kSamsungAcExtendedStateLength * 8
-
- -
-
- -

◆ kSamsungAcExtendedStateLength

- -
-
- - - - -
const uint16_t kSamsungAcExtendedStateLength = 21
-
- -
-
- -

◆ kSamsungAcStateLength

- -
-
- - - - -
const uint16_t kSamsungAcStateLength = 14
-
- -
-
- -

◆ kSamsungBits

- -
-
- - - - -
const uint16_t kSamsungBits = 32
-
- -
-
- -

◆ kSanyoAcBits

- -
-
- - - - -
const uint16_t kSanyoAcBits = kSanyoAcStateLength * 8
-
- -
-
- -

◆ kSanyoAcStateLength

- -
-
- - - - -
const uint16_t kSanyoAcStateLength = 9
-
- -
-
- -

◆ kSanyoLC7461AddressBits

- -
-
- - - - -
const uint16_t kSanyoLC7461AddressBits = 13
-
- -
-
- -

◆ kSanyoLC7461Bits

- -
-
- - - - -
const uint16_t kSanyoLC7461Bits
-
-Initial value: -
-
- -

◆ kSanyoLC7461CommandBits

- -
-
- - - - -
const uint16_t kSanyoLC7461CommandBits = 8
-
- -
-
- -

◆ kSanyoSA8650BBits

- -
-
- - - - -
const uint16_t kSanyoSA8650BBits = 12
-
- -
-
- -

◆ kSharpAcBits

- -
-
- - - - -
const uint16_t kSharpAcBits = kSharpAcStateLength * 8
-
- -
-
- -

◆ kSharpAcDefaultRepeat

- -
-
- - - - -
const uint16_t kSharpAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kSharpAcStateLength

- -
-
- - - - -
const uint16_t kSharpAcStateLength = 13
-
- -
-
- -

◆ kSharpAddressBits

- -
-
- - - - -
const uint8_t kSharpAddressBits = 5
-
- -
-
- -

◆ kSharpBits

- -
-
- - - - -
const uint16_t kSharpBits = kSharpAddressBits + kSharpCommandBits + 2
-
- -
-
- -

◆ kSharpCommandBits

- -
-
- - - - -
const uint8_t kSharpCommandBits = 8
-
- -
-
- -

◆ kSherwoodBits

- -
-
- - - - -
const uint8_t kSherwoodBits = kNECBits
-
- -
-
- -

◆ kSherwoodMinRepeat

- -
-
- - - - -
const uint16_t kSherwoodMinRepeat = kSingleRepeat
-
- -
-
- -

◆ kSingleRepeat

- -
-
- - - - -
const uint16_t kSingleRepeat = 1
-
- -
-
- -

◆ kSony12Bits

- -
-
- - - - -
const uint16_t kSony12Bits = 12
-
- -
-
- -

◆ kSony15Bits

- -
-
- - - - -
const uint16_t kSony15Bits = 15
-
- -
-
- -

◆ kSony20Bits

- -
-
- - - - -
const uint16_t kSony20Bits = 20
-
- -
-
- -

◆ kSonyMinBits

- -
-
- - - - -
const uint16_t kSonyMinBits = 12
-
- -
-
- -

◆ kSonyMinRepeat

- -
-
- - - - -
const uint16_t kSonyMinRepeat = 2
-
- -
-
- -

◆ kSymphonyBits

- -
-
- - - - -
const uint16_t kSymphonyBits = 12
-
- -
-
- -

◆ kSymphonyDefaultRepeat

- -
-
- - - - -
const uint16_t kSymphonyDefaultRepeat = 3
-
- -
-
- -

◆ kTcl112AcBits

- -
-
- - - - -
const uint16_t kTcl112AcBits = kTcl112AcStateLength * 8
-
- -
-
- -

◆ kTcl112AcDefaultRepeat

- -
-
- - - - -
const uint16_t kTcl112AcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kTcl112AcStateLength

- -
-
- - - - -
const uint16_t kTcl112AcStateLength = 14
-
- -
-
- -

◆ kTechnibelAcBits

- -
-
- - - - -
const uint16_t kTechnibelAcBits = 56
-
- -
-
- -

◆ kTechnibelAcDefaultRepeat

- -
-
- - - - -
const uint16_t kTechnibelAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kTecoBits

- -
-
- - - - -
const uint16_t kTecoBits = 35
-
- -
-
- -

◆ kTecoDefaultRepeat

- -
-
- - - - -
const uint16_t kTecoDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kTeknopointBits

- -
-
- - - - -
const uint16_t kTeknopointBits = kTeknopointStateLength * 8
-
- -
-
- -

◆ kTeknopointStateLength

- -
-
- - - - -
const uint16_t kTeknopointStateLength = 14
-
- -
-
- -

◆ kToshibaACBits

- -
-
- - - - -
const uint16_t kToshibaACBits = kToshibaACStateLength * 8
-
- -
-
- -

◆ kToshibaACBitsLong

- -
-
- - - - -
const uint16_t kToshibaACBitsLong = kToshibaACStateLengthLong * 8
-
- -
-
- -

◆ kToshibaACBitsShort

- -
-
- - - - -
const uint16_t kToshibaACBitsShort = kToshibaACStateLengthShort * 8
-
- -
-
- -

◆ kToshibaACMinRepeat

- -
-
- - - - -
const uint16_t kToshibaACMinRepeat = kSingleRepeat
-
- -
-
- -

◆ kToshibaACStateLength

- -
-
- - - - -
const uint16_t kToshibaACStateLength = 9
-
- -
-
- -

◆ kToshibaACStateLengthLong

- -
-
- - - - -
const uint16_t kToshibaACStateLengthLong = kToshibaACStateLength + 1
-
- -
-
- -

◆ kToshibaACStateLengthShort

- -
-
- - - - -
const uint16_t kToshibaACStateLengthShort = kToshibaACStateLength - 2
-
- -
-
- -

◆ kTranscoldBits

- -
-
- - - - -
const uint16_t kTranscoldBits = 24
-
- -
-
- -

◆ kTranscoldDefaultRepeat

- -
-
- - - - -
const uint16_t kTranscoldDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kTrotecBits

- -
-
- - - - -
const uint16_t kTrotecBits = kTrotecStateLength * 8
-
- -
-
- -

◆ kTrotecDefaultRepeat

- -
-
- - - - -
const uint16_t kTrotecDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kTrotecStateLength

- -
-
- - - - -
const uint16_t kTrotecStateLength = 9
-
- -
-
- -

◆ kTrumaBits

- -
-
- - - - -
const uint16_t kTrumaBits = 56
-
- -
-
- -

◆ kVestelAcBits

- -
-
- - - - -
const uint8_t kVestelAcBits = 56
-
- -
-
- -

◆ kVoltasBits

- -
-
- - - - -
const uint16_t kVoltasBits = 80
-
- -
-
- -

◆ kVoltasStateLength

- -
-
- - - - -
const uint16_t kVoltasStateLength = 10
-
- -
-
- -

◆ kWhirlpoolAcBits

- -
-
- - - - -
const uint16_t kWhirlpoolAcBits = kWhirlpoolAcStateLength * 8
-
- -
-
- -

◆ kWhirlpoolAcDefaultRepeat

- -
-
- - - - -
const uint16_t kWhirlpoolAcDefaultRepeat = kNoRepeat
-
- -
-
- -

◆ kWhirlpoolAcStateLength

- -
-
- - - - -
const uint16_t kWhirlpoolAcStateLength = 21
-
- -
-
- -

◆ kWhynterBits

- -
-
- - - - -
const uint16_t kWhynterBits = 32
-
- -
-
- -

◆ kXmpBits

- -
-
- - - - -
const uint16_t kXmpBits = 64
-
- -
-
- -

◆ kZepealBits

- -
-
- - - - -
const uint16_t kZepealBits = 16
-
- -
-
- -

◆ kZepealMinRepeat

- -
-
- - - - -
const uint16_t kZepealMinRepeat = 4
-
- -
-
-
-
const uint16_t kSanyoLC7461CommandBits
Definition: IRremoteESP8266.h:1118
-
const uint16_t kSanyoLC7461AddressBits
Definition: IRremoteESP8266.h:1117
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h_source.html deleted file mode 100644 index 398bab2d4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRremoteESP8266_8h_source.html +++ /dev/null @@ -1,1668 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRremoteESP8266.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRremoteESP8266.h
-
-
-Go to the documentation of this file.
1  /***************************************************
-
2  * IRremote for ESP8266
-
3  *
-
4  * Based on the IRremote library for Arduino by Ken Shirriff
-
5  * Version 0.11 August, 2009
-
6  * Copyright 2009 Ken Shirriff
-
7  * For details, see http://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
-
8  *
-
9  * Edited by Mitra to add new controller SANYO
-
10  *
-
11  * Interrupt code based on NECIRrcv by Joe Knapp
-
12  * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1210243556
-
13  * Also influenced by http://zovirl.com/2008/11/12/building-a-universal-remote-with-an-arduino/
-
14  *
-
15  * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
-
16  * LG added by Darryl Smith (based on the JVC protocol)
-
17  * Whynter A/C ARC-110WD added by Francesco Meschia
-
18  * Coolix A/C / heatpump added by (send) bakrus & (decode) crankyoldgit
-
19  * Denon: sendDenon, decodeDenon added by Massimiliano Pinto
-
20  (from https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp)
-
21  * Kelvinator A/C and Sherwood added by crankyoldgit
-
22  * Mitsubishi (TV) sending added by crankyoldgit
-
23  * Pronto code sending added by crankyoldgit
-
24  * Mitsubishi & Toshiba A/C added by crankyoldgit
-
25  * (derived from https://github.com/r45635/HVAC-IR-Control)
-
26  * DISH decode by marcosamarinho
-
27  * Gree Heatpump sending added by Ville Skyttä (scop)
-
28  * (derived from https://github.com/ToniA/arduino-heatpumpir/blob/master/GreeHeatpumpIR.cpp)
-
29  * Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for sending IR code on ESP8266
-
30  * Updated by Sebastien Warin (http://sebastien.warin.fr) for receiving IR code on ESP8266
-
31  *
-
32  * Updated by sillyfrog for Daikin, adopted from
-
33  * (https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/)
-
34  * Fujitsu A/C code added by jonnygraham
-
35  * Trotec AC code by stufisher
-
36  * Carrier & Haier AC code by crankyoldgit
-
37  * Vestel AC code by Erdem U. Altınyurt
-
38  * Teco AC code by Fabien Valthier (hcoohb)
-
39  * Mitsubishi 112 AC Code by kuchel77
-
40  * Kelon AC code by Davide Depau (Depau)
-
41  *
-
42  * GPL license, all text above must be included in any redistribution
-
43  ****************************************************/
-
44 
-
45 #ifndef IRREMOTEESP8266_H_
-
46 #define IRREMOTEESP8266_H_
-
47 
-
48 #define __STDC_LIMIT_MACROS
-
49 #include <stdint.h>
-
50 #ifdef UNIT_TEST
-
51 #include <iostream>
-
52 #include <string>
-
53 #endif // UNIT_TEST
-
54 
-
55 // Library Version
-
56 #define _IRREMOTEESP8266_VERSION_ "2.7.18"
-
57 
-
58 // Set the language & locale for the library. See the `locale` dir for options.
-
59 #ifndef _IR_LOCALE_
-
60 #define _IR_LOCALE_ en-AU
-
61 #endif // _IR_LOCALE_
-
62 
-
63 // Do we enable all the protocols by default (true), or disable them (false)?
-
64 // This allows users of the library to disable or enable all protocols at
-
65 // compile-time with `-D_IR_ENABLE_DEFAULT_=true` or
-
66 // `-D_IR_ENABLE_DEFAULT_=false` compiler flags respectively.
-
67 // Everything is included by default.
-
68 // e.g. If you only want to enable use of he NEC protocol to save program space,
-
69 // you would use something like:
-
70 // `-D_IR_ENABLE_DEFAULT_=false -DDECODE_NEC=true -DSEND_NEC=true`
-
71 //
-
72 // or alter your 'platform.ini' file accordingly:
-
73 // ```
-
74 // build_flags = -D_IR_ENABLE_DEFAULT_=false
-
75 // -DDECODE_NEC=true
-
76 // -DSEND_NEC=true
-
77 // ```
-
78 // If you want to enable support for every protocol *except* _decoding_ the
-
79 // Kelvinator protocol, you would use:
-
80 // `-DDECODE_KELVINATOR=false`
-
81 #ifndef _IR_ENABLE_DEFAULT_
-
82 #define _IR_ENABLE_DEFAULT_ true // Unless set externally, the default is on.
-
83 #endif // _IR_ENABLE_DEFAULT_
-
84 
-
85 // Supported IR protocols
-
86 // Each protocol you include costs memory and, during decode, costs time
-
87 // Disable (set to false) all the protocols you do not need/want!
-
88 // The Air Conditioner protocols are the most expensive memory-wise.
-
89 //
-
90 
-
91 // Semi-unique code for unknown messages
-
92 #ifndef DECODE_HASH
-
93 #define DECODE_HASH _IR_ENABLE_DEFAULT_
-
94 #endif // DECODE_HASH
-
95 
-
96 #ifndef SEND_RAW
-
97 #define SEND_RAW _IR_ENABLE_DEFAULT_
-
98 #endif // SEND_RAW
-
99 
-
100 #ifndef DECODE_NEC
-
101 #define DECODE_NEC _IR_ENABLE_DEFAULT_
-
102 #endif // DECODE_NEC
-
103 #ifndef SEND_NEC
-
104 #define SEND_NEC _IR_ENABLE_DEFAULT_
-
105 #endif // SEND_NEC
-
106 
-
107 #ifndef DECODE_SHERWOOD
-
108 #define DECODE_SHERWOOD false // Not applicable. Actually is DECODE_NEC
-
109 #endif // DECODE_SHERWOOD
-
110 #ifndef SEND_SHERWOOD
-
111 #define SEND_SHERWOOD _IR_ENABLE_DEFAULT_
-
112 #endif // SEND_SHERWOOD
-
113 
-
114 #ifndef DECODE_RC5
-
115 #define DECODE_RC5 _IR_ENABLE_DEFAULT_
-
116 #endif // DECODE_RC5
-
117 #ifndef SEND_RC5
-
118 #define SEND_RC5 _IR_ENABLE_DEFAULT_
-
119 #endif // SEND_RC5
-
120 
-
121 #ifndef DECODE_RC6
-
122 #define DECODE_RC6 _IR_ENABLE_DEFAULT_
-
123 #endif // DECODE_RC6
-
124 #ifndef SEND_RC6
-
125 #define SEND_RC6 _IR_ENABLE_DEFAULT_
-
126 #endif // SEND_RC6
-
127 
-
128 #ifndef DECODE_RCMM
-
129 #define DECODE_RCMM _IR_ENABLE_DEFAULT_
-
130 #endif // DECODE_RCMM
-
131 #ifndef SEND_RCMM
-
132 #define SEND_RCMM _IR_ENABLE_DEFAULT_
-
133 #endif // SEND_RCMM
-
134 
-
135 #ifndef DECODE_SONY
-
136 #define DECODE_SONY _IR_ENABLE_DEFAULT_
-
137 #endif // DECODE_SONY
-
138 #ifndef SEND_SONY
-
139 #define SEND_SONY _IR_ENABLE_DEFAULT_
-
140 #endif // SEND_SONY
-
141 
-
142 #ifndef DECODE_PANASONIC
-
143 #define DECODE_PANASONIC _IR_ENABLE_DEFAULT_
-
144 #endif // DECODE_PANASONIC
-
145 #ifndef SEND_PANASONIC
-
146 #define SEND_PANASONIC _IR_ENABLE_DEFAULT_
-
147 #endif // SEND_PANASONIC
-
148 
-
149 #ifndef DECODE_JVC
-
150 #define DECODE_JVC _IR_ENABLE_DEFAULT_
-
151 #endif // DECODE_JVC
-
152 #ifndef SEND_JVC
-
153 #define SEND_JVC _IR_ENABLE_DEFAULT_
-
154 #endif // SEND_JVC
-
155 
-
156 #ifndef DECODE_SAMSUNG
-
157 #define DECODE_SAMSUNG _IR_ENABLE_DEFAULT_
-
158 #endif // DECODE_SAMSUNG
-
159 #ifndef SEND_SAMSUNG
-
160 #define SEND_SAMSUNG _IR_ENABLE_DEFAULT_
-
161 #endif // SEND_SAMSUNG
-
162 
-
163 #ifndef DECODE_SAMSUNG36
-
164 #define DECODE_SAMSUNG36 _IR_ENABLE_DEFAULT_
-
165 #endif // DECODE_SAMSUNG36
-
166 #ifndef SEND_SAMSUNG36
-
167 #define SEND_SAMSUNG36 _IR_ENABLE_DEFAULT_
-
168 #endif // SEND_SAMSUNG36
-
169 
-
170 #ifndef DECODE_SAMSUNG_AC
-
171 #define DECODE_SAMSUNG_AC _IR_ENABLE_DEFAULT_
-
172 #endif // DECODE_SAMSUNG_AC
-
173 #ifndef SEND_SAMSUNG_AC
-
174 #define SEND_SAMSUNG_AC _IR_ENABLE_DEFAULT_
-
175 #endif // SEND_SAMSUNG_AC
-
176 
-
177 #ifndef DECODE_WHYNTER
-
178 #define DECODE_WHYNTER _IR_ENABLE_DEFAULT_
-
179 #endif // DECODE_WHYNTER
-
180 #ifndef SEND_WHYNTER
-
181 #define SEND_WHYNTER _IR_ENABLE_DEFAULT_
-
182 #endif // SEND_WHYNTER
-
183 
-
184 #ifndef DECODE_AIWA_RC_T501
-
185 #define DECODE_AIWA_RC_T501 _IR_ENABLE_DEFAULT_
-
186 #endif // DECODE_AIWA_RC_T501
-
187 #ifndef SEND_AIWA_RC_T501
-
188 #define SEND_AIWA_RC_T501 _IR_ENABLE_DEFAULT_
-
189 #endif // SEND_AIWA_RC_T501
-
190 
-
191 #ifndef DECODE_LG
-
192 #define DECODE_LG _IR_ENABLE_DEFAULT_
-
193 #endif // DECODE_LG
-
194 #ifndef SEND_LG
-
195 #define SEND_LG _IR_ENABLE_DEFAULT_
-
196 #endif // SEND_LG
-
197 
-
198 #ifndef DECODE_SANYO
-
199 #define DECODE_SANYO _IR_ENABLE_DEFAULT_
-
200 #endif // DECODE_SANYO
-
201 #ifndef SEND_SANYO
-
202 #define SEND_SANYO _IR_ENABLE_DEFAULT_
-
203 #endif // SEND_SANYO
-
204 
-
205 #ifndef DECODE_SANYO_AC
-
206 #define DECODE_SANYO_AC _IR_ENABLE_DEFAULT_
-
207 #endif // DECODE_SANYO_AC
-
208 #ifndef SEND_SANYO_AC
-
209 #define SEND_SANYO_AC _IR_ENABLE_DEFAULT_
-
210 #endif // SEND_SANYO_AC
-
211 
-
212 #ifndef DECODE_MITSUBISHI
-
213 #define DECODE_MITSUBISHI _IR_ENABLE_DEFAULT_
-
214 #endif // DECODE_MITSUBISHI
-
215 #ifndef SEND_MITSUBISHI
-
216 #define SEND_MITSUBISHI _IR_ENABLE_DEFAULT_
-
217 #endif // SEND_MITSUBISHI
-
218 
-
219 #ifndef DECODE_MITSUBISHI2
-
220 #define DECODE_MITSUBISHI2 _IR_ENABLE_DEFAULT_
-
221 #endif // DECODE_MITSUBISHI2
-
222 #ifndef SEND_MITSUBISHI2
-
223 #define SEND_MITSUBISHI2 _IR_ENABLE_DEFAULT_
-
224 #endif // SEND_MITSUBISHI2
-
225 
-
226 #ifndef DECODE_DISH
-
227 #define DECODE_DISH _IR_ENABLE_DEFAULT_
-
228 #endif // DECODE_DISH
-
229 #ifndef SEND_DISH
-
230 #define SEND_DISH _IR_ENABLE_DEFAULT_
-
231 #endif // SEND_DISH
-
232 
-
233 #ifndef DECODE_SHARP
-
234 #define DECODE_SHARP _IR_ENABLE_DEFAULT_
-
235 #endif // DECODE_SHARP
-
236 #ifndef SEND_SHARP
-
237 #define SEND_SHARP _IR_ENABLE_DEFAULT_
-
238 #endif // SEND_SHARP
-
239 
-
240 #ifndef DECODE_SHARP_AC
-
241 #define DECODE_SHARP_AC _IR_ENABLE_DEFAULT_
-
242 #endif // DECODE_SHARP_AC
-
243 #ifndef SEND_SHARP_AC
-
244 #define SEND_SHARP_AC _IR_ENABLE_DEFAULT_
-
245 #endif // SEND_SHARP_AC
-
246 
-
247 #ifndef DECODE_DENON
-
248 #define DECODE_DENON _IR_ENABLE_DEFAULT_
-
249 #endif // DECODE_DENON
-
250 #ifndef SEND_DENON
-
251 #define SEND_DENON _IR_ENABLE_DEFAULT_
-
252 #endif // SEND_DENON
-
253 
-
254 #ifndef DECODE_KELVINATOR
-
255 #define DECODE_KELVINATOR _IR_ENABLE_DEFAULT_
-
256 #endif // DECODE_KELVINATOR
-
257 #ifndef SEND_KELVINATOR
-
258 #define SEND_KELVINATOR _IR_ENABLE_DEFAULT_
-
259 #endif // SEND_KELVINATOR
-
260 
-
261 #ifndef DECODE_MITSUBISHI_AC
-
262 #define DECODE_MITSUBISHI_AC _IR_ENABLE_DEFAULT_
-
263 #endif // DECODE_MITSUBISHI_AC
-
264 #ifndef SEND_MITSUBISHI_AC
-
265 #define SEND_MITSUBISHI_AC _IR_ENABLE_DEFAULT_
-
266 #endif // SEND_MITSUBISHI_AC
-
267 
-
268 #ifndef DECODE_MITSUBISHI136
-
269 #define DECODE_MITSUBISHI136 _IR_ENABLE_DEFAULT_
-
270 #endif // DECODE_MITSUBISHI136
-
271 #ifndef SEND_MITSUBISHI136
-
272 #define SEND_MITSUBISHI136 _IR_ENABLE_DEFAULT_
-
273 #endif // SEND_MITSUBISHI136
-
274 
-
275 #ifndef DECODE_MITSUBISHI112
-
276 #define DECODE_MITSUBISHI112 _IR_ENABLE_DEFAULT_
-
277 #endif // DECODE_MITSUBISHI112
-
278 #ifndef SEND_MITSUBISHI112
-
279 #define SEND_MITSUBISHI112 _IR_ENABLE_DEFAULT_
-
280 #endif // SEND_MITSUBISHI112
-
281 
-
282 #ifndef DECODE_FUJITSU_AC
-
283 #define DECODE_FUJITSU_AC _IR_ENABLE_DEFAULT_
-
284 #endif // DECODE_FUJITSU_AC
-
285 #ifndef SEND_FUJITSU_AC
-
286 #define SEND_FUJITSU_AC _IR_ENABLE_DEFAULT_
-
287 #endif // SEND_FUJITSU_AC
-
288 
-
289 #ifndef DECODE_INAX
-
290 #define DECODE_INAX _IR_ENABLE_DEFAULT_
-
291 #endif // DECODE_INAX
-
292 #ifndef SEND_INAX
-
293 #define SEND_INAX _IR_ENABLE_DEFAULT_
-
294 #endif // SEND_INAX
-
295 
-
296 #ifndef DECODE_DAIKIN
-
297 #define DECODE_DAIKIN _IR_ENABLE_DEFAULT_
-
298 #endif // DECODE_DAIKIN
-
299 #ifndef SEND_DAIKIN
-
300 #define SEND_DAIKIN _IR_ENABLE_DEFAULT_
-
301 #endif // SEND_DAIKIN
-
302 
-
303 #ifndef DECODE_COOLIX
-
304 #define DECODE_COOLIX _IR_ENABLE_DEFAULT_
-
305 #endif // DECODE_COOLIX
-
306 #ifndef SEND_COOLIX
-
307 #define SEND_COOLIX _IR_ENABLE_DEFAULT_
-
308 #endif // SEND_COOLIX
-
309 
-
310 #ifndef DECODE_GLOBALCACHE
-
311 #define DECODE_GLOBALCACHE false // Not applicable.
-
312 #endif // DECODE_GLOBALCACHE
-
313 #ifndef SEND_GLOBALCACHE
-
314 #define SEND_GLOBALCACHE _IR_ENABLE_DEFAULT_
-
315 #endif // SEND_GLOBALCACHE
-
316 
-
317 #ifndef DECODE_GOODWEATHER
-
318 #define DECODE_GOODWEATHER _IR_ENABLE_DEFAULT_
-
319 #endif // DECODE_GOODWEATHER
-
320 #ifndef SEND_GOODWEATHER
-
321 #define SEND_GOODWEATHER _IR_ENABLE_DEFAULT_
-
322 #endif // SEND_GOODWEATHER
-
323 
-
324 #ifndef DECODE_GREE
-
325 #define DECODE_GREE _IR_ENABLE_DEFAULT_
-
326 #endif // DECODE_GREE
-
327 #ifndef SEND_GREE
-
328 #define SEND_GREE _IR_ENABLE_DEFAULT_
-
329 #endif // SEND_GREE
-
330 
-
331 #ifndef DECODE_PRONTO
-
332 #define DECODE_PRONTO false // Not applicable.
-
333 #endif // DECODE_PRONTO
-
334 #ifndef SEND_PRONTO
-
335 #define SEND_PRONTO _IR_ENABLE_DEFAULT_
-
336 #endif // SEND_PRONTO
-
337 
-
338 #ifndef DECODE_ARGO
-
339 #define DECODE_ARGO _IR_ENABLE_DEFAULT_
-
340 #endif // DECODE_ARGO
-
341 #ifndef SEND_ARGO
-
342 #define SEND_ARGO _IR_ENABLE_DEFAULT_
-
343 #endif // SEND_ARGO
-
344 
-
345 #ifndef DECODE_TROTEC
-
346 #define DECODE_TROTEC _IR_ENABLE_DEFAULT_
-
347 #endif // DECODE_TROTEC
-
348 #ifndef SEND_TROTEC
-
349 #define SEND_TROTEC _IR_ENABLE_DEFAULT_
-
350 #endif // SEND_TROTEC
-
351 
-
352 #ifndef DECODE_NIKAI
-
353 #define DECODE_NIKAI _IR_ENABLE_DEFAULT_
-
354 #endif // DECODE_NIKAI
-
355 #ifndef SEND_NIKAI
-
356 #define SEND_NIKAI _IR_ENABLE_DEFAULT_
-
357 #endif // SEND_NIKAI
-
358 
-
359 #ifndef DECODE_TOSHIBA_AC
-
360 #define DECODE_TOSHIBA_AC _IR_ENABLE_DEFAULT_
-
361 #endif // DECODE_TOSHIBA_AC
-
362 #ifndef SEND_TOSHIBA_AC
-
363 #define SEND_TOSHIBA_AC _IR_ENABLE_DEFAULT_
-
364 #endif // SEND_TOSHIBA_AC
-
365 
-
366 #ifndef DECODE_MAGIQUEST
-
367 #define DECODE_MAGIQUEST _IR_ENABLE_DEFAULT_
-
368 #endif // DECODE_MAGIQUEST
-
369 #ifndef SEND_MAGIQUEST
-
370 #define SEND_MAGIQUEST _IR_ENABLE_DEFAULT_
-
371 #endif // SEND_MAGIQUEST
-
372 
-
373 #ifndef DECODE_MIDEA
-
374 #define DECODE_MIDEA _IR_ENABLE_DEFAULT_
-
375 #endif // DECODE_MIDEA
-
376 #ifndef SEND_MIDEA
-
377 #define SEND_MIDEA _IR_ENABLE_DEFAULT_
-
378 #endif // SEND_MIDEA
-
379 
-
380 #ifndef DECODE_MIDEA24
-
381 #define DECODE_MIDEA24 _IR_ENABLE_DEFAULT_
-
382 #endif // DECODE_MIDEA24
-
383 #ifndef SEND_MIDEA24
-
384 #define SEND_MIDEA24 _IR_ENABLE_DEFAULT_
-
385 #endif // SEND_MIDEA24
-
386 
-
387 #ifndef DECODE_LASERTAG
-
388 #define DECODE_LASERTAG _IR_ENABLE_DEFAULT_
-
389 #endif // DECODE_LASERTAG
-
390 #ifndef SEND_LASERTAG
-
391 #define SEND_LASERTAG _IR_ENABLE_DEFAULT_
-
392 #endif // SEND_LASERTAG
-
393 
-
394 #ifndef DECODE_CARRIER_AC
-
395 #define DECODE_CARRIER_AC _IR_ENABLE_DEFAULT_
-
396 #endif // DECODE_CARRIER_AC
-
397 #ifndef SEND_CARRIER_AC
-
398 #define SEND_CARRIER_AC _IR_ENABLE_DEFAULT_
-
399 #endif // SEND_CARRIER_AC
-
400 
-
401 #ifndef DECODE_CARRIER_AC40
-
402 #define DECODE_CARRIER_AC40 _IR_ENABLE_DEFAULT_
-
403 #endif // DECODE_CARRIER_AC40
-
404 #ifndef SEND_CARRIER_AC40
-
405 #define SEND_CARRIER_AC40 _IR_ENABLE_DEFAULT_
-
406 #endif // SEND_CARRIER_AC40
-
407 
-
408 #ifndef DECODE_CARRIER_AC64
-
409 #define DECODE_CARRIER_AC64 _IR_ENABLE_DEFAULT_
-
410 #endif // DECODE_CARRIER_AC64
-
411 #ifndef SEND_CARRIER_AC64
-
412 #define SEND_CARRIER_AC64 _IR_ENABLE_DEFAULT_
-
413 #endif // SEND_CARRIER_AC64
-
414 
-
415 #ifndef DECODE_HAIER_AC
-
416 #define DECODE_HAIER_AC _IR_ENABLE_DEFAULT_
-
417 #endif // DECODE_HAIER_AC
-
418 #ifndef SEND_HAIER_AC
-
419 #define SEND_HAIER_AC _IR_ENABLE_DEFAULT_
-
420 #endif // SEND_HAIER_AC
-
421 
-
422 #ifndef DECODE_HITACHI_AC
-
423 #define DECODE_HITACHI_AC _IR_ENABLE_DEFAULT_
-
424 #endif // DECODE_HITACHI_AC
-
425 #ifndef SEND_HITACHI_AC
-
426 #define SEND_HITACHI_AC _IR_ENABLE_DEFAULT_
-
427 #endif // SEND_HITACHI_AC
-
428 
-
429 #ifndef DECODE_HITACHI_AC1
-
430 #define DECODE_HITACHI_AC1 _IR_ENABLE_DEFAULT_
-
431 #endif // DECODE_HITACHI_AC1
-
432 #ifndef SEND_HITACHI_AC1
-
433 #define SEND_HITACHI_AC1 _IR_ENABLE_DEFAULT_
-
434 #endif // SEND_HITACHI_AC1
-
435 
-
436 #ifndef DECODE_HITACHI_AC2
-
437 #define DECODE_HITACHI_AC2 _IR_ENABLE_DEFAULT_
-
438 #endif // DECODE_HITACHI_AC2
-
439 #ifndef SEND_HITACHI_AC2
-
440 #define SEND_HITACHI_AC2 _IR_ENABLE_DEFAULT_
-
441 #endif // SEND_HITACHI_AC2
-
442 
-
443 #ifndef DECODE_HITACHI_AC3
-
444 #define DECODE_HITACHI_AC3 _IR_ENABLE_DEFAULT_
-
445 #endif // DECODE_HITACHI_AC3
-
446 #ifndef SEND_HITACHI_AC3
-
447 #define SEND_HITACHI_AC3 _IR_ENABLE_DEFAULT_
-
448 #endif // SEND_HITACHI_AC3
-
449 
-
450 #ifndef DECODE_HITACHI_AC344
-
451 #define DECODE_HITACHI_AC344 _IR_ENABLE_DEFAULT_
-
452 #endif // DECODE_HITACHI_AC344
-
453 #ifndef SEND_HITACHI_AC344
-
454 #define SEND_HITACHI_AC344 _IR_ENABLE_DEFAULT_
-
455 #endif // SEND_HITACHI_AC344
-
456 
-
457 #ifndef DECODE_HITACHI_AC424
-
458 #define DECODE_HITACHI_AC424 _IR_ENABLE_DEFAULT_
-
459 #endif // DECODE_HITACHI_AC424
-
460 #ifndef SEND_HITACHI_AC424
-
461 #define SEND_HITACHI_AC424 _IR_ENABLE_DEFAULT_
-
462 #endif // SEND_HITACHI_AC424
-
463 
-
464 #ifndef DECODE_GICABLE
-
465 #define DECODE_GICABLE _IR_ENABLE_DEFAULT_
-
466 #endif // DECODE_GICABLE
-
467 #ifndef SEND_GICABLE
-
468 #define SEND_GICABLE _IR_ENABLE_DEFAULT_
-
469 #endif // SEND_GICABLE
-
470 
-
471 #ifndef DECODE_HAIER_AC_YRW02
-
472 #define DECODE_HAIER_AC_YRW02 _IR_ENABLE_DEFAULT_
-
473 #endif // DECODE_HAIER_AC_YRW02
-
474 #ifndef SEND_HAIER_AC_YRW02
-
475 #define SEND_HAIER_AC_YRW02 _IR_ENABLE_DEFAULT_
-
476 #endif // SEND_HAIER_AC_YRW02
-
477 
-
478 #ifndef DECODE_WHIRLPOOL_AC
-
479 #define DECODE_WHIRLPOOL_AC _IR_ENABLE_DEFAULT_
-
480 #endif // DECODE_WHIRLPOOL_AC
-
481 #ifndef SEND_WHIRLPOOL_AC
-
482 #define SEND_WHIRLPOOL_AC _IR_ENABLE_DEFAULT_
-
483 #endif // SEND_WHIRLPOOL_AC
-
484 
-
485 #ifndef DECODE_LUTRON
-
486 #define DECODE_LUTRON _IR_ENABLE_DEFAULT_
-
487 #endif // DECODE_LUTRON
-
488 #ifndef SEND_LUTRON
-
489 #define SEND_LUTRON _IR_ENABLE_DEFAULT_
-
490 #endif // SEND_LUTRON
-
491 
-
492 #ifndef DECODE_ELECTRA_AC
-
493 #define DECODE_ELECTRA_AC _IR_ENABLE_DEFAULT_
-
494 #endif // DECODE_ELECTRA_AC
-
495 #ifndef SEND_ELECTRA_AC
-
496 #define SEND_ELECTRA_AC _IR_ENABLE_DEFAULT_
-
497 #endif // SEND_ELECTRA_AC
-
498 
-
499 #ifndef DECODE_PANASONIC_AC
-
500 #define DECODE_PANASONIC_AC _IR_ENABLE_DEFAULT_
-
501 #endif // DECODE_PANASONIC_AC
-
502 #ifndef SEND_PANASONIC_AC
-
503 #define SEND_PANASONIC_AC _IR_ENABLE_DEFAULT_
-
504 #endif // SEND_PANASONIC_AC
-
505 
-
506 #ifndef DECODE_PANASONIC_AC32
-
507 #define DECODE_PANASONIC_AC32 _IR_ENABLE_DEFAULT_
-
508 #endif // DECODE_PANASONIC_AC32
-
509 #ifndef SEND_PANASONIC_AC32
-
510 #define SEND_PANASONIC_AC32 _IR_ENABLE_DEFAULT_
-
511 #endif // SEND_PANASONIC_AC32
-
512 
-
513 #ifndef DECODE_MWM
-
514 #define DECODE_MWM _IR_ENABLE_DEFAULT_
-
515 #endif // DECODE_MWM
-
516 #ifndef SEND_MWM
-
517 #define SEND_MWM _IR_ENABLE_DEFAULT_
-
518 #endif // SEND_MWM
-
519 
-
520 #ifndef DECODE_PIONEER
-
521 #define DECODE_PIONEER _IR_ENABLE_DEFAULT_
-
522 #endif // DECODE_PIONEER
-
523 #ifndef SEND_PIONEER
-
524 #define SEND_PIONEER _IR_ENABLE_DEFAULT_
-
525 #endif // SEND_PIONEER
-
526 
-
527 #ifndef DECODE_DAIKIN2
-
528 #define DECODE_DAIKIN2 _IR_ENABLE_DEFAULT_
-
529 #endif // DECODE_DAIKIN2
-
530 #ifndef SEND_DAIKIN2
-
531 #define SEND_DAIKIN2 _IR_ENABLE_DEFAULT_
-
532 #endif // SEND_DAIKIN2
-
533 
-
534 #ifndef DECODE_VESTEL_AC
-
535 #define DECODE_VESTEL_AC _IR_ENABLE_DEFAULT_
-
536 #endif // DECODE_VESTEL_AC
-
537 #ifndef SEND_VESTEL_AC
-
538 #define SEND_VESTEL_AC _IR_ENABLE_DEFAULT_
-
539 #endif // SEND_VESTEL_AC
-
540 
-
541 #ifndef DECODE_TECO
-
542 #define DECODE_TECO _IR_ENABLE_DEFAULT_
-
543 #endif // DECODE_TECO
-
544 #ifndef SEND_TECO
-
545 #define SEND_TECO _IR_ENABLE_DEFAULT_
-
546 #endif // SEND_TECO
-
547 
-
548 #ifndef DECODE_TCL112AC
-
549 #define DECODE_TCL112AC _IR_ENABLE_DEFAULT_
-
550 #endif // DECODE_TCL112AC
-
551 #ifndef SEND_TCL112AC
-
552 #define SEND_TCL112AC _IR_ENABLE_DEFAULT_
-
553 #endif // SEND_TCL112AC
-
554 
-
555 #ifndef DECODE_LEGOPF
-
556 #define DECODE_LEGOPF _IR_ENABLE_DEFAULT_
-
557 #endif // DECODE_LEGOPF
-
558 #ifndef SEND_LEGOPF
-
559 #define SEND_LEGOPF _IR_ENABLE_DEFAULT_
-
560 #endif // SEND_LEGOPF
-
561 
-
562 #ifndef DECODE_MITSUBISHIHEAVY
-
563 #define DECODE_MITSUBISHIHEAVY _IR_ENABLE_DEFAULT_
-
564 #endif // DECODE_MITSUBISHIHEAVY
-
565 #ifndef SEND_MITSUBISHIHEAVY
-
566 #define SEND_MITSUBISHIHEAVY _IR_ENABLE_DEFAULT_
-
567 #endif // SEND_MITSUBISHIHEAVY
-
568 
-
569 #ifndef DECODE_DAIKIN216
-
570 #define DECODE_DAIKIN216 _IR_ENABLE_DEFAULT_
-
571 #endif // DECODE_DAIKIN216
-
572 #ifndef SEND_DAIKIN216
-
573 #define SEND_DAIKIN216 _IR_ENABLE_DEFAULT_
-
574 #endif // SEND_DAIKIN216
-
575 
-
576 #ifndef DECODE_DAIKIN160
-
577 #define DECODE_DAIKIN160 _IR_ENABLE_DEFAULT_
-
578 #endif // DECODE_DAIKIN160
-
579 #ifndef SEND_DAIKIN160
-
580 #define SEND_DAIKIN160 _IR_ENABLE_DEFAULT_
-
581 #endif // SEND_DAIKIN160
-
582 
-
583 #ifndef DECODE_NEOCLIMA
-
584 #define DECODE_NEOCLIMA _IR_ENABLE_DEFAULT_
-
585 #endif // DECODE_NEOCLIMA
-
586 #ifndef SEND_NEOCLIMA
-
587 #define SEND_NEOCLIMA _IR_ENABLE_DEFAULT_
-
588 #endif // SEND_NEOCLIMA
-
589 
-
590 #ifndef DECODE_DAIKIN176
-
591 #define DECODE_DAIKIN176 _IR_ENABLE_DEFAULT_
-
592 #endif // DECODE_DAIKIN176
-
593 #ifndef SEND_DAIKIN176
-
594 #define SEND_DAIKIN176 _IR_ENABLE_DEFAULT_
-
595 #endif // SEND_DAIKIN176
-
596 
-
597 #ifndef DECODE_DAIKIN128
-
598 #define DECODE_DAIKIN128 _IR_ENABLE_DEFAULT_
-
599 #endif // DECODE_DAIKIN128
-
600 #ifndef SEND_DAIKIN128
-
601 #define SEND_DAIKIN128 _IR_ENABLE_DEFAULT_
-
602 #endif // SEND_DAIKIN128
-
603 
-
604 #ifndef DECODE_AMCOR
-
605 #define DECODE_AMCOR _IR_ENABLE_DEFAULT_
-
606 #endif // DECODE_AMCOR
-
607 #ifndef SEND_AMCOR
-
608 #define SEND_AMCOR _IR_ENABLE_DEFAULT_
-
609 #endif // SEND_AMCOR
-
610 
-
611 #ifndef DECODE_DAIKIN152
-
612 #define DECODE_DAIKIN152 _IR_ENABLE_DEFAULT_
-
613 #endif // DECODE_DAIKIN152
-
614 #ifndef SEND_DAIKIN152
-
615 #define SEND_DAIKIN152 _IR_ENABLE_DEFAULT_
-
616 #endif // SEND_DAIKIN152
-
617 
-
618 #ifndef DECODE_EPSON
-
619 #define DECODE_EPSON _IR_ENABLE_DEFAULT_
-
620 #endif // DECODE_EPSON
-
621 #ifndef SEND_EPSON
-
622 #define SEND_EPSON _IR_ENABLE_DEFAULT_
-
623 #endif // SEND_EPSON
-
624 
-
625 #ifndef DECODE_SYMPHONY
-
626 #define DECODE_SYMPHONY _IR_ENABLE_DEFAULT_
-
627 #endif // DECODE_SYMPHONY
-
628 #ifndef SEND_SYMPHONY
-
629 #define SEND_SYMPHONY _IR_ENABLE_DEFAULT_
-
630 #endif // SEND_SYMPHONY
-
631 
-
632 #ifndef DECODE_DAIKIN64
-
633 #define DECODE_DAIKIN64 _IR_ENABLE_DEFAULT_
-
634 #endif // DECODE_DAIKIN64
-
635 #ifndef SEND_DAIKIN64
-
636 #define SEND_DAIKIN64 _IR_ENABLE_DEFAULT_
-
637 #endif // SEND_DAIKIN64
-
638 
-
639 #ifndef DECODE_AIRWELL
-
640 #define DECODE_AIRWELL _IR_ENABLE_DEFAULT_
-
641 #endif // DECODE_AIRWELL
-
642 #ifndef SEND_AIRWELL
-
643 #define SEND_AIRWELL _IR_ENABLE_DEFAULT_
-
644 #endif // SEND_AIRWELL
-
645 
-
646 #ifndef DECODE_DELONGHI_AC
-
647 #define DECODE_DELONGHI_AC _IR_ENABLE_DEFAULT_
-
648 #endif // DECODE_DELONGHI_AC
-
649 #ifndef SEND_DELONGHI_AC
-
650 #define SEND_DELONGHI_AC _IR_ENABLE_DEFAULT_
-
651 #endif // SEND_DELONGHI_AC
-
652 
-
653 #ifndef DECODE_DOSHISHA
-
654 #define DECODE_DOSHISHA _IR_ENABLE_DEFAULT_
-
655 #endif // DECODE_DOSHISHA
-
656 #ifndef SEND_DOSHISHA
-
657 #define SEND_DOSHISHA _IR_ENABLE_DEFAULT_
-
658 #endif // SEND_DOSHISHA
-
659 
-
660 #ifndef DECODE_MULTIBRACKETS
-
661 #define DECODE_MULTIBRACKETS _IR_ENABLE_DEFAULT_
-
662 #endif // DECODE_MULTIBRACKETS
-
663 #ifndef SEND_MULTIBRACKETS
-
664 #define SEND_MULTIBRACKETS _IR_ENABLE_DEFAULT_
-
665 #endif // SEND_MULTIBRACKETS
-
666 
-
667 #ifndef DECODE_TECHNIBEL_AC
-
668 #define DECODE_TECHNIBEL_AC _IR_ENABLE_DEFAULT_
-
669 #endif // DECODE_TECHNIBEL_AC
-
670 #ifndef SEND_TECHNIBEL_AC
-
671 #define SEND_TECHNIBEL_AC _IR_ENABLE_DEFAULT_
-
672 #endif // SEND_TECHNIBEL_AC
-
673 
-
674 #ifndef DECODE_CORONA_AC
-
675 #define DECODE_CORONA_AC _IR_ENABLE_DEFAULT_
-
676 #endif // DECODE_CORONA_AC
-
677 #ifndef SEND_CORONA_AC
-
678 #define SEND_CORONA_AC _IR_ENABLE_DEFAULT_
-
679 #endif // SEND_CORONA_AC
-
680 
-
681 #ifndef DECODE_ZEPEAL
-
682 #define DECODE_ZEPEAL _IR_ENABLE_DEFAULT_
-
683 #endif // DECODE_ZEPEAL
-
684 #ifndef SEND_ZEPEAL
-
685 #define SEND_ZEPEAL _IR_ENABLE_DEFAULT_
-
686 #endif // SEND_ZEPEAL
-
687 
-
688 #ifndef DECODE_VOLTAS
-
689 #define DECODE_VOLTAS _IR_ENABLE_DEFAULT_
-
690 #endif // DECODE_VOLTAS
-
691 #ifndef SEND_VOLTAS
-
692 #define SEND_VOLTAS _IR_ENABLE_DEFAULT_
-
693 #endif // SEND_VOLTAS
-
694 
-
695 #ifndef DECODE_METZ
-
696 #define DECODE_METZ _IR_ENABLE_DEFAULT_
-
697 #endif // DECODE_METZ
-
698 #ifndef SEND_METZ
-
699 #define SEND_METZ _IR_ENABLE_DEFAULT_
-
700 #endif // SEND_METZ
-
701 
-
702 #ifndef DECODE_TRANSCOLD
-
703 #define DECODE_TRANSCOLD _IR_ENABLE_DEFAULT_
-
704 #endif // DECODE_TRANSCOLD
-
705 #ifndef SEND_TRANSCOLD
-
706 #define SEND_TRANSCOLD _IR_ENABLE_DEFAULT_
-
707 #endif // SEND_TRANSCOLD
-
708 
-
709 #ifndef DECODE_MIRAGE
-
710 #define DECODE_MIRAGE _IR_ENABLE_DEFAULT_
-
711 #endif // DECODE_MIRAGE
-
712 #ifndef SEND_MIRAGE
-
713 #define SEND_MIRAGE _IR_ENABLE_DEFAULT_
-
714 #endif // SEND_MIRAGE
-
715 
-
716 #ifndef DECODE_ELITESCREENS
-
717 #define DECODE_ELITESCREENS _IR_ENABLE_DEFAULT_
-
718 #endif // DECODE_ELITESCREENS
-
719 #ifndef SEND_ELITESCREENS
-
720 #define SEND_ELITESCREENS _IR_ENABLE_DEFAULT_
-
721 #endif // SEND_ELITESCREENS
-
722 
-
723 #ifndef DECODE_MILESTAG2
-
724 #define DECODE_MILESTAG2 _IR_ENABLE_DEFAULT_
-
725 #endif // DECODE_MILESTAG2
-
726 #ifndef SEND_MILESTAG2
-
727 #define SEND_MILESTAG2 _IR_ENABLE_DEFAULT_
-
728 #endif // SEND_MILESTAG2
-
729 
-
730 #ifndef DECODE_ECOCLIM
-
731 #define DECODE_ECOCLIM _IR_ENABLE_DEFAULT_
-
732 #endif // DECODE_ECOCLIM
-
733 #ifndef SEND_ECOCLIM
-
734 #define SEND_ECOCLIM _IR_ENABLE_DEFAULT_
-
735 #endif // SEND_ECOCLIM
-
736 
-
737 #ifndef DECODE_XMP
-
738 #define DECODE_XMP _IR_ENABLE_DEFAULT_
-
739 #endif // DECODE_XMP
-
740 #ifndef SEND_XMP
-
741 #define SEND_XMP _IR_ENABLE_DEFAULT_
-
742 #endif // SEND_XMP
-
743 
-
744 #ifndef DECODE_TRUMA
-
745 #define DECODE_TRUMA _IR_ENABLE_DEFAULT_
-
746 #endif // DECODE_TRUMA
-
747 #ifndef SEND_TRUMA
-
748 #define SEND_TRUMA _IR_ENABLE_DEFAULT_
-
749 #endif // SEND_TRUMA
-
750 
-
751 #ifndef DECODE_HAIER_AC176
-
752 #define DECODE_HAIER_AC176 _IR_ENABLE_DEFAULT_
-
753 #endif // DECODE_HAIER_AC176
-
754 #ifndef SEND_HAIER_AC176
-
755 #define SEND_HAIER_AC176 _IR_ENABLE_DEFAULT_
-
756 #endif // SEND_HAIER_AC176
-
757 
-
758 #ifndef DECODE_TEKNOPOINT
-
759 #define DECODE_TEKNOPOINT _IR_ENABLE_DEFAULT_
-
760 #endif // DECODE_TEKNOPOINT
-
761 #ifndef SEND_TEKNOPOINT
-
762 #define SEND_TEKNOPOINT _IR_ENABLE_DEFAULT_
-
763 #endif // SEND_TEKNOPOINT
-
764 
-
765 #ifndef DECODE_KELON
-
766 #define DECODE_KELON _IR_ENABLE_DEFAULT_
-
767 #endif // DECODE_KELON
-
768 #ifndef SEND_KELON
-
769 #define SEND_KELON _IR_ENABLE_DEFAULT_
-
770 #endif // SEND_KELON
-
771 
-
772 #if (DECODE_ARGO || DECODE_DAIKIN || DECODE_FUJITSU_AC || DECODE_GREE || \
-
773  DECODE_KELVINATOR || DECODE_MITSUBISHI_AC || DECODE_TOSHIBA_AC || \
-
774  DECODE_TROTEC || DECODE_HAIER_AC || DECODE_HITACHI_AC || \
-
775  DECODE_HITACHI_AC1 || DECODE_HITACHI_AC2 || DECODE_HAIER_AC_YRW02 || \
-
776  DECODE_WHIRLPOOL_AC || DECODE_SAMSUNG_AC || DECODE_ELECTRA_AC || \
-
777  DECODE_PANASONIC_AC || DECODE_MWM || DECODE_DAIKIN2 || \
-
778  DECODE_VESTEL_AC || DECODE_TCL112AC || DECODE_MITSUBISHIHEAVY || \
-
779  DECODE_DAIKIN216 || DECODE_SHARP_AC || DECODE_DAIKIN160 || \
-
780  DECODE_NEOCLIMA || DECODE_DAIKIN176 || DECODE_DAIKIN128 || \
-
781  DECODE_AMCOR || DECODE_DAIKIN152 || DECODE_MITSUBISHI136 || \
-
782  DECODE_MITSUBISHI112 || DECODE_HITACHI_AC424 || DECODE_HITACHI_AC3 || \
-
783  DECODE_HITACHI_AC344 || DECODE_CORONA_AC || DECODE_SANYO_AC || \
-
784  DECODE_VOLTAS || DECODE_MIRAGE || DECODE_HAIER_AC176 || \
-
785  DECODE_TEKNOPOINT || DECODE_KELON || \
-
786  false)
-
787  // Add any DECODE to the above if it uses result->state (see kStateSizeMax)
-
788  // you might also want to add the protocol to hasACState function
-
789 #define DECODE_AC true // We need some common infrastructure for decoding A/Cs.
-
790 #else
-
791 #define DECODE_AC false // We don't need that infrastructure.
-
792 #endif
-
793 
-
794 // Use millisecond 'delay()' calls where we can to avoid tripping the WDT.
-
795 // Note: If you plan to send IR messages in the callbacks of the AsyncWebserver
-
796 // library, you need to set ALLOW_DELAY_CALLS to false.
-
797 // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/430
-
798 #ifndef ALLOW_DELAY_CALLS
-
799 #define ALLOW_DELAY_CALLS true
-
800 #endif // ALLOW_DELAY_CALLS
-
801 
-
802 // Enable a run-time settable high-pass filter on captured data **before**
-
803 // trying any protocol decoding.
-
804 // i.e. Try to remove/merge any really short pulses detected in the raw data.
-
805 // Note: Even when this option is enabled, it is _off_ by default, and requires
-
806 // a user who knows what they are doing to enable it.
-
807 // The option to disable this feature is here if your project is _really_
-
808 // tight on resources. i.e. Saves a small handful of bytes and cpu time.
-
809 // WARNING: If you use this feature at runtime, you can no longer trust the
-
810 // **raw** data captured. It will now have been slightly **cooked**!
-
811 // DANGER: If you set the `noise_floor` value too high, it **WILL** break
-
812 // decoding of some protocols. You have been warned. Here Be Dragons!
-
813 //
-
814 // See: `irrecv::decode()` in IRrecv.cpp for more info.
-
815 #ifndef ENABLE_NOISE_FILTER_OPTION
-
816 #define ENABLE_NOISE_FILTER_OPTION true
-
817 #endif // ENABLE_NOISE_FILTER_OPTION
-
818 
- -
824  UNKNOWN = -1,
-
825  UNUSED = 0,
- - - - -
830  PANASONIC, // (5)
- - - - -
835  LG, // (10)
- - - - -
840  COOLIX, // (15)
- - - - -
845  MITSUBISHI_AC, // (20)
- - - - -
850  PRONTO, // Technically not a protocol, but an encoding. (25)
- - - - -
855  RAW, // Technically not a protocol, but an encoding. (30)
-
856  GLOBALCACHE, // Technically not a protocol, but an encoding.
- - - -
860  MAGIQUEST, // (35)
- - - - -
865  HITACHI_AC, // (40)
- - - - -
870  WHIRLPOOL_AC, // (45)
- - - - -
875  PIONEER, // (50)
- - - - -
880  TECO, // (55)
- - - - - - - - - -
890  DAIKIN160, // 65
- - - - -
895  DAIKIN152, // 70
- - - - -
900  EPSON, // 75
- - - - -
905  DELONGHI_AC, // 80
- - - - - - - - - -
915  VOLTAS, // 90
- - - - - - - - - -
925  TRUMA, // 100
- - - -
929  // Add new entries before this one, and update it to point to the last entry.
- -
931 };
-
932 
-
933 // Message lengths & required repeat values
-
934 const uint16_t kNoRepeat = 0;
-
935 const uint16_t kSingleRepeat = 1;
-
936 
-
937 const uint16_t kAirwellBits = 34;
-
938 const uint16_t kAirwellMinRepeats = 2;
-
939 const uint16_t kAiwaRcT501Bits = 15;
- -
941 const uint16_t kAlokaBits = 32;
-
942 const uint16_t kAmcorStateLength = 8;
-
943 const uint16_t kAmcorBits = kAmcorStateLength * 8;
- -
945 const uint16_t kArgoStateLength = 12;
-
946 const uint16_t kArgoBits = kArgoStateLength * 8;
-
947 const uint16_t kArgoDefaultRepeat = kNoRepeat;
-
948 const uint16_t kCoolixBits = 24;
- -
950 const uint16_t kCarrierAcBits = 32;
- -
952 const uint16_t kCarrierAc40Bits = 40;
-
953 const uint16_t kCarrierAc40MinRepeat = 2;
-
954 const uint16_t kCarrierAc64Bits = 64;
- -
956 const uint16_t kCoronaAcStateLengthShort = 7;
- - -
959 const uint16_t kCoronaAcBits = kCoronaAcStateLength * 8;
-
960 const uint16_t kDaikinStateLength = 35;
-
961 const uint16_t kDaikinBits = kDaikinStateLength * 8;
- - - -
965 const uint16_t kDaikin2StateLength = 39;
-
966 const uint16_t kDaikin2Bits = kDaikin2StateLength * 8;
- -
968 const uint16_t kDaikin64Bits = 64;
- -
970 const uint16_t kDaikin160StateLength = 20;
- - -
973 const uint16_t kDaikin128StateLength = 16;
- - -
976 const uint16_t kDaikin152StateLength = 19;
- - -
979 const uint16_t kDaikin176StateLength = 22;
- - -
982 const uint16_t kDaikin216StateLength = 27;
- - -
985 const uint16_t kDelonghiAcBits = 64;
- -
987 const uint16_t kTechnibelAcBits = 56;
- -
989 const uint16_t kDenonBits = 15;
-
990 const uint16_t kDenon48Bits = 48;
-
991 const uint16_t kDenonLegacyBits = 14;
-
992 const uint16_t kDishBits = 16;
-
993 const uint16_t kDishMinRepeat = 3;
-
994 const uint16_t kDoshishaBits = 40;
-
995 const uint16_t kEcoclimBits = 56;
-
996 const uint16_t kEcoclimShortBits = 15;
-
997 const uint16_t kEpsonBits = 32;
-
998 const uint16_t kEpsonMinRepeat = 2;
-
999 const uint16_t kElectraAcStateLength = 13;
- - -
1002 const uint16_t kEliteScreensBits = 32;
- - -
1005 const uint16_t kFujitsuAcStateLength = 16;
-
1006 const uint16_t kFujitsuAcStateLengthShort = 7;
- - -
1009 const uint16_t kGicableBits = 16;
- -
1011 const uint16_t kGoodweatherBits = 48;
- -
1013 const uint16_t kGreeStateLength = 8;
-
1014 const uint16_t kGreeBits = kGreeStateLength * 8;
- -
1016 const uint16_t kHaierACStateLength = 9;
-
1017 const uint16_t kHaierACBits = kHaierACStateLength * 8;
- -
1019 const uint16_t kHaierACYRW02StateLength = 14;
- - -
1022 const uint16_t kHaierAC176StateLength = 22;
- - -
1025 const uint16_t kHitachiAcStateLength = 28;
- - -
1028 const uint16_t kHitachiAc1StateLength = 13;
- -
1030 const uint16_t kHitachiAc2StateLength = 53;
- -
1032 const uint16_t kHitachiAc3StateLength = 27;
- -
1034 const uint16_t kHitachiAc3MinStateLength = 15;
- -
1036 const uint16_t kHitachiAc344StateLength = 43;
- -
1038 const uint16_t kHitachiAc424StateLength = 53;
- -
1040 const uint16_t kInaxBits = 24;
- -
1042 const uint16_t kJvcBits = 16;
-
1043 const uint16_t kKelonBits = 48;
-
1044 const uint16_t kKelvinatorStateLength = 16;
- - -
1047 const uint16_t kLasertagBits = 13;
- -
1049 const uint16_t kLegoPfBits = 16;
-
1050 const uint16_t kLegoPfMinRepeat = kNoRepeat;
-
1051 const uint16_t kLgBits = 28;
-
1052 const uint16_t kLg32Bits = 32;
-
1053 const uint16_t kLgDefaultRepeat = kNoRepeat;
-
1054 const uint16_t kLutronBits = 35;
-
1055 const uint16_t kMagiquestBits = 56;
-
1056 const uint16_t kMetzBits = 19;
-
1057 const uint16_t kMetzMinRepeat = kNoRepeat;
-
1058 const uint16_t kMideaBits = 48;
-
1059 const uint16_t kMideaMinRepeat = kNoRepeat;
-
1060 const uint16_t kMidea24Bits = 24;
- -
1062 const uint16_t kMirageStateLength = 15;
-
1063 const uint16_t kMirageBits = kMirageStateLength * 8;
-
1064 const uint16_t kMirageMinRepeat = kNoRepeat;
-
1065 const uint16_t kMitsubishiBits = 16;
-
1066 // TODO(anyone): Verify that the Mitsubishi repeat is really needed.
-
1067 // Based on marcosamarinho's code.
- -
1069 const uint16_t kMitsubishiACStateLength = 18;
- - -
1072 const uint16_t kMitsubishi136StateLength = 17;
- - -
1075 const uint16_t kMitsubishi112StateLength = 14;
- - -
1078 const uint16_t kMitsubishiHeavy88StateLength = 11;
- - - - - -
1084 const uint16_t kMultibracketsBits = 8;
- -
1086 const uint16_t kNikaiBits = 24;
-
1087 const uint16_t kNECBits = 32;
-
1088 const uint16_t kNeoclimaStateLength = 12;
- - -
1091 const uint16_t kPanasonicBits = 48;
-
1092 const uint32_t kPanasonicManufacturer = 0x4004;
-
1093 const uint16_t kPanasonicAcStateLength = 27;
-
1094 const uint16_t kPanasonicAcStateShortLength = 16;
- - - -
1098 const uint16_t kPanasonicAc32Bits = 32;
-
1099 const uint16_t kPioneerBits = 64;
-
1100 const uint16_t kProntoMinLength = 6;
-
1101 const uint16_t kRC5RawBits = 14;
-
1102 const uint16_t kRC5Bits = kRC5RawBits - 2;
-
1103 const uint16_t kRC5XBits = kRC5RawBits - 1;
-
1104 const uint16_t kRC6Mode0Bits = 20; // Excludes the 'start' bit.
-
1105 const uint16_t kRC6_36Bits = 36; // Excludes the 'start' bit.
-
1106 const uint16_t kRCMMBits = 24;
-
1107 const uint16_t kSamsungBits = 32;
-
1108 const uint16_t kSamsung36Bits = 36;
-
1109 const uint16_t kSamsungAcStateLength = 14;
- -
1111 const uint16_t kSamsungAcExtendedStateLength = 21;
- - -
1114 const uint16_t kSanyoAcStateLength = 9;
-
1115 const uint16_t kSanyoAcBits = kSanyoAcStateLength * 8;
-
1116 const uint16_t kSanyoSA8650BBits = 12;
-
1117 const uint16_t kSanyoLC7461AddressBits = 13;
-
1118 const uint16_t kSanyoLC7461CommandBits = 8;
- - -
1121 const uint8_t kSharpAddressBits = 5;
-
1122 const uint8_t kSharpCommandBits = 8;
-
1123 const uint16_t kSharpBits = kSharpAddressBits + kSharpCommandBits + 2; // 15
-
1124 const uint16_t kSharpAcStateLength = 13;
-
1125 const uint16_t kSharpAcBits = kSharpAcStateLength * 8; // 104
- -
1127 const uint8_t kSherwoodBits = kNECBits;
- -
1129 const uint16_t kSony12Bits = 12;
-
1130 const uint16_t kSony15Bits = 15;
-
1131 const uint16_t kSony20Bits = 20;
-
1132 const uint16_t kSonyMinBits = 12;
-
1133 const uint16_t kSonyMinRepeat = 2;
-
1134 const uint16_t kSymphonyBits = 12;
-
1135 const uint16_t kSymphonyDefaultRepeat = 3;
-
1136 const uint16_t kTcl112AcStateLength = 14;
- - -
1139 const uint16_t kTecoBits = 35;
- -
1141 const uint16_t kTeknopointStateLength = 14;
- -
1143 const uint16_t kToshibaACStateLength = 9;
- - - - - - -
1150 const uint16_t kTranscoldBits = 24;
- -
1152 const uint16_t kTrotecStateLength = 9;
-
1153 const uint16_t kTrotecBits = kTrotecStateLength * 8;
- -
1155 const uint16_t kTrumaBits = 56;
-
1156 const uint16_t kWhirlpoolAcStateLength = 21;
- - -
1159 const uint16_t kWhynterBits = 32;
-
1160 const uint8_t kVestelAcBits = 56;
-
1161 const uint16_t kXmpBits = 64;
-
1162 const uint16_t kZepealBits = 16;
-
1163 const uint16_t kZepealMinRepeat = 4;
-
1164 const uint16_t kVoltasBits = 80;
-
1165 const uint16_t kVoltasStateLength = 10;
-
1166 const uint16_t kMilesTag2ShotBits = 14;
-
1167 const uint16_t kMilesTag2MsgBits = 24;
-
1168 const uint16_t kMilesMinRepeat = 0;
-
1169 
-
1170 
-
1171 // Legacy defines. (Deprecated)
-
1172 #define AIWA_RC_T501_BITS kAiwaRcT501Bits
-
1173 #define ARGO_COMMAND_LENGTH kArgoStateLength
-
1174 #define COOLIX_BITS kCoolixBits
-
1175 #define CARRIER_AC_BITS kCarrierAcBits
-
1176 #define DAIKIN_COMMAND_LENGTH kDaikinStateLength
-
1177 #define DENON_BITS kDenonBits
-
1178 #define DENON_48_BITS kDenon48Bits
-
1179 #define DENON_LEGACY_BITS kDenonLegacyBits
-
1180 #define DISH_BITS kDishBits
-
1181 #define FUJITSU_AC_MIN_REPEAT kFujitsuAcMinRepeat
-
1182 #define FUJITSU_AC_STATE_LENGTH kFujitsuAcStateLength
-
1183 #define FUJITSU_AC_STATE_LENGTH_SHORT kFujitsuAcStateLengthShort
-
1184 #define FUJITSU_AC_BITS kFujitsuAcBits
-
1185 #define FUJITSU_AC_MIN_BITS kFujitsuAcMinBits
-
1186 #define GICABLE_BITS kGicableBits
-
1187 #define GREE_STATE_LENGTH kGreeStateLength
-
1188 #define HAIER_AC_STATE_LENGTH kHaierACStateLength
-
1189 #define HAIER_AC_YRW02_STATE_LENGTH kHaierACYRW02StateLength
-
1190 #define HITACHI_AC_STATE_LENGTH kHitachiAcStateLength
-
1191 #define HITACHI_AC_BITS kHitachiAcBits
-
1192 #define HITACHI_AC1_STATE_LENGTH kHitachiAc1StateLength
-
1193 #define HITACHI_AC1_BITS kHitachiAc1Bits
-
1194 #define HITACHI_AC2_STATE_LENGTH kHitachiAc2StateLength
-
1195 #define HITACHI_AC2_BITS kHitachiAc2Bits
-
1196 #define JVC_BITS kJvcBits
-
1197 #define KELVINATOR_STATE_LENGTH kKelvinatorStateLength
-
1198 #define LASERTAG_BITS kLasertagBits
-
1199 #define LG_BITS kLgBits
-
1200 #define LG32_BITS kLg32Bits
-
1201 #define MAGIQUEST_BITS kMagiquestBits
-
1202 #define MIDEA_BITS kMideaBits
-
1203 #define MITSUBISHI_BITS kMitsubishiBits
-
1204 #define MITSUBISHI_AC_STATE_LENGTH kMitsubishiACStateLength
-
1205 #define NEC_BITS kNECBits
-
1206 #define NIKAI_BITS kNikaiBits
-
1207 #define PANASONIC_BITS kPanasonicBits
-
1208 #define RC5_BITS kRC5Bits
-
1209 #define RC5X_BITS kRC5XBits
-
1210 #define RC6_MODE0_BITS kRC6Mode0Bits
-
1211 #define RC6_36_BITS kRC6_36Bits
-
1212 #define RCMM_BITS kRCMMBits
-
1213 #define SANYO_LC7461_BITS kSanyoLC7461Bits
-
1214 #define SAMSUNG_BITS kSamsungBits
-
1215 #define SANYO_SA8650B_BITS kSanyoSA8650BBits
-
1216 #define SHARP_BITS kSharpBits
-
1217 #define SHERWOOD_BITS kSherwoodBits
-
1218 #define SONY_12_BITS kSony12Bits
-
1219 #define SONY_15_BITS kSony15Bits
-
1220 #define SONY_20_BITS kSony20Bits
-
1221 #define TOSHIBA_AC_STATE_LENGTH kToshibaACStateLength
-
1222 #define TROTEC_COMMAND_LENGTH kTrotecStateLength
-
1223 #define WHYNTER_BITS kWhynterBits
-
1224 
-
1225 // Turn on Debugging information by uncommenting the following line.
-
1226 // #define DEBUG 1
-
1227 
-
1228 #ifdef DEBUG
-
1229 #ifdef UNIT_TEST
-
1230 #define DPRINT(x) do { std::cout << x; } while (0)
-
1231 #define DPRINTLN(x) do { std::cout << x << std::endl; } while (0)
-
1232 #endif // UNIT_TEST
-
1233 #ifdef ARDUINO
-
1234 #define DPRINT(x) do { Serial.print(x); } while (0)
-
1235 #define DPRINTLN(x) do { Serial.println(x); } while (0)
-
1236 #endif // ARDUINO
-
1237 #else // DEBUG
-
1238 #define DPRINT(x)
-
1239 #define DPRINTLN(x)
-
1240 #endif // DEBUG
-
1241 
-
1242 #ifdef UNIT_TEST
-
1243 #ifndef F
-
1244 // Create a no-op F() macro so the code base still compiles outside of the
-
1245 // Arduino framework. Thus we can safely use the Arduino 'F()' macro through-out
-
1246 // the code base. That macro stores constants in Flash (PROGMEM) memory.
-
1247 // See: https://github.com/crankyoldgit/IRremoteESP8266/issues/667
-
1248 #define F(x) x
-
1249 #endif // F
-
1250 typedef std::string String;
-
1251 #endif // UNIT_TEST
-
1252 
-
1253 #endif // IRREMOTEESP8266_H_
-
-
@ ARGO
Definition: IRremoteESP8266.h:852
-
const uint16_t kDaikin152DefaultRepeat
Definition: IRremoteESP8266.h:978
-
const uint16_t kSanyoSA8650BBits
Definition: IRremoteESP8266.h:1116
-
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:985
-
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:1021
-
const uint16_t kHitachiAc3MinStateLength
Definition: IRremoteESP8266.h:1034
-
@ SANYO_AC
Definition: IRremoteESP8266.h:914
-
const uint16_t kMirageBits
Definition: IRremoteESP8266.h:1063
-
const uint16_t kMitsubishiACStateLength
Definition: IRremoteESP8266.h:1069
-
const uint16_t kMitsubishiHeavy152StateLength
Definition: IRremoteESP8266.h:1081
-
const uint16_t kAirwellMinRepeats
Definition: IRremoteESP8266.h:938
-
const uint16_t kMideaMinRepeat
Definition: IRremoteESP8266.h:1059
-
const uint16_t kMilesMinRepeat
Definition: IRremoteESP8266.h:1168
-
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1009
-
const uint16_t kGreeStateLength
Definition: IRremoteESP8266.h:1013
-
@ DISH
Definition: IRremoteESP8266.h:838
-
@ UNUSED
Definition: IRremoteESP8266.h:825
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:823
-
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:950
-
const uint16_t kDenonLegacyBits
Definition: IRremoteESP8266.h:991
-
@ SHERWOOD
Definition: IRremoteESP8266.h:844
-
const uint16_t kSingleRepeat
Definition: IRremoteESP8266.h:935
-
const uint16_t kDaikin2DefaultRepeat
Definition: IRremoteESP8266.h:967
-
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1084
-
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:1125
-
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1159
-
@ CARRIER_AC
Definition: IRremoteESP8266.h:862
-
@ TOSHIBA_AC
Definition: IRremoteESP8266.h:857
-
@ AIRWELL
Definition: IRremoteESP8266.h:904
-
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:937
-
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:1018
-
@ PRONTO
Definition: IRremoteESP8266.h:850
-
const uint16_t kTrotecDefaultRepeat
Definition: IRremoteESP8266.h:1154
-
const uint16_t kFujitsuAcMinRepeat
Definition: IRremoteESP8266.h:1004
-
const uint16_t kCoronaAcBits
Definition: IRremoteESP8266.h:959
-
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:1070
-
const uint16_t kMitsubishi136MinRepeat
Definition: IRremoteESP8266.h:1074
-
@ UNKNOWN
Definition: IRremoteESP8266.h:824
-
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:987
-
const uint16_t kArgoDefaultRepeat
Definition: IRremoteESP8266.h:947
-
const uint16_t kVoltasBits
Definition: IRremoteESP8266.h:1164
-
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:1016
-
const uint16_t kHitachiAcStateLength
Definition: IRremoteESP8266.h:1025
-
@ MITSUBISHI112
Definition: IRremoteESP8266.h:897
-
@ ECOCLIM
Definition: IRremoteESP8266.h:923
-
const uint16_t kDaikin176StateLength
Definition: IRremoteESP8266.h:979
-
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:1103
-
const uint16_t kEpsonMinRepeat
Definition: IRremoteESP8266.h:998
-
const uint16_t kAmcorStateLength
Definition: IRremoteESP8266.h:942
-
@ DAIKIN128
Definition: IRremoteESP8266.h:893
-
const uint16_t kAlokaBits
Definition: IRremoteESP8266.h:941
-
@ JVC
Definition: IRremoteESP8266.h:831
-
@ TRUMA
Definition: IRremoteESP8266.h:925
-
@ SONY
Definition: IRremoteESP8266.h:829
-
@ HITACHI_AC2
Definition: IRremoteESP8266.h:867
-
const uint16_t kHitachiAc1StateLength
Definition: IRremoteESP8266.h:1028
-
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:948
-
const uint16_t kMitsubishi112MinRepeat
Definition: IRremoteESP8266.h:1077
-
const uint16_t kHaierAC176StateLength
Definition: IRremoteESP8266.h:1022
-
const uint16_t kMirageStateLength
Definition: IRremoteESP8266.h:1062
-
const uint16_t kTeknopointStateLength
Definition: IRremoteESP8266.h:1141
-
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:958
-
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1108
-
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1055
-
@ LUTRON
Definition: IRremoteESP8266.h:872
-
const uint8_t kSharpCommandBits
Definition: IRremoteESP8266.h:1122
-
const uint16_t kNeoclimaStateLength
Definition: IRremoteESP8266.h:1088
-
@ RCMM
Definition: IRremoteESP8266.h:846
-
@ SANYO_LC7461
Definition: IRremoteESP8266.h:847
-
@ TROTEC
Definition: IRremoteESP8266.h:853
-
const uint16_t kFujitsuAcMinBits
Definition: IRremoteESP8266.h:1008
-
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:1113
-
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1119
-
const uint16_t kMirageMinRepeat
Definition: IRremoteESP8266.h:1064
-
@ DAIKIN160
Definition: IRremoteESP8266.h:890
-
@ CORONA_AC
Definition: IRremoteESP8266.h:911
-
const uint16_t kSanyoLC7461CommandBits
Definition: IRremoteESP8266.h:1118
-
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1153
-
@ PANASONIC
Definition: IRremoteESP8266.h:830
-
const uint16_t kZepealMinRepeat
Definition: IRremoteESP8266.h:1163
-
@ MIRAGE
Definition: IRremoteESP8266.h:919
-
const uint16_t kTranscoldDefaultRepeat
Definition: IRremoteESP8266.h:1151
-
const uint16_t kMetzMinRepeat
Definition: IRremoteESP8266.h:1057
-
const uint16_t kDenon48Bits
Definition: IRremoteESP8266.h:990
-
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1002
-
@ DAIKIN2
Definition: IRremoteESP8266.h:878
-
@ TEKNOPOINT
Definition: IRremoteESP8266.h:927
-
const uint16_t kHitachiAc2Bits
Definition: IRremoteESP8266.h:1031
-
const uint16_t kElectraAcMinRepeat
Definition: IRremoteESP8266.h:1001
-
const uint16_t kToshibaACBitsLong
Definition: IRremoteESP8266.h:1149
-
@ MITSUBISHI_AC
Definition: IRremoteESP8266.h:845
-
@ MAGIQUEST
Definition: IRremoteESP8266.h:860
-
const uint16_t kHitachiAc3StateLength
Definition: IRremoteESP8266.h:1032
-
const uint16_t kLg32Bits
Definition: IRremoteESP8266.h:1052
-
@ DOSHISHA
Definition: IRremoteESP8266.h:906
-
const uint16_t kCoronaAcStateLengthShort
Definition: IRremoteESP8266.h:956
-
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:1000
-
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:1132
-
@ HAIER_AC_YRW02
Definition: IRremoteESP8266.h:869
-
const uint16_t kHaierAC176Bits
Definition: IRremoteESP8266.h:1023
-
const uint16_t kAiwaRcT501MinRepeats
Definition: IRremoteESP8266.h:940
-
@ HITACHI_AC424
Definition: IRremoteESP8266.h:898
-
const uint16_t kVoltasStateLength
Definition: IRremoteESP8266.h:1165
-
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:966
-
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:1029
-
@ CARRIER_AC64
Definition: IRremoteESP8266.h:909
-
@ NEC
Definition: IRremoteESP8266.h:828
-
@ FUJITSU_AC
Definition: IRremoteESP8266.h:858
-
const uint16_t kMitsubishiMinRepeat
Definition: IRremoteESP8266.h:1068
-
@ GOODWEATHER
Definition: IRremoteESP8266.h:888
-
@ HITACHI_AC3
Definition: IRremoteESP8266.h:902
-
@ INAX
Definition: IRremoteESP8266.h:889
-
const uint16_t kArgoStateLength
Definition: IRremoteESP8266.h:945
-
@ SYMPHONY
Definition: IRremoteESP8266.h:901
-
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:1091
-
std::string String
Definition: IRremoteESP8266.h:1250
-
@ HAIER_AC
Definition: IRremoteESP8266.h:863
-
const uint16_t kDaikinStateLengthShort
Definition: IRremoteESP8266.h:962
-
const uint16_t kRC5Bits
Definition: IRremoteESP8266.h:1102
-
const uint16_t kLgDefaultRepeat
Definition: IRremoteESP8266.h:1053
-
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1166
-
const uint16_t kDaikin152StateLength
Definition: IRremoteESP8266.h:976
-
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:1095
-
const uint16_t kRC5RawBits
Definition: IRremoteESP8266.h:1101
-
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1161
-
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:1019
-
const uint16_t kSanyoLC7461AddressBits
Definition: IRremoteESP8266.h:1117
-
const uint16_t kMultibracketsDefaultRepeat
Definition: IRremoteESP8266.h:1085
-
@ LG
Definition: IRremoteESP8266.h:835
-
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:971
-
@ HITACHI_AC344
Definition: IRremoteESP8266.h:910
-
@ MIDEA
Definition: IRremoteESP8266.h:859
-
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1011
-
const uint16_t kGicableMinRepeat
Definition: IRremoteESP8266.h:1010
-
@ GLOBALCACHE
Definition: IRremoteESP8266.h:856
-
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:977
-
const uint16_t kDaikin216StateLength
Definition: IRremoteESP8266.h:982
-
@ GICABLE
Definition: IRremoteESP8266.h:868
-
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:1109
-
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1043
-
@ COOLIX
Definition: IRremoteESP8266.h:840
-
@ MILESTAG2
Definition: IRremoteESP8266.h:922
-
@ METZ
Definition: IRremoteESP8266.h:916
-
@ MIDEA24
Definition: IRremoteESP8266.h:912
-
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1134
-
const uint16_t kDaikin128StateLength
Definition: IRremoteESP8266.h:973
-
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1104
-
@ NEOCLIMA
Definition: IRremoteESP8266.h:891
-
const uint16_t kDaikin176DefaultRepeat
Definition: IRremoteESP8266.h:981
-
const uint16_t kMitsubishiHeavy152MinRepeat
Definition: IRremoteESP8266.h:1083
-
const uint16_t kSony12Bits
Definition: IRremoteESP8266.h:1129
-
const uint16_t kNoRepeat
Definition: IRremoteESP8266.h:934
-
const uint16_t kSony20Bits
Definition: IRremoteESP8266.h:1131
-
const uint16_t kMitsubishiACMinRepeat
Definition: IRremoteESP8266.h:1071
-
@ MULTIBRACKETS
Definition: IRremoteESP8266.h:907
-
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1056
-
const uint16_t kHitachiAc3MinBits
Definition: IRremoteESP8266.h:1035
-
const uint16_t kPanasonicAcDefaultRepeat
Definition: IRremoteESP8266.h:1097
-
const uint16_t kSymphonyDefaultRepeat
Definition: IRremoteESP8266.h:1135
-
const uint16_t kSamsungAcExtendedStateLength
Definition: IRremoteESP8266.h:1111
-
const uint16_t kCoolixDefaultRepeat
Definition: IRremoteESP8266.h:949
-
@ DENON
Definition: IRremoteESP8266.h:842
-
const uint16_t kTcl112AcDefaultRepeat
Definition: IRremoteESP8266.h:1138
-
const uint16_t kDelonghiAcDefaultRepeat
Definition: IRremoteESP8266.h:986
-
const uint16_t kCoronaAcStateLength
Definition: IRremoteESP8266.h:957
-
@ SANYO
Definition: IRremoteESP8266.h:836
-
const uint16_t kTecoDefaultRepeat
Definition: IRremoteESP8266.h:1140
-
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:1082
-
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:994
-
const uint16_t kHaierAc176DefaultRepeat
Definition: IRremoteESP8266.h:1024
-
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:952
-
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:943
-
const uint16_t kTrotecStateLength
Definition: IRremoteESP8266.h:1152
-
@ LG2
Definition: IRremoteESP8266.h:876
-
const uint16_t kWhirlpoolAcDefaultRepeat
Definition: IRremoteESP8266.h:1158
-
const uint16_t kHitachiAc424StateLength
Definition: IRremoteESP8266.h:1038
-
const uint16_t kMitsubishiHeavy88StateLength
Definition: IRremoteESP8266.h:1078
-
@ RC5X
Definition: IRremoteESP8266.h:848
-
@ LASERTAG
Definition: IRremoteESP8266.h:861
-
const uint16_t kFujitsuAcStateLengthShort
Definition: IRremoteESP8266.h:1006
-
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:1092
-
@ RAW
Definition: IRremoteESP8266.h:855
-
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:1065
-
@ SONY_38K
Definition: IRremoteESP8266.h:899
-
@ RC6
Definition: IRremoteESP8266.h:827
-
@ PIONEER
Definition: IRremoteESP8266.h:875
-
const uint16_t kPanasonicAcStateLength
Definition: IRremoteESP8266.h:1093
-
@ MITSUBISHI2
Definition: IRremoteESP8266.h:864
-
const uint16_t kFujitsuAcStateLength
Definition: IRremoteESP8266.h:1005
-
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:1110
-
@ TRANSCOLD
Definition: IRremoteESP8266.h:917
-
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1058
-
const uint16_t kKelvinatorStateLength
Definition: IRremoteESP8266.h:1044
-
const uint16_t kKelvinatorBits
Definition: IRremoteESP8266.h:1045
-
const uint16_t kMilesTag2MsgBits
Definition: IRremoteESP8266.h:1167
-
@ LEGOPF
Definition: IRremoteESP8266.h:883
-
@ WHYNTER
Definition: IRremoteESP8266.h:833
-
const uint16_t kDaikin216DefaultRepeat
Definition: IRremoteESP8266.h:984
-
@ TECHNIBEL_AC
Definition: IRremoteESP8266.h:918
-
@ AMCOR
Definition: IRremoteESP8266.h:894
-
const uint16_t kWhirlpoolAcStateLength
Definition: IRremoteESP8266.h:1156
-
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1087
-
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:989
-
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:1017
-
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1162
-
@ TCL112AC
Definition: IRremoteESP8266.h:882
-
const uint16_t kSony15Bits
Definition: IRremoteESP8266.h:1130
-
const uint16_t kCarrierAc40MinRepeat
Definition: IRremoteESP8266.h:953
-
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1060
-
const uint16_t kDaikin160DefaultRepeat
Definition: IRremoteESP8266.h:972
-
const uint16_t kToshibaACMinRepeat
Definition: IRremoteESP8266.h:1145
-
const uint16_t kSamsungAcExtendedBits
Definition: IRremoteESP8266.h:1112
-
@ PANASONIC_AC32
Definition: IRremoteESP8266.h:921
-
const uint16_t kHitachiAc344StateLength
Definition: IRremoteESP8266.h:1036
-
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:1089
-
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1157
-
const uint16_t kHitachiAc344Bits
Definition: IRremoteESP8266.h:1037
-
const uint16_t kRC6_36Bits
Definition: IRremoteESP8266.h:1105
-
@ DAIKIN176
Definition: IRremoteESP8266.h:892
-
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:954
-
const uint16_t kDaikin128DefaultRepeat
Definition: IRremoteESP8266.h:975
-
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1099
-
const uint16_t kSharpAcStateLength
Definition: IRremoteESP8266.h:1124
-
@ MITSUBISHI_HEAVY_88
Definition: IRremoteESP8266.h:884
-
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1014
-
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1042
-
const uint16_t kDaikinStateLength
Definition: IRremoteESP8266.h:960
-
@ HAIER_AC176
Definition: IRremoteESP8266.h:926
-
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1047
-
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:974
-
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:939
-
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1155
-
const uint16_t kToshibaACStateLength
Definition: IRremoteESP8266.h:1143
-
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1139
-
const uint16_t kInaxMinRepeat
Definition: IRremoteESP8266.h:1041
-
const uint16_t kPanasonicAcStateShortLength
Definition: IRremoteESP8266.h:1094
-
@ CARRIER_AC40
Definition: IRremoteESP8266.h:908
-
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1144
-
const uint8_t kSherwoodBits
Definition: IRremoteESP8266.h:1127
-
@ DAIKIN152
Definition: IRremoteESP8266.h:895
-
@ NEC_LIKE
Definition: IRremoteESP8266.h:851
-
const uint16_t kDaikinDefaultRepeat
Definition: IRremoteESP8266.h:964
-
const uint16_t kDaikin64DefaultRepeat
Definition: IRremoteESP8266.h:969
-
@ SAMSUNG
Definition: IRremoteESP8266.h:832
-
@ AIWA_RC_T501
Definition: IRremoteESP8266.h:834
-
@ MITSUBISHI_HEAVY_152
Definition: IRremoteESP8266.h:885
-
@ VESTEL_AC
Definition: IRremoteESP8266.h:879
-
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:961
-
const uint16_t kToshibaACStateLengthShort
Definition: IRremoteESP8266.h:1146
-
@ GREE
Definition: IRremoteESP8266.h:849
-
const uint16_t kToshibaACStateLengthLong
Definition: IRremoteESP8266.h:1148
-
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:1026
-
@ KELON
Definition: IRremoteESP8266.h:928
-
const uint16_t kMitsubishiHeavy88MinRepeat
Definition: IRremoteESP8266.h:1080
-
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:1033
-
const uint16_t kHitachiAcDefaultRepeat
Definition: IRremoteESP8266.h:1027
-
@ NIKAI
Definition: IRremoteESP8266.h:854
-
const uint16_t kMidea24MinRepeat
Definition: IRremoteESP8266.h:1061
-
const uint16_t kDishBits
Definition: IRremoteESP8266.h:992
-
@ WHIRLPOOL_AC
Definition: IRremoteESP8266.h:870
-
const uint16_t kDishMinRepeat
Definition: IRremoteESP8266.h:993
-
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:1007
-
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:946
-
@ RC5
Definition: IRremoteESP8266.h:826
-
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1030
-
@ HITACHI_AC
Definition: IRremoteESP8266.h:865
-
@ SHARP_AC
Definition: IRremoteESP8266.h:887
-
@ HITACHI_AC1
Definition: IRremoteESP8266.h:866
-
const uint16_t kMitsubishiHeavy88Bits
Definition: IRremoteESP8266.h:1079
-
const uint16_t kCarrierAcMinRepeat
Definition: IRremoteESP8266.h:951
-
@ ZEPEAL
Definition: IRremoteESP8266.h:913
-
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1086
-
const uint16_t kKelvinatorDefaultRepeat
Definition: IRremoteESP8266.h:1046
-
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1054
-
const uint16_t kSharpAcDefaultRepeat
Definition: IRremoteESP8266.h:1126
-
@ MITSUBISHI136
Definition: IRremoteESP8266.h:896
-
const uint16_t kEliteScreensDefaultRepeat
Definition: IRremoteESP8266.h:1003
-
const uint16_t kTcl112AcStateLength
Definition: IRremoteESP8266.h:1136
-
const uint16_t kDaikin160StateLength
Definition: IRremoteESP8266.h:970
-
const uint16_t kDaikin2StateLength
Definition: IRremoteESP8266.h:965
-
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:1020
-
const uint16_t kEcoclimBits
Definition: IRremoteESP8266.h:995
-
const uint16_t kSherwoodMinRepeat
Definition: IRremoteESP8266.h:1128
-
const uint16_t kCarrierAc64MinRepeat
Definition: IRremoteESP8266.h:955
-
@ MWM
Definition: IRremoteESP8266.h:877
-
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:1039
-
const uint16_t kPanasonicAcShortBits
Definition: IRremoteESP8266.h:1096
-
@ DAIKIN
Definition: IRremoteESP8266.h:841
-
@ DELONGHI_AC
Definition: IRremoteESP8266.h:905
-
const uint16_t kSanyoAcStateLength
Definition: IRremoteESP8266.h:1114
-
const uint16_t kTechnibelAcDefaultRepeat
Definition: IRremoteESP8266.h:988
-
@ EPSON
Definition: IRremoteESP8266.h:900
-
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1049
-
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1123
-
@ kLastDecodeType
Definition: IRremoteESP8266.h:930
-
@ SAMSUNG_AC
Definition: IRremoteESP8266.h:871
-
const uint16_t kDaikinBitsShort
Definition: IRremoteESP8266.h:963
-
@ DAIKIN216
Definition: IRremoteESP8266.h:886
-
@ PANASONIC_AC
Definition: IRremoteESP8266.h:874
-
const uint16_t kProntoMinLength
Definition: IRremoteESP8266.h:1100
-
const uint16_t kMitsubishi136StateLength
Definition: IRremoteESP8266.h:1072
-
@ DAIKIN64
Definition: IRremoteESP8266.h:903
-
const uint16_t kToshibaACBitsShort
Definition: IRremoteESP8266.h:1147
-
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:1106
-
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1160
-
@ SAMSUNG36
Definition: IRremoteESP8266.h:881
-
const uint8_t kSharpAddressBits
Definition: IRremoteESP8266.h:1121
-
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1150
-
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1040
-
const uint16_t kLegoPfMinRepeat
Definition: IRremoteESP8266.h:1050
-
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:980
-
const uint16_t kAmcorDefaultRepeat
Definition: IRremoteESP8266.h:944
-
const uint16_t kEcoclimShortBits
Definition: IRremoteESP8266.h:996
-
@ ELITESCREENS
Definition: IRremoteESP8266.h:920
-
@ KELVINATOR
Definition: IRremoteESP8266.h:843
-
@ VOLTAS
Definition: IRremoteESP8266.h:915
-
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1107
-
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:968
-
const uint16_t kTeknopointBits
Definition: IRremoteESP8266.h:1142
-
@ XMP
Definition: IRremoteESP8266.h:924
-
const uint16_t kTcl112AcBits
Definition: IRremoteESP8266.h:1137
-
@ TECO
Definition: IRremoteESP8266.h:880
-
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1098
-
const uint16_t kLasertagMinRepeat
Definition: IRremoteESP8266.h:1048
-
@ SHARP
Definition: IRremoteESP8266.h:839
-
@ MITSUBISHI
Definition: IRremoteESP8266.h:837
-
@ ELECTRA_AC
Definition: IRremoteESP8266.h:873
-
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:983
-
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:1073
-
const uint16_t kNeoclimaMinRepeat
Definition: IRremoteESP8266.h:1090
-
const uint16_t kMitsubishi112StateLength
Definition: IRremoteESP8266.h:1075
-
const uint16_t kSanyoAcBits
Definition: IRremoteESP8266.h:1115
-
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:1076
-
const uint16_t kSonyMinRepeat
Definition: IRremoteESP8266.h:1133
-
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:997
-
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1051
-
const uint16_t kGoodweatherMinRepeat
Definition: IRremoteESP8266.h:1012
-
const uint16_t kElectraAcStateLength
Definition: IRremoteESP8266.h:999
-
const uint16_t kGreeDefaultRepeat
Definition: IRremoteESP8266.h:1015
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8cpp.html deleted file mode 100644 index 33a3b4df7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8cpp.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRsend.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRsend.cpp File Reference
-
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h.html deleted file mode 100644 index 80897dba7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRsend.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRsend.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - -

-Classes

struct  stdAc::state_t
 Structure to hold a common A/C state. More...
 
class  IRsend
 Class for sending all basic IR protocols. More...
 
- - - - -

-Namespaces

 stdAc
 Enumerators and Structures for the Common A/C API.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Enumerations

enum  stdAc::opmode_t {
-  stdAc::opmode_t::kOff = -1, -stdAc::opmode_t::kAuto = 0, -stdAc::opmode_t::kCool = 1, -stdAc::opmode_t::kHeat = 2, -
-  stdAc::opmode_t::kDry = 3, -stdAc::opmode_t::kFan = 4, -stdAc::opmode_t::kLastOpmodeEnum = kFan -
- }
 Common A/C settings for A/C operating modes. More...
 
enum  stdAc::fanspeed_t {
-  stdAc::fanspeed_t::kAuto = 0, -stdAc::fanspeed_t::kMin = 1, -stdAc::fanspeed_t::kLow = 2, -stdAc::fanspeed_t::kMedium = 3, -
-  stdAc::fanspeed_t::kHigh = 4, -stdAc::fanspeed_t::kMax = 5, -stdAc::fanspeed_t::kLastFanspeedEnum = kMax -
- }
 Common A/C settings for Fan Speeds. More...
 
enum  stdAc::swingv_t {
-  stdAc::swingv_t::kOff = -1, -stdAc::swingv_t::kAuto = 0, -stdAc::swingv_t::kHighest = 1, -stdAc::swingv_t::kHigh = 2, -
-  stdAc::swingv_t::kMiddle = 3, -stdAc::swingv_t::kLow = 4, -stdAc::swingv_t::kLowest = 5, -stdAc::swingv_t::kLastSwingvEnum = kLowest -
- }
 Common A/C settings for Vertical Swing. More...
 
enum  stdAc::swingh_t {
-  stdAc::swingh_t::kOff = -1, -stdAc::swingh_t::kAuto = 0, -stdAc::swingh_t::kLeftMax = 1, -stdAc::swingh_t::kLeft = 2, -
-  stdAc::swingh_t::kMiddle = 3, -stdAc::swingh_t::kRight = 4, -stdAc::swingh_t::kRightMax = 5, -stdAc::swingh_t::kWide = 6, -
-  stdAc::swingh_t::kLastSwinghEnum = kWide -
- }
 Common A/C settings for Horizontal Swing. More...
 
enum  fujitsu_ac_remote_model_t {
-  ARRAH2E = 1, -ARDB1, -ARREB1E, -ARJW2, -
-  ARRY4, -ARREW4E -
- }
 Fujitsu A/C model numbers. More...
 
enum  gree_ac_remote_model_t { YAW1F = 1, -YBOFB - }
 Gree A/C model numbers. More...
 
enum  hitachi_ac1_remote_model_t { R_LT0541_HTA_A = 1, -R_LT0541_HTA_B - }
 HITACHI_AC1 A/C model numbers. More...
 
enum  panasonic_ac_remote_model_t {
-  kPanasonicUnknown = 0, -kPanasonicLke = 1, -kPanasonicNke = 2, -kPanasonicDke = 3, -
-  kPanasonicJke = 4, -kPanasonicCkp = 5, -kPanasonicRkr = 6 -
- }
 Panasonic A/C model numbers. More...
 
enum  sharp_ac_remote_model_t { A907 = 1, -A705 = 2, -A903 = 3 - }
 Sharp A/C model numbers. More...
 
enum  voltas_ac_remote_model_t { kVoltasUnknown = 0, -kVoltas122LZF = 1 - }
 Voltas A/C model numbers. More...
 
enum  whirlpool_ac_remote_model_t { DG11J13A = 1, -DG11J191 - }
 Whirlpool A/C model numbers. More...
 
enum  lg_ac_remote_model_t { GE6711AR2853M = 1, -AKB75215403 - }
 LG A/C model numbers. More...
 
- - - - - - - - - - - -

-Variables

const int8_t kPeriodOffset = -2
 
const uint8_t kDutyDefault = 50
 
const uint8_t kDutyMax = 100
 
const uint16_t kMaxAccurateUsecDelay = 16383
 
const uint32_t kDefaultMessageGap = 100000
 
-

Enumeration Type Documentation

- -

◆ fujitsu_ac_remote_model_t

- -
-
- - - - -
enum fujitsu_ac_remote_model_t
-
- -

Fujitsu A/C model numbers.

- - - - - - - -
Enumerator
ARRAH2E 

(1) AR-RAH2E, AR-RAC1E, AR-RAE1E, AR-RCE1E (Default) Warning: Use on incorrect models can cause the A/C to lock up, requring the A/C to be physically powered off to fix. e.g. AR-RAH1U may lock up with a Swing command.

-
ARDB1 

(2) AR-DB1, AR-DL10 (AR-DL10 swing doesn't work)

-
ARREB1E 

(3) AR-REB1E, AR-RAH1U (Similar to ARRAH2E but no horiz control)

-
ARJW2 

(4) AR-JW2 (Same as ARDB1 but with horiz control)

-
ARRY4 

(5) AR-RY4 (Same as AR-RAH2E but with clean & filter)

-
ARREW4E 

(6) Similar to ARRAH2E, but with different temp config.

-
- -
-
- -

◆ gree_ac_remote_model_t

- -
-
- - - - -
enum gree_ac_remote_model_t
-
- -

Gree A/C model numbers.

- - - -
Enumerator
YAW1F 
YBOFB 
- -
-
- -

◆ hitachi_ac1_remote_model_t

- -
-
- - - - -
enum hitachi_ac1_remote_model_t
-
- -

HITACHI_AC1 A/C model numbers.

- - - -
Enumerator
R_LT0541_HTA_A 
R_LT0541_HTA_B 
- -
-
- -

◆ lg_ac_remote_model_t

- -
-
- - - - -
enum lg_ac_remote_model_t
-
- -

LG A/C model numbers.

- - - -
Enumerator
GE6711AR2853M 
AKB75215403 
- -
-
- -

◆ panasonic_ac_remote_model_t

- -
-
- - - - -
enum panasonic_ac_remote_model_t
-
- -

Panasonic A/C model numbers.

- - - - - - - - -
Enumerator
kPanasonicUnknown 
kPanasonicLke 
kPanasonicNke 
kPanasonicDke 
kPanasonicJke 
kPanasonicCkp 
kPanasonicRkr 
- -
-
- -

◆ sharp_ac_remote_model_t

- -
-
- - - - -
enum sharp_ac_remote_model_t
-
- -

Sharp A/C model numbers.

- - - - -
Enumerator
A907 
A705 
A903 
- -
-
- -

◆ voltas_ac_remote_model_t

- -
-
- - - - -
enum voltas_ac_remote_model_t
-
- -

Voltas A/C model numbers.

- - - -
Enumerator
kVoltasUnknown 
kVoltas122LZF 
- -
-
- -

◆ whirlpool_ac_remote_model_t

- -
-
- - - - -
enum whirlpool_ac_remote_model_t
-
- -

Whirlpool A/C model numbers.

- - - -
Enumerator
DG11J13A 
DG11J191 
- -
-
-

Variable Documentation

- -

◆ kDefaultMessageGap

- -
-
- - - - -
const uint32_t kDefaultMessageGap = 100000
-
- -
-
- -

◆ kDutyDefault

- -
-
- - - - -
const uint8_t kDutyDefault = 50
-
- -
-
- -

◆ kDutyMax

- -
-
- - - - -
const uint8_t kDutyMax = 100
-
- -
-
- -

◆ kMaxAccurateUsecDelay

- -
-
- - - - -
const uint16_t kMaxAccurateUsecDelay = 16383
-
- -
-
- -

◆ kPeriodOffset

- -
-
- - - - -
const int8_t kPeriodOffset = -2
-
- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h_source.html deleted file mode 100644 index 3a405a631..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRsend_8h_source.html +++ /dev/null @@ -1,1209 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRsend.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRsend.h
-
-
-Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
-
2 // Copyright 2015 Mark Szabo
-
3 // Copyright 2017 David Conran
-
4 #ifndef IRSEND_H_
-
5 #define IRSEND_H_
-
6 
-
7 #define __STDC_LIMIT_MACROS
-
8 #include <stdint.h>
-
9 #include "IRremoteESP8266.h"
-
10 
-
11 // Originally from https://github.com/shirriff/Arduino-IRremote/
-
12 // Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for
-
13 // sending IR code on ESP8266
-
14 
-
15 #if TEST || UNIT_TEST
-
16 #define VIRTUAL virtual
-
17 #else
-
18 #define VIRTUAL
-
19 #endif
-
20 
-
21 // Constants
-
22 // Offset (in microseconds) to use in Period time calculations to account for
-
23 // code excution time in producing the software PWM signal.
-
24 #if defined(ESP32)
-
25 // Calculated on a generic ESP-WROOM-32 board with v3.2-18 SDK @ 240MHz
-
26 const int8_t kPeriodOffset = -2;
-
27 #elif (defined(ESP8266) && F_CPU == 160000000L) // NOLINT(whitespace/parens)
-
28 // Calculated on an ESP8266 NodeMCU v2 board using:
-
29 // v2.6.0 with v2.5.2 ESP core @ 160MHz
-
30 const int8_t kPeriodOffset = -2;
-
31 #else // (defined(ESP8266) && F_CPU == 160000000L)
-
32 // Calculated on ESP8266 Wemos D1 mini using v2.4.1 with v2.4.0 ESP core @ 40MHz
-
33 const int8_t kPeriodOffset = -5;
-
34 #endif // (defined(ESP8266) && F_CPU == 160000000L)
-
35 const uint8_t kDutyDefault = 50; // Percentage
-
36 const uint8_t kDutyMax = 100; // Percentage
-
37 // delayMicroseconds() is only accurate to 16383us.
-
38 // Ref: https://www.arduino.cc/en/Reference/delayMicroseconds
-
39 const uint16_t kMaxAccurateUsecDelay = 16383;
-
40 // Usecs to wait between messages we don't know the proper gap time.
-
41 const uint32_t kDefaultMessageGap = 100000;
-
42 
-
44 namespace stdAc {
-
46  enum class opmode_t {
-
47  kOff = -1,
-
48  kAuto = 0,
-
49  kCool = 1,
-
50  kHeat = 2,
-
51  kDry = 3,
-
52  kFan = 4,
-
53  // Add new entries before this one, and update it to point to the last entry
- -
55  };
-
56 
-
58  enum class fanspeed_t {
-
59  kAuto = 0,
-
60  kMin = 1,
-
61  kLow = 2,
-
62  kMedium = 3,
-
63  kHigh = 4,
-
64  kMax = 5,
-
65  // Add new entries before this one, and update it to point to the last entry
- -
67  };
-
68 
-
70  enum class swingv_t {
-
71  kOff = -1,
-
72  kAuto = 0,
-
73  kHighest = 1,
-
74  kHigh = 2,
-
75  kMiddle = 3,
-
76  kLow = 4,
-
77  kLowest = 5,
-
78  // Add new entries before this one, and update it to point to the last entry
- -
80  };
-
81 
-
83  enum class swingh_t {
-
84  kOff = -1,
-
85  kAuto = 0, // a.k.a. On.
-
86  kLeftMax = 1,
-
87  kLeft = 2,
-
88  kMiddle = 3,
-
89  kRight = 4,
-
90  kRightMax = 5,
-
91  kWide = 6, // a.k.a. left & right at the same time.
-
92  // Add new entries before this one, and update it to point to the last entry
- -
94  };
-
95 
-
97  typedef struct {
- -
99  int16_t model;
-
100  bool power;
- -
102  float degrees;
-
103  bool celsius;
- - - -
107  bool quiet;
-
108  bool turbo;
-
109  bool econo;
-
110  bool light;
-
111  bool filter;
-
112  bool clean;
-
113  bool beep;
-
114  int16_t sleep;
-
115  int16_t clock;
-
116  } state_t;
-
117 }; // namespace stdAc
-
118 
- -
121  ARRAH2E = 1,
-
122  ARDB1,
- -
127  ARJW2,
- - -
131 };
-
132 
- -
135  YAW1F = 1, // (1) Ultimate, EKOKAI, RusClimate (Default)
-
136  YBOFB, // (2) Green, YBOFB2, YAPOF3
-
137 };
-
138 
- -
141  R_LT0541_HTA_A = 1, // (1) R-LT0541-HTA Remote in "A" setting. (Default)
-
142  R_LT0541_HTA_B, // (2) R-LT0541-HTA Remote in "B" setting.
-
143 };
-
144 
- - - - -
150  kPanasonicDke = 3, // PKR too.
- - - -
154 };
-
155 
- -
158  A907 = 1,
-
159  A705 = 2,
-
160  A903 = 3, // 820 too
-
161 };
-
162 
- -
165  kVoltasUnknown = 0, // Full Function
-
166  kVoltas122LZF = 1, // (1) 122LZF (No SwingH support) (Default)
-
167 };
-
168 
- -
171  DG11J13A = 1, // DG11J1-04 too
- -
173 };
-
174 
- -
177  GE6711AR2853M = 1, // (1) LG 28-bit Protocol (default)
-
178  AKB75215403, // (2) LG2 28-bit Protocol
-
179 };
-
180 
-
181 
-
182 // Classes
-
183 
-
188 class IRsend {
-
189  public:
-
190  explicit IRsend(uint16_t IRsendPin, bool inverted = false,
-
191  bool use_modulation = true);
-
192  void begin();
-
193  void enableIROut(uint32_t freq, uint8_t duty = kDutyDefault);
-
194  VIRTUAL void _delayMicroseconds(uint32_t usec);
-
195  VIRTUAL uint16_t mark(uint16_t usec);
-
196  VIRTUAL void space(uint32_t usec);
-
197  int8_t calibrate(uint16_t hz = 38000U);
-
198  void sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz);
-
199  void sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark,
-
200  uint32_t zerospace, uint64_t data, uint16_t nbits,
-
201  bool MSBfirst = true);
-
202  void sendManchesterData(const uint16_t half_period, const uint64_t data,
-
203  const uint16_t nbits, const bool MSBfirst = true,
-
204  const bool GEThomas = true);
-
205  void sendManchester(const uint16_t headermark, const uint32_t headerspace,
-
206  const uint16_t half_period, const uint16_t footermark,
-
207  const uint32_t gap, const uint64_t data,
-
208  const uint16_t nbits, const uint16_t frequency = 38,
-
209  const bool MSBfirst = true,
-
210  const uint16_t repeat = kNoRepeat,
-
211  const uint8_t dutycycle = kDutyDefault,
-
212  const bool GEThomas = true);
-
213  void sendGeneric(const uint16_t headermark, const uint32_t headerspace,
-
214  const uint16_t onemark, const uint32_t onespace,
-
215  const uint16_t zeromark, const uint32_t zerospace,
-
216  const uint16_t footermark, const uint32_t gap,
-
217  const uint64_t data, const uint16_t nbits,
-
218  const uint16_t frequency, const bool MSBfirst,
-
219  const uint16_t repeat, const uint8_t dutycycle);
-
220  void sendGeneric(const uint16_t headermark, const uint32_t headerspace,
-
221  const uint16_t onemark, const uint32_t onespace,
-
222  const uint16_t zeromark, const uint32_t zerospace,
-
223  const uint16_t footermark, const uint32_t gap,
-
224  const uint32_t mesgtime, const uint64_t data,
-
225  const uint16_t nbits, const uint16_t frequency,
-
226  const bool MSBfirst, const uint16_t repeat,
-
227  const uint8_t dutycycle);
-
228  void sendGeneric(const uint16_t headermark, const uint32_t headerspace,
-
229  const uint16_t onemark, const uint32_t onespace,
-
230  const uint16_t zeromark, const uint32_t zerospace,
-
231  const uint16_t footermark, const uint32_t gap,
-
232  const uint8_t *dataptr, const uint16_t nbytes,
-
233  const uint16_t frequency, const bool MSBfirst,
-
234  const uint16_t repeat, const uint8_t dutycycle);
-
235  static uint16_t minRepeats(const decode_type_t protocol);
-
236  static uint16_t defaultBits(const decode_type_t protocol);
-
237  bool send(const decode_type_t type, const uint64_t data,
-
238  const uint16_t nbits, const uint16_t repeat = kNoRepeat);
-
239  bool send(const decode_type_t type, const uint8_t *state,
-
240  const uint16_t nbytes);
-
241 #if (SEND_NEC || SEND_SHERWOOD || SEND_AIWA_RC_T501 || SEND_SANYO || \
-
242  SEND_MIDEA24)
-
243  void sendNEC(uint64_t data, uint16_t nbits = kNECBits,
-
244  uint16_t repeat = kNoRepeat);
-
245  uint32_t encodeNEC(uint16_t address, uint16_t command);
-
246 #endif
-
247 #if SEND_SONY
-
248  // sendSony() should typically be called with repeat=2 as Sony devices
-
249  // expect the code to be sent at least 3 times. (code + 2 repeats = 3 codes)
-
250  // Legacy use of this procedure was to only send a single code so call it with
-
251  // repeat=0 for backward compatibility. As of v2.0 it defaults to sending
-
252  // a Sony command that will be accepted be a device.
-
253  void sendSony(const uint64_t data, const uint16_t nbits = kSony20Bits,
-
254  const uint16_t repeat = kSonyMinRepeat);
-
255  void sendSony38(const uint64_t data, const uint16_t nbits = kSony20Bits,
-
256  const uint16_t repeat = kSonyMinRepeat + 1);
-
257  uint32_t encodeSony(const uint16_t nbits, const uint16_t command,
-
258  const uint16_t address, const uint16_t extended = 0);
-
259 #endif // SEND_SONY
-
260 #if SEND_SHERWOOD
-
261  void sendSherwood(uint64_t data, uint16_t nbits = kSherwoodBits,
-
262  uint16_t repeat = kSherwoodMinRepeat);
-
263 #endif
-
264 #if SEND_SAMSUNG
-
265  void sendSAMSUNG(const uint64_t data, const uint16_t nbits = kSamsungBits,
-
266  const uint16_t repeat = kNoRepeat);
-
267  uint32_t encodeSAMSUNG(const uint8_t customer, const uint8_t command);
-
268 #endif
-
269 #if SEND_SAMSUNG36
-
270  void sendSamsung36(const uint64_t data, const uint16_t nbits = kSamsung36Bits,
-
271  const uint16_t repeat = kNoRepeat);
-
272 #endif
-
273 #if SEND_SAMSUNG_AC
-
274  void sendSamsungAC(const unsigned char data[],
-
275  const uint16_t nbytes = kSamsungAcStateLength,
-
276  const uint16_t repeat = kSamsungAcDefaultRepeat);
-
277 #endif
-
278 #if SEND_LG
-
279  void sendLG(uint64_t data, uint16_t nbits = kLgBits,
-
280  uint16_t repeat = kNoRepeat);
-
281  void sendLG2(uint64_t data, uint16_t nbits = kLgBits,
-
282  uint16_t repeat = kNoRepeat);
-
283  uint32_t encodeLG(uint16_t address, uint16_t command);
-
284 #endif
-
285 #if (SEND_SHARP || SEND_DENON)
-
286  uint32_t encodeSharp(const uint16_t address, const uint16_t command,
-
287  const uint16_t expansion = 1, const uint16_t check = 0,
-
288  const bool MSBfirst = false);
-
289  void sendSharp(const uint16_t address, const uint16_t command,
-
290  const uint16_t nbits = kSharpBits,
-
291  const uint16_t repeat = kNoRepeat);
-
292  void sendSharpRaw(const uint64_t data, const uint16_t nbits = kSharpBits,
-
293  const uint16_t repeat = kNoRepeat);
-
294 #endif
-
295 #if SEND_SHARP_AC
-
296  void sendSharpAc(const unsigned char data[],
-
297  const uint16_t nbytes = kSharpAcStateLength,
-
298  const uint16_t repeat = kSharpAcDefaultRepeat);
-
299 #endif // SEND_SHARP_AC
-
300 #if SEND_JVC
-
301  void sendJVC(uint64_t data, uint16_t nbits = kJvcBits,
-
302  uint16_t repeat = kNoRepeat);
-
303  uint16_t encodeJVC(uint8_t address, uint8_t command);
-
304 #endif
-
305 #if SEND_DENON
-
306  void sendDenon(uint64_t data, uint16_t nbits = kDenonBits,
-
307  uint16_t repeat = kNoRepeat);
-
308 #endif
-
309 #if SEND_SANYO
-
310  uint64_t encodeSanyoLC7461(uint16_t address, uint8_t command);
-
311  void sendSanyoLC7461(const uint64_t data,
-
312  const uint16_t nbits = kSanyoLC7461Bits,
-
313  const uint16_t repeat = kNoRepeat);
-
314 #endif
-
315 #if SEND_SANYO_AC
-
316  void sendSanyoAc(const uint8_t *data,
-
317  const uint16_t nbytes = kSanyoAcStateLength,
-
318  const uint16_t repeat = kNoRepeat);
-
319 #endif // SEND_SANYO_AC
-
320 #if SEND_DISH
-
321  // sendDISH() should typically be called with repeat=3 as DISH devices
-
322  // expect the code to be sent at least 4 times. (code + 3 repeats = 4 codes)
-
323  // Legacy use of this procedure was only to send a single code
-
324  // so use repeat=0 for backward compatibility.
-
325  void sendDISH(uint64_t data, uint16_t nbits = kDishBits,
-
326  uint16_t repeat = kDishMinRepeat);
-
327 #endif
-
328 #if (SEND_PANASONIC || SEND_DENON)
-
329  void sendPanasonic64(const uint64_t data,
-
330  const uint16_t nbits = kPanasonicBits,
-
331  const uint16_t repeat = kNoRepeat);
-
332  void sendPanasonic(const uint16_t address, const uint32_t data,
-
333  const uint16_t nbits = kPanasonicBits,
-
334  const uint16_t repeat = kNoRepeat);
-
335  uint64_t encodePanasonic(const uint16_t manufacturer, const uint8_t device,
-
336  const uint8_t subdevice, const uint8_t function);
-
337 #endif
-
338 #if SEND_RC5
-
339  void sendRC5(const uint64_t data, uint16_t nbits = kRC5XBits,
-
340  const uint16_t repeat = kNoRepeat);
-
341  uint16_t encodeRC5(const uint8_t address, const uint8_t command,
-
342  const bool key_released = false);
-
343  uint16_t encodeRC5X(const uint8_t address, const uint8_t command,
-
344  const bool key_released = false);
-
345  uint64_t toggleRC5(const uint64_t data);
-
346 #endif
-
347 #if SEND_RC6
-
348  void sendRC6(const uint64_t data, const uint16_t nbits = kRC6Mode0Bits,
-
349  const uint16_t repeat = kNoRepeat);
-
350  uint64_t encodeRC6(const uint32_t address, const uint8_t command,
-
351  const uint16_t mode = kRC6Mode0Bits);
-
352  uint64_t toggleRC6(const uint64_t data, const uint16_t nbits = kRC6Mode0Bits);
-
353 #endif
-
354 #if SEND_RCMM
-
355  void sendRCMM(uint64_t data, uint16_t nbits = kRCMMBits,
-
356  uint16_t repeat = kNoRepeat);
-
357 #endif
-
358 #if SEND_COOLIX
-
359  void sendCOOLIX(uint64_t data, uint16_t nbits = kCoolixBits,
-
360  uint16_t repeat = kCoolixDefaultRepeat);
-
361 #endif
-
362 #if SEND_WHYNTER
-
363  void sendWhynter(const uint64_t data, const uint16_t nbits = kWhynterBits,
-
364  const uint16_t repeat = kNoRepeat);
-
365 #endif
-
366 #if SEND_MIRAGE
-
367  void sendMirage(const unsigned char data[],
-
368  const uint16_t nbytes = kMirageStateLength,
-
369  const uint16_t repeat = kMirageMinRepeat);
-
370 #endif // SEND_MIRAGE
-
371 #if SEND_MITSUBISHI
-
372  void sendMitsubishi(uint64_t data, uint16_t nbits = kMitsubishiBits,
-
373  uint16_t repeat = kMitsubishiMinRepeat);
-
374 #endif
-
375 #if SEND_MITSUBISHI136
-
376  void sendMitsubishi136(const unsigned char data[],
-
377  const uint16_t nbytes = kMitsubishi136StateLength,
-
378  const uint16_t repeat = kMitsubishi136MinRepeat);
-
379 #endif
-
380 #if SEND_MITSUBISHI112
-
381  void sendMitsubishi112(const unsigned char data[],
-
382  const uint16_t nbytes = kMitsubishi112StateLength,
-
383  const uint16_t repeat = kMitsubishi112MinRepeat);
-
384 #endif
-
385 #if SEND_MITSUBISHI2
-
386  void sendMitsubishi2(uint64_t data, uint16_t nbits = kMitsubishiBits,
-
387  uint16_t repeat = kMitsubishiMinRepeat);
-
388 #endif
-
389 #if SEND_MITSUBISHI_AC
-
390  void sendMitsubishiAC(const unsigned char data[],
-
391  const uint16_t nbytes = kMitsubishiACStateLength,
-
392  const uint16_t repeat = kMitsubishiACMinRepeat);
-
393 #endif
-
394 #if SEND_MITSUBISHIHEAVY
- -
396  const unsigned char data[],
-
397  const uint16_t nbytes = kMitsubishiHeavy88StateLength,
-
398  const uint16_t repeat = kMitsubishiHeavy88MinRepeat);
- -
400  const unsigned char data[],
-
401  const uint16_t nbytes = kMitsubishiHeavy152StateLength,
-
402  const uint16_t repeat = kMitsubishiHeavy152MinRepeat);
-
403 #endif
-
404 #if SEND_FUJITSU_AC
-
405  void sendFujitsuAC(const unsigned char data[], const uint16_t nbytes,
-
406  const uint16_t repeat = kFujitsuAcMinRepeat);
-
407 #endif
-
408 #if SEND_INAX
-
409  void sendInax(const uint64_t data, const uint16_t nbits = kInaxBits,
-
410  const uint16_t repeat = kInaxMinRepeat);
-
411 #endif // SEND_INAX
-
412 #if SEND_GLOBALCACHE
-
413  void sendGC(uint16_t buf[], uint16_t len);
-
414 #endif
-
415 #if SEND_KELVINATOR
-
416  void sendKelvinator(const unsigned char data[],
-
417  const uint16_t nbytes = kKelvinatorStateLength,
-
418  const uint16_t repeat = kKelvinatorDefaultRepeat);
-
419 #endif
-
420 #if SEND_DAIKIN
-
421  void sendDaikin(const unsigned char data[],
-
422  const uint16_t nbytes = kDaikinStateLength,
-
423  const uint16_t repeat = kDaikinDefaultRepeat);
-
424 #endif
-
425 #if SEND_DAIKIN64
-
426  void sendDaikin64(const uint64_t data, const uint16_t nbits = kDaikin64Bits,
-
427  const uint16_t repeat = kDaikin64DefaultRepeat);
-
428 #endif // SEND_DAIKIN64
-
429 #if SEND_DAIKIN128
-
430  void sendDaikin128(const unsigned char data[],
-
431  const uint16_t nbytes = kDaikin128StateLength,
-
432  const uint16_t repeat = kDaikin128DefaultRepeat);
-
433 #endif // SEND_DAIKIN128
-
434 #if SEND_DAIKIN152
-
435  void sendDaikin152(const unsigned char data[],
-
436  const uint16_t nbytes = kDaikin152StateLength,
-
437  const uint16_t repeat = kDaikin152DefaultRepeat);
-
438 #endif // SEND_DAIKIN152
-
439 #if SEND_DAIKIN160
-
440  void sendDaikin160(const unsigned char data[],
-
441  const uint16_t nbytes = kDaikin160StateLength,
-
442  const uint16_t repeat = kDaikin160DefaultRepeat);
-
443 #endif // SEND_DAIKIN160
-
444 #if SEND_DAIKIN176
-
445  void sendDaikin176(const unsigned char data[],
-
446  const uint16_t nbytes = kDaikin176StateLength,
-
447  const uint16_t repeat = kDaikin176DefaultRepeat);
-
448 #endif // SEND_DAIKIN176
-
449 #if SEND_DAIKIN2
-
450  void sendDaikin2(const unsigned char data[],
-
451  const uint16_t nbytes = kDaikin2StateLength,
-
452  const uint16_t repeat = kDaikin2DefaultRepeat);
-
453 #endif
-
454 #if SEND_DAIKIN216
-
455  void sendDaikin216(const unsigned char data[],
-
456  const uint16_t nbytes = kDaikin216StateLength,
-
457  const uint16_t repeat = kDaikin216DefaultRepeat);
-
458 #endif
-
459 #if SEND_AIWA_RC_T501
-
460  void sendAiwaRCT501(uint64_t data, uint16_t nbits = kAiwaRcT501Bits,
-
461  uint16_t repeat = kAiwaRcT501MinRepeats);
-
462 #endif
-
463 #if SEND_GREE
-
464  void sendGree(const uint64_t data, const uint16_t nbits = kGreeBits,
-
465  const uint16_t repeat = kGreeDefaultRepeat);
-
466  void sendGree(const uint8_t data[], const uint16_t nbytes = kGreeStateLength,
-
467  const uint16_t repeat = kGreeDefaultRepeat);
-
468 #endif
-
469 #if SEND_GOODWEATHER
-
470  void sendGoodweather(const uint64_t data,
-
471  const uint16_t nbits = kGoodweatherBits,
-
472  const uint16_t repeat = kGoodweatherMinRepeat);
-
473 #endif // SEND_GOODWEATHER
-
474 #if SEND_PRONTO
-
475  void sendPronto(uint16_t data[], uint16_t len, uint16_t repeat = kNoRepeat);
-
476 #endif
-
477 #if SEND_ARGO
-
478  void sendArgo(const unsigned char data[],
-
479  const uint16_t nbytes = kArgoStateLength,
-
480  const uint16_t repeat = kArgoDefaultRepeat);
-
481 #endif
-
482 #if SEND_TROTEC
-
483  void sendTrotec(const unsigned char data[],
-
484  const uint16_t nbytes = kTrotecStateLength,
-
485  const uint16_t repeat = kTrotecDefaultRepeat);
-
486 #endif
-
487 #if SEND_NIKAI
-
488  void sendNikai(uint64_t data, uint16_t nbits = kNikaiBits,
-
489  uint16_t repeat = kNoRepeat);
-
490 #endif
-
491 #if SEND_TOSHIBA_AC
-
492  void sendToshibaAC(const uint8_t data[],
-
493  const uint16_t nbytes = kToshibaACStateLength,
-
494  const uint16_t repeat = kToshibaACMinRepeat);
-
495 #endif
-
496 #if SEND_MIDEA
-
497  void sendMidea(uint64_t data, uint16_t nbits = kMideaBits,
-
498  uint16_t repeat = kMideaMinRepeat);
-
499 #endif // SEND_MIDEA
-
500 #if SEND_MIDEA24
-
501  void sendMidea24(const uint64_t data, const uint16_t nbits = kMidea24Bits,
-
502  const uint16_t repeat = kMidea24MinRepeat);
-
503 #endif // SEND_MIDEA24
-
504 #if SEND_MAGIQUEST
-
505  void sendMagiQuest(const uint64_t data, const uint16_t nbits = kMagiquestBits,
-
506  const uint16_t repeat = kNoRepeat);
-
507  uint64_t encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude);
-
508 #endif
-
509 #if SEND_LASERTAG
-
510  void sendLasertag(uint64_t data, uint16_t nbits = kLasertagBits,
-
511  uint16_t repeat = kLasertagMinRepeat);
-
512 #endif
-
513 #if SEND_CARRIER_AC
-
514  void sendCarrierAC(uint64_t data, uint16_t nbits = kCarrierAcBits,
-
515  uint16_t repeat = kCarrierAcMinRepeat);
-
516 #endif
-
517 #if SEND_CARRIER_AC40
-
518  void sendCarrierAC40(uint64_t data, uint16_t nbits = kCarrierAc40Bits,
-
519  uint16_t repeat = kCarrierAc40MinRepeat);
-
520 #endif
-
521 #if SEND_CARRIER_AC64
-
522  void sendCarrierAC64(uint64_t data, uint16_t nbits = kCarrierAc64Bits,
-
523  uint16_t repeat = kCarrierAc64MinRepeat);
-
524 #endif
-
525 #if (SEND_HAIER_AC || SEND_HAIER_AC_YRW02 || SEND_HAIER_AC176)
-
526  void sendHaierAC(const unsigned char data[],
-
527  const uint16_t nbytes = kHaierACStateLength,
-
528  const uint16_t repeat = kHaierAcDefaultRepeat);
-
529 #endif // (SEND_HAIER_AC || SEND_HAIER_AC_YRW02 || SEND_HAIER_AC176)
-
530 #if SEND_HAIER_AC_YRW02
-
531  void sendHaierACYRW02(const unsigned char data[],
-
532  const uint16_t nbytes = kHaierACYRW02StateLength,
-
533  const uint16_t repeat = kHaierAcYrw02DefaultRepeat);
-
534 #endif // SEND_HAIER_AC_YRW02
-
535 #if SEND_HAIER_AC176
-
536  void sendHaierAC176(const unsigned char data[],
-
537  const uint16_t nbytes = kHaierAC176StateLength,
-
538  const uint16_t repeat = kHaierAc176DefaultRepeat);
-
539 #endif // SEND_HAIER_AC176
-
540 #if SEND_HITACHI_AC
-
541  void sendHitachiAC(const unsigned char data[],
-
542  const uint16_t nbytes = kHitachiAcStateLength,
-
543  const uint16_t repeat = kHitachiAcDefaultRepeat);
-
544 #endif
-
545 #if SEND_HITACHI_AC1
-
546  void sendHitachiAC1(const unsigned char data[],
-
547  const uint16_t nbytes = kHitachiAc1StateLength,
-
548  const uint16_t repeat = kHitachiAcDefaultRepeat);
-
549 #endif
-
550 #if SEND_HITACHI_AC2
-
551  void sendHitachiAC2(const unsigned char data[],
-
552  const uint16_t nbytes = kHitachiAc2StateLength,
-
553  const uint16_t repeat = kHitachiAcDefaultRepeat);
-
554 #endif
-
555 #if SEND_HITACHI_AC3
-
556  void sendHitachiAc3(const unsigned char data[],
-
557  const uint16_t nbytes, // No default as there as so many
-
558  // different sizes
-
559  const uint16_t repeat = kHitachiAcDefaultRepeat);
-
560 #endif // SEND_HITACHI_AC3
-
561 #if SEND_HITACHI_AC344
-
562  void sendHitachiAc344(const unsigned char data[],
-
563  const uint16_t nbytes = kHitachiAc344StateLength,
-
564  const uint16_t repeat = kHitachiAcDefaultRepeat);
-
565 #endif // SEND_HITACHI_AC344
-
566 #if SEND_HITACHI_AC424
-
567  void sendHitachiAc424(const unsigned char data[],
-
568  const uint16_t nbytes = kHitachiAc424StateLength,
-
569  const uint16_t repeat = kHitachiAcDefaultRepeat);
-
570 #endif // SEND_HITACHI_AC424
-
571 #if SEND_GICABLE
-
572  void sendGICable(uint64_t data, uint16_t nbits = kGicableBits,
-
573  uint16_t repeat = kGicableMinRepeat);
-
574 #endif
-
575 #if SEND_WHIRLPOOL_AC
-
576  void sendWhirlpoolAC(const unsigned char data[],
-
577  const uint16_t nbytes = kWhirlpoolAcStateLength,
-
578  const uint16_t repeat = kWhirlpoolAcDefaultRepeat);
-
579 #endif
-
580 #if SEND_LUTRON
-
581  void sendLutron(uint64_t data, uint16_t nbits = kLutronBits,
-
582  uint16_t repeat = kNoRepeat);
-
583 #endif
-
584 #if SEND_ELECTRA_AC
-
585  void sendElectraAC(const unsigned char data[],
-
586  const uint16_t nbytes = kElectraAcStateLength,
-
587  const uint16_t repeat = kNoRepeat);
-
588 #endif
-
589 #if SEND_PANASONIC_AC
-
590  void sendPanasonicAC(const unsigned char data[],
-
591  const uint16_t nbytes = kPanasonicAcStateLength,
-
592  const uint16_t repeat = kPanasonicAcDefaultRepeat);
-
593 #endif // SEND_PANASONIC_AC
-
594 #if SEND_PANASONIC_AC32
-
595  void sendPanasonicAC32(const uint64_t data,
-
596  const uint16_t nbits = kPanasonicAc32Bits,
-
597  const uint16_t repeat = kPanasonicAcDefaultRepeat);
-
598 #endif // SEND_PANASONIC_AC32
-
599 #if SEND_PIONEER
-
600  void sendPioneer(const uint64_t data, const uint16_t nbits = kPioneerBits,
-
601  const uint16_t repeat = kNoRepeat);
-
602  uint64_t encodePioneer(uint16_t address, uint16_t command);
-
603 #endif
-
604 #if SEND_MWM
-
605  void sendMWM(const unsigned char data[], const uint16_t nbytes,
-
606  const uint16_t repeat = kNoRepeat);
-
607 #endif
-
608 #if SEND_VESTEL_AC
-
609  void sendVestelAc(const uint64_t data, const uint16_t nbits = kVestelAcBits,
-
610  const uint16_t repeat = kNoRepeat);
-
611 #endif
-
612 #if SEND_TCL112AC
-
613  void sendTcl112Ac(const unsigned char data[],
-
614  const uint16_t nbytes = kTcl112AcStateLength,
-
615  const uint16_t repeat = kTcl112AcDefaultRepeat);
-
616 #endif
-
617 #if SEND_TECO
-
618  void sendTeco(const uint64_t data, const uint16_t nbits = kTecoBits,
-
619  const uint16_t repeat = kNoRepeat);
-
620 #endif
-
621 #if SEND_LEGOPF
-
622  void sendLegoPf(const uint64_t data, const uint16_t nbits = kLegoPfBits,
-
623  const uint16_t repeat = kLegoPfMinRepeat);
-
624 #endif
-
625 #if SEND_NEOCLIMA
-
626  void sendNeoclima(const unsigned char data[],
-
627  const uint16_t nbytes = kNeoclimaStateLength,
-
628  const uint16_t repeat = kNeoclimaMinRepeat);
-
629 #endif // SEND_NEOCLIMA
-
630 #if SEND_AMCOR
-
631  void sendAmcor(const unsigned char data[],
-
632  const uint16_t nbytes = kAmcorStateLength,
-
633  const uint16_t repeat = kAmcorDefaultRepeat);
-
634 #endif // SEND_AMCOR
-
635 #if SEND_EPSON
-
636  void sendEpson(uint64_t data, uint16_t nbits = kEpsonBits,
-
637  uint16_t repeat = kEpsonMinRepeat);
-
638 #endif
-
639 #if SEND_SYMPHONY
-
640  void sendSymphony(uint64_t data, uint16_t nbits = kSymphonyBits,
-
641  uint16_t repeat = kSymphonyDefaultRepeat);
-
642 #endif
-
643 #if SEND_AIRWELL
-
644  void sendAirwell(uint64_t data, uint16_t nbits = kAirwellBits,
-
645  uint16_t repeat = kAirwellMinRepeats);
-
646 #endif
-
647 #if SEND_DELONGHI_AC
-
648  void sendDelonghiAc(uint64_t data, uint16_t nbits = kDelonghiAcBits,
-
649  uint16_t repeat = kDelonghiAcDefaultRepeat);
-
650 #endif
-
651 #if SEND_DOSHISHA
-
652  void sendDoshisha(const uint64_t data, uint16_t nbits = kDoshishaBits,
-
653  const uint16_t repeat = kNoRepeat);
-
654  uint64_t encodeDoshisha(const uint8_t command, const uint8_t channel = 0);
-
655 #endif // SEND_DOSHISHA
-
656 #if SEND_MULTIBRACKETS
-
657  void sendMultibrackets(const uint64_t data,
-
658  const uint16_t nbits = kMultibracketsBits,
-
659  const uint16_t repeat = kMultibracketsDefaultRepeat);
-
660 #endif
-
661 #if SEND_TECHNIBEL_AC
-
662  void sendTechnibelAc(uint64_t data, uint16_t nbits = kTechnibelAcBits,
-
663  uint16_t repeat = kTechnibelAcDefaultRepeat);
-
664 #endif
-
665 #if SEND_CORONA_AC
-
666  void sendCoronaAc(const uint8_t data[],
-
667  const uint16_t nbytes = kCoronaAcStateLength,
-
668  const uint16_t repeat = kNoRepeat);
-
669 #endif // SEND_CORONA_AC
-
670 #if SEND_ZEPEAL
-
671  void sendZepeal(const uint64_t data,
-
672  const uint16_t nbits = kZepealBits,
-
673  const uint16_t repeat = kZepealMinRepeat);
-
674 #endif // SEND_ZEPEAL
-
675 #if SEND_VOLTAS
-
676  void sendVoltas(const unsigned char data[],
-
677  const uint16_t nbytes = kVoltasStateLength,
-
678  const uint16_t repeat = kNoRepeat);
-
679 #endif // SEND_VOLTAS
-
680 #if SEND_METZ
-
681  void sendMetz(const uint64_t data,
-
682  const uint16_t nbits = kMetzBits,
-
683  const uint16_t repeat = kMetzMinRepeat);
-
684  static uint32_t encodeMetz(const uint8_t address, const uint8_t command,
-
685  const bool toggle = false);
-
686 #endif // SEND_METZ
-
687 #if SEND_TRANSCOLD
-
688  void sendTranscold(const uint64_t data, const uint16_t nbits = kTranscoldBits,
-
689  const uint16_t repeat = kTranscoldDefaultRepeat);
-
690 #endif // SEND_TRANSCOLD
-
691 #if SEND_ELITESCREENS
-
692  void sendElitescreens(const uint64_t data,
-
693  const uint16_t nbits = kEliteScreensBits,
-
694  const uint16_t repeat = kEliteScreensDefaultRepeat);
-
695 #endif // SEND_ELITESCREENS
-
696 #if SEND_MILESTAG2
-
697  // Since There 2 types of transmissions
-
698  // (14bits for Shooting by default, you can set 24 bit for msg delivery)
-
699  void sendMilestag2(const uint64_t data,
-
700  const uint16_t nbits = kMilesTag2ShotBits,
-
701  const uint16_t repeat = kMilesMinRepeat);
-
702 #endif // SEND_MILESTAG2
-
703 #if SEND_ECOCLIM
-
704  void sendEcoclim(const uint64_t data, const uint16_t nbits = kEcoclimBits,
-
705  const uint16_t repeat = kNoRepeat);
-
706 #endif // SEND_ECOCLIM
-
707 #if SEND_XMP
-
708  void sendXmp(const uint64_t data, const uint16_t nbits = kXmpBits,
-
709  const uint16_t repeat = kNoRepeat);
-
710 #endif // SEND_XMP
-
711 #if SEND_TRUMA
-
712  void sendTruma(const uint64_t data, const uint16_t nbits = kTrumaBits,
-
713  const uint16_t repeat = kNoRepeat);
-
714 #endif // SEND_TRUMA
-
715 #if SEND_TEKNOPOINT
-
716  void sendTeknopoint(const unsigned char data[],
-
717  const uint16_t nbytes = kTeknopointStateLength,
-
718  const uint16_t repeat = kNoRepeat);
-
719 #endif // SEND_TEKNOPOINT
-
720 #if SEND_KELON
-
721  void sendKelon(const uint64_t data, const uint16_t nbits = kKelonBits,
-
722  const uint16_t repeat = kNoRepeat);
-
723 #endif // SEND_KELON
-
724 
-
725  protected:
-
726 #ifdef UNIT_TEST
-
727 #ifndef HIGH
-
728 #define HIGH 0x1
-
729 #endif
-
730 #ifndef LOW
-
731 #define LOW 0x0
-
732 #endif
-
733 #endif // UNIT_TEST
-
734  uint8_t outputOn;
-
735  uint8_t outputOff;
-
736  VIRTUAL void ledOff();
-
737  VIRTUAL void ledOn();
-
738 #ifndef UNIT_TEST
-
739 
-
740  private:
-
741 #else
-
742  uint32_t _freq_unittest;
-
743 #endif // UNIT_TEST
-
744  uint16_t onTimePeriod;
-
745  uint16_t offTimePeriod;
-
746  uint16_t IRpin;
-
747  int8_t periodOffset;
-
748  uint8_t _dutycycle;
- -
750  uint32_t calcUSecPeriod(uint32_t hz, bool use_offset = true);
-
751 #if SEND_SONY
-
752  void _sendSony(const uint64_t data, const uint16_t nbits,
-
753  const uint16_t repeat, const uint16_t freq);
-
754 #endif // SEND_SONY
-
755 };
-
756 
-
757 #endif // IRSEND_H_
-
-
uint32_t calcUSecPeriod(uint32_t hz, bool use_offset=true)
Calculate the period for a given frequency.
Definition: IRsend.cpp:71
-
const uint16_t kDaikin152DefaultRepeat
Definition: IRremoteESP8266.h:978
-
void sendZepeal(const uint64_t data, const uint16_t nbits=kZepealBits, const uint16_t repeat=kZepealMinRepeat)
Send a Zepeal formatted message. Status: STABLE / Works on real device.
Definition: ir_Zepeal.cpp:47
-
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:985
-
void sendHaierACYRW02(const unsigned char data[], const uint16_t nbytes=kHaierACYRW02StateLength, const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
Send a Haier YR-W02 remote A/C formatted message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:75
-
const uint16_t kHaierAcYrw02DefaultRepeat
Definition: IRremoteESP8266.h:1021
-
void sendPronto(uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)
Send a Pronto Code formatted message. Status: STABLE / Known working.
Definition: ir_Pronto.cpp:56
-
void sendTeknopoint(const unsigned char data[], const uint16_t nbytes=kTeknopointStateLength, const uint16_t repeat=kNoRepeat)
Send a Teknopoint formatted message. Status: BETA / Probably works.
Definition: ir_Teknopoint.cpp:29
-
uint8_t outputOff
Definition: IRsend.h:735
-
int8_t periodOffset
Definition: IRsend.h:747
-
const uint16_t kMitsubishiACStateLength
Definition: IRremoteESP8266.h:1069
-
const uint16_t kMitsubishiHeavy152StateLength
Definition: IRremoteESP8266.h:1081
-
const uint16_t kAirwellMinRepeats
Definition: IRremoteESP8266.h:938
-
const uint16_t kMideaMinRepeat
Definition: IRremoteESP8266.h:1059
-
const uint16_t kMilesMinRepeat
Definition: IRremoteESP8266.h:1168
-
int16_t clock
Definition: IRsend.h:115
-
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1009
-
const uint16_t kGreeStateLength
Definition: IRremoteESP8266.h:1013
-
uint32_t encodeNEC(uint16_t address, uint16_t command)
Calculate the raw NEC data based on address and command. Status: STABLE / Expected to work.
Definition: ir_NEC.cpp:48
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:823
-
uint64_t encodeDoshisha(const uint8_t command, const uint8_t channel=0)
Encode Doshisha combining constant values with command and channel. Status: STABLE / Working.
Definition: ir_Doshisha.cpp:67
-
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:950
- -
void sendHitachiAc344(const unsigned char data[], const uint16_t nbytes=kHitachiAc344StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) Basically the same as sendHitatchiAC() ex...
Definition: ir_Hitachi.cpp:121
-
const uint16_t kDaikin2DefaultRepeat
Definition: IRremoteESP8266.h:967
-
@ kVoltasUnknown
Definition: IRsend.h:165
-
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1084
-
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1159
- -
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:937
-
const uint16_t kHaierAcDefaultRepeat
Definition: IRremoteESP8266.h:1018
-
void sendMidea(uint64_t data, uint16_t nbits=kMideaBits, uint16_t repeat=kMideaMinRepeat)
Send a Midea message Status: Alpha / Needs testing against a real device.
Definition: ir_Midea.cpp:53
-
const uint16_t kTrotecDefaultRepeat
Definition: IRremoteESP8266.h:1154
-
const uint16_t kFujitsuAcMinRepeat
Definition: IRremoteESP8266.h:1004
-
void sendLG(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
Send an LG formatted message. (LG) Status: Beta / Should be working.
Definition: ir_LG.cpp:54
-
void sendKelon(const uint64_t data, const uint16_t nbits=kKelonBits, const uint16_t repeat=kNoRepeat)
Send a Kelon message. Status: STABLE / Working.
Definition: ir_Kelon.cpp:49
-
@ kPanasonicRkr
Definition: IRsend.h:153
-
const uint16_t kMitsubishi136MinRepeat
Definition: IRremoteESP8266.h:1074
-
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
-
VIRTUAL void _delayMicroseconds(uint32_t usec)
An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds().
Definition: IRsend.cpp:114
-
bool clean
Definition: IRsend.h:112
-
void sendLegoPf(const uint64_t data, const uint16_t nbits=kLegoPfBits, const uint16_t repeat=kLegoPfMinRepeat)
Send a LEGO Power Functions message. Status: Beta / Should work.
Definition: ir_Lego.cpp:33
-
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:987
-
const uint16_t kArgoDefaultRepeat
Definition: IRremoteESP8266.h:947
-
uint8_t outputOn
Definition: IRsend.h:734
-
const uint16_t kHaierACStateLength
Definition: IRremoteESP8266.h:1016
-
const uint16_t kHitachiAcStateLength
Definition: IRremoteESP8266.h:1025
- -
void sendTruma(const uint64_t data, const uint16_t nbits=kTrumaBits, const uint16_t repeat=kNoRepeat)
Send a Truma formatted message. Status: STABLE / Confirmed working.
Definition: ir_Truma.cpp:40
-
const uint16_t kDaikin176StateLength
Definition: IRremoteESP8266.h:979
-
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:1103
-
const uint16_t kEpsonMinRepeat
Definition: IRremoteESP8266.h:998
-
const uint16_t kAmcorStateLength
Definition: IRremoteESP8266.h:942
-
bool send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)
Send a simple (up to 64 bits) IR message of a given type. An unknown/unsupported type will send nothi...
Definition: IRsend.cpp:773
-
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
-
@ R_LT0541_HTA_B
Definition: IRsend.h:142
-
void sendWhynter(const uint64_t data, const uint16_t nbits=kWhynterBits, const uint16_t repeat=kNoRepeat)
Send a Whynter message. Status: STABLE.
Definition: ir_Whynter.cpp:45
-
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:170
-
void sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes=kMitsubishiACStateLength, const uint16_t repeat=kMitsubishiACMinRepeat)
Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:236
-
void sendNikai(uint64_t data, uint16_t nbits=kNikaiBits, uint16_t repeat=kNoRepeat)
Send a Nikai formatted message. Status: STABLE / Working.
Definition: ir_Nikai.cpp:37
-
const uint32_t kDefaultMessageGap
Definition: IRsend.h:41
-
const uint16_t kMaxAccurateUsecDelay
Definition: IRsend.h:39
-
uint16_t encodeJVC(uint8_t address, uint8_t command)
Calculate the raw JVC data based on address and command. Status: STABLE / Works fine.
Definition: ir_JVC.cpp:78
-
uint16_t onTimePeriod
Definition: IRsend.h:744
-
void sendAiwaRCT501(uint64_t data, uint16_t nbits=kAiwaRcT501Bits, uint16_t repeat=kAiwaRcT501MinRepeats)
Send an Aiwa RC T501 formatted message. Status: BETA / Should work.
Definition: ir_Aiwa.cpp:30
-
uint16_t IRpin
Definition: IRsend.h:746
-
const uint16_t kHitachiAc1StateLength
Definition: IRremoteESP8266.h:1028
-
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:948
-
const uint16_t kMitsubishi112MinRepeat
Definition: IRremoteESP8266.h:1077
-
const uint16_t kHaierAC176StateLength
Definition: IRremoteESP8266.h:1022
-
const uint16_t kMirageStateLength
Definition: IRremoteESP8266.h:1062
-
void sendSymphony(uint64_t data, uint16_t nbits=kSymphonyBits, uint16_t repeat=kSymphonyDefaultRepeat)
Send a Symphony packet. Status: STABLE / Should be working.
Definition: ir_Symphony.cpp:42
-
void sendMetz(const uint64_t data, const uint16_t nbits=kMetzBits, const uint16_t repeat=kMetzMinRepeat)
Send a Metz formatted message. Status: Beta / Needs testing against a real device.
Definition: ir_Metz.cpp:32
-
const uint16_t kTeknopointStateLength
Definition: IRremoteESP8266.h:1141
-
void sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits i...
Definition: IRsend.cpp:307
- -
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1108
-
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1055
-
static uint16_t minRepeats(const decode_type_t protocol)
Get the minimum number of repeats for a given protocol.
Definition: IRsend.cpp:557
-
const uint16_t kNeoclimaStateLength
Definition: IRremoteESP8266.h:1088
-
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:134
-
const uint16_t kSamsungAcDefaultRepeat
Definition: IRremoteESP8266.h:1113
-
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1119
-
float degrees
Definition: IRsend.h:102
-
const uint16_t kMirageMinRepeat
Definition: IRremoteESP8266.h:1064
-
uint8_t _dutycycle
Definition: IRsend.h:748
-
bool celsius
Definition: IRsend.h:103
-
void sendLG2(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
Send an LG Variant-2 formatted message. (LG2) Status: Beta / Should be working.
Definition: ir_LG.cpp:88
-
const uint16_t kZepealMinRepeat
Definition: IRremoteESP8266.h:1163
-
VIRTUAL uint16_t mark(uint16_t usec)
Modulate the IR LED for the given period (usec) and at the duty cycle set.
Definition: IRsend.cpp:157
-
void sendToshibaAC(const uint8_t data[], const uint16_t nbytes=kToshibaACStateLength, const uint16_t repeat=kToshibaACMinRepeat)
Send a Toshiba A/C message. Status: STABLE / Working.
Definition: ir_Toshiba.cpp:50
-
@ ARRY4
(5) AR-RY4 (Same as AR-RAH2E but with clean & filter)
Definition: IRsend.h:129
-
@ ARDB1
(2) AR-DB1, AR-DL10 (AR-DL10 swing doesn't work)
Definition: IRsend.h:125
-
const uint16_t kTranscoldDefaultRepeat
Definition: IRremoteESP8266.h:1151
-
const uint16_t kMetzMinRepeat
Definition: IRremoteESP8266.h:1057
- -
void sendDaikin152(const unsigned char data[], const uint16_t nbytes=kDaikin152StateLength, const uint16_t repeat=kDaikin152DefaultRepeat)
Send a Daikin152 (152-bit) A/C formatted message. Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:3061
-
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1002
-
void sendAmcor(const unsigned char data[], const uint16_t nbytes=kAmcorStateLength, const uint16_t repeat=kAmcorDefaultRepeat)
Send a Amcor HVAC formatted message. Status: STABLE / Reported as working.
Definition: ir_Amcor.cpp:38
-
stdAc::swingv_t swingv
Definition: IRsend.h:105
-
void sendLasertag(uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)
Send a Lasertag packet/message. Status: STABLE / Working.
Definition: ir_Lasertag.cpp:33
-
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:140
-
void sendEpson(uint64_t data, uint16_t nbits=kEpsonBits, uint16_t repeat=kEpsonMinRepeat)
Send an Epson formatted message. Status: Beta / Probably works.
Definition: ir_Epson.cpp:24
-
Class for sending all basic IR protocols.
Definition: IRsend.h:188
-
void sendManchesterData(const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst=true, const bool GEThomas=true)
Generic method for sending Manchester code data. Will send leading or trailing 0's if the nbits is la...
Definition: IRsend.cpp:445
-
const uint16_t kAiwaRcT501MinRepeats
Definition: IRremoteESP8266.h:940
-
int8_t calibrate(uint16_t hz=38000U)
Calculate & set any offsets to account for execution times during sending.
Definition: IRsend.cpp:207
-
const uint16_t kVoltasStateLength
Definition: IRremoteESP8266.h:1165
- -
const uint16_t kMitsubishiMinRepeat
Definition: IRremoteESP8266.h:1068
-
uint64_t encodeSanyoLC7461(uint16_t address, uint8_t command)
Construct a Sanyo LC7461 message.
Definition: ir_Sanyo.cpp:80
-
@ ARJW2
(4) AR-JW2 (Same as ARDB1 but with horiz control)
Definition: IRsend.h:128
-
const uint16_t kArgoStateLength
Definition: IRremoteESP8266.h:945
- -
uint32_t encodeSAMSUNG(const uint8_t customer, const uint8_t command)
Construct a raw Samsung message from the supplied customer(address) & command. Status: STABLE / Shoul...
Definition: ir_Samsung.cpp:95
-
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:1091
-
int16_t model
Definition: IRsend.h:99
-
uint64_t toggleRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits)
Flip the toggle bit of a Philips RC-6 data message. Used to indicate a change of remote button's stat...
Definition: ir_RC5_RC6.cpp:157
-
void sendSony(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat)
Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) Status: STABLE / Known working.
Definition: ir_Sony.cpp:46
-
const uint8_t kDutyMax
Definition: IRsend.h:36
-
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1166
-
uint32_t _freq_unittest
Definition: IRsend.h:742
-
const uint16_t kDaikin152StateLength
Definition: IRremoteESP8266.h:976
-
uint32_t encodeLG(uint16_t address, uint16_t command)
Construct a raw 28-bit LG message code from the supplied address & command. Status: STABLE / Works.
Definition: ir_LG.cpp:116
-
void sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz)
Send a raw IRremote message.
Definition: IRsend.cpp:539
-
void sendMultibrackets(const uint64_t data, const uint16_t nbits=kMultibracketsBits, const uint16_t repeat=kMultibracketsDefaultRepeat)
Send a Multibrackets formatted message. Status: BETA / Appears to be working.
Definition: ir_Multibrackets.cpp:26
- -
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1161
-
const uint16_t kHaierACYRW02StateLength
Definition: IRremoteESP8266.h:1019
-
uint64_t encodeRC6(const uint32_t address, const uint8_t command, const uint16_t mode=kRC6Mode0Bits)
Encode a Philips RC-6 data message. Status: Beta / Should be working.
Definition: ir_RC5_RC6.cpp:171
-
const uint16_t kMultibracketsDefaultRepeat
Definition: IRremoteESP8266.h:1085
-
void sendMitsubishi112(const unsigned char data[], const uint16_t nbytes=kMitsubishi112StateLength, const uint16_t repeat=kMitsubishi112MinRepeat)
Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) Status: Stable / Reported as working...
Definition: ir_Mitsubishi.cpp:1211
-
@ A705
Definition: IRsend.h:159
-
@ kPanasonicCkp
Definition: IRsend.h:152
-
void sendWhirlpoolAC(const unsigned char data[], const uint16_t nbytes=kWhirlpoolAcStateLength, const uint16_t repeat=kWhirlpoolAcDefaultRepeat)
Send a Whirlpool A/C message. Status: BETA / Probably works.
Definition: ir_Whirlpool.cpp:55
- -
void sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst=true)
Generic method for sending data that is common to most protocols. Will send leading or trailing 0's i...
Definition: IRsend.cpp:246
-
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1011
-
void sendKelvinator(const unsigned char data[], const uint16_t nbytes=kKelvinatorStateLength, const uint16_t repeat=kKelvinatorDefaultRepeat)
Send a Kelvinator A/C message. Status: STABLE / Known working.
Definition: ir_Kelvinator.cpp:63
-
VIRTUAL void ledOn()
Turn on the IR LED.
Definition: IRsend.cpp:60
-
const uint16_t kGicableMinRepeat
Definition: IRremoteESP8266.h:1010
-
void sendHitachiAC1(const unsigned char data[], const uint16_t nbytes=kHitachiAc1StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) Status: STABLE / Confirmed Workin...
Definition: ir_Hitachi.cpp:87
-
const uint16_t kDaikin216StateLength
Definition: IRremoteESP8266.h:982
-
void sendGICable(uint64_t data, uint16_t nbits=kGicableBits, uint16_t repeat=kGicableMinRepeat)
Send a raw G.I. Cable formatted message. Status: Alpha / Untested.
Definition: ir_GICable.cpp:37
-
const uint16_t kSamsungAcStateLength
Definition: IRremoteESP8266.h:1109
-
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1043
-
@ DG11J13A
Definition: IRsend.h:171
-
void sendSharp(const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
Send a Sharp message Status: DEPRECATED / Previously working fine.
Definition: ir_Sharp.cpp:133
-
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:146
- -
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
- -
@ AKB75215403
Definition: IRsend.h:178
-
void sendDenon(uint64_t data, uint16_t nbits=kDenonBits, uint16_t repeat=kNoRepeat)
Send a Denon formatted message. Status: STABLE / Should be working.
Definition: ir_Denon.cpp:48
-
void sendCarrierAC64(uint64_t data, uint16_t nbits=kCarrierAc64Bits, uint16_t repeat=kCarrierAc64MinRepeat)
Send a Carrier 64bit HVAC formatted message. Status: STABLE / Known to be working.
Definition: ir_Carrier.cpp:176
-
void sendPioneer(const uint64_t data, const uint16_t nbits=kPioneerBits, const uint16_t repeat=kNoRepeat)
Send a raw Pioneer formatted message. Status: STABLE / Expected to be working.
Definition: ir_Pioneer.cpp:42
-
@ YAW1F
Definition: IRsend.h:135
-
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1134
- -
const uint16_t kDaikin128StateLength
Definition: IRremoteESP8266.h:973
-
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1104
-
const uint16_t kDaikin176DefaultRepeat
Definition: IRremoteESP8266.h:981
-
void sendPanasonic64(const uint64_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
Send a Panasonic formatted message. Status: STABLE / Should be working.
Definition: ir_Panasonic.cpp:72
-
const uint16_t kMitsubishiHeavy152MinRepeat
Definition: IRremoteESP8266.h:1083
-
void sendHaierAC(const unsigned char data[], const uint16_t nbytes=kHaierACStateLength, const uint16_t repeat=kHaierAcDefaultRepeat)
Send a Haier A/C formatted message. (HSU07-HEA03 remote) Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:52
-
void sendSamsung36(const uint64_t data, const uint16_t nbits=kSamsung36Bits, const uint16_t repeat=kNoRepeat)
Send a Samsung 36-bit formatted message. Status: STABLE / Works on real devices.
Definition: ir_Samsung.cpp:160
-
void sendVoltas(const unsigned char data[], const uint16_t nbytes=kVoltasStateLength, const uint16_t repeat=kNoRepeat)
Send a Voltas formatted message. Status: STABLE / Working on real device.
Definition: ir_Voltas.cpp:41
-
const uint16_t kNoRepeat
Definition: IRremoteESP8266.h:934
-
uint16_t offTimePeriod
Definition: IRsend.h:745
-
void sendHaierAC176(const unsigned char data[], const uint16_t nbytes=kHaierAC176StateLength, const uint16_t repeat=kHaierAc176DefaultRepeat)
Send a Haier 176 bit remote A/C formatted message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:87
-
const uint16_t kSony20Bits
Definition: IRremoteESP8266.h:1131
-
const uint16_t kMitsubishiACMinRepeat
Definition: IRremoteESP8266.h:1071
-
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1056
-
void sendSony38(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat+1)
Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. Status: STABLE / Known working...
Definition: ir_Sony.cpp:62
-
uint32_t encodeSony(const uint16_t nbits, const uint16_t command, const uint16_t address, const uint16_t extended=0)
Convert Sony/SIRC command, address, & extended bits into sendSony format. Status: STABLE / Should be ...
Definition: ir_Sony.cpp:88
- -
@ kPanasonicUnknown
Definition: IRsend.h:147
-
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
-
const uint16_t kPanasonicAcDefaultRepeat
Definition: IRremoteESP8266.h:1097
-
const uint16_t kSymphonyDefaultRepeat
Definition: IRremoteESP8266.h:1135
-
@ ARREB1E
(3) AR-REB1E, AR-RAH1U (Similar to ARRAH2E but no horiz control)
Definition: IRsend.h:126
-
void sendPanasonicAC(const unsigned char data[], const uint16_t nbytes=kPanasonicAcStateLength, const uint16_t repeat=kPanasonicAcDefaultRepeat)
Send a Panasonic A/C message. Status: STABLE / Work with real device(s).
Definition: ir_Panasonic.cpp:171
-
stdAc::swingh_t swingh
Definition: IRsend.h:106
-
const uint16_t kCoolixDefaultRepeat
Definition: IRremoteESP8266.h:949
-
@ kPanasonicNke
Definition: IRsend.h:149
-
@ GE6711AR2853M
Definition: IRsend.h:177
-
@ ARREW4E
(6) Similar to ARRAH2E, but with different temp config.
Definition: IRsend.h:130
-
void sendHitachiAc3(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) Status: STABLE / Working fine.
Definition: ir_Hitachi.cpp:1333
-
const uint16_t kTcl112AcDefaultRepeat
Definition: IRremoteESP8266.h:1138
-
const uint16_t kDelonghiAcDefaultRepeat
Definition: IRremoteESP8266.h:986
-
void sendSanyoAc(const uint8_t *data, const uint16_t nbytes=kSanyoAcStateLength, const uint16_t repeat=kNoRepeat)
Send a SanyoAc formatted message. Status: STABLE / Reported as working.
Definition: ir_Sanyo.cpp:252
-
const uint16_t kCoronaAcStateLength
Definition: IRremoteESP8266.h:957
-
void sendRC5(const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)
Send a Philips RC-5/RC-5X packet. Status: RC-5 (stable), RC-5X (alpha)
Definition: ir_RC5_RC6.cpp:61
-
void sendMitsubishi(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
Send the supplied Mitsubishi 16-bit message. Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:107
-
void sendAirwell(uint64_t data, uint16_t nbits=kAirwellBits, uint16_t repeat=kAirwellMinRepeats)
Send an Airwell Manchester Code formatted message. Status: BETA / Appears to be working.
Definition: ir_Airwell.cpp:31
-
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:994
-
const uint16_t kHaierAc176DefaultRepeat
Definition: IRremoteESP8266.h:1024
-
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:952
- -
const uint16_t kTrotecStateLength
Definition: IRremoteESP8266.h:1152
-
const uint16_t kWhirlpoolAcDefaultRepeat
Definition: IRremoteESP8266.h:1158
-
void sendMirage(const unsigned char data[], const uint16_t nbytes=kMirageStateLength, const uint16_t repeat=kMirageMinRepeat)
Send a Mirage formatted message. Status: STABLE / Reported as working.
Definition: ir_Mirage.cpp:30
-
void sendSAMSUNG(const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)
Send a 32-bit Samsung formatted message. Status: STABLE / Should be working.
Definition: ir_Samsung.cpp:81
-
const uint16_t kHitachiAc424StateLength
Definition: IRremoteESP8266.h:1038
-
const uint16_t kMitsubishiHeavy88StateLength
Definition: IRremoteESP8266.h:1078
-
void sendNeoclima(const unsigned char data[], const uint16_t nbytes=kNeoclimaStateLength, const uint16_t repeat=kNeoclimaMinRepeat)
Send a Neoclima message. Status: STABLE / Known to be working.
Definition: ir_Neoclima.cpp:40
-
void sendSharpRaw(const uint64_t data, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
Send a (raw) Sharp message.
Definition: ir_Sharp.cpp:63
- -
void sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)
Send a Gree Heat Pump formatted message. Status: STABLE / Working.
Definition: ir_Gree.cpp:75
- -
void sendEcoclim(const uint64_t data, const uint16_t nbits=kEcoclimBits, const uint16_t repeat=kNoRepeat)
Send a EcoClim A/C formatted message. Status: STABLE / Confirmed working on real device.
Definition: ir_Ecoclim.cpp:41
-
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:1065
-
void sendMitsubishi136(const unsigned char data[], const uint16_t nbytes=kMitsubishi136StateLength, const uint16_t repeat=kMitsubishi136MinRepeat)
Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: BETA / Probably working....
Definition: ir_Mitsubishi.cpp:846
-
Enumerators and Structures for the Common A/C API.
Definition: IRsend.h:44
-
@ R_LT0541_HTA_A
Definition: IRsend.h:141
-
const uint16_t kPanasonicAcStateLength
Definition: IRremoteESP8266.h:1093
-
void sendMitsubishiHeavy88(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy88StateLength, const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
Send a MitsubishiHeavy 88-bit A/C message. Status: BETA / Appears to be working. Needs testing agains...
Definition: ir_MitsubishiHeavy.cpp:47
-
void sendVestelAc(const uint64_t data, const uint16_t nbits=kVestelAcBits, const uint16_t repeat=kNoRepeat)
Send a Vestel message Status: STABLE / Working.
Definition: ir_Vestel.cpp:36
-
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1058
-
static uint32_t encodeMetz(const uint8_t address, const uint8_t command, const bool toggle=false)
Encode a Metz address, command, and toggle bits into a code suitable for use with sendMetz().
Definition: ir_Metz.cpp:48
-
const uint16_t kKelvinatorStateLength
Definition: IRremoteESP8266.h:1044
-
void sendMidea24(const uint64_t data, const uint16_t nbits=kMidea24Bits, const uint16_t repeat=kMidea24MinRepeat)
Send a Midea24 formatted message. Status: STABLE / Confirmed working on a real device.
Definition: ir_Midea.cpp:732
-
static uint16_t defaultBits(const decode_type_t protocol)
Get the default number of bits for a given protocol.
Definition: IRsend.cpp:599
-
decode_type_t protocol
Definition: IRsend.h:98
- -
const uint16_t kDaikin216DefaultRepeat
Definition: IRremoteESP8266.h:984
- -
bool beep
Definition: IRsend.h:113
-
const uint16_t kWhirlpoolAcStateLength
Definition: IRremoteESP8266.h:1156
-
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1087
-
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:989
-
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1162
-
bool filter
Definition: IRsend.h:111
-
const uint16_t kCarrierAc40MinRepeat
Definition: IRremoteESP8266.h:953
-
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1060
-
void sendElitescreens(const uint64_t data, const uint16_t nbits=kEliteScreensBits, const uint16_t repeat=kEliteScreensDefaultRepeat)
Send an Elite Screens formatted message. Status: BETA / Probably Working.
Definition: ir_EliteScreens.cpp:44
-
void sendDelonghiAc(uint64_t data, uint16_t nbits=kDelonghiAcBits, uint16_t repeat=kDelonghiAcDefaultRepeat)
Send a Delonghi A/C formatted message. Status: STABLE / Reported as working on a real device.
Definition: ir_Delonghi.cpp:36
-
const uint16_t kDaikin160DefaultRepeat
Definition: IRremoteESP8266.h:972
-
void _sendSony(const uint64_t data, const uint16_t nbits, const uint16_t repeat, const uint16_t freq)
Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message Status: STABLE / Known w...
Definition: ir_Sony.cpp:73
-
const uint16_t kToshibaACMinRepeat
Definition: IRremoteESP8266.h:1145
-
void enableIROut(uint32_t freq, uint8_t duty=kDutyDefault)
Set the output frequency modulation and duty cycle.
Definition: IRsend.cpp:92
- -
const uint16_t kHitachiAc344StateLength
Definition: IRremoteESP8266.h:1036
-
void sendXmp(const uint64_t data, const uint16_t nbits=kXmpBits, const uint16_t repeat=kNoRepeat)
Send a XMP packet. Status: Beta / Untested against a real device.
Definition: ir_Xmp.cpp:122
-
@ kPanasonicDke
Definition: IRsend.h:150
-
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:954
-
const uint16_t kDaikin128DefaultRepeat
Definition: IRremoteESP8266.h:975
-
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1099
-
const uint16_t kSharpAcStateLength
Definition: IRremoteESP8266.h:1124
-
void sendSharpAc(const unsigned char data[], const uint16_t nbytes=kSharpAcStateLength, const uint16_t repeat=kSharpAcDefaultRepeat)
Send a Sharp A/C message. Status: Alpha / Untested.
Definition: ir_Sharp.cpp:226
-
@ kPanasonicLke
Definition: IRsend.h:148
-
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1014
-
void sendCarrierAC(uint64_t data, uint16_t nbits=kCarrierAcBits, uint16_t repeat=kCarrierAcMinRepeat)
Send a Carrier HVAC formatted message. Status: STABLE / Works on real devices.
Definition: ir_Carrier.cpp:55
-
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1042
-
const uint16_t kDaikinStateLength
Definition: IRremoteESP8266.h:960
-
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1047
-
void sendDaikin160(const unsigned char data[], const uint16_t nbytes=kDaikin160StateLength, const uint16_t repeat=kDaikin160DefaultRepeat)
Send a Daikin160 (160-bit) A/C formatted message. Status: STABLE / Confirmed working.
Definition: ir_Daikin.cpp:1766
-
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:939
-
void sendDaikin2(const unsigned char data[], const uint16_t nbytes=kDaikin2StateLength, const uint16_t repeat=kDaikin2DefaultRepeat)
Send a Daikin2 (312-bit) A/C formatted message. Status: STABLE / Expected to work.
Definition: ir_Daikin.cpp:667
-
@ ARRAH2E
(1) AR-RAH2E, AR-RAC1E, AR-RAE1E, AR-RCE1E (Default) Warning: Use on incorrect models can cause the A...
Definition: IRsend.h:121
-
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1155
-
const uint16_t kToshibaACStateLength
Definition: IRremoteESP8266.h:1143
-
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1139
-
void sendMitsubishi2(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
Send a supplied second variant Mitsubishi 16-bit message. Status: BETA / Probably works.
Definition: ir_Mitsubishi.cpp:164
-
const uint16_t kInaxMinRepeat
Definition: IRremoteESP8266.h:1041
-
VIRTUAL void ledOff()
Turn off the IR LED.
Definition: IRsend.cpp:53
- -
const uint8_t kSherwoodBits
Definition: IRremoteESP8266.h:1127
-
stdAc::opmode_t mode
Definition: IRsend.h:101
-
const uint16_t kDaikinDefaultRepeat
Definition: IRremoteESP8266.h:964
-
const uint16_t kDaikin64DefaultRepeat
Definition: IRremoteESP8266.h:969
-
void sendInax(const uint64_t data, const uint16_t nbits=kInaxBits, const uint16_t repeat=kInaxMinRepeat)
Send a Inax Toilet formatted message. Status: STABLE / Working.
Definition: ir_Inax.cpp:31
-
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:176
-
void sendTranscold(const uint64_t data, const uint16_t nbits=kTranscoldBits, const uint16_t repeat=kTranscoldDefaultRepeat)
Send a Transcold message Status: STABLE / Confirmed Working.
Definition: ir_Transcold.cpp:40
-
const uint16_t kMitsubishiHeavy88MinRepeat
Definition: IRremoteESP8266.h:1080
- -
@ kVoltas122LZF
Definition: IRsend.h:166
-
const uint16_t kHitachiAcDefaultRepeat
Definition: IRremoteESP8266.h:1027
-
bool econo
Definition: IRsend.h:109
-
void sendSherwood(uint64_t data, uint16_t nbits=kSherwoodBits, uint16_t repeat=kSherwoodMinRepeat)
Send an IR command to a Sherwood device. Status: STABLE / Known working.
Definition: ir_Sherwood.cpp:21
-
const uint16_t kMidea24MinRepeat
Definition: IRremoteESP8266.h:1061
-
void sendMitsubishiHeavy152(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy152StateLength, const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
Send a MitsubishiHeavy 152-bit A/C message. Status: BETA / Appears to be working. Needs testing again...
Definition: ir_MitsubishiHeavy.cpp:64
-
const uint16_t kDishBits
Definition: IRremoteESP8266.h:992
-
const uint16_t kDishMinRepeat
Definition: IRremoteESP8266.h:993
-
void sendMilestag2(const uint64_t data, const uint16_t nbits=kMilesTag2ShotBits, const uint16_t repeat=kMilesMinRepeat)
Percentage.
Definition: ir_MilesTag2.cpp:41
- -
void sendPanasonic(const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
Send a Panasonic formatted message. Status: STABLE, but DEPRECATED.
Definition: ir_Panasonic.cpp:89
-
VIRTUAL void space(uint32_t usec)
Turn the pin (LED) off for a given time. Sends an IR space for the specified number of microseconds....
Definition: IRsend.cpp:194
-
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1030
-
void sendGC(uint16_t buf[], uint16_t len)
Send a shortened GlobalCache (GC) IRdb/control tower formatted message. Status: STABLE / Known workin...
Definition: ir_GlobalCache.cpp:35
-
uint16_t encodeRC5(const uint8_t address, const uint8_t command, const bool key_released=false)
Encode a Philips RC-5 data message. Status: Beta / Should be working.
Definition: ir_RC5_RC6.cpp:115
-
void sendJVC(uint64_t data, uint16_t nbits=kJvcBits, uint16_t repeat=kNoRepeat)
Send a JVC formatted message. Status: STABLE / Working.
Definition: ir_JVC.cpp:46
-
void sendDoshisha(const uint64_t data, uint16_t nbits=kDoshishaBits, const uint16_t repeat=kNoRepeat)
Send a Doshisha formatted message. Status: STABLE / Works on real device.
Definition: ir_Doshisha.cpp:53
- -
uint64_t toggleRC5(const uint64_t data)
Flip the toggle bit of a Philips RC-5/RC-5X data message. Used to indicate a change of remote button'...
Definition: ir_RC5_RC6.cpp:142
-
void sendDaikin(const unsigned char data[], const uint16_t nbytes=kDaikinStateLength, const uint16_t repeat=kDaikinDefaultRepeat)
Send a Daikin 280-bit A/C formatted message. Status: STABLE.
Definition: ir_Daikin.cpp:63
-
const uint16_t kCarrierAcMinRepeat
Definition: IRremoteESP8266.h:951
-
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1086
-
uint64_t encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude)
Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. (Only 48 bits of real data + 8...
Definition: ir_Magiquest.cpp:42
- -
const uint16_t kKelvinatorDefaultRepeat
Definition: IRremoteESP8266.h:1046
-
void sendHitachiAC2(const unsigned char data[], const uint16_t nbytes=kHitachiAc2StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) Basically the same as sendHitatch...
Definition: ir_Hitachi.cpp:105
-
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1054
-
void sendDaikin128(const unsigned char data[], const uint16_t nbytes=kDaikin128StateLength, const uint16_t repeat=kDaikin128DefaultRepeat)
Send a Daikin128 (128-bit) A/C formatted message. Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:2524
-
void sendCarrierAC40(uint64_t data, uint16_t nbits=kCarrierAc40Bits, uint16_t repeat=kCarrierAc40MinRepeat)
Send a Carrier 40bit HVAC formatted message. Status: STABLE / Tested against a real device.
Definition: ir_Carrier.cpp:127
-
void sendPanasonicAC32(const uint64_t data, const uint16_t nbits=kPanasonicAc32Bits, const uint16_t repeat=kPanasonicAcDefaultRepeat)
Send a Panasonic AC 32/16bit formatted message. Status: STABLE / Confirmed working.
Definition: ir_Panasonic.cpp:911
-
const uint16_t kSharpAcDefaultRepeat
Definition: IRremoteESP8266.h:1126
- -
void sendTrotec(const unsigned char data[], const uint16_t nbytes=kTrotecStateLength, const uint16_t repeat=kTrotecDefaultRepeat)
Send a Trotec message. Status: Beta / Probably Working.
Definition: ir_Trotec.cpp:41
-
void sendCoronaAc(const uint8_t data[], const uint16_t nbytes=kCoronaAcStateLength, const uint16_t repeat=kNoRepeat)
Send a CoronaAc formatted message. Status: STABLE / Working on real device.
Definition: ir_Corona.cpp:50
-
@ A903
Definition: IRsend.h:160
-
bool light
Definition: IRsend.h:110
-
stdAc::fanspeed_t fanspeed
Definition: IRsend.h:104
-
const uint16_t kEliteScreensDefaultRepeat
Definition: IRremoteESP8266.h:1003
-
const uint16_t kTcl112AcStateLength
Definition: IRremoteESP8266.h:1136
-
void sendRCMM(uint64_t data, uint16_t nbits=kRCMMBits, uint16_t repeat=kNoRepeat)
Send a Philips RC-MM packet. Status: STABLE / Should be working.
Definition: ir_RCMM.cpp:46
-
void sendManchester(const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency=38, const bool MSBfirst=true, const uint16_t repeat=kNoRepeat, const uint8_t dutycycle=kDutyDefault, const bool GEThomas=true)
Generic method for sending Manchester code messages. Will send leading or trailing 0's if the nbits i...
Definition: IRsend.cpp:506
-
const uint16_t kDaikin160StateLength
Definition: IRremoteESP8266.h:970
-
void sendHitachiAC(const unsigned char data[], const uint16_t nbytes=kHitachiAcStateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) Status: STABLE / Working.
Definition: ir_Hitachi.cpp:66
-
const uint16_t kDaikin2StateLength
Definition: IRremoteESP8266.h:965
-
void sendElectraAC(const unsigned char data[], const uint16_t nbytes=kElectraAcStateLength, const uint16_t repeat=kNoRepeat)
Send a Electra A/C formatted message. Status: Alpha / Needs testing against a real device.
Definition: ir_Electra.cpp:39
- -
const uint16_t kEcoclimBits
Definition: IRremoteESP8266.h:995
-
const uint16_t kSherwoodMinRepeat
Definition: IRremoteESP8266.h:1128
-
const uint16_t kCarrierAc64MinRepeat
Definition: IRremoteESP8266.h:955
-
@ DG11J191
Definition: IRsend.h:172
-
void begin()
Enable the pin for output.
Definition: IRsend.cpp:45
-
const uint16_t kSanyoAcStateLength
Definition: IRremoteESP8266.h:1114
-
const uint16_t kTechnibelAcDefaultRepeat
Definition: IRremoteESP8266.h:988
-
void sendFujitsuAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kFujitsuAcMinRepeat)
Send a Fujitsu A/C formatted message. Status: STABLE / Known Good.
Definition: ir_Fujitsu.cpp:53
- -
uint32_t encodeSharp(const uint16_t address, const uint16_t command, const uint16_t expansion=1, const uint16_t check=0, const bool MSBfirst=false)
Encode a (raw) Sharp message from it's components. Status: STABLE / Works okay.
Definition: ir_Sharp.cpp:98
- -
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1049
-
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1123
-
int16_t sleep
Definition: IRsend.h:114
-
bool power
Definition: IRsend.h:100
- -
void sendHitachiAc424(const unsigned char data[], const uint16_t nbytes=kHitachiAc424StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) Status: STABLE / Reported as wo...
Definition: ir_Hitachi.cpp:927
-
void sendTeco(const uint64_t data, const uint16_t nbits=kTecoBits, const uint16_t repeat=kNoRepeat)
Send a Teco A/C message. Status: Beta / Probably working.
Definition: ir_Teco.cpp:37
- -
const uint16_t kMitsubishi136StateLength
Definition: IRremoteESP8266.h:1072
-
void sendLutron(uint64_t data, uint16_t nbits=kLutronBits, uint16_t repeat=kNoRepeat)
Send a Lutron formatted message. Status: Stable / Appears to be working for real devices.
Definition: ir_Lutron.cpp:41
-
void sendSamsungAC(const unsigned char data[], const uint16_t nbytes=kSamsungAcStateLength, const uint16_t repeat=kSamsungAcDefaultRepeat)
Send a Samsung A/C message. Status: Stable / Known working.
Definition: ir_Samsung.cpp:241
-
uint64_t encodePanasonic(const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, const uint8_t function)
Calculate the raw Panasonic data based on device, subdevice, & function. Status: STABLE / Should be w...
Definition: ir_Panasonic.cpp:103
-
void sendSanyoLC7461(const uint64_t data, const uint16_t nbits=kSanyoLC7461Bits, const uint16_t repeat=kNoRepeat)
Send a Sanyo LC7461 message. Status: BETA / Probably works.
Definition: ir_Sanyo.cpp:112
-
IRsend(uint16_t IRsendPin, bool inverted=false, bool use_modulation=true)
Constructor for an IRsend object.
Definition: IRsend.cpp:28
-
void sendDISH(uint64_t data, uint16_t nbits=kDishBits, uint16_t repeat=kDishMinRepeat)
Send a DISH NETWORK formatted message. Status: STABLE / Working.
Definition: ir_Dish.cpp:48
-
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:1106
-
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1160
-
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1150
-
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1040
-
@ YBOFB
Definition: IRsend.h:136
-
const uint16_t kLegoPfMinRepeat
Definition: IRremoteESP8266.h:1050
-
@ A907
Definition: IRsend.h:158
-
const uint16_t kAmcorDefaultRepeat
Definition: IRremoteESP8266.h:944
-
void sendDaikin216(const unsigned char data[], const uint16_t nbytes=kDaikin216StateLength, const uint16_t repeat=kDaikin216DefaultRepeat)
Send a Daikin216 (216-bit) A/C formatted message. Status: Alpha / Untested on a real device.
Definition: ir_Daikin.cpp:1413
-
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1107
-
uint64_t encodePioneer(uint16_t address, uint16_t command)
Calculate the raw Pioneer data code based on two NEC sub-codes Status: STABLE / Expected to work.
Definition: ir_Pioneer.cpp:77
-
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:968
-
bool quiet
Definition: IRsend.h:107
-
uint16_t encodeRC5X(const uint8_t address, const uint8_t command, const bool key_released=false)
Encode a Philips RC-5X data message. Status: Beta / Should be working.
Definition: ir_RC5_RC6.cpp:127
-
Structure to hold a common A/C state.
Definition: IRsend.h:97
-
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1098
-
const uint16_t kLasertagMinRepeat
Definition: IRremoteESP8266.h:1048
-
const uint8_t kDutyDefault
Definition: IRsend.h:35
-
bool turbo
Definition: IRsend.h:108
-
void sendMagiQuest(const uint64_t data, const uint16_t nbits=kMagiquestBits, const uint16_t repeat=kNoRepeat)
Send a MagiQuest formatted message. Status: Beta / Should be working.
Definition: ir_Magiquest.cpp:25
-
void sendTechnibelAc(uint64_t data, uint16_t nbits=kTechnibelAcBits, uint16_t repeat=kTechnibelAcDefaultRepeat)
Send an Technibel AC formatted message. Status: STABLE / Reported as working on a real device.
Definition: ir_Technibel.cpp:35
-
bool modulation
Definition: IRsend.h:749
-
const uint16_t kNeoclimaMinRepeat
Definition: IRremoteESP8266.h:1090
-
const uint16_t kMitsubishi112StateLength
Definition: IRremoteESP8266.h:1075
- -
void sendArgo(const unsigned char data[], const uint16_t nbytes=kArgoStateLength, const uint16_t repeat=kArgoDefaultRepeat)
Send a Argo A/C formatted message. Status: BETA / Probably works.
Definition: ir_Argo.cpp:38
-
void sendTcl112Ac(const unsigned char data[], const uint16_t nbytes=kTcl112AcStateLength, const uint16_t repeat=kTcl112AcDefaultRepeat)
Send a TCL 112-bit A/C message. Status: Beta / Probably working.
Definition: ir_Tcl.cpp:31
-
@ kPanasonicJke
Definition: IRsend.h:151
- -
const uint16_t kSonyMinRepeat
Definition: IRremoteESP8266.h:1133
-
void sendCOOLIX(uint64_t data, uint16_t nbits=kCoolixBits, uint16_t repeat=kCoolixDefaultRepeat)
Send a Coolix message Status: STABLE / Confirmed Working.
Definition: ir_Coolix.cpp:49
-
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:997
-
void sendNEC(uint64_t data, uint16_t nbits=kNECBits, uint16_t repeat=kNoRepeat)
Send a raw NEC(Renesas) formatted message. Status: STABLE / Known working.
Definition: ir_NEC.cpp:28
-
void sendMWM(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kNoRepeat)
Send a MWM packet/message. Status: Implemented.
Definition: ir_MWM.cpp:37
-
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition: IRsend.h:164
-
void sendDaikin64(const uint64_t data, const uint16_t nbits=kDaikin64Bits, const uint16_t repeat=kDaikin64DefaultRepeat)
Send a Daikin64 (64-bit) A/C formatted message. Status: Beta / Probably Working.
Definition: ir_Daikin.cpp:3440
-
void sendRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits, const uint16_t repeat=kNoRepeat)
Send a Philips RC-6 packet. Status: Stable.
Definition: ir_RC5_RC6.cpp:190
-
const int8_t kPeriodOffset
Definition: IRsend.h:26
-
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1051
-
void sendDaikin176(const unsigned char data[], const uint16_t nbytes=kDaikin176StateLength, const uint16_t repeat=kDaikin176DefaultRepeat)
Send a Daikin176 (176-bit) A/C formatted message. Status: STABLE / Working on a real device.
Definition: ir_Daikin.cpp:2130
-
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition: IRsend.h:157
-
const uint16_t kGoodweatherMinRepeat
Definition: IRremoteESP8266.h:1012
-
const uint16_t kElectraAcStateLength
Definition: IRremoteESP8266.h:999
-
const uint16_t kGreeDefaultRepeat
Definition: IRremoteESP8266.h:1015
-
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
-
void sendGoodweather(const uint64_t data, const uint16_t nbits=kGoodweatherBits, const uint16_t repeat=kGoodweatherMinRepeat)
Send a Goodweather HVAC formatted message. Status: BETA / Needs testing on real device.
Definition: ir_Goodweather.cpp:31
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8cpp.html deleted file mode 100644 index 999c80f4d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8cpp.html +++ /dev/null @@ -1,2959 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRtext.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRtext.cpp File Reference
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

const PROGMEM char * kUnknownStr = D_STR_UNKNOWN
 "Unknown" More...
 
const PROGMEM char * kProtocolStr = D_STR_PROTOCOL
 "Protocol" More...
 
const PROGMEM char * kPowerStr = D_STR_POWER
 "Power" More...
 
const PROGMEM char * kOnStr = D_STR_ON
 "On" More...
 
const PROGMEM char * kOffStr = D_STR_OFF
 "Off" More...
 
const PROGMEM char * kModeStr = D_STR_MODE
 "Mode" More...
 
const PROGMEM char * kToggleStr = D_STR_TOGGLE
 "Toggle" More...
 
const PROGMEM char * kTurboStr = D_STR_TURBO
 "Turbo" More...
 
const PROGMEM char * kSuperStr = D_STR_SUPER
 "Super" More...
 
const PROGMEM char * kSleepStr = D_STR_SLEEP
 "Sleep" More...
 
const PROGMEM char * kLightStr = D_STR_LIGHT
 "Light" More...
 
const PROGMEM char * kPowerfulStr = D_STR_POWERFUL
 "Powerful" More...
 
const PROGMEM char * kQuietStr = D_STR_QUIET
 "Quiet" More...
 
const PROGMEM char * kEconoStr = D_STR_ECONO
 "Econo" More...
 
const PROGMEM char * kSwingStr = D_STR_SWING
 "Swing" More...
 
const PROGMEM char * kSwingHStr = D_STR_SWINGH
 "SwingH" More...
 
const PROGMEM char * kSwingVStr = D_STR_SWINGV
 "SwingV" More...
 
const PROGMEM char * kBeepStr = D_STR_BEEP
 "Beep" More...
 
const PROGMEM char * kZoneFollowStr = D_STR_ZONEFOLLOW
 "Zone Follow" More...
 
const PROGMEM char * kFixedStr = D_STR_FIXED
 "Fixed" More...
 
const PROGMEM char * kMouldStr = D_STR_MOULD
 "Mould" More...
 
const PROGMEM char * kCleanStr = D_STR_CLEAN
 "Clean" More...
 
const PROGMEM char * kPurifyStr = D_STR_PURIFY
 "Purify" More...
 
const PROGMEM char * kTimerStr = D_STR_TIMER
 "Timer" More...
 
const PROGMEM char * kOnTimerStr = D_STR_ONTIMER
 "OnTimer" More...
 
const PROGMEM char * kOffTimerStr = D_STR_OFFTIMER
 "OffTimer" More...
 
const PROGMEM char * kClockStr = D_STR_CLOCK
 "Clock" More...
 
const PROGMEM char * kCommandStr = D_STR_COMMAND
 "Command" More...
 
const PROGMEM char * kXFanStr = D_STR_XFAN
 "XFan" More...
 
const PROGMEM char * kHealthStr = D_STR_HEALTH
 "Health" More...
 
const PROGMEM char * kModelStr = D_STR_MODEL
 "Model" More...
 
const PROGMEM char * kTempStr = D_STR_TEMP
 "Temp" More...
 
const PROGMEM char * kIFeelStr = D_STR_IFEEL
 "IFeel" More...
 
const PROGMEM char * kHumidStr = D_STR_HUMID
 "Humid" More...
 
const PROGMEM char * kSaveStr = D_STR_SAVE
 "Save" More...
 
const PROGMEM char * kEyeStr = D_STR_EYE
 "Eye" More...
 
const PROGMEM char * kFollowStr = D_STR_FOLLOW
 "Follow" More...
 
const PROGMEM char * kIonStr = D_STR_ION
 "Ion" More...
 
const PROGMEM char * kFreshStr = D_STR_FRESH
 "Fresh" More...
 
const PROGMEM char * kHoldStr = D_STR_HOLD
 "Hold" More...
 
const PROGMEM char * kButtonStr = D_STR_BUTTON
 "Button" More...
 
const PROGMEM char * k8CHeatStr = D_STR_8C_HEAT
 "8C Heat" More...
 
const PROGMEM char * k10CHeatStr = D_STR_10C_HEAT
 "10C Heat" More...
 
const PROGMEM char * kNightStr = D_STR_NIGHT
 "Night" More...
 
const PROGMEM char * kSilentStr = D_STR_SILENT
 "Silent" More...
 
const PROGMEM char * kFilterStr = D_STR_FILTER
 "Filter" More...
 
const PROGMEM char * k3DStr = D_STR_3D
 "3D" More...
 
const PROGMEM char * kCelsiusStr = D_STR_CELSIUS
 "Celsius" More...
 
const PROGMEM char * kCelsiusFahrenheitStr = D_STR_CELSIUS_FAHRENHEIT
 "Celsius/Fahrenheit" More...
 
const PROGMEM char * kTempUpStr = D_STR_TEMPUP
 "Temp Up" More...
 
const PROGMEM char * kTempDownStr = D_STR_TEMPDOWN
 "Temp Down" More...
 
const PROGMEM char * kStartStr = D_STR_START
 "Start" More...
 
const PROGMEM char * kStopStr = D_STR_STOP
 "Stop" More...
 
const PROGMEM char * kMoveStr = D_STR_MOVE
 "Move" More...
 
const PROGMEM char * kSetStr = D_STR_SET
 "Set" More...
 
const PROGMEM char * kCancelStr = D_STR_CANCEL
 "Cancel" More...
 
const PROGMEM char * kUpStr = D_STR_UP
 "Up" More...
 
const PROGMEM char * kDownStr = D_STR_DOWN
 "Down" More...
 
const PROGMEM char * kChangeStr = D_STR_CHANGE
 "Change" More...
 
const PROGMEM char * kComfortStr = D_STR_COMFORT
 "Comfort" More...
 
const PROGMEM char * kSensorStr = D_STR_SENSOR
 "Sensor" More...
 
const PROGMEM char * kWeeklyTimerStr = D_STR_WEEKLYTIMER
 "WeeklyTimer" More...
 
const PROGMEM char * kWifiStr = D_STR_WIFI
 "Wifi" More...
 
const PROGMEM char * kLastStr = D_STR_LAST
 "Last" More...
 
const PROGMEM char * kFastStr = D_STR_FAST
 "Fast" More...
 
const PROGMEM char * kSlowStr = D_STR_SLOW
 "Slow" More...
 
const PROGMEM char * kAirFlowStr = D_STR_AIRFLOW
 "Air Flow" More...
 
const PROGMEM char * kStepStr = D_STR_STEP
 "Step" More...
 
const PROGMEM char * kNAStr = D_STR_NA
 "N/A" More...
 
const PROGMEM char * kInsideStr = D_STR_INSIDE
 "Inside" More...
 
const PROGMEM char * kOutsideStr = D_STR_OUTSIDE
 "Outside" More...
 
const PROGMEM char * kLoudStr = D_STR_LOUD
 "Loud" More...
 
const PROGMEM char * kLowerStr = D_STR_LOWER
 "Lower" More...
 
const PROGMEM char * kUpperStr = D_STR_UPPER
 "Upper" More...
 
const PROGMEM char * kBreezeStr = D_STR_BREEZE
 "Breeze" More...
 
const PROGMEM char * kCirculateStr = D_STR_CIRCULATE
 "Circulate" More...
 
const PROGMEM char * kCeilingStr = D_STR_CEILING
 "Ceiling" More...
 
const PROGMEM char * kWallStr = D_STR_WALL
 "Wall" More...
 
const PROGMEM char * kRoomStr = D_STR_ROOM
 "Room" More...
 
const PROGMEM char * k6thSenseStr = D_STR_6THSENSE
 "6th Sense" More...
 
const PROGMEM char * kTypeStr = D_STR_TYPE
 "Type" More...
 
const PROGMEM char * kSpecialStr = D_STR_SPECIAL
 "Special" More...
 
const PROGMEM char * kIdStr = D_STR_ID
 "Id" / Device Identifier More...
 
const PROGMEM char * kAutoStr = D_STR_AUTO
 "Auto" More...
 
const PROGMEM char * kAutomaticStr = D_STR_AUTOMATIC
 "Automatic" More...
 
const PROGMEM char * kManualStr = D_STR_MANUAL
 "Manual" More...
 
const PROGMEM char * kCoolStr = D_STR_COOL
 "Cool" More...
 
const PROGMEM char * kHeatStr = D_STR_HEAT
 "Heat" More...
 
const PROGMEM char * kFanStr = D_STR_FAN
 "Fan" More...
 
const PROGMEM char * kDryStr = D_STR_DRY
 "Dry" More...
 
const PROGMEM char * kFanOnlyStr = D_STR_FANONLY
 "fan_only" More...
 
const PROGMEM char * kRecycleStr = D_STR_RECYCLE
 "Recycle" More...
 
const PROGMEM char * kMaxStr = D_STR_MAX
 "Max" More...
 
const PROGMEM char * kMaximumStr = D_STR_MAXIMUM
 "Maximum" More...
 
const PROGMEM char * kMinStr = D_STR_MIN
 "Min" More...
 
const PROGMEM char * kMinimumStr = D_STR_MINIMUM
 "Minimum" More...
 
const PROGMEM char * kMedStr = D_STR_MED
 "Med" More...
 
const PROGMEM char * kMediumStr = D_STR_MEDIUM
 "Medium" More...
 
const PROGMEM char * kHighestStr = D_STR_HIGHEST
 "Highest" More...
 
const PROGMEM char * kHighStr = D_STR_HIGH
 "High" More...
 
const PROGMEM char * kHiStr = D_STR_HI
 "Hi" More...
 
const PROGMEM char * kMidStr = D_STR_MID
 "Mid" More...
 
const PROGMEM char * kMiddleStr = D_STR_MIDDLE
 "Middle" More...
 
const PROGMEM char * kLowStr = D_STR_LOW
 "Low" More...
 
const PROGMEM char * kLoStr = D_STR_LO
 "Lo" More...
 
const PROGMEM char * kLowestStr = D_STR_LOWEST
 "Lowest" More...
 
const PROGMEM char * kMaxRightStr = D_STR_MAXRIGHT
 "Max Right" More...
 
const PROGMEM char * kRightMaxStr = D_STR_RIGHTMAX_NOSPACE
 "RightMax" More...
 
const PROGMEM char * kRightStr = D_STR_RIGHT
 "Right" More...
 
const PROGMEM char * kLeftStr = D_STR_LEFT
 "Left" More...
 
const PROGMEM char * kMaxLeftStr = D_STR_MAXLEFT
 "Max Left" More...
 
const PROGMEM char * kLeftMaxStr = D_STR_LEFTMAX_NOSPACE
 "LeftMax" More...
 
const PROGMEM char * kWideStr = D_STR_WIDE
 "Wide" More...
 
const PROGMEM char * kCentreStr = D_STR_CENTRE
 "Centre" More...
 
const PROGMEM char * kTopStr = D_STR_TOP
 "Top" More...
 
const PROGMEM char * kBottomStr = D_STR_BOTTOM
 "Bottom" More...
 
const PROGMEM char * kEconoToggleStr = D_STR_ECONOTOGGLE
 "Econo Toggle" More...
 
const PROGMEM char * kEyeAutoStr = D_STR_EYEAUTO
 "Eye Auto" More...
 
const PROGMEM char * kLightToggleStr = D_STR_LIGHTTOGGLE
 "Light Toggle" More...
 
const PROGMEM char * kOutsideQuietStr = D_STR_OUTSIDEQUIET
 "Outside Quiet" More...
 
const PROGMEM char * kPowerToggleStr = D_STR_POWERTOGGLE
 "Power Toggle" More...
 
const PROGMEM char * kPowerButtonStr = D_STR_POWERBUTTON
 "Power Button" More...
 
const PROGMEM char * kPreviousPowerStr = D_STR_PREVIOUSPOWER
 "Previous Power" More...
 
const PROGMEM char * kDisplayTempStr = D_STR_DISPLAYTEMP
 "Display Temp" More...
 
const PROGMEM char * kSensorTempStr = D_STR_SENSORTEMP
 "Sensor Temp" More...
 
const PROGMEM char * kSleepTimerStr = D_STR_SLEEP_TIMER
 "Sleep Timer" More...
 
const PROGMEM char * kSwingVModeStr = D_STR_SWINGVMODE
 "Swing(V) Mode" More...
 
const PROGMEM char * kSwingVToggleStr = D_STR_SWINGVTOGGLE
 "Swing(V) Toggle" More...
 
const PROGMEM char * kTurboToggleStr = D_STR_TURBOTOGGLE
 "Turbo Toggle" More...
 
char kTimeSep = D_CHR_TIME_SEP
 ':' More...
 
const PROGMEM char * kSpaceLBraceStr = D_STR_SPACELBRACE
 " (" More...
 
const PROGMEM char * kCommaSpaceStr = D_STR_COMMASPACE
 ", " More...
 
const PROGMEM char * kColonSpaceStr = D_STR_COLONSPACE
 ": " More...
 
const PROGMEM char * kDayStr = D_STR_DAY
 "Day" More...
 
const PROGMEM char * kDaysStr = D_STR_DAYS
 "Days" More...
 
const PROGMEM char * kHourStr = D_STR_HOUR
 "Hour" More...
 
const PROGMEM char * kHoursStr = D_STR_HOURS
 "Hours" More...
 
const PROGMEM char * kMinuteStr = D_STR_MINUTE
 "Minute" More...
 
const PROGMEM char * kMinutesStr = D_STR_MINUTES
 "Minutes" More...
 
const PROGMEM char * kSecondStr = D_STR_SECOND
 "Second" More...
 
const PROGMEM char * kSecondsStr = D_STR_SECONDS
 "Seconds" More...
 
const PROGMEM char * kNowStr = D_STR_NOW
 "Now" More...
 
const PROGMEM char * kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS
 "SunMonTueWedThuFriSat" More...
 
const PROGMEM char * kYesStr = D_STR_YES
 "Yes" More...
 
const PROGMEM char * kNoStr = D_STR_NO
 "No" More...
 
const PROGMEM char * kTrueStr = D_STR_TRUE
 "True" More...
 
const PROGMEM char * kFalseStr = D_STR_FALSE
 "False" More...
 
const PROGMEM char * kRepeatStr = D_STR_REPEAT
 "Repeat" More...
 
const PROGMEM char * kCodeStr = D_STR_CODE
 "Code" More...
 
const PROGMEM char * kBitsStr = D_STR_BITS
 "Bits" More...
 
const PROGMEM char * kAllProtocolNamesStr
 New protocol strings should be added just above this line. More...
 
-

Detailed Description

-
Warning
If you add or remove an entry in this file, you should run: '../tools/generate_irtext_h.sh' to rebuild the IRtext.h file.
-

Variable Documentation

- -

◆ k10CHeatStr

- -
-
- - - - -
const PROGMEM char* k10CHeatStr = D_STR_10C_HEAT
-
- -

"10C Heat"

- -
-
- -

◆ k3DStr

- -
-
- - - - -
const PROGMEM char* k3DStr = D_STR_3D
-
- -

"3D"

- -
-
- -

◆ k6thSenseStr

- -
-
- - - - -
const PROGMEM char* k6thSenseStr = D_STR_6THSENSE
-
- -

"6th Sense"

- -
-
- -

◆ k8CHeatStr

- -
-
- - - - -
const PROGMEM char* k8CHeatStr = D_STR_8C_HEAT
-
- -

"8C Heat"

- -
-
- -

◆ kAirFlowStr

- -
-
- - - - -
const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW
-
- -

"Air Flow"

- -
-
- -

◆ kAllProtocolNamesStr

- -
-
- - - - -
const PROGMEM char* kAllProtocolNamesStr
-
- -

New protocol strings should be added just above this line.

-

This string requires double null termination.

- -
-
- -

◆ kAutomaticStr

- -
-
- - - - -
const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC
-
- -

"Automatic"

- -
-
- -

◆ kAutoStr

- -
-
- - - - -
const PROGMEM char* kAutoStr = D_STR_AUTO
-
- -

"Auto"

- -
-
- -

◆ kBeepStr

- -
-
- - - - -
const PROGMEM char* kBeepStr = D_STR_BEEP
-
- -

"Beep"

- -
-
- -

◆ kBitsStr

- -
-
- - - - -
const PROGMEM char* kBitsStr = D_STR_BITS
-
- -

"Bits"

- -
-
- -

◆ kBottomStr

- -
-
- - - - -
const PROGMEM char* kBottomStr = D_STR_BOTTOM
-
- -

"Bottom"

- -
-
- -

◆ kBreezeStr

- -
-
- - - - -
const PROGMEM char* kBreezeStr = D_STR_BREEZE
-
- -

"Breeze"

- -
-
- -

◆ kButtonStr

- -
-
- - - - -
const PROGMEM char* kButtonStr = D_STR_BUTTON
-
- -

"Button"

- -
-
- -

◆ kCancelStr

- -
-
- - - - -
const PROGMEM char* kCancelStr = D_STR_CANCEL
-
- -

"Cancel"

- -
-
- -

◆ kCeilingStr

- -
-
- - - - -
const PROGMEM char* kCeilingStr = D_STR_CEILING
-
- -

"Ceiling"

- -
-
- -

◆ kCelsiusFahrenheitStr

- -
-
- - - - -
const PROGMEM char* kCelsiusFahrenheitStr = D_STR_CELSIUS_FAHRENHEIT
-
- -

"Celsius/Fahrenheit"

- -
-
- -

◆ kCelsiusStr

- -
-
- - - - -
const PROGMEM char* kCelsiusStr = D_STR_CELSIUS
-
- -

"Celsius"

- -
-
- -

◆ kCentreStr

- -
-
- - - - -
const PROGMEM char* kCentreStr = D_STR_CENTRE
-
- -

"Centre"

- -
-
- -

◆ kChangeStr

- -
-
- - - - -
const PROGMEM char* kChangeStr = D_STR_CHANGE
-
- -

"Change"

- -
-
- -

◆ kCirculateStr

- -
-
- - - - -
const PROGMEM char* kCirculateStr = D_STR_CIRCULATE
-
- -

"Circulate"

- -
-
- -

◆ kCleanStr

- -
-
- - - - -
const PROGMEM char* kCleanStr = D_STR_CLEAN
-
- -

"Clean"

- -
-
- -

◆ kClockStr

- -
-
- - - - -
const PROGMEM char* kClockStr = D_STR_CLOCK
-
- -

"Clock"

- -
-
- -

◆ kCodeStr

- -
-
- - - - -
const PROGMEM char* kCodeStr = D_STR_CODE
-
- -

"Code"

- -
-
- -

◆ kColonSpaceStr

- -
-
- - - - -
const PROGMEM char* kColonSpaceStr = D_STR_COLONSPACE
-
- -

": "

- -
-
- -

◆ kComfortStr

- -
-
- - - - -
const PROGMEM char* kComfortStr = D_STR_COMFORT
-
- -

"Comfort"

- -
-
- -

◆ kCommandStr

- -
-
- - - - -
const PROGMEM char* kCommandStr = D_STR_COMMAND
-
- -

"Command"

- -
-
- -

◆ kCommaSpaceStr

- -
-
- - - - -
const PROGMEM char* kCommaSpaceStr = D_STR_COMMASPACE
-
- -

", "

- -
-
- -

◆ kCoolStr

- -
-
- - - - -
const PROGMEM char* kCoolStr = D_STR_COOL
-
- -

"Cool"

- -
-
- -

◆ kDaysStr

- -
-
- - - - -
const PROGMEM char* kDaysStr = D_STR_DAYS
-
- -

"Days"

- -
-
- -

◆ kDayStr

- -
-
- - - - -
const PROGMEM char* kDayStr = D_STR_DAY
-
- -

"Day"

- -
-
- -

◆ kDisplayTempStr

- -
-
- - - - -
const PROGMEM char* kDisplayTempStr = D_STR_DISPLAYTEMP
-
- -

"Display Temp"

- -
-
- -

◆ kDownStr

- -
-
- - - - -
const PROGMEM char* kDownStr = D_STR_DOWN
-
- -

"Down"

- -
-
- -

◆ kDryStr

- -
-
- - - - -
const PROGMEM char* kDryStr = D_STR_DRY
-
- -

"Dry"

- -
-
- -

◆ kEconoStr

- -
-
- - - - -
const PROGMEM char* kEconoStr = D_STR_ECONO
-
- -

"Econo"

- -
-
- -

◆ kEconoToggleStr

- -
-
- - - - -
const PROGMEM char* kEconoToggleStr = D_STR_ECONOTOGGLE
-
- -

"Econo Toggle"

- -
-
- -

◆ kEyeAutoStr

- -
-
- - - - -
const PROGMEM char* kEyeAutoStr = D_STR_EYEAUTO
-
- -

"Eye Auto"

- -
-
- -

◆ kEyeStr

- -
-
- - - - -
const PROGMEM char* kEyeStr = D_STR_EYE
-
- -

"Eye"

- -
-
- -

◆ kFalseStr

- -
-
- - - - -
const PROGMEM char* kFalseStr = D_STR_FALSE
-
- -

"False"

- -
-
- -

◆ kFanOnlyStr

- -
-
- - - - -
const PROGMEM char* kFanOnlyStr = D_STR_FANONLY
-
- -

"fan_only"

- -
-
- -

◆ kFanStr

- -
-
- - - - -
const PROGMEM char* kFanStr = D_STR_FAN
-
- -

"Fan"

- -
-
- -

◆ kFastStr

- -
-
- - - - -
const PROGMEM char* kFastStr = D_STR_FAST
-
- -

"Fast"

- -
-
- -

◆ kFilterStr

- -
-
- - - - -
const PROGMEM char* kFilterStr = D_STR_FILTER
-
- -

"Filter"

- -
-
- -

◆ kFixedStr

- -
-
- - - - -
const PROGMEM char* kFixedStr = D_STR_FIXED
-
- -

"Fixed"

- -
-
- -

◆ kFollowStr

- -
-
- - - - -
const PROGMEM char* kFollowStr = D_STR_FOLLOW
-
- -

"Follow"

- -
-
- -

◆ kFreshStr

- -
-
- - - - -
const PROGMEM char* kFreshStr = D_STR_FRESH
-
- -

"Fresh"

- -
-
- -

◆ kHealthStr

- -
-
- - - - -
const PROGMEM char* kHealthStr = D_STR_HEALTH
-
- -

"Health"

- -
-
- -

◆ kHeatStr

- -
-
- - - - -
const PROGMEM char* kHeatStr = D_STR_HEAT
-
- -

"Heat"

- -
-
- -

◆ kHighestStr

- -
-
- - - - -
const PROGMEM char* kHighestStr = D_STR_HIGHEST
-
- -

"Highest"

- -
-
- -

◆ kHighStr

- -
-
- - - - -
const PROGMEM char* kHighStr = D_STR_HIGH
-
- -

"High"

- -
-
- -

◆ kHiStr

- -
-
- - - - -
const PROGMEM char* kHiStr = D_STR_HI
-
- -

"Hi"

- -
-
- -

◆ kHoldStr

- -
-
- - - - -
const PROGMEM char* kHoldStr = D_STR_HOLD
-
- -

"Hold"

- -
-
- -

◆ kHoursStr

- -
-
- - - - -
const PROGMEM char* kHoursStr = D_STR_HOURS
-
- -

"Hours"

- -
-
- -

◆ kHourStr

- -
-
- - - - -
const PROGMEM char* kHourStr = D_STR_HOUR
-
- -

"Hour"

- -
-
- -

◆ kHumidStr

- -
-
- - - - -
const PROGMEM char* kHumidStr = D_STR_HUMID
-
- -

"Humid"

- -
-
- -

◆ kIdStr

- -
-
- - - - -
const PROGMEM char* kIdStr = D_STR_ID
-
- -

"Id" / Device Identifier

- -
-
- -

◆ kIFeelStr

- -
-
- - - - -
const PROGMEM char* kIFeelStr = D_STR_IFEEL
-
- -

"IFeel"

- -
-
- -

◆ kInsideStr

- -
-
- - - - -
const PROGMEM char* kInsideStr = D_STR_INSIDE
-
- -

"Inside"

- -
-
- -

◆ kIonStr

- -
-
- - - - -
const PROGMEM char* kIonStr = D_STR_ION
-
- -

"Ion"

- -
-
- -

◆ kLastStr

- -
-
- - - - -
const PROGMEM char* kLastStr = D_STR_LAST
-
- -

"Last"

- -
-
- -

◆ kLeftMaxStr

- -
-
- - - - -
const PROGMEM char* kLeftMaxStr = D_STR_LEFTMAX_NOSPACE
-
- -

"LeftMax"

- -
-
- -

◆ kLeftStr

- -
-
- - - - -
const PROGMEM char* kLeftStr = D_STR_LEFT
-
- -

"Left"

- -
-
- -

◆ kLightStr

- -
-
- - - - -
const PROGMEM char* kLightStr = D_STR_LIGHT
-
- -

"Light"

- -
-
- -

◆ kLightToggleStr

- -
-
- - - - -
const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE
-
- -

"Light Toggle"

- -
-
- -

◆ kLoStr

- -
-
- - - - -
const PROGMEM char* kLoStr = D_STR_LO
-
- -

"Lo"

- -
-
- -

◆ kLoudStr

- -
-
- - - - -
const PROGMEM char* kLoudStr = D_STR_LOUD
-
- -

"Loud"

- -
-
- -

◆ kLowerStr

- -
-
- - - - -
const PROGMEM char* kLowerStr = D_STR_LOWER
-
- -

"Lower"

- -
-
- -

◆ kLowestStr

- -
-
- - - - -
const PROGMEM char* kLowestStr = D_STR_LOWEST
-
- -

"Lowest"

- -
-
- -

◆ kLowStr

- -
-
- - - - -
const PROGMEM char* kLowStr = D_STR_LOW
-
- -

"Low"

- -
-
- -

◆ kManualStr

- -
-
- - - - -
const PROGMEM char* kManualStr = D_STR_MANUAL
-
- -

"Manual"

- -
-
- -

◆ kMaximumStr

- -
-
- - - - -
const PROGMEM char* kMaximumStr = D_STR_MAXIMUM
-
- -

"Maximum"

- -
-
- -

◆ kMaxLeftStr

- -
-
- - - - -
const PROGMEM char* kMaxLeftStr = D_STR_MAXLEFT
-
- -

"Max Left"

- -
-
- -

◆ kMaxRightStr

- -
-
- - - - -
const PROGMEM char* kMaxRightStr = D_STR_MAXRIGHT
-
- -

"Max Right"

- -
-
- -

◆ kMaxStr

- -
-
- - - - -
const PROGMEM char* kMaxStr = D_STR_MAX
-
- -

"Max"

- -
-
- -

◆ kMediumStr

- -
-
- - - - -
const PROGMEM char* kMediumStr = D_STR_MEDIUM
-
- -

"Medium"

- -
-
- -

◆ kMedStr

- -
-
- - - - -
const PROGMEM char* kMedStr = D_STR_MED
-
- -

"Med"

- -
-
- -

◆ kMiddleStr

- -
-
- - - - -
const PROGMEM char* kMiddleStr = D_STR_MIDDLE
-
- -

"Middle"

- -
-
- -

◆ kMidStr

- -
-
- - - - -
const PROGMEM char* kMidStr = D_STR_MID
-
- -

"Mid"

- -
-
- -

◆ kMinimumStr

- -
-
- - - - -
const PROGMEM char* kMinimumStr = D_STR_MINIMUM
-
- -

"Minimum"

- -
-
- -

◆ kMinStr

- -
-
- - - - -
const PROGMEM char* kMinStr = D_STR_MIN
-
- -

"Min"

- -
-
- -

◆ kMinutesStr

- -
-
- - - - -
const PROGMEM char* kMinutesStr = D_STR_MINUTES
-
- -

"Minutes"

- -
-
- -

◆ kMinuteStr

- -
-
- - - - -
const PROGMEM char* kMinuteStr = D_STR_MINUTE
-
- -

"Minute"

- -
-
- -

◆ kModelStr

- -
-
- - - - -
const PROGMEM char* kModelStr = D_STR_MODEL
-
- -

"Model"

- -
-
- -

◆ kModeStr

- -
-
- - - - -
const PROGMEM char* kModeStr = D_STR_MODE
-
- -

"Mode"

- -
-
- -

◆ kMouldStr

- -
-
- - - - -
const PROGMEM char* kMouldStr = D_STR_MOULD
-
- -

"Mould"

- -
-
- -

◆ kMoveStr

- -
-
- - - - -
const PROGMEM char* kMoveStr = D_STR_MOVE
-
- -

"Move"

- -
-
- -

◆ kNAStr

- -
-
- - - - -
const PROGMEM char* kNAStr = D_STR_NA
-
- -

"N/A"

- -
-
- -

◆ kNightStr

- -
-
- - - - -
const PROGMEM char* kNightStr = D_STR_NIGHT
-
- -

"Night"

- -
-
- -

◆ kNoStr

- -
-
- - - - -
const PROGMEM char* kNoStr = D_STR_NO
-
- -

"No"

- -
-
- -

◆ kNowStr

- -
-
- - - - -
const PROGMEM char* kNowStr = D_STR_NOW
-
- -

"Now"

- -
-
- -

◆ kOffStr

- -
-
- - - - -
const PROGMEM char* kOffStr = D_STR_OFF
-
- -

"Off"

- -
-
- -

◆ kOffTimerStr

- -
-
- - - - -
const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER
-
- -

"OffTimer"

- -
-
- -

◆ kOnStr

- -
-
- - - - -
const PROGMEM char* kOnStr = D_STR_ON
-
- -

"On"

- -
-
- -

◆ kOnTimerStr

- -
-
- - - - -
const PROGMEM char* kOnTimerStr = D_STR_ONTIMER
-
- -

"OnTimer"

- -
-
- -

◆ kOutsideQuietStr

- -
-
- - - - -
const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET
-
- -

"Outside Quiet"

- -
-
- -

◆ kOutsideStr

- -
-
- - - - -
const PROGMEM char* kOutsideStr = D_STR_OUTSIDE
-
- -

"Outside"

- -
-
- -

◆ kPowerButtonStr

- -
-
- - - - -
const PROGMEM char* kPowerButtonStr = D_STR_POWERBUTTON
-
- -

"Power Button"

- -
-
- -

◆ kPowerfulStr

- -
-
- - - - -
const PROGMEM char* kPowerfulStr = D_STR_POWERFUL
-
- -

"Powerful"

- -
-
- -

◆ kPowerStr

- -
-
- - - - -
const PROGMEM char* kPowerStr = D_STR_POWER
-
- -

"Power"

- -
-
- -

◆ kPowerToggleStr

- -
-
- - - - -
const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE
-
- -

"Power Toggle"

- -
-
- -

◆ kPreviousPowerStr

- -
-
- - - - -
const PROGMEM char* kPreviousPowerStr = D_STR_PREVIOUSPOWER
-
- -

"Previous Power"

- -
-
- -

◆ kProtocolStr

- -
-
- - - - -
const PROGMEM char* kProtocolStr = D_STR_PROTOCOL
-
- -

"Protocol"

- -
-
- -

◆ kPurifyStr

- -
-
- - - - -
const PROGMEM char* kPurifyStr = D_STR_PURIFY
-
- -

"Purify"

- -
-
- -

◆ kQuietStr

- -
-
- - - - -
const PROGMEM char* kQuietStr = D_STR_QUIET
-
- -

"Quiet"

- -
-
- -

◆ kRecycleStr

- -
-
- - - - -
const PROGMEM char* kRecycleStr = D_STR_RECYCLE
-
- -

"Recycle"

- -
-
- -

◆ kRepeatStr

- -
-
- - - - -
const PROGMEM char* kRepeatStr = D_STR_REPEAT
-
- -

"Repeat"

- -
-
- -

◆ kRightMaxStr

- -
-
- - - - -
const PROGMEM char* kRightMaxStr = D_STR_RIGHTMAX_NOSPACE
-
- -

"RightMax"

- -
-
- -

◆ kRightStr

- -
-
- - - - -
const PROGMEM char* kRightStr = D_STR_RIGHT
-
- -

"Right"

- -
-
- -

◆ kRoomStr

- -
-
- - - - -
const PROGMEM char* kRoomStr = D_STR_ROOM
-
- -

"Room"

- -
-
- -

◆ kSaveStr

- -
-
- - - - -
const PROGMEM char* kSaveStr = D_STR_SAVE
-
- -

"Save"

- -
-
- -

◆ kSecondsStr

- -
-
- - - - -
const PROGMEM char* kSecondsStr = D_STR_SECONDS
-
- -

"Seconds"

- -
-
- -

◆ kSecondStr

- -
-
- - - - -
const PROGMEM char* kSecondStr = D_STR_SECOND
-
- -

"Second"

- -
-
- -

◆ kSensorStr

- -
-
- - - - -
const PROGMEM char* kSensorStr = D_STR_SENSOR
-
- -

"Sensor"

- -
-
- -

◆ kSensorTempStr

- -
-
- - - - -
const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP
-
- -

"Sensor Temp"

- -
-
- -

◆ kSetStr

- -
-
- - - - -
const PROGMEM char* kSetStr = D_STR_SET
-
- -

"Set"

- -
-
- -

◆ kSilentStr

- -
-
- - - - -
const PROGMEM char* kSilentStr = D_STR_SILENT
-
- -

"Silent"

- -
-
- -

◆ kSleepStr

- -
-
- - - - -
const PROGMEM char* kSleepStr = D_STR_SLEEP
-
- -

"Sleep"

- -
-
- -

◆ kSleepTimerStr

- -
-
- - - - -
const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER
-
- -

"Sleep Timer"

- -
-
- -

◆ kSlowStr

- -
-
- - - - -
const PROGMEM char* kSlowStr = D_STR_SLOW
-
- -

"Slow"

- -
-
- -

◆ kSpaceLBraceStr

- -
-
- - - - -
const PROGMEM char* kSpaceLBraceStr = D_STR_SPACELBRACE
-
- -

" ("

- -
-
- -

◆ kSpecialStr

- -
-
- - - - -
const PROGMEM char* kSpecialStr = D_STR_SPECIAL
-
- -

"Special"

- -
-
- -

◆ kStartStr

- -
-
- - - - -
const PROGMEM char* kStartStr = D_STR_START
-
- -

"Start"

- -
-
- -

◆ kStepStr

- -
-
- - - - -
const PROGMEM char* kStepStr = D_STR_STEP
-
- -

"Step"

- -
-
- -

◆ kStopStr

- -
-
- - - - -
const PROGMEM char* kStopStr = D_STR_STOP
-
- -

"Stop"

- -
-
- -

◆ kSuperStr

- -
-
- - - - -
const PROGMEM char* kSuperStr = D_STR_SUPER
-
- -

"Super"

- -
-
- -

◆ kSwingHStr

- -
-
- - - - -
const PROGMEM char* kSwingHStr = D_STR_SWINGH
-
- -

"SwingH"

- -
-
- -

◆ kSwingStr

- -
-
- - - - -
const PROGMEM char* kSwingStr = D_STR_SWING
-
- -

"Swing"

- -
-
- -

◆ kSwingVModeStr

- -
-
- - - - -
const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE
-
- -

"Swing(V) Mode"

- -
-
- -

◆ kSwingVStr

- -
-
- - - - -
const PROGMEM char* kSwingVStr = D_STR_SWINGV
-
- -

"SwingV"

- -
-
- -

◆ kSwingVToggleStr

- -
-
- - - - -
const PROGMEM char* kSwingVToggleStr = D_STR_SWINGVTOGGLE
-
- -

"Swing(V) Toggle"

- -
-
- -

◆ kTempDownStr

- -
-
- - - - -
const PROGMEM char* kTempDownStr = D_STR_TEMPDOWN
-
- -

"Temp Down"

- -
-
- -

◆ kTempStr

- -
-
- - - - -
const PROGMEM char* kTempStr = D_STR_TEMP
-
- -

"Temp"

- -
-
- -

◆ kTempUpStr

- -
-
- - - - -
const PROGMEM char* kTempUpStr = D_STR_TEMPUP
-
- -

"Temp Up"

- -
-
- -

◆ kThreeLetterDayOfWeekStr

- -
-
- - - - -
const PROGMEM char* kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS
-
- -

"SunMonTueWedThuFriSat"

- -
-
- -

◆ kTimerStr

- -
-
- - - - -
const PROGMEM char* kTimerStr = D_STR_TIMER
-
- -

"Timer"

- -
-
- -

◆ kTimeSep

- -
-
- - - - -
char kTimeSep = D_CHR_TIME_SEP
-
- -

':'

- -
-
- -

◆ kToggleStr

- -
-
- - - - -
const PROGMEM char* kToggleStr = D_STR_TOGGLE
-
- -

"Toggle"

- -
-
- -

◆ kTopStr

- -
-
- - - - -
const PROGMEM char* kTopStr = D_STR_TOP
-
- -

"Top"

- -
-
- -

◆ kTrueStr

- -
-
- - - - -
const PROGMEM char* kTrueStr = D_STR_TRUE
-
- -

"True"

- -
-
- -

◆ kTurboStr

- -
-
- - - - -
const PROGMEM char* kTurboStr = D_STR_TURBO
-
- -

"Turbo"

- -
-
- -

◆ kTurboToggleStr

- -
-
- - - - -
const PROGMEM char* kTurboToggleStr = D_STR_TURBOTOGGLE
-
- -

"Turbo Toggle"

- -
-
- -

◆ kTypeStr

- -
-
- - - - -
const PROGMEM char* kTypeStr = D_STR_TYPE
-
- -

"Type"

- -
-
- -

◆ kUnknownStr

- -
-
- - - - -
const PROGMEM char* kUnknownStr = D_STR_UNKNOWN
-
- -

"Unknown"

- -
-
- -

◆ kUpperStr

- -
-
- - - - -
const PROGMEM char* kUpperStr = D_STR_UPPER
-
- -

"Upper"

- -
-
- -

◆ kUpStr

- -
-
- - - - -
const PROGMEM char* kUpStr = D_STR_UP
-
- -

"Up"

- -
-
- -

◆ kWallStr

- -
-
- - - - -
const PROGMEM char* kWallStr = D_STR_WALL
-
- -

"Wall"

- -
-
- -

◆ kWeeklyTimerStr

- -
-
- - - - -
const PROGMEM char* kWeeklyTimerStr = D_STR_WEEKLYTIMER
-
- -

"WeeklyTimer"

- -
-
- -

◆ kWideStr

- -
-
- - - - -
const PROGMEM char* kWideStr = D_STR_WIDE
-
- -

"Wide"

- -
-
- -

◆ kWifiStr

- -
-
- - - - -
const PROGMEM char* kWifiStr = D_STR_WIFI
-
- -

"Wifi"

- -
-
- -

◆ kXFanStr

- -
-
- - - - -
const PROGMEM char* kXFanStr = D_STR_XFAN
-
- -

"XFan"

- -
-
- -

◆ kYesStr

- -
-
- - - - -
const PROGMEM char* kYesStr = D_STR_YES
-
- -

"Yes"

- -
-
- -

◆ kZoneFollowStr

- -
-
- - - - -
const PROGMEM char* kZoneFollowStr = D_STR_ZONEFOLLOW
-
- -

"Zone Follow"

- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h.html deleted file mode 100644 index 45a78fbfa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h.html +++ /dev/null @@ -1,2959 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRtext.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRtext.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Variables

char kTimeSep
 ':' More...
 
const char * k10CHeatStr
 "10C Heat" More...
 
const char * k3DStr
 "3D" More...
 
const char * k6thSenseStr
 "6th Sense" More...
 
const char * k8CHeatStr
 "8C Heat" More...
 
const char * kAirFlowStr
 "Air Flow" More...
 
const char * kAllProtocolNamesStr
 New protocol strings should be added just above this line. More...
 
const char * kAutomaticStr
 "Automatic" More...
 
const char * kAutoStr
 "Auto" More...
 
const char * kBeepStr
 "Beep" More...
 
const char * kBitsStr
 "Bits" More...
 
const char * kBottomStr
 "Bottom" More...
 
const char * kBreezeStr
 "Breeze" More...
 
const char * kButtonStr
 "Button" More...
 
const char * kCancelStr
 "Cancel" More...
 
const char * kCeilingStr
 "Ceiling" More...
 
const char * kCelsiusFahrenheitStr
 "Celsius/Fahrenheit" More...
 
const char * kCelsiusStr
 "Celsius" More...
 
const char * kCentreStr
 "Centre" More...
 
const char * kChangeStr
 "Change" More...
 
const char * kCirculateStr
 "Circulate" More...
 
const char * kCleanStr
 "Clean" More...
 
const char * kClockStr
 "Clock" More...
 
const char * kCodeStr
 "Code" More...
 
const char * kColonSpaceStr
 ": " More...
 
const char * kComfortStr
 "Comfort" More...
 
const char * kCommandStr
 "Command" More...
 
const char * kCommaSpaceStr
 ", " More...
 
const char * kCoolStr
 "Cool" More...
 
const char * kDaysStr
 "Days" More...
 
const char * kDayStr
 "Day" More...
 
const char * kDisplayTempStr
 "Display Temp" More...
 
const char * kDownStr
 "Down" More...
 
const char * kDryStr
 "Dry" More...
 
const char * kEconoStr
 "Econo" More...
 
const char * kEconoToggleStr
 "Econo Toggle" More...
 
const char * kEyeAutoStr
 "Eye Auto" More...
 
const char * kEyeStr
 "Eye" More...
 
const char * kFalseStr
 "False" More...
 
const char * kFanOnlyStr
 "fan_only" More...
 
const char * kFanStr
 "Fan" More...
 
const char * kFastStr
 "Fast" More...
 
const char * kFilterStr
 "Filter" More...
 
const char * kFixedStr
 "Fixed" More...
 
const char * kFollowStr
 "Follow" More...
 
const char * kFreshStr
 "Fresh" More...
 
const char * kHealthStr
 "Health" More...
 
const char * kHeatStr
 "Heat" More...
 
const char * kHighestStr
 "Highest" More...
 
const char * kHighStr
 "High" More...
 
const char * kHiStr
 "Hi" More...
 
const char * kHoldStr
 "Hold" More...
 
const char * kHoursStr
 "Hours" More...
 
const char * kHourStr
 "Hour" More...
 
const char * kHumidStr
 "Humid" More...
 
const char * kIdStr
 "Id" / Device Identifier More...
 
const char * kIFeelStr
 "IFeel" More...
 
const char * kInsideStr
 "Inside" More...
 
const char * kIonStr
 "Ion" More...
 
const char * kLastStr
 "Last" More...
 
const char * kLeftMaxStr
 "LeftMax" More...
 
const char * kLeftStr
 "Left" More...
 
const char * kLightStr
 "Light" More...
 
const char * kLightToggleStr
 "Light Toggle" More...
 
const char * kLoStr
 "Lo" More...
 
const char * kLoudStr
 "Loud" More...
 
const char * kLowerStr
 "Lower" More...
 
const char * kLowestStr
 "Lowest" More...
 
const char * kLowStr
 "Low" More...
 
const char * kManualStr
 "Manual" More...
 
const char * kMaximumStr
 "Maximum" More...
 
const char * kMaxLeftStr
 "Max Left" More...
 
const char * kMaxRightStr
 "Max Right" More...
 
const char * kMaxStr
 "Max" More...
 
const char * kMediumStr
 "Medium" More...
 
const char * kMedStr
 "Med" More...
 
const char * kMiddleStr
 "Middle" More...
 
const char * kMidStr
 "Mid" More...
 
const char * kMinimumStr
 "Minimum" More...
 
const char * kMinStr
 "Min" More...
 
const char * kMinutesStr
 "Minutes" More...
 
const char * kMinuteStr
 "Minute" More...
 
const char * kModelStr
 "Model" More...
 
const char * kModeStr
 "Mode" More...
 
const char * kMouldStr
 "Mould" More...
 
const char * kMoveStr
 "Move" More...
 
const char * kNAStr
 "N/A" More...
 
const char * kNightStr
 "Night" More...
 
const char * kNoStr
 "No" More...
 
const char * kNowStr
 "Now" More...
 
const char * kOffStr
 "Off" More...
 
const char * kOffTimerStr
 "OffTimer" More...
 
const char * kOnStr
 "On" More...
 
const char * kOnTimerStr
 "OnTimer" More...
 
const char * kOutsideQuietStr
 "Outside Quiet" More...
 
const char * kOutsideStr
 "Outside" More...
 
const char * kPowerButtonStr
 "Power Button" More...
 
const char * kPowerfulStr
 "Powerful" More...
 
const char * kPowerStr
 "Power" More...
 
const char * kPowerToggleStr
 "Power Toggle" More...
 
const char * kPreviousPowerStr
 "Previous Power" More...
 
const char * kProtocolStr
 "Protocol" More...
 
const char * kPurifyStr
 "Purify" More...
 
const char * kQuietStr
 "Quiet" More...
 
const char * kRecycleStr
 "Recycle" More...
 
const char * kRepeatStr
 "Repeat" More...
 
const char * kRightMaxStr
 "RightMax" More...
 
const char * kRightStr
 "Right" More...
 
const char * kRoomStr
 "Room" More...
 
const char * kSaveStr
 "Save" More...
 
const char * kSecondsStr
 "Seconds" More...
 
const char * kSecondStr
 "Second" More...
 
const char * kSensorStr
 "Sensor" More...
 
const char * kSensorTempStr
 "Sensor Temp" More...
 
const char * kSetStr
 "Set" More...
 
const char * kSilentStr
 "Silent" More...
 
const char * kSleepStr
 "Sleep" More...
 
const char * kSleepTimerStr
 "Sleep Timer" More...
 
const char * kSlowStr
 "Slow" More...
 
const char * kSpaceLBraceStr
 " (" More...
 
const char * kSpecialStr
 "Special" More...
 
const char * kStartStr
 "Start" More...
 
const char * kStepStr
 "Step" More...
 
const char * kStopStr
 "Stop" More...
 
const char * kSuperStr
 "Super" More...
 
const char * kSwingHStr
 "SwingH" More...
 
const char * kSwingStr
 "Swing" More...
 
const char * kSwingVModeStr
 "Swing(V) Mode" More...
 
const char * kSwingVStr
 "SwingV" More...
 
const char * kSwingVToggleStr
 "Swing(V) Toggle" More...
 
const char * kTempDownStr
 "Temp Down" More...
 
const char * kTempStr
 "Temp" More...
 
const char * kTempUpStr
 "Temp Up" More...
 
const char * kThreeLetterDayOfWeekStr
 "SunMonTueWedThuFriSat" More...
 
const char * kTimerStr
 "Timer" More...
 
const char * kToggleStr
 "Toggle" More...
 
const char * kTopStr
 "Top" More...
 
const char * kTrueStr
 "True" More...
 
const char * kTurboStr
 "Turbo" More...
 
const char * kTurboToggleStr
 "Turbo Toggle" More...
 
const char * kTypeStr
 "Type" More...
 
const char * kUnknownStr
 "Unknown" More...
 
const char * kUpperStr
 "Upper" More...
 
const char * kUpStr
 "Up" More...
 
const char * kWallStr
 "Wall" More...
 
const char * kWeeklyTimerStr
 "WeeklyTimer" More...
 
const char * kWideStr
 "Wide" More...
 
const char * kWifiStr
 "Wifi" More...
 
const char * kXFanStr
 "XFan" More...
 
const char * kYesStr
 "Yes" More...
 
const char * kZoneFollowStr
 "Zone Follow" More...
 
-

Variable Documentation

- -

◆ k10CHeatStr

- -
-
- - - - -
const char* k10CHeatStr
-
- -

"10C Heat"

- -
-
- -

◆ k3DStr

- -
-
- - - - -
const char* k3DStr
-
- -

"3D"

- -
-
- -

◆ k6thSenseStr

- -
-
- - - - -
const char* k6thSenseStr
-
- -

"6th Sense"

- -
-
- -

◆ k8CHeatStr

- -
-
- - - - -
const char* k8CHeatStr
-
- -

"8C Heat"

- -
-
- -

◆ kAirFlowStr

- -
-
- - - - -
const char* kAirFlowStr
-
- -

"Air Flow"

- -
-
- -

◆ kAllProtocolNamesStr

- -
-
- - - - -
const char* kAllProtocolNamesStr
-
- -

New protocol strings should be added just above this line.

-

This string requires double null termination.

- -
-
- -

◆ kAutomaticStr

- -
-
- - - - -
const char* kAutomaticStr
-
- -

"Automatic"

- -
-
- -

◆ kAutoStr

- -
-
- - - - -
const char* kAutoStr
-
- -

"Auto"

- -
-
- -

◆ kBeepStr

- -
-
- - - - -
const char* kBeepStr
-
- -

"Beep"

- -
-
- -

◆ kBitsStr

- -
-
- - - - -
const char* kBitsStr
-
- -

"Bits"

- -
-
- -

◆ kBottomStr

- -
-
- - - - -
const char* kBottomStr
-
- -

"Bottom"

- -
-
- -

◆ kBreezeStr

- -
-
- - - - -
const char* kBreezeStr
-
- -

"Breeze"

- -
-
- -

◆ kButtonStr

- -
-
- - - - -
const char* kButtonStr
-
- -

"Button"

- -
-
- -

◆ kCancelStr

- -
-
- - - - -
const char* kCancelStr
-
- -

"Cancel"

- -
-
- -

◆ kCeilingStr

- -
-
- - - - -
const char* kCeilingStr
-
- -

"Ceiling"

- -
-
- -

◆ kCelsiusFahrenheitStr

- -
-
- - - - -
const char* kCelsiusFahrenheitStr
-
- -

"Celsius/Fahrenheit"

- -
-
- -

◆ kCelsiusStr

- -
-
- - - - -
const char* kCelsiusStr
-
- -

"Celsius"

- -
-
- -

◆ kCentreStr

- -
-
- - - - -
const char* kCentreStr
-
- -

"Centre"

- -
-
- -

◆ kChangeStr

- -
-
- - - - -
const char* kChangeStr
-
- -

"Change"

- -
-
- -

◆ kCirculateStr

- -
-
- - - - -
const char* kCirculateStr
-
- -

"Circulate"

- -
-
- -

◆ kCleanStr

- -
-
- - - - -
const char* kCleanStr
-
- -

"Clean"

- -
-
- -

◆ kClockStr

- -
-
- - - - -
const char* kClockStr
-
- -

"Clock"

- -
-
- -

◆ kCodeStr

- -
-
- - - - -
const char* kCodeStr
-
- -

"Code"

- -
-
- -

◆ kColonSpaceStr

- -
-
- - - - -
const char* kColonSpaceStr
-
- -

": "

- -
-
- -

◆ kComfortStr

- -
-
- - - - -
const char* kComfortStr
-
- -

"Comfort"

- -
-
- -

◆ kCommandStr

- -
-
- - - - -
const char* kCommandStr
-
- -

"Command"

- -
-
- -

◆ kCommaSpaceStr

- -
-
- - - - -
const char* kCommaSpaceStr
-
- -

", "

- -
-
- -

◆ kCoolStr

- -
-
- - - - -
const char* kCoolStr
-
- -

"Cool"

- -
-
- -

◆ kDaysStr

- -
-
- - - - -
const char* kDaysStr
-
- -

"Days"

- -
-
- -

◆ kDayStr

- -
-
- - - - -
const char* kDayStr
-
- -

"Day"

- -
-
- -

◆ kDisplayTempStr

- -
-
- - - - -
const char* kDisplayTempStr
-
- -

"Display Temp"

- -
-
- -

◆ kDownStr

- -
-
- - - - -
const char* kDownStr
-
- -

"Down"

- -
-
- -

◆ kDryStr

- -
-
- - - - -
const char* kDryStr
-
- -

"Dry"

- -
-
- -

◆ kEconoStr

- -
-
- - - - -
const char* kEconoStr
-
- -

"Econo"

- -
-
- -

◆ kEconoToggleStr

- -
-
- - - - -
const char* kEconoToggleStr
-
- -

"Econo Toggle"

- -
-
- -

◆ kEyeAutoStr

- -
-
- - - - -
const char* kEyeAutoStr
-
- -

"Eye Auto"

- -
-
- -

◆ kEyeStr

- -
-
- - - - -
const char* kEyeStr
-
- -

"Eye"

- -
-
- -

◆ kFalseStr

- -
-
- - - - -
const char* kFalseStr
-
- -

"False"

- -
-
- -

◆ kFanOnlyStr

- -
-
- - - - -
const char* kFanOnlyStr
-
- -

"fan_only"

- -
-
- -

◆ kFanStr

- -
-
- - - - -
const char* kFanStr
-
- -

"Fan"

- -
-
- -

◆ kFastStr

- -
-
- - - - -
const char* kFastStr
-
- -

"Fast"

- -
-
- -

◆ kFilterStr

- -
-
- - - - -
const char* kFilterStr
-
- -

"Filter"

- -
-
- -

◆ kFixedStr

- -
-
- - - - -
const char* kFixedStr
-
- -

"Fixed"

- -
-
- -

◆ kFollowStr

- -
-
- - - - -
const char* kFollowStr
-
- -

"Follow"

- -
-
- -

◆ kFreshStr

- -
-
- - - - -
const char* kFreshStr
-
- -

"Fresh"

- -
-
- -

◆ kHealthStr

- -
-
- - - - -
const char* kHealthStr
-
- -

"Health"

- -
-
- -

◆ kHeatStr

- -
-
- - - - -
const char* kHeatStr
-
- -

"Heat"

- -
-
- -

◆ kHighestStr

- -
-
- - - - -
const char* kHighestStr
-
- -

"Highest"

- -
-
- -

◆ kHighStr

- -
-
- - - - -
const char* kHighStr
-
- -

"High"

- -
-
- -

◆ kHiStr

- -
-
- - - - -
const char* kHiStr
-
- -

"Hi"

- -
-
- -

◆ kHoldStr

- -
-
- - - - -
const char* kHoldStr
-
- -

"Hold"

- -
-
- -

◆ kHoursStr

- -
-
- - - - -
const char* kHoursStr
-
- -

"Hours"

- -
-
- -

◆ kHourStr

- -
-
- - - - -
const char* kHourStr
-
- -

"Hour"

- -
-
- -

◆ kHumidStr

- -
-
- - - - -
const char* kHumidStr
-
- -

"Humid"

- -
-
- -

◆ kIdStr

- -
-
- - - - -
const char* kIdStr
-
- -

"Id" / Device Identifier

- -
-
- -

◆ kIFeelStr

- -
-
- - - - -
const char* kIFeelStr
-
- -

"IFeel"

- -
-
- -

◆ kInsideStr

- -
-
- - - - -
const char* kInsideStr
-
- -

"Inside"

- -
-
- -

◆ kIonStr

- -
-
- - - - -
const char* kIonStr
-
- -

"Ion"

- -
-
- -

◆ kLastStr

- -
-
- - - - -
const char* kLastStr
-
- -

"Last"

- -
-
- -

◆ kLeftMaxStr

- -
-
- - - - -
const char* kLeftMaxStr
-
- -

"LeftMax"

- -
-
- -

◆ kLeftStr

- -
-
- - - - -
const char* kLeftStr
-
- -

"Left"

- -
-
- -

◆ kLightStr

- -
-
- - - - -
const char* kLightStr
-
- -

"Light"

- -
-
- -

◆ kLightToggleStr

- -
-
- - - - -
const char* kLightToggleStr
-
- -

"Light Toggle"

- -
-
- -

◆ kLoStr

- -
-
- - - - -
const char* kLoStr
-
- -

"Lo"

- -
-
- -

◆ kLoudStr

- -
-
- - - - -
const char* kLoudStr
-
- -

"Loud"

- -
-
- -

◆ kLowerStr

- -
-
- - - - -
const char* kLowerStr
-
- -

"Lower"

- -
-
- -

◆ kLowestStr

- -
-
- - - - -
const char* kLowestStr
-
- -

"Lowest"

- -
-
- -

◆ kLowStr

- -
-
- - - - -
const char* kLowStr
-
- -

"Low"

- -
-
- -

◆ kManualStr

- -
-
- - - - -
const char* kManualStr
-
- -

"Manual"

- -
-
- -

◆ kMaximumStr

- -
-
- - - - -
const char* kMaximumStr
-
- -

"Maximum"

- -
-
- -

◆ kMaxLeftStr

- -
-
- - - - -
const char* kMaxLeftStr
-
- -

"Max Left"

- -
-
- -

◆ kMaxRightStr

- -
-
- - - - -
const char* kMaxRightStr
-
- -

"Max Right"

- -
-
- -

◆ kMaxStr

- -
-
- - - - -
const char* kMaxStr
-
- -

"Max"

- -
-
- -

◆ kMediumStr

- -
-
- - - - -
const char* kMediumStr
-
- -

"Medium"

- -
-
- -

◆ kMedStr

- -
-
- - - - -
const char* kMedStr
-
- -

"Med"

- -
-
- -

◆ kMiddleStr

- -
-
- - - - -
const char* kMiddleStr
-
- -

"Middle"

- -
-
- -

◆ kMidStr

- -
-
- - - - -
const char* kMidStr
-
- -

"Mid"

- -
-
- -

◆ kMinimumStr

- -
-
- - - - -
const char* kMinimumStr
-
- -

"Minimum"

- -
-
- -

◆ kMinStr

- -
-
- - - - -
const char* kMinStr
-
- -

"Min"

- -
-
- -

◆ kMinutesStr

- -
-
- - - - -
const char* kMinutesStr
-
- -

"Minutes"

- -
-
- -

◆ kMinuteStr

- -
-
- - - - -
const char* kMinuteStr
-
- -

"Minute"

- -
-
- -

◆ kModelStr

- -
-
- - - - -
const char* kModelStr
-
- -

"Model"

- -
-
- -

◆ kModeStr

- -
-
- - - - -
const char* kModeStr
-
- -

"Mode"

- -
-
- -

◆ kMouldStr

- -
-
- - - - -
const char* kMouldStr
-
- -

"Mould"

- -
-
- -

◆ kMoveStr

- -
-
- - - - -
const char* kMoveStr
-
- -

"Move"

- -
-
- -

◆ kNAStr

- -
-
- - - - -
const char* kNAStr
-
- -

"N/A"

- -
-
- -

◆ kNightStr

- -
-
- - - - -
const char* kNightStr
-
- -

"Night"

- -
-
- -

◆ kNoStr

- -
-
- - - - -
const char* kNoStr
-
- -

"No"

- -
-
- -

◆ kNowStr

- -
-
- - - - -
const char* kNowStr
-
- -

"Now"

- -
-
- -

◆ kOffStr

- -
-
- - - - -
const char* kOffStr
-
- -

"Off"

- -
-
- -

◆ kOffTimerStr

- -
-
- - - - -
const char* kOffTimerStr
-
- -

"OffTimer"

- -
-
- -

◆ kOnStr

- -
-
- - - - -
const char* kOnStr
-
- -

"On"

- -
-
- -

◆ kOnTimerStr

- -
-
- - - - -
const char* kOnTimerStr
-
- -

"OnTimer"

- -
-
- -

◆ kOutsideQuietStr

- -
-
- - - - -
const char* kOutsideQuietStr
-
- -

"Outside Quiet"

- -
-
- -

◆ kOutsideStr

- -
-
- - - - -
const char* kOutsideStr
-
- -

"Outside"

- -
-
- -

◆ kPowerButtonStr

- -
-
- - - - -
const char* kPowerButtonStr
-
- -

"Power Button"

- -
-
- -

◆ kPowerfulStr

- -
-
- - - - -
const char* kPowerfulStr
-
- -

"Powerful"

- -
-
- -

◆ kPowerStr

- -
-
- - - - -
const char* kPowerStr
-
- -

"Power"

- -
-
- -

◆ kPowerToggleStr

- -
-
- - - - -
const char* kPowerToggleStr
-
- -

"Power Toggle"

- -
-
- -

◆ kPreviousPowerStr

- -
-
- - - - -
const char* kPreviousPowerStr
-
- -

"Previous Power"

- -
-
- -

◆ kProtocolStr

- -
-
- - - - -
const char* kProtocolStr
-
- -

"Protocol"

- -
-
- -

◆ kPurifyStr

- -
-
- - - - -
const char* kPurifyStr
-
- -

"Purify"

- -
-
- -

◆ kQuietStr

- -
-
- - - - -
const char* kQuietStr
-
- -

"Quiet"

- -
-
- -

◆ kRecycleStr

- -
-
- - - - -
const char* kRecycleStr
-
- -

"Recycle"

- -
-
- -

◆ kRepeatStr

- -
-
- - - - -
const char* kRepeatStr
-
- -

"Repeat"

- -
-
- -

◆ kRightMaxStr

- -
-
- - - - -
const char* kRightMaxStr
-
- -

"RightMax"

- -
-
- -

◆ kRightStr

- -
-
- - - - -
const char* kRightStr
-
- -

"Right"

- -
-
- -

◆ kRoomStr

- -
-
- - - - -
const char* kRoomStr
-
- -

"Room"

- -
-
- -

◆ kSaveStr

- -
-
- - - - -
const char* kSaveStr
-
- -

"Save"

- -
-
- -

◆ kSecondsStr

- -
-
- - - - -
const char* kSecondsStr
-
- -

"Seconds"

- -
-
- -

◆ kSecondStr

- -
-
- - - - -
const char* kSecondStr
-
- -

"Second"

- -
-
- -

◆ kSensorStr

- -
-
- - - - -
const char* kSensorStr
-
- -

"Sensor"

- -
-
- -

◆ kSensorTempStr

- -
-
- - - - -
const char* kSensorTempStr
-
- -

"Sensor Temp"

- -
-
- -

◆ kSetStr

- -
-
- - - - -
const char* kSetStr
-
- -

"Set"

- -
-
- -

◆ kSilentStr

- -
-
- - - - -
const char* kSilentStr
-
- -

"Silent"

- -
-
- -

◆ kSleepStr

- -
-
- - - - -
const char* kSleepStr
-
- -

"Sleep"

- -
-
- -

◆ kSleepTimerStr

- -
-
- - - - -
const char* kSleepTimerStr
-
- -

"Sleep Timer"

- -
-
- -

◆ kSlowStr

- -
-
- - - - -
const char* kSlowStr
-
- -

"Slow"

- -
-
- -

◆ kSpaceLBraceStr

- -
-
- - - - -
const char* kSpaceLBraceStr
-
- -

" ("

- -
-
- -

◆ kSpecialStr

- -
-
- - - - -
const char* kSpecialStr
-
- -

"Special"

- -
-
- -

◆ kStartStr

- -
-
- - - - -
const char* kStartStr
-
- -

"Start"

- -
-
- -

◆ kStepStr

- -
-
- - - - -
const char* kStepStr
-
- -

"Step"

- -
-
- -

◆ kStopStr

- -
-
- - - - -
const char* kStopStr
-
- -

"Stop"

- -
-
- -

◆ kSuperStr

- -
-
- - - - -
const char* kSuperStr
-
- -

"Super"

- -
-
- -

◆ kSwingHStr

- -
-
- - - - -
const char* kSwingHStr
-
- -

"SwingH"

- -
-
- -

◆ kSwingStr

- -
-
- - - - -
const char* kSwingStr
-
- -

"Swing"

- -
-
- -

◆ kSwingVModeStr

- -
-
- - - - -
const char* kSwingVModeStr
-
- -

"Swing(V) Mode"

- -
-
- -

◆ kSwingVStr

- -
-
- - - - -
const char* kSwingVStr
-
- -

"SwingV"

- -
-
- -

◆ kSwingVToggleStr

- -
-
- - - - -
const char* kSwingVToggleStr
-
- -

"Swing(V) Toggle"

- -
-
- -

◆ kTempDownStr

- -
-
- - - - -
const char* kTempDownStr
-
- -

"Temp Down"

- -
-
- -

◆ kTempStr

- -
-
- - - - -
const char* kTempStr
-
- -

"Temp"

- -
-
- -

◆ kTempUpStr

- -
-
- - - - -
const char* kTempUpStr
-
- -

"Temp Up"

- -
-
- -

◆ kThreeLetterDayOfWeekStr

- -
-
- - - - -
const char* kThreeLetterDayOfWeekStr
-
- -

"SunMonTueWedThuFriSat"

- -
-
- -

◆ kTimerStr

- -
-
- - - - -
const char* kTimerStr
-
- -

"Timer"

- -
-
- -

◆ kTimeSep

- -
-
- - - - -
char kTimeSep
-
- -

':'

- -
-
- -

◆ kToggleStr

- -
-
- - - - -
const char* kToggleStr
-
- -

"Toggle"

- -
-
- -

◆ kTopStr

- -
-
- - - - -
const char* kTopStr
-
- -

"Top"

- -
-
- -

◆ kTrueStr

- -
-
- - - - -
const char* kTrueStr
-
- -

"True"

- -
-
- -

◆ kTurboStr

- -
-
- - - - -
const char* kTurboStr
-
- -

"Turbo"

- -
-
- -

◆ kTurboToggleStr

- -
-
- - - - -
const char* kTurboToggleStr
-
- -

"Turbo Toggle"

- -
-
- -

◆ kTypeStr

- -
-
- - - - -
const char* kTypeStr
-
- -

"Type"

- -
-
- -

◆ kUnknownStr

- -
-
- - - - -
const char* kUnknownStr
-
- -

"Unknown"

- -
-
- -

◆ kUpperStr

- -
-
- - - - -
const char* kUpperStr
-
- -

"Upper"

- -
-
- -

◆ kUpStr

- -
-
- - - - -
const char* kUpStr
-
- -

"Up"

- -
-
- -

◆ kWallStr

- -
-
- - - - -
const char* kWallStr
-
- -

"Wall"

- -
-
- -

◆ kWeeklyTimerStr

- -
-
- - - - -
const char* kWeeklyTimerStr
-
- -

"WeeklyTimer"

- -
-
- -

◆ kWideStr

- -
-
- - - - -
const char* kWideStr
-
- -

"Wide"

- -
-
- -

◆ kWifiStr

- -
-
- - - - -
const char* kWifiStr
-
- -

"Wifi"

- -
-
- -

◆ kXFanStr

- -
-
- - - - -
const char* kXFanStr
-
- -

"XFan"

- -
-
- -

◆ kYesStr

- -
-
- - - - -
const char* kYesStr
-
- -

"Yes"

- -
-
- -

◆ kZoneFollowStr

- -
-
- - - - -
const char* kZoneFollowStr
-
- -

"Zone Follow"

- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h_source.html deleted file mode 100644 index b22353b33..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtext_8h_source.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRtext.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRtext.h
-
-
-Go to the documentation of this file.
1 // Copyright 2019-2021 - David Conran (@crankyoldgit)
-
2 // This header file is to be included in files **other than** 'IRtext.cpp'.
-
3 //
-
4 // WARNING: Do not edit this file! This file is automatically generated by
-
5 // '../tools/generate_irtext_h.sh'.
-
6 
-
7 #ifndef IRTEXT_H_
-
8 #define IRTEXT_H_
-
9 
-
10 #include "i18n.h"
-
11 
-
12 // Constant text to be shared across all object files.
-
13 // This means there is only one copy of the character/string/text etc.
-
14 
-
15 extern char kTimeSep;
-
16 extern const char* k10CHeatStr;
-
17 extern const char* k3DStr;
-
18 extern const char* k6thSenseStr;
-
19 extern const char* k8CHeatStr;
-
20 extern const char* kAirFlowStr;
-
21 extern const char *kAllProtocolNamesStr;
-
22 extern const char* kAutomaticStr;
-
23 extern const char* kAutoStr;
-
24 extern const char* kBeepStr;
-
25 extern const char* kBitsStr;
-
26 extern const char* kBottomStr;
-
27 extern const char* kBreezeStr;
-
28 extern const char* kButtonStr;
-
29 extern const char* kCancelStr;
-
30 extern const char* kCeilingStr;
-
31 extern const char* kCelsiusFahrenheitStr;
-
32 extern const char* kCelsiusStr;
-
33 extern const char* kCentreStr;
-
34 extern const char* kChangeStr;
-
35 extern const char* kCirculateStr;
-
36 extern const char* kCleanStr;
-
37 extern const char* kClockStr;
-
38 extern const char* kCodeStr;
-
39 extern const char* kColonSpaceStr;
-
40 extern const char* kComfortStr;
-
41 extern const char* kCommandStr;
-
42 extern const char* kCommaSpaceStr;
-
43 extern const char* kCoolStr;
-
44 extern const char* kDaysStr;
-
45 extern const char* kDayStr;
-
46 extern const char* kDisplayTempStr;
-
47 extern const char* kDownStr;
-
48 extern const char* kDryStr;
-
49 extern const char* kEconoStr;
-
50 extern const char* kEconoToggleStr;
-
51 extern const char* kEyeAutoStr;
-
52 extern const char* kEyeStr;
-
53 extern const char* kFalseStr;
-
54 extern const char* kFanOnlyStr;
-
55 extern const char* kFanStr;
-
56 extern const char* kFastStr;
-
57 extern const char* kFilterStr;
-
58 extern const char* kFixedStr;
-
59 extern const char* kFollowStr;
-
60 extern const char* kFreshStr;
-
61 extern const char* kHealthStr;
-
62 extern const char* kHeatStr;
-
63 extern const char* kHighestStr;
-
64 extern const char* kHighStr;
-
65 extern const char* kHiStr;
-
66 extern const char* kHoldStr;
-
67 extern const char* kHoursStr;
-
68 extern const char* kHourStr;
-
69 extern const char* kHumidStr;
-
70 extern const char* kIdStr;
-
71 extern const char* kIFeelStr;
-
72 extern const char* kInsideStr;
-
73 extern const char* kIonStr;
-
74 extern const char* kLastStr;
-
75 extern const char* kLeftMaxStr;
-
76 extern const char* kLeftStr;
-
77 extern const char* kLightStr;
-
78 extern const char* kLightToggleStr;
-
79 extern const char* kLoStr;
-
80 extern const char* kLoudStr;
-
81 extern const char* kLowerStr;
-
82 extern const char* kLowestStr;
-
83 extern const char* kLowStr;
-
84 extern const char* kManualStr;
-
85 extern const char* kMaximumStr;
-
86 extern const char* kMaxLeftStr;
-
87 extern const char* kMaxRightStr;
-
88 extern const char* kMaxStr;
-
89 extern const char* kMediumStr;
-
90 extern const char* kMedStr;
-
91 extern const char* kMiddleStr;
-
92 extern const char* kMidStr;
-
93 extern const char* kMinimumStr;
-
94 extern const char* kMinStr;
-
95 extern const char* kMinutesStr;
-
96 extern const char* kMinuteStr;
-
97 extern const char* kModelStr;
-
98 extern const char* kModeStr;
-
99 extern const char* kMouldStr;
-
100 extern const char* kMoveStr;
-
101 extern const char* kNAStr;
-
102 extern const char* kNightStr;
-
103 extern const char* kNoStr;
-
104 extern const char* kNowStr;
-
105 extern const char* kOffStr;
-
106 extern const char* kOffTimerStr;
-
107 extern const char* kOnStr;
-
108 extern const char* kOnTimerStr;
-
109 extern const char* kOutsideQuietStr;
-
110 extern const char* kOutsideStr;
-
111 extern const char* kPowerButtonStr;
-
112 extern const char* kPowerfulStr;
-
113 extern const char* kPowerStr;
-
114 extern const char* kPowerToggleStr;
-
115 extern const char* kPreviousPowerStr;
-
116 extern const char* kProtocolStr;
-
117 extern const char* kPurifyStr;
-
118 extern const char* kQuietStr;
-
119 extern const char* kRecycleStr;
-
120 extern const char* kRepeatStr;
-
121 extern const char* kRightMaxStr;
-
122 extern const char* kRightStr;
-
123 extern const char* kRoomStr;
-
124 extern const char* kSaveStr;
-
125 extern const char* kSecondsStr;
-
126 extern const char* kSecondStr;
-
127 extern const char* kSensorStr;
-
128 extern const char* kSensorTempStr;
-
129 extern const char* kSetStr;
-
130 extern const char* kSilentStr;
-
131 extern const char* kSleepStr;
-
132 extern const char* kSleepTimerStr;
-
133 extern const char* kSlowStr;
-
134 extern const char* kSpaceLBraceStr;
-
135 extern const char* kSpecialStr;
-
136 extern const char* kStartStr;
-
137 extern const char* kStepStr;
-
138 extern const char* kStopStr;
-
139 extern const char* kSuperStr;
-
140 extern const char* kSwingHStr;
-
141 extern const char* kSwingStr;
-
142 extern const char* kSwingVModeStr;
-
143 extern const char* kSwingVStr;
-
144 extern const char* kSwingVToggleStr;
-
145 extern const char* kTempDownStr;
-
146 extern const char* kTempStr;
-
147 extern const char* kTempUpStr;
-
148 extern const char* kThreeLetterDayOfWeekStr;
-
149 extern const char* kTimerStr;
-
150 extern const char* kToggleStr;
-
151 extern const char* kTopStr;
-
152 extern const char* kTrueStr;
-
153 extern const char* kTurboStr;
-
154 extern const char* kTurboToggleStr;
-
155 extern const char* kTypeStr;
-
156 extern const char* kUnknownStr;
-
157 extern const char* kUpperStr;
-
158 extern const char* kUpStr;
-
159 extern const char* kWallStr;
-
160 extern const char* kWeeklyTimerStr;
-
161 extern const char* kWideStr;
-
162 extern const char* kWifiStr;
-
163 extern const char* kXFanStr;
-
164 extern const char* kYesStr;
-
165 extern const char* kZoneFollowStr;
-
166 
-
167 #endif // IRTEXT_H_
-
-
const char * kTrueStr
"True"
Definition: IRtext.cpp:177
-
const char * kHoldStr
"Hold"
Definition: IRtext.cpp:57
-
const char * kStopStr
"Stop"
Definition: IRtext.cpp:71
-
const char * kQuietStr
"Quiet"
Definition: IRtext.cpp:30
-
const char * kBitsStr
"Bits"
Definition: IRtext.cpp:182
-
const char * kPowerButtonStr
"Power Button"
Definition: IRtext.cpp:145
-
const char * kMediumStr
"Medium"
Definition: IRtext.cpp:118
-
const char * kStepStr
"Step"
Definition: IRtext.cpp:86
-
const char * k10CHeatStr
"10C Heat"
Definition: IRtext.cpp:60
-
const char * kIdStr
"Id" / Device Identifier
Definition: IRtext.cpp:101
-
const char * kSilentStr
"Silent"
Definition: IRtext.cpp:62
-
const char * kOnTimerStr
"OnTimer"
Definition: IRtext.cpp:42
-
const char * kLoStr
"Lo"
Definition: IRtext.cpp:126
-
const char * kSwingStr
"Swing"
Definition: IRtext.cpp:32
-
const char * kCodeStr
"Code"
Definition: IRtext.cpp:181
-
const char * kSecondsStr
"Seconds"
Definition: IRtext.cpp:171
-
const char * kSetStr
"Set"
Definition: IRtext.cpp:73
-
const char * kHiStr
"Hi"
Definition: IRtext.cpp:122
-
const char * kRepeatStr
"Repeat"
Definition: IRtext.cpp:180
-
const char * kCeilingStr
"Ceiling"
Definition: IRtext.cpp:95
-
const char * kPowerToggleStr
"Power Toggle"
Definition: IRtext.cpp:144
-
const char * kInsideStr
"Inside"
Definition: IRtext.cpp:88
-
const char * kTempDownStr
"Temp Down"
Definition: IRtext.cpp:69
-
const char * kMoveStr
"Move"
Definition: IRtext.cpp:72
-
const char * kColonSpaceStr
": "
Definition: IRtext.cpp:160
-
const char * kTurboToggleStr
"Turbo Toggle"
Definition: IRtext.cpp:154
-
const char * kWideStr
"Wide"
Definition: IRtext.cpp:134
-
const char * kRightMaxStr
"RightMax"
Definition: IRtext.cpp:129
-
const char * kDownStr
"Down"
Definition: IRtext.cpp:76
-
const char * kLightStr
"Light"
Definition: IRtext.cpp:28
-
const char * kCoolStr
"Cool"
Definition: IRtext.cpp:106
-
const char * kRightStr
"Right"
Definition: IRtext.cpp:130
-
const char * kMinuteStr
"Minute"
Definition: IRtext.cpp:168
-
const char * kMinutesStr
"Minutes"
Definition: IRtext.cpp:169
-
const char * kSleepStr
"Sleep"
Definition: IRtext.cpp:27
-
const char * kMinimumStr
"Minimum"
Definition: IRtext.cpp:116
-
const char * k3DStr
"3D"
Definition: IRtext.cpp:64
-
const char * kTempStr
"Temp"
Definition: IRtext.cpp:49
-
const char * kAutomaticStr
"Automatic"
Definition: IRtext.cpp:104
-
const char * kSecondStr
"Second"
Definition: IRtext.cpp:170
-
const char * kSwingVToggleStr
"Swing(V) Toggle"
Definition: ir_Midea.h:122
-
const char * k6thSenseStr
"6th Sense"
Definition: IRtext.cpp:98
-
const char * kFilterStr
"Filter"
Definition: IRtext.cpp:63
-
const char * kNightStr
"Night"
Definition: IRtext.cpp:61
-
const char * kSpaceLBraceStr
" ("
Definition: IRtext.cpp:158
-
const char * kSleepTimerStr
"Sleep Timer"
Definition: IRtext.cpp:150
-
const char * kSwingVModeStr
"Swing(V) Mode"
Definition: IRtext.cpp:151
-
const char * kCelsiusFahrenheitStr
"Celsius/Fahrenheit"
Definition: IRtext.cpp:66
-
const char * kTimerStr
"Timer"
Definition: IRtext.cpp:41
-
const char * kChangeStr
"Change"
Definition: IRtext.cpp:77
-
const char * kAllProtocolNamesStr
New protocol strings should be added just above this line.
Definition: IRtext.cpp:186
-
const char * kIFeelStr
"IFeel"
Definition: IRtext.cpp:50
-
const char * kSpecialStr
"Special"
Definition: IRtext.cpp:100
-
const char * kFalseStr
"False"
Definition: IRtext.cpp:178
-
const char * kMaxLeftStr
"Max Left"
Definition: IRtext.cpp:132
-
const char * kHealthStr
"Health"
Definition: IRtext.cpp:47
-
const char * kCommandStr
"Command"
Definition: IRtext.cpp:45
-
const char * kXFanStr
"XFan"
Definition: IRtext.cpp:46
-
const char * kPurifyStr
"Purify"
Definition: IRtext.cpp:40
-
const char * kHighStr
"High"
Definition: IRtext.cpp:121
-
const char * kTypeStr
"Type"
Definition: IRtext.cpp:99
-
const char * kCommaSpaceStr
", "
Definition: IRtext.cpp:159
-
const char * kFanStr
"Fan"
Definition: IRtext.cpp:108
-
const char * kTopStr
"Top"
Definition: IRtext.cpp:136
-
const char * kNowStr
"Now"
Definition: IRtext.cpp:172
-
const char * kOffStr
"Off"
Definition: IRtext.cpp:22
-
const char * kEconoToggleStr
"Econo Toggle"
Definition: IRtext.cpp:140
-
const char * kMaximumStr
"Maximum"
Definition: IRtext.cpp:114
-
const char * kButtonStr
"Button"
Definition: IRtext.cpp:58
- -
const char * kTempUpStr
"Temp Up"
Definition: IRtext.cpp:68
-
const char * kCleanStr
"Clean"
Definition: IRtext.cpp:39
-
const char * kIonStr
"Ion"
Definition: IRtext.cpp:55
-
const char * kProtocolStr
"Protocol"
Definition: IRtext.cpp:19
-
const char * kEyeStr
"Eye"
Definition: IRtext.cpp:53
-
const char * kMedStr
"Med"
Definition: IRtext.cpp:117
-
const char * kThreeLetterDayOfWeekStr
"SunMonTueWedThuFriSat"
Definition: IRtext.cpp:173
-
const char * kCancelStr
"Cancel"
Definition: IRtext.cpp:74
-
const char * kWallStr
"Wall"
Definition: IRtext.cpp:96
-
const char * kToggleStr
"Toggle"
Definition: IRtext.cpp:24
-
const char * kMouldStr
"Mould"
Definition: IRtext.cpp:38
-
const char * kBottomStr
"Bottom"
Definition: IRtext.cpp:137
-
const char * kBeepStr
"Beep"
Definition: IRtext.cpp:35
-
const char * kRoomStr
"Room"
Definition: IRtext.cpp:97
-
const char * kFastStr
"Fast"
Definition: IRtext.cpp:83
-
const char * kDryStr
"Dry"
Definition: IRtext.cpp:109
-
const char * kUpperStr
"Upper"
Definition: IRtext.cpp:92
-
const char * kMiddleStr
"Middle"
Definition: IRtext.cpp:124
-
const char * kAirFlowStr
"Air Flow"
Definition: IRtext.cpp:85
-
const char * kLoudStr
"Loud"
Definition: IRtext.cpp:90
-
const char * kUnknownStr
"Unknown"
Definition: IRtext.cpp:18
-
const char * kSuperStr
"Super"
Definition: IRtext.cpp:26
-
const char * kAutoStr
"Auto"
Definition: IRtext.cpp:103
-
const char * kMidStr
"Mid"
Definition: IRtext.cpp:123
-
const char * kYesStr
"Yes"
Definition: IRtext.cpp:175
-
const char * kSlowStr
"Slow"
Definition: IRtext.cpp:84
-
const char * k8CHeatStr
"8C Heat"
Definition: IRtext.cpp:59
-
const char * kClockStr
"Clock"
Definition: IRtext.cpp:44
-
const char * kLeftMaxStr
"LeftMax"
Definition: IRtext.cpp:133
-
const char * kMaxStr
"Max"
Definition: IRtext.cpp:113
-
const char * kSaveStr
"Save"
Definition: IRtext.cpp:52
-
const char * kLightToggleStr
"Light Toggle"
Definition: IRtext.cpp:142
-
const char * kDayStr
"Day"
Definition: IRtext.cpp:164
-
const char * kFreshStr
"Fresh"
Definition: IRtext.cpp:56
-
const char * kCentreStr
"Centre"
Definition: IRtext.cpp:135
-
const char * kManualStr
"Manual"
Definition: IRtext.cpp:105
-
const char * kHeatStr
"Heat"
Definition: IRtext.cpp:107
-
const char * kMaxRightStr
"Max Right"
Definition: IRtext.cpp:128
-
const char * kUpStr
"Up"
Definition: IRtext.cpp:75
-
const char * kCelsiusStr
"Celsius"
Definition: IRtext.cpp:65
-
const char * kOnStr
"On"
Definition: IRtext.cpp:21
-
const char * kHoursStr
"Hours"
Definition: IRtext.cpp:167
-
const char * kBreezeStr
"Breeze"
Definition: IRtext.cpp:93
-
const char * kPowerfulStr
"Powerful"
Definition: IRtext.cpp:29
-
const char * kEyeAutoStr
"Eye Auto"
Definition: IRtext.cpp:141
-
const char * kComfortStr
"Comfort"
Definition: IRtext.cpp:78
-
const char * kHighestStr
"Highest"
Definition: IRtext.cpp:120
-
const char * kFanOnlyStr
"fan_only"
Definition: IRtext.cpp:110
-
const char * kMinStr
"Min"
Definition: IRtext.cpp:115
-
const char * kFollowStr
"Follow"
Definition: IRtext.cpp:54
-
const char * kWeeklyTimerStr
"WeeklyTimer"
Definition: IRtext.cpp:80
-
const char * kOutsideQuietStr
"Outside Quiet"
Definition: IRtext.cpp:143
-
const char * kLowStr
"Low"
Definition: IRtext.cpp:125
-
const char * kFixedStr
"Fixed"
Definition: IRtext.cpp:37
-
const char * kStartStr
"Start"
Definition: IRtext.cpp:70
-
const char * kDaysStr
"Days"
Definition: IRtext.cpp:165
-
const char * kWifiStr
"Wifi"
Definition: IRtext.cpp:81
-
const char * kSwingHStr
"SwingH"
Definition: IRtext.cpp:33
-
const char * kLastStr
"Last"
Definition: IRtext.cpp:82
-
const char * kEconoStr
"Econo"
Definition: IRtext.cpp:31
-
const char * kNAStr
"N/A"
Definition: IRtext.cpp:87
-
char kTimeSep
':'
Definition: IRtext.cpp:157
-
const char * kModelStr
"Model"
Definition: IRtext.cpp:48
-
const char * kOutsideStr
"Outside"
Definition: IRtext.cpp:89
-
const char * kPowerStr
"Power"
Definition: IRtext.cpp:20
-
const char * kCirculateStr
"Circulate"
Definition: IRtext.cpp:94
-
const char * kLeftStr
"Left"
Definition: IRtext.cpp:131
-
const char * kSensorStr
"Sensor"
Definition: IRtext.cpp:79
-
const char * kPreviousPowerStr
"Previous Power"
Definition: IRtext.cpp:146
-
const char * kHumidStr
"Humid"
Definition: IRtext.cpp:51
-
const char * kZoneFollowStr
"Zone Follow"
Definition: IRtext.cpp:36
-
const char * kNoStr
"No"
Definition: IRtext.cpp:176
-
const char * kOffTimerStr
"OffTimer"
Definition: IRtext.cpp:43
-
const char * kLowerStr
"Lower"
Definition: IRtext.cpp:91
-
const char * kDisplayTempStr
"Display Temp"
Definition: IRtext.cpp:148
-
const char * kSwingVStr
"SwingV"
Definition: IRtext.cpp:34
-
const char * kLowestStr
"Lowest"
Definition: IRtext.cpp:127
-
const char * kTurboStr
"Turbo"
Definition: IRtext.cpp:25
-
const char * kHourStr
"Hour"
Definition: IRtext.cpp:166
-
const char * kModeStr
"Mode"
Definition: IRtext.cpp:23
-
const char * kSensorTempStr
"Sensor Temp"
Definition: IRtext.cpp:149
-
const char * kRecycleStr
"Recycle"
Definition: IRtext.cpp:111
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8cpp.html deleted file mode 100644 index 8c3da0949..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8cpp.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRtimer.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRtimer.cpp File Reference
-
-
- - - - - - -

-Variables

uint32_t _IRtimer_unittest_now = 0
 
uint32_t _TimerMs_unittest_now = 0
 
-

Variable Documentation

- -

◆ _IRtimer_unittest_now

- -
-
- - - - -
uint32_t _IRtimer_unittest_now = 0
-
- -
-
- -

◆ _TimerMs_unittest_now

- -
-
- - - - -
uint32_t _TimerMs_unittest_now = 0
-
- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h.html deleted file mode 100644 index 2d06c01a8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRtimer.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRtimer.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - - - - -

-Classes

class  IRtimer
 This class offers a simple counter in micro-seconds since instantiated. More...
 
class  TimerMs
 This class offers a simple counter in milli-seconds since instantiated. More...
 
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h_source.html deleted file mode 100644 index 3055257b7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRtimer_8h_source.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRtimer.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRtimer.h
-
-
-Go to the documentation of this file.
1 // Copyright 2017 David Conran
-
2 
-
3 #ifndef IRTIMER_H_
-
4 #define IRTIMER_H_
-
5 
-
6 #define __STDC_LIMIT_MACROS
-
7 #include <stdint.h>
-
8 
-
9 // Classes
-
10 
-
13 class IRtimer {
-
14  public:
-
15  IRtimer();
-
16  void reset();
-
17  uint32_t elapsed();
-
18 #ifdef UNIT_TEST
-
19  static void add(uint32_t usecs);
-
20 #endif // UNIT_TEST
-
21 
-
22  private:
-
23  uint32_t start;
-
24 };
-
25 
-
28 class TimerMs {
-
29  public:
-
30  TimerMs();
-
31  void reset();
-
32  uint32_t elapsed();
-
33 #ifdef UNIT_TEST
-
34  static void add(uint32_t msecs);
-
35 #endif // UNIT_TEST
-
36 
-
37  private:
-
38  uint32_t start;
-
39 };
-
40 #endif // IRTIMER_H_
-
-
uint32_t start
Time in mSeconds when the class was instantiated/reset.
Definition: IRtimer.h:38
-
This class offers a simple counter in micro-seconds since instantiated.
Definition: IRtimer.h:13
-
static void add(uint32_t usecs)
Add time to the timer to simulate elapsed time.
Definition: IRtimer.cpp:44
-
void reset()
Resets the IRtimer object. I.e. The counter starts again from now.
Definition: IRtimer.cpp:18
-
IRtimer()
Class constructor.
Definition: IRtimer.cpp:15
-
uint32_t elapsed()
Calculate how many microseconds have elapsed since the timer was started.
Definition: IRtimer.cpp:28
-
uint32_t elapsed()
Calculate how many milliseconds have elapsed since the timer was started.
Definition: IRtimer.cpp:61
-
void reset()
Resets the TimerMs object. I.e. The counter starts again from now.
Definition: IRtimer.cpp:51
-
TimerMs()
Class constructor.
Definition: IRtimer.cpp:48
-
uint32_t start
Time in uSeconds when the class was instantiated/reset.
Definition: IRtimer.h:23
-
static void add(uint32_t msecs)
Add time to the timer to simulate elapsed time.
Definition: IRtimer.cpp:77
-
This class offers a simple counter in milli-seconds since instantiated.
Definition: IRtimer.h:28
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8cpp.html deleted file mode 100644 index c5bb1414c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8cpp.html +++ /dev/null @@ -1,933 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRutils.cpp File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRutils.cpp File Reference
-
-
- - - - - -

-Namespaces

 irutils
 Namespace for covering common functions & procedures for advancd protocol handlers.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

uint64_t reverseBits (uint64_t input, uint16_t nbits)
 Reverse the order of the requested least significant nr. of bits. More...
 
String uint64ToString (uint64_t input, uint8_t base)
 Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. More...
 
String int64ToString (int64_t input, uint8_t base)
 Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. More...
 
void serialPrintUint64 (uint64_t input, uint8_t base)
 Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) More...
 
decode_type_t strToDecodeType (const char *const str)
 Convert a C-style string to a decode_type_t. More...
 
String typeToString (const decode_type_t protocol, const bool isRepeat)
 Convert a protocol type (enum etc) to a human readable string. More...
 
bool hasACState (const decode_type_t protocol)
 Does the given protocol use a complex state as part of the decode? More...
 
uint16_t getCorrectedRawLength (const decode_results *const results)
 Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. More...
 
String resultToSourceCode (const decode_results *const results)
 Return a String containing the key values of a decode_results structure in a C/C++ code style format. More...
 
String resultToTimingInfo (const decode_results *const results)
 Dump out the decode_results structure. More...
 
String resultToHexidecimal (const decode_results *const result)
 Convert the decode_results structure's value/state to simple hexadecimal. More...
 
String resultToHumanReadableBasic (const decode_results *const results)
 Dump out the decode_results structure into a human readable format. More...
 
uint16_t * resultToRawArray (const decode_results *const decode)
 Convert a decode_results into an array suitable for sendRaw(). More...
 
uint8_t sumBytes (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Sum all the bytes of an array and return the least significant 8-bits of the result. More...
 
uint8_t xorBytes (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Calculate a rolling XOR of all the bytes of an array. More...
 
uint16_t countBits (const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init)
 Count the number of bits of a certain type in an array. More...
 
uint16_t countBits (const uint64_t data, const uint8_t length, const bool ones, const uint16_t init)
 Count the number of bits of a certain type in an Integer. More...
 
uint64_t invertBits (const uint64_t data, const uint16_t nbits)
 Invert/Flip the bits in an Integer. More...
 
float celsiusToFahrenheit (const float deg)
 Convert degrees Celsius to degrees Fahrenheit. More...
 
float fahrenheitToCelsius (const float deg)
 Convert degrees Fahrenheit to degrees Celsius. More...
 
String irutils::addLabeledString (const String value, const String label, const bool precomma)
 Create a String with a colon separated "label: value" pair suitable for Humans. More...
 
String irutils::addBoolToString (const bool value, const String label, const bool precomma)
 Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". More...
 
String irutils::addIntToString (const uint16_t value, const String label, const bool precomma)
 Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
 
String irutils::addSignedIntToString (const int16_t value, const String label, const bool precomma)
 Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
 
String irutils::modelToStr (const decode_type_t protocol, const int16_t model)
 Generate the model string for a given Protocol/Model pair. More...
 
String irutils::addModelToString (const decode_type_t protocol, const int16_t model, const bool precomma)
 Create a String of human output for a given protocol model number. e.g. "Model: JKE". More...
 
String irutils::addTempToString (const uint16_t degrees, const bool celsius, const bool precomma)
 Create a String of human output for a given temperature. e.g. "Temp: 25C". More...
 
String irutils::addTempFloatToString (const float degrees, const bool celsius, const bool precomma)
 Create a String of human output for a given temperature. e.g. "Temp: 25.5C". More...
 
String irutils::addModeToString (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
 Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". More...
 
String irutils::addDayToString (const uint8_t day_of_week, const int8_t offset, const bool precomma)
 Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". More...
 
String irutils::addFanToString (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum)
 Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". More...
 
String irutils::addSwingHToString (const uint8_t position, const uint8_t automatic, const uint8_t maxleft, const uint8_t left, const uint8_t middle, const uint8_t right, const uint8_t maxright, const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide)
 Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)". More...
 
String irutils::addSwingVToString (const uint8_t position, const uint8_t automatic, const uint8_t highest, const uint8_t high, const uint8_t uppermiddle, const uint8_t middle, const uint8_t lowermiddle, const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate)
 Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)". More...
 
String irutils::htmlEscape (const String unescaped)
 Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. More...
 
String irutils::msToString (uint32_t const msecs)
 Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". More...
 
String irutils::minsToString (const uint16_t mins)
 Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". More...
 
uint8_t irutils::sumNibbles (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Sum all the nibbles together in a series of bytes. More...
 
uint8_t irutils::sumNibbles (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)
 Sum all the nibbles together in an integer. More...
 
uint8_t irutils::bcdToUint8 (const uint8_t bcd)
 Convert a byte of Binary Coded Decimal(BCD) into an Integer. More...
 
uint8_t irutils::uint8ToBcd (const uint8_t integer)
 Convert an Integer into a byte of Binary Coded Decimal(BCD). More...
 
bool irutils::getBit (const uint64_t data, const uint8_t position, const uint8_t size)
 Return the value of positionth bit of an Integer. More...
 
bool irutils::getBit (const uint8_t data, const uint8_t position)
 Return the value of positionth bit of an Integer. More...
 
uint64_t irutils::setBit (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
 Return the value of an Integer with the positionth bit changed. More...
 
uint8_t irutils::setBit (const uint8_t data, const uint8_t position, const bool on)
 Return the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint8_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint32_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint64_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBits (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
 Alter an uint8_t value by overwriting an arbitrary given number of bits. More...
 
void irutils::setBits (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)
 Alter an uint32_t value by overwriting an arbitrary given number of bits. More...
 
void irutils::setBits (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)
 Alter an uint64_t value by overwriting an arbitrary given number of bits. More...
 
uint8_t * irutils::invertBytePairs (uint8_t *ptr, const uint16_t length)
 Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previous byte of the pair. More...
 
bool irutils::checkInvertedBytePairs (const uint8_t *const ptr, const uint16_t length)
 Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/previous byte of the pair. More...
 
uint8_t irutils::lowLevelSanityCheck (void)
 Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler operation. Calls to this should return 0 if everything is as expected, anything else means the library won't work as expected. More...
 
-

Function Documentation

- -

◆ celsiusToFahrenheit()

- -
-
- - - - - - - - -
float celsiusToFahrenheit (const float deg)
-
- -

Convert degrees Celsius to degrees Fahrenheit.

- -
-
- -

◆ countBits() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16_t countBits (const uint64_t data,
const uint8_t length,
const bool ones,
const uint16_t init 
)
-
- -

Count the number of bits of a certain type in an Integer.

-
Parameters
- - - - - -
[in]dataThe value you want bits counted for. Starting from the LSB.
[in]lengthHow many bits to use in the calculation? Starts at the LSB
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The nr. of bits found of the given type found in the Integer.
- -
-
- -

◆ countBits() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16_t countBits (const uint8_t *const start,
const uint16_t length,
const bool ones,
const uint16_t init 
)
-
- -

Count the number of bits of a certain type in an array.

-
Parameters
- - - - - -
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The nr. of bits found of the given type found in the array.
- -
-
- -

◆ fahrenheitToCelsius()

- -
-
- - - - - - - - -
float fahrenheitToCelsius (const float deg)
-
- -

Convert degrees Fahrenheit to degrees Celsius.

- -
-
- -

◆ getCorrectedRawLength()

- -
-
- - - - - - - - -
uint16_t getCorrectedRawLength (const decode_results *const results)
-
- -

Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
The corrected length.
- -
-
- -

◆ hasACState()

- -
-
- - - - - - - - -
bool hasACState (const decode_type_t protocol)
-
- -

Does the given protocol use a complex state as part of the decode?

-
Parameters
- - -
[in]protocolThe decode_type_t protocol we are enquiring about.
-
-
-
Returns
True if the protocol uses a state array. False if just an integer.
- -
-
- -

◆ int64ToString()

- -
-
- - - - - - - - - - - - - - - - - - -
String int64ToString (int64_t input,
uint8_t base 
)
-
- -

Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.

-
Parameters
- - - -
[in]inputThe value to print
[in]baseThe output base.
-
-
-
Returns
A String representation of the integer.
- -
-
- -

◆ invertBits()

- -
-
- - - - - - - - - - - - - - - - - - -
uint64_t invertBits (const uint64_t data,
const uint16_t nbits 
)
-
- -

Invert/Flip the bits in an Integer.

-
Parameters
- - - -
[in]dataThe Integer that will be inverted.
[in]nbitsHow many bits are to be inverted. Starting from the LSB.
-
-
-
Returns
An Integer with the appropriate bits inverted/flipped.
- -
-
- -

◆ resultToHexidecimal()

- -
-
- - - - - - - - -
String resultToHexidecimal (const decode_results *const result)
-
- -

Convert the decode_results structure's value/state to simple hexadecimal.

-
Parameters
- - -
[in]resultA ptr to a decode_results structure.
-
-
-
Returns
A String containing the output.
- -
-
- -

◆ resultToHumanReadableBasic()

- -
-
- - - - - - - - -
String resultToHumanReadableBasic (const decode_results *const results)
-
- -

Dump out the decode_results structure into a human readable format.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
A String containing the output.
- -
-
- -

◆ resultToRawArray()

- -
-
- - - - - - - - -
uint16_t* resultToRawArray (const decode_results *const decode)
-
- -

Convert a decode_results into an array suitable for sendRaw().

-
Parameters
- - -
[in]decodeA ptr to a decode_results structure that contains a mesg.
-
-
-
Returns
A PTR to a dynamically allocated uint16_t sendRaw compatible array.
-
Note
The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller.
- -
-
- -

◆ resultToSourceCode()

- -
-
- - - - - - - - -
String resultToSourceCode (const decode_results *const results)
-
- -

Return a String containing the key values of a decode_results structure in a C/C++ code style format.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
A String containing the code-ified result.
- -
-
- -

◆ resultToTimingInfo()

- -
-
- - - - - - - - -
String resultToTimingInfo (const decode_results *const results)
-
- -

Dump out the decode_results structure.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
A String containing the legacy information format.
-
Deprecated:
This is only for those that want this legacy format.
- -
-
- -

◆ reverseBits()

- -
-
- - - - - - - - - - - - - - - - - - -
uint64_t reverseBits (uint64_t input,
uint16_t nbits 
)
-
- -

Reverse the order of the requested least significant nr. of bits.

-
Parameters
- - - -
[in]inputBit pattern/integer to reverse.
[in]nbitsNr. of bits to reverse. (LSB -> MSB)
-
-
-
Returns
The reversed bit pattern.
- -
-
- -

◆ serialPrintUint64()

- -
-
- - - - - - - - - - - - - - - - - - -
void serialPrintUint64 (uint64_t input,
uint8_t base 
)
-
- -

Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t)

-
Parameters
- - - -
[in]inputThe value to print
[in]baseThe output base.
-
-
- -
-
- -

◆ strToDecodeType()

- -
-
- - - - - - - - -
decode_type_t strToDecodeType (const char *const str)
-
- -

Convert a C-style string to a decode_type_t.

-
Parameters
- - -
[in]strA C-style string containing a protocol name or number.
-
-
-
Returns
A decode_type_t enum. (decode_type_t::UNKNOWN if no match.)
- -
-
- -

◆ sumBytes()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint8_t sumBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
-
- -

Sum all the bytes of an array and return the least significant 8-bits of the result.

-
Parameters
- - - - -
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The 8-bit calculated result of all the bytes and init value.
- -
-
- -

◆ typeToString()

- -
-
- - - - - - - - - - - - - - - - - - -
String typeToString (const decode_type_t protocol,
const bool isRepeat 
)
-
- -

Convert a protocol type (enum etc) to a human readable string.

-
Parameters
- - - -
[in]protocolNr. (enum) of the protocol.
[in]isRepeatA flag indicating if it is a repeat message.
-
-
-
Returns
A String containing the protocol name. kUnknownStr if no match.
- -
-
- -

◆ uint64ToString()

- -
-
- - - - - - - - - - - - - - - - - - -
String uint64ToString (uint64_t input,
uint8_t base 
)
-
- -

Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.

-
Parameters
- - - -
[in]inputThe value to print
[in]baseThe output base.
-
-
-
Returns
A String representation of the integer.
-
Note
Based on Arduino's Print::printNumber()
- -
-
- -

◆ xorBytes()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint8_t xorBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
-
- -

Calculate a rolling XOR of all the bytes of an array.

-
Parameters
- - - - -
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The 8-bit calculated result of all the bytes and init value.
- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h.html deleted file mode 100644 index d95e20108..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h.html +++ /dev/null @@ -1,1004 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRutils.h File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
IRutils.h File Reference
-
-
- -

Go to the source code of this file.

- - - - - -

-Namespaces

 irutils
 Namespace for covering common functions & procedures for advancd protocol handlers.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

uint64_t reverseBits (uint64_t input, uint16_t nbits)
 Reverse the order of the requested least significant nr. of bits. More...
 
String uint64ToString (uint64_t input, uint8_t base=10)
 Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. More...
 
String int64ToString (int64_t input, uint8_t base=10)
 Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values. More...
 
String typeToString (const decode_type_t protocol, const bool isRepeat=false)
 Convert a protocol type (enum etc) to a human readable string. More...
 
void serialPrintUint64 (uint64_t input, uint8_t base=10)
 Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t) More...
 
String resultToSourceCode (const decode_results *const results)
 Return a String containing the key values of a decode_results structure in a C/C++ code style format. More...
 
String resultToTimingInfo (const decode_results *const results)
 Dump out the decode_results structure. More...
 
String resultToHumanReadableBasic (const decode_results *const results)
 Dump out the decode_results structure into a human readable format. More...
 
String resultToHexidecimal (const decode_results *const result)
 Convert the decode_results structure's value/state to simple hexadecimal. More...
 
bool hasACState (const decode_type_t protocol)
 Does the given protocol use a complex state as part of the decode? More...
 
uint16_t getCorrectedRawLength (const decode_results *const results)
 Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries. More...
 
uint16_t * resultToRawArray (const decode_results *const decode)
 Convert a decode_results into an array suitable for sendRaw(). More...
 
uint8_t sumBytes (const uint8_t *const start, const uint16_t length, const uint8_t init=0)
 Sum all the bytes of an array and return the least significant 8-bits of the result. More...
 
uint8_t xorBytes (const uint8_t *const start, const uint16_t length, const uint8_t init=0)
 Calculate a rolling XOR of all the bytes of an array. More...
 
uint16_t countBits (const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)
 Count the number of bits of a certain type in an array. More...
 
uint16_t countBits (const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0)
 Count the number of bits of a certain type in an Integer. More...
 
uint64_t invertBits (const uint64_t data, const uint16_t nbits)
 Invert/Flip the bits in an Integer. More...
 
decode_type_t strToDecodeType (const char *str)
 Convert a C-style string to a decode_type_t. More...
 
float celsiusToFahrenheit (const float deg)
 Convert degrees Celsius to degrees Fahrenheit. More...
 
float fahrenheitToCelsius (const float deg)
 Convert degrees Fahrenheit to degrees Celsius. More...
 
String irutils::addBoolToString (const bool value, const String label, const bool precomma)
 Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". More...
 
String irutils::addIntToString (const uint16_t value, const String label, const bool precomma)
 Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
 
String irutils::addSignedIntToString (const int16_t value, const String label, const bool precomma)
 Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
 
String irutils::modelToStr (const decode_type_t protocol, const int16_t model)
 Generate the model string for a given Protocol/Model pair. More...
 
String irutils::addModelToString (const decode_type_t protocol, const int16_t model, const bool precomma)
 Create a String of human output for a given protocol model number. e.g. "Model: JKE". More...
 
String irutils::addLabeledString (const String value, const String label, const bool precomma)
 Create a String with a colon separated "label: value" pair suitable for Humans. More...
 
String irutils::addTempToString (const uint16_t degrees, const bool celsius, const bool precomma)
 Create a String of human output for a given temperature. e.g. "Temp: 25C". More...
 
String irutils::addTempFloatToString (const float degrees, const bool celsius, const bool precomma)
 Create a String of human output for a given temperature. e.g. "Temp: 25.5C". More...
 
String irutils::addModeToString (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
 Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". More...
 
String irutils::addFanToString (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum)
 Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". More...
 
String irutils::addSwingHToString (const uint8_t position, const uint8_t automatic, const uint8_t maxleft, const uint8_t left, const uint8_t middle, const uint8_t right, const uint8_t maxright, const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide)
 Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)". More...
 
String irutils::addSwingVToString (const uint8_t position, const uint8_t automatic, const uint8_t highest, const uint8_t high, const uint8_t uppermiddle, const uint8_t middle, const uint8_t lowermiddle, const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate)
 Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)". More...
 
String irutils::addDayToString (const uint8_t day_of_week, const int8_t offset, const bool precomma)
 Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". More...
 
String irutils::htmlEscape (const String unescaped)
 Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. More...
 
String irutils::msToString (uint32_t const msecs)
 Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". More...
 
String irutils::minsToString (const uint16_t mins)
 Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". More...
 
uint8_t irutils::sumNibbles (const uint8_t *const start, const uint16_t length, const uint8_t init)
 Sum all the nibbles together in a series of bytes. More...
 
uint8_t irutils::sumNibbles (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)
 Sum all the nibbles together in an integer. More...
 
uint8_t irutils::bcdToUint8 (const uint8_t bcd)
 Convert a byte of Binary Coded Decimal(BCD) into an Integer. More...
 
uint8_t irutils::uint8ToBcd (const uint8_t integer)
 Convert an Integer into a byte of Binary Coded Decimal(BCD). More...
 
bool irutils::getBit (const uint64_t data, const uint8_t position, const uint8_t size)
 Return the value of positionth bit of an Integer. More...
 
bool irutils::getBit (const uint8_t data, const uint8_t position)
 Return the value of positionth bit of an Integer. More...
 
uint64_t irutils::setBit (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
 Return the value of an Integer with the positionth bit changed. More...
 
uint8_t irutils::setBit (const uint8_t data, const uint8_t position, const bool on)
 Return the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint8_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint32_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBit (uint64_t *const data, const uint8_t position, const bool on)
 Alter the value of an Integer with the positionth bit changed. More...
 
void irutils::setBits (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
 Alter an uint8_t value by overwriting an arbitrary given number of bits. More...
 
void irutils::setBits (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)
 Alter an uint32_t value by overwriting an arbitrary given number of bits. More...
 
void irutils::setBits (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)
 Alter an uint64_t value by overwriting an arbitrary given number of bits. More...
 
uint8_t * irutils::invertBytePairs (uint8_t *ptr, const uint16_t length)
 Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previous byte of the pair. More...
 
bool irutils::checkInvertedBytePairs (const uint8_t *const ptr, const uint16_t length)
 Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/previous byte of the pair. More...
 
uint8_t irutils::lowLevelSanityCheck (void)
 Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler operation. Calls to this should return 0 if everything is as expected, anything else means the library won't work as expected. More...
 
- - - - - - - - - -

-Variables

const uint8_t kNibbleSize = 4
 
const uint8_t kLowNibble = 0
 
const uint8_t kHighNibble = 4
 
const uint8_t kModeBitsSize = 3
 
-

Function Documentation

- -

◆ celsiusToFahrenheit()

- -
-
- - - - - - - - -
float celsiusToFahrenheit (const float deg)
-
- -

Convert degrees Celsius to degrees Fahrenheit.

- -
-
- -

◆ countBits() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16_t countBits (const uint64_t data,
const uint8_t length,
const bool ones,
const uint16_t init 
)
-
- -

Count the number of bits of a certain type in an Integer.

-
Parameters
- - - - - -
[in]dataThe value you want bits counted for. Starting from the LSB.
[in]lengthHow many bits to use in the calculation? Starts at the LSB
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The nr. of bits found of the given type found in the Integer.
- -
-
- -

◆ countBits() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uint16_t countBits (const uint8_t *const start,
const uint16_t length,
const bool ones,
const uint16_t init 
)
-
- -

Count the number of bits of a certain type in an array.

-
Parameters
- - - - - -
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]onesCount the binary nr of 1 bits. False is count the 0s.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The nr. of bits found of the given type found in the array.
- -
-
- -

◆ fahrenheitToCelsius()

- -
-
- - - - - - - - -
float fahrenheitToCelsius (const float deg)
-
- -

Convert degrees Fahrenheit to degrees Celsius.

- -
-
- -

◆ getCorrectedRawLength()

- -
-
- - - - - - - - -
uint16_t getCorrectedRawLength (const decode_results *const results)
-
- -

Return the corrected length of a 'raw' format array structure after over-large values are converted into multiple entries.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
The corrected length.
- -
-
- -

◆ hasACState()

- -
-
- - - - - - - - -
bool hasACState (const decode_type_t protocol)
-
- -

Does the given protocol use a complex state as part of the decode?

-
Parameters
- - -
[in]protocolThe decode_type_t protocol we are enquiring about.
-
-
-
Returns
True if the protocol uses a state array. False if just an integer.
- -
-
- -

◆ int64ToString()

- -
-
- - - - - - - - - - - - - - - - - - -
String int64ToString (int64_t input,
uint8_t base 
)
-
- -

Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.

-
Parameters
- - - -
[in]inputThe value to print
[in]baseThe output base.
-
-
-
Returns
A String representation of the integer.
- -
-
- -

◆ invertBits()

- -
-
- - - - - - - - - - - - - - - - - - -
uint64_t invertBits (const uint64_t data,
const uint16_t nbits 
)
-
- -

Invert/Flip the bits in an Integer.

-
Parameters
- - - -
[in]dataThe Integer that will be inverted.
[in]nbitsHow many bits are to be inverted. Starting from the LSB.
-
-
-
Returns
An Integer with the appropriate bits inverted/flipped.
- -
-
- -

◆ resultToHexidecimal()

- -
-
- - - - - - - - -
String resultToHexidecimal (const decode_results *const result)
-
- -

Convert the decode_results structure's value/state to simple hexadecimal.

-
Parameters
- - -
[in]resultA ptr to a decode_results structure.
-
-
-
Returns
A String containing the output.
- -
-
- -

◆ resultToHumanReadableBasic()

- -
-
- - - - - - - - -
String resultToHumanReadableBasic (const decode_results *const results)
-
- -

Dump out the decode_results structure into a human readable format.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
A String containing the output.
- -
-
- -

◆ resultToRawArray()

- -
-
- - - - - - - - -
uint16_t* resultToRawArray (const decode_results *const decode)
-
- -

Convert a decode_results into an array suitable for sendRaw().

-
Parameters
- - -
[in]decodeA ptr to a decode_results structure that contains a mesg.
-
-
-
Returns
A PTR to a dynamically allocated uint16_t sendRaw compatible array.
-
Note
The returned array needs to be delete[]'ed/free()'ed (deallocated) after use by caller.
- -
-
- -

◆ resultToSourceCode()

- -
-
- - - - - - - - -
String resultToSourceCode (const decode_results *const results)
-
- -

Return a String containing the key values of a decode_results structure in a C/C++ code style format.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
A String containing the code-ified result.
- -
-
- -

◆ resultToTimingInfo()

- -
-
- - - - - - - - -
String resultToTimingInfo (const decode_results *const results)
-
- -

Dump out the decode_results structure.

-
Parameters
- - -
[in]resultsA ptr to a decode_results structure.
-
-
-
Returns
A String containing the legacy information format.
-
Deprecated:
This is only for those that want this legacy format.
- -
-
- -

◆ reverseBits()

- -
-
- - - - - - - - - - - - - - - - - - -
uint64_t reverseBits (uint64_t input,
uint16_t nbits 
)
-
- -

Reverse the order of the requested least significant nr. of bits.

-
Parameters
- - - -
[in]inputBit pattern/integer to reverse.
[in]nbitsNr. of bits to reverse. (LSB -> MSB)
-
-
-
Returns
The reversed bit pattern.
- -
-
- -

◆ serialPrintUint64()

- -
-
- - - - - - - - - - - - - - - - - - -
void serialPrintUint64 (uint64_t input,
uint8_t base 
)
-
- -

Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long longs. (uint64_t)

-
Parameters
- - - -
[in]inputThe value to print
[in]baseThe output base.
-
-
- -
-
- -

◆ strToDecodeType()

- -
-
- - - - - - - - -
decode_type_t strToDecodeType (const char *const str)
-
- -

Convert a C-style string to a decode_type_t.

-
Parameters
- - -
[in]strA C-style string containing a protocol name or number.
-
-
-
Returns
A decode_type_t enum. (decode_type_t::UNKNOWN if no match.)
- -
-
- -

◆ sumBytes()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint8_t sumBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
-
- -

Sum all the bytes of an array and return the least significant 8-bits of the result.

-
Parameters
- - - - -
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The 8-bit calculated result of all the bytes and init value.
- -
-
- -

◆ typeToString()

- -
-
- - - - - - - - - - - - - - - - - - -
String typeToString (const decode_type_t protocol,
const bool isRepeat 
)
-
- -

Convert a protocol type (enum etc) to a human readable string.

-
Parameters
- - - -
[in]protocolNr. (enum) of the protocol.
[in]isRepeatA flag indicating if it is a repeat message.
-
-
-
Returns
A String containing the protocol name. kUnknownStr if no match.
- -
-
- -

◆ uint64ToString()

- -
-
- - - - - - - - - - - - - - - - - - -
String uint64ToString (uint64_t input,
uint8_t base 
)
-
- -

Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle printing 64 bit values.

-
Parameters
- - - -
[in]inputThe value to print
[in]baseThe output base.
-
-
-
Returns
A String representation of the integer.
-
Note
Based on Arduino's Print::printNumber()
- -
-
- -

◆ xorBytes()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uint8_t xorBytes (const uint8_t *const start,
const uint16_t length,
const uint8_t init 
)
-
- -

Calculate a rolling XOR of all the bytes of an array.

-
Parameters
- - - - -
[in]startA ptr to the start of the byte array to calculate over.
[in]lengthHow many bytes to use in the calculation.
[in]initStarting value of the calculation to use. (Default is 0)
-
-
-
Returns
The 8-bit calculated result of all the bytes and init value.
- -
-
-

Variable Documentation

- -

◆ kHighNibble

- -
-
- - - - -
const uint8_t kHighNibble = 4
-
- -
-
- -

◆ kLowNibble

- -
-
- - - - -
const uint8_t kLowNibble = 0
-
- -
-
- -

◆ kModeBitsSize

- -
-
- - - - -
const uint8_t kModeBitsSize = 3
-
- -
-
- -

◆ kNibbleSize

- -
-
- - - - -
const uint8_t kNibbleSize = 4
-
- -
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h_source.html deleted file mode 100644 index 8e4531cde..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/IRutils_8h_source.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - - -IRremoteESP8266: src/IRutils.h Source File - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
IRutils.h
-
-
-Go to the documentation of this file.
1 #ifndef IRUTILS_H_
-
2 #define IRUTILS_H_
-
3 
-
4 // Copyright 2017 David Conran
-
5 
-
6 #ifndef UNIT_TEST
-
7 #include <Arduino.h>
-
8 #endif
-
9 #define __STDC_LIMIT_MACROS
-
10 #include <stdint.h>
-
11 #ifndef ARDUINO
-
12 #include <string>
-
13 #endif
-
14 #include "IRremoteESP8266.h"
-
15 #include "IRrecv.h"
-
16 
-
17 const uint8_t kNibbleSize = 4;
-
18 const uint8_t kLowNibble = 0;
-
19 const uint8_t kHighNibble = 4;
-
20 const uint8_t kModeBitsSize = 3;
-
21 uint64_t reverseBits(uint64_t input, uint16_t nbits);
-
22 String uint64ToString(uint64_t input, uint8_t base = 10);
-
23 String int64ToString(int64_t input, uint8_t base = 10);
-
24 String typeToString(const decode_type_t protocol,
-
25  const bool isRepeat = false);
-
26 void serialPrintUint64(uint64_t input, uint8_t base = 10);
-
27 String resultToSourceCode(const decode_results * const results);
-
28 String resultToTimingInfo(const decode_results * const results);
-
29 String resultToHumanReadableBasic(const decode_results * const results);
-
30 String resultToHexidecimal(const decode_results * const result);
-
31 bool hasACState(const decode_type_t protocol);
-
32 uint16_t getCorrectedRawLength(const decode_results * const results);
-
33 uint16_t *resultToRawArray(const decode_results * const decode);
-
34 uint8_t sumBytes(const uint8_t * const start, const uint16_t length,
-
35  const uint8_t init = 0);
-
36 uint8_t xorBytes(const uint8_t * const start, const uint16_t length,
-
37  const uint8_t init = 0);
-
38 uint16_t countBits(const uint8_t * const start, const uint16_t length,
-
39  const bool ones = true, const uint16_t init = 0);
-
40 uint16_t countBits(const uint64_t data, const uint8_t length,
-
41  const bool ones = true, const uint16_t init = 0);
-
42 uint64_t invertBits(const uint64_t data, const uint16_t nbits);
-
43 decode_type_t strToDecodeType(const char *str);
-
44 float celsiusToFahrenheit(const float deg);
-
45 float fahrenheitToCelsius(const float deg);
-
48 namespace irutils {
-
49  String addBoolToString(const bool value, const String label,
-
50  const bool precomma = true);
-
51  String addIntToString(const uint16_t value, const String label,
-
52  const bool precomma = true);
-
53  String addSignedIntToString(const int16_t value, const String label,
-
54  const bool precomma = true);
-
55  String modelToStr(const decode_type_t protocol, const int16_t model);
-
56  String addModelToString(const decode_type_t protocol, const int16_t model,
-
57  const bool precomma = true);
-
58  String addLabeledString(const String value, const String label,
-
59  const bool precomma = true);
-
60  String addTempToString(const uint16_t degrees, const bool celsius = true,
-
61  const bool precomma = true);
-
62  String addTempFloatToString(const float degrees, const bool celsius = true,
-
63  const bool precomma = true);
-
64  String addModeToString(const uint8_t mode, const uint8_t automatic,
-
65  const uint8_t cool, const uint8_t heat,
-
66  const uint8_t dry, const uint8_t fan);
-
67  String addFanToString(const uint8_t speed, const uint8_t high,
-
68  const uint8_t low, const uint8_t automatic,
-
69  const uint8_t quiet, const uint8_t medium,
-
70  const uint8_t maximum = 0xFF);
-
71  String addSwingHToString(const uint8_t position, const uint8_t automatic,
-
72  const uint8_t maxleft, const uint8_t left,
-
73  const uint8_t middle,
-
74  const uint8_t right, const uint8_t maxright,
-
75  const uint8_t off,
-
76  const uint8_t leftright, const uint8_t rightleft,
-
77  const uint8_t threed, const uint8_t wide);
-
78  String addSwingVToString(const uint8_t position, const uint8_t automatic,
-
79  const uint8_t highest, const uint8_t high,
-
80  const uint8_t uppermiddle,
-
81  const uint8_t middle,
-
82  const uint8_t lowermiddle,
-
83  const uint8_t low, const uint8_t lowest,
-
84  const uint8_t off, const uint8_t swing,
-
85  const uint8_t breeze, const uint8_t circulate);
-
86  String addDayToString(const uint8_t day_of_week, const int8_t offset = 0,
-
87  const bool precomma = true);
-
88  String htmlEscape(const String unescaped);
-
89  String msToString(uint32_t const msecs);
-
90  String minsToString(const uint16_t mins);
-
91  uint8_t sumNibbles(const uint8_t * const start, const uint16_t length,
-
92  const uint8_t init = 0);
-
93  uint8_t sumNibbles(const uint64_t data, const uint8_t count = 16,
-
94  const uint8_t init = 0, const bool nibbleonly = true);
-
95  uint8_t bcdToUint8(const uint8_t bcd);
-
96  uint8_t uint8ToBcd(const uint8_t integer);
-
97  bool getBit(const uint64_t data, const uint8_t position,
-
98  const uint8_t size = 64);
-
99  bool getBit(const uint8_t data, const uint8_t position);
-
100 #define GETBIT8(a, b) (a & ((uint8_t)1 << b))
-
101 #define GETBIT16(a, b) (a & ((uint16_t)1 << b))
-
102 #define GETBIT32(a, b) (a & ((uint32_t)1 << b))
-
103 #define GETBIT64(a, b) (a & ((uint64_t)1 << b))
-
104 #define GETBITS8(data, offset, size) \
-
105  (((data) & (((uint8_t)UINT8_MAX >> (8 - (size))) << (offset))) >> (offset))
-
106 #define GETBITS16(data, offset, size) \
-
107  (((data) & (((uint16_t)UINT16_MAX >> (16 - (size))) << (offset))) >> \
-
108  (offset))
-
109 #define GETBITS32(data, offset, size) \
-
110  (((data) & (((uint32_t)UINT32_MAX >> (32 - (size))) << (offset))) >> \
-
111  (offset))
-
112 #define GETBITS64(data, offset, size) \
-
113  (((data) & (((uint64_t)UINT64_MAX >> (64 - (size))) << (offset))) >> \
-
114  (offset))
-
115  uint64_t setBit(const uint64_t data, const uint8_t position,
-
116  const bool on = true, const uint8_t size = 64);
-
117  uint8_t setBit(const uint8_t data, const uint8_t position,
-
118  const bool on = true);
-
119  void setBit(uint8_t * const data, const uint8_t position,
-
120  const bool on = true);
-
121  void setBit(uint32_t * const data, const uint8_t position,
-
122  const bool on = true);
-
123  void setBit(uint64_t * const data, const uint8_t position,
-
124  const bool on = true);
-
125  void setBits(uint8_t * const dst, const uint8_t offset, const uint8_t nbits,
-
126  const uint8_t data);
-
127  void setBits(uint32_t * const dst, const uint8_t offset, const uint8_t nbits,
-
128  const uint32_t data);
-
129  void setBits(uint64_t * const dst, const uint8_t offset, const uint8_t nbits,
-
130  const uint64_t data);
-
131  uint8_t * invertBytePairs(uint8_t *ptr, const uint16_t length);
-
132  bool checkInvertedBytePairs(const uint8_t * const ptr, const uint16_t length);
-
133  uint8_t lowLevelSanityCheck(void);
-
134 } // namespace irutils
-
135 #endif // IRUTILS_H_
-
-
String addTempToString(const uint16_t degrees, const bool celsius, const bool precomma)
Create a String of human output for a given temperature. e.g. "Temp: 25C".
Definition: IRutils.cpp:622
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:823
-
String addDayToString(const uint8_t day_of_week, const int8_t offset, const bool precomma)
Create a String of the 3-letter day of the week from a numerical day of the week. e....
Definition: IRutils.cpp:677
-
uint16_t * resultToRawArray(const decode_results *const decode)
Convert a decode_results into an array suitable for sendRaw().
Definition: IRutils.cpp:368
-
String addFanToString(const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum)
Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)".
Definition: IRutils.cpp:704
-
void setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
Alter an uint8_t value by overwriting an arbitrary given number of bits.
Definition: IRutils.cpp:1053
-
String resultToSourceCode(const decode_results *const results)
Return a String containing the key values of a decode_results structure in a C/C++ code style format.
Definition: IRutils.cpp:210
-
Results returned from the decoder.
Definition: IRrecv.h:92
-
uint16_t getCorrectedRawLength(const decode_results *const results)
Return the corrected length of a 'raw' format array structure after over-large values are converted i...
Definition: IRutils.cpp:196
-
String addModelToString(const decode_type_t protocol, const int16_t model, const bool precomma)
Create a String of human output for a given protocol model number. e.g. "Model: JKE".
Definition: IRutils.cpp:607
-
String addSignedIntToString(const int16_t value, const String label, const bool precomma)
Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".
Definition: IRutils.cpp:518
-
uint16_t countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0)
Count the number of bits of a certain type in an array.
Definition: IRutils.cpp:419
-
String msToString(uint32_t const msecs)
Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds...
Definition: IRutils.cpp:872
-
uint8_t lowLevelSanityCheck(void)
Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler ope...
Definition: IRutils.cpp:1142
-
String addModeToString(const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)".
Definition: IRutils.cpp:654
-
String resultToHumanReadableBasic(const decode_results *const results)
Dump out the decode_results structure into a human readable format.
Definition: IRutils.cpp:341
-
String resultToTimingInfo(const decode_results *const results)
Dump out the decode_results structure.
Definition: IRutils.cpp:291
-
std::string String
Definition: IRremoteESP8266.h:1250
-
const uint8_t kNibbleSize
Definition: IRutils.h:17
-
String modelToStr(const decode_type_t protocol, const int16_t model)
Generate the model string for a given Protocol/Model pair.
Definition: IRutils.cpp:528
-
const uint8_t kLowNibble
Definition: IRutils.h:18
- -
uint8_t uint8ToBcd(const uint8_t integer)
Convert an Integer into a byte of Binary Coded Decimal(BCD).
Definition: IRutils.cpp:958
-
decode_type_t strToDecodeType(const char *str)
Convert a C-style string to a decode_type_t.
Definition: IRutils.cpp:95
-
bool checkInvertedBytePairs(const uint8_t *const ptr, const uint16_t length)
Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/prev...
Definition: IRutils.cpp:1120
-
const uint8_t kHighNibble
Definition: IRutils.h:19
-
uint8_t sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)
Sum all the nibbles together in a series of bytes.
Definition: IRutils.cpp:923
-
String uint64ToString(uint64_t input, uint8_t base=10)
Convert a uint64_t (unsigned long long) to a string. Arduino String/toInt/Serial.print() can't handle...
Definition: IRutils.cpp:44
-
float celsiusToFahrenheit(const float deg)
Convert degrees Celsius to degrees Fahrenheit.
Definition: IRutils.cpp:467
-
String addIntToString(const uint16_t value, const String label, const bool precomma)
Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".
Definition: IRutils.cpp:506
-
uint8_t xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Calculate a rolling XOR of all the bytes of an array.
Definition: IRutils.cpp:405
-
String addSwingVToString(const uint8_t position, const uint8_t automatic, const uint8_t highest, const uint8_t high, const uint8_t uppermiddle, const uint8_t middle, const uint8_t lowermiddle, const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate)
Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)".
Definition: IRutils.cpp:793
-
String addTempFloatToString(const float degrees, const bool celsius, const bool precomma)
Create a String of human output for a given temperature. e.g. "Temp: 25.5C".
Definition: IRutils.cpp:636
-
const uint8_t kModeBitsSize
Definition: IRutils.h:20
-
bool getBit(const uint64_t data, const uint8_t position, const uint8_t size)
Return the value of positionth bit of an Integer.
Definition: IRutils.cpp:968
-
float fahrenheitToCelsius(const float deg)
Convert degrees Fahrenheit to degrees Celsius.
Definition: IRutils.cpp:470
- -
uint8_t sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0)
Sum all the bytes of an array and return the least significant 8-bits of the result.
Definition: IRutils.cpp:392
-
String addSwingHToString(const uint8_t position, const uint8_t automatic, const uint8_t maxleft, const uint8_t left, const uint8_t middle, const uint8_t right, const uint8_t maxright, const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide)
Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)".
Definition: IRutils.cpp:736
-
String typeToString(const decode_type_t protocol, const bool isRepeat=false)
Convert a protocol type (enum etc) to a human readable string.
Definition: IRutils.cpp:117
-
String resultToHexidecimal(const decode_results *const result)
Convert the decode_results structure's value/state to simple hexadecimal.
Definition: IRutils.cpp:321
-
String addBoolToString(const bool value, const String label, const bool precomma)
Create a String with a colon separated flag suitable for Humans. e.g. "Power: On".
Definition: IRutils.cpp:494
-
String minsToString(const uint16_t mins)
Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59".
Definition: IRutils.cpp:908
-
uint8_t * invertBytePairs(uint8_t *ptr, const uint16_t length)
Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previ...
Definition: IRutils.cpp:1105
-
uint8_t bcdToUint8(const uint8_t bcd)
Convert a byte of Binary Coded Decimal(BCD) into an Integer.
Definition: IRutils.cpp:950
-
Namespace for covering common functions & procedures for advancd protocol handlers.
Definition: IRutils.cpp:472
-
uint64_t reverseBits(uint64_t input, uint16_t nbits)
Reverse the order of the requested least significant nr. of bits.
Definition: IRutils.cpp:24
-
bool isRepeat(const uint64_t data, const uint16_t nbits)
Test if an XMP message code is a repeat or not.
Definition: ir_Xmp.cpp:85
-
String htmlEscape(const String unescaped)
Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.
Definition: IRutils.cpp:840
-
bool hasACState(const decode_type_t protocol)
Does the given protocol use a complex state as part of the decode?
Definition: IRutils.cpp:142
-
uint64_t setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
Return the value of an Integer with the positionth bit changed.
Definition: IRutils.cpp:988
-
void serialPrintUint64(uint64_t input, uint8_t base=10)
Print a uint64_t/unsigned long long to the Serial port Serial.print() can't handle printing long long...
Definition: IRutils.cpp:87
-
String int64ToString(int64_t input, uint8_t base=10)
Convert a int64_t (signed long long) to a string. Arduino String/toInt/Serial.print() can't handle pr...
Definition: IRutils.cpp:75
-
String addLabeledString(const String value, const String label, const bool precomma)
Create a String with a colon separated "label: value" pair suitable for Humans.
Definition: IRutils.cpp:479
-
uint64_t invertBits(const uint64_t data, const uint16_t nbits)
Invert/Flip the bits in an Integer.
Definition: IRutils.cpp:456
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/README_8md.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/README_8md.html deleted file mode 100644 index cf3677096..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/README_8md.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/README.md File Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
src/locale/README.md File Reference
-
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/annotated.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/annotated.html deleted file mode 100644 index 5031f180e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/annotated.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -IRremoteESP8266: Class List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Class List
-
-
-
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 12]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 NstdAcEnumerators and Structures for the Common A/C API
 CAirwellProtocolNative representation of a Airwell A/C message
 CAmcorProtocolNative representation of a Amcor A/C message
 CArgoProtocolNative representation of a Argo A/C message
 CCarrierProtocolNative representation of a Carrier A/C message
 CCoolixProtocolNative representation of a Coolix A/C message
 CCoronaProtocolNative representation of a Corona A/C message
 CCoronaSectionNative representation of a section of a Corona A/C message
 CDaikin128ProtocolNative representation of a Daikin128 A/C message
 CDaikin152ProtocolNative representation of a Daikin152 A/C message
 CDaikin160ProtocolNative representation of a Daikin160 A/C message
 CDaikin176ProtocolNative representation of a Daikin176 A/C message
 CDaikin216ProtocolNative representation of a Daikin216 A/C message
 CDaikin2ProtocolNative representation of a Daikin2 A/C message
 CDaikin64ProtocolNative representation of a Daikin64 A/C message
 CDaikinESPProtocolNative representation of a Daikin A/C message
 Cdecode_resultsResults returned from the decoder
 CDelonghiProtocolNative representation of a Delonghi A/C message
 CEcoclimProtocolNative representation of a Ecoclim A/C message
 CElectraProtocolNative representation of a Electra A/C message
 CFujitsuProtocolNative representation of a Fujitsu A/C message
 CGoodweatherProtocolNative representation of a Goodweather A/C message
 CGreeProtocolNative representation of a Gree A/C message
 CHaierProtocolNative representation of a Haier HSU07-HEA03 A/C message
 CHaierYRW02ProtocolNative representation of a Haier YRW02 A/C message
 CHitachi1ProtocolNative representation of a Hitachi 104-bit A/C message
 CHitachi424ProtocolNative representation of a Hitachi 53-byte/424-bit A/C message
 CHitachiProtocolNative representation of a Hitachi 224-bit A/C message
 CIRacA universal/common/generic interface for controling supported A/Cs
 CIRAirwellAcClass for handling detailed Airwell A/C messages
 CIRAmcorAcClass for handling detailed Amcor A/C messages
 CIRArgoACClass for handling detailed Argo A/C messages
 CIRCarrierAc64Class for handling detailed Carrier 64 bit A/C messages
 CIRCoolixACClass for handling detailed Coolix A/C messages
 CIRCoronaAcClass for handling detailed Corona A/C messages
 CIRDaikin128Class for handling detailed Daikin 128-bit A/C messages
 CIRDaikin152Class for handling detailed Daikin 152-bit A/C messages
 CIRDaikin160Class for handling detailed Daikin 160-bit A/C messages
 CIRDaikin176Class for handling detailed Daikin 176-bit A/C messages
 CIRDaikin2Class for handling detailed Daikin 312-bit A/C messages
 CIRDaikin216Class for handling detailed Daikin 216-bit A/C messages
 CIRDaikin64Class for handling detailed Daikin 64-bit A/C messages
 CIRDaikinESPClass for handling detailed Daikin 280-bit A/C messages
 CIRDelonghiAcClass for handling detailed Delonghi A/C messages
 CIREcoclimAcClass for handling detailed EcoClim A/C 56 bit messages
 CIRElectraAcClass for handling detailed Electra A/C messages
 CIRFujitsuACClass for handling detailed Fujitsu A/C messages
 CIRGoodweatherAcClass for handling detailed Goodweather A/C messages
 CIRGreeACClass for handling detailed Gree A/C messages
 CIRHaierACClass for handling detailed Haier A/C messages
 CIRHaierACYRW02Class for handling detailed Haier ACYRW02 A/C messages
 CIRHitachiAcClass for handling detailed Hitachi 224-bit A/C messages
 CIRHitachiAc1Class for handling detailed Hitachi 104-bit A/C messages
 CIRHitachiAc3Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages
 CIRHitachiAc344Class for handling detailed Hitachi 344-bit A/C messages
 CIRHitachiAc424Class for handling detailed Hitachi 53-byte/424-bit A/C messages
 CIRKelonAc
 CIRKelvinatorACClass for handling detailed Kelvinator A/C messages
 CIRLgAcClass for handling detailed LG A/C messages
 CIRMideaACClass for handling detailed Midea A/C messages
 CIRMitsubishi112Class for handling detailed Mitsubishi 122-bit A/C messages
 CIRMitsubishi136Class for handling detailed Mitsubishi 136-bit A/C messages
 CIRMitsubishiACClass for handling detailed Mitsubishi 144-bit A/C messages
 CIRMitsubishiHeavy152AcClass for handling detailed Mitsubishi Heavy 152-bit A/C messages
 CIRMitsubishiHeavy88AcClass for handling detailed Mitsubishi Heavy 88-bit A/C messages
 CIRNeoclimaAcClass for handling detailed Neoclima A/C messages
 CIRPanasonicAcClass for handling detailed Panasonic A/C messages
 CIRPanasonicAc32Class for handling detailed Panasonic 32bit A/C messages
 Cirparams_tInformation for the interrupt handler
 CIRrecvClass for receiving IR messages
 CIRSamsungAcClass for handling detailed Samsung A/C messages
 CIRSanyoAcClass for handling detailed Sanyo A/C messages
 CIRsendClass for sending all basic IR protocols
 CIRSharpAcClass for handling detailed Sharp A/C messages
 CIRTcl112AcClass for handling detailed TCL A/C messages
 CIRTechnibelAcClass for handling detailed Technibel A/C messages
 CIRTecoAcClass for handling detailed Teco A/C messages
 CIRtimerThis class offers a simple counter in micro-seconds since instantiated
 CIRToshibaACClass for handling detailed Toshiba A/C messages
 CIRTranscoldAcClass for handling detailed Transcold A/C messages
 CIRTrotecESPClass for handling detailed Trotec A/C messages
 CIRTrumaAcClass for handling detailed Truma A/C messages
 CIRVestelAcClass for handling detailed Vestel A/C messages
 CIRVoltasClass for handling detailed Voltas A/C messages
 CIRWhirlpoolAcClass for handling detailed Whirlpool A/C messages
 CKelonProtocol
 CKelvinatorProtocolNative representation of a Kelvinator A/C message
 CLGProtocolNative representation of a LG A/C message
 CmagiquestMagiQuest packet is both Wand ID and magnitude of swish and flick
 Cmatch_result_tResults from a data match
 CMideaProtocolNative representation of a Midea A/C message
 CMitsubishi112ProtocolNative representation of a Mitsubishi 112-bit A/C message
 CMitsubishi136ProtocolNative representation of a Mitsubishi 136-bit A/C message
 CMitsubishi144ProtocolNative representation of a Mitsubishi 144-bit A/C message
 CMitsubishi152ProtocolNative representation of a Mitsubishi Heavy 152-bit A/C message
 CMitsubishi88ProtocolNative representation of a Mitsubishi Heavy 88-bit A/C message
 CNeoclimaProtocolNative representation of a Neoclima A/C message
 CPanasonicAc32ProtocolNative representation of a Panasonic 32-bit A/C message
 CSamsungProtocolNative representation of a Samsung A/C message
 CSanyoProtocolNative representation of a Sanyo A/C message
 CSharpProtocolNative representation of a Sharp A/C message
 CTcl112ProtocolNative representation of a TCL 112 A/C message
 CTechnibelProtocolNative representation of a Technibel A/C message
 CTecoProtocolNative representation of a Teco A/C message
 CTimerMsThis class offers a simple counter in milli-seconds since instantiated
 CToshibaProtocolNative representation of a Toshiba A/C message
 CTranscoldProtocolNative representation of a Transcold A/C message
 CTrotecProtocolNative representation of a Trotec A/C message
 CTrumaProtocolNative representation of a Truma A/C message
 CVestelProtocolNative representation of a Vestel A/C message
 CVoltasProtocolNative representation of a Voltas A/C message
 CWhirlpoolProtocolNative representation of a Whirlpool A/C message
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/bc_s.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/bdwn.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRAirwellAc Member List
-
-
- -

This is the complete list of members for IRAirwellAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - -
_IRAirwellAcprivate
_irsendIRAirwellAcprivate
begin()IRAirwellAc
calibrate(void)IRAirwellAcinline
convertFan(const stdAc::fanspeed_t speed)IRAirwellAcstatic
convertMode(const stdAc::opmode_t mode)IRAirwellAcstatic
getFan() constIRAirwellAc
getMode() constIRAirwellAc
getPowerToggle() constIRAirwellAc
getRaw() constIRAirwellAc
getTemp() constIRAirwellAc
IRAirwellAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRAirwellAcexplicit
send(const uint16_t repeat=kAirwellMinRepeats)IRAirwellAc
setFan(const uint8_t speed)IRAirwellAc
setMode(const uint8_t mode)IRAirwellAc
setPowerToggle(const bool on)IRAirwellAc
setRaw(const uint64_t state)IRAirwellAc
setTemp(const uint8_t temp)IRAirwellAc
stateReset()IRAirwellAc
toCommon(const stdAc::state_t *prev=NULL) constIRAirwellAc
toCommonFanSpeed(const uint8_t speed)IRAirwellAcstatic
toCommonMode(const uint8_t mode)IRAirwellAcstatic
toString() constIRAirwellAc
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc.html deleted file mode 100644 index 1fe4d5056..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc.html +++ /dev/null @@ -1,793 +0,0 @@ - - - - - - - -IRremoteESP8266: IRAirwellAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Airwell A/C messages. - More...

- -

#include <ir_Airwell.h>

-
-Collaboration diagram for IRAirwellAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRAirwellAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internals of the object to a known good state. More...
 
void send (const uint16_t repeat=kAirwellMinRepeats)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPowerToggle (const bool on)
 Turn on/off the Power Airwell setting. More...
 
bool getPowerToggle () const
 Get the power toggle setting from the internal state. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp () const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan () const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode () const
 Get the current operation mode setting. More...
 
uint64_t getRaw () const
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint64_t state)
 Set the raw state of the object. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString () const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
AirwellProtocol _
 
-

Detailed Description

-

Class for handling detailed Airwell A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRAirwellAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRAirwellAc::IRAirwellAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - -
void IRAirwellAc::begin ()
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRAirwellAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRAirwellAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRAirwellAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - -
uint8_t IRAirwellAc::getFan () const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - -
uint8_t IRAirwellAc::getMode () const
-
- -

Get the current operation mode setting.

-
Returns
The current operation mode.
- -
-
- -

◆ getPowerToggle()

- -
-
- - - - - - - -
bool IRAirwellAc::getPowerToggle () const
-
- -

Get the power toggle setting from the internal state.

-
Returns
A boolean indicating the setting.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - -
uint64_t IRAirwellAc::getRaw () const
-
- -

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

-
Returns
A copy of the internal state.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - -
uint8_t IRAirwellAc::getTemp () const
-
- -

Get the current temperature setting.

-
Returns
Get current setting for temp. in degrees celsius.
- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRAirwellAc::send (const uint16_t repeat = kAirwellMinRepeats)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRAirwellAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
-
Note
The speed is locked to Low when in Dry mode.
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRAirwellAc::setMode (const uint8_t mode)
-
- -

Set the desired operation mode.

-
Parameters
- - -
[in]modeThe desired operation mode.
-
-
- -
-
- -

◆ setPowerToggle()

- -
-
- - - - - - - - -
void IRAirwellAc::setPowerToggle (const bool on)
-
- -

Turn on/off the Power Airwell setting.

-
Parameters
- - -
[in]onThe desired setting state.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRAirwellAc::setRaw (const uint64_t state)
-
- -

Set the raw state of the object.

-
Parameters
- - -
[in]stateThe raw state from the native IR message.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRAirwellAc::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - -
void IRAirwellAc::stateReset ()
-
- -

Reset the internals of the object to a known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRAirwellAc::toCommon (const stdAc::state_tprev = NULL) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Parameters
- - -
[in]prevPtr to the previous state if required.
-
-
-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRAirwellAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRAirwellAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - -
String IRAirwellAc::toString () const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
AirwellProtocol IRAirwellAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRAirwellAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.map deleted file mode 100644 index 2f09810f2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 deleted file mode 100644 index 8dc6f0a29..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -14d737c66c83e94394d17e5fb59778b1 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAirwellAc__coll__graph.png deleted file mode 100644 index 88cc4902e2353bf1db0a985d954e9c64865450c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5989 zcmb7I2T)T@yAC2nP(X>GND+a6B0bWiC{+Z4^iJr#O0Th?NE0QXw15HvN)@Dq-g^-Q z47~;^(gK9ezkDrF5jJ!0t7IB^G5&9xlZISn^c>qvLXzv`7hIh_xOl6n4;sDl>T33izclu^zgcSp z{(z3e|5vCvody2z@TGSMyT(gFU*^5q-bBv|;(cPEEV1|4y^c5&Sa>Ux?on(eQ*=J* zyUaBu7>4t!+P{bH&E3lm4i443qfTXS77E}2+xDr!yN0>Hjz^se-+%aE8;|``CGR<= zftEH636TlhUDf2vsWJ=*!0MuJ@$p4(Z+qnq3E=cp&t^>Uu?26x*Cj2cD6#D+K9Fi` zY@Elgr5lZg%nSXuUGt1NO+7q>BGR9jnYpe!!Dbc}36?qI24>y$`xCo<@x>NYEk)c2 z)*ra7B4*PG{UCsxv^UU%LKPc^hT>GxM&rH0BjG z7%@#(MZz6Db+~2WsU&OOJC8MdXxMCYhb{+wN#c=M_o1&s0 zPLCF4hm%apErk<*W4(D}WKYDCMO})$#ThC~rJ)QA=_4zNGQpBxzI-X8>4N1=R(pAS z+x$#dgpQBa{q&NHX^a>+qZ89WzN@6PEP#%{OGP;RWvh8 ztqf{@bGf;#jsEiG=ZI_$aq)zvFxup<$cTtH5fO6PgF@Erbh~R4PJdf;hGb9oH3Eoh zJ!5Wl>R??o%C=lgKsoAKL()B`1VM{)M)@BMOKdMQGduIg#Kb6TLZ3c;3K0)E5+{y( z((df+JQ%A}4*cUKc>*4dFsLD$D8M|$I<+=Yb(@dRX0qDfFCbu`4uxV3Too!Xts<`< zuk`F_Z=d$9J7kGSr(<9s?_Y*P;^X7*8ka>qdj<*ES#HtRkXH2eE>#@#f#q^z8qBBj z%O~YDp>p!_B<-s-iBV%_4nL zFH1^9A{qE*Cw!+|Jd=o%fiWMEA&Dy^g@m=L^;it1XQAsO$s-k&ncBlO4lb@1DJhG_ z^UN$a)-Xl$#6LM{ZDPJ_CboU4>WYeFQ^7-(ymE$%)IsjRI0vlF1Dt<9HIrX4=U34=x0DwR8K&39OWLlpg*gwTe= z8FF%SCwF;1eHxmaoGk8%S3_gB2n4d5RMgZxb5Tke{Yzf>^{~*;H#;jM$z6q}RWOL= zlP5QeOG?OYK7RbTd*Sx&+vn(PY;67-6(ow-MS!c!iOFdMX<)!ZPQ%ROI$3=?lrFux z+Qcs~koskV`AKh%W=1oCc}(TdoY}r>CdOjeGVR%R6p`xHOkk6GBS$Ym}-e+B)j?4)3ax;H&vP!;<3 zB&(yPk@39xSD2VOUyxCY2Oq%C$_Lro+e@IWWnpH{$;+D`_@atGkd~J2K@nGR^v{x# zn5d|z+&w*=bXcKK>--j-iQ#S z2L*q~b?E>&=(GhwpKSKGZxKI!z+s3KN`sTY9}Cf9lK>N{YicAwKcoe1T{u1@x{1~v z9R)G7uv~}Rzw;ljAx=8+J0Xk*O|V`UC@8{g%U|73L@FE9_~QzZvH*!1K~->A?_B>N zFE4l)4a;nEIK6^`f}rcT_(gJ3(AM^Frp~Ue%X07oP=#^{StJtqEjRZDOXifM-gjRZ zI-JkA%zbUVQfXzO{XK_^sL)kK2e_2Stb)wxk>^`xiN;J7^v2d!V=fTd^8;#W9YuftyVL$CNv$Dw19ieGy zY=hYv-2D7+ySvrE<4gq+E(r+<{Td!FlPLW3>1J!x^`_aD$lJWU9NgStL%I67MRCKv zfBM-WuPGw1}2t&o(zkKal zJD6(l!~U|OqT>AGVu{z1)-4W>>w@MG2r2o+>Fz`kJX+dCeQt44Sw{y-&2V@6XrG{? zqf_Khu#H8d`I3-!T7PHvV!2cWuU!PkF?w^ZZEj}fp|v$5`9>`bFDaIACE5F{HpYWz*mv=UXjBK9oBrChM@mZMGcz*`>SKveb|%?NcW>Vg zm+-{joR@FxHWkSm+G!o#Q7s!9Sm$*kMRUe?Wd83%UZZu~#}uQ1S&qHf*w|lD8K%p{ zeKihP?A zx*jFP4mg4)!hWwX?qs?>CTR{-y$o4 z5eQwJWTtEWyxP6P*^ueh($_cM1(NOl@KEp-s8W|)*EE8t?Yy`#63r=_sMwlyE3|{( zcie|>ed;Q+-yJlTDP#ZqG4-FOe`S8kf^YvBHC6hym&jg2~CMx>4)O>t~;S?H`H=y+1n=QNi z<3>xQKPB4!7q8;V+>2IC2b<2d9#=Gt`E-*c91)E&(XRQ_Yd+sU;5=Z)SFahQe2`}DFEzqcg^*mQD1Boa`}i6O$zp8hZ$=`itZC)f5O>qK&8%r; zA9A*_ZK1zA+^yx|XJXBkU%|ayj8_0(|5FjAg!3cCj(cqxiyfy}xte-x&gf%~4h@@F z;yT-9KB?e79g3QT#4bIY_ke^G3saJCK8p-xjz|KJgz1EPr52WBh)WE|==*$Y{ZhiR z@nKdy$CI@sBP*hQTrk^!$6w1!Sy+6sWWjL?rN*_;kw?Ba6h^#tJ`T@Jr$4-=*i^U7 zuUa~mZh2}~4ZjI*+Ykke}adKbqf(EiVGfi*yMpRMsjD>db3&S(Kdh2evRbYYRIpnKQ&9{ z*7)RAJUFJBlP@Uj_*KB7Z%_D;P5wH(fz;y4R`(aO)v}Kbeb+me-MxmUSMmM!LHlH+ zhpdOs!}Mt8pC<;pKut%qOtq8;qCEekG1qVWK8fz^?7i+z@MaIg0p{ulU&+whMv7j1+eMueT7mV{dGkeF_wox5Itv@)isySFVmt zkGgY(O+tB}>}9_E_iwYamQcmd)z!fo#swk?^BMeknPV^vI1vZ5zT7)89|b3!KYRXW zp`@m^>iWQk(M!wEEEJgTk99T<`^n`!mZ=RFJW)h_Q(YD>{aP`&tgfM9H`DkE%;STi zj9Xp>FI;^4o|tPSU#>0*$uAcHb$1U?7HXO5;8q|_SY}GyUbvCPu_0FD%!2s%D<4h6 zbTGC5c6hTTZ7Zj6$xno^i(hzinZuyO_7Xiz?LqEPF%V)vtNafkU5C`wZ7H_t+8`3! znwnnbJhE2wqU*OK2TX*hIVGwQa*yVp$`MOojo~|8R zhG3tf!}Mua>y6$S*_7%J{C>YYkUV>QVJh4T)wAwynxPbZC0Wc(loseSN&x|Z&7Bcs z@_VATLu&15lC|zcwR6aE&?XYDB{-rBdu5>qn?HYS})KerpvpRn4@9&?Z zd-duS-a{!v6Nr2QQC?22`CwQkH4-Xv(l$ zqP8+^8-D%^>pE3ky-=GosWwR$n!a?z&l?gFg0CYzckXwo6CnLP7jNBR&o8>RasfDU%WUsK0eMAPeDdz2%U?O z5aW?{GIy>{3*yAad+!%W`;sa;R9{wBR;FiRiSDqTT}PeXpKFcI$jPBZp-^z9OF&U> zFAZi-5H@#qzF@IQ0|Q!~vkUX{25^_cde-j4RYq~AWFPVmk{`zhzpnm&wN2RsL7Io> zjgVDqk>93eXJ==7M~B7E@(@ECj2^)vyrd%YgimwQ6X+(ayRgqlcnV?U0vPtWMr3t$8&bhyT_=EB`uacGrMa` zqx}Ps!kkNpj!Y*-(8{~L(tXhpuf=SE=1mm@yYIQV5i_58WWVAr`AV?i z=bkDwb+6+n{i=$o@Y3kC$m6c*gxa9v$1<;Ty}?RN2seSOd9|x`AvW)VDkGxXOI@G; z>^qnRYv~J^mU;8AXzkWKkMfP&8?t0OIA1j?nc}Jn!;motI$o-s!Y) ziDqR@g&+K^gsG~=>{Su^=->?|?a2zpk=iXXwlbK&buW5-RLD@B4&khC_ZZhdM;1g>g>xU9`H2{NowgW2tFv}+Fm00)}xR06kd}2DS-E%mFSKx zG}Fwce)rXEqj1sFWA*FINa1;dg@=_|i)b+^-&=~L^d}=}$-2uXvK1aRtQIe(su?)b z3>}o`Yd*$i3gfEd{;OKV9f!w(wtLHR-*!b1TLZ#~G0F2)7DR3>AQclt?B3=#{n=d& z648pESYL8gQCBbZrkoh~nW1c0<&&S^RK&ZL@E=6-51YWyy>F$Dw+ETU-9NQhEUj^Z z3Uox96)TjhVRdu$Hp}ad^MAVg`H2H|tK$qnu?%LG-Z;6P^4 z^TS~LE8OMPzPBN8SiR{qmBlrCr&XQzgdjMtDo z{-yN3EJnI@e5fO{DmpTf8h8?(2ss1-kx@*~jrcU==#Njda4-rn&}xChIJv*AkVQMk;>eCui~3LI%*_yvS$TVWEU5&(8Qe_ zA12;&VtD)Zt<+XK2QdEShEu=>_|JxOKSChzm5ZqvMMdubazTWJg*SF~xHvePq@*mH zDVdp>4q9urI(b2!v~{pjh>nXp^I@Btn}4x~8TkpwfF&+K2?ph^ELA>#Z-H>gt?qbu z_TbAdT7`%VB(B|K8>}Jp-sj}xJQMus}6fauzHc7~e zJd#lW4~XXsEs0a8GzzvLy6CK#(*fXFc|g)Mkf{=#rK+xO(;0W0Z+K-1w?`HgP?H)J zb{NUX7+NR*F;%aS@TRPWBm#EO`KgC0N+=1FGwk9ih>V)j*gFerh3}j%|WJ<55uIx zLtMkn3c1jQO^-`~$`}3zA&>yZ2RoAj3 zDIp=`{97;ugSkLS3AqV}Lti%Z^DII13eBRy0n63PpM9^)Y5|xQbSxQncG*;xqeHjT za31^3o6pXg`cFnoY+_;uSdh<*_3JTK4JC;yZ4-6%{`;NK^GNrp2Di!`w95ZEtOyg$ zCb4L<*fk%YG%s4|Z8~7R%V^|d@7fZ}pR2^yyl?XY2$uNoL3x_Pn1WqpqT`gL*R8&@ UTRpKK - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRAmcorAc Member List
-
-
- -

This is the complete list of members for IRAmcorAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRAmcorAcprivate
_irsendIRAmcorAcprivate
begin()IRAmcorAc
calcChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)IRAmcorAcstatic
calibrate(void)IRAmcorAcinline
checksum(void)IRAmcorAcprivate
convertFan(const stdAc::fanspeed_t speed)IRAmcorAcstatic
convertMode(const stdAc::opmode_t mode)IRAmcorAcstatic
getFan(void) constIRAmcorAc
getMax(void) constIRAmcorAc
getMode(void) constIRAmcorAc
getPower(void) constIRAmcorAc
getRaw(void)IRAmcorAc
getTemp(void) constIRAmcorAc
IRAmcorAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRAmcorAcexplicit
off(void)IRAmcorAc
on(void)IRAmcorAc
send(const uint16_t repeat=kAmcorDefaultRepeat)IRAmcorAc
setFan(const uint8_t speed)IRAmcorAc
setMax(const bool on)IRAmcorAc
setMode(const uint8_t mode)IRAmcorAc
setPower(const bool state)IRAmcorAc
setRaw(const uint8_t state[])IRAmcorAc
setTemp(const uint8_t temp)IRAmcorAc
stateReset()IRAmcorAc
toCommon(void) constIRAmcorAc
toCommonFanSpeed(const uint8_t speed)IRAmcorAcstatic
toCommonMode(const uint8_t mode)IRAmcorAcstatic
toString(void) constIRAmcorAc
validChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)IRAmcorAcstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc.html deleted file mode 100644 index c49fa3346..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc.html +++ /dev/null @@ -1,1022 +0,0 @@ - - - - - - - -IRremoteESP8266: IRAmcorAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Amcor A/C messages. - More...

- -

#include <ir_Amcor.h>

-
-Collaboration diagram for IRAmcorAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRAmcorAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internals of the object to a known good state. More...
 
void send (const uint16_t repeat=kAmcorDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool state)
 Set the internal state to have the desired power. More...
 
bool getPower (void) const
 Get the power setting from the internal state. More...
 
void on (void)
 Set the internal state to have the power on. More...
 
void off (void)
 Set the internal state to have the power off. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setMax (const bool on)
 Control the current Maximum Cooling or Heating setting. (i.e. Turbo) More...
 
bool getMax (void) const
 Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on? More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode (void) const
 Get the current operation mode setting. More...
 
uint8_t * getRaw (void)
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint8_t state[])
 Set the raw state of the object. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kAmcorStateLength)
 Calculate the checksum for the supplied state. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kAmcorStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (void)
 Update the checksum value for the internal state. More...
 
- - - - - -

-Private Attributes

IRsend _irsend
 
AmcorProtocol _
 
-

Detailed Description

-

Class for handling detailed Amcor A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRAmcorAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRAmcorAc::IRAmcorAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - -
void IRAmcorAc::begin ()
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t IRAmcorAc::calcChecksum (const uint8_t state[],
const uint16_t length = kAmcorStateLength 
)
-
-static
-
- -

Calculate the checksum for the supplied state.

-
Parameters
- - - -
[in]stateThe source state to generate the checksum from.
[in]lengthLength of the supplied state to checksum.
-
-
-
Returns
The checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRAmcorAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRAmcorAc::checksum (void )
-
-private
-
- -

Update the checksum value for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRAmcorAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRAmcorAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRAmcorAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMax()

- -
-
- - - - - - - - -
bool IRAmcorAc::getMax (void ) const
-
- -

Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on?

-
Returns
The current value.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRAmcorAc::getMode (void ) const
-
- -

Get the current operation mode setting.

-
Returns
The current operation mode.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRAmcorAc::getPower (void ) const
-
- -

Get the power setting from the internal state.

-
Returns
A boolean indicating the power setting.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRAmcorAc::getRaw (void )
-
- -

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

-
Returns
A PTR to the internal state.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRAmcorAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
Get current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRAmcorAc::off (void )
-
- -

Set the internal state to have the power off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRAmcorAc::on (void )
-
- -

Set the internal state to have the power on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRAmcorAc::send (const uint16_t repeat = kAmcorDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRAmcorAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMax()

- -
-
- - - - - - - - -
void IRAmcorAc::setMax (const bool on)
-
- -

Control the current Maximum Cooling or Heating setting. (i.e. Turbo)

-
Note
Only allowed in Cool or Heat mode.
-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRAmcorAc::setMode (const uint8_t mode)
-
- -

Set the desired operation mode.

-
Parameters
- - -
[in]modeThe desired operation mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRAmcorAc::setPower (const bool on)
-
- -

Set the internal state to have the desired power.

-
Parameters
- - -
[in]onThe desired power state.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRAmcorAc::setRaw (const uint8_t state[])
-
- -

Set the raw state of the object.

-
Parameters
- - -
[in]stateThe raw state from the native IR message.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRAmcorAc::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - -
void IRAmcorAc::stateReset ()
-
- -

Reset the internals of the object to a known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRAmcorAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRAmcorAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRAmcorAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRAmcorAc::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRAmcorAc::validChecksum (const uint8_t state[],
const uint16_t length = kAmcorStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
-
-
-
Returns
A boolean indicating if it's checksum is valid.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
AmcorProtocol IRAmcorAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRAmcorAc::_irsend
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.map deleted file mode 100644 index fface06b6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 deleted file mode 100644 index 479c95a02..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d036b68b6c0b643498333b0d00548c92 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRAmcorAc__coll__graph.png deleted file mode 100644 index b0fe9fd802ae6ce010a25b57e7ed32c1a80638ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5829 zcmai21yEG)yIw$2mPQ&RR3s&&LusW$KzadLVv%lv1?fg4l$M62OS)N+?r!N?Kx!rK z@ptF`=FWfa%-x;c^X;Db&R6gIywCH5Yp5xL31|sGAQ1SKlAIQBod-VtcsRhf6;b_n z;DTeWtSAS%`}@vnDM$c;9(cc!d#U4@cChH9PY!LxMIGHEe8`5w8!yfx*_myq3Bh)I zxr!)-1#sI&y6Gj^@@`3F=~LO4BHf!J7wei#>Pio^DjRooJLV$I-6pFi>M#vP3C>x} zzOxw-X2F@`l}|FHM{HQ@HGTx8EN^*vGV%)?HMikkee!rLKpw-_`vQ-z{v(UB-ixr( ztO`;V5&}AA%aiYm;@-;nrCz^B6$h6T zJv~Jvr!V5t(&*V9KRy?WJ)gxR#S4xm3DB6qBMnmxDs63Lq(^2~R*sJ4k#LeRGR7bf z2#8^(YEX1syqSJyommGa!lY$xn-A%f9oRB$Ws5#(h|NdvOimm z9LxK?i!8?omkXS&hOYnK8J9JHT3fTbA1z5rU>m?^muAPt#@eZ6Ei70wymz0nJ$kfy zveCb}JCsjNh_k=YK+dU)cwuFgpVz-Lo<99TRTV5FBSXT(L|kiNzf;B4yWjO=G)Iy3 z(IaeNy1BVQnYX=k4(-Fk#6v?vVPRqI!S|^yy=bFxY;0^$XJ^4Gk7Z#nuHxe2%d7Ex z)vn%XI#LD(aFI>~91cnoaSF^d)zb@|nbB9u)4GR^y*iRDySb$D@@CKUu5+f+;`n^t zA?Mq-Z%FA%oAG?e;MeEC5b(&z`+erOwD1+A)fcAUTp zSGKlr_4M>4P6q_6?d-5Xg_E{i#*Gxt4fNzs)Vh!SF2s%6{1yw_z;r@pOU+(!N^ByI zD{xIots;u@mUG(oOU-?mY$JxLx9GQ3miQ475vXo*bzqBwLPJw^<~8clj%8 z#Ixm&NTV?X0)Zi87$oP;3o@^NrTAv5mg=(d@DTB~UGx9;mIVDxfIk;UNMI49 zw6qZ${mJWNdCDMoL<9i{UQqC)?V~*u8ag$ltD~!XvX|VyaebtwrUn9~tKlZT#)d+n zIajy0x0`b+9S1-PzRn{vucW3&Lar~53rkDo-QDX(oyi}otoVDlx^@Exy1Ks)6I3l2 z#{h9~azdcc>Allj9S(?tL+q=B$H(J`O-E9GOAJy{Qj&AG2M+#NNGB8u)eZo{@iCIg zVy!#8rH-#QvtvSte*SsdfK*i4GYDo?Rh8q}?i&CC5;7U7s6y9~vFi&BE@3e-3YL~^ zH3r-te0`b8!bfIi@Oo25)s2i6;5S}gUfHFkgVu^h*%~SD=7X%BQO6}F20OG~^=^BK zdYxF7%f8Z9{VIs>-NL9>ZgRjkJU>roY;0UuR<>CH9Q*0%;fhF^;=K5s<8xXt!TtLH zIM@r`A?;Om6xsOw8i*#WMC$BB@J~cj0U+`A78A0c3yO&$N|W#+<84M^{_O7`ot?#R zF(C#v@?!^xiHWHjiDVTOrOC_78?mju+$|}Oi;IJwpPys=Ik~t%rir@5ef=5{5`x1{ zL4YuAGl7>1wgD@}0s)8;m9MCv@GUpDdmA)ic6oXEP)O)Oe=;x9W7#(}De1xfOeI!B zLqm#$7e5OtYy78AfsKt~?1`@t2DJoye0+``9!w`fi;&mShlhvkJUj||ddaWs6*}E- zQp}ia%Z(by0Jvy!Kj;KDl{ul0gq$1;04UgEBc-UQsH2k;#)vP9_1QBL;8Ah?8~P2- zk3JX_?N>&W>0MqAo5J0WAIW>C-@iO&|aZaw;k+u{%JdjE;`VqN&Z6TYWuO z0&r0yvc!;+Uw!Nx95OmO6!62X@tz)RAhYCwh?bC)96Y&NdU1m=tS15@`eQ-@xxb)u zmJlnX>2QTwptWf#UHKmMqHAPZcdt=$dy3DEoafE2(8DtMFb#HC5MEHHLfDJ{Y=or0 zRA-_)%O5tJ-T3tj?=3RR^#gbC4I6`8m0ITsIDTNakNqw{!?)Dx%bH=Fo zjuzLq^d zJMwC=0!oO0LvN~cNqs_)r&$rbfS#9(I1l-_ha*jk)o? zV#5!eXzhrL>ap74{eLD!ny(4w%D#9gy+XV5l`v-B6%h=yx6e9JuiMRuBIp<#pMo^|FGU#6EPip-iIX(k6QR$O)w{2140OPn9Z~D zok^yL5JauftQgIzo+vY~)b-kB=X()y^o~bX-WLulp2XsdxK&?UxVpRc!m ziz$hQdLp^@a%I#()8#xLo1>}ThEB}M^NLdNLr!pZzh_1^xnugi<(Ezbd@=+KYPNdC zTy@ldkBH2c%|RAC-C+NT5I`R(`!&)<7+!AIFX!YnGK7>Zh3rPf$eec-cWsh#V2od6 z|W?sT*~a(i!{SEA^p%dX~=`?_0TB(J<&pK8g$8FYr7hV|xwdd*I#~`tVWJ`m=K>0z-d<6zq_hEXNm5?OxQeQ~P$fxk@+_ zu9{re*VSjXHF(U!-&v0nGCO*V3E={0l)*B-mJ#RK~Qg@lh^cg zy})aj2CMw777(Fh@jo#1Z^Y@~hYY7Cw?mK;NyrhqOo!>{L#cJRQZ?W z(88)5{Rfs_{X+gdC-tCGUUR6pTy}wQkO&p>X!XWgMSGfl)7e@ ziUPO4a=y=YOeOevz1nhP3=nCcQiZss%j{01F7vb8g{CqmUH}dJySr6SPmkmrN8)Q7_~gU{Y8;?S39s|6Pk_0@ zPB#ayulJ_Q1wbl!T9p9d#ex4FFw=i`q6nkQy}B&@0No?+etT3aZJ!hV)EVYY?G-vc zqnUE?#8icE9My+JhTbjyKfFt%?9Y2$cXxMddwcnJ?;f=gH5lE>9;ht}&yMc6Y82@> zy1NT~Jvus)HuH^05Ps$zNIjmB)ejvAKM!;`&9G>VWIAfaHZn4zUt3!&O_RdCjT%S=BqK=PWe)u2()Ot+=1A3AujIt`}~CTba1o+mcPG$cW*Dt)2DrDsj@f$ zWl&Z*YF9}*W|{1YGudUxi;~??-@KncU*EE?E=u?H^(ApmM8TX=2ZKZ6Z!S*~Z6_#g zDjfYE?ss4G-sP1b9kR3w6wNw4m6Ofwtf^-+0pO6Gp9udpAO<8CmqFqIfS}L6aykHL zk}3z;3$6Y@(W&e8%`=u3yj=6PF^!pTo90AF*E}i~%P(WiX2%&u7Hkg+z+YdbdE5cz z)qS}PX<4TFaC=~2#5>JwJI;ni&B?ICuvXz=U@2>Dk2Uiox25gcGNq4elC}dTd*E3% zbUux8cEy+W9^lp|87Ym;FYEY3Cga~wf7S{>@k6X1jbTZ zoQ(E7WJe2U!(3NV?wp=Q7;OMdSTXeW$jSHsr)JXQ_vI!Hi-_27|MF@N63r0>yno$; z|89VB#k%EGUO?!+4d3Ypmn*i{f34G5>_ooOa~%IE^|j&=MIG}eRp;(tk3Glr;tjRK z0|3PMjWK`{#VGyL+%4`_b0%avU|FsE^3Jt)%O8O$fG3?{iLdTN1 zeFr;CwmTgDgUWYAr?~n@{aTuT(}Utb-Ro&PKgXo;ra2`A2pvw3-KAK9yt_Pt;zlu)0px zKF_KElgBfJ0^^Kcwg3a9S{NN{y^mBiEacrZhf&cwtO-m9a_RCj&-0Wd=h8VOTB zr>93F8GQ!E-syu&i02sqU6I7okuN7N|F-d7iR_>MlXrGM?y7sgDAs&7WvCDfxCA7W zl)>2dADHz-P>Q(i>Xh4G94G$j#}6fFBSt`)c2+*hAXm%7!pl@)kU&^_34D+56= zrk|hRb+gOX&`Xy1m04(J&!hc=QAMWUmKI4yuV19UHaE|$?|P_AA3lFh$>ev*45*#Bj0~bYt?-K_AL1`xzWf*- zM(&IkTx|#g3ahG$zZtz-GSlWSjfsirc)TVLYG=Ad;aUsQTE2V7EFeG*27_m6Y!Wp6 z0SVEitu7h7uwW#osFo&0Ki18!t*!Njt&G1# z6#!!rI=aZW)mGU+0ZryH?gVr_-}?oT9~;gHKx9FOGvopLW!Y3l2J^7(&M!=kC1H2J zT;1G6Fsj*p^qahrs;az;ivSQh5&qZfOevx+kMCHdynnM#*goGJ&UBdI;pHX1|A1?S zso#?S)}vA%z)jqo)i3&7o2Hj%XJ;hga)6lL){HeM4M|UDSXfxNw8_X=G##EF8G$>k zH@4ZS@+8yM(iINfqS-d(Ax)7gkGlY0pwe|m>jQeHAS^l>+k#Lrma*q>v1xVhPuE2n z5Pgv8GGicT35A7)0T*jxYU<==qbyIdZ27cosqSe&aZwQlNG0W2fa&2-D--D773~KD zW*FcZReBtmxVpKm0@@N}_8Sui4(LWe;j&XiWKP5a6#((J8in2~&nYe@u(!AWF*qpy z@+HQ?;vyfAD6siDFmO5=C6k_~gTkZ_9`v@AEDnDDC$^}9ONjv!NzTVd93UMbU7^IR zTwDkwKOm@6q)ZDu&%GKD}ZE_xV>Cw=jQGKd`AorZ_978w6wGe^B#h~ zJ{+~QpTtzT>GD>iN@;bQRQQ$t4cOn=**PvHMJag(kBfsNq6|t$-?&Qrw+j7lXZAlp zmXsyVXLCWRF_xKT2XRYC)_C)MW8?sdyOA{+8co9avcQg%h2q~nJ|J9f<9p0PS*SY< Y(#vvwH - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRArgoAC Member List
-
-
- -

This is the complete list of members for IRArgoAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRArgoACprivate
_irsendIRArgoACprivate
begin(void)IRArgoAC
calcChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)IRArgoACstatic
calibrate(void)IRArgoACinline
checksum(void)IRArgoACprivate
convertFan(const stdAc::fanspeed_t speed)IRArgoACstatic
convertMode(const stdAc::opmode_t mode)IRArgoACstatic
convertSwingV(const stdAc::swingv_t position)IRArgoACstatic
cool_modeIRArgoACprivate
flap_modeIRArgoACprivate
getFan(void) constIRArgoAC
getFlap(void) constIRArgoAC
getiFeel(void) constIRArgoAC
getMax(void) constIRArgoAC
getMode(void) constIRArgoAC
getNight(void) constIRArgoAC
getPower(void) constIRArgoAC
getRaw(void)IRArgoAC
getRoomTemp(void) constIRArgoAC
getTemp(void) constIRArgoAC
heat_modeIRArgoACprivate
IRArgoAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRArgoACexplicit
off(void)IRArgoAC
on(void)IRArgoAC
send(const uint16_t repeat=kArgoDefaultRepeat)IRArgoAC
setFan(const uint8_t fan)IRArgoAC
setFlap(const uint8_t flap)IRArgoAC
setiFeel(const bool on)IRArgoAC
setMax(const bool on)IRArgoAC
setMode(const uint8_t mode)IRArgoAC
setNight(const bool on)IRArgoAC
setPower(const bool on)IRArgoAC
setRaw(const uint8_t state[])IRArgoAC
setRoomTemp(const uint8_t degrees)IRArgoAC
setTemp(const uint8_t degrees)IRArgoAC
setTime(void)IRArgoAC
stateReset(void)IRArgoACprivate
toCommon(void) constIRArgoAC
toCommonFanSpeed(const uint8_t speed)IRArgoACstatic
toCommonMode(const uint8_t mode)IRArgoACstatic
toString(void) constIRArgoAC
validChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)IRArgoACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC.html deleted file mode 100644 index 0cd5ae0ac..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC.html +++ /dev/null @@ -1,1383 +0,0 @@ - - - - - - - -IRremoteESP8266: IRArgoAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Argo A/C messages. - More...

- -

#include <ir_Argo.h>

-
-Collaboration diagram for IRArgoAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRArgoAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kArgoDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the internal state to have the power on. More...
 
void off (void)
 Set the internal state to have the power off. More...
 
void setPower (const bool on)
 Set the internal state to have the desired power. More...
 
bool getPower (void) const
 Get the power setting from the internal state. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setFlap (const uint8_t flap)
 Set the flap position. i.e. Swing. More...
 
uint8_t getFlap (void) const
 Get the flap position. i.e. Swing. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode (void) const
 Get the current operation mode setting. More...
 
void setMax (const bool on)
 Control the current Max setting. (i.e. Turbo) More...
 
bool getMax (void) const
 Is the Max (i.e. Turbo) setting on? More...
 
void setNight (const bool on)
 Turn on/off the Night mode. i.e. Sleep. More...
 
bool getNight (void) const
 Get the status of Night mode. i.e. Sleep. More...
 
void setiFeel (const bool on)
 Turn on/off the iFeel mode. More...
 
bool getiFeel (void) const
 Get the status of iFeel mode. More...
 
void setTime (void)
 Set the time for the A/C. More...
 
void setRoomTemp (const uint8_t degrees)
 Set the value for the current room temperature. More...
 
uint8_t getRoomTemp (void) const
 Get the currently stored value for the room temperature setting. More...
 
uint8_t * getRaw (void)
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint8_t state[])
 Set the raw state of the object. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kArgoStateLength)
 Verify the checksum is valid for a given state. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kArgoStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
void checksum (void)
 Update the checksum for the internal state. More...
 
- - - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
ArgoProtocol _
 
uint8_t flap_mode
 
uint8_t heat_mode
 
uint8_t cool_mode
 
-

Detailed Description

-

Class for handling detailed Argo A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRArgoAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRArgoAC::IRArgoAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRArgoAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t IRArgoAC::calcChecksum (const uint8_t state[],
const uint16_t length = kArgoStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
-
-
-
Returns
A boolean indicating if it's checksum is valid.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRArgoAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRArgoAC::checksum (void )
-
-private
-
- -

Update the checksum for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRArgoAC::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRArgoAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRArgoAC::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRArgoAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getFlap()

- -
-
- - - - - - - - -
uint8_t IRArgoAC::getFlap (void ) const
-
- -

Get the flap position. i.e. Swing.

-
Warning
Not yet working!
-
Returns
The current flap setting.
- -
-
- -

◆ getiFeel()

- -
-
- - - - - - - - -
bool IRArgoAC::getiFeel (void ) const
-
- -

Get the status of iFeel mode.

-
Returns
true if on, false if off.
- -
-
- -

◆ getMax()

- -
-
- - - - - - - - -
bool IRArgoAC::getMax (void ) const
-
- -

Is the Max (i.e. Turbo) setting on?

-
Returns
The current value.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRArgoAC::getMode (void ) const
-
- -

Get the current operation mode setting.

-
Returns
The current operation mode.
- -
-
- -

◆ getNight()

- -
-
- - - - - - - - -
bool IRArgoAC::getNight (void ) const
-
- -

Get the status of Night mode. i.e. Sleep.

-
Returns
true if on, false if off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRArgoAC::getPower (void ) const
-
- -

Get the power setting from the internal state.

-
Returns
A boolean indicating the power setting.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRArgoAC::getRaw (void )
-
- -

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

-
Returns
A PTR to the internal state.
- -
-
- -

◆ getRoomTemp()

- -
-
- - - - - - - - -
uint8_t IRArgoAC::getRoomTemp (void ) const
-
- -

Get the currently stored value for the room temperature setting.

-
Returns
The current setting for the room temp. in degrees celsius.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRArgoAC::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRArgoAC::off (void )
-
- -

Set the internal state to have the power off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRArgoAC::on (void )
-
- -

Set the internal state to have the power on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRArgoAC::send (const uint16_t repeat = kArgoDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRArgoAC::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
- -
-
- -

◆ setFlap()

- -
-
- - - - - - - - -
void IRArgoAC::setFlap (const uint8_t flap)
-
- -

Set the flap position. i.e. Swing.

-
Warning
Not yet working!
-
Parameters
- - -
[in]flapThe desired setting.
-
-
- -
-
- -

◆ setiFeel()

- -
-
- - - - - - - - -
void IRArgoAC::setiFeel (const bool on)
-
- -

Turn on/off the iFeel mode.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setMax()

- -
-
- - - - - - - - -
void IRArgoAC::setMax (const bool on)
-
- -

Control the current Max setting. (i.e. Turbo)

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRArgoAC::setMode (const uint8_t mode)
-
- -

Set the desired operation mode.

-
Parameters
- - -
[in]modeThe desired operation mode.
-
-
- -
-
- -

◆ setNight()

- -
-
- - - - - - - - -
void IRArgoAC::setNight (const bool on)
-
- -

Turn on/off the Night mode. i.e. Sleep.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRArgoAC::setPower (const bool on)
-
- -

Set the internal state to have the desired power.

-
Parameters
- - -
[in]onThe desired power state.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRArgoAC::setRaw (const uint8_t state[])
-
- -

Set the raw state of the object.

-
Parameters
- - -
[in]stateThe raw state from the native IR message.
-
-
- -
-
- -

◆ setRoomTemp()

- -
-
- - - - - - - - -
void IRArgoAC::setRoomTemp (const uint8_t degrees)
-
- -

Set the value for the current room temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRArgoAC::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
-
Note
Sending 0 equals +4
- -
-
- -

◆ setTime()

- -
-
- - - - - - - - -
void IRArgoAC::setTime (void )
-
- -

Set the time for the A/C.

-
Warning
Not yet working!
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRArgoAC::stateReset (void )
-
-private
-
- -

Reset the internals of the object to a known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRArgoAC::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRArgoAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRArgoAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRArgoAC::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRArgoAC::validChecksum (const uint8_t state[],
const uint16_t length = kArgoStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
-
-
-
Returns
A boolean indicating if it's checksum is valid.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
ArgoProtocol IRArgoAC::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRArgoAC::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
- -

◆ cool_mode

- -
-
- - - - - -
- - - - -
uint8_t IRArgoAC::cool_mode
-
-private
-
- -
-
- -

◆ flap_mode

- -
-
- - - - - -
- - - - -
uint8_t IRArgoAC::flap_mode
-
-private
-
- -
-
- -

◆ heat_mode

- -
-
- - - - - -
- - - - -
uint8_t IRArgoAC::heat_mode
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.map deleted file mode 100644 index 527485fe6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.md5 deleted file mode 100644 index 17fc3a47f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e12e8e37c876798fb909662598ebefe9 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRArgoAC__coll__graph.png deleted file mode 100644 index 5e87a8e744edbc987a7c315048292cf569013fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5939 zcmZXY1yodB*T;uO98y3O7#Lb4B$OJuJ0*q&X@_n^IwYh7q>)Ct%fX=)qy?lwasXif zNkP8L^R4fF*R#GgYtEgz=gvO&?En7l{~Ik0MPj0dL?94|SXoI<2RM!b&mcm4U{q2~ z;{*=)R;r3}pqtxAKC(0g1ft$nmXp@=&HlCMXQ*qiM1VO^?311WXs3pXb8Er5DyI})1o|C5KbcrE~unZhs5wx z{CB9i2(GN;y4p3rsh8tgoG8;SthMSRN=cRU*i=hNRrku7?j+!DhEcr1wHwLiGuB!( z^7ejKUtg~VAIK1}V@y?1hZ9VRAOcC@Fa0vJB?9M)u#9j#5L9Wr=5LJ}Y%_{^b}pJu z#PbpVx@@vKOM=V?P|p*N$B!F4Io{z#L`5;PvK9{wHoRH?z@fXHyq*E`<4@x@E;-A! zq?K zGX`Jqhlht-%r!b_ai-cod2Xy?4BGTU&+KH#dLIH92wc z@bs^Ag^|WR8@QG ztOtIVUdZvQHkZfkjs)s-_)m((?J-pPBJnwuG?c!GMU7j9E29# z@#b((j+jqkZtmOAP;B7tG71PZ45h8MCEDuf>MB1Dn}6ys!IJ#`ec2fV^vBM{MRQ_e z;>V#?-TT(o*2I9b{U#1orX(_u99v3VPa~Xr_4s1%cUM=}i-EWFd*?ARMA*Sf#X8C9 z>58Dlai?O`C9AA?+<*U-o-)m)ASsZA1 zVtqaTM2)$mjwutSs9rxA7rDzxus=g(ICd#Nv30=ClL`5NjL-~ zjUBIzC#TO)>j+4(&YSn|XuYkdvq2y)FRw(EVplh}aasl%8vBoZf*n9s$uK3M zmX;vk9@Nm#-2?_n1xLq^OP-yboqJ9hYWM~Q2EKlNbv^iC8dPVR63fb=FXrsbE{d2= zIFWwl#o7L%1r7f7<%z6@28qO5c@F^Tq6QdaIdTMnveG2`dwhwruXfqObn4-Z4&RnuZ4Cwrpk z<{QUM>+0-SY9h)A`&dx^1#l39MkR4oi{r&kh{qWks0cn+f?A6s3 z^=|)|&9;iI$OtnT;cfoBoUO+rCMN#!-A9Gu&00Q#ZJlR3-6&d$uq`LWM6ARs_aL7{mbk&~Gj zGdQS%i;r)$^Syj8qZ<&2Jzrq++^Rni6Xx&`{hP1o?Vt(L|0$1oCzzd`y}6~T(C;n1 zSmb^4SL7*d>fOOuIIe$A5pr^J?_WNcoBBllLM=*KbBbOJ+^*v9FM5cQGmL9leogDK`K`{=P(MC*-jHk^Fm_??J64mCWT!SE*b}kaQ5RER1*Bppq~npQ_L@)@q$5ZsDW2bjf-2jjkA`n zJKrC9^jp?uPF}CTnsDP9rq{ici*=&qm{Mk}cLI7cu*aX2b#R62zM}xw*s*J6Er)Fq zyv`&^_MZ7X^;sEe925}p+Z)5D8n`K}hV0!iPSOGs55 zE}yZSOEgiQ@|dVC(MC&jRi}}BEzui#=!zaT(No?f#{`h7`SPMBphj`eoBTleGg9oq zSc003N;j%JF@H5}(1|YuAyp;)eEhhq)sVh){~KEB=h-i@zq3jMz`L zpW1K{9`<$V$^0;lKSO2`STJmdBSR`NI}#KBc{C{tDr{24Bv6cD4nI@c6urMnVX~}; zTfpissbM09|0)T&fxU}g$>Rq?dDIHzw%H#(qStzbBuZcUCM(;7?x+h8Enq(Pcj9w? zjX8G+(iOlCQhbuV$q+ha z9P6<<#7C0A)fW*pvdRyN>PkeLVIIo)@Pchdx4I8leS$4ft4+(fAB-WuFC%+Ui!~d= zQkf5HC03o^pE!_pr~N@K#XId|D$@$ZNDB>42EGYMV`#TXRviA6h=|$oWM`fE&M{V~ zK|tH$y$`@=4)uc9cD|?;1LPCGQ7Mdk~C^^!&n-0lr*e}#77MK9@ zP%VX^_GbW%Z|4ebH4Z_K`9bXc8w0{z9D+Ig(1qXb3v*{Qz)Z%XauwcZ(b!Ek@iZAL zI9p5Jm>VRBR6_e_M;Pm~AY18s6=D_b%Chm)ne3v%0Xqi)_igo=tW#ba-kHDs$>SE8_XEoZb=rN&p&r@ap(t-q^~x1Kf! zUaBklzc}&*yULBlEw%bo79p+6^&WR#XubVgc#fgp1x{%fuRt7o7D-p(jgt#ws+u)> znR3en$0WwPiW3lde28dB7L3xyQQW;HzTjI38>#$*H~$&FmLw}y*-Ige3X6N5Jc^LP zinROLFzDMtSE~IXAvV+gPuIA*7) z_+J$EJ1@_Bg|J^Ct7sr08Z`WiLlfhM+*v9R5KWUxc%&nDr&!T;@=@kNGcmxjyE8Qd z=Z9;no12k<-dT<2iW3qN2FJ$U?SD%jE9SFbJ6ZAnF?iy!OHU**Aep#%qXYTUVXhm4 zRNkLVcoaQ71pz7!4GncY-J2z`9#O9ezVd$BUx{`(Zb{goOp(CO&uYI>zN37nL-sZG zj8}VQZS52H6%^KKpsVW>^n43%o7)=xxV_+dY2IrlAlh|+Z`lAWVR`&Gw$h|6IY;8z zvotw*dGb0#HGmiWcB@*xM3XZ|>sQze9iN=Aiin65m6SvRZ3OuTEhSG;dH}}&z)S|9 zBL(2NTcDGXmHmh0<{Uq1>OFM#>^60`4sa_?U!0zOakSkS4&+v%iOKmrX!}U&6#NL7 zs_vlAiqFl>4GO@F6JL!S6BHD!#%3Mm&;;+^I-W&`g@t_uYR8X5Dk>^mP?Ab93oma1 zh>?|*b?>~wpr$zsW{!Boq{zO&eDeI^+WkzXa55{84g_ja_07PiMFveh`1k9D6VsVn zq}mM*24xGoVOQu^$=KU-Y>wt7bod-#gNTTLrc^>g{fx*0wc)P){CPxow@fqmgVvW$ zZ+CxxDmznC`XZf2CMG7o`w8&zn;)c?m=W~(IL7&_%DKc%;Jy6V^2-PrC2D>76>6b| zIqnkdxbLc_2DY-Y%AZ7IzOv_80IZQXwDG@m6{1rfURt{4F~j^1S>Y7xd}T{Cgk%8Ikdl(_EwtS$)yN60*q!|I7-$c10WMY0)1wTRfl^RVkTEcj5)kw_=cHz4 z5;ei&0kV=)RAlDi8F?2gD;{PxDyywfVEj*~n(IwTOul7@fws`C^Uhp6X1i&Mjd z0F`4_45;6I7DCOcE7PNp&&KNrwAM@PUmu+nf%@;d;<37EO|O|zkvuJHthqw2#L(KVUzu#vu8-QV(vD7*#}vc<^WFr#@L z!#3*i)AfNI%Z2RoE8Lc|p<%cWp#0|5kHdqC#6oRPpE)h+sS5hVp$-m$Yi*bo#4Ay2 zF5f2qLPZ&mb7WlUg=t#4M!CFneieSTE`m-XR~R0ln&KnMYWM?tuICfh6PK$M)~SPj zbWG4vdlLxyiLM4sUxwO;)HG9i!Q9x(Vs_owjY4WSB*;3IM$`6rw%ZUnEJNio)>R~b z$+1(W3(xiAJ9|vA{71W;!~W6v{bucVN%lut?~?q#>rw#L31gDyFPs3x?Dlvel;RB+ zy+X@W;T%lBZlo7*RDib$NdN-_-ieWDoO6XD!Y{Z~ll4cVLrQT^tv@+Ac^b)w`NDtO zDgX6zl84zxccv;1y9gMzkqOb!QgU**Y?`@ocz3B+fX}N&0)B6616;f^nEH5=XeQsE zLE=^P$?nWrs)3nh`fBf+d-&ok@AMr z;->SMcE5Y1>$=*F*U&eujRacoUZAf4qNxSEgWD4hJ{^-dIyxq%rrI@ z&`<#SvgVhwR<6jtzCJAu%J;%xjGBj!4}xxJm6etKw|rC6)0u^Y z(#44+5p#kjpI;;8vu?wXjUvH|>IqR}yEUk4J<&RZxY)h{0c)c{e+9&E`^#`pGC`qOKn>&Ijt z4+j{m*S{pKxaR(yE-EdRE!X?Gk#0Vn#Va6i52)t0%XcGWPQ8FeIXgRhWq*H!^`tB zWPs962vyS58~`l1)vdGLcwy(|&Uhd?G%IP(mH%vMdiwpHot=E0@*lX#LqW(tZ?!nW z^(!KD%3pjw=g$Cx#yWgl!gfwhPUM$61A)~K$?Tm6n!DpYVgjHipvIfF1nfbC4uZ9d~wjwG9oU-@T(W>F}<)I|G(a z835IEUUC9oxLq9Cn6$cLSz20hm#iN8((qZ~@|b=4VJku_UXL^Mm}|#u0@&y zTmlOIeErMC)!n^26z}e>)pqNRIL%b!fx>p_Mci4u50>H!3Yb1!Y-agxq#9uMI}W<1 zrl<-P;&=8w=I4&DRc}4w=5ESVrEqt5ueBMXZh)}!>j6oP%q_)f9JW@-$jDf6Zv)Jm z2mq_x-T9fAnYrnyZCEm4wv-eUp{5<)t9dt9>~!?>eBOJ8$bHAb_OW$7W{JFncv>O2 zDEMRS7zxh59O3_X!#WAOh>q9SqR1^88*1?#Fphu6Vzs - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRCarrierAc64 Member List
-
-
- -

This is the complete list of members for IRCarrierAc64, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRCarrierAc64private
_cancelOffTimer(void)IRCarrierAc64private
_cancelOnTimer(void)IRCarrierAc64private
_irsendIRCarrierAc64private
begin()IRCarrierAc64
calcChecksum(const uint64_t state)IRCarrierAc64static
calibrate(void)IRCarrierAc64inline
checksum(void)IRCarrierAc64private
convertFan(const stdAc::fanspeed_t speed)IRCarrierAc64static
convertMode(const stdAc::opmode_t mode)IRCarrierAc64static
getFan(void) constIRCarrierAc64
getMode(void) constIRCarrierAc64
getOffTimer(void) constIRCarrierAc64
getOnTimer(void) constIRCarrierAc64
getPower(void) constIRCarrierAc64
getRaw(void)IRCarrierAc64
getSleep(void) constIRCarrierAc64
getSwingV(void) constIRCarrierAc64
getTemp(void) constIRCarrierAc64
IRCarrierAc64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRCarrierAc64explicit
off(void)IRCarrierAc64
on(void)IRCarrierAc64
send(const uint16_t repeat=kCarrierAc64MinRepeat)IRCarrierAc64
setFan(const uint8_t speed)IRCarrierAc64
setMode(const uint8_t mode)IRCarrierAc64
setOffTimer(const uint16_t nr_of_mins)IRCarrierAc64
setOnTimer(const uint16_t nr_of_mins)IRCarrierAc64
setPower(const bool on)IRCarrierAc64
setRaw(const uint64_t state)IRCarrierAc64
setSleep(const bool on)IRCarrierAc64
setSwingV(const bool on)IRCarrierAc64
setTemp(const uint8_t temp)IRCarrierAc64
stateReset()IRCarrierAc64
toCommon(void) constIRCarrierAc64
toCommonFanSpeed(const uint8_t speed)IRCarrierAc64static
toCommonMode(const uint8_t mode)IRCarrierAc64static
toString(void) constIRCarrierAc64
validChecksum(const uint64_t state)IRCarrierAc64static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64.html deleted file mode 100644 index 6b5702369..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64.html +++ /dev/null @@ -1,1228 +0,0 @@ - - - - - - - -IRremoteESP8266: IRCarrierAc64 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

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

- -

#include <ir_Carrier.h>

-
-Collaboration diagram for IRCarrierAc64:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRCarrierAc64 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kCarrierAc64MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setTemp (const uint8_t temp)
 Set the temp in deg C. More...
 
uint8_t getTemp (void) const
 Get the current temperature from the internal state. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingV (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep mode of the A/C. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set the On Timer time. More...
 
uint16_t getOnTimer (void) const
 Get the current On Timer time. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set the Off Timer time. More...
 
uint16_t getOffTimer (void) const
 Get the current Off Timer time. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t state)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the A/C state to it's common stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - - - - -

-Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void _cancelOnTimer (void)
 Clear the On Timer enable bit. More...
 
void _cancelOffTimer (void)
 Clear the Off Timer enable bit. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
CarrierProtocol _
 
-

Detailed Description

-

Class for handling detailed Carrier 64 bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRCarrierAc64()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRCarrierAc64::IRCarrierAc64 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ _cancelOffTimer()

- -
-
- - - - - -
- - - - - - - - -
void IRCarrierAc64::_cancelOffTimer (void )
-
-private
-
- -

Clear the Off Timer enable bit.

- -
-
- -

◆ _cancelOnTimer()

- -
-
- - - - - -
- - - - - - - - -
void IRCarrierAc64::_cancelOnTimer (void )
-
-private
-
- -

Clear the On Timer enable bit.

- -
-
- -

◆ begin()

- -
-
- - - - - - - -
void IRCarrierAc64::begin ()
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCarrierAc64::calcChecksum (const uint64_t state)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - -
[in]stateThe value to calc the checksum of.
-
-
-
Returns
The 4-bit checksum stored in a uint_8.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRCarrierAc64::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRCarrierAc64::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCarrierAc64::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCarrierAc64::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a standard A/C mode into its native mode.

-
Parameters
- - -
[in]modeA stdAc::opmode_t to be converted to it's native equivalent.
-
-
-
Returns
The corresponding native mode.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRCarrierAc64::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRCarrierAc64::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IRCarrierAc64::getOffTimer (void ) const
-
- -

Get the current Off Timer time.

-
Returns
The number of minutes it is set for. 0 means it's off.
-
Note
The A/C protocol only supports one hour increments.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRCarrierAc64::getOnTimer (void ) const
-
- -

Get the current On Timer time.

-
Returns
The number of minutes it is set for. 0 means it's off.
-
Note
The A/C protocol only supports one hour increments.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRCarrierAc64::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IRCarrierAc64::getRaw (void )
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A valid code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRCarrierAc64::getSleep (void ) const
-
- -

Get the Sleep mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
bool IRCarrierAc64::getSwingV (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRCarrierAc64::getTemp (void ) const
-
- -

Get the current temperature from the internal state.

-
Returns
The current temperature in Celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRCarrierAc64::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRCarrierAc64::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRCarrierAc64::send (const uint16_t repeat = kCarrierAc64MinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRCarrierAc64::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRCarrierAc64::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRCarrierAc64::setOffTimer (const uint16_t nr_of_mins)
-
- -

Set the Off Timer time.

-
Parameters
- - -
[in]nr_of_minsNumber of minutes to set the timer to. (< 60 is disable).
-
-
-
Note
The A/C protocol only supports one hour increments.
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRCarrierAc64::setOnTimer (const uint16_t nr_of_mins)
-
- -

Set the On Timer time.

-
Parameters
- - -
[in]nr_of_minsNumber of minutes to set the timer to. (< 60 is disable).
-
-
-
Note
The A/C protocol only supports one hour increments.
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRCarrierAc64::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRCarrierAc64::setRaw (const uint64_t state)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]stateA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRCarrierAc64::setSleep (const bool on)
-
- -

Set the Sleep mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRCarrierAc64::setSwingV (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRCarrierAc64::setTemp (const uint8_t temp)
-
- -

Set the temp in deg C.

-
Parameters
- - -
[in]tempThe desired temperature in Celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - -
void IRCarrierAc64::stateReset ()
-
- -

Reset the internal state to a fixed known good state.

-
Note
The state is powered off.
- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRCarrierAc64::toCommon (void ) const
-
- -

Convert the A/C state to it's common stdAc::state_t equivalent.

-
Returns
A stdAc::state_t state.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRCarrierAc64::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRCarrierAc64::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode to it's common stdAc::opmode_t equivalent.

-
Parameters
- - -
[in]modeA native operation mode to be converted.
-
-
-
Returns
The corresponding common stdAc::opmode_t mode.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRCarrierAc64::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
The current internal state expressed as a human readable String.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRCarrierAc64::validChecksum (const uint64_t state)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]stateThe array to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
CarrierProtocol IRCarrierAc64::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRCarrierAc64::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.map deleted file mode 100644 index 943025a58..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 deleted file mode 100644 index e7fd24a1f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2e4623e224d33c537e2f2b9dce1ec40a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCarrierAc64__coll__graph.png deleted file mode 100644 index 8ef13fbff917c6461472fecacf3a9fad98f73446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6489 zcmaKRby$<}yZ%h1Q5p#eDN&>w0|ZA(hcYBZM#Jb(iP0b({Io#&XgdqsnydnS`aFA#Pof^$~#!&=A6 zr~Z4UZuL*x4}$s9geOG@my%_X1zvd@g$XQf_}rRMis$#BF*))%T}&T2L_`Jg9PKUU z{m__@_6!sUWvOq`^k}h}_X$30F?b6xI-;PVu`D}ac+n4y z`aNnanv<*%W4E{5$M>eHsLA<-#w)5DQc_Z$ha24^#(uWps?eX?bH6?C-xI8ca^q&s z&!_##xp{a5R$OQ2<`PBVx|p%5%i8JXE_SuiYtSbmlx-MODvQzV~?{u#|LiQ zxWO8bnwt6nTo3c%1ElAx%xhybT$qee{AV<)ocl^nmbm90H~3lr5~-!H|7WV+tD6ZH zx8Xzk$haZAvQljBcN7;tKX$?-QMH~0Hum?gfZN6!suwd|i9$g;SlLsO2nGN8dKs+D zA!C*rMv(6TFE1N6_bqaA^5o>?t^NJ`GBT4zb?Pay`TE75ZnG<->gM75zY`OXGYj)! zdwSYNMrg|oRS!2N|JHlC`82AaD4uT(zqS`}UR062I5LxT+X%;Cm}I;T%)66Bf^a9^ zK0X>$H{z5671B-iSB55@e98kC=QD0dHfau;0ih@`s?Fu|+S)1+P3iQvolyUwyZeiP z#bI^$p&C?UY)T4>r<$5~z&hsU=Dp=`y|eT4zSaF8M1}2mTMc6MPkTG-y?Y<% zg)HeB^tCcoehm-D&(E75Y)r!YkZgyw4l`HZzkh%I`t`von2HL?^IIJq9Y>33`_UQ% zJn)eA?Lek#zCmfwT`{}Ih?PO>&J8^@cEQ9}d*PQPxR=bLqUa|VNB%h9(}=Dv70a$K zSAK%nY#kg}?k;xUVhxUpBFHW#`x#CzB#v02DlRV0$jqEwU+0MlE~D zy7>eKgUzDUWd-;eUDuN!^18b5FV)m&KK$wK7U8>`L9$%Gx3jy;f=8$(i)*MPi*J8k zk>-6WFE2l6Jy}&HekC|OJX~?C?PPzo6_geUw!W^eWo0PuLB5vG-=80^y|A*%rbs*Z zPkt{ax%v30h-vsJA|oT&xVW-9BoiJP-TClRRaGPwBjKz7neB*s@cb5QU44D)VmBIY z#3dtR1YzUh$?5mfLa$F=$`0z1dQcf`F1dJkcpM!c7dtH|xkxfW7$Sl&Qf?*Y?RQQN zH?aWk5+S*j-C;QF6egWwGi|JtFz~p4TW_@nQM$Y<@rq12fkwQfc zDgepfg^d>-Za5!gSeSAg0(7Y2ii%7*Bw0|28b*>nUT47s(cj-+R8o?=IGjWG$$nPkYcP+uUN$3RwW@k;MrKMlxXoH?~FCcqs zYj@Xc`CwvVqSv~dT5S+yb!DME(Xi5Pa=G{0H7VD%Y*)<0#G6c2bQ|vCK&+&+6aY9N zAix0>EYT`YsAi6xj>X~Nfpbo7gxBSVu+UHdtAC3P*;V?S9!%7GC4`5Q$Qd{}m6*_f zP}13kpB70nNxD4E8gK+{K&g1h(yPrf28RdDLch*kV6*X3)@@^AruUm1-|LESPz?a{ zy?B?{*x1yORYy0scV|c2*Kgj8`SRtZqoV+qTJldEE(HVvY1cV0fcoW6AY?x!4X_1; zLRrPdN3R!_T=0Z8(HeXIYKypgylQ-@1S%3#Z?cqIBtR@BJ^g!k7POeX8Yrfas3*Pxos|3tHPVWbk))@(om42s@fF>4F|W;{yzYFisu&}>%9zq~}t?lh00%mQ!X)lPM zKYtEz-U6_|-T1N}w1>8EdjHZ=q1`1c*W-u|YOr>lY%jR3%&TUt^?k}(}^HIpZb+A>&|CspEn(S($obQa@? z^EcMuQdbEG2*7ZO0ByaXpulFlqPxf&WMK{0m}1$TL|*`t&F=xzZ+R$>HeDei&Fpt% zvb0AG=m#UY1;sqiwUbHLrlPO2auEuVtmj}&)I!rJZr^4_9tb}cng5(jsuH83%8B7f z{GuWW6%(yDI2Z15;icSPz0>RVR6&fTzlnn$;A=N?t8=VUyO0=;ks zQVTU~YH?__9b}35Yvyr>StmGukiAvY#*g*m_{iq$V!GwgDN_+5*EQ>5;-84Y@s@@- zc}HLRsnYTO&4?3xtL{JU zBD=d7`%s;xsDjC-ijY0G82*nmbZbpG)pwX09p`tG^af z+@CKQ&2YY(9dwy;|LO9LTfa6<{$^k#&}zYBd+(#)t(oNrCeK2CTg61@BI>aRU`GuuO8LbYEPURN{kDQYf6!9->pv4 zckTC(x;n(tcB_8cP?Hd+Qu}m~KQNOx|08dG4!fl*8~zDQaXAmBXnfNzM(+{aybn4u z*q3|uDl>C{;EF}7r;|Fo)2|?wIZX7B%a2r23M1O3<=K`^$5cr52aiWDs*d2pBdIakM}j$Ub&mOaGrt#%Y_lyG!LasP?4e&&o_LdkOZhX4`-N|YTV_!`t({l$ zP7B`V=2O`u=fBdPp0$WV2!;8DsFU50Z0P-z{#3fZ_=nZ8G%IvfKS@(w z*r{A(5-hpZs!OBTHNxuevNSRNY@PEVE|bH1yp6WlfTMV;@a9n$*!xJ%OEKgriCoa{GgIoS{LkVjAxEa^;NQKAi;-<1w<|QXHQoZ<=I^Ada`q6{o&YVXp&~()rQ6DA;{QA!sw}IZt97~5$v#srI zRzAKitMx?XGcE(hFDW(~j~Ox)&@Q1wK@CeEMJvO#j2G#COaiJ8x}HVZK^N=NA={%3 zp47a?wL(J{2HXBC;uY{vESsL1eJAS@xrChXhlYIbOnxyI5hi0BlMM%OIgHCI*^3_A z=p=SO^(8y#B)JfabluuO7C9L7??#JE#3dz5;3JP@PuGNm8AuNf4x|q!oRcLH9YsKP z+y=DL-Q9h9emDc zhGOVt)DH* z!)Qy*ev=iz>N^x!d|G-iQlzUluV0Ujjg^1%hLN70-erA^+Rx8#@8t4AZnVPo?&|Ol zb}lX?5DS1ZntWM9bj0$Ej*Z16CwBpH@K0O(nB(i>UWkgQ-t$U-7+K)-73HZ_c=)m8 zUWiv==rv+gAS|m;OX?Z{8P&IM--4C^7c>P-J!pxCho@<33dX^~p`D9POyq$$9`9Jl zC8}jnT9=O%H6$b?9L=NDNjeLSYB?dFw^cxUS6j}oiZ{qaO%1J*ztJ`&tf(8hLh5sC#RG&`a_!b z*`3qlBe1LJ2+VnZZr8MX{*AeR~gx z3o2S#=h+rQARl-h`W*dnQ&(5NNzU9==dt?-i{-k1KX7__+VD3gWsk6Vf8r?MPL57a zrd?kIfK2@q9ZkW;&hF^Ioq~2AudoH#jsyH-dTp)i?0A=ugrub{)0I{fPhC>@K{FdPZg%$1z|{M@c!9wPF{`3XM|cG$IAHy!O@e<9OhLTh~hvyf-@D zTes=xtftC$4*ye%VaUBW7H|@gt z84J}UNqvF6P3AX}?wDAX0<;ukI)!KO>(6ZqbCo1whM!fGIVa_+$Xqh={2urkprPAC zg3d^-cUhJ5(dbt#yKt#L=)5l>-Xn06-f=r&MA7Whp->l-5@tSye{o*#ue1y{F5YOZ zi%Bj0KB|BwADu&2)9)XiLIj<1>zs;_7g+)EJCAbIuO6eGnXyuCw6mhrVpLTAe`bVm5h{&MXR++)yQTS~JtL3Z zC~Cgs8EFLxY|2)iK-cWLSla z?6;#&q^q>dlW^pAxT>(;=CBmc4v7a3gV(nBpqcljq?KcG{$tdjpj=Q+%iFY?fO{$c zEm_?h%{%}c4SzHmUES<%sxRN~156xwMMbm}30~lZy!>O29dl>oc1uxkhW}3OWZmJE z*CLsmr+hP#T+Hp3I->`eDV&`DE9{nn?|K+b&CI%)g3NEyIPdRhJT$7I0;LA%^E-E6 zP+|}p8yg1%!eXrKece_QG4+a3o%`qY@k-}|H3KDOWk&>JA&?gKwkd$HykXPL*8Adk zNdXQ&Jy^FHD+`&Pehc&7ZdJ@hM@K)kvf>6B1Smy8AV^LQ)?b@2v0f*peI%Seo}BYsiAkw>|;Ou6@=_A7* z@qm&i3hb;9vW`~Tvw#l^r<;v_88u5im^qBw)J!X_F$XViC=dnPb5T!p4f!P{$FeUS z7;10UX61!MM37!wTmawVV{9xH7)sA?0SQ7U<;rJYzaMX66rs=z>;w|5zrR0FLO_MS zdGqGq*}}RVqEJoQc-!H8gQKG(2M~%ol#~WQtlr_+nsF@o)1OU=j#C@OmF zdvW}(%?V6?Sp8Z8WsBrH*q7 zk<2nmU@$fZk(zBxRD*$YhlZvN*mv8zyVrj9^?e2=7SX1Tr6niuGakZ63gRjyL}L^Z zUA}++-qO|vI=WGf%awcV?EXMWBALJbFsh}2)Wfjfl@s)%}f2CJ78WjDRo^p1j{x*xja@+60`3a{_)xX3}j>9lVUnmnq%n z+DIXW<<>fR6=19CGW%4NoGQ}^#=bd4T|o6R%Xre=Nv|pK0&@2lpOvCtVonIOX=_hU zq!`W{1$c;__?b^pM4nz@Ol++A^1guYnLCh<&)>i2fdH$6QN}aYZOVfHSapnyjKHe1 z=uLfQRc;8p4*>yz>jVV5-D0@M?ptp^`TMtHu>|+PoD;Pj+gdBd4zI|3w$9R6$HRP& zEkN=726n?OLP8V39Z2XNLx4MnLQz71t0*p|=Qq#-ES;w2=Ju|x`GfUw$R2Rgnk03G z3Uj)Fu!eA|CF{R8P*WoVf;+z?Vsuo0XJ>~_!pS^v2bA-_h&VYp0mq^YBwe$%qN0L3 zvKT$0N`3KFuzP_`I(@htAe;{xPDHs?GZ72HY-fKhMqQEAUTu zO-xR{AIKyHGC2*{UWaxU=bL_d`kPZT)6E?l|GpoZ zwl(R7`=*Y942q`3GS zKmc_|0L3lVS5$#5E%HP}L|cc4g+)E9g^fM)?WhOIhe}bIApcX?U%x)`Xk`}poVo%m zgr#x+D--bRZQxJ>D)a*63>ZxTfq}PaX%)eT=eO3@*WdSN5H4X;xOjPUdy2)Sq=Z1S z0CL}rZUENz55E=`7COTcpzfXq23*_P*6sdP z;_riZFI7}BKp_MFiJ=~*-spP{lEHx_XAzZl-JBu?jV)WHO41t8E-y}%FHeD^b$Yn@ z8;gy)a_wf3@407%J+3EN!nw+Mi424xoKYg?ng2}_GqYxpc7t+jYTzxUIWP76bECjv zNFpAz&3}ey|99nTkPblH8qXH^h2LxLW3(DCFT8G&G3w_`jEyBV_?(uwZNff%`lR3B zEdi({pHWRLu-ia~Yy%6D6dLCZmDv0h3=Iuk9?U__d - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRCoolixAC Member List
-
-
- -

This is the complete list of members for IRCoolixAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRCoolixACprivate
_irsendIRCoolixACprivate
_savedIRCoolixACprivate
begin(void)IRCoolixAC
calibrate(void)IRCoolixACinline
cleanFlagIRCoolixACprivate
clearSensorTemp(void)IRCoolixAC
convertFan(const stdAc::fanspeed_t speed)IRCoolixACstatic
convertMode(const stdAc::opmode_t mode)IRCoolixACstatic
getClean(void) constIRCoolixAC
getFan(void) constIRCoolixAC
getLed(void) constIRCoolixAC
getMode(void) constIRCoolixAC
getNormalState(void)IRCoolixACprivate
getPower(void) constIRCoolixAC
getRaw(void) constIRCoolixAC
getSensorTemp(void) constIRCoolixAC
getSleep(void) constIRCoolixAC
getSwing(void) constIRCoolixAC
getSwingVStep(void) constIRCoolixAC
getTemp(void) constIRCoolixAC
getTempRaw(void) constIRCoolixACprivate
getTurbo(void) constIRCoolixAC
getZoneFollow(void) constIRCoolixAC
handleSpecialState(const uint32_t data)IRCoolixACprivate
IRCoolixAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRCoolixACexplicit
isSpecialState(void) constIRCoolixACprivate
ledFlagIRCoolixACprivate
off(void)IRCoolixAC
on(void)IRCoolixAC
powerFlagIRCoolixACprivate
recoverSavedState(void)IRCoolixACprivate
savedFanIRCoolixACprivate
send(const uint16_t repeat=kCoolixDefaultRepeat)IRCoolixAC
setClean(void)IRCoolixAC
setFan(const uint8_t speed, const bool modecheck=true)IRCoolixAC
setLed(void)IRCoolixAC
setMode(const uint8_t mode)IRCoolixAC
setPower(const bool on)IRCoolixAC
setRaw(const uint32_t new_code)IRCoolixAC
setSensorTemp(const uint8_t temp)IRCoolixAC
setSensorTempRaw(const uint8_t code)IRCoolixACprivate
setSleep(void)IRCoolixAC
setSwing(void)IRCoolixAC
setSwingVStep(void)IRCoolixAC
setTemp(const uint8_t temp)IRCoolixAC
setTempRaw(const uint8_t code)IRCoolixACprivate
setTurbo(void)IRCoolixAC
setZoneFollow(const bool on)IRCoolixACprivate
sleepFlagIRCoolixACprivate
stateReset(void)IRCoolixAC
swingFlagIRCoolixACprivate
toCommon(const stdAc::state_t *prev=NULL) constIRCoolixAC
toCommonFanSpeed(const uint8_t speed)IRCoolixACstatic
toCommonMode(const uint8_t mode)IRCoolixACstatic
toString(void) constIRCoolixAC
turboFlagIRCoolixACprivate
updateAndSaveState(const uint32_t raw_state)IRCoolixACprivate
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC.html deleted file mode 100644 index 66adf07cf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC.html +++ /dev/null @@ -1,1758 +0,0 @@ - - - - - - - -IRremoteESP8266: IRCoolixAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Coolix A/C messages. - More...

- -

#include <ir_Coolix.h>

-
-Collaboration diagram for IRCoolixAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRCoolixAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kCoolixDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setSensorTemp (const uint8_t temp)
 Set the sensor temperature. More...
 
uint8_t getSensorTemp (void) const
 Get the sensor temperature setting. More...
 
void clearSensorTemp (void)
 Clear the Sensor Temperature setting.. More...
 
void setFan (const uint8_t speed, const bool modecheck=true)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwing (void)
 Toggle the Swing mode of the A/C. More...
 
bool getSwing (void) const
 Get the Swing setting of the A/C. More...
 
void setSwingVStep (void)
 Set the Vertical Swing Step setting of the A/C. More...
 
bool getSwingVStep (void) const
 Get the Vertical Swing Step setting of the A/C. More...
 
void setSleep (void)
 Toggle the Sleep mode of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep setting of the A/C. More...
 
void setTurbo (void)
 Toggle the Turbo mode of the A/C. More...
 
bool getTurbo (void) const
 Get the Turbo setting of the A/C. More...
 
void setLed (void)
 Toggle the Led (light) mode of the A/C. More...
 
bool getLed (void) const
 Get the Led (light) setting of the A/C. More...
 
void setClean (void)
 Toggle the Clean mode of the A/C. More...
 
bool getClean (void) const
 Get the Clean setting of the A/C. More...
 
bool getZoneFollow (void) const
 Get the Zone Follow setting of the A/C. More...
 
uint32_t getRaw (void) const
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint32_t new_code)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
 Convert the A/C state to it's common stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Private Member Functions

void setTempRaw (const uint8_t code)
 Set the raw (native) temperature value. More...
 
uint8_t getTempRaw (void) const
 Get the raw (native) temperature value. More...
 
void setSensorTempRaw (const uint8_t code)
 Set the raw (native) sensor temperature value. More...
 
void setZoneFollow (const bool on)
 Change the Zone Follow setting. More...
 
bool isSpecialState (void) const
 Is the current state is a special state? More...
 
bool handleSpecialState (const uint32_t data)
 Adjust any internal settings based on the type of special state we are supplied. Does nothing if it isn't a special state. More...
 
void updateAndSaveState (const uint32_t raw_state)
 Backup the current internal state as long as it isn't a special state and set the new state. More...
 
void recoverSavedState (void)
 Restore the current internal state from backup as long as it isn't a special state. More...
 
uint32_t getNormalState (void)
 
- - - - - - - - - - - - - - - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
CoolixProtocol _
 The state of the IR remote in IR code form. More...
 
CoolixProtocol _saved
 Copy of the state if we required a special mode. More...
 
bool powerFlag
 
bool turboFlag
 
bool ledFlag
 
bool cleanFlag
 
bool sleepFlag
 
bool swingFlag
 
uint8_t savedFan
 
-

Detailed Description

-

Class for handling detailed Coolix A/C messages.

-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/484
-

Constructor & Destructor Documentation

- -

◆ IRCoolixAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRCoolixAC::IRCoolixAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRCoolixAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRCoolixAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ clearSensorTemp()

- -
-
- - - - - - - - -
void IRCoolixAC::clearSensorTemp (void )
-
- -

Clear the Sensor Temperature setting..

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCoolixAC::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCoolixAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a standard A/C mode into its native mode.

-
Parameters
- - -
[in]modeA stdAc::opmode_t to be converted to it's native equivalent.
-
-
-
Returns
The corresponding native mode.
- -
-
- -

◆ getClean()

- -
-
- - - - - - - - -
bool IRCoolixAC::getClean (void ) const
-
- -

Get the Clean setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRCoolixAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getLed()

- -
-
- - - - - - - - -
bool IRCoolixAC::getLed (void ) const
-
- -

Get the Led (light) setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRCoolixAC::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getNormalState()

- -
-
- - - - - -
- - - - - - - - -
uint32_t IRCoolixAC::getNormalState (void )
-
-private
-
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRCoolixAC::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
-
Note
There is only an "off" state. Everything else is "on".
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint32_t IRCoolixAC::getRaw (void ) const
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A valid code for this protocol based on the current internal state.
- -
-
- -

◆ getSensorTemp()

- -
-
- - - - - - - - -
uint8_t IRCoolixAC::getSensorTemp (void ) const
-
- -

Get the sensor temperature setting.

-
Returns
The current setting for sensor temp. in degrees celsius.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRCoolixAC::getSleep (void ) const
-
- -

Get the Sleep setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwing()

- -
-
- - - - - - - - -
bool IRCoolixAC::getSwing (void ) const
-
- -

Get the Swing setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVStep()

- -
-
- - - - - - - - -
bool IRCoolixAC::getSwingVStep (void ) const
-
- -

Get the Vertical Swing Step setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRCoolixAC::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getTempRaw()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCoolixAC::getTempRaw (void ) const
-
-private
-
- -

Get the raw (native) temperature value.

-
Returns
The native temperature value.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRCoolixAC::getTurbo (void ) const
-
- -

Get the Turbo setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getZoneFollow()

- -
-
- - - - - - - - -
bool IRCoolixAC::getZoneFollow (void ) const
-
- -

Get the Zone Follow setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ handleSpecialState()

- -
-
- - - - - -
- - - - - - - - -
bool IRCoolixAC::handleSpecialState (const uint32_t data)
-
-private
-
- -

Adjust any internal settings based on the type of special state we are supplied. Does nothing if it isn't a special state.

-
Parameters
- - -
[in]dataThe state we need to act upon.
-
-
-
Note
Special state means commands that are not affecting Temperature/Mode/Fan, and they toggle a setting. e.g. Swing Step is not a special state by this definition.
-
Returns
true, if it is a special state. false if it isn't.
- -
-
- -

◆ isSpecialState()

- -
-
- - - - - -
- - - - - - - - -
bool IRCoolixAC::isSpecialState (void ) const
-
-private
-
- -

Is the current state is a special state?

-
Returns
true, if it is. false if it isn't.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRCoolixAC::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRCoolixAC::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ recoverSavedState()

- -
-
- - - - - -
- - - - - - - - -
void IRCoolixAC::recoverSavedState (void )
-
-private
-
- -

Restore the current internal state from backup as long as it isn't a special state.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRCoolixAC::send (const uint16_t repeat = kCoolixDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setClean()

- -
-
- - - - - - - - -
void IRCoolixAC::setClean (void )
-
- -

Toggle the Clean mode of the A/C.

- -
-
- -

◆ setFan()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRCoolixAC::setFan (const uint8_t speed,
const bool modecheck = true 
)
-
- -

Set the speed of the fan.

-
Parameters
- - - -
[in]speedThe desired setting.
[in]modecheckDo we enforce any mode limitations before setting?
-
-
- -
-
- -

◆ setLed()

- -
-
- - - - - - - - -
void IRCoolixAC::setLed (void )
-
- -

Toggle the Led (light) mode of the A/C.

- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRCoolixAC::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRCoolixAC::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRCoolixAC::setRaw (const uint32_t new_code)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSensorTemp()

- -
-
- - - - - - - - -
void IRCoolixAC::setSensorTemp (const uint8_t temp)
-
- -

Set the sensor temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
-
Warning
Do not send messages with a Sensor Temp more frequently than once per minute, otherwise the A/C unit will ignore them.
- -
-
- -

◆ setSensorTempRaw()

- -
-
- - - - - -
- - - - - - - - -
void IRCoolixAC::setSensorTempRaw (const uint8_t code)
-
-private
-
- -

Set the raw (native) sensor temperature value.

-
Note
Bypasses any checks or additional actions.
-
Parameters
- - -
[in]codeThe desired native sensor temperature.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRCoolixAC::setSleep (void )
-
- -

Toggle the Sleep mode of the A/C.

- -
-
- -

◆ setSwing()

- -
-
- - - - - - - - -
void IRCoolixAC::setSwing (void )
-
- -

Toggle the Swing mode of the A/C.

- -
-
- -

◆ setSwingVStep()

- -
-
- - - - - - - - -
void IRCoolixAC::setSwingVStep (void )
-
- -

Set the Vertical Swing Step setting of the A/C.

- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRCoolixAC::setTemp (const uint8_t desired)
-
- -

Set the temperature.

-
Parameters
- - -
[in]desiredThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTempRaw()

- -
-
- - - - - -
- - - - - - - - -
void IRCoolixAC::setTempRaw (const uint8_t code)
-
-private
-
- -

Set the raw (native) temperature value.

-
Note
Bypasses any checks.
-
Parameters
- - -
[in]codeThe desired native temperature.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRCoolixAC::setTurbo (void )
-
- -

Toggle the Turbo mode of the A/C.

- -
-
- -

◆ setZoneFollow()

- -
-
- - - - - -
- - - - - - - - -
void IRCoolixAC::setZoneFollow (const bool on)
-
-private
-
- -

Change the Zone Follow setting.

-
Note
Internal use only.
-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRCoolixAC::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRCoolixAC::toCommon (const stdAc::state_tprev = NULL) const
-
- -

Convert the A/C state to it's common stdAc::state_t equivalent.

-
Parameters
- - -
[in]prevPtr to the previous state if required.
-
-
-
Returns
A stdAc::state_t state.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRCoolixAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRCoolixAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode to it's common stdAc::opmode_t equivalent.

-
Parameters
- - -
[in]modeA native operation mode to be converted.
-
-
-
Returns
The corresponding common stdAc::opmode_t mode.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRCoolixAC::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
The current internal state expressed as a human readable String.
- -
-
- -

◆ updateAndSaveState()

- -
-
- - - - - -
- - - - - - - - -
void IRCoolixAC::updateAndSaveState (const uint32_t raw_state)
-
-private
-
- -

Backup the current internal state as long as it isn't a special state and set the new state.

-
Note
: Must be called before every special state to make sure the internal state is safe.
-
Parameters
- - -
[in]raw_stateA valid raw state/code for this protocol.
-
-
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
CoolixProtocol IRCoolixAC::_
-
-private
-
- -

The state of the IR remote in IR code form.

- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRCoolixAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _saved

- -
-
- - - - - -
- - - - -
CoolixProtocol IRCoolixAC::_saved
-
-private
-
- -

Copy of the state if we required a special mode.

- -
-
- -

◆ cleanFlag

- -
-
- - - - - -
- - - - -
bool IRCoolixAC::cleanFlag
-
-private
-
- -
-
- -

◆ ledFlag

- -
-
- - - - - -
- - - - -
bool IRCoolixAC::ledFlag
-
-private
-
- -
-
- -

◆ powerFlag

- -
-
- - - - - -
- - - - -
bool IRCoolixAC::powerFlag
-
-private
-
- -
-
- -

◆ savedFan

- -
-
- - - - - -
- - - - -
uint8_t IRCoolixAC::savedFan
-
-private
-
- -
-
- -

◆ sleepFlag

- -
-
- - - - - -
- - - - -
bool IRCoolixAC::sleepFlag
-
-private
-
- -
-
- -

◆ swingFlag

- -
-
- - - - - -
- - - - -
bool IRCoolixAC::swingFlag
-
-private
-
- -
-
- -

◆ turboFlag

- -
-
- - - - - -
- - - - -
bool IRCoolixAC::turboFlag
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.map deleted file mode 100644 index 785b594cf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 deleted file mode 100644 index c4c2ca857..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9a329209544c512673f4745de57d340e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoolixAC__coll__graph.png deleted file mode 100644 index b4ff74a4de727e16708a7a26c3aae65217413c75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6023 zcmZ8l1yodByFN7HfRvy}ji5+(4&9+NA|Z{4Lw6(HGYA6GB_iG3-GU(9AR#ftkW%-2 z-&*%y|Gj6{%-J(%?Y(Ee``PdFyibI>ssbSa6#)PMgi4CCn&5p7e8=Epf}chw=q~Vv zYo?+g3*7zl%4*4v2LMV@C0QwLkF@=CxFK2JQlC}4G9O zda=i!0>z(GUKlk-Uh1Obi62VNvK01(OFWpr;}1&7{fea6%O_Y{%>8aC{SliB<9A}P zWaU-!jJP!c;{xU^8`?MF#){`Eb=LTuo0Yp2F{BH?mWI4&qyPf0F{&AYB_(0f_}Kq6 z#Zq}vf1eYICLikqS4;c?N<8}NO-YE&GJMr+yK7PuA{7B)JpcE+lV zi{s$nTwY%45A1Y?-1iYTX4R7taa`>TDJ*1}#4my8ptnXJBxH0*H@%wM97#=L)640B zK!xxFT_W3^74QQ-x&;&CzXuy*Ot7h`si*jwy1MyrXi#`rnZ2fFT&WHuJb+v(b5Cf2 zK7jv9*?&*S9kuW(Re)K70Y8vFJR%|@EUYh?*Q%OD&He=&n_;<0Kurz5(SxhA{dna( ztl_GxER)ln$&`r~yO{$Ps;L6|XZ!QMb3LD#wN%qZCjBGkw!fpQRyN3J0Qb|z}%=^qnOH1qZ>#4Clnlk?Y$(8+m8Y(Il za)PjTZ9xH3B5*RY_|x5K2K?jYyIV@+H9GUo#nI7}>(NBMn*Yf*39XH-?P9%SZhU-v zNQj(+gM*wL4sE8W=W*%VCQK}>k>TOq=*Q0My@aAhT3Te()Hd(l3HV)KL`Oqx3nrgF z3N3ltB*4P5(;k48tAG^X=1vxJT+0yiKFn6mR=?=Lqbq;IW?(R%z^W_2$G6g^NvSJ0 ztEa20J3lvU*WHuYY)SHxSQsu+ZSVIh_3RIT~y% zqU>fXEg#T{UvK9kiLsAPPbaeq8yY;pIB{@rBqk=pr;16UdRo||jen-lJR=?WnX5p8 zoy=oN0A$tId+bh?>lC^l8r5uZ*0WWtEjqdovZLrlv0<*NmSr zG5MoM1Z!$)NJvOnUl+I2bsILi6ny%mVQp>w`ZYy%Irsn2_`FWV2U|pHqHv1O>@E@c< zUF5O)LERkGF2P#G!^hX`v_U|-<7$jc{v|ni)ml_ctnCT~ z6GhyOUikP~TQdVIBdLNO*C6Tv;FIF7+|HgTN=~EZ`aX*m3?Mc!@f%di$cPrms;sQs z)wQ&=1U?=gJNb|u2o@F6jq#TID zmoFjl1H~mJJzT>R6TDEUR22l$_1W!LEaad=Sy|ajtGcw3f2_u?#trp?oIpley7gl1 zelwY)qodNRSBtf_^WY)K$;kns5m|%>l+W5+@1-i|2?z?JJw!$6D566Axda4o0mVE` z@yt;ZuFsBObOMSdMFa!{03bke?6e3x5vu8}IY3erw z_C)#y2KNaFw9^Zl8H!Ea$p`6h)su#2XZ5nxS4K>c5&Y!Yg72Ldes*@6ftWV-zj5{U z_EuH>fuMmYtEj+4M92w3v{~ddK6kAKhla|_%TrKNsxZb~ogajSgbY~lxIS)dXt=z( zvY#oJVkC8JSeTi4!(KQ^fggCiYkVgHp6un@v%0uA(g@k(wVtSSnESW<{HDgnA7IkC z`FqOG&#$AS!_CbtB_(xscDA!dbru&JtFEJyke23iwl@o=!BguC=`PgX{(h#I_w%G7 ze#UhNA#jNr8XDlivH9>p#BFZ|Ob358f|s&3Ob@rW-$%$g9seHq_z}2&KPoGWUPWc7 zySw}3#0A6?AnD|EJX2vF6d3r1?X`=Gi-iSay6SYSDVQbT@S@aI0|$rl#vz<^UN8sG z*V$7(e0cfyFBn5`u7!mKYWvfP@$r|hUWti{Hn+6Q+PFD6@!XQR9@!0yjEFg`v|pmP z9z%MElX>gxmuYEf5ynerq^?c#U>d4{Pe;eZ9I?V(2UIh~#jMA_3OjGsH#Umi+USnU-+ml(wC-hhocig^lioID0A4)uiAjZVl|Njjs0M^M|gd1%bxuYNGw!PUi zb#ii&txdm`{E>*jR=bD-{TqErL_{<<_{yNn<^k#c1GX2nJSppvnP<qg1@9R_JGVx?=V%(iI9@y|mO-uh($~Se8-Qq8O->0hTjY&*Qe8BhN z7Jo7FC+CilQe}?OkmbzU$x))6d}CrRj*CA^kzY2t`2C~M#ibF}M*8s@>Xz)9+MBsh zO-~pAj75v6ZDr+eFChTHnTW;&=xR@I(Lo|6xAhUUV^9r4B!{iN#!C8=$#CL6#}(q7 zM--~^PK;Cv!b#CkhamV20bdvG9#3nF@@ z6?wPu z!_5_V@kBx*Uywfn01QC=<0l;3!MRW76#7u|V;A`w^G?lF4Ya(2^OCp(laIlad^WUD z*8{ircLjrn^6}N12bjbJT(tt_sl#8B)fK{|Id2ircoDZxr{HE!)C#ARL*Bb!XVZg2 z16ZUr2wCQcWGtGj_L(>V+ottnRx&HUKa3=`ZHbuXAHC z0KRzIO~g2Z%bn~4M6sSx+9a1L$fn+$}P$J zqMF8RwuLs%>969P;W^aSjgM`|jr9u8japvMyDE-tZJl@=zbrworNwsetYCj(WdJ8q zT9=cghPn0h#|iwwnwrqEw-|AH3x{GK3seggnflZdhA7XWt=HyAfR&0kIey8EXI;3Y z0H9pT*FR65D^udaZb1yKrXhU!otC6_qi(6wiWvapw&YM!4ABb2mNs@=^j@>i*(_s> zr8iLpN&P7s@`=^=RBXY14$#2_er!zqB|VwYC;xSPW5u~C+DRd{eJcKAzPcm&kdvdo=Z7)x(tLwMDoPJ(%JR(^(*%~F#rU$@Y=>k z-nFTxr*MLD52d(Po!6h(Qq95y>( z;kv9sU7;Uq(h!}P*KZWcZ*%xDq>GA*YTM=SdLQ!0{_gg?4G$N0Ewih$ zGcYi)-q21~^+7j~<4)`o7(1 zGKnws-EZu89rgg8S$+1Ua(+?~=D0nUou`ttmI*3qQZlk2(?^jxs;a7>?&|$jW;A!8 zqx{bpBwgjptp%dI=XwgM(qPh(fA#9s0dnK?%lJ@{(K*l7P!i{8GH>7f{8cVe-0S%F zJ=&LQYUjttW?YXv1h)?kkbPxuo8DPkK8qi)TWYqpv*Y-r$OXANoi=VdOH1N3{xLLU z&h==JW;H5J8g_fn@$J=sJ6+pg@vgA7+KFGye87Y^Y${37@5HZv2)?IvOAzw(*|VPE z;g@U_(^FHL1;2)ehc`Fhk;{>hk@@=gd>)vwag&$t4Wsj`e>XxU`bIf!nP9gM9|FKTt!)VZf*|L^p++jW8>qRMn(ww ze$KY*@u?}dbJSa+u-s~fP}7Qv3JeU4=g*&mazqQ4lEd&3HTCu1Q+UN2!#8j0!HTA~ zRshm*)fFObs;4*mt3WH8MoIc$e@1)uxepX&S<91bv)t;7LZNzldowaJl9Q7? zeC}>}(96eG6R!Qw}tqbTb1*)Xh-L7vh_ZU}$L9>I$8qp`oUhR-NtqYhB%~)zu2e zb$K;4wFP1u0fSQ}QCj=)uSx&_&Y}QPJO-dypiNKA^$23QFfw9GKbMxC&Rr?ds74B_ zl0`1707hzrZ2nl1NquIa` zMv?LSVEMuQ`|$%7J3Nlg&gk>=<#N*?MaDI!1`s3q+KS5kCJN^b4ElwZWxTsJU#ui0 zKY}Hjx_WG0o~4;&BFD&c{7BrwhW20ad5fS0xiBr|(<$VSKAFHdYr>0(m zl6hriB|IFTklA_Nqq$k0okEHZI*=NCd3CvvR;R+D%Ek3_NaD>%*A#0eIUd~;+dD)- zY0Wlii>Sxjqrcs%KLf_q~-#meXN9Upa0*4!c#m@TXj0>~{RzsjZXMOa68kE;%=5D!50NppKWkj}IIg zncKH#QP4uWoo4JaBBRFTZs%zpvtfb6_JXmFVI+Kwtjo{0;C6(!!Y-kIer*0oRKef* z+*52+QNRY;K!X949_WeuOG-xCPG^m zljS(Y=xf9`U(|autS0MMkR(%w2J*beyL)X(RWT}pxj$xbGT-k7tePn-24+8E>H8kq zmBUGe|1aO&mHn4y<)+?$0Z){WV50u@wz}>GF28>z5B2_x`qL4KcFs28H@vaUgT*j9 zqhCt|G_zKrxitGN$>!1}C_jT|@TpewB~h~Fo7xXHUuv?MeV!DJLKI+_fR8{0H)KJg za6^HW(Uqo7d`sjaxdqMbW8WwN(SnVSy!SJpHoD0#JyR;GJ=U%^7dEKpGv68JO#fu6 zUxsCQ@j7+hP^Hg(#Q&yJ6Na=hUzsjrq4KnKCVguvxM&|*21e>O6Q(S?ujW7A*=&W3 z`%o{@cC+luv8n3Ci-(Kx7$tbm*tl4*GD~=bkIqD#|AB!%_I|F6H@_0EEKS!Uf>@fn z7zW4xNxv|7Z*_IGF;VjUk4%X&_`M+fRS`J0R4kNF-S^JFM&V&jW<^@DhVf|m2Iv> zecGR|a~4V?d?K)td9d8}0LYs7VG|q2WSD5FS|5 zgIuMdu3iqG<{;QOXBinBBzW*3|L6PrlpOzBBfp9Xa+0HYs+U{UkF8l)FIJUl?s z+?)YupPOrh|4m6r0W}I}#2)tprHnqhLn`kV`Cr# zaG7-<#BWSaPbYo;+}+oQ1xU-tfE~myf0K!%mr6avj?H!L9;M;s<;{PUdN!dZvAUQS z5`qI{m6oO^e+iL>CMefbRdor@+6VxWjHCro@Fnl}@88?nmNYdrB_$>Cd`VAdCnvZ& zPHG!Y;fHqw;+&qIHZ(M(=tu#=d*SA$rWLmH0s)c^AT$6VtgE7`N-JZgpwp}Zto+q4 zu8O8G0|3AT#41OrY5t?o{l%u~(NQ&eV#6l4SC5B({1A8D(MH`lue4({w@qacVD?*p zd8DA=&v>4SmZs)!C*eSPaC=(4PIr(JxBXja5P8TxP|6Gr4OP|EogW?wc^sPf`nIUQ z5cRnzMq$p<*Bu!)0?oitFy_p%He%ZnI!!W5Wi7gm1WgGxGD9l7=>%8mP1h zoffz8zE&~-CO>oJc#aDH@Fh>@Bs-&&+sC z7V3chUPWy!A||HCzm#K%9Z4sls-hBwL<;ioq=0T^rR5L^7tmGYFmByjU(Zd6lh5_^ z^aQON>(@BYH8i5h{U8*J?rjGh7sK4qIEMwC2I@ulf4t`Zn9lz;Na(UXj@Cj-pAmmr zRcDu_#+|OgmX@hr&wGn+rO@wyoAJLE^?$lu( - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRCoronaAc Member List
-
-
- -

This is the complete list of members for IRCoronaAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRCoronaAcprivate
_getTimer(const uint8_t section) constIRCoronaAcprivate
_irsendIRCoronaAcprivate
_setTimer(const uint8_t section, const uint16_t nr_of_mins)IRCoronaAcprivate
begin()IRCoronaAc
calibrate(void)IRCoronaAcinline
checksum(uint8_t *data)IRCoronaAcprivatestatic
convertFan(const stdAc::fanspeed_t speed)IRCoronaAcstatic
convertMode(const stdAc::opmode_t mode)IRCoronaAcstatic
getEcono(void) constIRCoronaAc
getFan(void) constIRCoronaAc
getMode(void) constIRCoronaAc
getOffTimer(void) constIRCoronaAc
getOnTimer(void) constIRCoronaAc
getPower(void) constIRCoronaAc
getPowerButton(void) constIRCoronaAc
getRaw()IRCoronaAc
getSectionByte(const uint8_t section)IRCoronaAcprivatestatic
getSwingVToggle(void) constIRCoronaAc
getTemp(void) constIRCoronaAc
IRCoronaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRCoronaAcexplicit
off(void)IRCoronaAc
on(void)IRCoronaAc
send(const uint16_t repeat=kNoRepeat)IRCoronaAc
setEcono(const bool on)IRCoronaAc
setFan(const uint8_t speed)IRCoronaAc
setMode(const uint8_t mode)IRCoronaAc
setOffTimer(const uint16_t nr_of_mins)IRCoronaAc
setOnTimer(const uint16_t nr_of_mins)IRCoronaAc
setPower(const bool on)IRCoronaAc
setPowerButton(const bool on)IRCoronaAcprivate
setRaw(const uint8_t new_code[], const uint16_t length=kCoronaAcStateLength)IRCoronaAc
setSwingVToggle(const bool on)IRCoronaAc
setTemp(const uint8_t temp)IRCoronaAc
stateReset()IRCoronaAc
toCommon(void) constIRCoronaAc
toCommonFanSpeed(const uint8_t speed)IRCoronaAcstatic
toCommonMode(const uint8_t mode)IRCoronaAcstatic
toString(void) constIRCoronaAc
validSection(const uint8_t state[], const uint16_t pos, const uint8_t section)IRCoronaAcstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc.html deleted file mode 100644 index 2709a40e6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc.html +++ /dev/null @@ -1,1347 +0,0 @@ - - - - - - - -IRremoteESP8266: IRCoronaAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Corona A/C messages. - More...

- -

#include <ir_Corona.h>

-
-Collaboration diagram for IRCoronaAc:
-
-
Collaboration graph
- - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRCoronaAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor for handling detailed Corona A/C messages. More...
 
void stateReset ()
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kNoRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin ()
 Set up hardware to be able to send a message. More...
 
void setPower (const bool on)
 Change the power setting. (in practice Standby, remote power) More...
 
bool getPower (void) const
 Get the current power setting. (in practice Standby, remote power) More...
 
bool getPowerButton (void) const
 Get the value of the current power button setting. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setTemp (const uint8_t temp)
 Set the temp in deg C. More...
 
uint8_t getTemp (void) const
 Get the current temperature from the internal state. More...
 
void setSwingVToggle (const bool on)
 Set the Vertical Swing toggle setting. More...
 
bool getSwingVToggle (void) const
 Get the Vertical Swing toggle setting. More...
 
void setFan (const uint8_t speed)
 Set the operating speed of the A/C Fan. More...
 
uint8_t getFan (void) const
 Get the operating speed of the A/C Fan. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setEcono (const bool on)
 Change the powersave setting. More...
 
bool getEcono (void) const
 Get the value of the current powersave setting. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set the On Timer time. More...
 
uint16_t getOnTimer (void) const
 Get the current On Timer time. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set the Off Timer time. More...
 
uint16_t getOffTimer (void) const
 Get the current Off Timer time. More...
 
uint8_t * getRaw ()
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kCoronaAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the A/C state to it's common stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validSection (const uint8_t state[], const uint16_t pos, const uint8_t section)
 Check that a CoronaAc Section part is valid with section byte and inverted. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a standard A/C Fan speed into its native fan speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed to it's common equivalent. More...
 
- - - - - - - - - - -

-Private Member Functions

void setPowerButton (const bool on)
 Change the power button setting. More...
 
void _setTimer (const uint8_t section, const uint16_t nr_of_mins)
 Set the Timer time. More...
 
uint16_t _getTimer (const uint8_t section) const
 Get the current Timer time. More...
 
- - - - - - - -

-Static Private Member Functions

static uint8_t getSectionByte (const uint8_t section)
 Get the byte that identifies the section. More...
 
static void checksum (uint8_t *data)
 Calculate and set the check values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
CoronaProtocol _
 
-

Detailed Description

-

Class for handling detailed Corona A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRCoronaAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRCoronaAc::IRCoronaAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor for handling detailed Corona A/C messages.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ _getTimer()

- -
-
- - - - - -
- - - - - - - - -
uint16_t IRCoronaAc::_getTimer (const uint8_t section) const
-
-private
-
- -

Get the current Timer time.

-
Returns
The number of minutes it is set for. 0 means it's off.
-
Note
The A/C protocol supports 2 second increments
- -
-
- -

◆ _setTimer()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void IRCoronaAc::_setTimer (const uint8_t section,
const uint16_t nr_of_mins 
)
-
-private
-
- -

Set the Timer time.

-
Parameters
- - - -
[in]sectionindex of section, used for offset.
[in]nr_of_minsNumber of minutes to set the timer to. (non in range value is disable). Valid is from 1 minute to 12 hours
-
-
- -
-
- -

◆ begin()

- -
-
- - - - - - - -
void IRCoronaAc::begin ()
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRCoronaAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRCoronaAc::checksum (uint8_t * data)
-
-staticprivate
-
- -

Calculate and set the check values for the internal state.

-
Parameters
- - -
[in,out]dataThe array to be modified
-
-
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCoronaAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a standard A/C Fan speed into its native fan speed.

-
Parameters
- - -
[in]speedThe desired stdAc::fanspeed_t fan speed
-
-
-
Returns
The given fan speed in native format
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCoronaAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a standard A/C mode into its native mode.

-
Parameters
- - -
[in]modeA stdAc::opmode_t mode to be converted to it's native equivalent
-
-
-
Returns
The corresponding native mode.
- -
-
- -

◆ getEcono()

- -
-
- - - - - - - - -
bool IRCoronaAc::getEcono (void ) const
-
- -

Get the value of the current powersave setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRCoronaAc::getFan (void ) const
-
- -

Get the operating speed of the A/C Fan.

-
Returns
The current operating fan speed setting
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRCoronaAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IRCoronaAc::getOffTimer (void ) const
-
- -

Get the current Off Timer time.

-
Returns
The number of minutes it is set for. 0 means it's off.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRCoronaAc::getOnTimer (void ) const
-
- -

Get the current On Timer time.

-
Returns
The number of minutes it is set for. 0 means it's off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRCoronaAc::getPower (void ) const
-
- -

Get the current power setting. (in practice Standby, remote power)

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerButton()

- -
-
- - - - - - - - -
bool IRCoronaAc::getPowerButton (void ) const
-
- -

Get the value of the current power button setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - -
uint8_t * IRCoronaAc::getRaw ()
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A Ptr to a valid code for this protocol based on the current internal state.
-
Note
To get stable AC state, if no timers, send once without PowerButton set, and once with
- -
-
- -

◆ getSectionByte()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRCoronaAc::getSectionByte (const uint8_t section)
-
-staticprivate
-
- -

Get the byte that identifies the section.

-
Parameters
- - -
[in]sectionIndex of the section 0-2, 3 and above is used as the special case for short message
-
-
-
Returns
The byte used for the section
- -
-
- -

◆ getSwingVToggle()

- -
-
- - - - - - - - -
bool IRCoronaAc::getSwingVToggle (void ) const
-
- -

Get the Vertical Swing toggle setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRCoronaAc::getTemp (void ) const
-
- -

Get the current temperature from the internal state.

-
Returns
The current temperature in Celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRCoronaAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRCoronaAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRCoronaAc::send (const uint16_t repeat = kNoRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setEcono()

- -
-
- - - - - - - - -
void IRCoronaAc::setEcono (const bool on)
-
- -

Change the powersave setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRCoronaAc::setFan (const uint8_t speed)
-
- -

Set the operating speed of the A/C Fan.

-
Parameters
- - -
[in]speedThe desired fan speed
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRCoronaAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRCoronaAc::setOffTimer (const uint16_t nr_of_mins)
-
- -

Set the Off Timer time.

-
Parameters
- - -
[in]nr_of_minsNumber of minutes to set the timer to. (0 or kCoronaAcTimerOff is disable).
-
-
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRCoronaAc::setOnTimer (const uint16_t nr_of_mins)
-
- -

Set the On Timer time.

-
Parameters
- - -
[in]nr_of_minsNumber of minutes to set the timer to. (0 or kCoronaAcTimerOff is disable).
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRCoronaAc::setPower (const bool on)
-
- -

Change the power setting. (in practice Standby, remote power)

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
If changed, setPowerButton is also needed, unless timer is or was active
- -
-
- -

◆ setPowerButton()

- -
-
- - - - - -
- - - - - - - - -
void IRCoronaAc::setPowerButton (const bool on)
-
-private
-
- -

Change the power button setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
this sets that the AC should set power, use setPower to define if the AC should end up as on or off When no timer is active, the below is a truth table With AC On, a command with setPower and setPowerButton gives nothing With AC On, a command with setPower but not setPowerButton is ok With AC Off, a command with setPower but not setPowerButton gives nothing With AC Off, a command with setPower and setPowerButton is ok
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRCoronaAc::setRaw (const uint8_t new_code[],
const uint16_t length = kCoronaAcStateLength 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid state for this protocol.
[in]lengthof the new_code array.
-
-
- -
-
- -

◆ setSwingVToggle()

- -
-
- - - - - - - - -
void IRCoronaAc::setSwingVToggle (const bool on)
-
- -

Set the Vertical Swing toggle setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
This is a button press, and not a state after sending it once you should turn it off
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRCoronaAc::setTemp (const uint8_t temp)
-
- -

Set the temp in deg C.

-
Parameters
- - -
[in]tempThe desired temperature in Celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - -
void IRCoronaAc::stateReset ()
-
- -

Reset the internal state to a fixed known good state.

-
Note
The state is powered off.
- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRCoronaAc::toCommon (void ) const
-
- -

Convert the A/C state to it's common stdAc::state_t equivalent.

-
Returns
A stdAc::state_t state.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRCoronaAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed to it's common equivalent.

-
Parameters
- - -
[in]speedThe desired native fan speed
-
-
-
Returns
The given fan speed in stdAc::fanspeed_t format
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRCoronaAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode to it's common stdAc::opmode_t equivalent.

-
Parameters
- - -
[in]modeA native operation mode to be converted.
-
-
-
Returns
The corresponding common stdAc::opmode_t mode.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRCoronaAc::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
The current internal state expressed as a human readable String.
- -
-
- -

◆ validSection()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
bool IRCoronaAc::validSection (const uint8_t state[],
const uint16_t pos,
const uint8_t section 
)
-
-static
-
- -

Check that a CoronaAc Section part is valid with section byte and inverted.

-
Parameters
- - - - -
[in]stateAn array of bytes containing the section
[in]posWhere to start in the state array
[in]sectionWhich section to work with Used to get the section byte, and is validated against pos
-
-
-
Returns
true if section is valid, otherwise false
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
CoronaProtocol IRCoronaAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRCoronaAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.map deleted file mode 100644 index 168276594..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 deleted file mode 100644 index fb97bda85..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -31282e6b641cb194a9f40029c86faf02 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRCoronaAc__coll__graph.png deleted file mode 100644 index 908f934cc6229099fa8f7f23941d8c3582bebda1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7060 zcmZu$1zgi@yGEsya7s&ufV3irpdh1bAl-=4ppv6Q7@>5$OhBX=APf;0Atgu*1f(TL zkC93@=XuX}z7ya1w%zPE7Ej#QbKlo>{om@qRH&}qx<*7qM5U&xs0*HPAbycw27ebn z=Cpw)(&ri~ibNNG-?JN0$wWlVYHEt|`aT~vrX9^`@W&5+`?peCKUID5R8{eNnNFh0 zPeWSvvJj3?{z1LsYSVZUdEp7udIzOX@SG~YQ{!s1!M6!Rd6MeOWtX2LCj`gu{jxyBDa$`#_u_nOz+F!$u^AgPfR1_->I1Q3#v7^rgUm29vHu z2)wJO=VZG_v=|LVW=8qx;(gn1modKl#;7G-2L`BQxWXI^@7Fek5 zHzumpv&u?KV`5@#DvVtuWdsCDFqqU2n{#u2&QG@b(yg&%0l(j5Wn~o< zEY-R#+!Gha5-8|}o{(EJcFehAUgP2xq~sxVbado7a_5J6{!Ch0S``%)Fc@rfbQFA$ zUs(7yD!P6C*Dqu0$QLhO?2MYdmH^9^B_(WZXh9G)H3#3q$WBf@Qbr$s_M#x@zZD<^ z9RB8n@{5XU6Dlk1daqGZ(!N!^{HCS9Ulc6u?!)w?2t&-NIgD@QwcVtF4QA0A%bl6&jXqD>sAv5^r@1OjS} zEa2heQ&Ch*kfR81U0GSFc+q)_iAgI<_H3%ogIGT0ufI4Eid;7yDvKb^OiZSmgD=J_ z?a4XW;>TcbB*o!XvPK%iWSMJIZ;wzd%w5iHb^0aEaFV|T8jpIEHg zU)C;?8K>WV{GjAi4EiPQzh8<%@g-xwiwTK{!1!sCUa+vT9&AqcEc|hDays8D4;D80 z!XqQ|H9sE_aIH;@vW=3G@)k3*#(&}^hp~x?l8TCl)Q5}* zucc*V#2I7K)6@GVQM0qps3W|E%a<>|e*Fpw3Aw?o?3ot!u8r2z%*>6Y27{55 zlgC$U(^xz=z&!%}ecTpS(i0#D!$ z4n_I`UheMKu3a;&b6;BMjBkJb2S9XaXy^u%TREmS_#)`w`@uh^ncUnQ41@K7^BE8j zu)e;|#m!w-Ru&c(b_06n&K*tOq3P+s)#2i}xVX-Eb|Yyry2wN+mcEaV{r~=8X{qF^ zDMosFWtg|8=jlQ7MWg@0D+UGzfaox?>ue9*Z8oRs$aBC9;@Rb7IXFUk?aBev+uzag z^74}BB=c!E{cfe$!S}O^+x^It@jg90g+RgfHU%7gNlQzMkMDoB$|4pMvSm{e($GyY zI-;{;JKc(*`N@#~??UeZHeYJwcG0DP7q#r5mKBT0OSqQ`caD0(s7Absct9QM#QQY| z5hrx5IaGy5?v>iavv5b;9SPqJ8yum=zw`WA?X97X9_c@Ep|p>q8mXqd*041!!75xk zJ4T8Sn^`g~ab^-yMWKCDr$f9U$VTWT2YyO0!OBFcyPg`vzT6_Q zupz#QeQz#lm+@9bZ6@erjHZ#0OxVpisc&D4+OwuOGwbuDD%r%J7~|E5OM-?6d7Mxs z`SPKjt8uNn(hZY0cp@$t1{j#hG0RJPDJnRc1-c2Y!so9eZ#3Lj<;&K0Q-0hA(K{Z- zeH(!$z*xV1)sOD+Yp}_cs$IL=3ot!4yG0y~pep`;Z1>mf}Xng2g#qmrnd%GQb&svr89=~{F>`@1iF`^fsw z+)*Ozr0ZKxVA(f8THe2ZPbX;T;GXk&gLs#OFic?;d?tbHss8-={X>uC>95|{x4pf+ zZfDIF&cNlG&Y{Cl{dpAITXno59g!VgAV6DJoG3nEuEU0LYvnOYTWI1+?0LwMDOFp zjHlbnocXySly+=P%&V!|fr*K9B$9!hT^okV&vVvp=LeINZ#PB8>_3khxF znsL6A2CNo;(GSu5s$7#5LHZx>60|ZTeSLk)%FL47p$!ZSFc?gx$~EH4U-AUg#KUD}>XR~)3X~yo&nTkNI0j)#%euz((>85Eh#Ap9ECJZ-rS;pOk8Eb z3lgwK6~ak231cN5^S&&$_^h9Lg<|mPzlq|o?ydV)ei)7S>MmY;5T6GmR6)J=|RgFQs_uTka79 zN=2lR7WPc0diOTL1)Fr+>4TZNdiP*~#)y# zKGXQMy4qmJmfw-XNCmzNg+bXjrnL$B2oVp*d0=3GF(PrgNk`6Ke1BN4qM_jtKYv$ux6}OhxA?wHJ)>$TMacJwYG)&~`Oy(R zE1vm5-_%sV_99lsdz0sS;{Kq*Jx)&R{q^zG)KvSv4}{mBu-Vxhlx>WZq{tpEP0jV7 zs0r|Mprr!x1K=tkg7z2x@v&reMzs?8Ei4D)iK(hupRBpwCMGH>iqNsPwhjn5#U}GP zJ3GsrtXG1Ak_;MXuFoS&I2`kYgHbLh0JNc8i{3vAo!%Q022Y>fprfk}IC6K71@z&4 zdOAHFT|q&?fDfujLhD~hL)E0N1Ax&*jPAiHU&vFUrcdvn8E5Nnqz(!O5XvVsf;#t#(`J z`26|vIsMeoeEt2lb;tLE%IRmvH2S-8M(n7?IU|5^qA=e3fpv@gNy<#Q9< zyv@WU#I7^dNm`$(QCjPd<=RAX5=Fcv-t7X(`S0fJQbI3Pbcr8^rK2*o|r`FL|X1Zk)NAxB=Eky5_k80GQ!`e%7K z6~&~!DUZ5K49gCl*`0TvCmh{6VGx?4AJ;X$$vS&4_c!$Aw+H<)Jnl;T7tv3Wkrl;7 z(U(&S_2Q!XA{EI!7xdngWu#3LH~tdiH`qfi`a#t^e97u)w)(nSLu9<)M|{e?)}HlF z2Z|s%g*oEH9u`h&A?3@w=NTmL#Fvp*ooGmH~FMo}O2dPEB0L&*H=+#X7`D3l9rL z<7jA*gn;x2K{ArZiN!@s3F$o^=L@veZq9wM-=ML|Lx1b#Z(-<5PVc2jO_$P~%&psJip zpK$em^fW(moZ(-c%z*4PSqe-&6R0R zOey%fz$KE20=?k-$Qp6hn7#eqX#y+N_G9d^P(uGx?X6%dH80L8QbPU{voIlUOjqlS zYPm=xGm$F3g{t&ZX(?6nmmEeU=S8_i%n$3c1Ld*NzGu=CPDF2L#%R>PUv_MHAY#`x zSLDy`;E7fh?&7t*uau3uNs@b7*m8y*?QvnYwt1S`MAQKhwwR@iRd$rc-r$48!a8aaZ*(789YRpU9@Tn=7e_ttt-{0Ah;N|w4 z)5z?>S>ucGS;ud6Tr`4L5LE=(=9(m>cBZ|ZWDAb;FvWw%Uv&XVF@6B#b#}c70^+x; zuy>aHm$;ng>JIGC^IXsY3iOZZq6y}3mG`{Li+eh6y%?>;;IM>A{+J*8rS!T6pRld` z{SgvO=BoZll~?Vjw5I6|hZP5F>8r%J_5m8x{nsKtoFCP!S2VEtb*_*IYv5gtDwT6~ zpE_MM30T?*pH=3m);Mv?L^0VHP3-QR(yJhKnBlmFd7-st;V)dryhy8+~ z@7*mPdr>ERg6*MfqGLZp{5u7P3?G-_*S0p=B%YiMzJ;V$#n^7xm?jA2mW0g598dZy z$ucWbF<-H=WQLli!6Gg#H_lYt|2lWHrIl`Vyo1Yd$NW_r}C4^z9Wr?>Fq78qBBb-++dX3K<$y7NH54Ivh z%a!cl$~#RgR|bYDf5G<^zAB0!=UpS2V&DAD$REpOi%zTAJ7=E5y~Yfrllt&A8GXcZ z5V^eV^&2`etZJw*zM+Zn#SYk;Tg^FUf9yT{#m$|ew^`Nr+K4jJX7z(=j86Ac zySlpSJn#a_vcB7k-`~<)XM2>OUH}Xo4}2dL1;tw9)o(u^y3K$0#s${c_M{qF`i3W6 z-o3Pe$&6+Y?d$HA4n98(C82}K}1J4+#!CJ7<>Y*6x$;o9b;ogcJ?g-VSMN_P+O0D ze$NtyP;HUdc9@fJ_SBxijZp zx3~-R5BL^-d0FzogZ__?Wu&DihG}2X-*c^+geT?e613&c5Z3QAGMJ&N91wkd{oShT z)Ae4?9v(Y6!2D*B(y_2;e9=kWu7?!0vTXG8^7A_e9)cfJYFgS6@P*F~7vh1Pg{yc$ zCJ!Oc0l#)%P;dr1GzxRwC}RYz<>KRSbT+N z$_7sK_HM+>o$H*W4+vIi;6dhqD|UKzcCdxZdjDR^X_z0O11dALtFI4zatQoG|AWmk ztLB-}(bV-QueH&#iHYX&r`M>cGVeRy4EwecXzb&22qYFzc~B_y)~#E#zy+ivZ5tVp z5E5En?#)fkq}d$JYg{EaW-^GiNJ#gKzHH1;BdQpX~1y-8jrnIqJYey z#@?#I$4ygHQ$ayNS9cJ2z=c{F9nZvETwEYf;N-ufF1ZG53{p~3YU*Gs-u0E0C`bt! zjj66y%9O6ymyP)#2aP(7Q7ROckvRd%49JL=FJF@906CfbLd3Gc*uX&I^~@tBDiafv z^Ye4y%u|xS019W->dx^y_#`YTHntaxsK_-?pn-%yfl*IQO>IYuB^nu4HeJ zsEU9*uP|OzXqRc9iS#nEvT6=I*)J+80+_dG4tgvtZ7PD~Mv#Zr`uv#(yub4N5717@ zGTvllWGtOoa>3|AFQS!n7y^=vjfskqa+^nJ^0tY&05Bm%EROdlUx!0;^aX^4g&%va z=)mFoQ8&1!rl*^aS3d!RzNDn&b<M+lD4H~+X*Q5ATND_S|BUjBE4P=X W9qXg2D#2woA~hwLA{zQE^gjTdTJ?zl diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128-members.html deleted file mode 100644 index 8da75efcf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128-members.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin128 Member List
-
-
- -

This is the complete list of members for IRDaikin128, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikin128private
_irsendIRDaikin128private
begin(void)IRDaikin128
calcFirstChecksum(const uint8_t state[])IRDaikin128privatestatic
calcSecondChecksum(const uint8_t state[])IRDaikin128privatestatic
calibrate(void)IRDaikin128inline
checksum(void)IRDaikin128private
convertFan(const stdAc::fanspeed_t speed)IRDaikin128static
convertMode(const stdAc::opmode_t mode)IRDaikin128static
getClock(void) constIRDaikin128
getEcono(void) constIRDaikin128
getFan(void) constIRDaikin128
getLightToggle(void) constIRDaikin128
getMode(void) constIRDaikin128
getOffTimer(void) constIRDaikin128
getOffTimerEnabled(void) constIRDaikin128
getOnTimer(void) constIRDaikin128
getOnTimerEnabled(void) constIRDaikin128
getPowerful(void) constIRDaikin128
getPowerToggle(void) constIRDaikin128
getQuiet(void) constIRDaikin128
getRaw(void)IRDaikin128
getSleep(void) constIRDaikin128
getSwingVertical(void) constIRDaikin128
getTemp(void) constIRDaikin128
IRDaikin128(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin128explicit
send(const uint16_t repeat=kDaikin128DefaultRepeat)IRDaikin128
setClock(const uint16_t mins_since_midnight)IRDaikin128
setEcono(const bool on)IRDaikin128
setFan(const uint8_t fan)IRDaikin128
setLightToggle(const uint8_t unit_type)IRDaikin128
setMode(const uint8_t mode)IRDaikin128
setOffTimer(const uint16_t mins_since_midnight)IRDaikin128
setOffTimerEnabled(const bool on)IRDaikin128
setOnTimer(const uint16_t mins_since_midnight)IRDaikin128
setOnTimerEnabled(const bool on)IRDaikin128
setPowerful(const bool on)IRDaikin128
setPowerToggle(const bool toggle)IRDaikin128
setQuiet(const bool on)IRDaikin128
setRaw(const uint8_t new_code[])IRDaikin128
setSleep(const bool on)IRDaikin128
setSwingVertical(const bool on)IRDaikin128
setTemp(const uint8_t temp)IRDaikin128
stateReset(void)IRDaikin128private
toCommon(const stdAc::state_t *prev=NULL) constIRDaikin128
toCommonFanSpeed(const uint8_t speed)IRDaikin128static
toCommonMode(const uint8_t mode)IRDaikin128static
toString(void) constIRDaikin128
validChecksum(uint8_t state[])IRDaikin128static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128.html deleted file mode 100644 index 63a926eef..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128.html +++ /dev/null @@ -1,1526 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin128 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 128-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin128:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin128 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin128DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setPowerToggle (const bool toggle)
 Set the Power toggle setting of the A/C. More...
 
bool getPowerToggle (void) const
 Get the Power toggle setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void) const
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void) const
 Get the Economical mode of the A/C. More...
 
void setOnTimer (const uint16_t mins_since_midnight)
 Set the On Timer time for the A/C unit. More...
 
uint16_t getOnTimer (void) const
 Get the On Timer time to be sent to the A/C unit. More...
 
bool getOnTimerEnabled (void) const
 Get the enable status of the On Timer. More...
 
void setOnTimerEnabled (const bool on)
 Set the enable status of the On Timer. More...
 
void setOffTimer (const uint16_t mins_since_midnight)
 Set the Off Timer time for the A/C unit. More...
 
uint16_t getOffTimer (void) const
 Get the Off Timer time to be sent to the A/C unit. More...
 
bool getOffTimerEnabled (void) const
 Get the enable status of the Off Timer. More...
 
void setOffTimerEnabled (const bool on)
 Set the enable status of the Off Timer. More...
 
void setClock (const uint16_t mins_since_midnight)
 Set the clock on the A/C unit. More...
 
uint16_t getClock (void) const
 Get the clock time to be sent to the A/C unit. More...
 
void setLightToggle (const uint8_t unit_type)
 Set the Light toggle setting of the A/C. More...
 
uint8_t getLightToggle (void) const
 Get the Light toggle setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[])
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - -

-Static Private Member Functions

static uint8_t calcFirstChecksum (const uint8_t state[])
 
static uint8_t calcSecondChecksum (const uint8_t state[])
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin128Protocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 128-bit A/C messages.

-
Note
Code by crankyoldgit. Analysis by Daniel Vena
-

Constructor & Destructor Documentation

- -

◆ IRDaikin128()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin128::IRDaikin128 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin128::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcFirstChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin128::calcFirstChecksum (const uint8_t state[])
-
-staticprivate
-
- -
-
- -

◆ calcSecondChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin128::calcSecondChecksum (const uint8_t state[])
-
-staticprivate
-
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin128::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin128::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin128::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin128::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getClock()

- -
-
- - - - - - - - -
uint16_t IRDaikin128::getClock (void ) const
-
- -

Get the clock time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getEcono()

- -
-
- - - - - - - - -
bool IRDaikin128::getEcono (void ) const
-
- -

Get the Economical mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin128::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getLightToggle()

- -
-
- - - - - - - - -
uint8_t IRDaikin128::getLightToggle (void ) const
-
- -

Get the Light toggle setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin128::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IRDaikin128::getOffTimer (void ) const
-
- -

Get the Off Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOffTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikin128::getOffTimerEnabled (void ) const
-
- -

Get the enable status of the Off Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRDaikin128::getOnTimer (void ) const
-
- -

Get the On Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOnTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikin128::getOnTimerEnabled (void ) const
-
- -

Get the enable status of the On Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerful()

- -
-
- - - - - - - - -
bool IRDaikin128::getPowerful (void ) const
-
- -

Get the Powerful (Turbo) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerToggle()

- -
-
- - - - - - - - -
bool IRDaikin128::getPowerToggle (void ) const
-
- -

Get the Power toggle setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRDaikin128::getQuiet (void ) const
-
- -

Get the Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikin128::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRDaikin128::getSleep (void ) const
-
- -

Get the Sleep mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
bool IRDaikin128::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin128::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin128::send (const uint16_t repeat = kDaikin128DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setClock()

- -
-
- - - - - - - - -
void IRDaikin128::setClock (const uint16_t mins_since_midnight)
-
- -

Set the clock on the A/C unit.

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setEcono()

- -
-
- - - - - - - - -
void IRDaikin128::setEcono (const bool on)
-
- -

Set the Economy mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin128::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setLightToggle()

- -
-
- - - - - - - - -
void IRDaikin128::setLightToggle (const uint8_t unit)
-
- -

Set the Light toggle setting of the A/C.

-
Parameters
- - -
[in]unitDevice to show the LED (Light) Display info about.
-
-
-
Note
0 is off.
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin128::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRDaikin128::setOffTimer (const uint16_t mins_since_midnight)
-
- -

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

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setOffTimerEnabled()

- -
-
- - - - - - - - -
void IRDaikin128::setOffTimerEnabled (const bool on)
-
- -

Set the enable status of the Off Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRDaikin128::setOnTimer (const uint16_t mins_since_midnight)
-
- -

Set the On Timer time for the A/C unit.

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setOnTimerEnabled()

- -
-
- - - - - - - - -
void IRDaikin128::setOnTimerEnabled (const bool on)
-
- -

Set the enable status of the On Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerful()

- -
-
- - - - - - - - -
void IRDaikin128::setPowerful (const bool on)
-
- -

Set the Powerful (Turbo) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerToggle()

- -
-
- - - - - - - - -
void IRDaikin128::setPowerToggle (const bool toggle)
-
- -

Set the Power toggle setting of the A/C.

-
Parameters
- - -
[in]toggletrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRDaikin128::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin128::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRDaikin128::setSleep (const bool on)
-
- -

Set the Sleep mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRDaikin128::setSwingVertical (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin128::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin128::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin128::toCommon (const stdAc::state_tprev = NULL) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Parameters
- - -
[in]prevPtr to a previous state.
-
-
-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRDaikin128::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRDaikin128::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin128::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRDaikin128::validChecksum (uint8_t state[])
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]stateThe array to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin128Protocol IRDaikin128::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin128::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.map deleted file mode 100644 index 2e6c96512..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.md5 deleted file mode 100644 index bc41b63cb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f3fab669ea3ebe638c76d8966953ea84 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin128__coll__graph.png deleted file mode 100644 index 6847ef996d98d3bc35bcb2f1be91a5fc5eeba4f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6783 zcma)>2Q*w?w8lk3njj(3`HLFeC=m&QAfgkUjNW?(#a1Tb7ySnz?u1efHV=`+hfARax%d9qK!HczE~ZU%yfZ?|b0a{}v&5 z75%cG0^SHs6y#pvU0(g9H|ECT;ZY09zmk0WK4oLtOGk6~;%MhkToFR2O8PKL62*9v z>o}oRlMF{K!Pv_0C_kd%q45nq6szmY87wH|H{sN%J*1AjCR8H*F6dPSJzo$!*-P`r z{U}}7eUjzEErul?Gp&f5#A~=0%U&Wr8;u8+Tdv~ke+sLrAAccz9fKKcw^pS4#4N8Q z&04_>yA4Cdn6a8c6k=ed4L(v*Quqx1XJt=JtP=={X}bz_E5g(dI~n{HrKCQqVG~gL z1_lOI*257fYinz}>3ZC!8<;5;R#s}E@dpncyjD~c)H{zkmRC_J5t1mNgKgzK+0%yy zld)0z(p@JciaOP^DdpC$=JVQJpzc`^`mdL_dWcMkj}OdbUszm(iN;wJK%4#S#!7!- zj4L_7myK}PVI?hS!E1~B`VPP72j+!%^A)hnZ$HvFeHI7gd zQ&YH!X3-48VNp>Lw_&~8pStDLziq)};Xl~;`J)rxc_Xd%f`Wnyob~jyF3}5J(M&In z7h*-8J^Sz{eT%WHr|0itB9xVjD-7y)+^$n#tGT&8`TMuj!RE9= zt}=pB#Oa^e4}0PH(i*-etGTxr$Es|#!xz=m)KIBn@XAWTgRR;A!&!foSFgV4(bLoS z4HsxX^V(%zU0ppoJr%G(QSN&;iuNPUqoSiFFE7r$u=%-NNF@JBwUD-~L~nIPh3OIs z#vbx}yuxyLl~b#*WptFn$H(U@5!LT}ja*E5Ow5DFOiVim2OZ<%u(>%Sbq$T-UBB~_ zor6h7GD^yCS_RoYhnwrO%~0-s6pC3ygtADhr`eH@j_Y zZ2aogE2msJTPG*Jkj!+n)iw^t!od+Dao|z3R#{hA7*=N52>~&`QBbf=X>RII7r#kN zYlO*Dv#Qeb#$nrgc$-n^EV>ihZIv~+aimDaJ|m7cDyS<*qoFD}pa44VDuK3b-FeT`*P+5LT& zH=X?sC?C8$SE`ShnUAmT8i&iapR8`!?dHUa7dVdRSnQkeaB}{w=ogn(BgeW!(Dp-oo;7g&FdJu)|ay580zf9oY(rA|Hrw-EHzL(|i-c!iabbYVle&r+?m;N*`Js zYw~>#^~Gt%`x?Lt3%S1Dqxt&t=kw>Dn{6{QO(R}wCq&e1pgQ;0Mpb+z{LbDBJI*M2 zdyC4*$P^mX#YhGaf`UcQiH;WPO1rrU5)cr)*h2{@CJP3GYV*4|wp30Lk<`vP%JvBK$2mTWwS7l{lMn=Yl!x$ked6Qg*5dw+X-`^Kq)2Xls_twRbR{0W!?;zRIN}c{l z5!1iWS#+g-=ECgY;9&66BYb||1XMcJi}!pWIU38lO&^|xWX^4F_JOT9R%UvWPSj1c zr?H^{(>yddSXx=x*4ZhC7y)%!Rmh6tc3td#$i>BFbLKbQbF!I;R;ie*aqPzq7u0FF)XzIJgbSF0|1791YlJ~R~TFkK&wK=j5v(Rja%@a#gN+Kl)}$;hP5&CL<+TzZw? z#C=crY%uH&Q?6(Q@=^xyy@-&g*0Rj~_o?!Q_(>6B9RFoUBdN zyBECaOniPb40N{#WMsFAhzix4Gug4Ti07U;<>fI2+9f}Rz<$I)@WOL!L@_mCk&z_c zjj26}yxNo1Ukgj}#iC|m2m}HqU`fpIVf$K*!}NU1r|S*JOK@fumW-j*fi+xQVxlP@ z<@WCGe12}K$wZ~KLBsp#@^VN7gM_k`75l@74{^mk{r!=@0&bGg(=pxZhgNHy{^0K|^_ouCyBF$|;mfFDd{-A1zEo8S1qTPWwY6dN)3UQ!%F4?2H>cr$ zT7zhCecPW2?&{RJu*~{jiZy!UeyA^Du^}MzG~WZN@$vDvgoJXF_B(E(bQc#Fhm}n{ zhV^`4JuLcC_!|TS=zI+}JW+RS8@N4;zc-Hi@8Y5i=-IqYM~|2L({f8o zqcjV&%0S;IECQ)0m1Vkr|9)J2e3{3F-c?(ws1T5pl&rL$Oh`(ithO8f91w8b>9pfb zB)!X8gdrTrCNu{NHrVbO=J(u?f(dg)_ znGN<>bX3$!kTN`Raq$oPXgNg~gaAw#pgAa?Iv50CN2~-3^{U>8>HpZmGzf#mlT{-J z0tKuAmPO;;J9-utmRE9et~jh_z57~DLY4K9tf3z$chItjDlAn*-Bwz_KfZ;AYN%*# zwS#Wv?Bta0INJnTAOi^r3Fz6m3H|V=k&QlwCbqT(Grh%*uzNJZ1Gy>;vXS&ki9CiP zVC1$2kvI;ND=FR2#BOvxH!S=@TdA>uZ(Ya}(oqbBNVqTL(jqisP=SgT@(?lzj0LIK zWtPA!z!<9=gZlFC2V)0kVaZdcy`qJkDvswH5ZZE{d z!nH0D?t+KD_C%TL8S|x_Bax5Nt#bw3MYv@Ve``laIJ4@SWj$|^^_`Xatkx{Gye z3YlZitwOYYXjFET`;|=O(|lPYv$LCQO0)IumL_EKRek3E+jnh%yDjjOt5{ie4WIK{ zbzgN7iU*gujQb7wNIG{R0fE8QLzOMIjQc3vYDyk_xkl>bY$@(c=Et)4HrP5K7Vq_W zQ&bUIf2@BQZR?ilj`6ZhU{+AoD!za;w`zR6H?S|DiZ!h7Mb(O#mf)Pg6jgY(x_SN4hTx`w0ncRW zaeTv`IcrF%J4bJmuikkYZ#n6FO+}6bsZ^JS9g`IrNi=u)3juHg?uDHV;#GI0l7S!HikH=Cj~ZXiycCov1VT0TPBWmUBml^{fw z%QMxi4x_l0XR1?XlY=f2>|X8uW6eb#GUzzilqj}ww*JFlq7r8>O|$&SzaU2!5^6@c zea|lRWjgzIS16sAx1pyjH!ho5L2ka2Du=j4Q(nxVD|>o$^)!VBTwS>(Oc~oBlzM#; zS6-H+1o0tp{auWBc)7Jjg1#J9W~U|yiWnjC>IsGZb*XFUKT@%Znp+Bg6XE9+Pp|TG zo^0jAsoqIoMA&IP+lJ2sa?PB{rmQi?MqTZDr>y?D7M6tJ-QsQ&O<3s06F4dL_@_GL z0+ii!sv~vSyNqfdKjY?ITd&LCxAYuJ@{=)fU3k|medbpjdOi1IhpVU5hfcR5UVyE` zx9;z2vmWuIOx5f$O|&kHt36kt&<)vB7p7y@TrF*Xof@~x5CMniTCM=`e)lNP0;TW6 zQ(A5Z)~#LbO_jI`A$N9*Czn!GeNDnQ8n6ynRXy&CdW!@_1xg1`zi7qZ4aG2)p_pJh zJ(ojZ%c786@)lB8UM*NF4fXUc=dqXl$OigbHesF50%^XN6%J|OR`og7zkk8bE+Su= zzaGd)pci;~x0azroX!< z>tX*$^*Q!r`7%7$2zor7JuFC_AL_3o2Z>B{vikL~!*}|+ZBULEMApQ_Bo;Gd5Vy2) zHLr!2N+Gl1` z8Ku8EVKGnKFa8(bQh+)9f0&j{FMVZyn9N8&OPIlWXguOWj&_Avr5tUwYNtd$sV(8T zT-@Sp{Z>7_|Cw`{%`gY9vAMZe266bS&DjpFw0+a^H% zV$U)%G9I(Dzh-7*3k8y!-{-(?r;91_R^z*p5g=1oBIus80^=j|_HCS#t1B5{faER4 zwkSsFwxgZDG9Dh)SIYR>wQKmKb#-;&6A>xUH|^L?DO;1OB6yXykND6Od}QQur%_Eh1QpkI|V5B#&qPnK;V z%er?xXG)0B{`KoyKr&Mj5jI_%*nTCZdjmwu%*>3HAhnB&i<7gn^}aV4g-^J-S=iX* zlvWlN7JMQm2W4m8S#K_|nMncbIM@4hmift(+X&^LcO|(E4YUEjJ|-qosEFanfy4Pb z-yRB7i}Tr$vy`-SeqLT)je~@Q1R)8%;`{d^Aj@E-1pF_~ZkB4sa2T3OXP?{hz6+sc+xD83DOBHYRAtci9Vns-dp_IW3Lh z*RNk+0t2aBU75*Z1IS*-ctr(}31VQl@$d9c1l=iRwI|7hvX@j?U9Uehs6$43mZ-*f z-L3VN(^ZS3hJtVf>`M<e${oYe`&_Urad*I=(l0n#K!39_4>) zv4X<7xZ@O;WUbalzk>Py?A-hjRcDAIopLNvL<^PgZ^7?W%|>@J0T-oRrAL}Me7|a= zPwVM+91SzLR4lPhoBHx2+{BGAsYHqAd)sXXImB}HBoNrvueoDHS$WMI>cmbX$OXDz zbK~YRtLd^$`#?>D5?zE_nwe{#kCDCOucT&)FNQvxS0C!$b5CavGnfy}E;?(T8ASdZ zk1?ZPn6{ILQ2YSWYszCKmBawsJS z`VdvL;u7l;{oL!>QsT2(_VBgDZY7$qk4#&+>dD!rm_Z($>S%_VXR&F;_ivz_I;(Q& zf*yTW^%`;;&Ck^`cUe@u#w5Ngvo>Cu@%4Lx0&B&6D=u=`4=d7M?^tg43@SZnjc+AL z(Thi>*CCuqoCM{G1_M}P$6v2M*AZB-=PmxA{ZjWLV8c)|IqUECr1lDbUwkT=0mDi? z%TTm^Mfkc_a1%0>W1LcZ{_ZyQyqO16=Ig4ESTG5eBt0slm|g#iyi}5$qMxXi{}Iz$ zls%g?Tq+5A)A#Ibm}r=H{Km?+z*8kVdd}LddIx&@pllz41ix%0QrHe)1V{{Hl2}DO zT+Dg?Rkg#k4VDj!D?M%$Rp}c7XdB)oJoO_hwZ}eq~@ltB}aExW78Y1#L3m z21wx<@MdRwX_w4AJQ2l)KX*H59F6$8EG&CL>4}bwjgeAQhh(yYZZs+a6gvwrsY@mP z=bZi*duh4=WK6s?xi~u}Vh~ShX?b~-j}zQlfnaJLKx&zpz!5&$1}Ag^R+4(ze>FQ1 zV1auT7QH3_n<*khc`0@EE>%`4Z2=!{g}ah?JHVb;SdBf!`G{X}bk_S}6d9 z>tki)m;0|1o$L}kAF444=Ez9(+gj0D5>GU8FhBclld%qD z$&ui7M9}q6KtD(Vw30>U06^~9*&XX=Q9^@{%85q-z}jUUf}RRmK*jr^Inyeo5T z9pT^3NVXR*Qa*pi2Xf~KTTt?Ty{vP<3M(Fs?Cm9JK_YM0PRH%6l{B+*b1R8y0wm^% zaQ|?+Q3C+-4nQJL*|jV!Epd)C@JS{ot+#Ilt;U~UB?F{Nx7vID05ZUa zmVs3OF!f7N&>n!s^YinAdG4<}*i+i}lfrU41c3B86pIzFc2W?h}R8h-!+ z&^kLiuTTF>jEW+iJ6yBjTn4pK0C)kj-!YIOP2=`f zgFNt=>(ch|a@yX6ZAqEkI0Wb2z<;nl-a44AFnkCs{Y|6J2s#~oeKH!FyH^Z!*bCgl zShK$b9vY3l0;{0G&;xw|WCds|JOIImN60|LE7tl`;Bd~LFNK*r>t80LM+@s>vRvQ9 z)cuD@|4$E8{`)~xF~L|glN=^NIR=xQqzUOy777IqM?fQ$hup5P>3bqylw=29m;P1l o|J#YUKArfW6k@5&!OS3IcNQL - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin152 Member List
-
-
- -

This is the complete list of members for IRDaikin152, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikin152private
_irsendIRDaikin152private
begin(void)IRDaikin152
calibrate(void)IRDaikin152inline
checksum(void)IRDaikin152private
convertFan(const stdAc::fanspeed_t speed)IRDaikin152static
convertMode(const stdAc::opmode_t mode)IRDaikin152static
getComfort(void) constIRDaikin152
getEcono(void) constIRDaikin152
getFan(void) constIRDaikin152
getMode(void) constIRDaikin152
getPower(void) constIRDaikin152
getPowerful(void) constIRDaikin152
getQuiet(void) constIRDaikin152
getRaw(void)IRDaikin152
getSensor(void) constIRDaikin152
getSwingV(void) constIRDaikin152
getTemp(void) constIRDaikin152
IRDaikin152(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin152explicit
off(void)IRDaikin152
on(void)IRDaikin152
send(const uint16_t repeat=kDaikin152DefaultRepeat)IRDaikin152
setComfort(const bool on)IRDaikin152
setEcono(const bool on)IRDaikin152
setFan(const uint8_t fan)IRDaikin152
setMode(const uint8_t mode)IRDaikin152
setPower(const bool on)IRDaikin152
setPowerful(const bool on)IRDaikin152
setQuiet(const bool on)IRDaikin152
setRaw(const uint8_t new_code[])IRDaikin152
setSensor(const bool on)IRDaikin152
setSwingV(const bool on)IRDaikin152
setTemp(const uint8_t temp)IRDaikin152
stateReset(void)IRDaikin152private
toCommon(void) constIRDaikin152
toString(void) constIRDaikin152
validChecksum(uint8_t state[], const uint16_t length=kDaikin152StateLength)IRDaikin152static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152.html deleted file mode 100644 index df4ba965b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152.html +++ /dev/null @@ -1,1175 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin152 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 152-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin152:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin152 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin152DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingV (void) const
 Get the Vertical Swing mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void) const
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setSensor (const bool on)
 Set the Sensor mode of the A/C. More...
 
bool getSensor (void) const
 Get the Sensor mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void) const
 Get the Economical mode of the A/C. More...
 
void setComfort (const bool on)
 Set the Comfort mode of the A/C. More...
 
bool getComfort (void) const
 Get the Comfort mode of the A/C. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin152StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin152Protocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 152-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDaikin152()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin152::IRDaikin152 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin152::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin152::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin152::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin152::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin152::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getComfort()

- -
-
- - - - - - - - -
bool IRDaikin152::getComfort (void ) const
-
- -

Get the Comfort mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getEcono()

- -
-
- - - - - - - - -
bool IRDaikin152::getEcono (void ) const
-
- -

Get the Economical mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin152::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin152::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDaikin152::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerful()

- -
-
- - - - - - - - -
bool IRDaikin152::getPowerful (void ) const
-
- -

Get the Powerful (Turbo) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRDaikin152::getQuiet (void ) const
-
- -

Get the Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikin152::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSensor()

- -
-
- - - - - - - - -
bool IRDaikin152::getSensor (void ) const
-
- -

Get the Sensor mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
bool IRDaikin152::getSwingV (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin152::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDaikin152::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDaikin152::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin152::send (const uint16_t repeat = kDaikin152DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setComfort()

- -
-
- - - - - - - - -
void IRDaikin152::setComfort (const bool on)
-
- -

Set the Comfort mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setEcono()

- -
-
- - - - - - - - -
void IRDaikin152::setEcono (const bool on)
-
- -

Set the Economy mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin152::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
-
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin152::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDaikin152::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerful()

- -
-
- - - - - - - - -
void IRDaikin152::setPowerful (const bool on)
-
- -

Set the Powerful (Turbo) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRDaikin152::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin152::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSensor()

- -
-
- - - - - - - - -
void IRDaikin152::setSensor (const bool on)
-
- -

Set the Sensor mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRDaikin152::setSwingV (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin152::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin152::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin152::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin152::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRDaikin152::validChecksum (uint8_t state[],
const uint16_t length = kDaikin152StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin152Protocol IRDaikin152::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin152::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.map deleted file mode 100644 index e18fa3898..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.md5 deleted file mode 100644 index 67b23b449..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -305b7292b21599fb3222ff51764cbd74 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin152__coll__graph.png deleted file mode 100644 index 3f403444a5d4faada20528ada6109f5a58f0fd6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6616 zcmZXZ2Q=I7{>PR6=rBubS5+ysgBmef#NMh#TYJ=|g4$Y2sZ~2DwZ$H_S4-_pV#laG zf?BctANSnQTn0`B86jnDJ%1vjiZxkjkx2|;EF@BP;%)9idt6GCH(N~(T^%g5WUgn zkIW&;(O;vwxD@4D_WN&kb#)aQHcpb4!4)#)!XH8)TD z))^5M6%`Y;E>`u|QA62TS*t=5(J?WKii$(8PNV;V@30n>+F(RD+OqG}C(#O6uKLij z$VbFZ8Q7FDLf!amM+*s8x@;{KA$K4M)-Huk^Y}+BL#)xFQc_GXP4*{GAaHiZ`08rm zS5>)UK!R9Lt=+blI8zDN96E#<8al!Jq#_Zw8#ajCVn6)mEwy5VQN z`{xU9{+?s=XrX>)zm(@bJLO}w-!n7!si~9Pn!Hcea&f32<~3|50|mtg@{buA4^#avJfx+ikB(Q;4k~MSmJX}9IXLEjejwP# zP9%L`=%-_jX&$X zN3ypvP@;W#=+@cS*VfSy+!ga!TSMb}wd?xozHgGfy}hcQ9!+S5)8VGR>q(vK#?Jo! z@Amc}ezSI`brgrIp}syX1qDS-ef`4R+%se22m1Q@>)wuzj`7^Df|{G9+}zxV8APH2 z1FyUK8XDgJ@ZrPw#KhmZ0J3u1F&>|ioac$j$pTJu&t|-~CBUH)rTiqT)83L06U%B+ z3DS|Irl!imV1G|@-z1CK7w6^8A#+nrhqDx86B2~=nreNVO72in(n|S?U;WN~@x+xh zzf`l12qC@E{{9H}8IR!MVXexTNRVme1fHe89ZVggqw)4rRhk+aKbbC%I`E;A>bxjoat1731b)Bm-RXJetM{nM|Isd2a3xnvp zKyVrSZwDWI3=}!?|4|WAbqGw_(KR-Vo8yhQVa0qJay_Z*YjlF+3z3?4IMpb8L{;N|9SoLRRWd)}B zo`itn1ohFEBI<%SUS&@&DJf|;`Qs*Y;G{qaQVh>!xpy9g)ZUzJP74bo_V)HxP*Sqd z#5{exRqAuX9b2a_@J#B=FC z6qk@_3%$#^j&{uRHanfe9d2PbRa8{y-lVOs+c^LEeRCd*`$a$h}9s{Q`m|NHj`Gw&Bjei(4$f$Fxy z)WyNR+?(In=y4g4=vW)cz1G>;iTAUu4c7R}#MHC}WT~^a_r;X^yLVcbRpsUQ-^*(8g*of1eRxOL0M&7-)u z81(g6Ek$%{YH@<=hQgmef1F%hEq?l6dtLkP(?o^UUUl<%cte9YT#OO?C<=uVoM;Dm zr4fU(FLXq%oE&UmsXP{Dd{6B&GBXvGl>Vd#-_IAmJiL}!SQr)?OLcaBzR{~o1v{@d zYW4*mcUl`}bv3ZD$rmGgmWfOz?L+_F*?Crgj*gFi$y*iARZ>*hgX<+FCB5qE>KV^3 zuc{rsCMI^;mNd%Q*gQd_(Qhjao^W!4UaqOF<@eY%mzI&Kb(+V&d-pDblyA!1oN<1B ze$t!xgaqnL`A9Z#@sySp>EV$P{c>|fXraYvL2>c&+3_BiVMF58C~&}tQNc8;vl|;F zmY0`7Kax{Yj@WtSbmBl?iN* ze~j0Lv(FZoF6WXRn@o1*e&HG#F3wK{+&1-ET3R}LdRU;)WL-m#PyYURCx_VE&t{u^ zL|vA{PSi_k#T*MZg4y~c?7sCHoY4sme*~h_ao;O! zd|dDQ;Z)e_>RX;Sb-(?u5uobgEA<^m(rw@NJ)HT zi9FQ-rpeqpsZ(84EcX%Z?f;TJ(rguvXm9@in}peotj+lLoZ+OE^`IFJ!!ptNYLjM% z#vF8GJbQD?4c+OIl^g|l@yJ8mMwA}*2! zp|XW^N$f!rkwY8r_RmqV>D8Ich7tFQ|2UG_QErn+yxq|g+bFmOT|dCv;8H5jALl=y z#v{CbV2*mI+iR~v%n*l4DP&=Nbj}^H{*Dp%&;C!|?$$wO+AsZ61idpDeCXI@(R9_Wrmr{scd!+W`ic=9HIJ#2zrZmxw znw=$`Ke?AmGe}4);p1yj2dX!rRw)bXpOoN}mul5p7C}W{YUl9cgC z?6^EL%SR!2e4*i|tW8mG)Gw8WYHtz1#)aaHkP<}~e`CA@kFbSn?t$dHRIkXuhX`t< z93s`Gc7}9UuV;%^k5j%&Wttf%a)C$fFASI6aqAcFKwrLi2oJ|nuWqo!)D{U%T4z-_ z`To8~DUdxhvNjdsdosdF^{wE+T)?S@pi+QEc75*1tq4CSgg}|DhDH*@bW495KKWwMk*LL!GVaU57 zldEotM<#Vj7DIxqcn!CfhBUGC=S zVd_i;OI+FEGmLs<`-@*FrTH?}bDGNWyWt4&htFJy`9*sd}j&Do{V-4RQK~aXvQd7amG%5cDg3(=1{YWvawl)c}F1@X#_@W5q zINKyU`D;TZ-0PVeGpgb@Z0)s#(JxdH8OkeEHTUif?!?5NQ)d+Ko3so_ffaIGygoV@+UcOZ?&YfLE1&PZ9 zo5d=*IDRdEl8`>IAMaj3lGQW)624Qq7~(Fzwq;?lsu4Df-n%RE-eB%Dx*}a>tvqZ! zNgu+MUf^>CgWOoCvy3NJW-B-8>f=?E`;Spl=M9{kD09DC>15XG7+i`u zZqI(A=9|(nQG+iNoZ$|nA$zE_rsj}Dr=)V0Hd>Ben`D1@ZB=O3${ zsUO&{Eb`^R+B~%%8N5n_gDypcOc4oVC_I>F#5#+kRpunhy&$T0nF)mg`SVW?QRn>42zl#Pw0RhTc-_xSJ!a^#r zyG-X>KG__DjZZ;N{s63a7*LLSrN$rLucikFzAVt00#cZA*6*^BotKvytnQYsF2z;2 z7|@Mo?O_x^H&Ozzd!>3?#>RC2Eq66{Tx!R6Iysyzd*Zxi*rI1Pqq@9_?8DVwOX^Ru z*$c(?f-hP>-QS0sn3=Hv`=DLo@NaFsBq2;1{zUGkLBBFolY`4`eUA(Wenm>&Lvt_mX~ubuxo2w zAOre8-ckU~1{P=7=g&8S$e7gRSYF&acKR;AXAcoN9rj~_n{uED)8j#t7Mq47Z8O=B=a zZw0BSs0M)meaYK_M#t^$zPokn7AjCpUA=juMwNRJ8yBIr#Y~{2qOw>yX2>EW6bGa{ z5Y=&UaUiPG)6RFMlYUDMKS2w~9^ zoJ#ku!?jBH*t;<6ox5~&Hsi+I!+n3~-1p1kt1r+O<2uxL zJJ06{FNRVfU!fd`-l9QFPqgNj*P`dvlC`t5d~gwaHr%O}+PRTr=DnI>uf*{5)~{R9 zD$6hF1hc6PDLte1J=yNU&_Sdtsc}oQe|BtX_x*-H5Lt=Pi7~9*?=)|^otd!T+S?uo zb{R2ax5UuQ9R`Eg2v=T#_NFa|Ri`YkNA)f<|G3aoviW#RjYe1okuIgaFf1a3&4=K` z`75I@$DmLT;aAaN0S(FAitYa~<^Bzirh|%8OBM?fc(mT63&GhBz@*lM8hkeYVGgNg zww2c|&c!Sy3qwbp8nY7||Du(VXFvF72h$ZiAH~#?=pXR4@=gYXm6W(#80nHQlHv)) ziQS>jF~OP#;VOKH86&dfA&9BOiW2TtY0o`Os9o`!LP0w|{D>w5%)?h`LHDo&rM2Z? z#)d1tf7G<8QbJTH+8`K^lpIvACQ&IF+1uK7Hc+2BUR!0C$Bf*I?kXgrqx^K~F%{6A zK^LvNMDr-9m!&PmAgv?w%gOwvt!)%d)*)+*zPg=fvVbLm9$`eS?Of@TR{VrFZ@IHv zg-{jSMlj-4xlzvA`qii6VDlxSs?S%aTnG{q>P&Cu2xrMq2oFsFNUi<3B^`Xn+!*fhTh2M0q11RD5RPQD5W-zVK2Hl$2EMab<30f`?c;{|mn{$J7!apzb^&At9g<*0anZ^n*RT z&Aq^%9K1AKHwfEuaI@t$Y@iVq7H$FL4A&9KMD(+z1s^~%%YoEBN_BC~+UNrEB3 zKR_T5I<5-8OWzrf6-Lj)O+|pjIwBYaG*AaHS=p%ASXnq6o@tSzf{@nIiax3P)`?eE zRt6#(b9D6nW%27SVC(hk-R!*rc`*MVdQ}0+cpxG|1JhJcS9dH8Ln1lOPYxCUwp#>_ z*&I{nYC{ylsvJMJvJwm&Gnj#FPoGw)t%T&LB^Tu9>(#+It}d?DW6v^RX{G;LPkT6h zNLZLT;9|W9fnb1dexTPY-YqG4`}mYqRkgRa2K@Z_43LT`ORTcJGMft}Fr`NTNor7K z!*U0JbI#4nQ^0DS98NjL#K!(kmkEBq*C#Cce&+!IC=ONMz}^6i?>UI&=ZJ{*;o$f zeT|EQy?-yV&>p^k)-{4f?IcZ#0mF6*ir~uJ~ zxjF(2Vgg7-U~ur>dO?X6IM@o?*cPTfBs|;#Y+pcBs`KrU=bbDrlne|EdSH{**4BC- zpmqD=)m2n}4-HZ1>gpC7HTUl>^<2R~P|6IF-if89d_N|0{OT-0wD-4X(>~p%)-o`d zd|B{r4B(N^U%s$_%Rk+2o&|DBHL7bm%mGu!Z#&9mYGwws1X8#;Cnsog)9&JUzz>L_ zp8z&!QhmzLe-cPOK0a=2Y1v-Ve4zv=UPTW$!2H3OQOC$gjINPS+#l0(36e^?2?&p2 zgMyCEU20y##a1#Y^WUE-)-^o<;qg9RN+^6&e-H4W#x~|k5|1PdKG0>Xl9H(eM5N?Y zRM%04y4#bLw}CVOP16;{EOP|l6q?=w0K9oXQH_sxmty1NA;v%P+9MdjEI1q9+@*q< z03qcK8oFV(o3qfMQmOI2V>mG2R|S30n3l$b=XJRGYi1@@F@~+ovX5?fc-YCw$#{Qt zC@?4pUqfGC@%3wlD@v(31r!637Oc$l- zvVYx~_}`5KZdd%rn_CL|#q~0;Z%)FtZ||$qS4qEAn;>c<$2s u*PRCD82#w5K#svP%Dw1Eu5gY^CMeU>H>tV=*5FnRo+3<5wpiNu - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin160 Member List
-
-
- -

This is the complete list of members for IRDaikin160, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikin160private
_irsendIRDaikin160private
begin(void)IRDaikin160
calibrate(void)IRDaikin160inline
checksum(void)IRDaikin160private
convertFan(const stdAc::fanspeed_t speed)IRDaikin160static
convertMode(const stdAc::opmode_t mode)IRDaikin160static
convertSwingV(const stdAc::swingv_t position)IRDaikin160static
getFan(void) constIRDaikin160
getMode(void) constIRDaikin160
getPower(void) constIRDaikin160
getRaw(void)IRDaikin160
getSwingVertical(void) constIRDaikin160
getTemp(void) constIRDaikin160
IRDaikin160(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin160explicit
off(void)IRDaikin160
on(void)IRDaikin160
send(const uint16_t repeat=kDaikin160DefaultRepeat)IRDaikin160
setFan(const uint8_t fan)IRDaikin160
setMode(const uint8_t mode)IRDaikin160
setPower(const bool on)IRDaikin160
setRaw(const uint8_t new_code[])IRDaikin160
setSwingVertical(const uint8_t position)IRDaikin160
setTemp(const uint8_t temp)IRDaikin160
stateReset(void)IRDaikin160private
toCommon(void) constIRDaikin160
toCommonSwingV(const uint8_t setting)IRDaikin160static
toString(void) constIRDaikin160
validChecksum(uint8_t state[], const uint16_t length=kDaikin160StateLength)IRDaikin160static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160.html deleted file mode 100644 index 59f782bc1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160.html +++ /dev/null @@ -1,986 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin160 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 160-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin160:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin160 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin160DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setSwingVertical (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin160StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t setting)
 Convert a native vertical swing postion to it's common equivalent. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin160Protocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 160-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDaikin160()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin160::IRDaikin160 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin160::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin160::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin160::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin160::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin160::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin160::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin160::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin160::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDaikin160::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikin160::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
uint8_t IRDaikin160::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin160::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDaikin160::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDaikin160::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin160::send (const uint16_t repeat = kDaikin160DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin160::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
-
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin160::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDaikin160::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin160::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRDaikin160::setSwingVertical (const uint8_t position)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin160::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin160::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin160::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRDaikin160::toCommonSwingV (const uint8_t setting)
-
-static
-
- -

Convert a native vertical swing postion to it's common equivalent.

-
Parameters
- - -
[in]settingA native position to convert.
-
-
-
Returns
The common vertical swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin160::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRDaikin160::validChecksum (uint8_t state[],
const uint16_t length = kDaikin160StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin160Protocol IRDaikin160::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin160::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.map deleted file mode 100644 index b611735f9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.md5 deleted file mode 100644 index 0138df616..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -220227e53776ca88c6c2c39857725c26 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin160__coll__graph.png deleted file mode 100644 index 52ef8cd718aa01c0feafa248964c25c972d5c6c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6831 zcmbVxbyQU0yETYlkSd7e&>`K@-AJmWAdRGSg93um4MQ_DNH+>7Al)$3Fbv%x-Ed#- zTEBJgUEhD-nl&>l=A8Gu=ZXF7z0Y@bRe9XUq>s_i&~OzMWHiC|A$a>g!~&l}K}Tue z3(G`VUIy*SC5Qm0FYNjY7`Nkt{2kB|>X65Gh{tyYju?~g?x@0b)^51~om14;- zSe9g2{c=iu36xZTXper&O_{r|->44h&Bc~L==gIbR+-(LxHoTn^v&}p(eEX7Ws*Jp z{G$s9%rt_(EO@pW9(oO=t%(esXYd@RSNA(-Xao`5Q;eNyx*t(V8%=f{My=y89fL9Bb+5XLO8YQSUm*8Nao3cklzR0wVUKvVuY(U+F}K zAT4bmE*XD~f<)nA}{tz*-JyMt^^Q>Z)a_=%K5txt}+W+qO<1M~?sP zjg!7|M4jKYS7#K&$Py}I`F}6JLj!eoa#AP!8W3>LG-TBJcxy6>&t~F6KkBHCNr<;q()(MYNrpKYM52mKls21PvVPQ6rvbEl= zsJe-X375UO^nwhp(Do2~fueM<%M8y|lE49R=T#LxRp-Mdf8O(pt@87B$W4}?+{rGo zByqz<2nK_#PgTi3JMAjH#Rn`JzM>*J9zA~CHaC|6E>>kT z$zCfWESwr0O|ZSQ(|Ec2bGpGXCtG`riIt6QW4f9#jF^J~+@fx^h2wSP1UQUPRx)Q~ zerM;kiV99^E26fgeYL8JTP})npgV?^nT@T~`6hTSFt|TcJd;@~pVMxJH!Usg-~Rr> z^(jib@AkOd{|OP%*UU`F`z9CTo>=;ARBPr~f!d^XAJ~!r$|sIRyR0zX=i+#)>+1Z_ zb3HqxqPp4?+2p#sva;VLe)B|ITU*F=vm^87h>_j!*TdgIkDk49T7IY|e$5*S8*cUY z|LnDeX3*jT?e13i)!gjp_Z0nxvp@z;6*Y=N(=~-EEnhnbbtF7TLpR?)7sH);U zdGbUhg;(*qA`&8=fkz<(^43pmT; zF}1F)?yUdqwRO5-vzM`{X?vw<7pd)S6A{b1icbqtp`oG4oW}Q-IwNu#8j>OYS23Ui z;$mX{D1d(+}zy!Flc;A9W=vJ-Xeqsif<8Ai7lcoqNaxT>iT-R-oYqmlV8{| z@a)V(qifjm5ss6j8Kv_SOSYBHb_}JVTPC^UbW4S`X z_P3pOzDOvK<$WqVN)a8)W_OgYb~r@b(D!;i5I=NkO6RyXGc)sBWaRU?xjB;&m~8Fl zB;W18Tp;RlF^nS!3e}DHcz%9wAXxP|Zr@Jk7JVO75P0ap~ zI_Tf&DKV%;TbJ~sBNy~<)s{mOGlmhma}kIduFamIV=QsY!M;9PUfy_ZBVVF))d!#J z>jgmd(7${c`uQ_jz6uoPx0Iikhd#f%TV^=V$-}b*wwEUCu4;#Z!{7Sa+u7ktczOy# zp-`*Z8PXLoF|lC1fp@gDv>0f_#Kc)m!n?kw$dJ-fwon)W35lYGg+;U751mRWQ8w%F z)aD1cpg@>H+cIyjEI|eo9ON3RXoJQ&CMwwP@rFLzgZ)^_e+bdL|NK(FkLtVL^nONTwix? zhx^Rftt*m3x5Y=0nVH$=YQJmqXn0t?v=pF`WyHrxlxc)qV0AUm?(QzRkc$GF zxa%e%xb)fidC^$e9;cF$l7f;F4HHwLTxuw+aOkJoj?&w=L~BEt+6DBCj3wr1q^}2D ztO`}@?UBP9F1fk6<9c14tmTch-Fy9!k&*rB!by`x{^=l*mENcJh5)od85jNdAyY7> zVQ3g>Sl%@@7N?OT$K`ooHkc+Tt*c8Cf=5Ba${G&35G!eAX{kL+GB8=tnE_O0Zhrn# z3JT;so9Tm>EG&Y)7rck71E%oex2yoMWi`g_Hssro(myZ&Mp};h z-rRjGEYhRif6haq^0v0D@{#1(xw%1Kv58@08y;s1A?O|_)0TI51rkHc$QUB%yvhlZ zuV-{G0^aQH9*jfM7EZ#`Jvhh!2KZX0f5!a$hbEVedlFzYz4E(ixX7DSr%+Q|y0kPk1EQkvsi~;}p1yE`>&+gw zD}%`zj1L(EcLJye9e~x(_QbqGna7R|J*q7ROfHT#f`Wrbi?kT)98iNNI|w+wmx~K80K%n(5J8_5R-cty~U%AqN7y^j`&E$J|@)w1IxVyW*E7i+O97+|4q7ZibU}slqIAC8mn8IhX zK30I=9*mm<&L$Uh3i|!~w;bHgK9qouL)@_SuTr<9FkGJs*EI~5jYv{a6Fp~^UyG;H z`d|Et8%p0J^M6QJPoc}?vRc-_O1|_?nNe#C{gPExC@r4OtS@FnZOa1GLBqm=0e~2m z&FuxZ-en#CeT_WzN)%?_W$5s%#>eeXGvQucj;+)0NlLG|erN^hj9S*OZ*fj#^>H1& z*Xo>$?DTM{IUu-QuT^E;tsYyitbxl@OiXT~PrM^6(5?`>vPAO=65^ri#ZWGV#^l73 z#ZVr*cF8X8)M!07+e_t-mXvt_17__5+c@t&{J+Tr90E<6`X zl8cKfZUc(hRR&S8&-$O!E8Dr5?f9YSzaWk>rrBBL0S93TwyA!J4km+Ix)u$GRz(|1 zPG$S&@ndN!XUFWUq7TvSPy5X5RqceJ&A~#j@*iT#1YQ!qp+ne;FPvkybLcy9Rqs(< zZ<+9ii^?uQosODN`G^Lc4{P=xfBjZbPgS*;oYNC}HU5jLeDYE6L3yR!CdpG&Z@jqg zi|>YvuMWy>-G)@NH;eIn;SPI&ohsQ|RF_`X%Js0ydzwT6{adAzS;rKc-n2 zq}8d6g)ogzyB`PU&oj7VaJzf|;6y+JG>3++NwG1bz8v^W6U_KTV{%?PoHPxZ0fWLZ(u3^sY%v(49mUUy_`5d-i#4dzT4wFHancm!X%K<%^bjfQz!R*U>qvLtv{W*G&3nj z!KgdJH0zkehi5pEHlzM|H)UI9G?v%maS~7Y=sqQz``Og^t6Il{U5N)>{QgDxZ@Isl zVg18%lA=;4Y;aeyq%?xZ$)is4=?Y?V-K)YW41eC0VzoZU=qa-{r4cgj^IB7(IK&Gl zdaWL{aQNkD77T1_-ys~@Jwu1 zs-CKA(|Myn_}PsvhtNq?%vvATxW!&dvGQMYigzcq9C?&JOCrp|98V}GmEEX$E07vR zgcG?(Kjx` zUR)^E3pvQclbP?blN)<((a*|vpY3Q>bMtK^`w+j|D~1iF3BK4wvyrtT)dTC=n3~kS z&`6}vzwXqzSLZrp!h~^eJeqLi9a!$=|0EHPck9a?gwiiPz1U1OqRZhdb++hfFry($ zn!SoOqcP)Fj{P3p!>Y&tLoy!17hn1rK($0kE614xBFSlL@pijqO_b?#$G-WCHGh%Pjs_5%3QMF z{*)`!ZFZAzOtE^OZCh?;j>d1=#d|G&66ukQEH@Hg9m*V%#up7rPp8ZB- z+HC5P6M^_*OeUtL@JT;EKbZ5{;3C4ImFVr;w~I#`V{L71Qsg2Y>hVcQVI3VZT<*ID zt~Wq8J|QP()zs3Gb#$yu=CO=yIGywUs#>6hI6OKcMERbk0}e#Q#l_VIh~N6L7j+N; z;Q7zhMD~LK2_ow0>7k*bl0c&o7jISEiaFIP(z*Gq;pp>v*UsTt&xeUVvz9MqN*wIu zjian~@PvM_(B{_o_?v9F_22!aE*tnjcQ?W3?%v)DHvV)~5QLJ$%k%T^^va2aE5saz zgrB?n`w78C?h!OLw$jf7-Dl4Xjl1E{+D`U-_s}=4Sdq=9`4^fS20)FZOB{FX%z}b~ zi&+FBwbo|xDG`yZq$D~RoAe;=;^N|?qoZh_+{=Caymn^=!2rhiTvAdZgq&%*h^#m` zaH^`R8n&+G>-F{Vv1eX=K#MFY9!9;gfQ|Qdo7o%p;+hTz2M0eTB@Hz!U#lJxGwqJ1 zHnX%`T3PujmqX3Lfp2NK#=z0l-X1tQs(Em5Fdn4(`gQY4!$9fsO2UL{i?m$L{|7BY zob2x#4`)gCrwPVgUHO1aeUFT^|56(pF3V8;1eZdHP+nd>ATaPwEN+bE{V-~!)JJT# zU%f4PxA6bc8+gN?tEHtSz=i*Gb%g*;OhZG1(fpGTxy0N_XQ3CVAsSP7;vPyMG^J7 zs{=bjlJhbuU%+4wA7UAId~F`^+^bKy<#uVIiBbZsc;(NU959NGe`c&HJAJ@C1M10 zdc7pWA=?W=BoTHgNtgB-sc<|3_LE`iSwd(;7^bx00k_+$QM*{Apu?BEiSQT*^6P7P zY|{`Y{a$PqNevIPN`cjh1MlY2IPGeB5U!HxShJV^gK<&})pXE@(EfqKe=dTEg3P=s z70YdPYi5!6??m;!nN@+Cp-qikHBf5ooh+{{TktA3Xy`oI=(%d3>6*$`z@m$5B+*3~ zOU}31=lZ&SAG>Aab$f;OCShw@Q~;Aq8~Z{OISuaN?l@>8=G2G)>=}x^cYbl&X$gyV z{c}G9(j6A&sMAzJ|%G`qpnbmD4!ko1uU$X_!RoC8}6pjJQ>q{p-s} zyDSE1li2*Tn72Iknj^DaVD_t_sezu$bnJe2%QTi-sm!G9?aOJxwG*NR!KpvXaxyXY zFD36ngXNj?l@9tC+W$Y3!4?PRWreW#sN`0k=x46kjz!PF5E~O?yv<4arY?`i!d|=5 zD{H+D(R49Dk^J-Rhh421oEVb92FImvihv%TqLOLTu1Ishc{}lPB;66>3f3EH25_X` zy_Z(QDF`i1*GnUuU^6L5^~B3RxhMVV*F&MVS8L)C6v0O&*O#Yz`c{q;Q7y> z`cD!|yLpC0+INvZ!Lj3VJ!br{wG8h_J479ctzVHZS7XWaYd(iL5fM>QsGxKH#l>*8 zG@6dC?!xZwV8{1op35=v*5i$0Q9vRM4i3%&F$6?SFaR)quW5+inQ@$n-R9L^%O$&h zoh`aV&d5Kwwh=sK?QDOkqqEZqI5@LNBv_aMz%d7!S98YQu6=+5X3*@FaJko-2_)sx z^744@tK3BD(|%Wv#qW$$^$w8R>pg!GK_@z31keHTI_Ozvhv-aoX!#CwCyzz{JouAK zbG%koPOi!UCH9=%K*#cYNc^@Rb#o#>>AlVM^yyQbiVx^U{@1m7l*GhcExwmJRc4QX zAb<1j-NB4adF`7s&1XGkWg!U(M8?L(OrcWN*4F8V$*HMhwKm!rz9+hO%OtYt=etD% z`-6d#Gde4aia|B4dlOz_=WfF~p*MT!15=WD=gp@cvnY3b=uF<&9^n={kY zb@NF|urYbyKmzwtP9t89LQMQ(JqM79Ldc20oJSy-1eKOUl!o3rd~Un5J#)?8WVUOI zf5U)X1e~k3wy)S5!`bbx*N~0Qj9LY%=41J!AC7Ftyp0`mY^;ZJDg zhI8ccZEbBmHj4@>YHF54Ab#p`XPq5v%*;gz^O{>!agCI~pOBH2jY&xO3#2Ytn*Zr8 z(q((<2|hkPa7j7>FtNXV`}P5d-)-d2q&s_f41PPw2Xc@Hr0kus0qiW^$>MPnb933r zviCMB&!nh=Bs2(t>IS8`kYwbi(Kj|WR#aH{yQ{0~gQH@-DuXiyxN#D3KM_!4`5<}k zJb{}+LPBx{d~6G_2+;i4vKobjg%S_Hyes+J))o-Qs1_R?Jv@H^o(_0yJc4RKMP7wV$N7uMb!q(&dxRfFPlBT8}d=E-e8gWC7IDU5I{Eg>oITCeLagg7|~ zKC|i9&CkzEczC?Z%gg(9wip&4AO8tF6sfWrp#e>T?s3q=2&TUA$@cV{H*W|C2!6Aa z{~BEe=wa-1%Cok%)~8RUAG1|2kuu!%qc%3jSt+*Yzj^zA;P8JS8<6?`^-q - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin176 Member List
-
-
- -

This is the complete list of members for IRDaikin176, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikin176private
_irsendIRDaikin176private
_saved_tempIRDaikin176private
begin(void)IRDaikin176
calibrate(void)IRDaikin176inline
checksum(void)IRDaikin176private
convertFan(const stdAc::fanspeed_t speed)IRDaikin176static
convertMode(const stdAc::opmode_t mode)IRDaikin176static
convertSwingH(const stdAc::swingh_t position)IRDaikin176static
getFan(void) constIRDaikin176
getMode(void) constIRDaikin176
getPower(void) constIRDaikin176
getRaw(void)IRDaikin176
getSwingHorizontal(void) constIRDaikin176
getTemp(void) constIRDaikin176
IRDaikin176(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin176explicit
off(void)IRDaikin176
on(void)IRDaikin176
send(const uint16_t repeat=kDaikin176DefaultRepeat)IRDaikin176
setFan(const uint8_t fan)IRDaikin176
setMode(const uint8_t mode)IRDaikin176
setPower(const bool on)IRDaikin176
setRaw(const uint8_t new_code[])IRDaikin176
setSwingHorizontal(const uint8_t position)IRDaikin176
setTemp(const uint8_t temp)IRDaikin176
stateReset(void)IRDaikin176private
toCommon(void) constIRDaikin176
toCommonFanSpeed(const uint8_t speed)IRDaikin176static
toCommonMode(const uint8_t mode)IRDaikin176static
toCommonSwingH(const uint8_t setting)IRDaikin176static
toString(void) constIRDaikin176
validChecksum(uint8_t state[], const uint16_t length=kDaikin176StateLength)IRDaikin176static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176.html deleted file mode 100644 index a7fc225ba..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176.html +++ /dev/null @@ -1,1089 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin176 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 176-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin176:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin176 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin176DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off.. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setSwingHorizontal (const uint8_t position)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin176StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t setting)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin176Protocol _
 
uint8_t _saved_temp
 The previously user requested temp value. More...
 
-

Detailed Description

-

Class for handling detailed Daikin 176-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDaikin176()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin176::IRDaikin176 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin176::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin176::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin176::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin176::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin176::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingH()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin176::convertSwingH (const stdAc::swingh_t position)
-
-static
-
- -

Convert a stdAc::swingh_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin176::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin176::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDaikin176::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikin176::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
uint8_t IRDaikin176::getSwingHorizontal (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin176::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDaikin176::off (void )
-
- -

Change the power setting to Off..

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDaikin176::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin176::send (const uint16_t repeat = kDaikin176DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin176::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
-
Note
1 for Min or 3 for Max
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin176::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDaikin176::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin176::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRDaikin176::setSwingHorizontal (const uint8_t position)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin176::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin176::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin176::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRDaikin176::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRDaikin176::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingH()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingh_t IRDaikin176::toCommonSwingH (const uint8_t setting)
-
-static
-
- -

Convert a native horizontal swing postion to it's common equivalent.

-
Parameters
- - -
[in]settingA native position to convert.
-
-
-
Returns
The common horizontal swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin176::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRDaikin176::validChecksum (uint8_t state[],
const uint16_t length = kDaikin176StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin176Protocol IRDaikin176::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin176::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
- -

◆ _saved_temp

- -
-
- - - - - -
- - - - -
uint8_t IRDaikin176::_saved_temp
-
-private
-
- -

The previously user requested temp value.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.map deleted file mode 100644 index d1dc49e1e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.md5 deleted file mode 100644 index 59cdf79a4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -033789d9f6d28bbeaee488c1d243f76e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin176__coll__graph.png deleted file mode 100644 index 718d38c716fd21dc3f8b4e76d18987e29bda4e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6624 zcmZWu2RzjO|JO1yGFtXJu25ujMu-$=oU+O0kS+7hs+5s^R%a$NGY%0Vdv6(cN0gDh z_xQj4e*f|P|Nrj6@pg}Ue?G7G>-Ah0@)V&+eVOSp2?+@`TuDI#Ja2+;e{xdrQ}XRr zGI%02S5Z_TIX!!Ptj&obAz_SzE68biB`*`b^{%;})UWTdtgt-P)1s%9&``FropzkP zbm?pCd20T4BeQPza(bluFm-z>QS?*jVg??0Xl7un@o?z+kQy~XxV)y!7Rz=1B^~Y4 zmA0AW{bMs#uC~X$>-AHI=u{M2PnS>KCRSoo!qx2iWVEGzJl)0ge3hq+Qs?Dpw;n-o z93RM|yWW^`DF{=(2@$GuZ;Iwt+-sFRF$>dsd)Kl5)8hv_qZXu}53A-B)}^c}dmx>D=->qaLfdE<}lJuDrEG-fFqmX$D; zYe)gZ%BUBE*^E9CDf&J>4>&nF?;sdP{(EcMb^&tUPnyupFJ_ISH7Hz3saR~&qk~$nYS{$HJRtZLe&!ALf}f6x8dQ`$A`PtEn$o- zvVJv>wppanv12%EX8V)1HD?}#>*g$MgO!yv?l0^L>{R7Xe(`tnt`GM{$H#>&+h{d3 zG-6-CoXEVry`O|LHT$0)PI|PCVCcA?thGba2->W~{!Dnx-e%e<;g9QY&%r&S!&qr^ zFx^7hL_`-I9bH?gs=hv>_wGuTdYa5x$(9IJnkJ!@cB{3!Y^4G*v9UwbTLS|cmijt@ z2_}AwCMG5XBJrHK&z_LF%swPNJ^jzjOo{6p!eeQ)KQp3bIVvF`C^GU&3{-u#BaWZc z1eWd)KB?y7a?k%@FpZp&@^=uspOA+hI%9XxUPVQPl!m2EYPIH(p5D#Px!#GIE8AQ4V(=C}|8H;+?5&aPP$)F0ukR^I zg#$hioHO%%`-kz!2sY`E_U}8k7hR4^PczkCfU@_m?k1cMU7+e*}=V_w=;j@kzganYu})2&>y2 z8Y?N0|NQwgGbabMqvZz`=>ByV7nhfm8PCOBrWGW(xIT^Tm6eGyMqOc*95SyGv-{Zw zrnF;Dk=<7-B0OAM2CQpEgoVY5F@>`*Fbo#>sB9J+lq>K1Y%gdtMuFi^id9io#&mae z85lv?+1XL;7@m%~PoKCLqliS}4Cs!|nVFdl(9cLIDJcmkG-u2MlqBYcfF1`PkMF#6 z>5{S!ziyG%LXFq@C#p6q7TZxNV%^jB%4dHA$rC}%e7~%^D@!H8^5J*qDS4c`ZSRI7 zF?;z^8@LbFyVkh}PDCgak$meyhv|zKw?T>d2StR1Ez1q=q{;Yx(>DU3CCo85GjscQ znL**wuU{X#Cda=gq^91z@Y2jIUHG{E^#x&$8`rLtd#6}d4IhQU=A*0D^@*v{-sfR# zbgVKy;vOCzN*D$3mDGzbGO06`xMLeRQR~g`j~^W+d8(;7m|hvlF5A-{1I3D1M+hSd zb-3a5{zt#r*Vos7fYHd!y;V?Hm_)ev9A`z1flMtdbbOuk>nt*=c6M=jmhJ83b<2P5 z&mU7q$B3Mq9O0Fd!&Tkv^2|bEeSQ58SS*;n;i=N>qV>dmP{oUvF0Jp@ow63{P`-MS zVYc|QP(Z)*EocoPyPpDx6v;~ut*m%S9334y)I>!@L^?V<+dDcm7V3!K6Oxib4GJBF zYqM7892rHiU+u@W%lQok$l5~NhK~pp9>29%=c&P9Uj7N zyKahf`5x|MrKi7MTCztPqS4=ksckeoy*s?n=ugA8RbK1nxNUHr-vW$l(It*V$-Bli zZLRG71z}e%U!Imd-M=#FyUTiVaM^t{+l?4T10Lj*;Lj~_A?QC=kGB7iDhA=>L3ko2Tl1zm< zoo^`^R&4YE>9mfFB%n5DLBZ4!2pY=k0vsG1uVj1=NcwWr*%4_ng-7${+AWQZ0rm9{ zt-2GN)n$(r09}-nlt7@+uXZTnJAhxIHw0(HVG|#ViXy;U;_SzS2L=Z}7Z)q$5Az)s z1O<@+F0h*I!e(Y=Jp(XaV$n)YLz7)mQPGV=p-}hGTQ&`ijko#uxVX6k+S-(Ai(@7* zRqI;=pzGi$;#IN5mXd3#giNBGl{Mg>UV8afT zqc-)k@Ocmf4jL?d*fvfxJ1MPUtn38?08~}1aF+f)K+w$r6+ybISKo$)QhM(!nf0bh zd&ZH2IUF4uy9Wr>$H&Ln)zt!EXU7(p*iz3`V|#o1*y=HdxHG^yYa|9JBGdo$Bw5_$ zysT^;z&FHfZ<@NhyBGjNQ$nSSxTGXKE$yqA7>0b^VqO^;HUJvGTDtEzIXRs_e}0}= z4FgnX4Jx9iuU~Gb5BAp5(V3o^c?_W6%*^b-B%Q|4l(NC0zuoZ_mM?=y!fRb z$p0VR^Dpu7uf<@zM>#V)yT9OXAqr|nTZr8qtD=!`*7tB*du7{O3q^7Nz@f z5YO7sk}L4_mk+eDCW-@T1L9Xx z0xDKo`YWS53_qRzMwsq-PBO+SSzTCTnY`fOOF7amd29c3;PPP4M&nO@*ow+!Qcuo( zK8oJtnGS5;bt%swv9>MdIh(g_TZ3K39s!d(u%|1`NVA|A5^^*=sF5d>u}6)So+3-6Dm^V4&q!It-L_O3^KtUgAS zS@N1$2(gDx13%LdpAzD^z z`Gwy~DF>!E@$b8uD)qc2;D-8Tj} zjC8k^1$Ch5v_x#88|zzI!C7tup4;*#P{2R^Wh;Io)42Sl3?`!Eh33JGy%J?$iOyus z8Rw&t{?wZ!t;%ev9E{Y?MhzS_^HMFe|kd{%ogFz z6P!@r6_vNlUM2LH(>%6jSerPmlpa6g9a;XKbXU17QMe4hEa2<2#3(uVuF+{m1H)UC zw!J*wyvTxrC71~kM$EYym+O*>lp#2}{hHAr;{bcOub8H2%n)~q&TMBJ6&j5f_Ho=r z1;vYZ-!IK;kW{`q^y^-Wn`4t3=~z&QvtNBnW>E+}iUXrhs~S*gb^W3y=h?4sm8|51 z=(w<#ekcT6u7p|cnJr$+y9~SwJV#es4~ll!$12Sta?=s5RjkdK0-f}y{*Lbu{4u2h zpD zb{~)RFkjn-=R5EK@Ie8!BkWb{HxZG|`pa>s*bO!HgQsq~-qdXTHpcD{!iw zWO}(Z|LlSy(r~(s5Q0))4jEynzO%zCE`Bp* zB_YX)8RiJ#Y-S;?|ZM27}rA6QjN&dBRJzLxYej-cZ+R z8%L*hoPN4`#>Mz%>UTATC_fnX>hEp0^lr=dX}c>te0r!k%=y(&i)Rgc9Q04#Vm1id!RQwLz_dISWkTfrZb%mRh#cKMA|}qd*@g?!Iu9 z1gK_`%Bm_(I6VepW@YsRg^~c`QJJ;YdspYAqNK{jq9{8%5NtVQ>mKvh*w`5T{0gln z?wun7lX&uw^wOm>R!8Lg#`VfH0$p=-Kl;@xlH}xMy;`&w5YeM! zMDfB&pyeheCN5sQ*a!S2Pz}9ZSdo%aTa(kd|EmJf;U;bf4)Sa{H$-3DwbY_%ycnv5 zrqT4fQH*rBMc*wv{bklyJYy z&QH@|SBhuF%G1nOQDSY4>c;nw_VnFHwhzQo?|fIS$-muMG_!`UqM~+vvC9m7AgyLW zTnz*V=u$`H*^GKcO?Hw9f8;P?N9x7zkP;zi(q8|}qB}Uj5X^Q07p5vy6AM@M(tPCp zOj_|Y+HT2tWjxx`^>d|R>sy!@@A~;IZ#V=;@w8fRx|$G>R&m31U3MglwTHFy!P5@) zkmj(Et@?>V{FY}Sj0>ywHm8m|AbWdylq{iN%&pc=(I}wntKH^J(ZUD7HG-{@%qRg9N;p$J{O{d8BM)(3sK&%W~Y zVV;)NqTPdXQjJfgQC&8=t=sa4A%$bqXV*@6GM!&%B)lSpwcJ}>Oo-B=w=h}OgH_4n z6@)!6#P3+Cdf{YIt$gCORed%t$rD;iE3g?*uYkA!uO_)k@FIp?bvy< zrB1!ufJHz~m4DclvQf?*#w@2=A2DLTgSvWyl z5*_P-yJCwHUvyg_^#8HJ^{WS7*lI7%n)TpTXDR_0ETJ*z3bRz${o$1Ij1zCgp}Nj@ zQp;C01M_+bC0?0VJLTfg;k~pVhk93CU0u@H#|*@S$KIM5$lk(OpCqC6tIRB{)OYH7 ziQ3X^6%#`~&*Yvt%=tSY3=LTZv(-dAZlbv{`)qJEH8BtJ1~p)3!dTx-gxLLqq5ge# zHp5F}xUo9_x{^lPaXARCuc=e8t_#Et)c5O5#it!Tpk;18Kz`+lt_-`B2NelF zKRbs+VW&>A{{%b$TSl^dtY!>U|0*$IY z&VAJQyazl~lIj&Is?5AR)EosE=BSxaC9pw#R7`OorD6*k4AGv(saCgx3O$-G_)$uJ>i_y{1d;9xStE;_Re+SPT5e)Xi zX}PSbq9PtRdt=nhH4q9+OdsK_d#ynFBVbS#oRf-v5AvJ{c3D5gMGy(O@2pPt{%Mbi za{+$+HwYIYw{DSx*bzi?A;H0w83$_NO0#!?uZvHS^5lYRR3p;Z{f}Hg^x59te(qN{ zY!V_S7I%S+X6<0Hc(eJ2NfZV%U?r_vY|H~V7DN^FtgPYX<=YN($H2LM5V59_@>nvR zZVIVcZ(%0D*>953u+%p+oCgUc2@?~Oxa%yHGKPf`Sji$jez-S+TLPWsHl3fLO`N$?F@YTkxFud3k-d z<-iIvFfz7Buu9#OMvH<UOt`1GKN#^8i(s_7bgb?iL9*b$$qbY1(qB*(jOfi?{m`pz8RHBN=owiKiAhk2kW^dIeoOh zX;|s}8aQ!ea(THJ2C@$LUD&jq#NNRHd(VP2K0e+DWNfT?lUGA5SIk*hS@laTDS*QU zqmt9Tzq>lAUTj?J?CCi-UT#;QSMmlVZa}HP;c&Bw8k9}>xX$8P(a)mj_336UEke== z!3U(CRO~V=Fc=J(92a*DBq0vMX#$;XrC|`_3r)d6PD~XgkR{v@$Xm6f`~7`=HJyaO zK+=~lU+&FkM2>!SVh2`N5kwbucF{=2a)a=9?=D&Qrt)xdrgzT(!e0lC{HfnYuhN+l zlsHiD&SP!uYqxLTR&(?bO9XWXt#cL|XlgbBeg@$OxER96d+wK}PrHnUfcb|jDVeTL z)B?YM4px-Uz`#)Q6hrHD34Feb&x_=)-h4PrGB=OL1wUHpz3+S9hNTk@4kmm^M}LOq`x(9 z7v<%dkCh^UV}A*%4R#E`;ar0(?umWMH@XlS83~0z6hvPySpx7H}&^GHwHWWJ3afj8G_&H+}OTy9^~# diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2-members.html deleted file mode 100644 index 4c5f0f23d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2-members.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin2 Member List
-
-
- -

This is the complete list of members for IRDaikin2, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikin2private
_irsendIRDaikin2private
begin(void)IRDaikin2
calibrate(void)IRDaikin2inline
checksum(void)IRDaikin2private
clearOnTimerFlag(void)IRDaikin2private
clearSleepTimerFlag(void)IRDaikin2private
convertFan(const stdAc::fanspeed_t speed)IRDaikin2static
convertMode(const stdAc::opmode_t mode)IRDaikin2static
convertSwingH(const stdAc::swingh_t position)IRDaikin2static
convertSwingV(const stdAc::swingv_t position)IRDaikin2static
disableOffTimer(void)IRDaikin2
disableOnTimer(void)IRDaikin2
disableSleepTimer(void)IRDaikin2
enableOffTimer(const uint16_t endtime)IRDaikin2
enableOnTimer(const uint16_t starttime)IRDaikin2
enableSleepTimer(const uint16_t sleeptime)IRDaikin2
getBeep(void) constIRDaikin2
getClean(void) constIRDaikin2
getCurrentTime(void) constIRDaikin2
getEcono(void) constIRDaikin2
getEye(void) constIRDaikin2
getEyeAuto(void) constIRDaikin2
getFan(void) constIRDaikin2
getFreshAir(void) constIRDaikin2
getFreshAirHigh(void) constIRDaikin2
getLight(void) constIRDaikin2
getMode(void) constIRDaikin2
getMold(void) constIRDaikin2
getOffTime(void) constIRDaikin2
getOffTimerEnabled(void) constIRDaikin2
getOnTime(void) constIRDaikin2
getOnTimerEnabled(void) constIRDaikin2
getPower(void) constIRDaikin2
getPowerful(void) constIRDaikin2
getPurify(void) constIRDaikin2
getQuiet(void) constIRDaikin2
getRaw(void)IRDaikin2
getSleepTime(void) constIRDaikin2
getSleepTimerEnabled(void) constIRDaikin2
getSwingHorizontal(void) constIRDaikin2
getSwingVertical(void) constIRDaikin2
getTemp(void) constIRDaikin2
IRDaikin2(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin2explicit
off(void)IRDaikin2
on(void)IRDaikin2
send(const uint16_t repeat=kDaikin2DefaultRepeat)IRDaikin2
setBeep(const uint8_t beep)IRDaikin2
setClean(const bool on)IRDaikin2
setCurrentTime(const uint16_t time)IRDaikin2
setEcono(const bool on)IRDaikin2
setEye(const bool on)IRDaikin2
setEyeAuto(const bool on)IRDaikin2
setFan(const uint8_t fan)IRDaikin2
setFreshAir(const bool on)IRDaikin2
setFreshAirHigh(const bool on)IRDaikin2
setLight(const uint8_t light)IRDaikin2
setMode(const uint8_t mode)IRDaikin2
setMold(const bool on)IRDaikin2
setPower(const bool state)IRDaikin2
setPowerful(const bool on)IRDaikin2
setPurify(const bool on)IRDaikin2
setQuiet(const bool on)IRDaikin2
setRaw(const uint8_t new_code[])IRDaikin2
setSwingHorizontal(const uint8_t position)IRDaikin2
setSwingVertical(const uint8_t position)IRDaikin2
setTemp(const uint8_t temp)IRDaikin2
stateReset(void)IRDaikin2private
toCommon(void) constIRDaikin2
toCommonSwingH(const uint8_t setting)IRDaikin2static
toCommonSwingV(const uint8_t setting)IRDaikin2static
toString(void) constIRDaikin2
validChecksum(uint8_t state[], const uint16_t length=kDaikin2StateLength)IRDaikin2static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2.html deleted file mode 100644 index 9ba417824..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2.html +++ /dev/null @@ -1,2169 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin2 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 312-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin2:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin2 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin2DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool state)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
void setSwingVertical (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const uint8_t position)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void) const
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void) const
 Get the Economical mode of the A/C. More...
 
void setEye (const bool on)
 Set the Eye (Sensor) mode of the A/C. More...
 
bool getEye (void) const
 Get the Eye (Sensor) mode status of the A/C. More...
 
void setEyeAuto (const bool on)
 Set the Automatic Eye (Sensor) mode of the A/C. More...
 
bool getEyeAuto (void) const
 Get the Automaitc Eye (Sensor) mode status of the A/C. More...
 
void setPurify (const bool on)
 Set the Purify (Filter) mode of the A/C. More...
 
bool getPurify (void) const
 Get the Purify (Filter) mode status of the A/C. More...
 
void setMold (const bool on)
 Set the Mould (filter) mode of the A/C. More...
 
bool getMold (void) const
 Get the Mould (filter) mode status of the A/C. More...
 
void enableOnTimer (const uint16_t starttime)
 Set the enable status & time of the On Timer. More...
 
void disableOnTimer (void)
 Disable the On timer. More...
 
uint16_t getOnTime (void) const
 Get the On Timer time to be sent to the A/C unit. More...
 
bool getOnTimerEnabled (void) const
 Get the enable status of the On Timer. More...
 
void enableSleepTimer (const uint16_t sleeptime)
 Set the enable status & time of the Sleep Timer. More...
 
void disableSleepTimer (void)
 Disable the sleep timer. More...
 
uint16_t getSleepTime (void) const
 Get the Sleep Timer time to be sent to the A/C unit. More...
 
bool getSleepTimerEnabled (void) const
 Get the Sleep timer enabled status of the A/C. More...
 
void enableOffTimer (const uint16_t endtime)
 Set the enable status & time of the Off Timer. More...
 
void disableOffTimer (void)
 Disable the Off timer. More...
 
uint16_t getOffTime (void) const
 Get the Off Timer time to be sent to the A/C unit. More...
 
bool getOffTimerEnabled (void) const
 Get the enable status of the Off Timer. More...
 
void setCurrentTime (const uint16_t time)
 Set the clock on the A/C unit. More...
 
uint16_t getCurrentTime (void) const
 Get the clock time to be sent to the A/C unit. More...
 
void setBeep (const uint8_t beep)
 Set the Beep mode of the A/C. More...
 
uint8_t getBeep (void) const
 Get the Beep status of the A/C. More...
 
void setLight (const uint8_t light)
 Set the Light (LED) mode of the A/C. More...
 
uint8_t getLight (void) const
 Get the Light status of the A/C. More...
 
void setClean (const bool on)
 Set the Auto clean mode of the A/C. More...
 
bool getClean (void) const
 Get the Auto Clean mode status of the A/C. More...
 
void setFreshAir (const bool on)
 Set the Fresh Air mode of the A/C. More...
 
bool getFreshAir (void) const
 Get the Fresh Air mode status of the A/C. More...
 
void setFreshAirHigh (const bool on)
 Set the (High) Fresh Air mode of the A/C. More...
 
bool getFreshAirHigh (void) const
 Get the (High) Fresh Air mode status of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin2StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t setting)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t setting)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- - - - - - - - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void clearOnTimerFlag (void)
 Clear the On Timer flag. More...
 
void clearSleepTimerFlag (void)
 Clear the sleep timer flag. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin2Protocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 312-bit A/C messages.

-
Note
Code by crankyoldgit, Reverse engineering analysis by sheppy99
-

Constructor & Destructor Documentation

- -

◆ IRDaikin2()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin2::IRDaikin2 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin2::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin2::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin2::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ clearOnTimerFlag()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin2::clearOnTimerFlag (void )
-
-private
-
- -

Clear the On Timer flag.

- -
-
- -

◆ clearSleepTimerFlag()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin2::clearSleepTimerFlag (void )
-
-private
-
- -

Clear the sleep timer flag.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin2::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin2::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingH()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin2::convertSwingH (const stdAc::swingh_t position)
-
-static
-
- -

Convert a stdAc::swingh_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin2::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ disableOffTimer()

- -
-
- - - - - - - - -
void IRDaikin2::disableOffTimer (void )
-
- -

Disable the Off timer.

- -
-
- -

◆ disableOnTimer()

- -
-
- - - - - - - - -
void IRDaikin2::disableOnTimer (void )
-
- -

Disable the On timer.

- -
-
- -

◆ disableSleepTimer()

- -
-
- - - - - - - - -
void IRDaikin2::disableSleepTimer (void )
-
- -

Disable the sleep timer.

- -
-
- -

◆ enableOffTimer()

- -
-
- - - - - - - - -
void IRDaikin2::enableOffTimer (const uint16_t endtime)
-
- -

Set the enable status & time of the Off Timer.

-
Parameters
- - -
[in]endtimeThe number of minutes past midnight.
-
-
- -
-
- -

◆ enableOnTimer()

- -
-
- - - - - - - - -
void IRDaikin2::enableOnTimer (const uint16_t starttime)
-
- -

Set the enable status & time of the On Timer.

-
Parameters
- - -
[in]starttimeThe number of minutes past midnight.
-
-
-
Note
Timer location is shared with sleep timer.
- -
-
- -

◆ enableSleepTimer()

- -
-
- - - - - - - - -
void IRDaikin2::enableSleepTimer (const uint16_t sleeptime)
-
- -

Set the enable status & time of the Sleep Timer.

-
Parameters
- - -
[in]sleeptimeThe number of minutes past midnight.
-
-
-
Note
The Timer location is shared with On Timer.
- -
-
- -

◆ getBeep()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getBeep (void ) const
-
- -

Get the Beep status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getClean()

- -
-
- - - - - - - - -
bool IRDaikin2::getClean (void ) const
-
- -

Get the Auto Clean mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getCurrentTime()

- -
-
- - - - - - - - -
uint16_t IRDaikin2::getCurrentTime (void ) const
-
- -

Get the clock time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getEcono()

- -
-
- - - - - - - - -
bool IRDaikin2::getEcono (void ) const
-
- -

Get the Economical mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getEye()

- -
-
- - - - - - - - -
bool IRDaikin2::getEye (void ) const
-
- -

Get the Eye (Sensor) mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getEyeAuto()

- -
-
- - - - - - - - -
bool IRDaikin2::getEyeAuto (void ) const
-
- -

Get the Automaitc Eye (Sensor) mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getFreshAir()

- -
-
- - - - - - - - -
bool IRDaikin2::getFreshAir (void ) const
-
- -

Get the Fresh Air mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFreshAirHigh()

- -
-
- - - - - - - - -
bool IRDaikin2::getFreshAirHigh (void ) const
-
- -

Get the (High) Fresh Air mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getLight()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getLight (void ) const
-
- -

Get the Light status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getMold()

- -
-
- - - - - - - - -
bool IRDaikin2::getMold (void ) const
-
- -

Get the Mould (filter) mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOffTime()

- -
-
- - - - - - - - -
uint16_t IRDaikin2::getOffTime (void ) const
-
- -

Get the Off Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOffTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikin2::getOffTimerEnabled (void ) const
-
- -

Get the enable status of the Off Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOnTime()

- -
-
- - - - - - - - -
uint16_t IRDaikin2::getOnTime (void ) const
-
- -

Get the On Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOnTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikin2::getOnTimerEnabled (void ) const
-
- -

Get the enable status of the On Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDaikin2::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerful()

- -
-
- - - - - - - - -
bool IRDaikin2::getPowerful (void ) const
-
- -

Get the Powerful (Turbo) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPurify()

- -
-
- - - - - - - - -
bool IRDaikin2::getPurify (void ) const
-
- -

Get the Purify (Filter) mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRDaikin2::getQuiet (void ) const
-
- -

Get the Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikin2::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSleepTime()

- -
-
- - - - - - - - -
uint16_t IRDaikin2::getSleepTime (void ) const
-
- -

Get the Sleep Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getSleepTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikin2::getSleepTimerEnabled (void ) const
-
- -

Get the Sleep timer enabled status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getSwingHorizontal (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin2::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDaikin2::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDaikin2::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin2::send (const uint16_t repeat = kDaikin2DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setBeep()

- -
-
- - - - - - - - -
void IRDaikin2::setBeep (const uint8_t beep)
-
- -

Set the Beep mode of the A/C.

-
Parameters
- - -
[in]beeptrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setClean()

- -
-
- - - - - - - - -
void IRDaikin2::setClean (const bool on)
-
- -

Set the Auto clean mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setCurrentTime()

- -
-
- - - - - - - - -
void IRDaikin2::setCurrentTime (const uint16_t numMins)
-
- -

Set the clock on the A/C unit.

-
Parameters
- - -
[in]numMinsNr. of minutes past midnight.
-
-
- -
-
- -

◆ setEcono()

- -
-
- - - - - - - - -
void IRDaikin2::setEcono (const bool on)
-
- -

Set the Economy mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setEye()

- -
-
- - - - - - - - -
void IRDaikin2::setEye (const bool on)
-
- -

Set the Eye (Sensor) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setEyeAuto()

- -
-
- - - - - - - - -
void IRDaikin2::setEyeAuto (const bool on)
-
- -

Set the Automatic Eye (Sensor) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin2::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
-
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
- -
-
- -

◆ setFreshAir()

- -
-
- - - - - - - - -
void IRDaikin2::setFreshAir (const bool on)
-
- -

Set the Fresh Air mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFreshAirHigh()

- -
-
- - - - - - - - -
void IRDaikin2::setFreshAirHigh (const bool on)
-
- -

Set the (High) Fresh Air mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setLight()

- -
-
- - - - - - - - -
void IRDaikin2::setLight (const uint8_t light)
-
- -

Set the Light (LED) mode of the A/C.

-
Parameters
- - -
[in]lighttrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin2::setMode (const uint8_t desired_mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]desired_modeThe desired operating mode.
-
-
- -
-
- -

◆ setMold()

- -
-
- - - - - - - - -
void IRDaikin2::setMold (const bool on)
-
- -

Set the Mould (filter) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDaikin2::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerful()

- -
-
- - - - - - - - -
void IRDaikin2::setPowerful (const bool on)
-
- -

Set the Powerful (Turbo) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPurify()

- -
-
- - - - - - - - -
void IRDaikin2::setPurify (const bool on)
-
- -

Set the Purify (Filter) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRDaikin2::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin2::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRDaikin2::setSwingHorizontal (const uint8_t position)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRDaikin2::setSwingVertical (const uint8_t position)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin2::setTemp (const uint8_t desired)
-
- -

Set the temperature.

-
Parameters
- - -
[in]desiredThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin2::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin2::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonSwingH()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingh_t IRDaikin2::toCommonSwingH (const uint8_t setting)
-
-static
-
- -

Convert a native horizontal swing postion to it's common equivalent.

-
Parameters
- - -
[in]settingA native position to convert.
-
-
-
Returns
The common horizontal swing position.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRDaikin2::toCommonSwingV (const uint8_t setting)
-
-static
-
- -

Convert a native vertical swing postion to it's common equivalent.

-
Parameters
- - -
[in]settingA native position to convert.
-
-
-
Returns
The common vertical swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin2::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRDaikin2::validChecksum (uint8_t state[],
const uint16_t length = kDaikin2StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin2Protocol IRDaikin2::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin2::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216-members.html deleted file mode 100644 index d1de14356..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin216 Member List
-
-
- -

This is the complete list of members for IRDaikin216, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikin216private
_irsendIRDaikin216private
begin(void)IRDaikin216
calibrate(void)IRDaikin216inline
checksum(void)IRDaikin216private
convertFan(const stdAc::fanspeed_t speed)IRDaikin216static
convertMode(const stdAc::opmode_t mode)IRDaikin216static
getFan(void) constIRDaikin216
getMode(void) constIRDaikin216
getPower(void) constIRDaikin216
getPowerful(void) constIRDaikin216
getQuiet(void) constIRDaikin216
getRaw(void)IRDaikin216
getSwingHorizontal(void) constIRDaikin216
getSwingVertical(void) constIRDaikin216
getTemp(void) constIRDaikin216
IRDaikin216(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin216explicit
off(void)IRDaikin216
on(void)IRDaikin216
send(const uint16_t repeat=kDaikin216DefaultRepeat)IRDaikin216
setFan(const uint8_t fan)IRDaikin216
setMode(const uint8_t mode)IRDaikin216
setPower(const bool on)IRDaikin216
setPowerful(const bool on)IRDaikin216
setQuiet(const bool on)IRDaikin216
setRaw(const uint8_t new_code[])IRDaikin216
setSwingHorizontal(const bool on)IRDaikin216
setSwingVertical(const bool on)IRDaikin216
setTemp(const uint8_t temp)IRDaikin216
stateReset(void)IRDaikin216private
toCommon(void) constIRDaikin216
toString(void) constIRDaikin216
validChecksum(uint8_t state[], const uint16_t length=kDaikin216StateLength)IRDaikin216static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216.html deleted file mode 100644 index 2b16b28c1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216.html +++ /dev/null @@ -1,1071 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin216 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 216-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin216:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin216 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class Constructor. More...
 
void send (const uint16_t repeat=kDaikin216DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the Horizontal Swing mode of the A/C. More...
 
bool getSwingHorizontal (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode status of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
bool getPowerful (void) const
 Get the Powerful (Turbo) mode of the A/C. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikin216StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin216Protocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 216-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDaikin216()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin216::IRDaikin216 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class Constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin216::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin216::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin216::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin216::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin216::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin216::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin216::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDaikin216::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerful()

- -
-
- - - - - - - - -
bool IRDaikin216::getPowerful (void ) const
-
- -

Get the Powerful (Turbo) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRDaikin216::getQuiet (void ) const
-
- -

Get the Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
-
Note
This is a horrible hack till someone works out the quiet mode bit.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikin216::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
bool IRDaikin216::getSwingHorizontal (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
bool IRDaikin216::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin216::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDaikin216::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDaikin216::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin216::send (const uint16_t repeat = kDaikin216DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin216::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
-
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin216::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDaikin216::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerful()

- -
-
- - - - - - - - -
void IRDaikin216::setPowerful (const bool on)
-
- -

Set the Powerful (Turbo) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRDaikin216::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
This is a horrible hack till someone works out the quiet mode bit.
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin216::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRDaikin216::setSwingHorizontal (const bool on)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRDaikin216::setSwingVertical (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin216::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin216::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin216::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin216::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRDaikin216::validChecksum (uint8_t state[],
const uint16_t length = kDaikin216StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin216Protocol IRDaikin216::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin216::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.map deleted file mode 100644 index f3934b321..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.md5 deleted file mode 100644 index 9ed164a92..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7002fad30e60f7416041ecc760b3a61a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin216__coll__graph.png deleted file mode 100644 index f4293595bf80730b5f842359dd866acfb8b92c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6721 zcmZu$1ys{-zef=L8oHiLHyy2aN66f6z-DvmDqVKC@r+*-Am0Vcqb}#sON|>Uhl*WUE zf#5F$bg5WUw8ep<%LmIHmq_EAN?CSk=F>k>TrM|Pr|G%7Jv4!H?7JR11qB5hdDTFDV6Gnt2OXO-o794sASPI51F^H-mk+or}uiGkG?cf;q4y~emC zHeG!YoGvz2R%s~1D`jQX3Cr+T>lE|xong!mTDg^Y)YJGLDna8J9%5r-pa0$Jh$iC| z^4OWet#)1QCCu{KW~oYAYz>r1WKwPa{hQdy$tlZsPneaJ6$b@}!*P)&4)f=s*O=IN z+&+J;DXFOHH?n-E8a>NQ7Rn^Bt*or%V=4QtuP$O@%lPT#qnB3VBwBI>8onweG96B~ zURO_F1 zwsMny*;en&R7ZhH37$MLOS#!=+^0kE%+@&ARbS`GgnMn~ghxb2fBW(!h{K>J9tN8z zRvFvS(9n>4_wKn?p33r{t|&_*t~MdnMO7Oc7Ild$K21$cKhP%_9>QEDAjQGX4iR(* z)9YflHuBRaIwq#DJP0f&Cr1(b@l~!gd?Y?T{%4u*yBhZ?LoKb24t$A$)xN}n(o)Cj z%U?M%-n-S45Ag81yShT}VBRmco8;`coNx5xHEF+RXlVG1&zj(NM&kfhjf9L zD>PdpaO|wCtV{H8;QDB;GKSb;=MzeafDGnrKO!Y)-G0jj#!NA$hNh+zs402OeNRu% z^?_8gvw@kSSz;j(5gyMyLk6Wk;{{q_TWmVTlJJo)Iz`?~AFzd-|9muoXloN!R8;)k zo2L*I6qJ^c5e~d=G70dVg_xMof@0Lw)p5UHk`!=Sus=HHK?NTll6~ygFG+oU@@&7Ohsen?r`pV~U+KDIsiKmTNwWjaS!}D%8!RS^^*TU5SXf!< zSXn>y_9~W6TKL{vU*S-RjDL5xv9?}XY722gPQ6RXJK2hg(nBnV3Akd(A;OsurFM)x9Fa+$UZaZG2TP6>)h@}+1`^%Cl2z;QHA=DO2 zCEDB9N6XC}|M#yOeA@$ypP#?!bir2<+8IGekI_3YV7}1gU2ISrTUp7o5OA?;Icxdm z%~Px4EQ`e!|JAiMLIMIwFE1gV<^_$s5(h3iy1Tx zH0Y@cGZ#6z(2V%_=c2;GeflLeT^kw@2&cr&C91Njs><-q8}kS*TH3Z>>-DZ1=8{8w zeJ@l*-M2sE^pbKK##`vYFflRLei!Ld7;RjlQ9RGH#eHkKe8{Sr76bCS@2-CS{F$QE zs`MnVQ5Dos^F9ujfq{Yd#mR0MdU|@g5|mv%OKkcpM~My_ri+x+2a`0l{6r%|L!7nQ znG;YOb4gB4PJw~NDyul0UPeYn`Laaz+SF`{!3HbG2HjeNTF0N&2D0J!G_i?^PoNBh z6cn?2S2dv3Jd`A4aD_PPuvRKcN{sI%B@R04nVt(K%k7~%(^c4kfr0QD?V{hHdB)dA zq<1kfojp95UcRLE^}VnpZG&+c$1*5+d3zroPa0RbBXz{Y#c@&o{{Fau0ELT7N)Ayd zUKQkQZJ7zgZl)+PJv}NZNxKN?&Wq53=DDs%k#Z4{kaSC2AL6@-P+^eAgdHO%QAY?a zUenG8mV;?>^78jFgoTAMynKBrIKP7K0639ybS%xeLOS@O(dh5Lw=GdI^LvgT^%BAN z$Uv{oPxsZGonMUQt8ais<(HQeG((0fEfCiB_V!gVT~Va2r}O^}8Jxx~eux(w`adE% zJ7q`5#>fQhQ$~&{DJh?Ezmu%80epnuVg1cTV>WhQOIy1ufnEV%kE71UJfr2~al&+ssQrdkg;0Q$utFA&H_4W9c${Yh-Xo_mxu{(lopeBQo& zc5|_KbGDxD1je!)NO>_nKK`rG)9DQ>ac*vI*nZO%F$u}U-jSc5-*I2hxNT0aEad~Iwzyf@#dSN`q}=pG**-C9gI#-rvip^ zUT((%_^kqP0wW+G;1ZR6V-A)Mkn;ct10MJ7H!Hz!3KUZ+TSXuc@W7kv zuntCmCNimjyy=vPOiWBR-9%(k^BUbuO-;Q{rmY@6e%vuOmY6B(S?RhlWbo?a=g&_w zGBWA__ddYE>71QS=eL`9wmzIKkv;tK0tYaA$M2n!?OQl&+;2$-kTjaFP7_Nbp{Ah` zuj$?hO-XrXYis+q*@xe(C$2IoTlr2M$@Y{Pn> zs5)K#TeieMZL$L5*OA*D^IS3V$AqO4OnA_37NSCTw zd@3|)H^1UG3F(n&`Z>{?T?b_wf{T9obSY9Z*uQ#)9oj2G=D$+C7abr~3d7rlMVJdz zIAT&dAC$jnN_KybHpES*4`5hXF*Wz6NWwxvmsRvx(y4DgjPmmLo*T!eQ0|p?!&~84 zA&u@}I@P;_UV_E;0c0N~7ayFH{6m8W@OGzkG_EF#fSY#<0cQI*W8U&vs?-1oA`!e z+Vk5>v0&r{vw3!cR2!qyn}PO0B-v(kHT+X|8mwpBClg0RsOd*g6Xsg;gurenZc(r2P_o}^LvnyrN z-}#u|ag(ggtF*-<+IyaqO@WvdDL|ynWqeWkRFa`8^)LC_-NFe$x+LPckx9_mxlrSB z9)WMMy875?RDzjfBt}IXbG=*iGT7|QJ7!$Ge#O0r0E0r-NM(FpR+Lm!;i zsI$Be(LT9?kPkyUF^HU&S5{jD#AP}1>gPqmbHbgG2`GOrzBNuC9G#GRKx6r;Y_uSe zlc19cGh;AEPhldVeC8abtM@yOA>V?XA75EF6>cCxy>|ua=Aa>w-s8I44}8Y(l^B<& z=EHv7AQhG}vfLUGgw^>axiWlYBX<1*+pKO=^*_Xz*~B1yu~wDOs1~Dw6dLrN^Q?(h z<$eZZd~BK}-S;(stTrrojwwY#wAMYEV{)y&@XA>FxNMgA_49P0s|t)>dM0%!ACaA} zW|lDV7~V8)f%9gdvBWFB_3~H3UtL#OL8T|7Nb{BmM4mwqeaD7drj>PMhyCLs&eHrH zdyW=(k}GW3gMYmk+nXUCF z)zb1H2+V@qHTJGg=5C<)*raPCu61MXPD(q4kK%NX=C@7dxi&5SYRLfYX}bQMU3n)} zv^=O_{vhxGZ`4>^UDYN849{)L#b4s%YKFVat?Akz(AigMhWK zE+f)p(XRgObb;3r{~|@<#can8usKA)JJdO^y!Y_1>p+^-^c# zldvOgZSBtP?omM8b8~YKaB5`{SWq}y}tfmVSP)UuZ&;yo`i_V!RiK zWeq0cdus6}p?(*d+fh+B;9y}W1nE2LBDc?UY@Qq|)Gks~QCS800f**g2B6al$9a+d z{{CCEgt{EB}tS^Mr(iQ?s*)Nl9Hb4zp)xD{)T3*Omh(IBIR* z9;v_SZ@Ax_+fgoL6awKC)AZJI-)}yJ2(z&C9R&2o)4E7Y2QT}3c+?c@6s;vPtJi!l z`fY0=$@$MeXN)A7Y92steWu|tk7#n+dfjoUoXpu5l#!jyWo2Q}7X*x%eM+mh1Hl-~YJ1jbN{`#ih$cwgsXQd(03yS(%pw{@>VUteD{8Q>G> zR)un^LDOy|!$Ly|Nl3yVWg8MVXneEo=$!KM_=RR)`0IjO!$(a`E!ac}lw)C0QN7pU zSK1sP=v6E6R6Dcu2m)$+PaR3v-%9G}kl^Ct0<~akXE%a82J(l;qW`JoP==DFB@?hX zl;S?04-VdMZ_fnMMFPf#%g4}(h@?TGM8F?JMn&=3T!J8D+3G*5fUOymt2BPQ2M-=R zXJGgUwgv2W$3QA?MHR2(B?@Se!otFX(^FCbQZZ zn#FA1DHL?jr8VlL9o~xRdkvE@GulAjKQn0X5jSpv#-w*=5f1z4iDanBF}O14S3;k) zD$1xTVJciFIc>dnoL*)`zkz(Wx}=MtqYerXjWpN6sLtmwgP_)WRC6;f7A=&+UB_Hb z43~QbbE9KXUDJ(-XioVwJz$+id8eIQgJ>H}cU95+}IiqG?m=O z)jF1xwfz4RQN*PcYQuZUl`LWqn=K6-fIF2Jx%P5%6%z>&<~l-lqQp8LL}0ths;O(? z$Y!7VgyzF~MV)8-@0;I=9ol%@fv@;gc*F}GoT6a#jh*LeQ}nuz?wLDJJ#-L)F1-F7BNzGK+QftSYwt&iG#*_!~W>HIhIG0E0} zu}ec3eBXGTWcSlE( zr@JEVTs6=sGbAaRqn`XbA6T~ie2VW%ivO{e(wQPQb!}tAb@Laka`;H;IZcN3*#zz} z4QkmEyX$k#xx~vUoW|hYpR9@9R(SLZv7J3VJ)zV4zyml&jfE^4PK?Hyh%jus93XbfA1SuC6o_zJ} z?zXlMz_;-Fp4fwU?#|m5KVe|Bu_SX}A9j%%|FB*GUWtK`(fMRYuc^5?GB(z7s@z2I zX*f}&xGVGFCOi(Bl{FN2b79P+o~2@HN(T&V32eH;4BM&sm;|8GK&EIiSL@}dv}WxO zk6ryd)pU7VTUKQlJ1sqZ$QmMm3Lv}%um&k7C>zICR+ zOBEY6!i+s_oRH=9rKPdJLPEUPh)W^OGq&jbET2!>MLLJKR?GXyoQ|Ge*kdQfxT=a50)YVTBsVhd12o9v?(S|sU5TXx zjTZ6C;x@SpTre=57$h9}vOYc{z9&1&F@g(As9_1K{e|Y;8ds3nn3|bwO_WeXMn(cc zGp^m)$POF=S%s3ave}=`$R_l9x}g(JbaXV%`N{6=-q9U$3JPKO?We$6ilJ8%Rnqt( zLH-E?pToD=G8Na=Oi}BDz$m}48D+Qz8CYU`{JU}gE|4o?fBE_q%`L^6^eN!#`~~oo zE$7=s0<%Ja*J9xGL{o{vNFiQ#k_vYR*DHFc>7PHx07a$_I5R0Vtd|CEH_FAv#>Nk% z4PvMP-rZ7cNq2XCk<3_NlAn;0DuDRzmLoVhV*y9NXEb;c1~O&G&<8LMgJ;4n47bsq zkN<`GN9&nhBO{|bQ?*VsRaV1HfF8bldA{Jik?HZoWMe3EYI^#xmp<+paZ!4D`mz&P z!O{$2R~e{d1voP>PNPrB$;q0#GqbbwN<{eLe+jNGPJ2d163BQh-+?f;b}_*24aF;f zG>Oixt}AQF#(5yz1@^bbAmDUw-fe$@3NRyxN(S0PAA`vDwpcs!jmaS7_&T;VV{dk{ zGyQjKEF9<)O+9a9Ts=r0n1qE>EfBDgGGhri62w;{ASbjOGuH!IA;XqsqYq0ss5;09 zBO@XnOq3cao0%bKT`4FiMr^D7&X&V(18Cry8I-=3mg4EbG>d*uO-&tuEI2+bZD#MN zxVYHs__yweHDA*~`(wj;m$f`I<9Zjy+uRe8%mqT2{V=4&md=}0(E@NXp=oLTw@Ek%W!~>L`GAdqd6vL^4`NYopnq^k`}dkqY9OQN z0DCVeF8&7c1CZf|foQ3=QA`P%BIrcD-+J?MSmH(uh#vloIEo?`GzPdGaK{|%?Wd~k zNHIh`cHZ?t8N<9)o6~C?=RXw{v1#S2S=k8Acq$bTB8;B%M&)>5NwNIP(*Hk!{(t|K{J|@qm5p5CdrTEohdD4Hf>^O> zpbHhxV)`F>Uze#x@cDm5{q1k;zFaMA1wVIlQ@E!2gDQV5==DMw{3nE=B&Q}@D*Z0_ FzW|q~b-(}s diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.map deleted file mode 100644 index 75f3fefff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.md5 deleted file mode 100644 index 56cb02641..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -c1970ac3c4720d9200a0d8521594abc6 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin2__coll__graph.png deleted file mode 100644 index 50a55cd82fd3c7de5e66ff946975f208ed997010..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6058 zcmai2cUV*3mW_oX(o~QRQj~}YNG}3{^lCvsdIv-AouHr~RRe+$sS%Lggb1PhAhghX z@4bcI>m28sH*elwlYBS%a*~_7?>>94z1I5tLPL>^gq{QffsiRH$-M&abKrmz6M|PJ zE_XNZMrfw0CY#)gW9KAi1yAql<}`iyV-DqCA%s9HL=`7pwi2TM z86k?}EiqjL!h+R;PX+O@sM=Kq2IJbS+Km!xHT&8WL5D@$S5-qCNNiR;hrx1`d*isr z3Jfuc+_o-O{WgMrJ2=jySNBxo~OrVX>kbrvUhd2uz2@#>RffK<_@{;0U%KD^I}C zYFq9t_t=g9>9JXH4>yTTTwSKY4I4kreu%n0H;;=s-c7k2U#?DvLc>0kmI_cj-GV49 zD>t>|jA71)#l^&K(bBeT!Y_R_lEeqn+$EYPnoScEOe`!cMqV=n zt!-_{{17CPq4pf_DCV)Q8?x$@)!qH#;&wqC~*lz<^PfSVcv}YolT*^z-ML zW)`^M8;^pWjp7>b=|ak)MKyD0VtTrYIR0 z#%z%K`z>v4<_)2@)RM%%rKhtAd>cMfn^bf6@UWVx{|F7MuW(%=ZM$>l&JAMXe;OM< z7MnM_EVk2OD_dJtW@l$<`Ai_p%*=9fa!xC~_pv8mzEB!@FHqOl*T2XexK2dmx-~6> zJvlq`V`F0jE2MP%!LhMauXXyk*YWrpS}F{rQo>_B_1CY^tdszHM@L7W!;KD>i!CA*Rn;qA ztJzti{wIQ6Qm5Qu>3lwWHi6oQSD?JSoIE^Hfq@X8z2&;yE@{VKuKK6+NL)}c24AuA&`!V4Hqw3btGTV_Fe~f9$_wTekMpZ3C#_*1Xws^XyUVJZK zzFgk-!3yh_+nIJG3QhjFhz`#Inyu7SyTBA9N ziJgPv=X3Yb-|z0^>J%=X?5{oD?|H z2F_SII`V?}Y;{wTk{*M#hLKWhc6LbH+{BZ>#(%W)v5IIxRG}H4LYzV=D^yOx#6>{Zy~DQ&vNRTu-UB=GTOT z5j)A&*4BpE#_*3wBoYdR^8Ex|<~S_%=#eUfjgzyvXnnlG^(v)Kfx#_V;wK;%#ooJ% z9-FS9p09+4)9?yEboJfA?0)~P_-Ol^-HvS&=n^(|c5i&yQ1^-(pvkVsplsj;!KEp$xG9mv4IfK8bm$QFG* z1qliN8==Ra6i`=EbqbB1J@;%1VfG=`(b1ujXXW7`&(|J<(IbWJ`3Q>pDtR`DKKRcrz=o%cn3x~t8CGW2h3Fn+9 zjgE4Ph|n-FAgyXyJY%M+`Mm`O+Sf?nVODn#44bsre^$)GpZ*taDCk_roRKhasU3z+FDzxOc0ct z+oJP_Sk=jD?)=gcYG_SaNhuZlen4zY$PELGyjBD(4;}R0y=@O;B61osamqpjs zN{c5&<>lo)u(Z_-Xc~N2E8yehRphqvYSL?t%we($m-alw>v$m^G}h080`epcMR#{0 zpK4}lY3WRjq*k!;xR#bwaEAbYZ&Opt+uPeCy$J{iwzsepr8YfmpeAvhomQa2l3uiR zf<0;ec#}rA#!n3NFzb^iw?KH!y#Tj;eSHC(D=8`22uSMd>mv{dT46idI}gA(|2~32Bntc)A|)kS0cE;9+ZY@Y(ua05hMXMW+d!3* zUAm2qHg|PJhlUa_b|9O(q%YOpzNKRjwle`cjBo847RM`I4iD?*k`! zL0el+0Iy_ZWv}9JxIdMZSII;O2`QM>yu3swCnp=4n)p383>X<1N52hqCP`%H<#9lv zq2Ll`W@c({%QQT5y_Xgjo4_!ua9JS9&d!#Tm%lQ-x!E;!dEvR(o)Dy$Z-qnLS3?Tt z8@|ic;u5wSHnGY7J@DIJ!_xBpU$og-Xd|T;Y;mfXSzaEV`R#yqUD7ZxH1wW+Pel8~ z?7Ebcl-)>4V^P5I&cgasEej_nCw8L0{9vTqo&gk{bj$;FHa@;DeOa0UruD%9b?m|@ zBOT!r^s}t!;Q>v;9j+u#B$tZ4SI>-4klGlE}`V7y^oXq z*CM}Inxij6_P1>Mn3x!eQbwlqM^19^4sy(8Hs3obz5Khz#>O#Arnu%4qm{z3m+=b` z*ie2~nnt$Y;uMam)vb?@Epvy%J)hT5_XIrpnABSL(>uYZ|5HVD#zW&PJXpE+B^Y(6~o=n3hnLYoO zfpPf~x52S%S(ogvXK8GOagtqU^_rNl4nvNWTAq!^3;%?_U3L&YOWC~T<>>zkb2FDr zVX6oAEOqF8jggaCWZX4)=g-W%eN$P)yYoNQq2};5f+WZla+p4&q+XQ}>qHYQsE7TZ zTh^MGu{h%2@2LIwcR6=7brSOpCgK7&@9ZiWX2}aSu-@wmV=^tPBc2u+WMUXICQ4mh zyDl{3w(ctx)L*8zx3BFjX6L@={(+r$2~ktFH3Yq`RZb#FgtI+9C|NbxqnrD*5v85o zeKR<47uV<~e0Y`G+nz!xZo|mGEcu#q!u(k-RpPN^v0~s;f%15FqB$iYbVqx4X!lJO zUhNqEQ|l7)@l&eXuU-pT?)z;U5b9{WNgon2EG(q)YO#W0-n#RN|FYj=9Cr~=GUokN z*yB3Cz!=qRoLQsoLGUCltP1Hze||HACbxS{uZHo@qIv+KlGsH%fIhA^0HI`30B8R8Vz4Y)QbFCX(iGo4NcvHR>w4b;U2bfQEyecn% zwQ%z$Pl`mG!Z#yZwPlL!NBLilaCs57Nn|sb?$`Y)c}edu|BJqcl1qX>Uy+)pdcAw- zeGu}jZiI@lzdRyhef zf9g0OBrxz9+nqj>^1F0kK3Ay3Ma@4z97Np}VIh(=UJd~f?{2#EPWHG+W+_Z60jvPFRWjz$s1QFjtV<|58UoyJ%CB=Ei01`=h9r3~@IlEtsH| zCSIBXah?_v$^dUP@{&LiDfoSF)ee+kB2Meg~U?R@Hb zXLo*(^PXzW{ACt`C2~B$?|)>#uXl;zMw~}x0fg3QszeOb&fqq8K3p6G z*v{3fSDl=lO~I!hVy;a^{s4`got;T(`5+V&6o7pH0YeeB_y2SASWHgyXSATG?})(D z%q~MbulpAqbFqbGCnwG4$XYRWk}mB@S3Q(M{QfNWWkriR&j$YjZA-&r zKdS10`5GI^OssXH86q5kALn zS+TRy8TX9PT!Iu{E|Of=>30qrT2U*&WG}U}GWuK>-$8!dY4%sW7gWqtIom#eX_T8W z+p5m&EAT?<;2%IW?6L|31-uVtY|l!vg0~CFZ4Qcw5#B8(>w&C&)ytQm5YGC_mGNk_6dbabv#rC8}l{4zemTVBJK_L&LwG6(`4AA-u)K3Mhp_% zLz$(xK^4B;kSe>_utda3#C$Eaeo)^iNtf+7TM6;;OC41Ct}G$y>$3Y!uYRQnKW*f+ z!K+)wjaF~R+voSoTpl>tvIX@JpM0!Dz%%QY1!AVccO}9{cH4RR@8yS*DzI;nUbtJi zs4lA&s6XbkPl`Lu+-n$=31}FU4S1#CVr%8%>iM8H`8Bpyd!CQ4ij%dg6&I5K8Jt+* z559AMP*`Eq^`545nQp#;{n7d8q)Z7E1fhf<>rQy;@5(B_QM<)gRu z_AG#5!zdjvu9o2d1EBU-?;Bz~whzV}W0I3Qfkf;u21u^c@&r?Sc>^a+Ic4R!8d|Getcrx$yn|%F}mEmJD8YMR#uj0P=TmD zTj1^Q?-#_JpB?Xx0H;AUj@z^~_Mx1jqU&n^L+lB9DgX)K@JCY8_TeEX8`}rhrOt_6 z=dTgZ3C)T62M0^6yO^ou-|6hS&Nh4oP8)6IeD(1n@~;vEsJwf!R_HqY&y^@fv0f|j zjEszi#>Spp9bWB1qev9WJba8<)G3hQ=G`LSLx%_Ii46>nRXt{o2_TDv9K zisY?5yY1=enG8Hkk8cCmxgl#FaZynSnf2ZnezF>wua7Qqm=HhNkBO#4Qvn>i0_?WG zqo%6rY0cSAn=o1$cwt6HMn@+nF8EO);0(yCsgXW>_>fV|B^U_I^u856b@RFp1lI`( zO8^Pr;^NwDe>!TeqfL_O)0M#u>Pj-3K zEG_D_bq`=TC>eYE$Fju0xhN_vodb4**-(L@{i3zGIo9~{L - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikin64 Member List
-
-
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64.html deleted file mode 100644 index acac37edc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64.html +++ /dev/null @@ -1,1396 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikin64 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 64-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikin64:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikin64 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikin64DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t new_state)
 Set the internal state from a valid code for this protocol. More...
 
void setPowerToggle (const bool on)
 Set the Power toggle setting of the A/C. More...
 
bool getPowerToggle (void) const
 Get the Power toggle setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getTurbo (void) const
 Get the Turbo (Powerful) mode status of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo (Powerful) mode of the A/C. More...
 
void setClock (const uint16_t mins_since_midnight)
 Set the clock on the A/C unit. More...
 
uint16_t getClock (void) const
 Get the clock time to be sent to the A/C unit. More...
 
void setOnTimeEnabled (const bool on)
 Set the enable status of the On Timer. More...
 
bool getOnTimeEnabled (void) const
 Get the enable status of the On Timer. More...
 
void setOnTime (const uint16_t mins_since_midnight)
 Set the On Timer time for the A/C unit. More...
 
uint16_t getOnTime (void) const
 Get the On Timer time to be sent to the A/C unit. More...
 
void setOffTimeEnabled (const bool on)
 Set the enable status of the Off Timer. More...
 
bool getOffTimeEnabled (void) const
 Get the enable status of the Off Timer. More...
 
void setOffTime (const uint16_t mins_since_midnight)
 Set the Off Timer time for the A/C unit. More...
 
uint16_t getOffTime (void) const
 Get the Off Timer time to be sent to the A/C unit. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
Daikin64Protocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 64-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDaikin64()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikin64::IRDaikin64 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikin64::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin64::calcChecksum (const uint64_t state)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - -
[in]stateThe value to calc the checksum of.
-
-
-
Returns
The 4-bit checksum stored in a uint_8.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikin64::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin64::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin64::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikin64::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getClock()

- -
-
- - - - - - - - -
uint16_t IRDaikin64::getClock (void ) const
-
- -

Get the clock time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikin64::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikin64::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTime()

- -
-
- - - - - - - - -
uint16_t IRDaikin64::getOffTime (void ) const
-
- -

Get the Off Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOffTimeEnabled()

- -
-
- - - - - - - - -
bool IRDaikin64::getOffTimeEnabled (void ) const
-
- -

Get the enable status of the Off Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOnTime()

- -
-
- - - - - - - - -
uint16_t IRDaikin64::getOnTime (void ) const
-
- -

Get the On Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOnTimeEnabled()

- -
-
- - - - - - - - -
bool IRDaikin64::getOnTimeEnabled (void ) const
-
- -

Get the enable status of the On Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerToggle()

- -
-
- - - - - - - - -
bool IRDaikin64::getPowerToggle (void ) const
-
- -

Get the Power toggle setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRDaikin64::getQuiet (void ) const
-
- -

Get the Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IRDaikin64::getRaw (void )
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A valid code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRDaikin64::getSleep (void ) const
-
- -

Get the Sleep mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
bool IRDaikin64::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikin64::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRDaikin64::getTurbo (void ) const
-
- -

Get the Turbo (Powerful) mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikin64::send (const uint16_t repeat = kDaikin64DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setClock()

- -
-
- - - - - - - - -
void IRDaikin64::setClock (const uint16_t mins_since_midnight)
-
- -

Set the clock on the A/C unit.

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikin64::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikin64::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTime()

- -
-
- - - - - - - - -
void IRDaikin64::setOffTime (const uint16_t mins_since_midnight)
-
- -

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

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setOffTimeEnabled()

- -
-
- - - - - - - - -
void IRDaikin64::setOffTimeEnabled (const bool on)
-
- -

Set the enable status of the Off Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setOnTime()

- -
-
- - - - - - - - -
void IRDaikin64::setOnTime (const uint16_t mins_since_midnight)
-
- -

Set the On Timer time for the A/C unit.

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setOnTimeEnabled()

- -
-
- - - - - - - - -
void IRDaikin64::setOnTimeEnabled (const bool on)
-
- -

Set the enable status of the On Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerToggle()

- -
-
- - - - - - - - -
void IRDaikin64::setPowerToggle (const bool on)
-
- -

Set the Power toggle setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRDaikin64::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDaikin64::setRaw (const uint64_t new_state)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_stateA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRDaikin64::setSleep (const bool on)
-
- -

Set the Sleep mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRDaikin64::setSwingVertical (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikin64::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRDaikin64::setTurbo (const bool on)
-
- -

Set the Turbo (Powerful) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikin64::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikin64::toCommon (const stdAc::state_tprev = NULL) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Parameters
- - -
[in]prevPtr to a previous state.
-
-
-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRDaikin64::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRDaikin64::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikin64::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRDaikin64::validChecksum (const uint64_t state)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]stateThe state to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Daikin64Protocol IRDaikin64::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikin64::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.map deleted file mode 100644 index 83de65cf6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.md5 deleted file mode 100644 index 23ad8b529..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -5851dadac8e618da97370306646d05f2 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikin64__coll__graph.png deleted file mode 100644 index 8205bc2c1e0cac97e50506a2b052e293ff5a09ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6496 zcmaKR1yodDzc$F9kX8^xT2hb}sR5)@x*KVbmX1MEItE7?0Ra^l1Z2peQ(B~@Q-*G& z?&kfzcinr}z3Z-7GiT=P+2`#2%jbDcw1%1j5&k253=9k+B}G{+a72SQ6b}b{5?=|1 zfCJ7e6$M$0o7>k%R51(#gX)2jtdx##*7j_GiH_Ix+5QC84spBOKRTqcswNYSpE5I^ zwAsc;Md+;+StC}9*#G1=^dQG#Y>n4!jU`T^W;z@5LXFcAA9Ph-8oPcePa8kvTUq79PCq?flrDQ0u zmN0(_SJhL}x|?2_^6CDGkeaaD0>*CB1%m5UvQe#w=Nhkd4{6D-tD{kM<3h9Q>2H=Y zVGcx1hR6Qm)Iu(eY?w-$74FOONB$^X^iXeah0&E`G7RQ9dg-(`U{qYu51;0i(=46q z+M25JTT8bqol{dm24DGiCDPAtK>YeSlsFh+x+yx+w+oStRT~e!`di^R#$g;a@|BPd zlJZ6b%mh%g4z-*|HNEe^a&K?sQ8%r=-?`5^r z5ltfzc!t~*@!ez4E>^2H@(XcoI**K^4^H#mo*pSyrw50zk8z}-!^0Zna*G$c%|hxo z=l+{-MCtrD7@MyDqGud$p3ewWjz8Bjy(b3VCYyIiJW+N!6sG{@P?Vmjg4GmRPR$f~7*_i!mY;0)Q zOQsHKwMrD1my?q#SiLw#cbAkmDf{{gySTW7hlhU)y6`@{?C6j!QcZ9B?l8J{bi^zy zoYs7EwR=1bTu!*#d?TUqfg82zUtd?ZKW^;me!QtmOe1XJBFV>>e2+=~UPFV_s0?n|9_fCxp?TPNaNuz} zk&v*Xy*;d_N3pW1YTz()y5`{E;9Xo?$G||m8OlF7Bg1k3xN?&Z?Kvc_01Rt4n1yL^ zxHf>t__?f%g^Md*UGgfm+G*msp?YwzL|$Iro1Ne3JWXeJ%Jc$8D>?NM*85AHE9>iI z!0w-vVExWJGc}3Cw4%ceKCa)5xJV?$&T*KJ%TUqlXFO=LLxpuSW9a zQd3j+wyK5>`UQqGjEsJq&O?V5+oML%$Eq36?uK}w$N4N;FeI+etinlYAiksv@IDMM z5?!E>crd1Kp8WoOX9yr9F)>(ja_a~4V25lO zYWJ|zRPvFY72`*Oj;ZfrW1V=##l=lAUd=ZJ#dDv|1?)!eFL!6olRSE+$jru;Ie)r6 zqtDFD{O;pNh6>;PC7eDXz2M#ymbKFlJmwT3J-xm6KxEw^y}rI)+FNYTFD+GNW?{Lj zudkmsfsP=R20zl5d;9vxLWI4y3<}VOMn)XA0~suDM6-K_hJc$59bJw}oIl1ZSPre(K3A-=JhSh^|gdywVg7C{2u_p&XzjjbFUBl1M z{|^H`K7Rk9&(7~B7@9gdzqY*YFTu}i=DyCCdQGHwZwzDB2H#!AB7uaIlyJu6lTuPn ztQ>!&4?0S&GajXpkdRnwMkk1seEmA?SPdf96?$QeL-;U6t(b|A@1C8V9VjiGU$l!2 zngT^Y4qbDhp}VM4;K#viu|p6u`{mFp0+1<(mmwh`{%BWMSM>>m>A+~c&#p_(L|PGC z1bPke_V)e<7kB=ovdnar&&kq~QBza1alecDVZ1yBNOXe+Z!XXEL7Rn^x2oy<5zF0) zSV`~SV~6DC=K3Z57#vIhc{Z3U>590qz0gxrBQ`2S&Rup%Owi_g$w4$OS%0U`0 zoD@`>1UhkLkYK@m{CYS|bY^Uad``}=D)o8Iq0vJ%rl6n%YtQKHabBIgg>ro0ac zO={g*AzVyM?GTa|1z&FNJ*!p)8|QlzpC#slXcc{4j6$}|%w&RU?*^jc`g{nQQLG>* zx4#R$$-KEfZ4Qr$5(qqV1Br2$kWjW@M8m}7^&H!#88FRD;o5-wmj$m==>(LCD(bPf(8`MIj*0?+CXOJn3?h7;-VBtZURc~mFa4yt;ve8^TTzJxKhr}T=E4Yjp{i6{IhqqoG9RT zVEuD+^h;^!%5a{Htb&5Jw)UvCacgTUA+2cYk`_!!nzDi2O64u zBHch|ETsr&=_4Z}7;mp<;aw44p1k;~J5xtp^BYG<>tfzBL(9E+4m!tu! zI!YcVb8^dpiEqRsOIN`cvh=5x&*u{c`~HeIiNwJcH4fSgY^z2^!5VoCq0I8dYGh-%e&YH4q zby<5#a0;q8m1tQlIbe^2efV4|+lcHz5|*lu!rK7_osuJ4FD5!cTc8FuYOsB=X+ zBT$9NyQT4bRM-mF$=#GZpR|+BV|z84okp8735?8fspagb_zibc3dV_Z=e8Fj-C1B# z8rrtjGh3cpFY80{jB@5G;3=h!&&5wAo6M6FN$p{8{!YFf7hG&o;v!J7dTam-Y9pEQu{AT8sG|@+jzt7-H{m+ z$2S33JL2+^T#Ys!6`Boe>+uP_YdriQ%G<-!IHM{`yx@8~TdL}Ec#@N-i};!Mf{>zJ z!NyaS9dU{!q1x*wG;)~bIox2!`ktA=S%q)bRdJ-&2K#D#yt=qr{@mQx!^);}>&(lZ zE#uSxSf0Y;iadcL6+QnsZ28LX0G0#cEhCGP=vmdOr@4!Sx6_-gDBB7qHa?I&+RO=u z{J{=+{0lnvbEwz4`eTcR52Qgv!26}Tza$z9|0p1jN#eAjQjCv4CLS{3=-{V-@K~yn zjvPdXD(Ks7Wj}*JBtw!_>K8v%u~`_Ph0U;&d}a+ayrMCqyuFEb8o#iAW;veH{w>rM z%jkLKOm2$S4(fcdSyjBhUA&rHQ!gkwKXo`>aK!O=x4weej^sk#HF@-}=-zN6_hph+ zPejncflMsv-azPUa?Qx7!#a!Q7`qt(5? zK{l6v2N1$_)re1x>BtH=SI4lV_u?BPzJ&U5K2Zmix9zj;zor*wCdS6|ehVC=>8AXW zqN`F)G5Q}R#EBs3CP-ug@yMB0KK6axatvfPLRBwQz)YZmlQH%x_83WAD90geHn`Jq zXnj@O0j`&Pc^OD9mseYRhCrwEI$C)rJc?|lQ0zkXSzlgMmbE)*BHmL^T@@dm5smN1 zR?uct_b;@D8CJZCc+XTt5pp8nV;`iSP)peIJBBQ=l3Y8g3x|l$3q7Q6v#{7hpmIt9^Za(Xp{iyu73&BqWcSn0f~X5&HB03&Ut^gn(gp zPtOAVaXiH~GcsE+tNwRF;URys)tFJ8(K0G<5fc7R-C}^se0Ww6t80 zA3v70wJl=j;(BmPW#n$IuOde5pG{Dbk}@=1?1%xdz?hPf5}uft$eWJn7JWU*%jfc2 zSW`oT0YJl!mbX~g44{qfc=WwH2KIUg(|mVxEv~OaZdL`B=xGW4!j94iQs{dQFI7@f zT02coPnRwkiy>oEduE_lK0)vT@Vty-s(AUuwKZGr`5IUA3hUnchnIaHc)-}o3Lqvh&X-vr$J4Q*m2R&`T!N#ue-Zokr z%t)bB$t!YB;VTFV&~*szC1r%6AcUu?1whg)?#Sr>dO5a z_$@40#Fj)UmI49-T$RKOxM`oB+jb|=_UB6Gf;~7oIRWIRqpNGlpN@xzcS~RG4pw?U z6&Gs*>X|1K^)4ZysHo@$=?Cm=z9 z%T0IjvL&H&kXL@oPGG%AB4m0~kiyU+36GZP&qniiu0-fSA!{K67Q~tvlXIJcbUx}K z#Q186Zt$=AU9p>_-h$nK$b|EcA@62lz~8vu1Sb%tuMhQ(MQogYm=euu(9(2^M=4Qm z9DlD-{WZe?)0Oj=^}l!dnQi`QPf@*2wvZJ8*;cS%ruWIj_*o@Y!aLdyFI#X6yBYhPIj<|Mx5X>ar%m4IM)b)D2ZA{u&>ka z+e@SGY0QF?%?CE()Lpm5og284dZ+P^qxTD~p!z3`-gGj@C_lomydNE4L1!oKtJl#@ zr=JFp@~lprpX@CWIlFPf>z46Zrp6$= z)v&Rduk59TkaC>)CWM}ANqh?Bfl7*U55YN$5|?$QGWhzRpb{!Ks0^U0E1J~hhfbl? zvd8+mxl=;z@^BSR{J4GV=cffgGa;nn?-;iBUvphplaEGY(x^v)W22Li~ciOdQkog){%(?i5fQps` zD9Tio-TvVr)AQ%>>#K_iPNwjM_xfghAGYUE7tS@K8NIIK6t92Rx^K;)GKVB@vbyO4 z;s9X+TE>`tdU?~|n3_3%0v;Y7+y1oHIaGi%xtEOO^%)cNtexKXXhdP^n>P7aD4(bTS{+!lyB+lxqTAI73JSiS{(e_Z zGh+-zE8@Z2+1a^q?2j=Qc=*zLcWwZ1`}02Y>o%nG%w)BbKJ3_}DKH%fgQ9OXTJq&$ z-Mqb<9HyLSko!MXc#`4puFskU2DNUC(s+b8SZwM!9ka99lxDtfZ$-v~J|54@Gxx(v zR#>#qd>{jJ;u))bA7H7e;my#|#M7gb6P%BwrKNLk z;^o_ePG`FTr<-bq-f*FN1_xPz_khl6JCqYI?};{D1u>ToI2N$=eg~PlhL%=ap~{EP zpFg+QKdbaRw7q}-zM_hX)y8lhP=7RZbpC0{5Oms@tY894q#F!94)4V*`j^u|bZLRf zK#)2I%CO&FD{iK0Rz0(uj}NZJP>y)1VHFO_%ys9-$OeI66MVO!Ko_Yt zqM@M?_S)2`+EK2ks#;cu{v`vzsXs?N6Mzn}gsW(_oLfEewoU5lc5aT9@TIFl_FAyw zXhc$G8+EGqD{ z#3)yxotPN>wV_;fKR*$0YdfHP`uh3JdYd|@H|CBhlglO7^vqh7H(!g+&CQja1nW%^ z!T&F6{r?-uZMlqnT>7a{Vx^%PMsf~!F;-TNDU-2>ximU_6il86j~Iv#JY$i7 o;a}6X-s*|GVO1*YZ@nSmQ&X^YVR0B9Thy8r+H diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP-members.html deleted file mode 100644 index b15b84f47..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP-members.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDaikinESP Member List
-
-
- -

This is the complete list of members for IRDaikinESP, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDaikinESPprivate
_irsendIRDaikinESPprivate
begin(void)IRDaikinESP
calibrate(void)IRDaikinESPinline
checksum(void)IRDaikinESPprivate
convertFan(const stdAc::fanspeed_t speed)IRDaikinESPstatic
convertMode(const stdAc::opmode_t mode)IRDaikinESPstatic
disableOffTimer(void)IRDaikinESP
disableOnTimer(void)IRDaikinESP
enableOffTimer(const uint16_t endtime)IRDaikinESP
enableOnTimer(const uint16_t starttime)IRDaikinESP
getComfort(void) constIRDaikinESP
getCurrentDay(void) constIRDaikinESP
getCurrentTime(void) constIRDaikinESP
getEcono(void) constIRDaikinESP
getFan(void) constIRDaikinESP
getMode(void) constIRDaikinESP
getMold(void) constIRDaikinESP
getOffTime(void) constIRDaikinESP
getOffTimerEnabled(void) constIRDaikinESP
getOnTime(void) constIRDaikinESP
getOnTimerEnabled(void) constIRDaikinESP
getPower(void) constIRDaikinESP
getPowerful(void) constIRDaikinESP
getQuiet(void) constIRDaikinESP
getRaw(void)IRDaikinESP
getSensor(void) constIRDaikinESP
getSwingHorizontal(void) constIRDaikinESP
getSwingVertical(void) constIRDaikinESP
getTemp(void) constIRDaikinESP
getWeeklyTimerEnable(void) constIRDaikinESP
IRDaikinESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikinESPexplicit
off(void)IRDaikinESP
on(void)IRDaikinESP
send(const uint16_t repeat=kDaikinDefaultRepeat)IRDaikinESP
setComfort(const bool on)IRDaikinESP
setCurrentDay(const uint8_t day_of_week)IRDaikinESP
setCurrentTime(const uint16_t mins_since_midnight)IRDaikinESP
setEcono(const bool on)IRDaikinESP
setFan(const uint8_t fan)IRDaikinESP
setMode(const uint8_t mode)IRDaikinESP
setMold(const bool on)IRDaikinESP
setPower(const bool on)IRDaikinESP
setPowerful(const bool on)IRDaikinESP
setQuiet(const bool on)IRDaikinESP
setRaw(const uint8_t new_code[], const uint16_t length=kDaikinStateLength)IRDaikinESP
setSensor(const bool on)IRDaikinESP
setSwingHorizontal(const bool on)IRDaikinESP
setSwingVertical(const bool on)IRDaikinESP
setTemp(const uint8_t temp)IRDaikinESP
setWeeklyTimerEnable(const bool on)IRDaikinESP
stateReset(void)IRDaikinESPprivate
toCommon(void) constIRDaikinESP
toCommonFanSpeed(const uint8_t speed)IRDaikinESPstatic
toCommonMode(const uint8_t mode)IRDaikinESPstatic
toString(void) constIRDaikinESP
validChecksum(uint8_t state[], const uint16_t length=kDaikinStateLength)IRDaikinESPstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP.html deleted file mode 100644 index 432414883..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP.html +++ /dev/null @@ -1,1729 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDaikinESP Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Daikin 280-bit A/C messages. - More...

- -

#include <ir_Daikin.h>

-
-Collaboration diagram for IRDaikinESP:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDaikinESP (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kDaikinDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the Horizontal Swing mode of the A/C. More...
 
bool getSwingHorizontal (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode status of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getPowerful (void) const
 Get the Powerful (Turbo) mode of the A/C. More...
 
void setPowerful (const bool on)
 Set the Powerful (Turbo) mode of the A/C. More...
 
void setSensor (const bool on)
 Set the Sensor mode of the A/C. More...
 
bool getSensor (void) const
 Get the Sensor mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economy mode of the A/C. More...
 
bool getEcono (void) const
 Get the Economical mode of the A/C. More...
 
void setMold (const bool on)
 Set the Mould mode of the A/C. More...
 
bool getMold (void) const
 Get the Mould mode status of the A/C. More...
 
void setComfort (const bool on)
 Set the Comfort mode of the A/C. More...
 
bool getComfort (void) const
 Get the Comfort mode of the A/C. More...
 
void enableOnTimer (const uint16_t starttime)
 Set the enable status & time of the On Timer. More...
 
void disableOnTimer (void)
 Clear and disable the On timer. More...
 
uint16_t getOnTime (void) const
 Get the On Timer time to be sent to the A/C unit. More...
 
bool getOnTimerEnabled (void) const
 Get the enable status of the On Timer. More...
 
void enableOffTimer (const uint16_t endtime)
 Set the enable status & time of the Off Timer. More...
 
void disableOffTimer (void)
 Clear and disable the Off timer. More...
 
uint16_t getOffTime (void) const
 Get the Off Timer time to be sent to the A/C unit. More...
 
bool getOffTimerEnabled (void) const
 Get the enable status of the Off Timer. More...
 
void setCurrentTime (const uint16_t mins_since_midnight)
 Set the clock on the A/C unit. More...
 
uint16_t getCurrentTime (void) const
 Get the clock time to be sent to the A/C unit. More...
 
void setCurrentDay (const uint8_t day_of_week)
 Set the current day of the week to be sent to the A/C unit. More...
 
uint8_t getCurrentDay (void) const
 Get the current day of the week to be sent to the A/C unit. More...
 
void setWeeklyTimerEnable (const bool on)
 Set the enable status of the Weekly Timer. More...
 
bool getWeeklyTimerEnable (void) const
 Get the enable status of the Weekly Timer. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kDaikinStateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kDaikinStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
DaikinESPProtocol _
 
-

Detailed Description

-

Class for handling detailed Daikin 280-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDaikinESP()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDaikinESP::IRDaikinESP (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDaikinESP::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDaikinESP::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikinESP::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikinESP::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDaikinESP::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ disableOffTimer()

- -
-
- - - - - - - - -
void IRDaikinESP::disableOffTimer (void )
-
- -

Clear and disable the Off timer.

- -
-
- -

◆ disableOnTimer()

- -
-
- - - - - - - - -
void IRDaikinESP::disableOnTimer (void )
-
- -

Clear and disable the On timer.

- -
-
- -

◆ enableOffTimer()

- -
-
- - - - - - - - -
void IRDaikinESP::enableOffTimer (const uint16_t endtime)
-
- -

Set the enable status & time of the Off Timer.

-
Parameters
- - -
[in]endtimeThe number of minutes past midnight.
-
-
- -
-
- -

◆ enableOnTimer()

- -
-
- - - - - - - - -
void IRDaikinESP::enableOnTimer (const uint16_t starttime)
-
- -

Set the enable status & time of the On Timer.

-
Parameters
- - -
[in]starttimeThe number of minutes past midnight.
-
-
- -
-
- -

◆ getComfort()

- -
-
- - - - - - - - -
bool IRDaikinESP::getComfort (void ) const
-
- -

Get the Comfort mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getCurrentDay()

- -
-
- - - - - - - - -
uint8_t IRDaikinESP::getCurrentDay (void ) const
-
- -

Get the current day of the week to be sent to the A/C unit.

-
Returns
The numerical representation of the day of the week.
-
Note
1 is SUN, 2 is MON, ..., 7 is SAT
- -
-
- -

◆ getCurrentTime()

- -
-
- - - - - - - - -
uint16_t IRDaikinESP::getCurrentTime (void ) const
-
- -

Get the clock time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getEcono()

- -
-
- - - - - - - - -
bool IRDaikinESP::getEcono (void ) const
-
- -

Get the Economical mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDaikinESP::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDaikinESP::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getMold()

- -
-
- - - - - - - - -
bool IRDaikinESP::getMold (void ) const
-
- -

Get the Mould mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOffTime()

- -
-
- - - - - - - - -
uint16_t IRDaikinESP::getOffTime (void ) const
-
- -

Get the Off Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOffTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikinESP::getOffTimerEnabled (void ) const
-
- -

Get the enable status of the Off Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOnTime()

- -
-
- - - - - - - - -
uint16_t IRDaikinESP::getOnTime (void ) const
-
- -

Get the On Timer time to be sent to the A/C unit.

-
Returns
The number of minutes past midnight.
- -
-
- -

◆ getOnTimerEnabled()

- -
-
- - - - - - - - -
bool IRDaikinESP::getOnTimerEnabled (void ) const
-
- -

Get the enable status of the On Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDaikinESP::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerful()

- -
-
- - - - - - - - -
bool IRDaikinESP::getPowerful (void ) const
-
- -

Get the Powerful (Turbo) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRDaikinESP::getQuiet (void ) const
-
- -

Get the Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRDaikinESP::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSensor()

- -
-
- - - - - - - - -
bool IRDaikinESP::getSensor (void ) const
-
- -

Get the Sensor mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
bool IRDaikinESP::getSwingHorizontal (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
bool IRDaikinESP::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDaikinESP::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getWeeklyTimerEnable()

- -
-
- - - - - - - - -
bool IRDaikinESP::getWeeklyTimerEnable (void ) const
-
- -

Get the enable status of the Weekly Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDaikinESP::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDaikinESP::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDaikinESP::send (const uint16_t repeat = kDaikinDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setComfort()

- -
-
- - - - - - - - -
void IRDaikinESP::setComfort (const bool on)
-
- -

Set the Comfort mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setCurrentDay()

- -
-
- - - - - - - - -
void IRDaikinESP::setCurrentDay (const uint8_t day_of_week)
-
- -

Set the current day of the week to be sent to the A/C unit.

-
Parameters
- - -
[in]day_of_weekThe numerical representation of the day of the week.
-
-
-
Note
1 is SUN, 2 is MON, ..., 7 is SAT
- -
-
- -

◆ setCurrentTime()

- -
-
- - - - - - - - -
void IRDaikinESP::setCurrentTime (const uint16_t mins_since_midnight)
-
- -

Set the clock on the A/C unit.

-
Parameters
- - -
[in]mins_since_midnightNr. of minutes past midnight.
-
-
- -
-
- -

◆ setEcono()

- -
-
- - - - - - - - -
void IRDaikinESP::setEcono (const bool on)
-
- -

Set the Economy mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDaikinESP::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting.
-
-
-
Note
1-5 or kDaikinFanAuto or kDaikinFanQuiet
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDaikinESP::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setMold()

- -
-
- - - - - - - - -
void IRDaikinESP::setMold (const bool on)
-
- -

Set the Mould mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDaikinESP::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerful()

- -
-
- - - - - - - - -
void IRDaikinESP::setPowerful (const bool on)
-
- -

Set the Powerful (Turbo) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRDaikinESP::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRDaikinESP::setRaw (const uint8_t new_code[],
const uint16_t length = kDaikinStateLength 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthLength of the code in bytes.
-
-
- -
-
- -

◆ setSensor()

- -
-
- - - - - - - - -
void IRDaikinESP::setSensor (const bool on)
-
- -

Set the Sensor mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRDaikinESP::setSwingHorizontal (const bool on)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRDaikinESP::setSwingVertical (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRDaikinESP::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setWeeklyTimerEnable()

- -
-
- - - - - - - - -
void IRDaikinESP::setWeeklyTimerEnable (const bool on)
-
- -

Set the enable status of the Weekly Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRDaikinESP::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDaikinESP::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRDaikinESP::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRDaikinESP::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDaikinESP::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRDaikinESP::validChecksum (uint8_t state[],
const uint16_t length = kDaikinStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
DaikinESPProtocol IRDaikinESP::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDaikinESP::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.map deleted file mode 100644 index 8a497d17a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 deleted file mode 100644 index cd963628b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d8e520a5ac6f6e4ad675f8b02278bb0f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDaikinESP__coll__graph.png deleted file mode 100644 index e98beaa183c0d0814afd68452394537deb581047..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6532 zcmZvB1z6MJ+wKe`Bve8`0ciwrI3$N4AV`CNl!U+t0ZB;-gA%06QA4`BYa%&fAU#^T zYak31&da&3|M|}O&UfwFcI{X1`#$geJkNdK`=X)toPvyz3<7~rC@MVD1mAe@_9M9l zKE?eHlEK$CGv(*cAm&ZJe?NIt{J$x$l{k0OX&umo@HX);m-Pe>*t_w&e*eB@9pntm8p#~#U% z_ofRG&vBhKMnC$2zlx<|`HfL`XmDt#Ij-DdIXFvheXN8<(6U!Rak?j-pZ(!OEQhOd z{M)f&qpJ9k6NH+&y4BJ4bl)uv<=ZSQ4ugo$&`@?s$r;3~#Nz4dWKD_0SoANq?J3N7nfZnx_i1l5f)xQ%jt+>#JW!-dSLJYVa}y3pk3^vy zwlxe2XPVwuc;YQxf_`NmY)vMN6zGcR`@CgCW=$}j%G<1qqz)e>av)Lfx5du(6VSsR z#XMvo>2q^)PfLuO#>*{~wKntn8t_vSlamW8E1k;Frna@AoI5Yoy}c!3xKv@dKkgl# zD+{~7TOo#x9#O%;Boa@aIJvm6KYkp$gFbJ@?yIS(NgNJq-Iem4T0J~s7Zv?>xG^TB z!L*DhS6|M}eXu5a=a51R#EY7g(I$z2jhI{m7?VEMVS2P6stMv?BEOs(kwNiC)-_zOJrLzQn;+ zWv187(eZV6?0ue)pHTE)GreYSf^($-zfD!**}v16$jH}vy4u>$w6$p@B_(U?>u=G~ z$r~6Xn)>X_Gtc zhK4JDD4MPvVlWt1F)<`k&?^0xwWG7MSyv?MCfI50R!T~WemR0PARxe%az4-YVopdY zKgoUxJUNJ~-E4Ep)Rf`bL5|e#wKc^cN~U8x>bw`k_man6`)x6oWpc1$SV;Onjf2St zuO7%$y=y24Ias~Dy}e4R1kMr5$U8Z#lG@A3$>|Ml;R%s(bQI7SX-gEcrArcVSe~e| z_1?#D+f7#YX>h?{(aH%Aoi@iG6&u#c01$r(4t`oPcBdLw>%<;<8_ETTCv|lxaH)KI z?NJfV1dn&ynuv;xZ4;UG9?DNr>tK}fl|Ukq99&$NOWk*j{cmV%Yws>4n3S8g1~RT3 z8<$s9Fo-(dOM$yDZ`gCz| zk$#j#(pwM028EWq=oGRU=6Pf@oGTyq$n~E)YQyF>)R^YO@$Vp(^#?~dE7X@V^G?Rp zqqU*ug$7mKyAlEd8oeoSUF#}?GLOA^gQbm$Gvg9z*JSr*;(V5o5@~t)z;7^%5D)N# zfUvNz)v*#(a9CIoUi3N{S=+(dP(VyfOcxd_Y~%C#by{$ExbSd7a`FSn#mZaDO?(M* zkoonI0vQrk5QnyU*Nv|aW8&kvAWmz8Sq3XT-~LVesD-^y_uYQ%i4qeLN!ZCcZ`jVm2QGi7dvflk7^)?hqVg}3)j8KzPTRwiAA3sLVf@4J(rP@p%-`!0cmo4e4M74*VW%&awtziMdje= z#~2nkKR?fSTSik;Q^nbi9~002YQXxj#K~#~*nR=~DbbntJ5S2X%Lg_N+uGVR^!4=} zm_WK@TlJ@sGr;`sh}b{YT72mfFM@#qK!1Knq1h#XwgG@5{b-*12CxN}%E?;b1s}PDJlnqCtgs|K|F7ccFg8 z@op>CeJFHg;Ja*Zl1M~mCI>Gs@4(u-*!cMLv5mbye=NsKO;wUbqri;70)FOc7Ux#o-OwxTRXz;=r?>n67zq~B3qCyUL z-){T$>t=3!>0p(uu8geg-oXK4qVf%hz)d(Dp7E#3ypu8{BxLvKi2K2Vub`Z1F&k7A z*c*$BiS13f^gA7{zXZDtLIn9SHkJ?}b@t6^q2u@FX75)9LHb8#{x4h$w0U)k3@ohq zg@zxCaADyr8)GG%Jw2ggCVnZL%JFkMI}tTCA{SGhu6GSADONG<3}+G*7auIpg@QEP z-QPD`=m-lubXo2-JwN+5J~?@(*iuB>62IJcu!)QLE*mrtS~2Jr^pCA0LE%bdd)C(z zF;b&PD)uJlH=Tmkbh`EW31^R%x^Fj5j1!~z-zf?V$%&Eq&p{ZUQQcp%%DgF;{ArLn z!d7>~blf_KlC}eKHxDTsyip(z0h+lA&|WP3{|u8pG^DfidgVHqYWz-p4N5gH5Y^SDjD@M@LH-ZI%}ekvK6N34aheXcNQm6h2NH z7xt<7mQsms=}wrkH;Yd|$gQEnjI0j6?uRQIy0^s88#N832luYNJClMTlQav|EKwhe zSNZb2NM)!C~ z_YCL9=)d^5b5B=$R4Hs}zQ%H@q+vhUXHSA~Td9}EbW%H6Yoze3Khe(rxM<`ZF{{6w zS<+K58U$r!IIyvPc0lVTZ7MJJo{gHYw}TXtWa1dA-S@fF&}ld~;ir7_@ag(@RAR=g%|8wDnMNO+00@0OO%b9cUO z1%(f%3ir_)O%AL}A&a)Oty7()EnIi5zSJh$y0W<@HT#OIoD^55_q|+GW1UcMVv&*N zsq`m7_4^37;D?=i3F1{1vx?ZfOTALZ?7>yR~ZyCK@D?Q02>8B+^> z+08P(oEE%vQN5B^3_m39FvnGWs%rXq-n%7(7Gu;F-lwh;t0h#KA7?{SzfCcKv(E0% z)o#8cbAGIB7msC&#$j=c{l=7mp3$^%KV>7v7v|0T1EvY9-AnhPmov*XYvY{mM05^I zEbeGz*e+zheGVVf@ypAWD-T9o8wjjry}?5!ai;V<(1HAQSB^nQIbX0z{G09FiP%bW zBEyOIDaKGwn70WOuwE#mu@IrpCid)EQoV;MbXi zZ`fCm9PmaD48%`2zrY-^7=PbzboZ7uEI1j2x+B^~?LFSPME~7!_qcVHZ%Tv zA2+^;&mx)doDOY=5pw6@N=QiwOXmTEUrOT%cf8?m#Miq!GlP``#GlPPuGK!ZzsE-^ z&VKjp2kTG&Z1n(Ul2obYq72vh5iss8;U)eJPP6v#t>u7%&t-Oav}=AaJ6?;StctHX zTovC#zqhxis;RF0BKcJd`gZoOLn8OT*BX%UyWp0y7>4|279Y#+(0bUDS!kmfs9PN0 zgBEsj%r+2mvqM(w2?@~#Ns)i&S;D459e+d%!UO`bY zu`-`iw|J;YxK4pwk&+pc)TjZ0sL9?c%4Ty-Kx@b260a5YsIvLIGvpxxtkv9NC zBqbr4n``+TcnG>bI1L(x3Q&Gu!or$%%n6=8!Z<0~M;>43?hq4_jQOK6zVoGV;#F)~ zg+A+2>5B%0D`O)$>MUh8BfPEnA3vV{Dl>oXG~Y)0LSO&>Eo$lu>UY5*pS^jL2gE0J zg=HVij^*Y}R?y$%l$1hvczA9IT48BGx2grLKk%fnsi_?k!!76JR0c>PU21BoOv%`F zR{zymG@4$_IkO9cxe53Mo2cl2h-=jQV!c9Nm~`@VGXBTPGZ-=jhTKUn7!ED4B1_6F zu8$TI7oXUb;N+Cc9kFrxvxzgX0HlxT9!yZsFG4kk8VIJqtt(fqv=3$}Q*4x&pdUh_ zqM}%%qoc3hb9VMs|Ir#mHLDBjJf9^m^IPX+JqY9F5-LgAzdUXPDn?4Gz%;-2%*;$6 z8gTH*>bK@#1OTHU&@$80(@Dt57x$NXAReA0+o?tAQw;mp%zkmN;J@l%!pYHx}=}K33 z_s`Bw;y5Kad;5o5lQj+pzKZ^ zK3*Z7Utd?Uw&nq94G_mtmld_UOa+Mqz@0LI`ne!AYipRwH$xYXcXR7dT}J=^Fj)2v78)ynx{<1%1-QEb_p_dK01+8&0C7W*kvZ=)rg(dXor+{f6V9W4oM#-faj%q zer{5)anLD$e?U}@rC~JcxYaLf%bA3eAB@|;Q6qz^QbKlxB1TU>9*wH4{{CSST^FU< z-Su|5)HOPz(SQNhD;ytJ6cR~QWvI@()T`8!RD2|5Ti*3|kB&985*GF9KC(A#Zh1D` zw?gP|qhwNVOieG7S`0=)U*V@z#hQqgY>=^yOAz}sH@I%twHAIR%QC+T&x>8u{RU4a z)`>O3MtLUeoqpz_CSANA^r|eg2X_*eZv~&Ew zufhCIK5Ef<+m1i?xJpcQ$0cb0sZzZSFA1A{R${ABfD(0c*!cGuAKTESv9ed?bmFzI9FrQO}Tc(tQ zu_Aj_yUtkeT;tzg+IJUG_wuKXw<5CdDA^%~C$6tkU8> zQil%J`Q{BbwvdRPNi(+NXvqn~R2y#lOVx<|5uuNBBJhQozK`s9sFvrX_rGEPm-?B^ zb(jhkTc=Tak&(z@FAPHXQe5263KoK9qKV?vAbCYwq}L`FX+gP%joa-Dp2T@A&l6mA z)0Ozu33@|y-Cg8<-Dsn`F71kreYj)JB+rrMbPYn%*{=Fa-0ii*Ot#+p?zUWTjUzq&%w=iJ1JYQ_BM)}pLgz2Qn}Cnu-OoSY>1 z*K2W`Yr!v9CdZ$6;y-TG|NAGa=l-yD0$oeWCYS`?jYW`k3TD z*TaukvySi9xKgElAmbe##nQZ#JeInqRi0L(uUyrWE{XiUo4Jv@G4MAw82;mh~^4!MMY9Dpyf=XC(vU=y1HY_ z;#V;W*feMYVq*ab1R^;bI6RGKCmVl%Q~A9n>@Njgy5+KhwHQc~_V@R{ z(6YjBC$!CXpZWAHmzTqq`%(Rq4(L8m9yg|Z2Qw85jT+(^1T8Q8EkVjK zYn?uW@nM#|^b!&hj*gD^fD70jdV8#{>GS6+G2H6em6fq3e*Z>teH8kXxm=!fcXwYn zei}6Gxy$%SR#~97Mab{}Tg`|7UJXwW70dExD#^JYAFtd6y{g5l*aWQx{JZV#Z4j(r zU^-2^OkN?T+?}v3*#q_x4A?o6e|KdwlNHM6PpWHXR#ut) zwD`}~Rt6D!!_TL8g=}by8r+EH0&W|>?n@LhY;dD+cRw=d)O_2Y`lPnD_69X|D{uz% zDy?sdiHTjkdR4$}b6mWE6nF|ireAyi{(Zgs&dh5=O?(W-FlgO(zAs7S%a<>}8>5gQ zEXL$&ABrG=3Wqp4IbF&RgxOEm#{nBkR;v!A$>HeUR?RHXr9Xia8y0eiZ7xVL8X-@% zu&}5K&w2JLJN>9>xQ6Zf9NjE^Pewi5&pd%g??Hoek zD$Cb^{)M@1>H%~;1CuT~1i1o=MTPT{60lvnK#v0$1%UIv0qBLDot>!PnM8xzmW`vI zj*d~63`0F`~ z#g7k{6c{4LM@f6B1 z`Bso4su~&tK3mE#XlMgU3<_1Bxs3ayJ$w0$v_nO_5*B;^zg5rw82bNDNd*T>Yj3{p zj9{?>3As!u8=aUU$BDmi9-eqr*0n}*RFvlaPL3W91dT2lasR*m7x>9&eH`wo7;R90 cd`_f4^@2@@`#=@^tpZV$Q+rk{^ZL{O0w|U|JOBUy diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc-members.html deleted file mode 100644 index abfe6cc90..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc-members.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRDelonghiAc Member List
-
-
- -

This is the complete list of members for IRDelonghiAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRDelonghiAcprivate
_irsendIRDelonghiAcprivate
_saved_tempIRDelonghiAcprivate
_saved_temp_unitsIRDelonghiAcprivate
begin(void)IRDelonghiAc
calcChecksum(const uint64_t state)IRDelonghiAcstatic
calibrate(void)IRDelonghiAcinline
checksum(void)IRDelonghiAcprivate
convertFan(const stdAc::fanspeed_t speed)IRDelonghiAcstatic
convertMode(const stdAc::opmode_t mode)IRDelonghiAcstatic
getBoost(void) constIRDelonghiAc
getFan(void) constIRDelonghiAc
getMode(void) constIRDelonghiAc
getOffTimer(void) constIRDelonghiAc
getOffTimerEnabled(void) constIRDelonghiAc
getOnTimer(void) constIRDelonghiAc
getOnTimerEnabled(void) constIRDelonghiAc
getPower(void) constIRDelonghiAc
getRaw(void)IRDelonghiAc
getSleep(void) constIRDelonghiAc
getTemp(void) constIRDelonghiAc
getTempUnit(void) constIRDelonghiAc
IRDelonghiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDelonghiAcexplicit
off(void)IRDelonghiAc
on(void)IRDelonghiAc
send(const uint16_t repeat=kDelonghiAcDefaultRepeat)IRDelonghiAc
setBoost(const bool on)IRDelonghiAc
setFan(const uint8_t speed)IRDelonghiAc
setMode(const uint8_t mode)IRDelonghiAc
setOffTimer(const uint16_t nr_of_mins)IRDelonghiAc
setOffTimerEnabled(const bool on)IRDelonghiAc
setOnTimer(const uint16_t nr_of_mins)IRDelonghiAc
setOnTimerEnabled(const bool on)IRDelonghiAc
setPower(const bool on)IRDelonghiAc
setRaw(const uint64_t state)IRDelonghiAc
setSleep(const bool on)IRDelonghiAc
setTemp(const uint8_t temp, const bool fahrenheit=false, const bool force=false)IRDelonghiAc
setTempUnit(const bool celsius)IRDelonghiAc
stateReset(void)IRDelonghiAc
toCommon(void) constIRDelonghiAc
toCommonFanSpeed(const uint8_t speed)IRDelonghiAcstatic
toCommonMode(const uint8_t mode)IRDelonghiAcstatic
toString(void) constIRDelonghiAc
validChecksum(const uint64_t state)IRDelonghiAcstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc.html deleted file mode 100644 index e6a3d4cca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc.html +++ /dev/null @@ -1,1396 +0,0 @@ - - - - - - - -IRremoteESP8266: IRDelonghiAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

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

- -

#include <ir_Delonghi.h>

-
-Collaboration diagram for IRDelonghiAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRDelonghiAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kDelonghiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setTempUnit (const bool celsius)
 Change the temperature scale units. More...
 
bool getTempUnit (void) const
 Get the temperature scale unit of measure currently in use. More...
 
void setTemp (const uint8_t temp, const bool fahrenheit=false, const bool force=false)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current native fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setBoost (const bool on)
 Set the Boost (Turbo) mode of the A/C. More...
 
bool getBoost (void) const
 Get the Boost (Turbo) mode of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep mode of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep mode status of the A/C. More...
 
void setOnTimerEnabled (const bool on)
 Set the enable status of the On Timer. More...
 
bool getOnTimerEnabled (void) const
 Get the enable status of the On Timer. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set the On timer to activate in nr of minutes. More...
 
uint16_t getOnTimer (void) const
 Get the On timer time. More...
 
void setOffTimerEnabled (const bool on)
 Set the enable status of the Off Timer. More...
 
bool getOffTimerEnabled (void) const
 Get the enable status of the Off Timer. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set the Off timer to activate in nr of minutes. More...
 
uint16_t getOffTimer (void) const
 Get the Off timer time. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t state)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
DelonghiProtocol _
 
uint8_t _saved_temp
 The previously user requested temp value. More...
 
uint8_t _saved_temp_units
 The previously user requested temp units. More...
 
-

Detailed Description

-

Class for handling detailed Delonghi A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRDelonghiAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRDelonghiAc::IRDelonghiAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRDelonghiAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDelonghiAc::calcChecksum (const uint64_t state)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - -
[in]stateThe value to calc the checksum of.
-
-
-
Returns
A valid checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRDelonghiAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRDelonghiAc::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDelonghiAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRDelonghiAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getBoost()

- -
-
- - - - - - - - -
bool IRDelonghiAc::getBoost (void ) const
-
- -

Get the Boost (Turbo) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRDelonghiAc::getFan (void ) const
-
- -

Get the current native fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRDelonghiAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IRDelonghiAc::getOffTimer (void ) const
-
- -

Get the Off timer time.

-
Returns
Total nr of mins before the device turns off.
- -
-
- -

◆ getOffTimerEnabled()

- -
-
- - - - - - - - -
bool IRDelonghiAc::getOffTimerEnabled (void ) const
-
- -

Get the enable status of the Off Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRDelonghiAc::getOnTimer (void ) const
-
- -

Get the On timer time.

-
Returns
Total nr of mins before the device turns on.
- -
-
- -

◆ getOnTimerEnabled()

- -
-
- - - - - - - - -
bool IRDelonghiAc::getOnTimerEnabled (void ) const
-
- -

Get the enable status of the On Timer.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRDelonghiAc::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IRDelonghiAc::getRaw (void )
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A valid code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRDelonghiAc::getSleep (void ) const
-
- -

Get the Sleep mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRDelonghiAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in currently configured units/scale.
- -
-
- -

◆ getTempUnit()

- -
-
- - - - - - - - -
bool IRDelonghiAc::getTempUnit (void ) const
-
- -

Get the temperature scale unit of measure currently in use.

-
Returns
true, is Fahrenheit. false, is Celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRDelonghiAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRDelonghiAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRDelonghiAc::send (const uint16_t repeat = kDelonghiAcDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setBoost()

- -
-
- - - - - - - - -
void IRDelonghiAc::setBoost (const bool on)
-
- -

Set the Boost (Turbo) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRDelonghiAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired native setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRDelonghiAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired native operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRDelonghiAc::setOffTimer (const uint16_t nr_of_mins)
-
- -

Set the Off timer to activate in nr of minutes.

-
Parameters
- - -
[in]nr_of_minsTotal nr of mins to wait before turning off the device
-
-
-
Note
Max 23 hrs and 59 minutes. i.e. 1439 mins.
- -
-
- -

◆ setOffTimerEnabled()

- -
-
- - - - - - - - -
void IRDelonghiAc::setOffTimerEnabled (const bool on)
-
- -

Set the enable status of the Off Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRDelonghiAc::setOnTimer (const uint16_t nr_of_mins)
-
- -

Set the On timer to activate in nr of minutes.

-
Parameters
- - -
[in]nr_of_minsTotal nr of mins to wait before waking the device.
-
-
-
Note
Max 23 hrs and 59 minutes. i.e. 1439 mins.
- -
-
- -

◆ setOnTimerEnabled()

- -
-
- - - - - - - - -
void IRDelonghiAc::setOnTimerEnabled (const bool on)
-
- -

Set the enable status of the On Timer.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRDelonghiAc::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRDelonghiAc::setRaw (const uint64_t state)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]stateA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRDelonghiAc::setSleep (const bool on)
-
- -

Set the Sleep mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void IRDelonghiAc::setTemp (const uint8_t degrees,
const bool fahrenheit = false,
const bool force = false 
)
-
- -

Set the temperature.

-
Parameters
- - - - -
[in]degreesThe temperature in degrees.
[in]fahrenheitUse Fahrenheit as the temperature scale.
[in]forceDo we ignore any sanity checks?
-
-
- -
-
- -

◆ setTempUnit()

- -
-
- - - - - - - - -
void IRDelonghiAc::setTempUnit (const bool fahrenheit)
-
- -

Change the temperature scale units.

-
Parameters
- - -
[in]fahrenheittrue, use Fahrenheit. false, use Celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRDelonghiAc::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRDelonghiAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRDelonghiAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRDelonghiAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRDelonghiAc::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRDelonghiAc::validChecksum (const uint64_t state)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]stateThe state to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
DelonghiProtocol IRDelonghiAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRDelonghiAc::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
- -

◆ _saved_temp

- -
-
- - - - - -
- - - - -
uint8_t IRDelonghiAc::_saved_temp
-
-private
-
- -

The previously user requested temp value.

- -
-
- -

◆ _saved_temp_units

- -
-
- - - - - -
- - - - -
uint8_t IRDelonghiAc::_saved_temp_units
-
-private
-
- -

The previously user requested temp units.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.map deleted file mode 100644 index 135028626..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 deleted file mode 100644 index 11023639b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2c5e62b1f4690577326cff81ec7aa759 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRDelonghiAc__coll__graph.png deleted file mode 100644 index 4eaf76de0c86418abe656fc5eb375bf47fa9e40c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6477 zcmZ8`1yqy$|27sV9RkuK1EjmVLk1X3LO~ifa4?zyQ}B_7hfYbQk#ckhlF}mG9bY)yzklB?sM+%9p6u1*R@bXeJwI#Mq&a20x}(K^%uYq1AI~U34veoD~S)l zfzaximO8=p%_plVKaPNa;kJ&t$}8`5?5vORtM#Uz`@0O3HcTQvp9VgDcW0C-sVy?c z^&?jpF_$`xcxXIhm3Y`!NT>t)cuWAT87|dhjfO@-T9d!JJ{x`I)^GHNCbCZR+E+7K1P`!OYfS(MeM2GSl|4|f|6qa>_0|5a5}OOb+SXjESf$nCmp{pAUFGBd1J zK%R&vk1cekrls`;vjt2D-tusFbabQx=e^9=k4a3ltH6@{j!Q~9{doyVbKk~ zxn2@JH}ig#j6w7hi=5{VGar_ZbfeW<|AvtLD>*iHV4f zA$EBMg$HD0tIN?!)t(M^9%UJ_U!oQk-fS$~K93Q8D{rdG24vxBjt9nQLzwBzpl{OC+ z7Z(dgp||hck?}h#cWgE<;}#XAMw|A3xOHcu!K>_Bu_LXgr{`Tl!b-b-Mk{OU(CFy( zxsa~4sl9-E_wF_BwUIc8Gx{EHbqEFQlf0j;w@saYlZJ7Z<m{;vHspbAsM+A!;9X&n0=kDCB4ND$4trK^+j$0K%g@SZQ z*%TW!js^MnH~?QMDJl7$Z1=#*nlv>uG{VOuq{6vjwzizR%@=~PAS!C=+dt8;@nj{G zqMYY;R&8yv1Z=DvHZC|KTTxN*H9z0&^2`;1K-?!Lej+Q&m^yL@(#b|}=%ftA@#Dn8; z3%8va8HAe~aHnRIZ7S@LRl)b)l$0L))ddq)4+^~suCVQ;gM5FZqoea+Bo7R$ByaHA z<&u_8E;Xxp(p$MXP_ee9VBJY7_@?&f$2&ybzkfdg7OlIY(6#-2y3GciGaPrYnzw59A{a=g;}gs!4-d2|i?IvNd>Oty%-`efsoC z*lkTu(7f@!G6X_LU~X=nM^4DZ#Ps|3@9u#CNoR}P;bi>o!UBP^krAzrkB_vB%xD@L zCFQ$9sOO`)x;lc|hK8D2GF0RD(o%t|^J6hEX1)d0gl!9&ev?14xV;_G(9q!6+|q&y zLa_e82VLR@QJS%!^P|mQn=ICgHV$4vguf4s!wYBxg#`?PDZx|m? zib!woa-TyxQ86(b#^M^9%1TSyVV~*WnIdL?pMt{vXk+*l1hRy|gzJ9GDJZyal8Cud z*U*qK%c!Z5qNSxhmVNTWv{YkjEC%QBXd^q`1UHO>b}SCR{8i1wS7vTkz^wX{Wz*q|8Ezl<-bUN(z}3 z43?%4;fc!_9UV;oO03GNgLr4IsW*m0%lL-_6$1mq-@kv~2|p?*Dr$2OUs_)NwbBz8 z8Xmqpg@ys!Mx1P$-oTO}%^Q)YKGR>GJZjnvD%e%zj|ycLEVAIm z2?+^Kv-Jrg)}0GmTfaX&pxKzL;s!E|LqdWU2vF8{jwer_hCHC*${KbEiH_zL6eLF? zFX$2yVq;Z(d}MCjx}~nENzKFr>nTDvAoGI-1qIdB)m@f5$@IU-YPh@qa7-Diw$#-n z9vB!PWfTtq61cIkaiZBD8E&nsqm%vh>nFe)T;Nn2#tIvI`|;}E)v9hD+Io5`L)mK5 zKsEaYrJ31xMX|`AOjt*-DY2qZsDVr+17l<3n-->%i1F&0Wy;|Q4`xkObV+1vv)ja) zjkE?4-3%1|b0barzv_6b&w@8Z#UV02{-KkzGlSH7X4BHdnmONa$B{e}xe|Si87BVZ zjyMCwo(u)#-tjS~sA%lop3B(xw=itEEUl{zZC_h|f8=a~mzi9IKA8FcPQ(x!+PnWy z_VE7To7A3VSynApC=cS1kU%ReJJ8~y!cu#o+kwxNp#iwygrub4nwpwb;=QirC!8QCinH=b`ykAEn8s4W5VP4l;?X9@bb-r!qDQq!6x! za3^8@zA^0BIDT&=tvCZxe8qn&yG>B}e65d=#p3&K70K>yO$N~3qXir6 z(8FgHJ-mgWMy-P9lYfte8OTJ9G|<~f9OJsw7Dkad(CAeXgY;RkyP&gBLBs8fk5&0B zCr~ELy*!sNFoYnJ`|q(P_aoFq5DINFh=2X3u-3%7W1~LrPdZdFWuN7|jBg7o%*hlw z7xbm{QOW_2tVxqrfny0$Pg1pYmH0#tml!eFPFZ>qn*{0X5;D)0zZOI|Unxa^K6ar( zFr(Fm?v=9j9?MjyV9j*~m@Tw8g89N(vMV4B4E~n=B^P7bd{GcGxFlBCWZiB&?Lq-9 zN$5C+G6CPtu=-?LPGSqYFm~Yvi6v1wO%fs zk$qCT_MT+3HLa=Ue$SMbIz@y8*o&)2lc8Uk`_1`}?FwPlUjOE&;l-JB;}~tI9>x65 z#1tQX+0H18ZLr9vk4lc4X$K-M-)}UjTj0d0idqH_RqaHU2>ck`;B1yw{1XWT>t82_ zqld<}e2X%#(r?!!EO~jv>bAi?G4^Oeg=Z&6qIeomywszC+oO^ZdRxzq29#%RvutI& z^qUv0s_|lQHZLzwlFLb=|eJQ_l829~Qa;_xqAS-_qvw~BFN2QAG z#cq58Sr(N-tMeF7EPD68MEB#upLJeR8FMF3Y34A49Jk0XVb49Q#(xC*q?@J%^Z%-9 z2t4ZnNr4J?;8xb$i(BKfQ;R(2`Pz_Rt@=f}jc$XSndDeeg6NO>1x}zg$Wg9%e(E99 z@fdl*t0+ad~Dz zoAds!+LMYA$!B zi^5O0eiOHpu1v?P0wIaa)moO*Yn6X^tpI!GzU$aKv3jLGSbi@Zxl5SQIv~%uYKJwH zZPIt^=QZw{ohF3xMoJ%3YZ;Ny?AB9Fbq;h8%F&Bxq7~djVGxxK(*L0A|MZfLKRvum z?5C(_r7WKx|Ikj-hg{*N{UoL0wwF1_$UAZl4i95Mp*cA@lFnMF?DWb;sF()l4@i>! znBw)O>cYtT^fNW`1dTOh?bP1lugONAs>$kcsu`ZbRSS};+FEQLT5Yqk{_?dH2i+0p zH3ktS)HKlUb&<9@D+6!@=Xq_S!*g#M6{N@S3{XC{j2e} zVZkHpjufcqla12|(Nf; zB|JQwAT&zCW^O7a`WQ|1X%D+p7-BKCb|+$5QgG& z^LFT(2sa)r9XOC4}hl_`S4`+06psJOa{z{W}}$G^YLvjs4S zj)B4Y+5Ym%$_nMfhwAR`;+o4X%Tvw%a>cL9xRjJKCnk*T`jRbu7ku>eNP#K9&A}1m ze{oU)kdff1i}v5lPAsqFGltf)YuJ-RJLc>Qlx=-R5B>rBP8!0TMm#^0F>%4Ce)Jq& zEVKr#uJ$IS1&l+{m2q)#ew%;35n|TX)_#8|8QIhuAtekdffR##DOlx=%^N&R9q|Ct zwNW1E?Tr%?6}3@r_BqUR#1H3c*(wY2^E(+SeBa@VmHH<=37+0CTXcLkT$@&FjLmhw z(t4w0F7I?bIW9UndhR`08RjjS&B2_F6OTXHimPDF~?`;=Q%G5pFVy1v%mEC*Fa-aQ(-|tR#w)} z_;Sq3qlC0Ytu%+vOmQQ|0OnYJ8_@b2#Jth_wJpw=4@s+mj0#>RHT*WSEg z27;AaSs4q!AZivCu!qN?6zJ~VyTXVS?X|uXHA_o&V5Wcl`qi@_;hp0XlhSv6$s#~X ziCVVZy`eqz9vE#fxMQ+z#~q+g*t_@ci2y6&jAZ-!`|TYamhkyXDPrJuLm(fOl?h^E zV%j@9O)F(p<*0%N@2N1z4&E8zFI+&}(+rx(e=x=wi)QfBg~7hkwn@f$yypY#e^+tg@+(oSZw0sq)sq{;0L4Q`SYzr49+35teI=mne zDq-NmBZ@$aL#KV;t8W%L981y|tz2mH18ig|}6VF_D@k>$b$i8)wDi@a;TNfuG zSTKjU3JCU0TiC8p=(8LmA9><3RWIK>4%t5(#ZSnFM5}3W;bjH>HsuRgC*ooQ_UKYF z{oz=bK2_ujvKh>?5(;ATJrAeX@^F7*V%946s{g~f{29W7eD%Cxj65H#TlU&*i9&`n zeNE*$G}>5>Is2YE(Mvuu+)7-7RnVKAi9Y&c-l{ZQm*bEPfYr4+5?+6^po~cNB}E^>5L6i58!K}xd;eW<9YZHb~>?vxD7O#yEmtK>k5yQgoih|L7wm=c zNVBhonc5IBxBW_P_hza2?b^_tKCGv}v@xHX`^QANZ|DdMdSxlC{dKHfd*me@<=GD= zjd`OS=(?BmEUr1Rp@vKyblO$;y5>aSO}Vry+{K>5I&mCA%o0^ARXaizI^`Jpzo7Cy zF?*~L|qTecf?Jr91Z1(mP!wad^Dczg`HT;@CT(i;nRz z4tq8h$8A7OLt~8jVH8eI zPSmxuICQ8@ORI-%0UEG5T_aT1f|mu}#33UydDOXERKzRkG@%Uic%b}2oSd$QYyCut zuV1`qJ6P=vjf&!ul}$A&hPYmwv=9{zrb>hhm{kkI=i~wQ(jLJeb|YUo20VXGMM5uV z^XID$&{p<`wb-cW=rjR7@0bEuP4s`VL3TZ5N;UrqDJT_ue&S@X1t6W zAZviz6ZuWrf<8aE#-Fz2H#VmCr%6@0E^88#keF0hX*Aj50X}}PRa|xeY)T~H(i>7@ zY&kVoY1`|9Kv=C0d?_(S7Yz@5%^QRFHTz$9@6@fAqtUA=_8FGf_^ac!GUJNCqa$}n znR);Bw+;7!xm;Y<46QD`d$?8EQ}4BF-qzL@5)!g-bvkbk$Q1(h@X=qnJ31e2ZEYXY z(IJ-FAJFj|f5^}0j*5zE#Ghj}-0KOoxCxrf2Rp*)eGdDjT;1H%a)&9|*aiVd@CXV@ z3P^cuy$TErEU&3q-^|a<1GwVSk`-Wbl8}Yn&P*N9-j_Bvdw^|BWu+69&L;z_e?~^Y zUXQ>T@+m^iXMtN=Py%9NVricP5WMM_4nP^wa&j~b3_1=D4u_Ha$wo;V@1TA0JTH^Q z?8!MfIZMoHqFS!7aC!XMa=|O`ZVNF9CWB-qSBv84ygoPw{6!YsiU4AEc5yMD1~D}J z5E)6qOUK;85`+OSOB-Q1ka+P>N39U^i= zL&Kjh4HS&v=M~mnfX^N)DX}H!YGf+hHv%EEy!XGrSma7l zLaf|pWo7k7BCX-@XpoK{P*Me>TXwyF9K;`y5(0(}IfxT%xXUigYi;KNYRyX{BMl(+ zcr15;UhtX!KLrC|mPHH(mKuP+^r?P7tE;Yl7qFnyK^y^a_K_%!@+d(h=C6G_#Y>Ik-a1aa19(H&ng8*7=KRB>j`1ujU&HeJli$L?Tbs-e4S8e

k%n^G`G^lvN z4-^Qqtb4aOcFqIa9!jI5r}wp>AjE6lKk0d{W=f)tu5MdbS1=%|WcaKx#Ky&ihJ<99 z)pTYGo;A#0kplrT55U=)Be4=Qv$Md(P}lTlNrK;i0s@4~7(f9Q_1rf8K$JKhZ=iG) z4_F|P{2m7D1>}jz8aNw4IK2=c7)Jw-&ojsz02I_mvhEJWy);vrt_D(iU@#{amnLb< zMJtfgH)R-n9U#unuNPtOoTl&=pK9a?bl%TE7O}IlZyftdzMs+d_O3<$qMrJw4f*E* zIk_Dmv|Vl*pmLC>I}wZ$MZ;zAPXk(@;x<5aP856##R}i$qh!(he{}l)qe|Q-&YqZi zx6f>vUHp88MK3JCUz48OJad=}`7o&@a7ZIGiH9Wc#ec81B-yU;qzrs4&WF9eRg!#f WSJ`pw8u)*NKu1Gg{k!VB!2bbx?&IeG diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc-members.html deleted file mode 100644 index 5b239dd90..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -

-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IREcoclimAc Member List
-
-
- -

This is the complete list of members for IREcoclimAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IREcoclimAcprivate
_irsendIREcoclimAcprivate
begin(void)IREcoclimAc
calibrate(void)IREcoclimAcinline
convertFan(const stdAc::fanspeed_t speed)IREcoclimAcstatic
convertMode(const stdAc::opmode_t mode)IREcoclimAcstatic
disableOffTimer(void)IREcoclimAc
disableOnTimer(void)IREcoclimAc
getClock(void) constIREcoclimAc
getFan(void) constIREcoclimAc
getMode(void) constIREcoclimAc
getOffTimer(void) constIREcoclimAc
getOnTimer(void) constIREcoclimAc
getPower(void) constIREcoclimAc
getRaw(void) constIREcoclimAc
getSensorTemp(void) constIREcoclimAc
getTemp(void) constIREcoclimAc
getType(void) constIREcoclimAc
IREcoclimAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IREcoclimAcexplicit
isOffTimerEnabled(void) constIREcoclimAc
isOnTimerEnabled(void) constIREcoclimAc
off(void)IREcoclimAc
on(void)IREcoclimAc
send(const uint16_t repeat=kNoRepeat)IREcoclimAc
setClock(const uint16_t nr_of_mins)IREcoclimAc
setFan(const uint8_t speed)IREcoclimAc
setMode(const uint8_t mode)IREcoclimAc
setOffTimer(const uint16_t nr_of_mins)IREcoclimAc
setOnTimer(const uint16_t nr_of_mins)IREcoclimAc
setPower(const bool on)IREcoclimAc
setRaw(const uint64_t new_code)IREcoclimAc
setSensorTemp(const uint8_t celsius)IREcoclimAc
setTemp(const uint8_t celsius)IREcoclimAc
setType(const uint8_t code)IREcoclimAc
stateReset(void)IREcoclimAc
toCommon(void) constIREcoclimAc
toCommonFanSpeed(const uint8_t speed)IREcoclimAcstatic
toCommonMode(const uint8_t mode)IREcoclimAcstatic
toString(void) constIREcoclimAc
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc.html deleted file mode 100644 index e104cf8c8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc.html +++ /dev/null @@ -1,1203 +0,0 @@ - - - - - - - -IRremoteESP8266: IREcoclimAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed EcoClim A/C 56 bit messages. - More...

- -

#include <ir_Ecoclim.h>

-
-Collaboration diagram for IREcoclimAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IREcoclimAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kNoRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t celsius)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setSensorTemp (const uint8_t celsius)
 Set the sensor temperature. More...
 
uint8_t getSensorTemp (void) const
 Get the sensor temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setClock (const uint16_t nr_of_mins)
 Set the clock time on the A/C unit. More...
 
uint16_t getClock (void) const
 Get the clock time of the A/C unit. More...
 
uint64_t getRaw (void) const
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t new_code)
 Set the internal state from a valid code for this protocol. More...
 
void setType (const uint8_t code)
 Set the Unit type/DIP switch settings for the remote. More...
 
uint8_t getType (void) const
 Get the Unit type/DIP switch settings of the remote. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
void setOnTimer (const uint16_t nr_of_mins)
 Set & enable the On Timer for the A/C. More...
 
uint16_t getOnTimer (void) const
 Get the On Timer for the A/C. More...
 
bool isOnTimerEnabled (void) const
 Check if the On Timer is enabled. More...
 
void disableOnTimer (void)
 Disable & clear the On Timer. More...
 
void setOffTimer (const uint16_t nr_of_mins)
 Set & enable the Off Timer for the A/C. More...
 
uint16_t getOffTimer (void) const
 Get the Off Timer for the A/C. More...
 
bool isOffTimerEnabled (void) const
 Check if the Off Timer is enabled. More...
 
void disableOffTimer (void)
 Disable & clear the Off Timer. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's common stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
EcoclimProtocol _
 The state of the IR remote in IR code form. More...
 
-

Detailed Description

-

Class for handling detailed EcoClim A/C 56 bit messages.

-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1397
-

Constructor & Destructor Documentation

- -

◆ IREcoclimAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IREcoclimAc::IREcoclimAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IREcoclimAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IREcoclimAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IREcoclimAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IREcoclimAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a standard A/C mode into its native mode.

-
Parameters
- - -
[in]modeA stdAc::opmode_t to be converted to it's native equivalent.
-
-
-
Returns
The corresponding native mode.
- -
-
- -

◆ disableOffTimer()

- -
-
- - - - - - - - -
void IREcoclimAc::disableOffTimer (void )
-
- -

Disable & clear the Off Timer.

- -
-
- -

◆ disableOnTimer()

- -
-
- - - - - - - - -
void IREcoclimAc::disableOnTimer (void )
-
- -

Disable & clear the On Timer.

- -
-
- -

◆ getClock()

- -
-
- - - - - - - - -
uint16_t IREcoclimAc::getClock (void ) const
-
- -

Get the clock time of the A/C unit.

-
Returns
Nr. of minutes past midnight.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IREcoclimAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IREcoclimAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IREcoclimAc::getOffTimer (void ) const
-
- -

Get the Off Timer for the A/C.

-
Returns
The Off Time, in minutes since midnight.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IREcoclimAc::getOnTimer (void ) const
-
- -

Get the On Timer for the A/C.

-
Returns
The On Time, in minutes since midnight.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IREcoclimAc::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IREcoclimAc::getRaw (void ) const
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A valid code for this protocol based on the current internal state.
- -
-
- -

◆ getSensorTemp()

- -
-
- - - - - - - - -
uint8_t IREcoclimAc::getSensorTemp (void ) const
-
- -

Get the sensor temperature setting.

-
Returns
The current setting for sensor temp. in degrees celsius.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IREcoclimAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getType()

- -
-
- - - - - - - - -
uint8_t IREcoclimAc::getType (void ) const
-
- -

Get the Unit type/DIP switch settings of the remote.

-
Returns
The binary representation of the 4 DIP switches on the remote.
- -
-
- -

◆ isOffTimerEnabled()

- -
-
- - - - - - - - -
bool IREcoclimAc::isOffTimerEnabled (void ) const
-
- -

Check if the Off Timer is enabled.

-
Returns
true, if the timer is enabled, otherwise false.
- -
-
- -

◆ isOnTimerEnabled()

- -
-
- - - - - - - - -
bool IREcoclimAc::isOnTimerEnabled (void ) const
-
- -

Check if the On Timer is enabled.

-
Returns
true, if the timer is enabled, otherwise false.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IREcoclimAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IREcoclimAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IREcoclimAc::send (const uint16_t repeat = kNoRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setClock()

- -
-
- - - - - - - - -
void IREcoclimAc::setClock (const uint16_t nr_of_mins)
-
- -

Set the clock time on the A/C unit.

-
Parameters
- - -
[in]nr_of_minsNr. of minutes past midnight.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IREcoclimAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IREcoclimAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IREcoclimAc::setOffTimer (const uint16_t nr_of_mins)
-
- -

Set & enable the Off Timer for the A/C.

-
Parameters
- - -
[in]nr_of_minsThe time, in minutes since midnight.
-
-
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IREcoclimAc::setOnTimer (const uint16_t nr_of_mins)
-
- -

Set & enable the On Timer for the A/C.

-
Parameters
- - -
[in]nr_of_minsThe time, in minutes since midnight.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IREcoclimAc::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IREcoclimAc::setRaw (const uint64_t new_code)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSensorTemp()

- -
-
- - - - - - - - -
void IREcoclimAc::setSensorTemp (const uint8_t celsius)
-
- -

Set the sensor temperature.

-
Parameters
- - -
[in]celsiusThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IREcoclimAc::setTemp (const uint8_t celsius)
-
- -

Set the temperature.

-
Parameters
- - -
[in]celsiusThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setType()

- -
-
- - - - - - - - -
void IREcoclimAc::setType (const uint8_t code)
-
- -

Set the Unit type/DIP switch settings for the remote.

-
Parameters
- - -
[in]codeThe binary representation of the remote's 4 DIP switches.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IREcoclimAc::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IREcoclimAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IREcoclimAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IREcoclimAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode to it's common stdAc::opmode_t equivalent.

-
Parameters
- - -
[in]modeA native operation mode to be converted.
-
-
-
Returns
The corresponding common stdAc::opmode_t mode.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IREcoclimAc::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
EcoclimProtocol IREcoclimAc::_
-
-private
-
- -

The state of the IR remote in IR code form.

- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IREcoclimAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.map deleted file mode 100644 index 8ae43c845..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.md5 deleted file mode 100644 index f1b86958d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -12d66d95e0fef2f79eb85a49551c1dfd \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIREcoclimAc__coll__graph.png deleted file mode 100644 index e13419639f1cf88b56b499e9004e48bde7298ccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5767 zcmb7Iby!r}*RA;1HB3Q^p9 z;DBeXt*!#O{`<{o`H}>IP|0YjC>p-Z+?oq8yk$R+zq=FeK^nz^#djZCU$I%1Q}NcU zw5skqQELxtXt{ywC~`a#(0rAj%_WU)42JeEAdO$9t%oq z2w~V#t^m(8dWP6$qejvDviM6$l)o z5)&yxKOs0&EO~edp){}!+SAk1sVduOPHQMa*am5Ny1#5!9P(!qZC9K@un>xkKi%(q zplxbl5eLU7|D&a#WTL0{>f$1>x(u_}0oUV8u`|bqGUXeftv=SC=DSQ-;LW7ZpWS{^ z=R&*E|6!DWgRS#jO3Lf-@NnO>VPQ^IEM-m2$aX!0n`}bj3CTuAMvD?;Vq#*cWIax* zs;aEAvU4L=1aXpe(GNH{g=Mu24umxgbhD&xyEpHtMgL|%g<>Qc8X7E5c9%|mMhogx z@?{+VstfXz@>SQT`xxZE_W2D(NJCp0-N0+sVk6K<&`1trJpwQ5@(J#vR z2BuO1(IV&D#nI8kRDu>HaTt%SX|dp|I@cKr8XAHqm9RYw3iCaM|3akJEOuyLsOH@Qs-+22L}kGz>u%`V!v;9e?P3g{{G5fc6?)_RNnWx3IAg; z85xGYG(ptK9%gBM{q4|@UZ#8qQ^tMwH|6DmXGa?mlg~mJ@!+54&cKVVu8!L<9dP`> zh}hj-j}r4Hs$1N;;f8!YSC{9~u3fWVyWzOAtCA=;d&C$FuoovLxXB_bknA_AhxbN4P1U2PBBn79Md&LSrV z%DT~hkjZ7X0SXeXp`+8?>~}B}=;)xNgq4|@$&%IwJ6zQ-UdURD^E+5s0zv%N+pDOl zNyx^=_AVoX81nv}J=yxk#@^-e0%jy%n@3O(1)dPY=NzLPLAKOIF0W!_bUQaUclY98 z5QB`R=MfO-&eu-!I9wfe3sKyj{d$XD+@-xG;8^Iz_N?wqMaXrqii(QmWSO~T%%_~3 z9Msl!QHg1VvB`W=I#8%H`^Nqgnw#Kblr;45j9$2V#Yd2DC*dAQuY#Wmy0`nr>`u`v=-@$=_T@nyI9=3YoeV&cu<`C8{m z8i?=tpDo=!5#-eBa2`62QCcdHiHZtY=YsB(9~>C4Wk3nnnhgvFET@=Et&bN!smVX} zdi3nsVCr4-?+63l;-aFT8#>zB_ZmrKgsGs=4&SY5+eBab>eh*wj>lQQOjFVEyhePt z!K-)Y19lY4C$S+|*w_gP385+cCTt=iH+y?~8~l&>AUOyG4rCF7>B`2bsIKk;b*gV> z_I+|^dAUd4*Vh*hA}TJfRA{KgmQeGUiIVbpnVp$R04f<9k3_-Ik#}=*bK2G2&rh=3 zTKEkKZRa4!2~Ar`bro{|@bDM2w4`K5PY>?RC`3;)5{aa;l{;Hy_h5(srHZ*YJ&*`I z5o&H}IbFWGx>BqEBrEH9JX$hH+24A;zP1*1c<4Rb>~||W=nt*D{N1}`+z&r?zb2-p zU}TIXyv3!EH_XDq0%1!a0G-BF?j;NcGcOyQoTMftCB36d#Y0I{UGu;Jj0vm7A|7P1 z&UEGXZ~QFXh$r=Kdk4QfCI60cW$Xes&$#$+i&KPj1#HzugsRh~O-v0fadE9?8(yjAgX&)U$~IJdc(K|AfPs*Vl`9x2_Jqv@yBB2tKu z!w?H46_wJLQCg$V+%x@8{Ywwp6FIeWh8-%LC-2G}&w6=yc`1XNX6NQAeKw4r+uC-F zkKb;`BuTKcvPMQlg{GxZrwW*cArKrAQc`raW&Qm+1>;UQxVWt1;#6Seueg|%JI^l% zcsj{_sC8eEyI3L*X;0>TB;>uS_p~*THi_#2*6z!uhQ>x~(7+=jBVWbGlLM^jnw&BH z#~_Q1OFN@(aW8Ie_GbreX*MHi+)=M~ZbgI-v%I*-f3ngX6N`~}Zf7@=|3v(A zl1$$4CIOUAOG^po&Hu!=(&A6owi4Pv+=&G_AxijHO&Xe^s= z&_W3QJ$;8HFuRnvx8kLMQs#8R_-FO_T8YZXWVRhahX*gZe?3qh4tZalugq2|>Ubz| zgnTgDT7sbbzgGj@-}Wjj?AL}|=HWB(yS5{wv;3~%ii7PW z470qvv39kZYgDT^)a2*fD?&WPOpA+~*?NAau9Xcgb8{K7C!SY6qO*=+q1VCBJ%|wq z(bRD+PRL384!-nWIdunJIt|nOIJ>c|up=<{XLD?ZWJMR{-P0B~YMu-^&MN zLZY?Vu9@%Q@G-JSb$C{@bn=l|C9Pk>VC9C<y>;OxItI zaAd9DdeY~fNkT%xfd7&_%~IEw=W`%sc+t-I39QX^p`-AAWR{AaiCkFsC{tUO7$lPs z#r*r2SqqG|_#sEWdoqc2C4oMFAhhX{R->755xN-$CC2;NiMm~obl=yU(9fyJne<(V zQG~Gjne`^0JO{%WBNq2pIA(R{-50A`lc<_MIX|HYIkGz|w1*_>&-lZxpk2|~_@m5I zEA6kk4&2-4O~V~$LPo9i2Yg7q$w_Hwww*pLmLwioaE_R5gyS$VyQ`Hmhn+8z!#G<; zu=J0DR3&Q*PEFy${L>aBaxC4iZ|?IRen4zSj-jA=20^=*KlluT)EUPg6l&VE_dIlC zfBpvl?D~!GqX#`)x)0v`I8?DIjgwN%m>Qom0!6{H--iE0Dp@Xnkl|6{yosMGX>1Xp z;-k4cj9Sk;+qr^yqx?wdG*QtjL%-vB2`j~ulfwx}H~}ZM8P!BTp2T_Jla$}Zg22tt z{T|Y06jmK_XX{|n)Y!-fkj}BOvBQFo6J3E62Ni3G82?e~l!d}Qc$9Rh`afwa!pAKA z;w2;5U=!ITJ6%i1tjn2T!VT6oZ?gsC8`=5>4fr2En`kL2hH9=u-$oosQMwqhc~nVn zGPs-tG@DFaP?3fBu*ig&ziTQh>4K8Dm|t;mN=TE1JXMi>;SV49TQ*&Y8dTOqn|8T~ zW>)EoXI))gmA+eMI++qsgF?#l;~mt$lhKWFCozLZkDwG3ko))V1MtW#DJfA6+L$O+ z_VyM9bTAAKhpmtC2K(9Ca$4KiuqO3V(9yjGSpCIK+iyPT+rzOX^!Sy>yJ=Y;Sp(|p$Bc^niZ8*ngi9~}v0e{WI#d*k5v*#7rmwmraQ zfjf6%{rvod;T`QXHZB(@doDmuZ2riS*14Nj{q36u-YX*$lNZH|4`TgOp~u+L)n>yO zSEZO#RZVn%`_$KCE%a6&x&Kq60L>4nsYrPf9!edygo@72PI245|1WzxFx31|Uziyr zx5qa+Cbw=ZIl^u#-gf>S^NKKpROm^FF2Ln0n588PV89ig%UXaR|HWvNatmBYa&j^R z5*QfR4r7prgJ)$iZZEXOkBk_!k_ie5UR72fU~U=4#>N66^-hE1PAWbwu8;J5#0#H> zJzLV;)YJB_Z9$W`k-bxg=*ju+TDtGDfZYK8B1A)S@>~8o3b31;s;ZkeZrq@VQqe0k z+}+(>{o@}P6f`_E1WD2A;r^`jY1LO&ciXyOj)o}8WF{IF}#_-e>0lWhOrlONA$Ec~P$-~DNrk2;y6HN_eW+pGK+c?h!NdIrdjZg?7Y6*qWV!{@al48xw@t%S)PB| zUrS4?%Auqsst$fSwCzmoOGT=RN( z+t~!HHX+ZB969Nc#!pd83&q+V=Ob`3_jYZ6YR-IUr^V45^$Ox2SG7AnW`a{i-R7$7 zS2Zx6xkz=ERdXSwXN->Ku(P|t{Uyi-utJ!%>Wgm?X=$+^)h0}AxI6A0UC%46GCaJn zGYip0pMSj*urpB8`Hg}Y6cW0dFkp5?6fvxM#4JCo-vsPbxd>!=7 z=SSv)lwY=$%+cW|f=ZUZEtg~0;H!dA`tcm6u2;F>8X^&|zy?!vX2F@L%K9`6%;M z^~1`f%o?0rP5}tg9UQVn=IfJ)-u3CG7lOXqvr%Hs6N|5@Erd*4x149f5Hd#AHei$Iw$mnQg(7CUniHXhS*^yd`7!o)dvB}Al7aPy6l^h&+ z{wl8hea}sx^k?eb)h#TT08&im_5%eb9Pq~_vd6j^*hLb)o9~CWSX;VQLU^mItAXD_ z3ZaPZ(a_e0mzTRolso#K>{>b0n*CZ{wpwTn+TGi`0RfPS1>xi8haIgOJ%9eZy{iiw zQt`a^CI>fnUR@oPe@kmu6*67e2Ja*A+92)3g3YgzxF7DfIRQupX;6W|gt>Gx2_OZf zrK;fn0>l2mp2a&NvRV5-rFU+((CD~3*th%KRD zz}bvnKp)~CU3NA#bc=x7oq?@(Wk(2(c_^6zZRxjj?A34{P*no zUl|wofZ9FrL!;5}MI8;I*M9XTL0$p7giT0@;;)R<7HkR6&1H+B5ypb-{*c~jN26)W zTmH~d-F+H)0~^nBAYCl5B`Za&7G%j17)7ot(LL6GuU3y|+B$l#abDsp+Eh{^0H!mP z{{-uByJ@F$bTp~#OQ4iDx4lyM|E@OwySZAt^G?ojghM+*VOrRELO?shvbIE=7nn)W zKsRegC`v8 - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRElectraAc Member List
-
-
- -

This is the complete list of members for IRElectraAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRElectraAcprivate
_irsendIRElectraAcprivate
begin(void)IRElectraAc
calcChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)IRElectraAcstatic
calibrate(void)IRElectraAcinline
checksum(const uint16_t length=kElectraAcStateLength)IRElectraAcprivate
convertFan(const stdAc::fanspeed_t speed)IRElectraAcstatic
convertMode(const stdAc::opmode_t mode)IRElectraAcstatic
getClean(void) constIRElectraAc
getFan(void) constIRElectraAc
getLightToggle(void) constIRElectraAc
getMode(void) constIRElectraAc
getPower(void) constIRElectraAc
getRaw(void)IRElectraAc
getSwingH(void) constIRElectraAc
getSwingV(void) constIRElectraAc
getTemp(void) constIRElectraAc
getTurbo(void) constIRElectraAc
IRElectraAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRElectraAcexplicit
off(void)IRElectraAc
on(void)IRElectraAc
send(const uint16_t repeat=kElectraAcMinRepeat)IRElectraAc
setClean(const bool on)IRElectraAc
setFan(const uint8_t speed)IRElectraAc
setLightToggle(const bool on)IRElectraAc
setMode(const uint8_t mode)IRElectraAc
setPower(const bool on)IRElectraAc
setRaw(const uint8_t new_code[], const uint16_t length=kElectraAcStateLength)IRElectraAc
setSwingH(const bool on)IRElectraAc
setSwingV(const bool on)IRElectraAc
setTemp(const uint8_t temp)IRElectraAc
setTurbo(const bool on)IRElectraAc
stateReset(void)IRElectraAc
toCommon(void) constIRElectraAc
toCommonFanSpeed(const uint8_t speed)IRElectraAcstatic
toCommonMode(const uint8_t mode)IRElectraAcstatic
toString(void) constIRElectraAc
validChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)IRElectraAcstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc.html deleted file mode 100644 index 202356d8a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc.html +++ /dev/null @@ -1,1256 +0,0 @@ - - - - - - - -IRremoteESP8266: IRElectraAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Electra A/C messages. - More...

- -

#include <ir_Electra.h>

-
-Collaboration diagram for IRElectraAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRElectraAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kElectraAcMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingV (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingH (const bool on)
 Set the Horizontal Swing mode of the A/C. More...
 
bool getSwingH (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (void) const
 Get the Clean mode of the A/C. More...
 
void setLightToggle (const bool on)
 Set the Light (LED) Toggle mode of the A/C. More...
 
bool getLightToggle (void) const
 Get the Light (LED) Toggle mode of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo mode of the A/C. More...
 
bool getTurbo (void) const
 Get the Turbo mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kElectraAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kElectraAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kElectraAcStateLength)
 Calculate the checksum for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (const uint16_t length=kElectraAcStateLength)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 instance of the IR send class More...
 
ElectraProtocol _
 
-

Detailed Description

-

Class for handling detailed Electra A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRElectraAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRElectraAc::IRElectraAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRElectraAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t IRElectraAc::calcChecksum (const uint8_t state[],
const uint16_t length = kElectraAcStateLength 
)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - - -
[in]stateThe value to calc the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
The calculated checksum stored in a uint_8.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRElectraAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRElectraAc::checksum (const uint16_t length = kElectraAcStateLength)
-
-private
-
- -

Calculate and set the checksum values for the internal state.

-
Parameters
- - -
[in]lengthThe length of the state array.
-
-
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRElectraAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRElectraAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getClean()

- -
-
- - - - - - - - -
bool IRElectraAc::getClean (void ) const
-
- -

Get the Clean mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRElectraAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getLightToggle()

- -
-
- - - - - - - - -
bool IRElectraAc::getLightToggle (void ) const
-
- -

Get the Light (LED) Toggle mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRElectraAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRElectraAc::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRElectraAc::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingH()

- -
-
- - - - - - - - -
bool IRElectraAc::getSwingH (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
bool IRElectraAc::getSwingV (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRElectraAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRElectraAc::getTurbo (void ) const
-
- -

Get the Turbo mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRElectraAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRElectraAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRElectraAc::send (const uint16_t repeat = kElectraAcMinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setClean()

- -
-
- - - - - - - - -
void IRElectraAc::setClean (const bool on)
-
- -

Set the Clean mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRElectraAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
-
Note
0 is auto, 1-3 is the speed
- -
-
- -

◆ setLightToggle()

- -
-
- - - - - - - - -
void IRElectraAc::setLightToggle (const bool on)
-
- -

Set the Light (LED) Toggle mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRElectraAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRElectraAc::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRElectraAc::setRaw (const uint8_t new_code[],
const uint16_t length = kElectraAcStateLength 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the code array.
-
-
- -
-
- -

◆ setSwingH()

- -
-
- - - - - - - - -
void IRElectraAc::setSwingH (const bool on)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRElectraAc::setSwingV (const bool on)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRElectraAc::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRElectraAc::setTurbo (const bool on)
-
- -

Set the Turbo mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRElectraAc::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRElectraAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRElectraAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRElectraAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRElectraAc::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRElectraAc::validChecksum (const uint8_t state[],
const uint16_t length = kElectraAcStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe state to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
ElectraProtocol IRElectraAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRElectraAc::_irsend
-
-private
-
- -

instance of the IR send class

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.map deleted file mode 100644 index 1e9fd2909..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.md5 deleted file mode 100644 index c648bbd81..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8d7ab3975919e564bff02fadc3cd34ab \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRElectraAc__coll__graph.png deleted file mode 100644 index c68ada46957645e4bf78c08760ab1cf2a6dd028c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5826 zcmZ`-by$?&x<&n=GzdrujD#TFAqYr2bayH+bi>dfAV@2t(ug#Yf^>s)GlWPtLrV+| zcl$f{+&K5#XP(*L^X)(O-ru{|`@Ukqq3=9l>=nEMQ@SFwzK&-o9v?J=e z0gt;c73F0xZvOl-8uJhs7-Vp$jHH%V>dvgUnwD-;%kMo0K}#DR8Lj7J&`yrXyYy6j z9{pH4%YS{$C>Wubx9HczPLe6+6<6j@&W~8$h%QLTi*SJ&^$4@t7I2M3;@EOWBqu)N zfApvjt2|=Ze-84@;C`9pf*}67=D7Be*h%U|eP5j0-cJ1!DXiCw(61wUA{fw3Yl~56 zeD8k`_7GYka`LYEYqXH!5BdV@`6mD3(UO?}+lS(Q!cL9HI>qK5K6OV&?&!VwQUkU4 zI$mC01COiTo%N>EQ?I3^rA@q2By!xk_$D;oa%Z+ap}V_V=X2~#z$1G4%(=ybM3s0g zCd5C7T!m5mhl0@@hE@4I1q8C3x*irVSk@Dqv$Hdf(e!N;Bh->3-kpw)?n$J^y4%4@ z&nN4qPZ=4HnogIZtf~*q`Z+l{pWR#@ri%O5DgT%l2@MV1UrTYCI5(+qq^6;vT=NNM3r^#T0)`NBO@cHr>6^>n~^Gc3>+K-S^?{WG?`ghzYh?TY4 zlla0%M>TSlQ{<$iZkINlvqole+yCUoxJyXeAOBd9g3k&MoOXMz@nM=uc;*vpeyYpM zOTAjx$M~}y+2gkQ6;}8i9UZw4zAZaGA)$l>(*R0199{?C8)PeOkdl&1c*A9Na<<6MXv$MsOl^@;j8EV~8@df=eXaTQ%vrnAHy)`b& z!?u-2C}j9@S6oVOMS1x!%H6us;QVAyRY^%HY7ikC@3_{VWYipxrkSVWvfPP(j^0u9 z@)DNIx*tTzXXT6kYv@L zcx%|qKJM#bzPE$YY-~nRQM7W3;Fl*jl9G}bj7&`BX05k9cV~Kv4XaN#vf^xu4c(^6 zThKex`i(vUQ&Us@sZSB$l!@0Y@^W&c1)9w9@$tg$8)|(J-nZe~Qx)=Ke5dc3loB5W ziF|Hoct#gW)Y{tm@^EcH3X5(OiNt)w%g3jDjDI%-L}}?@wU3^ILm6Y~{CMkFg^inA z&3?A7a-u9K2;-aUYOj1}jd}as`;?UWY-<}E)?h7JS=pr+p*bROx%8r<^>cy<1OoGs zhK7bxdx=pkJ%$U|$mbQG?z;NnuSAqsjnTs`mkB4k>YIhS{Ilx?PYWj}E&_g3wii_^+cM=VWRNecge{LwzjN-f`X?P7eY4Yb8~Z* zO?%VTaj?(+WH1FtOt?&D`?y#6oaa{;8-+W`SuwfgJ~>Gq()!%h)wS_hAo*NchqU7euA)MK%u|I;m0Ma^TAK4y={E<6X=`g&ZjKfG zjE^T?T3)6Uax@BYKyQvmef`SnI8$Rz_36V03)Vs|K{pRtfzp^H6Zzp{L!m1BDJfT1 z-p~H%BpWY1J&LYan&q}PxX}-VV%4+c)OB>MJTG{=`ud_qM@J2q$BumbL5gfb*LQXX zvZ07X0XwpYh=>m#Kf3&0l5J~mFUZetnVtq&-372#>$yV(5Me*pkklSdcxSi*rpjsB zWW@ZMR?EaBcEmbcF@f{v^fUvJ0oQefN>Ww>Ci9pr)(2zI^#oQ(sT=;6X=`eucBM zGlm(s89Zv?ci1FM!}V|{Vq#(nQBQV^C^C+vjgc((-I*!(uzmBUrlum}`cEiiUe>s+ z_f~Or;xlj8iglNvbTMI3Q9kS8N4M|X`F(U`ae>~+Jve{)H|%Xo9Oa20JdoAbr!=f~ zv^?4vsi~_YrlL}qEHVCbiM}Vh9aB@3+|B+;6|f;%1qFrulN0$oB#+x#KUo^N?Au@K zBX*8gLLfEc~0mcQl%Tm0!zb{3S&1=U1dnY;-hULqo$R*)u;(_W|vt1I??EV?X60 z@3pu4aGWwPc8)U}4qJPPYn59s2l(VeOV;hkOk>x?k7q5_)+0#^s!~5I2n&nem(ALr zc}95K1Vs>e=A*$zw2!Q!=5(x!;KpI{zZR{#Cu}J4l?l=1Zsq=PA+$K;t~sgEC5%aa z%_OfOV=<~YXF}aXt>eA-WNi%#i8<*{5$g@XmYz{_F|s6gD{K1)K6jsn+zkyXQhdCf za?VHj8_rH+5dQw7THAHEX}7`?NeW5z4A?t9D#NXr)pyWIER*){xxQP`+QGgZa?Bl&1GMLm}Q_g&((dRlz*Kz+=}^N`ICKU#vCodS5+%-OvAmB$KBa> z{Bd76*Hn|AsHN&lnr|9=1l!8vXzsZ(SG3s^GDY7eWD`%nljI(=Hq%asNDGi}iur8=e!flOSg`d>GZ z0#!JIu{g_OWy8L%ZEl0}xRf>YfFr=noH zxrx%aVkkz`i&4b{U+_(Md&n5BpuaN&Z<^p^B02NE;S^pMWQ2iz_PquvWpDADt>>Hf z_V*;j3?A63@|LzYugCdP4QU5B|1y?I|kK5GHU}LM^+-BlYbEy7|xu# zx7p?6a&_P>6hx?+y(%>y`xI9Ew?jWN8E>ptM@g0^BCSA`@!tRVug_| zZS1^-#J*R2yw}uMkC&X!eau+FncxZBe44=SHq!0XzxCWcg!s= zkLB7YaU!eu9KLo8h>|xHyVwN%rw@E#58YD&Cl{uK3If`&zLlD;@9rqHHE&17_+JX)4Xb6PDq6)QZ&v~8#7aPrk50@ zx-);CYQ!GzqwZ&oKn(4NAu%HC!*f6VeqH_qS|xvFoNoG($e;GNGS#vyF0(QxHzcEnMl+NMa9DL zxzQX&&`YTeia&|_pF3Zkx@daq=#Yt|5ftkv-dtaS_GdE}9HistAEi|~f1So9c<=Gs zlzDPP5z=vs8$EWxd&b1gH2qGlvkMDm-@Fg4kSBmXjbzCax}dl9)wQ)B2VCq3nZsbr zgQ-s$di(lhjf_(D%FJHdT<-5X->0HtJ@RRM!pcevsAd%fufdQMN>vaCH94a0x@8Xw~4&Hz2h36S&Ztp{Ko8AGU#6} z<+pR=U{a+veRrwnv87n|kxe(bY3tYraAw9o9Xij^$EOZM#>y(!Cb89w$e?(FKj8WE zAiZkGw1S3=jOQ5i3=GnYj~`<{Us+j6>{U&FHnp9NVAfz?coXMiDDs!~aoQ!LKXdhr zOKNp>HOdLZ8F1bXz$voLD>g((4>F@v1(^H^R+uR&jv77*9)=x`Ls2#(?#bsb;$IBY&);0C-$XCzm?(J>+ z2WJBG%hAzMIXyNZfjlQCXJu_InOL=SQb;twn_jlu_FtL8oz>MkDbCJiqDqn-_Z!qevnLsf<8yqM#je2`1miYV6!(9X@tEuh8Rpp}iY~Cqk zB^`bve|z%xaBph|UevF*kSYte%~>tv$=H|{scgXspWOs|REN!A0bKLUT+uVDvvR`Q zp3@s$9^(wz=svmeCz&59IgNpL0LExHeW)s`Ei*cDTS}0B_j{ed;48&4KOsyFZY-<(?1d-cfM#X~2<@B-_}(Sw3uJ`5C&az4mhOQ$5= zX>px|jACU^ww?4gwLtVGm(!>U`Fr=GmeECi1F(_Cb@jXVH>)v?h?tyqn?sAyN*>yw z+F^;zhcMkd&157R&ewOq_Ox0s1k}KGyF@=qt5=}RhXl{>XCn$ZBElW@MMx_GM4fTN zIR)`z;_E-gJPxFG%IbC0UfQsNp}46!l3zOD{;khfc60uvfc^dY0QywFyVO+T8u2D& zYqInZyjp)lRg?3gie7-mHt7FhaA&2SEXi}Gi;^_AKw<|icWq%N8-2I6RhQ)c-Bw8T zvE-}i(0eZg-ReNId|9LcuiN>!jVgNEDF>Pg1V?k%)muK+7TMUq5pEb^8Lhv_KvII) zon65T%08A~BQy4AD|P3_hVeYOVPJw{N(FZEmZa{@V6k{(?DJg{13L52pHCxZ*m(Ar z&`s9c26-nuRDazBtP0t0leURp&_v3iT{$Gt?m90c;Ub)k}xMKJSdwHH+ zCa6<~bH01}BGCi|jqGr5rT<#-A8W(jtPQ3q+S?c9w7;W8D2YHdlAifa^^$QIgjQDz z9j*@v`8Rw0rpF*4An@|>;q^av?~H?(7OD&g6P}+g$6@2)*^it8xh)OS4Okl-qjRw| zqNkUKL;4L~Jb|a}5QFRiG-ySbN=dwLK*7^gSC_Q6XNUOh-vSu~Wd1m1S27lzuj|fkAJ}>pR|u145{| zMo|n)OG`iW6f9K~9t)&XXEbGdgZH6cy(b4K?LZKO3D`{x15AmZt&m(_u1oL%BcsHm zQQ_rFdR#L0g&z?lKf1brPXlZK*wT-POO$G$l=|*G48GWgX=G${x@CIP``rfl0tzh< zP{r>U0TEu~c)`X14r%KnBCEcE%o}=DeYhA7aow8}yS_eYM&>AzS2;{~g3fbxgj7{0 zeWP8dqi$r>zd2s$;^wwIR-k#g-%iMGSQXvh-|qwGilY_ljeNkiF_ zDyWKz)!D(SmzUT6#r(~j*81=lX&D(AGdsJ!D6XdN#rE)s$VlFgLZso9rW4~@yeRfZ zOiW>ki4++24i5Uji!m`V!H?Bk2BC6CX zFIDU_A8^3|PzHQ8iT~Wl)x*OQ$n%EFgFfn~t}EZJ4^K8m?#QYOJ1<}uILr!tSzB9s z$xl`5eVAJi?mZk5ah-85ZrpLcY2ae7c?kF;-T*nMnOZ&`9v(jcsOQJnAAbJS1D+hN zpP!%7F_4Zw>pa-Nraj}7tu zy`-!xX7lwq8xY4i<>kb{_X4Rp_^Z+ms;HRt{rd+XrAf%i@3oMqK6`Ca+GWPgFB}sY zi4#gB{PZcH5nWu(ml|6NH@M`S7-I^;L4a%k?d#JxXHQKNp;RYm2J8|oEiLDx4RvH0 zxb4nZ8pAEO?VsO#wzy0hD4d*}K=S_hgOJXchuGNIt%D`!JNb&A*jtB&;$)-9ct8#l zlaNsIT3}%S3t}C(BT9+fuWQ}bC#C}c5EJ=e1i;J^|C5dgRdMsNeD&Oekb8v0)YL|K z>BYqy(qVXu0E$-28!uL_+?9#$-gF#i}jP0?Orf4_Vivth<7g< U-%*c=15+9UDyt$>B4rl*AFz3pbpQYW diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC-members.html deleted file mode 100644 index d1433a241..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC-members.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRFujitsuAC Member List
-
-
- -

This is the complete list of members for IRFujitsuAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRFujitsuACprivate
_cmdIRFujitsuACprivate
_irsendIRFujitsuACprivate
_modelIRFujitsuACprivate
_state_lengthIRFujitsuACprivate
_state_length_shortIRFujitsuACprivate
begin(void)IRFujitsuAC
buildFromState(const uint16_t length)IRFujitsuACprivate
calibrate(void)IRFujitsuACinline
checkSum(void)IRFujitsuACprivate
convertFan(stdAc::fanspeed_t speed)IRFujitsuACstatic
convertMode(const stdAc::opmode_t mode)IRFujitsuACstatic
get10CHeat(void) constIRFujitsuAC
getCelsius(void) constIRFujitsuAC
getClean(void) constIRFujitsuAC
getCmd(void) constIRFujitsuAC
getFanSpeed(void) constIRFujitsuAC
getFilter(void) constIRFujitsuAC
getId(void) constIRFujitsuAC
getMode(void) constIRFujitsuAC
getModel(void) constIRFujitsuAC
getOffSleepTimer(void) constIRFujitsuAC
getOnTimer(void) constIRFujitsuAC
getOutsideQuiet(void) constIRFujitsuAC
getPower(void) constIRFujitsuAC
getRaw(void)IRFujitsuAC
getStateLength(void)IRFujitsuAC
getSwing(void) constIRFujitsuAC
getTemp(void) constIRFujitsuAC
getTimerType(void) constIRFujitsuAC
IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)IRFujitsuACexplicit
off(void)IRFujitsuAC
on(void)IRFujitsuAC
send(const uint16_t repeat=kFujitsuAcMinRepeat)IRFujitsuAC
set10CHeat(const bool on)IRFujitsuAC
setCelsius(const bool on)IRFujitsuAC
setClean(const bool on)IRFujitsuAC
setCmd(const uint8_t cmd)IRFujitsuAC
setFanSpeed(const uint8_t fan)IRFujitsuAC
setFilter(const bool on)IRFujitsuAC
setId(const uint8_t num)IRFujitsuAC
setMode(const uint8_t mode)IRFujitsuAC
setModel(const fujitsu_ac_remote_model_t model)IRFujitsuAC
setOffSleepTimer(const uint16_t nr_mins)IRFujitsuACinlineprivate
setOffTimer(const uint16_t nr_mins)IRFujitsuAC
setOnTimer(const uint16_t nr_mins)IRFujitsuAC
setOutsideQuiet(const bool on)IRFujitsuAC
setPower(const bool on)IRFujitsuAC
setRaw(const uint8_t newState[], const uint16_t length)IRFujitsuAC
setSleepTimer(const uint16_t nr_mins)IRFujitsuAC
setSwing(const uint8_t mode)IRFujitsuAC
setTemp(const float temp, const bool useCelsius=true)IRFujitsuAC
setTimerType(const uint8_t timertype)IRFujitsuAC
stateReset(void)IRFujitsuAC
stepHoriz(void)IRFujitsuAC
stepVert(void)IRFujitsuAC
toCommon(void) constIRFujitsuAC
toCommonFanSpeed(const uint8_t speed)IRFujitsuACstatic
toCommonMode(const uint8_t mode)IRFujitsuACstatic
toggleSwingHoriz(const bool update=true)IRFujitsuAC
toggleSwingVert(const bool update=true)IRFujitsuAC
toString(void) constIRFujitsuAC
updateUseLongOrShort(void)IRFujitsuACprivate
validChecksum(uint8_t *state, const uint16_t length)IRFujitsuACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC.html deleted file mode 100644 index d17cd4824..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC.html +++ /dev/null @@ -1,1950 +0,0 @@ - - - - - - - -IRremoteESP8266: IRFujitsuAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Fujitsu A/C messages. - More...

- -

#include <ir_Fujitsu.h>

-
-Collaboration diagram for IRFujitsuAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRFujitsuAC (const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)
 Class Constructor. More...
 
void setModel (const fujitsu_ac_remote_model_t model)
 Set the currently emulated model of the A/C. More...
 
fujitsu_ac_remote_model_t getModel (void) const
 Get the currently emulated/detected model of the A/C. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kFujitsuAcMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void stepHoriz (void)
 Request the A/C to step the Horizontal Swing. More...
 
void toggleSwingHoriz (const bool update=true)
 Request the A/C to toggle the Horizontal Swing mode. More...
 
void stepVert (void)
 Request the A/C to step the Vertical Swing. More...
 
void toggleSwingVert (const bool update=true)
 Request the A/C to toggle the Vertical Swing mode. More...
 
void setCmd (const uint8_t cmd)
 Set the requested (special) command part for the A/C message. More...
 
uint8_t getCmd (void) const
 Set the requested (special) command part for the A/C message. More...
 
void setTemp (const float temp, const bool useCelsius=true)
 Set the temperature. More...
 
float getTemp (void) const
 Get the current temperature setting. More...
 
void setFanSpeed (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFanSpeed (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwing (const uint8_t mode)
 Set the requested swing operation mode of the A/C unit. More...
 
uint8_t getSwing (void) const
 Get the requested swing operation mode of the A/C unit. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
bool setRaw (const uint8_t newState[], const uint16_t length)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t getStateLength (void)
 Get the length (size) of the state code for the current configuration. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (void) const
 Get the Clean mode status of the A/C. More...
 
void setFilter (const bool on)
 Set the Filter mode status of the A/C. More...
 
bool getFilter (void) const
 Get the Filter mode status of the A/C. More...
 
void set10CHeat (const bool on)
 Set the 10C heat status of the A/C. More...
 
bool get10CHeat (void) const
 Get the 10C heat status of the A/C. More...
 
void setOutsideQuiet (const bool on)
 Set the Outside Quiet mode of the A/C. More...
 
bool getOutsideQuiet (void) const
 Get the Outside Quiet mode status of the A/C. More...
 
uint8_t getTimerType (void) const
 Get the Timer type of the A/C message. More...
 
void setTimerType (const uint8_t timertype)
 Set the Timer type of the A/C message. More...
 
uint16_t getOnTimer (void) const
 Get the On Timer setting of the A/C. More...
 
void setOnTimer (const uint16_t nr_mins)
 Set the On Timer setting of the A/C. More...
 
uint16_t getOffSleepTimer (void) const
 Get the Off/Sleep Timer setting of the A/C. More...
 
void setOffTimer (const uint16_t nr_mins)
 Set the Off Timer time for the A/C. More...
 
void setSleepTimer (const uint16_t nr_mins)
 Set the Sleep Timer time for the A/C. More...
 
void setId (const uint8_t num)
 Set the device's remote ID number. More...
 
uint8_t getId (void) const
 Get the current device's remote ID number. More...
 
void setCelsius (const bool on)
 Set the Temperature units for the A/C. More...
 
bool getCelsius (void) const
 Get the Clean mode status of the A/C. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t *state, const uint16_t length)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - - - - - - - -

-Private Member Functions

void checkSum (void)
 Calculate and set the checksum values for the internal state. More...
 
bool updateUseLongOrShort (void)
 Update the length (size) of the state code for the current configuration. More...
 
void buildFromState (const uint16_t length)
 Build the internal state/config from the current (raw) A/C message. More...
 
void setOffSleepTimer (const uint16_t nr_mins)
 Set the Off/Sleep Timer time for the A/C. More...
 
- - - - - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
FujitsuProtocol _
 
uint8_t _cmd
 
fujitsu_ac_remote_model_t _model
 
uint8_t _state_length
 
uint8_t _state_length_short
 
-

Detailed Description

-

Class for handling detailed Fujitsu A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRFujitsuAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IRFujitsuAC::IRFujitsuAC (const uint16_t pin,
const fujitsu_ac_remote_model_t model = ARRAH2E,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class Constructor.

-
Parameters
- - - - - -
[in]pinGPIO to be used when sending.
[in]modelThe enum for the model of A/C to be emulated.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRFujitsuAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ buildFromState()

- -
-
- - - - - -
- - - - - - - - -
void IRFujitsuAC::buildFromState (const uint16_t length)
-
-private
-
- -

Build the internal state/config from the current (raw) A/C message.

-
Parameters
- - -
[in]lengthSize of the current/used (raw) A/C message array.
-
-
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRFujitsuAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checkSum()

- -
-
- - - - - -
- - - - - - - - -
void IRFujitsuAC::checkSum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRFujitsuAC::convertFan (stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRFujitsuAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ get10CHeat()

- -
-
- - - - - - - - -
bool IRFujitsuAC::get10CHeat (void ) const
-
- -

Get the 10C heat status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getCelsius()

- -
-
- - - - - - - - -
bool IRFujitsuAC::getCelsius (void ) const
-
- -

Get the Clean mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getClean()

- -
-
- - - - - - - - -
bool IRFujitsuAC::getClean (void ) const
-
- -

Get the Clean mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getCmd()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getCmd (void ) const
-
- -

Set the requested (special) command part for the A/C message.

-
Returns
The special command code.
- -
-
- -

◆ getFanSpeed()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getFanSpeed (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getFilter()

- -
-
- - - - - - - - -
bool IRFujitsuAC::getFilter (void ) const
-
- -

Get the Filter mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getId()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getId (void ) const
-
- -

Get the current device's remote ID number.

-
Returns
The current device's remote ID number.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getModel()

- -
-
- - - - - - - - -
fujitsu_ac_remote_model_t IRFujitsuAC::getModel (void ) const
-
- -

Get the currently emulated/detected model of the A/C.

-
Returns
The enum representing the model of A/C.
- -
-
- -

◆ getOffSleepTimer()

- -
-
- - - - - - - - -
uint16_t IRFujitsuAC::getOffSleepTimer (void ) const
-
- -

Get the Off/Sleep Timer setting of the A/C.

-
Returns
nr of minutes left on the timer. 0 means disabled/not supported.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRFujitsuAC::getOnTimer (void ) const
-
- -

Get the On Timer setting of the A/C.

-
Returns
nr of minutes left on the timer. 0 means disabled/not supported.
- -
-
- -

◆ getOutsideQuiet()

- -
-
- - - - - - - - -
bool IRFujitsuAC::getOutsideQuiet (void ) const
-
- -

Get the Outside Quiet mode status of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRFujitsuAC::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRFujitsuAC::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getStateLength()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getStateLength (void )
-
- -

Get the length (size) of the state code for the current configuration.

-
Returns
The length of the state array required for this config.
- -
-
- -

◆ getSwing()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getSwing (void ) const
-
- -

Get the requested swing operation mode of the A/C unit.

-
Returns
The contents of the swing state/mode.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
float IRFujitsuAC::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees of the currently set units.
- -
-
- -

◆ getTimerType()

- -
-
- - - - - - - - -
uint8_t IRFujitsuAC::getTimerType (void ) const
-
- -

Get the Timer type of the A/C message.

-
Returns
The current timer type in numeric form.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRFujitsuAC::off (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRFujitsuAC::on (void )
-
- -

Set the requested power state of the A/C to on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRFujitsuAC::send (const uint16_t repeat = kFujitsuAcMinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ set10CHeat()

- -
-
- - - - - - - - -
void IRFujitsuAC::set10CHeat (const bool on)
-
- -

Set the 10C heat status of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setCelsius()

- -
-
- - - - - - - - -
void IRFujitsuAC::setCelsius (const bool on)
-
- -

Set the Temperature units for the A/C.

-
Parameters
- - -
[in]ontrue, use Celsius. false, use Fahrenheit.
-
-
- -
-
- -

◆ setClean()

- -
-
- - - - - - - - -
void IRFujitsuAC::setClean (const bool on)
-
- -

Set the Clean mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setCmd()

- -
-
- - - - - - - - -
void IRFujitsuAC::setCmd (const uint8_t cmd)
-
- -

Set the requested (special) command part for the A/C message.

-
Parameters
- - -
[in]cmdThe special command code.
-
-
- -
-
- -

◆ setFanSpeed()

- -
-
- - - - - - - - -
void IRFujitsuAC::setFanSpeed (const uint8_t fanSpeed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanSpeedThe desired setting.
-
-
- -
-
- -

◆ setFilter()

- -
-
- - - - - - - - -
void IRFujitsuAC::setFilter (const bool on)
-
- -

Set the Filter mode status of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setId()

- -
-
- - - - - - - - -
void IRFujitsuAC::setId (const uint8_t num)
-
- -

Set the device's remote ID number.

-
Parameters
- - -
[in]numThe ID for the remote. Valid number range is 0 to 3.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRFujitsuAC::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setModel()

- -
-
- - - - - - - - -
void IRFujitsuAC::setModel (const fujitsu_ac_remote_model_t model)
-
- -

Set the currently emulated model of the A/C.

-
Parameters
- - -
[in]modelAn enum representing the model to support/emulate.
-
-
- -
-
- -

◆ setOffSleepTimer()

- -
-
- - - - - -
- - - - - - - - -
void IRFujitsuAC::setOffSleepTimer (const uint16_t nr_mins)
-
-inlineprivate
-
- -

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

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

◆ setOffTimer()

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

Set the Off Timer time for the A/C.

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

◆ setOnTimer()

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

Set the On Timer setting of the A/C.

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

◆ setOutsideQuiet()

- -
-
- - - - - - - - -
void IRFujitsuAC::setOutsideQuiet (const bool on)
-
- -

Set the Outside Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRFujitsuAC::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
bool IRFujitsuAC::setRaw (const uint8_t newState[],
const uint16_t length 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]newStateA valid code for this protocol.
[in]lengthSize of the newState array.
-
-
-
Returns
true, if successful; Otherwise false. (i.e. size check)
- -
-
- -

◆ setSleepTimer()

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

Set the Sleep Timer time for the A/C.

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

◆ setSwing()

- -
-
- - - - - - - - -
void IRFujitsuAC::setSwing (const uint8_t swingMode)
-
- -

Set the requested swing operation mode of the A/C unit.

-
Parameters
- - -
[in]swingModeThe swingMode code for the A/C. Vertical, Horizon, or Both. See constants for details.
-
-
-
Note
Not all models support all possible swing modes.
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRFujitsuAC::setTemp (const float temp,
const bool useCelsius = true 
)
-
- -

Set the temperature.

-
Parameters
- - - -
[in]tempThe temperature in degrees.
[in]useCelsiusUse Celsius or Fahrenheit?
-
-
- -
-
- -

◆ setTimerType()

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

Set the Timer type of the A/C message.

-
Parameters
- - -
[in]timertypeThe kind of timer to use for the message.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRFujitsuAC::stateReset (void )
-
- -

Reset the state of the remote to a known good state/sequence.

- -
-
- -

◆ stepHoriz()

- -
-
- - - - - - - - -
void IRFujitsuAC::stepHoriz (void )
-
- -

Request the A/C to step the Horizontal Swing.

- -
-
- -

◆ stepVert()

- -
-
- - - - - - - - -
void IRFujitsuAC::stepVert (void )
-
- -

Request the A/C to step the Vertical Swing.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRFujitsuAC::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRFujitsuAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRFujitsuAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toggleSwingHoriz()

- -
-
- - - - - - - - -
void IRFujitsuAC::toggleSwingHoriz (const bool update = true)
-
- -

Request the A/C to toggle the Horizontal Swing mode.

-
Parameters
- - -
[in]updateDo we need to update the general swing config?
-
-
- -
-
- -

◆ toggleSwingVert()

- -
-
- - - - - - - - -
void IRFujitsuAC::toggleSwingVert (const bool update = true)
-
- -

Request the A/C to toggle the Vertical Swing mode.

-
Parameters
- - -
[in]updateDo we need to update the general swing config?
-
-
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRFujitsuAC::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ updateUseLongOrShort()

- -
-
- - - - - -
- - - - - - - - -
bool IRFujitsuAC::updateUseLongOrShort (void )
-
-private
-
- -

Update the length (size) of the state code for the current configuration.

-
Returns
true, if use long codes; false, use short codes.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRFujitsuAC::validChecksum (uint8_t * state,
const uint16_t length 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
FujitsuProtocol IRFujitsuAC::_
-
-private
-
- -
-
- -

◆ _cmd

- -
-
- - - - - -
- - - - -
uint8_t IRFujitsuAC::_cmd
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRFujitsuAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _model

- -
-
- - - - - -
- - - - -
fujitsu_ac_remote_model_t IRFujitsuAC::_model
-
-private
-
- -
-
- -

◆ _state_length

- -
-
- - - - - -
- - - - -
uint8_t IRFujitsuAC::_state_length
-
-private
-
- -
-
- -

◆ _state_length_short

- -
-
- - - - - -
- - - - -
uint8_t IRFujitsuAC::_state_length_short
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.map deleted file mode 100644 index 88724a6ad..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 deleted file mode 100644 index 2f75969f2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -16e9764327aaf3e9a72f668b4a844bcc \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRFujitsuAC__coll__graph.png deleted file mode 100644 index bb325f163ef2cc5b0ab4312b62f5ef1da27422cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5790 zcmZu#byOSOwx@+s3I$rcxWk9LON$4W;_g-?xI-z0;t+~US}0K5-7Pp2_uvxTUEcJ* zb>F>zykuoh)~uOx=FHi9|0G;hSr!wW7##@-2@@nIr4AgIfL|aQDiH18^gaOxR5Jxx zDWs>r-ybdc2}no;8X&0;AH6aTmb_K*tl{k^PS}0J&2R9f-k^x+;C@HRk!zlbPI<1~ zTqED9C!-Kdd}hajtF#6qQsP^k@=5rFlP#l!*NlU2?)|+HOp`^zOONVYFVlcY8HUFF z@c1D`dqXQP%rr}7>f>1N#AsRmwydZ4(nB@vU}Y2~n*3Y|mpe+ZiLKQ5tKiQ6gklPE z@a4X)*zFFDM)x=sCJA4Zwz2<|%^;M|A#E&)H3fdS)I<_xU!FfWGGaBFB^rS;IY!68 z;0oN7GhJalN?xs3qPF+ud;XMN`cMw4Z=+DOV*$Uq5t%QY5 zE|OBBUq?)*Wo>OOAt@>7e|v7uTGe9C^CIT}k;I}K%rb~aKyW&)!2T8=zh_kZ=~MA8 zi~N$O{*|E1##ky0fCfoTm}df>a<&~IIt6z49wkpe>x}!>8`P#dA-i> zFdtG@#vT(B6Gg-sJebT*l9!m6SYgqRvW;8roVXjs* zb$+xA&5?~I&fDJDctcJeqgP_p9`tN~scB}mXpYLu+Z%j;4elz}Dw2lKMnpz_-oj?L z9?9s>RY<;GSbhwp1%-r!APqa^C++&i0rz%=VlKA$&Nz2{P*r{7)O>;pj18NcOEqlr zh=)Q)_vfm>uC856OPPeme(}PdhddG<+Y4g@lttF+vot@x6iO)Yl4g6wg)Xv>I;k1uU!$CR&}NzKe0 z85D#>O+z!bcM#zX3z1Zs?9;RbriV$?&QoXWSiF(IfUR6cI${PLUC3f1w>NgyZ zgL!FZXAb?^Pal#jAqffki^>P4XIsO?`gJjDYi3r!g3l2X|NQgMYCbezZLKHL!rGb} zcn$RCC~2(79M&VGY{spM>gqTM1OnydOV`tleyv2_Q2HY|Zvzs3M~ih>G}7$s?D0X} z@_3z-F;b%&A~-r4)2@bCSXfv>LgMvPO|>5D-PO_dbcz1?{v2-5)p8((wzhVuahtM< z38kvdeGI?3Klne}2l7^bJ$BYM5` ze1EwO3QC}_@f96*$ggE$WwpH6oe~ffoYI&1^oix?&!0#(JjBXSF(n_LM$-kS`RefY z_V+F>F2~2mHsy;+10S`uU02$lscUE;Ci1b7&bCJbH*V*@jEy2r&(6ZXeKQ$O)2XYzQL2Ar#L?}BHL<_1uYF*kaBR6fXL5!-D!^;5#n*Ff zeZ9f^jNUllCfC$YN(x0bhIIA*<}8X#I4Pb+R$Wc)b8IX&Q({DCXQz)ii*6FID4Pl~ zc6N3k`Svo4?RkiEiuGm9ot#uGEptulOE3wTG`paZ8VdzA7gG;k7@3)A1O-zo%zLNP z*+7uhBcm1{H4P0(Ev+O|13kSoQ$2Ie+K+jjM{wXZIl`OgC~K!DtzSnNKBMOJZ6*C0lcXn*l)zyFh{=L%q6+=o! zMqN{L%FOWb@loVz(X|@}Q&&|DlF2dM97sej&PBX<@uI?VkN_yu{-Gg@o(OygrlZx> zj;SK;f`Wo)HXgz?vi{g-XJ_Uceer*L$HvA+TxRAlkkP3eropSKN2^5oOzQ^+N?u+9 zuG=G*ApD2t1WI@LCB$HvBH=jUq+OG83X1_lO>udWz?cJ%uQSVcP9%@Ckr&9 z^@JP$;xOvciiR!P1_}ZM`#7 zMv*|TWOjYLnupc9_U=F^^AGqng;++D=TVx_>s4$s6$UhPT+n|7qOV2_aD|EQ^d#y4 z<|IbtC>3gusR{0spEg@h`T)glWMm{$g3RHwoF<=er0_8l5wWB*ctD;r=P*Ah-4b(u zQht^o?thyh0vDA}ii^@q#v$w#o&c8S={+1Idg`})K_8n-<44>i!1hqFIy`a-)^51+ z#WbR_gEcRZ2or)Yx+Wtgj^e915+j1`f(gBjhy2!;+H7D$R}XG2p#>ja)Um@YN2`td z8Vsy<<5=|IQ!cHMkI}xKc1}_r7ghXVDYE1_dc)D5BS<^;7KiwI0zBf03eZi;y(!pE$zwk zmq(ef#BN;w?!UJPBZ4zO=V6;$v!bEgf0MeAZ-crQ?WXtD4cjg1*S3#8%4{8# z-w}#eMkEbh=FJS+j3%z} z!@n|EyUSX#P8l`E(;9SVGO}{r{rWP0Ce-U_=(W1uDpFTTIDN^KXc1uk&+kD52T_VYc(|&6bm|{7lz} zJ}RXqUzB0RGHg2DP^?3pXcR|K;*{bGNssgX9n6khU%4gm zpRD&@ir(6T4c_OT5=IxD12WaBVoX(S$}>2cgyCcMetnO1_0MiA`kXH*=70@>Sx*M0 z3K3UL|1*L>vD`3Z?VX-OCo~?DxFPcJycNy-6R`MFC`~9t`R4?5;+2Ff4Mh139{t~7 zH3njEe2c5tVV1zQt^V#+LaByVPUqxLB27m}HVCbn&TK6_sfhVJy9k4(V)obGNj2^v za;8876Y|mnJvo*y3eXw5dwc5^P8I2HBw1w%a#Mw(l>5yRl+`(rS8*6o$5l|^ci%M>hRyyZIM{1Fnx9D2hi7DDWPiRUQYoEp zb#E^+Cx?bcCTit$b1?K~a9}_O;B{hRV)ga)0J~JSva)K~EHP?H17I^-s|c~&CN3LG z&Z{`u-w)7J(i*+tpl8Ul0J^8IJt2w=4&kk%$B8ZE>-ulf%uhgJC^Xu4s+xLTUsZ@N z*JsK3oZv%^?t6@EY+I?;S^p0)OyLJu-{j;+ko#Q(g!c9oGM2lpLg2yKAel?7OIB&VZRTkBvM2k5;H@811BRSbRB>-UD@8U4f z(eYOK(qFk$>ujo2gudwXUjgh>cKyrXFL9y?lL19xpF0EVoB8S&UmV zI=;N*_B=EwHE4ML-p5A>DJv^W4iZ8O($Upb)6T_2n3rN zJyJ5VJ*BIwD<{pUHv7Z)z>?s%MJ>|FJ2Lc+URpu4Q%`SYrKH}xef!y{Y&+el)f6BP z0C8AZU;iSXOD!%AEj4VaZ6N<&=F~qr%1@gmlVhu?t1T{UMG=5bvK@+zjB%i_kHGWT zpXD?Pd~hEhAOBriDw98~#@prfPzvEeB;XsDd32oKQ+l@t0J{r?h>j|=?U0QE;hLo?|Nc~#%gP+>Dh zot=|YQR86PB_kp6+|ttW`tA-F$jFZ$zjJEKdZDaQX?;-D+TKa&OG)!l3#Alcigz3C zYtkEmr?$D2{kn{P2Yf=cdcwp3DwBsf-N)j+w2&^){0a8JMdq9LBp*vD3oAVXD&`uG({*&?G^0bTIc5{pLI zsSbKT!OHlypa{txXyy?MU?*n4Krifl@pGoH<1Qp$*@hjZ2xZ8s8~)thD0K5d6~+~4 zGELqIc99ydQIDl$$jUf`O_6z9-4OiXKC)EPEHs}ahHe=XvJz$1UsYme8BXH1DDyQ@ zIKUHK##`GYXJKLjZn*5%9K7KEb_u)(Es*v}(qzng1FmvB>Qy1Ec(>pm9RD3+3wW9$ zD3(VFRA|sj=pl!kh(b%pefG8a8Sgx-7cI(LeQW79F&;5@Qo_vfZn6DSqcPS-yB$3$ zj%Rnn@(D1=eSA_zq^H^y&eFEK1vO&6qn&UGF+ciQ!^tXbKbNEc7wrC4Mx{V?5iMsX7<#ytG3epUC)cREKe0+ihF zU$`h={}odGB_p(oHhU=odEAKzoNmt%c~~8vQv4<5&CIB|t%f*&v!g?SGV=2dmw=1G zppwPojz)k0xNEU)6>QQp1s|;ZUrh7=h-ZFKN(vDK0!bq!U{T1oZTS>AW8{kos3tRW zbIdM6HUp&g>1hHL6&0)Dw4QqK`fg%Ddj3e&sMz4$QQNYaKh*CORMmw+z(UEz1pzz^ zSv_dpr{&hn;dK5gmrePsz{eZZ38%&Sj?06Eo11NDL1AI%#6$vk9meT>x}nv!ZeSxE zsn`fpOy&9t6l-B&p`5(D*;1oBP-*LXdkZGyu9SmZVb~N~UkQy?+CL*>LJk2vR;*VO z0n|DHn}OWb;ZlSD9Up^o#tL8*M3IZm^L*Av0(;%O(bv}pBz-*Xt7w^tLavECrS1%pb;SH=?Z_HHS%cc$dH)TnuMtX?#AipYoJ5E9C^1w6uYG9oSuG^WJD4iVTEpa^%Tif*>WpFkkc zD?m#ETlOL_@JTCCMPB}ILvOp^WWRtxMZAGL;4m;SKmu&B?qQ{7N_AUm1UWEZCjjrM zqP~2xHYq_ z{=&SxysRV3`6?7Kq=FK_hI@N^`(4giI}{#;Gi1Hb8T&DTK&tmTp*}e|S!{HVOiLpM zH1yTcvTWH*ozC*j+4i$tI@0zZAHDzx0yrPEATz{xE~%Jb3ShXAmS`zxYT^S89$-_h zfKcS?VXuysYou4q5=kvAWNLkSyd&5)EH`;ZM@OfaDU_JVtj%TC{f%#m7f7y=OyS<^ zllAcMa4JSdGzJC+tzw-IfZqU!!>y7!cqbg*+H;FVD$owl1d>Tp2Z!Ma74cyJsGt4a z62Km!<>pQRO84=0rtNe@_-F-Kbh&BQJYL%$zRWG}#+ZAX(cl*tDO{HF`JY&eeXD!_ zHU}Is+;{qFYHtBA2-YR(hQd6F1G1KyDK#_)xXfQ|3fMUsVKi=UvM - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRGoodweatherAc Member List
-
-
- -

This is the complete list of members for IRGoodweatherAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRGoodweatherAcprivate
_irsendIRGoodweatherAcprivate
begin(void)IRGoodweatherAc
calibrate(void)IRGoodweatherAcinline
convertFan(const stdAc::fanspeed_t speed)IRGoodweatherAcstatic
convertMode(const stdAc::opmode_t mode)IRGoodweatherAcstatic
convertSwingV(const stdAc::swingv_t swingv)IRGoodweatherAcstatic
getCommand(void) constIRGoodweatherAc
getFan(void) constIRGoodweatherAc
getLight(void) constIRGoodweatherAc
getMode(void) constIRGoodweatherAc
getPower(void) constIRGoodweatherAc
getRaw(void)IRGoodweatherAc
getSleep(void) constIRGoodweatherAc
getSwing(void) constIRGoodweatherAc
getTemp(void) constIRGoodweatherAc
getTurbo(void) constIRGoodweatherAc
IRGoodweatherAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRGoodweatherAcexplicit
off(void)IRGoodweatherAc
on(void)IRGoodweatherAc
send(const uint16_t repeat=kGoodweatherMinRepeat)IRGoodweatherAc
setCommand(const uint8_t cmd)IRGoodweatherAc
setFan(const uint8_t speed)IRGoodweatherAc
setLight(const bool toggle)IRGoodweatherAc
setMode(const uint8_t mode)IRGoodweatherAc
setPower(const bool on)IRGoodweatherAc
setRaw(const uint64_t state)IRGoodweatherAc
setSleep(const bool toggle)IRGoodweatherAc
setSwing(const uint8_t speed)IRGoodweatherAc
setTemp(const uint8_t temp)IRGoodweatherAc
setTurbo(const bool toggle)IRGoodweatherAc
stateReset(void)IRGoodweatherAc
toCommon(void) constIRGoodweatherAc
toCommonFanSpeed(const uint8_t speed)IRGoodweatherAcstatic
toCommonMode(const uint8_t mode)IRGoodweatherAcstatic
toString(void) constIRGoodweatherAc
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc.html deleted file mode 100644 index b2fb915cc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc.html +++ /dev/null @@ -1,1143 +0,0 @@ - - - - - - - -IRremoteESP8266: IRGoodweatherAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Goodweather A/C messages. - More...

- -

#include <ir_Goodweather.h>

-
-Collaboration diagram for IRGoodweatherAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRGoodweatherAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kGoodweatherMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwing (const uint8_t speed)
 Set the Vertical Swing speed of the A/C. More...
 
uint8_t getSwing (void) const
 Get the Vertical Swing speed of the A/C. More...
 
void setSleep (const bool toggle)
 Set the Sleep Toggle setting of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep Toggle setting of the A/C. More...
 
void setTurbo (const bool toggle)
 Set the Turbo Toggle setting of the A/C. More...
 
bool getTurbo (void) const
 Get the Turbo Toggle setting of the A/C. More...
 
void setLight (const bool toggle)
 Set the Light (LED) Toggle setting of the A/C. More...
 
bool getLight (void) const
 Get the Light (LED) Toggle setting of the A/C. More...
 
void setCommand (const uint8_t cmd)
 Set the remote Command type/button pressed. More...
 
uint8_t getCommand (void) const
 Get the Command type/button pressed from the current settings. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state as a valid code for this protocol. More...
 
void setRaw (const uint64_t state)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t swingv)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
GoodweatherProtocol _
 
-

Detailed Description

-

Class for handling detailed Goodweather A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRGoodweatherAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRGoodweatherAc::IRGoodweatherAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRGoodweatherAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRGoodweatherAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRGoodweatherAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRGoodweatherAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRGoodweatherAc::convertSwingV (const stdAc::swingv_t swingv)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]swingvThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getCommand()

- -
-
- - - - - - - - -
uint8_t IRGoodweatherAc::getCommand (void ) const
-
- -

Get the Command type/button pressed from the current settings.

-
Returns
The command/button that was issued/pressed.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRGoodweatherAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getLight()

- -
-
- - - - - - - - -
bool IRGoodweatherAc::getLight (void ) const
-
- -

Get the Light (LED) Toggle setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRGoodweatherAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRGoodweatherAc::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IRGoodweatherAc::getRaw (void )
-
- -

Get a copy of the internal state as a valid code for this protocol.

-
Returns
A valid code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRGoodweatherAc::getSleep (void ) const
-
- -

Get the Sleep Toggle setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwing()

- -
-
- - - - - - - - -
uint8_t IRGoodweatherAc::getSwing (void ) const
-
- -

Get the Vertical Swing speed of the A/C.

-
Returns
The native swing speed setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRGoodweatherAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRGoodweatherAc::getTurbo (void ) const
-
- -

Get the Turbo Toggle setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRGoodweatherAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRGoodweatherAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRGoodweatherAc::send (const uint16_t repeat = kGoodweatherMinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setCommand()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setCommand (const uint8_t cmd)
-
- -

Set the remote Command type/button pressed.

-
Parameters
- - -
[in]cmdThe command/button that was issued/pressed.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setLight()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setLight (const bool toggle)
-
- -

Set the Light (LED) Toggle setting of the A/C.

-
Parameters
- - -
[in]toggletrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setRaw (const uint64_t state)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]stateA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setSleep (const bool toggle)
-
- -

Set the Sleep Toggle setting of the A/C.

-
Parameters
- - -
[in]toggletrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwing()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setSwing (const uint8_t speed)
-
- -

Set the Vertical Swing speed of the A/C.

-
Parameters
- - -
[in]speedThe speed to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRGoodweatherAc::setTurbo (const bool toggle)
-
- -

Set the Turbo Toggle setting of the A/C.

-
Parameters
- - -
[in]toggletrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRGoodweatherAc::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRGoodweatherAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRGoodweatherAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRGoodweatherAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRGoodweatherAc::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
GoodweatherProtocol IRGoodweatherAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRGoodweatherAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map deleted file mode 100644 index b54646ec0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 deleted file mode 100644 index ba5bf82f7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -9515d6aef038bdf237b93067d56dc2f7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGoodweatherAc__coll__graph.png deleted file mode 100644 index 0d63a3627b61438b6838965c7864b8cf2e5ece05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7130 zcmb7}byQU0y2b}-ltxlQ7zvT?77zhJLPAO!>F!3lk&qOm8%gN~fuXy*8A=+-`*F^? zYn^+}`R8sHFl=V_{^E`2`Rxz|IY~?mQVa+Lf+;Qa<^u$RfCgTBqoIJG__SuuhXqSf?c|KS|A-a11lrtb9cmv+vMVUt8%+YHG9|S`2>) zq^o9;;4_Py9aYoh4X?qKXZ2PSO)d2*x4VV#!sbvMF)Ha8WyFX&#IMkTl^Arf7-*BB z?^mcaOA-}SdbIEO4!t{)+~Du=#%6GiC@HTEmHpNrm-Iqk0?XEPxdCl~W(>vTe4RZB zuTA=36>22a=-AjyoxO1r^2FB{P-x;QrpMki8y+5>tZECC#C&ToH9Id)g!T3dO>l$L z-n8DR52+uKj>pKl<>mEtUvqrFoMIelUY|Km40PuOzCTpj4TkhwI!1edTGY_kIEx;G z$7-I{nLa{Qe7D2v_Nv^dkI+77WEp(868y8AANRIwlE zy1Tt55p-cqOG|quyal$3ONb;WKrPH$&#KR_No zlXydr1xDBZoey6^k=OgKk>B$SKH=i(s%LE6z1-%<=Xq77p{k`N>*B&oK|#UG$A?Qw z`c6Y5S!1zOM}&}BOG;OlDl#(ibbG|l4;8y`LtS0nKQM50dt0hhyJ`BDc|yU*N^P{~ zF8jZx61go&!Pa$mccW@*YSugL_g0yXO;?%5@>^S3F~`!rZ~y%};Cz4X8@h?Cfla&CR8)#xFAoBcm6(F7APWftmCeq!B1AEG&d9 z+WiYU&l6eo9)*O2+^k@Gzg8pwD=@La{HZ?MnUeK0rAC=90yubidCNSnol={f92^X1 zDvWN9`&i%uc3ezKnj-M91%)M|r%!PyC?XRQh)OhTK6iza#KpxC|FZbR;p$7z#IzAB zFDwc!eRBhmdiRc+n%b91v-<0gA48Iqo}JZ}bK^$2vPtb5eF=Pa>u6IyKXr6>2bGnv zR%w**4{Z*lsMk9%%*@QlCb0*=V(E$mCN7WG%FD~2^YJAKxu0{w#T(r})!KX+A6EvK z(YIMl&~^)HZx*E7?#Z+|I!BHh-U|@hNrl6?UmZ0MW+xp@C^8kCU#=3iID&c(!_jCW@x|6DE&(=gw zleMmh#{0W#0s;b7y>_Im>bBdy@yVzweV*|P5U`sdfcF*}5{f>SuI}#kt#kxMXjBh| zT)&Z&3?rqTGV2V+r4|&_+Tu#T`(-jB*4fonxWT}{&^|aQ_g%pG;7dKoO=K!|4vq;^ z6&02CkrBnz7VD+v)wL)Q)jsRRMg~Z9boBF>*jQvLJ3G7aHS~kXr`GGXzRk|yYItZ! z-eS5;lz@;hRJBAS1e1(Ae-{r2hf1|no5`Qm%6-v#qEJQu=JE(`uA`$S{KJ z8om$&;;2|@tLfTSPcOse_G~J^&(E)CaPX%siTJIW(q3S^w2TbCPp!w_W5ip1S$9N~ zCpf#4CGNWF;t*VN^4nI2SRKEffdQlSp6JHwg9c?46@=xDjo%Cza=CjBzXEXIyt#;@^E!E^Um7b{PAmbbrNt)&&=$^xx2fkm~ri@ zG&t=;diwj7^O``+qCF1|3scI=$;&e^H4Vwj%i}LGpZaN*lmX^%GhL?F+1+h_`9}{0 z>zS046j~4#d1h^GqCs~go5eJ1YwdoWK{r;K8=PTpe_xRx;Ljf$c6RnB=RwV$t<#=8 z3k$bj_&=6t1Z2`X>`h0nbw`~{eAF3f_Pi!dU>lF(VyluhGkXb!&2>;2HM+RQ{+Hn` z7@S&*m(a(bT6!IUnDEnR8p-3cDINROPV`5Jh$QTWXgN7KE-o(VBPI_OObjix1-ymS zqEsnQ4kXyNmRh~L)%^6?-VDCHyu9Diz4O6*Qg83OGXjW0%gXkAUFE~hKFsVHze8|s zEpH$;Wn@tiBe{T+;YRN_P)`EWgxnty&!_S6@yUMYjjmbpN+~XWRi(kis9LO0ssl0M z#I8vpZNQ#5y=hy(u3lZ$2mJx<$&+!07U%!n-J{df?83rO#*aS*aZ=d!Cw{rrVYkCz zA;H0D@vqd|Qw5yCs;`yQEK-An4GqO8EG(pFWE3x&SUorx%va1x9({OW7=AXkgnilA}+|MoE$;ix9nc@!#T|ASMlS4v9 z9jkXVS1nc(m6d&Ret!P?>^B`HC8e*QpRKK}-ud2)Y%2d#b93{o+0e+y+}c`VYinyU zaq)=y{3$i?Vf)i0~_=hJU85x<|#Q|pPpOp@VmoG=9aTKo4Pft(RJFrCzS35&^`T5zM541q7 z&Z@k*`Fk?c;w@5LUCqCwKfY;u@!Ws}-kq$^Q`H~Oq`AG&z(eykJY6P%8A?mb?y#+p z6<=cBTS`Q)%*MtRPANk1+sAz8MFWa z5nla?BI4htpe5{bL`t%kUh`|*oPBq|?|o)DvYF#gG1n83kMHM_IP zC{69T<@5Vb9uXCq--3JLmRELK))pE&Lc`x=ixs`+XR9i*V_OhI--;@u_Z~Cy;&=s= z>d5Cpw<7C0V#Ae_b=p<}3Z9|0h^c%1E`=fR{}t$2*Zmy9FA8zMv<=k3_U$Zfp^bN4 zCDQM@>yMf%#8%2ddDprzozfY8mlRj4IT3qsNBy0!KA?(C#{zG-N1hGx(%L)(Lr})Z z6|*PeYpj+vx$V9* z`qoeKwK-=zSGZhpfNvc8-O07gvuk?4&=325CsJpH6^&Qa>j^ClQg^?TWBv3qmPw{H zXoFDFr7gbvY%3X2o$#Q_E_syk^rng?ihRwB`nDm{EmE$Y@wS0lzujxKKhWaMx8a5X zf7M~Gd`BTkx`}LQXs{e2xv8G9;;vxkJB1jfwr_|$X9tNfJ0?X)AF<}Mp?U4P_cdje z>0__E-9lvx-^WVfkjfw*rcas_oAC}n2r%hM1M-X;aLan|BP0e+q;s>%70}eyVavz| zV7EeZH!ai4mA6UPwN4naln;~N_(J|rtb|u*Zl0(Y#S?Gyb=)~5XctOhP&9(=E8j}D@qgoEc#qItffs^sWnHMKALLXY? z+3GF__FgC8medK1`*(fFxRx@G%dPy#?e-qd&2@-7`2F@3szlbZ$W#O!ooZBLoOecC zR@kV?!tcPz#p=(I6|Rg@O#?jEc_X{Oodnr_UX^|-jfcJ(Di&@cUa>g9$#LhrBFi}- z5)cZxD|Hy=%NbV1IB#-FS}hg`UtFcJUgC;9&V1RNY=^69EF&he|I=QP?>b0du4I7v zRA-@|IK!cZHi61tb=)POaqlzoz1LrAxwLAe`wq=R6$conKOt7LZ2%dO4Eo%vc;EF; zB9$Sflj_+1JXq@f&Rm;CYKeSP#2uPx19V>ZPZ^VyKRO=@=qK>XdQOh~Vo8yb zsJv7toi(ohVP@Q7$1Sb8<{22cgpUhy+^fz^VU>^P`HtmYTGr2v8o4ao*+`3tiKR|X zDP&VHEcYAFfNIgGR8bI(zAC(+Z9{vZ72+W{F9lzlTbo_s(7=kG8t+jGCw=mLDujDM z)9$p%+)?B3HjnuB>dc_c7a0i&X?c0M6^MWJCO0l^ZEYZV*j)bT%KZ>78PxeN_CwC| zF%dJAl@&))Qqt{oyRFR+b>bK_deCNU9UQVhmTK?K{@N{{+DU22U6~(<|AL!Kj{J!o z|M^7zdKbB3oVs?NBNj31>tf9sInRX}Yn>H1{AKg?fqarKg(_Ud(-9AbaawHsy`MH5&4I(mDJA5?6*_2TN|WdVd1i17ah+^#_L@D z9X2ubue#Z2?EkBqFT3S%K8(@Iv-S5cEPT3M>gx-$oU3NDUK9j&<-vm)52Yb51HBBX zt*gtR#|X{T)zcGIRKzVPC@>>uW@d)pS65F=$%C2q^z^g>0iQQNH#ZkoM9YP6Or4X& z5PA@m9sZ0j1}L}83A34cM@FDgo-;B&#>U3xB*m<&tE)0S`Qtb11RoEHiNOO-a{>zF z&Ih_(Dy~n*XqgBh|9|zQR`cK0)3@1wOp-yBUL_I;{3hpe3B5>5vwfC6|M;;#i z$ZI;033c2u(9qXKYC$Y@hpU=gk|@V^_gxad5Eqxqt<%a~3vh7BEX&=e`OfdSC+3Z0m_J^-| z#EIOK1)ddri9v6F0}3GVxgJr4_hmq*H+Q4_wvu^iY_vkBb-XJ~;Kd8Ta#)`y(Crg9 zwq~^nQKY$L`*5UGkPys}OnIGeVo92{CT|)9V@lO17~2i;dKmCH?iipMoDiYd% zGMlitf8#goqKQev7_m>Jl!S&O8XKWP6iHP5ue=sjfx6aZu+*2=IKkhba7q~{F zxAzMort(%6SRGb1y5|{gwb`YU?HqAVm+~3t>-Uq3HPv|z1GP4@_6N>IaNXNoC_|um z+{f>%A*dKWa8l<;px1E$WMYzlKW#x9Et-U>u=8K_m#U|xT>fLo_nLHPLK~-KgHI`P zJ}8e%dq#*NE<}(up`=nRx^9s_di1EDJapWLoX^hRdCBu5So!Fw2NVYO>tD8!)enU8 zgJ{Kg{CI#I15(;}i~*GQCYHFF&p-HCDeXzvhm)UC&LqH>D{R)bbQ+7%}v$AT|G07&;3-dUWKQpr@NW5 zynGoNLB@keLIOJ(647C?eCL=aO(_~qE)d@lgnjbk{w9b>+vUr}lJ}3IkN5ZIYY%qu zYPWO^4(}~gDVnY{#s*qD2h?SYnTp@x(L9)9XrS6l0$1ALe8}z0J4$21E{XH2ytjARr>b$H8gs zPvQWOsGy^SMJSTi6Up|Yt1I9A-9-zq?tqX%YybqRsH}|O-@Dz_xqoMC%eFgJx-}** z@`8mW>V-@^@uy~!5o(PplQzIS+pZ5=hNg79OXANCmwxp3%i7r&S%=BV%4UPYXjUN& zUg)%Vsi~RKR1RLLLlH@Q-K09*F?d5He|WenCX#b=by% zShw7AFEluB4e%_j1D|GQ2jR6@hK%LOZ-E6f1eEBNdc~W(!P!})X<*MD5GI%t5(>(r zGUFi%ZI2^~S4>PKLT;SkEdOo2Aqe3Y6&5uaqd$E$8m!vVcOSpj)~2|>J@ifjLYasA#`c4vkDe-j!#bNJpNY9MrFN?SWU5R z&S-3W<}*L9)qH>FzUXoCUQkf5tfq#JlQRx1ws0q5yljc|5B-M}1UaqoFhRqE5DRTV~Yk5Bi&81x~!~qVnU_l;^22*W20biUms@t z-1Kz*J_2Apiga=Sh=IHUQfeKHPPf$u;bDbAa(G?s(1B${RHkFh_u^P$5fDfLYRP83 z2N#r*cW!R{HP#=aFt65Qdsz1g0ECnq3Iw7$N+Hja)GMH6;F&C>q0R8$(tmS;OKvbG)q zf-odBG_#@tPeL(~!x-!Oe18qpN;&}bl$Dijzzqk}go>D_Kpna|-RS^11{)fpNeh`y=V8JG) z6jF;(FiAT>&cJ$l(iY#22tI@#hL8^MEWqtwV`6;6!X6`{Vm)vcC=*iz&~*9+27FF?iHf$; zXIV2)G#@sDE(LAvLGT0uftXbn0tO25AQprrE~u2CZb{3_Pu2Nc3<@0Tnw$4g-d{?7 z?oSk*tF{aY5BJDFeh93Kh9z9kU4n6G99AnTDl(l97pnkBZt6YU+LAOiEs*o|fm<`o zFDxX9cnfDqMtug)DUgtn^^A-H000ENYPsoRkp>F&=Q5vUHSEDj-2jEP=V+~)giYUn zu!iSXLCHY!-eOY<0wRha>%!=03>Yn7uoMu&S86_h^MihA3@8#P%p)z{-dXxF@F0(Q zO|$X!wZ+_t;z-bj-FW{4@%-}v(SMxg+9u0^!qhMwc&tuI_c}C2Mn*QVL}QYhP~0D$ rDE)=~$1|q*RxCez>6r0Xx0HVa^F?&0`^Uk - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRGreeAC Member List
-
-
- -

This is the complete list of members for IRGreeAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRGreeACprivate
_irsendIRGreeACprivate
_modelIRGreeACprivate
begin(void)IRGreeAC
calibrate(void)IRGreeACinline
checksum(const uint16_t length=kGreeStateLength)IRGreeACprivate
convertFan(const stdAc::fanspeed_t speed)IRGreeACstatic
convertMode(const stdAc::opmode_t mode)IRGreeACstatic
convertSwingV(const stdAc::swingv_t swingv)IRGreeACstatic
fixup(void)IRGreeACprivate
getDisplayTempSource(void) constIRGreeAC
getFan(void) constIRGreeAC
getIFeel(void) constIRGreeAC
getLight(void) constIRGreeAC
getMode(void) constIRGreeAC
getModel(void) constIRGreeAC
getPower(void) constIRGreeAC
getRaw(void)IRGreeAC
getSleep(void) constIRGreeAC
getSwingVerticalAuto(void) constIRGreeAC
getSwingVerticalPosition(void) constIRGreeAC
getTemp(void) constIRGreeAC
getTimer(void) constIRGreeAC
getTimerEnabled(void) constIRGreeACprivate
getTurbo(void) constIRGreeAC
getUseFahrenheit(void) constIRGreeAC
getWiFi(void) constIRGreeAC
getXFan(void) constIRGreeAC
IRGreeAC(const uint16_t pin, const gree_ac_remote_model_t model=gree_ac_remote_model_t::YAW1F, const bool inverted=false, const bool use_modulation=true)IRGreeACexplicit
off(void)IRGreeAC
on(void)IRGreeAC
send(const uint16_t repeat=kGreeDefaultRepeat)IRGreeAC
setDisplayTempSource(const uint8_t mode)IRGreeAC
setFan(const uint8_t speed)IRGreeAC
setIFeel(const bool on)IRGreeAC
setLight(const bool on)IRGreeAC
setMode(const uint8_t new_mode)IRGreeAC
setModel(const gree_ac_remote_model_t model)IRGreeAC
setPower(const bool on)IRGreeAC
setRaw(const uint8_t new_code[])IRGreeAC
setSleep(const bool on)IRGreeAC
setSwingVertical(const bool automatic, const uint8_t position)IRGreeAC
setTemp(const uint8_t temp, const bool fahrenheit=false)IRGreeAC
setTimer(const uint16_t minutes)IRGreeAC
setTimerEnabled(const bool on)IRGreeACprivate
setTurbo(const bool on)IRGreeAC
setUseFahrenheit(const bool on)IRGreeAC
setWiFi(const bool on)IRGreeAC
setXFan(const bool on)IRGreeAC
stateReset(void)IRGreeAC
toCommon(void)IRGreeAC
toCommonFanSpeed(const uint8_t speed)IRGreeACstatic
toCommonMode(const uint8_t mode)IRGreeACstatic
toCommonSwingV(const uint8_t pos)IRGreeACstatic
toString(void)IRGreeAC
validChecksum(const uint8_t state[], const uint16_t length=kGreeStateLength)IRGreeACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC.html deleted file mode 100644 index 24b932e9b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC.html +++ /dev/null @@ -1,1773 +0,0 @@ - - - - - - - -IRremoteESP8266: IRGreeAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Gree A/C messages. - More...

- -

#include <ir_Gree.h>

-
-Collaboration diagram for IRGreeAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRGreeAC (const uint16_t pin, const gree_ac_remote_model_t model=gree_ac_remote_model_t::YAW1F, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kGreeDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setModel (const gree_ac_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
gree_ac_remote_model_t getModel (void) const
 Get/Detect the model of the A/C. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp, const bool fahrenheit=false)
 Set the temp. in degrees. More...
 
uint8_t getTemp (void) const
 Get the set temperature. More...
 
void setUseFahrenheit (const bool on)
 Set the default temperature units to use. More...
 
bool getUseFahrenheit (void) const
 Get the default temperature units in use. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t new_mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setLight (const bool on)
 Set the Light (LED) setting of the A/C. More...
 
bool getLight (void) const
 Get the Light (LED) setting of the A/C. More...
 
void setXFan (const bool on)
 Set the XFan (Mould) setting of the A/C. More...
 
bool getXFan (void) const
 Get the XFan (Mould) setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep setting of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo setting of the A/C. More...
 
bool getTurbo (void) const
 Get the Turbo setting of the A/C. More...
 
void setIFeel (const bool on)
 Set the IFeel setting of the A/C. More...
 
bool getIFeel (void) const
 Get the IFeel setting of the A/C. More...
 
void setWiFi (const bool on)
 Set the Wifi (enabled) setting of the A/C. More...
 
bool getWiFi (void) const
 Get the Wifi (enabled) setting of the A/C. More...
 
void setSwingVertical (const bool automatic, const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
bool getSwingVerticalAuto (void) const
 Get the Vertical Swing Automatic mode setting of the A/C. More...
 
uint8_t getSwingVerticalPosition (void) const
 Get the Vertical Swing position setting of the A/C. More...
 
uint16_t getTimer (void) const
 Get the timer time value from the A/C. More...
 
void setTimer (const uint16_t minutes)
 Set the A/C's timer to turn off in X many minutes. More...
 
void setDisplayTempSource (const uint8_t mode)
 Set temperature display mode. i.e. Internal, External temperature sensing. More...
 
uint8_t getDisplayTempSource (void) const
 Get the temperature display mode. i.e. Internal, External temperature sensing. More...
 
stdAc::state_t toCommon (void)
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t swingv)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kGreeStateLength)
 Verify the checksum is valid for a given state. More...
 
- - - - - - - - - - - - - -

-Private Member Functions

void checksum (const uint16_t length=kGreeStateLength)
 Calculate and set the checksum values for the internal state. More...
 
void fixup (void)
 Fix up the internal state so it is correct. More...
 
void setTimerEnabled (const bool on)
 Set the timer enable setting of the A/C. More...
 
bool getTimerEnabled (void) const
 Get the timer enabled setting of the A/C. More...
 
- - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
GreeProtocol _
 
gree_ac_remote_model_t _model
 
-

Detailed Description

-

Class for handling detailed Gree A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRGreeAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IRGreeAC::IRGreeAC (const uint16_t pin,
const gree_ac_remote_model_t model = gree_ac_remote_model_t::YAW1F,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - - -
[in]pinGPIO to be used when sending.
[in]modelThe enum of the model to be emulated.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRGreeAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRGreeAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRGreeAC::checksum (const uint16_t length = kGreeStateLength)
-
-private
-
- -

Calculate and set the checksum values for the internal state.

-
Parameters
- - -
[in]lengthThe size/length of the state array to fix the checksum of.
-
-
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRGreeAC::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRGreeAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRGreeAC::convertSwingV (const stdAc::swingv_t swingv)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]swingvThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ fixup()

- -
-
- - - - - -
- - - - - - - - -
void IRGreeAC::fixup (void )
-
-private
-
- -

Fix up the internal state so it is correct.

-
Note
Internal use only.
- -
-
- -

◆ getDisplayTempSource()

- -
-
- - - - - - - - -
uint8_t IRGreeAC::getDisplayTempSource (void ) const
-
- -

Get the temperature display mode. i.e. Internal, External temperature sensing.

-
Returns
The current temp source being displayed.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRGreeAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getIFeel()

- -
-
- - - - - - - - -
bool IRGreeAC::getIFeel (void ) const
-
- -

Get the IFeel setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getLight()

- -
-
- - - - - - - - -
bool IRGreeAC::getLight (void ) const
-
- -

Get the Light (LED) setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRGreeAC::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getModel()

- -
-
- - - - - - - - -
gree_ac_remote_model_t IRGreeAC::getModel (void ) const
-
- -

Get/Detect the model of the A/C.

-
Returns
The enum of the compatible model.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRGreeAC::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/814
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRGreeAC::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRGreeAC::getSleep (void ) const
-
- -

Get the Sleep setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVerticalAuto()

- -
-
- - - - - - - - -
bool IRGreeAC::getSwingVerticalAuto (void ) const
-
- -

Get the Vertical Swing Automatic mode setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVerticalPosition()

- -
-
- - - - - - - - -
uint8_t IRGreeAC::getSwingVerticalPosition (void ) const
-
- -

Get the Vertical Swing position setting of the A/C.

-
Returns
The native position/mode.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRGreeAC::getTemp (void ) const
-
- -

Get the set temperature.

-
Returns
The temperature in degrees in the current units (C/F) set.
- -
-
- -

◆ getTimer()

- -
-
- - - - - - - - -
uint16_t IRGreeAC::getTimer (void ) const
-
- -

Get the timer time value from the A/C.

-
Returns
The number of minutes the timer is set for.
- -
-
- -

◆ getTimerEnabled()

- -
-
- - - - - -
- - - - - - - - -
bool IRGreeAC::getTimerEnabled (void ) const
-
-private
-
- -

Get the timer enabled setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRGreeAC::getTurbo (void ) const
-
- -

Get the Turbo setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getUseFahrenheit()

- -
-
- - - - - - - - -
bool IRGreeAC::getUseFahrenheit (void ) const
-
- -

Get the default temperature units in use.

-
Returns
true is Fahrenheit, false is Celsius.
- -
-
- -

◆ getWiFi()

- -
-
- - - - - - - - -
bool IRGreeAC::getWiFi (void ) const
-
- -

Get the Wifi (enabled) setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getXFan()

- -
-
- - - - - - - - -
bool IRGreeAC::getXFan (void ) const
-
- -

Get the XFan (Mould) setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRGreeAC::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRGreeAC::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRGreeAC::send (const uint16_t repeat = kGreeDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setDisplayTempSource()

- -
-
- - - - - - - - -
void IRGreeAC::setDisplayTempSource (const uint8_t mode)
-
- -

Set temperature display mode. i.e. Internal, External temperature sensing.

-
Parameters
- - -
[in]modeThe desired temp source to display.
-
-
-
Note
In order for the A/C unit properly accept these settings. You must cycle (send) in the following order: kGreeDisplayTempOff(0) -> kGreeDisplayTempSet(1) -> kGreeDisplayTempInside(2) ->kGreeDisplayTempOutside(3) -> kGreeDisplayTempOff(0). The unit will no behave correctly if the changes of this setting are sent out of order.
-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1118#issuecomment-628242152
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRGreeAC::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting. 0 is auto, 1-3 is the speed.
-
-
- -
-
- -

◆ setIFeel()

- -
-
- - - - - - - - -
void IRGreeAC::setIFeel (const bool on)
-
- -

Set the IFeel setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setLight()

- -
-
- - - - - - - - -
void IRGreeAC::setLight (const bool on)
-
- -

Set the Light (LED) setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRGreeAC::setMode (const uint8_t new_mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]new_modeThe desired operating mode.
-
-
- -
-
- -

◆ setModel()

- -
-
- - - - - - - - -
void IRGreeAC::setModel (const gree_ac_remote_model_t model)
-
- -

Set the model of the A/C to emulate.

-
Parameters
- - -
[in]modelThe enum of the appropriate model.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRGreeAC::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/814
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRGreeAC::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRGreeAC::setSleep (const bool on)
-
- -

Set the Sleep setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRGreeAC::setSwingVertical (const bool automatic,
const uint8_t position 
)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - - -
[in]automaticDo we use the automatic setting?
[in]positionThe position/mode to set the vanes to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRGreeAC::setTemp (const uint8_t temp,
const bool fahrenheit = false 
)
-
- -

Set the temp. in degrees.

-
Parameters
- - - -
[in]tempDesired temperature in Degrees.
[in]fahrenheitUse units of Fahrenheit and set that as units used. false is Celsius (Default), true is Fahrenheit.
-
-
-
Note
The unit actually works in Celsius with a special optional "extra degree" when sending Fahrenheit.
- -
-
- -

◆ setTimer()

- -
-
- - - - - - - - -
void IRGreeAC::setTimer (const uint16_t minutes)
-
- -

Set the A/C's timer to turn off in X many minutes.

-
Parameters
- - -
[in]minutesThe number of minutes the timer should be set for.
-
-
-
Note
Stores time internally in 30 min units. e.g. 5 mins means 0 (& Off), 95 mins is 90 mins (& On). Max is 24 hours.
- -
-
- -

◆ setTimerEnabled()

- -
-
- - - - - -
- - - - - - - - -
void IRGreeAC::setTimerEnabled (const bool on)
-
-private
-
- -

Set the timer enable setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRGreeAC::setTurbo (const bool on)
-
- -

Set the Turbo setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setUseFahrenheit()

- -
-
- - - - - - - - -
void IRGreeAC::setUseFahrenheit (const bool on)
-
- -

Set the default temperature units to use.

-
Parameters
- - -
[in]onUse Fahrenheit as the units. true is Fahrenheit, false is Celsius.
-
-
- -
-
- -

◆ setWiFi()

- -
-
- - - - - - - - -
void IRGreeAC::setWiFi (const bool on)
-
- -

Set the Wifi (enabled) setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setXFan()

- -
-
- - - - - - - - -
void IRGreeAC::setXFan (const bool on)
-
- -

Set the XFan (Mould) setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRGreeAC::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRGreeAC::toCommon (void )
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRGreeAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRGreeAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRGreeAC::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]posThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRGreeAC::toString (void )
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRGreeAC::validChecksum (const uint8_t state[],
const uint16_t length = kGreeStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
GreeProtocol IRGreeAC::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRGreeAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _model

- -
-
- - - - - -
- - - - -
gree_ac_remote_model_t IRGreeAC::_model
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.map deleted file mode 100644 index 249b88a74..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.md5 deleted file mode 100644 index b49f8eafd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -f5770a268c043ae769808e90af935008 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRGreeAC__coll__graph.png deleted file mode 100644 index d260e682b524c4f6c664f7b1c1b79af192046f4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5813 zcmZu#2Q*yYx*u%_qC|@>A_#^c5z)JdGKell5X9)wTZoV#5-oa7L_|-Nj2OLlqPHQV zx6yljJO6d>TKB&9X4aW=*39gE_WAbreZLZ}t)+UEl!+7qfm~I4sH6+d{on{Bfr8JB z4GlOrK`qr)l^~aY-&r-eaS#YSQcX!-&pQo=@zK+>&1l`;glRwHzkz&(M@BWsXZKo+ zO`i4rKuVCjWF-%c-E7iE^Hr;6#yD}?0UfJYn)kg)8{u3NNWCyE4JBMcngPvK!Qag} z+42Gj_{L_@J;C|DOO&a|82xvj1-xaKmS3GtpVrn@ZMh^?9VT#wP(6&@lhZp8l#69a zCXePamWMu!E#x5JQZsO=^-}Qlm9QTv{Gke?%)vIjE%V;COx>%o>0ufe9CRE&4IR)6 zA-cD)O>3I=--!m+_SYvW3NR7ANvyIjr@q$xSy@?O0arHX>W;Rf#b(R<;xebwUWn#4`Us2H1TQa=vqE2zgrC`;U$gu{AY2ol?E==V4E2*La(S+ zpZ7R7NyHQlgOx5qYz`&P>=$V-0WV=Dv&5K{YzP=)s%_JXK9$4yUD!!$#-d*f* ze4NEP=0Nr_Iy#6dcwj&m;k$Bcc6PSX1sh!SX6-Hoi+KGvooo_v^7&NfT5Rik=JiQb zR9F~^LGcs2-R-rP#mC3TA)%qdb^}}y@7_7eY&3N)qFtPvoVru*Q!49-2VPWLpPcNk zT_GiH#9-2OvQ=CcyBXC@m6eIET)9F>Ncd-AL0LnC{K10<2?q_YiOc+tUvS>MsZ%h# zw>gvfnwZjLf{c_jEIeGk$bjbBwZ;t$+VNauGL$O#m)nwv-+{wOp>b0X9)XL8M~->j z%kB*6RLxW|<3&~}?>o-b+fb|4$cDkexO7RcpOpwxWL>IB(IUocCa1c3YRAUS%8H(W zVfSpeFZ=iNt?g|rs_q;%T4GN8bg?@*O(r0P!Q7u(Stl$k4D#HQF~}6<6cZgSr>#vj zJw1JPaafmIT3V{#_48gT@wfc^h^x$ES-hkmu0$L+Z@#{zp77mqQmohv-FmuN*Y|-{ zQlP83rN#Al$C`p&M#ITTkN`@~Atpv&HtvvY+m!$-MAW1-HY$MNC*8BB_dtpDBniI; z+X%L=W4gwV)t3S5#2|#=l9WuXtgJNXxm?N3EJY6UIZao0bSI0NJ}D_O-aM3C+*=vE z&CfsA#vV8iZme1|Dr!F>0P)8JoT@X`S?o91JCzI@u_az zx^=i;^;IjK4;;ScU1Oz}O>Zg5|EuA|uE!gT#ahm_zSk_7=Z0`Tc<`&iJ(Zn+j)6hcbyjKGcMYb&O#_jamtPRr!lZRh6ahnD;HV>jy4MVgpJ3zQGCwpj#a%fAkGsspeRjBFVqzlMq*L${9ZEamcV4ALF8#g*K4W(dt`1C2q28m?nJgP91JY#KT_OQyIzmx0a6qe!&5n|p1TOt76c?6dlc%v{b(^*5)maO<)7Xw!FU8vD)7BZwnalQQFB|{-0bW?{tr+$dEdTqh>ItI zmjS!GWbpFx^V;J@W)V?Q#s@FBkQFJ^H&vozVt&sSQNxN1?MMBrz?ki=tv}&B85{xv z}RInYSeQBC7I%1sQ>8EBfpW~$oNdzh)GdpUMKF-OJ#F4b zqaJP{I-gF0prgx{v`f9rpScO{f{uGom_3|u!Fi=booNK|GW43_%Puk_yVapQG2G?R z_8cXy$|(Zv=0$&C8kM>V?Luif`@EtkY=|eJL~l+H?jFuxtE!Tu-k)hW3h^C7f6>a3 zs(W+pCgjH7C)Zz6!+3~@u2C=Le=7mS_x_T}&-=96(Q>9MvE%q__w+3frW}TXF&eM% zh(;zoEz&5dk)G*W{We<*syotLY51s^7 zRpz;D4(D7b;W5YvEv^OD1?Q=J{RT_NJZX-(?37PZs*%;!GNT>3FvA&+DK=v93Hz;r zn6I)WIKP>?i5io=AD8lCGIMrgImFn-U0;yra%nX^7dF+z|D8D^e;Y2atid8GSLdR< zGO+d5R_sbdub~Nrdk(Qxq1f(d2>+9lS(EI;(7d!yZF2V|^$xaN+ab~eeROU#$5blv z$HPpuN2BT=5&6iOMv0(FYZYDdUXD$r2aN*H9hkGTw!)+?@L0s<-ftM5y&mVi^N~?4 z-7UFbCJ|+BL9vlA?XpDK2iGTgJh(RcjMn=wF86zbJi(B3JyE>dU`|0At@ds5w1K#c z^Mzs+dk=j{>aAy9+O>J?t~>uzpqwMh@kie(5aiYr$0tLwN3i zV4sD@+D3O+vy8?hokIQcMt%BRx}S%uTO)2-^i%prMJP$usN8+pT*+5?r{=D2@Z$Wg zRn)R0FNp(VHEc)C)*34hPemLoFpBhfUL(6PZSy0!ADW=;r$3xH2>E!HN3zMRW+?s` zUXG-8pN}puR*F5%r#`FB{a6e45nZHwRe7)++{s8wx5vUkpqJZG@Ppk`n$4}HL%HP- zLjdDmFw~ZT?kiKnLcpka1(pv?Rqho|fm=^d$bV$d__Ll8g)k#It6*UG$*?=eqr5{J zf)<||9`iu*Xxzk*%KS_gLf@kMX+gIe+rhee|X z0hq9HUYF5!D-M@GW|hSoT2~thsKiIeE=lgq)CiTl_tS2Z?QSYkWq?X=4rcZ2Q`<6T zpv4`6QfPjRWilJ)cO0#z)Tq0PE8Ft-=U|>5T?QwhI8Mr|(k3litc_9BTo2M8j4iY483AOU-^yoKq}m9N>J3Y%CQxrim<~lv5LvX z4zWqh3#M^ZFfelbXWQt{!`IU>Qq;FAs_FWk2j~i|@~86h@)n=>s2)A~jx}h}?>zjy zQDwuUjq{)9mAil`#>U1@l=mI%DC*uYZ@r8h=Y==ReAC+JRy*R9rReVBI-D#O^UMC8 zLwOKj6u)p?{L+}3`rWx{wT~9kBzFS;SoPbA%sMdx_<$j*E+n zii#=-fR?bZFyISAYtF|z3rZ>~pA8CDX6j^#DcQ=)8E9##XlP!W6mfHLg<#NLD5G7F z6}QFBdfP9TZ?bDz!+u{$pFwcNHui-vS0M{dNhv8AnD0B4`?CWQ;~x;v^24ev<=3S{X?w~xr0}{yu4gDrhY-YR`-4J z!p_e8yY9wya19|VtS|cewYM9H*^MSj%X3-YH4XrRe8KyUw2SvXL{edQ&F&%j+QU@FKXoy=fQZ@hBUD7 z>5=`#js?Htm&fU$Xw#B5Oj4;EN5s{O5Z*&6FK-YojWluUvhnT%+$5v4?_DAyA|Nxe zbn|!x1;46Bu^mc(sH>BWkB_HiU@%qqGPshGHZ!i=GLIuzFh+?D-A2iII8bN!<>cgS zpRAR{B`2#nI>NZ)!dF+3-8P~oMG0zg+|=ysa1|A(zP^5%gh#~Km=QTt@m&BhF|p{2 z`G<>rnQ%3=D-!7+th*BKp(DxRldD5`NJ_ZOF&6@XP*PQ$!{K@+D(uzN)Eb)RdUu%s z;x_^f6ZYYQO7`#XPaE)O=jL2p?J!oq{*zE#2hzad_{A5$_S08DE50BDnl%~^sp9GR zb76g~<`N9TnITfw97<5IcC$+KM?~RlX9IHx&(S#gqnPV#lYemL!Pnd~0ru1w(=7Cm zL9#fiBCMNW6lWGOESQT}I7IVw#Xo7!}u6*I`s9B6v0VqE;9uJ__I%aOYGk$5*{Xwl*-*is-#1F51Z<&dB^O~W_=^S^aox7f*kAw`c zpFJA~`-Ek18wMG8aq@py1!N(WHUFsVzrE}~r2fB%4<X=XRa z(>elem#Q@OSkiE#b=9bgVw_B^UM6{efbN6ak!I8njW-;%0-y93TN#?)-$9L*U5Q-R zYA;9NBz_KwGiDKIZOkbgaR&A}3C^z`;@qUTx?Prg9MYcXMIzYx1+5;z;_!Us2y*wh z?hL$Zx=enLO~6qu1|F3M1rIJL6_bA{cW8f@(g}x1boA0=LS|dB(7VA3R&aW^^x_`R-RA}74%m|6@ zT+#W3g>9ge$I+1#wkLZl2ZGp7BNiWC>FVkx30u9X=~{M?XfJu&7wzm-zm7|{cc^C{I(K`w?A(?N$i#TK?Dvt2@U^U1au7Q^}a z&#bMDC*Wz~4Peyv{=PM)%3~daP8=>U{A)D;%I$#2qzXPiJruQQB&pQ6OgW%JB@#@t)(RtGzBq-u^_G7o4mXvHwf8Z z9^Ihf)_4koP!RYAh@!vwEWQzY>i+DixsqNefjWMDNV3=Qe2Po9tP7{j5V3TB@v>a&i}LcjtshwJkG)VJCTxLcu6lfQKuP(Z;!pq) z2GCy4Q&Usk#|w!aeSJLq`~@wZK|pK$HA=d~n5o6W)@pgBn zY-Z|x=Tc9c$;H`{tf<4-9WW;X;pLRV4}&RZ|AyRodFI_3#oo6vm}^}6Os%GNbrFx3 zw{jN}3oJ6R>t)}+M*|?UnLItfb=3x(0%))~JKEl#pk$R$($mw+-dFp1i(rUQNJ!`! z4UG@5@5bu_WdTV5+7%$Wn!5T;F0L;vGPDbssHl^Zlh3@Qeh2HoqPm}i0_M!P=M6$I zvlZ~y2no-2KXLw*Yao6gMi{Sv*!_9IC!$hPQlO5YAZJ^i-v#5}(Zeh+FV4?a;DMY% zLQxYFCQeh84FD%oaq8K>?*LpeC_!i<5Ny!buhbI-e*m8hX>V`pAPa=QT+J3Fwd?xxOc9ZWjUVX+OMF-&^n9 - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHaierAC Member List
-
-
- -

This is the complete list of members for IRHaierAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRHaierACprivate
_irsendIRHaierACprivate
begin(void)IRHaierAC
calibrate(void)IRHaierACinline
cancelTimers(void)IRHaierAC
checksum(void)IRHaierACprivate
convertFan(const stdAc::fanspeed_t speed)IRHaierACstatic
convertMode(const stdAc::opmode_t mode)IRHaierACstatic
convertSwingV(const stdAc::swingv_t position)IRHaierACstatic
getCommand(void) constIRHaierAC
getCurrTime(void) constIRHaierAC
getFan(void) constIRHaierAC
getHealth(void) constIRHaierAC
getMode(void) constIRHaierAC
getOffTimer(void) constIRHaierAC
getOnTimer(void) constIRHaierAC
getRaw(void)IRHaierAC
getSleep(void) constIRHaierAC
getSwing(void) constIRHaierAC
getTemp(void) constIRHaierAC
IRHaierAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHaierACexplicit
send(const uint16_t repeat=kHaierAcDefaultRepeat)IRHaierAC
setCommand(const uint8_t command)IRHaierAC
setCurrTime(const uint16_t mins)IRHaierAC
setFan(const uint8_t speed)IRHaierAC
setHealth(const bool on)IRHaierAC
setMode(const uint8_t mode)IRHaierAC
setOffTimer(const uint16_t mins)IRHaierAC
setOnTimer(const uint16_t mins)IRHaierAC
setRaw(const uint8_t new_code[])IRHaierAC
setSleep(const bool on)IRHaierAC
setSwing(const uint8_t state)IRHaierAC
setTemp(const uint8_t temp)IRHaierAC
stateReset(void)IRHaierACprivate
toCommon(void) constIRHaierAC
toCommonFanSpeed(const uint8_t speed)IRHaierACstatic
toCommonMode(const uint8_t mode)IRHaierACstatic
toCommonSwingV(const uint8_t pos)IRHaierACstatic
toString(void) constIRHaierAC
validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)IRHaierACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC.html deleted file mode 100644 index e7155b014..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC.html +++ /dev/null @@ -1,1303 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHaierAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Haier A/C messages. - More...

- -

#include <ir_Haier.h>

-
-Collaboration diagram for IRHaierAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHaierAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kHaierAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setCommand (const uint8_t command)
 Set the Command/Button setting of the A/C. More...
 
uint8_t getCommand (void) const
 Get the Command/Button setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getHealth (void) const
 Get the Health (filter) setting of the A/C. More...
 
void setHealth (const bool on)
 Set the Health (filter) setting of the A/C. More...
 
int16_t getOnTimer (void) const
 Get the On Timer value/setting of the A/C. More...
 
void setOnTimer (const uint16_t mins)
 Set & enable the On Timer. More...
 
int16_t getOffTimer (void) const
 Get the Off Timer value/setting of the A/C. More...
 
void setOffTimer (const uint16_t mins)
 Set & enable the Off Timer. More...
 
void cancelTimers (void)
 Cancel/disable the On & Off timers. More...
 
uint16_t getCurrTime (void) const
 Get the clock value of the A/C. More...
 
void setCurrTime (const uint16_t mins)
 Set the clock value for the A/C. More...
 
uint8_t getSwing (void) const
 Get the Vertical Swing position setting of the A/C. More...
 
void setSwing (const uint8_t state)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kHaierACStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
HaierProtocol _
 
-

Detailed Description

-

Class for handling detailed Haier A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRHaierAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHaierAC::IRHaierAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRHaierAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRHaierAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ cancelTimers()

- -
-
- - - - - - - - -
void IRHaierAC::cancelTimers (void )
-
- -

Cancel/disable the On & Off timers.

- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRHaierAC::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHaierAC::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHaierAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHaierAC::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getCommand()

- -
-
- - - - - - - - -
uint8_t IRHaierAC::getCommand (void ) const
-
- -

Get the Command/Button setting of the A/C.

-
Returns
The value of the command/button that was pressed.
- -
-
- -

◆ getCurrTime()

- -
-
- - - - - - - - -
uint16_t IRHaierAC::getCurrTime (void ) const
-
- -

Get the clock value of the A/C.

-
Returns
The clock time, in Nr of minutes past midnight.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRHaierAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getHealth()

- -
-
- - - - - - - - -
bool IRHaierAC::getHealth (void ) const
-
- -

Get the Health (filter) setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRHaierAC::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
int16_t IRHaierAC::getOffTimer (void ) const
-
- -

Get the Off Timer value/setting of the A/C.

-
Returns
Nr of minutes the timer is set to. -1 is Off/not set etc.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
int16_t IRHaierAC::getOnTimer (void ) const
-
- -

Get the On Timer value/setting of the A/C.

-
Returns
Nr of minutes the timer is set to. -1 is Off/not set etc.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRHaierAC::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRHaierAC::getSleep (void ) const
-
- -

Get the Sleep setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwing()

- -
-
- - - - - - - - -
uint8_t IRHaierAC::getSwing (void ) const
-
- -

Get the Vertical Swing position setting of the A/C.

-
Returns
The native swing mode.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRHaierAC::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRHaierAC::send (const uint16_t repeat = kHaierAcDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setCommand()

- -
-
- - - - - - - - -
void IRHaierAC::setCommand (const uint8_t command)
-
- -

Set the Command/Button setting of the A/C.

-
Parameters
- - -
[in]commandThe value of the command/button that was pressed.
-
-
- -
-
- -

◆ setCurrTime()

- -
-
- - - - - - - - -
void IRHaierAC::setCurrTime (const uint16_t nr_mins)
-
- -

Set the clock value for the A/C.

-
Parameters
- - -
[in]nr_minsThe clock time, in Nr of minutes past midnight.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRHaierAC::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setHealth()

- -
-
- - - - - - - - -
void IRHaierAC::setHealth (const bool on)
-
- -

Set the Health (filter) setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRHaierAC::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRHaierAC::setOffTimer (const uint16_t nr_mins)
-
- -

Set & enable the Off Timer.

-
Parameters
- - -
[in]nr_minsThe time expressed in total number of minutes.
-
-
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRHaierAC::setOnTimer (const uint16_t nr_mins)
-
- -

Set & enable the On Timer.

-
Parameters
- - -
[in]nr_minsThe time expressed in total number of minutes.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRHaierAC::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRHaierAC::setSleep (const bool on)
-
- -

Set the Sleep setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwing()

- -
-
- - - - - - - - -
void IRHaierAC::setSwing (const uint8_t state)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]stateThe mode to set the vanes to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRHaierAC::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRHaierAC::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRHaierAC::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRHaierAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRHaierAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRHaierAC::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]posThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRHaierAC::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRHaierAC::validChecksum (uint8_t state[],
const uint16_t length = kHaierACStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
HaierProtocol IRHaierAC::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRHaierAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02-members.html deleted file mode 100644 index f73194fe0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHaierACYRW02 Member List
-
-
- -

This is the complete list of members for IRHaierACYRW02, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRHaierACYRW02private
_irsendIRHaierACYRW02private
begin(void)IRHaierACYRW02
calibrate(void)IRHaierACYRW02inline
checksum(void)IRHaierACYRW02private
convertFan(const stdAc::fanspeed_t speed)IRHaierACYRW02static
convertMode(const stdAc::opmode_t mode)IRHaierACYRW02static
convertSwingV(const stdAc::swingv_t position)IRHaierACYRW02static
getButton(void) constIRHaierACYRW02
getFan(void) constIRHaierACYRW02
getHealth(void) constIRHaierACYRW02
getMode(void) constIRHaierACYRW02
getPower(void) constIRHaierACYRW02
getRaw(void)IRHaierACYRW02
getSleep(void) constIRHaierACYRW02
getSwing(void) constIRHaierACYRW02
getTemp(void) constIRHaierACYRW02
getTurbo(void) constIRHaierACYRW02
IRHaierACYRW02(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHaierACYRW02explicit
off(void)IRHaierACYRW02
on(void)IRHaierACYRW02
send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat)IRHaierACYRW02
setButton(const uint8_t button)IRHaierACYRW02
setFan(const uint8_t speed)IRHaierACYRW02
setHealth(const bool on)IRHaierACYRW02
setMode(const uint8_t mode)IRHaierACYRW02
setPower(const bool on)IRHaierACYRW02
setRaw(const uint8_t new_code[])IRHaierACYRW02
setSleep(const bool on)IRHaierACYRW02
setSwing(const uint8_t pos)IRHaierACYRW02
setTemp(const uint8_t temp)IRHaierACYRW02
setTurbo(const uint8_t speed)IRHaierACYRW02
stateReset(void)IRHaierACYRW02private
toCommon(void) constIRHaierACYRW02
toCommonFanSpeed(const uint8_t speed)IRHaierACYRW02static
toCommonMode(const uint8_t mode)IRHaierACYRW02static
toCommonSwingV(const uint8_t pos)IRHaierACYRW02static
toString(void) constIRHaierACYRW02
validChecksum(uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)IRHaierACYRW02static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02.html deleted file mode 100644 index 379527233..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02.html +++ /dev/null @@ -1,1274 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHaierACYRW02 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Haier ACYRW02 A/C messages. - More...

- -

#include <ir_Haier.h>

-
-Collaboration diagram for IRHaierACYRW02:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHaierACYRW02 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void send (const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setButton (const uint8_t button)
 Set the Button/Command setting of the A/C. More...
 
uint8_t getButton (void) const
 Get the Button/Command setting of the A/C. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
bool getSleep (void) const
 Get the Sleep setting of the A/C. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getHealth (void) const
 Get the Health (filter) setting of the A/C. More...
 
void setHealth (const bool on)
 Set the Health (filter) setting of the A/C. More...
 
uint8_t getTurbo (void) const
 Get the Turbo setting of the A/C. More...
 
void setTurbo (const uint8_t speed)
 Set the Turbo setting of the A/C. More...
 
uint8_t getSwing (void) const
 Get the Vertical Swing position setting of the A/C. More...
 
void setSwing (const uint8_t pos)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[])
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
- - - - - - - -

-Private Member Functions

void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
HaierYRW02Protocol _
 
-

Detailed Description

-

Class for handling detailed Haier ACYRW02 A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRHaierACYRW02()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHaierACYRW02::IRHaierACYRW02 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRHaierACYRW02::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRHaierACYRW02::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRHaierACYRW02::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHaierACYRW02::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHaierACYRW02::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHaierACYRW02::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getButton()

- -
-
- - - - - - - - -
uint8_t IRHaierACYRW02::getButton (void ) const
-
- -

Get the Button/Command setting of the A/C.

-
Returns
The value of the button/command that was pressed.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRHaierACYRW02::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getHealth()

- -
-
- - - - - - - - -
bool IRHaierACYRW02::getHealth (void ) const
-
- -

Get the Health (filter) setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRHaierACYRW02::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRHaierACYRW02::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRHaierACYRW02::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRHaierACYRW02::getSleep (void ) const
-
- -

Get the Sleep setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwing()

- -
-
- - - - - - - - -
uint8_t IRHaierACYRW02::getSwing (void ) const
-
- -

Get the Vertical Swing position setting of the A/C.

-
Returns
The native position/mode.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRHaierACYRW02::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
uint8_t IRHaierACYRW02::getTurbo (void ) const
-
- -

Get the Turbo setting of the A/C.

-
Returns
The current turbo speed setting.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRHaierACYRW02::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRHaierACYRW02::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRHaierACYRW02::send (const uint16_t repeat = kHaierAcYrw02DefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setButton()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setButton (const uint8_t button)
-
- -

Set the Button/Command setting of the A/C.

-
Parameters
- - -
[in]buttonThe value of the button/command that was pressed.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setHealth()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setHealth (const bool on)
-
- -

Set the Health (filter) setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setRaw (const uint8_t new_code[])
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setSleep (const bool on)
-
- -

Set the Sleep setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwing()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setSwing (const uint8_t pos)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]posThe position/mode to set the vanes to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setTemp (const uint8_t celsius)
-
- -

Set the temperature.

-
Parameters
- - -
[in]celsiusThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRHaierACYRW02::setTurbo (const uint8_t speed)
-
- -

Set the Turbo setting of the A/C.

-
Parameters
- - -
[in]speedThe desired turbo speed setting.
-
-
-
Note
Valid speeds are kHaierAcYrw02TurboOff, kHaierAcYrw02TurboLow, & kHaierAcYrw02TurboHigh.
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRHaierACYRW02::stateReset (void )
-
-private
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRHaierACYRW02::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRHaierACYRW02::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRHaierACYRW02::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRHaierACYRW02::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]posThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRHaierACYRW02::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRHaierACYRW02::validChecksum (uint8_t state[],
const uint16_t length = kHaierACYRW02StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
HaierYRW02Protocol IRHaierACYRW02::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRHaierACYRW02::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map deleted file mode 100644 index 759c2c0ca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 deleted file mode 100644 index d6498c49a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -1117c02c0fb2953bf38aaee0fe187ec1 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierACYRW02__coll__graph.png deleted file mode 100644 index 8cc61e7fcb8f18eff16b682a093de783a8372c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7509 zcmY+J1ys~s*zHF^K$H>?=?+08q(MOGknWV09AXdz1_VL6rBk{?S{Q~#Qfdf^k&q5) z0fBpX@3+2n?_x0wQ~x>VJm=Ya|4x{?sysd(B_0F9BwB`qKwPMzsoR8 zU&(&ve?m1pl!d1?(S0V+`?Y&8lEPf;JaXi1+LJ}r{pW#!)+LGT_VKv57;ePsamsAM zwg`Wo9T_Q&fG%rz*19-hIb!-J5-}oytUZ(P*{#53z=~(Ce@iKiL$4UW)Gq^WRlp;+ zcOJg+g?98Ou$^z@#XKNZ&O4seQmc8>5$Nr3)4ZNl*4V&OB6|PP(_bY;S*6;#)-m*4 zTu~-1?*#PKqh?FAiiF=ES|OfUPFI@b7Zpu!^D&onR+_XZC@Ys~np(%?bdF?-Z42ZS z=6q?ZSpSjze?EmD5+v8 z$wwSQo32mz9#f_f3Rs#t9tZ}-*G8Gl7-nW>i{9H6N;jP0fw}DZ`ud}dP_qW-1w--( z`-8pRZM@qzZjKk!JFiccXbq(aY{#vn@Y_ASzP?TzIQD*FYHDiVLim%Qv#V?KXT3v# z;8dkaL@v9GoLs3j3kyq~Ju18_gb*`lViT8upb&m}s&8ockcdd?-Ma?Sn}e0UgOig2 zkL@Yg-h66K4m}nHz%r;BkB5>vY;OeCg807lH4O))<25 zg@lsz%;1Te6GiR^%RLu{8I$c(Rc30Aj!(1wubT}Uyie>a&5){IUQLGYkh^bIzsE7N zu*9XMm5%uD%gJ)zwKSHUWkczqfD9%{z8x zYc)uN?~^|({_QYb+0)Z=S6Ny469J8qqhq;fMRj#77{Su&YEVT5m!F?sqF|EW)kTd} z|3hD2-|Cv0FY+<8)FN&&nOUi+VcFSqf`Wp_Td0VI7SHK3dqGj~4)*Xsxx9{^p5W0@ z^*vfwzx^*Soi4+HH5st|G-8X6T_Q}y0zSYQTyFE)$V!#h9R!GtI%D7;zf4E8<$oxJ+{cMVwQ z2B*2gsZL-~3ybG^nw-+vvQo3<{#J zuP+1?YN2Z8Km>Oi_%68q|5oVAoRHskA?iqTBJS8eK0d4}DN?UqVF*DNu?9#w zLW!9m-vhOWpA=~utgyfy7H@cGGn8$8{8edGYt ze_T>hZ=Kx)WCqM-R#ukdd=oJPR*`BZMiZ3ggWW_SF%{Kd$48uI?-LI2w2Zv`bg6SD z$ysPo{x`j zk}p%0&C$_u@_b=op(jniVRG~Q{2YU5b90lCmsbPAC?;l>w=2lkB zsu{uzLG0*v5LeKPly+fTlZqzUEfpp$x^+%-y3DMsy5VIOJ_z__LyDMZWpzWtBLf2i zRHcKaW;~=DRi=mf3brGzlrhrJ1eYPGsHkYB$0M@Cey=H}ZHM-8=!;>zcj%2Ha7GNDoaY9s7ahN!!M3s=9PRCS%8W`9`jmYf$C_EF$t{?CtmA z;fk*{F?5pG0fX)?E;+@;#p7Ywph0>YH1=|ciKUa9dIfl*;mJcoDnLHW&CNe2ChCa! zJ6*OGZcjSo74GIJCqIMjFJ=PaaXVa9Y;A4*fF`7frhPH+XQ_*qm-kK%kjz`Xp!5Hy z;lv~%k+r;RF~6{Y`kKh8_tl~YFE=mm;Lo4phibBc98aIF0@{(-S~B?THxCDu*RMr9wn)M71x9X~;HE}r&NyUpk&ip% z>EJS;)x4dqq=8&rp0R-$1I1Fhj>FM)Jxkdw|-wPZ9>SEO4mf=Seb$;6s>hOq&*(O&epyGXCUU)5g zM+;w5b#`{n)L4di>v|on4Il5!CVk--WM4sL30URq!8 zJKmhwc1Kat*xK4&UrZwpJMVM9v9#<8ynEm4bk=s?Xx;U)wPA0OfFqJxBpz%GCG-Gg z)F&{CxWvSs?{Q3=^)+4x7KJLQouHSxczE$3Y(;G5@uCG8ey z>svL;(V?O30|Vi0@XO`RO~v(*%-PoWwW9E`Tv=)f-^XCfoalYTL7g8Ca-Vn6UAKc) z`LV2w6Ub7>++2&U$9CEwngq8Lh$PYD$Dy%8Lb@Rg)9bO0vKpY-#dgIOU~5dAvU2k# zF)OlSD8^ec#xmba#bs7}b^Bjzm{dIT?L%Rg^CP}}(KPrJebN(X9%;{s#|e9~Ck>Iu z$1rMY>aB_^ypyY)ph7wS2`m#EP8IJ3UKl%9A0jW7Lyk`HG+B=Kp~Hn-7=5Ea=Ttr% z!BxZ{M>jCNzh43kp;(^qLr1Vx;82KXtzDElADbs~-cOGw;jAJ?a*|u#$5$Kn%&~1J z`LnTN!HhW&#m%~gAa!QF3Qvt9_7C5R=v8P-#V=6IW^$og!2U39@q$g)*b+T7IIntz zYS&OC%-hj>QPjov*ZZfnbCJCU>D@-#p99RJ?P)N^>a*%X9V$ywDcmO4l9bFJJx5(^ z6dTIvJJG5UaqkObO|+i5x*8F@!acVBEuFoPWoNlDYM8;AiA#zPgBNm9t{g%M;i*y^ zSmX^>wVXUz8TU^-88y6NKQU;~L8dG14);iH5_6}ovg(XxDJMD>20o0{tGpH^hBQSx ze{3s1Y($#k+}$)hMfj#drK>ay%geqrOpeCqIX~n*VAMNZ4}iGpJseG8hfz&GD(HtM zzE(@vKO}&2)i^>m3ye3gUP*Oci#MqKP5r!KgdM6{s_vWjnF-3`dVEuPXcSPXbcj8g zjAtxA*o7he_Am@`ciz`uQoJd-P36z_Fdrj1tGlBs9?LljU8!73_lmozi7O=Z9=W2J zfqEOcde z6xGc*{JD7YZQ^ht^S#>sUOBwF)jMxGySZMt(mWC3m#+RQWZhXv3!~9H5^76CJlXZu z=XZP)UwY0QXiq>$THu@P{?})u&h@#Fy4AxEaV4K_4Ce2qtJ<(rs`Ddlv7%~Tc_QCo zN2=NjhUGX3xjTMK3BU*^&SCc&*^`kc&r|B@d&@6m9MGUB^deB+RJMf@UzU1ErUv-(1BeF4}w)MjY| z6=iNg7ScrCFNfku`Q`8=I5W#$W2hhbunJ_@B;)R_Z~l4)b7{;MZk!zbQiuB!xZHw3 z4Tt%+sBgXL=892LwPO6S%$rN~#V5DCCWY{PIRj_UZTvXXaPa7Hegqug?IS6RQ zQ}C$-C+*Usdd~b6SEh8h@+4qA-JRb@mlR?YSOae~`SBJxGc-trPgRvNqqW6>Qq|fF zm)4$AMsVUBom)enneL03Z;ub$zTqWnU`w67(@?0+GpkGlQ;a7a{l42hwj{Hz6*8X; z_$qy6p(<;jPu;##|3rt0@MVk&-w)C$#q={;%H!?nnAlh%Ao0Ml*#MhSZqo7yM1ZGU zToj@(_L`cSt$#p4Zi4|E8=Iq()4|aZlYl_IrjK&c(~iDA94aa*@8gY*I41eY&D7M? zzvt)XmX^|0ridAY&zWUK%%0GTxcdp!`_SNZhfLZsu9CRoY56Nb^RSSk;7V;XHYa>a zeuZ)~r0ErUVZmf(ZY~1kK~>;L!UmJM?~{;_xGs0!)6mppRLv59^5~gy@dzCe5q)nY z1yg)NLJ!c(o;fIzOI%z$NVQ07&K(9LEmF&VBr7Y+$j`4mGdp_^(I$TVMLHy0F@ZH~ zXU7o)OLmZE>HqW5@}@%)YJAp4< z;-8+Lj6N;P&kq7Z1=fP|wWqs#*$X3%Q{RkR+oucMb zS!H@ceADke0se)yKbiqQ*;k|~(D%y@Jgs}HR#yMa%mv7jjaS?%B6 z{2`k{%K&jOSFj3J%=gxcdrZ2`@jfLffyX#ES!iZlg_-P-OJy1tiYM}<4a|qs9hMvu zTfBk}66e}x9O{w92M1P~NB<$F!%^UJ{vXei;}?49b0uVB&2k}%G^(A1^~<=bC>4&z`)d973^?JwnU90CIAMs>_X~LYPRVjm;Ip4+C-ZRA(Af)+B=MPdA?yXh@ z-M-?!mIIRXNwFu$-*AUHg%0NikPH z2f_Y0A$%GFNYDEM87`&5!3n`*pZ-PArJ_PxZOvb}9XUy#2ES@Mr%x2DTmup~Uw?VQ z*D-d32oDR!25bGBAwWB9o~hXOrL;Bsgj{bkT`Oo#KffxGTVmwrga!xVqCl1!M zK76=>t)5||^l#5t+-5e9mv2b#pq`|0?1pu9r9a>PKP)H?+W&w4@P8d4Fo_R1#42OE zyUsm+u4O*pT1O5gS>oo0Fp>n^DadZ^5~9m@TUlQgwX0GoW8)J}?UoiAOBBo#D^)tF z9J}^S$;ui5nH0Lgvz4sQzK9|=$-1XoTlwX&)fAc7um`GmgJZruyv|@75pTTRpqER2=E%4`;-z>sMh`a5tMSC2Uk02ilD zU{hNIiLJ1y$@y7fJgr)-5*8{IfX%V7v7LpMWB@v9K$fgDMc8jt+cO9K0)#MdMuMEIaY=Nh4G+}trD z?rX)?XWQgzYHGJo@)myj15ydHXLoOJsWmybsSNH*bQ}E6Ev5tCpxmJLQ-x8ZCZJI` zbiO$wNbA8zx6udihVwsNgkcd8Oyc6Ld!lOIR>Km++C0ynGttvSWHl62RsA+DKx6C$ z3qVIlXX>?dx505XuxUGY$cGSLNlEGNYJwW>g9o>%4^1j>A z2MH1Tv;SyCMMbKlzXX5|iSbE9fz{PKz0ov-RM6Idj~_8Xx@&4`;&GUI`hS&s4fJyJ zg>N2!rnvncAQOZxssJulVW@+!weYxF-q}%UdAB=Bh%l{Ud-g1v;<=5s5*E;QKsE1! zBnCO%os)m_h8|FoI)~|Kp+&EcfPVq@h20)P=l2~Tzv}Ah_SsnqNlD3P#!Y`l_k*?1 z3{@CM?d$(-o87$9AO#lSVDtpQKSdafA7De@KOH!L+TCbKwh9bq$HjH@(fJR7fw{n7 zR{ilTiSd0vE#3p!5^?zjk&uvp?4Xg^>sdYomX?;FV!i_sIC)-W(jup;`zTL7rVUz7 zOG~SgAsh#^If>hBB>Vc9&HHr6V7FD^BqAgP2gJrZ^b8CEKxX-XL;8*6c~~Pz|GrLNL4vGxdQ0l4<8@^ zY)8pyT?+y<>I&AP6@j?(=j?19NcG!#LkK`aciTzS#1Gm}{J_R!=i=(=> zm$$bY7!+hAL*yeERBvxDi0mO?DKxaTWdO+ph!H|cMt0|oot=T5h_0^gR$a^PZ0+qU z4lcH<>jY@>?r$sT!!kpy6*1oAb{3tz?i_ z9gq0*Iwb%7!IUashWy&wQw2t=zrP=__kZU{BCri2|C>uRszFOr za|R$mfaB^-i&{{V+@Lyk=9@`yaBu{^cmR3_pgVwUd0BMDzxMal00{zhzq-DD1ctc+ zJ{2evT!p|F9OtAu-2MZf}!2G)=8JOh) zpc7{coC&n55pztj%q1MRPAUEt4E;Zr>3=ZMf8;3lUZg-Naz7 z - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.md5 deleted file mode 100644 index b98100c67..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -301f21afa87365f8095e4c29507be9ef \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHaierAC__coll__graph.png deleted file mode 100644 index 242fc76d64376634ff934e0a5c76cfa9d4e8ad1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5758 zcmb7IbyQT}w+9Ic0Ywo(Qc@(OrB!mIyGsd?jsa;UL}F-$8W=i-ff+i#h?GN0$ABO( z)X<&py4L&s-aqgC)_QB!oV(UNGxwge&))kJky;wc6lC;dczAdeAQc52;5rU`gGq>i z@ncT}IdCCcC8s#np)Gbp%W(8E4i_zuC)#Zks&v;pu#F;u_LRN4K?d=^k#L8vg zzVT8rycp)hul0$HjD$&ecISZ^Ubx|fc36!_60XqQ`NDZn(2=lF*DX|qawyO5{Z*)% zF5~Z=ImW@w#?K!+JUpy~jdbLBrIn`gufeETrEG4_j2)C$RW&@5OM+9gvSJYw6pX4w z>9VH`$8%h#hnYSAm6hri@6UM-jr$6Ks1w;2mzKWAv&x@dEZkHo=x1461qPY||3kFw zM@?^n)YNRQFV8AsSB|k;tE=5V zeb3j6NvWu?5zIkVdfTy9Ra&+Ww%=U2 zww`pIn=qn8nC;?wWKwwDZ=1-g)6u&Vi=XY$K zRbRj?T@^Ejr0pf+W_vV0h5Tvx@*s z6PV&{<5i<&dyu&W(k2qfRZi^cs+b9B(M_f7pkVxJE0_w#^!Zc>M)3N2aUg%e{Lmx6R>iuC)}LrJ8!vB6s%20*48{Wz z)|Klc2t*2Gjar6C>EPvz?fEfI6$}45dkuM&PJ|?&i`txveGA<*7UPo8= z@eezVK)R=Yv%!**q}bLuS+AUojlsdYs;!>x;J>BYxRsT=i#s z2%OEfypeKiZu$7nEHWu;W(i!Y_zY|sbmYFDw7?Kxc5S}EUEcE+V#u~cUsF;=WT|ZL zX|2gb@2XtnbllkrPpXyQNcL#wTZAV()q~R0UA(p=9@w_V#m^ATI%$u1me7AngppBR z^QXrQRhmlV4RYa!vR$iJ7FfL7bd& zb8@~izau|gCX(@hIDNQSUE~^k=z{7i@Yr7c6m6es>S{x0bLwKq)RS7E<(uE#)B&~; zf?c#Tw9TY}9qVtf-#bdnWi+q>75u{opOF;CON=G(&F8LnCNGS#%#HoOt{k2Tc8EH5M-s~ZNJOuN32QOcZ=E3S(_zPd#a?`Y$WMKEQm z^ME);{@~NTfAO#{n64w+X|GbIKZCvg*+S}m+ya+whGk@RQ+goRXXRk`g0ca- zB(j{7P?wUe$3r|R8xvmbrI@sqJ}S_-*)b_(y$npqrZRAu`ojOkaMySxE(D1$7RX$K z)dJ^JNa%Z051zcZTk|IRX#4UY*n$Cituxckb(&L@khy>3!o9F-3h z#pz|skAb^Wbf-ZoJf!|yG`eC(w4{Z2@SMsprWR)0ROOU}3Yh5~FnZkwjek<-(xCD8XWTxiV$AWG8h~D}Rjf z5v)noZLfQE#1($L9ia5FvXp zx?Q@3T43(5!IF=<>>i_c+>}%qiAf>HLG)%`-!JoX!OBm0hnX=^H32)=*n&<@nwL9x z;z5O*gJ)?lV#v$zRs98#ecVOkowGpArgLtoY(HiDgGoKUQtnE88wOFaE0sYWvLN0r z%p~3IRLUz%dCe80Y$;(bWcnIH_UgT>f(~iO_x~9rZFN$X^%Bo~dzdG9#l>ksiQK$S zjg1Cp;~T3N>ZEp?$)J>gs(4MqBHawb(ltK<0s;Ufw7s&NSH@J=VSZ0BGuB=tSwf{u zm-4PagibGOc@-x!)6#k`&kktJ?M+oAf>O|+F6q0g4md5zFpYFQZ*%q_#zKzG^3655 zHanc#w=!hG7sSF~ckrqVBvy-Kt`YbVUMqna-KmPtV2i`4W_k2PdGNV7Kp8Cp_7pkQ z(mrKoJ_h*CJ2aH<^!z-}pqx(Jg#jQs;(V4mI%Uhxq%>n zmm>5O1h*-de?;CdIs1rgbqg{>N@BKWW5V=6V4#p^p9%5#hQ1i$eo0t8Qn< zd3}8iV4Ic5b$$IxrFrvIl{GK)uj1Tz?%*ROqr|Z#3Cnt^~sd zT3hdMgL2U;+<#@eX7{LS5Dj&ohokY5TqqPf=yv%kUG{y843sGwlPr9!^pG+WN@em?m%;|*Ix_GLKh zq72>Lxq+F*8WZDJGz%{1mEecR_vAROe3uRpg5KtOhYYJf(;>t^5eCLmu!)34l%Y_s z25;qsXJts&*Mbk4!8m9NoBxjjo4k7~2%ru%h!VE90cX(yD>sXFG?r&x3#h4ay z{IQ%IfmaPcw-g=3L4H^vDp?HqP)8n-pXoi&c#JIDT*FSa|LH!2H&coN056zDR%`_P zerNWEEzV7nCP9ynBw+CI?OH~7yPawA=Yb4bUet@-8z-J z_2cn_$0jcPV@zg44SnGl-tAI`+8lr?jNUN4JMF9;d& zg|(0u!p@>UXHJ$?JPaL<2PVh5#$zoJV;+0EG(sBnS8|;qhFZ8J?EPT9tS3(5?IyUz+Oz= zk)Gir?P=9K$AAkC`Y|$~v4@)cD?GTvCdXH1X0TfMwOv55hXS1_h_x_(?fInMQ7}?T z%fiWt7tj%P-j8sYYf8_8TSl#ZqW3w~s=OaD{sLNL1!Ks--O2xzPa0HNb=;z+rvAqG z#fp`2V|yXXsQN9DNyT6Oo<7gT!GZsKZS8AnDlMQ%q%U_n)uD~f9U(+93=+S#nC1O< zT2GRvNvuw`F;25}kdhMapo7c>ku*3A*1wHuK3j}nE-5Mb2aS#ftcNr}!Dn2Ve*d0z zPr1y5$$v{wBTKRi5TK_x*I+czl0mAfC~qV6MBDUyT+bMEjq8ZEbCUYbSt`IPX1t z*bS_t^eU$Hdfn33S7N8-fD&lg0AS?h<@KV`!UJ%*U|B$!NuSJls%45nH07=yG^B{Q zxVZ3|Hzm)_%}H9~A$jjJG7i)@jGm6dufqUI78@H2pp{VYb-3XM-O`hXhet(4 z9RSe{C>F~HWA!?pcN%)Hs#7CV^r&7?M} z{rU(|1bxyI%lK#9&~l~iVq3nj>B#)!>8>?X@TL0}4(EF~qAcODOainxVisZHBw$ra znxsT%YLLEaK!Eh#-X7l6>@3O!(?sly`5>S>+nd1lSWUN7Zw@%2ewaj(K>HqEB?f zcF$esrLRwWt^4+zwd`4(xesDjS;{?xm;>h~j0qN1X{#>UzKJNla%UN$AI zYR=>jc}otifzJQ8?E}ir{a{rckLly@&q|y9eSP>=fTcjOy0W^Ok@$0T6gAiq7Do8j z=aKgH$XYMf$a=dmR@%_Ku)%9=WHgoY&C2*mDgEO1_Tc^s`mYzH9LJNxQ{;M5J4l@%EmCvJXwe6rk7fE~01NU--J8Jv@*%^g*|Xm)mXz#*dq94xib zp)9E$KrW_Bf_Z?1w`lcq-(Ln1Q_$OZU%uXqd`zS61_pD8h$Lg0eRR#8udPyOXlQzo zF(wt=9UY(HLFbV`)WjQG05J)8Znm9YC?4G*{+k6F8g}Dl`g;1J*GVPzL)kF zZj49UXZwDsb)5WL5%c~#GJsmn-~*5hz;N5HC>m*?NSvmT;edg-^!xYl+CFpO;XS~I z`S2VwKc9V@IUpXeGYIM{55!#O)s&Qofm8XNpv+{Ao2dmvv5?>4dsIEBL71^jE@kc9 zS_1Iy9$c07vvrr;B`l0Ape79e&jYw5qCLbmGNRpX{Y9t)0FfqAVU(_bJupGp!ReL8 zmcmkVKQBFzg - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHitachiAc Member List
-
-
- -

This is the complete list of members for IRHitachiAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRHitachiAcprivate
_irsendIRHitachiAcprivate
_previoustempIRHitachiAcprivate
begin(void)IRHitachiAc
calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)IRHitachiAcstatic
calibrate(void)IRHitachiAcinline
checksum(const uint16_t length=kHitachiAcStateLength)IRHitachiAcprivate
convertFan(const stdAc::fanspeed_t speed)IRHitachiAcstatic
convertMode(const stdAc::opmode_t mode)IRHitachiAcstatic
getFan(void) constIRHitachiAc
getMode(void) constIRHitachiAc
getPower(void) constIRHitachiAc
getRaw(void)IRHitachiAc
getSwingHorizontal(void) constIRHitachiAc
getSwingVertical(void) constIRHitachiAc
getTemp(void) constIRHitachiAc
IRHitachiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAcexplicit
off(void)IRHitachiAc
on(void)IRHitachiAc
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc
setFan(const uint8_t speed)IRHitachiAc
setMode(const uint8_t mode)IRHitachiAc
setPower(const bool on)IRHitachiAc
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAcStateLength)IRHitachiAc
setSwingHorizontal(const bool on)IRHitachiAc
setSwingVertical(const bool on)IRHitachiAc
setTemp(const uint8_t temp)IRHitachiAc
stateReset(void)IRHitachiAc
toCommon(void) constIRHitachiAc
toCommonFanSpeed(const uint8_t speed)IRHitachiAcstatic
toCommonMode(const uint8_t mode)IRHitachiAcstatic
toString(void) constIRHitachiAc
validChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)IRHitachiAcstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc.html deleted file mode 100644 index dee8e972f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc.html +++ /dev/null @@ -1,1121 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHitachiAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Hitachi 224-bit A/C messages. - More...

- -

#include <ir_Hitachi.h>

-
-Collaboration diagram for IRHitachiAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHitachiAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const bool on)
 Set the Vertical Swing setting of the A/C. More...
 
bool getSwingVertical (void) const
 Get the Vertical Swing setting of the A/C. More...
 
void setSwingHorizontal (const bool on)
 Set the Horizontal Swing setting of the A/C. More...
 
bool getSwingHorizontal (void) const
 Get the Horizontal Swing setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAcStateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
 Calculate the checksum for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (const uint16_t length=kHitachiAcStateLength)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
HitachiProtocol _
 
uint8_t _previoustemp
 
-

Detailed Description

-

Class for handling detailed Hitachi 224-bit A/C messages.

-
See also
https://github.com/ToniA/arduino-heatpumpir/blob/master/HitachiHeatpumpIR.cpp
-

Constructor & Destructor Documentation

- -

◆ IRHitachiAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHitachiAc::IRHitachiAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRHitachiAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t IRHitachiAc::calcChecksum (const uint8_t state[],
const uint16_t length = kHitachiAcStateLength 
)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - - -
[in]stateThe value to calc the checksum of.
[in]lengthThe size/length of the state.
-
-
-
Returns
The calculated checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRHitachiAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc::checksum (const uint16_t length = kHitachiAcStateLength)
-
-private
-
- -

Calculate and set the checksum values for the internal state.

-
Parameters
- - -
[in]lengthThe size/length of the state.
-
-
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRHitachiAc::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRHitachiAc::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
bool IRHitachiAc::getSwingHorizontal (void ) const
-
- -

Get the Horizontal Swing setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
bool IRHitachiAc::getSwingVertical (void ) const
-
- -

Get the Vertical Swing setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRHitachiAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRHitachiAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRHitachiAc::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRHitachiAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRHitachiAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRHitachiAc::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAcStateLength 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRHitachiAc::setSwingHorizontal (const bool on)
-
- -

Set the Horizontal Swing setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRHitachiAc::setSwingVertical (const bool on)
-
- -

Set the Vertical Swing setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRHitachiAc::setTemp (const uint8_t celsius)
-
- -

Set the temperature.

-
Parameters
- - -
[in]celsiusThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRHitachiAc::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRHitachiAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRHitachiAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRHitachiAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRHitachiAc::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRHitachiAc::validChecksum (const uint8_t state[],
const uint16_t length = kHitachiAcStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
HitachiProtocol IRHitachiAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRHitachiAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _previoustemp

- -
-
- - - - - -
- - - - -
uint8_t IRHitachiAc::_previoustemp
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1-members.html deleted file mode 100644 index a0ce7ebfe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1-members.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHitachiAc1 Member List
-
-
- -

This is the complete list of members for IRHitachiAc1, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRHitachiAc1private
_irsendIRHitachiAc1private
begin(void)IRHitachiAc1
calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1static
calibrate(void)IRHitachiAc1inline
checksum(const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1private
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc1static
convertMode(const stdAc::opmode_t mode)IRHitachiAc1static
getFan(void) constIRHitachiAc1
getMode(void) constIRHitachiAc1
getModel(void) constIRHitachiAc1
getOffTimer(void) constIRHitachiAc1
getOnTimer(void) constIRHitachiAc1
getPower(void) constIRHitachiAc1
getPowerToggle(void) constIRHitachiAc1
getRaw(void)IRHitachiAc1
getSleep(void) constIRHitachiAc1
getSwingH(void) constIRHitachiAc1
getSwingToggle(void) constIRHitachiAc1
getSwingV(void) constIRHitachiAc1
getTemp(void) constIRHitachiAc1
IRHitachiAc1(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc1explicit
off(void)IRHitachiAc1
on(void)IRHitachiAc1
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc1
setFan(const uint8_t speed, const bool force=false)IRHitachiAc1
setMode(const uint8_t mode)IRHitachiAc1
setModel(const hitachi_ac1_remote_model_t model)IRHitachiAc1
setOffTimer(const uint16_t mins)IRHitachiAc1
setOnTimer(const uint16_t mins)IRHitachiAc1
setPower(const bool on)IRHitachiAc1
setPowerToggle(const bool on)IRHitachiAc1
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1
setSleep(const uint8_t mode)IRHitachiAc1
setSwingH(const bool on)IRHitachiAc1
setSwingToggle(const bool toggle)IRHitachiAc1
setSwingV(const bool on)IRHitachiAc1
setTemp(const uint8_t temp)IRHitachiAc1
stateReset(void)IRHitachiAc1
toCommon(void) constIRHitachiAc1
toCommonFanSpeed(const uint8_t speed)IRHitachiAc1static
toCommonMode(const uint8_t mode)IRHitachiAc1static
toString(void) constIRHitachiAc1
validChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)IRHitachiAc1static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1.html deleted file mode 100644 index 7214ee8db..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1.html +++ /dev/null @@ -1,1428 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHitachiAc1 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Hitachi 104-bit A/C messages. - More...

- -

#include <ir_Hitachi.h>

-
-Collaboration diagram for IRHitachiAc1:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHitachiAc1 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setModel (const hitachi_ac1_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
hitachi_ac1_remote_model_t getModel (void) const
 Get/Detect the model of the A/C. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setPowerToggle (const bool on)
 Change the power toggle setting. More...
 
bool getPowerToggle (void) const
 Get the value of the current power toggle setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed, const bool force=false)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingToggle (const bool toggle)
 Set the Swing toggle setting of the A/C. More...
 
bool getSwingToggle (void) const
 Get the Swing Toggle setting of the A/C. More...
 
void setSwingV (const bool on)
 Set the Vertical Swing setting of the A/C. More...
 
bool getSwingV (void) const
 Get the Vertical Swing setting of the A/C. More...
 
void setSwingH (const bool on)
 Set the Horizontal Swing setting of the A/C. More...
 
bool getSwingH (void) const
 Get the Horizontal Swing setting of the A/C. More...
 
void setSleep (const uint8_t mode)
 Set the Sleep setting of the A/C. More...
 
uint8_t getSleep (void) const
 Get the Sleep setting of the A/C. More...
 
void setOnTimer (const uint16_t mins)
 Set the On Timer time. More...
 
uint16_t getOnTimer (void) const
 Get the On Timer vtime of the A/C. More...
 
void setOffTimer (const uint16_t mins)
 Set the Off Timer time. More...
 
uint16_t getOffTimer (void) const
 Get the Off Timer vtime of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc1StateLength)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
 Calculate the checksum for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (const uint16_t length=kHitachiAc1StateLength)
 Calculate and set the checksum values for the internal state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
Hitachi1Protocol _
 
-

Detailed Description

-

Class for handling detailed Hitachi 104-bit A/C messages.

-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1056
-

Constructor & Destructor Documentation

- -

◆ IRHitachiAc1()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHitachiAc1::IRHitachiAc1 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRHitachiAc1::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t IRHitachiAc1::calcChecksum (const uint8_t state[],
const uint16_t length = kHitachiAc1StateLength 
)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - - -
[in]stateThe value to calc the checksum of.
[in]lengthThe size/length of the state.
-
-
-
Returns
The calculated checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRHitachiAc1::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc1::checksum (const uint16_t length = kHitachiAc1StateLength)
-
-private
-
- -

Calculate and set the checksum values for the internal state.

-
Parameters
- - -
[in]lengthThe size/length of the state.
-
-
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc1::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc1::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc1::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc1::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getModel()

- -
-
- - - - - - - - -
hitachi_ac1_remote_model_t IRHitachiAc1::getModel (void ) const
-
- -

Get/Detect the model of the A/C.

-
Returns
The enum of the compatible model.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IRHitachiAc1::getOffTimer (void ) const
-
- -

Get the Off Timer vtime of the A/C.

-
Returns
Nr of minutes the timer is set to.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRHitachiAc1::getOnTimer (void ) const
-
- -

Get the On Timer vtime of the A/C.

-
Returns
Nr of minutes the timer is set to.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRHitachiAc1::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPowerToggle()

- -
-
- - - - - - - - -
bool IRHitachiAc1::getPowerToggle (void ) const
-
- -

Get the value of the current power toggle setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRHitachiAc1::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc1::getSleep (void ) const
-
- -

Get the Sleep setting of the A/C.

-
Returns
The currently configured sleep mode.
-
Note
Sleep modes only available in Auto & Cool modes, otherwise it's off.
- -
-
- -

◆ getSwingH()

- -
-
- - - - - - - - -
bool IRHitachiAc1::getSwingH (void ) const
-
- -

Get the Horizontal Swing setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingToggle()

- -
-
- - - - - - - - -
bool IRHitachiAc1::getSwingToggle (void ) const
-
- -

Get the Swing Toggle setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
bool IRHitachiAc1::getSwingV (void ) const
-
- -

Get the Vertical Swing setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc1::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRHitachiAc1::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRHitachiAc1::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRHitachiAc1::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc1::setFan (const uint8_t speed,
const bool force = false 
)
-
- -

Set the speed of the fan.

-
Parameters
- - - -
[in]speedThe desired setting.
[in]forceDeprecated
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRHitachiAc1::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setModel()

- -
-
- - - - - - - - -
void IRHitachiAc1::setModel (const hitachi_ac1_remote_model_t model)
-
- -

Set the model of the A/C to emulate.

-
Parameters
- - -
[in]modelThe enum of the appropriate model.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRHitachiAc1::setOffTimer (const uint16_t mins)
-
- -

Set the Off Timer time.

-
Parameters
- - -
[in]minsThe time expressed in total number of minutes.
-
-
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRHitachiAc1::setOnTimer (const uint16_t mins)
-
- -

Set the On Timer time.

-
Parameters
- - -
[in]minsThe time expressed in total number of minutes.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRHitachiAc1::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPowerToggle()

- -
-
- - - - - - - - -
void IRHitachiAc1::setPowerToggle (const bool on)
-
- -

Change the power toggle setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc1::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc1StateLength 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRHitachiAc1::setSleep (const uint8_t mode)
-
- -

Set the Sleep setting of the A/C.

-
Parameters
- - -
[in]modeThe mode of sleep to set the A/C to.
-
-
-
Note
Sleep modes only available in Auto & Cool modes, otherwise it's off.
- -
-
- -

◆ setSwingH()

- -
-
- - - - - - - - -
void IRHitachiAc1::setSwingH (const bool on)
-
- -

Set the Horizontal Swing setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingToggle()

- -
-
- - - - - - - - -
void IRHitachiAc1::setSwingToggle (const bool toggle)
-
- -

Set the Swing toggle setting of the A/C.

-
Parameters
- - -
[in]toggletrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRHitachiAc1::setSwingV (const bool on)
-
- -

Set the Vertical Swing setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRHitachiAc1::setTemp (const uint8_t celsius)
-
- -

Set the temperature.

-
Parameters
- - -
[in]celsiusThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRHitachiAc1::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRHitachiAc1::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRHitachiAc1::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRHitachiAc1::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRHitachiAc1::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRHitachiAc1::validChecksum (const uint8_t state[],
const uint16_t length = kHitachiAc1StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Hitachi1Protocol IRHitachiAc1::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRHitachiAc1::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.map deleted file mode 100644 index 79c719e09..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 deleted file mode 100644 index 850187d58..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -48a0ef080d3cabb2ff9010e6dd6e0f55 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc1__coll__graph.png deleted file mode 100644 index 575c70740c3148975ced83eda3765cc48cc9a27b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5926 zcmb7IbyQSu*ByT#N=OJ&5)uPQ=THLD5)L2@LkUXC5RwCo{s57Z7x6VuG9^dy{-y8pZYu24R>#lq6Jm)#*?6da{)`TnHA)qCIKp=Nio+vy6=T&f^Z{vY) zik4AgaKd}8rmO(D{_{z1$iYA$l+!8-vO1p0+p}H<6xOND`$&-o%mcDoj~){TzZD3g zMfC4Oto5|`{i!ToLOT+i$5~jFX0_Nqzz3+Ui6X>B3xbux339Qwsg+aA-Ln=`YmsY8p6yhr>s`&zUOQ zk`NbHXank`+E6o&8ww4?uxlh$egGGuQ&L_HNw9X04Y=r8_ZqTDOV4HBF!ZlBDrh+9 z;_68juXwr<&8;Edoj9`^!%7InXh(C$sKZstHR+kfe;piXQUu-?bxe?qakm^um))AF z8J@8)h*@Y0s(8^&nblh&&uXn~wRN+7Y6D3U7M)Da4qyHmZ&rL{s6|1cn4uQW`{-yy z+vj{erz1DN4YgNSEZ}qMq*r2Efyx*GPr^y-|77m>?LUR~`* za(AYwM@&*u$YuFS zkDs3(owSbueHs?42JSE_io1b>SBjjM))pOJoM|#V+p6ey*_jbfMPGSQC|aEEEkFVS z0@67MXv6Us85uLPvTCjgTBkoF$?x3@jEEpHsdIlZSML=Q8=JSpXVy6L138e?YgDAy zjYT%9sHg;cJNbdVFGSQtJ1=!CY;E`sxvg z#mdTxl$7+bi%YpgW7&K&h4j^_J{kbFp4>)PkeFClDJyw#r{P)IXTHJC1nC(mXR@|M<1?f z-FV;H+WNA}{`_$LIXHSbhY@eyhll&FtutOY?xHW(HPFv;?!z1sChEN^&cz=*c)wie!>c5V9to_xsHQp`oFHe5tD|pvQ&5U^9)r z*q$DBw<}O08>m~iZb3LXIluSybqo%cjd_}xnQ4m*bK5me|2AuTcgOzNXK`uC3-qb8 zi;J8VMP_E^$S)ruAtA8cwug20Yoa!JPqDBJ4g%lv!-bJNZ6A;=Ps2A}c~V|3iU>_6u5jSG5g$9t?8qcx}+1$GF-F#43Hh#^UB_W5W?dOuu-z zK8$aOnY{euI!tU=J&;Sz-AHa0exBQH-+O+7um0v6ev;l%7$V+vV$m)fhV ztK?*4E%~|y-+O!8&G|{m$>rVLL?Cl>b8AQ5#fX}rmjYuK!w-3Qpa2I!>l-cIQ`DM2 z*`AKy*sv=$sry8%rlFz#O?DP0s{5%7CZq1#F~;^y+ysFzD7V75A20s7Gh0U|?hRXtHKaI(T0la!?De2@ZB-LVM@COeN3(E4Ny430yl zqV`&@4CiyDc8CDZ*wcJ_qP1-@RRG2A4LL7 zi;Gi&A6}Aq2(QVxRD7WS3 zR*TSreX(lU;W*=^M{xV43dAo43o;ysi8*@ALS>lIJ5TVNhzAz@3S*ZhIa~PSGOcp z2_Newrm~c5oX(GzXqhm1*l~9r2|<0XW;9~vzj!RxY+9Q1&_%hGO)YPo#jv=WIOH1c z=0GXPM7L1~d~qVCns(%Q!HRTDm#**r|dUh%?H)xKdJp@haqqN6+dO9 z-%ow`mjx+eB3f-R^yJtzyV^4MuFshf8x?GIc5~&6hQ8S?ig5h8v1z6PI6NZCXk)YQ zE*{5eaoDNtJjU<)YY%12Ro+2$YBpMfWofThBL2Re!#(duyeFdA?tDx|XaW7~`DhcP zWiF+TKJ}9;OSVpQPj)_HzGKjh4k{k&1KVULXyj_soFC_Iu4+>6TPfdI#@!?E!3{UL z#HuYaqKoOS5*rp|p1rQAe`>jTn}9cVU*`Il99rWcpflc-h8!S7Tv}Ocx*Gbr9MhlO zewW`Ni4Ktcar}j)&(|s_K;Q*kgJSE9@J`%Cg>toY$X~Mzv7M6$y|iRU4fhO8*3*V1 z;c9~F6p=8~h0fC>>DMmBXobENtp$Crqa z%txh89JDuc=28->SE)`lwjDpMO?_6bmk`=dQBFLRMOXT6Yi)FDC}#aQ4w#vDz%S5% zfAM(o@zb>4AO{C+;GBk}mS2`C!>$9)j(kcY-%FXev(19?523 z?)6r8rBqY;cslBY$=z4ISlqbPu0+*K(@^%_2S<0ech{BIcxFw`;VO)WIsK&8LJDJ7 zm!+R0G55>yr+=E|=))v`!Wi1BUWWA4R)vbNYa*Zj1vce_Mv}dq?5Ny&2o;fZILWmV4T#k4T*E_d?rhY_irKW0iLLo{g-qu5bYd{_chUp7JZXCG zUVQV-bSD0(pcz-F50$a`juZD#&53IsNB+yhu14^7`Sra{`~l0yRCxW{?dwm)XVeR9 zjxHEx3h9MyNV)Wjt!BPB1Kte4ong-J_bVSCAE(!^tq#`)lV#ARDUFqtF}b-MAU-E& zXC_wGfCBxJv7~wXk_IJBO;V#GN*Ng$Vn*r05Bz)T4%H3|?C!3Ogou#tyy)2(XYiPXUMcA(5D7|mNiipDmf0@^>mq)*v-{L5i zm^OUfU;3u#=2rE^=d8T6qJrEEeOZ;8n@h^BkxHQ!$E}q^LP$v7($XTAGaUSfC2bUx zgtYkIB5W`%>FXaJ)=rjiQw8iecx}yQVP%Dl2+yBX?mb}ap|-=Hf-f$7qEb_N-x1L; zL$nMGCJNnk^l26TEM~D@hl!}@Ts50AvePSVdNOwLVg->=;y4>^VCJHvtXz=hCXoVm zhk}aFv``!N|0Rrrl+e}06PK^wvUuMw7E1PVveN|36gEUupx8lfM%Pl7jk>_%eRr3Z z+5n|6tbP4Z{vDA;U$VFl&>av!g&{w7c0OcsaD@CF9)9ODa-K~{NINA6i^ZPLwJglJ z#oW7h&&t|*X>HBGzPF}BEBiJnT_UCU=8d*5B6Gcb>@?vB*QAyx z7G;C7=Qr2a*8y|S7~jmx&22X4|FOQ_8S_v(K?(%};vptJ-gTvi29V_3!a@g^xyHuE zFj|q2Ktif#1_tlpIhJP!KVJ=Sc1~EiB(+SGSvrFX6BA1SE4m9f8UjHFho3mUuk!uv z{zqgG6L<9XhAW0r3ZRZ1wze4^e+j~1aYIATe0+U@wqOzz9E$0UQqOKn3wWRsr&=t| z*xHa|-Fa>CY&yDgGC;C@l$frL+rScMY<9{o>3+d{2(^?cm%-csleK#=b9z-`tzz{OW+L(FoHy zTYl`eYb;;&V;B9sxldN!L*{G(SB)9-%YuX7J(lWRGIMtJ_i>Np_(RnK^9$_dvgJ8< z*o6qgv(@72Fq0+4sTM3k{IH^?O(4YHjLLO?*hlFygU{r*8_Yv&2*=6==Kt+B56;WO zADc(x9K8+pJ5EL)xvzQ6ifTjVg^C|h4qXUEu?}N$c14Cu<7dh6-gfkPmvq5&2(KC+ z;RNlthaosi1}k+0#j%}Zrfq!jD40~n%>s`6R!!*XC?2DOWOq2b8kFSYljy+cYuJA? zB$m7{hKlXIcCJB8RV;$y;mdo^>CK872`I-J+%FyQM?HvEh~@2WBql2fy4aezz-L#$ z2D%1ic3oG;$cGM{tyhdmy^|Fr0XGaS?eh|OH&Q(m04RjKY(N?pET5Zv;2vC%*6Cgn zLM2Gj<=tF%hO-E+-3)fst}%Z3z#)ebmeTX9Y1c6^6{kNZvrISPV9@d)z?}<<7GW8h z;J{TvX(yrLD;SrPpm-LftR>&G%fBSy3mmAD+q0p?SzO&eTYtSv!n@tWzWQ1PJC1%X z4;$}~*(*UFVInk2T@Gf9$oEhkvG-+Sv&w9zyR?nNF6nyc-&x`Qb1eLs5Sss*5HG44s(?aF7ISW$u@H`cXxaJ?P2T=IKEh>gNk4m& zMft>eRIrpnX{Tb}pZDc?3f;J%iw1>_evEq|Po zKX=o1c6P21%i1ZJo2S>vmm0aG{h#OZzyDu(*LAh;=l3X7gC*@r^C@8YhpVnXfYI>x9x9M6MI6-(&?{lf=(MagHj9E`r+Oo2< z|2kVu6Y@H+0{UE8N$Fipn;-!b?ky4qtD$TaI-sQuUjQrS2^{`%w$_a;1a7Aqq|rxv ze0&@b7zlJCz?jLOyYqz?ztXPN?d&*_jc05?9Q35gFuwWO9Zyb8{RB)LGBUEQi8BA+ zd<2|)e5)xQb4<+4e-8|3!W?J51EXSO-_X$TkK6zbn2`M#cVDWMG4fIbo+ce$Q6W@P ze?Z{n<>hv@F07koWvYk1`*)d+o?diJOh6{b>DgJ8ooRty5%2(lN=y0K;K{kf=%sK` z2tPFuqQ)gq#C~ibM}yI=0@xl^F)=ZvewW?|6BBXwEo$IGnSXsx2D#WqqAh!qM1b5T zWn}E1sM0VjOWz`d{4P8R2nfWS7jY#$cD~Ne z(!Ys}j5PZBNh9q;Q>!`i6I+wTT~9A} z(Gd*|m-3_RiTWT1U?`S3Eyy{})+(y26Q%ha;DgjFW(|%cuK0;y^Lw4QCIsBKrxf+{ z;%d)MzmjV}BIDzOz^XLTr0>LeI6G_2Pft(doQ$0wsi>-Erl-F#yFMSUddJSrF66xU zH3)>rSJQt+!pqCcZBiSPoJ>c|@MvP=Y&LBMB6EEqRMK=M5fv4+HT^k)ujwNCCLv|| z_`IZZ18~x)iSU5IF}G10ND9ii?A0_Z8iN@f2k+MhGa}qH&5Bk~e0OPiS;5m&3{+`) zZLM3s)cRP_eTfwK)5fkY)c{g435n;{*562EE*|^%)JrsAvG-Y&!pwn*foSlKEiV@Y zZxRP(Td^tadoBzyH8rhzM?xn?ngS1k=Lp&PM%#X0_GtzdMqXjzawuP;&8QEMwPJ1? z6y$8`=Ah9IH%3Ffey!}EZqm<} z*5u?Z&Mj(~gF(syCiM+v~|W7||yRb>V(20R3Fe(Dj+R3L46PGQ+`rBnBP{wZ^L z`DiMfKt~*S_fbaM|0nwVn+^LfNc!i+(X>NL}d<8UE1`mNqm6PvI(d oyUWu5Wgg#L#3rjoXTwgeRlAi9ce-3Wf$ - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHitachiAc3 Member List
-
-
- -

This is the complete list of members for IRHitachiAc3, including all inherited members.

- - - - - - - - - - - - - -
_irsendIRHitachiAc3private
begin(void)IRHitachiAc3
calibrate(void)IRHitachiAc3inline
getMode(void)IRHitachiAc3
getRaw(void)IRHitachiAc3
hasInvertedStates(const uint8_t state[], const uint16_t length)IRHitachiAc3static
IRHitachiAc3(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc3explicit
remote_stateIRHitachiAc3private
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc3
setInvertedStates(const uint16_t length=kHitachiAc3StateLength)IRHitachiAc3private
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc3StateLength)IRHitachiAc3
stateReset(void)IRHitachiAc3
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3.html deleted file mode 100644 index c19681754..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHitachiAc3 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages. - More...

- -

#include <ir_Hitachi.h>

-
-Collaboration diagram for IRHitachiAc3:
-
-
Collaboration graph
- - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHitachiAc3 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
uint8_t getMode (void)
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc3StateLength)
 Set the internal state from a valid code for this protocol. More...
 
- - - - -

-Static Public Member Functions

static bool hasInvertedStates (const uint8_t state[], const uint16_t length)
 Check if every second byte of the state, after the fixed header is inverted to the previous byte. More...
 
- - - - -

-Private Member Functions

void setInvertedStates (const uint16_t length=kHitachiAc3StateLength)
 Invert every second byte of the internal state, after the fixed header. More...
 
- - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
uint8_t remote_state [kHitachiAc3StateLength]
 The state in native code. More...
 
-

Detailed Description

-

Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRHitachiAc3()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHitachiAc3::IRHitachiAc3 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRHitachiAc3::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRHitachiAc3::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc3::getMode (void )
-
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRHitachiAc3::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ hasInvertedStates()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRHitachiAc3::hasInvertedStates (const uint8_t state[],
const uint16_t length 
)
-
-static
-
- -

Check if every second byte of the state, after the fixed header is inverted to the previous byte.

-
Parameters
- - - -
[in]stateThe state array to be checked.
[in]lengthThe size of the state array.
-
-
-
Note
This is this protocols integrity check.
- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRHitachiAc3::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
-
- -
-
- -

◆ setInvertedStates()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc3::setInvertedStates (const uint16_t length = kHitachiAc3StateLength)
-
-private
-
- -

Invert every second byte of the internal state, after the fixed header.

-
Parameters
- - -
[in]lengthThe size of the state array.
-
-
-
Note
This is this protocols integrity check.
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc3::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc3StateLength 
)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRHitachiAc3::stateReset (void )
-
- -

Reset the internal state to a fixed known good state.

-
Note
Reset to auto fan, cooling, 23° Celsius
- -
-
-

Member Data Documentation

- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRHitachiAc3::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ remote_state

- -
-
- - - - - -
- - - - -
uint8_t IRHitachiAc3::remote_state[kHitachiAc3StateLength]
-
-private
-
- -

The state in native code.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344-members.html deleted file mode 100644 index 41d360da2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344-members.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHitachiAc344 Member List
-
-
- -

This is the complete list of members for IRHitachiAc344, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRHitachiAc424private
_irsendIRHitachiAc424private
_previoustempIRHitachiAc424private
_toString(void) constIRHitachiAc424private
begin(void)IRHitachiAc424
calibrate(void)IRHitachiAc424inline
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc424static
convertMode(const stdAc::opmode_t mode)IRHitachiAc424static
convertSwingH(const stdAc::swingh_t position)IRHitachiAc344static
getButton(void) constIRHitachiAc424
getFan(void) constIRHitachiAc424
getMode(void) constIRHitachiAc424
getPower(void) constIRHitachiAc424
getRaw(void)IRHitachiAc424
getSwingH(void) constIRHitachiAc344
getSwingV(void) constIRHitachiAc344
getSwingVToggle(void) constIRHitachiAc424
getTemp(void) constIRHitachiAc424
IRHitachiAc344(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc344explicit
IRHitachiAc424(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc424explicit
off(void)IRHitachiAc424
on(void)IRHitachiAc424
send(const uint16_t repeat=kHitachiAcDefaultRepeat) overrideIRHitachiAc344virtual
setButton(const uint8_t button)IRHitachiAc424
setFan(const uint8_t speed)IRHitachiAc424
setInvertedStates(void)IRHitachiAc424private
setMode(const uint8_t mode)IRHitachiAc424
setPower(const bool on)IRHitachiAc424
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc344StateLength) overrideIRHitachiAc344virtual
setSwingH(const uint8_t position)IRHitachiAc344
setSwingV(const bool on)IRHitachiAc344
setSwingVToggle(const bool on)IRHitachiAc424
setTemp(const uint8_t temp, bool setPrevious=true)IRHitachiAc424
stateReset(void) overrideIRHitachiAc344virtual
toCommon(void) const overrideIRHitachiAc344virtual
toCommonFanSpeed(const uint8_t speed)IRHitachiAc424static
toCommonMode(const uint8_t mode)IRHitachiAc424static
toCommonSwingH(const uint8_t pos)IRHitachiAc344static
toString(void) const overrideIRHitachiAc344virtual
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344.html deleted file mode 100644 index 4016c2e31..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344.html +++ /dev/null @@ -1,615 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHitachiAc344 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
- -
-
IRHitachiAc344 Class Reference
-
-
- -

Class for handling detailed Hitachi 344-bit A/C messages. - More...

- -

#include <ir_Hitachi.h>

-
-Inheritance diagram for IRHitachiAc344:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for IRHitachiAc344:
-
-
Collaboration graph
- - - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHitachiAc344 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor for handling detailed Hitachi_AC344 43 byte A/C messages. More...
 
void stateReset (void) override
 Reset the internal state to auto fan, cooling, 23° Celsius. More...
 
void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc344StateLength) override
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const override
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
void send (const uint16_t repeat=kHitachiAcDefaultRepeat) override
 Create and send the IR message to the A/C. More...
 
void setSwingV (const bool on)
 Control the vertical swing setting. More...
 
bool getSwingV (void) const
 Get the current vertical swing setting. More...
 
void setSwingH (const uint8_t position)
 Control the horizontal swing setting. More...
 
uint8_t getSwingH (void) const
 Get the current horizontal swing setting. More...
 
String toString (void) const override
 Convert the internal state into a human readable string. More...
 
- Public Member Functions inherited from IRHitachiAc424
 IRHitachiAc424 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp, bool setPrevious=true)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
uint8_t getButton (void) const
 Get the Button/Command setting of the A/C. More...
 
void setButton (const uint8_t button)
 Set the Button/Command pressed setting of the A/C. More...
 
void setSwingVToggle (const bool on)
 Set the Vertical Swing toggle setting of the A/C. More...
 
bool getSwingVToggle (void) const
 Get the Vertical Swing toggle setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
- - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a standard A/C horizontal swing into its native setting. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- Static Public Member Functions inherited from IRHitachiAc424
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
-

Detailed Description

-

Class for handling detailed Hitachi 344-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRHitachiAc344()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHitachiAc344::IRHitachiAc344 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor for handling detailed Hitachi_AC344 43 byte A/C messages.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ convertSwingH()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc344::convertSwingH (const stdAc::swingh_t position)
-
-static
-
- -

Convert a standard A/C horizontal swing into its native setting.

-
Parameters
- - -
[in]positionA stdAc::swingh_t position to convert.
-
-
-
Returns
The equivilent native horizontal swing position.
- -
-
- -

◆ getSwingH()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc344::getSwingH (void ) const
-
- -

Get the current horizontal swing setting.

-
Returns
The current position horizontal swing is set to.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
bool IRHitachiAc344::getSwingV (void ) const
-
- -

Get the current vertical swing setting.

-
Returns
True, if the setting is on. False, it is off.
- -
-
- -

◆ send()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc344::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
-
-overridevirtual
-
- -

Create and send the IR message to the A/C.

-
Parameters
- - -
[in]repeatNr. of times to repeat the message.
-
-
- -

Reimplemented from IRHitachiAc424.

- -
-
- -

◆ setRaw()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc344::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc344StateLength 
)
-
-overridevirtual
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthSize (in bytes) of the code for this protocol.
-
-
- -

Reimplemented from IRHitachiAc424.

- -
-
- -

◆ setSwingH()

- -
-
- - - - - - - - -
void IRHitachiAc344::setSwingH (const uint8_t position)
-
- -

Control the horizontal swing setting.

-
Parameters
- - -
[in]positionThe position to set the horizontal swing to.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRHitachiAc344::setSwingV (const bool on)
-
- -

Control the vertical swing setting.

-
Parameters
- - -
[in]onTrue, turns on the feature. False, turns off the feature.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc344::stateReset (void )
-
-overridevirtual
-
- -

Reset the internal state to auto fan, cooling, 23° Celsius.

- -

Reimplemented from IRHitachiAc424.

- -
-
- -

◆ toCommon()

- -
-
- - - - - -
- - - - - - - - -
stdAc::state_t IRHitachiAc344::toCommon (void ) const
-
-overridevirtual
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -

Reimplemented from IRHitachiAc424.

- -
-
- -

◆ toCommonSwingH()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingh_t IRHitachiAc344::toCommonSwingH (const uint8_t pos)
-
-static
-
- -

Convert a native horizontal swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common horizontal swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - -
- - - - - - - - -
String IRHitachiAc344::toString (void ) const
-
-overridevirtual
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -

Reimplemented from IRHitachiAc424.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.map deleted file mode 100644 index ac88538ed..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 deleted file mode 100644 index 1d399ccbd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -007d583f5470b877c4b554453cb43490 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__coll__graph.png deleted file mode 100644 index 73ebe5caa7981e0d516693bd4dcc98889ff38ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8528 zcmchdcQo8<+wUc!C()!K0g$ z7(AB?5Cwo2Vgq>@DT4Ehzw~-U3<1F(1aeZ(Rb7+Ur#&>NoX*d;mN-6=Q2u5V_x(eE zr6`AWCODC1caQx~cSNj|OJ>51uCV#%d_3$-G~RVtKYQkZLa*UtwwVNt+?kAh`A+d1 zlYBa&D>s#IP(NAg!(X=%y1DSEbZza}4(0({>+!_wq`uP=tEk|w2tgv*UXb<};bXze!JC^`YeH?$Dl)%{vJ; z_mnSF_K4iva;Mc%Vs<2NXlUp>IAw3LeY8khPF}uX?5Tg%^tzLlbvMks`wQouRur>o zUJfw^Hj3 zORKBl`kY{0{r!>EGw$8H;#^!2axs4JmpqBW^d`m8(%-z<#9mVO!rYt<<$}X}e^028_OyO- zeJ*lL$K74Dp`js+MlhtXuuxQwSY8>2TIAHK)W;6zvxYS1zeOmt#Bsqw5D1q2{r#&n z0v`?ABNEycmzHkR(?9S&_e&mpgJ5 zlRCP(eow&DT3cHKoYyCLy-!^2?d{oM@Yt{U<|)vTs^Srknmu<32Cv&(^TXAI}t!gGZ(GBT1SeNw%S_wDAIiM~0lwt*S)(uC)l0h4Uc zln(9a>3Jj|@Y!y@EkQTFsi{f8Vl?dFz}0ze{M`Ub&FS4xuHwPbQMvn`xhj;Ii;L1X zKK`C6G^eH}-fF6<42+KNJP4d@w>Hk}yn&WeQMm>7??+o(Vw?KDWKB$yzW&L<)`inl znvWp667jg%$jC^gqAB%-oqkDp(+46Qlyf*d)h)2husu2{sXO>Ki-`RKX?}iw7_D&e zpp%+r5^_`%YPFi|9+a2I`t?IoERB$5JPkd)F6N28`}o8}J})nC?pAPcFtWbB-W@Em z{myGeMd&3#35jWe9(|rXu=%+w9(&jvF5S9ufu}4iGDO3bl>&lKpXw3~%g1pgwBe>v z>O{lcaol63wW;pd$9wsRRHSlJ;^pDIygYLypQUg0r(2jLo5bAJv68fJ2Cd{n4tjce zPJ7sq*glWWXl8R;+fpPFnHU|Nc^P}Sv&5cURet_l`cy_rDjt*a=~KpK?AClcdoq47 zM}7pXe8JY%7O;b33m#!%b+4^fYN(8ij37V%kgAQ8l)u@LzyFmxZ(^dO6rMLq7ZECf0M$!RpY|LxFAdBfs32o9R_zo;JoK~36VwB@( zf4%!h@a@CJI6VT{*RL;s9~l{O^aWcJSXU<=9TTIt<6>vWdkQl;q>EReI${WWYwt3}w8JR#+O2uv3OZU1q%sb!wx*YN!=y8Phxk^8^;x zI@c0JMoOx``KxJp&s|(x{O5|J5gZ=paVe7SNqN^98jY^8n}3x+_!t<)Ub*ELDFpj* zNrU6cEk;Jhx~(=^BO@by0h-{jug)lai9Mz75J`&21EO!b-`> zkx_H$@LUUxj1&&{+g>e13dI&xV0YEWXcj!I;c&P~UvlTk;m%_=HiQ0DiMstsiy!Un zZ*_FSn)K7t(+RQ$KB7=!S+Bwkn*GU=#at-sb^H4z&wGH|KIY&kEa$edu_30U>!>sv zs_{JJ12e2U!WLXB{T!|h#w+5so&C5jXBB1K{ROzjO=@a&%(GZ2{8qXCJ6vB_aH)@x<>f}I3B(Oa>u$%EY_aeabB(xyXyu02Ll7O4aginoqj*FxA zBe`w@VlY^`sKmssQ0|6~&AApu8+u@g$Vt_zKID)d%%U_#BUdRcLbn7CJmczpzAIq9 zf!7%z1!_ef!@`VqFufuoA_Ucx!;Y(?;b0f%fB$aYT^UN?d3RYcNvKFoPgz-cVQFc8 zeO>X*n;Rf@?bVvzeYd|h;d#7XEnqW4Cn+fjtfdEqYmk?fB?XS%6VL0%YuNVLtm0h@ zF}?dTW8gK~KrmdHNcz^<*~UJL?*9J2qD+nLdlGur@4I$|niVEaGh^$SnVGh>w&@^p zgZTCvi|qozQDGjZ10ONF@G+zn?5*n8wYlEjB;nh1be>~bsiWDuD&LOkPN2$E;N*p9 zC1s0?Y`ubbVfxu$n>0N7zv+d)ayMDEDb-c!?GXzYYPBd_*k%SDAY+1S*W3i#aF$mK`xai8MxI;AzeZ-dq-kiqu zN1FR~^CLeL&m5V3ENCv=8|Z1%O+mY59BHOynJ?Xy=+TX2mb{Q6VlR7D?u9}}kIrAn zz5nDavF_%m3r|KPUEGm8joppdiQ`DAZT^r_hf+p?D(VnV*}}JXQKC+YRN};9SiMFgLYUZ^er^t7d!)<@>C{!tlggz}Gl_s$!OnEfE_dQcRAMVSar_Z6xOI1Lp zmE5+!AeDb3=h#~&)-0sM*0Ul1I*&3gQltyD1{rpEL)zD zx~{05Y|5;Z-?6!JRr(cWeNx*-0vXlnwR`ei^uNs(C&KPpCB^59T2(CD61qOcgqauq zichy}?cFf{tym>-EC#RAC62W}CxqQ5!Z(%6>*{elMbp33`T)tdO$LW8c`8tzd+!Tx zb5R)xsGbCbm1(pVHNGWOH<17bI!6dq;@00B4yZBdJS|#UC4&#>6*tD{UP*7pmoS&% zdX28OVqt#Q^ruuaytspiIr_e7c-CC13lx3XN^3*lC`2CdVBPg(=-A9I&9k9Eo%{f@ zB0FWx`E%MhlKk1gW5r-DVkovXR>ej zX>Ffc$f4`B3^3$H{UyqAa>u-pzNAXT^&601gIoembxw?#L7qfvIDy;NGGn>uvFX&a z3iQEj>&*C*ao@{+v%AmW1)Ja+cYGMQu&pEhNp!l25S-k)*;qHdFN83e^bAP?3#@Ll z@?DD_6ArCsD}31M&ZMaI*{AW_NkM9fo=7NeR`eHtS^a&s3a-G1vFr0b?Nzncp0jUo zI}pEnJd&5GYA*moi}hO8z9;v)W~&!@ch_SemMKl=(dp(MadFoXoo;mBUa0gz|EkWr z(o1B{gg;el*mv|lQqV_=R^Y;oUXw5A3?D_ODgQ`V?!I~gXQ6|w_rM~cL&Mf?(2!!< zjuU1Eyv%|=#OqtC?#HYGIx=D50`lq`qd&}@y8}vv{wXc~4i)5x#-4|#2yq8>1G_=W zMLScw#N@**FeBjE7s9O><9>tkRIzQWyn!HAkvma5zdNnyDOZd#=uo!|bLlwgrzQ zWUs|BWTTRL<`3zPIsCl2YkzM?)z^04jE%CL&7Hb!RqG>VvELZ`!uyqSO3zN;v^@g@ z!$o4rihLT9mBo}KWM!~2nB(g1ZeU~6pZ?rW#Ca{=>(=9ZSN&CTx<6A9_*f2gRa zboJo&#`IYJ_=5mw=5NmHT^rLV#d&@{K2mb>=FZMw@bUJ82e4J+$36Tvj@|jJPg7hs z@5gEN%LrU0!#^NCYe~UaSsog%=eV!V|C{7|>UG59fKd>#9RD86uI`Gf$B)<8WtmO> z{Q0IYO|rki>$t{t?(+0EC&S(4fqUUTIw$4U)1r4dwWL5X1~L;+rxAk{A%1>-W}}7o zft*_#FY^Nx)bO{B*{bPp=LcCk;%xPdIi`=Wdw4TWRd16Fb5_35&bp($RYb8yS@Uk4 zdWo(%Py`mEk@CEDy{rrra*^*prirEbeZ9>#^3&p_e>ENj{IXZwnEZE9C9l-AV$ zC=2gME5D&4qNSzX-rkmlK!kc*S{EZ>3z%M;>AA1}p$)y}$j4C~MH!p{MYR;AuR>Jz z!wnZYK84Xexs^505vS+f`K!sVv!mmCOABENL`F^RuGM5^zMZ7CwKY&>euae`Z@=HZ zeS6jDzSKO6wl)7$1^jwR{XPv?K`Lr$AjDW%S-+bK{NC8;%TvyZ2g+cnFXd&)*bdk` ze)nBda*Bd8vq%3I5u}>Q8)cg`5ykk@*4f$QU~>)>9U&bZvO+d9VSX(|X%m{&)(mU2+x-9MHazvjw^r9DsYu9FXPik22q>-&N zkJJ1ySIk(FQFJgAU$y4L9)SLwgyBN;QDI_B@eIM0_%eiz28lx)6V}%sb@!-$O-df0 zyLKvbi#g!SIUx!1roqyqESf*`GZ1Lc=S+{#U-b{m;YG>jSEOgKg3=d|q|@W;4I1XTyDzdHp)XVssyN@4 zzxoFniXIvHk#sL)fhSZj%66;_L|LPy*}k{-67ce;qSXU18WUMW1|nM80HD9FL-lId9y& zJQi)ucQMS$C?Awy)VaNctxqtQ_mK|fAGKGFokB_nWy z%thjGXE&nKEuF~2g!xUOaC}k3Zd$Q}tDLA$DkkLkkJ`cRMA@3v;J#OLWdW&F7@C83 zXG9gl>HS<7$#aEf3sZLY&LztNCPdn3#V~_|Tqr7Hw%gj|iOVsN5~(j!%B4(Dsmcb?7URxS0>Q9UHW^sQ$A0KBdP)MqncV$^yw6zJ*g`T=i$SLZ>RzQGaE5)KqC2! zI&M%&&wo%JyIP@Co)OHR4bupW%bE}=ZdGlu7b{Bg#V00dMYf3ti z@1XoBnAQ~#FQ9PA2jk{(!m5J159hxX1m(H)7Jt8Z3n+rz&JLH9sfa)}CHU~+0|=HW zkRX7dz~zh^5dGcVOaOW*DJf}vHE;d=_${bD1I{SIW)TD#%bCRzY5w6nL*1og|sq!_#pGI|7Jzfxc8 zH*YB#TRjAf2&@&zPBTMwLRORhB_-Si>LstBP*8{xd<+hL4uytHYPj!k*AkeaCo?2xE_dvp?5hS^7F@ll>-nUI z1_&zlzMiHJvEO?@FLs(p7=9w51#EF{fCwHO9K@%NRo0slAOk*zgs50(ZIr%i8Q$F7 zw4qUx7K9dwO~nO{x>W$;!+$M?*ftowPRw`_Y=3njl+6 z*E%d2@Z4id#_Y>9dY_u3$NmFzh=BVNJYr!nG&J<9uExWrP=I-zah=j>zj^a!t`d~A z4*|Xq6BDD7&HyM(r_S{gfJJP_Vh)(AX`b6;fbSOAC;S@?G1C<^9IXir0{J|3^TvFpB%=w1K|w*Yxbgi)IPDl>m)qtvz$&*^xzpaJGcU ze!O!p`zj7>a5e$~>S;i29hZMz@&&ShALyGQM+#~#BY@ce_ZbAVm8P2dTDN)2wO?y% zJpkJzNcudLmc~2h8~ppg}>6OvJ6g1d0=N}XG|$ji$Z~%_~Qa5tyj->^!6IJ zhTQq_o|90ALb3Js#w2ZR`a9JLZ%FQuIX2@fGaDL6swY6l?(z?q#56zb(C?I|*#|EbFV zcLayc6iR}++(e3%R@Kn9mX~{YYThT;2MJN ziB`(o;q+(ib{8VKYqC1ZG(NsuT2{s=dXxv`^9rZJ#OPa0%*@2j>!PjU zv;i0{d5wEyE=-jcV~;~Z&uhdK?8@FxqkIGnrJHZb)zD@vFEcGW`gpRZ4?UKWVc`Ay z-w76DyL2M95z)7@%;KB$jn2<1bn4x+qQAWO%sgjp)NppR(KvYX_KrNE+Cz>Mf7GXm zZ+o%C&hjCns_PeI`0oBne&{!rJm5z=YlfW*2=8NwJ24uRY zA09dj35f#w=Srydh$F!tbrW0&9`>pQ)=qo%Rh8u@n1iy!t&LX?85u)oefqP@`A?zH zMf@zktZavQO|yS%dAvjS*Nu)(M&DdqT1`*p*-KZ)Y*Jz|%j3fW3Wy=Q1zEnC8LmYP zc6JucY#Qi^`A3ocB{zgsV*XUTz>gTNml`}|E}Q`Y0c8$L zkb-qR0q;agkcTP`#~RO|nA*lh$+NRF(EizOrr<7h!Oeh#PEJ8#2-0`%5`)hPFVm|q z9*HzQV{(-9I`TN6CRFU0`>Xe<`^o9)M7@VgI3_MN6(S{dMM-??uZP1@AG4Sk3hjtQ z-U1yPaDAZs1?fRx%x!^vVoCFi9v|1JvYGAsc#}z^RR5BkoE(O$0FsC75}x&JnU9q0 z8`JZFWmQd8+rT@b7%u`r|I_2J4<9bicptCZ4_Qrriv=B&8Ke`((#aMxV| zgmI=vkNiI|$&|Zp8CcKMnbD*H02+3m{~oWwm5bck@rmiqz8)6fP!Unl?d@*vn1lq) z4aI`;v*zaJdjh66064!WHVl4{_N7W_=X!y@*ZCQ~F+tSHJYY2&xs~}&6D`N#lv7$7 zl_KVn$x04_YCXcO9*}Af(=Upi%Y=lAEdVQ%`VN>rVq|;|a@Qar>hvCKyabs3wEn%- zG0jTTo1oHqH{0MvC+VGhc6v;>3B(4k%Z3hUR!x)}Q|v7D!>6jOSVL6aJrHwV`?Z2d zYa1Q?!jkIx0rYeLx3#9xgZktY>(n*_!E#T;Hr*^9D5<&T0RMo1x#eYzVjQw9G!X7I z7ZDNhr>H0m0but)yLF|sdmal^dmPLKS&Seci21W)92`XHlY{w4@%?c_BV%K`&0o(! zrR`f#z<$wFGoF;#8-5EI@HOAYlSS@At*;^M>cu~+tfuU}bZYGbz({vSwQVl(m=Cl5 z2}$mlJ=+&f6tdDPI=i6%VABYFW>+`CE)T05*998ypy=m?n&W|P7DlHUP8 z0Fxvppr)oi!sGe@f$s)BU^-RBSyomCzR5+yegG26 z73ixYUYi;5v!k)bi^6`SK>eZ+FVe2geT#sALt-bGIyyV&I$6?;fU#{ z78^!is7AIXXPAUbvKSRDEcs&tTS3=AnSVRs-+KpLcgGDj9{S&K!krUD&yYWlBFVl1 Q7J)!c8X{HvLjS{m0m03m*#H0l diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map deleted file mode 100644 index 6ee5f2904..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 deleted file mode 100644 index 5ccb815dc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -35cefb94d2f36be1ad5c9d511cbdbb17 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc344__inherit__graph.png deleted file mode 100644 index 85a663aa2ea2b6f2ee6de9c2abe4cdcaa64985c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3189 zcmb`Ki91wnAIA@Q%g$qZh{=)|X+%hiWki%=YJ{?+EHhF`BYR_)LXt;9)?qZ3G(5;M zLnOPwSi+;2u{N@dn32ZTdwSpNdES5Ez0Y;-`?{~|ocsFS_xb+5pWlhMzH~uMSWXxK z05PP6nGHC`fVYnzKiFHVqJM(JUU#btX28#1SKhm#6aWxCiZnB^3(j87iLkSsgT5yi zxW*h(mfUw-w6ijWL{x~fEoo_S6OwC^vL~vgo)$Awk!ATCx_IlHHTtUY#B@^0xYFnB zzVX>~y%UGl;F3h{?*ebNRi`gRiK#6yRupUfvM`hFu#ln^R(TLTjNMWd7RaP&&NK>` zUyd}{lSYBQ-xf)Wl62T>>MASfM&?Zx5yJKH++vE;15qRjB`PTBs=x@scFwI$PfyF@ zzG{=|>KruFz0SW;gT=Q^XDqNP9xDlw1reS~0{>mdq2VdXDqUJyImT zMFoXieWo?a2dko@V!eNu$y9_w>pf^`aQm_YE<>|_sAQz1RE2GQ@99Aq1)T|8dYO}x zbJOg|{_t}~4Gl)0wc&dfU;1Z><5O(B9XLGaL0MWdnq5?dV z!&OMn#{8G4$2KL~(+OIF(GC^vk4y~0x0Y*Z>00#OUeb}*`T2Z+ijyaAVVKNs-#-h*Vm_OxoD0Z&7ZMUudv{C<0x95Voyf?@s1I7X zSv9u0y4sPX=sB(L^?G=Le63c&2=C7xr=(Pefj#(D2Qgu5>(PUG#l;qIV#?&CEB+3# z1Eqd4>tfS0$SLh5W)p$2z+$DRrkW?o%0hVDA#_1Of%+5b0}c%E_xHc0s^M5U+nIcr z8|>pF3E=Vgw+rz7!e}%-WP?30R1zB-Yg3X5b1h#Uh2jXGs-h$Oe0{0m zJJejBK3^n}sN5UZ)h8Pk7PdHAE+Z&#r`pL2@{m9vApX_nzFO%)TUuTging$@nE(2f zFA{p{o`a*K(biHGgmeA+^{;$J9!bxh-BF#Lo$Z|S1!I?tNl2i9yPdDi>C5!?_I3&9 zdEoJz*kw{tk(!zs!6+n+u^PqO#8lp1C@ISA?(1VOE%kJDY1avjG>Qn3S|9GCe)ri3~n>;_YeVb1(ty%WrrvAbNUwTokG5rmby?X}(WDfU4k! zi3xciG%RdmY3v;CqLr1^#fzz3*v7`j%~|MoeH4b!<>T)^Uge3lwCsKtvLX5jRLsuW z9F3cR(AT$oKAU~U@2|Uo=g#f%v&=S*2)}h}zQ+4=IG9sSyPI%0+)6ol-nOB#QVO^c zx@r!qyfgfIF3n#MZFAOAfdMC_GfP`kGibgYi1oR4K^@@v%zKZA=Zu*jA5M*O(8v)9fMTp4Vy|vy7K_B3rP<;9& zyNo4t5F<6|mi=D4ke_x|P-D-bKSg8S>qvr=xCj~L9I_*Zl6 z32nb1?EbW4Gg~X4&tJI04fgj(!L|qwwzQ>aX_uWob-FtaVBqi%gPuo4(zJDaYYV>| z<*03}-mj!?c7OYJofGIGDy>mKBnE_Le|%azjJ=Y2gZar6B9eC5#`pI0&#e72E;?4a zux1+%QPJ^|@)f17t!JXoUo9*efX>+Jd|fu4)O|z?x3?dm0RWMISUBCJLLqJ?I<3=I z`dXm5sY?G0`m&`hB&}Xh{kQCwS#wS46>H*u{8@Hj>r=Nw$aSpoh{Esa))Hp*}UHe4q-rN)*YZ> z=w`A%vj4%?s!rh2UzcrdF>FoL!!hhPUTBHk9m=}m-l62=7caOx7C{#y9@{eIQ|HY7 zzWkYV~9F9=&tdM;=pYzE^-Z*4+fW+>uk_2`YN+S;Ii z05KsUO5n0widH(UX^UO|<3}*LNY`;(2^DBBpK7U^YAF=$Q0J3xV!-}fi_W)>iH-H6 zIO{)8OWO;mAOiyfg$4K}B$BGVM)}WzR@K?r2~q~6tCyEoR#w&?etsbD^=nHd$>5NX zgtqAyFJ24|4#wBg48k_KS-8gA-rn-k(y(NUmwLWxrAXc5$E_V5dEM~xehK7rl$F&C zhgaoEAJITKj$5OY3SRwc0>B$G`H|_=5Zc)2KBT2P6~3-PbFat^VN>Gb;;2+A7|Zwd z_2JP`8ENUhtWy$z>A7_RR1}|#j7+c1o;`cy<>k2xqtKIg z{{k(vex(r%-N3xJySw{btTEGj`HEdLF{o* zT@g>rhz$)5sc?H8xXobJOB7xjuT))Kt%lBhL7U^gS{<~~;ya7OX@Ld9w{I_BuFTI{ zNX)BWBiYIy-aQp0gBp+!F0&|Me%Ypk+Zqp{8*)VDZ{NM!)7v}eOR*hQ5&SSV_JH%H*Tcg@ z_z|(Hs;a5U*w8Q=8JCziQFnhP`d=dc?aYuBqlcRULyY)d1_RVG6_g@v&gmM|daSFf zq_otEeD#{6V~O3-C&b*)H6#?8Ra0}a!eMD?Nfan6E92wiizn|QN1*wwB z*}^(E1pfvcfB=7DyPks&m6d5KDiY%LcDA>lr=&2!iigKxNr;Kfu~-IY&O87a{o}{+ zjuG&PuvqNXt0Q1wfNN!4{>vZdT+Ga3EJ?46i;v&ZQb^k1(2e))+sEOBo;p=qS62t3 zKVWgh1B-p*RQ&|`xjv{IOaU7ksiY1s9L_V1nv=P<=1U$ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 deleted file mode 100644 index 49092288c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -83b1a000783b5409d1f40cfaae3aa3e3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc3__coll__graph.png deleted file mode 100644 index f721b1bcda174f0244b7b19279679ecb0c70d95a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3209 zcmZWs2{>EZ+KzJ2&?Bu7RiRGJrRJfOv>|P^iW+LDM$;%RLa8BUHP1s(a|k^gHP1B_ zMNO@lC^aRD2CaDxclX}=pZovM|LkY)wV(B@z1FwZ`+e{G?g)L|JLkZ>U=Rp&PW!Hw z0noYvw?8X0@YHy+xBxWF&+gyR0-gT4a+(VgK_GSwZLM2I_{_CTZyhN4q!m$xEDU5K z32TX2EGQB3#R-s6-twnXVsYGs!a~Uqr;@XAgDhT}^crz+Nv)y~jwWCn#r+nAGxLY$=5|B$tFPbp8AC%*QQY%XDz-<) zkT^d6NHm5ni+K)7%}ENwF>DT(!}&omOPsTc}k`Mp{HIyZAe!aoFE1I((d6NtpvT(RTbDJQ#wrELG$mKH>Re}8aDi1Y5MncJ6= z$93Jky&nb!IFyx@pJB1}_>J5KpSHl?noduSv~J&~&}hBK2U`alT>@j@OiC>Tm6W(m zOiYNLix+!)dy8L|$8}dXd(6ssNp)RaB7yKBUD1A&JL}CGA%6d3 z=k)Y+F==U=0iyaN^+jjw_t$J6zZgKdxP*Z{hkjzDZBJn1A|fNfZuRIg7_ch}+0q|g zTlV@jH$!-Bty0Y=E4i~kux|96oXZuyNA7N(9v*cdEqnVSTRXc80n5wF`Y8fx?m8d} zfFV{xM9}K~5QMpul$Dj$(b<`hkrCBnb*6Q8Hk*F5SA}V3Mk0}>jqXw{$D3@RrGadg z)~Tt-%@yggSY~C%uX7(l*k~u}>gr> zAv|exANu0(Pd@Q8yg$I!4D4(1`OFQd`goS5)v9DllKNq85kHO%_@VVquEQ*&5`IbQBlz@ z@STHY9W@dtEiH{F<~Ep(&8)#y+|kjo*t8<>`pZRqef`!~j4Uslof&>iuQM?-S3c_m z-%wZY`SeLhQIShjv_Q5~LR@@)yyP(x6BFdprTh2pMGAA^D5i&h#Q6A#1jj3*2zRu= zV>||beT+x`Px@nE$j|gMFI#+@5}$9xj)Q7yYQ|aRB|I{0NMds`1GZIs#XE4*Kl5rz z4!UMHK@-07rw*BCxqsT?oJqC$r?qLh-IkCu2C*#jGKNzo7jXjc7vE>eveV~Ne}b>k zml{e&Dpb;8llX~%T*I3MgZPf8E3T5U`60X0GDGIxoK@PFbpl^=Dt~Vra$2dDjLZ)q zBK*#6n2-gb46s=H#>uhj!H>N^1h=f2Vv;9I-4(BnPPnDSzEo%3%E`dXS7$e(^p>7X z30q?nu2vs}*^6C)PqT+?b(NZ_3)qv)NHNKwB%7sEh{!EX)E?_&TgC_A=Ap?j5-H_; zh7J=CEyki{dtLY0$oU6goa%6l?yTFjU*FukAgY@Qq0{NP z@86?UR8=Fh{SLLacXuNvC(RSGvPw#`BV*T^>Gr3#19TiY=Xh8Y;2qn5fQn0d727}iV^Yg@vdlx_?aq_SMR#ae6?qsgV1sJYX%0K#Q zK2Fu@w%JW|UbNHuzlZ@cu}axU^FbKN;S!8X|5r)}j!__Yq zB9e}%9QsB^9RRUE(AE82x_Nszb&otgej9@kM4TSWgWB5K-V_vUb#UtG+jYD&)s@`?a4i7XIV?%9j@l) zW`~(3&taD;eDcb|f)=1mk-5>H#aV6arJG7lGdh}@j8nC^D}VeESY53Ea&d714&gFD z*9!|)k&%%+U(dJODr|PbEaNjXbu29Srs|xQcGp_GM(V1o*Zb9eLO40wf9YD)(#byK z=-8O7_pZZ?-w|$dYATGbF94O6l8PxWm$9(0Sl`|j5)lbKJUn#vm(Ig%muoI6H8tmoTo5PwSkNbH`Olv}FDx#~dHk?=E%liBrk|gNveS$eAgFje zUf^v z-mb2l9vR^!*uzB|Te7#SJx2j5b@GIPlt7E0GYb5O?2;l1va$() zR-GJg>4CxEiAE1;VEJX&2Fwb(bq+6_Ls3z2b*e57(El1c@7*spue>$AS6o#W0d=J9 z0un}Bdi9EQ`_e{HWhJ4%U-z}NrN*14hK6*&2*`Fu#m0(ANJRel;Rs;b-QE54=S(w} zKZ$nB^q7~nxcD*j+$CFkd+PdpJLk;ooB&g6jXimy@;RHhxOh@>vh(r2^YF-sY?=-T z@9BwA%Bc4_*bK(92?FR@0S3m%#H47%CfoNm3f1|JA|4qS7RFN6a-s@{!vQ=Ws36LR zPxWCi7=b_#laR=5Y4JxMxp;WoDI*ts0CE6=oLgOu&da;vf4sr+=bwMl4grpnL^q}C zX&eMc!K8tuHBqSF0M(?%J~1(23CPZ#jo$=p&$gGkSM$lM4Ionh^Z^odUh0Rds;Y`f zN_I?7XB7~=?9R;gTAG$%Fk^3xw|91&7rGP9u8Cg1o;FgT$H~Qo0?HGOMi*PQ5Tzd1 zmb-kr=e{~|3ypUO=G1A>o_QfEYXc+Q(Q z!DO^I?(RX7(_vyX$Nv+mf174mJL<75T|?L~10#hp_u)boMQ=+4^I>mcyY2sW7kmN3 fVWq-pO2-JJ%FNaFzI8P4ZvoOq>1vfCp9cOD-GW)B diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424-members.html deleted file mode 100644 index be2d45792..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRHitachiAc424 Member List
-
-
- -

This is the complete list of members for IRHitachiAc424, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRHitachiAc424private
_irsendIRHitachiAc424private
_previoustempIRHitachiAc424private
_toString(void) constIRHitachiAc424private
begin(void)IRHitachiAc424
calibrate(void)IRHitachiAc424inline
convertFan(const stdAc::fanspeed_t speed)IRHitachiAc424static
convertMode(const stdAc::opmode_t mode)IRHitachiAc424static
getButton(void) constIRHitachiAc424
getFan(void) constIRHitachiAc424
getMode(void) constIRHitachiAc424
getPower(void) constIRHitachiAc424
getRaw(void)IRHitachiAc424
getSwingVToggle(void) constIRHitachiAc424
getTemp(void) constIRHitachiAc424
IRHitachiAc344 classIRHitachiAc424friend
IRHitachiAc424(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRHitachiAc424explicit
off(void)IRHitachiAc424
on(void)IRHitachiAc424
send(const uint16_t repeat=kHitachiAcDefaultRepeat)IRHitachiAc424virtual
setButton(const uint8_t button)IRHitachiAc424
setFan(const uint8_t speed)IRHitachiAc424
setInvertedStates(void)IRHitachiAc424private
setMode(const uint8_t mode)IRHitachiAc424
setPower(const bool on)IRHitachiAc424
setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc424StateLength)IRHitachiAc424virtual
setSwingVToggle(const bool on)IRHitachiAc424
setTemp(const uint8_t temp, bool setPrevious=true)IRHitachiAc424
stateReset(void)IRHitachiAc424virtual
toCommon(void) constIRHitachiAc424virtual
toCommonFanSpeed(const uint8_t speed)IRHitachiAc424static
toCommonMode(const uint8_t mode)IRHitachiAc424static
toString(void) constIRHitachiAc424virtual
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424.html deleted file mode 100644 index 7c272838c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424.html +++ /dev/null @@ -1,1149 +0,0 @@ - - - - - - - -IRremoteESP8266: IRHitachiAc424 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Hitachi 53-byte/424-bit A/C messages. - More...

- -

#include <ir_Hitachi.h>

-
-Inheritance diagram for IRHitachiAc424:
-
-
Inheritance graph
- - - - -
[legend]
-
-Collaboration diagram for IRHitachiAc424:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRHitachiAc424 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
virtual void stateReset (void)
 Reset the internal state to a fixed known good state. More...
 
virtual void send (const uint16_t repeat=kHitachiAcDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp, bool setPrevious=true)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
uint8_t getButton (void) const
 Get the Button/Command setting of the A/C. More...
 
void setButton (const uint8_t button)
 Set the Button/Command pressed setting of the A/C. More...
 
void setSwingVToggle (const bool on)
 Set the Vertical Swing toggle setting of the A/C. More...
 
bool getSwingVToggle (void) const
 Get the Vertical Swing toggle setting of the A/C. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
virtual void setRaw (const uint8_t new_code[], const uint16_t length=kHitachiAc424StateLength)
 Set the internal state from a valid code for this protocol. More...
 
virtual stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
virtual String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Member Functions

void setInvertedStates (void)
 Update the internal consistency check for the protocol. More...
 
String _toString (void) const
 Convert the internal state into a human readable string for the settings that are common to protocols of this nature. More...
 
- - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
Hitachi424Protocol _
 
uint8_t _previoustemp
 
- - - -

-Friends

class IRHitachiAc344
 
-

Detailed Description

-

Class for handling detailed Hitachi 53-byte/424-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRHitachiAc424()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRHitachiAc424::IRHitachiAc424 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ _toString()

- -
-
- - - - - -
- - - - - - - - -
String IRHitachiAc424::_toString (void ) const
-
-private
-
- -

Convert the internal state into a human readable string for the settings that are common to protocols of this nature.

-
Returns
A string containing the common settings in human-readable form.
- -
-
- -

◆ begin()

- -
-
- - - - - - - - -
void IRHitachiAc424::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRHitachiAc424::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc424::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRHitachiAc424::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getButton()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc424::getButton (void ) const
-
- -

Get the Button/Command setting of the A/C.

-
Returns
The value of the button/command that was pressed.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc424::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc424::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRHitachiAc424::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRHitachiAc424::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingVToggle()

- -
-
- - - - - - - - -
bool IRHitachiAc424::getSwingVToggle (void ) const
-
- -

Get the Vertical Swing toggle setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRHitachiAc424::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRHitachiAc424::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRHitachiAc424::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc424::send (const uint16_t repeat = kHitachiAcDefaultRepeat)
-
-virtual
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -

Reimplemented in IRHitachiAc344.

- -
-
- -

◆ setButton()

- -
-
- - - - - - - - -
void IRHitachiAc424::setButton (const uint8_t button)
-
- -

Set the Button/Command pressed setting of the A/C.

-
Parameters
- - -
[in]buttonThe value of the button/command that was pressed.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRHitachiAc424::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setInvertedStates()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc424::setInvertedStates (void )
-
-private
-
- -

Update the internal consistency check for the protocol.

- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRHitachiAc424::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRHitachiAc424::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc424::setRaw (const uint8_t new_code[],
const uint16_t length = kHitachiAc424StateLength 
)
-
-virtual
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - - -
[in]new_codeA valid code for this protocol.
[in]lengthThe length of the new_code array.
-
-
- -

Reimplemented in IRHitachiAc344.

- -
-
- -

◆ setSwingVToggle()

- -
-
- - - - - - - - -
void IRHitachiAc424::setSwingVToggle (const bool on)
-
- -

Set the Vertical Swing toggle setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
The remote does not keep state of the vertical swing. A byte is sent indicating the swing button is pressed on the remote
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRHitachiAc424::setTemp (const uint8_t celsius,
bool setPrevious = true 
)
-
- -

Set the temperature.

-
Parameters
- - - -
[in]celsiusThe temperature in degrees celsius.
[in]setPrevioustrue, remember this if we change mode. false, don't.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - -
- - - - - - - - -
void IRHitachiAc424::stateReset (void )
-
-virtual
-
- -

Reset the internal state to a fixed known good state.

-
Note
Reset to auto fan, cooling, 23° Celsius
- -

Reimplemented in IRHitachiAc344.

- -
-
- -

◆ toCommon()

- -
-
- - - - - -
- - - - - - - - -
stdAc::state_t IRHitachiAc424::toCommon (void ) const
-
-virtual
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -

Reimplemented in IRHitachiAc344.

- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRHitachiAc424::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRHitachiAc424::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - -
- - - - - - - - -
String IRHitachiAc424::toString (void ) const
-
-virtual
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -

Reimplemented in IRHitachiAc344.

- -
-
-

Friends And Related Function Documentation

- -

◆ IRHitachiAc344

- -
-
- - - - - -
- - - - -
friend class IRHitachiAc344
-
-friend
-
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Hitachi424Protocol IRHitachiAc424::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRHitachiAc424::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _previoustemp

- -
-
- - - - - -
- - - - -
uint8_t IRHitachiAc424::_previoustemp
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.map deleted file mode 100644 index 71690420f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 deleted file mode 100644 index 5d216dcf4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -271ff178124ba2f2825dd8969b2b450e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__coll__graph.png deleted file mode 100644 index 677ce9b1c7e27811fc2e167b9f88b8a3b63eaf78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6450 zcmZu$XH-*N+C>o%ML|${QHX$aLX#R5r3)y%i!=$nccLIo1O!X~DG?A5>4Yj>AoSjQ zCrAkb(%W~KS?`aTZ&p@vvu^G>=ehenW$&FZbyfKr*XXYi5D?r@RCxLl9QVN+ag`W+ z3OQ&lg9GtvW%;KB=NGT9HCeF)1hhECr;jx~lQyQjbZ_e%t!z1na2A(VT%q~&OvUwe zT7}Bfi0hsav<;+ih$rE_NUW85W77+(K^sbW!Ox16`tkhooJ&f>z~KIDOu>Osvq6r4$1lDW%)l)=6a}GR~qKOt1!L2 zdlh>x#(;w7vx5EOLUq>wrmk? zZEdaXOzqU5sqSqU3?^zfZeDnl%UYQiol0}t#l}QH-I;`#c)JC5R)n=ujQIp1B_Sa> z+FfgjWRfK7`#j`RQIKQW8ta-R4jgfZ|&{vl?JyoHT}tgordM+@?#7VBf2Xbp9-zaBa^1Ds>$#|)a?P%e<(a}-; zEoMpgk40uJY1%ozC(8MSthyIx&d)qzJ75Z6^J$+=CtNqv()>*m6B87V-mjIubSHr4 zK7MKuhZC|J7dA99`rV&#y`W}~{@Jr>oE$G)U*mn9aeX#~PL)-gx=S+$*v{Ie| z1Z{0?ooE<(W1?I`SGSdf#kW4+sOmHH)~#FLzI}6?Zz6>X3H=_(BENU<-pa1G#g{yT z@?!5@`1ba8XlUqNDJere0a;mD>ydn>?Cfkt3D?$Kk32F{5DFQ+aA;Se7+VK4EG&$G zQO1{650#yp3z3mY;jcYN!|qcsGj|{E;KZF5uUcDMUtIqF{S^ye*_nn$R|%$z*jfA! z?lDQYz7bvqc{IPacHFwOwta|0W1N?i>}P7bE?^(b)_B0jw+yl^N!kYm^5R!xBf~l- zxLtVIDgr6;@bI3Klan)3AcL^|s**L(1~1i5s70KgZG-26+yXE{?^;<|b%48s-kquT(x5|}95~T^x_<52 z7ZDSUOqJ*?m4yCWXcti{*zkGE*<7vPpWSZBP0oQEbkL{M6;A2fUcFx*Z!dQxGUWP9 z{d9AF^X5BGM{!bg^gTjnB_*Zg0nxuqgG2r*Dj#2Z*xTomwbJkze#hW<*G4*+B;7x2 zXlNuFo;6q$R#fQv?{tY-fN;e5`PIV2*xBV0&On($?`CCWJZR)IspTQuj$jZo*UO&* zAXtCz`O-h#=r^pn%bO(!Tkh`Z;duBk-l7AQI`Es|&)%LTNJ1Xn!nX~9Btm{iuAoK< z6qJ<->$|$1i$8vCW+n?#_xJDLN~ihx`R&K6W`)JY&|(b6$<;MiaJr?XMHgdDIplXd zYt#DaURS===5!4i<3kD#4i1PStAvDpWw*4nG!p|uBJpv4?dGhhPJ!`KteT8zWAKd# zY>8m1j8ymM5 z8rOI~SXk}XO$a_(e=+W3C^y54m=EI^EwQEoHIBpd$Y=zE-UVQqaa``C1BFa0?hMh- zqgGQ>)8x8SZa?*-lmJ{HHl9*dCF!v_o#({*EWMA`V!AU-Noyyk)@z5|)YP>4bZ=sD zc{y!lEi57;pcQyU0Gf(Ura>wE4!2G| zB$(H<+Cr>!}`5j7lSy)(t$yvIS#9cT!IUl9>6~5_9qmJ(w1~qJN_|sKU zaeDO()RDB^MA>~o!6IxJ7g!E-u6P+g3E1ghs^;cq+sTUP#t?F`stp|zzf!D{gqRr3 z+v_xZg_d3P1Q)$03+;c=hUI5!{Su98E4}yD+ghX95~O`ZD=RC_EiAT{6CI%bC!Q8d zTaIWE?aWje8zrCM;ny@poyn3kdD6}DeDo(7GUO3dx;G-UI=4OJtJZcYzo3*KsX*0g*_nbLOylz!r)y62*lJ74PYI4BwLMt;%8742szyD-ox}-ycXn^}53blY3 zR{vt~*noq9mGX!!EbwU{bONtg8vTdycfhxRfE@k3=aucqsl(PIY{#`swzau=oEKwg zb+BmNWkn)<;}C06M15}6pkzIfd9O~}3YUdyLDzEq8cZXp?_kR8Ne4IgkHws^2T7*~ z#Kp#Pi1R&vso+vEyI0ihxv^C(J8(@q{~CE3>Dy<9*t6aoh+XA_viUp(Y}o6)_lEa3 zeIJlBUu}n09EvCM30$`vZnK+E4XQHn(G;y?_uSP!>6~$C(yqSKtFMtsfGs$|H zBWt3yb6bsM)BT~Vy;<4{Pof@&*xP+t8goA;+?8hS$wmLZNjCrS9>Xae0%&P1p%w#a zRP^h(N!?DFN@@905~L>XVbLA2E2ln`O7R-O@pU1q93?1or!+d2EPdrT+`Jyk z@D-;^^WA6R#@lweUzI)v#wULj8B-`)Jml^-eAS!!J=t&am=XtQ4K<-|O`-#1c191;N(wr@|I4`+A<_dFT^H!Ol z-c#oZ4_jGWZKQ~M*CxMa?{P+CHN~2&ffd65(VHMmQOZ-cDvFAH8ZHCUwoJ=_HMe=s ziBTTb%2e->le5c^F{M$DlBEP|BL#8Ir_;?ZspPFP%ny1}e8=5NGCUkPK0P|xlo;+S z*s#1PuUNDeN8FbA5f zp;MoVSGVg7>sk_a#mVCPkbI|1msSK-p0C9D{T8WZ!#6hZRTd>|7@4|d53X7-sQdV7 z{bAuHK_DU?JGeG_cF^u2wOzWwRihE`*RAqK`c3rT}iV>EW^3a^&dn}Qr&Q)F6XBl$9MnkU4l~m=YWHVd;k3ol@Sw*`}+0nAY4QZ zb}D?lzlm7%dcfZoT`0`7p9)X$YTk`ryQLqjfDa)%$B^tL+bSN-XZDRBob2@IRXX1< zcbKu9t$+7F7_v1RE31N{;#^Z0mAR#5f0h~x7`we|h?+x-wc)&6bXt#=xW0RDSXpiGF`k^Jt&8R|TR1{iKG`*@@6ogL(rkvGD`2_&hzR0j4`lJ4uY;WYg0A|lB4 zb|t{REG#U57Lk&YihtW=3hV1%_5|KnR6GP)acgVq9w#SY99PY{BYQuDhKLAS=Sr zQq%b+y3(alpbk-PiPV=SF|L!ti*E@iy0FJog(dx*hAE#E)V=A|nVuO_R8!OGehoYM z@bROtX-O1r&?n)xmGGwc8`L<>vdTJ2OxDR#+@$tMNbUK0Q|}=j^bO8@CeFpGCAus5 zJEBh)g%F-3ZlIRk|l&IT7VvjWr-YjjaIfgMUNEs1D+mwoQi~Fot ztc1(<6xjzMe1ZgH-~;~b`2)0w>#m!*qo$Zf2pjEN1-!g~t3Ua;Q$kF_Q;@tlRR z)muR~CNekht=9DX+;!?FkbSm7Yi>cyQn5Q35+4S-5Nm#7bpeuMT(ni092p>Q&xHkn(q@md;isL`dIre_(B7 zKi0YD;+q=m&R6!=Coep^@s|Eu1$#o5^?uX~#O~sF!;=_tnlBQJ&F2Qlwv7^>k46Kr zqBrMl%8BO%OKoB2ncBZwxJm=3=&@--oXXf~uL08*(zAflL=?hVzf zEXIdrvl2-CihV%ih8Uo)K>M_b3xmXvcH zj+peXh?fzbHanFK-HJog>kVhWE~eU?-A7d^=1-}L8@}JyrLo;;@}3+I{TC?Oxc~5R z{$YshFCDd%n~fSz&hm0T9eTTS>CME^ev@f{#&;27fFe6QJKlWG6l}TzQ93K&u=9o& zk#{22SAXU_~Gh8X>O)n*{%x(@rUM z#R~?SwL~UJkTrY^Tl9bW;>8O_apxxZ1dTo{Tor#o)XVEm^RQN64M4w1$;cLgCn4Pu z#o|z?Qu_TnXPNC-n(x`cLR5l)X~4GEaIT&&&~m}(FmI_ze<0t><~BEb`qJfDvW@jn z7yix640>=-)57!ROG+S5%zwQnRY`ybMadjp&C{M(+nI0t-Bbu__OKo8jDh z4<3ZMtqqG*R`+h_@>S*lN`8xyG616ZM)->*@U_Yh3J|B3y+7DOqIX`HD#Y_9R=N%ehEN=vokYgJfE&*u@#88Fr zp>u>aJr{q86s9V)S-riZ5Uu=BQJi;fH508H5n zd3tc*3CYGIsHI(3D1fC2Eh{Ul{@bq%JfC==*|-)M;A#aU82AuZT3VW;ySu$>N^DHb z%1}<+c4g%f(E{e@;&dGX28J_9{qQgW-&257sd~oIE_=TyWi`7i3VvZO~05}C1nCbQEi zM6kHDl=?DzWxB?vX35CV@bmsqOVQHOlAEf}V(Tq1-{>UWZ6oGD9bF+N79BN~lOra% z$@mIP`-pB0Utg(-GCQ-4@lqwDt_S=jj5*49I8etI295PV=GKso$|Q+sw5CQHfQXxLs3ZCc@7}!|9hdR;a9tn06(JX>n$-x%!S=SZxgNH!FB*8uj=QT`d-y5k zEY)NJM>jW%mEP0~LEf1t76no(_S2_F;Fr&4_)H0xWwJ*RO~flRbujt};s`m}o)qad zJBRhrB9XEKV7;k;M*#dRu9l%hQM>ukBC}kB^88^_6^-`mygl$9lun|sH6;Mp7Z|Wn zT56!GU?+bF0iG9@Gw?H^Hp4s@CQ~?nZEFh)q7yh2HlOv1%}J-Hr+Ex3K7qOfFwhCS zdW4yf@%(dFHkd41WD?{eFmD_|*e&pa+}w`M0A4%RzeLTPUo~+Rp t5dQbexBlDAryjLgy?f=cK=nDf)^3I1`-ya6@Fxg?;xpB!`A=R2{2!rR@OA(I diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map deleted file mode 100644 index b93678e31..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 deleted file mode 100644 index 8cc016c00..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -83321b013f1eecd9a72546893407d4cc \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc424__inherit__graph.png deleted file mode 100644 index df924b19fb3ac8606ffe1d78368ca87723f58820..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3162 zcmcJRc{r5s8pq#k*~QPk_G74wW$?3P8_Lp%5s{)S6Dh)s5wgr6St4SZ8QY{n5(a4) zdk9I$mMvr*gnsrt=k1*9ob%85_uTLGKF{^s*K$jIH55F0-Q9NZ5 zA&7_w=9nA_qXQWTv+NV@I3x9wO)Y=7B*T9NPkrDpr>&hxrBI}#q^ueaV!3IKV_&|M z-d~^d__^pd6DxzefIz50A51m#!LQdRNu$t`+K--N*-TD~orrWditg*UU~TQ^<8v=S zWUJ9lorNjVQUN=@xBVdR)-Hkr$1rNzKj3fiC6S}=}xHal$^~#2wC2Dce%d6_$ zyT4Rak{r7}ex#!(n*?;Pu{7@q%BHZlttN=5I$n*0v=$0f8oL|(pqcCFmAyS1ey{9v`Mxw*Mw@SPq6@eGc~jaK+rSy>7D z_I~;DeQxfSD1W?3K|ukkjQ;$&QGuPXh=}SlKjlD)SKq#U6A%!9aZ8AczlCH=n;GuS z=luHh%i3_4r418l1OUN5>$cI7$?@@%tHH7$?ur>uPVTF}rKCM5u$belQw^YC;EH%bnAn2qUDY-x!ia&ig^(!RGl(%UO5$a((Uxeq7|4p(m? z+X(wSf1`_{M@~(hnwnZ0@h(B+^)esly@VlXazyEbY`iu)d9}(vud0G*G23Siw^DXW z_2US9(lhki*a0*K)85e$Iu(CPnEG9gmjc$EHTH4U~c)dr5@ME*So*o+~ zr~RGjWM*J$dV1mW%*>2ucDOK5db2I*)2C1E?FbnenPyu8fuKlyR9*h}VqwY3a5zUP9Zq_TCRt`#3}ZVQt;b$j1A+)ju3EHnX+u9rbHCY?HwY3JDGL z_um~VjcjxkrM}cCu$h1Mjz*)L#hMjgx%{AYy&KL4q@|^~!bBq@Be~Xx?`qMEc!qT; zU8ju|2zUOFGls3Vgy9{|(TBxYtp1vv+cofs=C<3mF`huag(z`@}mN0g|HO#T+C z<4=UG0>R$F0lqs!urqma$PBK{1g% zqo~Nq%Uc1NP+U@A21-#aoGN6fK)jA5m{>x@y4u>9n3#eywt(+`Oc>GafVj@^QKBE;x63KVuT|9FC`vbmn=g#^2`v>bg*LVB#20Bz5?hdroo=ThS`_lz~s7dZ1cFb;t z^F<@jk|iZ2)>c+|a!9=2qA^o@1p9w<3|zz=H)cbm^0iKnDo_cdBO|0bp3E<|Hy|9+ zp@|FgW_MenxnEqOAA}D@Al<3q8#|A3uk))gn%q5HSG+xe(enKs=LjT5>F*Sf`Sk;_Iwv-_^OmnA@-|@DB{^ z>X90b#&+zi)YPY^HyqvYyLAhxa#V72zl@(j`ZMLUXkx?BOAmE5Pnm+OtF6nU<;BH= zn;{09{E`idB8 zRfwSN&mJY1a8!P9IK-O&R83bm&+ZLJQ#5xfglMrjKi|I=*nW z0;=x=5t*YC*$*3CuUGeHlZ5XChF-<&)l>ixiHYKX(Y0Y;b8Qq9dDhb4^}k5Kl6s8) z!oRWb|5#W)Ve20p)T^fCy+^T@UOkqyf;s~_BydLxzpS$fiWpt`b*jyWXzpeghS@i` z@Fye2KT-EPU-HSTQwgeIQtMW8?SF@f+1S_!2?=#M9pOp^#Uyzdl%Vk!WHs()*yrYE zIVGhcDz(d9+|T(jw6t!~Ns#u=OzoSZU;FxQBEI>9jB@wzNP&Pz?F`@FS{|YO7@>LpW)zFD-IXgV zV>OjUMN7}x^N|z_1j44kj`QIZC^dKP+==nFex|>$vQm$RVlf?Mqp;b@$&~c;c(=4k zNM?c&pB%Uc+}x=>@d2g;$_8*kMkd)!^g$y#2M4IsIruSm@XMi4CbjRn?N--rmVcx8|`H_s*uKrs!xEt<1WR&Bcw4 zfRIPFi**(j7N9aD8YWfI?T4<`r_Fm3PCq6XN1Zy_!qv_q-1GHtp^0A&9`hKqes9 z_6#Bwi^U4W=e~M12Ud5k`feD`!GUb4AR#U7+<-GMuo+zF%TJcl(^69_^Bz<&%=TN$ zzXLLYS6crgs!Ux&qhV)?OV^jG(6X}=eDB_7l9b+Sa!4I+du8ktGV3bMi|Ce7MITVA z)ixbZ7#h0jb^9f0!B$B)VNY6w`tq#*3_DFrUHxrsZIJ*{Il6>?Txoe8*9 zU}wew3ZXJ6^Q3}deRFg3$BW62AG5Nuj@5;d#gWX+%rwVkSxrQ0(VI6f#d*27ayU~V z>149GCU&}&2QUf>+MZf%ImWeOHN2elqUUyn--L=F=fZ?mo}sv=ShW!J zimNDzNYvET#d4xQeX^iAcB0B)-0Q2WVjw&M zYfQcBS6e0eXGkCl!xr+$?;L$xTqX)G=Y!XfsNUH^ju?wM1A4$KX>4o+4=Bupr6D&e zCvelN!C=o&kC|pOK4EHVy1u>+M1245TIUSc(Yft|i8`sMs7Q5bK>qxrxVX6g0xj5z zyP1iJX&iran39qLvJwPJS(zFf4p-y_*!lS20rO9)=(KRAeP_?o;idDjyt53(L|y3M z8y;pRCaQCtMfie-h6anVKG-!W2^W@^6Aa}+x2~ZfuKSq*{ODjk8~^K?v$G1(Lir4C zvWXRVkL@-vH`nqR=^y=V-fv$y|5o_rg@tsm69rl9KNHu`fWLiv{zpjz@<(oLPE-^V z7E@S%j8o5LLrMp2R5;MfOnnG87k_DM*VNRQo0_s7KQ05uWwlM;4+**D>3K>)q4y4r zMpLc*``q2TOBtHpf}E^L(N(e_e*jl__51(; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.map deleted file mode 100644 index 41c946625..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 deleted file mode 100644 index 898cfbdb9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -85e3859ea42813c8712d141519ae4f4c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRHitachiAc__coll__graph.png deleted file mode 100644 index 3e414085699c11d8272b563092b19d8ebf2965b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5726 zcmb7I2T+q;vyMtpswhpQh;*b^AvC23(t8ge2pFmmzyJXi1f&-OhAs#Qp$O7DQbI4% zdoh3{^xnCz|DAunf9}k^Gj}rCH#6_#oZWMFpM9SFsH63aoP>b{1Okz(sVeCK&w1b* zc#{aQZp(B(fd|nG^=C?;tG}PjhP(t2i1x0U(i4L>sT;F!9RuUW=AA7UiI=Zl-=HC& zx(nx|B9F8d5r~z{QF4F(noa!n(r1%pm8EYbk%GEhjz+Db5heCw*}8WL+fm${Dw<-V z!VAgO?O}sqt>F zNDWtDx2qQa{2$}Il@XVm+u_fe4~tL!^^;T8EO1k z4&hrj!co!GamXgMlE9Aa#QxjBK4Nv z-S0DkB&jwQcg}#rD@NVOd*l7@a%o|gldOs*i?~U`vljmR>D*pyJz4)T(5q{h*( zuX%Nnqn^ZYL6(g3hE|x(1)RCK&NsT8?!tln`K%gKcYb4j1IG}}1m@=B!`7^(xAygs z`}p{z2VTOTKYyO=tgk;UHlDjuDJ~hoWu>f4$P#!i9G-QXp8lqSudj3jouEB%PZmu9 zX}~EaZA@3CRQ^4*-Q^xeDUV>Zammu^>N7h#c9ra*^8Q4A^EddSs?LD{E>6ynKYtvD zqeX2y$ZEatDk>^Oen*=XxZ;me>l39xZ{LC>T&99=zb`Kr1L^7M-F~WLY1y|qTX(WQ ztc^!d3=IvX${~^wXNPe}q_TnnD3p>#g5M1%dMti%E0e5K(t{nSb_@_nzAxAGE-^KwVCkwGdIKM*{`?ma)wn`SNjgXU3=-~CJ5}R z(c>kZ=I-Hf$6+8Hk;&Hp5d_7hq&Ouz2+;={p~Z`~wzdSviY=YYAbNTaL2(HQY$75e z1P@3^NHlsVnWWi4x&{U#1>Txz(uNvo(iMi&<+Km(+`VgFe|fRxGCLkl^GE|vNJ#jR z{JzBJ+#A=gx8-W4B=h;r)_T3@h`jgoCTrP`AA}DCtQuz)YBdo=@v%RA_}&n0WFtfm+TPi*IXm3oGc5~lZdS1GOKu0!4Aj}(eZ9H0wN*@^sZ7?a1Q19?ZE70WXZQGb z%H-o<3_Yw-iI60Nm2JD<58$Ct_=Sd$t+Y< zEteN(QUT|WzkK-;$plUe4=1T_Xc%%7qo$*i{~n~Qq$FmZk(bA{yu5rsv@4y~|Ip^l1TH<~k_1PRfT+1cAC^N09diFJ2(tE#KB ziHViZc_`~@1X40Sj!jNxD26mZlau1&Y|O@VQj({0^Cc?2%6U2^ZJhumZd(6F7)bmT z;IJ5F-ozSPA&`-gWCdunFg=-pkX=uI-ubEUjn}W;BZ1M9=@<1YrbBs3})jf-0o|v9aNK90D`tCyxDzd%AmnR#`6nQyV&mg~3G7fX%X}`i#fZ4g$pDcK;t%*Ns$;)@7dk!K znz#NB->U>C>G(_(0B2GpTwcsnzpk#Wy+cc@GLSB-rmFgYhv$}qgF~kGgDs$*O-$%r zU0wN1zQ3KAFkxh5G&3-M@#5jjmoJY`Pwy}@YiVdia-`VPBnnt|1JNrVZO-1Jps*jz zd{V#H4^~oE{xS*$x(bzku10=UU!}|RoApx6XCa&GLBy0RBl-Hl!NKL`y#S0n27^WY zkKF;x-QM1|?n&g2s?6t@790H+94UvL=HKRY~bL^P)X+B`n2m7=~xX0tM~H zgKGnF9=rT9{_7o-|Nm~3Z`tnQVTMt1(n35u`Le$qk+>c$M@I6AH#4PZ9< zdKIOUg2VrewI=>?3q>>Og}$t?ZG4wqk@?Pv%k78L)BrY3Kp*^7V8GpYyRVEdK#TW! zvzNOhk_|UeC~-nWPy@0qq?)OD^t`4aDd8HD?jof-pqA%ZaHFA@bz9dQ)I~1mKVJffh+I#Gr$-!(u1Qx2iOA!<5GmYL=7eRPzaay%z_d2YgCyJaiz2OJ>tZ%pIpl0bN zmel>)CzT}9>`bf&M_sl+mb}?iz&kGw)A<=J`sCio49!7pve&^r@>#=*iP!FA-Nc}u z<5BJ|rP2nf`n~9Kg_X~97mv%mr;R6qOj#;ozV@cJ=s`TI)SOfF=n<(*#-Luj>BrL3 z7N#eqy6)>v&s5JJoJPTnSZn)pYJaK@osbY@mg?S)VmtuB%W?<{PdkYhgu9pDwGBH$ zDL*K39obJ6+lcJ+w)N{Ob|yd3&}0n3e4E-brAZ+k7ahBKBCbekg4nG&1KaAaM&@;> zw6u&8Dc{(<)SB?FI_30!EQ_cU-pOVSMhFp@6O(gi&Ws-?_mZ+D7R-%8v-5=!Iu&(0_6&>u?4YFkcBeU_xg>omE z-ZQHsnCLwDfH1Bk^0vylkon%d=C0Z3z~b&iE;GK&vaca5k}IMzQ)!Dso4qqHTNK{>dZA5GwcjTXg+NjGB;K0+ zb}tqF{WsPcvqhmr8uhd|>aOumZ<9{54`2(O;m&YO5bA63=Whg%K!99$mX3wRIl8i>hArdB zmB&)z1jvLAM73z>)fq`h-O6;!`=Fr7>etzm-TK2(yR+FDB%g zBe_gCntG|;IN7bKu5Np{K573*oB!v{D>DQQ9i`ui>P^zMvM%BUk>>OTW0}W4I5N&N zuy;%Fwbkgbti9z()6EZAaYSW|cQlp;NOhXit1XSW@LNy+^Wj%RKD|K)fi1=ya`m5^hnW}dhN zZ}f6hVgOQLexrW%%Qi$qb-SYTxTB}1XTK^YhH|>f&7muvgMf%g#A%GLKUM06f{_s| zh?$w0JN$hX_r%16JARD6*rMhIFF?Zk_I&_8tbGezSjf)B1zcU8Zw~^2FsH$PXnV*^ zu@!}B3Jg;zV?+nSGR1W^{c3fTlnAJ(sOY0qd&7~^{?Y#wMIzc9YrfLa+wfa5qSW59f&EJv7^RT9BgbsI2@FW=mrvr z1Qx8Xum3B0N=r+>=H=<@>b88m%M}(G`L&?n1iS+{1>f!BLdgfpDJv`gfk^`_f2`ox zd7Z_dG1Ts!$jKB?3%}jHyg2yyBGYC4;$veK^z`oZ_g4(i&X&C-4G0Jb{_tUOWu@ai zA!%4tRC`Oy7gW3x2PdbVkx@uViQwYmVq06ANtu-1{m!!!b~O&57m=|Fx_shO;x_{4|`DpuoABz7h=nXixtkgG|g&rd+YK2i2eJEN`DwwDq4jF zujOy8Zo4bFolLLs#yxA~oB&S?xqgsD5xZuBVTv2>y|{G;!t+!UCC!{KCrFNn*sgK1 zmwaE^O-*cj=5 zX8vvdrUNr-vt!bQ(C7^PjP6dvAXEL5PTZ5nhl%owITG;7A2iTSdSQlOLr8$3rH%Eo zV?t)sWD>>-SK|Hnj>t*vr|BBQ$46C3KDj=(MgAU|M=zHeZ(P?uW?ZFe-|&1px>0fV zLPvk}-TOEOj)amZveEZemjP*>88qLRNI)G7E#t3IjOIybZ*DzNAVS@Nmf1Jw?E$G4 zfl>ESIC-OsP@e;8OKu0%&*u&M(OR4t_s9b0(&i|^9@qotNO2s()6?7hTGP4!CzhNA zo)SwF+vPySaR0+=bbSrVD^xUPbS(fEGq-eH>qO8FUy^MMHbDYrA?ua$|f+(3E?Io7DLcaVJ zfKez>3KIX6V|d?T1d+Dqx7$TcZp`p*Cf-|(08NJk^iBa&h+*j| z8%r~w=ji1F>ZfdAroh<208D^p$NW#`X=DeWJs=BoHiXzkf<;-B*idF!@hO7Y@)zE0>A`ALbJrGDP1jr6P3H# zi)sZ#P~Uu*%8b>Ota+6y2RnQ44PuINb3VO2U`284q(jCsFdFd(1{xa4Vjsnw#$u7k z9B&hQ*5HL6!6xilUWPqD^P!<^qpS%f6vV{D582pssR`4x#&H{X@3YJERr!SU^!{nL zCQZOAz+*z|$+DLKO~1{+@Z7+F8rU>v(~E+JhQ|MRF%%&901mZGRXEjnu13GAfs{B5 zWhwvN8BqLM=`xen7e|cp0gQBXbP)J5&FW>3q<@fEL?E1FQ=d&9MJV&xJiH( z_x?KPQ$5q(f0q#+qV*u61x zx1l;8w`fMGpE2^6j1w7?LUi+uN7)iNr9{GB7*Z}{b~HP@h#B0+9$Zk`Tb zxd-Tdlke8=Uco&N)DqbeD1qqondLUDp3pvXxxaSn9Tm5q6SLj zL-w%$REJSzhe?P#Hox9 z<^Vrl<9|}NM)IjEflCx<2N2&ij(;hs3_B^2lW$CWeHro@z)b^a*_@XV(EUv}d(csg zvQU4#q1evp?`&m2{)({y;)a`(J^hmn!mh4n4>{5cSu12u*VWc0UwXT{gP<`JDQt12p9Vmss3XY0lb57dgrc{W!Qs;Kjwmb;Pr8`H*f1LMzk zJO9DY|LfNpwN;rqE`hSoMHbzJW)&9J1uz84LMK=eJ<4*z-euPHKahqtHt!p|8sQbO Yg - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRKelonAc Member List
-
-
- -

This is the complete list of members for IRKelonAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRKelonAcprivate
_irsendIRKelonAcprivate
_previousFanIRKelonAcprivate
_previousModeIRKelonAcprivate
_previousTempIRKelonAcprivate
begin(void)IRKelonAc
calibrate(void)IRKelonAcinline
convertFan(const stdAc::fanspeed_t fan)IRKelonAcstatic
convertMode(const stdAc::opmode_t mode)IRKelonAcstatic
ensurePower(const bool on)IRKelonAc
getDryGrade(void) constIRKelonAc
getFan(void) constIRKelonAc
getMode(void) constIRKelonAc
getRaw(void) constIRKelonAc
getSleep(void) constIRKelonAc
getSupercool(void) constIRKelonAc
getTemp(void) constIRKelonAc
getTimer(void) constIRKelonAc
getTimerEnabled(void) constIRKelonAc
getTogglePower(void) constIRKelonAc
getToggleSwingVertical(void) constIRKelonAc
IRKelonAc(uint16_t pin, bool inverted=false, bool use_modulation=true)IRKelonAcexplicit
send(const uint16_t repeat=kNoRepeat)IRKelonAc
setDryGrade(const int8_t grade)IRKelonAc
setFan(const uint8_t speed)IRKelonAc
setMode(const uint8_t mode)IRKelonAc
setRaw(const uint64_t new_code)IRKelonAc
setSleep(const bool on)IRKelonAc
setSupercool(const bool on)IRKelonAc
setTemp(const uint8_t degrees)IRKelonAc
setTimer(const uint16_t mins)IRKelonAc
setTimerEnabled(const bool on)IRKelonAc
setTogglePower(const bool toggle)IRKelonAc
setToggleSwingVertical(const bool toggle)IRKelonAc
stateReset(void)IRKelonAc
toCommon(const stdAc::state_t *prev=nullptr) constIRKelonAc
toCommonFanSpeed(const uint8_t speed)IRKelonAcstatic
toCommonMode(const uint8_t mode)IRKelonAcstatic
toString(void) constIRKelonAc
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc.html deleted file mode 100644 index 22d4d46b4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc.html +++ /dev/null @@ -1,1209 +0,0 @@ - - - - - - - -IRremoteESP8266: IRKelonAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

#include <ir_Kelon.h>

-
-Collaboration diagram for IRKelonAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRKelonAc (uint16_t pin, bool inverted=false, bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
void send (const uint16_t repeat=kNoRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void ensurePower (const bool on)
 Since the AC does not support actually setting the power state to a known value, this utility allow ensuring the AC is on or off by exploiting the fact that the AC, according to the user manual, will always turn on when setting it to "smart" or "super" mode. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void setTogglePower (const bool toggle)
 Request toggling power - will be reset to false after sending. More...
 
bool getTogglePower (void) const
 Get whether toggling power will be requested. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature setting. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setDryGrade (const int8_t grade)
 Set the dehumidification intensity. More...
 
int8_t getDryGrade (void) const
 Get the current dehumidification intensity setting. In smart mode, this controls the temperature adjustment. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode (void) const
 Get the current operation mode setting. More...
 
void setToggleSwingVertical (const bool toggle)
 Request toggling the vertical swing - will be reset to false after sending. More...
 
bool getToggleSwingVertical (void) const
 Get whether the swing mode is set to be toggled. More...
 
void setSleep (const bool on)
 Control the current sleep (quiet) setting. More...
 
bool getSleep (void) const
 Is the sleep setting on? More...
 
void setSupercool (const bool on)
 Control the current super cool mode setting. More...
 
bool getSupercool (void) const
 Is the super cool mode setting on? More...
 
void setTimer (const uint16_t mins)
 Set the timer time and enable it. Timer is an off timer if the unit is on, it is an on timer if the unit is off. Only multiples of 30m are supported for < 10h, then only multiples of 60m. More...
 
uint16_t getTimer (void) const
 Get the set timer. Timer set time is deleted once the command is sent, so calling this after send() will return 0. The AC unit will continue keeping track of the remaining time unless it is later disabled. More...
 
void setTimerEnabled (const bool on)
 Enable or disable the timer. Note that in order to enable the timer the minutes must be set with setTimer(). More...
 
bool getTimerEnabled (void) const
 Get the current timer status. More...
 
uint64_t getRaw (void) const
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint64_t new_code)
 Set the raw state of the object. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=nullptr) const
 Convert the internal A/C object state to it's stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal settings into a human readable string. More...
 
- - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode (stdAc::opmode_t) into it a native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t fan)
 Convert a standard A/C fan speed (stdAc::fanspeed_t) into it a native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed to it's stdAc::fanspeed_t equivalent. More...
 
- - - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
KelonProtocol _
 
uint8_t _previousMode = 0
 
uint8_t _previousTemp = kKelonMinTemp
 
uint8_t _previousFan = kKelonFanAuto
 
-

Constructor & Destructor Documentation

- -

◆ IRKelonAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRKelonAc::IRKelonAc (uint16_t pin,
bool inverted = false,
bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRKelonAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRKelonAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRKelonAc::convertFan (const stdAc::fanspeed_t fan)
-
-static
-
- -

Convert a standard A/C fan speed (stdAc::fanspeed_t) into it a native speed.

-
Parameters
- - -
[in]fanA stdAc::fanspeed_t fan speed
-
-
-
Returns
The native speed equivalent.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRKelonAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.

-
Parameters
- - -
[in]modeA stdAc::opmode_t operation mode.
-
-
-
Returns
The native mode equivalent.
- -
-
- -

◆ ensurePower()

- -
-
- - - - - - - - -
void IRKelonAc::ensurePower (const bool on)
-
- -

Since the AC does not support actually setting the power state to a known value, this utility allow ensuring the AC is on or off by exploiting the fact that the AC, according to the user manual, will always turn on when setting it to "smart" or "super" mode.

-

Ensures the AC is on or off by exploiting the fact that setting it to "smart" will always turn it on if it's off. This method will send 2 commands to the AC to do the trick.

-
Parameters
- - -
[in]onWhether to ensure the AC is on or off
-
-
- -
-
- -

◆ getDryGrade()

- -
-
- - - - - - - - -
int8_t IRKelonAc::getDryGrade (void ) const
-
- -

Get the current dehumidification intensity setting. In smart mode, this controls the temperature adjustment.

-
Returns
The current dehumidification intensity.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRKelonAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRKelonAc::getMode (void ) const
-
- -

Get the current operation mode setting.

-
Returns
The current operation mode.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IRKelonAc::getRaw (void ) const
-
- -

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

-
Returns
A PTR to the internal state.
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRKelonAc::getSleep (void ) const
-
- -

Is the sleep setting on?

-
Returns
The current value.
- -
-
- -

◆ getSupercool()

- -
-
- - - - - - - - -
bool IRKelonAc::getSupercool (void ) const
-
- -

Is the super cool mode setting on?

-
Returns
The current value.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRKelonAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
Get current setting for temp. in degrees celsius.
- -
-
- -

◆ getTimer()

- -
-
- - - - - - - - -
uint16_t IRKelonAc::getTimer (void ) const
-
- -

Get the set timer. Timer set time is deleted once the command is sent, so calling this after send() will return 0. The AC unit will continue keeping track of the remaining time unless it is later disabled.

-
Returns
The timer set minutes
- -
-
- -

◆ getTimerEnabled()

- -
-
- - - - - - - - -
bool IRKelonAc::getTimerEnabled (void ) const
-
- -

Get the current timer status.

-
Returns
Whether the timer is enabled.
- -
-
- -

◆ getTogglePower()

- -
-
- - - - - - - - -
bool IRKelonAc::getTogglePower (void ) const
-
- -

Get whether toggling power will be requested.

-
Returns
The power toggle state
- -
-
- -

◆ getToggleSwingVertical()

- -
-
- - - - - - - - -
bool IRKelonAc::getToggleSwingVertical (void ) const
-
- -

Get whether the swing mode is set to be toggled.

-
Returns
Whether the toggle bit is set
- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRKelonAc::send (const uint16_t repeat = kNoRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setDryGrade()

- -
-
- - - - - - - - -
void IRKelonAc::setDryGrade (const int8_t grade)
-
- -

Set the dehumidification intensity.

-
Parameters
- - -
[in]gradehas to be in the range [-2 : +2]
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRKelonAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speed0 is auto, 1-5 is the speed
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRKelonAc::setMode (const uint8_t mode)
-
- -

Set the desired operation mode.

-
Parameters
- - -
[in]modeThe desired operation mode.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRKelonAc::setRaw (const uint64_t new_code)
-
- -

Set the raw state of the object.

-
Parameters
- - -
[in]new_codeThe raw state from the native IR message.
-
-
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRKelonAc::setSleep (const bool on)
-
- -

Control the current sleep (quiet) setting.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setSupercool()

- -
-
- - - - - - - - -
void IRKelonAc::setSupercool (const bool on)
-
- -

Control the current super cool mode setting.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRKelonAc::setTemp (const uint8_t degrees)
-
- -

Set the temperature setting.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTimer()

- -
-
- - - - - - - - -
void IRKelonAc::setTimer (const uint16_t mins)
-
- -

Set the timer time and enable it. Timer is an off timer if the unit is on, it is an on timer if the unit is off. Only multiples of 30m are supported for < 10h, then only multiples of 60m.

-
Parameters
- - -
[in]minsNr. of minutes
-
-
- -
-
- -

◆ setTimerEnabled()

- -
-
- - - - - - - - -
void IRKelonAc::setTimerEnabled (const bool on)
-
- -

Enable or disable the timer. Note that in order to enable the timer the minutes must be set with setTimer().

-
Parameters
- - -
[in]onWhether to enable or disable the timer
-
-
- -
-
- -

◆ setTogglePower()

- -
-
- - - - - - - - -
void IRKelonAc::setTogglePower (const bool toggle)
-
- -

Request toggling power - will be reset to false after sending.

-
Parameters
- - -
[in]toggleWhether to toggle the power state
-
-
- -
-
- -

◆ setToggleSwingVertical()

- -
-
- - - - - - - - -
void IRKelonAc::setToggleSwingVertical (const bool toggle)
-
- -

Request toggling the vertical swing - will be reset to false after sending.

-
Parameters
- - -
[in]toggleIf true, the swing mode will be toggled when sent.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRKelonAc::stateReset (void )
-
- -

Reset the internals of the object to a known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRKelonAc::toCommon (const stdAc::state_tprev = nullptr) const
-
- -

Convert the internal A/C object state to it's stdAc::state_t equivalent.

-
Returns
A stdAc::state_t containing the current settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRKelonAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed to it's stdAc::fanspeed_t equivalent.

-
Parameters
- - -
[in]speedA native fan speed value.
-
-
-
Returns
The stdAc::fanspeed_t equivalent.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRKelonAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode to it's stdAc::opmode_t equivalent.

-
Parameters
- - -
[in]modeA native operating mode value.
-
-
-
Returns
The stdAc::opmode_t equivalent.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRKelonAc::toString (void ) const
-
- -

Convert the internal settings into a human readable string.

-
Returns
A String.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
KelonProtocol IRKelonAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRKelonAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _previousFan

- -
-
- - - - - -
- - - - -
uint8_t IRKelonAc::_previousFan = kKelonFanAuto
-
-private
-
- -
-
- -

◆ _previousMode

- -
-
- - - - - -
- - - - -
uint8_t IRKelonAc::_previousMode = 0
-
-private
-
- -
-
- -

◆ _previousTemp

- -
-
- - - - - -
- - - - -
uint8_t IRKelonAc::_previousTemp = kKelonMinTemp
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.map deleted file mode 100644 index f13c73618..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.md5 deleted file mode 100644 index b22444bf8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6183977110fffc864a09ec8cfb826679 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelonAc__coll__graph.png deleted file mode 100644 index 8f8476135f716d8ff226620a6d1d8adb9cf94d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5872 zcmbW51yq#Zy2b$o3=jbkM7jkTT1rxCh(Rd@VJL@gq)R~rq@=rh=s}u+KP6ov0#ZuX z&^^T2o^$RwH`ZNut-EH;{$|bht^MtH$NN0LH{>}?k@yz%EgT#iVyKdw2Dpxauip&< z(7Ja8-3Au|6BR`{oU1>dOmsmE4$l2NsGN+Jdn#teOG|4U{nzgHgXgo%7Bq5>clq91 z&lfu^6if1s<9{(SG3l644*uGqO>cpe`!YKL7h?HwqU7ZD8v5m{f{dE#bJOoywnW(k zn&FmVzi{|(+{t|Rbdk?_i$3Ja~9obfaf`pm!I#nw+IdWQR#JTci@SZ-?$rFFusv85Tjs@^i)F_nUBKF zqvS*H^SP{lcP&zRuAreo78Mnx79ZlpDf2v0=|7rR1xm>Cb8i-Cc16YT&#YH7!KBPe zN=g;3R3sF6Q@NTfaSUJB<)b+T1!DtmQ$9I)9nHc5ZJV4-Y7HRVuWh+d3qgvZ8>bqw zv;B8=96l01RDi?Nwdafc%4ephsf4WVbw$$qW%>}{<5#+D=pgXE;Dx3YnV6V-MkKYh z$(jwNt7&Q7qlD;JXt|_m7#lOTwzf_;xP&frMJ_BYA>u^V=QgIN_3^GjrZs+P0 zdu)`})_LsbpQ`MGZc*N+PG2MGBU4fyio0#uR1R8>=10ZHe^uc@e_(-zQSoJ~ImXAw zlaZ4Ll$Z0+(a|-Xtry28B-C2I&eMHb#L3C&esysSBFxNWz=0Svbj){#PB#09%gf7` z7&OMyin}J(hJ5318xLIh1uE;MEW^lZ@RDwI&2huIQzS=UllRz6vg zy6UN&^HqVt?g*ImTU5YQY-jG%`<^gb|0v0-t4jnCRliypOcTFJMD(UFp1T{RYGq}W zGM~z4N?<;ej<~wKcw=TpMn%;kDkRC>Yq;*lIj3K7YOo`slN> zv)cpvm^v1O`H_SkVn5rY8;{U!_C7@sbtfeyEg!aAU3xwETnco}MF zF!8*qkal%;j@jSeADAlFtL|;`dA&|VL=;%@tVIy;J~;S>?-h2=RFE2X=kO5G6+!!07xe+Gs@Y&_PrdWXyM{jMcalD5iT3X> zo0}Zm+^k$&eNBGh3Z|E}F)`#gadC00ho1WS`qZ)5(^K7b-clwpvE(EHbAG#Nk#FC= z_4iHvbUk!(a;m7UEii2HT}E6ZAmU9Jvo0&$u$`_Wg+{N=Gzu5M(oD8z(e9p}$$iy& z7>RKY9!E0-!r0t=d=cv{btu6RYIu3LIT`ce!*z&Zb3Y-yw-KCCn_v%HG}{fpD)_+8|Sx8Fw^GrExpKa(`00 zrn*F@@SOKGhaubXT6;q)YwLQarB5EZVCCvdO4p^N`+9qo)YK4dA8v-vqZ7omksq(P zUr*(OK&ZkMz({N=O`9k&dlGStjpCt{JZ6XMV_Gj?I-l$q$8*0{P*5Nc5)uMWa&mF; zC8=6e>#?aN%e{Rom;f=z21!Z4e2~{;?+p@()GO^98j1uPQNVuo>8)G0hS%P9baqy^ zzo==^F4n1hyQU#4D|@nDT)tJ0IXm7Sny55Q5_f}u+_1Q~SYgzP*Vfkd_=u&F+r`tv z!}0Rm1B5d5C0wVN6(kq18hZZOa2GleP94+7XpA&F5)Sev%Xv6gHEnK*xoz zzqhtvuU=7svtDA@lAfE(qHkdEzTx4*yLULC^I;3Y{tT&%)l~}`8k(P4FHKCC5D3J{ z=_x549ZX9rmX%}x84oc~_V#{CN=nMY&OYZn#mdGuzrNo4t2F=|!CdtWNt>yffo#57 z9djF-$A;d!_%Il3xxlZ~w#o~{la%Q%Y;rA zmE|n@cp3s`C|O8Ih{#}1^`?=nF zi+sA2QNX6fipg%n&zyt??iNq+vmSdAF^(&wed?HL<=5hy&~Q(!34hHEXVI1mYAbs} z*(YbeXNN|9GP)?A&c*E_R0+nG*c4i36W(ij>51nCy|+Co+@YDrlh%b(c=@?RZ7#6t zL=^7#oFfx2oWB(n6=GG7cAQa8awH^Es>m!CD1u*BEv`Rn4!(TQSl_KiVn=cB=$Q$w zA-e3@liuZKdph5FtE_Z2wm8jWh=}#2#0UL&nUBs>WsVLq1Y^SCKZwhiV;C`4drG<~ zn&X>S&5jP6W|28wRYOf;v?;2b?`GeZ6>i#*__kkvIW)Z(vnJ)Vu*bcD|3fAzjKAxO zJ!PA0Z^Le6``2!vh{{ZlSq$>Bc^#Iom*n(}*vnj>Wn;TjCm3mpEaKf=@+aayq7b59 z&qTc(S$JX2C4c0An#rZ!{M0jX(wbMKlV78^>`(%mHh+|vUHEax@GPX*yq8zV5y9Pu zs>^5y9bnTwR-~zB?#g<^Tk>&GMlz!PF8#*!cMmVS!_th`AOsb%)MJ%3@ zzlk(%b0tY<==HYZKj>yl!HNwciRKda*UEV`>L-r# z8P(0x7~?*^jT!84@l`^`qtq>wg-fp`N?ZN*3yD#rY-spdZTS4jU-=mUo_8EAQOpIs zu(q`*NSHxZr&sRJTTzpe0}PbullP^Mq?DCB#Dh@QV-Cj`Mb{s>cw~}t)ur-p`x;L8Qbn58FsOd`F(OIP;@cMRXz2`C;b|sg*!4k(u zQMf4;a*{<8i3^($pEx(KinggrI7_3u>0lT897oD)>~`1IQL6jCGWqM9wu~un{=8hE z>~+ouyw%gXP^Ch)w-fg(-JbKg2F7!-E6XM1VGo{Z;CAZPQqh^7jttR4gVZ>2%B6+r zZg00verQrilMaj@o8{k~G2DA_Zmr&M`o;E+S60NpoMv@C^81Z$kwV)uF41BRFeEoa z_68BR)ggEuW_<_BdIQscM6Y$Dtz7}wL=M$|H6@yC+PZL|m(5!zqsdDvD`3QPjWVvkx504M#pIQZ*>z} z2bpS*ArxS?-K@VR6_Zo5l~JvMAk-CgKf zSYG}L%*^B$OY-LC=DNB%UbB9x!E_00c+3AZlbZzC*Z;SZv=mwfiyaldli`fz_(mYh z4&!`B8rmd-Um(1!R}w)Yb^ck%`p0v9{r(}}BZ2!o@ctvr)FVz#6U@(QptkKzcEBF5 zt*z0ByM}SSEW3O6?q2{F_>$}*Yo=>#AMWn%F0QPQQ&4nziz92B{#Fn1syGi=Z&Q}L+CN_U9JsV$Yxt`y1rkO|5RQ|g?s4qp> z{>hcZo9??FV@U1g78kL!&G~tz3@N|nk(&Rn7gIQVV6C>7PI<}7KGe+8mrp2em-Rju z=97=NDm4-yGb;4frBYQBi1vPqkB`q}r759G{9{HAj$ojtPFvHWIQ#+vxT~WDB+)F4 zP%>9n*Vy>@=(sqYp}b<46mAY&k|?P#|;h+W?*8%i|Og;qW9|u8sF2`*WT4d7^fWAYLuxMNq4Lt zSz9Z-w6sJ;MBr?)_O`)neEYOcfQQCC`}8I>5X+|bg_c&*I}y>~A3DdFm6fj5k(?x9dpdl4{MEN&09N#- z6_e(kv!L@8`~nK7J@EbS&&QpU>*LS=V^6jTismZE<3K z3FnwyzttdgjC&AA@L^iiK>B89Qmx4TmiEVitw6KStM6ywavIf{ zZl51s?M^d$@9RVi7!V{|AtKOGfk7F}&kWZQ7zZ(mD6LYe%Hb3U#MK-9vj%dl zM@k=7i+E1Jt`?fUq`2cZ=!%C8Dyd>0-?&9S_m4@t>E9-&@$Y7)VBLwiXq!VAJ$Z39 zzJ&+bvh~q3&$JB4I^g6DnYt_n1U-kKcE~)6F zy!++bd#w-8Kfn5G;_9fieQ0F<@a8d$B@WN~t4q$690{zXSr)^sx$$tC=Yg*hr_pe^ z;6cW!alPjULZ-9JM~gqg_4Wqie`8}Cg0koYf>p~|8yjvcV~ZNI$0mePJSlKK0)(!`2POiewu(Z|&1v@|rT z4i3CoSy}zbLZQrx5nt-mw6!T59Uc4AB~pObcMZL;qxU%g#L`M5_O{!K?}m$*i-yor z{Yv@*IC2ZLT}!tgyc3fB!@o~{+6Q{=^9ZJ@wksh#NnOc z`8=if<>`t}h)i8+yN`O_Jwif4Hudy=>~>2ete|~-yjI2o4yUWEtUSSDs{lM~Vm6Xd zC{#3%F<7dIjE9G400FVd@3ufdTu*e>9Ub{V6m*uBmN-vO7i0QUgh_;J8y=+?`ko^G zlo_ zmzPn1&7z~DhpnnhURC-p6I?6Nua8Ed_{qq~PWCgdRAppvi(i)8RSYH=`u1>@H?^^6 zc*_EE`1_wNi;Hj4{VqK=F&K~KB=ZRXbpe={<#07mPcfiJK((&<`S~?tw;Bm;nX(=* z6>Xu+hv@bt#xgDs*mX+v0&8pC0$d>QCMB?X#>U1<-!P79ASHTV9F7ApzRttLlbV(W z1mI46eZ3l7c6n*Z5lF#(h`v%Joy0#ONwWYZR40|fkGO@4iz^}`vIC;l)YrFx@Njbe zsfYl$!2uxH0aU#RiNpqy1++>lE8i+_xfGL>lmwZTjE)X+wyXQO?!2+jc}SwG$zz`b z0x`QdJ3K!u_gm^=&ydS&xHu)JrvAhN?da&JaK-4+d2RA#LZF$Dn_KZ28S0?A@$j(# z716}xR&tQHp%$&Fad`^YdwYjQMB3fGu3j~o1+ZigC;^nCkEp@aKHcpg zKUg2T4UL{?bmOtAZWt32qz3Xs8qoSqAqSU1SeWu%x`bCv1Nw2_=3Glg>Fe70g#}Z1 zI;c7UR=z<@oCnq^QI)L>j<$lmYDEDhxD60ABrI$(CsH!Ire^m;T$R~?2?*p*iK5DU zD0{?$O2ShRyd0Du!0xJZ-(}*`Dap*w-yKQ;9L(pwWAwykLi)uEQc&q|oAXHkR-$$d zI=?nrfJ@DC@2}5{&j4rxxdS5wXLb=&JI5w24vGa%!02@K#ISEyX@B?;oNLutH6*D5 zb_9S{`Ix2A0`--+mvG}r6awt^yOfkcfU}=Gi8oL8_^6ihgp`_E832Cr^kum4>|Z@S zA-Yv&y8zwyx|t)v!{hlAl2_->pujV0QIAGTw0|UK78QN)ZmBO}VPiuDpfOL=4j$;h zWTL{@)&}=C+$B+z6P$?Pu&{g2q#heB^~N1+PHKh~SUu!Z3}oO?` - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRKelvinatorAC Member List
-
-
- -

This is the complete list of members for IRKelvinatorAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRKelvinatorACprivate
_irsendIRKelvinatorACprivate
begin(void)IRKelvinatorAC
calcBlockChecksum(const uint8_t *block, const uint16_t length=kKelvinatorStateLength/2)IRKelvinatorACstatic
calibrate(void)IRKelvinatorACinline
checksum(void)IRKelvinatorACprivate
convertMode(const stdAc::opmode_t mode)IRKelvinatorACstatic
fixup(void)IRKelvinatorACprivate
getFan(void) constIRKelvinatorAC
getIonFilter(void) constIRKelvinatorAC
getLight(void) constIRKelvinatorAC
getMode(void) constIRKelvinatorAC
getPower(void) constIRKelvinatorAC
getQuiet(void) constIRKelvinatorAC
getRaw(void)IRKelvinatorAC
getSwingHorizontal(void) constIRKelvinatorAC
getSwingVertical(void) constIRKelvinatorAC
getTemp(void) constIRKelvinatorAC
getTurbo(void) constIRKelvinatorAC
getXFan(void) constIRKelvinatorAC
IRKelvinatorAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRKelvinatorACexplicit
off(void)IRKelvinatorAC
on(void)IRKelvinatorAC
send(const uint16_t repeat=kKelvinatorDefaultRepeat)IRKelvinatorAC
setFan(const uint8_t speed)IRKelvinatorAC
setIonFilter(const bool on)IRKelvinatorAC
setLight(const bool on)IRKelvinatorAC
setMode(const uint8_t mode)IRKelvinatorAC
setPower(const bool on)IRKelvinatorAC
setQuiet(const bool on)IRKelvinatorAC
setRaw(const uint8_t new_code[])IRKelvinatorAC
setSwingHorizontal(const bool on)IRKelvinatorAC
setSwingVertical(const bool on)IRKelvinatorAC
setTemp(const uint8_t degrees)IRKelvinatorAC
setTurbo(const bool on)IRKelvinatorAC
setXFan(const bool on)IRKelvinatorAC
stateReset(void)IRKelvinatorAC
toCommon(void) constIRKelvinatorAC
toCommonFanSpeed(const uint8_t speed)IRKelvinatorACstatic
toCommonMode(const uint8_t mode)IRKelvinatorACstatic
toString(void) constIRKelvinatorAC
validChecksum(const uint8_t state[], const uint16_t length=kKelvinatorStateLength)IRKelvinatorACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC.html deleted file mode 100644 index 97d75459d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC.html +++ /dev/null @@ -1,1340 +0,0 @@ - - - - - - - -IRremoteESP8266: IRKelvinatorAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Kelvinator A/C messages. - More...

- -

#include <ir_Kelvinator.h>

-
-Collaboration diagram for IRKelvinatorAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRKelvinatorAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
void send (const uint16_t repeat=kKelvinatorDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the internal state to have the power on. More...
 
void off (void)
 Set the internal state to have the power off. More...
 
void setPower (const bool on)
 Set the internal state to have the desired power. More...
 
bool getPower (void) const
 Get the power setting from the internal state. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature setting. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the desired operation mode. More...
 
uint8_t getMode (void) const
 Get the current operation mode setting. More...
 
void setSwingVertical (const bool on)
 Control the current vertical swing setting. More...
 
bool getSwingVertical (void) const
 Is the vertical swing setting on? More...
 
void setSwingHorizontal (const bool on)
 Control the current horizontal swing setting. More...
 
bool getSwingHorizontal (void) const
 Is the horizontal swing setting on? More...
 
void setQuiet (const bool on)
 Control the current Quiet setting. More...
 
bool getQuiet (void) const
 Is the Quiet setting on? More...
 
void setIonFilter (const bool on)
 Control the current Ion Filter setting. More...
 
bool getIonFilter (void) const
 Is the Ion Filter setting on? More...
 
void setLight (const bool on)
 Control the current Light setting. i.e. The LED display on the A/C unit that shows the basic settings. More...
 
bool getLight (void) const
 Is the Light (Display) setting on? More...
 
void setXFan (const bool on)
 Control the current XFan setting. This setting will cause the unit blow air after power off to dry out the A/C device. More...
 
bool getXFan (void) const
 Is the XFan setting on? More...
 
void setTurbo (const bool on)
 Control the current Turbo setting. More...
 
bool getTurbo (void) const
 Is the Turbo setting on? More...
 
uint8_t * getRaw (void)
 Get the raw state of the object, suitable to be sent with the appropriate IRsend object method. More...
 
void setRaw (const uint8_t new_code[])
 Set the raw state of the object. More...
 
stdAc::state_t toCommon (void) const
 Convert the internal A/C object state to it's stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal settings into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcBlockChecksum (const uint8_t *block, const uint16_t length=kKelvinatorStateLength/2)
 Calculate the checksum for a given block of state. More...
 
static bool validChecksum (const uint8_t state[], const uint16_t length=kKelvinatorStateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a standard A/C mode (stdAc::opmode_t) into it a native mode. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode to it's stdAc::opmode_t equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed to it's stdAc::fanspeed_t equivalent. More...
 
- - - - - - - -

-Private Member Functions

void checksum (void)
 Calculate the checksum for the internal state. More...
 
void fixup (void)
 Fix up any odd conditions for the current state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
KelvinatorProtocol _
 
-

Detailed Description

-

Class for handling detailed Kelvinator A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRKelvinatorAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRKelvinatorAC::IRKelvinatorAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRKelvinatorAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcBlockChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
uint8_t IRKelvinatorAC::calcBlockChecksum (const uint8_t * block,
const uint16_t length = kKelvinatorStateLength / 2 
)
-
-static
-
- -

Calculate the checksum for a given block of state.

-
Parameters
- - - -
[in]blockA pointer to a block to calc the checksum of.
[in]lengthLength of the block array to checksum.
-
-
-
Returns
The calculated checksum value.
-
Note
Many Bothans died to bring us this information.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRKelvinatorAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRKelvinatorAC::checksum (void )
-
-private
-
- -

Calculate the checksum for the internal state.

- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRKelvinatorAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.

-
Parameters
- - -
[in]modeA stdAc::opmode_t operation mode.
-
-
-
Returns
The native mode equivalent.
- -
-
- -

◆ fixup()

- -
-
- - - - - -
- - - - - - - - -
void IRKelvinatorAC::fixup (void )
-
-private
-
- -

Fix up any odd conditions for the current state.

- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRKelvinatorAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getIonFilter()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getIonFilter (void ) const
-
- -

Is the Ion Filter setting on?

-
Returns
The current value.
- -
-
- -

◆ getLight()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getLight (void ) const
-
- -

Is the Light (Display) setting on?

-
Returns
The current value.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRKelvinatorAC::getMode (void ) const
-
- -

Get the current operation mode setting.

-
Returns
The current operation mode.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getPower (void ) const
-
- -

Get the power setting from the internal state.

-
Returns
A boolean indicating if the power setting.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getQuiet (void ) const
-
- -

Is the Quiet setting on?

-
Returns
The current value.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRKelvinatorAC::getRaw (void )
-
- -

Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.

-
Returns
A PTR to the internal state.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getSwingHorizontal (void ) const
-
- -

Is the horizontal swing setting on?

-
Returns
The current value.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getSwingVertical (void ) const
-
- -

Is the vertical swing setting on?

-
Returns
The current value.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRKelvinatorAC::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
Get current setting for temp. in degrees celsius.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getTurbo (void ) const
-
- -

Is the Turbo setting on?

-
Returns
The current value.
- -
-
- -

◆ getXFan()

- -
-
- - - - - - - - -
bool IRKelvinatorAC::getXFan (void ) const
-
- -

Is the XFan setting on?

-
Returns
The current value.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRKelvinatorAC::off (void )
-
- -

Set the internal state to have the power off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRKelvinatorAC::on (void )
-
- -

Set the internal state to have the power on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRKelvinatorAC::send (const uint16_t repeat = kKelvinatorDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speed0 is auto, 1-5 is the speed
-
-
- -
-
- -

◆ setIonFilter()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setIonFilter (const bool on)
-
- -

Control the current Ion Filter setting.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setLight()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setLight (const bool on)
-
- -

Control the current Light setting. i.e. The LED display on the A/C unit that shows the basic settings.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setMode (const uint8_t mode)
-
- -

Set the desired operation mode.

-
Parameters
- - -
[in]modeThe desired operation mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setPower (const bool on)
-
- -

Set the internal state to have the desired power.

-
Parameters
- - -
[in]onThe desired power state.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setQuiet (const bool on)
-
- -

Control the current Quiet setting.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setRaw (const uint8_t new_code[])
-
- -

Set the raw state of the object.

-
Parameters
- - -
[in]new_codeThe raw state from the native IR message.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setSwingHorizontal (const bool on)
-
- -

Control the current horizontal swing setting.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setSwingVertical (const bool on)
-
- -

Control the current vertical swing setting.

-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setTemp (const uint8_t degrees)
-
- -

Set the temperature setting.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setTurbo (const bool on)
-
- -

Control the current Turbo setting.

-
Note
Turbo mode is turned off if the fan speed is changed.
-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ setXFan()

- -
-
- - - - - - - - -
void IRKelvinatorAC::setXFan (const bool on)
-
- -

Control the current XFan setting. This setting will cause the unit blow air after power off to dry out the A/C device.

-
Note
XFan mode is only valid in Cool or Dry mode.
-
Parameters
- - -
[in]onThe desired setting.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRKelvinatorAC::stateReset (void )
-
- -

Reset the internals of the object to a known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRKelvinatorAC::toCommon (void ) const
-
- -

Convert the internal A/C object state to it's stdAc::state_t equivalent.

-
Returns
A stdAc::state_t containing the current settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRKelvinatorAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed to it's stdAc::fanspeed_t equivalent.

-
Parameters
- - -
[in]speedA native fan speed value.
-
-
-
Returns
The stdAc::fanspeed_t equivalent.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRKelvinatorAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode to it's stdAc::opmode_t equivalent.

-
Parameters
- - -
[in]modeA native operating mode value.
-
-
-
Returns
The stdAc::opmode_t equivalent.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRKelvinatorAC::toString (void ) const
-
- -

Convert the internal settings into a human readable string.

-
Returns
A String.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRKelvinatorAC::validChecksum (const uint8_t state[],
const uint16_t length = kKelvinatorStateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe size of the state.
-
-
-
Returns
A boolean indicating if it is valid.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
KelvinatorProtocol IRKelvinatorAC::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRKelvinatorAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map deleted file mode 100644 index 6fc537a76..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 deleted file mode 100644 index 06e1bdfa8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -514abe927ebcd34b0fba296ff15e7c3c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRKelvinatorAC__coll__graph.png deleted file mode 100644 index 3110d471be01c4bbadad69e685980a75ad2f8b65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6816 zcmZ8`1yoegyDtbL0!j+f($WY5!_X~K(ulNlmmsZDD&5^BgOtD^F?34jz|bJwox(DY+Q}63M)nhT44O$=W^6PhY+( z{y1aN;p9{9P-=*tVsRG~Ge0S^+oK#7>VV25J49UMjl7$t9Cj2W|85>t;- zH;-aWa(RQRl${;NUej$OMYTxO<>^junvko~$m!Kyld7HFPX$y$-}FSuJ9g#b>mXs*qlaso4ZzdYe{M6OeVf~i*s;e$qOidN!d=_CnSL>sNkuwwO z;j;4b#6(2uD)RN#<-+& zc8x;i2rY_E&CV$!pbsmXn#3zD2TS*L)ksKWTLuOqxD4v{FV-@VvO3{&>C<&tS)ZDl zCF(r(RP^-p($C1q$huqyMRhE9PPV6FKWt6RdIC@B8ax~?gW8|22t#|K45;@3FNuXaZ>{I08m8K@)J{3G)V3Py6} z@q-^x%E`$Eqs)ss|JF~rySq1>FNHq;-a06LYnRq&GtMR=Dq2xfW7+%(Jx$CP1>xrA zjw~pN^y?Y2D`{qO3Ga;-2wpYZ9^uiC}= z8igu$)A0VW;BfZOP*Cd;X0(H|uTq;(6X@yYZ;%^73adUJ(9h zNd0FyEylw`AgeZH_41>a7ZEwR!i53+eOJWFSdoTO%FBncYT&Nmqmh%7htZ1DSXx@@ z)j0Ie-`;qX8Z{Ya4_+Lt@qOGkrlO{vYVdRoN~zZ4>`mZY1})GT>I2hTb@(?1ho=fU z5|NSy7Z$Sgr|`eu94q>}wuZEtsT}aCx%zw$6=pV`Bq+hu5SP zb2*inkui{2Ifa0hc5onFnDV$(Lkk?`=No;=1?-+u3Ocl-P$)FRW+c<0t(+7DT3fKB(DmDL1%;&VD>*@<*NTJ1kx9}cLtMbZcI z82&r$;~R`hP3;Bew?~TKymE2jC1zIoF|<~g>Gx-;BebWd$7Fl5f*+;g!R1=xXY+14 z@F6k8_wr@E#~w2s-Det6F9Kp>jpY-V#?s?=a63XRrABsfadARYQtibT#@7{aIBC86 z4(|YR!>x60&M-~X8?OEiT=gD7QBhH+wHLzBs#l7f3210&OqV;uJ1;!MKw%o$*mX)t=;-J=yF|T?3BW($ z7i)A``Hm(dCH2J_1-hC8?O>~{iQ+0OEbM0$^`Cjy+S*#viJxy#rfi(0#?nh`SxV^1Ni;0OzOMj|hc)cImz`#J~yuH0W`g0BrMkc2F-riR@ zM~H?7rRo$|62zH4mPOTKC`&R8`r!`*Q82w52^yt+Ez@7c+4)7tV`_R9mXK%$`MK)b zO}J>B0oL{Ta^&*D!l#_)fk8phF)`})cg5G$)6B{_Yc3ZndkMPNpj(B#R^S`mG zVWRf1rrbnVCk5GGA2+ z`FiS#WYtKtf9kg2ayK*+tBSN#yzfG@sou%(yR=SuY28|CP_J9#Kn+HjAM4oApx!;) zdAal8a;q#hAtAWM*!bdbB`zU>A~Sbb)2A0Sbi~MrdZ{78CXJMq)-mm@>qDc)#REA* zLmFpi=kv=;?WEf-bDNPt#Kc6SulKQ+s7|SVk>)#PWHHxx?`?8=T3V8@2UjR5XU^~6 zNf-|v?{5~D5z*4BDkwbkLS(eIO5tH)?C$R3Q3`~8BW7{g7-7P}!GU-lGPbm|kUV+v z&)Ue)(C~O~J`+$uRC4k+l|lx3`W%{xUpKOHa)*D|%NEwwx;*B6b&Bl^hpn(5Ju)AM zY1z#;ruW3MAnP&?k>%E-1-kFv5d$bcT2`VaV6zjKJE#TqdaSsFIuCdkzGg$-$6Zvf?%0XLuy(<%k)r87f45TSY zN}_{L%t7-&goFqQ2qY>k`gI$9gocNQArJ_fIg4%s0`U+VyLoCVIhoIr*Lg|C&d$ze z44J_BuDiFlt+zK6FpiY8v~sNt%xfiHM;E}Bq@?8bOl_t1w8KcA0+o;prmCu{*U6^V zmL96caZq@#q3yTx@{mn+Uov0e2-j7E=h0-n2R9rJ@8s(QZ~;p984%kLpcpU-y#Nbs z4dg%E{LDm+!JU`opdPznnVGcIP`3pD=I7_xTOynl;Z; z>U?{yXP7cw+*A~J$^Jjak1|PMPWbMu{W9{jGt-vJxt zdBifN%1G`pyX(S%#I61SbfB@;j95U{$-@m z)|&&vHH;j^QFP{=t}zegA_VpLxwZK+v!TCR<;R*Mv2k1LAL3eHOWp44N=K(^${cs! zVk|^wksd$tXhY3Ot-$icW8EN$Nl4=7J%amhBwT&yr;80@YOQ|jeBwVTm)z2JM>t>4 z*})^OgN#(?)N9#_put3v+x4v5{uek*L0BaBQO9nY^&FKW#%*{D7kR`K?DwTvNesD7 z&Z>H;!W&*IeBOx2&G$}BH0%?MU|V(aLlh2LHZ{h}sUBxcl{GFe|fX zL$3g1fhHi(mHJ+-B+AZ;DzwS#R~G98Ubj6y(3opQhYMVAFY2C}&BA zkT<_~(!jffiTeggI709Z1>)sXpj=SxVEt(rXFUnN48wWA_6(k_K$81QjYr z@m&BxRZ*@En@#7!zfAss?1maiG>714Td_s5FwN2i7&;xc841-dQsDeCcu+G0uWp%} zg3%P)Qc+y9ROW|c)%Yn7>uS=zkqdYt?zx78l|j(`;ru#a5Gz0q3*QB5}Bx+ z-4a5cg-{)36Msk|i+=xxx8Mnb*imPNeSarG>~4CeRQ9wCnVf@HoP{A=^F<{rP#$kQI~+})Gb@fK9QIFc*mJ0T*J`sXVlul=vfqXV+K_*$rLoo$XmZ)6Txw5{tEgUitLF-|)Y)w66)Y*X%`td+lBKtpN2 zqEU2f=n~I<<-l`zB)`HG$n5@1U;eb?9;j5+h=CmzLSnt8RWGB7=X0<(Qd0|t!z(eL zIO}BhzTblox?DY@K3iYT5SrH}gy)s(8())a!$CrBM$B8xqtn%@7qDll>agzM3T0E? zap@Z=88cm)Q_Mf|uSu{h)*7)=VTV>bw#N2~Sg&f;J3``ixvosnRWbyQ(2))D-=)3?8HWV?kB1o>VEB-QC;` z74AP$9Xr2}JltF4+}JnctL}~79a6-+Fwn7BC2Y{Y$B z(uJ+9P$1|5b#Ko%%|paFIl}>WROxZ1LqC{K!|kgL6Zy7A6mD4~SrR=>%~_g8w?3Qw zDudW%sg$Zb$vnM^eBRB~xCi$-+vNnR>%GrRwXM$L(h_|HwJ`H*Ma7PeP_m%-`1td) zrdv)NTwGb;+yHx*9$WxMp?~&FV%-fIotnyS=yzd0jPUlzMs9`g0HG7Q+!YymeeFX? zPR^Q^o*o30p%nHD<7TuMHe=77cToI{Tt+e{P|g8|2KV`C z8Qx?o@>St=#Yam>jhfB85?Cu0Ik~mZ&(V!Q1Ofr^KDEm?kByDJ|4dy&!@o?qj7+a& z;`|!unD1wE-h+@^z;E{m0K?FWi5a3Tp{nOGKJG8H=miNm$bO#`Uj9W8?5(E+Ga5d` zoTLUIQyQ7NODYDqeR(eDRAc>m&KNKr*`RpyC4qF@c6G@$pGXN_w?6 zkdE%;?k=EGQ_We=@Uy%;YHUn%duNBe@9gjprqz#VL#gYT{dVn>*+6G#(;tiz?#z0G zgG2xPId(uxGntW3OY>(81x3ZSwl<7#IcYgLEKa?u-)nv|Gc(V9o8Zl0Y@H)#ug0W<`lcNri(SX46@ zA&?|scE#G^cOQIntO+}s={Cg#HSb{`NF$v_SZ2=G((`2)lDcV%U9WkuH5_*r&#c7Z;% zg1L*+Jq2ET7pE^NPyq1?@-E|CZGT}`a>^SmEN%MILf>kH4lU?Ctve*9$jxQdVAtS! zIdvTqBRgs8ja04~RT?!m4PinKA;GVAEs#--lg$xBp}Ht5?90E=uZ{NSh8|*Ur}_p_ z)=A0Pdy&}6d&cWvFnCnj{<#Amdezb{GMCNFRYCndKxYgm?aDr6-hZA6zTxdV%SzTE zz6`E+wlIJebveQeRMHhh{X$1?Ul;E6I#lhNmbnY5bN2AeGwcy^9vs@L^x1wRF^m6U zFyPy($h|sL{Lt+q>YK`Yy&{7MH(IkK+iZUs;h)=_kov_GRQ?Q^Z^eS~@5l8C+IT+w z(mO7BSB%_iKkwUm;|BX(^SGD%9OGJPB(X^Rl(YZ0K0_Dvr)ld^x=1Rg!m4COe*&ZH z|CLJr19hv=INypW(NQi9^(>wGxYxh9N#nvv>61ChSD|LeKQWX#4oCl{@h6-RHGZ5H zgH<2>E?*k#s527Bn3PJx`%CuU&SV7cIXE3`*;V(VXH^X~f3DRjcZKInGm-(MQhF6! z8&SQn@hWj>g6dsL-$`%KCMm;0_q4*_!o>ZtTes$4-+XHOlYKrYXRRFzRQZfWNFNbD zN0iJtZ*K5gGt&H7{N^DtTsLm_gRW>X#zX);JgAje5v7r&^?KWz6*d<25fU7vx(;hw&4;T&`ib1%h&uwHZq-b+g2+7 zgs2)>&a-)P6TNqFq8%FBmXnEwRcqZPIspyCQZao&ce&1g@d0n24S~7z^n`-Op^NQ? z;3JF4thhK5zw^Zh)xAH6?+fdfTe(uE8Va4wPVD6NSJ-I;=Ii)TYZhd<@1TZj9F3}b zt%fL+lKjC5Qc_Z5T)8T4Bd2nS{t?rcSNK_9u)GyHJ@e0QLnM`R?A0l$sS$#QQZjGQ_I4dDj@8NLI36{$Y5TWs+2rpZf5ff-yZMeZ#C(1`r#b+<0^<%XmV}X4K6cfT3#X7( zQo=Lx|Hm&K^4R=fse_S`QS$m(&FkY)@5&&`AgH_Y2Nz zruZ+lKLl_Pl$uIO>w8Rica1W{DaFObMSEu_?2YsC#Cog#Kxb$0!h$i0tYqP+R!U|< zLT4B`pVc({F3)Kj7% z(Y$*z{eHW(Yv;$Ks=x_7zFTf<;KMsF-FX2Da#yFVtzO`4Cd*AQRy-;i|D8_j*SUQ& z?@d@-UTy=WM(^(Fq2uL^0qgk^5b*Yw*~1!#S=f-JrX~rnbQaxFbW~6`?B}?}xw#D7 zh+`t45uV(vKcu@eWYWQSCa5ZFU_(sazYhSJ)1c@XRlo!M(gRz%@o+iH)tnsq#>-81 z64`7(uuoQ*7#a7MLb>mPzSY6Z$o!Q(&Uv2cg`gn7(Hr41W?C0mlp;y&Cc@x8=`1RYj#f6rD z2C&2J>6*c(jYuQ^ba@)jK>zDy+V=MLa<3DctnHkzh6WLEv(MMWZxt*on1PFi4Xw=~ zypws&aX_}yibRrqN*DIvwdi}w!O2Pf!W8o^6%xDM94`iO$`L3u(#l)00J+}UU_ULe z{NkvK)?dlYjM2ft;Yo(;V(b0y-@jvHV@s&{(H1fA@x_7xAflm(C@yBd3nTYiaq|ia zv}=oZ*VkX&-u#;a9`ntqHQaGtEEtd61xX{d`fK~c3L{mvQ_5Pbh*nKSNC$dY>wT)s6@@s419Dmn20WWUw|9W{18raea*Dg~?Ray%_naAP|Lja& zjij};_2b#Bhv(mD`A@%$CEiZ%#${xvfB=V086O+lcsNH^DODgGv`S23V%H~hj9tB4 zAS@0%C{ur_@%Ku*o$s48o-g6X#KzY8UJ0N@ik|9L+nbx28Jn1>nW$#jPs1gqXbTUI z?((E33DXE~L6ConoQ!EaDd=i%2UG6&^94J5@yM?jD1|{%uMkKCXlMq`50diU-f+B>M9(faJ8BfQT_Pq(i@5QN5tNuC9Q6`(lXpw!=U_D2-CD=Y_T zZa{I!YvfH$>DAQKr~o2PY_X23%dtUVPr?=+WHrd*K%UMAg{DMB5qRR}k$WBW3tErE z;u|tAZn}qsn0oa8^V7=z3R?b0J=__k|0FULGu2Zo9tW>h^I@qvdETSOtup|z;C53v z?&LAws%()eJ46%>Sgt~aj0zr1+-q_FONuZ(+Y^q>3+CRvMPH03>a5-)3k5$pp()6! K$dpPMfB8SO^}GrI diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc-members.html deleted file mode 100644 index 08e8e811b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc-members.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRLgAc Member List
-
-
- -

This is the complete list of members for IRLgAc, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRLgAcprivate
_irsendIRLgAcprivate
_protocolIRLgAcprivate
_setTemp(const uint8_t value)IRLgAcinlineprivate
_tempIRLgAcprivate
begin(void)IRLgAc
calcChecksum(const uint32_t state)IRLgAcstatic
calibrate(void)IRLgAcinline
checksum(void)IRLgAcprivate
convertFan(const stdAc::fanspeed_t speed)IRLgAcstatic
convertMode(const stdAc::opmode_t mode)IRLgAcstatic
getFan(void) constIRLgAc
getMode(void) constIRLgAc
getModel(void) constIRLgAc
getPower(void) constIRLgAc
getRaw(void)IRLgAc
getTemp(void) constIRLgAc
IRLgAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRLgAcexplicit
isValidLgAc(void) constIRLgAc
off(void)IRLgAc
on(void)IRLgAc
send(const uint16_t repeat=kLgDefaultRepeat)IRLgAc
setFan(const uint8_t speed)IRLgAc
setMode(const uint8_t mode)IRLgAc
setModel(const lg_ac_remote_model_t model)IRLgAc
setPower(const bool on)IRLgAc
setRaw(const uint32_t new_code)IRLgAc
setTemp(const uint8_t degrees)IRLgAc
stateReset(void)IRLgAc
toCommon(void) constIRLgAc
toCommonFanSpeed(const uint8_t speed)IRLgAcstatic
toCommonMode(const uint8_t mode)IRLgAcstatic
toString(void) constIRLgAc
validChecksum(const uint32_t state)IRLgAcstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc.html deleted file mode 100644 index dc5e9c1e1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc.html +++ /dev/null @@ -1,1117 +0,0 @@ - - - - - - - -IRremoteESP8266: IRLgAc Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed LG A/C messages. - More...

- -

#include <ir_LG.h>

-
-Collaboration diagram for IRLgAc:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRLgAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the internals of the object to a known good state. More...
 
bool isValidLgAc (void) const
 Check if the internal state looks like a valid LG A/C message. More...
 
void send (const uint16_t repeat=kLgDefaultRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Change the power setting to On. More...
 
void off (void)
 Change the power setting to Off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
uint32_t getRaw (void)
 Get a copy of the internal state/code for this protocol. More...
 
void setRaw (const uint32_t new_code)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the current internal state into a human readable string. More...
 
void setModel (const lg_ac_remote_model_t model)
 Set the model of the A/C to emulate. More...
 
lg_ac_remote_model_t getModel (void) const
 Get the model of the A/C. More...
 
- - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t calcChecksum (const uint32_t state)
 Calculate the checksum for a given state. More...
 
static bool validChecksum (const uint32_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
- - - - - - - -

-Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
void _setTemp (const uint8_t value)
 Set the temperature. More...
 
- - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
LGProtocol _
 
uint8_t _temp
 
decode_type_t _protocol
 model More...
 
-

Detailed Description

-

Class for handling detailed LG A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRLgAc()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRLgAc::IRLgAc (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ _setTemp()

- -
-
- - - - - -
- - - - - - - - -
void IRLgAc::_setTemp (const uint8_t value)
-
-inlineprivate
-
- -

Set the temperature.

-
Parameters
- - -
[in]valueThe native temperature.
-
-
-
Note
Internal use only.
- -
-
- -

◆ begin()

- -
-
- - - - - - - - -
void IRLgAc::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRLgAc::calcChecksum (const uint32_t state)
-
-static
-
- -

Calculate the checksum for a given state.

-
Parameters
- - -
[in]stateThe value to calc the checksum of.
-
-
-
Returns
The calculated checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRLgAc::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRLgAc::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRLgAc::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRLgAc::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRLgAc::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRLgAc::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getModel()

- -
-
- - - - - - - - -
lg_ac_remote_model_t IRLgAc::getModel (void ) const
-
- -

Get the model of the A/C.

-
Returns
The enum of the compatible model.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRLgAc::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint32_t IRLgAc::getRaw (void )
-
- -

Get a copy of the internal state/code for this protocol.

-
Returns
The code for this protocol based on the current internal state.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRLgAc::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ isValidLgAc()

- -
-
- - - - - - - - -
bool IRLgAc::isValidLgAc (void ) const
-
- -

Check if the internal state looks like a valid LG A/C message.

-
Returns
true, the internal state is a valid LG A/C mesg. Otherwise, false.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRLgAc::off (void )
-
- -

Change the power setting to Off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRLgAc::on (void )
-
- -

Change the power setting to On.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRLgAc::send (const uint16_t repeat = kLgDefaultRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRLgAc::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRLgAc::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setModel()

- -
-
- - - - - - - - -
void IRLgAc::setModel (const lg_ac_remote_model_t model)
-
- -

Set the model of the A/C to emulate.

-
Parameters
- - -
[in]modelThe enum of the appropriate model.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRLgAc::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRLgAc::setRaw (const uint32_t new_code)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]new_codeA valid code for this protocol.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRLgAc::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRLgAc::stateReset (void )
-
- -

Reset the internals of the object to a known good state.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRLgAc::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRLgAc::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRLgAc::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRLgAc::toString (void ) const
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRLgAc::validChecksum (const uint32_t state)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]stateThe value to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
LGProtocol IRLgAc::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRLgAc::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _protocol

- -
-
- - - - - -
- - - - -
decode_type_t IRLgAc::_protocol
-
-private
-
- -

model

- -
-
- -

◆ _temp

- -
-
- - - - - -
- - - - -
uint8_t IRLgAc::_temp
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.map deleted file mode 100644 index 1a86ac1dc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.md5 deleted file mode 100644 index 10e7c5709..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -819620e3d2dbcaba6b7f26ddb38e99d4 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRLgAc__coll__graph.png deleted file mode 100644 index ca41b91a377c7d5f17ceeb3ef8f02443ad60d0e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5431 zcmZ`-byQT}z8`-g4kaZ>2na}tlne|qfR@FEopAA%6+%~+H%UGRq+uEgbXS!e4t`8QFaO5o_T$)jzx)0& z{y_T&!Hjqenw;B;&d3;o?KYVc7tnyL7dyc=vYMmBT%*?X&4x@1cC)+bzoSfDx^WWs^hYB)%Y_&fZ zf6BP1%Mi4>rz*BD^JV!BmNRTLzj2Ed@%ZoO|BmIK$q+I{Ma5V51H-}yl~P$Y*xTFN zbsOCs>hi28;n4`u9D@LUvvxdVpYs*!1u9u-wfkx5>9j(&_cOf@6g({69L{=|Ijx@U zFNvK@n%6frF0HR4Oidq+6{vE+V2!eLn9MII6gR2F*`vFpj9alr+1c6NM`(E?#g5pd z5;=sTA{;C&D|?5pY40Bb0)jMguV02!3Vw5q9+c$dpE5I<7Q7Eh5_yeSgoNVD%lQ*{ zjiy<)j@L9aHDwS8Fp^z4r?_|ko?yUO1&ss-mMmb7AC}|1IzWrO+?+t|pPtI+qRGg~ zfAk_blznPyY96z(En>0Zsj2h=0s_k`E6KRepFe*%p3n&m3xlI3C}?PU=9|5gue-Xs zIy*bFCTwX1UgN>sxA;8-c%sPs6OBDXZN~EVfspZgpE;+crPW{VG$so>&|xuUPJ$WQ zsFjks`9FQ}-1)s7zki!1Jk@Il*2d-CyEpv_JaO^y`$uD{OFKJJ!NGTjB`%+8X=#DP z&XV~+E)4#6%-ZQ7Zx&a-NxVh6V9iuqk}1`pNpId%)($l z++3Zi-47fYc?EhVD3}a&VoViw$f>N1mApA0wx4gBy3fJP{HeJ3>Ai;{Qa(Ns9l@j= zyu9~v(bj}jW*ztmd?qRi3cz|3yi6C3#~N_|Sz2;&b9)SfrKZC?^xwtL=?$gBv?Ow%%mywp>Q}`~Q=#l1|u`z+(U=ATYbS zI0iF|xGsaG8eKrZjXq%Q6_l0PI5>i%qsc}`M@6aXX2_ux@37kFptp@;7wfq!TwFz6 z9&K*VMMOg4;_f3`RSGESBIPVBEUFbzSy@t`oWjDMWlMgV0Bw{|ASods1-DKqo_;Pu?JniVjqe) zOMzGN+90k0vMUr%qZKtuZT zw{oCAf4aiqU}iWR-g$A1g)wmO@u`AXxVceUdZNgMBmwiz6d^lNmu`Jm)TP6T1YA## zwxXhn%=67Hk7_sdKoLc;Q@s*d5|;br&JIgeD_bWW~FLqkL1 z#HMiOVEQsfYhWHi2eBrz!<4SH2ND$<)D0~&($n{6h5LDJ$c9 z5+4QtMF1I3>Ez_(y~D$kll;=sQrT|Rg0bX0`{q!u-R1|9l9Iv>)8j>Zn43adJGM$PrKG0z4i7^cjFv0=S)cDzG+Z&~9; z%m+Lu6uLT?+C7@5WMgk{vC#7Isc};h5bTtc6yVu$48|Nnx4*w{Hu_cJF*|!~a&o9~ z*&2{p;)T%iC5HwYRs}5gHZsb8aqOugWqeDGAZ)b0r#&`Bh?2R8qqB=#gJiQj#N9 z>V&!!YUkKAlp(I<<_7r-ic?clz|^QqwEI7kN+2vP^NVhK71+;xr+V<V!OVPZuS>^dU|?Py0+aNcObJ0 zRt;sN^sxTeQWw-EPogg3aZimL1;L}hM=>CE@PD0{%EHOyK4@34@e32tmC-zP2%2hG zap9e*b-*gXM3*;P@kgD!?P}6 z)=Omnnknu2MBgPS5$+|nkdgEX8;Rk2h#xK)ImxU&e_GS!u(5+GArM+A2u5S4&M#jo zs!X`v3^3zKLMKO8k8HkGZcYiYre5^12Z{ae>m=Q&s8+D-w!Hw~UpD#)eyb-*A`$)B>&*{OhBgF*>rQlvsPLnzBQ42wkz{G( z4%c?HsoA)f40o@SX1>`bRx8`cF=R@<&G;V69-&-UZ$miy?#q36S%-0M`}=S%(p>4R z8Q;*|YoChXl1d3h!A(SZhQbmRt6WFP&GU#sf0J2rdR948Ww^6rqa43kfCg4k)J2qB^+wp4ZxmvR0AwEtL|k?3QmuRuPrzIF`AP8`sBX zZ=1^Bs@HIV2OoJoG@PI=A9^6T_@DWZl^WmkKHvH>P7PIL zp1mc%z|%f2J6LEXR{mC#yy_%z`5KkNx=TH!c>^j&fbW$)@j0%BovJW~q-N&!&Ixt~ z3TDO$Ec@sX>05n_vmB3UZVWSN6(WXpXWALGazcY7#&7f~dxOezhALC`bear8K)+iG z#CvXPgErGp)RhAlWO4`-wVr4)9o$VvNqp26H2dM|+RzX%cfF-Yyf<}W1G4L(v{x`X#>POL}i zr^NP&PsNvhtgo%?)I^cV@k8hgj!5j&C7AL2isPPCzhKw{yH-?lQE-1921~PS5LPy&daOjxS3hL3+IFs&Dj>JTs5;Mp{+dmQAf6rv~fE+t@~11x9;irTp0~ z{VgsR-Zy{ZgVzoYo`2FN*cos3g}A)>d2@!u41_RwC$uFel&SUGma9G#8tMP}vtFeI z!BY2^?um(b9)sF)&tqGFanaTg85tSpgJlJcv*~I5*x1;;i<6RQ4h|0Vzn*TQ z$|$I)0<}?W{QS|)UZ*Lz@bK`^&`@dA#Ix6(VE3&_boStyBr5BmDP!-0tGHSLKUQs+ zdUeF${PkEaZO+EGY^4o=E98pxs(v1cb8;ex8O3xTin<{nP-r-lFHUW8W+vRJ^-3F{ ztMH>EHvy-4F^#kOdJ%F41|B!j^unSd^0KCbFdA{sYJk-8kG#FTJJGrFvPMSf2o)9T zot>R_YX~88KuAak8InVlIxjDe1qL$+2nr&Uic3tav)P?UVXt7`tQI*?F-z=oP&%?< z9@m0|k#=WL(9$b4#;F*l%HHv#hK~ z6|O6aNM9|jc#sTWDtd;7sQoy3t{R9hPj{Vkz&FMT9KzS4FCd0CEr;+Knvb%9WcTCVHFjOcHl1zMnhLOL@w86k%^4VS*bCAJY_Q?;=@$Gn}7XR z^NVUSkblN;+vL+TA0wN(d=w`S>^GpW0O=NN-W^3wMb%aBvNVD{KD)TcQ7>IfA8g`p`#z=z z8XI9%mV+z;0x^IZ@c7;K-*SM4f`Vc|o7zB@w<7^j9zzEtCph&1+|jYr2C}xwEg*m% zU3~|u)t(<>NtM%9*=hZT))5kT-SIWp#KiZLw#-28u^~Yo6L;2Gu+@*Y-FxMrjg97 z`D8KK&!(-w&!`k%zQMX`uDVG6_Ux5A@9}JwiCv*)Rd4{&$@do|mKlmGzO#>#&h!-y zj317?&a`uqk8z_-rTV8W`qGG&5gOg$MCE)O`|ja`qB8qGoeSXvihHJQ{M}Kk2+=@g zqFbdxG2>U7552{QpUn4d{LWz)apC`QVBPO1JH!ggE5IT?Fe6=jkK!F1>17EQIl@#8 zf3Qw=S7MWxd-pI0$L$X{6$cxA7e@n8Y4fl8t^|X# z_RFDm#<7_(@O3K81=WbmdXZEm|;e!k~?n45-XeITTJg>gAUhPR@gq}0&fVtC7* z1$jjyGCL)f46gTVpzXeP#ptQB1UjdJmul$Xqjk|=j)Y@a)>DtpF94ku4LC)E=?LSF zk?a=)q@;D#w9QdKasXE;nV6hx1U*RrOSL$rDp~WNJJ_#zd3w`$;fEL4GK1*=<8b?Z z#s8}={BM~7!Cc+ze~0M(Zu6$IqU{5>T@5;SPtZd~dGZmu3m*p^ksA0vPPh z#n8LW8aSfBuA1>uU!Tsz=bVj_L&ajM@=d-6r^j75*nNAt%gN`EzU5*Q<*1}H`ur=I zBhu&Ug8adQ;2h5FmfbVCCr_T});lu;?>z?62r%0bJv|7(>Af_IVt@q!HHo*Y1KD4{ zevR(|RJ!jK*5t!xQ9(##Wk;^E@r;=ut$3q@^h>i$GNtHaenJbZlD z&G8~fE~E@$_Sn{BMaQ`O+3(M!05JcYnQ82JFDokx6h9IGud%ec8U%O^pn~E=o)1`h zz{Rt$vflcOJU|Hr(j47XTpR%el19Y_wgRhbIyU z$t!hrf5p7lJ!I!$oNt-!0%ke^x;#JpTXN|vHEI+kmUR9twTZ@|@bKm;_; zT_2-#%JRQ|PxeVEGb#>XuV`0dcbRe zJKF~VG<-OrVC{KML$d6$ZddjjlH&olv0^( z?oR0?{I|OLkIX91R?Ee5!yMANH1c(UFTayy+Z`!QW}p%ZQjk@VDTSN*{|lzYn_>U} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC-members.html deleted file mode 100644 index b4eb9a480..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC-members.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRMideaAC Member List
-
-
- -

This is the complete list of members for IRMideaAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRMideaACprivate
_EconoToggleIRMideaACprivate
_irsendIRMideaACprivate
_LightToggleIRMideaACprivate
_SwingVStepIRMideaACprivate
_SwingVToggleIRMideaACprivate
_TurboToggleIRMideaACprivate
begin(void)IRMideaAC
calcChecksum(const uint64_t state)IRMideaACprivatestatic
calibrate(void)IRMideaACinline
checksum(void)IRMideaACprivate
convertFan(const stdAc::fanspeed_t speed)IRMideaACstatic
convertMode(const stdAc::opmode_t mode)IRMideaACstatic
getEconoToggle(void)IRMideaAC
getEnableSensorTemp(void) constIRMideaAC
getFan(void) constIRMideaAC
getLightToggle(void)IRMideaAC
getMode(void) constIRMideaAC
getOffTimer(void) constIRMideaAC
getOnTimer(void) constIRMideaAC
getPower(void) constIRMideaAC
getRaw(void)IRMideaAC
getSensorTemp(const bool useCelsius=false) constIRMideaAC
getSleep(void) constIRMideaAC
getSwingVStep(void)IRMideaAC
getSwingVToggle(void)IRMideaAC
getTemp(const bool useCelsius=false) constIRMideaAC
getTurboToggle(void)IRMideaAC
getType(void) constIRMideaAC
getUseCelsius(void) constIRMideaAC
IRMideaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMideaACexplicit
isEconoToggle(void) constIRMideaAC
isLightToggle(void) constIRMideaAC
isOffTimerEnabled(void) constIRMideaAC
isOnTimerEnabled(void) constIRMideaAC
isSwingVStep(void) constIRMideaAC
isSwingVToggle(void) constIRMideaAC
isTurboToggle(void) constIRMideaAC
off(void)IRMideaAC
on(void)IRMideaAC
send(const uint16_t repeat=kMideaMinRepeat)IRMideaAC
setEconoToggle(const bool on)IRMideaAC
setEnableSensorTemp(const bool on)IRMideaAC
setFan(const uint8_t fan)IRMideaAC
setLightToggle(const bool on)IRMideaAC
setMode(const uint8_t mode)IRMideaAC
setOffTimer(const uint16_t mins)IRMideaAC
setOnTimer(const uint16_t mins)IRMideaAC
setPower(const bool on)IRMideaAC
setRaw(const uint64_t newState)IRMideaAC
setSensorTemp(const uint8_t temp, const bool useCelsius=false)IRMideaAC
setSleep(const bool on)IRMideaAC
setSwingVStep(const bool on)IRMideaAC
setSwingVToggle(const bool on)IRMideaAC
setTemp(const uint8_t temp, const bool useCelsius=false)IRMideaAC
setTurboToggle(const bool on)IRMideaAC
setType(const uint8_t type)IRMideaACprivate
setUseCelsius(const bool celsius)IRMideaAC
stateReset(void)IRMideaAC
toCommon(const stdAc::state_t *prev=NULL)IRMideaAC
toCommonFanSpeed(const uint8_t speed)IRMideaACstatic
toCommonMode(const uint8_t mode)IRMideaACstatic
toString(void)IRMideaAC
validChecksum(const uint64_t state)IRMideaACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC.html deleted file mode 100644 index 446da529f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC.html +++ /dev/null @@ -1,1927 +0,0 @@ - - - - - - - -IRremoteESP8266: IRMideaAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Midea A/C messages. - More...

- -

#include <ir_Midea.h>

-
-Collaboration diagram for IRMideaAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRMideaAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMideaMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
bool getUseCelsius (void) const
 Is the device currently using Celsius or the Fahrenheit temp scale? More...
 
void setUseCelsius (const bool celsius)
 Set the A/C unit to use Celsius natively. More...
 
void setTemp (const uint8_t temp, const bool useCelsius=false)
 Set the temperature. More...
 
uint8_t getTemp (const bool useCelsius=false) const
 Get the current temperature setting. More...
 
void setSensorTemp (const uint8_t temp, const bool useCelsius=false)
 Set the Sensor temperature. More...
 
uint8_t getSensorTemp (const bool useCelsius=false) const
 Get the current Sensor temperature setting. More...
 
void setEnableSensorTemp (const bool on)
 Enable the remote's Sensor temperature. More...
 
bool getEnableSensorTemp (void) const
 Is the remote temperature sensor enabled? More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setRaw (const uint64_t newState)
 Set the internal state from a valid code for this protocol. More...
 
uint64_t getRaw (void)
 Get a copy of the internal state/code for this protocol. More...
 
void setSleep (const bool on)
 Set the Sleep setting of the A/C. More...
 
bool getSleep (void) const
 Get the Sleep setting of the A/C. More...
 
bool isSwingVToggle (void) const
 Is the current state a vertical swing toggle message? More...
 
void setSwingVToggle (const bool on)
 Set the A/C to toggle the vertical swing toggle for the next send. More...
 
bool getSwingVToggle (void)
 
bool isSwingVStep (void) const
 Is the current state a step vertical swing message? More...
 
void setSwingVStep (const bool on)
 Set the A/C to step the vertical swing for the next send. More...
 
bool getSwingVStep (void)
 
bool isEconoToggle (void) const
 Is the current state an Econo (energy saver) toggle message? More...
 
void setEconoToggle (const bool on)
 Set the A/C to toggle the Econo (energy saver) mode for the next send. More...
 
bool getEconoToggle (void)
 
bool isTurboToggle (void) const
 Is the current state a Turbo toggle message? More...
 
void setTurboToggle (const bool on)
 Set the A/C to toggle the Turbo mode for the next send. More...
 
bool getTurboToggle (void)
 
bool isLightToggle (void) const
 Is the current state a Light (LED) toggle message? More...
 
void setLightToggle (const bool on)
 Set the A/C to toggle the Light (LED) mode for the next send. More...
 
bool getLightToggle (void)
 
uint8_t getType (void) const
 Get the message type setting of the A/C message. More...
 
bool isOnTimerEnabled (void) const
 Is the OnTimer enabled? More...
 
uint16_t getOnTimer (void) const
 Get the value of the OnTimer is currently set to. More...
 
void setOnTimer (const uint16_t mins)
 Set the value of the On Timer. More...
 
bool isOffTimerEnabled (void) const
 Is the OffTimer enabled? More...
 
uint16_t getOffTimer (void) const
 Get the value of the OffTimer is currently set to. More...
 
void setOffTimer (const uint16_t mins)
 Set the value of the Off Timer. More...
 
stdAc::state_t toCommon (const stdAc::state_t *prev=NULL)
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void)
 Convert the current internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (const uint64_t state)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
- - - - - - - -

-Private Member Functions

void checksum (void)
 Calculate & set the checksum for the current internal state of the remote. More...
 
void setType (const uint8_t type)
 Set the message type setting of the A/C message. More...
 
- - - - -

-Static Private Member Functions

static uint8_t calcChecksum (const uint64_t state)
 Calculate the checksum for a given state. More...
 
- - - - - - - - - - - - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
MideaProtocol _
 
bool _SwingVToggle
 
bool _SwingVStep
 
bool _EconoToggle
 
bool _TurboToggle
 
bool _LightToggle
 
-

Detailed Description

-

Class for handling detailed Midea A/C messages.

-
Warning
Consider this very alpha code.
-

Constructor & Destructor Documentation

- -

◆ IRMideaAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRMideaAC::IRMideaAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRMideaAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calcChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMideaAC::calcChecksum (const uint64_t state)
-
-staticprivate
-
- -

Calculate the checksum for a given state.

-
Parameters
- - -
[in]stateThe value to calc the checksum of.
-
-
-
Returns
The calculated checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRMideaAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRMideaAC::checksum (void )
-
-private
-
- -

Calculate & set the checksum for the current internal state of the remote.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMideaAC::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMideaAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getEconoToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::getEconoToggle (void )
-
-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getEnableSensorTemp()

- -
-
- - - - - - - - -
bool IRMideaAC::getEnableSensorTemp (void ) const
-
- -

Is the remote temperature sensor enabled?

-
Returns
A boolean indicating if it is enabled or not.
-
Note
Also known as FollowMe
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRMideaAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed.
- -
-
- -

◆ getLightToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::getLightToggle (void )
-
-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRMideaAC::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getOffTimer()

- -
-
- - - - - - - - -
uint16_t IRMideaAC::getOffTimer (void ) const
-
- -

Get the value of the OffTimer is currently set to.

-
Returns
The number of minutes.
- -
-
- -

◆ getOnTimer()

- -
-
- - - - - - - - -
uint16_t IRMideaAC::getOnTimer (void ) const
-
- -

Get the value of the OnTimer is currently set to.

-
Returns
The number of minutes.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRMideaAC::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint64_t IRMideaAC::getRaw (void )
-
- -

Get a copy of the internal state/code for this protocol.

-
Returns
The code for this protocol based on the current internal state.
- -
-
- -

◆ getSensorTemp()

- -
-
- - - - - - - - -
uint8_t IRMideaAC::getSensorTemp (const bool celsius = false) const
-
- -

Get the current Sensor temperature setting.

-
Parameters
- - -
[in]celsiustrue, the results are in Celsius. false, in Fahrenheit.
-
-
-
Returns
The current setting for temp. in the requested units/scale.
-
Note
Also known as FollowMe
- -
-
- -

◆ getSleep()

- -
-
- - - - - - - - -
bool IRMideaAC::getSleep (void ) const
-
- -

Get the Sleep setting of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVStep()

- -
-
- - - - - - - - -
bool IRMideaAC::getSwingVStep (void )
-
-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingVToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::getSwingVToggle (void )
-
-
Note
On Danby A/C units, this is associated with the Ion Filter instead.
-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRMideaAC::getTemp (const bool celsius = false) const
-
- -

Get the current temperature setting.

-
Parameters
- - -
[in]celsiustrue, the results are in Celsius. false, in Fahrenheit.
-
-
-
Returns
The current setting for temp. in the requested units/scale.
- -
-
- -

◆ getTurboToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::getTurboToggle (void )
-
-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getType()

- -
-
- - - - - - - - -
uint8_t IRMideaAC::getType (void ) const
-
- -

Get the message type setting of the A/C message.

-
Returns
The message type setting.
- -
-
- -

◆ getUseCelsius()

- -
-
- - - - - - - - -
bool IRMideaAC::getUseCelsius (void ) const
-
- -

Is the device currently using Celsius or the Fahrenheit temp scale?

-
Returns
true, the A/C unit uses Celsius natively, false, is Fahrenheit.
- -
-
- -

◆ isEconoToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::isEconoToggle (void ) const
-
- -

Is the current state an Econo (energy saver) toggle message?

-
Returns
true, it is. false, it isn't.
- -
-
- -

◆ isLightToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::isLightToggle (void ) const
-
- -

Is the current state a Light (LED) toggle message?

-
Returns
true, it is. false, it isn't.
- -
-
- -

◆ isOffTimerEnabled()

- -
-
- - - - - - - - -
bool IRMideaAC::isOffTimerEnabled (void ) const
-
- -

Is the OffTimer enabled?

-
Returns
true for yes, false for no.
- -
-
- -

◆ isOnTimerEnabled()

- -
-
- - - - - - - - -
bool IRMideaAC::isOnTimerEnabled (void ) const
-
- -

Is the OnTimer enabled?

-
Returns
true for yes, false for no.
- -
-
- -

◆ isSwingVStep()

- -
-
- - - - - - - - -
bool IRMideaAC::isSwingVStep (void ) const
-
- -

Is the current state a step vertical swing message?

-
Returns
true, it is. false, it isn't.
- -
-
- -

◆ isSwingVToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::isSwingVToggle (void ) const
-
- -

Is the current state a vertical swing toggle message?

-
Note
On Danby A/C units, this is associated with the Ion Filter instead.
-
Returns
true, it is. false, it isn't.
- -
-
- -

◆ isTurboToggle()

- -
-
- - - - - - - - -
bool IRMideaAC::isTurboToggle (void ) const
-
- -

Is the current state a Turbo toggle message?

-
Returns
true, it is. false, it isn't.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRMideaAC::off (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRMideaAC::on (void )
-
- -

Set the requested power state of the A/C to on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRMideaAC::send (const uint16_t repeat = kMideaMinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setEconoToggle()

- -
-
- - - - - - - - -
void IRMideaAC::setEconoToggle (const bool on)
-
- -

Set the A/C to toggle the Econo (energy saver) mode for the next send.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setEnableSensorTemp()

- -
-
- - - - - - - - -
void IRMideaAC::setEnableSensorTemp (const bool on)
-
- -

Enable the remote's Sensor temperature.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
Also known as FollowMe
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRMideaAC::setFan (const uint8_t fan)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]fanThe desired setting. 1-3 set the speed, 0 for auto.
-
-
- -
-
- -

◆ setLightToggle()

- -
-
- - - - - - - - -
void IRMideaAC::setLightToggle (const bool on)
-
- -

Set the A/C to toggle the Light (LED) mode for the next send.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRMideaAC::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setOffTimer()

- -
-
- - - - - - - - -
void IRMideaAC::setOffTimer (const uint16_t mins)
-
- -

Set the value of the Off Timer.

-
Parameters
- - -
[in]minsThe number of minutes for the timer.
-
-
-
Note
Time will be rounded down to nearest 30 min as that is the resolution of the actual device/protocol.
-
-A value of less than 30 will disable the Timer.
- -
-
- -

◆ setOnTimer()

- -
-
- - - - - - - - -
void IRMideaAC::setOnTimer (const uint16_t mins)
-
- -

Set the value of the On Timer.

-
Parameters
- - -
[in]minsThe number of minutes for the timer.
-
-
-
Note
Time will be rounded down to nearest 30 min as that is the resolution of the actual device/protocol.
-
-A value of less than 30 will disable the Timer.
-
Warning
On Timer is incompatible with Sensor Temp/Follow Me messages. Setting it will disable that mode/settings.
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRMideaAC::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRMideaAC::setRaw (const uint64_t newState)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]newStateA valid code for this protocol.
-
-
- -
-
- -

◆ setSensorTemp()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRMideaAC::setSensorTemp (const uint8_t temp,
const bool useCelsius = false 
)
-
- -

Set the Sensor temperature.

-
Parameters
- - - -
[in]tempThe temperature in degrees celsius.
[in]useCelsiustrue, use the Celsius temp scale. false, is Fahrenheit
-
-
-
Note
Also known as FollowMe
- -
-
- -

◆ setSleep()

- -
-
- - - - - - - - -
void IRMideaAC::setSleep (const bool on)
-
- -

Set the Sleep setting of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVStep()

- -
-
- - - - - - - - -
void IRMideaAC::setSwingVStep (const bool on)
-
- -

Set the A/C to step the vertical swing for the next send.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingVToggle()

- -
-
- - - - - - - - -
void IRMideaAC::setSwingVToggle (const bool on)
-
- -

Set the A/C to toggle the vertical swing toggle for the next send.

-
Note
On Danby A/C units, this is associated with the Ion Filter instead.
-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - - - - - - - - - - - -
void IRMideaAC::setTemp (const uint8_t temp,
const bool useCelsius = false 
)
-
- -

Set the temperature.

-
Parameters
- - - -
[in]tempThe temperature in degrees celsius.
[in]useCelsiustrue, use the Celsius temp scale. false, is Fahrenheit
-
-
- -
-
- -

◆ setTurboToggle()

- -
-
- - - - - - - - -
void IRMideaAC::setTurboToggle (const bool on)
-
- -

Set the A/C to toggle the Turbo mode for the next send.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setType()

- -
-
- - - - - -
- - - - - - - - -
void IRMideaAC::setType (const uint8_t setting)
-
-private
-
- -

Set the message type setting of the A/C message.

-
Parameters
- - -
[in]settingThe desired message type setting.
-
-
- -
-
- -

◆ setUseCelsius()

- -
-
- - - - - - - - -
void IRMideaAC::setUseCelsius (const bool on)
-
- -

Set the A/C unit to use Celsius natively.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRMideaAC::stateReset (void )
-
- -

Reset the state of the remote to a known good state/sequence.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRMideaAC::toCommon (const stdAc::state_tprev = NULL)
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Parameters
- - -
[in]prevA Ptr to the previous state.
-
-
-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRMideaAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRMideaAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRMideaAC::toString (void )
-
- -

Convert the current internal state into a human readable string.

-
Returns
A human readable string.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRMideaAC::validChecksum (const uint64_t state)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]stateThe state to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
MideaProtocol IRMideaAC::_
-
-private
-
- -
-
- -

◆ _EconoToggle

- -
-
- - - - - -
- - - - -
bool IRMideaAC::_EconoToggle
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRMideaAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
- -

◆ _LightToggle

- -
-
- - - - - -
- - - - -
bool IRMideaAC::_LightToggle
-
-private
-
- -
-
- -

◆ _SwingVStep

- -
-
- - - - - -
- - - - -
bool IRMideaAC::_SwingVStep
-
-private
-
- -
-
- -

◆ _SwingVToggle

- -
-
- - - - - -
- - - - -
bool IRMideaAC::_SwingVToggle
-
-private
-
- -
-
- -

◆ _TurboToggle

- -
-
- - - - - -
- - - - -
bool IRMideaAC::_TurboToggle
-
-private
-
- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.map deleted file mode 100644 index d2fd35ac2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.md5 deleted file mode 100644 index baf91c467..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -07b88c478a192e1169f5dbd6881679aa \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMideaAC__coll__graph.png deleted file mode 100644 index fde37d1cd3848b6137f1e3ec7cfe7aebbc47c177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6165 zcmZX21z6Nyw>2stA}L6hs5H`DilmebNQ*QgCEf7{6=~`2?#_WhQff$tl#U^WknXvM z_xs-a-uv8#XU_a!hI97WXPv#)Ucqlw#m!5A)r2L*4~ zCQ9-$80g!d%+`V!3=HyqMVVKc?x{O-UYeSdtv~oDWP+(6NJ&f?C~UnAGKBs8TZn&5 z;_zMG7^hjd#5<4Ux*ZeW@VcO(p~tij*`F_WM-T>c)~J2+U{&@xYqN>3AWE2jD(kSOj^y){cA z?p}%7c73THi=8mw#H|R4QvUa#9;8tD=Z^uYY*uCE$XHgbNVWYIwYWQXilFVMsCrSE z02edPbK@vFgV1MFh3YwHo%A!Pt>azUFZqk5apZ}^zl*m^9CPN(yiD3nb=Kmdi9E64fy zc|5@Yqb5D0sEEkle)ft?7F^_Th7jk620L0`UteJ{F_K4*I+FM-mCe`I)@0=6SGKo9 zp-{12?2fh&p-<%_68oJT9dQT=f5GA5l0FxeUZ-|- zZZ+@1DfzyE7$FddKlHlJ=hD?;IQ_l-T=VO${EPe|7$G5{ygDgA6+T$EtEXpdibM@e zd9}vnw{)^Io6m*1UF%?NfKt+1xV*d^HB}XOb>*F}lJc#ffO)RjWu=?^LvCXug+IBW z`#<9aYKOB6H)OKv;NZA_`fOvw#>EkXG-YJa)6vllrc0!RgoIciY!!={bxr_>yvl*yqw%vkp?qFLu0zluMI)KMU^x9F;T#pYn#irK^mXs(C7Wd zS7T#iIJmfsJUmspF8Z;BPbDP{`76(0auGDF**Q6I!+ZJkUS3`fi$CvZG^rMl3=It} z|7mhMp6MSPB=zqd8WQB>qrmHc!{N2Q3oxJVWC3gCweIfjyF|LWx{Lw>?=Tp-xP~=- zQByp3z5`6%pQ%ucVG0H>iMO_#Jr47Uq`!kaRGAONTTJ%#_7eFwy6)(;x~J5%(x2)& z-C>lJgv~o5hT9Jg4}-sdU#y!n>@?!WSVSU!0eI_$`YA{tKrp9vk?vMC*Z2yLa zhE22So}O>j)x2Zl<0?B|o}S6RZqCk_nZ?B+rKKFHX=(8Odw1{to>2+?dvx@SgCk70 z#zI|Py}dW;X-erhIN5?dx7|OA=$mT?2ZvYcq#);g{r$YNLo;>O;F5E3altNk#ZFMu zuN&;lPA-l~Pmc%>R|(v^?6lcaFO-x)&D61j z^0Exl;Jx2|KYxvwnArPoH+gPuF1JY+&NqB&IRI)H4EB+q3ishdV(G+d85tS=CJB0a zdNww;LDgax(KNP83o9q&kooEE++Y%4!Kl}gZ)p+Cs(A14;2=@dg{=a1!6qUiLJ=;v zyu4gkRwghz)GAdD%D^*bWn(di?fwT4SoHAaB3mt0RVOt^UrPySEee6&FLCu z?7)8j+9$UI*KI1E*Y%$o?e6Y!7`7w|&ASJRx$S;F+E9<@)R+78iA_L2fC3M@xVV^` zD*R)eUQYzAlBOo9c7lbv!FotWL`EhTNhg7^F`9E9Ih4lt+)=}&R*w_Zw_7YICA?7A)9ddErxy9V__C&c zGFopZbRAS^4PD(n5WD-yw55Za8#4z79w=WRO$rJM+&)1yF56n5K&a^GP^71)4`xVZ z6c)13(9k5;m7Sfr_YVv_z`vm?1^RYZ75$`kZh=_>%lJ6>rb8raf-CVx6u={&@ ziagpJ|MKmdV2Pa)?oCiV!OPulEiBsGVSP5 z68k?n^*`+T@2B6{VFCx+Y4q04GxeZyO@yudv!T{xdOD8FpJuH&r>dnzCMhXdY@fq< z>QeKdP;@3vwT(m0fmcT~Sukf5Gc+vB1};q3Tl1cYXK348Fpq1+WZJFR&U!3YvA8}X zHT6&aWwQv1pJ4DrU&Y@^o6I-U&QCYR)6G#QFuL}Wt7LDi6%Es$ESWl7Hn&6m zY4S3Dt$wEHuUy$&%GZujVMM-*Zx>z{u%%yz^4nyylp2Iy($wW9rz|X342NouBv265 zxryoj#uZQBFk9-Kp(|0Tq}@yUv6(?5Y+AD-@Pa5fGvFz2W*E-{moKG8}u3eO0d z%VQZ?vm8?XGn$f~wOdA^dudck?8arlf=dPMu`GLpz52LIPRAu6>t*Df7so@L{Pnnk zC%E_4J^1XDxI{1eh0w;%2bF6H1GUQY$9&#?)07zDD)-pg4scCOOU1wr7$*JN-eSmR z)lA$$+MQf^f714N`0n8bYBm^ovo*XQC!uabN{UtE^r7H|>y(HrmIXoLSH}-J2AoVXg zPK>-BdDxk6;CrBvWE5W258d2mYlifhwx$k};|hyQ#T}%IDNoH)Q+t(2>F6t$&G(io zlK-Vz?61`Jf%g~NBOvb#LgoF%?^`QC&weA6USMEJ$6FWmRxD+tIOO9z9JCP# ztH}r0BbE^D=3}R&nRZ5{Ad@)Q!e^3%-IJ@UujTOs-E4KCPL=t8ScQ!CY@AMcVMi~E zl|B`56h@s=N#+tn8AY41?)ZLZQH*~^q8zRHpW(ML3CFejg9IsSw3--leLb56_v=@c zy%KI|^M9Iap1bkW3bwy-MtEPkGBr3OIA?Yj+XJU-tu#XGr}fHFoMyAeY(2(Ypt z{nomr)Sma|hAZpm*piL`z`hL)|53(VCs5|>VCltOWrb_s*))y4`CJZ-1xDKmTE>&@ z$;h>V1U~Px&p>HRSDD`5o+#@a9wxN3w3L>X7Is<>v${Swa0K-I_xQMbZZ2(q|1&Qy z@8FDnl?m2Uxv-x==^D0rI;{2*Yj~)t5&-&WY-$=UP@{Lms9Lv#P8m{V`ODj1S~pLdjs^Rtd36N$fk34ZLQ|j-$*}FHL2@bZVJ5olUlv9 zvt8((jI8X}@8RK(0S$G0Y@zm6Q23rG?2vsc$cl=J7=?v(FtRfeWcwGQ>_wBWQ~ZlzjYl4x^d0v{-v)H|^duW@JBu!%P#i;PV%imU78dy! zGOn)mR!QwfL_o0TA77sAuuqignzC`dctPgh+u#2PEOnR2!^0#0!1PzdoKQOqy^vyZ z$cH91pS}oMuqsk_6vuErPa;8A%@Cr|`)~7n%CxL6=7xtOcV-)E%=#V$1O_IFI5Alc zr(-d2a^hpy+uM`M0zGA8W5dGE{!~I@?lxfUB(J78e))9vb@e$&)+e2~d(l zo4Mw=`BpCyGP2tS=ny%~%*KX$|9+4~9T0hH9v&ih?%eqj6m;7T3b@IC3h<`8y{3^y z(YcICMyKlWc?H!Q3qo!A1qCVPyNK)HkdSJFOt#IBmnGODGB#oUb6f@;h+pX+Dy*&` z4FcycUZgO~dGU+G({gb=K#95gI{xg(-*>D7FbTT4~2=n z?o}9R`_i!%wAPb)B*AFe;UlKVT%PM;{-WbP%$R47`~G*2AEjI=Z&n&rPzhNv3y=ty zVS5UA`O9uEXK0UlvO0W{ov*Mg{*&5hv2}CajriJ1&&sY9z4Y>>Rl?ViSLi{vdO7MiYeTFK@D6)4#y|ePM z9xsf|_Bd;~De_R^vii%&RJyQR%m=0hS>AR%|49sOU%{-0%;+)C*WEyWtpA1zQBv%D zJ!NRnn$AC3Gz+Nv(f-h<(#b9@%f#FmKX_n#^qVu&zR;ZJLi*7@_?Spv9{~dM%>OF*LEry{ zBruftWs9)0huXJYPmCEmD-4St;sG%jPmrThbAfqzGHV|k7FO#_K@0Kr7T3sEu5zZZ zO-3+JNdyN6#}j0|et?f(=ZvHEDm_p!I>apCKZCAAQdy9{p4Y8iL`Yi{C{W7{bEBi#t1T@aVDIgdE&T6?F;e4khQa z7^E0?OjG@}=X)w9>ax|f)ET5QFj?_o;fw|SrQg1@bF ze0{ia?Ag-VdOO#x9IrtW*8cWBz&YU}VOD*{!xPo&b;=8-)+*DJ)zeF!7QMN-LCrxY zZKh#9m;0xu_VBmV&%Z2=WW5fflSuZtJVCIlDJmMb2Vk9@o$b$i?Nzz$8QvTfNP({L z6>zJt812wz0f?o=#h;+MgBCGO)ly5)td|IM{!Jh#3{X_O&({*dXvOLc#ax2EgO<9h ztBV_ike!`JXc+Sfk4QR^5!~|4(zPMjqT|`t={oje7-u8B2b2+;{ zGpwwvz*nmNyd>@D}mF>o<% z+f$1*d)PVC^z`)Aj=kS)AuH1w0Pc~p;?a7FeRN`CZ@QX_*)Sm0Okzu=m#WBpAS|Q#}Bfz8G%J;(cEbQY!~ligf>72#+x^9 zFgC{W1_Iq8jz&aRWh1^RrwT`T9ImTFAkqc~G{DXwzIUHMCWi-2y}G+Ql=&*~Z2JTH zjf;!GJ#0J%5s`D4EjcOa2(XL(%+09`w6wG+w;@+oF}SV9ay?y~oSbf(Isgani_HQv z3k%5m_xL|G)FjOH_JDK(gmhT);kv)n*TjS|M=qS#7FteA> zhM#~|RL0%iz10PDv+~Z){7&nGuhf%$E!wOn%QdyNH6Rd^i_8TjHvio@Xbuam*9oc} zUUq{i2%HI%wf?x4lNsxyy#;!Cd3m5|Y^fM=p9s6}Gtm2{BLBlBcv%C9iZ?8hV?W~-wt!?W8@FpLTkfivKwW=fpIxgoGd~}@)i9FiE)ZuZ6spnv zFC#D$_z~b<-QiYx;SVle_V^|cMJyp5;Qop@ZxHRZp|_uQ&fq1 zF!3E6Z06)P95(Ao>UVRPQ3P&|P}?~^FcrdRM8-%>N@+@KE_2fA&(62M^PL(DbU(*qe-+@PYbub=LFVFl1j_!D4O7wXDMNl7`F zCYIo^(o^NQ_Qt@#fP&XdArw_$HnfFY1-=0TFE2#0e5_yk_3O1mBRIqVXX<|!*`)tR z-2dm-Y*#0)?9>9aPobqZssth~^=rLFH7ORy5115flf>`eQrW-w>~@&GE0$uQ6rCG% afIeQZwTZPVWdJ@uhN7&hOu4jCz<&YR(^kR& diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112-members.html deleted file mode 100644 index f702404eb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112-members.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRMitsubishi112 Member List
-
-
- -

This is the complete list of members for IRMitsubishi112, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRMitsubishi112private
_irsendIRMitsubishi112private
begin(void)IRMitsubishi112
calibrate(void)IRMitsubishi112inline
checksum(void)IRMitsubishi112private
convertFan(const stdAc::fanspeed_t speed)IRMitsubishi112static
convertMode(const stdAc::opmode_t mode)IRMitsubishi112static
convertSwingH(const stdAc::swingh_t position)IRMitsubishi112static
convertSwingV(const stdAc::swingv_t position)IRMitsubishi112static
getFan(void) constIRMitsubishi112
getMode(void) constIRMitsubishi112
getPower(void) constIRMitsubishi112
getQuiet(void) constIRMitsubishi112
getRaw(void)IRMitsubishi112
getSwingH(void) constIRMitsubishi112
getSwingV(void) constIRMitsubishi112
getTemp(void) constIRMitsubishi112
IRMitsubishi112(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishi112explicit
off(void)IRMitsubishi112
on(void)IRMitsubishi112
send(const uint16_t repeat=kMitsubishi112MinRepeat)IRMitsubishi112
setFan(const uint8_t speed)IRMitsubishi112
setMode(const uint8_t mode)IRMitsubishi112
setPower(const bool on)IRMitsubishi112
setQuiet(const bool on)IRMitsubishi112
setRaw(const uint8_t *data)IRMitsubishi112
setSwingH(const uint8_t position)IRMitsubishi112
setSwingV(const uint8_t position)IRMitsubishi112
setTemp(const uint8_t degrees)IRMitsubishi112
stateReset(void)IRMitsubishi112
toCommon(void) constIRMitsubishi112
toCommonFanSpeed(const uint8_t speed)IRMitsubishi112static
toCommonMode(const uint8_t mode)IRMitsubishi112static
toCommonSwingH(const uint8_t pos)IRMitsubishi112static
toCommonSwingV(const uint8_t pos)IRMitsubishi112static
toString(void) constIRMitsubishi112
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112.html deleted file mode 100644 index 21c2a5ff3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112.html +++ /dev/null @@ -1,1188 +0,0 @@ - - - - - - - -IRremoteESP8266: IRMitsubishi112 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Mitsubishi 122-bit A/C messages. - More...

- -

#include <ir_Mitsubishi.h>

-
-Collaboration diagram for IRMitsubishi112:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRMitsubishi112 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishi112MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to off. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingV (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingV (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingH (const uint8_t position)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingH (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
Mitsubishi112Protocol _
 
-

Detailed Description

-

Class for handling detailed Mitsubishi 122-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRMitsubishi112()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRMitsubishi112::IRMitsubishi112 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRMitsubishi112::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRMitsubishi112::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRMitsubishi112::checksum (void )
-
-private
-
- -

Calculate the checksum for the current internal state of the remote.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi112::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi112::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingH()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi112::convertSwingH (const stdAc::swingh_t position)
-
-static
-
- -

Convert a stdAc::swingh_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi112::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi112::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed/mode.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi112::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRMitsubishi112::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRMitsubishi112::getQuiet (void ) const
-
- -

Get the Quiet mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
-
Note
There is no true quiet setting on this A/C.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRMitsubishi112::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingH()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi112::getSwingH (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi112::getSwingV (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi112::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRMitsubishi112::off (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRMitsubishi112::on (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRMitsubishi112::send (const uint16_t repeat = kMitsubishi112MinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRMitsubishi112::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRMitsubishi112::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRMitsubishi112::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRMitsubishi112::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
-
Note
There is no true quiet setting on this A/C.
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRMitsubishi112::setRaw (const uint8_t * data)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]dataA valid code for this protocol.
-
-
- -
-
- -

◆ setSwingH()

- -
-
- - - - - - - - -
void IRMitsubishi112::setSwingH (const uint8_t position)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRMitsubishi112::setSwingV (const uint8_t position)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRMitsubishi112::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRMitsubishi112::stateReset (void )
-
- -

Reset the state of the remote to a known good state/sequence.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRMitsubishi112::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRMitsubishi112::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRMitsubishi112::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingH()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingh_t IRMitsubishi112::toCommonSwingH (const uint8_t pos)
-
-static
-
- -

Convert a native horizontal swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common horizontal swing position.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRMitsubishi112::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a native vertical swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common vertical swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRMitsubishi112::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Mitsubishi112Protocol IRMitsubishi112::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRMitsubishi112::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.map deleted file mode 100644 index b772d04ba..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 deleted file mode 100644 index 6fef7cb6f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a0b93745e15f12d1996a00ac653654d8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi112__coll__graph.png deleted file mode 100644 index c6bf8a4a5a071460723b308b7bd389f99fac05c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6763 zcmai(Wn2_pyvLW2?(US3?v!xp21!{ul}19OmJTUJ5D_I@k&^Ci@R9CrkWPiAxrgVz zxb@;LpJiZnX6KwUzkmF`6RWGOf{#Ok1A##B)l?OqLLeyk;BPn<2KarNl;#UI7&aOz zijceepX}zm_YepTlbYfa1HaGv3jro%Qwx|!hdko-yvq;bm}(8>^@-79X~JtKQLWoa z_`767pJu2sB1ZjU1zT!FnH9M|IDJyJ5Uk-c6gcAQp&`}~F+Dcb8{_2bvrqFdM4^1! zckucy+ofxx0@1ivaVoJopsKCkb+QsCii~%QZQMPc&v0hXs$W#rnHpjOWUnZXa^hQCrof)!`~EZEWvM~Qn-Fs z`?ckM$EzqW`b_K{99X2J8hV8q^1yW?lQEbh{&O&zLNCzK(U;po(UgrTw?$lMMZV?c zQcJ}%=M)y=(Dmk&lxREp&^&xWb(uY4e-*Vz0mb;Fovi%)Ij2P8*!jtP(`!};m%(^B|^5~u0wiXijJYMX8x4?4`mH7mE0i!}rIhU4JpC*T|C z=;)SrcHV6Cr6J18^~@KmOC=M-o10}U{I}UYOM3lIud&WXwm!nf$M1HBU(LCVnZp@r zX=%@|u2^Mc7D9-3G6x4mu5WJ2ou^9N{`l_CK7hmF=Awd}*BktB6kELBMEZcjlddks zAI~Z=gwpZq>+2-~&UlPU%w}BEBO=fRdUW;lLfhKp6_u60e*dn#IS0+uo?6N)DIsug zxnQ@kwe{Scto}|^m?_@(3k#Nghh`g;WD+vk7^2Wvk4i1j4-d;pOfm)GIG!9tn zrqfB-vIK#+`=Y_n;jW)PCz-0MYDjc6CLKLJGew-9kT8;+~hYRn_iG zvMw_f4-5?rV-gaSG&S)sc0?cE%S&D!QtBgnckT6%jV-68g`u?hjD~{WB0ee#!>l!! z-nhgpRFho+oDhYj6xBAq94t|d(*&1;yZcaKVd3~OJ3D(}8b2SO1H?p4E!KZ= zAVZuQa(07U67CT}!r{9qsi}gHy@Q2D8bRkV3-_xZa=4UycHq6<%)kgSQC5zc?324i zZhgYYzBMs5t>ACHermorbv)@qXKY}QzxgOtot+G4q7UiwSp6XhMu?%YaZ%r&lM^b4 z5e!yzDkeDT$nbM~yOd*aa1aX@x3j{&Z+Lt>;_chFd4;`weYij)T@60FL}X+UAUeO6 zmAy5lUtCWxs2tf7M&`(d8n; z0nuc2Fkip$i*e}?h)YRD1@l*5-^8DXB(V*6!}E7H#cSK!*tt(*S66KkrmJ4K=TnI~ zk&TXy>YACw%LJU|Zz6r0UiUC^Q6`2nSb&4BRX&NgW&<5XE(yG z>guH$MHXU*{*R&L+(y|oH55+^$Y{k}hA+gZyGe5noBj}Jf0jUTc6Po`_mvIzYQqp4?!mjlR#0QaIK)~A0MA1iK$3&xD0#R<` z5=D^AKw6nQJgxz$^Zeq1nTH1t#Fa_?OSaY3RV#b@TtgVhSGt^JM6rrsB|%!9xH$8O z_qn6aF4EvZq@|Fuj!lSKWR<#tx&V$G7i~d4mUn06h&WPE3n%KpWy6PJ@u!GjF*oUs zGDRFg|7&M6f%V(;bji1#c;@j6bB35E=prG)d5*T1ENOiK`#9Memvk_t(>By!PTVHv zkN!?Z@%^nQ^xs`j&I-Nap>E7%lR>g&tP6B5ms4FiGWpl>}7PWv@( z;(>of7kBz^R0yT;sOU$G7WN&k zmv(DC`3mUvlMHlyu95D)P*?+htZZGl$b3jZVZ&#&mg^xwu+Mr2gc9hZ#-oht6M8(q z<(-!@L38*x75Fx|O2%NdgKq!SfO?YqdPED64!P`l**Sg@-x~TZ=$lF3Tc`>CXovssK1NU!ZXh#f}UshkwUTL{%)g>ie-_mfTqOg2CRA7LR@~`>eEBXg=+6N0Tdy$uwR`sk)&dIcU($&A$xp zGMEK~J>TdpmF#?VtGe#a(;dF55=G#s+mLP%E-mTvF=HK@L+{R=C`-(h29!?>CZSFQ zfit^PPowRK?im)x(ud{Es~ds-(A)9Z!n$*!G+%?|Nb(X7!pVaK*nr}D>xvkGhQFb01?R+D4{im74uivw6eR|}kQ~+IXRKR+&lUIO$hIS$n$G|M` z`IZMpBphymElsJ>AH4M5IJ%O9Uk4Qxwajx(xj$2e_U!CT!h4Iz_h25IpPzqvc9um# zf@-S7T%W&GmlL#45JEyi2`MQk4+Y}Kj~}q03^CV^`FbzVzpw1>#?8;0`MkEbXX~;N z1crlM`*RF9$Z?i1XmpoozKfHya2AigBRj`Mzx;Q=e$!Njln>Wjb3m=X|H=A4dn$65 z#M1EF$GclwR<91`ttlud_P|&F$jyy3uk#2kHg7a)4m2O5KY zNdLP)?$d&jp@oGn=1qR@L`6l*fq(nGx7TmLMGkt?v17iGipp=o&%w%O7o3H++T&Y4Z7|eIA2S35bUWgj4jf;zG{7;HH8!1lY&IX50 zW+kO$o}P{w9ewIUKR77o-C0{xg8`|kssg^e zb8@lkoCLiNFid&(mIMMlOacvOEb0kOs3dH8stCTCjX@ zkofbbYFBr64zN-K0|Rw|7eZgZejT2jopoPed50zJ(BJlkoLd(L!!0m)gHJ2A94B5#>0;XKI$WWfSD18r?>RW-FI4i4;ldwUSb)!BY{Ruz!j7Ugc4%ti3s^By+FR+TEZ} zW8a%s*~oAB-WC>*En-S9_xE>6j#ES_KFGJ{n^7bpDM&bui~8*!CEk|4!p=X(d?^B% zsB8($dmH$+%yiOt9B^2?n9^qcSZ;3aj`X=sFlbuvXv+u;D7ieCpCz{WQTp8(GNMzx8&|OSkH&_Z~wDT-&x~iznpOtqEWx2+JV9rhh0J? zt*$5j;DoERNAdD)KE!*eOK`>6B?NeGI`eW0M3PIvI~1tNlp0wL!8vYfZa$X z*>A=GtO)ogwg!%CP0JcR^RsbjFF`hD>!%9aa-j^F?t(`w%V?$J! zq1rny%c%Yd+(*N2(Yidhv$LbRBnqTSA4hhzIShP?l)GLbj3Q7V6r+-YAjBL8=@g=m z#{ZSb|AdAZ^R(_wp&A;EKF_8S>7_l^e-cAN z7TVebP0h`iLI&X)s;ct9#3m;vXBGzD-QJiq`3Vv*%EkjzNJc?n17O}I-pm%L;LIT7 zfPta*dcIZ9UHEm+OaZc(ZwaD>43Cb6jpgaE3JE<$WcKQ8FTwAE$jHg90UQG+h~NXi zB?08;;9yTOn+6dL%^SlaqZPm{c1|gIO(TkoOAGUWpA!U&&q*fN#8UR-2VRj;G1Sjb z;+|i@YTZt!gW;|yKoOn5RS`2VB;GTl`j@#=4Vi{7UkZhVg<09!qUq@9#B|#LGOF)* zN{He8+6HP0gWVfFz(6f6m)z|C)8nZm(zQ1pw%pfQKr}mNX6lEe;K;_M9FVZ*He${A zdP~e3-zF!cGBPp(8~s@}h-R%fX-aDH^JluIyW6Xy8!?gL=dK0i+nHT~lpB(%zoS zJ$(a~-`}-&8r(}1Tne6lE0U#U60ptJ`|j}0IQ|x_(Cn*;Jm9FmYkzqI1n}7ZFBX5( z5h@_xezlvct6^FhV$7nVvTqd8fUZ6;FF)9-zIl^oWzip4hB4!DH8`uXtB;x zmZq${BjLdPNB0mS<&l0Fpkk+#6Tf~H&ZX6~v{=~Q{Q9Myu&sws2Ewp(rH1C0 z?0g?}&j0cfz_;)vB_*fJZ80Cq$l#NN=ZtK`V*8&?7<--{S$~%Byze-M%$9)q%UtKg zfG#?FdoiV79YiRyv|pa?>KPkj0!Dp(i)@Xq_SuYa1{q+w!XB4`&n!mJw#VxB`eGqi z3ne5b1`9kS$f>KNDk&*B-$EpbxP_t0gIAX8u@BJsLk^Cjyhi^F2FaJ`1Ox;@A7G}Y z_h|w`L`sUV=;`P{1teaFe8@_Xe?>4GJn6`(shL!4?0Me;Xcs163Lx~$a}-wMFf>^H zf2#0rRTw7C!SMavpZ-J!1B2RsD^?dxsN0%4_6%dUEdKt0z+v0<2%_Ns_UMJK%~}ET f2^O^o&Ml*}1WB>0qDU8bdIV8Z(pD^iT7~@wOS;%X diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136-members.html deleted file mode 100644 index d9e845f68..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRMitsubishi136 Member List
-
-
- -

This is the complete list of members for IRMitsubishi136, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRMitsubishi136private
_irsendIRMitsubishi136private
begin(void)IRMitsubishi136
calibrate(void)IRMitsubishi136inline
checksum(void)IRMitsubishi136private
convertFan(const stdAc::fanspeed_t speed)IRMitsubishi136static
convertMode(const stdAc::opmode_t mode)IRMitsubishi136static
convertSwingV(const stdAc::swingv_t position)IRMitsubishi136static
getFan(void) constIRMitsubishi136
getMode(void) constIRMitsubishi136
getPower(void) constIRMitsubishi136
getQuiet(void) constIRMitsubishi136
getRaw(void)IRMitsubishi136
getSwingV(void) constIRMitsubishi136
getTemp(void) constIRMitsubishi136
IRMitsubishi136(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishi136explicit
off(void)IRMitsubishi136
on(void)IRMitsubishi136
send(const uint16_t repeat=kMitsubishi136MinRepeat)IRMitsubishi136
setFan(const uint8_t speed)IRMitsubishi136
setMode(const uint8_t mode)IRMitsubishi136
setPower(const bool on)IRMitsubishi136
setQuiet(const bool on)IRMitsubishi136
setRaw(const uint8_t *data)IRMitsubishi136
setSwingV(const uint8_t position)IRMitsubishi136
setTemp(const uint8_t degrees)IRMitsubishi136
stateReset(void)IRMitsubishi136
toCommon(void) constIRMitsubishi136
toCommonFanSpeed(const uint8_t speed)IRMitsubishi136static
toCommonMode(const uint8_t mode)IRMitsubishi136static
toCommonSwingV(const uint8_t pos)IRMitsubishi136static
toString(void) constIRMitsubishi136
validChecksum(const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)IRMitsubishi136static
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136.html deleted file mode 100644 index 0a0ba40d3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136.html +++ /dev/null @@ -1,1106 +0,0 @@ - - - - - - - -IRremoteESP8266: IRMitsubishi136 Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Mitsubishi 136-bit A/C messages. - More...

- -

#include <ir_Mitsubishi.h>

-
-Collaboration diagram for IRMitsubishi136:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRMitsubishi136 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishi136MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t degrees)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingV (const uint8_t position)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingV (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setQuiet (const bool on)
 Set the Quiet mode of the A/C. More...
 
bool getQuiet (void) const
 Get the Quiet mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
Mitsubishi136Protocol _
 
-

Detailed Description

-

Class for handling detailed Mitsubishi 136-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRMitsubishi136()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRMitsubishi136::IRMitsubishi136 (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRMitsubishi136::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRMitsubishi136::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRMitsubishi136::checksum (void )
-
-private
-
- -

Calculate the checksum for the current internal state of the remote.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi136::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi136::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishi136::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi136::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed/mode.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi136::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRMitsubishi136::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getQuiet()

- -
-
- - - - - - - - -
bool IRMitsubishi136::getQuiet (void ) const
-
- -

Get the Quiet mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRMitsubishi136::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSwingV()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi136::getSwingV (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRMitsubishi136::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRMitsubishi136::off (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRMitsubishi136::on (void )
-
- -

Set the requested power state of the A/C to on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRMitsubishi136::send (const uint16_t repeat = kMitsubishi136MinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRMitsubishi136::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRMitsubishi136::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRMitsubishi136::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setQuiet()

- -
-
- - - - - - - - -
void IRMitsubishi136::setQuiet (const bool on)
-
- -

Set the Quiet mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRMitsubishi136::setRaw (const uint8_t * data)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]dataA valid code for this protocol.
-
-
- -
-
- -

◆ setSwingV()

- -
-
- - - - - - - - -
void IRMitsubishi136::setSwingV (const uint8_t position)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]positionThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRMitsubishi136::setTemp (const uint8_t degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRMitsubishi136::stateReset (void )
-
- -

Reset the state of the remote to a known good state/sequence.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRMitsubishi136::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRMitsubishi136::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRMitsubishi136::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRMitsubishi136::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a native vertical swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common vertical swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRMitsubishi136::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRMitsubishi136::validChecksum (const uint8_t * data,
const uint16_t len = kMitsubishi136StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]dataThe array to verify the checksum of.
[in]lenThe length of the data array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Mitsubishi136Protocol IRMitsubishi136::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRMitsubishi136::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.map deleted file mode 100644 index df0c0140a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 deleted file mode 100644 index eafc45bfd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -527ce2cd121690e40f927cefd26398a3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishi136__coll__graph.png deleted file mode 100644 index 5173fee4741a0464ceb03a51b8fe093417c68cef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7217 zcmZvh1yq#LyY8_-2@yd-Qo6fa0YQ)uBnKFfX6Wt^5s)tF1_|jHLSmHe?rs>mW2n15 z|8?%V=iUozF)Y?*e>>iIp5OQVqoNEBCNU-&8XAu5dnpw(w0k(?CKZt%gTB5uK4+0CO-nn$ zRDk_1-czk?W2R5$0k-i5riQbtm`b;61`dZdE%3vvlHSyd#3Z|rPkif z_3djLs>eEO_F7^C9V=qwDaV2v$8PCsO@bS<$AU6=5|3$Qqlrx#yGQZfM~_x?=1|H; zzcm_;r0IIiW&S?e=-F|-45^^Kzt8mwMQ+eft*r%wxJ}b#?$8#6pncBJR$LAS-1`Pa zyaFRNH!?CR``i*h_awhg*!_e-CY+QLMnb}8`I?)1B;V?NbS4)!_kJP<7&)u19bj&e zw8gL(#y_t=ny;)d97n_3`rB!nNYvf2*!U(zO=Iei!G%YpU+12${nc(R7 zSbLUT)qT%I@m!{>9gqDH%v4V4LAB zeseZsb876e*Ku}shE2rb`xOIMY>4E}E`2?ulF4-?zyMl3!Vg5SM=Zx7un3#;R9s`HEU5e6{%-R*HyQbXFEs zd+4id_PeD(3L-I20ZvX%BV*&k(+Ryw^O0Pb)9idiWktnfY-}1Xu4rbB5+bL%B;oAz zw8_cI1JrhDHUlQu^+<%?Z%0Nb6goLQ{hXAvx8PIWiSfI4@4y;|;1(LBWMofpap^@x zb@j->Y41!`z7lcec>46|#pPwW=>WNxo3k_D($bQEfWTm-sS=;{tl3VRrOM~epI0|F z9Ih|yGGJcCT9pCc@#)7C&iW-$oQCbTN2{_>cO)&ryG%WV_nWzy=9ZSPURP(xKyGes zWrA-c{MMTtH|K~uS^)tf3=9l%j~&jYyW1&Qrq2Gs4_>Z*~~Wsz1Tk+`=AKD}aVSJx8?3JS5?ixtSWy{)bOQuDXj2DeW>EqZU> zpjDdmEhF>N+vn%g;1(11YuzuPu1k+}baj!V1^7Owk@Q;UT}bLSqQngi6ASBmNJvXh z4;DQ=J)L68dpkS3uj{<%+4N!2(a*&$SMkACK(L_Y*9y&Qvd)s+9U+EdsIIOSIc&v8PxtmbY$NPV7f%OQ!C}%%BppWl?(N%qc}nSYf`W;m zq1Xln2ENl1;vY9e&_L9s2ss6l2|Gu|#YyYyzs7hb*9@m^kj6n6s7 z>i?{HZccY+u3kgj)8k49;jQ~v8P2-AvQpT0+({h~G$3|WBz<)XSDSDyw$iemskTby z;N~ub_k**)@!s6uFD+$eXIDZ4!7NEbPao3UEWv3rFY?*cl%9)=%m3Nf`L>_meNLw> z)z3CI?DqEdCx`vX{7MVzFxW3NDF`IVd$!JDaQv@B*eXFW? z&}Qf6P6;!6dwUsJSXP(YLQp7OUENb3ZEfubA0ZGq6B9ac=VRSoo}Qub1iF>2EjcqY z27EgCjM~}+aBcG%qE1#J0Y_(NC7e3iK1l&pPNlo<2m?dIA*7>DlV{?W2N=%@2&80X zpMZH7f}4BT5%M4eK-KF_;tc^YtX5Bi8j_*NWWY=nc3Gb+H?*8@NK{M}LiX&7{O;-O z{4+b7VmZ;kCWdHjPe83x^c9Pfrtziz8qobMpgxIx;nPmoHwtushjQM#m-B$=;j!?TC~x zHl~ed(;bfZR5*s>`mbxu)2^{LgF{q4eX?NDkeucYpsQ1A85)WLHTv-OYX1`y+CSgu zktpau2ZJXC2V+)2SbzTfx#=h*A}ablG?a#qFD^EgKu%6hz;5~B(9lrqj~`<*aS;)? zZ{NO^PZLROXb|Bc#yLDZR49v8UT}~%QCZp5*{Q!Z zTHqfLu)MyGKB{wf+6O9@tgEZQN=L*-yq4UJs+LtHiGiF2m%j=Ho9|yqSesYDCl-XLrF=AlQcm@K>15AscDW@ zy)!U&yS|;|nDbt6RwSsW_3a<}Kc1;Q63P;LE2JtEK5a0U*4lA>tq7xI{24*rzV#*hahlw{!v@`nP%~>*01(N3Y zTeI~0WA(+fp6$+wlkwepF!O)T;hy93e-6~SG3eVCXlH%dch?*R^PEY5( z+=k8KO-JhpYV^iU9-}#ujizP1N}F`9;ILCwG3*jj@4V})Z|&<@oBXYL&|Cr?Ec14Y zKCIdimeBQ>GFX^;?i;#~rA2syZ>q7DHBvn(!f=n)?Zu7QN6^K$tKVBl@4o*W5_O7?IOxDOj zwcBci7q(~c_Hu3E5p)J5{37QwSY><~-xzrSRn_Z%f9?~-Uuq#r#Ax18WELs=Oui*5AC-$%HkakAThlg@ zP`4B$^t@tyP1{9b*NJ+3>y-W%H=D~(C42`e73qQ$f5)pw@ie46Nfj8%`sWK>&+(jT zgtK;KRj86XCk%&G{Tk`G+1JV0F`=D?L_hL1$X&ek7ab>CWjE-PEqqU`{&d~(iTxX= z0qwD0Z23=87a=g&;=7@o+)v6`KVRRxWO||I@?bVZagl^lNg*j2JPXaUB^7VlgW%SA z>uA$VBY<@`{AZ(9OdIXk>XCT02;vM+=t3(yfA2>4SK^Q05~UiO=FXe|GhW#i?po28 ze7rGV401ELJ`wTcG2bklDVqOwRrx8G+L z4pA6Ja}_9h@H_ZdjL{Fdzf%KAOFb01MISr9Oqm~(~jj$p2y;JPh8^&Z-r9ucO!B}n#&kVRO1@dqZuucBdKmYo@WbOhpR~@A(_Wy zMzNVLh9>JbMdnSxU(^xdcEvsh1zIq#JbF+uJ~4}kM$vTT|DV?HzY7Y25mB(VqfzJN zG8RW%M1$~4pIA>6!tQ!(GF~|C)_cbS>-xy|F;QA>4>^F$O!G#W@9ges)jP9(h-Yg94gp9jzpq~fowj1VQJ^6$FE4LS!T18JhDqn#Z~ARFy$Z8J;<(ky3d%ZK82JJ>7A9V%Cm zb#q36mE-;SrBXIa!S>xG@Fx0nPn9CgatZO-dKa5R(38LKBkrK8>gvJ38)1PjyNiR* z$`A-sIH@32u0nEdx|om<1axA|FllN`Ow3kon?_pH36i=BQrsk_q@-lGGs&r}qr#T$fvuS_;^B#@uJUQr6;>H@rNrNK<~an z8y+4;vvqNiQ6>QDthYB5=xjDo>i!d@W#>U3l zF1J1b&Xkdvxv<6>tiaFDFG0kO%gxQrjE5LFie&wQoN;Nou&a;J8lPj`F>r|ev$Lr) zGcyGQ1N~jEw98w35K{dGRB1}?QccArR?%Qo zY-Ku*SWC(UpIDgRhtu?zRdjcAksa(L$8MHc$?`;23G&3}pY=TnNq<+ZBqMTEpsJ_i z$PhyIEuXR4D|`|Xi)mkyw|j|H;Vj)Wwpk?eK4z01hL9^E^TJhRmlso4slG#RspF<~ z-(Z9%H3|8x;`%>PZ7jD|U) zDU0{zRnnBP4yS>cT~BU>r4kD~XSw#lP=DM_s{EDgy8CY~ICTboH=jPr1yEE~y@a z&Vb2n%?a9o=5&{K>(79wnkfD+Y1F#4&Y7{24#Rdwu)vrIc!A{dPPdLqwXX4|xR=@f zR2jXG?DJ0QFgk91cS51FGRiAeAoAXBzFrBGNDFev`w;2rm1RUUb)NGCS#|%1)^V-% zV2VK$gaG`7kvEUs+#&cKOzZ#G6Z+otBdM5rLLIQqd7T((HNuYV=?ko)Wm{UA|(S8TM?Z zEqr`{j{T=al1>6&E5huHbSM#J{uclAFR=(=QDy?wFcl4tknrXKvBA|IqfjLkmFNPO zztxtyA-f)2W`nP9&uS2$mr)1tJE8SK-oFnjkTg5~Pnb~sk1!eXYdGp=28^I)YK#`n z%4N=zB^yImZrBm7KGakY{|?p!*(s$DaKGBEIXpQrI$G^QEddaPrf+Qgt-f9uj9bI? zxsZgrDW(Ygtuh~ZjDT8^-)ii#YDJny)&}I2SA>&=@bDwD&WSjN%(pbLYxQA zNGeMJq6z9t=6{f(QZNae2mGk0h~+sxzO14mdWKTESi>!9+i_=7S-cN)7_D-HM}%xT ze}L2JilH9?K2ADB3r1{(dcOip^v0hr4=krDzLk}6tPi9sK_C#gIWQno6~-UncEGN- z&CJv@O7hm#)(Si&75H;~d2GSDP+^Sq6&=T5?3dd0w%%PB$bd5@jGQuNXNQS=le>4Bq455%xJ*n?kphE zJ3BjxPiNiUi@WUUsHmuD*4hFSL@A%d^TbynnUB+XM>7D2qE6HKH>m0RVCuy_{skHqme7O*q8nui zE2lBj;T&0j&kTVjD=cINpfW|=2dbAA8Tsd6spWf6&>sK<`%{JS2?-|_Q9swS`%=G8QfC=QvSU15tN-8Qpa23b>!uw@_f&#*1=j2pe*^jtAEd@PKO<1(6x7P@q zC-ANh_4M>W!?-%%-vFT2+7`GmYvaAyx(gJl!no(S!QH~5)3@W&fqrvQY;6l>Q!fAPXeZx`^j z&(_xA0F1}Q#hvU-#c1exjb#W?QByy8{P<6MdjJS=pk$f>E8H(E#-o-V%$C6|Dk=&J z4qgU8L8sCEv?&fp|9o%G-`}6Zp!M-Tyd|Rn=nLqPfcGhSdWt0TSy3@C1YKOX0vfqj zFWSX3?KoWPrLeMHiZJ=(d++*c;Z8cQ@KOg$Mn)zL5ITS)TEPlkuMa!+3q|?)`Ar7W z`T)F41ernMd2p|wpa6Zs?%dW&uK{qWjiK*9)W$5ZySuxwgEtgg0&rGlY!Jra^JHr* z1mwUcb#>`_=iQG4-@qiX)ErKq0-%p8cHz6$6Au!L0tDW#yDW&7mfF?ue63w}`!!G$ zyaBp8Ixs6lNp(M8 zx;;^8F~LSfMMYlQ1R~=Igms1a2%V>wmlk-J04UZgZj;FL^audp_M5KQ#>drcbdtfX z0nn}A8ieP#H=CHBpASRiq5(A)85#Ko24mXW+q=Hm_bIi*BY6G#bw+d(~F zWz%w$eBL`Tf78{@sMWPK_;AUgiY`cr_i}Ou;Ehx6)1SrB>>r|Ox;XyxqU*oi&i}?I z|Fi!8doKprA - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRMitsubishiAC Member List
-
-
- -

This is the complete list of members for IRMitsubishiAC, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRMitsubishiACprivate
_irsendIRMitsubishiACprivate
begin(void)IRMitsubishiAC
calculateChecksum(const uint8_t *data)IRMitsubishiACprivatestatic
calibrate(void)IRMitsubishiACinline
checksum(void)IRMitsubishiACprivate
convertFan(const stdAc::fanspeed_t speed)IRMitsubishiACstatic
convertMode(const stdAc::opmode_t mode)IRMitsubishiACstatic
convertSwingH(const stdAc::swingh_t position)IRMitsubishiACstatic
convertSwingV(const stdAc::swingv_t position)IRMitsubishiACstatic
getClock(void) constIRMitsubishiAC
getFan(void) constIRMitsubishiAC
getMode(void) constIRMitsubishiAC
getPower(void) constIRMitsubishiAC
getRaw(void)IRMitsubishiAC
getStartClock(void) constIRMitsubishiAC
getStopClock(void) constIRMitsubishiAC
getTemp(void) constIRMitsubishiAC
getTimer(void) constIRMitsubishiAC
getVane(void) constIRMitsubishiAC
getWeeklyTimerEnabled(void) constIRMitsubishiAC
getWideVane(void) constIRMitsubishiAC
IRMitsubishiAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishiACexplicit
off(void)IRMitsubishiAC
on(void)IRMitsubishiAC
send(const uint16_t repeat=kMitsubishiACMinRepeat)IRMitsubishiAC
setClock(const uint8_t clock)IRMitsubishiAC
setFan(const uint8_t speed)IRMitsubishiAC
setMode(const uint8_t mode)IRMitsubishiAC
setPower(const bool on)IRMitsubishiAC
setRaw(const uint8_t *data)IRMitsubishiAC
setStartClock(const uint8_t clock)IRMitsubishiAC
setStopClock(const uint8_t clock)IRMitsubishiAC
setTemp(const float degrees)IRMitsubishiAC
setTimer(const uint8_t timer)IRMitsubishiAC
setVane(const uint8_t position)IRMitsubishiAC
setWeeklyTimerEnabled(const bool on)IRMitsubishiAC
setWideVane(const uint8_t position)IRMitsubishiAC
stateReset(void)IRMitsubishiAC
toCommon(void) constIRMitsubishiAC
toCommonFanSpeed(const uint8_t speed)IRMitsubishiACstatic
toCommonMode(const uint8_t mode)IRMitsubishiACstatic
toCommonSwingH(const uint8_t pos)IRMitsubishiACstatic
toCommonSwingV(const uint8_t pos)IRMitsubishiACstatic
toString(void) constIRMitsubishiAC
validChecksum(const uint8_t *data)IRMitsubishiACstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC.html deleted file mode 100644 index 5f82ad467..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC.html +++ /dev/null @@ -1,1497 +0,0 @@ - - - - - - - -IRremoteESP8266: IRMitsubishiAC Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Mitsubishi 144-bit A/C messages. - More...

- -

#include <ir_Mitsubishi.h>

-
-Collaboration diagram for IRMitsubishiAC:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRMitsubishiAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishiACMinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const float degrees)
 Set the temperature. More...
 
float getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t speed)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setVane (const uint8_t position)
 Set the requested vane (Vertical Swing) operation mode of the a/c unit. More...
 
void setWideVane (const uint8_t position)
 Set the requested wide-vane (Horizontal Swing) operation mode of the a/c. More...
 
uint8_t getVane (void) const
 Get the Vane (Vertical Swing) mode of the A/C. More...
 
uint8_t getWideVane (void) const
 Get the Wide Vane (Horizontal Swing) mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
uint8_t getClock (void) const
 Get the clock time of the A/C unit. More...
 
void setClock (const uint8_t clock)
 Set the clock time on the A/C unit. More...
 
uint8_t getStartClock (void) const
 Get the desired start time of the A/C unit. More...
 
void setStartClock (const uint8_t clock)
 Set the desired start time of the A/C unit. More...
 
uint8_t getStopClock (void) const
 Get the desired stop time of the A/C unit. More...
 
void setStopClock (const uint8_t clock)
 Set the desired stop time of the A/C unit. More...
 
uint8_t getTimer (void) const
 Get the timers active setting of the A/C. More...
 
void setTimer (const uint8_t timer)
 Set the timers active setting of the A/C. More...
 
bool getWeeklyTimerEnabled (void) const
 Get the value of the WeeklyTimer Enabled setting. More...
 
void setWeeklyTimerEnabled (const bool on)
 Change the Weekly Timer Enabled setting. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool validChecksum (const uint8_t *data)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (void)
 Calculate and set the checksum values for the internal state. More...
 
- - - - -

-Static Private Member Functions

static uint8_t calculateChecksum (const uint8_t *data)
 Calculate the checksum for a given state. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
Mitsubishi144Protocol _
 
-

Detailed Description

-

Class for handling detailed Mitsubishi 144-bit A/C messages.

-
Note
Inspired and derived from the work done at: https://github.com/r45635/HVAC-IR-Control
-
Warning
Consider this very alpha code. Seems to work, but not validated.
-

Constructor & Destructor Documentation

- -

◆ IRMitsubishiAC()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRMitsubishiAC::IRMitsubishiAC (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
-
Warning
Consider this very alpha code. Seems to work, but not validated.
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRMitsubishiAC::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calculateChecksum()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiAC::calculateChecksum (const uint8_t * data)
-
-staticprivate
-
- -

Calculate the checksum for a given state.

-
Parameters
- - -
[in]dataThe value to calc the checksum of.
-
-
-
Returns
The calculated checksum value.
- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRMitsubishiAC::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRMitsubishiAC::checksum (void )
-
-private
-
- -

Calculate and set the checksum values for the internal state.

- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiAC::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiAC::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingH()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiAC::convertSwingH (const stdAc::swingh_t position)
-
-static
-
- -

Convert a stdAc::swingh_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiAC::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1399
-
-https://github.com/crankyoldgit/IRremoteESP8266/pull/1401
- -
-
- -

◆ getClock()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getClock (void ) const
-
- -

Get the clock time of the A/C unit.

-
Returns
Nr. of 10 minute increments past midnight.
-
Note
1 = 1/6 hour (10 minutes). e.g. 4pm = 48.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed/mode.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRMitsubishiAC::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRMitsubishiAC::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getStartClock()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getStartClock (void ) const
-
- -

Get the desired start time of the A/C unit.

-
Returns
Nr. of 10 minute increments past midnight.
-
Note
1 = 1/6 hour (10 minutes). e.g. 4pm = 48.
- -
-
- -

◆ getStopClock()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getStopClock (void ) const
-
- -

Get the desired stop time of the A/C unit.

-
Returns
Nr. of 10 minute increments past midnight.
-
Note
1 = 1/6 hour (10 minutes). e.g. 10pm = 132.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
float IRMitsubishiAC::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
-
Note
The temperature resolution is 0.5 of a degree.
- -
-
- -

◆ getTimer()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getTimer (void ) const
-
- -

Get the timers active setting of the A/C.

-
Returns
The current timers enabled.
-
Note
Possible values: kMitsubishiAcNoTimer, kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, kMitsubishiAcStartStopTimer
- -
-
- -

◆ getVane()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getVane (void ) const
-
- -

Get the Vane (Vertical Swing) mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getWeeklyTimerEnabled()

- -
-
- - - - - - - - -
bool IRMitsubishiAC::getWeeklyTimerEnabled (void ) const
-
- -

Get the value of the WeeklyTimer Enabled setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getWideVane()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiAC::getWideVane (void ) const
-
- -

Get the Wide Vane (Horizontal Swing) mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRMitsubishiAC::off (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRMitsubishiAC::on (void )
-
- -

Set the requested power state of the A/C to on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRMitsubishiAC::send (const uint16_t repeat = kMitsubishiACMinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ setClock()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setClock (const uint8_t clock)
-
- -

Set the clock time on the A/C unit.

-
Parameters
- - -
[in]clockNr. of 10 minute increments past midnight.
-
-
-
Note
1 = 1/6 hour (10 minutes). e.g. 6am = 36.
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting. 0 is auto, 1-5 is speed, 6 is silent.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setRaw (const uint8_t * data)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]dataA valid code for this protocol.
-
-
- -
-
- -

◆ setStartClock()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setStartClock (const uint8_t clock)
-
- -

Set the desired start time of the A/C unit.

-
Parameters
- - -
[in]clockNr. of 10 minute increments past midnight.
-
-
-
Note
1 = 1/6 hour (10 minutes). e.g. 8pm = 120.
- -
-
- -

◆ setStopClock()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setStopClock (const uint8_t clock)
-
- -

Set the desired stop time of the A/C unit.

-
Parameters
- - -
[in]clockNr. of 10 minute increments past midnight.
-
-
-
Note
1 = 1/6 hour (10 minutes). e.g. 10pm = 132.
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setTemp (const float degrees)
-
- -

Set the temperature.

-
Parameters
- - -
[in]degreesThe temperature in degrees celsius.
-
-
-
Note
The temperature resolution is 0.5 of a degree.
- -
-
- -

◆ setTimer()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setTimer (const uint8_t timer)
-
- -

Set the timers active setting of the A/C.

-
Parameters
- - -
[in]timerThe timer code indicating which ones are active.
-
-
-
Note
Possible values: kMitsubishiAcNoTimer, kMitsubishiAcStartTimer, kMitsubishiAcStopTimer, kMitsubishiAcStartStopTimer
- -
-
- -

◆ setVane()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setVane (const uint8_t position)
-
- -

Set the requested vane (Vertical Swing) operation mode of the a/c unit.

-
Parameters
- - -
[in]positionThe position/mode to set the vane to.
-
-
- -
-
- -

◆ setWeeklyTimerEnabled()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setWeeklyTimerEnabled (const bool on)
-
- -

Change the Weekly Timer Enabled setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setWideVane()

- -
-
- - - - - - - - -
void IRMitsubishiAC::setWideVane (const uint8_t position)
-
- -

Set the requested wide-vane (Horizontal Swing) operation mode of the a/c.

-
Parameters
- - -
[in]positionThe position/mode to set the wide vane to.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRMitsubishiAC::stateReset (void )
-
- -

Reset the state of the remote to a known good state/sequence.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRMitsubishiAC::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRMitsubishiAC::toCommonFanSpeed (const uint8_t speed)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]speedThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRMitsubishiAC::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingH()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingh_t IRMitsubishiAC::toCommonSwingH (const uint8_t pos)
-
-static
-
- -

Convert a native horizontal swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common horizontal swing position.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRMitsubishiAC::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a native vertical swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common vertical swing position.
-
See also
https://github.com/crankyoldgit/IRremoteESP8266/issues/1399
-
-https://github.com/crankyoldgit/IRremoteESP8266/pull/1401
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRMitsubishiAC::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - -
bool IRMitsubishiAC::validChecksum (const uint8_t * data)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - -
[in]dataThe array to verify the checksum of.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Mitsubishi144Protocol IRMitsubishiAC::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRMitsubishiAC::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map deleted file mode 100644 index 1a1d04697..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 deleted file mode 100644 index 04bd15312..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7319af7df9cbebac40a2fce5bbaa306e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiAC__coll__graph.png deleted file mode 100644 index 7ff0061c8dbd6d17648bd0ab890f405077bbff8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6838 zcmZvh2Q-{tyY`8Yg1?dkK}gi-!ssm|h#o|Z8qqRDl+jC~iy*@2HDV^pXd`+{v@rVU z!bI=gV4|I!_j}*(oU_(hmKn?1&og`OeV6O{JyB1!RVlACUMC_VqEvhGSdWN^m=gRQ zbd?Oe;^UG%!5i5N4b{g)7k__p8j%S^M2t|i$BNIqGd8Dv%nWSLTXy@cX-wKFMX4`q z_NG!}-J;F79^DlF_0uO`N;@wmH8%gYR9^$XyIY0RZ7f%}iu27LuJ8F~WSjO;(AWBc z-o&+SYrz#i-M05nLTaLljcUzWwomYNrS!|P%d-9MNhgc4%kuqFX?p7SLaFiSu8v7D zY9)veEhLoMEFt2MvRV*j{fI_qi$(LsCrwuy7vFD$iEigIu`^$-4k?WUG5SjEnc zD-98!o(|nCtdxBB?p?8Eb5qwMXE!B-@Y|J@6|&y_lBNLCuI$CUk*zf5p>0rI2tN!5SPilzP{PFHQUb~qf>j{I|4&*3q zOjU2kR^^r-HFFwosN3{qNZrr>+1tBF6?9CZkIc-ZMY>%~JJWq*Hv6sB>%PexK&ddASV-6ta}OB>e|aE*$JTSn$2c5V8XNrTVa z!a|#Szgz^uF+&>G4Y_DMnrR&yqqn!W4-O8N^xR0{5l~RbmU3VEJwG2(UoVrJoBIWU zNE;#{Au*|RplOYu>g?@}VUhDKb6?ih_f=6L11oB3YX^&rgv4EDoK}0Cp5>{=aY;xd zKZ^K=c<}_<8cx}h@*uCfLc(%Lfv}LkEa#huJKOSdNb7h@O!9UzE-X2jzTRtFTx%Wg z3j(t?QiSkPINc#pR8#~v-u)dywYOP~GkhLsZcCgY=U3G+?<>=rfVS`7J3rY*zi59y zrC$1bX{n>a7E=>=R#(t!X=QbnoL=zd%0O;SU0sFiyh;TcP1tk^ijIi5k|_pL=}+;{N!eCMeuu-6a}3SSiT8XXm5SXfxGSuL#=c4e%Tm1wyy z(`Kf@2c%AxMzY}UQo2ipbt@TG`tJdq681Ny>yxADg@(}fI&5rg!i+Hp+tCtp43kTP zBFH|l$a-&~>zOPghlt3hQPlH<#Kgzo(9q4y4e*#4N-R=mIfP1{$ZEO{cA1oPc5~Bw z-Iqz?^%oahQ?Ut}EdORyR1}OQ`j2s=uUKj0A){|&*3X|$RALyFwY9b3i);FZ&YdG> zWFhZB>ZMiV0@JIUr_wSlShM~2u7T|?g22jx_-kfJ#y2#`#6Eyo;QBmh}9X z2VGqn-$oXD`(^dj^YinhNzJ0&ot?WJ9HFaNr2f;V58u4mabDD)D*q~^pwP^V9f?5} z=$MGzF>*iKX{9PQ{r3I{7j#iI#Mf}LRS(J#^Z?BFkSl~ejL_uF8LkpgIDV&Y9FXXhfh2p42SxYh2GT4(H?sMy%0A7SMFr@Ng9g0;1^ zKYqlBS=u9Vwl!iOoQj^Yab#Q^mAJV0!qU>`#KHsc-HXt&LPA22GhnYYNszwqh_vlY3CUqI-8_ zJU<*9c*x4i4nSi1GG#~xkUFeOz3E2wzG3f!0to~H2N#!!|M8Cc;;#l=y~nDOiOFqx zAqz;ahPt{)zT(K4<(Ra2y=S|X@SE8mVZ2ku*?auCx_=yN>gz>aW@Igb&S2{5>f_&_ z^ra1Z*VWY25|ff%2s7O0<^ACRncLjd^7fVl&3_S0pqq4bZpS;;py=-l3YMVxgMxy{ zs91VH)&A`2Qbb~DZrvKW`h4OT^p&UT2GU*YL$&Vq+F7z{U`r2CotL^@4pAoP@FJtq zPibl0!KCDc3$?!ZSBINZo%r=JlO}&DQ0tMAk-V4@1H(tYYXwN&v(~PkKZ$;yY&Y8z z_7-6X+&>Bm3M>H!x>I=8O7BgDAPFT)HmX&=JgN_P=5%p_&`r5T?xu7E!8IJ2qck5A7SiBqe4Rrr_l`|8#q`1P&+%}a@ zTAEP{dzGBL)k-)e4L!O+V7hT5Bs!WLOumE7slWFD4Hl~247(V!&jg{`Zy}+gW@i47 zoz1Em$6`BPW{o!;qlM)2;?hbOXp0u^Eh2Jvll(Q`A{^V=+I|jr4}KY@y|UoApmcTr z$-w^>4gW*Ja5!AO*P}O|pz*@Sh6&BGq|eByI%UP05@BbbD$nWL*wnE#K-o34ZRmLI zgVDx=mr_I&Bax^f_DZQPd4rau0(;_}+e6{s$s1g^Ub-xrMumS0++n<^USJyw z;{9HmC)Yf^OEm0amQ|LqG|fIdPi$|t?M(V`vU)5sMzXgHZ^A&?EB?>*9ARYQv=BEs zz>bz+l5a&a-8!Yw;=q;$8z5R?8D(LTp|nZ;Tx{&R(&!{S7IkQ!~^UNkKl(T zWDJ;_`J^hexFNLdnu#EH>czOEwN%}-(Ky4oLg25A5WThJqUiMdq~~$CnMXlkwv~}N zvqv>DrUK7DKO-z|(g1FQ`7sBHC z1L85pqPnaCTn^q>zI~r5cqKgGBJFdL5AuOoAZPky_ufmK&>@FLo5cdzzZASMxZdO=28TLw%9dAML78=L zE7!tY@6Mr5CQg!Xu8PluimmIGjOYzZmaR@n3`x>^MU}scm2#7BkhP{G9)6p`dl3ESEitWd zT1^r?x5F% zaVkE#YE5^IQRyoB-~FYdU%iA$vR1I@Fn99v%yoAS0F04d%g&1zXdZz?Vg-R1umrZXu5>{!D^;<_t=HUz_JlDi|Hs-)({u=s)Q^nShWy+&dXzx#UU1k?I$u~ zFt*1-C6)MO?#SxL0?-yy5{6SZ`aM0D9sDnjEaS0+QD?^2^qgE=;>H$Qx_`c}Gy6(p zM%ekx-Qm#r^{QY&eV$I-bJ4sv#&!qy^`_7B=W^ycLbJ`K9P^^Zl#NJ_LO;?$C$)jE z;WjdUD*Q+6>yPDEuars{H&u)4TmrtL=FL6e71~Ee;4w@RdozC9v+L{8XtXFW0L(I; zJ(d1}f%5K4J>NS!uXuTRfytq!rG-kweO8WUkoT8-{rdI6%3w&Qj91!_sEEi_O3HTN zP%IjK%YF8j$fl~c6}npT-TA_sCJo3kzIo6EaQccSXPXS=5b)bL%YcJHRmAE{qhFEV zR;_Bl$!2w7aj|BmoS)&u)Kt;g$x+eg&ulQ@U&VkX!0yq|(C~6_JYMyXh9@T@E&O+t zM}X|G6=u*R`1tu1ghxtfk z`qFI*vc;t(JJTkhnb%O&Ga~txP5vgt>ZM~vU%qgVel0HM*Z;FMUC+et5LvHM4ACj> znVOn9s4guPViI?tpI&sg zw$3NtTaJy5CAxX*R_@rktEXp4;@0-IOPAISfy7ha7q$}3A#`{7`9GAE34c&wzc@c? z_5o1@dZY!M5EByHF_iIbXkC%^QrYu9ldcoz={ghPyBK=^7jV1R^pjGBT&8rlzmq?Ck8ethX@Q zu9uCQ`%0#^>a%Ch*qz`GjvNlZ!hdAwMK8$wU$Vu_%#6sm-cvx%?~sFo<1!T$RaVfs z4?;WheMrco#=W?xsCxn={wW`elpIuqU4o!86B|?zBQ5 zQufz4eLuX|WJ~SbyG`%j+<@BJ;?UU=F*;$s1-XURUo*s@75_=C*B+s&P8 zM>8o&O*&hKL$bA6VYT`GQUr?4Iw{)IlA!4G{`73!AIbWC0|nLO>@x=mEZJTXj#YQe zwH68ZPQ<@Bi|T)Kmj6g5a-JqTE1hQ|gxj2>CF+eC(amkUIt!UXpI_5L_}fMm=S@u? z$XM1qG||NdT0cE3xO6Dgcwb1I7SE>Gs4(zq(^ZsULrjfbEfnwDb`y zAJ@}2S`zC(#^GT6QDfQggYi~p`8+U~Bu#O@ejpcl<96pB%KTO$%}`T)N2|N+ zs)(^g_Wd4q8y&{@!JM*kXT~GSG(GdjXg2U4ef>Y5#PjPSm;MKp`ggQqxbE(I%iFdm zt^Np*Dv11{k>pdGP$Q!@P*yRd#9nVPyc?t;DDFL@oUB23bx8V8WAe;zpXmDJ%anX* zuL^6>xmTK+essZ1D3eOdHOrS5Upj4AwV0KXVT>Z}a5|4l$M&baa3=MPUd6{BWh4$g zTWl*>rurndB%7K1WS;IdGW8|k$2}cbTKA!%u5*u}Mv943!y6$gPEP#536GYjgm{15 zoM*1BU~13A;T&vm@BBiJB>S3*7u&~Ha!w4t=*R-qWn6!qlB0X_mV@5m)--0W zJsM?B>3ZW|x$^&5;J<`4n_^z7?^3EguvS2HX;k`yqtAS(ugMD z+n9wK4`^p*W_r@ZFpvP?uZWnLnL)>TIrK$M_Hf(=J}TvZEWE$eYXkZ}f*_q4ivzu= z^7V8YFc2wAK|9~Cz`HXZ*pPvy{ef9(=u^6(4I$|#6z~=Qy)N#@%F4UI2pOpR7Q`MrchVReK%@uxO1y&evgZah9_HH=eM1?JR z(D{Bg&;9$qTi%fvel2&nPYZcH`}_C9$B!?kA#$;+y!n*Ok{Q{5-_nPz@ZR$Zq1aI!MtXV zp6;$LYv6(wmM`{dS^$!;>(A<48O%$S50D1NtE37LkW0WS&WF)kSb->NX33_qtHute z&?jCY1*l`GFH^(L&Mu#*C=qbBTOSz3-YcB%#(DerfGxiTbERK)p90Kol=XJ>(!<~m zf%nnTg#MuO5QHPRTb^DT!Z9=~Ykcv`S^*5g`3VCeLWRjB8eFR~> z!s`FlqSSt*(172p<|Bw@R=}YNaIZFo=JRuNDdNtI0RFrH--F+{>@9G~h9)KQwgG4O zG0klGOrfUZ;NQQkfM3U(`dN2$c8Xg6xD42Z_gobBcpa>WXA>miOFKKmsh2dp*+4-# z&orc3w}wA(TXZLtu&8NpRbc%ALIynef#VQ|wCBdp^Rp9|qT=28PAu@pAWgyL6h@^Mi$nPuBT0U% zL!5ot3jJl)t(y4pY8Te__I4sf%Si5{E9fd!2$k1j%)r_QCW%-Rw4Ez{&A_nO_gRWzslF}t`(2zxVdiwKagA|9r zzbX!_?#Wij23V!a1!u7-V$<9ImhBrh)yUpm^FX3Er#&_+JOLO_mV0BIpCD_lfblppTY3S~#^9Sv7k*Zd}WuNR>EFw1&>1Sto~PYs}E!2bW{B~U}+&XaAH7k`YH z?_h9E;x-)=dwY8f3W2f!I|8C>&?O2))5?lNM;vQEkZFV|+__;vs%~ycMGp-J4M$VNy - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
-
-
-
IRMitsubishiHeavy152Ac Member List
-
-
- -

This is the complete list of members for IRMitsubishiHeavy152Ac, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_IRMitsubishiHeavy152Acprivate
_irsendIRMitsubishiHeavy152Acprivate
begin(void)IRMitsubishiHeavy152Ac
calibrate(void)IRMitsubishiHeavy152Acinline
checksum(void)IRMitsubishiHeavy152Acprivate
checkZmsSig(const uint8_t *state)IRMitsubishiHeavy152Acstatic
convertFan(const stdAc::fanspeed_t speed)IRMitsubishiHeavy152Acstatic
convertMode(const stdAc::opmode_t mode)IRMitsubishiHeavy152Acstatic
convertSwingH(const stdAc::swingh_t position)IRMitsubishiHeavy152Acstatic
convertSwingV(const stdAc::swingv_t position)IRMitsubishiHeavy152Acstatic
get3D(void) constIRMitsubishiHeavy152Ac
getClean(void) constIRMitsubishiHeavy152Ac
getEcono(void) constIRMitsubishiHeavy152Ac
getFan(void) constIRMitsubishiHeavy152Ac
getFilter(void) constIRMitsubishiHeavy152Ac
getMode(void) constIRMitsubishiHeavy152Ac
getNight(void) constIRMitsubishiHeavy152Ac
getPower(void) constIRMitsubishiHeavy152Ac
getRaw(void)IRMitsubishiHeavy152Ac
getSilent(void) constIRMitsubishiHeavy152Ac
getSwingHorizontal(void) constIRMitsubishiHeavy152Ac
getSwingVertical(void) constIRMitsubishiHeavy152Ac
getTemp(void) constIRMitsubishiHeavy152Ac
getTurbo(void) constIRMitsubishiHeavy152Ac
IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishiHeavy152Acexplicit
off(void)IRMitsubishiHeavy152Ac
on(void)IRMitsubishiHeavy152Ac
send(const uint16_t repeat=kMitsubishiHeavy152MinRepeat)IRMitsubishiHeavy152Ac
set3D(const bool on)IRMitsubishiHeavy152Ac
setClean(const bool on)IRMitsubishiHeavy152Ac
setEcono(const bool on)IRMitsubishiHeavy152Ac
setFan(const uint8_t fan)IRMitsubishiHeavy152Ac
setFilter(const bool on)IRMitsubishiHeavy152Ac
setMode(const uint8_t mode)IRMitsubishiHeavy152Ac
setNight(const bool on)IRMitsubishiHeavy152Ac
setPower(const bool on)IRMitsubishiHeavy152Ac
setRaw(const uint8_t *data)IRMitsubishiHeavy152Ac
setSilent(const bool on)IRMitsubishiHeavy152Ac
setSwingHorizontal(const uint8_t pos)IRMitsubishiHeavy152Ac
setSwingVertical(const uint8_t pos)IRMitsubishiHeavy152Ac
setTemp(const uint8_t temp)IRMitsubishiHeavy152Ac
setTurbo(const bool on)IRMitsubishiHeavy152Ac
stateReset(void)IRMitsubishiHeavy152Ac
toCommon(void) constIRMitsubishiHeavy152Ac
toCommonFanSpeed(const uint8_t speed)IRMitsubishiHeavy152Acstatic
toCommonMode(const uint8_t mode)IRMitsubishiHeavy152Acstatic
toCommonSwingH(const uint8_t pos)IRMitsubishiHeavy152Acstatic
toCommonSwingV(const uint8_t pos)IRMitsubishiHeavy152Acstatic
toString(void) constIRMitsubishiHeavy152Ac
validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)IRMitsubishiHeavy152Acstatic
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html deleted file mode 100644 index 790028e25..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac.html +++ /dev/null @@ -1,1591 +0,0 @@ - - - - - - - -IRremoteESP8266: IRMitsubishiHeavy152Ac Class Reference - - - - - - - - - -
-
- - - - - - -
-
IRremoteESP8266 -
-
-
- - - - - - - - -
-
- - -
- -
- -
- -
- -

Class for handling detailed Mitsubishi Heavy 152-bit A/C messages. - More...

- -

#include <ir_MitsubishiHeavy.h>

-
-Collaboration diagram for IRMitsubishiHeavy152Ac:
-
-
Collaboration graph
- - - - - -
[legend]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 IRMitsubishiHeavy152Ac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
 Class constructor. More...
 
void stateReset (void)
 Reset the state of the remote to a known good state/sequence. More...
 
void send (const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
 Send the current internal state as an IR message. More...
 
int8_t calibrate (void)
 Run the calibration to calculate uSec timing offsets for this platform. More...
 
void begin (void)
 Set up hardware to be able to send a message. More...
 
void on (void)
 Set the requested power state of the A/C to on. More...
 
void off (void)
 Set the requested power state of the A/C to off. More...
 
void setPower (const bool on)
 Change the power setting. More...
 
bool getPower (void) const
 Get the value of the current power setting. More...
 
void setTemp (const uint8_t temp)
 Set the temperature. More...
 
uint8_t getTemp (void) const
 Get the current temperature setting. More...
 
void setFan (const uint8_t fan)
 Set the speed of the fan. More...
 
uint8_t getFan (void) const
 Get the current fan speed setting. More...
 
void setMode (const uint8_t mode)
 Set the operating mode of the A/C. More...
 
uint8_t getMode (void) const
 Get the operating mode setting of the A/C. More...
 
void setSwingVertical (const uint8_t pos)
 Set the Vertical Swing mode of the A/C. More...
 
uint8_t getSwingVertical (void) const
 Get the Vertical Swing mode of the A/C. More...
 
void setSwingHorizontal (const uint8_t pos)
 Set the Horizontal Swing mode of the A/C. More...
 
uint8_t getSwingHorizontal (void) const
 Get the Horizontal Swing mode of the A/C. More...
 
void setNight (const bool on)
 Set the Night (Sleep) mode of the A/C. More...
 
bool getNight (void) const
 Get the Night (Sleep) mode of the A/C. More...
 
void set3D (const bool on)
 Set the 3D mode of the A/C. More...
 
bool get3D (void) const
 Get the 3D mode of the A/C. More...
 
void setSilent (const bool on)
 Set the Silent (Quiet) mode of the A/C. More...
 
bool getSilent (void) const
 Get the Silent (Quiet) mode of the A/C. More...
 
void setFilter (const bool on)
 Set the Filter mode of the A/C. More...
 
bool getFilter (void) const
 Get the Filter mode of the A/C. More...
 
void setClean (const bool on)
 Set the Clean mode of the A/C. More...
 
bool getClean (void) const
 Get the Clean mode of the A/C. More...
 
void setTurbo (const bool on)
 Set the Turbo mode of the A/C. More...
 
bool getTurbo (void) const
 Get the Turbo mode of the A/C. More...
 
void setEcono (const bool on)
 Set the Economical mode of the A/C. More...
 
bool getEcono (void) const
 Get the Economical mode of the A/C. More...
 
uint8_t * getRaw (void)
 Get a PTR to the internal state/code for this protocol. More...
 
void setRaw (const uint8_t *data)
 Set the internal state from a valid code for this protocol. More...
 
stdAc::state_t toCommon (void) const
 Convert the current internal state into its stdAc::state_t equivalent. More...
 
String toString (void) const
 Convert the internal state into a human readable string. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Static Public Member Functions

static bool checkZmsSig (const uint8_t *state)
 Verify the given state has a ZM-S signature. More...
 
static bool validChecksum (const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)
 Verify the checksum is valid for a given state. More...
 
static uint8_t convertMode (const stdAc::opmode_t mode)
 Convert a stdAc::opmode_t enum into its native mode. More...
 
static uint8_t convertFan (const stdAc::fanspeed_t speed)
 Convert a stdAc::fanspeed_t enum into it's native speed. More...
 
static uint8_t convertSwingV (const stdAc::swingv_t position)
 Convert a stdAc::swingv_t enum into it's native setting. More...
 
static uint8_t convertSwingH (const stdAc::swingh_t position)
 Convert a stdAc::swingh_t enum into it's native setting. More...
 
static stdAc::opmode_t toCommonMode (const uint8_t mode)
 Convert a native mode into its stdAc equivalent. More...
 
static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
 Convert a native fan speed into its stdAc equivalent. More...
 
static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
 Convert a native vertical swing postion to it's common equivalent. More...
 
static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
 Convert a native horizontal swing postion to it's common equivalent. More...
 
- - - - -

-Private Member Functions

void checksum (void)
 Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does have inverted byte pairs. More...
 
- - - - - - -

-Private Attributes

IRsend _irsend
 Instance of the IR send class. More...
 
Mitsubishi152Protocol _
 
-

Detailed Description

-

Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.

-

Constructor & Destructor Documentation

- -

◆ IRMitsubishiHeavy152Ac()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac (const uint16_t pin,
const bool inverted = false,
const bool use_modulation = true 
)
-
-explicit
-
- -

Class constructor.

-
Parameters
- - - - -
[in]pinGPIO to be used when sending.
[in]invertedIs the output signal to be inverted?
[in]use_modulationIs frequency modulation to be used?
-
-
- -
-
-

Member Function Documentation

- -

◆ begin()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::begin (void )
-
- -

Set up hardware to be able to send a message.

- -
-
- -

◆ calibrate()

- -
-
- - - - - -
- - - - - - - - -
int8_t IRMitsubishiHeavy152Ac::calibrate (void )
-
-inline
-
- -

Run the calibration to calculate uSec timing offsets for this platform.

-
Returns
The uSec timing offset needed per modulation of the IR Led.
-
Note
This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
- -
-
- -

◆ checksum()

- -
-
- - - - - -
- - - - - - - - -
void IRMitsubishiHeavy152Ac::checksum (void )
-
-private
-
- -

Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does have inverted byte pairs.

- -
-
- -

◆ checkZmsSig()

- -
-
- - - - - -
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::checkZmsSig (const uint8_t * state)
-
-static
-
- -

Verify the given state has a ZM-S signature.

-
Parameters
- - -
[in]stateA ptr to a state to be checked.
-
-
-
Returns
true, the check passed. Otherwise, false.
- -
-
- -

◆ convertFan()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::convertFan (const stdAc::fanspeed_t speed)
-
-static
-
- -

Convert a stdAc::fanspeed_t enum into it's native speed.

-
Parameters
- - -
[in]speedThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertMode()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::convertMode (const stdAc::opmode_t mode)
-
-static
-
- -

Convert a stdAc::opmode_t enum into its native mode.

-
Parameters
- - -
[in]modeThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingH()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::convertSwingH (const stdAc::swingh_t position)
-
-static
-
- -

Convert a stdAc::swingh_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ convertSwingV()

- -
-
- - - - - -
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::convertSwingV (const stdAc::swingv_t position)
-
-static
-
- -

Convert a stdAc::swingv_t enum into it's native setting.

-
Parameters
- - -
[in]positionThe enum to be converted.
-
-
-
Returns
The native equivalent of the enum.
- -
-
- -

◆ get3D()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::get3D (void ) const
-
- -

Get the 3D mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getClean()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getClean (void ) const
-
- -

Get the Clean mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getEcono()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getEcono (void ) const
-
- -

Get the Economical mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getFan()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::getFan (void ) const
-
- -

Get the current fan speed setting.

-
Returns
The current fan speed/mode.
- -
-
- -

◆ getFilter()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getFilter (void ) const
-
- -

Get the Filter mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getMode()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::getMode (void ) const
-
- -

Get the operating mode setting of the A/C.

-
Returns
The current operating mode setting.
- -
-
- -

◆ getNight()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getNight (void ) const
-
- -

Get the Night (Sleep) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getPower()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getPower (void ) const
-
- -

Get the value of the current power setting.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getRaw()

- -
-
- - - - - - - - -
uint8_t * IRMitsubishiHeavy152Ac::getRaw (void )
-
- -

Get a PTR to the internal state/code for this protocol.

-
Returns
PTR to a code for this protocol based on the current internal state.
- -
-
- -

◆ getSilent()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getSilent (void ) const
-
- -

Get the Silent (Quiet) mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ getSwingHorizontal()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::getSwingHorizontal (void ) const
-
- -

Get the Horizontal Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getSwingVertical()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::getSwingVertical (void ) const
-
- -

Get the Vertical Swing mode of the A/C.

-
Returns
The native position/mode setting.
- -
-
- -

◆ getTemp()

- -
-
- - - - - - - - -
uint8_t IRMitsubishiHeavy152Ac::getTemp (void ) const
-
- -

Get the current temperature setting.

-
Returns
The current setting for temp. in degrees celsius.
- -
-
- -

◆ getTurbo()

- -
-
- - - - - - - - -
bool IRMitsubishiHeavy152Ac::getTurbo (void ) const
-
- -

Get the Turbo mode of the A/C.

-
Returns
true, the setting is on. false, the setting is off.
- -
-
- -

◆ off()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::off (void )
-
- -

Set the requested power state of the A/C to off.

- -
-
- -

◆ on()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::on (void )
-
- -

Set the requested power state of the A/C to on.

- -
-
- -

◆ send()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::send (const uint16_t repeat = kMitsubishiHeavy152MinRepeat)
-
- -

Send the current internal state as an IR message.

-
Parameters
- - -
[in]repeatNr. of times the message will be repeated.
-
-
- -
-
- -

◆ set3D()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::set3D (const bool on)
-
- -

Set the 3D mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setClean()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setClean (const bool on)
-
- -

Set the Clean mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setEcono()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setEcono (const bool on)
-
- -

Set the Economical mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setFan()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setFan (const uint8_t speed)
-
- -

Set the speed of the fan.

-
Parameters
- - -
[in]speedThe desired setting.
-
-
- -
-
- -

◆ setFilter()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setFilter (const bool on)
-
- -

Set the Filter mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setMode()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setMode (const uint8_t mode)
-
- -

Set the operating mode of the A/C.

-
Parameters
- - -
[in]modeThe desired operating mode.
-
-
- -
-
- -

◆ setNight()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setNight (const bool on)
-
- -

Set the Night (Sleep) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setPower()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setPower (const bool on)
-
- -

Change the power setting.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setRaw()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setRaw (const uint8_t * data)
-
- -

Set the internal state from a valid code for this protocol.

-
Parameters
- - -
[in]dataA valid code for this protocol.
-
-
- -
-
- -

◆ setSilent()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setSilent (const bool on)
-
- -

Set the Silent (Quiet) mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ setSwingHorizontal()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setSwingHorizontal (const uint8_t pos)
-
- -

Set the Horizontal Swing mode of the A/C.

-
Parameters
- - -
[in]posThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setSwingVertical()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setSwingVertical (const uint8_t pos)
-
- -

Set the Vertical Swing mode of the A/C.

-
Parameters
- - -
[in]posThe position/mode to set the swing to.
-
-
- -
-
- -

◆ setTemp()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setTemp (const uint8_t temp)
-
- -

Set the temperature.

-
Parameters
- - -
[in]tempThe temperature in degrees celsius.
-
-
- -
-
- -

◆ setTurbo()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::setTurbo (const bool on)
-
- -

Set the Turbo mode of the A/C.

-
Parameters
- - -
[in]ontrue, the setting is on. false, the setting is off.
-
-
- -
-
- -

◆ stateReset()

- -
-
- - - - - - - - -
void IRMitsubishiHeavy152Ac::stateReset (void )
-
- -

Reset the state of the remote to a known good state/sequence.

- -
-
- -

◆ toCommon()

- -
-
- - - - - - - - -
stdAc::state_t IRMitsubishiHeavy152Ac::toCommon (void ) const
-
- -

Convert the current internal state into its stdAc::state_t equivalent.

-
Returns
The stdAc equivalent of the native settings.
- -
-
- -

◆ toCommonFanSpeed()

- -
-
- - - - - -
- - - - - - - - -
stdAc::fanspeed_t IRMitsubishiHeavy152Ac::toCommonFanSpeed (const uint8_t spd)
-
-static
-
- -

Convert a native fan speed into its stdAc equivalent.

-
Parameters
- - -
[in]spdThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonMode()

- -
-
- - - - - -
- - - - - - - - -
stdAc::opmode_t IRMitsubishiHeavy152Ac::toCommonMode (const uint8_t mode)
-
-static
-
- -

Convert a native mode into its stdAc equivalent.

-
Parameters
- - -
[in]modeThe native setting to be converted.
-
-
-
Returns
The stdAc equivalent of the native setting.
- -
-
- -

◆ toCommonSwingH()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingh_t IRMitsubishiHeavy152Ac::toCommonSwingH (const uint8_t pos)
-
-static
-
- -

Convert a native horizontal swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common horizontal swing position.
- -
-
- -

◆ toCommonSwingV()

- -
-
- - - - - -
- - - - - - - - -
stdAc::swingv_t IRMitsubishiHeavy152Ac::toCommonSwingV (const uint8_t pos)
-
-static
-
- -

Convert a native vertical swing postion to it's common equivalent.

-
Parameters
- - -
[in]posA native position to convert.
-
-
-
Returns
The common vertical swing position.
- -
-
- -

◆ toString()

- -
-
- - - - - - - - -
String IRMitsubishiHeavy152Ac::toString (void ) const
-
- -

Convert the internal state into a human readable string.

-
Returns
A string containing the settings in human-readable form.
- -
-
- -

◆ validChecksum()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool IRMitsubishiHeavy152Ac::validChecksum (const uint8_t * state,
const uint16_t length = kMitsubishiHeavy152StateLength 
)
-
-static
-
- -

Verify the checksum is valid for a given state.

-
Parameters
- - - -
[in]stateThe array to verify the checksum of.
[in]lengthThe length/size of the state array.
-
-
-
Returns
true, if the state has a valid checksum. Otherwise, false. Note: Technically it has no checksum, but does have inverted byte pairs.
- -
-
-

Member Data Documentation

- -

◆ _

- -
-
- - - - - -
- - - - -
Mitsubishi152Protocol IRMitsubishiHeavy152Ac::_
-
-private
-
- -
-
- -

◆ _irsend

- -
-
- - - - - -
- - - - -
IRsend IRMitsubishiHeavy152Ac::_irsend
-
-private
-
- -

Instance of the IR send class.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map deleted file mode 100644 index 4df84805c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 deleted file mode 100644 index b8c0035c3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bd69f2a5d78af4e87812002503332186 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy152Ac__coll__graph.png deleted file mode 100644 index 463210cc4ba48bbdff378e98d9937e482b804dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7981 zcmZXZbyQSQyT(UCkPs9EX=wxmB&Cs*k}l~k0ci>8?oMX_DTkD95JZq1y1TnO?`GZm z$9L~tE@R=DIp^&6-Ou|xza6UhQ3@M_7y|-K4EQEyX2cDQ*ip&Jg!q0F9MSVrHes_0cC@3gY zf1Xsvli+gCy*@i+Mf?pX1YbNcF|pArY`=tJ*K%9!QZE%v?s>VIT%|PX&{NvgC@Lma zwVn#MoTNaamru))XT2@bsZ&n(+8Cg`xxKZVs(c+46(t7~NWDJaw;rYtjJC0{*&NQt z34TgeFvdM{cE^L_uWK0)7)TlLii0EGb##rV&!?(XF-yPu$L*5f6A zhlhthaIr^u-(Sz8Q-*|w!oQ@xR>^x6FyKXgyIyV3iZtha|1B;qZlc9oI2eb*Y-FDZ~RabX( zb_P4H_gfA-I5?nVV*dI27uCbV0|^;fT25{x&%@2_t?QnS=eKWV6&2Yk`5$-YTlCXm zadDys2CrOPT%2~N63O^oUb=HwkH%1n{p;;r8G);ablpwWJ2T+a2a2{fd7M`sd)=ODczSyNs;F50OQ^px zQD(fFbe~fWDbZ{Cv}j+vxz^>2jP~-~mxo&mT<=sg9{2N;@;ci ziy-0%8j|u42nZO+k;YqEUJeCiJx}(JR$)w(OJVa>5WdCt=}YHXUS9UEsBp~PwwbPu z+?#EvuwRx8!2SNtekru`2P1fe&YR0)rNUA0MQmRW4A|M(yO}i-%NhAg6pV-Sbu@4RBl z%Fm5EA|7?m-;3mKLmr+LG)9@nxh>d?8*@$k_V)H_pT=Lc8&gqHiSt%4t*)=rx3#r7 z{gepwVvZ3NAU@+vMqzUnwEJUkEzg}PkY&en&n_9R;m z@6XgxL$cHhB|JSFA>yAtrEv>#bE`wBsHw$DcZoqwUxMFy+Z&j;&z?O~)0;ye6hKX- za&mJ+^W@VXmLC&r;4*Ur`7=B`>Z0Oe=cN6~ihRu$uO^pzkMljF<&May&F-i`T+w%Y zd|}9FPc8CgqY<+Wu7S9;om2t>I_6Lo-TDxO&~=gAr2=DN`SPc^>V&Y+&}VdXbgOHx z18@Ta1DC)(+j@FrvB>x;XH3;g_1>iM*s*}ZRUMNHmR6LPw^v#Y2NV|Msm)&=6M>JsPAy?lpD~2k-Wrp>Ft?DH#|JNcn8E{ z{_9e@myK>i1!_z{n14r-@Lb#+BdU)5{rn~xTv_u!Lfgj2lf7=QVw01D!^1IUa^re? z<)9>*qUe5pelSf~d^}!VT^%1!p(rZ6frNSt@p@MXR(kqiAWI9|+lBFW z8(wzv&4LmV5;OJAviz(stQM#N)FI$okn&B_`*oUedK zN-FpMeJfs%gR5)j^mO{bfFjtjig49{;NbB#^)Vp|3W@++AS~J4+m$xcNtlEzimIw8 zikoFVap~Vkcx+d|ex;$KWA`}QVRtLhu89Kc9Seo_m7De`7LKBzp(ShWNt=#VE-V=I zL;0oj^vH$pZ#cl6%?}n@C#I&5*v$J$A5>%UPq5qBq(+Sq{_jx$en{h(Mk`eJTg8w_ol6LaUTp z4g}<1S6A!oEcEwpk&Y-b>wofv8fJZIe_?_izbY$pG)nap1PEl4S!g*p@T8=qz&LWd zJss~^;WcbSS?f&|1FbkwZi?C9x}T?3sBW6%p{#W^^~(?$Oqa~eSD+kKeUn457BIrO zRr2Jrz%^i%hHLEfx$Wk#5^k0%Ee5H86a@wc2fNJD$)^dZ>B>lmiyIgl`{(D=1Ci() z9E_Du=e8WCn7>!kS}!bZUb&XRoD9QpvMU zrLX?#G?Tc#fFx_AEeTE&ZI78rmL#gG#3{_J|MSx}xxd5RRyS*`T6g<7RV&c-Wy>{M zF?hYW%*Onw$WYm}_+$O0HVsRQux%UC1fRwTQKNg<@ALTOE@>td+OJqPl*p1~N~Qjf zeWVmI6Y?-PCH#IMwZccccF->)E04=}wdc{Xbwayo94<_sFUyeAGlZd9WG*kPNtQrW z3+B)w&5^V>bhJW@{?(uQY_#Z6?|IuDE!f6Bv!+*5TT2vZzRh4F)pZJQLnG#txEIXB zuvjz<{T93xDU@jSu?dH`dbihdbW~>Dkm1M60LZ9s!)FqgP+9HaXF+Zz{;Kjg72&*h ztX%x}>x`~;E5{dP+_}oWoxcb=;NMkC+$lIAeAqTxc};~7@Z4=W*z`$-m$ox%d+i$g zW%kN_%75ofrw4j&s;QAF+bJ{%qj8aD(6~56cXPrxLoye+|B*}3YEy}Kt=f%jFn!mF zl~ZbN++oY}ctYFPNpa^D@3%u0*7Jk_f`Nw`#X4;?sdGoAo(w)|XlO3uVaK2F!bOd# zE{l%SkDuqL`!5YlH7K(Z1JfPZXuD{r?0sI9CI_66SZ?6UnPph2+N41y zn^GpH(m}TXp*zB%;Djd8Dq2mJBgktm)Ep^2dHP<|vf#I~0f$^VXNpQ?s|A~sxMkk& z*%l(13gLc{TsRVkEUnAOwc4xhbW7*R&^o{VKiUS9GetBh!VcV4VJPHcCi4;XKU-0- zeawS6rBpPBKBzOksN68=T5v`ve$f}3nL)X%uqKO7R{F5BgF*_cY4eWcH%p>pkeBsq zHpNt#a;f2Rz|KA5{Fym8HT>8*IL>yJ3^^UIG7GP`Ui0mjRFbWXJ;%L!

=yxT=zG z(Cz;G@0pH(yJNnEk)EjW8mF<0NJ=ozKu##eucEqzScEyZ*}o1&?XXAzzVR zw8NX^%r;;7&LkT9H&@*6Gdu>$!_|t_Wv~9Q>gPGE#pBUo~%jd336l@37 zuDwMoug3=dQD23Cr^_7vmDJu>*ELImVunlW^tt6 z^?cezUt!HW-KxZAd)8N0a0v*4fC)J}J41Q=7&xJy z@$)lvj)$kGfBXBRK0^7*yzjki++}1ie0_ZrQeIUq1cPzb}0*Ad7u zF)

  • }+a`KqQd5LqngO@6WHV^`%bzWCq>UHDvFe8s@Te9gi_CoD`6DG6c~2XIfOz}x9GxIE;$ zj~PPpU%s%RqM|DFPS4Jg+1c4W1gC%hL~@m%k(29TYSVIYvReoQf+^>}a^1~TYG7xl z08C9^8kh0kuonPUfEbJX8>EtrnK};Og5JG*$L74H+7U?-92h8(coZEH@`|1w4ZI%k zF+}_>MRU$0_)ji>wo85#s*_cyDP239t+mGbv>2pPiUG5q^dZyr3?FgijR@JGnpYox z*G2ETStvozG;^DNX#5pPs|Gg1Z1KVCmd=0P#pGzIy_(&C)9B#|n-_P>tmgy1?awV3 ze(ciDx0`E(->NMiB5LiIBeWNZV_bxSmwQH>GA0OW#tY8oQi7Tlh?yn@++^HR19wOr z1J}sj9BQx5W!@jJ`4J!2A$=#b}DfF*(Hpr^alv2R|^TT#8(yjS*9 z8dnei4TI+z#6*Cg|7bzfACY zo17hP+eJtstp<#kZ^|bIqKjCPI-2werC*hDTFGam?pjVxh9x-ic9dX+Wqgj!1wAjnKTRoYdG-wqosMb-|z?SKwbP*3gfK>?BItF|KD4b0OZ@pYF?M+^T)z6 zPc8{RiaVIk5WaiUx~lP|jB?erCC~`3tIhnh0)=d~FWoRSG;Jde$w=vGw9)?k*489} zo5`o!Z>{7$jYThBI#2#o%8t+ttT*zg@|QF*p`oOtD99>bAwvk; zCom8dP`n6o!L)Hb4|#JaNKzce9auqFL_eUV%J7SA{d<{sI{AqT^Jtg5{0y%Gm9_Rz zyeChecFfPu$E2$pUUH?5FJG6AtaQb@0eA@FpiX3>E?J>^vC(=z6vB`w<8`r!20Z~V zH3cMYs2d0=hAaPKAt2|&-e^~UxjZsue)DE?x`q{xP7c6I8FMJWLdO7#;gXa0XTJBx zs+D*?lEoAWR3Dd+u+w$^TPNUenw1vMo;-QN*Hc?pcR1@hzu6le71hz#SIk|=sHUW; z`4S);=1-MB+f0LSC_d`wd_PkmX3L~``2d1;r)w%cPqO!C2qOyA3Z2FXMGtPz=Q#jg z`jMTDUHxW=VoPp-!PL<3Jy1)a=!r79@na3Hc3?`?I;>(qE-x={4*uXgkPh#cQJ)`lGM2`I6pfOGc9m{wgp30cHg-0}cS>Kuv)K2rMpsv)^=14u``{ z?*>;^SIfYS!L{;=inu+=tn01*Tj#Yly<0j13=9kl({?QqS&9R26?!Nq;3tZTF=uhE z_jk7d^DZqcC|bhqFFJ(}4h{^?b|%~Z{yp5x&-kHUsMX-|#&NBel8-M-uch7_5%Cgv8?ddM5xAg|nFUhf9BH=; zw=c4^tnBcUgtu?so@@;I19YHK7X^s6`9S7-z#M;BjWRkoIx^{;0Yu~kEReaLoE+9e zCG+y~uqcGS>o&M-=CJD2#sKS6Vbb-y+ICh3z@7^bp$m0{;YECSoWMD?f((6der~=y zRmH6N3qqe?j$8~TB(M7k1K_ygQc@hBCw}EKBHG(gR8&-oii+5Hc=7=mmrLW6E)@uR zN)`s-zq-2m!$wsv{sgSlU_PTY*hWr!Genq}m_gVi9RMrWe!F%FG)>+sl@e~bJxk{n z1dT>56~*SbCO1`W6P}p(0_Fi@YpYXHQ(S`hhY0;_5oi6y2H6!OjjVUsOqd3FmVj(ZFOu)1gXAN}uN%Qvv)PF45)Ry#enT z4}tZ0Py`%qm#Fm zLp1nd1%j{64;PRJ@)anqPB#5<{U#W%@p83uW?_z08Wr;V<5}lr5V=`yxQ?cQ_fa~GqA8cUH}*x>;+$7(ZMwX7Muc}7r2pmCIOb6QDl>Vr1J9e0y2I$ zX`YeT#Q}r^xbOJnWGQiR6e1#`6Cmxq4hoDtxTK_{2WMwyU2(KvSYu#dJP0@FmfT;z zV*LD&0&qbfGBz{o0G00sdgFYg$bf%wc?ovH)29?dMK);yR-oFSXX_Jz)@|S5>%9OU zemMBR$H)Hy+WX-l@j_T!37>1O($?v?zB$mhoym&e%*;%ybsqN<3!$qG>K{LT zJP79L)@XZYCx^$`XLgXG92}N1?r-Rml4$LO)8E-s$tE#BOw&s1@hA{MH*eCAaPjfm zfgAuI{1{AjX1zwu{8Xjxo}R*?ax7XfF#zg&YdyxiH`f$iSjgmkHJri5!I2GqD);?e z?B(%#JQNxk9E=8#>GIKP51-q`^>u}54*{Rkh6otwJqd#VEshmw`6nl9q~5OqENM1b zZaTF&mLqv7z^tc?dqK!P7y{sG{Y>LZG@D*ho5`QG<;e0}evy}8Z=uz5L~?HPd-wTC=w zyxwcLxVi%7ldHtZqR|r;l;o)ucXASdyE9XV2NV&M${e`ws+@jqg`9fC{5%B^9l%}H zmU%>S>t)F;H{qaH5EE)K5hC0Q|A7?#(|146%aMsv`rM{l8fmME0y0jp|HQ<_#pOpN z;&R+Gr)K}rN?WO#@HhbEN&O$lGX-fnqc(v?S~(Q&9>;J1>ikFBQ G`281`Z{)`S diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html deleted file mode 100644 index bcaf68076..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRMitsubishiHeavy88Ac Member List
    -
    -
    - -

    This is the complete list of members for IRMitsubishiHeavy88Ac, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRMitsubishiHeavy88Acprivate
    _irsendIRMitsubishiHeavy88Acprivate
    begin(void)IRMitsubishiHeavy88Ac
    calibrate(void)IRMitsubishiHeavy88Acinline
    checksum(void)IRMitsubishiHeavy88Acprivate
    checkZjsSig(const uint8_t *state)IRMitsubishiHeavy88Acstatic
    convertFan(const stdAc::fanspeed_t speed)IRMitsubishiHeavy88Acstatic
    convertMode(const stdAc::opmode_t mode)IRMitsubishiHeavy88Acstatic
    convertSwingH(const stdAc::swingh_t position)IRMitsubishiHeavy88Acstatic
    convertSwingV(const stdAc::swingv_t position)IRMitsubishiHeavy88Acstatic
    get3D(void) constIRMitsubishiHeavy88Ac
    getClean(void) constIRMitsubishiHeavy88Ac
    getEcono(void) constIRMitsubishiHeavy88Ac
    getFan(void) constIRMitsubishiHeavy88Ac
    getMode(void) constIRMitsubishiHeavy88Ac
    getPower(void) constIRMitsubishiHeavy88Ac
    getRaw(void)IRMitsubishiHeavy88Ac
    getSwingHorizontal(void) constIRMitsubishiHeavy88Ac
    getSwingVertical(void) constIRMitsubishiHeavy88Ac
    getTemp(void) constIRMitsubishiHeavy88Ac
    getTurbo(void) constIRMitsubishiHeavy88Ac
    IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRMitsubishiHeavy88Acexplicit
    off(void)IRMitsubishiHeavy88Ac
    on(void)IRMitsubishiHeavy88Ac
    send(const uint16_t repeat=kMitsubishiHeavy88MinRepeat)IRMitsubishiHeavy88Ac
    set3D(const bool on)IRMitsubishiHeavy88Ac
    setClean(const bool on)IRMitsubishiHeavy88Ac
    setEcono(const bool on)IRMitsubishiHeavy88Ac
    setFan(const uint8_t fan)IRMitsubishiHeavy88Ac
    setMode(const uint8_t mode)IRMitsubishiHeavy88Ac
    setPower(const bool on)IRMitsubishiHeavy88Ac
    setRaw(const uint8_t *data)IRMitsubishiHeavy88Ac
    setSwingHorizontal(const uint8_t pos)IRMitsubishiHeavy88Ac
    setSwingVertical(const uint8_t pos)IRMitsubishiHeavy88Ac
    setTemp(const uint8_t temp)IRMitsubishiHeavy88Ac
    setTurbo(const bool on)IRMitsubishiHeavy88Ac
    stateReset(void)IRMitsubishiHeavy88Ac
    toCommon(void) constIRMitsubishiHeavy88Ac
    toCommonFanSpeed(const uint8_t speed)IRMitsubishiHeavy88Acstatic
    toCommonSwingH(const uint8_t pos)IRMitsubishiHeavy88Acstatic
    toCommonSwingV(const uint8_t pos)IRMitsubishiHeavy88Acstatic
    toString(void) constIRMitsubishiHeavy88Ac
    validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)IRMitsubishiHeavy88Acstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html deleted file mode 100644 index d120589ae..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac.html +++ /dev/null @@ -1,1394 +0,0 @@ - - - - - - - -IRremoteESP8266: IRMitsubishiHeavy88Ac Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Mitsubishi Heavy 88-bit A/C messages. - More...

    - -

    #include <ir_MitsubishiHeavy.h>

    -
    -Collaboration diagram for IRMitsubishiHeavy88Ac:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRMitsubishiHeavy88Ac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t fan)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSwingVertical (const uint8_t pos)
     Set the Vertical Swing mode of the A/C. More...
     
    uint8_t getSwingVertical (void) const
     Get the Vertical Swing mode of the A/C. More...
     
    void setSwingHorizontal (const uint8_t pos)
     Set the Horizontal Swing mode of the A/C. More...
     
    uint8_t getSwingHorizontal (void) const
     Get the Horizontal Swing mode of the A/C. More...
     
    void setTurbo (const bool on)
     Set the Turbo mode of the A/C. More...
     
    bool getTurbo (void) const
     Get the Turbo mode of the A/C. More...
     
    void setEcono (const bool on)
     Set the Economical mode of the A/C. More...
     
    bool getEcono (void) const
     Get the Economical mode of the A/C. More...
     
    void set3D (const bool on)
     Set the 3D mode of the A/C. More...
     
    bool get3D (void) const
     Get the 3D mode of the A/C. More...
     
    void setClean (const bool on)
     Set the Clean mode of the A/C. More...
     
    bool getClean (void) const
     Get the Clean mode of the A/C. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t *data)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool checkZjsSig (const uint8_t *state)
     Verify the given state has a ZJ-S signature. More...
     
    static bool validChecksum (const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static uint8_t convertSwingV (const stdAc::swingv_t position)
     Convert a stdAc::swingv_t enum into it's native setting. More...
     
    static uint8_t convertSwingH (const stdAc::swingh_t position)
     Convert a stdAc::swingh_t enum into it's native setting. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
     Convert a native vertical swing postion to it's common equivalent. More...
     
    static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
     Convert a native horizontal swing postion to it's common equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does have inverted byte pairs. More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    Mitsubishi88Protocol _
     
    -

    Detailed Description

    -

    Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRMitsubishiHeavy88Ac()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRMitsubishiHeavy88Ac::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::checksum (void )
    -
    -private
    -
    - -

    Calculate the checksum for the current internal state of the remote. Note: Technically it has no checksum, but does have inverted byte pairs.

    - -
    -
    - -

    ◆ checkZjsSig()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::checkZjsSig (const uint8_t * state)
    -
    -static
    -
    - -

    Verify the given state has a ZJ-S signature.

    -
    Parameters
    - - -
    [in]stateA ptr to a state to be checked.
    -
    -
    -
    Returns
    true, the check passed. Otherwise, false.
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertSwingH()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::convertSwingH (const stdAc::swingh_t position)
    -
    -static
    -
    - -

    Convert a stdAc::swingh_t enum into it's native setting.

    -
    Parameters
    - - -
    [in]positionThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::convertSwingV (const stdAc::swingv_t position)
    -
    -static
    -
    - -

    Convert a stdAc::swingv_t enum into it's native setting.

    -
    Parameters
    - - -
    [in]positionThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ get3D()

    - -
    -
    - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::get3D (void ) const
    -
    - -

    Get the 3D mode of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getClean()

    - -
    -
    - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::getClean (void ) const
    -
    - -

    Get the Clean mode of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getEcono()

    - -
    -
    - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::getEcono (void ) const
    -
    - -

    Get the Economical mode of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRMitsubishiHeavy88Ac::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSwingHorizontal()

    - -
    -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::getSwingHorizontal (void ) const
    -
    - -

    Get the Horizontal Swing mode of the A/C.

    -
    Returns
    The native position/mode setting.
    - -
    -
    - -

    ◆ getSwingVertical()

    - -
    -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::getSwingVertical (void ) const
    -
    - -

    Get the Vertical Swing mode of the A/C.

    -
    Returns
    The native position/mode setting.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRMitsubishiHeavy88Ac::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::getTurbo (void ) const
    -
    - -

    Get the Turbo mode of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::send (const uint16_t repeat = kMitsubishiHeavy88MinRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ set3D()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::set3D (const bool on)
    -
    - -

    Set the 3D mode of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setClean()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setClean (const bool on)
    -
    - -

    Set the Clean mode of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setEcono()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setEcono (const bool on)
    -
    - -

    Set the Economical mode of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setRaw (const uint8_t * data)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]dataA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSwingHorizontal()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setSwingHorizontal (const uint8_t pos)
    -
    - -

    Set the Horizontal Swing mode of the A/C.

    -
    Parameters
    - - -
    [in]posThe position/mode to set the swing to.
    -
    -
    - -
    -
    - -

    ◆ setSwingVertical()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setSwingVertical (const uint8_t pos)
    -
    - -

    Set the Vertical Swing mode of the A/C.

    -
    Parameters
    - - -
    [in]posThe position/mode to set the swing to.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setTemp (const uint8_t temp)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]tempThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::setTurbo (const bool on)
    -
    - -

    Set the Turbo mode of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRMitsubishiHeavy88Ac::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRMitsubishiHeavy88Ac::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRMitsubishiHeavy88Ac::toCommonFanSpeed (const uint8_t speed)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonSwingH()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingh_t IRMitsubishiHeavy88Ac::toCommonSwingH (const uint8_t pos)
    -
    -static
    -
    - -

    Convert a native horizontal swing postion to it's common equivalent.

    -
    Parameters
    - - -
    [in]posA native position to convert.
    -
    -
    -
    Returns
    The common horizontal swing position.
    - -
    -
    - -

    ◆ toCommonSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingv_t IRMitsubishiHeavy88Ac::toCommonSwingV (const uint8_t pos)
    -
    -static
    -
    - -

    Convert a native vertical swing postion to it's common equivalent.

    -
    Parameters
    - - -
    [in]posA native position to convert.
    -
    -
    -
    Returns
    The common vertical swing position.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRMitsubishiHeavy88Ac::toString (void ) const
    -
    - -

    Convert the internal state into a human readable string.

    -
    Returns
    A string containing the settings in human-readable form.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRMitsubishiHeavy88Ac::validChecksum (const uint8_t * state,
    const uint16_t length = kMitsubishiHeavy88StateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the state array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false. Note: Technically it has no checksum, but does have inverted byte pairs.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    Mitsubishi88Protocol IRMitsubishiHeavy88Ac::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRMitsubishiHeavy88Ac::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map deleted file mode 100644 index 13d9fe238..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 deleted file mode 100644 index 6c93fe40e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -da8bfb93cb513366d146f01b4c18efdb \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRMitsubishiHeavy88Ac__coll__graph.png deleted file mode 100644 index 3ea553f85df5fc4f7e4cbe5a114674cca2624f45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7602 zcmZXZ2Q-|~xAqaeh9IIu)ac#l1PKugg6Jg}qekyFgG7Q5qW6g2TXYgc@4ffldmrxc z-SxHqUDh(=oq1oU?EUO#|IQaxs5}8KB`yjI3W37wmv2!}P%*%JKWt3!drf;B0bVdo z6y;x{+};1AHDpJjpwPe-UP^1YC+*I9=xf4m{~Y$$_;;{bJqs??aP4ra)UIIaX6c2E4arDBVIQw+myp4DI*m5^E&EF#StC6}H`T)QGq6|#F8 z#jI=hB8G;B z-dCI1oLt3cCI<_DZDy)V6^?BlOQ%Z=w=0GxS&`OSV*qj9|oZ za&i(E7r)pk?@#!d<67)FKZjftcH5(lWPERFnah8-F_@v0Drq1lVf+V0@^U3=Eyt>G zRS0G{IXNkQcXK>3HDzLJ+Z#;GAnb8u7BIXou2NV~Kq2bPf<;Jep+S@Ab+;8TS48^r z=g$aO{LGBLq3v3V1 zEmF2w}CiS7LiM`S1t{!OwOkUq`mq zIIUM4j~5w)APtN0S+O9|oOmwe+ec)ZptdTwX1 zjY3LF`jCt)2&_c1n438mFX`jQLKX%-174~utgMU3^LhD5MofGPls}n@v2jv=Br)NE32!AGfw@ymP3q3$H$kO*{L8X87(a> zl~Tl?px*2JgKh2G+#j4A94qDU{;>{rPEKXa6%dKL;+49bdU|@+vF9fzKeUPs z3zeHZjz7BXUmiW58y7vti!e1Yp{%b@ zO--!_`+5J>y^-7~@8vdv$(9z`xjMJvdh2nn$>wGm_@#6JW+$!hMY?M(81WHUwTfXE z8a$mCn7q8a2pyfYn1PQs2mq#T$I;T@Z{NmrvQ<(gkFaRHRWoj`y7IQG$9{7L1qB`D zsAW{F$CsCv-*j^~2?!(mjv-P~Mk!)$MK&-P6WrX~YP;O~(sB1lt4RMlst6O)E3y5V z8YjMIMoqpAV@SPuQII*{uSV~hwp)wW9&Y*!~0MoA|uiKGcq#H=pw#h==89w-Z18gXMkChNmn^n9R+tDu z_T?8>R0xEIg*iAl4EAkLmS;l>A*Y2-r(2q#p`lh1^0dF|v(nC|vA_mHKFoAPvuj;! zWQ1272LuF6R@u?Ehtsx?kH;>yd{%$^7ExZ#j~j#l0%xW(c8NzwSX5R2RKinLU%%kE zaPjDu0ZYCshCRj;gXu_>x1ZI77Lk4lNae8QE{A8(i>JWp~e zZ)&@0Y3~(B%r#WRX>DO)!9O#T3FLN0eSH#x{I`)r!@{fX{G6O%kUUG<+xhB!$=9cg zpJ}to$|9}Di!9ffoRGVa#A3Kl&-F+;q|_-H}6kTmXpH-S>BT@77Id!nwr`_;kv5PB`GNh z8yDAPs=`vg+WzCsjkn~@fvoHP+-%y>N%|xucW*rZ=g3GBi0xD>s9zqZCRJuY+GH|*)@p%8bsZ)jiIt(s>R5_$}h6oEjvuf@ZyRz!dtl5-m>o$t+F zf~q@F4k!Bk`?p|BesRGy&{(byGu6_ml0F+_g;YRenYp;2USAB1t^$I;eEB;xL;~t1 z(9Q6S3?!KI~5#VpJxisaaqoGRRV%Ni0Z zZe0i6E~lztRA_B&4K5m%DF=DWHMhorjo|uUhJp@(c!n+dQuQIa^k-~b#Iucu|JU{` zrxd$~hlSbpdCmwae`DR!Yl{=tEvVwVH!q3X5GJ2+&OypfCb=I*6@My>KBngnF^_um z&E}tLDBh{RmOHWve<{-JQ)y#rl3(SRkP-Xq;u@(U6ZzSNhWoCYLE)^FfZyF`>dJ`I z#Ja-5Mwzh5B@A!ckr$%HV`fO?`B@yDVEZv+#S0HDJ0}Yrws*a1LLRPZpAohiU*O^?gBB#=r(=A*PNGF`v3m3mKv9U3S z@&XV(QtYCx5IHonCysrw56^cnzBR>u%lbKLh*HV^Bs*jRvMDb0q35MKYew!5X++9L z0|J9e*L+PZ3zL=o+`L)>&R|7_^?-~}W9;C@{RnrnRdhq&1>{?-5TE?gm>$8t_cl%Wj-G()~ zW*RjWn!TCkUm0bdn8WzBR8?cUlWutest54QkQyh~L?)Fy5Ul~z9GCJjm4VT#0JO?^ znT-fkoFc}Vl_e-|ikTC8AJ_BC?L>=_1kv!QX6X>k-KuaU0VVU%9w-_&Sim6AA{)VB|=9zGxWN;uUDHt9Y_NUN;TGqFJ3xN zOv#3Mb0BAf0~IG!SeBPp$Ye)sPyERwjl$0{Idd8@s^x>$fQDi<3sKwWEF+G1bP8!a z-zg41;U&-Z;%o3rDTR$dmaH|ubb2>~xwe!I zF3D>-f5t&SS2yY_og<`Cv7?xZxUmfmA(!&1YYJtP;GVXq^MK)OF1y*xO>4Bi;($2< z?GM9ptv^1qxm>7M({rR@Svx!kFOt~%aq`dM7jhQ9a3OfQQb!B8_${CS=dxZ%;*&P2 z@#+LBSP{&kbQD_-mg=zGP+KD>8Plr;;hZfq{z`~>kJL=3sCrN5sh~U+d4l}ap$zoq zTJ%9i?eT$~l!$8yPqUq}3TB_fuknk|`1-Qxy7_xdI#kM;`r8lMyS+XfA*r;UAb(R8 zWxQm_TGRNU))(t{L)QNH-9?doq018;hLCj}PT6g6PokHgi6>(TUW4q@r9bm;I~9o~ zSQ8at@t*=Q-f-+FQQZ3Vo$Eu<17k9JF@kFG4Gwr_#W`6z3v>M5rz`w;oXfjy(-Y@5 z!wa$2%GS#tUHd?bE^YDSx7+nIY?lzM(Z>^5;)_&=J|Yy0*2oeM(Dv_Eufp3>d?^J zOVGd`fu5wY`*UDm2P!IR8L+s=$H%MVhF;2hXSYjKZzSh5h@ABudXTxQo~kym zimtl38eO0rJDMzqTNfn8#4tZ_^z^KCP0=lkDJ(3k?Dq2X?8?_F2KB7oLmksB`VBBI z&%6DTqN6jFRg{!$BGaB#D3mUp{e1z7dc|E`ZEcy$_B(P8ZQv~*#6fH+;eAP{&zP7n zP(Z0=RFH{e1Qw2kg=JxDG=EBbXJ@D4E-_xS;n(kq3exB|zz7FHYk|R(6jHWW)kT&# z6pqd=(*pDQh?+W7E@SbyUkZM4un4-Zg`J&Hne=C3Vu?it`+kgT|Ly6NTwQ-dcvzyl zm?tsQZAr9nIbX=gpcOaWih|ZhLqj9&T|O%(=c|mtg_V_7(5l9Zy0FD^8T|b9EAY{C z=tB|`8DMA{JirL}Z60AvG8k$*rJ*J9x^eh!94054=KyUy7 z?v#^7M@z^){KB#_J#O_C*Z8{dk_gZ;YJ2w6zQEx=-#9=wFvmf~S5v<{Mksy-MgoSZO?w6qQ|M zVY+L7sB$|fWyflUC${7Mu)U>=;xNTrC5o?b`{ulOHsht`axk4?y#b1OPBZhXbAh+J2SnDk^JTZQj( zD>LNBoJ|dF^@(YaH&rr%PYr*LeuG3>n&=8z@h>L;5qSAVAewXk@w^z8-KN;!*uW^U zE(N$dEg+g0Xv%V1CJD6OZFXREP)#R`?tP<0Da%YEHm>JTX7-boyZ-p{R9I!sAsG=+ zp+y&7_Yix#pRvE5)?B+WZ|f6d#bymn_J;QD(GcjSZWRsq?$?I=)eH0@F(UJXxEm7H zikm>2(U?~MeWJ>0U|FvEtG8FqUNLYR+(^`$##n{Gn|9h1ntdAdebI0^#;Fngz7Vk+ zS&%K=yS+u|PuU;OuxtN6=a)`k^`(#{XbkYK2VJ7-FOTLDl@s8rwgg7X4IQhq%8A7T zzQJk6FY*|IsPz-x^l>vO$G}e)IM0w^(VGJ-%TgHuX-T9{JbM+xGP&k|^$90txR~yV z(4Oj#)Y2^HCK~dnBGa8A=Z{$p_p}J~JUq^V_=THOtTPf7wF5llZDYdmr;9R+rE=@A zJf7^>QIx(lS{p<{r4%nOuTp|Q=fEgWMK$y8^+6kz9gpKmM^?|Ynmr@1!1&0SIPyLv<;=4!S-*D!UtJytl( z3Yvs?(84V2?-%zg*TFB9HZXn zFTufSfFBUNDgF)XCYQXuF#Va4@kGqEfDV#5YoVrvo1UHyK*iyxmJu-pMMqaOyMltk zpiWzFZ&-2T)f>2>x3@U3{=GVy=^y8O&JD`S$}al-Ze{iLsU^J5R=E8x@hHQxKr>v% zaeO*%#Q$MNcxic=pptc0E(8~M6igE=jC3U9k2jgnsR%mRj{g4jaU(yBw2F!!c1_5b z!{zqzj`cppJmUc;MYgp+#Z*! zu`Wm59UXr_L*CP)1f~`bu}y&1zR5Hh$x)l)E7GrN2IvFmWy{P=5@?qa>g&Zpr!|=7 z?7!R|ZVH3_tM@qW=;_(-6F5!c}+3JTzCHT_lJ|Q zzZ;mq%(iPdCEwiKyxBIoqlZAqL3sq|@@MaPVbvTxE9;lm)|W9{23_FR%e}gN6bcDX z0RU;7CgN}&F_!=gmTaqEYJw5VZFG+k5m2J+C;+q*fC z{=nz@3^rDva~|CeO6B3vQ8U=0g9CdTTU!zDi-QNzf(}bBJTa&s*U=i}V+=ZxHL z4XW*>6H}t1TGC}dYnK?K5)u-|B_`gl?9lMAwf8g|DehB`72*_+wI{w8i&!WH07^q_ z;?6|EIJ$S{n^J)wqZ*r=w@s9qR>qzH=CLzf6%LG;Z6kO60UB^+Kw-Z8`SXI1R64O^ODifE0T2KO0wZo4 zfnFAB#qLA|1WbHwKQN0u1T7 zK}tZt1H~AQ_W*~ktgkQc?LjRpSU^z+D>OR{92t>DOjuahnVqxg>P=-XSdzR( zPDGxfPYy1`t-GhE6$k?WCn*54CjrW}%XChAdw{j;2z*|Fb}2&Y?y^5g!Yc;&P~b@` zHy<%88MlQ#c_}C7xHG{EypywJL~+9zgHO|P>Z zI$(=x z0ZU+h;{>hW1&Eo>(&(qFX=`m`mRnoFO>xPLbt!LXScI z9s)$Vu(_!NudS*Q0@GcLQjz>Sd3ioq08JMC2N>+Z`FZ=?+|w|*mecKVP$ovYeQoS? zM|NA1IXF3S@bFCU73$p>bvD2W+|w3=r_8j;^ky03ykp?{J{+z~iO^2MNd%;BD?(x!G16T1Glo#&CE$ z;NjYpR%C3^U(3q)e37SGKpbRVy~2ROU>#+lK|vV6_$NvErBqi7CyO&GGy`1$B+}_% zL3+2aC7D?%?hjZ+AfiUjzH9(OKRP=*+nK3}0*3$&*Jrk_I};yu3)^OA8|F@cT0Yo7 zM@Iq2G5}S+$s`dI6Z?e!q=ejz8Vqc#4XO_tIx?&jToI{b3tbTzovL<}M}R_wm9G^n-(gqOrZB z2tZt`9T9dR#FfDZ!g0si3c++0dLKfKIl zlCLd{s=d}_n?lmtJxm;Y3ScTeP>Ykj**du^brp#qnRGCa{I;r7P*hn#%kb~95hEjG zAoBYBxT*=MT&Hia2~-iEQXogp0|>*(_IS8KohxbyVDr~s*fm0j(TIVmm$Sc8r zd)BcDCqB48x1FywKxqewTU>vH3);F*MSTyzbBOoVbLiWA9#YE3z+CrczTAtN))SfS zVR~8t(4&HYjERW>^HII_SF@OHRU@T@-Q6NT6(I&%TXzHghh_ag=aTrC4A@P?VX^*M z)c9btvvSKw&;x+8$^mYOUSKjBusvIZ#edSi(2v!gu_Wl}4Z>G - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRNeoclimaAc Member List
    -
    -
    - -

    This is the complete list of members for IRNeoclimaAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRNeoclimaAcprivate
    _irsendIRNeoclimaAcprivate
    begin(void)IRNeoclimaAc
    calcChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcstatic
    calibrate(void)IRNeoclimaAcinline
    checksum(const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRNeoclimaAcstatic
    convertMode(const stdAc::opmode_t mode)IRNeoclimaAcstatic
    get8CHeat(void) constIRNeoclimaAc
    getButton(void) constIRNeoclimaAc
    getEcono(void) constIRNeoclimaAc
    getEye(void) constIRNeoclimaAc
    getFan(void) constIRNeoclimaAc
    getFollow(void) constIRNeoclimaAc
    getFresh(void) constIRNeoclimaAc
    getHold(void) constIRNeoclimaAc
    getIon(void) constIRNeoclimaAc
    getLight(void) constIRNeoclimaAc
    getMode(void) constIRNeoclimaAc
    getPower(void) constIRNeoclimaAc
    getRaw(void)IRNeoclimaAc
    getSleep(void) constIRNeoclimaAc
    getSwingH(void) constIRNeoclimaAc
    getSwingV(void) constIRNeoclimaAc
    getTemp(void) constIRNeoclimaAc
    getTempUnits(void) constIRNeoclimaAc
    getTurbo(void) constIRNeoclimaAc
    IRNeoclimaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRNeoclimaAcexplicit
    off(void)IRNeoclimaAc
    on(void)IRNeoclimaAc
    send(const uint16_t repeat=kNeoclimaMinRepeat)IRNeoclimaAc
    set8CHeat(const bool on)IRNeoclimaAc
    setButton(const uint8_t button)IRNeoclimaAc
    setEcono(const bool on)IRNeoclimaAc
    setEye(const bool on)IRNeoclimaAc
    setFan(const uint8_t speed)IRNeoclimaAc
    setFresh(const bool on)IRNeoclimaAc
    setHold(const bool on)IRNeoclimaAc
    setIon(const bool on)IRNeoclimaAc
    setLight(const bool on)IRNeoclimaAc
    setMode(const uint8_t mode)IRNeoclimaAc
    setPower(const bool on)IRNeoclimaAc
    setRaw(const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAc
    setSleep(const bool on)IRNeoclimaAc
    setSwingH(const bool on)IRNeoclimaAc
    setSwingV(const bool on)IRNeoclimaAc
    setTemp(const uint8_t temp, const bool celsius=true)IRNeoclimaAc
    setTurbo(const bool on)IRNeoclimaAc
    stateReset(void)IRNeoclimaAc
    toCommon(void) constIRNeoclimaAc
    toCommonFanSpeed(const uint8_t speed)IRNeoclimaAcstatic
    toCommonMode(const uint8_t mode)IRNeoclimaAcstatic
    toString(void) constIRNeoclimaAc
    validChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)IRNeoclimaAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc.html deleted file mode 100644 index 3fb9dc099..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc.html +++ /dev/null @@ -1,1687 +0,0 @@ - - - - - - - -IRremoteESP8266: IRNeoclimaAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Neoclima A/C messages. - More...

    - -

    #include <ir_Neoclima.h>

    -
    -Collaboration diagram for IRNeoclimaAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRNeoclimaAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kNeoclimaMinRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void setButton (const uint8_t button)
     Set the Button/Command pressed setting of the A/C. More...
     
    uint8_t getButton (void) const
     Get the Button/Command setting of the A/C. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setTemp (const uint8_t temp, const bool celsius=true)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setSwingV (const bool on)
     Set the vertical swing setting of the A/C. More...
     
    bool getSwingV (void) const
     Get the vertical swing setting of the A/C. More...
     
    void setSwingH (const bool on)
     Set the horizontal swing setting of the A/C. More...
     
    bool getSwingH (void) const
     Get the horizontal swing (Air Flow) setting of the A/C. More...
     
    void setSleep (const bool on)
     Set the Sleep setting of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep setting of the A/C. More...
     
    void setTurbo (const bool on)
     Set the Turbo setting of the A/C. More...
     
    bool getTurbo (void) const
     Get the Turbo setting of the A/C. More...
     
    void setEcono (const bool on)
     Set the Economy (Energy Saver) setting of the A/C. More...
     
    bool getEcono (void) const
     Get the Economy (Energy Saver) setting of the A/C. More...
     
    void setFresh (const bool on)
     Set the Fresh (air) setting of the A/C. More...
     
    bool getFresh (void) const
     Get the Fresh (air) setting of the A/C. More...
     
    void setHold (const bool on)
     Set the Hold setting of the A/C. More...
     
    bool getHold (void) const
     Get the Hold setting of the A/C. More...
     
    void setIon (const bool on)
     Set the Ion (filter) setting of the A/C. More...
     
    bool getIon (void) const
     Get the Ion (filter) setting of the A/C. More...
     
    void setLight (const bool on)
     Set the Light(LED display) setting of the A/C. More...
     
    bool getLight (void) const
     Get the Light (LED display) setting of the A/C. More...
     
    void set8CHeat (const bool on)
     Set the 8°C Heat setting of the A/C. More...
     
    bool get8CHeat (void) const
     Get the 8°C Heat setting of the A/C. More...
     
    void setEye (const bool on)
     Set the Eye (Sensor) setting of the A/C. More...
     
    bool getEye (void) const
     Get the Eye (Sensor) setting of the A/C. More...
     
    bool getTempUnits (void) const
     Is the A/C unit using Fahrenheit or Celsius for temperature units. More...
     
    bool getFollow (void) const
     Get the Follow Me setting of the A/C. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)
     Set the internal state from a valid code for this protocol. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
     Calculate the checksum for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (const uint16_t length=kNeoclimaStateLength)
     Calculate & update the checksum for the internal state. More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    NeoclimaProtocol _
     
    -

    Detailed Description

    -

    Class for handling detailed Neoclima A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRNeoclimaAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRNeoclimaAc::IRNeoclimaAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRNeoclimaAc::calcChecksum (const uint8_t state[],
    const uint16_t length = kNeoclimaStateLength 
    )
    -
    -static
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRNeoclimaAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRNeoclimaAc::checksum (const uint16_t length = kNeoclimaStateLength)
    -
    -private
    -
    - -

    Calculate & update the checksum for the internal state.

    -
    Parameters
    - - -
    [in]lengthThe length/size of the internal state.
    -
    -
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRNeoclimaAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRNeoclimaAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ get8CHeat()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::get8CHeat (void ) const
    -
    - -

    Get the 8°C Heat setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getButton()

    - -
    -
    - - - - - - - - -
    uint8_t IRNeoclimaAc::getButton (void ) const
    -
    - -

    Get the Button/Command setting of the A/C.

    -
    Returns
    The value of the button/command that was pressed.
    - -
    -
    - -

    ◆ getEcono()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getEcono (void ) const
    -
    - -

    Get the Economy (Energy Saver) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getEye()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getEye (void ) const
    -
    - -

    Get the Eye (Sensor) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRNeoclimaAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getFollow()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getFollow (void ) const
    -
    - -

    Get the Follow Me setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFresh()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getFresh (void ) const
    -
    - -

    Get the Fresh (air) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getHold()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getHold (void ) const
    -
    - -

    Get the Hold setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getIon()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getIon (void ) const
    -
    - -

    Get the Ion (filter) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getLight()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getLight (void ) const
    -
    - -

    Get the Light (LED display) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRNeoclimaAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRNeoclimaAc::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getSleep (void ) const
    -
    - -

    Get the Sleep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwingH()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getSwingH (void ) const
    -
    - -

    Get the horizontal swing (Air Flow) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwingV()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getSwingV (void ) const
    -
    - -

    Get the vertical swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRNeoclimaAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees.
    -
    Note
    The units of the temperature (F/C) is determined by getTempUnits().
    - -
    -
    - -

    ◆ getTempUnits()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getTempUnits (void ) const
    -
    - -

    Is the A/C unit using Fahrenheit or Celsius for temperature units.

    -
    Returns
    false, Fahrenheit. true, Celsius.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRNeoclimaAc::getTurbo (void ) const
    -
    - -

    Get the Turbo setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::send (const uint16_t repeat = kNeoclimaMinRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ set8CHeat()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::set8CHeat (const bool on)
    -
    - -

    Set the 8°C Heat setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    This feature maintains the room temperature steadily at 8°C and prevents the room from freezing by activating the heating operation automatically when nobody is at home over a longer period during severe winter.
    - -
    -
    - -

    ◆ setButton()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setButton (const uint8_t button)
    -
    - -

    Set the Button/Command pressed setting of the A/C.

    -
    Parameters
    - - -
    [in]buttonThe value of the button/command that was pressed.
    -
    -
    - -
    -
    - -

    ◆ setEcono()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setEcono (const bool on)
    -
    - -

    Set the Economy (Energy Saver) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setEye()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setEye (const bool on)
    -
    - -

    Set the Eye (Sensor) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting. 0-3, 0 is auto, 1-3 is the speed
    -
    -
    - -
    -
    - -

    ◆ setFresh()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setFresh (const bool on)
    -
    - -

    Set the Fresh (air) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setHold()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setHold (const bool on)
    -
    - -

    Set the Hold setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setIon()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setIon (const bool on)
    -
    - -

    Set the Ion (filter) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setLight()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setLight (const bool on)
    -
    - -

    Set the Light(LED display) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRNeoclimaAc::setRaw (const uint8_t new_code[],
    const uint16_t length = kNeoclimaStateLength 
    )
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - - -
    [in]new_codeA valid code for this protocol.
    [in]lengthThe length/size of the new_code array.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setSleep (const bool on)
    -
    - -

    Set the Sleep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwingH()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setSwingH (const bool on)
    -
    - -

    Set the horizontal swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwingV()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setSwingV (const bool on)
    -
    - -

    Set the vertical swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRNeoclimaAc::setTemp (const uint8_t temp,
    const bool celsius = true 
    )
    -
    - -

    Set the temperature.

    -
    Parameters
    - - - -
    [in]tempThe temperature in degrees celsius.
    [in]celsiusUse Fahrenheit (false) or Celsius (true).
    -
    -
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::setTurbo (const bool on)
    -
    - -

    Set the Turbo setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRNeoclimaAc::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRNeoclimaAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRNeoclimaAc::toCommonFanSpeed (const uint8_t speed)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRNeoclimaAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRNeoclimaAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRNeoclimaAc::validChecksum (const uint8_t state[],
    const uint16_t length = kNeoclimaStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    NeoclimaProtocol IRNeoclimaAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRNeoclimaAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map deleted file mode 100644 index a8676504a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 deleted file mode 100644 index ad1215eec..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -517a172da896e5faddd77763fd613da1 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRNeoclimaAc__coll__graph.png deleted file mode 100644 index 997fe24ff0cb23254b0d18e95a2317c3a5525f05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6475 zcmZ8m1yq#V+D1Hrq^JnerGPX@w@P<6Bi$)ELkb*`Mn;+e$&naRLaC#abc2X=3_X$q z2+Y5^|GI14dzl5ZX3fXm-`?-LpZa2Sw3Nw+X^HXh@W@nE6!gG52Kr z$&-~+e9v5|hliXd-HKkswq?Lc!8S#Zwoc=|SlTsu@LDR;L+Kj^M z#!UX7mN4-XDPCsIxlgyyhtiiLmWIf!fY@_C-Vm)+)+h>RGz>(N(IV9z8fT z3q|N{h9%^+2}R@J?L;CueL#TpWoE>}U}ahHHLIHMunhX(S}4 z7oeMO^n7`BKHdKFQAttJBS_%Vt#ZB~jpW??y}hkZc4jzZzkT*WYjjMb%$2RIn9WdWUn2>9)(2?Dn^IEl6%-Z{ z-M;=uV*9MwI0HW#r`zPn7EKA02h}_s1<T`wEoop~w@5R|6jdY+uWo4!B_EZ9#L%SAs>~e8&;WXR8+m5@$ z2+}5$2;IGV7i_FjA&Y=O@{b=TTid9z@y)=M1hFRQVM*!!^Wj_>(^@;CjyGf-gM$eu z^Tzr5L@*S)ghZxeUI>+PJyyhDACE9sfYHGyFiS$cj#p=GhKT`#5yE889#N2;&mKm0R@9(!g zKibsD79Bhq&J}jP=l=5(i-<_-TysGA`N&5;@X>m$FSWC?Q%6rv4=qfF>HuA-XJF8Y zT?iX)TnJV7_ZJ;6(R`YkC+be?IFw_JnQyhTvl~HbGu^v?pN?Ur(z4m4*`F5*g_1rL z2uJ3^Vqb=y{axoce6ZWNP#c8xsN4z1a7qh6zcBt-e2!(#51Na#hNVCcnZ5SLFC-d!f9g^kVVJ4}3OJf^Ji zN`)KKRe5h?V(vb_JqlL6KV|Mo#6k;+c6N5gr=X#sDcMI4A?}Aa1)tS^@9Vo4uA-`1 z`t;4!<)66Y?dj=165`?}Ete;=CBrc>G0$}=b@lXYXio;74!@PV+|)jvIz$A_--WYl z3YBAb-77wRRB1UHQ~x$NsJXhfmYGIFN9UT=mM=LEaikOTaP!S+`$9&!du+lcKsr6?dYiN z?Jby@nOSlc1cPPGOG!!H)PX>>w6w_0P*ZNfIy%YqWzJ7y3#!4k8C5|NAXQ>?(<71t zLqpy3^SN3G$;>`!Fz7$1hFvhqkC_<}=T>N7V8(o-^Ed%DH8m*4O!dLRt8p~Iu+ioK zPYX*+UCO^VHa5)M+ZLc`21>>J7t!Q7($EzCwo`n5e*W>mu&}W4KX0~7(n~7R|CmDb zO)slwIyxeon#9M(#!gRHk~BNm*x1g{a=6}7edKL2GW+kzEbmiO?@~~ND;4HfS5vS= z&2S3|)qY(&J3G@gGjs80VUv-W4?7b86{Gy^L z0E^FGycq1}jl9Q8RUp@a*jCbIRX(bZ=>C z>Gbq;5rffIQ21+D21_r8yLhUos95o`Jr^89lVb8l92S(OYjpG-Sjtp|>39)T)Ib@J ziHT__SH|@`#i0~xR3aQ(ux2TV-bs;WfKo;_1gP!I??_jNTIEMW{i zwZ8ftEjRI{Y-U6P7XS^FuzPbfvccj2Fs|`2Ihmq- zA|KSLOetSEl+JmY1Owu*|? zSdr>6q{LIxBcQ9+0jr{@3jihE62BNW3FvhF-M^XC?m#U?t#>u`QEJM6lDpm0Z=7L? zZm}@W%dF(&ksR+|bon~aF$QFhXE@?mG(0DV9uPr=C~meQ#B+l%F}!cJ;m02%EA+Tm z`RA$1`Q6_`xx|e@4`eo~(2}j}Y5uc(l9B;6Td%STjdfjN63!N#aj!jN?!XWfC$WWt zE4uyVmAlnOB;55XxGhQCxjsQG;@e7{4^_&T(^e7$NZW|@(@dRhLo*R zQ7D7u?r-9$2!g1)#9@54f1>i5s`cmRk6*JcMr&7k{azC;Yv@Cs)oe`X8y}U*7Dm4k=#4KPv8B&*1u9TeXs*t$DdiCoZiYWIrJ;gY=(tx zB-5%+_Ld*|d_%q1m2K;$eYU1~lMs#ce#8#n60&6|e(c&SsnR|cnM7MNg=ik7St!UbikN_ipNSHd1){(QmIa+)Rz5NoxTqZcEDUAPi% zzu09G@<3qvUO1@hgdCjT8MXdciJRste5PZhGdQ35Bxhj^<~ic-{y@y-2iArdExLxo zz2w+tj>oUEg4XoiGstU!e69S^EUZIzW4_gL^TM}zov7@ABn~Q@4p(>jI2jHfN^D@D z3y@;l+yfWW2HnDO%ofyCg=|#R=<5g*w>q2)EPJ+pD{hS>V|8OVAKH@d#D)AdO`hnq zv*p24=tS8P)EwcaZhN;(8xkJ=)!h~G(s}0ry@iNEMOc)qt}G{SLCGD_JlV?lg%eJh zJgicUzDr0x7wzxO$NWa7YH>e`q-0AYaZQf=#HTX(g(U+j^O@NVBoz;81I9+|4T3DL z`WX@J@R{_I8l~@XhEx-*DbuQsNj+7TI(R{jWcf9(NnhUYT=5A}y%I?0cH9n?PqVv) zpNMLTikwOm%x)I2YGXRl$}-n>_tFXc7#D|Pa}zXEIQWK|GGa_}reRu0_)u+5UGhcy zxD!Lf5QBq1GgRG%(U+huTIwh+d$UP{c=7&-`b&#;!DE`gEQyVfCB1YVoj9(`^?hkD zTfU){+C@PBDa(vnovU)X+V)^L5bL|vzHs}Kt}p6^bEwEH$CW~(H>0#{;|tXOithF_IkbVq8sm z*`b(j&+tUX;lTYtx|!P952+TX1<5%@Hg7Iwn524)YD{M=%AFamPIJheLg+_ey$dj2 z&4)`ps9U}`RJxnYWW3pcM3tTSq&-w^>0Z3W zzox8J#$;TNd$TXB`EX`A&omYL+YPlK5XRU79g`nXQf|cJ$CbGS6~z6w*yqy0|8=DK z6)c;PaTuXZg6D4%kTUb}4J{wm7v}{~zVg?X1r6%PpjJNZLhC%CyuJ3%;=`~uv*bj~ ziU(EetdgEyO4s@^Gv`q0>Z+8)QLvF{cOb>5a~XblBt-xt1D2x42vYFKSTwI9Zj@QY zB1P34Cwi2-X}j(9$nGGE)M7EZypb(NFq10iXcZAX2w23fH{~%YohT`A1q~i^eP8^x zZVWpgFD@=GyL#aqiq6iZZxa$806L-_62P z(9%l0o+JEvGUp2*k@h5@2?Q(+ny0!u*}#0(jCK_{jBN3n%#{KVE+1L|KS#2_Y4Dmi zRC_HwCnh1;94#aSUhFSILioFPH^Qr`JW)_P2ZyoNpa48+85zwE1Ojn`lb>I?YPxXJ zWw4v@)~z|8mRN%4HaERJ9QiTlr{V8Z<>Lb! zn0(=Aa$cS`Fm@QIL}+Lz@JK0nd7f&EM@L70Vn1K94PgznYWbjF``)yjZ*fCHjt%wn z^-C)&yR8I(%1j(}>RedJ(=Aj2Qiqfe(xPH&N&_q*kPLzbMn+}xZ{CnI#5Ole0jcrHbvjYRbt*YIIlO!uwV(scj>2@MCDENb zJ>%nWU?hdW_&GVW*v{9dr-5o}YPX4rSwRwcbfFy7?m23QN+iqtEj2(wTY(u@>+->-+jUtjehT_X8~pb#7z7W&EPc zLt4em)cE;dhU}HZy)vHM#yR>iLsj0q4Ml`;*AVsuTJh+=Vh;@n$z3J!_Q!dB%Y=ua z-G*Xh4dl;i1u|Qx^bBnlch{p9i+2XsQ3o}T2!=I}9h&kdwx@Q~8_deJR4glz5kj;I zQSJ95aXsxz_$g&zu?Cwx8q0SJKR>9(v>o= zhAr~?_YMf7HzM;N2WsnWUdH9>`BD%r-gq(DGoU18UR|}1^{mj9rc8Br* z(ZAaCKhYmVHZJT=?*eMy(<=MP;juq@^g}X=y|mY#ATlBZSz9u^UBErL$tNCNit$JT zro?XXpVy!(Ck+DX&xVxk$~2Q2UYypPiW698&MUVKJ=^FX=Mkz}7Y5E1q(u(f0tT9X zL6GqFi#2|L%maX7u+E!f#SP^7il8I@N8^Ub4`zwPwFY5-N|J8gV22w&wi8khaM|x| zb{b`!55maQ4YRPYL`6kWP*HUs4$BP#JaS1TA|hHk+8lT2C@d%d652DZ33K$7kV)Xx z>URgzsrA9^>kAgYMh@0WZ(e;mT}Aabd9SEwXsj~fP6^qR6YW6I0IX<+X5skeDe$F& zwC(|7q~;XQt34NFmEs?MO@A5cyzN!gth0t`Nn2iB?aUCg4a8kyRkgJ_1O!He`FMEZ z3zd^4R(g{3_4K|~TX$s01c`zGq_n=mw9Y~B)vAg<4}Z&Ve6TO;-~J{k zDk@rBTkGPkYPpW4el)n#0iPE2=8aI;Rj__X8bBua`}a`=oPkiNpiSrP&_A;aSt7v_ zep{3t9v&?h2mKnk(wXt`q;wXV~AzykvYbXcKhV91p4VW$&y z`_R&|m)+ZXb-oSqi>XRW_26ZZA|K29+)?{U5^-yoeM}v!~v5#kohzkc&9Otg8>4R2fheQvRIfTyL`I8LN5cG z;F<62R3K-N>~yVa?S6feP(1jwdPX_`Gd~Ct%j(8P$D@tWote5Gw_ttSG#;cOJ0_7q zN(0>z29^m}vTJy_YRVVHZ@~4{`fX2{tq>Cvi~H|91ldDpPY)qT0wBTribpURkdUmd zuOD>WkrVKom;Tx4nS?}g0PDK8+6%X6g{6WhFp)`a2yF9nd3ijLumQLDOFw9##R{y!ge3&mkaoT;gedsw%ajK}@XsnLTg-3hippmbvOU5AS+k}BN zH8*F^OG!$ChPCrQ-2$>lO*$O3`)@#sKYs@D<>2rTM45ldS54nsTv~el)#@K7;a6t|_WF9};~;-BZ3~v@Pvb2F zg%y{QsHk;a}?Nu5wisCqojg8qg zvpT`KE-fu>Mrs=vP=ZiQbl3d`5EC>YpC~s%v2t)k_w}jqSv1LmGtiGxc73D;g+eXX$%EE$|x=}@}}J75!|#Y z7nuAT8ISqoy}SfAH#dP`6AKy`o2x%x{o5R!n3|fp0|p%0Z)hK`AiUCxhYwAo+oDmhS3@#P+VswMuUJHXk%z`*ZUEt-$8{|mMM8z+Eg1^;4FL(#G13GI2`)=h(H!LLS* z`R{njfdB^dd2G;#PJOgV1s(eDM+`E|{Aa2u#Fug-kKca0G^R)bPe<@n6}1#9pIb%z EAASuK^8f$< diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc-members.html deleted file mode 100644 index 50e639d84..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc-members.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRPanasonicAc Member List
    -
    -
    - -

    This is the complete list of members for IRPanasonicAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _getTime(const uint8_t ptr[])IRPanasonicAcprivatestatic
    _irsendIRPanasonicAcprivate
    _setTime(uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)IRPanasonicAcprivatestatic
    _swinghIRPanasonicAcprivate
    _tempIRPanasonicAcprivate
    begin(void)IRPanasonicAc
    calcChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)IRPanasonicAcstatic
    calibrate(void)IRPanasonicAcinline
    cancelOffTimer(void)IRPanasonicAc
    cancelOnTimer(void)IRPanasonicAc
    convertFan(const stdAc::fanspeed_t speed)IRPanasonicAcstatic
    convertMode(const stdAc::opmode_t mode)IRPanasonicAcstatic
    convertSwingH(const stdAc::swingh_t position)IRPanasonicAcstatic
    convertSwingV(const stdAc::swingv_t position)IRPanasonicAcstatic
    encodeTime(const uint8_t hours, const uint8_t mins)IRPanasonicAcstatic
    fixChecksum(const uint16_t length=kPanasonicAcStateLength)IRPanasonicAcprivate
    getClock(void)IRPanasonicAc
    getFan(void)IRPanasonicAc
    getIon(void)IRPanasonicAc
    getMode(void)IRPanasonicAc
    getModel(void)IRPanasonicAc
    getOffTimer(void)IRPanasonicAc
    getOnTimer(void)IRPanasonicAc
    getPower(void)IRPanasonicAc
    getPowerful(void)IRPanasonicAc
    getQuiet(void)IRPanasonicAc
    getRaw(void)IRPanasonicAc
    getSwingHorizontal(void)IRPanasonicAc
    getSwingVertical(void)IRPanasonicAc
    getTemp(void)IRPanasonicAc
    IRPanasonicAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRPanasonicAcexplicit
    isOffTimerEnabled(void)IRPanasonicAc
    isOnTimerEnabled(void)IRPanasonicAc
    off(void)IRPanasonicAc
    on(void)IRPanasonicAc
    remote_stateIRPanasonicAcprivate
    send(const uint16_t repeat=kPanasonicAcDefaultRepeat)IRPanasonicAc
    setClock(const uint16_t mins_since_midnight)IRPanasonicAc
    setFan(const uint8_t fan)IRPanasonicAc
    setIon(const bool on)IRPanasonicAc
    setMode(const uint8_t mode)IRPanasonicAc
    setModel(const panasonic_ac_remote_model_t model)IRPanasonicAc
    setOffTimer(const uint16_t mins_since_midnight, const bool enable=true)IRPanasonicAc
    setOnTimer(const uint16_t mins_since_midnight, const bool enable=true)IRPanasonicAc
    setPower(const bool on)IRPanasonicAc
    setPowerful(const bool on)IRPanasonicAc
    setQuiet(const bool on)IRPanasonicAc
    setRaw(const uint8_t state[])IRPanasonicAc
    setSwingHorizontal(const uint8_t direction)IRPanasonicAc
    setSwingVertical(const uint8_t elevation)IRPanasonicAc
    setTemp(const uint8_t temp, const bool remember=true)IRPanasonicAc
    stateReset(void)IRPanasonicAc
    toCommon(void)IRPanasonicAc
    toCommonFanSpeed(const uint8_t speed)IRPanasonicAcstatic
    toCommonMode(const uint8_t mode)IRPanasonicAcstatic
    toCommonSwingH(const uint8_t pos)IRPanasonicAcstatic
    toCommonSwingV(const uint8_t pos)IRPanasonicAcstatic
    toString(void)IRPanasonicAc
    validChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)IRPanasonicAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc.html deleted file mode 100644 index f0eb5d1f7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc.html +++ /dev/null @@ -1,1936 +0,0 @@ - - - - - - - -IRremoteESP8266: IRPanasonicAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Panasonic A/C messages. - More...

    - -

    #include <ir_Panasonic.h>

    -
    -Collaboration diagram for IRPanasonicAc:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRPanasonicAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kPanasonicAcDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Change the power setting to On. More...
     
    void off (void)
     Change the power setting to Off. More...
     
    void setPower (const bool on)
     Control the power state of the A/C unit. More...
     
    bool getPower (void)
     Get the A/C power state of the remote. More...
     
    void setTemp (const uint8_t temp, const bool remember=true)
     Set the temperature. More...
     
    uint8_t getTemp (void)
     Get the current temperature setting. More...
     
    void setFan (const uint8_t fan)
     Set the speed of the fan. More...
     
    uint8_t getFan (void)
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void)
     Get the operating mode setting of the A/C. More...
     
    void setRaw (const uint8_t state[])
     Set the internal state from a valid code for this protocol. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setQuiet (const bool on)
     Set the Quiet setting of the A/C. More...
     
    bool getQuiet (void)
     Get the Quiet setting of the A/C. More...
     
    void setPowerful (const bool on)
     Set the Powerful (Turbo) setting of the A/C. More...
     
    bool getPowerful (void)
     Get the Powerful (Turbo) setting of the A/C. More...
     
    void setIon (const bool on)
     Set the Ion (filter) setting of the A/C. More...
     
    bool getIon (void)
     Get the Ion (filter) setting of the A/C. More...
     
    void setModel (const panasonic_ac_remote_model_t model)
     Set the model of the A/C to emulate. More...
     
    panasonic_ac_remote_model_t getModel (void)
     Get/Detect the model of the A/C. More...
     
    void setSwingVertical (const uint8_t elevation)
     Control the vertical swing setting. More...
     
    uint8_t getSwingVertical (void)
     Get the current vertical swing setting. More...
     
    void setSwingHorizontal (const uint8_t direction)
     Control the horizontal swing setting. More...
     
    uint8_t getSwingHorizontal (void)
     Get the current horizontal swing setting. More...
     
    uint16_t getClock (void)
     Get the current clock time value. More...
     
    void setClock (const uint16_t mins_since_midnight)
     Set the current clock time value. More...
     
    uint16_t getOnTimer (void)
     Get the On Timer time value. More...
     
    void setOnTimer (const uint16_t mins_since_midnight, const bool enable=true)
     Set/Enable the On Timer. More...
     
    void cancelOnTimer (void)
     Cancel the On Timer. More...
     
    bool isOnTimerEnabled (void)
     Check if the On Timer is Enabled. More...
     
    uint16_t getOffTimer (void)
     Get the Off Timer time value. More...
     
    void setOffTimer (const uint16_t mins_since_midnight, const bool enable=true)
     Set/Enable the Off Timer. More...
     
    void cancelOffTimer (void)
     Cancel the Off Timer. More...
     
    bool isOffTimerEnabled (void)
     Check if the Off Timer is Enabled. More...
     
    stdAc::state_t toCommon (void)
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void)
     Convert the internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t calcChecksum (const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
     Calculate the checksum for a given state. More...
     
    static uint16_t encodeTime (const uint8_t hours, const uint8_t mins)
     Convert standard (military/24hr) time to nr. of minutes since midnight. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static uint8_t convertSwingV (const stdAc::swingv_t position)
     Convert a standard A/C vertical swing into its native setting. More...
     
    static uint8_t convertSwingH (const stdAc::swingh_t position)
     Convert a standard A/C horizontal swing into its native setting. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
     Convert a native vertical swing postion to it's common equivalent. More...
     
    static stdAc::swingh_t toCommonSwingH (const uint8_t pos)
     Convert a native horizontal swing postion to it's common equivalent. More...
     
    - - - - -

    -Private Member Functions

    void fixChecksum (const uint16_t length=kPanasonicAcStateLength)
     Calculate and set the checksum values for the internal state. More...
     
    - - - - - - - -

    -Static Private Member Functions

    static uint16_t _getTime (const uint8_t ptr[])
     Get the time from a given pointer location. More...
     
    static void _setTime (uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)
     Set the time at a given pointer location. More...
     
    - - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    uint8_t remote_state [kPanasonicAcStateLength]
     The state in code form. More...
     
    uint8_t _swingh
     
    uint8_t _temp
     
    -

    Detailed Description

    -

    Class for handling detailed Panasonic A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRPanasonicAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRPanasonicAc::IRPanasonicAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ _getTime()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint16_t IRPanasonicAc::_getTime (const uint8_t ptr[])
    -
    -staticprivate
    -
    - -

    Get the time from a given pointer location.

    -
    Parameters
    - - -
    [in]ptrA pointer to a time location in a state.
    -
    -
    -
    Returns
    The time expressed as nr. of minutes past midnight.
    -
    Note
    Internal use only.
    - -
    -
    - -

    ◆ _setTime()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRPanasonicAc::_setTime (uint8_t *const ptr,
    const uint16_t mins_since_midnight,
    const bool round_down 
    )
    -
    -staticprivate
    -
    - -

    Set the time at a given pointer location.

    -
    Parameters
    - - - - -
    [in,out]ptrA pointer to a time location in a state.
    [in]mins_since_midnightThe time as nr. of minutes past midnight.
    [in]round_downDo we round to the nearest 10 minute mark?
    -
    -
    -
    Note
    Internal use only.
    - -
    -
    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRPanasonicAc::calcChecksum (const uint8_t * state,
    const uint16_t length = kPanasonicAcStateLength 
    )
    -
    -static
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe value to calc the checksum of.
    [in]lengthThe size/length of the state.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRPanasonicAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ cancelOffTimer()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::cancelOffTimer (void )
    -
    - -

    Cancel the Off Timer.

    - -
    -
    - -

    ◆ cancelOnTimer()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::cancelOnTimer (void )
    -
    - -

    Cancel the On Timer.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertSwingH()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc::convertSwingH (const stdAc::swingh_t position)
    -
    -static
    -
    - -

    Convert a standard A/C horizontal swing into its native setting.

    -
    Parameters
    - - -
    [in]positionA stdAc::swingh_t position to convert.
    -
    -
    -
    Returns
    The equivalent native horizontal swing position.
    - -
    -
    - -

    ◆ convertSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc::convertSwingV (const stdAc::swingv_t position)
    -
    -static
    -
    - -

    Convert a standard A/C vertical swing into its native setting.

    -
    Parameters
    - - -
    [in]positionA stdAc::swingv_t position to convert.
    -
    -
    -
    Returns
    The equivalent native horizontal swing position.
    - -
    -
    - -

    ◆ encodeTime()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint16_t IRPanasonicAc::encodeTime (const uint8_t hours,
    const uint8_t mins 
    )
    -
    -static
    -
    - -

    Convert standard (military/24hr) time to nr. of minutes since midnight.

    -
    Parameters
    - - - -
    [in]hoursThe hours component of the time.
    [in]minsThe minutes component of the time.
    -
    -
    -
    Returns
    The nr of minutes since midnight.
    - -
    -
    - -

    ◆ fixChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRPanasonicAc::fixChecksum (const uint16_t length = kPanasonicAcStateLength)
    -
    -private
    -
    - -

    Calculate and set the checksum values for the internal state.

    -
    Parameters
    - - -
    [in]lengthThe size/length of the state.
    -
    -
    - -
    -
    - -

    ◆ getClock()

    - -
    -
    - - - - - - - - -
    uint16_t IRPanasonicAc::getClock (void )
    -
    - -

    Get the current clock time value.

    -
    Returns
    The time expressed as nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc::getFan (void )
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed.
    - -
    -
    - -

    ◆ getIon()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc::getIon (void )
    -
    - -

    Get the Ion (filter) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc::getMode (void )
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getModel()

    - -
    -
    - - - - - - - - -
    panasonic_ac_remote_model_t IRPanasonicAc::getModel (void )
    -
    - -

    Get/Detect the model of the A/C.

    -
    Returns
    The enum of the compatible model.
    - -
    -
    - -

    ◆ getOffTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRPanasonicAc::getOffTimer (void )
    -
    - -

    Get the Off Timer time value.

    -
    Returns
    The time expressed as nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getOnTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRPanasonicAc::getOnTimer (void )
    -
    - -

    Get the On Timer time value.

    -
    Returns
    The time expressed as nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc::getPower (void )
    -
    - -

    Get the A/C power state of the remote.

    -
    Returns
    true, the setting is on. false, the setting is off.
    -
    Warning
    Except for CKP models, where it returns if the power state will be toggled on the A/C unit when the next message is sent.
    - -
    -
    - -

    ◆ getPowerful()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc::getPowerful (void )
    -
    - -

    Get the Powerful (Turbo) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getQuiet()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc::getQuiet (void )
    -
    - -

    Get the Quiet setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRPanasonicAc::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSwingHorizontal()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc::getSwingHorizontal (void )
    -
    - -

    Get the current horizontal swing setting.

    -
    Returns
    The current position it is set to.
    - -
    -
    - -

    ◆ getSwingVertical()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc::getSwingVertical (void )
    -
    - -

    Get the current vertical swing setting.

    -
    Returns
    The current position it is set to.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc::getTemp (void )
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ isOffTimerEnabled()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc::isOffTimerEnabled (void )
    -
    - -

    Check if the Off Timer is Enabled.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ isOnTimerEnabled()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc::isOnTimerEnabled (void )
    -
    - -

    Check if the On Timer is Enabled.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::off (void )
    -
    - -

    Change the power setting to Off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::on (void )
    -
    - -

    Change the power setting to On.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::send (const uint16_t repeat = kPanasonicAcDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setClock()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setClock (const uint16_t mins_since_midnight)
    -
    - -

    Set the current clock time value.

    -
    Parameters
    - - -
    [in]mins_since_midnightThe time as nr. of minutes past midnight.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setIon()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setIon (const bool on)
    -
    - -

    Set the Ion (filter) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setMode (const uint8_t desired)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]desiredThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setModel()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setModel (const panasonic_ac_remote_model_t model)
    -
    - -

    Set the model of the A/C to emulate.

    -
    Parameters
    - - -
    [in]modelThe enum of the appropriate model.
    -
    -
    - -
    -
    - -

    ◆ setOffTimer()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRPanasonicAc::setOffTimer (const uint16_t mins_since_midnight,
    const bool enable = true 
    )
    -
    - -

    Set/Enable the Off Timer.

    -
    Parameters
    - - - -
    [in]mins_since_midnightThe time as nr. of minutes past midnight.
    [in]enableDo we enable the timer or not?
    -
    -
    - -
    -
    - -

    ◆ setOnTimer()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRPanasonicAc::setOnTimer (const uint16_t mins_since_midnight,
    const bool enable = true 
    )
    -
    - -

    Set/Enable the On Timer.

    -
    Parameters
    - - - -
    [in]mins_since_midnightThe time as nr. of minutes past midnight.
    [in]enableDo we enable the timer or not?
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setPower (const bool on)
    -
    - -

    Control the power state of the A/C unit.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Warning
    For CKP models, the remote has no memory of the power state the A/C unit should be in. For those models setting this on/true will toggle the power state of the Panasonic A/C unit with the next message. e.g. If the A/C unit is already on, setPower(true) will turn it off. If the A/C unit is already off, setPower(true) will turn it on. setPower(false) will leave the A/C power state as it was. For all other models, setPower(true) should set the internal state to turn it on, and setPower(false) should turn it off.
    - -
    -
    - -

    ◆ setPowerful()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setPowerful (const bool on)
    -
    - -

    Set the Powerful (Turbo) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setQuiet()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setQuiet (const bool on)
    -
    - -

    Set the Quiet setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setRaw (const uint8_t state[])
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSwingHorizontal()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setSwingHorizontal (const uint8_t desired_direction)
    -
    - -

    Control the horizontal swing setting.

    -
    Parameters
    - - -
    [in]desired_directionThe position to set the horizontal swing to.
    -
    -
    - -
    -
    - -

    ◆ setSwingVertical()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::setSwingVertical (const uint8_t desired_elevation)
    -
    - -

    Control the vertical swing setting.

    -
    Parameters
    - - -
    [in]desired_elevationThe position to set the vertical swing to.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRPanasonicAc::setTemp (const uint8_t celsius,
    const bool remember = true 
    )
    -
    - -

    Set the temperature.

    -
    Parameters
    - - - -
    [in]celsiusThe temperature in degrees celsius.
    [in]rememberA flag for the class to remember the temperature.
    -
    -
    -
    Note
    Automatically safely limits the temp to the operating range supported.
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRPanasonicAc::toCommon (void )
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRPanasonicAc::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRPanasonicAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonSwingH()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingh_t IRPanasonicAc::toCommonSwingH (const uint8_t pos)
    -
    -static
    -
    - -

    Convert a native horizontal swing postion to it's common equivalent.

    -
    Parameters
    - - -
    [in]posA native position to convert.
    -
    -
    -
    Returns
    The common horizontal swing position.
    - -
    -
    - -

    ◆ toCommonSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingv_t IRPanasonicAc::toCommonSwingV (const uint8_t pos)
    -
    -static
    -
    - -

    Convert a native vertical swing postion to it's common equivalent.

    -
    Parameters
    - - -
    [in]posA native position to convert.
    -
    -
    -
    Returns
    The common vertical swing position.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRPanasonicAc::toString (void )
    -
    - -

    Convert the internal state into a human readable string.

    -
    Returns
    A string containing the settings in human-readable form.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRPanasonicAc::validChecksum (const uint8_t * state,
    const uint16_t length = kPanasonicAcStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length of the state array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRPanasonicAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ _swingh

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRPanasonicAc::_swingh
    -
    -private
    -
    - -
    -
    - -

    ◆ _temp

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRPanasonicAc::_temp
    -
    -private
    -
    - -
    -
    - -

    ◆ remote_state

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRPanasonicAc::remote_state[kPanasonicAcStateLength]
    -
    -private
    -
    - -

    The state in code form.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32-members.html deleted file mode 100644 index c749fd871..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRPanasonicAc32 Member List
    -
    -
    - -

    This is the complete list of members for IRPanasonicAc32, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRPanasonicAc32private
    _irsendIRPanasonicAc32private
    begin(void)IRPanasonicAc32
    calibrate(void)IRPanasonicAc32inline
    convertFan(const stdAc::fanspeed_t speed)IRPanasonicAc32static
    convertMode(const stdAc::opmode_t mode)IRPanasonicAc32static
    convertSwingV(const stdAc::swingv_t position)IRPanasonicAc32static
    getFan(void) constIRPanasonicAc32
    getMode(void) constIRPanasonicAc32
    getPowerToggle(void) constIRPanasonicAc32
    getRaw(void) constIRPanasonicAc32
    getSwingHorizontal(void) constIRPanasonicAc32
    getSwingVertical(void) constIRPanasonicAc32
    getTemp(void) constIRPanasonicAc32
    IRPanasonicAc32(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRPanasonicAc32explicit
    send(const uint16_t repeat=kPanasonicAcDefaultRepeat)IRPanasonicAc32
    setFan(const uint8_t fan)IRPanasonicAc32
    setMode(const uint8_t mode)IRPanasonicAc32
    setPowerToggle(const bool on)IRPanasonicAc32
    setRaw(const uint32_t state)IRPanasonicAc32
    setSwingHorizontal(const bool on)IRPanasonicAc32
    setSwingVertical(const uint8_t pos)IRPanasonicAc32
    setTemp(const uint8_t temp)IRPanasonicAc32
    stateReset(void)IRPanasonicAc32
    toCommon(const stdAc::state_t *prev=NULL) constIRPanasonicAc32
    toCommonFanSpeed(const uint8_t speed)IRPanasonicAc32static
    toCommonMode(const uint8_t mode)IRPanasonicAc32static
    toCommonSwingV(const uint8_t pos)IRPanasonicAc32static
    toString(void) constIRPanasonicAc32
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32.html deleted file mode 100644 index 613456222..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32.html +++ /dev/null @@ -1,986 +0,0 @@ - - - - - - - -IRremoteESP8266: IRPanasonicAc32 Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Panasonic 32bit A/C messages. - More...

    - -

    #include <ir_Panasonic.h>

    -
    -Collaboration diagram for IRPanasonicAc32:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRPanasonicAc32 (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kPanasonicAcDefaultRepeat)
     Send the current internal state as IR messages. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void setPowerToggle (const bool on)
     Set the Power Toggle setting of the A/C. More...
     
    bool getPowerToggle (void) const
     Get the Power Toggle setting of the A/C. More...
     
    void setTemp (const uint8_t temp)
     Set the desired temperature. More...
     
    uint8_t getTemp (void) const
     Get the current desired temperature setting. More...
     
    void setFan (const uint8_t fan)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setRaw (const uint32_t state)
     Set the internal state from a valid code for this protocol. More...
     
    uint32_t getRaw (void) const
     Get a copy of the internal state/code for this protocol. More...
     
    void setSwingVertical (const uint8_t pos)
     Control the vertical swing setting. More...
     
    uint8_t getSwingVertical (void) const
     Get the current vertical swing setting. More...
     
    void setSwingHorizontal (const bool on)
     Control the horizontal swing setting. More...
     
    bool getSwingHorizontal (void) const
     Get the current horizontal swing setting. More...
     
    stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static uint8_t convertSwingV (const stdAc::swingv_t position)
     Convert a standard A/C vertical swing into its native setting. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    static stdAc::swingv_t toCommonSwingV (const uint8_t pos)
     Convert a native vertical swing postion to it's common equivalent. More...
     
    - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    PanasonicAc32Protocol _
     The state in code form. More...
     
    -

    Detailed Description

    -

    Class for handling detailed Panasonic 32bit A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRPanasonicAc32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRPanasonicAc32::IRPanasonicAc32 (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRPanasonicAc32::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::convertSwingV (const stdAc::swingv_t position)
    -
    -static
    -
    - -

    Convert a standard A/C vertical swing into its native setting.

    -
    Parameters
    - - -
    [in]positionA stdAc::swingv_t position to convert.
    -
    -
    -
    Returns
    The equivalent native horizontal swing position.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPowerToggle()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc32::getPowerToggle (void ) const
    -
    - -

    Get the Power Toggle setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint32_t IRPanasonicAc32::getRaw (void ) const
    -
    - -

    Get a copy of the internal state/code for this protocol.

    -
    Returns
    The code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSwingHorizontal()

    - -
    -
    - - - - - - - - -
    bool IRPanasonicAc32::getSwingHorizontal (void ) const
    -
    - -

    Get the current horizontal swing setting.

    -
    Returns
    The current position it is set to.
    - -
    -
    - -

    ◆ getSwingVertical()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::getSwingVertical (void ) const
    -
    - -

    Get the current vertical swing setting.

    -
    Returns
    The current position it is set to.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRPanasonicAc32::getTemp (void ) const
    -
    - -

    Get the current desired temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::send (const uint16_t repeat = kPanasonicAcDefaultRepeat)
    -
    - -

    Send the current internal state as IR messages.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    If we get an unexpected mode, default to AUTO.
    - -
    -
    - -

    ◆ setPowerToggle()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setPowerToggle (const bool on)
    -
    - -

    Set the Power Toggle setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setRaw (const uint32_t state)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSwingHorizontal()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setSwingHorizontal (const bool on)
    -
    - -

    Control the horizontal swing setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwingVertical()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setSwingVertical (const uint8_t pos)
    -
    - -

    Control the vertical swing setting.

    -
    Parameters
    - - -
    [in]posThe position to set the vertical swing to.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::setTemp (const uint8_t degrees)
    -
    - -

    Set the desired temperature.

    -
    Parameters
    - - -
    [in]degreesThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRPanasonicAc32::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRPanasonicAc32::toCommon (const stdAc::state_tprev = NULL) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Parameters
    - - -
    [in]prevPtr to the previous state if required.
    -
    -
    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRPanasonicAc32::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRPanasonicAc32::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingv_t IRPanasonicAc32::toCommonSwingV (const uint8_t pos)
    -
    -static
    -
    - -

    Convert a native vertical swing postion to it's common equivalent.

    -
    Parameters
    - - -
    [in]posA native position to convert.
    -
    -
    -
    Returns
    The common vertical swing position.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRPanasonicAc32::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    PanasonicAc32Protocol IRPanasonicAc32::_
    -
    -private
    -
    - -

    The state in code form.

    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRPanasonicAc32::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.map deleted file mode 100644 index 4eb627bca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.md5 deleted file mode 100644 index 6b690dd06..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6a8392d4410e2fd36aa5d55e0aa4f27a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc32__coll__graph.png deleted file mode 100644 index f2793c0a59d26bad84a49fc4cb45f9ad603d758a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7290 zcma)>WmJ^W+wKPoL`ew&0TB>{0i+w0M!KaH=@98=q@<;!89JmTh7OVL7#itr8HTQR z^PcnJtoQ$ZIK!G@)|zML+56u2zVGY$?OK zN#P0j_rOR_S^{!&`_n2a%Z_f}C8FuF{@)?(W=0yDnr1R$ z*VfkNDoRG{`1{<&BqSytGv7soioHO1hF^8WC23_5MW?4fH}F1NC2wX9@y%qMoSYo0 zcd@Oqo*H>tXn9f)QQX)l?1zcBHd*#5SFzWeK{4gST3;egNN`Zl8xG85x6cDFqf57h8(7D;SxWMh0y|Y=)X)Fp-NL z&aCOzIWK2uAL8LjW4-tEhZBa0WVCL=Q5f+AfU!Ajm{>xWhQK10W ztQgsJw4VIsv!3elT}k9D`)!%kM9FF}L+S!*wKqk?D`{!TC|40)kVZ{F(865WAZBUF zgo#JBGGp6J4}}&fg~(`}la=$JTFlYkg!_ z4d93Vw6-1`A9oB7M@2^BtE#G^4=>Q0txN5pWZafSxVX6JjbT3!o2_*-V`F?mLSH|> zyN&KgFIZVi^6M=K!37Oh$1{4(-tgtlh$rClOvaz;OrBm|Aa?2JYA?1Zs?V3Ur%k7( zri6}0)oSYMMrs|*Qr*_bP=|*&1}DXVJd%=<{(*tZ+uNZrF;CbU{@tOcr$0Z##C`UA zYAP{8x3v(X( zt7q$J>-GChoaPjNceXPnL$Mw|ZkwA+wVA0J;}-#6SVeClFE^E7Vk$%raG#kEC5(@C zo*Pl<#*jvjjHrrS{u3vX%z)ioL-gt#gU=4vE8GrEQ7F{u#r(~{c(Lvg`|aw1g?J|H z{)1VoWT?VS>2^?xc}TWHaPJEH)ps16oQWb{0?1qiWbfPjD$VUIX4)TpGSo=OYkV-TiX zh2)MzPP55sTWVQZS@iZq1g-S6RBR1CWA zlyzECPJj(KoTrqgvp(OQm*(9QLd?v_$oOGvG~em_V3p0x#zZOg@bEAe4IkK{$~Pb! z(&AOpS%lR=!NCMB33_?#pE`p6{rgAWeD^#)CnpDtzSP^>$SCs{0zte!0Ix4D9vxN3 z2tuPBuegdenV&s-hVI3@cP~hzP;+w~JRZHt&dGTgE=3E8ijB=lgPs2Sh!K>MlJell zY9w3M2t08@EEwOkwY5EM@H{GGg+htg8qv|es;fy86BDah>fMhl*-d(guJ)b6XW;4) zrB=!GbaYs6=;-M;^WdT|1IW_WSmA?WkKbQ0jIPd)#IR^U9^ZS;YS`r2*)W1cN=}sM zgCq;U7Yq9PS8q5+j#NcQ$5OcgUra(;dV4;t(c`4V>G61xHf;(V9w3!9tW;=AaSzM@ zJRXEAHG5x4I679gusaWV?|=Kbdo{hXE(3P!LmV8F&5;~)gboDc{8XJ2b7|8# z)78bv`jlB3y@&|a*X(RMh>(yFnxV3l5m;T)|-VvKX=T>l_zXx?^^x5upQc!6y_Hy?611zQW;@A({A8RNgaQLWpn* zWiwCx87Mb5v4ewyr>7^{#$|s_Uvx0iNh>}jB`h&fyLiT?^&1W-!$uYs!I_MXJCjj` zTBU?fo_tak`W;5bIkf4h*XSObAs)zK+=c&6PRVSqs%cU0n|gIvqQsLG;Q|E2#FAoScPMzQhm`O@ByO&+F40J(FmmpY#nwPI z9i5QsYF?(;5D;~Ld~Sn`jEtj_K_oIJIy#!1p$Uv4IomeZzCwnSl+GFc6c*ta(1goZOb+tUbU4Gj&wT6@XnBB?BlbWj;__R=CE z@N|mf{QdoB);1jlGBY!4zATD`pLBqEp#yoH+O_f+vG?}&pn5ftKYkE-4M1!gk4Ts` zix#?~XwkbfCsmVzHh#J@P2G_PD*2Yzuf}gDO5x%0G*i2T*3Qw<`1YAFFW0tR&nZ@&vi>s^cHFnDh?4KUQv+8G7R{ltXT_+wacdCI(wO@C6 zdHIyX7|UU;kA{IEu&qsk1p0pHaU)l8^72H6I3|>Zg&%CbsHmuL62l3e?eSuY)<8V7 z_RrlzdA{$yTC!w=4_jJVs#$C;EV_THWTC0=PmtJ} zns$KF>3YykYUk{1I+XsFh?v-JrHi1bsECo3)wDf?7$nhs7z}o`h(I8Y^iS?@QKwB9 zc!ZZWUy~zrif=}9n-Zqa&1I}Vsa-qVk+i)y-jz?}$QiHL-0kk~#Nt||B_@)jdHGUG zMCy$tv86|IkK78qEJqTQE}D)^frL;tI_%}6U^-c;n1KH&ToB%r?Z>+_$(#}Os&?ZT zk8TKwC~RUX)8gX3<>i^hRO;)i!CVxRU!*TtV?wXLP`2x6-JnztYmQi(l3i}9zD)#u zk7?Wbnq?%BCo7ioGs&2;-|nQ;lk9lQ)T8-yhPo=)?WBm?jdl0TDX$)8TVIage#JIY z?uO=f)VO0N%H2xhvFP4hoR5qqp9;6qNbwYf_tqcc-?=l7UQ8_;$W@dp$kj-rEwg{! z>fulOlc7 zx=0AxwU5mI&Bi?ejHFW3l)xUT_f%5&5Mml$?96sjt?H~$-xa~EmJc1yEF}EdM_ebo zAi)@(DAqUmLRHyw#xC1jsUai9A{jEI=;ynw8#D|7$@^(7C%$X2j~?o8C1O!a$5 zKQwDkC2R~A-MiY6k4aH4)HIydFvY&kVEx%=EBdOTadp3b!Gbt`$tcxB3vZc3-ewU z5UHDDTat#Z$-XOy37CG|i))I7Q73Q=61Qf~j5$>1(YPsguwf)}zy29QS$*NjhRntT zn6*HU*a#sb(^LGtmY=Il35m>%rU+=D*x&(WGB1Dr+i7{4vb_(A6EwJtrre>yzIU+E z@Xdi%+Y6)5v!-=_O;7Lhvpd5@HJ#V0;ar%?eZNm=+;(N;#&fR=+{3otFB=#1$iFSS zm;9Z?anlwLvHwfv<=To_cwH7h4;-qjabcFuq4m#g@}XS4jU8WER_`&D@b<(1jLZt28IW%>lyaU^ z&u%Py>fg|q#d7VyAyTe?KeQTwo2#f&Af0@6dXn1^n$u?6X9RwrulQP*LC%3`iu-Dw z?=1hJ&T?R8bSFPcOHQNP?czrDdTvnZISkSsEO29&{y@6qCI^?tJRV!amese1F`Eqb z$)S@*gE1V0<>89;@x+FGP0f0_C+Gn*tSmGi85K5^i)*umJiy}#d%x9R%c6bhVOEll zw3sL{EM6G8l&HhqeA7&7OklBV=_RJ4JGT3g0oxENy$da+XQz)PbH%m)uyKdYZOVgU zs07!BPS%nf1@rk|>qmK{x`Vd^kM{aIdAL-vsz&be={)i$W1JRIwMlv8W#CZD7;=Ii z{q9A3B5|%_o&r9IHy>HQk7rM)F^xs9G0hpCS zXlnT^TnS1)UMLC6i`TF5Jv=;sitYGMcY|tgZ@)DbySw4QF@Tl{e8i}^?ZHwz5GdG~ zn3(S9jg}Ta%%ek24i2n`w>`wipwXRxlyt%sepj`LrEO#`EO72PHp0?e>GOq-ovc#c zSa5;8epVI#hu@Gg&~>l&F)%Rx^!F=V{%gg{EGT%V*Wjx1{{8!){pK5kAF;8)z!Zf7 z53wCjE$ZEXg^NoP92}ha>z8r^s)sq#cD_lhaBOSl5QQRSP)a2NzURe@7h=F8VZ--M zydP8W$jhhjsTiA>+^XmElYKTwR7?!g+^eV|!=|z-d;Bd)w5fBR7$E^c#*HvLy9$tz zAr9*Uvn0t$NlcKa)YOu++%d}lKR-Y3v#(zvWxzjO0V(2%5mZ^pl`(97?|FH7Ir5ET%|LGcL!pfR*4XtWu=~lyvjSP)1N?R0>A~_V zw$hu2XWri4kI6Xv`5o3GLG~FLy?8_dHUDNHYXgVUxh!@dm{8m%3M0os1hiiq9qIV^ zo-!~nyr89>YVs0vc6Nq%UZ1U_ccx+%7Cz|d>py(-=u<}+*?VoWW2ZQFc6K6C(&hDa zX&D(T;0T)wg$jF|P)&5QN(Pb6q)lF&0hP;=Lf39e)&huDX&&s;^*?kRio~2wgN>+} zNA$JQ_Ph_8mV$E{$uJER)3>B9Y8dkBI915#U~0d+Rz=E#WWItiwvUX5u}96m8Yo)W zh&H~uZ`Ix1eXgYT*{eT+z4gZ{-lP>?ojNdlDl0Z{>MGQw0Y857xxo}_jG6agBbsC0WaFJZ5ZW8)R0B~4!L zXGB>>2l9l!$s;ySV{0jnfaj}OaL{YVs>g0`ESOAo_NiXH_&;hWkmo=2QFbt*irLU9 z_6}S#l_!Q=iX{5wk1q@4f-i60X?t&tSTPu^XX1*M7B^!%<( zb;a5Ku;rMod3&F=jZgjJwr81VTjc9JCW!)YK_;2H7T!nEHD*PeC&H^bu&;EpVql*w z@OSxOEK*%ozJ&jJ}Th!^jj+ zP@31Thrs%>{05dx0q*NBB>h5Gl{WG}v~zi6C2fUiztMb? zSFWPCrJv4f9uLmJv{mV?1xw*~KsN(iHwbyJt-T0|^ zBPb%mtT&EDujUH|LZ^QyL;UP8?ItWdT*1%bhkU92UKA+SQGm+)Ta7p5aNc>ZS@iy` zs_F=3{8ZT|% zz_#fu*ZUe!9}p&vva+&NlYf9m)dz0;r#fGdw*rEt)T#%w9e0`0VlUtyG{kc#>PHf@WbQtI_HAmiJU$M zezs+9ZZ6$vFo`>~>{I9MtRVm*O#S+JSM>Un7Bt{{4<2xM99tI^7h{})TLY+Lw)eMI z9xf0Ix-t1Db*)RlOwqjn53++VgZ76;&Uu~aUk!?ghyXv2PfBXmxAsH+r#@*k3S|#W zQ(z_|K$5NL3DtA%k05YGX#gNV>CXXAA@q>=xe4wwzTYD`atB98^gKLqtG)3R4(p0U zlKGq>EG*#&s|i9fvf$=sQNZJ1*N186VyF%Z+YdH23hL@afFZ;(Yn6MR*=v^QSq#`YYzGNiiR0px`Wc4-Ivx7_>p2`vY_tE;PJ zup94hkI7WGYdShRk&PZMepNoBsLEdPr82E40A!#EJz-{Mrt;Wf2W!yP+gn)H2Vd&%>wC@1+u70a z0N_868107FC{hRq2M5U1b&!M|?d|uqw6y;G`NQXiG7hi8(dK>Q?96k!GQi{tfR&q^ znj#=1%w)Uc=H{l?yPxYJPLJ+XF_V$l9HsPhEYy<=ZeEj@& z=na*o)1^nMYHGE1%O@8f_W-CR-xU-P*n(A+m){w>!5Amr-`g7i`1$N~IpP%*+BP^C z0q(H`8Z8*Qsi|pAZSCgF@xOnN=L`&(q@?lg6Z-n5rY`|yV%4wvYZnGmYbr@7-;bUQ$9xh?o$Di@A{=^ga*&Ofab5nlrQy>Fq# zk3j4Tz?%l{oAl0me}fAPnL$eJ>{#pR!)|yQ03n5d^Mlcaruy1iAYN+Rj|!Te&(isS z0L9Gnc*@Mx!(%%y4FLX)4Rc>#->tAxMHM1FJw4a+&Ac;IFPp5AQl4)0XNdJwc>vhY zx0xIfq2zb*9Pw-yHIyqLC@7dKpZEvN=x0H}#X}RYh*&fL)3*Ql<7)`Jik+N%?>C`g zc$u%37Zeim0-QS(6fijoP!bapZ#WA4ot@pBt>@iuJfQ;V02J9R3FHJy_i9c?9Eeg5 z^P%T+ZtIjlpE16A^%1a{+oPZ~@AHT0QUn-SSXj^5*`ol(6
    pak1dGHX~_Mdd9Z zdH^r;2?`<+R$36i<|Z3Gcmafrlg!33pYWjLRY-X414h<#eQpKRp_TqXe}6csfvb;6 zZ=BuLxzpv<6`6=9A1SNeYjfeF_LEH{X1G-Ac4@OBI88}SO@(Tg-vcD|(tF}CklMS; zVNe*9h|7Zrm@(jIF0=cRp(M9b-N0j)yQilIoCX*J(hJqC3d6Yj;BQq!Z7sjo#jy#% zR=_Jvke90FKNWW80w|7-jt(HG&a0DoB|x}HNJxO - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 deleted file mode 100644 index ddab76af4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d3db02dc98d87de4f04f73ee0ebb90c7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRPanasonicAc__coll__graph.png deleted file mode 100644 index 9b0c44699b51666a765a99f407ea753c0e89c3ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3434 zcmY*c2Q*x3*B+7R2`=#~VU&nY5Tl#O)mxBcbfcGu=tdnPVn~!k39b_N5~56m(K}(Z z#3*-$U`(QB)EHrm`kj3L_y6Cz=d5$ywb$D3d-mG<+534;ilv3&Wfp!G5D0YH*htSB zSmS;@Oboyq+bPHeEDUa@hI*j$Uw27oMHb)*HrCUir;)IiHRp6(_GPFW&Ey4jU_y+a8ZK$-aSapEO)u5Z~RU1T#EIirc|=M zyWQT1=kA5d(Ff1;6Nzh7R1k}PqRm$(++O~dd}2uPPGpxiGdcEVG_B>!Z+M7 zp-KM?DM|aSblEgDQ$aC2D)eYfbH~!w_MPE0;<`fjiPBWL`34mk_JzXA$|@x-Jz2V; zneNmc9(1s2=X6By9A(VY2$Rmw&yNa=8+5tJ8@k~TyY}z1OuG6dX`TJFy){K%w!i=W z`+Jc|vlT_$t7nLvnc0;_SrK#=U}IooptrEFFw497M4{{O&LA735WNA?`}+0k!igp2 z*`)5CSHt*i3tn|5tEfoovOI&wA8;^IS_q%r|ZijuO)06FB`)JdU`rZDJc;}#aB4!dExA={X*1+ zT=@2UFY^o}NpieIw*e>;Ye8Wo02Wt~f7`w>WZ@Z&o2L zIXxZQ+xw)xUMV;@c&5qUq5FMEt#GKYw6uwyzW%=CYTcj^7c(=npfmlf`}grbMO9U8 z3IcBNKf_=!hby`8$F_to81GBMRaI3DzC17V*#sbFeqas`;RWQezdzE+sR*R!>G@Vt zMuscCCGcAUB<}p|^a2MSkJq+WxLsCJL6t1e9pW8#KprEyhCM{Jv+@7HWi`%rd@;jx z4o*&8Q`1qoW6Iv%(i27@VR`xV_4S9T24cWD+o;A(Cx*0`_`}19PhQFn&5u`l8NvOZ zKc}gOtlo?{41_$Ixou#;ATKZ9)A+O%NQSca*flLJt>lah@7=|LnYlScb?wieq5J{@ zyL)@TFqW5>*X7u#)B9sh*RZ?ZrS}3zrEIiOga|nC$UDxEoT{r4o(99Yyy9@T?3fgw z6Mh+$E6t6z0Yo2;(z&;DIXO8V9vIDN;n!diio}u9eUYqVb z;-&Y_DfBleG6}ZvfJhnVavJ+VWZr~7&>c975{lf=*)G~DM`%O|ukm%kFgeQSk3nqN z$a~cYjW&_DCsUU$+d9-bF$S-aa$9D7CN#yJURoo4odstc+YK#jFIBMchmIM6%d$wp zm1$LCxty=NuY{TGt%rUxf|g|k%+CdGRdqu-VQPqmSF3HX)67X`@^bF#wCMLk`au`a zk`68W)Ot9eE%54;f_d_W#ikuPVN#2he)KjI-c=#=RBqn#itg?G9WQyC;jnr`X_|Oz zm~8;1dJIdrP19+;a#Hq+6u8c^zw$XSYcHPw(e+Kwgi1=CHwg)}zuzGFfH{m`8X$d< za)c%acK7U^${p0BZMIMW{Knl+D(KY13T3e~a*cVrHOU}$;HrT|IC-2fDUDOhZ77Yx z#_q>ZYgt}jE2u$8M~SSxD_-RP_l)|#;RhH-$M>|r7U{}Z`p znwANTZza0nOpxrq<{bd4s1>5m#iIr4Lj|xN5r%K6fV2=a5(@k{djy1 zFhPS|u0|97T-^}t1sf{7=s1@nTbWr}zC1i!%4nRXqoeDan!0yQE5Z`!v6L){yU#^_ zPf7;IomkycRejOdcjr}J-n+((`f~guWoyg&K^ph;Aq-5>b5~!PlNTxd`py<$t zQYSPJdIJjViPpA!u6;h-Bi|7t@pWqptqt}WD8^5m`3IlA5lup&xP*k#@ee%*(*-}} zDLxHZ8}l6~How8Oy}hlyy|yz@JO>3eJ8atd(>jN4%N*1!Q$^{~GnfW?&GicwDj&pD zCP%XE>MtA8q7|3dNt&*3V+{t(Is?{~@#g7PoMk2ZUus$_?Jyp5ZbZzw}60v z#l^*jX~XnubUh0TLJA5BJaYE^AK9VvBITWFrKMt2A_8psT2@3@xJ1=@GR?dIvajZK ze6STm8J4JV?)<|L9NWNNzh0;_M-dYfQxE(Kg2$bz07Y2YpN3CAoNyv}O}}?a71VsK z;zt+Ch&5P*35u~-V; z2EIEN(EX~Qz|_i$li}%;=;^2isxO5DRi?*<0m1nBeY@^IFC*t8SC&Hzm? z^{nHo+f#94V>gtQvyP6Uu<3%PF)>>1SVx(O$?@?XMsQ3|o%ua@RCMld)I>ud%{mfY$>913@J%Exa~1HqKFG@!}YYv9z?b zMu%bZ^KQW-N2IAKYh+|3z{=P(foXJ}>OurPs2Xn)8L4h;Y@Euk@*E`;W#otP#t8u> z`mw(+4#bw7&0UYd04l@@YXgJTNA7t6Gvfk5EV)YL32EacS)l>}5u z$B#bNp2jM|UwS8(56A??NQ%cbLBZjXk;UVk?j2YhF@^ogl^bemydoEmsXJ=}{{z3SsVTtD z&MwPiiaKg~@ZbR`l~?hv!HsP)IR*c4B?EdkuA{dFbkOLi`&^ShP*tC)3_(pS0qp>Y zGqO^b>i1j{4ah6N$(Y#V@Y&hfwnuZ5lL;IbyuH1X*!cQ(y3Z}Vyu6x^+a8=ulo}eF znwC~oJ#T7))WBqHYMlojHYx=#8{II=>jBVb>hCXiBP#{S;+v9^lJhFtdK8KgP~A(P zRY}V~$y0zP`qi4Qt|EYf0txohU%YtH8 zWD%rTs{d6rXMnu`Jy_$|nyLSS$I9Beugo}WrZZYqS65fHp&5g52bgDhc{!AiBrqR1 zWdO*eiHV7aMu?Z=I%RXio$Bl5m-GK4Z~if)0poGh - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRSamsungAc Member List
    -
    -
    - -

    This is the complete list of members for IRSamsungAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRSamsungAcprivate
    _forcepowerIRSamsungAcprivate
    _irsendIRSamsungAcprivate
    _lastsentpowerstateIRSamsungAcprivate
    begin(void)IRSamsungAc
    calcChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)IRSamsungAcstatic
    calibrate(void)IRSamsungAcinline
    checksum(const uint16_t length=kSamsungAcStateLength)IRSamsungAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRSamsungAcstatic
    convertMode(const stdAc::opmode_t mode)IRSamsungAcstatic
    getBeep(void) constIRSamsungAc
    getBreeze(void) constIRSamsungAc
    getClean(void) constIRSamsungAc
    getDisplay(void) constIRSamsungAc
    getFan(void) constIRSamsungAc
    getIon(void) constIRSamsungAc
    getMode(void) constIRSamsungAc
    getPower(void) constIRSamsungAc
    getPowerful(void) constIRSamsungAc
    getQuiet(void) constIRSamsungAc
    getRaw(void)IRSamsungAc
    getSwing(void) constIRSamsungAc
    getTemp(void) constIRSamsungAc
    IRSamsungAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRSamsungAcexplicit
    off(void)IRSamsungAc
    on(void)IRSamsungAc
    send(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)IRSamsungAc
    sendExtended(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)IRSamsungAc
    sendOff(const uint16_t repeat=kSamsungAcDefaultRepeat)IRSamsungAc
    sendOn(const uint16_t repeat=kSamsungAcDefaultRepeat)IRSamsungAc
    setBeep(const bool on)IRSamsungAc
    setBreeze(const bool on)IRSamsungAc
    setClean(const bool on)IRSamsungAc
    setDisplay(const bool on)IRSamsungAc
    setFan(const uint8_t speed)IRSamsungAc
    setIon(const bool on)IRSamsungAc
    setMode(const uint8_t mode)IRSamsungAc
    setPower(const bool on)IRSamsungAc
    setPowerful(const bool on)IRSamsungAc
    setQuiet(const bool on)IRSamsungAc
    setRaw(const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)IRSamsungAc
    setSwing(const bool on)IRSamsungAc
    setTemp(const uint8_t temp)IRSamsungAc
    stateReset(const bool forcepower=true, const bool initialPower=true)IRSamsungAc
    toCommon(void) constIRSamsungAc
    toCommonFanSpeed(const uint8_t speed)IRSamsungAcstatic
    toCommonMode(const uint8_t mode)IRSamsungAcstatic
    toString(void) constIRSamsungAc
    validChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)IRSamsungAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc.html deleted file mode 100644 index 5c2cdc782..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc.html +++ /dev/null @@ -1,1599 +0,0 @@ - - - - - - - -IRremoteESP8266: IRSamsungAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Samsung A/C messages. - More...

    - -

    #include <ir_Samsung.h>

    -
    -Collaboration diagram for IRSamsungAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRSamsungAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (const bool forcepower=true, const bool initialPower=true)
     Reset the internal state of the emulation. More...
     
    void send (const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
     Send the current internal state as an IR message. More...
     
    void sendExtended (const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
     Send the extended current internal state as an IR message. More...
     
    void sendOn (const uint16_t repeat=kSamsungAcDefaultRepeat)
     Send the special extended "On" message as the library can't seem to reproduce this message automatically. More...
     
    void sendOff (const uint16_t repeat=kSamsungAcDefaultRepeat)
     Send the special extended "Off" message as the library can't seem to reproduce this message automatically. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSwing (const bool on)
     Set the vertical swing setting of the A/C. More...
     
    bool getSwing (void) const
     Get the vertical swing setting of the A/C. More...
     
    void setBeep (const bool on)
     Set the Beep setting of the A/C. More...
     
    bool getBeep (void) const
     Get the Beep setting of the A/C. More...
     
    void setClean (const bool on)
     Set the Clean setting of the A/C. More...
     
    bool getClean (void) const
     Get the Clean setting of the A/C. More...
     
    void setQuiet (const bool on)
     Set the Quiet setting of the A/C. More...
     
    bool getQuiet (void) const
     Get the Quiet setting of the A/C. More...
     
    void setPowerful (const bool on)
     Set the Powerful (Turbo) setting of the A/C. More...
     
    bool getPowerful (void) const
     Get the Powerful (Turbo) setting of the A/C. More...
     
    void setBreeze (const bool on)
     Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree. More...
     
    bool getBreeze (void) const
     Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree. More...
     
    void setDisplay (const bool on)
     Set the Display (Light/LED) setting of the A/C. More...
     
    bool getDisplay (void) const
     Get the Display (Light/LED) setting of the A/C. More...
     
    void setIon (const bool on)
     Set the Ion (Filter) setting of the A/C. More...
     
    bool getIon (void) const
     Get the Ion (Filter) setting of the A/C. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
     Calculate the checksum for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (const uint16_t length=kSamsungAcStateLength)
     Update the checksum for the internal state. More...
     
    - - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    SamsungProtocol _
     
    bool _forcepower
     Hack to know when we need to send a special power mesg. More...
     
    bool _lastsentpowerstate
     
    -

    Detailed Description

    -

    Class for handling detailed Samsung A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRSamsungAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRSamsungAc::IRSamsungAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRSamsungAc::calcChecksum (const uint8_t state[],
    const uint16_t length = kSamsungAcStateLength 
    )
    -
    -static
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRSamsungAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSamsungAc::checksum (const uint16_t length = kSamsungAcStateLength)
    -
    -private
    -
    - -

    Update the checksum for the internal state.

    -
    Parameters
    - - -
    [in]lengthThe length/size of the internal array to checksum.
    -
    -
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSamsungAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSamsungAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getBeep()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getBeep (void ) const
    -
    - -

    Get the Beep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getBreeze()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getBreeze (void ) const
    -
    - -

    Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree.

    -
    Returns
    true, the setting is on. false, the setting is off.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1062
    - -
    -
    - -

    ◆ getClean()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getClean (void ) const
    -
    - -

    Get the Clean setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getDisplay()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getDisplay (void ) const
    -
    - -

    Get the Display (Light/LED) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRSamsungAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getIon()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getIon (void ) const
    -
    - -

    Get the Ion (Filter) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRSamsungAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getPowerful()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getPowerful (void ) const
    -
    - -

    Get the Powerful (Turbo) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getQuiet()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getQuiet (void ) const
    -
    - -

    Get the Quiet setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRSamsungAc::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    bool IRSamsungAc::getSwing (void ) const
    -
    - -

    Get the vertical swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    -
    Todo:
    (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRSamsungAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSamsungAc::send (const uint16_t repeat = kSamsungAcDefaultRepeat,
    const bool calcchecksum = true 
    )
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - - -
    [in]repeatNr. of times the message will be repeated.
    [in]calcchecksumDo we update the checksum before sending?
    -
    -
    -
    Note
    Use for most function/mode/settings changes to the unit. i.e. When the device is already running.
    - -
    -
    - -

    ◆ sendExtended()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSamsungAc::sendExtended (const uint16_t repeat = kSamsungAcDefaultRepeat,
    const bool calcchecksum = true 
    )
    -
    - -

    Send the extended current internal state as an IR message.

    -
    Parameters
    - - - -
    [in]repeatNr. of times the message will be repeated.
    [in]calcchecksumDo we update the checksum before sending?
    -
    -
    -
    Note
    Use this for when you need to power on/off the device. Samsung A/C requires an extended length message when you want to change the power operating mode of the A/C unit.
    - -
    -
    - -

    ◆ sendOff()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::sendOff (const uint16_t repeat = kSamsungAcDefaultRepeat)
    -
    - -

    Send the special extended "Off" message as the library can't seem to reproduce this message automatically.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036
    - -
    -
    - -

    ◆ sendOn()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::sendOn (const uint16_t repeat = kSamsungAcDefaultRepeat)
    -
    - -

    Send the special extended "On" message as the library can't seem to reproduce this message automatically.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036
    - -
    -
    - -

    ◆ setBeep()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setBeep (const bool on)
    -
    - -

    Set the Beep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setBreeze()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setBreeze (const bool on)
    -
    - -

    Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1062
    - -
    -
    - -

    ◆ setClean()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setClean (const bool on)
    -
    - -

    Set the Clean setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setDisplay()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setDisplay (const bool on)
    -
    - -

    Set the Display (Light/LED) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setIon()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setIon (const bool on)
    -
    - -

    Set the Ion (Filter) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setPowerful()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setPowerful (const bool on)
    -
    - -

    Set the Powerful (Turbo) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setQuiet()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setQuiet (const bool on)
    -
    - -

    Set the Quiet setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSamsungAc::setRaw (const uint8_t new_code[],
    const uint16_t length = kSamsungAcStateLength 
    )
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - - -
    [in]new_codeA valid code for this protocol.
    [in]lengthThe length/size of the new_code array.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setSwing (const bool on)
    -
    - -

    Set the vertical swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Todo:
    (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRSamsungAc::setTemp (const uint8_t temp)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]tempThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSamsungAc::stateReset (const bool forcepower = true,
    const bool initialPower = true 
    )
    -
    - -

    Reset the internal state of the emulation.

    -
    Parameters
    - - - -
    [in]forcepowerA flag indicating if force sending a special power message with the first send() call.
    [in]initialPowerSet the initial power state. True, on. False, off.
    -
    -
    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRSamsungAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRSamsungAc::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRSamsungAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRSamsungAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRSamsungAc::validChecksum (const uint8_t state[],
    const uint16_t length = kSamsungAcStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    SamsungProtocol IRSamsungAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _forcepower

    - -
    -
    - - - - - -
    - - - - -
    bool IRSamsungAc::_forcepower
    -
    -private
    -
    - -

    Hack to know when we need to send a special power mesg.

    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRSamsungAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ _lastsentpowerstate

    - -
    -
    - - - - - -
    - - - - -
    bool IRSamsungAc::_lastsentpowerstate
    -
    -private
    -
    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.map deleted file mode 100644 index 8d4aabf8c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 deleted file mode 100644 index 0132e2b98..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -83b0e47ec039fa39ca0df95e295c598a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSamsungAc__coll__graph.png deleted file mode 100644 index 2ba7e73a621a70f517a2431e519aaf1ccf51a429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7008 zcmaKx1yEGs+Q&fz=~7BcNeSstmN2LlSQMm7xCOeDJEgn3yT6xv zzx&OdJ9oZe*qzyP=A3t*^F06e|Nm{kTbK+1?n7KOG&BOJtfUfn-va*#Y%K7Ku^`n7 z-mnbhWF*mUZvT=|84+k`)MQY}m+xKTx29aR-ydC{?u}46n@|=IzxS6C2+^|Xb7Ir3 z*#0d1UOP`M?<{lk1Y>Dg<>Q%!hK0os{VNbbz7e%ePeFCEm$=4Ca_GjU@-llswN5^&5Q&mI+gu zJG;B3kW9FEcnW3m|2T;SI*v!dMNCTS9TbFTJzk>Ugt8r+4^sfUyq{P%lQ=Fz9mL7 z{p>f}Jw7&RM>1bt2iAka@i;8Y-??+AZ_V-a{M>$Xlvg!hH>A265*ivRdUJU|86ut5 zGhS-BcYG|JJw!@OT)#G$5yc0G!;iNnGCX=ZI$j}}0)v90j>);SWj}m)9f3obSJfcqDG_;Uw~kj5XBO{?67 zSwbSI?rO`nqM~AUeZ52CdXFeiyYf!`7o7XgoYo)oiXPx2nffyn=|4e+(JS1J*u%ra zUEJLV(-o-G72>4L&COBkWmurPU;O+Sp`@n0i7M$cSv!>YSPYDedxwWj?d<`{$&UsG z2c!0@j}qeJX}rC?BWsHdTL~lb)lwpco14G(BtVK?_6$hx->>w#a?5p{Uswn?j_v4p z>+3Ty zGk@HjeaXkiw>nO&q>6t>d*2A{^O^gM(AV1TFgW;cdFY4*_T* z1fIv)Srm^%GFX;so`FI+am{phD@<3z^Y@?g^DAR5{`$p`h8oIN<5*J5(+)>}&cPuE zd-Dc~UYVTyf^DV_fe0}NqZz@-$Y`t)y@W)Py0!#U75Vu1#K*;Db0R=fzqtyc;O_Vo z|KrDRd5HUQ4u0ErE*&H|`|9#?Q6Wxfs2b+xR)yaNg+fb*>%_N?wx_go>%2S@W@fg6 zX(6g~5N9i&b%6(uTAP~wx?j)Ske7>Nbaal7Ylen}sdeo9h1(oOfVMW)baE=q8QF+B z10NwHB8*@3bapCtoNP^~WlIdT((c>EK|{@_CMQo%>TVR2lt{mR{VM-MAfT`BEg_vK z_M|9tky^ek7o^W%sLLk%$Fu&sBVx{Rq!&c3s8Mlq6OweDi{Rn9w z&cWQZr+3uU)Y2v!8(+I7#l{Atr7`R3>UNaC5=7XHohr2wN=gJcIXQRt_RQ_3qPK^6 zt-ZX&|NQyGsaq4XzHTww-OSPlm0 zaAziIch}C|-oCA?%Lp`eFeR@y5Lk@9T2J?$_~$8?ywzH?L_|bDtztx+*d=Z*`I(uS zbM)#GPft(XN=G!GJ%7$?Im{W&rPBd)V|x@XDk@4TXz@TfU4E|ND_&$&)W`WIoL8@2 zWoBkpSZaxji;M0x-ItVB;x?B@TalS=V)W3*nE%$i-<1x z`*#WswLGKwrhwHWH?SqQulA=<4=sN}#{f$<0GnWm`Jk_$<#2)Zgpi{MEgFYvPBN%4 zc#vSd4<~iyni1fvErU0#>U1#`quJ1O@XL7 zZjDEgFiOwP&o>;d4aV{r;|d809a(U&uweQ8`4kpL^z!A)FJHgLdVPIphc;=kHI34; z8B7nUY~-n4envc`G-dv1y=-K#%mge86@2^UcnR6!DmQYimA*7L-njgc+IsE zRJIib_p9^k3#yXpeqNsz#0oEAS)g70@>PX4rKRpDE@+0F1ad5~cx`4jUayHk3$q;VZBLpPzabw(hJ^3oYuy3gZINnL-SR}V1cl+w_eH2x@ z*p!DN%$6-!g^%qbZ+6us9bk_C{eb8i!&U?Mj#lTXR1^WWZ z!Yrt$7lL|s<1k=hSKXK=UT&ngSk7yrGC+W zI4mUKYi{qz%B(fJ#PFL{#M4bu$}^)1(8{bisR~9TBCn*Fn#=Q6nx@tGE_brmWXVa< z@kH0-(=eGiA32A`MY_|AO|ew&Uj@p4JWC9SpV57>3|BkrwA3A4)l#*ehHa>Knk?@5 z6PitEWnHHpEjJX`F%E0uX;*J_(Y}cwX$8TAYd%Jm`0qdSk?g<8NnF4rJ%KiqT^LT; zt=TcnkVl~w3&AhG51o*Yca!kDI#9~0;74v201?I?V!Bj(XyZxaVpQUQS_d-fM?ft!xzg74I$pb9 z9!wIp`s$x)4Ymrg?MK@-dypAa^vfZqSafdpS7P+j-(q515I%g2g=yB(HCWI0+9*v4 zxjXB>F~S_~o*s2}rf#ws^pPrV(h-}6f0i9L$=Kn9J8tDb)nj};;;M1W$kq5co>j32 z+34q09NCQOJh-WFpG=VYPfdIdgeMYdvhZaV-!m*Y-0p$`2z}y!E7~d zlkOkQ(NDE1JkI#?>#jxm`};d;{+pMk47s6wGFjuw-}#-JRap3YK>-hoVq%VH`v>6n zN5{vJ@$vH7+BCNb5ju>Xd7hp(19T#heqMtN!)<=(k5lK)S4 zty^Riu>YKyS!&p#bU&8g)MBW+t1A-yIRv5=tE!{(bmPd)_1-5vdU&|Z2eA74 z`zI$Se~OHJu-qMIS~My(fSWt;-wjMv9L1pRbWLoYPBouF6SlUtb_}o@z)1aRN%yMW z0PX<9Ne>SXY+PIhPR=f)!l0m8%$GV%Qo9!RsLVjTYOXj4end9A@czN^E2EF&PALCW zmGDi&k!Oc*L}F#~*avS7G)a#{ZMuA{LG1_X*|y*Ex1zVv9Ch@gjycD{(0|G>3QUEx z^Sp|*jD$C;`22=BvZ^k|^Bo($&XUhceYC^ty$jh*y6oK)Vy2k?iN!_N^CF7IrD620%K?8-untkxH z>alsV0C3ieE%&w6y z3my@S*oe?wR9i-rPWWm%%QU0=cSl^7YwC z1(_`5ZE!1^i~#wO$D%f4%If(3=1}th+Cbn=moFlZF15Pyq}1&)O+= zTYgEA2?Hd+e4A$*s*+CoUQXRDYU+TG9roN{Xy}u)mUTnh4_KYol^tAdjx9RGv%%U@ z$azyeHV#g&I+Yz~h!}fSWc8PiuE2)XeO$ue*r{?vO9Dxb_~#D0yStAV7+#%ufWU!fWo2dO;9v-% z13sOodR9bKR5Nh=&*0lMDk>^~IPsYeFo6$DqMgjxlRWluZiN=aB79nrzmszU)CO`B z_`y{CzF)rFt-airOLSXj1Hvn9Vewmuj*RRp&>DJ=U34&#UwnP{$4rxAdFL+_qm66N z*Es-rY6m0SMGGrtC@bmq4+$Xvc%$Z^2a=kaI=i){@a`Q6*cc4<=9^2bC&xZ#gO|}>4>bX?1!0J&zk)X4v&ki za++s$$t|LOMD#2S4BiP4`25C3XO2ekZCC|dDo3k4lu;(sZnf|6?DF=h`wptr8xwD| z)RKa`X7|p;$&PJb)$LVodE(||Wdz7_g^p`Vi!)qPx-~Amnz_+{gGP?%x`&|LPlkWf zQ&7m5nLUY)juyQ-9BgWB9eJWx<;Vt*%`G-tT{Ww6Tx$S%zAu?_=na!Ke*u7ZSOgE7 zcIO&hcTgwlV0*NO2inn47>1;>I(i zs6R#KV7HOT(A2aQKwCC|R76E-?%lgLIW@I5luZHdi>9uw{=wWl0EH489v%i=yWfDv zEnt?=5=tvKlBWZ(^jtpTiUVZaTh0gY5I~5nplv}q{slPo?e`X3*9C`CQ<;`>(%z*= ze+0E+XJcdwQH zU`67FDr9+i<~{go0D*jttN!YKyg8TlU3Wf2csf}ojE+Xs6(x!6z(C5jC=QvNbk3 ziY9z=i@ytti>2*ySpcPotp!S+*;|d@&wGqkeVJdCno@I&UUl)=najHS$Q^- zQNmyh43|2hYHqGC4mZalsQ68uK&=f8Q)=!#;o{0Wu}?@y0FMW(RWdd@A|j>cyK(GP zHT$&;Ym^dRqPOw_MCSoHIUnNM z1CaLaQp=GiPoFY#afJdHOXs>s0v^dXW2#)$pr|OamEI&)A)&H&yth0TxZrOI2?{DI zWYQ_&K%+hgOxGanGhhj)%W<|~&=!}L3T>vU+_)#YyF(%307T~$Ac4qz zz(z4<*VZ&rbWgUYKubMlX2t||>HK)Bvm=TFs;HPzQWAN3>H>bt7|%RX#RIOi4^Wn@ z%*@%1{JNI0u~^VGB(${Msn7^YVH=vgy}gcA>uTq%7$NJ2`L*ZlU;r1V;4^86o9hsZ zI?x7yt^E4+3!9LTMMx<6yRI7!1Oh?3h2&5u4nR)EKxOaVy(?gL7DWEE;R6p35MrQD zoxo?K7Zep4fWAHiCQ_AFPEOA4coPbIDjFU+XZ^%P+;fLzo{#gAT-p^cdK1N{OQ$U! zZ?}wM|NQy$!Gj0>at9CBMhgu&b*f6BH}nv*zDEWI24KnB5vAq~g$9q_nArm|3?^!J z=O5+|IC@4Np1w)_EMHm8pY3O7XM3Qgx6%h>3kMrJ^T?Kd?pSgFR{@qkQf$`G;NbUD z6I|wBzZ(5}DgwXZG_8JQq!n?L9XjbF`zsSqGK6j6#p$0s-s - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRSanyoAc Member List
    -
    -
    - -

    This is the complete list of members for IRSanyoAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRSanyoAcprivate
    _irsendIRSanyoAcprivate
    begin(void)IRSanyoAc
    calcChecksum(const uint8_t state[], const uint16_t length=kSanyoAcStateLength)IRSanyoAcprivatestatic
    calibrate(void)IRSanyoAcinline
    checksum(void)IRSanyoAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRSanyoAcstatic
    convertMode(const stdAc::opmode_t mode)IRSanyoAcstatic
    convertSwingV(const stdAc::swingv_t position)IRSanyoAcstatic
    getBeep(void) constIRSanyoAc
    getFan(void) constIRSanyoAc
    getMode(void) constIRSanyoAc
    getOffTimer(void) constIRSanyoAc
    getPower(void) constIRSanyoAc
    getRaw(void)IRSanyoAc
    getSensor(void) constIRSanyoAc
    getSensorTemp(void) constIRSanyoAc
    getSleep(void) constIRSanyoAc
    getSwingV(void) constIRSanyoAc
    getTemp(void) constIRSanyoAc
    IRSanyoAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRSanyoAcexplicit
    off(void)IRSanyoAc
    on(void)IRSanyoAc
    send(const uint16_t repeat=kNoRepeat)IRSanyoAc
    setBeep(const bool on)IRSanyoAc
    setFan(const uint8_t speed)IRSanyoAc
    setMode(const uint8_t mode)IRSanyoAc
    setOffTimer(const uint16_t mins)IRSanyoAc
    setPower(const bool on)IRSanyoAc
    setRaw(const uint8_t newState[])IRSanyoAc
    setSensor(const bool location)IRSanyoAc
    setSensorTemp(const uint8_t degrees)IRSanyoAc
    setSleep(const bool on)IRSanyoAc
    setSwingV(const uint8_t setting)IRSanyoAc
    setTemp(const uint8_t degrees)IRSanyoAc
    stateReset(void)IRSanyoAc
    toCommon(void) constIRSanyoAc
    toCommonFanSpeed(const uint8_t speed)IRSanyoAcstatic
    toCommonMode(const uint8_t mode)IRSanyoAcstatic
    toCommonSwingV(const uint8_t setting)IRSanyoAcstatic
    toString(void) constIRSanyoAc
    validChecksum(const uint8_t state[], const uint16_t length=kSanyoAcStateLength)IRSanyoAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc.html deleted file mode 100644 index 2535429b6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc.html +++ /dev/null @@ -1,1375 +0,0 @@ - - - - - - - -IRremoteESP8266: IRSanyoAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Sanyo A/C messages. - More...

    - -

    #include <ir_Sanyo.h>

    -
    -Collaboration diagram for IRSanyoAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRSanyoAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kNoRepeat)
     Send the current internal state as IR messages. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t degrees)
     Set the desired temperature. More...
     
    uint8_t getTemp (void) const
     Get the current desired temperature setting. More...
     
    void setSensorTemp (const uint8_t degrees)
     Set the sensor temperature. More...
     
    uint8_t getSensorTemp (void) const
     Get the current sensor temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSleep (const bool on)
     Set the Sleep (Night Setback) setting of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep (Night Setback) setting of the A/C. More...
     
    void setSensor (const bool location)
     Set the Sensor Location setting of the A/C. i.e. Where the ambient temperature is measured. More...
     
    bool getSensor (void) const
     Get the Sensor Location setting of the A/C. i.e. Where the ambient temperature is measured. More...
     
    void setBeep (const bool on)
     Set the Beep setting of the A/C. More...
     
    bool getBeep (void) const
     Get the Beep setting of the A/C. More...
     
    void setSwingV (const uint8_t setting)
     Set the vertical swing setting of the A/C. More...
     
    uint8_t getSwingV (void) const
     Get the vertical swing setting of the A/C. More...
     
    void setRaw (const uint8_t newState[])
     Set the internal state from a valid code for this protocol. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol with all integrity checks passing. More...
     
    uint16_t getOffTimer (void) const
     Get the nr of minutes the Off Timer is set to. More...
     
    void setOffTimer (const uint16_t mins)
     Set the nr of minutes for the Off Timer. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t state[], const uint16_t length=kSanyoAcStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static uint8_t convertSwingV (const stdAc::swingv_t position)
     Convert a stdAc::swingv_t enum into it's native setting. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    static stdAc::swingv_t toCommonSwingV (const uint8_t setting)
     Convert a native vertical swing postion to it's common equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    - - - - -

    -Static Private Member Functions

    static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kSanyoAcStateLength)
     Calculate the checksum for a given state. More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    SanyoProtocol _
     
    -

    Detailed Description

    -

    Class for handling detailed Sanyo A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRSanyoAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRSanyoAc::IRSanyoAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRSanyoAc::calcChecksum (const uint8_t state[],
    const uint16_t length = kSanyoAcStateLength 
    )
    -
    -staticprivate
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRSanyoAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSanyoAc::checksum (void )
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSanyoAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSanyoAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSanyoAc::convertSwingV (const stdAc::swingv_t position)
    -
    -static
    -
    - -

    Convert a stdAc::swingv_t enum into it's native setting.

    -
    Parameters
    - - -
    [in]positionThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getBeep()

    - -
    -
    - - - - - - - - -
    bool IRSanyoAc::getBeep (void ) const
    -
    - -

    Get the Beep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRSanyoAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRSanyoAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getOffTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRSanyoAc::getOffTimer (void ) const
    -
    - -

    Get the nr of minutes the Off Timer is set to.

    -
    Returns
    The timer time expressed as the number of minutes. A value of 0 means the Off Timer is off/disabled.
    -
    Note
    The internal precission has a resolution of 1 hour.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRSanyoAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRSanyoAc::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol with all integrity checks passing.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSensor()

    - -
    -
    - - - - - - - - -
    bool IRSanyoAc::getSensor (void ) const
    -
    - -

    Get the Sensor Location setting of the A/C. i.e. Where the ambient temperature is measured.

    -
    Returns
    true is Unit/Wall, false is Remote/Room.
    - -
    -
    - -

    ◆ getSensorTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRSanyoAc::getSensorTemp (void ) const
    -
    - -

    Get the current sensor temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRSanyoAc::getSleep (void ) const
    -
    - -

    Get the Sleep (Night Setback) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwingV()

    - -
    -
    - - - - - - - - -
    uint8_t IRSanyoAc::getSwingV (void ) const
    -
    - -

    Get the vertical swing setting of the A/C.

    -
    Returns
    The current swing mode setting.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRSanyoAc::getTemp (void ) const
    -
    - -

    Get the current desired temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::send (const uint16_t repeat = kNoRepeat)
    -
    - -

    Send the current internal state as IR messages.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setBeep()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setBeep (const bool on)
    -
    - -

    Set the Beep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    If we get an unexpected mode, default to AUTO.
    - -
    -
    - -

    ◆ setOffTimer()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setOffTimer (const uint16_t mins)
    -
    - -

    Set the nr of minutes for the Off Timer.

    -
    Parameters
    - - -
    [in]minsThe timer time expressed as nr. of minutes. A value of 0 means the Off Timer is off/disabled.
    -
    -
    -
    Note
    The internal precission has a resolution of 1 hour.
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setRaw (const uint8_t newState[])
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]newStateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSensor()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setSensor (const bool location)
    -
    - -

    Set the Sensor Location setting of the A/C. i.e. Where the ambient temperature is measured.

    -
    Parameters
    - - -
    [in]locationtrue is Unit/Wall, false is Remote/Room.
    -
    -
    - -
    -
    - -

    ◆ setSensorTemp()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setSensorTemp (const uint8_t degrees)
    -
    - -

    Set the sensor temperature.

    -
    Parameters
    - - -
    [in]degreesThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setSleep (const bool on)
    -
    - -

    Set the Sleep (Night Setback) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwingV()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setSwingV (const uint8_t setting)
    -
    - -

    Set the vertical swing setting of the A/C.

    -
    Parameters
    - - -
    [in]settingThe value of the desired setting.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::setTemp (const uint8_t degrees)
    -
    - -

    Set the desired temperature.

    -
    Parameters
    - - -
    [in]degreesThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRSanyoAc::stateReset (void )
    -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRSanyoAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRSanyoAc::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRSanyoAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingv_t IRSanyoAc::toCommonSwingV (const uint8_t setting)
    -
    -static
    -
    - -

    Convert a native vertical swing postion to it's common equivalent.

    -
    Parameters
    - - -
    [in]settingA native position to convert.
    -
    -
    -
    Returns
    The common vertical swing position.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRSanyoAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRSanyoAc::validChecksum (const uint8_t state[],
    const uint16_t length = kSanyoAcStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    SanyoProtocol IRSanyoAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRSanyoAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.map deleted file mode 100644 index 0cd6d5d70..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.md5 deleted file mode 100644 index 9aa487400..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a9064796ca7898bebfdffdaa4553bbd5 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSanyoAc__coll__graph.png deleted file mode 100644 index fe6882cd8f6bc682c763c0ccb091f43415947188..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6451 zcmZWu1ys~uw*>_S1f)b7$$`IgHzMWGA%b*wcc(}R3P=nHh;)N6fOL1Lz)%j|-7u8z z@_p~UZ>{&3#T^!N*YDnY?m2t!vnNVTMIH}_0tXEZ4G;QCMgzQ0f!`pk2Vjg9#%%;| z4@?#1WzhcKy}mXVB%+~_Z9rwDUVDGpMf&J#S=_cAj{XSl`v-&mUR7l5pc02vwq}|} zK1*u79J8=WB5#OEvcOga74e|`2i5`@)i9jUWe_@C_PdAMx&QZ&#=-afXJ1P@nn(8^ z_wdqvEu`WYJPvI3ZmzfT$=r9_L(Lt3SJ3#LUN+wY~oUkD@D$-!3h$6hGcL!Tg`$ z1mhgJSktqeX%EBa(V^d1boBJbDvTs=QKLZu@>0T#X9^J--f6Z_(} zK4PO~5W($xVr}o>ARKVXXJcbC1mlgc7)*wVl!}zMp2J|U3lxgmb4Tas=tzk=8EQQz zTT@%hOizDLR{i4kYJXyLzxA&K_?eoT;xg|eP|1=g8+p#o&IA_YVS+1c62?raLRsHZh@h%`PueK1ck z#T&Jna(HmiHZl@N$RJngwQuMFTUanAk(DYKTU=h2c6aBKY-QNAoZahuEV%-9Q=w^P zYD&MhwzhRPIyktzS&-G!-5u_TY&hJh9(6?>tv**3GYNO_XdsJ-hz^*Lblb z9G6l6S5#EA)_&S`j3>)?i?s!{Mj3dVJ`Zjw>;ayw29p`EiEk-H8o7wjoHG& zq7M1KG0!J7DJA8&{UI%wdV72O!a;C7N!xI7`J-fhW#uQYIiHBBDIJfDg9B$GVq#&} z6)X_rlRaem&!1`^E@dSWTx*4mQ`3k$!Ch~RaY;q#DB(}qMTA{!^0z^p^<e7)P)3=A|yHh3r-LO}MS(Q|WG&7D~*1fZj%o1Sh>#5#_>N2BN9D4%m59&HE3 zfrX82a=6q@hWh}`-`_tnHr8VA&yS0%D_*l6+>tNB_g}cW@}TYQ?QQjchr!72(us*l zmVLgvTlQvtU;rmLIvNLrpt7o}hmR>;fC>-KW8H6bc&LGCG=`fgwkQJk~)p_^F|H$nI>NrjAY@z#}d}K?oxwn65JM z=MR;Wlat3yrnq16ak<}q^SK%crl6o;9IfO?xk2LwqAXoxer!zhrnSi8_D>lC3Wc^0 z4VAW^->7UgQl@zkHhS(30FbJ8-z1_9IEfb#XJmYLb9L^v)P)Tynq0)4Wp#Dc+s7w+ zY?FnBQm5#u#GH$<@kdOchsmGX0OW;!}Le~?ThPoAiQVk_1v zc?E^iJ$v>7`QD(xJsVshBO@aLF|ph1Y12W+BQ~R!FW~TL>zRHk8FM-EkKf}{E6B)T zfMDbn6dW(ba1xP_$eiyX_Y0MkS*!id_r8exy}9{XKOvHtnThf6;azeCULVRUC@APO z`||sp?flBc6C5)&;u}rlk2yMWMU?6F=6sZh4hy?4B_$;!A_73D6a2FZ4#%`r?Ep_y zR#PM3;NTbn^FfW9+1O0yHY_bIv9PmuPfn%)wC(8Zgxl-JxOjQ3pSS)McWS*6XlZHj z_VxYldun_4d;oQEb#;P+DVz{CHe5eHzqKJ)=f&Z&Q)4CoId>82&WOj_jjEG?uT1Rh z6k7vt4vvpIk;sf#O2Ij;Mn|o+CZFS}Iw#sUZ{BRNER`Wp7t0@i{Jp&*7j|V7_dQui zcWN;Kh?54-Ru|0tjO>3V?>9m5P+0e+g+*RHh@FhReQA-j4X^d46n>Ed(aQsX#>N&F z-S4o8m8ezHCpYj?G?X^#9t!4)LWq@$moJ^0$HmN_sweO<5-a^@uzk~G zi_)W)oZNWU3l6Bq6E~~j@f$tH=yUeAMwyK`IXStvx3{&Syxkl^nfdFInzo3fD|z>f z@s_o2tQ@iZz-Lx=@?Hm@aUXishMN$6)<;4?tM&OFcStsNL`+1ads^#=^C*LfHz0Y@ zZY(K9;xemdb{ppHaV<}AzmQ_n``_|C&0;7*%tl9;<4R9$ zs<9EsQGAnYBW7#{tel0e0XF<0=+caqa6(@A3TO26)A)DU1ChVf&J%~KB9tmA;nNsy zC#ZcN9r4f)X4=!JlaKl;pC>2y3*4%F{11z1)ENkR8jeLoQw5I#-R&I&?#>`3N@8%6 z70XS5Vew%UiuW~0jQf9RYVzW9(0GAkJ#H@|3M7BjAw|9wH~`WLHV3dTPz7R<8G_c zWz}^r`9ABRWMK18rl7LPzaxKQ^=259(3VH~ZoDSa1x)*sC@XQAY1Ql2X+8!#E5x ze6B~u$!fbOyOpHW3*GkYcI`vLJ)~g}I0`vB+sM5 zBfkAXjsE6qitxzR3(_N&pFZ1s{3QN(SF5LdJAAOheuKLs4;0Y9gb`- zDW4d!^cJOfAfxV`4J&-(yP{Y&^D{#f4bzq?=jRXfokgv?`2CE_uJD_HX}^6f-Mvad z6|gF-BR$h?sLlBUjfCv`&&2Odwk-yUV@FbO1}ns>##{TgznFEtASKcUR~n)`A^OfchwT)O`qvhmZ6S>>ZqHda@yv%(O_Ls@kemU<7paKeFOcz~{}{Fn)Gsg6!J~+eY(4$1Xm$B92FC=|GL$xG2XR4HAhhc8@2HiPhxiY zjxqQYh1tu#*S}8;8vb^kIO6_2u`ZJ@1>X;2491EZfQ-4O9YmSfwG?%7|G0QUp89sn z+t|`eGvar-`xHjl41^BvBKA2%+tP)px%llsQ&o%*km95q`hArqot4$qW`oJ>O#p5$ zE-sAC%sM~ONecyB)-?Fr*s!Xrs{=}3Tv&JkBsySTj{(13_#~j(uDQ8P!)9NXg9Ry% zKu=GB_V)Iv+1ar=CnL|DDVM?2>Q+`Jn|TYGOfODS1hsF9b>O!!-f^<-k%AzS#vm_s ztYu`%Qv!l#Zz>GSTK48!Tb(^To&e2C%+Jri)Dixuqod>H^}6I=!Y5Cj&`U@dHXRK- z-#W_9&ZcK!c?BpJuq(Y`Aj*QYRTMi<)vSdOAEa&-(_=f`7c#GnxT5BI$ z>Q$wf!*-IF#wMkvE^7hOrK6`u4sdVnTm$F_?-78uXp1kb{TWa*6RTI}`j3ho;o)>;p`MXd`eS8CE)M!{Qe-{|+3HXO?-#wOgLxBd9Y|B?MT zyVoo(?eqTTX3_0F=xFTi*+5s;JwKmC&THwsHbjn=keG<>?Byk|PC_CJ6xoO8+U1`T z622ubE-ih#b+XX%BXpFN#RQZD8nAKL{`U5)wZ2@~v(s1Hw?WRGBW0S^HCn|bopJPY zeWGfOy$!5_V$}RVyM6jZ@Ij6tUC_yL<7c+HmDTdFOd{~9P1{2;K~&WZ3}V}jzkd66FXvZeK>-8^ zJB!PcP5mbCc%VR3GR2_Q)+}0Dbu{k|Pfu5YoMYzUNw~iDKk*emULS4U6tT?sJd+iY zzz0wxT>Nq)M@UGBfP~~-P7VV%H@7{q;fdbt%)?{*KlSl*&3?q-lbD!C)t1AiU=bZ% zU4f$O`g$P+MMdy*CLy6z&}p%!Gay5oXzwWf!d7k3q+bgiLHQY`j9@ z)r{Bl_^&_kEKkydn>GFNr2cuR9h9ftv152Xt|hU7=&y=gM!Bh;8(8pNs?w$8w!-%O;`6csEWay8iIJyd-1kajx zxi=0KB^SGCR5+Zkxpwd>(r+U(bMaut$_r~w^7GgRQATsM4biCeL6oBdKDzqepD|4d zp>dKGc%<@)+Go)`;mLZ>?qIkkrMFyTaLzBAderRUAnQ@pWIlbw=4@5M_&;o=9$QZN zPb6m*=+E4QN4W{=hu?KSgN#=0+yoh)0rx4{IoD*FPoqCkJ;>pg&M{&CjY^?IHxRn zO*(OKaYU2qk${bu>BDGLTzez(zGV%%rOm`XrzLjf!qIO;!YejIneKQrxPo}ati$UJ zxI$t%L-@>d(Bnz9ioxp202@uTYo~Zyi|p2C$1J5vOP&oTu#RqiiH@P#@M1WtH~!|! z)*>Wdg=&KvPkUO_U3?$yGi}STYV%gu=%(Bn6DFTo;_5A79@Ug+B~H={R2M(z*O{>k zN_^?@1O1U5>eU=Vlq&+}qmzO8T$G3yFLda{63P9zZWdgeS-@qJ7tjXq1 z7jQ7$oq-Q!NoGMZy*tJi-K~$X&UlHLl@<;bJFmBm{+bS@ayOyY((n4FZM^GAo-NuMIPQsF$F_$O%CLe3osM&Ykhs{#)kDvX=&hbt(MizEdi^> z10n3PgyHGw*>v(-ab;y?92Jbl!pUj1I*O!8VrK;E`gqi5IaW}}c>&D`FiM66 zK9x`#@E=A;GDPn>5a1igVzoySGJwsk{`ujy^}W$+zXu?+BhuEX_9S__!LP|8yNvD8t+i1I3;jKfVGs$Z%5kuk+z_+k{}omFX$2PZV(Ls`D#f;%eUfUoZzM= zv6kCQJ428%O-)UeaQGe6wue2mtCq@(6Ycx;37eQ1Yz^w-0x+8!*ij)7G`?6FE5SnmC3W@(wfckScjlL~_^ZfzBp@9*v5zX%MJP*G9YK{lp<{mFeGQ!f|+ z%_gtyIE$;R>(5R1`X4{|X9W@+RcP8N78VxT!1eVH4Xsp>EdXR^UkI)=HmNd2y9HiG@Z9MS16FLgvb ztGv9t=o>Te=P$9&_K<_XaTWHzsJuJ}`sM8|b3;ReDIZ1uz(B*8G6RwsW*iHmX90Rd z`Wwpa>?QFT% zpL&AL+ub5n3TIv9{+1nO>VIb)4mIGeh((>}YqZu?d0o#)p1iPTPI2t%Gi#t0*Q&nbB zz{}biFH*`BgNgf{9RRc-l$4azH!!%fK^2qPOing_UGF*tnE@eDXRyxjQ7lxYz^pA8 z-S+80gKP|`324Qgg0A!|N4`W=SM!2%JhYXkyMOQAR+1GckG7Ee)6IT@Xpf$9boKT| z_#Ceh0G1O-)lyPS*HkpL*9D^YKFUshJrbr#UeXXKCBnmBy)PDk0~#ak^K-O8-Ig ze?j_xhTW|g%c9kqM5LVCu4SqO2geAQuOYs>hQ$mmix+#C$cWbux`BTWu={mE+Fu!= c%13`ql(tIbvTfzTw;*UxSrwV`m&T$01wdTzumAu6 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc-members.html deleted file mode 100644 index acade3c91..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc-members.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRSharpAc Member List
    -
    -
    - -

    This is the complete list of members for IRSharpAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRSharpAcprivate
    _fanIRSharpAcprivate
    _getEconoToggle(void) constIRSharpAcprivate
    _irsendIRSharpAcprivate
    _modeIRSharpAcprivate
    _modelIRSharpAcprivate
    _setEconoToggle(const bool on)IRSharpAcprivate
    _tempIRSharpAcprivate
    begin(void)IRSharpAc
    calcChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)IRSharpAcprivatestatic
    calibrate(void)IRSharpAcinline
    checksum(void)IRSharpAcprivate
    clearPowerSpecial(void)IRSharpAcprivate
    convertFan(const stdAc::fanspeed_t speed, const sharp_ac_remote_model_t model=sharp_ac_remote_model_t::A907)IRSharpAcstatic
    convertMode(const stdAc::opmode_t mode)IRSharpAcstatic
    getClean(void) constIRSharpAc
    getEconoToggle(void) constIRSharpAc
    getFan(void) constIRSharpAc
    getIon(void) constIRSharpAc
    getLightToggle(void) constIRSharpAc
    getMode(void) constIRSharpAc
    getModel(const bool raw=false) constIRSharpAc
    getPower(void) constIRSharpAc
    getPowerSpecial(void) constIRSharpAcprivate
    getRaw(void)IRSharpAc
    getSpecial(void) constIRSharpAc
    getSwingToggle(void) constIRSharpAc
    getTemp(void) constIRSharpAc
    getTimerEnabled(void) constIRSharpAc
    getTimerTime(void) constIRSharpAc
    getTimerType(void) constIRSharpAc
    getTurbo(void) constIRSharpAc
    IRSharpAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRSharpAcexplicit
    isPowerSpecial(void) constIRSharpAc
    off(void)IRSharpAc
    on(void)IRSharpAc
    send(const uint16_t repeat=kSharpAcDefaultRepeat)IRSharpAc
    setClean(const bool on)IRSharpAc
    setEconoToggle(const bool on)IRSharpAc
    setFan(const uint8_t fan, const bool save=true)IRSharpAc
    setIon(const bool on)IRSharpAc
    setLightToggle(const bool on)IRSharpAc
    setMode(const uint8_t mode, const bool save=true)IRSharpAc
    setModel(const sharp_ac_remote_model_t model)IRSharpAc
    setPower(const bool on, const bool prev_on=true)IRSharpAc
    setPowerSpecial(const uint8_t value)IRSharpAcinlineprivate
    setRaw(const uint8_t new_code[], const uint16_t length=kSharpAcStateLength)IRSharpAc
    setSpecial(const uint8_t mode)IRSharpAc
    setSwingToggle(const bool on)IRSharpAc
    setTemp(const uint8_t temp, const bool save=true)IRSharpAc
    setTimer(bool enable, bool timer_type, uint16_t mins)IRSharpAc
    setTurbo(const bool on)IRSharpAc
    stateReset(void)IRSharpAcprivate
    toCommon(void) constIRSharpAc
    toCommonFanSpeed(const uint8_t speed) constIRSharpAc
    toCommonMode(const uint8_t mode) constIRSharpAc
    toString(void) constIRSharpAc
    validChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)IRSharpAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc.html deleted file mode 100644 index b9f9f330e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc.html +++ /dev/null @@ -1,1897 +0,0 @@ - - - - - - - -IRremoteESP8266: IRSharpAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Sharp A/C messages. - More...

    - -

    #include <ir_Sharp.h>

    -
    -Collaboration diagram for IRSharpAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRSharpAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void send (const uint16_t repeat=kSharpAcDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void setModel (const sharp_ac_remote_model_t model)
     Set the model of the A/C to emulate. More...
     
    sharp_ac_remote_model_t getModel (const bool raw=false) const
     Get/Detect the model of the A/C. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on, const bool prev_on=true)
     Change the power setting, including the previous power state. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    bool isPowerSpecial (void) const
     Is one of the special power states in use? More...
     
    void setTemp (const uint8_t temp, const bool save=true)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t fan, const bool save=true)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode, const bool save=true)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSpecial (const uint8_t mode)
     Set the value of the Special (button/command?) setting. More...
     
    uint8_t getSpecial (void) const
     Get the value of the Special (button/command?) setting. More...
     
    bool getTurbo (void) const
     Get the Turbo setting of the A/C. More...
     
    void setTurbo (const bool on)
     Set the Turbo setting of the A/C. More...
     
    bool getSwingToggle (void) const
     Get the (vertical) Swing Toggle setting of the A/C. More...
     
    void setSwingToggle (const bool on)
     Set the (vertical) Swing Toggle setting of the A/C. More...
     
    bool getIon (void) const
     Get the Ion (Filter) setting of the A/C. More...
     
    void setIon (const bool on)
     Set the Ion (Filter) setting of the A/C. More...
     
    bool getEconoToggle (void) const
     Get the Economical mode toggle setting of the A/C. More...
     
    void setEconoToggle (const bool on)
     Set the Economical mode toggle setting of the A/C. More...
     
    bool getLightToggle (void) const
     Get the Light toggle setting of the A/C. More...
     
    void setLightToggle (const bool on)
     Set the Light mode toggle setting of the A/C. More...
     
    uint16_t getTimerTime (void) const
     Get how long the timer is set for, in minutes. More...
     
    bool getTimerEnabled (void) const
     Is the Timer enabled? More...
     
    bool getTimerType (void) const
     Get the current timer type. More...
     
    void setTimer (bool enable, bool timer_type, uint16_t mins)
     Set or cancel the timer function. More...
     
    bool getClean (void) const
     Get the Clean setting of the A/C. More...
     
    void setClean (const bool on)
     Set the Economical mode toggle setting of the A/C. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t new_code[], const uint16_t length=kSharpAcStateLength)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::opmode_t toCommonMode (const uint8_t mode) const
     Convert a native mode into its stdAc equivalent. More...
     
    stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed) const
     Convert a native fan speed into its stdAc equivalent. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (uint8_t state[], const uint16_t length=kSharpAcStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed, const sharp_ac_remote_model_t model=sharp_ac_remote_model_t::A907)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Private Member Functions

    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void checksum (void)
     Calculate and set the checksum values for the internal state. More...
     
    void setPowerSpecial (const uint8_t value)
     Set the value of the Power Special setting without any checks. More...
     
    uint8_t getPowerSpecial (void) const
     Get the value of the Power Special setting. More...
     
    void clearPowerSpecial (void)
     Clear the "special"/non-normal bits in the power section. e.g. for normal/common command modes. More...
     
    bool _getEconoToggle (void) const
     Get the Economical mode toggle setting of the A/C. More...
     
    void _setEconoToggle (const bool on)
     Set the Economical mode toggle setting of the A/C. More...
     
    - - - - -

    -Static Private Member Functions

    static uint8_t calcChecksum (uint8_t state[], const uint16_t length=kSharpAcStateLength)
     Calculate the checksum for a given state. More...
     
    - - - - - - - - - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    SharpProtocol _
     
    uint8_t _temp
     Saved copy of the desired temp. More...
     
    uint8_t _mode
     Saved copy of the desired mode. More...
     
    uint8_t _fan
     Saved copy of the desired fan speed. More...
     
    sharp_ac_remote_model_t _model
     Saved copy of the model. More...
     
    -

    Detailed Description

    -

    Class for handling detailed Sharp A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRSharpAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRSharpAc::IRSharpAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ _getEconoToggle()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRSharpAc::_getEconoToggle (void ) const
    -
    -private
    -
    - -

    Get the Economical mode toggle setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    -
    Note
    Shares the same location as the Light setting on A705.
    - -
    -
    - -

    ◆ _setEconoToggle()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSharpAc::_setEconoToggle (const bool on)
    -
    -private
    -
    - -

    Set the Economical mode toggle setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Warning
    Probably incompatible with setTurbo()
    -
    Note
    Shares the same location as the Light setting on A705.
    - -
    -
    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRSharpAc::calcChecksum (uint8_t state[],
    const uint16_t length = kSharpAcStateLength 
    )
    -
    -staticprivate
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated 4-bit checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRSharpAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSharpAc::checksum (void )
    -
    -private
    -
    - -

    Calculate and set the checksum values for the internal state.

    - -
    -
    - -

    ◆ clearPowerSpecial()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSharpAc::clearPowerSpecial (void )
    -
    -private
    -
    - -

    Clear the "special"/non-normal bits in the power section. e.g. for normal/common command modes.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRSharpAc::convertFan (const stdAc::fanspeed_t speed,
    const sharp_ac_remote_model_t model = sharp_ac_remote_model_t::A907 
    )
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - - -
    [in]speedThe enum to be converted.
    [in]modelThe enum of the appropriate model.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSharpAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getClean()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getClean (void ) const
    -
    - -

    Get the Clean setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getEconoToggle()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getEconoToggle (void ) const
    -
    - -

    Get the Economical mode toggle setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    -
    Note
    Available on the A907 models.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRSharpAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getIon()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getIon (void ) const
    -
    - -

    Get the Ion (Filter) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getLightToggle()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getLightToggle (void ) const
    -
    - -

    Get the Light toggle setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    -
    Note
    Not available on the A907 model.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRSharpAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getModel()

    - -
    -
    - - - - - - - - -
    sharp_ac_remote_model_t IRSharpAc::getModel (const bool raw = false) const
    -
    - -

    Get/Detect the model of the A/C.

    -
    Parameters
    - - -
    [in]rawTry to determine the model from the raw code only.
    -
    -
    -
    Returns
    The enum of the compatible model.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getPowerSpecial()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRSharpAc::getPowerSpecial (void ) const
    -
    -private
    -
    - -

    Get the value of the Power Special setting.

    -
    Returns
    The setting's value.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRSharpAc::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSpecial()

    - -
    -
    - - - - - - - - -
    uint8_t IRSharpAc::getSpecial (void ) const
    -
    - -

    Get the value of the Special (button/command?) setting.

    -
    Returns
    The setting's value.
    - -
    -
    - -

    ◆ getSwingToggle()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getSwingToggle (void ) const
    -
    - -

    Get the (vertical) Swing Toggle setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRSharpAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTimerEnabled()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getTimerEnabled (void ) const
    -
    - -

    Is the Timer enabled?

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTimerTime()

    - -
    -
    - - - - - - - - -
    uint16_t IRSharpAc::getTimerTime (void ) const
    -
    - -

    Get how long the timer is set for, in minutes.

    -
    Returns
    The time in nr of minutes.
    - -
    -
    - -

    ◆ getTimerType()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getTimerType (void ) const
    -
    - -

    Get the current timer type.

    -
    Returns
    true, It's an "On" timer. false, It's an "Off" timer.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::getTurbo (void ) const
    -
    - -

    Get the Turbo setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ isPowerSpecial()

    - -
    -
    - - - - - - - - -
    bool IRSharpAc::isPowerSpecial (void ) const
    -
    - -

    Is one of the special power states in use?

    -
    Returns
    true, it is. false, it isn't.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::send (const uint16_t repeat = kSharpAcDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setClean()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setClean (const bool on)
    -
    - -

    Set the Economical mode toggle setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    Officially A/C unit needs to be "Off" before clean mode can be entered
    - -
    -
    - -

    ◆ setEconoToggle()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setEconoToggle (const bool on)
    -
    - -

    Set the Economical mode toggle setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Warning
    Probably incompatible with setTurbo()
    -
    Note
    Available on the A907 models.
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSharpAc::setFan (const uint8_t speed,
    const bool save = true 
    )
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - - -
    [in]speedThe desired setting.
    [in]saveDo we save this setting as a user set one?
    -
    -
    - -
    -
    - -

    ◆ setIon()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setIon (const bool on)
    -
    - -

    Set the Ion (Filter) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setLightToggle()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setLightToggle (const bool on)
    -
    - -

    Set the Light mode toggle setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Warning
    Probably incompatible with setTurbo()
    -
    Note
    Not available on the A907 model.
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSharpAc::setMode (const uint8_t mode,
    const bool save = true 
    )
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - - -
    [in]modeThe desired operating mode.
    [in]saveDo we save this setting as a user set one?
    -
    -
    - -
    -
    - -

    ◆ setModel()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setModel (const sharp_ac_remote_model_t model)
    -
    - -

    Set the model of the A/C to emulate.

    -
    Parameters
    - - -
    [in]modelThe enum of the appropriate model.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSharpAc::setPower (const bool on,
    const bool prev_on = true 
    )
    -
    - -

    Change the power setting, including the previous power state.

    -
    Parameters
    - - - -
    [in]ontrue, the setting is on. false, the setting is off.
    [in]prev_ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setPowerSpecial()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSharpAc::setPowerSpecial (const uint8_t value)
    -
    -inlineprivate
    -
    - -

    Set the value of the Power Special setting without any checks.

    -
    Parameters
    - - -
    [in]valueThe value to set Power Special to.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSharpAc::setRaw (const uint8_t new_code[],
    const uint16_t length = kSharpAcStateLength 
    )
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - - -
    [in]new_codeA valid code for this protocol.
    [in]lengthThe length/size of the new_code array.
    -
    -
    - -
    -
    - -

    ◆ setSpecial()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setSpecial (const uint8_t mode)
    -
    - -

    Set the value of the Special (button/command?) setting.

    -
    Parameters
    - - -
    [in]modeThe value to set Special to.
    -
    -
    - -
    -
    - -

    ◆ setSwingToggle()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setSwingToggle (const bool on)
    -
    - -

    Set the (vertical) Swing Toggle setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRSharpAc::setTemp (const uint8_t temp,
    const bool save = true 
    )
    -
    - -

    Set the temperature.

    -
    Parameters
    - - - -
    [in]tempThe temperature in degrees celsius.
    [in]saveDo we save this setting as a user set one?
    -
    -
    - -
    -
    - -

    ◆ setTimer()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRSharpAc::setTimer (bool enable,
    bool timer_type,
    uint16_t mins 
    )
    -
    - -

    Set or cancel the timer function.

    -
    Parameters
    - - - - -
    [in]enableIs the timer to be enabled (true) or canceled(false)?
    [in]timer_typeAn On (true) or an Off (false). Ignored if canceled.
    [in]minsNr. of minutes the timer is to be set to.
    -
    -
    -
    Note
    Rounds down to 30 min increments. (max: 720 mins (12h), 0 is Off)
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRSharpAc::setTurbo (const bool on)
    -
    - -

    Set the Turbo setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    If you use this method, you will need to send it before making other changes to the settings, as they may overwrite some of the bits used by this setting.
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRSharpAc::stateReset (void )
    -
    -private
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRSharpAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - - - - -
    stdAc::fanspeed_t IRSharpAc::toCommonFanSpeed (const uint8_t speed) const
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - - - - -
    stdAc::opmode_t IRSharpAc::toCommonMode (const uint8_t mode) const
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRSharpAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRSharpAc::validChecksum (uint8_t state[],
    const uint16_t length = kSharpAcStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    SharpProtocol IRSharpAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _fan

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRSharpAc::_fan
    -
    -private
    -
    - -

    Saved copy of the desired fan speed.

    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRSharpAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ _mode

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRSharpAc::_mode
    -
    -private
    -
    - -

    Saved copy of the desired mode.

    - -
    -
    - -

    ◆ _model

    - -
    -
    - - - - - -
    - - - - -
    sharp_ac_remote_model_t IRSharpAc::_model
    -
    -private
    -
    - -

    Saved copy of the model.

    - -
    -
    - -

    ◆ _temp

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRSharpAc::_temp
    -
    -private
    -
    - -

    Saved copy of the desired temp.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.map deleted file mode 100644 index 9a1753861..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.md5 deleted file mode 100644 index ced8dbcb5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8249c101b5624a55ee679f9dbf489484 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRSharpAc__coll__graph.png deleted file mode 100644 index e68aa4144b1adbb85187127a58347f9ebb521351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6284 zcmZX32RzmP|L>8$Np=dEDG@?s&&b{#`-EeY?7dGUWOK4PMsaXLvK-B!Up36IJO(n7$^fw?72$_nqJQTbRgI~n;Yhd+h4<`XH z*DTbOyx=Y>2Ihze15ofKzjFpO1F(fFv2c9$?UIGUO`cl zWF*1clzw%ACNE!duEo@pH_TcxJBdbJotw+v0z8B23WGY4M)pPRB!x<9gV10Ct9T6U z9D7U8@mceTSnTVZ4fCtGRbL-wo6Sbt`I^v9TH`*d>Oh~E^=cv;r=sI3gsrG9LFIwU z4dnkU6;1APQ0UF>6uugTM-=&A15X43k3BF$jR8k)iHV7ypfy9H_9p>DqdL~s)?32{ za3PpBMaA5l6((p2nV6`osaXv>OY|JxJ1Q(k*IRcd^XQWma?(Aqi5?!Ix_R^7c>TNL z)g9KjA~qFsf&W=}?iIPYyFV||y+uRwTl^M=gp}0k?0B!5{6i-(F|qmH%5db+@V!LU zM0(^s6`_Dbm-EAR8CZjUk#3J9qw8q!-Juh(x=tSxwlRsV@IP?cInB&uY-wrfw-el58$*`7sDb%EVNftN zWq$ecWy2os#o^)M^u|VCf9|ufI(PIBx5b~?WfhL#2yIZ6Vf)k5Q^Q&p)*AR3H8}l5 zo%eM|v1UWf5*YHi*QM7!&J}6P#yMLcQO?|-{SMs7g@qt=LZ|?(f@pNKp_EZ_h=g*&u ziistpr+39NNu)c7{LzG!Bs)#k^CQj!5|PL{*IC7q?#U9zo7B`)a@s~loz;%xhFGr> zg>k}w{W04|rVXjDMoRg;)(j!i=ZBUwj|^Woo89H&iln-)sI9HtKRvqnY3Bzm{9|EZ zL^k3)4RLXTx3ae8H*dKL5qA77udPk_3inC&x;e9_Ta5sOnq7T*t`oU7QHR{!^#ENl zTH_3V)5WDa!OF@iJ0x&a8b-#zZeeN3V@kNtq+bGi*V-z-6VPbNXKZ5fV|ft$YA7iw z=>a4mE6WjOBS`;N@dG~}3nk^n(sn&bpE-!y}jMDbFeYV4SBAu z?V>d<*G5yd~jDCcb{1($&?KW{}x`jlbM&UX?X;{sgY8%T}O~!9FoLso><~RN`5XpHKYs zBO0B7KHKi*yF!`5YjRWWI@PUPY`9NGgVO?OX=zs|!M+Jqm$R;}4x-}>tL*hk9CcIb zr(`fJI`fN*)XdC%r$;;d^f8dbqoZ=LGd6vhDlRUMk?b0OhKh6`;OvCc>+6ovhgB67 zv!IQvtgKR3N9?N>F0!(+2p;nBwVOSjURkl{$Ad3e#@JFrW8={Y{z6k#^~T$`Z=+dc zQ2dr{pAi>9I|80nWV#eG{wqaj7kBq(`A{k_Yt3e#4Z}6jnDQxJllmc_K>s=lnN!Ln zRRy$WmZ;zELpb70Xnnk&p{$6~3^MQj^{tdmVUMbTsMO+M0b}*`{qE zMa#;h3?Cn#ewnET3`UA6KmxA;b78XljGPBx6Yr4C;EhlPSPxs0Y4>&l8 zke%`Y0g`%pdNkcdy2bR?&Vgf-c_XV^TU-21U-urspintCH-Tqiq(v2dO3c2Y#l>8_ zrVVze?W=wbBPI5?sR{AEtNF0r5!a7kGqyU!~xo+3ckGAbhgi+prG&xRuu`3x>lm4 z60<+M3A&4uo7=KCT}X1L=ZTMx4<$W)BtR!nM2D${J0cV zcdgVR^w)#_@?7Z4QUmRF2!;rNHHWFG=|Lk8 zV7A)2x&e#b1=Zh+o*xXknA8aD^?b~nTMT`U})@yM2cW|X}&fwtSo>cxfDe#~%T&|?ZD z;|D6xRCO*Ds9~1Dx#}+-nTykkl4o|%Ih1PREq3I8EYQ#*==oK5wJZ)UVdtrdR9C^w z=L!l?2F4ROL6Rq4`AxGK|E+e|s*l}xeX#liuL*UhH-i;qELBsCLq|uo?xE`?&sQjR z@Y&chDjn>(hUi!wEYJkUobR++9njyTsd;X(jKsg&ifbK{qHR0I3?5>D z&qr$JiqPisZ5H;&Z16?w%cAQ#$P=-?f^7und^TV92f+*Wf?{lC)(uH)ht%+Tx&xHJ zV{JY5_t*VTPz(lrLgDLC0@*CxJStPb0kN-nqht_PM~1y54pV+z}i{ z;6dv3y;(uyLX_zzVk%2`GShd#5q<-~Jv&joa52}~7GK%(Ix2;bpsW)8GrPgpb$r%? zc`cZ7dQ4%XXk&;?sR&>C*Z2;vDS2(B=jYTQ2L<7#K)sG79w}GHO>L!@Mbas;v=uwO zx5CPny6&IxUGv2w)6?zOEbP1vX=76lapcST z-l)SJ)MQ+3{!D1RjLu(4h;VVa)~8UJ+^Am5R)p4tXZBj4MT!5OyZfL6@qhWix(;&HqzRMJZ~ZzN_UX{M@Db7KMy0 zqjCD4ciErxK&T4T5($@0{P;Lc_dl1Xh0ezaApM9_DD$|`j ztLH3ghFL+gPU_=X7Ok|?y>$lsp2^7>Hu_cNc?u^7B0A0RZ~+G<#ftuW$l?QpcWYH6 zArY-LC(Id;7|_M~m3?jT$CI~tnVR~jXDh48^Ns8hRIEo-e+;^ce~G=7i}xSK&5RE9 z-n_4Lk*pDyux{V@EXiXNToi1d+lP}KM-`a;A^tfn#YW!-+|2AQz+&tE9NAhdw&LX= zyZ-+t#8dbmfT;c6c5YjoE3gQ4WZXMvs2-U#Izopqkl9_b?ScnDjj$n0f;UQ zPIUEZ1UZv<#P@KDD8SIJ=cm3i)6;jsTWnq3-3m}>Vk*C7nD0?XhcXpCJ=d;Z<3ld4 zo6e1U$xD;in#c4p3&$Sfmm;O`ArH@Oz{R&i|h>+5?@NJ#H0 z5fRDLTeofv(L0}~-7M!i3{@WUG)h=cDXv=jcvCK-a?+rcLzW|SW@(S86jS{XR_l^` zRApL53(U!%-Q_`{E*ooW;-^-&wi)O? zgXGR>qyGUeO}C8;IV!$kP(E8lBA3eSfPJ9GQ+?vCmXeE-JW5Q~FU7sQk)>&Sj{o^H zE`~uwzEWA{de`w%3PBoV|g)lKT%S^ z{)K~w<>KZB!u5ShilsnW|FVa?y!>O=Kk}Cb6L^~TI2H~8fyBtjNWazng99|;;#@sV z;B83Am0dq6Ag#T5?o)S(TVaIrY*D_~C@3g^7v0+3Ws{ah0n(mbSh)7B-g9+n-~&-^ zZmwMwtUxoX3-~Hm4~J2O5TFg-zkffyxv6DnNH;JrfSX_}BH#7{{GB?XqmtNS1s$I0 zLmOXe<)2-XMQyR-=0L3<~lks^$~J&7tW!7x*e6J zYHpifiFvwFWN$vAs&VpEBymbaJ1GAbZbp)hfau(reXMhYhh>q=2;i#t?z_E$BrFpV zt!bs_LyEbcf&gA7KAV1tta9&UXK%~+5@RBN4k5yYJE_`bV7$my+YKrq z{LL|ceYfo%a)np?AMDO(p%-HiAEwijP(v@|%-ME&c~gEG!{orE83j;*nH90y+&mon zCMsQDUVTFZv_wmE7hUR6y?WL3C zxCZMAvJRaUGLKpN+nOj1+f&!RcNXH;>c+*RX;j#g*f`a_F8){G@bBnhW3U%`zq30D z+c*Yv7UoJ{pvi?}R({)kuV1VfmGYY|9Y<*twE9O!!T-V$Fbr}9HO_;iN{;!?_OM0K4 z_ugoO@1;202W~7pE^ZGM|I1h~!?IX{#ppgKA1iAxEj(ZVXD+#$-ix|1ybpfjR!mlK-pj|6W4awNO1MDSrp1Fe}S{6~A|74d0k5^omA2E0$BIAQjFc z6T}EnQc?o;?v98P<4@_6Pj%7FW@htUNtt5qVE{k<_SZTOw`P}zF)13=GhXn3t$(ru z_wRsNJ3T*Ws__)%NuSV}v>7UVzBXPH=lu03Y!T%j`y+}Li9$J{Wc>FXGPAOPmex{M zRyG3y*7NgE(6H5ZAxD2fVB6-ijVj z;H|*TZf$R0xhpD~3i6DoFGfa2>eo-qI3374Ej7XVfK*IbUEK=!TZjYxYnBRFH*gOMg&KabB4!YA`sjbKak@LG6PWF^ai`0!KW%x*C;{!C-D~ zzPmndFxH0bu{zik24ri|^`6rh>lJf&=yO@o&7cE`9ij%1wt(adXy0N`@tyr~=L!&& zf~y9vNd4xCjUA3FuiGQQHz8yggdOg3b4P(vKny)*A(b%4m|Ag=LCtys9}SW4-e3cP zTkf-P*rN((ymS}^i>8wkuYFazW|sIQ{Dbm=I@sTtnVDwLKAnAi3**jBC7yR^X=zP; zX8sZPSo)Us#CD}*XJr`k$nf*)r6s$|0)t9`jU!e3FmIA-&p?-nMC!~|rKHfxUH96U z=md4_0|{>rf+gT@a2?5L?lU5Fc4`pv*e@-pQ7E(PF@f+iA~Nz%6yMjJ;^N4b7P-sZ zuoKC_$;(?%S^1tx!Ye)_quVl0O5Zu~_U+r(SzSCme>67-1Jj$t^P*btVKRtT+*gJ; zySlo-)aB&lyhdjSrGpHSV0v}+Re8YErx3qJ=0?*veM~;ct1b<6Pmj8)nwpBbIvXeF z@)U!DJ>}RLHY(x1(ihNkpfeOe;sW9chl$z*Fm#rJ^uW;1{6w5Tk(HI*!wrLnnDUt= z1EJniS6BWx>EnllMC5azPxq3^C@5?}mb_4b*!+6J3liANW(I0)$Z%?E3N_W}Ut!r! z4kkEF!kZVPUt$45E*#u2O#VXFK>`Qu_ZY>(4fOvt?E$+wJ(Um%`{F>YFzmnB*!( z%HT3D!u#0-Go+H(q#pf0P};+6H=5*@$R^ZrL8L0^`UCwdDhT|00ivRyDPJmQ7V=-0 C%!9@N diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac-members.html deleted file mode 100644 index 93848db5b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac-members.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRTcl112Ac Member List
    -
    -
    - -

    This is the complete list of members for IRTcl112Ac, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRTcl112Acprivate
    _irsendIRTcl112Acprivate
    begin(void)IRTcl112Ac
    calcChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)IRTcl112Acstatic
    calibrate(void)IRTcl112Acinline
    checksum(const uint16_t length=kTcl112AcStateLength)IRTcl112Acprivate
    convertFan(const stdAc::fanspeed_t speed)IRTcl112Acstatic
    convertMode(const stdAc::opmode_t mode)IRTcl112Acstatic
    getEcono(void) constIRTcl112Ac
    getFan(void) constIRTcl112Ac
    getHealth(void) constIRTcl112Ac
    getLight(void) constIRTcl112Ac
    getMode(void) constIRTcl112Ac
    getPower(void) constIRTcl112Ac
    getRaw(void)IRTcl112Ac
    getSwingHorizontal(void) constIRTcl112Ac
    getSwingVertical(void) constIRTcl112Ac
    getTemp(void) constIRTcl112Ac
    getTurbo(void) constIRTcl112Ac
    IRTcl112Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTcl112Acexplicit
    off(void)IRTcl112Ac
    on(void)IRTcl112Ac
    send(const uint16_t repeat=kTcl112AcDefaultRepeat)IRTcl112Ac
    setEcono(const bool on)IRTcl112Ac
    setFan(const uint8_t speed)IRTcl112Ac
    setHealth(const bool on)IRTcl112Ac
    setLight(const bool on)IRTcl112Ac
    setMode(const uint8_t mode)IRTcl112Ac
    setPower(const bool on)IRTcl112Ac
    setRaw(const uint8_t new_code[], const uint16_t length=kTcl112AcStateLength)IRTcl112Ac
    setSwingHorizontal(const bool on)IRTcl112Ac
    setSwingVertical(const bool on)IRTcl112Ac
    setTemp(const float celsius)IRTcl112Ac
    setTurbo(const bool on)IRTcl112Ac
    stateReset(void)IRTcl112Ac
    toCommon(void) constIRTcl112Ac
    toCommonFanSpeed(const uint8_t speed)IRTcl112Acstatic
    toCommonMode(const uint8_t mode)IRTcl112Acstatic
    toString(void) constIRTcl112Ac
    validChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)IRTcl112Acstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac.html deleted file mode 100644 index 6b1f6c61f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac.html +++ /dev/null @@ -1,1312 +0,0 @@ - - - - - - - -IRremoteESP8266: IRTcl112Ac Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed TCL A/C messages. - More...

    - -

    #include <ir_Tcl.h>

    -
    -Collaboration diagram for IRTcl112Ac:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRTcl112Ac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void send (const uint16_t repeat=kTcl112AcDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void stateReset (void)
     Reset the internal state of the emulation. (On, Cool, 24C) More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t new_code[], const uint16_t length=kTcl112AcStateLength)
     Set the internal state from a valid code for this protocol. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const float celsius)
     Set the temperature. More...
     
    float getTemp (void) const
     Get the current temperature setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setEcono (const bool on)
     Set the economy setting of the A/C. More...
     
    bool getEcono (void) const
     Get the economy setting of the A/C. More...
     
    void setHealth (const bool on)
     Set the Health (Filter) setting of the A/C. More...
     
    bool getHealth (void) const
     Get the Health (Filter) setting of the A/C. More...
     
    void setLight (const bool on)
     Set the Light (LED/Display) setting of the A/C. More...
     
    bool getLight (void) const
     Get the Light (LED/Display) setting of the A/C. More...
     
    void setSwingHorizontal (const bool on)
     Set the horizontal swing setting of the A/C. More...
     
    bool getSwingHorizontal (void) const
     Get the horizontal swing setting of the A/C. More...
     
    void setSwingVertical (const bool on)
     Set the vertical swing setting of the A/C. More...
     
    bool getSwingVertical (void) const
     Get the vertical swing setting of the A/C. More...
     
    void setTurbo (const bool on)
     Set the Turbo setting of the A/C. More...
     
    bool getTurbo (void) const
     Get the Turbo setting of the A/C. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static uint8_t calcChecksum (uint8_t state[], const uint16_t length=kTcl112AcStateLength)
     Calculate the checksum for a given state. More...
     
    static bool validChecksum (uint8_t state[], const uint16_t length=kTcl112AcStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (const uint16_t length=kTcl112AcStateLength)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    Tcl112Protocol _
     
    -

    Detailed Description

    -

    Class for handling detailed TCL A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRTcl112Ac()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRTcl112Ac::IRTcl112Ac (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRTcl112Ac::calcChecksum (uint8_t state[],
    const uint16_t length = kTcl112AcStateLength 
    )
    -
    -static
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRTcl112Ac::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRTcl112Ac::checksum (const uint16_t length = kTcl112AcStateLength)
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    -
    Parameters
    - - -
    [in]lengthThe length/size of the internal array to checksum.
    -
    -
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTcl112Ac::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTcl112Ac::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getEcono()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getEcono (void ) const
    -
    - -

    Get the economy setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRTcl112Ac::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getHealth()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getHealth (void ) const
    -
    - -

    Get the Health (Filter) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getLight()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getLight (void ) const
    -
    - -

    Get the Light (LED/Display) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRTcl112Ac::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRTcl112Ac::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSwingHorizontal()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getSwingHorizontal (void ) const
    -
    - -

    Get the horizontal swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwingVertical()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getSwingVertical (void ) const
    -
    - -

    Get the vertical swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    float IRTcl112Ac::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    -
    Note
    The temperature resolution is 0.5 of a degree.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRTcl112Ac::getTurbo (void ) const
    -
    - -

    Get the Turbo setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::send (const uint16_t repeat = kTcl112AcDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setEcono()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setEcono (const bool on)
    -
    - -

    Set the economy setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    -
    Note
    Unknown speeds will default to Auto.
    - -
    -
    - -

    ◆ setHealth()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setHealth (const bool on)
    -
    - -

    Set the Health (Filter) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setLight()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setLight (const bool on)
    -
    - -

    Set the Light (LED/Display) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    Fan/Ventilation mode sets the fan speed to high. Unknown values default to Auto.
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRTcl112Ac::setRaw (const uint8_t new_code[],
    const uint16_t length = kTcl112AcStateLength 
    )
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - - -
    [in]new_codeA valid code for this protocol.
    [in]lengthThe length/size of the new_code array.
    -
    -
    - -
    -
    - -

    ◆ setSwingHorizontal()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setSwingHorizontal (const bool on)
    -
    - -

    Set the horizontal swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwingVertical()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setSwingVertical (const bool on)
    -
    - -

    Set the vertical swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setTemp (const float celsius)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]celsiusThe temperature in degrees celsius.
    -
    -
    -
    Note
    The temperature resolution is 0.5 of a degree.
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::setTurbo (const bool on)
    -
    - -

    Set the Turbo setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRTcl112Ac::stateReset (void )
    -
    - -

    Reset the internal state of the emulation. (On, Cool, 24C)

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRTcl112Ac::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRTcl112Ac::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRTcl112Ac::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRTcl112Ac::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRTcl112Ac::validChecksum (uint8_t state[],
    const uint16_t length = kTcl112AcStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    Tcl112Protocol IRTcl112Ac::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRTcl112Ac::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.map deleted file mode 100644 index c1719c292..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 deleted file mode 100644 index 2768becda..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ca8f349e6fe256e69fb3096cc73dd334 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTcl112Ac__coll__graph.png deleted file mode 100644 index 11d8ad2e748178cdbfcb833e343745c8c277eb3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5627 zcmb7IXH-*Lw*>{M(xn##E=52(NVfz6Nbeny&`XdWS_D)|C`y$Qz)&K+3(^In!jo| z$Wwjh8I<8yXn(wX?Sa6f<48EW%Kf8zmZN?e>jz4Ka}{mf72AA4(8KE6nv}O*31U%l z6Lj~|+OFidr1O<=pf(7u4Q{|l-n)i)a@{vdm1#foS7GIy#ingje zMQHA^$3w~RGcCiLld>V(vqITkHN?e_v3j|33A}1yi>s@cfMGSTwRO%1BD%0UFOTbZ z0j@zo&r5`HUBrI-W~AUd`=cz#Djk#J{`Bcn%3G}wr!s~b=W_M+^$~>qcXm<{2pZ=v zDXS~k^tFclegCDUrQO3r%-kHZzhB!wAYgFy*r8y@ih0f=86MWYo-MXuAL-&Vm4gF;dBbs zBTvqE;KSpUmZWdgBb9{>@)xnfg&<=Vtz=H}Z!0o`Tj^_AK2TOex!8|ADmxvqD3Rwc zUtW2YlY@;Rr}@#~LStED_j9Xd!FA@n&zj2pJmG&T2rRn|U{<0RcZK6V4POx&*Z6;L#;!v*?UTGvRX zrlv?jVXz#PvEbm~jLgi}>FLf6-DouW6e=t%OmbUHOjJaq2ZJd!fZeHGpcI0Zzme6pFRh0 zO(u#M+S}VJ#ZG(j`!{OD9jI-8;|8%M8>_z4Mp&l$5fHii)YWD_5?t%evAAtPhozl#n3} zzARx7=09}tdwYAgWMtB&8r=xz#|x%FRs%Uc)gDr-`OCH~P!vB=z5MO%Ls}l?ra?T{ zUB8=7PEG?kvT*=d>=Ot%8gO++M#cmDB>l6f^WRU`1~>>)<7-*}N`a%YY5EDm+F;*f zsXC{=YrGM=_h;wk65``~`ubwcD=l8<=OsRO9#gA(;VDJ|OOkqaGb70oKm)8XZ1<52OB^7+8 zA$J^`+!=wkC2e3}u-2IJPhNQVP92pIzeUSFGB9uj5Q7pHAWm?R$?AY;8?yivx8fp$ z1UVO?xnus)x%~=gGym7ntdeegAs2|&s%6zPFtCtKu_#xs#?03;C5I<#;{PP}%*+fb zh=jE}q$D>({H>z?mtur-1;XGzc_Nf!%*RX;$x*f`H#LhVG$muKTF?{XK$ zNl}#v(ti{v@_E>x%$2uUtaR7}R_P%ni)hpzE|^+>*9w_(Eg5SyO~7!6Nw7IFi3C%t zMc66`HH+0_L05NqOEEQhF;X8h12Q-BfAgF=X32LKjrl&;*aJrSoXWcgDi!mBtv+H4oo?-AHhfK4Yu`i0+o6;f0O3+z8mPeNFtBKxRc2l>8C<2)Kr2V+~V>4nVx95TDgdlgy5 zY(?SLm~d@T%?9zg>q02r=6=wJ*Qsler%Q#JK^J&kjRpBR{rSr|xaeSIui1VAK6C58keh|Pf;JK!cy`kJ-KumZ1urgB(Tr* zw-k`>kvl;?Q9_zOm-hVk>9DV!zKMNHc(Zk%Hsx386A1DVrj&D&CsV7?m8xa-^yQd=Xy&-tCVHK>Sq|7l3M|MgX;9dvo1sNH@|xyV zwFqv%?NQ{%^zgUt5YsZXz<>#ceQ%Aj$dgBQXF(Jh${KoHUay27mdNp?CYQy3E5DQPlvfdt&BaI9`8IP29#FsW%8 z+}N$|nH1H2w|JkMH@%qFWc?J8@p|hx6|_i9VIL;B$s=Dxfpy>z4545Fpn}U2wsk;3_yyCu>2Tloa_Po)c>oKDNPqNymWYE1` zQMtMxlr04;mJ($2y9uu(43FxK9eB_PtQN^XvDE|a}RtkeZ-;Y%MFkN?}aYp z|7M=2K$lBEAo?aJ*+N1>0Q|-d4pujIxqQu%2AXM;jYM>G^yW;TR+ zn;^i8K<@7ENI*I|I*s*i-gj6N1Pl|s+WuD9x?1ieGxD6_rP%lr)6kbE`-2?{)#$gN zKXj>k5*OHu!D!|y1(eM<{J+UvH0xi}$*9})Kch{TPTCOF3-0BbZGoeE3h074_Tya1 zScz|t{k=Wu%dMTA;rBi>R;_-w-oAZ1P@tBVltfDckXh2*{rv~VzH?9i9vVt%Xpr&u z_aDIT9vl#*ebKgxedSeEB}GLfY;4)etE8l)5{bqwmz+bL?aaiI4zkZCkkn&}tDmjb zdNC@{5!M?wG=T;yl%8-rAD&uQCzY6(2uKUf;*p|BJZ`-5kZNaZOJ7ryJgjp*-&+}3 zqxqFCZz`?`ywh9L&Yc4l-H$Irou3^yLa6@4^ zt*)+;k&!WQaOik@SN)|3_9Ta?g(>wWJ32-@MkOurN1pPZ{JaDODkS|#I7X+T7{IOG%GZ>Lt1 zz63Zca4*<6%MtT)6=pa5!DGv)jXTF(-*0d8bN{IW(C5%AGt^#jqe4Q(H+`(>0B}AT z=avL+toDPvw2ThyLz4rS3E2VC7BkzjVX2qr`~W6WIc^KX-@FHaWYGBWrU~Ee1NnU2 zrop^AR^Yt`gw&2Dxu3NcMl2!Zfgq%lQF9-lQE(Xr2h@s6Y;&JSX5OUNsketh)K4`^ zVs!@*V*^1oe|sg`$+7z^YacN_L04*S@E2=wy(OjXniufKa#a`C8XAE&WJad@ z=Z0UWU*2AtCdXeNtCnV;>b@6;B3*B9vzDMMe+oRXQLu3Mv&OO24+ue-{@X{}DP}lp z#mL-qMG<;EW0_q=1c+baesj}>uLfdavx<}ZavAkH=0GOuyiDUx!M^*1G0^ZRwxd#J z&-5HqE|>Wy1Aoci3Q%t!!X;yptW}?N3D}ueT6(JGxNkwMy!pcBw@Pf7_kW%0es>sh z+Gv_5Q@dT8wY>qX33D>?!H=(9b{DnLF$Y|%wY5YO`SXXf?1wQe7<}5aK}wLfn+v(Q zd#7zMpH?~kUu;kxtYZ?bC#Pd_9}UaZ^Y?FPez;*$W`OkEV(`{Q)2kgA zA)cg*KjIyU;ujKn+0-PbPTYOS3tM3XXts#BxS)i@Ad#AeX8C6vpF%g(BaIZ$y05dc zv>rU@9lpKL0h2XF8@PN);iqSnFQjrSHAU*rKJy#`S#{AknT^z$RuznH5@ z>FDS{U~sVrHGm^n*!62yf!5&iIf(<%lJ)+py1w&G1DHZFi>jM)ax89cZbTw6J}GHs zbE+|DO)2a^1ZYehyS+3lY;5UBq)&5bDIbsw_sq?2>~vqMC!!eG*?+8b0G81@@s!Z9 z_nFIk=6!Nc&piXAa;a`U2L}f&r`)@tri=_0Uck%(WFzcg1PsU`Xk0>z7``F0>E-5h zGXii)NFPI?h7l2}^Yh7$R^^lUQ$Xkbu_qiHS_)7=oO0c&_K=;m1KenpZOf4A*58?8 z`5N#7jdPqKiC%$f&L815AUh0f)#LHdcI6y*4WQrj&3*{@5OuB$VA+z!iG~EGKDo zu1l{hJ;KLKAoagnng7Gt{P$&y!C`E3NrAzBv#~y!qZ81MkSzwma$}%gg>-mwHjDqD p-#-xeXV{G9nV@@+rrdr>k#~ci$19`o5#Z*M=x7>%Y92g}`7if5Avyp6 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc-members.html deleted file mode 100644 index 2d0483ac2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc-members.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRTechnibelAc Member List
    -
    -
    - -

    This is the complete list of members for IRTechnibelAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRTechnibelAcprivate
    _irsendIRTechnibelAcprivate
    _irsendIRTechnibelAcprivate
    _saved_tempIRTechnibelAcprivate
    _saved_temp_unitsIRTechnibelAcprivate
    begin(void)IRTechnibelAc
    calcChecksum(const uint64_t state)IRTechnibelAcstatic
    calibrate(void)IRTechnibelAcinline
    checksum(void)IRTechnibelAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRTechnibelAcstatic
    convertMode(const stdAc::opmode_t mode)IRTechnibelAcstatic
    convertSwing(const stdAc::swingv_t swing)IRTechnibelAcstatic
    getFan(void) constIRTechnibelAc
    getMode(void) constIRTechnibelAc
    getPower(void) constIRTechnibelAc
    getRaw(void)IRTechnibelAc
    getSleep(void) constIRTechnibelAc
    getSwing(void) constIRTechnibelAc
    getTemp(void) constIRTechnibelAc
    getTempUnit(void) constIRTechnibelAc
    getTimer(void) constIRTechnibelAc
    getTimerEnabled(void) constIRTechnibelAc
    IRTechnibelAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTechnibelAcexplicit
    off(void)IRTechnibelAc
    on(void)IRTechnibelAc
    send(const uint16_t repeat=kTechnibelAcDefaultRepeat)IRTechnibelAc
    setFan(const uint8_t speed)IRTechnibelAc
    setMode(const uint8_t mode)IRTechnibelAc
    setPower(const bool on)IRTechnibelAc
    setRaw(const uint64_t state)IRTechnibelAc
    setSleep(const bool on)IRTechnibelAc
    setSwing(const bool on)IRTechnibelAc
    setTemp(const uint8_t temp, const bool fahrenheit=false)IRTechnibelAc
    setTempUnit(const bool celsius)IRTechnibelAc
    setTimer(const uint16_t nr_of_mins)IRTechnibelAc
    setTimerEnabled(const bool on)IRTechnibelAc
    stateReset(void)IRTechnibelAc
    toCommon(void) constIRTechnibelAc
    toCommonFanSpeed(const uint8_t speed)IRTechnibelAcstatic
    toCommonMode(const uint8_t mode)IRTechnibelAcstatic
    toCommonSwing(const bool swing)IRTechnibelAcstatic
    toString(void) constIRTechnibelAc
    validChecksum(const uint64_t state)IRTechnibelAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc.html deleted file mode 100644 index d46fc2e34..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc.html +++ /dev/null @@ -1,1374 +0,0 @@ - - - - - - - -IRremoteESP8266: IRTechnibelAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Technibel A/C messages. - More...

    - -

    #include <ir_Technibel.h>

    -
    -Collaboration diagram for IRTechnibelAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRTechnibelAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the internal state of the emulation. More...
     
    void send (const uint16_t repeat=kTechnibelAcDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setTempUnit (const bool celsius)
     Set the temperature unit setting. More...
     
    bool getTempUnit (void) const
     Get the temperature unit setting. More...
     
    void setTemp (const uint8_t temp, const bool fahrenheit=false)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSwing (const bool on)
     Set the (vertical) swing setting of the A/C. More...
     
    bool getSwing (void) const
     Get the (vertical) swing setting of the A/C. More...
     
    void setSleep (const bool on)
     Set the Sleep setting of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep setting of the A/C. More...
     
    void setTimerEnabled (const bool on)
     Set the enable timer setting. More...
     
    bool getTimerEnabled (void) const
     Is the timer function enabled? More...
     
    void setTimer (const uint16_t nr_of_mins)
     Set the timer for when the A/C unit will switch off. More...
     
    uint16_t getTimer (void) const
     Get the timer time for when the A/C unit will switch power state. More...
     
    uint64_t getRaw (void)
     Get a copy of the internal state/code for this protocol. More...
     
    void setRaw (const uint64_t state)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static uint8_t calcChecksum (const uint64_t state)
     Compute the checksum of the supplied state. More...
     
    static bool validChecksum (const uint64_t state)
     Confirm the checksum of the supplied state is valid. More...
     
    static bool convertSwing (const stdAc::swingv_t swing)
     Convert a stdAc::swingv_t enum into it's native swing. More...
     
    static stdAc::swingv_t toCommonSwing (const bool swing)
     Convert a native swing into its stdAc equivalent. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Set the checksum of the internal state. More...
     
    - - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     
    IRsendTest _irsend
     
    TechnibelProtocol _
     
    uint8_t _saved_temp
     
    uint8_t _saved_temp_units
     
    -

    Detailed Description

    -

    Class for handling detailed Technibel A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRTechnibelAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRTechnibelAc::IRTechnibelAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTechnibelAc::calcChecksum (const uint64_t state)
    -
    -static
    -
    - -

    Compute the checksum of the supplied state.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    -
    Returns
    The calculated checksum of the supplied state.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRTechnibelAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRTechnibelAc::checksum (void )
    -
    -private
    -
    - -

    Set the checksum of the internal state.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTechnibelAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTechnibelAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertSwing()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRTechnibelAc::convertSwing (const stdAc::swingv_t swing)
    -
    -static
    -
    - -

    Convert a stdAc::swingv_t enum into it's native swing.

    -
    Parameters
    - - -
    [in]swingThe enum to be converted.
    -
    -
    -
    Returns
    true, the swing is on. false, the swing is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRTechnibelAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRTechnibelAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRTechnibelAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint64_t IRTechnibelAc::getRaw (void )
    -
    - -

    Get a copy of the internal state/code for this protocol.

    -
    Returns
    A code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRTechnibelAc::getSleep (void ) const
    -
    - -

    Get the Sleep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    bool IRTechnibelAc::getSwing (void ) const
    -
    - -

    Get the (vertical) swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRTechnibelAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees.
    - -
    -
    - -

    ◆ getTempUnit()

    - -
    -
    - - - - - - - - -
    bool IRTechnibelAc::getTempUnit (void ) const
    -
    - -

    Get the temperature unit setting.

    -
    Returns
    true, the unit is °F. false, the unit is °C.
    - -
    -
    - -

    ◆ getTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRTechnibelAc::getTimer (void ) const
    -
    - -

    Get the timer time for when the A/C unit will switch power state.

    -
    Returns
    The number of minutes left on the timer. 0 means off.
    - -
    -
    - -

    ◆ getTimerEnabled()

    - -
    -
    - - - - - - - - -
    bool IRTechnibelAc::getTimerEnabled (void ) const
    -
    - -

    Is the timer function enabled?

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::send (const uint16_t repeat = kTechnibelAcDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setRaw (const uint64_t state)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setSleep (const bool on)
    -
    - -

    Set the Sleep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setSwing (const bool on)
    -
    - -

    Set the (vertical) swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRTechnibelAc::setTemp (const uint8_t degrees,
    const bool fahrenheit = false 
    )
    -
    - -

    Set the temperature.

    -
    Parameters
    - - - -
    [in]degreesThe temperature in degrees.
    [in]fahrenheitThe temperature unit: true=°F, false(default)=°C.
    -
    -
    - -
    -
    - -

    ◆ setTempUnit()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setTempUnit (const bool fahrenheit)
    -
    - -

    Set the temperature unit setting.

    -
    Parameters
    - - -
    [in]fahrenheittrue, the unit is °F. false, the unit is °C.
    -
    -
    - -
    -
    - -

    ◆ setTimer()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setTimer (const uint16_t nr_of_mins)
    -
    - -

    Set the timer for when the A/C unit will switch off.

    -
    Parameters
    - - -
    [in]nr_of_minsNumber of minutes before power off. 0 will clear the timer. Max is 24 hrs (1440 mins).
    -
    -
    -
    Note
    Time is stored internally in hours.
    - -
    -
    - -

    ◆ setTimerEnabled()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::setTimerEnabled (const bool on)
    -
    - -

    Set the enable timer setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRTechnibelAc::stateReset (void )
    -
    - -

    Reset the internal state of the emulation.

    -
    Note
    Mode:Cool, Power:Off, fan:Low, temp:20, swing:Off, sleep:Off
    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRTechnibelAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRTechnibelAc::toCommonFanSpeed (const uint8_t speed)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRTechnibelAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonSwing()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::swingv_t IRTechnibelAc::toCommonSwing (const bool swing)
    -
    -static
    -
    - -

    Convert a native swing into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]swingtrue, the swing is on. false, the swing is off.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRTechnibelAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRTechnibelAc::validChecksum (const uint64_t state)
    -
    -static
    -
    - -

    Confirm the checksum of the supplied state is valid.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    -
    Returns
    true if the checksum is correct, otherwise false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    TechnibelProtocol IRTechnibelAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend [1/2]

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRTechnibelAc::_irsend
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend [2/2]

    - -
    -
    - - - - - -
    - - - - -
    IRsendTest IRTechnibelAc::_irsend
    -
    -private
    -
    - -
    -
    - -

    ◆ _saved_temp

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRTechnibelAc::_saved_temp
    -
    -private
    -
    - -
    -
    - -

    ◆ _saved_temp_units

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRTechnibelAc::_saved_temp_units
    -
    -private
    -
    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.map deleted file mode 100644 index 21224c671..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 deleted file mode 100644 index 5fab1ae60..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7b6536eb1ec53c4fdc6ddf225cc6f138 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTechnibelAc__coll__graph.png deleted file mode 100644 index fe2a057bba97313d7fb6012598445382d73530c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6013 zcmb7IXH-+|n#Dqwq9S~NR6&&9MCqs?J;(=wgx-4xA+#t82uMd-=pd2aJ0U0~MubR5 zOhBXx(mRAOuXpCInR{pc%*r}BSu5w9_qY(pHDstnLKQ{O0|Yn4Qz|T z*>t64^k1C2&S=L-Zk=eq2s;yp*e9|2Mb3WQk#!u*Y{j8)r;0fI4Bmddkc#JGGGA$A z-`F{g#IemM(wkG z`}Pe|YP!NX1tmc%o#`kpaD{B%N0N`dU6`N0cc-+jz8;IkdP7f>+Xzlau8k!qhwn}9 z5IPOI5?#dNF6<4bB6PoTw1iy*?vrPfZ20JAC12?q9jNBtnVd-t_V)I-VjifeMU+4M zm0Va@IN9KAkY4J!yF653iJrFJ@*|ITGf2>YVq4p6ll|@KHKz^_19M@EnGSi^)b8su zb)ZnJN+I_)&}W@D9L8+TTYY+`knSiv!Shi4`3QK!&BM6_`AX7ix`48>a$h`0e`n~4 zN9kZj#$VI0B@WERNo;mgiLSQxL#q2~YUFwfTNmpcaf|cVl))_X=85(I&sU7&6QiXD zu-~J(w&SL!J8XlL_)xfL>Ms;JS<=)^e!d+^&0u{eWymK1#ID(sAZ>{;ug1{ zV9Y!1bV=`@szf4jvd*4%VPQdG`_qk!6cksOn0ks5l(g*a`N^alzWi7oDk82JqaWxq zJxbuD`?@aObo_O^A%1?h_)exy$5tOZNT80+B{IjsZ0p&N5pGir(X=e0n;2zM(g5PF zDKb+rSf;hLHDs%oC0j8#jpt!xVs`eMUYpwZdhfYMMwL)C6BAYtbcgW@6SH>dz~kLt zyXyo*M~A|*b$sd6Kz@A9m}9-ez)uiBJ9~Tm$B$L~{G@{q)*B%+7Vs&9>EWqHSJ=@) z`fX8B2XHeUes=m-+@p3I6ssrtR7S|C;>Yki?JpS;FQd4^GRn#XJC7FGJC9d{E>TV{Ag8bDpOK&@^FE(Tsf)K02zbf4A!BtZpVSTxXA6} z>-)W;97SqChK#<~w;{Co53FeG>3PZ|6g-TIL6i2XpM|1DR@=jl%F4>F&@u}%hJ}R{ zR#beEL)-VKnP6}@9Lw`tw{F$YpX`74BjOU zKNc4s`TO6Ah=>?JzHs3}z zb9s#B?WZ+MJAKVJ%8QMST_c5=2A%Fr=rcu-PEUN7zw#&@FW(3c53g8|%NabLwi5rb zzCPIX;zDIN1p}v>h-+*mcCbTEnYnR>0-!&f)|ALfOg&B8*+AfVEE)otp`C4)Z{`##(0(aAAoBKIg*4QkL2AF z6}>4ddz6N@48FuB{d#ip>Ed9HwzKnXikC0QX_*rf6IHyt#K}H<_yEfIW6&sJTzYM< zKyk;n7$Vapp@xPA zx43xX(auszR#prWi8SB&{N+n=NlE1E*Hi$*00J~gA;$SZm~{~{-V^2l60mJM3Ocr) zp(6F@*jQhvf}YY5pLV+FJNOx?JReFRS{9eA( z>6T_@I!;dSM^?}>38I7v$k)v{=H`3~e0X(>T&n0=WWQy<5LK1=!pNAVF9peh=rKuY z^W3=DU}^4md59SyA?L`)SfQt=Z6>Di1_P~LTzdbUes_80LiHG{zDvPOXc7)?@cd_q z7jEQ~RY{&vt!Og$u}`!R3t|!_o>%ATvc)xtaQ+_ED#thW_nMOX@?Rn`h;VV*_zwM# z@v@FBX2U;LYKmnH7ss|{#n4D%F*Q>}n0{v!z2=x9q5%~`pkkZ7z{be@{&2d7a-?%^ zG-_L>)I54t<=UBsVq9qfH)$0)^Ul=#9a97d%!np&N z*|wAELY3vGBDyze?J=V5qBWc)>3Qt7%u&PeR56QC#VkVX)42l1duF-R3seMNXT`?# zi^Lvwa<7A7ac7fzDaPtvI3ipOKI<5V)fn>nBx zE^t$@JWIZS zbl+SS!TU$ejUi_RNfNOSO!Y+jjLIzyHCmgF=SWLJc0;d*qaNC-SxL9TqFLHKpQ4Xr0=IPdzma zjEo`+Zy6fmi5x4vPc8yiCwxsP0w&cQ31%e67Yz zvR2y863mRpY#~)Gm-Dz8`W%-hQIGXLDTdLb+SMSC`0kYznwZY_yc;80KP|c5v>PX! zp#oUH?R0hBgGWM8FU5?r-<25VE>5NaOgZ#9GKu7y`S9EuY8*9Ege^Y(kP%UExWC#v z{pLZGVr1>YqPL+T6ToHrpFPosM@O~x{mg)+Jq!%Ir=+CxhD$lu787rRsV*($5fO>2 zsSziho@(mo6u*D}-XxTjl~pH8n!3_R+s=+JFLXb%v7@0O6>wg_OS>cKY)|&r?h?{Y zg>XNoO|5t9dG4A=&2vM7`Lb!u@7Z4Qj3YrqPz9qrdvR=cv?@%S2ajQZQx#gG!+run zP*_^32?#JWFfj1->B&KCTbo=`PL2q(sF@RovaGBLA0HnT%0dkAqMjX`ve={e>$kr+ z)Hf>SKm_PH3PS|C|~82SI^1m zR%2r$5Im+=jjJaDT5>JIJl+I7TE{%&_t9N_&>pbifKBF~UsxELoP7Pwt)!}oKDIX; zg0uxP3D5zb#V@QnH?OM4U+0mP%{)F1LinrypDZUiTlZ!qt!{?+IXE1C<;s=i5hO#o zakazhc;(@-1!`=$FOHp6(vFInni>ceNjND4aHy@_hKK-ot}M;R|)zHej03sl83 z2S8?ctC2wECb>f8%>c4waFL0I{t%2?5c0#}=2Q#4%#7(D5``#;JC>`Kmb&Y(CU z=0UrXmMD|Y?;9AyAAO2a3h9_wYwZx#><~KDhL{jdITKf$UX3X4PWsK4z*Q16K`Ti~SQL*`x%f<#A|BrPY^q!|P?l#DFFSGs8+9=8Sd)i~~VFT8t3i0iQG(&YVl@?%_^=T_NH zN(s?U1%0Ck>C@83+e~2>Mv%;GKLCD(@^v2M?dbYWj z=58;+dhb`q4fE-e_)bYFDRUH6X_nwbgV$cPFZzVA0ZMuFzPGn`75)9a|D7%Qp}7R* z!F57=yH2Q{@~O0mi3xqI`pR`l=O?N+GcO9B=IuKOTXg)D1Hp8_b}I4`uFIZ(jzj{g z&+{c)HU%h#n|iq+-9Z2b^57&GvIjqGN!m__Wa5H1P?+zYXx*S7xdTFgCGv|won?aN zRFh7Q+*{brqQ0f2o{J5)S}z?*3WZ2w!W zZIsTG=zDd6wL7`FxqJcwJALe)`4g+u3=HVm764+v49W#CZ(wTLZyrGCmBJ}JeEgV^ z3`i!R{9<2HGJyW??uovdDIXvT)}rXL65qu8;=GS{osaj|w4qQo2?>d=vCz?4Ta3^4 zJXWSZFYMTvGw{c`KZmOVkcYxgYn~H{ArBrrcv@q1E?^plG_P%1*qrSKb8qW+Jxiz=87%0AM820lMfG4e)H%;@f=|fGMPPxRZDGWxUdK=$9Wbb-2S? zgkeY93-gPMbuMFqGM>{qU>aJ&PaFM@K|WFi@45=7$n(r4w+kuE*q@YP7+ zei98w4?O+u1O5hHMWv&NZl+{J=*d1vK7*C<3E$G{5CSu??<{8C*0VBJ4g-a9^h*yO z^Jrw>(*(#+uRFC+K_Q{;i3t{<(a%Vyp7-?NXJ<-A!y`K@bQ4wl5sC{U92- z18f4Wn8M8=b*_Rj7t^=t>FKt$Pwxe+Uk7zQNY8$_!GPV%!^E*WN{y$zVg%}QYfydz zgvEg)Yl zvL|5T8dzH5fSvQ{)2IB}+N7>7mA*Hu-CU$iO5p3fudKA6s4};6bd(oa=a7HqMLhHd zQxOa<;99Mt4lEG0O@4=)*3TWNX~k`NsCI)CgHY4_Ybnqa&EOnM;!l>*iHRMoKpx&J zdw18*PmUv&MQpJkiqmEw>rM{_GdDYXt_u_lXdcI{pS^$DSjurw+-F_`*_)l3+5>i> zsi|p=%T=r}YaMQjb{867U7M_ZsbBP{k!>CLEuWHZd~5YZYEKC?mV9oPfFNY(iiU29 z4Hy)(wA=#-1UsCK0u#aod*|P0!@roy|3hInE^%&rZ`PZBXuOhS2z!*8#YM}D#f0Mp tp8zv>&+gxRVb%aEMET1^K5W<-Lp6OqK3|7g8u;mCnraZ$ss~o#{{g8wCxQR~ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc-members.html deleted file mode 100644 index 330173726..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc-members.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRTecoAc Member List
    -
    -
    - -

    This is the complete list of members for IRTecoAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRTecoAcprivate
    _irsendIRTecoAcprivate
    begin(void)IRTecoAc
    calibrate(void)IRTecoAcinline
    convertFan(const stdAc::fanspeed_t speed)IRTecoAcstatic
    convertMode(const stdAc::opmode_t mode)IRTecoAcstatic
    getFan(void) constIRTecoAc
    getHumid(void) constIRTecoAc
    getLight(void) constIRTecoAc
    getMode(void) constIRTecoAc
    getPower(void) constIRTecoAc
    getRaw(void) constIRTecoAc
    getSave(void) constIRTecoAc
    getSleep(void) constIRTecoAc
    getSwing(void) constIRTecoAc
    getTemp(void) constIRTecoAc
    getTimer(void) constIRTecoAc
    getTimerEnabled(void) constIRTecoAcinlineprivate
    IRTecoAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTecoAcexplicit
    off(void)IRTecoAc
    on(void)IRTecoAc
    send(const uint16_t repeat=kTecoDefaultRepeat)IRTecoAc
    setFan(const uint8_t fan)IRTecoAc
    setHumid(const bool on)IRTecoAc
    setLight(const bool on)IRTecoAc
    setMode(const uint8_t mode)IRTecoAc
    setPower(const bool on)IRTecoAc
    setRaw(const uint64_t new_code)IRTecoAc
    setSave(const bool on)IRTecoAc
    setSleep(const bool on)IRTecoAc
    setSwing(const bool on)IRTecoAc
    setTemp(const uint8_t temp)IRTecoAc
    setTimer(const uint16_t mins)IRTecoAc
    stateReset(void)IRTecoAc
    toCommon(void) constIRTecoAc
    toCommonFanSpeed(const uint8_t speed)IRTecoAcstatic
    toCommonMode(const uint8_t mode)IRTecoAcstatic
    toString(void) constIRTecoAc
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc.html deleted file mode 100644 index 4c93db809..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc.html +++ /dev/null @@ -1,1196 +0,0 @@ - - - - - - - -IRremoteESP8266: IRTecoAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Teco A/C messages. - More...

    - -

    #include <ir_Teco.h>

    -
    -Collaboration diagram for IRTecoAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRTecoAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the internal state of the emulation. More...
     
    void send (const uint16_t repeat=kTecoDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t fan)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSwing (const bool on)
     Set the (vertical) swing setting of the A/C. More...
     
    bool getSwing (void) const
     Get the (vertical) swing setting of the A/C. More...
     
    void setSleep (const bool on)
     Set the Sleep setting of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep setting of the A/C. More...
     
    void setLight (const bool on)
     Set the Light (LED/Display) setting of the A/C. More...
     
    bool getLight (void) const
     Get the Light (LED/Display) setting of the A/C. More...
     
    void setHumid (const bool on)
     Set the Humid setting of the A/C. More...
     
    bool getHumid (void) const
     Get the Humid setting of the A/C. More...
     
    void setSave (const bool on)
     Set the Save setting of the A/C. More...
     
    bool getSave (void) const
     Get the Save setting of the A/C. More...
     
    uint16_t getTimer (void) const
     Get the timer time for when the A/C unit will switch power state. More...
     
    void setTimer (const uint16_t mins)
     Set the timer for when the A/C unit will switch power state. More...
     
    uint64_t getRaw (void) const
     Get a copy of the internal state/code for this protocol. More...
     
    void setRaw (const uint64_t new_code)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - -

    -Static Public Member Functions

    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    bool getTimerEnabled (void) const
     Is the timer function enabled? More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    TecoProtocol _
     
    -

    Detailed Description

    -

    Class for handling detailed Teco A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRTecoAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRTecoAc::IRTecoAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRTecoAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTecoAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTecoAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRTecoAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getHumid()

    - -
    -
    - - - - - - - - -
    bool IRTecoAc::getHumid (void ) const
    -
    - -

    Get the Humid setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getLight()

    - -
    -
    - - - - - - - - -
    bool IRTecoAc::getLight (void ) const
    -
    - -

    Get the Light (LED/Display) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRTecoAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRTecoAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint64_t IRTecoAc::getRaw (void ) const
    -
    - -

    Get a copy of the internal state/code for this protocol.

    -
    Returns
    A code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSave()

    - -
    -
    - - - - - - - - -
    bool IRTecoAc::getSave (void ) const
    -
    - -

    Get the Save setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRTecoAc::getSleep (void ) const
    -
    - -

    Get the Sleep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    bool IRTecoAc::getSwing (void ) const
    -
    - -

    Get the (vertical) swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRTecoAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRTecoAc::getTimer (void ) const
    -
    - -

    Get the timer time for when the A/C unit will switch power state.

    -
    Returns
    The number of minutes left on the timer. 0 means off.
    - -
    -
    - -

    ◆ getTimerEnabled()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRTecoAc::getTimerEnabled (void ) const
    -
    -inlineprivate
    -
    - -

    Is the timer function enabled?

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::send (const uint16_t repeat = kTecoDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setHumid()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setHumid (const bool on)
    -
    - -

    Set the Humid setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setLight()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setLight (const bool on)
    -
    - -

    Set the Light (LED/Display) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setRaw (const uint64_t new_code)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]new_codeA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSave()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setSave (const bool on)
    -
    - -

    Set the Save setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setSleep (const bool on)
    -
    - -

    Set the Sleep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setSwing (const bool on)
    -
    - -

    Set the (vertical) swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setTemp (const uint8_t temp)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]tempThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setTimer()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::setTimer (const uint16_t nr_mins)
    -
    - -

    Set the timer for when the A/C unit will switch power state.

    -
    Parameters
    - - -
    [in]nr_minsNumber of minutes before power state change. 0 will clear the timer. Max is 24 hrs.
    -
    -
    -
    Note
    Time is stored internally in increments of 30 mins.
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRTecoAc::stateReset (void )
    -
    - -

    Reset the internal state of the emulation.

    -
    Note
    Mode:auto, Power:Off, fan:auto, temp:16, swing:off, sleep:off
    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRTecoAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRTecoAc::toCommonFanSpeed (const uint8_t speed)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRTecoAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRTecoAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    TecoProtocol IRTecoAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRTecoAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.map deleted file mode 100644 index 49a1b7eff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.md5 deleted file mode 100644 index f40aa434b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -cdd835a60eee6ad8782220a6a7174f9f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTecoAc__coll__graph.png deleted file mode 100644 index 515e4a11ecc5e2315a0ac99fbad1e4b306e90e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5539 zcmai&2T)UQm&PLsL>7}aq~cYza`nVPZ!=;H4$1Dg{I0?`<#C_K~gNZp)9>3m+q{n*)(V!K-dj=2n` z=Ag0Uu4UgTt0z{zlAI0M#FmRTO)oNWPayW~o$J0KD+(eL1P@{NRk{T~S4{B_4@@m- zl5XW~7G9!e^PdHgbtnow>O1mJlq=$VM0vT-s?adZQ@C#rg-)2M-`eXvk;wwHUy0#D zCU=codLDy~R^e2!jQQ`ux!y(2%S&>7w76PPPTqcy_$457H(l-u#c9MmQD)~r_7HNMruG$8d{?rrR+e+~N~*?j!`a@u!PRaNboLoGPX+atLpB*r=5z?En& zwX)}fJ&6zf@4`GX$5D#fFYbIiKRbEkyzpG+{ExYs&al-q&S!E6Q;20^o~*wy0dJT> zv#_v)v&yDtDMz{G^#lilW&X@w?!GdHFL29NQCC+0KT}b;swH~{38TF~f3nq3t%t;> zhlO2}0~72<3Je8d^<%$rnVF5>_Qf{)K71f)YHm)FaN+U7{``hK(9x5XUY}`@Rf`vV zrhP}qxYi;WXG7rm;P3C`;$lAE5|S$A-U}%%D~oAqQTXuT!}jhjhooe3ef<-{sdko9 zsqHX7Mk6IKCx|%s3hw z8$D2{y^Zp|m%6&7?_kBtA-w5N3-x}juXo34$#mjV#Gr-k1VXIXPY-`+wL=o_52L8< z9Rd9!i>}Xn9v&VgF3Y`c-KnyEGFE-*i+MTeK&;y$nJ4qa1uLnH;rrQnMMai-OZa=C zataDpKuJkSg3zjPW+}H9Mn+vwN35c%YN$<`Vi;|7TwJTzjCXUT-6)-mw|Hr3DP4pT zL1ePp(Q0#|@(vA6sr3K{t*KW=Q;A8gGyR_9z=TFJ!&*E(ukmY=Js zaq{v8ZEwGgWRf8HF;(NjCoH^Nw}t!Flk{j|dAa=UoLu?ZOf6EN7<<3~hr@f&vJKNB z?!+k-4-fIlDug`Pv{v9tmUsb{DvgI&VmB%@(6!*EftE4m;^BFWx}FHr)YP2+@%}RA z$f!{7dreJ9*j?eOdjhhuCZI1F89yNSHxIyCT3Uo%Q&Us3=~^V_NX+r)op=4Kt{hTQ zP|$o^1S96i#P6&Uq~PRKYB(v1Is4t84-5(l zLrhj7z0!&t4x&G{6@?L1uY@@$~=PnoO zkk~ppItnq#8b~z8NH`goF$%V>gEp{!6&^!BPZ-v`ZMV$ z$%A!Ai1r-w#`@!8qg4r8j5tGRdx1J%I5 zz~68m?ZUgdyT{Am*T|`v-i(!)swYE2xYgoc7#KYF^_A(9y?COnt^McZWJdQ%8XsY1 z1`Q-!a?vreLet$*9#y;9jSmR8@-07qyb8e>%d6Ga-5r*jd#@gg9WODxoR^pPy{_(Z zMB3?GbI@%XnvX_>JnZc6zke4`O-qx~9W64h%PlD2;^GPbWP|4|?QRVn`YSC*gs zaEM+C_I!4d)olteuDIkeF{xZf!eP!X`0G!-ee4~uY@3`S>)df z?CYQW63H7H$u!VSIl1VS5>FvI6GMtK&N*994U(L`g|L1E(&$9U3R<04Q>byx7E0VuKkLZ4Vg z-N{pM_@;(NyhdVHt+tDJ7LSfMJa zuD}iA4B|&WCgm}y{=w(%!#JaGDmRys3aLOz&Y%magl?3tCf(@!v$qEo`F+r^vbyXY zmZi|H%$;#6(>n_+LdzGoiU;4;ZNc!R@xY85ev)DJS@2-YlJ1XXU;UIexSd-9J7spU^{B?!Vfv=waSW8Sa>Ll;a`cVKsRsQ~Pm(0$Ez z1^*04exQ%m*;AwwHiBbaI`qP@b-AHVZaAWr7J+yGCi^K6+g3!`U-9!24b=xIDRRSS zmxAVqS$2-EQfMp1`QSn(wpNw1ZG?JCiOvJ9&QLdhb0uItqe8N8j4fBlX4X;b{0F`u z*&(v$+;|+?l(}dWzE5Ime>NXFpD{}_sjM;UmpIbi7huDQsU>tbG(&b z`%vV>Z7q!icZRkDXJud=iBCvUwfF7Las6wvn&m6m_5BlLB|mOS{9i^ z*uJx((@E6f-k1ro*(LazssO8M=w-@{UkNFVnz5EYURbpV2j=QB-Ffl!?30v>EMsGf ztlf%iE}Dw7!sJpkOV7kU$iY`rTv7nD)sj)#C%%otO`|VKX)qMC-3`dx$tAf#xB9Hb z?>OrMx3(-imt7Yhr>9zpOK(5-lD#gSskE32sj38R-SEsV?MAVaox1K@_RF8qpU8o5 zrbKYoQ&dTKY>MlX+9LPs@^%_XU9#Tuub*zZkk2tL1v(}&axP8Dw<$4?YU$4tCl3@8 zaZN=;=W}jjCDQli(kU8szQ?pSeefON>p0m4o0X!+tA8UU%Loo4%X>G!Q(B)V8KvuY zzsu;Q8XHR)UtFc{=P(74$<8-^+DT9KhVp6=h;oL#i1Rq39?q-&P%cWg+e^G|DG&tx zi5Z)$mG0D#?g`?aN`X$#gqfXvh?jad$7v?bKs*mjY z;ZtU(p-%~IFu9@FGdSDG-gjyH znyJQ*+Qllx6nxcBPgjW%{TJzVX0IxShK2$J7ZVdhopApwlffLj(fcz(CKe(pw$3MR zGd^eE9?7ic>|CbUy+K{=XV11-V=v_E+B}ju#$8u$y613er+;;3Yw*!wIk^+FbrQa} zqod@x#PsIEB&m2U{}XW&#QKYkmuQK>0O`fB*t*L(Gxtl7_a5v1Hs($uSEX;T2cI1u zCQUnP`(TEdjCI0Qz_URa^M^0U(>w2=&)VUp5LawL zN5}J0csDKKq@?7*-10JSB&)0t0|P_Lb=gxkfW&ztnWcCDomKGisx_#xPqH~08#A~` zL&IHRRCrHV_^#jSFV@zTfvk^>Zyvc;)Wju-jEP1XPUwPDQRzp<5p*#F5^vhBWm7*K#_&h7E>agrNi4pR^C7subZu6Kegn=*vFfdS-OT3SqIXF0iqoS6ZKDMDL zIy*Zrv9Ym%{+a?(a&mHhe*O+TUNkOK?_$c(9f|NB`i{YnrD+DGq(IA$*x3=XrAA&~ z$^Oo8npUh>RW7{#NWagQ@6^x_P*O#>DYjL)L7zz1#?8YMn3zZxuEdG<-n|;jqwxhm z^o$HP9ex@wEDI~^9@^yUKQu#ug*mD+73xhc?LK=&b_3%1^hDl7C2epy5(3gBQuj7i-nw78xk=&aHF8ZiVZ=qICRq90?tvx? zbrp5aXtZ)NT4y@}~O{3ozx@5jb7CO=LzKlUsQ!)%fg6&n<)9DfCnE|>-no|)tJ<+nS|3uEgC$mDqB zERUyhcjD>p3r{0Uco}kQcIAuNJX-Yi$%wBe!B&7WySV#ewL(4elMP}w#)VO{J}&Cu z4gIx2mX^l6WxuM|QhL3!Z?7{MqkIbvG=hTy992AXC#gm(A3*>o6%8h|}bWNGd|tw9d)e zAVfU=MCsd!m)CsSUOwGnSR35jSBtP1Ol)jaX)PY5&JxUte>MH2zA&@5W5%Ql-XDA( zAk7zKTE?9Ov1G__vi$o=#|BzNG5ECJR%ZmM4(;$mW4h8nCllF zqQ%f-vD$D7pmOvCWV3%ikut=}?^&b%kLoM{H`Ej40}@m#=K8SDIKNh0#@ zQ;XPeb*k_FR*&f!67Umc1G)mIr{2&Y)9SV;RxJPn3!7I;y%tx;fu_J17FAu?Tmr3g z+cYCi)l^YuwXek~Ggvc~Uc~9cN|AJKR%=6fRn(d7u|EG6?SI8xMdVd6*2}U80NacK zYlB+Xywx*c2VHvW=ElRu_Kx%#?E{-ZE{qoXr=h(~+U$6X!3y)gzTdd^^TdSF;NYOgX5}dO>eac9Xif|q=6eL6nw~bqd3#p3a0SeU z3FBr<+gZ$Ka6l04pYmw%ic3iWcA|R;pE6)ud4-(3y2c(bUw}F>Nx6l8`^L}W`^OaK zF-Pj{!-%dbC@NYyJDgc=3AqhyMiF?|op?dR4?y<;@VWIT#JW^z6z#i*=4~aet1q8C z@jV|8f0d&-H#gVFdcIA*)Q8prtZli+gn&sI<#^6&0Pw;x7pE?F6xkt=ifK6DS&;eK|fVl!nubj2@z2!bM`799TOrTM*uwd~MwIv-I z7G_v(sZqXrxHZ!Utj}9l*M*&S)@8s)`9( z+Qx_=>kGI$85x=EuU|7q*N^ayz6ASePUXl4=53S!lS~Mjlrbei(qmF4$H~03OfSyKWm_4e|=Qr>VQI_9w6oY>-)LGwjc@$2IYEs zi1iIQFpxoiX8o^&DJVn=-48Yls}PfIz}s%`?b(%kcRE|3F|j~GC5bt*u=@PINkv6f zD3qm_p9F}#-Dr_w4nZ3V?T!=BH>k9w+28;BaG)L0p5lm8fx%dGb#{QUTBb(vA`U4DufU0$ru1wrmZh5i}@y*VCh}6vaXX zf#KYcNchft>ywj>@+p@-X)bQ=OC^poG8~+o(4pm(l@5S9#vA@{2kg)}d_qF; zQDjpe^Iqk2E!#-4ML}XLc#{6#0RuyAjSplgFVewcbbohAkt~!{7;^@FMVJ%=vRlUU nzZ!@VB - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRToshibaAC Member List
    -
    -
    - -

    This is the complete list of members for IRToshibaAC, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRToshibaACprivate
    _backupState(void)IRToshibaACprivate
    _irsendIRToshibaACprivate
    _prev_modeIRToshibaACprivate
    _restoreState(void)IRToshibaACprivate
    _send_swingIRToshibaACprivate
    _swing_modeIRToshibaACprivate
    backupIRToshibaACprivate
    begin(void)IRToshibaAC
    calcChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)IRToshibaACprivatestatic
    calibrate(void)IRToshibaACinline
    checksum(const uint16_t length=kToshibaACStateLength)IRToshibaACprivate
    convertFan(const stdAc::fanspeed_t speed)IRToshibaACstatic
    convertMode(const stdAc::opmode_t mode)IRToshibaACstatic
    getEcono(void) constIRToshibaAC
    getFan(void) constIRToshibaAC
    getInternalStateLength(const uint8_t state[], const uint16_t size)IRToshibaACstatic
    getMode(const bool raw=false) constIRToshibaAC
    getPower(void) constIRToshibaAC
    getRaw(void)IRToshibaAC
    getStateLength(void) constIRToshibaAC
    getSwing(const bool raw=true) constIRToshibaAC
    getTemp(void) constIRToshibaAC
    getTurbo(void) constIRToshibaAC
    IRToshibaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRToshibaACexplicit
    off(void)IRToshibaAC
    on(void)IRToshibaAC
    send(const uint16_t repeat=kToshibaACMinRepeat)IRToshibaAC
    setEcono(const bool on)IRToshibaAC
    setFan(const uint8_t speed)IRToshibaAC
    setMode(const uint8_t mode)IRToshibaAC
    setPower(const bool on)IRToshibaAC
    setRaw(const uint8_t newState[], const uint16_t length=kToshibaACStateLength)IRToshibaAC
    setStateLength(const uint16_t size)IRToshibaACprivate
    setSwing(const uint8_t setting)IRToshibaAC
    setTemp(const uint8_t degrees)IRToshibaAC
    setTurbo(const bool on)IRToshibaAC
    stateReset(void)IRToshibaAC
    toCommon(const stdAc::state_t *prev=NULL) constIRToshibaAC
    toCommonFanSpeed(const uint8_t speed)IRToshibaACstatic
    toCommonMode(const uint8_t mode)IRToshibaACstatic
    toString(void) constIRToshibaAC
    validChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)IRToshibaACstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC.html deleted file mode 100644 index 56903f451..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC.html +++ /dev/null @@ -1,1448 +0,0 @@ - - - - - - - -IRremoteESP8266: IRToshibaAC Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Toshiba A/C messages. - More...

    - -

    #include <ir_Toshiba.h>

    -
    -Collaboration diagram for IRToshibaAC:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRToshibaAC (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kToshibaACMinRepeat)
     Send the current internal state as IR messages. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t degrees)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setTurbo (const bool on)
     Set the Turbo (Powerful) setting of the A/C. More...
     
    bool getTurbo (void) const
     Get the Turbo (Powerful) setting of the A/C. More...
     
    void setEcono (const bool on)
     Set the Economy mode setting of the A/C. More...
     
    bool getEcono (void) const
     Get the Economy mode setting of the A/C. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (const bool raw=false) const
     Get the operating mode setting of the A/C. More...
     
    void setRaw (const uint8_t newState[], const uint16_t length=kToshibaACStateLength)
     Set the internal state from a valid code for this protocol. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol with all integrity checks passing. More...
     
    uint16_t getStateLength (void) const
     Get the length of the current internal state per the protocol structure. More...
     
    uint8_t getSwing (const bool raw=true) const
     Get the swing setting of the A/C. More...
     
    void setSwing (const uint8_t setting)
     Set the swing setting of the A/C. More...
     
    stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static uint16_t getInternalStateLength (const uint8_t state[], const uint16_t size)
     Get the length of the supplied Toshiba state per it's protocol structure. More...
     
    static bool validChecksum (const uint8_t state[], const uint16_t length=kToshibaACStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - - - - - - - - - - -

    -Private Member Functions

    void checksum (const uint16_t length=kToshibaACStateLength)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    void setStateLength (const uint16_t size)
     Set the internal length of the current internal state per the protocol. More...
     
    void _backupState (void)
     Make a copy of the internal code-form A/C state. More...
     
    void _restoreState (void)
     Recover the internal code-form A/C state from the backup. More...
     
    - - - - -

    -Static Private Member Functions

    static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kToshibaACStateLength)
     Calculate the checksum for a given state. More...
     
    - - - - - - - - - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    ToshibaProtocol _
     
    uint8_t backup [kToshibaACStateLengthLong]
     A backup copy of the state. More...
     
    uint8_t _prev_mode
     Store of the previously set mode. More...
     
    bool _send_swing
     Flag indicating if we need to send a swing message. More...
     
    uint8_t _swing_mode
     The saved swing state/mode/command. More...
     
    -

    Detailed Description

    -

    Class for handling detailed Toshiba A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRToshibaAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRToshibaAC::IRToshibaAC (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ _backupState()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRToshibaAC::_backupState (void )
    -
    -private
    -
    - -

    Make a copy of the internal code-form A/C state.

    - -
    -
    - -

    ◆ _restoreState()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRToshibaAC::_restoreState (void )
    -
    -private
    -
    - -

    Recover the internal code-form A/C state from the backup.

    - -
    -
    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRToshibaAC::calcChecksum (const uint8_t state[],
    const uint16_t length = kToshibaACStateLength 
    )
    -
    -staticprivate
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRToshibaAC::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRToshibaAC::checksum (const uint16_t length = kToshibaACStateLength)
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    -
    Parameters
    - - -
    [in]lengthThe length/size of the internal array to checksum.
    -
    -
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRToshibaAC::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRToshibaAC::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getEcono()

    - -
    -
    - - - - - - - - -
    bool IRToshibaAC::getEcono (void ) const
    -
    - -

    Get the Economy mode setting of the A/C.

    -
    Returns
    true, if the current setting is on. Otherwise, false.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRToshibaAC::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getInternalStateLength()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint16_t IRToshibaAC::getInternalStateLength (const uint8_t state[],
    const uint16_t size 
    )
    -
    -static
    -
    - -

    Get the length of the supplied Toshiba state per it's protocol structure.

    -
    Parameters
    - - - -
    [in]stateThe array to get the built-in length from.
    [in]sizeThe physical size of the state array.
    -
    -
    -
    Returns
    Nr. of bytes in use for the provided state message.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRToshibaAC::getMode (const bool raw = false) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Parameters
    - - -
    [in]rawGet the value without any intelligent processing.
    -
    -
    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRToshibaAC::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRToshibaAC::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol with all integrity checks passing.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getStateLength()

    - -
    -
    - - - - - - - - -
    uint16_t IRToshibaAC::getStateLength (void ) const
    -
    - -

    Get the length of the current internal state per the protocol structure.

    -
    Returns
    Nr. of bytes in use for the current internal state message.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    uint8_t IRToshibaAC::getSwing (const bool raw = true) const
    -
    - -

    Get the swing setting of the A/C.

    -
    Parameters
    - - -
    [in]rawCalculate the answer from just the state data.
    -
    -
    -
    Returns
    The current swing mode setting.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRToshibaAC::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRToshibaAC::getTurbo (void ) const
    -
    - -

    Get the Turbo (Powerful) setting of the A/C.

    -
    Returns
    true, if the current setting is on. Otherwise, false.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::send (const uint16_t repeat = kToshibaACMinRepeat)
    -
    - -

    Send the current internal state as IR messages.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setEcono()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setEcono (const bool on)
    -
    - -

    Set the Economy mode setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off. Note: Economy mode is mutually exclusive with Turbo mode.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting (0 is Auto, 1-5 is the speed, 5 is Max)
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    If we get an unexpected mode, default to AUTO.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1205#issuecomment-654446771
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRToshibaAC::setRaw (const uint8_t newState[],
    const uint16_t length = kToshibaACStateLength 
    )
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - - -
    [in]newStateA valid code for this protocol.
    [in]lengthThe length/size of the array.
    -
    -
    - -
    -
    - -

    ◆ setStateLength()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRToshibaAC::setStateLength (const uint16_t size)
    -
    -private
    -
    - -

    Set the internal length of the current internal state per the protocol.

    -
    Parameters
    - - -
    [in]sizeNr. of bytes in use for the current internal state message.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setSwing (const uint8_t setting)
    -
    - -

    Set the swing setting of the A/C.

    -
    Parameters
    - - -
    [in]settingThe value of the desired setting.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setTemp (const uint8_t degrees)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]degreesThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::setTurbo (const bool on)
    -
    - -

    Set the Turbo (Powerful) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off. Note: Turbo mode is mutually exclusive with Economy mode.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRToshibaAC::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    -
    See also
    https://github.com/r45635/HVAC-IR-Control/blob/master/HVAC_ESP8266/HVAC_ESP8266T.ino#L103
    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRToshibaAC::toCommon (const stdAc::state_tprev = NULL) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRToshibaAC::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRToshibaAC::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRToshibaAC::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRToshibaAC::validChecksum (const uint8_t state[],
    const uint16_t length = kToshibaACStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    ToshibaProtocol IRToshibaAC::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRToshibaAC::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ _prev_mode

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRToshibaAC::_prev_mode
    -
    -private
    -
    - -

    Store of the previously set mode.

    - -
    -
    - -

    ◆ _send_swing

    - -
    -
    - - - - - -
    - - - - -
    bool IRToshibaAC::_send_swing
    -
    -private
    -
    - -

    Flag indicating if we need to send a swing message.

    - -
    -
    - -

    ◆ _swing_mode

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRToshibaAC::_swing_mode
    -
    -private
    -
    - -

    The saved swing state/mode/command.

    - -
    -
    - -

    ◆ backup

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRToshibaAC::backup[kToshibaACStateLengthLong]
    -
    -private
    -
    - -

    A backup copy of the state.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.map deleted file mode 100644 index 077266dca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 deleted file mode 100644 index 05413dbb6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -53d4d7402f92ac3b9f97231803ef277c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRToshibaAC__coll__graph.png deleted file mode 100644 index 229b671d814c3591ae65604611c5d573fbc854c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6229 zcmZX31yoc~*ET33-5`xLf^^A9Deb_}Al)GdNC`N!pdbw*4N6K&cS%bQjdXX{4EZ0w zcYSNU|N7RfJNK?zbIv|{?Y&2OYD|2}^HoMGPR^85U=N3}lT9}Zv`u7)aEER|> z4saUNJ7^@K>l}oLeuiGwhL|-Plk4(d}L0 z(b3WAI#-*N2UY_lq@+rUihMhe_xrPbLwe*L#Sb80OH32#2amh%D2qi`*(HHw~lW*bq{7*lOn^lcF* zwvP`_rfo8+x(Xmg$Hy-2DH9jvHBN^ZNC~L2vgKf^Sh3E+UIwAAt}eYV(kzle%2(AL z69eP0mp!8r=1*Z-En%*uMfMWw`1lyv&TuPjY02`4*H~zB`)|`=+H>Y0H4`&4v;K4m z10NG3BZn=bl(mTsW@hG(X6>K&y^bwiTwI>ged|nYvfo}^?P&BmQ6mdJXug7_H9O8h zyuH2Oy?<|gx`{}A?g8WGdh&#klM~0u$!T_W7K?yj{ZBlXT^*P-mrl`RK0cyioj!l` z`^d|k((&W|e&xWA9}#v{c(l)=jT+u3H6&3a#KpCbs!BzC{`^n^e!hCqawqZN!2>(g zT(xLx4m5#!HvP<9#SgjkP(F%2LZ@)8?IFWzM<}VC-n(~vUoyWVY!8o)7$K14PbJl( zc2(DFyna7wYhTleFC82V9k2CKi8|7jl$5-ksopEugKy{OJ%gV=9TGpm`;y7$vf9Ju z5Jw~GNJLH^92G@4SMR<8qQ161kfNerU6mw34242biysNW^!@$O(0ELm`(s(5Q{`5; zC={yk=6vSuT)nmtn}9%Ub~Z~S-Se*TLfxa26J{YHvbf&t!HPGdY`51NQgQL|a$p4n zt^3vPrk9qM-1cXaR#z?0_vh?KjlSh3OZq_M@%pq6;-QE$z=# zNbXFQ+Kd-yQ{rL%Zf{Q#dP7oISBJJcQ$xszp{=dGJKvO|Ds@vicu9S7)Xi|Rp5mnO z`gM<{s)YOGxx-9#1X$5B=N0)NA{I6_k$M$0@ancY*Nu>HE%ytLe z^768*MBIVh?;va@PR@b}xU`Shvu7bbSLgX_ADWDxJ%1jC`-o>OpG!i*2#txEStiX| zh&ouOP3JNysp>*ybA|_T=IW#6=VQuca{e}aK$0Z;=Cil2I=4$eYUWQZh zzkECO>&L`(-#6|;?e0>)8~Y=K0>ik$-QOyEIZw~p%iHrIsJeR0>)Lle-nqMz>*?v) z-5?N%?dymtRV>C&_%v)Hj5mWw9wojX&(xU&qX3qyIGgHBM zb9q*HayyYYP51o$AxJS0{J=~OSvk3JD%FPfd-`N@KU6a$Q^mbvd0Vby(i6&8pZSXDmp8+$&P(ze8lIPxm1SpVA4d6I%cRkhko=aqL#e{jAabUr zk1e{we^geIfeIC(#`p5_s)E6=7_qRi-?;gtr>D<0dR0sWv>2C)LT8FPZ!Q*8-Q9(C zOO3VjSlQVNt%eWJ9rF!L5^FZkK8Q<5^bQWPF);<|n)t+nVpe7&<>%*jhq29FX7YeO zz|SAk+S;nWRuk3x_SKb8@?VCvu5Vj2HN5g!Amm>m4)%X8^$k+4BRALAyFewqZu%e` zA0JOE?isCX>=g`ZqM)FFk2>OOe7u=J(&6#3`SEIRf2vqqUjnbDzW$%B(L8K?{G80p zOoTh?^76QcIf~Ek*4xF^6|r;n)S$WuU;m95h^$3_B7c91XcQPC=;3;`?-*aacyYQv zcU3aekTX$gGIX@k{e*{SJVk=xDtld8T3SVAWl$(xMSJ%*=Nd#G@ffO+ zHkVm7Ha3FJW)0Hd8o3fhMowO4){c3;H#3=iR#h!>^}??$@WIz_-^xLubw$#JrKHe+ z-*elUh)7JNtae(63=6|mb6sv78jAY<{js>X`0HP$=z=zb9SB63($1H#u&nHC3=KU;!-Z@{i(VQU((>@|;L(dGf)f2Px;0h#hEzIhrh#>RFs%=?H4q8H44-qVqobqR zhKA7^CzJUPJKRi6Ov83nPmLQBpJ?VLR{5auHl31~_?(d&)w`(=C5u$|f8#bl4mkO? z2Vs+LPL?v*45eFLBai-dyC+f%(gk3!Fi%gU(NLm0Sq;xefelu(FPTJ-9DR~T`2T^OG+QQ%9(vM$BVbaREvhzvAgirVsm5tx{+qK<7=NK)?oQg~>5h3tNw+EA z;?~xi33oK>7LNkfB%J5!@ykIgznGw(&FA)MANcNUs& z?7|9p|L*j4dqsy(dCP`3ITdtTl;!IB=$edC=~-|!Cntn69$^|a(R%If`MMn}bdE48 z)hJ0hfBXp5Hzw#0 zDRNAUicpaU6Qvcw%;ml!DIw|1RsOA(7@Ad!9U1tvp8QG2Of&T!P`InJJwdk#^nMl^ zdZa!a(vWn}rLz}2z?PY!YLoiGt={2FYxL{>!8cOTUez7u&hD@8!HWAHFB#p>WP6BS zC;FB%MMV~^6k$|Wakq9)Lo@#Sb$txdhBxl88eOwWh5q(0t!DgU57(R2h144;<~?e7 z@IGOW#YOI~E!nXMmrhRwRjovfm#r5wuBeQp1dc)5YjgAbwSqon+K^XlXYbI*PT*#u z40Q@`ab{p0OZwEFf5?Bca42$G=pv)CX=~@J1Kf$$Yz+O0~`p0rsO88{YD)b^IV ziJNj`g4peCE=|6h?AGG`$s_8#8n1Or?i0U_Bi4~sMP{RQycV7TUe#&&7D*&c&nyz5 z!p`JBnPr4hdrMzb#HT|NwZy0kuybA zc1XP>v0!_MuhY1#Z9Ed2zgfI|*LU~%jJIp?%X3tUmafQrL-gE8ZUss;_v*3DZo@1B zFK0c6X8-po@55!``a(H#`%+Ap$Ho@&#r1lN#PAds$GJP41%!(J{wmdIZaGSJZ0dmS%wW!|p#h+C+$a{3Ed#I@7rQla8$8&=!>HH1?U}*kV z3C-Cdwq+h#9Gu!Cqtk=J1Ah%=W*o>1Lh1{aYcJ-B4I-wz_+%4CXaFZs0gNG3*#goKwxL9LV6Yf$%f;pf%im zN(XCr{EwAOH%Q5UWij}lWB>nQ=yVX`KAZxMf#PyE%Gj|o(xbz^d|J40@tjFsVtjmX zCdca9T9qwo+r{feRh|2$EG!CZ<=BI{{ff{$rPwZ@L)vqKb7MCYzOY*)h3D=kA$h?_^oYE7w z-X$5IQZ9BN$aSe3M_RHtdy7_Q6_Suc`>dthLKOrVA=J-Rr-jch zE^JUBb8yiakQ0egeylY?}VsX(F&=;eM|z{9zb&R$0AAnl)8K80vKbO^eY?3 z@T`5tV(?ME@W>FK&D5S|HJ2gxi2v}P7d}#!Jw%8?U0&zq4s3NJBW@m}dKQTLHcK;V zokm?phmC}UqyymU7)nM)MovvFdU)q7^XE^+>!TS^hf>zgrwn2>C~~;7!K7fc$g@<38Gcnv$N*gBBAL^8+SG9r3boyx@e8 zN&1%zw4gRqqTb%#dqmUI({`vIGM|&gIz{bEM4AvI5?hBx zn(_B6jL$@7R@wmukG1%Cdr#H7b3qe$SRX(3*Q>C0zPua=I^r#92p>FGM1y3$go3Ud{)cXXYwr5`At@^tE;QSSqf3srQM^WaVersfZ}Gc zWf_+`>CoNJt6MqAm|Kk}cTn6X=3ZQE``CE=hl_=sT~k{-7-5@TRD>7T8aA=TYJIhmk9?-hhP*@#O?2{SIWnJ%{)h%AG8py=kl zSu*LjPL)|WySg%SaD+I{)f1DFwgU#@?3}+v;qTS`hQFfj1&@X!=+5kQ$p6}oec zf@mH+QczODZf&S2ZVlvL2y!U$RJc7WF5s(5^($_ErJn3vP@dB(VNP1v z{rnRRm&)}}KNR#qw!18!%HD7Pd*N zx=lMiS^;C{mP{h;t$ZH)ewAF4XKUXGaylI;IgyhEh1UwT&wcLCJ*A6074!<9G7L;+ zCz<(~#Whl!t}%EZN#&pR5nnVrEhcoTO-ncNCx^iDE~0njhhk04KLrmU?SI9*G@CgW zKa~}siJe$dNbzFBkPC7nkgTx5!qYvtQKqIiI&=!>5~DWStE6`PfYO(@IjV0h?Cw&D zEi2;Rr4M+>waBFjKEB!LcON@E@UOQ+_otr!@hjtwzRS^Z*@;~0Hm=&GYsb~>6Ki}L zfBRzY$WMNra!RL1_AP780{^VW{q{cGLa|>Q!TZfdo^ExzE4Yd}GGI_6A13hdq+0k> zQV$%fx9U~2mp7hcW6}HNWzaTTTUatxmxJEDDPJ2~S^8aN5`G=QwQ9m+v0Q)aw$J7i zY-_(tBr5omQy7sSmaFpca~^Fi%tjRM#%ws_n4?knpD4Un0hUUS>{k}9|8#Mc3}dLG z;$sPkxe+tPvqVXs`W%^GPegpmt^ZcO*`2K${dfA;QdGR$6lk<|=|!i1?Mw9_cw08W zJy|)MG^uf;6jAu^*#3t*Qt;Uf(h|^%+g77kXP8M5I8BGYaXY%Z4Ip^=_|w;Vqw62G zauWWDf!k};_SI;f>ixyd%@9}~GY}&D7F~R1zk@J$K!MUqdQUy&zuj~46NEN_0$pE; zlClOxbbVgaQmlCkOolSA6KfvhMnyTf2avSLZhCk);K|@+w%-!7sp)u#cStEHx~@?t z`9FU?mXu5vUGOFav^q)u2zGj;~LKR`&M?tL!JAc_aC-v9SSi3JPWGV5*l*Gc z7Z*1)GLlV5=1Ut*495(&z|lXNF`|f zZoQwXs;IeSE1pXi2wp~2@goe^jls3$&M-SL-#$tyU-5u|09jetUtTBc5UHOT5O*Aa zT@>8!l6M#o! zm=)}}TRaYob5&A4H8n}7N}^b<&i6F?N{pLc>FDS*&1vU5^vGho-}~E%JX%QtfnxAQ zG6D$l{P02KnIC}IjiHPU;HYIQMA3VCdj2wPy9Y}bSMv3h1iE=@W@cq|HR$8V`}ZFb ztk!L$14CgfUlaH??FdB7!p*)183jdbM#jP-gk3c~95`7p7!1U65iBam2u*wX2>JF> z-!raU<)q)Cr0io`zzkwxW##w1_N*#d>5kG=S3l|5H^BB;@VO9nYF8?jr)NIy<2N@m z0|J@f`*JG}k3o_)BKP(nKQ)zhcXxMld?%qHd&>=i2H+Nq!=m#Gd67v=dS)h*w~r4t zE-t_Z-L!>)y#yQ5c?hu!7ytHXgU12nz}3|?Alb|+!|zrMWXRWqN%02f;qNcD8-XkY zaCHd8>SV#nCL&8Y^_hAED=#m=`Y23`=zhRfomPMb2mVHHPmk%{?G66m#?n#%!j^@7 zBY_6T#?lfE%$K0GolvUZz^SS8@@$6+;>H0Ive7OM6HtktDfe0uMN5?`1abGT&Z!>s#81#3+WL75V%2~ zKUaX7EGR78Nz3y%nExkuTW-%vS2s4|fG>D;&@vQ4%nT;*&}J}|QAFfhcsL%onLkMx zAiB9g)pf}X{Csx_lq`_nBmnFj9eJW8F9D*GV=)4kG8foQ*N5$dyHjN{M*Cou(LCYs z$pWXIXhz^?oPLn_lKIOP!E}DGFtl)Y>w$-PA3T|zlS52H(^qEEtxsDsCRA>(9|hXP zFNWEPmcR|;}Q}+gR0`v zEy)ICg*);I3ro<{)N2h54M0>t&dcvtv< z-X61YavB=`Av4|J!K<#W4l*Vcbd+)sEMw252b^47h%GnqTjWYOwQxbFGgQUmWRiJ( zef>}0_oANSzVC057FNXN_M8CC{;x#;zbAj8VuZV+7<5ZHqgf2BMw#tbxi5+n8rOVJ xfEs+I0cVW*=db@47)boeLe#M+2^8KDhB>AS?^y;kf&U56l;mKtB`-|_{~y}aUgQ7( diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc-members.html deleted file mode 100644 index e06ea7568..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc-members.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRTranscoldAc Member List
    -
    -
    - -

    This is the complete list of members for IRTranscoldAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRTranscoldAcprivate
    _irsendIRTranscoldAcprivate
    begin(void)IRTranscoldAc
    calibrate(void)IRTranscoldAcinline
    convertFan(const stdAc::fanspeed_t speed)IRTranscoldAcstatic
    convertMode(const stdAc::opmode_t mode)IRTranscoldAcstatic
    getFan(void) constIRTranscoldAc
    getMode(void) constIRTranscoldAc
    getPower(void) constIRTranscoldAc
    getRaw(void) constIRTranscoldAc
    getSwing(void) constIRTranscoldAc
    getTemp(void) constIRTranscoldAc
    handleSpecialState(const uint32_t data)IRTranscoldAcprivate
    IRTranscoldAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTranscoldAcexplicit
    isSpecialState(void) constIRTranscoldAcprivate
    off(void)IRTranscoldAc
    on(void)IRTranscoldAc
    send(const uint16_t repeat=kTranscoldDefaultRepeat)IRTranscoldAc
    setFan(const uint8_t speed, const bool modecheck=true)IRTranscoldAc
    setMode(const uint8_t mode)IRTranscoldAc
    setPower(const bool state)IRTranscoldAc
    setRaw(const uint32_t new_code)IRTranscoldAc
    setSwing(void)IRTranscoldAc
    setTemp(const uint8_t temp)IRTranscoldAc
    special_stateIRTranscoldAcprivate
    stateReset(void)IRTranscoldAc
    swingFlagIRTranscoldAcprivate
    swingHFlagIRTranscoldAcprivate
    swingVFlagIRTranscoldAcprivate
    toCommon(const stdAc::state_t *prev=NULL) constIRTranscoldAc
    toCommonFanSpeed(const uint8_t speed)IRTranscoldAcstatic
    toCommonMode(const uint8_t mode)IRTranscoldAcstatic
    toString(void) constIRTranscoldAc
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc.html deleted file mode 100644 index 79571831a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc.html +++ /dev/null @@ -1,1078 +0,0 @@ - - - - - - - -IRremoteESP8266: IRTranscoldAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Transcold A/C messages. - More...

    - -

    #include <ir_Transcold.h>

    -
    -Collaboration diagram for IRTranscoldAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRTranscoldAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the internal state to a fixed known good state. More...
     
    void send (const uint16_t repeat=kTranscoldDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Change the power setting to On. More...
     
    void off (void)
     Change the power setting to Off. More...
     
    void setPower (const bool state)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed, const bool modecheck=true)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSwing (void)
     Toggle the Swing mode of the A/C. More...
     
    bool getSwing (void) const
     Get the Swing setting of the A/C. More...
     
    uint32_t getRaw (void) const
     Get a copy of the internal state as a valid code for this protocol. More...
     
    void setRaw (const uint32_t new_code)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
     Convert the A/C state to it's common stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the internal state into a human readable string. More...
     
    - - - - - - - - - - - - - -

    -Static Public Member Functions

    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a standard A/C mode into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode to it's common stdAc::opmode_t equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - - - - -

    -Private Member Functions

    bool isSpecialState (void) const
     Is the current state is a special state? More...
     
    bool handleSpecialState (const uint32_t data)
     Adjust any internal settings based on the type of special state we are supplied. Does nothing if it isn't a special state. More...
     
    - - - - - - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    bool swingFlag
     
    bool swingHFlag
     
    bool swingVFlag
     
    TranscoldProtocol _
     
    uint32_t special_state
     special mode. More...
     
    -

    Detailed Description

    -

    Class for handling detailed Transcold A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRTranscoldAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRTranscoldAc::IRTranscoldAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRTranscoldAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTranscoldAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTranscoldAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a standard A/C mode into its native mode.

    -
    Parameters
    - - -
    [in]modeA stdAc::opmode_t to be converted to it's native equivalent.
    -
    -
    -
    Returns
    The corresponding native mode.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRTranscoldAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRTranscoldAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRTranscoldAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint32_t IRTranscoldAc::getRaw (void ) const
    -
    - -

    Get a copy of the internal state as a valid code for this protocol.

    -
    Returns
    A valid code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    bool IRTranscoldAc::getSwing (void ) const
    -
    - -

    Get the Swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRTranscoldAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ handleSpecialState()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRTranscoldAc::handleSpecialState (const uint32_t data)
    -
    -private
    -
    - -

    Adjust any internal settings based on the type of special state we are supplied. Does nothing if it isn't a special state.

    -
    Parameters
    - - -
    [in]dataThe state we need to act upon.
    -
    -
    -
    Note
    Special state means commands that are not affecting Temperature/Mode/Fan
    -
    Returns
    true, if it is a special state. false if it isn't.
    - -
    -
    - -

    ◆ isSpecialState()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRTranscoldAc::isSpecialState (void ) const
    -
    -private
    -
    - -

    Is the current state is a special state?

    -
    Returns
    true, if it is. false if it isn't.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::off (void )
    -
    - -

    Change the power setting to Off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::on (void )
    -
    - -

    Change the power setting to On.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::send (const uint16_t repeat = kTranscoldDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRTranscoldAc::setFan (const uint8_t speed,
    const bool modecheck = true 
    )
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - - -
    [in]speedThe desired setting.
    [in]modecheckDo we enforce any mode limitations before setting?
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::setRaw (const uint32_t new_code)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]new_codeA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::setSwing (void )
    -
    - -

    Toggle the Swing mode of the A/C.

    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::setTemp (const uint8_t desired)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]desiredThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRTranscoldAc::stateReset (void )
    -
    - -

    Reset the internal state to a fixed known good state.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRTranscoldAc::toCommon (const stdAc::state_tprev = NULL) const
    -
    - -

    Convert the A/C state to it's common stdAc::state_t equivalent.

    -
    Parameters
    - - -
    [in]prevPtr to the previous state if required.
    -
    -
    -
    Returns
    A stdAc::state_t state.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRTranscoldAc::toCommonFanSpeed (const uint8_t speed)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRTranscoldAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode to it's common stdAc::opmode_t equivalent.

    -
    Parameters
    - - -
    [in]modeA native operation mode to be converted.
    -
    -
    -
    Returns
    The corresponding common stdAc::opmode_t mode.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRTranscoldAc::toString (void ) const
    -
    - -

    Convert the internal state into a human readable string.

    -
    Returns
    The current internal state expressed as a human readable String.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    TranscoldProtocol IRTranscoldAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRTranscoldAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ special_state

    - -
    -
    - - - - - -
    - - - - -
    uint32_t IRTranscoldAc::special_state
    -
    -private
    -
    - -

    special mode.

    - -
    -
    - -

    ◆ swingFlag

    - -
    -
    - - - - - -
    - - - - -
    bool IRTranscoldAc::swingFlag
    -
    -private
    -
    - -
    -
    - -

    ◆ swingHFlag

    - -
    -
    - - - - - -
    - - - - -
    bool IRTranscoldAc::swingHFlag
    -
    -private
    -
    - -
    -
    - -

    ◆ swingVFlag

    - -
    -
    - - - - - -
    - - - - -
    bool IRTranscoldAc::swingVFlag
    -
    -private
    -
    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.map deleted file mode 100644 index 4dfcacf3d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 deleted file mode 100644 index e7cab0144..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e64f9bf7200b5999190bcf214ff056c7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTranscoldAc__coll__graph.png deleted file mode 100644 index e248865ff7f32b055b4d5152f56cecc1d5e1d9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6296 zcmZXZ2T+q+w}vSKN);8sM2Je4BE1(yiV*|^L5LJ-(!0`0s3KiJq!$4X2O)Gq4ZT+Z z>AedWI>b=#_MEx%&wuZvPUf3$@4eRAd%f?IP)&6e8cGNy5fKp${E4C#_{4!1>M}Wa zCtXtN03YP0sw#>^7k?g^*xWcGBBp0>#YZnZQgJihFLW%eUM>%)VOOc34&>7p1zodcpM}9}H_;XJ+ne3uojLtu-2GY9hWHL=d(e<-Pg9$nJc0eB26mm2YG8=u<|sN0MJWj%WE7jA$!h+q| z+4=X$$yw z=?FJvx&8(*^Y`;?y|Onnahw|MBO~#$-bYvI>HV{~tVAFrq@VencZ3Q9 z14CQU=w@8t0S%kkbH0*;q)`5|Of`W)X zrlg?6sFAEwwiIKpm{ z&kg>_(^fJtFo@gsBbZrQa>mBR^(`HGVV&IEZZh&4Sn0lWa3~~FL?Y`w69=tsNTv15 z_&PZidmN6u>|0WO`t;JBy}dm}W##uotrfOoy-V^Zzl4cDfC$i5*dG0wFa`@@EZ z1IePQyhe57r?L_fdaWHDb0xi_=vQsi)vhU@tnDRdt(jMrmoGmwsQ0O!sOs%iBmPiO zz`I}USWi$UTHF}PSGat)J&KtJ<2c73bQOm%mY=Qf?&)bOwde`T&(G)L<+Urp;X+M% z69rAz`qOay!}0bGMWYzH@Qh&yHTgYOR{aK~ta3KJUt{A#x9!=!Fb1B>SFV^0W+|o0 zqgedFU_?GXKD~^vas(eJDsxNAlui83j=%-(=g-RzpFN}T^z@XFmKMJSyK%!j@68bx z5{Z0P&&kfd+ek_`zqlBX#RUp6CLv+WJbCoCtoRShA8A(G-OuTCH z_&v2?bgiNH*ce#+^BZK2j*jYSQf=}V1PvKk*;jVnDrQz1NgzR%`lmbNGc#%6RQQ;b z)b+{{Yr(>D>sD98#hIgehFsq#Ztcr7G+%3KASe_{1VS@bWbEj&pmh0>xw(1D{{G?N z*KgmxbtzF|jT~bzhazEFi5K;5ILQ9mz*;b)QD$Z)QCydzf`UQ_zg`6}jhn2kcfeh`&%*;(RWs`_9$XjIg(2H(eETeC!oejIUEen2UEc{ zG;(Wdl7%h%uQD(w85$a<>{C)wnl846wzjrvzIYL2RAf2wO=sqNclyfcUfpJ4ZE;x{ zD<5AZ*obZkj<(E7ii*WngZJuBwxmHBOw{{IcXf45`{HMU-oGz>yRHT9*4fu*F;Qv} z6cQqA^*!^=eo5=GjRtifIn5%Nz$(hrK7PGh%w4x~#(*9QRekqPRN8%Oc_9SW-q#no zv*UDpxT&I`K;n(xYHMpFtMYU&LzeSQ7S{EJZ;uY*#I-*M49 zE7{FK+HVzZT(XG#sX3hNWrxGP_4N!TVrXl4i~O}f<`BeNxzAfGX1JB{G#Io^S7rqt zFfMjnUOXm&kYy3|K}?<}&(MFpdCdCt_LaVmk_ zAS-&#KS~Q9d681?#*dH*OnXGyd}*v9e>GcjZtv`Tc7MEY_6}ZA@&e%zy0ICV2qA++ zHu?s|RkUb{j&SfjY%~`akw3^55v7D|KJzJArwlRU*Y?FWbq~TB-J!qP_^+FxA2KAu2X+^SyvwbJy$q=%4;t@W_1{@uuZ-zDPZN8M7Ul|#LN)-RR zmK37ucus-s^Yc#oZnZ+z(y#e$h~$#G^JCkoX62ohqgVo*8(wztcwsDl2C4^p;gk3N z0>6y^WKd|myLu%OO+N5^?|W6*i;QyQ7pVvu^o5Ou5aqXUh{VBx1^?Do3SH$E?eV}< z!dUZm9yivrDUUsCFzCc7sXXoLan2#NTT^>pIk@+VLpk&yxD@b@2Zc%e64cRm>n4zWD- z{}N5}`n-vrI%5U7uftZ!UPR&%;Z#Ei`N54f)n++$Wj_5`UCA{s{Yb^EBDC36yns;; z1_rS>eQI3SQ8Pb2hv_Q&Ac~=6VO>enH2m_C4UO$5$DgEW5Q}lCQP~mdK^f z=r&eR>5S5r3{>qYNfNBZ6A$K)YNt!D?a~}sgrHC|(iMVT!cPV`mH2j)3v8kHSL?#1 zXSJS9>y`}%jqU+apDy~d>W8dWE_*i|-)A+pt7(>{Kf5LKyu-JQLTK9lvfGC7N@n)kD7I%NCU?WKoX(ClP^K1!O4&X~pW_b+Icarr zev`4vTE=~wdo>-A(2gi(>6$ttTPcDI3#XXzmy*Bm7jc_;$Gv?FXy>DHiy?%36z|y5 zex_}L+{`^bK6KB<#ub;S__$s8m0=8RQ+vt4MMEW|dfDGkKzu7j^y9_M+u&{z&lEFN z8&xP_F7hSQP0^1{*WZDKYsA4%0(X0Sop(!FE$rPAu*I2<$P6cD&-X=%yvEV&h^w%*~Fy1LhZhHhw(cW`h}R8;&J7dMB6kVSTfGD@ZxU? zETT?yi)VMFKY%~a@z;2X>B$jpb-Sslskx^|HC4h{K}1X}Of`Z3%BxqecH0<@KO`qZ zVv>{Ze|})>kS=%s{!`G9sIW#4{zxI%`3{Ak*MXIZ2&C_jKp=!_=c>R6$naP-BmvH_{oa-H{HyIafqi_4#<-4bGWRasc(I9`{g zD0!2BJ0)GvQd67bw`L0TN&;I}jWQ4_~hPcDa*Yx5(%jknl7#G)$4oHa0du?*AqbfF`HD$#3w)%S&oxWF%G6_5I&} zb8T#FOcqFUaeWBA&Ux+n^~cYj(|cjlb@FxJJyO=DaB9AkArl9;Fp(|0z8$wc zz23B(j!8q-chgC~X7C|(rT|G@;RUH zwMOcOPDkX%_4TG%&QkkCb-^C?y>~m8r3c^uD_c5gH{#{42Uw4#9 zO&*YG#_A6*)&~Aq{xwI%b*v#8jg`J3&4{jOiJ62O$!@iTJs8o9d8IOss@9jjkw^M3 z3vdOl{8m!=e?*fTy-7fLEzJ)d5d^p@0jx)9gD29!V;gd@Kg3`gGNiWq)kfW}zwO7J zBFQ6iA?w-?SanrBpF5Hr-2~)?1`4PAGN0dOKF;#+lW|_WZEeEG{1Pe}&`_T@94#+r z>~nP$pQ~aan`%DC6tb8o2+M>|<%T19j6*DZs*OcY=z~9Aa*wcK2iYvZ*F#MLK8;LF zcNUp#7zY%ObxEgtQ6-fds%7hVENl3`U>tE>J>xM=9^SSehsX~KE`^(lu| z$eOQlVmK;v;KW&Q@L|(Lw?oDS{-ns&IokjGJETX{CqtYUbi$-jA>gmW$F{lilHX3^ z+MP+1>dad3kxutE&j< zh>RS;G5QEfG2)T5!XCYOA~BBgtwY1B`uHRP6B3{)L8rhL9GXt|C(3$b=2u0vMtqfL z8Sa;dJxdr_TNC-QVZZT{Q&4blGUem9JQocr@i__nV)z4uG<9BJb8~Y6bHGN||4Y}A zDR4&Hl5c-%=Kpb}m#L_->+0&D*|Acp|4h zOG_<4rC*_;vDo;LhaSxyw2}a4Xl1J%-!>M{;@EH|mamIm1l*^>O=8IYSZxSnK3bsv z$ECb{+41FZ$auN+^+%5$<>cff=IU2EF!S^CgTt#iEXECX_Yw?sDma|0vDWBMDrD`Q zDVJ7W3C6t6z|i&wD;O1l4pTg0joMF{6L6T8;5VxKb9D41JXq_DVa@sa^$QnedV0EA zhFqHQ*~Uw*FjIbEljcj{vd*un2|wo=gh6YKx6<+d9yzBRYF2SQ&+cr?)*r+KV6op@iCpOqM8~t;6{AyMg|7G zJVkZD9x*z(yRYqbz#PT;)`xSQ-@RLzu*|TSt@AXuun^T}aSv13U=gxzs>{{65e$NW zkvv;y37IH1A;r(Q!yu9GxwZcydM%XH+1qP=c6{jJ?Y-a08lBkVv)9F0VBC-nJUE!| zc$G8j34WVXUOq#7&L=J?=+YJzZzLon1Tyfqq_w!ibY~<~e7w$6n3SA)e!RrY2SA4i zn0z{;u@5~31%=zMasNRp^ZnJnKen?kMZA&;4^B%bSJ$OLI=M{XFKM7+A}Oo$O@ScW z6i_IX1$F8S07qzKq-b=5wu~13=P+XyfKDoUdQ8KAJzD}qi%m|h-Vooatfb@&Ku`9d zh@lTy4~S<-lCY%Qo zrE>Xrcv$b=^#`spA%w;2Z+)TJ{+8@@=x{W%bbAO4`NYA2zoMdoD1u2at4qYe;Q}uO z_dZFXLjZo#0vsn0GNtxYVn9lOu3`#`{1O@2b3MHe%Gpg*Q?>fkOYAZXJjKsyjs)z*rq%mQXIIf>}*?(S^? z44@Z9bywo;&#T*Y`?O#_s{^3C6#!vtWCmf2R-1%XRaFT92MxB3ECf1rA(viLBNcQN zfF3hj+n&lfq^g#dR&5UoFhiiu0#8qU02=|?;m6pRnNZTs&d%%8-@A4brNODGw}E7M zqOQ&XpzxzWazU5nC+B+!4Vnf95g;N(s52h3jwpLfLU4-r2tBKE@w-i3Fi9>hu6fwS z?-0*Zu+4~f@OVcpehCRCtWmU4QG*#M&=~j$E1)Dfg@sWqA#|0s5eW&5s-Jlmz9tx% z9v`fqo^7KzMMTPHR#YM(!QtUl1M(L#K-aOcvzIu`NZn>;CjJ9b{r&w5460*+l!^lo z^XFhTaqlpnQC%Xt>SqC``G>k_#K=Y+AW|xT(`d*M*uarzv*&%_PfEcg?Pgad1S&g% zMK(E*f(~;l`iJZbf=Iih>nh+hY_+R-nqc#UhK9=Qwq75lRjOD{|1Z@2UrqIYsr$c8 zW0ID%BN~=4@IC&RO=p(=>*`p*lf8;NXEMh7JrHTo->qY~C - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRTrotecESP Member List
    -
    -
    - -

    This is the complete list of members for IRTrotecESP, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRTrotecESPprivate
    _irsendIRTrotecESPprivate
    begin(void)IRTrotecESP
    calcChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)IRTrotecESPprivatestatic
    calibrate(void)IRTrotecESPinline
    checksum(void)IRTrotecESPprivate
    convertFan(const stdAc::fanspeed_t speed)IRTrotecESPstatic
    convertMode(const stdAc::opmode_t mode)IRTrotecESPstatic
    getFan(void) constIRTrotecESPinline
    getMode(void) constIRTrotecESP
    getPower(void) constIRTrotecESP
    getRaw(void)IRTrotecESP
    getSleep(void) constIRTrotecESP
    getSpeed(void) constIRTrotecESP
    getTemp(void) constIRTrotecESP
    getTimer(void) constIRTrotecESP
    IRTrotecESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTrotecESPexplicit
    off(void)IRTrotecESP
    on(void)IRTrotecESP
    send(const uint16_t repeat=kTrotecDefaultRepeat)IRTrotecESP
    setFan(const uint8_t fan)IRTrotecESPinline
    setMode(const uint8_t mode)IRTrotecESP
    setPower(const bool state)IRTrotecESP
    setRaw(const uint8_t state[])IRTrotecESP
    setSleep(const bool on)IRTrotecESP
    setSpeed(const uint8_t fan)IRTrotecESP
    setTemp(const uint8_t celsius)IRTrotecESP
    setTimer(const uint8_t timer)IRTrotecESP
    stateReset(void)IRTrotecESP
    toCommon(void) constIRTrotecESP
    toCommonFanSpeed(const uint8_t speed)IRTrotecESPstatic
    toCommonMode(const uint8_t mode)IRTrotecESPstatic
    toString(void) constIRTrotecESP
    validChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)IRTrotecESPstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP.html deleted file mode 100644 index aef4de12e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP.html +++ /dev/null @@ -1,1139 +0,0 @@ - - - - - - - -IRremoteESP8266: IRTrotecESP Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Trotec A/C messages. - More...

    - -

    #include <ir_Trotec.h>

    -
    -Collaboration diagram for IRTrotecESP:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRTrotecESP (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void send (const uint16_t repeat=kTrotecDefaultRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool state)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t celsius)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setSpeed (const uint8_t fan)
     Set the speed of the fan. More...
     
    uint8_t getSpeed (void) const
     Get the current fan speed setting. More...
     
    void setFan (const uint8_t fan)
     
    uint8_t getFan (void) const
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep setting of the A/C. More...
     
    void setSleep (const bool on)
     Set the Sleep setting of the A/C. More...
     
    uint8_t getTimer (void) const
     Get the timer time in nr. of Hours. More...
     
    void setTimer (const uint8_t timer)
     Set the timer time in nr. of Hours. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t state[])
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t state[], const uint16_t length=kTrotecStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    - - - - -

    -Static Private Member Functions

    static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kTrotecStateLength)
     Calculate the checksum for a given state. More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    TrotecProtocol _
     
    -

    Detailed Description

    -

    Class for handling detailed Trotec A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRTrotecESP()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRTrotecESP::IRTrotecESP (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRTrotecESP::calcChecksum (const uint8_t state[],
    const uint16_t length = kTrotecStateLength 
    )
    -
    -staticprivate
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calc the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRTrotecESP::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRTrotecESP::checksum (void )
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTrotecESP::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTrotecESP::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTrotecESP::getFan (void ) const
    -
    -inline
    -
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrotecESP::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRTrotecESP::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRTrotecESP::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRTrotecESP::getSleep (void ) const
    -
    - -

    Get the Sleep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSpeed()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrotecESP::getSpeed (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrotecESP::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTimer()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrotecESP::getTimer (void ) const
    -
    - -

    Get the timer time in nr. of Hours.

    -
    Returns
    Nr. of Hours.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::send (const uint16_t repeat = kTrotecDefaultRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRTrotecESP::setFan (const uint8_t fan)
    -
    -inline
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setRaw (const uint8_t state[])
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setSleep (const bool on)
    -
    - -

    Set the Sleep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSpeed()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setSpeed (const uint8_t fan)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]fanThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setTemp (const uint8_t celsius)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]celsiusThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setTimer()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::setTimer (const uint8_t timer)
    -
    - -

    Set the timer time in nr. of Hours.

    -
    Parameters
    - - -
    [in]timerNr. of Hours. Max is kTrotecMaxTimer
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRTrotecESP::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRTrotecESP::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRTrotecESP::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRTrotecESP::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRTrotecESP::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRTrotecESP::validChecksum (const uint8_t state[],
    const uint16_t length = kTrotecStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    TrotecProtocol IRTrotecESP::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRTrotecESP::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.map deleted file mode 100644 index bc43c1126..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 deleted file mode 100644 index 31fe8e33d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ed10cd332157d68f880b853451860649 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrotecESP__coll__graph.png deleted file mode 100644 index 45b47a0725c7fe4f7365dc97f27fc998ada83a3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5848 zcmZ{I1yoeqzyAQz9THMXD=;Klf>;2xEb{2VAFsBanyyI7dAu zYXU9=mKv(cpxZy6EOY@91fq{pQ&xK6oralzXQc1Z(sOt^6EsJyrwfKFrwGY$O6b^8 zJQ_;N`5mN^Qph?e#{OC_=k542x%C%sJaw7n#*%4jG@t&}e_XgVde2^9R8vC~62TmM zse&Ie2;aY!35?~BOHD*iIh>(0!Z%)3?05;DgrfrNE3mVXR8Q`!#q+q=f)(SXMVW-u ze#DX`alQSEKr>!!)q5rA>sK*@3UfHZL^}6XXV~G@@vwdM?#~iKWI{rIUv=KeDR4*B zVXE?3X9`QZtE=l&E&OHE-Jfx+@_t5RpxnGXm$QRcg9#8+CVaLw4v8GI_C|6}iL(b@ zRpsMP2lucCnjU+Qu}Z(#+tF6k{cIcFFY*7o=fdMrySGh)!!ID9tV^e^p#e9G9B(IQ zmHwQY%T*#+p>anu-l6*u4zrA>z_8q@Y0hM1b`~FrqoX6)J+TPEm$gP#`ep`NT2YPA z)Jqq4hrPx;w1*Q+xZ4^tZ(Zen8MJNWoZ z7>t&tCfW4#^!8bMFky}Rmfo`%wy4BJhA&^f?9SFfSuJ#Q6oEI)&CSUeg@Q1%b@u3F z2}$n*Sb~6YN1<-c!SCPJI}>Ge3=E<+-|77P{kP_uB%$)>T!|110@#mSH5M7qPX!si zBr3X$((ZgCCoL6)h4&vkc>n7c%+Jp+N$#D5zP`TJ_TkadGHTL%W&3Bzb~tvTxC-Sn zQ(RT%Q>Jws#1!@H=H|3DhmVAsni`Z_P#_w3<0s*?Fp#H_=)Dpp`Iok~!A3GLT^qxh z8~u>h)#Yx)@BPKh`g$n=dW7^~zE-MHgDZDvXsBkYL{!o90$0pv?b(^Psi|piZ!c_P zDBaUP(uIHF-M*YbsgaVgF%yzU%W}EvmgWzpc5 z;Fc{R-)J*H0-;*;-6n0u!Sxq;2K^6lp1#?tmY`Y?;8Ka(k`0!z5%l&gg zf`r{T>4S)McK{1@w-ECy^v8NjA*s>1AVjrjTbAN!pN0X@{(MZpKhOrj)fpVO&g9%>u zIbMGyc5k}gg_Bb?x@&eeb#wC#uxX8IY{`p?ioCtOLF5cV7pMDBcXzRtmX?83$(XIN zf|cD}zvnyZYHDAqtK(y1sVprm0W3>NNS%01oGWU83&X zKy7(`=Nn^3g9v^%X_DtoJuM>8pF>xhzFe(uXDcF_69V^JAz z?gxA5voQkrX(IZqD{r_QUw`S+3UPswE>Y%u_~q-1FTF^!)WR~Ms@Dtn>e~9FG6TUb z`}6iY@zQinelLAbJ=&-HsY8BEHR1b7Y{-h+u&%_Nm*-YzMYE0#xoo9TcjNemG|n{U zQuKiF!fdHa)R!bF|LH z!Moy=t@m`b7bdnVPntS+m*!o7*m*~r{LsAdGMqkKeQei1K=izGh@R*DupC&TymX~% zHt0O`9fv?Gmzt5H(VfNe{*Bv=;jF#l=J>qO0m%0$QC>W^GJHhCVW3E6fCx;o8u-DT z+c^sRC$X1<`tr%HVf`B=v*_}n-50LH7R@llq&poyywebMR-}P3<%5p@jKMp5GbI52 zsav4%QSrvut!)1^YjxAE49~AwluvHica@0s;kNyYza0X_djjwX&J=zrky`YJbPH4_ z-65of991NOEz4`f6uyi<(m?-0bSI~sRj$>R1tU2s?$@@J99!?T;+91b z97lwaGDLnDDhhp$ub32PNc9pniSrbvl~6Y2Yo~iO3B^1eTM}~{C-c)SHm=*Vy3X#N zxJB^9@mcL9(FNQK-@U z;8OBZc>C`bJ_?e^CponhFQL3?b151b)~8Miw-I5(opk9Ra!R7(Alp7?7z^E(j>}UD zBo1cg1+I=g+_5e&QfP zTHG_=bCrweZS8#_N@l~iw`7+UI%n7V-{553r;Br2r~3frV8+$VdDh6JVDo<5S- zQQ&mZADrW5hl)7w)@^i*b$YD&u3a{5PYLZ)g@2k%Ni2!oPnDKNg#MlhKE`6Eu{q zjAICG**O1AOw2?@ufWZb+xBa3+@K{ zpDLVt|K9r6riOMfi!|G&gICr9E4;P7H{#4>(a0@s!}Ez7dt}}@JI;;EqgMN43rfx1 zm+)`M&`BgWnn<)syUsmUz?d2tMP&1RPN+qfb>M!Zfxpw(vuku{`%Wg#;>#J%A9k+< z?6o=ag^Qcp*drOUHg}tFbhuJr6Ru=neJXjmP_6_$;n`7SBDCn^@$5too?u*LDA?s4 z{$Bf9mm)%|dMlH86Z1PawZQLpmr3I;wdO{a&~o>E^&!Udho~-K*rqeZrYvb5SGKj8 zWg1&AfUdK?@aDEdu}hnceve%3%BlyLq11$wYy8Dkns5F6h>;PU6U=NuG=z`u zJ`WE81Og!-V{8L%&6YO&GU8@>2Nv~PnwM(u*s2S`egqFWR7XJb)2L-$=aIf@I9?-X z5>YO-Xf^j|rKjh)_`Sv1a=y;|N+h|f!EGZ1iA0`V>{O_Dc%c5$(4alu7&a`3K_F;H zM@KtgLJ>ztu7?{6x5jgUx7QsG5+(g(JJ{vkIL_?iVs$Pa9uf-+i&s@*bnHw_55L8* zLn0$10cjfss12$hzK0Lr)|x*rQ^}P-K~9N6R)!?a?Xvp`HHjXmYa4#dC5%RhW=h=h zG~XS>7Z4WK^@slt{pI84>U!t?(b3WPE87}lZy%qcvGCB)kNPDBMJo`C76DLPYAQcK z)pza#U5+1S2HyCT;9TyppD&}sTNv*8pz2yj^$@G)AOI&M1L{PQ0$PtptQ!wvDQ@mT7A3Hesh&(-Nn%vkDdIv5g9uN2Z5@pDkA}U`HM}?XP+3Al$3CQ zW7Aza5`own&FK-W;1v>zEiQfpeE%8CL>5M0F!`8I_DCs^&Sz9d^oVF;=wyF!7*NrD zy}em2Eo?Q@njRkF^ay;k`Eb3j}{K;x>itL`xRKdC99+y@x zr;!F7W9|Le-HPvhQ*P4}Kj*4yGCv=!sH%+X_wB3MLq%X^2QdfMZ7b-%-f`BA7GzT4XP5+9G0^8U(wk|A@7Prlql)-@$h zk*6Fc#_&+$*ANW5UZG@)i!0LX$kY8FW#|*h2TT$Ul8byALp#{e(7+{+;V9Zu7F+k3oP@D~k4WMs7mF>8uL z@P8Jby?YfL3z4Cu4B3-A$ueH$7Z;nOIUp$+8Coi;w$(l)ld$C-t8bs)x;&OnkA}3I zEhkLKy*qJOUS4JdybZ>w&7-{H+SjS&oCmO=fIK}KlG%6O9)GCGLyJd1_Uj{W25clt zNoyT&RCyMy0Rt)Gh{{T#l5t+~O+6g@p|iskpjR*oh1y*}r{3i^prWDqv3Yb`ZPR~n zZ~$xnfG<({wa6YNxe>}>4*S*izWH*mslKVn?c(>_KUg9Tn;do$yQikEZh5%e?J!-9 z@8q<9G83W=&EU8hn4V4s3^$!hJ51=SG-eE{prxlr14JV%lnPfuw^thq5Bd2yg@xmQ zmw*9zV}BYp_+lS{Agxy-0GKqN%-Acds2mQ64uf>e%my1hb|PY8cmZBgLD1{Ic#&J) z^G2-NabB7SnxP3G9N>ww^Yilu;SH{9BEi}y0o@70jh9Kr=m+lP7Zgw0A^UoenP+#Gt&*M#`%uLtvZm8 z0FJTwcu3~+=g*aX=dK`gzeANh^r^YI_Yyt@i&WdJQ!9B}NkxmgxjCB?8cPq@p-rrB z0@&<3ijXA%Vli}nykQJv4t;%nAz@)h*Qbkh#;J96l7Of5J7_0NllM<)l!j+QktP#s zQ0h9T#UX%Lah%=VxrBue^Y=;+2!s`|03bR#I_Kps;&>zy0B%Ci@%kW8A55l=?rN-_ zXu$nZu*vq;!e_@11J63yBR+n7ASy~rNl8h;D&4g{m`Y4U1Om7_zk8-)y2^?WNGM(p zricRz7YZ!C&WjhyZ{F|$E(Rb^iK1>`dS7)Cn3|a}3BeRoXTkH$VD?ITOl)^iAEtwUZ zPx;d`;FFCjVK~q8HJ56JY2ue{w>JtxUVUvdk z2lwUWGk^-ELiV|j9Rr0V{AT3-g71zX*sM_*XamT$tboj8dvvF~X%EmQFp1RnVLE_j zOZ%JOFg`U^0}dAihGw(%BX4|ia%E?yzw%Y5_ceC1Z)hmLxH!_R$ulk?VZv4}FE3BP zyg6y5C&mrCtzTSRJk{XF3q(?LUW@*9b#A${9C)6=J#6nj&CHmb>`uFB90MUDnW3Sf z?ND0Z?sU!8bPX?H^!0k68M4U$kqQA}686z@whCfo2P - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRTrumaAc Member List
    -
    -
    - -

    This is the complete list of members for IRTrumaAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRTrumaAcprivate
    _irsendIRTrumaAcprivate
    _lastfanIRTrumaAcprivate
    _lastmodeIRTrumaAcprivate
    begin(void)IRTrumaAc
    calcChecksum(const uint64_t state)IRTrumaAcprivatestatic
    calibrate(void)IRTrumaAcinline
    checksum(void)IRTrumaAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRTrumaAcstatic
    convertMode(const stdAc::opmode_t mode)IRTrumaAcstatic
    getFan(void) constIRTrumaAc
    getMode(void) constIRTrumaAc
    getPower(void) constIRTrumaAc
    getQuiet(void) constIRTrumaAc
    getRaw(void)IRTrumaAc
    getTemp(void) constIRTrumaAc
    IRTrumaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRTrumaAcexplicit
    off(void)IRTrumaAc
    on(void)IRTrumaAc
    send(const uint16_t repeat=kNoRepeat)IRTrumaAc
    setFan(const uint8_t speed)IRTrumaAc
    setMode(const uint8_t mode)IRTrumaAc
    setPower(const bool on)IRTrumaAc
    setQuiet(const bool on)IRTrumaAc
    setRaw(const uint64_t state)IRTrumaAc
    setTemp(const uint8_t celsius)IRTrumaAc
    stateReset(void)IRTrumaAc
    toCommon(void) constIRTrumaAc
    toCommonFanSpeed(const uint8_t speed)IRTrumaAcstatic
    toCommonMode(const uint8_t mode)IRTrumaAcstatic
    toString(void) constIRTrumaAc
    validChecksum(const uint64_t state)IRTrumaAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc.html deleted file mode 100644 index 0bbaf1c1e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc.html +++ /dev/null @@ -1,1057 +0,0 @@ - - - - - - - -IRremoteESP8266: IRTrumaAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Truma A/C messages. - More...

    - -

    #include <ir_Truma.h>

    -
    -Collaboration diagram for IRTrumaAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRTrumaAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void send (const uint16_t repeat=kNoRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setTemp (const uint8_t celsius)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    void setQuiet (const bool on)
     Change the Quiet setting. More...
     
    bool getQuiet (void) const
     Get the value of the current quiet setting. More...
     
    uint64_t getRaw (void)
     Get a copy of the internal state/code for this protocol. More...
     
    void setRaw (const uint64_t state)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint64_t state)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    - - - - -

    -Static Private Member Functions

    static uint8_t calcChecksum (const uint64_t state)
     Calculate the checksum for a given state. More...
     
    - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    TrumaProtocol _
     
    uint8_t _lastfan
     
    uint8_t _lastmode
     
    -

    Detailed Description

    -

    Class for handling detailed Truma A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRTrumaAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRTrumaAc::IRTrumaAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTrumaAc::calcChecksum (const uint64_t state)
    -
    -staticprivate
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - -
    [in]stateThe value to calc the checksum of.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRTrumaAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRTrumaAc::checksum (void )
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTrumaAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRTrumaAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrumaAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrumaAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRTrumaAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getQuiet()

    - -
    -
    - - - - - - - - -
    bool IRTrumaAc::getQuiet (void ) const
    -
    - -

    Get the value of the current quiet setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint64_t IRTrumaAc::getRaw (void )
    -
    - -

    Get a copy of the internal state/code for this protocol.

    -
    Returns
    The code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRTrumaAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::send (const uint16_t repeat = kNoRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setQuiet()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::setQuiet (const bool on)
    -
    - -

    Change the Quiet setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    Quiet is only available in Cool mode.
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::setRaw (const uint64_t state)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]stateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::setTemp (const uint8_t celsius)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]celsiusThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRTrumaAc::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRTrumaAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRTrumaAc::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRTrumaAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRTrumaAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRTrumaAc::validChecksum (const uint64_t state)
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - -
    [in]stateThe value to verify the checksum of.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    TrumaProtocol IRTrumaAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRTrumaAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ _lastfan

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRTrumaAc::_lastfan
    -
    -private
    -
    - -
    -
    - -

    ◆ _lastmode

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRTrumaAc::_lastmode
    -
    -private
    -
    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.map deleted file mode 100644 index 1cbd0aac0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.md5 deleted file mode 100644 index 6e1959eaa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3f87faf5dbce96ca1ef6345373f8752e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRTrumaAc__coll__graph.png deleted file mode 100644 index 1e8cecb564dcdc456257c63cea2a815416c4e3e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5927 zcmZu#2T)U8w?&a6T|qSTCcOzENEZYVfzU*HRjHvD=^#a<3rNujNS78sq<0aJ4nj!i zy_ZOb1jxI5@1J?^fB&1z&7HY(&b?=!v)A5httf4%DkT{M836$SrP@j!J^1+aHQHa z<|su?DgAWj6GkseOlJL>tdT!ni*QH2xX^D+GHzruxu}^5N=mKa^C_~huCY(rV(<|v zL((xldW7JgcLiCk;&5R{Fj7*|$c6ntd6oko(X}s_lYqhgCaE;3wOEdDnx{#5H#4fq zKjd9%5NjlXxd^${7?Q3fb5TyrK4cRYPxjgxH_A;lxBru;CTQ01Jh=r`W}<3iQ@|al zF6XlGCtu?;xM-q+-mxMy^m>iU-0Vx0BO47;3 z^XG<*bVbypH*d1vzn^b{WuO5T=(v#@qM0F`!jl#7eZoUUN1Kkw*4DNwp1IEgk45dK zBSZ8pEXrF7%H&{9Q?hK+xh?qF#)gLdC02YoAqkad(a`+7kmSjRz2O9-f}cq}lQ|gI{`<5)=^fE-=^+@2KJ}OrVa=Ek#8| zjV$?$@8887(_Y{C?7|@}BU9zNphTy#0C#E8iEQ2LVm!s+mKGP4?Cf}XpkK7RL2*xR z-@g6#;Gkn>Cga;T-u;6Eyna^PvRIlZLFH^o zvz4@ZzoTMoM4+QrYD&u9dTzqv#zxNv_QyWkmECm#XJP~iviqdn39M@dt=K!!IW)I# zUw0ja5Fn9AE-tQl3??Bml7yUI@M}Rq!DFY!Wo0W`!B|>gEE5w&TfN7cVGRs~ zX~oN@37ah<4J=;wr3yK~>*^kUuc|s*j1j4GUAUgBn!wG?T`F$Fe4^6ms3hgYJ0M}WXRdvbNn48qt8Zu+PBiuC6T#{LygQ1P2i@#1Szlj& zgNP_GF>xfjX6D&6n}me^53$pN0*y}`zZqZf<_6rDf2~NI|@?xX1y`kVfW| z1Gu^NJ|~C6D}4e+@9gZndHDA2TMj-xHRj;6{nyvt|NNpkr)Y96tvfGl8-=Tp^ke~1RUT1 zl8cta#l*sMcz@b~i#vkO`YfX7@Ruh}<9pbx@)+P$iicY9M&F8yZ>y&Y-a;S{IeB?` zNa>+01rdToIJ|@kw+eT;!6t0p#2Ze-!OQy;HeFZQ;RIwb5gTxDCSy~HXPRFg>Xcfv zwhX*>rexFA(=(w!1+bQumd38H+hqn{`u5w16I@` z9vtlLWdlf9$$NTwgs3V^ z@oNrXhMwMD4i1i-0clL#5)}g@W4-G_sI(vtk18|C*HH<4dJW3v^zTCYfX!f*!kjfo zTC8<3MP z32W2!9%JLia`t#>>2WvxX{h!32>+4qrUHJVO9hCtCk-W43 zi0`Iavi%Ag}Z2I|Aq`TWTm2x~cQ)c(Mt9i926c zRj}^;$QOI>LFiI<0xb*6EP#HsGZfWlej%Ya08%x+>t1a2LG{ru(vt0FTE{%-RM;gX zQh*8rW)#*+N#dgH2~kUW_o|Ic?Xj3;QXV_#e>K6)7pcT&M}sHTzA5I$#>QIXBYXw9 zyXYDHFlX(sf&)H5K_Fb!1K-0{R71y&u^r~vB`x9Hhww5p&GHeOw$;ImsbnwDUc%a; zMXU0;q@>#DQDme<2CCGk3cRBrAW&k^I?ilW=wbO5Z+zX9_+U(Cvc)`5Ge%qr8`?YV zS2G|@8Lc!NnjIS)a4&iqT}`Iv#pzFv4xM4IN8E@1W|Ct5hQ* zW$#ZJ)>|EvrQq}kOctJh_E7cB6l6BxZQ0O2QFy70RG&}Wi!svHn{123?=jB>a=E0< zyuKdaq@!%3%dYgJh3GO&X64er5$oJWQ0{;9W3NiXu>ZPx?!4t9(dFeiQ9nwsOpABs zW4_|wvtm=Iv$Ox)co#HLm1b(V@G6Gt&Y-q9I_Bj7zfYl$k#f)V@ooclHYYAsJv079 z&inWt>svmjeIeBaS|p`A7Zu#m*K6l?e)gB;f>?HE!%~i@Q;A1B=aqDZC#oxp2uQ{E zNv#>No^9He=w>WE&Pv*Zh|xd7|E}-B-!2`B{bZNRGS|b36`qoSPt6z3=Rsnm1R0tF zwEVy{6RbB70vjq=L5D!a>O(o9@Z;@z9`6d-h+;;HeUD|^@;J-=&kMW|vS_8MK#R4h zoeB?UAz$4r{HZUIWFTw7Ivp&-Q}%DE$mnbXt)4z-H(nREvyV-wVm15uGMv^5FUM3k zwXF^Ntm_Sz4Mi8o<2xg|NmZGMC&XTrif5NxxU#@V+5&IRo-cKhQ)J1$XMgJ_U@&n4 zIyTQw+qF0|9oB;R8e!-Q?=pZxd9WZjdORF*KW(~lmZg- z!OK27*f#FGchZ4DlfGt1Iu6y02$$PJ!Avhwo@@$BF5Y50X*V7fk@ph%N%Zy6x`Ty7 zFT*K+e%@NlrYh7~Fu&!G#@}GS>U(SJRstPfv=hDAWBI&yR-S zel%HWOKu+U;AV>}6DZk5a+AUw_oIT=5HB!0ZUW!Ge{aao%6wrl@p}Yc|9d^srF&N2 z-0zPW@iv2oZ7$7mDeH=@!vS&+l2OQ93UNiz$dqKIp(qU_!QW9+%fS zz^jPZ$jHf6pwM^%WqbP~>7comKuJn;WveM2W6*iZH({|EtdhD@(iCCa&KsG7(dx_C z)1pZ33mg_(9E`)^s$Tcer;1oWU0p@5dh>EmGQsld>h<}Zowyuc-ssS{I7)!*FR!c= z1p)yU2g^uFWQ3a-7^ngQL|9mOpo`?jjUPs7or1sdIZ5+#ehZtg=Y;zBB_u5qIA-m9 z!o6#~^qlKt8~_S6GBRQ)NH2dnPY4hOUSZ*`p&{xFsH%|>sCLHNq;PF%Y3Z@1Cgtnb zuN{6<5I=^GZo%kSf?UASvUcA<^~76N{wKSyk;VD|?-(8)4w--zAP`hBouTFBBBO;` zJo56H9&3X-CMJC&xvEi7QSGlB@N6279ub_(1uMkR3*|I5F@?3a0R-7)va8G79t+}C zqZPB1+kQ*J(gp~$-@l*A%E~^4Lb-*6D4Sb0x@6%HC+oxY5#=XOu2j)tXAD50y4%~c zA72#y2jft6h-_lHQq`z`I(r5Dn=n|%e`AiPbrsk<)f49cpnsc`YsXRiSV4wPE5l+! zm=nIVBfB#rlP2ZIX406T!q&^+gmD)S9(yH3`(#dA-irJ(>o*SDq1TQEqp#<7O6TF! z&+1=r2J@8h^n}cW8&n9qw4vrcK>oCWM+a(pWk;1Rb6jU-?5()D4_TB`BQ9m8P4jt) zap-9OMLsUPl4{r=8jJ7k*r6f`UH-H$2L%SyK&6$k_Evtj^SjIM_`{;lgWW9V)4CkI#k4fpXvU7gd8uJLAh9 z34}h}t)+~5I@hcX_@WO{qx+Dl@06osV&n#{vN(X&dryz?w`h3m!vo6^oA$3Apv+ngzQFG#_YQ=5#t3@m21Jl>{(cWxby9lTWEA&$Pq-$ z((Kh%9_Kd5VxRi?(P_bA(TREwz!d)eTBxH)wBSB@B4#<$wqRZ&2X7X%fKV`G1(FcB^zW8YJ+dv<-zy1L%LzPy&k_Sx8tI z;q2_}udc4!^z>aH`Sd2YRSQS=fR~*-9bm5XJ+Ohm&{rVxUC)jzH5&|(v?Lt={7KyQ zyWI$f1~+Zv8_a5cnmGp`D`I0Qygmb~qG~oD+F$7_Gqm3drwQ2a;n9FY;t~`t4T($d zet^F(b9HrPUe@l%kVFT<-UVi=qU|`VYL00m|k7L_?(-A%E~t?D=T5MP4%5= z&47k$M6!vG@$@JdYXNjT711Rm)}Zl*ZLQJ_z@(UoC;|GE}HGkUY|=eD}$<5G$>A{J*cJ4x-AAl;x?`*vo{ON%fB8|%P9kbn*6TtFC_8~D=RCYl^=O~d&hW7 zXT-~3nv$=^t`D<&o#v~j{T>|TmX&1+*%&SKm~XoV1Wy2z;{ZTQ$zB|eo}Qg$qqd@= zqpbmpkQrgLDO*o{EQdO2=NAxAgF;uEPiB`|aJ!C@4>L0}GcwZ}8ym5;&CPODR8$Y8 zr6G*oa!kXX(SJx-10E?VzHKl%0d_^3xz+!~xwp61=Wja+e1M0OGptCj5a24I(87+s zzLL@EXSGm7yYa&A?jVpveEj^2$y)OEZ?KG7U~gAfJNkHFt}xPLrS}ftkUTauWs>pU zw!~jv2%6T>R83HTnWwKT8%zsM7z6@sE>)w<^(1K{shFcXtrvijZdR@s@d7urET7m_T&XTHOqm|5?27Io%M?WEC;XiZr0%b zUs1FsKdP#$U!R}u0d^R92(rXr34<8|1nc{_xD`O($FeH4s8_2=qRJ5@$!R5a80-rF z#q!Hsse0o7zYhG54f~HHylG$oR+lTx3V?x8E`tSHnwr(#H - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRVestelAc Member List
    -
    -
    - -

    This is the complete list of members for IRVestelAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRVestelAcprivate
    _irsendIRVestelAcprivate
    begin(void)IRVestelAc
    calcChecksum(const uint64_t state)IRVestelAcstatic
    calibrate(void)IRVestelAcinline
    checksum(void)IRVestelAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRVestelAcstatic
    convertMode(const stdAc::opmode_t mode)IRVestelAcstatic
    getFan(void) constIRVestelAc
    getIon(void) constIRVestelAc
    getMode(void) constIRVestelAc
    getOffTimer(void) constIRVestelAc
    getOnTimer(void) constIRVestelAc
    getPower(void) constIRVestelAc
    getRaw(void)IRVestelAc
    getSleep(void) constIRVestelAc
    getSwing(void) constIRVestelAc
    getTemp(void) constIRVestelAc
    getTime(void) constIRVestelAc
    getTimer(void) constIRVestelAc
    getTurbo(void) constIRVestelAc
    IRVestelAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRVestelAcexplicit
    isOffTimerActive(void) constIRVestelAc
    isOnTimerActive(void) constIRVestelAc
    isTimeCommand(void) constIRVestelAc
    isTimerActive(void) constIRVestelAc
    off(void)IRVestelAc
    on(void)IRVestelAc
    send(const uint16_t repeat=kNoRepeat)IRVestelAc
    setAuto(const int8_t autoLevel)IRVestelAc
    setFan(const uint8_t fan)IRVestelAc
    setIon(const bool on)IRVestelAc
    setMode(const uint8_t mode)IRVestelAc
    setOffTimer(const uint16_t minutes)IRVestelAc
    setOffTimerActive(const bool on)IRVestelAc
    setOnTimer(const uint16_t minutes)IRVestelAc
    setOnTimerActive(const bool on)IRVestelAc
    setPower(const bool on)IRVestelAc
    setRaw(const uint8_t *newState)IRVestelAc
    setRaw(const uint64_t newState)IRVestelAc
    setSleep(const bool on)IRVestelAc
    setSwing(const bool on)IRVestelAc
    setTemp(const uint8_t temp)IRVestelAc
    setTime(const uint16_t minutes)IRVestelAc
    setTimer(const uint16_t minutes)IRVestelAc
    setTimerActive(const bool on)IRVestelAc
    setTurbo(const bool on)IRVestelAc
    stateReset(void)IRVestelAc
    toCommon(void) constIRVestelAc
    toCommonFanSpeed(const uint8_t speed)IRVestelAcstatic
    toCommonMode(const uint8_t mode)IRVestelAcstatic
    toString(void) constIRVestelAc
    validChecksum(const uint64_t state)IRVestelAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc.html deleted file mode 100644 index 317c0e8a2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc.html +++ /dev/null @@ -1,1619 +0,0 @@ - - - - - - - -IRremoteESP8266: IRVestelAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Vestel A/C messages. - More...

    - -

    #include <ir_Vestel.h>

    -
    -Collaboration diagram for IRVestelAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRVestelAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kNoRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void on (void)
     Set the requested power state of the A/C to on. More...
     
    void off (void)
     Set the requested power state of the A/C to off. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void setAuto (const int8_t autoLevel)
     Set Auto mode/level of the A/C. More...
     
    void setTimer (const uint16_t minutes)
     Set Timer option of A/C. More...
     
    uint16_t getTimer (void) const
     Get the Timer time of A/C. More...
     
    void setTime (const uint16_t minutes)
     Set the A/C's internal clock. More...
     
    uint16_t getTime (void) const
     Get the A/C's internal clock's time. More...
     
    void setOnTimer (const uint16_t minutes)
     Set the On timer time on the A/C. More...
     
    uint16_t getOnTimer (void) const
     Get the A/C's On Timer time. More...
     
    void setOffTimer (const uint16_t minutes)
     Set the Off timer time on the A/C. More...
     
    uint16_t getOffTimer (void) const
     Get the A/C's Off Timer time. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t fan)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setRaw (const uint8_t *newState)
     Set the internal state from a valid code for this protocol. More...
     
    void setRaw (const uint64_t newState)
     Set the internal state from a valid code for this protocol. More...
     
    uint64_t getRaw (void)
     Get a copy of the internal state/code for this protocol. More...
     
    void setSwing (const bool on)
     Set the Swing Roaming setting of the A/C. More...
     
    bool getSwing (void) const
     Get the Swing Roaming setting of the A/C. More...
     
    void setSleep (const bool on)
     Set the Sleep setting of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep setting of the A/C. More...
     
    void setTurbo (const bool on)
     Set the Turbo setting of the A/C. More...
     
    bool getTurbo (void) const
     Get the Turbo setting of the A/C. More...
     
    void setIon (const bool on)
     Set the Ion (Filter) setting of the A/C. More...
     
    bool getIon (void) const
     Get the Ion (Filter) setting of the A/C. More...
     
    bool isTimeCommand (void) const
     Is the current state a time command? More...
     
    bool isOnTimerActive (void) const
     Get if the On Timer is active on the A/C. More...
     
    void setOnTimerActive (const bool on)
     Set the On timer to be active on the A/C. More...
     
    bool isOffTimerActive (void) const
     Get if the Off Timer is active on the A/C. More...
     
    void setOffTimerActive (const bool on)
     Set the Off timer to be active on the A/C. More...
     
    bool isTimerActive (void) const
     Get if the Timer is active on the A/C. More...
     
    void setTimerActive (const bool on)
     Set the timer to be active on the A/C. More...
     
    stdAc::state_t toCommon (void) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint64_t state)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t calcChecksum (const uint64_t state)
     Calculate the checksum for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    VestelProtocol _
     
    -

    Detailed Description

    -

    Class for handling detailed Vestel A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRVestelAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRVestelAc::IRVestelAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRVestelAc::calcChecksum (const uint64_t state)
    -
    -static
    -
    - -

    Calculate the checksum for a given state.

    -
    Parameters
    - - -
    [in]stateThe state to calc the checksum of.
    -
    -
    -
    Returns
    The calculated checksum value.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRVestelAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRVestelAc::checksum (void )
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRVestelAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRVestelAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRVestelAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getIon()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::getIon (void ) const
    -
    - -

    Get the Ion (Filter) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRVestelAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getOffTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRVestelAc::getOffTimer (void ) const
    -
    - -

    Get the A/C's Off Timer time.

    -
    Returns
    The time expressed in nr. of minutes.
    - -
    -
    - -

    ◆ getOnTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRVestelAc::getOnTimer (void ) const
    -
    - -

    Get the A/C's On Timer time.

    -
    Returns
    The time expressed in nr. of minutes.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint64_t IRVestelAc::getRaw (void )
    -
    - -

    Get a copy of the internal state/code for this protocol.

    -
    Returns
    A code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::getSleep (void ) const
    -
    - -

    Get the Sleep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::getSwing (void ) const
    -
    - -

    Get the Swing Roaming setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRVestelAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTime()

    - -
    -
    - - - - - - - - -
    uint16_t IRVestelAc::getTime (void ) const
    -
    - -

    Get the A/C's internal clock's time.

    -
    Returns
    The time expressed in nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRVestelAc::getTimer (void ) const
    -
    - -

    Get the Timer time of A/C.

    -
    Returns
    The number of minutes of time on the timer.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::getTurbo (void ) const
    -
    - -

    Get the Turbo setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ isOffTimerActive()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::isOffTimerActive (void ) const
    -
    - -

    Get if the Off Timer is active on the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ isOnTimerActive()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::isOnTimerActive (void ) const
    -
    - -

    Get if the On Timer is active on the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ isTimeCommand()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::isTimeCommand (void ) const
    -
    - -

    Is the current state a time command?

    -
    Returns
    true, if the state is a time message. Otherwise, false.
    - -
    -
    - -

    ◆ isTimerActive()

    - -
    -
    - - - - - - - - -
    bool IRVestelAc::isTimerActive (void ) const
    -
    - -

    Get if the Timer is active on the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::off (void )
    -
    - -

    Set the requested power state of the A/C to off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::on (void )
    -
    - -

    Set the requested power state of the A/C to on.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::send (const uint16_t repeat = kNoRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setAuto()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setAuto (const int8_t autoLevel)
    -
    - -

    Set Auto mode/level of the A/C.

    -
    Parameters
    - - -
    [in]autoLevelThe auto mode/level setting.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setFan (const uint8_t fan)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]fanThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setIon()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setIon (const bool on)
    -
    - -

    Set the Ion (Filter) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    If we get an unexpected mode, default to AUTO.
    - -
    -
    - -

    ◆ setOffTimer()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setOffTimer (const uint16_t minutes)
    -
    - -

    Set the Off timer time on the A/C.

    -
    Parameters
    - - -
    [in]minutesTime in nr. of minutes.
    -
    -
    - -
    -
    - -

    ◆ setOffTimerActive()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setOffTimerActive (const bool on)
    -
    - -

    Set the Off timer to be active on the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setOnTimer()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setOnTimer (const uint16_t minutes)
    -
    - -

    Set the On timer time on the A/C.

    -
    Parameters
    - - -
    [in]minutesTime in nr. of minutes.
    -
    -
    - -
    -
    - -

    ◆ setOnTimerActive()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setOnTimerActive (const bool on)
    -
    - -

    Set the On timer to be active on the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw() [1/2]

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setRaw (const uint64_t newState)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]newStateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setRaw() [2/2]

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setRaw (const uint8_t * newState)
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]newStateA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setSleep (const bool on)
    -
    - -

    Set the Sleep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setSwing (const bool on)
    -
    - -

    Set the Swing Roaming setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setTemp (const uint8_t temp)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]tempThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setTime()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setTime (const uint16_t minutes)
    -
    - -

    Set the A/C's internal clock.

    -
    Parameters
    - - -
    [in]minutesThe time expressed in nr. of minutes past midnight.
    -
    -
    - -
    -
    - -

    ◆ setTimer()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setTimer (const uint16_t minutes)
    -
    - -

    Set Timer option of A/C.

    -
    Parameters
    - - -
    [in]minutesNr of minutes the timer is to be set for.
    -
    -
    -
    Note
    Valid arguments are 0, 0.5, 1, 2, 3 and 5 hours (in minutes). 0 disables the timer.
    - -
    -
    - -

    ◆ setTimerActive()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setTimerActive (const bool on)
    -
    - -

    Set the timer to be active on the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::setTurbo (const bool on)
    -
    - -

    Set the Turbo setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRVestelAc::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    -
    Note
    Power On, Mode Auto, Fan Auto, Temp = 25C/77F
    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRVestelAc::toCommon (void ) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRVestelAc::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRVestelAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRVestelAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRVestelAc::validChecksum (const uint64_t state)
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - -
    [in]stateThe state to verify the checksum of.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    VestelProtocol IRVestelAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRVestelAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.map deleted file mode 100644 index 00a89f6f8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.md5 deleted file mode 100644 index 9abc01d96..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -749eda47222e3921624af0b9aa38df31 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVestelAc__coll__graph.png deleted file mode 100644 index e204f57e7b81aa404e5fb5aca47d8ee134860d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5961 zcmb7I2UJthmJK3Zic$puQ6PLl=`|El0qIphdKKwH=mqZ?;yRG&;!z& z6u|(Y&gHKuYi8EWtXWyPFUiY$_uX^PK4?iiMXfa(V=8{gx3W#HhMJH48e!sP3xk^-b3(-VnUXiF|38p%y%KIg%4wi z*ySI^{QFSxP5*OT+|T;GCfkp?y9&<{WUC#t##(th?h8JNxw)*bW)fx=BDkBnhqIpB z#-nBfEG;dOuGB zgi%6^BtQN7Wima<_#vBvG@;LjM_waZ>E8zRf|unD4dPTXi@oujYh-!tL}X;_LP8UB zraua+4DwZ?O=2vb*vFV;Wo0$&w~)SB@YGgIed{ z^$hQi;L5{3?&hz8^(v+lC9mz!b@AER*?Oymg@xdf&&^<(H{m5!`rDFFD59n1Y3Cx>8%fs+mapWRmzVcKMrLt& zIk32xQ?E3kzh6o7qQxIK?BmBb{YktvH8sQ4j>bp3XxpNpfdQFf)Y8(@v!_oXvsLz* z-n_FiZ{KoAc>Oh5?u@GJmAX7J4+sq0TxjmSFQZOKMuwka zOsnkVVgiAnXfjwA_WRjq_va%9#oL7>T#?dTL=|H2?GbFqZ#x+%) zc4jKsmu+n5Kg7h`0gKz>b3NUC>W6i#bqa`PY)VS6KQ2Ly%jTVnQ_RB$4{qd)y!9FiA!X35 zb!PMQ^i;}}Ot&7(ciNt)>WPJp}Ld2(nMN!(e?7Gs!$%D&p&_uq*0#Df58X>mhHd9 z9>oaL23v*lB2Buqv$yZ~W>~L;5ldGQ5fcmNw;CL`<>cg4ggk&kyR_c$&;>|L{C@N*HgES_ZGMz>bklf`h9|?Z8v#M+k$3OWOt6> z&dx!Vm6b15RA`h0}K*{RPzH6&!Yfs5O5irH2!)310Ea_jDciBf&5 zqN^RNteP6#{!A%j5g052poZneKwU&w7;od%Qb)uMip|Z<{EAG!%h!;lgVjFLPSl)0 za&qzw3XsQ`1SH#GalO)GoKTQ%UaLiWfz(t~6iiHmoMjCGttOC`$;m|JR3YTskp}?* z0ZF28_5#&R{QD9Tj1X>a?y%+Iuk|5 z$HzLhytC;A1yGQv%gdjn@NGg6WBJPMt*u$pO}0e~45Op2>XY7kjfiXx4=*q0lYLXS z-&4{<84}8v`T6<$tM3&RVeLO@4tLz?j+goX=>~rxCzi zT`d>ef*USRx3ylqLOL!;COp=c)zhO#p-^8IdR4T9I5^9}$fAyVN`_uiiE(W_y zuaCBc)H_T%az}mnH=2yIpKsu05Ar+K)#wRVNQwzZDDzP5zwf>)qj_az9*Hmg+E>u{ z;@ER=@AIcV2SFUUiIvYk9x<@cGx;wZ!fLNj6n)A(Er%>ndhBcVNPK^FZV@VYm|wFq z(Q{O~)SD81er=K_L{QFp!f zDi7c7>T&#EpUJGSJ!p>luQg7}5*C_tlc+reN{wpc^25XE)Uy%j&q~IJ+jNnr?6sEQ z>@P@bi?0wu+<(2XTFWv^f!CQSy)7Q6elTLq>(A6_lM5!A^Ge0V>HC^$Uqf;Y2Iu|d zI5i~d6|SS!%I%+>x^4kD8UBOKO==LCtm10Mj}rFSi#Vo(J4Hgnr~(o{tg)1A^8`VM zg0%YA%DwGjG(H0&gip2N~?{5;11j+o3cm~x^P zmhzTunj<)K5aQ4ld_AGeByAVhky-QZa67dHT_;xeG5NoN4Q($&jv+kR05{2w8-rTP9%1U$aVYHzo zp5o_@8l8KTF*Q!ksUNYRn;O+L+C4#J_2+$eax^z~yr|yOP_;u)!r{`HxrBvrNmGZr z7D7dboJ*|;uu_wFY_Nm zx=<@08I_Z-cUSYQC^t8`jCzf89@dgtmV;aC*t#cOxj?!60b1GD3mUOqmuf%b@a`QC z5{a~*dE;HXkD;zo66a*58xP^SG+Th7t_m|OSZSO#DwW!#YMWcFyywDJR#t?p3mVZ} zqwv2MeSf`6U{!+$6R}mJ*3~BToWUS;Y98Oxt|GVv+(q6bg4E}Pk@}^rn(nHJ#i^v4 zs2#HA`l}uqHjNxeYfdHD0RnP)x{aVQ5`^Ag;hN9K@bwN zLwc9*MTvg(;9swn4>;L6WkyR~%zji}jYbAF@1&=urb3y0Po%Z9v_gUCK)zdiHg*PB z;|pEgq~T4MY(RR>FZTRs1Mx}k;0LyjXH-{Li@ZN6=iua|A%Pvxn49;BNk|wXb&Rd4{-~a3f|M-9kZ_~MHYt?|S%`-c!ln=^p>Sit zbCw21QZ`*BrO3@nl>*9-A3rVuN{`7O=^pLx1u$VeWn-{vyAiQ443TOGmqQX z&rLJW2Qa6xtEQ$VyO|$hG7&Vlsi=N}*+hL#1t6e7LOeV@vp9&uvrQ~5W#r|F?%utd zFEocnD__mdP8tO1tE)?cW&|Fwa_i#af+4E!ErkUW$Ab;W3=!{{s-6mkO4pg3P*=>| zoOyF}oS3Q{DLFY*T>M_nNOz*KZx7%EJp%(BV4I_4p92|yu5+#5!T#Mvr&d((5fc+D z$>)!4()%=bDl8(0&a%1#LyDsH%iXH}zZ51_ig0;vZ)kt9JsIZyBse&D!$mCNiQ&wO zfOeI_z|d3qqR&JVgR)Wd!9Ww4nwr+s)*`(yHcQLPPR>Q1Jl9%bW3r6-`b>R2zvH|( zph^De>4p(ApCTf1e*B>F^Ya5)I#!^n19!@O(|vZ0QfHEXs@sX6nBNM$WtU!mY-MFb zHaCpW&3F0VByp?7yHu^d3cU9~NVcU4ITb=Pt=yLejV5%@P1}&l z#*o`1^9EvCN;B07!dl{YQ@c7OEc7 z-C6CBIPM`pqy#q5AcOJcJk?WlWL|~gARK7+Bi(QiW=|IHuJrFg`?`!$BgB;!{Hd+9 z&6dCLUc5;ezqAODj|pFq{4Z2Um-BA%>XVXjkz|w7FJ(LxK3k$L-eswR00^n)XO&8S zg;!le+!?@G&|0!4nbS|4ENQ4G`{6h0>gKweWW>G|pzXdFP%7HXvFmc;H4if|Ksm`8 z9YSoW@y^dsN)ASohl$k}ne;&4yc$qIxNj~p5 z;6$-L8EWx

    ukrql#LGqD7NU?0?P}wTG@AJ7Zt|L)f`UD?QO+&-J%K3Ef2sc{lo7 zeF_L))T@LIBwYQ9J$TC*SBUH&y1^ZmY!Z|EK=ef%D|OG!SXOG+Bv=a269bIT3izx? zS>Xti+hYBay68;8m~oV}q)^c|k3P=_YEEq)ufK2Mh>CqWnKGs? zk$ZhWc)_l`6pw^vf8Kkq@=*p*=6`mo7pjV)^o1PefOIDGKHjyDJ<5emS_6_29UaZe z&VGQIH0F1h6Pfo|CLJ9c!=aP%6(=BP%Kh=<$Akb7ZfTM}Df|2H;6VnTC;}Xtupx5H zK5^+V_Y_!~iYmJ)m!9+`kWzl9B>KMz`MW zaV%67h=~f9O^t)YL*+emlMhTYUx`IPAP#%D4$J`Jmg2G|1t4-98!Ez=CQCoVboKQQ zPnJJ@2aDFjlr>+90UcdpP#Xhe@(7q;B}05V{{niUz&_<@H(NFEgZyX_!F-33^7-C; zqcR4F;D`MDvGDaloOc_;EI>Dcg##()48G7j)(Zk^?b{0W%uv#|Kf zF?rsE!C=mCI8G9e>9a<+!-E4lAv?N}k&*X*N93qzX+b4dwXk5lyd=G9@q+JwW{2Wj zX!I7w!^0Cl-*2z%rKF@JA|+)5bSO$Tu%KXl$2HQW3zWbX6e=FHI9}H+ttRXm!x#m{ zeR1(L(1((N&Q(bl>j1J5vVkh54bLt&?;5ckea!Qp zvLd3Qyq*UZ03@MCWy0|bVpB-74&oa(ZU6#=*8&`{#dgGZ=T(J@@81hcN>;#pFXZGj z4Gjm7=3SvtQEX5sL8H;9k+-=;MZ`JCHS31sIXJmkI$2=raQ4xb7;qh)mag2O<1vAN zAJbJ3_4Tl88x>%a9c({ns%|?oG8!5&k9;^l3Xf8%ic5nu_CET}8~=~+0PSKnVd3ie zENq@);?mB}08quA=YP5Yx=DfK35XHTyI)V!($aJ*EQkOg?4~P%L7_2mG(H^r1|YTw z`fDU3Y{G>KS$MQHQwxVa54lyS<6v(;@I^WhR0W95;5zp7w8G<$S-w*8GXOzAqHMlP z#@cMF9S8Qzz8ZJmc8e!FK&q$DT{nh*c8C9c5E~DBQ+VO>`BT)ESbs+oaL(4qq+_-= tK@pU%W9a$M_HMLbdB>deOAR^96{e*o-D@G+7 - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -

    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRVoltas Member List
    -
    -
    - -

    This is the complete list of members for IRVoltas, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRVoltasprivate
    _irsendIRVoltasprivate
    _modelIRVoltasprivate
    begin()IRVoltas
    calcChecksum(const uint8_t state[], const uint16_t length=kVoltasStateLength)IRVoltasprivatestatic
    calibrate(void)IRVoltasinline
    checksum(void)IRVoltasprivate
    convertFan(const stdAc::fanspeed_t speed)IRVoltas
    convertMode(const stdAc::opmode_t mode)IRVoltas
    getEcono(void) constIRVoltas
    getFan(void)IRVoltas
    getLight(void) constIRVoltas
    getMode(void)IRVoltas
    getModel(const bool raw=false) constIRVoltas
    getOffTime(void) constIRVoltas
    getOnTime(void) constIRVoltas
    getPower(void) constIRVoltas
    getRaw(void)IRVoltas
    getSleep(void) constIRVoltas
    getSwingH(void) constIRVoltas
    getSwingHChange(void) constIRVoltas
    getSwingV(void) constIRVoltas
    getTemp(void)IRVoltas
    getTurbo(void) constIRVoltas
    getWifi(void) constIRVoltas
    IRVoltas(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRVoltasexplicit
    off(void)IRVoltas
    on(void)IRVoltas
    send(const uint16_t repeat=kNoRepeat)IRVoltas
    setEcono(const bool on)IRVoltas
    setFan(const uint8_t speed)IRVoltas
    setLight(const bool on)IRVoltas
    setMode(const uint8_t mode)IRVoltas
    setModel(const voltas_ac_remote_model_t model)IRVoltas
    setOffTime(const uint16_t nr_of_mins)IRVoltas
    setOnTime(const uint16_t nr_of_mins)IRVoltas
    setPower(const bool on)IRVoltas
    setRaw(const uint8_t new_code[])IRVoltas
    setSleep(const bool on)IRVoltas
    setSwingH(const bool on)IRVoltas
    setSwingHChange(const bool on)IRVoltas
    setSwingV(const bool on)IRVoltas
    setTemp(const uint8_t temp)IRVoltas
    setTurbo(const bool on)IRVoltas
    setWifi(const bool on)IRVoltas
    stateReset()IRVoltas
    toCommon(const stdAc::state_t *prev=NULL)IRVoltas
    toCommonFanSpeed(const uint8_t speed)IRVoltasstatic
    toCommonMode(const uint8_t mode)IRVoltasstatic
    toString(void)IRVoltas
    validChecksum(const uint8_t state[], const uint16_t length=kVoltasStateLength)IRVoltasstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas.html deleted file mode 100644 index 4b1d546ff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas.html +++ /dev/null @@ -1,1585 +0,0 @@ - - - - - - - -IRremoteESP8266: IRVoltas Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Voltas A/C messages. - More...

    - -

    #include <ir_Voltas.h>

    -
    -Collaboration diagram for IRVoltas:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRVoltas (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset ()
     
    void send (const uint16_t repeat=kNoRepeat)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin ()
     Set up hardware to be able to send a message. More...
     
    void setModel (const voltas_ac_remote_model_t model)
     Set the current model for the remote. More...
     
    voltas_ac_remote_model_t getModel (const bool raw=false) const
     Get the model information currently known. More...
     
    void setPower (const bool on)
     Change the power setting. More...
     
    bool getPower (void) const
     Get the value of the current power setting. More...
     
    void on (void)
     Change the power setting to On. More...
     
    void off (void)
     Change the power setting to Off. More...
     
    void setWifi (const bool on)
     Change the Wifi setting. More...
     
    bool getWifi (void) const
     Get the value of the current Wifi setting. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void)
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void)
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void)
     Get the operating mode setting of the A/C. More...
     
    void setSwingH (const bool on)
     Set the Horizontal Swing setting of the A/C. More...
     
    bool getSwingH (void) const
     Get the Horizontal Swing setting of the A/C. More...
     
    void setSwingHChange (const bool on)
     Set the bits for changing the Horizontal Swing setting of the A/C. More...
     
    bool getSwingHChange (void) const
     Are the Horizontal Swing change bits set in the message? More...
     
    void setSwingV (const bool on)
     Set the Vertical Swing setting of the A/C. More...
     
    bool getSwingV (void) const
     Get the Vertical Swing setting of the A/C. More...
     
    void setEcono (const bool on)
     Change the Economy setting. More...
     
    bool getEcono (void) const
     Get the value of the current Econo setting. More...
     
    void setLight (const bool on)
     Change the Light setting. More...
     
    bool getLight (void) const
     Get the value of the current Light setting. More...
     
    void setTurbo (const bool on)
     Change the Turbo setting. More...
     
    bool getTurbo (void) const
     Get the value of the current Turbo setting. More...
     
    void setSleep (const bool on)
     Change the Sleep setting. More...
     
    bool getSleep (void) const
     Get the value of the current Sleep setting. More...
     
    uint16_t getOnTime (void) const
     Get the value of the On Timer time. More...
     
    void setOnTime (const uint16_t nr_of_mins)
     Set the value of the On Timer time. More...
     
    uint16_t getOffTime (void) const
     Get the value of the On Timer time. More...
     
    void setOffTime (const uint16_t nr_of_mins)
     Set the value of the Off Timer time. More...
     
    uint8_t * getRaw (void)
     Get a PTR to the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t new_code[])
     Set the internal state from a valid code for this protocol. More...
     
    uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    stdAc::state_t toCommon (const stdAc::state_t *prev=NULL)
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void)
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t state[], const uint16_t length=kVoltasStateLength)
     Verify the checksum is valid for a given state. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - -

    -Private Member Functions

    void checksum (void)
     Calculate and set the checksum values for the internal state. More...
     
    - - - - -

    -Static Private Member Functions

    static uint8_t calcChecksum (const uint8_t state[], const uint16_t length=kVoltasStateLength)
     Calculate the checksum is valid for a given state. More...
     
    - - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    VoltasProtocol _
     The state of the IR remote. More...
     
    voltas_ac_remote_model_t _model
     Model type. More...
     
    -

    Detailed Description

    -

    Class for handling detailed Voltas A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRVoltas()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRVoltas::IRVoltas (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ begin()

    - -
    -
    - - - - - - - -
    void IRVoltas::begin ()
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calcChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRVoltas::calcChecksum (const uint8_t state[],
    const uint16_t length = kVoltasStateLength 
    )
    -
    -staticprivate
    -
    - -

    Calculate the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to calculate the checksum of.
    [in]lengthThe length of the state array.
    -
    -
    -
    Returns
    The valid checksum value for the state.
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRVoltas::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRVoltas::checksum (void )
    -
    -private
    -
    - -

    Calculate and set the checksum values for the internal state.

    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRVoltas::convertFan (const stdAc::fanspeed_t speed)
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRVoltas::convertMode (const stdAc::opmode_t mode)
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ getEcono()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getEcono (void ) const
    -
    - -

    Get the value of the current Econo setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRVoltas::getFan (void )
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getLight()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getLight (void ) const
    -
    - -

    Get the value of the current Light setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRVoltas::getMode (void )
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getModel()

    - -
    -
    - - - - - - - - -
    voltas_ac_remote_model_t IRVoltas::getModel (const bool raw = false) const
    -
    - -

    Get the model information currently known.

    -
    Parameters
    - - -
    [in]rawWork out the model info from the current raw state.
    -
    -
    -
    Returns
    The known model number.
    - -
    -
    - -

    ◆ getOffTime()

    - -
    -
    - - - - - - - - -
    uint16_t IRVoltas::getOffTime (void ) const
    -
    - -

    Get the value of the On Timer time.

    -
    Returns
    Number of minutes before the timer activates.
    - -
    -
    - -

    ◆ getOnTime()

    - -
    -
    - - - - - - - - -
    uint16_t IRVoltas::getOnTime (void ) const
    -
    - -

    Get the value of the On Timer time.

    -
    Returns
    Number of minutes before the timer activates.
    - -
    -
    - -

    ◆ getPower()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getPower (void ) const
    -
    - -

    Get the value of the current power setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRVoltas::getRaw (void )
    -
    - -

    Get a PTR to the internal state/code for this protocol.

    -
    Returns
    PTR to a code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getSleep (void ) const
    -
    - -

    Get the value of the current Sleep setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwingH()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getSwingH (void ) const
    -
    - -

    Get the Horizontal Swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwingHChange()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getSwingHChange (void ) const
    -
    - -

    Are the Horizontal Swing change bits set in the message?

    -
    Returns
    true, the correct bits are set. false, the correct bits are not set.
    - -
    -
    - -

    ◆ getSwingV()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getSwingV (void ) const
    -
    - -

    Get the Vertical Swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRVoltas::getTemp (void )
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTurbo()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getTurbo (void ) const
    -
    - -

    Get the value of the current Turbo setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getWifi()

    - -
    -
    - - - - - - - - -
    bool IRVoltas::getWifi (void ) const
    -
    - -

    Get the value of the current Wifi setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ off()

    - -
    -
    - - - - - - - - -
    void IRVoltas::off (void )
    -
    - -

    Change the power setting to Off.

    - -
    -
    - -

    ◆ on()

    - -
    -
    - - - - - - - - -
    void IRVoltas::on (void )
    -
    - -

    Change the power setting to On.

    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - -
    void IRVoltas::send (const uint16_t repeat = kNoRepeat)
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - -
    [in]repeatNr. of times the message will be repeated.
    -
    -
    - -
    -
    - -

    ◆ setEcono()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setEcono (const bool on)
    -
    - -

    Change the Economy setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    The Economy setting is only available in Cool mode.
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setFan (const uint8_t fan)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]fanThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setLight()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setLight (const bool on)
    -
    - -

    Change the Light setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    If we get an unexpected mode, default to AUTO.
    - -
    -
    - -

    ◆ setModel()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setModel (const voltas_ac_remote_model_t model)
    -
    - -

    Set the current model for the remote.

    -
    Parameters
    - - -
    [in]modelThe model number.
    -
    -
    - -
    -
    - -

    ◆ setOffTime()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setOffTime (const uint16_t nr_of_mins)
    -
    - -

    Set the value of the Off Timer time.

    -
    Parameters
    - - -
    [in]nr_of_minsNumber of minutes before the timer activates. 0 disables the timer. Max is 23 hrs & 59 mins (1439 mins)
    -
    -
    - -
    -
    - -

    ◆ setOnTime()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setOnTime (const uint16_t nr_of_mins)
    -
    - -

    Set the value of the On Timer time.

    -
    Parameters
    - - -
    [in]nr_of_minsNumber of minutes before the timer activates. 0 disables the timer. Max is 23 hrs & 59 mins (1439 mins)
    -
    -
    - -
    -
    - -

    ◆ setPower()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setPower (const bool on)
    -
    - -

    Change the power setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setRaw (const uint8_t new_code[])
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - -
    [in]new_codeA valid code for this protocol.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setSleep (const bool on)
    -
    - -

    Change the Sleep setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    The Sleep setting is only available in Cool mode.
    - -
    -
    - -

    ◆ setSwingH()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setSwingH (const bool on)
    -
    - -

    Set the Horizontal Swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwingHChange()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setSwingHChange (const bool on)
    -
    - -

    Set the bits for changing the Horizontal Swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the change bits are set. false, the "no change" bits are set.
    -
    -
    - -
    -
    - -

    ◆ setSwingV()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setSwingV (const bool on)
    -
    - -

    Set the Vertical Swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setTemp (const uint8_t temp)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]tempThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ setTurbo()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setTurbo (const bool on)
    -
    - -

    Change the Turbo setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    -
    Note
    The Turbo setting is only available in Cool mode.
    - -
    -
    - -

    ◆ setWifi()

    - -
    -
    - - - - - - - - -
    void IRVoltas::setWifi (const bool on)
    -
    - -

    Change the Wifi setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - -
    void IRVoltas::stateReset ()
    -
    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRVoltas::toCommon (const stdAc::state_tprev = NULL)
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Parameters
    - - -
    [in]prevPtr to the previous state if available.
    -
    -
    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRVoltas::toCommonFanSpeed (const uint8_t spd)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]spdThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRVoltas::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRVoltas::toString (void )
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRVoltas::validChecksum (const uint8_t state[],
    const uint16_t length = kVoltasStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length of the state array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    VoltasProtocol IRVoltas::_
    -
    -private
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRVoltas::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    - -

    ◆ _model

    - -
    -
    - - - - - -
    - - - - -
    voltas_ac_remote_model_t IRVoltas::_model
    -
    -private
    -
    - -

    Model type.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.map deleted file mode 100644 index c140c35c0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.md5 deleted file mode 100644 index a1701d096..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -6a8b65794ccdc0bbca76d81c9087ca29 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRVoltas__coll__graph.png deleted file mode 100644 index e594ded38265ec1809ce6564fd7d9d5694ceca6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5880 zcmb7|by$?$y2b|)q~nv8P`bNY8bK7LyE`OCngIc&5r%GQ9YRDJhLVz!Zjc5krF+ie z+k0PU?{lv6$9dkqq2n2$!s-o}$yib8A3=0#y#)#oH zf;UVHHDv_|>h_V_TnvXm$jVd|9&34L?#}z^X+x3Se@8&mFz)OARVF%7)hfk1>R!dl9ll9>Y4^5h1?_j#P96))vWDK zS2X2lfnk-Do|_xrY>o5wmpsPf)z#G!svvMu0vw({bF|xA<2=jC&FwPLJWadPP-a;B z$>4nf@*Q2E-m#B@fdbC&3^jBAShUln{FAIO*LO9vi#0-=AJO`(630@DwY$PD4M`Lq(bL}vnwruhQGA>~OhiGU zVqice(>%Iu1I>4|61|6+xGpIN=N zqa$P>L!?&U!%?WFHZz6Clvzk9skK#BQc6lyRrNzrQIY)00)g-8-aw|9$8(Y}ILkAG zhT3Xp1OlP@^eNNBhmb4{WhW=ju&}V?8wTZAtF4hj^-NLXGM&E9<{eYjjwyvOdwaIZ z%1XOxgEt`|y@P`_zxcrlQpLROrh{cxJ5Cxj2nh;)4!rj5TX3BDYOkfO?Y1+;hrIa3 z5g8Sg#%HM%H9FhmBVcZBUTRoN@F;ZcNidDX>xZGam6h?Qi?E#I?a3D)sO4z;g8>Yw^H zn}~{wM`mVHKMEzv5OF0F&(ath8w(e(9mJ9aW6*mm<8x2|`Bv|-5lSQ%O)F(kYTP(6 zBE!k44(44x;8U(&rKFxCZH)CuAutg6%ERM6i$Ku$) zK2ru}0#3BED^XEXtHN81Pj@Y?Y<9!J#l?8&?%|O!?!~cP!ce4<#SWgnFIP&Wu5(NT^9gt*1bmx*THM;4L9OK50eML1ZDSGm0GJ;gcs% z6iiIAAqx8XX@#h4DZjf9zxVaII@Ckrlaj_u8?^`N38)0ad*LjHAiL2g)87f$^yhl* zFOZOvuWWAiyniIm*|F%>O#|UFX&g@nTi<;#;B;wkFE)?0ps47@ix+of&CDKV2s>L0 z=P8E1dne#H!5K>@vtV^4nB}eekYs+ z1O#_6Fy@cyq~?z;c|+P{jf|){bV^&T_|cqQXWzWJ1Mv?C;9_|~O-)_rf6i|^lwGa9 zI6FIg(1<{AK%h`)Vq)UY_4SDYnA&WyK8om$jYvhE=qnYEM|BF$Pz)r1w(yhDNWSP zb#G74&;B%lt6f)Em8YxoEau(2xx;oPB_*<0!>cUZ+~xD<;Lv>ea&*;77bJ^zO0NT2 zhM@gl*B8eOe0=eImR-CS->@KW322^xA$Y9!fB5<}ae3KdeJJOdx;mb;v^1ASUw8LA zkYajwv~+dfO*<7m%aIlp6N`t#<$Zk{tk32fy$CFlr1e8nBl$rgJqj410oYs z3!)$h-@3Z^L98^g#1*x*NgXH4t-E7sYQM(%vS(>@gKg@w6h>|b4v*Q3%gg(8bVFc1 zVgVO|U^%Fz{Zm6j@BZ4}p3TyI{+wu~E5>qfu0Am(1)h^LwA>k0)*z{ao2rz*6v2|6 z3y$fJ=O89?^Yhr)*pE0l@k~uk`2_?FvnHyBr29Y{2?xO>CML$Czk0BJqV)q%FC-|ZOy)7{ek07kLUvtm(^^)J@b(Q zRXiH;L{R34NJ*h;+a)YuAJc*n-)_)(=Zv(p-rq|d5fKq>v$GjKhwFSE>*|?VSrUR3 zV0fPp2y7f2dST(3@qJI%q=OE$^iFW6ROtY5IccZwd&Vusie#4%wf}F^dO@uW z-Uk(BmL4nB&gK<69xbyN{_XRcByGnGT7NpqtXcT+Gi7uJhI9!Fy;@9aI6mL2_wDT| zj=~l7TK!&qeBJScJSYzfbHQu7mS#GAE~L7>FpeSMj!`<4+$MM_!=Og$it9rDwf9V2 z2Ah<@z{II|%% z+(bXtBea#IGgFiY5lmQc*;E5s4GN5q_MOu+T&vcZu@5yZd9U^m4w2G`7cIH8d7D-2 zgEZyq1`MB_PyDYi_|2T%C&Y6f{F-rqDWaQn7^%)lW;QN2HGJm3e65>FPH4LrGr~|J zI*03|yG_;pbzyWf3H zz^HWGXI!Q@=x>5p~~;=*emp6Y4U ziXl_h<(=XraGFysdH&4z@h1$kw9=jLOQf%M#85?27)FvWl@}!pWZJBFR%uJoFBXO+ zjUf3s2c5%;9c`$sa~`|Tw?iHlZ7=ab4*0Pjg}(~M(<>IO7bB{d3=(K87lIbVvdx() z-t4JGn^FbA-(8EK&(fn$s3P+vDaiIa|9B0~Hjp&_fhw_eEH_g~PTV}}s8yy7(SIx- zgMC+OIk$-eB)M$;#GTEpzbnI+2v$}0|5Yv6KeB(?SXGk0L_c}OB0^Qd?tlvDogY6x z+yLb!GBVPT$`n(bDG5Wj*QYFW8Pym-cU*)zz!9rRdc{{;-mwCN`1|wvA8GCNITtym&cOAwOOt>j7X`-PK8>tPIs=xPgxDG`d zJ&k3G{7?&JGv52*=o_s&5N#|tHBmT~h?g2^Lq5-sli;GJ%olJJVa-6~2it_SX{TdVm z0R|<skqs?K9-I?m-7I}I3&emY`&S3O= zp~H40i!fC4<~SndY&nWY!Pq!U)cbd?Ufrt?)@PuN5#PVhaBz4Cx?qy`dYbLG=FC_MEpPMRs!U5ui|DVvKYaKAge>Ie z_UsjHRh8|K`;gQr6zDL-@bdmGUiru<;K zz~6U1w!b+t7lpXFxqa*G1dHLb-+US#9bEvl2?(hm6+UJN8c#(AEIK?f3e2h+ndamP5M7O z{q?_h`ea~qHO4vi@7*?TslUx@|66r@8}5`VZ>Lu$JNhJw_J3^G`_pPTzLKV>{o)hy zyqbS{QsY1IFe6;}s5442k@lm__o5|H(dkK)_{)&AQ#i7NrN8;y1D^@^a^{m%e{t^!p4i9;KnvHHD(!1K8wLLnZ;@tUMY1 z06#i#hWs>GqlUZK5RO(=xrBZFn`XBSX&oj4m9*q2!o2;6*EE#1)bh)A+r2@GlGpI1 z+0|b#2fP^ntl?`q6JJkfHr>JT`}Jcj3_K-GyS+hB^gU^f=yaLzmHkA`8|SjJKKt>o z{cX{B{jSYo|3ANXr^st-B`80;(0e<;Fj4Ai$Mu+Cn4kJOkMU@WnM5mF%G4?!90)c8 zm%rEcAG87QAB#sjwJew@d2CI}Z#F+?%YiFq6H;qS>$f49Q^x58ll}M<{GRC&j;p-L zy*84DFcu#AUZpE`apL0{%niO|KM5q97{C^Af?Wx=GlrXbkw+@cZ^IjW1EsR&LZBXz znDi;<9!s9aDNSW--`?`GYm5`sbIQK$!?9}J2?EzWl@fbju^`!9=zp9ZsT~F`J^5l! z?N6J4iZEf>W6XYyP)5Ss{j75TnlD7=HGv3|)TOE<#UsjPxt@x9dI1-;9F)8gAKadY z8rn=EX$s?)DQ2&J7692WeDTo(5uQGZH2#O^yRZ2# zA?T`GnZRXOGu3dnk>7bn@OJyG@}(xtokh}obgu2|*4S$+wL3pp1I4oKmW^DV>{@n4 zlGbqN_w`ub!kd3A=ieaZ^@B7iKViT{zCtN$N&iMWc&RaxmpfHgThCw)2VPoQB$}F< z3d+idQV!-y>=~)uLs^If3cGh|PK810v#oG^{LQ+B9YkqM%}7LGO3E zx0ZvtVgbxx{nml!=0bwb&b&|d7oP!V1$P7HQ8e&M6m0hzR(*$eczPnMJ3H#YT}S4< z&&eTdEz!*194#hne7)Lx@y14}3h-qjBfN}2~7|^!o zI>I}MT6ZZyBD1q3yz*FaI^N==mm9P3`y5!k-ka-9WP1tWrHb*t`qN!dPyqS;PUZ@Y zoSdAWpPx5Pz0{yOlH9~QSR0`ul+pdgx(}cqMn*;=8XD)Vz-CGZ;S4d4bv)oX&3@!Q zmi*m{4jkog0Dx|dhOyVYA|M4h{s-8%JZc8<%?0cthUw{PK$6gZZf@QZ9iZToZ@>~V z3kbkp7HhZx2z7YAkz*-H1?H9qO5;j*+%5lTYHEU{0y|P=Gq4Q&Rk90B;jmrZ;h;ns zzctQ10_vZ^_h?(&+R&7hl>yF)fy3{&wY7ovXXuJ?B>T^Zd29?80!{+V>O_U<5Lo{o zcIDNp%}q_=;o)W=i{=7O=baXjS@-DtiEM3c@i5VW!N#LLTakbV1O%Y5^6>1xYCYMV z?e^PmRtCUNx5C8lraPRN0rLCLA9H|)nvN$70pKAfAyEJc^7!%N2_t-|NJ-4?x1eE1 zk#WgYOdht~qZ8Z$>)Q>842aL#RHY>_lXpNLiRra!H#_^&`_i|WHt6QsFfeEG_@{~2 z)(BHJ?8XO>H9(ivN1w@94`zy`sx$ZTT6V{-t)-Z*m(?yTFZk_S12{4^IcaEJ??(^H z(D(WIEWm53%sViFH!r+AhST(=@UV!ArUC%=b7p~wkuh}A#4iSyoZF0-!h0n~ghI;K z6X92Z47g0l$#KPg9uOcUhc!1h2bw?mV&Em0VXaFw9%@|IG(J8)*rcM{PS8R)!`{xW z)oJf$Ke>h!+|&tpPB4bUrFV1&4Q!EefSnZ<77l0(@R%a0b#--V{dV{O_Sl@Ppo=2s zae-a{3`Z^Q84f59pWlfSCIPj|lP5SsGAPNGt2LhUKGPdHE2{$Qvv>yO<-NVZ{lHU+ z<>lq61}MTh`$gaCwV6&HYh;sgA$s{@xqGAk&MNJ{`04*ri2p*ne^-aVVJD`8wtSI| z*XL8ch^;b44vxMFCYAa3b0NTif^zfkDAxUMO^rk%qiXFc3hjtRk}%1Sf)Su>h^nH7 KLb;sToBsmciF{!I diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc-members.html deleted file mode 100644 index c51c23bb7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc-members.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRWhirlpoolAc Member List
    -
    -
    - -

    This is the complete list of members for IRWhirlpoolAc, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRWhirlpoolAcprivate
    _desiredtempIRWhirlpoolAcprivate
    _irsendIRWhirlpoolAcprivate
    _setMode(const uint8_t mode)IRWhirlpoolAcprivate
    _setTemp(const uint8_t temp, const bool remember=true)IRWhirlpoolAcprivate
    begin(void)IRWhirlpoolAc
    calibrate(void)IRWhirlpoolAcinline
    checksum(const uint16_t length=kWhirlpoolAcStateLength)IRWhirlpoolAcprivate
    convertFan(const stdAc::fanspeed_t speed)IRWhirlpoolAcstatic
    convertMode(const stdAc::opmode_t mode)IRWhirlpoolAcstatic
    enableOffTimer(const bool on)IRWhirlpoolAc
    enableOnTimer(const bool on)IRWhirlpoolAc
    getClock(void) constIRWhirlpoolAc
    getCommand(void) constIRWhirlpoolAc
    getFan(void) constIRWhirlpoolAc
    getLight(void) constIRWhirlpoolAc
    getMode(void) constIRWhirlpoolAc
    getModel(void) constIRWhirlpoolAc
    getOffTimer(void) constIRWhirlpoolAc
    getOnTimer(void) constIRWhirlpoolAc
    getPowerToggle(void) constIRWhirlpoolAc
    getRaw(const bool calcchecksum=true)IRWhirlpoolAc
    getSleep(void) constIRWhirlpoolAc
    getSuper(void) constIRWhirlpoolAc
    getSwing(void) constIRWhirlpoolAc
    getTemp(void) constIRWhirlpoolAc
    getTempOffset(void) constIRWhirlpoolAcprivate
    IRWhirlpoolAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRWhirlpoolAcexplicit
    isOffTimerEnabled(void) constIRWhirlpoolAc
    isOnTimerEnabled(void) constIRWhirlpoolAc
    send(const uint16_t repeat=kWhirlpoolAcDefaultRepeat, const bool calcchecksum=true)IRWhirlpoolAc
    setClock(const uint16_t minspastmidnight)IRWhirlpoolAc
    setCommand(const uint8_t code)IRWhirlpoolAc
    setFan(const uint8_t speed)IRWhirlpoolAc
    setLight(const bool on)IRWhirlpoolAc
    setMode(const uint8_t mode)IRWhirlpoolAc
    setModel(const whirlpool_ac_remote_model_t model)IRWhirlpoolAc
    setOffTimer(const uint16_t minspastmidnight)IRWhirlpoolAc
    setOnTimer(const uint16_t minspastmidnight)IRWhirlpoolAc
    setPowerToggle(const bool on)IRWhirlpoolAc
    setRaw(const uint8_t new_code[], const uint16_t length=kWhirlpoolAcStateLength)IRWhirlpoolAc
    setSleep(const bool on)IRWhirlpoolAc
    setSuper(const bool on)IRWhirlpoolAc
    setSwing(const bool on)IRWhirlpoolAc
    setTemp(const uint8_t temp)IRWhirlpoolAc
    stateReset(void)IRWhirlpoolAc
    toCommon(const stdAc::state_t *prev=NULL) constIRWhirlpoolAc
    toCommonFanSpeed(const uint8_t speed)IRWhirlpoolAcstatic
    toCommonMode(const uint8_t mode)IRWhirlpoolAcstatic
    toString(void) constIRWhirlpoolAc
    validChecksum(const uint8_t state[], const uint16_t length=kWhirlpoolAcStateLength)IRWhirlpoolAcstatic
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc.html deleted file mode 100644 index ee54f9132..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc.html +++ /dev/null @@ -1,1647 +0,0 @@ - - - - - - - -IRremoteESP8266: IRWhirlpoolAc Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for handling detailed Whirlpool A/C messages. - More...

    - -

    #include <ir_Whirlpool.h>

    -
    -Collaboration diagram for IRWhirlpoolAc:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRWhirlpoolAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void stateReset (void)
     Reset the state of the remote to a known good state/sequence. More...
     
    void send (const uint16_t repeat=kWhirlpoolAcDefaultRepeat, const bool calcchecksum=true)
     Send the current internal state as an IR message. More...
     
    int8_t calibrate (void)
     Run the calibration to calculate uSec timing offsets for this platform. More...
     
    void begin (void)
     Set up hardware to be able to send a message. More...
     
    void setPowerToggle (const bool on)
     Change the power toggle setting. More...
     
    bool getPowerToggle (void) const
     Get the value of the current power toggle setting. More...
     
    void setSleep (const bool on)
     Set the Sleep setting of the A/C. More...
     
    bool getSleep (void) const
     Get the Sleep setting of the A/C. More...
     
    void setSuper (const bool on)
     Set the Super (Turbo/Jet) setting of the A/C. More...
     
    bool getSuper (void) const
     Get the Super (Turbo/Jet) setting of the A/C. More...
     
    void setTemp (const uint8_t temp)
     Set the temperature. More...
     
    uint8_t getTemp (void) const
     Get the current temperature setting. More...
     
    void setFan (const uint8_t speed)
     Set the speed of the fan. More...
     
    uint8_t getFan (void) const
     Get the current fan speed setting. More...
     
    void setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    uint8_t getMode (void) const
     Get the operating mode setting of the A/C. More...
     
    void setSwing (const bool on)
     Set the (vertical) swing setting of the A/C. More...
     
    bool getSwing (void) const
     Get the (vertical) swing setting of the A/C. More...
     
    void setLight (const bool on)
     Set the Light (Display/LED) setting of the A/C. More...
     
    bool getLight (void) const
     Get the Light (Display/LED) setting of the A/C. More...
     
    uint16_t getClock (void) const
     Get the clock time in nr. of minutes past midnight. More...
     
    void setClock (const uint16_t minspastmidnight)
     Set the clock time in nr. of minutes past midnight. More...
     
    uint16_t getOnTimer (void) const
     Get the On Timer time.. More...
     
    void setOnTimer (const uint16_t minspastmidnight)
     Set the On Timer time. More...
     
    void enableOnTimer (const bool on)
     Enable the On Timer. More...
     
    bool isOnTimerEnabled (void) const
     Is the On timer enabled? More...
     
    uint16_t getOffTimer (void) const
     Get the Off Timer time.. More...
     
    void setOffTimer (const uint16_t minspastmidnight)
     Set the Off Timer time. More...
     
    void enableOffTimer (const bool on)
     Enable the Off Timer. More...
     
    bool isOffTimerEnabled (void) const
     Is the Off timer enabled? More...
     
    void setCommand (const uint8_t code)
     Set the Command (Button) setting of the A/C. More...
     
    uint8_t getCommand (void) const
     Get the Command (Button) setting of the A/C. More...
     
    whirlpool_ac_remote_model_t getModel (void) const
     Get/Detect the model of the A/C. More...
     
    void setModel (const whirlpool_ac_remote_model_t model)
     Set the model of the A/C to emulate. More...
     
    uint8_t * getRaw (const bool calcchecksum=true)
     Get a copy of the internal state/code for this protocol. More...
     
    void setRaw (const uint8_t new_code[], const uint16_t length=kWhirlpoolAcStateLength)
     Set the internal state from a valid code for this protocol. More...
     
    stdAc::state_t toCommon (const stdAc::state_t *prev=NULL) const
     Convert the current internal state into its stdAc::state_t equivalent. More...
     
    String toString (void) const
     Convert the current internal state into a human readable string. More...
     
    - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool validChecksum (const uint8_t state[], const uint16_t length=kWhirlpoolAcStateLength)
     Verify the checksum is valid for a given state. More...
     
    static uint8_t convertMode (const stdAc::opmode_t mode)
     Convert a stdAc::opmode_t enum into its native mode. More...
     
    static uint8_t convertFan (const stdAc::fanspeed_t speed)
     Convert a stdAc::fanspeed_t enum into it's native speed. More...
     
    static stdAc::opmode_t toCommonMode (const uint8_t mode)
     Convert a native mode into its stdAc equivalent. More...
     
    static stdAc::fanspeed_t toCommonFanSpeed (const uint8_t speed)
     Convert a native fan speed into its stdAc equivalent. More...
     
    - - - - - - - - - - - - - -

    -Private Member Functions

    void checksum (const uint16_t length=kWhirlpoolAcStateLength)
     Calculate & set the checksum for the current internal state of the remote. More...
     
    void _setTemp (const uint8_t temp, const bool remember=true)
     Set the temperature. More...
     
    void _setMode (const uint8_t mode)
     Set the operating mode of the A/C. More...
     
    int8_t getTempOffset (void) const
     Calculate the temp. offset in deg C for the current model. More...
     
    - - - - - - - - - -

    -Private Attributes

    IRsend _irsend
     Instance of the IR send class. More...
     
    WhirlpoolProtocol _
     
    uint8_t _desiredtemp
     The last user explicitly set temperature. More...
     
    -

    Detailed Description

    -

    Class for handling detailed Whirlpool A/C messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRWhirlpoolAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRWhirlpoolAc::IRWhirlpoolAc (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGPIO to be used when sending.
    [in]invertedIs the output signal to be inverted?
    [in]use_modulationIs frequency modulation to be used?
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ _setMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRWhirlpoolAc::_setMode (const uint8_t mode)
    -
    -private
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    -
    Note
    Internal use only.
    - -
    -
    - -

    ◆ _setTemp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void IRWhirlpoolAc::_setTemp (const uint8_t temp,
    const bool remember = true 
    )
    -
    -private
    -
    - -

    Set the temperature.

    -
    Parameters
    - - - -
    [in]tempThe temperature in degrees celsius.
    [in]rememberDo we save this temperature?
    -
    -
    -
    Note
    Internal use only.
    - -
    -
    - -

    ◆ begin()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::begin (void )
    -
    - -

    Set up hardware to be able to send a message.

    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRWhirlpoolAc::calibrate (void )
    -
    -inline
    -
    - -

    Run the calibration to calculate uSec timing offsets for this platform.

    -
    Returns
    The uSec timing offset needed per modulation of the IR Led.
    -
    Note
    This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.
    - -
    -
    - -

    ◆ checksum()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRWhirlpoolAc::checksum (const uint16_t length = kWhirlpoolAcStateLength)
    -
    -private
    -
    - -

    Calculate & set the checksum for the current internal state of the remote.

    -
    Parameters
    - - -
    [in]lengthThe length/size of the internal state array.
    -
    -
    - -
    -
    - -

    ◆ convertFan()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRWhirlpoolAc::convertFan (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert a stdAc::fanspeed_t enum into it's native speed.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ convertMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRWhirlpoolAc::convertMode (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert a stdAc::opmode_t enum into its native mode.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The native equivalent of the enum.
    - -
    -
    - -

    ◆ enableOffTimer()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::enableOffTimer (const bool on)
    -
    - -

    Enable the Off Timer.

    -
    Parameters
    - - -
    [in]ontrue, the timer is enabled. false, the timer is disabled.
    -
    -
    - -
    -
    - -

    ◆ enableOnTimer()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::enableOnTimer (const bool on)
    -
    - -

    Enable the On Timer.

    -
    Parameters
    - - -
    [in]ontrue, the timer is enabled. false, the timer is disabled.
    -
    -
    - -
    -
    - -

    ◆ getClock()

    - -
    -
    - - - - - - - - -
    uint16_t IRWhirlpoolAc::getClock (void ) const
    -
    - -

    Get the clock time in nr. of minutes past midnight.

    -
    Returns
    The time expressed as the Nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getCommand()

    - -
    -
    - - - - - - - - -
    uint8_t IRWhirlpoolAc::getCommand (void ) const
    -
    - -

    Get the Command (Button) setting of the A/C.

    -
    Returns
    The current Command (Button) of the A/C.
    - -
    -
    - -

    ◆ getFan()

    - -
    -
    - - - - - - - - -
    uint8_t IRWhirlpoolAc::getFan (void ) const
    -
    - -

    Get the current fan speed setting.

    -
    Returns
    The current fan speed/mode.
    - -
    -
    - -

    ◆ getLight()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::getLight (void ) const
    -
    - -

    Get the Light (Display/LED) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getMode()

    - -
    -
    - - - - - - - - -
    uint8_t IRWhirlpoolAc::getMode (void ) const
    -
    - -

    Get the operating mode setting of the A/C.

    -
    Returns
    The current operating mode setting.
    - -
    -
    - -

    ◆ getModel()

    - -
    -
    - - - - - - - - -
    whirlpool_ac_remote_model_t IRWhirlpoolAc::getModel (void ) const
    -
    - -

    Get/Detect the model of the A/C.

    -
    Returns
    The enum of the compatible model.
    - -
    -
    - -

    ◆ getOffTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRWhirlpoolAc::getOffTimer (void ) const
    -
    - -

    Get the Off Timer time..

    -
    Returns
    The time expressed as the Nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getOnTimer()

    - -
    -
    - - - - - - - - -
    uint16_t IRWhirlpoolAc::getOnTimer (void ) const
    -
    - -

    Get the On Timer time..

    -
    Returns
    The time expressed as the Nr. of minutes past midnight.
    - -
    -
    - -

    ◆ getPowerToggle()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::getPowerToggle (void ) const
    -
    - -

    Get the value of the current power toggle setting.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getRaw()

    - -
    -
    - - - - - - - - -
    uint8_t * IRWhirlpoolAc::getRaw (const bool calcchecksum = true)
    -
    - -

    Get a copy of the internal state/code for this protocol.

    -
    Parameters
    - - -
    [in]calcchecksumDo we need to calculate the checksum?.
    -
    -
    -
    Returns
    A code for this protocol based on the current internal state.
    - -
    -
    - -

    ◆ getSleep()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::getSleep (void ) const
    -
    - -

    Get the Sleep setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSuper()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::getSuper (void ) const
    -
    - -

    Get the Super (Turbo/Jet) setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getSwing()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::getSwing (void ) const
    -
    - -

    Get the (vertical) swing setting of the A/C.

    -
    Returns
    true, the setting is on. false, the setting is off.
    - -
    -
    - -

    ◆ getTemp()

    - -
    -
    - - - - - - - - -
    uint8_t IRWhirlpoolAc::getTemp (void ) const
    -
    - -

    Get the current temperature setting.

    -
    Returns
    The current setting for temp. in degrees celsius.
    - -
    -
    - -

    ◆ getTempOffset()

    - -
    -
    - - - - - -
    - - - - - - - - -
    int8_t IRWhirlpoolAc::getTempOffset (void ) const
    -
    -private
    -
    - -

    Calculate the temp. offset in deg C for the current model.

    -
    Returns
    The temperature offset.
    - -
    -
    - -

    ◆ isOffTimerEnabled()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::isOffTimerEnabled (void ) const
    -
    - -

    Is the Off timer enabled?

    -
    Returns
    true, the Timer is enabled. false, the Timer is disabled.
    - -
    -
    - -

    ◆ isOnTimerEnabled()

    - -
    -
    - - - - - - - - -
    bool IRWhirlpoolAc::isOnTimerEnabled (void ) const
    -
    - -

    Is the On timer enabled?

    -
    Returns
    true, the Timer is enabled. false, the Timer is disabled.
    - -
    -
    - -

    ◆ send()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRWhirlpoolAc::send (const uint16_t repeat = kWhirlpoolAcDefaultRepeat,
    const bool calcchecksum = true 
    )
    -
    - -

    Send the current internal state as an IR message.

    -
    Parameters
    - - - -
    [in]repeatNr. of times the message will be repeated.
    [in]calcchecksumDo we need to calculate the checksum?.
    -
    -
    - -
    -
    - -

    ◆ setClock()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setClock (const uint16_t minspastmidnight)
    -
    - -

    Set the clock time in nr. of minutes past midnight.

    -
    Parameters
    - - -
    [in]minspastmidnightThe time expressed as minutes past midnight.
    -
    -
    - -
    -
    - -

    ◆ setCommand()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setCommand (const uint8_t code)
    -
    - -

    Set the Command (Button) setting of the A/C.

    -
    Parameters
    - - -
    [in]codeThe current Command (Button) of the A/C.
    -
    -
    - -
    -
    - -

    ◆ setFan()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setFan (const uint8_t speed)
    -
    - -

    Set the speed of the fan.

    -
    Parameters
    - - -
    [in]speedThe desired setting.
    -
    -
    - -
    -
    - -

    ◆ setLight()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setLight (const bool on)
    -
    - -

    Set the Light (Display/LED) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setMode()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setMode (const uint8_t mode)
    -
    - -

    Set the operating mode of the A/C.

    -
    Parameters
    - - -
    [in]modeThe desired operating mode.
    -
    -
    - -
    -
    - -

    ◆ setModel()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setModel (const whirlpool_ac_remote_model_t model)
    -
    - -

    Set the model of the A/C to emulate.

    -
    Parameters
    - - -
    [in]modelThe enum of the appropriate model.
    -
    -
    - -
    -
    - -

    ◆ setOffTimer()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setOffTimer (const uint16_t minspastmidnight)
    -
    - -

    Set the Off Timer time.

    -
    Parameters
    - - -
    [in]minspastmidnightThe time expressed as minutes past midnight.
    -
    -
    - -
    -
    - -

    ◆ setOnTimer()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setOnTimer (const uint16_t minspastmidnight)
    -
    - -

    Set the On Timer time.

    -
    Parameters
    - - -
    [in]minspastmidnightThe time expressed as minutes past midnight.
    -
    -
    - -
    -
    - -

    ◆ setPowerToggle()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setPowerToggle (const bool on)
    -
    - -

    Change the power toggle setting.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRWhirlpoolAc::setRaw (const uint8_t new_code[],
    const uint16_t length = kWhirlpoolAcStateLength 
    )
    -
    - -

    Set the internal state from a valid code for this protocol.

    -
    Parameters
    - - - -
    [in]new_codeA valid code for this protocol.
    [in]lengthThe length/size of the new_code array.
    -
    -
    - -
    -
    - -

    ◆ setSleep()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setSleep (const bool on)
    -
    - -

    Set the Sleep setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSuper()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setSuper (const bool on)
    -
    - -

    Set the Super (Turbo/Jet) setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setSwing()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setSwing (const bool on)
    -
    - -

    Set the (vertical) swing setting of the A/C.

    -
    Parameters
    - - -
    [in]ontrue, the setting is on. false, the setting is off.
    -
    -
    - -
    -
    - -

    ◆ setTemp()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::setTemp (const uint8_t temp)
    -
    - -

    Set the temperature.

    -
    Parameters
    - - -
    [in]tempThe temperature in degrees celsius.
    -
    -
    - -
    -
    - -

    ◆ stateReset()

    - -
    -
    - - - - - - - - -
    void IRWhirlpoolAc::stateReset (void )
    -
    - -

    Reset the state of the remote to a known good state/sequence.

    - -
    -
    - -

    ◆ toCommon()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRWhirlpoolAc::toCommon (const stdAc::state_tprev = NULL) const
    -
    - -

    Convert the current internal state into its stdAc::state_t equivalent.

    -
    Parameters
    - - -
    [in]prevPtr to the previous state if required.
    -
    -
    -
    Returns
    The stdAc equivalent of the native settings.
    - -
    -
    - -

    ◆ toCommonFanSpeed()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::fanspeed_t IRWhirlpoolAc::toCommonFanSpeed (const uint8_t speed)
    -
    -static
    -
    - -

    Convert a native fan speed into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]speedThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toCommonMode()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::opmode_t IRWhirlpoolAc::toCommonMode (const uint8_t mode)
    -
    -static
    -
    - -

    Convert a native mode into its stdAc equivalent.

    -
    Parameters
    - - -
    [in]modeThe native setting to be converted.
    -
    -
    -
    Returns
    The stdAc equivalent of the native setting.
    - -
    -
    - -

    ◆ toString()

    - -
    -
    - - - - - - - - -
    String IRWhirlpoolAc::toString (void ) const
    -
    - -

    Convert the current internal state into a human readable string.

    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ validChecksum()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRWhirlpoolAc::validChecksum (const uint8_t state[],
    const uint16_t length = kWhirlpoolAcStateLength 
    )
    -
    -static
    -
    - -

    Verify the checksum is valid for a given state.

    -
    Parameters
    - - - -
    [in]stateThe array to verify the checksum of.
    [in]lengthThe length/size of the array.
    -
    -
    -
    Returns
    true, if the state has a valid checksum. Otherwise, false.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _

    - -
    -
    - - - - - -
    - - - - -
    WhirlpoolProtocol IRWhirlpoolAc::_
    -
    -private
    -
    - -
    -
    - -

    ◆ _desiredtemp

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRWhirlpoolAc::_desiredtemp
    -
    -private
    -
    - -

    The last user explicitly set temperature.

    - -
    -
    - -

    ◆ _irsend

    - -
    -
    - - - - - -
    - - - - -
    IRsend IRWhirlpoolAc::_irsend
    -
    -private
    -
    - -

    Instance of the IR send class.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map deleted file mode 100644 index 905c915a6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 deleted file mode 100644 index 74ae8d244..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -db29e7768fbf9c89e59c35ca00232038 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRWhirlpoolAc__coll__graph.png deleted file mode 100644 index a7bb51b0c05aac9b1172495e6d02fc76621746f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6537 zcmY*;1z1#3xAq7KNSAbjh)5}2GBT8ubax{SN=WC>f+z@*(h?%wH3HHdLkwLaosxI! z{qOfZ|Cu^DG^ z^>6_agUTrQ2fStCnbSz+{P@Xz}M?lA<#Nvpe1oNbV6ZJS(Zqx~S;y zSF*IU+^mX4zzK75bEOL$Rp%y=9@9=kJ|^nw?^V#3(foGq>y#NrA}ejS^SGjXL}v-M zM0jLe$&`(wmf8OWAe+$iGzAY2k=4{RH=Iow`t2JJ0loNiv1nH;4ZN;Sm`i5-Y-SA0 z@mr!AE6+sr%_sIQ=;IzS#~J<--S1K>5(r*XO3d~3_5IV+uG$6v;@JF{nTMIa!QJ#e zN)|JN>0<4?cq-|lohtUPUUg(W4{=%k5lKJsIVC0XE-tyPfVSi1rJ$9SRail$KlR37 z`nFcOMORGwlu1BoIs_kTM4{UDmAk!y|TfcBrfC z6S1BC6h2CUS7f83qtkX2+=hYrrLs_HAXCS9%H`|_O^z^mRw*wp;Z?W#Y{XN_bOyoC zpFgj}3ZWnf-a7wlQ87O-u#2ZBJS^-k8X8)BVj?1GVrq(ojSaJ`tgO7IM%LE0unTj0 zdplbBvmleOFeO?LBqJk3*!z&xz*t{DYIs-`8v`wdR)nOdr>DVKx%qD}w6wI-(pp8D z!k)Xdg3hRtgeE&XJ4zuZT23x5q+P((fm}hR&Md;(#Kgp5u8ue;D5$)mq9YpypXpo% zBjM8sGBPqkz(_YYH+3#cXa?NLeFukqJTP{$j=@2K+w*QoRXsiA%3&E8yXp4kvaq<= zLX77%nY)f-)A6X{&%wbi`)|#d;by!}b9MBcS_THuAeVKGjTS%SnRJ`Ho={U$zin0_ zgl+W9PESV+J-Y;DVA}ub2_$fC&alL|nHr0bURp-x?z8hn^dH^bm3`m^6Aure%}_?? z&TQ?{+FDpd1a{%XE02up%d?f{GgOEY8%$G^Y<=J}{1TS9(Vr6XJOq|31g$%M{y!<)xni;E9N z6?xtW5ADu39_%*meaX$ma9{6lKi(S4R%M4kDs6^jm6h?!4C{kU0^2rn>;!alt#VBj(%eUE6Ke(&|LLLV#;~y z#6i%u!M&9gSdH_-V3LluHVGs*H#c;3V}lfuTT&9kCFys;e+Np2(}`ZHV`<4685851 zWkpX0c^@A?yz=L4XIAd_&dxoiP>1=3kDPiHp+r(YtL(<)-Q1oQm6fr9WA*CK(eI~5 ze#W6hPd$F?R(S3i$NsUfun?HpvCTNyp0e-fGyj2IVKYRpuBr-!#CLQ^)%?CV*~Wm> zyKkt}uF+MWojI1|=ZABew4~|k=@F+WO`7#f*uhvy5rNH0=e6#q?9Y^B(D`P37eYo(js{6f zOPj_e1ECg{mddE95gW9svRmFdTU%o;qQX+&zbDbv)wTWLe{qrV^TrNqgHF1K_)<8)V7*Db*$Gemgx-)@E$DUJ3l zlTb)VsOI-gm|&#zsH3;dvp=h(ym;txa&nedR!eXO|G@NgBlr_ZC7O9I4NXl9Qqn|% z+5)&y0c!Y@VhSE(X%`n>HkGu9t}fZShKAto zmF%V_+EAic9T0o%j)<68PImV56{&Dt&dHtzs*d4o*c0D#m)!h(W)>E7uy7$aqG>9M ziiq47iM*z5fyUJcUZvWjx!W(zFFDB(NF)^uP9S4%|JZ4vWguy7W25rGQwNoDDHeKh z@z&DXy28Yeu5&I?&`W$^ptaFzZf-71y$HlP%w6*@_P)KQ$;nCG=C=Yh4#?o7B=R)T zH#jtc4p4vpXS=9o+>Z)j`T1;M9oE&=F^Y@Rj*N`_92k(XuwdafY6t~Ol>K9`)9m5? zep~20((>0^>g;4V5uN5GCauPV_C=D34_|fx)Cuio2%r@d6a>H-5b)vSN2W)Qist{6 zmHkFF(}4a6GcuxkcC`=t@Zkd^Gcy_@93Sx`lJua9#yP91iVUp1zGNObd3kKm_8PdR z!ZWIt78e8Ur^>RctE=Vu{zk^nPj<91)Lm*&tE!<9((H4_{NRBM&-Qo{O4N?ipaw5C zHg>w!nSo6?6~o@%J~TAc6!fX-?-p1jq@>8=oXfL4cycm@l#~=B8P0bHQQpf}N$$NfW-q z$H#a2%H6Y%R@{pyNA6wMc#*~vhiP6*8ygmOc6sORV^2J$)MQ#xQqm_jgK6B~q^YAX zVc%bih`%?ZWMyS_agxsh=&JqAI9A8RZ(=z6*eBf)Ugg93|M0j_WiR)+no+&mT2wZS z_wDN;MKxNP#N;o+QEdMU*}bL_sW-GpnsnoG1tq0%8(P9}UR7&7#BtB7Hfc{9=!+Nk z($dr4Xy5uZvt;*B8$JdW-VrlNZEEgBuHJ>zLhbi&Xc0wD4{ROPR<0&zg}?I? z#;$qd)6z|hW_9!k;ks;%iJ1=V-d=S(RfRFZwkd?uo5~U~VWk(dkHqd^-`O?%+6@NF zJ~xbA3g&YY=o~n|`MAJTuR7}#n%dSw77{+3QQzFTwR&Ipb4Ty@Yf6(hkAo^y!V-&d zTs$<0cLl$S>86f;T&@%lK0MqjY#c*-Q*6C_c#cQgtxLsTaT7MygA3VhpX8+)Zr56u ztW62d{2EW@OT|(?~td&?rzlk6L=-1|H+H(RduMMJn}?tF(pZc^aetsu z4>F$bZkdP^xPL~?t0nxJ`}80V`?__h{536h#*6NBD@uBFp8&q#xq&v>`tV|{L~J^*Q6H9qND0k%E~J+gaJgzb#0zV ze-Q&Yzw`^IYWrh%N1tXQer=qJo0sK>&{{j+9OnAFeI}PD6X&CvwIpx9D@0$&9H!!& zm(y7hU_usR;ETGRO7lxW50gchd^{iZmI+XbO0PT*%&eX3g5Z)$)9(MM(;8g-e7Gy| z#~czOCozCeXVyBx^PZw^YPR?E9x$y>LoKg0T9HSoI7*^Ty&|^Q z42dX@FyT@h??(+j+FwUl+J^SX5p&j%D~ef9VO(XyonJydv-dY#(Y#vC;kbK>o8`~x z{#?V|K3GngFW)w_S!Ss@Xk*&&HzP6)e_`Xo@06G4w4S`8Q9~CZe8hX9B{t)u@a|$j zgvUzPlSXUtfU03?g5@9AKem7W-);f~K+a2JjG4wcu{XnWiy+Qjfx31EkvaQ z*SFdt|ECKmJf~UPK%tJ43EA`T{>rBGJH%|+319Ekwshbbc{{(-6$>*oOq<*m$TjF$ ztE(}ITmPjEgPR}6Z7#ML{FvByDQSSW;5rvN_E3d#;`oaF+7&awrrEadUH<{sYK6F)1m! zj*gD5fdLDEqR!4v>J!JAs(XNv5@BQPA0PkdNqmSr9352;4G))MBr;w7nINyC;=lQ( zzDXxMYK{$~Wkmsga&lkP4}-p2b5-y?Pqz_U^4Z5%c`e^9y59pptJw4N^^It5mZ%4O z-OkbR0bu!9RJ^7Tk$@X$dPkv4Oz9J?j28a*}P#EA34CQ;Iyu7g?r^#{O zATv4|x2Lz486O{?RZuVqJ51_}b}^uc7#JAwDSS5XD=MD8&&+(;6+;Ds5QRw{K)0D% zkw6hZnSoHb%c~*Hj z5oB?7b-XO@%NOPtdI@R>fN$iMwY4=Q5U>^y#{UsSahE1MLhPtFa3s;Q=4}fGSfb7l zr7RzMM@I({IXPyve(YY$B?0L}6=^%WM}|g5?JEb2$$e%P7DsJ6!v8qh9k=>4Wz+Av zSE^5D@q~N|*VyO3P?X?p0-&BQH$y)>I&wYRH7eBP;1>{hUaF1g?7X|Qv=k8+C+pHkKa&pb7oGiz3cFXfLnhrZ*L}6Rt%|ZqP`?9*z4E)O3FT`KY~I-F~+B+ z5C{Z%c6N3|RMhC&FV(lQ-A6$Dk4QKZ^6OMHpV@|GBeK}>`MrIhsakONJu=v#B9~Zc zVIeji;`Mn{T%4d`dGoO0d{lH}uC3OoZ@g^46>VKGz2KSZMLx4UpZ$UP74|2|nOi4w zx$(A_k8xDBhC?Y<3CX;90t!b3J8<6X(k*SVJDgc6_B=_(5@+*@iL$M%R6QZ-&4fdG`o%vBhQX zM`S{m-H1NwUVRs9Kc;XA``Cm^M|?Vh6Ue5>9y;@@#q;;#{2aUH*2@tp46Flpzmf-A z;NC#(`Py+8yn>x&Tl?xmJ>L03!R)`C!vAu3;#)#7 zmzvb#TqV7M=7Q8eT15X?4P^;ucLP#{%X>OLR02H6wS>3^G{KULy!adIe zb;SW6J2LqlC@1%6sXzP+7Bxk&<5zM4l`>9<8mZFt`ICLD5y>|Ju-h;CU3_M|-k-&& z?{n2v9mSaiGqwdRw8V0_^5yUD2O?RjC>#Q$6Lqja|1|FqrI?eC&*5)0-rKR+d-NAQ zhWz;PVB(vO2A7X#B-G(igPI7dQPXBZ(?SkgSuHctaODvcDPd6y{2zIgaLE5pmj0Jf zCKDg`iRr0JAnF+)fU)A!NqwtQ=!e`#Z!xgg+wQIYVf0<3Ki_rFDG7*|&hvv6d^*em z*WFj{vvQVhv1f~sb$XY$n$lu9@6!6k867!>6^t&(sHh@yb6H{VcDuCMBeXUH=jO1s zHYg1KTq1Yivk;AFsDDt#zjFWoCXJj^H&CNM<>YJJ1H~ku&9xMXPnu8JcfRx#Kjc?q zcicYfX$0Ea_hPGndM_k6n23xl)NU+)>14{Jduyx!dAPc2*>u?ZnEDN^h#SW9=g-f< zJ4ic)Jdz=aGun!ZinnCl8<_!dRD9OQZjQ$*K-XjA;BE}>(;wH0P5#5 z&%*>rLXVx9FyIX^b8_O%);i0%ySpd9QExCC?@ThF7P8-iMM}cpPafn2~hgwPV=IgIy&feQ^;%}*?`8MuCyT}!?_ETZ3p+Pk+)nN zomjYDrFGEI#!484F;qbzO7;)<>G2kDj||HCOBiA3%n9ie9qb(6jn4|=RqmX)1-r@p=(%qaDVtgLKDUmq@*BCnf2 z8)`;Iu~AV`Dl31}SE!cLw({o22Ahx&4%Axzz`zsFUBl^_nPp(buyb*BP892WH}Av& zvk7GTi2t88iV}lbg1>HJ zRh6`@E&EQ617q56dZYoL&ESvGJjK5u(2030es*qY*LW$>$(GRCD#`Kqv6`V_3=q~V zK-IUI_*l}v!_v^u0PtcrZtv(gaI-LejFNc2=X_2_j1xBB^=ol)c(++9JJ66D9vOKL zcuUBq4<9~+1cFQIMZYWNy1Md>42p`1;``RTPLVbO`2__97Bf|Lz>`@#@N#+m`nRBy z!dZ;lkWXfHwE!@l(Tg;rR=VF+j)h4vf!rn}Bm{jHa_#_(tF3u;pr_|Ks0LqO-?ojj z-NtVZLpT)_6=$1ktEt`BAAObaUc>L&e24{rGrCIrAP=85-OM@b<>4af>zeSP!6G!bE!MTow^E%g=)No4$o4;VH!Ho)hEwCyh; zfMXa2?4la6g^7vz#Z_c7zRoD+ncl2zc~*N#{^CuBMS?RC-ZJz z&t@V8#Mt*hhW(>Lny_ndIvYtO@LumpN=kZABY1)JEekB{#v>!6d$_oO3ey5#$o1mb z&SADDRzf^ryR_ES+BzI~+H}zrJY6~Oo<#xcuCmWV=f+d+9epS8IA)bMj{bmpMF1uV zfdDoe+Sn*IS!NXdcc}^q>8$X5Iff^$c*k1FF9zSmre^80 z|7<7392PK_MMOvQy~fsLkp1uVf7=ZI#mmkf6>74xkP&YZ=5!f$;`us{Hq)$ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac-members.html deleted file mode 100644 index 92c5b91bf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac-members.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRac Member List
    -
    -
    - -

    This is the complete list of members for IRac, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _invertedIRacprivate
    _modulationIRacprivate
    _pinIRacprivate
    _prevIRacprivate
    airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)IRacprivate
    amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)IRacprivate
    argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)IRacprivate
    boolToString(const bool value)IRacstatic
    carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)IRacprivate
    cleanState(const stdAc::state_t state)IRacprivatestatic
    cmpStates(const stdAc::state_t a, const stdAc::state_t b)IRacstatic
    coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)IRacprivate
    corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)IRacprivate
    daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)IRacprivate
    daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)IRacprivate
    daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)IRacprivate
    daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)IRacprivate
    daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)IRacprivate
    daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)IRacprivate
    daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)IRacprivate
    daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)IRacprivate
    delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)IRacprivate
    ecoclim(IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1, const int16_t clock=-1)IRacprivate
    electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)IRacprivate
    fanspeedToString(const stdAc::fanspeed_t speed)IRacstatic
    fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)IRacprivate
    getState(void)IRac
    getStatePrev(void)IRac
    goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)IRacprivate
    gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)IRacprivate
    haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)IRacprivate
    haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1)IRacprivate
    handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)IRacprivatestatic
    hasStateChanged(void)IRac
    hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)IRacprivate
    hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)IRacprivate
    hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)IRacprivate
    hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)IRacprivate
    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)IRacstatic
    initState(stdAc::state_t *state)IRacstatic
    IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRacexplicit
    isProtocolSupported(const decode_type_t protocol)IRacstatic
    kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode, const int8_t dryGrade, const float degrees, const stdAc::fanspeed_t fan, const bool toggleSwing, const bool superCool, const int16_t sleep)IRacprivate
    kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)IRacprivate
    lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)IRacprivate
    markAsSent(void)IRac
    midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)IRacprivate
    mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)IRacprivate
    mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)IRacprivate
    mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)IRacprivate
    mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)IRacprivate
    mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)IRacprivate
    neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)IRacprivate
    nextIRac
    opmodeToString(const stdAc::opmode_t mode)IRacstatic
    panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)IRacprivate
    panasonic32(IRPanasonicAc32 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)IRacprivate
    samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)IRacprivate
    sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)IRacprivate
    sendAc(void)IRac
    sendAc(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)IRac
    sendAc(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=-1, const int16_t clock=-1)IRac
    sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool filter, const bool clean)IRacprivate
    strToBool(const char *str, const bool def=false)IRacstatic
    strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)IRacstatic
    strToModel(const char *str, const int16_t def=-1)IRacstatic
    strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)IRacstatic
    strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)IRacstatic
    strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)IRacstatic
    swinghToString(const stdAc::swingh_t swingh)IRacstatic
    swingvToString(const stdAc::swingv_t swingv)IRacstatic
    tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)IRacprivate
    technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)IRacprivate
    teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)IRacprivate
    toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)IRacprivate
    transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)IRacprivate
    trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)IRacprivate
    truma(IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)IRacprivate
    vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)IRacprivate
    voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)IRacprivate
    whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)IRacprivate
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac.html deleted file mode 100644 index e24736509..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac.html +++ /dev/null @@ -1,6544 +0,0 @@ - - - - - - - -IRremoteESP8266: IRac Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    A universal/common/generic interface for controling supported A/Cs. - More...

    - -

    #include <IRac.h>

    -
    -Collaboration diagram for IRac:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRac (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
     Class constructor. More...
     
    void markAsSent (void)
     Update the previous state to the current one. More...
     
    bool sendAc (void)
     Send an A/C message based soley on our internal state. More...
     
    bool sendAc (const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
     Send A/C message for a given device using state_t structures. More...
     
    bool sendAc (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=-1, const int16_t clock=-1)
     Send A/C message for a given device using common A/C settings. More...
     
    stdAc::state_t getState (void)
     Get the current internal A/C climate state. More...
     
    stdAc::state_t getStatePrev (void)
     Get the previous internal A/C climate state that should have already been sent to the device. i.e. What the A/C unit should already be set to. More...
     
    bool hasStateChanged (void)
     Check if the internal state has changed from what was previously sent. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Static Public Member Functions

    static bool isProtocolSupported (const decode_type_t protocol)
     Is the given protocol supported by the IRac class? More...
     
    static void initState (stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
     Initialise the given state with the supplied settings. More...
     
    static void initState (stdAc::state_t *state)
     Initialise the given state with the supplied settings. More...
     
    static bool cmpStates (const stdAc::state_t a, const stdAc::state_t b)
     Compare two AirCon states. More...
     
    static bool strToBool (const char *str, const bool def=false)
     Convert the supplied str into the appropriate boolean value. More...
     
    static int16_t strToModel (const char *str, const int16_t def=-1)
     Convert the supplied str into the appropriate enum. More...
     
    static stdAc::opmode_t strToOpmode (const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
     Convert the supplied str into the appropriate enum. More...
     
    static stdAc::fanspeed_t strToFanspeed (const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
     Convert the supplied str into the appropriate enum. More...
     
    static stdAc::swingv_t strToSwingV (const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
     Convert the supplied str into the appropriate enum. More...
     
    static stdAc::swingh_t strToSwingH (const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
     Convert the supplied str into the appropriate enum. More...
     
    static String boolToString (const bool value)
     Convert the supplied boolean into the appropriate String. More...
     
    static String opmodeToString (const stdAc::opmode_t mode)
     Convert the supplied operation mode into the appropriate String. More...
     
    static String fanspeedToString (const stdAc::fanspeed_t speed)
     Convert the supplied fan speed enum into the appropriate String. More...
     
    static String swingvToString (const stdAc::swingv_t swingv)
     Convert the supplied enum into the appropriate String. More...
     
    static String swinghToString (const stdAc::swingh_t swingh)
     Convert the supplied enum into the appropriate String. More...
     
    - - - - -

    -Public Attributes

    stdAc::state_t next
     The state we want the device to be in after we send. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Private Member Functions

    void airwell (IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
     Send an Airwell A/C message with the supplied settings. More...
     
    void amcor (IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
     Send an Amcor A/C message with the supplied settings. More...
     
    void argo (IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
     Send an Argo A/C message with the supplied settings. More...
     
    void carrier64 (IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
     Send a Carrier 64-bit A/C message with the supplied settings. More...
     
    void coolix (IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
     Send a Coolix A/C message with the supplied settings. More...
     
    void corona (IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
     Send a Corona A/C message with the supplied settings. More...
     
    void daikin (IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
     Send a Daikin A/C message with the supplied settings. More...
     
    void daikin128 (IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
     Send a Daikin 128-bit A/C message with the supplied settings. More...
     
    void daikin152 (IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
     Send a Daikin 152-bit A/C message with the supplied settings. More...
     
    void daikin160 (IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
     Send a Daikin 160-bit A/C message with the supplied settings. More...
     
    void daikin176 (IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
     Send a Daikin 176-bit A/C message with the supplied settings. More...
     
    void daikin2 (IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
     Send a Daikin2 A/C message with the supplied settings. More...
     
    void daikin216 (IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
     Send a Daikin 216-bit A/C message with the supplied settings. More...
     
    void daikin64 (IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
     Send a Daikin 64-bit A/C message with the supplied settings. More...
     
    void delonghiac (IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
     Send a Delonghi A/C message with the supplied settings. More...
     
    void ecoclim (IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1, const int16_t clock=-1)
     Send an EcoClim A/C message with the supplied settings. More...
     
    void electra (IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
     Send an Electra A/C message with the supplied settings. More...
     
    void fujitsu (IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
     Send a Fujitsu A/C message with the supplied settings. More...
     
    void goodweather (IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
     Send a Goodweather A/C message with the supplied settings. More...
     
    void gree (IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
     Send a Gree A/C message with the supplied settings. More...
     
    void haier (IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
     Send a Haier A/C message with the supplied settings. More...
     
    void haierYrwo2 (IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1)
     Send a Haier YRWO2 A/C message with the supplied settings. More...
     
    void hitachi (IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
     Send a Hitachi A/C message with the supplied settings. More...
     
    void hitachi1 (IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
     Send a Hitachi1 A/C message with the supplied settings. More...
     
    void hitachi344 (IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
     Send a Hitachi 344-bit A/C message with the supplied settings. More...
     
    void hitachi424 (IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
     Send a Hitachi 424-bit A/C message with the supplied settings. More...
     
    void kelon (IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode, const int8_t dryGrade, const float degrees, const stdAc::fanspeed_t fan, const bool toggleSwing, const bool superCool, const int16_t sleep)
     Send a Kelon A/C message with the supplied settings. More...
     
    void kelvinator (IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
     Send a Kelvinator A/C message with the supplied settings. More...
     
    void lg (IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
     Send a LG A/C message with the supplied settings. More...
     
    void midea (IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
     Send a Midea A/C message with the supplied settings. More...
     
    void mitsubishi (IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
     Send a Mitsubishi A/C message with the supplied settings. More...
     
    void mitsubishi112 (IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
     Send a Mitsubishi 112-bit A/C message with the supplied settings. More...
     
    void mitsubishi136 (IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
     Send a Mitsubishi 136-bit A/C message with the supplied settings. More...
     
    void mitsubishiHeavy88 (IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
     Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings. More...
     
    void mitsubishiHeavy152 (IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
     Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings. More...
     
    void neoclima (IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
     Send a Neoclima A/C message with the supplied settings. More...
     
    void panasonic (IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
     Send a Panasonic A/C message with the supplied settings. More...
     
    void panasonic32 (IRPanasonicAc32 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
     Send a Panasonic A/C message with the supplied settings. More...
     
    void samsung (IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean, const bool beep, const bool prevpower=true, const bool forcepower=true)
     Send a Samsung A/C message with the supplied settings. More...
     
    void sanyo (IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
     Send a Toshiba A/C message with the supplied settings. More...
     
    void sharp (IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool filter, const bool clean)
     Send a Sharp A/C message with the supplied settings. More...
     
    void tcl112 (IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool econo, const bool filter)
     Send a TCL 112-bit A/C message with the supplied settings. More...
     
    void technibel (IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
     Send a Technibel A/C message with the supplied settings. More...
     
    void teco (IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
     Send a Teco A/C message with the supplied settings. More...
     
    void toshiba (IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo)
     Send a Toshiba A/C message with the supplied settings. More...
     
    void trotec (IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
     Send a Trotec A/C message with the supplied settings. More...
     
    void truma (IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)
     Send a Truma A/C message with the supplied settings. More...
     
    void vestel (IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
     Send a Vestel A/C message with the supplied settings. More...
     
    void voltas (IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
     Send a Voltas A/C message with the supplied settings. More...
     
    void whirlpool (IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
     Send a Whirlpool A/C message with the supplied settings. More...
     
    void transcold (IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
     Send a Transcold A/C message with the supplied settings. More...
     
    - - - - - - - -

    -Static Private Member Functions

    static stdAc::state_t cleanState (const stdAc::state_t state)
     Create a new state base on the provided state that has been suitably fixed. More...
     
    static stdAc::state_t handleToggles (const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
     Create a new state base on desired & previous states but handle any state changes for options that need to be toggled. More...
     
    - - - - - - - - - - - - - -

    -Private Attributes

    uint16_t _pin
     The GPIO to use to transmit messages from. More...
     
    bool _inverted
     IR LED is lit when GPIO is LOW (true) or HIGH (false)? More...
     
    bool _modulation
     Is frequency modulation to be used? More...
     
    stdAc::state_t _prev
     The state we expect the device to currently be in. More...
     
    -

    Detailed Description

    -

    A universal/common/generic interface for controling supported A/Cs.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRac()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRac::IRac (const uint16_t pin,
    const bool inverted = false,
    const bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Class constructor.

    -
    Parameters
    - - - - -
    [in]pinGpio pin to use when transmitting IR messages.
    [in]invertedtrue, gpio output defaults to high. false, to low.
    [in]use_modulationtrue means use frequency modulation. false, don't.
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ airwell()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::airwell (IRAirwellAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan 
    )
    -
    -private
    -
    - -

    Send an Airwell A/C message with the supplied settings.

    -
    Parameters
    - - - - - - -
    [in,out]acA Ptr to an IRAirwellAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    -
    -
    - -
    -
    - -

    ◆ amcor()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::amcor (IRAmcorAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan 
    )
    -
    -private
    -
    - -

    Send an Amcor A/C message with the supplied settings.

    -
    Parameters
    - - - - - - -
    [in,out]acA Ptr to an IRAmcorAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    -
    -
    - -
    -
    - -

    ◆ argo()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::argo (IRArgoACac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send an Argo A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRArgoAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]sleepNr. of minutes for sleep mode.
    -
    -
    -
    Note
    -1 is Off, >= 0 is on.
    - -
    -
    - -

    ◆ boolToString()

    - -
    -
    - - - - - -
    - - - - - - - - -
    String IRac::boolToString (const bool value)
    -
    -static
    -
    - -

    Convert the supplied boolean into the appropriate String.

    -
    Parameters
    - - -
    [in]valueThe boolean value to be converted.
    -
    -
    -
    Returns
    The equivalent String for the locale.
    - -
    -
    - -

    ◆ carrier64()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::carrier64 (IRCarrierAc64ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Carrier 64-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRCarrierAc64 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]sleepNr. of minutes for sleep mode.
    -
    -
    -
    Note
    -1 is Off, >= 0 is on.
    - -
    -
    - -

    ◆ cleanState()

    - -
    -
    - - - - - -
    - - - - - - - - -
    stdAc::state_t IRac::cleanState (const stdAc::state_t state)
    -
    -staticprivate
    -
    - -

    Create a new state base on the provided state that has been suitably fixed.

    -
    Note
    This is for use with Home Assistant, which requires mode to be off if the power is off.
    -
    Parameters
    - - -
    [in]stateThe state_t structure describing the desired a/c state.
    -
    -
    -
    Returns
    A stdAc::state_t with the needed settings.
    - -
    -
    - -

    ◆ cmpStates()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRac::cmpStates (const stdAc::state_t a,
    const stdAc::state_t b 
    )
    -
    -static
    -
    - -

    Compare two AirCon states.

    -
    Note
    The comparison excludes the clock.
    -
    Parameters
    - - - -
    aA state_t to be compared.
    bA state_t to be compared.
    -
    -
    -
    Returns
    True if they differ, False if they don't.
    - -
    -
    - -

    ◆ coolix()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::coolix (IRCoolixACac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool turbo,
    const bool light,
    const bool clean,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Coolix A/C message with the supplied settings.

    -
    Note
    May result in multiple messages being sent.
    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRCoolixAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]sleepNr. of minutes for sleep mode.
    -
    -
    -
    Note
    -1 is Off, >= 0 is on.
    - -
    -
    - -

    ◆ corona()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::corona (IRCoronaAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool econo 
    )
    -
    -private
    -
    - -

    Send a Corona A/C message with the supplied settings.

    -
    Note
    May result in multiple messages being sent.
    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRCoronaAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]econoRun the device in economical mode.
    -
    -
    - -
    -
    - -

    ◆ daikin()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin (IRDaikinESPac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo,
    const bool econo,
    const bool clean 
    )
    -
    -private
    -
    - -

    Send a Daikin A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRDaikinESP object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    -
    -
    - -
    -
    - -

    ◆ daikin128()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin128 (IRDaikin128ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool quiet,
    const bool turbo,
    const bool light,
    const bool econo,
    const int16_t sleep = -1,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Daikin 128-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRDaikin128 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]econoRun the device in economical mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ daikin152()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin152 (IRDaikin152ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool quiet,
    const bool turbo,
    const bool econo 
    )
    -
    -private
    -
    - -

    Send a Daikin 152-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRDaikin152 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    -
    -
    - -
    -
    - -

    ◆ daikin160()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin160 (IRDaikin160ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv 
    )
    -
    -private
    -
    - -

    Send a Daikin 160-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - -
    [in,out]acA Ptr to an IRDaikin160 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    -
    -
    - -
    -
    - -

    ◆ daikin176()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin176 (IRDaikin176ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingh_t swingh 
    )
    -
    -private
    -
    - -

    Send a Daikin 176-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - -
    [in,out]acA Ptr to an IRDaikin176 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swinghThe horizontal swing setting.
    -
    -
    - -
    -
    - -

    ◆ daikin2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin2 (IRDaikin2ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo,
    const bool light,
    const bool econo,
    const bool filter,
    const bool clean,
    const bool beep,
    const int16_t sleep = -1,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Daikin2 A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRDaikin2 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]econoRun the device in economical mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]beepEnable/Disable beeps when receiving IR messages.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ daikin216()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin216 (IRDaikin216ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo 
    )
    -
    -private
    -
    - -

    Send a Daikin 216-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRDaikin216 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    -
    -
    - -
    -
    - -

    ◆ daikin64()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::daikin64 (IRDaikin64ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool quiet,
    const bool turbo,
    const int16_t sleep = -1,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Daikin 64-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - -
    [in,out]acA Ptr to an IRDaikin64 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ delonghiac()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::delonghiac (IRDelonghiAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const bool celsius,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const bool turbo,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Delonghi A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRDelonghiAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]turboRun the device in turbo/powerful mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ ecoclim()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::ecoclim (IREcoclimAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const int16_t sleep = -1,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send an EcoClim A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IREcoclimAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ electra()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::electra (IRElectraAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool turbo,
    const bool lighttoggle,
    const bool clean 
    )
    -
    -private
    -
    - -

    Send an Electra A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - -
    [in,out]acA Ptr to an IRElectraAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lighttoggleShould we toggle the LED/Display?
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    -
    -
    - -
    -
    - -

    ◆ fanspeedToString()

    - -
    -
    - - - - - -
    - - - - - - - - -
    String IRac::fanspeedToString (const stdAc::fanspeed_t speed)
    -
    -static
    -
    - -

    Convert the supplied fan speed enum into the appropriate String.

    -
    Parameters
    - - -
    [in]speedThe enum to be converted.
    -
    -
    -
    Returns
    The equivalent String for the locale.
    - -
    -
    - -

    ◆ fujitsu()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::fujitsu (IRFujitsuACac,
    const fujitsu_ac_remote_model_t model,
    const bool on,
    const stdAc::opmode_t mode,
    const bool celsius,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo,
    const bool econo,
    const bool filter,
    const bool clean,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Fujitsu A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRFujitsuAC object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]sleepNr. of minutes for sleep mode. <= 0 is Off, > 0 is on.
    -
    -
    - -
    -
    - -

    ◆ getState()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRac::getState (void )
    -
    - -

    Get the current internal A/C climate state.

    -
    Returns
    A Ptr to a state containing the current (to be sent) settings.
    - -
    -
    - -

    ◆ getStatePrev()

    - -
    -
    - - - - - - - - -
    stdAc::state_t IRac::getStatePrev (void )
    -
    - -

    Get the previous internal A/C climate state that should have already been sent to the device. i.e. What the A/C unit should already be set to.

    -
    Returns
    A Ptr to a state containing the previously sent settings.
    - -
    -
    - -

    ◆ goodweather()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::goodweather (IRGoodweatherAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool light,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Goodweather A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRGoodweatherAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ gree()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::gree (IRGreeACac,
    const gree_ac_remote_model_t model,
    const bool on,
    const stdAc::opmode_t mode,
    const bool celsius,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool light,
    const bool clean,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Gree A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRGreeAC object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ haier()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::haier (IRHaierACac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool filter,
    const int16_t sleep = -1,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Haier A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRGreeAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ haierYrwo2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::haierYrwo2 (IRHaierACYRW02ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool filter,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Haier YRWO2 A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRHaierACYRW02 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ handleToggles()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    stdAc::state_t IRac::handleToggles (const stdAc::state_t desired,
    const stdAc::state_tprev = NULL 
    )
    -
    -staticprivate
    -
    - -

    Create a new state base on desired & previous states but handle any state changes for options that need to be toggled.

    -
    Parameters
    - - - -
    [in]desiredThe state_t structure describing the desired a/c state.
    [in]prevA Ptr to the previous state_t structure.
    -
    -
    -
    Returns
    A stdAc::state_t with the needed settings.
    - -
    -
    - -

    ◆ hasStateChanged()

    - -
    -
    - - - - - - - - -
    bool IRac::hasStateChanged (void )
    -
    - -

    Check if the internal state has changed from what was previously sent.

    -
    Note
    The comparison excludes the clock.
    -
    Returns
    True if it has changed, False if not.
    - -
    -
    - -

    ◆ hitachi()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::hitachi (IRHitachiAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh 
    )
    -
    -private
    -
    - -

    Send a Hitachi A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRHitachiAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    -
    -
    - -
    -
    - -

    ◆ hitachi1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::hitachi1 (IRHitachiAc1ac,
    const hitachi_ac1_remote_model_t model,
    const bool on,
    const bool power_toggle,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool swing_toggle,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Hitachi1 A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRHitachiAc1 object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]power_toggleThe power toggle setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]swing_toggleThe swing_toggle setting.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    -
    Note
    The sleep mode used is the "Sleep 2" setting.
    - -
    -
    - -

    ◆ hitachi344()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::hitachi344 (IRHitachiAc344ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh 
    )
    -
    -private
    -
    - -

    Send a Hitachi 344-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRHitachiAc344 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    -
    -
    - -
    -
    - -

    ◆ hitachi424()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::hitachi424 (IRHitachiAc424ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv 
    )
    -
    -private
    -
    - -

    Send a Hitachi 424-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - -
    [in,out]acA Ptr to an IRHitachiAc424 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    -
    -
    - -
    -
    - -

    ◆ initState() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRac::initState (stdAc::state_tstate)
    -
    -static
    -
    - -

    Initialise the given state with the supplied settings.

    -
    Parameters
    - - -
    [out]stateA Ptr to where the settings will be stored.
    -
    -
    -
    Note
    Sets all the parameters to reasonable base/automatic defaults.
    - -
    -
    - -

    ◆ initState() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::initState (stdAc::state_tstate,
    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 
    )
    -
    -static
    -
    - -

    Initialise the given state with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - - - - - - - - -
    [out]stateA Ptr to where the settings will be stored.
    [in]vendorThe vendor/protocol type.
    [in]modelThe A/C model if applicable.
    [in]powerThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]lightTurn on the LED/Display mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]beepEnable/Disable beeps when receiving IR messages.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on. Some devices it is the nr. of mins to run for. Others it may be the time to enter/exit sleep mode. i.e. Time in Nr. of mins since midnight.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ isProtocolSupported()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRac::isProtocolSupported (const decode_type_t protocol)
    -
    -static
    -
    - -

    Is the given protocol supported by the IRac class?

    -
    Parameters
    - - -
    [in]protocolThe vendor/protocol type.
    -
    -
    -
    Returns
    true if the protocol is supported by this class, otherwise false.
    - -
    -
    - -

    ◆ kelon()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::kelon (IRKelonAcac,
    const bool togglePower,
    const stdAc::opmode_t mode,
    const int8_t dryGrade,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const bool toggleSwing,
    const bool superCool,
    const int16_t sleep 
    )
    -
    -private
    -
    - -

    Send a Kelon A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRKelonAc object to use.
    [in]togglePowerWhether to toggle the unit's power
    [in]modeThe operation mode setting.
    [in]dryGradeThe dehumidification intensity grade
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]toggleSwingWhether to toggle the swing setting
    [in]superCoolRun the device in Super cooling mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on
    -
    -
    - -
    -
    - -

    ◆ kelvinator()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::kelvinator (IRKelvinatorACac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo,
    const bool light,
    const bool filter,
    const bool clean 
    )
    -
    -private
    -
    - -

    Send a Kelvinator A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRKelvinatorAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. XFan, dry filters etc
    -
    -
    - -
    -
    - -

    ◆ lg()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::lg (IRLgAcac,
    const lg_ac_remote_model_t model,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan 
    )
    -
    -private
    -
    - -

    Send a LG A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - -
    [in,out]acA Ptr to an IRLgAc object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    -
    -
    - -
    -
    - -

    ◆ markAsSent()

    - -
    -
    - - - - - - - - -
    void IRac::markAsSent (void )
    -
    - -

    Update the previous state to the current one.

    - -
    -
    - -

    ◆ midea()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::midea (IRMideaACac,
    const bool on,
    const stdAc::opmode_t mode,
    const bool celsius,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool econo,
    const bool light,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Midea A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRMideaAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboToggle the device's turbo/powerful mode.
    [in]econoToggle the device's economical mode.
    [in]lightToggle the LED/Display mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    -
    Note
    On Danby A/C units, swingv controls the Ion Filter instead.
    - -
    -
    - -

    ◆ mitsubishi()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::mitsubishi (IRMitsubishiACac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Mitsubishi A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - -
    [in,out]acA Ptr to an IRMitsubishiAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    -
    Note
    Clock can only be set in 10 minute increments. i.e. % 10.
    - -
    -
    - -

    ◆ mitsubishi112()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::mitsubishi112 (IRMitsubishi112ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet 
    )
    -
    -private
    -
    - -

    Send a Mitsubishi 112-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRMitsubishi112 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    -
    -
    - -
    -
    - -

    ◆ mitsubishi136()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::mitsubishi136 (IRMitsubishi136ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool quiet 
    )
    -
    -private
    -
    - -

    Send a Mitsubishi 136-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRMitsubishi136 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]quietRun the device in quiet/silent mode.
    -
    -
    - -
    -
    - -

    ◆ mitsubishiHeavy152()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::mitsubishiHeavy152 (IRMitsubishiHeavy152Acac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo,
    const bool econo,
    const bool filter,
    const bool clean,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRMitsubishiHeavy152Ac object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ mitsubishiHeavy88()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::mitsubishiHeavy88 (IRMitsubishiHeavy88Acac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool turbo,
    const bool econo,
    const bool clean 
    )
    -
    -private
    -
    - -

    Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - -
    [in,out]acA Ptr to an IRMitsubishiHeavy88Ac object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    -
    -
    - -
    -
    - -

    ◆ neoclima()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::neoclima (IRNeoclimaAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const bool celsius,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool turbo,
    const bool econo,
    const bool light,
    const bool filter,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Neoclima A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRNeoclimaAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]lightTurn on the LED/Display mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ opmodeToString()

    - -
    -
    - - - - - -
    - - - - - - - - -
    String IRac::opmodeToString (const stdAc::opmode_t mode)
    -
    -static
    -
    - -

    Convert the supplied operation mode into the appropriate String.

    -
    Parameters
    - - -
    [in]modeThe enum to be converted.
    -
    -
    -
    Returns
    The equivalent String for the locale.
    - -
    -
    - -

    ◆ panasonic()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::panasonic (IRPanasonicAcac,
    const panasonic_ac_remote_model_t model,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool quiet,
    const bool turbo,
    const bool filter,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Panasonic A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRPanasonicAc object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    - -

    ◆ panasonic32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::panasonic32 (IRPanasonicAc32ac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh 
    )
    -
    -private
    -
    - -

    Send a Panasonic A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRPanasonicAc32 object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    -
    -
    - -
    -
    - -

    ◆ samsung()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::samsung (IRSamsungAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool quiet,
    const bool turbo,
    const bool light,
    const bool filter,
    const bool clean,
    const bool beep,
    const bool prevpower = true,
    const bool forcepower = true 
    )
    -
    -private
    -
    - -

    Send a Samsung A/C message with the supplied settings.

    -
    Note
    Multiple IR messages may be generated & sent.
    -
    Parameters
    - - - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRSamsungAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]beepEnable/Disable beeps when receiving IR messages.
    [in]prevpowerThe power setting from the previous A/C state.
    [in]forcepowerDo we force send the special power message?
    -
    -
    - -
    -
    - -

    ◆ sanyo()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::sanyo (IRSanyoAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool beep,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Toshiba A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRSanyoAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]beepEnable/Disable beeps when receiving IR messages.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ sendAc() [1/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRac::sendAc (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 = -1,
    const int16_t clock = -1 
    )
    -
    - -

    Send A/C message for a given device using common A/C settings.

    -
    Parameters
    - - - - - -
    [in]vendorThe vendor/protocol type.
    [in]modelThe A/C model if applicable.
    [in]powerThe power setting.
    [in]modeThe operation mode setting.
    -
    -
    -
    Note
    Changing mode from "Off" to something else does NOT turn on a device. You need to use power for that.
    -
    Parameters
    - - - - -
    [in]degreesThe temperature setting in degrees.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]fanThe speed setting for the fan.
    -
    -
    -
    Note
    The following are all "if supported" by the underlying A/C classes.
    -
    Parameters
    - - - - - - - - - - - - -
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]quietRun the device in quiet/silent mode.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]lightTurn on the LED/Display mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    [in]beepEnable/Disable beeps when receiving IR messages.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on. Some devices it is the nr. of mins to run for. Others it may be the time to enter/exit sleep mode. i.e. Time in Nr. of mins since midnight.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    -
    Returns
    True, if accepted/converted/attempted etc. False, if unsupported.
    - -
    -
    - -

    ◆ sendAc() [2/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool IRac::sendAc (const stdAc::state_t desired,
    const stdAc::state_tprev = NULL 
    )
    -
    - -

    Send A/C message for a given device using state_t structures.

    -
    Parameters
    - - - -
    [in]desiredThe state_t structure describing the desired new ac state
    [in]prevA Ptr to the state_t structure containing the previous state
    -
    -
    -
    Note
    Changing mode from "Off" to something else does NOT turn on a device. You need to use power for that.
    -
    Returns
    True, if accepted/converted/attempted etc. False, if unsupported.
    - -
    -
    - -

    ◆ sendAc() [3/3]

    - -
    -
    - - - - - - - - -
    bool IRac::sendAc (void )
    -
    - -

    Send an A/C message based soley on our internal state.

    -
    Returns
    True, if accepted/converted/attempted. False, if unsupported.
    - -
    -
    - -

    ◆ sharp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::sharp (IRSharpAcac,
    const sharp_ac_remote_model_t model,
    const bool on,
    const bool prev_power,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool light,
    const bool filter,
    const bool clean 
    )
    -
    -private
    -
    - -

    Send a Sharp A/C message with the supplied settings.

    -
    Note
    Multiple IR messages may be generated & sent.
    -
    Parameters
    - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRSharpAc object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]prev_powerThe power setting from the previous A/C state.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]cleanTurn on the self-cleaning mode. e.g. Mould, dry filters etc
    -
    -
    - -
    -
    - -

    ◆ strToBool()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    bool IRac::strToBool (const char * str,
    const bool def = false 
    )
    -
    -static
    -
    - -

    Convert the supplied str into the appropriate boolean value.

    -
    Parameters
    - - - -
    [in]strA Ptr to a C-style string to be converted.
    [in]defThe boolean value to return if no conversion was possible.
    -
    -
    -
    Returns
    The equivalent boolean value.
    - -
    -
    - -

    ◆ strToFanspeed()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    stdAc::fanspeed_t IRac::strToFanspeed (const char * str,
    const stdAc::fanspeed_t def = stdAc::fanspeed_t::kAuto 
    )
    -
    -static
    -
    - -

    Convert the supplied str into the appropriate enum.

    -
    Parameters
    - - - -
    [in]strA Ptr to a C-style string to be converted.
    [in]defThe enum to return if no conversion was possible.
    -
    -
    -
    Returns
    The equivalent enum.
    - -
    -
    - -

    ◆ strToModel()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    int16_t IRac::strToModel (const char * str,
    const int16_t def = -1 
    )
    -
    -static
    -
    - -

    Convert the supplied str into the appropriate enum.

    -
    Note
    Assumes str is the model code or an integer >= 1.
    -
    Parameters
    - - - -
    [in]strA Ptr to a C-style string to be converted.
    [in]defThe enum to return if no conversion was possible.
    -
    -
    -
    Returns
    The equivalent enum.
    - -
    -
    - -

    ◆ strToOpmode()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    stdAc::opmode_t IRac::strToOpmode (const char * str,
    const stdAc::opmode_t def = stdAc::opmode_t::kAuto 
    )
    -
    -static
    -
    - -

    Convert the supplied str into the appropriate enum.

    -
    Parameters
    - - - -
    [in]strA Ptr to a C-style string to be converted.
    [in]defThe enum to return if no conversion was possible.
    -
    -
    -
    Returns
    The equivalent enum.
    - -
    -
    - -

    ◆ strToSwingH()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    stdAc::swingh_t IRac::strToSwingH (const char * str,
    const stdAc::swingh_t def = stdAc::swingh_t::kOff 
    )
    -
    -static
    -
    - -

    Convert the supplied str into the appropriate enum.

    -
    Parameters
    - - - -
    [in]strA Ptr to a C-style string to be converted.
    [in]defThe enum to return if no conversion was possible.
    -
    -
    -
    Returns
    The equivalent enum.
    - -
    -
    - -

    ◆ strToSwingV()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    stdAc::swingv_t IRac::strToSwingV (const char * str,
    const stdAc::swingv_t def = stdAc::swingv_t::kOff 
    )
    -
    -static
    -
    - -

    Convert the supplied str into the appropriate enum.

    -
    Parameters
    - - - -
    [in]strA Ptr to a C-style string to be converted.
    [in]defThe enum to return if no conversion was possible.
    -
    -
    -
    Returns
    The equivalent enum.
    - -
    -
    - -

    ◆ swinghToString()

    - -
    -
    - - - - - -
    - - - - - - - - -
    String IRac::swinghToString (const stdAc::swingh_t swingh)
    -
    -static
    -
    - -

    Convert the supplied enum into the appropriate String.

    -
    Parameters
    - - -
    [in]swinghThe enum to be converted.
    -
    -
    -
    Returns
    The equivalent String for the locale.
    - -
    -
    - -

    ◆ swingvToString()

    - -
    -
    - - - - - -
    - - - - - - - - -
    String IRac::swingvToString (const stdAc::swingv_t swingv)
    -
    -static
    -
    - -

    Convert the supplied enum into the appropriate String.

    -
    Parameters
    - - -
    [in]swingvThe enum to be converted.
    -
    -
    -
    Returns
    The equivalent String for the locale.
    - -
    -
    - -

    ◆ tcl112()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::tcl112 (IRTcl112Acac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool turbo,
    const bool light,
    const bool econo,
    const bool filter 
    )
    -
    -private
    -
    - -

    Send a TCL 112-bit A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRTcl112Ac object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]econoRun the device in economical mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    -
    -
    - -
    -
    - -

    ◆ technibel()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::technibel (IRTechnibelAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const bool celsius,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Technibel A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRTechnibelAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]celsiusTemperature units. True is Celsius, False is Fahrenheit.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ teco()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::teco (IRTecoAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool light,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Teco A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRTecoAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]lightTurn on the LED/Display mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ toshiba()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::toshiba (IRToshibaACac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool econo 
    )
    -
    -private
    -
    - -

    Send a Toshiba A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - -
    [in,out]acA Ptr to an IRToshibaAC object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    -
    -
    - -
    -
    - -

    ◆ transcold()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::transcold (IRTranscoldAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh 
    )
    -
    -private
    -
    - -

    Send a Transcold A/C message with the supplied settings.

    -
    Note
    May result in multiple messages being sent.
    -
    Parameters
    - - - - - - - - -
    [in,out]acA Ptr to an IRTranscoldAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    -
    -
    -
    Note
    -1 is Off, >= 0 is on.
    - -
    -
    - -

    ◆ trotec()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::trotec (IRTrotecESPac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Trotec A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - -
    [in,out]acA Ptr to an IRTrotecESP object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ truma()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::truma (IRTrumaAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const bool quiet 
    )
    -
    -private
    -
    - -

    Send a Truma A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - -
    [in,out]acA Ptr to an IRTrumaAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]quietRun the device quietly if we can.
    -
    -
    - -
    -
    - -

    ◆ vestel()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::vestel (IRVestelAcac,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool filter,
    const int16_t sleep = -1,
    const int16_t clock = -1,
    const bool sendNormal = true 
    )
    -
    -private
    -
    - -

    Send a Vestel A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRVestelAc object to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]filterTurn on the (ion/pollen/etc) filter mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    [in]sendNormalDo we send a Normal settings message at all? i.e In addition to the clock/time/timer message
    -
    -
    - -
    -
    - -

    ◆ voltas()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::voltas (IRVoltasac,
    const voltas_ac_remote_model_t model,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const stdAc::swingh_t swingh,
    const bool turbo,
    const bool econo,
    const bool light,
    const int16_t sleep = -1 
    )
    -
    -private
    -
    - -

    Send a Voltas A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRVoltas object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]swinghThe horizontal swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]econoRun the device in economical mode.
    [in]lightTurn on the LED/Display mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    -
    -
    - -
    -
    - -

    ◆ whirlpool()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRac::whirlpool (IRWhirlpoolAcac,
    const whirlpool_ac_remote_model_t model,
    const bool on,
    const stdAc::opmode_t mode,
    const float degrees,
    const stdAc::fanspeed_t fan,
    const stdAc::swingv_t swingv,
    const bool turbo,
    const bool light,
    const int16_t sleep = -1,
    const int16_t clock = -1 
    )
    -
    -private
    -
    - -

    Send a Whirlpool A/C message with the supplied settings.

    -
    Parameters
    - - - - - - - - - - - - -
    [in,out]acA Ptr to an IRWhirlpoolAc object to use.
    [in]modelThe A/C model to use.
    [in]onThe power setting.
    [in]modeThe operation mode setting.
    [in]degreesThe temperature setting in degrees.
    [in]fanThe speed setting for the fan.
    [in]swingvThe vertical swing setting.
    [in]turboRun the device in turbo/powerful mode.
    [in]lightTurn on the LED/Display mode.
    [in]sleepNr. of minutes for sleep mode. -1 is Off, >= 0 is on.
    [in]clockThe time in Nr. of mins since midnight. < 0 is ignore.
    -
    -
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _inverted

    - -
    -
    - - - - - -
    - - - - -
    bool IRac::_inverted
    -
    -private
    -
    - -

    IR LED is lit when GPIO is LOW (true) or HIGH (false)?

    - -
    -
    - -

    ◆ _modulation

    - -
    -
    - - - - - -
    - - - - -
    bool IRac::_modulation
    -
    -private
    -
    - -

    Is frequency modulation to be used?

    - -
    -
    - -

    ◆ _pin

    - -
    -
    - - - - - -
    - - - - -
    uint16_t IRac::_pin
    -
    -private
    -
    - -

    The GPIO to use to transmit messages from.

    - -
    -
    - -

    ◆ _prev

    - -
    -
    - - - - - -
    - - - - -
    stdAc::state_t IRac::_prev
    -
    -private
    -
    - -

    The state we expect the device to currently be in.

    - -
    -
    - -

    ◆ next

    - -
    -
    - - - - -
    stdAc::state_t IRac::next
    -
    - -

    The state we want the device to be in after we send.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.map deleted file mode 100644 index 2ea7b14c7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.md5 deleted file mode 100644 index 967a367b6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -ee790889d0070a5bbe071b50dd75d157 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRac__coll__graph.png deleted file mode 100644 index ed8ea1ee9140bc33fef84a87fb305f46cea3896e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3252 zcmZ8k2Uru?8XXW&dXW}-cNbVddX35=9RcYjl!&qzkVuOVVvq&0NE48@tkfq8ksy5u z0t#YKdT&BD(gFb~f$->W-16S{y*uB`{buIQf6KY&{AZFKZdh=0h;aY_z-?t|b`z|l z!87dwGkBFKH01{?Hn@$28F2RPC~13<4FFt0R%X|nAN;oQ4B>EbQtIuQxQ`r*14}fd zvr9N6kh#YhlCwjN{J^{lG-><38Yvj56qLl@$V?xXtsWDG;77mroQ=p(^g#8Oj?atDVJ<*)<)fF&-X}!{H6~=Oh#v6X*bc zDsPdFZ26qXDMIjS{(87a6TE&qFpy^G-4>&B-4TPqR9037>!Q0K3z5<#&&8FN$`YeP zLPCOrUwKyZaB&4A5TlVsP-szc@!(PzCN_5d!9rSP<@b-vc%+O)`T4K84UwA^lE%iI z0htT&y-UJELYWFd4Ks_20S_NSab4RC#tl2W9P8&5JhAt@w1Q_Ef<`Os4i#Nn+fkcE zDJeGL;q}(f1(MBLqc+NV-KstJ#@&2ZtEzoFpeiZ|KfjXtdM!1z8{|D3^|pw$F|gkR zQ_5^;M>V2zg+5vBh1&l*H#|ICS69a=qUNCF?In6H&Ahzj{(^Zxz+!<`V5)0xPtVlv z_sh-XAkxy5)nBW-vho@ZTg9i^9nwoxPFRQP=2(YoSQRh_L2vqNV z21CuODfrHvq_US33Zs<<` zMW9gUt|E~d*Z5ej=^Gf>+1gq@ziHF?I@jXho~^xo4IY2AkZ~m|JNu%5z*B2Q;I;c1 zO<6%9ASNaTiF`7jW2vyqW|id|yWI_rEmArXgE`q=ATh=DF5PXMArREOx-~R3WcV&H zHfB+0r;6+E2UT+`PQB;<(k-)rt?}p@<(`n_tz`kXuoqfq^UQ z>#tn#E|ty-R?JuZ{QM9I6^t=IKR;rU(BIoDE+&>`sldw08Zk>G8UpSuVb2N82?+^J z--<2|E;~0jH#?iYQjAT{$SBsoUsh4U20Ttlk(ZZW{X`70ftPT$wY9-uuo|B>PfyP( zapw*(To;9Y0HVd8(rx{GXQmMWfk41%j8SOKjbbN*qgk=luJ|j5)bgGlOB4zvm4P}v zjwZfoX)#b%{xm&Za2lW6yCkl6Py2TsFi=ZN3!CK5!EwlJlcS)Ht}bK3EA$62`u3M@ z@YNl{kE*E@aBY2v5tVp6?N=Q{)cRCuYnaAM-OHD2!AWjyA$fT-#_?`vTV1?&c*rHy zkmY4W{0KVT$HT)4`^fkcE-9KX=7tM4UW{B`ey&wF-dS03`StDIT+;ePPdJ1tuNNbb zELc2AeM=aA1S|hJlMq6UIh^5{)k#)-W#bxV{exSGD$ymnB_i}juRN8U$Cu`;9uoNR%Clx~%>OwS2J|*VgAi{Ncec#(=V^L zu&Q+^nTdC)5}H^3TJ&?R=I8&?_0%`ZPWC^+K6|K&bglBA$7K>A90Rg{V*{esxuCkG zcP=W8kIqTTXU!m?H{15Jva+Uv8BX>lkq0}siJz%!r}OhZSS&W?w()gG0|SHPS1TU%2@5>1(au$IrqYp45UEcRe$DOmRi_+3{$jFGH zp<(;+jtwlE||l19Q8FP77)T3cs7e*BobxmHhUB+9>C*cSf5b8Ko#9}4yH_Fi9F($Uwq z%sbD*($LWGleXBW_kG2trO5E`)@ZuY+;}_Y2$aka(OKgNn1e&fEUXrO9n7dOH9?M5 zQ!OoQ&6^!-FtJ^CRIo})N-Bb4W|C?zYvP<0=5lolyr)H_qzE0==*CO9u2Q|ezT=QN z;$B~Y7Ff8sxo_RNRZvi%%T);Jh}64kQmPneH!nP-9Hbz?UOf1snf=QqS~_Mq6p0)H z@h;g&;uaTHb$4)b3O_wQaP!6F6y-Mxr5e}t(+^gP&vts%v$L~{V|S9h)dqWdG+z4M zSeBawQrJ(^}mDxjSy&KG)5W^4iLD+OhW&luaRnMM85<0)bAfr z`-Zmsiu3ld&a&(u67hc)*Ve?;u z)1L^P+h3pVq98#|Q8z%4qvQ_}bcSk~G%V&h7-1 z^F0wYO@3UI-NN#6Zf52+z63M5QX38q4v_EQ#$jbH;j=yQB7_isyNySb!{rRw9u{LZ44i@M%^SGawzi^$zq; z_wU!%)Py=YjrJGnEi5c-Kn{P_Z=kJxD|Z28RFp7BqO7d!A+{G@o2%|yR8TNIG6D`l zQ(ynzph0>D#Te@Aivl2t*Dp2%Nz6pLy1M%K%uh|ZgM5jOJ_sK)vFPBhtE^mIpRU&| zNF5LugdV8^yZig~?yo?%V{|@5jBODiEnN)y1JDdjOiVDprBZ)#bR1spFT~^VU>X~PYQ81k dzg6iB2$3^81ajxC!QT+T>iP{cf~jBpe*h|`X|MnQ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv-members.html deleted file mode 100644 index 75f12cf5c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv-members.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRrecv Member List
    -
    -
    - -

    This is the complete list of members for IRrecv, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _getParamsPtr(void)IRrecvprivate
    _matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)IRrecvprivate
    _timer_numIRrecvprivate
    _toleranceIRrecvprivate
    _unknown_thresholdIRrecvprivate
    _validTolerance(const uint8_t percentage)IRrecvprivate
    compare(const uint16_t oldval, const uint16_t newval)IRrecvprivate
    copyIrParams(volatile irparams_t *src, irparams_t *dst)IRrecvprivate
    crudeNoiseFilter(decode_results *results, const uint16_t floor=0)IRrecvprivate
    decode(decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)IRrecv
    decodeAirwell(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)IRrecvprivate
    decodeAiwaRCT501(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)IRrecvprivate
    decodeAmcor(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)IRrecvprivate
    decodeArgo(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)IRrecvprivate
    decodeCarrierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)IRrecvprivate
    decodeCarrierAC40(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)IRrecvprivate
    decodeCarrierAC64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)IRrecvprivate
    decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)IRrecvprivate
    decodeCoronaAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)IRrecvprivate
    decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)IRrecvprivate
    decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)IRrecvprivate
    decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)IRrecvprivate
    decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)IRrecvprivate
    decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)IRrecvprivate
    decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)IRrecvprivate
    decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)IRrecvprivate
    decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)IRrecvprivate
    decodeDelonghiAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDelonghiAcBits, const bool strict=true)IRrecvprivate
    decodeDenon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)IRrecvprivate
    decodeDISH(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)IRrecvprivate
    decodeDoshisha(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)IRrecvprivate
    decodeEcoclim(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEcoclimBits, const bool strict=true)IRrecvprivate
    decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)IRrecvprivate
    decodeElitescreens(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEliteScreensBits, const bool strict=true)IRrecvprivate
    decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)IRrecvprivate
    decodeFujitsuAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)IRrecvprivate
    decodeGICable(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)IRrecvprivate
    decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)IRrecvprivate
    decodeGree(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)IRrecvprivate
    decodeHaierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)IRrecvprivate
    decodeHaierAC176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierAC176Bits, const bool strict=true)IRrecvprivate
    decodeHaierACYRW02(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)IRrecvprivate
    decodeHash(decode_results *results)IRrecvprivate
    decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)IRrecvprivate
    decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)IRrecvprivate
    decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)IRrecvprivate
    decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)IRrecvprivate
    decodeInax(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)IRrecvprivate
    decodeJVC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)IRrecvprivate
    decodeKelon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelonBits, const bool strict=true)IRrecvprivate
    decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)IRrecvprivate
    decodeLasertag(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)IRrecvprivate
    decodeLegoPf(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)IRrecvprivate
    decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)IRrecvprivate
    decodeLutron(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)IRrecvprivate
    decodeMagiQuest(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)IRrecvprivate
    decodeMetz(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMetzBits, const bool strict=true)IRrecvprivate
    decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)IRrecvprivate
    decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)IRrecvprivate
    decodeMilestag2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMilesTag2ShotBits, const bool strict=true)IRrecvprivate
    decodeMirage(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMirageBits, const bool strict=true)IRrecvprivate
    decodeMitsubishi(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)IRrecvprivate
    decodeMitsubishi112(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)IRrecvprivate
    decodeMitsubishi136(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)IRrecvprivate
    decodeMitsubishi2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)IRrecvprivate
    decodeMitsubishiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)IRrecvprivate
    decodeMitsubishiHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)IRrecvprivate
    decodeMultibrackets(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)IRrecvprivate
    decodeMWM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)IRrecvprivate
    decodeNEC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)IRrecvprivate
    decodeNeoclima(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)IRrecvprivate
    decodeNikai(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)IRrecvprivate
    decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)IRrecvprivate
    decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)IRrecvprivate
    decodePanasonicAC32(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAc32Bits, const bool strict=true)IRrecvprivate
    decodePioneer(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)IRrecvprivate
    decodeRC5(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)IRrecvprivate
    decodeRC6(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)IRrecvprivate
    decodeRCMM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)IRrecvprivate
    decodeSAMSUNG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)IRrecvprivate
    decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)IRrecvprivate
    decodeSamsungAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)IRrecvprivate
    decodeSanyoAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAcBits, const bool strict=true)IRrecvprivate
    decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, const bool strict=true)IRrecvprivate
    decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)IRrecvprivate
    decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)IRrecvprivate
    decodeSony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)IRrecvprivate
    decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)IRrecvprivate
    decodeTechnibelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTechnibelAcBits, const bool strict=true)IRrecvprivate
    decodeTeco(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)IRrecvprivate
    decodeTeknopoint(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTeknopointBits, const bool strict=true)IRrecvprivate
    decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kToshibaACBits, const bool strict=true)IRrecvprivate
    decodeTranscold(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTranscoldBits, const bool strict=true)IRrecvprivate
    decodeTrotec(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)IRrecvprivate
    decodeTruma(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrumaBits, const bool strict=true)IRrecvprivate
    decodeVestelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)IRrecvprivate
    decodeVoltas(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVoltasBits, const bool strict=true)IRrecvprivate
    decodeWhirlpoolAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)IRrecvprivate
    decodeWhynter(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)IRrecvprivate
    decodeXmp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kXmpBits, const bool strict=true)IRrecvprivate
    decodeZepeal(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)IRrecvprivate
    disableIRIn(void)IRrecv
    enableIRIn(const bool pullup=false)IRrecv
    getBufSize(void)IRrecv
    getRClevel(decode_results *results, uint16_t *offset, uint16_t *used, uint16_t bitTime, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const uint16_t delta=0, const uint8_t maxwidth=3)IRrecvprivate
    getTolerance(void)IRrecv
    irparams_saveIRrecvprivate
    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)IRrecvexplicit
    IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)IRrecvexplicit
    match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecv
    matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecvprivate
    matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)IRrecvprivate
    matchData(volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)IRrecvprivate
    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)IRrecvprivate
    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)IRrecvprivate
    matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)IRrecvprivate
    matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)IRrecvprivate
    matchManchesterData(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)IRrecvprivate
    matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)IRrecv
    matchMarkRange(const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)IRrecv
    matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)IRrecv
    matchSpaceRange(const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)IRrecv
    resume(void)IRrecv
    setTolerance(const uint8_t percent=kTolerance)IRrecv
    setUnknownThreshold(const uint16_t length)IRrecv
    ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecvprivate
    ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)IRrecvprivate
    ~IRrecv(void)IRrecv
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv.html deleted file mode 100644 index 1bafa3eff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv.html +++ /dev/null @@ -1,8301 +0,0 @@ - - - - - - - -IRremoteESP8266: IRrecv Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for receiving IR messages. - More...

    - -

    #include <IRrecv.h>

    -
    -Collaboration diagram for IRrecv:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     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)
     Class constructor Args: More...
     
     IRrecv (const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)
     
     ~IRrecv (void)
     Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the various buffers, and disables any timers or interrupts used. More...
     
    void setTolerance (const uint8_t percent=kTolerance)
     Set the base tolerance percentage for matching incoming IR messages. More...
     
    uint8_t getTolerance (void)
     Get the base tolerance percentage for matching incoming IR messages. More...
     
    bool decode (decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)
     Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting for the next IR message to avoid missing messages. More...
     
    void enableIRIn (const bool pullup=false)
     Set up and (re)start the IR capture mechanism. More...
     
    void disableIRIn (void)
     Stop collection of any received IR data. Disable any timers and interrupts. More...
     
    void resume (void)
     Resume collection of received IR data. More...
     
    uint16_t getBufSize (void)
     Obtain the maximum number of entries possible in the capture buffer. i.e. It's size. More...
     
    void setUnknownThreshold (const uint16_t length)
     Set the minimum length we will consider for reporting UNKNOWN message types. More...
     
    bool match (const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
     Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed delta range. More...
     
    bool matchMark (const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
     Check if we match a mark signal(measured) with the desired within +/-tolerance percent, after an expected is excess is added. More...
     
    bool matchMarkRange (const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)
     Check if we match a mark signal(measured) with the desired within a range (in uSeconds) either side of the desired, after an expected is excess is added. More...
     
    bool matchSpace (const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
     Check if we match a space signal(measured) with the desired within +/-tolerance percent, after an expected is excess is removed. More...
     
    bool matchSpaceRange (const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)
     Check if we match a space signal(measured) with the desired within a range (in uSeconds) either side of the desired, after an expected is excess is removed. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Private Member Functions

    volatile irparams_t_getParamsPtr (void)
     Unit test helper to get access to the params structure. More...
     
    uint8_t _validTolerance (const uint8_t percentage)
     Convert the tolerance percentage into something valid. More...
     
    void copyIrParams (volatile irparams_t *src, irparams_t *dst)
     Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile, thus memcpy() isn't allowed. Only call this when you know the interrupt handlers won't modify anything. i.e. In kStopState. More...
     
    uint16_t compare (const uint16_t oldval, const uint16_t newval)
     Compare two tick values. More...
     
    uint32_t ticksLow (const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
     Calculate the lower bound of the nr. of ticks. More...
     
    uint32_t ticksHigh (const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
     Calculate the upper bound of the nr. of ticks. More...
     
    bool matchAtLeast (const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
     Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta margin. More...
     
    uint16_t _matchGeneric (volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
     Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_ptr depending on flag use_bits. More...
     
    match_result_t matchData (volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)
     Match & decode the typical data section of an IR message. The data value is stored in the least significant bits reguardless of the bit ordering requested. More...
     
    uint16_t matchBytes (volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)
     Match & decode the typical data section of an IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. More...
     
    uint16_t matchGeneric (volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
     Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr. More...
     
    uint16_t 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)
     Match & decode a generic/typical > 64bit IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on. More...
     
    uint16_t matchGenericConstBitTime (volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
     Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_ptr. More...
     
    uint16_t matchManchesterData (volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
     Match & decode a Manchester Code data (<= 64bits. More...
     
    uint16_t matchManchester (volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
     Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr. More...
     
    void crudeNoiseFilter (decode_results *results, const uint16_t floor=0)
     Remove or merge pulses in the capture buffer that are too short. More...
     
    bool decodeHash (decode_results *results)
     Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value. More...
     
    bool decodeVoltas (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVoltasBits, const bool strict=true)
     Decode the supplied Voltas message. Status: STABLE / Working on real device. More...
     
    bool decodeNEC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)
     Decode the supplied NEC (Renesas) message. Status: STABLE / Known good. More...
     
    bool decodeArgo (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)
     Decode the supplied Argo message. Status: BETA / Probably works. More...
     
    bool decodeSony (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)
     Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Untested. More...
     
    bool decodeSanyoLC7461 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, const bool strict=true)
     Decode the supplied SANYO LC7461 message. Status: BETA / Probably works. More...
     
    bool decodeSanyoAc (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAcBits, const bool strict=true)
     Decode the supplied SanyoAc message. Status: STABLE / Reported as working. More...
     
    bool decodeMitsubishi (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
     Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working. More...
     
    bool decodeMitsubishi2 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
     Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working. More...
     
    bool decodeMitsubishiAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)
     Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works. More...
     
    bool decodeMitsubishi136 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)
     Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as working. More...
     
    bool decodeMitsubishi112 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)
     Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Reported as working. More...
     
    bool decodeMitsubishiHeavy (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)
     Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working. Needs testing against a real device. More...
     
    int16_t getRClevel (decode_results *results, uint16_t *offset, uint16_t *used, uint16_t bitTime, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const uint16_t delta=0, const uint8_t maxwidth=3)
     Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is broken into time intervals. E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, successive calls to getRClevel will return MARK, MARK, SPACE. offset and used are updated to keep track of the current position. More...
     
    bool decodeRC5 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)
     Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha) More...
     
    bool decodeRC6 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)
     Decode the supplied RC6 message. Status: Stable. More...
     
    bool decodeRCMM (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)
     Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working. More...
     
    bool decodePanasonic (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)
     Decode the supplied Panasonic message. Status: STABLE / Should be working. More...
     
    bool decodeLG (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)
     Decode the supplied LG message. Status: STABLE / Working. More...
     
    bool decodeInax (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)
     Decode the supplied Inax Toilet message. Status: Stable / Known working. More...
     
    bool decodeJVC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)
     Decode the supplied JVC message. Status: Stable / Known working. More...
     
    bool decodeSAMSUNG (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)
     Decode the supplied Samsung 32-bit message. Status: STABLE. More...
     
    bool decodeSamsung36 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)
     Decode the supplied Samsung36 message. Status: STABLE / Expected to work. More...
     
    bool decodeSamsungAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)
     Decode the supplied Samsung A/C message. Status: Stable / Known to be working. More...
     
    bool decodeWhynter (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)
     Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA. More...
     
    bool decodeCOOLIX (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
     Decode the supplied Coolix A/C message. Status: STABLE / Known Working. More...
     
    bool decodeDenon (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)
     Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine. More...
     
    bool decodeDISH (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)
     Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed.) More...
     
    bool decodeSharp (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
     Decode the supplied Sharp message. Status: STABLE / Working fine. More...
     
    bool decodeSharpAc (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)
     Decode the supplied Sharp A/C message. Status: STABLE / Known working. More...
     
    bool decodeAiwaRCT501 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)
     Decode the supplied Aiwa RC T501 message. Status: BETA / Should work. More...
     
    bool decodeNikai (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)
     Decode the supplied Nikai message. Status: STABLE / Working. More...
     
    bool decodeMagiQuest (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)
     Decode the supplied MagiQuest message. Status: Beta / Should work. More...
     
    bool decodeKelvinator (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)
     Decode the supplied Kelvinator message. Status: STABLE / Known working. More...
     
    bool decodeDaikin (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)
     Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working. More...
     
    bool decodeDaikin64 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)
     Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working. More...
     
    bool decodeDaikin128 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)
     Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working. More...
     
    bool decodeDaikin152 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)
     Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working. More...
     
    bool decodeDaikin160 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)
     Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working. More...
     
    bool decodeDaikin176 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)
     Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work. More...
     
    bool decodeDaikin2 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)
     Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected. More...
     
    bool decodeDaikin216 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)
     Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working. More...
     
    bool decodeToshibaAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kToshibaACBits, const bool strict=true)
     Decode the supplied Toshiba A/C message. Status: STABLE / Working. More...
     
    bool decodeTrotec (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)
     Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices. More...
     
    bool decodeMidea (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)
     Decode the supplied Midea message. Status: Alpha / Needs testing against a real device. More...
     
    bool decodeMidea24 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)
     Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device. More...
     
    bool decodeFujitsuAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)
     Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working. More...
     
    bool decodeLasertag (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)
     Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time. More...
     
    bool decodeMilestag2 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMilesTag2ShotBits, const bool strict=true)
     Decode the supplied MilesTag2 message. Status: ALPHA / Probably works but needs testing with a real device. More...
     
    bool decodeCarrierAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)
     Decode the supplied Carrier HVAC message. More...
     
    bool decodeCarrierAC40 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)
     Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. Status: STABLE / Tested against a real device. More...
     
    bool decodeCarrierAC64 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)
     Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working. More...
     
    bool decodeGoodweather (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)
     Decode the supplied Goodweather message. Status: BETA / Probably works. More...
     
    bool decodeGree (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)
     Decode the supplied Gree HVAC message. Status: STABLE / Working. More...
     
    bool decodeHaierAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)
     Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working. More...
     
    bool decodeHaierACYRW02 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)
     Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working. More...
     
    bool decodeHaierAC176 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierAC176Bits, const bool strict=true)
     Decode the supplied Haier 176 bit remote A/C message. Status: STABLE / Known to be working. More...
     
    bool decodeHitachiAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)
     Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work. More...
     
    bool decodeHitachiAC1 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
     
    bool decodeHitachiAc3 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)
     Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine. More...
     
    bool decodeHitachiAc424 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)
     Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working. More...
     
    bool decodeGICable (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)
     Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device. More...
     
    bool decodeWhirlpoolAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)
     Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended. More...
     
    bool decodeLutron (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)
     Decode the supplied Lutron message. Status: STABLE / Working. More...
     
    bool decodeElectraAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)
     Decode the supplied Electra A/C message. Status: STABLE / Known working. More...
     
    bool decodePanasonicAC (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)
     Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s). More...
     
    bool decodePanasonicAC32 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAc32Bits, const bool strict=true)
     Decode the supplied Panasonic AC 32/16bit message. Status: STABLE / Confirmed working. More...
     
    bool decodePioneer (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)
     Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real examples) More...
     
    bool decodeMWM (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)
     Decode the supplied MWM message. Status: Implemented. More...
     
    bool decodeVestelAc (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)
     Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device. More...
     
    bool decodeTeco (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)
     Decode the supplied Teco message. Status: STABLE / Tested. More...
     
    bool decodeLegoPf (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)
     Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work. More...
     
    bool decodeNeoclima (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)
     Decode the supplied Neoclima message. Status: STABLE / Known working. More...
     
    bool decodeAmcor (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)
     Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working. More...
     
    bool decodeEpson (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)
     Decode the supplied Epson message. Status: Beta / Probably works. More...
     
    bool decodeSymphony (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)
     Decode the supplied Symphony packet/message. Status: STABLE / Should be working. More...
     
    bool decodeAirwell (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)
     Decode the supplied Airwell "Manchester code" message. More...
     
    bool decodeDelonghiAc (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDelonghiAcBits, const bool strict=true)
     Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working. More...
     
    bool decodeDoshisha (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)
     Decode the supplied Doshisha message. Status: STABLE / Works on real device. More...
     
    bool decodeMultibrackets (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)
     Decode the Multibrackets message. Status: BETA / Appears to be working. More...
     
    bool decodeTechnibelAc (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTechnibelAcBits, const bool strict=true)
     Status: STABLE / Reported as working on a real device. More...
     
    bool decodeCoronaAc (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)
     Decode the supplied CoronaAc message. Status: STABLE / Appears to be working. More...
     
    bool decodeZepeal (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)
     Decode the supplied Zepeal message. Status: STABLE / Works on real device. More...
     
    bool decodeMetz (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMetzBits, const bool strict=true)
     Decode the supplied Metz message. Status: BETA / Probably works. More...
     
    bool decodeTranscold (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTranscoldBits, const bool strict=true)
     Decode the supplied Transcold A/C message. Status: STABLE / Known Working. More...
     
    bool decodeMirage (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMirageBits, const bool strict=true)
     Decode the supplied Mirage message. Status: STABLE / Reported as working. More...
     
    bool decodeElitescreens (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEliteScreensBits, const bool strict=true)
     Decode the supplied Elite Screens message. Status: STABLE / Confirmed working. More...
     
    bool decodeEcoclim (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEcoclimBits, const bool strict=true)
     Decode the supplied EcoClim A/C message. Status: STABLE / Confirmed working on real remote. More...
     
    bool decodeXmp (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kXmpBits, const bool strict=true)
     Decode the supplied XMP packet/message. Status: BETA / Probably works. More...
     
    bool decodeTruma (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrumaBits, const bool strict=true)
     Decode the supplied Truma message. Status: STABLE / Confirmed working with real device. More...
     
    bool decodeTeknopoint (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTeknopointBits, const bool strict=true)
     Decode the supplied Teknopoint message. Status: Alpha / Probably works. More...
     
    bool decodeKelon (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelonBits, const bool strict=true)
     Decode the supplied Kelon message. Status: STABLE / Working. More...
     
    - - - - - - - - - -

    -Private Attributes

    irparams_tirparams_save
     
    uint8_t _tolerance
     
    uint8_t _timer_num
     
    uint16_t _unknown_threshold
     
    -

    Detailed Description

    -

    Class for receiving IR messages.

    -

    Constructor & Destructor Documentation

    - -

    ◆ IRrecv() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    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 
    )
    -
    -explicit
    -
    - -

    Class constructor Args:

    -
    Parameters
    - - - - - - -
    [in]recvpinThe GPIO pin the IR receiver module's data pin is connected to.
    [in]bufsizeNr. of entries to have in the capture buffer. (Default: kRawBuf)
    [in]timeoutNr. of milli-Seconds of no signal before we stop capturing data. (Default: kTimeoutMs)
    [in]save_bufferUse a second (save) buffer to decode from. (Default: false)
    [in]timer_numNr. of the ESP32 timer to use (0 to 3) (ESP32 Only)
    -
    -
    - -
    -
    - -

    ◆ IRrecv() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IRrecv::IRrecv (const uint16_t recvpin,
    const uint16_t bufsize = kRawBuf,
    const uint8_t timeout = kTimeoutMs,
    const bool save_buffer = false 
    )
    -
    -explicit
    -
    - -
    -
    - -

    ◆ ~IRrecv()

    - -
    -
    - - - - - - - - -
    IRrecv::~IRrecv (void )
    -
    - -

    Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the various buffers, and disables any timers or interrupts used.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ _getParamsPtr()

    - -
    -
    - - - - - -
    - - - - - - - - -
    volatile irparams_t * IRrecv::_getParamsPtr (void )
    -
    -private
    -
    - -

    Unit test helper to get access to the params structure.

    - -
    -
    - -

    ◆ _matchGeneric()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRrecv::_matchGeneric (volatile uint16_t * data_ptr,
    uint64_t * result_bits_ptr,
    uint8_t * result_bytes_ptr,
    const bool use_bits,
    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 
    )
    -
    -private
    -
    - -

    Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_ptr depending on flag use_bits.

    -
    Note
    Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
    -
    Parameters
    - - - - - - - - - - - - - - - - - - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    [out]result_bits_ptrA pointer to where to start storing the bits we decoded.
    [out]result_bytes_ptrA pointer to where to start storing the bytes we decoded.
    [in]use_bitsA flag indicating if we are to decode bits or bytes.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbitsNr. of data bits we expect.
    [in]hdrmarkNr. of uSeconds for the expected header mark signal.
    [in]hdrspaceNr. of uSeconds for the expected header space signal.
    [in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
    [in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
    [in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
    [in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
    [in]footermarkNr. of uSeconds for the expected footer mark signal.
    [in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
    [in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    - -
    -
    - -

    ◆ _validTolerance()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint8_t IRrecv::_validTolerance (const uint8_t percentage)
    -
    -private
    -
    - -

    Convert the tolerance percentage into something valid.

    -
    Parameters
    - - -
    [in]percentageAn integer percentage.
    -
    -
    - -
    -
    - -

    ◆ compare()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint16_t IRrecv::compare (const uint16_t oldval,
    const uint16_t newval 
    )
    -
    -private
    -
    - -

    Compare two tick values.

    -
    Parameters
    - - - -
    [in]oldvalNr. of ticks.
    [in]newvalNr. of ticks.
    -
    -
    -
    Returns
    0 if newval is shorter, 1 if it is equal, & 2 if it is longer.
    -
    Note
    Use a tolerance of 20%
    - -
    -
    - -

    ◆ copyIrParams()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void IRrecv::copyIrParams (volatile irparams_tsrc,
    irparams_tdst 
    )
    -
    -private
    -
    - -

    Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile, thus memcpy() isn't allowed. Only call this when you know the interrupt handlers won't modify anything. i.e. In kStopState.

    -
    Parameters
    - - - -
    [in]srcPointer to an irparams_t structure to copy from.
    [out]dstPointer to an irparams_t structure to copy to.
    -
    -
    - -
    -
    - -

    ◆ crudeNoiseFilter()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    void IRrecv::crudeNoiseFilter (decode_resultsresults,
    const uint16_t floor = 0 
    )
    -
    -private
    -
    - -

    Remove or merge pulses in the capture buffer that are too short.

    -
    Parameters
    - - - -
    [in,out]resultsPtr to the decode_results we are going to filter.
    [in]floorOnly allow values in the buffer large than this. (in microSeconds)
    -
    -
    - -
    -
    - -

    ◆ decode()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decode (decode_resultsresults,
    irparams_tsave = NULL,
    uint8_t max_skip = 0,
    uint16_t noise_floor = 0 
    )
    -
    - -

    Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting for the next IR message to avoid missing messages.

    -
    Note
    There is a trade-off here. Saving the state means less time lost until we can receiving the next message vs. using more RAM. Choose appropriately.
    -
    Parameters
    - - - - -
    [out]resultsA PTR to where the decoded IR message will be stored.
    [out]saveA PTR to an irparams_t instance in which to save the interrupt's memory/state. NULL means don't save it.
    [in]max_skipMaximum Nr. of pulses at the begining of a capture we can skip when attempting to find a protocol we can successfully decode. This parameter can dramatically improve detection of protocols when there is light IR interference just before an incoming IR message, however, it comes at a steep performace price. (Default is 0. No skipping.)
    -
    -
    -
    Warning
    Increasing the max_skip value will dramatically (linearly) increase the cpu time & usage to decode protocols. e.g. 0 -> 1 will be a 2x increase in cpu usage/time. 0 -> 2 will be a 3x increase etc. If you are going to do this, consider disabling protocol decoding for protocols you are not expecting.
    -
    Parameters
    - - -
    [in]noise_floorPulses below this size (in usecs) will be removed or merged prior to any decoding. This is to try to remove noise/poor readings & slightly increase the chances of a successful decode but at the cost of data fidelity & integrity. (Defaults to 0 usecs. i.e. Don't filter; which is safe!)
    -
    -
    -
    Warning
    DANGER: Here Be Dragons! If you set the noise_floor value too high, it WILL break decoding of some protocols. You have been warned! Any non-zero value has the potential to cook the captured raw data i.e. The raw data is going to lie to you. It may obscure hardware, circuit, & environment issues thus making it impossible to support you accurately or confidently. Values of <= 50 usecs will probably be safe. 51 - 100 usecs might be okay. 100 - 150 usecs is "Danger, Will Robinson!". 150 - 200 usecs expect broken protocols. At 200+ usecs, you have protocols you can't decode!!
    -
    Returns
    A boolean indicating if an IR message is ready or not.
    - -
    -
    - -

    ◆ decodeAirwell()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeAirwell (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kAirwellBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Airwell "Manchester code" message.

    -

    Status: BETA / Appears to be working.

    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
    - -
    -
    - -

    ◆ decodeAiwaRCT501()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeAiwaRCT501 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kAiwaRcT501Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Aiwa RC T501 message. Status: BETA / Should work.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    Note
    Aiwa RC T501 appears to be a 42 bit variant of the NEC1 protocol. However, we historically (original Arduino IRremote project) treats it as a 15 bit (data) protocol. So, we expect nbits to typically be 15, and we will remove the prefix and postfix from the raw data, and use that as the result.
    -
    See also
    http://www.sbprojects.net/knowledge/ir/nec.php
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
    - -
    -
    - -

    ◆ decodeAmcor()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeAmcor (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kAmcorBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeArgo()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeArgo (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kArgoBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Argo message. Status: BETA / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    Note
    This decoder is based soley off sendArgo(). We have no actual captures to test this against. If you have one of these units, please let us know.
    - -
    -
    - -

    ◆ decodeCarrierAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeCarrierAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kCarrierAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Carrier HVAC message.

    -
    Note
    Carrier HVAC messages contain only 32 bits, but it is sent three(3) times. i.e. normal + inverted + normal Status: BETA / Probably works.
    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeCarrierAC40()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeCarrierAC40 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kCarrierAc40Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits, but it is sent three(3) times. Status: STABLE / Tested against a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeCarrierAC64()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeCarrierAC64 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kCarrierAc64Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeCOOLIX()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeCOOLIX (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kCoolixBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Coolix A/C message. Status: STABLE / Known Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeCoronaAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeCoronaAc (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kCoronaAcBitsShort,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied CoronaAc message. Status: STABLE / Appears to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store it
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeDaikin()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikinBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote
    - -
    -
    - -

    ◆ decodeDaikin128()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin128 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin128Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/827
    - -
    -
    - -

    ◆ decodeDaikin152()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin152 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin152Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/873
    - -
    -
    - -

    ◆ decodeDaikin160()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin160 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin160Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/731
    - -
    -
    - -

    ◆ decodeDaikin176()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin176 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin176Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeDaikin2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin2 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin2Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeDaikin216()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin216 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin216Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/689
    -
    -https://github.com/danny-source/Arduino_DY_IRDaikin
    - -
    -
    - -

    ◆ decodeDaikin64()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDaikin64 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDaikin64Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1064
    - -
    -
    - -

    ◆ decodeDelonghiAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDelonghiAc (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDelonghiAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1096
    - -
    -
    - -

    ◆ decodeDenon()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDenon (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDenonBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Denon.cpp
    - -
    -
    - -

    ◆ decodeDISH()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDISH (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDishBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed.)

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    Note
    Dishplayer is a different protocol. Typically a DISH device needs to get a command a total of at least 4 times to accept it.
    -
    See also
    http://www.hifi-remote.com/wiki/index.php?title=Dish
    -
    -http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx
    -
    -https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Dish.cpp
    - -
    -
    - -

    ◆ decodeDoshisha()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeDoshisha (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kDoshishaBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Doshisha message. Status: STABLE / Works on real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeEcoclim()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeEcoclim (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kEcoclimBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied EcoClim A/C message. Status: STABLE / Confirmed working on real remote.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeElectraAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeElectraAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kElectraAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Electra A/C message. Status: STABLE / Known working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeElitescreens()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeElitescreens (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kEliteScreensBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Elite Screens message. Status: STABLE / Confirmed working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeEpson()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeEpson (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kEpsonBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Epson message. Status: Beta / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    Note
    Experimental data indicates there are at least three messages (first + 2 repeats). We only require the first + a single repeat to match. This helps us distinguish it from NEC messages which are near identical.
    - -
    -
    - -

    ◆ decodeFujitsuAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeFujitsuAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kFujitsuAcBits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeGICable()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeGICable (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kGicableBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeGoodweather()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeGoodweather (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kGoodweatherBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Goodweather message. Status: BETA / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeGree()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeGree (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kGreeBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Gree HVAC message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeHaierAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHaierAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHaierACBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeHaierAC176()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHaierAC176 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHaierAC176Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Haier 176 bit remote A/C message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeHaierACYRW02()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHaierACYRW02 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHaierACYRW02Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeHash()

    - -
    -
    - - - - - -
    - - - - - - - - -
    bool IRrecv::decodeHash (decode_resultsresults)
    -
    -private
    -
    - -

    Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encoding scheme (e.g. Sony, NEC, RC5), the code is hashed to a 32-bit value.

    -

    The algorithm: look at the sequence of MARK signals, and see if each one is shorter (0), the same length (1), or longer (2) than the previous. Do the same with the SPACE signals. Hash the resulting sequence of 0's, 1's, and 2's to a 32-bit value. This will give a unique value for each different code (probably), for most code systems.

    See also
    http://arcfn.com/2010/01/using-arbitrary-remotes-with-arduino.html
    -
    Note
    This isn't a "real" decoding, just an arbitrary value. Hopefully this code is unique for each button.
    - -
    -
    - -

    ◆ decodeHitachiAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHitachiAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHitachiAcBits,
    const bool strict = true,
    const bool MSBfirst = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.

    -
    Parameters
    - - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, kHitachiAc344Bits
    [in]strictFlag indicating if we should perform strict matching.
    [in]MSBfirstIs the data per byte stored in MSB First (true) or LSB First order(false)?
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/417
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/453
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/1134
    - -
    -
    - -

    ◆ decodeHitachiAC1()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHitachiAC1 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHitachiAc1Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -
    -
    - -

    ◆ decodeHitachiAc3()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHitachiAc3 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHitachiAc3Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    This protocol is almost exactly the same as HitachiAC424 except this variant has subtle timing differences and multiple lengths. There are five(5) typical lengths: kHitachiAc3MinStateLength (Cancel Timer), kHitachiAc3MinStateLength + 2 (Change Temp), kHitachiAc3StateLength - 6 (Change Mode), kHitachiAc3StateLength - 4 (Normal), & kHitachiAc3StateLength (Set Timer)
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1060
    - -
    -
    - -

    ◆ decodeHitachiAc424()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeHitachiAc424 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kHitachiAc424Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    This protocol is almost exactly the same as HitachiAC2 except this variant has a leader section as well, and subtle timing differences. It is also in LSBF order (per byte), rather than MSBF order.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/973
    -
    -(Japanese Manual) https://kadenfan.hitachi.co.jp/support/raj/item/docs/ras_aj22h_a_tori.pdf
    - -
    -
    - -

    ◆ decodeInax()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeInax (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kInaxBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Inax Toilet message. Status: Stable / Known working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/706
    - -
    -
    - -

    ◆ decodeJVC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeJVC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kJvcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied JVC message. Status: Stable / Known working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    JVC repeat codes don't have a header.
    -
    See also
    http://www.sbprojects.net/knowledge/ir/jvc.php
    - -
    -
    - -

    ◆ decodeKelon()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeKelon (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kKelonBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Kelon message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeKelvinator()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeKelvinator (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kKelvinatorBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Kelvinator message. Status: STABLE / Known working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeLasertag()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeLasertag (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kLasertagBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    This protocol is pretty much just raw Manchester encoding.
    -
    See also
    http://www.sbprojects.net/knowledge/ir/rc5.php
    -
    -https://en.wikipedia.org/wiki/RC-5
    -
    -https://en.wikipedia.org/wiki/Manchester_code
    -
    Todo:
    Convert to using matchManchester() if we can.
    - -
    -
    - -

    ◆ decodeLegoPf()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeLegoPf (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kLegoPfBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeLG()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeLG (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kLgBits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode the supplied LG message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically kLgBits or kLg32Bits.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    LG protocol has a repeat code which is 4 items long. Even though the protocol has 28/32 bits of data, only 24/28 bits are distinct. In transmission order, the 28/32 bits are constructed as follows: 8/12 bits of address + 16 bits of command + 4 bits of checksum.
    -
    -LG 32bit protocol appears near identical to the Samsung protocol. They possibly differ on how they repeat and initial HDR mark.
    -
    See also
    https://funembedded.wordpress.com/2014/11/08/ir-remote-control-for-lg-conditioner-using-stm32f302-mcu-on-mbed-platform/
    - -
    -
    - -

    ◆ decodeLutron()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeLutron (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kLutronBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Lutron message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeMagiQuest()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMagiQuest (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMagiquestBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied MagiQuest message. Status: Beta / Should work.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    MagiQuest protocol appears to be a header of 8 'zero' bits, followed by 32 bits of "wand ID" and finally 16 bits of "magnitude". Even though we describe this protocol as 56 bits, it really only has 48 bits of data that matter. In transmission order, 8 zeros + 32 wand_id + 16 magnitude.
    -
    See also
    https://github.com/kitlaan/Arduino-IRremote/blob/master/ir_Magiquest.cpp
    - -
    -
    - -

    ◆ decodeMetz()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMetz (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMetzBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Metz message. Status: BETA / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeMidea()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMidea (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMideaBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically kHitachiAcBits, kHitachiAc1Bits, kHitachiAc2Bits, kHitachiAc344Bits
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    - -
    -
    - -

    ◆ decodeMidea24()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMidea24 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMidea24Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    Note
    This protocol is basically a 48-bit version of the NEC protocol with alternate bytes inverted, thus only 24 bits of real data.
    -
    Warning
    Can't be used beyond 32 bits.
    - -
    -
    - -

    ◆ decodeMilestag2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMilestag2 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMilesTag2ShotBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied MilesTag2 message. Status: ALPHA / Probably works but needs testing with a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1360
    - -
    -
    - -

    ◆ decodeMirage()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMirage (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMirageBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Mirage message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeMitsubishi()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMitsubishi (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMitsubishiBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    This protocol appears to have no header.
    -
    See also
    GlobalCache's Control Tower's Mitsubishi TV data.
    - -
    -
    - -

    ◆ decodeMitsubishi112()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMitsubishi112 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMitsubishi112Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Note
    Note Mitsubishi112 & Tcl112Ac are basically the same protocol. The only significant difference I can see is Mitsubishi112 has a slightly longer header mark. We will use that to determine which variant it should be. The other differences require full decoding and only only with certain settings. There are some other timing differences too, but the tolerances will overlap.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/619
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/947
    - -
    -
    - -

    ◆ decodeMitsubishi136()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMitsubishi136 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMitsubishi136Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/888
    - -
    -
    - -

    ◆ decodeMitsubishi2()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMitsubishi2 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMitsubishiBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/441
    - -
    -
    - -

    ◆ decodeMitsubishiAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMitsubishiAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMitsubishiACBits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    See also
    https://www.analysir.com/blog/2015/01/06/reverse-engineering-mitsubishi-ac-infrared-protocol/
    - -
    -
    - -

    ◆ decodeMitsubishiHeavy()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMitsubishiHeavy (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMitsubishiHeavy152Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working. Needs testing against a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically kMitsubishiHeavy88Bits or kMitsubishiHeavy152Bits (def).
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeMultibrackets()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMultibrackets (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kMultibracketsBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the Multibrackets message. Status: BETA / Appears to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeMWM()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeMWM (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = 24,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied MWM message. Status: Implemented.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no parity
    - -
    -
    - -

    ◆ decodeNEC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeNEC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kNECBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied NEC (Renesas) message. Status: STABLE / Known good.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    NEC protocol has three variants/forms. Normal: an 8 bit address & an 8 bit command in 32 bit data form. i.e. address + inverted(address) + command + inverted(command) Extended: a 16 bit address & an 8 bit command in 32 bit data form. i.e. address + command + inverted(command) Repeat: a 0-bit code. i.e. No data bits. Just the header + footer.
    -
    See also
    http://www.sbprojects.net/knowledge/ir/nec.php
    - -
    -
    - -

    ◆ decodeNeoclima()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeNeoclima (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kNeoclimaBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Neoclima message. Status: STABLE / Known working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeNikai()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeNikai (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kNikaiBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Nikai message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    - -
    -
    - -

    ◆ decodePanasonic()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodePanasonic (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kPanasonicBits,
    const bool strict = false,
    const uint32_t manufacturer = kPanasonicManufacturer 
    )
    -
    -private
    -
    - -

    Decode the supplied Panasonic message. Status: STABLE / Should be working.

    -
    Parameters
    - - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]manufacturerA 16-bit manufacturer code. e.g. 0x4004 is Panasonic
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Warning
    Results to be used with sendPanasonic64(), not sendPanasonic().
    -
    Note
    Panasonic 48-bit protocol is a modified version of Kaseikyo.
    -
    See also
    http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615
    -
    -http://www.hifi-remote.com/wiki/index.php?title=Panasonic
    - -
    -
    - -

    ◆ decodePanasonicAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodePanasonicAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kPanasonicAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodePanasonicAC32()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodePanasonicAC32 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kPanasonicAc32Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Panasonic AC 32/16bit message. Status: STABLE / Confirmed working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically: kPanasonicAc32Bits or kPanasonicAc32Bits/2
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1307
    -
    Note
    Protocol has two known configurations: (long) Two sections of identical 32 bit data block pairs. ie. (32+32)+(32+32)=128 or (short) A single section of 3 x identical 32 bit data blocks i.e. (32+32+32)=96 Each data block also has a pair of 8 bits repeated identical bits. e.g. (8+8)+(8+8)=32
    -

    So each long version really only has 32 unique bits, and the short version really only has 16 unique bits.

    - -
    -
    - -

    ◆ decodePioneer()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodePioneer (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kPioneerBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real examples)

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeRC5()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeRC5 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kRC5XBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha)

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    The 'toggle' bit is included as the 6th (MSB) address bit, the MSB of data, & in the count of bits decoded.
    -
    Todo:
    Serious testing of the RC-5X and strict aspects needs to be done.
    - -
    -
    - -

    ◆ decodeRC6()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeRC6 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kRC6Mode0Bits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode the supplied RC6 message. Status: Stable.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Todo:
    Testing of the strict compliance aspects.
    - -
    -
    - -

    ◆ decodeRCMM()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeRCMM (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kRCMMBits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeSAMSUNG()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSAMSUNG (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSamsungBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Samsung 32-bit message. Status: STABLE.

    -
    Note
    Samsung messages whilst 32 bits in size, only contain 16 bits of distinct data. e.g. In transmition order: customer_byte + customer_byte(same) + address_byte + invert(address_byte)
    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    LG 32bit protocol appears near identical to the Samsung protocol. They differ on their compliance criteria and how they repeat.
    -
    See also
    http://elektrolab.wz.cz/katalog/samsung_protocol.pdf
    - -
    -
    - -

    ◆ decodeSamsung36()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSamsung36 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSamsung36Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Samsung36 message. Status: STABLE / Expected to work.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/621
    - -
    -
    - -

    ◆ decodeSamsungAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSamsungAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSamsungAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Samsung A/C message. Status: Stable / Known to be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/505
    - -
    -
    - -

    ◆ decodeSanyoAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSanyoAc (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSanyoAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied SanyoAc message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1211
    - -
    -
    - -

    ◆ decodeSanyoLC7461()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSanyoLC7461 (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSanyoLC7461Bits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    Based on @marcosamarinho's work. This protocol uses the NEC protocol. However, data is formatted as : address(13 bits), !address, command (8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon Information for this protocol is available at the Sanyo LC7461 datasheet.
    -
    See also
    http://slydiman.narod.ru/scr/kb/sanyo.htm
    -
    -https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
    -
    -http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
    - -
    -
    - -

    ◆ decodeSharp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSharp (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSharpBits,
    const bool strict = true,
    const bool expansion = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Sharp message. Status: STABLE / Working fine.

    -
    Parameters
    - - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    [in]expansionShould we expect the expansion bit to be set. Default is true.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    This procedure returns a value suitable for use in sendSharpRaw().
    -
    Todo:
    Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
    - -
    -
    - -

    ◆ decodeSharpAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSharpAc (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSharpAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Sharp A/C message. Status: STABLE / Known working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/638
    -
    -https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp
    - -
    -
    - -

    ◆ decodeSony()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSony (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSonyMinBits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Untested.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    Note
    SONY protocol, SIRC (Serial Infra-Red Control) can be 12, 15, or 20 bits long.
    - -
    -
    - -

    ◆ decodeSymphony()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeSymphony (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kSymphonyBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Symphony packet/message. Status: STABLE / Should be working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeTechnibelAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeTechnibelAc (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kTechnibelAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Status: STABLE / Reported as working on a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to data to decode & where to store the decode
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect (kTechnibelAcBits).
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeTeco()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeTeco (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kTecoBits,
    const bool strict = false 
    )
    -
    -private
    -
    - -

    Decode the supplied Teco message. Status: STABLE / Tested.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeTeknopoint()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeTeknopoint (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kTeknopointBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Teknopoint message. Status: Alpha / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeToshibaAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeToshibaAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kToshibaACBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Toshiba A/C message. Status: STABLE / Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeTranscold()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeTranscold (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kTranscoldBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Transcold A/C message. Status: STABLE / Known Working.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeTrotec()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeTrotec (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kTrotecBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeTruma()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeTruma (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kTrumaBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Truma message. Status: STABLE / Confirmed working with real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically kTrumaBits.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeVestelAc()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeVestelAc (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kVestelAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeVoltas()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeVoltas (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kVoltasBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Voltas message. Status: STABLE / Working on real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeWhirlpoolAC()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeWhirlpoolAC (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kWhirlpoolAcBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeWhynter()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeWhynter (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kWhynterBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    -
    See also
    https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp
    - -
    -
    - -

    ◆ decodeXmp()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeXmp (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kXmpBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied XMP packet/message. Status: BETA / Probably works.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the result
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ decodeZepeal()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::decodeZepeal (decode_resultsresults,
    uint16_t offset = kStartOffset,
    const uint16_t nbits = kZepealBits,
    const bool strict = true 
    )
    -
    -private
    -
    - -

    Decode the supplied Zepeal message. Status: STABLE / Works on real device.

    -
    Parameters
    - - - - - -
    [in,out]resultsPtr to the data to decode & where to store the decode result.
    [in]offsetThe starting index to use when attempting to decode the raw data. Typically/Defaults to kStartOffset.
    [in]nbitsThe number of data bits to expect. Typically kZepealBits.
    [in]strictFlag indicating if we should perform strict matching.
    -
    -
    -
    Returns
    A boolean. True if it can decode it, false if it can't.
    - -
    -
    - -

    ◆ disableIRIn()

    - -
    -
    - - - - - - - - -
    void IRrecv::disableIRIn (void )
    -
    - -

    Stop collection of any received IR data. Disable any timers and interrupts.

    - -
    -
    - -

    ◆ enableIRIn()

    - -
    -
    - - - - - - - - -
    void IRrecv::enableIRIn (const bool pullup = false)
    -
    - -

    Set up and (re)start the IR capture mechanism.

    -
    Parameters
    - - -
    [in]pullupA flag indicating should the GPIO use the internal pullup resistor. (Default: false. i.e. No.)
    -
    -
    - -
    -
    - -

    ◆ getBufSize()

    - -
    -
    - - - - - - - - -
    uint16_t IRrecv::getBufSize (void )
    -
    - -

    Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.

    -
    Returns
    The size of the buffer that is in use by the object.
    - -
    -
    - -

    ◆ getRClevel()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int16_t IRrecv::getRClevel (decode_resultsresults,
    uint16_t * offset,
    uint16_t * used,
    uint16_t bitTime,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess,
    const uint16_t delta = 0,
    const uint8_t maxwidth = 3 
    )
    -
    -private
    -
    - -

    Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is broken into time intervals. E.g. if the buffer has MARK for 2 time intervals and SPACE for 1, successive calls to getRClevel will return MARK, MARK, SPACE. offset and used are updated to keep track of the current position.

    -
    Parameters
    - - - - - - - - - -
    [in,out]resultsPtr to the data to decode and where to store the decode result.
    [in,out]offsetPtr to the currect offset to the rawbuf.
    [in,out]usedPtr to the current used counter.
    [in]bitTimeTime interval of single bit in microseconds.
    [in]tolerancePercent tolerance to be used in matching.
    [in]excessExtra useconds to add to Marks & removed from Spaces.
    [in]deltaA non-scaling (+/-) error margin (in useconds).
    [in]maxwidthMaximum number of successive levels to find in a single level (default is 3)
    -
    -
    -
    Returns
    MARK, SPACE, or -1 for error. (The measured time interval is not a multiple of t1.)
    -
    See also
    https://en.wikipedia.org/wiki/Manchester_code
    - -
    -
    - -

    ◆ getTolerance()

    - -
    -
    - - - - - - - - -
    uint8_t IRrecv::getTolerance (void )
    -
    - -

    Get the base tolerance percentage for matching incoming IR messages.

    -
    Returns
    A integer percentage.
    - -
    -
    - -

    ◆ match()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::match (const uint32_t measured,
    const uint32_t desired,
    const uint8_t tolerance = kUseDefTol,
    const uint16_t delta = 0 
    )
    -
    - -

    Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed delta range.

    -
    Parameters
    - - - - - -
    [in]measuredThe recorded period of the signal pulse.
    [in]desiredThe expected period (in usecs) we are matching against.
    [in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
    [in]deltaA non-scaling (+/-) error margin (in useconds).
    -
    -
    -
    Returns
    A Boolean. true if it matches, false if it doesn't.
    - -
    -
    - -

    ◆ matchAtLeast()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::matchAtLeast (const uint32_t measured,
    const uint32_t desired,
    const uint8_t tolerance = kUseDefTol,
    const uint16_t delta = 0 
    )
    -
    -private
    -
    - -

    Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta margin.

    -
    Parameters
    - - - - - -
    [in]measuredThe recorded period of the signal pulse.
    [in]desiredThe expected period (in usecs) we are matching against.
    [in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
    [in]deltaA non-scaling amount to reduce usecs by.
    -
    -
    -
    Returns
    A Boolean. true if it matches, false if it doesn't.
    - -
    -
    - -

    ◆ matchBytes()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRrecv::matchBytes (volatile uint16_t * data_ptr,
    uint8_t * result_ptr,
    const uint16_t remaining,
    const uint16_t nbytes,
    const uint16_t onemark,
    const uint32_t onespace,
    const uint16_t zeromark,
    const uint32_t zerospace,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess,
    const bool MSBfirst = true,
    const bool expectlastspace = true 
    )
    -
    -private
    -
    - -

    Match & decode the typical data section of an IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    [out]result_ptrA ptr to where to start storing the bytes we decoded.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbytesNr. of data bytes we expect.
    [in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
    [in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
    [in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
    [in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    [in]expectlastspaceDo we expect a space at the end of the message?
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    - -
    -
    - -

    ◆ matchData()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    match_result_t IRrecv::matchData (volatile uint16_t * data_ptr,
    const uint16_t nbits,
    const uint16_t onemark,
    const uint32_t onespace,
    const uint16_t zeromark,
    const uint32_t zerospace,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess,
    const bool MSBfirst = true,
    const bool expectlastspace = true 
    )
    -
    -private
    -
    - -

    Match & decode the typical data section of an IR message. The data value is stored in the least significant bits reguardless of the bit ordering requested.

    -
    Parameters
    - - - - - - - - - - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    [in]nbitsNr. of data bits we expect.
    [in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
    [in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
    [in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
    [in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    [in]expectlastspaceDo we expect a space at the end of the message?
    -
    -
    -
    Returns
    A match_result_t structure containing the success (or not), the data value, and how many buffer entries were used.
    - -
    -
    - -

    ◆ matchGeneric() [1/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t 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 
    )
    -
    -private
    -
    - -

    Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr.

    -
    Note
    Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
    -
    Parameters
    - - - - - - - - - - - - - - - - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    [out]result_ptrA ptr to where to start storing the bits we decoded.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbitsNr. of data bits we expect.
    [in]hdrmarkNr. of uSeconds for the expected header mark signal.
    [in]hdrspaceNr. of uSeconds for the expected header space signal.
    [in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
    [in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
    [in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
    [in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
    [in]footermarkNr. of uSeconds for the expected footer mark signal.
    [in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
    [in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    - -
    -
    - -

    ◆ matchGeneric() [2/2]

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t 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 
    )
    -
    -private
    -
    - -

    Match & decode a generic/typical > 64bit IR message. The bytes are stored at result_ptr. The first byte in the result equates to the first byte encountered, and so on.

    -
    Note
    Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
    -
    Parameters
    - - - - - - - - - - - - - - - - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    [out]result_ptrA ptr to where to start storing the bytes we decoded.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbitsNr. of data bits we expect.
    [in]hdrmarkNr. of uSeconds for the expected header mark signal.
    [in]hdrspaceNr. of uSeconds for the expected header space signal.
    [in]onemarkNr. of uSeconds in an expected mark signal for a '1' bit.
    [in]onespaceNr. of uSecs in an expected space signal for a '1' bit.
    [in]zeromarkNr. of uSecs in an expected mark signal for a '0' bit.
    [in]zerospaceNr. of uSecs in an expected space signal for a '0' bit.
    [in]footermarkNr. of uSeconds for the expected footer mark signal.
    [in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
    [in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    - -
    -
    - -

    ◆ matchGenericConstBitTime()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRrecv::matchGenericConstBitTime (volatile uint16_t * data_ptr,
    uint64_t * result_ptr,
    const uint16_t remaining,
    const uint16_t nbits,
    const uint16_t hdrmark,
    const uint32_t hdrspace,
    const uint16_t one,
    const uint32_t zero,
    const uint16_t footermark,
    const uint32_t footerspace,
    const bool atleast = false,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess,
    const bool MSBfirst = true 
    )
    -
    -private
    -
    - -

    Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_ptr.

    -
    Note
    Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
    -
    Parameters
    - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    -
    -
    -
    Note
    data_ptr is assumed to be pointing to a "Mark", not a "Space".
    -
    Parameters
    - - - - - - - - - - - - - - -
    [out]result_ptrA ptr to where to start storing the bits we decoded.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbitsNr. of data bits we expect.
    [in]hdrmarkNr. of uSeconds for the expected header mark signal.
    [in]hdrspaceNr. of uSeconds for the expected header space signal.
    [in]oneNr. of uSeconds in an expected mark signal for a '1' bit.
    [in]zeroNr. of uSeconds in an expected mark signal for a '0' bit.
    [in]footermarkNr. of uSeconds for the expected footer mark signal.
    [in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
    [in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    -
    Note
    Parameters one + zero add up to the total time for a bit. e.g. mark(one) + space(zero) is a 1, mark(zero) + space(one) is a 0.
    - -
    -
    - -

    ◆ matchManchester()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRrecv::matchManchester (volatile const uint16_t * data_ptr,
    uint64_t * result_ptr,
    const uint16_t remaining,
    const uint16_t nbits,
    const uint16_t hdrmark,
    const uint32_t hdrspace,
    const uint16_t half_period,
    const uint16_t footermark,
    const uint32_t footerspace,
    const bool atleast = false,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess,
    const bool MSBfirst = true,
    const bool GEThomas = true 
    )
    -
    -private
    -
    - -

    Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.

    -
    Note
    Values of 0 for hdrmark, hdrspace, footermark, or footerspace mean skip that requirement.
    -
    Parameters
    - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    -
    -
    -
    Note
    data_ptr is assumed to be pointing to a "Mark", not a "Space".
    -
    Parameters
    - - - - - - - - - - - - - - -
    [out]result_ptrA ptr to where to start storing the bits we decoded.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbitsNr. of data bits we expect.
    [in]hdrmarkNr. of uSeconds for the expected header mark signal.
    [in]hdrspaceNr. of uSeconds for the expected header space signal.
    [in]half_periodNr. of uSeconds for half the clock's period. i.e. 1/2 wavelength
    [in]footermarkNr. of uSeconds for the expected footer mark signal.
    [in]footerspaceNr. of uSeconds for the expected footer space/gap signal.
    [in]atleastIs the match on the footerspace a matchAtLeast or matchSpace?
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    [in]GEThomasUse G.E. Thomas (true) or IEEE 802.3 (false) convention?
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    -
    See also
    https://en.wikipedia.org/wiki/Manchester_code
    -
    -http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf
    - -
    -
    - -

    ◆ matchManchesterData()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRrecv::matchManchesterData (volatile const uint16_t * data_ptr,
    uint64_t * result_ptr,
    const uint16_t remaining,
    const uint16_t nbits,
    const uint16_t half_period,
    const uint16_t starting_balance = 0,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess,
    const bool MSBfirst = true,
    const bool GEThomas = true 
    )
    -
    -private
    -
    - -

    Match & decode a Manchester Code data (<= 64bits.

    -
    Parameters
    - - -
    [in]data_ptrA pointer to where we are at in the capture buffer.
    -
    -
    -
    Note
    data_ptr is assumed to be pointing to a "Mark", not a "Space".
    -
    Parameters
    - - - - - - - - - - -
    [out]result_ptrA ptr to where to start storing the bits we decoded.
    [in]remainingThe size of the capture buffer remaining.
    [in]nbitsNr. of data bits we expect.
    [in]half_periodNr. of uSeconds for half the clock's period. i.e. 1/2 wavelength
    [in]tolerancePercentage error margin to allow. (Default: kUseDefTol)
    [in]starting_balanceAmount of uSeconds to assume exists prior to the current value pointed too.
    [in]excessNr. of uSeconds. (Def: kMarkExcess)
    [in]MSBfirstBit order to save the data in. (Def: true) true is Most Significant Bit First Order, false is Least Significant First
    [in]GEThomasUse G.E. Thomas (true) or IEEE 802.3 (false) convention?
    -
    -
    -
    Returns
    If successful, how many buffer entries were used. Otherwise 0.
    -
    See also
    https://en.wikipedia.org/wiki/Manchester_code
    -
    -http://ww1.microchip.com/downloads/en/AppNotes/Atmel-9164-Manchester-Coding-Basics_Application-Note.pdf
    -
    Todo:
    Clean up and optimise this. It is just "get it working code" atm.
    - -
    -
    - -

    ◆ matchMark()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::matchMark (const uint32_t measured,
    const uint32_t desired,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess 
    )
    -
    - -

    Check if we match a mark signal(measured) with the desired within +/-tolerance percent, after an expected is excess is added.

    -
    Parameters
    - - - - - -
    [in]measuredThe recorded period of the signal pulse.
    [in]desiredThe expected period (in usecs) we are matching against.
    [in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
    [in]excessA non-scaling amount to reduce usecs by.
    -
    -
    -
    Returns
    A Boolean. true if it matches, false if it doesn't.
    - -
    -
    - -

    ◆ matchMarkRange()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::matchMarkRange (const uint32_t measured,
    const uint32_t desired,
    const uint16_t range = 100,
    const int16_t excess = kMarkExcess 
    )
    -
    - -

    Check if we match a mark signal(measured) with the desired within a range (in uSeconds) either side of the desired, after an expected is excess is added.

    -
    Parameters
    - - - - - -
    [in]measuredThe recorded period of the signal pulse.
    [in]desiredThe expected period (in usecs) we are matching against.
    [in]rangeThe range limit from desired to accept in uSeconds.
    [in]excessA non-scaling amount to reduce usecs by.
    -
    -
    -
    Returns
    A Boolean. true if it matches, false if it doesn't.
    - -
    -
    - -

    ◆ matchSpace()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::matchSpace (const uint32_t measured,
    const uint32_t desired,
    const uint8_t tolerance = kUseDefTol,
    const int16_t excess = kMarkExcess 
    )
    -
    - -

    Check if we match a space signal(measured) with the desired within +/-tolerance percent, after an expected is excess is removed.

    -
    Parameters
    - - - - - -
    [in]measuredThe recorded period of the signal pulse.
    [in]desiredThe expected period (in usecs) we are matching against.
    [in]toleranceA percentage expressed as an integer. e.g. 10 is 10%.
    [in]excessA non-scaling amount to reduce usecs by.
    -
    -
    -
    Returns
    A Boolean. true if it matches, false if it doesn't.
    - -
    -
    - -

    ◆ matchSpaceRange()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRrecv::matchSpaceRange (const uint32_t measured,
    const uint32_t desired,
    const uint16_t range = 100,
    const int16_t excess = kMarkExcess 
    )
    -
    - -

    Check if we match a space signal(measured) with the desired within a range (in uSeconds) either side of the desired, after an expected is excess is removed.

    -
    Parameters
    - - - - - -
    [in]measuredThe recorded period of the signal pulse.
    [in]desiredThe expected period (in usecs) we are matching against.
    [in]rangeThe range limit from desired to accept in uSeconds.
    [in]excessA non-scaling amount to reduce usecs by.
    -
    -
    -
    Returns
    A Boolean. true if it matches, false if it doesn't.
    - -
    -
    - -

    ◆ resume()

    - -
    -
    - - - - - - - - -
    void IRrecv::resume (void )
    -
    - -

    Resume collection of received IR data.

    -
    Note
    This is required if decode() is successful and save_buffer was not set when the class was instanciated.
    -
    See also
    IRrecv class constructor
    - -
    -
    - -

    ◆ setTolerance()

    - -
    -
    - - - - - - - - -
    void IRrecv::setTolerance (const uint8_t percent = kTolerance)
    -
    - -

    Set the base tolerance percentage for matching incoming IR messages.

    -
    Parameters
    - - -
    [in]percentAn integer percentage. (0-100)
    -
    -
    - -
    -
    - -

    ◆ setUnknownThreshold()

    - -
    -
    - - - - - - - - -
    void IRrecv::setUnknownThreshold (const uint16_t length)
    -
    - -

    Set the minimum length we will consider for reporting UNKNOWN message types.

    -
    Parameters
    - - -
    [in]lengthMin nr. of mark/space pulses required to be considered.
    -
    -
    - -
    -
    - -

    ◆ ticksHigh()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint32_t IRrecv::ticksHigh (const uint32_t usecs,
    const uint8_t tolerance = kUseDefTol,
    const uint16_t delta = 0 
    )
    -
    -private
    -
    - -

    Calculate the upper bound of the nr. of ticks.

    -
    Parameters
    - - - - -
    [in]usecsNr. of uSeconds.
    [in]tolerancePercent as an integer. e.g. 10 is 10%
    [in]deltaA non-scaling amount to increase usecs by.
    -
    -
    -
    Returns
    Nr. of ticks.
    - -
    -
    - -

    ◆ ticksLow()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint32_t IRrecv::ticksLow (const uint32_t usecs,
    const uint8_t tolerance = kUseDefTol,
    const uint16_t delta = 0 
    )
    -
    -private
    -
    - -

    Calculate the lower bound of the nr. of ticks.

    -
    Parameters
    - - - - -
    [in]usecsNr. of uSeconds.
    [in]tolerancePercent as an integer. e.g. 10 is 10%
    [in]deltaA non-scaling amount to reduce usecs by.
    -
    -
    -
    Returns
    Nr. of ticks.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _timer_num

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRrecv::_timer_num
    -
    -private
    -
    - -
    -
    - -

    ◆ _tolerance

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRrecv::_tolerance
    -
    -private
    -
    - -
    -
    - -

    ◆ _unknown_threshold

    - -
    -
    - - - - - -
    - - - - -
    uint16_t IRrecv::_unknown_threshold
    -
    -private
    -
    - -
    -
    - -

    ◆ irparams_save

    - -
    -
    - - - - - -
    - - - - -
    irparams_t* IRrecv::irparams_save
    -
    -private
    -
    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.map deleted file mode 100644 index afb28be42..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.md5 deleted file mode 100644 index 03ea8f4ee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -86a4a18f846668b6a3cf862d7669306a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRrecv__coll__graph.png deleted file mode 100644 index 69ea6e16f851a9224320aa46dad26e7c44cc5948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3293 zcmY*c2UJsA77Zd*S_0An0SBZgAWdozX#yWUCKLrEfJhSw7`h-`z91lN6!}0fq9#Z$ zp(T_EQUs(#>AfkvL|Q1$V`l!8_11fLz58xi=be4_-ZueZVa&-c%nky9I899qErAvb z+>xxzz!R1m<^VLzE@sAtpkJrg>jr!V2*i_E*gHo>30$Y}doTH)Y!2JiRe3E@_trKtQip58v3q-JPE%%6T@s3If~*)N zp^Y=~9&e_>3Nj&2&auO0Tv}UrFI~P|9=LJ~MhvNH2;19MpuD3OZwW)8<-SwbfX=t? z-%F(&H69jkt<$Q0MU#I7XuZYbX$mb1o?u@q75AdURX zvlnt8WGeoqgo+AP2$eASwZN*}|GUMcTRbz`i%p=Vq98dTLC?oW!M*!cG&29j3~8g$ zz}%c;umqLZ+G;4n$KLws(+n_cP)$}=mgg*kaux>?iR|d=YKgt=&G{8CfxcB_8x0KY zSnz}Ijr(i(FLG3SkHln8ohZ(?C47>p9sc{}y}@7ZnDzEeKoqN1Wb`uh6A1y=Z1Bi_{( zP@PcKLIT0L#%IFi;NZX`t~DT~tel>!9sE2n zFt9u+i9^lntIW$6FFyH9k~_V;ylhQOSgA_^NlI-e`*YljYim6b2MYr3s={_|ZWr&= z`MookqWoRfYIw*g^4MewdM{-!+>BC&_R5sAi+S?oY{;WWc6fP5vY?84ca%P^dHGu* zn4kZTfdR|xAV){X_~hhI1MkeX=2CP=*Qk!!Ze1_$e*U{`YS+Rm-Nuw!x<`_cW3J6dgBR>h43k-TnM2nY$?_rLK3u4zB_pVHO0q^RtT{=#L}KGow^2++#Cyb|IUekSyJN_5^b z^Tuy5QvgjHkXk|25Es&rik3LrISF;=h25qW*Sao}h|AMv$!%>)|F=Mb_Goky8urx0 zMts9BUNn8UT}4Q4pJpfxVjwQ4Kgu)^5l@)DdNj_Kn84t?PisYwudUCaAms)SN}*04 zSI0W4uw9O0M>p87Bz{C;hiB8n3AXzp( z&v3CiUT+$ECiw8Ui8h!$6=4cF zoex`{yf!^y{qyHgzD%fA_YcB~o@dUQPFc8=sRQE$&Gb4gqsX_6zwE4@7SS+dvkP22 zYwusiLz(`M44Ht}3t4$qK%`YeyW-xXGL!FkSWKis3>`eJ%xYf)6f7wQ7oP6b>Awb> z(cgXmpTz&Ud7NqT=IOJ6x5= zYcY(glY>-x=AVCRx&96lB1fA9Mm6C^H7)VxQY}XZG^DL<{6^C+*f{}(sz$u^rL8uo zuQMfviBM1wO>u4>sr110d-jcuX}hA{kViZ;#>J*f>+6N*+EZ${HU$7e6fG*v&u7G7 zFeYYZ(Cv{=++09npke9h=?EJeCZc`v;-Wj8)~&+Dxv6fgUFWclIE{0-79$~b6PqO9 z^tgYq!MEv{AFAdZWnX;b&K)Q=^5oI{{CxA!P;f`RB#m)9V|vwsuKxffbeC@x*`V^mkX?HrCW7mO?$dQNq zhH`wYBrp6PiLJ+@J|t65L^5j{jKTfaFT}(c{|meRc6>TwHywb%e^aO`xcHX``2S^L zs1#`hi(}E!iV8?_a`Knu^|V(Cop*=DVxqof)^&@4AP@)-4E61V$`=3Yv z7s9mXA@1SfVNhW0(wTm7aLA(<%LLk|)Bh$X$6;U0uj27#-cAamT;nj;urqjvKp-@q z93O7cS4!sq!CY4t0fE(PI3~k^%IWh|1^hv1!=#puiVClG&}uWl#wkGF=KxJm6iyzl zMneav)U@>U7@$O|h(xl@S5;kqXNe;c zzqxfS-yhcsX=rGWk(ZAXXMLrCdD9cNu&~ha`LjNNSL;jX)qKX|0en2BFX8)^0uYy8 z*w*;u241gCxkhIt5{VtXz3o_?Fh$I)p|y?8-No)KPfyS0g|5h4FKs|4U0hsvAduOC zg&oQ9y)9--OUsz_bO@+99xRcXnK`r}Lb#DnneWVC01cHowRdJnpL)F{Ar)p&S;&^l zDYKN6aQW4VG@Z~d10|YVR;CEryCF~ZrT<(y6*ItJPy}0MTArq5Wi353+OhSiYa=zK z+y+7g49a6#kNWYAGBz%*>J!qtcT6BfAg_|r(h{1QLYH2!GsiL%7Z-b?(Q!bb0l$(Z zC(pjPtv}!Ru39$I#wKok-A7VNifif&WY1x4LO@V3-lp)@Om6Tbg%Znx9<=0sF3Jyq zoYCU}z@U2_hxobjeU$hBaC^0(J0Aj*_g)J)hA>>ac8yR})Cz=#vn*JBZf<~0x>K?R zlg#W&!(yMKNI{%htf+?%72n^?dwz8ESoP{vTuqHYrUL3?ec+0-au$z>NK&R_C|kA~ zTHnBcaecflwxU9LrOz}*e404qXkco}W|5;24WNPK2i8d+W8nr33=9Btkhs0Qt*4uj zk-_-RGGTSqn|!dCEh8t_T4Yx_y|%^)0z8G0wKZQwWhL&L7t+e=o(laZ@C|`NCHM6q z;D@V~Esf^bF9iZIjmNuVwGqel?T-954h~6m{@=G1jQ9-8+av}I{_DE`x8hDsIJNg1 zOgAEDUFl+w=^~haJqmVrMkAD2c_wCe>z_9Lbb`{EX2(e*o?e=6tnuSMVQOzQa9#nK M8d(^Y=sU;!1BWM6qW}N^ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend-members.html deleted file mode 100644 index b6ca5b9fe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend-members.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRsend Member List
    -
    -
    - -

    This is the complete list of members for IRsend, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _delayMicroseconds(uint32_t usec)IRsend
    _dutycycleIRsendprivate
    _freq_unittestIRsendprivate
    _sendSony(const uint64_t data, const uint16_t nbits, const uint16_t repeat, const uint16_t freq)IRsendprivate
    begin()IRsend
    calcUSecPeriod(uint32_t hz, bool use_offset=true)IRsendprivate
    calibrate(uint16_t hz=38000U)IRsend
    defaultBits(const decode_type_t protocol)IRsendstatic
    enableIROut(uint32_t freq, uint8_t duty=kDutyDefault)IRsend
    encodeDoshisha(const uint8_t command, const uint8_t channel=0)IRsend
    encodeJVC(uint8_t address, uint8_t command)IRsend
    encodeLG(uint16_t address, uint16_t command)IRsend
    encodeMagiQuest(const uint32_t wand_id, const uint16_t magnitude)IRsend
    encodeMetz(const uint8_t address, const uint8_t command, const bool toggle=false)IRsendstatic
    encodeNEC(uint16_t address, uint16_t command)IRsend
    encodePanasonic(const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, const uint8_t function)IRsend
    encodePioneer(uint16_t address, uint16_t command)IRsend
    encodeRC5(const uint8_t address, const uint8_t command, const bool key_released=false)IRsend
    encodeRC5X(const uint8_t address, const uint8_t command, const bool key_released=false)IRsend
    encodeRC6(const uint32_t address, const uint8_t command, const uint16_t mode=kRC6Mode0Bits)IRsend
    encodeSAMSUNG(const uint8_t customer, const uint8_t command)IRsend
    encodeSanyoLC7461(uint16_t address, uint8_t command)IRsend
    encodeSharp(const uint16_t address, const uint16_t command, const uint16_t expansion=1, const uint16_t check=0, const bool MSBfirst=false)IRsend
    encodeSony(const uint16_t nbits, const uint16_t command, const uint16_t address, const uint16_t extended=0)IRsend
    IRpinIRsendprivate
    IRsend(uint16_t IRsendPin, bool inverted=false, bool use_modulation=true)IRsendexplicit
    ledOff()IRsendprotected
    ledOn()IRsendprotected
    mark(uint16_t usec)IRsend
    minRepeats(const decode_type_t protocol)IRsendstatic
    modulationIRsendprivate
    offTimePeriodIRsendprivate
    onTimePeriodIRsendprivate
    outputOffIRsendprotected
    outputOnIRsendprotected
    periodOffsetIRsendprivate
    send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)IRsend
    send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes)IRsend
    sendAirwell(uint64_t data, uint16_t nbits=kAirwellBits, uint16_t repeat=kAirwellMinRepeats)IRsend
    sendAiwaRCT501(uint64_t data, uint16_t nbits=kAiwaRcT501Bits, uint16_t repeat=kAiwaRcT501MinRepeats)IRsend
    sendAmcor(const unsigned char data[], const uint16_t nbytes=kAmcorStateLength, const uint16_t repeat=kAmcorDefaultRepeat)IRsend
    sendArgo(const unsigned char data[], const uint16_t nbytes=kArgoStateLength, const uint16_t repeat=kArgoDefaultRepeat)IRsend
    sendCarrierAC(uint64_t data, uint16_t nbits=kCarrierAcBits, uint16_t repeat=kCarrierAcMinRepeat)IRsend
    sendCarrierAC40(uint64_t data, uint16_t nbits=kCarrierAc40Bits, uint16_t repeat=kCarrierAc40MinRepeat)IRsend
    sendCarrierAC64(uint64_t data, uint16_t nbits=kCarrierAc64Bits, uint16_t repeat=kCarrierAc64MinRepeat)IRsend
    sendCOOLIX(uint64_t data, uint16_t nbits=kCoolixBits, uint16_t repeat=kCoolixDefaultRepeat)IRsend
    sendCoronaAc(const uint8_t data[], const uint16_t nbytes=kCoronaAcStateLength, const uint16_t repeat=kNoRepeat)IRsend
    sendDaikin(const unsigned char data[], const uint16_t nbytes=kDaikinStateLength, const uint16_t repeat=kDaikinDefaultRepeat)IRsend
    sendDaikin128(const unsigned char data[], const uint16_t nbytes=kDaikin128StateLength, const uint16_t repeat=kDaikin128DefaultRepeat)IRsend
    sendDaikin152(const unsigned char data[], const uint16_t nbytes=kDaikin152StateLength, const uint16_t repeat=kDaikin152DefaultRepeat)IRsend
    sendDaikin160(const unsigned char data[], const uint16_t nbytes=kDaikin160StateLength, const uint16_t repeat=kDaikin160DefaultRepeat)IRsend
    sendDaikin176(const unsigned char data[], const uint16_t nbytes=kDaikin176StateLength, const uint16_t repeat=kDaikin176DefaultRepeat)IRsend
    sendDaikin2(const unsigned char data[], const uint16_t nbytes=kDaikin2StateLength, const uint16_t repeat=kDaikin2DefaultRepeat)IRsend
    sendDaikin216(const unsigned char data[], const uint16_t nbytes=kDaikin216StateLength, const uint16_t repeat=kDaikin216DefaultRepeat)IRsend
    sendDaikin64(const uint64_t data, const uint16_t nbits=kDaikin64Bits, const uint16_t repeat=kDaikin64DefaultRepeat)IRsend
    sendData(uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst=true)IRsend
    sendDelonghiAc(uint64_t data, uint16_t nbits=kDelonghiAcBits, uint16_t repeat=kDelonghiAcDefaultRepeat)IRsend
    sendDenon(uint64_t data, uint16_t nbits=kDenonBits, uint16_t repeat=kNoRepeat)IRsend
    sendDISH(uint64_t data, uint16_t nbits=kDishBits, uint16_t repeat=kDishMinRepeat)IRsend
    sendDoshisha(const uint64_t data, uint16_t nbits=kDoshishaBits, const uint16_t repeat=kNoRepeat)IRsend
    sendEcoclim(const uint64_t data, const uint16_t nbits=kEcoclimBits, const uint16_t repeat=kNoRepeat)IRsend
    sendElectraAC(const unsigned char data[], const uint16_t nbytes=kElectraAcStateLength, const uint16_t repeat=kNoRepeat)IRsend
    sendElitescreens(const uint64_t data, const uint16_t nbits=kEliteScreensBits, const uint16_t repeat=kEliteScreensDefaultRepeat)IRsend
    sendEpson(uint64_t data, uint16_t nbits=kEpsonBits, uint16_t repeat=kEpsonMinRepeat)IRsend
    sendFujitsuAC(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kFujitsuAcMinRepeat)IRsend
    sendGC(uint16_t buf[], uint16_t len)IRsend
    sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)IRsend
    sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)IRsend
    sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)IRsend
    sendGICable(uint64_t data, uint16_t nbits=kGicableBits, uint16_t repeat=kGicableMinRepeat)IRsend
    sendGoodweather(const uint64_t data, const uint16_t nbits=kGoodweatherBits, const uint16_t repeat=kGoodweatherMinRepeat)IRsend
    sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)IRsend
    sendGree(const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)IRsend
    sendHaierAC(const unsigned char data[], const uint16_t nbytes=kHaierACStateLength, const uint16_t repeat=kHaierAcDefaultRepeat)IRsend
    sendHaierAC176(const unsigned char data[], const uint16_t nbytes=kHaierAC176StateLength, const uint16_t repeat=kHaierAc176DefaultRepeat)IRsend
    sendHaierACYRW02(const unsigned char data[], const uint16_t nbytes=kHaierACYRW02StateLength, const uint16_t repeat=kHaierAcYrw02DefaultRepeat)IRsend
    sendHitachiAC(const unsigned char data[], const uint16_t nbytes=kHitachiAcStateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
    sendHitachiAC1(const unsigned char data[], const uint16_t nbytes=kHitachiAc1StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
    sendHitachiAC2(const unsigned char data[], const uint16_t nbytes=kHitachiAc2StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
    sendHitachiAc3(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
    sendHitachiAc344(const unsigned char data[], const uint16_t nbytes=kHitachiAc344StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
    sendHitachiAc424(const unsigned char data[], const uint16_t nbytes=kHitachiAc424StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)IRsend
    sendInax(const uint64_t data, const uint16_t nbits=kInaxBits, const uint16_t repeat=kInaxMinRepeat)IRsend
    sendJVC(uint64_t data, uint16_t nbits=kJvcBits, uint16_t repeat=kNoRepeat)IRsend
    sendKelon(const uint64_t data, const uint16_t nbits=kKelonBits, const uint16_t repeat=kNoRepeat)IRsend
    sendKelvinator(const unsigned char data[], const uint16_t nbytes=kKelvinatorStateLength, const uint16_t repeat=kKelvinatorDefaultRepeat)IRsend
    sendLasertag(uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)IRsend
    sendLegoPf(const uint64_t data, const uint16_t nbits=kLegoPfBits, const uint16_t repeat=kLegoPfMinRepeat)IRsend
    sendLG(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)IRsend
    sendLG2(uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)IRsend
    sendLutron(uint64_t data, uint16_t nbits=kLutronBits, uint16_t repeat=kNoRepeat)IRsend
    sendMagiQuest(const uint64_t data, const uint16_t nbits=kMagiquestBits, const uint16_t repeat=kNoRepeat)IRsend
    sendManchester(const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency=38, const bool MSBfirst=true, const uint16_t repeat=kNoRepeat, const uint8_t dutycycle=kDutyDefault, const bool GEThomas=true)IRsend
    sendManchesterData(const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst=true, const bool GEThomas=true)IRsend
    sendMetz(const uint64_t data, const uint16_t nbits=kMetzBits, const uint16_t repeat=kMetzMinRepeat)IRsend
    sendMidea(uint64_t data, uint16_t nbits=kMideaBits, uint16_t repeat=kMideaMinRepeat)IRsend
    sendMidea24(const uint64_t data, const uint16_t nbits=kMidea24Bits, const uint16_t repeat=kMidea24MinRepeat)IRsend
    sendMilestag2(const uint64_t data, const uint16_t nbits=kMilesTag2ShotBits, const uint16_t repeat=kMilesMinRepeat)IRsend
    sendMirage(const unsigned char data[], const uint16_t nbytes=kMirageStateLength, const uint16_t repeat=kMirageMinRepeat)IRsend
    sendMitsubishi(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)IRsend
    sendMitsubishi112(const unsigned char data[], const uint16_t nbytes=kMitsubishi112StateLength, const uint16_t repeat=kMitsubishi112MinRepeat)IRsend
    sendMitsubishi136(const unsigned char data[], const uint16_t nbytes=kMitsubishi136StateLength, const uint16_t repeat=kMitsubishi136MinRepeat)IRsend
    sendMitsubishi2(uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)IRsend
    sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes=kMitsubishiACStateLength, const uint16_t repeat=kMitsubishiACMinRepeat)IRsend
    sendMitsubishiHeavy152(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy152StateLength, const uint16_t repeat=kMitsubishiHeavy152MinRepeat)IRsend
    sendMitsubishiHeavy88(const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy88StateLength, const uint16_t repeat=kMitsubishiHeavy88MinRepeat)IRsend
    sendMultibrackets(const uint64_t data, const uint16_t nbits=kMultibracketsBits, const uint16_t repeat=kMultibracketsDefaultRepeat)IRsend
    sendMWM(const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kNoRepeat)IRsend
    sendNEC(uint64_t data, uint16_t nbits=kNECBits, uint16_t repeat=kNoRepeat)IRsend
    sendNeoclima(const unsigned char data[], const uint16_t nbytes=kNeoclimaStateLength, const uint16_t repeat=kNeoclimaMinRepeat)IRsend
    sendNikai(uint64_t data, uint16_t nbits=kNikaiBits, uint16_t repeat=kNoRepeat)IRsend
    sendPanasonic(const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)IRsend
    sendPanasonic64(const uint64_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)IRsend
    sendPanasonicAC(const unsigned char data[], const uint16_t nbytes=kPanasonicAcStateLength, const uint16_t repeat=kPanasonicAcDefaultRepeat)IRsend
    sendPanasonicAC32(const uint64_t data, const uint16_t nbits=kPanasonicAc32Bits, const uint16_t repeat=kPanasonicAcDefaultRepeat)IRsend
    sendPioneer(const uint64_t data, const uint16_t nbits=kPioneerBits, const uint16_t repeat=kNoRepeat)IRsend
    sendPronto(uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)IRsend
    sendRaw(const uint16_t buf[], const uint16_t len, const uint16_t hz)IRsend
    sendRC5(const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)IRsend
    sendRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits, const uint16_t repeat=kNoRepeat)IRsend
    sendRCMM(uint64_t data, uint16_t nbits=kRCMMBits, uint16_t repeat=kNoRepeat)IRsend
    sendSAMSUNG(const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)IRsend
    sendSamsung36(const uint64_t data, const uint16_t nbits=kSamsung36Bits, const uint16_t repeat=kNoRepeat)IRsend
    sendSamsungAC(const unsigned char data[], const uint16_t nbytes=kSamsungAcStateLength, const uint16_t repeat=kSamsungAcDefaultRepeat)IRsend
    sendSanyoAc(const uint8_t *data, const uint16_t nbytes=kSanyoAcStateLength, const uint16_t repeat=kNoRepeat)IRsend
    sendSanyoLC7461(const uint64_t data, const uint16_t nbits=kSanyoLC7461Bits, const uint16_t repeat=kNoRepeat)IRsend
    sendSharp(const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)IRsend
    sendSharpAc(const unsigned char data[], const uint16_t nbytes=kSharpAcStateLength, const uint16_t repeat=kSharpAcDefaultRepeat)IRsend
    sendSharpRaw(const uint64_t data, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)IRsend
    sendSherwood(uint64_t data, uint16_t nbits=kSherwoodBits, uint16_t repeat=kSherwoodMinRepeat)IRsend
    sendSony(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat)IRsend
    sendSony38(const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat+1)IRsend
    sendSymphony(uint64_t data, uint16_t nbits=kSymphonyBits, uint16_t repeat=kSymphonyDefaultRepeat)IRsend
    sendTcl112Ac(const unsigned char data[], const uint16_t nbytes=kTcl112AcStateLength, const uint16_t repeat=kTcl112AcDefaultRepeat)IRsend
    sendTechnibelAc(uint64_t data, uint16_t nbits=kTechnibelAcBits, uint16_t repeat=kTechnibelAcDefaultRepeat)IRsend
    sendTeco(const uint64_t data, const uint16_t nbits=kTecoBits, const uint16_t repeat=kNoRepeat)IRsend
    sendTeknopoint(const unsigned char data[], const uint16_t nbytes=kTeknopointStateLength, const uint16_t repeat=kNoRepeat)IRsend
    sendToshibaAC(const uint8_t data[], const uint16_t nbytes=kToshibaACStateLength, const uint16_t repeat=kToshibaACMinRepeat)IRsend
    sendTranscold(const uint64_t data, const uint16_t nbits=kTranscoldBits, const uint16_t repeat=kTranscoldDefaultRepeat)IRsend
    sendTrotec(const unsigned char data[], const uint16_t nbytes=kTrotecStateLength, const uint16_t repeat=kTrotecDefaultRepeat)IRsend
    sendTruma(const uint64_t data, const uint16_t nbits=kTrumaBits, const uint16_t repeat=kNoRepeat)IRsend
    sendVestelAc(const uint64_t data, const uint16_t nbits=kVestelAcBits, const uint16_t repeat=kNoRepeat)IRsend
    sendVoltas(const unsigned char data[], const uint16_t nbytes=kVoltasStateLength, const uint16_t repeat=kNoRepeat)IRsend
    sendWhirlpoolAC(const unsigned char data[], const uint16_t nbytes=kWhirlpoolAcStateLength, const uint16_t repeat=kWhirlpoolAcDefaultRepeat)IRsend
    sendWhynter(const uint64_t data, const uint16_t nbits=kWhynterBits, const uint16_t repeat=kNoRepeat)IRsend
    sendXmp(const uint64_t data, const uint16_t nbits=kXmpBits, const uint16_t repeat=kNoRepeat)IRsend
    sendZepeal(const uint64_t data, const uint16_t nbits=kZepealBits, const uint16_t repeat=kZepealMinRepeat)IRsend
    space(uint32_t usec)IRsend
    toggleRC5(const uint64_t data)IRsend
    toggleRC6(const uint64_t data, const uint16_t nbits=kRC6Mode0Bits)IRsend
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend.html deleted file mode 100644 index 5e63324ab..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRsend.html +++ /dev/null @@ -1,7377 +0,0 @@ - - - - - - - -IRremoteESP8266: IRsend Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    Class for sending all basic IR protocols. - More...

    - -

    #include <IRsend.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Member Functions

     IRsend (uint16_t IRsendPin, bool inverted=false, bool use_modulation=true)
     Constructor for an IRsend object. More...
     
    void begin ()
     Enable the pin for output. More...
     
    void enableIROut (uint32_t freq, uint8_t duty=kDutyDefault)
     Set the output frequency modulation and duty cycle. More...
     
    VIRTUAL void _delayMicroseconds (uint32_t usec)
     An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds(). More...
     
    VIRTUAL uint16_t mark (uint16_t usec)
     Modulate the IR LED for the given period (usec) and at the duty cycle set. More...
     
    VIRTUAL void space (uint32_t usec)
     Turn the pin (LED) off for a given time. Sends an IR space for the specified number of microseconds. A space is no output, so the PWM output is disabled. More...
     
    int8_t calibrate (uint16_t hz=38000U)
     Calculate & set any offsets to account for execution times during sending. More...
     
    void sendRaw (const uint16_t buf[], const uint16_t len, const uint16_t hz)
     Send a raw IRremote message. More...
     
    void sendData (uint16_t onemark, uint32_t onespace, uint16_t zeromark, uint32_t zerospace, uint64_t data, uint16_t nbits, bool MSBfirst=true)
     Generic method for sending data that is common to most protocols. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
     
    void sendManchesterData (const uint16_t half_period, const uint64_t data, const uint16_t nbits, const bool MSBfirst=true, const bool GEThomas=true)
     Generic method for sending Manchester code data. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
     
    void sendManchester (const uint16_t headermark, const uint32_t headerspace, const uint16_t half_period, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency=38, const bool MSBfirst=true, const uint16_t repeat=kNoRepeat, const uint8_t dutycycle=kDutyDefault, const bool GEThomas=true)
     Generic method for sending Manchester code messages. Will send leading or trailing 0's if the nbits is larger than the number. More...
     
    void sendGeneric (const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
     Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
     
    void sendGeneric (const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
     Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data. More...
     
    void sendGeneric (const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)
     Generic method for sending simple protocol messages. More...
     
    bool send (const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)
     Send a simple (up to 64 bits) IR message of a given type. An unknown/unsupported type will send nothing. More...
     
    bool send (const decode_type_t type, const uint8_t *state, const uint16_t nbytes)
     Send a complex (>= 64 bits) IR message of a given type. An unknown/unsupported type will send nothing. More...
     
    void sendNEC (uint64_t data, uint16_t nbits=kNECBits, uint16_t repeat=kNoRepeat)
     Send a raw NEC(Renesas) formatted message. Status: STABLE / Known working. More...
     
    uint32_t encodeNEC (uint16_t address, uint16_t command)
     Calculate the raw NEC data based on address and command. Status: STABLE / Expected to work. More...
     
    void sendSony (const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat)
     Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) Status: STABLE / Known working. More...
     
    void sendSony38 (const uint64_t data, const uint16_t nbits=kSony20Bits, const uint16_t repeat=kSonyMinRepeat+1)
     Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. Status: STABLE / Known working. More...
     
    uint32_t encodeSony (const uint16_t nbits, const uint16_t command, const uint16_t address, const uint16_t extended=0)
     Convert Sony/SIRC command, address, & extended bits into sendSony format. Status: STABLE / Should be working. More...
     
    void sendSherwood (uint64_t data, uint16_t nbits=kSherwoodBits, uint16_t repeat=kSherwoodMinRepeat)
     Send an IR command to a Sherwood device. Status: STABLE / Known working. More...
     
    void sendSAMSUNG (const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)
     Send a 32-bit Samsung formatted message. Status: STABLE / Should be working. More...
     
    uint32_t encodeSAMSUNG (const uint8_t customer, const uint8_t command)
     Construct a raw Samsung message from the supplied customer(address) & command. Status: STABLE / Should be working. More...
     
    void sendSamsung36 (const uint64_t data, const uint16_t nbits=kSamsung36Bits, const uint16_t repeat=kNoRepeat)
     Send a Samsung 36-bit formatted message. Status: STABLE / Works on real devices. More...
     
    void sendSamsungAC (const unsigned char data[], const uint16_t nbytes=kSamsungAcStateLength, const uint16_t repeat=kSamsungAcDefaultRepeat)
     Send a Samsung A/C message. Status: Stable / Known working. More...
     
    void sendLG (uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
     Send an LG formatted message. (LG) Status: Beta / Should be working. More...
     
    void sendLG2 (uint64_t data, uint16_t nbits=kLgBits, uint16_t repeat=kNoRepeat)
     Send an LG Variant-2 formatted message. (LG2) Status: Beta / Should be working. More...
     
    uint32_t encodeLG (uint16_t address, uint16_t command)
     Construct a raw 28-bit LG message code from the supplied address & command. Status: STABLE / Works. More...
     
    uint32_t encodeSharp (const uint16_t address, const uint16_t command, const uint16_t expansion=1, const uint16_t check=0, const bool MSBfirst=false)
     Encode a (raw) Sharp message from it's components. Status: STABLE / Works okay. More...
     
    void sendSharp (const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
     Send a Sharp message Status: DEPRECATED / Previously working fine. More...
     
    void sendSharpRaw (const uint64_t data, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
     Send a (raw) Sharp message. More...
     
    void sendSharpAc (const unsigned char data[], const uint16_t nbytes=kSharpAcStateLength, const uint16_t repeat=kSharpAcDefaultRepeat)
     Send a Sharp A/C message. Status: Alpha / Untested. More...
     
    void sendJVC (uint64_t data, uint16_t nbits=kJvcBits, uint16_t repeat=kNoRepeat)
     Send a JVC formatted message. Status: STABLE / Working. More...
     
    uint16_t encodeJVC (uint8_t address, uint8_t command)
     Calculate the raw JVC data based on address and command. Status: STABLE / Works fine. More...
     
    void sendDenon (uint64_t data, uint16_t nbits=kDenonBits, uint16_t repeat=kNoRepeat)
     Send a Denon formatted message. Status: STABLE / Should be working. More...
     
    uint64_t encodeSanyoLC7461 (uint16_t address, uint8_t command)
     Construct a Sanyo LC7461 message. More...
     
    void sendSanyoLC7461 (const uint64_t data, const uint16_t nbits=kSanyoLC7461Bits, const uint16_t repeat=kNoRepeat)
     Send a Sanyo LC7461 message. Status: BETA / Probably works. More...
     
    void sendSanyoAc (const uint8_t *data, const uint16_t nbytes=kSanyoAcStateLength, const uint16_t repeat=kNoRepeat)
     Send a SanyoAc formatted message. Status: STABLE / Reported as working. More...
     
    void sendDISH (uint64_t data, uint16_t nbits=kDishBits, uint16_t repeat=kDishMinRepeat)
     Send a DISH NETWORK formatted message. Status: STABLE / Working. More...
     
    void sendPanasonic64 (const uint64_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
     Send a Panasonic formatted message. Status: STABLE / Should be working. More...
     
    void sendPanasonic (const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
     Send a Panasonic formatted message. Status: STABLE, but DEPRECATED. More...
     
    uint64_t encodePanasonic (const uint16_t manufacturer, const uint8_t device, const uint8_t subdevice, const uint8_t function)
     Calculate the raw Panasonic data based on device, subdevice, & function. Status: STABLE / Should be working. More...
     
    void sendRC5 (const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)
     Send a Philips RC-5/RC-5X packet. Status: RC-5 (stable), RC-5X (alpha) More...
     
    uint16_t encodeRC5 (const uint8_t address, const uint8_t command, const bool key_released=false)
     Encode a Philips RC-5 data message. Status: Beta / Should be working. More...
     
    uint16_t encodeRC5X (const uint8_t address, const uint8_t command, const bool key_released=false)
     Encode a Philips RC-5X data message. Status: Beta / Should be working. More...
     
    uint64_t toggleRC5 (const uint64_t data)
     Flip the toggle bit of a Philips RC-5/RC-5X data message. Used to indicate a change of remote button's state. Status: STABLE. More...
     
    void sendRC6 (const uint64_t data, const uint16_t nbits=kRC6Mode0Bits, const uint16_t repeat=kNoRepeat)
     Send a Philips RC-6 packet. Status: Stable. More...
     
    uint64_t encodeRC6 (const uint32_t address, const uint8_t command, const uint16_t mode=kRC6Mode0Bits)
     Encode a Philips RC-6 data message. Status: Beta / Should be working. More...
     
    uint64_t toggleRC6 (const uint64_t data, const uint16_t nbits=kRC6Mode0Bits)
     Flip the toggle bit of a Philips RC-6 data message. Used to indicate a change of remote button's state. Status: STABLE / Should work fine. More...
     
    void sendRCMM (uint64_t data, uint16_t nbits=kRCMMBits, uint16_t repeat=kNoRepeat)
     Send a Philips RC-MM packet. Status: STABLE / Should be working. More...
     
    void sendCOOLIX (uint64_t data, uint16_t nbits=kCoolixBits, uint16_t repeat=kCoolixDefaultRepeat)
     Send a Coolix message Status: STABLE / Confirmed Working. More...
     
    void sendWhynter (const uint64_t data, const uint16_t nbits=kWhynterBits, const uint16_t repeat=kNoRepeat)
     Send a Whynter message. Status: STABLE. More...
     
    void sendMirage (const unsigned char data[], const uint16_t nbytes=kMirageStateLength, const uint16_t repeat=kMirageMinRepeat)
     Send a Mirage formatted message. Status: STABLE / Reported as working. More...
     
    void sendMitsubishi (uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
     Send the supplied Mitsubishi 16-bit message. Status: STABLE / Working. More...
     
    void sendMitsubishi136 (const unsigned char data[], const uint16_t nbytes=kMitsubishi136StateLength, const uint16_t repeat=kMitsubishi136MinRepeat)
     Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: BETA / Probably working. Needs to be tested against a real device. More...
     
    void sendMitsubishi112 (const unsigned char data[], const uint16_t nbytes=kMitsubishi112StateLength, const uint16_t repeat=kMitsubishi112MinRepeat)
     Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) Status: Stable / Reported as working. More...
     
    void sendMitsubishi2 (uint64_t data, uint16_t nbits=kMitsubishiBits, uint16_t repeat=kMitsubishiMinRepeat)
     Send a supplied second variant Mitsubishi 16-bit message. Status: BETA / Probably works. More...
     
    void sendMitsubishiAC (const unsigned char data[], const uint16_t nbytes=kMitsubishiACStateLength, const uint16_t repeat=kMitsubishiACMinRepeat)
     Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) Status: STABLE / Working. More...
     
    void sendMitsubishiHeavy88 (const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy88StateLength, const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
     Send a MitsubishiHeavy 88-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device. More...
     
    void sendMitsubishiHeavy152 (const unsigned char data[], const uint16_t nbytes=kMitsubishiHeavy152StateLength, const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
     Send a MitsubishiHeavy 152-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device. More...
     
    void sendFujitsuAC (const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kFujitsuAcMinRepeat)
     Send a Fujitsu A/C formatted message. Status: STABLE / Known Good. More...
     
    void sendInax (const uint64_t data, const uint16_t nbits=kInaxBits, const uint16_t repeat=kInaxMinRepeat)
     Send a Inax Toilet formatted message. Status: STABLE / Working. More...
     
    void sendGC (uint16_t buf[], uint16_t len)
     Send a shortened GlobalCache (GC) IRdb/control tower formatted message. Status: STABLE / Known working. More...
     
    void sendKelvinator (const unsigned char data[], const uint16_t nbytes=kKelvinatorStateLength, const uint16_t repeat=kKelvinatorDefaultRepeat)
     Send a Kelvinator A/C message. Status: STABLE / Known working. More...
     
    void sendDaikin (const unsigned char data[], const uint16_t nbytes=kDaikinStateLength, const uint16_t repeat=kDaikinDefaultRepeat)
     Send a Daikin 280-bit A/C formatted message. Status: STABLE. More...
     
    void sendDaikin64 (const uint64_t data, const uint16_t nbits=kDaikin64Bits, const uint16_t repeat=kDaikin64DefaultRepeat)
     Send a Daikin64 (64-bit) A/C formatted message. Status: Beta / Probably Working. More...
     
    void sendDaikin128 (const unsigned char data[], const uint16_t nbytes=kDaikin128StateLength, const uint16_t repeat=kDaikin128DefaultRepeat)
     Send a Daikin128 (128-bit) A/C formatted message. Status: STABLE / Known Working. More...
     
    void sendDaikin152 (const unsigned char data[], const uint16_t nbytes=kDaikin152StateLength, const uint16_t repeat=kDaikin152DefaultRepeat)
     Send a Daikin152 (152-bit) A/C formatted message. Status: STABLE / Known Working. More...
     
    void sendDaikin160 (const unsigned char data[], const uint16_t nbytes=kDaikin160StateLength, const uint16_t repeat=kDaikin160DefaultRepeat)
     Send a Daikin160 (160-bit) A/C formatted message. Status: STABLE / Confirmed working. More...
     
    void sendDaikin176 (const unsigned char data[], const uint16_t nbytes=kDaikin176StateLength, const uint16_t repeat=kDaikin176DefaultRepeat)
     Send a Daikin176 (176-bit) A/C formatted message. Status: STABLE / Working on a real device. More...
     
    void sendDaikin2 (const unsigned char data[], const uint16_t nbytes=kDaikin2StateLength, const uint16_t repeat=kDaikin2DefaultRepeat)
     Send a Daikin2 (312-bit) A/C formatted message. Status: STABLE / Expected to work. More...
     
    void sendDaikin216 (const unsigned char data[], const uint16_t nbytes=kDaikin216StateLength, const uint16_t repeat=kDaikin216DefaultRepeat)
     Send a Daikin216 (216-bit) A/C formatted message. Status: Alpha / Untested on a real device. More...
     
    void sendAiwaRCT501 (uint64_t data, uint16_t nbits=kAiwaRcT501Bits, uint16_t repeat=kAiwaRcT501MinRepeats)
     Send an Aiwa RC T501 formatted message. Status: BETA / Should work. More...
     
    void sendGree (const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)
     Send a Gree Heat Pump formatted message. Status: STABLE / Working. More...
     
    void sendGree (const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)
     Send a Gree Heat Pump formatted message. Status: STABLE / Working. More...
     
    void sendGoodweather (const uint64_t data, const uint16_t nbits=kGoodweatherBits, const uint16_t repeat=kGoodweatherMinRepeat)
     Send a Goodweather HVAC formatted message. Status: BETA / Needs testing on real device. More...
     
    void sendPronto (uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)
     Send a Pronto Code formatted message. Status: STABLE / Known working. More...
     
    void sendArgo (const unsigned char data[], const uint16_t nbytes=kArgoStateLength, const uint16_t repeat=kArgoDefaultRepeat)
     Send a Argo A/C formatted message. Status: BETA / Probably works. More...
     
    void sendTrotec (const unsigned char data[], const uint16_t nbytes=kTrotecStateLength, const uint16_t repeat=kTrotecDefaultRepeat)
     Send a Trotec message. Status: Beta / Probably Working. More...
     
    void sendNikai (uint64_t data, uint16_t nbits=kNikaiBits, uint16_t repeat=kNoRepeat)
     Send a Nikai formatted message. Status: STABLE / Working. More...
     
    void sendToshibaAC (const uint8_t data[], const uint16_t nbytes=kToshibaACStateLength, const uint16_t repeat=kToshibaACMinRepeat)
     Send a Toshiba A/C message. Status: STABLE / Working. More...
     
    void sendMidea (uint64_t data, uint16_t nbits=kMideaBits, uint16_t repeat=kMideaMinRepeat)
     Send a Midea message Status: Alpha / Needs testing against a real device. More...
     
    void sendMidea24 (const uint64_t data, const uint16_t nbits=kMidea24Bits, const uint16_t repeat=kMidea24MinRepeat)
     Send a Midea24 formatted message. Status: STABLE / Confirmed working on a real device. More...
     
    void sendMagiQuest (const uint64_t data, const uint16_t nbits=kMagiquestBits, const uint16_t repeat=kNoRepeat)
     Send a MagiQuest formatted message. Status: Beta / Should be working. More...
     
    uint64_t encodeMagiQuest (const uint32_t wand_id, const uint16_t magnitude)
     Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. (Only 48 bits of real data + 8 leading zero bits) This is suitable for calling sendMagiQuest() with. e.g. sendMagiQuest(encodeMagiQuest(wand_id, magnitude)) More...
     
    void sendLasertag (uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)
     Send a Lasertag packet/message. Status: STABLE / Working. More...
     
    void sendCarrierAC (uint64_t data, uint16_t nbits=kCarrierAcBits, uint16_t repeat=kCarrierAcMinRepeat)
     Send a Carrier HVAC formatted message. Status: STABLE / Works on real devices. More...
     
    void sendCarrierAC40 (uint64_t data, uint16_t nbits=kCarrierAc40Bits, uint16_t repeat=kCarrierAc40MinRepeat)
     Send a Carrier 40bit HVAC formatted message. Status: STABLE / Tested against a real device. More...
     
    void sendCarrierAC64 (uint64_t data, uint16_t nbits=kCarrierAc64Bits, uint16_t repeat=kCarrierAc64MinRepeat)
     Send a Carrier 64bit HVAC formatted message. Status: STABLE / Known to be working. More...
     
    void sendHaierAC (const unsigned char data[], const uint16_t nbytes=kHaierACStateLength, const uint16_t repeat=kHaierAcDefaultRepeat)
     Send a Haier A/C formatted message. (HSU07-HEA03 remote) Status: STABLE / Known to be working. More...
     
    void sendHaierACYRW02 (const unsigned char data[], const uint16_t nbytes=kHaierACYRW02StateLength, const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
     Send a Haier YR-W02 remote A/C formatted message. Status: STABLE / Known to be working. More...
     
    void sendHaierAC176 (const unsigned char data[], const uint16_t nbytes=kHaierAC176StateLength, const uint16_t repeat=kHaierAc176DefaultRepeat)
     Send a Haier 176 bit remote A/C formatted message. Status: STABLE / Known to be working. More...
     
    void sendHitachiAC (const unsigned char data[], const uint16_t nbytes=kHitachiAcStateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
     Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) Status: STABLE / Working. More...
     
    void sendHitachiAC1 (const unsigned char data[], const uint16_t nbytes=kHitachiAc1StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
     Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) Status: STABLE / Confirmed Working. More...
     
    void sendHitachiAC2 (const unsigned char data[], const uint16_t nbytes=kHitachiAc2StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
     Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) Basically the same as sendHitatchiAC() except different size. Status: STABLE / Expected to work. More...
     
    void sendHitachiAc3 (const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kHitachiAcDefaultRepeat)
     Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) Status: STABLE / Working fine. More...
     
    void sendHitachiAc344 (const unsigned char data[], const uint16_t nbytes=kHitachiAc344StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
     Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) Basically the same as sendHitatchiAC() except different size. Status: Beta / Probably works. More...
     
    void sendHitachiAc424 (const unsigned char data[], const uint16_t nbytes=kHitachiAc424StateLength, const uint16_t repeat=kHitachiAcDefaultRepeat)
     Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) Status: STABLE / Reported as working. More...
     
    void sendGICable (uint64_t data, uint16_t nbits=kGicableBits, uint16_t repeat=kGicableMinRepeat)
     Send a raw G.I. Cable formatted message. Status: Alpha / Untested. More...
     
    void sendWhirlpoolAC (const unsigned char data[], const uint16_t nbytes=kWhirlpoolAcStateLength, const uint16_t repeat=kWhirlpoolAcDefaultRepeat)
     Send a Whirlpool A/C message. Status: BETA / Probably works. More...
     
    void sendLutron (uint64_t data, uint16_t nbits=kLutronBits, uint16_t repeat=kNoRepeat)
     Send a Lutron formatted message. Status: Stable / Appears to be working for real devices. More...
     
    void sendElectraAC (const unsigned char data[], const uint16_t nbytes=kElectraAcStateLength, const uint16_t repeat=kNoRepeat)
     Send a Electra A/C formatted message. Status: Alpha / Needs testing against a real device. More...
     
    void sendPanasonicAC (const unsigned char data[], const uint16_t nbytes=kPanasonicAcStateLength, const uint16_t repeat=kPanasonicAcDefaultRepeat)
     Send a Panasonic A/C message. Status: STABLE / Work with real device(s). More...
     
    void sendPanasonicAC32 (const uint64_t data, const uint16_t nbits=kPanasonicAc32Bits, const uint16_t repeat=kPanasonicAcDefaultRepeat)
     Send a Panasonic AC 32/16bit formatted message. Status: STABLE / Confirmed working. More...
     
    void sendPioneer (const uint64_t data, const uint16_t nbits=kPioneerBits, const uint16_t repeat=kNoRepeat)
     Send a raw Pioneer formatted message. Status: STABLE / Expected to be working. More...
     
    uint64_t encodePioneer (uint16_t address, uint16_t command)
     Calculate the raw Pioneer data code based on two NEC sub-codes Status: STABLE / Expected to work. More...
     
    void sendMWM (const unsigned char data[], const uint16_t nbytes, const uint16_t repeat=kNoRepeat)
     Send a MWM packet/message. Status: Implemented. More...
     
    void sendVestelAc (const uint64_t data, const uint16_t nbits=kVestelAcBits, const uint16_t repeat=kNoRepeat)
     Send a Vestel message Status: STABLE / Working. More...
     
    void sendTcl112Ac (const unsigned char data[], const uint16_t nbytes=kTcl112AcStateLength, const uint16_t repeat=kTcl112AcDefaultRepeat)
     Send a TCL 112-bit A/C message. Status: Beta / Probably working. More...
     
    void sendTeco (const uint64_t data, const uint16_t nbits=kTecoBits, const uint16_t repeat=kNoRepeat)
     Send a Teco A/C message. Status: Beta / Probably working. More...
     
    void sendLegoPf (const uint64_t data, const uint16_t nbits=kLegoPfBits, const uint16_t repeat=kLegoPfMinRepeat)
     Send a LEGO Power Functions message. Status: Beta / Should work. More...
     
    void sendNeoclima (const unsigned char data[], const uint16_t nbytes=kNeoclimaStateLength, const uint16_t repeat=kNeoclimaMinRepeat)
     Send a Neoclima message. Status: STABLE / Known to be working. More...
     
    void sendAmcor (const unsigned char data[], const uint16_t nbytes=kAmcorStateLength, const uint16_t repeat=kAmcorDefaultRepeat)
     Send a Amcor HVAC formatted message. Status: STABLE / Reported as working. More...
     
    void sendEpson (uint64_t data, uint16_t nbits=kEpsonBits, uint16_t repeat=kEpsonMinRepeat)
     Send an Epson formatted message. Status: Beta / Probably works. More...
     
    void sendSymphony (uint64_t data, uint16_t nbits=kSymphonyBits, uint16_t repeat=kSymphonyDefaultRepeat)
     Send a Symphony packet. Status: STABLE / Should be working. More...
     
    void sendAirwell (uint64_t data, uint16_t nbits=kAirwellBits, uint16_t repeat=kAirwellMinRepeats)
     Send an Airwell Manchester Code formatted message. Status: BETA / Appears to be working. More...
     
    void sendDelonghiAc (uint64_t data, uint16_t nbits=kDelonghiAcBits, uint16_t repeat=kDelonghiAcDefaultRepeat)
     Send a Delonghi A/C formatted message. Status: STABLE / Reported as working on a real device. More...
     
    void sendDoshisha (const uint64_t data, uint16_t nbits=kDoshishaBits, const uint16_t repeat=kNoRepeat)
     Send a Doshisha formatted message. Status: STABLE / Works on real device. More...
     
    uint64_t encodeDoshisha (const uint8_t command, const uint8_t channel=0)
     Encode Doshisha combining constant values with command and channel. Status: STABLE / Working. More...
     
    void sendMultibrackets (const uint64_t data, const uint16_t nbits=kMultibracketsBits, const uint16_t repeat=kMultibracketsDefaultRepeat)
     Send a Multibrackets formatted message. Status: BETA / Appears to be working. More...
     
    void sendTechnibelAc (uint64_t data, uint16_t nbits=kTechnibelAcBits, uint16_t repeat=kTechnibelAcDefaultRepeat)
     Send an Technibel AC formatted message. Status: STABLE / Reported as working on a real device. More...
     
    void sendCoronaAc (const uint8_t data[], const uint16_t nbytes=kCoronaAcStateLength, const uint16_t repeat=kNoRepeat)
     Send a CoronaAc formatted message. Status: STABLE / Working on real device. More...
     
    void sendZepeal (const uint64_t data, const uint16_t nbits=kZepealBits, const uint16_t repeat=kZepealMinRepeat)
     Send a Zepeal formatted message. Status: STABLE / Works on real device. More...
     
    void sendVoltas (const unsigned char data[], const uint16_t nbytes=kVoltasStateLength, const uint16_t repeat=kNoRepeat)
     Send a Voltas formatted message. Status: STABLE / Working on real device. More...
     
    void sendMetz (const uint64_t data, const uint16_t nbits=kMetzBits, const uint16_t repeat=kMetzMinRepeat)
     Send a Metz formatted message. Status: Beta / Needs testing against a real device. More...
     
    void sendTranscold (const uint64_t data, const uint16_t nbits=kTranscoldBits, const uint16_t repeat=kTranscoldDefaultRepeat)
     Send a Transcold message Status: STABLE / Confirmed Working. More...
     
    void sendElitescreens (const uint64_t data, const uint16_t nbits=kEliteScreensBits, const uint16_t repeat=kEliteScreensDefaultRepeat)
     Send an Elite Screens formatted message. Status: BETA / Probably Working. More...
     
    void sendMilestag2 (const uint64_t data, const uint16_t nbits=kMilesTag2ShotBits, const uint16_t repeat=kMilesMinRepeat)
     Percentage. More...
     
    void sendEcoclim (const uint64_t data, const uint16_t nbits=kEcoclimBits, const uint16_t repeat=kNoRepeat)
     Send a EcoClim A/C formatted message. Status: STABLE / Confirmed working on real device. More...
     
    void sendXmp (const uint64_t data, const uint16_t nbits=kXmpBits, const uint16_t repeat=kNoRepeat)
     Send a XMP packet. Status: Beta / Untested against a real device. More...
     
    void sendTruma (const uint64_t data, const uint16_t nbits=kTrumaBits, const uint16_t repeat=kNoRepeat)
     Send a Truma formatted message. Status: STABLE / Confirmed working. More...
     
    void sendTeknopoint (const unsigned char data[], const uint16_t nbytes=kTeknopointStateLength, const uint16_t repeat=kNoRepeat)
     Send a Teknopoint formatted message. Status: BETA / Probably works. More...
     
    void sendKelon (const uint64_t data, const uint16_t nbits=kKelonBits, const uint16_t repeat=kNoRepeat)
     Send a Kelon message. Status: STABLE / Working. More...
     
    - - - - - - - - - - -

    -Static Public Member Functions

    static uint16_t minRepeats (const decode_type_t protocol)
     Get the minimum number of repeats for a given protocol. More...
     
    static uint16_t defaultBits (const decode_type_t protocol)
     Get the default number of bits for a given protocol. More...
     
    static uint32_t encodeMetz (const uint8_t address, const uint8_t command, const bool toggle=false)
     Encode a Metz address, command, and toggle bits into a code suitable for use with sendMetz(). More...
     
    - - - - - - - -

    -Protected Member Functions

    VIRTUAL void ledOff ()
     Turn off the IR LED. More...
     
    VIRTUAL void ledOn ()
     Turn on the IR LED. More...
     
    - - - - - -

    -Protected Attributes

    uint8_t outputOn
     
    uint8_t outputOff
     
    - - - - - - - -

    -Private Member Functions

    uint32_t calcUSecPeriod (uint32_t hz, bool use_offset=true)
     Calculate the period for a given frequency. More...
     
    void _sendSony (const uint64_t data, const uint16_t nbits, const uint16_t repeat, const uint16_t freq)
     Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message Status: STABLE / Known working. More...
     
    - - - - - - - - - - - - - - - -

    -Private Attributes

    uint32_t _freq_unittest
     
    uint16_t onTimePeriod
     
    uint16_t offTimePeriod
     
    uint16_t IRpin
     
    int8_t periodOffset
     
    uint8_t _dutycycle
     
    bool modulation
     
    -

    Detailed Description

    -

    Class for sending all basic IR protocols.

    -
    Note
    Originally from https://github.com/shirriff/Arduino-IRremote/ Updated by markszabo (https://github.com/crankyoldgit/IRremoteESP8266) for sending IR code on ESP8266
    -

    Constructor & Destructor Documentation

    - -

    ◆ IRsend()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    IRsend::IRsend (uint16_t IRsendPin,
    bool inverted = false,
    bool use_modulation = true 
    )
    -
    -explicit
    -
    - -

    Constructor for an IRsend object.

    -
    Parameters
    - - - -
    [in]IRsendPinWhich GPIO pin to use when sending an IR command.
    [in]invertedOptional flag to invert the output. (default = false) e.g. LED is illuminated when GPIO is LOW rather than HIGH.
    -
    -
    -
    Warning
    Setting inverted to something other than the default could easily destroy your IR LED if you are overdriving it. Unless you REALLY know what you are doing, don't change this.
    -
    Parameters
    - - -
    [in]use_modulationDo we do frequency modulation during transmission? i.e. If not, assume a 100% duty cycle. Ignore attempts to change the duty cycle etc.
    -
    -
    - -
    -
    -

    Member Function Documentation

    - -

    ◆ _delayMicroseconds()

    - -
    -
    - - - - - - - - -
    void IRsend::_delayMicroseconds (uint32_t usec)
    -
    - -

    An ESP8266 RTOS watch-dog timer friendly version of delayMicroseconds().

    -

    A version of delayMicroseconds() that handles large values and does NOT use the watch-dog friendly delay() calls where appropriate.

    -
    Parameters
    - - -
    [in]usecNr. of uSeconds to delay for.
    -
    -
    -
    Note
    Use this only if you know what you are doing as it may cause the WDT to reset the ESP8266.
    - -
    -
    - -

    ◆ _sendSony()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::_sendSony (const uint64_t data,
    const uint16_t nbits,
    const uint16_t repeat,
    const uint16_t freq 
    )
    -
    -private
    -
    - -

    Internal procedure to generate a Sony/SIRC(Serial Infra-Red Control) message Status: STABLE / Known working.

    -
    Parameters
    - - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    [in]freqFrequency of the modulation to transmit at. (Hz or kHz)
    -
    -
    - -
    -
    - -

    ◆ begin()

    - -
    -
    - - - - - - - -
    void IRsend::begin ()
    -
    - -

    Enable the pin for output.

    - -
    -
    - -

    ◆ calcUSecPeriod()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::calcUSecPeriod (uint32_t hz,
    bool use_offset = true 
    )
    -
    -private
    -
    - -

    Calculate the period for a given frequency.

    -
    Parameters
    - - - -
    [in]hzFrequency in Hz.
    [in]use_offsetShould we use the calculated offset or not?
    -
    -
    -
    Returns
    nr. of uSeconds.
    -
    Note
    (T = 1/f)
    - -
    -
    - -

    ◆ calibrate()

    - -
    -
    - - - - - - - - -
    int8_t IRsend::calibrate (uint16_t hz = 38000U)
    -
    - -

    Calculate & set any offsets to account for execution times during sending.

    -
    Parameters
    - - -
    [in]hzThe frequency to calibrate at >= 1000Hz. Default is 38000Hz.
    -
    -
    -
    Returns
    The calculated period offset (in uSeconds) which is now in use. e.g. -5.
    -
    Note
    This will generate an 65535us mark() IR LED signal. This only needs to be called once, if at all.
    - -
    -
    - -

    ◆ defaultBits()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint16_t IRsend::defaultBits (const decode_type_t protocol)
    -
    -static
    -
    - -

    Get the default number of bits for a given protocol.

    -
    Parameters
    - - -
    [in]protocolProtocol number/type you want the default bit size for.
    -
    -
    -
    Returns
    The number of bits.
    - -
    -
    - -

    ◆ enableIROut()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRsend::enableIROut (uint32_t freq,
    uint8_t duty = kDutyDefault 
    )
    -
    - -

    Set the output frequency modulation and duty cycle.

    -
    Parameters
    - - - -
    [in]freqThe freq we want to modulate at. Assumes < 1000 means kHz else Hz.
    [in]dutyPercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent. This is ignored if modulation is disabled at object instantiation.
    -
    -
    -
    Note
    Integer timing functions & math mean we can't do fractions of microseconds timing. Thus minor changes to the freq & duty values may have limited effect. You've been warned.
    - -
    -
    - -

    ◆ encodeDoshisha()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::encodeDoshisha (const uint8_t command,
    const uint8_t channel = 0 
    )
    -
    - -

    Encode Doshisha combining constant values with command and channel. Status: STABLE / Working.

    -
    Parameters
    - - - -
    [in]commandThe command code to be sent.
    [in]channelThe one bit channel 0 for CH1 and 1 for CH2
    -
    -
    -
    Returns
    The corresponding Doshisha code.
    - -
    -
    - -

    ◆ encodeJVC()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint16_t IRsend::encodeJVC (uint8_t address,
    uint8_t command 
    )
    -
    - -

    Calculate the raw JVC data based on address and command. Status: STABLE / Works fine.

    -
    Parameters
    - - - -
    [in]addressAn 8-bit address value.
    [in]commandAn 8-bit command value.
    -
    -
    -
    Returns
    A raw JVC message code, suitable for sendJVC()..
    -
    See also
    http://www.sbprojects.net/knowledge/ir/jvc.php
    - -
    -
    - -

    ◆ encodeLG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::encodeLG (uint16_t address,
    uint16_t command 
    )
    -
    - -

    Construct a raw 28-bit LG message code from the supplied address & command. Status: STABLE / Works.

    -
    Parameters
    - - - -
    [in]addressThe address code.
    [in]commandThe command code.
    -
    -
    -
    Returns
    A raw 28-bit LG message code suitable for sendLG() etc.
    -
    Note
    Sequence of bits = address + command + checksum.
    - -
    -
    - -

    ◆ encodeMagiQuest()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::encodeMagiQuest (const uint32_t wand_id,
    const uint16_t magnitude 
    )
    -
    - -

    Encode a MagiQuest wand_id, and a magnitude into a single 64bit value. (Only 48 bits of real data + 8 leading zero bits) This is suitable for calling sendMagiQuest() with. e.g. sendMagiQuest(encodeMagiQuest(wand_id, magnitude))

    -
    Parameters
    - - - -
    [in]wand_idThe value for the wand ID.
    [in]magnitudeThe value for the magnitude
    -
    -
    -
    Returns
    A code suitable for calling sendMagiQuest() with.
    - -
    -
    - -

    ◆ encodeMetz()

    - -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::encodeMetz (const uint8_t address,
    const uint8_t command,
    const bool toggle = false 
    )
    -
    -static
    -
    - -

    Encode a Metz address, command, and toggle bits into a code suitable for use with sendMetz().

    -
    Parameters
    - - - - -
    [in]addressA 3-bit address value.
    [in]commandA 6-bit command value.
    [in]toggleShould the toggle bit be set in the result?
    -
    -
    -
    Returns
    A 19-bit value suitable for use with sendMetz().
    - -
    -
    - -

    ◆ encodeNEC()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::encodeNEC (uint16_t address,
    uint16_t command 
    )
    -
    - -

    Calculate the raw NEC data based on address and command. Status: STABLE / Expected to work.

    -
    Parameters
    - - - -
    [in]addressAn address value.
    [in]commandAn 8-bit command value.
    -
    -
    -
    Returns
    A raw 32-bit NEC message suitable for use with sendNEC().
    -
    See also
    http://www.sbprojects.net/knowledge/ir/nec.php
    - -
    -
    - -

    ◆ encodePanasonic()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::encodePanasonic (const uint16_t manufacturer,
    const uint8_t device,
    const uint8_t subdevice,
    const uint8_t function 
    )
    -
    - -

    Calculate the raw Panasonic data based on device, subdevice, & function. Status: STABLE / Should be working.

    -
    Parameters
    - - - - - -
    [in]manufacturerA 16-bit manufacturer code. e.g. 0x4004 is Panasonic
    [in]deviceAn 8-bit code.
    [in]subdeviceAn 8-bit code.
    [in]functionAn 8-bit code.
    -
    -
    -
    Returns
    A value suitable for use with sendPanasonic64().
    -
    Note
    Panasonic 48-bit protocol is a modified version of Kaseikyo.
    -
    See also
    http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615
    - -
    -
    - -

    ◆ encodePioneer()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::encodePioneer (uint16_t address,
    uint16_t command 
    )
    -
    - -

    Calculate the raw Pioneer data code based on two NEC sub-codes Status: STABLE / Expected to work.

    -
    Parameters
    - - - -
    [in]addressA 16-bit "published" NEC value.
    [in]commandA 16-bit "published" NEC value.
    -
    -
    -
    Returns
    A raw 64-bit Pioneer message code for use with sendPioneer()`
    -
    Note
    Address & Command can be take from a decode result OR from the spreadsheets located at: https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers where the first part is considered the address, and the second the command. e.g. "A556+AF20" is an Address of 0xA556 & a Command of 0xAF20.
    - -
    -
    - -

    ◆ encodeRC5()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRsend::encodeRC5 (const uint8_t address,
    const uint8_t command,
    const bool key_released = false 
    )
    -
    - -

    Encode a Philips RC-5 data message. Status: Beta / Should be working.

    -
    Parameters
    - - - - -
    [in]addressThe 5-bit address value for the message.
    [in]commandThe 6-bit command value for the message.
    [in]key_releasedIndicate if the remote key has been released.
    -
    -
    -
    Returns
    A message suitable for use in sendRC5().
    - -
    -
    - -

    ◆ encodeRC5X()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint16_t IRsend::encodeRC5X (const uint8_t address,
    const uint8_t command,
    const bool key_released = false 
    )
    -
    - -

    Encode a Philips RC-5X data message. Status: Beta / Should be working.

    -
    Parameters
    - - - - -
    [in]addressThe 5-bit address value for the message.
    [in]commandThe 7-bit command value for the message.
    [in]key_releasedIndicate if the remote key has been released.
    -
    -
    -
    Returns
    A message suitable for use in sendRC5().
    - -
    -
    - -

    ◆ encodeRC6()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::encodeRC6 (const uint32_t address,
    const uint8_t command,
    const uint16_t mode = kRC6Mode0Bits 
    )
    -
    - -

    Encode a Philips RC-6 data message. Status: Beta / Should be working.

    -
    Parameters
    - - - - -
    [in]addressThe address (aka. control) value for the message. Includes the field/mode/toggle bits.
    [in]commandThe 8-bit command value for the message. (aka. information)
    [in]modeWhich protocol to use. Defined by nr. of bits in the protocol.
    -
    -
    -
    Returns
    A data message suitable for use in sendRC6().
    - -
    -
    - -

    ◆ encodeSAMSUNG()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::encodeSAMSUNG (const uint8_t customer,
    const uint8_t command 
    )
    -
    - -

    Construct a raw Samsung message from the supplied customer(address) & command. Status: STABLE / Should be working.

    -
    Parameters
    - - - -
    [in]customerThe customer code. (aka. Address)
    [in]commandThe command code.
    -
    -
    -
    Returns
    A raw 32-bit Samsung message suitable for sendSAMSUNG().
    - -
    -
    - -

    ◆ encodeSanyoLC7461()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::encodeSanyoLC7461 (uint16_t address,
    uint8_t command 
    )
    -
    - -

    Construct a Sanyo LC7461 message.

    -
    Parameters
    - - - -
    [in]addressThe 13 bit value of the address(Custom) portion of the protocol.
    [in]commandThe 8 bit value of the command(Key) portion of the protocol.
    -
    -
    -
    Returns
    An uint64_t with the encoded raw 42 bit Sanyo LC7461 data value.
    -
    Note
    This protocol uses the NEC protocol timings. However, data is formatted as : address(13 bits), !address, command(8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon
    - -
    -
    - -

    ◆ encodeSharp()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::encodeSharp (const uint16_t address,
    const uint16_t command,
    const uint16_t expansion = 1,
    const uint16_t check = 0,
    const bool MSBfirst = false 
    )
    -
    - -

    Encode a (raw) Sharp message from it's components. Status: STABLE / Works okay.

    -
    Parameters
    - - - - - - -
    [in]addressThe value of the address to be sent.
    [in]commandThe value of the address to be sent. (8 bits)
    [in]expansionThe value of the expansion bit to use. (0 or 1, typically 1)
    [in]checkThe value of the check bit to use. (0 or 1, typically 0)
    [in]MSBfirstFlag indicating MSB first or LSB first order.
    -
    -
    -
    Returns
    A uint32_t containing the raw Sharp message for sendSharpRaw().
    -
    Note
    Assumes the standard Sharp bit sizes. Historically sendSharp() sends address & command in MSB first order. This is actually incorrect. It should be sent in LSB order. The behaviour of sendSharp() hasn't been changed to maintain backward compatibility.
    - -
    -
    - -

    ◆ encodeSony()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint32_t IRsend::encodeSony (const uint16_t nbits,
    const uint16_t command,
    const uint16_t address,
    const uint16_t extended = 0 
    )
    -
    - -

    Convert Sony/SIRC command, address, & extended bits into sendSony format. Status: STABLE / Should be working.

    -
    Parameters
    - - - - - -
    [in]nbitsSony protocol bit size.
    [in]commandSony command bits.
    [in]addressSony address bits.
    [in]extendedSony extended bits.
    -
    -
    -
    Returns
    A sendSony() etc compatible data message.
    - -
    -
    - -

    ◆ ledOff()

    - -
    -
    - - - - - -
    - - - - - - - -
    void IRsend::ledOff ()
    -
    -protected
    -
    - -

    Turn off the IR LED.

    - -
    -
    - -

    ◆ ledOn()

    - -
    -
    - - - - - -
    - - - - - - - -
    void IRsend::ledOn ()
    -
    -protected
    -
    - -

    Turn on the IR LED.

    - -
    -
    - -

    ◆ mark()

    - -
    -
    - - - - - - - - -
    uint16_t IRsend::mark (uint16_t usec)
    -
    - -

    Modulate the IR LED for the given period (usec) and at the duty cycle set.

    -
    Parameters
    - - -
    [in]usecThe period of time to modulate the IR LED for, in microseconds.
    -
    -
    -
    Returns
    Nr. of pulses actually sent.
    -
    Note
    The ESP8266 has no good way to do hardware PWM, so we have to do it all in software. There is a horrible kludge/brilliant hack to use the second serial TX line to do fairly accurate hardware PWM, but it is only available on a single specific GPIO and only available on some modules. e.g. It's not available on the ESP-01 module. Hence, for greater compatibility & choice, we don't use that method. Ref: https://www.analysir.com/blog/2017/01/29/updated-esp8266-nodemcu-backdoor-upwm-hack-for-ir-signals/
    - -
    -
    - -

    ◆ minRepeats()

    - -
    -
    - - - - - -
    - - - - - - - - -
    uint16_t IRsend::minRepeats (const decode_type_t protocol)
    -
    -static
    -
    - -

    Get the minimum number of repeats for a given protocol.

    -
    Parameters
    - - -
    [in]protocolProtocol number/type of the message you want to send.
    -
    -
    -
    Returns
    The number of repeats required.
    - -
    -
    - -

    ◆ send() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRsend::send (const decode_type_t type,
    const uint64_t data,
    const uint16_t nbits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a simple (up to 64 bits) IR message of a given type. An unknown/unsupported type will send nothing.

    -
    Parameters
    - - - - - -
    [in]typeProtocol number/type of the message you want to send.
    [in]dataThe data you want to send (up to 64 bits).
    [in]nbitsHow many bits long the message is to be.
    [in]repeatHow many repeats to do?
    -
    -
    -
    Returns
    True if it is a type we can attempt to send, false if not.
    - -
    -
    - -

    ◆ send() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRsend::send (const decode_type_t type,
    const uint8_t * state,
    const uint16_t nbytes 
    )
    -
    - -

    Send a complex (>= 64 bits) IR message of a given type. An unknown/unsupported type will send nothing.

    -
    Parameters
    - - - - -
    [in]typeProtocol number/type of the message you want to send.
    [in]stateA pointer to the array of bytes that make up the state[].
    [in]nbytesHow many bytes are in the state.
    -
    -
    -
    Returns
    True if it is a type we can attempt to send, false if not.
    - -
    -
    - -

    ◆ sendAirwell()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendAirwell (uint64_t data,
    uint16_t nbits = kAirwellBits,
    uint16_t repeat = kAirwellMinRepeats 
    )
    -
    - -

    Send an Airwell Manchester Code formatted message. Status: BETA / Appears to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of the message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1069
    - -
    -
    - -

    ◆ sendAiwaRCT501()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendAiwaRCT501 (uint64_t data,
    uint16_t nbits = kAiwaRcT501Bits,
    uint16_t repeat = kAiwaRcT501MinRepeats 
    )
    -
    - -

    Send an Aiwa RC T501 formatted message. Status: BETA / Should work.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of the message to be sent. Typically kAiwaRcT501Bits. Max is 37 = (64 - 27)
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    http://lirc.sourceforge.net/remotes/aiwa/RC-T501
    - -
    -
    - -

    ◆ sendAmcor()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendAmcor (const unsigned char data[],
    const uint16_t nbytes = kAmcorStateLength,
    const uint16_t repeat = kAmcorDefaultRepeat 
    )
    -
    - -

    Send a Amcor HVAC formatted message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendArgo()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendArgo (const unsigned char data[],
    const uint16_t nbytes = kArgoStateLength,
    const uint16_t repeat = kArgoDefaultRepeat 
    )
    -
    - -

    Send a Argo A/C formatted message. Status: BETA / Probably works.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendCarrierAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendCarrierAC (uint64_t data,
    uint16_t nbits = kCarrierAcBits,
    uint16_t repeat = kCarrierAcMinRepeat 
    )
    -
    - -

    Send a Carrier HVAC formatted message. Status: STABLE / Works on real devices.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendCarrierAC40()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendCarrierAC40 (uint64_t data,
    uint16_t nbits = kCarrierAc40Bits,
    uint16_t repeat = kCarrierAc40MinRepeat 
    )
    -
    - -

    Send a Carrier 40bit HVAC formatted message. Status: STABLE / Tested against a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe bit size of the message being sent.
    [in]repeatThe number of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendCarrierAC64()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendCarrierAC64 (uint64_t data,
    uint16_t nbits = kCarrierAc64Bits,
    uint16_t repeat = kCarrierAc64MinRepeat 
    )
    -
    - -

    Send a Carrier 64bit HVAC formatted message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe bit size of the message being sent.
    [in]repeatThe number of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendCOOLIX()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendCOOLIX (uint64_t data,
    uint16_t nbits = kCoolixBits,
    uint16_t repeat = kCoolixDefaultRepeat 
    )
    -
    - -

    Send a Coolix message Status: STABLE / Confirmed Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/z3t0/Arduino-IRremote/blob/master/ir_COOLIX.cpp
    - -
    -
    - -

    ◆ sendCoronaAc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendCoronaAc (const uint8_t data[],
    const uint16_t nbytes = kCoronaAcStateLength,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a CoronaAc formatted message. Status: STABLE / Working on real device.

    -
    Parameters
    - - - - -
    [in]dataAn array of bytes containing the IR command.
    [in]nbytesNr. of bytes of data in the array. e.g.
    uint8_t data[kCoronaAcStateLength] = {
    -
    0x28, 0x61, 0x3D, 0x19, 0xE6, 0x37, 0xC8,
    -
    0x28, 0x61, 0x6D, 0xFF, 0x00, 0xFF, 0x00,
    -
    0x28, 0x61, 0xCD, 0xFF, 0x00, 0xFF, 0x00};
    -
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendDaikin()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin (const unsigned char data[],
    const uint16_t nbytes = kDaikinStateLength,
    const uint16_t repeat = kDaikinDefaultRepeat 
    )
    -
    - -

    Send a Daikin 280-bit A/C formatted message. Status: STABLE.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/mharizanov/Daikin-AC-remote-control-over-the-Internet/tree/master/IRremote
    -
    -https://github.com/blafois/Daikin-IR-Reverse
    - -
    -
    - -

    ◆ sendDaikin128()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin128 (const unsigned char data[],
    const uint16_t nbytes = kDaikin128StateLength,
    const uint16_t repeat = kDaikin128DefaultRepeat 
    )
    -
    - -

    Send a Daikin128 (128-bit) A/C formatted message. Status: STABLE / Known Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/827
    - -
    -
    - -

    ◆ sendDaikin152()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin152 (const unsigned char data[],
    const uint16_t nbytes = kDaikin152StateLength,
    const uint16_t repeat = kDaikin152DefaultRepeat 
    )
    -
    - -

    Send a Daikin152 (152-bit) A/C formatted message. Status: STABLE / Known Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/873
    - -
    -
    - -

    ◆ sendDaikin160()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin160 (const unsigned char data[],
    const uint16_t nbytes = kDaikin160StateLength,
    const uint16_t repeat = kDaikin160DefaultRepeat 
    )
    -
    - -

    Send a Daikin160 (160-bit) A/C formatted message. Status: STABLE / Confirmed working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/731
    - -
    -
    - -

    ◆ sendDaikin176()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin176 (const unsigned char data[],
    const uint16_t nbytes = kDaikin176StateLength,
    const uint16_t repeat = kDaikin176DefaultRepeat 
    )
    -
    - -

    Send a Daikin176 (176-bit) A/C formatted message. Status: STABLE / Working on a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendDaikin2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin2 (const unsigned char data[],
    const uint16_t nbytes = kDaikin2StateLength,
    const uint16_t repeat = kDaikin2DefaultRepeat 
    )
    -
    - -

    Send a Daikin2 (312-bit) A/C formatted message. Status: STABLE / Expected to work.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/582
    - -
    -
    - -

    ◆ sendDaikin216()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin216 (const unsigned char data[],
    const uint16_t nbytes = kDaikin216StateLength,
    const uint16_t repeat = kDaikin216DefaultRepeat 
    )
    -
    - -

    Send a Daikin216 (216-bit) A/C formatted message. Status: Alpha / Untested on a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/689
    -
    -https://github.com/danny-source/Arduino_DY_IRDaikin
    - -
    -
    - -

    ◆ sendDaikin64()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDaikin64 (const uint64_t data,
    const uint16_t nbits = kDaikin64Bits,
    const uint16_t repeat = kDaikin64DefaultRepeat 
    )
    -
    - -

    Send a Daikin64 (64-bit) A/C formatted message. Status: Beta / Probably Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1064
    - -
    -
    - -

    ◆ sendData()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendData (uint16_t onemark,
    uint32_t onespace,
    uint16_t zeromark,
    uint32_t zerospace,
    uint64_t data,
    uint16_t nbits,
    bool MSBfirst = true 
    )
    -
    - -

    Generic method for sending data that is common to most protocols. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

    -
    Parameters
    - - - - - - - - -
    [in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
    [in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
    [in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
    [in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
    [in]dataThe data to be transmitted.
    [in]nbitsNr. of bits of data to be sent.
    [in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
    -
    -
    - -
    -
    - -

    ◆ sendDelonghiAc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDelonghiAc (uint64_t data,
    uint16_t nbits = kDelonghiAcBits,
    uint16_t repeat = kDelonghiAcDefaultRepeat 
    )
    -
    - -

    Send a Delonghi A/C formatted message. Status: STABLE / Reported as working on a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1096
    - -
    -
    - -

    ◆ sendDenon()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDenon (uint64_t data,
    uint16_t nbits = kDenonBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Denon formatted message. Status: STABLE / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Some Denon devices use a Kaseikyo/Panasonic 48-bit format Others use the Sharp protocol.
    - -
    -
    - -

    ◆ sendDISH()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDISH (uint64_t data,
    uint16_t nbits = kDishBits,
    uint16_t repeat = kDishMinRepeat 
    )
    -
    - -

    Send a DISH NETWORK formatted message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Dishplayer is a different protocol. Typically a DISH device needs to get a command a total of at least 4 times to accept it. e.g. repeat=3
    -

    Here is the LIRC file I found that seems to match the remote codes from the oscilloscope: DISH NETWORK (echostar 301):

    See also
    http://lirc.sourceforge.net/remotes/echostar/301_501_3100_5100_58xx_59xx
    -
    -http://www.hifi-remote.com/wiki/index.php?title=Dish
    - -
    -
    - -

    ◆ sendDoshisha()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendDoshisha (const uint64_t data,
    uint16_t nbits = kDoshishaBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Doshisha formatted message. Status: STABLE / Works on real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendEcoclim()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendEcoclim (const uint64_t data,
    const uint16_t nbits = kEcoclimBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a EcoClim A/C formatted message. Status: STABLE / Confirmed working on real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendElectraAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendElectraAC (const unsigned char data[],
    const uint16_t nbytes = kElectraAcStateLength,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Electra A/C formatted message. Status: Alpha / Needs testing against a real device.

    -
    Parameters
    - - -
    [in]dataThe message to be sent.
    -
    -
    -
    Note
    Guessing MSBF order.
    -
    Parameters
    - - - -
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendElitescreens()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendElitescreens (const uint64_t data,
    const uint16_t nbits = kEliteScreensBits,
    const uint16_t repeat = kEliteScreensDefaultRepeat 
    )
    -
    - -

    Send an Elite Screens formatted message. Status: BETA / Probably Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendEpson()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendEpson (uint64_t data,
    uint16_t nbits = kEpsonBits,
    uint16_t repeat = kEpsonMinRepeat 
    )
    -
    - -

    Send an Epson formatted message. Status: Beta / Probably works.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of nbits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendFujitsuAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendFujitsuAC (const unsigned char data[],
    const uint16_t nbytes,
    const uint16_t repeat = kFujitsuAcMinRepeat 
    )
    -
    - -

    Send a Fujitsu A/C formatted message. Status: STABLE / Known Good.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent. Typically one of: kFujitsuAcStateLength, kFujitsuAcStateLength - 1, kFujitsuAcStateLengthShort, kFujitsuAcStateLengthShort - 1
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendGC()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGC (uint16_t buf[],
    uint16_t len 
    )
    -
    - -

    Send a shortened GlobalCache (GC) IRdb/control tower formatted message. Status: STABLE / Known working.

    -
    Parameters
    - - - -
    [in]bufArray of uint16_t containing the shortened GlobalCache data.
    [in]lenNr. of entries in the buf[] array.
    -
    -
    -
    Note
    Global Cache format without the emitter ID or request ID. Starts at the frequency (Hertz), followed by nr. of times to emit (count), then the offset for repeats (where a repeat will start from), then the rest of entries are the actual IR message as units of periodic time. e.g. sendir,1:1,1,38000,1,1,9,70,9,30,9,... -> 38000,1,1,9,70,9,30,9,...
    -
    See also
    https://irdb.globalcache.com/Home/Database
    - -
    -
    - -

    ◆ sendGeneric() [1/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGeneric (const uint16_t headermark,
    const uint32_t headerspace,
    const uint16_t onemark,
    const uint32_t onespace,
    const uint16_t zeromark,
    const uint32_t zerospace,
    const uint16_t footermark,
    const uint32_t gap,
    const uint32_t mesgtime,
    const uint64_t data,
    const uint16_t nbits,
    const uint16_t frequency,
    const bool MSBfirst,
    const uint16_t repeat,
    const uint8_t dutycycle 
    )
    -
    - -

    Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

    -
    Parameters
    - - - - - - - - - - - - - - - - -
    [in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
    [in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
    [in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
    [in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
    [in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
    [in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
    [in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
    [in]gapNr. of usecs for the led to be off after the footer mark. This is effectively the gap between messages. A value of 0 means no gap space.
    [in]mesgtimeMin. nr. of usecs a single message needs to be. This is effectively the min. total length of a single message.
    [in]dataThe data to be transmitted.
    [in]nbitsNr. of bits of data to be sent.
    [in]frequencyThe frequency we want to modulate at. (Hz/kHz)
    [in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
    [in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
    [in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
    -
    -
    -
    Note
    Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
    - -
    -
    - -

    ◆ sendGeneric() [2/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGeneric (const uint16_t headermark,
    const uint32_t headerspace,
    const uint16_t onemark,
    const uint32_t onespace,
    const uint16_t zeromark,
    const uint32_t zerospace,
    const uint16_t footermark,
    const uint32_t gap,
    const uint64_t data,
    const uint16_t nbits,
    const uint16_t frequency,
    const bool MSBfirst,
    const uint16_t repeat,
    const uint8_t dutycycle 
    )
    -
    - -

    Generic method for sending simple protocol messages. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

    -
    Parameters
    - - - - - - - - - - - - - - - -
    [in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
    [in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
    [in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
    [in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
    [in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
    [in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
    [in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
    [in]gapNr. of usecs for the led to be off after the footer mark. This is effectively the gap between messages. A value of 0 means no gap space.
    [in]dataThe data to be transmitted.
    [in]nbitsNr. of bits of data to be sent.
    [in]frequencyThe frequency we want to modulate at. (Hz/kHz)
    [in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
    [in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
    [in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
    -
    -
    -
    Note
    Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
    - -
    -
    - -

    ◆ sendGeneric() [3/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGeneric (const uint16_t headermark,
    const uint32_t headerspace,
    const uint16_t onemark,
    const uint32_t onespace,
    const uint16_t zeromark,
    const uint32_t zerospace,
    const uint16_t footermark,
    const uint32_t gap,
    const uint8_t * dataptr,
    const uint16_t nbytes,
    const uint16_t frequency,
    const bool MSBfirst,
    const uint16_t repeat,
    const uint8_t dutycycle 
    )
    -
    - -

    Generic method for sending simple protocol messages.

    -
    Parameters
    - - - - - - - - - - - - - - - -
    [in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
    [in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
    [in]onemarkNr. of usecs for the led to be pulsed for a '1' bit.
    [in]onespaceNr. of usecs for the led to be fully off for a '1' bit.
    [in]zeromarkNr. of usecs for the led to be pulsed for a '0' bit.
    [in]zerospaceNr. of usecs for the led to be fully off for a '0' bit.
    [in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
    [in]gapNr. of usecs for the led to be off after the footer mark. This is effectively the gap between messages. A value of 0 means no gap space.
    [in]dataptrPointer to the data to be transmitted.
    [in]nbytesNr. of bytes of data to be sent.
    [in]frequencyThe frequency we want to modulate at. (Hz/kHz)
    [in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
    [in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
    [in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
    -
    -
    -
    Note
    Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
    - -
    -
    - -

    ◆ sendGICable()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGICable (uint64_t data,
    uint16_t nbits = kGicableBits,
    uint16_t repeat = kGicableMinRepeat 
    )
    -
    - -

    Send a raw G.I. Cable formatted message. Status: Alpha / Untested.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendGoodweather()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGoodweather (const uint64_t data,
    const uint16_t nbits = kGoodweatherBits,
    const uint16_t repeat = kGoodweatherMinRepeat 
    )
    -
    - -

    Send a Goodweather HVAC formatted message. Status: BETA / Needs testing on real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendGree() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGree (const uint64_t data,
    const uint16_t nbits = kGreeBits,
    const uint16_t repeat = kGreeDefaultRepeat 
    )
    -
    - -

    Send a Gree Heat Pump formatted message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendGree() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendGree (const uint8_t data[],
    const uint16_t nbytes = kGreeStateLength,
    const uint16_t repeat = kGreeDefaultRepeat 
    )
    -
    - -

    Send a Gree Heat Pump formatted message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendHaierAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHaierAC (const unsigned char data[],
    const uint16_t nbytes = kHaierACStateLength,
    const uint16_t repeat = kHaierAcDefaultRepeat 
    )
    -
    - -

    Send a Haier A/C formatted message. (HSU07-HEA03 remote) Status: STABLE / Known to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendHaierAC176()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHaierAC176 (const unsigned char data[],
    const uint16_t nbytes = kHaierAC176StateLength,
    const uint16_t repeat = kHaierAc176DefaultRepeat 
    )
    -
    - -

    Send a Haier 176 bit remote A/C formatted message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendHaierACYRW02()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHaierACYRW02 (const unsigned char data[],
    const uint16_t nbytes = kHaierACYRW02StateLength,
    const uint16_t repeat = kHaierAcYrw02DefaultRepeat 
    )
    -
    - -

    Send a Haier YR-W02 remote A/C formatted message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendHitachiAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHitachiAC (const unsigned char data[],
    const uint16_t nbytes = kHitachiAcStateLength,
    const uint16_t repeat = kHitachiAcDefaultRepeat 
    )
    -
    - -

    Send a Hitachi 28-byte/224-bit A/C formatted message. (HITACHI_AC) Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/417
    - -
    -
    - -

    ◆ sendHitachiAC1()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHitachiAC1 (const unsigned char data[],
    const uint16_t nbytes = kHitachiAc1StateLength,
    const uint16_t repeat = kHitachiAcDefaultRepeat 
    )
    -
    - -

    Send a Hitachi 13 byte/224-bit A/C formatted message. (HITACHI_AC1) Status: STABLE / Confirmed Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Basically the same as sendHitatchiAC() except different size & header.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/453
    - -
    -
    - -

    ◆ sendHitachiAC2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHitachiAC2 (const unsigned char data[],
    const uint16_t nbytes = kHitachiAc2StateLength,
    const uint16_t repeat = kHitachiAcDefaultRepeat 
    )
    -
    - -

    Send a Hitachi 53 byte/424-bit A/C formatted message. (HITACHI_AC2) Basically the same as sendHitatchiAC() except different size. Status: STABLE / Expected to work.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendHitachiAc3()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHitachiAc3 (const unsigned char data[],
    const uint16_t nbytes,
    const uint16_t repeat = kHitachiAcDefaultRepeat 
    )
    -
    - -

    Send a Hitachi(3) A/C formatted message. (HITACHI_AC3) Status: STABLE / Working fine.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol is almost exactly the same as HitachiAC424 except this variant has subtle timing differences. There are five(5) typical sizes: kHitachiAc3MinStateLength (Cancel Timer), kHitachiAc3MinStateLength + 2 (Change Temp), kHitachiAc3StateLength - 6 (Change Mode), kHitachiAc3StateLength - 4 (Normal), & kHitachiAc3StateLength (Set Timer)
    - -
    -
    - -

    ◆ sendHitachiAc344()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHitachiAc344 (const unsigned char data[],
    const uint16_t nbytes = kHitachiAc344StateLength,
    const uint16_t repeat = kHitachiAcDefaultRepeat 
    )
    -
    - -

    Send a Hitachi A/C 43-byte/344-bit message. (HITACHI_AC344) Basically the same as sendHitatchiAC() except different size. Status: Beta / Probably works.

    -
    Parameters
    - - - - -
    [in]dataAn array of bytes containing the IR command.
    [in]nbytesNr. of bytes of data in the array.
    [in]repeatNr. of times the message is to be repeated. (Default = 0).
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1134
    - -
    -
    - -

    ◆ sendHitachiAc424()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendHitachiAc424 (const unsigned char data[],
    const uint16_t nbytes = kHitachiAc424StateLength,
    const uint16_t repeat = kHitachiAcDefaultRepeat 
    )
    -
    - -

    Send a Hitachi 53-byte/424-bit A/C formatted message. (HITACHI_AC424) Status: STABLE / Reported as working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol is almost exactly the same as HitachiAC2 except this variant has a leader section as well, and subtle timing differences. It is also in LSBF order (per byte), rather than MSBF order.
    - -
    -
    - -

    ◆ sendInax()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendInax (const uint64_t data,
    const uint16_t nbits = kInaxBits,
    const uint16_t repeat = kInaxMinRepeat 
    )
    -
    - -

    Send a Inax Toilet formatted message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/706
    - -
    -
    - -

    ◆ sendJVC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendJVC (uint64_t data,
    uint16_t nbits = kJvcBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a JVC formatted message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    http://www.sbprojects.net/knowledge/ir/jvc.php
    - -
    -
    - -

    ◆ sendKelon()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendKelon (const uint64_t data,
    const uint16_t nbits = kKelonBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Kelon message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe data to be transmitted.
    [in]nbitsNr. of bits of data to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendKelvinator()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendKelvinator (const unsigned char data[],
    const uint16_t nbytes = kKelvinatorStateLength,
    const uint16_t repeat = kKelvinatorDefaultRepeat 
    )
    -
    - -

    Send a Kelvinator A/C message. Status: STABLE / Known working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendLasertag()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendLasertag (uint64_t data,
    uint16_t nbits = kLasertagBits,
    uint16_t repeat = kLasertagMinRepeat 
    )
    -
    - -

    Send a Lasertag packet/message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol is pretty much just raw Manchester encoding.
    -
    Todo:
    Convert this to use sendManchester() if we can.`
    - -
    -
    - -

    ◆ sendLegoPf()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendLegoPf (const uint64_t data,
    const uint16_t nbits = kLegoPfBits,
    const uint16_t repeat = kLegoPfMinRepeat 
    )
    -
    - -

    Send a LEGO Power Functions message. Status: Beta / Should work.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Non-zero repeats results in at least 5 messages per spec.
    - -
    -
    - -

    ◆ sendLG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendLG (uint64_t data,
    uint16_t nbits = kLgBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send an LG formatted message. (LG) Status: Beta / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent. Typically kLgBits or kLg32Bits.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    LG has a separate message to indicate a repeat, like NEC does.
    - -
    -
    - -

    ◆ sendLG2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendLG2 (uint64_t data,
    uint16_t nbits = kLgBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send an LG Variant-2 formatted message. (LG2) Status: Beta / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent. Typically kLgBits or kLg32Bits.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    LG has a separate message to indicate a repeat, like NEC does.
    - -
    -
    - -

    ◆ sendLutron()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendLutron (uint64_t data,
    uint16_t nbits = kLutronBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Lutron formatted message. Status: Stable / Appears to be working for real devices.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    The protocol is really 36 bits long, but the first bit is always a 1. So, assume the 1 and only have a normal payload of 35 bits.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/515
    - -
    -
    - -

    ◆ sendMagiQuest()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMagiQuest (const uint64_t data,
    const uint16_t nbits = kMagiquestBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a MagiQuest formatted message. Status: Beta / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendManchester()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendManchester (const uint16_t headermark,
    const uint32_t headerspace,
    const uint16_t half_period,
    const uint16_t footermark,
    const uint32_t gap,
    const uint64_t data,
    const uint16_t nbits,
    const uint16_t frequency = 38,
    const bool MSBfirst = true,
    const uint16_t repeat = kNoRepeat,
    const uint8_t dutycycle = kDutyDefault,
    const bool GEThomas = true 
    )
    -
    - -

    Generic method for sending Manchester code messages. Will send leading or trailing 0's if the nbits is larger than the number.

    -
    Parameters
    - - - - - - - - - - - - - -
    [in]headermarkNr. of usecs for the led to be pulsed for the header mark. A value of 0 means no header mark.
    [in]headerspaceNr. of usecs for the led to be off after the header mark. A value of 0 means no header space.
    [in]half_periodNr. of uSeconds for half the clock's period. (1/2 wavelength)
    [in]footermarkNr. of usecs for the led to be pulsed for the footer mark. A value of 0 means no footer mark.
    [in]gapMin. nr. of usecs for the led to be off after the footer mark. This is effectively the absolute minimum gap between messages.
    [in]dataThe data to be transmitted.
    [in]nbitsNr. of bits of data to be sent.
    [in]frequencyThe frequency we want to modulate at. (Hz/kHz)
    [in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
    [in]repeatNr. of extra times the message will be sent. e.g. 0 = 1 message sent, 1 = 1 initial + 1 repeat = 2 messages
    [in]dutycyclePercentage duty cycle of the LED. e.g. 25 = 25% = 1/4 on, 3/4 off. If you are not sure, try 50 percent.
    [in]GEThomasUse G.E. Thomas (true/default) or IEEE 802.3 (false).
    -
    -
    -
    Note
    Assumes a frequency < 1000 means kHz otherwise it is in Hz. Most common value is 38000 or 38, for 38kHz.
    - -
    -
    - -

    ◆ sendManchesterData()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendManchesterData (const uint16_t half_period,
    const uint64_t data,
    const uint16_t nbits,
    const bool MSBfirst = true,
    const bool GEThomas = true 
    )
    -
    - -

    Generic method for sending Manchester code data. Will send leading or trailing 0's if the nbits is larger than the number of bits in data.

    -
    Parameters
    - - - - - - -
    [in]half_periodNr. of uSeconds for half the clock's period. (1/2 wavelength)
    [in]dataThe data to be transmitted.
    [in]nbitsNr. of bits of data to be sent.
    [in]MSBfirstFlag for bit transmission order. Defaults to MSB->LSB order.
    [in]GEThomasUse G.E. Thomas (true/default) or IEEE 802.3 (false).
    -
    -
    - -
    -
    - -

    ◆ sendMetz()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMetz (const uint64_t data,
    const uint16_t nbits = kMetzBits,
    const uint16_t repeat = kMetzMinRepeat 
    )
    -
    - -

    Send a Metz formatted message. Status: Beta / Needs testing against a real device.

    -
    Parameters
    - - - - -
    [in]datacontaining the IR command.
    [in]nbitsNr. of bits to send. usually kMetzBits
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMidea()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMidea (uint64_t data,
    uint16_t nbits = kMideaBits,
    uint16_t repeat = kMideaMinRepeat 
    )
    -
    - -

    Send a Midea message Status: Alpha / Needs testing against a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMidea24()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMidea24 (const uint64_t data,
    const uint16_t nbits = kMidea24Bits,
    const uint16_t repeat = kMidea24MinRepeat 
    )
    -
    - -

    Send a Midea24 formatted message. Status: STABLE / Confirmed working on a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1170
    -
    Note
    This protocol is basically a 48-bit version of the NEC protocol with alternate bytes inverted, thus only 24 bits of real data, and with at least a single repeat.
    -
    Warning
    Can't be used beyond 32 bits.
    - -
    -
    - -

    ◆ sendMilestag2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMilestag2 (const uint64_t data,
    const uint16_t nbits = kMilesTag2ShotBits,
    const uint16_t repeat = kMilesMinRepeat 
    )
    -
    - -

    Percentage.

    -

    Send a MilesTag2 formatted Shot/Msg packet. Status: ALPHA / Probably works but needs testing with a real device.

    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMirage()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMirage (const unsigned char data[],
    const uint16_t nbytes = kMirageStateLength,
    const uint16_t repeat = kMirageMinRepeat 
    )
    -
    - -

    Send a Mirage formatted message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - -
    [in]dataAn array of bytes containing the IR command.
    [in]nbytesNr. of bytes of data in the array. (>=kMirageStateLength)
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMitsubishi()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishi (uint64_t data,
    uint16_t nbits = kMitsubishiBits,
    uint16_t repeat = kMitsubishiMinRepeat 
    )
    -
    - -

    Send the supplied Mitsubishi 16-bit message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol appears to have no header.
    -
    See also
    https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Mitsubishi.cpp
    -
    -GlobalCache's Control Tower's Mitsubishi TV data.
    - -
    -
    - -

    ◆ sendMitsubishi112()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishi112 (const unsigned char data[],
    const uint16_t nbytes = kMitsubishi112StateLength,
    const uint16_t repeat = kMitsubishi112MinRepeat 
    )
    -
    - -

    Send a Mitsubishi 112-bit A/C formatted message. (MITSUBISHI112) Status: Stable / Reported as working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/947
    - -
    -
    - -

    ◆ sendMitsubishi136()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishi136 (const unsigned char data[],
    const uint16_t nbytes = kMitsubishi136StateLength,
    const uint16_t repeat = kMitsubishi136MinRepeat 
    )
    -
    - -

    Send a Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: BETA / Probably working. Needs to be tested against a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/888
    - -
    -
    - -

    ◆ sendMitsubishi2()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishi2 (uint64_t data,
    uint16_t nbits = kMitsubishiBits,
    uint16_t repeat = kMitsubishiMinRepeat 
    )
    -
    - -

    Send a supplied second variant Mitsubishi 16-bit message. Status: BETA / Probably works.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Based on a Mitsubishi HC3000 projector's remote. This protocol appears to have a mandatory in-protocol repeat. That is in addition to the entire message needing to be sent twice for the device to accept the command. That is separate from the repeat. i.e. Allegedly, the real remote requires the "Off" button pressed twice. You will need to add a suitable gap yourself.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/441
    - -
    -
    - -

    ◆ sendMitsubishiAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishiAC (const unsigned char data[],
    const uint16_t nbytes = kMitsubishiACStateLength,
    const uint16_t repeat = kMitsubishiACMinRepeat 
    )
    -
    - -

    Send a Mitsubishi 144-bit A/C formatted message. (MITSUBISHI_AC) Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMitsubishiHeavy152()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishiHeavy152 (const unsigned char data[],
    const uint16_t nbytes = kMitsubishiHeavy152StateLength,
    const uint16_t repeat = kMitsubishiHeavy152MinRepeat 
    )
    -
    - -

    Send a MitsubishiHeavy 152-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMitsubishiHeavy88()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMitsubishiHeavy88 (const unsigned char data[],
    const uint16_t nbytes = kMitsubishiHeavy88StateLength,
    const uint16_t repeat = kMitsubishiHeavy88MinRepeat 
    )
    -
    - -

    Send a MitsubishiHeavy 88-bit A/C message. Status: BETA / Appears to be working. Needs testing against a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMultibrackets()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMultibrackets (const uint64_t data,
    const uint16_t nbits = kMultibracketsBits,
    const uint16_t repeat = kMultibracketsDefaultRepeat 
    )
    -
    - -

    Send a Multibrackets formatted message. Status: BETA / Appears to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendMWM()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendMWM (const unsigned char data[],
    const uint16_t nbytes,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a MWM packet/message. Status: Implemented.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol is 2400 bps serial, 1 start bit (mark), 1 stop bit (space), no parity
    - -
    -
    - -

    ◆ sendNEC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendNEC (uint64_t data,
    uint16_t nbits = kNECBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a raw NEC(Renesas) formatted message. Status: STABLE / Known working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol appears to have no header.
    -
    See also
    http://www.sbprojects.net/knowledge/ir/nec.php
    - -
    -
    - -

    ◆ sendNeoclima()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendNeoclima (const unsigned char data[],
    const uint16_t nbytes = kNeoclimaStateLength,
    const uint16_t repeat = kNeoclimaMinRepeat 
    )
    -
    - -

    Send a Neoclima message. Status: STABLE / Known to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendNikai()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendNikai (uint64_t data,
    uint16_t nbits = kNikaiBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Nikai formatted message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendPanasonic()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendPanasonic (const uint16_t address,
    const uint32_t data,
    const uint16_t nbits = kPanasonicBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Panasonic formatted message. Status: STABLE, but DEPRECATED.

    -
    Deprecated:
    This is only for legacy use only, please use sendPanasonic64() instead.
    -
    Parameters
    - - - - - -
    [in]addressThe 16-bit manufacturer code.
    [in]dataThe 32-bit data portion of the message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol is a modified version of Kaseikyo.
    - -
    -
    - -

    ◆ sendPanasonic64()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendPanasonic64 (const uint64_t data,
    const uint16_t nbits = kPanasonicBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Panasonic formatted message. Status: STABLE / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This protocol is a modified version of Kaseikyo.
    -
    -Use this method if you want to send the results of decodePanasonic.
    - -
    -
    - -

    ◆ sendPanasonicAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendPanasonicAC (const unsigned char data[],
    const uint16_t nbytes = kPanasonicAcStateLength,
    const uint16_t repeat = kPanasonicAcDefaultRepeat 
    )
    -
    - -

    Send a Panasonic A/C message. Status: STABLE / Work with real device(s).

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendPanasonicAC32()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendPanasonicAC32 (const uint64_t data,
    const uint16_t nbits = kPanasonicAc32Bits,
    const uint16_t repeat = kPanasonicAcDefaultRepeat 
    )
    -
    - -

    Send a Panasonic AC 32/16bit formatted message. Status: STABLE / Confirmed working.

    -
    Parameters
    - - - - -
    [in]datacontaining the IR command.
    [in]nbitsNr. of bits to send. Usually kPanasonicAc32Bits
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1307
    - -
    -
    - -

    ◆ sendPioneer()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendPioneer (const uint64_t data,
    const uint16_t nbits = kPioneerBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a raw Pioneer formatted message. Status: STABLE / Expected to be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendPronto()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendPronto (uint16_t data[],
    uint16_t len,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Pronto Code formatted message. Status: STABLE / Known working.

    -
    Parameters
    - - - - -
    [in]dataAn array of uint16_t containing the pronto codes.
    [in]lenNr. of entries in the data[] array.
    [in]repeatNr. of times to repeat the message.
    -
    -
    -
    Note
    Pronto codes are typically represented in hexadecimal. You will need to convert the code to an array of integers, and calculate it's length. e.g.
    A Sony 20 bit DVD remote command.
    -
    "0000 0067 0000 0015 0060 0018 0018 0018 0030 0018 0030 0018 0030 0018
    -
    0018 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0030 0018
    -
    0030 0018 0030 0018 0018 0018 0018 0018 0030 0018 0018 0018 0018 0018
    -
    0030 0018 0018 03f6"
    -
    converts to:
    uint16_t prontoCode[46] = {
    -
    0x0000, 0x0067, 0x0000, 0x0015,
    -
    0x0060, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0030, 0x0018,
    -
    0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018,
    -
    0x0018, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018,
    -
    0x0030, 0x0018, 0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
    -
    0x0030, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0030, 0x0018,
    -
    0x0018, 0x03f6};
    -
    // Send the Pronto(Sony) code. Repeat twice as Sony's require that.
    -
    sendPronto(prontoCode, 46, kSonyMinRepeat);
    -
    -
    See also
    http://www.etcwiki.org/wiki/Pronto_Infrared_Format
    -
    -http://www.remotecentral.com/features/irdisp2.htm
    - -
    -
    - -

    ◆ sendRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendRaw (const uint16_t buf[],
    const uint16_t len,
    const uint16_t hz 
    )
    -
    - -

    Send a raw IRremote message.

    -
    Parameters
    - - - - -
    [in]bufAn array of uint16_t's that has microseconds elements.
    [in]lenNr. of elements in the buf[] array.
    [in]hzFrequency to send the message at. (kHz < 1000; Hz >= 1000)
    -
    -
    -
    Note
    Even elements are Mark times (On), Odd elements are Space times (Off). Ref: examples/IRrecvDumpV2/IRrecvDumpV2.ino (or later)
    - -
    -
    - -

    ◆ sendRC5()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendRC5 (const uint64_t data,
    uint16_t nbits = kRC5XBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Philips RC-5/RC-5X packet. Status: RC-5 (stable), RC-5X (alpha)

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Caller needs to take care of flipping the toggle bit. That bit differentiates between key press & key release. For RC-5 it is the MSB of the data. For RC-5X it is the 2nd MSB of the data.
    -
    Todo:
    Testing of the RC-5X components.
    - -
    -
    - -

    ◆ sendRC6()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendRC6 (const uint64_t data,
    const uint16_t nbits = kRC6Mode0Bits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Philips RC-6 packet. Status: Stable.

    -
    Note
    Caller needs to take care of flipping the toggle bit (The 4th Most Significant Bit). That bit differentiates between key press & key release.
    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendRCMM()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendRCMM (uint64_t data,
    uint16_t nbits = kRCMMBits,
    uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Philips RC-MM packet. Status: STABLE / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendSAMSUNG()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSAMSUNG (const uint64_t data,
    const uint16_t nbits = kSamsungBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a 32-bit Samsung formatted message. Status: STABLE / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    http://elektrolab.wz.cz/katalog/samsung_protocol.pdf
    -
    Note
    Samsung has a separate message to indicate a repeat, like NEC does.
    -
    Todo:
    Confirm that is actually how Samsung sends a repeat. The refdoc doesn't indicate it is true.
    - -
    -
    - -

    ◆ sendSamsung36()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSamsung36 (const uint64_t data,
    const uint16_t nbits = kSamsung36Bits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Samsung 36-bit formatted message. Status: STABLE / Works on real devices.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/621
    - -
    -
    - -

    ◆ sendSamsungAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSamsungAC (const unsigned char data[],
    const uint16_t nbytes = kSamsungAcStateLength,
    const uint16_t repeat = kSamsungAcDefaultRepeat 
    )
    -
    - -

    Send a Samsung A/C message. Status: Stable / Known working.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/505
    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendSanyoAc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSanyoAc (const uint8_t * data,
    const uint16_t nbytes = kSanyoAcStateLength,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a SanyoAc formatted message. Status: STABLE / Reported as working.

    -
    Parameters
    - - - - -
    [in]dataAn array of bytes containing the IR command.
    [in]nbytesNr. of bytes of data in the array.
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1211
    - -
    -
    - -

    ◆ sendSanyoLC7461()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSanyoLC7461 (const uint64_t data,
    const uint16_t nbits = kSanyoLC7461Bits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Sanyo LC7461 message. Status: BETA / Probably works.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Based on @marcosamarinho's work. This protocol uses the NEC protocol timings. However, data is formatted as : address(13 bits), !address, command (8 bits), !command. According with LIRC, this protocol is used on Sanyo, Aiwa and Chinon Information for this protocol is available at the Sanyo LC7461 datasheet. Repeats are performed similar to the NEC method of sending a special repeat message, rather than duplicating the entire message.
    -
    See also
    https://github.com/marcosamarinho/IRremoteESP8266/blob/master/ir_Sanyo.cpp
    -
    -http://pdf.datasheetcatalog.com/datasheet/sanyo/LC7461.pdf
    - -
    -
    - -

    ◆ sendSharp()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSharp (const uint16_t address,
    const uint16_t command,
    const uint16_t nbits = kSharpBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Sharp message Status: DEPRECATED / Previously working fine.

    -
    Deprecated:
    Only use this if you are using legacy from the original Arduino-IRremote library. 99% of the time, you will want to use sendSharpRaw() instead
    -
    Parameters
    - - - - - -
    [in]addressAddress value to be sent.
    [in]commandCommand value to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    This procedure has a non-standard invocation style compared to similar sendProtocol() routines. This is due to legacy, compatibility, & historic reasons. Normally the calling syntax version is like sendSharpRaw(). This procedure transmits the address & command in MSB first order, which is incorrect. This behaviour is left as-is to maintain backward compatibility with legacy code. In short, you should use sendSharpRaw(), encodeSharp(), and the correct values of address & command instead of using this, & the wrong values.
    - -
    -
    - -

    ◆ sendSharpAc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSharpAc (const unsigned char data[],
    const uint16_t nbytes = kSharpAcStateLength,
    const uint16_t repeat = kSharpAcDefaultRepeat 
    )
    -
    - -

    Send a Sharp A/C message. Status: Alpha / Untested.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/638
    -
    -https://github.com/ToniA/arduino-heatpumpir/blob/master/SharpHeatpumpIR.cpp
    - -
    -
    - -

    ◆ sendSharpRaw()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSharpRaw (const uint64_t data,
    const uint16_t nbits = kSharpBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a (raw) Sharp message.

    -
    Note
    Status: STABLE / Working fine.
    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    his procedure handles the inversion of bits required per protocol. The protocol spec says to send the LSB first, but legacy code & usage has us sending the MSB first. Grrrr. Normal invocation of encodeSharp() handles this for you, assuming you are using the correct/standard values. e.g. sendSharpRaw(encodeSharp(address, command));
    - -
    -
    - -

    ◆ sendSherwood()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSherwood (uint64_t data,
    uint16_t nbits = kSherwoodBits,
    uint16_t repeat = kSherwoodMinRepeat 
    )
    -
    - -

    Send an IR command to a Sherwood device. Status: STABLE / Known working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    Sherwood remote codes appear to be NEC codes with a mandatory repeat code. i.e. repeat should be >= kSherwoodMinRepeat (1).
    - -
    -
    - -

    ◆ sendSony()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSony (const uint64_t data,
    const uint16_t nbits = kSony20Bits,
    const uint16_t repeat = kSonyMinRepeat 
    )
    -
    - -

    Send a standard Sony/SIRC(Serial Infra-Red Control) message. (40kHz) Status: STABLE / Known working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    sendSony() should typically be called with repeat=2 as Sony devices expect the message to be sent at least 3 times.
    - -
    -
    - -

    ◆ sendSony38()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSony38 (const uint64_t data,
    const uint16_t nbits = kSony20Bits,
    const uint16_t repeat = kSonyMinRepeat + 1 
    )
    -
    - -

    Send an alternative 38kHz Sony/SIRC(Serial Infra-Red Control) message. Status: STABLE / Known working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    Note
    sendSony38() should typically be called with repeat=3 as these Sony devices expect the message to be sent at least 4 times.
    -
    Warning
    Messages send via this method will be detected by this library as just SONY, not SONY_38K as the library has no way to determine the modulation frequency used. Hence, there is no decodeSony38().
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1018
    - -
    -
    - -

    ◆ sendSymphony()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendSymphony (uint64_t data,
    uint16_t nbits = kSymphonyBits,
    uint16_t repeat = kSymphonyDefaultRepeat 
    )
    -
    - -

    Send a Symphony packet. Status: STABLE / Should be working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTcl112Ac()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTcl112Ac (const unsigned char data[],
    const uint16_t nbytes = kTcl112AcStateLength,
    const uint16_t repeat = kTcl112AcDefaultRepeat 
    )
    -
    - -

    Send a TCL 112-bit A/C message. Status: Beta / Probably working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTechnibelAc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTechnibelAc (uint64_t data,
    uint16_t nbits = kTechnibelAcBits,
    uint16_t repeat = kTechnibelAcDefaultRepeat 
    )
    -
    - -

    Send an Technibel AC formatted message. Status: STABLE / Reported as working on a real device.

    -
    Parameters
    - - - - -
    [in]datacontaining the IR command.
    [in]nbitsNr. of bits to send. usually kTechnibelAcBits
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTeco()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTeco (const uint64_t data,
    const uint16_t nbits = kTecoBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Teco A/C message. Status: Beta / Probably working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTeknopoint()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTeknopoint (const unsigned char data[],
    const uint16_t nbytes = kTeknopointStateLength,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Teknopoint formatted message. Status: BETA / Probably works.

    -
    Parameters
    - - - - -
    [in]dataAn array of bytes containing the IR command.
    [in]nbytesNr. of bytes of data in the array.
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendToshibaAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendToshibaAC (const uint8_t data[],
    const uint16_t nbytes = kToshibaACStateLength,
    const uint16_t repeat = kToshibaACMinRepeat 
    )
    -
    - -

    Send a Toshiba A/C message. Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTranscold()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTranscold (const uint64_t data,
    const uint16_t nbits = kTranscoldBits,
    const uint16_t repeat = kTranscoldDefaultRepeat 
    )
    -
    - -

    Send a Transcold message Status: STABLE / Confirmed Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTrotec()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTrotec (const unsigned char data[],
    const uint16_t nbytes = kTrotecStateLength,
    const uint16_t repeat = kTrotecDefaultRepeat 
    )
    -
    - -

    Send a Trotec message. Status: Beta / Probably Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendTruma()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendTruma (const uint64_t data,
    const uint16_t nbits = kTrumaBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Truma formatted message. Status: STABLE / Confirmed working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe bit size of the message being sent.
    [in]repeatThe number of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendVestelAc()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendVestelAc (const uint64_t data,
    const uint16_t nbits = kVestelAcBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Vestel message Status: STABLE / Working.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendVoltas()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendVoltas (const unsigned char data[],
    const uint16_t nbytes = kVoltasStateLength,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Voltas formatted message. Status: STABLE / Working on real device.

    -
    Parameters
    - - - - -
    [in]dataAn array of bytes containing the IR command. It is assumed to be in MSB order for this code. e.g.
    uint8_t data[kVoltasStateLength] = {0x33, 0x28, 0x88, 0x1A, 0x3B, 0x3B,
    -
    0x3B, 0x11, 0x00, 0x40};
    -
    [in]nbytesNr. of bytes of data in the array. (>=kVoltasStateLength)
    [in]repeatNr. of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendWhirlpoolAC()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendWhirlpoolAC (const unsigned char data[],
    const uint16_t nbytes = kWhirlpoolAcStateLength,
    const uint16_t repeat = kWhirlpoolAcDefaultRepeat 
    )
    -
    - -

    Send a Whirlpool A/C message. Status: BETA / Probably works.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbytesThe number of bytes of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendWhynter()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendWhynter (const uint64_t data,
    const uint16_t nbits = kWhynterBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a Whynter message. Status: STABLE.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    -
    See also
    https://github.com/z3t0/Arduino-IRremote/blob/master/ir_Whynter.cpp
    - -
    -
    - -

    ◆ sendXmp()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendXmp (const uint64_t data,
    const uint16_t nbits = kXmpBits,
    const uint16_t repeat = kNoRepeat 
    )
    -
    - -

    Send a XMP packet. Status: Beta / Untested against a real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe number of bits of message to be sent.
    [in]repeatThe number of times the command is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ sendZepeal()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void IRsend::sendZepeal (const uint64_t data,
    const uint16_t nbits = kZepealBits,
    const uint16_t repeat = kZepealMinRepeat 
    )
    -
    - -

    Send a Zepeal formatted message. Status: STABLE / Works on real device.

    -
    Parameters
    - - - - -
    [in]dataThe message to be sent.
    [in]nbitsThe bit size of the message being sent.
    [in]repeatThe number of times the message is to be repeated.
    -
    -
    - -
    -
    - -

    ◆ space()

    - -
    -
    - - - - - - - - -
    void IRsend::space (uint32_t time)
    -
    - -

    Turn the pin (LED) off for a given time. Sends an IR space for the specified number of microseconds. A space is no output, so the PWM output is disabled.

    -
    Parameters
    - - -
    [in]timeTime in microseconds (us).
    -
    -
    - -
    -
    - -

    ◆ toggleRC5()

    - -
    -
    - - - - - - - - -
    uint64_t IRsend::toggleRC5 (const uint64_t data)
    -
    - -

    Flip the toggle bit of a Philips RC-5/RC-5X data message. Used to indicate a change of remote button's state. Status: STABLE.

    -
    Parameters
    - - -
    [in]dataThe existing RC-5/RC-5X message.
    -
    -
    -
    Returns
    A data message suitable for use in sendRC5() with the toggle bit flipped.
    - -
    -
    - -

    ◆ toggleRC6()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint64_t IRsend::toggleRC6 (const uint64_t data,
    const uint16_t nbits = kRC6Mode0Bits 
    )
    -
    - -

    Flip the toggle bit of a Philips RC-6 data message. Used to indicate a change of remote button's state. Status: STABLE / Should work fine.

    -
    Parameters
    - - - -
    [in]dataThe existing RC-6 message.
    [in]nbitsNr. of bits in the RC-6 protocol.
    -
    -
    -
    Returns
    A data message suitable for use in sendRC6() with the toggle bit flipped.
    -
    Note
    For RC-6 (20-bits), it is the 17th least significant bit.
    -
    -For RC-6 (36-bits/Xbox-360), it is the 16th least significant bit.
    - -
    -
    -

    Member Data Documentation

    - -

    ◆ _dutycycle

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRsend::_dutycycle
    -
    -private
    -
    - -
    -
    - -

    ◆ _freq_unittest

    - -
    -
    - - - - - -
    - - - - -
    uint32_t IRsend::_freq_unittest
    -
    -private
    -
    - -
    -
    - -

    ◆ IRpin

    - -
    -
    - - - - - -
    - - - - -
    uint16_t IRsend::IRpin
    -
    -private
    -
    - -
    -
    - -

    ◆ modulation

    - -
    -
    - - - - - -
    - - - - -
    bool IRsend::modulation
    -
    -private
    -
    - -
    -
    - -

    ◆ offTimePeriod

    - -
    -
    - - - - - -
    - - - - -
    uint16_t IRsend::offTimePeriod
    -
    -private
    -
    - -
    -
    - -

    ◆ onTimePeriod

    - -
    -
    - - - - - -
    - - - - -
    uint16_t IRsend::onTimePeriod
    -
    -private
    -
    - -
    -
    - -

    ◆ outputOff

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRsend::outputOff
    -
    -protected
    -
    - -
    -
    - -

    ◆ outputOn

    - -
    -
    - - - - - -
    - - - - -
    uint8_t IRsend::outputOn
    -
    -protected
    -
    - -
    -
    - -

    ◆ periodOffset

    - -
    -
    - - - - - -
    - - - - -
    int8_t IRsend::periodOffset
    -
    -private
    -
    - -
    -
    -
    The documentation for this class was generated from the following files: -
    -
    void sendPronto(uint16_t data[], uint16_t len, uint16_t repeat=kNoRepeat)
    Send a Pronto Code formatted message. Status: STABLE / Known working.
    Definition: ir_Pronto.cpp:56
    -
    const uint16_t kVoltasStateLength
    Definition: IRremoteESP8266.h:1165
    -
    const uint16_t kCoronaAcStateLength
    Definition: IRremoteESP8266.h:957
    -
    const uint16_t kSonyMinRepeat
    Definition: IRremoteESP8266.h:1133
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer-members.html deleted file mode 100644 index b1603a411..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    IRtimer Member List
    -
    -
    - -

    This is the complete list of members for IRtimer, including all inherited members.

    - - - - - - -
    add(uint32_t usecs)IRtimerstatic
    elapsed()IRtimer
    IRtimer()IRtimer
    reset()IRtimer
    startIRtimerprivate
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer.html deleted file mode 100644 index 8f782747f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classIRtimer.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - -IRremoteESP8266: IRtimer Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    This class offers a simple counter in micro-seconds since instantiated. - More...

    - -

    #include <IRtimer.h>

    - - - - - - - - - - - -

    -Public Member Functions

     IRtimer ()
     Class constructor. More...
     
    void reset ()
     Resets the IRtimer object. I.e. The counter starts again from now. More...
     
    uint32_t elapsed ()
     Calculate how many microseconds have elapsed since the timer was started. More...
     
    - - - - -

    -Static Public Member Functions

    static void add (uint32_t usecs)
     Add time to the timer to simulate elapsed time. More...
     
    - - - - -

    -Private Attributes

    uint32_t start
     Time in uSeconds when the class was instantiated/reset. More...
     
    -

    Detailed Description

    -

    This class offers a simple counter in micro-seconds since instantiated.

    -
    Note
    Handles when the system timer wraps around (once).
    -

    Constructor & Destructor Documentation

    - -

    ◆ IRtimer()

    - -
    -
    - - - - - - - -
    IRtimer::IRtimer ()
    -
    - -

    Class constructor.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ add()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void IRtimer::add (uint32_t usecs)
    -
    -static
    -
    - -

    Add time to the timer to simulate elapsed time.

    -
    Parameters
    - - -
    [in]usecsNr. of uSeconds to be added.
    -
    -
    -
    Note
    Only used in unit testing.
    - -
    -
    - -

    ◆ elapsed()

    - -
    -
    - - - - - - - -
    uint32_t IRtimer::elapsed ()
    -
    - -

    Calculate how many microseconds have elapsed since the timer was started.

    -
    Returns
    Nr. of microseconds.
    - -
    -
    - -

    ◆ reset()

    - -
    -
    - - - - - - - -
    void IRtimer::reset ()
    -
    - -

    Resets the IRtimer object. I.e. The counter starts again from now.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ start

    - -
    -
    - - - - - -
    - - - - -
    uint32_t IRtimer::start
    -
    -private
    -
    - -

    Time in uSeconds when the class was instantiated/reset.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs-members.html deleted file mode 100644 index 63f0f8ba0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs-members.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    TimerMs Member List
    -
    -
    - -

    This is the complete list of members for TimerMs, including all inherited members.

    - - - - - - -
    add(uint32_t msecs)TimerMsstatic
    elapsed()TimerMs
    reset()TimerMs
    startTimerMsprivate
    TimerMs()TimerMs
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs.html deleted file mode 100644 index a1be323bd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classTimerMs.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - -IRremoteESP8266: TimerMs Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    - -
    - -

    This class offers a simple counter in milli-seconds since instantiated. - More...

    - -

    #include <IRtimer.h>

    - - - - - - - - - - - -

    -Public Member Functions

     TimerMs ()
     Class constructor. More...
     
    void reset ()
     Resets the TimerMs object. I.e. The counter starts again from now. More...
     
    uint32_t elapsed ()
     Calculate how many milliseconds have elapsed since the timer was started. More...
     
    - - - - -

    -Static Public Member Functions

    static void add (uint32_t msecs)
     Add time to the timer to simulate elapsed time. More...
     
    - - - - -

    -Private Attributes

    uint32_t start
     Time in mSeconds when the class was instantiated/reset. More...
     
    -

    Detailed Description

    -

    This class offers a simple counter in milli-seconds since instantiated.

    -
    Note
    Handles when the system timer wraps around (once).
    -

    Constructor & Destructor Documentation

    - -

    ◆ TimerMs()

    - -
    -
    - - - - - - - -
    TimerMs::TimerMs ()
    -
    - -

    Class constructor.

    - -
    -
    -

    Member Function Documentation

    - -

    ◆ add()

    - -
    -
    - - - - - -
    - - - - - - - - -
    void TimerMs::add (uint32_t msecs)
    -
    -static
    -
    - -

    Add time to the timer to simulate elapsed time.

    -
    Parameters
    - - -
    [in]msecsNr. of mSeconds to be added.
    -
    -
    -
    Note
    Only used in unit testing.
    - -
    -
    - -

    ◆ elapsed()

    - -
    -
    - - - - - - - -
    uint32_t TimerMs::elapsed ()
    -
    - -

    Calculate how many milliseconds have elapsed since the timer was started.

    -
    Returns
    Nr. of milliseconds.
    - -
    -
    - -

    ◆ reset()

    - -
    -
    - - - - - - - -
    void TimerMs::reset ()
    -
    - -

    Resets the TimerMs object. I.e. The counter starts again from now.

    - -
    -
    -

    Member Data Documentation

    - -

    ◆ start

    - -
    -
    - - - - - -
    - - - - -
    uint32_t TimerMs::start
    -
    -private
    -
    - -

    Time in mSeconds when the class was instantiated/reset.

    - -
    -
    -
    The documentation for this class was generated from the following files: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results-members.html deleted file mode 100644 index 5939b876d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    decode_results Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results.html deleted file mode 100644 index 34c53a726..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classdecode__results.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - -IRremoteESP8266: decode_results Class Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    decode_results Class Reference
    -
    -
    - -

    Results returned from the decoder. - More...

    - -

    #include <IRrecv.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    decode_type_t decode_type
     
    union {
       struct {
          uint64_t   value
     
          uint32_t   address
     
          uint32_t   command
     
       } 
     
       uint8_t   state [kStateSizeMax]
     
    }; 
     
    uint16_t bits
     
    volatile uint16_t * rawbuf
     
    uint16_t rawlen
     
    bool overflow
     
    bool repeat
     
    -

    Detailed Description

    -

    Results returned from the decoder.

    -

    Member Data Documentation

    - -

    ◆ @111

    - -
    -
    - - - - -
    union { ... }
    -
    - -
    -
    - -

    ◆ address

    - -
    -
    - - - - -
    uint32_t decode_results::address
    -
    - -
    -
    - -

    ◆ bits

    - -
    -
    - - - - -
    uint16_t decode_results::bits
    -
    - -
    -
    - -

    ◆ command

    - -
    -
    - - - - -
    uint32_t decode_results::command
    -
    - -
    -
    - -

    ◆ decode_type

    - -
    -
    - - - - -
    decode_type_t decode_results::decode_type
    -
    - -
    -
    - -

    ◆ overflow

    - -
    -
    - - - - -
    bool decode_results::overflow
    -
    - -
    -
    - -

    ◆ rawbuf

    - -
    -
    - - - - -
    volatile uint16_t* decode_results::rawbuf
    -
    - -
    -
    - -

    ◆ rawlen

    - -
    -
    - - - - -
    uint16_t decode_results::rawlen
    -
    - -
    -
    - -

    ◆ repeat

    - -
    -
    - - - - -
    bool decode_results::repeat
    -
    - -
    -
    - -

    ◆ state

    - -
    -
    - - - - -
    uint8_t decode_results::state[kStateSizeMax]
    -
    - -
    -
    - -

    ◆ value

    - -
    -
    - - - - -
    uint64_t decode_results::value
    -
    - -
    -
    -
    The documentation for this class was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classes.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classes.html deleted file mode 100644 index ade6718d6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/classes.html +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Index - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Class Index
    -
    -
    -
    a | c | d | e | f | g | h | i | k | l | m | n | p | s | t | v | w
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      a  
    -
      g  
    -
    IRElectraAc   IRTechnibelAc   
      p  
    -
    IRFujitsuAC   IRTecoAc   
    AirwellProtocol   GoodweatherProtocol   IRGoodweatherAc   IRtimer   PanasonicAc32Protocol   
    AmcorProtocol   GreeProtocol   IRGreeAC   IRToshibaAC   
      s  
    -
    ArgoProtocol   
      h  
    -
    IRHaierAC   IRTranscoldAc   
      c  
    -
    IRHaierACYRW02   IRTrotecESP   SamsungProtocol   
    HaierProtocol   IRHitachiAc   IRTrumaAc   SanyoProtocol   
    CarrierProtocol   HaierYRW02Protocol   IRHitachiAc1   IRVestelAc   SharpProtocol   
    CoolixProtocol   Hitachi1Protocol   IRHitachiAc3   IRVoltas   state_t (stdAc)   
    CoronaProtocol   Hitachi424Protocol   IRHitachiAc344   IRWhirlpoolAc   
      t  
    -
    CoronaSection   HitachiProtocol   IRHitachiAc424   
      k  
    -
      d  
    -
      i  
    -
    IRKelonAc   Tcl112Protocol   
    IRKelvinatorAC   KelonProtocol   TechnibelProtocol   
    Daikin128Protocol   IRac   IRLgAc   KelvinatorProtocol   TecoProtocol   
    Daikin152Protocol   IRAirwellAc   IRMideaAC   
      l  
    -
    TimerMs   
    Daikin160Protocol   IRAmcorAc   IRMitsubishi112   ToshibaProtocol   
    Daikin176Protocol   IRArgoAC   IRMitsubishi136   LGProtocol   TranscoldProtocol   
    Daikin216Protocol   IRCarrierAc64   IRMitsubishiAC   
      m  
    -
    TrotecProtocol   
    Daikin2Protocol   IRCoolixAC   IRMitsubishiHeavy152Ac   TrumaProtocol   
    Daikin64Protocol   IRCoronaAc   IRMitsubishiHeavy88Ac   magiquest   
      v  
    -
    DaikinESPProtocol   IRDaikin128   IRNeoclimaAc   match_result_t   
    decode_results   IRDaikin152   IRPanasonicAc   MideaProtocol   VestelProtocol   
    DelonghiProtocol   IRDaikin160   IRPanasonicAc32   Mitsubishi112Protocol   VoltasProtocol   
      e  
    -
    IRDaikin176   irparams_t   Mitsubishi136Protocol   
      w  
    -
    IRDaikin2   IRrecv   Mitsubishi144Protocol   
    EcoclimProtocol   IRDaikin216   IRSamsungAc   Mitsubishi152Protocol   WhirlpoolProtocol   
    ElectraProtocol   IRDaikin64   IRSanyoAc   Mitsubishi88Protocol   
      f  
    -
    IRDaikinESP   IRsend   
      n  
    -
    IRDelonghiAc   IRSharpAc   
    FujitsuProtocol   IREcoclimAc   IRTcl112Ac   NeoclimaProtocol   
    -
    a | c | d | e | f | g | h | i | k | l | m | n | p | s | t | v | w
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/closed.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h.html deleted file mode 100644 index d0cada931..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/de-CH.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    de-CH.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h_source.html deleted file mode 100644 index 8ad5119f2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-CH_8h_source.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/de-CH.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    de-CH.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - Martin (@finfinack)
    -
    2 // Locale/language file for German / Switzerland.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_DE_CH_H_
    -
    5 #define LOCALE_DE_CH_H_
    -
    6 
    -
    7 // Import German / Germany as default overrides.
    -
    8 #include "locale/de-DE.h"
    -
    9 
    -
    10 // As we have loaded another language, we need to #undef anything we need
    -
    11 // to update/change.
    -
    12 
    -
    13 #undef D_STR_ON
    -
    14 #define D_STR_ON "Ii"
    -
    15 #undef D_STR_OFF
    -
    16 #define D_STR_OFF "Us"
    -
    17 #undef D_STR_TOGGLE
    -
    18 #define D_STR_TOGGLE "Umschalte"
    -
    19 #undef D_STR_SLEEP
    -
    20 #define D_STR_SLEEP "Schlafe"
    -
    21 #undef D_STR_LIGHT
    -
    22 #define D_STR_LIGHT "Liecht"
    -
    23 #undef D_STR_POWERFUL
    -
    24 #define D_STR_POWERFUL "Starch"
    -
    25 #undef D_STR_QUIET
    -
    26 #define D_STR_QUIET "Liislig"
    -
    27 #undef D_STR_CLEAN
    -
    28 #define D_STR_CLEAN "Reinige"
    -
    29 #undef D_STR_PURIFY
    -
    30 #define D_STR_PURIFY "Frische"
    -
    31 #undef D_STR_HEALTH
    -
    32 #define D_STR_HEALTH "Gsundheit"
    -
    33 #undef D_STR_HUMID
    -
    34 #define D_STR_HUMID "Füecht"
    -
    35 #undef D_STR_SAVE
    -
    36 #define D_STR_SAVE "Speichere"
    -
    37 #undef D_STR_EYE
    -
    38 #define D_STR_EYE "Aug"
    -
    39 #undef D_STR_FOLLOW
    -
    40 #define D_STR_FOLLOW "Folge"
    -
    41 #undef D_STR_HOLD
    -
    42 #define D_STR_HOLD "Halte"
    -
    43 #undef D_STR_BUTTON
    -
    44 #define D_STR_BUTTON "Chnopf"
    -
    45 #undef D_STR_UP
    -
    46 #define D_STR_UP "Ufe"
    -
    47 #undef D_STR_TEMPUP
    -
    48 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
    -
    49 #undef D_STR_DOWN
    -
    50 #define D_STR_DOWN "Abe"
    -
    51 #undef D_STR_TEMPDOWN
    -
    52 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
    -
    53 #undef D_STR_CHANGE
    -
    54 #define D_STR_CHANGE "Wechsele"
    -
    55 #undef D_STR_MOVE
    -
    56 #define D_STR_MOVE "Verschiebe"
    -
    57 #undef D_STR_SET
    -
    58 #define D_STR_SET "Setze"
    -
    59 #undef D_STR_CANCEL
    -
    60 #define D_STR_CANCEL "Abbreche"
    -
    61 #undef D_STR_WEEKLY
    -
    62 #define D_STR_WEEKLY "Wüchentlich"
    -
    63 #undef D_STR_WEEKLYTIMER
    -
    64 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
    -
    65 #undef D_STR_OUTSIDE
    -
    66 #define D_STR_OUTSIDE "Dusse"
    -
    67 #undef D_STR_LOUD
    -
    68 #define D_STR_LOUD "Luut"
    -
    69 #undef D_STR_UPPER
    -
    70 #define D_STR_UPPER "Obe"
    -
    71 #undef D_STR_LOWER
    -
    72 #define D_STR_LOWER "Une"
    -
    73 #undef D_STR_CIRCULATE
    -
    74 #define D_STR_CIRCULATE "Zirkuliere"
    -
    75 #undef D_STR_CEILING
    -
    76 #define D_STR_CEILING "Decki"
    -
    77 #undef D_STR_6THSENSE
    -
    78 #define D_STR_6THSENSE "6te Sinn"
    -
    79 
    -
    80 #undef D_STR_COOL
    -
    81 #define D_STR_COOL "Chüehle"
    -
    82 #undef D_STR_HEAT
    -
    83 #define D_STR_HEAT "Heize"
    -
    84 #undef D_STR_DRY
    -
    85 #define D_STR_DRY "Tröchne"
    -
    86 
    -
    87 #undef D_STR_MED
    -
    88 #define D_STR_MED "Mit"
    -
    89 #undef D_STR_MEDIUM
    -
    90 #define D_STR_MEDIUM "Mittel"
    -
    91 
    -
    92 #undef D_STR_HIGHEST
    -
    93 #define D_STR_HIGHEST "Höchscht"
    -
    94 #undef D_STR_HIGH
    -
    95 #define D_STR_HIGH "Höch"
    -
    96 #undef D_STR_HI
    -
    97 #define D_STR_HI "H"
    -
    98 #undef D_STR_MID
    -
    99 #define D_STR_MID "M"
    -
    100 #undef D_STR_MIDDLE
    -
    101 #define D_STR_MIDDLE "Mittel"
    -
    102 #undef D_STR_LOW
    -
    103 #define D_STR_LOW "Tüüf"
    -
    104 #undef D_STR_LO
    -
    105 #define D_STR_LO "T"
    -
    106 #undef D_STR_LOWEST
    -
    107 #define D_STR_LOWEST "Tüfschte"
    -
    108 #undef D_STR_MAXRIGHT
    -
    109 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
    -
    110 #undef D_STR_RIGHTMAX_NOSPACE
    -
    111 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
    -
    112 #undef D_STR_MAXLEFT
    -
    113 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
    -
    114 #undef D_STR_LEFTMAX_NOSPACE
    -
    115 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
    -
    116 #undef D_STR_CENTRE
    -
    117 #define D_STR_CENTRE "Mitti"
    -
    118 #undef D_STR_TOP
    -
    119 #define D_STR_TOP "Obe"
    -
    120 #undef D_STR_BOTTOM
    -
    121 #define D_STR_BOTTOM "Une"
    -
    122 
    -
    123 #undef D_STR_DAY
    -
    124 #define D_STR_DAY "Tag"
    -
    125 #undef D_STR_DAYS
    -
    126 #define D_STR_DAYS "Täg"
    -
    127 #undef D_STR_HOUR
    -
    128 #define D_STR_HOUR "Stund"
    -
    129 #undef D_STR_HOURS
    -
    130 #define D_STR_HOURS D_STR_HOUR "e"
    -
    131 #undef D_STR_MINUTE
    -
    132 #define D_STR_MINUTE "Minute"
    -
    133 #undef D_STR_MINUTES
    -
    134 #define D_STR_MINUTES D_STR_MINUTE
    -
    135 #undef D_STR_SECONDS
    -
    136 #define D_STR_SECONDS D_STR_SECOND
    -
    137 #undef D_STR_NOW
    -
    138 #define D_STR_NOW "Jetz"
    -
    139 
    -
    140 #undef D_STR_NO
    -
    141 #define D_STR_NO "Nei"
    -
    142 
    -
    143 #undef D_STR_REPEAT
    -
    144 #define D_STR_REPEAT "Wiederhole"
    -
    145 
    -
    146 // IRrecvDumpV2+
    -
    147 #undef D_STR_TIMESTAMP
    -
    148 #define D_STR_TIMESTAMP "Ziitstämpfel"
    -
    149 #undef D_STR_IRRECVDUMP_STARTUP
    -
    150 #define D_STR_IRRECVDUMP_STARTUP \
    -
    151  "IRrecvDump lauft und wartet uf IR Iigab ufem Pin %d"
    -
    152 #undef D_WARN_BUFFERFULL
    -
    153 #define D_WARN_BUFFERFULL \
    -
    154  "WARNUNG: IR Code isch zgross für de Buffer (>= %d). " \
    -
    155  "Dem Resultat sött mer nöd vertraue bevor das behobe isch. " \
    -
    156  "Bearbeite & vergrössere `kCaptureBufferSize`."
    -
    157 
    -
    158 #endif // LOCALE_DE_CH_H_
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h.html deleted file mode 100644 index 2b94c27ea..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/de-DE.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    de-DE.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h_source.html deleted file mode 100644 index a166e9d12..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/de-DE_8h_source.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/de-DE.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    de-DE.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - Martin (@finfinack)
    -
    2 // Locale/language file for German / Germany.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_DE_DE_H_
    -
    5 #define LOCALE_DE_DE_H_
    -
    6 
    -
    7 #define D_STR_UNKNOWN "UNBEKANNT"
    -
    8 #define D_STR_PROTOCOL "Protokoll"
    -
    9 #define D_STR_ON "Ein"
    -
    10 #define D_STR_OFF "Aus"
    -
    11 #define D_STR_MODE "Modus"
    -
    12 #define D_STR_TOGGLE "Umschalten"
    -
    13 #define D_STR_SLEEP "Schlafen"
    -
    14 #define D_STR_LIGHT "Licht"
    -
    15 #define D_STR_POWERFUL "Stark"
    -
    16 #define D_STR_QUIET "Ruhig"
    -
    17 #define D_STR_ECONO "Eco"
    -
    18 #define D_STR_BEEP "Piep"
    -
    19 #define D_STR_MOULD "Schimmel"
    -
    20 #define D_STR_CLEAN "Reinigen"
    -
    21 #define D_STR_PURIFY "Frischen"
    -
    22 #define D_STR_TIMER "Timer"
    -
    23 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
    -
    24 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
    -
    25 #define D_STR_CLOCK "Uhr"
    -
    26 #define D_STR_COMMAND "Befehl"
    -
    27 #define D_STR_HEALTH "Gesundheit"
    -
    28 #define D_STR_TEMP "Temp"
    -
    29 #define D_STR_HUMID "Feucht"
    -
    30 #define D_STR_SAVE "Speichern"
    -
    31 #define D_STR_EYE "Auge"
    -
    32 #define D_STR_FOLLOW "Folgen"
    -
    33 #define D_STR_FRESH "Frisch"
    -
    34 #define D_STR_HOLD "Halten"
    -
    35 #define D_STR_BUTTON "Knopf"
    -
    36 #define D_STR_NIGHT "Nacht"
    -
    37 #define D_STR_SILENT "Ruhig"
    -
    38 #define D_STR_UP "Hinauf"
    -
    39 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
    -
    40 #define D_STR_DOWN "Hinunter"
    -
    41 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
    -
    42 #define D_STR_CHANGE "Wechseln"
    -
    43 #define D_STR_MOVE "Verschieben"
    -
    44 #define D_STR_SET "Setzen"
    -
    45 #define D_STR_CANCEL "Abbrechen"
    -
    46 #define D_STR_COMFORT "Komfort"
    -
    47 #define D_STR_WEEKLY "Wöchentlich"
    -
    48 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
    -
    49 #define D_STR_FAST "Schnell"
    -
    50 #define D_STR_SLOW "Langsam"
    -
    51 #define D_STR_AIRFLOW "Luftzug"
    -
    52 #define D_STR_STEP "Schritt"
    -
    53 #define D_STR_NA "N/A"
    -
    54 #define D_STR_OUTSIDE "Draussen"
    -
    55 #define D_STR_LOUD "Laut"
    -
    56 #define D_STR_UPPER "Oben"
    -
    57 #define D_STR_LOWER "Unten"
    -
    58 #define D_STR_BREEZE "Brise"
    -
    59 #define D_STR_CIRCULATE "Zirkulieren"
    -
    60 #define D_STR_CEILING "Decke"
    -
    61 #define D_STR_WALL "Wand"
    -
    62 #define D_STR_ROOM "Raum"
    -
    63 #define D_STR_6THSENSE "6ter Sinn"
    -
    64 #define D_STR_FIXED "Fixiert"
    -
    65 
    -
    66 #define D_STR_AUTOMATIC "Automatisch"
    -
    67 #define D_STR_MANUAL "Manuell"
    -
    68 #define D_STR_COOL "Kühlen"
    -
    69 #define D_STR_HEAT "Heizen"
    -
    70 #define D_STR_FAN "Lüfter"
    -
    71 #define D_STR_FANONLY "nur_lüfter"
    -
    72 #define D_STR_DRY "Trocken"
    -
    73 
    -
    74 #define D_STR_MED "Mit"
    -
    75 #define D_STR_MEDIUM "Mittel"
    -
    76 
    -
    77 #define D_STR_HIGHEST "Höchste"
    -
    78 #define D_STR_HIGH "Hoch"
    -
    79 #define D_STR_HI "H"
    -
    80 #define D_STR_MID "M"
    -
    81 #define D_STR_MIDDLE "Mittel"
    -
    82 #define D_STR_LOW "Tief"
    -
    83 #define D_STR_LO "T"
    -
    84 #define D_STR_LOWEST "Tiefste"
    -
    85 #define D_STR_RIGHT "Rechts"
    -
    86 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
    -
    87 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
    -
    88 #define D_STR_LEFT "Links"
    -
    89 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
    -
    90 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
    -
    91 #define D_STR_WIDE "Breit"
    -
    92 #define D_STR_CENTRE "Mitte"
    -
    93 #define D_STR_TOP "Oben"
    -
    94 #define D_STR_BOTTOM "Unten"
    -
    95 
    -
    96 #define D_STR_DAY "Tag"
    -
    97 #define D_STR_DAYS D_STR_DAY "e"
    -
    98 #define D_STR_HOUR "Stunde"
    -
    99 #define D_STR_HOURS D_STR_HOUR "n"
    -
    100 #define D_STR_MINUTES D_STR_MINUTE "n"
    -
    101 #define D_STR_SECOND "Sekunde"
    -
    102 #define D_STR_SECONDS D_STR_SECOND "n"
    -
    103 #define D_STR_NOW "Jetzt"
    -
    104 // These don't translate well to German as typically only 2 letter
    -
    105 // abbreviations are used. Hence, this is an approximation.
    -
    106 #define D_STR_THREELETTERDAYS "SonMonDieMitDonFreSam"
    -
    107 
    -
    108 #define D_STR_YES "Ja"
    -
    109 #define D_STR_NO "Nein"
    -
    110 #define D_STR_TRUE "Wahr"
    -
    111 #define D_STR_FALSE "Falsch"
    -
    112 
    -
    113 #define D_STR_REPEAT "Wiederholen"
    -
    114 #define D_STR_PREVIOUS "Vorher"
    -
    115 #define D_STR_FAHRENHEIT "Fahrenheit"
    -
    116 #define D_STR_CELSIUS_FAHRENHEIT D_STR_CELSIUS "/" D_STR_FAHRENHEIT
    -
    117 #define D_STR_DISPLAY "Anzeige"
    -
    118 #define D_STR_INSIDE "Innen"
    -
    119 #define D_STR_POWERBUTTON "Netzschalter"
    -
    120 #define D_STR_PREVIOUSPOWER "Vorheriger Einschaltzustand"
    -
    121 #define D_STR_DISPLAYTEMP "Anzeigetemperatur"
    -
    122 
    -
    123 // IRrecvDumpV2+
    -
    124 #define D_STR_TIMESTAMP "Zeitstempel"
    -
    125 #define D_STR_LIBRARY "Bibliothek"
    -
    126 #define D_STR_TOLERANCE "Toleranz"
    -
    127 #define D_STR_MESGDESC "Nachr. Beschr."
    -
    128 #define D_STR_IRRECVDUMP_STARTUP \
    -
    129  "IRrecvDump läuft und wartet auf IR Eingabe auf Pin %d"
    -
    130 #define D_WARN_BUFFERFULL \
    -
    131  "WARNUNG: IR Code ist zu gross für Buffer (>= %d). " \
    -
    132  "Dem Resultat sollte nicht vertraut werden bevor das behoben ist. " \
    -
    133  "Bearbeite & vergrössere `kCaptureBufferSize`."
    -
    134 
    -
    135 #endif // LOCALE_DE_DE_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h.html deleted file mode 100644 index 512778196..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/defaults.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    defaults.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h_source.html deleted file mode 100644 index 25be08ad1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/defaults_8h_source.html +++ /dev/null @@ -1,913 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/defaults.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    defaults.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - David Conran (@crankyoldgit)
    -
    2 // The default text to use throughout the library.
    -
    3 // The library will use this text if no locale (_IR_LOCALE_) is set or if
    -
    4 // the locale doesn't define particular values.
    -
    5 // If they are defined, this file should NOT override them.
    -
    6 //
    -
    7 // This file should contain a #define for every translateable/locale dependant
    -
    8 // string used by the library. Language specific files don't have to include
    -
    9 // everything.
    -
    10 //
    -
    11 // NOTE: ASCII/UTF-8 characters only. Unicode is NOT supported.
    -
    12 //
    -
    13 // The defaults are English (AU) / en-AU. Australia (AU) is pretty much the same
    -
    14 // as English (UK) for this libraries use case.
    -
    15 #ifndef LOCALE_DEFAULTS_H_
    -
    16 #define LOCALE_DEFAULTS_H_
    -
    17 
    -
    18 #ifndef D_STR_UNKNOWN
    -
    19 #define D_STR_UNKNOWN "UNKNOWN"
    -
    20 #endif // D_STR_UNKNOWN
    -
    21 #ifndef D_STR_PROTOCOL
    -
    22 #define D_STR_PROTOCOL "Protocol"
    -
    23 #endif // D_STR_PROTOCOL
    -
    24 #ifndef D_STR_POWER
    -
    25 #define D_STR_POWER "Power"
    -
    26 #endif // D_STR_POWER
    -
    27 #ifndef D_STR_PREVIOUS
    -
    28 #define D_STR_PREVIOUS "Previous"
    -
    29 #endif // D_STR_PREVIOUS
    -
    30 #ifndef D_STR_ON
    -
    31 #define D_STR_ON "On"
    -
    32 #endif // D_STR_ON
    -
    33 #ifndef D_STR_OFF
    -
    34 #define D_STR_OFF "Off"
    -
    35 #endif // D_STR_OFF
    -
    36 #ifndef D_STR_MODE
    -
    37 #define D_STR_MODE "Mode"
    -
    38 #endif // D_STR_MODE
    -
    39 #ifndef D_STR_TOGGLE
    -
    40 #define D_STR_TOGGLE "Toggle"
    -
    41 #endif // D_STR_TOGGLE
    -
    42 #ifndef D_STR_TURBO
    -
    43 #define D_STR_TURBO "Turbo"
    -
    44 #endif // D_STR_TURBO
    -
    45 #ifndef D_STR_SUPER
    -
    46 #define D_STR_SUPER "Super"
    -
    47 #endif // D_STR_SUPER
    -
    48 #ifndef D_STR_SLEEP
    -
    49 #define D_STR_SLEEP "Sleep"
    -
    50 #endif // D_STR_SLEEP
    -
    51 #ifndef D_STR_LIGHT
    -
    52 #define D_STR_LIGHT "Light"
    -
    53 #endif // D_STR_LIGHT
    -
    54 #ifndef D_STR_POWERFUL
    -
    55 #define D_STR_POWERFUL "Powerful"
    -
    56 #endif // D_STR_POWERFUL
    -
    57 #ifndef D_STR_QUIET
    -
    58 #define D_STR_QUIET "Quiet"
    -
    59 #endif // D_STR_QUIET
    -
    60 #ifndef D_STR_ECONO
    -
    61 #define D_STR_ECONO "Econo"
    -
    62 #endif // D_STR_ECONO
    -
    63 #ifndef D_STR_SWING
    -
    64 #define D_STR_SWING "Swing"
    -
    65 #endif // D_STR_SWING
    -
    66 #ifndef D_STR_SWINGH
    -
    67 #define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first!
    -
    68 #endif // D_STR_SWINGH
    -
    69 #ifndef D_STR_SWINGV
    -
    70 #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
    -
    71 #endif // D_STR_SWINGV
    -
    72 #ifndef D_STR_BEEP
    -
    73 #define D_STR_BEEP "Beep"
    -
    74 #endif // D_STR_BEEP
    -
    75 #ifndef D_STR_MOULD
    -
    76 #define D_STR_MOULD "Mould"
    -
    77 #endif // D_STR_MOULD
    -
    78 #ifndef D_STR_CLEAN
    -
    79 #define D_STR_CLEAN "Clean"
    -
    80 #endif // D_STR_CLEAN
    -
    81 #ifndef D_STR_PURIFY
    -
    82 #define D_STR_PURIFY "Purify"
    -
    83 #endif // D_STR_PURIFY
    -
    84 #ifndef D_STR_TIMER
    -
    85 #define D_STR_TIMER "Timer"
    -
    86 #endif // D_STR_TIMER
    -
    87 #ifndef D_STR_ONTIMER
    -
    88 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
    -
    89 #endif // D_STR_ONTIMER
    -
    90 #ifndef D_STR_OFFTIMER
    -
    91 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
    -
    92 #endif // D_STR_OFFTIMER
    -
    93 #ifndef D_STR_CLOCK
    -
    94 #define D_STR_CLOCK "Clock"
    -
    95 #endif // D_STR_CLOCK
    -
    96 #ifndef D_STR_COMMAND
    -
    97 #define D_STR_COMMAND "Command"
    -
    98 #endif // D_STR_COMMAND
    -
    99 #ifndef D_STR_XFAN
    -
    100 #define D_STR_XFAN "XFan"
    -
    101 #endif // D_STR_XFAN
    -
    102 #ifndef D_STR_HEALTH
    -
    103 #define D_STR_HEALTH "Health"
    -
    104 #endif // D_STR_HEALTH
    -
    105 #ifndef D_STR_MODEL
    -
    106 #define D_STR_MODEL "Model"
    -
    107 #endif // D_STR_MODEL
    -
    108 #ifndef D_STR_TEMP
    -
    109 #define D_STR_TEMP "Temp"
    -
    110 #endif // D_STR_TEMP
    -
    111 #ifndef D_STR_IFEEL
    -
    112 #define D_STR_IFEEL "IFeel"
    -
    113 #endif // D_STR_IFEEL
    -
    114 #ifndef D_STR_HUMID
    -
    115 #define D_STR_HUMID "Humid"
    -
    116 #endif // D_STR_HUMID
    -
    117 #ifndef D_STR_SAVE
    -
    118 #define D_STR_SAVE "Save"
    -
    119 #endif // D_STR_SAVE
    -
    120 #ifndef D_STR_EYE
    -
    121 #define D_STR_EYE "Eye"
    -
    122 #endif // D_STR_EYE
    -
    123 #ifndef D_STR_FOLLOW
    -
    124 #define D_STR_FOLLOW "Follow"
    -
    125 #endif // D_STR_FOLLOW
    -
    126 #ifndef D_STR_ION
    -
    127 #define D_STR_ION "Ion"
    -
    128 #endif // D_STR_ION
    -
    129 #ifndef D_STR_FRESH
    -
    130 #define D_STR_FRESH "Fresh"
    -
    131 #endif // D_STR_FRESH
    -
    132 #ifndef D_STR_HOLD
    -
    133 #define D_STR_HOLD "Hold"
    -
    134 #endif // D_STR_HOLD
    -
    135 #ifndef D_STR_8C_HEAT
    -
    136 #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
    -
    137 #endif // D_STR_8C_HEAT
    -
    138 #ifndef D_STR_10C_HEAT
    -
    139 #define D_STR_10C_HEAT "10C " D_STR_HEAT // Set `D_STR_HEAT` first!
    -
    140 #endif // D_STR_10C_HEAT
    -
    141 #ifndef D_STR_BUTTON
    -
    142 #define D_STR_BUTTON "Button"
    -
    143 #endif // D_STR_BUTTON
    -
    144 #ifndef D_STR_NIGHT
    -
    145 #define D_STR_NIGHT "Night"
    -
    146 #endif // D_STR_NIGHT
    -
    147 #ifndef D_STR_SILENT
    -
    148 #define D_STR_SILENT "Silent"
    -
    149 #endif // D_STR_SILENT
    -
    150 #ifndef D_STR_FILTER
    -
    151 #define D_STR_FILTER "Filter"
    -
    152 #endif // D_STR_FILTER
    -
    153 #ifndef D_STR_3D
    -
    154 #define D_STR_3D "3D"
    -
    155 #endif // D_STR_3D
    -
    156 #ifndef D_STR_CELSIUS
    -
    157 #define D_STR_CELSIUS "Celsius"
    -
    158 #endif // D_STR_CELSIUS
    -
    159 #ifndef D_STR_FAHRENHEIT
    -
    160 #define D_STR_FAHRENHEIT "Fahrenheit"
    -
    161 #endif // D_STR_FAHRENHEIT
    -
    162 #ifndef D_STR_CELSIUS_FAHRENHEIT
    -
    163 #define D_STR_CELSIUS_FAHRENHEIT D_STR_CELSIUS "/" D_STR_FAHRENHEIT
    -
    164 #endif // D_STR_CELSIUS_FAHRENHEIT
    -
    165 #ifndef D_STR_UP
    -
    166 #define D_STR_UP "Up"
    -
    167 #endif // D_STR_UP
    -
    168 #ifndef D_STR_TEMPUP
    -
    169 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
    -
    170 #endif // D_STR_TEMPUP
    -
    171 #ifndef D_STR_DOWN
    -
    172 #define D_STR_DOWN "Down"
    -
    173 #endif // D_STR_DOWN
    -
    174 #ifndef D_STR_TEMPDOWN
    -
    175 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
    -
    176 #endif // D_STR_TEMPDOWN
    -
    177 #ifndef D_STR_CHANGE
    -
    178 #define D_STR_CHANGE "Change"
    -
    179 #endif // D_STR_CHANGE
    -
    180 #ifndef D_STR_START
    -
    181 #define D_STR_START "Start"
    -
    182 #endif // D_STR_START
    -
    183 #ifndef D_STR_STOP
    -
    184 #define D_STR_STOP "Stop"
    -
    185 #endif // D_STR_STOP
    -
    186 #ifndef D_STR_MOVE
    -
    187 #define D_STR_MOVE "Move"
    -
    188 #endif // D_STR_MOVE
    -
    189 #ifndef D_STR_SET
    -
    190 #define D_STR_SET "Set"
    -
    191 #endif // D_STR_SET
    -
    192 #ifndef D_STR_CANCEL
    -
    193 #define D_STR_CANCEL "Cancel"
    -
    194 #endif // D_STR_CANCEL
    -
    195 #ifndef D_STR_COMFORT
    -
    196 #define D_STR_COMFORT "Comfort"
    -
    197 #endif // D_STR_COMFORT
    -
    198 #ifndef D_STR_SENSOR
    -
    199 #define D_STR_SENSOR "Sensor"
    -
    200 #endif // D_STR_SENSOR
    -
    201 #ifndef D_STR_DISPLAY
    -
    202 #define D_STR_DISPLAY "Display"
    -
    203 #endif // D_STR_DISPLAY
    -
    204 #ifndef D_STR_WEEKLY
    -
    205 #define D_STR_WEEKLY "Weekly"
    -
    206 #endif // D_STR_WEEKLY
    -
    207 #ifndef D_STR_WEEKLYTIMER
    -
    208 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
    -
    209 #endif // D_STR_WEEKLYTIMER
    -
    210 #ifndef D_STR_WIFI
    -
    211 #define D_STR_WIFI "WiFi"
    -
    212 #endif // D_STR_WIFI
    -
    213 #ifndef D_STR_LAST
    -
    214 #define D_STR_LAST "Last"
    -
    215 #endif // D_STR_LAST
    -
    216 #ifndef D_STR_FAST
    -
    217 #define D_STR_FAST "Fast"
    -
    218 #endif // D_STR_FAST
    -
    219 #ifndef D_STR_SLOW
    -
    220 #define D_STR_SLOW "Slow"
    -
    221 #endif // D_STR_SLOW
    -
    222 #ifndef D_STR_AIRFLOW
    -
    223 #define D_STR_AIRFLOW "Air Flow"
    -
    224 #endif // D_STR_AIRFLOW
    -
    225 #ifndef D_STR_STEP
    -
    226 #define D_STR_STEP "Step"
    -
    227 #endif // D_STR_STEP
    -
    228 #ifndef D_STR_NA
    -
    229 #define D_STR_NA "N/A"
    -
    230 #endif // D_STR_NA
    -
    231 #ifndef D_STR_INSIDE
    -
    232 #define D_STR_INSIDE "Inside"
    -
    233 #endif // D_STR_INSIDE
    -
    234 #ifndef D_STR_OUTSIDE
    -
    235 #define D_STR_OUTSIDE "Outside"
    -
    236 #endif // D_STR_OUTSIDE
    -
    237 #ifndef D_STR_LOUD
    -
    238 #define D_STR_LOUD "Loud"
    -
    239 #endif // D_STR_LOUD
    -
    240 #ifndef D_STR_UPPER
    -
    241 #define D_STR_UPPER "Upper"
    -
    242 #endif // D_STR_UPPER
    -
    243 #ifndef D_STR_LOWER
    -
    244 #define D_STR_LOWER "Lower"
    -
    245 #endif // D_STR_LOWER
    -
    246 #ifndef D_STR_BREEZE
    -
    247 #define D_STR_BREEZE "Breeze"
    -
    248 #endif // D_STR_BREEZE
    -
    249 #ifndef D_STR_CIRCULATE
    -
    250 #define D_STR_CIRCULATE "Circulate"
    -
    251 #endif // D_STR_CIRCULATE
    -
    252 #ifndef D_STR_CEILING
    -
    253 #define D_STR_CEILING "Ceiling"
    -
    254 #endif // D_STR_CEILING
    -
    255 #ifndef D_STR_WALL
    -
    256 #define D_STR_WALL "Wall"
    -
    257 #endif // D_STR_WALL
    -
    258 #ifndef D_STR_ROOM
    -
    259 #define D_STR_ROOM "Room"
    -
    260 #endif // D_STR_ROOM
    -
    261 #ifndef D_STR_6THSENSE
    -
    262 #define D_STR_6THSENSE "6th Sense"
    -
    263 #endif // D_STR_6THSENSE
    -
    264 #ifndef D_STR_ZONEFOLLOW
    -
    265 #define D_STR_ZONEFOLLOW "Zone Follow"
    -
    266 #endif // D_STR_ZONEFOLLOW
    -
    267 #ifndef D_STR_FIXED
    -
    268 #define D_STR_FIXED "Fixed"
    -
    269 #endif // D_STR_FIXED
    -
    270 #ifndef D_STR_TYPE
    -
    271 #define D_STR_TYPE "Type"
    -
    272 #endif // D_STR_TYPE
    -
    273 #ifndef D_STR_SPECIAL
    -
    274 #define D_STR_SPECIAL "Special"
    -
    275 #endif // D_STR_SPECIAL
    -
    276 #ifndef D_STR_RECYCLE
    -
    277 #define D_STR_RECYCLE "Recycle"
    -
    278 #endif // D_STR_RECYCLE
    -
    279 #ifndef D_STR_ID
    -
    280 #define D_STR_ID "Id"
    -
    281 #endif // D_STR_ID
    -
    282 
    -
    283 #ifndef D_STR_AUTO
    -
    284 #define D_STR_AUTO "Auto"
    -
    285 #endif // D_STR_AUTO
    -
    286 #ifndef D_STR_AUTOMATIC
    -
    287 #define D_STR_AUTOMATIC "Automatic"
    -
    288 #endif // D_STR_AUTOMATIC
    -
    289 #ifndef D_STR_MANUAL
    -
    290 #define D_STR_MANUAL "Manual"
    -
    291 #endif // D_STR_MANUAL
    -
    292 #ifndef D_STR_COOL
    -
    293 #define D_STR_COOL "Cool"
    -
    294 #endif // D_STR_COOL
    -
    295 #ifndef D_STR_HEAT
    -
    296 #define D_STR_HEAT "Heat"
    -
    297 #endif // D_STR_HEAT
    -
    298 #ifndef D_STR_FAN
    -
    299 #define D_STR_FAN "Fan"
    -
    300 #endif // D_STR_FAN
    -
    301 #ifndef D_STR_FANONLY
    -
    302 #define D_STR_FANONLY "fan_only"
    -
    303 #endif // D_STR_FANONLY
    -
    304 #ifndef D_STR_DRY
    -
    305 #define D_STR_DRY "Dry"
    -
    306 #endif // D_STR_DRY
    -
    307 
    -
    308 #ifndef D_STR_MAX
    -
    309 #define D_STR_MAX "Max"
    -
    310 #endif // D_STR_MAX
    -
    311 #ifndef D_STR_MAXIMUM
    -
    312 #define D_STR_MAXIMUM "Maximum"
    -
    313 #endif // D_STR_MAXIMUM
    -
    314 #ifndef D_STR_MIN
    -
    315 #define D_STR_MIN "Min"
    -
    316 #endif // D_STR_MIN
    -
    317 #ifndef D_STR_MINIMUM
    -
    318 #define D_STR_MINIMUM "Minimum"
    -
    319 #endif // D_STR_MINIMUM
    -
    320 #ifndef D_STR_MED
    -
    321 #define D_STR_MED "Med"
    -
    322 #endif // D_STR_MED
    -
    323 #ifndef D_STR_MEDIUM
    -
    324 #define D_STR_MEDIUM "Medium"
    -
    325 #endif // D_STR_MEDIUM
    -
    326 
    -
    327 #ifndef D_STR_HIGHEST
    -
    328 #define D_STR_HIGHEST "Highest"
    -
    329 #endif // D_STR_HIGHEST
    -
    330 #ifndef D_STR_HIGH
    -
    331 #define D_STR_HIGH "High"
    -
    332 #endif // D_STR_HIGH
    -
    333 #ifndef D_STR_HI
    -
    334 #define D_STR_HI "Hi"
    -
    335 #endif // D_STR_HI
    -
    336 #ifndef D_STR_MID
    -
    337 #define D_STR_MID "Mid"
    -
    338 #endif // D_STR_MID
    -
    339 #ifndef D_STR_MIDDLE
    -
    340 #define D_STR_MIDDLE "Middle"
    -
    341 #endif // D_STR_MIDDLE
    -
    342 #ifndef D_STR_LOW
    -
    343 #define D_STR_LOW "Low"
    -
    344 #endif // D_STR_LOW
    -
    345 #ifndef D_STR_LO
    -
    346 #define D_STR_LO "Lo"
    -
    347 #endif // D_STR_LO
    -
    348 #ifndef D_STR_LOWEST
    -
    349 #define D_STR_LOWEST "Lowest"
    -
    350 #endif // D_STR_LOWEST
    -
    351 #ifndef D_STR_RIGHT
    -
    352 #define D_STR_RIGHT "Right"
    -
    353 #endif // D_STR_RIGHT
    -
    354 #ifndef D_STR_MAXRIGHT
    -
    355 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
    -
    356 #endif // D_STR_MAXRIGHT
    -
    357 #ifndef D_STR_RIGHTMAX_NOSPACE
    -
    358 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
    -
    359 #endif // D_STR_RIGHTMAX_NOSPACE
    -
    360 #ifndef D_STR_LEFT
    -
    361 #define D_STR_LEFT "Left"
    -
    362 #endif // D_STR_LEFT
    -
    363 #ifndef D_STR_MAXLEFT
    -
    364 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
    -
    365 #endif // D_STR_MAXLEFT
    -
    366 #ifndef D_STR_LEFTMAX_NOSPACE
    -
    367 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
    -
    368 #endif // D_STR_LEFTMAX_NOSPACE
    -
    369 #ifndef D_STR_WIDE
    -
    370 #define D_STR_WIDE "Wide"
    -
    371 #endif // D_STR_WIDE
    -
    372 #ifndef D_STR_CENTRE
    -
    373 #define D_STR_CENTRE "Centre"
    -
    374 #endif // D_STR_CENTRE
    -
    375 #ifndef D_STR_TOP
    -
    376 #define D_STR_TOP "Top"
    -
    377 #endif // D_STR_TOP
    -
    378 #ifndef D_STR_BOTTOM
    -
    379 #define D_STR_BOTTOM "Bottom"
    -
    380 #endif // D_STR_BOTTOM
    -
    381 
    -
    382 // Compound words/phrases/descriptions from pre-defined words.
    -
    383 // Note: Obviously these need to be defined *after* their component words.
    -
    384 #ifndef D_STR_ECONOTOGGLE
    -
    385 #define D_STR_ECONOTOGGLE D_STR_ECONO " " D_STR_TOGGLE
    -
    386 #endif // D_STR_ECONOTOGGLE
    -
    387 #ifndef D_STR_EYEAUTO
    -
    388 #define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
    -
    389 #endif // D_STR_EYEAUTO
    -
    390 #ifndef D_STR_LIGHTTOGGLE
    -
    391 #define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
    -
    392 #endif // D_STR_LIGHTTOGGLE
    -
    393 #ifndef D_STR_OUTSIDEQUIET
    -
    394 #define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
    -
    395 #endif // D_STR_OUTSIDEQUIET
    -
    396 #ifndef D_STR_POWERTOGGLE
    -
    397 #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
    -
    398 #endif // D_STR_POWERTOGGLE
    -
    399 #ifndef D_STR_POWERBUTTON
    -
    400 #define D_STR_POWERBUTTON D_STR_POWER " " D_STR_BUTTON
    -
    401 #endif // D_STR_POWERBUTTON
    -
    402 #ifndef D_STR_PREVIOUSPOWER
    -
    403 #define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER
    -
    404 #endif // D_STR_PREVIOUSPOWER
    -
    405 #ifndef D_STR_DISPLAYTEMP
    -
    406 #define D_STR_DISPLAYTEMP D_STR_DISPLAY " " D_STR_TEMP
    -
    407 #endif // D_STR_DISPLAYTEMP
    -
    408 #ifndef D_STR_SENSORTEMP
    -
    409 #define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
    -
    410 #endif // D_STR_SENSORTEMP
    -
    411 #ifndef D_STR_SLEEP_TIMER
    -
    412 #define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
    -
    413 #endif // D_STR_SLEEP_TIMER
    -
    414 #ifndef D_STR_SWINGVMODE
    -
    415 #define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
    -
    416 #endif // D_STR_SWINGVMODE
    -
    417 #ifndef D_STR_SWINGVTOGGLE
    -
    418 #define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
    -
    419 #endif // D_STR_SWINGVTOGGLE
    -
    420 #ifndef D_STR_TURBOTOGGLE
    -
    421 #define D_STR_TURBOTOGGLE D_STR_TURBO " " D_STR_TOGGLE
    -
    422 #endif // D_STR_TURBOTOGGLE
    -
    423 
    -
    424 // Separators
    -
    425 #ifndef D_CHR_TIME_SEP
    -
    426 #define D_CHR_TIME_SEP ':'
    -
    427 #endif // D_CHR_TIME_SEP
    -
    428 #ifndef D_STR_SPACELBRACE
    -
    429 #define D_STR_SPACELBRACE " ("
    -
    430 #endif // D_STR_SPACELBRACE
    -
    431 #ifndef D_STR_COMMASPACE
    -
    432 #define D_STR_COMMASPACE ", "
    -
    433 #endif // D_STR_COMMASPACE
    -
    434 #ifndef D_STR_COLONSPACE
    -
    435 #define D_STR_COLONSPACE ": "
    -
    436 #endif // D_STR_COLONSPACE
    -
    437 
    -
    438 #ifndef D_STR_DAY
    -
    439 #define D_STR_DAY "Day"
    -
    440 #endif // D_STR_DAY
    -
    441 #ifndef D_STR_DAYS
    -
    442 #define D_STR_DAYS D_STR_DAY "s"
    -
    443 #endif // D_STR_DAYS
    -
    444 #ifndef D_STR_HOUR
    -
    445 #define D_STR_HOUR "Hour"
    -
    446 #endif // D_STR_HOUR
    -
    447 #ifndef D_STR_HOURS
    -
    448 #define D_STR_HOURS D_STR_HOUR "s"
    -
    449 #endif // D_STR_HOURS
    -
    450 #ifndef D_STR_MINUTE
    -
    451 #define D_STR_MINUTE "Minute"
    -
    452 #endif // D_STR_MINUTE
    -
    453 #ifndef D_STR_MINUTES
    -
    454 #define D_STR_MINUTES D_STR_MINUTE "s"
    -
    455 #endif // D_STR_MINUTES
    -
    456 #ifndef D_STR_SECOND
    -
    457 #define D_STR_SECOND "Second"
    -
    458 #endif // D_STR_SECOND
    -
    459 #ifndef D_STR_SECONDS
    -
    460 #define D_STR_SECONDS D_STR_SECOND "s"
    -
    461 #endif // D_STR_SECONDS
    -
    462 #ifndef D_STR_NOW
    -
    463 #define D_STR_NOW "Now"
    -
    464 #endif // D_STR_NOW
    -
    465 #ifndef D_STR_THREELETTERDAYS
    -
    466 #define D_STR_THREELETTERDAYS "SunMonTueWedThuFriSat"
    -
    467 #endif // D_STR_THREELETTERDAYS
    -
    468 
    -
    469 #ifndef D_STR_YES
    -
    470 #define D_STR_YES "Yes"
    -
    471 #endif // D_STR_YES
    -
    472 #ifndef D_STR_NO
    -
    473 #define D_STR_NO "No"
    -
    474 #endif // D_STR_NO
    -
    475 #ifndef D_STR_TRUE
    -
    476 #define D_STR_TRUE "True"
    -
    477 #endif // D_STR_TRUE
    -
    478 #ifndef D_STR_FALSE
    -
    479 #define D_STR_FALSE "False"
    -
    480 #endif // D_STR_FALSE
    -
    481 
    -
    482 #ifndef D_STR_REPEAT
    -
    483 #define D_STR_REPEAT "Repeat"
    -
    484 #endif // D_STR_REPEAT
    -
    485 #ifndef D_STR_CODE
    -
    486 #define D_STR_CODE "Code"
    -
    487 #endif // D_STR_CODE
    -
    488 #ifndef D_STR_BITS
    -
    489 #define D_STR_BITS "Bits"
    -
    490 #endif // D_STR_BITS
    -
    491 
    -
    492 // Protocols Names
    -
    493 #ifndef D_STR_AIRWELL
    -
    494 #define D_STR_AIRWELL "AIRWELL"
    -
    495 #endif // D_STR_AIRWELL
    -
    496 #ifndef D_STR_AIWA_RC_T501
    -
    497 #define D_STR_AIWA_RC_T501 "AIWA_RC_T501"
    -
    498 #endif // D_STR_AIWA_RC_T501
    -
    499 #ifndef D_STR_AMCOR
    -
    500 #define D_STR_AMCOR "AMCOR"
    -
    501 #endif // D_STR_AMCOR
    -
    502 #ifndef D_STR_ARGO
    -
    503 #define D_STR_ARGO "ARGO"
    -
    504 #endif // D_STR_ARGO
    -
    505 #ifndef D_STR_CARRIER_AC
    -
    506 #define D_STR_CARRIER_AC "CARRIER_AC"
    -
    507 #endif // D_STR_CARRIER_AC
    -
    508 #ifndef D_STR_CARRIER_AC40
    -
    509 #define D_STR_CARRIER_AC40 D_STR_CARRIER_AC "40"
    -
    510 #endif // D_STR_CARRIER_AC40
    -
    511 #ifndef D_STR_CARRIER_AC64
    -
    512 #define D_STR_CARRIER_AC64 D_STR_CARRIER_AC "64"
    -
    513 #endif // D_STR_CARRIER_AC64
    -
    514 #ifndef D_STR_COOLIX
    -
    515 #define D_STR_COOLIX "COOLIX"
    -
    516 #endif // D_STR_COOLIX
    -
    517 #ifndef D_STR_CORONA_AC
    -
    518 #define D_STR_CORONA_AC "CORONA_AC"
    -
    519 #endif // D_STR_CORONA_AC
    -
    520 #ifndef D_STR_DAIKIN
    -
    521 #define D_STR_DAIKIN "DAIKIN"
    -
    522 #endif // D_STR_DAIKIN
    -
    523 #ifndef D_STR_DAIKIN128
    -
    524 #define D_STR_DAIKIN128 "DAIKIN128"
    -
    525 #endif // D_STR_DAIKIN128
    -
    526 #ifndef D_STR_DAIKIN152
    -
    527 #define D_STR_DAIKIN152 "DAIKIN152"
    -
    528 #endif // D_STR_DAIKIN152
    -
    529 #ifndef D_STR_DAIKIN160
    -
    530 #define D_STR_DAIKIN160 "DAIKIN160"
    -
    531 #endif // D_STR_DAIKIN160
    -
    532 #ifndef D_STR_DAIKIN176
    -
    533 #define D_STR_DAIKIN176 "DAIKIN176"
    -
    534 #endif // D_STR_DAIKIN176
    -
    535 #ifndef D_STR_DAIKIN2
    -
    536 #define D_STR_DAIKIN2 "DAIKIN2"
    -
    537 #endif // D_STR_DAIKIN2
    -
    538 #ifndef D_STR_DAIKIN216
    -
    539 #define D_STR_DAIKIN216 "DAIKIN216"
    -
    540 #endif // D_STR_DAIKIN216
    -
    541 #ifndef D_STR_DAIKIN64
    -
    542 #define D_STR_DAIKIN64 "DAIKIN64"
    -
    543 #endif // D_STR_DAIKIN64
    -
    544 #ifndef D_STR_DELONGHI_AC
    -
    545 #define D_STR_DELONGHI_AC "DELONGHI_AC"
    -
    546 #endif // D_STR_DELONGHI_AC
    -
    547 #ifndef D_STR_DENON
    -
    548 #define D_STR_DENON "DENON"
    -
    549 #endif // D_STR_DENON
    -
    550 #ifndef D_STR_DISH
    -
    551 #define D_STR_DISH "DISH"
    -
    552 #endif // D_STR_DISH
    -
    553 #ifndef D_STR_DOSHISHA
    -
    554 #define D_STR_DOSHISHA "DOSHISHA"
    -
    555 #endif // D_STR_DOSHISHA
    -
    556 #ifndef D_STR_ECOCLIM
    -
    557 #define D_STR_ECOCLIM "ECOCLIM"
    -
    558 #endif // D_STR_ECOCLIM
    -
    559 #ifndef D_STR_ELECTRA_AC
    -
    560 #define D_STR_ELECTRA_AC "ELECTRA_AC"
    -
    561 #endif // D_STR_ELECTRA_AC
    -
    562 #ifndef D_STR_ELITESCREENS
    -
    563 #define D_STR_ELITESCREENS "ELITESCREENS"
    -
    564 #endif // D_STR_ELITESCREENS
    -
    565 #ifndef D_STR_EPSON
    -
    566 #define D_STR_EPSON "EPSON"
    -
    567 #endif // D_STR_EPSON
    -
    568 #ifndef D_STR_FUJITSU_AC
    -
    569 #define D_STR_FUJITSU_AC "FUJITSU_AC"
    -
    570 #endif // D_STR_FUJITSU_AC
    -
    571 #ifndef D_STR_GICABLE
    -
    572 #define D_STR_GICABLE "GICABLE"
    -
    573 #endif // D_STR_GICABLE
    -
    574 #ifndef D_STR_GLOBALCACHE
    -
    575 #define D_STR_GLOBALCACHE "GLOBALCACHE"
    -
    576 #endif // D_STR_GLOBALCACHE
    -
    577 #ifndef D_STR_GOODWEATHER
    -
    578 #define D_STR_GOODWEATHER "GOODWEATHER"
    -
    579 #endif // D_STR_GOODWEATHER
    -
    580 #ifndef D_STR_GREE
    -
    581 #define D_STR_GREE "GREE"
    -
    582 #endif // D_STR_GREE
    -
    583 #ifndef D_STR_HAIER_AC
    -
    584 #define D_STR_HAIER_AC "HAIER_AC"
    -
    585 #endif // D_STR_HAIER_AC
    -
    586 #ifndef D_STR_HAIER_AC_YRW02
    -
    587 #define D_STR_HAIER_AC_YRW02 "HAIER_AC_YRW02"
    -
    588 #endif // D_STR_HAIER_AC_YRW02
    -
    589 #ifndef D_STR_HAIER_AC176
    -
    590 #define D_STR_HAIER_AC176 "HAIER_AC176"
    -
    591 #endif // D_STR_HAIER_AC176
    -
    592 #ifndef D_STR_HITACHI_AC
    -
    593 #define D_STR_HITACHI_AC "HITACHI_AC"
    -
    594 #endif // D_STR_HITACHI_AC
    -
    595 #ifndef D_STR_HITACHI_AC1
    -
    596 #define D_STR_HITACHI_AC1 "HITACHI_AC1"
    -
    597 #endif // D_STR_HITACHI_AC1
    -
    598 #ifndef D_STR_HITACHI_AC2
    -
    599 #define D_STR_HITACHI_AC2 "HITACHI_AC2"
    -
    600 #endif // D_STR_HITACHI_AC2
    -
    601 #ifndef D_STR_HITACHI_AC3
    -
    602 #define D_STR_HITACHI_AC3 "HITACHI_AC3"
    -
    603 #endif // D_STR_HITACHI_AC3
    -
    604 #ifndef D_STR_HITACHI_AC344
    -
    605 #define D_STR_HITACHI_AC344 "HITACHI_AC344"
    -
    606 #endif // D_STR_HITACHI_AC344
    -
    607 #ifndef D_STR_HITACHI_AC424
    -
    608 #define D_STR_HITACHI_AC424 "HITACHI_AC424"
    -
    609 #endif // D_STR_HITACHI_AC424
    -
    610 #ifndef D_STR_INAX
    -
    611 #define D_STR_INAX "INAX"
    -
    612 #endif // D_STR_INAX
    -
    613 #ifndef D_STR_JVC
    -
    614 #define D_STR_JVC "JVC"
    -
    615 #endif // D_STR_JVC
    -
    616 #ifndef D_STR_KELON
    -
    617 #define D_STR_KELON "KELON"
    -
    618 #endif // D_STR_KELON
    -
    619 #ifndef D_STR_KELVINATOR
    -
    620 #define D_STR_KELVINATOR "KELVINATOR"
    -
    621 #endif // D_STR_KELVINATOR
    -
    622 #ifndef D_STR_LASERTAG
    -
    623 #define D_STR_LASERTAG "LASERTAG"
    -
    624 #endif // D_STR_LASERTAG
    -
    625 #ifndef D_STR_LEGOPF
    -
    626 #define D_STR_LEGOPF "LEGOPF"
    -
    627 #endif // D_STR_LEGOPF
    -
    628 #ifndef D_STR_LG
    -
    629 #define D_STR_LG "LG"
    -
    630 #endif // D_STR_LG
    -
    631 #ifndef D_STR_LG2
    -
    632 #define D_STR_LG2 "LG2"
    -
    633 #endif // D_STR_LG2
    -
    634 #ifndef D_STR_LUTRON
    -
    635 #define D_STR_LUTRON "LUTRON"
    -
    636 #endif // D_STR_LUTRON
    -
    637 #ifndef D_STR_MAGIQUEST
    -
    638 #define D_STR_MAGIQUEST "MAGIQUEST"
    -
    639 #endif // D_STR_MAGIQUEST
    -
    640 #ifndef D_STR_METZ
    -
    641 #define D_STR_METZ "METZ"
    -
    642 #endif // D_STR_METZ
    -
    643 #ifndef D_STR_MIDEA
    -
    644 #define D_STR_MIDEA "MIDEA"
    -
    645 #endif // D_STR_MIDEA
    -
    646 #ifndef D_STR_MIDEA24
    -
    647 #define D_STR_MIDEA24 "MIDEA24"
    -
    648 #endif // D_STR_MIDEA24
    -
    649 #ifndef D_STR_MILESTAG2
    -
    650 #define D_STR_MILESTAG2 "MILESTAG2"
    -
    651 #endif // D_STR_MILESTAG2
    -
    652 #ifndef D_STR_MIRAGE
    -
    653 #define D_STR_MIRAGE "MIRAGE"
    -
    654 #endif // D_STR_MIRAGE
    -
    655 #ifndef D_STR_MITSUBISHI
    -
    656 #define D_STR_MITSUBISHI "MITSUBISHI"
    -
    657 #endif // D_STR_MITSUBISHI
    -
    658 #ifndef D_STR_MITSUBISHI112
    -
    659 #define D_STR_MITSUBISHI112 "MITSUBISHI112"
    -
    660 #endif // D_STR_MITSUBISHI112
    -
    661 #ifndef D_STR_MITSUBISHI136
    -
    662 #define D_STR_MITSUBISHI136 "MITSUBISHI136"
    -
    663 #endif // D_STR_MITSUBISHI136
    -
    664 #ifndef D_STR_MITSUBISHI2
    -
    665 #define D_STR_MITSUBISHI2 "MITSUBISHI2"
    -
    666 #endif // D_STR_MITSUBISHI2
    -
    667 #ifndef D_STR_MITSUBISHI_AC
    -
    668 #define D_STR_MITSUBISHI_AC "MITSUBISHI_AC"
    -
    669 #endif // D_STR_MITSUBISHI_AC
    -
    670 #ifndef D_STR_MITSUBISHI_HEAVY_152
    -
    671 #define D_STR_MITSUBISHI_HEAVY_152 "MITSUBISHI_HEAVY_152"
    -
    672 #endif // D_STR_MITSUBISHI_HEAVY_152
    -
    673 #ifndef D_STR_MITSUBISHI_HEAVY_88
    -
    674 #define D_STR_MITSUBISHI_HEAVY_88 "MITSUBISHI_HEAVY_88"
    -
    675 #endif // D_STR_MITSUBISHI_HEAVY_88
    -
    676 #ifndef D_STR_MULTIBRACKETS
    -
    677 #define D_STR_MULTIBRACKETS "MULTIBRACKETS"
    -
    678 #endif // D_STR_MULTIBRACKETS
    -
    679 #ifndef D_STR_MWM
    -
    680 #define D_STR_MWM "MWM"
    -
    681 #endif // D_STR_MWM
    -
    682 #ifndef D_STR_NEC
    -
    683 #define D_STR_NEC "NEC"
    -
    684 #endif // D_STR_NEC
    -
    685 #ifndef D_STR_NEC_LIKE
    -
    686 #define D_STR_NEC_LIKE D_STR_NEC "_LIKE"
    -
    687 #endif // D_STR_NEC_LIKE
    -
    688 #ifndef D_STR_NEC_NON_STRICT
    -
    689 #define D_STR_NEC_NON_STRICT D_STR_NEC " (NON-STRICT)"
    -
    690 #endif // D_STR_NEC_NON_STRICT
    -
    691 #ifndef D_STR_NEOCLIMA
    -
    692 #define D_STR_NEOCLIMA "NEOCLIMA"
    -
    693 #endif // D_STR_NEOCLIMA
    -
    694 #ifndef D_STR_NIKAI
    -
    695 #define D_STR_NIKAI "NIKAI"
    -
    696 #endif // D_STR_NIKAI
    -
    697 #ifndef D_STR_PANASONIC
    -
    698 #define D_STR_PANASONIC "PANASONIC"
    -
    699 #endif // D_STR_PANASONIC
    -
    700 #ifndef D_STR_PANASONIC_AC
    -
    701 #define D_STR_PANASONIC_AC "PANASONIC_AC"
    -
    702 #endif // D_STR_PANASONIC_AC
    -
    703 #ifndef D_STR_PANASONIC_AC32
    -
    704 #define D_STR_PANASONIC_AC32 D_STR_PANASONIC_AC"32"
    -
    705 #endif // D_STR_PANASONIC_AC32
    -
    706 #ifndef D_STR_PIONEER
    -
    707 #define D_STR_PIONEER "PIONEER"
    -
    708 #endif // D_STR_PIONEER
    -
    709 #ifndef D_STR_PRONTO
    -
    710 #define D_STR_PRONTO "PRONTO"
    -
    711 #endif // D_STR_PRONTO
    -
    712 #ifndef D_STR_RAW
    -
    713 #define D_STR_RAW "RAW"
    -
    714 #endif // D_STR_RAW
    -
    715 #ifndef D_STR_RC5
    -
    716 #define D_STR_RC5 "RC5"
    -
    717 #endif // D_STR_RC5
    -
    718 #ifndef D_STR_RC5X
    -
    719 #define D_STR_RC5X "RC5X"
    -
    720 #endif // D_STR_RC5X
    -
    721 #ifndef D_STR_RC6
    -
    722 #define D_STR_RC6 "RC6"
    -
    723 #endif // D_STR_RC6
    -
    724 #ifndef D_STR_RCMM
    -
    725 #define D_STR_RCMM "RCMM"
    -
    726 #endif // D_STR_RCMM
    -
    727 #ifndef D_STR_SAMSUNG
    -
    728 #define D_STR_SAMSUNG "SAMSUNG"
    -
    729 #endif // D_STR_SAMSUNG
    -
    730 #ifndef D_STR_SAMSUNG36
    -
    731 #define D_STR_SAMSUNG36 "SAMSUNG36"
    -
    732 #endif // D_STR_SAMSUNG36
    -
    733 #ifndef D_STR_SAMSUNG_AC
    -
    734 #define D_STR_SAMSUNG_AC "SAMSUNG_AC"
    -
    735 #endif // D_STR_SAMSUNG_AC
    -
    736 #ifndef D_STR_SANYO
    -
    737 #define D_STR_SANYO "SANYO"
    -
    738 #endif // D_STR_SANYO
    -
    739 #ifndef D_STR_SANYO_AC
    -
    740 #define D_STR_SANYO_AC "SANYO_AC"
    -
    741 #endif // D_STR_SANYO_AC
    -
    742 #ifndef D_STR_SANYO_LC7461
    -
    743 #define D_STR_SANYO_LC7461 "SANYO_LC7461"
    -
    744 #endif // D_STR_SANYO_LC7461
    -
    745 #ifndef D_STR_SHARP
    -
    746 #define D_STR_SHARP "SHARP"
    -
    747 #endif // D_STR_SHARP
    -
    748 #ifndef D_STR_SHARP_AC
    -
    749 #define D_STR_SHARP_AC "SHARP_AC"
    -
    750 #endif // D_STR_SHARP_AC
    -
    751 #ifndef D_STR_SHERWOOD
    -
    752 #define D_STR_SHERWOOD "SHERWOOD"
    -
    753 #endif // D_STR_SHERWOOD
    -
    754 #ifndef D_STR_SONY
    -
    755 #define D_STR_SONY "SONY"
    -
    756 #endif // D_STR_SONY
    -
    757 #ifndef D_STR_SONY_38K
    -
    758 #define D_STR_SONY_38K "SONY_38K"
    -
    759 #endif // D_STR_SONY_38K
    -
    760 #ifndef D_STR_SYMPHONY
    -
    761 #define D_STR_SYMPHONY "SYMPHONY"
    -
    762 #endif // D_STR_SYMPHONY
    -
    763 #ifndef D_STR_TCL112AC
    -
    764 #define D_STR_TCL112AC "TCL112AC"
    -
    765 #endif // D_STR_TCL112AC
    -
    766 #ifndef D_STR_TECHNIBEL_AC
    -
    767 #define D_STR_TECHNIBEL_AC "TECHNIBEL_AC"
    -
    768 #endif // D_STR_TECHNIBEL_AC
    -
    769 #ifndef D_STR_TECO
    -
    770 #define D_STR_TECO "TECO"
    -
    771 #endif // D_STR_TECO
    -
    772 #ifndef D_STR_TEKNOPOINT
    -
    773 #define D_STR_TEKNOPOINT "TEKNOPOINT"
    -
    774 #endif // D_STR_TEKNOPOINT
    -
    775 #ifndef D_STR_TOSHIBA_AC
    -
    776 #define D_STR_TOSHIBA_AC "TOSHIBA_AC"
    -
    777 #endif // D_STR_TOSHIBA_AC
    -
    778 #ifndef D_STR_TRANSCOLD
    -
    779 #define D_STR_TRANSCOLD "TRANSCOLD"
    -
    780 #endif // D_STR_TRANSCOLD
    -
    781 #ifndef D_STR_TROTEC
    -
    782 #define D_STR_TROTEC "TROTEC"
    -
    783 #endif // D_STR_TROTEC
    -
    784 #ifndef D_STR_TRUMA
    -
    785 #define D_STR_TRUMA "TRUMA"
    -
    786 #endif // D_STR_TRUMA
    -
    787 #ifndef D_STR_UNUSED
    -
    788 #define D_STR_UNUSED "UNUSED"
    -
    789 #endif // D_STR_UNUSED
    -
    790 #ifndef D_STR_VESTEL_AC
    -
    791 #define D_STR_VESTEL_AC "VESTEL_AC"
    -
    792 #endif // D_STR_VESTEL_AC
    -
    793 #ifndef D_STR_VOLTAS
    -
    794 #define D_STR_VOLTAS "VOLTAS"
    -
    795 #endif // D_STR_VOLTAS
    -
    796 #ifndef D_STR_WHIRLPOOL_AC
    -
    797 #define D_STR_WHIRLPOOL_AC "WHIRLPOOL_AC"
    -
    798 #endif // D_STR_WHIRLPOOL_AC
    -
    799 #ifndef D_STR_WHYNTER
    -
    800 #define D_STR_WHYNTER "WHYNTER"
    -
    801 #endif // D_STR_WHYNTER
    -
    802 #ifndef D_STR_XMP
    -
    803 #define D_STR_XMP "XMP"
    -
    804 #endif // D_STR_XMP
    -
    805 #ifndef D_STR_ZEPEAL
    -
    806 #define D_STR_ZEPEAL "ZEPEAL"
    -
    807 #endif // D_STR_ZEPEAL
    -
    808 
    -
    809 // IRrecvDumpV2+
    -
    810 #ifndef D_STR_TIMESTAMP
    -
    811 #define D_STR_TIMESTAMP "Timestamp"
    -
    812 #endif // D_STR_TIMESTAMP
    -
    813 #ifndef D_STR_LIBRARY
    -
    814 #define D_STR_LIBRARY "Library"
    -
    815 #endif // D_STR_LIBRARY
    -
    816 #ifndef D_STR_MESGDESC
    -
    817 #define D_STR_MESGDESC "Mesg Desc."
    -
    818 #endif // D_STR_MESGDESC
    -
    819 #ifndef D_STR_TOLERANCE
    -
    820 #define D_STR_TOLERANCE "Tolerance"
    -
    821 #endif // D_STR_TOLERANCE
    -
    822 #ifndef D_STR_IRRECVDUMP_STARTUP
    -
    823 #define D_STR_IRRECVDUMP_STARTUP \
    -
    824  "IRrecvDump is now running and waiting for IR input on Pin %d"
    -
    825 #endif // D_STR_IRRECVDUMP_STARTUP
    -
    826 #ifndef D_WARN_BUFFERFULL
    -
    827 #define D_WARN_BUFFERFULL \
    -
    828  "WARNING: IR code is too big for buffer (>= %d). " \
    -
    829  "This result shouldn't be trusted until this is resolved. " \
    -
    830  "Edit & increase `kCaptureBufferSize`."
    -
    831 #endif // D_WARN_BUFFERFULL
    -
    832 
    -
    833 #endif // LOCALE_DEFAULTS_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/deprecated.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/deprecated.html deleted file mode 100644 index 58f8129ca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/deprecated.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: Deprecated List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Deprecated List
    -
    -
    -
    -
    Member IRsend::sendPanasonic (const uint16_t address, const uint32_t data, const uint16_t nbits=kPanasonicBits, const uint16_t repeat=kNoRepeat)
    -
    This is only for legacy use only, please use sendPanasonic64() instead.
    -
    Member IRsend::sendSharp (const uint16_t address, const uint16_t command, const uint16_t nbits=kSharpBits, const uint16_t repeat=kNoRepeat)
    -
    Only use this if you are using legacy from the original Arduino-IRremote library. 99% of the time, you will want to use sendSharpRaw() instead
    -
    Member resultToTimingInfo (const decode_results *const results)
    -
    This is only for those that want this legacy format.
    -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html deleted file mode 100644 index 6b30372c6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_49e56c817e5e54854c35e136979f97ca.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -IRremoteESP8266: docs Directory Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    docs Directory Reference
    -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html deleted file mode 100644 index 8aec0fb66..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - -IRremoteESP8266: src Directory Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    src Directory Reference
    -
    -
    - - - - -

    -Directories

    directory  locale
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

    file  i18n.h [code]
     
    file  ir_Airwell.cpp
     Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
     
    file  ir_Airwell.h [code]
     Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
     
    file  ir_Aiwa.cpp
     Aiwa based protocol. Based off the RC-T501 RCU Inspired by IRremoteESP8266's implementation.
     
    file  ir_Amcor.cpp
     Amcor A/C protocol.
     
    file  ir_Amcor.h [code]
     Amcor A/C protocol.
     
    file  ir_Argo.cpp
     Argo A/C protocol. Controls an Argo Ulisse 13 DCI A/C.
     
    file  ir_Argo.h [code]
     Support for Argo Ulisse 13 DCI Mobile Split ACs.
     
    file  ir_Carrier.cpp
     Carrier protocols.
     
    file  ir_Carrier.h [code]
     Carrier A/C.
     
    file  ir_Coolix.cpp
     Coolix A/C / heatpump.
     
    file  ir_Coolix.h [code]
     Support for Coolix A/C protocols.
     
    file  ir_Corona.cpp
     Corona A/C protocol.
     
    file  ir_Corona.h [code]
     
    file  ir_Daikin.cpp
     Support for Daikin A/C protocols.
     
    file  ir_Daikin.h [code]
     Support for Daikin A/C protocols.
     
    file  ir_Delonghi.cpp
     Delonghi based protocol.
     
    file  ir_Delonghi.h [code]
     Delonghi A/C.
     
    file  ir_Denon.cpp
     Denon support Original Denon support added by https://github.com/csBlueChip Ported over by Massimiliano Pinto.
     
    file  ir_Dish.cpp
     DISH Network protocol support DISH support originally by Todd Treece.
     
    file  ir_Doshisha.cpp
     Doshisha protocol support.
     
    file  ir_Ecoclim.cpp
     EcoClim A/C protocol.
     
    file  ir_Ecoclim.h [code]
     EcoClim A/C protocol.
     
    file  ir_Electra.cpp
     Support for Electra A/C protocols.
     
    file  ir_Electra.h [code]
     Support for Electra A/C protocols.
     
    file  ir_EliteScreens.cpp
     Elite Screens protocol support.
     
    file  ir_Epson.cpp
     Support for Epson protocols. Epson is an NEC-like protocol, except it doesn't use the NEC style repeat.
     
    file  ir_Fujitsu.cpp
     Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham & David Conran.
     
    file  ir_Fujitsu.h [code]
     Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
     
    file  ir_GICable.cpp
     G.I. Cable.
     
    file  ir_GlobalCache.cpp
     Global Cache IR format sender Originally added by Hisham Khalifa (http://www.hishamkhalifa.com)
     
    file  ir_Goodweather.cpp
     Support for Goodweather compatible HVAC protocols.
     
    file  ir_Goodweather.h [code]
     Support for Goodweather compatible HVAC protocols.
     
    file  ir_Gree.cpp
     Support for Gree A/C protocols.
     
    file  ir_Gree.h [code]
     Support for Gree A/C protocols.
     
    file  ir_Haier.cpp
     Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
     
    file  ir_Haier.h [code]
     Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
     
    file  ir_Hitachi.cpp
     Support for Hitachi A/C protocols.
     
    file  ir_Hitachi.h [code]
     Support for Hitachi A/C protocols.
     
    file  ir_Inax.cpp
     Support for the Inax Robot Toilet IR protocols.
     
    file  ir_JVC.cpp
     Support for JVC protocols. Originally added by Kristian Lauszus Thanks to zenwheel and other people at the original blog post.
     
    file  ir_Kelon.cpp
     Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KELON ON/OFF 9000-12000. All features of the standard remote are implemented.
     
    file  ir_Kelon.h [code]
     Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KELON ON/OFF 9000-12000. All features of the standard remote are implemented.
     
    file  ir_Kelvinator.cpp
     Support for Kelvinator A/C protocols. Code to emulate IR Kelvinator YALIF remote control unit, which should control at least the following Kelvinator A/C units: KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, KSV70HRC, KSV80HRC.
     
    file  ir_Kelvinator.h [code]
     Support for Kelvinator A/C protocols.
     
    file  ir_Lasertag.cpp
     Support for Lasertag protocols.
     
    file  ir_Lego.cpp
     Support for LEGO protocols.
     
    file  ir_LG.cpp
     Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin.
     
    file  ir_LG.h [code]
     Support for LG protocols.
     
    file  ir_Lutron.cpp
     Support for Lutron protocols.
     
    file  ir_Magiquest.cpp
     Support for MagiQuest protocols.
     
    file  ir_Magiquest.h [code]
     Support for MagiQuest protocols.
     
    file  ir_Metz.cpp
     Support for Metz protocol.
     
    file  ir_Midea.cpp
     Support for Midea protocols. Midea added by crankyoldgit & bwze. send: bwze/crankyoldgit, decode: crankyoldgit.
     
    file  ir_Midea.h [code]
     Support for Midea protocols. Midea added by crankyoldgit & bwze.
     
    file  ir_MilesTag2.cpp
     Support for the MilesTag2 IR protocol for LaserTag gaming.
     
    file  ir_Mirage.cpp
     Support for Mirage protocol.
     
    file  ir_Mitsubishi.cpp
     Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran.
     
    file  ir_Mitsubishi.h [code]
     Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran.
     
    file  ir_MitsubishiHeavy.cpp
     Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.
     
    file  ir_MitsubishiHeavy.h [code]
     Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.
     
    file  ir_Multibrackets.cpp
     Support for Multibrackets protocols.
     
    file  ir_MWM.cpp
     Disney Made With Magic (MWM) Support derived from ir_Lasertag.cpp.
     
    file  ir_NEC.cpp
     Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_NEC.h [code]
     Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_Neoclima.cpp
     Support for Neoclima protocols. Analysis by crankyoldgit, AndreyShpilevoy, & griffisc306 Code by crankyoldgit.
     
    file  ir_Neoclima.h [code]
     Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
     
    file  ir_Nikai.cpp
     Nikai.
     
    file  ir_Panasonic.cpp
     Support for Panasonic protocols. Panasonic protocol originally added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)
     
    file  ir_Panasonic.h [code]
     Support for Panasonic protocols.
     
    file  ir_Pioneer.cpp
     Pioneer remote emulation.
     
    file  ir_Pronto.cpp
     Pronto code message generation.
     
    file  ir_RC5_RC6.cpp
     RC-5 & RC-6 support RC-5 & RC-6 support added from https://github.com/z3t0/Arduino-IRremote RC-5X support added by David Conran.
     
    file  ir_RCMM.cpp
     Support for the Phillips RC-MM protocol.
     
    file  ir_Samsung.cpp
     Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_Samsung.h [code]
     Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_Sanyo.cpp
     Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_Sanyo.h [code]
     Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_Sharp.cpp
     Support for Sharp protocols.
     
    file  ir_Sharp.h [code]
     Support for Sharp protocols.
     
    file  ir_Sherwood.cpp
     Support for Sherwood protocols.
     
    file  ir_Sony.cpp
     Support for Sony SIRC(Serial Infra-Red Control) protocols. Sony originally added from https://github.com/shirriff/Arduino-IRremote/ Updates from marcosamarinho.
     
    file  ir_Symphony.cpp
     Support for Symphony protocols.
     
    file  ir_Tcl.cpp
     Support for TCL protocols.
     
    file  ir_Tcl.h [code]
     Support for TCL protocols.
     
    file  ir_Technibel.cpp
     Support for Technibel protocol.
     
    file  ir_Technibel.h [code]
     Support for Technibel protocol.
     
    file  ir_Teco.cpp
     Support for Teco protocols.
     
    file  ir_Teco.h [code]
     Support for Teco protocols.
     
    file  ir_Teknopoint.cpp
     Support for the Teknopoint protocol.
     
    file  ir_Toshiba.cpp
     Support for Toshiba protocols.
     
    file  ir_Toshiba.h [code]
     Support for Toshiba protocols.
     
    file  ir_Transcold.cpp
     Support for Transcold A/C protocols.
     
    file  ir_Transcold.h [code]
     Support for Transcold A/C protocols.
     
    file  ir_Trotec.cpp
     Support for Trotec protocols.
     
    file  ir_Trotec.h [code]
     Support for Trotec protocols.
     
    file  ir_Truma.cpp
     Support for Truma protocol. This protocol uses mark length bit encoding.
     
    file  ir_Truma.h [code]
     Support for Truma protocol.
     
    file  ir_Vestel.cpp
     Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
     
    file  ir_Vestel.h [code]
     Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
     
    file  ir_Voltas.cpp
     Support for Voltas A/C protocol.
     
    file  ir_Voltas.h [code]
     Support for Voltas A/C protocol.
     
    file  ir_Whirlpool.cpp
     Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
     
    file  ir_Whirlpool.h [code]
     Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
     
    file  ir_Whynter.cpp
     Support for Whynter protocols. Whynter A/C ARC-110WD added by Francesco Meschia Whynter originally added from https://github.com/shirriff/Arduino-IRremote/.
     
    file  ir_Xmp.cpp
     Support for XMP protocols.
     
    file  ir_Zepeal.cpp
     Support for Zepeal protocol. This protocol uses fixed length bit encoding. Most official information about Zepeal seems to be from Denkyosha.
     
    file  IRac.cpp
     
    file  IRac.h [code]
     
    file  IRrecv.cpp
     
    file  IRrecv.h [code]
     
    file  IRremoteESP8266.h [code]
     
    file  IRsend.cpp
     
    file  IRsend.h [code]
     
    file  IRtext.cpp
     
    file  IRtext.h [code]
     
    file  IRtimer.cpp
     
    file  IRtimer.h [code]
     
    file  IRutils.cpp
     
    file  IRutils.h [code]
     
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html deleted file mode 100644 index 532307d5a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dir_84fe998d1eb06414cc389ad334e77e63.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale Directory Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    locale Directory Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

    file  de-CH.h [code]
     
    file  de-DE.h [code]
     
    file  defaults.h [code]
     
    file  en-AU.h [code]
     
    file  en-IE.h [code]
     
    file  en-UK.h [code]
     
    file  en-US.h [code]
     
    file  es-ES.h [code]
     
    file  fr-FR.h [code]
     
    file  it-IT.h [code]
     
    file  pt-BR.h [code]
     
    file  zh-CN.h [code]
     
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doc.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.css b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.css deleted file mode 100644 index 73ecbb2cb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.css +++ /dev/null @@ -1,1771 +0,0 @@ -/* The standard CSS for doxygen 1.8.17 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, p.intertd, p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen.png deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen__index_8md.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen__index_8md.html deleted file mode 100644 index ad1a690b3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/doxygen__index_8md.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -IRremoteESP8266: docs/doxygen_index.md File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    docs/doxygen_index.md File Reference
    -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dynsections.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dynsections.js deleted file mode 100644 index ea0a7b39a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - 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 2 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, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -IRremoteESP8266: src/locale/en-AU.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-AU.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-AU_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-AU_8h_source.html deleted file mode 100644 index 0484fcd20..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-AU_8h_source.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-AU.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-AU.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - David Conran (@crankyoldgit)
    -
    2 // Locale/language file for English / Australia.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_EN_AU_H_
    -
    5 #define LOCALE_EN_AU_H_
    -
    6 // Nothing should really need to be set here, as en-AU is the default
    -
    7 // locale/language.
    -
    8 #endif // LOCALE_EN_AU_H__
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h.html deleted file mode 100644 index fe4574abc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-IE.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-IE.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h_source.html deleted file mode 100644 index 27678a585..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-IE_8h_source.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-IE.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-IE.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - David Conran (@crankyoldgit)
    -
    2 // Locale/language file for English / Ireland.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_EN_IE_H_
    -
    5 #define LOCALE_EN_IE_H_
    -
    6 // Nothing should really need to be set here, as en-IE is the same as en-AU,
    -
    7 // which is the default locale/language.
    -
    8 #endif // LOCALE_EN_IE_H__
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h.html deleted file mode 100644 index a18db62c2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-UK.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-UK.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h_source.html deleted file mode 100644 index e46cdbc56..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-UK_8h_source.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-UK.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-UK.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - David Conran (@crankyoldgit)
    -
    2 // Locale/language file for English / United Kingdom.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_EN_UK_H_
    -
    5 #define LOCALE_EN_UK_H_
    -
    6 // Nothing should really need to be set here, as en-UK is the same as en-AU,
    -
    7 // which is the default locale/language.
    -
    8 #endif // LOCALE_EN_UK_H__
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h.html deleted file mode 100644 index ac8bce965..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-US.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-US.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h_source.html deleted file mode 100644 index fd8ed5161..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/en-US_8h_source.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/en-US.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    en-US.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - David Conran (@crankyoldgit)
    -
    2 // Locale/language file for English / United States of America.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_EN_US_H_
    -
    5 #define LOCALE_EN_US_H_
    -
    6 // Not much should really need to be set here, as English is the default
    -
    7 // locale/language.
    -
    8 
    -
    9 // Overrides to the default.
    -
    10 #define D_STR_CENTRE "Center"
    -
    11 #define D_STR_MOULD "Mold"
    -
    12 
    -
    13 #endif // LOCALE_EN_US_H__
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h.html deleted file mode 100644 index 4d9de7fab..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/es-ES.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    es-ES.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h_source.html deleted file mode 100644 index fe7a1d618..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/es-ES_8h_source.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/es-ES.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    es-ES.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - Carlos (@charlieyv)
    -
    2 // Locale/language file for Spanish / Spain.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_ES_ES_H_
    -
    5 #define LOCALE_ES_ES_H_
    -
    6 
    -
    7 #define D_STR_UNKNOWN "DESCONOCIDO"
    -
    8 #define D_STR_PROTOCOL "Protocolo"
    -
    9 #define D_STR_POWER "Poder"
    -
    10 #define D_STR_PREVIOUS "Anterior"
    -
    11 #define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
    -
    12 #define D_STR_ON "Encendido"
    -
    13 #define D_STR_OFF "Apagado"
    -
    14 #define D_STR_MODE "Modo"
    -
    15 #define D_STR_TOGGLE "Palanca"
    -
    16 #define D_STR_SLEEP "Dormir"
    -
    17 #define D_STR_LIGHT "Luz"
    -
    18 #define D_STR_POWERFUL "Poderoso"
    -
    19 #define D_STR_QUIET "Silencio"
    -
    20 #define D_STR_ECONO "Econo"
    -
    21 #define D_STR_SWING "Oscilar"
    -
    22 #define D_STR_SWINGH D_STR_SWING"(H)"
    -
    23 #define D_STR_SWINGV D_STR_SWING"(V)"
    -
    24 #define D_STR_BEEP "Bip"
    -
    25 #define D_STR_MOULD "Molde"
    -
    26 #define D_STR_CLEAN "Limpiar"
    -
    27 #define D_STR_PURIFY "Purificar"
    -
    28 #define D_STR_TIMER "Temporizador"
    -
    29 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
    -
    30 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
    -
    31 #define D_STR_CLOCK "Reloj"
    -
    32 #define D_STR_COMMAND "Comando"
    -
    33 #define D_STR_HEALTH "Salud"
    -
    34 #define D_STR_MODEL "Modelo"
    -
    35 #define D_STR_TEMP "Temperatura"
    -
    36 #define D_STR_HUMID "Humedo"
    -
    37 #define D_STR_SAVE "Guardar"
    -
    38 #define D_STR_EYE "Ojo"
    -
    39 #define D_STR_FOLLOW "Seguir"
    -
    40 #define D_STR_FRESH "Fresco"
    -
    41 #define D_STR_HOLD "Mantener"
    -
    42 #define D_STR_8C_HEAT "8C " D_STR_HEAT
    -
    43 #define D_STR_BUTTON "Boton"
    -
    44 #define D_STR_NIGHT "Noche"
    -
    45 #define D_STR_SILENT "Silencio"
    -
    46 #define D_STR_FILTER "Filtro"
    -
    47 #define D_STR_UP "Arriba"
    -
    48 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
    -
    49 #define D_STR_DOWN "Abajo"
    -
    50 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
    -
    51 #define D_STR_CHANGE "Cambiar"
    -
    52 #define D_STR_START "Comenzar"
    -
    53 #define D_STR_STOP "Parar"
    -
    54 #define D_STR_MOVE "Mover"
    -
    55 #define D_STR_SET "Fijar"
    -
    56 #define D_STR_CANCEL "Cancelar"
    -
    57 #define D_STR_COMFORT "Comodo"
    -
    58 #define D_STR_WEEKLY "Semanal"
    -
    59 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
    -
    60 #define D_STR_LAST "Ultimo"
    -
    61 #define D_STR_FAST "Rapido"
    -
    62 #define D_STR_SLOW "Lento"
    -
    63 #define D_STR_AIRFLOW "Flujo de Aire"
    -
    64 #define D_STR_STEP "Paso"
    -
    65 #define D_STR_OUTSIDE "Afuera"
    -
    66 #define D_STR_LOUD "Ruidoso"
    -
    67 #define D_STR_UPPER "Superior"
    -
    68 #define D_STR_LOWER "Inferior"
    -
    69 #define D_STR_BREEZE "Brisa"
    -
    70 #define D_STR_CIRCULATE "Circular"
    -
    71 #define D_STR_CEILING "Techo"
    -
    72 #define D_STR_WALL "Pared"
    -
    73 #define D_STR_ROOM "Cuarto"
    -
    74 #define D_STR_6THSENSE "6to. Sentido"
    -
    75 #define D_STR_ZONEFOLLOW "Zona Seguir"
    -
    76 #define D_STR_FIXED "Fijo"
    -
    77 #define D_STR_AUTOMATIC "Automatico"
    -
    78 #define D_STR_COOL "Frio"
    -
    79 #define D_STR_HEAT "Calor"
    -
    80 #define D_STR_FAN "Ventilador"
    -
    81 #define D_STR_FANONLY "ventilador_solamente"
    -
    82 #define D_STR_DRY "Seco"
    -
    83 #define D_STR_MAX "Max"
    -
    84 #define D_STR_MAXIMUM "Maximo"
    -
    85 #define D_STR_MIN "Min"
    -
    86 #define D_STR_MINIMUM "Minimo"
    -
    87 #define D_STR_MED "Med"
    -
    88 #define D_STR_MEDIUM "Medio"
    -
    89 #define D_STR_HIGHEST "Mas Alto"
    -
    90 #define D_STR_HIGH "Alto"
    -
    91 #define D_STR_HI D_STR_HIGH
    -
    92 #define D_STR_MIDDLE "Medio"
    -
    93 #define D_STR_MID D_STR_MIDDLE
    -
    94 #define D_STR_LOW "Bajo"
    -
    95 #define D_STR_LO D_STR_LOW
    -
    96 #define D_STR_LOWEST "Mas Bajo"
    -
    97 #define D_STR_RIGHT "Derecha"
    -
    98 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
    -
    99 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
    -
    100 #define D_STR_LEFT "Izquierda"
    -
    101 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
    -
    102 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
    -
    103 #define D_STR_WIDE "Ancho"
    -
    104 #define D_STR_CENTRE "Centro"
    -
    105 #define D_STR_TOP "Tope"
    -
    106 #define D_STR_BOTTOM "Fondo"
    -
    107 #define D_STR_DAY "Dia"
    -
    108 #define D_STR_DAYS D_STR_DAY "s"
    -
    109 #define D_STR_HOUR "Hora"
    -
    110 #define D_STR_HOURS D_STR_HOUR "s"
    -
    111 #define D_STR_MINUTE "Minuto"
    -
    112 #define D_STR_MINUTES D_STR_MINUTE "s"
    -
    113 #define D_STR_SECOND "Segundo"
    -
    114 #define D_STR_SECONDS D_STR_SECOND "s"
    -
    115 #define D_STR_NOW "Ahora"
    -
    116 #define D_STR_THREELETTERDAYS "DomLunMarMieJueVieSab"
    -
    117 #define D_STR_YES "Si"
    -
    118 #define D_STR_NO "No"
    -
    119 #define D_STR_TRUE "Cierto"
    -
    120 #define D_STR_FALSE "Falso"
    -
    121 #define D_STR_REPEAT "Repetir"
    -
    122 #define D_STR_CODE "Codigo"
    -
    123 
    -
    124 // IRrecvDumpV2+
    -
    125 #define D_STR_TIMESTAMP "marca de tiempo"
    -
    126 #define D_STR_LIBRARY "Libreria"
    -
    127 #define D_STR_IRRECVDUMP_STARTUP \
    -
    128  "IRrecvDump esta ahora corriendo y esperando por comando IR en Pin %d"
    -
    129 #ifndef D_WARN_BUFFERFULL
    -
    130 #define D_WARN_BUFFERFULL \
    -
    131  "WARNING: Codigo IR es muy grande para el buffer (>= %d). "\
    -
    132  "Este resultando no debe ser reconocido hasta que esto sea resuelto." \
    -
    133  "Edite & incremente `kCaptureBufferSize`."
    -
    134 #endif // D_WARN_BUFFERFULL
    -
    135 
    -
    136 #endif // LOCALE_ES_ES_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/files.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/files.html deleted file mode 100644 index ee0a997f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/files.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - -IRremoteESP8266: File List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    File List
    -
    -
    -
    Here is a list of all files with brief descriptions:
    -
    [detail level 123]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     docs
      src
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/folderclosed.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h.html deleted file mode 100644 index 14793daa2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/fr-FR.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    fr-FR.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h_source.html deleted file mode 100644 index 5913604c0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/fr-FR_8h_source.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/fr-FR.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    fr-FR.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - Mathieu D(@Knackie)
    -
    2 // Locale/language file for French / Quebec.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_FR_FR_H_
    -
    5 #define LOCALE_FR_FR_H_
    -
    6 
    -
    7 #define D_STR_UNKNOWN "INCONNU"
    -
    8 #define D_STR_PROTOCOL "Protocole"
    -
    9 #define D_STR_TOGGLE "Bascule"
    -
    10 #define D_STR_SLEEP "Pause"
    -
    11 #define D_STR_LIGHT "Lumière"
    -
    12 #define D_STR_POWERFUL "Puissance"
    -
    13 #define D_STR_PREVIOUS "Precedente"
    -
    14 #define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
    -
    15 #define D_STR_QUIET "Silence"
    -
    16 #define D_STR_ECONO "Economie"
    -
    17 #define D_STR_BEEP "Bip"
    -
    18 #define D_STR_MOULD "Moule"
    -
    19 #define D_STR_CLEAN "Nettoyer"
    -
    20 #define D_STR_PURIFY "Purifier"
    -
    21 #define D_STR_ON "On"
    -
    22 #define D_STR_OFF "Off"
    -
    23 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
    -
    24 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
    -
    25 #define D_STR_CLOCK "Heure"
    -
    26 #define D_STR_COMMAND "Commandement"
    -
    27 #define D_STR_HEALTH "Santé"
    -
    28 #define D_STR_TEMP "Temporaire"
    -
    29 #define D_STR_HUMID "Humidité"
    -
    30 #define D_STR_SAVE "Sauvegarder"
    -
    31 #define D_STR_EYE "Oeil"
    -
    32 #define D_STR_FOLLOW "Suivre"
    -
    33 #define D_STR_FRESH "Frais"
    -
    34 #define D_STR_HOLD "Maintenir"
    -
    35 #define D_STR_BUTTON "Bouton"
    -
    36 #define D_STR_NIGHT "Nuit"
    -
    37 #define D_STR_SILENT "Silence"
    -
    38 #define D_STR_UP "En haut"
    -
    39 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
    -
    40 #define D_STR_DOWN "En bas"
    -
    41 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
    -
    42 #define D_STR_CHANGE "Changement"
    -
    43 #define D_STR_SET "Mettre"
    -
    44 #define D_STR_CANCEL "Annuler"
    -
    45 #define D_STR_COMFORT "Confort"
    -
    46 #define D_STR_WEEKLY "Chaque semaine"
    -
    47 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
    -
    48 #define D_STR_FAST "Rapide"
    -
    49 #define D_STR_SLOW "Lent"
    -
    50 #define D_STR_AIRFLOW "Ebauche"
    -
    51 #define D_STR_STEP "Etape"
    -
    52 #define D_STR_OUTSIDE "Plein air"
    -
    53 #define D_STR_LOUD "Fort"
    -
    54 #define D_STR_UPPER "Au dessus"
    -
    55 #define D_STR_LOWER "En dessous"
    -
    56 #define D_STR_BREEZE "Brise"
    -
    57 #define D_STR_CIRCULATE "Faire circuler"
    -
    58 #define D_STR_CEILING "Plafond"
    -
    59 #define D_STR_WALL "Mur"
    -
    60 #define D_STR_ROOM "Pièce"
    -
    61 #define D_STR_6THSENSE "6ter Sens"
    -
    62 #define D_STR_FIXED "Fixer"
    -
    63 
    -
    64 #define D_STR_AUTOMATIC "Automatique"
    -
    65 #define D_STR_MANUAL "Manuel"
    -
    66 #define D_STR_COOL "Frais"
    -
    67 #define D_STR_HEAT "Chaleur"
    -
    68 #define D_STR_FAN "Ventillateur"
    -
    69 #define D_STR_FANONLY "Seul_fan"
    -
    70 #define D_STR_DRY "Sec"
    -
    71 
    -
    72 #define D_STR_MEDIUM "Moyen"
    -
    73 
    -
    74 #define D_STR_HIGHEST "Le plus haut"
    -
    75 #define D_STR_HIGH "Haut"
    -
    76 #define D_STR_HI "H"
    -
    77 #define D_STR_MID "M"
    -
    78 #define D_STR_MIDDLE "Moitié"
    -
    79 #define D_STR_LOW "Bas"
    -
    80 #define D_STR_LO "B"
    -
    81 #define D_STR_LOWEST "Le plus bas"
    -
    82 #define D_STR_RIGHT "Droite"
    -
    83 #define D_STR_MAX "Max"
    -
    84 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
    -
    85 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
    -
    86 #define D_STR_LEFT "Gauche"
    -
    87 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
    -
    88 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
    -
    89 #define D_STR_WIDE "Large"
    -
    90 #define D_STR_TOP "Au-dessus"
    -
    91 #define D_STR_BOTTOM "En-dessous"
    -
    92 
    -
    93 #define D_STR_DAY "Jour"
    -
    94 #define D_STR_HOUR "Heure"
    -
    95 #define D_STR_SECOND "Seconde"
    -
    96 #define D_STR_NOW "Maintenant"
    -
    97 #define D_STR_THREELETTERDAYS "LunMarMerJeuVenSamDim"
    -
    98 
    -
    99 #define D_STR_YES "Oui"
    -
    100 #define D_STR_NO "Non"
    -
    101 #define D_STR_TRUE "Vrai"
    -
    102 #define D_STR_FALSE "Faux"
    -
    103 
    -
    104 #define D_STR_REPEAT "Répetition"
    -
    105 
    -
    106 // IRrecvDumpV2+
    -
    107 #define D_STR_TIMESTAMP "Horodatage"
    -
    108 #define D_STR_LIBRARY "Bibliothèque"
    -
    109 #define D_STR_MESGDESC "Rèférence"
    -
    110 #define D_STR_IRRECVDUMP_STARTUP \
    -
    111  "IRrecvDump fonctionne et attend l’entrée IR sur la broche %d"
    -
    112 #define D_WARN_BUFFERFULL \
    -
    113  "ATTENTION: IR Code est trop gros pour le buffer (>= %d). " \
    -
    114  "Le résultat ne doit pas être approuvé avant que cela soit résolu. " \
    -
    115  "Modifier et agrandir `kCaptureBufferSize`."
    -
    116 
    -
    117 #endif // LOCALE_FR_FR_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions.html deleted file mode 100644 index 8f2da68bd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions.html +++ /dev/null @@ -1,793 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - _ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_a.html deleted file mode 100644 index 6283561af..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_a.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - a -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_b.html deleted file mode 100644 index b186dc7b8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_b.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_c.html deleted file mode 100644 index 928cc56d1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_c.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - c -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_d.html deleted file mode 100644 index bb2459d77..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_d.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - d -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_e.html deleted file mode 100644 index 9c36ed4fc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_e.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - e -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_f.html deleted file mode 100644 index 4cc73443c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_f.html +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - f -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func.html deleted file mode 100644 index 81b9f2979..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - _ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_a.html deleted file mode 100644 index fdc930cc4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_a.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - a -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_b.html deleted file mode 100644 index 8a21de1ce..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_b.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_c.html deleted file mode 100644 index 72df1dba6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_c.html +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - c -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_d.html deleted file mode 100644 index 5da33f0aa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_d.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - d -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_e.html deleted file mode 100644 index 358fad538..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_e.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - e -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_f.html deleted file mode 100644 index ee49a0e3d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_f.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - f -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_g.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_g.html deleted file mode 100644 index 772d46fb2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_g.html +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - g -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_h.html deleted file mode 100644 index 51c72be5d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_h.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - h -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_i.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_i.html deleted file mode 100644 index e92bc3f88..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_i.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - i -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_k.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_k.html deleted file mode 100644 index 128c6f6ad..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_k.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - k -

      -
    • kelon() -: IRac -
    • -
    • kelvinator() -: IRac -
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_l.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_l.html deleted file mode 100644 index c29455324..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_l.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - l -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_m.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_m.html deleted file mode 100644 index 87bee7fde..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_m.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - m -

      -
    • mark() -: IRsend -
    • -
    • markAsSent() -: IRac -
    • -
    • match() -: IRrecv -
    • -
    • matchAtLeast() -: IRrecv -
    • -
    • matchBytes() -: IRrecv -
    • -
    • matchData() -: IRrecv -
    • -
    • matchGeneric() -: IRrecv -
    • -
    • matchGenericConstBitTime() -: IRrecv -
    • -
    • matchManchester() -: IRrecv -
    • -
    • matchManchesterData() -: IRrecv -
    • -
    • matchMark() -: IRrecv -
    • -
    • matchMarkRange() -: IRrecv -
    • -
    • matchSpace() -: IRrecv -
    • -
    • matchSpaceRange() -: IRrecv -
    • -
    • midea() -: IRac -
    • -
    • minRepeats() -: IRsend -
    • -
    • mitsubishi() -: IRac -
    • -
    • mitsubishi112() -: IRac -
    • -
    • mitsubishi136() -: IRac -
    • -
    • mitsubishiHeavy152() -: IRac -
    • -
    • mitsubishiHeavy88() -: IRac -
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_n.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_n.html deleted file mode 100644 index 7972771b1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_n.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - n -

      -
    • neoclima() -: IRac -
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_o.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_o.html deleted file mode 100644 index b6f24d154..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_o.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_p.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_p.html deleted file mode 100644 index 4af972009..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_p.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - p -

      -
    • panasonic() -: IRac -
    • -
    • panasonic32() -: IRac -
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_r.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_r.html deleted file mode 100644 index ba2940aba..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_r.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - r -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_s.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_s.html deleted file mode 100644 index 6c2ae8c6f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_s.html +++ /dev/null @@ -1,1364 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - s -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_t.html deleted file mode 100644 index 44bd29cb8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_t.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - t -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_u.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_u.html deleted file mode 100644 index 9c4aeab47..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_u.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - u -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_v.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_v.html deleted file mode 100644 index 21d395927..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_v.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_w.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_w.html deleted file mode 100644 index 863296b9e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_w.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - w -

      -
    • whirlpool() -: IRac -
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_~.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_~.html deleted file mode 100644 index be24e6f9f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_func_~.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - ~ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_g.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_g.html deleted file mode 100644 index 1fead969d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_g.html +++ /dev/null @@ -1,917 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - g -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_h.html deleted file mode 100644 index efd60179a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_h.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - h -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_i.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_i.html deleted file mode 100644 index 9ade33e09..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_i.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - i -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_j.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_j.html deleted file mode 100644 index 858489b55..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_j.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - j -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_k.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_k.html deleted file mode 100644 index 704badc7b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_k.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - k -

      -
    • kelon() -: IRac -
    • -
    • kelvinator() -: IRac -
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_l.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_l.html deleted file mode 100644 index 8326dd07f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_l.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - l -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_m.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_m.html deleted file mode 100644 index 60fb90f5c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_m.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - m -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_n.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_n.html deleted file mode 100644 index 937e9052b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_n.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - n -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_o.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_o.html deleted file mode 100644 index 00fe3f2ba..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_o.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - o -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_p.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_p.html deleted file mode 100644 index 7e3a849dd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_p.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - p -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_q.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_q.html deleted file mode 100644 index c2d2ca34d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_q.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - q -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_r.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_r.html deleted file mode 100644 index 9a2db50b9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_r.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_rela.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_rela.html deleted file mode 100644 index 568f1564c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_rela.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Related Functions - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_s.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_s.html deleted file mode 100644 index dc5732893..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_s.html +++ /dev/null @@ -1,1630 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - s -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_t.html deleted file mode 100644 index 9c66ce4f1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_t.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - t -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_u.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_u.html deleted file mode 100644 index 18b6cd1c3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_u.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - u -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_v.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_v.html deleted file mode 100644 index ad840b994..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_v.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - v -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars.html deleted file mode 100644 index 064c3e7ea..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars.html +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - _ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_a.html deleted file mode 100644 index 41826cf6f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_a.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - a -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_b.html deleted file mode 100644 index 9cf291f62..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_b.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - b -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_c.html deleted file mode 100644 index 0c57f26d2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_c.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - c -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_d.html deleted file mode 100644 index f610b731b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_d.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - d -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_e.html deleted file mode 100644 index 7cbe96d5e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_e.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_f.html deleted file mode 100644 index 1bbb675d3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_f.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_h.html deleted file mode 100644 index 04bea2a3c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_h.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - h -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_i.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_i.html deleted file mode 100644 index 1f88886f9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_i.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - i -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_j.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_j.html deleted file mode 100644 index 09465d92d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_j.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - j -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_l.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_l.html deleted file mode 100644 index 3e5e40963..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_l.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - l -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_m.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_m.html deleted file mode 100644 index deabee226..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_m.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_n.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_n.html deleted file mode 100644 index f2c95d143..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_n.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - n -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_o.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_o.html deleted file mode 100644 index 22045d3da..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_o.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - o -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_p.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_p.html deleted file mode 100644 index dcce98e9c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_p.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - p -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_q.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_q.html deleted file mode 100644 index 3456d9de9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_q.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - q -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_r.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_r.html deleted file mode 100644 index 8805e0e6c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_r.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_s.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_s.html deleted file mode 100644 index 382ebade4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_s.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - s -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_t.html deleted file mode 100644 index 9b689335f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_t.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - t -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_u.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_u.html deleted file mode 100644 index 3ac1c1162..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_u.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - u -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_v.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_v.html deleted file mode 100644 index 38974818c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_v.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - v -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_w.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_w.html deleted file mode 100644 index f874cf046..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_w.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - w -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_x.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_x.html deleted file mode 100644 index d54f1a410..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_x.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - x -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_z.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_z.html deleted file mode 100644 index de7d87278..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_vars_z.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - Variables - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - z -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_w.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_w.html deleted file mode 100644 index ff1ec859b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_w.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - w -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_x.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_x.html deleted file mode 100644 index bc48caafb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_x.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - x -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_z.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_z.html deleted file mode 100644 index 528b49702..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_z.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - z -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_~.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_~.html deleted file mode 100644 index dc46b16b7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/functions_~.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all class members with links to the classes they belong to:
    - -

    - ~ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals.html deleted file mode 100644 index 7ea1c71d3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - _ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_a.html deleted file mode 100644 index be95d6510..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_a.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - a -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_c.html deleted file mode 100644 index 121baa0db..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_c.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - c -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_d.html deleted file mode 100644 index 34d34bc20..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_d.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - d -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_e.html deleted file mode 100644 index 2a23ab614..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_e.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - e -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_enum.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_enum.html deleted file mode 100644 index 21af6b9e2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_enum.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_eval.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_eval.html deleted file mode 100644 index e998e53ce..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_eval.html +++ /dev/null @@ -1,560 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - e -

    - - -

    - f -

    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - j -

    - - -

    - k -

    - - -

    - l -

    - - -

    - m -

    - - -

    - n -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    - - -

    - u -

    - - -

    - v -

    - - -

    - w -

    - - -

    - x -

    - - -

    - y -

    - - -

    - z -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_f.html deleted file mode 100644 index d57b47a26..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_f.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - f -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_func.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_func.html deleted file mode 100644 index a2f07f6df..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_func.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - c -

    - - -

    - f -

    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - r -

    - - -

    - s -

    - - -

    - t -

    - - -

    - u -

    - - -

    - x -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_g.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_g.html deleted file mode 100644 index 27ae53537..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_g.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - g -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_h.html deleted file mode 100644 index 7441b3557..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_h.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - h -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_i.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_i.html deleted file mode 100644 index b2380f28a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_i.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - i -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_j.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_j.html deleted file mode 100644 index 7c90ed62d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_j.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - j -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_k.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_k.html deleted file mode 100644 index 011fb2a80..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_k.html +++ /dev/null @@ -1,6976 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - k -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_l.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_l.html deleted file mode 100644 index 7e56f59c1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_l.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - l -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_m.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_m.html deleted file mode 100644 index 6131e0af4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_m.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - m -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_n.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_n.html deleted file mode 100644 index 715ffa0f0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_n.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - n -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_p.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_p.html deleted file mode 100644 index df3e3595a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_p.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - p -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_r.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_r.html deleted file mode 100644 index 7d4e405db..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_r.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - r -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_s.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_s.html deleted file mode 100644 index ac2123934..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_s.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - s -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_t.html deleted file mode 100644 index 9d990a697..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_t.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - t -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_type.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_type.html deleted file mode 100644 index ce5fb8cc9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_type.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_u.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_u.html deleted file mode 100644 index 860d132a7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_u.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - u -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_v.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_v.html deleted file mode 100644 index 330b3cd5e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_v.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - v -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars.html deleted file mode 100644 index 4db0b55aa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - _ -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars_k.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars_k.html deleted file mode 100644 index bc3e69d84..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_vars_k.html +++ /dev/null @@ -1,6940 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - k -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_w.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_w.html deleted file mode 100644 index 5a333bf99..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_w.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - w -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_x.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_x.html deleted file mode 100644 index 396164fc0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_x.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - x -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_y.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_y.html deleted file mode 100644 index f28dd18c0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_y.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - y -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_z.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_z.html deleted file mode 100644 index 3a092ec10..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/globals_z.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - -IRremoteESP8266: File Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all file members with links to the files they belong to:
    - -

    - z -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.html deleted file mode 100644 index 8a04ec5bb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -IRremoteESP8266: Graph Legend - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Graph Legend
    -
    -
    -

    This page explains how to interpret the graphs that are generated by doxygen.

    -

    Consider the following example:

    /*! Invisible class because of truncation */
    -
    class Invisible { };
    -
    -
    /*! Truncated class, inheritance relation is hidden */
    -
    class Truncated : public Invisible { };
    -
    -
    /* Class not documented with doxygen comments */
    -
    class Undocumented { };
    -
    -
    /*! Class that is inherited using public inheritance */
    -
    class PublicBase : public Truncated { };
    -
    -
    /*! A template class */
    -
    template<class T> class Templ { };
    -
    -
    /*! Class that is inherited using protected inheritance */
    -
    class ProtectedBase { };
    -
    -
    /*! Class that is inherited using private inheritance */
    -
    class PrivateBase { };
    -
    -
    /*! Class that is used by the Inherited class */
    -
    class Used { };
    -
    -
    /*! Super class that inherits a number of other classes */
    -
    class Inherited : public PublicBase,
    -
    protected ProtectedBase,
    -
    private PrivateBase,
    -
    public Undocumented,
    -
    public Templ<int>
    -
    {
    -
    private:
    -
    Used *m_usedClass;
    -
    };
    -

    This will result in the following graph:

    -

    The boxes in the above graph have the following meaning:

    -
      -
    • -A filled gray box represents the struct or class for which the graph is generated.
    • -
    • -A box with a black border denotes a documented struct or class.
    • -
    • -A box with a gray border denotes an undocumented struct or class.
    • -
    • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
    • -
    -

    The arrows have the following meaning:

    -
      -
    • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
    • -
    • -A dark green arrow is used for protected inheritance.
    • -
    • -A dark red arrow is used for private inheritance.
    • -
    • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
    • -
    • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    • -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.md5 deleted file mode 100644 index 8fcdccd1b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/graph_legend.png deleted file mode 100644 index 7e2cbcfb2d143e382be6ed65635a3d859e53bc36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20615 zcmbTe1z449w>CPFmQHCTM5Vh!Bt=3}q&ua%LApUYq`SKtX(>tR?v(EH%=LYH@Bf^= z|NlDYtmP#WSo59F`#$3tN2?gyjQ>Y9e?; z)aq4~lqPv;#Vl&?N;Q8M71U0D!L@m*tiFHSh)64fTWN;Uk2;9`2UGHIi`S>DezH|+ zYp=4QA#0VRRF~}ym!od|Fc!@BNECjU@Av4UMjhb53-Db5pHvYt^oK~MFaPURI8i=k zsE>Mm^2=C!la+TJ3#t2Wz<(Si{u)2jCiE|2+<2wF1UDa_9jSP=ik*VTK0dRDD~{jq zXYg>4i98!pcyPtvJC=)0{=2b41z~R$^IkGDN9{8w*Cxm8u_{sL*ql0RNW24=d_#&y zxV|)5sMv^}DVD)G^{-X2W4`(yU!lc*|Ne|DGB7L*wM+!MYDp>^TidQQ0k;Np-vX@v zynzgHnWE5;kdF1!qWkn4xqE)Tx$FAYvrM^IMR)gi zZiB~NU6s%?Q&E|@`|gnu^mLC)!T@yA=OQ8^Bs{ioTU%QV&Zk*=M3t(jVA&-l^gaCA z?x*kpXv7GapMtoS-Ep=@(?3h6$Hc(O$;qjH`I70dKdsv0%<}i_3FMOt<=T<4vADmI*bu9YM^&i%z~8-#%}zGA=cYe1iBR;q^WPUPz!%vMUu$(6GQOin6&U1}kGxV`WV4MnM{ zsXl{-`-|PM3O=G z7@t86?(^pv+cOlnXXl6WFUZ|bU}V$yzii$G_2{K?+dOl-Jn)H&!}EJj;dy^5!SC`H z4uf3qXUuCk>-Ao=ugh(uy}i8^m6e^h7yJ9IjLiFpBOoBq8A;{o z9~$zFjKr9$G4*BCY|^gwvsPMnlozSY-raazpz1qC6gs;cS?e1C=X{JFxO{;VM@;YhkrWTV}7*W4UYQc}`v zr9PrcxmIb-74^l;#)pgjQt1J&xD1Ap_xRj)@;h;Sd0i`+o9<2;9zBcKNRF4YHDho;be~5 zw0gySS!)M}p8K1#)9X`x17ldv1 zg(*?b{or-z0_Sn{=qRF~;0-P=?n`=lRB+(@L@9m3!_g4Xi2OE(5~u_ONGmHVuQy`k zh#Wkisdpn6L>d~%N9Y>Oj%baIjk6WHus`)!Xk=4W*WFuPFQ9t@V!jf@8uhDJ6fa+9 z2v@e49WS-Mp{M@|-iJv_8eZOZThyiLkmbrPSJc|t8XX-C1H!POsY&m5&IgC&<>h7a zR=2C(0{Ltm3ybiR6YG|XY4wVlnxBzEk3mUn#_!+Y>TM3j;l)3k_K~k2{HY$Bno?GJ zIypNNskdBYHu^;XB68gqL(sdqnXjg{76t+X0|Pw|;LbpXWicK}?frrUEmnm}V7qSB zYD};M?+)1PcgA24G01*`L@~rcRfwEE+82aHRRL-b?;>u=KyNtl>3(^;-b#m0c%5{X zJHLveenz&0&+Y`wt2#onXlMSHFCivBvH8K3gNnFa&)?+9rI$@|_Mzz-8wXAmf9@V0 z4&VP2YY7ewMCvXXD;Ig=UX}w|36UuFBEFk}FW@y%5E-u=G}q(5rlkC~k15F};`BdM z`Tr`HMsZ3B0=mJ_tK`Tt6V6~^a*UUJ-y0j__Ve$V;-`RKRMLX~HX7Spfv&dvv2*<` zOIYt|{5_mvIBJt1XLRJceA3x#2kYhffws0LPYPkG#U`Jy!9K1*_CC#gs%RFDt#{lM?ZOyeitQ+=q0J% zO}BMmd*Z$|QI39JgtepN7H`-VeZ^Lenv6!b^DfVP%aNh`oEi;#F?vWBjzv zNtX3DSxkW;TGHn709G=W75qu%!3pl_(ktu!=h98Ct_V?^32j@*-VMGBy&_6l)sjU| zSM7*Vl2W){AE^~I8Zx#7o{d}5H4IsS)>O8wQ9Gi^ud zjZc z5#l`~b;e3~a`5b>%LqWG7lj@Q9tX2OXwyI95J)ORu^6TT;&=O(n`TpT^3uH1Ijfi# znbRK}%*@c=zt^LPQKqkDNEpJx{tNf^?H>|Rap)UrV=+Ii(p-E*4LUO)GzlV--_N<- z7;xLz|dXm1vt1{~l!KiLya?gUMwfEy_^fpg>AMfRI$8=eEbn zN+_bEqlzOA&48G-ap_0~OE8}tEMZJymxgIJILuO%`udDlR=e|+J(J)dy#$Yse1xZ` zgfcG({<*wjmo8+A8XwXjRe+3C7>h6iGx_<`Cw5+Y=5HF0w%bg!v>uSKh=@Erg7i@l z@C$l|c@CE_@CcFQsR%p0)4ts3zH;$?hq%)Ioi%PFmJ?>2&1&vCNNSx$WwBN3qRRQy z6VfsA!;U8c`W}kmE($VcZpaRM_`YP28H&>U7WqFv_bYh*pNHyyfz$u5epd8bAMNEq zuLG_qTEStrHuO2Xj~%fTfF4HS|8{(1`vG17Wqy?xHOnAY2?u%r-^g2AGxPKFn+bS4 zJw8-gEemeKi^hKYS5}B}jT+i)u;0aASX^8^JY38yaO# z(;G&Jgn`l5;&KKs_sYhG(k?3iw*LblY#@)FME*Cp=a7_<>Dd}i886osYG`P9Nk@kg zh)(+c>sR`=yCXgThNnzjJUu;C+dTyo6cm_^M@W992@r>|K#}$3<>kr61-w3LXJ=>J z$a1x@-1YVKJ9>P50JMUFgM9$N6{W;-Je>0{DJki_p3OmjQwT)`NQHw`Rxh{7OTJVi zXlZFx)Ygic?@sVCNxa0=nJkcp zRtT^_wR+3&p3oQi0LWZ~giezG`;L@@RZ$GYy5{GJQ#dW&i;BY0)6-WN3}C~-!~3wP zl=l$*uP|r7g(OKj;B0$T|7fAHqOMNd$cP3k#0RAL89GJW0*CWr``a1Dp>-Bx|L^S}1x}c^pb8+=m84f|~9zZqVlXXwmdH`xv z&h8O03;cI5@a{|%zi0u4Gchp;Aa1I+Z;?TP3$JrmR8$ld7k^J1r@}M5)aoX$su~1x zE(I?yk+#PL9>5&L3JTtcwurPn@I5 zLW7NdcH3)H?thK^mAIP8bZY2Vy z<2vv2EQA7?f6ASt^1-wnDU3Xhef~dD>lcNP^{@E-|Nbh6HnPPh)vF=mTLH|!7g~f} ziQgZx0sX*##|=e}&;RdNg;J3m-W9|%@|YYMoeq$HQU&eM|L$o2-eB_~!O_HQ}7#|mpe&mDiuc5G61Cz3Qc(#PLR;O5W)FeZz~ z?KurfNDD3|W=2gYjm6B?Zf$q{_}F7sa%^qu1UM=?<5aoyDFyLl0jBf4**_3QYmBx>q%U;X8k?2(+SUtNl zKN&TbAyn+Hrn_tS8 zaw6G-T?S^EW!oHcucbHw?WD373op;l;q*}l1_mnX>-zxKj*gF?Rt>d^s+tW634yZB zuZvB1fE8@=(${7T&MPN@4<&b4)HZR$`E3vW=^#+NPvLiA#iv)zxK^i)vnAEb-LT~W zWDd^B$;sKxjceDfT&?!`#{|Zn!}fKb2;76m+HXQrIoa;fFZrd!M7gp{l-Iv}vRhKByrrRw@1>-3L~ zmNTaZ1Rwx100;!){lnFA$m;)7)le@JJO*z7?}PX7@CXv6TxfOs%)-dTgprn(R#8#$ zu2`jXWp6LU&(DvyjAQEaAIIA2>Tct7kAO^(z^<_|Oo<2*VKp_PCAVV%fZDr3y0qIK z5d+!uzt<(Wj4cP%sms#izkr$}eE$3yR57Uh(HB8l{MT+mP*JFMQCmwOzTRR!pv~hh zUR_p0g9Ppw3`nyuO6^Pg%|b09bx!NmU;!_*-FZ;t0>HxYGKS{3;!&Q!4#kSzDJVJ^(jo00Tyu7^ly&g$~9?oO*NFY!RXMB9T!S#X`P`B|?buQ^t?#iBf`}=vT_SL)N zb_o>~e4}59KBg0S6nuQdSXfvMcH8LRzkg>2Yk_n`Q%UGpSz%~vYcuy^l8~VO=QaWU zgAUmH&!0b6%G)1{E{(b7jEQFU?}mzvhLiol!T{5K&jKV352zwR&%p3s+f;9ReRHD= zDBz7YRhC;N-+# z_P8PifMf4GX|GAHr3`3rC#R=AfX{$~kBNf=%g4tD0{mdEws=8iaH}M9TRoTj;{gY# zy(Ql}r-*<^a&~@h5XKV!&_p`64Ct9B8+I-a4*!!S|eh`0xQ0;&!?Q4}Pew zu6{Z2Iz3k12ypg4BR}{E^}~30d8m>*c4>!EMy`^Vmt?IHjOsC@E`NASi6T_1ENp<&p3Z~=PvuAtka++`S zo9E`{s;t@{R9GH>jzj>#fAJ!p;BuuC7QtJ<<2IJ1H?g%<;Oyc;Ijr22bh^f4zo{iL zkpRIvH!qL2SG&bI8b)V#cQ<6Tbni~uqs~~9z2~t@wMX9#s7qgaLh!;^dO>EYuBgy? ze0)@H+b-V!QQ35iVQ5o-e)uCfd9X~QQ6b+29E90Xp(hR9hTz~2jTUC+=0lv83kBDF zY-}+wI(n52z3Y{Ec2Y9ifpZ#eK-bA3@Y)>2>s>!p)zV7Sn+2e676>Rq!`h3NB}Zqh zd8u|P7MhK=xeK;L>K^6#;Kq!A{;Lx<;kn7|JOXQ&W6CnsYdRXE)8mopWY z-HBS{=I2-2toO1&4ys25i_h){NBH)d?&ne!iEP^}O7shp&rZk1n-yCPhwx9F`Ju7^ zP*?#z64KGrQ`o;LEiI+HXTT3NPh}DmBzxuq;pF60mQ|eAQlN=h9f)}?DJ9hf4mjRA zkY}Or7$|byed|ExRXkl%QBmP`zh)M^-Jv=^UM2?svhU&U3MTfE9Sve+WE6sq53a|< z!xNHTJf$f!Uke1DkQop)V`F2V7L?(D(B@nsHPmMCu|1)Bb#-DYRw{NIF#p+ z=ebwau4DuRW^U(`mm#5{fO8re7#ivVWhLZvs`P4b($Qn$vW!ngMh0lIN(5RO8mJ5m zrMBH#0!u&=gMs+_`*V;*a{N%-bM-8czPmicD|fKB&&bb5^zeAF?FPCM%%rEA%7qKv zgz9$5R#x491LJ(DwB}z_P<6h})gXiH0P=pv_g5b=adDN({(RP)G)ymukf!MdS(e4= zNCT>Hv9aMmmD#y^gXv-&ONSZLH zBAx{9GBG7(=DICDK0X9RSLWJX5MWvsyDgBeY@WT_mE&hK9{HJ|?HLS?E|9>XnwN$| zFxcr;pa>(Oq4iYgcCW0hef#$982|v@quW$eRM{H&K!OI^&S!o8y^N;A=Ma7}xzi?q zo1>(1C8ed6P(y=*<-=g5>N|_g)B-symYWzyK@qsQx!Jtz+?&fC7gXeO_@hmGb~$e) zA|Zj8FZ-hlR3B!b_4mLRaPGI3-F5GqxXq;1)^dQ;JcKsX-`^4Xf{B)zNx5*>xnwt0 zVd5r}b0)3HBT>@0f#2w&z<_K5s0|E^GA^IJOfD#lDmw%Y0Cpt(Tv<& ze}J+8nR~OxOhg;(W@VfMUt2CWz>TH5FE@bE||DBVAUaVVlC zi7I+0W55#v8My+ep!{x^s37W9EA`+3JB0{%%zj1Qq590`pV?WR zu?%5VAj1Ein7|??4wVzU$r&6Ky_23;JG)6_Ge)noTnt(7i%e)%*O+ic+-nnRiKufr zWKgYuAfl6WfU^q3+sK?8YWgo#Z~|_Ze%aajrSb9;r>YY?xp`+I7G(ks;{@}Hf41oz z@_*^)wYi9wYqhQ%9)^P+#lcc5F<2uK5|YU$`f^w3cKkQerCi$HQWW~{%o3ts_~E-5 zI3@-L1|7eCp#m(m={dqsZ8A>je)-3EXDkyIos1va@kqFH$>#;RbZ4=dOFWzi-rU?A z^o`a_>z5S5nC?EPy~OMoAIAcH0B-voOz+=(i$agrR6w>y2K+LP?sI&oReux(wAlb2 zo-crB;3OadhUxF)1LOUB1aYy+p&O{sI$ytrVF+GBj*gDTrl&3YX%*E$Era5nbU_bj zMF(XIRN=S1UiYVc+-{fjAVJ`@rkbk-PFXD9(lY_M)5XOFv?6?={yXF=mFg2*~6~B++|JccZYh~mztz5^jqy3vNO2X54pk`za2P#npmiP(BGlmZMFgTQyl)lx}EF{1F=Vl6D zx6xo2MFgxUJ7g!p*uM2G5k+?iCb1=ijU4rj&xFjUmwY=)WH;HXO;w6HQY!ZT_Dv57 z?mad2#_C#+g!3amMpDvEe}8|^*|rP#BBG{-{(HhMI!+l9EE>Y1@2Y>ibi=`vim6aq zFp)p*GWq6&W5<40gSppwOPabjY!_CreRJUzl_()EI_vwj;R7|cvJC>Z_jrD#&#{u+dO6OSU2?@ zoq>zYhZodFb>>}lay&YZ&5lsge!@~YKuF&Set+bm$Z6JpB%E{{M{vkRq ziiClUsDTaTkv;-ulTVA^&F0F&nP^@kEc<%}J~M^sfQ7^K9$okK5gyryst%d|V- z2OnECMmh*!@2nI=L}chS=V0^laEM+V#g|m|rL{XNAe|m+1X*pb{8{Ah57`{EDD~-j z5x0!DhU`5(%}da>^jsXDH)NGzljtuknSR(_j`f?@`AGZI55XdV-#WL?q=>I)GGvH7 z_?=H=LK{L0_Q-_X!gPrPS6!CuV*AaU5@JTz_066NxvO@9zGqX_Zt@u*rS<*vX2N{8 zJWG(xW%12F6lF#?TJ1SXX!l@TAQt%(32PF`?JckK`Hs4YSzTBN?4H?pmIp{+!nIt{ zTDh5>fw_i!aB%cKg{E|`Bxb4%_!&F0JM4pe?V{4vo{>_aCGrq4iAWX1WiTs-9Kazr$(cnuJuLan_XrYPw&FEKSfR9DCNn$X$A2uiA>!Yuo$%f- zW3;~R2*cic8v9{}_dP~2$YEbr#cd{ebX!C*1_K=K2-0~_Ss4lV8&JS;d#A*RF+?!e{H_)}XRP0jhm>GX_t_IB)B z5;5^2+tn_S5;Z*UgM()Pa$23-+#L@wTk9A{P*OQiU_W@z&e|&_gq+;)w>&s9-QVt$ zn3yXDuH8m$^k*=XJiU-96h&{RxRQ5u(cj@MV?glyiY_B?`}a2Fom7$XSWjr=%BBMW z505_{BR&L}9E|&i8GeQn%QtumJg18*;JCO@6!FJ%96uu?5;2Lv zoE!uF!?|}F4JSzaWV8$JCKJ7ot7EUyodX%A&%(k$CPoLS0xN2Wu3dk49p-GSQD?Eq zsqp(pQps1gIpP~sJnV=A6pj5d@g0YH>J~DAVKXW=q zk7**v&_r}~ks&Ip2nxHV(SdPv%e_FQZbVW%YzboccC8}Yh#p|kv_m^5=0uFmY<%d%qORn26uJzYUTFg z%|Zi~KO)9YOeE)>@orQ~`Oggv_Ws$~95ppN#_WbVVV!gxDC$gB3|C;0?{Lz?Zs4-Y zD8Du~z~_^v2FSP(I|uPs%o?(&?T&MKF&e(6(YxyK**sQi59r%oN8{rQJ3SRn8JTR! zC=?Z?20i8Opb)9jO17&cHm!>4{Yla2=(+C$8x8I^ESCq35g8dKiHS%o=J7ZSi-`IU zw`|<5>`Kw92`W!3y8F{#61gkM`=W~@aV(!+9-Ff8qB8p>WmE8?W4~X{F;r$Ev2wS)#}U&jr5Jnn-3fb%*%cOo8As%=U3UMiRoD%LG0TK5jUdS>MN^97 zHtPZYVaL1`)!}%y*}T&;Z>{+{>vnr&*TZ=(c>{*emX=r=np{-8ytTci!@tz1=nsa7 z@~LEAGcdgH@yVR6Kc-0&80yLp)?C@z3aiw=dy~Aw?|P0)C4LW=Q6rKCLZbbFlUyXw zah=t^RxwKc*&-(qS`)Dhk>7VShriqDSD=!;s4+Jl%h;r*=I;w926yu9TUPYqBD{s1tsEug!RO@wB zS=`|@?izk`n&>$>9{s#HZY!=qMuMDhu^*a=voTu6ATa>TT)aKkErddQ6PM5BguJ-=!lg!PF`Etv?rHoe06Zk|H9RvGTzI5BzGfem*>XC3;qx3}v0$Eyj z?WboVpA)9*Wr;^E38+3@U2FK7wX}!F?x|Y1XoaE?oIf0Nk2K~wPr}=7F-_#RO*r0t z;3(9Rmq(_giowLk58R*0#w59id-bZycJnR()dlB$rkS9n`l8_rBmL!4k4g3%~o%o~RhlBL|;5zxs{dsn+V zL4EAn8E;($=epCkdF;glEi;eE+%mi*`hd@33s=WX#>J$xyn+nT*3B9JLKEJZc3&U2 zs95eh2?<4c^7+nAB3W6^^ZpfarD=A9(Qtt=OcR}6Z^9FzU4KifPjWZCwg$hc6VH#r zDYV^T+QfHXh!%=|>&BsZ#~8EP8uL1{@MHT3dt3`YGRQyOW1kTFA{Z27VGYAN`?mQ( zhOoZBMkJB=<36y7%4H?qz5K)p+*qQ`jsegh-x?*Cjzleg{{>Ox^pJ!fZP=e$0s&T$ zp`|(-#cyj)BTypN_q*Be1_ebsOd_ICVy-M};JM)UNCwRbi}QVnI58siFB6#QD1wrM z(ph;F;RP?LU|kPsFRMneLTz-;O;pi{11i<)Z85(LbrW=FiQQr0U9tE`4|(Oz!% z54_ExF_DT&OAF1G5Lw-JLeV=#K_$~rL$~^sC^$Bj!Pyq);!I5%8JU}~ucJE6*%bFm zz`HaFB#bvR#c^UF!@pNiftjmi^RBit7EAex5<2*iK6=ij*0jH;@5T634qbd(EiRd_ zKt_4#sDtyc>_P5F?$x7+XrX&=K}$=Gz=;Ek1!r{idaa-1*&kPTBn?qh-WwQT-#=JU zF*BorwlaZG8xudjMnRPn1HWLrPbxLC1M}A;(EOCiFR79=F(Cnm%lcwZ2t>iR;9yL2 z^l8lCCcW#EqjNhwSW#-Rm6_u9E}>a+qGxCg81{XERDyoWd~{_Z<|>w!v)*Ico}IsN zUY`W~Ae~udSAW6C|Fgx#?X(+15$N;p%DPRb|Nf;0LTU5K1zOj7pB&!i35{G`U>T!8 z90r7%M*+7rs;mFo5qFFf2(SjKxWUt%@u9yS|H5hU#q?`yzvEoL&xoi9<6kZ>Mapb* z3E#h$mJuN$j2W_VKhiL`Kf^Fe=R<6*J2(HR9~v&xH(M!4z)|#~?yF1WzIAeGVj?>n zoZni9k2-MloLtVgR#<1E++O7~tr?P{4w;GP3(=+ta-nmi}vb&eF+8!6H5k3yj) zfaEi1S>bkV11=?ezyIIhL!D%1(a!L=LVghL1gDB(_Wxr zphw;iAG+;!FZ_w(CHUTy0Ul9gO^t@1AActlR=Zx12lX%kJs952?W34sv{vh{&h3ew zOy1qb-Rr|Gt65J&zMo7#3Fh7C`6Zn7oaP%_0RzQK(v|Fg4WMNt3L#YgE=kESsaRB0m7>7Z(5Qbft+*{=RLiQVLRF3eGhfX zWwmLQ(qrS|hQDC?JDwLVcyP$D3N|ddfDW+ueuqTbk2DFZzkJ#7k^|^*8T``lYxT=R z&&;P+(uE#7N)+?Q>QHLyOUn0Wo_b2YG*?(IivCLB0{*l~HCb5-0BgIKT4$o8PDng% z?SFoQr);^iY{$Ra*Af;-{_blR?My{Hkl9Gk*!eu~GC(6xESX%Y=)>8m*>{h_IU$fA zzExIIkdRuu#CGUWw{kF#b}}+sw_MXaXsN5#n23s_`V7d308a&{K~E1izYS%`+20k% zTlN~%owo@Naj~(%7*XNC62sVyg&T#W?kT%pWp!YrHTkS6f zCo7B$ZHgoNzilU0+$LVMYuvyOFnupHl_cE|^az2?mdKu1>9k&K`vD$@lxG{>K zgM=0?1~L?g)ps;8*>=V_Vv5leB2B_?a?syGK2g$jl3zV`ly)G#QOp`(&-VovATR;hf(JyP!`MTlyKk^@ZP~}8Err5{g_A`T|RwiPm6!&T> zGc)u0sQDQ1Ss7r?%>XU&L=JO&sKZ-RQxouB4B%OUyb~8Evs{jlXMgcQ+8td}li~bW zTkVTM2ZRpb>+v<->z1Mt)Bd`l`4jg2!YtGNpd+dVbeUS_fSAx1R6O*k)uTUreS(o^ zunJ2+r94@3<2#-Dj02k0KrEwW;NU=Pe(T^bKe>TYMI=fSb^}`MU}FLhK<~BOl0LZyZpZD#osf~)EyezV3mR~~@Xgm9QZ{=D zMGtJ+mUVCV<%o7g1dtl~PGjhuK=zxoBy*WZs{Hx&O+{|9fWUaOneNZZ3DQ+(oe>V8G66r=vZN}^<4 zu{Jj!H}7}N2imlr)L{evq*qfT#-LT%($X@!(&?Mj)+V^W)XIl~j&4NE`4!mMjile; zR{5j6038mMV(wqRe$9e!aJ^o?dIkE6z-9)Tqjg{Zbb;=6Qd$}rF~2i23I@h!>6Da| zA!w7B*J1A`Xr0XRfwTyW3V7>4dmmhK*(NnIG3jq|IvxSd=Uzy~`MEt!!cY=$s;gHS ze5gJBk4EvM=k^aL0to1mCW7DHZKYTZYUUS();HPYOh+gv$Vf8$>@%)_MYOCG3%#tg zTog3S%OkH6^k~z8J_khf1wCYB;I8Qp<~wzorEC|IHV#HNKb}e}z41W%=$zK!ph~;y zV$VMRyOyr`uh&zb!yDTCii*V6hf4%b_v^@#jCasrdCk`xMapd*ibmR$mXz$-FCISE zk51Ci^BhHeo|jz^DS##N?y_FvFKrR75Sdd8CwTwW_fkf}YVI(7;dyX1<}35hLI+ z(et>wRHi;2Vy+_M(2J>~A1`~M}#wsf0EQ%8tNih>#2fi5he|%u; zXRD3BXaxSrQK(X!y{+C)x{=tDu8{1|sBfx5iDaDQ*Jr!Bjue`eBjv3K^zqRM%u-nL z@)Fu#dQikCUuJC&Q`vlc5WO6ifce$Cr9YiJL*st&8B&2VO zLHv}!0GbtbrV}(h%V3&Dm!B+hb93`;05JcDmTETFsSFh}7DoIpE&zAKiC3@N7aUoW z!jS#n;}a4NfWa98NPKc~5rNm~nwXe^$Hks9g7+&L8Wmz~0J#@RyA&CGG!ub z3+3%vorQ{5HY*+PRaHObMy~0-eY|RKUp@9B=CTy+?CmAc(y{{Hc|vjVJ#Ew1SEelA zMQmR}!PA(Aq^-di*R)@>Kj++)$^Gce|1>ay&>jiKX~5V~Sft=B5-^kPOypxgy-w!l zp$!e(5HJPx#s3DJJqq0CndRje`uh4k*2F0Zau^JEQ2*A>Y~>{eGni%hi2-0Z2-1!1 zZCD6!MJegGOodZ9hqwWLGtd->V9_> zrk>3>!(!GpeFGl=9&%4^|4~8WKp-^OkfP_Wt+QF5=rE&`ql*JIM?CT<+}ryVkZeCz z7a*tG(;?P#QB&{%hQgZDZ33=D2kJHRn=O!(L;dej2(CtQAq9PYS*l(<22#Km^OJZceIdYF%JbLsnL{ zHiUzN0}tAJKW=}D0Jf*@jt+==-PcZF3^EJ*4CbxoY;rD>mz95DM(pmIzCHQ``_9Nn z&~hnE9F%*g?8Vfs@ht!Wz!AaMuTzXZfBCu8Mdo?-aI(HZUiozCdGEe!{I#h9`S{Y~ zMW_aTZDJ7x5Y5BpD`64EBYVHd$+a{)F^!>q&ufyB_4Il5@qT5`EbwZXd=NB!qJ{{; z2lb{2%-Ec+Q4tWMu-N6{03L~|IH95uI8%Ts&8~Z+LYK>gB}Z@rl1ZJcC*hFD}67 z+>`}X10!Fj3-@o4jW4OD!yN;Qe+P?zsrvohRd$r`rNfLm+A0OI{KuTvN zPKiwMFpRD$q8Jh4W^?wwP@joBY^jUE!+l{*sum-Oj-sDJPp{g~)NV~G6+=f$tD7xh zWzZe)(Es;LU90bBO$`aCG-8}O9W$VYh03JV{rJJ}5*ZgeS@zt&Xy8M9MFSmE19~>J z;}5#0LuRbNdTs>VN1J(HDs*6g^QmO&FBqZf0?zG;i3xo$3#2z+Z}qvR5Li}!&CjPe z94#d6?(MNc-@o<~xu*rVT)tlHP5qjiOWxhzX9LaP%RX|iH@%@fdYr&*CROYei;Rq{ z3wpfz7IQVaAZSaRj+da9!o!VCW7D=$d;k-UEI2qgdAYegsi~>6f#jb3B&4K-`XzJD z=C}0F3i!k9J$F1n^IVp(oOsC3LwZAB+?dQyLtqgd10ze3=;3nC&?o_C2_LV$37HUHzCpgu)8WIct0^7pUsmQ$ z%lFk*M7F&XI5r84orecs2&OV|zBkRa-VwDu-pXCyF#N30U2H^`*aZ^M3D96y_T6BC zLt7+WkQ6HS48$B}78mz8I6M695JE$qsfr>>!e}fx@1)xr31GIvT|?u$`1)Ho2pf>| zAX>N9DoII6`jF7vP1?{PQO)t9I9Df{xAFMvqd`KIyInMJeF)v)oPqAYosmNJg$!u!<&_L((0L)jm1x(+B1bYXHoOc6OAmZx*|vsVJhP z3<+2pIEc$H&fN&2m*Ccbk z{7v!+tdjTbKfRIMf8W36W!wgG^VvH%T}grtPo-h_*QsK|=))@&k*^VVWTaEx>) zkRi~;+zu!j>`Z$4t3r)V8Sj%3c4%||w=cf4LkxM}^uq747qb)}A<7*E8;_~n0 z(MJc11eV-Jv8s)Ditk@6W_^9Tp@7g@mkjkL+X;grut(1%_s#7J8+Y@Lj2~0v^yU*$G2pzTNgAYH~Q#CUa;~da**fqRHa3K5XU=mKb<@MA}j)Jdq-W$Hd z;lT^U601wGLu3pL@pNV@j=*f3{I0FDEun~! z5(TJ=(Im;f#!i37%=1`CS|_h$c`0ZEz|cT)%=x(n9HP)oxxi(+q|~4v2-n-IdcV+* zri%X}@WosH?X1{^aIdLkIfwEnX4>!2ovx00ehEGKeK=kM@o%D1`n)5FEqb^}U+)VK zzt__|w;c`k;T)mPU@VNa6FD4P^|VId=fZDc*gsQ;MQtS+6^=HA)u;nOX$ITKY{x1Z z_!uz8YND0PkGu+<5N9_w{AbsILJ}Su`;~yeB-=_GMeO@xbA99BlBS#Hmx-uuioo&d z42A{7rgh&{@{W=?*Ch*mR>FwkwD4cA<(Tglcy{VkhBrzW-94;;pIcUESr7wEGx&mO zGkP$4B@r2*JDRpHDeWEsb`%hsZ{yi+#qJh2VSVu2&HMFW*zBJw}1 z-sQ_bgb&&l3l7Gb$yE738TaxfJtT$kYu7{0T}6FGU&tyQGiVI4!|zSN?Eh(X<7PF* zPE{%Ku1id^0F>?=SY*geBQT!Rm69{*R(OBUs?xR3614>b!2* znMSP{5q71Q5TnN<59r`v6zc+wJzo|W6F_T*FHLB)dv`($^Z8V9>0JyML$RgCMZ{PV z2VGY2@I81gE@P0C8qv}I1Y=V}St#`jx#Nv2ZaD-G9EL<5qOJvbq|i+9v9V0`alZlx z)LIiq_YXdEZycm_7sL>7Yx_s)L$k1$YWjG|zW>%yb6L5}G-w8ii5o;Wsap6*sYY<3 z-8S|sA}Jk5Sn1~B&WS%efsYl#$y)no5pvMs zKoNat9|I~-3@AxIm(27CCt@~0VP(?UG zH4I2a-Db1QVT(<1`_@HxWMq*8FkaGiXQ@3T&xrC$gq0xp^Huv{$ zTNc-I@$+59ITm?5^K{UqTLp8Cv(?+YSy>8W`EnA_2eUT`BQy8)txzq&+RE<{f6$bF z<4WN#YYxmG1YKK)oD~E`O+S2)DQd-`VSO5>jE{^KE~2VRQl|BQ*w`q>%z_0b&4@rt z8kKyBG%v4|JGi_c2T9_Xq$l9XqQiFsk@gS!##R6t(#?(WFK$Ov(%Y+T-c(y?bOTuf z7^!Tweo4jcC#tHTAJ0}=Bf;?lsZj`Mkp#d1Zt_=E>nHx|RbeF52NwJT=GTwM_EtBv zkS48l$fIT_ye^*T7tF?jx4JFNjdh4+gW6{PgD80jPWULop;xAcY5xe}WeRAiLTYYj*=G^JNEj0Rc zv-pQlVDN|CxTr6x2nQCSmW0HM=P1Wz$3p{eh1Jz1%7-a^e2#$gkJZ&mKtkjoaGr{n znaF&rw9_QGf(yp1sVS;W58f;!5a`ey*1IdS}um1l$7^i{Eb3GpD5$6J1j}wmu~5=u59z7Ib5hyq6Y2^ z3>IK&@yG}(w~B;vd~ukP%{T&hZ$u@jdr?GkIdW&6jL0vI4<%xnkUx4PtXn9Jf zXJ1&CPv5$d0OKd;$Ow{<^B6T_K=jZVkbi{_=IfuKym)@qysM(777kE#PF|XbzCPXi z_bp*n=yJ+)MT;*;8-~&1>+)*h1B1dMGLwV+W@Za|dqTY~)s~HoXu1^T7B!cRONJ>I zvnh_#UC9TZ=Q^?*G%njFVz78x7ctU{nyC`Bd@k)uZQ#yMUsm*dOjoTkz?d#^K_})4 zK$@2LoPc0FswJ+VK;wCx3A!>=n1nnibSiM5B^4|@^0mx#CSYf90fBw-YoMwg!t3 zC#(DsqqFk$v>@ zV2KMt;14jPB${oSxpJ_=9~frvQCoDYmVDPi9Y#{PT%7L~5x^a0-BH9-T;aH+7WSRs zXxCK4@D;kBUkAra2nr51s-vu&sp&QraY{(5o3^m(>;!_)@!w5i;Gs>o+4+PHW-(8@ zP~@m+w!S#KMocw2+FdL*?u4Wwu+P+V>-iDVFp$7M&HT6+6TlMaB`69uu{O1^kkHb4 zYisv0Dn&iSZo4e2x*7%NHLr<;*w)C!*u3Rt@zm!^Av+;#Hk|Q=>9E|kkCktoaawv^ zcXJpKZc8bCmpNb02pop~4|Er914~B9L12{slQc;DNs``Ocx5MH zp`BMN|D;PKNFMl7npdhFz42v{P}3X9j^YwH9YaiAF*Io1gM&#v>@}sJATwYlo(v6n zKWyoJ`SL-euMdRH{rioELX+_1GNU9W({q25>SjB;CE5X8H+_08U7R%3vgK%eJN}{#i)mBy4+@gL}-aol8U98WilWFMVB**VODXs6IvSm*3Lu%s5zi>Q)`!&k4tWMpNjf ze_wYi2@9z){MANd-&M-N-tB-W{6rmMQ;<~EZH?qt85q0hlFY?{lrfoU-|J__ zE4;O>DUGWF98;e5L!<4LcXpkX{f&f%hSZPag_pV233MJ$R$96Mb^>eAl~-pf`z$Oh zfJtqgi_2OIES$NDBlRacY+-*2x52WuKvr{F0(edru7;eikF(tBv|T#{g>v%ig3pC(h_l6SsNLR+uiQA5#e6 znt8Vzj>k(|1*&7kAu(k*#dgiuxJY{VnqGOI+p~@i%y9o14e;xLa zix%ggIEA>mxv{6e4&2)Sl#HpVX&N+N99-Ox!e8Kh;MMULyHL~zwk4HS5cILPTq(o;rad zCFOa$&ttk0wve7pg{Ko0AOD_bX<}08;h4jqTA{zuI9Vu?8L6E+HqnXA*Cu_mZ1pi# zbFS-o>|19L+{ovv!D(>ugNKIoo}FXpo1oL;WXl6gkMx!@7e{C+(1Y;fy(OBNwEG(bRNTTwEM`+7WQf7ne*28WObv%`~g4t1lE6Q@I8g8J)3cs3@sHZ5TyH zPIk$sBP~6 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/hierarchy.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/hierarchy.html deleted file mode 100644 index ee554188d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/hierarchy.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Hierarchy - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Class Hierarchy
    -
    -
    -
    -

    Go to the graphical class hierarchy

    -This inheritance list is sorted roughly, but not completely, alphabetically:
    -
    [detail level 12]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     CAirwellProtocolNative representation of a Airwell A/C message
     CAmcorProtocolNative representation of a Amcor A/C message
     CArgoProtocolNative representation of a Argo A/C message
     CCarrierProtocolNative representation of a Carrier A/C message
     CCoolixProtocolNative representation of a Coolix A/C message
     CCoronaProtocolNative representation of a Corona A/C message
     CCoronaSectionNative representation of a section of a Corona A/C message
     CDaikin128ProtocolNative representation of a Daikin128 A/C message
     CDaikin152ProtocolNative representation of a Daikin152 A/C message
     CDaikin160ProtocolNative representation of a Daikin160 A/C message
     CDaikin176ProtocolNative representation of a Daikin176 A/C message
     CDaikin216ProtocolNative representation of a Daikin216 A/C message
     CDaikin2ProtocolNative representation of a Daikin2 A/C message
     CDaikin64ProtocolNative representation of a Daikin64 A/C message
     CDaikinESPProtocolNative representation of a Daikin A/C message
     Cdecode_resultsResults returned from the decoder
     CDelonghiProtocolNative representation of a Delonghi A/C message
     CEcoclimProtocolNative representation of a Ecoclim A/C message
     CElectraProtocolNative representation of a Electra A/C message
     CFujitsuProtocolNative representation of a Fujitsu A/C message
     CGoodweatherProtocolNative representation of a Goodweather A/C message
     CGreeProtocolNative representation of a Gree A/C message
     CHaierProtocolNative representation of a Haier HSU07-HEA03 A/C message
     CHaierYRW02ProtocolNative representation of a Haier YRW02 A/C message
     CHitachi1ProtocolNative representation of a Hitachi 104-bit A/C message
     CHitachi424ProtocolNative representation of a Hitachi 53-byte/424-bit A/C message
     CHitachiProtocolNative representation of a Hitachi 224-bit A/C message
     CIRacA universal/common/generic interface for controling supported A/Cs
     CIRAirwellAcClass for handling detailed Airwell A/C messages
     CIRAmcorAcClass for handling detailed Amcor A/C messages
     CIRArgoACClass for handling detailed Argo A/C messages
     CIRCarrierAc64Class for handling detailed Carrier 64 bit A/C messages
     CIRCoolixACClass for handling detailed Coolix A/C messages
     CIRCoronaAcClass for handling detailed Corona A/C messages
     CIRDaikin128Class for handling detailed Daikin 128-bit A/C messages
     CIRDaikin152Class for handling detailed Daikin 152-bit A/C messages
     CIRDaikin160Class for handling detailed Daikin 160-bit A/C messages
     CIRDaikin176Class for handling detailed Daikin 176-bit A/C messages
     CIRDaikin2Class for handling detailed Daikin 312-bit A/C messages
     CIRDaikin216Class for handling detailed Daikin 216-bit A/C messages
     CIRDaikin64Class for handling detailed Daikin 64-bit A/C messages
     CIRDaikinESPClass for handling detailed Daikin 280-bit A/C messages
     CIRDelonghiAcClass for handling detailed Delonghi A/C messages
     CIREcoclimAcClass for handling detailed EcoClim A/C 56 bit messages
     CIRElectraAcClass for handling detailed Electra A/C messages
     CIRFujitsuACClass for handling detailed Fujitsu A/C messages
     CIRGoodweatherAcClass for handling detailed Goodweather A/C messages
     CIRGreeACClass for handling detailed Gree A/C messages
     CIRHaierACClass for handling detailed Haier A/C messages
     CIRHaierACYRW02Class for handling detailed Haier ACYRW02 A/C messages
     CIRHitachiAcClass for handling detailed Hitachi 224-bit A/C messages
     CIRHitachiAc1Class for handling detailed Hitachi 104-bit A/C messages
     CIRHitachiAc3Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages
     CIRHitachiAc424Class for handling detailed Hitachi 53-byte/424-bit A/C messages
     CIRKelonAc
     CIRKelvinatorACClass for handling detailed Kelvinator A/C messages
     CIRLgAcClass for handling detailed LG A/C messages
     CIRMideaACClass for handling detailed Midea A/C messages
     CIRMitsubishi112Class for handling detailed Mitsubishi 122-bit A/C messages
     CIRMitsubishi136Class for handling detailed Mitsubishi 136-bit A/C messages
     CIRMitsubishiACClass for handling detailed Mitsubishi 144-bit A/C messages
     CIRMitsubishiHeavy152AcClass for handling detailed Mitsubishi Heavy 152-bit A/C messages
     CIRMitsubishiHeavy88AcClass for handling detailed Mitsubishi Heavy 88-bit A/C messages
     CIRNeoclimaAcClass for handling detailed Neoclima A/C messages
     CIRPanasonicAcClass for handling detailed Panasonic A/C messages
     CIRPanasonicAc32Class for handling detailed Panasonic 32bit A/C messages
     Cirparams_tInformation for the interrupt handler
     CIRrecvClass for receiving IR messages
     CIRSamsungAcClass for handling detailed Samsung A/C messages
     CIRSanyoAcClass for handling detailed Sanyo A/C messages
     CIRsendClass for sending all basic IR protocols
     CIRSharpAcClass for handling detailed Sharp A/C messages
     CIRTcl112AcClass for handling detailed TCL A/C messages
     CIRTechnibelAcClass for handling detailed Technibel A/C messages
     CIRTecoAcClass for handling detailed Teco A/C messages
     CIRtimerThis class offers a simple counter in micro-seconds since instantiated
     CIRToshibaACClass for handling detailed Toshiba A/C messages
     CIRTranscoldAcClass for handling detailed Transcold A/C messages
     CIRTrotecESPClass for handling detailed Trotec A/C messages
     CIRTrumaAcClass for handling detailed Truma A/C messages
     CIRVestelAcClass for handling detailed Vestel A/C messages
     CIRVoltasClass for handling detailed Voltas A/C messages
     CIRWhirlpoolAcClass for handling detailed Whirlpool A/C messages
     CKelonProtocol
     CKelvinatorProtocolNative representation of a Kelvinator A/C message
     CLGProtocolNative representation of a LG A/C message
     CmagiquestMagiQuest packet is both Wand ID and magnitude of swish and flick
     Cmatch_result_tResults from a data match
     CMideaProtocolNative representation of a Midea A/C message
     CMitsubishi112ProtocolNative representation of a Mitsubishi 112-bit A/C message
     CMitsubishi136ProtocolNative representation of a Mitsubishi 136-bit A/C message
     CMitsubishi144ProtocolNative representation of a Mitsubishi 144-bit A/C message
     CMitsubishi152ProtocolNative representation of a Mitsubishi Heavy 152-bit A/C message
     CMitsubishi88ProtocolNative representation of a Mitsubishi Heavy 88-bit A/C message
     CNeoclimaProtocolNative representation of a Neoclima A/C message
     CPanasonicAc32ProtocolNative representation of a Panasonic 32-bit A/C message
     CSamsungProtocolNative representation of a Samsung A/C message
     CSanyoProtocolNative representation of a Sanyo A/C message
     CSharpProtocolNative representation of a Sharp A/C message
     CstdAc::state_tStructure to hold a common A/C state
     CTcl112ProtocolNative representation of a TCL 112 A/C message
     CTechnibelProtocolNative representation of a Technibel A/C message
     CTecoProtocolNative representation of a Teco A/C message
     CTimerMsThis class offers a simple counter in milli-seconds since instantiated
     CToshibaProtocolNative representation of a Toshiba A/C message
     CTranscoldProtocolNative representation of a Transcold A/C message
     CTrotecProtocolNative representation of a Trotec A/C message
     CTrumaProtocolNative representation of a Truma A/C message
     CVestelProtocolNative representation of a Vestel A/C message
     CVoltasProtocolNative representation of a Voltas A/C message
     CWhirlpoolProtocolNative representation of a Whirlpool A/C message
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h.html deleted file mode 100644 index 74c2dc9e0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/i18n.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    i18n.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h_source.html deleted file mode 100644 index d0ee17951..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/i18n_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -IRremoteESP8266: src/i18n.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    i18n.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 - David Conran (@crankyoldgit)
    -
    2 
    -
    3 #ifndef I18N_H_
    -
    4 #define I18N_H_
    -
    5 
    -
    6 #include "IRremoteESP8266.h"
    -
    7 
    -
    8 // Load the appropriate locale header file.
    -
    9 #ifndef _IR_LOCALE_
    -
    10 #define _IR_LOCALE_ en-AU
    -
    11 #endif // _IR_LOCALE_
    -
    12 
    -
    13 #define ENQUOTE_(x) #x
    -
    14 #define ENQUOTE(x) ENQUOTE_(x)
    -
    15 
    -
    16 // Load the desired/requested locale.
    -
    17 #ifdef _IR_LOCALE_
    -
    18 #include ENQUOTE(locale/_IR_LOCALE_.h)
    -
    19 #endif // _IR_LOCALE_
    -
    20 
    -
    21 // Now that any specific locale has been loaded, we can safely load the defaults
    -
    22 // as the defaults should not override anything that has now set.
    -
    23 #include "locale/defaults.h"
    -
    24 
    -
    25 #endif // I18N_H_
    -
    - - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/index.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/index.html deleted file mode 100644 index a545d7d8d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/index.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -IRremoteESP8266: IRremoteESP8266 Library API Documentation - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    IRremoteESP8266 Library API Documentation
    -
    -
    -

    -Getting Started

    -

    -The basics

    -

    For sending messages, look at the IRsend class.

    -

    For receiving messages, look at the IRrecv & decode_results classes.

    -

    -Air Conditioners

    -

    For generic Air Conditioner control, look at the IRac class & the stdAc::state_t structure.

    -

    For detailed Air Conditioner control, you need to determine what protocol the library detects your remote/Air Conditioner to be, look into the appropriate src/ir_Protocol.[h|cpp] files and use the appropriate class object. e.g. if IRrecvDumpV2 (or better) detects the protocol as KELVINATOR, open the src/ir_Kelvinator.* files, and examine the IRKelvinatorAC class the methods available to create/decode/send KELVINATOR messages with all the abilities the library offers. You can also select it from the Classes menu above.

    -

    Various native constants & options for a given Protocol's class object can be found in the associated header file for that protocol.

    -

    -Examples

    -

    Most of the common uses of this library's APIs have demonstration code available under the examples directory. It ranges from trivial examples to complex real-world project code.

    -

    -Tuning

    -

    The most commonly used & needed knobs for controlling aspects of this library are available via run-time class methods or at class-object instantiation. Again, you are referred to the IRsend & IRrecv classes.

    -

    -Advanced

    -

    Certain addition constants and options are available as compile-time tweaks. You should inspect IRremoteESP8266.h, IRsend.h, & IRrecv.h for General, Sending, & Receiving tweaks respectively.

    -

    -Protocol timings

    -

    Generally you should never need to adjust the timing parameters for a given protocol or device. However, occasionally some individual devices just want to be special. If you are having problems decoding/receiving a message, look into the tolerance, kTolerance, or IRrecv::setTolerance constants/methods etc first. However, if your problems is sending, or adjusting the tolerance doesn't work you may need to tweak per-protocol timing values. These are stored as constants in the ir_ProtocolName.cpp file for the given protocol. This is typically a step of last resort.

    -

    -Reducing code size & flash usage.

    -

    You can disable most protocols by either modifying the appropriate #‍defines in IRremoteESP8266.h or passing the appropriate compile-time flags, as documented in the same file.

    -

    Avoid using the A/C classes, especially the IRac class as they will force the compiler to include large amounts of code you may not need.

    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.map deleted file mode 100644 index 3562f9889..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.md5 deleted file mode 100644 index ca555abe7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.md5 +++ /dev/null @@ -1 +0,0 @@ -08b3d219c2f6a526ccc8e9da13756f9f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_0.png deleted file mode 100644 index 0f98ed2d4344bfa2957e8fb69d6685e1ecbcbab2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1531 zcmVvkcEiJ#1YE#!NM4~Md3f=pA@ukCWI(7YA z`uoY}0bYDQ$M^ZX&-U`1vpJ@Th@dENKW?czQ2uwQFeo||21TdBpy(2&PqGltGv;QT8GJq;4<0;Nl!lbW_vzE8S)bn-XNKP*B}e)H*WTXF(W6HrZd3OR zicW<=(Wx*fx@8-N!ootDo114HF9)$crbP?Ga(ptDo0x{7p`igy(`apNow3dBc5~*; znOH8jAp7_4N7FPkO(Q8OiM@OG^5Vsd1?{t-pnyAf?!>0SB@nYPghCImDOrRMDY9lm`o-rD=Qft9bM|SmQ2jT@a)+$)~;R4ty{P7dcC}T`!;O*^vlGq zUAwq=@ggN9B_t&!arp3Iwr<_3Z@+Zu5}Ky*@#9ATy1TncNl9UHauR^?@o}tHE7{rE ztX{pEii!$`hKByD-jkD)xpL(S-@kvy<#I*rudS_((a}+k9Xm#9YAR`IX`DE5g0Ek{ z0#IFDO;1k`Cr_S4(=-YT3jyY=0SE?zSglqzZrsS4HETF~_AEbs{D`VH)?yY0o6W}g z^XD-b4Aj-t(b(8HZ_Vx7x4C@zGT**^qp`7({{DW3hlc@hI-P9UvIVEpsgFxaN=Qif z_kFVC$B)z3*T?hc&lw&bCND3Ks;VkNp-`+2DXhQh>S~T0IYJ;1;LV#iyn6KtpU+24 zO$`8TZEcuLCR$or5E0yNH^7`V05vr=yng+f$B!T5^?EUxOmua1MO7PfGL6IGkO=k+HEcF&d3BF)^Y4&hFj2rKzb&AMf0`QyLl?!uC^8P#|`@T>^oC zq@<*X-ENmdhYpE|NJ&YF+`M^HL_~Z(p8(?b`}NwXsVPZLPL|%@-iYf>AD5Sxi`8ls z5s^S3Aocb2l9ZGrU%q^a*x$gwfB@q4di6Pv$0LA@jEsngh{jfYqBSXIljE|2e7z{EvI2d)`H*VZO(=?1m zBi-HIJbd_&w6wH{{rP-85)u-~$;r{@HgDdnZ;NEUn!&+A;^X7lv}w~H*ZvI)4nrsu zqPe-5ckkXIBKl89N5{OE3Qg0(#%8mb&dyFcIyxvTD`Ufk4H%6^u3x{-x^?T=wrv{# z+1c5|#l*rlzJC7#Nt*TQuv%+JeLI^yyOowr}4aHeXy^jK|}_h;WBB(kwz9I4+S*z^eE7h`!~`#2zND(Eil0A!F7%Kh%FWHCxVV_Q zx;j38{*2G(qrSc#i^W2EdO85<>FMR4!KqWHc>n%Afk1$!rY0Ue zdKA@qv9{na*lac|7R!uzgTX*)Y3U!m%uGy7q^PKf6)RSdpPvsvSy>suU@$BU0IjX9 zl9-sdumhTd!{K1ns#WaRu>+IIL`FtN*n27$E?nTrlP9cP zxl(^MF<;HSd-urC&!@b+oZQ@8dU|@;w{KrmwK4YxHyFw?@Yio3mE}Q&LD8u&C^{7e zMW@1`=u{XKoeG1ZoAsme?d|Q0*@v=7e*cR;l3Bwr+h^;QiZd#|D?j8 h=u{XKoeG1Z`v(lG%J3I$|BC - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.md5 deleted file mode 100644 index 7c0f95802..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.md5 +++ /dev/null @@ -1 +0,0 @@ -f231e73ea8749b5f3401520092dd59dd \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_1.png deleted file mode 100644 index 2fb3ea95811b37e1657502bbeffea9fa023e1024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmV-~1bh35P)^?J&abG**N`K{)C zede7KNtA!9QEiEO`%};1+Yl9F%2w5yvV`Jmt;bC06*VWZ6E-wB**2q9IfN(f$ zG#Up62K0J;Vh#NSwOWl~nAht?5Tv7{BM=BA-$SAx8NmMjenCOO%*>3(<2gAwA^Nqo zwHl44si}#{WD12syWKuHIayj-nwOV1I5-#%hjH1{)00}QE-x?7&(9wk8hUwo0RRL7 zf$r|^;^Ja9o88;n`|$8U%p4mVYi@34u~;iBE5xyKb8{yqCZ3<4tyb&rvM;B}<#MOf z+1J+xAry&3F%BA+!@q%K0D8TCczBq>U?`Q!+1c61hc-4grlzL+e!oa0YHe*jKRk0YinzLeI3^*6pEvxqn(`{kH>=`h{a+70CaYC27|%l<70=zfug8Fp&(|?&(DvK zk3T*>%H{GHt|Db$PFq=7K@enNVFAN1o6Q#Epz%5+4;F#RWQyv1iP!5bD=T|{f5$NF z{{EiJ<-WeY;t$o-)aZ0NeA{BNKnO#j5MK85^o)*Fd&45g@rz!4^IxKsHh0v$jr>l&d$!s$sx+Ow>JR5_4Rdn zdU{1gMdVBrMKdxo_1hZdm&>)=?VFpMY&JVe7JJ$s4@$xz zY2pqb91a@{hSSqiBEy4&gQ%-eZ1{Zs=jSK>h9W2{EBpBPxV^o_%gf74yor}lU!mY< zKqwTl*=!Ptgy<8p7}L_y{(Z{d$w)XPP22(O?d<^oghClgT1G3^T)eDSlC)z#JH`$$>72%xL0EBQWB7KqXR51 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.md5 deleted file mode 100644 index 10bb0c6a9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.md5 +++ /dev/null @@ -1 +0,0 @@ -1443ffa8a86638c411bb373567d8d9b5 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_10.png deleted file mode 100644 index dd99f783650ba905dda94fa0534660e11128ff51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1671 zcmV;226*|2P)XN8b-FCdYnm_Syw8jCJY%gn zr(60w_qm@}=bZaJ=lp*A-gEBRt|EqEfaAYU+;RuN5gRxoSpsJyOW=%T3B16H-EO~f z<;rq}!m%J~Yio0Ia{Sd_RwPAH9UUD@9umib>FDU7C@Qdp_q(XQy?v?T;aDUHp`aG- z8OahjBUu7xBuiKxBeSxyEEdbMO#N>rJ3G6jrDbt_m(IvYqKqb!|2c~>vY?;Yfhg&jc4caemQclTD1!O%JA?ozV!6z)2&;#CL|i+AtdJvB8Iq{+(4I(P1zMxzmn#VVER;lqa!Mm04xWwBUvIvuVW42Ft| z3Y|`un3$NBme$NgFJeZuEERjf# z969ps+cy9xEiHAqTt|-{MF?eQX9GY;830U7Oz8D`g+h^-n5fg~aGG<8qailW$U}z? zx!vx;!9f7%>FHq@#_RQVc6Q#pdGpSlJ9G8&cs$#-ZA(c>xqtt@P$>LeU^bhLMx)2$ zDK9VAYPAu*I=y}SHlNSmzkfdfc)i~K{{Ez-r1bQ3p-{MK)22wa(AL)0hK7dm@$u5q z(gOz$&@}zx#S5p?Nl}zms|5h7)k>1&_3PIehH*F?01#3J09vhfU|`_Eg9k%HLnKK) ze*8F$I4YO`Y&Kg^OGxtb^YNzS=gpfp0MOsxAEaz*YAPuy!R5`HH=9f*TwcF^{n@i; z6$*vXXbjW`X)a&BjLZ0*9UdO`E4#b9r^ZxyN02mq?!qr!=UIDDHkV0dB13`{>f0ARD(0$XCUBJuBjNl8fn(B9s@VZ#QINQ4m5>-GKpFh8M@18^=!R@K3ss6lpJf2)G$JMoK*ZPwUN=g(zjW#`YI9~~W?otYpsEqV_y@P{;b#--Sv-#@Ps|ca#>FL?o*_A6- z^7(v+!_nB-I9FdDkJr}LmY$xTo0}V}<04JdR;%^o$&-PNm6eqylgZ_BO-@cWG&J~p zzP!A=2nSRum1?!Rs;X*qbd;i~nwpxOJ9kQ@QUH)jr7vH;#JA~OveeYn!otFeii+2- zU(+;gGMRdMdcuqu4U04qZ%PC~6ciMUjEvar_Pu-e0)SjDzj*OtSy`D_EUvAs-M4RF zxVhuvOeT{?qfx8XbM3&t)6&v{5GpDv^7(xDi{RI* zii(OP5=n1wZ*On!f<85y%_b6wGBYztl3cxdwb^XO?R9l^eSLibfdHRc=aN}0mW+&y z{QP{SQt5KJa&vRTh@&F#ff?aphhy1+KXlmPSavugSpsJyOW=%T37nBEfisdNa7MC( z5PuGN_wL=LkAovhLKs<6QnK`Ma6}1Wxc`r21>7@|C2&Tv1kOm7z!}LB{sLjqiVyc{ Rc6R^(002ovPDHLkV1lO@NN@lE diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.map deleted file mode 100644 index 05d1850f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.md5 deleted file mode 100644 index d090ce36c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.md5 +++ /dev/null @@ -1 +0,0 @@ -65cf9fd1bd6832a3b8f13fe501621888 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_100.png deleted file mode 100644 index f9d1bb7871c605904a171bcaba5cbfef286a9dfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1185 zcmV;S1YY}zP)i#xltZ2l!fGC8yE7BLg{d^5t17h9;O{yEs2>@rt`b_|DE#Nlb<=i<#)cXI(7E_ zocH(hJ)if!=V51uVp*02L5M6S#CrsU_(9AUFvNTTL(CU2qTd@F4hKd@N8>RT0*@>% zE(Wy)&3uMou(Y)FR|Z7jpPQSTuzm*3{C7fqQwTo~yWNiZ`udPDa?Tep#C!om%oi|m zGheIK!eX(+EB%k;yK6>fzJQ6z{Fj#(P!tt*5sAXyOa#%@)fG_}El$%k^m;u~Q&Sqflj9bP19f7@&73*D#F~{Tugn$lbFm;N=gFDvfNTzTZ@*K z7VdK(5cqUolarHRSr)6St6z!_4Gp2MuMZ5vU~_X5ySuyS?(Y7uO>b{6SeC`@?JYDK z4Qgs?;PrYxzr+6+ydL&_J|B8}dy$=;jkL5hw70k8`T3cbTw7aPC@(LEL?VGor9x|K zEB5yGLT)RONH8)of~Th^I2;ZDfLg7F$z(!FNeNO?Qed@O;q`ja(9nSN^mIt2QZzO; z;{N^~0AMf}aCCHprluxP6a}qT3jh%{(P|P+``z$rzR_sJ@$oU%*Vo~4xuDT#u(Pwn zXG#v5rlD4=|41`4GXt~PjE9E@7z_r~)z#tg@ewB{CpbJj1j8^e8jSz|tJMmPMuXYe zS+Fb%r_%`l5j8;MnncrnH=jQ#{~>O-8!Ia-I6pr}Zf-6BpslTquXG=nn3w=f(>ORd z2pRYJd>9xQfLJW%W-RdEb%jo+0{~oIU4f=)xLhvCWHJE2`1m;T^Yh{Hc#x5i5!7!q z&FkxH*qVGLU###p^RKV3k(ii>oSYoKQiNn;VgiGMgV^5Q4$3_?HU^5KAd|_kzrT;= zCfj|Imx0`FbxVYeA0FaRI zv3$`qk!tdpeBTXk=4WMPp{lA1&CSg?J3GVU<0Gc0r?IxS#!Ehv$%Lt?DeUgVVP9ribDHX9qF zneao2;HRDZyenXc`2vQRFJOrI0*06`V2JqwhL|s4!amrs+wFgI90Z - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.md5 deleted file mode 100644 index 58bb4bbf6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.md5 +++ /dev/null @@ -1 +0,0 @@ -d26a24d9b08c03f79c3c9e4467e5c756 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_101.png deleted file mode 100644 index 76dad197f932e05ec343d0e73a043ead848cf4ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmV;U1zh@xP)N%EJNK^X<+V^+m;iqmpBhS*} zdBI>i-#yRy?%9X!oN=a!h@dD7*O9T<9Vq_}6(+?oDol!FRG1XUWX;{s-QCUAt5+AJ z7v(R~(a|w)+q_RE!!WpW=guE#NcsDirkOAw^FEno#7mx{gu`K~tE=PI)G?Fd7!@YP zF)B=oW0q`~ii?YBZEamL^Ocm8aO1`e$NE_coPJG9HcSikFTVLp-GajOL|(M%Q&JD=Qft9bN3U7EM~e<|Zd62?m1{6cn&> zYt$B!SU+-ov!x0_3sE-^7NL3ekz)n8*{BYXDj z!R2z%*4D=8=qQH{9m3=Bkdu?c;lqa+8yf?lrly9To*s@IIfABXl$4YJBpqY7hIV6} zmew%U*4EP3*T=}k(5C{YSXlrXj*L7N2S`ZN;kqAK2F?MTcH`Z}7M|*p_ z#MzvZs;Vlfudf#o5yLP9km2EBt3EwFEpE44dV70iaBxrn>Feu@JJ;5&Tjk1?E7s$& zu`vO}G|iOiJ9g}l=H}*E^PM?!X4XD7ZQ3N)uV1(AHQsz>Wn~f!21P_97K=$kLxZ?n zE*TjavG#ZV{CVs7{r&v{NHiL?w!M7$QULkz;e&{X=(;W~EiEaJNw$Wm>~HRCN=1@< zgwyuP6pcm!$j{HW4pcKUGZ`NrXJBA}fq?-sGc#Ggetp6@JRXmAKRY`cfbZYGr(B=Q z=kv{bY?`KRuZdi{b`4F_$ji&)$&)ACy?d9OoE)p}^?I%QhGCGEl|^A;p|x$ph7DFN z9=kEg*6?@sw@_&dQ$axi85tRT{``5?LAr==;J^V23k#W^o~FOQKV2=%GZUH_@87>? z&6+i~y(Thq06sZ6NhA`Xw6t_qUDGt{{@S%`nVOnnXlTgV_U_#~s|JvfG5hVX8(iSGK*Gpw(C3SUmynXwYZ{NQ0^yyRlem_5d{>1C`Qc+RC(W6Is{rWYrSd8Z8 zX71g)m#&s*YHFgZtBZ+=2`*p0jA@$q{eIhCo#6BN*u8r0$5Qy=m*``0?X3Ha3!%m&fhfx9RNcWcBLRDfQ}v_V#vGtXRR8 zEnCoao&5ZKLZOgVKYjW%_wU~)J3HGto3k5}Yz^(kI!zOqefl$ViGip;ttfFM$%p!P zisBp - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.md5 deleted file mode 100644 index a7fd73c18..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.md5 +++ /dev/null @@ -1 +0,0 @@ -5435cee590b632668e5c31cbaf0849a9 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_102.png deleted file mode 100644 index 17feb0dbebe6241fdf86be79b5e9bcfdc937c453..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmV-*1d98KP)yGP4$L`hW?N7Ex_1ut0*6z_MJl zh;rAaZ3JzC)os-8NZzYBXuyD5`xK;5KN|okpDa2^?ETrKK>iIFp^+?em-t2?#dJd z0SgNYKavn5c`hz4-t`lAWxkTgJmdHAcs%In=twxn?wJyT$&?UGri5TJe-VShfT^je zl*MB*CB(O6K0Q5wFdPmCN=izQmzRgWzCJuWJOBWK!5}(2JE2mkke{EA?(S~f z-rgqMN2yd|Y-|ko_xJF6y#Ro!swxZ*52L=m9twp5E|=@Wm==o#J3Bk*>FEK-aWEJR zU&1m9Pj^gg_4i<~$!2!jKu(7f6 zr99GILsHN`xZQ3_F#ILj+S!C=|lv78YW5cJ^EOd=_(PXb3ASE6C2y z7Q5Nc*8Fr0ACklkmhlJpl?I6M^Dvnbg2|K+Os0fjG9?6)DIu6l3GwdJV~@x4lX)<{ z$m=7%M7%5Wy>~Mie;1C3eV-{2*!P)Ig2|K+Os0fjG9|=+xAi%QHk^gY00000NkvXX Hu0mjf5)=lU diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.map deleted file mode 100644 index f78876c1f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.md5 deleted file mode 100644 index 5e87c0da5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.md5 +++ /dev/null @@ -1 +0,0 @@ -4e3d563629aab8add0e751db7f109a22 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_103.png deleted file mode 100644 index c156a9810b293fc2ffa59fb2c5f7aeb0dfbfa78c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 985 zcmV;~119{5P)VjRZ-1ONa4L9zw>hd^FHkQWf-1w_aX+-~>i=xDN}B%ZReGK<9$4*zj4 zE-o%sR#p-&DLHsN9=F@g&j`OyT3%jGl%8Z_Fc`jMP`!X4FCfSZ2=W3FOD{;0oSK@7 z;f4w3XI{L%zG9IO3WWdwkH^#2))o(ywY9YvhVhNw-`~eDOe_}1@RXl$Z7J5pR+Y_V7j(6pzgr{3OPrBW%8Nb2kB&(6-m%LfJqDl029GBOqy7Xbiub#=G5w_96V zp;au)c64;`Pahv2SE*D4K~NOs^?IYwAIIA1a=FIF#;&igNs_Ftu0A|G+}qpR+1XiJ zTU%XS4b3qcjYmgE8yg$v=jUp*TCdlKZJM5*9vmEecz9@TZUz7d1Ol_!JTWl=0GOMb zqbN$DP=wF&`FvKZb$)*S?(WWJv#~52h2RK%XRPSy=_x5G0RR|{#+jKJyWLI@M0R#| zRaKSO>oph*e!t)4a$R0t=H=x90EUN$rBdm^!9h_`5dfg8tE;@coWEgvdwW4a!TtUH zCc(Y5bo(giI!*Y1(WyKR-X$)YR~YR4NtAvVDDhrKP1UEiJpd zyHN;^)e5Y_{*CI-O3Z(*=XUg@pyJR(o}I zB@&5#q$ioZmO`OuXlO8*Og^9Q<>h62dt0y9zrDTv%MyyBIF7SgtzYu%>+Ajf{l~}0 z@9*!QpPzw1AY6C;o+S63v$L~mwVI}BnM~H*-EA_N($mwU*r%eRLL!mSG%b}%?RLA< z>5QiJ;CL)8Eq%%Sk6{>wVHkb}eUCtp7ZBtH1bG2LUOIDRO0YP3skQb0&;`%ZEDY-p-00000NkvXX Hu0mjf@qEvD diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.map deleted file mode 100644 index c59b67b6a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.md5 deleted file mode 100644 index d9e43dc43..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.md5 +++ /dev/null @@ -1 +0,0 @@ -4279ae614d5daf1b2df1142de7f8e1cc \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_104.png deleted file mode 100644 index a55368602a92eb28e71cb124785899e95b8bca2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1518 zcmVRw8=Gx zL>DOzi7rwc5?%gSajaUk3b)%Gv-AH(a&mIGc=2M?;{CDWn2Kl*ge069iR1hC?l zPoF*|H#ZlP$wXFG7WeMm(`g(!+bLP7!-i-pR{O7wOsm`o;4o;=Cm;2>>nZNQH; zO+`fo>(;HqXf)E$&@gHLii?YBZ*OPUu3adKLQYOjL}T*#^Jkn+Cl-r^l#~?q?%m7R zuU{kbjW#hA$F^J8(E0x)TaeU0uzwW5);t0@&?#Hg4R=hYueBXl`ys2*L31FxRhN z=gO5UVeL)DrAwDMe*8F}K7FFNxOme3H8eD!sw%a$wFn{bdc9MQ34p`lprfOMmX;QL zJ|C*8a`*1thkU?G>X2yJ}rJ_Wuom_))P^X-Y*mBa7%lbD!@*=*M8mMmGK*(??d_4V}}Ja~}o z>}*O)OL_eGaY&5R)Ku+vQc@BCLqkKlZCb6?uyP;}0DgQ9$jZvXU@)L43Qng}vyD?# zRfVD`WMpJ;|Neb$+_*tnTAF6h%*>3qf72P0SFc_%Yt}3lFJAo1zOf)?;#jn35hEib zym|9RtLy6O(rf^mHf`e8ty?^J@Bo|5MqXYX-@bjDcAGw*FQnYl)5F4r3wi(kJtZY2 z96frJ-riou#>Q~DTwx35@dfFZFJJI_z1VEF5WAu%ztq2kgwWxg%ExRrGdem-cXxMK z-y&%*+Qdv8R;!h~ygc^p+edG2FMhwD^73*D3JOS1Pv_2^I~+N3gs!eGhKGk49UWz8 zXo#_~v1zwiU0qFUYb%3;gPb{YhCm>|mMvSfxO3;uW%lgZc)ea+E>}$Z2aukgPG@JQ zCc>$FGBYzNEG(q7w3KJho)HWNsi~=J%j^IQ0I@Ao+I)dqXOb{EvJ?D$z%ZL!yfmheQ`C4v8-R0WBvS UTAY8ZzyJUM07*qoM6N<$f{kz3{{R30 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.map deleted file mode 100644 index ec60710c3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.md5 deleted file mode 100644 index 4f121617a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.md5 +++ /dev/null @@ -1 +0,0 @@ -eac7ffc0702bf9e0b2e090c3c469f2f4 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_105.png deleted file mode 100644 index 45fddc83a30568cbde82c63687adf3c22dcaa98d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1527 zcmV3Vk5 z$A{kw20Q0>erMk=empxnoTCUK1d^1#_KbzDK>GiXVUjc>!z5`&hDp*)=JXYvot<2{ za%CZEkrt8m_V&1SaYv?LFvzW2x8|iFY4Hh#LP_%xcVwE9D0!0P^?GqQ90|wdIg_Lr z874_HGE9d+?uWDKPAH?X(p{O{r>$MMNyKz zGBcC@SX}gW?b@aGX)qYrvSka;o;^!zpT)(++_-T=n*tX=T4Bn{%0dXCzA7pzsI9G4 zm&eD)wW{+!$>nk(gy8e%&seQi_Uzfiz`(#lm$hK#^lPrDsEE_2PqSmk4h#kZZEbDX z?RFGJAtNILv)N32eLerY3#O>3h%;x-V6)jU8jY-7yOu|f9;xG3uU^G$Hlx$&*tTsO z-QC^l*pDASaJgKV&1Q0PayWG85F;Za01ONauz&x4a&vRZ%gf`yfddQ;4JEBT91df* z+c6rAtXsE^+qZ8g-PUL{a^b=Se*XMPXJ=>9-e;?mUq9oVhK2^=a5!S-T)uo+T^<@55`YMW zLLv|d2%SzRdU|@|_Ve-MM*)cU@88Fb_4f7(K=k$Xsq5anc_RSv<;xc#gb zjY0?^{C>XxM1Oz3y8V+UPXr(a2M2`^LX?%2375+ygb*Scjf%RuI$CO0=%eV?73 z4Z!H=C}y*n*49>zA3siUaWOSDHN1ZP8h{TUKCooT5-b)=Tn)iskj%_XOeT}MZq1rC z>ezIlPzaq)7gI-~{Wdf-pePC}R;=Lp^XJ^XdzZYtyo9~~X$`5&(XwYP%z2m;MN!}P z_xDp(RmIt}X9<0$B#L6>J)yzpRutqCMG7- zeHIiHV7J?;sj1=Z+qXocQ5qW?>FDU7u&|KQ(ozl|K1?_qCKwD-S64@Qc{%y{`Ej3P zu~^u;bt^}X9AR*9kU${7$&)A3>OGYj^7HfQ>FH7bxn`TAWzSle*D#q(CN5sQNL5u8 zMx&9VM~||1@7|Q>Z{NP1<;#~-US3X4P7ZFj8?V=kUatqBrKN@S>(^6ORz_iAAzfWv z?A*B%0FTFmUax1vh7DM)R#vWDNpo{^($DgEJPZ#HW3gDU+wD|WSEtu}3N@TKae@aA z9*~`#t^S&uZH|^br%Mqc_UV+VTMUGJXhlk3hJ47UQzY%kFiDz`VUjc>!z5`&hDp+l z43nf8874_HN$+0sdcE^mhqOpc-C~nS(l8}^HcFC`iMs+WN&k|(0xoGshDp+l43nf8 d874_He*s3VcYQ9yrbhq(002ovPDHLkV1imi@sj`m diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.map deleted file mode 100644 index 992aad00a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.md5 deleted file mode 100644 index 7aa6984ef..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.md5 +++ /dev/null @@ -1 +0,0 @@ -9d0e455e7f6d7edf8b6ae41339148d7b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_106.png deleted file mode 100644 index 0d65aa7f4b887d976617c939bc616159b07df96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 zcmV-B1jPG^P)iK~!jg?V3MGdR-XD&sCvh2 z@8g%l@!UTIP168Vba<#6_@!Xq(SUtN1NI#a0%qXz`4$!yP_^>2X=`hnnwt6({%^fg z6t%IjQS_F6K7PO7=kqZ$f{#V(>+8kp=eN+`-=CGi`#T!2?`XijqXGM#I~t8eRb93{|%uHuzr%)(# zyWR14d~k43EEY>7lHuXuhld9MfW=}71Og)?BLqQcG#UUvDwT3L914Y^qM|~t*I!*- z!P%0@q{HE;t*x!BtQ;R7e|~;uYKcUm`T6;$rzdzPlAAPZ8J9FyaXu7me_vi+o|~I{ ze0;Q6ECT}riA3V$O{tf`JTCK;&$J^W6;c%EF$=%)Ef=jcOaY=I(=LOBce&+ARG?E@bvT)0C012L(}x1A5YUXMNt5NSS$v^OeP}|iGsl(T=k()C`(SO)xv!y zkx1C>cA-#scXyYYG*=m`^e1z+wzfK*&cE@>WHOmdCT6B!>s>CF!vRH60)arORKl>n zz8)sC>cinM06->_!GB9WpPx)7BauiX65;dtb#-+gB^DPK34*AqsyaA0*xcNdNF=#Q zbCt15|K*%trC`1j1OW#%H8tsUIvS0_@Z#bECIJ9E-hXlmg@VW9-QV9cS3z%YuTrVZ zWHNA-WdYZFDwXp4{oUQ&IZJbuu}Xh3XFe4E{H{`|IyyQgCMIrgZz+nh+wD4?PAZiG z0HjiBFc^e~AGus^Fc@q$+xhwV%gf8*;i1uJe0zJ7%jJ5#espy7?CdO&NI0F&t*x!X zN^_O5N`EqEK77l4lgHyJFE4LwY$QoiCX=~bE|{O5p5EEnDJv_3hYFX=rB;f6wY7$Z2CY`BQmF!gKv!2+!KJy%Sf#m&^MRll-xGMfUbERu<1Y*f z4SWvFe87&M6QBY6jt1;I8nEwZz`mma`;G?eI~rKtS9rbN;`i~hxxT)xuC8WgSbR5| z&Bf~H7hy7)m?44hPLY83cQjz%(SUtN1NI#a{{W5mOc$k{B3S?c002ovPDHLkV1hTZ B3yc5& diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.map deleted file mode 100644 index 32b9f42d2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.md5 deleted file mode 100644 index cb5dff435..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.md5 +++ /dev/null @@ -1 +0,0 @@ -c2e5c6b0b38d4bc3059cd3c2a104bd81 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_107.png deleted file mode 100644 index ef7687d5de511cabca5d05e05eed1ba2504eb732..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1234 zcmV;@1TFiCP)3iH&K>?D<`se*5h=v#Gb^k{LRhHkf!J4@xy^pr@y&sHlier_avL zvf1qQ^>y@-#bSXF+U<5EQ!14O1qC!3Ej>MbdwY9uaFESrGnve`wl+9=#`=*+~V5n58$HzzXW5lnz&1S2wuTMxwNK8y@YHGT>y8{47rPAHq-R9$kN5ZY+wFF#R2oFKxVShx zJZ!aEMIupYY3b3?k;!D*+1XiMUY?(yM;e2{faCbf%ge&T!sO)S%*;$k)oW{O9S+C- z{{GI+4u)Zkjg0_++1Xj4P^i&pa2z)pjR1gvG5|nhW8>c5-pa~~*=!aHg&P|iLByX2 z_d%=G`elOPyU%20Wub+MV6j+hYinqXVHg15{{9}x)M_=#Z)|Kp2%SzR3L6?4y1TpI zRv8%?sjI6)AXfz0+LZPr&EZ*rOBO?&PuPN&Mx!?ErGT$MD-Z7O*^_m#!qwnVCMkbT>_V!+1Uwb^Bp`jt) zhc;U8PN&moG?tWs8jii)J9Bmh8CQj*DJLf_(hG7g6$7K>Y2S`H5n9S+Cn=%~S92y)F&^DVxsRI1zC zTNaBY7K^K@szRE}<#GoG24pfBgTYWLm7z`t0BE&Z8jY5jnJE+sSuEDn)D+5hc6P3= zu2QK~be?%nHa$I^k&#hWR>tS^cXxM-i;IJZKMllvPH8%w4n4&F@}eYup!dMOFWAZV z1jIo4P7I{)#6bE^45aVGK>AJ$r0>KK;QtDpP8a?@el`}1h0SLBW&-$LS63IVetr=W wiNrUA - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.md5 deleted file mode 100644 index 5860b5cd3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.md5 +++ /dev/null @@ -1 +0,0 @@ -93d2b9e1de5eb523c98db994a68fcc67 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_108.png deleted file mode 100644 index 093f2336435e592dd7d4af1ea85067563953635f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1366 zcmV-c1*!UpP)sh?r(L^lmBy` zC;xkTdhX3dFbo3(Uk(ZH27V}n@AyFYjt_+I_&~NDEG;c{cX#8}%J+uLg%C>kFh|Ehj|3PnXlb`fHK#|Of9d?0+shriu-4u{j< z-;Z|}PVuD=jTf#61!k#W@cSoom=xHB_$0F4Y`$)ot=#!2!bFK3MC~a zWpQ!wvnzfcZu>5kN+%{JZfj#eKyY+)1O1pt^# zCaAGmt^WT0I-Ty|;K0|{SEtk2P4eynhGEWfF$_yiPF5%sFwW!g;67tEn;RM$C=|;1 z`8kGR2?+`9?d?#rzrPOvFdB_;xU;hZ060B8wX5h%27hM;gTb~{7jxRS=K`TnC=?29 zBc7aR!otFGa&qKyIRHQ|my5+>A0Hp1(Fgzt4-bcbeO_K(x3{;4hlfliQ>j!oH#a9G zB~?~dZf|dYoX}bBM`dqsFM=RpVPVV5%afCnAt50!PNUJ_1&X3%GMT|(z+p^G3=G=M z<4ksVc+9>w%gepJz0=dvsZ=VT&kqO)=;`UvXf%F)egJ@$mX?{B znP0zt!PAAqT+ez_tJQvfe(~|~Y&JVQJbYwi1jg+uI+Kl!jm5>q@p!zbsHpYz^~}sn z7h;b=Fq`iQG#X7wNeM=LVeqGc?}2S!uoLeI@PY6h9|+&^f$$w42;cF6@Esor-|@l0 zcN`jx=Ii_T-khAAL_|c`MjZHFQd06&{rn(=LZR&tA)Zcgf!N>if$$w42;cF6@Esri Y0kgJvQBF{T{Qv*}07*qoM6N<$g4h;|DgXcg diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.map deleted file mode 100644 index 60c1980da..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.md5 deleted file mode 100644 index 1b76dc054..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.md5 +++ /dev/null @@ -1 +0,0 @@ -e48e316b43739879a767065faf6a63ee \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_109.png deleted file mode 100644 index 6707e3c1a1563f255f22e98a07b7f2a4ff45c869..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1349 zcmV-L1-kl)P)%LDY~}^x>-$kD6%V*b>77Rzxho4)c5@ysQIm&zt1`U z=R6$8nPD&pA)s+O45|(MQ0UyLfzF*8=-jD+Nj_LwTI%WPp~}klCLtj~CX*Qt|Fz!< zg3xNUPPg>^!EtHGlof_!eslge!3j~7x{(dJk zay||(jo$CnV0Z3$d3ojK!Hm z(XQct()zDsckU92M61=_-`^W6`}_Ngi;K0jwSU!^d8AS)gz)_QoX_Xy=H}kq+&H1> z|AF1PXJlmf`udKJjv6Zpg+d?@L`6m2+}xCvmHGMk`TP4~7J zqQkehx8dPowAqV_iu8K@=H}+=>MB7HVzJm{tV*Tg^ZA2=gAhU-#{mG-)6)>b_xJb7 z$;sj2;qmct0KnefUSnh9*x1i9je6qVtSiuWx8*V6)j* zS62|i=;&zlTY(T-u|aNaNp^B_0sz?G-zWFAacNc%i9{lih+J{xdWOT{WMyS36bb-< zLZJ|g#cpnH1VJ#FOfHv;G~wal004p@tWPyDF%cUZ%VM!G43kQwXJ=;s03MGwK0e;m z)D#yNS5;NDwY6o`_xAQ;7{=jnmY0{Orl$P;{ZTz6Bm{l1(S{}2@$s>Xi%VEom@Q)4 z(lU>O*O3y5M6FhDY-}tnETEH2aB#4}U^qQJMS_Ea15`Ba$M~n?_4RdWX=z(q+vVlu z=jW$fE;kqq=&PKZoVmHVm6etB^z`K9HhR7d;$>FEi_@$~d`<5U=ip$}GUkXu`l zak<=&j}NrL|5NNpaK;=Q8zvMAeSCZh3JMYu5+WiZ005z(p~=a~b#--@mzM-VG&D41 zW@ZKi1egpA2ng8T-bVSpzP^5betLR(y1KgJI4+mVk!F5=zNMw*;Nal>{r%(P1IcVO zX2k}%wIx|dNJw^ec2!l??(VK$uU9IS)6>&7F3m0+%$>nt)YR1IbUO0oqgt(Iu~<=2 zQG7l>FfedrWaR6>=H}+v+1X#eehCBuE|=TY)m2(r>fzxblgaY)^N}VcCB@6jD>F0G z+uK_%muoZ{7K>%OH%m6it*yw$#>OHeBZWd?XlUr#+FDv#nvF}d3k;IpC(vj#=%4Km zC#5j~JqIQ~V5grGPy?MiHPE?J1D!iH(796sojWzqxl@Cg_c$~fjq`ncZ_dunf`Wp` z6*IXP7Z*Fr&ksT*5|Ixv`tFnx=<_=@(796sojWzqxl_Y$ - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.md5 deleted file mode 100644 index 3bb1f6e3c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.md5 +++ /dev/null @@ -1 +0,0 @@ -5a8cb00ac6913c6b2bf4dcace84f282f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_11.png deleted file mode 100644 index 7f322191dfeafd93b9e1d144d0d6e371e9cc1375..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1668 zcmV-~27CF5P)LQbx z7ZyR<6bytix^b)#lxbZA6RV}zQdH8EB9aZs1v8>9!ZIw6)Ahf}#EZGTzl#&&{N_A4 zXZq{>&gbg9&-uRZ`#k4+-gDk2zn$o~3E}@#DuZpR8djU=g*&4ri4ENW??p)10q4m&(CKrfuFLnGPzvt^Z78w2M!zn z0E7@pl67@;Ob}z7nVD%c8kytt^z^%T?_!K+W@d_tiV6w}+-~=L&4mjWR4Nrg5K5); z(W6K6Gr4x{T5@tSJJQqB6B!xFj_ld9N2}FxS1~g)gAnTO?q=pafBt-KZmv`+ZEI`$ z^yyPcNy&x{8{*>PN=r+>efx$nE-o(iU%<@FOpI|*8OGSR`?%Zi>Yg?$7)9K93%}q#1 zc<|tXL?W3lFqupSgTd)^mX?-kG#Whbr&Ei?l97?Yk(kHh85|spjg3u7Ns&k-J9q9} z%pWFu)-W3%09EUXgF#z6F56!NCA!LqkJxaq;}yEj>N`+_`hf z$;k$TfvpeFT)A?EIsX3rI{-{fOt8g`jg9NquOA&9Wd{RRlarGeW51CcvX37>0>Ha> z@7Nh~jJf(NlKI{*HZ~Rj+S}W=Z{IGJN)bX;RaFxc6G6K)H#bK|M^{u-a10w47snik z#bN-Mot^ccx_tQ+Qcz}L?S^5oj7rVq9}qOYHMqwqN4o!orZ=6giu04 z!t>|PySuyNl8R5DNhix)3WO-=cHzWVz5xw*NZT?__8YHI4fefxg=_z~)Kmo8n>>-7Tz1KYN3 z<5r5r;w@XY_?y3O-iTjSGb_^VcH3;Wyu3WW%>Pa1#*G{2=H|x7$C>8n=qM8e0RJEy zGLj^{UN5r*e=8308UzxSksgm{WMrhKrp9D4H8wUPgl1=FeLi1IOw5`!Yiu@KeSQ5x zeMKTsYinytN{ULQ3TeAoTU&ec=1r^Bx^?T;#puh+%Z*0k@bIwP?bhq{UaxoW-o1;Q zOQBHY7^5x4VB_(UuuC1=FK79Bv*W3{i zMx!w=FE1x2XQ3x>0E`*qu92V>s<{~#c0;>-Eq0NrKsv{W569gl9f?y<15RBvrf{{EyFp?(( z`E$to_wTQK9s*$!#7Op!Z32G_2n+uo$qR&cBu@~G~0nm>Y*e6 O0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.md5 deleted file mode 100644 index 4a04a4a8b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.md5 +++ /dev/null @@ -1 +0,0 @@ -f8cc7d2dd25fe03b7ca298ea593ce75f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_110.png deleted file mode 100644 index ba1ba731399d272812e30f7b2e37024417e026fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmV-}1$_F6P)#yheoX`0@ z@16H~&hu=iAp}7H8fs$q(*kI$hc=JG(B@GX+B^#5K<+3MijIzspOQlJA=TB@adC0F z?*C>UhGCPFlix0h#w;c$Cov2oM;zWKO-xLDmmV4mKoCSPLa%ughBlAF(B@H?FEo$K z<&KPuSab@X&+qH&v#pG;sA)q!Bku=h-Y>tJ6vATjIy*Z90|Ry4uC6WwLFVV@VfXp@ z`Olv}v$L}%Dkzo8l9Ccj$F&J*X=w<8APB-_GUMap<#M@2r$ zi_HrQ3uCj{(5=_kSGio?(9obW4@FTvpYP=41iQPty8?lL#bSkogv`y&!65mu$>nnE z>+6$~lbKBB*w`3(ATF0%S67#ikicTGqN1W!R#ssA>gp;#Ki|#G&E4I-u(0sv=Eii~ zAS@QEwYBx(;X$ELyq96HlvpfQsZ>QpMF@iM`Fs;2-rwI>RaN=>`#U>3mz9-0Jv~_} z&rGaY^8^9`bW5dDd3bnaXJ_y2?cLtq0sv4H6$*vA%%P#7mX;PA#|sJyBoc|icZdD` z{msqIcXxMUu~_d=cXxMVW1~i+$;->j$jG?9z6Jo~=H_a(+Kr8kwY4=2!z2<3Og0ub z6S540rN+j_cs$;~zyLuIN~O}oh!TlpeSKXfld08e9*?)UxcGT_h9O8urBc0!K?Vi} zJUl!If@p4TE-x=92qG;lZE9-j?(WXs-hO#`8Ky->Mz*)N!#2FpG#U*-5V5hby}iA< zoTjEGU1hyPwY9anL!qIeJv}{#hlcTU%QIfb;WnV{yHjsi~>(v8mN+D=RCR zOeT)wdNNFu(wS!>4K67A`}^c8W~MyT005*?DLG=z%o7TQIF4^`Z!at?2m}HEKuSsq zilR$POAH1hCMHIg>E`AJ8w>^m0Py_${Jxs6udlIzI2;bStpd;gQ24z*gXYabmQd3$^N`1riMyqun%!r;Nd z0n}qG{=O!hd5@2eN~IFsd3rKTl(Mt?ce#wE`T6<1zP`e#_F?h|m*yj^{GKNi3OhPF zf`WovTwDMEQBhHsmzNV06XXT&^K^H2%jNQihljSdHjPG;las^Ya1s*}D=I23E-o+( ztE{X{PfusF*~a2l3~Hhjo6X+b+zkRGSzKJav$LbsYI}QoXJ%$>D36Sl z=7~fi9LIHcuAQA-VqzkW<06shlY+>UmX_An*L!+;j*gDXWHMJ*R{(%iDs^&liin8d z@pxWdUPD7eFxgn#3XGMisi~QronaJOkJZDeF5JUl!#HI>8Rs8p(yloZ>_`v-Xe zG;_o9Jw!%E4i69iw2EH@u*rsn=9fU5M_~-SN&h8mY;63rgx?N5^C%2$9)+RJqcF62 z6vn`YWqf@6`*qM*fdTXK^76i42aOdV1pWU!%0jPs6oxjB!qDbX7}`7v^B1OWTq^D^ RBQXE~002ovPDHLkV1lnKsc8TJ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.map deleted file mode 100644 index 528cf89de..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.md5 deleted file mode 100644 index 01a84b6e9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.md5 +++ /dev/null @@ -1 +0,0 @@ -96d47ea615332483346f4d50f642caf0 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_12.png deleted file mode 100644 index 32d5fe2ba3b0d4669aedb594a1dd1908b8957c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1479 zcmV;&1vvVNP)FBrfDFs56)#9AlQcl!%|2vEQJKaQn$zag;?kX&{Kq&?FbahNA%qa(@pux6q@bW+ zYHI4Yy-X%kNlA(O8iT>0P$>NU{X;`T%gV}jc6J!9_Udx3_mxR8&(_Q(<9YMMVXEf{>Y+i4fv&IAXE5p`pS0Si$Z# zb#QQS@7}$PjEw#LeTGIVmDbnS%jI%`KoAubH99(q>mNRRNJ~o-2n5m5(T^WL{`m1D zV@!cS@cjAn-Q8WI(TK;XtE;({S)dwU)AGMmjQDJdZ#A@AS6_x1JtRiM-9G#ZWBY%VM;R4SFfJ~}cO z3{t7|xAwZay3}g*&!0bYa&jI%d}y&)W@l%orlu&0QYw`I(AU=|lgVDbd`Z)^$z%cm zyD|V!DwQ)cGsDBftE;OrnQVM~+=fm^z?MRX;@iWS^|JipFS~^ZEbDY z+1dCyAt6Dl)#B?LH*VC{){4bqjYeauXK0$6oAEV%4X&@R+lt%U+XDgumY0_qt}GTy zWo0Fw&o`URcpSWNX_{VHSpk66)m7Y_pPvVS&CN}krmev^k$wI86#zbe{%mW*$(Xj& zaSj0J^?KXN#jF_oJx^d@AOH*u4BWbP%g@gbA*52N*4NkVcIoQs^6~L0FE4j8Y*0`T zzTokA0C0GCX#G(~N5|8rPshf_u3x`yEw;6_A%sFgLMA6C-@SVm92|`6;o;#{pIk0i zBog6fL_~zuJYza`WnaF0@$&Mrz2n)(bd`${tyYhZkKep`)3%OR%--If$z+nt<<`3O zo2YBot{opAudS`&=JN6~E&>3D^UtrskxV2Kot&KDCGuObtCM2jRxn3LM~jP#H8nLl zovyvT9U*jhczAkx>hJIG?d@$cnOa+09rfjMxjj8SF)=Zzsi`i#eX6Ug>+I~Dn3#x; zj&{|sL?TH}PA)Gm-`d)uD5|ou^6uTcLZJ` - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.md5 deleted file mode 100644 index c4ce13cce..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.md5 +++ /dev/null @@ -1 +0,0 @@ -42d3969ba652f4cd1a72bee7b8a3c98e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_13.png deleted file mode 100644 index 1ca7918972617fbf57bca9807380182201d90f65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593 zcmV-92FCe`P)MU?95>a46RfAc>xjOY2bwzi0uLeZ_Xg+jDihr_{fTtPv>r%#_EQ|cc93$R+P^CF_;=H`-1 z;HRvtEG{n2=ksBV_wCyU00<$LWiMX5NP-ySjEoGk*-Vbp)6?(Xy^ArPo}Ml!D9F#x z_jo)DHRsQt*X#8R!z3joJ$(3(#CPr5RZ&qPTG-2%FB20J$HvA0;OWz+3#*-;o<<0D zc6O5dXV0G1>2xZUs->mn&KJ0e8M@L8Pc014W27>_r?%lh` zaonw2w=l*wn+*U&WdL9>7)C}$y1Tn4CMGzJd-Uj05OG)t-CObud-duS01ONa%u_Zr zG!zyVF1)SM)6>tKIg^-}Xfm0E`gxiwSFVubuV23cz~toQ=g*%3AU;0cZnyvV@xy2| zs#GeT=P|}cqmi7;>2!kF3?q|(VHlUoMe-YsMxuH9_ALNROiYmG^XJb2U}|a#W9&C9 zi0u9Q_WckwT$JPEPhW z|GDX8vXPMyhr^*(s}VvPjRpX=Y}s=9^l2g^GtA@h*lf0(oE(35|C_oE8#c_%&3*Xr zfi&N|c|(E#Ad~%ji2})3mi2nQWJ)b64t=nqgk{+5?CkjXcuh@>#bUX3?HWR8W@g6c z^Q~F4X64G2Hk+-!zCKW2xm@1d+?9Ot9sZ(aNd3bo(} zl$7`v4gZpO`SRrub85BP?Ck9F@^Yus$@6?=W#!(zdx`NHjpo_2XXLgEBuhw0*uQ^& zSy|bO7cbmyx7lp&>go!TGaQy^7+GW(hRMszo0^&$92`7&@E`!NEPLtFrQ+h^)vH%m zS63f8bST)lWiqqboRgE2ot+(M(_(-Zzx0067is#2-a z($YANi;Ii1SS%!7Q&ZF1+pAD0GBY!S$eNm(Qd3iNb91#??eOrhUat=#4h!Li7UDw( zC1SuIdg!1;3~HFfpoU2dYM8{JhDi)+n8culNeq#nx!u2iKk{`@LPW$c;g>*^zYT=x r|HC8&-NPgXHB4eq!z2bZOk(^5It>(mUn%Ki00000NkvXXu0mjf+uJO? diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.map deleted file mode 100644 index c543b85db..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.md5 deleted file mode 100644 index 8b53070b2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.md5 +++ /dev/null @@ -1 +0,0 @@ -b7eb3cb323f996dac6fcd5706b5a9587 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_14.png deleted file mode 100644 index d27b8e3fbd334997e4b01cca5533532952ae52f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1569 zcmV++2HyFJP)e}Fe)l`0~M(kp(dK!bXsILO9Rc@iv#=ZciV2} zHT`ve=kw~Ehwr)PdG@{M+`D@>#Ih_9{(dCuod98VAV!J=Vx&kQMv4S!XvgF6T)TE{ zy;33k7IwScWHJT2|5}k=ueYP4W6e_{{5BmO9bT_DG$Q?3)ZX5{R{0QC2ttSxA=gNe zK#UX##7L2_K1Lc0hL)C=b(#9VOnQ3yjT<*sHg@fdTuzokD*2zY5+ieSa}h!aA(>33 z*Xzs5%6fZye>sY#>60f<3fBZ@57N`q0{}xqLxqKfN~JP3Ha0IW@7c3w96d!*yLaz? z`t&J(e3|UpwX3sOA(U@)9Jcg}1!D-??4Qt#zZr!@|!i5VoO@I6LO<*~Vjg6NsUHbIt zQ*m+ekt0VKh8Y+b=I@nasbAVT*jx7*E$ge4~@hqJj24GjUn^XJbw%DTF`qM{<)PD@L3I-R(knwnZ& zU9HpU91cgQo};;X^(t=TbJpkc;n_JQynp|mWm%ukXSG_Bl9HmLqD&^!ojZ3p*)j}M zQBgrrR3H%GiKnKf;*Er5*^!YE02mz|#ogDhUjx9z#01N-K_hu&@7}!wfZ^fc&>DG; z8CpI+0N{4JLnEuRBJp#-&6_s^Kzn=p&Ye5uaydfCX0!QxzOX|Y8yh!n+-S90c@C>o zDse+5lL5f|{5LX=&-t=qS6 z&&)uzI~dBO}9VwN6e>dcEF?ii*6v zJe5iX04kO0)vH(dG>s(FXf*lx`6o`Cc=P5B!!S;#v$M04=a@oRp^6)6F#Kc66M&ooko0^*N*Ajua-EO&DzGKG@qtU2Vt6eS^j#pJxb$55mWHNl$8cEjD z(vp&rl9Q98*X#TG`Z6;!dBlPUz1S@CW{0ruz#qEVA*?&ZNRdE{6bZygkwA diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.map deleted file mode 100644 index a8b60bc08..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.md5 deleted file mode 100644 index 47dabebf8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.md5 +++ /dev/null @@ -1 +0,0 @@ -a846ea81466572d0dcd38c89e164f553 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_15.png deleted file mode 100644 index 9b6798ac0294f5fe01c7b96f26f12479d6946451..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmV-^1%djBP)P|0>U4%kLM77Pm>2yZUp$=*D`@aa!A6dT!$5@a*{!Hh;Do<4oLZ}ns|NW!i( zLm&`<)oMj$Kw(4a5#*vt}f{HdK^1; z4DIdhSY2HO00e_UT)lb~`T6-MC@8@7>(}w)$B$jBolJFgHSXQJhx+<@>C-1JEiJLXzn^d3ydgJ;C-d&g)rnlj&)FJE}%$PrFVOfV9O&~CT0ySrQDD=I4D*w~o3_W67S zz@?=nlBCIG;=sUwh@U%mj)Q}P;yP9SbR=0{o9bq8I2;7Pg@pw%Han%=ah)ok z%jKe0t4)|&Z8N0GpN?eBp!#LP@ApHi)gnJXUyM~$REW=KW@Z2YMMXtW6a|W+ATu)) z;cyskw;OJ^8=0AzTkhH9^ZB6BXi!#GCdMi&D@9Cg?R4mLy0r7@^?JN`@d9`5+=0<( zL|a=MK79C)R-JV0b^e6!O{A;1xEQOes|W^zVo_W!mxz~^mLek~1HoVrCr+G*yWi{e zA{L9m>2!*P-c(Xjf@m}fuh%OU#o=&>*xK5fs@myL6lF*G8XFtY*w~1TjSW11{v366 zbqE9k$j;72R#p}wk%;)(U@(}pc1A}0&uX&#YN_5CDk>^){``4#c6MTMaS<+;3q3tO zBCgZv(A3m~*49>h{rVMaYioG_{ymzTo3XyW4xLU1tJR9Owl;kJ{29y3%NQ6Kz}vTP zQC?n-y1F{tym=FWKmb0U54UdJg2iG%VPT=_+B=mh-`Lm~dV71}a5(Vu=TF39F+?H} zY;0@*_;ny192`U_6oSX&!QH!elh!LNEX4HmG@{Wc0Hn;X+74b*67u`~v{)?6$;sjA z)2I39(W5PgxNtbk?(S}umzPtk)zV}#addQ4+#d>s*wN9!l9Cc0KYpC;?d@DySs_UV z0s*$Pv@kC(k0(!_wva*s{Sy?m~3>+C5 z5%)TsPMXbTW@l&f?Afz?{P=OwGsDEh1gom5sL^O>GMQ55Psg4fAf>})PY;mN-{YTc z2DjTSo(Q&ow6?Y$^z;sd>Zggrs;sOGlz%_8#Xq| - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.md5 deleted file mode 100644 index 945743d74..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.md5 +++ /dev/null @@ -1 +0,0 @@ -c1a6de6c9e0d9788bfe34a496a4a1827 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_16.png deleted file mode 100644 index 2fabdd5f501438a9225d840a7bad619dc9579f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmV;q1xEUbP) z6q<~TjEpE0id6AmGtB4nEiEk-ToTQ(EG;ehd_H1?nVw{`*$SnH<}V-!awJ0UVHATl zjAGD+QH;VF*3{HAH#e8xI%P81{QP`=>ns4Lc@+Q88TMZcjx$0ohIMv!A_#&Y2#dv% zN~Qh%{cCG$c~^EC91h3e;2`{+Qp;wuo12^8y?b|}s;*wW`uzFx{7cN09A}uxWWsSg z8jY^5t_lPKg+lS-#f$tZ%Og-NhGBBKyt}(Q7z`F$QSO{-Nh~cbt*xzn^5lt5r!yD~ z@JmfR9yggxVzK!A`SU83>dTie={E+0!QS3p9*@W8^Y7lhyT88=<1(4-!Gi}%rIN$p z)YjI%di4s%F$}wL;|7PrxpL*o?CdOpAmMNrUUE8}>G>I#L=J~DF){J|`**wD4%@na z|9)$0E1S)>TCEu+X*8Pk_4R>)0R%ysnwm(I$6_&)$#m(`rHYD*p`oE4KYoxTpN9PG zVSRml7=}5WP5^*Tr*pYnZ{NP%+uN(Ft5d7hzkmNel7HvUooF=r`Sa(swKbp5r`2jx zmn;^`hwy&6_vm-OL@F0E(hVA{puE=zxn%itX)f z0KohA@8NqC48veNnM`sxoQ;hQ9LKL+yJj|({Ab#(ZL1M77aq)Mzxa+3Y|d0PlVH@FC10k(4rw zBn_@2E|-h=Oi1b^$|DB=fTAcdlAjp{ed2PtUauDbAQTGWKF?qsE%Y|{NR7$KZJwILE^z<}>AQvxQ{P5w! z%aRaKQpB=+|9U~y+>2L_L;TqqRA$kVJ4-O7K ze*CCbtAGCdNxVxcmA16B3=a=~`}WP}^BIlCuC6YDKyX|uH8nK~g~DJkghC;Y$1^@Y zej3dgA(12y2sSo05{U#!nn)y4sZ{sw-P_vQibkVmvw3-W`J~;OPimcudlD~=;)A2rR(eK zZEbBibTcc6Ygd+sj^eVivQkk|QEU|j0;C-}GJFp^gPm+SWiz+;dRht34+uA52F - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.md5 deleted file mode 100644 index 6e898a3db..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.md5 +++ /dev/null @@ -1 +0,0 @@ -9cbb83e5d913973eb43842ac722de100 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_17.png deleted file mode 100644 index b224ca8a145e4129c87e23066fa47be03b1d4498..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmV-F1i<@=P)wY|*}x0R23|zW!tHijt=3FgK{PcrSuB=V`Qvv( zlH}IbR@yBg004j>2)EnK?1=spZEkL+%Mao={r&xM9dy2d7nBXWplsj;u52_K&GPbc zrdw^a!q@Cdo!EOm6er6MMV=6 z6CWQR0Dw>^G&nd|T3RZVN{5GsUtV4~#7vlLnp&;4SS&3qEn=~_rl!W@@hmJX$mR0F z!ou3M&rrJ$-%)vAP~TD+~sls00ssI!r}1g>8aQ2B}vj~G;)YJ*xA`xTwDwW zgBp#dtE=nc;==Fud%fPhy}j-2?f>+)va&KaH~0GbYA_gBE!pjM9LHBzS1F1j2!gNk zMB-HBd)`WR;!JhQ zHri~qKey}a>#bHRz3pgsB`$tvci zq@;x2$jQmc%gf8p&ySU#pPw<=($W%!VP$1y9*<{tcULNv(tU+O!EGt-<9Ip$pL6m> zur*DoRDOMZ(MM2>ii(P8GL6Ny9!g6Qbzi1jfHm#?p{(=)J&(?cRlQ&Urihljbjx%B@uUd|JVQvstG@7Xw=PQ6}F zp*L?b0sV}C`G5xAdo~D^4ZNUi;00v^FDM&$LD|3y$_8Fo-hpyDo$2?1xWB)b%jL`t zOE!AFK3#qgKhWuP%o0O)0iXq)Z{P)G11~5WctP2~%P*MKS);i - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.md5 deleted file mode 100644 index 72726331a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.md5 +++ /dev/null @@ -1 +0,0 @@ -0509044f5baf3f180b4769fbbf68fb26 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_18.png deleted file mode 100644 index 3dbfac5db10c14cf290dc71d5e65027e71ccad85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1331 zcmV-31t+tgGQmvpiyM6?id^#(-rlqb(xjis$;pK0H*RHE#>qLFzn?%LKy7WU(;GwO!dDa)yGw@3>rmB%y9hpaSX$VYXbuVsYoBg!Gj06bLY;6^Q_eD zcDp%z_%KhNJozKEWr~!o43=dfA~CI^q9Rr4e+$c+r>3SbO_S>CYG!9=Gc7A)WaKij zu&{t-Srir)vTfTo{C+><(oIih_FJHb;S69c-&=5^cO&Eqj zSy>qXrKP1@xpIZ0M~~umyXo%k#_#uI7zQqvi=v_;T3T92bhqB)@o@e6b>`>i85|r; zm~(b^meZ$Clbf4MUS1w&&z|Mer%wP0wIz#5R_l6VQ%y$9aOTVzMn*<>{P-~w6BCq_ zlu%PsLo^x%prN6G7cXA$@Zm$k;V`CY^61ecy1TnEO_Pp}4n%}dD5P@UzI~f(*RJvT z^JnVn>gen1Lqz!T;|KTe-{t-vl*-CV0pi++4kF%lP=X05UQ%;y9OSn$pqH5!1JS|9)v{X-TTFt*uRJYinaPTb3mvB9TZ$nwy)& z?RLw|%#35s(a})>BpeQ_zE`ha2_Wy@y>ryIR!p*5*E8SBIuVs37Zv9U46#>U9X%3}BK-M=)y*Xxb>9t;LKaNqzrIXM`Hfn`}t zPEN-Brmd|F!!X#nb0<%qKIOrK2ju1DIp(x&o9ygtd_JG*+p}kn8gpW;m}Is7m-#kI z+AkA@g@w3WE&L zqfuI0TUlIOjEPw`@WR3Zp-_lp$Bre;xog)h78e(pn3zy~Z{NOEV@}%Eib+=Mdge!rH7n#RUP-n@Ck*RNlB_UsuoH8p(y{vEH^i{J0(+_`hSe*KzABtm<8JAHk9 z0OaTAGdw&TcVbua?b|n^(I{KDZe`P^O@u-rT3cH;q`SDdm?KAyaN)uQrl+T|ZJXxi zW~!>H$j{Gr)V5YkvRc)@HT?`TZeg+Mo p-_M{~i8g~qq0OLCXftROKLOO&;O4fbli>gW002ovPDHLkV1fYIoO%EN diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.map deleted file mode 100644 index 27eec692a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.md5 deleted file mode 100644 index e1f103666..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.md5 +++ /dev/null @@ -1 +0,0 @@ -bfdcb2b21586d29b7d0907a4bb2266ce \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_19.png deleted file mode 100644 index d1d9d5baed0a2dbc2c6272c7601294323f8d081d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1191 zcmV;Y1X%ltP)Q5d200006VoOIv0RI60 z0RN!9r;`8x1YAi(K~!jg?VC$TGF=$Q&%9koQpruCnW#lOLzos8WtU9}77=zKkVv8y zML~3dqHPdCq1&PxL25w}MM6Ocffgy%CMeBn3_&WqR4&wf7sD4*nVFa7dux8Ha~}TZ zc^>`GoHHW`1%p9AfGdCSZh(OB;C}$&0sask;7>AkqSxyuCMNJ|<@ZonSlHX!`!aoX zA0P;_va<5+E&VPG27_L&$3~LhizdO}Gcx=3;5|2NR74RaI3GhN`NnFk*wj(AL)Weq2ycFgG_BMRjZg6bhxNs7R;N zeQ9|tr4vDv_d!ojPw+pqT5WuLioAiFn;RI0Yiep74#)TR5HI4k7qM8Zot+(YY_r)Q z2y!}|;Df!Wsj10mG`6<3LJ%Yr3IPC0rIO3#rl+Tul$4lErtmpmpi-%0V`CnV2Yu@i z2n55!!)0Y<6beP9QaK!s=H}+i%uG6+-qO-?e}5mcbVwNh!0mST^z?AKTpEqm(b4hv z_!veU3;3MLDwPU`;n~^QU@&Mf7|zbl`uh477Z>mD?#9Q*mzI{I&O9?SGdeozbUK@w zni?7!TrStq(b3`IA%Y+>ne2UO06<6?06->_nM|h5%}uM-3d8X3?rs=yEQEMZjs%55 zp-?E$@#^YoZEbBVO{Aoxq^71)snoQzG@($4UY?QQcDqMLM#yCH%aX3HuA-tM0Kmn? zg-)llTCGeb69Ax8D*1fA-ELK0f|*i9(@(Ac)Ci?(grft*z1NbTrOpv(W*9Aj!$e91aJa zqF*I~AaC+~B)h!4OiD`1$;pXC{Pj=#in#4XBofK%^`hfQPRKuhUX`w{uGVU`2L}fg z6%`_p=;`Sxd`|QtczAd)7z`B^6)$lJg3v*BcDCQ|zrMakr)IMm4ZbP;k&MIP1Ofqz z#eyvwCTA?f%>#izFgrWzbULrDt_BAOKh-lBjFXcSzuyl4*xueA8X7X2%|4$m5D0j^ z-sk7%C~{)q@pvMUsI#-vZnq-{(%s!H7K_nM16%qd8Jo?PNF;K({PgtH<#J6;O>Jy! zgvl8Tar0noZ0z>-HY+PjB9YY9)qScT7#P^v+9HuiLZPs_agopGS5{W?cs!%gSYBQpMjR7C3~IId zO(b?;7@nV>k8jR@8mUw&l}fRZ#6Fwa?RJaB!sGE0TIF9SfgbGb?d9d=)z;P)7Z)e4 z$`2sQ_k&0%E-vv z#>U3)>gSgtl}fQwC`kPO0B?x%0DlM%@Q3gKe+Uoo=P%DpxrBz}F_-`V002ovPDHLk FV1mPcGtvM6 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.map deleted file mode 100644 index 19157ec73..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.md5 deleted file mode 100644 index 09525b794..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.md5 +++ /dev/null @@ -1 +0,0 @@ -a95b312c6dcec22399c1450bec9b0371 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_2.png deleted file mode 100644 index af90c46d6dc0b03e2c60ab753d562ee845eb7be3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1217 zcmV;y1U~zTP)$ik9DBQtX)^Z^s3Eu-6+=XJ@Bgum9eLbUGbD5I&y|!?4E2#;dEV@2&rnBq{Fd>S}g&_T=QG*XunzJPiBG z%E|@@2dk>87z~ElZ1(wl_4W0cnVBMyXkualLU?_B4FI^hx@v80&CShav)OHJZ8tYJ zQS~!3Ge<^7?(gp%4#(TFG1FBl)$Z8PN&lq78Wv@%&xAk$H&Ld zw3Gx%imTV_dwP24bh<{PnVOo4JTx;iGdw(edwZ)=sajfEva+(=Znw>5Gnq``nC9l@ zU@*A9zrVAygX6ebt^RPv$g(lh&1N%(VY9Qd1VLiuh)xV*v7_2 zaxHxf5rM^GiSoq6=kw*~=RZF`69jR6ea+=^pPru3q0-XQp`jr(cDY;tfIuLC%=Ptk zWV+pM0D#x)MSiE#2>|f>{RBbC<#Mzw1cO1XR?A>8E-x>m%En0#iyJ5G?CcBx;BvVl z&nQmKii!$@!SJCb1VI1*EEY?oCz+KyJw1)%IGs+15VBY-zu%9p3WCSup@Glm%gD%J zu~^6y2n1+=<2a2*IIh)d6$%B1 z!}(+band;)&cVS!C=`kl#^dpnN@Yh!$MNxTFc>r#3^tqXi!HrJ!s6=ndWAv}>7mo< zGMOyqGnvI=xxKwDDk^GdXlQC`Lcz$Nk&#hSQi5SvUS3|J56kbR_x1HHFE6L3r=zEZ z_rgpjQ*m*zTrL*~1iQPt)z#HsZz(pB8}KJ@Xvtx>+nG!zNyUEy;LQy!#`oNB#A30~ zXtdheT93!m-`}rNsYspfw?Xc=g_@cgtJPXiP@q&QWir|5=qRbv{Wi#5xj8vGX0w^p zDSk85S1}Ty#3d0*ToR$gC6O36w1tI*pYJ0ji6L%FOUuvqk&-}y`hPBIP - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.md5 deleted file mode 100644 index 628d9e1fe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.md5 +++ /dev/null @@ -1 +0,0 @@ -3911cffaa743ee4ba03c445bf25085a8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_20.png deleted file mode 100644 index 8f35a5b5146cc91a19480dd7b67907c46a1d7e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1777 zcmV*bxvP5CDh|2pHl60suft^uTO3 z-@kul9G~=mX;P~_>cR6%jFsv7)W?YghXSpSj=W~bR=c1sK38IQS}hEhqGtT z#ze^efB-;zK)?_m5CC?X59a6RDT-QLTui`RM~)on>FG(pLU6sA z-@k8nMOy$x(c9Y_6In|n5}|4O!i5WL0u@-*UaQpt07X$WP2ak8D-wwygzD<*n3ju+ixEN+iKMl)RjE{Rx!l6S!Z&Z;;LF+4 zN+gmSH*Qo^RB$+)7cX8^RaIdhAcTU!AVpDwgM({j>vp}i7`Dan`FsY0fu`v_d-gOn zH3b5JIO5{s;?B;__O+_`;f+8ns$& zx7&R_-<2y@jvhT44u_dCLZQ&7PoD}33Z6fIjw4d3^y$;5j6foh2!+D&@$q0VXfzrH z0s(dmTUv=kl9`$L;lqbeD1;D-j6-_Kx{eHj0;Q)aC{{Cafj&V2~ zilUmEo84|VTQAJK>FMbJu(GleCoKR7g~I5|+uPeIiptK;9v>ec930%YZ(odzt?QUF z*klfeBRM%adQJX)&W*BRABe?bnx@&Fyz}z%LZOh;>BK|)anH-kV~gkJ<_3d7W`||B z+nH1#b+ssiWcMhK_C#YSS%+`o@C;TjIHaKV%TIfO^3r_ zd;|ES_>Zl{XTv_ADC+U!$0n2M>eZ`Ot95mC)$8>#Pfhvx`NxkRzj*QD+}xbYLI;2*s1p>k4%a+8e2s;%cG>}2ro&e1OzknfcV0K^9b4DkU0fcSubAwD1g5FZdQ#0La`b>Ca>>+4H= z9fU;UcDr+PbE6~c_#pb%al-#9dc8h+NRe+32|)G-1Pt*30f6{`fFV90008_4@zzmU T*@ieA00000NkvXXu0mjf@a1Tp diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.map deleted file mode 100644 index 50c90ebcf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.md5 deleted file mode 100644 index eb4216782..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.md5 +++ /dev/null @@ -1 +0,0 @@ -1fcab742ad9d30b6b9d4c174a08118a8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_21.png deleted file mode 100644 index f3c3c409dbef6accde1d334f0ec07fdc884b7a22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcmV;l1WWsgP)Sw62yxn>Kx7LS-#nBraNHZZxb2TL@-2Iek-rUznvt2u}N zJ)HT^VLt9)5JJGg8VUcpfnN^iFS~I5vJ2-gyCg9Kr_(t$HukSt`5ly%mG$@czlQ&t zUz(;@R#twzrQd_g<#IZm%uLc-(em>0PxbTLXl`zf$Z+>xcH#VG7tUXH;r#tOa=CnJ zYU*=qIe*#Zlm5Eh?xv%H{Hrk&*A}sjsgOLU??9Op>HZrMkGd z_^!(T0LWlzX(=M}mY0_of*`uPyQ2w;i;IVbhN`Nncs$<1!ouC%oxxzhaXc+8t-ijV zq9`Pbmana?MgBqvA08es46|4)Z_A#apSQKO357zDNTk#0uCA^igj%ik^}I?;OCf~s z${>WHP{?2~5CoB)p5E2fb$@>!LtI)~IypHR+ZKdIqtR$I%uL+#>-Bmmiqh$HF*GwX zGoz!UH#aw}t*ttpZhwE@Znp=6L77aZR;yoLUH|~m@*gbQ($W$Ng?4v$x3;!un(pZ6 z001m5E|MfUJ39*@bh%srfOlm8fR2uiot+)4)fxx{NRnJ%UymXF5=^r{GQW1a9RLsv z22nUaKOa%5xVU(Dco-eiGz|baK0Zd_^YgPnAngwZns*k4u`|h@*nI$ zDwS4NR`&GtoSvT2G;J^#luBi0W+nh2Gc(iU@jN{}#gO4R-q6s{+1cs!dPAYmS~OdU*R+FXG*2g;c)o<{_^s2fk2>8D11I2dY-(+Xf(=XGNn=}5{Y_yd-ZyKa&mHv z{0CWDTH^6|MMXs4U!wfO*YmHU7`!Bn2{;~__FS~I5vdbSd(Zbr< S - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.md5 deleted file mode 100644 index 12888e466..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.md5 +++ /dev/null @@ -1 +0,0 @@ -21b7f92aebf6ca50f077df2432dba230 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_22.png deleted file mode 100644 index 26e16edaad00e339b954c8149a8fe9c0e6a84f0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1220 zcmV;#1UvhQP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1bInBK~!jg?V3wSI$Ipa&#~xFkX9R|EMK)~(}O0+T12(6zy!lG1Ir?4 z5jo+aO;9Z&s72Dc=tYo^h!#f6YUM-^!WKammSZo8$eu*%+{J)*uA2W_cBeny`K&y@ z^F8PM=6hz&c#cAXAOHg`uzos${}GJW^uc&dAB@-ZkxVVv?e>X@iJwX(@u;Y%Fc=J> z;y>>4Wk5b4aDq z>FMdOwWZJNc(P0kzT$OVU0q*aA2lMCN{5GsW4FREtgEZ*vjag0A%tu;yRx!!YisLM z&CANl=H});)#N|rPhUe&6eS4a;^G295QReF^?H9gqp$P*Ud!cj2qBBb5{tznBO{?R zTk0C}^z?+Hs8A@($jFe(<>%+;WW1!LWME*Ry1JUpW}8f=P@fzQXKZZj@$r$|9fZle zUTw&rrV5CqxS*oYyH3xa~#Yz~V=MJAI)_A@jz6seq?oK&mTvFjO0DL~5eD5VCB|SVmoSmJKwE}^FDxRF2gb-$DXK!zBudc50c)Tzf zj^oM6$s&=6EavCulfke-Ka!oDoh2nD<>lr58}X+sisYNukeizujYcy#ICyn+6$}QA zMx)>F57P*RLKcg4dwWZrt%imMvKB%}6_bC?1mK=H~kSez)6A7Eex2 z$RGfK#rpf|K9Y$uWF=OixcwNlC#l%xE-5Y6Jp-LZQ&< zbjQcXFE1}UJ3C6H^6l;IYa>b|lB%kzo}Qkot1BGG^?H4MeSKC|762eCE6d?7kI|LJ>~M1t{}J{Yg*gYlX^ z7_aGr@tQsuujwPoe- - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.md5 deleted file mode 100644 index 7ecf2c322..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.md5 +++ /dev/null @@ -1 +0,0 @@ -bb38ba38db091ea3fc28c7aa400de93a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_23.png deleted file mode 100644 index cbb6fdf51761c2da0a1f149deb2073c8207a039d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2265 zcmX|@2{e@Z8^=ffSCcMD{stLBb{cyV$~I$3_N>{jYf2+oQe*F01~sy07)!PZ5n0EU z8&cU~P+79mSTmLy%(%b)=YQ_|p7;Ho^Pcm5&+|OL&+~nL36|zYT%1Cj5D0|J#294_ zRx)@bp&Z~XeTSg~77kBSBNXK5*Im#?PJ=+8NhT=0>kmllIpNm`o1#5#_fMD5>&}~{ zVx9$A){146DLP{Rn@LvAToican1eTo^H4q**HDpY9nsX!iu?nO> zCaZcQf1Wgq>}70(wl!=U<*#m2s(#%2(f;zFeUO4cL&cJfu}_>^URUah-#T^6JfUB_ zU$(}v_>!cCX=6USq@?89^y?$Pn<aUxcvVc~|j|~EuEPdj{3AKwCE7o;Z0{s0wRz}MBV6daT8c3GfEnaDJ z($AtREGdop0G2F`Mw_Gr;v-oMBf|Pr%hOLU-O@5MOW)QxDe6OogoGR@0g{hkh^3(- zBS=hatd*^8ckffg=%KuQ)y(RusfWiip%&b>6v*ZlwUn*;_NNQ4YHKNB43&(GjJk#f zUKotLL@q9__UPmY(u6Y@4Cj_$LRS~+4AZyS=l1QPn`$UD+RDw%Zz_5RQE1vPC@7dv zDD(Nt7v-RDme$tRKeq^N`G{3fod{ILsEXG+p8Xw~ftOct!mUFl)5P3d3W*ee!C>_5 z?e~3s=VfIR5)(N$zP9xy!L^X#`)Z&-D%AOfg|2M%+m?K>_*0_CK-iD)c)SlP`fpu- zf8~h=UsYv{hld#0E2Ned``v|ir&Ci?zi)4Mc6LUGAM9COzuuK5Z2^&yk#Qe;;n>vN zJh!^q`yoS~62WZlo?lp5`LHq7!uUS>3o8EQ?2HU_c=+X$unS%tQEW{uEwx_ndB3)W z9@lkt7G7LjRJhUbJK74$$$9KsHAex3B3NnH`|+6pZK4rTVOKdvC0pc{*K4@=479dt z$MA$P_cOMa2LtH~CIh5P)H|%X?nk)2H9<5QJu)()6tZ)(u&78`h~P7@HQ!@mW>!*D zlhV|L)YsQHHa2#jeG{wTR2RRn;3Z{|hpjov%;e`5z4EwF=32Iz2>~Ay^W0DYfxygk zJnYNWdJ52^vzVbXEtd=o4A>qV>?zjQ*GtVm7F6YsmX_X_e(mSKHaF)9>aK-bP#9E~ zl8P%Wl>)i6fvbe>Vc8rGu~W_UQ_XdCYNyYhtzf|g1Z0M()L0(Y27zh)6n1y4Gs05f6E1=2J>}bQ4bD()|lu- zb8uNNZ%cr_<74jco&gX`HP<;+0u7LAP4K$Y?A)CAPDoof#m?6Dgzj~F`-&O>6{l`% z1k(vB7Gqd+8W5aYg=5f5AYH&t`qb`ww~8J`=9aL(UUcwX#J0HYZ=DekxS5)klVhr@ z3mF&~kV*W@u3`~*4*x+#RTW1Em1+}iS>4!3rcj75gzIyhtE;PbJvTQu*ort1vj+xq zrCXzNcXzjssEP;0|3gV&Wbflg%bk$RPegT=0Glx}F%YG|rE8ogPs+;4y%`!xk+ms> zOd~oWW@ctm^C16nUteL(pm?}e@LdM|&p58L-ou%hnQ?_OzYD3w-)Ow!Kl|pl$*C#D z0b4S4sPe|e*0#1$hlyyCIaxI)5aZ+8`ru((TN|-z8op^kd(|7_;sQU(ui)OBso09! z<|rC^_mKVg&%O1W?n5zyICl)j$iN_)NL%hB7A?sp(kHSfCnu31J2JMmw!&J$*9fOX zw6jtqi~_di&{wZsg>rLqup%i41qH9Sj|GD^zrv$f%!7Fv&BW1>IBtYS|E8#@_>;jX zt8r-wPRY*x0E$OM`WF)O8q${Ld!7KhEtifhp>P9Lzv*@>8=IoHa`N({8Xaq0hqi>q z#)}-$56jEtRDE*=2giemmvkaokB4p+-{1U-L?SJnoIZf)$NPWK>Ed#7i6y2_={qzV zCnqNvd3g!ow*a{c+6t9?>g>fkUdscyVGKH&fRBrN6?qh4_*g*ih{a@sLZJm!RY{YR z&btw{1Q1{C{Y_WUL{D5_Vmjlv`m&Uxt%?lUl1ZdKkatt?x=?$2d*q9Wo*q1nO0M

    gww3>})g|Rjbu1m5RY&c)eb`-M+E0fsg6#?vBM`mzS3p7Z)gs_Vo0m z&wO)pbANxY)oL>^AEHR#>lZu~f*^Lg9Um492Dw~rB9Xu_EE0*7mzT%malBs)1_Q7? z9uM?SgJ2kTbaVt zn4X?aCX*m;Hk(ltMGyprVJ4Fq3Wb2~fXd2BU<89fI-SmBGJ(tI^MQe)D2+zr@p!-$ z2m~OQCNqo00ttUUsf?{77K>#vnY>=F*=&X&D3wZ?OeVM6jsF6Nhlj+a1j8^eI2_K) z%S$8@0j|&I0|uANeSd%V`~ASZy}bp&G?|4$A&+7bb zCMJ`q(P$V9hC-qE@=S=E&41i?|0w(W`z0kMS-$D#eV63>OZKr^tuz{~wYAmf^No#- zsnzOSSCk*`M=dQaHk+-gs;Z--Ln@Wd&(G(&BC_vw*{8I$bbEU{*H!#NUi3>ILg_*d zr3*QfF65BxyWcn+{@)1%0u>b%#0ZHlDwQf*_2dysrIP5v81?@bGN}E997-2*C|$^* bbRp+&GutLWmQr^u00000NkvXXu0mjfN|7aN diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.map deleted file mode 100644 index 26c2153e2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.md5 deleted file mode 100644 index 07028de7e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.md5 +++ /dev/null @@ -1 +0,0 @@ -d0bba657e71229bb0975d1d5e96b55e1 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_31.png deleted file mode 100644 index ed97ecbf8e19133ba633e858c4abcbe4e9ed7f5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1579 zcmV+`2Gse9P)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1>i|UK~!jg?V4>!Q*9W>@7u*Gb2)=)m^x2IWRXcKX%O1W2j5y@EOd}l zv;>W5i625C5SNgM77?-_oe;@-|Sh!6rioZz$50{$X+uepQwnmc%}xnmzY7#tj|t*zZD zDSMBL7cZ8SlrZ7H=Gtbny?ghLb4hy>qtQ4xILOZI+g#Mv*2a~dz0B>~w_P&)dCeWX z*WAH-%^keg+_9Uyj*pMmYPCD9!gDvBz!q(C5OX=yJrAq#c4Dey7Kq$-$g}55{X145~Zc3S*=#L9S}kWgCROPdUbU*I5^m3 zGBFyQPG?b35su>l0Rj2>`OC}82%*cDFDsQwx0)v>CyyOFW;UAv0HdR$Te>8Z$z(Da zJL9$UnjnamFJD3kV`F0h0231vR;yK^P`EAb>gqxWt*@`Qx3|A}^QN`6m04CMG84+Ajf{bI5B?Afz^ets7&TgnD~>0RXeJvs-q1{``4HMh1Ny6&0mYshA~~keO?n%?1Fl+wF9o zBuRgN|FN;L&0FktdstZ5+S(dI$l-7tJ$jTN2!zo0@81Cc7K??gWN~p301z4)Iy5x2 zw6vsBsf0qI&1ORgsZ=UjT$6%`~&0ssO718FvTE*!0FScaU5@IYT8`+^XE^wT>kj+NYkum{kZN zyVxb92@enV@$qpu9PFu)N~JDaD2mc*wd3RCOwET6ALwHQ$8nM*r>CdcZGC-xPn|l& zg#QeqkI%@+h}~`v3JQV{1_uWN0M4I3Us_taU5mW=`8psVptQ8~$&)8*Yikg~`ucjE zPWR~1Ba6jC5XAWSczJobUawzSS)nLOBobj5W;7b>>gu+8BZ)+EQdI--3uv@$q7@ST2`~L?WqFisN{7b+ueB_xJZNDJi*i>y`&MYHVzbh=@o@NeK!HQYw`> zIXV0H?{}$DtJNtfDeMe}VOOtSr9b>NH8n*>MkXaC9Y212czF2Al`FLVf`S66RC?sd z5re^CFc|1T_6iWOen;2q_4GS{x4Qq$(BG-Dzo6bt&*-}y-fQmQz2*+yYwqB^<__L# z?%=)V4mbZ<(ChWw>)3nD&CP{|hO#qmyw1qT;7ZRPM<$c8L&!fRat421a|iD=cko_w d2k$j^`~l(Y2!Ax%lV1P;002ovPDHLkV1l=f754xD diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.map deleted file mode 100644 index 09cc591e5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.md5 deleted file mode 100644 index 6010a609d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.md5 +++ /dev/null @@ -1 +0,0 @@ -bc950b2a380edb2222e6039af29b1619 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_32.png deleted file mode 100644 index 716877088edbf915379a5dbae082b0df9414cdd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmV-*1d98KP)J<)I#V3vWR8w^SVX{eGX%M^#Eb7I{3Lukuq&=ybXqg}vS}hs};TYj#DvpKsBK@bE%rKP1(snp?cP%F>R&pSIixm+%}cVS`S z?d|Ok9sB+M{{H@7skB%u5Cqxn_8h%Xt_sk1V`F0kLB!+nfq?;|(Rg)rMe1I!S1y-J zB$BhUvv@r2bUG7>#P06ypU?O!WHK29LHhdotX3;kFQhAig3IN~QS#E>-cII~vz<<- zIUJ7D=_CjulgWt1;-R6TyhnI?dNLRcJRXnF=Npa2mzNiMy|uMIEIIZgTbKPZr|VE-`?Kl za5&^%tJOL_J`TgM$z)nxT_r_&SHBH4NM?PPJroSXdwYANesXdG0Ek2)AAcSWhXDY$ zx3}aFMNt4iEEfArCqC&rlG)i=i9}LSQE_y1log}Vs7NGACX)m~#N%AC=y{mua zKj}L%$LHr~jYcy!H-nY_h&y)T zk&zJ`$2T@M001hL>h$#V`ubWXlX1CRgTYW)S*g)z001tRtGv8iDwQ@jH&<6zXP01~ z>3KOmK3-g0^msgFWn~J5Vrptir_;T@zFMtTwOUQBgke~zRFaDo8dtvyL{Pqyx!rEP zUQe)J&hkONgQC8mE52v4p97m6bJ*;d!)C`EHaq69*)fOBjyZY0F)~|Z|L=Ktc&MqV zp(=T@)9dwL<)_HdYPHlM#6CqZhP~b~hs};TY - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.md5 deleted file mode 100644 index 06179feb6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.md5 +++ /dev/null @@ -1 +0,0 @@ -b8916d3b51e3fb200c11a55d0ce781f3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_33.png deleted file mode 100644 index ac6ff436a8b2b37819da9d17825284fcb69786ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1277 zcmVDc)z!APwm+51H=?YpEG8z# zKK)lGavV1?G4bUoeKRH|COD3BjJUiOjgOCiRX*PmgwTtKuqRSLFp&a+i4+h_q<~-| z1)MQ4F)^{Eq{Kc(2qA=AU0vmJ`S9?tqjG(HJuNLwB9V}*&CSggi-khgPElW9j}RIh z9HhQ7g-$FkF2)!ejmF&ET(w%gv$I3ub8~YFg(4^@Xk}%^Xf%$DjF?QOsi~>Y-_Z$p zp4V!%IXO8RjfVc}*a4kR_agEp2?+_rxEEua%_b6wMn*<3#yronESsO7|Kf75}5)Tg#udJ+$jg1wH#iOI6@5rjFtK;J0+}zxPgM;Vi=Se&{IT-*D zLM+SH)z$GlZ@=U0>}*6t#N*?mx3{-mueZldCR0&S5zDfko}PJmc@GZ{zbqdBbUK}5 zgxa2HHk&&;I}t)rQBeS3Fc^-HkJW1Ro8pX&43o*Uy}iA$vB7biN~N-2>g(%kY;3&0 zzt76bdPg=mIM~$Gbai#5R;yJi6{&4{dKzQ=^z<}2IXN&eFgiMF*K0JI($Z3fVG0Tg zy1TpWag|E7wY4=fGjnuw6d4)0xVY#{@s5r<*NOI}7=|HbV2qcRmH^=N^z`+|4-XFk z;OOXxO!ay_09;&LV2s1V!|UtoKO$>wZ6)!$yE_0lJ3D)EmyV8(%*;$OK0iPA^YgP> ztr%mY(dgsjV>X*H#wRBy0I6o^Nk&e|~-j0G{W2dwX|xckPX{ zu&_X$XqIJdHXCXA&p`8>=;`TMUS8hN&|tM%5kg&EU0SWSqM~Adf8T62@9yqaRaK3R zjrsfgD-?=?f`ZG-OOE4;ii(nwlDxgWU##{)nH`J8!t=a`hX=zjYin!m?d>E!H#Y|W zp`oF6r9z?5>-BoQUM7>Jq@-kLXB!L#lgZT6(=$Ci?L^^}58H)>g=Vw4zrP;<5)%`b zmzVeU_M)SsB@&5Jsr2yhNKH)z0G&=J7K`O_d1PdyudnZao!vetBd{#n($b<-D&5`P z%gV~q)6+>@qtPTKB{?b?hKY}lCug0Zp`oy_u!MvJe}DhY&CR&DIA_Xs+#o;rV)@H~ z-*?3Mn-NT;fM6m81QRJBm`DM^L<$HdQs9lBOvlE?zCMp{%^N0WW@dhU9^V>-h5sjh n8evbQfM6m81QRJBm`H)2R1B>)gGQ~C00000NkvXXu0mjf0u^3r diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.map deleted file mode 100644 index efb9e5260..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.md5 deleted file mode 100644 index 9aee943e6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.md5 +++ /dev/null @@ -1 +0,0 @@ -6b967bafafc5ee48cdee425b2d760352 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_34.png deleted file mode 100644 index cbf8e53c5f6e16b529937e1fd74e4dc0ce81dbec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1330 zcmV-21he7$Uq@Ou^gz?>YkpSud?z(sjjZ(a5&GyzwS_t zMl&-r^XZm;Ff%hV8jZ$Mp}Z_oC={RN=f?v8uu{k#3K=p`$dG|T=358KX0sh=ne}8}9>eS`s<mGDbqvD@T__YDA0O}R>}a*x=;-Lo%*@Bf$9G&8+9OY+(JCq` z004V?dse5YRBC8wXm@uvpU=lIjQC)fm6ZhmaBy%42nc9xZGHZVX!CJ4nM^r3IhmQ6 zx3{-eHEcG!v9U2NEe%D{(9qE3<>j}1uB@zNWMrTy8Xg{AUS7Vju|ep&ySqFd&)?r4 zMNxr3U@#a?Pfy>G1GGR*CezT+5C9-9F7CCO;^N|ylas^4Lj*w<7Z-6HH=E6~v$GQu z6H`-Dugy9;J4;DP@%Hv!SXgj&c79nPl}bB1JI~I}_bv2z_uAOzai*9QP_c6P3g@py1Qw|Oe5)%^(3JQjYhaDXqZPtiHqWJiD8jVKWSvsB09@_&011goO zyStkh*4NilsZ>8dKRTU0KR+)Pi(kG4*#op5YA_hGv$LCIr+9U7b;USSoj*gB-M@L_)k;!DfzP>CLORv}Sc)X^j zrqk2Yr>Cdh-rk3Y2b)tmJ3AvIBQr8GE-o%$S?%cPXm4*{TU(2Xi6IoD(YUp>g<+VN zmzRr+OI20X{r$aKt$xSiF!!NuZf>=;wQX%}_xJafy4h?#JUpzctCLEl{r&v_fV;c9 zr>7@6old1vH#awXdwXA7lR}}$WU`2eh}6_ngTe4|lMM|GBO@d0>+9j+;m@MGyE~J~ z92y$Z>-D#{xBdP7X0tguI{F>!L*Ce97-lk=#>dBrA<@tJS%=xd?(V znar-PE*_7EqG)w>bzWZHTNWK0#A0z;T3T{)@@t*pB@&4Q0Fa%X{rLDuY)FkpgblD9z+L@t+G zD&Owa^QS`w3K=p`$dG|Th71%kWT22C1BHx@pOL4hr$67vufay3g@uKm@8j11aPt2{ op+fdh$dG|Th71%kWT24w4|ZxFDpnIidjJ3c07*qoM6N<$f}zBJJpcdz diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.map deleted file mode 100644 index 62ae05dc9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.md5 deleted file mode 100644 index d2ddcd27c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.md5 +++ /dev/null @@ -1 +0,0 @@ -e31d247ca830d0fbc9b398310b889137 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_35.png deleted file mode 100644 index f2784a51ca2a292ce86b832fdc92a6f0072b6ef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1257 zcmV=P)po&?HdGVAKDUbbEWdva%8s6qJ#Xv9Pf4@hkop1_lN&3|m@SdOO79 z@vwh+xii|@+Uo1;^?Lp4>Z(?&6$k{LT^HFSPoYqFJRXE_e}Dhgke8PiolciXBy2WY zAQ0F;7#0;3K?n&1LS$rQTU*=9S45|ev&CX5DJdx|EWE$Jf2CnC7)?!0d3kwMDwR&B zudc3o=6`K%Ek8e>N~Old#c{dZ&CN~E`XCF`VzCSk4nhc1Q&U}ODl03`&d!dGjsO75 z%gY#s*=)A?`T2>7iRtNSSFzx7!3DKT!A3azP>&Pp^uM`SS(&#T#Si{ait6k3j+XL zUthmeh(uyiQj$O*P^;BWryL$0W@cuVm6Z(*4H1b%ry8M9n3k4Cp-^gTYmG*u!C-LX zc6fN$WHOn}=7oiYt*tFKoBc{4lgTt1jYJ}G)5HzP)=;C-SX^A(($ezu^yEruf9(wj z2mk=g&CMkzC;R&PLI{OI;pyqA(GoiOa=g0t=4xvlSrhLloY8{ zy0o-(cX#(vm&s(Ut*z_p>(SBC?>2D?vPYgqqsis+*>S65d;LPCCi{>{w|Dyy#O?Ck95=-AlUNJ>ibxCzRA z=$}7-#A0!Kd;7z~gJa!hvmG5BH8eCR6pH@-eh8t}YJGlw_V@Sq^77i=-tO(~b=8wZ zA}N*1`1ttT++3s4_;Hgg7HfBR*J82k?d^#~qJn|~KR-VJKx1R$@bIu!tBs3``$&Jp z8+(C3V6j-n$H(ob_T|;j&yUGu8Vm-VPRC-g000pY5#8P06%`d!Dpe#Bm6n#evq&I} zjEv;vGGinO7AY_W%H9W@a2K-|p4(r-KKI7(7tK;DI6r4-_$Y zpoqZ(MU0c5k!NRTKi|i%!AYRy<>jC6 TG;6AE00000NkvXXu0mjfUc70Y diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.map deleted file mode 100644 index 8eb29e24b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.md5 deleted file mode 100644 index cb1829bbb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.md5 +++ /dev/null @@ -1 +0,0 @@ -e8d46fafad2734ff1ba6435e75760054 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_36.png deleted file mode 100644 index 686145aacb4a96a4544507a80223dce64148b351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1371 zcmV-h1*H0kP)XS5p&K=~`+IR=?6)@a z&%r-&Kd<-3>he5Xz>lJ)%xVglijki zPibpw6NyBz=Kroxr_(t!G_>QE_Ax_4Lr$kNzC!y`G&nf8Q-1b65W<8CxrQQ!3=}bB zporPif#&AszIpRzw_R+GJs0T3ix+h|-S#!R#a03>EiG+rZH*m62qA<_CiCpsvj&49 zUPhc^Fc^G3zow>UW@hHEgWGJj`uh6qYg$@bh}mhh#GTC4)YRq6mkGlbi-jmgB9Zp? zb}pBTVVG1ZU0PcDtJS0+xI&dmC641hpYQhV+cKH#>({Rdrvib%=;$bq#}kP}!^6Yd zpK&Af_4VO6{^7%ig!=UK^tEf(YHMrVZuju;u*qa1>JJ}2G#ZWLB@bTb{{eHa9mz2)}&!l5mPnrwasvo}M0=Or}sMh!=)sWn~aT3Wajw#EI_i?$}$z zq_=Z07?emP*RNk+U0qGkfj}@eHnzS`wOW1a)~$wyhJyzWo;-Q7 zudk1&_xJa=x3>$0LLQIz`0?Y3i3x|pv4tFv1sV(npFe*NAv}Nnd@4C;Rm({8tK{O89&5a`pVPa%XD zhN)Dl_wV1II&~_Q^7!%N006(=AFEKQ)V#brg+ehhGLp2*+}zxyOP6lkxbfn}3o4bG zRHIZX3knLDOr~5e_j^luC(V7=*B{t}Z`6KRrENtyUj6aKK`*uvjbrKp+r^DS!O< zK@>L&vRj_ZvZ7p`%BSe*XNKsL#*O2ZKSOP`HID zQ0_xBGBQ*u)&2YTfB*g+Uk``F4u_+oqhnxT;Much5W-L>6pcpNY&M-vx7lpHy}hZ% zq|s;wgCQp;=jzp~UaxoiCgpOuR;!(zon2X3dGO#tBoZkuE(QQJHa7P3^w{lokH>T8 z&Yi--!uaSn4&sfyLZJu-gRft|CYr?Znx39sT3WiWuwb=XrBW#XAS)~D(W6IIRaGn& ztF5iAyu5rpixi4ht1T)jx^m@8s+HkSbUGb`P%IWlA`xOk>ht*shfPgQVzKzhkt1fa z*=#oRcsu|=XJ= - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.md5 deleted file mode 100644 index 18f33803c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.md5 +++ /dev/null @@ -1 +0,0 @@ -ef00148bc0f51868126f49db7c64045c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_37.png deleted file mode 100644 index 1321a6dfd7a7a9709cdc0d4e46fb9a44fd9c0a1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmV+c1^)VpP);K~!jg?V4*Sdtn^MpJ&$C#!R_Hl>6R{+!E4+l(3ddNo?iLSd*4F zq7+&b5iM=VW$qzFd7(&nfj6YQ@Cq}FSTSYh{9l~@Yi4tOa_f9vo#*%b&U3!!+w=U+ zbIt}a3QmU(~qobpZ%_lST`1p8g zYU;}+{bHu3rjCz~O(W#zNt2V4U!~{Q10ghv5H%DrgrSHb3`NY3HZ&w8WO#V^yH&i8 zA7^M(RFp!Y_i&CAQ%-rjz7 z@U5+_qN1YD=Tuf!;#Vh=pX_9qOeTEF$;k=cwYIhv8ykz?$jZvft5Pk3V1|mtVhqDB zE-s3TivCDW`^z`({u8VBR(`dAciV6tf-rk;B7llG$u~@CGtpb5S zBog5t4AaumAcQ0m$;Zd1v9Zzk7182y*6DOS9xpXD_4fAGEGHx+q^_lo!3ckI)9UdMoEiJ{HwY9Yc1qG$0rA|&xetv#kU0olt0iB^bovypP8$uWn5n(MS zH#hh6^z`uX5CE{Suz+EhUay~?o*oz&7#$t8c9vSLj*E-)@bH+Mo1@d|&l3g*2c=S} zTCElc1bjaKjbC_2Mn)(UN@ivz06?$TudlB=J3F)4Y&xAD85y~{y84zuo`b;9j*bop zA)QW_NF=kfvjG7C)-t`kyZ``~mzTzfjg3ucXsAdenwy)mc*?=SK}<|cR#uiwCbO}z zv6v$kiz6c=X*8NpDAZ^)DwXOjvU_@Z^7Hd;ZEXPnTCMis;Xy8!4-5>b)oLD(mzI`h ztgY_?Sq;@_G+ZvXp`pQGFj&jPUwfUModE!olapa#VfOa+5JIt7Y)yS%UmspfUJ&5w z>WUvwsZ;>K-QC@*nzy&NcXxM7N=oo1olb`k78VwUhle{jIMmkG+S%EC?74(&$-B6? zC=`mLqody5UTZl@rP9;WGcYjl{QNv8C#Sx?{_O1R@$s>}z5U_g!Qv@WsWd1kC@CrF z>go!WQ~-cXCQD3A^!NA2n^Y>5#bOzI@kbVk^bvDV?n9YOrbHrXYHGT_zc-ER_4>oZ z!&ddOoKw9P%fA6?Cjj!+%z{g8w`fT#KaE_j(B4)5{Yy=U4MT+-o(qRgM&kIagwu@jEt8gl1Os7JRu>0!{NNWt|=4>2qBltH5d%| ze)Hnu0`D3c8e%XQJRZ+Xd3kv`m&^=m;<8pJg00000NkvXXu0mjfI=ymM diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.map deleted file mode 100644 index 2e4674a86..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.md5 deleted file mode 100644 index d0b698b71..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.md5 +++ /dev/null @@ -1 +0,0 @@ -e335bea658051c107eec6a04c15ecf07 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_38.png deleted file mode 100644 index 6fe436b03a2ba1abe386d22c6940501dce873766..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmV-G1i$-%}XEY?Wv_l1bK_8?CD>NdqLy;f|6;T8sm8ZNI zi(%3w3L-N}NJ^q0E0QEksgNMBAhd%Xx)p(kE?H($L{SP^?t2i#*R*{zDdFAUY4@3D zX8+Hhondwqq9_V*5<~cH0qG8I5C*tG7~lqBkP&_3a5!dXXMamdnjn+OxLj`J_OCa{ z?RJ~Z<{y`oMwrcJx7!^Z$@rLLGMRo#Puc+?jEUfD5C*tG7~lqBkk$sV+3bytjo;Of zb_O*xH0X4?@8_h7WDF7r1VckZk!uJcgpfj^)YQ}%42I~ma1)tKE-x?d>+3r?Il&y< z>2wYZ417PwX0r(d0y>>uR8%C9NS>aaFdrS46ud!FsT4)gySqEFSS%8W&d$zanjRk? z_xJY;3JSPf?#|B6_n-JLC=`m};bFJiZM9nMb~}O~$&Hh;DMq1C1_uWrgr}#cF-;^A ziOFQD)oPJQgdj-xfTgXi4MIpD5X#ER6beP;)Ftlp@%#N99UZN$tuHSxF*$5Ddu(is z$K%mxG$xa2wOYgRgM$M;pHHLFSS*%UEIvLyPOh$$8RYl-7Zw&EgmrawiE?^-d#|sr zT`m^@U~g{^MbTg|xV^o-zP`S>xtXY!*XwO=ZZ0e=v{)=uD)nQ6UawcFR9>%FBog)a z_kTR$ve|5GHaoexQee>B+#H0EN~Ox>^4;Ct%F4<_nI$D90D$}Z`$&XHByu<$1VJno zOWZE!=jV-$josbdi;IgyA~9}`R4T2nucuHb5{bm;^Lad;=vJ*(YqQzZYIQQTrEm@M z`F!o|?GqCd@9*!4GQ*!axw*Lj0F%j7TU(ozl?5S`N~KpL% zD-;UH$H#AOZbG4uMx%LqdyCserBYQ_SM&M&hlhu+N}8UYRw|W8M@JkE=c|1qq;emW zlanKt%crKMUSD6MXokSuzolcELlW5G0j0}Up zP*qjc($eDd`TkwZ=;-Lu(vsb7XR%nxmz462B7z`(zkh9QEqohZp0cyE1pQkfYQ>^nVA`(P)MWEWHMP-SJ!6}354b4Wgd^$)YOz{CdTmm{H# - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.md5 deleted file mode 100644 index 965dce765..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.md5 +++ /dev/null @@ -1 +0,0 @@ -4d7d1c5757d6d8c2ba1dee85111694e8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_39.png deleted file mode 100644 index e8860a43afbfc726982e32c419215d3b1ef734fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmV+=1={+FP)E0@>;5No3{Y~001hL8Wk0#QmHIuSQmvt2@Vb}Dk|FD z-FgVSt5D4z>?y!1QRTbunNVHzzXf&GSZ+`)jL+vE92{76-QM0VEiL)@_#`GK&dkhw{)q2EB9YYA)@rrd z<>h6KMk5pov3hTBFN&h`^Yd2vt*x!h%uF7ScXoC*Gcz+iJ^iucLc8UuRBB~qB>-T5 zf8VN$L?SU544F*E=ktX^A@;$L!{Gn`2n0e

    @6-F@Ht0c{>{nhV1O@tgNhuhX*SS zlgVsoXh=^_r_<>S24i`78LO|Xtgu)tI-MRK9$r>fwz09{*uPjTE-o%EFE4j@cMk~( z>Fw?PSPswvH5d$ieSH9cxVSibn!>`uv$M0Kqay@C78Vvz6g3)+)6>%5fKqI z8ZACPUaeNYal&?h5NKCd7XW}pqt(^b&Cbq-hKAZx1_T5k2y%UWZLT;uIYmcD3x&eD zxjCCd4i68Ll9KZB^7{Mxot&I(YD6MYe0)5WN)-qMdcFSq{M@p)r>94)R?B2E2d8j* zd;9$SESJkiMn-fxU3PXhhr>BNJ#{d|9?<4cynMhPjEN zD2k#4!bie^xej%6bE~VXYiVhDdU~>~8;!=JqoexzdZkj?-Q5iUczk?(d3kYlbtREV zJ3Bj_ot^gfNhA_gDpf>8L|R&!Uax<@8L?PAFfgFeXu`w8-=h}@1ai52Z*TAZ{=T)f z)nqbdWMsVmaAqJc?1e(1!C)939>$v3^y=c`!e+D2&(F8Fw{voG5CjPf3~X<2FDNLW z)9E!eHMzODjw})ga=AP`Jv}8Q<(=~y7Rt%VNmy7Iw(2C4$yk>{p#T7Ixm=UUgmqnA zU182EDk`{KuD7@M;^N}s;-Zg_&qpFaEf^mkx2oVc20@VV@o~$_k9+m}?cjkz1`iZ6 zc%YEM1BDD8C}i+JA!Flbb{@HrGRc%YEM1BDD8 bC}jQvT~HCrEM - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.md5 deleted file mode 100644 index f126541ae..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.md5 +++ /dev/null @@ -1 +0,0 @@ -ce6e8a5067595ae5d9bb4708d6e7fd5a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_4.png deleted file mode 100644 index 2071e5c9da39ec5b0fca4e90ee2b82425ba905f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1339 zcmV-B1;qM^P)dG^O(9r=Ml$&k1f|6d8d`|9(ZF(*T40g| znSs+v0vB#X5F}{T!qOPbbf!g6lABOBIz>kGHH%67xN0F0O`jX}ZPoDCah$6&Hu%5i zx0~~vbMJHB=iIqxn0qx55foO$yCu;M6p2HHZ(&sU7Dk0{VUm|OjEszM{q z%%%z7>2z}Y_U%O5NGS2H!KMj+IchP)PTazO{`@&*Wo4wLrIC`7LS9}Tt*x#6{{1^% zr&xl|=i}0)OQ!pml$4-p8k(kIv)MR){5V5HLosOh<;rI9VQ&3Pq zZf-8a!^3?3{F(0VZi2xej~+dW$0_21%jH5un3*d04|(AwI{_wU~s85sfK@ZrNWHa1dNScuJL zqo=25RZo?bm5h##a^b=SG)=?lbefvSw{PEYxm@hqw~y4+R4!k>%+H@c*Hwd9i8*|~ z-_OLv1n1A6U$tL(c{#ygkXNr>@#4h`48x$Rs>-y!8W|ZG+`D&=y1F|2em`!vo4&q2 z?%%&pQc{xXxpZ`N(9+Vv*RNlxtgKwsQ%_G1x~|jN*@=kY^Z888qpGTkmoHz^*Vo7R z_&B<*GcYg^a}CyoETgx#S5|0_$l&0h05UZ-6|v9Q*q8t^K0Y35d-LXv05Ur}8&ww( zId<%rw70j1^yQyLM4FnKBsVu#Y&M%befo5XR$N>xE|*J0M1sMf)YsRG&1RENpFW9* zNPd34G&eV!_ADZz>$-GycA6eDIXNkS1OkCI*C^7Qqp?b!o|v!vUAuMxFf%g~v5#RG zBqt~1a5zG3IXO8YEt+nY+S*zsCnq^_0#YL*Ct0^rlB@hVE(a{ms=kJE^$B!TQe7>*+qG_6G&j4GtEG=KOF%E}=g@pyi z#>T?D#iIsmCFbxoP2<+BTim&GhwIm`69@$O_3Ib!-o2x-u@R5QLsnK61qB6My?T|8 zA3tIk2KDvzoIH7w^z`(ox*3|An=uRnx7$s3cQ@CrUE}TBx9gsl8Bgiy>AZgZn)&&8 zQ)4nSGbt@CrKY9^zu!+V7^J&;o zL9q$h&<&qr^P{q%pYTE$5)Y;tSz diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.map deleted file mode 100644 index 89e9d4dd4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.md5 deleted file mode 100644 index ece2dd31c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.md5 +++ /dev/null @@ -1 +0,0 @@ -bac1b057abc6acdf006c520a2648695e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_40.png deleted file mode 100644 index 29dd07a689fffd7d67f1ecc55429f74a69bde3fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1237 zcmV;`1Sw}Kmo5!^V8;KpGj$g^>DbR?6>zDvpvMk4X z|Jrdzqj7zG{mUi&0@l~pjYgwqBG?H42;W5T8ix_wIE>)NVdO^}$6~RT zmX^L-g?E0Oak;sm^1Og!;Az@%( z!2Nd1>oK(3?Uj|4<>lp1Pfu@hSS(g=Z!d?#q0wkeCUa+J2aQW4lIG^-_V)IOh=`=5 zq^YSX_iP4(K`xh%jg9%U-hdfrx7(+ury+#d+1b8w8X6i*CX>Nn003-mZXyWcbUM{) z^}@o!^768;Q5K7Z&1T2O#%i@%3Wf4MVR3O$DwSF+7CxWf*w~0pdvI_N85x?<=qJ{|yYe}C_e z5Q)T$j0}N5pw()<4$=l```OG`^uRu+{?l}IEZ zAtAfFyL!D|p-{->a?Fc$6R@Ki6%{ozGjnxyH9I@&D@UbL#l^*?q@>*5-qzRG_x1JN z+}ymrzK)HJy}Z159U_%V)6&vPN=hCc9zHLIL?SVnOm`DO5ClO81j6a*smWxb)9Dbx zn3xy@pFQJFr_*3C^z`&BE-p?^PC^JB4#(^3 zYgkxVaB#3rr~9Bz2L%PGRI1d})S{vytJV5>F`b>AN~QATL zwcJ z;rjY|8jU6riE3(UK9WcvD3wYMhf`Qs=<7s#RnpPX!R2zJqocRBwzjsm&@C1)5D!*X zR^CK#PyhfcD=VInANR=hTfmLO2yPrkaN{t78;23xIE>)NVZ_Vl!PV8(uh;SG@M2tD zUESB~_;o-8|9>1N@EV5^+&GNj#$g0E4kLd6VA0}La@q##00000NkvXXu0mjfQ)5>8 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.map deleted file mode 100644 index 72e272f5c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.md5 deleted file mode 100644 index 3857a757f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.md5 +++ /dev/null @@ -1 +0,0 @@ -beb2e4a39c2932d475766be916f606b6 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_41.png deleted file mode 100644 index 28f2cbc5c1c23d2d3de726c7c1fb90c1d7adf752..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1264 zcmV+UyDYiH5-AaqHYNX%LP}=Cn&h_0ZQnmmt^M}he1CXy>%9It=Q;1^dER@U z^L%#B*`V2M1_bDE`f3Be4I)s)5P>3w2oy2S);lVds~GdVe_(P*q&oc|V0OiX;1pC1o|(58i`p@<;@MGO%rV!m~tQBhGNBO_n! z;%$7pKv^tSZ*T9%HDASh0!>RxtE#H9Y(oekgk&-~GBQ%3P*}_GL$0o_!NI{LB_*4i zoBteKtyY(omVR7gncc$T;vxWGe}6wOFON>Adw6)Hr>C#2t=Z^lG#ZD)SzTTIr&YTk zxI#rDk=blE7z|})Wdea6BdW+5dd1pttdkwK+W zx3;#9kB`M-u}mhj(QCEZ*x1;doE*Jg|BgwKEqOATTv=HOA>7{HwmIbD;u01X*3!}< z5D0`qA^yTJD=P~^=;Y)S6cp6Z&|rCsXm>dqjmF&E+|10(ySqCZO;l7=U0ofQ%f&D( zEG%qcVc`{%=jZ2#hlkbG)qZ|{G#V{6HFa)o&PIb_SW{Ee&CQKUrFusW$O1JQjh&sH z5W={)I7b>DkEhjY_xAPx0JF2RX0!S6@o{QuYG`O^bad2Fud}nWq@*NYU*DOT8488+ zw_td9SSFL5ot+5;0zRMr${Sufoz7%3rBbO{t-im%f8$5|Umysyt*s40NTE<95{Xi& zWHOnKl>Ywy0Dy~&3rh=$M2e1%77B$kGc$I(?C$PzIGlolg08ME5{YD2BNB zaz#ajUa!~bbk@c!7z_po;qvk_gTdhQ`51R$Hsr2^teq#~< zAYAfZUS7Suy@!W~eSLk7Gzx{n&(AM3H1z!ZytufyzP|qS^z`NBMJ|^=Jw4g&B9qA? zA|g^#Q!g(sQCY>oFs!n&GB7Z3eSIBo!B4>L?X6m^=5o338y4k#sJpwnL?UTyY2xZUDlab&01y}$*xcM)TwIJ{m{=^%&(D9&qLWikPY;*NO-xL5R2l4IQ$q&_2N?`T zd3kwLQ&UJtNI*b9PfyRlzyN+bg$(N|Gd4D6(?ak%0D!TvG3%CZ_vrc4Ap%7V5h!Aa zKoLU(iWnkL#1MfZ#?H^k@8j2CC(xpzqR;p7Yk+3r|Di}BYA9leKoLU(iWnkL a#QXulG!^CDXaN@h0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.md5 deleted file mode 100644 index 02c096729..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.md5 +++ /dev/null @@ -1 +0,0 @@ -82db646c1e50878e4bc1d2d8e42f9084 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_42.png deleted file mode 100644 index d952333e9902c1b6e96b9120908f07a47f780507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1482 zcmV;*1vUDKP)P#zwl*(a`}Rv{)>xuf@WSHW&;PMR~p6 z+qZ9Pwc5G4ImVRF=X?3`Wol}wTrM9O8Ts=SkBML~Xf~T~-MVEo8d*=yTI-05i___J z5JH>H#+bq|EGH+YySrPf)#~+n^kH^$bJJijNTt%m#6*=!_2tW#{W(`xSFc^WCKij& zoH=vz=FM;4z9GG!prEa-O`%W-g~FVioY${kBb_A4%a<<;g~GhNyeChdKnT5FFPgI3 z?fc^ytz&F#?DXl=y}i9|x0}9QHa0d42E(~?=aQ0=nwpxnwziJo4{JvI{r;yt2=e-l+)?7TCI%JFKj#mqtV#X(t=@_PN(bZ>kH`` zjb>(MW^{Da?RFOy7QTD;?kEOPG;kbeC}F9ns6agdU58R(7-qFv!-gRi78U>i6B85Y z=P5~&NDl-8LZR^E$Bz_66&Dxx_xDp2<#aj$0B*M%#h?epnObehfPgJK2;2hW~8d;a`+sZ<&j73KAM>G!<4 zx|$xGo}Rw9x3{#kgod9#e@5a#$t4oW=H_OoDZ5;*!xtY622Cc@{QP{Vm^W|Upze{G znHdNK(Bt(du=yUHn3#C)-o4Jw&Yhhdy1u)+Yq#6)-@k9MSROxq3?a-B4E zYc7}T!Gi~ful&`kR{(&#yu6T7T3Twe*=#mjMn;B8rD|ws`1I+M&*$s!@3&g5htC{> zXZkudioiWmQ#GUAb}v0DxiGVahfdjY_4Gu3#9Z zP$^ls@e2@Nj z!Esz55R{jfyIii;*4C?6uby;8KZ&Ss9c5)@LqkJSsZ^y>DHMvHo}QDg=qC}iqmz@9 zpFe+o(p7{fqIUG(3~w|?@J4e4Z!|}QISgOCc)@)g5l+0&buOs4t6#xIxoWS>J kj^K^v2;OLp;Em>pAKIN$tCM2aIsgCw07*qoM6N<$g0ke=)Bpeg diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.map deleted file mode 100644 index 247792f57..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.md5 deleted file mode 100644 index d865abb69..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.md5 +++ /dev/null @@ -1 +0,0 @@ -8d953ca1016549e8f50e9e4c2ce6af76 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_43.png deleted file mode 100644 index 343332d6236eb429aab205a963182a2f3f524ec9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1114 zcmV-g1f~0lP)00006VoOIv0RI60 z0RN!9r;`8x1P@6>K~!jg?U_wTDp3^2?|sP-CiH<8m4;a>Aqxz$MM6=SP&-Q~Ea-C~ zWl4*+K`oP76qrg8wa|(d859LBHL!>*B1){LEGz<}3?!Ym7#QaH%=cbh>KXG}-E-#e zJ%_*d4tHiCK@fleDL=ltfo}-oDS8-B(ZhI(9u_@tI-LfC;j3CnUMedq^?E%O{<2PS z9A92u{`8iT8<)%FbUNu7*6*UFrKQj6=R45U)D)9p?x*NsJVg)VDSDF9Q<+R=Hk-e? zi#JJ1PwD)J{=Uc4`uh5TfdOg^A%qaJ*=&hKvbeZNm%(4z-rh#jH4T@`)z#JYjvtPW zjzS3M=jV~PgkYWObUK0{?(grrySv-k+71s7V=htD*4BQ!91^0@sKsLG?CdlejmRfQ zw)fd=wpOc!5PCeG#LCCVN1aYrSXh{unc3Uh`~3V200;yEEiEnC+1WWcIqmK34-XFs z#B}I;zpSiGuh&;qRdF~Ru~@vbvok(E&gb*f)6;u;dZN)N^{dUz&8)1f>FH^o&qrSb ze=PSmAoDa73QbK-K?uvs%M&X#8qMC`-un8w&*zg$r4EM!0MOjr91I5c_xIgyH;&^P zjV6IO0jsO46B84+x3@Bxtgf!^Tb(o%!LK#m;_2ZZqH>4^+mTU&>Rhsp8v^|e4C2#3SuEh{fC zFBA$91o2k6#Hds%l}bg=AiJLi0)fWH#*vYcNF)+-iGs`Jo}Ztmq@)xT713wFah%0s z357y3EG{l4lX1m~;qiFnAT>3W&1R>irBUI_%L_TSSS&b>V;BY@8-6Ta{Hqyhw^-yk&!VpG&D9g77mBs(i9XFG&D4HbaWga9|wa$lgVVa+eIRgTrSsY zwKq36IF9%C_bZjk+}zx_;tw{tv9SRF5R1iBMlP3oJRXn7gQ^_jGk;%SUnmrsot-7a z$;nCj`E+h>4gj#QuuxJ`qEIMABGK;dZgq7v0KjUsayT4`L?V?+^YinmV`E(LM=%!DjFrK34CtZrSf)0szssI2007*qoM6N<$f?NU@u>b%7 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.map deleted file mode 100644 index 79bd99c23..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.md5 deleted file mode 100644 index c95f62f61..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.md5 +++ /dev/null @@ -1 +0,0 @@ -8f9d660abbc70be4c1cf621adf15df03 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_44.png deleted file mode 100644 index e55a8da5344f547af9fd43693510e908a4c02aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmV-615*e2pBqN1R;7Ni~;MX;2#rd8A&v}nX?@_vW!b7`8S z)|#{~%mV|Nd1v1J?f$a6GwiMs5kX@ILXL%2pqV||EE}QCvJu)W8}ZNdhQ7W&E?&I2 z5Lz@-2!%o!Z5d})EEePT?c4JrNR!Ff*jUcvpK)gWB%8CE!V?SzX>4rF8q@bI8==jz z5!x&p@z@&4Idh{qClG3QIuIAdcYkAA(@pw>5(cRshx16(~U}u(TnurMTc$_0gj?mK5!t>|P zv-X)<_UzeHC`oxCl}h3F`#F60FkY{BUbkKF%V2SFF>P&aD5Z!*B6H63`SWK?)1FMdg<#G`S1P~GW`}?h&SFc{>{Q2{I{P>ZkrY6GSFe1YD@87v|=MLAe zU+31XTWLDHUN6UwAIC5Z+S=Ng?>4#>PggK0ZD!>(;H4$;n9(5sAm+vS!U1NhA^?BEQrz z8)i8E!Ghnj-oJlOeSJM=&z>cjOlIvfwUm{WW#o!RqX4X3yVjbB6crUQF)_i&$Ot1N zBNP=Cv0=l8-_q!GI@9W*P>5~Ywy|W%5|mPyrpegYm=*W?{lsE148uSvMOj%HZ{ED2 zx3?Ey&N^mG!7qa=SFXh8^D#U;jNk8{Q;zcTavTl^@pwGL-1_=@Dk>^SCX);g4`&_k zaAe<2rIhvi-Me=*H#c+U%o*OkeM>5pqNAgOA3uHo|4l4>J|8b$yhz*r!-o&8OX06{ z{3-LY&MGY}<>bkeoI7`p$;rvz9`AHI*|%>Wt*x!Rdi9D#BEi$APibgq;M=!vIGs-1 zZa0Sx9pdH7mwfv4iLS0L!r?Fgt5>gPaB$E%@Y(qK^((1Vie<}|VHgJe{rz-wbXf8G z_wNI+apT6caXWVGAQFiXi9~*><4>8lMR9w3JBdVsKpgqDa8HT~`-Mg)6{7gFjnBTa;Y36|i znP6!0k2cFjXtQjDHp@n6vuuPm%SLFkY(&mi(SpI?eCp8rPhVeO&R9;fa=p8zSvZu4 s{yxhl= - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.md5 deleted file mode 100644 index e94efc85c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.md5 +++ /dev/null @@ -1 +0,0 @@ -8463fec8e273d2b003400f5fc52905d2 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_45.png deleted file mode 100644 index 24448b28b7f2e7f9b91b36ad0f98af6b910b1428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1280 zcmV+b1^@bqP)pY`VzC&CqHyuzMLZr) zQh6{K#NlvIT3X7B7cYoLqda=_h#xd9xp(g#k|bfb+qDkIz`y`Dn+>1OhY*67FJJQM({p7yLJte$wXsgBYk~+iL#F$KQcW%O?`d+c3;jWG&8HWw--s0uvjd(-EKxkMkp;U zO<5eE2YazdtLT*|H=1EUVRu+wG>Kql4Ae)h+9nmzU%7`B++7;_KJ1w6?Zp z74P7|gS>n9jtQOR*1!7TgHn&p&mPSY*P$}!$Bw% zA`}WCNfHkpJU~$tu3x{-=g*%}Rh4i!OnZAffj}TD{pr}TP4U&MS5Z|JpU<~t-OkQV zqR}YD#l=)tS5sSCn^mlqmKMgw#xR@B$g<3-Q>U<6tyEQ2v48)5dU|>Y1Onve=WiL$ zriO}&id@Utank-${5Mij zQNi-^a;|0M3|-Bv|2u|RI>InZM;K=5h_nwF+qLU9$c~ALiL_;D%}V#*HG|wC31NJn qr4x+rv-E^vmX0vY(h-JPI^q|CrMqc~qAI)q0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.md5 deleted file mode 100644 index e976aad9e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.md5 +++ /dev/null @@ -1 +0,0 @@ -494470899dc7bc1f09771a91824eb25c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_46.png deleted file mode 100644 index aee74feca7b275cdd69716670a9dc4d8d75dac59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1904 zcmV-$2aouPP)pk`$uhP|ELY^AGL9JtaNvGmz9fh#{!C-j){Q0_fiRM@7>FMe2?sin%{~6TK(6CUI-o0nfo+Zl& zA%u{ZmsdGI?*TR*+Lyb22o5kdn40{}n}#HmxK3JMC!%E}@lB3LX| zSXfv=K|xhj6^@^to<4Nw5SPo{wr$&yBS*e{`?k71F)<;PO4)37R8&-BVDRAcalBM2MF=q%jNstl zl9Ceq9xW#)r?0Q?=+UDHp~S>Q9QozT7m-NBX0yY?!{5AlgGFa)^P%9#^ZYs~uY$9v%jO(a}--DW0<9 zYyfY0ZX-&Ltp27`ggWFmyNZrwUQK8`1ePN#Eob920qwc)b$)7RIx zva)h`cvz)U0YGGAq(C5W_Th#@1ONu(-^avRTKp+O2p8;jdu3(i=g*(XnAX--yo3q_0-Mc-*PB1VmCt`Z zK0fEqpD!&fU0hs52vt;6s8p&87cOWtnuUdhsi~>AZ{Om`kdTnn)YQVl!ik9qgTZj- z%o&M9;^*h*Ob-nWO-@ceefspw%*@Eh$fZk{$VO9AQp{#^b#*nKaAL9e)~#E(3;=vS zfB*jd`T6-8jmB!V_V)H>W@audEX>c(+wFD^hr?ttdwP1x%gf1xetv%a{r#k!E8;Be zvanaLUI9Qz+ zW^QgSo6RmRF3!rzBI7S!yx7vx!eX(=^XH1Jn08r=QmK?kB#sJ`$rOo1_(7tkrY1T% zIz2r-BqXG-uW!$uJ-;{B004jphyS0|*Vp51d<}_c)&czf$ngaq{refUq5Y#aw13ow z_K(`o{!ts+KWan!M{QR4|6qN6{rdNV=2tKpje&uIj>-!DWoKuvSAS@J8<|YzSVi=& qEtH1d|ELY^AGM+Vqc*gE)aEaYUPA9-4r{Cc0000I2T diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.map deleted file mode 100644 index eabd6a84c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.md5 deleted file mode 100644 index 62bb81d6a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.md5 +++ /dev/null @@ -1 +0,0 @@ -ef1756185927c9dc031ac38fa0bd7314 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_47.png deleted file mode 100644 index d0bd0654fd6574445a63458b47793bbf174212f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmV;v1VQ_WP)2g@uzkDgfX%s-*@0i@ z0|(CgK0Dv@>^U#*c@MlwL<9>n7_Ttf!M}_ZzKK}jn}`*@iTw9_$IQ$O4<9}>!^{7g z@$vD3zJigTOeUF_nD{G({soqnmWt+CF!Fz~*^{!^KEYs+%a<>2s#$ZsiCE#Ah!wtx zSmB$96~2j-CH$6_7P`8+Hnf#eD5co9ZyzU4oZ$KM=LOeAqfsthx=9) z+`M^{`T6;B*eXeXe?LkohKGkY)!)B=&&7)uaX1{t|9J4=0Y85HD9inKZRB@$b|NCA z(`jzpxPjN}<>SYXhW_Tw8_t|LgUjV&dU~2~-@ftc)hiks8yOfF*ezQI`FtKt)3|>9 zI)1;uK%bhLqPe-5BS((#_U&8J=`>?wW2~;OGC4U}9ux8#fj~eu>E4p_=g&)LXJ^rN zE|-(a%1Rj<8xs+cd_FHOmrL5)+e_ANXlRh0o*p@S_N-J@RmqDNFJygvU2fmLEl#IX z>~_1fwzf(lkua_)rHhEXe*Icbo;)d;OhyhII3TfD%+R*uuM}J48Qk?bU)OaWJ$i&v zic_af0r2_rXA+47Ua$9$YCL=PjQjWR^ZomGu3Wi-*Xw0&ZjNv`%;MrA_4W0%wY8DY z=K)IU0DixpJ9qA2v)QlRO+J~g!M`r9$vcv3~#Y~%yRVYAuf<;$0b9u9{Ekj2GC zqiDyZdj zI*s!$U%miv=+GhKrCwQC$=cc)iA18L4xnio$z&3n&4yA6hr_}0@-l%yps2syVArRe znwlC02M1YLSU}S>0FE6yhRfw*baeEOYAB_Q^TUS^Q&CYtI-N#DHXI(0r=*_G=NTLv zWOjCTgBA*fjHze4{&vb=S?BNHzn{Bz?=mnjKsK92DaGT*kI^)Zd-v`UkH^VmGOVnu z5Q#*#tmSk%xp3hEKA(?xJdUpGM59sK+S{)EQV5w zCr_TBX&T+#-OSC+q3b%cv$OQ}_7V&R%aY4q`^f6(=s?$XhK7a!aJ$`1Pfs&HKhNpY zr>U;4rm3lkcs$O#cki~WH9R~_eSJM{x0~A9S~@y9@cDe~*|Vpl?)Up~yWIsfZ8jU{ z&Yd%soh>abL?RJBefmUWVNEO z_$Fe7Zz5LsCSrweB1N~3l - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.md5 deleted file mode 100644 index 43f0e4cbd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.md5 +++ /dev/null @@ -1 +0,0 @@ -b7a5f99a38a961494782496866818bd7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_48.png deleted file mode 100644 index fa378ff6502425b66ba9681fcb577fd81f2098bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmV+v1?&2WP)2TVc{NsEff86)Y-nP`&>qm6A+YS&~z5}M-_#Vjh~N|yI&)qS02#@9(F z?@Q+g2j-mTdFDL#{O6o=&v3625kcbwVy?x`K=UtJ3?8m?ixFLoLW!h(oVQ&U50Yin9vDTPuBx7*F;&6~M-^X9BEKk<6K zoH})C&V3IJ4RPquq2JDZCc$73r4&6qJz4Efo;+dCo;`Rx9{ak^o;}Otv~zn|*rYSyh=$K%J3Nu^TU zx^;_BpFVN_{{02Xq2SAu+wG>gxf!Jt@pwG%_`13}lv21{F4nGHOE4H@=D+^GE>mB= zd?64BP+ne6Nl6KHb#=UX^TxJs-MW?b_I7sc*unDU%eiys4ge1xJYdC&6%R$aOB7l4jeeZ`Sa&lzkWS#x0_9yHqp`1!M=U_erIShD7YA=X>#e(C6rQZ-@ZNX z_`beAM1*hOzH#r~J+5EB&h6W`bNc)Jenv({7#J8}e0-eB%1Rm<8n7(O_UZ2KrlX^S zj~_p>fB${}LZJ|CZEYBaL3496SFc{R{a?O($=KK!e!oBO{PRM7p|`hJvNX@iu3ft% z5D28z0lOH6A$@&)88I_`W|osDPv-3F;>C;7*w|>-tE#G`tE)>yL=uUF0Fq25ZTs}} zv=kK;$+KtAL_}oEmMszt2GhPXnM}%>HEU#QYDz>zQmK@zTD3|{(-aYrfq?-5WPE%) zuW`x7EaMw3_@43M!w2f?>p6Y;G}F`5S$$@fs;a6qpI9u$wr$&3wrm+nDFT526B83z z`y3q|1z`2+)%Fd(@jgk-TExzkiR<=i|hQ6TEx(4$HFW?Cj+G_wQN# z%gf7gxm=`DsSJ_p>+5YlrIh{IvMj>kFvG*cY5or%KD3vr4I4I4QBlE-8#jJq1m?~k zIcJoVlyL0WG0vPh!_?H&oZ}`ZC$TJx;^JZq!(eD=h|bQ=oc?8HW$fO)o2I5FUcGvS zX_`EJ`jm!-2EKm%nl+}szaM~&8#ku4S65dPkH?9}<0z%La^(tO^HEe(#L=Ti*}He|tT8=3 zJycd!Qd?Wg%9Sf=X=$OUsfndamuB@3g+kQU)@HODhQZFAJMG)tnwlCOJ$l587ccO7 zy?8txd_Et=#l>l}ZeHZE!DtqMMcKeL`J=^f5Lyfep~Y|zS_}uF#c&W>3 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.md5 deleted file mode 100644 index 1e63f137d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.md5 +++ /dev/null @@ -1 +0,0 @@ -1a4371fa075bf61e18fb4a59f6c1ee8b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_49.png deleted file mode 100644 index 797a53002e9742e1e1c7811d595d508fa83e7863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1924 zcmV-~2YdL5P)$-l|_gwq^&Ue>!UN(dv2tY$Aync5AH2)adGwMNmMm=cHsK;N`&0{Z;wUEX>}$ zdtD;*^^AJZo>33lGwMNmMm_#G&*J0btE#GgcNTv%o_HpeN>83VNwyILK@h~p$7l2A z&G+uzb1Q?y$H!m1cya#8J32ZJA3p3sRz*cc2!hnq)VRbuJ3G_T(gFhmVTM<(T$!4h z+Oua*YHBK}!Ern>F%f?5Tosjv?N~Ka3i^bt^f+bmJIXO85L0GNUBS(&8Wo5m4 z_wN6n^Phs_xJIKnbm)*;t#*z#HZ}?bg7EP0*RNk&t=8Jw+KGvYM~@y=R#tX*cUM$Y zKv_vi$@utqd3ibPx~)hekqiwDefsnXYFb)aqNAgAIvwo3di4s&@q~l~06=kZaeaM# zb93|H;Go@Z-@ku9)D#sJ<>lp>Os410pSQKODHIA1t0kPMudjEBxMkO_U9c*bw!`6I zFc`J9wX=sHd_Moeg$uBqoSX~*KoEq>{5X94`Ph(?a?RI-`aInE(fHEA%xm@nCW5?W9q0{M@ zOs3Ij?C$PnGMSy7oeNeJ92~6CXb6IsnVIqT_t$E*adB~QC_g_xAt3>_IUJ5krGjmv z(Fg!||Ngzpr(e5vZSC5%^PcAalAfNPo}TU;S+eUHhG92u+&~Z{E-r2{`p1tS69n<| z=g)@^AKtlhr>?GUwk9hpYhYkNuh)-^j6_C8%49Me$KlZJ+qacUrOjr8-(s~|ed^RH z6h)68KYr`hEvV`1>l+>(&dSPin}A3plFQ`>4jedm@L)kf!M1JN7OY4l62XP_=FOX+ zprEw0wEq77Z{NNF0CYN?SS$treEs@$Y;262jmP8p`1thn^tepk+Sk!)@9w6;)SP z2L%NY1ff(a<#IVe5K^i1!Gi}jn~lL>ynOkRAczkiJ^%oWMk9GtNJt2|b3jxo)ykDC z2L}h|Imsmd$~uGoefjbwB_-w3rArQn!)1ts&*zgvTCFxVHrChI7eSDmoSf0oQI}~y ze*6dk;BYwbj)1{nOioS?4-do9u&^*vsnKXmCKHOH2!aF#29A%9!!IA3&4#Yel{t!{ zJRWb;rcGX6e>)FzRU{UR&1SRFXl!X|5s5?qfSo&c>U282UcX|+itXFC0|5N|`~UzG z6BFcYHk%CwA=j^8FDxu>mgYPCAMo|2LRM-c>p4IIa-s;YW>dr3`GQxn`Cc|0DM z%e{N|?ow408X6iA5%J{7llJ!Z#Kc7Kzui)&(+P#bWy_WU00II6I2=w_R~I~_udffo zu$Y(_*exzDRw|V*UcA`4b*pDtfu(&u^Y`~Zefsp}%a^C8r{`BrO-UliBTd7g=LtBLE;ODvFE<1OkJ>U@#aE1gWT~ z&}cOI`S}9_0~m(&_VyMO6f`t6cwCWKEG{iA4G#|w2nYZG#Ky*2EEcU+3omAnqeqXH zl$7-J^q9@&yu3W2P`Gj9MgTxTLBY+NH{06UqNAf1nSfiC_?cRvP+%BVU0prDjLYR- zy?Qk>GtT5k&%%}NlB|#tx_ly+1c64moInGsMYGEq$KAEilQQs z2;THdrP9{cR-@4vA0HnW7?_!v$zrj{#p*#t5{blYHp7h(0N~~2B@hVAX0t>hArCow z_UyiW`@~}Lx^?SN6oni0j~_pjO6ADNNJK;g-0i)+y%(Q`GYH}IzpI9Z26!*v*<3XL z2Jp8S=O4)axOZ1H3qpHFJ!sFU2kja4pgp4=v}e?V_KbSC`LEpKUlY*$0!BwiSFc{} z9C71WMn=Z3%7hT{ - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.md5 deleted file mode 100644 index 7ad7b69a5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.md5 +++ /dev/null @@ -1 +0,0 @@ -66a9f12a48f8cf7cd50116ffdc0a2bf3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_5.png deleted file mode 100644 index 7678118237dc3c2b7c6fd25a747dc5cb809d4143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1198 zcmV;f1X25mP)1T)uPm(7KOF2s2t6TJ`glF=DfuPpD)Wd`g%3c{jKJl zduGo6-oN7=289$w0Sq%p`)&c4-(WKs1U7>~U^5s*Mr>fS*(N6^ze~ywq_?-Xwzf7J z{&8oJB)PV>_T`d(C~IqLBuU0*GUAI?S69DE&yNN|_$Gt*3Y9H_2>`I!Z10ZB<#Lru<@I{qZnr|AP^nZXUsY9=mzTG zM+E{wbloY63Wvi-M@J%&XlZE)WfGV{r=3_Vo}Zupt9Z3qU0+}CbUL4(pJ!%ftX6A+ z;x9F0XJ-ch;C8#?hb}HI005Vlmnb|rIROCN+}xnm866#^Q#LU%f$~pJPXGXq$MdGk z)YOzlqd~_}Gth^Z!{OZC-qLRuYsN=q*Voqo0GG=}bEf}dM$&r*pU(#Xc)i~EA(A9B zGBOB)K%qz^LP-<~g+e-I0)YS>uvjbr0D3N1U0toNu4c2@5JJ6P@9}t|O{b=&AcO@4 z1rCQ}eSJMQH#ezve-(dqb(Nl;UQ$v*f2Jvuv>D~)POs4puqN1X3IP7-2QFwlS zj*=*hzKTg)77zM%9v&X{`FxQ`#9%Ol!{O*Cx-$ZSfZc9yXlRJ$>9k8r`#t@S$_RpZ zeSJl@0?nDGOwwjR2&bo~=jP`6`}9JE+0#l^)knXIR$$LI5rB&pNs znwpyO^YhFn%0 zJ3I6H{YIm4V`C%PDbOU9N8856#@*fB)6-L_RLbM=v|25f%WZ9K1pt`MW;UB$Sy?F- ziwg@27Z(@by#mcL1VIqv)YJiWU*LMsWd^E$z-ai zs8A}E#l^*khldJC3XX$vw>qi3-Iq7IOhL>&0rAN3%f3_&4_)`kNHX0-M1guo(>E7qS&H;N#xE{Qv*} M07*qoM6N<$f~m+ezyJUM diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.map deleted file mode 100644 index 7ea07790c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.md5 deleted file mode 100644 index 865f0a8cc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.md5 +++ /dev/null @@ -1 +0,0 @@ -8fe022190fb8b4af703989db74b3df09 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_50.png deleted file mode 100644 index 6d3377afeccf3381da61bec65b478277c51e2be1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1089 zcmV-H1it%;P)b3fHe7NOVco12@N z!~a}~p-{-}c7JM6$fRoIxj_z}80?3*8@sMG0antptI?C&;cXt|%My*ySeM4$8nTCgl34+jSwM$D& zO#XM8=|Qt_I-Lobq{!uRw1iR2ND%~qzW>J|hVk)nG%A%!&1N%-852J;KR>TjDruU& zy1D`YTwGiv6f`t6%+AiD`042h01ys`6ZEgIuPZ7lVzC(7cFN1kBaz4_nx6vza5|mr z47NS-;o+g9qhoS%G9Hg73^7Qh(o_UpE>}}iQ(j&kgixo`g~MS0z~$v-ZfU2OZ*M7zG8&EV@9zKrp->o)#{+>ty5bZ?SuB>*(^KYL?(grT6`iqW zV*g*9&!(WDU}R)uYHBJLi={QOtgP(#_!yZLjYcVo%FoXy2*T_28jVI&Q(0N5P$+tO zdd|+yo}Zu1X0ylRNkx2TX9oaKTU*OyT3TBCe!t)E&sZ}7%n#dxgM*Ps#AdUlHEVQq zbbEW7$K#PCDHIB4W@c0>l|UfS>-C+TolKd-;i#*tlgs5*RaHKpueG%`6>*cv)ZX6C z&JYA4lgZGtPG*{ku=lJKZ!CW~;QzR>aBwDKfHM&ToQW9VOvC_ZA_h1UF_7dZ(~XUd z@9!h4Nn)Z>sr>#vvKmNp|4;lf+@6R5&O{7wCSrgy5d;4KN|Linw23Ph00000NkvXX Hu0mjf(GmI0 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.map deleted file mode 100644 index 5c7828789..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.md5 deleted file mode 100644 index 84388b9e5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.md5 +++ /dev/null @@ -1 +0,0 @@ -1cc4c4dcff122c327c69c3c13dedc3fa \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_51.png deleted file mode 100644 index 9dd34695a8b6cfcf9a97313e58a8f907ce8f61d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1144 zcmV-;1c&>HP)tBj z=lp%xCqm8X@oJCMi_Hx$X~`FVmM91h1HerVd-0-McNsZ+5_z z-()fo1mSYI002&>lOTxK*VoO>&6SmvwY4=eQ=w2C9UX0LZTWmYKA(SZa6rb*X7kk4 z)ZN{kQmIrZ6bau@>-GAfp&q6#7Jy#NlwTSgbGIpa1|^t=8B`+IsH8!-G^RotT)2Mx$|4 z6hfge89|%P*4WsXo0|(ERIAm2KmY)6d3niVv8t-7-shK;l#qj*oE!i^I2?{kFdB`1 zzaK#m2w_oC(ap^bc^iGAnHJL47K)3DF%0v1y+)%k?RFzod7l)A?I`}<^P__k(}q;sE}pPxTGJUlr$8Hq$v zT3A|IdVG9Lnivj;aU9Rf%R>;v<#OqCIx?rCqCz5(bai!|ot-^BJsAuJr_-5?_|DD_ z0HCI(hKe*dH+wuDkH_Q)w29rM9+KEEZQ*R=VBpmX?-e#Pxc8TU%Rf1VIpyNJQ?*5^7=?1|gJ6 zrO{}V-0%j2!IaMEUt)V=k`FY7gaA4oXbd00m`fv!xirFU3a*O8GVFjpp%{d^r62_%^R=h6n#b7_Pzmqr+KX@oJCM*aanhVSZGR8q?T0000< KMNUMnLSTZg9wK1? diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.map deleted file mode 100644 index efdf67e75..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.md5 deleted file mode 100644 index 705c5ba93..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.md5 +++ /dev/null @@ -1 +0,0 @@ -8cd321ec10c446c399675698b2c22573 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_52.png deleted file mode 100644 index 407da85421065d82d759dee3035ca42329837804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1273 zcmVDlccfa z!i7;&QnOs3v4u4;eaA_AN8A-NSoB5NJ#c1rD=i>Y8JbPvjo8JySIC@3f)Az@=b7WO%jV+}vDxdivz#BtZ}wjRpX) zyu3^h#Pjp>($doO^z`iPEUM)3c)Pp1D=RCfr>E)Z>04V{D6dp12L=W%FE9CgK99$9 z`-WO3lXY}-U>Mfg+B!ZyPUioniLh8KQ&Ur=rKMgS(QgPR)M~X$#w`T}1!xqYn3TdW z4EgeU6^TeBLTfWKGbbh{P)wTpn&IJLE|*IXgwbdO0GynhxD=$Mq(~$Z6yM(70szcr zvy1-u`FV77wB2q;<0~pE%4V~@p-B+L&KL|ve0==t`ta~@6!`o50{|W$ zA6*I*3WdpJ!Y~X%7#0?0u~^V$^oC|_Z7q)D7KZ-cBx~He-;^G3waj8`L^6~-zh>eYPI2;Cp!CP@0$K`VQ;o%{9 zjyE?q(PVgA6G9jn8QI<4Z8RG7dcC*%1-^aGWipwaot^#t{dT+Es|_O~Blq|Bk%^Cw zk2sD82M1#qrqO7mQYos5iHRvLF0QYyKRPxv)Rajh%IE|bZMii(^w z7>4EN=c8w`*P09lgU92ww6uhVhGu1DS*_Nst*xIwe|mL9|KU6nJ-ngOxCKygL!Qn@b_IxfDX1OChwm6hfOzA#Q$JpP!%q{64-VZp`I!xu4(1w*(UO|8psWp1Bl4 jn@b_IxfDX1OCi4iz(FC4v8gEK00000NkvXXu0mjfnOjtX diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.map deleted file mode 100644 index d41d30f1c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.md5 deleted file mode 100644 index 880e7c145..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.md5 +++ /dev/null @@ -1 +0,0 @@ -a08686bcc5f729a82c296a6cc288080f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_53.png deleted file mode 100644 index bc365a65d4a851153b0ab9bcee29ffed158703fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2195 zcmV;E2yFL>P)92zy>9{ zK*3O`3L0byZyq1e^CeVq4euzV3IR!tv~+QIqlW@n7WhEpQD9r-PC-En3Tj-_!*&;F z=RVA(cA+h8sSK3=FMgQ*=b4A6JUnzdbVM)=0}uoe%7N$tAP9nU2tmsLoI?mA9-Ko6 zBA%oEgYNF`;^JbWN?C=nv$KPPgNd%<|6*cdh%R9j2@Vd<&d%07{L|~9LZJ|g#YReT~Ai^s;sh^}H)kVqum-QD^tj`M>W8ylCZo>dJ&5TZ+%D=RB2Ha3>% zD(v6uih_~YBkjZ2U1OlR~fCykuttV^_Su9p{b@j^44_OVi zem-mFFg!dwGc!}SjUWhuATBO03gueh z#035PI3ACOAV__Ey_p#>4BNA34}u{5{r&h#M@L6^c(|*p>xK;*PMtcXR4Pr!FW!d_ zDuJN;n{TfD@yD#KaxRA5w|;nd_{fnXR4SE9rLx)V@$qr}y~bL+_}1It^)MqN1H-U) z@7|@Pq$DOL4h#$|KBvuTwc47Rn&Zch^Z9%;4=F7zb#`{vU*Yk1IXO8Bg`%aUrL(g$ zJw4rYywy~y>AQD(Ih>nx`ag1W8@s!oEzjFx?637zRaG%DF+)Q`QmJ%mYAP-+PJgel z7B9Z_HajnMadAmYOG6MuE|;4VuRD2&i;I&=rALn*MG%C=VgUdmBO?(6ad2?(@$upD zc)A}!rBa!Zk>TUxT$^5n^nA3x&jPo6vp4Gkre$^QQSEiEl`^5Y&pd`O{CDl02T zMn?31TukJwsHi9@DbcUFwY7Es{{3V!IUpb)B_*Y+t4p`bV7#R?8f{nC)AV!!oqqP) zZw0^n@*j;x3&3)mKz;Vq`l6zuLx&Ezxw(0Hc_k+&_w@AW;*GV~Cat&G9I8~R>({R% z2oe+&WYK{Q4Gn>Tfwi@@7=}qC5&*!xd-pI5o0*wuYHGT5>(-q+ckoCKhtu2Jd;k9Z zk&%(Wz`*wQc6`0QzW&OUD-#nFiHV6E4#(h22cOT+%F04fG%YRd#*G`gb%QxI8ckAC zQgLyyySuxwvO79Dm`oKP2fG#afH*_NI? zwO;4dt5zo=1qKC*Npkf%F5VmHils@Uc3MR3=Iv<3D~h?M^RA`zWx6FdjP=L*w~!>~P$=Ybxdw9%4h~jTRrU4t z87r@%q9Q*(zpbqeKXAc#gMRv{pGr;o?z>+B_!VE7nK5-G#@9F3qWo5Hbfj2%h@G__ z$K`U9l9DDSCU`tvNJz-w;Na-!sKFLn*Ls6&Fo!rQm0De0?dRuLQ&V%|#0iUzb#VA} zdOSHf86O`n7K``o+qZ7ry0WsehK2?JfVa1|Mx%N5?Ahkcn=MMN)oQD&s~1OOBi6qJ{jx3{+k1O%89Z_L4i z%nu*_85{fefq|(vZC=}kUE*@N`oDn|M5EDUGTH3xtfQl&TCLV< zwXUwND2hrXl9G}V8jS`3@bdDCjEp>X>=>WV_w@7>i9|FSEiy84!Q>AfJOBXbIspLK zy?eJ@E|<&YbUJ;0&V+=7goFemwo};^X7< z^76KA+cr5lnV+A(e*JoXe}4vpVXVd0wSGPu{~bR)Jzb?z>CUjtl$)E|+}!N!?95`Z zyuH1zUcDM0A5SKev$L}gA3m%L69@!!Iz22b%-7dfDwXctyVsoLd_F%SB0_%!MbXgE zQ2Z*k`8lVirY>K;{PN|?ty{O^e>Zb-a&%g z!anL`2dyWONE{9)H8qt&p#%p9E0xOj_V%@F*IM+9tb<^BmzYE%5&oug3BE9dAc#;X zoPVFu@4wHqwm$y;d+Eifo15h#(Z3!&dQNmv(B}o`aQPyWo!RWK*zB*~y!kJR!cN&U*xePt!{aYR zmjHcUE9_zb1lc7xhY&YP3SWj8ynlWapRws z^gr~C-){jenFa4}SV}~HGgg;5_gf&a0T4tu`2G-rhzI8of`|v_5Q2yY=MaL3_dgZf V#SJuhcb)(M002ovPDHLkV1m|DDf$2a diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.map deleted file mode 100644 index 865d094be..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.md5 deleted file mode 100644 index 6b1811bd1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.md5 +++ /dev/null @@ -1 +0,0 @@ -f47a6192f459c837fe3bce656d9c3b19 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_54.png deleted file mode 100644 index 74a4e4bee92f81dfb66d891fe61fb3328d606921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmV|UxVi7=fA6-P^7-TK0smCBYGH*=wUpfCxkpI zD=RY?3_o4PJA{x&A3t$MvaxS4}C*H|o;TCIj4$YQZjbp$~wDk`$FvQ}1B*lacc;PLTMtJS8b zr*k+Qi9~XFdHHKLm&?`E)Wqd-6B84go15?N?+LxIu&}?sUnmr^+3f7>?Dh3^@+WI+ zYjJUL7_1$K%mzwHX;1v9Yo3?d?xbPoM2t&^*F0Y;0@{f}oO;5>m8Ut>xwA zb#-;q)6*~v6QWY7wApOi+uKg3GbblUCX@O7{(x)^4Gj+u568#H2L}fziYgQe@|4MB z(&=<}cXvvqQlU_g@4xhVeRp>^48v-*dSYUNj8`ZWM@L7?%gYFY6c-n7ZEbzJZ#ae7 z+1UW)T|^=gF~5joG8GKNOG``CFgBYV6BA>#T1gQ_Q2@a8^)=D-`Fw0P`{d*V$MMqA z(#gq59LMc;I{*Md5F&;cm^U{!IF1(-6bug!6FM=tuCA_d9KXK4=J9x5ua}th$;rtW zhT%9)3{soTM%yV8xm+%n%c)Ax)+3k8C6!7C1_pdSA9+fpQnj?SR8>_S9v%`3f*=5Z zl#~==r4J7e_jo)Ghl83BMbU_e2tJ=rG_$g@2$5)Vxm@BPDk=&9@cjG?05BSjD2l=` z3_(zQeEiML4ROC64o7%+cxGniS2`H9xt5TSU@#c$cDvDNBt-~0x1EZnv9yqoh(PH5HG?dwY9xI-NxG;^Kl3e|KrW-)}G&PESwCgc}-AFg!NI}4zCMviw7I#NmX=mmSEo{`&d<*=4BOw| zm&s(Wudmd2fk04MS*cd5Z*Ol=6z%Nn6pO_lJP=n`R{;RIxw)iLSy^eZSS%JxT3VV! zB57%9IXgRhczBqcoLpL3`fR^~yoc0iG#G|WO-%*peSLj8olYv1E-o&bOs1Ti9I;r; z<#II|jY_48jEoG3pPikJj*iaH&o3@6PDx4mc*~>L>&0R*Re@nxC=?Q#fa&S!yu3V- zNF)#l4i68jtE)fTDF~;07nz%zYiw-9|L!j(#Jdsd3nJ#f2tABP^e`UL!+1mw;}JcK zNAxfr(euu?qq(`c@2?|txVpMZO--dL?|9VM*!W%bgeY>koZ5u`@?G_Rfmx5}VLYOT f@rWMABYOS;muh#&_#A - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.md5 deleted file mode 100644 index 3ee74b3a2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.md5 +++ /dev/null @@ -1 +0,0 @@ -f936b6c8bdc58c028bb8933191b34c6c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_55.png deleted file mode 100644 index 5db982d56e0d9d0186516cac62246704b7d6c911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1725 zcmV;u215CXP)Q5d200006VoOIv0RI60 z0RN!9r;`8x269P6K~!jg?V4{$Q(YX#&zW+|p;KZm%ycuXEW$FSW-pc*q=U^c*4zr$ zwhD@&D~T9LL9oQ4vZ6n%wp?SDf5JCPSy8wb<){R4Ga-}N?&eBHXvD0g_dYMq!+ma3 zo=1D6+w*ikug>}2bAR`D&-b1`_im6RNx;G=9HtXsVLkW-U_D?S)&u5=r&oGiG!p?{OE+wDGZ;J}ZaTToD7x7&a0T(j8>A#^w#G5U)aFLv(S$>;OY z?VmYwW^!_JzQGq@92kv8k|e|7@WF!zH5!fA>y2p;4u`jG+xF$l7njSGmX`MKulSQ8 z2*PHw?ccxOVzJQmuC6YLM6z<_%ID9Yhr{7JckWC~OmuW~%s2jm%|%=;*I+O}2t6JT zUHAEXTefV;&d$Dn|2~h$0|0#f{Ml$U3WdUyloXjv_U_%gm{3=)T*=GJqeqB~iyIjk z0pHI>8#Zh>apFXAaWRj_TfKVqqeqXBE|bY1gd7ehD=W)vHlvU8DwV3Yw^ygrK?ucS zF#up}Y;4b-JpzGX>C&b9_U-%l@go(swzjsYs3<8Zskyls0PyhP!zD|WT)TG7=krld z7)g?c4csZ`UoD2a!nR>eZ_d!h(VVO7wcYg@uJ> zWo1sM6T>hhYBZXmp`q^XZol83lao_kUQQ4MJ=EU4dj|&x`}+D&)o!;J6%~m@qL~+U zI2`r$_3z)m*Jw1Am6fQwJ3Bi`lKl4VTYG!^?c2BS-n|O|Xl`!K&(CjcY$Qq2?REnI zluG5q#6(|T->X-za2&6!tfa!;x^=6ru5NsMT%}S004x^E(W6H(3^N!EH*VZOZ3YJi zM@B|88qEUq9Z935r6oq0m6DPYH2ull;rh#DG|qU06;JpMAhl( zX&#T)-``J?RU0qF*BtZ~Dq0s4cBAwo5{rdIi&!0zS^b`jIftXY; zUAk0JQGv>o2P8=j4-W$Xd_EtlqOm(VI*P)g(SryEgBcka(P$LSx676-i$o$MNp^R4 z0|5Mf|37wD3<`xpp-|A31zQis#>V7w`KeQtS14+s2I> z6B835ghrz=5D3gX5y$cP_;_k;WoKt25mhrYGpUv~n+?Zt48tIVd_I44bQC?Qsi~;| zfM75+tZf&1R!S2;s$x7Y`jew0-;bXV0Di0E9vzhrC+QJ3H-myGo@(T|5^)eE6VNt52Rh84866f@o-Hn3|eGhd7+SZZ;z$ zV`^&3@AsqX+qZ9#NTrPm1VLD>)`5WmD%Ho2AEW7L&6+hLk;v(E&a2qHN-8N)EQ+uhL6Kpjd;OY86NN0zKuu|gt|7z~C`D1_s9 zb#=8=DxJA!>+0$P0IXfRmQo}ViO1vdcsvlo>({T_Y&Mh0G&D36i9`kl25M_-TU%S_ zp6#DEJKq!jo~o*tO*chXmOs4w!dbwQQ(b3^>IC64wq*AFsAgHRU(rUGf7A=|? zN~hDgT&}FFtWBFX%{>8;NObn>S+!ct0YUq>L@#DuIJa~|hkbw3@EiEmHiHW(n zx%v6|>FMb+_x=C?i^U?9O6dxQVa3J8Xp>r6TIzDSUcY`V7K{0OzFMtLPEMXVrvDL0 z(*9S`+S-a%u=z$|nLFs)HT?&I|Jb*R|0S#k%)@%XJgf)I!+O9xtOv})dcZuh{I}%? z-t<`JP9P9izI-`dnZ<*Oii)3=&u@xCp`ceG`&P_2?0UdFtOv})dcZua2h8&acHeOp T?v*Nt00000NkvXXu0mjfi1Svf diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.map deleted file mode 100644 index 975bb02bf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.md5 deleted file mode 100644 index 04d962ad6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.md5 +++ /dev/null @@ -1 +0,0 @@ -87662e5ac3f382c4e9890e2f0c246809 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_56.png deleted file mode 100644 index 1ff0ee12323852716c57adc37169794085afc8c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 911 zcmV;A191F_P)i zsv?M^pre9_LbO4U3dTC7polouMVC|@N>Zi9!FEv5423rDa1iop^p%)KNb{TSdG6uv z|J-Me08tdN65!8o3(yHOPh(Lkd0ON~JRVf#=^|gSg6UfzrTNGW=1Ll00011tF@z} zV}E~NG3=WxFE0ZC_V)HvsQMZW<}(xuiK3XzW~Zj6#>dAKiG;d#3WWkml9Q8@1VQ{< z)jKp>w^pk)5C{MO7>4;GjOY2m!NH1(3YW{Zv9SRF$Y!&s>g434y1II6Yb%vX$p`D@ z9@Bx74kI8QxJsB%}oG6S69~;VSc~Ava*t8S(>IJk%+vCAc)!7 zSqNbu5ZK<{mi%L5V^>#Ku~;mXN_BR2o}Ztq(I?8FDC(U@5wF*a)+#DXO+g50npO-$ zB$G)D!!nr+GSAM=B$Ma)#>U26E{C>2U0t0Z2%;$7-Q8grmP{u9t4a=z<2a7XJ(}&$ z$H&Lv;o+sFrF=gBStQT%<>lpeyB(PhheN6&Niv;ILkIx?cDw!I;QtA1Ar47k(94ZtFg>X20eSIwr|LN%|TDmPQE%|(& zW!WFf)AIhTs;ZiwpI=#7$>nm20c~w=7m@$?_!z@5m&+wZc6WC( z48t%?Q&W@A=bM0rxkK?$7g@w`4QGNQ=`}?-Hw>KJ%Ha9o>d_IrIv%0#f zPrrK4XH8Ab!NGyfonq#D#b}s$8ViMU=;6Hh002ovPDHLkV1gwTwc!8& diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.map deleted file mode 100644 index e760517d6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.md5 deleted file mode 100644 index 1c90a6e8a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.md5 +++ /dev/null @@ -1 +0,0 @@ -ba89299cb349c224517905a60a70be44 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_57.png deleted file mode 100644 index d6dfbd599b8e0999656c21f927b9c50e0d9f85d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1369 zcmV-f1*ZCmP)K~!jg?V3+W8%rF=XVS7Qi6kO1hpJHtEh;64QfQ>;!AldGRPR-ZZaPx}Vd`cmCw}`|i%{Y!b*Y4B+|i2u?eIvkGq z|7nHto73LjUR+$vR{wFwg+d{(*Za#uIsM*4EbI2LC;*Rx5;XaB%R5J~ua4US2MhN>RW)Jw5Sw z9Ao|z+;Jw8iD4L$BP?uOB)*-Mx!w`2{Rl#9?ucwL~h->g_b8Ovr`cSfs$dHEEY>R9F|BV zpFVw3DwUIylYYNnBoeWGZrr%>bZ2J=-4L0X zndln)e99n&OEohy)8%q~`0&B)b{}bKYHITNd<_i^$KUu^va_>evDp6pKB}&*t)W70 zZmvKeAW4#YwRJjOI2<+@44s{wySuwIP1|g?!^1-W08P^_mn#?yvYlVQevMXZVPRoj zUf#=>FH@3lD$jB0>FH*(`QgKdi9~{{mz0z+3}ZH%zcW^$P~5zE^Zxz&kw|21ZSBE> z2S}I8<#+DfsjjYGUS6gsYJPscqN3unoTh1sL_!e6?Ch+~W<&j_rltS@MMXvI z%%!EJfj|JAgd7fs+wJb?=vY}i71W{I2hR!8wwR&b|W^r**rBX?yQiH)Dkw|np9Zss;CGamF4u2rv|9Ck3nefJ8 z!W)MPZyYAPahUMNVZs}S$q7FX;+>@bG)^#1uh;+jIL;i9;r}0p1;58(!W)MPZyYAP bahUuC>r&o#Wi+7b00000NkvXXu0mjf# - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.md5 deleted file mode 100644 index 1d6f49c28..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.md5 +++ /dev/null @@ -1 +0,0 @@ -eb71d536aec5ae0d21d8a53ba95024dc \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_58.png deleted file mode 100644 index e0006ac9da42db098adeac09c655b009d6b8fafd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1340 zcmV-C1;hG@P)MDv6q8x0Xd z@ks6wx$nU=xik$?5}`EGmZDrzHB*0{eHgR&-;AN zd3P?~a}Fd30w5@f%}*DA_z>g`bwS=x7vv3fu_bp@DphN1>ra(}2oDc0DJd~_U!6Cn zr>A3MV^%K-0RRAMwOXZ8kt4Q$PZ}K^wN^cdKcuCly@{av4Rt}@P#5G4b@?UUuvo02 zp&@G~T7e(-hQr}VrBVv&e|KS~V2(F&adE}P#l|*-5JE_&)0s@>@bEBs8ibI%hg(}) z5JD#>Cu2mdR_Em87}{($yT8BRjCwwStZ#N=K|z6GA8l=4J=T5{S1OfpadFPh&I|@a zBof`++?ZFq1>Y0KR+KrxV5!q3??QfYPH(c)l~q% z-QAsBF3-))C1)8g9qH-mYiny+Sy>Q54u=B(=;-M1@$qqVbmVfm>+9==`CeXL3kwT| zHjd*E!t3j6Lw9Fqhs)(+7#0!|va+)BM*ky00Ko3A!M`Jf7ESkghF9YPY(cKaBz^z<$8O2zneZX zG7=gZDwD|wf>5i~dwY9gv3O``=<@Qixw%;`mw#D+L?WrFsljoa&*vv3BwSovkViie z92gjAY-~I~KhMm}%*e>F><2BSQpsYm%*(ZaH|_215JE>sN3mEuIXUU??@t~T2n3Up zlUG+)5{X145}BxJXJ=<`Z;xS^gM$Ny!)b1A{xT&mFE1)83d699iV6mUF)=Y=qF_-` zQCL_QolX~tL>i6e?Ci|MBEO`wvs0;5no|6`SnPhI(P(%)UUhY~Uau#Qy1To_$HxnW z!u$LC*w|PTHGO=1*x2|o#n;!D+{SU-L_v3VcSD0lqX7UO9v)0A z@^d;nJ8Noc78Vx#{QS&Qu-G-t&CN|Jl^z@%^!4?<84`&^+4TWP67e~3_%A62Q!Wa005F7OB4zPpU+2s-uwuLZv^BI zG{5A1+OGt8LtT(J)CGA%U641_1$jeVkT=xjoqwPd3WfFSK;St3<~`Fp-thT+Yt@5z yMQUm)xeL)-0Lp^yH`E1rLtT(J)CGA%UH$`sK_Gc%dR1ot0000b{i diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.map deleted file mode 100644 index 8756dabf2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.md5 deleted file mode 100644 index cc64f617c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.md5 +++ /dev/null @@ -1 +0,0 @@ -388b2bb7b074fbc6b23cb65b17a2d52c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_59.png deleted file mode 100644 index 00d80fd2a815c93944aa1ea1917ae9c0108239cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1573 zcmV+=2HN?FP)kOK~!jg?V4{$Q(qXz&rvhC*_h(AH4#k0H!?(rOmr6ZqBMsX=|q^6 zf2OWNk(uCLgosg?g`sWWVyl$J`lAq;lo(3s5EcIsRO`>^I%F-;vMK5H_Tv6n*QK`B ze)AIN^Xi=EInQ&Sd%oOz&$;(Pf*=5bmiX;-0f;R@+RzuI4Shk{(3b#eXLxw{%9SfS zRSF_GIk~#J+S%Q3-F*D`@!q|AJ}(IY001VFX?S>;Y6 zp)W`q`hv8fFaL-(@$vB;9UZ<5^Z`4pjYuTYYPB@X|9=R^x&{XaQ&UsPIqC23_pEp?TsM`Kl>|Z9?e@~r(!#>R znVA`?GyGMT4OpN0@lPft6I$BrGd+wCJGBLIMP^7He@#>P&aIt3vVi9`T^YuBztM@O?*EU{QTK0Z#4kBp4$>+2)i7=}Rz z7Zw)C?#q`i#bPm=%}z*2c=6(eOa84A0svmUdX=7@&StY?V`HB@dGc%ERx~#^=j7yY zIGm`csFISB(a}-Tu2QLrii*n0%0fayVq#)iTU-BdF8{-8+Bh7Jwzf71p-?FNncdG% zE|*`wejNaC`}S?ISR54GkW^N~N-+qvP}E&rMBD27}?Z z1!y#yhK2?V!=zGaW@hH6PoJpXZ4%zPb?f5Ai*s{xg@uJOnaqO^T2`x7uh(a1X9ECM zS681ue;yVV78e)CVzH8vk_H9_{xl(p7qn? zZdZ!mhGHZVNpElO$jC@~dU{$~n#17$05BK~=iJ$BHtP8I@83Jy@7}$OjEr>2ziGn1 z2SUi>@#^a8EEbE|Y-TVRv9YmEFF_ClLAacnn|O17!{Kn0N@ZhX+O|7l10RWypeOgynXEvKxS66WyUtV5bUtb3R#K*_$bh?Fw1&hT}TU$#F z*Jv~Y0|Q^be!YD8GKOI}IXP7CRtY@@$ML+pyorg4m6a8X#d7}q`MrDhlBy^aiuU$) za`ATI!UY`142w~%o;!E$@#Dt~216tg9XxoD!{KCPWQ2r- zT)leLXf%?$qDz-9+3j{dpP!YLb^Q2oYPei3SE*F{_U-HJ?0od-5tqxQdbdjG4qB}i zLMV|)a2zK$I(EC=-``&*lT}nygocJDCntaT^5xmHXS;XrCMThyqCz5(L_|dN^z`)f z^ze8*4<-asmnBA{Q7V<9KW}yf@*4s51I<73KJA|bX+vL-HuME)Ltl_K^aW`{UywHR zWs`rPj7FpH>p)-_=JK9t6K$kYsjuomY~aL+6Vxt5Zvkivdfw0%qz!#R+RzuI4So3m XG|P30+vN2;00000NkvXXu0mjfrZ)w> diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.map deleted file mode 100644 index 1b4f567d6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.md5 deleted file mode 100644 index 25a6cd88f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.md5 +++ /dev/null @@ -1 +0,0 @@ -d1acd75cd54185c59331a5eff2eabf51 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_6.png deleted file mode 100644 index 034f6fa4ee694a8bf5110af6a047d5cb16a544f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1556 zcmV+v2J88WP)|3`blSX+UPWOO>{jQWsL23ruyAgIk|Er>CK zkccQo3k)JE`jQ_qC<%g)6^2;htWO5jhrkG%6&V;SaG7f_nXr=e;t00=pAX^TskS|t zGwC_!2M4zMy6*d2*ZG~pIfFBSB%z{2dWz<{0+qQ#m9Jn_`3gpruVCi=IN2zj|srP&Z zqsmt>s(b~b%2zO|{6C15qq(^mr%#`r>$3hF z{DJQ7Ze|(INhXt_BuPAQ;6UEI@$qrGTrQTCl~J$PbNBAueE{ilRuJPRE9Z28Kc*Ii5%)=<#?cNfMVVS;Bq$_VM%Q&vZJS1R!rF zlZhm0GMVW0dZ%?v^7Z#C+5N=*%*t(7!HSNu~=xc+2nXl zO%0bVTgLwWex_2XU!Eh1A|E|^#4lgIu%)Gidc9s2JVh#%;^5#QjYcD{UcE~4+euqh zRmJVwx6|+UGnq{ORI|h3pw(*S>({TDNF;dp@L{f9yO!y6nk3oS*vO3=H!=_iaAIPD z?d|RC?d>H=*4Eatqod=y^?sCJsQ&UXtMdE$`UrsGa5!hq$jAr*aCCH39((@$IRWtP z+qWdYHQLhBGVM8M&z_azA3l5_07j$HtaY3}f1XaKQ~n-}M(K9DX*3!+fBt-K*sy^& zZ{8$HMj{acU@R7s^V8`xwOTEQhKBg&%^Lz>Fc{3bum6%i8~tS?pZpo$^UKQ0006OA zEN4z662ZKA^B_r*JZ3Z+<=7OWC{BBhUayxwmz0zMfc%iz)6;`>>()V|(LfLc96EFe z(P&i8Hy8}KaNz=i!64%CICkyYg`GQhqOY$Hqobp8jvxpS1Odgx#rXK~BSN7NLZJ|f zi;GcNS@~-R>Nk%`zW!#)jODLhy&94vp{uJaXU_8F%aKZ@5Dtgsu~)BN$+0N}L74WO zT#S#8!{u_}$aHa4QEsR_fw!gsCL*4DycFrc%uGw-^;GiM4(l5pnC z8Ms_7Xti22H#cL)jvaE`U@&0+{{3ieZAE2eB}7q#*Xu<`M+Y`-+5`aT?CivTMpMMVXkK79&{#R330a^whZ-@c8Kk`kEB z=7RTE5T@~fpz;?os}FoCe=n+h1*6JWFsgh7qsmt>s(b~b%2zNsU)}cke1EbIm07~? z_veh|l%MNeZ - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.md5 deleted file mode 100644 index d85813f81..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.md5 +++ /dev/null @@ -1 +0,0 @@ -9653a701b37038caec48b8234f5297bb \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_60.png deleted file mode 100644 index 9d2c7f0096cb4f04de03012932251d6e726c97fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1583 zcmV+~2GIG5P){LYK~#90?VMjoQ*9i_KaaePoUtsXP?N~OqKFYCv74>%CRa(+MbG4Sahxl4Q z8L_p@co7JNRRroFAL4V%qIPEHOtZ{8#l ziE#GpS>C*P!=+1?#wCZOUncZ=J*B0k2q6dtgQMD3ty)DS5}~`h8-RE3-qF<5#I|kQ zG;zLMS~qOiz^z-i*t~f&LI^At3jilhoFF?po3ykvtX3;MJw592Sy@?JzkXdUhe9EQ z5DX0ssdasQeORql37cb_?Gzo!Lo|NedQ^71ek49uH1k89VijTsBz>eZ`E zpFW+Mni~51`$zq76h&eC_U#lG7gJqb&D^_a_aj>M_4OP%a)cKz zUQkq2#HLM~_|~frNmo7!G*W+@z2#3QA4i3iE9UL5_r>95V z8FV_Gw6wIS_X7VL(qu9vG@e9B`aMH99HyY4fc^XTGcq!w>6e+AiQR6;;c)Q&{d-od zSn*SO+1c4NH8rt&_il1?b15z^=JxH|3B{N*XO5;E3Wa`3D>E}w{hped3NYr4p5O0h zU|;~9PKOWzqtVFV;2_P-%>ZO%WB~B|`SXOvlPF2QOk`waP+MEeAod_X*C~iuMHuZvn0@~Wz=Ry}c-kqJG-j+to|O{Q2{lJ$rW2_bw)6pCLUx9k<)fp+krG z@Zp1|-DC<<=3`-fxBm@$Jpckb}%(uiXkBp3rFg!d=EEWSk zZv@rV)iE?Q#ItA5C@(M9#PoW-baZs^_U&7$tE&lxLabf8R@3i$T8Yrs)&{_W1q(*i z+iW(1!Jzu6?eTc<`~B?QyO)O#9}Fw>MqN0L8Ads+bJSJ?@X~&KoM59sa>gvWN z-kv>sxN_wRsi~=0EEbk6TSj_%I(ECAY15{0?AS2^fq=SSQCV3@Boe`7GO>E~YSyh= zr-|usIH;(oVCKx3G&VMJ`SN9TiT;xBX(fWs=fiHdYwC469eH_q>SJbpem)%?9rX3} zVX;^+8jWn+xRI$-r&3T*kg#rCl&@%RZdT${Oa2nRF~5O7W;E ziZp{nMVdjPBF!LC8S_>7@!Hjr{9bf+c8=LLrWwY1w_fu1A{0gbKZ692|IZ-#5@`mB hiZp{nMVdjP@-IgbS)YLiCV>C|002ovPDHLkV1mT-1H1qL diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.map deleted file mode 100644 index 5e69d0b66..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.md5 deleted file mode 100644 index f6848c29b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.md5 +++ /dev/null @@ -1 +0,0 @@ -a45b337701fd72c704017f44bd397e8d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_61.png deleted file mode 100644 index ef8c7f7b0c0a28d91def468c57cc989a7f70d088..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcmY*bc|4R`A0IE-vSlx2U(2;*r>GHQia|;)Wvqkj%Fb|^!i*tfi$StxsiC==3WKo@ z*A`ylGL{f7LW8l)+~@vv-}iGq&+q(o&Ut>{^IcAw9Sp+Hdw~}O0`WtwZruguPT*7G z<^(Fs2m$XL_HB>HTH_BhA(;cHritYR*w5gS(hXDUS3{cdo&tte`&ZoeY&{gag#i% zeIca5iz@tOY>dG?-qtf79UZNQx4DjeK%T~wm6t=Vs8jDZAOgvKW(_-i~HorJ(| zmMMyws;ct^J|(Z~>M+G7k?(zmrNf>)(L0?DGN`Pqyv96S5|xn1oOa^$9M6Zcv9UR+ zi;G&kuB^0Bz?(#B2&5#(AMdk;9R2jGt*iU>^V6FA;Rowc%pXkvAxiF|GH&vz!xY^tKcwziqm`%9T-xR)3wH0Y5zCs?QRa7YQak59whD(@4Ze9HH-w>ntBVEV3+`c}mq~v6%jZI~Fxp{7N zRTXfaaj`)8sMXDzZ0xT_;6w!f!CWk%$JNC}%GA{KcM{2y`1Pf6c&+8!^fa14AoTQ3 zjEs!5*Z)e?lH{{4xcW@#PTmj3>MQ@Jri^bQU@+K;6m%&tFwix)6u{o;tz){S!cuRh z&)S#DBBLjWTZ>Y3uMp$n`bW*;7WSza%$V`yTHnwRV)k=5DB#bJSzTSXFEDVKIBZ%@BxX~yRXp|aq0O_P z@ySUARB2n=tG6zs-BE~4P3ZOgDbI`7qFw~IojNu>aCIF@7BscGcTe=JghmCC=&;9W z_weB#01Bz;=@%o?#l*x88H{u1&UL)^9x#mF{r2KB7K`ob>hhgNV=&Q2Yt^G0bbtz` zhx6>%IN)b=4Gf5ZGy2oh)2Udj_rca|XT~-z6*Kj_U$$fg1E;8>a<*=wwub#Nu&#_u zo~yG(BFToxlaJiIyu!1yv+~Bq&H*&?BY>M}?d>+8aahXAxFA+R-G-=^gU zPXWlpY)u&zLSSyv%rEi^3Krhpm6u6Q>K+S}XJBr*p<)x2ATk5d=sh5=*&H4oPU-FS zv3mvP9;MMV$;>1Fb0Q)ND}#80H!yqqEN&j2b18x{jx!mTOq7F~H}yv+Csj~Fl!cH~ z9uZ~k>M=Ex5Fk-=P+3z`xD_pbNqDarF@C_O0xN3wy1KJoM_3H|)bf);p;$qoawaBt z9iO2WMMWp1lk-?hKzGsmUwzUr7=BQ!K<(Ss8b5_?J;#y>SP>E6bHwI!_a=$l$j67W68l1Xt;lg<3T|iqJ`4|OA zM!K&xdph;W^Z9u!e_YT{^XdpwsuZ#?&#Q>ONN**F{pxF|Js^@^%0 z%XrtF6@2hwh#|M2po*T}ed0AqSwIITCvnQwFK^txFE;ZbP(fFB{LXe5*%E_B^D5hx zSl_+bIUZDj?QmDPbYnES`>>KxyCbR?aT>@d@j_6zS`wq@<*ZPNI5ImcwcW^in$6+84VqjZW&Q=g&R#@t;`C6+)Pb z0n7clPa`72R*NHR<4;dc68EH5b8 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.md5 deleted file mode 100644 index 851893b9d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.md5 +++ /dev/null @@ -1 +0,0 @@ -189c2435c324f1057aaf97e832f8d5e8 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_62.png deleted file mode 100644 index d094da5283f35378a97baccd14a7440d68cd879d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2503 zcmV;&2{`tNP)3KNz?lQJTqjod;? z8DOFV@w8FR-1;$XD@&Oy^hgLI7y;@(;=Kv3{mvcL)zxg@zWqVeB9StBZ}`yfM| z84}6Ao$~T>;^X6o)a067;xb6HOI!wNc8SX%&HjI8&z?roU1Z*OnA z{WUc;yz#~xYCAMEl)}P7XOur8?#%DZSa;6fAmQQReDJ{sPRZ#EIyyRd?X}nN_4P%k z)3I>jLQb4GF=Bm?EnBvrC<;YIMPph1=v~>3Mk7K9EEWr^R;?m2F_F`!Puukg3JPM^ zu3dKfcJ10lP*Bill_j|k)~;PkOG^v2wY8YdW`cu*S+Zma0|Nsi(gAEX8~OS9tX#R0 z+}zwTt$);)F`k~Dq^GB&C<^uU^>*5lB}=eaEF3#_41gOqZctiU%Iejt9pc>n*1v4o zGHPpUNls2iQ53?%!vV<7&c@4owP*jOXw#*G^ojYjl( zJw84@#KgqV+}y0{F)=YHih@R?!C)}3Wy=-@Kf(R^=btlY&K$dVjg5`Cxw+BQ)P%`o zV%Dr#c6viY1McqbYL2?PIua5R2nYy3r_+&^mPSWM2Uo9N9gz<3?YG}DapFXF?%YXZ zW23_bu)Dh(qtS@LU|_<839Medn%>^tzdct&G3sWwTCL>d|H{X0iNJt0;1qBEpsHv&p!i5WDW@b`cTuf(YC!c=$DW#>Q zf2&rL$;9T(n=zZs#K*_;(n~LK{rYu>ej~|MR8+*rAAiiXYu89jOk~B172NMv2NDw# zX=rHR@ZrO>w6ri|#th=(;;`9l09001B7~s7zn^{k_VLwMU#WGy{`%{jJ9my#r%tKy z3JVK)_St6%3=CxX^5wL&wAh{Cxw*M4Uc4B+UJt<1rAsL*E5mFy)7{;T$zo&oFdB_^Z9v_$TCJ$8taKQ&Y11ar-rg?8j~_2OJ3B>CP>?uy@Sxbgf4}hZ z^0Mn678WLU@7}GpLqbACK|z7qzI^$z@bdB!b#-+^*68o=FRH4l)OKrYs{q7rzx^hJ z5F$7@SZv(5(QeGlnKMOhZmvWAd*uoa4i?+CZByI7{`#u`gxPE!@>uSiuiLlx-+$k( z-YZwGsN)6(282$h8@7%eJ9dcp_;|Jb>Z`Acb?ep%A%w8mY(lTsi{j#9RZmY(7t5C~ z7eWYe>((vt*kg~0y?ghndQVS}c<#C9)Y|lVy*P8`%!u_XSFVW1AAel*_4NrMgs@mF zV(QeX!fLe&A%tjdZWe%OXlNMnct*lq{98WiYxa(g4q{_t`S8OJ?bdFC`1$z}9UV<- zYAU_Gy+lPt{iA#agMrf0Qr>#&EkZ*>Nl8iJmtTJQTQR0jpYG5$o6Y|ym!F@X`nQLN z2LLy3-W)df;C$V_g@uKwdShcF0RH~|>dn8Kn;YHT-83~d0e^kOWA5C!czb)JC<;cS z(XRgFRjR8-*Z?oMoMtg1i%{PXzv z`O((aMo&)gDyEsCNrY0@Ox+S({9D+8dZsR=hXH=cOn ziDBpIei-#-jIXaRd3kwUx^#*B{QM#Nq@|^?ckf=-tXYGiC?kri(KwbK8ym}^Lx(ta z>===ekt|rS0ISss{AIY?&DPP;;V^#CP=j2)e3@y}rVW|@Zn;JSyvDs{7Wo7Z_pMR<`UU=aJ9)0vtDl01~EG%T%vSsRt2=MgN zPZJgvMqyzgCX+7Ssy852F&1NGn zFOM^4&e+vnRaK=fWdZ{O85kJg(xpqIGKXXGoZZLAhs?}OKKke*`uh4D^oWQEgb-wA zW{x=KlqplFtE*FA%&Mv?-hKC7E?&Gye}6v%0|VT=c~f1_&YnG+f`S6Ny1Hm?ZswhL z-f@U&GMPAXZe)`Go z@#v&UlL!n9Bqt|__V#vqdwa>w&ZfV=pWxu&d+LV{9RmJ3p>Aivf(6vq*Hd3#Pe4Eb zF)=Zuq@-}}+&O;#{dacn-c4m?rBmi`%>JpAk&%JbYNeo{z$x+Ge*0|>9z2MLhX>)| z;VfLZ5FZ~OqNAgkFku2&Sy_~qm#fd~Kl$VnEEWs?{{FY)-0l;qL@B?I<>X6ELyb48Pn&S z8&t`|!>wDl#KegcMQLg2gD&MC@jz}+CI3By5ai_K;NjuH(xpoubU99E*e`ELTn|rA zPkelQ`0~py)f>}?32AnT%H1A~J`BiZjKpP-W|z1O((DqKL7H9SG7NizT3%j0mUT!Z zPNBNGdRT2(vk&*%8xqNX6-5a7`|J{zK>j|v#C4Enm$(el>=KtjnqA^D{13>}(sVbc RyK?{l002ovPDHLkV1h+q06zc# diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.map deleted file mode 100644 index 2668a5553..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.md5 deleted file mode 100644 index 4eda18e00..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.md5 +++ /dev/null @@ -1 +0,0 @@ -db104ffd0bed1c2b2b66be9a2d94884c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_63.png deleted file mode 100644 index 842798e42ab3725cc0ea4103aaba9261996bb4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1440 zcmV;R1z-A!P)a~}>2xzYA& zotvR`eoyCo=gY}|{yFEHGhrY}l7PjraF`bG5MfPc0M>K{U`=NLXWP#7^mKcBJ5y5r zViXF+ix)4b?!Q(#j^o3_!w#49moq#(jN`a%#QA#C(9n>h^gIY4gmw|OrZWI*Is>q# zGr*s1dR$zbTCHYU#hv-HO}FI_`T>5&^wiYU^73-34IzXOa=F}yh={(vKHD@1;l#uQ z6^V(7X=`h{r{bS6Gc!|ISV-f94Gj$t!rtCq8s|jNu+rsnIZ2X7M@L0PMR|F7%gf8u z(6eXHs;a82R_p!0#la8+q0wmGym_Nisc4^^w(`Q|a%D0Zgixo`Q9-FxYBHHVeE4uZ z-)uI^GgWsW%QpiZUb$mTP&8&&Q1tnOiTp? zcKLaEc^exWQ&UqrJ3B(5Fe4)ad6Ai!d2({HxVSh!Kab;hZf-8h&&|zUSXlV_^{Za5 z7l}lZlas&JGdeo@?%lin{r$MOxa8#IwY9aSrKS1#`7d9-jEsz+oUySnk|ZxLFF$|& z{PE+*{{DXI<0_S^qM`!BFqur&-Q7*a?<(VFNE@_TtzG0sQc_Y-NkMIDDh$KWWl%#k zH8li5#Ky+f*4C0FDH4fVTU$wzM32P=g8^k)tyWi8*QKSUt*tEpfL^ahakOcSMkCq> z8yg#TN}fM|-qX`_y&V}D+1}oc+LM!$5JI!rjJi2FIn~wG*Dvb*`}bK{S*UF=82Eht z#l;0Go4&rj7K?=>$)CyiH2?suR%;uft)?Fy9;T(G)z{bCRd5KQQmIrbl?H=>3hMQG z0DzyLAG!%UIXRh3rtR%*9LJrVodp5`N(&7Q1pweUzP-KeaFv>bm!#*NTc zUOYWL)oS(D)|N)2u^Wnyk55fat*NP@B7uQ{91iE`=*af>PfJVV^Z8d-S35g9C~b3d z69B;H^92Hd)oMlifG!RW4zjbe>+0(E_Vx&Z=;-LUy1D`Y5CoxCt5;T5C}H2eeM1$7 zE*W&5)7{2!3-p!wmbw6xS>v0Oi{gocK`efyR= ziU0t5dwYdKp;#>T^71MzEtN{8j~+b&0BE&Z9*-9h5g`(Z{QUf=WAdj@pTfh#Q&Lib zgM+_+|Nipj%X>-{2m~!HE!o-GuCA^Mh2qt#S17Jhsl;NjZ6=0cNl8iQ>`0Fc+YNrp z8!5}30RP90l;y6lrZWI*Is>q#GXQHk1F)tu0Bbq}-0%v<;NYO+bv!6;Fg+_P%kerM u6p&=!Pj@(MO=kesbOvBeX8_i82KWcQGK80AIh@u20000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.md5 deleted file mode 100644 index 5af67464a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.md5 +++ /dev/null @@ -1 +0,0 @@ -47e03bef0106d920f6df1a4650c42161 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_64.png deleted file mode 100644 index 356ddb54bcddde9e44a7f258c6cae2ac2d9b718a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1494 zcmV;{1u6Q8P))teC%Z=T43sIWnm&NfMGIQBY7oWo0Ed zZ{Ez%{KzRPDq`!_tvr1Aa5l=BSAxMH2M!#Vk*1}k1xb=~=enBoPXQvgYV?I?kOt$Jei42?PSv)YKqJ5(^eAz-Tnm($d1ucb+$H+{nq3C$U&8 z=yW>Pu3gLh`}gJe@AQ{1U&d%OQdn5Xwr$(!?d_Fg@pzoQd-qaWT1r`28T1jg2Um!Xf#q%Qo^A_hxq>eyBxoF?;cB+F6HXgt3)D^i~;gH{hyF`^OMOW zSFT(^k|e6Cs&dl!{eFZHjE|3V`}S>a+_*t!XXm7x_V#wpo;}OZ&=3s`4cKfp+2HB) zZ{ED2xw)B+jt)M5{>+677bb0c&z?Ob5(%C?d&ZL|Pl!gN*lf0(`~DT1%|>r;FL&?W zB@&5XGMRYr;DH=>xm+AQdK8UDgWYcD+O=yl(*F_S7rb7t$g+A`s;jGo!{M0J2INJf z(FniaKcyy-NQkDUCQ(#WB!-5DGPd8^+A8Ym>g4u@4I9M8ix=hg$jFEQL@XA|THnw5 zckkYb!oouF;>C-Myl^-y01=5q+0|C7ka&3jE#*6A%qwn9v0>0t%tJCv1`(bd((rcImBYPCp`gu~$=7K=^NmX?;vpBFD)48Z8v!bwc!)-$XfzrmNn+WuWef}q;PrZQ(*G%WpZ1q8Uyj@DCL9jq@pvZ1e*8ebefvf* z7{p?+@afYh>g(${b?Ov@gM*~gX`D_c6B83T^_Ppjwzih;?rt7GevHLp!E82@OeWFm z^-N4m@bTkEIk&H`4*5-@Y>GZR~ zoLuJ@7Z=mq+{~FXXBZnBn>KfJbd+>D&5|Wc&}cLSgF&25XU={7PT$kh!-*3o==2$m`dyNhA`q zwYA~*`|0lP24LN~b(1t^vzbsRL?{%RRzDle*`GXz4<9C(OmhAD^=b1A1_S5MpQpaQ z9-U6dv17;By?b}g{rpb9efxHbi;J;Zt(26M;B-3i`Fv=#S^&IWFIugZ%F0SiCKD@H zuKc6x?~aZR)~{brb#*lr6%{;v`jj0zcHnZkuv)Dd`5KJ|i^U>e_D!Xq6=raPpzF&^Fsk_qMm1l-sOBq}DIeYT`FwL(hf1CZ1OijWrZj)5XT4Sa wKS)BT@8>HN_5FM$qnfW^RPz;#YQBQ`2XT4QA9uR~`~Uy|07*qoM6N<$f_FdqK>z>% diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.map deleted file mode 100644 index 8234a7463..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.md5 deleted file mode 100644 index fb2602ca0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.md5 +++ /dev/null @@ -1 +0,0 @@ -a933b42bdde6be117985126166b7d49e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_65.png deleted file mode 100644 index 1c2d7082b418d96f9a2f6b56e6828ec922732ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmV-g2c`IlP)(MdZj5TDFMSUsH>~8% z;NV~c2L~e~BLjnjgKS)_RwFq%8G(U;h=_>5sZ*z5u~@ts!ySuubBz=gk=$9E3z7!T$aGF)}i;SS9_F*zI=I)YRbk@#Cnfs`5(v;K2hNK71Ix zy}jt_>caT=IF1}S!p2KVN^tJnIT(#bw6?aQy}ca;1qFYs_C-H!`TF`IKR+J~!$7Om z&YQ#M^KtX$P5k`%6B>;Msi~=87zWFhErUoTLP<#pX8&^}K0Y27FJ6RHDg~dNJt1mLql=&=uwP~jd?uw+|!oD zVu4&Phe#wsP*4y~oH&7BzkadtSFc_{C=}xU{rfN&3{F2VclxrjG8{a35CVY!QBhII z&CNw;XD6#|Yiq;4efz-Y^AQ&phrGNzym|9x;V;cY7Tr8ns}=X|-2=lgNJvQVNYmWh z3_=K|rl#=x`ExvZ@&pYH4GuYVb#=IL;|7L@hmoC~4Vg^F8pNIc%a<=GDk?&KeLa5s z_<`HEZ#(pzo}Lb~*^Hi^9&~ng!e}%?CX;zQ_FQB#8M?c>@$%(M7z_qTBoe4pDmGqK zRfRKW&Va|`AwNGKj~+epNAYsefL8ym?ytKE{6 zltkomxkDQOyYP5C(%jtaQe!roNnv3j2?z)v!^6W){Z~{}kc^BBw!LZ7CQ?>b#@a;nLHYM>(;HLy1JSW zLP%d<9|1smdwb`tYjALoL`FuE$;nAV2qB}Rqa-{$oLH?^kMx8PQd?Wg?q{)B>~bGe zR#p0|O4)kdP4e^Qu*=000vc69C{=FA|B+(9nSM=g%V{ zApto#Ie7p6J%Il{*IT}PIijPZ*}m7UTgS#c8GAP0zI}s_j}O+aT|4hSs;Q}g(P#vZ z#{-PfJTfOG^vhy?Y0#REosJL|Cm>L`FtpdU_iD{rzmNPNxF^L`Ft>z3tJ_ z(XiQU(ChV1F}vLkg+hT(pFV*Q!Y*xXZS1Mboqje9!yqgy48_I8=0Duh}HaKV!6BD7;YN6F?-Rf;N8`9I$(bLm| z-@kvOudff6FJH!*HER$X8w&uqaNzD)~#E}%*+Iz&&S!bXL0DzA&iq@<)EC@2W!<>gQ+mGJlX2LLoS zHp1WEA7Zf>5{U#65fNU`zs#n-z8)JlZbVX25@KRv(ACw2y?ghfs;UYpDJf3*JRT2H zsg%8Kccu67@qtVx!^x8;AruO+efxG;EEcF#Dy&$s0^{T3C@n2Te}6yLuV2s3sjXbO zlJmCAg(1Z8Heu!wJfSaDP~g@N^z8`>cc^(NoT28SaE6+P!Wn8F3TLQ!D4e0@p>W3K zt2aueaw+Se{G(_z8kaGb=5h6|4uvv<(+o3(;vsZ~nZg}v9tvluc_^Hr=Am%rKiW2- U7kwyhA^-pY07*qoM6N<$f-PZlw*UYD diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.map deleted file mode 100644 index e7394ad03..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.md5 deleted file mode 100644 index 629a81748..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.md5 +++ /dev/null @@ -1 +0,0 @@ -f161f3f640d27ec87610fe7e0258daa2 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_66.png deleted file mode 100644 index 14d655e7ba0a3c2a1320a8b6d109441f43648a04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmV-o1fBbdP)dFE6pQw3LtuQ2?LM7qQ;2R?h#tEka2$uay1F;}=ywi}q2}-yY7UQ~=J1%f zm}4*)Ff}z54=Kts;$n`+<3V$Cb3CN}TJ(B7W@cvMs!6vs9`h~RT47-!`uh4{GMONi zN-;k_kHW%2*zI;0jYhC63$0cQm&+B-sj8|1!!SrnN`hLg#=yV;o#@JT z4~xYDhGAeZ7`|H4-;h68SXdx$gx{sOxR^{%PKMhWjfN-`3gU9PNH7=-$K-N3+1%VD zcXxMWaBz^YEK6=~ZeC~wgF)i;dP!bh9&tLI?`p=9qf)8J-rgSZ`~AdXu@I?LN?KZ4 z$nEVdIXO8Y3Wb7j97hNtjf-Ij>^5xw)^}KA#W3@7qOMtrilA1PsHVv$HeY7fCagoQ#Z&@OzO+gw)hj zh{fU;u|OaI08p#dn46nJcXv1RdOez&ns9h{_=&5J58q}E!!WO6=jZ1y+Gl5HP%4$U zzP^UpY({^7Kd!E>5DJCha5xYQ1|w?5n)6YrtE;iTzK-49U6hxXqqMXX4-XGf^OBO{ zU&@4@)+Qz* zq@?icv=$2*jfTw5&c9-&roxC3^j+xP;+?9FKqG+rT^b1b^rhX07*qoM6N<$f - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.md5 deleted file mode 100644 index 6aec8ecfb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.md5 +++ /dev/null @@ -1 +0,0 @@ -2ba122d741860d8a73f208c9d30316bb \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_67.png deleted file mode 100644 index 5c3154f570ba2ed94a15eb2eb37c0865386d7de6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 878 zcmV-!1CjiRP)5fL8*f-O491mrCzWIZgsH=tx$?va1yMwWLQ6@sx=4pwG+-f(Lm=d@!jEmNrsSEv^PR(& z_szLM0tG<;WeW1!0)7z9n>s0HZx!-JBobL!S@|s~#naQ%GdnvgHUF8nWHNblbX0Ol z%5Z*u9*IQcnTpSY4i67YrAJAIhller<-FfCZ|X$zrcMg+*5BVhGczN_5JCu{PN!>Y zYYPU0ipnbr1?G*SC_xZXsno>81WA&2cX!3tR0PG=q)w-snwo+T-rnAdnU0Q*`T2RP z)mmFyySKOZ`ua*y6prJ1z20uO-{0Sh!!nr+MNvkhvA({3a&q$R?QLyst+TUJs?0D9 zilQvbepixW-Z+k1Utfn1S}YbRxxKx;yu6%Fr(G@=Ns{q+{Pgtn;o-q#GC7^jTrLLy z7#|ua%y-|x3ttpID#Ol zR7(C{9S(=VVBmQ^kx1lK>+9>QuCAtO+VA(fT&|j$ngS##dB5rP`nkEerKP28Hk;Rl zVc6i{pxf<^#bO-CU0hr^ozD07cMQYqcDvW>jYgv{FE1M#8#GM=01yNrNpf{{H53YY zz23s~D13MOd_Iojc6N3?ckS-(noOpFfq}-xMxW2;cDt*pssI3iK)`G^+ibR$mX^!Q z%ii8zalFUlIXgQu8jaoE-36*C;4Jx@{K#4IXVJW=6V01C(Y&dXFTUX&92}HhNAWy9 zJ~lTu%QIhi8yy`jl^%s52twY3g7*JSjcDG~NjZD_0HcV1Yj0z;VgLXD07*qoM6N<$ Ef>TSRDgXcg diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.map deleted file mode 100644 index 0bef81fa9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.md5 deleted file mode 100644 index dbc1c97ac..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.md5 +++ /dev/null @@ -1 +0,0 @@ -094d47bf89b4692d513b3c18447ea38c \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_68.png deleted file mode 100644 index 58a4979bb6bb0510e2adc6580570174fefcc2a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 zcmV-$29NoPP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1|>;EK~!jg?V4{$Q+*W2f4{OzZnw>q?nPU+IU^WUQbO&8MnkjN_M(_9 z5q)9w2ZpScVFd+(ffjT9hoxgA3!BS&(FWEMg9umDAXh}LO>KAOpOrIg3vIj4iyvI} zm`^?H*>eNEpI7I1?%DYrzV~qMy*~y?k^~I2u;fn{u!vx^rVmDI`e3xCkBsC+e}8{# zYwMpXW#J){$@F?XwftLO2ZO=ew{O#4(!#{;cK7%9Cwnq}46@tpbk(zvsi>%!<6-7C zeK1x+tta2%IPrB9zeH5d#+p^(ev z9z1w3kw~DhOP4N*#bP#_T~t)$@pzC^C=@9yK|ly2kqF9p`t)hJT+ZQe)~{dx z;K2hF6AFdO%gZ?&j#MhWeEBkjFdPn}OZV^JU%7JSwQJXghK8uV0RVjY@`j|CwYIh*yRWYgLO4A=jh0naRVPlIAW1S1 z2(a1gfq{WJc?1H1%jH6LFc<^?OioUsoCbpd`9FXD3;-Yq!sqh=0463TkiWOLms*BG zp*3sP%*@Q7sknOe>S#1dlH|z92mrw6^ZimB3bk6TR;!aeX`9#M)ai5tK~Sl3a&nNdeED(~i^XQM zsbwq{0|1D{;?B;_5OC=J?e-SEeGbAS`r@g)1@AsR{<~f%*9FA72 z6^TSoo;(>F8>_6WJagvE$B!QqiGtf-NF=yiE{0)lx7%nm zrnH62mmH#HE&1Q>4A`*#Y_wL>3Kn}w&lgXq| zD3Zf443o>{=;hC9wQkt3p{%SdFE8)Kix)d~>`19{0DkM)xWI5aoje{d?P-5}HqLW? zy%@0BY#A9DJ9q931Og2W4g2=(qhZrUdLB|zQewB;*REZwR4V0ixxrwdVbew0*Q-{o zx^?Ro&6_ULzWyUHTGI!kHGMEz)5ko|#;&d|`s-MD5CkC<3X?taXsyv`=&EOdqgJbv umyl%se@z$6yrvIEYx-ccrVmDI`uGcWk&qO=0p^te0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.md5 deleted file mode 100644 index 981db6a0f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.md5 +++ /dev/null @@ -1 +0,0 @@ -1128a9ede24483b544d298f3c8250127 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_69.png deleted file mode 100644 index c395848de68909139d5443ecb8902758de75d269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmV;U1zh@xP)BSCCFLv-*1aWb3{r&xn+qZAuva_?rVzHl}pG+p3ot<@0 z%9o>|p#ehJ+uQ5jux_X?wOWl3+TY)=sHi9@DOp)r!S>9|OrcP?yu56&STq_@kvilA0Hpb zo>^I05JDc07ZDNB(9pnqPo%qm8skM+AP9ma$@lNyGj^3qwY;4e$H%v}w&F1^ z7OT~Y5F$ykxVRW0+8?Y&#_%1k-UBT)@U^D@9!5C73JmS zeg6Cz0HD+99zJ|16bd1PYPH&GwKAc^Vlf_gdwT-_j*pK40M*si!^6Yhzkk>1bbLNv zE|&uUXqx8p`BJGA`$tDdVFDSvD=YKz@&W*ahK8PG}CN zF3jJ?o%b(aU*EdAy2i%FlarIp%}u#nJ~K0OaByI=*(i!yUtdp3N;*D1b~>H6Z{H>e zLa*1iwY6O)a&>ieOH0fA{QT3WPq8I3GBPD4g(S)C?QNQ-pFe*tlgWaDf+i*=001#D zG0eLuDJcen!C)|ig@t8hWtEqgfBpK^X0vs6c8-mWvE8Ga@2k(AJ+s^G-QC?1iKMEk zs=2v2Dk>^0EUdG$v%9PFB!nX - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.md5 deleted file mode 100644 index 037eb16f9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.md5 +++ /dev/null @@ -1 +0,0 @@ -36f5f59f4231d6f119c0c9c728ed536f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_7.png deleted file mode 100644 index 1c1b2b817c3df1ab2459830a0c24ec7242a3562a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1726 zcmV;v20{6WP)fTWFUmpKgn7}iK{@ESPdoDq@o#u1u_dZ!9^GmmSJsko5Ox=(}d={?;nTu?p@pb zG1K?G@BRFB&$I72_j&f+`LSJvIF197|2~wZPJm=#AdMslq>%)HG?E}t!y9I^`NoYK zOO*=AoT#a($;rtHHUBXq?RI-dN5`V4L^5YOIy&rjdw7KUyU1WLELJ`w^8`W|5h3?T zfqC#pqAr_1e*Du~^5CAOHIGD*&LZtjub)o;Yy=LYSSM4Svo02pIst=kqC* zNza^=c1XU?E9V~G=CVfM(QM~{w-j0_GA0suNYJ8>Kj1Og8qKD>AD-u?UcWA$>o z-TC?XX=!Oso;+ExV#V(Qold7#tKDvQd3m{9E}#9QQNr^Y-}toEk)Pcw{O>Kwdh(X6rMkSp3mp2)#`A4gy#D7>*yMNW*rVkNNF@0lai96 zrl-+pR;^k!G&F>oe!qX$u3f0ub?er>efu_|3a{5&U0uy!Fx+l8x-VKta2)^m@go3W zcz75!-@JJP0B|~;IF5&mj3fK}`7;3E!-o&y>BSi{y!`k80Q7o&cw}K_B>LSiH8m9g zU@#cAZrw_!(;NXd-rZ8lj(Fi{eHhvsob$+htugqFEutcLI~5+()#-P9zTA}VzE%1%jJgZ zqEe|m9uGA)Y}gPgHlqBfvQM8rB_$<=GMUqub7f(SY-?*7JmEoZ9#GX09?L&S*23-^z>}mvIRxP#>V>k`V1WTL{rU4J+6%$2!_N5lxW!_TNFzzEj~5IE(G;9foM7z<85sx!1_uXgYio5nokpX95Kc}`PESv#q@*M#CtEC*hK7b% zeW_GxTU*Q zuUD(pc6N5g88Z>)X(U>d7z~C~Ds?)YX0!Rgfdc>l9*=kR>Q$LchGAGuP0hiB2jktF zLeXlq5{V=)FE7>#{5#Ff%@D%9d-n!|LG(p%Y;0_Nd|ahc*=)A-^mG(lwrm;F8;!;< zU%qVIxRJ$T>2x}S!GKn?S)$kL>2&($&6~wyF^9v^>2xSwTU*=J)kUMx(5W?+thKc@ zD=Vw0s7N3XSgqEAf`T~Wgb3d-XL;BmS#rQ1I_!`vIi!&Ufi#jJkVX;&(nx|p8c7gH zBMCy3KZktq;KAbOL6RU*j4UlJUHm*q5(MJp|3?x6a*rekq>%)HG?E~YMiPX-0DsP` U0!C_f$^ZZW07*qoM6N<$g1kgcyZ`_I diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.map deleted file mode 100644 index 2416b8ea9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.md5 deleted file mode 100644 index 569a1d5be..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.md5 +++ /dev/null @@ -1 +0,0 @@ -091acded027244d4f3129e0f10946f38 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_70.png deleted file mode 100644 index c39529cd3c9fd578b82c90443be7fb0ba8cbf687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 925 zcmV;O17iG%P)rfbm&r$KGkq`&FSS%%j#X%jqh^Wv-3yDyObTSmd zNlQiQpy1#j2%>`ErYJ=ztvcx->flyU5d4{Hj6aQ7+vp%QMJ3H04wPQ6-U~6-Yujf! z-`kUq_iav2+5{?!0&;+Y?>3Mj@;S4MT*+CKUIc@|si~>&vZ5`Gjg12X1F7=2^BE3@ zS65dvZb^Ig_V$9oV7gND=cJXDl}!2hDmptm-zd3qedcp!7e6UyBocuTilV6E*q@a1 zGpNbg-rnBd-=7*o2qAFMWtYK~^> zR;SbT_Vz*uPfkvdGBYz{GMO+8Yi@2nJUm2VJRWzu-A1F4AP9=0uCA_--q6r6GBRSd zT5%k&sj1o8+Cuv6?JY%7IF8rW)~>CsskWzCPDzqxXJ;XV7K;S{5DJAn9?#O!(*6DY z#KeTp=R?z2mOVQ=+uhy0zP>h_&33yznM|UOyk774_;@4|VOh4Ts|)=xb~qfRrKKFl zt*@^yE-tF~r=;Qc``;+<($?07)+!pOS``-;Z)|KJo#%NB!;X)S(+>=X!vKJrn;TTh zvW(+6np0n2KRG#x^oNHB0DvF}9LE6w?(Xi8zO%Cf0Eoq6|8&SO48t(#ie}emG#aI8 zdUSMDmSq5d$z<~Re1n677K^33yZh+q2mo+#aRC6Rs;WX;S7Bk{bV^)wg^Pft(LXcUz^&#Shl<^7W&2#?1zHa7P1^0K|XJv=hGNl_Hbvg)0w*oXdqzGNTz5#)1b7x|poMLuVC@y>J2Kp>ELAKD@ag27-& zSKi6#a5ysM=L=yNCcT78{{3e*k - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.md5 deleted file mode 100644 index 655ca8cf2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.md5 +++ /dev/null @@ -1 +0,0 @@ -6be102575488e73fd84b8d956f0802b7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_71.png deleted file mode 100644 index 8021f07714f8fd58a6da9d8ead5a398d4d4d8331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1459 zcmV;k1x)&hP)L7Q5UyZRN)h5shfof5=3gnK5fve;KN4X|q%1YBg))*Ab0G7c_m7wE``)&h zQk(aEy&t%+=XuV#&)NCzx##}aWkf{KPy>B&n;n71KWJj82u%zXp^2d);(zXNxm;*z zY1xcewiJDReIb1zD`ReM4v!x{j!8gU5m6K)<~L+z{2-ii8o!Uz=|p*XdDtBe?p(0c(hQ(q*cX#(@hY?d$E5=sjkBD*V)G1uKaz)W*jDazR#Kc4#I&=sQheP2r zIXQ{4vN9M92I%#A6crWW_3PJvBAnlb=Xo&3@bKZon9duum0`2lKt%9*y|{Gg5-wi6 zi1G1pdHnS0(@086!szHIK7IOxy1F_vH#bKsoOL5f66|(6s;a6W2trKfj{0FLF)iUi`}Xa_@bIua zR$N>R#u(z_;*gn{37+Ti@23G4iv{)d^~lf9M{;s9dU|?bu~=~9#tj@jdK4VTAvZS{ zBO@bC!&e!6$>9>vGU)8ynN5fMp}M0@w{rL$+xlFQ|yKp+sZPqW!fMx&A5 zzI{u6zn^%XCxgL2k|ZhYg25n-j*e1JP7XO74u${j-MeXIWQ2mjpxmd|>*>Xd7v%H# zsJXeBIF6&m#YNfg%$YOv=+Pr0BI0?TYHMp1^OcsCQeIvjO-xMC($W$Mf(0&3tR+U&YsTW@B1%e1(Ae0B)zwvbJUu-f_wV1w)YKHb zUN0_OxPbHL&*SCGm$Hq)V30p2BqRU;0)YU4zi-#%=H?6Pc*jjMUUr zbar;aCbC?T;TnA|oRMk|d$Cvl9~&6Cfgad-m)Z9z1ve05F+MSY2I($KzS=*WVB^xz5J`3!|BlC>kGfCC2(DD00NI|jGg4Y%73 zqtS@s;$l=*R^t8p_wf0A=;-Lcz`(%9lM;rQUG&w~)?#^i8C_jnNKa2kO-&7M-n@zI z>}(i~Ms##^psTA3Cr+IB<-SZN6K>tQg^G#_a2$uax;mUYcWzyAT)uo6_4V~gOG|^p z;lSYFAW~CPAqWDBii$$)bvhji3JT=Y-0tpf96Wdsg@uL4%F4pKckgig`0zv{`IQ0oT|#niwh~;*-ArBV%J@n;pWMXe&cSXkw@cO$-&GiJ>AQ7I3H2 z8Ou1f3@(=|;#fp6BK@~VBYH3*?fndupuL}=CNwcrgeHcH(8N#?e*rY?XTOI$Q8fSn N002ovPDHLkV1l*{x~l*H diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.map deleted file mode 100644 index 567ca90a3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.md5 deleted file mode 100644 index a60a6f7ec..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.md5 +++ /dev/null @@ -1 +0,0 @@ -513e53cdbd67e1c3be296e616b5088fe \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_72.png deleted file mode 100644 index 0b8afa3a54998330c4c48e926a2594d03eaa52b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1014 zcmVp%d}4trgS?rFE!_E>#?~RE;`F7K;`sruT;MLS9>ao(A>7{ieJB z9e4lyxw~Ey03jqW@8;Kc8~D$_d7**xLIdZ8Muxl+3eH&!oAzd1Pcns{XaU zIF8%e+WK-!KbOP9!(cEdS29vNZEkLUm7kwZcXxM^g3m8Ba9(KOywLdOyqcPt7>4;? z4@ltkg~mtn((Cm@Lqk#-0000`tJO6%HS6o^&(F^w9T^#Eev9P{4i2X6`I_$c`}KN# zc6N4QVd22QKr|Yax7zJ?0Kn?%>IWY14HQ^kHk%DX$n(6}Z0_yty|}o5f9UG!GMP+b z`Q_#1?Q!Pk=OKh{xBH#C-EJQp9pyM~Z*MOU2w1IFsVR|2uq;t|Mc|q$r-&~Z+m-tR#ui)t2LX=2L}gI)9&uB zMx$9=T#Q5_CnqNgdQdE{SS+@%umAvPXlO{=p{J+k`1p8xdpi<|)YsShd_JY7CJ4gs z_t)0eN>!SshlhtrlC)SX%gf73dVn%EHa3!!wCHp?aSw`RX(*B;Jsyv|r?elhuC54z zI6ps68mh6e(dl%`6}Q{1QmIlWeNBfD&d$ziG#cp~xV^nCE-sG8;}Alg=L-r7VzJm8 z9^QbWD2k%wiel&2{r$bcV3?Sg5CkE$&*kN%N~Nl(sQCPJNzBd7O-@ek@9#^4vnkKHnp|1v{Vp;a5${gbRyH!(+-Ej=kwLo z)rm?Xkzg3+^z>9(5niuX+>(lTQ1bqjlan(xHa0ai6_3Z0no3GaIy*c2`ufh!&K@2f zoKC05@VLZOf%9u&T>TCLVtEVi<; zlG?PkwpLwTt<&ks%gc|Bj#^t=lR7XA0{}1>41yqt7cQRXU(+8S9~}X^cX%$B>+5~|Om1#&ii(QlN}9ZkM&noc`46BdN?rx{Hje~8 kztF&Wp@H*41LuXtZ$YMQX$d~A;{X5v07*qoM6N<$g7#MO?f?J) diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.map deleted file mode 100644 index 6ae9599f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.md5 deleted file mode 100644 index f0a776686..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.md5 +++ /dev/null @@ -1 +0,0 @@ -8471ff9724fd94eebfb75bb00740fff9 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_73.png deleted file mode 100644 index cf3513fb767322cd0b73bead9e85ebdfb14172b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1212 zcmV;t1Vj6YP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1aV13K~!jg?U_wTDqS4LXDYnZLM+OKS(YubpppuzML})M&_FU=DUy9G zM675N(IP5nQSFK>B@kU?Efe}!REtoET4W!TnU-TjNs!g_K{|IayfUv}+-}3U_w}9M z>dZ6eoOyUW{O8OO#xM+`07A;2Ht;`!${HM0*5IJB21gq4!e+BgPf!0TE6GP)U0r{F zfB5oW>)Pw}uB@y8x0IaN?RJ~ZMpV+GJ1s9SgYuKiw70iMC{(=$2bDEAsI0;9muAi9 z^Gzlbn6b6BwR*k&_n!47{?e?!3b4Gs!|!C>+}zyT+Z%4fFbuU2A7&aP>WKD=e!n)RKwHSu^{r;}5E`>sIadCnDLt9&$ zN~OZvpP!%Ke-;2jp^(8~P^nZposQg@Nvk0l85wG|8irwq!x6K?^YgP-tL1Pw3+yX4I;3TdqUg-b3=G57)zvXO zC=?2()49F9eSLk+N5tyZ_&T~$@JwY7!!HyVu-6BD<$w+e+q zE|-VT+2iR%=H})`M@JC^k;!B&EiL!=_X!L{pwsF4`ub=znp&-%pPvuw@qB&(jKI>; zQiKu{fk1%Q4ZIzmibkWYuC5Y$hHHq|>xCf5=kwuuFc_rM>4%4h_~LRpoe__ysHm8l zn!?);4-XIoAqbK{uc@h7SXc;;9UL4CPgPPf-NUPU(cXwj3cw}TG7z{@Dal73R1m))D;_u1S)YL#A;PH4o9#3j& zYEe;9^bjVKi8s>I(;*0YeSJ-=6X9~X#5RH;@eD)^G#CtCua`!n!7!Yioqcn2gRj2? zK7Sq3YDi8_j$W^Kxm*T=A^I+d!%0a=@%#P6-&rgc7Zel(gF%-ERS$Kei}o11tUA;l+|`)dY+F)%PNK0f~O@ey$=KR>^FML+gwwEoy^V6?dj7B4m#}f*LOeRyK(I}P5 zA3uIT5M(l$%F4 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.md5 deleted file mode 100644 index 8d243e0ac..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.md5 +++ /dev/null @@ -1 +0,0 @@ -8496a1131f5933bedde7a327a5d4457d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_74.png deleted file mode 100644 index 437f5dcc4db1fa1df22fd5d89ec6bde26e9db351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmV+;1l;?HP)R&+44# zJbr!n&N{${zvd$Fz{Y5@Ln(o*^^Kxw6?ZZt5T}Zz`(%b;vzl$ z$G#v4;^5$*>Lt~N^YimiD8!BkzbEbQ?^mmyS~4~^_9epi3kKc`2Hpz>-U|la3x?nE zVt9CXetw=FLkJ;+B9Ta=(d_Q-etdjDE`&mkch>K*va$jp^!xpl5=2yBU%1_FilQ=^ z%*@P;&1Q>6qts7EM@JnF2O1X&g+Ko;06?i!^7(uYhr{FXR78-bVrN7o5;>ht2w^xJ z=1h2ddvm+p3WY)}78{Mmr>7?r&*gG%x4WyWtEs7Jc6Rpt{T%?1PNyd)CnXX|TU*=I z)YR+iE3I>UeB9jJys@!?+9>o!$Ta$wOZ}z=_vqUe0)5c&EDMHTwY!h1YxyWX&sNpv#_v$ zVVKkD+}zxxL9qw~0$(DW==FMZF3^~k!Z0it46-xnGeQsq03ex6qIj`bY;0`2 zy}d=dBNB5Z{>zeFE*}{gvD@vBkB=ltUR+$5&F0U~Pq|!fG#aO;rym|3vf1p`)>beW zRH;-tozCfWzP!8;1Ti-^XD}Gr+uM(hjsO6?y}h)oPNxfp!{Kn4Q>WbeD}2{-xm+Yk zZf|dYU-J9?YPH&6Fi0d4m&;|h+w1G=0RTHYJAHk9dc9tyQe9nL4GsTR2!|IF6BE^{r^Z+;7WNcU{Qob0!uJaX-U|la d3kKc`h9B{;TY|t#CO!ZF002ovPDHLkV1k2R`b+=- diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.map deleted file mode 100644 index 1e5460815..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.md5 deleted file mode 100644 index 94cb1522b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.md5 +++ /dev/null @@ -1 +0,0 @@ -a935188f62a719f63a835716ebeb0681 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_75.png deleted file mode 100644 index c3582874cd84a8870abfbf6abe950f53d3526cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmV-r1DgDaP)2uM+!GTbEgkW-V@&9j$dA0 z*59+C@HV#*1aZ6F5W8`?=lM*XQ^92L}h0N~OtUIz2rN zg+dyQrlX@{W@hH??Tsm`R;xarPp8wVRI2gu@j{`%4qsSU7#bRCYio-{B0rVNn`erm zHa0dOgcgeh01$~p%w}^q9HwcSB+1Y9(P(sSZSD5<7DdsKk&&ybt8_Yjc6N4ha&mNZ z#MIz8esgmZkH?F}qS0uy*=+3T*xK4!US7VxzjrtsKb6XZ=k@h<2%$ou2m}Jh$HxYP z;X9*dXJ^f3vr?(ValBfsuCA_jc6J&JhT-AiR4N4kD3{C8Xp|rbydYCm*E|)(%Jmm9vrcA5V)-0H}xvf^K34+LGvzwcne_PAyYOd4iWHMQ$QlU9m ztyX3)gs|q$d_JF5Dpep5SXx?oetrf3ba!{B)9II&m)g2%wc3e^38&L}eSJ+)R5F>g z*=$cwPxb5M`JKe;^->fS4u=5%^YinuSgf_Rm07oIU}tB?Xf%$EjdgW(dA(kz)7jkI z%!5kq%-P%9`;hq$z%UHMFm6VA-xddwXK^5T76)SV{KdE4{r!F6bu^B0xvbG>xS20J v+wFFt^auooVcZbX(*I{MAbA!CV)Xn6g*f?OQWOn400000NkvXXu0mjfTlc9r diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.map deleted file mode 100644 index 543dea86a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.md5 deleted file mode 100644 index 280ca8256..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.md5 +++ /dev/null @@ -1 +0,0 @@ -0bd47951338d799baa7faad737d93c2f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_76.png deleted file mode 100644 index aa25f7705a00fcff9d0edad30a57c5ccaea77fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1428 zcmV;F1#9|=P)E9S}3AoLi2?a_NFZwp@L(< z7B~%Jm?Z|8AcPwEuaRJFxe<=7F_qp_u<}j5u!clbOU0ZnJoCQ=A{;~K&VBK4$L_X! zuXjGzGS27K@A;nJ^XGhd{_QYG(==efN6OD0!0!fQC}tQ#F~b;&8CG=R?c2Ba?%n%Y zLph{0G&GcylthYunV}>}4i66>_>c}U!^6WQNk%KI_@tqsp@SOFp$9@3qcD3YW*9>; z!x)O0U)0dT!a|3`vHzTd=NC2f?~uu4R;%@AkK&(5#!#hFdF|S@NDLu_5VG0q{QP{U z)A{4a510rRE5VK8zvA_JYiert(?VNY8-&nqx5wz?gwvnix<<=(~loNe(BPs z@87>8y|=elB9Ww~rk0kLzJLEdl0Q8?txzbqT<)n;r(V5!g~XU8KRG#BT3X8Ga*K+J z#>U2wc>er(2w_S}ibNu5Yio=CKKb(H%VWomJ$UdS5D0w!{27TfO<%ckrMkMhySw}3 z$&+k0J1;Nq&Ye3|RaHs&fXz^fqWb#!AcV!m#R(Its;V|NHa>j#@b29^k|cFH9RT3V zmoJTtjSh$7+qZ9BU0p7hE0S-w+wb1JyS%)t*XwmUUBd6SX0y4qwKW(FYBZX2=gzII ztpNa@KYvcs^v=%C)2B}d1_q+rv{)?HuU{t!!e}%;dh`g1Q&Ur4zkb#0^>~b+qj0<3 zF-k(to;{0}If^4q5d?u=CVt7!&dve=0)YV1(JWqET%4PmOHEDv^yyPf7X<|cJv}`r zMsqnB4AL}x=FFM?{{Bc#Q&UrNLx>guXmt-gKx_U`U(d=5#HEEY>F7NcTTRu&Q^ z5{b*@x^d%1adB~Vb@j)OA0t)L)6-FKRTVll2OEzWyrT3T9TV`F=J`}X#B%p<8( zDwoTRM&r`b5=oL*uU=KDR3}cH7#SJ4b?cVj@88+k+1=gU+S&?-!+Y=1Y&MUMj&5#l zc6WCNgTeCha?}Ek$0G>B>-CyUCY0&%cmM#oxw(Sy@_I zno6ZQdi1EtWEvbCB7wLBhAtyU*vLG*^Y$3uxB0{A}; zC5C7iLove`iW$aG%rJ&xhA|W~jG>rG@XXIjP|PrfV&)G)$UJHe?|py(0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.md5 deleted file mode 100644 index d0ab420f8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.md5 +++ /dev/null @@ -1 +0,0 @@ -348277614e9120585fe32ac0d7a59eb3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_77.png deleted file mode 100644 index 41ba00ce8d96e8bf270e49ba8008c1049ab59a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 zcmV;r1x5OaP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1#d}2K~!jg?U`>#Q(YX#&#`eSx0Z@2{+Vn}2n7G2f<-uWZ)`B%<=~o93GgEQ4MuVxq1HYHrq@PUjSjoS|;#d2x6y_sOdd zd!9YF2fLqFzw^7_dwxH@oSl2_9YhEL4ps>J)eZbca9*}KA4=G?CR?J zRjr&nE?v4*S64?3|FW)0k{lTsVZEi3$<)-;;11A_>H{&<@^(`uUxrOQ&U655JCuHczAev zdiv9+Pk;RQ0h!?O7|uNZPnw&XA%p`11EHNZ1nXL_*CT|yUhja;uBxgs8jYcyIb?fCczC!@r-KmMY&J$gW@ct%V`D)1D;tJSAZpSIiW zFJ8QO{P;2blF?|at*s>pLZ{R9_V!YF##+IFXjm+kpE8UT6&2xq1IN@<1VLa28TXKk zj10Vf5A)!`1GQRB$vQhbag3Lw%jI%79DF{1VPS!O*OxC}005sqf2JoF7Z(8lPNx$O z@sDg}Wd$LWo15F$*M|_Y+wA~=wY4>@dGqEC0APK69U-*5yetxl_V)G=LSC;oK0e;( z^Bq;|cvLEtN~NM_LbhLfJf7m>;-;o1zu$k9GASvEiid}Xv$C=T0s(|juh+X=F6vTD zObiaroH+vk*xlWgNF+l;Lk$fLIXO9%m6h}J^8kRQrKMA+PD!OwdI^#wc|4w2EXKo> zloXt#Yg{fDpU#`udiZmc6~bcbUK~e?Iua`_U+pWg(5C4jy{`ID!qL9a&>j} z`ue)V;ka|>4$hB{j{^WwQ&TCWOeVA0Y&M&Xu~xADg!ohb#g{QQWB2!%os85wCX7_3&SKp+4B3=R&arKJ@W6(uJpzkBzt zu&@vSV6j*P0zrCudUkepLP7%LG1+3VeE ztQ8ax(f&ubTCMmQ73?e=hr!=e=^v=McXamPyk-y1Yxdy0W)IG5_Tao`56)}$VEBG- zwOZNltbN~PV diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.map deleted file mode 100644 index 73d6c2f9d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.md5 deleted file mode 100644 index bf09ae4c3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.md5 +++ /dev/null @@ -1 +0,0 @@ -e2cd65da5815253bc9bf312036b6aaa3 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_78.png deleted file mode 100644 index e34bb58b381862d407a4d55be92445d14af5c1bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1328 zcmV-01<(44P)$LwW@bJ;r7yjuFaR(e(86XXW!H!7$7zLY|2TAWcL7X(9qh6A?g~ zhyZs?%*n}VY;3f*F$}{n%-7d9K0bb8V&d`f5ql2`<(-$nTew{A=;){$Sve+SXK85( z0H9K-ghC;M!SMI@=kxjN>+4Q>DwUd=n!2{O=H9#rR-#lYB?!V~GS$@7h{fXL<7474 z3JMCUtE*xA<>lq$bNym6cCxav006nUxqg0rdwY9&y}qfbsk^(|NpCP1I2=xXe!kIY zbYoIv+u7IGS0a&M7M*N~KOtP8yBI($Z1}gAo)IR9;?weSHl8 zC@Cq~-QBIMti&)ZIXM{saDRUke}8{xX9ve|kw^ppn4FyCa5!?goFE9LQV9SMi^XcS zdUbVGuh+-M#tMbP*Vk77fJh|T+uK`MSkP*<91dq?WyRH`3f5((^YinLO2_S-kdV;P(E-~UjRpXq)oNiEF5a`V zGlC%OCK3bzzg-y&2H3UPY&06};NSqRN3~l0HZiB_uCA^Kf;c@rl}IGf(a~OBUMVRl zv$L~Kg_zCehK2?zm3nb;@ze4F01Ab|F@o$&G#ZTpfuOy;-Db17QnFYq*uZg|LZPtP zY}k#Cj)p-ey;iFQ05F+Mc>H^MdRiqoSf*C1WQbAOMcg*Vm_3t4$_T zSy@?OVd3iPD%AJ(_F@kJDE zdwF@$>-DgEe0&Up000k2yg+NeBx^{MfFqueVyQa=HAcN`*q<=jRt6 zAJ5@%m`vu_*cgnrwze)VF8cWRz}tCjY%Df5me1!i7>xS*`ihDQZ*Ok^!1(xhTwENF z$BT@N+}+*H$jE>nhuhQ6=;$bu$*ilZlgVUJQBf=wYjAK-E|BBg$}e6l|8u~< zaj}q)CL(||5dox$2p~;F0BIruND~q8&JU$iQ&XRx$Cu_E6N`(BKR=Hz4MvdvPy8_C mnTP<=LpR0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.md5 deleted file mode 100644 index f6573b988..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.md5 +++ /dev/null @@ -1 +0,0 @@ -f02ee702180abfea6eff7f51f30f20d5 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_79.png deleted file mode 100644 index f59f15ed49dea038eb227eea9dcd53d5f46f981d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1154 zcmV-|1bzF7P)V@8*WTxumwWGCkLT_8IlAs^ z*YCcs>)ZWrHy{XtLh@-Mes=V-yBV8dWA$mR0imCE;|prAl1mHL~1 zn_o7YZDnQU%TxNk7>!1Q!4T+)`ZY+a)qYhz-<_J8nx8!6{)Gmq7aF8qXpnlLLF$D@ zD0-Ebmv?k@_-z0H0DwxRW@ctCEG)ddyntXtMFlyF|085F8315zZZ7OShhct6Bocxk zoK9zRb8};3GYPC797XnCjx;001y!o!R2ygGFjlO)XvUMQc}|7^$tnBRU?C9ude}8{tV`Fu76~=6CZW09X`ue)Iwl+IEySTXM|6HL^bar-P7}nO- zHZ?Wn_ct^&93CESZEaaBmfYN2yQNzV^&rc zoCpvmld03`pl!3+C=|;5{XGnm%jM9o*XscQPft&N?2Nl9_L-2_2ctyT(!a(;gPVReBBg+ifF80ZPx{^f8uDl04d`}=)9-+Pg4 zHv2OjG8hbKL`O$csnpomSbx*w@jzRv)#l{n&}cLOfJ7p(+wIV=QmJe<8-`&3faK)l z>+5Sc2`(=$BO@cz)6+vP6B4%d$Y3y(N~PIsR;g6)#Q*^Oc1%o+zj%kkfi%|L-JM7z z>g(&fxw*k{d~|da9ws=BE0xNVlN0}R(CKt=Npd(GpU-DDn?tEBfNIvv9>qtQ4zItu;U+uIZhg~#LhBa4cP zOeT}bWMZ?~0)e2Zsp<6e^x@%QdU|?ua}#M$NSN=d?d|Puw_B}Ne;7G5G~{$TnM|fY zAgHRULK=m`;S3KCi$tRM_;{&Q>i=A!P*hY@1V&;QR$5vLFBbFj^BEZ#d_F%dE$!go zproV(X;26t0#0I$Mgup_5IXu_0^f52AGpZ>LuinCp+V|}2B{Ysq+V!{dZ9t;g+`D! zJdH;4^?7_x>~=eg#R~KU(W|z$_N(&w0}u*@flWZ(=8+)xFEmKK&>;0fgVYO+AFu&r Uz#O(f#{d8T07*qoM6N<$f`7X$#sB~S diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.map deleted file mode 100644 index cdf33fab1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.md5 deleted file mode 100644 index 1e7de2378..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.md5 +++ /dev/null @@ -1 +0,0 @@ -2ca776d3230d9f626fca801bc9e3db7d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_8.png deleted file mode 100644 index 7a2bdf4985a850d91d8c731b0a62ff3d8dcb2b44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1647 zcmV-#29WuQP)N zW)w!z)WrfJq~0WJ73H6L5lpO>l1s5@ieQ1vf-RU9^&%|8^7>~`|g~3+;xa$S>XBaBUtVPc)|m3BuC(l|o-V(gozJ2@MyLT7V<&Uz+6{*wdSe9iNroFvgEEcDwr9FD| zD7={k;?}KOEX!K0*10cfwOaOX&YnGsgB2AO=gys@X}Y7MqpPc{q@={BilLz)ilTCI zaz;l-m!^b2K}cI`WMpJgQqr|+*9r>@OG--c6S3^c;52z@;!U@kR;jI*f=^mdie0+*x1;(xVU4-j(z*~4FK}<^Sisd zj~_pd5K2u=1pvP?02mt^)9G|FnQYanRi{p!!es^$heCMnkw=ak85$bu?d=7C*49>* zW!-LfOH0eWd-onZco3+U%jMd=dv|<%{F5h7R<2w*S70`qjYgx(xdNNbrcfy6EvK%o&R{V7`0*n@KR-7&mtmOKuU|WzPMW4Q8Vvw6 zHa1ceb?43FMcdYisN8@24oLv$HdZI3!pvEEbDT#4lM{S$I?O z@c#XK0C@4@g^#kjx;if}4`1)tvBP9C;p;71wwynIUM7-ZXfW(Nlc zJxZ(98W9mOH#fK2?Q}X73Pny%j?YUqH8rbOukP#X^QnSin9|Zxk|bR&7oHbyBrMB* z{P+<7`uqEF^X=QW05Ci}%(AS<$RM)MpFab@hYugT(+D!Aclp5q0E@-q9SP5h#NYd^ zS+fQJnwpxnZQB+d9gPsu>2!mGgMPcz)zz(7u|liW1{pRsHWpt9g+c(Bnwpw76M`Tp zimIxrvRbX<{5UQy4#y=DiKi}t zAf!?$Zf@MT(NnBX`F>@eK7ERai142A_s3i);W4tIp<&&+b%}|IU%q@PC@8pi@#4tH z$n5NFWo6~`^t9hDMx!w$B_%U6^ZWPjVaXu~moHy77z~}Aom;nV^^W5eIWaNea5$7o zr6=zBCUgDz_0!YS0|NuN+1J;Hg8(29{PWfYl1Zh~nVA{91m_ipSYt>=y4~*H-rlmZ zGPBuSQ&WQwnwpxLot=$|iHVGibT}N9m6d_|5(LrE(6DLKri_e?upAfFYIRRf&*bFf zt5>h|di}nA`$&=mfb#P4+qZ9bb#)~tCognNxm=!}p03quM@B|ynl3FZ-Me?MSS$tr zu~_`(%^UnN4J4CDB-z>7Cr+Gr_wF6TFea0!wY4?Kn4z#pBk`t0lB7zd8Xg|D+wE$# z8UUnH>D8-O3knKEB9UINKXm9&u(<^SlgXr1D$~=`1MR?bsjaO=2pu?ZU}k0p{~`GG z>sJ6MDk{=ywQJX|RjbvzcI~=<|2_arOiUOIhJk^B#Kc4_j*5y}P^A`&B|18K^XAPI zMI|I8n9XJ!FDol+Z*Lb0h4|DONLF88pOTW2m6auz%e%X~Gcq!Qh(p5rhWVR^9iC+e z{?K8EXW8M6 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.md5 deleted file mode 100644 index efe4879d6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.md5 +++ /dev/null @@ -1 +0,0 @@ -40c25360d6e911f460499817a1f66d2f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_80.png deleted file mode 100644 index ff087624b598e18b2be1e0ae889690e7f0166afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1310 zcmV+(1>yRMP) z@B2Le_ha79KnQ{WlK&0mS10hBLFz>eQZHhVdJ!WUf3vZ%F*G#vt5W%%6c-nFc6MU7 z|CwKYzkhyy{>xMPzSwNGjg1YwCHke)+}zw(<@4RCsi}EpA@?t0ka`h=)QcE@h+bSS zSFhK9K}UaxUSGyX^b!aJ?d|Q@H3UHr1kq?THk&;)HHF%%s;Xo%*|Wg%^76K}HbQ-I zIGpkE@ed@~-`@{GkjZ5FKE6mN~ z@vN_}x3;!^zQ>;u4u=f}LvwSpMx%*r%Mn|TG#X8*R6-Esa=8Ei0)c?ZWKK>_Vh&oZ zmdoX`+3effTeVu9nVCta(?ufD@$oV0Ffua2VzFXlV@pa(91aHnpsudYZnrl!HbM}@ z<#GW4Z^b@id3iZ8F>!2c%2LJ>D0n{fH3dP6AJDtv>qodf^Sf|tZtS?M21VP@4MG&N@s7R;NVg073rw4;U zbeBj;Nr7P)K@fB@dOV(=7KkC0N~KaM-V(9>>-_v&EEf0m^@Tzq)Si-(Qc+QX4zE_L zt*@`A(P&<;7XXl&nu6thRy?@&leRHm6Mb6nPMZh9+^z0UavnqJTw>#m{Fln%+AhkZ*Q-z zuA+-EGc%JypWN zJzdH$l)>0Mo20|NuWU=X$N`FsY0QC(eKTwI)=pAP`Y z$jGRytZZm#aJ$_w3~z01NhFeohliDwmEPXogM)*|$H!18bbo)3ZcNF^$xf&9>FMd6 zSbPpvs}%r{mzRfGN=r*!E|<&Y%E-tNi9}6JP5b-%*VorNoo-=afoP2pKCh}&Dj0^1 zM&sYDQz&w|-0St?j}a!5DK|G)C=@0oC8<=ZhK7b8KYo;zmC@;Rp-`BRkT5(vY_VA4 z;^F`RJv}{3OG_~^G3fL0)mVH28jVIM6yhyZDwW6Mp$7}I*<4Uiz~}R`v$O4XdwF>| z(E=d^_kGA>vDDVqBIFmNe?Z^o;9qc&|A&Y{>O~AvFJh2-5rfo=7^GgrAoU`~E8o*B z7R%S?@jW>`JxxnX!&_d_tG2fGtMd5`kV>WaTZlZ(6N22oh(YQ_3{o#*ka`j0F9m(p UF!s_?C;$Ke07*qoM6N<$f_~U$AOHXW diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.map deleted file mode 100644 index 1b2f67bc4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.md5 deleted file mode 100644 index 215670534..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.md5 +++ /dev/null @@ -1 +0,0 @@ -2bde18bd04140ab070f8debabb4e2b8e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_81.png deleted file mode 100644 index 81272ca183d85a86b6bcafe38eca62a91c09bd3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1104 zcmV-W1h4yvP)#((a25ov__=~ZA+4h8f4&W-@(3ky%y)3x?Vd6{f+ke z_TT^dKGxa~6~ZtKNqHt@~l^XE3Xo}ZXHaJ${}^YhCBd&Y}47$LfO&&uK1VIp)OlGs$8yg$A-qzNpP$<$q*woZCG&J-pQ*gQ5m6eq*c>63FSbvR1 zgJIai!-G<(R45b|7Z(5kl}hDuxt^b&lVw*|SNr?>gM)+reZ~xuvHedblhtZ91VQKL z=KuhqP)MiK*VfjO1qOowhG90F9SVhddU{GrOUug2dV71Ho}SWLb$53k9Ub-c^+6B> z!!Q7#wY3$3AOeBFVzH*Dr<32=7Z(>%tOArKcxm*AM zfj}4-7%&=*_}NG#VzF58#qa9sdU<&{Jv}`!7$8bv(ad@*Vk8{&j$eT`~7$gzFF?>?l26iudg>6jkuo7|DJ_~ z1*ueuVc7NcHHAX)csxHfoJ1m#NF+0&LR4N2P8jU6p2mkr`Fwsj9R95BOg{f< zG@4GQo0*x3L?XB%5C}?2N;*0^csyQhZ7l$xy1JUr=d0D~U@(ZH=*Y;3NF-t~7-_8- z42H+!!E?U7y(JQfqM{-aiG(1CUa!Y%c6WCtCMLXIZ!{W>$K!a}XFX^5{bzW1I2;a} z&E~(m69`JB((m`DKKAT(JC#ahv)LRDr=p@_b#?W9pYieW?d|P?f&v(ZnM~&F?5s>C zD=aM3YPId{?RZUNV<$t;V{n6y}=QjEL zxlKNQZu7zK-wuZ(`#!QmAP}gmtV~rt$S;*jv*qU-kVqt{LkP?N|DVg`^XE3Xp8qc* WFcFa9n?6_o0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.md5 deleted file mode 100644 index a3fc301c1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.md5 +++ /dev/null @@ -1 +0,0 @@ -8e6e75ba5587c932001eae5a688a6d27 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_82.png deleted file mode 100644 index 7b3fc9762c1078931bd3a4339c12b2160c53f77e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1480 zcmV;(1vmPMP)r4C@4H`Q}7Qo|J*tHGtN{{^ddu8f9TJedX`O%+7u^<+j%b@-ots< z)|+$fylgwuOuU-KF7qM8}($Z2`Sa{&Tfya*@ zGxrsX#m&vl1qB5$F)_Khxl>b9NMBi5xp3h^LPElkBS$V?y!h?gx1Z}?JbU&mHa7Or zqeoV&6_pWUZEa1hR;Q(<9XfQVwzhU-Vgu9(rBeCwmVxZUSy%e7m6&0bDg2r?x9*;LVI!Z6=>FG&K zOr$8Pt*!0awQCebDHMv4kr9W(5gr~sIXQ`ziA17%_wJ!Fsymy_Mp4w6GiNj!4ZWtd zwUv(Sb*ZVTiN18=#0eb7Efxy^z-qN35q3W~RYln4X?4EGz_nHynZ>&Ye5AZ{NNh#sBdQ294EfrN^H>eM(MF76=5}+uMta zi%9(V@gvH|pU#Zt@p!aa?d#XC>B2M`ji|$SBR$g8%6bdC0 ziAtsV^5qLjlJ)iV#l^)*NlE^6X0)eIp8^1~va)DJB9WNQX0zFxl9F=%{P|0lF1>yG z*6DO=G@8-T(Et(-@|UB!x;mH3)zj01rgFL5ZnvY}0ssgL3zJABcDr3Jmj`jvnwpxH zmKHvrKQJ(0Fc{+F;{gDAy*@fRIwvP5FE8)t(WCU^wm+Q)$MNFgVy435@h}WS&yM~5 z{U=YJEGjAz3Wc+?vr?%vkc^oP{ud9@{}dvTsIRY&?JRx<_#Fo+$4=o)X8|9-9R0tT zo10@hg&o6HIty^7vjAs03vi~hfRBT8aBwj6dF&~Cm|j^~8Tvf-6p-TnpB{3!p3VZC i=`6sR&H|k2EbtdXsd7>DTemX+0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.md5 deleted file mode 100644 index 43d24096f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.md5 +++ /dev/null @@ -1 +0,0 @@ -1c1d60df819704b60113a376339b6a58 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_83.png deleted file mode 100644 index c939b9d7f64e54750178fa1f00283ad62a3fecc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1244 zcmV<21S9*2P)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1d&NZK~!jg?V3$UDqR@IXEeG9In+ie%f5u%^o2p$qOukis32HLpqZP3 zD5FIL(N4k^MXiepabX{epf3obT0}+}VM36F=GX@zk!Dt)&AT|zo!8r)?yGe!^v-YP z^Z19sOHUz8_+-xVN|W zE&SKI#&LXMVF9|N?}^Q3+uhwIXOey`nxCJCrRO`-*w`48q0iUwpuL6%?KM1LcwJFZ zF*!L2p%EP7J{)>o!y_KA>+9=#dV0X?a5yZJ$x2I0udlB^RoKs7D2k#e%4V}GD=W9R zxBt`dva+(7nVGK;76%EfYro$wkw~7OpSQQS)6>&GOH&L6gMlE3%galVNTg6GZf|eD zsL@vwzt?WJyRx!UAP}ssu3{L5AV??_G8hcm+1aV7sWO@D;^N}hQMb3ZEiEk^4u{L- zwzjt3-Q9tFNlD4z;9zZSErwwQ1qJKt>oEf{3>zLEet38Q8-$XQl7WGNnwlCmn{BmP z-sHIyyQyIKXjSqtU#*Wj32lCezK$ zjaIAGXfz)_Sf84j8X6k9zrR0g|l}a%TW3$;#r}Hg|<2ZsKmzS3yj7FmvhB+J#f*{Jv%O@r# z2!c32KSvP6?RJBjf0eP^3d_EuO1ftE^@hCkmvLHe=_Zd-8~);lgZ4_&;N6&@e!xjD2k4ajdgT%)YaAP?Cc;2lAWE+ zU@-iCKlziC%jM)zSy@?;NW|;)g7EC@3?!+0fpr}Ug={ukZEY=C!-vx{7(Wm2cV#&_ zInihoEaU{GQj^eqh|y^5@9&pNr5hU?d_G^HQ0R2J)6>&%IK02VuT&~uUS7!cd3kwN zRaKpxo!8gbIF5IBcQ-UNBz^-!F>QK!y2Ig!L?RSrd_G?$lj-&PlarG`ATTj8vAn$e z6;c!3%k=m6n@lFTT)wolWHy_HLSaKg1Bb)u>gv+zbU%Llh^e2QolQweDJm)wi9|de z&ulg)D1ds}zP`S-wKW!t1@1$BS7xzT3JVLRQfXdZp51PjNF-k&6(vZQ`?3$0MAs(52)!qIy`8v;X!*1587*Z&|brX_8K0v*YJ4fKMQknbMSS1KYTu4W@aWi z^N!ce&CRg%d~;MP6*)xdT_QB-^EEtZui-&^4G-FDc>DwSv>E9Y8iXAH0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.md5 deleted file mode 100644 index aa1f07c9d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.md5 +++ /dev/null @@ -1 +0,0 @@ -4910208aa4e58ace1f638c804fca1109 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_84.png deleted file mode 100644 index 76802d754e1f73123806d821a22f7a3870cfd2e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1518 zcmVYBbu9=Z{ED=@BXwR?RNXv*jU6%!u&B~V`Fx^oob0X>oht#8mW3PAp#)`u;6DT zL%>2Z1S}*&h=h>&`T70*{Sip?uM^IN`dd~c7CTHr5wf(jw5h2HwNFk?R4SE3B5^vM z;nZQZTI=fSLK~Zxmp3>#_@|>vOG_by5JC=zQ&3P~u~;II^#3EQ6}h*!CzHv(eEDLr zSdx;GE~=)8VKf>^l5{v6QmIs}R`2faUUo&H6S|PAtE&YC1!A#yYHErg2mrwG@v+fp z6bJ+f2?;8dYJGh@U`S6-k3=G&MqsnqYin!Z=dCp-C+ER~2XeWbAc*wz^p`JRBD+eZ zf)KJ;ERjfLGMUg9a2k!qX0z#ZItXEYem($TcX#*h-Md^am&fDP*4FOt@B72HwY3!& z7jrnAXV0Gb%OD8i(W6I4M@MsWb7$SojYdD|;o+gtXcUP=SFc{JudjEz-9engf}~(J zn*%K8qEIMGN=kSWHNENTxu4N$Fs1oAQp>9Mn;fD zDwPfl4EP<2ii*n0${Y^I#>R$BCMzo|^M_4LOq`va^>{pJ7HCD1BXuYin#aJ1s4ZeuW_uqL2{6 z&d$z;hK7=olG)i=0DwRsV6j+xdwbN|q`bU5VBqcBw_{^tCnqNd2M0A84bq7YJ3Bko z)z$6o?M|oD=ks-Rba*_TA9G;+H;Zf6u6aD3jg1Y|{rK@CGWyG=#zZUf`1sgrwaVpk z>g;|SjZRXbQ0Vn~(GsLtVaSAaYBiZmt*xyJh2qt#SA0HStyXKb+V}6@pPZb$e*LNdiuFePfvY5-<2y@qNAg&R%=H`hySCbq@<;#C8TR= zYHDF&VPj*X)9JL^?FNHEsZ@r1q7D*`PEtOfuTrV>di}e1?_4fdUtizk3!w%E-u2DwSL=_ujpGTCFxFCg$uAola-5SVSVx_3PK^ClU&U zj~_p-uC68sqPe-5x+mYie}8&2Z1S}*& zz(O*FbAAr_{Q2|9*MSL>bA+s_s)~Fam@t7P{(mGRz|TmAfQ4iTSV)F|g=7fd0pm(m U<#TIp3jhEB07*qoM6N<$f - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.md5 deleted file mode 100644 index 8f50d4ffc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.md5 +++ /dev/null @@ -1 +0,0 @@ -9e6ad1d1f87ae3e82ab995a9b0530533 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_85.png deleted file mode 100644 index 61bfe809627b33febbd58a3a9cb95f880575a48d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1126 zcmV-s1eyDZP)nV6VxiMfm% zS(cfcocxi51aNwK>ao9FM$S9#oD}#TyWLKCdAZv%G3TflVUCIs=BOB9jt?;y3=9no z`K&%+j*9V#IfaFVw6(Q)EMHq&qqMY?$jC^7gM&#nVF1^j()3-zlq;R&fMG_+1c6XbUK!nmbkgOVRm*FgTX*|clU>LTU%RE z6os?1GxT~rB_$kdP3Pl9Di)Ojs-yx4N*f zFnW7?d3bnWd3hOtjEoFAJ3GnE%_TH66r0V)<>e)nm6b$BMiLbjMQv>@*VoqoR8&;3 zv9Up2T^*7nVK5i~KGgu+-`~^P+Dd$UJmKNtG&D5u^z`JF*4OyeoZa1Bj*pM2sj2Zv zeIp|y^z`&_dwWYoMFnMLW!&A}v9-0u`uaMuEK^-w4S>yNL$B9ku~<+Pg_V^RfKN35 z)z#H(Zf-I=JB!2NK(E)cu(05j*4KF4A@BuPS62YU#KbsbR;%^H1-X0HcYl9RS63Gr zjmG(p2WW0?#%MGGaCCIU;^HC>hXbuv3qXH=KWS-coS&Z)9Ubjb?^l|amlvj|r`g}% zCn+fjfcpCSKW^{4_;ut&L_`2^c6R2BRaI4?C<^oQ^DgK2_4Of15?Za6)zwv|rlyFB zigK36#l<;~WmzUDCec!03xdbTM^;u=$j{IJP%cT5^Efs(me(qY-}t50RbN`?<ciV^0h7-5cz5$32EVUCIs=BOB9j*9WP@oBf)e=?7MmiI>@?(k@ir+29YKZm3! s;`sjXG`oQ!~g&Q07*qoM6N<$g7~^5I{*Lx diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.map deleted file mode 100644 index 6206c6e84..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.md5 deleted file mode 100644 index 527fc865e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.md5 +++ /dev/null @@ -1 +0,0 @@ -912bf27b3c1ff508088dbbabcad26cef \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_86.png deleted file mode 100644 index 6d77adeec558412e66be9778344324d7222178a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1310 zcmV+(1>yRMP)TO>-z0`-TVE% z_qE@(-Gc-{0E&Nx_T35mFetysLHR`v$}e&Rdrq`k?bz7Zccl`T_?Dv!c7oAS0)oMK>!QLW`M&qx10-c(gns*VZf02XoiyV|+Z_M*#Vio0~f` zGxOb9{DlDWOQ+K{H#hs?jYJ~R+}xaRYXiuyAAv7^357z1LLnB584QL%AlTX2866$v za5&M?(XFkmE|&|*Fbsnb(r7duk2f?lk3NKH7>z~-u`wzts->mn z_V)JVcir?Pe4i67gQ&Sff7EmNVKVL4FTP&8dv$O2%YyiN`%?&{iIXOAg z)6+;J7K^K^tIcM!!C(-HL~ae6&0b$$N1CgvD*(XV-5o&?m6eqei3G>-`}_OO&d!XC z45!n1e0&@d60*I$?Ql4>T5VTX7h0H=l{Gs%``0oFf{;q3QmNE4;-g<L85v2Z)7?{t!-2*cjV3cQlfhs> z2s=7Dj7B4>iosyS#l<1buV25sFK#p%>2!KRLIRrd`TWn5IX^!K0I=C?2qA{nwOW?-rjz5bA#h} ze}BLCT0WnjpP%2>*5<7d3Wc+?vo@RU^768`w-*JIlanhdDjFIZPEJmqpP%>k_9`nY zUtV6;*VhLI1`Gzn>+7r2=|m|30FsiD^m;wIe`NV8zfw|CMn*gsAlM1-Ht$N!O) zm6e#7n9nsPlL>en5&p!x-+%D@>#I?zRKdZ)B_$;|j`#NV%H?wZ=ioEn@cq8HxLBjn zaJgIz!-|TEMn^~epM%eQ!~Tkmja^z=`geU|Vj>YRe=1YIAIU-aMGnd@a!`Je diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.map deleted file mode 100644 index 28a530cd0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.md5 deleted file mode 100644 index 1371e210d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.md5 +++ /dev/null @@ -1 +0,0 @@ -8d39cd46dd30d6c731fd7374f101062f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_87.png deleted file mode 100644 index 97cbab8ac15d7dfde4bf9b0f350b988e6a7c6f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1308 zcmV+%1>^dOP)Q5d200006VoOIv0RI60 z0RN!9r;`8x1kp)EK~!jg?V3wSa$6XN*V4a>X{LjuP)sW*g2*mVLH9`rDilUZ6AP+Q z2zI5QQIi6dnnghoMP|VcA_GFK4jM@$8cp9;0^u?|w$#TKik; zd$;diuI=7Jx7!T}aD{}o00P2;9{}M2{tzDE&o694uh*;9YP_Tb54pLyN~O}%{LeZ# zJ3E`1nfZ1}!NuCznqIHR_Wbfrnx3BiE~^?nV#EtE#HDx3_C*Y9NF;IXM7; z`}=!^Lc!UVAJ3EVtiXtN;CnqN#A0HJ8 zMO<7QgTWAqM5m{xD6PN0pU>x0snq=Z{GFX0)XCv+mX?-KY_V7%gtxc1*vY*Gd*e^e zN4POeO-;S&@kv@*8jr`@+S+<}c&MqViHwY_tE;=dzBZXmF)=Y(trnZ?a5#2$b`ld4 z$H&J}PiAK3@bIuFK_Zdl<>l?|?b&R$fq{Y9*;!PA%jK@GuRlFKb$55OSS**z^?{z4 zn3&boRfogjcDu{U%7jAU@$vE9-Ca{tQ+j&3)9ExCjUgc+D=RB@yIrr>H#aw4Pr*L%CkG*wN~KaMwkJRj)M_<~mzS3zgpZGps99ZI z-QM2rJ*2O%ud=ezTQ0gt4-O8zOQ=*T6yMz3po{baJ!qY||M?ux&(BfQ>2%WRbc4Zg ze0)r$QVj;fo3TH^g8=t~=;&w^golSmL_|=jR8P}xx1)G^dO9N`gGQr42o(y2#bWWE z$80u}$>fBD1n)yE77GOw3Izb*nbs#^Hk%D0gb2w|) z9euJKgb)RBad9LP$!fJ?FEp`O3;+;|#S04y8yg!XB_#y~1<%jV000Vw;&J!t>dNQj zSi$e%PtLnz10MM?cDvo>az#Z&g@%T%t*vP^8qcBF*jR(XfGpv1xgwFMwzhVEfB)|8 zZg6mLZf@=~b-7%wL?V&PEG(?Bu#mxE2!%o> zlc~{Yv|25VMgsu!^z>M*RyLb05{a-PvAhu+aL#)`H|Bp8TCEoCod0(g0{=nJuCXr& zh~H@V^V@h}Hk+Xra=H8u(BR`e+Ruc?`12PNtI2Pw S*odG20000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.md5 deleted file mode 100644 index d5f810c98..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.md5 +++ /dev/null @@ -1 +0,0 @@ -182fdcceaf68488f5507d2f9988152da \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_88.png deleted file mode 100644 index 13cbf797a1bb0315b72f202df85c62c73403f2f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmV;X1zGxuP)Bo2)?kWml(PgENP)l$&nrJ$bNwnmB`g!+heqcIxAXi^b1)5F02_pc_! zt<6H+&uM=@zB}{VZ)Rp^haikGi1;0e&;?vlMBjx$^j#Q4--RKN8%$14zIydas8arI zl9Q8bYHHZged;apT|eop(W(1U|lJWo03RxVFyD&LV`QQYo9E zX}YAOQTd;tKL%hlW4TUJ)a6>!%Xo6Sa1 zlw2;4i;Ei?8e%mrm&;@_MMXv3xN(D`s2@LmkUT|E2qB3?5*;1g*w}dbq*^YQzj*Ot zZ*Px$jNH9@x4ynUJw06}llArWZES2jdGbV|P=tnt78Vw6Z*K!YZf>sGY%VS?MhGP( zB>}*hG62}!-8Gp^(b3T%At7aDWp20IhnP1!eV0firKP2>=XHyMTjfYsGil0QB^mdoWcGczapYH4XP z8jWnfWSwz3oz>OVGMQ|BeH~+b=gu86EilH5i;DnYu~T>UO(zI-NI})oKk23Q{N(Bvh-_lpofB?40bG3Oc{%9XrUS2*lH1zD*GlY;g zO+-Y5+wEpwfJ;kD~S3{QC84PEO9j z!NLCizQ^MU4i3I@gsB}ULO_~1^{7UVKXx` z2$WYw~vgB_-K-5nbn ztJmul3Pn{_RZ&sV)vH%kD%H!EFZ1&9es&?9v7X2FOe74;vLZ0XYZe z9HqNc=h#1aW;A2GMt65PcU0(RX3^1?ql5(9o-wpa1{>07*qoM6N<$f>C9| A7ytkO diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.map deleted file mode 100644 index ab92f15ad..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.md5 deleted file mode 100644 index f457cb29d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.md5 +++ /dev/null @@ -1 +0,0 @@ -153e26dec4d089fe61dc7f090513c4c9 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_89.png deleted file mode 100644 index 0b06563110c389b013c1464ecc5d090509d90ecd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1693 zcmV;O24eY%P)*3TpY*4N+}lgiG~Q*35i6~(9q!PHZ(LyB$B_B zQvA4f?HWZ<4<9}Z(SGjSxf3T&5CqZH)z#P6cl78{-zB|XPf^s@uU};{*{)r?#>dBF zo_)-SP!l_M?sPhx0|Ns90FTFGwOT7GDwqzwCAze)pNs?5n)jM|V`0?Wh^JTvuAlco-d86s;b=FTmZnx$Ow+(4u?Y^5C8z`>guwyv&Y89Qd3iz5dyi* z&dxq~@ZjUekL%a32LR9&2r*{3M1J4F=krx6l~${ro}Ml!CeU~Ih{a-NnNNy20gg0RS^IGa)7!ocj9u+S=Nlo}P8<*7=NAuU>@^ z3Iu}Z&!6AFe?KK9g|_>aPl6yg98N|?2HmB0!2`K{{``5_vSrK}Lys9QQQeE` zbh`HT_R7ji2w|`}66VcPTwMI*$&-PB0i{xzmzVeJ*DnA7m&^5iXRHmH!{P9?M@B}{ z($ZM*{RWH?=g*%v8jZcZy&E@fWZLOHrpM#4+wDrF(r5QoX6@Rwb8~Z}qoZ_pczBpL zg8B6cgwv?ZmFrMuV25W|6IDeyHB4!Jv=-- zJ3H(3dS_;4e*gXr0FX+hO-)TMm+Q-yFEuqa%;9FU8OQOdsi{ksE|Da;d-rbU)j$Db zfx%!fo6UWFeOXyq;f@uH#d&#oM~)mB8yh1C;@GicDwT>}Pw3e$3@^<#PGfty@>GUaeB8l9Q9KT)ASi+2~UZ zlgZ?CI)y@EQBl#JJ$snLwOXygU=RodckkZq?Ce~#W)1Udpn##!*w_dmEG{ngdcE`k zgVX5@WcPSHMx$|bbTl(FlQt$MCWcjqd-v|~csz+jB9qC4LSb`r^TPTBakE$~+1c3z z1qEWUcyMrV+qP{%oTC9UcjGpjO|4d=H@W{;(9g=5FGwu)=N*XngEWC)gEWC)gEWC) zgEWC)gEWC)gEWC)#9*D()BuUoe0zaBitJU$!2eBk5DJfxgAv(20ut56> n1RJCY1RJCY1RJCY1e^Z=7#%f7IJu)k00000NkvXXu0mjf<&Q#p diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.map deleted file mode 100644 index 5ecb50e78..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.md5 deleted file mode 100644 index 7c6e49d26..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.md5 +++ /dev/null @@ -1 +0,0 @@ -8e8aa1e4d1f99f1b7b485f101810d868 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_9.png deleted file mode 100644 index d14941313fd706ab4bf1ae22fe403c9fc001c318..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1746 zcmV;@1}*uCP)4l4Z2!W;Aj#lh~hgUz~e)cjvau zncn-{=kw}0KYqV+e!uhGbI$XehY<)Np!n|-vC#=otPPZqB!Lo=Bv3+<1iEiybaeE_ zjT;-43dJu`Utgb@ndxo*z)$DFVoZ0V=|e1E%fD1-QC^ml@G-#Aqc|H zLhX?xffAA=P(qS~jS+I^&Yc|{9UC(AznP4TjJCG6)y1x#kSobDoJ#)ZtVYQE{Ct8S z2!dcR7($`&`0?XoV`D#!G8haePo50lr?$2hk4~riKXN~P`gGsEeM}}ZB_(Beco-Yq zZuhx!=i=hxSS(gaNy*&YoL?0j4ks%sYh+~PrzQBZXV0EHckcXB$ZutpccfCOL+9|9#rCULuWGg0 z$B!RRPf!2&@uRG)%&!Ww*({Mrii?ZCeEG6ICHxkU4_d9(&k~TlygWPwUMedq`Fy^| z<3R`=I&=sC2!ap@1Xr$H!A68odV0EAt;W}>sj2tw-9rd1E-n@q7Z(&1I2?}UK8=ly zGMS9S;fO?{M~@!)j@aMdPovR%E&KQHS11(Av*q*oDwPUfPfkt(z}vTP{i;}8TqFoW zr_goy>WwlzRQYnwe)9dvt7HheKMx$wIX|YeZ`<4JAt93e^NF-9JRE33wMx)W`bOJzhbhOtqCMITKVZk?cVPWC& z<;!d~J0l|lTWV`-v$C=P;KPRxBO@a-Gc!CM4**mul~^pcSS(yF*SCjYZce9Duh+kO z_io#^Z2(YJRkiXyf0eblBk{RkY-}t5ba!{}-o2a6W)lRVR4PAz{v0r*y}g~uWY*Nw zgy=RtJ|15%7z_YdT3QO`$zrhxf;e&FghV3Ya5$GPUD~v1)9~Pu9;PH4bUcAuhbO{Lw*q)S>V`}gmusj0Y$_eh7sVK5kSa&o-k-jmG4#6*|N z_36_m+?<}ChQF4dh={+ZE|{A@AaJ|g@87@oO*KTH;SiRPPN#EfYO0~3L8H;AR4RfX zmX?-09#3?1bYx_t!C+`@Z4DMnr_(z-JCl=>Wir{CJT6vOSF6?P@$qqo!_nN_>~_0z zb8`XU^y$;ruV0^-n6O%{XV0FMN~OM%hejwAW@l&D)YMok7L&q@=>a!ph1@qtR%$+tq6Iz`#I=KEq*^LgGb;t-#A^YilD2qNu3I?RMiA!LMJx z0)RrHICJJqQBhGsLc-wS;NajOo}CL9E|iv*=H})Kg~G_lNc?2Ja5(VEyx;2$KLp`hIMq_^&`9>i?0X ofZ8KT0wp9#poAm|l#nFh4~W5kbE_n6DgXcg07*qoM6N<$f)L(h9smFU diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.map deleted file mode 100644 index 5fcd6daf7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.md5 deleted file mode 100644 index 0e138628f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.md5 +++ /dev/null @@ -1 +0,0 @@ -c599f0a41b5e989991bace1df6566bc9 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_90.png deleted file mode 100644 index 506149eeca76b3baa6c9550b77d383a5a8eec831..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1929 zcmZ9Nc{JO57QlZrEg{8Ajjc%SkCrMCJC)c=7_XzKL}+R&En zWGuBcjMAdk5?!dJeSNXyDbHF-c)vGu-kEde`#tx2@Ar@Iz31HT{oI@7iFG@5Eo<#@?oxSAlATePJt3$S`^lOO6a>7jtUh_*_e^afkt%cYvZBw#w4c^R}n%IPd zlXRPZh>B}KWRc!-jm z>U)OkOixeuyL?#$xN_wRhr{vp^(BgNVJZ4K51Iv6D~BW2?ittm*$aTP5st---T5fKpvgQ2LX7#SHk@XV{O*!8Nnw_Hwtc5dz&ef?UOBMDrXmGHL%NkayQ` zDJg94Cn~C{Hq?WpxVUYPvA=nH$M5ibpK$a_-kgBL*-78gHWp63_4V~6?&xtCj5qV# zgW-8*!M*U{-~fzheRBr@9zA+gX??Rb=Ic=0>hw8<+`N;fqg>O^``fDy4i2btutN1s zOyY>dn(FH6hK7+K){nB;AA}-6TkH`4G(Bc*SoZ|boVYC={T?YgyX6UW4v1p zLn>+cS5H(Otdp%|Gn)s##>{;D2qrf$kU^)@`-AL`+jXmGXlS&zx4UVR2n2xR>En|L zXHySVf$^D{oJSxN&ZOdlHj;7q2ykm{?Rrch>1Wytw}b(rQK_3_>lp$2?=KgfYu|$3 zvau1JWp6b0czu0+Wo6}r4z{na@5g&Xmm2Xxq^7!hs#U9B!=~H7V$}F8Eb|DUt)s*B z)dUuLZXYo=HU{eo#OHErMCpSE1VaUxUQC7*6e6l!ROeN9-vGDLHQbf--6+k_%xn+L z+U~b`X&B5tp1Tvq@<~cge%aeQ9y?NIGT?09X!%?kVKW}uJTNfu-E53nYOt|{M}o0N zD=agl5$Q6caZ+@|=-uMtt@Xv1)6?E8A7uo>_S`uUplWh?bSyXK_Vmoms`BpER#dyc zYf1^!S`4iqD|^w?lYlCB*FI5!Ey&J}Q5Et}Z;!nlw>gJG1sf{#1)Vd8Dm}%&pin6L zAWWg*My3DwLGT`ta6K?EP%7g{B+NE$Cu&hO46OFF5~!rj_J0#zXI zRaHGiBX@UqbLD&xs?t(L003K8C=yjZ5`m&y#APevy}hSrXRRzOD2u&EpK!`(G&h?S zgT>TnGv&IvIu#X_`EIId`AEnp&9^1|FJ2fd7Mqx8-l3?grx#|XG%G9X=I)wSMo4gQ{l)r) zg@tm{8`B&P>qEqEe@%dLF%Aw#(+qWW2N$EN#9-hPq>?+slNb`x=)+P+p{B1tH#ITQ z_x%?Hh~m9x@pwG2se|od|352W9{>>&3It#mJ%36Z3azWJFZ)C{pKbR0735M2?qYAB zHW50@PUb6*RsztsoHi`8=*?G1N)i7MvfoG(r1sGdsA8}9e~y~}*KOpI0On+3x72V@ zV2htFRlaRJ&EH_x+xmg6C|K~7Xu%X5BNE{8zhU)<2f@*jz1o1tV=PT@wgN5=So>#a GLhA2@rmM98 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.map deleted file mode 100644 index aeea0b1c8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.md5 deleted file mode 100644 index 6e6eb02c9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.md5 +++ /dev/null @@ -1 +0,0 @@ -bb0860324defdd3c199d2605dffd3dea \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_91.png deleted file mode 100644 index 29a7f985abb636ef184cb86bfcfa1fb1a52a7b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1668 zcmV-~27CF5P)XlUkH4`KeqHqqmt&LKZy|MbwaIH+wJzq&~CS@)#|@gQu4TP;R3@j z_wV12y7%09`G7K{~IH=WXw{6=tJUsmO%S{$>YGUiwt-)ZhtE&qDFflRV za=FUN%GeH(OLTE@ad&t3fddC1ggTuL0MOXjs8lMKEnBA7>wP{S^3TY~c=F^4+NNn5 zLKq5#(6G0+SFhKL#p3nr*FSsq49g!YApoGSug_pGh{fWyYu7${^k{Y<2Yr2gO-)S= z4Glc)2(egfv)RVS$I&W~Mx&{zsmagJPfbm2Yik=G9^SimuT&~cOG_&$DH$0ViQ1p2 zZUBI>u`#RFs#Gc^5=mKE+2rIThjSvtsfm=76pO`j@!~}Qz_n}F^m=_}W@c2+wzf8{ zR@>6j!Z3{2>wWj`T~$?;)9L*7?c3S2XI(DWZ;$10I8L8FP1Cf=WZJT2%h#`8*?Tz> zwzjs`*47RU4ej5*-)uJX|579z4wsaa)YsQbBoaP$4lZB5eCEuVP$*PfT)bz`p3%|K zo}Qi;FJ4d-Wj33^to{H1qPhV9%x1IC=j-U`@caE*t@i2DryS0S5am9~lS79Nty!~X zWMstQaM*0NnVA_rQHvKZUb19~SS((;bg53KL;nnJ%FE01^YZ}!)z#HkuU@@#=Z?i< z;gis6wQkt30RT`@QE~F*$uD2N$mMcAMb_5VDin(C+qVx54e_x@7#kZqb?THzB#M+# zSy`ErlLG)47#Q$)Jbu4lCX)dG8XFt4va$k!Kze#QJ3}nD>FMcv_wK!a|9qEe~Y+cZt{ zOemE~(FVHxPfbnnsj#=V*KW5rH8t_HBhH^c4JzkBy?T3Q;iM=qZfMF|7~ zg+hUb=%=M93dLfixw?fwQ3a~XFjLNK|;@>6%`e?Z{IF2FNY9v9V6wJqZAbt zJ$(4EtEVAOV#4e78VrU=wn%4Iu3R}YGxPcLXEf~Z??*@Zf<^DAeh6d3kxumoGOOjS`8Zp`pR;cB54do6Qys2IX>j zVPWCUojcj#7K^2(rbZ@{UB7<4qoZTRiWTg=u@ds3xw#oaSX5LL4u{bKLogWpTW39+ z8#iu<=Us`uh$-@*$ca;1Ep^aEK-dI7AZ!9HI#V4$%YwC(1i8x7(fkItcRx zP1D%xf+(6WnM}#5hp-^nwQCo92+67?0fWpZ2slI&1RSCX0uIpx0p}-!$ycV<)c#5U O0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.md5 deleted file mode 100644 index e082e4652..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.md5 +++ /dev/null @@ -1 +0,0 @@ -7bdf818ecf54123bfc6d5e190dfb110b \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_92.png deleted file mode 100644 index c1c1184a3bf08874dd8878dd2279338d9713d079..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1833 zcmV+^2iEwBP)?kiU4|M136Hce|;lqa!4+*lG*lf1$?rx%mGGFxI!GlP}16h3z9z000 z!1Dxz46F$V8CVk#GJkqa@cDd$!4S!Te+NRLu%V%0d1F_qCc=qnMg6aIV1EJ2sfnzt zECfM_nH?AyKoBH0Ha1|f*=&V{g?Kw7Bjet^d*Q`NhUkCU14~Lu5ClOGghH8f|8?TT z34}mRO$~0hTCG`GS#fc3EEcP{xOie>0=MG{K@fyar|;ak(`vOYDWsLiPdF@dpWyL$ zb#--tZe3j+kH`CuLW&%>Zr#E#%xpH#zob^Hv41&r>J)CQs;WAD`n1#OY;SMx>gqaq z@?=0?R#t{#*yqom1p+}{Uf$T)ScKNF0xYv8_V3^Ca=ChXdH?`EpU-GC78Ml{1%WL( zKR>^(ukYBgV+eu>g+c&8ZEY=w!=ce=B9X{$x8wShl$4H+4!n(`D1snvw;S)idGkgj z5-}KzZQHgzfBu~0KbS)Rz`J+v#9}dn!PvBEQ+s>+{DDiwVzKPow~xVKq@|@DKYsk# zvu7j$gTbh-uJ(Gp_){Q0pRdtq_Uze1r_-C8o5#k+4j(?uWHJ*I6OSG}`s2rs1@p6@ z3;-}OF;P}l#^G?{%5|76-UtqOb`F#Fw{oK8KSF6>!-R}JS z{6mKhc|4w1uU_@`_Bx$TrBVszs-@d)Rz8-G}){J4;;NT#QM(gkI zC;4QtSQd)~Z#$h%0Km_mKQRnTPftI8{(L~TdGqEwckU4V2XmO7o__V}RlJS=_n;_B z3Jk|=Hb+NC&tK-u%uH`@FQ3oP%gZBOs;#YEyLPR^;RqxI|LyR2Jf)?jbUJ->bQF)F zs;UateEj$k05CK(gm(u91^@tGzI-9&Czxz_co+ci;ll@F7$JPlUuH1ma=BbCCt8+& z-@#-urBbO%rJ9_alt?6t9L3>qj7H;`GiNd~G71U`UcY|*+aX*om)J&8bde63OeWr- zQmFud>FMc328lzVPy_-&O-+s2Z1#G+0sGCHH!CYEJ32bnuU{W9-nelCL6GF+Pgs+dVuyeD2&i;&7c#XSG_rUhkDFS5Op{$z;THRH0C~d-v`&Yt~4m z()jrJ>({TFOeXxPMs;n052?+_rtHB&D zhK7a)1VM6hbNzll{(!;dasdDe3k%h1bwWadOeWj4YgbcK69B;H^J%r(k&%&&8#m(O zn3$L)<)NjeB{nve$KweE0v3y<*X!r!CxpykFl^bfMIw=Kx!k_KzP)?*h7gAXf)P&R zCX-2_P+;&&?*9|`yK>?O5`X&p4oKvIH31<5YXU+B)&ztMtO*DiSQ8L3uqGg67WkIm zWHLoQ4#;YOqA2Ng!2&g*P$(i559E(PE|(L#2z+V@Apy@55HhePAY@=oK*+$FfROnI XbE=9gJ8m1C00000NkvXXu0mjf0DppD diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.map deleted file mode 100644 index 32e1a1706..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.md5 deleted file mode 100644 index 7dc006e11..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.md5 +++ /dev/null @@ -1 +0,0 @@ -a505e7f3a903816924fe67a4dfdb1d83 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_93.png deleted file mode 100644 index 3112183487e876822742df908ee000bcb3499a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1732 zcmV;#20QtQP)X>a9UjoXgaL*o#zhkS*NG0<*24vRr{h zBV4SS6sss-7SZS*4Qj@sg&9s)5Nu=7g4m1DjXBCuQLWi_Z*DU!owGrk-QSA~a&vmO z-~8$7ckk!bInRC0bDr~jIrmx-2NO{UqfVZ*6Yr{dk;_C10ij~+eBdP+3ez~yo|olc@9ceYb&YiqXhp~)V5_wG%w z(9e77LTgW5Xzi)XpRT=3CbL?t*&O(Hp-?F9-o3l9v6<37ot!cnKhuf*MJz=7ZQHg% z5Jartz`y_mK`a(4ZgII>M~)o9+r`Dj_wV0NFV94X@fSSM@An@#a3DWFABN$wva-Iu zK5{$0a0r6fY<5XWNq2YmznVG|bx4N=?t6(u(%9G-?>06zN+gp1D5dOi{P^*akrB7s zjiRVjDlIQBkHumnb^w6UXv8q=%a<>5xqRo&oqoT6QCE-_3)H^6ygU#H^!D}w0466V zZ8lqVbv4l;erv6)taQ8GhYufyAV{H5000^q8bl%ylgU&nmHqwwxPM_`;q&Lu@ivO0 z5CnxnA-wzc?OUZ%3B&NZb?aWfe3=kGRX_m1`}glvDisXFYu2oJ_Uzg0fgX=%|Ni{~ zfdGc#nwlEF-#yXq905CBzVKf>=B2ivmUUhYKG#VvwPKO0*pOcegFc@y%z6}6)@Zf<`sT2qV zNj+OyTI6zhb8|C>VJ?^J!-o%bb#+#&H5d$DxpKv3v&}h|*=)XW;R1@HI-PF&_U&K4 zekEQd323ocE?>SpHa2$f;6c4!Kl@9CJ$v@p?RFGJCnhG$W^+kN37^j=v6FD`-n~ng zE`>s&%F4=p`}T#y;a9I-_4V~32%^{PXV(D$kkkzTpx5jB`};dOI=o)5TrPj{;suFw zT3`h1c6)*)DQdOaWHOD9k1t)iG#Cs@B$Cd~&bGETCX*TWS-*aLQ&SV(j;|TRu%V$L zCX?y$coJgr`TVY~F1(E(2ms*w_wN{nNu|eZ`pW5U#_+&+K)ykyCeRjXFb$9c}uk(1VMyqcPt$B!Q$J$e*^AhJ1few$^-jvY^* zKJD%8RjE{^rKLZ9`~Uzj7>u|!2`^AyuQ%Qv8X77rEKG=>G~k>B0)d{Mo)afd@OV5H zi*@qk$)7)eI-Sl`c6=1R?%!JRZ;E@yyK3006qWy3U_JKR7rzJv|+Z#ipjF ze*O9d0FcRK&CSiBP-u8~`0UxU#NlSMxx2eN5{X>BdKE>{UAuM>ucit(C(D;F7Yc>9 zZrvImACE?(4Gj&`)6-I^G?jgxH4%%&rKP3EjvX5v9YqkNwzgKI(eQY@ggT^h69@zq z6%|!gRqx)t3x~r^O-=3X?IbbNAsgpL6g+(Ru%n|RKR=&%HC4d*(AL%#3Y~@3fRkT_yu?x|sc$9^H-cuJ^d+I`KPhDv3 asmnh?OQ}r#=QSt*0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.md5 deleted file mode 100644 index d7cc2880d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.md5 +++ /dev/null @@ -1 +0,0 @@ -50d913fa42aa3a270fa531be27c6d9e7 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_94.png deleted file mode 100644 index a70fc3a2739164d0464ed19f7432e428018aa291..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1434 zcmV;L1!ek)P)B;0nocwxV#+j4)< z4!`$v^`7TE=Q-bJ-}9dH?jNKm3Sj67{UDo8|55Ye`TrQ1E}58DS62rieD&&8EFzQ1?%utdJ5_(+ za5!$=x|NesNI8U%!{J=GaA9t4F0I35GTDO%4|1X;CuBJDjvYJJ*Vh+`L~^TUAJAwt z6h--bK7t?`8yo$8|3NFtoD9uVtJT3^aD04x_pVSVq|sH{U^1CboH$WfSlHRw8I49!nnIy~5Hc7Hi9|9uIJo<3FD{pBG#WQIH|OW)QCXc% zclq*V4u@m2*%C@^X=!n}TsLptgb>Q*@^m{&mYfY4n#W?X3Px z91dq~Z4H%06O^K;WKvO^$h;J32|G$rGrqgj008WEdweAG)h2|{WHOmdCZEq23wpg? z0Dw>^MC$@3lNk&KmzI`DlFZA?6N|+tO)8ZF07#NtT3TWU0E6-0%av9~DQadzw(s+dMx)JULlX`FAQFih8ynSX^`}pte*XOV=FJQ@hK5us6_?A^YPHv{T}!t@GO7Lj{V!j>JaXg+T5YD)QL^N$h`+z>alwK)5I_zW zESLian@3}?c{B!_M`N&gGzObTW3YKNCc#ht9zTA(|2i-kkifj==H~s^fyn?!;s58+ o7W~YkG1xpBgUzEc*gP8Z8@#@5aAH{cQUCw|07*qoM6N<$g4{Z?WdHyG diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.map deleted file mode 100644 index 533a66ce3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.md5 deleted file mode 100644 index 0df68f458..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.md5 +++ /dev/null @@ -1 +0,0 @@ -c46308bc905d013a43886037b1dfc5ef \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_95.png deleted file mode 100644 index 2bb74dcfd61a445b7a8cd0230f3b6c715baed5e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 zcmV;B2XFX^P)id;ECD^c`~N>32vG?;`% zP?FN)ixu@ku_(%{7iDUi2<8m&g_UJ6^o=Vr%n?D(Os7*Lqsh`rx9j)f|M#HI&9j<4 z9PSSccFuKw@B6;4`@5U7vj>id2n>e!s9*A@XTV@A7R=lX(ZbBl5G~By4AJ5}_e6Vp zJFZ>3_9y1TVEi=o_4N+t9CmJ#$%F?F9{iRGF&Mwfz`%f0zdG#P)6DluU@-nRv|24x zD%HF(cFoNYEzH~u(ZbBl5G~ByjK7BX_;{3;mwT)~W^NaFy4Z~0i$~0zmX-#NpzNKug9T7huqQ>78ZizI8;|xyQMQ4jo80`KZ1gS5EK*yl}d%d z!9hOW+S-b=v^4np`y(_o6i1I9#n{*wA76|$h>eX!RaMn5_3Z-Sg?;<>p}V^q9UUF8TCK>;%;e*R zg@rhI@+3?q6P`YOing{k96NSwRv&B)=0J0(tE;1VPP-&EHI?%7^ZDbiU%wK^an#t@ zNIQ1yAOOU19LeQ!Dkvx*yWP&WRVWm6?%X*_PEIC2KR=3!ilQe^p78O7^d%)FB$vx+ z*|KGnkdQzf9UXjZWMqW0va%>BD2RfCgDE>Zn?^@R1&n#Kqe$_7eHFr}}6Nm_t zlapv@Xu!RD_fT6~JF87~bu}(sx`g53VPt1#L#}#Q>dw_!RY8H zu3Wh?tM81A3|K4{bar;)<;#~anM_ct)q=;Ki(0M5t5>h^@Zm%B_Vz-lR6?iI@$u5q zQXD^i91@8Hxw*NxbLWm*`f1E&GpeepuxHO6r*&;@ZN=uzo1Mnzh`$DcocCIB=rFfi{}GxhJ^zo+HPms3|)mqWXro*n`~y}iBsIfKDK z0LW}M3mSXoPSV%cM*yh1yL;Yw4Gs=cSXdbS`0;~?h(3M#L?Iy|G(J8qNKZsmSy{>N zl+n@APHS-E#tjM#3?!q`$e&wi4HOCm6&4n{RUf5NNtKnAf;Fyk6f)jlyK|S6lz`(n zgoK3P`Sa&!Y;45p)vHloUyqoW7)Yg3a2$vH{Co@y49wC72M6=deSLia0231v0N_#| z5fOpf+FG1GeHyW`vB=5E!Ryzr0sQYfGTz?akjv$K-|N<`<6}a`p2>#~AK>NXg|%zf z&YOQlMFmVI6C@G|IF7@rRjXh&n^9L+CrA$f2M!#7-EN23Y(_#t0=948j`8vFS#56K zyorK>0z7;6%%Lx5YcNfCcsT!DXnkg~kj7PxKQrF1;_)|>R;v|yy&fqkDHs_UK~`24 z&YwSzp`jtz?RFFw7h`H_N>HCd^t*QLLUVI7Uc7jLl#~=CCMIHhd>mn6VVIhlLVtfh z-_~d}0sz9o!rabJE|fq%F)y7A%sP}=AM|C zfZc9~zrQ~u5()HrJ&KEqJ*IDIX@N$gfzfEh8?ElewKscz8H=?%au-oE*G;`xX|91!ZMrXliOgb8|BQV8ezDvowi`i7*%p zFc=Ij^){Og85tSq?Ciw1Z{N_@*M|!iE?~`?HCVrXJpkbB*|WHP`!?Fz+OTosMz`lb z7a{eL$zf$$(g*2{m^z?cNVNuO3m&oI*&QW63J z0+61bj+HA{qPVyiTCEmRsT2TES62tAREp^6XegCRgocK?egAnTH8nNZv}qGkQ&SNc z8HtXL4kRZhqqMXX>FMbX?IjWkQc_a*+k(#YUS3{MtJOGiC&aJTCFH5DnfsMKcb?d`1{#DK0ZI43$So~&YU@e$B!Sw*Vh;E@$rH*&T{|oVUm+y+qj<(YfD6B}U%xZN3o|!Ev@mlsL<=)FL$ok+GeiqBH$${Ab2CJX)4z7m zYPG*}9t_4$(ca$fH0IRY&i)I6!T48j_=J+d5DDxPN``o0=4OZ%W^RUPVdiFtmj3{T W+LUsTh%7+>0000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.md5 deleted file mode 100644 index 8ff77f63b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.md5 +++ /dev/null @@ -1 +0,0 @@ -b1b834fb334b5d9cab86238a149def7d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_96.png deleted file mode 100644 index e72427254a141eadec3edf0acb3218ad9ccea2ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1790 zcmV-K~!jg?VDXp(p?}^VXO@28nJpP5B_-FdUr*seJhSv8mCS~QhW78@PovSORH|4ke(~bPqT5<@_Uze% zVHk#CWHNc%wr$U!KTqoNqN1W3H*WkMYe|zzW)g{nL?T(OR;SacQmHOoy0qxFeg{gW z5<=+lcmx7LO-+s0>s@L`DUx(%|jMx$Xc7&$pPM~)nc#bQWy<;oQ{n@uDVOG`_w zRx2tp7>p-Ro}jVY?Zz-H5D1{27cN{7i9{3%W#h(;j~_oq8jr^#kw_>MNLx&E1{rVLE zAeYMr1_l}%8!-$kDJcN}%qjx_eEarIsZ_GrY$}y{^ytxWIGjM7Ixr4{!SG9ECb3v- z!-fs}_U$v7Op!=rrXU)PTCG+dk9Yg_ZB!{NEM&1*uV25OoSbZIY$TJ(hYuhA^5x6W z&`@4pp3!K85PtaZAuB8E<;$0mNW^3^ojiFGT}!9adwYA)*yVBo0Q`PG>d9m>Efz~S z9ByrGrO{}ySPVkAefxH~T<-OH?RNXtty=*A6B82vX!rcN;<|lgVT60KcjYfm&=$-3!yKOex zbVv}wzP`ShnFWKv=H_NHnf&?lXVeG%Nq`XA?REgb$B!S;^zGZX0Dw=QKEal>e{kp3yDO+Fifdb zy4~*SOV+Geg9gi&FJG}@1(8Uco<<@O005iKzH{f!sZ*zlii(<=n%=y5Gp`LAjfMsU z0s#OJi9|de4~axty?QmOb2yxMeS3R5hGA>huC-V!-QC@}xw)v$WHQmf<#J_aX0li; zH0AMlsQAnC&LtZe8CkY$8JEjlhgq?29=&??N+c4Mm6d(}{v7~7AP`Wf0DyT<4Rks^6bemmU=D{P z{!z5fLZOh^Y!-<`({&8P&|uxVb2#v$@bEAy0st~H{=HFi$yhAb)YKGOSo4Y( zcu!^}>C8MHPjz*5Utgc!?+*rp9UUDbBO}Gd#gRxP7K`QN-W&y-0zGdi7q?AS52TFvEhnM|fmr_<~8m6eq&7VGlm%k}m36beP9QXM#OAgQ+H z<>f0^t`v*KR4P@g)f$aP5{U!=P^;BGpN~$bOQq6<^fVX@fk1%EH*cc)>C>klK72?Z5YV}CF4?VHw>E9sR8>{Q;cx~91}Z8l z5{OeLesf#k86;ik>FJ?TsY~tRzcTX-GRya8X^p{P$jr>#y?eLA;b>`Tk;~;v?P&4& z+dglstgP(n>RP{ky;Ld{i9{NWW~m)5K7ZRfTeWIcXJ_Y9yZF8QZR_m+0G?U;foGO} z;F+Z#vz$SUM&qCNfio9wx0}IW#8+m?tgf!^Px--F5Hgu8eu_c-_h;z_zMrKZcxLGb go>}^VXO@2a1KKkspE2LBH~;_u07*qoM6N<$f=SJ9LI3~& diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.map deleted file mode 100644 index 5f72a83ce..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.md5 deleted file mode 100644 index 3f5947724..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.md5 +++ /dev/null @@ -1 +0,0 @@ -1cd8b2819fa996d3eee012c4f24f4015 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_97.png deleted file mode 100644 index d1b63c50d8bbf79cdd627e534fcc00c51ec71d95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1449 zcmV;a1y=frP)|=>95Z60KNbirg27;8EA>UaSj1o!E4|i~wQx=Bh4bvi0e}9M z`b+EQg>^r#&Ut*E=YH>(bMLucg$N-)lXe(X3pl0FzEcD3J2lY0Qv)-4Vzb$vK7C4+ zl)szu@^XX05SjjKy}RA+nVFfiOZxk<+wC@+Ejq$HoMf?B(xvCL(Ae1cM})q=Qv>Zg zHPF6O1MT~D=SN>RK9=z{={X)q_(yeLI@$` za5&elU3>TLT~g&&uU;J+8~cBxB~2>6t5hmBo4vBK;&QnR2E&slPflD`JoI`!LdfIs zNTt&H`g)(wm$pNnEJ^$B^?ElpHhOw`^7HdK98Pt0_5A!i{;0054noLaFoZ&3Z*Onp z4RdK}>7z%F6bc1F5SK4se*OA20KjN878Mmm+B%(1CX>0fwFLn1`Fyu;-{x|;xw*OR z?d{*cfB!=RK@fd?ef#_S_{&IXY3aj<53gUp&f#z-CnsZ;H#avgFE8J@a|c3LR#uka zC_jGu(ChU=p)e~e>)yS4fk5CWl9C2RF*P;yN8~W!aJZnL;O5PnHk&ON3?5Dhg+ePU zD-wz1<;#~iQc_aF=kpy7M<5XB?d|1qx#4hle}A7Khz}n=;GCYGp4!@4Jg%y$QmIrP zkH_V5$>nmDN`>P!H8ps>BZLBh0EEzLwc`F4E?ih#TnvRm3Cg8Xso89f=!}Px+~0XT-th3S z)9L*7?OSVWYhz>M+qZ8402Yho%9Sf@HXA~y*Xv1=jFfP>Ts&a0SO9=vFbDwX>gt-A znc3alwOA}nCR43e0|4A^HHSK?pBiyy$Q^tX6AoZZ3}V`FuP` zTpl4_+UDlwnKNg^V)0RuQ?M?=v7RFdg3#%70)b$0anbAbwzRZ7e*Ac6XD1vE4-O87 zLZQUvg@uJOnQUxq%xE-rbaZ57WB>pzUAhzsg;31?pLV-lp-@Cx zK?w06K{TxVdw#!vbaZrcb5kah z1%ttGIGmZ8dG_pCyWKuGICzw9U0q%M{ryWzOP!saI3f~>Dl02>I^E9Bj@#|-?(SA9 zm3eu2N0gVKJTEWrOs`(OI;NzUB<(wo$Gd<3 zeqUdoSS;rA`6iReY&PGxaYG;w^!N9-w6qWeVK5kO-MV#@ZW@h-!C=Vca(wY(rlzLY zY<6*Ru~aJM@p$9o<4GxuSN`C^gN20!7K??SXX2&3c=4jBsHmoEqT00000NkvXXu0mjf D5vtI` diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.map deleted file mode 100644 index a44385de0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.md5 deleted file mode 100644 index 6d52458cf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.md5 +++ /dev/null @@ -1 +0,0 @@ -af127f8efd7b9214f504e0a64933888e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_98.png deleted file mode 100644 index cd719b8bcf48a8bfceb8eb3a7219b5bd1226963b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1530 zcmVeZ{c zsD&dVgM))feMwh#AP~UayLVTlAddWqqL|jdq$~S7sm=_}>c`{pps}$r{#R61R^rBu8?wdYSGIzX#q76l-=d+R0a~pV8jS|EwY7Nm z?3o;)|CmFE4uLTS#u(IUHFoXVg^`hwWyRdFV+U^DyeUtCIY1V(Z8jTJDitOtC*k+| z(bm?6&dyFbLN5!4!vP{fFc^f@YDIm0Jwl;SuFJ|9%Qky%ZVo=559iLELrF;q)M_;j z9z2NQ;o*dNZ{EB?b#*laLBN(RTkz=7BWbLzt`3YbeMOB&(8w@jvqgciHQlEK7AUDF;rGo0>Cdd0Py9@7dRXal$Mr4qtW2Z znKOt)B3Wr=hkjyUV1QC|rzIYb)8@^a>Bx~I6_#YHDi8;c!SXB9RC&#%O40C~eGr`}UE|W}{#*NPfScs;a8UX0u5#tX3=a_Vy;! zoJmt(Ur)Pt@1|F;UeUtB0=Zl+x_|$ER@#b+3Ua&MS$jeBOaDB}Hk*h@6h*Sz?PM~U zXzkjyv~%Z9x_9rMG;TJV>B^NWQhR=Wo&b<2iYepu^z=|;V`GBe>2xN{F`LcQ-rk1nC&<;#}@fIfcwNJPnIXVQH5 z@PPo()YMecF=mrbZnI@svvoQhu3fu^si`S^{`?syPoBiFW5@9H=~HQrR;!gh7Zel# z0HV<-fdBrQEiW&JN~Hp03=W3_q9`Wh(ChU{d5uP6Qu{|;PfrgRV<;{z#`yR+hK7bv zSXh`cW*`tiettd-27}aRGMS{YRAkc3%*xOnj*W@l#+kH^v7-Hli*mN1VomZY7Yo=#}LfBzmOB_&e(`v&dn*RL2G z8$)$NuBqM@PTkB-A=G-B`Gy|CNun4O(PAP_)nYb$DNYf)5G1OO;1D#D8w zFQgMOlSZ%Cqpq$F&CSht{rWY+;V|58Hy%8AkX1gpS+?0aoepQuo<&zz7s|@Ypx5i+ zcDvEr+lvDS4rJ6D3kxm#LV(9zL>;^JcT_xEFXco-Wt zZ204285kIVN~OZ~?b~6sTA|bFaO>7BY5e^8^LY61Aqol#q}_NXO - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.md5 deleted file mode 100644 index 30529d258..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.md5 +++ /dev/null @@ -1 +0,0 @@ -f1bcb75b933276ee5fde30f34c416529 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_99.png deleted file mode 100644 index 6d81796fb0c98be5fe1f1503f2b7a33ae54a626a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmV+$1?2jPP)D1AZ00006VoOIv0RI60 z0RN!9r;`8x1kg!DK~!jg?U`RFdv6@apT}4+f4)hCnZtI08)1d~xp23}B$M1N%F3S+ zbHRlh3Mo=<{EJBPrzn!*a5R#;fLzrT+Vs;;hfcbJ=-ix4uK%|f9tA|fI^ zJ$-a^6aZkgT8Z+_&CTrWY^T#1A0MyLXx!b}?RJ?=hGE#RU%%?>>mMH<5kh@^eOxY= zNFZPPqd_PX0stU{7>4!q^x!z|GwtEwK_-)NIGm`cD4|fO*X!S#xOeRbh{a;DSWJ!t z?DfgXNk~YDLZNtmepV`#a=Dy{=j7x}Pfxqkii(OVD=RG)i&m@U^Z8`2%gf8>=H?JW zy}iB7&CTu-kw{cnSa@`FbbEU{Ha51tzK-7U+D{DxZ*Ol02M0VJZ+?E>XIe!?g+L(C z>2!9xy}i9XD=W+8a=kZwpF{ZM3%u6pbSxH2tyX^^LaWsR04x>@(cIbDaeHktnUa!{ zUS3`hLN=Q%AtAxxa3F*(FE0TAXJ=>rOv4`y9*m5PR99Dfrx^?e0D#G4BAPCjD>5?D zyJvrf@W9*afcNW^l$3>qg^rF6KA&G(TYGqT=$&IU8d)q>Y-}vi-~`tD1UM`mX(!lZEfxD?v|946c-me91Z|LP|!bJvDxgWr>C2n8=|Sx z>4*y)$0sKzkB*Mqw|aYfdwhHx0Dxhb%jG&hKmRHX7K^2(rlz~Q`|9cn$MNCe;kUQ9 zzvoO!OHNJ>3JS8>Y~%%4R#x`jxa8VE3Al25d%LTvORLqszP`F#uIJ}x9LE6w@$vC$ zwVId@m&+|EC}?VGvRbV=ovyR9lc?R=+5!M%WMsH|D=se9Xfzs)hQr~MmX_Am)*c@p z+wJy=iHVJk4FEuYe?O1MBa+?M{%9bAQBhG$CR3$S4G#~y2PLO*I2@5kB#}r?Pfr~V z$KKvvMMZ_v>3nbc zd{ZTVpr+r^se|^~2YS68dLfZWKH060|7B<}4Er}WQhHre2kkX=&|Xsq?KO4yI2)Ii zmZ;b9^Dr8XY&M%5@!>W3D=p1u5R1j+CZyjIDTCgxse|^KI%uz{gZ7#_{sQWTUO2|y R`hEZa002ovPDHLkV1gajbuIt^ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherits.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherits.html deleted file mode 100644 index ebed6a1eb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherits.html +++ /dev/null @@ -1,636 +0,0 @@ - - - - - - - -IRremoteESP8266: Class Hierarchy - - - - - - - - - -

    - -
    -
    - - -
    - -
    - -
    -
    -
    Class Hierarchy
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8cpp.html deleted file mode 100644 index baf4b7576..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8cpp.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Airwell.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Airwell.cpp File Reference
    -
    -
    - -

    Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol. -More...

    - - - - - - - - - - - - -

    -Variables

    const uint8_t kAirwellOverhead = 4
     
    const uint16_t kAirwellHalfClockPeriod = 950
     
    const uint16_t kAirwellHdrMark = 3 * kAirwellHalfClockPeriod
     
    const uint16_t kAirwellHdrSpace = 3 * kAirwellHalfClockPeriod
     
    const uint16_t kAirwellFooterMark = 5 * kAirwellHalfClockPeriod
     
    -

    Detailed Description

    -

    Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.

    -

    Variable Documentation

    - -

    ◆ kAirwellFooterMark

    - -
    -
    - - - - -
    const uint16_t kAirwellFooterMark = 5 * kAirwellHalfClockPeriod
    -
    - -
    -
    - -

    ◆ kAirwellHalfClockPeriod

    - -
    -
    - - - - -
    const uint16_t kAirwellHalfClockPeriod = 950
    -
    - -
    -
    - -

    ◆ kAirwellHdrMark

    - -
    -
    - - - - -
    const uint16_t kAirwellHdrMark = 3 * kAirwellHalfClockPeriod
    -
    - -
    -
    - -

    ◆ kAirwellHdrSpace

    - -
    -
    - - - - -
    const uint16_t kAirwellHdrSpace = 3 * kAirwellHalfClockPeriod
    -
    - -
    -
    - -

    ◆ kAirwellOverhead

    - -
    -
    - - - - -
    const uint8_t kAirwellOverhead = 4
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h.html deleted file mode 100644 index d3157eb98..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Airwell.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Airwell.h File Reference
    -
    -
    - -

    Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  AirwellProtocol
     Native representation of a Airwell A/C message. More...
     
    class  IRAirwellAc
     Class for handling detailed Airwell A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint64_t kAirwellKnownGoodState = 0x140500002
     
    const uint8_t kAirwellMinTemp = 16
     
    const uint8_t kAirwellMaxTemp = 30
     
    const uint8_t kAirwellFanLow = 0
     
    const uint8_t kAirwellFanMedium = 1
     
    const uint8_t kAirwellFanHigh = 2
     
    const uint8_t kAirwellFanAuto = 3
     
    const uint8_t kAirwellCool = 1
     
    const uint8_t kAirwellHeat = 2
     
    const uint8_t kAirwellAuto = 3
     
    const uint8_t kAirwellDry = 4
     
    const uint8_t kAirwellFan = 5
     
    -

    Detailed Description

    -

    Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.

    -

    Variable Documentation

    - -

    ◆ kAirwellAuto

    - -
    -
    - - - - -
    const uint8_t kAirwellAuto = 3
    -
    - -
    -
    - -

    ◆ kAirwellCool

    - -
    -
    - - - - -
    const uint8_t kAirwellCool = 1
    -
    - -
    -
    - -

    ◆ kAirwellDry

    - -
    -
    - - - - -
    const uint8_t kAirwellDry = 4
    -
    - -
    -
    - -

    ◆ kAirwellFan

    - -
    -
    - - - - -
    const uint8_t kAirwellFan = 5
    -
    - -
    -
    - -

    ◆ kAirwellFanAuto

    - -
    -
    - - - - -
    const uint8_t kAirwellFanAuto = 3
    -
    - -
    -
    - -

    ◆ kAirwellFanHigh

    - -
    -
    - - - - -
    const uint8_t kAirwellFanHigh = 2
    -
    - -
    -
    - -

    ◆ kAirwellFanLow

    - -
    -
    - - - - -
    const uint8_t kAirwellFanLow = 0
    -
    - -
    -
    - -

    ◆ kAirwellFanMedium

    - -
    -
    - - - - -
    const uint8_t kAirwellFanMedium = 1
    -
    - -
    -
    - -

    ◆ kAirwellHeat

    - -
    -
    - - - - -
    const uint8_t kAirwellHeat = 2
    -
    - -
    -
    - -

    ◆ kAirwellKnownGoodState

    - -
    -
    - - - - -
    const uint64_t kAirwellKnownGoodState = 0x140500002
    -
    - -
    -
    - -

    ◆ kAirwellMaxTemp

    - -
    -
    - - - - -
    const uint8_t kAirwellMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kAirwellMinTemp

    - -
    -
    - - - - -
    const uint8_t kAirwellMinTemp = 16
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h_source.html deleted file mode 100644 index 6507204b7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Airwell_8h_source.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Airwell.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Airwell.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 David Conran
    -
    2 
    -
    6 
    -
    7 // Supports:
    -
    8 // Brand: Airwell, Model: RC08W remote
    -
    9 // Brand: Airwell, Model: RC04 remote
    -
    10 // Brand: Airwell, Model: DLS 21 DCI R410 AW A/C
    -
    11 
    -
    12 #ifndef IR_AIRWELL_H_
    -
    13 #define IR_AIRWELL_H_
    -
    14 
    -
    15 #define __STDC_LIMIT_MACROS
    -
    16 #include <stdint.h>
    -
    17 #ifndef UNIT_TEST
    -
    18 #include <Arduino.h>
    -
    19 #endif
    -
    20 #include "IRremoteESP8266.h"
    -
    21 #include "IRsend.h"
    -
    22 #ifdef UNIT_TEST
    -
    23 #include "IRsend_test.h"
    -
    24 #endif
    -
    25 
    - -
    28  uint64_t raw; // The state of the IR remote in native IR code form.
    -
    29  struct {
    -
    30  uint64_t :19;
    -
    31  uint64_t Temp :4;
    -
    32  uint64_t :5;
    -
    33  uint64_t Fan :2;
    -
    34  uint64_t Mode :3;
    -
    35  uint64_t PowerToggle:1;
    -
    36  uint64_t :0;
    -
    37  };
    -
    38 };
    -
    39 
    -
    40 // Constants
    -
    41 const uint64_t kAirwellKnownGoodState = 0x140500002; // Mode Fan, Speed 1, 25C
    -
    42 // Temperature
    -
    43 const uint8_t kAirwellMinTemp = 16; // Celsius
    -
    44 const uint8_t kAirwellMaxTemp = 30; // Celsius
    -
    45 // Fan
    -
    46 const uint8_t kAirwellFanLow = 0; // 0b00
    -
    47 const uint8_t kAirwellFanMedium = 1; // 0b01
    -
    48 const uint8_t kAirwellFanHigh = 2; // 0b10
    -
    49 const uint8_t kAirwellFanAuto = 3; // 0b11
    -
    50 // Modes
    -
    51 const uint8_t kAirwellCool = 1; // 0b001
    -
    52 const uint8_t kAirwellHeat = 2; // 0b010
    -
    53 const uint8_t kAirwellAuto = 3; // 0b011
    -
    54 const uint8_t kAirwellDry = 4; // 0b100
    -
    55 const uint8_t kAirwellFan = 5; // 0b101
    -
    56 
    -
    57 
    -
    58 // Classes
    -
    60 class IRAirwellAc {
    -
    61  public:
    -
    62  explicit IRAirwellAc(const uint16_t pin, const bool inverted = false,
    -
    63  const bool use_modulation = true);
    -
    64  void stateReset();
    -
    65 #if SEND_AIRWELL
    -
    66  void send(const uint16_t repeat = kAirwellMinRepeats);
    -
    71  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    72 #endif // SEND_AIRWELL
    -
    73  void begin();
    -
    74  void setPowerToggle(const bool on);
    -
    75  bool getPowerToggle() const;
    -
    76  void setTemp(const uint8_t temp);
    -
    77  uint8_t getTemp() const;
    -
    78  void setFan(const uint8_t speed);
    -
    79  uint8_t getFan() const;
    -
    80  void setMode(const uint8_t mode);
    -
    81  uint8_t getMode() const;
    -
    82  uint64_t getRaw() const;
    -
    83  void setRaw(const uint64_t state);
    -
    84  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    85  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    86  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    87  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    88  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    89  String toString() const;
    -
    90 #ifndef UNIT_TEST
    -
    91 
    -
    92  private:
    - -
    94 #else
    -
    95  IRsendTest _irsend;
    -
    97 #endif
    - -
    100 };
    -
    101 #endif // IR_AIRWELL_H_
    -
    -
    const uint16_t kAirwellMinRepeats
    Definition: IRremoteESP8266.h:938
    -
    const uint8_t kAirwellFanHigh
    Definition: ir_Airwell.h:48
    -
    uint64_t Temp
    Definition: ir_Airwell.h:31
    -
    void send(const uint16_t repeat=kAirwellMinRepeats)
    Send the current internal state as an IR message.
    Definition: ir_Airwell.cpp:108
    -
    uint64_t PowerToggle
    Definition: ir_Airwell.h:35
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Airwell.cpp:225
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Airwell.h:93
    -
    Native representation of a Airwell A/C message.
    Definition: ir_Airwell.h:27
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kAirwellCool
    Definition: ir_Airwell.h:51
    -
    IRAirwellAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Airwell.cpp:85
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Airwell.cpp:240
    -
    const uint8_t kAirwellHeat
    Definition: ir_Airwell.h:52
    -
    void setMode(const uint8_t mode)
    Set the desired operation mode.
    Definition: ir_Airwell.cpp:138
    - -
    const uint8_t kAirwellMinTemp
    Definition: ir_Airwell.h:43
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kAirwellFanAuto
    Definition: ir_Airwell.h:49
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint64_t raw
    Definition: ir_Airwell.h:28
    -
    const uint8_t kAirwellFan
    Definition: ir_Airwell.h:55
    -
    uint8_t getTemp() const
    Get the current temperature setting.
    Definition: ir_Airwell.cpp:233
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint64_t getRaw() const
    Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
    Definition: ir_Airwell.cpp:95
    - -
    const uint8_t kAirwellFanLow
    Definition: ir_Airwell.h:46
    -
    const uint8_t kAirwellAuto
    Definition: ir_Airwell.h:53
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Airwell.h:71
    -
    uint8_t getFan() const
    Get the current fan speed setting.
    Definition: ir_Airwell.cpp:189
    -
    void stateReset()
    Reset the internals of the object to a known good state.
    Definition: ir_Airwell.cpp:114
    -
    AirwellProtocol _
    Definition: ir_Airwell.h:99
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Airwell.cpp:182
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Airwell.cpp:156
    -
    const uint8_t kAirwellMaxTemp
    Definition: ir_Airwell.h:44
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Airwell.cpp:169
    -
    Class for handling detailed Airwell A/C messages.
    Definition: ir_Airwell.h:60
    -
    const uint64_t kAirwellKnownGoodState
    Definition: ir_Airwell.h:41
    -
    uint8_t getMode() const
    Get the current operation mode setting.
    Definition: ir_Airwell.cpp:132
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Airwell.cpp:214
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Airwell.cpp:196
    -
    void setPowerToggle(const bool on)
    Turn on/off the Power Airwell setting.
    Definition: ir_Airwell.cpp:120
    -
    void begin()
    Set up hardware to be able to send a message.
    Definition: ir_Airwell.cpp:90
    -
    uint64_t Fan
    Definition: ir_Airwell.h:33
    -
    const uint8_t kAirwellFanMedium
    Definition: ir_Airwell.h:47
    -
    uint64_t Mode
    Definition: ir_Airwell.h:34
    -
    String toString() const
    Convert the current internal state into a human readable string.
    Definition: ir_Airwell.cpp:275
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    bool getPowerToggle() const
    Get the power toggle setting from the internal state.
    Definition: ir_Airwell.cpp:126
    -
    const uint8_t kAirwellDry
    Definition: ir_Airwell.h:54
    -
    void setRaw(const uint64_t state)
    Set the raw state of the object.
    Definition: ir_Airwell.cpp:101
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Aiwa_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Aiwa_8cpp.html deleted file mode 100644 index f5fd8eaba..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Aiwa_8cpp.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Aiwa.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Aiwa.cpp File Reference
    -
    -
    - -

    Aiwa based protocol. Based off the RC-T501 RCU Inspired by IRremoteESP8266's implementation. -More...

    - - - - - - - - - - -

    -Variables

    const uint16_t kAiwaRcT501PreBits = 26
     
    const uint16_t kAiwaRcT501PostBits = 1
     
    const uint64_t kAiwaRcT501PreData = 0x1D8113FULL
     
    const uint64_t kAiwaRcT501PostData = 1ULL
     
    -

    Detailed Description

    -

    Aiwa based protocol. Based off the RC-T501 RCU Inspired by IRremoteESP8266's implementation.

    -
    See also
    https://github.com/z3t0/Arduino-IRremote
    -

    Variable Documentation

    - -

    ◆ kAiwaRcT501PostBits

    - -
    -
    - - - - -
    const uint16_t kAiwaRcT501PostBits = 1
    -
    - -
    -
    - -

    ◆ kAiwaRcT501PostData

    - -
    -
    - - - - -
    const uint64_t kAiwaRcT501PostData = 1ULL
    -
    - -
    -
    - -

    ◆ kAiwaRcT501PreBits

    - -
    -
    - - - - -
    const uint16_t kAiwaRcT501PreBits = 26
    -
    - -
    -
    - -

    ◆ kAiwaRcT501PreData

    - -
    -
    - - - - -
    const uint64_t kAiwaRcT501PreData = 0x1D8113FULL
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8cpp.html deleted file mode 100644 index cf51c2624..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8cpp.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Amcor.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Amcor.cpp File Reference
    -
    -
    - -

    Amcor A/C protocol. -More...

    - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kAmcorHdrMark = 8200
     
    const uint16_t kAmcorHdrSpace = 4200
     
    const uint16_t kAmcorOneMark = 1500
     
    const uint16_t kAmcorZeroMark = 600
     
    const uint16_t kAmcorOneSpace = kAmcorZeroMark
     
    const uint16_t kAmcorZeroSpace = kAmcorOneMark
     
    const uint16_t kAmcorFooterMark = 1900
     
    const uint16_t kAmcorGap = 34300
     
    const uint8_t kAmcorTolerance = 40
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kAmcorFooterMark

    - -
    -
    - - - - -
    const uint16_t kAmcorFooterMark = 1900
    -
    - -
    -
    - -

    ◆ kAmcorGap

    - -
    -
    - - - - -
    const uint16_t kAmcorGap = 34300
    -
    - -
    -
    - -

    ◆ kAmcorHdrMark

    - -
    -
    - - - - -
    const uint16_t kAmcorHdrMark = 8200
    -
    - -
    -
    - -

    ◆ kAmcorHdrSpace

    - -
    -
    - - - - -
    const uint16_t kAmcorHdrSpace = 4200
    -
    - -
    -
    - -

    ◆ kAmcorOneMark

    - -
    -
    - - - - -
    const uint16_t kAmcorOneMark = 1500
    -
    - -
    -
    - -

    ◆ kAmcorOneSpace

    - -
    -
    - - - - -
    const uint16_t kAmcorOneSpace = kAmcorZeroMark
    -
    - -
    -
    - -

    ◆ kAmcorTolerance

    - -
    -
    - - - - -
    const uint8_t kAmcorTolerance = 40
    -
    - -
    -
    - -

    ◆ kAmcorZeroMark

    - -
    -
    - - - - -
    const uint16_t kAmcorZeroMark = 600
    -
    - -
    -
    - -

    ◆ kAmcorZeroSpace

    - -
    -
    - - - - -
    const uint16_t kAmcorZeroSpace = kAmcorOneMark
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h.html deleted file mode 100644 index 004e6cc2f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Amcor.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Amcor.h File Reference
    -
    -
    - -

    Amcor A/C protocol. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  AmcorProtocol
     Native representation of a Amcor A/C message. More...
     
    class  IRAmcorAc
     Class for handling detailed Amcor A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kAmcorFanMin = 0b001
     
    const uint8_t kAmcorFanMed = 0b010
     
    const uint8_t kAmcorFanMax = 0b011
     
    const uint8_t kAmcorFanAuto = 0b100
     
    const uint8_t kAmcorCool = 0b001
     
    const uint8_t kAmcorHeat = 0b010
     
    const uint8_t kAmcorFan = 0b011
     
    const uint8_t kAmcorDry = 0b100
     
    const uint8_t kAmcorAuto = 0b101
     
    const uint8_t kAmcorMinTemp = 12
     
    const uint8_t kAmcorMaxTemp = 32
     
    const uint8_t kAmcorPowerOn = 0b0011
     
    const uint8_t kAmcorPowerOff = 0b1100
     
    const uint8_t kAmcorMax = 0b11
     
    const uint8_t kAmcorVentOn = 0b11
     
    -

    Detailed Description

    -

    Amcor A/C protocol.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/834
    -
    Remarks
    Kudos to ldellus; For the breakdown and mapping of the bit values.
    -

    Variable Documentation

    - -

    ◆ kAmcorAuto

    - -
    -
    - - - - -
    const uint8_t kAmcorAuto = 0b101
    -
    - -
    -
    - -

    ◆ kAmcorCool

    - -
    -
    - - - - -
    const uint8_t kAmcorCool = 0b001
    -
    - -
    -
    - -

    ◆ kAmcorDry

    - -
    -
    - - - - -
    const uint8_t kAmcorDry = 0b100
    -
    - -
    -
    - -

    ◆ kAmcorFan

    - -
    -
    - - - - -
    const uint8_t kAmcorFan = 0b011
    -
    - -
    -
    - -

    ◆ kAmcorFanAuto

    - -
    -
    - - - - -
    const uint8_t kAmcorFanAuto = 0b100
    -
    - -
    -
    - -

    ◆ kAmcorFanMax

    - -
    -
    - - - - -
    const uint8_t kAmcorFanMax = 0b011
    -
    - -
    -
    - -

    ◆ kAmcorFanMed

    - -
    -
    - - - - -
    const uint8_t kAmcorFanMed = 0b010
    -
    - -
    -
    - -

    ◆ kAmcorFanMin

    - -
    -
    - - - - -
    const uint8_t kAmcorFanMin = 0b001
    -
    - -
    -
    - -

    ◆ kAmcorHeat

    - -
    -
    - - - - -
    const uint8_t kAmcorHeat = 0b010
    -
    - -
    -
    - -

    ◆ kAmcorMax

    - -
    -
    - - - - -
    const uint8_t kAmcorMax = 0b11
    -
    - -
    -
    - -

    ◆ kAmcorMaxTemp

    - -
    -
    - - - - -
    const uint8_t kAmcorMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kAmcorMinTemp

    - -
    -
    - - - - -
    const uint8_t kAmcorMinTemp = 12
    -
    - -
    -
    - -

    ◆ kAmcorPowerOff

    - -
    -
    - - - - -
    const uint8_t kAmcorPowerOff = 0b1100
    -
    - -
    -
    - -

    ◆ kAmcorPowerOn

    - -
    -
    - - - - -
    const uint8_t kAmcorPowerOn = 0b0011
    -
    - -
    -
    - -

    ◆ kAmcorVentOn

    - -
    -
    - - - - -
    const uint8_t kAmcorVentOn = 0b11
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h_source.html deleted file mode 100644 index 412b0d616..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Amcor_8h_source.html +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Amcor.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Amcor.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 David Conran
    -
    2 
    -
    7 // Supports:
    -
    8 // Brand: Amcor, Model: ADR-853H A/C
    -
    9 // Brand: Amcor, Model: TAC-495 remote
    -
    10 // Brand: Amcor, Model: TAC-444 remote
    -
    11 
    -
    12 #ifndef IR_AMCOR_H_
    -
    13 #define IR_AMCOR_H_
    -
    14 
    -
    15 #define __STDC_LIMIT_MACROS
    -
    16 #include <stdint.h>
    -
    17 #ifndef UNIT_TEST
    -
    18 #include <Arduino.h>
    -
    19 #endif
    -
    20 #include "IRremoteESP8266.h"
    -
    21 #include "IRsend.h"
    -
    22 #ifdef UNIT_TEST
    -
    23 #include "IRsend_test.h"
    -
    24 #endif
    -
    25 
    -
    26 
    - -
    29  uint8_t raw[kAmcorStateLength]; // The state of the IR remote.
    -
    30  struct {
    -
    31  // Byte 0
    -
    32  uint8_t :8; // Typically 0x01
    -
    33  // Byte 1
    -
    34  uint8_t Mode :3;
    -
    35  uint8_t :1;
    -
    36  uint8_t Fan :3;
    -
    37  uint8_t :1;
    -
    38  // Byte 2
    -
    39  uint8_t :1;
    -
    40  uint8_t Temp :6;
    -
    41  uint8_t :1;
    -
    42  // Byte 3
    -
    43  uint8_t :8;
    -
    44  // Byte 4
    -
    45  uint8_t :8;
    -
    46  // Byte 5
    -
    47  uint8_t :4;
    -
    48  uint8_t Power :4;
    -
    49  // Byte 6
    -
    50  uint8_t Max :2;
    -
    51  uint8_t :4;
    -
    52  uint8_t Vent :2;
    -
    53  // Byte 7
    -
    54  uint8_t Sum :8;
    -
    55  };
    -
    56 };
    -
    57 
    -
    58 // Constants
    -
    59 
    -
    60 // Fan Control
    -
    61 const uint8_t kAmcorFanMin = 0b001;
    -
    62 const uint8_t kAmcorFanMed = 0b010;
    -
    63 const uint8_t kAmcorFanMax = 0b011;
    -
    64 const uint8_t kAmcorFanAuto = 0b100;
    -
    65 // Modes
    -
    66 const uint8_t kAmcorCool = 0b001;
    -
    67 const uint8_t kAmcorHeat = 0b010;
    -
    68 const uint8_t kAmcorFan = 0b011; // Aka "Vent"
    -
    69 const uint8_t kAmcorDry = 0b100;
    -
    70 const uint8_t kAmcorAuto = 0b101;
    -
    71 
    -
    72 // Temperature
    -
    73 const uint8_t kAmcorMinTemp = 12; // Celsius
    -
    74 const uint8_t kAmcorMaxTemp = 32; // Celsius
    -
    75 
    -
    76 // Power
    -
    77 const uint8_t kAmcorPowerOn = 0b0011; // 0x3
    -
    78 const uint8_t kAmcorPowerOff = 0b1100; // 0xC
    -
    79 
    -
    80 // Max Mode (aka "Lo" in Cool and "Hi" in Heat)
    -
    81 const uint8_t kAmcorMax = 0b11;
    -
    82 
    -
    83 // "Vent" Mode
    -
    84 const uint8_t kAmcorVentOn = 0b11;
    -
    85 
    -
    86 
    -
    87 // Classes
    -
    88 
    -
    90 class IRAmcorAc {
    -
    91  public:
    -
    92  explicit IRAmcorAc(const uint16_t pin, const bool inverted = false,
    -
    93  const bool use_modulation = true);
    -
    94 
    -
    95  void stateReset();
    -
    96 #if SEND_AMCOR
    -
    97  void send(const uint16_t repeat = kAmcorDefaultRepeat);
    -
    102  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    103 #endif // SEND_AMCOR
    -
    104  void begin();
    -
    105  static uint8_t calcChecksum(const uint8_t state[],
    -
    106  const uint16_t length = kAmcorStateLength);
    -
    107  static bool validChecksum(const uint8_t state[],
    -
    108  const uint16_t length = kAmcorStateLength);
    -
    109  void setPower(const bool state);
    -
    110  bool getPower(void) const;
    -
    111  void on(void);
    -
    112  void off(void);
    -
    113  void setTemp(const uint8_t temp);
    -
    114  uint8_t getTemp(void) const;
    -
    115  void setMax(const bool on);
    -
    116  bool getMax(void) const;
    -
    117  void setFan(const uint8_t speed);
    -
    118  uint8_t getFan(void) const;
    -
    119  void setMode(const uint8_t mode);
    -
    120  uint8_t getMode(void) const;
    -
    121  uint8_t* getRaw(void);
    -
    122  void setRaw(const uint8_t state[]);
    -
    123  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    124  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    125  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    126  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    127  stdAc::state_t toCommon(void) const;
    -
    128  String toString(void) const;
    -
    129 #ifndef UNIT_TEST
    -
    130 
    -
    131  private:
    - -
    133 #else
    -
    134  IRsendTest _irsend;
    -
    137 #endif
    - -
    139  void checksum(void);
    -
    140 };
    -
    141 #endif // IR_AMCOR_H_
    -
    -
    uint8_t Mode
    Definition: ir_Amcor.h:34
    -
    IRAmcorAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Amcor.cpp:95
    -
    uint8_t raw[kAmcorStateLength]
    Definition: ir_Amcor.h:29
    -
    uint8_t * getRaw(void)
    Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
    Definition: ir_Amcor.cpp:143
    -
    void setMode(const uint8_t mode)
    Set the desired operation mode.
    Definition: ir_Amcor.cpp:236
    -
    void send(const uint16_t repeat=kAmcorDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Amcor.cpp:105
    -
    const uint8_t kAmcorCool
    Definition: ir_Amcor.h:66
    -
    const uint16_t kAmcorStateLength
    Definition: IRremoteESP8266.h:942
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Amcor.cpp:292
    -
    Native representation of a Amcor A/C message.
    Definition: ir_Amcor.h:28
    -
    const uint8_t kAmcorPowerOn
    Definition: ir_Amcor.h:77
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)
    Calculate the checksum for the supplied state.
    Definition: ir_Amcor.cpp:114
    -
    const uint8_t kAmcorMax
    Definition: ir_Amcor.h:81
    -
    IRsend _irsend
    Definition: ir_Amcor.h:132
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Amcor.cpp:274
    -
    const uint8_t kAmcorHeat
    Definition: ir_Amcor.h:67
    -
    void begin()
    Set up hardware to be able to send a message.
    Definition: ir_Amcor.cpp:100
    - -
    const uint8_t kAmcorFanAuto
    Definition: ir_Amcor.h:64
    -
    uint8_t Fan
    Definition: ir_Amcor.h:36
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint8_t getMode(void) const
    Get the current operation mode setting.
    Definition: ir_Amcor.cpp:230
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Amcor.cpp:209
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    Class for handling detailed Amcor A/C messages.
    Definition: ir_Amcor.h:90
    -
    const uint8_t kAmcorMinTemp
    Definition: ir_Amcor.h:73
    -
    void setMax(const bool on)
    Control the current Maximum Cooling or Heating setting. (i.e. Turbo)
    Definition: ir_Amcor.cpp:189
    -
    uint8_t Temp
    Definition: ir_Amcor.h:40
    -
    void stateReset()
    Reset the internals of the object to a known good state.
    Definition: ir_Amcor.cpp:132
    -
    const uint8_t kAmcorFan
    Definition: ir_Amcor.h:68
    -
    void setRaw(const uint8_t state[])
    Set the raw state of the object.
    Definition: ir_Amcor.cpp:150
    -
    const uint8_t kAmcorVentOn
    Definition: ir_Amcor.h:84
    -
    const uint8_t kAmcorFanMin
    Definition: ir_Amcor.h:61
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Amcor.cpp:342
    - -
    uint8_t Sum
    Definition: ir_Amcor.h:54
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Amcor.cpp:256
    -
    const uint8_t kAmcorDry
    Definition: ir_Amcor.h:69
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Amcor.cpp:224
    -
    const uint8_t kAmcorFanMed
    Definition: ir_Amcor.h:62
    -
    bool getPower(void) const
    Get the power setting from the internal state.
    Definition: ir_Amcor.cpp:168
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Amcor.cpp:174
    -
    void on(void)
    Set the internal state to have the power on.
    Definition: ir_Amcor.cpp:155
    -
    uint8_t Vent
    Definition: ir_Amcor.h:52
    -
    void setPower(const bool state)
    Set the internal state to have the desired power.
    Definition: ir_Amcor.cpp:162
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Amcor.h:102
    -
    uint8_t Power
    Definition: ir_Amcor.h:48
    -
    const uint8_t kAmcorPowerOff
    Definition: ir_Amcor.h:78
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Amcor.cpp:316
    -
    void checksum(void)
    Update the checksum value for the internal state.
    Definition: ir_Amcor.cpp:127
    -
    uint8_t Max
    Definition: ir_Amcor.h:50
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kAmcorStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Amcor.cpp:122
    -
    const uint8_t kAmcorAuto
    Definition: ir_Amcor.h:70
    -
    bool getMax(void) const
    Is the Maximum Cooling or Heating setting (i.e. Turbo) setting on?
    Definition: ir_Amcor.cpp:203
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Amcor.cpp:182
    -
    AmcorProtocol _
    Definition: ir_Amcor.h:138
    -
    const uint8_t kAmcorMaxTemp
    Definition: ir_Amcor.h:74
    -
    const uint16_t kAmcorDefaultRepeat
    Definition: IRremoteESP8266.h:944
    -
    const uint8_t kAmcorFanMax
    Definition: ir_Amcor.h:63
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void off(void)
    Set the internal state to have the power off.
    Definition: ir_Amcor.cpp:158
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Amcor.cpp:305
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8cpp.html deleted file mode 100644 index 7acafb331..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8cpp.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Argo.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Argo.cpp File Reference
    -
    -
    - -

    Argo A/C protocol. Controls an Argo Ulisse 13 DCI A/C. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kArgoHdrMark = 6400
     
    const uint16_t kArgoHdrSpace = 3300
     
    const uint16_t kArgoBitMark = 400
     
    const uint16_t kArgoOneSpace = 2200
     
    const uint16_t kArgoZeroSpace = 900
     
    const uint32_t kArgoGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Argo A/C protocol. Controls an Argo Ulisse 13 DCI A/C.

    -

    Variable Documentation

    - -

    ◆ kArgoBitMark

    - -
    -
    - - - - -
    const uint16_t kArgoBitMark = 400
    -
    - -
    -
    - -

    ◆ kArgoGap

    - -
    -
    - - - - -
    const uint32_t kArgoGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kArgoHdrMark

    - -
    -
    - - - - -
    const uint16_t kArgoHdrMark = 6400
    -
    - -
    -
    - -

    ◆ kArgoHdrSpace

    - -
    -
    - - - - -
    const uint16_t kArgoHdrSpace = 3300
    -
    - -
    -
    - -

    ◆ kArgoOneSpace

    - -
    -
    - - - - -
    const uint16_t kArgoOneSpace = 2200
    -
    - -
    -
    - -

    ◆ kArgoZeroSpace

    - -
    -
    - - - - -
    const uint16_t kArgoZeroSpace = 900
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h.html deleted file mode 100644 index b75cc9cf2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Argo.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Argo.h File Reference
    -
    -
    - -

    Support for Argo Ulisse 13 DCI Mobile Split ACs. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  ArgoProtocol
     Native representation of a Argo A/C message. More...
     
    class  IRArgoAC
     Class for handling detailed Argo A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kArgoHeatBit = 0b00100000
     
    const uint8_t kArgoCool = 0b000
     
    const uint8_t kArgoDry = 0b001
     
    const uint8_t kArgoAuto = 0b010
     
    const uint8_t kArgoOff = 0b011
     
    const uint8_t kArgoHeat = 0b100
     
    const uint8_t kArgoHeatAuto = 0b101
     
    const uint8_t kArgoHeatBlink = 0b110
     
    const uint8_t kArgoFanAuto = 0
     
    const uint8_t kArgoFan1 = 1
     
    const uint8_t kArgoFan2 = 2
     
    const uint8_t kArgoFan3 = 3
     
    const uint8_t kArgoTempDelta = 4
     
    const uint8_t kArgoMaxRoomTemp = 35
     
    const uint8_t kArgoMinTemp = 10
     
    const uint8_t kArgoMaxTemp = 32
     
    const uint8_t kArgoFlapAuto = 0
     
    const uint8_t kArgoFlap1 = 1
     
    const uint8_t kArgoFlap2 = 2
     
    const uint8_t kArgoFlap3 = 3
     
    const uint8_t kArgoFlap4 = 4
     
    const uint8_t kArgoFlap5 = 5
     
    const uint8_t kArgoFlap6 = 6
     
    const uint8_t kArgoFlapFull = 7
     
    -

    Detailed Description

    -

    Support for Argo Ulisse 13 DCI Mobile Split ACs.

    -

    Variable Documentation

    - -

    ◆ kArgoAuto

    - -
    -
    - - - - -
    const uint8_t kArgoAuto = 0b010
    -
    - -
    -
    - -

    ◆ kArgoCool

    - -
    -
    - - - - -
    const uint8_t kArgoCool = 0b000
    -
    - -
    -
    - -

    ◆ kArgoDry

    - -
    -
    - - - - -
    const uint8_t kArgoDry = 0b001
    -
    - -
    -
    - -

    ◆ kArgoFan1

    - -
    -
    - - - - -
    const uint8_t kArgoFan1 = 1
    -
    - -
    -
    - -

    ◆ kArgoFan2

    - -
    -
    - - - - -
    const uint8_t kArgoFan2 = 2
    -
    - -
    -
    - -

    ◆ kArgoFan3

    - -
    -
    - - - - -
    const uint8_t kArgoFan3 = 3
    -
    - -
    -
    - -

    ◆ kArgoFanAuto

    - -
    -
    - - - - -
    const uint8_t kArgoFanAuto = 0
    -
    - -
    -
    - -

    ◆ kArgoFlap1

    - -
    -
    - - - - -
    const uint8_t kArgoFlap1 = 1
    -
    - -
    -
    - -

    ◆ kArgoFlap2

    - -
    -
    - - - - -
    const uint8_t kArgoFlap2 = 2
    -
    - -
    -
    - -

    ◆ kArgoFlap3

    - -
    -
    - - - - -
    const uint8_t kArgoFlap3 = 3
    -
    - -
    -
    - -

    ◆ kArgoFlap4

    - -
    -
    - - - - -
    const uint8_t kArgoFlap4 = 4
    -
    - -
    -
    - -

    ◆ kArgoFlap5

    - -
    -
    - - - - -
    const uint8_t kArgoFlap5 = 5
    -
    - -
    -
    - -

    ◆ kArgoFlap6

    - -
    -
    - - - - -
    const uint8_t kArgoFlap6 = 6
    -
    - -
    -
    - -

    ◆ kArgoFlapAuto

    - -
    -
    - - - - -
    const uint8_t kArgoFlapAuto = 0
    -
    - -
    -
    - -

    ◆ kArgoFlapFull

    - -
    -
    - - - - -
    const uint8_t kArgoFlapFull = 7
    -
    - -
    -
    - -

    ◆ kArgoHeat

    - -
    -
    - - - - -
    const uint8_t kArgoHeat = 0b100
    -
    - -
    -
    - -

    ◆ kArgoHeatAuto

    - -
    -
    - - - - -
    const uint8_t kArgoHeatAuto = 0b101
    -
    - -
    -
    - -

    ◆ kArgoHeatBit

    - -
    -
    - - - - -
    const uint8_t kArgoHeatBit = 0b00100000
    -
    - -
    -
    - -

    ◆ kArgoHeatBlink

    - -
    -
    - - - - -
    const uint8_t kArgoHeatBlink = 0b110
    -
    - -
    -
    - -

    ◆ kArgoMaxRoomTemp

    - -
    -
    - - - - -
    const uint8_t kArgoMaxRoomTemp = 35
    -
    - -
    -
    - -

    ◆ kArgoMaxTemp

    - -
    -
    - - - - -
    const uint8_t kArgoMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kArgoMinTemp

    - -
    -
    - - - - -
    const uint8_t kArgoMinTemp = 10
    -
    - -
    -
    - -

    ◆ kArgoOff

    - -
    -
    - - - - -
    const uint8_t kArgoOff = 0b011
    -
    - -
    -
    - -

    ◆ kArgoTempDelta

    - -
    -
    - - - - -
    const uint8_t kArgoTempDelta = 4
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h_source.html deleted file mode 100644 index 4546cdf27..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Argo_8h_source.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Argo.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Argo.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2017 Schmolders
    -
    4 
    -
    5 // Supports:
    -
    6 // Brand: Argo, Model: Ulisse 13 DCI Mobile Split A/C
    -
    7 
    -
    8 #ifndef IR_ARGO_H_
    -
    9 #define IR_ARGO_H_
    -
    10 
    -
    11 #ifndef UNIT_TEST
    -
    12 #include <Arduino.h>
    -
    13 #endif
    -
    14 #include "IRremoteESP8266.h"
    -
    15 #include "IRsend.h"
    -
    16 #ifdef UNIT_TEST
    -
    17 #include "IRsend_test.h"
    -
    18 #endif
    -
    19 
    -
    20 
    -
    21 // ARGO Ulisse DCI
    -
    22 
    -
    24 union ArgoProtocol {
    -
    25  uint8_t raw[kArgoStateLength];
    -
    26  struct {
    -
    27  // Byte 0
    -
    28  uint64_t :8; // Typically 0b00110101
    -
    29  // Byte 1
    -
    30  uint64_t :8; // Typically 0b10101111
    -
    31  // Byte 2~4
    -
    32  uint64_t :3;
    -
    33  uint64_t Mode :3;
    -
    34  uint64_t Temp :5; // straddle byte 2 and 3
    -
    35  uint64_t Fan :2;
    -
    36  uint64_t RoomTemp :5; // straddle byte 3 and 4
    -
    37  uint64_t Flap :3; // SwingV
    -
    38  uint64_t :3; // OnTimer, maybe hours
    -
    39  // Byte 5
    -
    40  uint64_t :8; // OnTimer, maybe minutes
    -
    41  // Byte 6
    -
    42  uint64_t :8; // OffTimer, maybe minutes
    -
    43  // Byte 7
    -
    44  uint64_t :3; // OffTimer, maybe hours
    -
    45  uint64_t :5; // Time
    -
    46  // Byte 8
    -
    47  uint32_t :6; // Time
    -
    48  uint32_t :1; // Timer On/Off
    -
    49  uint32_t :1; // Timer Program
    -
    50  // Byte 9
    -
    51  uint32_t :1; // Timer Program
    -
    52  uint32_t :1; // Timer 1h
    -
    53  uint32_t Night :1;
    -
    54  uint32_t Max :1;
    -
    55  uint32_t :1; // Filter
    -
    56  uint32_t Power :1;
    -
    57  uint32_t :1; // const 0
    -
    58  uint32_t iFeel :1;
    -
    59  // Byte 10~11
    -
    60  uint32_t :2; // const 01
    -
    61  uint32_t Sum :8; // straddle byte 10 and 11
    -
    62  uint32_t :6;
    -
    63  };
    -
    64 };
    -
    65 
    -
    66 // Constants. Store MSB left.
    -
    67 
    -
    68 const uint8_t kArgoHeatBit = 0b00100000;
    -
    69 
    -
    70 // Mode 0b00111000
    -
    71 const uint8_t kArgoCool = 0b000;
    -
    72 const uint8_t kArgoDry = 0b001;
    -
    73 const uint8_t kArgoAuto = 0b010;
    -
    74 const uint8_t kArgoOff = 0b011;
    -
    75 const uint8_t kArgoHeat = 0b100;
    -
    76 const uint8_t kArgoHeatAuto = 0b101;
    -
    77 // ?no idea what mode that is
    -
    78 const uint8_t kArgoHeatBlink = 0b110;
    -
    79 
    -
    80 // Fan 0b00011000
    -
    81 const uint8_t kArgoFanAuto = 0; // 0b00
    -
    82 const uint8_t kArgoFan1 = 1; // 0b01
    -
    83 const uint8_t kArgoFan2 = 2; // 0b10
    -
    84 const uint8_t kArgoFan3 = 3; // 0b11
    -
    85 
    -
    86 // Temp
    -
    87 const uint8_t kArgoTempDelta = 4;
    -
    88 const uint8_t kArgoMaxRoomTemp = 35; // Celsius
    -
    89 const uint8_t kArgoMinTemp = 10; // Celsius delta +4
    -
    90 const uint8_t kArgoMaxTemp = 32; // Celsius
    -
    91 
    -
    92 // Flap/SwingV
    -
    93 const uint8_t kArgoFlapAuto = 0;
    -
    94 const uint8_t kArgoFlap1 = 1;
    -
    95 const uint8_t kArgoFlap2 = 2;
    -
    96 const uint8_t kArgoFlap3 = 3;
    -
    97 const uint8_t kArgoFlap4 = 4;
    -
    98 const uint8_t kArgoFlap5 = 5;
    -
    99 const uint8_t kArgoFlap6 = 6;
    -
    100 const uint8_t kArgoFlapFull = 7;
    -
    101 
    -
    102 // Legacy defines. (Deprecated)
    -
    103 #define ARGO_COOL_ON kArgoCoolOn
    -
    104 #define ARGO_COOL_OFF kArgoCoolOff
    -
    105 #define ARGO_COOL_AUTO kArgoCoolAuto
    -
    106 #define ARGO_COOL_HUM kArgoCoolHum
    -
    107 #define ARGO_HEAT_ON kArgoHeatOn
    -
    108 #define ARGO_HEAT_AUTO kArgoHeatAuto
    -
    109 #define ARGO_HEAT_BLINK kArgoHeatBlink
    -
    110 #define ARGO_MIN_TEMP kArgoMinTemp
    -
    111 #define ARGO_MAX_TEMP kArgoMaxTemp
    -
    112 #define ARGO_FAN_AUTO kArgoFanAuto
    -
    113 #define ARGO_FAN_3 kArgoFan3
    -
    114 #define ARGO_FAN_2 kArgoFan2
    -
    115 #define ARGO_FAN_1 kArgoFan1
    -
    116 #define ARGO_FLAP_AUTO kArgoFlapAuto
    -
    117 #define ARGO_FLAP_1 kArgoFlap1
    -
    118 #define ARGO_FLAP_2 kArgoFlap2
    -
    119 #define ARGO_FLAP_3 kArgoFlap3
    -
    120 #define ARGO_FLAP_4 kArgoFlap4
    -
    121 #define ARGO_FLAP_5 kArgoFlap5
    -
    122 #define ARGO_FLAP_6 kArgoFlap6
    -
    123 #define ARGO_FLAP_FULL kArgoFlapFull
    -
    124 
    -
    125 
    -
    127 class IRArgoAC {
    -
    128  public:
    -
    129  explicit IRArgoAC(const uint16_t pin, const bool inverted = false,
    -
    130  const bool use_modulation = true);
    -
    131 
    -
    132 #if SEND_ARGO
    -
    133  void send(const uint16_t repeat = kArgoDefaultRepeat);
    -
    138  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    139 #endif // SEND_ARGO
    -
    140  void begin(void);
    -
    141  void on(void);
    -
    142  void off(void);
    -
    143 
    -
    144  void setPower(const bool on);
    -
    145  bool getPower(void) const;
    -
    146 
    -
    147  void setTemp(const uint8_t degrees);
    -
    148  uint8_t getTemp(void) const;
    -
    149 
    -
    150  void setFan(const uint8_t fan);
    -
    151  uint8_t getFan(void) const;
    -
    152 
    -
    153  void setFlap(const uint8_t flap);
    -
    154  uint8_t getFlap(void) const;
    -
    155 
    -
    156  void setMode(const uint8_t mode);
    -
    157  uint8_t getMode(void) const;
    -
    158 
    -
    159  void setMax(const bool on);
    -
    160  bool getMax(void) const;
    -
    161 
    -
    162  void setNight(const bool on);
    -
    163  bool getNight(void) const;
    -
    164 
    -
    165  void setiFeel(const bool on);
    -
    166  bool getiFeel(void) const;
    -
    167 
    -
    168  void setTime(void);
    -
    169  void setRoomTemp(const uint8_t degrees);
    -
    170  uint8_t getRoomTemp(void) const;
    -
    171 
    -
    172  uint8_t* getRaw(void);
    -
    173  void setRaw(const uint8_t state[]);
    -
    174  static uint8_t calcChecksum(const uint8_t state[],
    -
    175  const uint16_t length = kArgoStateLength);
    -
    176  static bool validChecksum(const uint8_t state[],
    -
    177  const uint16_t length = kArgoStateLength);
    -
    178  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    179  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    180  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    181  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    182  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    183  stdAc::state_t toCommon(void) const;
    -
    184  String toString(void) const;
    -
    185 #ifndef UNIT_TEST
    -
    186 
    -
    187  private:
    - -
    189 #else
    -
    190  IRsendTest _irsend;
    -
    192 #endif
    -
    194  // # of bytes per command
    - -
    196  void stateReset(void);
    -
    197  void checksum(void);
    -
    198 
    -
    199  // Attributes
    -
    200  uint8_t flap_mode;
    -
    201  uint8_t heat_mode;
    -
    202  uint8_t cool_mode;
    -
    203 };
    -
    204 
    -
    205 #endif // IR_ARGO_H_
    -
    -
    void setTime(void)
    Set the time for the A/C.
    Definition: ir_Argo.cpp:244
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Argo.cpp:72
    -
    uint32_t Sum
    Definition: ir_Argo.h:61
    -
    uint8_t flap_mode
    Definition: ir_Argo.h:200
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Argo.cpp:176
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Argo.h:188
    -
    const uint8_t kArgoHeatBlink
    Definition: ir_Argo.h:78
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Argo.cpp:182
    -
    const uint8_t kArgoMaxTemp
    Definition: ir_Argo.h:90
    -
    const uint16_t kArgoDefaultRepeat
    Definition: IRremoteESP8266.h:947
    -
    void setTemp(const uint8_t degrees)
    Set the temperature.
    Definition: ir_Argo.cpp:159
    -
    void setFlap(const uint8_t flap)
    Set the flap position. i.e. Swing.
    Definition: ir_Argo.cpp:189
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Argo.cpp:372
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Argo.cpp:265
    -
    uint8_t getRoomTemp(void) const
    Get the currently stored value for the room temperature setting.
    Definition: ir_Argo.cpp:258
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kArgoFlap2
    Definition: ir_Argo.h:95
    -
    uint8_t getFlap(void) const
    Get the flap position. i.e. Swing.
    Definition: ir_Argo.cpp:197
    -
    void stateReset(void)
    Reset the internals of the object to a known good state.
    Definition: ir_Argo.cpp:98
    -
    uint32_t Night
    Definition: ir_Argo.h:53
    -
    const uint8_t kArgoFlap4
    Definition: ir_Argo.h:97
    -
    const uint8_t kArgoHeatBit
    Definition: ir_Argo.h:68
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Argo.h:138
    - -
    bool getPower(void) const
    Get the power setting from the internal state.
    Definition: ir_Argo.cpp:144
    -
    const uint8_t kArgoFlap3
    Definition: ir_Argo.h:96
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kArgoStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Argo.cpp:83
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint16_t kArgoStateLength
    Definition: IRremoteESP8266.h:945
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kArgoFan1
    Definition: ir_Argo.h:82
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Argo.cpp:322
    -
    const uint8_t kArgoOff
    Definition: ir_Argo.h:74
    -
    uint64_t Flap
    Definition: ir_Argo.h:37
    -
    bool getiFeel(void) const
    Get the status of iFeel mode.
    Definition: ir_Argo.cpp:240
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Argo.cpp:302
    -
    const uint8_t kArgoFlapFull
    Definition: ir_Argo.h:100
    -
    uint64_t Mode
    Definition: ir_Argo.h:33
    - -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Argo.cpp:170
    -
    const uint8_t kArgoDry
    Definition: ir_Argo.h:72
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Argo.cpp:346
    -
    const uint8_t kArgoAuto
    Definition: ir_Argo.h:73
    -
    void setRoomTemp(const uint8_t degrees)
    Set the value for the current room temperature.
    Definition: ir_Argo.cpp:250
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Argo.cpp:284
    -
    void off(void)
    Set the internal state to have the power off.
    Definition: ir_Argo.cpp:134
    -
    uint64_t Temp
    Definition: ir_Argo.h:34
    -
    uint32_t Power
    Definition: ir_Argo.h:56
    -
    void setPower(const bool on)
    Set the internal state to have the desired power.
    Definition: ir_Argo.cpp:138
    -
    const uint8_t kArgoFlap1
    Definition: ir_Argo.h:94
    -
    uint8_t raw[kArgoStateLength]
    The state in native IR code form.
    Definition: ir_Argo.h:25
    -
    uint8_t * getRaw(void)
    Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
    Definition: ir_Argo.cpp:119
    -
    uint64_t Fan
    Definition: ir_Argo.h:35
    -
    uint8_t heat_mode
    Definition: ir_Argo.h:201
    -
    uint32_t Max
    Definition: ir_Argo.h:54
    -
    uint64_t RoomTemp
    Definition: ir_Argo.h:36
    -
    const uint8_t kArgoMinTemp
    Definition: ir_Argo.h:89
    -
    void on(void)
    Set the internal state to have the power on.
    Definition: ir_Argo.cpp:131
    -
    void setNight(const bool on)
    Turn on/off the Night mode. i.e. Sleep.
    Definition: ir_Argo.cpp:224
    -
    const uint8_t kArgoFan2
    Definition: ir_Argo.h:83
    -
    const uint8_t kArgoCool
    Definition: ir_Argo.h:71
    -
    void send(const uint16_t repeat=kArgoDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Argo.cpp:63
    -
    ArgoProtocol _
    Definition: ir_Argo.h:195
    -
    const uint8_t kArgoHeatAuto
    Definition: ir_Argo.h:76
    -
    Native representation of a Argo A/C message.
    Definition: ir_Argo.h:24
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Argo.cpp:335
    -
    const uint8_t kArgoHeat
    Definition: ir_Argo.h:75
    -
    void setRaw(const uint8_t state[])
    Set the raw state of the object.
    Definition: ir_Argo.cpp:126
    -
    uint8_t getMode(void) const
    Get the current operation mode setting.
    Definition: ir_Argo.cpp:201
    -
    const uint8_t kArgoFlap5
    Definition: ir_Argo.h:98
    -
    IRArgoAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Argo.cpp:53
    -
    const uint8_t kArgoTempDelta
    Definition: ir_Argo.h:87
    -
    void checksum(void)
    Update the checksum for the internal state.
    Definition: ir_Argo.cpp:89
    -
    const uint8_t kArgoFlap6
    Definition: ir_Argo.h:99
    -
    uint8_t cool_mode
    Definition: ir_Argo.h:202
    -
    bool getMax(void) const
    Is the Max (i.e. Turbo) setting on?
    Definition: ir_Argo.cpp:154
    -
    bool getNight(void) const
    Get the status of Night mode. i.e. Sleep.
    Definition: ir_Argo.cpp:230
    -
    void setiFeel(const bool on)
    Turn on/off the iFeel mode.
    Definition: ir_Argo.cpp:234
    -
    uint32_t iFeel
    Definition: ir_Argo.h:58
    -
    void setMax(const bool on)
    Control the current Max setting. (i.e. Turbo)
    Definition: ir_Argo.cpp:148
    -
    const uint8_t kArgoFlapAuto
    Definition: ir_Argo.h:93
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kArgoFan3
    Definition: ir_Argo.h:84
    -
    Class for handling detailed Argo A/C messages.
    Definition: ir_Argo.h:127
    -
    const uint8_t kArgoFanAuto
    Definition: ir_Argo.h:81
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Argo.cpp:58
    -
    void setMode(const uint8_t mode)
    Set the desired operation mode.
    Definition: ir_Argo.cpp:207
    -
    const uint8_t kArgoMaxRoomTemp
    Definition: ir_Argo.h:88
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8cpp.html deleted file mode 100644 index 23c897e70..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8cpp.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Carrier.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Carrier.cpp File Reference
    -
    -
    - -

    Carrier protocols. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kCarrierAcHdrMark = 8532
     
    const uint16_t kCarrierAcHdrSpace = 4228
     
    const uint16_t kCarrierAcBitMark = 628
     
    const uint16_t kCarrierAcOneSpace = 1320
     
    const uint16_t kCarrierAcZeroSpace = 532
     
    const uint16_t kCarrierAcGap = 20000
     
    const uint16_t kCarrierAcFreq = 38
     
    const uint16_t kCarrierAc40HdrMark = 8402
     
    const uint16_t kCarrierAc40HdrSpace = 4166
     
    const uint16_t kCarrierAc40BitMark = 547
     
    const uint16_t kCarrierAc40OneSpace = 1540
     
    const uint16_t kCarrierAc40ZeroSpace = 497
     
    const uint32_t kCarrierAc40Gap = 150000
     
    const uint16_t kCarrierAc64HdrMark = 8940
     
    const uint16_t kCarrierAc64HdrSpace = 4556
     
    const uint16_t kCarrierAc64BitMark = 503
     
    const uint16_t kCarrierAc64OneSpace = 1736
     
    const uint16_t kCarrierAc64ZeroSpace = 615
     
    const uint32_t kCarrierAc64Gap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kCarrierAc40BitMark

    - -
    -
    - - - - -
    const uint16_t kCarrierAc40BitMark = 547
    -
    - -
    -
    - -

    ◆ kCarrierAc40Gap

    - -
    -
    - - - - -
    const uint32_t kCarrierAc40Gap = 150000
    -
    -
    - -

    ◆ kCarrierAc40HdrMark

    - -
    -
    - - - - -
    const uint16_t kCarrierAc40HdrMark = 8402
    -
    - -
    -
    - -

    ◆ kCarrierAc40HdrSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAc40HdrSpace = 4166
    -
    - -
    -
    - -

    ◆ kCarrierAc40OneSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAc40OneSpace = 1540
    -
    - -
    -
    - -

    ◆ kCarrierAc40ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAc40ZeroSpace = 497
    -
    - -
    -
    - -

    ◆ kCarrierAc64BitMark

    - -
    -
    - - - - -
    const uint16_t kCarrierAc64BitMark = 503
    -
    - -
    -
    - -

    ◆ kCarrierAc64Gap

    - -
    -
    - - - - -
    const uint32_t kCarrierAc64Gap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kCarrierAc64HdrMark

    - -
    -
    - - - - -
    const uint16_t kCarrierAc64HdrMark = 8940
    -
    - -
    -
    - -

    ◆ kCarrierAc64HdrSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAc64HdrSpace = 4556
    -
    - -
    -
    - -

    ◆ kCarrierAc64OneSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAc64OneSpace = 1736
    -
    - -
    -
    - -

    ◆ kCarrierAc64ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAc64ZeroSpace = 615
    -
    - -
    -
    - -

    ◆ kCarrierAcBitMark

    - -
    -
    - - - - -
    const uint16_t kCarrierAcBitMark = 628
    -
    - -
    -
    - -

    ◆ kCarrierAcFreq

    - -
    -
    - - - - -
    const uint16_t kCarrierAcFreq = 38
    -
    - -
    -
    - -

    ◆ kCarrierAcGap

    - -
    -
    - - - - -
    const uint16_t kCarrierAcGap = 20000
    -
    - -
    -
    - -

    ◆ kCarrierAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kCarrierAcHdrMark = 8532
    -
    - -
    -
    - -

    ◆ kCarrierAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAcHdrSpace = 4228
    -
    - -
    -
    - -

    ◆ kCarrierAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAcOneSpace = 1320
    -
    - -
    -
    - -

    ◆ kCarrierAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kCarrierAcZeroSpace = 532
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h.html deleted file mode 100644 index ea603f4ad..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Carrier.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Carrier.h File Reference
    -
    -
    - -

    Carrier A/C. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  CarrierProtocol
     Native representation of a Carrier A/C message. More...
     
    class  IRCarrierAc64
     Class for handling detailed Carrier 64 bit A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kCarrierAc64ChecksumOffset = 16
     
    const uint8_t kCarrierAc64ChecksumSize = 4
     
    const uint8_t kCarrierAc64Heat = 0b01
     
    const uint8_t kCarrierAc64Cool = 0b10
     
    const uint8_t kCarrierAc64Fan = 0b11
     
    const uint8_t kCarrierAc64FanAuto = 0b00
     
    const uint8_t kCarrierAc64FanLow = 0b01
     
    const uint8_t kCarrierAc64FanMedium = 0b10
     
    const uint8_t kCarrierAc64FanHigh = 0b11
     
    const uint8_t kCarrierAc64MinTemp = 16
     
    const uint8_t kCarrierAc64MaxTemp = 30
     
    const uint8_t kCarrierAc64TimerMax = 9
     
    const uint8_t kCarrierAc64TimerMin = 1
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kCarrierAc64ChecksumOffset

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

    ◆ kCarrierAc64ChecksumSize

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

    ◆ kCarrierAc64Cool

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

    ◆ kCarrierAc64Fan

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

    ◆ kCarrierAc64FanAuto

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

    ◆ kCarrierAc64FanHigh

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

    ◆ kCarrierAc64FanLow

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

    ◆ kCarrierAc64FanMedium

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

    ◆ kCarrierAc64Heat

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

    ◆ kCarrierAc64MaxTemp

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

    ◆ kCarrierAc64MinTemp

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

    ◆ kCarrierAc64TimerMax

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

    ◆ kCarrierAc64TimerMin

    - -
    -
    - - - - -
    const uint8_t kCarrierAc64TimerMin = 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h_source.html deleted file mode 100644 index f76413a2d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Carrier_8h_source.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Carrier.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Carrier.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 David Conran
    -
    6 
    -
    7 // Supports:
    -
    8 // Brand: Carrier/Surrey, Model: 42QG5A55970 remote
    -
    9 // Brand: Carrier/Surrey, Model: 619EGX0090E0 A/C
    -
    10 // Brand: Carrier/Surrey, Model: 619EGX0120E0 A/C
    -
    11 // Brand: Carrier/Surrey, Model: 619EGX0180E0 A/C
    -
    12 // Brand: Carrier/Surrey, Model: 619EGX0220E0 A/C
    -
    13 // Brand: Carrier/Surrey, Model: 53NGK009/012 Inverter
    -
    14 
    -
    15 #ifndef IR_CARRIER_H_
    -
    16 #define IR_CARRIER_H_
    -
    17 
    -
    18 #define __STDC_LIMIT_MACROS
    -
    19 #include <stdint.h>
    -
    20 #ifndef UNIT_TEST
    -
    21 #include <Arduino.h>
    -
    22 #endif
    -
    23 #include "IRremoteESP8266.h"
    -
    24 #include "IRsend.h"
    -
    25 #ifdef UNIT_TEST
    -
    26 #include "IRsend_test.h"
    -
    27 #endif
    -
    28 
    - -
    31  uint64_t raw;
    -
    32  struct {
    -
    33  // Byte 0
    -
    34  uint8_t :8;
    -
    35  // Byte 1
    -
    36  uint8_t :8;
    -
    37  // Byte 2
    -
    38  uint8_t Sum:4;
    -
    39  uint8_t Mode:2;
    -
    40  uint8_t Fan:2;
    -
    41  // Byte 3
    -
    42  uint8_t Temp:4;
    -
    43  uint8_t :1;
    -
    44  uint8_t SwingV:1;
    -
    45  uint8_t :2;
    -
    46  // Byte 4
    -
    47  uint8_t :4;
    -
    48  uint8_t Power:1;
    -
    49  uint8_t OffTimerEnable:1;
    -
    50  uint8_t OnTimerEnable:1;
    -
    51  uint8_t Sleep:1;
    -
    52  // Byte 5
    -
    53  uint8_t :8;
    -
    54  // Byte 6
    -
    55  uint8_t :4;
    -
    56  uint8_t OnTimer:4;
    -
    57  // Byte 7
    -
    58  uint8_t :4;
    -
    59  uint8_t OffTimer:4;
    -
    60  };
    -
    61 };
    -
    62 
    -
    63 // Constants
    -
    64 
    -
    65 // CARRIER_AC64
    -
    66 const uint8_t kCarrierAc64ChecksumOffset = 16;
    -
    67 const uint8_t kCarrierAc64ChecksumSize = 4;
    -
    68 const uint8_t kCarrierAc64Heat = 0b01; // 1
    -
    69 const uint8_t kCarrierAc64Cool = 0b10; // 2
    -
    70 const uint8_t kCarrierAc64Fan = 0b11; // 3
    -
    71 const uint8_t kCarrierAc64FanAuto = 0b00; // 0
    -
    72 const uint8_t kCarrierAc64FanLow = 0b01; // 1
    -
    73 const uint8_t kCarrierAc64FanMedium = 0b10; // 2
    -
    74 const uint8_t kCarrierAc64FanHigh = 0b11; // 3
    -
    75 const uint8_t kCarrierAc64MinTemp = 16; // Celsius
    -
    76 const uint8_t kCarrierAc64MaxTemp = 30; // Celsius
    -
    77 const uint8_t kCarrierAc64TimerMax = 9; // Hours.
    -
    78 const uint8_t kCarrierAc64TimerMin = 1; // Hours.
    -
    79 
    -
    80 
    -
    81 // Classes
    -
    82 
    - -
    85  public:
    -
    86  explicit IRCarrierAc64(const uint16_t pin, const bool inverted = false,
    -
    87  const bool use_modulation = true);
    -
    88 
    -
    89  void stateReset();
    -
    90 #if SEND_CARRIER_AC64
    -
    91  void send(const uint16_t repeat = kCarrierAc64MinRepeat);
    -
    96  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    97 #endif // SEND_CARRIER_AC64
    -
    98  void begin();
    -
    99  static uint8_t calcChecksum(const uint64_t state);
    -
    100  static bool validChecksum(const uint64_t state);
    -
    101  void setPower(const bool on);
    -
    102  bool getPower(void) const;
    -
    103  void on(void);
    -
    104  void off(void);
    -
    105  void setTemp(const uint8_t temp);
    -
    106  uint8_t getTemp(void) const;
    -
    107  void setSwingV(const bool on);
    -
    108  bool getSwingV(void) const;
    -
    109  void setSleep(const bool on);
    -
    110  bool getSleep(void) const;
    -
    111  void setFan(const uint8_t speed);
    -
    112  uint8_t getFan(void) const;
    -
    113  void setMode(const uint8_t mode);
    -
    114  uint8_t getMode(void) const;
    -
    115  void setOnTimer(const uint16_t nr_of_mins);
    -
    116  uint16_t getOnTimer(void) const;
    -
    117  void setOffTimer(const uint16_t nr_of_mins);
    -
    118  uint16_t getOffTimer(void) const;
    -
    119  uint64_t getRaw(void);
    -
    120  void setRaw(const uint64_t state);
    -
    121  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    122  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    123  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    124  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    125  stdAc::state_t toCommon(void) const;
    -
    126  String toString(void) const;
    -
    127 #ifndef UNIT_TEST
    -
    128 
    -
    129  private:
    - -
    131 #else
    -
    132  IRsendTest _irsend;
    -
    134 #endif
    - -
    137  void checksum(void);
    -
    138  void _cancelOnTimer(void);
    -
    139  void _cancelOffTimer(void);
    -
    140 };
    -
    141 #endif // IR_CARRIER_H_
    -
    -
    const uint8_t kCarrierAc64MinTemp
    Definition: ir_Carrier.h:75
    -
    const uint8_t kCarrierAc64TimerMin
    Definition: ir_Carrier.h:78
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Carrier.cpp:310
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Carrier.cpp:299
    -
    uint8_t Sleep
    Definition: ir_Carrier.h:51
    -
    uint8_t getTemp(void) const
    Get the current temperature from the internal state.
    Definition: ir_Carrier.cpp:293
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Carrier.cpp:257
    -
    stdAc::state_t toCommon(void) const
    Convert the A/C state to it's common stdAc::state_t equivalent.
    Definition: ir_Carrier.cpp:513
    -
    IRCarrierAc64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Carrier.cpp:226
    -
    uint8_t Fan
    Definition: ir_Carrier.h:40
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t OnTimer
    Definition: ir_Carrier.h:56
    -
    uint8_t OffTimerEnable
    Definition: ir_Carrier.h:49
    -
    const uint8_t kCarrierAc64Heat
    Definition: ir_Carrier.h:68
    - -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    void _cancelOnTimer(void)
    Clear the On Timer enable bit.
    Definition: ir_Carrier.cpp:430
    -
    void begin()
    Set up hardware to be able to send a message.
    Definition: ir_Carrier.cpp:262
    -
    const uint8_t kCarrierAc64Cool
    Definition: ir_Carrier.h:69
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's common stdAc::opmode_t equivalent.
    Definition: ir_Carrier.cpp:349
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint16_t getOffTimer(void) const
    Get the current Off Timer time.
    Definition: ir_Carrier.cpp:466
    -
    void setTemp(const uint8_t temp)
    Set the temp in deg C.
    Definition: ir_Carrier.cpp:285
    -
    void send(const uint16_t repeat=kCarrierAc64MinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Carrier.cpp:267
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Carrier.cpp:375
    -
    void setOffTimer(const uint16_t nr_of_mins)
    Set the Off Timer time.
    Definition: ir_Carrier.cpp:477
    -
    const uint8_t kCarrierAc64TimerMax
    Definition: ir_Carrier.h:77
    -
    const uint8_t kCarrierAc64FanHigh
    Definition: ir_Carrier.h:74
    - -
    Native representation of a Carrier A/C message.
    Definition: ir_Carrier.h:30
    -
    CarrierProtocol _
    Definition: ir_Carrier.h:136
    -
    static bool validChecksum(const uint64_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_Carrier.cpp:250
    -
    uint8_t Mode
    Definition: ir_Carrier.h:39
    -
    const uint8_t kCarrierAc64FanMedium
    Definition: ir_Carrier.h:73
    -
    const uint8_t kCarrierAc64MaxTemp
    Definition: ir_Carrier.h:76
    -
    Class for handling detailed Carrier 64 bit A/C messages.
    Definition: ir_Carrier.h:84
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Carrier.cpp:317
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Carrier.h:130
    -
    void stateReset()
    Reset the internal state to a fixed known good state.
    Definition: ir_Carrier.cpp:232
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Carrier.cpp:313
    -
    uint8_t OffTimer
    Definition: ir_Carrier.h:59
    -
    static uint8_t calcChecksum(const uint64_t state)
    Calculate the checksum for a given state.
    Definition: ir_Carrier.cpp:237
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Carrier.h:96
    -
    uint8_t Sum
    Definition: ir_Carrier.h:38
    -
    void setRaw(const uint64_t state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Carrier.cpp:281
    -
    uint8_t Power
    Definition: ir_Carrier.h:48
    -
    bool getSwingV(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Carrier.cpp:406
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Carrier.cpp:305
    -
    const uint8_t kCarrierAc64Fan
    Definition: ir_Carrier.h:70
    -
    const uint8_t kCarrierAc64ChecksumSize
    Definition: ir_Carrier.h:67
    -
    uint8_t SwingV
    Definition: ir_Carrier.h:44
    -
    void setOnTimer(const uint16_t nr_of_mins)
    Set the On Timer time.
    Definition: ir_Carrier.cpp:448
    -
    uint64_t getRaw(void)
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Carrier.cpp:274
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode into its native mode.
    Definition: ir_Carrier.cpp:338
    -
    const uint16_t kCarrierAc64MinRepeat
    Definition: IRremoteESP8266.h:955
    -
    const uint8_t kCarrierAc64FanLow
    Definition: ir_Carrier.h:72
    -
    const uint8_t kCarrierAc64FanAuto
    Definition: ir_Carrier.h:71
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Carrier.cpp:389
    -
    uint64_t raw
    The state of the IR remote.
    Definition: ir_Carrier.h:31
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Carrier.cpp:365
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Carrier.cpp:323
    -
    void setSwingV(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Carrier.cpp:400
    -
    void setSleep(const bool on)
    Set the Sleep mode of the A/C.
    Definition: ir_Carrier.cpp:412
    -
    void _cancelOffTimer(void)
    Clear the Off Timer enable bit.
    Definition: ir_Carrier.cpp:459
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Carrier.cpp:490
    -
    bool getSleep(void) const
    Get the Sleep mode of the A/C.
    Definition: ir_Carrier.cpp:425
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t Temp
    Definition: ir_Carrier.h:42
    -
    uint8_t OnTimerEnable
    Definition: ir_Carrier.h:50
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Carrier.cpp:359
    -
    uint16_t getOnTimer(void) const
    Get the current On Timer time.
    Definition: ir_Carrier.cpp:437
    -
    const uint8_t kCarrierAc64ChecksumOffset
    Definition: ir_Carrier.h:66
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8cpp.html deleted file mode 100644 index d09e7f0cf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8cpp.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Coolix.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Coolix.cpp File Reference
    -
    -
    - -

    Coolix A/C / heatpump. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kCoolixTick = 276
     
    const uint16_t kCoolixBitMarkTicks = 2
     
    const uint16_t kCoolixBitMark = kCoolixBitMarkTicks * kCoolixTick
     
    const uint16_t kCoolixOneSpaceTicks = 6
     
    const uint16_t kCoolixOneSpace = kCoolixOneSpaceTicks * kCoolixTick
     
    const uint16_t kCoolixZeroSpaceTicks = 2
     
    const uint16_t kCoolixZeroSpace = kCoolixZeroSpaceTicks * kCoolixTick
     
    const uint16_t kCoolixHdrMarkTicks = 17
     
    const uint16_t kCoolixHdrMark = kCoolixHdrMarkTicks * kCoolixTick
     
    const uint16_t kCoolixHdrSpaceTicks = 16
     
    const uint16_t kCoolixHdrSpace = kCoolixHdrSpaceTicks * kCoolixTick
     
    const uint16_t kCoolixMinGapTicks = kCoolixHdrMarkTicks + kCoolixZeroSpaceTicks
     
    const uint16_t kCoolixMinGap = kCoolixMinGapTicks * kCoolixTick
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kCoolixBitMark

    - -
    -
    - - - - -
    const uint16_t kCoolixBitMark = kCoolixBitMarkTicks * kCoolixTick
    -
    - -
    -
    - -

    ◆ kCoolixBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kCoolixBitMarkTicks = 2
    -
    - -
    -
    - -

    ◆ kCoolixHdrMark

    - -
    -
    - - - - -
    const uint16_t kCoolixHdrMark = kCoolixHdrMarkTicks * kCoolixTick
    -
    - -
    -
    - -

    ◆ kCoolixHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kCoolixHdrMarkTicks = 17
    -
    - -
    -
    - -

    ◆ kCoolixHdrSpace

    - -
    -
    - - - - -
    const uint16_t kCoolixHdrSpace = kCoolixHdrSpaceTicks * kCoolixTick
    -
    - -
    -
    - -

    ◆ kCoolixHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kCoolixHdrSpaceTicks = 16
    -
    - -
    -
    - -

    ◆ kCoolixMinGap

    - -
    -
    - - - - -
    const uint16_t kCoolixMinGap = kCoolixMinGapTicks * kCoolixTick
    -
    - -
    -
    - -

    ◆ kCoolixMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kCoolixMinGapTicks = kCoolixHdrMarkTicks + kCoolixZeroSpaceTicks
    -
    - -
    -
    - -

    ◆ kCoolixOneSpace

    - -
    -
    - - - - -
    const uint16_t kCoolixOneSpace = kCoolixOneSpaceTicks * kCoolixTick
    -
    - -
    -
    - -

    ◆ kCoolixOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kCoolixOneSpaceTicks = 6
    -
    - -
    -
    - -

    ◆ kCoolixTick

    - -
    -
    - - - - -
    const uint16_t kCoolixTick = 276
    -
    - -
    -
    - -

    ◆ kCoolixZeroSpace

    - -
    -
    - - - - -
    const uint16_t kCoolixZeroSpace = kCoolixZeroSpaceTicks * kCoolixTick
    -
    - -
    -
    - -

    ◆ kCoolixZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kCoolixZeroSpaceTicks = 2
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h.html deleted file mode 100644 index 8ff8028f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h.html +++ /dev/null @@ -1,588 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Coolix.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Coolix.h File Reference
    -
    -
    - -

    Support for Coolix A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  CoolixProtocol
     Native representation of a Coolix A/C message. More...
     
    class  IRCoolixAC
     Class for handling detailed Coolix A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kCoolixCool = 0b000
     
    const uint8_t kCoolixDry = 0b001
     
    const uint8_t kCoolixAuto = 0b010
     
    const uint8_t kCoolixHeat = 0b011
     
    const uint8_t kCoolixFan = 0b100
     
    const uint8_t kCoolixFanMin = 0b100
     
    const uint8_t kCoolixFanMed = 0b010
     
    const uint8_t kCoolixFanMax = 0b001
     
    const uint8_t kCoolixFanAuto = 0b101
     
    const uint8_t kCoolixFanAuto0 = 0b000
     
    const uint8_t kCoolixFanZoneFollow = 0b110
     
    const uint8_t kCoolixFanFixed = 0b111
     
    const uint8_t kCoolixTempMin = 17
     
    const uint8_t kCoolixTempMax = 30
     
    const uint8_t kCoolixTempRange = kCoolixTempMax - kCoolixTempMin + 1
     
    const uint8_t kCoolixFanTempCode = 0b1110
     
    const uint8_t kCoolixTempMap [kCoolixTempRange]
     
    const uint8_t kCoolixSensorTempMax = 30
     
    const uint8_t kCoolixSensorTempIgnoreCode = 0b11111
     
    const uint32_t kCoolixOff = 0b101100100111101111100000
     
    const uint32_t kCoolixSwing = 0b101100100110101111100000
     
    const uint32_t kCoolixSwingH = 0b101100101111010110100010
     
    const uint32_t kCoolixSwingV = 0b101100100000111111100000
     
    const uint32_t kCoolixSleep = 0b101100101110000000000011
     
    const uint32_t kCoolixTurbo = 0b101101011111010110100010
     
    const uint32_t kCoolixLed = 0b101101011111010110100101
     
    const uint32_t kCoolixClean = 0b101101011111010110101010
     
    const uint32_t kCoolixCmdFan = 0b101100101011111111100100
     
    const uint32_t kCoolixDefaultState = 0b101100100001111111001000
     
    -

    Detailed Description

    -

    Support for Coolix A/C protocols.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/484
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/1318
    -
    Note
    Kudos: Hamper: For the breakdown and mapping of the bit values. fraschizzato: For additional ZoneFollow & SwingVStep analysis.
    -

    Variable Documentation

    - -

    ◆ kCoolixAuto

    - -
    -
    - - - - -
    const uint8_t kCoolixAuto = 0b010
    -
    - -
    -
    - -

    ◆ kCoolixClean

    - -
    -
    - - - - -
    const uint32_t kCoolixClean = 0b101101011111010110101010
    -
    - -
    -
    - -

    ◆ kCoolixCmdFan

    - -
    -
    - - - - -
    const uint32_t kCoolixCmdFan = 0b101100101011111111100100
    -
    - -
    -
    - -

    ◆ kCoolixCool

    - -
    -
    - - - - -
    const uint8_t kCoolixCool = 0b000
    -
    - -
    -
    - -

    ◆ kCoolixDefaultState

    - -
    -
    - - - - -
    const uint32_t kCoolixDefaultState = 0b101100100001111111001000
    -
    - -
    -
    - -

    ◆ kCoolixDry

    - -
    -
    - - - - -
    const uint8_t kCoolixDry = 0b001
    -
    - -
    -
    - -

    ◆ kCoolixFan

    - -
    -
    - - - - -
    const uint8_t kCoolixFan = 0b100
    -
    - -
    -
    - -

    ◆ kCoolixFanAuto

    - -
    -
    - - - - -
    const uint8_t kCoolixFanAuto = 0b101
    -
    - -
    -
    - -

    ◆ kCoolixFanAuto0

    - -
    -
    - - - - -
    const uint8_t kCoolixFanAuto0 = 0b000
    -
    - -
    -
    - -

    ◆ kCoolixFanFixed

    - -
    -
    - - - - -
    const uint8_t kCoolixFanFixed = 0b111
    -
    - -
    -
    - -

    ◆ kCoolixFanMax

    - -
    -
    - - - - -
    const uint8_t kCoolixFanMax = 0b001
    -
    - -
    -
    - -

    ◆ kCoolixFanMed

    - -
    -
    - - - - -
    const uint8_t kCoolixFanMed = 0b010
    -
    - -
    -
    - -

    ◆ kCoolixFanMin

    - -
    -
    - - - - -
    const uint8_t kCoolixFanMin = 0b100
    -
    - -
    -
    - -

    ◆ kCoolixFanTempCode

    - -
    -
    - - - - -
    const uint8_t kCoolixFanTempCode = 0b1110
    -
    - -
    -
    - -

    ◆ kCoolixFanZoneFollow

    - -
    -
    - - - - -
    const uint8_t kCoolixFanZoneFollow = 0b110
    -
    - -
    -
    - -

    ◆ kCoolixHeat

    - -
    -
    - - - - -
    const uint8_t kCoolixHeat = 0b011
    -
    - -
    -
    - -

    ◆ kCoolixLed

    - -
    -
    - - - - -
    const uint32_t kCoolixLed = 0b101101011111010110100101
    -
    - -
    -
    - -

    ◆ kCoolixOff

    - -
    -
    - - - - -
    const uint32_t kCoolixOff = 0b101100100111101111100000
    -
    - -
    -
    - -

    ◆ kCoolixSensorTempIgnoreCode

    - -
    -
    - - - - -
    const uint8_t kCoolixSensorTempIgnoreCode = 0b11111
    -
    - -
    -
    - -

    ◆ kCoolixSensorTempMax

    - -
    -
    - - - - -
    const uint8_t kCoolixSensorTempMax = 30
    -
    - -
    -
    - -

    ◆ kCoolixSleep

    - -
    -
    - - - - -
    const uint32_t kCoolixSleep = 0b101100101110000000000011
    -
    - -
    -
    - -

    ◆ kCoolixSwing

    - -
    -
    - - - - -
    const uint32_t kCoolixSwing = 0b101100100110101111100000
    -
    - -
    -
    - -

    ◆ kCoolixSwingH

    - -
    -
    - - - - -
    const uint32_t kCoolixSwingH = 0b101100101111010110100010
    -
    - -
    -
    - -

    ◆ kCoolixSwingV

    - -
    -
    - - - - -
    const uint32_t kCoolixSwingV = 0b101100100000111111100000
    -
    - -
    -
    - -

    ◆ kCoolixTempMap

    - -
    -
    - - - - -
    const uint8_t kCoolixTempMap[kCoolixTempRange]
    -
    -Initial value:
    = {
    -
    0b0000,
    -
    0b0001,
    -
    0b0011,
    -
    0b0010,
    -
    0b0110,
    -
    0b0111,
    -
    0b0101,
    -
    0b0100,
    -
    0b1100,
    -
    0b1101,
    -
    0b1001,
    -
    0b1000,
    -
    0b1010,
    -
    0b1011
    -
    }
    -
    -
    -
    - -

    ◆ kCoolixTempMax

    - -
    -
    - - - - -
    const uint8_t kCoolixTempMax = 30
    -
    - -
    -
    - -

    ◆ kCoolixTempMin

    - -
    -
    - - - - -
    const uint8_t kCoolixTempMin = 17
    -
    - -
    -
    - -

    ◆ kCoolixTempRange

    - -
    -
    - - - - -
    const uint8_t kCoolixTempRange = kCoolixTempMax - kCoolixTempMin + 1
    -
    - -
    -
    - -

    ◆ kCoolixTurbo

    - -
    -
    - - - - -
    const uint32_t kCoolixTurbo = 0b101101011111010110100010
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h_source.html deleted file mode 100644 index aa1ac42aa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Coolix_8h_source.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Coolix.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Coolix.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018 David Conran
    -
    9 
    -
    10 // Supports:
    -
    11 // Brand: Beko, Model: RG57K7(B)/BGEF Remote
    -
    12 // Brand: Beko, Model: BINR 070/071 split-type A/C
    -
    13 // Brand: Midea, Model: RG52D/BGE Remote
    -
    14 // Brand: Midea, Model: MS12FU-10HRDN1-QRD0GW(B) A/C
    -
    15 // Brand: Midea, Model: MSABAU-07HRFN1-QRD0GW A/C (circa 2016)
    -
    16 // Brand: Tokio, Model: AATOEMF17-12CHR1SW split-type RG51|50/BGE Remote
    -
    17 // Brand: Airwell, Model: RC08B remote
    -
    18 // Brand: Kastron, Model: RG57A7/BGEF Inverter remote
    -
    19 // Brand: Kaysun, Model: Casual CF A/C
    -
    20 // Brand: Toshiba, Model: RAS-M10YKV-E A/C
    -
    21 // Brand: Toshiba, Model: RAS-M13YKV-E A/C
    -
    22 // Brand: Toshiba, Model: RAS-4M27YAV-E A/C
    -
    23 // Brand: Toshiba, Model: WH-E1YE remote
    -
    24 
    -
    25 #ifndef IR_COOLIX_H_
    -
    26 #define IR_COOLIX_H_
    -
    27 
    -
    28 #define __STDC_LIMIT_MACROS
    -
    29 #include <stdint.h>
    -
    30 #ifndef UNIT_TEST
    -
    31 #include <Arduino.h>
    -
    32 #endif
    -
    33 #include "IRremoteESP8266.h"
    -
    34 #include "IRsend.h"
    -
    35 #ifdef UNIT_TEST
    -
    36 #include "IRsend_test.h"
    -
    37 #endif
    -
    38 
    -
    39 // Constants
    -
    40 // Modes
    -
    41 const uint8_t kCoolixCool = 0b000;
    -
    42 const uint8_t kCoolixDry = 0b001;
    -
    43 const uint8_t kCoolixAuto = 0b010;
    -
    44 const uint8_t kCoolixHeat = 0b011;
    -
    45 const uint8_t kCoolixFan = 0b100; // Synthetic.
    -
    46 // const uint32_t kCoolixModeMask = 0b000000000000000000001100; // 0xC
    -
    47 // const uint32_t kCoolixZoneFollowMask = 0b000010000000000000000010 0x80002
    -
    48 // Fan Control
    -
    49 const uint8_t kCoolixFanMin = 0b100;
    -
    50 const uint8_t kCoolixFanMed = 0b010;
    -
    51 const uint8_t kCoolixFanMax = 0b001;
    -
    52 const uint8_t kCoolixFanAuto = 0b101;
    -
    53 const uint8_t kCoolixFanAuto0 = 0b000;
    -
    54 const uint8_t kCoolixFanZoneFollow = 0b110;
    -
    55 const uint8_t kCoolixFanFixed = 0b111;
    -
    56 // Temperature
    -
    57 const uint8_t kCoolixTempMin = 17; // Celsius
    -
    58 const uint8_t kCoolixTempMax = 30; // Celsius
    - -
    60 const uint8_t kCoolixFanTempCode = 0b1110; // Part of Fan Mode.
    -
    61 const uint8_t kCoolixTempMap[kCoolixTempRange] = {
    -
    62  0b0000, // 17C
    -
    63  0b0001, // 18c
    -
    64  0b0011, // 19C
    -
    65  0b0010, // 20C
    -
    66  0b0110, // 21C
    -
    67  0b0111, // 22C
    -
    68  0b0101, // 23C
    -
    69  0b0100, // 24C
    -
    70  0b1100, // 25C
    -
    71  0b1101, // 26C
    -
    72  0b1001, // 27C
    -
    73  0b1000, // 28C
    -
    74  0b1010, // 29C
    -
    75  0b1011 // 30C
    -
    76 };
    -
    77 const uint8_t kCoolixSensorTempMax = 30; // Celsius
    -
    78 const uint8_t kCoolixSensorTempIgnoreCode = 0b11111; // 0x1F / 31 (DEC)
    -
    79 // kCoolixSensorTempMask = 0b000000000000111100000000; // 0xF00
    -
    80 // Fixed states/messages.
    -
    81 const uint32_t kCoolixOff = 0b101100100111101111100000; // 0xB27BE0
    -
    82 const uint32_t kCoolixSwing = 0b101100100110101111100000; // 0xB26BE0
    -
    83 const uint32_t kCoolixSwingH = 0b101100101111010110100010; // 0xB5F5A2
    -
    84 const uint32_t kCoolixSwingV = 0b101100100000111111100000; // 0xB20FE0
    -
    85 const uint32_t kCoolixSleep = 0b101100101110000000000011; // 0xB2E003
    -
    86 const uint32_t kCoolixTurbo = 0b101101011111010110100010; // 0xB5F5A2
    -
    87 const uint32_t kCoolixLed = 0b101101011111010110100101; // 0xB5F5A5
    -
    88 const uint32_t kCoolixClean = 0b101101011111010110101010; // 0xB5F5AA
    -
    89 const uint32_t kCoolixCmdFan = 0b101100101011111111100100; // 0xB2BFE4
    -
    90 // On, 25C, Mode: Auto, Fan: Auto, Zone Follow: Off, Sensor Temp: Ignore.
    -
    91 const uint32_t kCoolixDefaultState = 0b101100100001111111001000; // 0xB21FC8
    -
    92 
    - -
    95  uint32_t raw;
    -
    96  struct { // Only 24 bits are used.
    -
    97  // Byte
    -
    98  uint32_t :1; // Unknown
    -
    99  uint32_t ZoneFollow1:1;
    -
    100  uint32_t Mode :2;
    -
    101  uint32_t Temp :4;
    -
    102  // Byte
    -
    103  uint32_t SensorTemp :5;
    -
    104  uint32_t Fan :3;
    -
    105  // Byte
    -
    106  uint32_t :3; // Unknown
    -
    107  uint32_t ZoneFollow2:1;
    -
    108  uint32_t :4;
    -
    109  };
    -
    110 };
    -
    111 
    -
    112 // Classes
    -
    113 
    -
    116 class IRCoolixAC {
    -
    117  public:
    -
    118  explicit IRCoolixAC(const uint16_t pin, const bool inverted = false,
    -
    119  const bool use_modulation = true);
    -
    120  void stateReset(void);
    -
    121 #if SEND_COOLIX
    -
    122  void send(const uint16_t repeat = kCoolixDefaultRepeat);
    -
    127  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    128 #endif // SEND_COOLIX
    -
    129  void begin(void);
    -
    130  void on(void);
    -
    131  void off(void);
    -
    132  void setPower(const bool on);
    -
    133  bool getPower(void) const;
    -
    134  void setTemp(const uint8_t temp);
    -
    135  uint8_t getTemp(void) const;
    -
    136  void setSensorTemp(const uint8_t temp);
    -
    137  uint8_t getSensorTemp(void) const;
    -
    138  void clearSensorTemp(void);
    -
    139  void setFan(const uint8_t speed, const bool modecheck = true);
    -
    140  uint8_t getFan(void) const;
    -
    141  void setMode(const uint8_t mode);
    -
    142  uint8_t getMode(void) const;
    -
    143  void setSwing(void);
    -
    144  bool getSwing(void) const;
    -
    145  void setSwingVStep(void);
    -
    146  bool getSwingVStep(void) const;
    -
    147  void setSleep(void);
    -
    148  bool getSleep(void) const;
    -
    149  void setTurbo(void);
    -
    150  bool getTurbo(void) const;
    -
    151  void setLed(void);
    -
    152  bool getLed(void) const;
    -
    153  void setClean(void);
    -
    154  bool getClean(void) const;
    -
    155  bool getZoneFollow(void) const;
    -
    156  uint32_t getRaw(void) const;
    -
    157  void setRaw(const uint32_t new_code);
    -
    158  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    159  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    160  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    161  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    162  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    163  String toString(void) const;
    -
    164 #ifndef UNIT_TEST
    -
    165 
    -
    166  private:
    - -
    168 #else
    -
    169  IRsendTest _irsend;
    -
    171 #endif
    - - -
    175 
    -
    176  // Internal State settings
    -
    177  bool powerFlag;
    -
    178  bool turboFlag;
    -
    179  bool ledFlag;
    -
    180  bool cleanFlag;
    -
    181  bool sleepFlag;
    -
    182  bool swingFlag;
    -
    183  uint8_t savedFan;
    -
    184 
    -
    185  void setTempRaw(const uint8_t code);
    -
    186  uint8_t getTempRaw(void) const;
    -
    187  void setSensorTempRaw(const uint8_t code);
    -
    188  void setZoneFollow(const bool on);
    -
    189  bool isSpecialState(void) const;
    -
    190  bool handleSpecialState(const uint32_t data);
    -
    191  void updateAndSaveState(const uint32_t raw_state);
    -
    192  void recoverSavedState(void);
    -
    193  uint32_t getNormalState(void);
    -
    194 };
    -
    195 
    -
    196 #endif // IR_COOLIX_H_
    -
    -
    bool getSwing(void) const
    Get the Swing setting of the A/C.
    Definition: ir_Coolix.cpp:280
    -
    const uint8_t kCoolixFanZoneFollow
    Definition: ir_Coolix.h:54
    -
    bool getClean(void) const
    Get the Clean setting of the A/C.
    Definition: ir_Coolix.cpp:332
    -
    uint32_t getNormalState(void)
    -
    uint8_t savedFan
    Definition: ir_Coolix.h:183
    -
    void setTempRaw(const uint8_t code)
    Set the raw (native) temperature value.
    Definition: ir_Coolix.cpp:213
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Coolix.cpp:400
    -
    void setSensorTempRaw(const uint8_t code)
    Set the raw (native) sensor temperature value.
    Definition: ir_Coolix.cpp:240
    -
    const uint8_t kCoolixFanMin
    Definition: ir_Coolix.h:49
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Coolix.h:127
    -
    void setZoneFollow(const bool on)
    Change the Zone Follow setting.
    Definition: ir_Coolix.cpp:349
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Coolix.cpp:363
    -
    const uint32_t kCoolixSwingH
    Definition: ir_Coolix.h:83
    -
    uint32_t getRaw(void) const
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Coolix.cpp:124
    -
    void send(const uint16_t repeat=kCoolixDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Coolix.cpp:109
    -
    void clearSensorTemp(void)
    Clear the Sensor Temperature setting..
    Definition: ir_Coolix.cpp:356
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Coolix.cpp:273
    -
    const uint8_t kCoolixFanAuto0
    Definition: ir_Coolix.h:53
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kCoolixDry
    Definition: ir_Coolix.h:42
    -
    bool getLed(void) const
    Get the Led (light) setting of the A/C.
    Definition: ir_Coolix.cpp:321
    -
    bool getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Coolix.cpp:310
    -
    const uint8_t kCoolixFanMed
    Definition: ir_Coolix.h:50
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Coolix.h:167
    -
    bool turboFlag
    Definition: ir_Coolix.h:178
    - -
    bool ledFlag
    Definition: ir_Coolix.h:179
    -
    const uint32_t kCoolixSwing
    Definition: ir_Coolix.h:82
    -
    void setLed(void)
    Toggle the Led (light) mode of the A/C.
    Definition: ir_Coolix.cpp:324
    -
    const uint8_t kCoolixCool
    Definition: ir_Coolix.h:41
    -
    const uint8_t kCoolixAuto
    Definition: ir_Coolix.h:43
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    bool cleanFlag
    Definition: ir_Coolix.h:180
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Coolix.cpp:485
    -
    Native representation of a Coolix A/C message.
    Definition: ir_Coolix.h:94
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kCoolixHeat
    Definition: ir_Coolix.h:44
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode into its native mode.
    Definition: ir_Coolix.cpp:445
    -
    const uint32_t kCoolixOff
    Definition: ir_Coolix.h:81
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    void recoverSavedState(void)
    Restore the current internal state from backup as long as it isn't a special state.
    Definition: ir_Coolix.cpp:202
    -
    const uint8_t kCoolixFanTempCode
    Definition: ir_Coolix.h:60
    -
    void setSensorTemp(const uint8_t temp)
    Set the sensor temperature.
    Definition: ir_Coolix.cpp:246
    -
    void setTurbo(void)
    Toggle the Turbo mode of the A/C.
    Definition: ir_Coolix.cpp:313
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Coolix.cpp:230
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Coolix.cpp:276
    - -
    uint32_t Fan
    Fan speed.
    Definition: ir_Coolix.h:104
    -
    const uint8_t kCoolixTempMap[kCoolixTempRange]
    Definition: ir_Coolix.h:61
    -
    const uint32_t kCoolixClean
    Definition: ir_Coolix.h:88
    -
    CoolixProtocol _
    The state of the IR remote in IR code form.
    Definition: ir_Coolix.h:173
    -
    const uint8_t kCoolixFanFixed
    Definition: ir_Coolix.h:55
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Coolix.cpp:91
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Coolix.cpp:300
    -
    const uint32_t kCoolixDefaultState
    Definition: ir_Coolix.h:91
    -
    uint32_t SensorTemp
    The temperature sensor in the IR remote.
    Definition: ir_Coolix.h:103
    -
    const uint16_t kCoolixDefaultRepeat
    Definition: IRremoteESP8266.h:949
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Coolix.cpp:458
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's common stdAc::opmode_t equivalent.
    Definition: ir_Coolix.cpp:472
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Coolix.cpp:221
    -
    void setSwingVStep(void)
    Set the Vertical Swing Step setting of the A/C.
    Definition: ir_Coolix.cpp:294
    -
    uint8_t getSensorTemp(void) const
    Get the sensor temperature setting.
    Definition: ir_Coolix.cpp:253
    -
    Class for handling detailed Coolix A/C messages.
    Definition: ir_Coolix.h:116
    -
    uint8_t getTempRaw(void) const
    Get the raw (native) temperature value.
    Definition: ir_Coolix.cpp:217
    -
    bool getZoneFollow(void) const
    Get the Zone Follow setting of the A/C.
    Definition: ir_Coolix.cpp:342
    -
    CoolixProtocol _saved
    Copy of the state if we required a special mode.
    Definition: ir_Coolix.h:174
    -
    void setClean(void)
    Toggle the Clean mode of the A/C.
    Definition: ir_Coolix.cpp:335
    -
    const uint32_t kCoolixLed
    Definition: ir_Coolix.h:87
    -
    void setSwing(void)
    Toggle the Swing mode of the A/C.
    Definition: ir_Coolix.cpp:283
    -
    void setRaw(const uint32_t new_code)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Coolix.cpp:128
    -
    uint32_t Mode
    Operation mode.
    Definition: ir_Coolix.h:100
    -
    const uint32_t kCoolixCmdFan
    Definition: ir_Coolix.h:89
    -
    uint32_t raw
    The state in IR code form.
    Definition: ir_Coolix.h:95
    -
    const uint8_t kCoolixTempMax
    Definition: ir_Coolix.h:58
    -
    bool swingFlag
    Definition: ir_Coolix.h:182
    -
    const uint8_t kCoolixFan
    Definition: ir_Coolix.h:45
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Coolix.cpp:104
    -
    const uint32_t kCoolixSwingV
    Definition: ir_Coolix.h:84
    -
    void updateAndSaveState(const uint32_t raw_state)
    Backup the current internal state as long as it isn't a special state and set the new state.
    Definition: ir_Coolix.cpp:195
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Coolix.cpp:391
    -
    bool sleepFlag
    Definition: ir_Coolix.h:181
    -
    const uint32_t kCoolixSleep
    Definition: ir_Coolix.h:85
    -
    uint32_t ZoneFollow2
    Additional control bit for Zone Follow mode.
    Definition: ir_Coolix.h:107
    -
    IRCoolixAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Coolix.cpp:86
    -
    bool isSpecialState(void) const
    Is the current state is a special state?
    Definition: ir_Coolix.cpp:144
    -
    const uint8_t kCoolixTempRange
    Definition: ir_Coolix.h:59
    -
    const uint8_t kCoolixTempMin
    Definition: ir_Coolix.h:57
    -
    void setSleep(void)
    Toggle the Sleep mode of the A/C.
    Definition: ir_Coolix.cpp:303
    -
    const uint8_t kCoolixSensorTempMax
    Definition: ir_Coolix.h:77
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the A/C state to it's common stdAc::state_t equivalent.
    Definition: ir_Coolix.cpp:497
    -
    const uint8_t kCoolixFanMax
    Definition: ir_Coolix.h:51
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Coolix.cpp:258
    -
    const uint8_t kCoolixFanAuto
    Definition: ir_Coolix.h:52
    -
    bool powerFlag
    Definition: ir_Coolix.h:177
    -
    uint32_t Temp
    Desired temperature (Celsius)
    Definition: ir_Coolix.h:101
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Coolix.cpp:556
    -
    uint32_t ZoneFollow1
    Control bit for Zone Follow mode.
    Definition: ir_Coolix.h:99
    -
    bool getSwingVStep(void) const
    Get the Vertical Swing Step setting of the A/C.
    Definition: ir_Coolix.cpp:291
    -
    void setFan(const uint8_t speed, const bool modecheck=true)
    Set the speed of the fan.
    Definition: ir_Coolix.cpp:405
    -
    bool handleSpecialState(const uint32_t data)
    Adjust any internal settings based on the type of special state we are supplied. Does nothing if it i...
    Definition: ir_Coolix.cpp:164
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kCoolixSensorTempIgnoreCode
    Definition: ir_Coolix.h:78
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Coolix.cpp:262
    -
    const uint32_t kCoolixTurbo
    Definition: ir_Coolix.h:86
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8cpp.html deleted file mode 100644 index ba795e56d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8cpp.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Corona.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Corona.cpp File Reference
    -
    -
    - -

    Corona A/C protocol. -More...

    - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kCoronaAcHdrMark = 3500
     
    const uint16_t kCoronaAcHdrSpace = 1680
     
    const uint16_t kCoronaAcBitMark = 450
     
    const uint16_t kCoronaAcOneSpace = 1270
     
    const uint16_t kCoronaAcZeroSpace = 420
     
    const uint16_t kCoronaAcSpaceGap = 10800
     
    const uint16_t kCoronaAcFreq = 38000
     
    const uint16_t kCoronaAcOverheadShort = 3
     
    const uint16_t kCoronaAcOverhead = 11
     
    const uint8_t kCoronaTolerance = 5
     
    -

    Detailed Description

    -

    Corona A/C protocol.

    -
    Note
    Unsupported:
      -
    • Auto/Max button press (special format)
    • -
    -
    -

    Variable Documentation

    - -

    ◆ kCoronaAcBitMark

    - -
    -
    - - - - -
    const uint16_t kCoronaAcBitMark = 450
    -
    - -
    -
    - -

    ◆ kCoronaAcFreq

    - -
    -
    - - - - -
    const uint16_t kCoronaAcFreq = 38000
    -
    - -
    -
    - -

    ◆ kCoronaAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kCoronaAcHdrMark = 3500
    -
    - -
    -
    - -

    ◆ kCoronaAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kCoronaAcHdrSpace = 1680
    -
    - -
    -
    - -

    ◆ kCoronaAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kCoronaAcOneSpace = 1270
    -
    - -
    -
    - -

    ◆ kCoronaAcOverhead

    - -
    -
    - - - - -
    const uint16_t kCoronaAcOverhead = 11
    -
    - -
    -
    - -

    ◆ kCoronaAcOverheadShort

    - -
    -
    - - - - -
    const uint16_t kCoronaAcOverheadShort = 3
    -
    - -
    -
    - -

    ◆ kCoronaAcSpaceGap

    - -
    -
    - - - - -
    const uint16_t kCoronaAcSpaceGap = 10800
    -
    - -
    -
    - -

    ◆ kCoronaAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kCoronaAcZeroSpace = 420
    -
    - -
    -
    - -

    ◆ kCoronaTolerance

    - -
    -
    - - - - -
    const uint8_t kCoronaTolerance = 5
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h.html deleted file mode 100644 index a10c3c048..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Corona.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Corona.h File Reference
    -
    -
    - -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Classes

    struct  CoronaSection
     Native representation of a section of a Corona A/C message. More...
     
    union  CoronaProtocol
     Native representation of a Corona A/C message. More...
     
    class  IRCoronaAc
     Class for handling detailed Corona A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kCoronaAcSections = 3
     
    const uint8_t kCoronaAcSectionBytes = 7
     
    const uint8_t kCoronaAcSectionHeader0 = 0x28
     
    const uint8_t kCoronaAcSectionHeader1 = 0x61
     
    const uint8_t kCoronaAcSectionLabelBase = 0x0D
     
    const uint8_t kCoronaAcSectionData0Base = 0x10
     
    const uint8_t kCoronaAcFanAuto = 0b00
     
    const uint8_t kCoronaAcFanLow = 0b01
     
    const uint8_t kCoronaAcFanMedium = 0b10
     
    const uint8_t kCoronaAcFanHigh = 0b11
     
    const uint8_t kCoronaAcMinTemp = 17
     
    const uint8_t kCoronaAcMaxTemp = 30
     
    const uint8_t kCoronaAcModeHeat = 0b00
     
    const uint8_t kCoronaAcModeDry = 0b01
     
    const uint8_t kCoronaAcModeCool = 0b10
     
    const uint8_t kCoronaAcModeFan = 0b11
     
    const uint8_t kCoronaAcSettingsSection = 0
     
    const uint8_t kCoronaAcOnTimerSection = 1
     
    const uint8_t kCoronaAcOffTimerSection = 2
     
    const uint16_t kCoronaAcTimerMax = 12 * 60
     
    const uint16_t kCoronaAcTimerOff = 0xffff
     
    const uint16_t kCoronaAcTimerUnitsPerMin = 30
     
    -

    Variable Documentation

    - -

    ◆ kCoronaAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kCoronaAcFanAuto = 0b00
    -
    - -
    -
    - -

    ◆ kCoronaAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kCoronaAcFanHigh = 0b11
    -
    - -
    -
    - -

    ◆ kCoronaAcFanLow

    - -
    -
    - - - - -
    const uint8_t kCoronaAcFanLow = 0b01
    -
    - -
    -
    - -

    ◆ kCoronaAcFanMedium

    - -
    -
    - - - - -
    const uint8_t kCoronaAcFanMedium = 0b10
    -
    - -
    -
    - -

    ◆ kCoronaAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kCoronaAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kCoronaAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kCoronaAcMinTemp = 17
    -
    - -
    -
    - -

    ◆ kCoronaAcModeCool

    - -
    -
    - - - - -
    const uint8_t kCoronaAcModeCool = 0b10
    -
    - -
    -
    - -

    ◆ kCoronaAcModeDry

    - -
    -
    - - - - -
    const uint8_t kCoronaAcModeDry = 0b01
    -
    - -
    -
    - -

    ◆ kCoronaAcModeFan

    - -
    -
    - - - - -
    const uint8_t kCoronaAcModeFan = 0b11
    -
    - -
    -
    - -

    ◆ kCoronaAcModeHeat

    - -
    -
    - - - - -
    const uint8_t kCoronaAcModeHeat = 0b00
    -
    - -
    -
    - -

    ◆ kCoronaAcOffTimerSection

    - -
    -
    - - - - -
    const uint8_t kCoronaAcOffTimerSection = 2
    -
    - -
    -
    - -

    ◆ kCoronaAcOnTimerSection

    - -
    -
    - - - - -
    const uint8_t kCoronaAcOnTimerSection = 1
    -
    - -
    -
    - -

    ◆ kCoronaAcSectionBytes

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSectionBytes = 7
    -
    - -
    -
    - -

    ◆ kCoronaAcSectionData0Base

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSectionData0Base = 0x10
    -
    - -
    -
    - -

    ◆ kCoronaAcSectionHeader0

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSectionHeader0 = 0x28
    -
    - -
    -
    - -

    ◆ kCoronaAcSectionHeader1

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSectionHeader1 = 0x61
    -
    - -
    -
    - -

    ◆ kCoronaAcSectionLabelBase

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSectionLabelBase = 0x0D
    -
    - -
    -
    - -

    ◆ kCoronaAcSections

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSections = 3
    -
    - -
    -
    - -

    ◆ kCoronaAcSettingsSection

    - -
    -
    - - - - -
    const uint8_t kCoronaAcSettingsSection = 0
    -
    - -
    -
    - -

    ◆ kCoronaAcTimerMax

    - -
    -
    - - - - -
    const uint16_t kCoronaAcTimerMax = 12 * 60
    -
    - -
    -
    - -

    ◆ kCoronaAcTimerOff

    - -
    -
    - - - - -
    const uint16_t kCoronaAcTimerOff = 0xffff
    -
    - -
    -
    - -

    ◆ kCoronaAcTimerUnitsPerMin

    - -
    -
    - - - - -
    const uint16_t kCoronaAcTimerUnitsPerMin = 30
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h_source.html deleted file mode 100644 index cc5377f1d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Corona_8h_source.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Corona.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Corona.h
    -
    -
    -Go to the documentation of this file.
    1 // Corona A/C
    -
    2 //
    -
    3 // Copyright 2020 Christian Nilsson
    -
    4 
    -
    5 // Supports:
    -
    6 // Brand: Corona, Model: CSH-N2211 A/C
    -
    7 // Brand: Corona, Model: CSH-N2511 A/C
    -
    8 // Brand: Corona, Model: CSH-N2811 A/C
    -
    9 // Brand: Corona, Model: CSH-N4011 A/C
    -
    10 // Brand: Corona, Model: AR-01 remote
    -
    11 //
    -
    12 // Ref: https://docs.google.com/spreadsheets/d/1zzDEUQ52y7MZ7_xCU3pdjdqbRXOwZLsbTGvKWcicqCI/
    -
    13 // Ref: https://www.corona.co.jp/box/download.php?id=145060636229
    -
    14 
    -
    15 #ifndef IR_CORONA_H_
    -
    16 #define IR_CORONA_H_
    -
    17 
    -
    18 #define __STDC_LIMIT_MACROS
    -
    19 #include <stdint.h>
    -
    20 #ifndef UNIT_TEST
    -
    21 #include <Arduino.h>
    -
    22 #endif
    -
    23 #include "IRremoteESP8266.h"
    -
    24 #include "IRsend.h"
    -
    25 #ifdef UNIT_TEST
    -
    26 #include "IRsend_test.h"
    -
    27 #endif
    -
    28 
    -
    30 struct CoronaSection {
    -
    31  uint8_t Header0;
    -
    32  uint8_t Header1;
    -
    33  uint8_t Label;
    -
    34  uint8_t Data0;
    -
    35  uint8_t Data0Inv;
    -
    36  uint8_t Data1;
    -
    37  uint8_t Data1Inv;
    -
    38 };
    -
    39 
    -
    40 const uint8_t kCoronaAcSections = 3;
    -
    41 
    - - - -
    46  struct {
    -
    47  // Byte 0
    -
    48  uint8_t :8;
    -
    49  // Byte 1
    -
    50  uint8_t :8;
    -
    51  // Byte 2
    -
    52  uint8_t :8;
    -
    53  // Byte 3
    -
    54  uint8_t Fan :2;
    -
    55  uint8_t :1;
    -
    56  uint8_t Econo :1;
    -
    57  uint8_t :1; // always on
    -
    58  uint8_t :1;
    -
    59  uint8_t SwingVToggle :1;
    -
    60  uint8_t :1;
    -
    61  // Byte 4
    -
    62  uint8_t :8;
    -
    63  // Byte 5
    -
    64  uint8_t Temp :4;
    -
    65  uint8_t Power :1;
    -
    66  uint8_t PowerButton :1;
    -
    67  uint8_t Mode :2;
    -
    68  };
    -
    69 };
    -
    70 
    -
    71 // Constants
    -
    72 
    -
    73 // CORONA_AC
    -
    74 const uint8_t kCoronaAcSectionBytes = 7; // kCoronaAcStateLengthShort
    -
    75 const uint8_t kCoronaAcSectionHeader0 = 0x28;
    -
    76 const uint8_t kCoronaAcSectionHeader1 = 0x61;
    -
    77 const uint8_t kCoronaAcSectionLabelBase = 0x0D; // 0b1101
    -
    78 const uint8_t kCoronaAcSectionData0Base = 0x10; // D0 Pos 4 always on
    -
    79 
    -
    80 const uint8_t kCoronaAcFanAuto = 0b00; // 0
    -
    81 const uint8_t kCoronaAcFanLow = 0b01; // 1
    -
    82 const uint8_t kCoronaAcFanMedium = 0b10; // 2
    -
    83 const uint8_t kCoronaAcFanHigh = 0b11; // 3
    -
    84 
    -
    85 /* full auto mode not supported by this code yet
    -
    86 const uint8_t kCoronaAcAutoD0 = 0b00010100; // only combined with power save
    -
    87 const uint8_t kCoronaAcAutoD1 = 0b10000011; // only combined with power
    -
    88 */
    -
    89 const uint8_t kCoronaAcMinTemp = 17; // Celsius = 0b0001
    -
    90 const uint8_t kCoronaAcMaxTemp = 30; // Celsius = 0b1110
    -
    91 const uint8_t kCoronaAcModeHeat = 0b00; // 0
    -
    92 const uint8_t kCoronaAcModeDry = 0b01; // 1
    -
    93 const uint8_t kCoronaAcModeCool = 0b10; // 2
    -
    94 const uint8_t kCoronaAcModeFan = 0b11; // 3
    -
    95 
    -
    96 const uint8_t kCoronaAcSettingsSection = 0;
    -
    97 const uint8_t kCoronaAcOnTimerSection = 1;
    -
    98 const uint8_t kCoronaAcOffTimerSection = 2;
    -
    99 const uint16_t kCoronaAcTimerMax = 12 * 60; // 12H in Minutes
    -
    100 // Min value on remote is 1 hour, actual sent value can be 2 secs
    -
    101 const uint16_t kCoronaAcTimerOff = 0xffff;
    -
    102 const uint16_t kCoronaAcTimerUnitsPerMin = 30; // 30 units = 1 minute
    -
    103 
    -
    104 // Classes
    -
    105 
    -
    107 class IRCoronaAc {
    -
    108  public:
    -
    109  explicit IRCoronaAc(const uint16_t pin, const bool inverted = false,
    -
    110  const bool use_modulation = true);
    -
    111 
    -
    112  void stateReset();
    -
    113 #if SEND_CORONA_AC
    -
    114  void send(const uint16_t repeat = kNoRepeat);
    -
    119  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    120 #endif // SEND_CORONA_AC
    -
    121  void begin();
    -
    122  static bool validSection(const uint8_t state[], const uint16_t pos,
    -
    123  const uint8_t section);
    -
    124  void setPower(const bool on);
    -
    125  bool getPower(void) const;
    -
    126  bool getPowerButton(void) const;
    -
    127  void on(void);
    -
    128  void off(void);
    -
    129  void setTemp(const uint8_t temp);
    -
    130  uint8_t getTemp(void) const;
    -
    131  void setSwingVToggle(const bool on);
    -
    132  bool getSwingVToggle(void) const;
    -
    133  void setFan(const uint8_t speed);
    -
    134  uint8_t getFan(void) const;
    -
    135  void setMode(const uint8_t mode);
    -
    136  uint8_t getMode(void) const;
    -
    137  void setEcono(const bool on);
    -
    138  bool getEcono(void) const;
    -
    139  void setOnTimer(const uint16_t nr_of_mins);
    -
    140  uint16_t getOnTimer(void) const;
    -
    141  void setOffTimer(const uint16_t nr_of_mins);
    -
    142  uint16_t getOffTimer(void) const;
    -
    143  uint8_t* getRaw();
    -
    144  void setRaw(const uint8_t new_code[],
    -
    145  const uint16_t length = kCoronaAcStateLength);
    -
    146  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    147  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    148  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    149  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    150  stdAc::state_t toCommon(void) const;
    -
    151  String toString(void) const;
    -
    152 #ifndef UNIT_TEST
    -
    153 
    -
    154  private:
    - -
    156 #else
    -
    157  IRsendTest _irsend;
    -
    159 #endif
    - -
    162  static uint8_t getSectionByte(const uint8_t section);
    -
    163  static void checksum(uint8_t* data);
    -
    164  void setPowerButton(const bool on);
    -
    165  void _setTimer(const uint8_t section, const uint16_t nr_of_mins);
    -
    166  uint16_t _getTimer(const uint8_t section) const;
    -
    167 };
    -
    168 #endif // IR_CORONA_H_
    -
    -
    uint8_t Header1
    Definition: ir_Corona.h:32
    -
    const uint8_t kCoronaAcSectionBytes
    Definition: ir_Corona.h:74
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Corona.cpp:346
    -
    void setFan(const uint8_t speed)
    Set the operating speed of the A/C Fan.
    Definition: ir_Corona.cpp:398
    -
    void setEcono(const bool on)
    Change the powersave setting.
    Definition: ir_Corona.cpp:407
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kCoronaAcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Corona.cpp:282
    -
    const uint8_t kCoronaAcSectionLabelBase
    Definition: ir_Corona.h:77
    -
    const uint8_t kCoronaAcModeFan
    Definition: ir_Corona.h:94
    -
    uint8_t Data1Inv
    Definition: ir_Corona.h:37
    -
    void setPowerButton(const bool on)
    Change the power button setting.
    Definition: ir_Corona.cpp:328
    -
    Class for handling detailed Corona A/C messages.
    Definition: ir_Corona.h:107
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kCoronaAcModeDry
    Definition: ir_Corona.h:92
    -
    const uint8_t kCoronaAcSectionData0Base
    Definition: ir_Corona.h:78
    -
    uint8_t Power
    Definition: ir_Corona.h:65
    -
    uint16_t getOffTimer(void) const
    Get the current Off Timer time.
    Definition: ir_Corona.cpp:511
    -
    void setPower(const bool on)
    Change the power setting. (in practice Standby, remote power)
    Definition: ir_Corona.cpp:304
    -
    void stateReset()
    Reset the internal state to a fixed known good state.
    Definition: ir_Corona.cpp:154
    -
    uint8_t getFan(void) const
    Get the operating speed of the A/C Fan.
    Definition: ir_Corona.cpp:392
    -
    stdAc::state_t toCommon(void) const
    Convert the A/C state to it's common stdAc::state_t equivalent.
    Definition: ir_Corona.cpp:552
    -
    void begin()
    Set up hardware to be able to send a message.
    Definition: ir_Corona.cpp:252
    -
    const uint8_t kCoronaAcFanMedium
    Definition: ir_Corona.h:82
    -
    const uint16_t kCoronaAcTimerUnitsPerMin
    Definition: ir_Corona.h:102
    -
    void setOffTimer(const uint16_t nr_of_mins)
    Set the Off Timer time.
    Definition: ir_Corona.cpp:518
    -
    const uint8_t kCoronaAcFanLow
    Definition: ir_Corona.h:81
    -
    Native representation of a Corona A/C message.
    Definition: ir_Corona.h:43
    -
    uint8_t Header0
    Definition: ir_Corona.h:31
    - -
    void setTemp(const uint8_t temp)
    Set the temp in deg C.
    Definition: ir_Corona.cpp:288
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Corona.cpp:527
    -
    const uint8_t kCoronaAcSectionHeader0
    Definition: ir_Corona.h:75
    -
    void setOnTimer(const uint16_t nr_of_mins)
    Set the On Timer time.
    Definition: ir_Corona.cpp:502
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a standard A/C Fan speed into its native fan speed.
    Definition: ir_Corona.cpp:420
    -
    CoronaProtocol _
    Definition: ir_Corona.h:161
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t Econo
    Definition: ir_Corona.h:56
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kCoronaAcOffTimerSection
    Definition: ir_Corona.h:98
    -
    const uint16_t kCoronaAcTimerMax
    Definition: ir_Corona.h:99
    -
    static bool validSection(const uint8_t state[], const uint16_t pos, const uint8_t section)
    Check that a CoronaAc Section part is valid with section byte and inverted.
    Definition: ir_Corona.cpp:187
    -
    uint16_t getOnTimer(void) const
    Get the current On Timer time.
    Definition: ir_Corona.cpp:495
    -
    bool getPower(void) const
    Get the current power setting. (in practice Standby, remote power)
    Definition: ir_Corona.cpp:315
    -
    const uint8_t kCoronaAcSectionHeader1
    Definition: ir_Corona.h:76
    - -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Corona.cpp:257
    -
    const uint8_t kCoronaAcSections
    Definition: ir_Corona.h:40
    -
    uint16_t _getTimer(const uint8_t section) const
    Get the current Timer time.
    Definition: ir_Corona.cpp:482
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    const uint8_t kCoronaAcFanHigh
    Definition: ir_Corona.h:83
    -
    const uint16_t kCoronaAcStateLength
    Definition: IRremoteESP8266.h:957
    -
    static void checksum(uint8_t *data)
    Calculate and set the check values for the internal state.
    Definition: ir_Corona.cpp:240
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode into its native mode.
    Definition: ir_Corona.cpp:369
    -
    uint8_t Data0
    Definition: ir_Corona.h:34
    -
    uint8_t PowerButton
    Definition: ir_Corona.h:66
    -
    bool getPowerButton(void) const
    Get the value of the current power button setting.
    Definition: ir_Corona.cpp:334
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Corona.cpp:342
    -
    void _setTimer(const uint8_t section, const uint16_t nr_of_mins)
    Set the Timer time.
    Definition: ir_Corona.cpp:462
    -
    const uint8_t kCoronaAcModeCool
    Definition: ir_Corona.h:93
    -
    const uint8_t kCoronaAcMinTemp
    Definition: ir_Corona.h:89
    -
    uint8_t Data1
    Definition: ir_Corona.h:36
    -
    uint8_t Temp
    Definition: ir_Corona.h:64
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's common stdAc::opmode_t equivalent.
    Definition: ir_Corona.cpp:381
    -
    uint8_t getTemp(void) const
    Get the current temperature from the internal state.
    Definition: ir_Corona.cpp:296
    -
    bool getSwingVToggle(void) const
    Get the Vertical Swing toggle setting.
    Definition: ir_Corona.cpp:453
    -
    IRCoronaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor for handling detailed Corona A/C messages.
    Definition: ir_Corona.cpp:148
    -
    uint8_t Data0Inv
    Definition: ir_Corona.h:35
    -
    uint8_t * getRaw()
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Corona.cpp:274
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Corona.cpp:339
    -
    const uint8_t kCoronaAcSettingsSection
    Definition: ir_Corona.h:96
    -
    uint8_t SwingVToggle
    Definition: ir_Corona.h:59
    -
    uint8_t raw[kCoronaAcStateLength]
    The state of the IR remote.
    Definition: ir_Corona.h:44
    -
    CoronaSection sections[kCoronaAcSections]
    Definition: ir_Corona.h:45
    -
    const uint8_t kCoronaAcModeHeat
    Definition: ir_Corona.h:91
    -
    uint8_t Label
    Definition: ir_Corona.h:33
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Corona.h:155
    -
    void setSwingVToggle(const bool on)
    Set the Vertical Swing toggle setting.
    Definition: ir_Corona.cpp:447
    -
    static uint8_t getSectionByte(const uint8_t section)
    Get the byte that identifies the section.
    Definition: ir_Corona.cpp:171
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Corona.cpp:352
    -
    Native representation of a section of a Corona A/C message.
    Definition: ir_Corona.h:30
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed to it's common equivalent.
    Definition: ir_Corona.cpp:434
    -
    bool getEcono(void) const
    Get the value of the current powersave setting.
    Definition: ir_Corona.cpp:413
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Corona.h:119
    -
    const uint16_t kCoronaAcTimerOff
    Definition: ir_Corona.h:101
    -
    uint8_t Mode
    Definition: ir_Corona.h:67
    -
    const uint8_t kCoronaAcOnTimerSection
    Definition: ir_Corona.h:97
    -
    uint8_t Fan
    Definition: ir_Corona.h:54
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kCoronaAcMaxTemp
    Definition: ir_Corona.h:90
    -
    const uint8_t kCoronaAcFanAuto
    Definition: ir_Corona.h:80
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8cpp.html deleted file mode 100644 index 3f6d4561f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8cpp.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Daikin.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Daikin.cpp File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h.html deleted file mode 100644 index 27c1e9e45..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h.html +++ /dev/null @@ -1,3138 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Daikin.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Daikin.h File Reference
    -
    -
    - -

    Support for Daikin A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Classes

    union  DaikinESPProtocol
     Native representation of a Daikin A/C message. More...
     
    union  Daikin2Protocol
     Native representation of a Daikin2 A/C message. More...
     
    union  Daikin216Protocol
     Native representation of a Daikin216 A/C message. More...
     
    union  Daikin160Protocol
     Native representation of a Daikin160 A/C message. More...
     
    union  Daikin176Protocol
     Native representation of a Daikin176 A/C message. More...
     
    union  Daikin128Protocol
     Native representation of a Daikin128 A/C message. More...
     
    union  Daikin152Protocol
     Native representation of a Daikin152 A/C message. More...
     
    union  Daikin64Protocol
     Native representation of a Daikin64 A/C message. More...
     
    class  IRDaikinESP
     Class for handling detailed Daikin 280-bit A/C messages. More...
     
    class  IRDaikin2
     Class for handling detailed Daikin 312-bit A/C messages. More...
     
    class  IRDaikin216
     Class for handling detailed Daikin 216-bit A/C messages. More...
     
    class  IRDaikin160
     Class for handling detailed Daikin 160-bit A/C messages. More...
     
    class  IRDaikin176
     Class for handling detailed Daikin 176-bit A/C messages. More...
     
    class  IRDaikin128
     Class for handling detailed Daikin 128-bit A/C messages. More...
     
    class  IRDaikin152
     Class for handling detailed Daikin 152-bit A/C messages. More...
     
    class  IRDaikin64
     Class for handling detailed Daikin 64-bit A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kDaikinAuto = 0b000
     
    const uint8_t kDaikinDry = 0b010
     
    const uint8_t kDaikinCool = 0b011
     
    const uint8_t kDaikinHeat = 0b100
     
    const uint8_t kDaikinFan = 0b110
     
    const uint8_t kDaikinMinTemp = 10
     
    const uint8_t kDaikinMaxTemp = 32
     
    const uint8_t kDaikinFanMin = 1
     
    const uint8_t kDaikinFanMed = 3
     
    const uint8_t kDaikinFanMax = 5
     
    const uint8_t kDaikinFanAuto = 0b1010
     
    const uint8_t kDaikinFanQuiet = 0b1011
     
    const uint8_t kDaikinSwingOn = 0b1111
     
    const uint8_t kDaikinSwingOff = 0b0000
     
    const uint16_t kDaikinHeaderLength = 5
     
    const uint8_t kDaikinSections = 3
     
    const uint8_t kDaikinSection1Length = 8
     
    const uint8_t kDaikinSection2Length = 8
     
    const uint8_t kDaikinSection3Length
     
    const uint8_t kDaikinByteChecksum1 = 7
     
    const uint8_t kDaikinByteChecksum2 = 15
     
    const uint16_t kDaikinUnusedTime = 0x600
     
    const uint8_t kDaikinBeepQuiet = 1
     
    const uint8_t kDaikinBeepLoud = 2
     
    const uint8_t kDaikinBeepOff = 3
     
    const uint8_t kDaikinLightBright = 1
     
    const uint8_t kDaikinLightDim = 2
     
    const uint8_t kDaikinLightOff = 3
     
    const uint8_t kDaikinCurBit = kDaikinStateLength
     
    const uint8_t kDaikinCurIndex = kDaikinStateLength + 1
     
    const uint8_t kDaikinTolerance = 35
     
    const uint16_t kDaikinMarkExcess = kMarkExcess
     
    const uint16_t kDaikinHdrMark = 3650
     
    const uint16_t kDaikinHdrSpace = 1623
     
    const uint16_t kDaikinBitMark = 428
     
    const uint16_t kDaikinZeroSpace = 428
     
    const uint16_t kDaikinOneSpace = 1280
     
    const uint16_t kDaikinGap = 29000
     
    const uint64_t kDaikinFirstHeader64
     
    const uint16_t kDaikin2Freq = 36700
     
    const uint16_t kDaikin2LeaderMark = 10024
     
    const uint16_t kDaikin2LeaderSpace = 25180
     
    const uint16_t kDaikin2Gap = kDaikin2LeaderMark + kDaikin2LeaderSpace
     
    const uint16_t kDaikin2HdrMark = 3500
     
    const uint16_t kDaikin2HdrSpace = 1728
     
    const uint16_t kDaikin2BitMark = 460
     
    const uint16_t kDaikin2OneSpace = 1270
     
    const uint16_t kDaikin2ZeroSpace = 420
     
    const uint16_t kDaikin2Sections = 2
     
    const uint16_t kDaikin2Section1Length = 20
     
    const uint16_t kDaikin2Section2Length = 19
     
    const uint8_t kDaikin2Tolerance = 5
     
    const uint8_t kDaikin2SwingVHighest = 0x1
     
    const uint8_t kDaikin2SwingVHigh = 0x2
     
    const uint8_t kDaikin2SwingVUpperMiddle = 0x3
     
    const uint8_t kDaikin2SwingVLowerMiddle = 0x4
     
    const uint8_t kDaikin2SwingVLow = 0x5
     
    const uint8_t kDaikin2SwingVLowest = 0x6
     
    const uint8_t kDaikin2SwingVBreeze = 0xC
     
    const uint8_t kDaikin2SwingVCirculate = 0xD
     
    const uint8_t kDaikin2SwingVOff = 0xE
     
    const uint8_t kDaikin2SwingVAuto = 0xF
     
    const uint8_t kDaikin2SwingVSwing = kDaikin2SwingVAuto
     
    const uint8_t kDaikin2SwingHWide = 0xA3
     
    const uint8_t kDaikin2SwingHLeftMax = 0xA8
     
    const uint8_t kDaikin2SwingHLeft = 0xA9
     
    const uint8_t kDaikin2SwingHMiddle = 0xAA
     
    const uint8_t kDaikin2SwingHRight = 0xAB
     
    const uint8_t kDaikin2SwingHRightMax = 0xAC
     
    const uint8_t kDaikin2SwingHAuto = 0xBE
     
    const uint8_t kDaikin2SwingHOff = 0xBF
     
    const uint8_t kDaikin2SwingHSwing = kDaikin2SwingHAuto
     
    const uint8_t kDaikin2MinCoolTemp = 18
     
    const uint16_t kDaikin216Freq = 38000
     
    const uint16_t kDaikin216HdrMark = 3440
     
    const uint16_t kDaikin216HdrSpace = 1750
     
    const uint16_t kDaikin216BitMark = 420
     
    const uint16_t kDaikin216OneSpace = 1300
     
    const uint16_t kDaikin216ZeroSpace = 450
     
    const uint16_t kDaikin216Gap = 29650
     
    const uint16_t kDaikin216Sections = 2
     
    const uint16_t kDaikin216Section1Length = 8
     
    const uint16_t kDaikin216Section2Length
     
    const uint8_t kDaikin216SwingOn = 0b1111
     
    const uint8_t kDaikin216SwingOff = 0b0000
     
    const uint16_t kDaikin160Freq = 38000
     
    const uint16_t kDaikin160HdrMark = 5000
     
    const uint16_t kDaikin160HdrSpace = 2145
     
    const uint16_t kDaikin160BitMark = 342
     
    const uint16_t kDaikin160OneSpace = 1786
     
    const uint16_t kDaikin160ZeroSpace = 700
     
    const uint16_t kDaikin160Gap = 29650
     
    const uint16_t kDaikin160Sections = 2
     
    const uint16_t kDaikin160Section1Length = 7
     
    const uint16_t kDaikin160Section2Length
     
    const uint8_t kDaikin160SwingVLowest = 0x1
     
    const uint8_t kDaikin160SwingVLow = 0x2
     
    const uint8_t kDaikin160SwingVMiddle = 0x3
     
    const uint8_t kDaikin160SwingVHigh = 0x4
     
    const uint8_t kDaikin160SwingVHighest = 0x5
     
    const uint8_t kDaikin160SwingVAuto = 0xF
     
    const uint16_t kDaikin176Freq = 38000
     
    const uint16_t kDaikin176HdrMark = 5070
     
    const uint16_t kDaikin176HdrSpace = 2140
     
    const uint16_t kDaikin176BitMark = 370
     
    const uint16_t kDaikin176OneSpace = 1780
     
    const uint16_t kDaikin176ZeroSpace = 710
     
    const uint16_t kDaikin176Gap = 29410
     
    const uint16_t kDaikin176Sections = 2
     
    const uint16_t kDaikin176Section1Length = 7
     
    const uint16_t kDaikin176Section2Length
     
    const uint8_t kDaikin176Fan = 0b000
     
    const uint8_t kDaikin176Heat = 0b001
     
    const uint8_t kDaikin176Cool = 0b010
     
    const uint8_t kDaikin176Auto = 0b011
     
    const uint8_t kDaikin176Dry = 0b111
     
    const uint8_t kDaikin176ModeButton = 0b00000100
     
    const uint8_t kDaikin176DryFanTemp = 17
     
    const uint8_t kDaikin176FanMax = 3
     
    const uint8_t kDaikin176SwingHAuto = 0x5
     
    const uint8_t kDaikin176SwingHOff = 0x6
     
    const uint16_t kDaikin128Freq = 38000
     
    const uint16_t kDaikin128LeaderMark = 9800
     
    const uint16_t kDaikin128LeaderSpace = 9800
     
    const uint16_t kDaikin128HdrMark = 4600
     
    const uint16_t kDaikin128HdrSpace = 2500
     
    const uint16_t kDaikin128BitMark = 350
     
    const uint16_t kDaikin128OneSpace = 954
     
    const uint16_t kDaikin128ZeroSpace = 382
     
    const uint16_t kDaikin128Gap = 20300
     
    const uint16_t kDaikin128FooterMark = kDaikin128HdrMark
     
    const uint16_t kDaikin128Sections = 2
     
    const uint16_t kDaikin128SectionLength = 8
     
    const uint8_t kDaikin128Dry = 0b00000001
     
    const uint8_t kDaikin128Cool = 0b00000010
     
    const uint8_t kDaikin128Fan = 0b00000100
     
    const uint8_t kDaikin128Heat = 0b00001000
     
    const uint8_t kDaikin128Auto = 0b00001010
     
    const uint8_t kDaikin128FanAuto = 0b0001
     
    const uint8_t kDaikin128FanHigh = 0b0010
     
    const uint8_t kDaikin128FanMed = 0b0100
     
    const uint8_t kDaikin128FanLow = 0b1000
     
    const uint8_t kDaikin128FanPowerful = 0b0011
     
    const uint8_t kDaikin128FanQuiet = 0b1001
     
    const uint8_t kDaikin128MinTemp = 16
     
    const uint8_t kDaikin128MaxTemp = 30
     
    const uint8_t kDaikin128BitWall = 0b00001000
     
    const uint8_t kDaikin128BitCeiling = 0b00000001
     
    const uint16_t kDaikin152Freq = 38000
     
    const uint8_t kDaikin152LeaderBits = 5
     
    const uint16_t kDaikin152HdrMark = 3492
     
    const uint16_t kDaikin152HdrSpace = 1718
     
    const uint16_t kDaikin152BitMark = 433
     
    const uint16_t kDaikin152OneSpace = 1529
     
    const uint16_t kDaikin152ZeroSpace = kDaikin152BitMark
     
    const uint16_t kDaikin152Gap = 25182
     
    const uint8_t kDaikin152DryTemp = kDaikin2MinCoolTemp
     
    const uint8_t kDaikin152FanTemp = 0x60
     
    const uint16_t kDaikin64HdrMark = kDaikin128HdrMark
     
    const uint16_t kDaikin64BitMark = kDaikin128BitMark
     
    const uint16_t kDaikin64HdrSpace = kDaikin128HdrSpace
     
    const uint16_t kDaikin64OneSpace = kDaikin128OneSpace
     
    const uint16_t kDaikin64ZeroSpace = kDaikin128ZeroSpace
     
    const uint16_t kDaikin64LdrMark = kDaikin128LeaderMark
     
    const uint16_t kDaikin64Gap = kDaikin128Gap
     
    const uint16_t kDaikin64LdrSpace = kDaikin128LeaderSpace
     
    const uint16_t kDaikin64Freq = kDaikin128Freq
     
    const uint8_t kDaikin64Overhead = 9
     
    const int8_t kDaikin64ToleranceDelta = 5
     
    const uint64_t kDaikin64KnownGoodState = 0x7C16161607204216
     
    const uint8_t kDaikin64Dry = 0b0001
     
    const uint8_t kDaikin64Cool = 0b0010
     
    const uint8_t kDaikin64Fan = 0b0100
     
    const uint8_t kDaikin64Heat = 0b1000
     
    const uint8_t kDaikin64FanAuto = 0b0001
     
    const uint8_t kDaikin64FanLow = 0b1000
     
    const uint8_t kDaikin64FanMed = 0b0100
     
    const uint8_t kDaikin64FanHigh = 0b0010
     
    const uint8_t kDaikin64FanQuiet = 0b1001
     
    const uint8_t kDaikin64FanTurbo = 0b0011
     
    const uint8_t kDaikin64MinTemp = 16
     
    const uint8_t kDaikin64MaxTemp = 30
     
    const uint8_t kDaikin64ChecksumOffset = 60
     
    const uint8_t kDaikin64ChecksumSize = 4
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kDaikin128Auto

    - -
    -
    - - - - -
    const uint8_t kDaikin128Auto = 0b00001010
    -
    - -
    -
    - -

    ◆ kDaikin128BitCeiling

    - -
    -
    - - - - -
    const uint8_t kDaikin128BitCeiling = 0b00000001
    -
    - -
    -
    - -

    ◆ kDaikin128BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin128BitMark = 350
    -
    - -
    -
    - -

    ◆ kDaikin128BitWall

    - -
    -
    - - - - -
    const uint8_t kDaikin128BitWall = 0b00001000
    -
    - -
    -
    - -

    ◆ kDaikin128Cool

    - -
    -
    - - - - -
    const uint8_t kDaikin128Cool = 0b00000010
    -
    - -
    -
    - -

    ◆ kDaikin128Dry

    - -
    -
    - - - - -
    const uint8_t kDaikin128Dry = 0b00000001
    -
    - -
    -
    - -

    ◆ kDaikin128Fan

    - -
    -
    - - - - -
    const uint8_t kDaikin128Fan = 0b00000100
    -
    - -
    -
    - -

    ◆ kDaikin128FanAuto

    - -
    -
    - - - - -
    const uint8_t kDaikin128FanAuto = 0b0001
    -
    - -
    -
    - -

    ◆ kDaikin128FanHigh

    - -
    -
    - - - - -
    const uint8_t kDaikin128FanHigh = 0b0010
    -
    - -
    -
    - -

    ◆ kDaikin128FanLow

    - -
    -
    - - - - -
    const uint8_t kDaikin128FanLow = 0b1000
    -
    - -
    -
    - -

    ◆ kDaikin128FanMed

    - -
    -
    - - - - -
    const uint8_t kDaikin128FanMed = 0b0100
    -
    - -
    -
    - -

    ◆ kDaikin128FanPowerful

    - -
    -
    - - - - -
    const uint8_t kDaikin128FanPowerful = 0b0011
    -
    - -
    -
    - -

    ◆ kDaikin128FanQuiet

    - -
    -
    - - - - -
    const uint8_t kDaikin128FanQuiet = 0b1001
    -
    - -
    -
    - -

    ◆ kDaikin128FooterMark

    - -
    -
    - - - - -
    const uint16_t kDaikin128FooterMark = kDaikin128HdrMark
    -
    - -
    -
    - -

    ◆ kDaikin128Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin128Freq = 38000
    -
    - -
    -
    - -

    ◆ kDaikin128Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin128Gap = 20300
    -
    - -
    -
    - -

    ◆ kDaikin128HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin128HdrMark = 4600
    -
    - -
    -
    - -

    ◆ kDaikin128HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin128HdrSpace = 2500
    -
    - -
    -
    - -

    ◆ kDaikin128Heat

    - -
    -
    - - - - -
    const uint8_t kDaikin128Heat = 0b00001000
    -
    - -
    -
    - -

    ◆ kDaikin128LeaderMark

    - -
    -
    - - - - -
    const uint16_t kDaikin128LeaderMark = 9800
    -
    - -
    -
    - -

    ◆ kDaikin128LeaderSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin128LeaderSpace = 9800
    -
    - -
    -
    - -

    ◆ kDaikin128MaxTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin128MaxTemp = 30
    -
    - -
    -
    - -

    ◆ kDaikin128MinTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin128MinTemp = 16
    -
    - -
    -
    - -

    ◆ kDaikin128OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin128OneSpace = 954
    -
    - -
    -
    - -

    ◆ kDaikin128SectionLength

    - -
    -
    - - - - -
    const uint16_t kDaikin128SectionLength = 8
    -
    - -
    -
    - -

    ◆ kDaikin128Sections

    - -
    -
    - - - - -
    const uint16_t kDaikin128Sections = 2
    -
    - -
    -
    - -

    ◆ kDaikin128ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin128ZeroSpace = 382
    -
    - -
    -
    - -

    ◆ kDaikin152BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin152BitMark = 433
    -
    - -
    -
    - -

    ◆ kDaikin152DryTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin152DryTemp = kDaikin2MinCoolTemp
    -
    - -
    -
    - -

    ◆ kDaikin152FanTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin152FanTemp = 0x60
    -
    - -
    -
    - -

    ◆ kDaikin152Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin152Freq = 38000
    -
    - -
    -
    - -

    ◆ kDaikin152Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin152Gap = 25182
    -
    - -
    -
    - -

    ◆ kDaikin152HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin152HdrMark = 3492
    -
    - -
    -
    - -

    ◆ kDaikin152HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin152HdrSpace = 1718
    -
    - -
    -
    - -

    ◆ kDaikin152LeaderBits

    - -
    -
    - - - - -
    const uint8_t kDaikin152LeaderBits = 5
    -
    - -
    -
    - -

    ◆ kDaikin152OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin152OneSpace = 1529
    -
    - -
    -
    - -

    ◆ kDaikin152ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin152ZeroSpace = kDaikin152BitMark
    -
    - -
    -
    - -

    ◆ kDaikin160BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin160BitMark = 342
    -
    - -
    -
    - -

    ◆ kDaikin160Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin160Freq = 38000
    -
    - -
    -
    - -

    ◆ kDaikin160Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin160Gap = 29650
    -
    - -
    -
    - -

    ◆ kDaikin160HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin160HdrMark = 5000
    -
    - -
    -
    - -

    ◆ kDaikin160HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin160HdrSpace = 2145
    -
    - -
    -
    - -

    ◆ kDaikin160OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin160OneSpace = 1786
    -
    - -
    -
    - -

    ◆ kDaikin160Section1Length

    - -
    -
    - - - - -
    const uint16_t kDaikin160Section1Length = 7
    -
    - -
    -
    - -

    ◆ kDaikin160Section2Length

    - -
    -
    - - - - -
    const uint16_t kDaikin160Section2Length
    -
    -
    - -

    ◆ kDaikin160Sections

    - -
    -
    - - - - -
    const uint16_t kDaikin160Sections = 2
    -
    - -
    -
    - -

    ◆ kDaikin160SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kDaikin160SwingVAuto = 0xF
    -
    - -
    -
    - -

    ◆ kDaikin160SwingVHigh

    - -
    -
    - - - - -
    const uint8_t kDaikin160SwingVHigh = 0x4
    -
    - -
    -
    - -

    ◆ kDaikin160SwingVHighest

    - -
    -
    - - - - -
    const uint8_t kDaikin160SwingVHighest = 0x5
    -
    - -
    -
    - -

    ◆ kDaikin160SwingVLow

    - -
    -
    - - - - -
    const uint8_t kDaikin160SwingVLow = 0x2
    -
    - -
    -
    - -

    ◆ kDaikin160SwingVLowest

    - -
    -
    - - - - -
    const uint8_t kDaikin160SwingVLowest = 0x1
    -
    - -
    -
    - -

    ◆ kDaikin160SwingVMiddle

    - -
    -
    - - - - -
    const uint8_t kDaikin160SwingVMiddle = 0x3
    -
    - -
    -
    - -

    ◆ kDaikin160ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin160ZeroSpace = 700
    -
    - -
    -
    - -

    ◆ kDaikin176Auto

    - -
    -
    - - - - -
    const uint8_t kDaikin176Auto = 0b011
    -
    - -
    -
    - -

    ◆ kDaikin176BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin176BitMark = 370
    -
    - -
    -
    - -

    ◆ kDaikin176Cool

    - -
    -
    - - - - -
    const uint8_t kDaikin176Cool = 0b010
    -
    - -
    -
    - -

    ◆ kDaikin176Dry

    - -
    -
    - - - - -
    const uint8_t kDaikin176Dry = 0b111
    -
    - -
    -
    - -

    ◆ kDaikin176DryFanTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin176DryFanTemp = 17
    -
    - -
    -
    - -

    ◆ kDaikin176Fan

    - -
    -
    - - - - -
    const uint8_t kDaikin176Fan = 0b000
    -
    - -
    -
    - -

    ◆ kDaikin176FanMax

    - -
    -
    - - - - -
    const uint8_t kDaikin176FanMax = 3
    -
    - -
    -
    - -

    ◆ kDaikin176Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin176Freq = 38000
    -
    - -
    -
    - -

    ◆ kDaikin176Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin176Gap = 29410
    -
    - -
    -
    - -

    ◆ kDaikin176HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin176HdrMark = 5070
    -
    - -
    -
    - -

    ◆ kDaikin176HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin176HdrSpace = 2140
    -
    - -
    -
    - -

    ◆ kDaikin176Heat

    - -
    -
    - - - - -
    const uint8_t kDaikin176Heat = 0b001
    -
    - -
    -
    - -

    ◆ kDaikin176ModeButton

    - -
    -
    - - - - -
    const uint8_t kDaikin176ModeButton = 0b00000100
    -
    - -
    -
    - -

    ◆ kDaikin176OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin176OneSpace = 1780
    -
    - -
    -
    - -

    ◆ kDaikin176Section1Length

    - -
    -
    - - - - -
    const uint16_t kDaikin176Section1Length = 7
    -
    - -
    -
    - -

    ◆ kDaikin176Section2Length

    - -
    -
    - - - - -
    const uint16_t kDaikin176Section2Length
    -
    -
    - -

    ◆ kDaikin176Sections

    - -
    -
    - - - - -
    const uint16_t kDaikin176Sections = 2
    -
    - -
    -
    - -

    ◆ kDaikin176SwingHAuto

    - -
    -
    - - - - -
    const uint8_t kDaikin176SwingHAuto = 0x5
    -
    - -
    -
    - -

    ◆ kDaikin176SwingHOff

    - -
    -
    - - - - -
    const uint8_t kDaikin176SwingHOff = 0x6
    -
    - -
    -
    - -

    ◆ kDaikin176ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin176ZeroSpace = 710
    -
    - -
    -
    - -

    ◆ kDaikin216BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin216BitMark = 420
    -
    - -
    -
    - -

    ◆ kDaikin216Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin216Freq = 38000
    -
    - -
    -
    - -

    ◆ kDaikin216Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin216Gap = 29650
    -
    - -
    -
    - -

    ◆ kDaikin216HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin216HdrMark = 3440
    -
    - -
    -
    - -

    ◆ kDaikin216HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin216HdrSpace = 1750
    -
    - -
    -
    - -

    ◆ kDaikin216OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin216OneSpace = 1300
    -
    - -
    -
    - -

    ◆ kDaikin216Section1Length

    - -
    -
    - - - - -
    const uint16_t kDaikin216Section1Length = 8
    -
    - -
    -
    - -

    ◆ kDaikin216Section2Length

    - -
    -
    - - - - -
    const uint16_t kDaikin216Section2Length
    -
    -
    - -

    ◆ kDaikin216Sections

    - -
    -
    - - - - -
    const uint16_t kDaikin216Sections = 2
    -
    - -
    -
    - -

    ◆ kDaikin216SwingOff

    - -
    -
    - - - - -
    const uint8_t kDaikin216SwingOff = 0b0000
    -
    - -
    -
    - -

    ◆ kDaikin216SwingOn

    - -
    -
    - - - - -
    const uint8_t kDaikin216SwingOn = 0b1111
    -
    - -
    -
    - -

    ◆ kDaikin216ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin216ZeroSpace = 450
    -
    - -
    -
    - -

    ◆ kDaikin2BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin2BitMark = 460
    -
    - -
    -
    - -

    ◆ kDaikin2Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin2Freq = 36700
    -
    - -
    -
    - -

    ◆ kDaikin2Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin2Gap = kDaikin2LeaderMark + kDaikin2LeaderSpace
    -
    - -
    -
    - -

    ◆ kDaikin2HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin2HdrMark = 3500
    -
    - -
    -
    - -

    ◆ kDaikin2HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin2HdrSpace = 1728
    -
    - -
    -
    - -

    ◆ kDaikin2LeaderMark

    - -
    -
    - - - - -
    const uint16_t kDaikin2LeaderMark = 10024
    -
    - -
    -
    - -

    ◆ kDaikin2LeaderSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin2LeaderSpace = 25180
    -
    - -
    -
    - -

    ◆ kDaikin2MinCoolTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin2MinCoolTemp = 18
    -
    - -
    -
    - -

    ◆ kDaikin2OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin2OneSpace = 1270
    -
    - -
    -
    - -

    ◆ kDaikin2Section1Length

    - -
    -
    - - - - -
    const uint16_t kDaikin2Section1Length = 20
    -
    - -
    -
    - -

    ◆ kDaikin2Section2Length

    - -
    -
    - - - - -
    const uint16_t kDaikin2Section2Length = 19
    -
    - -
    -
    - -

    ◆ kDaikin2Sections

    - -
    -
    - - - - -
    const uint16_t kDaikin2Sections = 2
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHAuto

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHAuto = 0xBE
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHLeft

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHLeft = 0xA9
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHLeftMax

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHLeftMax = 0xA8
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHMiddle

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHMiddle = 0xAA
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHOff

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHOff = 0xBF
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHRight

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHRight = 0xAB
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHRightMax

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHRightMax = 0xAC
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHSwing

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHSwing = kDaikin2SwingHAuto
    -
    - -
    -
    - -

    ◆ kDaikin2SwingHWide

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingHWide = 0xA3
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVAuto = 0xF
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVBreeze

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVBreeze = 0xC
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVCirculate

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVCirculate = 0xD
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVHigh

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVHigh = 0x2
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVHighest

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVHighest = 0x1
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVLow

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVLow = 0x5
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVLowerMiddle

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVLowerMiddle = 0x4
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVLowest

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVLowest = 0x6
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVOff

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVOff = 0xE
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVSwing

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVSwing = kDaikin2SwingVAuto
    -
    - -
    -
    - -

    ◆ kDaikin2SwingVUpperMiddle

    - -
    -
    - - - - -
    const uint8_t kDaikin2SwingVUpperMiddle = 0x3
    -
    - -
    -
    - -

    ◆ kDaikin2Tolerance

    - -
    -
    - - - - -
    const uint8_t kDaikin2Tolerance = 5
    -
    - -
    -
    - -

    ◆ kDaikin2ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin2ZeroSpace = 420
    -
    - -
    -
    - -

    ◆ kDaikin64BitMark

    - -
    -
    - - - - -
    const uint16_t kDaikin64BitMark = kDaikin128BitMark
    -
    - -
    -
    - -

    ◆ kDaikin64ChecksumOffset

    - -
    -
    - - - - -
    const uint8_t kDaikin64ChecksumOffset = 60
    -
    - -
    -
    - -

    ◆ kDaikin64ChecksumSize

    - -
    -
    - - - - -
    const uint8_t kDaikin64ChecksumSize = 4
    -
    - -
    -
    - -

    ◆ kDaikin64Cool

    - -
    -
    - - - - -
    const uint8_t kDaikin64Cool = 0b0010
    -
    - -
    -
    - -

    ◆ kDaikin64Dry

    - -
    -
    - - - - -
    const uint8_t kDaikin64Dry = 0b0001
    -
    - -
    -
    - -

    ◆ kDaikin64Fan

    - -
    -
    - - - - -
    const uint8_t kDaikin64Fan = 0b0100
    -
    - -
    -
    - -

    ◆ kDaikin64FanAuto

    - -
    -
    - - - - -
    const uint8_t kDaikin64FanAuto = 0b0001
    -
    - -
    -
    - -

    ◆ kDaikin64FanHigh

    - -
    -
    - - - - -
    const uint8_t kDaikin64FanHigh = 0b0010
    -
    - -
    -
    - -

    ◆ kDaikin64FanLow

    - -
    -
    - - - - -
    const uint8_t kDaikin64FanLow = 0b1000
    -
    - -
    -
    - -

    ◆ kDaikin64FanMed

    - -
    -
    - - - - -
    const uint8_t kDaikin64FanMed = 0b0100
    -
    - -
    -
    - -

    ◆ kDaikin64FanQuiet

    - -
    -
    - - - - -
    const uint8_t kDaikin64FanQuiet = 0b1001
    -
    - -
    -
    - -

    ◆ kDaikin64FanTurbo

    - -
    -
    - - - - -
    const uint8_t kDaikin64FanTurbo = 0b0011
    -
    - -
    -
    - -

    ◆ kDaikin64Freq

    - -
    -
    - - - - -
    const uint16_t kDaikin64Freq = kDaikin128Freq
    -
    - -
    -
    - -

    ◆ kDaikin64Gap

    - -
    -
    - - - - -
    const uint16_t kDaikin64Gap = kDaikin128Gap
    -
    - -
    -
    - -

    ◆ kDaikin64HdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin64HdrMark = kDaikin128HdrMark
    -
    - -
    -
    - -

    ◆ kDaikin64HdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin64HdrSpace = kDaikin128HdrSpace
    -
    - -
    -
    - -

    ◆ kDaikin64Heat

    - -
    -
    - - - - -
    const uint8_t kDaikin64Heat = 0b1000
    -
    - -
    -
    - -

    ◆ kDaikin64KnownGoodState

    - -
    -
    - - - - -
    const uint64_t kDaikin64KnownGoodState = 0x7C16161607204216
    -
    - -
    -
    - -

    ◆ kDaikin64LdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikin64LdrMark = kDaikin128LeaderMark
    -
    - -
    -
    - -

    ◆ kDaikin64LdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin64LdrSpace = kDaikin128LeaderSpace
    -
    - -
    -
    - -

    ◆ kDaikin64MaxTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin64MaxTemp = 30
    -
    - -
    -
    - -

    ◆ kDaikin64MinTemp

    - -
    -
    - - - - -
    const uint8_t kDaikin64MinTemp = 16
    -
    - -
    -
    - -

    ◆ kDaikin64OneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin64OneSpace = kDaikin128OneSpace
    -
    - -
    -
    - -

    ◆ kDaikin64Overhead

    - -
    -
    - - - - -
    const uint8_t kDaikin64Overhead = 9
    -
    - -
    -
    - -

    ◆ kDaikin64ToleranceDelta

    - -
    -
    - - - - -
    const int8_t kDaikin64ToleranceDelta = 5
    -
    - -
    -
    - -

    ◆ kDaikin64ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikin64ZeroSpace = kDaikin128ZeroSpace
    -
    - -
    -
    - -

    ◆ kDaikinAuto

    - -
    -
    - - - - -
    const uint8_t kDaikinAuto = 0b000
    -
    - -
    -
    - -

    ◆ kDaikinBeepLoud

    - -
    -
    - - - - -
    const uint8_t kDaikinBeepLoud = 2
    -
    - -
    -
    - -

    ◆ kDaikinBeepOff

    - -
    -
    - - - - -
    const uint8_t kDaikinBeepOff = 3
    -
    - -
    -
    - -

    ◆ kDaikinBeepQuiet

    - -
    -
    - - - - -
    const uint8_t kDaikinBeepQuiet = 1
    -
    - -
    -
    - -

    ◆ kDaikinBitMark

    - -
    -
    - - - - -
    const uint16_t kDaikinBitMark = 428
    -
    - -
    -
    - -

    ◆ kDaikinByteChecksum1

    - -
    -
    - - - - -
    const uint8_t kDaikinByteChecksum1 = 7
    -
    - -
    -
    - -

    ◆ kDaikinByteChecksum2

    - -
    -
    - - - - -
    const uint8_t kDaikinByteChecksum2 = 15
    -
    - -
    -
    - -

    ◆ kDaikinCool

    - -
    -
    - - - - -
    const uint8_t kDaikinCool = 0b011
    -
    - -
    -
    - -

    ◆ kDaikinCurBit

    - -
    -
    - - - - -
    const uint8_t kDaikinCurBit = kDaikinStateLength
    -
    - -
    -
    - -

    ◆ kDaikinCurIndex

    - -
    -
    - - - - -
    const uint8_t kDaikinCurIndex = kDaikinStateLength + 1
    -
    - -
    -
    - -

    ◆ kDaikinDry

    - -
    -
    - - - - -
    const uint8_t kDaikinDry = 0b010
    -
    - -
    -
    - -

    ◆ kDaikinFan

    - -
    -
    - - - - -
    const uint8_t kDaikinFan = 0b110
    -
    - -
    -
    - -

    ◆ kDaikinFanAuto

    - -
    -
    - - - - -
    const uint8_t kDaikinFanAuto = 0b1010
    -
    - -
    -
    - -

    ◆ kDaikinFanMax

    - -
    -
    - - - - -
    const uint8_t kDaikinFanMax = 5
    -
    - -
    -
    - -

    ◆ kDaikinFanMed

    - -
    -
    - - - - -
    const uint8_t kDaikinFanMed = 3
    -
    - -
    -
    - -

    ◆ kDaikinFanMin

    - -
    -
    - - - - -
    const uint8_t kDaikinFanMin = 1
    -
    - -
    -
    - -

    ◆ kDaikinFanQuiet

    - -
    -
    - - - - -
    const uint8_t kDaikinFanQuiet = 0b1011
    -
    - -
    -
    - -

    ◆ kDaikinFirstHeader64

    - -
    -
    - - - - -
    const uint64_t kDaikinFirstHeader64
    -
    -Initial value:
    =
    -
    0b1101011100000000000000001100010100000000001001111101101000010001
    -
    -
    -
    - -

    ◆ kDaikinGap

    - -
    -
    - - - - -
    const uint16_t kDaikinGap = 29000
    -
    - -
    -
    - -

    ◆ kDaikinHdrMark

    - -
    -
    - - - - -
    const uint16_t kDaikinHdrMark = 3650
    -
    - -
    -
    - -

    ◆ kDaikinHdrSpace

    - -
    -
    - - - - -
    const uint16_t kDaikinHdrSpace = 1623
    -
    - -
    -
    - -

    ◆ kDaikinHeaderLength

    - -
    -
    - - - - -
    const uint16_t kDaikinHeaderLength = 5
    -
    - -
    -
    - -

    ◆ kDaikinHeat

    - -
    -
    - - - - -
    const uint8_t kDaikinHeat = 0b100
    -
    - -
    -
    - -

    ◆ kDaikinLightBright

    - -
    -
    - - - - -
    const uint8_t kDaikinLightBright = 1
    -
    - -
    -
    - -

    ◆ kDaikinLightDim

    - -
    -
    - - - - -
    const uint8_t kDaikinLightDim = 2
    -
    - -
    -
    - -

    ◆ kDaikinLightOff

    - -
    -
    - - - - -
    const uint8_t kDaikinLightOff = 3
    -
    - -
    -
    - -

    ◆ kDaikinMarkExcess

    - -
    -
    - - - - -
    const uint16_t kDaikinMarkExcess = kMarkExcess
    -
    - -
    -
    - -

    ◆ kDaikinMaxTemp

    - -
    -
    - - - - -
    const uint8_t kDaikinMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kDaikinMinTemp

    - -
    -
    - - - - -
    const uint8_t kDaikinMinTemp = 10
    -
    - -
    -
    - -

    ◆ kDaikinOneSpace

    - -
    -
    - - - - -
    const uint16_t kDaikinOneSpace = 1280
    -
    - -
    -
    - -

    ◆ kDaikinSection1Length

    - -
    -
    - - - - -
    const uint8_t kDaikinSection1Length = 8
    -
    - -
    -
    - -

    ◆ kDaikinSection2Length

    - -
    -
    - - - - -
    const uint8_t kDaikinSection2Length = 8
    -
    - -
    -
    - -

    ◆ kDaikinSection3Length

    - -
    -
    - - - - -
    const uint8_t kDaikinSection3Length
    -
    -
    - -

    ◆ kDaikinSections

    - -
    -
    - - - - -
    const uint8_t kDaikinSections = 3
    -
    - -
    -
    - -

    ◆ kDaikinSwingOff

    - -
    -
    - - - - -
    const uint8_t kDaikinSwingOff = 0b0000
    -
    - -
    -
    - -

    ◆ kDaikinSwingOn

    - -
    -
    - - - - -
    const uint8_t kDaikinSwingOn = 0b1111
    -
    - -
    -
    - -

    ◆ kDaikinTolerance

    - -
    -
    - - - - -
    const uint8_t kDaikinTolerance = 35
    -
    - -
    -
    - -

    ◆ kDaikinUnusedTime

    - -
    -
    - - - - -
    const uint16_t kDaikinUnusedTime = 0x600
    -
    - -
    -
    - -

    ◆ kDaikinZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDaikinZeroSpace = 428
    -
    - -
    -
    -
    -
    const uint16_t kDaikin176StateLength
    Definition: IRremoteESP8266.h:979
    -
    const uint8_t kDaikinSection1Length
    Definition: ir_Daikin.h:147
    -
    const uint16_t kDaikin216StateLength
    Definition: IRremoteESP8266.h:982
    -
    const uint16_t kDaikin216Section1Length
    Definition: ir_Daikin.h:351
    -
    const uint16_t kDaikin160Section1Length
    Definition: ir_Daikin.h:400
    -
    const uint16_t kDaikinStateLength
    Definition: IRremoteESP8266.h:960
    -
    const uint16_t kDaikin160StateLength
    Definition: IRremoteESP8266.h:970
    -
    const uint8_t kDaikinSection2Length
    Definition: ir_Daikin.h:148
    -
    const uint16_t kDaikin176Section1Length
    Definition: ir_Daikin.h:455
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h_source.html deleted file mode 100644 index b90a0b0bb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Daikin_8h_source.html +++ /dev/null @@ -1,1916 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Daikin.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Daikin.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2016 sillyfrog
    -
    2 // Copyright 2017 sillyfrog, crankyoldgit
    -
    3 // Copyright 2018-2020 crankyoldgit
    -
    4 // Copyright 2019 pasna (IRDaikin160 class / Daikin176 class)
    -
    5 
    -
    23 
    -
    24 // Supports:
    -
    25 // Brand: Daikin, Model: ARC433** remote (DAIKIN)
    -
    26 // Brand: Daikin, Model: ARC477A1 remote (DAIKIN2)
    -
    27 // Brand: Daikin, Model: FTXZ25NV1B A/C (DAIKIN2)
    -
    28 // Brand: Daikin, Model: FTXZ35NV1B A/C (DAIKIN2)
    -
    29 // Brand: Daikin, Model: FTXZ50NV1B A/C (DAIKIN2)
    -
    30 // Brand: Daikin, Model: ARC433B69 remote (DAIKIN216)
    -
    31 // Brand: Daikin, Model: ARC423A5 remote (DAIKIN160)
    -
    32 // Brand: Daikin, Model: FTE12HV2S A/C
    -
    33 // Brand: Daikin, Model: BRC4C153 remote (DAIKIN176)
    -
    34 // Brand: Daikin, Model: FFQ35B8V1B A/C (DAIKIN176)
    -
    35 // Brand: Daikin, Model: BRC4C151 remote (DAIKIN176)
    -
    36 // Brand: Daikin, Model: 17 Series A/C (DAIKIN128)
    -
    37 // Brand: Daikin, Model: FTXB12AXVJU A/C (DAIKIN128)
    -
    38 // Brand: Daikin, Model: FTXB09AXVJU A/C (DAIKIN128)
    -
    39 // Brand: Daikin, Model: BRC52B63 remote (DAIKIN128)
    -
    40 // Brand: Daikin, Model: ARC480A5 remote (DAIKIN152)
    -
    41 // Brand: Daikin, Model: FFN-C/FCN-F Series A/C (DAIKIN64)
    -
    42 // Brand: Daikin, Model: DGS01 remote (DAIKIN64)
    -
    43 // Brand: Daikin, Model: M Series A/C (DAIKIN)
    -
    44 // Brand: Daikin, Model: FTXM-M A/C (DAIKIN)
    -
    45 // Brand: Daikin, Model: ARC466A33 remote (DAIKIN)
    -
    46 // Brand: Daikin, Model: FTWX35AXV1 A/C (DAIKIN64)
    -
    47 
    -
    48 #ifndef IR_DAIKIN_H_
    -
    49 #define IR_DAIKIN_H_
    -
    50 
    -
    51 #ifndef UNIT_TEST
    -
    52 #include <Arduino.h>
    -
    53 #endif
    -
    54 #include "IRrecv.h"
    -
    55 #include "IRremoteESP8266.h"
    -
    56 #include "IRsend.h"
    -
    57 #ifdef UNIT_TEST
    -
    58 #include "IRsend_test.h"
    -
    59 #endif
    -
    60 
    - - -
    64  struct {
    -
    65  // Byte 0~5
    -
    66  uint64_t :48;
    -
    67  // Byte 6
    -
    68  uint64_t :4;
    -
    69  uint64_t Comfort :1;
    -
    70  uint64_t :3;
    -
    71  // Byte 7
    -
    72  uint64_t Sum1 :8; // checksum of the first part
    -
    73 
    -
    74  // Byte 8~12
    -
    75  uint64_t :40;
    -
    76  // Byte 13~14
    -
    77  uint64_t CurrentTime :11; // Current time, mins past midnight
    -
    78  uint64_t CurrentDay :3; // Day of the week (SUN=1, MON=2, ..., SAT=7)
    -
    79  uint64_t :2;
    -
    80  // Byte 15
    -
    81  uint64_t Sum2 :8; // checksum of the second part
    -
    82 
    -
    83  // Byte 16~20
    -
    84  uint64_t :40;
    -
    85  // Byte 21
    -
    86  uint64_t Power :1;
    -
    87  uint64_t OnTimer :1;
    -
    88  uint64_t OffTimer :1;
    -
    89  uint64_t :1; // always 1
    -
    90  uint64_t Mode :3;
    -
    91  uint64_t :1;
    -
    92  // Byte 22
    -
    93  uint64_t :1;
    -
    94  uint64_t Temp :7; // Temp should be between 10 - 32
    -
    95  // Byte 23
    -
    96  uint64_t :8;
    -
    97 
    -
    98  // Byte 24
    -
    99  uint64_t SwingV :4; // 0000 = off, 1111 = on
    -
    100  uint64_t Fan :4;
    -
    101  // Byte 25
    -
    102  uint64_t SwingH :4; // 0000 = off, 1111 = on
    -
    103  uint64_t :4;
    -
    104  // Byte 26~28
    -
    105  uint64_t OnTime :12; // timer mins past midnight
    -
    106  uint64_t OffTime :12; // timer mins past midnight
    -
    107  // Byte 29
    -
    108  uint64_t Powerful :1;
    -
    109  uint64_t :4;
    -
    110  uint64_t Quiet :1;
    -
    111  uint64_t :2;
    -
    112  // Byte 30~31
    -
    113  uint64_t :0;
    -
    114 
    -
    115  // Byte 32
    -
    116  uint8_t :1;
    -
    117  uint8_t Sensor :1;
    -
    118  uint8_t Econo :1;
    -
    119  uint8_t :4;
    -
    120  uint8_t WeeklyTimer :1;
    -
    121  // Byte 33
    -
    122  uint8_t :1;
    -
    123  uint8_t Mold :1;
    -
    124  uint8_t :6;
    -
    125  // Byte 34
    -
    126  uint8_t Sum3 :8; // checksum of the third part
    -
    127  };
    -
    128 };
    -
    129 
    -
    130 // Constants
    -
    131 const uint8_t kDaikinAuto = 0b000; // temp 25
    -
    132 const uint8_t kDaikinDry = 0b010; // temp 0xc0 = 96 degrees c
    -
    133 const uint8_t kDaikinCool = 0b011;
    -
    134 const uint8_t kDaikinHeat = 0b100; // temp 23
    -
    135 const uint8_t kDaikinFan = 0b110; // temp not shown, but 25
    -
    136 const uint8_t kDaikinMinTemp = 10; // Celsius
    -
    137 const uint8_t kDaikinMaxTemp = 32; // Celsius
    -
    138 const uint8_t kDaikinFanMin = 1;
    -
    139 const uint8_t kDaikinFanMed = 3;
    -
    140 const uint8_t kDaikinFanMax = 5;
    -
    141 const uint8_t kDaikinFanAuto = 0b1010; // 10 / 0xA
    -
    142 const uint8_t kDaikinFanQuiet = 0b1011; // 11 / 0xB
    -
    143 const uint8_t kDaikinSwingOn = 0b1111;
    -
    144 const uint8_t kDaikinSwingOff = 0b0000;
    -
    145 const uint16_t kDaikinHeaderLength = 5;
    -
    146 const uint8_t kDaikinSections = 3;
    -
    147 const uint8_t kDaikinSection1Length = 8;
    -
    148 const uint8_t kDaikinSection2Length = 8;
    -
    149 const uint8_t kDaikinSection3Length =
    - -
    151 const uint8_t kDaikinByteChecksum1 = 7;
    -
    152 const uint8_t kDaikinByteChecksum2 = 15;
    -
    153 // const uint8_t kDaikinBitEye = 0b10000000;
    -
    154 const uint16_t kDaikinUnusedTime = 0x600;
    -
    155 const uint8_t kDaikinBeepQuiet = 1;
    -
    156 const uint8_t kDaikinBeepLoud = 2;
    -
    157 const uint8_t kDaikinBeepOff = 3;
    -
    158 const uint8_t kDaikinLightBright = 1;
    -
    159 const uint8_t kDaikinLightDim = 2;
    -
    160 const uint8_t kDaikinLightOff = 3;
    - - -
    163 const uint8_t kDaikinTolerance = 35;
    - -
    165 const uint16_t kDaikinHdrMark = 3650; // kDaikinBitMark * 8
    -
    166 const uint16_t kDaikinHdrSpace = 1623; // kDaikinBitMark * 4
    -
    167 const uint16_t kDaikinBitMark = 428;
    -
    168 const uint16_t kDaikinZeroSpace = 428;
    -
    169 const uint16_t kDaikinOneSpace = 1280;
    -
    170 const uint16_t kDaikinGap = 29000;
    -
    171 // Note bits in each octet swapped so can be sent as a single value
    -
    172 const uint64_t kDaikinFirstHeader64 =
    -
    173  0b1101011100000000000000001100010100000000001001111101101000010001;
    -
    174 
    - -
    177  struct{
    -
    178  uint8_t pad[3];
    - -
    180  };
    -
    181  struct {
    -
    182  // Byte -3~4
    -
    183  uint64_t :64;
    -
    184 
    -
    185  // Byte 5~6
    -
    186  uint64_t CurrentTime :12;
    -
    187  uint64_t :3;
    -
    188  uint64_t Power2 :1;
    -
    189  // Byte 7
    -
    190  uint64_t :4;
    -
    191  uint64_t Light :2;
    -
    192  uint64_t Beep :2;
    -
    193  // Byte 8
    -
    194  uint64_t FreshAir :1;
    -
    195  uint64_t :2;
    -
    196  uint64_t Mold :1;
    -
    197  uint64_t :1;
    -
    198  uint64_t Clean :1;
    -
    199  uint64_t :1;
    -
    200  uint64_t FreshAirHigh :1;
    -
    201  // Byte 9~12
    -
    202  uint64_t :32;
    -
    203 
    -
    204  // Byte 13
    -
    205  uint64_t :7;
    -
    206  uint64_t EyeAuto :1;
    -
    207  // Byte 14~16
    -
    208  uint64_t :24;
    -
    209  // Byte 17
    -
    210  uint64_t SwingH :8;
    -
    211  // Byte 18
    -
    212  uint64_t SwingV :4;
    -
    213  uint64_t :4;
    -
    214  // Byte 19
    -
    215  uint64_t Sum1 :8;
    -
    216  // Byte 20
    -
    217  uint64_t :8;
    -
    218 
    -
    219  // Byte 21~24
    -
    220  uint64_t :32;
    -
    221  // Byte 25
    -
    222  uint64_t Power :1;
    -
    223  uint64_t OnTimer :1;
    -
    224  uint64_t OffTimer :1;
    -
    225  uint64_t :1;
    -
    226  uint64_t Mode :3;
    -
    227  uint64_t :1;
    -
    228  // Byte 26
    -
    229  uint64_t :1;
    -
    230  uint64_t Temp :7;
    -
    231  // Byte 27
    -
    232  uint64_t :8;
    -
    233  // Byte 28
    -
    234  uint64_t :4;
    -
    235  uint64_t Fan :4;
    -
    236 
    -
    237  // Byte 29
    -
    238  uint64_t :8;
    -
    239  // Byte 30~32
    -
    241  uint64_t OnTime :12;
    -
    242  uint64_t OffTime :12;
    -
    243  // Byte 33
    -
    244  uint64_t Powerful :1;
    -
    245  uint64_t :4;
    -
    246  uint64_t Quiet :1;
    -
    247  uint64_t :2;
    -
    248  // Byte 34~35
    -
    249  uint64_t :16;
    -
    250  // Byte 36
    -
    251  uint64_t :1;
    -
    252  uint64_t Eye :1;
    -
    253  uint64_t Econo :1;
    -
    254  uint64_t :1;
    -
    255  uint64_t Purify :1;
    -
    256  uint64_t SleepTimer :1;
    -
    257  uint64_t :2;
    -
    258 
    -
    259  // Byte 37
    -
    260  uint8_t :8;
    -
    261  // Byte 38
    -
    262  uint8_t Sum2 :8;
    -
    263  };
    -
    264 };
    -
    265 
    -
    266 const uint16_t kDaikin2Freq = 36700; // Modulation Frequency in Hz.
    -
    267 const uint16_t kDaikin2LeaderMark = 10024;
    -
    268 const uint16_t kDaikin2LeaderSpace = 25180;
    - -
    270 const uint16_t kDaikin2HdrMark = 3500;
    -
    271 const uint16_t kDaikin2HdrSpace = 1728;
    -
    272 const uint16_t kDaikin2BitMark = 460;
    -
    273 const uint16_t kDaikin2OneSpace = 1270;
    -
    274 const uint16_t kDaikin2ZeroSpace = 420;
    -
    275 const uint16_t kDaikin2Sections = 2;
    -
    276 const uint16_t kDaikin2Section1Length = 20;
    -
    277 const uint16_t kDaikin2Section2Length = 19;
    -
    278 const uint8_t kDaikin2Tolerance = 5; // Extra percentage tolerance
    -
    279 const uint8_t kDaikin2SwingVHighest = 0x1;
    -
    280 const uint8_t kDaikin2SwingVHigh = 0x2;
    -
    281 const uint8_t kDaikin2SwingVUpperMiddle = 0x3;
    -
    282 const uint8_t kDaikin2SwingVLowerMiddle = 0x4;
    -
    283 const uint8_t kDaikin2SwingVLow = 0x5;
    -
    284 const uint8_t kDaikin2SwingVLowest = 0x6;
    -
    285 const uint8_t kDaikin2SwingVBreeze = 0xC;
    -
    286 const uint8_t kDaikin2SwingVCirculate = 0xD;
    -
    287 const uint8_t kDaikin2SwingVOff = 0xE;
    -
    288 const uint8_t kDaikin2SwingVAuto = 0xF; // A.k.a "Swing"
    - -
    290 
    -
    291 
    -
    292 const uint8_t kDaikin2SwingHWide = 0xA3;
    -
    293 const uint8_t kDaikin2SwingHLeftMax = 0xA8;
    -
    294 const uint8_t kDaikin2SwingHLeft = 0xA9;
    -
    295 const uint8_t kDaikin2SwingHMiddle = 0xAA;
    -
    296 const uint8_t kDaikin2SwingHRight = 0xAB;
    -
    297 const uint8_t kDaikin2SwingHRightMax = 0xAC;
    -
    298 const uint8_t kDaikin2SwingHAuto = 0xBE; // A.k.a "Swing"
    -
    299 const uint8_t kDaikin2SwingHOff = 0xBF;
    - -
    301 
    -
    302 const uint8_t kDaikin2MinCoolTemp = 18; // Min temp (in C) when in Cool mode.
    -
    303 
    - - -
    307  struct {
    -
    308  // Byte 0~6
    -
    309  uint8_t pad0[7];
    -
    310  // Byte 7
    -
    311  uint8_t Sum1 :8;
    -
    312  // Byte 8~12
    -
    313  uint8_t pad1[5];
    -
    314  // Byte 13
    -
    315  uint8_t Power :1;
    -
    316  uint8_t :3;
    -
    317  uint8_t Mode :3;
    -
    318  uint8_t :1;
    -
    319  // Byte 14
    -
    320  uint8_t :1;
    -
    321  uint8_t Temp :6;
    -
    322  uint8_t :1;
    -
    323  // Byte 15
    -
    324  uint8_t :8;
    -
    325  // Byte 16
    -
    326  uint8_t SwingV :4;
    -
    327  uint8_t Fan :4;
    -
    328  // Byte 17
    -
    329  uint8_t SwingH :4;
    -
    330  uint8_t :4;
    -
    331  // Byte 18~20
    -
    332  uint8_t pad2[3];
    -
    333  // Byte 21
    -
    334  uint8_t Powerful :1;
    -
    335  uint8_t :0;
    -
    336  // Byte 22~25
    -
    337  uint8_t pad3[4];
    -
    338  // Byte 26
    -
    339  uint8_t Sum2 :8;
    -
    340  };
    -
    341 };
    -
    342 
    -
    343 const uint16_t kDaikin216Freq = 38000; // Modulation Frequency in Hz.
    -
    344 const uint16_t kDaikin216HdrMark = 3440;
    -
    345 const uint16_t kDaikin216HdrSpace = 1750;
    -
    346 const uint16_t kDaikin216BitMark = 420;
    -
    347 const uint16_t kDaikin216OneSpace = 1300;
    -
    348 const uint16_t kDaikin216ZeroSpace = 450;
    -
    349 const uint16_t kDaikin216Gap = 29650;
    -
    350 const uint16_t kDaikin216Sections = 2;
    -
    351 const uint16_t kDaikin216Section1Length = 8;
    - - -
    354 
    -
    355 const uint8_t kDaikin216SwingOn = 0b1111;
    -
    356 const uint8_t kDaikin216SwingOff = 0b0000;
    -
    357 
    - - -
    361  struct {
    -
    362  // Byte 0~5
    -
    363  uint8_t pad0[6];
    -
    364  // Byte 6
    -
    365  uint8_t Sum1 :8;
    -
    366  // Byte 7~11
    -
    367  uint8_t pad1[5];
    -
    368  // Byte 12
    -
    369  uint8_t Power :1;
    -
    370  uint8_t :3;
    -
    371  uint8_t Mode :3;
    -
    372  uint8_t :1;
    -
    373  // Byte 13
    -
    374  uint8_t :4;
    -
    375  uint8_t SwingV :4;
    -
    376  // Byte 14~15
    -
    377  uint8_t pad2[2];
    -
    378  // Byte 16
    -
    379  uint8_t :1;
    -
    380  uint8_t Temp :6;
    -
    381  uint8_t :1;
    -
    382  // Byte 17
    -
    383  uint8_t Fan :4;
    -
    384  uint8_t :4;
    -
    385  // Byte 18
    -
    386  uint8_t :8;
    -
    387  // Byte 19
    -
    388  uint8_t Sum2 :8;
    -
    389  };
    -
    390 };
    -
    391 
    -
    392 const uint16_t kDaikin160Freq = 38000; // Modulation Frequency in Hz.
    -
    393 const uint16_t kDaikin160HdrMark = 5000;
    -
    394 const uint16_t kDaikin160HdrSpace = 2145;
    -
    395 const uint16_t kDaikin160BitMark = 342;
    -
    396 const uint16_t kDaikin160OneSpace = 1786;
    -
    397 const uint16_t kDaikin160ZeroSpace = 700;
    -
    398 const uint16_t kDaikin160Gap = 29650;
    -
    399 const uint16_t kDaikin160Sections = 2;
    -
    400 const uint16_t kDaikin160Section1Length = 7;
    - - -
    403 const uint8_t kDaikin160SwingVLowest = 0x1;
    -
    404 const uint8_t kDaikin160SwingVLow = 0x2;
    -
    405 const uint8_t kDaikin160SwingVMiddle = 0x3;
    -
    406 const uint8_t kDaikin160SwingVHigh = 0x4;
    -
    407 const uint8_t kDaikin160SwingVHighest = 0x5;
    -
    408 const uint8_t kDaikin160SwingVAuto = 0xF;
    -
    409 
    - - -
    413  struct {
    -
    414  // Byte 0~5
    -
    415  uint8_t pad0[6];
    -
    416  // Byte 6
    -
    417  uint8_t Sum1 :8;
    -
    418  // Byte 7~11
    -
    419  uint8_t pad1[5];
    -
    420  // Byte 12
    -
    421  uint8_t :4;
    -
    422  uint8_t AltMode :3;
    -
    423  uint8_t :1;
    -
    424  // Byte 13
    -
    425  uint8_t ModeButton :8;
    -
    426  // Byte 14
    -
    427  uint8_t Power :1;
    -
    428  uint8_t :3;
    -
    429  uint8_t Mode :3;
    -
    430  uint8_t :1;
    -
    431  // Byte 15~16
    -
    432  uint8_t pad2[2];
    -
    433  // Byte 17
    -
    434  uint8_t :1;
    -
    435  uint8_t Temp :6;
    -
    436  uint8_t :1;
    -
    437  // Byte 18
    -
    438  uint8_t SwingH :4;
    -
    439  uint8_t Fan :4;
    -
    440  // Byte 19~20
    -
    441  uint8_t pad3[2];
    -
    442  // Byte 21
    -
    443  uint8_t Sum2 :8;
    -
    444  };
    -
    445 };
    -
    446 
    -
    447 const uint16_t kDaikin176Freq = 38000; // Modulation Frequency in Hz.
    -
    448 const uint16_t kDaikin176HdrMark = 5070;
    -
    449 const uint16_t kDaikin176HdrSpace = 2140;
    -
    450 const uint16_t kDaikin176BitMark = 370;
    -
    451 const uint16_t kDaikin176OneSpace = 1780;
    -
    452 const uint16_t kDaikin176ZeroSpace = 710;
    -
    453 const uint16_t kDaikin176Gap = 29410;
    -
    454 const uint16_t kDaikin176Sections = 2;
    -
    455 const uint16_t kDaikin176Section1Length = 7;
    - - -
    458 const uint8_t kDaikin176Fan = 0b000; // 0
    -
    459 const uint8_t kDaikin176Heat = 0b001; // 1
    -
    460 const uint8_t kDaikin176Cool = 0b010; // 2
    -
    461 const uint8_t kDaikin176Auto = 0b011; // 3
    -
    462 const uint8_t kDaikin176Dry = 0b111; // 7
    -
    463 const uint8_t kDaikin176ModeButton = 0b00000100;
    -
    464 const uint8_t kDaikin176DryFanTemp = 17; // Dry/Fan mode is always 17 Celsius.
    -
    465 const uint8_t kDaikin176FanMax = 3;
    -
    466 const uint8_t kDaikin176SwingHAuto = 0x5;
    -
    467 const uint8_t kDaikin176SwingHOff = 0x6;
    -
    468 
    - - -
    472  struct {
    -
    473  // Byte 0
    -
    474  uint8_t :8;
    -
    475  // Byte 1
    -
    476  uint8_t Mode :4;
    -
    477  uint8_t Fan :4;
    -
    478  // Byte 2
    -
    479  uint8_t ClockMins :8;
    -
    480  // Byte 3
    -
    481  uint8_t ClockHours :8;
    -
    482  // Byte 4
    -
    483  uint8_t OnHours :6;
    -
    484  uint8_t OnHalfHour :1;
    -
    485  uint8_t OnTimer :1;
    -
    486  // Byte 5
    -
    487  uint8_t OffHours :6;
    -
    488  uint8_t OffHalfHour :1;
    -
    489  uint8_t OffTimer :1;
    -
    490  // Byte 6
    -
    491  uint8_t Temp :8;
    -
    492  // Byte 7
    -
    493  uint8_t SwingV :1;
    -
    494  uint8_t Sleep :1;
    -
    495  uint8_t :1; // always 1
    -
    496  uint8_t Power :1;
    -
    497  uint8_t Sum1 :4;
    -
    498  // Byte 8
    -
    499  uint8_t :8;
    -
    500  // Byte 9
    -
    501  uint8_t Ceiling :1;
    -
    502  uint8_t :1;
    -
    503  uint8_t Econo :1;
    -
    504  uint8_t Wall :1;
    -
    505  uint8_t :4;
    -
    506  // Byte 10~14
    -
    507  uint8_t pad[5];
    -
    508  // Byte 15
    -
    509  uint8_t Sum2 :8;
    -
    510  };
    -
    511 };
    -
    512 
    -
    513 const uint16_t kDaikin128Freq = 38000; // Modulation Frequency in Hz.
    -
    514 const uint16_t kDaikin128LeaderMark = 9800;
    -
    515 const uint16_t kDaikin128LeaderSpace = 9800;
    -
    516 const uint16_t kDaikin128HdrMark = 4600;
    -
    517 const uint16_t kDaikin128HdrSpace = 2500;
    -
    518 const uint16_t kDaikin128BitMark = 350;
    -
    519 const uint16_t kDaikin128OneSpace = 954;
    -
    520 const uint16_t kDaikin128ZeroSpace = 382;
    -
    521 const uint16_t kDaikin128Gap = 20300;
    - -
    523 const uint16_t kDaikin128Sections = 2;
    -
    524 const uint16_t kDaikin128SectionLength = 8;
    -
    525 const uint8_t kDaikin128Dry = 0b00000001;
    -
    526 const uint8_t kDaikin128Cool = 0b00000010;
    -
    527 const uint8_t kDaikin128Fan = 0b00000100;
    -
    528 const uint8_t kDaikin128Heat = 0b00001000;
    -
    529 const uint8_t kDaikin128Auto = 0b00001010;
    -
    530 const uint8_t kDaikin128FanAuto = 0b0001;
    -
    531 const uint8_t kDaikin128FanHigh = 0b0010;
    -
    532 const uint8_t kDaikin128FanMed = 0b0100;
    -
    533 const uint8_t kDaikin128FanLow = 0b1000;
    -
    534 const uint8_t kDaikin128FanPowerful = 0b0011;
    -
    535 const uint8_t kDaikin128FanQuiet = 0b1001;
    -
    536 const uint8_t kDaikin128MinTemp = 16; // C
    -
    537 const uint8_t kDaikin128MaxTemp = 30; // C
    -
    538 const uint8_t kDaikin128BitWall = 0b00001000;
    -
    539 const uint8_t kDaikin128BitCeiling = 0b00000001;
    -
    540 
    - - -
    544  struct {
    -
    545  // Byte 0~4
    -
    546  uint8_t pad0[5];
    -
    547  // Byte 5
    -
    548  uint8_t Power :1;
    -
    549  uint8_t :3;
    -
    550  uint8_t Mode :3;
    -
    551  uint8_t :1;
    -
    552  // Byte 6
    -
    553  uint8_t :1;
    -
    554  uint8_t Temp :7;
    -
    555  // Byte 7
    -
    556  uint8_t :8;
    -
    557  // Byte 8
    -
    558  uint8_t SwingV :4;
    -
    559  uint8_t Fan :4;
    -
    560  // Byte 9~12
    -
    561  uint8_t pad1[4];
    -
    562  // Byte 13
    -
    563  uint8_t Powerful :1;
    -
    564  uint8_t :4;
    -
    565  uint8_t Quiet :1;
    -
    566  uint8_t :2;
    -
    567  // Byte 14~15
    -
    568  uint8_t pad2[2];
    -
    569  // Byte 16
    -
    570  uint8_t :1;
    -
    571  uint8_t Comfort :1;
    -
    572  uint8_t Econo :1;
    -
    573  uint8_t Sensor :1;
    -
    574  uint8_t :4;
    -
    575  // Byte 17
    -
    576  uint8_t :8;
    -
    577  // Byte 18
    -
    578  uint8_t Sum :8;
    -
    579  };
    -
    580 };
    -
    581 
    -
    582 const uint16_t kDaikin152Freq = 38000; // Modulation Frequency in Hz.
    -
    583 const uint8_t kDaikin152LeaderBits = 5;
    -
    584 const uint16_t kDaikin152HdrMark = 3492;
    -
    585 const uint16_t kDaikin152HdrSpace = 1718;
    -
    586 const uint16_t kDaikin152BitMark = 433;
    -
    587 const uint16_t kDaikin152OneSpace = 1529;
    - -
    589 const uint16_t kDaikin152Gap = 25182;
    -
    590 
    -
    591 const uint8_t kDaikin152DryTemp = kDaikin2MinCoolTemp; // Celsius
    -
    592 const uint8_t kDaikin152FanTemp = 0x60; // 96 Celsius
    -
    593 
    - -
    596  uint64_t raw;
    -
    597  struct {
    -
    598  uint8_t :8;
    -
    599  uint8_t Mode :4;
    -
    600  uint8_t Fan :4;
    -
    601  uint8_t ClockMins :8;
    -
    602  uint8_t ClockHours :8;
    -
    603  uint8_t OnHours :6;
    -
    604  uint8_t OnHalfHour :1;
    -
    605  uint8_t OnTimer :1;
    -
    606  uint8_t OffHours :6;
    -
    607  uint8_t OffHalfHour :1;
    -
    608  uint8_t OffTimer :1;
    -
    609  uint8_t Temp :8;
    -
    610  uint8_t SwingV :1;
    -
    611  uint8_t Sleep :1;
    -
    612  uint8_t :1;
    -
    613  uint8_t Power :1;
    -
    614  uint8_t Sum :4;
    -
    615  };
    -
    616 };
    -
    617 
    - - - - - - -
    624 const uint16_t kDaikin64Gap = kDaikin128Gap;
    - -
    626 const uint16_t kDaikin64Freq = kDaikin128Freq; // Hz.
    -
    627 const uint8_t kDaikin64Overhead = 9;
    -
    628 const int8_t kDaikin64ToleranceDelta = 5; // +5%
    -
    629 
    -
    630 const uint64_t kDaikin64KnownGoodState = 0x7C16161607204216;
    -
    631 const uint8_t kDaikin64Dry = 0b0001;
    -
    632 const uint8_t kDaikin64Cool = 0b0010;
    -
    633 const uint8_t kDaikin64Fan = 0b0100;
    -
    634 const uint8_t kDaikin64Heat = 0b1000;
    -
    635 const uint8_t kDaikin64FanAuto = 0b0001;
    -
    636 const uint8_t kDaikin64FanLow = 0b1000;
    -
    637 const uint8_t kDaikin64FanMed = 0b0100;
    -
    638 const uint8_t kDaikin64FanHigh = 0b0010;
    -
    639 const uint8_t kDaikin64FanQuiet = 0b1001;
    -
    640 const uint8_t kDaikin64FanTurbo = 0b0011;
    -
    641 const uint8_t kDaikin64MinTemp = 16; // Celsius
    -
    642 const uint8_t kDaikin64MaxTemp = 30; // Celsius
    -
    643 const uint8_t kDaikin64ChecksumOffset = 60;
    -
    644 const uint8_t kDaikin64ChecksumSize = 4; // Mask 0b1111 << 59
    -
    645 
    -
    646 // Legacy defines.
    -
    647 #define DAIKIN_COOL kDaikinCool
    -
    648 #define DAIKIN_HEAT kDaikinHeat
    -
    649 #define DAIKIN_FAN kDaikinFan
    -
    650 #define DAIKIN_AUTO kDaikinAuto
    -
    651 #define DAIKIN_DRY kDaikinDry
    -
    652 #define DAIKIN_MIN_TEMP kDaikinMinTemp
    -
    653 #define DAIKIN_MAX_TEMP kDaikinMaxTemp
    -
    654 #define DAIKIN_FAN_MIN kDaikinFanMin
    -
    655 #define DAIKIN_FAN_MAX kDaikinFanMax
    -
    656 #define DAIKIN_FAN_AUTO kDaikinFanAuto
    -
    657 #define DAIKIN_FAN_QUIET kDaikinFanQuiet
    -
    658 
    -
    660 class IRDaikinESP {
    -
    661  public:
    -
    662  explicit IRDaikinESP(const uint16_t pin, const bool inverted = false,
    -
    663  const bool use_modulation = true);
    -
    664 
    -
    665 #if SEND_DAIKIN
    -
    666  void send(const uint16_t repeat = kDaikinDefaultRepeat);
    -
    671  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    672 #endif
    -
    673  void begin(void);
    -
    674  void on(void);
    -
    675  void off(void);
    -
    676  void setPower(const bool on);
    -
    677  bool getPower(void) const;
    -
    678  void setTemp(const uint8_t temp);
    -
    679  uint8_t getTemp(void) const;
    -
    680  void setFan(const uint8_t fan);
    -
    681  uint8_t getFan(void) const;
    -
    682  void setMode(const uint8_t mode);
    -
    683  uint8_t getMode(void) const;
    -
    684  void setSwingVertical(const bool on);
    -
    685  bool getSwingVertical(void) const;
    -
    686  void setSwingHorizontal(const bool on);
    -
    687  bool getSwingHorizontal(void) const;
    -
    688  bool getQuiet(void) const;
    -
    689  void setQuiet(const bool on);
    -
    690  bool getPowerful(void) const;
    -
    691  void setPowerful(const bool on);
    -
    692  void setSensor(const bool on);
    -
    693  bool getSensor(void) const;
    -
    694  void setEcono(const bool on);
    -
    695  bool getEcono(void) const;
    -
    696  void setMold(const bool on);
    -
    697  bool getMold(void) const;
    -
    698  void setComfort(const bool on);
    -
    699  bool getComfort(void) const;
    -
    700  void enableOnTimer(const uint16_t starttime);
    -
    701  void disableOnTimer(void);
    -
    702  uint16_t getOnTime(void) const;
    -
    703  bool getOnTimerEnabled(void) const;
    -
    704  void enableOffTimer(const uint16_t endtime);
    -
    705  void disableOffTimer(void);
    -
    706  uint16_t getOffTime(void) const;
    -
    707  bool getOffTimerEnabled(void) const;
    -
    708  void setCurrentTime(const uint16_t mins_since_midnight);
    -
    709  uint16_t getCurrentTime(void) const;
    -
    710  void setCurrentDay(const uint8_t day_of_week);
    -
    711  uint8_t getCurrentDay(void) const;
    -
    712  void setWeeklyTimerEnable(const bool on);
    -
    713  bool getWeeklyTimerEnable(void) const;
    -
    714  uint8_t* getRaw(void);
    -
    715  void setRaw(const uint8_t new_code[],
    -
    716  const uint16_t length = kDaikinStateLength);
    -
    717  static bool validChecksum(uint8_t state[],
    -
    718  const uint16_t length = kDaikinStateLength);
    -
    719  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    720  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    721  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    722  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    723  stdAc::state_t toCommon(void) const;
    -
    724  String toString(void) const;
    -
    725 #ifndef UNIT_TEST
    -
    726 
    -
    727  private:
    - -
    729 #else
    -
    730  IRsendTest _irsend;
    -
    732 #endif
    -
    734  // # of bytes per command
    - -
    736  void stateReset(void);
    -
    737  void checksum(void);
    -
    738 };
    -
    739 
    -
    742 class IRDaikin2 {
    -
    743  public:
    -
    744  explicit IRDaikin2(const uint16_t pin, const bool inverted = false,
    -
    745  const bool use_modulation = true);
    -
    746 
    -
    747 #if SEND_DAIKIN2
    -
    748  void send(const uint16_t repeat = kDaikin2DefaultRepeat);
    -
    753  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    754 #endif
    -
    755  void begin(void);
    -
    756  void on(void);
    -
    757  void off(void);
    -
    758  void setPower(const bool state);
    -
    759  bool getPower(void) const;
    -
    760  void setTemp(const uint8_t temp);
    -
    761  uint8_t getTemp(void) const;
    -
    762  void setFan(const uint8_t fan);
    -
    763  uint8_t getFan(void) const;
    -
    764  uint8_t getMode(void) const;
    -
    765  void setMode(const uint8_t mode);
    -
    766  void setSwingVertical(const uint8_t position);
    -
    767  uint8_t getSwingVertical(void) const;
    -
    768  void setSwingHorizontal(const uint8_t position);
    -
    769  uint8_t getSwingHorizontal(void) const;
    -
    770  bool getQuiet(void) const;
    -
    771  void setQuiet(const bool on);
    -
    772  bool getPowerful(void) const;
    -
    773  void setPowerful(const bool on);
    -
    774  void setEcono(const bool on);
    -
    775  bool getEcono(void) const;
    -
    776  void setEye(const bool on);
    -
    777  bool getEye(void) const;
    -
    778  void setEyeAuto(const bool on);
    -
    779  bool getEyeAuto(void) const;
    -
    780  void setPurify(const bool on);
    -
    781  bool getPurify(void) const;
    -
    782  void setMold(const bool on);
    -
    783  bool getMold(void) const;
    -
    784  void enableOnTimer(const uint16_t starttime);
    -
    785  void disableOnTimer(void);
    -
    786  uint16_t getOnTime(void) const;
    -
    787  bool getOnTimerEnabled(void) const;
    -
    788  void enableSleepTimer(const uint16_t sleeptime);
    -
    789  void disableSleepTimer(void);
    -
    790  uint16_t getSleepTime(void) const;
    -
    791  bool getSleepTimerEnabled(void) const;
    -
    792  void enableOffTimer(const uint16_t endtime);
    -
    793  void disableOffTimer(void);
    -
    794  uint16_t getOffTime(void) const;
    -
    795  bool getOffTimerEnabled(void) const;
    -
    796  void setCurrentTime(const uint16_t time);
    -
    797  uint16_t getCurrentTime(void) const;
    -
    798  void setBeep(const uint8_t beep);
    -
    799  uint8_t getBeep(void) const;
    -
    800  void setLight(const uint8_t light);
    -
    801  uint8_t getLight(void) const;
    -
    802  void setClean(const bool on);
    -
    803  bool getClean(void) const;
    -
    804  void setFreshAir(const bool on);
    -
    805  bool getFreshAir(void) const;
    -
    806  void setFreshAirHigh(const bool on);
    -
    807  bool getFreshAirHigh(void) const;
    -
    808  uint8_t* getRaw(void);
    -
    809  void setRaw(const uint8_t new_code[]);
    -
    810  static bool validChecksum(uint8_t state[],
    -
    811  const uint16_t length = kDaikin2StateLength);
    -
    812  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    813  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    814  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    815  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    816  static stdAc::swingv_t toCommonSwingV(const uint8_t setting);
    -
    817  static stdAc::swingh_t toCommonSwingH(const uint8_t setting);
    -
    818  stdAc::state_t toCommon(void) const;
    -
    819  String toString(void) const;
    -
    820 #ifndef UNIT_TEST
    -
    821 
    -
    822  private:
    - -
    824 #else
    -
    825  IRsendTest _irsend;
    -
    827 #endif
    -
    829  // # of bytes per command
    - -
    831  void stateReset(void);
    -
    832  void checksum(void);
    -
    833  void clearOnTimerFlag(void);
    -
    834  void clearSleepTimerFlag(void);
    -
    835 };
    -
    836 
    -
    838 class IRDaikin216 {
    -
    839  public:
    -
    840  explicit IRDaikin216(const uint16_t pin, const bool inverted = false,
    -
    841  const bool use_modulation = true);
    -
    842 
    -
    843 #if SEND_DAIKIN216
    -
    844  void send(const uint16_t repeat = kDaikin216DefaultRepeat);
    -
    849  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    850 #endif
    -
    851  void begin(void);
    -
    852  uint8_t* getRaw(void);
    -
    853  void setRaw(const uint8_t new_code[]);
    -
    854  static bool validChecksum(uint8_t state[],
    -
    855  const uint16_t length = kDaikin216StateLength);
    -
    856  void on(void);
    -
    857  void off(void);
    -
    858  void setPower(const bool on);
    -
    859  bool getPower(void) const;
    -
    860  void setTemp(const uint8_t temp);
    -
    861  uint8_t getTemp(void) const;
    -
    862  void setMode(const uint8_t mode);
    -
    863  uint8_t getMode(void) const;
    -
    864  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    865  void setFan(const uint8_t fan);
    -
    866  uint8_t getFan(void) const;
    -
    867  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    868  void setSwingVertical(const bool on);
    -
    869  bool getSwingVertical(void) const;
    -
    870  void setSwingHorizontal(const bool on);
    -
    871  bool getSwingHorizontal(void) const;
    -
    872  void setQuiet(const bool on);
    -
    873  bool getQuiet(void) const;
    -
    874  void setPowerful(const bool on);
    -
    875  bool getPowerful(void) const;
    -
    876  stdAc::state_t toCommon(void) const;
    -
    877  String toString(void) const;
    -
    878 #ifndef UNIT_TEST
    -
    879 
    -
    880  private:
    - -
    882 #else
    -
    883  IRsendTest _irsend;
    -
    885 #endif
    -
    887  // # of bytes per command
    - -
    889  void stateReset(void);
    -
    890  void checksum(void);
    -
    891 };
    -
    892 
    -
    894 class IRDaikin160 {
    -
    895  public:
    -
    896  explicit IRDaikin160(const uint16_t pin, const bool inverted = false,
    -
    897  const bool use_modulation = true);
    -
    898 
    -
    899 #if SEND_DAIKIN160
    -
    900  void send(const uint16_t repeat = kDaikin160DefaultRepeat);
    -
    905  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    906 #endif
    -
    907  void begin(void);
    -
    908  uint8_t* getRaw(void);
    -
    909  void setRaw(const uint8_t new_code[]);
    -
    910  static bool validChecksum(uint8_t state[],
    -
    911  const uint16_t length = kDaikin160StateLength);
    -
    912  void on(void);
    -
    913  void off(void);
    -
    914  void setPower(const bool on);
    -
    915  bool getPower(void) const;
    -
    916  void setTemp(const uint8_t temp);
    -
    917  uint8_t getTemp(void) const;
    -
    918  void setMode(const uint8_t mode);
    -
    919  uint8_t getMode(void) const;
    -
    920  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    921  void setFan(const uint8_t fan);
    -
    922  uint8_t getFan(void) const;
    -
    923  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    924  void setSwingVertical(const uint8_t position);
    -
    925  uint8_t getSwingVertical(void) const;
    -
    926  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    927  static stdAc::swingv_t toCommonSwingV(const uint8_t setting);
    -
    928  stdAc::state_t toCommon(void) const;
    -
    929  String toString(void) const;
    -
    930 #ifndef UNIT_TEST
    -
    931 
    -
    932  private:
    - -
    934 #else
    -
    935  IRsendTest _irsend;
    -
    937 #endif
    -
    939  // # of bytes per command
    - -
    941  void stateReset(void);
    -
    942  void checksum(void);
    -
    943 };
    -
    944 
    -
    946 class IRDaikin176 {
    -
    947  public:
    -
    948  explicit IRDaikin176(const uint16_t pin, const bool inverted = false,
    -
    949  const bool use_modulation = true);
    -
    950 
    -
    951 #if SEND_DAIKIN176
    -
    952  void send(const uint16_t repeat = kDaikin176DefaultRepeat);
    -
    957  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    958 #endif
    -
    959  void begin(void);
    -
    960  uint8_t* getRaw(void);
    -
    961  void setRaw(const uint8_t new_code[]);
    -
    962  static bool validChecksum(uint8_t state[],
    -
    963  const uint16_t length = kDaikin176StateLength);
    -
    964  void on(void);
    -
    965  void off(void);
    -
    966  void setPower(const bool on);
    -
    967  bool getPower(void) const;
    -
    968  void setTemp(const uint8_t temp);
    -
    969  uint8_t getTemp(void) const;
    -
    970  void setMode(const uint8_t mode);
    -
    971  uint8_t getMode(void) const;
    -
    972  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    973  void setFan(const uint8_t fan);
    -
    974  uint8_t getFan(void) const;
    -
    975  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    976  void setSwingHorizontal(const uint8_t position);
    -
    977  uint8_t getSwingHorizontal(void) const;
    -
    978  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    979  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    980  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    981  static stdAc::swingh_t toCommonSwingH(const uint8_t setting);
    -
    982  stdAc::state_t toCommon(void) const;
    -
    983  String toString(void) const;
    -
    984 
    -
    985 #ifndef UNIT_TEST
    -
    986 
    -
    987  private:
    - -
    989 #else
    -
    990  IRsendTest _irsend;
    -
    992 #endif
    -
    994  // # of bytes per command
    - -
    996  uint8_t _saved_temp;
    -
    997  void stateReset(void);
    -
    998  void checksum(void);
    -
    999 };
    -
    1000 
    - -
    1004  public:
    -
    1005  explicit IRDaikin128(const uint16_t pin, const bool inverted = false,
    -
    1006  const bool use_modulation = true);
    -
    1007 #if SEND_DAIKIN128
    -
    1008  void send(const uint16_t repeat = kDaikin128DefaultRepeat);
    -
    1013  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    1014 #endif // SEND_DAIKIN128
    -
    1015  void begin(void);
    -
    1016  void setPowerToggle(const bool toggle);
    -
    1017  bool getPowerToggle(void) const;
    -
    1018  void setTemp(const uint8_t temp);
    -
    1019  uint8_t getTemp(void) const;
    -
    1020  void setFan(const uint8_t fan);
    -
    1021  uint8_t getFan(void) const;
    -
    1022  uint8_t getMode(void) const;
    -
    1023  void setMode(const uint8_t mode);
    -
    1024  void setSwingVertical(const bool on);
    -
    1025  bool getSwingVertical(void) const;
    -
    1026  bool getSleep(void) const;
    -
    1027  void setSleep(const bool on);
    -
    1028  bool getQuiet(void) const;
    -
    1029  void setQuiet(const bool on);
    -
    1030  bool getPowerful(void) const;
    -
    1031  void setPowerful(const bool on);
    -
    1032  void setEcono(const bool on);
    -
    1033  bool getEcono(void) const;
    -
    1034  void setOnTimer(const uint16_t mins_since_midnight);
    -
    1035  uint16_t getOnTimer(void) const;
    -
    1036  bool getOnTimerEnabled(void) const;
    -
    1037  void setOnTimerEnabled(const bool on);
    -
    1038  void setOffTimer(const uint16_t mins_since_midnight);
    -
    1039  uint16_t getOffTimer(void) const;
    -
    1040  bool getOffTimerEnabled(void) const;
    -
    1041  void setOffTimerEnabled(const bool on);
    -
    1042  void setClock(const uint16_t mins_since_midnight);
    -
    1043  uint16_t getClock(void) const;
    -
    1044  void setLightToggle(const uint8_t unit_type);
    -
    1045  uint8_t getLightToggle(void) const;
    -
    1046  uint8_t* getRaw(void);
    -
    1047  void setRaw(const uint8_t new_code[]);
    -
    1048  static bool validChecksum(uint8_t state[]);
    -
    1049  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    1050  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    1051  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    1052  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    1053  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    1054  String toString(void) const;
    -
    1055 #ifndef UNIT_TEST
    -
    1056 
    -
    1057  private:
    - -
    1059 #else
    -
    1060  IRsendTest _irsend;
    -
    1062 #endif
    -
    1064  // # of bytes per command
    - -
    1066  void stateReset(void);
    -
    1067  static uint8_t calcFirstChecksum(const uint8_t state[]);
    -
    1068  static uint8_t calcSecondChecksum(const uint8_t state[]);
    -
    1069  void checksum(void);
    -
    1070 };
    -
    1071 
    - -
    1074  public:
    -
    1075  explicit IRDaikin152(const uint16_t pin, const bool inverted = false,
    -
    1076  const bool use_modulation = true);
    -
    1077 
    -
    1078 #if SEND_DAIKIN152
    -
    1079  void send(const uint16_t repeat = kDaikin152DefaultRepeat);
    -
    1084  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    1085 #endif
    -
    1086  void begin(void);
    -
    1087  uint8_t* getRaw(void);
    -
    1088  void setRaw(const uint8_t new_code[]);
    -
    1089  static bool validChecksum(uint8_t state[],
    -
    1090  const uint16_t length = kDaikin152StateLength);
    -
    1091  void on(void);
    -
    1092  void off(void);
    -
    1093  void setPower(const bool on);
    -
    1094  bool getPower(void) const;
    -
    1095  void setTemp(const uint8_t temp);
    -
    1096  uint8_t getTemp(void) const;
    -
    1097  void setFan(const uint8_t fan);
    -
    1098  uint8_t getFan(void) const;
    -
    1099  void setMode(const uint8_t mode);
    -
    1100  uint8_t getMode(void) const;
    -
    1101  void setSwingV(const bool on);
    -
    1102  bool getSwingV(void) const;
    -
    1103  bool getQuiet(void) const;
    -
    1104  void setQuiet(const bool on);
    -
    1105  bool getPowerful(void) const;
    -
    1106  void setPowerful(const bool on);
    -
    1107  void setSensor(const bool on);
    -
    1108  bool getSensor(void) const;
    -
    1109  void setEcono(const bool on);
    -
    1110  bool getEcono(void) const;
    -
    1111  void setComfort(const bool on);
    -
    1112  bool getComfort(void) const;
    -
    1113  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    1114  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    1115  stdAc::state_t toCommon(void) const;
    -
    1116  String toString(void) const;
    -
    1117 #ifndef UNIT_TEST
    -
    1118 
    -
    1119  private:
    - -
    1121 #else
    -
    1122  IRsendTest _irsend;
    -
    1124 #endif
    -
    1126  // # of bytes per command
    - -
    1128  void stateReset(void);
    -
    1129  void checksum(void);
    -
    1130 };
    -
    1131 
    -
    1133 class IRDaikin64 {
    -
    1134  public:
    -
    1135  explicit IRDaikin64(const uint16_t pin, const bool inverted = false,
    -
    1136  const bool use_modulation = true);
    -
    1137 
    -
    1138 #if SEND_DAIKIN64
    -
    1139  void send(const uint16_t repeat = kDaikin64DefaultRepeat);
    -
    1144  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    1145 #endif // SEND_DAIKIN64
    -
    1146  void begin(void);
    -
    1147  uint64_t getRaw(void);
    -
    1148  void setRaw(const uint64_t new_state);
    -
    1149  static uint8_t calcChecksum(const uint64_t state);
    -
    1150  static bool validChecksum(const uint64_t state);
    -
    1151  void setPowerToggle(const bool on);
    -
    1152  bool getPowerToggle(void) const;
    -
    1153  void setTemp(const uint8_t temp);
    -
    1154  uint8_t getTemp(void) const;
    -
    1155  void setFan(const uint8_t fan);
    -
    1156  uint8_t getFan(void) const;
    -
    1157  void setMode(const uint8_t mode);
    -
    1158  uint8_t getMode(void) const;
    -
    1159  void setSwingVertical(const bool on);
    -
    1160  bool getSwingVertical(void) const;
    -
    1161  void setSleep(const bool on);
    -
    1162  bool getSleep(void) const;
    -
    1163  bool getQuiet(void) const;
    -
    1164  void setQuiet(const bool on);
    -
    1165  bool getTurbo(void) const;
    -
    1166  void setTurbo(const bool on);
    -
    1167  void setClock(const uint16_t mins_since_midnight);
    -
    1168  uint16_t getClock(void) const;
    -
    1169  void setOnTimeEnabled(const bool on);
    -
    1170  bool getOnTimeEnabled(void) const;
    -
    1171  void setOnTime(const uint16_t mins_since_midnight);
    -
    1172  uint16_t getOnTime(void) const;
    -
    1173  void setOffTimeEnabled(const bool on);
    -
    1174  bool getOffTimeEnabled(void) const;
    -
    1175  void setOffTime(const uint16_t mins_since_midnight);
    -
    1176  uint16_t getOffTime(void) const;
    -
    1177  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    1178  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    1179  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    1180  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    1181  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    1182  String toString(void) const;
    -
    1183 #ifndef UNIT_TEST
    -
    1184 
    -
    1185  private:
    - -
    1187 #else
    -
    1188  IRsendTest _irsend;
    -
    1190 #endif
    - -
    1193  void stateReset(void);
    -
    1194  void checksum(void);
    -
    1195 };
    -
    1196 #endif // IR_DAIKIN_H_
    -
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:3559
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:2702
    -
    bool getEcono(void) const
    Get the Economical mode of the A/C.
    Definition: ir_Daikin.cpp:354
    -
    const uint8_t kDaikin2SwingHRightMax
    Definition: ir_Daikin.h:297
    -
    const uint8_t kDaikin64ChecksumOffset
    Definition: ir_Daikin.h:643
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:3389
    -
    void setCurrentTime(const uint16_t time)
    Set the clock on the A/C unit.
    Definition: ir_Daikin.cpp:933
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:489
    -
    const uint16_t kDaikin152DefaultRepeat
    Definition: IRremoteESP8266.h:978
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a stdAc::swingh_t enum into it's native setting.
    Definition: ir_Daikin.cpp:1201
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:2019
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kDaikinStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:127
    -
    const uint16_t kDaikin152OneSpace
    Definition: ir_Daikin.h:587
    -
    uint8_t pad3[4]
    Definition: ir_Daikin.h:337
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:1565
    -
    uint8_t Power
    Definition: ir_Daikin.h:427
    -
    void setOffTimeEnabled(const bool on)
    Set the enable status of the Off Timer.
    Definition: ir_Daikin.cpp:3794
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:1819
    -
    uint8_t Temp
    Definition: ir_Daikin.h:554
    -
    void send(const uint16_t repeat=kDaikinDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:118
    -
    Native representation of a Daikin160 A/C message.
    Definition: ir_Daikin.h:359
    -
    uint16_t getClock(void) const
    Get the clock time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:2838
    -
    uint8_t Power
    Definition: ir_Daikin.h:369
    -
    uint8_t Sum
    Definition: ir_Daikin.h:578
    -
    const uint8_t kDaikinDry
    Definition: ir_Daikin.h:132
    -
    bool getOffTimeEnabled(void) const
    Get the enable status of the Off Timer.
    Definition: ir_Daikin.cpp:3800
    -
    uint16_t getOnTime(void) const
    Get the On Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:968
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:1160
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:1534
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:2183
    -
    uint16_t getOffTime(void) const
    Get the Off Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:3806
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:148
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:671
    -
    bool getOffTimerEnabled(void) const
    Get the enable status of the Off Timer.
    Definition: ir_Daikin.cpp:1001
    -
    bool getQuiet(void) const
    Get the Quiet mode status of the A/C.
    Definition: ir_Daikin.cpp:3320
    -
    bool getOffTimerEnabled(void) const
    Get the enable status of the Off Timer.
    Definition: ir_Daikin.cpp:2883
    -
    uint8_t raw[kDaikin160StateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:360
    -
    Native representation of a Daikin176 A/C message.
    Definition: ir_Daikin.h:411
    -
    uint8_t Sum1
    Definition: ir_Daikin.h:417
    -
    bool getOnTimerEnabled(void) const
    Get the enable status of the On Timer.
    Definition: ir_Daikin.cpp:974
    -
    bool getMold(void) const
    Get the Mould mode status of the A/C.
    Definition: ir_Daikin.cpp:366
    -
    uint8_t Mode
    Definition: ir_Daikin.h:599
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:854
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:2965
    -
    const uint8_t kDaikin64Heat
    Definition: ir_Daikin.h:634
    -
    const uint16_t kDaikin152ZeroSpace
    Definition: ir_Daikin.h:588
    -
    const uint16_t kDaikin64OneSpace
    Definition: ir_Daikin.h:621
    -
    const uint16_t kDaikin2DefaultRepeat
    Definition: IRremoteESP8266.h:967
    -
    const uint8_t kDaikin64Fan
    Definition: ir_Daikin.h:633
    -
    uint16_t getOffTimer(void) const
    Get the Off Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:2895
    -
    uint64_t Power
    Definition: ir_Daikin.h:86
    -
    uint16_t getOnTime(void) const
    Get the On Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:397
    -
    const uint16_t kDaikin64Freq
    Definition: ir_Daikin.h:626
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:3251
    -
    bool getPowerful(void) const
    Get the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:1168
    -
    uint8_t SwingV
    Definition: ir_Daikin.h:493
    -
    uint8_t pad2[3]
    Definition: ir_Daikin.h:332
    -
    void send(const uint16_t repeat=kDaikin2DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:706
    -
    uint16_t getCurrentTime(void) const
    Get the clock time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:941
    -
    uint8_t getLightToggle(void) const
    Get the Light toggle setting of the A/C.
    Definition: ir_Daikin.cpp:2917
    -
    bool getPowerToggle(void) const
    Get the Power toggle setting of the A/C.
    Definition: ir_Daikin.cpp:3582
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:2689
    -
    void setEyeAuto(const bool on)
    Set the Automatic Eye (Sensor) mode of the A/C.
    Definition: ir_Daikin.cpp:1079
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a stdAc::swingh_t enum into it's native setting.
    Definition: ir_Daikin.cpp:2381
    -
    const uint8_t kDaikin176SwingHAuto
    Definition: ir_Daikin.h:466
    -
    bool getEcono(void) const
    Get the Economical mode of the A/C.
    Definition: ir_Daikin.cpp:3352
    -
    uint8_t Mode
    Definition: ir_Daikin.h:550
    -
    IRDaikin2(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:696
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:1923
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:113
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:1528
    -
    uint8_t pad1[4]
    Definition: ir_Daikin.h:561
    -
    const uint16_t kDaikin176Section2Length
    Definition: ir_Daikin.h:456
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    uint8_t Power
    Definition: ir_Daikin.h:548
    -
    void setSwingVertical(const uint8_t position)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:865
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:1194
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:3852
    -
    uint64_t Fan
    Definition: ir_Daikin.h:100
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin2StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:715
    -
    uint64_t FreshAir
    Definition: ir_Daikin.h:194
    -
    const uint8_t kDaikin64Overhead
    Definition: ir_Daikin.h:627
    -
    const uint16_t kDaikinOneSpace
    Definition: ir_Daikin.h:169
    -
    const uint16_t kDaikin2ZeroSpace
    Definition: ir_Daikin.h:274
    -
    Class for handling detailed Daikin 280-bit A/C messages.
    Definition: ir_Daikin.h:660
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:2309
    -
    const uint8_t kDaikin2SwingHOff
    Definition: ir_Daikin.h:299
    -
    const uint16_t kDaikin2HdrMark
    Definition: ir_Daikin.h:270
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin216StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:1459
    -
    void setOffTime(const uint16_t mins_since_midnight)
    Set the Off Timer time for the A/C unit.
    Definition: ir_Daikin.cpp:3812
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Daikin.cpp:2404
    -
    uint8_t Sum2
    Definition: ir_Daikin.h:388
    -
    uint8_t pad[5]
    Definition: ir_Daikin.h:507
    -
    uint8_t getSwingHorizontal(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:2374
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Daikin.cpp:1871
    -
    Class for handling detailed Daikin 312-bit A/C messages.
    Definition: ir_Daikin.h:742
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:849
    -
    const uint16_t kDaikin176StateLength
    Definition: IRremoteESP8266.h:979
    -
    void setSwingHorizontal(const uint8_t position)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:2362
    -
    Class for handling detailed Daikin 128-bit A/C messages.
    Definition: ir_Daikin.h:1003
    -
    void setMold(const bool on)
    Set the Mould (filter) mode of the A/C.
    Definition: ir_Daikin.cpp:1031
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t setting)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_Daikin.cpp:1217
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Daikin.cpp:1875
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:1586
    -
    uint16_t getOffTime(void) const
    Get the Off Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:995
    -
    bool getQuiet(void) const
    Get the Quiet mode status of the A/C.
    Definition: ir_Daikin.cpp:1639
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:2696
    -
    void setSwingHorizontal(const bool on)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:291
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:1645
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:2664
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Daikin.cpp:1516
    -
    const uint16_t kDaikin64HdrMark
    Definition: ir_Daikin.h:618
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:1798
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:2604
    -
    const uint16_t kDaikin176HdrMark
    Definition: ir_Daikin.h:448
    -
    void setOffTimer(const uint16_t mins_since_midnight)
    Set the Off Timer time for the A/C unit.
    Definition: ir_Daikin.cpp:2889
    -
    uint8_t SwingV
    Definition: ir_Daikin.h:326
    -
    uint8_t Sum
    Definition: ir_Daikin.h:614
    -
    void setClock(const uint16_t mins_since_midnight)
    Set the clock on the A/C unit.
    Definition: ir_Daikin.cpp:3755
    -
    const uint8_t kDaikin128FanPowerful
    Definition: ir_Daikin.h:534
    -
    const uint16_t kDaikin128Freq
    Definition: ir_Daikin.h:513
    -
    void clearOnTimerFlag(void)
    Clear the On Timer flag.
    Definition: ir_Daikin.cpp:955
    -
    const uint16_t kDaikinGap
    Definition: ir_Daikin.h:170
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:1058
    -
    const uint8_t kDaikin128MinTemp
    Definition: ir_Daikin.h:536
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Daikin.cpp:1868
    -
    bool getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:2764
    -
    const uint8_t kDaikin2SwingVSwing
    Definition: ir_Daikin.h:289
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Daikin.cpp:1512
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:3588
    -
    const uint8_t kDaikin2SwingVLowerMiddle
    Definition: ir_Daikin.h:282
    -
    bool getPurify(void) const
    Get the Purify (Filter) mode status of the A/C.
    Definition: ir_Daikin.cpp:1180
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:2219
    -
    uint8_t OnHours
    Definition: ir_Daikin.h:603
    -
    void disableOffTimer(void)
    Disable the Off timer.
    Definition: ir_Daikin.cpp:987
    -
    uint8_t Power
    Definition: ir_Daikin.h:496
    -
    const uint16_t kDaikin160Gap
    Definition: ir_Daikin.h:398
    -
    uint8_t Temp
    Definition: ir_Daikin.h:435
    -
    Class for handling detailed Daikin 64-bit A/C messages.
    Definition: ir_Daikin.h:1133
    -
    const uint16_t kDaikinBitMark
    Definition: ir_Daikin.h:167
    -
    void enableOffTimer(const uint16_t endtime)
    Set the enable status & time of the Off Timer.
    Definition: ir_Daikin.cpp:980
    -
    static uint8_t calcChecksum(const uint64_t state)
    Calculate the checksum for a given state.
    Definition: ir_Daikin.cpp:3536
    -
    uint8_t Fan
    Definition: ir_Daikin.h:383
    -
    const uint16_t kDaikin152BitMark
    Definition: ir_Daikin.h:586
    -
    Daikin128Protocol _
    Definition: ir_Daikin.h:1065
    -
    const uint8_t kDaikin176FanMax
    Definition: ir_Daikin.h:465
    -
    void setCurrentTime(const uint16_t mins_since_midnight)
    Set the clock on the A/C unit.
    Definition: ir_Daikin.cpp:434
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:3554
    -
    const uint16_t kDaikin152HdrSpace
    Definition: ir_Daikin.h:585
    -
    const uint8_t kDaikin2SwingVHighest
    Definition: ir_Daikin.h:279
    -
    uint8_t SwingV
    Definition: ir_Daikin.h:610
    -
    uint8_t Fan
    Definition: ir_Daikin.h:327
    -
    const uint16_t kDaikin160BitMark
    Definition: ir_Daikin.h:395
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:779
    -
    uint8_t Econo
    Definition: ir_Daikin.h:118
    -
    void setEcono(const bool on)
    Set the Economy mode of the A/C.
    Definition: ir_Daikin.cpp:3344
    -
    uint8_t getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:883
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:3294
    -
    bool getPowerful(void) const
    Get the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:3338
    -
    const uint8_t kDaikin2MinCoolTemp
    Definition: ir_Daikin.h:302
    -
    uint64_t Mold
    Definition: ir_Daikin.h:196
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:3282
    -
    uint64_t Comfort
    Definition: ir_Daikin.h:69
    - -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Daikin.cpp:2247
    -
    const uint8_t kDaikin64FanQuiet
    Definition: ir_Daikin.h:639
    -
    uint64_t SwingV
    Definition: ir_Daikin.h:212
    -
    void setPowerToggle(const bool toggle)
    Set the Power toggle setting of the A/C.
    Definition: ir_Daikin.cpp:2625
    -
    bool getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:3737
    -
    uint8_t Econo
    Definition: ir_Daikin.h:572
    -
    Daikin176Protocol _
    Definition: ir_Daikin.h:995
    -
    const uint8_t kDaikin152FanTemp
    Definition: ir_Daikin.h:592
    -
    bool getPowerful(void) const
    Get the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:328
    -
    Class for handling detailed Daikin 216-bit A/C messages.
    Definition: ir_Daikin.h:838
    -
    uint64_t Powerful
    Definition: ir_Daikin.h:244
    -
    const uint8_t kDaikin64Cool
    Definition: ir_Daikin.h:632
    -
    void setMold(const bool on)
    Set the Mould mode of the A/C.
    Definition: ir_Daikin.cpp:360
    -
    uint8_t pad0[6]
    Definition: ir_Daikin.h:363
    -
    uint64_t OnTimer
    Definition: ir_Daikin.h:223
    -
    const uint8_t kDaikin64FanTurbo
    Definition: ir_Daikin.h:640
    -
    const uint8_t kDaikinFan
    Definition: ir_Daikin.h:135
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:1186
    -
    void setFreshAirHigh(const bool on)
    Set the (High) Fresh Air mode of the A/C.
    Definition: ir_Daikin.cpp:1067
    -
    const uint16_t kDaikinZeroSpace
    Definition: ir_Daikin.h:168
    -
    const uint8_t kDaikinSection1Length
    Definition: ir_Daikin.h:147
    -
    uint8_t SwingH
    Definition: ir_Daikin.h:329
    -
    uint8_t OffHalfHour
    Definition: ir_Daikin.h:607
    -
    const uint8_t kDaikinByteChecksum2
    Definition: ir_Daikin.h:152
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:1084
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:2637
    -
    uint8_t raw[kDaikin128StateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:471
    -
    Native representation of a Daikin216 A/C message.
    Definition: ir_Daikin.h:305
    -
    void setSensor(const bool on)
    Set the Sensor mode of the A/C.
    Definition: ir_Daikin.cpp:334
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:1909
    -
    uint64_t OnTimer
    Definition: ir_Daikin.h:87
    -
    uint64_t Econo
    Definition: ir_Daikin.h:253
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint16_t kDaikinUnusedTime
    Definition: ir_Daikin.h:154
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:957
    -
    const uint8_t kDaikin176Dry
    Definition: ir_Daikin.h:462
    -
    uint8_t Wall
    Definition: ir_Daikin.h:504
    -
    const uint8_t kDaikin176Auto
    Definition: ir_Daikin.h:461
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:3326
    -
    void disableOnTimer(void)
    Disable the On timer.
    Definition: ir_Daikin.cpp:960
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint16_t kDaikin216ZeroSpace
    Definition: ir_Daikin.h:348
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:2259
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Daikin.cpp:3201
    -
    uint16_t getSleepTime(void) const
    Get the Sleep Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:1134
    -
    uint8_t Sum1
    Definition: ir_Daikin.h:497
    -
    uint8_t OffHalfHour
    Definition: ir_Daikin.h:488
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:3217
    -
    Native representation of a Daikin2 A/C message.
    Definition: ir_Daikin.h:176
    -
    bool getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:1607
    -
    uint64_t OnTime
    Definition: ir_Daikin.h:105
    -
    const uint8_t kDaikin2SwingHLeft
    Definition: ir_Daikin.h:294
    -
    uint8_t raw[kDaikin176StateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:412
    -
    uint8_t OffHours
    Definition: ir_Daikin.h:487
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t setting)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_Daikin.cpp:2392
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:701
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Daikin.cpp:3721
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:1481
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:317
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:2045
    -
    uint64_t OffTime
    Definition: ir_Daikin.h:242
    -
    const uint16_t kDaikinHdrSpace
    Definition: ir_Daikin.h:166
    -
    const uint16_t kDaikin160HdrSpace
    Definition: ir_Daikin.h:394
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    void setOnTimeEnabled(const bool on)
    Set the enable status of the On Timer.
    Definition: ir_Daikin.cpp:3770
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:3170
    -
    uint64_t Sum1
    Definition: ir_Daikin.h:215
    -
    IRDaikinESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:108
    -
    uint8_t WeeklyTimer
    Definition: ir_Daikin.h:120
    -
    uint8_t raw[kDaikinStateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:63
    -
    void setPower(const bool state)
    Change the power setting.
    Definition: ir_Daikin.cpp:791
    -
    const uint8_t kDaikinCurIndex
    Definition: ir_Daikin.h:162
    -
    const uint8_t kDaikin160SwingVHighest
    Definition: ir_Daikin.h:407
    -
    void setSwingVertical(const uint8_t position)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:1966
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:2731
    -
    uint8_t pad3[2]
    Definition: ir_Daikin.h:441
    -
    bool getPowerToggle(void) const
    Get the Power toggle setting of the A/C.
    Definition: ir_Daikin.cpp:2631
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:1952
    -
    uint8_t Powerful
    Definition: ir_Daikin.h:334
    -
    const uint16_t kDaikin2Section2Length
    Definition: ir_Daikin.h:277
    -
    uint8_t pad1[5]
    Definition: ir_Daikin.h:419
    -
    bool getSensor(void) const
    Get the Sensor mode of the A/C.
    Definition: ir_Daikin.cpp:340
    -
    uint8_t pad[3]
    Definition: ir_Daikin.h:178
    -
    const uint16_t kDaikin152StateLength
    Definition: IRremoteESP8266.h:976
    -
    uint8_t pad1[5]
    Definition: ir_Daikin.h:367
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:1887
    -
    const uint8_t kDaikin128BitCeiling
    Definition: ir_Daikin.h:539
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Daikin.cpp:206
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:836
    -
    bool getSwingV(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:3306
    -
    const uint16_t kDaikin160OneSpace
    Definition: ir_Daikin.h:396
    -
    bool getFreshAirHigh(void) const
    Get the (High) Fresh Air mode status of the A/C.
    Definition: ir_Daikin.cpp:1073
    -
    void setFreshAir(const bool on)
    Set the Fresh Air mode of the A/C.
    Definition: ir_Daikin.cpp:1055
    -
    void setLight(const uint8_t light)
    Set the Light (LED) mode of the A/C.
    Definition: ir_Daikin.cpp:1025
    -
    uint8_t raw[kDaikin2StateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:179
    -
    const uint16_t kDaikin128ZeroSpace
    Definition: ir_Daikin.h:520
    -
    const uint8_t kDaikinFanMax
    Definition: ir_Daikin.h:140
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:2643
    -
    const uint16_t kDaikin176Gap
    Definition: ir_Daikin.h:453
    -
    void enableOnTimer(const uint16_t starttime)
    Set the enable status & time of the On Timer.
    Definition: ir_Daikin.cpp:948
    -
    void setOffTimerEnabled(const bool on)
    Set the enable status of the Off Timer.
    Definition: ir_Daikin.cpp:2877
    -
    const uint8_t kDaikin128FanMed
    Definition: ir_Daikin.h:532
    -
    uint8_t Sum2
    Definition: ir_Daikin.h:509
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:2330
    -
    uint8_t Fan
    Definition: ir_Daikin.h:600
    -
    void off(void)
    Change the power setting to Off..
    Definition: ir_Daikin.cpp:2236
    -
    uint8_t getSwingHorizontal(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:929
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:1504
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Daikin.cpp:216
    -
    const uint8_t kDaikinSwingOn
    Definition: ir_Daikin.h:143
    -
    const uint16_t kDaikin216Freq
    Definition: ir_Daikin.h:343
    -
    void setSwingVertical(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:279
    -
    const uint16_t kDaikin216StateLength
    Definition: IRremoteESP8266.h:982
    -
    const uint16_t kDaikin176Freq
    Definition: ir_Daikin.h:447
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Daikin.cpp:2795
    -
    uint8_t pad0[7]
    Definition: ir_Daikin.h:309
    -
    uint8_t Temp
    Definition: ir_Daikin.h:609
    -
    uint8_t Mold
    Definition: ir_Daikin.h:123
    -
    uint16_t getOnTimer(void) const
    Get the On Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:2871
    -
    const uint16_t kDaikin2Section1Length
    Definition: ir_Daikin.h:276
    -
    void setLightToggle(const uint8_t unit_type)
    Set the Light toggle setting of the A/C.
    Definition: ir_Daikin.cpp:2902
    -
    const uint8_t kDaikin2SwingHMiddle
    Definition: ir_Daikin.h:295
    - -
    swingh_t
    Common A/C settings for Horizontal Swing.
    Definition: IRsend.h:83
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:823
    -
    const uint16_t kDaikin152Freq
    Definition: ir_Daikin.h:582
    -
    void send(const uint16_t repeat=kDaikin128DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:2618
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Daikin.cpp:3312
    -
    const uint16_t kDaikin128HdrSpace
    Definition: ir_Daikin.h:517
    -
    const uint8_t kDaikinBeepOff
    Definition: ir_Daikin.h:157
    -
    uint8_t Fan
    Definition: ir_Daikin.h:477
    -
    uint8_t Sleep
    Definition: ir_Daikin.h:611
    -
    uint64_t SwingH
    Definition: ir_Daikin.h:210
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:3186
    -
    void setSensor(const bool on)
    Set the Sensor mode of the A/C.
    Definition: ir_Daikin.cpp:3358
    -
    const uint16_t kDaikin176HdrSpace
    Definition: ir_Daikin.h:449
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Daikin.cpp:2297
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:3624
    -
    const uint16_t kDaikin2Sections
    Definition: ir_Daikin.h:275
    -
    const uint8_t kDaikin160SwingVHigh
    Definition: ir_Daikin.h:406
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:1232
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:1551
    -
    static uint8_t calcSecondChecksum(const uint8_t state[])
    Definition: ir_Daikin.cpp:2569
    -
    void setComfort(const bool on)
    Set the Comfort mode of the A/C.
    Definition: ir_Daikin.cpp:372
    -
    const uint16_t kDaikin128StateLength
    Definition: IRremoteESP8266.h:973
    -
    const uint16_t kDaikin176DefaultRepeat
    Definition: IRremoteESP8266.h:981
    -
    uint64_t OffTimer
    Definition: ir_Daikin.h:224
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:2588
    -
    const uint8_t kDaikin128BitWall
    Definition: ir_Daikin.h:538
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:3654
    -
    const uint16_t kDaikin2BitMark
    Definition: ir_Daikin.h:272
    -
    uint64_t Mode
    Definition: ir_Daikin.h:226
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin152StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:3161
    -
    const uint16_t kDaikin2LeaderSpace
    Definition: ir_Daikin.h:268
    -
    Daikin216Protocol _
    Definition: ir_Daikin.h:888
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:3415
    -
    void setComfort(const bool on)
    Set the Comfort mode of the A/C.
    Definition: ir_Daikin.cpp:3370
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t setting)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Daikin.cpp:908
    -
    bool getSwingHorizontal(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:1619
    -
    const uint16_t kDaikin160Sections
    Definition: ir_Daikin.h:399
    -
    void setSwingV(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:3300
    -
    uint8_t Sensor
    Definition: ir_Daikin.h:573
    -
    uint8_t getCurrentDay(void) const
    Get the current day of the week to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:456
    -
    const uint8_t kDaikin64FanAuto
    Definition: ir_Daikin.h:635
    -
    void setSwingHorizontal(const uint8_t position)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:923
    -
    uint16_t getCurrentTime(void) const
    Get the clock time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:442
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Daikin.cpp:1626
    -
    const uint16_t kDaikin160Freq
    Definition: ir_Daikin.h:392
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:810
    -
    const uint8_t kDaikin64Dry
    Definition: ir_Daikin.h:631
    -
    const uint8_t kDaikin2SwingVBreeze
    Definition: ir_Daikin.h:285
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:184
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:3818
    -
    IRDaikin176(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:2157
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin160StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:1804
    -
    bool getSleep(void) const
    Get the Sleep mode of the A/C.
    Definition: ir_Daikin.cpp:2776
    -
    const uint8_t kDaikin64FanLow
    Definition: ir_Daikin.h:636
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:2190
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Daikin.cpp:3198
    -
    bool getPowerful(void) const
    Get the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:1653
    -
    IRDaikin160(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:1793
    -
    uint8_t Mode
    Definition: ir_Daikin.h:429
    -
    const uint8_t kDaikinBeepLoud
    Definition: ir_Daikin.h:156
    -
    const uint8_t kDaikinFanAuto
    Definition: ir_Daikin.h:141
    -
    uint16_t getClock(void) const
    Get the clock time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:3764
    -
    uint64_t OnTime
    Definition: ir_Daikin.h:241
    -
    const uint8_t kDaikin128Dry
    Definition: ir_Daikin.h:525
    -
    void setSwingHorizontal(const bool on)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:1613
    -
    const uint64_t kDaikin64KnownGoodState
    Definition: ir_Daikin.h:630
    -
    uint8_t Quiet
    Definition: ir_Daikin.h:565
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kDaikin176StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:2168
    -
    uint64_t getRaw(void)
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Daikin.cpp:3565
    -
    uint8_t SwingV
    Definition: ir_Daikin.h:375
    -
    uint8_t Sum1
    Definition: ir_Daikin.h:311
    -
    const uint16_t kDaikin216Sections
    Definition: ir_Daikin.h:350
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:2323
    -
    const uint8_t kDaikin176Heat
    Definition: ir_Daikin.h:459
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:1595
    -
    IRDaikin128(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:2557
    -
    uint8_t ModeButton
    Definition: ir_Daikin.h:425
    -
    uint8_t ClockMins
    Definition: ir_Daikin.h:479
    -
    uint8_t OnHours
    Definition: ir_Daikin.h:483
    -
    uint8_t Ceiling
    Definition: ir_Daikin.h:501
    -
    const uint8_t kDaikin152DryTemp
    Definition: ir_Daikin.h:591
    -
    void setCurrentDay(const uint8_t day_of_week)
    Set the current day of the week to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:449
    -
    IRDaikin64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:3518
    -
    uint8_t Temp
    Definition: ir_Daikin.h:321
    -
    IRDaikin152(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Daikin.cpp:3142
    -
    uint8_t Sum2
    Definition: ir_Daikin.h:339
    -
    const uint16_t kDaikin160HdrMark
    Definition: ir_Daikin.h:393
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:2162
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:1445
    -
    const uint16_t kDaikin64ZeroSpace
    Definition: ir_Daikin.h:622
    -
    uint8_t Sleep
    Definition: ir_Daikin.h:494
    -
    static bool validChecksum(uint8_t state[])
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:2577
    -
    const uint16_t kDaikin128SectionLength
    Definition: ir_Daikin.h:524
    -
    const uint8_t kDaikin176Cool
    Definition: ir_Daikin.h:460
    -
    void setTurbo(const bool on)
    Set the Turbo (Powerful) mode of the A/C.
    Definition: ir_Daikin.cpp:3705
    -
    const uint16_t kDaikin128LeaderSpace
    Definition: ir_Daikin.h:515
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:841
    -
    void setWeeklyTimerEnable(const bool on)
    Set the enable status of the Weekly Timer.
    Definition: ir_Daikin.cpp:462
    -
    Daikin2Protocol _
    Definition: ir_Daikin.h:830
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:1144
    -
    const uint16_t kDaikin2LeaderMark
    Definition: ir_Daikin.h:267
    -
    const uint8_t kDaikinBeepQuiet
    Definition: ir_Daikin.h:155
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:2930
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:3602
    -
    uint8_t Mode
    Definition: ir_Daikin.h:476
    -
    uint8_t Power
    Definition: ir_Daikin.h:315
    -
    const uint8_t kDaikin2SwingVAuto
    Definition: ir_Daikin.h:288
    -
    Daikin160Protocol _
    Definition: ir_Daikin.h:940
    -
    Native representation of a Daikin A/C message.
    Definition: ir_Daikin.h:62
    -
    uint8_t Sum2
    Definition: ir_Daikin.h:262
    -
    bool getOffTimerEnabled(void) const
    Get the enable status of the Off Timer.
    Definition: ir_Daikin.cpp:428
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:476
    -
    const uint16_t kDaikin216Section1Length
    Definition: ir_Daikin.h:351
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Daikin.cpp:1881
    -
    const uint8_t kDaikinLightBright
    Definition: ir_Daikin.h:158
    -
    uint8_t AltMode
    Definition: ir_Daikin.h:422
    -
    bool getMold(void) const
    Get the Mould (filter) mode status of the A/C.
    Definition: ir_Daikin.cpp:1037
    -
    const uint16_t kDaikin152Gap
    Definition: ir_Daikin.h:589
    -
    void send(const uint16_t repeat=kDaikin176DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:2227
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Daikin.cpp:890
    -
    const uint8_t kDaikin128Auto
    Definition: ir_Daikin.h:529
    -
    const uint8_t kDaikin160SwingVMiddle
    Definition: ir_Daikin.h:405
    -
    bool getSleepTimerEnabled(void) const
    Get the Sleep timer enabled status of the A/C.
    Definition: ir_Daikin.cpp:1140
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:1930
    -
    void setEcono(const bool on)
    Set the Economy mode of the A/C.
    Definition: ir_Daikin.cpp:2782
    -
    Native representation of a Daikin64 A/C message.
    Definition: ir_Daikin.h:595
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:2345
    -
    const uint16_t kDaikin128Gap
    Definition: ir_Daikin.h:521
    -
    const uint8_t kDaikin64MaxTemp
    Definition: ir_Daikin.h:642
    -
    uint64_t Temp
    Definition: ir_Daikin.h:230
    -
    bool getSwingHorizontal(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_Daikin.cpp:297
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:3596
    -
    const uint8_t kDaikinHeat
    Definition: ir_Daikin.h:134
    -
    const uint16_t kDaikin216OneSpace
    Definition: ir_Daikin.h:347
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:3648
    -
    uint64_t Mode
    Definition: ir_Daikin.h:90
    -
    uint8_t pad0[5]
    Definition: ir_Daikin.h:546
    -
    uint64_t SleepTimer
    Definition: ir_Daikin.h:256
    -
    const uint8_t kDaikin176SwingHOff
    Definition: ir_Daikin.h:467
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Daikin.cpp:303
    -
    const uint16_t kDaikin64BitMark
    Definition: ir_Daikin.h:619
    -
    const uint8_t kDaikin160SwingVLowest
    Definition: ir_Daikin.h:403
    -
    const uint16_t kDaikin216DefaultRepeat
    Definition: IRremoteESP8266.h:984
    -
    const uint8_t kDaikin2SwingHLeftMax
    Definition: ir_Daikin.h:293
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Daikin.cpp:3205
    -
    const uint8_t kDaikinCurBit
    Definition: ir_Daikin.h:161
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:905
    -
    void clearSleepTimerFlag(void)
    Clear the sleep timer flag.
    Definition: ir_Daikin.cpp:1123
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:2253
    -
    bool getOnTimerEnabled(void) const
    Get the enable status of the On Timer.
    Definition: ir_Daikin.cpp:2850
    -
    uint8_t OnTimer
    Definition: ir_Daikin.h:485
    -
    const uint16_t kDaikin176BitMark
    Definition: ir_Daikin.h:450
    -
    bool getComfort(void) const
    Get the Comfort mode of the A/C.
    Definition: ir_Daikin.cpp:3383
    -
    uint8_t OffHours
    Definition: ir_Daikin.h:606
    -
    uint64_t FreshAirHigh
    Definition: ir_Daikin.h:200
    -
    const uint16_t kDaikin160DefaultRepeat
    Definition: IRremoteESP8266.h:972
    -
    void setPowerToggle(const bool on)
    Set the Power toggle setting of the A/C.
    Definition: ir_Daikin.cpp:3576
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:2284
    -
    void setEcono(const bool on)
    Set the Economy mode of the A/C.
    Definition: ir_Daikin.cpp:346
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Daikin.cpp:2240
    -
    uint64_t CurrentTime
    Definition: ir_Daikin.h:77
    -
    bool getClean(void) const
    Get the Auto Clean mode status of the A/C.
    Definition: ir_Daikin.cpp:1049
    -
    const int8_t kDaikin64ToleranceDelta
    Definition: ir_Daikin.h:628
    -
    bool getOnTimeEnabled(void) const
    Get the enable status of the On Timer.
    Definition: ir_Daikin.cpp:3776
    -
    const uint8_t kDaikin160SwingVAuto
    Definition: ir_Daikin.h:408
    -
    const uint16_t kDaikinHeaderLength
    Definition: ir_Daikin.h:145
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Daikin.cpp:210
    -
    const uint16_t kDaikin64LdrMark
    Definition: ir_Daikin.h:623
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:3268
    - -
    bool getTurbo(void) const
    Get the Turbo (Powerful) mode status of the A/C.
    Definition: ir_Daikin.cpp:3699
    -
    uint8_t OffTimer
    Definition: ir_Daikin.h:608
    -
    const uint8_t kDaikin128Cool
    Definition: ir_Daikin.h:526
    -
    const uint16_t kDaikin176ZeroSpace
    Definition: ir_Daikin.h:452
    -
    uint8_t ClockHours
    Definition: ir_Daikin.h:602
    -
    const uint8_t kDaikin128Heat
    Definition: ir_Daikin.h:528
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:736
    -
    const uint8_t kDaikinSection3Length
    Definition: ir_Daikin.h:149
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Daikin.cpp:3211
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:558
    -
    uint8_t Powerful
    Definition: ir_Daikin.h:563
    -
    bool getEye(void) const
    Get the Eye (Sensor) mode status of the A/C.
    Definition: ir_Daikin.cpp:1097
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:3223
    -
    const uint16_t kDaikin160Section1Length
    Definition: ir_Daikin.h:400
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Daikin.cpp:1509
    -
    const uint16_t kDaikin128Sections
    Definition: ir_Daikin.h:523
    -
    const uint16_t kDaikin176Sections
    Definition: ir_Daikin.h:454
    -
    uint64_t SwingV
    Definition: ir_Daikin.h:99
    -
    const uint16_t kDaikin128DefaultRepeat
    Definition: IRremoteESP8266.h:975
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:772
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:3245
    -
    Class for handling detailed Daikin 152-bit A/C messages.
    Definition: ir_Daikin.h:1073
    -
    bool getEcono(void) const
    Get the Economical mode of the A/C.
    Definition: ir_Daikin.cpp:2789
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Daikin.cpp:787
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:2811
    -
    const uint8_t kDaikin128FanLow
    Definition: ir_Daikin.h:533
    -
    uint64_t Light
    Definition: ir_Daikin.h:191
    -
    const uint16_t kDaikinStateLength
    Definition: IRremoteESP8266.h:960
    -
    void setOnTime(const uint16_t mins_since_midnight)
    Set the On Timer time for the A/C unit.
    Definition: ir_Daikin.cpp:3788
    -
    Class for handling detailed Daikin 160-bit A/C messages.
    Definition: ir_Daikin.h:894
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:728
    -
    const uint16_t kDaikin216Section2Length
    Definition: ir_Daikin.h:352
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:249
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:1497
    -
    const uint8_t kDaikin64FanMed
    Definition: ir_Daikin.h:637
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:235
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:3175
    -
    const uint16_t kDaikin128FooterMark
    Definition: ir_Daikin.h:522
    -
    uint8_t Comfort
    Definition: ir_Daikin.h:571
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:1687
    -
    bool getOnTimerEnabled(void) const
    Get the enable status of the On Timer.
    Definition: ir_Daikin.cpp:403
    -
    void disableOffTimer(void)
    Clear and disable the Off timer.
    Definition: ir_Daikin.cpp:415
    -
    void setPurify(const bool on)
    Set the Purify (Filter) mode of the A/C.
    Definition: ir_Daikin.cpp:1174
    -
    const uint16_t kDaikin2Gap
    Definition: ir_Daikin.h:269
    -
    void setSleep(const bool on)
    Set the Sleep mode of the A/C.
    Definition: ir_Daikin.cpp:3743
    -
    uint64_t Clean
    Definition: ir_Daikin.h:198
    -
    const uint8_t kDaikin152LeaderBits
    Definition: ir_Daikin.h:583
    -
    void setOnTimer(const uint16_t mins_since_midnight)
    Set the On Timer time for the A/C unit.
    Definition: ir_Daikin.cpp:2865
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:804
    -
    const uint16_t kDaikinDefaultRepeat
    Definition: IRremoteESP8266.h:964
    -
    uint8_t OnHalfHour
    Definition: ir_Daikin.h:604
    -
    const uint16_t kDaikin64DefaultRepeat
    Definition: IRremoteESP8266.h:969
    -
    bool getWeeklyTimerEnable(void) const
    Get the enable status of the Weekly Timer.
    Definition: ir_Daikin.cpp:469
    -
    uint16_t getOffTime(void) const
    Get the Off Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:422
    -
    const uint16_t kDaikin64LdrSpace
    Definition: ir_Daikin.h:625
    -
    const uint8_t kDaikin128Fan
    Definition: ir_Daikin.h:527
    -
    uint8_t Sensor
    Definition: ir_Daikin.h:117
    -
    uint64_t Quiet
    Definition: ir_Daikin.h:246
    -
    uint64_t Power
    Definition: ir_Daikin.h:222
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:753
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Daikin.cpp:3686
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t setting)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Daikin.cpp:2005
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Daikin.cpp:1943
    -
    uint8_t Sum1
    Definition: ir_Daikin.h:365
    -
    void setOnTimerEnabled(const bool on)
    Set the enable status of the On Timer.
    Definition: ir_Daikin.cpp:2844
    -
    uint8_t OnTimer
    Definition: ir_Daikin.h:605
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:2411
    -
    void setRaw(const uint64_t new_state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:3572
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Daikin.cpp:2233
    -
    void enableSleepTimer(const uint16_t sleeptime)
    Set the enable status & time of the Sleep Timer.
    Definition: ir_Daikin.cpp:1116
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:1258
    -
    static bool validChecksum(const uint64_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_Daikin.cpp:3547
    -
    const uint8_t kDaikin2SwingVHigh
    Definition: ir_Daikin.h:280
    -
    const uint16_t kDaikin160Section2Length
    Definition: ir_Daikin.h:401
    -
    const uint8_t kDaikin128FanQuiet
    Definition: ir_Daikin.h:535
    -
    const uint8_t kDaikin216SwingOn
    Definition: ir_Daikin.h:355
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Daikin.cpp:257
    -
    uint8_t OffTimer
    Definition: ir_Daikin.h:489
    -
    void enableOnTimer(const uint16_t starttime)
    Set the enable status & time of the On Timer.
    Definition: ir_Daikin.cpp:384
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:1120
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Daikin.cpp:203
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Daikin.cpp:1146
    -
    uint8_t getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:1982
    -
    void setSwingVertical(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:3731
    -
    bool getFreshAir(void) const
    Get the Fresh Air mode status of the A/C.
    Definition: ir_Daikin.cpp:1061
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:3261
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Daikin.cpp:516
    -
    bool getPowerful(void) const
    Get the Powerful (Turbo) mode of the A/C.
    Definition: ir_Daikin.cpp:2821
    -
    const uint8_t kDaikin2SwingVUpperMiddle
    Definition: ir_Daikin.h:281
    -
    uint8_t OnHalfHour
    Definition: ir_Daikin.h:484
    -
    uint8_t Mode
    Definition: ir_Daikin.h:371
    -
    bool getComfort(void) const
    Get the Comfort mode of the A/C.
    Definition: ir_Daikin.cpp:378
    -
    uint8_t SwingH
    Definition: ir_Daikin.h:438
    -
    uint64_t Beep
    Definition: ir_Daikin.h:192
    -
    uint8_t Sum2
    Definition: ir_Daikin.h:443
    -
    static uint8_t calcFirstChecksum(const uint8_t state[])
    Definition: ir_Daikin.cpp:2564
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:1474
    -
    const uint8_t kDaikin64MinTemp
    Definition: ir_Daikin.h:641
    -
    uint64_t Fan
    Definition: ir_Daikin.h:235
    -
    const uint8_t kDaikin2SwingHRight
    Definition: ir_Daikin.h:296
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:1915
    -
    uint64_t Power2
    Definition: ir_Daikin.h:188
    -
    bool getQuiet(void) const
    Get the Quiet mode status of the A/C.
    Definition: ir_Daikin.cpp:1154
    -
    void setClock(const uint16_t mins_since_midnight)
    Set the clock on the A/C unit.
    Definition: ir_Daikin.cpp:2827
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:1893
    -
    const uint16_t kDaikin64Gap
    Definition: ir_Daikin.h:624
    -
    const uint16_t kDaikin128OneSpace
    Definition: ir_Daikin.h:519
    -
    Daikin152Protocol _
    Definition: ir_Daikin.h:1127
    -
    const uint16_t kDaikin152HdrMark
    Definition: ir_Daikin.h:584
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:2352
    -
    uint64_t Sum1
    Definition: ir_Daikin.h:72
    -
    const uint8_t kDaikin2SwingHSwing
    Definition: ir_Daikin.h:300
    -
    void setSwingVertical(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:2758
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Daikin.cpp:230
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:1848
    -
    void enableOffTimer(const uint16_t endtime)
    Set the enable status & time of the Off Timer.
    Definition: ir_Daikin.cpp:409
    -
    const uint16_t kDaikin160StateLength
    Definition: IRremoteESP8266.h:970
    -
    const uint16_t kDaikin216HdrMark
    Definition: ir_Daikin.h:344
    -
    const uint16_t kDaikin2HdrSpace
    Definition: ir_Daikin.h:271
    -
    const uint8_t kDaikin176ModeButton
    Definition: ir_Daikin.h:463
    -
    const uint8_t kDaikinSections
    Definition: ir_Daikin.h:146
    -
    const uint16_t kDaikin2StateLength
    Definition: IRremoteESP8266.h:965
    -
    uint8_t _saved_temp
    The previously user requested temp value.
    Definition: ir_Daikin.h:996
    -
    uint8_t pad1[5]
    Definition: ir_Daikin.h:313
    -
    const uint8_t kDaikinByteChecksum1
    Definition: ir_Daikin.h:151
    -
    void setEye(const bool on)
    Set the Eye (Sensor) mode of the A/C.
    Definition: ir_Daikin.cpp:1091
    -
    uint8_t pad2[2]
    Definition: ir_Daikin.h:568
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:3193
    -
    const uint8_t kDaikin64FanHigh
    Definition: ir_Daikin.h:638
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:1826
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:933
    -
    void send(const uint16_t repeat=kDaikin152DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:3152
    -
    uint8_t pad0[6]
    Definition: ir_Daikin.h:415
    -
    const uint8_t kDaikin64ChecksumSize
    Definition: ir_Daikin.h:644
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:2562
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:222
    -
    const uint8_t kDaikinFanMed
    Definition: ir_Daikin.h:139
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Daikin.cpp:730
    -
    const uint16_t kDaikin64HdrSpace
    Definition: ir_Daikin.h:620
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:2594
    -
    const uint8_t kDaikin2SwingVLowest
    Definition: ir_Daikin.h:284
    -
    void send(const uint16_t repeat=kDaikin216DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:1450
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kDaikinStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:192
    -
    Native representation of a Daikin128 A/C message.
    Definition: ir_Daikin.h:470
    -
    void setSwingVertical(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:1601
    -
    const uint8_t kDaikinSwingOff
    Definition: ir_Daikin.h:144
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:3608
    -
    uint64_t SwingH
    Definition: ir_Daikin.h:102
    -
    const uint16_t kMarkExcess
    Definition: IRrecv.h:24
    -
    const uint8_t kDaikin216SwingOff
    Definition: ir_Daikin.h:356
    -
    uint64_t EyeAuto
    Definition: ir_Daikin.h:206
    -
    const uint8_t kDaikinAuto
    Definition: ir_Daikin.h:131
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Daikin.cpp:3672
    -
    const uint16_t kDaikin216BitMark
    Definition: ir_Daikin.h:346
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Daikin.cpp:2438
    -
    const uint8_t kDaikinCool
    Definition: ir_Daikin.h:133
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Daikin.h:1013
    -
    uint64_t OffTime
    Definition: ir_Daikin.h:106
    -
    uint8_t Temp
    Definition: ir_Daikin.h:491
    -
    uint8_t ClockMins
    Definition: ir_Daikin.h:601
    -
    const uint16_t kDaikin160ZeroSpace
    Definition: ir_Daikin.h:397
    -
    const uint8_t kDaikin2SwingVOff
    Definition: ir_Daikin.h:287
    -
    const uint64_t kDaikinFirstHeader64
    Definition: ir_Daikin.h:172
    -
    uint8_t Econo
    Definition: ir_Daikin.h:503
    -
    const uint16_t kDaikin216Gap
    Definition: ir_Daikin.h:349
    -
    Daikin64Protocol _
    Definition: ir_Daikin.h:1192
    -
    uint8_t Mode
    Definition: ir_Daikin.h:317
    -
    void setBeep(const uint8_t beep)
    Set the Beep mode of the A/C.
    Definition: ir_Daikin.cpp:1013
    -
    bool getQuiet(void) const
    Get the Quiet mode status of the A/C.
    Definition: ir_Daikin.cpp:3715
    -
    const uint8_t kDaikinFanQuiet
    Definition: ir_Daikin.h:142
    -
    uint64_t CurrentDay
    Definition: ir_Daikin.h:78
    -
    bool getSensor(void) const
    Get the Sensor mode of the A/C.
    Definition: ir_Daikin.cpp:3364
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Daikin.cpp:784
    -
    const uint16_t kDaikinMarkExcess
    Definition: ir_Daikin.h:164
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Daikin.cpp:2677
    -
    uint8_t Temp
    Definition: ir_Daikin.h:380
    -
    const uint8_t kDaikinTolerance
    Definition: ir_Daikin.h:163
    -
    uint64_t OffTimer
    Definition: ir_Daikin.h:88
    -
    const uint8_t kDaikin2SwingVLow
    Definition: ir_Daikin.h:283
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:1659
    -
    uint8_t getLight(void) const
    Get the Light status of the A/C.
    Definition: ir_Daikin.cpp:1019
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Daikin.cpp:503
    -
    void setClean(const bool on)
    Set the Auto clean mode of the A/C.
    Definition: ir_Daikin.cpp:1043
    -
    const uint16_t kDaikin216HdrSpace
    Definition: ir_Daikin.h:345
    -
    const uint8_t kDaikinSection2Length
    Definition: ir_Daikin.h:148
    -
    uint64_t Sum2
    Definition: ir_Daikin.h:81
    -
    const uint16_t kDaikin176OneSpace
    Definition: ir_Daikin.h:451
    -
    bool getEcono(void) const
    Get the Economical mode of the A/C.
    Definition: ir_Daikin.cpp:1109
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:988
    -
    uint8_t raw[kDaikin152StateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:543
    -
    uint8_t Fan
    Definition: ir_Daikin.h:559
    -
    uint64_t Purify
    Definition: ir_Daikin.h:255
    -
    const uint16_t kDaikinHdrMark
    Definition: ir_Daikin.h:165
    -
    uint8_t SwingV
    Definition: ir_Daikin.h:558
    -
    const uint8_t kDaikinLightOff
    Definition: ir_Daikin.h:160
    -
    void setEcono(const bool on)
    Set the Economy mode of the A/C.
    Definition: ir_Daikin.cpp:1103
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Daikin.cpp:1989
    -
    uint64_t Eye
    Definition: ir_Daikin.h:252
    -
    uint16_t getOnTime(void) const
    Get the On Timer time to be sent to the A/C unit.
    Definition: ir_Daikin.cpp:3782
    -
    const uint8_t kDaikin2Tolerance
    Definition: ir_Daikin.h:278
    -
    const uint8_t kDaikin160SwingVLow
    Definition: ir_Daikin.h:404
    -
    bool getQuiet(void) const
    Get the Quiet mode status of the A/C.
    Definition: ir_Daikin.cpp:2805
    -
    uint8_t Power
    Definition: ir_Daikin.h:613
    -
    const uint8_t kDaikin176DryFanTemp
    Definition: ir_Daikin.h:464
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Daikin.cpp:263
    -
    uint8_t getBeep(void) const
    Get the Beep status of the A/C.
    Definition: ir_Daikin.cpp:1007
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Daikin.cpp:2745
    -
    uint64_t Powerful
    Definition: ir_Daikin.h:108
    -
    const uint16_t kDaikin2OneSpace
    Definition: ir_Daikin.h:273
    -
    const uint8_t kDaikin2SwingHWide
    Definition: ir_Daikin.h:292
    -
    DaikinESPProtocol _
    Definition: ir_Daikin.h:735
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:3523
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Daikin.cpp:3636
    -
    uint8_t pad2[2]
    Definition: ir_Daikin.h:377
    -
    const uint16_t kDaikin128HdrMark
    Definition: ir_Daikin.h:516
    -
    uint8_t raw[kDaikin216StateLength]
    The state of the IR remote.
    Definition: ir_Daikin.h:306
    -
    bool getSleep(void) const
    Get the Sleep mode of the A/C.
    Definition: ir_Daikin.cpp:3749
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    bool getQuiet(void) const
    Get the Quiet mode status of the A/C.
    Definition: ir_Daikin.cpp:311
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:2611
    -
    void send(const uint16_t repeat=kDaikin64DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:3528
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Daikin.cpp:2212
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:1572
    -
    uint8_t Sum3
    Definition: ir_Daikin.h:126
    -
    void disableSleepTimer(void)
    Disable the sleep timer.
    Definition: ir_Daikin.cpp:1128
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Daikin.cpp:1855
    -
    uint8_t Fan
    Definition: ir_Daikin.h:439
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Daikin.cpp:798
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Daikin.cpp:2708
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Daikin.cpp:156
    -
    const uint8_t kDaikin128MaxTemp
    Definition: ir_Daikin.h:537
    -
    uint64_t Quiet
    Definition: ir_Daikin.h:110
    -
    void send(const uint16_t repeat=kDaikin160DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Daikin.cpp:1862
    -
    const uint8_t kDaikinMaxTemp
    Definition: ir_Daikin.h:137
    -
    Class for handling detailed Daikin 176-bit A/C messages.
    Definition: ir_Daikin.h:946
    -
    const uint8_t kDaikin128FanHigh
    Definition: ir_Daikin.h:531
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Daikin.cpp:1522
    -
    const uint8_t kDaikin128FanAuto
    Definition: ir_Daikin.h:530
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Daikin.h:881
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Daikin.cpp:1187
    -
    uint64_t CurrentTime
    Definition: ir_Daikin.h:186
    -
    bool getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Daikin.cpp:285
    -
    const uint16_t kDaikin176Section1Length
    Definition: ir_Daikin.h:455
    -
    uint64_t raw
    The state of the IR remote.
    Definition: ir_Daikin.h:596
    -
    const uint16_t kDaikin2Freq
    Definition: ir_Daikin.h:266
    -
    const uint16_t kDaikin128BitMark
    Definition: ir_Daikin.h:518
    -
    const uint8_t kDaikinMinTemp
    Definition: ir_Daikin.h:136
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:1557
    -
    void disableOnTimer(void)
    Clear and disable the On timer.
    Definition: ir_Daikin.cpp:390
    -
    IRDaikin216(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class Constructor.
    Definition: ir_Daikin.cpp:1440
    -
    uint64_t Temp
    Definition: ir_Daikin.h:94
    -
    bool getEyeAuto(void) const
    Get the Automaitc Eye (Sensor) mode status of the A/C.
    Definition: ir_Daikin.cpp:1085
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Daikin.cpp:826
    -
    const uint8_t kDaikinFanMin
    Definition: ir_Daikin.h:138
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Daikin.cpp:3147
    -
    const uint16_t kDaikin128LeaderMark
    Definition: ir_Daikin.h:514
    -
    void setSleep(const bool on)
    Set the Sleep mode of the A/C.
    Definition: ir_Daikin.cpp:2770
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Daikin.cpp:530
    -
    const uint8_t kDaikin2SwingVCirculate
    Definition: ir_Daikin.h:286
    -
    uint8_t ClockHours
    Definition: ir_Daikin.h:481
    -
    uint8_t pad2[2]
    Definition: ir_Daikin.h:432
    -
    const uint8_t kDaikin2SwingHAuto
    Definition: ir_Daikin.h:298
    -
    const uint8_t kDaikinLightDim
    Definition: ir_Daikin.h:159
    -
    const uint8_t kDaikin176Fan
    Definition: ir_Daikin.h:458
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    -
    Native representation of a Daikin152 A/C message.
    Definition: ir_Daikin.h:542
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8cpp.html deleted file mode 100644 index e71f63ef8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8cpp.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Delonghi.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Delonghi.cpp File Reference
    -
    -
    - -

    Delonghi based protocol. -More...

    - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kDelonghiAcHdrMark = 8984
     
    const uint16_t kDelonghiAcBitMark = 572
     
    const uint16_t kDelonghiAcHdrSpace = 4200
     
    const uint16_t kDelonghiAcOneSpace = 1558
     
    const uint16_t kDelonghiAcZeroSpace = 510
     
    const uint32_t kDelonghiAcGap = kDefaultMessageGap
     
    const uint16_t kDelonghiAcFreq = 38000
     
    const uint16_t kDelonghiAcOverhead = 3
     
    -

    Detailed Description

    -

    Delonghi based protocol.

    -

    Variable Documentation

    - -

    ◆ kDelonghiAcBitMark

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcBitMark = 572
    -
    - -
    -
    - -

    ◆ kDelonghiAcFreq

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcFreq = 38000
    -
    - -
    -
    - -

    ◆ kDelonghiAcGap

    - -
    -
    - - - - -
    const uint32_t kDelonghiAcGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kDelonghiAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcHdrMark = 8984
    -
    - -
    -
    - -

    ◆ kDelonghiAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcHdrSpace = 4200
    -
    - -
    -
    - -

    ◆ kDelonghiAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcOneSpace = 1558
    -
    - -
    -
    - -

    ◆ kDelonghiAcOverhead

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcOverhead = 3
    -
    - -
    -
    - -

    ◆ kDelonghiAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcZeroSpace = 510
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h.html deleted file mode 100644 index a370423be..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Delonghi.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Delonghi.h File Reference
    -
    -
    - -

    Delonghi A/C. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  DelonghiProtocol
     Native representation of a Delonghi A/C message. More...
     
    class  IRDelonghiAc
     Class for handling detailed Delonghi A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kDelonghiAcTempMinC = 18
     
    const uint8_t kDelonghiAcTempMaxC = 32
     
    const uint8_t kDelonghiAcTempMinF = 64
     
    const uint8_t kDelonghiAcTempMaxF = 90
     
    const uint8_t kDelonghiAcTempAutoDryMode = 0
     
    const uint8_t kDelonghiAcTempFanMode = 0b00110
     
    const uint8_t kDelonghiAcFanAuto = 0b00
     
    const uint8_t kDelonghiAcFanHigh = 0b01
     
    const uint8_t kDelonghiAcFanMedium = 0b10
     
    const uint8_t kDelonghiAcFanLow = 0b11
     
    const uint8_t kDelonghiAcCool = 0b000
     
    const uint8_t kDelonghiAcDry = 0b001
     
    const uint8_t kDelonghiAcFan = 0b010
     
    const uint8_t kDelonghiAcAuto = 0b100
     
    const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59
     
    const uint8_t kDelonghiAcChecksumOffset = 56
     
    -

    Detailed Description

    -

    Delonghi A/C.

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

    Variable Documentation

    - -

    ◆ kDelonghiAcAuto

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

    ◆ kDelonghiAcChecksumOffset

    - -
    -
    - - - - -
    const uint8_t kDelonghiAcChecksumOffset = 56
    -
    - -
    -
    - -

    ◆ kDelonghiAcCool

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

    ◆ kDelonghiAcDry

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

    ◆ kDelonghiAcFan

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

    ◆ kDelonghiAcFanAuto

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

    ◆ kDelonghiAcFanHigh

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

    ◆ kDelonghiAcFanLow

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

    ◆ kDelonghiAcFanMedium

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

    ◆ kDelonghiAcTempAutoDryMode

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

    ◆ kDelonghiAcTempFanMode

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

    ◆ kDelonghiAcTempMaxC

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

    ◆ kDelonghiAcTempMaxF

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

    ◆ kDelonghiAcTempMinC

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

    ◆ kDelonghiAcTempMinF

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

    ◆ kDelonghiAcTimerMax

    - -
    -
    - - - - -
    const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h_source.html deleted file mode 100644 index 6c4bde476..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Delonghi_8h_source.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Delonghi.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Delonghi.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 David Conran
    -
    2 
    -
    7 
    -
    8 // Supports:
    -
    9 // Brand: Delonghi, Model: PAC A95
    -
    10 
    -
    11 #ifndef IR_DELONGHI_H_
    -
    12 #define IR_DELONGHI_H_
    -
    13 
    -
    14 #define __STDC_LIMIT_MACROS
    -
    15 #include <stdint.h>
    -
    16 #ifndef UNIT_TEST
    -
    17 #include <Arduino.h>
    -
    18 #endif
    -
    19 #include "IRremoteESP8266.h"
    -
    20 #include "IRsend.h"
    -
    21 #ifdef UNIT_TEST
    -
    22 #include "IRsend_test.h"
    -
    23 #endif
    -
    24 
    - -
    27  uint64_t raw;
    -
    28  struct {
    -
    29  uint8_t :8; // Header
    -
    30  uint8_t Temp :5;
    -
    31  uint8_t Fan :2;
    -
    32  uint8_t Fahrenheit:1;
    -
    33  uint8_t Power :1;
    -
    34  uint8_t Mode :3;
    -
    35  uint8_t Boost :1;
    -
    36  uint8_t Sleep :1;
    -
    37  uint8_t :2;
    -
    38  uint8_t OnTimer :1;
    -
    39  uint8_t OnHours :5;
    -
    40  uint8_t :2;
    -
    41  uint8_t OnMins :6;
    -
    42  uint8_t :2;
    -
    43  uint8_t OffTimer :1;
    -
    44  uint8_t OffHours :5;
    -
    45  uint8_t :2;
    -
    46  uint8_t OffMins :6;
    -
    47  uint8_t :2;
    -
    48  uint8_t Sum :8;
    -
    49  };
    -
    50 };
    -
    51 
    -
    52 // Constants
    -
    53 const uint8_t kDelonghiAcTempMinC = 18; // Deg C
    -
    54 const uint8_t kDelonghiAcTempMaxC = 32; // Deg C
    -
    55 const uint8_t kDelonghiAcTempMinF = 64; // Deg F
    -
    56 const uint8_t kDelonghiAcTempMaxF = 90; // Deg F
    -
    57 const uint8_t kDelonghiAcTempAutoDryMode = 0;
    -
    58 const uint8_t kDelonghiAcTempFanMode = 0b00110;
    -
    59 const uint8_t kDelonghiAcFanAuto = 0b00;
    -
    60 const uint8_t kDelonghiAcFanHigh = 0b01;
    -
    61 const uint8_t kDelonghiAcFanMedium = 0b10;
    -
    62 const uint8_t kDelonghiAcFanLow = 0b11;
    -
    63 const uint8_t kDelonghiAcCool = 0b000;
    -
    64 const uint8_t kDelonghiAcDry = 0b001;
    -
    65 const uint8_t kDelonghiAcFan = 0b010;
    -
    66 const uint8_t kDelonghiAcAuto = 0b100;
    -
    67 const uint16_t kDelonghiAcTimerMax = 23 * 60 + 59;
    -
    68 const uint8_t kDelonghiAcChecksumOffset = 56;
    -
    69 
    -
    70 // Classes
    -
    71 
    -
    73 class IRDelonghiAc {
    -
    74  public:
    -
    75  explicit IRDelonghiAc(const uint16_t pin, const bool inverted = false,
    -
    76  const bool use_modulation = true);
    -
    77  void stateReset(void);
    -
    78 #if SEND_DELONGHI_AC
    -
    79  void send(const uint16_t repeat = kDelonghiAcDefaultRepeat);
    -
    84  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    85 #endif // SEND_DELONGHI_AC
    -
    86  void begin(void);
    -
    87  static uint8_t calcChecksum(const uint64_t state);
    -
    88  static bool validChecksum(const uint64_t state);
    -
    89  void setPower(const bool on);
    -
    90  bool getPower(void) const;
    -
    91  void on(void);
    -
    92  void off(void);
    -
    93  void setTempUnit(const bool celsius);
    -
    94  bool getTempUnit(void) const;
    -
    95  void setTemp(const uint8_t temp, const bool fahrenheit = false,
    -
    96  const bool force = false);
    -
    97  uint8_t getTemp(void) const;
    -
    98  void setFan(const uint8_t speed);
    -
    99  uint8_t getFan(void) const;
    -
    100  void setMode(const uint8_t mode);
    -
    101  uint8_t getMode(void) const;
    -
    102  void setBoost(const bool on); // Aka Turbo
    -
    103  bool getBoost(void) const; // Aka Turbo
    -
    104  void setSleep(const bool on);
    -
    105  bool getSleep(void) const;
    -
    106  void setOnTimerEnabled(const bool on);
    -
    107  bool getOnTimerEnabled(void) const;
    -
    108  void setOnTimer(const uint16_t nr_of_mins);
    -
    109  uint16_t getOnTimer(void) const;
    -
    110  void setOffTimerEnabled(const bool on);
    -
    111  bool getOffTimerEnabled(void) const;
    -
    112  void setOffTimer(const uint16_t nr_of_mins);
    -
    113  uint16_t getOffTimer(void) const;
    -
    114  uint64_t getRaw(void);
    -
    115  void setRaw(const uint64_t state);
    -
    116  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    117  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    118  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    119  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    120  stdAc::state_t toCommon(void) const;
    -
    121  String toString(void) const;
    -
    122 #ifndef UNIT_TEST
    -
    123 
    -
    124  private:
    - -
    126 #else
    -
    127  IRsendTest _irsend;
    -
    129 #endif
    - -
    132  uint8_t _saved_temp;
    - -
    134  void checksum(void);
    -
    135 };
    -
    136 #endif // IR_DELONGHI_H_
    -
    -
    uint8_t OnTimer
    Definition: ir_Delonghi.h:38
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Delonghi.cpp:270
    -
    uint8_t OnMins
    Definition: ir_Delonghi.h:41
    -
    const uint8_t kDelonghiAcCool
    Definition: ir_Delonghi.h:63
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Delonghi.cpp:217
    -
    void send(const uint16_t repeat=kDelonghiAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Delonghi.cpp:103
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Delonghi.cpp:330
    -
    void setRaw(const uint64_t state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Delonghi.cpp:150
    -
    uint8_t Mode
    Definition: ir_Delonghi.h:34
    -
    const uint8_t kDelonghiAcTempFanMode
    Definition: ir_Delonghi.h:58
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Delonghi.cpp:449
    -
    uint8_t Temp
    Definition: ir_Delonghi.h:30
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Delonghi.cpp:153
    -
    Class for handling detailed Delonghi A/C messages.
    Definition: ir_Delonghi.h:73
    -
    IRDelonghiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Delonghi.cpp:93
    -
    const uint8_t kDelonghiAcTempMinC
    Definition: ir_Delonghi.h:53
    -
    const uint8_t kDelonghiAcFanHigh
    Definition: ir_Delonghi.h:60
    -
    void setOnTimer(const uint16_t nr_of_mins)
    Set the On timer to activate in nr of minutes.
    Definition: ir_Delonghi.cpp:378
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Delonghi.cpp:160
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t _saved_temp
    The previously user requested temp value.
    Definition: ir_Delonghi.h:132
    -
    void setOffTimerEnabled(const bool on)
    Set the enable status of the Off Timer.
    Definition: ir_Delonghi.cpp:394
    -
    const uint8_t kDelonghiAcFanMedium
    Definition: ir_Delonghi.h:61
    -
    const uint8_t kDelonghiAcTempAutoDryMode
    Definition: ir_Delonghi.h:57
    -
    bool getOffTimerEnabled(void) const
    Get the enable status of the Off Timer.
    Definition: ir_Delonghi.cpp:400
    -
    const uint8_t kDelonghiAcFanLow
    Definition: ir_Delonghi.h:62
    -
    uint8_t OffTimer
    Definition: ir_Delonghi.h:43
    -
    static bool validChecksum(const uint64_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_Delonghi.cpp:123
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Delonghi.cpp:314
    - -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Delonghi.h:84
    -
    DelonghiProtocol _
    Definition: ir_Delonghi.h:131
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t OnHours
    Definition: ir_Delonghi.h:39
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Delonghi.cpp:98
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Delonghi.cpp:166
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Delonghi.cpp:252
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    bool getTempUnit(void) const
    Get the temperature scale unit of measure currently in use.
    Definition: ir_Delonghi.cpp:178
    -
    uint8_t Power
    Definition: ir_Delonghi.h:33
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Delonghi.cpp:281
    -
    uint16_t getOnTimer(void) const
    Get the On timer time.
    Definition: ir_Delonghi.cpp:388
    -
    uint16_t getOffTimer(void) const
    Get the Off timer time.
    Definition: ir_Delonghi.cpp:417
    -
    const uint8_t kDelonghiAcFanAuto
    Definition: ir_Delonghi.h:59
    -
    const uint8_t kDelonghiAcChecksumOffset
    Definition: ir_Delonghi.h:68
    -
    void setOnTimerEnabled(const bool on)
    Set the enable status of the On Timer.
    Definition: ir_Delonghi.cpp:365
    -
    const uint8_t kDelonghiAcTempMaxF
    Definition: ir_Delonghi.h:56
    - -
    const uint8_t kDelonghiAcAuto
    Definition: ir_Delonghi.h:66
    -
    bool getSleep(void) const
    Get the Sleep mode status of the A/C.
    Definition: ir_Delonghi.cpp:359
    -
    uint8_t Fahrenheit
    Definition: ir_Delonghi.h:32
    -
    uint8_t Boost
    Definition: ir_Delonghi.h:35
    -
    bool getBoost(void) const
    Get the Boost (Turbo) mode of the A/C.
    Definition: ir_Delonghi.cpp:347
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Delonghi.cpp:130
    -
    void setSleep(const bool on)
    Set the Sleep mode of the A/C.
    Definition: ir_Delonghi.cpp:353
    -
    const uint16_t kDelonghiAcDefaultRepeat
    Definition: IRremoteESP8266.h:986
    -
    uint8_t _saved_temp_units
    The previously user requested temp units.
    Definition: ir_Delonghi.h:133
    -
    const uint16_t kDelonghiAcTimerMax
    Definition: ir_Delonghi.h:67
    -
    uint8_t Fan
    Definition: ir_Delonghi.h:31
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Delonghi.cpp:287
    -
    bool getOnTimerEnabled(void) const
    Get the enable status of the On Timer.
    Definition: ir_Delonghi.cpp:371
    -
    void setTemp(const uint8_t temp, const bool fahrenheit=false, const bool force=false)
    Set the temperature.
    Definition: ir_Delonghi.cpp:186
    -
    void setOffTimer(const uint16_t nr_of_mins)
    Set the Off timer to activate in nr of minutes.
    Definition: ir_Delonghi.cpp:407
    -
    uint64_t getRaw(void)
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Delonghi.cpp:143
    -
    static uint8_t calcChecksum(const uint64_t state)
    Calculate the checksum for a given state.
    Definition: ir_Delonghi.cpp:111
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Delonghi.cpp:210
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Delonghi.h:125
    -
    void setTempUnit(const bool celsius)
    Change the temperature scale units.
    Definition: ir_Delonghi.cpp:172
    -
    uint8_t getFan(void) const
    Get the current native fan speed setting.
    Definition: ir_Delonghi.cpp:245
    -
    uint8_t OffHours
    Definition: ir_Delonghi.h:44
    -
    const uint8_t kDelonghiAcDry
    Definition: ir_Delonghi.h:64
    -
    uint8_t OffMins
    Definition: ir_Delonghi.h:46
    -
    const uint8_t kDelonghiAcFan
    Definition: ir_Delonghi.h:65
    -
    uint8_t Sum
    Definition: ir_Delonghi.h:48
    -
    uint8_t Sleep
    Definition: ir_Delonghi.h:36
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Delonghi.cpp:135
    -
    uint64_t raw
    The state of the IR remote.
    Definition: ir_Delonghi.h:27
    -
    Native representation of a Delonghi A/C message.
    Definition: ir_Delonghi.h:26
    -
    void setBoost(const bool on)
    Set the Boost (Turbo) mode of the A/C.
    Definition: ir_Delonghi.cpp:341
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Delonghi.cpp:423
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kDelonghiAcTempMinF
    Definition: ir_Delonghi.h:55
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Delonghi.cpp:156
    -
    const uint8_t kDelonghiAcTempMaxC
    Definition: ir_Delonghi.h:54
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Denon_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Denon_8cpp.html deleted file mode 100644 index ae862c311..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Denon_8cpp.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Denon.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Denon.cpp File Reference
    -
    -
    - -

    Denon support Original Denon support added by https://github.com/csBlueChip Ported over by Massimiliano Pinto. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kDenonTick = 263
     
    const uint16_t kDenonHdrMarkTicks = 1
     
    const uint16_t kDenonHdrMark = kDenonHdrMarkTicks * kDenonTick
     
    const uint16_t kDenonHdrSpaceTicks = 3
     
    const uint16_t kDenonHdrSpace = kDenonHdrSpaceTicks * kDenonTick
     
    const uint16_t kDenonBitMarkTicks = 1
     
    const uint16_t kDenonBitMark = kDenonBitMarkTicks * kDenonTick
     
    const uint16_t kDenonOneSpaceTicks = 7
     
    const uint16_t kDenonOneSpace = kDenonOneSpaceTicks * kDenonTick
     
    const uint16_t kDenonZeroSpaceTicks = 3
     
    const uint16_t kDenonZeroSpace = kDenonZeroSpaceTicks * kDenonTick
     
    const uint16_t kDenonMinCommandLengthTicks = 510
     
    const uint16_t kDenonMinGapTicks
     
    const uint32_t kDenonMinGap = kDenonMinGapTicks * kDenonTick
     
    const uint64_t kDenonManufacturer = 0x2A4CULL
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kDenonBitMark

    - -
    -
    - - - - -
    const uint16_t kDenonBitMark = kDenonBitMarkTicks * kDenonTick
    -
    - -
    -
    - -

    ◆ kDenonBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kDenonBitMarkTicks = 1
    -
    - -
    -
    - -

    ◆ kDenonHdrMark

    - -
    -
    - - - - -
    const uint16_t kDenonHdrMark = kDenonHdrMarkTicks * kDenonTick
    -
    - -
    -
    - -

    ◆ kDenonHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kDenonHdrMarkTicks = 1
    -
    - -
    -
    - -

    ◆ kDenonHdrSpace

    - -
    -
    - - - - -
    const uint16_t kDenonHdrSpace = kDenonHdrSpaceTicks * kDenonTick
    -
    - -
    -
    - -

    ◆ kDenonHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDenonHdrSpaceTicks = 3
    -
    - -
    -
    - -

    ◆ kDenonManufacturer

    - -
    -
    - - - - -
    const uint64_t kDenonManufacturer = 0x2A4CULL
    -
    - -
    -
    - -

    ◆ kDenonMinCommandLengthTicks

    - -
    -
    - - - - -
    const uint16_t kDenonMinCommandLengthTicks = 510
    -
    - -
    -
    - -

    ◆ kDenonMinGap

    - -
    -
    - - - - -
    const uint32_t kDenonMinGap = kDenonMinGapTicks * kDenonTick
    -
    - -
    -
    - -

    ◆ kDenonMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kDenonMinGapTicks
    -
    -
    - -

    ◆ kDenonOneSpace

    - -
    -
    - - - - -
    const uint16_t kDenonOneSpace = kDenonOneSpaceTicks * kDenonTick
    -
    - -
    -
    - -

    ◆ kDenonOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDenonOneSpaceTicks = 7
    -
    - -
    -
    - -

    ◆ kDenonTick

    - -
    -
    - - - - -
    const uint16_t kDenonTick = 263
    -
    - -
    -
    - -

    ◆ kDenonZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDenonZeroSpace = kDenonZeroSpaceTicks * kDenonTick
    -
    - -
    -
    - -

    ◆ kDenonZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDenonZeroSpaceTicks = 3
    -
    - -
    -
    -
    -
    const uint16_t kDenonMinCommandLengthTicks
    Definition: ir_Denon.cpp:31
    -
    const uint16_t kDenonHdrSpaceTicks
    Definition: ir_Denon.cpp:23
    -
    const uint16_t kDenonBitMarkTicks
    Definition: ir_Denon.cpp:25
    -
    const uint16_t kDenonHdrMarkTicks
    Definition: ir_Denon.cpp:21
    -
    const uint16_t kDenonBits
    Definition: IRremoteESP8266.h:989
    -
    const uint16_t kDenonOneSpaceTicks
    Definition: ir_Denon.cpp:27
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Dish_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Dish_8cpp.html deleted file mode 100644 index abc86c6b3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Dish_8cpp.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Dish.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Dish.cpp File Reference
    -
    -
    - -

    DISH Network protocol support DISH support originally by Todd Treece. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kDishTick = 100
     
    const uint16_t kDishHdrMarkTicks = 4
     
    const uint16_t kDishHdrMark = kDishHdrMarkTicks * kDishTick
     
    const uint16_t kDishHdrSpaceTicks = 61
     
    const uint16_t kDishHdrSpace = kDishHdrSpaceTicks * kDishTick
     
    const uint16_t kDishBitMarkTicks = 4
     
    const uint16_t kDishBitMark = kDishBitMarkTicks * kDishTick
     
    const uint16_t kDishOneSpaceTicks = 17
     
    const uint16_t kDishOneSpace = kDishOneSpaceTicks * kDishTick
     
    const uint16_t kDishZeroSpaceTicks = 28
     
    const uint16_t kDishZeroSpace = kDishZeroSpaceTicks * kDishTick
     
    const uint16_t kDishRptSpaceTicks = kDishHdrSpaceTicks
     
    const uint16_t kDishRptSpace = kDishRptSpaceTicks * kDishTick
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kDishBitMark

    - -
    -
    - - - - -
    const uint16_t kDishBitMark = kDishBitMarkTicks * kDishTick
    -
    - -
    -
    - -

    ◆ kDishBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kDishBitMarkTicks = 4
    -
    - -
    -
    - -

    ◆ kDishHdrMark

    - -
    -
    - - - - -
    const uint16_t kDishHdrMark = kDishHdrMarkTicks * kDishTick
    -
    - -
    -
    - -

    ◆ kDishHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kDishHdrMarkTicks = 4
    -
    - -
    -
    - -

    ◆ kDishHdrSpace

    - -
    -
    - - - - -
    const uint16_t kDishHdrSpace = kDishHdrSpaceTicks * kDishTick
    -
    - -
    -
    - -

    ◆ kDishHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDishHdrSpaceTicks = 61
    -
    - -
    -
    - -

    ◆ kDishOneSpace

    - -
    -
    - - - - -
    const uint16_t kDishOneSpace = kDishOneSpaceTicks * kDishTick
    -
    - -
    -
    - -

    ◆ kDishOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDishOneSpaceTicks = 17
    -
    - -
    -
    - -

    ◆ kDishRptSpace

    - -
    -
    - - - - -
    const uint16_t kDishRptSpace = kDishRptSpaceTicks * kDishTick
    -
    - -
    -
    - -

    ◆ kDishRptSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDishRptSpaceTicks = kDishHdrSpaceTicks
    -
    - -
    -
    - -

    ◆ kDishTick

    - -
    -
    - - - - -
    const uint16_t kDishTick = 100
    -
    - -
    -
    - -

    ◆ kDishZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDishZeroSpace = kDishZeroSpaceTicks * kDishTick
    -
    - -
    -
    - -

    ◆ kDishZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kDishZeroSpaceTicks = 28
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Doshisha_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Doshisha_8cpp.html deleted file mode 100644 index 7e19c1cdc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Doshisha_8cpp.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Doshisha.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Doshisha.cpp File Reference
    -
    -
    - -

    Doshisha protocol support. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kDoshishaHdrMark = 3412
     
    const uint16_t kDoshishaHdrSpace = 1722
     
    const uint16_t kDoshishaBitMark = 420
     
    const uint16_t kDoshishaOneSpace = 1310
     
    const uint16_t kDoshishaZeroSpace = 452
     
    const uint64_t kRcz01SignatureMask = 0xffffffff00
     
    const uint64_t kRcz01Signature = 0x800B304800
     
    const uint8_t kRcz01CommandMask = 0xFE
     
    const uint8_t kRcz01ChannelMask = 0x01
     
    const uint8_t kRcz01CommandSwitchChannel = 0xD2
     
    const uint8_t kRcz01CommandTimmer60 = 0x52
     
    const uint8_t kRcz01CommandTimmer30 = 0x92
     
    const uint8_t kRcz01CommandOff = 0xA0
     
    const uint8_t kRcz01CommandLevelDown = 0x2C
     
    const uint8_t kRcz01CommandLevelUp = 0xCC
     
    const uint8_t kRcz01CommandLevel1 = 0xA4
     
    const uint8_t kRcz01CommandLevel2 = 0x24
     
    const uint8_t kRcz01CommandLevel3 = 0xC4
     
    const uint8_t kRcz01CommandLevel4 = 0xD0
     
    const uint8_t kRcz01CommandOn = 0xC0
     
    const uint8_t kRcz01CommandNightLight = 0xC8
     
    -

    Detailed Description

    -

    Doshisha protocol support.

    -
    See also
    https://www.doshisha-led.com/
    -

    Variable Documentation

    - -

    ◆ kDoshishaBitMark

    - -
    -
    - - - - -
    const uint16_t kDoshishaBitMark = 420
    -
    - -
    -
    - -

    ◆ kDoshishaHdrMark

    - -
    -
    - - - - -
    const uint16_t kDoshishaHdrMark = 3412
    -
    - -
    -
    - -

    ◆ kDoshishaHdrSpace

    - -
    -
    - - - - -
    const uint16_t kDoshishaHdrSpace = 1722
    -
    - -
    -
    - -

    ◆ kDoshishaOneSpace

    - -
    -
    - - - - -
    const uint16_t kDoshishaOneSpace = 1310
    -
    - -
    -
    - -

    ◆ kDoshishaZeroSpace

    - -
    -
    - - - - -
    const uint16_t kDoshishaZeroSpace = 452
    -
    - -
    -
    - -

    ◆ kRcz01ChannelMask

    - -
    -
    - - - - -
    const uint8_t kRcz01ChannelMask = 0x01
    -
    - -
    -
    - -

    ◆ kRcz01CommandLevel1

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandLevel1 = 0xA4
    -
    - -
    -
    - -

    ◆ kRcz01CommandLevel2

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandLevel2 = 0x24
    -
    - -
    -
    - -

    ◆ kRcz01CommandLevel3

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandLevel3 = 0xC4
    -
    - -
    -
    - -

    ◆ kRcz01CommandLevel4

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandLevel4 = 0xD0
    -
    - -
    -
    - -

    ◆ kRcz01CommandLevelDown

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandLevelDown = 0x2C
    -
    - -
    -
    - -

    ◆ kRcz01CommandLevelUp

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandLevelUp = 0xCC
    -
    - -
    -
    - -

    ◆ kRcz01CommandMask

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandMask = 0xFE
    -
    - -
    -
    - -

    ◆ kRcz01CommandNightLight

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandNightLight = 0xC8
    -
    - -
    -
    - -

    ◆ kRcz01CommandOff

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandOff = 0xA0
    -
    - -
    -
    - -

    ◆ kRcz01CommandOn

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandOn = 0xC0
    -
    - -
    -
    - -

    ◆ kRcz01CommandSwitchChannel

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandSwitchChannel = 0xD2
    -
    - -
    -
    - -

    ◆ kRcz01CommandTimmer30

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandTimmer30 = 0x92
    -
    - -
    -
    - -

    ◆ kRcz01CommandTimmer60

    - -
    -
    - - - - -
    const uint8_t kRcz01CommandTimmer60 = 0x52
    -
    - -
    -
    - -

    ◆ kRcz01Signature

    - -
    -
    - - - - -
    const uint64_t kRcz01Signature = 0x800B304800
    -
    - -
    -
    - -

    ◆ kRcz01SignatureMask

    - -
    -
    - - - - -
    const uint64_t kRcz01SignatureMask = 0xffffffff00
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8cpp.html deleted file mode 100644 index dab4a9897..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8cpp.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Ecoclim.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Ecoclim.cpp File Reference
    -
    -
    - -

    EcoClim A/C protocol. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kEcoclimSections = 3
     
    const uint8_t kEcoclimExtraTolerance = 5
     Percentage (extra) More...
     
    const uint16_t kEcoclimHdrMark = 5730
     uSeconds More...
     
    const uint16_t kEcoclimHdrSpace = 1935
     uSeconds More...
     
    const uint16_t kEcoclimBitMark = 440
     uSeconds More...
     
    const uint16_t kEcoclimOneSpace = 1739
     uSeconds More...
     
    const uint16_t kEcoclimZeroSpace = 637
     uSeconds More...
     
    const uint16_t kEcoclimFooterMark = 7820
     uSeconds More...
     
    const uint32_t kEcoclimGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kEcoclimBitMark

    - -
    -
    - - - - -
    const uint16_t kEcoclimBitMark = 440
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kEcoclimExtraTolerance

    - -
    -
    - - - - -
    const uint8_t kEcoclimExtraTolerance = 5
    -
    - -

    Percentage (extra)

    - -
    -
    - -

    ◆ kEcoclimFooterMark

    - -
    -
    - - - - -
    const uint16_t kEcoclimFooterMark = 7820
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kEcoclimGap

    - -
    -
    - - - - -
    const uint32_t kEcoclimGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kEcoclimHdrMark

    - -
    -
    - - - - -
    const uint16_t kEcoclimHdrMark = 5730
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kEcoclimHdrSpace

    - -
    -
    - - - - -
    const uint16_t kEcoclimHdrSpace = 1935
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kEcoclimOneSpace

    - -
    -
    - - - - -
    const uint16_t kEcoclimOneSpace = 1739
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kEcoclimSections

    - -
    -
    - - - - -
    const uint8_t kEcoclimSections = 3
    -
    - -
    -
    - -

    ◆ kEcoclimZeroSpace

    - -
    -
    - - - - -
    const uint16_t kEcoclimZeroSpace = 637
    -
    - -

    uSeconds

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h.html deleted file mode 100644 index 1157ea869..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Ecoclim.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Ecoclim.h File Reference
    -
    -
    - -

    EcoClim A/C protocol. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  EcoclimProtocol
     Native representation of a Ecoclim A/C message. More...
     
    class  IREcoclimAc
     Class for handling detailed EcoClim A/C 56 bit messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kEcoclimAuto = 0b000
     0. a.k.a Slave More...
     
    const uint8_t kEcoclimCool = 0b001
     1 More...
     
    const uint8_t kEcoclimDry = 0b010
     2 More...
     
    const uint8_t kEcoclimRecycle = 0b011
     3 More...
     
    const uint8_t kEcoclimFan = 0b100
     4 More...
     
    const uint8_t kEcoclimHeat = 0b101
     5 More...
     
    const uint8_t kEcoclimSleep = 0b111
     7 More...
     
    const uint8_t kEcoclimFanMin = 0b00
     0 More...
     
    const uint8_t kEcoclimFanMed = 0b01
     1 More...
     
    const uint8_t kEcoclimFanMax = 0b10
     2 More...
     
    const uint8_t kEcoclimFanAuto = 0b11
     3 More...
     
    const uint8_t kEcoclimDipMaster = 0b0000
     
    const uint8_t kEcoclimDipSlave = 0b0111
     
    const uint8_t kEcoclimTempMin = 5
     
    const uint8_t kEcoclimTempMax = kEcoclimTempMin + 31
     
    const uint16_t kEcoclimTimerDisable = 0x1F * 60 + 7 * 10
     
    const uint64_t kEcoclimDefaultState = 0x11063000FFFF02
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kEcoclimAuto

    - -
    -
    - - - - -
    const uint8_t kEcoclimAuto = 0b000
    -
    - -

    0. a.k.a Slave

    - -
    -
    - -

    ◆ kEcoclimCool

    - -
    -
    - - - - -
    const uint8_t kEcoclimCool = 0b001
    -
    - -

    1

    - -
    -
    - -

    ◆ kEcoclimDefaultState

    - -
    -
    - - - - -
    const uint64_t kEcoclimDefaultState = 0x11063000FFFF02
    -
    - -
    -
    - -

    ◆ kEcoclimDipMaster

    - -
    -
    - - - - -
    const uint8_t kEcoclimDipMaster = 0b0000
    -
    - -
    -
    - -

    ◆ kEcoclimDipSlave

    - -
    -
    - - - - -
    const uint8_t kEcoclimDipSlave = 0b0111
    -
    - -
    -
    - -

    ◆ kEcoclimDry

    - -
    -
    - - - - -
    const uint8_t kEcoclimDry = 0b010
    -
    - -

    2

    - -
    -
    - -

    ◆ kEcoclimFan

    - -
    -
    - - - - -
    const uint8_t kEcoclimFan = 0b100
    -
    - -

    4

    - -
    -
    - -

    ◆ kEcoclimFanAuto

    - -
    -
    - - - - -
    const uint8_t kEcoclimFanAuto = 0b11
    -
    - -

    3

    - -
    -
    - -

    ◆ kEcoclimFanMax

    - -
    -
    - - - - -
    const uint8_t kEcoclimFanMax = 0b10
    -
    - -

    2

    - -
    -
    - -

    ◆ kEcoclimFanMed

    - -
    -
    - - - - -
    const uint8_t kEcoclimFanMed = 0b01
    -
    - -

    1

    - -
    -
    - -

    ◆ kEcoclimFanMin

    - -
    -
    - - - - -
    const uint8_t kEcoclimFanMin = 0b00
    -
    - -

    0

    - -
    -
    - -

    ◆ kEcoclimHeat

    - -
    -
    - - - - -
    const uint8_t kEcoclimHeat = 0b101
    -
    - -

    5

    - -
    -
    - -

    ◆ kEcoclimRecycle

    - -
    -
    - - - - -
    const uint8_t kEcoclimRecycle = 0b011
    -
    - -

    3

    - -
    -
    - -

    ◆ kEcoclimSleep

    - -
    -
    - - - - -
    const uint8_t kEcoclimSleep = 0b111
    -
    - -

    7

    - -
    -
    - -

    ◆ kEcoclimTempMax

    - -
    -
    - - - - -
    const uint8_t kEcoclimTempMax = kEcoclimTempMin + 31
    -
    - -
    -
    - -

    ◆ kEcoclimTempMin

    - -
    -
    - - - - -
    const uint8_t kEcoclimTempMin = 5
    -
    - -
    -
    - -

    ◆ kEcoclimTimerDisable

    - -
    -
    - - - - -
    const uint16_t kEcoclimTimerDisable = 0x1F * 60 + 7 * 10
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h_source.html deleted file mode 100644 index 41e79fa23..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Ecoclim_8h_source.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Ecoclim.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Ecoclim.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2021 David Conran
    -
    2 
    -
    6 
    -
    7 // Supports:
    -
    8 // Brand: EcoClim, Model: HYSFR-P348 remote
    -
    9 // Brand: EcoClim, Model: ZC200DPO A/C
    -
    10 
    -
    11 #ifndef IR_ECOCLIM_H_
    -
    12 #define IR_ECOCLIM_H_
    -
    13 
    -
    14 #define __STDC_LIMIT_MACROS
    -
    15 #include <stdint.h>
    -
    16 #ifndef UNIT_TEST
    -
    17 #include <Arduino.h>
    -
    18 #endif
    -
    19 #include "IRremoteESP8266.h"
    -
    20 #include "IRsend.h"
    -
    21 #ifdef UNIT_TEST
    -
    22 #include "IRsend_test.h"
    -
    23 #endif
    -
    24 
    -
    25 // Constants
    -
    26 // Modes
    -
    27 const uint8_t kEcoclimAuto = 0b000;
    -
    28 const uint8_t kEcoclimCool = 0b001;
    -
    29 const uint8_t kEcoclimDry = 0b010;
    -
    30 const uint8_t kEcoclimRecycle = 0b011;
    -
    31 const uint8_t kEcoclimFan = 0b100;
    -
    32 const uint8_t kEcoclimHeat = 0b101;
    -
    33 const uint8_t kEcoclimSleep = 0b111;
    -
    34 // Fan Control
    -
    35 const uint8_t kEcoclimFanMin = 0b00;
    -
    36 const uint8_t kEcoclimFanMed = 0b01;
    -
    37 const uint8_t kEcoclimFanMax = 0b10;
    -
    38 const uint8_t kEcoclimFanAuto = 0b11;
    -
    39 // DIP settings
    -
    40 const uint8_t kEcoclimDipMaster = 0b0000;
    -
    41 const uint8_t kEcoclimDipSlave = 0b0111;
    -
    42 // Temperature
    -
    43 const uint8_t kEcoclimTempMin = 5; // Celsius
    -
    44 const uint8_t kEcoclimTempMax = kEcoclimTempMin + 31; // Celsius
    -
    45 // Timer
    -
    46 const uint16_t kEcoclimTimerDisable = 0x1F * 60 + 7 * 10; // 4774
    -
    47 
    -
    48 // Power: Off, Mode: Auto, Temp: 11C, Sensor: 22C, Fan: Auto, Clock: 00:00
    -
    49 const uint64_t kEcoclimDefaultState = 0x11063000FFFF02;
    -
    50 
    - -
    53  uint64_t raw;
    -
    54  struct { // Only 56 bits (7 bytes are used.
    -
    55  // Byte
    -
    56  uint64_t :3;
    -
    57  uint64_t :1;
    -
    58  uint64_t DipConfig :4;
    -
    59  // Byte
    -
    60  uint64_t OffTenMins :3;
    -
    61  uint64_t OffHours :5;
    -
    62  // Byte
    -
    63  uint64_t OnTenMins :3;
    -
    64  uint64_t OnHours :5;
    -
    65  // Byte+Byte
    -
    66  uint64_t Clock :11;
    -
    67  uint64_t :1;
    -
    68  uint64_t Fan :2;
    -
    69  uint64_t Power :1;
    -
    70  uint64_t Clear :1; // Not sure what this is
    -
    71  // Byte
    -
    72  uint64_t Temp :5;
    -
    73  uint64_t Mode :3;
    -
    74  // Byte
    -
    75  uint64_t SensorTemp :5;
    -
    76  uint64_t :3;
    -
    77  };
    -
    78 };
    -
    79 
    -
    80 // Classes
    -
    81 
    -
    84 class IREcoclimAc {
    -
    85  public:
    -
    86  explicit IREcoclimAc(const uint16_t pin, const bool inverted = false,
    -
    87  const bool use_modulation = true);
    -
    88  void stateReset(void);
    -
    89 #if SEND_ECOCLIM
    -
    90  void send(const uint16_t repeat = kNoRepeat);
    -
    95  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    96 #endif // SEND_ECOCLIM
    -
    97  void begin(void);
    -
    98  void on(void);
    -
    99  void off(void);
    -
    100  void setPower(const bool on);
    -
    101  bool getPower(void) const;
    -
    102  void setTemp(const uint8_t celsius);
    -
    103  uint8_t getTemp(void) const;
    -
    104  void setSensorTemp(const uint8_t celsius);
    -
    105  uint8_t getSensorTemp(void) const;
    -
    106  void setFan(const uint8_t speed);
    -
    107  uint8_t getFan(void) const;
    -
    108  void setMode(const uint8_t mode);
    -
    109  uint8_t getMode(void) const;
    -
    110  void setClock(const uint16_t nr_of_mins);
    -
    111  uint16_t getClock(void) const;
    -
    112  uint64_t getRaw(void) const;
    -
    113  void setRaw(const uint64_t new_code);
    -
    114  void setType(const uint8_t code);
    -
    115  uint8_t getType(void) const;
    -
    116  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    117  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    118  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    119  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    120  stdAc::state_t toCommon(void) const;
    -
    121  void setOnTimer(const uint16_t nr_of_mins);
    -
    122  uint16_t getOnTimer(void) const;
    -
    123  bool isOnTimerEnabled(void) const;
    -
    124  void disableOnTimer(void);
    -
    125  void setOffTimer(const uint16_t nr_of_mins);
    -
    126  uint16_t getOffTimer(void) const;
    -
    127  bool isOffTimerEnabled(void) const;
    -
    128  void disableOffTimer(void);
    -
    129  String toString(void) const;
    -
    130 #ifndef UNIT_TEST
    -
    131 
    -
    132  private:
    - -
    134 #else // UNIT_TEST
    -
    135  IRsendTest _irsend;
    -
    137 #endif // UNIT_TEST
    - -
    140 };
    -
    141 
    -
    142 #endif // IR_ECOCLIM_H_
    -
    -
    bool isOnTimerEnabled(void) const
    Check if the On Timer is enabled.
    Definition: ir_Ecoclim.cpp:322
    -
    uint64_t OffHours
    Off Timer nr of Hours.
    Definition: ir_Ecoclim.h:61
    -
    uint64_t Mode
    Operating Mode.
    Definition: ir_Ecoclim.h:73
    -
    uint64_t OnTenMins
    On Timer minutes (in tens of mins)
    Definition: ir_Ecoclim.h:63
    -
    uint64_t getRaw(void) const
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Ecoclim.cpp:146
    -
    const uint8_t kEcoclimDipMaster
    Definition: ir_Ecoclim.h:40
    -
    const uint8_t kEcoclimFanMed
    1
    Definition: ir_Ecoclim.h:36
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Ecoclim.cpp:131
    -
    uint8_t getType(void) const
    Get the Unit type/DIP switch settings of the remote.
    Definition: ir_Ecoclim.cpp:290
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Ecoclim.cpp:361
    -
    void setSensorTemp(const uint8_t celsius)
    Set the sensor temperature.
    Definition: ir_Ecoclim.cpp:167
    -
    uint64_t Fan
    Fan Speed.
    Definition: ir_Ecoclim.h:68
    -
    uint8_t getSensorTemp(void) const
    Get the sensor temperature setting.
    Definition: ir_Ecoclim.cpp:176
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint16_t getClock(void) const
    Get the clock time of the A/C unit.
    Definition: ir_Ecoclim.cpp:280
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Ecoclim.cpp:196
    -
    const uint64_t kEcoclimDefaultState
    Definition: ir_Ecoclim.h:49
    -
    const uint8_t kEcoclimFanMin
    0
    Definition: ir_Ecoclim.h:35
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Ecoclim.cpp:189
    -
    const uint8_t kEcoclimDipSlave
    Definition: ir_Ecoclim.h:41
    - -
    const uint8_t kEcoclimSleep
    7
    Definition: ir_Ecoclim.h:33
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Ecoclim.cpp:186
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint64_t raw
    The state in IR code form.
    Definition: ir_Ecoclim.h:53
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kEcoclimTempMin
    Definition: ir_Ecoclim.h:43
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Ecoclim.cpp:163
    -
    const uint8_t kEcoclimFanMax
    2
    Definition: ir_Ecoclim.h:37
    -
    const uint8_t kEcoclimFanAuto
    3
    Definition: ir_Ecoclim.h:38
    -
    const uint16_t kEcoclimTimerDisable
    Definition: ir_Ecoclim.h:46
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode into its native mode.
    Definition: ir_Ecoclim.cpp:255
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Ecoclim.cpp:192
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Ecoclim.cpp:221
    -
    uint64_t Clock
    Definition: ir_Ecoclim.h:66
    -
    void setRaw(const uint64_t new_code)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Ecoclim.cpp:150
    -
    void setTemp(const uint8_t celsius)
    Set the temperature.
    Definition: ir_Ecoclim.cpp:154
    -
    const uint8_t kEcoclimTempMax
    Definition: ir_Ecoclim.h:44
    - -
    const uint8_t kEcoclimRecycle
    3
    Definition: ir_Ecoclim.h:30
    -
    void setOffTimer(const uint16_t nr_of_mins)
    Set & enable the Off Timer for the A/C.
    Definition: ir_Ecoclim.cpp:334
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Ecoclim.cpp:236
    -
    bool isOffTimerEnabled(void) const
    Check if the Off Timer is enabled.
    Definition: ir_Ecoclim.cpp:349
    -
    uint64_t Clear
    Definition: ir_Ecoclim.h:70
    -
    const uint8_t kEcoclimCool
    1
    Definition: ir_Ecoclim.h:28
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    void setType(const uint8_t code)
    Set the Unit type/DIP switch settings for the remote.
    Definition: ir_Ecoclim.cpp:294
    -
    uint64_t Power
    Power control.
    Definition: ir_Ecoclim.h:69
    -
    const uint8_t kEcoclimDry
    2
    Definition: ir_Ecoclim.h:29
    -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Ecoclim.cpp:139
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Ecoclim.cpp:182
    -
    void setClock(const uint16_t nr_of_mins)
    Set the clock time on the A/C unit.
    Definition: ir_Ecoclim.cpp:284
    -
    uint64_t Temp
    Desired Temperature (Celsius)
    Definition: ir_Ecoclim.h:72
    -
    uint16_t getOnTimer(void) const
    Get the On Timer for the A/C.
    Definition: ir_Ecoclim.cpp:316
    -
    void disableOnTimer(void)
    Disable & clear the On Timer.
    Definition: ir_Ecoclim.cpp:327
    -
    IREcoclimAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Ecoclim.cpp:126
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Ecoclim.h:133
    -
    Class for handling detailed EcoClim A/C 56 bit messages.
    Definition: ir_Ecoclim.h:84
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Ecoclim.cpp:134
    -
    const uint8_t kEcoclimAuto
    0. a.k.a Slave
    Definition: ir_Ecoclim.h:27
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Ecoclim.h:95
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Ecoclim.cpp:387
    -
    uint16_t getOffTimer(void) const
    Get the Off Timer for the A/C.
    Definition: ir_Ecoclim.cpp:343
    -
    const uint8_t kEcoclimHeat
    5
    Definition: ir_Ecoclim.h:32
    -
    uint64_t OnHours
    On Timer nr of Hours.
    Definition: ir_Ecoclim.h:64
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Ecoclim.cpp:200
    -
    uint64_t SensorTemp
    Sensed Temperature (Celsius)
    Definition: ir_Ecoclim.h:75
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Ecoclim.cpp:207
    -
    Native representation of a Ecoclim A/C message.
    Definition: ir_Ecoclim.h:52
    -
    void disableOffTimer(void)
    Disable & clear the Off Timer.
    Definition: ir_Ecoclim.cpp:354
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's common stdAc::opmode_t equivalent.
    Definition: ir_Ecoclim.cpp:268
    -
    EcoclimProtocol _
    The state of the IR remote in IR code form.
    Definition: ir_Ecoclim.h:139
    -
    void setOnTimer(const uint16_t nr_of_mins)
    Set & enable the On Timer for the A/C.
    Definition: ir_Ecoclim.cpp:307
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Ecoclim.cpp:232
    -
    uint64_t DipConfig
    0b0000 = Master, 0b0111 = Slave
    Definition: ir_Ecoclim.h:58
    -
    const uint8_t kEcoclimFan
    4
    Definition: ir_Ecoclim.h:31
    -
    uint64_t OffTenMins
    Off Timer minutes (in tens of mins)
    Definition: ir_Ecoclim.h:60
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8cpp.html deleted file mode 100644 index 30e634456..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8cpp.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Electra.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Electra.cpp File Reference
    -
    -
    - -

    Support for Electra A/C protocols. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kElectraAcHdrMark = 9166
     
    const uint16_t kElectraAcBitMark = 646
     
    const uint16_t kElectraAcHdrSpace = 4470
     
    const uint16_t kElectraAcOneSpace = 1647
     
    const uint16_t kElectraAcZeroSpace = 547
     
    const uint32_t kElectraAcMessageGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kElectraAcBitMark

    - -
    -
    - - - - -
    const uint16_t kElectraAcBitMark = 646
    -
    - -
    -
    - -

    ◆ kElectraAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kElectraAcHdrMark = 9166
    -
    - -
    -
    - -

    ◆ kElectraAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kElectraAcHdrSpace = 4470
    -
    - -
    -
    - -

    ◆ kElectraAcMessageGap

    - -
    -
    - - - - -
    const uint32_t kElectraAcMessageGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kElectraAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kElectraAcOneSpace = 1647
    -
    - -
    -
    - -

    ◆ kElectraAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kElectraAcZeroSpace = 547
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h.html deleted file mode 100644 index 89312ce48..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Electra.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Electra.h File Reference
    -
    -
    - -

    Support for Electra A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  ElectraProtocol
     Native representation of a Electra A/C message. More...
     
    class  IRElectraAc
     Class for handling detailed Electra A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kElectraAcMinTemp = 16
     
    const uint8_t kElectraAcMaxTemp = 32
     
    const uint8_t kElectraAcTempDelta = 8
     
    const uint8_t kElectraAcSwingOn = 0b000
     
    const uint8_t kElectraAcSwingOff = 0b111
     
    const uint8_t kElectraAcFanAuto = 0b101
     
    const uint8_t kElectraAcFanLow = 0b011
     
    const uint8_t kElectraAcFanMed = 0b010
     
    const uint8_t kElectraAcFanHigh = 0b001
     
    const uint8_t kElectraAcAuto = 0b000
     
    const uint8_t kElectraAcCool = 0b001
     
    const uint8_t kElectraAcDry = 0b010
     
    const uint8_t kElectraAcHeat = 0b100
     
    const uint8_t kElectraAcFan = 0b110
     
    const uint8_t kElectraAcLightToggleOn = 0x15
     
    const uint8_t kElectraAcLightToggleMask = 0x11
     
    const uint8_t kElectraAcLightToggleOff = 0x08
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kElectraAcAuto

    - -
    -
    - - - - -
    const uint8_t kElectraAcAuto = 0b000
    -
    - -
    -
    - -

    ◆ kElectraAcCool

    - -
    -
    - - - - -
    const uint8_t kElectraAcCool = 0b001
    -
    - -
    -
    - -

    ◆ kElectraAcDry

    - -
    -
    - - - - -
    const uint8_t kElectraAcDry = 0b010
    -
    - -
    -
    - -

    ◆ kElectraAcFan

    - -
    -
    - - - - -
    const uint8_t kElectraAcFan = 0b110
    -
    - -
    -
    - -

    ◆ kElectraAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kElectraAcFanAuto = 0b101
    -
    - -
    -
    - -

    ◆ kElectraAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kElectraAcFanHigh = 0b001
    -
    - -
    -
    - -

    ◆ kElectraAcFanLow

    - -
    -
    - - - - -
    const uint8_t kElectraAcFanLow = 0b011
    -
    - -
    -
    - -

    ◆ kElectraAcFanMed

    - -
    -
    - - - - -
    const uint8_t kElectraAcFanMed = 0b010
    -
    - -
    -
    - -

    ◆ kElectraAcHeat

    - -
    -
    - - - - -
    const uint8_t kElectraAcHeat = 0b100
    -
    - -
    -
    - -

    ◆ kElectraAcLightToggleMask

    - -
    -
    - - - - -
    const uint8_t kElectraAcLightToggleMask = 0x11
    -
    - -
    -
    - -

    ◆ kElectraAcLightToggleOff

    - -
    -
    - - - - -
    const uint8_t kElectraAcLightToggleOff = 0x08
    -
    - -
    -
    - -

    ◆ kElectraAcLightToggleOn

    - -
    -
    - - - - -
    const uint8_t kElectraAcLightToggleOn = 0x15
    -
    - -
    -
    - -

    ◆ kElectraAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kElectraAcMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kElectraAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kElectraAcMinTemp = 16
    -
    - -
    -
    - -

    ◆ kElectraAcSwingOff

    - -
    -
    - - - - -
    const uint8_t kElectraAcSwingOff = 0b111
    -
    - -
    -
    - -

    ◆ kElectraAcSwingOn

    - -
    -
    - - - - -
    const uint8_t kElectraAcSwingOn = 0b000
    -
    - -
    -
    - -

    ◆ kElectraAcTempDelta

    - -
    -
    - - - - -
    const uint8_t kElectraAcTempDelta = 8
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h_source.html deleted file mode 100644 index bcbd96d77..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Electra_8h_source.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Electra.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Electra.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 David Conran
    -
    5 
    -
    6 // Supports:
    -
    7 // Brand: AUX, Model: KFR-35GW/BpNFW=3 A/C
    -
    8 // Brand: AUX, Model: YKR-T/011 remote
    -
    9 // Brand: Electra, Model: Classic INV 17 / AXW12DCS A/C
    -
    10 // Brand: Electra, Model: YKR-M/003E remote
    -
    11 // Brand: Frigidaire, Model: FGPC102AB1 A/C
    -
    12 
    -
    13 #ifndef IR_ELECTRA_H_
    -
    14 #define IR_ELECTRA_H_
    -
    15 
    -
    16 #define __STDC_LIMIT_MACROS
    -
    17 #include <stdint.h>
    -
    18 #ifndef UNIT_TEST
    -
    19 #include <Arduino.h>
    -
    20 #endif
    -
    21 #include "IRremoteESP8266.h"
    -
    22 #include "IRsend.h"
    -
    23 #ifdef UNIT_TEST
    -
    24 #include "IRsend_test.h"
    -
    25 #endif
    -
    26 
    - - -
    30  struct {
    -
    31  // Byte 0
    -
    32  uint8_t :8;
    -
    33  // Byte 1
    -
    34  uint8_t SwingV :3;
    -
    35  uint8_t Temp :5;
    -
    36  // Byte 2
    -
    37  uint8_t :5;
    -
    38  uint8_t SwingH :3;
    -
    39  // Byte 3
    -
    40  uint8_t :8;
    -
    41  // Byte 4
    -
    42  uint8_t :5;
    -
    43  uint8_t Fan :3;
    -
    44  // Byte 5
    -
    45  uint8_t :6;
    -
    46  uint8_t Turbo :1;
    -
    47  uint8_t :1;
    -
    48  // Byte 6
    -
    49  uint8_t :5;
    -
    50  uint8_t Mode :3;
    -
    51  // Byte 7
    -
    52  uint8_t :8;
    -
    53  // Byte 8
    -
    54  uint8_t :8;
    -
    55  // Byte 9
    -
    56  uint8_t :2;
    -
    57  uint8_t Clean :1;
    -
    58  uint8_t :2;
    -
    59  uint8_t Power :1;
    -
    60  uint8_t :2;
    -
    61  // Byte 10
    -
    62  uint8_t :8;
    -
    63  // Byte 11
    -
    64  uint8_t LightToggle :8;
    -
    65  // Byte 12
    -
    66  uint8_t Sum :8;
    -
    67  };
    -
    68 };
    -
    69 
    -
    70 // Constants
    -
    71 const uint8_t kElectraAcMinTemp = 16; // 16C
    -
    72 const uint8_t kElectraAcMaxTemp = 32; // 32C
    -
    73 const uint8_t kElectraAcTempDelta = 8;
    -
    74 const uint8_t kElectraAcSwingOn = 0b000;
    -
    75 const uint8_t kElectraAcSwingOff = 0b111;
    -
    76 
    -
    77 const uint8_t kElectraAcFanAuto = 0b101;
    -
    78 const uint8_t kElectraAcFanLow = 0b011;
    -
    79 const uint8_t kElectraAcFanMed = 0b010;
    -
    80 const uint8_t kElectraAcFanHigh = 0b001;
    -
    81 
    -
    82 const uint8_t kElectraAcAuto = 0b000;
    -
    83 const uint8_t kElectraAcCool = 0b001;
    -
    84 const uint8_t kElectraAcDry = 0b010;
    -
    85 const uint8_t kElectraAcHeat = 0b100;
    -
    86 const uint8_t kElectraAcFan = 0b110;
    -
    87 
    -
    88 const uint8_t kElectraAcLightToggleOn = 0x15;
    -
    89 // Light has known ON values of 0x15 (0b00010101) or 0x19 (0b00011001)
    -
    90 // Thus common bits ON are: 0b00010001 (0x11)
    -
    91 // We will use this for the getLightToggle() test.
    -
    92 const uint8_t kElectraAcLightToggleMask = 0x11;
    -
    93 // and known OFF values of 0x08 (0b00001000) & 0x05 (0x00000101)
    -
    94 const uint8_t kElectraAcLightToggleOff = 0x08;
    -
    95 
    -
    96 
    -
    97 // Classes
    -
    99 class IRElectraAc {
    -
    100  public:
    -
    101  explicit IRElectraAc(const uint16_t pin, const bool inverted = false,
    -
    102  const bool use_modulation = true);
    -
    103  void stateReset(void);
    -
    104 #if SEND_ELECTRA_AC
    -
    105  void send(const uint16_t repeat = kElectraAcMinRepeat);
    -
    110  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    111 #endif // SEND_ELECTRA_AC
    -
    112  void begin(void);
    -
    113  void on(void);
    -
    114  void off(void);
    -
    115  void setPower(const bool on);
    -
    116  bool getPower(void) const;
    -
    117  void setMode(const uint8_t mode);
    -
    118  uint8_t getMode(void) const;
    -
    119  void setTemp(const uint8_t temp);
    -
    120  uint8_t getTemp(void) const;
    -
    121  void setFan(const uint8_t speed);
    -
    122  uint8_t getFan(void) const;
    -
    123  void setSwingV(const bool on);
    -
    124  bool getSwingV(void) const;
    -
    125  void setSwingH(const bool on);
    -
    126  bool getSwingH(void) const;
    -
    127  void setClean(const bool on);
    -
    128  bool getClean(void) const;
    -
    129  void setLightToggle(const bool on);
    -
    130  bool getLightToggle(void) const;
    -
    131  void setTurbo(const bool on);
    -
    132  bool getTurbo(void) const;
    -
    133  uint8_t* getRaw(void);
    -
    134  void setRaw(const uint8_t new_code[],
    -
    135  const uint16_t length = kElectraAcStateLength);
    -
    136  static bool validChecksum(const uint8_t state[],
    -
    137  const uint16_t length = kElectraAcStateLength);
    -
    138  static uint8_t calcChecksum(const uint8_t state[],
    -
    139  const uint16_t length = kElectraAcStateLength);
    -
    140  String toString(void) const;
    -
    141  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    142  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    143  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    144  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    145  stdAc::state_t toCommon(void) const;
    -
    146 #ifndef UNIT_TEST
    -
    147 
    -
    148  private:
    - -
    150 #else
    -
    151  IRsendTest _irsend;
    -
    153 #endif
    - -
    156  void checksum(const uint16_t length = kElectraAcStateLength);
    -
    157 };
    -
    158 #endif // IR_ELECTRA_H_
    -
    -
    uint8_t Temp
    Definition: ir_Electra.h:35
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Electra.cpp:158
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Electra.cpp:165
    -
    void checksum(const uint16_t length=kElectraAcStateLength)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Electra.cpp:94
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Electra.cpp:109
    -
    const uint8_t kElectraAcMinTemp
    Definition: ir_Electra.h:71
    -
    bool getSwingV(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Electra.cpp:259
    -
    uint8_t Power
    Definition: ir_Electra.h:59
    -
    const uint8_t kElectraAcMaxTemp
    Definition: ir_Electra.h:72
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Electra.cpp:135
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Electra.cpp:86
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Electra.cpp:314
    -
    const uint8_t kElectraAcFanAuto
    Definition: ir_Electra.h:77
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Electra.cpp:122
    -
    uint8_t Fan
    Definition: ir_Electra.h:43
    -
    void setClean(const bool on)
    Set the Clean mode of the A/C.
    Definition: ir_Electra.cpp:290
    - -
    const uint16_t kElectraAcMinRepeat
    Definition: IRremoteESP8266.h:1001
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Electra.cpp:198
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    IRElectraAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Electra.cpp:55
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kElectraAcHeat
    Definition: ir_Electra.h:85
    -
    ElectraProtocol _
    Definition: ir_Electra.h:155
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kElectraAcCool
    Definition: ir_Electra.h:83
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Electra.cpp:205
    -
    uint8_t Sum
    Definition: ir_Electra.h:66
    -
    Class for handling detailed Electra A/C messages.
    Definition: ir_Electra.h:99
    -
    const uint8_t kElectraAcAuto
    Definition: ir_Electra.h:82
    - -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Electra.cpp:178
    -
    const uint8_t kElectraAcDry
    Definition: ir_Electra.h:84
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kElectraAcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Electra.cpp:117
    -
    bool getLightToggle(void) const
    Get the Light (LED) Toggle mode of the A/C.
    Definition: ir_Electra.cpp:283
    -
    bool getClean(void) const
    Get the Clean mode of the A/C.
    Definition: ir_Electra.cpp:296
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Electra.cpp:129
    -
    const uint8_t kElectraAcTempDelta
    Definition: ir_Electra.h:73
    -
    Native representation of a Electra A/C message.
    Definition: ir_Electra.h:28
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Electra.h:110
    -
    const uint8_t kElectraAcLightToggleOff
    Definition: ir_Electra.h:94
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Electra.cpp:242
    -
    uint8_t Clean
    Definition: ir_Electra.h:57
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Electra.cpp:190
    -
    const uint8_t kElectraAcLightToggleOn
    Definition: ir_Electra.h:88
    -
    void setLightToggle(const bool on)
    Set the Light (LED) Toggle mode of the A/C.
    Definition: ir_Electra.cpp:277
    -
    uint8_t Mode
    Definition: ir_Electra.h:50
    -
    const uint8_t kElectraAcFanLow
    Definition: ir_Electra.h:78
    -
    void setSwingH(const bool on)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_Electra.cpp:265
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kElectraAcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Electra.cpp:76
    -
    uint8_t SwingV
    Definition: ir_Electra.h:34
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Electra.cpp:125
    -
    void send(const uint16_t repeat=kElectraAcMinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Electra.cpp:102
    -
    IRsend _irsend
    instance of the IR send class
    Definition: ir_Electra.h:149
    -
    const uint8_t kElectraAcSwingOn
    Definition: ir_Electra.h:74
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Electra.cpp:221
    -
    const uint8_t kElectraAcFanMed
    Definition: ir_Electra.h:79
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Electra.cpp:342
    -
    const uint8_t kElectraAcFanHigh
    Definition: ir_Electra.h:80
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Electra.cpp:228
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Electra.cpp:70
    -
    void setTurbo(const bool on)
    Set the Turbo mode of the A/C.
    Definition: ir_Electra.cpp:302
    -
    uint8_t Turbo
    Definition: ir_Electra.h:46
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Electra.cpp:141
    -
    bool getTurbo(void) const
    Get the Turbo mode of the A/C.
    Definition: ir_Electra.cpp:308
    -
    bool getSwingH(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_Electra.cpp:271
    -
    uint8_t LightToggle
    Definition: ir_Electra.h:64
    -
    const uint8_t kElectraAcFan
    Definition: ir_Electra.h:86
    -
    const uint8_t kElectraAcLightToggleMask
    Definition: ir_Electra.h:92
    -
    const uint8_t kElectraAcSwingOff
    Definition: ir_Electra.h:75
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Electra.cpp:62
    -
    uint8_t raw[kElectraAcStateLength]
    The state of the IR remote.
    Definition: ir_Electra.h:29
    -
    uint8_t SwingH
    Definition: ir_Electra.h:38
    -
    void setSwingV(const bool on)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Electra.cpp:253
    -
    const uint16_t kElectraAcStateLength
    Definition: IRremoteESP8266.h:999
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__EliteScreens_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__EliteScreens_8cpp.html deleted file mode 100644 index efab8a7b4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__EliteScreens_8cpp.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_EliteScreens.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_EliteScreens.cpp File Reference
    -
    -
    - -

    Elite Screens protocol support. -More...

    - - - - - - - - -

    -Variables

    const uint16_t kEliteScreensOne = 470
     
    const uint16_t kEliteScreensZero = 1214
     
    const uint16_t kEliteScreensGap = 29200
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kEliteScreensGap

    - -
    -
    - - - - -
    const uint16_t kEliteScreensGap = 29200
    -
    - -
    -
    - -

    ◆ kEliteScreensOne

    - -
    -
    - - - - -
    const uint16_t kEliteScreensOne = 470
    -
    - -
    -
    - -

    ◆ kEliteScreensZero

    - -
    -
    - - - - -
    const uint16_t kEliteScreensZero = 1214
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Epson_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Epson_8cpp.html deleted file mode 100644 index 3b1fa2a04..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Epson_8cpp.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Epson.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Epson.cpp File Reference
    -
    -
    - -

    Support for Epson protocols. Epson is an NEC-like protocol, except it doesn't use the NEC style repeat. -More...

    -

    Detailed Description

    -

    Support for Epson protocols. Epson is an NEC-like protocol, except it doesn't use the NEC style repeat.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1034
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8cpp.html deleted file mode 100644 index 71e9d609a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8cpp.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Fujitsu.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Fujitsu.cpp File Reference
    -
    -
    - -

    Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham & David Conran. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kFujitsuAcHdrMark = 3324
     
    const uint16_t kFujitsuAcHdrSpace = 1574
     
    const uint16_t kFujitsuAcBitMark = 448
     
    const uint16_t kFujitsuAcOneSpace = 1182
     
    const uint16_t kFujitsuAcZeroSpace = 390
     
    const uint16_t kFujitsuAcMinGap = 8100
     
    const uint8_t kFujitsuAcExtraTolerance = 5
     
    -

    Detailed Description

    -

    Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham & David Conran.

    -
    Warning
    Use of incorrect model may cause the A/C unit to lock up. e.g. An A/C that uses an AR-RAH1U remote may lock up requiring a physical power rest, if incorrect model (ARRAH2E) is used with a Swing command. The correct model for it is ARREB1E.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1376
    -

    Variable Documentation

    - -

    ◆ kFujitsuAcBitMark

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcBitMark = 448
    -
    - -
    -
    - -

    ◆ kFujitsuAcExtraTolerance

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcExtraTolerance = 5
    -
    - -
    -
    - -

    ◆ kFujitsuAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcHdrMark = 3324
    -
    - -
    -
    - -

    ◆ kFujitsuAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcHdrSpace = 1574
    -
    - -
    -
    - -

    ◆ kFujitsuAcMinGap

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcMinGap = 8100
    -
    - -
    -
    - -

    ◆ kFujitsuAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcOneSpace = 1182
    -
    - -
    -
    - -

    ◆ kFujitsuAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcZeroSpace = 390
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h.html deleted file mode 100644 index fee6f28fc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h.html +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Fujitsu.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Fujitsu.h File Reference
    -
    -
    - -

    Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  FujitsuProtocol
     Native representation of a Fujitsu A/C message. More...
     
    class  IRFujitsuAC
     Class for handling detailed Fujitsu A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kFujitsuAcModeAuto = 0x0
     
    const uint8_t kFujitsuAcModeCool = 0x1
     
    const uint8_t kFujitsuAcModeDry = 0x2
     
    const uint8_t kFujitsuAcModeFan = 0x3
     
    const uint8_t kFujitsuAcModeHeat = 0x4
     
    const uint8_t kFujitsuAcCmdStayOn = 0x00
     
    const uint8_t kFujitsuAcCmdTurnOn = 0x01
     
    const uint8_t kFujitsuAcCmdTurnOff = 0x02
     
    const uint8_t kFujitsuAcCmdEcono = 0x09
     
    const uint8_t kFujitsuAcCmdPowerful = 0x39
     
    const uint8_t kFujitsuAcCmdStepVert = 0x6C
     
    const uint8_t kFujitsuAcCmdToggleSwingVert = 0x6D
     
    const uint8_t kFujitsuAcCmdStepHoriz = 0x79
     
    const uint8_t kFujitsuAcCmdToggleSwingHoriz = 0x7A
     
    const uint8_t kFujitsuAcFanAuto = 0x00
     
    const uint8_t kFujitsuAcFanHigh = 0x01
     
    const uint8_t kFujitsuAcFanMed = 0x02
     
    const uint8_t kFujitsuAcFanLow = 0x03
     
    const uint8_t kFujitsuAcFanQuiet = 0x04
     
    const float kFujitsuAcMinTemp = 16
     
    const float kFujitsuAcMaxTemp = 30
     
    const uint8_t kFujitsuAcTempOffsetC = kFujitsuAcMinTemp
     
    const float kFujitsuAcMinTempF = 60
     
    const float kFujitsuAcMaxTempF = 88
     
    const uint8_t kFujitsuAcTempOffsetF = 44
     
    const uint8_t kFujitsuAcSwingOff = 0x00
     
    const uint8_t kFujitsuAcSwingVert = 0x01
     
    const uint8_t kFujitsuAcSwingHoriz = 0x02
     
    const uint8_t kFujitsuAcSwingBoth = 0x03
     
    const uint8_t kFujitsuAcStopTimers = 0b00
     
    const uint8_t kFujitsuAcSleepTimer = 0b01
     
    const uint8_t kFujitsuAcOffTimer = 0b10
     
    const uint8_t kFujitsuAcOnTimer = 0b11
     
    const uint16_t kFujitsuAcTimerMax = 12 * 60
     Minutes. More...
     
    -

    Detailed Description

    -

    Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.

    -
    Warning
    Use of incorrect model may cause the A/C unit to lock up. e.g. An A/C that uses an AR-RAH1U remote may lock up requiring a physical power rest, if incorrect model (ARRAH2E) is used with a Swing command. The correct model for it is ARREB1E.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1376
    -

    Variable Documentation

    - -

    ◆ kFujitsuAcCmdEcono

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdEcono = 0x09
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdPowerful

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdPowerful = 0x39
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdStayOn

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdStayOn = 0x00
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdStepHoriz

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdStepHoriz = 0x79
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdStepVert

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdStepVert = 0x6C
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdToggleSwingHoriz

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdToggleSwingHoriz = 0x7A
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdToggleSwingVert

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdToggleSwingVert = 0x6D
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdTurnOff

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdTurnOff = 0x02
    -
    - -
    -
    - -

    ◆ kFujitsuAcCmdTurnOn

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcCmdTurnOn = 0x01
    -
    - -
    -
    - -

    ◆ kFujitsuAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcFanAuto = 0x00
    -
    - -
    -
    - -

    ◆ kFujitsuAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcFanHigh = 0x01
    -
    - -
    -
    - -

    ◆ kFujitsuAcFanLow

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcFanLow = 0x03
    -
    - -
    -
    - -

    ◆ kFujitsuAcFanMed

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcFanMed = 0x02
    -
    - -
    -
    - -

    ◆ kFujitsuAcFanQuiet

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcFanQuiet = 0x04
    -
    - -
    -
    - -

    ◆ kFujitsuAcMaxTemp

    - -
    -
    - - - - -
    const float kFujitsuAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kFujitsuAcMaxTempF

    - -
    -
    - - - - -
    const float kFujitsuAcMaxTempF = 88
    -
    - -
    -
    - -

    ◆ kFujitsuAcMinTemp

    - -
    -
    - - - - -
    const float kFujitsuAcMinTemp = 16
    -
    - -
    -
    - -

    ◆ kFujitsuAcMinTempF

    - -
    -
    - - - - -
    const float kFujitsuAcMinTempF = 60
    -
    - -
    -
    - -

    ◆ kFujitsuAcModeAuto

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcModeAuto = 0x0
    -
    - -
    -
    - -

    ◆ kFujitsuAcModeCool

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcModeCool = 0x1
    -
    - -
    -
    - -

    ◆ kFujitsuAcModeDry

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcModeDry = 0x2
    -
    - -
    -
    - -

    ◆ kFujitsuAcModeFan

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcModeFan = 0x3
    -
    - -
    -
    - -

    ◆ kFujitsuAcModeHeat

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcModeHeat = 0x4
    -
    - -
    -
    - -

    ◆ kFujitsuAcOffTimer

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcOffTimer = 0b10
    -
    - -
    -
    - -

    ◆ kFujitsuAcOnTimer

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcOnTimer = 0b11
    -
    - -
    -
    - -

    ◆ kFujitsuAcSleepTimer

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcSleepTimer = 0b01
    -
    - -
    -
    - -

    ◆ kFujitsuAcStopTimers

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcStopTimers = 0b00
    -
    - -
    -
    - -

    ◆ kFujitsuAcSwingBoth

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcSwingBoth = 0x03
    -
    - -
    -
    - -

    ◆ kFujitsuAcSwingHoriz

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcSwingHoriz = 0x02
    -
    - -
    -
    - -

    ◆ kFujitsuAcSwingOff

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcSwingOff = 0x00
    -
    - -
    -
    - -

    ◆ kFujitsuAcSwingVert

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcSwingVert = 0x01
    -
    - -
    -
    - -

    ◆ kFujitsuAcTempOffsetC

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcTempOffsetC = kFujitsuAcMinTemp
    -
    - -
    -
    - -

    ◆ kFujitsuAcTempOffsetF

    - -
    -
    - - - - -
    const uint8_t kFujitsuAcTempOffsetF = 44
    -
    - -
    -
    - -

    ◆ kFujitsuAcTimerMax

    - -
    -
    - - - - -
    const uint16_t kFujitsuAcTimerMax = 12 * 60
    -
    - -

    Minutes.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h_source.html deleted file mode 100644 index 9dbd83a02..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Fujitsu_8h_source.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Fujitsu.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Fujitsu.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2017 Jonny Graham
    -
    2 // Copyright 2018-2021 David Conran
    -
    3 // Copyright 2021 siriuslzx
    -
    4 
    -
    13 
    -
    14 // Supports:
    -
    15 // Brand: Fujitsu, Model: AR-RAH2E remote (ARRAH2E)
    -
    16 // Brand: Fujitsu, Model: ASYG30LFCA A/C (ARRAH2E)
    -
    17 // Brand: Fujitsu General, Model: AR-RCE1E remote (ARRAH2E)
    -
    18 // Brand: Fujitsu General, Model: ASHG09LLCA A/C (ARRAH2E)
    -
    19 // Brand: Fujitsu General, Model: AOHG09LLC A/C (ARRAH2E)
    -
    20 // Brand: Fujitsu, Model: AR-DB1 remote (ARDB1)
    -
    21 // Brand: Fujitsu, Model: AST9RSGCW A/C (ARDB1)
    -
    22 // Brand: Fujitsu, Model: AR-REB1E remote (ARREB1E)
    -
    23 // Brand: Fujitsu, Model: ASYG7LMCA A/C (ARREB1E)
    -
    24 // Brand: Fujitsu, Model: AR-RAE1E remote (ARRAH2E)
    -
    25 // Brand: Fujitsu, Model: AGTV14LAC A/C (ARRAH2E)
    -
    26 // Brand: Fujitsu, Model: AR-RAC1E remote (ARRAH2E)
    -
    27 // Brand: Fujitsu, Model: ASTB09LBC A/C (ARRY4)
    -
    28 // Brand: Fujitsu, Model: AR-RY4 remote (ARRY4)
    -
    29 // Brand: Fujitsu General, Model: AR-JW2 remote (ARJW2)
    -
    30 // Brand: Fujitsu, Model: AR-DL10 remote (ARDB1)
    -
    31 // Brand: Fujitsu, Model: ASU30C1 A/C (ARDB1)
    -
    32 // Brand: Fujitsu, Model: AR-RAH1U remote (ARREB1E)
    -
    33 // Brand: Fujitsu, Model: ASU12RLF A/C (ARREB1E)
    -
    34 // Brand: Fujitsu, Model: AR-REW4E remote (ARREW4E)
    -
    35 // Brand: Fujitsu, Model: ASYG09KETA-B A/C (ARREW4E)
    -
    36 
    -
    37 #ifndef IR_FUJITSU_H_
    -
    38 #define IR_FUJITSU_H_
    -
    39 
    -
    40 #define __STDC_LIMIT_MACROS
    -
    41 #include <stdint.h>
    -
    42 #ifdef ARDUINO
    -
    43 #include <Arduino.h>
    -
    44 #endif
    -
    45 #include "IRrecv.h"
    -
    46 #include "IRremoteESP8266.h"
    -
    47 #include "IRsend.h"
    -
    48 #ifdef UNIT_TEST
    -
    49 #include "IRsend_test.h"
    -
    50 #endif
    -
    51 
    - -
    54  struct {
    - - -
    57  };
    -
    58  struct {
    -
    59  // Byte 0~1
    -
    60  uint64_t :16; // Fixed header
    -
    61  // Byte 2
    -
    62  uint64_t :4;
    -
    63  uint64_t Id :2; // Device Number/Identifier
    -
    64  uint64_t :2;
    -
    65  // Byte 3-4
    -
    66  uint64_t :16;
    -
    67  // Byte 5
    -
    68  uint64_t Cmd :8; // short codes:cmd; long codes:fixed value
    -
    69  // Byte 6
    -
    70  uint64_t RestLength :8; // Nr. of bytes in the message after this byte.
    -
    71  // Byte 7
    -
    72  uint64_t Protocol :8; // Seems like a protocol version number. Not sure.
    -
    73  // Byte 8
    -
    74  uint64_t Power :1;
    -
    75  uint64_t Fahrenheit :1;
    -
    76  uint64_t Temp :6; // Internal representation varies between models.
    -
    77  // Byte 9
    -
    78  uint64_t Mode :3;
    -
    79  uint64_t Clean :1; // Also 10C Heat in ARREW4E.
    -
    80  uint64_t TimerType :2;
    -
    81  uint64_t :2;
    -
    82  // Byte 10
    -
    83  uint64_t Fan :3;
    -
    84  uint64_t :1;
    -
    85  uint64_t Swing :2;
    -
    86  uint64_t :2;
    -
    87  // Byte 11~13
    -
    88  uint64_t OffTimer :11; // Also is the sleep timer value
    -
    89  uint64_t OffTimerEnable :1;
    -
    90  uint64_t OnTimer :11;
    -
    91  uint64_t OnTimerEnable :1;
    -
    92  // Byte 14
    -
    93  uint64_t :3;
    -
    94  uint64_t Filter :1;
    -
    95  uint64_t :1;
    -
    96  uint64_t unknown :1;
    -
    97  uint64_t :1;
    -
    98  uint64_t OutsideQuiet :1;
    -
    99  // Byte 15
    -
    100  uint64_t :0; // Checksum
    -
    101  };
    -
    102 };
    -
    103 
    -
    104 // Constants
    -
    105 const uint8_t kFujitsuAcModeAuto = 0x0; // 0b000
    -
    106 const uint8_t kFujitsuAcModeCool = 0x1; // 0b001
    -
    107 const uint8_t kFujitsuAcModeDry = 0x2; // 0b010
    -
    108 const uint8_t kFujitsuAcModeFan = 0x3; // 0b011
    -
    109 const uint8_t kFujitsuAcModeHeat = 0x4; // 0b100
    -
    110 
    -
    111 const uint8_t kFujitsuAcCmdStayOn = 0x00; // b00000000
    -
    112 const uint8_t kFujitsuAcCmdTurnOn = 0x01; // b00000001
    -
    113 const uint8_t kFujitsuAcCmdTurnOff = 0x02; // b00000010
    -
    114 const uint8_t kFujitsuAcCmdEcono = 0x09; // b00001001
    -
    115 const uint8_t kFujitsuAcCmdPowerful = 0x39; // b00111001
    -
    116 const uint8_t kFujitsuAcCmdStepVert = 0x6C; // b01101100
    -
    117 const uint8_t kFujitsuAcCmdToggleSwingVert = 0x6D; // b01101101
    -
    118 const uint8_t kFujitsuAcCmdStepHoriz = 0x79; // b01111001
    -
    119 const uint8_t kFujitsuAcCmdToggleSwingHoriz = 0x7A; // b01111010
    -
    120 
    -
    121 const uint8_t kFujitsuAcFanAuto = 0x00;
    -
    122 const uint8_t kFujitsuAcFanHigh = 0x01;
    -
    123 const uint8_t kFujitsuAcFanMed = 0x02;
    -
    124 const uint8_t kFujitsuAcFanLow = 0x03;
    -
    125 const uint8_t kFujitsuAcFanQuiet = 0x04;
    -
    126 
    -
    127 const float kFujitsuAcMinTemp = 16; // 16C
    -
    128 const float kFujitsuAcMaxTemp = 30; // 30C
    - -
    130 const float kFujitsuAcMinTempF = 60; // 60F
    -
    131 const float kFujitsuAcMaxTempF = 88; // 88F
    -
    132 const uint8_t kFujitsuAcTempOffsetF = 44;
    -
    133 
    -
    134 const uint8_t kFujitsuAcSwingOff = 0x00;
    -
    135 const uint8_t kFujitsuAcSwingVert = 0x01;
    -
    136 const uint8_t kFujitsuAcSwingHoriz = 0x02;
    -
    137 const uint8_t kFujitsuAcSwingBoth = 0x03;
    -
    138 
    -
    139 const uint8_t kFujitsuAcStopTimers = 0b00; // 0
    -
    140 const uint8_t kFujitsuAcSleepTimer = 0b01; // 1
    -
    141 const uint8_t kFujitsuAcOffTimer = 0b10; // 2
    -
    142 const uint8_t kFujitsuAcOnTimer = 0b11; // 3
    -
    143 const uint16_t kFujitsuAcTimerMax = 12 * 60;
    -
    144 
    -
    145 // Legacy defines.
    -
    146 #define FUJITSU_AC_MODE_AUTO kFujitsuAcModeAuto
    -
    147 #define FUJITSU_AC_MODE_COOL kFujitsuAcModeCool
    -
    148 #define FUJITSU_AC_MODE_DRY kFujitsuAcModeDry
    -
    149 #define FUJITSU_AC_MODE_FAN kFujitsuAcModeFan
    -
    150 #define FUJITSU_AC_MODE_HEAT kFujitsuAcModeHeat
    -
    151 #define FUJITSU_AC_CMD_STAY_ON kFujitsuAcCmdStayOn
    -
    152 #define FUJITSU_AC_CMD_TURN_ON kFujitsuAcCmdTurnOn
    -
    153 #define FUJITSU_AC_CMD_TURN_OFF kFujitsuAcCmdTurnOff
    -
    154 #define FUJITSU_AC_CMD_STEP_HORIZ kFujitsuAcCmdStepHoriz
    -
    155 #define FUJITSU_AC_CMD_STEP_VERT kFujitsuAcCmdStepVert
    -
    156 #define FUJITSU_AC_FAN_AUTO kFujitsuAcFanAuto
    -
    157 #define FUJITSU_AC_FAN_HIGH kFujitsuAcFanHigh
    -
    158 #define FUJITSU_AC_FAN_MED kFujitsuAcFanMed
    -
    159 #define FUJITSU_AC_FAN_LOW kFujitsuAcFanLow
    -
    160 #define FUJITSU_AC_FAN_QUIET kFujitsuAcFanQuiet
    -
    161 #define FUJITSU_AC_MIN_TEMP kFujitsuAcMinTemp
    -
    162 #define FUJITSU_AC_MAX_TEMP kFujitsuAcMaxTemp
    -
    163 #define FUJITSU_AC_SWING_OFF kFujitsuAcSwingOff
    -
    164 #define FUJITSU_AC_SWING_VERT kFujitsuAcSwingVert
    -
    165 #define FUJITSU_AC_SWING_HORIZ kFujitsuAcSwingHoriz
    -
    166 #define FUJITSU_AC_SWING_BOTH kFujitsuAcSwingBoth
    -
    167 
    -
    169 class IRFujitsuAC {
    -
    170  public:
    -
    171  explicit IRFujitsuAC(const uint16_t pin,
    -
    172  const fujitsu_ac_remote_model_t model = ARRAH2E,
    -
    173  const bool inverted = false,
    -
    174  const bool use_modulation = true);
    -
    175  void setModel(const fujitsu_ac_remote_model_t model);
    - -
    177  void stateReset(void);
    -
    178 #if SEND_FUJITSU_AC
    -
    179  void send(const uint16_t repeat = kFujitsuAcMinRepeat);
    -
    184  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    185 #endif // SEND_FUJITSU_AC
    -
    186  void begin(void);
    -
    187  void stepHoriz(void);
    -
    188  void toggleSwingHoriz(const bool update = true);
    -
    189  void stepVert(void);
    -
    190  void toggleSwingVert(const bool update = true);
    -
    191  void setCmd(const uint8_t cmd);
    -
    192  uint8_t getCmd(void) const;
    -
    193  void setTemp(const float temp, const bool useCelsius = true);
    -
    194  float getTemp(void) const;
    -
    195  void setFanSpeed(const uint8_t fan);
    -
    196  uint8_t getFanSpeed(void) const;
    -
    197  void setMode(const uint8_t mode);
    -
    198  uint8_t getMode(void) const;
    -
    199  void setSwing(const uint8_t mode);
    -
    200  uint8_t getSwing(void) const;
    -
    201  uint8_t* getRaw(void);
    -
    202  bool setRaw(const uint8_t newState[], const uint16_t length);
    -
    203  uint8_t getStateLength(void);
    -
    204  static bool validChecksum(uint8_t* state, const uint16_t length);
    -
    205  void setPower(const bool on);
    -
    206  void off(void);
    -
    207  void on(void);
    -
    208  bool getPower(void) const;
    -
    209  void setClean(const bool on);
    -
    210  bool getClean(void) const;
    -
    211  void setFilter(const bool on);
    -
    212  bool getFilter(void) const;
    -
    213  void set10CHeat(const bool on);
    -
    214  bool get10CHeat(void) const;
    -
    215  void setOutsideQuiet(const bool on);
    -
    216  bool getOutsideQuiet(void) const;
    -
    217  uint8_t getTimerType(void) const;
    -
    218  void setTimerType(const uint8_t timertype);
    -
    219  uint16_t getOnTimer(void) const;
    -
    220  void setOnTimer(const uint16_t nr_mins);
    -
    221  uint16_t getOffSleepTimer(void) const;
    -
    222  void setOffTimer(const uint16_t nr_mins);
    -
    223  void setSleepTimer(const uint16_t nr_mins);
    -
    224  void setId(const uint8_t num);
    -
    225  uint8_t getId(void) const;
    -
    226  void setCelsius(const bool on);
    -
    227  bool getCelsius(void) const;
    -
    228  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    229  static uint8_t convertFan(stdAc::fanspeed_t speed);
    -
    230  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    231  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    232  stdAc::state_t toCommon(void) const;
    -
    233  String toString(void) const;
    -
    234 #ifndef UNIT_TEST
    -
    235 
    -
    236  private:
    - -
    238 #else
    -
    239  IRsendTest _irsend;
    -
    241 #endif
    - -
    244  uint8_t _cmd;
    - -
    246  uint8_t _state_length;
    - -
    248  void checkSum(void);
    -
    249  bool updateUseLongOrShort(void);
    -
    250  void buildFromState(const uint16_t length);
    -
    251  void setOffSleepTimer(const uint16_t nr_mins);
    -
    252 };
    -
    253 
    -
    254 #endif // IR_FUJITSU_H_
    -
    -
    uint64_t OffTimerEnable
    Definition: ir_Fujitsu.h:89
    -
    void setOnTimer(const uint16_t nr_mins)
    Set the On Timer setting of the A/C.
    Definition: ir_Fujitsu.cpp:635
    -
    float getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Fujitsu.cpp:469
    -
    const uint8_t kFujitsuAcCmdTurnOff
    Definition: ir_Fujitsu.h:113
    -
    uint16_t getOnTimer(void) const
    Get the On Timer setting of the A/C.
    Definition: ir_Fujitsu.cpp:627
    -
    const float kFujitsuAcMinTemp
    Definition: ir_Fujitsu.h:127
    -
    const uint16_t kFujitsuAcMinRepeat
    Definition: IRremoteESP8266.h:1004
    -
    void set10CHeat(const bool on)
    Set the 10C heat status of the A/C.
    Definition: ir_Fujitsu.cpp:572
    -
    uint8_t _cmd
    Definition: ir_Fujitsu.h:244
    -
    uint64_t Id
    Definition: ir_Fujitsu.h:63
    -
    uint8_t getCmd(void) const
    Set the requested (special) command part for the A/C message.
    Definition: ir_Fujitsu.cpp:384
    -
    uint8_t getTimerType(void) const
    Get the Timer type of the A/C message.
    Definition: ir_Fujitsu.cpp:601
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Fujitsu.h:184
    -
    void setClean(const bool on)
    Set the Clean mode of the A/C.
    Definition: ir_Fujitsu.cpp:540
    -
    uint8_t getFanSpeed(void) const
    Get the current fan speed setting.
    Definition: ir_Fujitsu.cpp:492
    -
    const uint8_t kFujitsuAcCmdToggleSwingVert
    Definition: ir_Fujitsu.h:117
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Fujitsu.cpp:240
    -
    void setTimerType(const uint8_t timertype)
    Set the Timer type of the A/C message.
    Definition: ir_Fujitsu.cpp:613
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Fujitsu.cpp:506
    - -
    void stepVert(void)
    Request the A/C to step the Vertical Swing.
    Definition: ir_Fujitsu.cpp:331
    -
    const float kFujitsuAcMinTempF
    Definition: ir_Fujitsu.h:130
    -
    void setCelsius(const bool on)
    Set the Temperature units for the A/C.
    Definition: ir_Fujitsu.cpp:717
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Fujitsu.cpp:726
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Fujitsu.cpp:101
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint64_t TimerType
    Definition: ir_Fujitsu.h:80
    -
    uint64_t Power
    Definition: ir_Fujitsu.h:74
    -
    uint8_t getSwing(void) const
    Get the requested swing operation mode of the A/C unit.
    Definition: ir_Fujitsu.cpp:534
    -
    uint64_t Fan
    Definition: ir_Fujitsu.h:83
    -
    const uint8_t kFujitsuAcFanAuto
    Definition: ir_Fujitsu.h:121
    -
    bool setRaw(const uint8_t newState[], const uint16_t length)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Fujitsu.cpp:306
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint64_t OutsideQuiet
    Definition: ir_Fujitsu.h:98
    -
    bool getOutsideQuiet(void) const
    Get the Outside Quiet mode status of the A/C.
    Definition: ir_Fujitsu.cpp:413
    -
    bool updateUseLongOrShort(void)
    Update the length (size) of the state code for the current configuration.
    Definition: ir_Fujitsu.cpp:134
    -
    Native representation of a Fujitsu A/C message.
    Definition: ir_Fujitsu.h:53
    -
    const uint8_t kFujitsuAcCmdTurnOn
    Definition: ir_Fujitsu.h:112
    -
    uint8_t _state_length_short
    Definition: ir_Fujitsu.h:247
    -
    bool getClean(void) const
    Get the Clean mode status of the A/C.
    Definition: ir_Fujitsu.cpp:547
    -
    const uint8_t kFujitsuAcFanHigh
    Definition: ir_Fujitsu.h:122
    -
    uint64_t Swing
    Definition: ir_Fujitsu.h:85
    -
    const float kFujitsuAcMaxTemp
    Definition: ir_Fujitsu.h:128
    -
    uint64_t OffTimer
    Definition: ir_Fujitsu.h:88
    -
    const uint8_t kFujitsuAcModeHeat
    Definition: ir_Fujitsu.h:109
    -
    void setFilter(const bool on)
    Set the Filter mode status of the A/C.
    Definition: ir_Fujitsu.cpp:556
    -
    static uint8_t convertFan(stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Fujitsu.cpp:739
    - -
    uint64_t Fahrenheit
    Definition: ir_Fujitsu.h:75
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Fujitsu.cpp:402
    -
    FujitsuProtocol _
    Definition: ir_Fujitsu.h:243
    -
    void stepHoriz(void)
    Request the A/C to step the Horizontal Swing.
    Definition: ir_Fujitsu.cpp:319
    -
    const uint8_t kFujitsuAcCmdToggleSwingHoriz
    Definition: ir_Fujitsu.h:119
    -
    uint64_t Protocol
    Definition: ir_Fujitsu.h:72
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Fujitsu.h:237
    -
    uint64_t OnTimerEnable
    Definition: ir_Fujitsu.h:91
    -
    fujitsu_ac_remote_model_t
    Fujitsu A/C model numbers.
    Definition: IRsend.h:120
    -
    const uint8_t kFujitsuAcStopTimers
    Definition: ir_Fujitsu.h:139
    -
    void setCmd(const uint8_t cmd)
    Set the requested (special) command part for the A/C message.
    Definition: ir_Fujitsu.cpp:344
    -
    void setOffTimer(const uint16_t nr_mins)
    Set the Off Timer time for the A/C.
    Definition: ir_Fujitsu.cpp:664
    -
    void buildFromState(const uint16_t length)
    Build the internal state/config from the current (raw) A/C message.
    Definition: ir_Fujitsu.cpp:249
    -
    uint64_t OnTimer
    Definition: ir_Fujitsu.h:90
    -
    uint64_t Mode
    Definition: ir_Fujitsu.h:78
    -
    uint64_t Cmd
    Definition: ir_Fujitsu.h:68
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Fujitsu.cpp:122
    -
    void setTemp(const float temp, const bool useCelsius=true)
    Set the temperature.
    Definition: ir_Fujitsu.cpp:426
    -
    void setId(const uint8_t num)
    Set the device's remote ID number.
    Definition: ir_Fujitsu.cpp:709
    -
    const uint16_t kFujitsuAcStateLengthShort
    Definition: IRremoteESP8266.h:1006
    -
    Class for handling detailed Fujitsu A/C messages.
    Definition: ir_Fujitsu.h:169
    -
    const uint8_t kFujitsuAcCmdStepVert
    Definition: ir_Fujitsu.h:116
    -
    void setSwing(const uint8_t mode)
    Set the requested swing operation mode of the A/C unit.
    Definition: ir_Fujitsu.cpp:512
    -
    const uint16_t kFujitsuAcStateLength
    Definition: IRremoteESP8266.h:1005
    -
    const uint8_t kFujitsuAcCmdPowerful
    Definition: ir_Fujitsu.h:115
    -
    uint64_t Temp
    Definition: ir_Fujitsu.h:76
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Fujitsu.cpp:753
    -
    bool getCelsius(void) const
    Get the Clean mode status of the A/C.
    Definition: ir_Fujitsu.cpp:721
    -
    const uint8_t kFujitsuAcCmdStepHoriz
    Definition: ir_Fujitsu.h:118
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Fujitsu.cpp:496
    -
    const uint8_t kFujitsuAcSwingHoriz
    Definition: ir_Fujitsu.h:136
    -
    const uint8_t kFujitsuAcSwingVert
    Definition: ir_Fujitsu.h:135
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Fujitsu.cpp:766
    -
    bool getFilter(void) const
    Get the Filter mode status of the A/C.
    Definition: ir_Fujitsu.cpp:563
    -
    void toggleSwingVert(const bool update=true)
    Request the A/C to toggle the Vertical Swing mode.
    Definition: ir_Fujitsu.cpp:335
    -
    bool get10CHeat(void) const
    Get the 10C heat status of the A/C.
    Definition: ir_Fujitsu.cpp:590
    - -
    const float kFujitsuAcMaxTempF
    Definition: ir_Fujitsu.h:131
    -
    uint64_t Clean
    Definition: ir_Fujitsu.h:79
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Fujitsu.cpp:821
    -
    uint8_t getId(void) const
    Get the current device's remote ID number.
    Definition: ir_Fujitsu.cpp:713
    -
    const uint8_t kFujitsuAcModeAuto
    Definition: ir_Fujitsu.h:105
    -
    void setOutsideQuiet(const bool on)
    Set the Outside Quiet mode of the A/C.
    Definition: ir_Fujitsu.cpp:406
    -
    uint8_t shortcode[kFujitsuAcStateLengthShort]
    Definition: ir_Fujitsu.h:56
    -
    const uint8_t kFujitsuAcSwingOff
    Definition: ir_Fujitsu.h:134
    -
    void setModel(const fujitsu_ac_remote_model_t model)
    Set the currently emulated model of the A/C.
    Definition: ir_Fujitsu.cpp:79
    -
    const uint8_t kFujitsuAcModeDry
    Definition: ir_Fujitsu.h:107
    -
    @ ARRAH2E
    (1) AR-RAH2E, AR-RAC1E, AR-RAE1E, AR-RCE1E (Default) Warning: Use on incorrect models can cause the A...
    Definition: IRsend.h:121
    -
    const uint8_t kFujitsuAcSleepTimer
    Definition: ir_Fujitsu.h:140
    -
    uint8_t getStateLength(void)
    Get the length (size) of the state code for the current configuration.
    Definition: ir_Fujitsu.cpp:234
    -
    const uint8_t kFujitsuAcTempOffsetC
    Definition: ir_Fujitsu.h:129
    -
    const uint8_t kFujitsuAcFanMed
    Definition: ir_Fujitsu.h:123
    -
    IRFujitsuAC(const uint16_t pin, const fujitsu_ac_remote_model_t model=ARRAH2E, const bool inverted=false, const bool use_modulation=true)
    Class Constructor.
    Definition: ir_Fujitsu.cpp:69
    -
    void setSleepTimer(const uint16_t nr_mins)
    Set the Sleep Timer time for the A/C.
    Definition: ir_Fujitsu.cpp:674
    -
    const uint8_t kFujitsuAcTempOffsetF
    Definition: ir_Fujitsu.h:132
    -
    const uint8_t kFujitsuAcSwingBoth
    Definition: ir_Fujitsu.h:137
    -
    fujitsu_ac_remote_model_t _model
    Definition: ir_Fujitsu.h:245
    -
    uint64_t Filter
    Definition: ir_Fujitsu.h:94
    -
    const uint8_t kFujitsuAcCmdStayOn
    Definition: ir_Fujitsu.h:111
    -
    uint64_t unknown
    Definition: ir_Fujitsu.h:96
    -
    fujitsu_ac_remote_model_t getModel(void) const
    Get the currently emulated/detected model of the A/C.
    Definition: ir_Fujitsu.cpp:98
    -
    const uint8_t kFujitsuAcOnTimer
    Definition: ir_Fujitsu.h:142
    -
    void setFanSpeed(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Fujitsu.cpp:482
    -
    const uint8_t kFujitsuAcOffTimer
    Definition: ir_Fujitsu.h:141
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Fujitsu.cpp:395
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Fujitsu.cpp:390
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Fujitsu.cpp:398
    -
    void send(const uint16_t repeat=kFujitsuAcMinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Fujitsu.cpp:127
    -
    void setOffSleepTimer(const uint16_t nr_mins)
    Set the Off/Sleep Timer time for the A/C.
    Definition: ir_Fujitsu.cpp:658
    -
    void checkSum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Fujitsu.cpp:166
    -
    static bool validChecksum(uint8_t *state, const uint16_t length)
    Verify the checksum is valid for a given state.
    Definition: ir_Fujitsu.cpp:686
    -
    uint16_t getOffSleepTimer(void) const
    Get the Off/Sleep Timer setting of the A/C.
    Definition: ir_Fujitsu.cpp:646
    -
    uint8_t _state_length
    Definition: ir_Fujitsu.h:246
    -
    const uint16_t kFujitsuAcTimerMax
    Minutes.
    Definition: ir_Fujitsu.h:143
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Fujitsu.cpp:778
    -
    void toggleSwingHoriz(const bool update=true)
    Request the A/C to toggle the Horizontal Swing mode.
    Definition: ir_Fujitsu.cpp:323
    -
    const uint8_t kFujitsuAcModeFan
    Definition: ir_Fujitsu.h:108
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kFujitsuAcCmdEcono
    Definition: ir_Fujitsu.h:114
    -
    const uint8_t kFujitsuAcFanQuiet
    Definition: ir_Fujitsu.h:125
    -
    uint64_t RestLength
    Definition: ir_Fujitsu.h:70
    -
    uint8_t longcode[kFujitsuAcStateLength]
    The state of the IR remote.
    Definition: ir_Fujitsu.h:55
    -
    const uint8_t kFujitsuAcFanLow
    Definition: ir_Fujitsu.h:124
    -
    const uint8_t kFujitsuAcModeCool
    Definition: ir_Fujitsu.h:106
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GICable_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GICable_8cpp.html deleted file mode 100644 index 7fa337dc2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GICable_8cpp.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_GICable.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_GICable.cpp File Reference
    -
    -
    - -

    G.I. Cable. -More...

    - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kGicableHdrMark = 9000
     
    const uint16_t kGicableHdrSpace = 4400
     
    const uint16_t kGicableBitMark = 550
     
    const uint16_t kGicableOneSpace = 4400
     
    const uint16_t kGicableZeroSpace = 2200
     
    const uint16_t kGicableRptSpace = 2200
     
    const uint32_t kGicableMinCommandLength = 99600
     
    const uint32_t kGicableMinGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kGicableBitMark

    - -
    -
    - - - - -
    const uint16_t kGicableBitMark = 550
    -
    - -
    -
    - -

    ◆ kGicableHdrMark

    - -
    -
    - - - - -
    const uint16_t kGicableHdrMark = 9000
    -
    - -
    -
    - -

    ◆ kGicableHdrSpace

    - -
    -
    - - - - -
    const uint16_t kGicableHdrSpace = 4400
    -
    - -
    -
    - -

    ◆ kGicableMinCommandLength

    - -
    -
    - - - - -
    const uint32_t kGicableMinCommandLength = 99600
    -
    - -
    -
    - -

    ◆ kGicableMinGap

    - -
    -
    - - - - -
    const uint32_t kGicableMinGap
    -
    -
    - -

    ◆ kGicableOneSpace

    - -
    -
    - - - - -
    const uint16_t kGicableOneSpace = 4400
    -
    - -
    -
    - -

    ◆ kGicableRptSpace

    - -
    -
    - - - - -
    const uint16_t kGicableRptSpace = 2200
    -
    - -
    -
    - -

    ◆ kGicableZeroSpace

    - -
    -
    - - - - -
    const uint16_t kGicableZeroSpace = 2200
    -
    - -
    -
    -
    -
    const uint16_t kGicableHdrSpace
    Definition: ir_GICable.cpp:20
    -
    const uint16_t kGicableBits
    Definition: IRremoteESP8266.h:1009
    -
    const uint16_t kGicableOneSpace
    Definition: ir_GICable.cpp:22
    -
    const uint32_t kGicableMinCommandLength
    Definition: ir_GICable.cpp:25
    -
    const uint16_t kGicableBitMark
    Definition: ir_GICable.cpp:21
    -
    const uint16_t kGicableHdrMark
    Definition: ir_GICable.cpp:19
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GlobalCache_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GlobalCache_8cpp.html deleted file mode 100644 index 7ff602faf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__GlobalCache_8cpp.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_GlobalCache.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_GlobalCache.cpp File Reference
    -
    -
    - -

    Global Cache IR format sender Originally added by Hisham Khalifa (http://www.hishamkhalifa.com) -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kGlobalCacheMaxRepeat = 50
     
    const uint32_t kGlobalCacheMinUsec = 80
     
    const uint8_t kGlobalCacheFreqIndex = 0
     
    const uint8_t kGlobalCacheRptIndex = kGlobalCacheFreqIndex + 1
     
    const uint8_t kGlobalCacheRptStartIndex = kGlobalCacheRptIndex + 1
     
    const uint8_t kGlobalCacheStartIndex = kGlobalCacheRptStartIndex + 1
     
    -

    Detailed Description

    -

    Global Cache IR format sender Originally added by Hisham Khalifa (http://www.hishamkhalifa.com)

    -
    See also
    https://irdb.globalcache.com/Home/Database
    -

    Variable Documentation

    - -

    ◆ kGlobalCacheFreqIndex

    - -
    -
    - - - - -
    const uint8_t kGlobalCacheFreqIndex = 0
    -
    - -
    -
    - -

    ◆ kGlobalCacheMaxRepeat

    - -
    -
    - - - - -
    const uint16_t kGlobalCacheMaxRepeat = 50
    -
    - -
    -
    - -

    ◆ kGlobalCacheMinUsec

    - -
    -
    - - - - -
    const uint32_t kGlobalCacheMinUsec = 80
    -
    - -
    -
    - -

    ◆ kGlobalCacheRptIndex

    - -
    -
    - - - - -
    const uint8_t kGlobalCacheRptIndex = kGlobalCacheFreqIndex + 1
    -
    - -
    -
    - -

    ◆ kGlobalCacheRptStartIndex

    - -
    -
    - - - - -
    const uint8_t kGlobalCacheRptStartIndex = kGlobalCacheRptIndex + 1
    -
    - -
    -
    - -

    ◆ kGlobalCacheStartIndex

    - -
    -
    - - - - -
    const uint8_t kGlobalCacheStartIndex = kGlobalCacheRptStartIndex + 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8cpp.html deleted file mode 100644 index 62188cc57..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8cpp.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Goodweather.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Goodweather.cpp File Reference
    -
    -
    - -

    Support for Goodweather compatible HVAC protocols. -More...

    -

    Detailed Description

    -

    Support for Goodweather compatible HVAC protocols.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/697
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h.html deleted file mode 100644 index 9f82cf82c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h.html +++ /dev/null @@ -1,633 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Goodweather.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Goodweather.h File Reference
    -
    -
    - -

    Support for Goodweather compatible HVAC protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  GoodweatherProtocol
     Native representation of a Goodweather A/C message. More...
     
    class  IRGoodweatherAc
     Class for handling detailed Goodweather A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kGoodweatherBitMark = 580
     
    const uint16_t kGoodweatherOneSpace = 580
     
    const uint16_t kGoodweatherZeroSpace = 1860
     
    const uint16_t kGoodweatherHdrMark = 6820
     
    const uint16_t kGoodweatherHdrSpace = 6820
     
    const uint8_t kGoodweatherExtraTolerance = 12
     
    const uint8_t kGoodweatherAuto = 0b000
     
    const uint8_t kGoodweatherCool = 0b001
     
    const uint8_t kGoodweatherDry = 0b010
     
    const uint8_t kGoodweatherFan = 0b011
     
    const uint8_t kGoodweatherHeat = 0b100
     
    const uint8_t kGoodweatherSwingFast = 0b00
     
    const uint8_t kGoodweatherSwingSlow = 0b01
     
    const uint8_t kGoodweatherSwingOff = 0b10
     
    const uint8_t kGoodweatherFanAuto = 0b00
     
    const uint8_t kGoodweatherFanHigh = 0b01
     
    const uint8_t kGoodweatherFanMed = 0b10
     
    const uint8_t kGoodweatherFanLow = 0b11
     
    const uint8_t kGoodweatherTempMin = 16
     
    const uint8_t kGoodweatherTempMax = 31
     
    const uint8_t kGoodweatherCmdPower = 0x00
     
    const uint8_t kGoodweatherCmdMode = 0x01
     
    const uint8_t kGoodweatherCmdUpTemp = 0x02
     
    const uint8_t kGoodweatherCmdDownTemp = 0x03
     
    const uint8_t kGoodweatherCmdSwing = 0x04
     
    const uint8_t kGoodweatherCmdFan = 0x05
     
    const uint8_t kGoodweatherCmdTimer = 0x06
     
    const uint8_t kGoodweatherCmdAirFlow = 0x07
     
    const uint8_t kGoodweatherCmdHold = 0x08
     
    const uint8_t kGoodweatherCmdSleep = 0x09
     
    const uint8_t kGoodweatherCmdTurbo = 0x0A
     
    const uint8_t kGoodweatherCmdLight = 0x0B
     
    const uint64_t kGoodweatherStateInit = 0xD50000000000
     
    -

    Detailed Description

    -

    Support for Goodweather compatible HVAC protocols.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/697
    -

    Variable Documentation

    - -

    ◆ kGoodweatherAuto

    - -
    -
    - - - - -
    const uint8_t kGoodweatherAuto = 0b000
    -
    - -
    -
    - -

    ◆ kGoodweatherBitMark

    - -
    -
    - - - - -
    const uint16_t kGoodweatherBitMark = 580
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdAirFlow

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdAirFlow = 0x07
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdDownTemp

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdDownTemp = 0x03
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdFan

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdFan = 0x05
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdHold

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdHold = 0x08
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdLight

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdLight = 0x0B
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdMode

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdMode = 0x01
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdPower

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdPower = 0x00
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdSleep

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdSleep = 0x09
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdSwing

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdSwing = 0x04
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdTimer

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdTimer = 0x06
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdTurbo

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdTurbo = 0x0A
    -
    - -
    -
    - -

    ◆ kGoodweatherCmdUpTemp

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCmdUpTemp = 0x02
    -
    - -
    -
    - -

    ◆ kGoodweatherCool

    - -
    -
    - - - - -
    const uint8_t kGoodweatherCool = 0b001
    -
    - -
    -
    - -

    ◆ kGoodweatherDry

    - -
    -
    - - - - -
    const uint8_t kGoodweatherDry = 0b010
    -
    - -
    -
    - -

    ◆ kGoodweatherExtraTolerance

    - -
    -
    - - - - -
    const uint8_t kGoodweatherExtraTolerance = 12
    -
    - -
    -
    - -

    ◆ kGoodweatherFan

    - -
    -
    - - - - -
    const uint8_t kGoodweatherFan = 0b011
    -
    - -
    -
    - -

    ◆ kGoodweatherFanAuto

    - -
    -
    - - - - -
    const uint8_t kGoodweatherFanAuto = 0b00
    -
    - -
    -
    - -

    ◆ kGoodweatherFanHigh

    - -
    -
    - - - - -
    const uint8_t kGoodweatherFanHigh = 0b01
    -
    - -
    -
    - -

    ◆ kGoodweatherFanLow

    - -
    -
    - - - - -
    const uint8_t kGoodweatherFanLow = 0b11
    -
    - -
    -
    - -

    ◆ kGoodweatherFanMed

    - -
    -
    - - - - -
    const uint8_t kGoodweatherFanMed = 0b10
    -
    - -
    -
    - -

    ◆ kGoodweatherHdrMark

    - -
    -
    - - - - -
    const uint16_t kGoodweatherHdrMark = 6820
    -
    - -
    -
    - -

    ◆ kGoodweatherHdrSpace

    - -
    -
    - - - - -
    const uint16_t kGoodweatherHdrSpace = 6820
    -
    - -
    -
    - -

    ◆ kGoodweatherHeat

    - -
    -
    - - - - -
    const uint8_t kGoodweatherHeat = 0b100
    -
    - -
    -
    - -

    ◆ kGoodweatherOneSpace

    - -
    -
    - - - - -
    const uint16_t kGoodweatherOneSpace = 580
    -
    - -
    -
    - -

    ◆ kGoodweatherStateInit

    - -
    -
    - - - - -
    const uint64_t kGoodweatherStateInit = 0xD50000000000
    -
    - -
    -
    - -

    ◆ kGoodweatherSwingFast

    - -
    -
    - - - - -
    const uint8_t kGoodweatherSwingFast = 0b00
    -
    - -
    -
    - -

    ◆ kGoodweatherSwingOff

    - -
    -
    - - - - -
    const uint8_t kGoodweatherSwingOff = 0b10
    -
    - -
    -
    - -

    ◆ kGoodweatherSwingSlow

    - -
    -
    - - - - -
    const uint8_t kGoodweatherSwingSlow = 0b01
    -
    - -
    -
    - -

    ◆ kGoodweatherTempMax

    - -
    -
    - - - - -
    const uint8_t kGoodweatherTempMax = 31
    -
    - -
    -
    - -

    ◆ kGoodweatherTempMin

    - -
    -
    - - - - -
    const uint8_t kGoodweatherTempMin = 16
    -
    - -
    -
    - -

    ◆ kGoodweatherZeroSpace

    - -
    -
    - - - - -
    const uint16_t kGoodweatherZeroSpace = 1860
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h_source.html deleted file mode 100644 index 2c362bc2e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Goodweather_8h_source.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Goodweather.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Goodweather.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 ribeirodanielf
    -
    2 // Copyright 2019 David Conran
    -
    3 
    -
    7 
    -
    8 // Supports:
    -
    9 // Brand: Goodweather, Model: ZH/JT-03 remote
    -
    10 
    -
    11 #ifndef IR_GOODWEATHER_H_
    -
    12 #define IR_GOODWEATHER_H_
    -
    13 
    -
    14 #define __STDC_LIMIT_MACROS
    -
    15 #include <stdint.h>
    -
    16 #ifndef UNIT_TEST
    -
    17 #include <Arduino.h>
    -
    18 #endif
    -
    19 #include "IRremoteESP8266.h"
    -
    20 #include "IRsend.h"
    -
    21 #ifdef UNIT_TEST
    -
    22 #include "IRsend_test.h"
    -
    23 #endif
    -
    24 
    - -
    27  uint64_t raw;
    -
    28  struct {
    -
    29  // Byte 0
    -
    30  uint8_t :8;
    -
    31  // Byte 1
    -
    32  uint8_t Light :1;
    -
    33  uint8_t :2;
    -
    34  uint8_t Turbo :1;
    -
    35  uint8_t :0;
    -
    36  // Byte 2
    -
    37  uint8_t Command :4;
    -
    38  uint8_t :0;
    -
    39  // Byte 3
    -
    40  uint8_t Sleep :1;
    -
    41  uint8_t Power :1;
    -
    42  uint8_t Swing :2;
    -
    43  uint8_t AirFlow :1;
    -
    44  uint8_t Fan :2;
    -
    45  uint8_t :0;
    -
    46  // Byte 4
    -
    47  uint8_t Temp :4;
    -
    48  uint8_t :1;
    -
    49  uint8_t Mode :3;
    -
    50  uint8_t :0;
    -
    51  };
    -
    52 };
    -
    53 
    -
    54 // Constants
    -
    55 // Timing
    -
    56 const uint16_t kGoodweatherBitMark = 580;
    -
    57 const uint16_t kGoodweatherOneSpace = 580;
    -
    58 const uint16_t kGoodweatherZeroSpace = 1860;
    -
    59 const uint16_t kGoodweatherHdrMark = 6820;
    -
    60 const uint16_t kGoodweatherHdrSpace = 6820;
    -
    61 const uint8_t kGoodweatherExtraTolerance = 12; // +12% extra
    -
    62 
    -
    63 // Modes
    -
    64 const uint8_t kGoodweatherAuto = 0b000;
    -
    65 const uint8_t kGoodweatherCool = 0b001;
    -
    66 const uint8_t kGoodweatherDry = 0b010;
    -
    67 const uint8_t kGoodweatherFan = 0b011;
    -
    68 const uint8_t kGoodweatherHeat = 0b100;
    -
    69 // Swing
    -
    70 const uint8_t kGoodweatherSwingFast = 0b00;
    -
    71 const uint8_t kGoodweatherSwingSlow = 0b01;
    -
    72 const uint8_t kGoodweatherSwingOff = 0b10;
    -
    73 // Fan Control
    -
    74 const uint8_t kGoodweatherFanAuto = 0b00;
    -
    75 const uint8_t kGoodweatherFanHigh = 0b01;
    -
    76 const uint8_t kGoodweatherFanMed = 0b10;
    -
    77 const uint8_t kGoodweatherFanLow = 0b11;
    -
    78 // Temperature
    -
    79 const uint8_t kGoodweatherTempMin = 16; // Celsius
    -
    80 const uint8_t kGoodweatherTempMax = 31; // Celsius
    -
    81 // Commands
    -
    82 const uint8_t kGoodweatherCmdPower = 0x00;
    -
    83 const uint8_t kGoodweatherCmdMode = 0x01;
    -
    84 const uint8_t kGoodweatherCmdUpTemp = 0x02;
    -
    85 const uint8_t kGoodweatherCmdDownTemp = 0x03;
    -
    86 const uint8_t kGoodweatherCmdSwing = 0x04;
    -
    87 const uint8_t kGoodweatherCmdFan = 0x05;
    -
    88 const uint8_t kGoodweatherCmdTimer = 0x06;
    -
    89 const uint8_t kGoodweatherCmdAirFlow = 0x07;
    -
    90 const uint8_t kGoodweatherCmdHold = 0x08;
    -
    91 const uint8_t kGoodweatherCmdSleep = 0x09;
    -
    92 const uint8_t kGoodweatherCmdTurbo = 0x0A;
    -
    93 const uint8_t kGoodweatherCmdLight = 0x0B;
    -
    94 // PAD EOF
    -
    95 const uint64_t kGoodweatherStateInit = 0xD50000000000;
    -
    96 
    -
    97 
    -
    98 // Classes
    - -
    101  public:
    -
    102  explicit IRGoodweatherAc(const uint16_t pin, const bool inverted = false,
    -
    103  const bool use_modulation = true);
    -
    104  void stateReset(void);
    -
    105 #if SEND_GOODWEATHER
    -
    106  void send(const uint16_t repeat = kGoodweatherMinRepeat);
    -
    111  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    112 #endif // SEND_GOODWEATHER
    -
    113  void begin(void);
    -
    114  void on(void);
    -
    115  void off(void);
    -
    116  void setPower(const bool on);
    -
    117  bool getPower(void) const;
    -
    118  void setTemp(const uint8_t temp);
    -
    119  uint8_t getTemp(void) const;
    -
    120  void setFan(const uint8_t speed);
    -
    121  uint8_t getFan(void) const;
    -
    122  void setMode(const uint8_t mode);
    -
    123  uint8_t getMode(void) const;
    -
    124  void setSwing(const uint8_t speed);
    -
    125  uint8_t getSwing(void) const;
    -
    126  void setSleep(const bool toggle);
    -
    127  bool getSleep(void) const;
    -
    128  void setTurbo(const bool toggle);
    -
    129  bool getTurbo(void) const;
    -
    130  void setLight(const bool toggle);
    -
    131  bool getLight(void) const;
    -
    132  void setCommand(const uint8_t cmd);
    -
    133  uint8_t getCommand(void) const;
    -
    134  uint64_t getRaw(void);
    -
    135  void setRaw(const uint64_t state);
    -
    136  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    137  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    138  static uint8_t convertSwingV(const stdAc::swingv_t swingv);
    -
    139  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    140  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    141  stdAc::state_t toCommon(void) const;
    -
    142  String toString(void) const;
    -
    143 #ifndef UNIT_TEST
    -
    144 
    -
    145  private:
    - -
    147 #else // UNIT_TEST
    -
    148  IRsendTest _irsend;
    -
    150 #endif // UNIT_TEST
    - -
    153 };
    -
    154 #endif // IR_GOODWEATHER_H_
    -
    -
    const uint8_t kGoodweatherCmdLight
    Definition: ir_Goodweather.h:93
    -
    uint8_t Power
    Definition: ir_Goodweather.h:41
    -
    const uint8_t kGoodweatherCmdDownTemp
    Definition: ir_Goodweather.h:85
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Goodweather.cpp:94
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Goodweather.cpp:91
    -
    const uint16_t kGoodweatherOneSpace
    Definition: ir_Goodweather.h:57
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Goodweather.cpp:69
    -
    uint8_t Sleep
    Definition: ir_Goodweather.h:40
    -
    const uint8_t kGoodweatherTempMin
    Definition: ir_Goodweather.h:79
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Goodweather.h:146
    -
    const uint8_t kGoodweatherCmdPower
    Definition: ir_Goodweather.h:82
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    const uint8_t kGoodweatherCmdAirFlow
    Definition: ir_Goodweather.h:89
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Goodweather.cpp:143
    -
    Native representation of a Goodweather A/C message.
    Definition: ir_Goodweather.h:26
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    bool getLight(void) const
    Get the Light (LED) Toggle setting of the A/C.
    Definition: ir_Goodweather.cpp:179
    -
    void setTurbo(const bool toggle)
    Set the Turbo Toggle setting of the A/C.
    Definition: ir_Goodweather.cpp:198
    -
    void setLight(const bool toggle)
    Set the Light (LED) Toggle setting of the A/C.
    Definition: ir_Goodweather.cpp:172
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Goodweather.cpp:121
    - -
    const uint8_t kGoodweatherCmdSwing
    Definition: ir_Goodweather.h:86
    -
    const uint8_t kGoodweatherFanMed
    Definition: ir_Goodweather.h:76
    -
    static uint8_t convertSwingV(const stdAc::swingv_t swingv)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Goodweather.cpp:273
    -
    const uint8_t kGoodweatherCmdUpTemp
    Definition: ir_Goodweather.h:84
    -
    const uint16_t kGoodweatherHdrSpace
    Definition: ir_Goodweather.h:60
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Goodweather.h:111
    -
    uint8_t Turbo
    Definition: ir_Goodweather.h:34
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kGoodweatherFanAuto
    Definition: ir_Goodweather.h:74
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    IRGoodweatherAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Goodweather.cpp:64
    -
    const uint16_t kGoodweatherZeroSpace
    Definition: ir_Goodweather.h:58
    -
    void setRaw(const uint64_t state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Goodweather.cpp:88
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Goodweather.cpp:166
    -
    uint8_t Swing
    Definition: ir_Goodweather.h:42
    -
    const uint8_t kGoodweatherAuto
    Definition: ir_Goodweather.h:64
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    void send(const uint16_t repeat=kGoodweatherMinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Goodweather.cpp:77
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Goodweather.cpp:288
    -
    const uint8_t kGoodweatherExtraTolerance
    Definition: ir_Goodweather.h:61
    -
    uint8_t getCommand(void) const
    Get the Command type/button pressed from the current settings.
    Definition: ir_Goodweather.cpp:239
    -
    const uint8_t kGoodweatherSwingSlow
    Definition: ir_Goodweather.h:71
    - -
    const uint8_t kGoodweatherSwingOff
    Definition: ir_Goodweather.h:72
    -
    const uint8_t kGoodweatherDry
    Definition: ir_Goodweather.h:66
    -
    uint8_t getSwing(void) const
    Get the Vertical Swing speed of the A/C.
    Definition: ir_Goodweather.cpp:226
    -
    const uint8_t kGoodweatherSwingFast
    Definition: ir_Goodweather.h:70
    -
    const uint8_t kGoodweatherCmdSleep
    Definition: ir_Goodweather.h:91
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Goodweather.cpp:312
    -
    const uint8_t kGoodweatherCool
    Definition: ir_Goodweather.h:65
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Goodweather.cpp:111
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Goodweather.cpp:72
    -
    const uint8_t kGoodweatherCmdFan
    Definition: ir_Goodweather.h:87
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Goodweather.cpp:105
    -
    const uint8_t kGoodweatherCmdHold
    Definition: ir_Goodweather.h:90
    -
    uint8_t Mode
    Definition: ir_Goodweather.h:49
    -
    void setSwing(const uint8_t speed)
    Set the Vertical Swing speed of the A/C.
    Definition: ir_Goodweather.cpp:211
    -
    const uint8_t kGoodweatherFan
    Definition: ir_Goodweather.h:67
    -
    const uint8_t kGoodweatherCmdTurbo
    Definition: ir_Goodweather.h:92
    -
    void setCommand(const uint8_t cmd)
    Set the remote Command type/button pressed.
    Definition: ir_Goodweather.cpp:232
    -
    uint8_t Light
    Definition: ir_Goodweather.h:32
    -
    uint8_t Command
    Definition: ir_Goodweather.h:37
    -
    const uint64_t kGoodweatherStateInit
    Definition: ir_Goodweather.h:95
    -
    const uint8_t kGoodweatherCmdTimer
    Definition: ir_Goodweather.h:88
    -
    uint8_t Temp
    Definition: ir_Goodweather.h:47
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Goodweather.cpp:149
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Goodweather.cpp:339
    -
    bool getTurbo(void) const
    Get the Turbo Toggle setting of the A/C.
    Definition: ir_Goodweather.cpp:205
    -
    const uint8_t kGoodweatherTempMax
    Definition: ir_Goodweather.h:80
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Goodweather.cpp:301
    -
    const uint8_t kGoodweatherFanLow
    Definition: ir_Goodweather.h:77
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Goodweather.cpp:127
    -
    const uint8_t kGoodweatherHeat
    Definition: ir_Goodweather.h:68
    -
    const uint16_t kGoodweatherBitMark
    Definition: ir_Goodweather.h:56
    -
    bool getSleep(void) const
    Get the Sleep Toggle setting of the A/C.
    Definition: ir_Goodweather.cpp:192
    -
    const uint8_t kGoodweatherFanHigh
    Definition: ir_Goodweather.h:75
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Goodweather.cpp:259
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Goodweather.cpp:246
    -
    uint64_t raw
    The state of the IR remote in IR code form.
    Definition: ir_Goodweather.h:27
    -
    const uint16_t kGoodweatherHdrMark
    Definition: ir_Goodweather.h:59
    -
    uint8_t AirFlow
    Definition: ir_Goodweather.h:43
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Goodweather.cpp:98
    -
    void setSleep(const bool toggle)
    Set the Sleep Toggle setting of the A/C.
    Definition: ir_Goodweather.cpp:185
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    Class for handling detailed Goodweather A/C messages.
    Definition: ir_Goodweather.h:100
    -
    GoodweatherProtocol _
    Definition: ir_Goodweather.h:152
    -
    uint8_t Fan
    Definition: ir_Goodweather.h:44
    -
    uint64_t getRaw(void)
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Goodweather.cpp:84
    -
    const uint16_t kGoodweatherMinRepeat
    Definition: IRremoteESP8266.h:1012
    -
    const uint8_t kGoodweatherCmdMode
    Definition: ir_Goodweather.h:83
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8cpp.html deleted file mode 100644 index f2460cd50..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8cpp.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Gree.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Gree.cpp File Reference
    -
    -
    - -

    Support for Gree A/C protocols. -More...

    - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kGreeHdrMark = 9000
     
    const uint16_t kGreeHdrSpace = 4500
     See #684 & real example in unit tests. More...
     
    const uint16_t kGreeBitMark = 620
     
    const uint16_t kGreeOneSpace = 1600
     
    const uint16_t kGreeZeroSpace = 540
     
    const uint16_t kGreeMsgSpace = 19980
     See #1508, #386, & Kelvinator. More...
     
    const uint8_t kGreeBlockFooter = 0b010
     
    const uint8_t kGreeBlockFooterBits = 3
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kGreeBitMark

    - -
    -
    - - - - -
    const uint16_t kGreeBitMark = 620
    -
    - -
    -
    - -

    ◆ kGreeBlockFooter

    - -
    -
    - - - - -
    const uint8_t kGreeBlockFooter = 0b010
    -
    - -
    -
    - -

    ◆ kGreeBlockFooterBits

    - -
    -
    - - - - -
    const uint8_t kGreeBlockFooterBits = 3
    -
    - -
    -
    - -

    ◆ kGreeHdrMark

    - -
    -
    - - - - -
    const uint16_t kGreeHdrMark = 9000
    -
    - -
    -
    - -

    ◆ kGreeHdrSpace

    - -
    -
    - - - - -
    const uint16_t kGreeHdrSpace = 4500
    -
    - -

    See #684 & real example in unit tests.

    - -
    -
    - -

    ◆ kGreeMsgSpace

    - -
    -
    - - - - -
    const uint16_t kGreeMsgSpace = 19980
    -
    - -

    See #1508, #386, & Kelvinator.

    - -
    -
    - -

    ◆ kGreeOneSpace

    - -
    -
    - - - - -
    const uint16_t kGreeOneSpace = 1600
    -
    - -
    -
    - -

    ◆ kGreeZeroSpace

    - -
    -
    - - - - -
    const uint16_t kGreeZeroSpace = 540
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h.html deleted file mode 100644 index 5251c4498..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h.html +++ /dev/null @@ -1,555 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Gree.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Gree.h File Reference
    -
    -
    - -

    Support for Gree A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  GreeProtocol
     Native representation of a Gree A/C message. More...
     
    class  IRGreeAC
     Class for handling detailed Gree A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kGreeAuto = 0
     
    const uint8_t kGreeCool = 1
     
    const uint8_t kGreeDry = 2
     
    const uint8_t kGreeFan = 3
     
    const uint8_t kGreeHeat = 4
     
    const uint8_t kGreeFanAuto = 0
     
    const uint8_t kGreeFanMin = 1
     
    const uint8_t kGreeFanMed = 2
     
    const uint8_t kGreeFanMax = 3
     
    const uint8_t kGreeMinTempC = 16
     
    const uint8_t kGreeMaxTempC = 30
     
    const uint8_t kGreeMinTempF = 61
     
    const uint8_t kGreeMaxTempF = 86
     
    const uint16_t kGreeTimerMax = 24 * 60
     
    const uint8_t kGreeSwingLastPos = 0b0000
     
    const uint8_t kGreeSwingAuto = 0b0001
     
    const uint8_t kGreeSwingUp = 0b0010
     
    const uint8_t kGreeSwingMiddleUp = 0b0011
     
    const uint8_t kGreeSwingMiddle = 0b0100
     
    const uint8_t kGreeSwingMiddleDown = 0b0101
     
    const uint8_t kGreeSwingDown = 0b0110
     
    const uint8_t kGreeSwingDownAuto = 0b0111
     
    const uint8_t kGreeSwingMiddleAuto = 0b1001
     
    const uint8_t kGreeSwingUpAuto = 0b1011
     
    const uint8_t kGreeDisplayTempOff = 0b00
     
    const uint8_t kGreeDisplayTempSet = 0b01
     
    const uint8_t kGreeDisplayTempInside = 0b10
     
    const uint8_t kGreeDisplayTempOutside = 0b11
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kGreeAuto

    - -
    -
    - - - - -
    const uint8_t kGreeAuto = 0
    -
    - -
    -
    - -

    ◆ kGreeCool

    - -
    -
    - - - - -
    const uint8_t kGreeCool = 1
    -
    - -
    -
    - -

    ◆ kGreeDisplayTempInside

    - -
    -
    - - - - -
    const uint8_t kGreeDisplayTempInside = 0b10
    -
    - -
    -
    - -

    ◆ kGreeDisplayTempOff

    - -
    -
    - - - - -
    const uint8_t kGreeDisplayTempOff = 0b00
    -
    - -
    -
    - -

    ◆ kGreeDisplayTempOutside

    - -
    -
    - - - - -
    const uint8_t kGreeDisplayTempOutside = 0b11
    -
    - -
    -
    - -

    ◆ kGreeDisplayTempSet

    - -
    -
    - - - - -
    const uint8_t kGreeDisplayTempSet = 0b01
    -
    - -
    -
    - -

    ◆ kGreeDry

    - -
    -
    - - - - -
    const uint8_t kGreeDry = 2
    -
    - -
    -
    - -

    ◆ kGreeFan

    - -
    -
    - - - - -
    const uint8_t kGreeFan = 3
    -
    - -
    -
    - -

    ◆ kGreeFanAuto

    - -
    -
    - - - - -
    const uint8_t kGreeFanAuto = 0
    -
    - -
    -
    - -

    ◆ kGreeFanMax

    - -
    -
    - - - - -
    const uint8_t kGreeFanMax = 3
    -
    - -
    -
    - -

    ◆ kGreeFanMed

    - -
    -
    - - - - -
    const uint8_t kGreeFanMed = 2
    -
    - -
    -
    - -

    ◆ kGreeFanMin

    - -
    -
    - - - - -
    const uint8_t kGreeFanMin = 1
    -
    - -
    -
    - -

    ◆ kGreeHeat

    - -
    -
    - - - - -
    const uint8_t kGreeHeat = 4
    -
    - -
    -
    - -

    ◆ kGreeMaxTempC

    - -
    -
    - - - - -
    const uint8_t kGreeMaxTempC = 30
    -
    - -
    -
    - -

    ◆ kGreeMaxTempF

    - -
    -
    - - - - -
    const uint8_t kGreeMaxTempF = 86
    -
    - -
    -
    - -

    ◆ kGreeMinTempC

    - -
    -
    - - - - -
    const uint8_t kGreeMinTempC = 16
    -
    - -
    -
    - -

    ◆ kGreeMinTempF

    - -
    -
    - - - - -
    const uint8_t kGreeMinTempF = 61
    -
    - -
    -
    - -

    ◆ kGreeSwingAuto

    - -
    -
    - - - - -
    const uint8_t kGreeSwingAuto = 0b0001
    -
    - -
    -
    - -

    ◆ kGreeSwingDown

    - -
    -
    - - - - -
    const uint8_t kGreeSwingDown = 0b0110
    -
    - -
    -
    - -

    ◆ kGreeSwingDownAuto

    - -
    -
    - - - - -
    const uint8_t kGreeSwingDownAuto = 0b0111
    -
    - -
    -
    - -

    ◆ kGreeSwingLastPos

    - -
    -
    - - - - -
    const uint8_t kGreeSwingLastPos = 0b0000
    -
    - -
    -
    - -

    ◆ kGreeSwingMiddle

    - -
    -
    - - - - -
    const uint8_t kGreeSwingMiddle = 0b0100
    -
    - -
    -
    - -

    ◆ kGreeSwingMiddleAuto

    - -
    -
    - - - - -
    const uint8_t kGreeSwingMiddleAuto = 0b1001
    -
    - -
    -
    - -

    ◆ kGreeSwingMiddleDown

    - -
    -
    - - - - -
    const uint8_t kGreeSwingMiddleDown = 0b0101
    -
    - -
    -
    - -

    ◆ kGreeSwingMiddleUp

    - -
    -
    - - - - -
    const uint8_t kGreeSwingMiddleUp = 0b0011
    -
    - -
    -
    - -

    ◆ kGreeSwingUp

    - -
    -
    - - - - -
    const uint8_t kGreeSwingUp = 0b0010
    -
    - -
    -
    - -

    ◆ kGreeSwingUpAuto

    - -
    -
    - - - - -
    const uint8_t kGreeSwingUpAuto = 0b1011
    -
    - -
    -
    - -

    ◆ kGreeTimerMax

    - -
    -
    - - - - -
    const uint16_t kGreeTimerMax = 24 * 60
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h_source.html deleted file mode 100644 index 71d403102..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Gree_8h_source.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Gree.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Gree.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2016 David Conran
    -
    2 
    -
    7 
    -
    8 // Supports:
    -
    9 // Brand: Ultimate, Model: Heat Pump
    -
    10 // Brand: EKOKAI, Model: A/C
    -
    11 // Brand: RusClimate, Model: EACS/I-09HAR_X/N3 A/C
    -
    12 // Brand: RusClimate, Model: YAW1F remote
    -
    13 // Brand: Green, Model: YBOFB remote
    -
    14 // Brand: Green, Model: YBOFB2 remote
    -
    15 // Brand: Gree, Model: YAA1FBF remote
    -
    16 // Brand: Gree, Model: YB1F2F remote
    -
    17 // Brand: Amana, Model: PBC093G00CC A/C
    -
    18 // Brand: Amana, Model: YX1FF remote
    -
    19 // Brand: Cooper & Hunter, Model: YB1F2 remote
    -
    20 // Brand: Cooper & Hunter, Model: CH-S09FTXG A/C
    -
    21 
    -
    22 #ifndef IR_GREE_H_
    -
    23 #define IR_GREE_H_
    -
    24 
    -
    25 #define __STDC_LIMIT_MACROS
    -
    26 #include <stdint.h>
    -
    27 #ifndef UNIT_TEST
    -
    28 #include <Arduino.h>
    -
    29 #endif
    -
    30 #include "IRremoteESP8266.h"
    -
    31 #include "IRsend.h"
    -
    32 #ifdef UNIT_TEST
    -
    33 #include "IRsend_test.h"
    -
    34 #endif
    -
    35 
    - - -
    39  struct {
    -
    40  // Byte 0
    -
    41  uint8_t Mode :3;
    -
    42  uint8_t Power :1;
    -
    43  uint8_t Fan :2;
    -
    44  uint8_t SwingAuto :1;
    -
    45  uint8_t Sleep :1;
    -
    46  // Byte 1
    -
    47  uint8_t Temp :4;
    -
    48  uint8_t TimerHalfHr :1;
    -
    49  uint8_t TimerTensHr :2;
    -
    50  uint8_t TimerEnabled:1;
    -
    51  // Byte 2
    -
    52  uint8_t TimerHours:4;
    -
    53  uint8_t Turbo :1;
    -
    54  uint8_t Light :1;
    -
    55  uint8_t ModelA :1; // model==YAW1F
    -
    56  uint8_t Xfan :1;
    -
    57  // Byte 3
    -
    58  uint8_t :2;
    -
    59  uint8_t TempExtraDegreeF:1;
    -
    60  uint8_t UseFahrenheit :1;
    -
    61  uint8_t unknown1 :4; // value=0b0101
    -
    62  // Byte 4
    -
    63  uint8_t Swing:4;
    -
    64  uint8_t :0;
    -
    65  // Byte 5
    -
    66  uint8_t DisplayTemp :2;
    -
    67  uint8_t IFeel :1;
    -
    68  uint8_t unknown2 :3; // value = 0b100
    -
    69  uint8_t WiFi :1;
    -
    70  uint8_t :0;
    -
    71  // Byte 6
    -
    72  uint8_t :8;
    -
    73  // Byte 7
    -
    74  uint8_t :4;
    -
    75  uint8_t Sum:4;
    -
    76  };
    -
    77 };
    -
    78 
    -
    79 // Constants
    -
    80 
    -
    81 const uint8_t kGreeAuto = 0;
    -
    82 const uint8_t kGreeCool = 1;
    -
    83 const uint8_t kGreeDry = 2;
    -
    84 const uint8_t kGreeFan = 3;
    -
    85 const uint8_t kGreeHeat = 4;
    -
    86 
    -
    87 const uint8_t kGreeFanAuto = 0;
    -
    88 const uint8_t kGreeFanMin = 1;
    -
    89 const uint8_t kGreeFanMed = 2;
    -
    90 const uint8_t kGreeFanMax = 3;
    -
    91 
    -
    92 const uint8_t kGreeMinTempC = 16; // Celsius
    -
    93 const uint8_t kGreeMaxTempC = 30; // Celsius
    -
    94 const uint8_t kGreeMinTempF = 61; // Fahrenheit
    -
    95 const uint8_t kGreeMaxTempF = 86; // Fahrenheit
    -
    96 const uint16_t kGreeTimerMax = 24 * 60;
    -
    97 
    -
    98 const uint8_t kGreeSwingLastPos = 0b0000;
    -
    99 const uint8_t kGreeSwingAuto = 0b0001;
    -
    100 const uint8_t kGreeSwingUp = 0b0010;
    -
    101 const uint8_t kGreeSwingMiddleUp = 0b0011;
    -
    102 const uint8_t kGreeSwingMiddle = 0b0100;
    -
    103 const uint8_t kGreeSwingMiddleDown = 0b0101;
    -
    104 const uint8_t kGreeSwingDown = 0b0110;
    -
    105 const uint8_t kGreeSwingDownAuto = 0b0111;
    -
    106 const uint8_t kGreeSwingMiddleAuto = 0b1001;
    -
    107 const uint8_t kGreeSwingUpAuto = 0b1011;
    -
    108 
    -
    109 const uint8_t kGreeDisplayTempOff = 0b00; // 0
    -
    110 const uint8_t kGreeDisplayTempSet = 0b01; // 1
    -
    111 const uint8_t kGreeDisplayTempInside = 0b10; // 2
    -
    112 const uint8_t kGreeDisplayTempOutside = 0b11; // 3
    -
    113 
    -
    114 // Legacy defines.
    -
    115 #define GREE_AUTO kGreeAuto
    -
    116 #define GREE_COOL kGreeCool
    -
    117 #define GREE_DRY kGreeDry
    -
    118 #define GREE_FAN kGreeFan
    -
    119 #define GREE_HEAT kGreeHeat
    -
    120 #define GREE_MIN_TEMP kGreeMinTempC
    -
    121 #define GREE_MAX_TEMP kGreeMaxTempC
    -
    122 #define GREE_FAN_MAX kGreeFanMax
    -
    123 #define GREE_SWING_LAST_POS kGreeSwingLastPos
    -
    124 #define GREE_SWING_AUTO kGreeSwingAuto
    -
    125 #define GREE_SWING_UP kGreeSwingUp
    -
    126 #define GREE_SWING_MIDDLE_UP kGreeSwingMiddleUp
    -
    127 #define GREE_SWING_MIDDLE kGreeSwingMiddle
    -
    128 #define GREE_SWING_MIDDLE_DOWN kGreeSwingMiddleDown
    -
    129 #define GREE_SWING_DOWN kGreeSwingDown
    -
    130 #define GREE_SWING_DOWN_AUTO kGreeSwingDownAuto
    -
    131 #define GREE_SWING_MIDDLE_AUTO kGreeSwingMiddleAuto
    -
    132 #define GREE_SWING_UP_AUTO kGreeSwingUpAuto
    -
    133 
    -
    134 // Classes
    -
    136 class IRGreeAC {
    -
    137  public:
    -
    138  explicit IRGreeAC(
    -
    139  const uint16_t pin,
    - -
    141  const bool inverted = false, const bool use_modulation = true);
    -
    142  void stateReset(void);
    -
    143 #if SEND_GREE
    -
    144  void send(const uint16_t repeat = kGreeDefaultRepeat);
    -
    149  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    150 #endif // SEND_GREE
    -
    151  void begin(void);
    -
    152  void on(void);
    -
    153  void off(void);
    -
    154  void setModel(const gree_ac_remote_model_t model);
    -
    155  gree_ac_remote_model_t getModel(void) const;
    -
    156  void setPower(const bool on);
    -
    157  bool getPower(void) const;
    -
    158  void setTemp(const uint8_t temp, const bool fahrenheit = false);
    -
    159  uint8_t getTemp(void) const;
    -
    160  void setUseFahrenheit(const bool on);
    -
    161  bool getUseFahrenheit(void) const;
    -
    162  void setFan(const uint8_t speed);
    -
    163  uint8_t getFan(void) const;
    -
    164  void setMode(const uint8_t new_mode);
    -
    165  uint8_t getMode(void) const;
    -
    166  void setLight(const bool on);
    -
    167  bool getLight(void) const;
    -
    168  void setXFan(const bool on);
    -
    169  bool getXFan(void) const;
    -
    170  void setSleep(const bool on);
    -
    171  bool getSleep(void) const;
    -
    172  void setTurbo(const bool on);
    -
    173  bool getTurbo(void) const;
    -
    174  void setIFeel(const bool on);
    -
    175  bool getIFeel(void) const;
    -
    176  void setWiFi(const bool on);
    -
    177  bool getWiFi(void) const;
    -
    178  void setSwingVertical(const bool automatic, const uint8_t position);
    -
    179  bool getSwingVerticalAuto(void) const;
    -
    180  uint8_t getSwingVerticalPosition(void) const;
    -
    181  uint16_t getTimer(void) const;
    -
    182  void setTimer(const uint16_t minutes);
    -
    183  void setDisplayTempSource(const uint8_t mode);
    -
    184  uint8_t getDisplayTempSource(void) const;
    -
    185  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    186  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    187  static uint8_t convertSwingV(const stdAc::swingv_t swingv);
    -
    188  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    189  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    190  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    191  stdAc::state_t toCommon(void);
    -
    192  uint8_t* getRaw(void);
    -
    193  void setRaw(const uint8_t new_code[]);
    -
    194  static bool validChecksum(const uint8_t state[],
    -
    195  const uint16_t length = kGreeStateLength);
    -
    196  String toString(void);
    -
    197 #ifndef UNIT_TEST
    -
    198 
    -
    199  private:
    - -
    201 #else // UNIT_TEST
    -
    202  IRsendTest _irsend;
    -
    204 #endif // UNIT_TEST
    - - -
    208  void checksum(const uint16_t length = kGreeStateLength);
    -
    209  void fixup(void);
    -
    210  void setTimerEnabled(const bool on);
    -
    211  bool getTimerEnabled(void) const;
    -
    212 };
    -
    213 
    -
    214 #endif // IR_GREE_H_
    -
    -
    void setSwingVertical(const bool automatic, const uint8_t position)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Gree.cpp:387
    -
    uint8_t ModelA
    Definition: ir_Gree.h:55
    -
    uint8_t Temp
    Definition: ir_Gree.h:47
    -
    uint8_t Mode
    Definition: ir_Gree.h:41
    -
    GreeProtocol _
    Definition: ir_Gree.h:206
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Gree.cpp:308
    -
    bool getWiFi(void) const
    Get the Wifi (enabled) setting of the A/C.
    Definition: ir_Gree.cpp:344
    -
    const uint16_t kGreeStateLength
    Definition: IRremoteESP8266.h:1013
    -
    const uint8_t kGreeSwingUp
    Definition: ir_Gree.h:100
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kGreeStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Gree.cpp:177
    -
    String toString(void)
    Convert the current internal state into a human readable string.
    Definition: ir_Gree.cpp:596
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Gree.cpp:201
    -
    const uint8_t kGreeFan
    Definition: ir_Gree.h:84
    -
    void setXFan(const bool on)
    Set the XFan (Mould) setting of the A/C.
    Definition: ir_Gree.cpp:350
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Gree.cpp:529
    -
    bool getIFeel(void) const
    Get the IFeel setting of the A/C.
    Definition: ir_Gree.cpp:332
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    bool getLight(void) const
    Get the Light (LED) setting of the A/C.
    Definition: ir_Gree.cpp:320
    -
    uint8_t SwingAuto
    Definition: ir_Gree.h:44
    -
    uint8_t TempExtraDegreeF
    Definition: ir_Gree.h:59
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Gree.cpp:488
    -
    const uint8_t kGreeDry
    Definition: ir_Gree.h:83
    -
    uint8_t unknown1
    Definition: ir_Gree.h:61
    -
    const uint8_t kGreeFanMax
    Definition: ir_Gree.h:90
    -
    const uint8_t kGreeMaxTempF
    Definition: ir_Gree.h:95
    -
    uint16_t getTimer(void) const
    Get the timer time value from the A/C.
    Definition: ir_Gree.cpp:441
    -
    void setMode(const uint8_t new_mode)
    Set the operating mode of the A/C.
    Definition: ir_Gree.cpp:290
    -
    uint8_t Fan
    Definition: ir_Gree.h:43
    -
    stdAc::state_t toCommon(void)
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Gree.cpp:567
    -
    uint8_t WiFi
    Definition: ir_Gree.h:69
    -
    gree_ac_remote_model_t
    Gree A/C model numbers.
    Definition: IRsend.h:134
    -
    void send(const uint16_t repeat=kGreeDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Gree.cpp:141
    -
    const uint8_t kGreeSwingUpAuto
    Definition: ir_Gree.h:107
    -
    const uint8_t kGreeDisplayTempOutside
    Definition: ir_Gree.h:112
    -
    void fixup(void)
    Fix up the internal state so it is correct.
    Definition: ir_Gree.cpp:130
    -
    uint8_t remote_state[kGreeStateLength]
    The state in native IR code form.
    Definition: ir_Gree.h:38
    -
    const uint8_t kGreeSwingDownAuto
    Definition: ir_Gree.h:105
    - -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Gree.cpp:206
    -
    void setTimerEnabled(const bool on)
    Set the timer enable setting of the A/C.
    Definition: ir_Gree.cpp:429
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Gree.cpp:148
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint8_t Turbo
    Definition: ir_Gree.h:53
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t Swing
    Definition: ir_Gree.h:63
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kGreeDisplayTempSet
    Definition: ir_Gree.h:110
    -
    uint8_t TimerHours
    Definition: ir_Gree.h:52
    -
    uint8_t TimerHalfHr
    Definition: ir_Gree.h:48
    -
    const uint8_t kGreeSwingMiddleDown
    Definition: ir_Gree.h:103
    -
    IRGreeAC(const uint16_t pin, const gree_ac_remote_model_t model=gree_ac_remote_model_t::YAW1F, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Gree.cpp:111
    -
    uint8_t Sum
    Definition: ir_Gree.h:75
    -
    const uint8_t kGreeFanMed
    Definition: ir_Gree.h:89
    - -
    const uint8_t kGreeSwingMiddleAuto
    Definition: ir_Gree.h:106
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Gree.cpp:501
    -
    const uint8_t kGreeHeat
    Definition: ir_Gree.h:85
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Gree.cpp:362
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Gree.cpp:136
    -
    const uint16_t kGreeTimerMax
    Definition: ir_Gree.h:96
    -
    @ YAW1F
    Definition: IRsend.h:135
    -
    const uint8_t kGreeMaxTempC
    Definition: ir_Gree.h:93
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Gree.h:149
    -
    uint8_t Sleep
    Definition: ir_Gree.h:45
    -
    const uint8_t kGreeMinTempF
    Definition: ir_Gree.h:94
    -
    const uint8_t kGreeDisplayTempOff
    Definition: ir_Gree.h:109
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Gree.cpp:275
    -
    void setUseFahrenheit(const bool on)
    Set the default temperature units to use.
    Definition: ir_Gree.cpp:223
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Gree.cpp:542
    -
    uint8_t unknown2
    Definition: ir_Gree.h:68
    -
    bool getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Gree.cpp:380
    -
    uint8_t TimerTensHr
    Definition: ir_Gree.h:49
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Gree.cpp:215
    -
    bool getXFan(void) const
    Get the XFan (Mould) setting of the A/C.
    Definition: ir_Gree.cpp:356
    -
    void checksum(const uint16_t length=kGreeStateLength)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Gree.cpp:168
    -
    uint8_t Xfan
    Definition: ir_Gree.h:56
    -
    uint8_t Light
    Definition: ir_Gree.h:54
    -
    void setTimer(const uint16_t minutes)
    Set the A/C's timer to turn off in X many minutes.
    Definition: ir_Gree.cpp:451
    -
    void setModel(const gree_ac_remote_model_t model)
    Set the model of the A/C to emulate.
    Definition: ir_Gree.cpp:185
    -
    gree_ac_remote_model_t getModel(void) const
    Get/Detect the model of the A/C.
    Definition: ir_Gree.cpp:195
    -
    const uint8_t kGreeAuto
    Definition: ir_Gree.h:81
    -
    void setWiFi(const bool on)
    Set the Wifi (enabled) setting of the A/C.
    Definition: ir_Gree.cpp:338
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Gree.cpp:284
    -
    static uint8_t convertSwingV(const stdAc::swingv_t swingv)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Gree.cpp:515
    -
    bool getUseFahrenheit(void) const
    Get the default temperature units in use.
    Definition: ir_Gree.cpp:229
    -
    void setIFeel(const bool on)
    Set the IFeel setting of the A/C.
    Definition: ir_Gree.cpp:326
    -
    const uint8_t kGreeSwingMiddleUp
    Definition: ir_Gree.h:101
    -
    uint8_t getTemp(void) const
    Get the set temperature.
    Definition: ir_Gree.cpp:262
    -
    uint8_t IFeel
    Definition: ir_Gree.h:67
    -
    const uint8_t kGreeFanMin
    Definition: ir_Gree.h:88
    -
    const uint8_t kGreeCool
    Definition: ir_Gree.h:82
    -
    uint8_t getSwingVerticalPosition(void) const
    Get the Vertical Swing position setting of the A/C.
    Definition: ir_Gree.cpp:423
    -
    const uint8_t kGreeSwingMiddle
    Definition: ir_Gree.h:102
    -
    Native representation of a Gree A/C message.
    Definition: ir_Gree.h:37
    -
    const uint8_t kGreeSwingLastPos
    Definition: ir_Gree.h:98
    -
    void setTemp(const uint8_t temp, const bool fahrenheit=false)
    Set the temp. in degrees.
    Definition: ir_Gree.cpp:239
    -
    bool getTimerEnabled(void) const
    Get the timer enabled setting of the A/C.
    Definition: ir_Gree.cpp:435
    -
    gree_ac_remote_model_t _model
    Definition: ir_Gree.h:207
    -
    bool getSwingVerticalAuto(void) const
    Get the Vertical Swing Automatic mode setting of the A/C.
    Definition: ir_Gree.cpp:417
    -
    void setTurbo(const bool on)
    Set the Turbo setting of the A/C.
    Definition: ir_Gree.cpp:374
    -
    const uint8_t kGreeSwingDown
    Definition: ir_Gree.h:104
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Gree.cpp:554
    -
    const uint8_t kGreeFanAuto
    Definition: ir_Gree.h:87
    -
    uint8_t Power
    Definition: ir_Gree.h:42
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Gree.cpp:368
    -
    uint8_t TimerEnabled
    Definition: ir_Gree.h:50
    -
    const uint8_t kGreeMinTempC
    Definition: ir_Gree.h:92
    -
    uint8_t getDisplayTempSource(void) const
    Get the temperature display mode. i.e. Internal, External temperature sensing.
    Definition: ir_Gree.cpp:481
    -
    void setDisplayTempSource(const uint8_t mode)
    Set temperature display mode. i.e. Internal, External temperature sensing.
    Definition: ir_Gree.cpp:474
    -
    uint8_t UseFahrenheit
    Definition: ir_Gree.h:60
    -
    const uint8_t kGreeSwingAuto
    Definition: ir_Gree.h:99
    -
    Class for handling detailed Gree A/C messages.
    Definition: ir_Gree.h:136
    -
    uint8_t DisplayTemp
    Definition: ir_Gree.h:66
    -
    const uint8_t kGreeDisplayTempInside
    Definition: ir_Gree.h:111
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Gree.cpp:119
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Gree.cpp:155
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Gree.h:200
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Gree.cpp:198
    -
    void setLight(const bool on)
    Set the Light (LED) setting of the A/C.
    Definition: ir_Gree.cpp:314
    -
    const uint16_t kGreeDefaultRepeat
    Definition: IRremoteESP8266.h:1015
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8cpp.html deleted file mode 100644 index 9f67eb259..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8cpp.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Haier.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Haier.cpp File Reference
    -
    -
    - -

    Support for Haier A/C protocols. The specifics of reverse engineering the protocols details: -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kHaierAcHdr = 3000
     
    const uint16_t kHaierAcHdrGap = 4300
     
    const uint16_t kHaierAcBitMark = 520
     
    const uint16_t kHaierAcOneSpace = 1650
     
    const uint16_t kHaierAcZeroSpace = 650
     
    const uint32_t kHaierAcMinGap = 150000
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kHaierAcBitMark

    - -
    -
    - - - - -
    const uint16_t kHaierAcBitMark = 520
    -
    - -
    -
    - -

    ◆ kHaierAcHdr

    - -
    -
    - - - - -
    const uint16_t kHaierAcHdr = 3000
    -
    - -
    -
    - -

    ◆ kHaierAcHdrGap

    - -
    -
    - - - - -
    const uint16_t kHaierAcHdrGap = 4300
    -
    - -
    -
    - -

    ◆ kHaierAcMinGap

    - -
    -
    - - - - -
    const uint32_t kHaierAcMinGap = 150000
    -
    - -
    -
    - -

    ◆ kHaierAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kHaierAcOneSpace = 1650
    -
    - -
    -
    - -

    ◆ kHaierAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kHaierAcZeroSpace = 650
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h.html deleted file mode 100644 index 7044444d3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h.html +++ /dev/null @@ -1,1049 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Haier.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Haier.h File Reference
    -
    -
    - -

    Support for Haier A/C protocols. The specifics of reverse engineering the protocols details: -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - -

    -Classes

    union  HaierProtocol
     Native representation of a Haier HSU07-HEA03 A/C message. More...
     
    union  HaierYRW02Protocol
     Native representation of a Haier YRW02 A/C message. More...
     
    class  IRHaierAC
     Class for handling detailed Haier A/C messages. More...
     
    class  IRHaierACYRW02
     Class for handling detailed Haier ACYRW02 A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kHaierAcPrefix = 0b10100101
     
    const uint8_t kHaierAcMinTemp = 16
     
    const uint8_t kHaierAcDefTemp = 25
     
    const uint8_t kHaierAcMaxTemp = 30
     
    const uint8_t kHaierAcCmdOff = 0b0000
     
    const uint8_t kHaierAcCmdOn = 0b0001
     
    const uint8_t kHaierAcCmdMode = 0b0010
     
    const uint8_t kHaierAcCmdFan = 0b0011
     
    const uint8_t kHaierAcCmdTempUp = 0b0110
     
    const uint8_t kHaierAcCmdTempDown = 0b0111
     
    const uint8_t kHaierAcCmdSleep = 0b1000
     
    const uint8_t kHaierAcCmdTimerSet = 0b1001
     
    const uint8_t kHaierAcCmdTimerCancel = 0b1010
     
    const uint8_t kHaierAcCmdHealth = 0b1100
     
    const uint8_t kHaierAcCmdSwing = 0b1101
     
    const uint8_t kHaierAcSwingOff = 0b00
     
    const uint8_t kHaierAcSwingUp = 0b01
     
    const uint8_t kHaierAcSwingDown = 0b10
     
    const uint8_t kHaierAcSwingChg = 0b11
     
    const uint8_t kHaierAcAuto = 0
     
    const uint8_t kHaierAcCool = 1
     
    const uint8_t kHaierAcDry = 2
     
    const uint8_t kHaierAcHeat = 3
     
    const uint8_t kHaierAcFan = 4
     
    const uint8_t kHaierAcFanAuto = 0
     
    const uint8_t kHaierAcFanLow = 1
     
    const uint8_t kHaierAcFanMed = 2
     
    const uint8_t kHaierAcFanHigh = 3
     
    const uint16_t kHaierAcMaxTime = (23 * 60) + 59
     
    const uint8_t kHaierAcSleepBit = 0b01000000
     
    const uint8_t kHaierAcYrw02Prefix = 0xA6
     
    const uint8_t kHaierAcYrw02SwingOff = 0x0
     
    const uint8_t kHaierAcYrw02SwingTop = 0x1
     
    const uint8_t kHaierAcYrw02SwingMiddle = 0x2
     
    const uint8_t kHaierAcYrw02SwingBottom = 0x3
     
    const uint8_t kHaierAcYrw02SwingDown = 0xA
     
    const uint8_t kHaierAcYrw02SwingAuto = 0xC
     
    const uint8_t kHaierAcYrw02FanHigh = 0b001
     
    const uint8_t kHaierAcYrw02FanMed = 0b010
     
    const uint8_t kHaierAcYrw02FanLow = 0b011
     
    const uint8_t kHaierAcYrw02FanAuto = 0b101
     
    const uint8_t kHaierAcYrw02TurboOff = 0x0
     
    const uint8_t kHaierAcYrw02TurboHigh = 0x1
     
    const uint8_t kHaierAcYrw02TurboLow = 0x2
     
    const uint8_t kHaierAcYrw02Auto = 0b000
     
    const uint8_t kHaierAcYrw02Cool = 0b001
     
    const uint8_t kHaierAcYrw02Dry = 0b010
     
    const uint8_t kHaierAcYrw02Heat = 0b100
     
    const uint8_t kHaierAcYrw02Fan = 0b110
     
    const uint8_t kHaierAcYrw02ButtonTempUp = 0x0
     
    const uint8_t kHaierAcYrw02ButtonTempDown = 0x1
     
    const uint8_t kHaierAcYrw02ButtonSwing = 0x2
     
    const uint8_t kHaierAcYrw02ButtonFan = 0x4
     
    const uint8_t kHaierAcYrw02ButtonPower = 0x5
     
    const uint8_t kHaierAcYrw02ButtonMode = 0x6
     
    const uint8_t kHaierAcYrw02ButtonHealth = 0x7
     
    const uint8_t kHaierAcYrw02ButtonTurbo = 0x8
     
    const uint8_t kHaierAcYrw02ButtonSleep = 0xB
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kHaierAcAuto

    - -
    -
    - - - - -
    const uint8_t kHaierAcAuto = 0
    -
    - -
    -
    - -

    ◆ kHaierAcCmdFan

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdFan = 0b0011
    -
    - -
    -
    - -

    ◆ kHaierAcCmdHealth

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdHealth = 0b1100
    -
    - -
    -
    - -

    ◆ kHaierAcCmdMode

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdMode = 0b0010
    -
    - -
    -
    - -

    ◆ kHaierAcCmdOff

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdOff = 0b0000
    -
    - -
    -
    - -

    ◆ kHaierAcCmdOn

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdOn = 0b0001
    -
    - -
    -
    - -

    ◆ kHaierAcCmdSleep

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdSleep = 0b1000
    -
    - -
    -
    - -

    ◆ kHaierAcCmdSwing

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdSwing = 0b1101
    -
    - -
    -
    - -

    ◆ kHaierAcCmdTempDown

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdTempDown = 0b0111
    -
    - -
    -
    - -

    ◆ kHaierAcCmdTempUp

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdTempUp = 0b0110
    -
    - -
    -
    - -

    ◆ kHaierAcCmdTimerCancel

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdTimerCancel = 0b1010
    -
    - -
    -
    - -

    ◆ kHaierAcCmdTimerSet

    - -
    -
    - - - - -
    const uint8_t kHaierAcCmdTimerSet = 0b1001
    -
    - -
    -
    - -

    ◆ kHaierAcCool

    - -
    -
    - - - - -
    const uint8_t kHaierAcCool = 1
    -
    - -
    -
    - -

    ◆ kHaierAcDefTemp

    - -
    -
    - - - - -
    const uint8_t kHaierAcDefTemp = 25
    -
    - -
    -
    - -

    ◆ kHaierAcDry

    - -
    -
    - - - - -
    const uint8_t kHaierAcDry = 2
    -
    - -
    -
    - -

    ◆ kHaierAcFan

    - -
    -
    - - - - -
    const uint8_t kHaierAcFan = 4
    -
    - -
    -
    - -

    ◆ kHaierAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kHaierAcFanAuto = 0
    -
    - -
    -
    - -

    ◆ kHaierAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kHaierAcFanHigh = 3
    -
    - -
    -
    - -

    ◆ kHaierAcFanLow

    - -
    -
    - - - - -
    const uint8_t kHaierAcFanLow = 1
    -
    - -
    -
    - -

    ◆ kHaierAcFanMed

    - -
    -
    - - - - -
    const uint8_t kHaierAcFanMed = 2
    -
    - -
    -
    - -

    ◆ kHaierAcHeat

    - -
    -
    - - - - -
    const uint8_t kHaierAcHeat = 3
    -
    - -
    -
    - -

    ◆ kHaierAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kHaierAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kHaierAcMaxTime

    - -
    -
    - - - - -
    const uint16_t kHaierAcMaxTime = (23 * 60) + 59
    -
    - -
    -
    - -

    ◆ kHaierAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kHaierAcMinTemp = 16
    -
    - -
    -
    - -

    ◆ kHaierAcPrefix

    - -
    -
    - - - - -
    const uint8_t kHaierAcPrefix = 0b10100101
    -
    - -
    -
    - -

    ◆ kHaierAcSleepBit

    - -
    -
    - - - - -
    const uint8_t kHaierAcSleepBit = 0b01000000
    -
    - -
    -
    - -

    ◆ kHaierAcSwingChg

    - -
    -
    - - - - -
    const uint8_t kHaierAcSwingChg = 0b11
    -
    - -
    -
    - -

    ◆ kHaierAcSwingDown

    - -
    -
    - - - - -
    const uint8_t kHaierAcSwingDown = 0b10
    -
    - -
    -
    - -

    ◆ kHaierAcSwingOff

    - -
    -
    - - - - -
    const uint8_t kHaierAcSwingOff = 0b00
    -
    - -
    -
    - -

    ◆ kHaierAcSwingUp

    - -
    -
    - - - - -
    const uint8_t kHaierAcSwingUp = 0b01
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02Auto

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02Auto = 0b000
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonFan

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonFan = 0x4
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonHealth

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonHealth = 0x7
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonMode

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonMode = 0x6
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonPower

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonPower = 0x5
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonSleep

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonSleep = 0xB
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonSwing

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonSwing = 0x2
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonTempDown

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonTempDown = 0x1
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonTempUp

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonTempUp = 0x0
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02ButtonTurbo

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02ButtonTurbo = 0x8
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02Cool

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02Cool = 0b001
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02Dry

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02Dry = 0b010
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02Fan

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02Fan = 0b110
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02FanAuto

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02FanAuto = 0b101
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02FanHigh

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02FanHigh = 0b001
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02FanLow

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02FanLow = 0b011
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02FanMed

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02FanMed = 0b010
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02Heat

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02Heat = 0b100
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02Prefix

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02Prefix = 0xA6
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02SwingAuto

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02SwingAuto = 0xC
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02SwingBottom

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02SwingBottom = 0x3
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02SwingDown

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02SwingDown = 0xA
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02SwingMiddle

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02SwingMiddle = 0x2
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02SwingOff

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02SwingOff = 0x0
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02SwingTop

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02SwingTop = 0x1
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02TurboHigh

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02TurboHigh = 0x1
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02TurboLow

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02TurboLow = 0x2
    -
    - -
    -
    - -

    ◆ kHaierAcYrw02TurboOff

    - -
    -
    - - - - -
    const uint8_t kHaierAcYrw02TurboOff = 0x0
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h_source.html deleted file mode 100644 index c2e742f05..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Haier_8h_source.html +++ /dev/null @@ -1,622 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Haier.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Haier.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018 crankyoldgit
    -
    11 
    -
    12 // Supports:
    -
    13 // Brand: Haier, Model: HSU07-HEA03 remote (HAIER_AC)
    -
    14 // Brand: Haier, Model: YR-W02 remote (HAIER_AC_YRW02)
    -
    15 // Brand: Haier, Model: HSU-09HMC203 A/C (HAIER_AC_YRW02)
    -
    16 // Brand: Mabe, Model: MMI18HDBWCA6MI8 A/C (HAIER_AC176)
    -
    17 // Brand: Mabe, Model: V12843 HJ200223 remote (HAIER_AC176)
    -
    18 
    -
    19 #ifndef IR_HAIER_H_
    -
    20 #define IR_HAIER_H_
    -
    21 
    -
    22 #ifndef UNIT_TEST
    -
    23 #include <Arduino.h>
    -
    24 #endif
    -
    25 #include "IRremoteESP8266.h"
    -
    26 #include "IRsend.h"
    -
    27 #ifdef UNIT_TEST
    -
    28 #include "IRsend_test.h"
    -
    29 #endif
    -
    30 
    - - -
    35  struct {
    -
    36  // Byte 0
    -
    37  uint8_t Prefix;
    -
    38  // Byte 1
    -
    39  uint8_t Command:4;
    -
    40  uint8_t Temp :4;
    -
    41  // Byte 2
    -
    42  uint8_t CurrHours:5;
    -
    43  uint8_t unknown :1; // value=1
    -
    44  uint8_t Swing :2;
    -
    45  // Byte 3
    -
    46  uint8_t CurrMins:6;
    -
    47  uint8_t OffTimer:1;
    -
    48  uint8_t OnTimer :1;
    -
    49  // Byte 4
    -
    50  uint8_t OffHours:5;
    -
    51  uint8_t Health :1;
    -
    52  uint8_t :0;
    -
    53  // Byte 5
    -
    54  uint8_t OffMins:6;
    -
    55  uint8_t Fan :2;
    -
    56  // Byte 6
    -
    57  uint8_t OnHours:5;
    -
    58  uint8_t Mode :3;
    -
    59  // Byte 7
    -
    60  uint8_t OnMins:6;
    -
    61  uint8_t Sleep :1;
    -
    62  uint8_t :0;
    -
    63  // Byte 8
    -
    64  uint8_t Sum;
    -
    65  };
    -
    66 };
    -
    67 
    -
    68 // Constants
    -
    69 
    -
    70 const uint8_t kHaierAcPrefix = 0b10100101;
    -
    71 
    -
    72 const uint8_t kHaierAcMinTemp = 16;
    -
    73 const uint8_t kHaierAcDefTemp = 25;
    -
    74 const uint8_t kHaierAcMaxTemp = 30;
    -
    75 const uint8_t kHaierAcCmdOff = 0b0000;
    -
    76 const uint8_t kHaierAcCmdOn = 0b0001;
    -
    77 const uint8_t kHaierAcCmdMode = 0b0010;
    -
    78 const uint8_t kHaierAcCmdFan = 0b0011;
    -
    79 const uint8_t kHaierAcCmdTempUp = 0b0110;
    -
    80 const uint8_t kHaierAcCmdTempDown = 0b0111;
    -
    81 const uint8_t kHaierAcCmdSleep = 0b1000;
    -
    82 const uint8_t kHaierAcCmdTimerSet = 0b1001;
    -
    83 const uint8_t kHaierAcCmdTimerCancel = 0b1010;
    -
    84 const uint8_t kHaierAcCmdHealth = 0b1100;
    -
    85 const uint8_t kHaierAcCmdSwing = 0b1101;
    -
    86 
    -
    87 const uint8_t kHaierAcSwingOff = 0b00;
    -
    88 const uint8_t kHaierAcSwingUp = 0b01;
    -
    89 const uint8_t kHaierAcSwingDown = 0b10;
    -
    90 const uint8_t kHaierAcSwingChg = 0b11;
    -
    91 
    -
    92 const uint8_t kHaierAcAuto = 0;
    -
    93 const uint8_t kHaierAcCool = 1;
    -
    94 const uint8_t kHaierAcDry = 2;
    -
    95 const uint8_t kHaierAcHeat = 3;
    -
    96 const uint8_t kHaierAcFan = 4;
    -
    97 
    -
    98 const uint8_t kHaierAcFanAuto = 0;
    -
    99 const uint8_t kHaierAcFanLow = 1;
    -
    100 const uint8_t kHaierAcFanMed = 2;
    -
    101 const uint8_t kHaierAcFanHigh = 3;
    -
    102 
    -
    103 const uint16_t kHaierAcMaxTime = (23 * 60) + 59;
    -
    104 
    -
    105 const uint8_t kHaierAcSleepBit = 0b01000000;
    -
    106 
    -
    107 // Legacy Haier AC defines.
    -
    108 #define HAIER_AC_MIN_TEMP kHaierAcMinTemp
    -
    109 #define HAIER_AC_DEF_TEMP kHaierAcDefTemp
    -
    110 #define HAIER_AC_MAX_TEMP kHaierAcMaxTemp
    -
    111 #define HAIER_AC_CMD_OFF kHaierAcCmdOff
    -
    112 #define HAIER_AC_CMD_ON kHaierAcCmdOn
    -
    113 #define HAIER_AC_CMD_MODE kHaierAcCmdMode
    -
    114 #define HAIER_AC_CMD_FAN kHaierAcCmdFan
    -
    115 #define HAIER_AC_CMD_TEMP_UP kHaierAcCmdTempUp
    -
    116 #define HAIER_AC_CMD_TEMP_DOWN kHaierAcCmdTempDown
    -
    117 #define HAIER_AC_CMD_SLEEP kHaierAcCmdSleep
    -
    118 #define HAIER_AC_CMD_TIMER_SET kHaierAcCmdTimerSet
    -
    119 #define HAIER_AC_CMD_TIMER_CANCEL kHaierAcCmdTimerCancel
    -
    120 #define HAIER_AC_CMD_HEALTH kHaierAcCmdHealth
    -
    121 #define HAIER_AC_CMD_SWING kHaierAcCmdSwing
    -
    122 #define HAIER_AC_SWING_OFF kHaierAcSwingOff
    -
    123 #define HAIER_AC_SWING_UP kHaierAcSwingUp
    -
    124 #define HAIER_AC_SWING_DOWN kHaierAcSwingDown
    -
    125 #define HAIER_AC_SWING_CHG kHaierAcSwingChg
    -
    126 #define HAIER_AC_AUTO kHaierAcAuto
    -
    127 #define HAIER_AC_COOL kHaierAcCool
    -
    128 #define HAIER_AC_DRY kHaierAcDry
    -
    129 #define HAIER_AC_HEAT kHaierAcHeat
    -
    130 #define HAIER_AC_FAN kHaierAcFan
    -
    131 #define HAIER_AC_FAN_AUTO kHaierAcFanAuto
    -
    132 #define HAIER_AC_FAN_LOW kHaierAcFanLow
    -
    133 #define HAIER_AC_FAN_MED kHaierAcFanMed
    -
    134 #define HAIER_AC_FAN_HIGH kHaierAcFanHigh
    -
    135 
    - - -
    139  struct {
    -
    140  // Byte 0
    -
    141  uint8_t Prefix;
    -
    142  // Byte 1
    -
    143  uint8_t Swing:4;
    -
    144  uint8_t Temp :4; // 16C~30C
    -
    145  // Byte 2
    -
    146  uint8_t :8;
    -
    147  // Byte 3
    -
    148  uint8_t :1;
    -
    149  uint8_t Health:1;
    -
    150  uint8_t :6;
    -
    151  // Byte 4
    -
    152  uint8_t :6;
    -
    153  uint8_t Power:1;
    -
    154  uint8_t :1;
    -
    155  // Byte 5
    -
    156  uint8_t :5;
    -
    157  uint8_t Fan:3;
    -
    158  // Byte 6
    -
    159  uint8_t :6;
    -
    160  uint8_t Turbo:2;
    -
    161  // Byte 7
    -
    162  uint8_t :5;
    -
    163  uint8_t Mode:3;
    -
    164  // Byte 8
    -
    165  uint8_t :7;
    -
    166  uint8_t Sleep:1;
    -
    167  // Byte 9
    -
    168  uint8_t :8;
    -
    169  // Byte 10
    -
    170  uint8_t :8;
    -
    171  // Byte 11
    -
    172  uint8_t :8;
    -
    173  // Byte 12
    -
    174  uint8_t Button:4;
    -
    175  uint8_t :4;
    -
    176  // Byte 13
    -
    177  uint8_t Sum;
    -
    178  };
    -
    179 };
    -
    180 
    -
    181 const uint8_t kHaierAcYrw02Prefix = 0xA6;
    -
    182 
    -
    183 const uint8_t kHaierAcYrw02SwingOff = 0x0;
    -
    184 const uint8_t kHaierAcYrw02SwingTop = 0x1;
    -
    185 const uint8_t kHaierAcYrw02SwingMiddle = 0x2; // Not available in heat mode.
    -
    186 const uint8_t kHaierAcYrw02SwingBottom = 0x3; // Only available in heat mode.
    -
    187 const uint8_t kHaierAcYrw02SwingDown = 0xA;
    -
    188 const uint8_t kHaierAcYrw02SwingAuto = 0xC; // Airflow
    -
    189 
    -
    190 const uint8_t kHaierAcYrw02FanHigh = 0b001;
    -
    191 const uint8_t kHaierAcYrw02FanMed = 0b010;
    -
    192 const uint8_t kHaierAcYrw02FanLow = 0b011;
    -
    193 const uint8_t kHaierAcYrw02FanAuto = 0b101;
    -
    194 
    -
    195 const uint8_t kHaierAcYrw02TurboOff = 0x0;
    -
    196 const uint8_t kHaierAcYrw02TurboHigh = 0x1;
    -
    197 const uint8_t kHaierAcYrw02TurboLow = 0x2;
    -
    198 
    -
    199 const uint8_t kHaierAcYrw02Auto = 0b000; // 0
    -
    200 const uint8_t kHaierAcYrw02Cool = 0b001; // 1
    -
    201 const uint8_t kHaierAcYrw02Dry = 0b010; // 2
    -
    202 const uint8_t kHaierAcYrw02Heat = 0b100; // 4
    -
    203 const uint8_t kHaierAcYrw02Fan = 0b110; // 5
    -
    204 
    -
    205 const uint8_t kHaierAcYrw02ButtonTempUp = 0x0;
    -
    206 const uint8_t kHaierAcYrw02ButtonTempDown = 0x1;
    -
    207 const uint8_t kHaierAcYrw02ButtonSwing = 0x2;
    -
    208 const uint8_t kHaierAcYrw02ButtonFan = 0x4;
    -
    209 const uint8_t kHaierAcYrw02ButtonPower = 0x5;
    -
    210 const uint8_t kHaierAcYrw02ButtonMode = 0x6;
    -
    211 const uint8_t kHaierAcYrw02ButtonHealth = 0x7;
    -
    212 const uint8_t kHaierAcYrw02ButtonTurbo = 0x8;
    -
    213 const uint8_t kHaierAcYrw02ButtonSleep = 0xB;
    -
    214 
    -
    215 // Legacy Haier YRW02 remote defines.
    -
    216 #define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff
    -
    217 #define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop
    -
    218 #define HAIER_AC_YRW02_SWING_MIDDLE kHaierAcYrw02SwingMiddle
    -
    219 #define HAIER_AC_YRW02_SWING_BOTTOM kHaierAcYrw02SwingBottom
    -
    220 #define HAIER_AC_YRW02_SWING_DOWN kHaierAcYrw02SwingDown
    -
    221 #define HAIER_AC_YRW02_SWING_AUTO kHaierAcYrw02SwingAuto
    -
    222 #define HAIER_AC_YRW02_FAN_HIGH kHaierAcYrw02FanHigh
    -
    223 #define HAIER_AC_YRW02_FAN_MED kHaierAcYrw02FanMed
    -
    224 #define HAIER_AC_YRW02_FAN_LOW kHaierAcYrw02FanLow
    -
    225 #define HAIER_AC_YRW02_FAN_AUTO kHaierAcYrw02FanAuto
    -
    226 #define HAIER_AC_YRW02_TURBO_OFF kHaierAcYrw02TurboOff
    -
    227 #define HAIER_AC_YRW02_TURBO_HIGH kHaierAcYrw02TurboHigh
    -
    228 #define HAIER_AC_YRW02_TURBO_LOW kHaierAcYrw02TurboLow
    -
    229 #define HAIER_AC_YRW02_AUTO kHaierAcYrw02Auto
    -
    230 #define HAIER_AC_YRW02_COOL kHaierAcYrw02Cool
    -
    231 #define HAIER_AC_YRW02_DRY kHaierAcYrw02Dry
    -
    232 #define HAIER_AC_YRW02_HEAT kHaierAcYrw02Heat
    -
    233 #define HAIER_AC_YRW02_FAN kHaierAcYrw02Fan
    -
    234 #define HAIER_AC_YRW02_BUTTON_TEMP_UP kHaierAcYrw02ButtonTempUp
    -
    235 #define HAIER_AC_YRW02_BUTTON_TEMP_DOWN kHaierAcYrw02ButtonTempDown
    -
    236 #define HAIER_AC_YRW02_BUTTON_SWING kHaierAcYrw02ButtonSwing
    -
    237 #define HAIER_AC_YRW02_BUTTON_FAN kHaierAcYrw02ButtonFan
    -
    238 #define HAIER_AC_YRW02_BUTTON_POWER kHaierAcYrw02ButtonPower
    -
    239 #define HAIER_AC_YRW02_BUTTON_MODE kHaierAcYrw02ButtonMode
    -
    240 #define HAIER_AC_YRW02_BUTTON_HEALTH kHaierAcYrw02ButtonHealth
    -
    241 #define HAIER_AC_YRW02_BUTTON_TURBO kHaierAcYrw02ButtonTurbo
    -
    242 #define HAIER_AC_YRW02_BUTTON_SLEEP kHaierAcYrw02ButtonSleep
    -
    243 
    -
    244 // Classes
    -
    246 class IRHaierAC {
    -
    247  public:
    -
    248  explicit IRHaierAC(const uint16_t pin, const bool inverted = false,
    -
    249  const bool use_modulation = true);
    -
    250 #if SEND_HAIER_AC
    -
    251  void send(const uint16_t repeat = kHaierAcDefaultRepeat);
    -
    256  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    257 #endif // SEND_HAIER_AC
    -
    258  void begin(void);
    -
    259 
    -
    260  void setCommand(const uint8_t command);
    -
    261  uint8_t getCommand(void) const;
    -
    262 
    -
    263  void setTemp(const uint8_t temp);
    -
    264  uint8_t getTemp(void) const;
    -
    265 
    -
    266  void setFan(const uint8_t speed);
    -
    267  uint8_t getFan(void) const;
    -
    268 
    -
    269  uint8_t getMode(void) const;
    -
    270  void setMode(const uint8_t mode);
    -
    271 
    -
    272  bool getSleep(void) const;
    -
    273  void setSleep(const bool on);
    -
    274  bool getHealth(void) const;
    -
    275  void setHealth(const bool on);
    -
    276 
    -
    277  int16_t getOnTimer(void) const;
    -
    278  void setOnTimer(const uint16_t mins);
    -
    279  int16_t getOffTimer(void) const;
    -
    280  void setOffTimer(const uint16_t mins);
    -
    281  void cancelTimers(void);
    -
    282 
    -
    283  uint16_t getCurrTime(void) const;
    -
    284  void setCurrTime(const uint16_t mins);
    -
    285 
    -
    286  uint8_t getSwing(void) const;
    -
    287  void setSwing(const uint8_t state);
    -
    288 
    -
    289  uint8_t* getRaw(void);
    -
    290  void setRaw(const uint8_t new_code[]);
    -
    291  static bool validChecksum(uint8_t state[],
    -
    292  const uint16_t length = kHaierACStateLength);
    -
    293  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    294  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    295  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    296  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    297  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    298  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    299  stdAc::state_t toCommon(void) const;
    -
    300  String toString(void) const;
    -
    301 #ifndef UNIT_TEST
    -
    302 
    -
    303  private:
    - -
    305 #else // UNIT_TEST
    -
    306  IRsendTest _irsend;
    -
    308 #endif
    - -
    311  void stateReset(void);
    -
    312  void checksum(void);
    -
    313 };
    -
    314 
    - -
    317  public:
    -
    318  explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false,
    -
    319  const bool use_modulation = true);
    -
    320 #if SEND_HAIER_AC_YRW02
    -
    321  void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat);
    -
    326  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    327 #endif // SEND_HAIER_AC_YRW02
    -
    328  void begin(void);
    -
    329 
    -
    330  void setButton(const uint8_t button);
    -
    331  uint8_t getButton(void) const;
    -
    332 
    -
    333  void setTemp(const uint8_t temp);
    -
    334  uint8_t getTemp(void) const;
    -
    335 
    -
    336  void setFan(const uint8_t speed);
    -
    337  uint8_t getFan(void) const;
    -
    338 
    -
    339  uint8_t getMode(void) const;
    -
    340  void setMode(const uint8_t mode);
    -
    341 
    -
    342  bool getPower(void) const;
    -
    343  void setPower(const bool on);
    -
    344  void on(void);
    -
    345  void off(void);
    -
    346 
    -
    347  bool getSleep(void) const;
    -
    348  void setSleep(const bool on);
    -
    349  bool getHealth(void) const;
    -
    350  void setHealth(const bool on);
    -
    351 
    -
    352  uint8_t getTurbo(void) const;
    -
    353  void setTurbo(const uint8_t speed);
    -
    354 
    -
    355  uint8_t getSwing(void) const;
    -
    356  void setSwing(const uint8_t pos);
    -
    357 
    -
    358  uint8_t* getRaw(void);
    -
    359  void setRaw(const uint8_t new_code[]);
    -
    360  static bool validChecksum(uint8_t state[],
    -
    361  const uint16_t length = kHaierACYRW02StateLength);
    -
    362  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    363  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    364  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    365  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    366  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    367  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    368  stdAc::state_t toCommon(void) const;
    -
    369  String toString(void) const;
    -
    370 #ifndef UNIT_TEST
    -
    371 
    -
    372  private:
    - -
    374 #else // UNIT_TEST
    -
    375  IRsendTest _irsend;
    -
    377 #endif // UNIT_TEST
    - -
    380  void stateReset(void);
    -
    381  void checksum(void);
    -
    382 };
    -
    383 #endif // IR_HAIER_H_
    -
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Haier.cpp:884
    -
    const uint8_t kHaierAcCmdFan
    Definition: ir_Haier.h:78
    -
    const uint8_t kHaierAcFanHigh
    Definition: ir_Haier.h:101
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Haier.cpp:545
    -
    const uint16_t kHaierAcYrw02DefaultRepeat
    Definition: IRremoteESP8266.h:1021
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Haier.cpp:659
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Haier.cpp:684
    -
    int16_t getOffTimer(void) const
    Get the Off Timer value/setting of the A/C.
    Definition: ir_Haier.cpp:280
    -
    Native representation of a Haier YRW02 A/C message.
    Definition: ir_Haier.h:137
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Haier.cpp:214
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Haier.cpp:833
    -
    const uint8_t kHaierAcYrw02Fan
    Definition: ir_Haier.h:203
    -
    const uint16_t kHaierAcDefaultRepeat
    Definition: IRremoteESP8266.h:1018
    -
    const uint8_t kHaierAcYrw02FanMed
    Definition: ir_Haier.h:191
    -
    const uint8_t kHaierAcSwingChg
    Definition: ir_Haier.h:90
    -
    void setSwing(const uint8_t state)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Haier.cpp:331
    -
    uint8_t Temp
    Definition: ir_Haier.h:144
    -
    const uint8_t kHaierAcAuto
    Definition: ir_Haier.h:92
    -
    const uint8_t kHaierAcYrw02ButtonTurbo
    Definition: ir_Haier.h:212
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Haier.h:326
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Haier.h:373
    -
    const uint16_t kHaierACStateLength
    Definition: IRremoteESP8266.h:1016
    -
    const uint8_t kHaierAcCmdTempDown
    Definition: ir_Haier.h:80
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Haier.cpp:146
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Haier.cpp:127
    -
    uint8_t Swing
    Definition: ir_Haier.h:44
    -
    bool getHealth(void) const
    Get the Health (filter) setting of the A/C.
    Definition: ir_Haier.cpp:672
    -
    const uint8_t kHaierAcCmdMode
    Definition: ir_Haier.h:77
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kHaierAcYrw02ButtonHealth
    Definition: ir_Haier.h:211
    -
    uint16_t getCurrTime(void) const
    Get the clock value of the A/C.
    Definition: ir_Haier.cpp:290
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Haier.cpp:177
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Haier.cpp:690
    -
    const uint8_t kHaierAcCmdSleep
    Definition: ir_Haier.h:81
    -
    HaierYRW02Protocol _
    Definition: ir_Haier.h:379
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Haier.cpp:360
    -
    uint8_t Prefix
    Definition: ir_Haier.h:37
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Haier.cpp:238
    -
    uint8_t Temp
    Definition: ir_Haier.h:40
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Haier.cpp:193
    -
    uint8_t OnTimer
    Definition: ir_Haier.h:48
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Haier.cpp:820
    -
    const uint8_t kHaierAcYrw02Auto
    Definition: ir_Haier.h:199
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Haier.cpp:139
    -
    const uint8_t kHaierAcCmdSwing
    Definition: ir_Haier.h:85
    -
    const uint8_t kHaierAcYrw02Prefix
    Definition: ir_Haier.h:181
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Haier.cpp:257
    -
    const uint8_t kHaierAcYrw02SwingTop
    Definition: ir_Haier.h:184
    -
    uint8_t getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Haier.cpp:710
    -
    uint8_t CurrMins
    Definition: ir_Haier.h:46
    - -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Haier.cpp:635
    -
    uint8_t raw[kHaierACYRW02StateLength]
    The state in native form.
    Definition: ir_Haier.h:138
    -
    uint8_t Mode
    Definition: ir_Haier.h:58
    -
    uint8_t Power
    Definition: ir_Haier.h:153
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Haier.cpp:452
    -
    const uint8_t kHaierAcCmdTimerSet
    Definition: ir_Haier.h:82
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Haier.cpp:204
    -
    const uint8_t kHaierAcCmdTempUp
    Definition: ir_Haier.h:79
    -
    void cancelTimers(void)
    Cancel/disable the On & Off timers.
    Definition: ir_Haier.cpp:311
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Haier.cpp:570
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Haier.h:304
    -
    void setSwing(const uint8_t pos)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Haier.cpp:755
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Haier.cpp:347
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kHaierAcFanLow
    Definition: ir_Haier.h:99
    -
    uint8_t getSwing(void) const
    Get the Vertical Swing position setting of the A/C.
    Definition: ir_Haier.cpp:749
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    bool getHealth(void) const
    Get the Health (filter) setting of the A/C.
    Definition: ir_Haier.cpp:251
    -
    const uint8_t kHaierAcYrw02ButtonSleep
    Definition: ir_Haier.h:213
    -
    const uint8_t kHaierAcPrefix
    Definition: ir_Haier.h:70
    -
    const uint16_t kHaierACYRW02StateLength
    Definition: IRremoteESP8266.h:1019
    -
    uint8_t Prefix
    Definition: ir_Haier.h:141
    -
    void setOnTimer(const uint16_t mins)
    Set & enable the On Timer.
    Definition: ir_Haier.cpp:294
    -
    uint8_t Sleep
    Definition: ir_Haier.h:166
    -
    const uint8_t kHaierAcSwingOff
    Definition: ir_Haier.h:87
    -
    const uint8_t kHaierAcSwingDown
    Definition: ir_Haier.h:89
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Haier.cpp:678
    - -
    const uint8_t kHaierAcYrw02FanHigh
    Definition: ir_Haier.h:190
    -
    const uint8_t kHaierAcFan
    Definition: ir_Haier.h:96
    -
    const uint8_t kHaierAcYrw02FanLow
    Definition: ir_Haier.h:192
    -
    uint8_t Fan
    Definition: ir_Haier.h:55
    -
    const uint8_t kHaierAcYrw02SwingAuto
    Definition: ir_Haier.h:188
    -
    const uint8_t kHaierAcCool
    Definition: ir_Haier.h:93
    -
    uint8_t Turbo
    Definition: ir_Haier.h:160
    -
    const uint8_t kHaierAcDefTemp
    Definition: ir_Haier.h:73
    -
    uint8_t Mode
    Definition: ir_Haier.h:163
    -
    const uint8_t kHaierAcYrw02SwingOff
    Definition: ir_Haier.h:183
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Haier.cpp:374
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Haier.cpp:264
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Haier.cpp:736
    -
    void setHealth(const bool on)
    Set the Health (filter) setting of the A/C.
    Definition: ir_Haier.cpp:244
    -
    const uint8_t kHaierAcYrw02ButtonTempUp
    Definition: ir_Haier.h:205
    -
    uint8_t Swing
    Definition: ir_Haier.h:143
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Haier.cpp:693
    -
    void setHealth(const bool on)
    Set the Health (filter) setting of the A/C.
    Definition: ir_Haier.cpp:665
    -
    const uint8_t kHaierAcMinTemp
    Definition: ir_Haier.h:72
    -
    const uint8_t kHaierAcYrw02SwingDown
    Definition: ir_Haier.h:187
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Haier.cpp:121
    -
    uint8_t getSwing(void) const
    Get the Vertical Swing position setting of the A/C.
    Definition: ir_Haier.cpp:325
    -
    HaierProtocol _
    Definition: ir_Haier.h:310
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Haier.cpp:556
    -
    uint8_t Health
    Definition: ir_Haier.h:51
    -
    const uint8_t kHaierAcCmdHealth
    Definition: ir_Haier.h:84
    -
    uint8_t unknown
    Definition: ir_Haier.h:43
    -
    uint8_t CurrHours
    Definition: ir_Haier.h:42
    -
    uint8_t remote_state[kHaierACStateLength]
    < The state in native IR code form
    Definition: ir_Haier.h:34
    -
    const uint8_t kHaierAcCmdOn
    Definition: ir_Haier.h:76
    -
    const uint8_t kHaierAcYrw02SwingMiddle
    Definition: ir_Haier.h:185
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Haier.cpp:730
    -
    const uint8_t kHaierAcYrw02ButtonSwing
    Definition: ir_Haier.h:207
    -
    const uint8_t kHaierAcYrw02TurboLow
    Definition: ir_Haier.h:197
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Haier.cpp:583
    -
    const uint8_t kHaierAcFanMed
    Definition: ir_Haier.h:100
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Haier.cpp:703
    -
    const uint8_t kHaierAcYrw02TurboOff
    Definition: ir_Haier.h:195
    -
    uint8_t Health
    Definition: ir_Haier.h:149
    -
    const uint8_t kHaierAcYrw02ButtonTempDown
    Definition: ir_Haier.h:206
    -
    Class for handling detailed Haier A/C messages.
    Definition: ir_Haier.h:246
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Haier.cpp:641
    -
    uint8_t OnMins
    Definition: ir_Haier.h:60
    -
    void setOffTimer(const uint16_t mins)
    Set & enable the Off Timer.
    Definition: ir_Haier.cpp:303
    -
    const uint8_t kHaierAcYrw02FanAuto
    Definition: ir_Haier.h:193
    -
    const uint8_t kHaierAcYrw02TurboHigh
    Definition: ir_Haier.h:196
    -
    const uint8_t kHaierAcMaxTemp
    Definition: ir_Haier.h:74
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Haier.cpp:858
    -
    void send(const uint16_t repeat=kHaierAcYrw02DefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Haier.cpp:550
    -
    void setButton(const uint8_t button)
    Set the Button/Command setting of the A/C.
    Definition: ir_Haier.cpp:596
    -
    const uint8_t kHaierAcYrw02ButtonFan
    Definition: ir_Haier.h:208
    -
    const uint8_t kHaierAcYrw02Cool
    Definition: ir_Haier.h:200
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Haier.cpp:389
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Haier.cpp:590
    -
    const uint8_t kHaierAcYrw02SwingBottom
    Definition: ir_Haier.h:186
    -
    uint8_t OffHours
    Definition: ir_Haier.h:50
    -
    const uint8_t kHaierAcFanAuto
    Definition: ir_Haier.h:98
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Haier.cpp:805
    -
    const uint8_t kHaierAcCmdOff
    Definition: ir_Haier.h:75
    -
    uint8_t Sleep
    Definition: ir_Haier.h:61
    -
    IRHaierACYRW02(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Haier.cpp:540
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Haier.cpp:425
    -
    int16_t getOnTimer(void) const
    Get the On Timer value/setting of the A/C.
    Definition: ir_Haier.cpp:270
    -
    const uint8_t kHaierAcYrw02Heat
    Definition: ir_Haier.h:202
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Haier.cpp:113
    -
    void setCommand(const uint8_t command)
    Set the Command/Button setting of the A/C.
    Definition: ir_Haier.cpp:152
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Haier.h:256
    -
    const uint8_t kHaierAcSleepBit
    Definition: ir_Haier.h:105
    -
    const uint8_t kHaierAcDry
    Definition: ir_Haier.h:94
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kHaierACYRW02StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Haier.cpp:564
    -
    const uint8_t kHaierAcSwingUp
    Definition: ir_Haier.h:88
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Haier.cpp:414
    -
    const uint8_t kHaierAcYrw02ButtonMode
    Definition: ir_Haier.h:210
    -
    const uint8_t kHaierAcHeat
    Definition: ir_Haier.h:95
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Haier.cpp:697
    -
    Native representation of a Haier HSU07-HEA03 A/C message.
    Definition: ir_Haier.h:32
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Haier.cpp:102
    -
    const uint16_t kHaierAcMaxTime
    Definition: ir_Haier.h:103
    -
    void setCurrTime(const uint16_t mins)
    Set the clock value for the A/C.
    Definition: ir_Haier.cpp:319
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Haier.cpp:845
    -
    Class for handling detailed Haier ACYRW02 A/C messages.
    Definition: ir_Haier.h:316
    -
    IRHaierAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Haier.cpp:97
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Haier.cpp:220
    -
    uint8_t getCommand(void) const
    Get the Command/Button setting of the A/C.
    Definition: ir_Haier.cpp:171
    -
    uint8_t Fan
    Definition: ir_Haier.h:157
    -
    void setTurbo(const uint8_t speed)
    Set the Turbo setting of the A/C.
    Definition: ir_Haier.cpp:718
    -
    const uint8_t kHaierAcYrw02Dry
    Definition: ir_Haier.h:201
    -
    uint8_t OnHours
    Definition: ir_Haier.h:57
    -
    uint8_t OffTimer
    Definition: ir_Haier.h:47
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t Command
    Definition: ir_Haier.h:39
    -
    uint8_t Button
    Definition: ir_Haier.h:174
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Haier.cpp:778
    -
    uint8_t OffMins
    Definition: ir_Haier.h:54
    -
    uint8_t Sum
    Definition: ir_Haier.h:177
    -
    uint8_t Sum
    Definition: ir_Haier.h:64
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Haier.cpp:402
    -
    const uint8_t kHaierAcYrw02ButtonPower
    Definition: ir_Haier.h:209
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Haier.cpp:619
    -
    uint8_t getButton(void) const
    Get the Button/Command setting of the A/C.
    Definition: ir_Haier.cpp:613
    -
    const uint8_t kHaierAcCmdTimerCancel
    Definition: ir_Haier.h:83
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Haier.cpp:791
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    -
    void send(const uint16_t repeat=kHaierAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Haier.cpp:107
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8cpp.html deleted file mode 100644 index 705884418..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8cpp.html +++ /dev/null @@ -1,423 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Hitachi.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Hitachi.cpp File Reference
    -
    -
    - -

    Support for Hitachi A/C protocols. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kHitachiAcHdrMark = 3300
     
    const uint16_t kHitachiAcHdrSpace = 1700
     
    const uint16_t kHitachiAc1HdrMark = 3400
     
    const uint16_t kHitachiAc1HdrSpace = 3400
     
    const uint16_t kHitachiAcBitMark = 400
     
    const uint16_t kHitachiAcOneSpace = 1250
     
    const uint16_t kHitachiAcZeroSpace = 500
     
    const uint32_t kHitachiAcMinGap = kDefaultMessageGap
     
    const uint16_t kHitachiAc424LdrMark = 29784
     
    const uint16_t kHitachiAc424LdrSpace = 49290
     
    const uint16_t kHitachiAc424HdrMark = 3416
     
    const uint16_t kHitachiAc424HdrSpace = 1604
     
    const uint16_t kHitachiAc424BitMark = 463
     
    const uint16_t kHitachiAc424OneSpace = 1208
     
    const uint16_t kHitachiAc424ZeroSpace = 372
     
    const uint16_t kHitachiAc3HdrMark = 3400
     
    const uint16_t kHitachiAc3HdrSpace = 1660
     
    const uint16_t kHitachiAc3BitMark = 460
     
    const uint16_t kHitachiAc3OneSpace = 1250
     
    const uint16_t kHitachiAc3ZeroSpace = 410
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kHitachiAc1HdrMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAc1HdrMark = 3400
    -
    - -
    -
    - -

    ◆ kHitachiAc1HdrSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc1HdrSpace = 3400
    -
    - -
    -
    - -

    ◆ kHitachiAc3BitMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAc3BitMark = 460
    -
    - -
    -
    - -

    ◆ kHitachiAc3HdrMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAc3HdrMark = 3400
    -
    - -
    -
    - -

    ◆ kHitachiAc3HdrSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc3HdrSpace = 1660
    -
    - -
    -
    - -

    ◆ kHitachiAc3OneSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc3OneSpace = 1250
    -
    - -
    -
    - -

    ◆ kHitachiAc3ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc3ZeroSpace = 410
    -
    - -
    -
    - -

    ◆ kHitachiAc424BitMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424BitMark = 463
    -
    - -
    -
    - -

    ◆ kHitachiAc424HdrMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424HdrMark = 3416
    -
    - -
    -
    - -

    ◆ kHitachiAc424HdrSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424HdrSpace = 1604
    -
    - -
    -
    - -

    ◆ kHitachiAc424LdrMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424LdrMark = 29784
    -
    - -
    -
    - -

    ◆ kHitachiAc424LdrSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424LdrSpace = 49290
    -
    - -
    -
    - -

    ◆ kHitachiAc424OneSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424OneSpace = 1208
    -
    - -
    -
    - -

    ◆ kHitachiAc424ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAc424ZeroSpace = 372
    -
    - -
    -
    - -

    ◆ kHitachiAcBitMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAcBitMark = 400
    -
    - -
    -
    - -

    ◆ kHitachiAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kHitachiAcHdrMark = 3300
    -
    - -
    -
    - -

    ◆ kHitachiAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAcHdrSpace = 1700
    -
    - -
    -
    - -

    ◆ kHitachiAcMinGap

    - -
    -
    - - - - -
    const uint32_t kHitachiAcMinGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kHitachiAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAcOneSpace = 1250
    -
    - -
    -
    - -

    ◆ kHitachiAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kHitachiAcZeroSpace = 500
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h.html deleted file mode 100644 index 700ce4855..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h.html +++ /dev/null @@ -1,1413 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Hitachi.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Hitachi.h File Reference
    -
    -
    - -

    Support for Hitachi A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Classes

    union  HitachiProtocol
     Native representation of a Hitachi 224-bit A/C message. More...
     
    union  Hitachi424Protocol
     Native representation of a Hitachi 53-byte/424-bit A/C message. More...
     
    union  Hitachi1Protocol
     Native representation of a Hitachi 104-bit A/C message. More...
     
    class  IRHitachiAc
     Class for handling detailed Hitachi 224-bit A/C messages. More...
     
    class  IRHitachiAc1
     Class for handling detailed Hitachi 104-bit A/C messages. More...
     
    class  IRHitachiAc424
     Class for handling detailed Hitachi 53-byte/424-bit A/C messages. More...
     
    class  IRHitachiAc3
     Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages. More...
     
    class  IRHitachiAc344
     Class for handling detailed Hitachi 344-bit A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kHitachiAcFreq = 38000
     
    const uint8_t kHitachiAcAuto = 2
     
    const uint8_t kHitachiAcHeat = 3
     
    const uint8_t kHitachiAcCool = 4
     
    const uint8_t kHitachiAcDry = 5
     
    const uint8_t kHitachiAcFan = 0xC
     
    const uint8_t kHitachiAcFanAuto = 1
     
    const uint8_t kHitachiAcFanLow = 2
     
    const uint8_t kHitachiAcFanMed = 3
     
    const uint8_t kHitachiAcFanHigh = 5
     
    const uint8_t kHitachiAcMinTemp = 16
     
    const uint8_t kHitachiAcMaxTemp = 32
     
    const uint8_t kHitachiAcAutoTemp = 23
     
    const uint8_t kHitachiAc424ButtonPowerMode = 0x13
     
    const uint8_t kHitachiAc424ButtonFan = 0x42
     
    const uint8_t kHitachiAc424ButtonTempDown = 0x43
     
    const uint8_t kHitachiAc424ButtonTempUp = 0x44
     
    const uint8_t kHitachiAc424ButtonSwingV = 0x81
     
    const uint8_t kHitachiAc424ButtonSwingH = 0x8C
     
    const uint8_t kHitachiAc344ButtonPowerMode = kHitachiAc424ButtonPowerMode
     
    const uint8_t kHitachiAc344ButtonFan = kHitachiAc424ButtonFan
     
    const uint8_t kHitachiAc344ButtonTempDown = kHitachiAc424ButtonTempDown
     
    const uint8_t kHitachiAc344ButtonTempUp = kHitachiAc424ButtonTempUp
     
    const uint8_t kHitachiAc344ButtonSwingV = kHitachiAc424ButtonSwingV
     
    const uint8_t kHitachiAc344ButtonSwingH = kHitachiAc424ButtonSwingH
     
    const uint8_t kHitachiAc424MinTemp = 16
     
    const uint8_t kHitachiAc424MaxTemp = 32
     
    const uint8_t kHitachiAc344MinTemp = kHitachiAc424MinTemp
     
    const uint8_t kHitachiAc344MaxTemp = kHitachiAc424MaxTemp
     
    const uint8_t kHitachiAc424FanTemp = 27
     
    const uint8_t kHitachiAc424Fan = 1
     
    const uint8_t kHitachiAc424Cool = 3
     
    const uint8_t kHitachiAc424Dry = 5
     
    const uint8_t kHitachiAc424Heat = 6
     
    const uint8_t kHitachiAc344Fan = kHitachiAc424Fan
     
    const uint8_t kHitachiAc344Cool = kHitachiAc424Cool
     
    const uint8_t kHitachiAc344Dry = kHitachiAc424Dry
     
    const uint8_t kHitachiAc344Heat = kHitachiAc424Heat
     
    const uint8_t kHitachiAc424FanMin = 1
     
    const uint8_t kHitachiAc424FanLow = 2
     
    const uint8_t kHitachiAc424FanMedium = 3
     
    const uint8_t kHitachiAc424FanHigh = 4
     
    const uint8_t kHitachiAc424FanAuto = 5
     
    const uint8_t kHitachiAc424FanMax = 6
     
    const uint8_t kHitachiAc424FanMaxDry = 2
     
    const uint8_t kHitachiAc344FanMin = kHitachiAc424FanMin
     
    const uint8_t kHitachiAc344FanLow = kHitachiAc424FanLow
     
    const uint8_t kHitachiAc344FanMedium = kHitachiAc424FanMedium
     
    const uint8_t kHitachiAc344FanHigh = kHitachiAc424FanHigh
     
    const uint8_t kHitachiAc344FanAuto = kHitachiAc424FanAuto
     
    const uint8_t kHitachiAc344FanMax = kHitachiAc424FanMax
     
    const uint8_t kHitachiAc424PowerOn = 0xF1
     
    const uint8_t kHitachiAc424PowerOff = 0xE1
     
    const uint8_t kHitachiAc344SwingHAuto = 0
     
    const uint8_t kHitachiAc344SwingHRightMax = 1
     
    const uint8_t kHitachiAc344SwingHRight = 2
     
    const uint8_t kHitachiAc344SwingHMiddle = 3
     
    const uint8_t kHitachiAc344SwingHLeft = 4
     
    const uint8_t kHitachiAc344SwingHLeftMax = 5
     
    const uint8_t kHitachiAc1Model_A = 0b10
     
    const uint8_t kHitachiAc1Model_B = 0b01
     
    const uint8_t kHitachiAc1Dry = 0b0010
     
    const uint8_t kHitachiAc1Fan = 0b0100
     
    const uint8_t kHitachiAc1Cool = 0b0110
     
    const uint8_t kHitachiAc1Heat = 0b1001
     
    const uint8_t kHitachiAc1Auto = 0b1110
     
    const uint8_t kHitachiAc1FanAuto = 1
     
    const uint8_t kHitachiAc1FanHigh = 2
     
    const uint8_t kHitachiAc1FanMed = 4
     
    const uint8_t kHitachiAc1FanLow = 8
     
    const uint8_t kHitachiAc1TempSize = 5
     
    const uint8_t kHitachiAc1TempDelta = 7
     
    const uint8_t kHitachiAc1TempAuto = 25
     
    const uint8_t kHitachiAc1TimerSize = 16
     
    const uint8_t kHitachiAc1SleepOff = 0b000
     
    const uint8_t kHitachiAc1Sleep1 = 0b001
     
    const uint8_t kHitachiAc1Sleep2 = 0b010
     
    const uint8_t kHitachiAc1Sleep3 = 0b011
     
    const uint8_t kHitachiAc1Sleep4 = 0b100
     
    const uint8_t kHitachiAc1ChecksumStartByte = 5
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kHitachiAc1Auto

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Auto = 0b1110
    -
    - -
    -
    - -

    ◆ kHitachiAc1ChecksumStartByte

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1ChecksumStartByte = 5
    -
    - -
    -
    - -

    ◆ kHitachiAc1Cool

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Cool = 0b0110
    -
    - -
    -
    - -

    ◆ kHitachiAc1Dry

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Dry = 0b0010
    -
    - -
    -
    - -

    ◆ kHitachiAc1Fan

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Fan = 0b0100
    -
    - -
    -
    - -

    ◆ kHitachiAc1FanAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1FanAuto = 1
    -
    - -
    -
    - -

    ◆ kHitachiAc1FanHigh

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1FanHigh = 2
    -
    - -
    -
    - -

    ◆ kHitachiAc1FanLow

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1FanLow = 8
    -
    - -
    -
    - -

    ◆ kHitachiAc1FanMed

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1FanMed = 4
    -
    - -
    -
    - -

    ◆ kHitachiAc1Heat

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Heat = 0b1001
    -
    - -
    -
    - -

    ◆ kHitachiAc1Model_A

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Model_A = 0b10
    -
    - -
    -
    - -

    ◆ kHitachiAc1Model_B

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Model_B = 0b01
    -
    - -
    -
    - -

    ◆ kHitachiAc1Sleep1

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Sleep1 = 0b001
    -
    - -
    -
    - -

    ◆ kHitachiAc1Sleep2

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Sleep2 = 0b010
    -
    - -
    -
    - -

    ◆ kHitachiAc1Sleep3

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Sleep3 = 0b011
    -
    - -
    -
    - -

    ◆ kHitachiAc1Sleep4

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1Sleep4 = 0b100
    -
    - -
    -
    - -

    ◆ kHitachiAc1SleepOff

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1SleepOff = 0b000
    -
    - -
    -
    - -

    ◆ kHitachiAc1TempAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1TempAuto = 25
    -
    - -
    -
    - -

    ◆ kHitachiAc1TempDelta

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1TempDelta = 7
    -
    - -
    -
    - -

    ◆ kHitachiAc1TempSize

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1TempSize = 5
    -
    - -
    -
    - -

    ◆ kHitachiAc1TimerSize

    - -
    -
    - - - - -
    const uint8_t kHitachiAc1TimerSize = 16
    -
    - -
    -
    - -

    ◆ kHitachiAc344ButtonFan

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344ButtonFan = kHitachiAc424ButtonFan
    -
    - -
    -
    - -

    ◆ kHitachiAc344ButtonPowerMode

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344ButtonPowerMode = kHitachiAc424ButtonPowerMode
    -
    - -
    -
    - -

    ◆ kHitachiAc344ButtonSwingH

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344ButtonSwingH = kHitachiAc424ButtonSwingH
    -
    - -
    -
    - -

    ◆ kHitachiAc344ButtonSwingV

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344ButtonSwingV = kHitachiAc424ButtonSwingV
    -
    - -
    -
    - -

    ◆ kHitachiAc344ButtonTempDown

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344ButtonTempDown = kHitachiAc424ButtonTempDown
    -
    - -
    -
    - -

    ◆ kHitachiAc344ButtonTempUp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344ButtonTempUp = kHitachiAc424ButtonTempUp
    -
    - -
    -
    - -

    ◆ kHitachiAc344Cool

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344Cool = kHitachiAc424Cool
    -
    - -
    -
    - -

    ◆ kHitachiAc344Dry

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344Dry = kHitachiAc424Dry
    -
    - -
    -
    - -

    ◆ kHitachiAc344Fan

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344Fan = kHitachiAc424Fan
    -
    - -
    -
    - -

    ◆ kHitachiAc344FanAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344FanAuto = kHitachiAc424FanAuto
    -
    - -
    -
    - -

    ◆ kHitachiAc344FanHigh

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344FanHigh = kHitachiAc424FanHigh
    -
    - -
    -
    - -

    ◆ kHitachiAc344FanLow

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344FanLow = kHitachiAc424FanLow
    -
    - -
    -
    - -

    ◆ kHitachiAc344FanMax

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344FanMax = kHitachiAc424FanMax
    -
    - -
    -
    - -

    ◆ kHitachiAc344FanMedium

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344FanMedium = kHitachiAc424FanMedium
    -
    - -
    -
    - -

    ◆ kHitachiAc344FanMin

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344FanMin = kHitachiAc424FanMin
    -
    - -
    -
    - -

    ◆ kHitachiAc344Heat

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344Heat = kHitachiAc424Heat
    -
    - -
    -
    - -

    ◆ kHitachiAc344MaxTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344MaxTemp = kHitachiAc424MaxTemp
    -
    - -
    -
    - -

    ◆ kHitachiAc344MinTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344MinTemp = kHitachiAc424MinTemp
    -
    - -
    -
    - -

    ◆ kHitachiAc344SwingHAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344SwingHAuto = 0
    -
    - -
    -
    - -

    ◆ kHitachiAc344SwingHLeft

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344SwingHLeft = 4
    -
    - -
    -
    - -

    ◆ kHitachiAc344SwingHLeftMax

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344SwingHLeftMax = 5
    -
    - -
    -
    - -

    ◆ kHitachiAc344SwingHMiddle

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344SwingHMiddle = 3
    -
    - -
    -
    - -

    ◆ kHitachiAc344SwingHRight

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344SwingHRight = 2
    -
    - -
    -
    - -

    ◆ kHitachiAc344SwingHRightMax

    - -
    -
    - - - - -
    const uint8_t kHitachiAc344SwingHRightMax = 1
    -
    - -
    -
    - -

    ◆ kHitachiAc424ButtonFan

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424ButtonFan = 0x42
    -
    - -
    -
    - -

    ◆ kHitachiAc424ButtonPowerMode

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424ButtonPowerMode = 0x13
    -
    - -
    -
    - -

    ◆ kHitachiAc424ButtonSwingH

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424ButtonSwingH = 0x8C
    -
    - -
    -
    - -

    ◆ kHitachiAc424ButtonSwingV

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424ButtonSwingV = 0x81
    -
    - -
    -
    - -

    ◆ kHitachiAc424ButtonTempDown

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424ButtonTempDown = 0x43
    -
    - -
    -
    - -

    ◆ kHitachiAc424ButtonTempUp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424ButtonTempUp = 0x44
    -
    - -
    -
    - -

    ◆ kHitachiAc424Cool

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424Cool = 3
    -
    - -
    -
    - -

    ◆ kHitachiAc424Dry

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424Dry = 5
    -
    - -
    -
    - -

    ◆ kHitachiAc424Fan

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424Fan = 1
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanAuto = 5
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanHigh

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanHigh = 4
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanLow

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanLow = 2
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanMax

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanMax = 6
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanMaxDry

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanMaxDry = 2
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanMedium

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanMedium = 3
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanMin

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanMin = 1
    -
    - -
    -
    - -

    ◆ kHitachiAc424FanTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424FanTemp = 27
    -
    - -
    -
    - -

    ◆ kHitachiAc424Heat

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424Heat = 6
    -
    - -
    -
    - -

    ◆ kHitachiAc424MaxTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424MaxTemp = 32
    -
    - -
    -
    - -

    ◆ kHitachiAc424MinTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424MinTemp = 16
    -
    - -
    -
    - -

    ◆ kHitachiAc424PowerOff

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424PowerOff = 0xE1
    -
    - -
    -
    - -

    ◆ kHitachiAc424PowerOn

    - -
    -
    - - - - -
    const uint8_t kHitachiAc424PowerOn = 0xF1
    -
    - -
    -
    - -

    ◆ kHitachiAcAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAcAuto = 2
    -
    - -
    -
    - -

    ◆ kHitachiAcAutoTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAcAutoTemp = 23
    -
    - -
    -
    - -

    ◆ kHitachiAcCool

    - -
    -
    - - - - -
    const uint8_t kHitachiAcCool = 4
    -
    - -
    -
    - -

    ◆ kHitachiAcDry

    - -
    -
    - - - - -
    const uint8_t kHitachiAcDry = 5
    -
    - -
    -
    - -

    ◆ kHitachiAcFan

    - -
    -
    - - - - -
    const uint8_t kHitachiAcFan = 0xC
    -
    - -
    -
    - -

    ◆ kHitachiAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kHitachiAcFanAuto = 1
    -
    - -
    -
    - -

    ◆ kHitachiAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kHitachiAcFanHigh = 5
    -
    - -
    -
    - -

    ◆ kHitachiAcFanLow

    - -
    -
    - - - - -
    const uint8_t kHitachiAcFanLow = 2
    -
    - -
    -
    - -

    ◆ kHitachiAcFanMed

    - -
    -
    - - - - -
    const uint8_t kHitachiAcFanMed = 3
    -
    - -
    -
    - -

    ◆ kHitachiAcFreq

    - -
    -
    - - - - -
    const uint16_t kHitachiAcFreq = 38000
    -
    - -
    -
    - -

    ◆ kHitachiAcHeat

    - -
    -
    - - - - -
    const uint8_t kHitachiAcHeat = 3
    -
    - -
    -
    - -

    ◆ kHitachiAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAcMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kHitachiAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kHitachiAcMinTemp = 16
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h_source.html deleted file mode 100644 index 3faac734d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Hitachi_8h_source.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Hitachi.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Hitachi.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018-2020 David Conran
    -
    10 
    -
    11 // Supports:
    -
    12 // Brand: Hitachi, Model: RAS-35THA6 remote
    -
    13 // Brand: Hitachi, Model: LT0541-HTA remote (HITACHI_AC1)
    -
    14 // Brand: Hitachi, Model: Series VI A/C (Circa 2007) (HITACHI_AC1)
    -
    15 // Brand: Hitachi, Model: RAR-8P2 remote (HITACHI_AC424)
    -
    16 // Brand: Hitachi, Model: RAS-AJ25H A/C (HITACHI_AC424)
    -
    17 // Brand: Hitachi, Model: PC-LH3B (HITACHI_AC3)
    -
    18 // Brand: Hitachi, Model: KAZE-312KSDP A/C (HITACHI_AC1)
    -
    19 // Brand: Hitachi, Model: R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)
    -
    20 // Brand: Hitachi, Model: RAS-22NK A/C (HITACHI_AC344)
    -
    21 // Brand: Hitachi, Model: RF11T1 remote (HITACHI_AC344)
    -
    22 
    -
    23 #ifndef IR_HITACHI_H_
    -
    24 #define IR_HITACHI_H_
    -
    25 
    -
    26 #define __STDC_LIMIT_MACROS
    -
    27 #include <stdint.h>
    -
    28 #ifndef UNIT_TEST
    -
    29 #include <Arduino.h>
    -
    30 #endif
    -
    31 #include "IRremoteESP8266.h"
    -
    32 #include "IRsend.h"
    -
    33 #ifdef UNIT_TEST
    -
    34 #include "IRsend_test.h"
    -
    35 #endif
    -
    36 
    - - -
    40  struct {
    -
    41  // Byte 0~9
    -
    42  uint8_t pad0[10];
    -
    43  // Byte 10
    -
    44  uint8_t Mode :8;
    -
    45  // Byte 11
    -
    46  uint8_t Temp :8;
    -
    47  // Byte 12
    -
    48  uint8_t :8;
    -
    49  // Byte 13
    -
    50  uint8_t Fan :8;
    -
    51  // Byte 14
    -
    52  uint8_t :7;
    -
    53  uint8_t SwingV :1;
    -
    54  // Byte 15
    -
    55  uint8_t :7;
    -
    56  uint8_t SwingH :1;
    -
    57  // Byte 16
    -
    58  uint8_t :8;
    -
    59  // Byte 17
    -
    60  uint8_t Power :1;
    -
    61  uint8_t :7;
    -
    62  // Byte 18~26
    -
    63  uint8_t pad1[9];
    -
    64  // Byte 27
    -
    65  uint8_t Sum :8;
    -
    66  };
    -
    67 };
    -
    68 
    -
    69 // Constants
    -
    70 const uint16_t kHitachiAcFreq = 38000; // Hz.
    -
    71 const uint8_t kHitachiAcAuto = 2;
    -
    72 const uint8_t kHitachiAcHeat = 3;
    -
    73 const uint8_t kHitachiAcCool = 4;
    -
    74 const uint8_t kHitachiAcDry = 5;
    -
    75 const uint8_t kHitachiAcFan = 0xC;
    -
    76 const uint8_t kHitachiAcFanAuto = 1;
    -
    77 const uint8_t kHitachiAcFanLow = 2;
    -
    78 const uint8_t kHitachiAcFanMed = 3;
    -
    79 const uint8_t kHitachiAcFanHigh = 5;
    -
    80 const uint8_t kHitachiAcMinTemp = 16; // 16C
    -
    81 const uint8_t kHitachiAcMaxTemp = 32; // 32C
    -
    82 const uint8_t kHitachiAcAutoTemp = 23; // 23C
    -
    83 
    - - -
    87  struct {
    -
    88  // Byte 0~10
    -
    89  uint8_t pad0[11];
    -
    90  // Byte 11
    -
    91  uint8_t Button :8;
    -
    92  // Byte 12
    -
    93  uint8_t :8;
    -
    94  // Byte 13
    -
    95  uint8_t :2;
    -
    96  uint8_t Temp :6;
    -
    97  // Byte 14~24
    -
    98  uint8_t pad1[11];
    -
    99  // Byte 25
    -
    100  uint8_t Mode :4;
    -
    101  uint8_t Fan :4;
    -
    102  // Byte 26
    -
    103  uint8_t :8;
    -
    104  // Byte 27
    -
    105  uint8_t Power :8;
    -
    106  // Byte 28~34
    -
    107  uint8_t pad2[7];
    -
    108  // Byte 35
    -
    109  uint8_t SwingH :3;
    -
    110  uint8_t :5;
    -
    111  // Byte 36
    -
    112  uint8_t :8;
    -
    113  // Byte 37
    -
    114  uint8_t :5;
    -
    115  uint8_t SwingV :1;
    -
    116  uint8_t :2;
    -
    117  };
    -
    118 };
    -
    119 
    -
    120 // HitachiAc424 & HitachiAc344
    -
    121 const uint8_t kHitachiAc424ButtonPowerMode = 0x13;
    -
    122 const uint8_t kHitachiAc424ButtonFan = 0x42;
    -
    123 const uint8_t kHitachiAc424ButtonTempDown = 0x43;
    -
    124 const uint8_t kHitachiAc424ButtonTempUp = 0x44;
    -
    125 const uint8_t kHitachiAc424ButtonSwingV = 0x81;
    -
    126 const uint8_t kHitachiAc424ButtonSwingH = 0x8C;
    - - - - - - -
    133 
    -
    134 const uint8_t kHitachiAc424MinTemp = 16; // 16C
    -
    135 const uint8_t kHitachiAc424MaxTemp = 32; // 32C
    - - -
    138 const uint8_t kHitachiAc424FanTemp = 27; // 27C
    -
    139 
    -
    140 const uint8_t kHitachiAc424Fan = 1;
    -
    141 const uint8_t kHitachiAc424Cool = 3;
    -
    142 const uint8_t kHitachiAc424Dry = 5;
    -
    143 const uint8_t kHitachiAc424Heat = 6;
    - - - - -
    148 
    -
    149 const uint8_t kHitachiAc424FanMin = 1;
    -
    150 const uint8_t kHitachiAc424FanLow = 2;
    -
    151 const uint8_t kHitachiAc424FanMedium = 3;
    -
    152 const uint8_t kHitachiAc424FanHigh = 4;
    -
    153 const uint8_t kHitachiAc424FanAuto = 5;
    -
    154 const uint8_t kHitachiAc424FanMax = 6;
    -
    155 const uint8_t kHitachiAc424FanMaxDry = 2;
    - - - - - - -
    162 
    -
    163 const uint8_t kHitachiAc424PowerOn = 0xF1;
    -
    164 const uint8_t kHitachiAc424PowerOff = 0xE1;
    -
    165 
    -
    166 const uint8_t kHitachiAc344SwingHAuto = 0; // 0b000
    -
    167 const uint8_t kHitachiAc344SwingHRightMax = 1; // 0b001
    -
    168 const uint8_t kHitachiAc344SwingHRight = 2; // 0b010
    -
    169 const uint8_t kHitachiAc344SwingHMiddle = 3; // 0b011
    -
    170 const uint8_t kHitachiAc344SwingHLeft = 4; // 0b100
    -
    171 const uint8_t kHitachiAc344SwingHLeftMax = 5; // 0b101
    -
    172 
    -
    173 
    - - -
    177  struct {
    -
    178  // Byte 0~2
    -
    179  uint8_t pad[3];
    -
    180  // Byte 3
    -
    181  uint8_t :6;
    -
    182  uint8_t Model :2;
    -
    183  // Byte 4
    -
    184  uint8_t :8;
    -
    185  // Byte 5
    -
    186  uint8_t Fan :4;
    -
    187  uint8_t Mode :4;
    -
    188  // Byte 6
    -
    189  uint8_t :2;
    -
    190  uint8_t Temp :5; // stored in LSB order.
    -
    191  uint8_t :1;
    -
    192  // Byte 7
    -
    193  uint8_t OffTimerLow :8; // nr. of minutes
    -
    194  // Byte 8
    -
    195  uint8_t OffTimerHigh :8; // & in LSB order.
    -
    196  // Byte 9
    -
    197  uint8_t OnTimerLow :8; // nr. of minutes
    -
    198  // Byte 10
    -
    199  uint8_t OnTimerHigh :8; // & in LSB order.
    -
    200  // Byte 11
    -
    201  uint8_t SwingToggle :1;
    -
    202  uint8_t Sleep :3;
    -
    203  uint8_t PowerToggle :1;
    -
    204  uint8_t Power :1;
    -
    205  uint8_t SwingV :1;
    -
    206  uint8_t SwingH :1;
    -
    207  // Byte 12
    -
    208  uint8_t Sum :8;
    -
    209  };
    -
    210 };
    -
    211 // HitachiAc1
    -
    212 // Model
    -
    213 const uint8_t kHitachiAc1Model_A = 0b10;
    -
    214 const uint8_t kHitachiAc1Model_B = 0b01;
    -
    215 
    -
    216 // Mode & Fan
    -
    217 const uint8_t kHitachiAc1Dry = 0b0010; // 2
    -
    218 const uint8_t kHitachiAc1Fan = 0b0100; // 4
    -
    219 const uint8_t kHitachiAc1Cool = 0b0110; // 6
    -
    220 const uint8_t kHitachiAc1Heat = 0b1001; // 9
    -
    221 const uint8_t kHitachiAc1Auto = 0b1110; // 14
    -
    222 const uint8_t kHitachiAc1FanAuto = 1; // 0b0001
    -
    223 const uint8_t kHitachiAc1FanHigh = 2; // 0b0010
    -
    224 const uint8_t kHitachiAc1FanMed = 4; // 0b0100
    -
    225 const uint8_t kHitachiAc1FanLow = 8; // 0b1000
    -
    226 
    -
    227 // Temp
    -
    228 const uint8_t kHitachiAc1TempSize = 5; // Mask 0b01111100
    -
    229 const uint8_t kHitachiAc1TempDelta = 7;
    -
    230 const uint8_t kHitachiAc1TempAuto = 25; // Celsius
    -
    231 // Timer
    -
    232 const uint8_t kHitachiAc1TimerSize = 16; // Mask 0b1111111111111111
    -
    233 // Sleep
    -
    234 const uint8_t kHitachiAc1SleepOff = 0b000;
    -
    235 const uint8_t kHitachiAc1Sleep1 = 0b001;
    -
    236 const uint8_t kHitachiAc1Sleep2 = 0b010;
    -
    237 const uint8_t kHitachiAc1Sleep3 = 0b011;
    -
    238 const uint8_t kHitachiAc1Sleep4 = 0b100;
    -
    239 // Checksum
    - -
    241 
    -
    242 
    -
    243 // Classes
    -
    246 class IRHitachiAc {
    -
    247  public:
    -
    248  explicit IRHitachiAc(const uint16_t pin, const bool inverted = false,
    -
    249  const bool use_modulation = true);
    -
    250  void stateReset(void);
    -
    251 #if SEND_HITACHI_AC
    -
    252  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
    -
    257  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    258 #endif // SEND_HITACHI_AC
    -
    259  void begin(void);
    -
    260  void on(void);
    -
    261  void off(void);
    -
    262  void setPower(const bool on);
    -
    263  bool getPower(void) const;
    -
    264  void setTemp(const uint8_t temp);
    -
    265  uint8_t getTemp(void) const;
    -
    266  void setFan(const uint8_t speed);
    -
    267  uint8_t getFan(void) const;
    -
    268  void setMode(const uint8_t mode);
    -
    269  uint8_t getMode(void) const;
    -
    270  void setSwingVertical(const bool on);
    -
    271  bool getSwingVertical(void) const;
    -
    272  void setSwingHorizontal(const bool on);
    -
    273  bool getSwingHorizontal(void) const;
    -
    274  uint8_t* getRaw(void);
    -
    275  void setRaw(const uint8_t new_code[],
    -
    276  const uint16_t length = kHitachiAcStateLength);
    -
    277  static bool validChecksum(const uint8_t state[],
    -
    278  const uint16_t length = kHitachiAcStateLength);
    -
    279  static uint8_t calcChecksum(const uint8_t state[],
    -
    280  const uint16_t length = kHitachiAcStateLength);
    -
    281  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    282  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    283  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    284  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    285  stdAc::state_t toCommon(void) const;
    -
    286  String toString(void) const;
    -
    287 #ifndef UNIT_TEST
    -
    288 
    -
    289  private:
    - -
    291 #else // UNIT_TEST
    -
    292  IRsendTest _irsend;
    -
    294 #endif // UNIT_TEST
    - -
    297  void checksum(const uint16_t length = kHitachiAcStateLength);
    -
    298  uint8_t _previoustemp;
    -
    299 };
    -
    300 
    - -
    304  public:
    -
    305  explicit IRHitachiAc1(const uint16_t pin, const bool inverted = false,
    -
    306  const bool use_modulation = true);
    -
    307 
    -
    308  void stateReset(void);
    -
    309 #if SEND_HITACHI_AC1
    -
    310  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
    -
    315  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    316 #endif // SEND_HITACHI_AC1
    -
    317  void begin(void);
    -
    318  void on(void);
    -
    319  void off(void);
    -
    320  void setModel(const hitachi_ac1_remote_model_t model);
    - -
    322  void setPower(const bool on);
    -
    323  bool getPower(void) const;
    -
    324  void setPowerToggle(const bool on);
    -
    325  bool getPowerToggle(void) const;
    -
    326  void setTemp(const uint8_t temp);
    -
    327  uint8_t getTemp(void) const;
    -
    328  void setFan(const uint8_t speed, const bool force = false);
    -
    329  uint8_t getFan(void) const;
    -
    330  void setMode(const uint8_t mode);
    -
    331  uint8_t getMode(void) const;
    -
    332  void setSwingToggle(const bool toggle);
    -
    333  bool getSwingToggle(void) const;
    -
    334  void setSwingV(const bool on);
    -
    335  bool getSwingV(void) const;
    -
    336  void setSwingH(const bool on);
    -
    337  bool getSwingH(void) const;
    -
    338  void setSleep(const uint8_t mode);
    -
    339  uint8_t getSleep(void) const;
    -
    340  void setOnTimer(const uint16_t mins);
    -
    341  uint16_t getOnTimer(void) const;
    -
    342  void setOffTimer(const uint16_t mins);
    -
    343  uint16_t getOffTimer(void) const;
    -
    344  uint8_t* getRaw(void);
    -
    345  void setRaw(const uint8_t new_code[],
    -
    346  const uint16_t length = kHitachiAc1StateLength);
    -
    347  static bool validChecksum(const uint8_t state[],
    -
    348  const uint16_t length = kHitachiAc1StateLength);
    -
    349  static uint8_t calcChecksum(const uint8_t state[],
    -
    350  const uint16_t length = kHitachiAc1StateLength);
    -
    351  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    352  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    353  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    354  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    355  stdAc::state_t toCommon(void) const;
    -
    356  String toString(void) const;
    -
    357 #ifndef UNIT_TEST
    -
    358 
    -
    359  private:
    - -
    361 #else // UNIT_TEST
    -
    362  IRsendTest _irsend;
    -
    364 #endif // UNIT_TEST
    - -
    367  void checksum(const uint16_t length = kHitachiAc1StateLength);
    -
    368 };
    -
    369 
    - -
    372  friend class IRHitachiAc344;
    -
    373  public:
    -
    374  explicit IRHitachiAc424(const uint16_t pin, const bool inverted = false,
    -
    375  const bool use_modulation = true);
    -
    376  virtual void stateReset(void);
    -
    377 #if SEND_HITACHI_AC424
    -
    378  virtual void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
    -
    383  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    384 #endif // SEND_HITACHI_AC424
    -
    385  void begin(void);
    -
    386  void on(void);
    -
    387  void off(void);
    -
    388  void setPower(const bool on);
    -
    389  bool getPower(void) const;
    -
    390  void setTemp(const uint8_t temp, bool setPrevious = true);
    -
    391  uint8_t getTemp(void) const;
    -
    392  void setFan(const uint8_t speed);
    -
    393  uint8_t getFan(void) const;
    -
    394  uint8_t getButton(void) const;
    -
    395  void setButton(const uint8_t button);
    -
    396  void setSwingVToggle(const bool on);
    -
    397  bool getSwingVToggle(void) const;
    -
    398  void setMode(const uint8_t mode);
    -
    399  uint8_t getMode(void) const;
    -
    400  uint8_t* getRaw(void);
    -
    401  virtual void setRaw(const uint8_t new_code[],
    -
    402  const uint16_t length = kHitachiAc424StateLength);
    -
    403  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    404  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    405  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    406  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    407  virtual stdAc::state_t toCommon(void) const;
    -
    408  virtual String toString(void) const;
    -
    409 #ifndef UNIT_TEST
    -
    410 
    -
    411  private:
    - -
    413 #else // UNIT_TEST
    -
    414  IRsendTest _irsend;
    -
    416 #endif // UNIT_TEST
    - -
    419  void setInvertedStates(void);
    -
    420  String _toString(void) const;
    -
    421  uint8_t _previoustemp;
    -
    422 };
    -
    423 
    - -
    426  public:
    -
    427  explicit IRHitachiAc3(const uint16_t pin, const bool inverted = false,
    -
    428  const bool use_modulation = true);
    -
    429 
    -
    430  void stateReset(void);
    -
    431 #if SEND_HITACHI_AC3
    -
    432  void send(const uint16_t repeat = kHitachiAcDefaultRepeat);
    -
    437  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    438 #endif // SEND_HITACHI_AC3
    -
    439  void begin(void);
    -
    440  uint8_t getMode(void);
    -
    441  uint8_t* getRaw(void);
    -
    442  void setRaw(const uint8_t new_code[],
    -
    443  const uint16_t length = kHitachiAc3StateLength);
    -
    444  static bool hasInvertedStates(const uint8_t state[], const uint16_t length);
    -
    445 #ifndef UNIT_TEST
    -
    446 
    -
    447  private:
    - -
    449 #else // UNIT_TEST
    -
    450  IRsendTest _irsend;
    -
    452 #endif // UNIT_TEST
    - -
    455  void setInvertedStates(const uint16_t length = kHitachiAc3StateLength);
    -
    456 };
    -
    457 
    - -
    460  public:
    -
    461  explicit IRHitachiAc344(const uint16_t pin, const bool inverted = false,
    -
    462  const bool use_modulation = true);
    -
    463  void stateReset(void) override;
    -
    464  void setRaw(const uint8_t new_code[],
    -
    465  const uint16_t length = kHitachiAc344StateLength) override;
    -
    466  stdAc::state_t toCommon(void) const override;
    -
    467 #if SEND_HITACHI_AC344
    -
    468  void send(const uint16_t repeat = kHitachiAcDefaultRepeat) override;
    -
    469 #endif // SEND_HITACHI_AC344
    -
    470  void setSwingV(const bool on);
    -
    471  bool getSwingV(void) const;
    -
    472  void setSwingH(const uint8_t position);
    -
    473  uint8_t getSwingH(void) const;
    -
    474  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    475  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
    -
    476  String toString(void) const override;
    -
    477 };
    -
    478 #endif // IR_HITACHI_H_
    -
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Hitachi.cpp:1064
    -
    uint8_t _previoustemp
    Definition: ir_Hitachi.h:421
    -
    const uint8_t kHitachiAc424Fan
    Definition: ir_Hitachi.h:140
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
    Calculate the checksum for a given state.
    Definition: ir_Hitachi.cpp:446
    -
    uint8_t Mode
    Definition: ir_Hitachi.h:44
    -
    const uint8_t kHitachiAc1Fan
    Definition: ir_Hitachi.h:218
    -
    const uint8_t kHitachiAc344SwingHRightMax
    Definition: ir_Hitachi.h:167
    -
    IRHitachiAc3(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Hitachi.cpp:1350
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Hitachi.cpp:1083
    -
    const uint8_t kHitachiAcMinTemp
    Definition: ir_Hitachi.h:80
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Hitachi.cpp:363
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Hitachi.h:412
    -
    void setTemp(const uint8_t temp, bool setPrevious=true)
    Set the temperature.
    Definition: ir_Hitachi.cpp:1108
    -
    const uint8_t kHitachiAcMaxTemp
    Definition: ir_Hitachi.h:81
    -
    void setSleep(const uint8_t mode)
    Set the Sleep setting of the A/C.
    Definition: ir_Hitachi.cpp:680
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Hitachi.cpp:138
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Hitachi.cpp:1073
    -
    const uint8_t kHitachiAcAuto
    Definition: ir_Hitachi.h:71
    -
    uint8_t Sleep
    Definition: ir_Hitachi.h:202
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Hitachi.cpp:583
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Hitachi.h:448
    -
    uint8_t pad0[10]
    Definition: ir_Hitachi.h:42
    -
    const uint8_t kHitachiAc344ButtonFan
    Definition: ir_Hitachi.h:128
    -
    Native representation of a Hitachi 224-bit A/C message.
    Definition: ir_Hitachi.h:38
    -
    const uint8_t kHitachiAc1Model_A
    Definition: ir_Hitachi.h:213
    -
    const uint8_t kHitachiAc344ButtonPowerMode
    Definition: ir_Hitachi.h:127
    -
    uint8_t Power
    Definition: ir_Hitachi.h:204
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Hitachi.cpp:279
    -
    void setPowerToggle(const bool on)
    Change the power toggle setting.
    Definition: ir_Hitachi.cpp:543
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a standard A/C horizontal swing into its native setting.
    Definition: ir_Hitachi.cpp:1525
    -
    void checksum(const uint16_t length=kHitachiAc1StateLength)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Hitachi.cpp:460
    -
    const uint16_t kHitachiAcStateLength
    Definition: IRremoteESP8266.h:1025
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Hitachi.cpp:209
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kHitachiAc344SwingHRight
    Definition: ir_Hitachi.h:168
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Hitachi.cpp:1391
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Hitachi.h:437
    -
    uint8_t OnTimerLow
    Definition: ir_Hitachi.h:197
    -
    void setSwingVertical(const bool on)
    Set the Vertical Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:304
    -
    uint8_t raw[kHitachiAc424StateLength]
    The state in native code.
    Definition: ir_Hitachi.h:86
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Hitachi.cpp:425
    -
    Native representation of a Hitachi 104-bit A/C message.
    Definition: ir_Hitachi.h:175
    -
    void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
    -
    void setSwingHorizontal(const bool on)
    Set the Horizontal Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:316
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Hitachi.cpp:1128
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Hitachi.cpp:1077
    -
    uint8_t pad[3]
    Definition: ir_Hitachi.h:179
    -
    bool getSwingHorizontal(void) const
    Get the Horizontal Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:310
    -
    uint8_t SwingToggle
    Definition: ir_Hitachi.h:201
    -
    const uint16_t kHitachiAc1StateLength
    Definition: IRremoteESP8266.h:1028
    -
    void setSwingVToggle(const bool on)
    Set the Vertical Swing toggle setting of the A/C.
    Definition: ir_Hitachi.cpp:1174
    -
    uint8_t Fan
    Definition: ir_Hitachi.h:101
    -
    const uint8_t kHitachiAc1ChecksumStartByte
    Definition: ir_Hitachi.h:240
    -
    uint8_t raw[kHitachiAc1StateLength]
    The state in native code.
    Definition: ir_Hitachi.h:176
    -
    const uint8_t kHitachiAc344FanHigh
    Definition: ir_Hitachi.h:159
    -
    void setOnTimer(const uint16_t mins)
    Set the On Timer time.
    Definition: ir_Hitachi.cpp:693
    -
    const uint8_t kHitachiAcFanHigh
    Definition: ir_Hitachi.h:79
    -
    uint8_t pad1[9]
    Definition: ir_Hitachi.h:63
    -
    const uint8_t kHitachiAc1Sleep3
    Definition: ir_Hitachi.h:237
    -
    hitachi_ac1_remote_model_t getModel(void) const
    Get/Detect the model of the A/C.
    Definition: ir_Hitachi.cpp:500
    -
    const uint8_t kHitachiAc1TimerSize
    Definition: ir_Hitachi.h:232
    -
    const uint8_t kHitachiAc344Fan
    Definition: ir_Hitachi.h:144
    -
    uint8_t Mode
    Definition: ir_Hitachi.h:100
    -
    Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
    Definition: ir_Hitachi.h:371
    -
    void setInvertedStates(void)
    Update the internal consistency check for the protocol.
    Definition: ir_Hitachi.cpp:1027
    -
    IRHitachiAc1(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Hitachi.cpp:420
    -
    void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Hitachi.cpp:490
    -
    const uint8_t kHitachiAc1Sleep1
    Definition: ir_Hitachi.h:235
    -
    void send(const uint16_t repeat=kHitachiAcDefaultRepeat) override
    Create and send the IR message to the A/C.
    Definition: ir_Hitachi.cpp:1481
    -
    IRHitachiAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Hitachi.cpp:133
    -
    HitachiProtocol _
    Definition: ir_Hitachi.h:296
    - -
    uint8_t SwingH
    Definition: ir_Hitachi.h:206
    -
    const uint8_t kHitachiAc1Auto
    Definition: ir_Hitachi.h:221
    -
    void setSwingV(const bool on)
    Control the vertical swing setting.
    Definition: ir_Hitachi.cpp:1495
    -
    const uint8_t kHitachiAc344MaxTemp
    Definition: ir_Hitachi.h:137
    -
    const uint16_t kHitachiAc3StateLength
    Definition: IRremoteESP8266.h:1032
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Hitachi.cpp:249
    -
    hitachi_ac1_remote_model_t
    HITACHI_AC1 A/C model numbers.
    Definition: IRsend.h:140
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Hitachi.h:315
    -
    const uint8_t kHitachiAc424ButtonSwingH
    Definition: ir_Hitachi.h:126
    -
    const uint8_t kHitachiAc424ButtonTempDown
    Definition: ir_Hitachi.h:123
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kHitachiAc344SwingHAuto
    Definition: ir_Hitachi.h:166
    -
    void setSwingH(const bool on)
    Set the Horizontal Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:666
    -
    const uint8_t kHitachiAc344Heat
    Definition: ir_Hitachi.h:147
    -
    Class for handling detailed Hitachi 224-bit A/C messages.
    Definition: ir_Hitachi.h:246
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kHitachiAc344SwingHLeftMax
    Definition: ir_Hitachi.h:171
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kHitachiAc1StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Hitachi.cpp:468
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Hitachi.cpp:724
    -
    uint8_t SwingV
    Definition: ir_Hitachi.h:115
    -
    const uint8_t kHitachiAc1FanLow
    Definition: ir_Hitachi.h:225
    -
    Class for handling detailed Hitachi 344-bit A/C messages.
    Definition: ir_Hitachi.h:459
    -
    const uint8_t kHitachiAc424MinTemp
    Definition: ir_Hitachi.h:134
    -
    String toString(void) const override
    Convert the internal state into a human readable string.
    Definition: ir_Hitachi.cpp:1562
    -
    Hitachi1Protocol _
    Definition: ir_Hitachi.h:366
    -
    const uint8_t kHitachiAc344FanAuto
    Definition: ir_Hitachi.h:160
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint8_t Sum
    Definition: ir_Hitachi.h:208
    -
    const uint8_t kHitachiAc1Model_B
    Definition: ir_Hitachi.h:214
    -
    bool getSwingToggle(void) const
    Get the Swing Toggle setting of the A/C.
    Definition: ir_Hitachi.cpp:636
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Hitachi.cpp:336
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Hitachi.cpp:163
    -
    const uint8_t kHitachiAc1FanHigh
    Definition: ir_Hitachi.h:223
    -
    const uint8_t kHitachiAc424ButtonSwingV
    Definition: ir_Hitachi.h:125
    -
    const uint8_t kHitachiAcDry
    Definition: ir_Hitachi.h:74
    -
    void setButton(const uint8_t button)
    Set the Button/Command pressed setting of the A/C.
    Definition: ir_Hitachi.cpp:1166
    -
    const uint8_t kHitachiAc1Sleep2
    Definition: ir_Hitachi.h:236
    -
    const uint8_t kHitachiAc424ButtonTempUp
    Definition: ir_Hitachi.h:124
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Hitachi.cpp:1356
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Hitachi.cpp:1036
    -
    const uint8_t kHitachiAc424ButtonFan
    Definition: ir_Hitachi.h:122
    -
    const uint8_t kHitachiAcFanAuto
    Definition: ir_Hitachi.h:76
    -
    const uint8_t kHitachiAc344Dry
    Definition: ir_Hitachi.h:146
    -
    Class for handling detailed Hitachi 15to27-byte/120to216-bit A/C messages.
    Definition: ir_Hitachi.h:425
    - -
    swingh_t
    Common A/C settings for Horizontal Swing.
    Definition: IRsend.h:83
    -
    void setModel(const hitachi_ac1_remote_model_t model)
    Set the model of the A/C to emulate.
    Definition: ir_Hitachi.cpp:509
    -
    const uint8_t kHitachiAc344FanLow
    Definition: ir_Hitachi.h:157
    -
    const uint8_t kHitachiAc424FanMaxDry
    Definition: ir_Hitachi.h:155
    -
    const uint8_t kHitachiAc424FanHigh
    Definition: ir_Hitachi.h:152
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Hitachi.cpp:600
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Hitachi.cpp:1122
    -
    void setSwingToggle(const bool toggle)
    Set the Swing toggle setting of the A/C.
    Definition: ir_Hitachi.cpp:642
    -
    Class for handling detailed Hitachi 104-bit A/C messages.
    Definition: ir_Hitachi.h:303
    -
    const uint8_t kHitachiAc344SwingHLeft
    Definition: ir_Hitachi.h:170
    -
    uint8_t getSwingH(void) const
    Get the current horizontal swing setting.
    Definition: ir_Hitachi.cpp:1518
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Hitachi.cpp:1220
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Hitachi.cpp:548
    -
    const uint8_t kHitachiAc1TempSize
    Definition: ir_Hitachi.h:228
    -
    uint8_t Temp
    Definition: ir_Hitachi.h:190
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Hitachi.cpp:1206
    -
    uint8_t Power
    Definition: ir_Hitachi.h:60
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Hitachi.cpp:523
    -
    uint8_t pad1[11]
    Definition: ir_Hitachi.h:98
    -
    const uint8_t kHitachiAcFanMed
    Definition: ir_Hitachi.h:78
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Hitachi.cpp:589
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Hitachi.cpp:220
    -
    uint8_t getMode(void)
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Hitachi.cpp:323
    -
    uint8_t Power
    Definition: ir_Hitachi.h:105
    -
    static bool hasInvertedStates(const uint8_t state[], const uint16_t length)
    Check if every second byte of the state, after the fixed header is inverted to the previous byte.
    Definition: ir_Hitachi.cpp:1385
    -
    const uint16_t kHitachiAc424StateLength
    Definition: IRremoteESP8266.h:1038
    -
    virtual stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Hitachi.cpp:1246
    -
    uint8_t remote_state[kHitachiAc3StateLength]
    The state in native code.
    Definition: ir_Hitachi.h:454
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Hitachi.cpp:751
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Hitachi.cpp:223
    -
    const uint8_t kHitachiAc1Heat
    Definition: ir_Hitachi.h:220
    -
    const uint16_t kHitachiAcFreq
    Definition: ir_Hitachi.h:70
    -
    bool getSwingVertical(void) const
    Get the Vertical Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:298
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Hitachi.h:383
    -
    const uint8_t kHitachiAcFanLow
    Definition: ir_Hitachi.h:77
    -
    void stateReset(void) override
    Reset the internal state to auto fan, cooling, 23° Celsius.
    Definition: ir_Hitachi.cpp:1472
    -
    const uint8_t kHitachiAc344FanMin
    Definition: ir_Hitachi.h:156
    -
    const uint8_t kHitachiAc424FanAuto
    Definition: ir_Hitachi.h:153
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Hitachi.cpp:195
    -
    const uint8_t kHitachiAc1FanMed
    Definition: ir_Hitachi.h:224
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Hitachi.cpp:529
    -
    bool getSwingH(void) const
    Get the Horizontal Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:660
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Hitachi.cpp:775
    -
    IRHitachiAc424(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Hitachi.cpp:996
    -
    const uint8_t kHitachiAcCool
    Definition: ir_Hitachi.h:73
    -
    const uint8_t kHitachiAc1Sleep4
    Definition: ir_Hitachi.h:238
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_Hitachi.cpp:1539
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc1StateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Hitachi.cpp:483
    -
    const uint8_t kHitachiAcHeat
    Definition: ir_Hitachi.h:72
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Hitachi.cpp:1032
    -
    friend class IRHitachiAc344
    Definition: ir_Hitachi.h:372
    -
    const uint8_t kHitachiAc424MaxTemp
    Definition: ir_Hitachi.h:135
    -
    void setInvertedStates(const uint16_t length=kHitachiAc3StateLength)
    Invert every second byte of the internal state, after the fixed header.
    Definition: ir_Hitachi.cpp:1376
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Hitachi.cpp:803
    -
    const uint16_t kHitachiAc344StateLength
    Definition: IRremoteESP8266.h:1036
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Hitachi.h:290
    -
    void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Hitachi.cpp:202
    -
    Hitachi424Protocol _
    Definition: ir_Hitachi.h:418
    -
    const uint8_t kHitachiAc424FanTemp
    Definition: ir_Hitachi.h:138
    -
    const uint8_t kHitachiAc1Cool
    Definition: ir_Hitachi.h:219
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Hitachi.cpp:275
    -
    uint8_t _previoustemp
    Definition: ir_Hitachi.h:298
    -
    const uint8_t kHitachiAc1FanAuto
    Definition: ir_Hitachi.h:222
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Hitachi.cpp:157
    -
    uint16_t getOnTimer(void) const
    Get the On Timer vtime of the A/C.
    Definition: ir_Hitachi.cpp:701
    -
    const uint8_t kHitachiAc424PowerOff
    Definition: ir_Hitachi.h:164
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Hitachi.cpp:1058
    -
    const uint8_t kHitachiAc424FanMin
    Definition: ir_Hitachi.h:149
    -
    uint8_t Temp
    Definition: ir_Hitachi.h:96
    -
    virtual void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Hitachi.cpp:1002
    -
    const uint8_t kHitachiAc344FanMax
    Definition: ir_Hitachi.h:161
    -
    uint8_t Temp
    Definition: ir_Hitachi.h:46
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Hitachi.h:360
    -
    bool getSwingV(void) const
    Get the current vertical swing setting.
    Definition: ir_Hitachi.cpp:1502
    -
    const uint8_t kHitachiAc424Dry
    Definition: ir_Hitachi.h:142
    -
    void setSwingH(const uint8_t position)
    Control the horizontal swing setting.
    Definition: ir_Hitachi.cpp:1508
    -
    uint8_t pad2[7]
    Definition: ir_Hitachi.h:107
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Hitachi.cpp:561
    -
    uint16_t getOffTimer(void) const
    Get the Off Timer vtime of the A/C.
    Definition: ir_Hitachi.cpp:716
    -
    const uint16_t kHitachiAcDefaultRepeat
    Definition: IRremoteESP8266.h:1027
    -
    uint8_t Fan
    Definition: ir_Hitachi.h:186
    -
    const uint8_t kHitachiAc424PowerOn
    Definition: ir_Hitachi.h:163
    -
    const uint8_t kHitachiAc344SwingHMiddle
    Definition: ir_Hitachi.h:169
    -
    void checksum(const uint16_t length=kHitachiAcStateLength)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Hitachi.cpp:172
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Hitachi.cpp:1193
    -
    uint8_t Fan
    Definition: ir_Hitachi.h:50
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Hitachi.cpp:555
    -
    void setFan(const uint8_t speed, const bool force=false)
    Set the speed of the fan.
    Definition: ir_Hitachi.cpp:607
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Hitachi.cpp:737
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Hitachi.cpp:375
    -
    void setSwingV(const bool on)
    Set the Vertical Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:654
    -
    uint8_t SwingV
    Definition: ir_Hitachi.h:53
    -
    uint8_t OffTimerHigh
    Definition: ir_Hitachi.h:195
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Hitachi.cpp:401
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kHitachiAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Hitachi.cpp:180
    -
    const uint8_t kHitachiAc424FanMedium
    Definition: ir_Hitachi.h:151
    -
    bool getSwingV(void) const
    Get the Vertical Swing setting of the A/C.
    Definition: ir_Hitachi.cpp:648
    -
    const uint8_t kHitachiAc344ButtonTempUp
    Definition: ir_Hitachi.h:130
    -
    stdAc::state_t toCommon(void) const override
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Hitachi.cpp:1552
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Hitachi.cpp:350
    -
    const uint8_t kHitachiAc424Cool
    Definition: ir_Hitachi.h:141
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc3StateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Hitachi.cpp:1403
    -
    const uint8_t kHitachiAcFan
    Definition: ir_Hitachi.h:75
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Hitachi.cpp:1395
    -
    uint8_t Sum
    Definition: ir_Hitachi.h:65
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Hitachi.cpp:440
    -
    bool getPowerToggle(void) const
    Get the value of the current power toggle setting.
    Definition: ir_Hitachi.cpp:537
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Hitachi.cpp:187
    -
    void setOffTimer(const uint16_t mins)
    Set the Off Timer time.
    Definition: ir_Hitachi.cpp:708
    -
    uint8_t Mode
    Definition: ir_Hitachi.h:187
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Hitachi.cpp:764
    -
    uint8_t Model
    Definition: ir_Hitachi.h:182
    -
    uint8_t OnTimerHigh
    Definition: ir_Hitachi.h:199
    -
    uint8_t getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Hitachi.cpp:673
    -
    virtual void send(const uint16_t repeat=kHitachiAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Hitachi.cpp:1051
    -
    const uint8_t kHitachiAc344ButtonSwingH
    Definition: ir_Hitachi.h:132
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Hitachi.cpp:215
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Hitachi.cpp:227
    -
    uint8_t SwingV
    Definition: ir_Hitachi.h:205
    -
    virtual void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc424StateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Hitachi.cpp:1044
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kHitachiAc344StateLength) override
    Set the internal state from a valid code for this protocol.
    Definition: ir_Hitachi.cpp:1489
    -
    const uint8_t kHitachiAc424FanLow
    Definition: ir_Hitachi.h:150
    -
    uint8_t PowerToggle
    Definition: ir_Hitachi.h:203
    -
    const uint8_t kHitachiAcAutoTemp
    Definition: ir_Hitachi.h:82
    -
    Native representation of a Hitachi 53-byte/424-bit A/C message.
    Definition: ir_Hitachi.h:85
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Hitachi.h:257
    -
    const uint8_t kHitachiAc344FanMedium
    Definition: ir_Hitachi.h:158
    -
    const uint8_t kHitachiAc1Dry
    Definition: ir_Hitachi.h:217
    -
    const uint8_t kHitachiAc344Cool
    Definition: ir_Hitachi.h:145
    -
    const uint8_t kHitachiAc424FanMax
    Definition: ir_Hitachi.h:154
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Hitachi.cpp:1101
    -
    const uint8_t kHitachiAc424Heat
    Definition: ir_Hitachi.h:143
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Hitachi.cpp:1233
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Hitachi.cpp:231
    -
    uint8_t raw[kHitachiAcStateLength]
    The state in native code.
    Definition: ir_Hitachi.h:39
    -
    uint8_t SwingH
    Definition: ir_Hitachi.h:56
    -
    uint8_t Button
    Definition: ir_Hitachi.h:91
    -
    uint8_t OffTimerLow
    Definition: ir_Hitachi.h:193
    -
    bool getSwingVToggle(void) const
    Get the Vertical Swing toggle setting of the A/C.
    Definition: ir_Hitachi.cpp:1186
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kHitachiAc344ButtonTempDown
    Definition: ir_Hitachi.h:129
    -
    const uint8_t kHitachiAc424ButtonPowerMode
    Definition: ir_Hitachi.h:121
    -
    const uint8_t kHitachiAc1TempAuto
    Definition: ir_Hitachi.h:230
    -
    const uint8_t kHitachiAc344MinTemp
    Definition: ir_Hitachi.h:136
    -
    const uint8_t kHitachiAc1TempDelta
    Definition: ir_Hitachi.h:229
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Hitachi.cpp:1070
    -
    uint8_t getButton(void) const
    Get the Button/Command setting of the A/C.
    Definition: ir_Hitachi.cpp:1160
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Hitachi.cpp:551
    -
    String _toString(void) const
    Convert the internal state into a human readable string for the settings that are common to protocols...
    Definition: ir_Hitachi.cpp:1274
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Hitachi.cpp:475
    -
    const uint8_t kHitachiAc344ButtonSwingV
    Definition: ir_Hitachi.h:131
    -
    const uint8_t kHitachiAc1SleepOff
    Definition: ir_Hitachi.h:234
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Hitachi.cpp:255
    -
    uint8_t SwingH
    Definition: ir_Hitachi.h:109
    -
    uint8_t pad0[11]
    Definition: ir_Hitachi.h:89
    -
    virtual String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Hitachi.cpp:1315
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Inax_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Inax_8cpp.html deleted file mode 100644 index 5e5f3eaf4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Inax_8cpp.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Inax.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Inax.cpp File Reference
    -
    -
    - -

    Support for the Inax Robot Toilet IR protocols. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kInaxTick = 500
     
    const uint16_t kInaxHdrMark = 9000
     
    const uint16_t kInaxHdrSpace = 4500
     
    const uint16_t kInaxBitMark = 560
     
    const uint16_t kInaxOneSpace = 1675
     
    const uint16_t kInaxZeroSpace = kInaxBitMark
     
    const uint16_t kInaxMinGap = 40000
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kInaxBitMark

    - -
    -
    - - - - -
    const uint16_t kInaxBitMark = 560
    -
    - -
    -
    - -

    ◆ kInaxHdrMark

    - -
    -
    - - - - -
    const uint16_t kInaxHdrMark = 9000
    -
    - -
    -
    - -

    ◆ kInaxHdrSpace

    - -
    -
    - - - - -
    const uint16_t kInaxHdrSpace = 4500
    -
    - -
    -
    - -

    ◆ kInaxMinGap

    - -
    -
    - - - - -
    const uint16_t kInaxMinGap = 40000
    -
    - -
    -
    - -

    ◆ kInaxOneSpace

    - -
    -
    - - - - -
    const uint16_t kInaxOneSpace = 1675
    -
    - -
    -
    - -

    ◆ kInaxTick

    - -
    -
    - - - - -
    const uint16_t kInaxTick = 500
    -
    - -
    -
    - -

    ◆ kInaxZeroSpace

    - -
    -
    - - - - -
    const uint16_t kInaxZeroSpace = kInaxBitMark
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__JVC_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__JVC_8cpp.html deleted file mode 100644 index 3b12fe7c4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__JVC_8cpp.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_JVC.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_JVC.cpp File Reference
    -
    -
    - -

    Support for JVC protocols. Originally added by Kristian Lauszus Thanks to zenwheel and other people at the original blog post. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kJvcTick = 75
     
    const uint16_t kJvcHdrMarkTicks = 112
     
    const uint16_t kJvcHdrMark = kJvcHdrMarkTicks * kJvcTick
     
    const uint16_t kJvcHdrSpaceTicks = 56
     
    const uint16_t kJvcHdrSpace = kJvcHdrSpaceTicks * kJvcTick
     
    const uint16_t kJvcBitMarkTicks = 7
     
    const uint16_t kJvcBitMark = kJvcBitMarkTicks * kJvcTick
     
    const uint16_t kJvcOneSpaceTicks = 23
     
    const uint16_t kJvcOneSpace = kJvcOneSpaceTicks * kJvcTick
     
    const uint16_t kJvcZeroSpaceTicks = 7
     
    const uint16_t kJvcZeroSpace = kJvcZeroSpaceTicks * kJvcTick
     
    const uint16_t kJvcRptLengthTicks = 800
     
    const uint16_t kJvcRptLength = kJvcRptLengthTicks * kJvcTick
     
    const uint16_t kJvcMinGapTicks
     
    const uint16_t kJvcMinGap = kJvcMinGapTicks * kJvcTick
     
    -

    Detailed Description

    -

    Support for JVC protocols. Originally added by Kristian Lauszus Thanks to zenwheel and other people at the original blog post.

    -
    See also
    http://www.sbprojects.net/knowledge/ir/jvc.php
    -

    Variable Documentation

    - -

    ◆ kJvcBitMark

    - -
    -
    - - - - -
    const uint16_t kJvcBitMark = kJvcBitMarkTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kJvcBitMarkTicks = 7
    -
    - -
    -
    - -

    ◆ kJvcHdrMark

    - -
    -
    - - - - -
    const uint16_t kJvcHdrMark = kJvcHdrMarkTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kJvcHdrMarkTicks = 112
    -
    - -
    -
    - -

    ◆ kJvcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kJvcHdrSpace = kJvcHdrSpaceTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kJvcHdrSpaceTicks = 56
    -
    - -
    -
    - -

    ◆ kJvcMinGap

    - -
    -
    - - - - -
    const uint16_t kJvcMinGap = kJvcMinGapTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kJvcMinGapTicks
    -
    -
    - -

    ◆ kJvcOneSpace

    - -
    -
    - - - - -
    const uint16_t kJvcOneSpace = kJvcOneSpaceTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kJvcOneSpaceTicks = 23
    -
    - -
    -
    - -

    ◆ kJvcRptLength

    - -
    -
    - - - - -
    const uint16_t kJvcRptLength = kJvcRptLengthTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcRptLengthTicks

    - -
    -
    - - - - -
    const uint16_t kJvcRptLengthTicks = 800
    -
    - -
    -
    - -

    ◆ kJvcTick

    - -
    -
    - - - - -
    const uint16_t kJvcTick = 75
    -
    - -
    -
    - -

    ◆ kJvcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kJvcZeroSpace = kJvcZeroSpaceTicks * kJvcTick
    -
    - -
    -
    - -

    ◆ kJvcZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kJvcZeroSpaceTicks = 7
    -
    - -
    -
    -
    -
    const uint16_t kJvcHdrSpaceTicks
    Definition: ir_JVC.cpp:23
    -
    const uint16_t kJvcBitMarkTicks
    Definition: ir_JVC.cpp:25
    -
    const uint16_t kJvcBits
    Definition: IRremoteESP8266.h:1042
    -
    const uint16_t kJvcOneSpaceTicks
    Definition: ir_JVC.cpp:27
    -
    const uint16_t kJvcHdrMarkTicks
    Definition: ir_JVC.cpp:21
    -
    const uint16_t kJvcRptLengthTicks
    Definition: ir_JVC.cpp:31
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8cpp.html deleted file mode 100644 index d27f55052..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8cpp.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Kelon.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Kelon.cpp File Reference
    -
    -
    - -

    Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KELON ON/OFF 9000-12000. All features of the standard remote are implemented. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kKelonHdrMark = 9000
     
    const uint16_t kKelonHdrSpace = 4600
     
    const uint16_t kKelonBitMark = 560
     
    const uint16_t kKelonOneSpace = 1680
     
    const uint16_t kKelonZeroSpace = 600
     
    const uint32_t kKelonGap = 2 * kDefaultMessageGap
     
    const uint16_t kKelonFreq = 38000
     
    -

    Detailed Description

    -

    Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KELON ON/OFF 9000-12000. All features of the standard remote are implemented.

    -
    Note
    Unsupported:
      -
    • Explicit on/off due to AC unit limitations
    • -
    • Explicit swing position due to AC unit limitations
    • -
    • Fahrenheit.
    • -
    -
    -

    Variable Documentation

    - -

    ◆ kKelonBitMark

    - -
    -
    - - - - -
    const uint16_t kKelonBitMark = 560
    -
    - -
    -
    - -

    ◆ kKelonFreq

    - -
    -
    - - - - -
    const uint16_t kKelonFreq = 38000
    -
    - -
    -
    - -

    ◆ kKelonGap

    - -
    -
    - - - - -
    const uint32_t kKelonGap = 2 * kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kKelonHdrMark

    - -
    -
    - - - - -
    const uint16_t kKelonHdrMark = 9000
    -
    - -
    -
    - -

    ◆ kKelonHdrSpace

    - -
    -
    - - - - -
    const uint16_t kKelonHdrSpace = 4600
    -
    - -
    -
    - -

    ◆ kKelonOneSpace

    - -
    -
    - - - - -
    const uint16_t kKelonOneSpace = 1680
    -
    - -
    -
    - -

    ◆ kKelonZeroSpace

    - -
    -
    - - - - -
    const uint16_t kKelonZeroSpace = 600
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h.html deleted file mode 100644 index 7e24bb534..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Kelon.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Kelon.h File Reference
    -
    -
    - -

    Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KELON ON/OFF 9000-12000. All features of the standard remote are implemented. -More...

    - -

    Go to the source code of this file.

    - - - - - - -

    -Classes

    union  KelonProtocol
     
    class  IRKelonAc
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kKelonModeHeat = 0
     
    const uint8_t kKelonModeSmart = 1
     
    const uint8_t kKelonModeCool = 2
     
    const uint8_t kKelonModeDry = 3
     
    const uint8_t kKelonModeFan = 4
     
    const uint8_t kKelonFanAuto = 0
     
    const uint8_t kKelonFanMin = 1
     
    const uint8_t kKelonFanMedium = 2
     
    const uint8_t kKelonFanMax = 3
     
    const int8_t kKelonDryGradeMin = -2
     
    const int8_t kKelonDryGradeMax = +2
     
    const uint8_t kKelonMinTemp = 18
     
    const uint8_t kKelonMaxTemp = 32
     
    -

    Detailed Description

    -

    Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KELON ON/OFF 9000-12000. All features of the standard remote are implemented.

    -
    Note
    Unsupported:
      -
    • Explicit on/off due to AC unit limitations
    • -
    • Explicit swing position due to AC unit limitations
    • -
    • Fahrenheit.
    • -
    -
    -

    Variable Documentation

    - -

    ◆ kKelonDryGradeMax

    - -
    -
    - - - - -
    const int8_t kKelonDryGradeMax = +2
    -
    - -
    -
    - -

    ◆ kKelonDryGradeMin

    - -
    -
    - - - - -
    const int8_t kKelonDryGradeMin = -2
    -
    - -
    -
    - -

    ◆ kKelonFanAuto

    - -
    -
    - - - - -
    const uint8_t kKelonFanAuto = 0
    -
    - -
    -
    - -

    ◆ kKelonFanMax

    - -
    -
    - - - - -
    const uint8_t kKelonFanMax = 3
    -
    - -
    -
    - -

    ◆ kKelonFanMedium

    - -
    -
    - - - - -
    const uint8_t kKelonFanMedium = 2
    -
    - -
    -
    - -

    ◆ kKelonFanMin

    - -
    -
    - - - - -
    const uint8_t kKelonFanMin = 1
    -
    - -
    -
    - -

    ◆ kKelonMaxTemp

    - -
    -
    - - - - -
    const uint8_t kKelonMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kKelonMinTemp

    - -
    -
    - - - - -
    const uint8_t kKelonMinTemp = 18
    -
    - -
    -
    - -

    ◆ kKelonModeCool

    - -
    -
    - - - - -
    const uint8_t kKelonModeCool = 2
    -
    - -
    -
    - -

    ◆ kKelonModeDry

    - -
    -
    - - - - -
    const uint8_t kKelonModeDry = 3
    -
    - -
    -
    - -

    ◆ kKelonModeFan

    - -
    -
    - - - - -
    const uint8_t kKelonModeFan = 4
    -
    - -
    -
    - -

    ◆ kKelonModeHeat

    - -
    -
    - - - - -
    const uint8_t kKelonModeHeat = 0
    -
    - -
    -
    - -

    ◆ kKelonModeSmart

    - -
    -
    - - - - -
    const uint8_t kKelonModeSmart = 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h_source.html deleted file mode 100644 index b7dbc3c2c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelon_8h_source.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Kelon.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Kelon.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2021 Davide Depau
    -
    2 
    -
    13 // Supports:
    -
    14 // Brand: Kelon, Model: ON/OFF 9000-12000
    -
    15 
    -
    16 #ifndef IR_KELON_H_
    -
    17 #define IR_KELON_H_
    -
    18 
    -
    19 #ifdef UNIT_TEST
    -
    20 #include "IRsend_test.h"
    -
    21 #endif
    -
    22 
    -
    23 #include "IRremoteESP8266.h"
    -
    24 #include "IRsend.h"
    -
    25 #include "IRutils.h"
    -
    26 
    - -
    28  uint64_t raw;
    -
    29 
    -
    30  struct {
    -
    31  uint8_t preamble[2];
    -
    32  uint8_t Fan: 2;
    -
    33  uint8_t PowerToggle: 1;
    -
    34  uint8_t SleepEnabled: 1;
    -
    35  uint8_t DehumidifierGrade: 3;
    -
    36  uint8_t SwingVToggle: 1;
    -
    37  uint8_t Mode: 3;
    -
    38  uint8_t TimerEnabled: 1;
    -
    39  uint8_t Temperature: 4;
    -
    40  uint8_t TimerHalfHour: 1;
    -
    41  uint8_t TimerHours: 6;
    -
    42  uint8_t SmartModeEnabled: 1;
    -
    43  uint8_t pad1: 4;
    -
    44  uint8_t SuperCoolEnabled1: 1;
    -
    45  uint8_t pad2: 2;
    -
    46  uint8_t SuperCoolEnabled2: 1;
    -
    47  };
    -
    48 };
    -
    49 
    -
    50 // Constants
    -
    51 const uint8_t kKelonModeHeat = 0;
    -
    52 const uint8_t kKelonModeSmart = 1; // (temp = 26C, but not shown)
    -
    53 const uint8_t kKelonModeCool = 2;
    -
    54 const uint8_t kKelonModeDry = 3; // (temp = 25C, but not shown)
    -
    55 const uint8_t kKelonModeFan = 4; // (temp = 25C, but not shown)
    -
    56 const uint8_t kKelonFanAuto = 0;
    -
    57 // Note! Kelon fan speeds are actually 0:AUTO, 1:MAX, 2:MED, 3:MIN
    -
    58 // Since this is insane, I decided to invert them in the public API, they are
    -
    59 // converted back in setFan/getFan
    -
    60 const uint8_t kKelonFanMin = 1;
    -
    61 const uint8_t kKelonFanMedium = 2;
    -
    62 const uint8_t kKelonFanMax = 3;
    -
    63 
    -
    64 const int8_t kKelonDryGradeMin = -2;
    -
    65 const int8_t kKelonDryGradeMax = +2;
    -
    66 const uint8_t kKelonMinTemp = 18;
    -
    67 const uint8_t kKelonMaxTemp = 32;
    -
    68 
    -
    69 
    -
    70 class IRKelonAc {
    -
    71  public:
    -
    72  explicit IRKelonAc(uint16_t pin, bool inverted = false,
    -
    73  bool use_modulation = true);
    -
    74 
    -
    75  void stateReset(void);
    -
    76 
    -
    77  #if SEND_KELON
    -
    78 
    -
    79  void send(const uint16_t repeat = kNoRepeat);
    -
    80 
    -
    85  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    86 
    -
    91  void ensurePower(const bool on);
    -
    92 
    -
    93  #endif
    -
    94 
    -
    95 
    -
    96  void begin(void);
    -
    97 
    -
    98  void setTogglePower(const bool toggle);
    -
    99 
    -
    100  bool getTogglePower(void) const;
    -
    101 
    -
    102  void setTemp(const uint8_t degrees);
    -
    103 
    -
    104  uint8_t getTemp(void) const;
    -
    105 
    -
    106  void setFan(const uint8_t speed);
    -
    107 
    -
    108  uint8_t getFan(void) const;
    -
    109 
    -
    110  void setDryGrade(const int8_t grade);
    -
    111 
    -
    112  int8_t getDryGrade(void) const;
    -
    113 
    -
    114  void setMode(const uint8_t mode);
    -
    115 
    -
    116  uint8_t getMode(void) const;
    -
    117 
    -
    118  void setToggleSwingVertical(const bool toggle);
    -
    119 
    -
    120  bool getToggleSwingVertical(void) const;
    -
    121 
    -
    122  void setSleep(const bool on);
    -
    123 
    -
    124  bool getSleep(void) const;
    -
    125 
    -
    126  void setSupercool(const bool on);
    -
    127 
    -
    128  bool getSupercool(void) const;
    -
    129 
    -
    130  void setTimer(const uint16_t mins);
    -
    131 
    -
    132  uint16_t getTimer(void) const;
    -
    133 
    -
    134  void setTimerEnabled(const bool on);
    -
    135 
    -
    136  bool getTimerEnabled(void) const;
    -
    137 
    -
    138  uint64_t getRaw(void) const;
    -
    139 
    -
    140  void setRaw(const uint64_t new_code);
    -
    141 
    -
    142  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    143 
    -
    144  static uint8_t convertFan(const stdAc::fanspeed_t fan);
    -
    145 
    -
    146  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    147 
    -
    148  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    149 
    -
    150  stdAc::state_t toCommon(const stdAc::state_t *prev = nullptr) const;
    -
    151 
    -
    152  String toString(void) const;
    -
    153 
    -
    154  private:
    -
    155 #ifndef UNIT_TEST
    - -
    157 #else // UNIT_TEST
    -
    158  IRsendTest _irsend;
    -
    160 #endif // UNIT_TEST
    - -
    163 
    -
    164  // Used when exiting supercool mode
    -
    165  uint8_t _previousMode = 0;
    - - -
    168 };
    -
    169 
    -
    170 #endif // IR_KELON_H_
    -
    -
    uint8_t getMode(void) const
    Get the current operation mode setting.
    Definition: ir_Kelon.cpp:263
    -
    bool getSleep(void) const
    Is the sleep setting on?
    Definition: ir_Kelon.cpp:287
    -
    void ensurePower(const bool on)
    Since the AC does not support actually setting the power state to a known value, this utility allow e...
    Definition: ir_Kelon.cpp:128
    -
    void setRaw(const uint64_t new_code)
    Set the raw state of the object.
    Definition: ir_Kelon.cpp:366
    -
    uint8_t _previousMode
    Definition: ir_Kelon.h:165
    -
    const uint8_t kKelonFanAuto
    Definition: ir_Kelon.h:56
    -
    uint8_t Fan
    Definition: ir_Kelon.h:32
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t Mode
    Definition: ir_Kelon.h:37
    -
    uint8_t SuperCoolEnabled2
    Definition: ir_Kelon.h:46
    -
    uint64_t getRaw(void) const
    Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
    Definition: ir_Kelon.cpp:360
    -
    const int8_t kKelonDryGradeMin
    Definition: ir_Kelon.h:64
    -
    void setToggleSwingVertical(const bool toggle)
    Request toggling the vertical swing - will be reset to false after sending.
    Definition: ir_Kelon.cpp:269
    -
    uint8_t preamble[2]
    Definition: ir_Kelon.h:31
    - -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Kelon.h:85
    -
    uint8_t TimerEnabled
    Definition: ir_Kelon.h:38
    -
    const uint8_t kKelonMaxTemp
    Definition: ir_Kelon.h:67
    -
    String toString(void) const
    Convert the internal settings into a human readable string.
    Definition: ir_Kelon.cpp:474
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint64_t raw
    Definition: ir_Kelon.h:28
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    bool getToggleSwingVertical(void) const
    Get whether the swing mode is set to be toggled.
    Definition: ir_Kelon.cpp:275
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Kelon.cpp:154
    -
    Definition: ir_Kelon.h:70
    -
    const uint8_t kKelonFanMedium
    Definition: ir_Kelon.h:61
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kKelonModeSmart
    Definition: ir_Kelon.h:52
    -
    void stateReset(void)
    Reset the internals of the object to a known good state.
    Definition: ir_Kelon.cpp:102
    -
    const uint8_t kKelonModeDry
    Definition: ir_Kelon.h:54
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Kelon.cpp:187
    -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Kelon.cpp:112
    -
    uint8_t PowerToggle
    Definition: ir_Kelon.h:33
    - -
    void setTemp(const uint8_t degrees)
    Set the temperature setting.
    Definition: ir_Kelon.cpp:172
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed to it's stdAc::fanspeed_t equivalent.
    Definition: ir_Kelon.cpp:427
    -
    const uint8_t kKelonModeCool
    Definition: ir_Kelon.h:53
    -
    uint8_t TimerHours
    Definition: ir_Kelon.h:41
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    uint8_t pad1
    Definition: ir_Kelon.h:43
    -
    uint8_t _previousFan
    Definition: ir_Kelon.h:167
    -
    uint8_t DehumidifierGrade
    Definition: ir_Kelon.h:35
    -
    const uint8_t kKelonModeHeat
    Definition: ir_Kelon.h:51
    -
    void setDryGrade(const int8_t grade)
    Set the dehumidification intensity.
    Definition: ir_Kelon.cpp:204
    -
    void setSupercool(const bool on)
    Control the current super cool mode setting.
    Definition: ir_Kelon.cpp:293
    -
    uint16_t getTimer(void) const
    Get the set timer. Timer set time is deleted once the command is sent, so calling this after send() w...
    Definition: ir_Kelon.cpp:336
    -
    const uint8_t kKelonMinTemp
    Definition: ir_Kelon.h:66
    -
    static uint8_t convertFan(const stdAc::fanspeed_t fan)
    Convert a standard A/C fan speed (stdAc::fanspeed_t) into it a native speed.
    Definition: ir_Kelon.cpp:391
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Kelon.h:156
    -
    IRKelonAc(uint16_t pin, bool inverted=false, bool use_modulation=true)
    Class constructor.
    Definition: ir_Kelon.cpp:97
    -
    uint8_t SmartModeEnabled
    Definition: ir_Kelon.h:42
    -
    uint8_t TimerHalfHour
    Definition: ir_Kelon.h:40
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Kelon.cpp:198
    -
    uint8_t SwingVToggle
    Definition: ir_Kelon.h:36
    - -
    KelonProtocol _
    Definition: ir_Kelon.h:162
    -
    void setSleep(const bool on)
    Control the current sleep (quiet) setting.
    Definition: ir_Kelon.cpp:281
    -
    uint8_t SleepEnabled
    Definition: ir_Kelon.h:34
    -
    Definition: ir_Kelon.h:27
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=nullptr) const
    Convert the internal A/C object state to it's stdAc::state_t equivalent.
    Definition: ir_Kelon.cpp:442
    -
    bool getTogglePower(void) const
    Get whether toggling power will be requested.
    Definition: ir_Kelon.cpp:166
    -
    int8_t getDryGrade(void) const
    Get the current dehumidification intensity setting. In smart mode, this controls the temperature adju...
    Definition: ir_Kelon.cpp:221
    -
    uint8_t Temperature
    Definition: ir_Kelon.h:39
    -
    const uint8_t kKelonFanMax
    Definition: ir_Kelon.h:62
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's stdAc::opmode_t equivalent.
    Definition: ir_Kelon.cpp:409
    -
    bool getSupercool(void) const
    Is the super cool mode setting on?
    Definition: ir_Kelon.cpp:308
    -
    uint8_t pad2
    Definition: ir_Kelon.h:45
    -
    const uint8_t kKelonModeFan
    Definition: ir_Kelon.h:55
    -
    const int8_t kKelonDryGradeMax
    Definition: ir_Kelon.h:65
    -
    void setMode(const uint8_t mode)
    Set the desired operation mode.
    Definition: ir_Kelon.cpp:228
    -
    uint8_t SuperCoolEnabled1
    Definition: ir_Kelon.h:44
    -
    void setTimerEnabled(const bool on)
    Enable or disable the timer. Note that in order to enable the timer the minutes must be set with setT...
    Definition: ir_Kelon.cpp:346
    -
    const uint8_t kKelonFanMin
    Definition: ir_Kelon.h:60
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.
    Definition: ir_Kelon.cpp:373
    -
    bool getTimerEnabled(void) const
    Get the current timer status.
    Definition: ir_Kelon.cpp:352
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Kelon.cpp:181
    -
    void setTimer(const uint16_t mins)
    Set the timer time and enable it. Timer is an off timer if the unit is on, it is an on timer if the u...
    Definition: ir_Kelon.cpp:316
    -
    void setTogglePower(const bool toggle)
    Request toggling power - will be reset to false after sending.
    Definition: ir_Kelon.cpp:160
    -
    uint8_t _previousTemp
    Definition: ir_Kelon.h:166
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8cpp.html deleted file mode 100644 index 286608a30..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8cpp.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Kelvinator.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Kelvinator.cpp File Reference
    -
    -
    - -

    Support for Kelvinator A/C protocols. Code to emulate IR Kelvinator YALIF remote control unit, which should control at least the following Kelvinator A/C units: KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, KSV70HRC, KSV80HRC. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kKelvinatorTick = 85
     
    const uint16_t kKelvinatorHdrMarkTicks = 106
     
    const uint16_t kKelvinatorHdrMark = kKelvinatorHdrMarkTicks * kKelvinatorTick
     
    const uint16_t kKelvinatorHdrSpaceTicks = 53
     
    const uint16_t kKelvinatorHdrSpace = kKelvinatorHdrSpaceTicks * kKelvinatorTick
     
    const uint16_t kKelvinatorBitMarkTicks = 8
     
    const uint16_t kKelvinatorBitMark = kKelvinatorBitMarkTicks * kKelvinatorTick
     
    const uint16_t kKelvinatorOneSpaceTicks = 18
     
    const uint16_t kKelvinatorOneSpace = kKelvinatorOneSpaceTicks * kKelvinatorTick
     
    const uint16_t kKelvinatorZeroSpaceTicks = 6
     
    const uint16_t kKelvinatorZeroSpace
     
    const uint16_t kKelvinatorGapSpaceTicks = 235
     
    const uint16_t kKelvinatorGapSpace = kKelvinatorGapSpaceTicks * kKelvinatorTick
     
    const uint8_t kKelvinatorCmdFooter = 2
     
    const uint8_t kKelvinatorCmdFooterBits = 3
     
    const uint8_t kKelvinatorChecksumStart = 10
     
    -

    Detailed Description

    -

    Support for Kelvinator A/C protocols. Code to emulate IR Kelvinator YALIF remote control unit, which should control at least the following Kelvinator A/C units: KSV26CRC, KSV26HRC, KSV35CRC, KSV35HRC, KSV53HRC, KSV62HRC, KSV70CRC, KSV70HRC, KSV80HRC.

    -
    Note
    Unsupported:
      -
    • All Sleep modes.
    • -
    • All Timer modes.
    • -
    • "I Feel" button & mode.
    • -
    • Energy Saving mode.
    • -
    • Low Heat mode.
    • -
    • Fahrenheit.
    • -
    -
    -

    Variable Documentation

    - -

    ◆ kKelvinatorBitMark

    - -
    -
    - - - - -
    const uint16_t kKelvinatorBitMark = kKelvinatorBitMarkTicks * kKelvinatorTick
    -
    - -
    -
    - -

    ◆ kKelvinatorBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kKelvinatorBitMarkTicks = 8
    -
    - -
    -
    - -

    ◆ kKelvinatorChecksumStart

    - -
    -
    - - - - -
    const uint8_t kKelvinatorChecksumStart = 10
    -
    - -
    -
    - -

    ◆ kKelvinatorCmdFooter

    - -
    -
    - - - - -
    const uint8_t kKelvinatorCmdFooter = 2
    -
    - -
    -
    - -

    ◆ kKelvinatorCmdFooterBits

    - -
    -
    - - - - -
    const uint8_t kKelvinatorCmdFooterBits = 3
    -
    - -
    -
    - -

    ◆ kKelvinatorGapSpace

    - -
    -
    - - - - -
    const uint16_t kKelvinatorGapSpace = kKelvinatorGapSpaceTicks * kKelvinatorTick
    -
    - -
    -
    - -

    ◆ kKelvinatorGapSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kKelvinatorGapSpaceTicks = 235
    -
    - -
    -
    - -

    ◆ kKelvinatorHdrMark

    - -
    -
    - - - - -
    const uint16_t kKelvinatorHdrMark = kKelvinatorHdrMarkTicks * kKelvinatorTick
    -
    - -
    -
    - -

    ◆ kKelvinatorHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kKelvinatorHdrMarkTicks = 106
    -
    - -
    -
    - -

    ◆ kKelvinatorHdrSpace

    - -
    -
    - - - - -
    const uint16_t kKelvinatorHdrSpace = kKelvinatorHdrSpaceTicks * kKelvinatorTick
    -
    - -
    -
    - -

    ◆ kKelvinatorHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kKelvinatorHdrSpaceTicks = 53
    -
    - -
    -
    - -

    ◆ kKelvinatorOneSpace

    - -
    -
    - - - - -
    const uint16_t kKelvinatorOneSpace = kKelvinatorOneSpaceTicks * kKelvinatorTick
    -
    - -
    -
    - -

    ◆ kKelvinatorOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kKelvinatorOneSpaceTicks = 18
    -
    - -
    -
    - -

    ◆ kKelvinatorTick

    - -
    -
    - - - - -
    const uint16_t kKelvinatorTick = 85
    -
    - -
    -
    - -

    ◆ kKelvinatorZeroSpace

    - -
    -
    - - - - -
    const uint16_t kKelvinatorZeroSpace
    -
    -Initial value: -
    -
    - -

    ◆ kKelvinatorZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kKelvinatorZeroSpaceTicks = 6
    -
    - -
    -
    -
    -
    const uint16_t kKelvinatorZeroSpaceTicks
    Definition: ir_Kelvinator.cpp:39
    -
    const uint16_t kKelvinatorTick
    Definition: ir_Kelvinator.cpp:30
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h.html deleted file mode 100644 index c76e2cf2f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Kelvinator.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Kelvinator.h File Reference
    -
    -
    - -

    Support for Kelvinator A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  KelvinatorProtocol
     Native representation of a Kelvinator A/C message. More...
     
    class  IRKelvinatorAC
     Class for handling detailed Kelvinator A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kKelvinatorAuto = 0
     
    const uint8_t kKelvinatorCool = 1
     
    const uint8_t kKelvinatorDry = 2
     
    const uint8_t kKelvinatorFan = 3
     
    const uint8_t kKelvinatorHeat = 4
     
    const uint8_t kKelvinatorBasicFanMax = 3
     
    const uint8_t kKelvinatorFanAuto = 0
     
    const uint8_t kKelvinatorFanMin = 1
     
    const uint8_t kKelvinatorFanMax = 5
     
    const uint8_t kKelvinatorMinTemp = 16
     
    const uint8_t kKelvinatorMaxTemp = 30
     
    const uint8_t kKelvinatorAutoTemp = 25
     
    -

    Detailed Description

    -

    Support for Kelvinator A/C protocols.

    -

    Variable Documentation

    - -

    ◆ kKelvinatorAuto

    - -
    -
    - - - - -
    const uint8_t kKelvinatorAuto = 0
    -
    - -
    -
    - -

    ◆ kKelvinatorAutoTemp

    - -
    -
    - - - - -
    const uint8_t kKelvinatorAutoTemp = 25
    -
    - -
    -
    - -

    ◆ kKelvinatorBasicFanMax

    - -
    -
    - - - - -
    const uint8_t kKelvinatorBasicFanMax = 3
    -
    - -
    -
    - -

    ◆ kKelvinatorCool

    - -
    -
    - - - - -
    const uint8_t kKelvinatorCool = 1
    -
    - -
    -
    - -

    ◆ kKelvinatorDry

    - -
    -
    - - - - -
    const uint8_t kKelvinatorDry = 2
    -
    - -
    -
    - -

    ◆ kKelvinatorFan

    - -
    -
    - - - - -
    const uint8_t kKelvinatorFan = 3
    -
    - -
    -
    - -

    ◆ kKelvinatorFanAuto

    - -
    -
    - - - - -
    const uint8_t kKelvinatorFanAuto = 0
    -
    - -
    -
    - -

    ◆ kKelvinatorFanMax

    - -
    -
    - - - - -
    const uint8_t kKelvinatorFanMax = 5
    -
    - -
    -
    - -

    ◆ kKelvinatorFanMin

    - -
    -
    - - - - -
    const uint8_t kKelvinatorFanMin = 1
    -
    - -
    -
    - -

    ◆ kKelvinatorHeat

    - -
    -
    - - - - -
    const uint8_t kKelvinatorHeat = 4
    -
    - -
    -
    - -

    ◆ kKelvinatorMaxTemp

    - -
    -
    - - - - -
    const uint8_t kKelvinatorMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kKelvinatorMinTemp

    - -
    -
    - - - - -
    const uint8_t kKelvinatorMinTemp = 16
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h_source.html deleted file mode 100644 index 4804dee41..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Kelvinator_8h_source.html +++ /dev/null @@ -1,338 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Kelvinator.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Kelvinator.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2016 David Conran
    -
    4 
    -
    5 // Supports:
    -
    6 // Brand: Kelvinator, Model: YALIF Remote
    -
    7 // Brand: Kelvinator, Model: KSV26CRC A/C
    -
    8 // Brand: Kelvinator, Model: KSV26HRC A/C
    -
    9 // Brand: Kelvinator, Model: KSV35CRC A/C
    -
    10 // Brand: Kelvinator, Model: KSV35HRC A/C
    -
    11 // Brand: Kelvinator, Model: KSV53HRC A/C
    -
    12 // Brand: Kelvinator, Model: KSV62HRC A/C
    -
    13 // Brand: Kelvinator, Model: KSV70CRC A/C
    -
    14 // Brand: Kelvinator, Model: KSV70HRC A/C
    -
    15 // Brand: Kelvinator, Model: KSV80HRC A/C
    -
    16 // Brand: Green, Model: YAPOF3 remote
    -
    17 // Brand: Sharp, Model: YB1FA remote
    -
    18 // Brand: Sharp, Model: A5VEY A/C
    -
    19 
    -
    20 #ifndef IR_KELVINATOR_H_
    -
    21 #define IR_KELVINATOR_H_
    -
    22 
    -
    23 #define __STDC_LIMIT_MACROS
    -
    24 #include <stdint.h>
    -
    25 #ifndef UNIT_TEST
    -
    26 #include <Arduino.h>
    -
    27 #endif
    -
    28 #include "IRremoteESP8266.h"
    -
    29 #include "IRsend.h"
    -
    30 #ifdef UNIT_TEST
    -
    31 #include "IRsend_test.h"
    -
    32 #endif
    -
    33 
    - - -
    37  struct {
    -
    38  // Byte 0
    -
    39  uint8_t Mode :3;
    -
    40  uint8_t Power :1;
    -
    41  uint8_t BasicFan :2;
    -
    42  uint8_t VentSwing :1;
    -
    43  uint8_t :1; // Sleep Modes 1 & 3 (1 = On, 0 = Off)
    -
    44  // Byte 1
    -
    45  uint8_t Temp :4; // Degrees C.
    -
    46  uint8_t :4;
    -
    47  // Byte 2
    -
    48  uint8_t :4;
    -
    49  uint8_t Turbo :1;
    -
    50  uint8_t Light :1;
    -
    51  uint8_t IonFilter :1;
    -
    52  uint8_t XFan :1;
    -
    53  // Byte 3
    -
    54  uint8_t :4;
    -
    55  uint8_t :2; // (possibly timer related) (Typically 0b01)
    -
    56  uint8_t :2; // End of command block (B01)
    -
    57  // (B010 marker and a gap of 20ms)
    -
    58  // Byte 4
    -
    59  uint8_t SwingV :1;
    -
    60  uint8_t :3;
    -
    61  uint8_t SwingH :1;
    -
    62  uint8_t :3;
    -
    63  // Byte 5~6
    -
    64  uint8_t pad0[2]; // Timer related. Typically 0 except when timer in use.
    -
    65  // Byte 7
    -
    66  uint8_t :4; // (Used in Timer mode)
    -
    67  uint8_t Sum1 :4; // checksum of the previous bytes (0-6)
    -
    68  // (gap of 40ms)
    -
    69  // (header mark and space)
    -
    70  // Byte 8~10
    -
    71  uint8_t pad1[3]; // Repeat of byte 0~2
    -
    72  // Byte 11
    -
    73  uint8_t :4;
    -
    74  uint8_t :2; // (possibly timer related) (Typically 0b11)
    -
    75  uint8_t :2; // End of command block (B01)
    -
    76  // (B010 marker and a gap of 20ms)
    -
    77  // Byte 12
    -
    78  uint8_t :1; // Sleep mode 2 (1 = On, 0=Off)
    -
    79  uint8_t :6; // (Used in Sleep Mode 3, Typically 0b000000)
    -
    80  uint8_t Quiet :1;
    -
    81  // Byte 13
    -
    82  uint8_t :8; // (Sleep Mode 3 related, Typically 0x00)
    -
    83  // Byte 14
    -
    84  uint8_t :4; // (Sleep Mode 3 related, Typically 0b0000)
    -
    85  uint8_t Fan :3;
    -
    86  // Byte 15
    -
    87  uint8_t :4;
    -
    88  uint8_t Sum2 :4; // checksum of the previous bytes (8-14)
    -
    89  };
    -
    90 };
    -
    91 
    -
    92 // Constants
    -
    93 const uint8_t kKelvinatorAuto = 0; // (temp = 25C)
    -
    94 const uint8_t kKelvinatorCool = 1;
    -
    95 const uint8_t kKelvinatorDry = 2; // (temp = 25C, but not shown)
    -
    96 const uint8_t kKelvinatorFan = 3;
    -
    97 const uint8_t kKelvinatorHeat = 4;
    -
    98 const uint8_t kKelvinatorBasicFanMax = 3;
    -
    99 const uint8_t kKelvinatorFanAuto = 0;
    -
    100 const uint8_t kKelvinatorFanMin = 1;
    -
    101 const uint8_t kKelvinatorFanMax = 5;
    -
    102 const uint8_t kKelvinatorMinTemp = 16; // 16C
    -
    103 const uint8_t kKelvinatorMaxTemp = 30; // 30C
    -
    104 const uint8_t kKelvinatorAutoTemp = 25; // 25C
    -
    105 
    -
    106 // Legacy defines (Deprecated)
    -
    107 #define KELVINATOR_MIN_TEMP kKelvinatorMinTemp
    -
    108 #define KELVINATOR_MAX_TEMP kKelvinatorMaxTemp
    -
    109 #define KELVINATOR_HEAT kKelvinatorHeat
    -
    110 #define KELVINATOR_FAN_MAX kKelvinatorFanMax
    -
    111 #define KELVINATOR_FAN_AUTO kKelvinatorFanAuto
    -
    112 #define KELVINATOR_FAN kKelvinatorFan
    -
    113 #define KELVINATOR_DRY kKelvinatorDry
    -
    114 #define KELVINATOR_COOL kKelvinatorCool
    -
    115 #define KELVINATOR_BASIC_FAN_MAX kKelvinatorBasicFanMax
    -
    116 #define KELVINATOR_AUTO_TEMP kKelvinatorAutoTemp
    -
    117 #define KELVINATOR_AUTO kKelvinatorAuto
    -
    118 
    -
    119 // Classes
    - -
    122  public:
    -
    123  explicit IRKelvinatorAC(const uint16_t pin, const bool inverted = false,
    -
    124  const bool use_modulation = true);
    -
    125  void stateReset(void);
    -
    126 #if SEND_KELVINATOR
    -
    127  void send(const uint16_t repeat = kKelvinatorDefaultRepeat);
    -
    132  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    133 #endif // SEND_KELVINATOR
    -
    134  void begin(void);
    -
    135  void on(void);
    -
    136  void off(void);
    -
    137  void setPower(const bool on);
    -
    138  bool getPower(void) const;
    -
    139  void setTemp(const uint8_t degrees);
    -
    140  uint8_t getTemp(void) const;
    -
    141  void setFan(const uint8_t speed);
    -
    142  uint8_t getFan(void) const;
    -
    143  void setMode(const uint8_t mode);
    -
    144  uint8_t getMode(void) const;
    -
    145  void setSwingVertical(const bool on);
    -
    146  bool getSwingVertical(void) const;
    -
    147  void setSwingHorizontal(const bool on);
    -
    148  bool getSwingHorizontal(void) const;
    -
    149  void setQuiet(const bool on);
    -
    150  bool getQuiet(void) const;
    -
    151  void setIonFilter(const bool on);
    -
    152  bool getIonFilter(void) const;
    -
    153  void setLight(const bool on);
    -
    154  bool getLight(void) const;
    -
    155  void setXFan(const bool on);
    -
    156  bool getXFan(void) const;
    -
    157  void setTurbo(const bool on);
    -
    158  bool getTurbo(void) const;
    -
    159  uint8_t* getRaw(void);
    -
    160  void setRaw(const uint8_t new_code[]);
    -
    161  static uint8_t calcBlockChecksum(
    -
    162  const uint8_t* block, const uint16_t length = kKelvinatorStateLength / 2);
    -
    163  static bool validChecksum(const uint8_t state[],
    -
    164  const uint16_t length = kKelvinatorStateLength);
    -
    165  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    166  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    167  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    168  stdAc::state_t toCommon(void) const;
    -
    169  String toString(void) const;
    -
    170 #ifndef UNIT_TEST
    -
    171 
    -
    172  private:
    - -
    174 #else // UNIT_TEST
    -
    175  IRsendTest _irsend;
    -
    177 #endif // UNIT_TEST
    - -
    180  void checksum(void);
    -
    181  void fixup(void);
    -
    182 };
    -
    183 
    -
    184 #endif // IR_KELVINATOR_H_
    -
    -
    void setSwingHorizontal(const bool on)
    Control the current horizontal swing setting.
    Definition: ir_Kelvinator.cpp:292
    -
    void stateReset(void)
    Reset the internals of the object to a known good state.
    Definition: ir_Kelvinator.cpp:114
    -
    void setTurbo(const bool on)
    Control the current Turbo setting.
    Definition: ir_Kelvinator.cpp:358
    -
    const uint8_t kKelvinatorFanAuto
    Definition: ir_Kelvinator.h:99
    -
    void on(void)
    Set the internal state to have the power on.
    Definition: ir_Kelvinator.cpp:196
    -
    const uint8_t kKelvinatorFanMax
    Definition: ir_Kelvinator.h:101
    -
    const uint8_t kKelvinatorCool
    Definition: ir_Kelvinator.h:94
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    void setLight(const bool on)
    Control the current Light setting. i.e. The LED display on the A/C unit that shows the basic settings...
    Definition: ir_Kelvinator.cpp:330
    -
    uint8_t IonFilter
    Definition: ir_Kelvinator.h:51
    -
    uint8_t SwingV
    Definition: ir_Kelvinator.h:59
    -
    uint8_t pad0[2]
    Definition: ir_Kelvinator.h:64
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed to it's stdAc::fanspeed_t equivalent.
    Definition: ir_Kelvinator.cpp:397
    -
    const uint8_t kKelvinatorAutoTemp
    Definition: ir_Kelvinator.h:104
    -
    uint8_t VentSwing
    Definition: ir_Kelvinator.h:42
    -
    uint8_t * getRaw(void)
    Get the raw state of the object, suitable to be sent with the appropriate IRsend object method.
    Definition: ir_Kelvinator.cpp:146
    - -
    bool getLight(void) const
    Is the Light (Display) setting on?
    Definition: ir_Kelvinator.cpp:336
    -
    uint8_t XFan
    Definition: ir_Kelvinator.h:52
    -
    void setIonFilter(const bool on)
    Control the current Ion Filter setting.
    Definition: ir_Kelvinator.cpp:317
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Kelvinator.cpp:223
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Kelvinator.cpp:229
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kKelvinatorMinTemp
    Definition: ir_Kelvinator.h:102
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Kelvinator.h:132
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    bool getSwingHorizontal(void) const
    Is the horizontal swing setting on?
    Definition: ir_Kelvinator.cpp:299
    -
    void setPower(const bool on)
    Set the internal state to have the desired power.
    Definition: ir_Kelvinator.cpp:203
    -
    void setMode(const uint8_t mode)
    Set the desired operation mode.
    Definition: ir_Kelvinator.cpp:257
    -
    void send(const uint16_t repeat=kKelvinatorDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Kelvinator.cpp:138
    -
    void setRaw(const uint8_t new_code[])
    Set the raw state of the object.
    Definition: ir_Kelvinator.cpp:153
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Kelvinator.cpp:121
    -
    static uint8_t calcBlockChecksum(const uint8_t *block, const uint16_t length=kKelvinatorStateLength/2)
    Calculate the checksum for a given block of state.
    Definition: ir_Kelvinator.cpp:162
    -
    uint8_t Power
    Definition: ir_Kelvinator.h:40
    - -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Kelvinator.h:173
    -
    uint8_t Light
    Definition: ir_Kelvinator.h:50
    -
    uint8_t raw[kKelvinatorStateLength]
    The state in IR code form.
    Definition: ir_Kelvinator.h:36
    -
    bool getPower(void) const
    Get the power setting from the internal state.
    Definition: ir_Kelvinator.cpp:209
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kKelvinatorStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Kelvinator.cpp:184
    -
    Class for handling detailed Kelvinator A/C messages.
    Definition: ir_Kelvinator.h:121
    -
    const uint8_t kKelvinatorMaxTemp
    Definition: ir_Kelvinator.h:103
    -
    bool getSwingVertical(void) const
    Is the vertical swing setting on?
    Definition: ir_Kelvinator.cpp:286
    -
    uint8_t Mode
    Definition: ir_Kelvinator.h:39
    -
    uint8_t Sum1
    Definition: ir_Kelvinator.h:67
    -
    void checksum(void)
    Calculate the checksum for the internal state.
    Definition: ir_Kelvinator.cpp:175
    -
    void fixup(void)
    Fix up any odd conditions for the current state.
    Definition: ir_Kelvinator.cpp:124
    -
    uint8_t pad1[3]
    Definition: ir_Kelvinator.h:71
    -
    const uint16_t kKelvinatorStateLength
    Definition: IRremoteESP8266.h:1044
    -
    stdAc::state_t toCommon(void) const
    Convert the internal A/C object state to it's stdAc::state_t equivalent.
    Definition: ir_Kelvinator.cpp:403
    -
    void setQuiet(const bool on)
    Control the current Quiet setting.
    Definition: ir_Kelvinator.cpp:305
    -
    void setXFan(const bool on)
    Control the current XFan setting. This setting will cause the unit blow air after power off to dry ou...
    Definition: ir_Kelvinator.cpp:345
    -
    uint8_t SwingH
    Definition: ir_Kelvinator.h:61
    -
    const uint8_t kKelvinatorFan
    Definition: ir_Kelvinator.h:96
    -
    String toString(void) const
    Convert the internal settings into a human readable string.
    Definition: ir_Kelvinator.cpp:429
    -
    void setTemp(const uint8_t degrees)
    Set the temperature setting.
    Definition: ir_Kelvinator.cpp:215
    -
    uint8_t Sum2
    Definition: ir_Kelvinator.h:88
    -
    const uint8_t kKelvinatorBasicFanMax
    Definition: ir_Kelvinator.h:98
    -
    const uint8_t kKelvinatorFanMin
    Definition: ir_Kelvinator.h:100
    -
    bool getTurbo(void) const
    Is the Turbo setting on?
    Definition: ir_Kelvinator.cpp:364
    -
    KelvinatorProtocol _
    Definition: ir_Kelvinator.h:179
    -
    uint8_t getMode(void) const
    Get the current operation mode setting.
    Definition: ir_Kelvinator.cpp:251
    -
    uint8_t BasicFan
    Definition: ir_Kelvinator.h:41
    -
    const uint8_t kKelvinatorHeat
    Definition: ir_Kelvinator.h:97
    -
    bool getQuiet(void) const
    Is the Quiet setting on?
    Definition: ir_Kelvinator.cpp:311
    -
    IRKelvinatorAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Kelvinator.cpp:109
    -
    void off(void)
    Set the internal state to have the power off.
    Definition: ir_Kelvinator.cpp:199
    -
    const uint16_t kKelvinatorDefaultRepeat
    Definition: IRremoteESP8266.h:1046
    -
    void setSwingVertical(const bool on)
    Control the current vertical swing setting.
    Definition: ir_Kelvinator.cpp:279
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Kelvinator.cpp:245
    -
    const uint8_t kKelvinatorDry
    Definition: ir_Kelvinator.h:95
    -
    uint8_t Quiet
    Definition: ir_Kelvinator.h:80
    -
    bool getXFan(void) const
    Is the XFan setting on?
    Definition: ir_Kelvinator.cpp:351
    -
    Native representation of a Kelvinator A/C message.
    Definition: ir_Kelvinator.h:35
    -
    bool getIonFilter(void) const
    Is the Ion Filter setting on?
    Definition: ir_Kelvinator.cpp:323
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's stdAc::opmode_t equivalent.
    Definition: ir_Kelvinator.cpp:384
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t Turbo
    Definition: ir_Kelvinator.h:49
    -
    uint8_t Temp
    Definition: ir_Kelvinator.h:45
    -
    uint8_t Fan
    Definition: ir_Kelvinator.h:85
    -
    const uint8_t kKelvinatorAuto
    Definition: ir_Kelvinator.h:93
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode (stdAc::opmode_t) into it a native mode.
    Definition: ir_Kelvinator.cpp:371
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8cpp.html deleted file mode 100644 index daacfe7d2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8cpp.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_LG.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_LG.cpp File Reference
    -
    -
    - -

    Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kLgBitMark = 550
     uSeconds. More...
     
    const uint16_t kLgOneSpace = 1600
     uSeconds. More...
     
    const uint16_t kLgZeroSpace = 550
     uSeconds. More...
     
    const uint16_t kLgRptSpace = 2250
     uSeconds. More...
     
    const uint16_t kLgMinGap = 39750
     uSeconds. More...
     
    const uint32_t kLgMinMessageLength = 108050
     uSeconds. More...
     
    const uint16_t kLgHdrMark = 8500
     uSeconds. More...
     
    const uint16_t kLgHdrSpace = 4250
     uSeconds. More...
     
    const uint16_t kLg32HdrMark = 4500
     uSeconds. More...
     
    const uint16_t kLg32HdrSpace = 4450
     uSeconds. More...
     
    const uint16_t kLg32RptHdrMark = 8950
     uSeconds. More...
     
    const uint16_t kLg2HdrMark = 3200
     uSeconds. More...
     
    const uint16_t kLg2HdrSpace = 9900
     uSeconds. More...
     
    const uint16_t kLg2BitMark = 480
     uSeconds. More...
     
    -

    Detailed Description

    -

    Support for LG protocols. LG decode originally added by Darryl Smith (based on the JVC protocol) LG send originally added by https://github.com/chaeplin.

    -
    See also
    https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438
    -

    Variable Documentation

    - -

    ◆ kLg2BitMark

    - -
    -
    - - - - -
    const uint16_t kLg2BitMark = 480
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLg2HdrMark

    - -
    -
    - - - - -
    const uint16_t kLg2HdrMark = 3200
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLg2HdrSpace

    - -
    -
    - - - - -
    const uint16_t kLg2HdrSpace = 9900
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLg32HdrMark

    - -
    -
    - - - - -
    const uint16_t kLg32HdrMark = 4500
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLg32HdrSpace

    - -
    -
    - - - - -
    const uint16_t kLg32HdrSpace = 4450
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLg32RptHdrMark

    - -
    -
    - - - - -
    const uint16_t kLg32RptHdrMark = 8950
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgBitMark

    - -
    -
    - - - - -
    const uint16_t kLgBitMark = 550
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgHdrMark

    - -
    -
    - - - - -
    const uint16_t kLgHdrMark = 8500
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgHdrSpace

    - -
    -
    - - - - -
    const uint16_t kLgHdrSpace = 4250
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgMinGap

    - -
    -
    - - - - -
    const uint16_t kLgMinGap = 39750
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgMinMessageLength

    - -
    -
    - - - - -
    const uint32_t kLgMinMessageLength = 108050
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgOneSpace

    - -
    -
    - - - - -
    const uint16_t kLgOneSpace = 1600
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgRptSpace

    - -
    -
    - - - - -
    const uint16_t kLgRptSpace = 2250
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kLgZeroSpace

    - -
    -
    - - - - -
    const uint16_t kLgZeroSpace = 550
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h.html deleted file mode 100644 index 431268346..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_LG.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_LG.h File Reference
    -
    -
    - -

    Support for LG protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  LGProtocol
     Native representation of a LG A/C message. More...
     
    class  IRLgAc
     Class for handling detailed LG A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kLgAcFanLowest = 0
     
    const uint8_t kLgAcFanLow = 1
     
    const uint8_t kLgAcFanMedium = 2
     
    const uint8_t kLgAcFanHigh = 4
     
    const uint8_t kLgAcFanAuto = 5
     
    const uint8_t kLgAcTempAdjust = 15
     
    const uint8_t kLgAcMinTemp = 16
     
    const uint8_t kLgAcMaxTemp = 30
     
    const uint8_t kLgAcCool = 0
     
    const uint8_t kLgAcDry = 1
     
    const uint8_t kLgAcFan = 2
     
    const uint8_t kLgAcAuto = 3
     
    const uint8_t kLgAcHeat = 4
     
    const uint8_t kLgAcPowerOff = 3
     
    const uint8_t kLgAcPowerOn = 0
     
    const uint8_t kLgAcSignature = 0x88
     
    const uint32_t kLgAcOffCommand = 0x88C0051
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kLgAcAuto

    - -
    -
    - - - - -
    const uint8_t kLgAcAuto = 3
    -
    - -
    -
    - -

    ◆ kLgAcCool

    - -
    -
    - - - - -
    const uint8_t kLgAcCool = 0
    -
    - -
    -
    - -

    ◆ kLgAcDry

    - -
    -
    - - - - -
    const uint8_t kLgAcDry = 1
    -
    - -
    -
    - -

    ◆ kLgAcFan

    - -
    -
    - - - - -
    const uint8_t kLgAcFan = 2
    -
    - -
    -
    - -

    ◆ kLgAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kLgAcFanAuto = 5
    -
    - -
    -
    - -

    ◆ kLgAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kLgAcFanHigh = 4
    -
    - -
    -
    - -

    ◆ kLgAcFanLow

    - -
    -
    - - - - -
    const uint8_t kLgAcFanLow = 1
    -
    - -
    -
    - -

    ◆ kLgAcFanLowest

    - -
    -
    - - - - -
    const uint8_t kLgAcFanLowest = 0
    -
    - -
    -
    - -

    ◆ kLgAcFanMedium

    - -
    -
    - - - - -
    const uint8_t kLgAcFanMedium = 2
    -
    - -
    -
    - -

    ◆ kLgAcHeat

    - -
    -
    - - - - -
    const uint8_t kLgAcHeat = 4
    -
    - -
    -
    - -

    ◆ kLgAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kLgAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kLgAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kLgAcMinTemp = 16
    -
    - -
    -
    - -

    ◆ kLgAcOffCommand

    - -
    -
    - - - - -
    const uint32_t kLgAcOffCommand = 0x88C0051
    -
    - -
    -
    - -

    ◆ kLgAcPowerOff

    - -
    -
    - - - - -
    const uint8_t kLgAcPowerOff = 3
    -
    - -
    -
    - -

    ◆ kLgAcPowerOn

    - -
    -
    - - - - -
    const uint8_t kLgAcPowerOn = 0
    -
    - -
    -
    - -

    ◆ kLgAcSignature

    - -
    -
    - - - - -
    const uint8_t kLgAcSignature = 0x88
    -
    - -
    -
    - -

    ◆ kLgAcTempAdjust

    - -
    -
    - - - - -
    const uint8_t kLgAcTempAdjust = 15
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h_source.html deleted file mode 100644 index e4f846776..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__LG_8h_source.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_LG.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_LG.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2017, 2019 David Conran
    -
    2 
    -
    6 
    -
    7 
    -
    8 // Supports:
    -
    9 // Brand: LG, Model: 6711A20083V remote (LG)
    -
    10 // Brand: LG, Model: AKB74395308 remote (LG2)
    -
    11 // Brand: LG, Model: S4-W12JA3AA A/C (LG2)
    -
    12 // Brand: LG, Model: AKB75215403 remote (LG2)
    -
    13 // Brand: General Electric, Model: AG1BH09AW101 Split A/C
    -
    14 // Brand: General Electric, Model: 6711AR2853M A/C Remote
    -
    15 
    -
    16 #ifndef IR_LG_H_
    -
    17 #define IR_LG_H_
    -
    18 
    -
    19 #define __STDC_LIMIT_MACROS
    -
    20 #include <stdint.h>
    -
    21 #ifndef UNIT_TEST
    -
    22 #include <Arduino.h>
    -
    23 #endif
    -
    24 #include "IRremoteESP8266.h"
    -
    25 #include "IRsend.h"
    -
    26 #include "IRutils.h"
    -
    27 #ifdef UNIT_TEST
    -
    28 #include "IRsend_test.h"
    -
    29 #endif
    -
    30 
    -
    32 union LGProtocol{
    -
    33  uint32_t raw;
    -
    34  struct {
    -
    35  uint32_t Sum :4;
    -
    36  uint32_t Fan :3;
    -
    37  uint32_t :1;
    -
    38  uint32_t Temp :4;
    -
    39  uint32_t Mode :3;
    -
    40  uint32_t :3;
    -
    41  uint32_t Power:2;
    -
    42  uint32_t Sign :8;
    -
    43  };
    -
    44 };
    -
    45 
    -
    46 const uint8_t kLgAcFanLowest = 0; // 0b000
    -
    47 const uint8_t kLgAcFanLow = 1; // 0b001
    -
    48 const uint8_t kLgAcFanMedium = 2; // 0b010
    -
    49 const uint8_t kLgAcFanHigh = 4; // 0b100
    -
    50 const uint8_t kLgAcFanAuto = 5; // 0b101
    -
    51 const uint8_t kLgAcTempAdjust = 15;
    -
    52 const uint8_t kLgAcMinTemp = 16; // Celsius
    -
    53 const uint8_t kLgAcMaxTemp = 30; // Celsius
    -
    54 const uint8_t kLgAcCool = 0; // 0b000
    -
    55 const uint8_t kLgAcDry = 1; // 0b001
    -
    56 const uint8_t kLgAcFan = 2; // 0b010
    -
    57 const uint8_t kLgAcAuto = 3; // 0b011
    -
    58 const uint8_t kLgAcHeat = 4; // 0b100
    -
    59 const uint8_t kLgAcPowerOff = 3; // 0b11
    -
    60 const uint8_t kLgAcPowerOn = 0; // 0b00
    -
    61 const uint8_t kLgAcSignature = 0x88;
    -
    62 
    -
    63 const uint32_t kLgAcOffCommand = 0x88C0051;
    -
    64 
    -
    65 // Classes
    -
    67 class IRLgAc {
    -
    68  public:
    -
    69  explicit IRLgAc(const uint16_t pin, const bool inverted = false,
    -
    70  const bool use_modulation = true);
    -
    71  void stateReset(void);
    -
    72  static uint8_t calcChecksum(const uint32_t state);
    -
    73  static bool validChecksum(const uint32_t state);
    -
    74  bool isValidLgAc(void) const;
    -
    75 #if SEND_LG
    -
    76  void send(const uint16_t repeat = kLgDefaultRepeat);
    -
    81  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    82 #endif // SEND_LG
    -
    83  void begin(void);
    -
    84  void on(void);
    -
    85  void off(void);
    -
    86  void setPower(const bool on);
    -
    87  bool getPower(void) const;
    -
    88  void setTemp(const uint8_t degrees);
    -
    89  uint8_t getTemp(void) const;
    -
    90  void setFan(const uint8_t speed);
    -
    91  uint8_t getFan(void) const;
    -
    92  void setMode(const uint8_t mode);
    -
    93  uint8_t getMode(void) const;
    -
    94  uint32_t getRaw(void);
    -
    95  void setRaw(const uint32_t new_code);
    -
    96  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    97  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    98  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    99  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    100  stdAc::state_t toCommon(void) const;
    -
    101  String toString(void) const;
    -
    102  void setModel(const lg_ac_remote_model_t model);
    -
    103  lg_ac_remote_model_t getModel(void) const;
    -
    104 #ifndef UNIT_TEST
    -
    105 
    -
    106  private:
    - -
    108 #else // UNIT_TEST
    -
    109  IRsendTest _irsend;
    -
    111 #endif // UNIT_TEST
    - -
    114  uint8_t _temp;
    - -
    116  void checksum(void);
    -
    117  void _setTemp(const uint8_t value);
    -
    118 };
    -
    119 
    -
    120 #endif // IR_LG_H_
    -
    -
    const uint8_t kLgAcFanMedium
    Definition: ir_LG.h:48
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_LG.cpp:449
    -
    void _setTemp(const uint8_t value)
    Set the temperature.
    Definition: ir_LG.cpp:328
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_LG.cpp:410
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_LG.cpp:368
    -
    decode_type_t
    Enumerator for defining and numbering of supported IR protocol.
    Definition: IRremoteESP8266.h:823
    -
    uint32_t getRaw(void)
    Get a copy of the internal state/code for this protocol.
    Definition: ir_LG.cpp:269
    -
    decode_type_t _protocol
    model
    Definition: ir_LG.h:115
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_LG.cpp:343
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_LG.h:81
    -
    const uint8_t kLgAcFanAuto
    Definition: ir_LG.h:50
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kLgAcPowerOff
    Definition: ir_LG.h:59
    -
    const uint8_t kLgAcFanLowest
    Definition: ir_LG.h:46
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_LG.cpp:352
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_LG.cpp:321
    -
    uint32_t Temp
    Definition: ir_LG.h:38
    -
    const uint8_t kLgAcFanHigh
    Definition: ir_LG.h:49
    - -
    uint32_t Sign
    Definition: ir_LG.h:42
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_LG.cpp:475
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kLgAcDry
    Definition: ir_LG.h:55
    -
    void setTemp(const uint8_t degrees)
    Set the temperature.
    Definition: ir_LG.cpp:334
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    LGProtocol _
    Definition: ir_LG.h:113
    -
    const uint32_t kLgAcOffCommand
    Definition: ir_LG.h:63
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    static uint8_t calcChecksum(const uint32_t state)
    Calculate the checksum for a given state.
    Definition: ir_LG.cpp:285
    -
    const uint8_t kLgAcFanLow
    Definition: ir_LG.h:47
    -
    void setModel(const lg_ac_remote_model_t model)
    Set the model of the A/C to emulate.
    Definition: ir_LG.cpp:242
    -
    const uint16_t kLgDefaultRepeat
    Definition: IRremoteESP8266.h:1053
    -
    const uint8_t kLgAcMaxTemp
    Definition: ir_LG.h:53
    -
    IRLgAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_LG.cpp:214
    -
    const uint8_t kLgAcSignature
    Definition: ir_LG.h:61
    - -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_LG.cpp:423
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_LG.cpp:374
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_LG.cpp:437
    -
    uint32_t raw
    The state of the IR remote in IR code form.
    Definition: ir_LG.h:33
    -
    const uint8_t kLgAcCool
    Definition: ir_LG.h:54
    -
    const uint8_t kLgAcHeat
    Definition: ir_LG.h:58
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_LG.cpp:225
    -
    Class for handling detailed LG A/C messages.
    Definition: ir_LG.h:67
    - -
    lg_ac_remote_model_t getModel(void) const
    Get the model of the A/C.
    Definition: ir_LG.cpp:256
    -
    uint32_t Fan
    Definition: ir_LG.h:36
    -
    lg_ac_remote_model_t
    LG A/C model numbers.
    Definition: IRsend.h:176
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_LG.cpp:380
    -
    uint8_t _temp
    Definition: ir_LG.h:114
    -
    const uint8_t kLgAcAuto
    Definition: ir_LG.h:57
    -
    void setRaw(const uint32_t new_code)
    Set the internal state from a valid code for this protocol.
    Definition: ir_LG.cpp:276
    -
    const uint8_t kLgAcPowerOn
    Definition: ir_LG.h:60
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_LG.cpp:307
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_LG.cpp:299
    -
    void stateReset(void)
    Reset the internals of the object to a known good state.
    Definition: ir_LG.cpp:219
    -
    const uint8_t kLgAcMinTemp
    Definition: ir_LG.h:52
    -
    const uint8_t kLgAcTempAdjust
    Definition: ir_LG.h:51
    -
    uint32_t Mode
    Definition: ir_LG.h:39
    -
    uint32_t Sum
    Definition: ir_LG.h:35
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_LG.cpp:397
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_LG.cpp:311
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void send(const uint16_t repeat=kLgDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_LG.cpp:230
    -
    static bool validChecksum(const uint32_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_LG.cpp:292
    -
    const uint8_t kLgAcFan
    Definition: ir_LG.h:56
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_LG.cpp:304
    -
    uint32_t Power
    Definition: ir_LG.h:41
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_LG.h:107
    -
    Native representation of a LG A/C message.
    Definition: ir_LG.h:32
    -
    bool isValidLgAc(void) const
    Check if the internal state looks like a valid LG A/C message.
    Definition: ir_LG.cpp:492
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lasertag_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lasertag_8cpp.html deleted file mode 100644 index 75211b610..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lasertag_8cpp.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Lasertag.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Lasertag.cpp File Reference
    -
    -
    - -

    Support for Lasertag protocols. -More...

    - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kLasertagMinSamples = 13
     
    const uint16_t kLasertagTick = 333
     
    const uint32_t kLasertagMinGap = kDefaultMessageGap
     
    const uint8_t kLasertagTolerance = 0
     
    const uint16_t kLasertagExcess = 0
     
    const uint16_t kLasertagDelta = 165
     
    const int16_t kSpace = 1
     
    const int16_t kMark = 0
     
    -

    Detailed Description

    -

    Support for Lasertag protocols.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/366
    -

    Variable Documentation

    - -

    ◆ kLasertagDelta

    - -
    -
    - - - - -
    const uint16_t kLasertagDelta = 165
    -
    - -
    -
    - -

    ◆ kLasertagExcess

    - -
    -
    - - - - -
    const uint16_t kLasertagExcess = 0
    -
    - -
    -
    - -

    ◆ kLasertagMinGap

    - -
    -
    - - - - -
    const uint32_t kLasertagMinGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kLasertagMinSamples

    - -
    -
    - - - - -
    const uint16_t kLasertagMinSamples = 13
    -
    - -
    -
    - -

    ◆ kLasertagTick

    - -
    -
    - - - - -
    const uint16_t kLasertagTick = 333
    -
    - -
    -
    - -

    ◆ kLasertagTolerance

    - -
    -
    - - - - -
    const uint8_t kLasertagTolerance = 0
    -
    - -
    -
    - -

    ◆ kMark

    - -
    -
    - - - - -
    const int16_t kMark = 0
    -
    - -
    -
    - -

    ◆ kSpace

    - -
    -
    - - - - -
    const int16_t kSpace = 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lego_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lego_8cpp.html deleted file mode 100644 index 8a2d2c588..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lego_8cpp.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Lego.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Lego.cpp File Reference
    -
    -
    - -

    Support for LEGO protocols. -More...

    - - - - - - - - - - - - -

    -Variables

    const uint16_t kLegoPfBitMark = 158
     
    const uint16_t kLegoPfHdrSpace = 1026
     
    const uint16_t kLegoPfZeroSpace = 263
     
    const uint16_t kLegoPfOneSpace = 553
     
    const uint32_t kLegoPfMinCommandLength = 16000
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kLegoPfBitMark

    - -
    -
    - - - - -
    const uint16_t kLegoPfBitMark = 158
    -
    - -
    -
    - -

    ◆ kLegoPfHdrSpace

    - -
    -
    - - - - -
    const uint16_t kLegoPfHdrSpace = 1026
    -
    - -
    -
    - -

    ◆ kLegoPfMinCommandLength

    - -
    -
    - - - - -
    const uint32_t kLegoPfMinCommandLength = 16000
    -
    - -
    -
    - -

    ◆ kLegoPfOneSpace

    - -
    -
    - - - - -
    const uint16_t kLegoPfOneSpace = 553
    -
    - -
    -
    - -

    ◆ kLegoPfZeroSpace

    - -
    -
    - - - - -
    const uint16_t kLegoPfZeroSpace = 263
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lutron_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lutron_8cpp.html deleted file mode 100644 index b75090a1f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Lutron_8cpp.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Lutron.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Lutron.cpp File Reference
    -
    -
    - -

    Support for Lutron protocols. -More...

    - - - - - - - - -

    -Variables

    const uint16_t kLutronTick = 2288
     
    const uint32_t kLutronGap = 150000
     
    const uint16_t kLutronDelta = 400
     
    -

    Detailed Description

    -

    Support for Lutron protocols.

    -
    Note
    The Lutron protocol uses a sort of Run Length encoding to encode its data. There is no header or footer per-se. As a mark is the first data we will notice, we always assume the First bit of the technically 36-bit protocol is '1'. So it is assumed, and thus we only care about the 35 bits of data.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/515
    -
    -http://www.lutron.com/TechnicalDocumentLibrary/048158.doc
    -

    Variable Documentation

    - -

    ◆ kLutronDelta

    - -
    -
    - - - - -
    const uint16_t kLutronDelta = 400
    -
    - -
    -
    - -

    ◆ kLutronGap

    - -
    -
    - - - - -
    const uint32_t kLutronGap = 150000
    -
    - -
    -
    - -

    ◆ kLutronTick

    - -
    -
    - - - - -
    const uint16_t kLutronTick = 2288
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MWM_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MWM_8cpp.html deleted file mode 100644 index 8a6c009c2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MWM_8cpp.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_MWM.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_MWM.cpp File Reference
    -
    -
    - -

    Disney Made With Magic (MWM) Support derived from ir_Lasertag.cpp. -More...

    - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMWMMinSamples = 6
     
    const uint16_t kMWMTick = 417
     
    const uint32_t kMWMMinGap = 30000
     
    const uint8_t kMWMTolerance = 0
     
    const uint16_t kMWMExcess = 0
     
    const uint16_t kMWMDelta = 150
     
    const uint8_t kMWMMaxWidth = 9
     
    const int16_t kSpace = 1
     
    const int16_t kMark = 0
     
    -

    Detailed Description

    -

    Disney Made With Magic (MWM) Support derived from ir_Lasertag.cpp.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/pull/557
    -

    Variable Documentation

    - -

    ◆ kMark

    - -
    -
    - - - - -
    const int16_t kMark = 0
    -
    - -
    -
    - -

    ◆ kMWMDelta

    - -
    -
    - - - - -
    const uint16_t kMWMDelta = 150
    -
    - -
    -
    - -

    ◆ kMWMExcess

    - -
    -
    - - - - -
    const uint16_t kMWMExcess = 0
    -
    - -
    -
    - -

    ◆ kMWMMaxWidth

    - -
    -
    - - - - -
    const uint8_t kMWMMaxWidth = 9
    -
    - -
    -
    - -

    ◆ kMWMMinGap

    - -
    -
    - - - - -
    const uint32_t kMWMMinGap = 30000
    -
    - -
    -
    - -

    ◆ kMWMMinSamples

    - -
    -
    - - - - -
    const uint16_t kMWMMinSamples = 6
    -
    - -
    -
    - -

    ◆ kMWMTick

    - -
    -
    - - - - -
    const uint16_t kMWMTick = 417
    -
    - -
    -
    - -

    ◆ kMWMTolerance

    - -
    -
    - - - - -
    const uint8_t kMWMTolerance = 0
    -
    - -
    -
    - -

    ◆ kSpace

    - -
    -
    - - - - -
    const int16_t kSpace = 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8cpp.html deleted file mode 100644 index 3b0c54da6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8cpp.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Magiquest.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Magiquest.cpp File Reference
    -
    -
    - -

    Support for MagiQuest protocols. -More...

    -

    Detailed Description

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h.html deleted file mode 100644 index 628b41793..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Magiquest.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Magiquest.h File Reference
    -
    -
    - -

    Support for MagiQuest protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - -

    -Classes

    union  magiquest
     MagiQuest packet is both Wand ID and magnitude of swish and flick. More...
     
    - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMagiQuestTotalUsec = 1150
     
    const uint8_t kMagiQuestZeroRatio = 30
     
    const uint8_t kMagiQuestOneRatio = 38
     
    const uint16_t kMagiQuestMarkZero = 280
     
    const uint16_t kMagiQuestSpaceZero = 850
     
    const uint16_t kMagiQuestMarkOne = 580
     
    const uint16_t kMagiQuestSpaceOne = 600
     
    const uint32_t kMagiQuestGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMagiQuestGap

    - -
    -
    - - - - -
    const uint32_t kMagiQuestGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kMagiQuestMarkOne

    - -
    -
    - - - - -
    const uint16_t kMagiQuestMarkOne = 580
    -
    - -
    -
    - -

    ◆ kMagiQuestMarkZero

    - -
    -
    - - - - -
    const uint16_t kMagiQuestMarkZero = 280
    -
    - -
    -
    - -

    ◆ kMagiQuestOneRatio

    - -
    -
    - - - - -
    const uint8_t kMagiQuestOneRatio = 38
    -
    - -
    -
    - -

    ◆ kMagiQuestSpaceOne

    - -
    -
    - - - - -
    const uint16_t kMagiQuestSpaceOne = 600
    -
    - -
    -
    - -

    ◆ kMagiQuestSpaceZero

    - -
    -
    - - - - -
    const uint16_t kMagiQuestSpaceZero = 850
    -
    - -
    -
    - -

    ◆ kMagiQuestTotalUsec

    - -
    -
    - - - - -
    const uint16_t kMagiQuestTotalUsec = 1150
    -
    - -
    -
    - -

    ◆ kMagiQuestZeroRatio

    - -
    -
    - - - - -
    const uint8_t kMagiQuestZeroRatio = 30
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h_source.html deleted file mode 100644 index ad67e10c2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Magiquest_8h_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Magiquest.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Magiquest.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2013 mpflaga
    -
    2 // Copyright 2015 kitlaan
    -
    3 // Copyright 2017 Jason kendall, David Conran
    -
    4 
    -
    9 
    -
    10 // Supports:
    -
    11 // Brand: MagiQuest, Model: Wand
    -
    12 
    -
    13 #ifndef IR_MAGIQUEST_H_
    -
    14 #define IR_MAGIQUEST_H_
    -
    15 
    -
    16 #define __STDC_LIMIT_MACROS
    -
    17 #include <stdint.h>
    -
    18 #include "IRremoteESP8266.h"
    -
    19 #include "IRsend.h"
    -
    20 
    -
    22 union magiquest {
    -
    23  uint64_t llword;
    -
    24  uint8_t byte[8];
    -
    25  // uint16_t word[4];
    -
    26  uint32_t lword[2];
    -
    27  struct {
    -
    28  uint16_t magnitude;
    -
    29  uint32_t wand_id;
    -
    30  uint8_t padding;
    -
    31  uint8_t scrap;
    -
    32  } cmd;
    -
    33 };
    -
    34 
    -
    35 const uint16_t kMagiQuestTotalUsec = 1150;
    -
    36 const uint8_t kMagiQuestZeroRatio = 30; // usually <= ~25%
    -
    37 const uint8_t kMagiQuestOneRatio = 38; // usually >= ~50%
    -
    38 const uint16_t kMagiQuestMarkZero = 280;
    -
    39 const uint16_t kMagiQuestSpaceZero = 850;
    -
    40 const uint16_t kMagiQuestMarkOne = 580;
    -
    41 const uint16_t kMagiQuestSpaceOne = 600;
    -
    42 const uint32_t kMagiQuestGap = kDefaultMessageGap; // Just a guess.
    -
    43 #endif // IR_MAGIQUEST_H_
    -
    -
    const uint32_t kDefaultMessageGap
    Definition: IRsend.h:41
    -
    uint8_t scrap
    Definition: ir_Magiquest.h:31
    -
    const uint16_t kMagiQuestMarkZero
    Definition: ir_Magiquest.h:38
    - -
    uint16_t magnitude
    Definition: ir_Magiquest.h:28
    -
    uint64_t llword
    Definition: ir_Magiquest.h:23
    - -
    struct magiquest::@60 cmd
    -
    const uint16_t kMagiQuestMarkOne
    Definition: ir_Magiquest.h:40
    -
    MagiQuest packet is both Wand ID and magnitude of swish and flick.
    Definition: ir_Magiquest.h:22
    -
    uint32_t wand_id
    Definition: ir_Magiquest.h:29
    -
    const uint32_t kMagiQuestGap
    Definition: ir_Magiquest.h:42
    -
    const uint16_t kMagiQuestSpaceZero
    Definition: ir_Magiquest.h:39
    -
    const uint16_t kMagiQuestSpaceOne
    Definition: ir_Magiquest.h:41
    -
    uint32_t lword[2]
    Definition: ir_Magiquest.h:26
    -
    const uint16_t kMagiQuestTotalUsec
    Definition: ir_Magiquest.h:35
    -
    uint8_t padding
    Definition: ir_Magiquest.h:30
    -
    const uint8_t kMagiQuestOneRatio
    Definition: ir_Magiquest.h:37
    -
    const uint8_t kMagiQuestZeroRatio
    Definition: ir_Magiquest.h:36
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Metz_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Metz_8cpp.html deleted file mode 100644 index 62db73bfe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Metz_8cpp.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Metz.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Metz.cpp File Reference
    -
    -
    - -

    Support for Metz protocol. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMetzHdrMark = 880
     uSeconds. More...
     
    const uint16_t kMetzHdrSpace = 2336
     uSeconds. More...
     
    const uint16_t kMetzBitMark = 473
     uSeconds. More...
     
    const uint16_t kMetzOneSpace = 1640
     uSeconds. More...
     
    const uint16_t kMetzZeroSpace = 940
     uSeconds. More...
     
    const uint16_t kMetzFreq = 38000
     Hz. More...
     
    const uint8_t kMetzAddressBits = 3
     
    const uint8_t kMetzCommandBits = 6
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMetzAddressBits

    - -
    -
    - - - - -
    const uint8_t kMetzAddressBits = 3
    -
    - -
    -
    - -

    ◆ kMetzBitMark

    - -
    -
    - - - - -
    const uint16_t kMetzBitMark = 473
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMetzCommandBits

    - -
    -
    - - - - -
    const uint8_t kMetzCommandBits = 6
    -
    - -
    -
    - -

    ◆ kMetzFreq

    - -
    -
    - - - - -
    const uint16_t kMetzFreq = 38000
    -
    - -

    Hz.

    - -
    -
    - -

    ◆ kMetzHdrMark

    - -
    -
    - - - - -
    const uint16_t kMetzHdrMark = 880
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMetzHdrSpace

    - -
    -
    - - - - -
    const uint16_t kMetzHdrSpace = 2336
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMetzOneSpace

    - -
    -
    - - - - -
    const uint16_t kMetzOneSpace = 1640
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMetzZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMetzZeroSpace = 940
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8cpp.html deleted file mode 100644 index 6d7eb98f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8cpp.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Midea.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Midea.cpp File Reference
    -
    -
    - -

    Support for Midea protocols. Midea added by crankyoldgit & bwze. send: bwze/crankyoldgit, decode: crankyoldgit. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMideaTick = 80
     
    const uint16_t kMideaBitMarkTicks = 7
     
    const uint16_t kMideaBitMark = kMideaBitMarkTicks * kMideaTick
     
    const uint16_t kMideaOneSpaceTicks = 21
     
    const uint16_t kMideaOneSpace = kMideaOneSpaceTicks * kMideaTick
     
    const uint16_t kMideaZeroSpaceTicks = 7
     
    const uint16_t kMideaZeroSpace = kMideaZeroSpaceTicks * kMideaTick
     
    const uint16_t kMideaHdrMarkTicks = 56
     
    const uint16_t kMideaHdrMark = kMideaHdrMarkTicks * kMideaTick
     
    const uint16_t kMideaHdrSpaceTicks = 56
     
    const uint16_t kMideaHdrSpace = kMideaHdrSpaceTicks * kMideaTick
     
    const uint16_t kMideaMinGapTicks
     
    const uint16_t kMideaMinGap = kMideaMinGapTicks * kMideaTick
     
    const uint8_t kMideaTolerance = 30
     
    const uint16_t kMidea24MinGap = 13000
     uSecs More...
     
    -

    Detailed Description

    -

    Support for Midea protocols. Midea added by crankyoldgit & bwze. send: bwze/crankyoldgit, decode: crankyoldgit.

    -
    Note
    SwingV has the function of an Ion Filter on Danby A/C units.
    -
    See also
    https://docs.google.com/spreadsheets/d/1TZh4jWrx4h9zzpYUI9aYXMl1fYOiqu-xVuOOMqagxrs/edit?usp=sharing
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/pull/1213
    -

    Variable Documentation

    - -

    ◆ kMidea24MinGap

    - -
    -
    - - - - -
    const uint16_t kMidea24MinGap = 13000
    -
    - -

    uSecs

    - -
    -
    - -

    ◆ kMideaBitMark

    - -
    -
    - - - - -
    const uint16_t kMideaBitMark = kMideaBitMarkTicks * kMideaTick
    -
    - -
    -
    - -

    ◆ kMideaBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kMideaBitMarkTicks = 7
    -
    - -
    -
    - -

    ◆ kMideaHdrMark

    - -
    -
    - - - - -
    const uint16_t kMideaHdrMark = kMideaHdrMarkTicks * kMideaTick
    -
    - -
    -
    - -

    ◆ kMideaHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kMideaHdrMarkTicks = 56
    -
    - -
    -
    - -

    ◆ kMideaHdrSpace

    - -
    -
    - - - - -
    const uint16_t kMideaHdrSpace = kMideaHdrSpaceTicks * kMideaTick
    -
    - -
    -
    - -

    ◆ kMideaHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kMideaHdrSpaceTicks = 56
    -
    - -
    -
    - -

    ◆ kMideaMinGap

    - -
    -
    - - - - -
    const uint16_t kMideaMinGap = kMideaMinGapTicks * kMideaTick
    -
    - -
    -
    - -

    ◆ kMideaMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kMideaMinGapTicks
    -
    -
    - -

    ◆ kMideaOneSpace

    - -
    -
    - - - - -
    const uint16_t kMideaOneSpace = kMideaOneSpaceTicks * kMideaTick
    -
    - -
    -
    - -

    ◆ kMideaOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kMideaOneSpaceTicks = 21
    -
    - -
    -
    - -

    ◆ kMideaTick

    - -
    -
    - - - - -
    const uint16_t kMideaTick = 80
    -
    - -
    -
    - -

    ◆ kMideaTolerance

    - -
    -
    - - - - -
    const uint8_t kMideaTolerance = 30
    -
    - -
    -
    - -

    ◆ kMideaZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMideaZeroSpace = kMideaZeroSpaceTicks * kMideaTick
    -
    - -
    -
    - -

    ◆ kMideaZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kMideaZeroSpaceTicks = 7
    -
    - -
    -
    -
    -
    const uint16_t kMideaZeroSpaceTicks
    Definition: ir_Midea.cpp:27
    -
    const uint16_t kMideaBitMarkTicks
    Definition: ir_Midea.cpp:23
    -
    const uint16_t kMideaHdrMarkTicks
    Definition: ir_Midea.cpp:29
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h.html deleted file mode 100644 index 9a8f24801..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h.html +++ /dev/null @@ -1,588 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Midea.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Midea.h File Reference
    -
    -
    - -

    Support for Midea protocols. Midea added by crankyoldgit & bwze. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  MideaProtocol
     Native representation of a Midea A/C message. More...
     
    class  IRMideaAC
     Class for handling detailed Midea A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kMideaACMinTempF = 62
     Fahrenheit. More...
     
    const uint8_t kMideaACMaxTempF = 86
     Fahrenheit. More...
     
    const uint8_t kMideaACMinTempC = 17
     Celsius. More...
     
    const uint8_t kMideaACMaxTempC = 30
     Celsius. More...
     
    const uint8_t kMideaACMinSensorTempC = 0
     Celsius. More...
     
    const uint8_t kMideaACMaxSensorTempC = 37
     Celsius. More...
     
    const uint8_t kMideaACMinSensorTempF = 32
     Fahrenheit. More...
     
    const uint8_t kMideaACMaxSensorTempF = 99
     Fahrenheit (Guess only!) More...
     
    const uint8_t kMideaACSensorTempOnTimerOff = 0b1111111
     
    const uint8_t kMideaACTimerOff = 0b111111
     
    const uint8_t kMideaACCool = 0
     
    const uint8_t kMideaACDry = 1
     
    const uint8_t kMideaACAuto = 2
     
    const uint8_t kMideaACHeat = 3
     
    const uint8_t kMideaACFan = 4
     
    const uint8_t kMideaACFanAuto = 0
     
    const uint8_t kMideaACFanLow = 1
     
    const uint8_t kMideaACFanMed = 2
     
    const uint8_t kMideaACFanHigh = 3
     
    const uint64_t kMideaACToggleSwingV = 0xA202FFFFFF7E
     
    const uint64_t kMideaACSwingVStep = 0xA201FFFFFF7C
     
     kSwingVToggleStr = kIonStr
     
    const uint64_t kMideaACToggleEcono = 0xA202FFFFFF7E
     
    const uint64_t kMideaACToggleLight = 0xA208FFFFFF75
     
    const uint64_t kMideaACToggleTurbo = 0xA209FFFFFF74
     
    const uint8_t kMideaACTypeCommand = 0b001
     Message type. More...
     
    const uint8_t kMideaACTypeSpecial = 0b010
     Message type. More...
     
    const uint8_t kMideaACTypeFollow = 0b100
     Message type. More...
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMideaACAuto

    - -
    -
    - - - - -
    const uint8_t kMideaACAuto = 2
    -
    - -
    -
    - -

    ◆ kMideaACCool

    - -
    -
    - - - - -
    const uint8_t kMideaACCool = 0
    -
    - -
    -
    - -

    ◆ kMideaACDry

    - -
    -
    - - - - -
    const uint8_t kMideaACDry = 1
    -
    - -
    -
    - -

    ◆ kMideaACFan

    - -
    -
    - - - - -
    const uint8_t kMideaACFan = 4
    -
    - -
    -
    - -

    ◆ kMideaACFanAuto

    - -
    -
    - - - - -
    const uint8_t kMideaACFanAuto = 0
    -
    - -
    -
    - -

    ◆ kMideaACFanHigh

    - -
    -
    - - - - -
    const uint8_t kMideaACFanHigh = 3
    -
    - -
    -
    - -

    ◆ kMideaACFanLow

    - -
    -
    - - - - -
    const uint8_t kMideaACFanLow = 1
    -
    - -
    -
    - -

    ◆ kMideaACFanMed

    - -
    -
    - - - - -
    const uint8_t kMideaACFanMed = 2
    -
    - -
    -
    - -

    ◆ kMideaACHeat

    - -
    -
    - - - - -
    const uint8_t kMideaACHeat = 3
    -
    - -
    -
    - -

    ◆ kMideaACMaxSensorTempC

    - -
    -
    - - - - -
    const uint8_t kMideaACMaxSensorTempC = 37
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kMideaACMaxSensorTempF

    - -
    -
    - - - - -
    const uint8_t kMideaACMaxSensorTempF = 99
    -
    - -

    Fahrenheit (Guess only!)

    - -
    -
    - -

    ◆ kMideaACMaxTempC

    - -
    -
    - - - - -
    const uint8_t kMideaACMaxTempC = 30
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kMideaACMaxTempF

    - -
    -
    - - - - -
    const uint8_t kMideaACMaxTempF = 86
    -
    - -

    Fahrenheit.

    - -
    -
    - -

    ◆ kMideaACMinSensorTempC

    - -
    -
    - - - - -
    const uint8_t kMideaACMinSensorTempC = 0
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kMideaACMinSensorTempF

    - -
    -
    - - - - -
    const uint8_t kMideaACMinSensorTempF = 32
    -
    - -

    Fahrenheit.

    - -
    -
    - -

    ◆ kMideaACMinTempC

    - -
    -
    - - - - -
    const uint8_t kMideaACMinTempC = 17
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kMideaACMinTempF

    - -
    -
    - - - - -
    const uint8_t kMideaACMinTempF = 62
    -
    - -

    Fahrenheit.

    - -
    -
    - -

    ◆ kMideaACSensorTempOnTimerOff

    - -
    -
    - - - - -
    const uint8_t kMideaACSensorTempOnTimerOff = 0b1111111
    -
    - -
    -
    - -

    ◆ kMideaACSwingVStep

    - -
    -
    - - - - -
    const uint64_t kMideaACSwingVStep = 0xA201FFFFFF7C
    -
    - -
    -
    - -

    ◆ kMideaACTimerOff

    - -
    -
    - - - - -
    const uint8_t kMideaACTimerOff = 0b111111
    -
    - -
    -
    - -

    ◆ kMideaACToggleEcono

    - -
    -
    - - - - -
    const uint64_t kMideaACToggleEcono = 0xA202FFFFFF7E
    -
    - -
    -
    - -

    ◆ kMideaACToggleLight

    - -
    -
    - - - - -
    const uint64_t kMideaACToggleLight = 0xA208FFFFFF75
    -
    - -
    -
    - -

    ◆ kMideaACToggleSwingV

    - -
    -
    - - - - -
    const uint64_t kMideaACToggleSwingV = 0xA202FFFFFF7E
    -
    - -
    -
    - -

    ◆ kMideaACToggleTurbo

    - -
    -
    - - - - -
    const uint64_t kMideaACToggleTurbo = 0xA209FFFFFF74
    -
    - -
    -
    - -

    ◆ kMideaACTypeCommand

    - -
    -
    - - - - -
    const uint8_t kMideaACTypeCommand = 0b001
    -
    - -

    Message type.

    - -
    -
    - -

    ◆ kMideaACTypeFollow

    - -
    -
    - - - - -
    const uint8_t kMideaACTypeFollow = 0b100
    -
    - -

    Message type.

    - -
    -
    - -

    ◆ kMideaACTypeSpecial

    - -
    -
    - - - - -
    const uint8_t kMideaACTypeSpecial = 0b010
    -
    - -

    Message type.

    - -
    -
    - -

    ◆ kSwingVToggleStr

    - -
    -
    - - - - -
    kSwingVToggleStr = kIonStr
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h_source.html deleted file mode 100644 index f65763e50..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Midea_8h_source.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Midea.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Midea.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2017 David Conran
    -
    2 
    -
    8 
    -
    9 // Supports:
    -
    10 // Brand: Pioneer System, Model: RYBO12GMFILCAD A/C (12K BTU) (MIDEA)
    -
    11 // Brand: Pioneer System, Model: RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
    -
    12 // Brand: Pioneer System, Model: WS012GMFI22HLD A/C (12K BTU) (MIDEA)
    -
    13 // Brand: Pioneer System, Model: WS018GMFI22HLD A/C (12K BTU) (MIDEA)
    -
    14 // Brand: Pioneer System, Model: UB018GMFILCFHD A/C (12K BTU) (MIDEA)
    -
    15 // Brand: Pioneer System, Model: RG66B6(B)/BGEFU1 remote (MIDEA)
    -
    16 // Brand: Comfee, Model: MPD1-12CRN7 A/C (MIDEA)
    -
    17 // Brand: Kaysun, Model: Casual CF A/C (MIDEA)
    -
    18 // Brand: Keystone, Model: RG57H4(B)BGEF remote (MIDEA)
    -
    19 // Brand: MrCool, Model: RG57A6/BGEFU1 remote (MIDEA)
    -
    20 // Brand: Midea, Model: FS40-7AR Stand Fan (MIDEA24)
    -
    21 // Brand: Danby, Model: DAC080BGUWDB (MIDEA)
    -
    22 // Brand: Danby, Model: DAC100BGUWDB (MIDEA)
    -
    23 // Brand: Danby, Model: DAC120BGUWDB (MIDEA)
    -
    24 // Brand: Danby, Model: R09C/BCGE remote (MIDEA)
    -
    25 
    -
    26 #ifndef IR_MIDEA_H_
    -
    27 #define IR_MIDEA_H_
    -
    28 
    -
    29 #define __STDC_LIMIT_MACROS
    -
    30 #include <stdint.h>
    -
    31 #ifdef ARDUINO
    -
    32 #include <Arduino.h>
    -
    33 #endif
    -
    34 #include "IRremoteESP8266.h"
    -
    35 #include "IRsend.h"
    -
    36 #ifdef UNIT_TEST
    -
    37 #include "IRsend_test.h"
    -
    38 #endif
    -
    39 
    -
    44 //
    -
    45 // #define DANBY_DAC true
    -
    46 // #define KAYSUN_AC true
    -
    47 
    -
    52 
    - -
    55  uint64_t remote_state;
    -
    56  // only use 48bits
    -
    57  struct {
    -
    58  // Byte 0
    -
    59  uint8_t Sum;
    -
    60  // Byte 1 (value=0xFF when not in use.)
    -
    61  // This byte gets dual usage as Sensor Temp and On Timer
    -
    62  // Depending on "Type" below.
    -
    63  // When in "OnTimer", the nr of half hours is stored with mask 0b01111110
    -
    64  // i.e.
    -
    65  // uint8_t :1;
    -
    66  // uint8_t OnTimerHalfHours:6;
    -
    67  // uint8_t :1;
    -
    68  uint8_t SensorTemp:7;
    -
    69  uint8_t disableSensor:1;
    -
    70  // Byte 2 (value=0xFF when not in use.)
    -
    71  uint8_t :1; // 0b1
    -
    72  uint8_t OffTimer:6;
    -
    73  uint8_t BeepDisable:1;
    -
    74  // Byte 3
    -
    75  uint8_t Temp:5;
    -
    76  uint8_t useFahrenheit:1;
    -
    77  uint8_t :0;
    -
    78  // Byte 4
    -
    79  uint8_t Mode:3;
    -
    80  uint8_t Fan:2;
    -
    83  uint8_t :1;
    -
    84  uint8_t Sleep:1;
    -
    85  uint8_t Power:1;
    -
    86  // Byte 5
    -
    87  uint8_t Type:3;
    -
    88  uint8_t Header:5;
    -
    89  };
    -
    90 };
    -
    91 
    -
    92 // Constants
    -
    93 const uint8_t kMideaACMinTempF = 62;
    -
    94 const uint8_t kMideaACMaxTempF = 86;
    -
    95 const uint8_t kMideaACMinTempC = 17;
    -
    96 const uint8_t kMideaACMaxTempC = 30;
    -
    97 const uint8_t kMideaACMinSensorTempC = 0;
    -
    98 const uint8_t kMideaACMaxSensorTempC = 37;
    -
    99 const uint8_t kMideaACMinSensorTempF = 32;
    -
    100 const uint8_t kMideaACMaxSensorTempF = 99;
    -
    101 const uint8_t kMideaACSensorTempOnTimerOff = 0b1111111;
    -
    102 const uint8_t kMideaACTimerOff = 0b111111;
    -
    103 const uint8_t kMideaACCool = 0; // 0b000
    -
    104 const uint8_t kMideaACDry = 1; // 0b001
    -
    105 const uint8_t kMideaACAuto = 2; // 0b010
    -
    106 const uint8_t kMideaACHeat = 3; // 0b011
    -
    107 const uint8_t kMideaACFan = 4; // 0b100
    -
    108 const uint8_t kMideaACFanAuto = 0; // 0b00
    -
    109 const uint8_t kMideaACFanLow = 1; // 0b01
    -
    110 const uint8_t kMideaACFanMed = 2; // 0b10
    -
    111 const uint8_t kMideaACFanHigh = 3; // 0b11
    -
    112 #if KAYSUN_AC
    -
    113  // For Kaysun AC units, Toggle SwingV is 0xA202FFFFFF7E
    -
    114  const uint64_t kMideaACToggleSwingV = 0xA202FFFFFF7E;
    -
    115  const uint64_t kMideaACSwingVStep = 0xA201FFFFFF7C;
    -
    116 #else // KAYSUN_AC
    -
    117  const uint64_t kMideaACToggleSwingV = 0xA201FFFFFF7C;
    -
    118 #endif // KAYSUN_AC
    -
    119 #if DANBY_DAC
    -
    120  // For Danby DAC unit, the Ionizer toggle is the same as ToggleSwingV
    -
    121  // const uint64_t kMideaACToggleIonizer = 0xA201FFFFFF7C;
    - -
    123 #endif // DANBY_DAC
    -
    124 const uint64_t kMideaACToggleEcono = 0xA202FFFFFF7E;
    -
    125 const uint64_t kMideaACToggleLight = 0xA208FFFFFF75;
    -
    126 const uint64_t kMideaACToggleTurbo = 0xA209FFFFFF74;
    -
    127 const uint8_t kMideaACTypeCommand = 0b001;
    -
    128 const uint8_t kMideaACTypeSpecial = 0b010;
    -
    129 const uint8_t kMideaACTypeFollow = 0b100;
    -
    130 
    -
    131 // Legacy defines. (Deprecated)
    -
    132 #define MIDEA_AC_COOL kMideaACCool
    -
    133 #define MIDEA_AC_DRY kMideaACDry
    -
    134 #define MIDEA_AC_AUTO kMideaACAuto
    -
    135 #define MIDEA_AC_HEAT kMideaACHeat
    -
    136 #define MIDEA_AC_FAN kMideaACFan
    -
    137 #define MIDEA_AC_FAN_AUTO kMideaACFanAuto
    -
    138 #define MIDEA_AC_FAN_LOW kMideaACFanLow
    -
    139 #define MIDEA_AC_FAN_MED kMideaACFanMed
    -
    140 #define MIDEA_AC_FAN_HI kMideaACFanHigh
    -
    141 #define MIDEA_AC_POWER kMideaACPower
    -
    142 #define MIDEA_AC_SLEEP kMideaACSleep
    -
    143 #define MIDEA_AC_MIN_TEMP_F kMideaACMinTempF
    -
    144 #define MIDEA_AC_MAX_TEMP_F kMideaACMaxTempF
    -
    145 #define MIDEA_AC_MIN_TEMP_C kMideaACMinTempC
    -
    146 #define MIDEA_AC_MAX_TEMP_C kMideaACMaxTempC
    -
    147 
    -
    148 // Classes
    -
    151 class IRMideaAC {
    -
    152  public:
    -
    153  explicit IRMideaAC(const uint16_t pin, const bool inverted = false,
    -
    154  const bool use_modulation = true);
    -
    155  void stateReset(void);
    -
    156 #if SEND_MIDEA
    -
    157  void send(const uint16_t repeat = kMideaMinRepeat);
    -
    162  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    163 #endif // SEND_MIDEA
    -
    164  void begin(void);
    -
    165  void on(void);
    -
    166  void off(void);
    -
    167  void setPower(const bool on);
    -
    168  bool getPower(void) const;
    -
    169  bool getUseCelsius(void) const;
    -
    170  void setUseCelsius(const bool celsius);
    -
    171  void setTemp(const uint8_t temp, const bool useCelsius = false);
    -
    172  uint8_t getTemp(const bool useCelsius = false) const;
    -
    173  void setSensorTemp(const uint8_t temp, const bool useCelsius = false);
    -
    174  uint8_t getSensorTemp(const bool useCelsius = false) const;
    -
    175  void setEnableSensorTemp(const bool on);
    -
    176  bool getEnableSensorTemp(void) const;
    -
    177  void setFan(const uint8_t fan);
    -
    178  uint8_t getFan(void) const;
    -
    179  void setMode(const uint8_t mode);
    -
    180  uint8_t getMode(void) const;
    -
    181  void setRaw(const uint64_t newState);
    -
    182  uint64_t getRaw(void);
    -
    183  static bool validChecksum(const uint64_t state);
    -
    184  void setSleep(const bool on);
    -
    185  bool getSleep(void) const;
    -
    186  bool isSwingVToggle(void) const;
    -
    187  void setSwingVToggle(const bool on);
    -
    188  bool getSwingVToggle(void);
    -
    189  #if KAYSUN_AC
    -
    190  bool isSwingVStep(void) const;
    -
    191  void setSwingVStep(const bool on);
    -
    192  bool getSwingVStep(void);
    -
    193  #endif // KAYSUN_AC
    -
    194  bool isEconoToggle(void) const;
    -
    195  void setEconoToggle(const bool on);
    -
    196  bool getEconoToggle(void);
    -
    197  bool isTurboToggle(void) const;
    -
    198  void setTurboToggle(const bool on);
    -
    199  bool getTurboToggle(void);
    -
    200  bool isLightToggle(void) const;
    -
    201  void setLightToggle(const bool on);
    -
    202  bool getLightToggle(void);
    -
    203  uint8_t getType(void) const;
    -
    204  bool isOnTimerEnabled(void) const;
    -
    205  uint16_t getOnTimer(void) const;
    -
    206  void setOnTimer(const uint16_t mins);
    -
    207  bool isOffTimerEnabled(void) const;
    -
    208  uint16_t getOffTimer(void) const;
    -
    209  void setOffTimer(const uint16_t mins);
    -
    210  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    211  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    212  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    213  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    214  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
    -
    215  String toString(void);
    -
    216 #ifndef UNIT_TEST
    -
    217 
    -
    218  private:
    - -
    220 #else // UNIT_TEST
    -
    221  IRsendTest _irsend;
    -
    223 #endif // UNIT_TEST
    - - -
    227  #if KAYSUN_AC
    - -
    229  #endif // KAYSUN_AC
    - - - -
    233  void checksum(void);
    -
    234  static uint8_t calcChecksum(const uint64_t state);
    -
    235  void setType(const uint8_t type);
    -
    236 };
    -
    237 
    -
    238 #endif // IR_MIDEA_H_
    -
    -
    void setOnTimer(const uint16_t mins)
    Set the value of the On Timer.
    Definition: ir_Midea.cpp:481
    -
    uint8_t getType(void) const
    Get the message type setting of the A/C message.
    Definition: ir_Midea.cpp:443
    -
    uint8_t Sum
    Definition: ir_Midea.h:59
    -
    const uint8_t kMideaACMinTempF
    Fahrenheit.
    Definition: ir_Midea.h:93
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Midea.cpp:113
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Midea.cpp:556
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Midea.cpp:313
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Midea.cpp:153
    -
    void setUseCelsius(const bool celsius)
    Set the A/C unit to use Celsius natively.
    Definition: ir_Midea.cpp:178
    -
    const uint16_t kMideaMinRepeat
    Definition: IRremoteESP8266.h:1059
    -
    bool _EconoToggle
    Definition: ir_Midea.h:230
    -
    MideaProtocol _
    Definition: ir_Midea.h:225
    -
    void setTemp(const uint8_t temp, const bool useCelsius=false)
    Set the temperature.
    Definition: ir_Midea.cpp:189
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Midea.cpp:166
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Midea.h:162
    -
    bool isOffTimerEnabled(void) const
    Is the OffTimer enabled?
    Definition: ir_Midea.cpp:492
    -
    bool _TurboToggle
    Definition: ir_Midea.h:231
    -
    uint8_t Type
    Normal, Special, or FollowMe message type.
    Definition: ir_Midea.h:87
    -
    const uint8_t kMideaACMaxSensorTempF
    Fahrenheit (Guess only!)
    Definition: ir_Midea.h:100
    -
    const uint8_t kMideaACTypeFollow
    Message type.
    Definition: ir_Midea.h:129
    -
    void setEconoToggle(const bool on)
    Set the A/C to toggle the Econo (energy saver) mode for the next send.
    Definition: ir_Midea.cpp:364
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t Header
    Typically 0b10100.
    Definition: ir_Midea.h:88
    -
    bool _SwingVToggle
    Definition: ir_Midea.h:226
    -
    const uint8_t kMideaACAuto
    Definition: ir_Midea.h:105
    -
    void checksum(void)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Midea.cpp:436
    -
    IRMideaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Midea.cpp:95
    -
    const uint8_t kMideaACFan
    Definition: ir_Midea.h:107
    -
    bool isOnTimerEnabled(void) const
    Is the OnTimer enabled?
    Definition: ir_Midea.cpp:463
    -
    void send(const uint16_t repeat=kMideaMinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Midea.cpp:118
    -
    uint8_t useFahrenheit
    Definition: ir_Midea.h:76
    -
    const uint8_t kMideaACTypeSpecial
    Message type.
    Definition: ir_Midea.h:128
    - -
    void setType(const uint8_t type)
    Set the message type setting of the A/C message.
    Definition: ir_Midea.cpp:447
    -
    void setTurboToggle(const bool on)
    Set the A/C to toggle the Turbo mode for the next send.
    Definition: ir_Midea.cpp:381
    -
    const uint8_t kMideaACMaxTempF
    Fahrenheit.
    Definition: ir_Midea.h:94
    -
    bool getLightToggle(void)
    Definition: ir_Midea.cpp:408
    -
    uint16_t getOffTimer(void) const
    Get the value of the OffTimer is currently set to.
    Definition: ir_Midea.cpp:498
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint8_t Power
    Definition: ir_Midea.h:85
    -
    const uint8_t kMideaACTimerOff
    Definition: ir_Midea.h:102
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t SensorTemp
    Degrees or OnTimer.
    Definition: ir_Midea.h:68
    -
    void setSwingVToggle(const bool on)
    Set the A/C to toggle the vertical swing toggle for the next send.
    Definition: ir_Midea.cpp:326
    -
    bool isSwingVToggle(void) const
    Is the current state a vertical swing toggle message?
    Definition: ir_Midea.cpp:331
    -
    bool isLightToggle(void) const
    Is the current state a Light (LED) toggle message?
    Definition: ir_Midea.cpp:402
    -
    bool getEnableSensorTemp(void) const
    Is the remote temperature sensor enabled?
    Definition: ir_Midea.cpp:275
    -
    const uint8_t kMideaACMaxSensorTempC
    Celsius.
    Definition: ir_Midea.h:98
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    kSwingVToggleStr
    Definition: ir_Midea.h:122
    -
    bool getSwingVToggle(void)
    Definition: ir_Midea.cpp:338
    -
    uint8_t Fan
    Definition: ir_Midea.h:80
    -
    uint8_t Mode
    Definition: ir_Midea.h:79
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Midea.cpp:285
    -
    const uint64_t kMideaACToggleTurbo
    Definition: ir_Midea.h:126
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Midea.cpp:156
    -
    bool getTurboToggle(void)
    Definition: ir_Midea.cpp:391
    - -
    void setOffTimer(const uint16_t mins)
    Set the value of the Off Timer.
    Definition: ir_Midea.cpp:505
    -
    const uint8_t kMideaACHeat
    Definition: ir_Midea.h:106
    -
    uint8_t OffTimer
    Nr of Half hours. Off is 0b111111.
    Definition: ir_Midea.h:72
    -
    const uint64_t kMideaACSwingVStep
    Definition: ir_Midea.h:115
    -
    bool isSwingVStep(void) const
    Is the current state a step vertical swing message?
    Definition: ir_Midea.cpp:350
    -
    void setLightToggle(const bool on)
    Set the A/C to toggle the Light (LED) mode for the next send.
    Definition: ir_Midea.cpp:398
    -
    bool getUseCelsius(void) const
    Is the device currently using Celsius or the Fahrenheit temp scale?
    Definition: ir_Midea.cpp:172
    -
    uint16_t getOnTimer(void) const
    Get the value of the OnTimer is currently set to.
    Definition: ir_Midea.cpp:470
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Midea.cpp:543
    -
    const uint8_t kMideaACFanAuto
    Definition: ir_Midea.h:108
    -
    const uint64_t kMideaACToggleSwingV
    Definition: ir_Midea.h:114
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Midea.h:219
    -
    uint64_t remote_state
    The state in native IR code form.
    Definition: ir_Midea.h:55
    -
    Class for handling detailed Midea A/C messages.
    Definition: ir_Midea.h:151
    -
    const uint8_t kMideaACMinSensorTempC
    Celsius.
    Definition: ir_Midea.h:97
    -
    void setRaw(const uint64_t newState)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Midea.cpp:150
    -
    uint8_t getSensorTemp(const bool useCelsius=false) const
    Get the current Sensor temperature setting.
    Definition: ir_Midea.cpp:248
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Midea.cpp:297
    -
    static uint8_t calcChecksum(const uint64_t state)
    Calculate the checksum for a given state.
    Definition: ir_Midea.cpp:416
    -
    const PROGMEM char * kIonStr
    "Ion"
    Definition: IRtext.cpp:55
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Midea.cpp:319
    -
    const uint8_t kMideaACSensorTempOnTimerOff
    Definition: ir_Midea.h:101
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Midea.cpp:291
    -
    const uint64_t kMideaACToggleEcono
    Definition: ir_Midea.h:124
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Midea.cpp:529
    -
    uint8_t Sleep
    Definition: ir_Midea.h:84
    -
    const uint8_t kMideaACFanMed
    Definition: ir_Midea.h:110
    -
    uint8_t disableSensor
    Definition: ir_Midea.h:69
    -
    uint64_t getRaw(void)
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Midea.cpp:143
    -
    const uint8_t kMideaACMinTempC
    Celsius.
    Definition: ir_Midea.h:95
    -
    void setSwingVStep(const bool on)
    Set the A/C to step the vertical swing for the next send.
    Definition: ir_Midea.cpp:346
    -
    bool getSwingVStep(void)
    Definition: ir_Midea.cpp:356
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Midea.cpp:516
    -
    const uint64_t kMideaACToggleLight
    Definition: ir_Midea.h:125
    -
    const uint8_t kMideaACFanHigh
    Definition: ir_Midea.h:111
    -
    bool getEconoToggle(void)
    Definition: ir_Midea.cpp:374
    -
    const uint8_t kMideaACMaxTempC
    Celsius.
    Definition: ir_Midea.h:96
    -
    void setEnableSensorTemp(const bool on)
    Enable the remote's Sensor temperature.
    Definition: ir_Midea.cpp:262
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Midea.cpp:568
    -
    void setSensorTemp(const uint8_t temp, const bool useCelsius=false)
    Set the Sensor temperature.
    Definition: ir_Midea.cpp:225
    -
    const uint8_t kMideaACDry
    Definition: ir_Midea.h:104
    -
    bool isTurboToggle(void) const
    Is the current state a Turbo toggle message?
    Definition: ir_Midea.cpp:385
    -
    String toString(void)
    Convert the current internal state into a human readable string.
    Definition: ir_Midea.cpp:605
    -
    static bool validChecksum(const uint64_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_Midea.cpp:431
    -
    const uint8_t kMideaACMinSensorTempF
    Fahrenheit.
    Definition: ir_Midea.h:99
    -
    bool _LightToggle
    Definition: ir_Midea.h:232
    -
    const uint8_t kMideaACCool
    Definition: ir_Midea.h:103
    -
    Native representation of a Midea A/C message.
    Definition: ir_Midea.h:54
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Midea.cpp:160
    -
    uint8_t BeepDisable
    0 = no beep in follow me messages, 1 = beep.
    Definition: ir_Midea.h:73
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Midea.cpp:100
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kMideaACFanLow
    Definition: ir_Midea.h:109
    -
    bool _SwingVStep
    Definition: ir_Midea.h:228
    -
    uint8_t getTemp(const bool useCelsius=false) const
    Get the current temperature setting.
    Definition: ir_Midea.cpp:210
    -
    uint8_t Temp
    Definition: ir_Midea.h:75
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Midea.cpp:279
    -
    const uint8_t kMideaACTypeCommand
    Message type.
    Definition: ir_Midea.h:127
    -
    bool isEconoToggle(void) const
    Is the current state an Econo (energy saver) toggle message?
    Definition: ir_Midea.cpp:368
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MilesTag2_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MilesTag2_8cpp.html deleted file mode 100644 index 12b6889c5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MilesTag2_8cpp.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_MilesTag2.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_MilesTag2.cpp File Reference
    -
    -
    - -

    Support for the MilesTag2 IR protocol for LaserTag gaming. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMilesTag2ShotMask = 1 << (kMilesTag2ShotBits - 1)
     
    const uint32_t kMilesTag2MsgMask = 1 << (kMilesTag2MsgBits - 1)
     
    const uint8_t kMilesTag2MsgTerminator = 0xE8
     
    const uint16_t kMilesTag2HdrMark = 2400
     
    const uint16_t kMilesTag2Space = 600
     uSeconds. More...
     
    const uint16_t kMilesTag2OneMark = 1200
     uSeconds. More...
     
    const uint16_t kMilesTag2ZeroMark = 600
     uSeconds. More...
     
    const uint16_t kMilesTag2RptLength = 32000
     uSeconds. More...
     
    const uint16_t kMilesTag2StdFreq = 38000
     uSeconds. More...
     
    const uint16_t kMilesTag2StdDuty = 25
     Hz. More...
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMilesTag2HdrMark

    - -
    -
    - - - - -
    const uint16_t kMilesTag2HdrMark = 2400
    -
    - -
    -
    - -

    ◆ kMilesTag2MsgMask

    - -
    -
    - - - - -
    const uint32_t kMilesTag2MsgMask = 1 << (kMilesTag2MsgBits - 1)
    -
    - -
    -
    - -

    ◆ kMilesTag2MsgTerminator

    - -
    -
    - - - - -
    const uint8_t kMilesTag2MsgTerminator = 0xE8
    -
    - -
    -
    - -

    ◆ kMilesTag2OneMark

    - -
    -
    - - - - -
    const uint16_t kMilesTag2OneMark = 1200
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMilesTag2RptLength

    - -
    -
    - - - - -
    const uint16_t kMilesTag2RptLength = 32000
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMilesTag2ShotMask

    - -
    -
    - - - - -
    const uint16_t kMilesTag2ShotMask = 1 << (kMilesTag2ShotBits - 1)
    -
    - -
    -
    - -

    ◆ kMilesTag2Space

    - -
    -
    - - - - -
    const uint16_t kMilesTag2Space = 600
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMilesTag2StdDuty

    - -
    -
    - - - - -
    const uint16_t kMilesTag2StdDuty = 25
    -
    - -

    Hz.

    - -
    -
    - -

    ◆ kMilesTag2StdFreq

    - -
    -
    - - - - -
    const uint16_t kMilesTag2StdFreq = 38000
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kMilesTag2ZeroMark

    - -
    -
    - - - - -
    const uint16_t kMilesTag2ZeroMark = 600
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mirage_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mirage_8cpp.html deleted file mode 100644 index 2a7beb6b7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mirage_8cpp.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Mirage.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Mirage.cpp File Reference
    -
    -
    - -

    Support for Mirage protocol. -More...

    - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMirageHdrMark = 8360
     uSeconds More...
     
    const uint16_t kMirageBitMark = 554
     uSeconds More...
     
    const uint16_t kMirageHdrSpace = 4248
     uSeconds More...
     
    const uint16_t kMirageOneSpace = 1592
     uSeconds More...
     
    const uint16_t kMirageZeroSpace = 545
     uSeconds More...
     
    const uint32_t kMirageGap = kDefaultMessageGap
     uSeconds (just a guess) More...
     
    const uint16_t kMirageFreq = 38000
     Hz. (Just a guess) More...
     
    -

    Detailed Description

    -

    Support for Mirage protocol.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1289
    -

    Variable Documentation

    - -

    ◆ kMirageBitMark

    - -
    -
    - - - - -
    const uint16_t kMirageBitMark = 554
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kMirageFreq

    - -
    -
    - - - - -
    const uint16_t kMirageFreq = 38000
    -
    - -

    Hz. (Just a guess)

    - -
    -
    - -

    ◆ kMirageGap

    - -
    -
    - - - - -
    const uint32_t kMirageGap = kDefaultMessageGap
    -
    - -

    uSeconds (just a guess)

    - -
    -
    - -

    ◆ kMirageHdrMark

    - -
    -
    - - - - -
    const uint16_t kMirageHdrMark = 8360
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kMirageHdrSpace

    - -
    -
    - - - - -
    const uint16_t kMirageHdrSpace = 4248
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kMirageOneSpace

    - -
    -
    - - - - -
    const uint16_t kMirageOneSpace = 1592
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kMirageZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMirageZeroSpace = 545
    -
    - -

    uSeconds

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html deleted file mode 100644 index 8c6af97fa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8cpp.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_MitsubishiHeavy.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_MitsubishiHeavy.cpp File Reference
    -
    -
    - -

    Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMitsubishiHeavyHdrMark = 3140
     
    const uint16_t kMitsubishiHeavyHdrSpace = 1630
     
    const uint16_t kMitsubishiHeavyBitMark = 370
     
    const uint16_t kMitsubishiHeavyOneSpace = 420
     
    const uint16_t kMitsubishiHeavyZeroSpace = 1220
     
    const uint32_t kMitsubishiHeavyGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.

    -
    Note
    This code was heavily influenced by ToniA's great work & code, but it has been written from scratch. Nothing was copied other than constants and message analysis.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/660
    -
    -https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp
    -
    -https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp
    -

    Variable Documentation

    - -

    ◆ kMitsubishiHeavyBitMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishiHeavyBitMark = 370
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyGap

    - -
    -
    - - - - -
    const uint32_t kMitsubishiHeavyGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyHdrMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishiHeavyHdrMark = 3140
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyHdrSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiHeavyHdrSpace = 1630
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyOneSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiHeavyOneSpace = 420
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiHeavyZeroSpace = 1220
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h.html deleted file mode 100644 index 17fdcef4a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h.html +++ /dev/null @@ -1,1048 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_MitsubishiHeavy.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_MitsubishiHeavy.h File Reference
    -
    -
    - -

    Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - -

    -Classes

    union  Mitsubishi152Protocol
     Native representation of a Mitsubishi Heavy 152-bit A/C message. More...
     
    union  Mitsubishi88Protocol
     Native representation of a Mitsubishi Heavy 88-bit A/C message. More...
     
    class  IRMitsubishiHeavy152Ac
     Class for handling detailed Mitsubishi Heavy 152-bit A/C messages. More...
     
    class  IRMitsubishiHeavy88Ac
     Class for handling detailed Mitsubishi Heavy 88-bit A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kMitsubishiHeavySigLength = 5
     
    const uint8_t kMitsubishiHeavyZmsSig [kMitsubishiHeavySigLength]
     
    const uint8_t kMitsubishiHeavyAuto = 0
     
    const uint8_t kMitsubishiHeavyCool = 1
     
    const uint8_t kMitsubishiHeavyDry = 2
     
    const uint8_t kMitsubishiHeavyFan = 3
     
    const uint8_t kMitsubishiHeavyHeat = 4
     
    const uint8_t kMitsubishiHeavyMinTemp = 17
     
    const uint8_t kMitsubishiHeavyMaxTemp = 31
     
    const uint8_t kMitsubishiHeavy152FanAuto = 0x0
     
    const uint8_t kMitsubishiHeavy152FanLow = 0x1
     
    const uint8_t kMitsubishiHeavy152FanMed = 0x2
     
    const uint8_t kMitsubishiHeavy152FanHigh = 0x3
     
    const uint8_t kMitsubishiHeavy152FanMax = 0x4
     
    const uint8_t kMitsubishiHeavy152FanEcono = 0x6
     
    const uint8_t kMitsubishiHeavy152FanTurbo = 0x8
     
    const uint8_t kMitsubishiHeavy152SwingVAuto = 0
     
    const uint8_t kMitsubishiHeavy152SwingVHighest = 1
     
    const uint8_t kMitsubishiHeavy152SwingVHigh = 2
     
    const uint8_t kMitsubishiHeavy152SwingVMiddle = 3
     
    const uint8_t kMitsubishiHeavy152SwingVLow = 4
     
    const uint8_t kMitsubishiHeavy152SwingVLowest = 5
     
    const uint8_t kMitsubishiHeavy152SwingVOff = 6
     
    const uint8_t kMitsubishiHeavy152SwingHAuto = 0
     
    const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1
     
    const uint8_t kMitsubishiHeavy152SwingHLeft = 2
     
    const uint8_t kMitsubishiHeavy152SwingHMiddle = 3
     
    const uint8_t kMitsubishiHeavy152SwingHRight = 4
     
    const uint8_t kMitsubishiHeavy152SwingHRightMax = 5
     
    const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6
     
    const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7
     
    const uint8_t kMitsubishiHeavy152SwingHOff = 8
     
    const uint8_t kMitsubishiHeavyZjsSig [kMitsubishiHeavySigLength]
     
    const uint8_t kMitsubishiHeavy88SwingHSize = 2
     
    const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000
     
    const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000
     
    const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001
     
    const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101
     
    const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001
     
    const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101
     
    const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010
     
    const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010
     
    const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110
     
    const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110
     
    const uint8_t kMitsubishiHeavy88FanAuto = 0
     
    const uint8_t kMitsubishiHeavy88FanLow = 2
     
    const uint8_t kMitsubishiHeavy88FanMed = 3
     
    const uint8_t kMitsubishiHeavy88FanHigh = 4
     
    const uint8_t kMitsubishiHeavy88FanTurbo = 6
     
    const uint8_t kMitsubishiHeavy88FanEcono = 7
     
    const uint8_t kMitsubishiHeavy88SwingVByte5Size = 1
     
    const uint8_t kMitsubishiHeavy88SwingVOff = 0b000
     
    const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100
     
    const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110
     
    const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001
     
    const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011
     
    const uint8_t kMitsubishiHeavy88SwingVLow = 0b101
     
    const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111
     
    -

    Detailed Description

    -

    Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR remote control units.

    -
    Note
    This code was heavily influenced by ToniA's great work & code, but it has been written from scratch. Nothing was copied other than constants and message analysis.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/660
    -
    -https://github.com/ToniA/Raw-IR-decoder-for-Arduino/blob/master/MitsubishiHeavy.cpp
    -
    -https://github.com/ToniA/arduino-heatpumpir/blob/master/MitsubishiHeavyHeatpumpIR.cpp
    -

    Variable Documentation

    - -

    ◆ kMitsubishiHeavy152FanAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanAuto = 0x0
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152FanEcono

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanEcono = 0x6
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152FanHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanHigh = 0x3
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152FanLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanLow = 0x1
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152FanMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanMax = 0x4
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152FanMed

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanMed = 0x2
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152FanTurbo

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152FanTurbo = 0x8
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHAuto = 0
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHLeft

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHLeft = 2
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHLeftMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHLeftRight

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHMiddle = 3
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHOff

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHOff = 8
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHRight

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHRight = 4
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHRightLeft

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingHRightMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingHRightMax = 5
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVAuto = 0
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVHigh = 2
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVHighest

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVHighest = 1
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVLow = 4
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVLowest

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVLowest = 5
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVMiddle = 3
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy152SwingVOff

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy152SwingVOff = 6
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88FanAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88FanAuto = 0
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88FanEcono

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88FanEcono = 7
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88FanHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88FanHigh = 4
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88FanLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88FanLow = 2
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88FanMed

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88FanMed = 3
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88FanTurbo

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88FanTurbo = 6
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingH3D

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHLeft

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHLeftMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHLeftRight

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHOff

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHRight

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHRightLeft

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHRightMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingHSize

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingHSize = 2
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVByte5Size

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVByte5Size = 1
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVHighest

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVLow = 0b101
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVLowest

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavy88SwingVOff

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavy88SwingVOff = 0b000
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyAuto = 0
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyCool

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyCool = 1
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyDry

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyDry = 2
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyFan

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyFan = 3
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyHeat

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyHeat = 4
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyMaxTemp

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyMaxTemp = 31
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyMinTemp

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyMinTemp = 17
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavySigLength

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavySigLength = 5
    -
    - -
    -
    - -

    ◆ kMitsubishiHeavyZjsSig

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyZjsSig[kMitsubishiHeavySigLength]
    -
    -Initial value:
    = {
    -
    0xAD, 0x51, 0x3C, 0xD9, 0x26}
    -
    -
    -
    - -

    ◆ kMitsubishiHeavyZmsSig

    - -
    -
    - - - - -
    const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength]
    -
    -Initial value:
    = {
    -
    0xAD, 0x51, 0x3C, 0xE5, 0x1A}
    -
    -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html deleted file mode 100644 index 92f3fb664..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__MitsubishiHeavy_8h_source.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_MitsubishiHeavy.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_MitsubishiHeavy.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 David Conran
    -
    2 
    -
    12 
    -
    13 // Supports:
    -
    14 // Brand: Mitsubishi Heavy Industries, Model: RLA502A700B remote (152 bit)
    -
    15 // Brand: Mitsubishi Heavy Industries, Model: SRKxxZM-S A/C (152 bit)
    -
    16 // Brand: Mitsubishi Heavy Industries, Model: SRKxxZMXA-S A/C (152 bit)
    -
    17 // Brand: Mitsubishi Heavy Industries, Model: RKX502A001C remote (88 bit)
    -
    18 // Brand: Mitsubishi Heavy Industries, Model: SRKxxZJ-S A/C (88 bit)
    -
    19 
    -
    20 #ifndef IR_MITSUBISHIHEAVY_H_
    -
    21 #define IR_MITSUBISHIHEAVY_H_
    -
    22 
    -
    23 #ifndef UNIT_TEST
    -
    24 #include <Arduino.h>
    -
    25 #endif
    -
    26 #include "IRremoteESP8266.h"
    -
    27 #include "IRsend.h"
    -
    28 #ifdef UNIT_TEST
    -
    29 #include "IRsend_test.h"
    -
    30 #endif
    -
    31 
    - - -
    35  struct {
    -
    36  // Byte 0~4
    -
    37  uint8_t Sig[5];
    -
    38  // Byte 5
    -
    39  uint8_t Mode :3;
    -
    40  uint8_t Power :1;
    -
    41  uint8_t :1;
    -
    42  uint8_t Clean :1;
    -
    43  uint8_t Filter:1;
    -
    44  uint8_t :1;
    -
    45  // Byte 6
    -
    46  uint8_t :8;
    -
    47  // Byte 7
    -
    48  uint8_t Temp :4;
    -
    49  uint8_t :4;
    -
    50  // Byte 8
    -
    51  uint8_t :8;
    -
    52  // Byte 9
    -
    53  uint8_t Fan :4;
    -
    54  uint8_t :4;
    -
    55  // Byte 10
    -
    56  uint8_t :8;
    -
    57  // Byte 11
    -
    58  uint8_t :1;
    -
    59  uint8_t Three :1;
    -
    60  uint8_t :2;
    -
    61  uint8_t D :1; // binding with "Three"
    -
    62  uint8_t SwingV :3;
    -
    63  // Byte 12
    -
    64  uint8_t :8;
    -
    65  // Byte 13
    -
    66  uint8_t SwingH :4;
    -
    67  uint8_t :4;
    -
    68  // Byte 14
    -
    69  uint8_t :8;
    -
    70  // Byte 15
    -
    71  uint8_t :6;
    -
    72  uint8_t Night :1;
    -
    73  uint8_t Silent :1;
    -
    74  };
    -
    75 };
    -
    76 
    -
    77 // Constants.
    -
    78 const uint8_t kMitsubishiHeavySigLength = 5;
    -
    79 
    -
    80 // ZMS (152 bit)
    - -
    82  0xAD, 0x51, 0x3C, 0xE5, 0x1A};
    -
    83 
    -
    84 const uint8_t kMitsubishiHeavyAuto = 0; // 0b000
    -
    85 const uint8_t kMitsubishiHeavyCool = 1; // 0b001
    -
    86 const uint8_t kMitsubishiHeavyDry = 2; // 0b010
    -
    87 const uint8_t kMitsubishiHeavyFan = 3; // 0b011
    -
    88 const uint8_t kMitsubishiHeavyHeat = 4; // 0b100
    -
    89 
    -
    90 const uint8_t kMitsubishiHeavyMinTemp = 17; // 17C
    -
    91 const uint8_t kMitsubishiHeavyMaxTemp = 31; // 31C
    -
    92 
    -
    93 const uint8_t kMitsubishiHeavy152FanAuto = 0x0; // 0b0000
    -
    94 const uint8_t kMitsubishiHeavy152FanLow = 0x1; // 0b0001
    -
    95 const uint8_t kMitsubishiHeavy152FanMed = 0x2; // 0b0010
    -
    96 const uint8_t kMitsubishiHeavy152FanHigh = 0x3; // 0b0011
    -
    97 const uint8_t kMitsubishiHeavy152FanMax = 0x4; // 0b0100
    -
    98 const uint8_t kMitsubishiHeavy152FanEcono = 0x6; // 0b0110
    -
    99 const uint8_t kMitsubishiHeavy152FanTurbo = 0x8; // 0b1000
    -
    100 
    -
    101 const uint8_t kMitsubishiHeavy152SwingVAuto = 0; // 0b000
    -
    102 const uint8_t kMitsubishiHeavy152SwingVHighest = 1; // 0b001
    -
    103 const uint8_t kMitsubishiHeavy152SwingVHigh = 2; // 0b010
    -
    104 const uint8_t kMitsubishiHeavy152SwingVMiddle = 3; // 0b011
    -
    105 const uint8_t kMitsubishiHeavy152SwingVLow = 4; // 0b100
    -
    106 const uint8_t kMitsubishiHeavy152SwingVLowest = 5; // 0b101
    -
    107 const uint8_t kMitsubishiHeavy152SwingVOff = 6; // 0b110
    -
    108 
    -
    109 const uint8_t kMitsubishiHeavy152SwingHAuto = 0; // 0b0000
    -
    110 const uint8_t kMitsubishiHeavy152SwingHLeftMax = 1; // 0b0001
    -
    111 const uint8_t kMitsubishiHeavy152SwingHLeft = 2; // 0b0010
    -
    112 const uint8_t kMitsubishiHeavy152SwingHMiddle = 3; // 0b0011
    -
    113 const uint8_t kMitsubishiHeavy152SwingHRight = 4; // 0b0100
    -
    114 const uint8_t kMitsubishiHeavy152SwingHRightMax = 5; // 0b0101
    -
    115 const uint8_t kMitsubishiHeavy152SwingHRightLeft = 6; // 0b0110
    -
    116 const uint8_t kMitsubishiHeavy152SwingHLeftRight = 7; // 0b0111
    -
    117 const uint8_t kMitsubishiHeavy152SwingHOff = 8; // 0b1000
    -
    118 
    - - -
    122  struct {
    -
    123  // Byte 0~4
    -
    124  uint8_t Sig[5];
    -
    125  // Byte 5
    -
    126  uint8_t :1;
    -
    127  uint8_t SwingV5 :1;
    -
    128  uint8_t SwingH1 :2;
    -
    129  uint8_t :1;
    -
    130  uint8_t Clean :1;
    -
    131  uint8_t SwingH2 :2;
    -
    132  // Byte 6
    -
    133  uint8_t :8;
    -
    134  // Byte 7
    -
    135  uint8_t :3;
    -
    136  uint8_t SwingV7 :2;
    -
    137  uint8_t Fan :3;
    -
    138  // Byte 8
    -
    139  uint8_t :8;
    -
    140  // Byte 9
    -
    141  uint8_t Mode :3;
    -
    142  uint8_t Power :1;
    -
    143  uint8_t Temp :4;
    -
    144  };
    -
    145 };
    -
    146 
    -
    147 // ZJS (88 bit)
    - -
    149  0xAD, 0x51, 0x3C, 0xD9, 0x26};
    -
    150 
    -
    151 const uint8_t kMitsubishiHeavy88SwingHSize = 2; // Bits (per offset)
    -
    152 const uint8_t kMitsubishiHeavy88SwingHOff = 0b0000;
    -
    153 const uint8_t kMitsubishiHeavy88SwingHAuto = 0b1000;
    -
    154 const uint8_t kMitsubishiHeavy88SwingHLeftMax = 0b0001;
    -
    155 const uint8_t kMitsubishiHeavy88SwingHLeft = 0b0101;
    -
    156 const uint8_t kMitsubishiHeavy88SwingHMiddle = 0b1001;
    -
    157 const uint8_t kMitsubishiHeavy88SwingHRight = 0b1101;
    -
    158 const uint8_t kMitsubishiHeavy88SwingHRightMax = 0b0010;
    -
    159 const uint8_t kMitsubishiHeavy88SwingHRightLeft = 0b1010;
    -
    160 const uint8_t kMitsubishiHeavy88SwingHLeftRight = 0b0110;
    -
    161 const uint8_t kMitsubishiHeavy88SwingH3D = 0b1110;
    -
    162 
    -
    163 const uint8_t kMitsubishiHeavy88FanAuto = 0; // 0b000
    -
    164 const uint8_t kMitsubishiHeavy88FanLow = 2; // 0b010
    -
    165 const uint8_t kMitsubishiHeavy88FanMed = 3; // 0b011
    -
    166 const uint8_t kMitsubishiHeavy88FanHigh = 4; // 0b100
    -
    167 const uint8_t kMitsubishiHeavy88FanTurbo = 6; // 0b110
    -
    168 const uint8_t kMitsubishiHeavy88FanEcono = 7; // 0b111
    - -
    170 
    -
    171  // Mask 0b111
    -
    172 const uint8_t kMitsubishiHeavy88SwingVOff = 0b000; // 0
    -
    173 const uint8_t kMitsubishiHeavy88SwingVAuto = 0b100; // 4
    -
    174 const uint8_t kMitsubishiHeavy88SwingVHighest = 0b110; // 6
    -
    175 const uint8_t kMitsubishiHeavy88SwingVHigh = 0b001; // 1
    -
    176 const uint8_t kMitsubishiHeavy88SwingVMiddle = 0b011; // 3
    -
    177 const uint8_t kMitsubishiHeavy88SwingVLow = 0b101; // 5
    -
    178 const uint8_t kMitsubishiHeavy88SwingVLowest = 0b111; // 7
    -
    179 
    -
    180 
    -
    181 // Classes
    -
    182 
    - -
    185  public:
    -
    186  explicit IRMitsubishiHeavy152Ac(const uint16_t pin,
    -
    187  const bool inverted = false,
    -
    188  const bool use_modulation = true);
    -
    189  void stateReset(void);
    -
    190 #if SEND_MITSUBISHIHEAVY
    -
    191  void send(const uint16_t repeat = kMitsubishiHeavy152MinRepeat);
    -
    196  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    197 #endif // SEND_MITSUBISHIHEAVY
    -
    198  void begin(void);
    -
    199  void on(void);
    -
    200  void off(void);
    -
    201 
    -
    202  void setPower(const bool on);
    -
    203  bool getPower(void) const;
    -
    204 
    -
    205  void setTemp(const uint8_t temp);
    -
    206  uint8_t getTemp(void) const;
    -
    207 
    -
    208  void setFan(const uint8_t fan);
    -
    209  uint8_t getFan(void) const;
    -
    210 
    -
    211  void setMode(const uint8_t mode);
    -
    212  uint8_t getMode(void) const;
    -
    213 
    -
    214  void setSwingVertical(const uint8_t pos);
    -
    215  uint8_t getSwingVertical(void) const;
    -
    216  void setSwingHorizontal(const uint8_t pos);
    -
    217  uint8_t getSwingHorizontal(void) const;
    -
    218 
    -
    219  void setNight(const bool on);
    -
    220  bool getNight(void) const;
    -
    221 
    -
    222  void set3D(const bool on);
    -
    223  bool get3D(void) const;
    -
    224 
    -
    225  void setSilent(const bool on);
    -
    226  bool getSilent(void) const;
    -
    227 
    -
    228  void setFilter(const bool on);
    -
    229  bool getFilter(void) const;
    -
    230 
    -
    231  void setClean(const bool on);
    -
    232  bool getClean(void) const;
    -
    233 
    -
    234  void setTurbo(const bool on);
    -
    235  bool getTurbo(void) const;
    -
    236 
    -
    237  void setEcono(const bool on);
    -
    238  bool getEcono(void) const;
    -
    239 
    -
    240  uint8_t* getRaw(void);
    -
    241  void setRaw(const uint8_t* data);
    -
    242 
    -
    243  static bool checkZmsSig(const uint8_t *state);
    -
    244  static bool validChecksum(
    -
    245  const uint8_t *state,
    -
    246  const uint16_t length = kMitsubishiHeavy152StateLength);
    -
    247  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    248  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    249  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    250  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    251  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    252  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    253  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    254  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
    -
    255  stdAc::state_t toCommon(void) const;
    -
    256  String toString(void) const;
    -
    257 #ifndef UNIT_TEST
    -
    258 
    -
    259  private:
    - -
    261 #else // UNIT_TEST
    -
    262  IRsendTest _irsend;
    -
    264 #endif // UNIT_TEST
    - -
    267  void checksum(void);
    -
    268 };
    -
    269 
    - -
    272  public:
    -
    273  explicit IRMitsubishiHeavy88Ac(const uint16_t pin,
    -
    274  const bool inverted = false,
    -
    275  const bool use_modulation = true);
    -
    276  void stateReset(void);
    -
    277 #if SEND_MITSUBISHIHEAVY
    -
    278  void send(const uint16_t repeat = kMitsubishiHeavy88MinRepeat);
    -
    283  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    284 #endif // SEND_MITSUBISHIHEAVY
    -
    285  void begin(void);
    -
    286  void on(void);
    -
    287  void off(void);
    -
    288 
    -
    289  void setPower(const bool on);
    -
    290  bool getPower(void) const;
    -
    291 
    -
    292  void setTemp(const uint8_t temp);
    -
    293  uint8_t getTemp(void) const;
    -
    294 
    -
    295  void setFan(const uint8_t fan);
    -
    296  uint8_t getFan(void) const;
    -
    297 
    -
    298  void setMode(const uint8_t mode);
    -
    299  uint8_t getMode(void) const;
    -
    300 
    -
    301  void setSwingVertical(const uint8_t pos);
    -
    302  uint8_t getSwingVertical(void) const;
    -
    303  void setSwingHorizontal(const uint8_t pos);
    -
    304  uint8_t getSwingHorizontal(void) const;
    -
    305 
    -
    306  void setTurbo(const bool on);
    -
    307  bool getTurbo(void) const;
    -
    308 
    -
    309  void setEcono(const bool on);
    -
    310  bool getEcono(void) const;
    -
    311 
    -
    312  void set3D(const bool on);
    -
    313  bool get3D(void) const;
    -
    314 
    -
    315  void setClean(const bool on);
    -
    316  bool getClean(void) const;
    -
    317 
    -
    318  uint8_t* getRaw(void);
    -
    319  void setRaw(const uint8_t* data);
    -
    320 
    -
    321  static bool checkZjsSig(const uint8_t *state);
    -
    322  static bool validChecksum(
    -
    323  const uint8_t *state,
    -
    324  const uint16_t length = kMitsubishiHeavy88StateLength);
    -
    325  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    326  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    327  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    328  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    329  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    330  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    331  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
    -
    332  stdAc::state_t toCommon(void) const;
    -
    333  String toString(void) const;
    -
    334 #ifndef UNIT_TEST
    -
    335 
    -
    336  private:
    - -
    338 #else // UNIT_TEST
    -
    339  IRsendTest _irsend;
    -
    341 #endif // UNIT_TEST
    - -
    344  void checksum(void);
    -
    345 };
    -
    346 #endif // IR_MITSUBISHIHEAVY_H_
    -
    -
    bool getClean(void) const
    Get the Clean mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:773
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_MitsubishiHeavy.cpp:632
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_MitsubishiHeavy.cpp:647
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_MitsubishiHeavy.cpp:601
    -
    const uint8_t kMitsubishiHeavy88SwingVByte5Size
    Definition: ir_MitsubishiHeavy.h:169
    -
    uint8_t Fan
    Definition: ir_MitsubishiHeavy.h:137
    -
    const uint16_t kMitsubishiHeavy152StateLength
    Definition: IRremoteESP8266.h:1081
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_MitsubishiHeavy.h:196
    -
    Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
    Definition: ir_MitsubishiHeavy.h:184
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_MitsubishiHeavy.cpp:578
    -
    void checksum(void)
    Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
    Definition: ir_MitsubishiHeavy.cpp:321
    -
    const uint8_t kMitsubishiHeavy152SwingVHigh
    Definition: ir_MitsubishiHeavy.h:103
    -
    uint8_t Mode
    Definition: ir_MitsubishiHeavy.h:39
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_MitsubishiHeavy.cpp:482
    -
    uint8_t Filter
    Definition: ir_MitsubishiHeavy.h:43
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a stdAc::swingh_t enum into it's native setting.
    Definition: ir_MitsubishiHeavy.cpp:385
    -
    const uint8_t kMitsubishiHeavy152SwingHRightLeft
    Definition: ir_MitsubishiHeavy.h:115
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_MitsubishiHeavy.cpp:342
    -
    uint8_t D
    Definition: ir_MitsubishiHeavy.h:61
    -
    bool getNight(void) const
    Get the Night (Sleep) mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:226
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_MitsubishiHeavy.cpp:858
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_MitsubishiHeavy.cpp:611
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_MitsubishiHeavy.cpp:125
    -
    void set3D(const bool on)
    Set the 3D mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:752
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    const uint8_t kMitsubishiHeavy152FanMed
    Definition: ir_MitsubishiHeavy.h:95
    -
    void setSwingHorizontal(const uint8_t pos)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:698
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_MitsubishiHeavy.cpp:146
    -
    uint8_t Clean
    Definition: ir_MitsubishiHeavy.h:130
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_MitsubishiHeavy.h:260
    -
    const uint8_t kMitsubishiHeavy152FanAuto
    Definition: ir_MitsubishiHeavy.h:93
    -
    IRMitsubishiHeavy152Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_MitsubishiHeavy.cpp:79
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t SwingH
    Definition: ir_MitsubishiHeavy.h:66
    -
    const uint8_t kMitsubishiHeavy152SwingVAuto
    Definition: ir_MitsubishiHeavy.h:101
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:653
    -
    const uint8_t kMitsubishiHeavy88FanTurbo
    Definition: ir_MitsubishiHeavy.h:167
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_MitsubishiHeavy.cpp:813
    -
    uint8_t Silent
    Definition: ir_MitsubishiHeavy.h:73
    -
    const uint8_t kMitsubishiHeavy88SwingHLeftMax
    Definition: ir_MitsubishiHeavy.h:154
    -
    const uint8_t kMitsubishiHeavy152SwingVHighest
    Definition: ir_MitsubishiHeavy.h:102
    -
    const uint8_t kMitsubishiHeavy88SwingH3D
    Definition: ir_MitsubishiHeavy.h:161
    -
    const uint8_t kMitsubishiHeavy88SwingHLeft
    Definition: ir_MitsubishiHeavy.h:155
    -
    Mitsubishi88Protocol _
    Definition: ir_MitsubishiHeavy.h:343
    -
    const uint8_t kMitsubishiHeavy152SwingVLow
    Definition: ir_MitsubishiHeavy.h:105
    -
    const uint8_t kMitsubishiHeavy152SwingHOff
    Definition: ir_MitsubishiHeavy.h:117
    -
    uint8_t getSwingHorizontal(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:214
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_MitsubishiHeavy.cpp:97
    - -
    const uint8_t kMitsubishiHeavy152SwingHLeftRight
    Definition: ir_MitsubishiHeavy.h:116
    -
    void checksum(void)
    Calculate the checksum for the current internal state of the remote. Note: Technically it has no chec...
    Definition: ir_MitsubishiHeavy.cpp:788
    -
    const uint8_t kMitsubishiHeavy88SwingHMiddle
    Definition: ir_MitsubishiHeavy.h:156
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_MitsubishiHeavy.cpp:413
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_MitsubishiHeavy.cpp:598
    -
    uint8_t Sig[5]
    Definition: ir_MitsubishiHeavy.h:37
    -
    const uint8_t kMitsubishiHeavy88SwingVAuto
    Definition: ir_MitsubishiHeavy.h:173
    -
    bool getClean(void) const
    Get the Clean mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:278
    -
    void setClean(const bool on)
    Set the Clean mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:767
    -
    void setSilent(const bool on)
    Set the Silent (Quiet) mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:247
    -
    bool getTurbo(void) const
    Get the Turbo mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:292
    -
    bool getTurbo(void) const
    Get the Turbo mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:732
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kMitsubishiHeavy88FanEcono
    Definition: ir_MitsubishiHeavy.h:168
    -
    void setSwingVertical(const uint8_t pos)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:675
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kMitsubishiHeavy88SwingHSize
    Definition: ir_MitsubishiHeavy.h:151
    -
    void setClean(const bool on)
    Set the Clean mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:271
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_MitsubishiHeavy.cpp:137
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_MitsubishiHeavy.cpp:118
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_MitsubishiHeavy.cpp:85
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_MitsubishiHeavy.cpp:828
    -
    void setNight(const bool on)
    Set the Night (Sleep) mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:220
    -
    uint8_t Night
    Definition: ir_MitsubishiHeavy.h:72
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_MitsubishiHeavy.h:337
    -
    const uint8_t kMitsubishiHeavySigLength
    Definition: ir_MitsubishiHeavy.h:78
    -
    uint8_t SwingV5
    Definition: ir_MitsubishiHeavy.h:127
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_MitsubishiHeavy.cpp:121
    -
    void setSwingVertical(const uint8_t pos)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:196
    -
    const uint8_t kMitsubishiHeavy88SwingHRightLeft
    Definition: ir_MitsubishiHeavy.h:159
    -
    const uint8_t kMitsubishiHeavy152SwingHRight
    Definition: ir_MitsubishiHeavy.h:113
    -
    const uint8_t kMitsubishiHeavyHeat
    Definition: ir_MitsubishiHeavy.h:88
    -
    void setTurbo(const bool on)
    Set the Turbo mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:724
    - -
    swingh_t
    Common A/C settings for Horizontal Swing.
    Definition: IRsend.h:83
    -
    const uint8_t kMitsubishiHeavy152SwingHLeftMax
    Definition: ir_MitsubishiHeavy.h:110
    -
    uint8_t SwingH1
    Definition: ir_MitsubishiHeavy.h:128
    -
    const uint8_t kMitsubishiHeavyZmsSig[kMitsubishiHeavySigLength]
    Definition: ir_MitsubishiHeavy.h:81
    -
    bool getEcono(void) const
    Get the Economical mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:306
    -
    bool get3D(void) const
    Get the 3D mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:241
    -
    const uint16_t kMitsubishiHeavy152MinRepeat
    Definition: IRremoteESP8266.h:1083
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_MitsubishiHeavy.h:283
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_MitsubishiHeavy.cpp:168
    -
    uint8_t Temp
    Definition: ir_MitsubishiHeavy.h:48
    -
    static bool checkZjsSig(const uint8_t *state)
    Verify the given state has a ZJ-S signature.
    Definition: ir_MitsubishiHeavy.cpp:780
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_MitsubishiHeavy.cpp:617
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_MitsubishiHeavy.cpp:131
    -
    IRMitsubishiHeavy88Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_MitsubishiHeavy.cpp:560
    -
    uint8_t Sig[5]
    Definition: ir_MitsubishiHeavy.h:124
    -
    const uint8_t kMitsubishiHeavyMaxTemp
    Definition: ir_MitsubishiHeavy.h:91
    -
    void setRaw(const uint8_t *data)
    Set the internal state from a valid code for this protocol.
    Definition: ir_MitsubishiHeavy.cpp:593
    -
    const uint16_t kMitsubishiHeavy88StateLength
    Definition: IRremoteESP8266.h:1078
    -
    const uint8_t kMitsubishiHeavy88SwingVMiddle
    Definition: ir_MitsubishiHeavy.h:176
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_MitsubishiHeavy.cpp:355
    -
    const uint8_t kMitsubishiHeavyZjsSig[kMitsubishiHeavySigLength]
    Definition: ir_MitsubishiHeavy.h:148
    -
    const uint8_t kMitsubishiHeavy152FanLow
    Definition: ir_MitsubishiHeavy.h:94
    -
    const uint8_t kMitsubishiHeavy88FanHigh
    Definition: ir_MitsubishiHeavy.h:166
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_MitsubishiHeavy.cpp:400
    -
    uint8_t Three
    Definition: ir_MitsubishiHeavy.h:59
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_MitsubishiHeavy.cpp:106
    -
    const uint8_t kMitsubishiHeavyMinTemp
    Definition: ir_MitsubishiHeavy.h:90
    -
    uint8_t Power
    Definition: ir_MitsubishiHeavy.h:40
    -
    const uint8_t kMitsubishiHeavyCool
    Definition: ir_MitsubishiHeavy.h:85
    -
    void setEcono(const bool on)
    Set the Economical mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:298
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_MitsubishiHeavy.cpp:586
    -
    const uint8_t kMitsubishiHeavy88FanLow
    Definition: ir_MitsubishiHeavy.h:164
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_MitsubishiHeavy.cpp:626
    -
    uint8_t raw[kMitsubishiHeavy88StateLength]
    State in code form.
    Definition: ir_MitsubishiHeavy.h:121
    -
    const uint8_t kMitsubishiHeavy88SwingVLow
    Definition: ir_MitsubishiHeavy.h:177
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:190
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:669
    -
    static bool checkZmsSig(const uint8_t *state)
    Verify the given state has a ZM-S signature.
    Definition: ir_MitsubishiHeavy.cpp:313
    -
    const uint8_t kMitsubishiHeavy152SwingVMiddle
    Definition: ir_MitsubishiHeavy.h:104
    -
    const uint8_t kMitsubishiHeavy88SwingHRight
    Definition: ir_MitsubishiHeavy.h:157
    -
    const uint8_t kMitsubishiHeavy88SwingVHighest
    Definition: ir_MitsubishiHeavy.h:174
    -
    uint8_t Mode
    Definition: ir_MitsubishiHeavy.h:141
    -
    uint8_t getSwingHorizontal(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:718
    -
    const uint8_t kMitsubishiHeavy88SwingVOff
    Definition: ir_MitsubishiHeavy.h:172
    -
    uint8_t getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:202
    -
    void setEcono(const bool on)
    Set the Economical mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:738
    -
    uint8_t SwingV7
    Definition: ir_MitsubishiHeavy.h:136
    -
    const uint8_t kMitsubishiHeavy88SwingVLowest
    Definition: ir_MitsubishiHeavy.h:178
    -
    const uint8_t kMitsubishiHeavy152SwingHAuto
    Definition: ir_MitsubishiHeavy.h:109
    -
    const uint8_t kMitsubishiHeavy152SwingHLeft
    Definition: ir_MitsubishiHeavy.h:111
    -
    Mitsubishi152Protocol _
    Definition: ir_MitsubishiHeavy.h:266
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_MitsubishiHeavy.cpp:152
    -
    uint8_t raw[kMitsubishiHeavy152StateLength]
    State in code form.
    Definition: ir_MitsubishiHeavy.h:34
    -
    uint8_t Fan
    Definition: ir_MitsubishiHeavy.h:53
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_MitsubishiHeavy.cpp:806
    -
    const uint8_t kMitsubishiHeavy88SwingHAuto
    Definition: ir_MitsubishiHeavy.h:153
    -
    const uint8_t kMitsubishiHeavyFan
    Definition: ir_MitsubishiHeavy.h:87
    -
    bool getFilter(void) const
    Get the Filter mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:265
    -
    const uint16_t kMitsubishiHeavy88MinRepeat
    Definition: IRremoteESP8266.h:1080
    -
    const uint8_t kMitsubishiHeavy88SwingHOff
    Definition: ir_MitsubishiHeavy.h:152
    -
    void setSwingHorizontal(const uint8_t pos)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:208
    -
    uint8_t SwingH2
    Definition: ir_MitsubishiHeavy.h:131
    -
    static bool validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy152StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_MitsubishiHeavy.cpp:331
    -
    const uint8_t kMitsubishiHeavy152SwingVOff
    Definition: ir_MitsubishiHeavy.h:107
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_MitsubishiHeavy.cpp:901
    -
    const uint8_t kMitsubishiHeavy152SwingVLowest
    Definition: ir_MitsubishiHeavy.h:106
    -
    Native representation of a Mitsubishi Heavy 88-bit A/C message.
    Definition: ir_MitsubishiHeavy.h:120
    -
    void setRaw(const uint8_t *data)
    Set the internal state from a valid code for this protocol.
    Definition: ir_MitsubishiHeavy.cpp:113
    -
    const uint8_t kMitsubishiHeavy88SwingHLeftRight
    Definition: ir_MitsubishiHeavy.h:160
    -
    const uint8_t kMitsubishiHeavy88FanAuto
    Definition: ir_MitsubishiHeavy.h:163
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:174
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_MitsubishiHeavy.cpp:427
    -
    bool get3D(void) const
    Get the 3D mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:761
    -
    uint8_t Power
    Definition: ir_MitsubishiHeavy.h:142
    -
    const uint8_t kMitsubishiHeavy88FanMed
    Definition: ir_MitsubishiHeavy.h:165
    -
    void setTurbo(const bool on)
    Set the Turbo mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:284
    -
    const uint8_t kMitsubishiHeavy88SwingHRightMax
    Definition: ir_MitsubishiHeavy.h:158
    -
    bool getSilent(void) const
    Get the Silent (Quiet) mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:253
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_MitsubishiHeavy.cpp:605
    -
    uint8_t Clean
    Definition: ir_MitsubishiHeavy.h:42
    -
    const uint8_t kMitsubishiHeavy152FanHigh
    Definition: ir_MitsubishiHeavy.h:96
    -
    void setFilter(const bool on)
    Set the Filter mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:259
    -
    static bool validChecksum(const uint8_t *state, const uint16_t length=kMitsubishiHeavy88StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_MitsubishiHeavy.cpp:798
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_MitsubishiHeavy.cpp:566
    -
    const uint8_t kMitsubishiHeavy152SwingHRightMax
    Definition: ir_MitsubishiHeavy.h:114
    -
    void set3D(const bool on)
    Set the 3D mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:232
    -
    const uint8_t kMitsubishiHeavy152SwingHMiddle
    Definition: ir_MitsubishiHeavy.h:112
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_MitsubishiHeavy.cpp:370
    -
    Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
    Definition: ir_MitsubishiHeavy.h:271
    -
    uint8_t getSwingVertical(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:692
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_MitsubishiHeavy.cpp:927
    -
    const uint8_t kMitsubishiHeavy152FanTurbo
    Definition: ir_MitsubishiHeavy.h:99
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_MitsubishiHeavy.cpp:442
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_MitsubishiHeavy.cpp:456
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a stdAc::swingh_t enum into it's native setting.
    Definition: ir_MitsubishiHeavy.cpp:843
    -
    const uint8_t kMitsubishiHeavyDry
    Definition: ir_MitsubishiHeavy.h:86
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_MitsubishiHeavy.cpp:872
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    Native representation of a Mitsubishi Heavy 152-bit A/C message.
    Definition: ir_MitsubishiHeavy.h:33
    -
    bool getEcono(void) const
    Get the Economical mode of the A/C.
    Definition: ir_MitsubishiHeavy.cpp:746
    -
    uint8_t Temp
    Definition: ir_MitsubishiHeavy.h:143
    -
    const uint8_t kMitsubishiHeavy88SwingVHigh
    Definition: ir_MitsubishiHeavy.h:175
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_MitsubishiHeavy.cpp:887
    -
    void send(const uint16_t repeat=kMitsubishiHeavy88MinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_MitsubishiHeavy.cpp:571
    -
    void send(const uint16_t repeat=kMitsubishiHeavy152MinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_MitsubishiHeavy.cpp:90
    -
    const uint8_t kMitsubishiHeavyAuto
    Definition: ir_MitsubishiHeavy.h:84
    -
    const uint8_t kMitsubishiHeavy152FanEcono
    Definition: ir_MitsubishiHeavy.h:98
    -
    uint8_t SwingV
    Definition: ir_MitsubishiHeavy.h:62
    -
    const uint8_t kMitsubishiHeavy152FanMax
    Definition: ir_MitsubishiHeavy.h:97
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8cpp.html deleted file mode 100644 index 797d371a7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8cpp.html +++ /dev/null @@ -1,726 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Mitsubishi.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Mitsubishi.cpp File Reference
    -
    -
    - -

    Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kMitsubishiTick = 30
     
    const uint16_t kMitsubishiBitMarkTicks = 10
     
    const uint16_t kMitsubishiBitMark = kMitsubishiBitMarkTicks * kMitsubishiTick
     
    const uint16_t kMitsubishiOneSpaceTicks = 70
     
    const uint16_t kMitsubishiOneSpace = kMitsubishiOneSpaceTicks * kMitsubishiTick
     
    const uint16_t kMitsubishiZeroSpaceTicks = 30
     
    const uint16_t kMitsubishiZeroSpace
     
    const uint16_t kMitsubishiMinCommandLengthTicks = 1786
     
    const uint16_t kMitsubishiMinCommandLength
     
    const uint16_t kMitsubishiMinGapTicks = 936
     
    const uint16_t kMitsubishiMinGap = kMitsubishiMinGapTicks * kMitsubishiTick
     
    const uint16_t kMitsubishi2HdrMark = 8400
     
    const uint16_t kMitsubishi2HdrSpace = kMitsubishi2HdrMark / 2
     
    const uint16_t kMitsubishi2BitMark = 560
     
    const uint16_t kMitsubishi2ZeroSpace = 520
     
    const uint16_t kMitsubishi2OneSpace = kMitsubishi2ZeroSpace * 3
     
    const uint16_t kMitsubishi2MinGap = 28500
     
    const uint16_t kMitsubishiAcHdrMark = 3400
     
    const uint16_t kMitsubishiAcHdrSpace = 1750
     
    const uint16_t kMitsubishiAcBitMark = 450
     
    const uint16_t kMitsubishiAcOneSpace = 1300
     
    const uint16_t kMitsubishiAcZeroSpace = 420
     
    const uint16_t kMitsubishiAcRptMark = 440
     
    const uint16_t kMitsubishiAcRptSpace = 17100
     
    const uint8_t kMitsubishiAcExtraTolerance = 5
     
    const uint16_t kMitsubishi136HdrMark = 3324
     
    const uint16_t kMitsubishi136HdrSpace = 1474
     
    const uint16_t kMitsubishi136BitMark = 467
     
    const uint16_t kMitsubishi136OneSpace = 1137
     
    const uint16_t kMitsubishi136ZeroSpace = 351
     
    const uint32_t kMitsubishi136Gap = kDefaultMessageGap
     
    const uint16_t kMitsubishi112HdrMark = 3450
     
    const uint16_t kMitsubishi112HdrSpace = 1696
     
    const uint16_t kMitsubishi112BitMark = 450
     
    const uint16_t kMitsubishi112OneSpace = 1250
     
    const uint16_t kMitsubishi112ZeroSpace = 385
     
    const uint32_t kMitsubishi112Gap = kDefaultMessageGap
     
    const uint8_t kMitsubishi112HdrMarkTolerance = 5
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMitsubishi112BitMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishi112BitMark = 450
    -
    - -
    -
    - -

    ◆ kMitsubishi112Gap

    - -
    -
    - - - - -
    const uint32_t kMitsubishi112Gap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kMitsubishi112HdrMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishi112HdrMark = 3450
    -
    - -
    -
    - -

    ◆ kMitsubishi112HdrMarkTolerance

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112HdrMarkTolerance = 5
    -
    - -
    -
    - -

    ◆ kMitsubishi112HdrSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi112HdrSpace = 1696
    -
    - -
    -
    - -

    ◆ kMitsubishi112OneSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi112OneSpace = 1250
    -
    - -
    -
    - -

    ◆ kMitsubishi112ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi112ZeroSpace = 385
    -
    - -
    -
    - -

    ◆ kMitsubishi136BitMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishi136BitMark = 467
    -
    - -
    -
    - -

    ◆ kMitsubishi136Gap

    - -
    -
    - - - - -
    const uint32_t kMitsubishi136Gap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kMitsubishi136HdrMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishi136HdrMark = 3324
    -
    - -
    -
    - -

    ◆ kMitsubishi136HdrSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi136HdrSpace = 1474
    -
    - -
    -
    - -

    ◆ kMitsubishi136OneSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi136OneSpace = 1137
    -
    - -
    -
    - -

    ◆ kMitsubishi136ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi136ZeroSpace = 351
    -
    - -
    -
    - -

    ◆ kMitsubishi2BitMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishi2BitMark = 560
    -
    - -
    -
    - -

    ◆ kMitsubishi2HdrMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishi2HdrMark = 8400
    -
    - -
    -
    - -

    ◆ kMitsubishi2HdrSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi2HdrSpace = kMitsubishi2HdrMark / 2
    -
    - -
    -
    - -

    ◆ kMitsubishi2MinGap

    - -
    -
    - - - - -
    const uint16_t kMitsubishi2MinGap = 28500
    -
    - -
    -
    - -

    ◆ kMitsubishi2OneSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi2OneSpace = kMitsubishi2ZeroSpace * 3
    -
    - -
    -
    - -

    ◆ kMitsubishi2ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishi2ZeroSpace = 520
    -
    - -
    -
    - -

    ◆ kMitsubishiAcBitMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcBitMark = 450
    -
    - -
    -
    - -

    ◆ kMitsubishiAcExtraTolerance

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcExtraTolerance = 5
    -
    - -
    -
    - -

    ◆ kMitsubishiAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcHdrMark = 3400
    -
    - -
    -
    - -

    ◆ kMitsubishiAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcHdrSpace = 1750
    -
    - -
    -
    - -

    ◆ kMitsubishiAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcOneSpace = 1300
    -
    - -
    -
    - -

    ◆ kMitsubishiAcRptMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcRptMark = 440
    -
    - -
    -
    - -

    ◆ kMitsubishiAcRptSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcRptSpace = 17100
    -
    - -
    -
    - -

    ◆ kMitsubishiAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiAcZeroSpace = 420
    -
    - -
    -
    - -

    ◆ kMitsubishiBitMark

    - -
    -
    - - - - -
    const uint16_t kMitsubishiBitMark = kMitsubishiBitMarkTicks * kMitsubishiTick
    -
    - -
    -
    - -

    ◆ kMitsubishiBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kMitsubishiBitMarkTicks = 10
    -
    - -
    -
    - -

    ◆ kMitsubishiMinCommandLength

    - -
    -
    - - - - -
    const uint16_t kMitsubishiMinCommandLength
    -
    -
    - -

    ◆ kMitsubishiMinCommandLengthTicks

    - -
    -
    - - - - -
    const uint16_t kMitsubishiMinCommandLengthTicks = 1786
    -
    - -
    -
    - -

    ◆ kMitsubishiMinGap

    - -
    -
    - - - - -
    const uint16_t kMitsubishiMinGap = kMitsubishiMinGapTicks * kMitsubishiTick
    -
    - -
    -
    - -

    ◆ kMitsubishiMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kMitsubishiMinGapTicks = 936
    -
    - -
    -
    - -

    ◆ kMitsubishiOneSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiOneSpace = kMitsubishiOneSpaceTicks * kMitsubishiTick
    -
    - -
    -
    - -

    ◆ kMitsubishiOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kMitsubishiOneSpaceTicks = 70
    -
    - -
    -
    - -

    ◆ kMitsubishiTick

    - -
    -
    - - - - -
    const uint16_t kMitsubishiTick = 30
    -
    - -
    -
    - -

    ◆ kMitsubishiZeroSpace

    - -
    -
    - - - - -
    const uint16_t kMitsubishiZeroSpace
    -
    -Initial value: -
    -
    - -

    ◆ kMitsubishiZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kMitsubishiZeroSpaceTicks = 30
    -
    - -
    -
    -
    -
    const uint16_t kMitsubishiTick
    Definition: ir_Mitsubishi.cpp:36
    -
    const uint16_t kMitsubishiMinCommandLengthTicks
    Definition: ir_Mitsubishi.cpp:44
    -
    const uint16_t kMitsubishiZeroSpaceTicks
    Definition: ir_Mitsubishi.cpp:41
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h.html deleted file mode 100644 index 18570fa54..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h.html +++ /dev/null @@ -1,1287 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Mitsubishi.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Mitsubishi.h File Reference
    -
    -
    - -

    Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github.com/z3t0/Arduino-IRremote Mitsubishi (TV) sending & Mitsubishi A/C support added by David Conran. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - -

    -Classes

    union  Mitsubishi144Protocol
     Native representation of a Mitsubishi 144-bit A/C message. More...
     
    union  Mitsubishi136Protocol
     Native representation of a Mitsubishi 136-bit A/C message. More...
     
    union  Mitsubishi112Protocol
     Native representation of a Mitsubishi 112-bit A/C message. More...
     
    class  IRMitsubishiAC
     Class for handling detailed Mitsubishi 144-bit A/C messages. More...
     
    class  IRMitsubishi136
     Class for handling detailed Mitsubishi 136-bit A/C messages. More...
     
    class  IRMitsubishi112
     Class for handling detailed Mitsubishi 122-bit A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kMitsubishiAcAuto = 0b100
     
    const uint8_t kMitsubishiAcCool = 0b011
     
    const uint8_t kMitsubishiAcDry = 0b010
     
    const uint8_t kMitsubishiAcHeat = 0b001
     
    const uint8_t kMitsubishiAcFanAuto = 0
     
    const uint8_t kMitsubishiAcFanMax = 5
     
    const uint8_t kMitsubishiAcFanRealMax = 4
     
    const uint8_t kMitsubishiAcFanSilent = 6
     
    const uint8_t kMitsubishiAcFanQuiet = kMitsubishiAcFanSilent
     
    const float kMitsubishiAcMinTemp = 16.0
     
    const float kMitsubishiAcMaxTemp = 31.0
     
    const uint8_t kMitsubishiAcVaneAuto = 0b000
     
    const uint8_t kMitsubishiAcVaneHighest = 0b001
     
    const uint8_t kMitsubishiAcVaneHigh = 0b010
     
    const uint8_t kMitsubishiAcVaneMiddle = 0b011
     
    const uint8_t kMitsubishiAcVaneLow = 0b100
     
    const uint8_t kMitsubishiAcVaneLowest = 0b101
     
    const uint8_t kMitsubishiAcVaneSwing = 0b111
     
    const uint8_t kMitsubishiAcVaneAutoMove = kMitsubishiAcVaneSwing
     
    const uint8_t kMitsubishiAcWideVaneLeftMax = 0b0001
     
    const uint8_t kMitsubishiAcWideVaneLeft = 0b0010
     
    const uint8_t kMitsubishiAcWideVaneMiddle = 0b0011
     
    const uint8_t kMitsubishiAcWideVaneRight = 0b0100
     
    const uint8_t kMitsubishiAcWideVaneRightMax = 0b0101
     
    const uint8_t kMitsubishiAcWideVaneWide = 0b0110
     
    const uint8_t kMitsubishiAcWideVaneAuto = 0b1000
     
    const uint8_t kMitsubishiAcNoTimer = 0
     
    const uint8_t kMitsubishiAcStartTimer = 5
     
    const uint8_t kMitsubishiAcStopTimer = 3
     
    const uint8_t kMitsubishiAcStartStopTimer = 7
     
    const uint8_t kMitsubishi136PowerByte = 5
     
    const uint8_t kMitsubishi136MinTemp = 17
     
    const uint8_t kMitsubishi136MaxTemp = 30
     
    const uint8_t kMitsubishi136Fan = 0b000
     
    const uint8_t kMitsubishi136Cool = 0b001
     
    const uint8_t kMitsubishi136Heat = 0b010
     
    const uint8_t kMitsubishi136Auto = 0b011
     
    const uint8_t kMitsubishi136Dry = 0b101
     
    const uint8_t kMitsubishi136SwingVLowest = 0b0000
     
    const uint8_t kMitsubishi136SwingVLow = 0b0001
     
    const uint8_t kMitsubishi136SwingVHigh = 0b0010
     
    const uint8_t kMitsubishi136SwingVHighest = 0b0011
     
    const uint8_t kMitsubishi136SwingVAuto = 0b1100
     
    const uint8_t kMitsubishi136FanMin = 0b00
     
    const uint8_t kMitsubishi136FanLow = 0b01
     
    const uint8_t kMitsubishi136FanMed = 0b10
     
    const uint8_t kMitsubishi136FanMax = 0b11
     
    const uint8_t kMitsubishi136FanQuiet = kMitsubishi136FanMin
     
    const uint8_t kMitsubishi112Cool = 0b011
     
    const uint8_t kMitsubishi112Heat = 0b001
     
    const uint8_t kMitsubishi112Auto = 0b111
     
    const uint8_t kMitsubishi112Dry = 0b010
     
    const uint8_t kMitsubishi112MinTemp = 16
     
    const uint8_t kMitsubishi112MaxTemp = 31
     
    const uint8_t kMitsubishi112FanMin = 0b010
     
    const uint8_t kMitsubishi112FanLow = 0b011
     
    const uint8_t kMitsubishi112FanMed = 0b101
     
    const uint8_t kMitsubishi112FanMax = 0b000
     
    const uint8_t kMitsubishi112FanQuiet = kMitsubishi112FanMin
     
    const uint8_t kMitsubishi112SwingVLowest = 0b101
     
    const uint8_t kMitsubishi112SwingVLow = 0b100
     
    const uint8_t kMitsubishi112SwingVMiddle = 0b011
     
    const uint8_t kMitsubishi112SwingVHigh = 0b010
     
    const uint8_t kMitsubishi112SwingVHighest = 0b001
     
    const uint8_t kMitsubishi112SwingVAuto = 0b111
     
    const uint8_t kMitsubishi112SwingHLeftMax = 0b0001
     
    const uint8_t kMitsubishi112SwingHLeft = 0b0010
     
    const uint8_t kMitsubishi112SwingHMiddle = 0b0011
     
    const uint8_t kMitsubishi112SwingHRight = 0b0100
     
    const uint8_t kMitsubishi112SwingHRightMax = 0b0101
     
    const uint8_t kMitsubishi112SwingHWide = 0b1000
     
    const uint8_t kMitsubishi112SwingHAuto = 0b1100
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMitsubishi112Auto

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112Auto = 0b111
    -
    - -
    -
    - -

    ◆ kMitsubishi112Cool

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112Cool = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishi112Dry

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112Dry = 0b010
    -
    - -
    -
    - -

    ◆ kMitsubishi112FanLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112FanLow = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishi112FanMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112FanMax = 0b000
    -
    - -
    -
    - -

    ◆ kMitsubishi112FanMed

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112FanMed = 0b101
    -
    - -
    -
    - -

    ◆ kMitsubishi112FanMin

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112FanMin = 0b010
    -
    - -
    -
    - -

    ◆ kMitsubishi112FanQuiet

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112FanQuiet = kMitsubishi112FanMin
    -
    - -
    -
    - -

    ◆ kMitsubishi112Heat

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112Heat = 0b001
    -
    - -
    -
    - -

    ◆ kMitsubishi112MaxTemp

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112MaxTemp = 31
    -
    - -
    -
    - -

    ◆ kMitsubishi112MinTemp

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112MinTemp = 16
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHAuto = 0b1100
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHLeft

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHLeft = 0b0010
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHLeftMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHLeftMax = 0b0001
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHMiddle = 0b0011
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHRight

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHRight = 0b0100
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHRightMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHRightMax = 0b0101
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingHWide

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingHWide = 0b1000
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingVAuto = 0b111
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingVHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingVHigh = 0b010
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingVHighest

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingVHighest = 0b001
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingVLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingVLow = 0b100
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingVLowest

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingVLowest = 0b101
    -
    - -
    -
    - -

    ◆ kMitsubishi112SwingVMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishi112SwingVMiddle = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishi136Auto

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136Auto = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishi136Cool

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136Cool = 0b001
    -
    - -
    -
    - -

    ◆ kMitsubishi136Dry

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136Dry = 0b101
    -
    - -
    -
    - -

    ◆ kMitsubishi136Fan

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136Fan = 0b000
    -
    - -
    -
    - -

    ◆ kMitsubishi136FanLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136FanLow = 0b01
    -
    - -
    -
    - -

    ◆ kMitsubishi136FanMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136FanMax = 0b11
    -
    - -
    -
    - -

    ◆ kMitsubishi136FanMed

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136FanMed = 0b10
    -
    - -
    -
    - -

    ◆ kMitsubishi136FanMin

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136FanMin = 0b00
    -
    - -
    -
    - -

    ◆ kMitsubishi136FanQuiet

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136FanQuiet = kMitsubishi136FanMin
    -
    - -
    -
    - -

    ◆ kMitsubishi136Heat

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136Heat = 0b010
    -
    - -
    -
    - -

    ◆ kMitsubishi136MaxTemp

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136MaxTemp = 30
    -
    - -
    -
    - -

    ◆ kMitsubishi136MinTemp

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136MinTemp = 17
    -
    - -
    -
    - -

    ◆ kMitsubishi136PowerByte

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136PowerByte = 5
    -
    - -
    -
    - -

    ◆ kMitsubishi136SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136SwingVAuto = 0b1100
    -
    - -
    -
    - -

    ◆ kMitsubishi136SwingVHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136SwingVHigh = 0b0010
    -
    - -
    -
    - -

    ◆ kMitsubishi136SwingVHighest

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136SwingVHighest = 0b0011
    -
    - -
    -
    - -

    ◆ kMitsubishi136SwingVLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136SwingVLow = 0b0001
    -
    - -
    -
    - -

    ◆ kMitsubishi136SwingVLowest

    - -
    -
    - - - - -
    const uint8_t kMitsubishi136SwingVLowest = 0b0000
    -
    - -
    -
    - -

    ◆ kMitsubishiAcAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcAuto = 0b100
    -
    - -
    -
    - -

    ◆ kMitsubishiAcCool

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcCool = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishiAcDry

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcDry = 0b010
    -
    - -
    -
    - -

    ◆ kMitsubishiAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcFanAuto = 0
    -
    - -
    -
    - -

    ◆ kMitsubishiAcFanMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcFanMax = 5
    -
    - -
    -
    - -

    ◆ kMitsubishiAcFanQuiet

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcFanQuiet = kMitsubishiAcFanSilent
    -
    - -
    -
    - -

    ◆ kMitsubishiAcFanRealMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcFanRealMax = 4
    -
    - -
    -
    - -

    ◆ kMitsubishiAcFanSilent

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcFanSilent = 6
    -
    - -
    -
    - -

    ◆ kMitsubishiAcHeat

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcHeat = 0b001
    -
    - -
    -
    - -

    ◆ kMitsubishiAcMaxTemp

    - -
    -
    - - - - -
    const float kMitsubishiAcMaxTemp = 31.0
    -
    - -
    -
    - -

    ◆ kMitsubishiAcMinTemp

    - -
    -
    - - - - -
    const float kMitsubishiAcMinTemp = 16.0
    -
    - -
    -
    - -

    ◆ kMitsubishiAcNoTimer

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcNoTimer = 0
    -
    - -
    -
    - -

    ◆ kMitsubishiAcStartStopTimer

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcStartStopTimer = 7
    -
    - -
    -
    - -

    ◆ kMitsubishiAcStartTimer

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcStartTimer = 5
    -
    - -
    -
    - -

    ◆ kMitsubishiAcStopTimer

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcStopTimer = 3
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneAuto = 0b000
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneAutoMove

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneAutoMove = kMitsubishiAcVaneSwing
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneHigh

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneHigh = 0b010
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneHighest

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneHighest = 0b001
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneLow

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneLow = 0b100
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneLowest

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneLowest = 0b101
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneMiddle = 0b011
    -
    - -
    -
    - -

    ◆ kMitsubishiAcVaneSwing

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcVaneSwing = 0b111
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneAuto

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneAuto = 0b1000
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneLeft

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneLeft = 0b0010
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneLeftMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneLeftMax = 0b0001
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneMiddle

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneMiddle = 0b0011
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneRight

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneRight = 0b0100
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneRightMax

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneRightMax = 0b0101
    -
    - -
    -
    - -

    ◆ kMitsubishiAcWideVaneWide

    - -
    -
    - - - - -
    const uint8_t kMitsubishiAcWideVaneWide = 0b0110
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h_source.html deleted file mode 100644 index ae04f5c83..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Mitsubishi_8h_source.html +++ /dev/null @@ -1,701 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Mitsubishi.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Mitsubishi.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2009 Ken Shirriff
    -
    2 // Copyright 2017-2021 David Conran
    -
    3 // Copyright 2019 Mark Kuchel
    -
    4 
    -
    19 
    -
    20 // Supports:
    -
    21 // Brand: Mitsubishi, Model: TV (MITSUBISHI)
    -
    22 // Brand: Mitsubishi, Model: HC3000 Projector (MITSUBISHI2)
    -
    23 // Brand: Mitsubishi, Model: MS-GK24VA A/C
    -
    24 // Brand: Mitsubishi, Model: KM14A 0179213 remote
    -
    25 // Brand: Mitsubishi Electric, Model: PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
    -
    26 // Brand: Mitsubishi Electric, Model: 001CP T7WE10714 remote (MITSUBISHI136)
    -
    27 // Brand: Mitsubishi Electric, Model: MSH-A24WV A/C (MITSUBISHI112)
    -
    28 // Brand: Mitsubishi Electric, Model: MUH-A24WV A/C (MITSUBISHI112)
    -
    29 // Brand: Mitsubishi Electric, Model: KPOA remote (MITSUBISHI112)
    -
    30 // Brand: Mitsubishi Electric, Model: MLZ-RX5017AS A/C (MITSUBISHI_AC)
    -
    31 // Brand: Mitsubishi Electric, Model: SG153/M21EDF426 remote (MITSUBISHI_AC)
    -
    32 // Brand: Mitsubishi Electric, Model: MSZ-GV2519 A/C (MITSUBISHI_AC)
    -
    33 // Brand: Mitsubishi Electric, Model: RH151/M21ED6426 remote (MITSUBISHI_AC)
    -
    34 
    -
    35 #ifndef IR_MITSUBISHI_H_
    -
    36 #define IR_MITSUBISHI_H_
    -
    37 
    -
    38 #define __STDC_LIMIT_MACROS
    -
    39 #include <stdint.h>
    -
    40 #ifndef UNIT_TEST
    -
    41 #include <Arduino.h>
    -
    42 #endif
    -
    43 #include "IRremoteESP8266.h"
    -
    44 #include "IRsend.h"
    -
    45 #ifdef UNIT_TEST
    -
    46 #include "IRsend_test.h"
    -
    47 #endif
    -
    48 
    - - -
    52  struct {
    -
    53  // Byte 0~4
    -
    54  uint8_t pad0[5];
    -
    55  // Byte 5
    -
    56  uint8_t :5;
    -
    57  uint8_t Power :1;
    -
    58  uint8_t :2;
    -
    59  // Byte 6
    -
    60  uint8_t :3;
    -
    61  uint8_t Mode :3;
    -
    62  uint8_t :2;
    -
    63  // Byte 7
    -
    64  uint8_t Temp :4;
    -
    65  uint8_t HalfDegree :1;
    -
    66  uint8_t :3;
    -
    67  // Byte 8
    -
    68  uint8_t :4;
    -
    69  uint8_t WideVane:4; // SwingH
    -
    70  // Byte 9
    -
    71  uint8_t Fan :3;
    -
    72  uint8_t Vane :3; // SwingV
    -
    73  uint8_t VaneBit :1;
    -
    74  uint8_t FanAuto :1;
    -
    75  // Byte 10
    -
    76  uint8_t Clock :8;
    -
    77  // Byte 11
    -
    78  uint8_t StopClock :8;
    -
    79  // Byte 12
    -
    80  uint8_t StartClock:8;
    -
    81  // Byte 13
    -
    82  uint8_t Timer :3;
    -
    83  uint8_t WeeklyTimer :1;
    -
    84  uint8_t :4;
    -
    85  // Byte 14~16
    -
    86  uint8_t pad1[3];
    -
    87  // Byte 17
    -
    88  uint8_t Sum :8;
    -
    89  };
    -
    90 };
    -
    91 
    -
    92 // Constants
    -
    93 const uint8_t kMitsubishiAcAuto = 0b100;
    -
    94 const uint8_t kMitsubishiAcCool = 0b011;
    -
    95 const uint8_t kMitsubishiAcDry = 0b010;
    -
    96 const uint8_t kMitsubishiAcHeat = 0b001;
    -
    97 const uint8_t kMitsubishiAcFanAuto = 0;
    -
    98 const uint8_t kMitsubishiAcFanMax = 5;
    -
    99 const uint8_t kMitsubishiAcFanRealMax = 4;
    -
    100 const uint8_t kMitsubishiAcFanSilent = 6;
    - -
    102 const float kMitsubishiAcMinTemp = 16.0; // 16C
    -
    103 const float kMitsubishiAcMaxTemp = 31.0; // 31C
    -
    104 const uint8_t kMitsubishiAcVaneAuto = 0b000; // Vanes move when AC wants to.
    -
    105 const uint8_t kMitsubishiAcVaneHighest = 0b001;
    -
    106 const uint8_t kMitsubishiAcVaneHigh = 0b010;
    -
    107 const uint8_t kMitsubishiAcVaneMiddle = 0b011;
    -
    108 const uint8_t kMitsubishiAcVaneLow = 0b100;
    -
    109 const uint8_t kMitsubishiAcVaneLowest = 0b101;
    -
    110 const uint8_t kMitsubishiAcVaneSwing = 0b111; // Vanes move all the time.
    -
    111 const uint8_t kMitsubishiAcVaneAutoMove = kMitsubishiAcVaneSwing; // Deprecated
    -
    112 const uint8_t kMitsubishiAcWideVaneLeftMax = 0b0001; // 1
    -
    113 const uint8_t kMitsubishiAcWideVaneLeft = 0b0010; // 2
    -
    114 const uint8_t kMitsubishiAcWideVaneMiddle = 0b0011; // 3
    -
    115 const uint8_t kMitsubishiAcWideVaneRight = 0b0100; // 4
    -
    116 const uint8_t kMitsubishiAcWideVaneRightMax = 0b0101; // 5
    -
    117 const uint8_t kMitsubishiAcWideVaneWide = 0b0110; // 6
    -
    118 const uint8_t kMitsubishiAcWideVaneAuto = 0b1000; // 8
    -
    119 const uint8_t kMitsubishiAcNoTimer = 0;
    -
    120 const uint8_t kMitsubishiAcStartTimer = 5;
    -
    121 const uint8_t kMitsubishiAcStopTimer = 3;
    -
    122 const uint8_t kMitsubishiAcStartStopTimer = 7;
    -
    123 
    - - -
    127  struct {
    -
    128  // Byte 0~4
    -
    129  uint8_t pad[5];
    -
    130  // Byte 5
    -
    131  uint8_t :6;
    -
    132  uint8_t Power :1;
    -
    133  uint8_t :1;
    -
    134  // Byte 6
    -
    135  uint8_t Mode :3;
    -
    136  uint8_t :1;
    -
    137  uint8_t Temp :4;
    -
    138  // Byte 7
    -
    139  uint8_t :1;
    -
    140  uint8_t Fan :2;
    -
    141  uint8_t :1;
    -
    142  uint8_t SwingV :4;
    -
    143  };
    -
    144 };
    -
    145 
    -
    146 const uint8_t kMitsubishi136PowerByte = 5;
    -
    147 const uint8_t kMitsubishi136MinTemp = 17; // 17C
    -
    148 const uint8_t kMitsubishi136MaxTemp = 30; // 30C
    -
    149 const uint8_t kMitsubishi136Fan = 0b000;
    -
    150 const uint8_t kMitsubishi136Cool = 0b001;
    -
    151 const uint8_t kMitsubishi136Heat = 0b010;
    -
    152 const uint8_t kMitsubishi136Auto = 0b011;
    -
    153 const uint8_t kMitsubishi136Dry = 0b101;
    -
    154 const uint8_t kMitsubishi136SwingVLowest = 0b0000;
    -
    155 const uint8_t kMitsubishi136SwingVLow = 0b0001;
    -
    156 const uint8_t kMitsubishi136SwingVHigh = 0b0010;
    -
    157 const uint8_t kMitsubishi136SwingVHighest = 0b0011;
    -
    158 const uint8_t kMitsubishi136SwingVAuto = 0b1100;
    -
    159 const uint8_t kMitsubishi136FanMin = 0b00;
    -
    160 const uint8_t kMitsubishi136FanLow = 0b01;
    -
    161 const uint8_t kMitsubishi136FanMed = 0b10;
    -
    162 const uint8_t kMitsubishi136FanMax = 0b11;
    - -
    164 
    - - -
    168  struct {
    -
    169  // Byte 0~4
    -
    170  uint8_t pad0[5];
    -
    171  // Byte 5
    -
    172  uint8_t :2;
    -
    173  uint8_t Power :1;
    -
    174  uint8_t :5;
    -
    175  // Byte 6
    -
    176  uint8_t Mode :3;
    -
    177  uint8_t :5;
    -
    178  // Byte 7
    -
    179  uint8_t Temp :4;
    -
    180  uint8_t :4;
    -
    181  // Byte 8
    -
    182  uint8_t Fan :3;
    -
    183  uint8_t SwingV :3;
    -
    184  uint8_t :2;
    -
    185  // Byte 9~11
    -
    186  uint8_t pad1[3];
    -
    187  // Byte 12
    -
    188  uint8_t :2;
    -
    189  uint8_t SwingH :4;
    -
    190  uint8_t :2;
    -
    191  // Byte 13
    -
    192  uint8_t Sum :8;
    -
    193  };
    -
    194 };
    -
    195 
    -
    196 const uint8_t kMitsubishi112Cool = 0b011;
    -
    197 const uint8_t kMitsubishi112Heat = 0b001;
    -
    198 const uint8_t kMitsubishi112Auto = 0b111;
    -
    199 const uint8_t kMitsubishi112Dry = 0b010;
    -
    200 
    -
    201 const uint8_t kMitsubishi112MinTemp = 16; // 16C
    -
    202 const uint8_t kMitsubishi112MaxTemp = 31; // 31C
    -
    203 
    -
    204 const uint8_t kMitsubishi112FanMin = 0b010;
    -
    205 const uint8_t kMitsubishi112FanLow = 0b011;
    -
    206 const uint8_t kMitsubishi112FanMed = 0b101;
    -
    207 const uint8_t kMitsubishi112FanMax = 0b000;
    - -
    209 const uint8_t kMitsubishi112SwingVLowest = 0b101;
    -
    210 const uint8_t kMitsubishi112SwingVLow = 0b100;
    -
    211 const uint8_t kMitsubishi112SwingVMiddle = 0b011;
    -
    212 const uint8_t kMitsubishi112SwingVHigh = 0b010;
    -
    213 const uint8_t kMitsubishi112SwingVHighest = 0b001;
    -
    214 const uint8_t kMitsubishi112SwingVAuto = 0b111;
    -
    215 
    -
    216 const uint8_t kMitsubishi112SwingHLeftMax = 0b0001;
    -
    217 const uint8_t kMitsubishi112SwingHLeft = 0b0010;
    -
    218 const uint8_t kMitsubishi112SwingHMiddle = 0b0011;
    -
    219 const uint8_t kMitsubishi112SwingHRight = 0b0100;
    -
    220 const uint8_t kMitsubishi112SwingHRightMax = 0b0101;
    -
    221 const uint8_t kMitsubishi112SwingHWide = 0b1000;
    -
    222 const uint8_t kMitsubishi112SwingHAuto = 0b1100;
    -
    223 
    -
    224 // Legacy defines (Deprecated)
    -
    225 #define MITSUBISHI_AC_VANE_AUTO_MOVE kMitsubishiAcVaneAutoMove
    -
    226 #define MITSUBISHI_AC_VANE_AUTO kMitsubishiAcVaneAuto
    -
    227 #define MITSUBISHI_AC_MIN_TEMP kMitsubishiAcMinTemp
    -
    228 #define MITSUBISHI_AC_MAX_TEMP kMitsubishiAcMaxTemp
    -
    229 #define MITSUBISHI_AC_HEAT kMitsubishiAcHeat
    -
    230 #define MITSUBISHI_AC_FAN_SILENT kMitsubishiAcFanSilent
    -
    231 #define MITSUBISHI_AC_FAN_REAL_MAX kMitsubishiAcFanRealMax
    -
    232 #define MITSUBISHI_AC_FAN_MAX kMitsubishiAcFanMax
    -
    233 #define MITSUBISHI_AC_FAN_AUTO kMitsubishiAcFanAuto
    -
    234 #define MITSUBISHI_AC_DRY kMitsubishiAcDry
    -
    235 #define MITSUBISHI_AC_COOL kMitsubishiAcCool
    -
    236 #define MITSUBISHI_AC_AUTO kMitsubishiAcAuto
    -
    237 
    -
    238 
    - -
    243  public:
    -
    244  explicit IRMitsubishiAC(const uint16_t pin, const bool inverted = false,
    -
    245  const bool use_modulation = true);
    -
    246  void stateReset(void);
    -
    247  static bool validChecksum(const uint8_t* data);
    -
    248 #if SEND_MITSUBISHI_AC
    -
    249  void send(const uint16_t repeat = kMitsubishiACMinRepeat);
    -
    254  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    255 #endif // SEND_MITSUBISHI_AC
    -
    256  void begin(void);
    -
    257  void on(void);
    -
    258  void off(void);
    -
    259  void setPower(const bool on);
    -
    260  bool getPower(void) const;
    -
    261  void setTemp(const float degrees);
    -
    262  float getTemp(void) const;
    -
    263  void setFan(const uint8_t speed);
    -
    264  uint8_t getFan(void) const;
    -
    265  void setMode(const uint8_t mode);
    -
    266  uint8_t getMode(void) const;
    -
    267  void setVane(const uint8_t position);
    -
    268  void setWideVane(const uint8_t position);
    -
    269  uint8_t getVane(void) const;
    -
    270  uint8_t getWideVane(void) const;
    -
    271  uint8_t* getRaw(void);
    -
    272  void setRaw(const uint8_t* data);
    -
    273  uint8_t getClock(void) const;
    -
    274  void setClock(const uint8_t clock);
    -
    275  uint8_t getStartClock(void) const;
    -
    276  void setStartClock(const uint8_t clock);
    -
    277  uint8_t getStopClock(void) const;
    -
    278  void setStopClock(const uint8_t clock);
    -
    279  uint8_t getTimer(void) const;
    -
    280  void setTimer(const uint8_t timer);
    -
    281  bool getWeeklyTimerEnabled(void) const;
    -
    282  void setWeeklyTimerEnabled(const bool on);
    -
    283  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    284  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    285  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    286  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    287  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    288  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    289  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    290  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
    -
    291  stdAc::state_t toCommon(void) const;
    -
    292  String toString(void) const;
    -
    293 #ifndef UNIT_TEST
    -
    294 
    -
    295  private:
    - -
    297 #else // UNIT_TEST
    -
    298  IRsendTest _irsend;
    -
    300 #endif // UNIT_TEST
    - -
    303  void checksum(void);
    -
    304  static uint8_t calculateChecksum(const uint8_t* data);
    -
    305 };
    -
    306 
    - -
    309  public:
    -
    310  explicit IRMitsubishi136(const uint16_t pin, const bool inverted = false,
    -
    311  const bool use_modulation = true);
    -
    312  void stateReset(void);
    -
    313 #if SEND_MITSUBISHI136
    -
    314  void send(const uint16_t repeat = kMitsubishi136MinRepeat);
    -
    319  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    320 #endif // SEND_MITSUBISHI136
    -
    321  void begin(void);
    -
    322  static bool validChecksum(const uint8_t* data,
    -
    323  const uint16_t len = kMitsubishi136StateLength);
    -
    324  void on(void);
    -
    325  void off(void);
    -
    326  void setPower(const bool on);
    -
    327  bool getPower(void) const;
    -
    328  void setTemp(const uint8_t degrees);
    -
    329  uint8_t getTemp(void) const;
    -
    330  void setFan(const uint8_t speed);
    -
    331  uint8_t getFan(void) const;
    -
    332  void setMode(const uint8_t mode);
    -
    333  uint8_t getMode(void) const;
    -
    334  void setSwingV(const uint8_t position);
    -
    335  uint8_t getSwingV(void) const;
    -
    336  void setQuiet(const bool on);
    -
    337  bool getQuiet(void) const;
    -
    338  uint8_t* getRaw(void);
    -
    339  void setRaw(const uint8_t* data);
    -
    340  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    341  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    342  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    343  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    344  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    345  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    346  stdAc::state_t toCommon(void) const;
    -
    347  String toString(void) const;
    -
    348 #ifndef UNIT_TEST
    -
    349 
    -
    350  private:
    - -
    352 #else // UNIT_TEST
    -
    353  IRsendTest _irsend;
    -
    355 #endif // UNIT_TEST
    - -
    358  void checksum(void);
    -
    359 };
    -
    360 
    - -
    363  public:
    -
    364  explicit IRMitsubishi112(const uint16_t pin, const bool inverted = false,
    -
    365  const bool use_modulation = true);
    -
    366  void stateReset(void);
    -
    367 #if SEND_MITSUBISHI112
    -
    368  void send(const uint16_t repeat = kMitsubishi112MinRepeat);
    -
    373  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    374 #endif // SEND_MITSUBISHI112
    -
    375  void begin(void);
    -
    376  void on(void);
    -
    377  void off(void);
    -
    378  void setPower(const bool on);
    -
    379  bool getPower(void) const;
    -
    380  void setTemp(const uint8_t degrees);
    -
    381  uint8_t getTemp(void) const;
    -
    382  void setFan(const uint8_t speed);
    -
    383  uint8_t getFan(void) const;
    -
    384  void setMode(const uint8_t mode);
    -
    385  uint8_t getMode(void) const;
    -
    386  void setSwingV(const uint8_t position);
    -
    387  uint8_t getSwingV(void) const;
    -
    388  void setSwingH(const uint8_t position);
    -
    389  uint8_t getSwingH(void) const;
    -
    390  void setQuiet(const bool on);
    -
    391  bool getQuiet(void) const;
    -
    392  uint8_t* getRaw(void);
    -
    393  void setRaw(const uint8_t* data);
    -
    394  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    395  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    396  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    397  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    398  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    399  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    400  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    401  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
    -
    402  stdAc::state_t toCommon(void) const;
    -
    403  String toString(void) const;
    -
    404 #ifndef UNIT_TEST
    -
    405 
    -
    406  private:
    - -
    408 #else // UNIT_TEST
    -
    409  IRsendTest _irsend;
    -
    411 #endif // UNIT_TEST
    - -
    414  void checksum(void);
    -
    415 };
    -
    416 
    -
    417 #endif // IR_MITSUBISHI_H_
    -
    -
    const uint8_t kMitsubishi112SwingVMiddle
    Definition: ir_Mitsubishi.h:211
    -
    uint8_t SwingV
    Definition: ir_Mitsubishi.h:183
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1419
    -
    const uint8_t kMitsubishi112SwingVLowest
    Definition: ir_Mitsubishi.h:209
    -
    const uint8_t kMitsubishi112SwingVAuto
    Definition: ir_Mitsubishi.h:214
    -
    uint8_t pad1[3]
    Definition: ir_Mitsubishi.h:186
    -
    const uint8_t kMitsubishi112FanQuiet
    Definition: ir_Mitsubishi.h:208
    -
    uint8_t Timer
    Definition: ir_Mitsubishi.h:82
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Mitsubishi.cpp:1322
    -
    const uint8_t kMitsubishi112SwingHLeft
    Definition: ir_Mitsubishi.h:217
    -
    bool getQuiet(void) const
    Get the Quiet mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1497
    -
    uint8_t getVane(void) const
    Get the Vane (Vertical Swing) mode of the A/C.
    Definition: ir_Mitsubishi.cpp:543
    -
    uint8_t StartClock
    Definition: ir_Mitsubishi.h:80
    -
    const uint8_t kMitsubishi112FanMed
    Definition: ir_Mitsubishi.h:206
    -
    const uint16_t kMitsubishiACStateLength
    Definition: IRremoteESP8266.h:1069
    -
    uint8_t Fan
    Definition: ir_Mitsubishi.h:182
    -
    const uint8_t kMitsubishiAcHeat
    Definition: ir_Mitsubishi.h:96
    -
    const float kMitsubishiAcMinTemp
    Definition: ir_Mitsubishi.h:102
    -
    const uint8_t kMitsubishiAcAuto
    Definition: ir_Mitsubishi.h:93
    -
    Mitsubishi136Protocol _
    Definition: ir_Mitsubishi.h:357
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Mitsubishi.cpp:1175
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Mitsubishi.cpp:1335
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Mitsubishi.cpp:992
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Mitsubishi.cpp:1407
    -
    const uint8_t kMitsubishi112SwingHRight
    Definition: ir_Mitsubishi.h:219
    -
    const uint8_t kMitsubishiAcFanSilent
    Definition: ir_Mitsubishi.h:100
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Mitsubishi.h:373
    -
    uint8_t SwingH
    Definition: ir_Mitsubishi.h:189
    -
    const uint8_t kMitsubishiAcVaneAuto
    Definition: ir_Mitsubishi.h:104
    -
    const uint8_t kMitsubishi112SwingHRightMax
    Definition: ir_Mitsubishi.h:220
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Mitsubishi.cpp:908
    -
    uint8_t getClock(void) const
    Get the clock time of the A/C unit.
    Definition: ir_Mitsubishi.cpp:556
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Mitsubishi.cpp:941
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Mitsubishi.cpp:1614
    -
    const uint16_t kMitsubishi136MinRepeat
    Definition: IRremoteESP8266.h:1074
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Mitsubishi.cpp:1386
    -
    const uint8_t kMitsubishiAcVaneHighest
    Definition: ir_Mitsubishi.h:105
    -
    const uint8_t kMitsubishiAcWideVaneRightMax
    Definition: ir_Mitsubishi.h:116
    -
    const uint8_t kMitsubishiAcWideVaneRight
    Definition: ir_Mitsubishi.h:115
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Mitsubishi.cpp:391
    -
    void setVane(const uint8_t position)
    Set the requested vane (Vertical Swing) operation mode of the a/c unit.
    Definition: ir_Mitsubishi.cpp:529
    -
    const uint8_t kMitsubishi136FanMed
    Definition: ir_Mitsubishi.h:161
    -
    uint8_t raw[kMitsubishi136StateLength]
    The state in code form.
    Definition: ir_Mitsubishi.h:126
    -
    const uint8_t kMitsubishi136PowerByte
    Definition: ir_Mitsubishi.h:146
    -
    uint8_t getSwingH(void) const
    Get the Horizontal Swing mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1480
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    void setStopClock(const uint8_t clock)
    Set the desired stop time of the A/C unit.
    Definition: ir_Mitsubishi.cpp:585
    -
    const uint8_t kMitsubishi136MaxTemp
    Definition: ir_Mitsubishi.h:148
    -
    float getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Mitsubishi.cpp:478
    -
    uint8_t Temp
    Definition: ir_Mitsubishi.h:179
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Mitsubishi.cpp:1071
    -
    void setRaw(const uint8_t *data)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Mitsubishi.cpp:420
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Mitsubishi.cpp:998
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Mitsubishi.cpp:457
    -
    const uint16_t kMitsubishi112MinRepeat
    Definition: IRremoteESP8266.h:1077
    -
    void setRaw(const uint8_t *data)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Mitsubishi.cpp:1354
    -
    void setTemp(const float degrees)
    Set the temperature.
    Definition: ir_Mitsubishi.cpp:464
    -
    void setStartClock(const uint8_t clock)
    Set the desired start time of the A/C unit.
    Definition: ir_Mitsubishi.cpp:573
    -
    const uint8_t kMitsubishi112FanLow
    Definition: ir_Mitsubishi.h:205
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Mitsubishi.cpp:1573
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Mitsubishi.cpp:425
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Mitsubishi.cpp:1004
    -
    const uint8_t kMitsubishi112Heat
    Definition: ir_Mitsubishi.h:197
    -
    const uint8_t kMitsubishi112SwingHLeftMax
    Definition: ir_Mitsubishi.h:216
    -
    static bool validChecksum(const uint8_t *data)
    Verify the checksum is valid for a given state.
    Definition: ir_Mitsubishi.cpp:432
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Mitsubishi.h:319
    -
    const uint8_t kMitsubishi112Cool
    Definition: ir_Mitsubishi.h:196
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1056
    - -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Mitsubishi.cpp:1372
    -
    uint8_t StopClock
    Definition: ir_Mitsubishi.h:78
    -
    const uint8_t kMitsubishiAcNoTimer
    Definition: ir_Mitsubishi.h:119
    -
    void send(const uint16_t repeat=kMitsubishi112MinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Mitsubishi.cpp:1340
    -
    uint8_t getSwingV(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1454
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Mitsubishi.cpp:451
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Mitsubishi.cpp:1561
    -
    static uint8_t calculateChecksum(const uint8_t *data)
    Calculate the checksum for a given state.
    Definition: ir_Mitsubishi.cpp:439
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint8_t Temp
    Definition: ir_Mitsubishi.h:64
    -
    const uint8_t kMitsubishiAcVaneLowest
    Definition: ir_Mitsubishi.h:109
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kMitsubishi136Cool
    Definition: ir_Mitsubishi.h:150
    -
    const uint8_t kMitsubishi136Dry
    Definition: ir_Mitsubishi.h:153
    -
    IRMitsubishi112(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Mitsubishi.cpp:1317
    -
    void setClock(const uint8_t clock)
    Set the clock time on the A/C unit.
    Definition: ir_Mitsubishi.cpp:561
    -
    bool getWeeklyTimerEnabled(void) const
    Get the value of the WeeklyTimer Enabled setting.
    Definition: ir_Mitsubishi.cpp:773
    -
    uint8_t Sum
    Definition: ir_Mitsubishi.h:192
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Mitsubishi.cpp:506
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    Class for handling detailed Mitsubishi 144-bit A/C messages.
    Definition: ir_Mitsubishi.h:242
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Mitsubishi.cpp:741
    -
    uint8_t Vane
    Definition: ir_Mitsubishi.h:72
    -
    const uint8_t kMitsubishiAcVaneHigh
    Definition: ir_Mitsubishi.h:106
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Mitsubishi.cpp:1642
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Mitsubishi.cpp:639
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Mitsubishi.cpp:689
    -
    Class for handling detailed Mitsubishi 122-bit A/C messages.
    Definition: ir_Mitsubishi.h:362
    -
    uint8_t Temp
    Definition: ir_Mitsubishi.h:137
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Mitsubishi.cpp:484
    -
    const uint8_t kMitsubishi112SwingVLow
    Definition: ir_Mitsubishi.h:210
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a stdAc::swingh_t enum into it's native setting.
    Definition: ir_Mitsubishi.cpp:661
    -
    void setTemp(const uint8_t degrees)
    Set the temperature.
    Definition: ir_Mitsubishi.cpp:1378
    -
    const uint8_t kMitsubishi112SwingHAuto
    Definition: ir_Mitsubishi.h:222
    -
    const uint8_t kMitsubishi112MinTemp
    Definition: ir_Mitsubishi.h:201
    -
    Class for handling detailed Mitsubishi 136-bit A/C messages.
    Definition: ir_Mitsubishi.h:308
    -
    uint8_t Clock
    Definition: ir_Mitsubishi.h:76
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Mitsubishi.cpp:1366
    -
    void checksum(void)
    Calculate the checksum for the current internal state of the remote.
    Definition: ir_Mitsubishi.cpp:1330
    - -
    swingh_t
    Common A/C settings for Horizontal Swing.
    Definition: IRsend.h:83
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Mitsubishi.cpp:610
    -
    const uint8_t kMitsubishiAcStopTimer
    Definition: ir_Mitsubishi.h:121
    -
    const uint8_t kMitsubishiAcFanMax
    Definition: ir_Mitsubishi.h:98
    -
    uint8_t pad1[3]
    Definition: ir_Mitsubishi.h:86
    -
    uint8_t Mode
    Definition: ir_Mitsubishi.h:135
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Mitsubishi.cpp:498
    -
    const uint8_t kMitsubishi112SwingVHighest
    Definition: ir_Mitsubishi.h:213
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_Mitsubishi.cpp:727
    -
    const uint8_t kMitsubishi136FanLow
    Definition: ir_Mitsubishi.h:160
    -
    const uint16_t kMitsubishiACMinRepeat
    Definition: IRremoteESP8266.h:1071
    -
    const uint8_t kMitsubishi136MinTemp
    Definition: ir_Mitsubishi.h:147
    -
    uint8_t Power
    Definition: ir_Mitsubishi.h:57
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Mitsubishi.cpp:1137
    -
    IRMitsubishi136(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Mitsubishi.cpp:903
    -
    uint8_t pad0[5]
    Definition: ir_Mitsubishi.h:170
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Mitsubishi.h:296
    -
    const uint8_t kMitsubishi136Auto
    Definition: ir_Mitsubishi.h:152
    -
    Mitsubishi144Protocol _
    Definition: ir_Mitsubishi.h:302
    -
    const uint8_t kMitsubishi136FanMax
    Definition: ir_Mitsubishi.h:162
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Mitsubishi.cpp:413
    -
    const uint8_t kMitsubishiAcFanAuto
    Definition: ir_Mitsubishi.h:97
    -
    void setWeeklyTimerEnabled(const bool on)
    Change the Weekly Timer Enabled setting.
    Definition: ir_Mitsubishi.cpp:767
    -
    uint8_t getStopClock(void) const
    Get the desired stop time of the A/C unit.
    Definition: ir_Mitsubishi.cpp:580
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Mitsubishi.cpp:444
    -
    uint8_t Fan
    Definition: ir_Mitsubishi.h:140
    -
    const uint8_t kMitsubishiAcFanQuiet
    Definition: ir_Mitsubishi.h:101
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Mitsubishi.cpp:1517
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Mitsubishi.cpp:1504
    -
    uint8_t raw[kMitsubishiACStateLength]
    The state in code form.
    Definition: ir_Mitsubishi.h:51
    -
    const uint8_t kMitsubishiAcWideVaneAuto
    Definition: ir_Mitsubishi.h:118
    -
    void send(const uint16_t repeat=kMitsubishi136MinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Mitsubishi.cpp:946
    -
    const uint8_t kMitsubishi136Fan
    Definition: ir_Mitsubishi.h:149
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Mitsubishi.cpp:1392
    -
    uint8_t Power
    Definition: ir_Mitsubishi.h:132
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Mitsubishi.h:254
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Mitsubishi.cpp:1362
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Mitsubishi.cpp:512
    -
    uint8_t FanAuto
    Definition: ir_Mitsubishi.h:74
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Mitsubishi.cpp:1347
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a stdAc::swingh_t enum into it's native setting.
    Definition: ir_Mitsubishi.cpp:1545
    -
    void setSwingH(const uint8_t position)
    Set the Horizontal Swing mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1460
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Mitsubishi.cpp:1111
    -
    uint8_t Fan
    Definition: ir_Mitsubishi.h:71
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Mitsubishi.cpp:401
    -
    uint8_t raw[kMitsubishi112StateLength]
    The state in code form.
    Definition: ir_Mitsubishi.h:167
    -
    IRMitsubishiAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Mitsubishi.cpp:386
    -
    const uint8_t kMitsubishi136FanMin
    Definition: ir_Mitsubishi.h:159
    -
    const uint8_t kMitsubishi136SwingVAuto
    Definition: ir_Mitsubishi.h:158
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Mitsubishi.h:407
    -
    const uint8_t kMitsubishi136Heat
    Definition: ir_Mitsubishi.h:151
    -
    void setTemp(const uint8_t degrees)
    Set the temperature.
    Definition: ir_Mitsubishi.cpp:984
    -
    uint8_t Power
    Definition: ir_Mitsubishi.h:173
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Mitsubishi.cpp:677
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Mitsubishi.cpp:1010
    -
    void checksum(void)
    Calculate the checksum for the current internal state of the remote.
    Definition: ir_Mitsubishi.cpp:918
    -
    uint8_t getStartClock(void) const
    Get the desired start time of the A/C unit.
    Definition: ir_Mitsubishi.cpp:568
    -
    const uint8_t kMitsubishi112FanMin
    Definition: ir_Mitsubishi.h:204
    -
    const uint8_t kMitsubishiAcFanRealMax
    Definition: ir_Mitsubishi.h:99
    -
    const uint8_t kMitsubishiAcStartStopTimer
    Definition: ir_Mitsubishi.h:122
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Mitsubishi.cpp:622
    -
    const uint8_t kMitsubishiAcVaneSwing
    Definition: ir_Mitsubishi.h:110
    -
    const uint8_t kMitsubishi112SwingVHigh
    Definition: ir_Mitsubishi.h:212
    -
    const uint8_t kMitsubishi112SwingHMiddle
    Definition: ir_Mitsubishi.h:218
    -
    const uint8_t kMitsubishi136SwingVLow
    Definition: ir_Mitsubishi.h:155
    -
    uint8_t HalfDegree
    Definition: ir_Mitsubishi.h:65
    -
    Mitsubishi112Protocol _
    Definition: ir_Mitsubishi.h:413
    -
    uint8_t getTimer(void) const
    Get the timers active setting of the A/C.
    Definition: ir_Mitsubishi.cpp:594
    -
    uint8_t Sum
    Definition: ir_Mitsubishi.h:88
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Mitsubishi.cpp:1084
    -
    const uint8_t kMitsubishiAcVaneLow
    Definition: ir_Mitsubishi.h:108
    -
    const uint8_t kMitsubishiAcVaneAutoMove
    Definition: ir_Mitsubishi.h:111
    -
    void send(const uint16_t repeat=kMitsubishiACMinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Mitsubishi.cpp:406
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Mitsubishi.cpp:953
    -
    void setWideVane(const uint8_t position)
    Set the requested wide-vane (Horizontal Swing) operation mode of the a/c.
    Definition: ir_Mitsubishi.cpp:537
    -
    uint8_t WeeklyTimer
    Definition: ir_Mitsubishi.h:83
    -
    bool getQuiet(void) const
    Get the Quiet mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1064
    -
    const uint8_t kMitsubishi112Auto
    Definition: ir_Mitsubishi.h:198
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Mitsubishi.cpp:1413
    -
    const uint8_t kMitsubishi136SwingVLowest
    Definition: ir_Mitsubishi.h:154
    -
    const uint8_t kMitsubishiAcStartTimer
    Definition: ir_Mitsubishi.h:120
    -
    void setRaw(const uint8_t *data)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Mitsubishi.cpp:960
    -
    const uint8_t kMitsubishiAcWideVaneMiddle
    Definition: ir_Mitsubishi.h:114
    -
    const uint8_t kMitsubishiAcVaneMiddle
    Definition: ir_Mitsubishi.h:107
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Mitsubishi.cpp:1097
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Mitsubishi.cpp:1586
    -
    const uint8_t kMitsubishi112FanMax
    Definition: ir_Mitsubishi.h:207
    -
    const float kMitsubishiAcMaxTemp
    Definition: ir_Mitsubishi.h:103
    -
    uint8_t getWideVane(void) const
    Get the Wide Vane (Horizontal Swing) mode of the A/C.
    Definition: ir_Mitsubishi.cpp:549
    -
    uint8_t pad0[5]
    Definition: ir_Mitsubishi.h:54
    -
    void on(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Mitsubishi.cpp:1359
    -
    uint8_t VaneBit
    Definition: ir_Mitsubishi.h:73
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Mitsubishi.h:351
    -
    void setSwingV(const uint8_t position)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1033
    -
    const uint8_t kMitsubishi136FanQuiet
    Definition: ir_Mitsubishi.h:163
    -
    void setQuiet(const bool on)
    Set the Quiet mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1487
    -
    Native representation of a Mitsubishi 112-bit A/C message.
    Definition: ir_Mitsubishi.h:166
    -
    void setSwingV(const uint8_t position)
    Set the Vertical Swing mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1436
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Mitsubishi.cpp:1149
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Mitsubishi.cpp:1124
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_Mitsubishi.cpp:1600
    -
    uint8_t Mode
    Definition: ir_Mitsubishi.h:176
    -
    uint8_t getSwingV(void) const
    Get the Vertical Swing mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1050
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Mitsubishi.cpp:968
    -
    Native representation of a Mitsubishi 144-bit A/C message.
    Definition: ir_Mitsubishi.h:50
    -
    uint8_t Mode
    Definition: ir_Mitsubishi.h:61
    -
    const uint16_t kMitsubishi136StateLength
    Definition: IRremoteESP8266.h:1072
    -
    const uint8_t kMitsubishi136SwingVHigh
    Definition: ir_Mitsubishi.h:156
    -
    const uint8_t kMitsubishiAcCool
    Definition: ir_Mitsubishi.h:94
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Mitsubishi.cpp:705
    -
    const uint8_t kMitsubishiAcWideVaneWide
    Definition: ir_Mitsubishi.h:117
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Mitsubishi.cpp:777
    -
    const uint8_t kMitsubishi112SwingHWide
    Definition: ir_Mitsubishi.h:221
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Mitsubishi.cpp:965
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Mitsubishi.cpp:1531
    -
    const uint8_t kMitsubishi112Dry
    Definition: ir_Mitsubishi.h:199
    -
    Native representation of a Mitsubishi 136-bit A/C message.
    Definition: ir_Mitsubishi.h:125
    -
    const uint8_t kMitsubishiAcWideVaneLeft
    Definition: ir_Mitsubishi.h:113
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Mitsubishi.cpp:978
    -
    const uint8_t kMitsubishi136SwingVHighest
    Definition: ir_Mitsubishi.h:157
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Mitsubishi.cpp:972
    -
    const uint8_t kMitsubishiAcWideVaneLeftMax
    Definition: ir_Mitsubishi.h:112
    -
    void setTimer(const uint8_t timer)
    Set the timers active setting of the A/C.
    Definition: ir_Mitsubishi.cpp:603
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t pad[5]
    Definition: ir_Mitsubishi.h:129
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Mitsubishi.cpp:447
    -
    uint8_t SwingV
    Definition: ir_Mitsubishi.h:142
    -
    const uint16_t kMitsubishi112StateLength
    Definition: IRremoteESP8266.h:1075
    -
    const uint8_t kMitsubishi112MaxTemp
    Definition: ir_Mitsubishi.h:202
    -
    static bool validChecksum(const uint8_t *data, const uint16_t len=kMitsubishi136StateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Mitsubishi.cpp:928
    -
    uint8_t WideVane
    Definition: ir_Mitsubishi.h:69
    -
    const uint8_t kMitsubishiAcDry
    Definition: ir_Mitsubishi.h:95
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Mitsubishi.cpp:1016
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Multibrackets_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Multibrackets_8cpp.html deleted file mode 100644 index ce9f031d1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Multibrackets_8cpp.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Multibrackets.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Multibrackets.cpp File Reference
    -
    -
    - -

    Support for Multibrackets protocols. -More...

    - - - - - - - - - - - - -

    -Variables

    const uint16_t kMultibracketsTick = 5000
     
    const uint16_t kMultibracketsHdrMark = 3 * kMultibracketsTick
     
    const uint16_t kMultibracketsFooterSpace = 6 * kMultibracketsTick
     
    const uint8_t kMultibracketsTolerance = 5
     
    const uint16_t kMultibracketsFreq = 38000
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMultibracketsFooterSpace

    - -
    -
    - - - - -
    const uint16_t kMultibracketsFooterSpace = 6 * kMultibracketsTick
    -
    - -
    -
    - -

    ◆ kMultibracketsFreq

    - -
    -
    - - - - -
    const uint16_t kMultibracketsFreq = 38000
    -
    - -
    -
    - -

    ◆ kMultibracketsHdrMark

    - -
    -
    - - - - -
    const uint16_t kMultibracketsHdrMark = 3 * kMultibracketsTick
    -
    - -
    -
    - -

    ◆ kMultibracketsTick

    - -
    -
    - - - - -
    const uint16_t kMultibracketsTick = 5000
    -
    - -
    -
    - -

    ◆ kMultibracketsTolerance

    - -
    -
    - - - - -
    const uint8_t kMultibracketsTolerance = 5
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8cpp.html deleted file mode 100644 index 03eb74e57..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8cpp.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_NEC.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_NEC.cpp File Reference
    -
    -
    - -

    Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    -

    Detailed Description

    -

    Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.

    -
    See also
    http://www.sbprojects.net/knowledge/ir/nec.php
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h.html deleted file mode 100644 index 3dfefe2e9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h.html +++ /dev/null @@ -1,642 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_NEC.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_NEC.h File Reference
    -
    -
    - -

    Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kNecTick = 560
     
    const uint16_t kNecHdrMarkTicks = 16
     
    const uint16_t kNecHdrMark = kNecHdrMarkTicks * kNecTick
     
    const uint16_t kNecHdrSpaceTicks = 8
     
    const uint16_t kNecHdrSpace = kNecHdrSpaceTicks * kNecTick
     
    const uint16_t kNecBitMarkTicks = 1
     
    const uint16_t kNecBitMark = kNecBitMarkTicks * kNecTick
     
    const uint16_t kNecOneSpaceTicks = 3
     
    const uint16_t kNecOneSpace = kNecOneSpaceTicks * kNecTick
     
    const uint16_t kNecZeroSpaceTicks = 1
     
    const uint16_t kNecZeroSpace = kNecZeroSpaceTicks * kNecTick
     
    const uint16_t kNecRptSpaceTicks = 4
     
    const uint16_t kNecRptSpace = kNecRptSpaceTicks * kNecTick
     
    const uint16_t kNecRptLength = 4
     
    const uint16_t kNecMinCommandLengthTicks = 193
     
    const uint32_t kNecMinCommandLength = kNecMinCommandLengthTicks * kNecTick
     
    const uint32_t kNecMinGap
     
    const uint16_t kNecMinGapTicks
     
    const uint32_t kAlokaPower = 0xFF609F
     
    const uint32_t kAlokaLedWhite = 0xFF906F
     
    const uint32_t kAlokaLedGreen = 0xFF9867
     
    const uint32_t kAlokaLedBlue = 0xFFD827
     
    const uint32_t kAlokaLedPinkRed = 0xFF8877
     
    const uint32_t kAlokaLedRed = 0xFFA857
     
    const uint32_t kAlokaLedLightGreen = 0xFFE817
     
    const uint32_t kAlokaLedMidBlue = 0xFF48B7
     
    const uint32_t kAlokaLedPink = 0xFF6897
     
    const uint32_t kAlokaLedOrange = 0xFFB24D
     
    const uint32_t kAlokaLedYellow = 0xFF00FF
     
    const uint32_t kAlokaNightFade = 0xFF50AF
     
    const uint32_t kAlokaNightTimer = 0xFF7887
     
    const uint32_t kAlokaLedRainbow = 0xFF708F
     
    const uint32_t kAlokaLedTreeGrow = 0xFF58A7
     
    -

    Detailed Description

    -

    Support for NEC (Renesas) protocols. NEC originally added from https://github.com/shirriff/Arduino-IRremote/.

    -
    See also
    http://www.sbprojects.net/knowledge/ir/nec.php
    -

    Variable Documentation

    - -

    ◆ kAlokaLedBlue

    - -
    -
    - - - - -
    const uint32_t kAlokaLedBlue = 0xFFD827
    -
    - -
    -
    - -

    ◆ kAlokaLedGreen

    - -
    -
    - - - - -
    const uint32_t kAlokaLedGreen = 0xFF9867
    -
    - -
    -
    - -

    ◆ kAlokaLedLightGreen

    - -
    -
    - - - - -
    const uint32_t kAlokaLedLightGreen = 0xFFE817
    -
    - -
    -
    - -

    ◆ kAlokaLedMidBlue

    - -
    -
    - - - - -
    const uint32_t kAlokaLedMidBlue = 0xFF48B7
    -
    - -
    -
    - -

    ◆ kAlokaLedOrange

    - -
    -
    - - - - -
    const uint32_t kAlokaLedOrange = 0xFFB24D
    -
    - -
    -
    - -

    ◆ kAlokaLedPink

    - -
    -
    - - - - -
    const uint32_t kAlokaLedPink = 0xFF6897
    -
    - -
    -
    - -

    ◆ kAlokaLedPinkRed

    - -
    -
    - - - - -
    const uint32_t kAlokaLedPinkRed = 0xFF8877
    -
    - -
    -
    - -

    ◆ kAlokaLedRainbow

    - -
    -
    - - - - -
    const uint32_t kAlokaLedRainbow = 0xFF708F
    -
    - -
    -
    - -

    ◆ kAlokaLedRed

    - -
    -
    - - - - -
    const uint32_t kAlokaLedRed = 0xFFA857
    -
    - -
    -
    - -

    ◆ kAlokaLedTreeGrow

    - -
    -
    - - - - -
    const uint32_t kAlokaLedTreeGrow = 0xFF58A7
    -
    - -
    -
    - -

    ◆ kAlokaLedWhite

    - -
    -
    - - - - -
    const uint32_t kAlokaLedWhite = 0xFF906F
    -
    - -
    -
    - -

    ◆ kAlokaLedYellow

    - -
    -
    - - - - -
    const uint32_t kAlokaLedYellow = 0xFF00FF
    -
    - -
    -
    - -

    ◆ kAlokaNightFade

    - -
    -
    - - - - -
    const uint32_t kAlokaNightFade = 0xFF50AF
    -
    - -
    -
    - -

    ◆ kAlokaNightTimer

    - -
    -
    - - - - -
    const uint32_t kAlokaNightTimer = 0xFF7887
    -
    - -
    -
    - -

    ◆ kAlokaPower

    - -
    -
    - - - - -
    const uint32_t kAlokaPower = 0xFF609F
    -
    - -
    -
    - -

    ◆ kNecBitMark

    - -
    -
    - - - - -
    const uint16_t kNecBitMark = kNecBitMarkTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kNecBitMarkTicks = 1
    -
    - -
    -
    - -

    ◆ kNecHdrMark

    - -
    -
    - - - - -
    const uint16_t kNecHdrMark = kNecHdrMarkTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kNecHdrMarkTicks = 16
    -
    - -
    -
    - -

    ◆ kNecHdrSpace

    - -
    -
    - - - - -
    const uint16_t kNecHdrSpace = kNecHdrSpaceTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNecHdrSpaceTicks = 8
    -
    - -
    -
    - -

    ◆ kNecMinCommandLength

    - -
    -
    - - - - -
    const uint32_t kNecMinCommandLength = kNecMinCommandLengthTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecMinCommandLengthTicks

    - -
    -
    - - - - -
    const uint16_t kNecMinCommandLengthTicks = 193
    -
    - -
    -
    - -

    ◆ kNecMinGap

    - -
    -
    - - - - -
    const uint32_t kNecMinGap
    -
    -
    - -

    ◆ kNecMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kNecMinGapTicks
    -
    -
    - -

    ◆ kNecOneSpace

    - -
    -
    - - - - -
    const uint16_t kNecOneSpace = kNecOneSpaceTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNecOneSpaceTicks = 3
    -
    - -
    -
    - -

    ◆ kNecRptLength

    - -
    -
    - - - - -
    const uint16_t kNecRptLength = 4
    -
    - -
    -
    - -

    ◆ kNecRptSpace

    - -
    -
    - - - - -
    const uint16_t kNecRptSpace = kNecRptSpaceTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecRptSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNecRptSpaceTicks = 4
    -
    - -
    -
    - -

    ◆ kNecTick

    - -
    -
    - - - - -
    const uint16_t kNecTick = 560
    -
    - -
    -
    - -

    ◆ kNecZeroSpace

    - -
    -
    - - - - -
    const uint16_t kNecZeroSpace = kNecZeroSpaceTicks * kNecTick
    -
    - -
    -
    - -

    ◆ kNecZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNecZeroSpaceTicks = 1
    -
    - -
    -
    -
    -
    const uint16_t kNecBitMarkTicks
    Definition: ir_NEC.h:30
    -
    const uint16_t kNecHdrSpace
    Definition: ir_NEC.h:29
    -
    const uint16_t kNecBitMark
    Definition: ir_NEC.h:31
    -
    const uint32_t kNecMinCommandLength
    Definition: ir_NEC.h:40
    -
    const uint16_t kNecOneSpace
    Definition: ir_NEC.h:33
    -
    const uint16_t kNecMinCommandLengthTicks
    Definition: ir_NEC.h:39
    -
    const uint16_t kNecOneSpaceTicks
    Definition: ir_NEC.h:32
    -
    const uint16_t kNecHdrMarkTicks
    Definition: ir_NEC.h:26
    -
    const uint16_t kNECBits
    Definition: IRremoteESP8266.h:1087
    -
    const uint16_t kNecHdrMark
    Definition: ir_NEC.h:27
    -
    const uint16_t kNecHdrSpaceTicks
    Definition: ir_NEC.h:28
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h_source.html deleted file mode 100644 index 0f0844e08..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__NEC_8h_source.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_NEC.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_NEC.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2009 Ken Shirriff
    -
    2 // Copyright 2017, 2018 David Conran
    -
    3 
    -
    8 
    -
    9 // Supports:
    -
    10 // Brand: Yamaha, Model: RAV561 remote
    -
    11 // Brand: Yamaha, Model: RXV585B A/V Receiver
    -
    12 // Brand: Aloka, Model: SleepyLights LED Lamp
    -
    13 // Brand: Toshiba, Model: 42TL838 LCD TV
    -
    14 // Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C
    -
    15 // Brand: Duux, Model: YJ-A081 TR Remote
    -
    16 // Brand: Silan Microelectronics, Model: SC6121-001 IC
    -
    17 
    -
    18 #ifndef IR_NEC_H_
    -
    19 #define IR_NEC_H_
    -
    20 
    -
    21 #include <stdint.h>
    -
    22 #include "IRremoteESP8266.h"
    -
    23 
    -
    24 // Constants
    -
    25 const uint16_t kNecTick = 560;
    -
    26 const uint16_t kNecHdrMarkTicks = 16;
    - -
    28 const uint16_t kNecHdrSpaceTicks = 8;
    - -
    30 const uint16_t kNecBitMarkTicks = 1;
    - -
    32 const uint16_t kNecOneSpaceTicks = 3;
    - -
    34 const uint16_t kNecZeroSpaceTicks = 1;
    - -
    36 const uint16_t kNecRptSpaceTicks = 4;
    - -
    38 const uint16_t kNecRptLength = 4;
    -
    39 const uint16_t kNecMinCommandLengthTicks = 193;
    - -
    41 const uint32_t kNecMinGap =
    - - -
    44  kNecBitMark);
    -
    45 const uint16_t kNecMinGapTicks =
    - - - -
    49 
    -
    50 // IR codes and structure for kids ALOKA SleepyLights LED Lamp.
    -
    51 // https://aloka-designs.com/
    -
    52 // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1004
    -
    53 //
    -
    54 // May be useful for someone wanting to control the lamp.
    -
    55 //
    -
    56 // The lamp is toggled On and Off with the same power button.
    -
    57 // The colour, when selected, is the brightest and there are 4 levels of
    -
    58 // brightness that decrease on each send of the colour. A fifth send of the
    -
    59 // colour resets to brightest again.
    -
    60 //
    -
    61 // Remote buttons defined left to right, top line to bottom line on the remote.
    -
    62 const uint32_t kAlokaPower = 0xFF609F;
    -
    63 const uint32_t kAlokaLedWhite = 0xFF906F;
    -
    64 const uint32_t kAlokaLedGreen = 0xFF9867;
    -
    65 const uint32_t kAlokaLedBlue = 0xFFD827;
    -
    66 const uint32_t kAlokaLedPinkRed = 0xFF8877;
    -
    67 const uint32_t kAlokaLedRed = 0xFFA857;
    -
    68 const uint32_t kAlokaLedLightGreen = 0xFFE817;
    -
    69 const uint32_t kAlokaLedMidBlue = 0xFF48B7;
    -
    70 const uint32_t kAlokaLedPink = 0xFF6897;
    -
    71 const uint32_t kAlokaLedOrange = 0xFFB24D;
    -
    72 const uint32_t kAlokaLedYellow = 0xFF00FF;
    -
    73 const uint32_t kAlokaNightFade = 0xFF50AF;
    -
    74 const uint32_t kAlokaNightTimer = 0xFF7887;
    -
    75 const uint32_t kAlokaLedRainbow = 0xFF708F;
    -
    76 // Didn't have a better description for it...
    -
    77 const uint32_t kAlokaLedTreeGrow = 0xFF58A7;
    -
    78 #endif // IR_NEC_H_
    -
    -
    const uint32_t kAlokaLedWhite
    Definition: ir_NEC.h:63
    -
    const uint16_t kNecBitMarkTicks
    Definition: ir_NEC.h:30
    -
    const uint16_t kNecHdrSpace
    Definition: ir_NEC.h:29
    -
    const uint16_t kNecBitMark
    Definition: ir_NEC.h:31
    -
    const uint32_t kNecMinCommandLength
    Definition: ir_NEC.h:40
    -
    const uint16_t kNecZeroSpaceTicks
    Definition: ir_NEC.h:34
    -
    const uint32_t kAlokaLedBlue
    Definition: ir_NEC.h:65
    -
    const uint32_t kAlokaLedLightGreen
    Definition: ir_NEC.h:68
    -
    const uint16_t kNecOneSpace
    Definition: ir_NEC.h:33
    -
    const uint32_t kAlokaNightTimer
    Definition: ir_NEC.h:74
    -
    const uint16_t kNecMinCommandLengthTicks
    Definition: ir_NEC.h:39
    -
    const uint16_t kNecZeroSpace
    Definition: ir_NEC.h:35
    -
    const uint16_t kNecOneSpaceTicks
    Definition: ir_NEC.h:32
    -
    const uint16_t kNecRptSpace
    Definition: ir_NEC.h:37
    -
    const uint16_t kNecHdrMarkTicks
    Definition: ir_NEC.h:26
    -
    const uint32_t kAlokaNightFade
    Definition: ir_NEC.h:73
    - -
    const uint16_t kNecRptLength
    Definition: ir_NEC.h:38
    -
    const uint32_t kAlokaLedPink
    Definition: ir_NEC.h:70
    -
    const uint16_t kNecMinGapTicks
    Definition: ir_NEC.h:45
    -
    const uint32_t kAlokaLedPinkRed
    Definition: ir_NEC.h:66
    -
    const uint16_t kNECBits
    Definition: IRremoteESP8266.h:1087
    -
    const uint32_t kAlokaLedRed
    Definition: ir_NEC.h:67
    -
    const uint32_t kAlokaLedTreeGrow
    Definition: ir_NEC.h:77
    -
    const uint16_t kNecHdrMark
    Definition: ir_NEC.h:27
    -
    const uint16_t kNecRptSpaceTicks
    Definition: ir_NEC.h:36
    -
    const uint32_t kAlokaLedOrange
    Definition: ir_NEC.h:71
    -
    const uint32_t kNecMinGap
    Definition: ir_NEC.h:41
    -
    const uint32_t kAlokaPower
    Definition: ir_NEC.h:62
    -
    const uint32_t kAlokaLedMidBlue
    Definition: ir_NEC.h:69
    -
    const uint32_t kAlokaLedRainbow
    Definition: ir_NEC.h:75
    -
    const uint32_t kAlokaLedYellow
    Definition: ir_NEC.h:72
    -
    const uint16_t kNecHdrSpaceTicks
    Definition: ir_NEC.h:28
    -
    const uint16_t kNecTick
    Definition: ir_NEC.h:25
    -
    const uint32_t kAlokaLedGreen
    Definition: ir_NEC.h:64
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8cpp.html deleted file mode 100644 index 3e41c0d8f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8cpp.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Neoclima.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Neoclima.cpp File Reference
    -
    -
    - -

    Support for Neoclima protocols. Analysis by crankyoldgit, AndreyShpilevoy, & griffisc306 Code by crankyoldgit. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kNeoclimaHdrMark = 6112
     
    const uint16_t kNeoclimaHdrSpace = 7391
     
    const uint16_t kNeoclimaBitMark = 537
     
    const uint16_t kNeoclimaOneSpace = 1651
     
    const uint16_t kNeoclimaZeroSpace = 571
     
    const uint32_t kNeoclimaMinGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Support for Neoclima protocols. Analysis by crankyoldgit, AndreyShpilevoy, & griffisc306 Code by crankyoldgit.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/764
    -
    -https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/1260
    -

    Variable Documentation

    - -

    ◆ kNeoclimaBitMark

    - -
    -
    - - - - -
    const uint16_t kNeoclimaBitMark = 537
    -
    - -
    -
    - -

    ◆ kNeoclimaHdrMark

    - -
    -
    - - - - -
    const uint16_t kNeoclimaHdrMark = 6112
    -
    - -
    -
    - -

    ◆ kNeoclimaHdrSpace

    - -
    -
    - - - - -
    const uint16_t kNeoclimaHdrSpace = 7391
    -
    - -
    -
    - -

    ◆ kNeoclimaMinGap

    - -
    -
    - - - - -
    const uint32_t kNeoclimaMinGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kNeoclimaOneSpace

    - -
    -
    - - - - -
    const uint16_t kNeoclimaOneSpace = 1651
    -
    - -
    -
    - -

    ◆ kNeoclimaZeroSpace

    - -
    -
    - - - - -
    const uint16_t kNeoclimaZeroSpace = 571
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h.html deleted file mode 100644 index 85a11028c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h.html +++ /dev/null @@ -1,651 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Neoclima.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Neoclima.h File Reference
    -
    -
    - -

    Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  NeoclimaProtocol
     Native representation of a Neoclima A/C message. More...
     
    class  IRNeoclimaAc
     Class for handling detailed Neoclima A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kNeoclimaButtonPower = 0x00
     
    const uint8_t kNeoclimaButtonMode = 0x01
     
    const uint8_t kNeoclimaButtonTempUp = 0x02
     
    const uint8_t kNeoclimaButtonTempDown = 0x03
     
    const uint8_t kNeoclimaButtonSwing = 0x04
     
    const uint8_t kNeoclimaButtonFanSpeed = 0x05
     
    const uint8_t kNeoclimaButtonAirFlow = 0x07
     
    const uint8_t kNeoclimaButtonHold = 0x08
     
    const uint8_t kNeoclimaButtonSleep = 0x09
     
    const uint8_t kNeoclimaButtonTurbo = 0x0A
     
    const uint8_t kNeoclimaButtonLight = 0x0B
     
    const uint8_t kNeoclimaButtonEcono = 0x0D
     
    const uint8_t kNeoclimaButtonEye = 0x0E
     
    const uint8_t kNeoclimaButtonFollow = 0x13
     
    const uint8_t kNeoclimaButtonIon = 0x14
     
    const uint8_t kNeoclimaButtonFresh = 0x15
     
    const uint8_t kNeoclimaButton8CHeat = 0x1D
     
    const uint8_t kNeoclimaButtonTempUnit = 0x1E
     
    const uint8_t kNeoclimaSwingVOn = 0b01
     
    const uint8_t kNeoclimaSwingVOff = 0b10
     
    const uint8_t kNeoclimaFanAuto = 0b00
     
    const uint8_t kNeoclimaFanHigh = 0b01
     
    const uint8_t kNeoclimaFanMed = 0b10
     
    const uint8_t kNeoclimaFanLow = 0b11
     
    const uint8_t kNeoclimaFollowMe = 0x5D
     
    const uint8_t kNeoclimaMinTempC = 16
     
    const uint8_t kNeoclimaMaxTempC = 32
     
    const uint8_t kNeoclimaMinTempF = 61
     
    const uint8_t kNeoclimaMaxTempF = 90
     
    const uint8_t kNeoclimaAuto = 0b000
     
    const uint8_t kNeoclimaCool = 0b001
     
    const uint8_t kNeoclimaDry = 0b010
     
    const uint8_t kNeoclimaFan = 0b011
     
    const uint8_t kNeoclimaHeat = 0b100
     
    -

    Detailed Description

    -

    Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/764
    -
    -https://drive.google.com/file/d/1kjYk4zS9NQcMQhFkak-L4mp4UuaAIesW/view
    -

    Variable Documentation

    - -

    ◆ kNeoclimaAuto

    - -
    -
    - - - - -
    const uint8_t kNeoclimaAuto = 0b000
    -
    - -
    -
    - -

    ◆ kNeoclimaButton8CHeat

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButton8CHeat = 0x1D
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonAirFlow

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonAirFlow = 0x07
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonEcono

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonEcono = 0x0D
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonEye

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonEye = 0x0E
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonFanSpeed

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonFanSpeed = 0x05
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonFollow

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonFollow = 0x13
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonFresh

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonFresh = 0x15
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonHold

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonHold = 0x08
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonIon

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonIon = 0x14
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonLight

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonLight = 0x0B
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonMode

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonMode = 0x01
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonPower

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonPower = 0x00
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonSleep

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonSleep = 0x09
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonSwing

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonSwing = 0x04
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonTempDown

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonTempDown = 0x03
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonTempUnit

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonTempUnit = 0x1E
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonTempUp

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonTempUp = 0x02
    -
    - -
    -
    - -

    ◆ kNeoclimaButtonTurbo

    - -
    -
    - - - - -
    const uint8_t kNeoclimaButtonTurbo = 0x0A
    -
    - -
    -
    - -

    ◆ kNeoclimaCool

    - -
    -
    - - - - -
    const uint8_t kNeoclimaCool = 0b001
    -
    - -
    -
    - -

    ◆ kNeoclimaDry

    - -
    -
    - - - - -
    const uint8_t kNeoclimaDry = 0b010
    -
    - -
    -
    - -

    ◆ kNeoclimaFan

    - -
    -
    - - - - -
    const uint8_t kNeoclimaFan = 0b011
    -
    - -
    -
    - -

    ◆ kNeoclimaFanAuto

    - -
    -
    - - - - -
    const uint8_t kNeoclimaFanAuto = 0b00
    -
    - -
    -
    - -

    ◆ kNeoclimaFanHigh

    - -
    -
    - - - - -
    const uint8_t kNeoclimaFanHigh = 0b01
    -
    - -
    -
    - -

    ◆ kNeoclimaFanLow

    - -
    -
    - - - - -
    const uint8_t kNeoclimaFanLow = 0b11
    -
    - -
    -
    - -

    ◆ kNeoclimaFanMed

    - -
    -
    - - - - -
    const uint8_t kNeoclimaFanMed = 0b10
    -
    - -
    -
    - -

    ◆ kNeoclimaFollowMe

    - -
    -
    - - - - -
    const uint8_t kNeoclimaFollowMe = 0x5D
    -
    - -
    -
    - -

    ◆ kNeoclimaHeat

    - -
    -
    - - - - -
    const uint8_t kNeoclimaHeat = 0b100
    -
    - -
    -
    - -

    ◆ kNeoclimaMaxTempC

    - -
    -
    - - - - -
    const uint8_t kNeoclimaMaxTempC = 32
    -
    - -
    -
    - -

    ◆ kNeoclimaMaxTempF

    - -
    -
    - - - - -
    const uint8_t kNeoclimaMaxTempF = 90
    -
    - -
    -
    - -

    ◆ kNeoclimaMinTempC

    - -
    -
    - - - - -
    const uint8_t kNeoclimaMinTempC = 16
    -
    - -
    -
    - -

    ◆ kNeoclimaMinTempF

    - -
    -
    - - - - -
    const uint8_t kNeoclimaMinTempF = 61
    -
    - -
    -
    - -

    ◆ kNeoclimaSwingVOff

    - -
    -
    - - - - -
    const uint8_t kNeoclimaSwingVOff = 0b10
    -
    - -
    -
    - -

    ◆ kNeoclimaSwingVOn

    - -
    -
    - - - - -
    const uint8_t kNeoclimaSwingVOn = 0b01
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h_source.html deleted file mode 100644 index 823187cdd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Neoclima_8h_source.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Neoclima.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Neoclima.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 David Conran
    -
    2 
    -
    8 
    -
    9 // Supports:
    -
    10 // Brand: Neoclima, Model: NS-09AHTI A/C
    -
    11 // Brand: Neoclima, Model: ZH/TY-01 remote
    -
    12 // Brand: Soleus Air, Model: TTWM1-10-01 A/C
    -
    13 // Brand: Soleus Air, Model: ZCF/TL-05 remote
    -
    14 
    -
    15 #ifndef IR_NEOCLIMA_H_
    -
    16 #define IR_NEOCLIMA_H_
    -
    17 
    -
    18 #define __STDC_LIMIT_MACROS
    -
    19 #include <stdint.h>
    -
    20 #ifndef UNIT_TEST
    -
    21 #include <Arduino.h>
    -
    22 #endif
    -
    23 #include "IRremoteESP8266.h"
    -
    24 #include "IRsend.h"
    -
    25 #ifdef UNIT_TEST
    -
    26 #include "IRsend_test.h"
    -
    27 #endif
    -
    28 
    - - -
    32  struct {
    -
    33  // Byte 0
    -
    34  uint8_t :8;
    -
    35  // Byte 1
    -
    36  uint8_t :1;
    -
    37  uint8_t CHeat :1;
    -
    38  uint8_t Ion :1;
    -
    39  uint8_t :5;
    -
    40  // Byte 2
    -
    41  uint8_t :8;
    -
    42  // Byte 3
    -
    43  uint8_t Light :1;
    -
    44  uint8_t :1;
    -
    45  uint8_t Hold :1;
    -
    46  uint8_t Turbo :1;
    -
    47  uint8_t Econo :1;
    -
    48  uint8_t :1;
    -
    49  uint8_t Eye :1;
    -
    50  uint8_t :1;
    -
    51  // Byte 4
    -
    52  uint8_t :8;
    -
    53  // Byte 5
    -
    54  uint8_t Button :5;
    -
    55  uint8_t :2;
    -
    56  uint8_t Fresh :1;
    -
    57  // Byte 6
    -
    58  uint8_t :8;
    -
    59  // Byte 7
    -
    60  uint8_t Sleep :1;
    -
    61  uint8_t Power :1;
    -
    62  uint8_t SwingV :2;
    -
    63  uint8_t SwingH :1;
    -
    64  uint8_t Fan :2;
    -
    65  uint8_t UseFah :1;
    -
    66  // Byte 8
    -
    67  uint8_t Follow :8;
    -
    68  // Byte 9
    -
    69  uint8_t Temp :5;
    -
    70  uint8_t Mode :3;
    -
    71  // Byte 10
    -
    72  uint8_t :8;
    -
    73  // Byte 11
    -
    74  uint8_t Sum :8;
    -
    75  };
    -
    76 };
    -
    77 
    -
    78 // Constants
    -
    79 
    -
    80 const uint8_t kNeoclimaButtonPower = 0x00;
    -
    81 const uint8_t kNeoclimaButtonMode = 0x01;
    -
    82 const uint8_t kNeoclimaButtonTempUp = 0x02;
    -
    83 const uint8_t kNeoclimaButtonTempDown = 0x03;
    -
    84 const uint8_t kNeoclimaButtonSwing = 0x04;
    -
    85 const uint8_t kNeoclimaButtonFanSpeed = 0x05;
    -
    86 const uint8_t kNeoclimaButtonAirFlow = 0x07;
    -
    87 const uint8_t kNeoclimaButtonHold = 0x08;
    -
    88 const uint8_t kNeoclimaButtonSleep = 0x09;
    -
    89 const uint8_t kNeoclimaButtonTurbo = 0x0A;
    -
    90 const uint8_t kNeoclimaButtonLight = 0x0B;
    -
    91 const uint8_t kNeoclimaButtonEcono = 0x0D;
    -
    92 const uint8_t kNeoclimaButtonEye = 0x0E;
    -
    93 const uint8_t kNeoclimaButtonFollow = 0x13;
    -
    94 const uint8_t kNeoclimaButtonIon = 0x14;
    -
    95 const uint8_t kNeoclimaButtonFresh = 0x15;
    -
    96 const uint8_t kNeoclimaButton8CHeat = 0x1D;
    -
    97 const uint8_t kNeoclimaButtonTempUnit = 0x1E;
    -
    98 
    -
    99 const uint8_t kNeoclimaSwingVOn = 0b01;
    -
    100 const uint8_t kNeoclimaSwingVOff = 0b10;
    -
    101 const uint8_t kNeoclimaFanAuto = 0b00;
    -
    102 const uint8_t kNeoclimaFanHigh = 0b01;
    -
    103 const uint8_t kNeoclimaFanMed = 0b10;
    -
    104 const uint8_t kNeoclimaFanLow = 0b11;
    -
    105 
    -
    106 const uint8_t kNeoclimaFollowMe = 0x5D; // Also 0x5F
    -
    107 
    -
    108 const uint8_t kNeoclimaMinTempC = 16; // 16C
    -
    109 const uint8_t kNeoclimaMaxTempC = 32; // 32C
    -
    110 const uint8_t kNeoclimaMinTempF = 61; // 61F
    -
    111 const uint8_t kNeoclimaMaxTempF = 90; // 90F
    -
    112 const uint8_t kNeoclimaAuto = 0b000;
    -
    113 const uint8_t kNeoclimaCool = 0b001;
    -
    114 const uint8_t kNeoclimaDry = 0b010;
    -
    115 const uint8_t kNeoclimaFan = 0b011;
    -
    116 const uint8_t kNeoclimaHeat = 0b100;
    -
    117 
    -
    118 // Classes
    - -
    121  public:
    -
    122  explicit IRNeoclimaAc(const uint16_t pin, const bool inverted = false,
    -
    123  const bool use_modulation = true);
    -
    124  void stateReset(void);
    -
    125 #if SEND_NEOCLIMA
    -
    126  void send(const uint16_t repeat = kNeoclimaMinRepeat);
    -
    131  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    132 #endif // SEND_NEOCLIMA
    -
    133  void begin(void);
    -
    134  void setButton(const uint8_t button);
    -
    135  uint8_t getButton(void) const;
    -
    136  void on(void);
    -
    137  void off(void);
    -
    138  void setPower(const bool on);
    -
    139  bool getPower(void) const;
    -
    140  void setMode(const uint8_t mode);
    -
    141  uint8_t getMode(void) const;
    -
    142  void setTemp(const uint8_t temp, const bool celsius = true);
    -
    143  uint8_t getTemp(void) const;
    -
    144  void setFan(const uint8_t speed);
    -
    145  uint8_t getFan(void) const;
    -
    146  void setSwingV(const bool on);
    -
    147  bool getSwingV(void) const;
    -
    148  void setSwingH(const bool on);
    -
    149  bool getSwingH(void) const;
    -
    150  void setSleep(const bool on);
    -
    151  bool getSleep(void) const;
    -
    152  void setTurbo(const bool on);
    -
    153  bool getTurbo(void) const;
    -
    154  void setEcono(const bool on);
    -
    155  bool getEcono(void) const;
    -
    156  void setFresh(const bool on);
    -
    157  bool getFresh(void) const;
    -
    158  void setHold(const bool on);
    -
    159  bool getHold(void) const;
    -
    160  void setIon(const bool on);
    -
    161  bool getIon(void) const;
    -
    162  void setLight(const bool on);
    -
    163  bool getLight(void) const;
    -
    164  void set8CHeat(const bool on);
    -
    165  bool get8CHeat(void) const;
    -
    166  void setEye(const bool on);
    -
    167  bool getEye(void) const;
    -
    168  bool getTempUnits(void) const;
    -
    169  // DISABLED: See TODO in ir_Neoclima.cpp
    -
    170  // void setFollow(const bool on);
    -
    171  bool getFollow(void) const;
    -
    172  uint8_t* getRaw(void);
    -
    173  void setRaw(const uint8_t new_code[],
    -
    174  const uint16_t length = kNeoclimaStateLength);
    -
    175  static bool validChecksum(const uint8_t state[],
    -
    176  const uint16_t length = kNeoclimaStateLength);
    -
    177  static uint8_t calcChecksum(const uint8_t state[],
    -
    178  const uint16_t length = kNeoclimaStateLength);
    -
    179  String toString(void) const;
    -
    180  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    181  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    182  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    183  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    184  stdAc::state_t toCommon(void) const;
    -
    185 #ifndef UNIT_TEST
    -
    186 
    -
    187  private:
    - -
    189 #else // UNIT_TEST
    -
    190  IRsendTest _irsend;
    -
    192 #endif // UNIT_TEST
    - -
    195  void checksum(const uint16_t length = kNeoclimaStateLength);
    -
    196 };
    -
    197 
    -
    198 #endif // IR_NEOCLIMA_H_
    -
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Neoclima.cpp:178
    -
    uint8_t Hold
    Definition: ir_Neoclima.h:45
    -
    const uint8_t kNeoclimaFanHigh
    Definition: ir_Neoclima.h:102
    -
    bool getEcono(void) const
    Get the Economy (Energy Saver) setting of the A/C.
    Definition: ir_Neoclima.cpp:375
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Neoclima.cpp:305
    -
    const uint8_t kNeoclimaMinTempC
    Definition: ir_Neoclima.h:108
    -
    const uint8_t kNeoclimaButtonFanSpeed
    Definition: ir_Neoclima.h:85
    -
    const uint8_t kNeoclimaButtonTurbo
    Definition: ir_Neoclima.h:89
    -
    const uint8_t kNeoclimaFollowMe
    Definition: ir_Neoclima.h:106
    -
    NeoclimaProtocol _
    Definition: ir_Neoclima.h:194
    -
    uint8_t Mode
    Definition: ir_Neoclima.h:70
    -
    const uint8_t kNeoclimaMaxTempC
    Definition: ir_Neoclima.h:109
    -
    uint8_t raw[kNeoclimaStateLength]
    State of the remote in code.
    Definition: ir_Neoclima.h:31
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t SwingV
    Definition: ir_Neoclima.h:62
    -
    const uint8_t kNeoclimaDry
    Definition: ir_Neoclima.h:114
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Neoclima.cpp:83
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Neoclima.h:131
    -
    uint8_t SwingH
    Definition: ir_Neoclima.h:63
    -
    void set8CHeat(const bool on)
    Set the 8°C Heat setting of the A/C.
    Definition: ir_Neoclima.cpp:437
    -
    const uint8_t kNeoclimaButtonEye
    Definition: ir_Neoclima.h:92
    -
    const uint8_t kNeoclimaButtonPower
    Definition: ir_Neoclima.h:80
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Neoclima.cpp:263
    -
    const uint8_t kNeoclimaSwingVOn
    Definition: ir_Neoclima.h:99
    -
    const uint8_t kNeoclimaButtonMode
    Definition: ir_Neoclima.h:81
    -
    const uint16_t kNeoclimaStateLength
    Definition: IRremoteESP8266.h:1088
    -
    Native representation of a Neoclima A/C message.
    Definition: ir_Neoclima.h:30
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Neoclima.cpp:284
    -
    void setHold(const bool on)
    Set the Hold setting of the A/C.
    Definition: ir_Neoclima.cpp:394
    -
    const uint8_t kNeoclimaMinTempF
    Definition: ir_Neoclima.h:110
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kNeoclimaStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Neoclima.cpp:124
    -
    const uint8_t kNeoclimaButtonHold
    Definition: ir_Neoclima.h:87
    -
    uint8_t Power
    Definition: ir_Neoclima.h:61
    -
    void setEcono(const bool on)
    Set the Economy (Energy Saver) setting of the A/C.
    Definition: ir_Neoclima.cpp:368
    -
    uint8_t Eye
    Definition: ir_Neoclima.h:49
    -
    void setTemp(const uint8_t temp, const bool celsius=true)
    Set the temperature.
    Definition: ir_Neoclima.cpp:239
    - -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Neoclima.cpp:323
    -
    bool getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Neoclima.cpp:362
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Neoclima.cpp:206
    -
    const uint8_t kNeoclimaAuto
    Definition: ir_Neoclima.h:112
    -
    const uint8_t kNeoclimaMaxTempF
    Definition: ir_Neoclima.h:111
    -
    void setLight(const bool on)
    Set the Light(LED display) setting of the A/C.
    Definition: ir_Neoclima.cpp:420
    -
    const uint8_t kNeoclimaFan
    Definition: ir_Neoclima.h:115
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    bool get8CHeat(void) const
    Get the 8°C Heat setting of the A/C.
    Definition: ir_Neoclima.cpp:444
    -
    uint8_t Sleep
    Definition: ir_Neoclima.h:60
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Neoclima.cpp:116
    -
    const uint8_t kNeoclimaFanAuto
    Definition: ir_Neoclima.h:101
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t Econo
    Definition: ir_Neoclima.h:47
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    bool getEye(void) const
    Get the Eye (Sensor) setting of the A/C.
    Definition: ir_Neoclima.cpp:457
    -
    uint8_t getButton(void) const
    Get the Button/Command setting of the A/C.
    Definition: ir_Neoclima.cpp:159
    -
    bool getIon(void) const
    Get the Ion (filter) setting of the A/C.
    Definition: ir_Neoclima.cpp:414
    -
    const uint8_t kNeoclimaButtonFresh
    Definition: ir_Neoclima.h:95
    -
    uint8_t Turbo
    Definition: ir_Neoclima.h:46
    -
    const uint8_t kNeoclimaButtonEcono
    Definition: ir_Neoclima.h:91
    -
    uint8_t Temp
    Definition: ir_Neoclima.h:69
    -
    const uint8_t kNeoclimaButtonAirFlow
    Definition: ir_Neoclima.h:86
    - -
    uint8_t Button
    Definition: ir_Neoclima.h:54
    -
    uint8_t CHeat
    Definition: ir_Neoclima.h:37
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Neoclima.cpp:70
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Neoclima.cpp:291
    -
    const uint8_t kNeoclimaButtonTempDown
    Definition: ir_Neoclima.h:83
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Neoclima.cpp:77
    -
    const uint8_t kNeoclimaButtonLight
    Definition: ir_Neoclima.h:90
    -
    void setIon(const bool on)
    Set the Ion (filter) setting of the A/C.
    Definition: ir_Neoclima.cpp:407
    -
    bool getLight(void) const
    Get the Light (LED display) setting of the A/C.
    Definition: ir_Neoclima.cpp:427
    -
    uint8_t Follow
    Definition: ir_Neoclima.h:67
    -
    const uint8_t kNeoclimaButtonSwing
    Definition: ir_Neoclima.h:84
    -
    const uint8_t kNeoclimaButtonFollow
    Definition: ir_Neoclima.h:93
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Neoclima.h:188
    -
    const uint8_t kNeoclimaSwingVOff
    Definition: ir_Neoclima.h:100
    -
    bool getSwingV(void) const
    Get the vertical swing setting of the A/C.
    Definition: ir_Neoclima.cpp:336
    -
    void setSwingV(const bool on)
    Set the vertical swing setting of the A/C.
    Definition: ir_Neoclima.cpp:329
    -
    void setEye(const bool on)
    Set the Eye (Sensor) setting of the A/C.
    Definition: ir_Neoclima.cpp:450
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Neoclima.cpp:226
    -
    const uint8_t kNeoclimaButtonSleep
    Definition: ir_Neoclima.h:88
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Neoclima.cpp:486
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Neoclima.cpp:164
    -
    uint8_t UseFah
    Definition: ir_Neoclima.h:65
    -
    const uint8_t kNeoclimaFanMed
    Definition: ir_Neoclima.h:103
    -
    bool getFresh(void) const
    Get the Fresh (air) setting of the A/C.
    Definition: ir_Neoclima.cpp:388
    -
    const uint8_t kNeoclimaButtonTempUnit
    Definition: ir_Neoclima.h:97
    -
    void setFresh(const bool on)
    Set the Fresh (air) setting of the A/C.
    Definition: ir_Neoclima.cpp:381
    -
    bool getHold(void) const
    Get the Hold setting of the A/C.
    Definition: ir_Neoclima.cpp:401
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Neoclima.cpp:171
    -
    const uint8_t kNeoclimaCool
    Definition: ir_Neoclima.h:113
    -
    const uint8_t kNeoclimaButton8CHeat
    Definition: ir_Neoclima.h:96
    -
    uint8_t Ion
    Definition: ir_Neoclima.h:38
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Neoclima.cpp:255
    -
    bool getFollow(void) const
    Get the Follow Me setting of the A/C.
    Definition: ir_Neoclima.cpp:480
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Neoclima.cpp:213
    -
    const uint8_t kNeoclimaHeat
    Definition: ir_Neoclima.h:116
    -
    void setButton(const uint8_t button)
    Set the Button/Command pressed setting of the A/C.
    Definition: ir_Neoclima.cpp:130
    -
    const uint8_t kNeoclimaButtonIon
    Definition: ir_Neoclima.h:94
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Neoclima.cpp:514
    -
    uint8_t Sum
    Definition: ir_Neoclima.h:74
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Neoclima.cpp:184
    -
    const uint8_t kNeoclimaFanLow
    Definition: ir_Neoclima.h:104
    -
    void setTurbo(const bool on)
    Set the Turbo setting of the A/C.
    Definition: ir_Neoclima.cpp:355
    -
    bool getTempUnits(void) const
    Is the A/C unit using Fahrenheit or Celsius for temperature units.
    Definition: ir_Neoclima.cpp:463
    -
    uint8_t Light
    Definition: ir_Neoclima.h:43
    -
    bool getSwingH(void) const
    Get the horizontal swing (Air Flow) setting of the A/C.
    Definition: ir_Neoclima.cpp:349
    -
    void checksum(const uint16_t length=kNeoclimaStateLength)
    Calculate & update the checksum for the internal state.
    Definition: ir_Neoclima.cpp:101
    -
    void setSwingH(const bool on)
    Set the horizontal swing setting of the A/C.
    Definition: ir_Neoclima.cpp:342
    -
    void send(const uint16_t repeat=kNeoclimaMinRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Neoclima.cpp:109
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Neoclima.cpp:167
    -
    uint8_t Fan
    Definition: ir_Neoclima.h:64
    -
    uint8_t Fresh
    Definition: ir_Neoclima.h:56
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint16_t kNeoclimaMinRepeat
    Definition: IRremoteESP8266.h:1090
    -
    IRNeoclimaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Neoclima.cpp:63
    -
    Class for handling detailed Neoclima A/C messages.
    Definition: ir_Neoclima.h:120
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Neoclima.cpp:316
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kNeoclimaStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Neoclima.cpp:93
    -
    const uint8_t kNeoclimaButtonTempUp
    Definition: ir_Neoclima.h:82
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Nikai_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Nikai_8cpp.html deleted file mode 100644 index 95c82cd74..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Nikai_8cpp.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Nikai.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Nikai.cpp File Reference
    -
    -
    - -

    Nikai. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kNikaiTick = 500
     
    const uint16_t kNikaiHdrMarkTicks = 8
     
    const uint16_t kNikaiHdrMark = kNikaiHdrMarkTicks * kNikaiTick
     
    const uint16_t kNikaiHdrSpaceTicks = 8
     
    const uint16_t kNikaiHdrSpace = kNikaiHdrSpaceTicks * kNikaiTick
     
    const uint16_t kNikaiBitMarkTicks = 1
     
    const uint16_t kNikaiBitMark = kNikaiBitMarkTicks * kNikaiTick
     
    const uint16_t kNikaiOneSpaceTicks = 2
     
    const uint16_t kNikaiOneSpace = kNikaiOneSpaceTicks * kNikaiTick
     
    const uint16_t kNikaiZeroSpaceTicks = 4
     
    const uint16_t kNikaiZeroSpace = kNikaiZeroSpaceTicks * kNikaiTick
     
    const uint16_t kNikaiMinGapTicks = 17
     
    const uint16_t kNikaiMinGap = kNikaiMinGapTicks * kNikaiTick
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kNikaiBitMark

    - -
    -
    - - - - -
    const uint16_t kNikaiBitMark = kNikaiBitMarkTicks * kNikaiTick
    -
    - -
    -
    - -

    ◆ kNikaiBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kNikaiBitMarkTicks = 1
    -
    - -
    -
    - -

    ◆ kNikaiHdrMark

    - -
    -
    - - - - -
    const uint16_t kNikaiHdrMark = kNikaiHdrMarkTicks * kNikaiTick
    -
    - -
    -
    - -

    ◆ kNikaiHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kNikaiHdrMarkTicks = 8
    -
    - -
    -
    - -

    ◆ kNikaiHdrSpace

    - -
    -
    - - - - -
    const uint16_t kNikaiHdrSpace = kNikaiHdrSpaceTicks * kNikaiTick
    -
    - -
    -
    - -

    ◆ kNikaiHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNikaiHdrSpaceTicks = 8
    -
    - -
    -
    - -

    ◆ kNikaiMinGap

    - -
    -
    - - - - -
    const uint16_t kNikaiMinGap = kNikaiMinGapTicks * kNikaiTick
    -
    - -
    -
    - -

    ◆ kNikaiMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kNikaiMinGapTicks = 17
    -
    - -
    -
    - -

    ◆ kNikaiOneSpace

    - -
    -
    - - - - -
    const uint16_t kNikaiOneSpace = kNikaiOneSpaceTicks * kNikaiTick
    -
    - -
    -
    - -

    ◆ kNikaiOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNikaiOneSpaceTicks = 2
    -
    - -
    -
    - -

    ◆ kNikaiTick

    - -
    -
    - - - - -
    const uint16_t kNikaiTick = 500
    -
    - -
    -
    - -

    ◆ kNikaiZeroSpace

    - -
    -
    - - - - -
    const uint16_t kNikaiZeroSpace = kNikaiZeroSpaceTicks * kNikaiTick
    -
    - -
    -
    - -

    ◆ kNikaiZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kNikaiZeroSpaceTicks = 4
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8cpp.html deleted file mode 100644 index 490cbdfc8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8cpp.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Panasonic.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Panasonic.cpp File Reference
    -
    -
    - -

    Support for Panasonic protocols. Panasonic protocol originally added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post) -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kPanasonicHdrMark = 3456
     uSeconds. More...
     
    const uint16_t kPanasonicHdrSpace = 1728
     uSeconds. More...
     
    const uint16_t kPanasonicBitMark = 432
     uSeconds. More...
     
    const uint16_t kPanasonicOneSpace = 1296
     uSeconds. More...
     
    const uint16_t kPanasonicZeroSpace = 432
     uSeconds. More...
     
    const uint32_t kPanasonicMinCommandLength = 163296
     uSeconds. More...
     
    const uint16_t kPanasonicEndGap = 5000
     uSeconds. See #245 More...
     
    const uint32_t kPanasonicMinGap = 74736
     uSeconds. More...
     
    const uint16_t kPanasonicAcSectionGap = 10000
     uSeconds. More...
     
    const uint16_t kPanasonicAcSection1Length = 8
     
    const uint32_t kPanasonicAcMessageGap = kDefaultMessageGap
     
    const uint16_t kPanasonicAc32HdrMark = 3543
     uSeconds. More...
     
    const uint16_t kPanasonicAc32BitMark = 920
     uSeconds. More...
     
    const uint16_t kPanasonicAc32HdrSpace = 3450
     uSeconds. More...
     
    const uint16_t kPanasonicAc32OneSpace = 2575
     uSeconds. More...
     
    const uint16_t kPanasonicAc32ZeroSpace = 828
     uSeconds. More...
     
    const uint16_t kPanasonicAc32SectionGap = 13946
     uSeconds. More...
     
    const uint8_t kPanasonicAc32Sections = 2
     
    const uint8_t kPanasonicAc32BlocksPerSection = 2
     
    -

    Detailed Description

    -

    Support for Panasonic protocols. Panasonic protocol originally added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post)

    -
    See also
    Panasonic https://github.com/z3t0/Arduino-IRremote
    -
    -http://www.remotecentral.com/cgi-bin/mboard/rc-pronto/thread.cgi?2615
    -
    -Panasonic A/C support heavily influenced by https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp Panasonic A/C Clock & Timer support: Reverse Engineering by MikkelTb Code by crankyoldgit
    -

    Variable Documentation

    - -

    ◆ kPanasonicAc32BitMark

    - -
    -
    - - - - -
    const uint16_t kPanasonicAc32BitMark = 920
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicAc32BlocksPerSection

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32BlocksPerSection = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAc32HdrMark

    - -
    -
    - - - - -
    const uint16_t kPanasonicAc32HdrMark = 3543
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicAc32HdrSpace

    - -
    -
    - - - - -
    const uint16_t kPanasonicAc32HdrSpace = 3450
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicAc32OneSpace

    - -
    -
    - - - - -
    const uint16_t kPanasonicAc32OneSpace = 2575
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicAc32SectionGap

    - -
    -
    - - - - -
    const uint16_t kPanasonicAc32SectionGap = 13946
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicAc32Sections

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32Sections = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAc32ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kPanasonicAc32ZeroSpace = 828
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicAcMessageGap

    - -
    -
    - - - - -
    const uint32_t kPanasonicAcMessageGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kPanasonicAcSection1Length

    - -
    -
    - - - - -
    const uint16_t kPanasonicAcSection1Length = 8
    -
    - -
    -
    - -

    ◆ kPanasonicAcSectionGap

    - -
    -
    - - - - -
    const uint16_t kPanasonicAcSectionGap = 10000
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicBitMark

    - -
    -
    - - - - -
    const uint16_t kPanasonicBitMark = 432
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicEndGap

    - -
    -
    - - - - -
    const uint16_t kPanasonicEndGap = 5000
    -
    - -

    uSeconds. See #245

    - -
    -
    - -

    ◆ kPanasonicHdrMark

    - -
    -
    - - - - -
    const uint16_t kPanasonicHdrMark = 3456
    -
    -
    - -

    ◆ kPanasonicHdrSpace

    - -
    -
    - - - - -
    const uint16_t kPanasonicHdrSpace = 1728
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicMinCommandLength

    - -
    -
    - - - - -
    const uint32_t kPanasonicMinCommandLength = 163296
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicMinGap

    - -
    -
    - - - - -
    const uint32_t kPanasonicMinGap = 74736
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicOneSpace

    - -
    -
    - - - - -
    const uint16_t kPanasonicOneSpace = 1296
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPanasonicZeroSpace

    - -
    -
    - - - - -
    const uint16_t kPanasonicZeroSpace = 432
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h.html deleted file mode 100644 index 40647cfd8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h.html +++ /dev/null @@ -1,1075 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Panasonic.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Panasonic.h File Reference
    -
    -
    - -

    Support for Panasonic protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Classes

    class  IRPanasonicAc
     Class for handling detailed Panasonic A/C messages. More...
     
    union  PanasonicAc32Protocol
     Native representation of a Panasonic 32-bit A/C message. More...
     
    class  IRPanasonicAc32
     Class for handling detailed Panasonic 32bit A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kPanasonicFreq = 36700
     
    const uint16_t kPanasonicAcExcess = 0
     
    const uint16_t kPanasonicAcTolerance = 40
     
    const uint8_t kPanasonicAcAuto = 0
     
    const uint8_t kPanasonicAcDry = 2
     
    const uint8_t kPanasonicAcCool = 3
     
    const uint8_t kPanasonicAcHeat = 4
     
    const uint8_t kPanasonicAcFan = 6
     
    const uint8_t kPanasonicAcFanMin = 0
     
    const uint8_t kPanasonicAcFanLow = 1
     
    const uint8_t kPanasonicAcFanMed = 2
     
    const uint8_t kPanasonicAcFanHigh = 3
     
    const uint8_t kPanasonicAcFanMax = 4
     
    const uint8_t kPanasonicAcFanAuto = 7
     
    const uint8_t kPanasonicAcFanDelta = 3
     
    const uint8_t kPanasonicAcPowerOffset = 0
     
    const uint8_t kPanasonicAcTempOffset = 1
     
    const uint8_t kPanasonicAcTempSize = 5
     
    const uint8_t kPanasonicAcMinTemp = 16
     
    const uint8_t kPanasonicAcMaxTemp = 30
     
    const uint8_t kPanasonicAcFanModeTemp = 27
     
    const uint8_t kPanasonicAcQuietOffset = 0
     
    const uint8_t kPanasonicAcPowerfulOffset = 5
     
    const uint8_t kPanasonicAcQuietCkpOffset = kPanasonicAcPowerfulOffset
     
    const uint8_t kPanasonicAcPowerfulCkpOffset = kPanasonicAcQuietOffset
     
    const uint8_t kPanasonicAcSwingVHighest = 0x1
     
    const uint8_t kPanasonicAcSwingVHigh = 0x2
     
    const uint8_t kPanasonicAcSwingVMiddle = 0x3
     
    const uint8_t kPanasonicAcSwingVLow = 0x4
     
    const uint8_t kPanasonicAcSwingVLowest = 0x5
     
    const uint8_t kPanasonicAcSwingVAuto = 0xF
     
    const uint8_t kPanasonicAcSwingHMiddle = 0x6
     
    const uint8_t kPanasonicAcSwingHFullLeft = 0x9
     
    const uint8_t kPanasonicAcSwingHLeft = 0xA
     
    const uint8_t kPanasonicAcSwingHRight = 0xB
     
    const uint8_t kPanasonicAcSwingHFullRight = 0xC
     
    const uint8_t kPanasonicAcSwingHAuto = 0xD
     
    const uint8_t kPanasonicAcChecksumInit = 0xF4
     
    const uint8_t kPanasonicAcOnTimerOffset = 1
     
    const uint8_t kPanasonicAcOffTimerOffset = 2
     
    const uint8_t kPanasonicAcTimeSize = 11
     
    const uint8_t kPanasonicAcTimeOverflowSize = 3
     
    const uint16_t kPanasonicAcTimeMax = 23 * 60 + 59
     
    const uint16_t kPanasonicAcTimeSpecial = 0x600
     
    const uint8_t kPanasonicAcIonFilterByte = 22
     
    const uint8_t kPanasonicAcIonFilterOffset = 0
     
    const uint8_t kPanasonicKnownGoodState [kPanasonicAcStateLength]
     
    const uint8_t kPanasonicAc32Fan = 1
     
    const uint8_t kPanasonicAc32Cool = 2
     
    const uint8_t kPanasonicAc32Dry = 3
     
    const uint8_t kPanasonicAc32Heat = 4
     
    const uint8_t kPanasonicAc32Auto = 6
     
    const uint8_t kPanasonicAc32FanMin = 2
     
    const uint8_t kPanasonicAc32FanLow = 3
     
    const uint8_t kPanasonicAc32FanMed = 4
     
    const uint8_t kPanasonicAc32FanHigh = 5
     
    const uint8_t kPanasonicAc32FanMax = 6
     
    const uint8_t kPanasonicAc32FanAuto = 0xF
     
    const uint8_t kPanasonicAc32SwingVAuto = 0x7
     
    const uint32_t kPanasonicAc32KnownGood = 0x0AF136FC
     Cool, Auto, 16C. More...
     
    -

    Detailed Description

    -

    Support for Panasonic protocols.

    -
    See also
    Panasonic A/C support heavily influenced by https://github.com/ToniA/ESPEasy/blob/HeatpumpIR/lib/HeatpumpIR/PanasonicHeatpumpIR.cpp
    -

    Variable Documentation

    - -

    ◆ kPanasonicAc32Auto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32Auto = 6
    -
    - -
    -
    - -

    ◆ kPanasonicAc32Cool

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32Cool = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAc32Dry

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32Dry = 3
    -
    - -
    -
    - -

    ◆ kPanasonicAc32Fan

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32Fan = 1
    -
    - -
    -
    - -

    ◆ kPanasonicAc32FanAuto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32FanAuto = 0xF
    -
    - -
    -
    - -

    ◆ kPanasonicAc32FanHigh

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32FanHigh = 5
    -
    - -
    -
    - -

    ◆ kPanasonicAc32FanLow

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32FanLow = 3
    -
    - -
    -
    - -

    ◆ kPanasonicAc32FanMax

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32FanMax = 6
    -
    - -
    -
    - -

    ◆ kPanasonicAc32FanMed

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32FanMed = 4
    -
    - -
    -
    - -

    ◆ kPanasonicAc32FanMin

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32FanMin = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAc32Heat

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32Heat = 4
    -
    - -
    -
    - -

    ◆ kPanasonicAc32KnownGood

    - -
    -
    - - - - -
    const uint32_t kPanasonicAc32KnownGood = 0x0AF136FC
    -
    - -

    Cool, Auto, 16C.

    - -
    -
    - -

    ◆ kPanasonicAc32SwingVAuto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAc32SwingVAuto = 0x7
    -
    - -
    -
    - -

    ◆ kPanasonicAcAuto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcAuto = 0
    -
    - -
    -
    - -

    ◆ kPanasonicAcChecksumInit

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcChecksumInit = 0xF4
    -
    - -
    -
    - -

    ◆ kPanasonicAcCool

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcCool = 3
    -
    - -
    -
    - -

    ◆ kPanasonicAcDry

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcDry = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAcExcess

    - -
    -
    - - - - -
    const uint16_t kPanasonicAcExcess = 0
    -
    - -
    -
    - -

    ◆ kPanasonicAcFan

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFan = 6
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanAuto = 7
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanDelta

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanDelta = 3
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanHigh = 3
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanLow

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanLow = 1
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanMax

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanMax = 4
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanMed

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanMed = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanMin

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanMin = 0
    -
    - -
    -
    - -

    ◆ kPanasonicAcFanModeTemp

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcFanModeTemp = 27
    -
    - -
    -
    - -

    ◆ kPanasonicAcHeat

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcHeat = 4
    -
    - -
    -
    - -

    ◆ kPanasonicAcIonFilterByte

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcIonFilterByte = 22
    -
    - -
    -
    - -

    ◆ kPanasonicAcIonFilterOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcIonFilterOffset = 0
    -
    - -
    -
    - -

    ◆ kPanasonicAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kPanasonicAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcMinTemp = 16
    -
    - -
    -
    - -

    ◆ kPanasonicAcOffTimerOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcOffTimerOffset = 2
    -
    - -
    -
    - -

    ◆ kPanasonicAcOnTimerOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcOnTimerOffset = 1
    -
    - -
    -
    - -

    ◆ kPanasonicAcPowerfulCkpOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcPowerfulCkpOffset = kPanasonicAcQuietOffset
    -
    - -
    -
    - -

    ◆ kPanasonicAcPowerfulOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcPowerfulOffset = 5
    -
    - -
    -
    - -

    ◆ kPanasonicAcPowerOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcPowerOffset = 0
    -
    - -
    -
    - -

    ◆ kPanasonicAcQuietCkpOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcQuietCkpOffset = kPanasonicAcPowerfulOffset
    -
    - -
    -
    - -

    ◆ kPanasonicAcQuietOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcQuietOffset = 0
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingHAuto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingHAuto = 0xD
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingHFullLeft

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingHFullLeft = 0x9
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingHFullRight

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingHFullRight = 0xC
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingHLeft

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingHLeft = 0xA
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingHMiddle

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingHMiddle = 0x6
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingHRight

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingHRight = 0xB
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingVAuto

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingVAuto = 0xF
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingVHigh

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingVHigh = 0x2
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingVHighest

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingVHighest = 0x1
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingVLow

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingVLow = 0x4
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingVLowest

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingVLowest = 0x5
    -
    - -
    -
    - -

    ◆ kPanasonicAcSwingVMiddle

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcSwingVMiddle = 0x3
    -
    - -
    -
    - -

    ◆ kPanasonicAcTempOffset

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcTempOffset = 1
    -
    - -
    -
    - -

    ◆ kPanasonicAcTempSize

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcTempSize = 5
    -
    - -
    -
    - -

    ◆ kPanasonicAcTimeMax

    - -
    -
    - - - - -
    const uint16_t kPanasonicAcTimeMax = 23 * 60 + 59
    -
    - -
    -
    - -

    ◆ kPanasonicAcTimeOverflowSize

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcTimeOverflowSize = 3
    -
    - -
    -
    - -

    ◆ kPanasonicAcTimeSize

    - -
    -
    - - - - -
    const uint8_t kPanasonicAcTimeSize = 11
    -
    - -
    -
    - -

    ◆ kPanasonicAcTimeSpecial

    - -
    -
    - - - - -
    const uint16_t kPanasonicAcTimeSpecial = 0x600
    -
    - -
    -
    - -

    ◆ kPanasonicAcTolerance

    - -
    -
    - - - - -
    const uint16_t kPanasonicAcTolerance = 40
    -
    - -
    -
    - -

    ◆ kPanasonicFreq

    - -
    -
    - - - - -
    const uint16_t kPanasonicFreq = 36700
    -
    - -
    -
    - -

    ◆ kPanasonicKnownGoodState

    - -
    -
    - - - - -
    const uint8_t kPanasonicKnownGoodState[kPanasonicAcStateLength]
    -
    -Initial value:
    = {
    -
    0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02,
    -
    0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
    -
    0x00, 0x0E, 0xE0, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00}
    -
    -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h_source.html deleted file mode 100644 index a3961a7d4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Panasonic_8h_source.html +++ /dev/null @@ -1,502 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Panasonic.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Panasonic.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018 David Conran
    -
    2 
    -
    6 
    -
    7 // Supports:
    -
    8 // Brand: Panasonic, Model: TV (PANASONIC)
    -
    9 // Brand: Panasonic, Model: NKE series A/C (PANASONIC_AC NKE/2)
    -
    10 // Brand: Panasonic, Model: DKE series A/C (PANASONIC_AC DKE/3)
    -
    11 // Brand: Panasonic, Model: DKW series A/C (PANASONIC_AC DKE/3)
    -
    12 // Brand: Panasonic, Model: PKR series A/C (PANASONIC_AC DKE/3)
    -
    13 // Brand: Panasonic, Model: JKE series A/C (PANASONIC_AC JKE/4)
    -
    14 // Brand: Panasonic, Model: CKP series A/C (PANASONIC_AC CKP/5)
    -
    15 // Brand: Panasonic, Model: RKR series A/C (PANASONIC_AC RKR/6)
    -
    16 // Brand: Panasonic, Model: CS-ME10CKPG A/C (PANASONIC_AC CKP/5)
    -
    17 // Brand: Panasonic, Model: CS-ME12CKPG A/C (PANASONIC_AC CKP/5)
    -
    18 // Brand: Panasonic, Model: CS-ME14CKPG A/C (PANASONIC_AC CKP/5)
    -
    19 // Brand: Panasonic, Model: CS-E7PKR A/C (PANASONIC_AC DKE/2)
    -
    20 // Brand: Panasonic, Model: CS-Z9RKR A/C (PANASONIC_AC RKR/6)
    -
    21 // Brand: Panasonic, Model: CS-YW9MKD A/C (PANASONIC_AC JKE/4)
    -
    22 // Brand: Panasonic, Model: A75C2311 remote (PANASONIC_AC CKP/5)
    -
    23 // Brand: Panasonic, Model: A75C2616-1 remote (PANASONIC_AC DKE/3)
    -
    24 // Brand: Panasonic, Model: A75C3704 remote (PANASONIC_AC DKE/3)
    -
    25 // Brand: Panasonic, Model: A75C3747 remote (PANASONIC_AC JKE/4)
    -
    26 // Brand: Panasonic, Model: CS-E9CKP series A/C (PANASONIC_AC32)
    -
    27 // Brand: Panasonic, Model: A75C2295 remote (PANASONIC_AC32)
    -
    28 
    -
    29 #ifndef IR_PANASONIC_H_
    -
    30 #define IR_PANASONIC_H_
    -
    31 
    -
    32 #define __STDC_LIMIT_MACROS
    -
    33 #include <stdint.h>
    -
    34 #ifdef ARDUINO
    -
    35 #include <Arduino.h>
    -
    36 #endif
    -
    37 #include "IRremoteESP8266.h"
    -
    38 #include "IRsend.h"
    -
    39 #ifdef UNIT_TEST
    -
    40 #include "IRsend_test.h"
    -
    41 #endif
    -
    42 
    -
    43 // Constants
    -
    44 const uint16_t kPanasonicFreq = 36700;
    -
    45 const uint16_t kPanasonicAcExcess = 0;
    -
    46 // Much higher than usual. See issue #540.
    -
    47 const uint16_t kPanasonicAcTolerance = 40;
    -
    48 
    -
    49 const uint8_t kPanasonicAcAuto = 0; // 0b000
    -
    50 const uint8_t kPanasonicAcDry = 2; // 0b010
    -
    51 const uint8_t kPanasonicAcCool = 3; // 0b011
    -
    52 const uint8_t kPanasonicAcHeat = 4; // 0b010
    -
    53 const uint8_t kPanasonicAcFan = 6; // 0b110
    -
    54 const uint8_t kPanasonicAcFanMin = 0;
    -
    55 const uint8_t kPanasonicAcFanLow = 1;
    -
    56 const uint8_t kPanasonicAcFanMed = 2;
    -
    57 const uint8_t kPanasonicAcFanHigh = 3;
    -
    58 const uint8_t kPanasonicAcFanMax = 4;
    -
    59 const uint8_t kPanasonicAcFanAuto = 7;
    -
    60 const uint8_t kPanasonicAcFanDelta = 3;
    -
    61 const uint8_t kPanasonicAcPowerOffset = 0;
    -
    62 const uint8_t kPanasonicAcTempOffset = 1; // Bits
    -
    63 const uint8_t kPanasonicAcTempSize = 5; // Bits
    -
    64 const uint8_t kPanasonicAcMinTemp = 16; // Celsius
    -
    65 const uint8_t kPanasonicAcMaxTemp = 30; // Celsius
    -
    66 const uint8_t kPanasonicAcFanModeTemp = 27; // Celsius
    -
    67 const uint8_t kPanasonicAcQuietOffset = 0;
    -
    68 const uint8_t kPanasonicAcPowerfulOffset = 5; // 0b100000
    -
    69 // CKP & RKR models have Powerful and Quiet bits swapped.
    - - -
    72 const uint8_t kPanasonicAcSwingVHighest = 0x1; // 0b0001
    -
    73 const uint8_t kPanasonicAcSwingVHigh = 0x2; // 0b0010
    -
    74 const uint8_t kPanasonicAcSwingVMiddle = 0x3; // 0b0011
    -
    75 const uint8_t kPanasonicAcSwingVLow = 0x4; // 0b0100
    -
    76 const uint8_t kPanasonicAcSwingVLowest = 0x5; // 0b0101
    -
    77 const uint8_t kPanasonicAcSwingVAuto = 0xF; // 0b1111
    -
    78 
    -
    79 const uint8_t kPanasonicAcSwingHMiddle = 0x6; // 0b0110
    -
    80 const uint8_t kPanasonicAcSwingHFullLeft = 0x9; // 0b1001
    -
    81 const uint8_t kPanasonicAcSwingHLeft = 0xA; // 0b1010
    -
    82 const uint8_t kPanasonicAcSwingHRight = 0xB; // 0b1011
    -
    83 const uint8_t kPanasonicAcSwingHFullRight = 0xC; // 0b1100
    -
    84 const uint8_t kPanasonicAcSwingHAuto = 0xD; // 0b1101
    -
    85 const uint8_t kPanasonicAcChecksumInit = 0xF4;
    -
    86 const uint8_t kPanasonicAcOnTimerOffset = 1;
    -
    87 const uint8_t kPanasonicAcOffTimerOffset = 2;
    -
    88 const uint8_t kPanasonicAcTimeSize = 11; // Bits
    -
    89 const uint8_t kPanasonicAcTimeOverflowSize = 3; // Bits
    -
    90 const uint16_t kPanasonicAcTimeMax = 23 * 60 + 59; // Mins since midnight.
    -
    91 const uint16_t kPanasonicAcTimeSpecial = 0x600;
    -
    92 
    -
    93 const uint8_t kPanasonicAcIonFilterByte = 22; // Byte
    -
    94 const uint8_t kPanasonicAcIonFilterOffset = 0; // Bit
    -
    95 
    - -
    97  0x02, 0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02,
    -
    98  0x20, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
    -
    99  0x00, 0x0E, 0xE0, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00};
    -
    100 
    - -
    103  public:
    -
    104  explicit IRPanasonicAc(const uint16_t pin, const bool inverted = false,
    -
    105  const bool use_modulation = true);
    -
    106  void stateReset(void);
    -
    107 #if SEND_PANASONIC_AC
    -
    108  void send(const uint16_t repeat = kPanasonicAcDefaultRepeat);
    -
    113  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    114 #endif // SEND_PANASONIC_AC
    -
    115  void begin(void);
    -
    116  void on(void);
    -
    117  void off(void);
    -
    118  void setPower(const bool on);
    -
    119  bool getPower(void);
    -
    120  void setTemp(const uint8_t temp, const bool remember = true);
    -
    121  uint8_t getTemp(void);
    -
    122  void setFan(const uint8_t fan);
    -
    123  uint8_t getFan(void);
    -
    124  void setMode(const uint8_t mode);
    -
    125  uint8_t getMode(void);
    -
    126  void setRaw(const uint8_t state[]);
    -
    127  uint8_t *getRaw(void);
    -
    128  static bool validChecksum(const uint8_t *state,
    -
    129  const uint16_t length = kPanasonicAcStateLength);
    -
    130  static uint8_t calcChecksum(const uint8_t *state,
    -
    131  const uint16_t length = kPanasonicAcStateLength);
    -
    132  void setQuiet(const bool on);
    -
    133  bool getQuiet(void);
    -
    134  void setPowerful(const bool on);
    -
    135  bool getPowerful(void);
    -
    136  void setIon(const bool on);
    -
    137  bool getIon(void);
    -
    138  void setModel(const panasonic_ac_remote_model_t model);
    - -
    140  void setSwingVertical(const uint8_t elevation);
    -
    141  uint8_t getSwingVertical(void);
    -
    142  void setSwingHorizontal(const uint8_t direction);
    -
    143  uint8_t getSwingHorizontal(void);
    -
    144  static uint16_t encodeTime(const uint8_t hours, const uint8_t mins);
    -
    145  uint16_t getClock(void);
    -
    146  void setClock(const uint16_t mins_since_midnight);
    -
    147  uint16_t getOnTimer(void);
    -
    148  void setOnTimer(const uint16_t mins_since_midnight, const bool enable = true);
    -
    149  void cancelOnTimer(void);
    -
    150  bool isOnTimerEnabled(void);
    -
    151  uint16_t getOffTimer(void);
    -
    152  void setOffTimer(const uint16_t mins_since_midnight,
    -
    153  const bool enable = true);
    -
    154  void cancelOffTimer(void);
    -
    155  bool isOffTimerEnabled(void);
    -
    156  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    157  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    158  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    159  static uint8_t convertSwingH(const stdAc::swingh_t position);
    -
    160  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    161  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    162  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    163  static stdAc::swingh_t toCommonSwingH(const uint8_t pos);
    -
    164  stdAc::state_t toCommon(void);
    -
    165  String toString(void);
    -
    166 #ifndef UNIT_TEST
    -
    167 
    -
    168  private:
    - -
    170 #else // UNIT_TEST
    -
    171  IRsendTest _irsend;
    -
    173 #endif // UNIT_TEST
    - -
    176  uint8_t _swingh;
    -
    177  uint8_t _temp;
    -
    178  void fixChecksum(const uint16_t length = kPanasonicAcStateLength);
    -
    179  static uint16_t _getTime(const uint8_t ptr[]);
    -
    180  static void _setTime(uint8_t * const ptr, const uint16_t mins_since_midnight,
    -
    181  const bool round_down);
    -
    182 };
    -
    183 
    - -
    186  uint32_t raw;
    -
    187  struct {
    -
    188  // Byte 0
    -
    189  uint8_t :3;
    -
    190  uint8_t SwingH :1;
    -
    191  uint8_t SwingV :3;
    -
    192  uint8_t :1;
    -
    193  // Byte 1
    -
    194  uint8_t :8; // Always seems to be 0x36.
    -
    195  // Byte 2
    -
    196  uint8_t Temp :4;
    -
    197  uint8_t Fan :4;
    -
    198  // Byte 3
    -
    199  uint8_t Mode :3;
    -
    200  uint8_t PowerToggle :1; // 0 means toggle, 1 = keep the same.
    -
    201  uint8_t :4;
    -
    202  };
    -
    203 };
    -
    204 
    -
    205 const uint8_t kPanasonicAc32Fan = 1; // 0b001
    -
    206 const uint8_t kPanasonicAc32Cool = 2; // 0b010
    -
    207 const uint8_t kPanasonicAc32Dry = 3; // 0b011
    -
    208 const uint8_t kPanasonicAc32Heat = 4; // 0b010
    -
    209 const uint8_t kPanasonicAc32Auto = 6; // 0b110
    -
    210 
    -
    211 const uint8_t kPanasonicAc32FanMin = 2;
    -
    212 const uint8_t kPanasonicAc32FanLow = 3;
    -
    213 const uint8_t kPanasonicAc32FanMed = 4;
    -
    214 const uint8_t kPanasonicAc32FanHigh = 5;
    -
    215 const uint8_t kPanasonicAc32FanMax = 6;
    -
    216 const uint8_t kPanasonicAc32FanAuto = 0xF;
    -
    217 const uint8_t kPanasonicAc32SwingVAuto = 0x7; // 0b111
    -
    218 const uint32_t kPanasonicAc32KnownGood = 0x0AF136FC;
    -
    219 
    - -
    222  public:
    -
    223  explicit IRPanasonicAc32(const uint16_t pin, const bool inverted = false,
    -
    224  const bool use_modulation = true);
    -
    225  void stateReset(void);
    -
    226 #if SEND_PANASONIC_AC32
    -
    227  void send(const uint16_t repeat = kPanasonicAcDefaultRepeat);
    -
    232  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    233 #endif // SEND_PANASONIC_AC32
    -
    234  void begin(void);
    -
    235  void setPowerToggle(const bool on);
    -
    236  bool getPowerToggle(void) const;
    -
    237  void setTemp(const uint8_t temp);
    -
    238  uint8_t getTemp(void) const;
    -
    239  void setFan(const uint8_t fan);
    -
    240  uint8_t getFan(void) const;
    -
    241  void setMode(const uint8_t mode);
    -
    242  uint8_t getMode(void) const;
    -
    243  void setRaw(const uint32_t state);
    -
    244  uint32_t getRaw(void) const;
    -
    245  void setSwingVertical(const uint8_t pos);
    -
    246  uint8_t getSwingVertical(void) const;
    -
    247  void setSwingHorizontal(const bool on);
    -
    248  bool getSwingHorizontal(void) const;
    -
    249  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    250  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    251  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    252  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    253  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    254  static stdAc::swingv_t toCommonSwingV(const uint8_t pos);
    -
    255  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    256  String toString(void) const;
    -
    257 #ifndef UNIT_TEST
    -
    258 
    -
    259  private:
    - -
    261 #else // UNIT_TEST
    -
    262  IRsendTest _irsend;
    -
    264 #endif // UNIT_TEST
    - -
    267 };
    -
    268 
    -
    269 #endif // IR_PANASONIC_H_
    -
    -
    const uint8_t kPanasonicAcFanAuto
    Definition: ir_Panasonic.h:59
    -
    static uint16_t _getTime(const uint8_t ptr[])
    Get the time from a given pointer location.
    Definition: ir_Panasonic.cpp:540
    -
    Class for handling detailed Panasonic A/C messages.
    Definition: ir_Panasonic.h:102
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a standard A/C vertical swing into its native setting.
    Definition: ir_Panasonic.cpp:1264
    -
    uint8_t getTemp(void)
    Get the current temperature setting.
    Definition: ir_Panasonic.cpp:383
    -
    const uint8_t kPanasonicAcIonFilterOffset
    Definition: ir_Panasonic.h:94
    -
    const uint8_t kPanasonicAcAuto
    Definition: ir_Panasonic.h:49
    -
    const uint8_t kPanasonicAcTimeSize
    Definition: ir_Panasonic.h:88
    -
    void setTemp(const uint8_t temp)
    Set the desired temperature.
    Definition: ir_Panasonic.cpp:1125
    -
    void setRaw(const uint8_t state[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Panasonic.cpp:320
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Panasonic.h:232
    -
    Native representation of a Panasonic 32-bit A/C message.
    Definition: ir_Panasonic.h:185
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Panasonic.cpp:1144
    -
    const uint8_t kPanasonicAcSwingHRight
    Definition: ir_Panasonic.h:82
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    const uint8_t kPanasonicAc32FanMin
    Definition: ir_Panasonic.h:211
    -
    const uint8_t kPanasonicAcFanMin
    Definition: ir_Panasonic.h:54
    -
    uint16_t getOffTimer(void)
    Get the Off Timer time value.
    Definition: ir_Panasonic.cpp:601
    -
    const uint8_t kPanasonicAcQuietOffset
    Definition: ir_Panasonic.h:67
    -
    const uint8_t kPanasonicAc32FanHigh
    Definition: ir_Panasonic.h:214
    -
    const uint8_t kPanasonicAcOffTimerOffset
    Definition: ir_Panasonic.h:87
    -
    const uint8_t kPanasonicAc32FanMed
    Definition: ir_Panasonic.h:213
    -
    const uint16_t kPanasonicAcTolerance
    Definition: ir_Panasonic.h:47
    -
    const uint8_t kPanasonicAc32FanAuto
    Definition: ir_Panasonic.h:216
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint16_t kPanasonicAcExcess
    Definition: ir_Panasonic.h:45
    -
    uint8_t _swingh
    Definition: ir_Panasonic.h:176
    -
    uint8_t SwingV
    Definition: ir_Panasonic.h:191
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a standard A/C vertical swing into its native setting.
    Definition: ir_Panasonic.cpp:684
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Panasonic.cpp:1277
    -
    const uint8_t kPanasonicAcPowerfulOffset
    Definition: ir_Panasonic.h:68
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Panasonic.cpp:1220
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Panasonic.cpp:1309
    -
    static uint16_t encodeTime(const uint8_t hours, const uint8_t mins)
    Convert standard (military/24hr) time to nr. of minutes since midnight.
    Definition: ir_Panasonic.cpp:532
    -
    const uint8_t kPanasonicAcTimeOverflowSize
    Definition: ir_Panasonic.h:89
    -
    const uint8_t kPanasonicAcFanMed
    Definition: ir_Panasonic.h:56
    - -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Panasonic.cpp:455
    -
    uint8_t getFan(void)
    Get the current fan speed setting.
    Definition: ir_Panasonic.cpp:472
    -
    void setQuiet(const bool on)
    Set the Quiet setting of the A/C.
    Definition: ir_Panasonic.cpp:491
    -
    const uint8_t kPanasonicAc32Heat
    Definition: ir_Panasonic.h:208
    -
    uint8_t _temp
    Definition: ir_Panasonic.h:177
    -
    void setRaw(const uint32_t state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Panasonic.cpp:1110
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kPanasonicAc32SwingVAuto
    Definition: ir_Panasonic.h:217
    -
    uint8_t PowerToggle
    Definition: ir_Panasonic.h:200
    -
    void setPowerToggle(const bool on)
    Set the Power Toggle setting of the A/C.
    Definition: ir_Panasonic.cpp:1117
    -
    void setSwingVertical(const uint8_t elevation)
    Control the vertical swing setting.
    Definition: ir_Panasonic.cpp:409
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Panasonic.cpp:725
    -
    const uint8_t kPanasonicAcFanLow
    Definition: ir_Panasonic.h:55
    -
    void setIon(const bool on)
    Set the Ion (filter) setting of the A/C.
    Definition: ir_Panasonic.cpp:648
    -
    const uint8_t kPanasonicAcPowerfulCkpOffset
    Definition: ir_Panasonic.h:71
    -
    const uint8_t kPanasonicAcSwingHAuto
    Definition: ir_Panasonic.h:84
    -
    const uint8_t kPanasonicAc32FanLow
    Definition: ir_Panasonic.h:212
    -
    const uint8_t kPanasonicAcMinTemp
    Definition: ir_Panasonic.h:64
    -
    void setSwingHorizontal(const bool on)
    Control the horizontal swing setting.
    Definition: ir_Panasonic.cpp:1237
    -
    const uint8_t kPanasonicAcPowerOffset
    Definition: ir_Panasonic.h:61
    -
    const uint8_t kPanasonicAcHeat
    Definition: ir_Panasonic.h:52
    -
    void send(const uint16_t repeat=kPanasonicAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Panasonic.cpp:237
    -
    bool getSwingHorizontal(void) const
    Get the current horizontal swing setting.
    Definition: ir_Panasonic.cpp:1233
    -
    uint8_t Fan
    Definition: ir_Panasonic.h:197
    -
    uint16_t getClock(void)
    Get the current clock time value.
    Definition: ir_Panasonic.cpp:550
    -
    bool getPower(void)
    Get the A/C power state of the remote.
    Definition: ir_Panasonic.cpp:342
    -
    bool getQuiet(void)
    Get the Quiet setting of the A/C.
    Definition: ir_Panasonic.cpp:479
    -
    const uint32_t kPanasonicAc32KnownGood
    Cool, Auto, 16C.
    Definition: ir_Panasonic.h:218
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Panasonic.cpp:1173
    -
    panasonic_ac_remote_model_t
    Panasonic A/C model numbers.
    Definition: IRsend.h:146
    - -
    swingh_t
    Common A/C settings for Horizontal Swing.
    Definition: IRsend.h:83
    -
    void setOffTimer(const uint16_t mins_since_midnight, const bool enable=true)
    Set/Enable the Off Timer.
    Definition: ir_Panasonic.cpp:611
    -
    stdAc::state_t toCommon(void)
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Panasonic.cpp:762
    -
    static uint8_t calcChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Panasonic.cpp:223
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Panasonic.cpp:657
    -
    const uint8_t kPanasonicAcChecksumInit
    Definition: ir_Panasonic.h:85
    -
    static void _setTime(uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)
    Set the time at a given pointer location.
    Definition: ir_Panasonic.cpp:557
    -
    uint8_t getSwingVertical(void)
    Get the current vertical swing setting.
    Definition: ir_Panasonic.cpp:403
    -
    const uint16_t kPanasonicAcDefaultRepeat
    Definition: IRremoteESP8266.h:1097
    -
    uint8_t Temp
    Definition: ir_Panasonic.h:196
    -
    const uint8_t kPanasonicAcSwingHFullRight
    Definition: ir_Panasonic.h:83
    -
    const uint8_t kPanasonicAc32Auto
    Definition: ir_Panasonic.h:209
    -
    const uint8_t kPanasonicAcSwingHLeft
    Definition: ir_Panasonic.h:81
    -
    bool getPowerful(void)
    Get the Powerful (Turbo) setting of the A/C.
    Definition: ir_Panasonic.cpp:504
    -
    void setSwingHorizontal(const uint8_t direction)
    Control the horizontal swing setting.
    Definition: ir_Panasonic.cpp:426
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Panasonic.cpp:313
    -
    PanasonicAc32Protocol _
    The state in code form.
    Definition: ir_Panasonic.h:266
    -
    const uint16_t kPanasonicAcStateLength
    Definition: IRremoteESP8266.h:1093
    -
    uint8_t getTemp(void) const
    Get the current desired temperature setting.
    Definition: ir_Panasonic.cpp:1133
    -
    const uint8_t kPanasonicAcSwingHMiddle
    Definition: ir_Panasonic.h:79
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Panasonic.cpp:1160
    -
    const uint8_t kPanasonicAcCool
    Definition: ir_Panasonic.h:51
    -
    uint8_t getSwingVertical(void) const
    Get the current vertical swing setting.
    Definition: ir_Panasonic.cpp:1241
    -
    IRPanasonicAc32(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Panasonic.cpp:1089
    -
    const uint16_t kPanasonicFreq
    Definition: ir_Panasonic.h:44
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Panasonic.h:260
    -
    static stdAc::swingh_t toCommonSwingH(const uint8_t pos)
    Convert a native horizontal swing postion to it's common equivalent.
    Definition: ir_Panasonic.cpp:739
    -
    const uint8_t kPanasonicAc32Fan
    Definition: ir_Panasonic.h:205
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Panasonic.h:169
    -
    void setSwingVertical(const uint8_t pos)
    Control the vertical swing setting.
    Definition: ir_Panasonic.cpp:1245
    -
    void setOnTimer(const uint16_t mins_since_midnight, const bool enable=true)
    Set/Enable the On Timer.
    Definition: ir_Panasonic.cpp:582
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Panasonic.cpp:347
    -
    IRPanasonicAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Panasonic.cpp:195
    -
    String toString(void)
    Convert the internal state into a human readable string.
    Definition: ir_Panasonic.cpp:788
    -
    uint8_t Mode
    Definition: ir_Panasonic.h:199
    -
    const uint8_t kPanasonicAc32FanMax
    Definition: ir_Panasonic.h:215
    -
    const uint8_t kPanasonicAcQuietCkpOffset
    Definition: ir_Panasonic.h:70
    -
    const uint8_t kPanasonicKnownGoodState[kPanasonicAcStateLength]
    Definition: ir_Panasonic.h:96
    -
    const uint8_t kPanasonicAcFanHigh
    Definition: ir_Panasonic.h:57
    -
    const uint8_t kPanasonicAcSwingVAuto
    Definition: ir_Panasonic.h:77
    -
    void send(const uint16_t repeat=kPanasonicAcDefaultRepeat)
    Send the current internal state as IR messages.
    Definition: ir_Panasonic.cpp:1096
    -
    const uint8_t kPanasonicAcSwingVHigh
    Definition: ir_Panasonic.h:73
    -
    bool isOnTimerEnabled(void)
    Check if the On Timer is Enabled.
    Definition: ir_Panasonic.cpp:595
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Panasonic.cpp:207
    -
    const uint8_t kPanasonicAc32Dry
    Definition: ir_Panasonic.h:207
    -
    void fixChecksum(const uint16_t length=kPanasonicAcStateLength)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Panasonic.cpp:230
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Panasonic.cpp:1185
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Panasonic.h:113
    -
    void setPower(const bool on)
    Control the power state of the A/C unit.
    Definition: ir_Panasonic.cpp:334
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Panasonic.cpp:1102
    -
    const uint8_t kPanasonicAcTempOffset
    Definition: ir_Panasonic.h:62
    -
    void setClock(const uint16_t mins_since_midnight)
    Set the current clock time value.
    Definition: ir_Panasonic.cpp:571
    -
    const uint16_t kPanasonicAcTimeSpecial
    Definition: ir_Panasonic.h:91
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Panasonic.cpp:360
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Panasonic.cpp:1257
    -
    const uint8_t kPanasonicAcSwingVLow
    Definition: ir_Panasonic.h:75
    -
    void cancelOnTimer(void)
    Cancel the On Timer.
    Definition: ir_Panasonic.cpp:591
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Panasonic.cpp:1206
    -
    uint8_t getSwingHorizontal(void)
    Get the current horizontal swing setting.
    Definition: ir_Panasonic.cpp:420
    -
    const uint8_t kPanasonicAcFan
    Definition: ir_Panasonic.h:53
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Panasonic.cpp:350
    -
    const uint8_t kPanasonicAcDry
    Definition: ir_Panasonic.h:50
    -
    Class for handling detailed Panasonic 32bit A/C messages.
    Definition: ir_Panasonic.h:221
    -
    uint8_t remote_state[kPanasonicAcStateLength]
    The state in code form.
    Definition: ir_Panasonic.h:175
    -
    void cancelOffTimer(void)
    Cancel the Off Timer.
    Definition: ir_Panasonic.cpp:626
    -
    const uint8_t kPanasonicAcIonFilterByte
    Definition: ir_Panasonic.h:93
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Panasonic.cpp:670
    -
    const uint8_t kPanasonicAcSwingVMiddle
    Definition: ir_Panasonic.h:74
    -
    static bool validChecksum(const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Panasonic.cpp:213
    -
    const uint8_t kPanasonicAcFanDelta
    Definition: ir_Panasonic.h:60
    -
    const uint8_t kPanasonicAcSwingVHighest
    Definition: ir_Panasonic.h:72
    -
    const uint8_t kPanasonicAc32Cool
    Definition: ir_Panasonic.h:206
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Panasonic.cpp:200
    -
    const uint8_t kPanasonicAcTempSize
    Definition: ir_Panasonic.h:63
    -
    uint8_t getMode(void)
    Get the operating mode setting of the A/C.
    Definition: ir_Panasonic.cpp:354
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) setting of the A/C.
    Definition: ir_Panasonic.cpp:516
    -
    const uint8_t kPanasonicAcFanModeTemp
    Definition: ir_Panasonic.h:66
    -
    bool getPowerToggle(void) const
    Get the Power Toggle setting of the A/C.
    Definition: ir_Panasonic.cpp:1121
    -
    const uint8_t kPanasonicAcFanMax
    Definition: ir_Panasonic.h:58
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Panasonic.cpp:712
    -
    uint32_t getRaw(void) const
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Panasonic.cpp:1106
    -
    bool isOffTimerEnabled(void)
    Check if the Off Timer is Enabled.
    Definition: ir_Panasonic.cpp:630
    -
    const uint16_t kPanasonicAcTimeMax
    Definition: ir_Panasonic.h:90
    -
    const uint8_t kPanasonicAcSwingHFullLeft
    Definition: ir_Panasonic.h:80
    -
    panasonic_ac_remote_model_t getModel(void)
    Get/Detect the model of the A/C.
    Definition: ir_Panasonic.cpp:294
    -
    bool getIon(void)
    Get the Ion (filter) setting of the A/C.
    Definition: ir_Panasonic.cpp:636
    -
    uint32_t raw
    The state in IR code form.
    Definition: ir_Panasonic.h:186
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Panasonic.cpp:1113
    -
    uint16_t getOnTimer(void)
    Get the On Timer time value.
    Definition: ir_Panasonic.cpp:577
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void setModel(const panasonic_ac_remote_model_t model)
    Set the model of the A/C to emulate.
    Definition: ir_Panasonic.cpp:244
    -
    uint8_t SwingH
    Definition: ir_Panasonic.h:190
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Panasonic.cpp:1139
    -
    const uint8_t kPanasonicAcMaxTemp
    Definition: ir_Panasonic.h:65
    -
    static uint8_t convertSwingH(const stdAc::swingh_t position)
    Convert a standard A/C horizontal swing into its native setting.
    Definition: ir_Panasonic.cpp:698
    -
    void setTemp(const uint8_t temp, const bool remember=true)
    Set the temperature.
    Definition: ir_Panasonic.cpp:392
    -
    const uint8_t kPanasonicAcSwingVLowest
    Definition: ir_Panasonic.h:76
    -
    const uint8_t kPanasonicAcOnTimerOffset
    Definition: ir_Panasonic.h:86
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t pos)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Panasonic.cpp:753
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Panasonic.cpp:1201
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pioneer_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pioneer_8cpp.html deleted file mode 100644 index 1f8b8eef2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pioneer_8cpp.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Pioneer.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Pioneer.cpp File Reference
    -
    -
    - -

    Pioneer remote emulation. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kPioneerTick = 534
     uSeconds. More...
     
    const uint16_t kPioneerHdrMark = 8506
     uSeconds. More...
     
    const uint16_t kPioneerHdrSpace = 4191
     uSeconds. More...
     
    const uint16_t kPioneerBitMark = 568
     uSeconds. More...
     
    const uint16_t kPioneerOneSpace = 1542
     uSeconds. More...
     
    const uint16_t kPioneerZeroSpace = 487
     uSeconds. More...
     
    const uint32_t kPioneerMinCommandLength = 84906
     uSeconds. More...
     
    const uint32_t kPioneerMinGap = 25181
     uSeconds. More...
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kPioneerBitMark

    - -
    -
    - - - - -
    const uint16_t kPioneerBitMark = 568
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerHdrMark

    - -
    -
    - - - - -
    const uint16_t kPioneerHdrMark = 8506
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerHdrSpace

    - -
    -
    - - - - -
    const uint16_t kPioneerHdrSpace = 4191
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerMinCommandLength

    - -
    -
    - - - - -
    const uint32_t kPioneerMinCommandLength = 84906
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerMinGap

    - -
    -
    - - - - -
    const uint32_t kPioneerMinGap = 25181
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerOneSpace

    - -
    -
    - - - - -
    const uint16_t kPioneerOneSpace = 1542
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerTick

    - -
    -
    - - - - -
    const uint16_t kPioneerTick = 534
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kPioneerZeroSpace

    - -
    -
    - - - - -
    const uint16_t kPioneerZeroSpace = 487
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pronto_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pronto_8cpp.html deleted file mode 100644 index e962543bf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Pronto_8cpp.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Pronto.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Pronto.cpp File Reference
    -
    -
    - -

    Pronto code message generation. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const float kProntoFreqFactor = 0.241246
     
    const uint16_t kProntoTypeOffset = 0
     
    const uint16_t kProntoFreqOffset = 1
     
    const uint16_t kProntoSeq1LenOffset = 2
     
    const uint16_t kProntoSeq2LenOffset = 3
     
    const uint16_t kProntoDataOffset = 4
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kProntoDataOffset

    - -
    -
    - - - - -
    const uint16_t kProntoDataOffset = 4
    -
    - -
    -
    - -

    ◆ kProntoFreqFactor

    - -
    -
    - - - - -
    const float kProntoFreqFactor = 0.241246
    -
    - -
    -
    - -

    ◆ kProntoFreqOffset

    - -
    -
    - - - - -
    const uint16_t kProntoFreqOffset = 1
    -
    - -
    -
    - -

    ◆ kProntoSeq1LenOffset

    - -
    -
    - - - - -
    const uint16_t kProntoSeq1LenOffset = 2
    -
    - -
    -
    - -

    ◆ kProntoSeq2LenOffset

    - -
    -
    - - - - -
    const uint16_t kProntoSeq2LenOffset = 3
    -
    - -
    -
    - -

    ◆ kProntoTypeOffset

    - -
    -
    - - - - -
    const uint16_t kProntoTypeOffset = 0
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RC5__RC6_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RC5__RC6_8cpp.html deleted file mode 100644 index cf5b1a92a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RC5__RC6_8cpp.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_RC5_RC6.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_RC5_RC6.cpp File Reference
    -
    -
    - -

    RC-5 & RC-6 support RC-5 & RC-6 support added from https://github.com/z3t0/Arduino-IRremote RC-5X support added by David Conran. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kRc5T1 = 889
     
    const uint32_t kRc5MinCommandLength = 113778
     
    const uint32_t kRc5MinGap = kRc5MinCommandLength - kRC5RawBits * (2 * kRc5T1)
     
    const uint16_t kRc5ToggleMask = 0x800
     
    const uint16_t kRc5SamplesMin = 11
     
    const uint16_t kRc6Tick = 444
     
    const uint16_t kRc6HdrMarkTicks = 6
     
    const uint16_t kRc6HdrMark = kRc6HdrMarkTicks * kRc6Tick
     
    const uint16_t kRc6HdrSpaceTicks = 2
     
    const uint16_t kRc6HdrSpace = kRc6HdrSpaceTicks * kRc6Tick
     
    const uint16_t kRc6RptLengthTicks = 187
     
    const uint32_t kRc6RptLength = kRc6RptLengthTicks * kRc6Tick
     
    const uint32_t kRc6ToggleMask = 0x10000UL
     
    const uint16_t kRc6_36ToggleMask = 0x8000
     
    const int16_t kMark = 0
     
    const int16_t kSpace = 1
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kMark

    - -
    -
    - - - - -
    const int16_t kMark = 0
    -
    - -
    -
    - -

    ◆ kRc5MinCommandLength

    - -
    -
    - - - - -
    const uint32_t kRc5MinCommandLength = 113778
    -
    - -
    -
    - -

    ◆ kRc5MinGap

    - -
    -
    - - - - -
    const uint32_t kRc5MinGap = kRc5MinCommandLength - kRC5RawBits * (2 * kRc5T1)
    -
    - -
    -
    - -

    ◆ kRc5SamplesMin

    - -
    -
    - - - - -
    const uint16_t kRc5SamplesMin = 11
    -
    - -
    -
    - -

    ◆ kRc5T1

    - -
    -
    - - - - -
    const uint16_t kRc5T1 = 889
    -
    - -
    -
    - -

    ◆ kRc5ToggleMask

    - -
    -
    - - - - -
    const uint16_t kRc5ToggleMask = 0x800
    -
    - -
    -
    - -

    ◆ kRc6_36ToggleMask

    - -
    -
    - - - - -
    const uint16_t kRc6_36ToggleMask = 0x8000
    -
    - -
    -
    - -

    ◆ kRc6HdrMark

    - -
    -
    - - - - -
    const uint16_t kRc6HdrMark = kRc6HdrMarkTicks * kRc6Tick
    -
    - -
    -
    - -

    ◆ kRc6HdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kRc6HdrMarkTicks = 6
    -
    - -
    -
    - -

    ◆ kRc6HdrSpace

    - -
    -
    - - - - -
    const uint16_t kRc6HdrSpace = kRc6HdrSpaceTicks * kRc6Tick
    -
    - -
    -
    - -

    ◆ kRc6HdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kRc6HdrSpaceTicks = 2
    -
    - -
    -
    - -

    ◆ kRc6RptLength

    - -
    -
    - - - - -
    const uint32_t kRc6RptLength = kRc6RptLengthTicks * kRc6Tick
    -
    - -
    -
    - -

    ◆ kRc6RptLengthTicks

    - -
    -
    - - - - -
    const uint16_t kRc6RptLengthTicks = 187
    -
    - -
    -
    - -

    ◆ kRc6Tick

    - -
    -
    - - - - -
    const uint16_t kRc6Tick = 444
    -
    - -
    -
    - -

    ◆ kRc6ToggleMask

    - -
    -
    - - - - -
    const uint32_t kRc6ToggleMask = 0x10000UL
    -
    - -
    -
    - -

    ◆ kSpace

    - -
    -
    - - - - -
    const int16_t kSpace = 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RCMM_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RCMM_8cpp.html deleted file mode 100644 index 8b4bc3a0c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__RCMM_8cpp.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_RCMM.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_RCMM.cpp File Reference
    -
    -
    - -

    Support for the Phillips RC-MM protocol. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kRcmmTick = 28
     
    const uint16_t kRcmmHdrMarkTicks = 15
     
    const uint16_t kRcmmHdrMark = 416
     
    const uint16_t kRcmmHdrSpaceTicks = 10
     
    const uint16_t kRcmmHdrSpace = 277
     
    const uint16_t kRcmmBitMarkTicks = 6
     
    const uint16_t kRcmmBitMark = 166
     
    const uint16_t kRcmmBitSpace0Ticks = 10
     
    const uint16_t kRcmmBitSpace0 = 277
     
    const uint16_t kRcmmBitSpace1Ticks = 16
     
    const uint16_t kRcmmBitSpace1 = 444
     
    const uint16_t kRcmmBitSpace2Ticks = 22
     
    const uint16_t kRcmmBitSpace2 = 611
     
    const uint16_t kRcmmBitSpace3Ticks = 28
     
    const uint16_t kRcmmBitSpace3 = 777
     
    const uint16_t kRcmmRptLengthTicks = 992
     
    const uint32_t kRcmmRptLength = 27778
     
    const uint16_t kRcmmMinGapTicks = 120
     
    const uint32_t kRcmmMinGap = 3360
     
    const uint8_t kRcmmTolerance = 10
     
    const uint16_t kRcmmExcess = 50
     
    -

    Detailed Description

    -

    Support for the Phillips RC-MM protocol.

    -
    See also
    http://www.sbprojects.net/knowledge/ir/rcmm.php
    -

    Variable Documentation

    - -

    ◆ kRcmmBitMark

    - -
    -
    - - - - -
    const uint16_t kRcmmBitMark = 166
    -
    - -
    -
    - -

    ◆ kRcmmBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kRcmmBitMarkTicks = 6
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace0

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace0 = 277
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace0Ticks

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace0Ticks = 10
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace1

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace1 = 444
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace1Ticks

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace1Ticks = 16
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace2

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace2 = 611
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace2Ticks

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace2Ticks = 22
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace3

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace3 = 777
    -
    - -
    -
    - -

    ◆ kRcmmBitSpace3Ticks

    - -
    -
    - - - - -
    const uint16_t kRcmmBitSpace3Ticks = 28
    -
    - -
    -
    - -

    ◆ kRcmmExcess

    - -
    -
    - - - - -
    const uint16_t kRcmmExcess = 50
    -
    - -
    -
    - -

    ◆ kRcmmHdrMark

    - -
    -
    - - - - -
    const uint16_t kRcmmHdrMark = 416
    -
    - -
    -
    - -

    ◆ kRcmmHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kRcmmHdrMarkTicks = 15
    -
    - -
    -
    - -

    ◆ kRcmmHdrSpace

    - -
    -
    - - - - -
    const uint16_t kRcmmHdrSpace = 277
    -
    - -
    -
    - -

    ◆ kRcmmHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kRcmmHdrSpaceTicks = 10
    -
    - -
    -
    - -

    ◆ kRcmmMinGap

    - -
    -
    - - - - -
    const uint32_t kRcmmMinGap = 3360
    -
    - -
    -
    - -

    ◆ kRcmmMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kRcmmMinGapTicks = 120
    -
    - -
    -
    - -

    ◆ kRcmmRptLength

    - -
    -
    - - - - -
    const uint32_t kRcmmRptLength = 27778
    -
    - -
    -
    - -

    ◆ kRcmmRptLengthTicks

    - -
    -
    - - - - -
    const uint16_t kRcmmRptLengthTicks = 992
    -
    - -
    -
    - -

    ◆ kRcmmTick

    - -
    -
    - - - - -
    const uint16_t kRcmmTick = 28
    -
    - -
    -
    - -

    ◆ kRcmmTolerance

    - -
    -
    - - - - -
    const uint8_t kRcmmTolerance = 10
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8cpp.html deleted file mode 100644 index 8a6a3ae22..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8cpp.html +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Samsung.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Samsung.cpp File Reference
    -
    -
    - -

    Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kSamsungTick = 560
     
    const uint16_t kSamsungHdrMarkTicks = 8
     
    const uint16_t kSamsungHdrMark = kSamsungHdrMarkTicks * kSamsungTick
     
    const uint16_t kSamsungHdrSpaceTicks = 8
     
    const uint16_t kSamsungHdrSpace = kSamsungHdrSpaceTicks * kSamsungTick
     
    const uint16_t kSamsungBitMarkTicks = 1
     
    const uint16_t kSamsungBitMark = kSamsungBitMarkTicks * kSamsungTick
     
    const uint16_t kSamsungOneSpaceTicks = 3
     
    const uint16_t kSamsungOneSpace = kSamsungOneSpaceTicks * kSamsungTick
     
    const uint16_t kSamsungZeroSpaceTicks = 1
     
    const uint16_t kSamsungZeroSpace = kSamsungZeroSpaceTicks * kSamsungTick
     
    const uint16_t kSamsungRptSpaceTicks = 4
     
    const uint16_t kSamsungRptSpace = kSamsungRptSpaceTicks * kSamsungTick
     
    const uint16_t kSamsungMinMessageLengthTicks = 193
     
    const uint32_t kSamsungMinMessageLength
     
    const uint16_t kSamsungMinGapTicks
     
    const uint32_t kSamsungMinGap = kSamsungMinGapTicks * kSamsungTick
     
    const uint16_t kSamsungAcHdrMark = 690
     
    const uint16_t kSamsungAcHdrSpace = 17844
     
    const uint8_t kSamsungAcSections = 2
     
    const uint16_t kSamsungAcSectionMark = 3086
     
    const uint16_t kSamsungAcSectionSpace = 8864
     
    const uint16_t kSamsungAcSectionGap = 2886
     
    const uint16_t kSamsungAcBitMark = 586
     
    const uint16_t kSamsungAcOneSpace = 1432
     
    const uint16_t kSamsungAcZeroSpace = 436
     
    const uint16_t kSamsung36HdrMark = 4515
     
    const uint16_t kSamsung36HdrSpace = 4438
     < uSeconds More...
     
    const uint16_t kSamsung36BitMark = 512
     < uSeconds More...
     
    const uint16_t kSamsung36OneSpace = 1468
     < uSeconds More...
     
    const uint16_t kSamsung36ZeroSpace = 490
     < uSeconds More...
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSamsung36BitMark

    - -
    -
    - - - - -
    const uint16_t kSamsung36BitMark = 512
    -
    - -

    < uSeconds

    - -
    -
    - -

    ◆ kSamsung36HdrMark

    - -
    -
    - - - - -
    const uint16_t kSamsung36HdrMark = 4515
    -
    - -
    -
    - -

    ◆ kSamsung36HdrSpace

    - -
    -
    - - - - -
    const uint16_t kSamsung36HdrSpace = 4438
    -
    - -

    < uSeconds

    - -
    -
    - -

    ◆ kSamsung36OneSpace

    - -
    -
    - - - - -
    const uint16_t kSamsung36OneSpace = 1468
    -
    - -

    < uSeconds

    - -
    -
    - -

    ◆ kSamsung36ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSamsung36ZeroSpace = 490
    -
    - -

    < uSeconds

    - -
    -
    - -

    ◆ kSamsungAcBitMark

    - -
    -
    - - - - -
    const uint16_t kSamsungAcBitMark = 586
    -
    - -
    -
    - -

    ◆ kSamsungAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kSamsungAcHdrMark = 690
    -
    - -
    -
    - -

    ◆ kSamsungAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungAcHdrSpace = 17844
    -
    - -
    -
    - -

    ◆ kSamsungAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungAcOneSpace = 1432
    -
    - -
    -
    - -

    ◆ kSamsungAcSectionGap

    - -
    -
    - - - - -
    const uint16_t kSamsungAcSectionGap = 2886
    -
    - -
    -
    - -

    ◆ kSamsungAcSectionMark

    - -
    -
    - - - - -
    const uint16_t kSamsungAcSectionMark = 3086
    -
    - -
    -
    - -

    ◆ kSamsungAcSections

    - -
    -
    - - - - -
    const uint8_t kSamsungAcSections = 2
    -
    - -
    -
    - -

    ◆ kSamsungAcSectionSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungAcSectionSpace = 8864
    -
    - -
    -
    - -

    ◆ kSamsungAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungAcZeroSpace = 436
    -
    - -
    -
    - -

    ◆ kSamsungBitMark

    - -
    -
    - - - - -
    const uint16_t kSamsungBitMark = kSamsungBitMarkTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungBitMarkTicks = 1
    -
    - -
    -
    - -

    ◆ kSamsungHdrMark

    - -
    -
    - - - - -
    const uint16_t kSamsungHdrMark = kSamsungHdrMarkTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungHdrMarkTicks = 8
    -
    - -
    -
    - -

    ◆ kSamsungHdrSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungHdrSpace = kSamsungHdrSpaceTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungHdrSpaceTicks = 8
    -
    - -
    -
    - -

    ◆ kSamsungMinGap

    - -
    -
    - - - - -
    const uint32_t kSamsungMinGap = kSamsungMinGapTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungMinGapTicks
    -
    -
    - -

    ◆ kSamsungMinMessageLength

    - -
    -
    - - - - -
    const uint32_t kSamsungMinMessageLength
    -
    -
    - -

    ◆ kSamsungMinMessageLengthTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungMinMessageLengthTicks = 193
    -
    - -
    -
    - -

    ◆ kSamsungOneSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungOneSpace = kSamsungOneSpaceTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungOneSpaceTicks = 3
    -
    - -
    -
    - -

    ◆ kSamsungRptSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungRptSpace = kSamsungRptSpaceTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungRptSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungRptSpaceTicks = 4
    -
    - -
    -
    - -

    ◆ kSamsungTick

    - -
    -
    - - - - -
    const uint16_t kSamsungTick = 560
    -
    - -
    -
    - -

    ◆ kSamsungZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSamsungZeroSpace = kSamsungZeroSpaceTicks * kSamsungTick
    -
    - -
    -
    - -

    ◆ kSamsungZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSamsungZeroSpaceTicks = 1
    -
    - -
    -
    -
    -
    const uint16_t kSamsungMinMessageLengthTicks
    Definition: ir_Samsung.cpp:36
    -
    const uint16_t kSamsungTick
    Definition: ir_Samsung.cpp:23
    -
    const uint16_t kSamsungBitMarkTicks
    Definition: ir_Samsung.cpp:28
    -
    const uint16_t kSamsungHdrMarkTicks
    Definition: ir_Samsung.cpp:24
    -
    const uint16_t kSamsungOneSpaceTicks
    Definition: ir_Samsung.cpp:30
    -
    const uint16_t kSamsungBits
    Definition: IRremoteESP8266.h:1107
    -
    const uint16_t kSamsungHdrSpaceTicks
    Definition: ir_Samsung.cpp:26
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h.html deleted file mode 100644 index 9d9f6386f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Samsung.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Samsung.h File Reference
    -
    -
    - -

    Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  SamsungProtocol
     Native representation of a Samsung A/C message. More...
     
    class  IRSamsungAc
     Class for handling detailed Samsung A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kSamsungAcPowerfulMask8 = 0b01010000
     
    const uint8_t kSamsungAcSwingMove = 0b010
     
    const uint8_t kSamsungAcSwingStop = 0b111
     
    const uint8_t kSamsungAcPowerful10On = 0b011
     
    const uint8_t kSamsungAcBreezeOn = 0b101
     
    const uint8_t kSamsungAcMinTemp = 16
     
    const uint8_t kSamsungAcMaxTemp = 30
     
    const uint8_t kSamsungAcAutoTemp = 25
     
    const uint8_t kSamsungAcAuto = 0
     
    const uint8_t kSamsungAcCool = 1
     
    const uint8_t kSamsungAcDry = 2
     
    const uint8_t kSamsungAcFan = 3
     
    const uint8_t kSamsungAcHeat = 4
     
    const uint8_t kSamsungAcFanAuto = 0
     
    const uint8_t kSamsungAcFanLow = 2
     
    const uint8_t kSamsungAcFanMed = 4
     
    const uint8_t kSamsungAcFanHigh = 5
     
    const uint8_t kSamsungAcFanAuto2 = 6
     
    const uint8_t kSamsungAcFanTurbo = 7
     
    const uint16_t kSamsungAcSectionLength = 7
     
    const uint64_t kSamsungAcPowerSection = 0x1D20F00000000
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSamsungAcAuto

    - -
    -
    - - - - -
    const uint8_t kSamsungAcAuto = 0
    -
    - -
    -
    - -

    ◆ kSamsungAcAutoTemp

    - -
    -
    - - - - -
    const uint8_t kSamsungAcAutoTemp = 25
    -
    - -
    -
    - -

    ◆ kSamsungAcBreezeOn

    - -
    -
    - - - - -
    const uint8_t kSamsungAcBreezeOn = 0b101
    -
    - -
    -
    - -

    ◆ kSamsungAcCool

    - -
    -
    - - - - -
    const uint8_t kSamsungAcCool = 1
    -
    - -
    -
    - -

    ◆ kSamsungAcDry

    - -
    -
    - - - - -
    const uint8_t kSamsungAcDry = 2
    -
    - -
    -
    - -

    ◆ kSamsungAcFan

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFan = 3
    -
    - -
    -
    - -

    ◆ kSamsungAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFanAuto = 0
    -
    - -
    -
    - -

    ◆ kSamsungAcFanAuto2

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFanAuto2 = 6
    -
    - -
    -
    - -

    ◆ kSamsungAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFanHigh = 5
    -
    - -
    -
    - -

    ◆ kSamsungAcFanLow

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFanLow = 2
    -
    - -
    -
    - -

    ◆ kSamsungAcFanMed

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFanMed = 4
    -
    - -
    -
    - -

    ◆ kSamsungAcFanTurbo

    - -
    -
    - - - - -
    const uint8_t kSamsungAcFanTurbo = 7
    -
    - -
    -
    - -

    ◆ kSamsungAcHeat

    - -
    -
    - - - - -
    const uint8_t kSamsungAcHeat = 4
    -
    - -
    -
    - -

    ◆ kSamsungAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kSamsungAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kSamsungAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kSamsungAcMinTemp = 16
    -
    - -
    -
    - -

    ◆ kSamsungAcPowerful10On

    - -
    -
    - - - - -
    const uint8_t kSamsungAcPowerful10On = 0b011
    -
    - -
    -
    - -

    ◆ kSamsungAcPowerfulMask8

    - -
    -
    - - - - -
    const uint8_t kSamsungAcPowerfulMask8 = 0b01010000
    -
    - -
    -
    - -

    ◆ kSamsungAcPowerSection

    - -
    -
    - - - - -
    const uint64_t kSamsungAcPowerSection = 0x1D20F00000000
    -
    - -
    -
    - -

    ◆ kSamsungAcSectionLength

    - -
    -
    - - - - -
    const uint16_t kSamsungAcSectionLength = 7
    -
    - -
    -
    - -

    ◆ kSamsungAcSwingMove

    - -
    -
    - - - - -
    const uint8_t kSamsungAcSwingMove = 0b010
    -
    - -
    -
    - -

    ◆ kSamsungAcSwingStop

    - -
    -
    - - - - -
    const uint8_t kSamsungAcSwingStop = 0b111
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h_source.html deleted file mode 100644 index 71e257d65..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Samsung_8h_source.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Samsung.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Samsung.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018 David Conran
    -
    9 
    -
    10 // Supports:
    -
    11 // Brand: Samsung, Model: UA55H6300 TV (SAMSUNG)
    -
    12 // Brand: Samsung, Model: BN59-01178B TV remote (SAMSUNG)
    -
    13 // Brand: Samsung, Model: DB63-03556X003 remote
    -
    14 // Brand: Samsung, Model: DB93-16761C remote
    -
    15 // Brand: Samsung, Model: IEC-R03 remote
    -
    16 // Brand: Samsung, Model: AK59-00167A Bluray remote (SAMSUNG36)
    -
    17 // Brand: Samsung, Model: AH59-02692E Soundbar remote (SAMSUNG36)
    -
    18 // Brand: Samsung, Model: HW-J551 Soundbar (SAMSUNG36)
    -
    19 // Brand: Samsung, Model: AR09FSSDAWKNFA A/C (SAMSUNG_AC)
    -
    20 // Brand: Samsung, Model: AR12KSFPEWQNET A/C (SAMSUNG_AC)
    -
    21 // Brand: Samsung, Model: AR12HSSDBWKNEU A/C (SAMSUNG_AC)
    -
    22 // Brand: Samsung, Model: AR12NXCXAWKXEU A/C (SAMSUNG_AC)
    -
    23 // Brand: Samsung, Model: AR09HSFSBWKN A/C (SAMSUNG_AC)
    -
    24 // Brand: Samsung, Model: DB93-14195A remote (SAMSUNG_AC)
    -
    25 
    -
    26 #ifndef IR_SAMSUNG_H_
    -
    27 #define IR_SAMSUNG_H_
    -
    28 
    -
    29 #define __STDC_LIMIT_MACROS
    -
    30 #include <stdint.h>
    -
    31 #ifndef UNIT_TEST
    -
    32 #include <Arduino.h>
    -
    33 #endif
    -
    34 #include "IRremoteESP8266.h"
    -
    35 #include "IRsend.h"
    -
    36 #ifdef UNIT_TEST
    -
    37 #include "IRsend_test.h"
    -
    38 #endif
    -
    39 
    - - -
    43  struct {
    -
    44  // Byte 0
    -
    45  uint8_t :8;
    -
    46  // Byte 1
    -
    47  uint8_t :4;
    -
    48  uint8_t Quiet1 :1;
    -
    49  uint8_t Power1 :1;
    -
    50  uint8_t :2;
    -
    51  // Byte 2~4
    -
    52  uint8_t pad0[3];
    -
    53  // Byte 5
    -
    54  uint8_t :5;
    -
    55  uint8_t Quiet5 :1;
    -
    56  uint8_t :2;
    -
    57  // Byte 6
    -
    58  uint8_t :4;
    -
    59  uint8_t Power6 :2;
    -
    60  uint8_t :2;
    -
    61  // Byte 7
    -
    62  uint8_t :8;
    -
    63  // Byte 8
    -
    64  uint8_t Powerful8 :8;
    -
    65  // Byte 9
    -
    66  uint8_t :4;
    -
    67  uint8_t Swing :3;
    -
    68  uint8_t :1;
    -
    69  // Byte 10
    -
    70  uint8_t :1;
    -
    71  uint8_t Powerful10 :3;
    -
    72  uint8_t Display :1;
    -
    73  uint8_t :2;
    -
    74  uint8_t Clean10 :1;
    -
    75  // Byte 11
    -
    76  uint8_t Ion :1;
    -
    77  uint8_t Clean11 :1;
    -
    78  uint8_t :2;
    -
    79  uint8_t Temp :4;
    -
    80  // Byte 12
    -
    81  uint8_t :1;
    -
    82  uint8_t Fan :3;
    -
    83  uint8_t Mode :3;
    -
    84  uint8_t :1;
    -
    85  // Byte 13
    -
    86  uint8_t :1;
    -
    87  uint8_t Beep :1;
    -
    88  uint8_t :6;
    -
    89  };
    -
    90  struct {
    -
    91  uint8_t :8;
    -
    92  // Byte 1
    -
    93  uint8_t :4;
    -
    94  uint8_t Sum1 :4;
    -
    95  uint8_t pad1[6];
    -
    96  // Byte 8
    -
    97  uint8_t :4;
    -
    98  uint8_t Sum2 :4;
    -
    99  uint8_t :8;
    -
    100  // Byte 10
    -
    101  uint8_t :1;
    -
    102  uint8_t Breeze :3; // WindFree
    -
    103  uint8_t :4;
    -
    104  };
    -
    105 };
    -
    106 
    -
    107 // Constants
    -
    108 const uint8_t kSamsungAcPowerfulMask8 = 0b01010000;
    -
    109 const uint8_t kSamsungAcSwingMove = 0b010;
    -
    110 const uint8_t kSamsungAcSwingStop = 0b111;
    -
    111 const uint8_t kSamsungAcPowerful10On = 0b011;
    -
    112 const uint8_t kSamsungAcBreezeOn = 0b101;
    -
    113 const uint8_t kSamsungAcMinTemp = 16; // C Mask 0b11110000
    -
    114 const uint8_t kSamsungAcMaxTemp = 30; // C Mask 0b11110000
    -
    115 const uint8_t kSamsungAcAutoTemp = 25; // C Mask 0b11110000
    -
    116 const uint8_t kSamsungAcAuto = 0;
    -
    117 const uint8_t kSamsungAcCool = 1;
    -
    118 const uint8_t kSamsungAcDry = 2;
    -
    119 const uint8_t kSamsungAcFan = 3;
    -
    120 const uint8_t kSamsungAcHeat = 4;
    -
    121 const uint8_t kSamsungAcFanAuto = 0;
    -
    122 const uint8_t kSamsungAcFanLow = 2;
    -
    123 const uint8_t kSamsungAcFanMed = 4;
    -
    124 const uint8_t kSamsungAcFanHigh = 5;
    -
    125 const uint8_t kSamsungAcFanAuto2 = 6;
    -
    126 const uint8_t kSamsungAcFanTurbo = 7;
    -
    127 const uint16_t kSamsungAcSectionLength = 7;
    -
    128 const uint64_t kSamsungAcPowerSection = 0x1D20F00000000;
    -
    129 
    -
    130 // Classes
    -
    132 class IRSamsungAc {
    -
    133  public:
    -
    134  explicit IRSamsungAc(const uint16_t pin, const bool inverted = false,
    -
    135  const bool use_modulation = true);
    -
    136  void stateReset(const bool forcepower = true, const bool initialPower = true);
    -
    137 #if SEND_SAMSUNG_AC
    -
    138  void send(const uint16_t repeat = kSamsungAcDefaultRepeat,
    -
    139  const bool calcchecksum = true);
    -
    140  void sendExtended(const uint16_t repeat = kSamsungAcDefaultRepeat,
    -
    141  const bool calcchecksum = true);
    -
    142  void sendOn(const uint16_t repeat = kSamsungAcDefaultRepeat);
    -
    143  void sendOff(const uint16_t repeat = kSamsungAcDefaultRepeat);
    -
    148  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    149 #endif // SEND_SAMSUNG_AC
    -
    150  void begin(void);
    -
    151  void on(void);
    -
    152  void off(void);
    -
    153  void setPower(const bool on);
    -
    154  bool getPower(void) const;
    -
    155  void setTemp(const uint8_t temp);
    -
    156  uint8_t getTemp(void) const;
    -
    157  void setFan(const uint8_t speed);
    -
    158  uint8_t getFan(void) const;
    -
    159  void setMode(const uint8_t mode);
    -
    160  uint8_t getMode(void) const;
    -
    161  void setSwing(const bool on);
    -
    162  bool getSwing(void) const;
    -
    163  void setBeep(const bool on);
    -
    164  bool getBeep(void) const;
    -
    165  void setClean(const bool on);
    -
    166  bool getClean(void) const;
    -
    167  void setQuiet(const bool on);
    -
    168  bool getQuiet(void) const;
    -
    169  void setPowerful(const bool on);
    -
    170  bool getPowerful(void) const;
    -
    171  void setBreeze(const bool on);
    -
    172  bool getBreeze(void) const;
    -
    173  void setDisplay(const bool on);
    -
    174  bool getDisplay(void) const;
    -
    175  void setIon(const bool on);
    -
    176  bool getIon(void) const;
    -
    177  uint8_t* getRaw(void);
    -
    178  void setRaw(const uint8_t new_code[],
    -
    179  const uint16_t length = kSamsungAcStateLength);
    -
    180  static bool validChecksum(const uint8_t state[],
    -
    181  const uint16_t length = kSamsungAcStateLength);
    -
    182  static uint8_t calcChecksum(const uint8_t state[],
    -
    183  const uint16_t length = kSamsungAcStateLength);
    -
    184  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    185  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    186  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    187  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    188  stdAc::state_t toCommon(void) const;
    -
    189  String toString(void) const;
    -
    190 #ifndef UNIT_TEST
    -
    191 
    -
    192  private:
    - -
    194 #else // UNIT_TEST
    -
    195  IRsendTest _irsend;
    -
    197 #endif // UNIT_TEST
    - -
    200  bool _forcepower;
    - -
    202  void checksum(const uint16_t length = kSamsungAcStateLength);
    -
    203 };
    -
    204 
    -
    205 #endif // IR_SAMSUNG_H_
    -
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Samsung.cpp:692
    -
    const uint8_t kSamsungAcDry
    Definition: ir_Samsung.h:118
    -
    Class for handling detailed Samsung A/C messages.
    Definition: ir_Samsung.h:132
    -
    bool _forcepower
    Hack to know when we need to send a special power mesg.
    Definition: ir_Samsung.h:200
    -
    const uint8_t kSamsungAcCool
    Definition: ir_Samsung.h:117
    -
    Native representation of a Samsung A/C message.
    Definition: ir_Samsung.h:41
    -
    bool getIon(void) const
    Get the Ion (Filter) setting of the A/C.
    Definition: ir_Samsung.cpp:627
    -
    void setQuiet(const bool on)
    Set the Quiet setting of the A/C.
    Definition: ir_Samsung.cpp:558
    -
    const uint8_t kSamsungAcFanMed
    Definition: ir_Samsung.h:123
    -
    void send(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
    Send the current internal state as an IR message.
    Definition: ir_Samsung.cpp:341
    -
    const uint8_t kSamsungAcFanAuto2
    Definition: ir_Samsung.h:125
    -
    const uint8_t kSamsungAcAuto
    Definition: ir_Samsung.h:116
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Samsung.h:193
    -
    IRSamsungAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Samsung.cpp:270
    -
    bool getPowerful(void) const
    Get the Powerful (Turbo) setting of the A/C.
    Definition: ir_Samsung.cpp:570
    -
    const uint8_t kSamsungAcFanHigh
    Definition: ir_Samsung.h:124
    -
    bool getClean(void) const
    Get the Clean setting of the A/C.
    Definition: ir_Samsung.cpp:539
    -
    uint8_t Temp
    Definition: ir_Samsung.h:79
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kSamsungAcFan
    Definition: ir_Samsung.h:119
    -
    void setBreeze(const bool on)
    Closes the vanes over the fan outlet, to stop direct wind. Aka. WindFree.
    Definition: ir_Samsung.cpp:604
    -
    uint8_t Swing
    Definition: ir_Samsung.h:67
    -
    uint8_t Ion
    Definition: ir_Samsung.h:76
    -
    const uint8_t kSamsungAcSwingStop
    Definition: ir_Samsung.h:110
    -
    const uint16_t kSamsungAcDefaultRepeat
    Definition: IRremoteESP8266.h:1113
    -
    bool getDisplay(void) const
    Get the Display (Light/LED) setting of the A/C.
    Definition: ir_Samsung.cpp:615
    -
    SamsungProtocol _
    Definition: ir_Samsung.h:199
    -
    const uint8_t kSamsungAcPowerful10On
    Definition: ir_Samsung.h:111
    - -
    void setSwing(const bool on)
    Set the vertical swing setting of the A/C.
    Definition: ir_Samsung.cpp:521
    -
    bool getQuiet(void) const
    Get the Quiet setting of the A/C.
    Definition: ir_Samsung.cpp:552
    -
    const uint16_t kSamsungAcSectionLength
    Definition: ir_Samsung.h:127
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Samsung.cpp:291
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    void setIon(const bool on)
    Set the Ion (Filter) setting of the A/C.
    Definition: ir_Samsung.cpp:633
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Samsung.cpp:455
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kSamsungAcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Samsung.cpp:416
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Samsung.cpp:719
    -
    void sendOff(const uint16_t repeat=kSamsungAcDefaultRepeat)
    Send the special extended "Off" message as the library can't seem to reproduce this message automatic...
    Definition: ir_Samsung.cpp:396
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Samsung.cpp:427
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Samsung.cpp:653
    -
    uint8_t Quiet1
    Definition: ir_Samsung.h:48
    -
    uint8_t Beep
    Definition: ir_Samsung.h:87
    -
    const uint8_t kSamsungAcPowerfulMask8
    Definition: ir_Samsung.h:108
    -
    const uint16_t kSamsungAcStateLength
    Definition: IRremoteESP8266.h:1109
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Samsung.cpp:316
    -
    bool getBeep(void) const
    Get the Beep setting of the A/C.
    Definition: ir_Samsung.cpp:527
    - -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Samsung.cpp:447
    -
    const uint64_t kSamsungAcPowerSection
    Definition: ir_Samsung.h:128
    -
    void setPowerful(const bool on)
    Set the Powerful (Turbo) setting of the A/C.
    Definition: ir_Samsung.cpp:578
    -
    const uint16_t kSamsungAcExtendedStateLength
    Definition: IRremoteESP8266.h:1111
    -
    uint8_t Mode
    Definition: ir_Samsung.h:83
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Samsung.cpp:434
    -
    uint8_t pad1[6]
    Definition: ir_Samsung.h:95
    -
    uint8_t Display
    Definition: ir_Samsung.h:72
    -
    void setDisplay(const bool on)
    Set the Display (Light/LED) setting of the A/C.
    Definition: ir_Samsung.cpp:621
    -
    uint8_t Clean11
    Definition: ir_Samsung.h:77
    -
    const uint8_t kSamsungAcBreezeOn
    Definition: ir_Samsung.h:112
    -
    void stateReset(const bool forcepower=true, const bool initialPower=true)
    Reset the internal state of the emulation.
    Definition: ir_Samsung.cpp:280
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kSamsungAcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Samsung.cpp:297
    -
    bool _lastsentpowerstate
    Definition: ir_Samsung.h:201
    -
    const uint8_t kSamsungAcAutoTemp
    Definition: ir_Samsung.h:115
    -
    const uint8_t kSamsungAcSwingMove
    Definition: ir_Samsung.h:109
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Samsung.cpp:461
    -
    const uint8_t kSamsungAcFanLow
    Definition: ir_Samsung.h:122
    -
    void setClean(const bool on)
    Set the Clean setting of the A/C.
    Definition: ir_Samsung.cpp:545
    -
    uint8_t Breeze
    Definition: ir_Samsung.h:102
    -
    const uint8_t kSamsungAcHeat
    Definition: ir_Samsung.h:120
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Samsung.cpp:667
    -
    void sendOn(const uint16_t repeat=kSamsungAcDefaultRepeat)
    Send the special extended "On" message as the library can't seem to reproduce this message automatica...
    Definition: ir_Samsung.cpp:383
    -
    const uint8_t kSamsungAcFanAuto
    Definition: ir_Samsung.h:121
    -
    void checksum(const uint16_t length=kSamsungAcStateLength)
    Update the checksum for the internal state.
    Definition: ir_Samsung.cpp:329
    -
    void setBeep(const bool on)
    Set the Beep setting of the A/C.
    Definition: ir_Samsung.cpp:533
    -
    uint8_t Power1
    Definition: ir_Samsung.h:49
    -
    uint8_t Sum1
    Definition: ir_Samsung.h:94
    -
    bool getSwing(void) const
    Get the vertical swing setting of the A/C.
    Definition: ir_Samsung.cpp:513
    -
    uint8_t Powerful8
    Definition: ir_Samsung.h:64
    -
    uint8_t Powerful10
    Definition: ir_Samsung.h:71
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Samsung.cpp:640
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Samsung.h:148
    -
    uint8_t Fan
    Definition: ir_Samsung.h:82
    -
    void sendExtended(const uint16_t repeat=kSamsungAcDefaultRepeat, const bool calcchecksum=true)
    Send the extended current internal state as an IR message.
    Definition: ir_Samsung.cpp:362
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Samsung.cpp:485
    -
    const uint8_t kSamsungAcMaxTemp
    Definition: ir_Samsung.h:114
    -
    uint8_t Clean10
    Definition: ir_Samsung.h:74
    -
    uint8_t Sum2
    Definition: ir_Samsung.h:98
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Samsung.cpp:430
    -
    bool getBreeze(void) const
    Are the vanes closed over the fan outlet, to stop direct wind? Aka. WindFree.
    Definition: ir_Samsung.cpp:596
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Samsung.cpp:680
    -
    uint8_t pad0[3]
    Definition: ir_Samsung.h:52
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Samsung.cpp:441
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Samsung.cpp:408
    -
    const uint8_t kSamsungAcFanTurbo
    Definition: ir_Samsung.h:126
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Samsung.cpp:505
    -
    uint8_t raw[kSamsungAcExtendedStateLength]
    State in code form.
    Definition: ir_Samsung.h:42
    -
    const uint8_t kSamsungAcMinTemp
    Definition: ir_Samsung.h:113
    -
    uint8_t Power6
    Definition: ir_Samsung.h:59
    -
    uint8_t Quiet5
    Definition: ir_Samsung.h:55
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Samsung.cpp:479
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8cpp.html deleted file mode 100644 index b42bae13f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8cpp.html +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sanyo.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Sanyo.cpp File Reference
    -
    -
    - -

    Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kSanyoSa8650bHdrMark = 3500
     
    const uint16_t kSanyoSa8650bHdrSpace = 950
     
    const uint16_t kSanyoSa8650bOneMark = 2400
     
    const uint16_t kSanyoSa8650bZeroMark = 700
     
    const uint16_t kSanyoSa8650bDoubleSpaceUsecs = 800
     
    const uint16_t kSanyoSa8650bRptLength = 45000
     
    const uint16_t kSanyoLc7461AddressMask = (1 << kSanyoLC7461AddressBits) - 1
     
    const uint16_t kSanyoLc7461CommandMask = (1 << kSanyoLC7461CommandBits) - 1
     
    const uint16_t kSanyoLc7461HdrMark = 9000
     
    const uint16_t kSanyoLc7461HdrSpace = 4500
     
    const uint16_t kSanyoLc7461BitMark = 560
     
    const uint16_t kSanyoLc7461OneSpace = 1690
     
    const uint16_t kSanyoLc7461ZeroSpace = 560
     
    const uint32_t kSanyoLc7461MinCommandLength = 108000
     
    const uint16_t kSanyoLc7461MinGap
     
    const uint16_t kSanyoAcHdrMark = 8500
     uSeconds More...
     
    const uint16_t kSanyoAcHdrSpace = 4200
     uSeconds More...
     
    const uint16_t kSanyoAcBitMark = 500
     uSeconds More...
     
    const uint16_t kSanyoAcOneSpace = 1600
     uSeconds More...
     
    const uint16_t kSanyoAcZeroSpace = 550
     uSeconds More...
     
    const uint32_t kSanyoAcGap = kDefaultMessageGap
     uSeconds (Guess only) More...
     
    const uint16_t kSanyoAcFreq = 38000
     Hz. (Guess only) More...
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSanyoAcBitMark

    - -
    -
    - - - - -
    const uint16_t kSanyoAcBitMark = 500
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kSanyoAcFreq

    - -
    -
    - - - - -
    const uint16_t kSanyoAcFreq = 38000
    -
    - -

    Hz. (Guess only)

    - -
    -
    - -

    ◆ kSanyoAcGap

    - -
    -
    - - - - -
    const uint32_t kSanyoAcGap = kDefaultMessageGap
    -
    - -

    uSeconds (Guess only)

    - -
    -
    - -

    ◆ kSanyoAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kSanyoAcHdrMark = 8500
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kSanyoAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoAcHdrSpace = 4200
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kSanyoAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoAcOneSpace = 1600
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kSanyoAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoAcZeroSpace = 550
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kSanyoLc7461AddressMask

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461AddressMask = (1 << kSanyoLC7461AddressBits) - 1
    -
    - -
    -
    - -

    ◆ kSanyoLc7461BitMark

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461BitMark = 560
    -
    - -
    -
    - -

    ◆ kSanyoLc7461CommandMask

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461CommandMask = (1 << kSanyoLC7461CommandBits) - 1
    -
    - -
    -
    - -

    ◆ kSanyoLc7461HdrMark

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461HdrMark = 9000
    -
    - -
    -
    - -

    ◆ kSanyoLc7461HdrSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461HdrSpace = 4500
    -
    - -
    -
    - -

    ◆ kSanyoLc7461MinCommandLength

    - -
    -
    - - - - -
    const uint32_t kSanyoLc7461MinCommandLength = 108000
    -
    - -
    -
    - -

    ◆ kSanyoLc7461MinGap

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461MinGap
    -
    -
    - -

    ◆ kSanyoLc7461OneSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461OneSpace = 1690
    -
    - -
    -
    - -

    ◆ kSanyoLc7461ZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoLc7461ZeroSpace = 560
    -
    - -
    -
    - -

    ◆ kSanyoSa8650bDoubleSpaceUsecs

    - -
    -
    - - - - -
    const uint16_t kSanyoSa8650bDoubleSpaceUsecs = 800
    -
    - -
    -
    - -

    ◆ kSanyoSa8650bHdrMark

    - -
    -
    - - - - -
    const uint16_t kSanyoSa8650bHdrMark = 3500
    -
    - -
    -
    - -

    ◆ kSanyoSa8650bHdrSpace

    - -
    -
    - - - - -
    const uint16_t kSanyoSa8650bHdrSpace = 950
    -
    - -
    -
    - -

    ◆ kSanyoSa8650bOneMark

    - -
    -
    - - - - -
    const uint16_t kSanyoSa8650bOneMark = 2400
    -
    - -
    -
    - -

    ◆ kSanyoSa8650bRptLength

    - -
    -
    - - - - -
    const uint16_t kSanyoSa8650bRptLength = 45000
    -
    - -
    -
    - -

    ◆ kSanyoSa8650bZeroMark

    - -
    -
    - - - - -
    const uint16_t kSanyoSa8650bZeroMark = 700
    -
    - -
    -
    -
    -
    const uint16_t kSanyoLc7461HdrMark
    Definition: ir_Sanyo.cpp:48
    -
    const uint32_t kSanyoLc7461MinCommandLength
    Definition: ir_Sanyo.cpp:53
    -
    const uint16_t kSanyoLC7461Bits
    Definition: IRremoteESP8266.h:1119
    -
    const uint16_t kSanyoLc7461HdrSpace
    Definition: ir_Sanyo.cpp:49
    -
    const uint16_t kSanyoLc7461BitMark
    Definition: ir_Sanyo.cpp:50
    -
    const uint16_t kSanyoLc7461ZeroSpace
    Definition: ir_Sanyo.cpp:52
    -
    const uint16_t kSanyoLc7461OneSpace
    Definition: ir_Sanyo.cpp:51
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h.html deleted file mode 100644 index 988ffdf10..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sanyo.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Sanyo.h File Reference
    -
    -
    - -

    Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  SanyoProtocol
     Native representation of a Sanyo A/C message. More...
     
    class  IRSanyoAc
     Class for handling detailed Sanyo A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kSanyoAcTempMin = 16
     Celsius. More...
     
    const uint8_t kSanyoAcTempMax = 30
     Celsius. More...
     
    const uint8_t kSanyoAcTempDelta = 4
     Celsius to Native Temp difference. More...
     
    const uint8_t kSanyoAcHourMax = 15
     0b1111 More...
     
    const uint8_t kSanyoAcHeat = 1
     0b001 More...
     
    const uint8_t kSanyoAcCool = 2
     0b010 More...
     
    const uint8_t kSanyoAcDry = 3
     0b011 More...
     
    const uint8_t kSanyoAcAuto = 4
     0b100 More...
     
    const uint8_t kSanyoAcFanAuto = 0
     0b00 More...
     
    const uint8_t kSanyoAcFanHigh = 1
     0b01 More...
     
    const uint8_t kSanyoAcFanLow = 2
     0b10 More...
     
    const uint8_t kSanyoAcFanMedium = 3
     0b11 More...
     
    const uint8_t kSanyoAcPowerOff = 0b01
     Off. More...
     
    const uint8_t kSanyoAcPowerOn = 0b10
     On. More...
     
    const uint8_t kSanyoAcSwingVAuto = 0
     0b000 More...
     
    const uint8_t kSanyoAcSwingVLowest = 2
     0b010 More...
     
    const uint8_t kSanyoAcSwingVLow = 3
     0b011 More...
     
    const uint8_t kSanyoAcSwingVLowerMiddle = 4
     0b100 More...
     
    const uint8_t kSanyoAcSwingVUpperMiddle = 5
     0b101 More...
     
    const uint8_t kSanyoAcSwingVHigh = 6
     0b110 More...
     
    const uint8_t kSanyoAcSwingVHighest = 7
     0b111 More...
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSanyoAcAuto

    - -
    -
    - - - - -
    const uint8_t kSanyoAcAuto = 4
    -
    - -

    0b100

    - -
    -
    - -

    ◆ kSanyoAcCool

    - -
    -
    - - - - -
    const uint8_t kSanyoAcCool = 2
    -
    - -

    0b010

    - -
    -
    - -

    ◆ kSanyoAcDry

    - -
    -
    - - - - -
    const uint8_t kSanyoAcDry = 3
    -
    - -

    0b011

    - -
    -
    - -

    ◆ kSanyoAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kSanyoAcFanAuto = 0
    -
    - -

    0b00

    - -
    -
    - -

    ◆ kSanyoAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kSanyoAcFanHigh = 1
    -
    - -

    0b01

    - -
    -
    - -

    ◆ kSanyoAcFanLow

    - -
    -
    - - - - -
    const uint8_t kSanyoAcFanLow = 2
    -
    - -

    0b10

    - -
    -
    - -

    ◆ kSanyoAcFanMedium

    - -
    -
    - - - - -
    const uint8_t kSanyoAcFanMedium = 3
    -
    - -

    0b11

    - -
    -
    - -

    ◆ kSanyoAcHeat

    - -
    -
    - - - - -
    const uint8_t kSanyoAcHeat = 1
    -
    - -

    0b001

    - -
    -
    - -

    ◆ kSanyoAcHourMax

    - -
    -
    - - - - -
    const uint8_t kSanyoAcHourMax = 15
    -
    - -

    0b1111

    - -
    -
    - -

    ◆ kSanyoAcPowerOff

    - -
    -
    - - - - -
    const uint8_t kSanyoAcPowerOff = 0b01
    -
    - -

    Off.

    - -
    -
    - -

    ◆ kSanyoAcPowerOn

    - -
    -
    - - - - -
    const uint8_t kSanyoAcPowerOn = 0b10
    -
    - -

    On.

    - -
    -
    - -

    ◆ kSanyoAcSwingVAuto

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVAuto = 0
    -
    - -

    0b000

    - -
    -
    - -

    ◆ kSanyoAcSwingVHigh

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVHigh = 6
    -
    - -

    0b110

    - -
    -
    - -

    ◆ kSanyoAcSwingVHighest

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVHighest = 7
    -
    - -

    0b111

    - -
    -
    - -

    ◆ kSanyoAcSwingVLow

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVLow = 3
    -
    - -

    0b011

    - -
    -
    - -

    ◆ kSanyoAcSwingVLowerMiddle

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVLowerMiddle = 4
    -
    - -

    0b100

    - -
    -
    - -

    ◆ kSanyoAcSwingVLowest

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVLowest = 2
    -
    - -

    0b010

    - -
    -
    - -

    ◆ kSanyoAcSwingVUpperMiddle

    - -
    -
    - - - - -
    const uint8_t kSanyoAcSwingVUpperMiddle = 5
    -
    - -

    0b101

    - -
    -
    - -

    ◆ kSanyoAcTempDelta

    - -
    -
    - - - - -
    const uint8_t kSanyoAcTempDelta = 4
    -
    - -

    Celsius to Native Temp difference.

    - -
    -
    - -

    ◆ kSanyoAcTempMax

    - -
    -
    - - - - -
    const uint8_t kSanyoAcTempMax = 30
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kSanyoAcTempMin

    - -
    -
    - - - - -
    const uint8_t kSanyoAcTempMin = 16
    -
    - -

    Celsius.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h_source.html deleted file mode 100644 index 9c0b3d6be..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sanyo_8h_source.html +++ /dev/null @@ -1,319 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sanyo.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Sanyo.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 David Conran
    -
    2 
    -
    14 
    -
    15 // Supports:
    -
    16 // Brand: Sanyo, Model: SA 8650B - disabled
    -
    17 // Brand: Sanyo, Model: LC7461 transmitter IC (SANYO_LC7461)
    -
    18 // Brand: Sanyo, Model: SAP-K121AHA A/C (SANYO_AC)
    -
    19 // Brand: Sanyo, Model: RCS-2HS4E remote (SANYO_AC)
    -
    20 // Brand: Sanyo, Model: SAP-K242AH A/C (SANYO_AC)
    -
    21 // Brand: Sanyo, Model: RCS-2S4E remote (SANYO_AC)
    -
    22 
    -
    23 #ifndef IR_SANYO_H_
    -
    24 #define IR_SANYO_H_
    -
    25 
    -
    26 #define __STDC_LIMIT_MACROS
    -
    27 #include <stdint.h>
    -
    28 #ifdef ARDUINO
    -
    29 #include <Arduino.h>
    -
    30 #endif
    -
    31 #include "IRremoteESP8266.h"
    -
    32 #include "IRsend.h"
    -
    33 #ifdef UNIT_TEST
    -
    34 #include "IRsend_test.h"
    -
    35 #endif
    -
    36 
    - - -
    40  // Ref: https://docs.google.com/spreadsheets/d/1dYfLsnYvpjV-SgO8pdinpfuBIpSzm8Q1R5SabrLeskw/edit?usp=sharing
    -
    41  struct {
    -
    42  // Byte 0
    -
    43  uint8_t :8; // 0x6A (Fixed?)
    -
    44  // Byte 1
    -
    45  uint8_t Temp :5;
    -
    46  uint8_t :3;
    -
    47  // Byte 2
    -
    48  uint8_t SensorTemp :5;
    -
    49  uint8_t Sensor :1;
    -
    50  uint8_t Beep :1;
    -
    51  uint8_t :1;
    -
    52  // Byte 3
    -
    53  uint8_t OffHour :4;
    -
    54  uint8_t :4;
    -
    55  // Byte 4
    -
    56  uint8_t Fan :2;
    -
    57  uint8_t OffTimer :1;
    -
    58  uint8_t :1;
    -
    59  uint8_t Mode :3;
    -
    60  uint8_t :1;
    -
    61  // Byte 5
    -
    62  uint8_t SwingV :3;
    -
    63  uint8_t :3;
    -
    64  uint8_t Power :2;
    -
    65  // Byte 6
    -
    66  uint8_t :3;
    -
    67  uint8_t Sleep :1;
    -
    68  uint8_t :4;
    -
    69  // Byte 7
    -
    70  uint8_t :8;
    -
    71  // Byte 8
    -
    72  uint8_t Sum :8;
    -
    73  };
    -
    74 };
    -
    75 
    -
    76 // Constants
    -
    77 
    -
    78 const uint8_t kSanyoAcTempMin = 16;
    -
    79 const uint8_t kSanyoAcTempMax = 30;
    -
    80 const uint8_t kSanyoAcTempDelta = 4;
    -
    81 
    -
    82 const uint8_t kSanyoAcHourMax = 15;
    -
    83 
    -
    84 const uint8_t kSanyoAcHeat = 1;
    -
    85 const uint8_t kSanyoAcCool = 2;
    -
    86 const uint8_t kSanyoAcDry = 3;
    -
    87 const uint8_t kSanyoAcAuto = 4;
    -
    88 const uint8_t kSanyoAcFanAuto = 0;
    -
    89 const uint8_t kSanyoAcFanHigh = 1;
    -
    90 const uint8_t kSanyoAcFanLow = 2;
    -
    91 const uint8_t kSanyoAcFanMedium = 3;
    -
    92 
    -
    93 // const uint8_t kSanyoAcPowerStandby = 0b00; ///< Standby?
    -
    94 const uint8_t kSanyoAcPowerOff = 0b01;
    -
    95 const uint8_t kSanyoAcPowerOn = 0b10;
    -
    96 const uint8_t kSanyoAcSwingVAuto = 0;
    -
    97 const uint8_t kSanyoAcSwingVLowest = 2;
    -
    98 const uint8_t kSanyoAcSwingVLow = 3;
    -
    99 const uint8_t kSanyoAcSwingVLowerMiddle = 4;
    -
    100 const uint8_t kSanyoAcSwingVUpperMiddle = 5;
    -
    101 const uint8_t kSanyoAcSwingVHigh = 6;
    -
    102 const uint8_t kSanyoAcSwingVHighest = 7;
    -
    103 
    -
    104 // Classes
    -
    106 class IRSanyoAc {
    -
    107  public:
    -
    108  explicit IRSanyoAc(const uint16_t pin, const bool inverted = false,
    -
    109  const bool use_modulation = true);
    -
    110  void stateReset(void);
    -
    111 #if SEND_SANYO_AC
    -
    112  void send(const uint16_t repeat = kNoRepeat);
    -
    117  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    118 #endif // SEND_SANYO_AC
    -
    119  void begin(void);
    -
    120  void on(void);
    -
    121  void off(void);
    -
    122  void setPower(const bool on);
    -
    123  bool getPower(void) const;
    -
    124  void setTemp(const uint8_t degrees);
    -
    125  uint8_t getTemp(void) const;
    -
    126  void setSensorTemp(const uint8_t degrees);
    -
    127  uint8_t getSensorTemp(void) const;
    -
    128  void setFan(const uint8_t speed);
    -
    129  uint8_t getFan(void) const;
    -
    130  void setMode(const uint8_t mode);
    -
    131  uint8_t getMode(void) const;
    -
    132  void setSleep(const bool on);
    -
    133  bool getSleep(void) const;
    -
    134  void setSensor(const bool location);
    -
    135  bool getSensor(void) const;
    -
    136  void setBeep(const bool on);
    -
    137  bool getBeep(void) const;
    -
    138  void setSwingV(const uint8_t setting);
    -
    139  uint8_t getSwingV(void) const;
    -
    140  void setRaw(const uint8_t newState[]);
    -
    141  uint8_t* getRaw(void);
    -
    142  uint16_t getOffTimer(void) const;
    -
    143  void setOffTimer(const uint16_t mins);
    -
    144  static bool validChecksum(const uint8_t state[],
    -
    145  const uint16_t length = kSanyoAcStateLength);
    -
    146  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    147  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    148  static uint8_t convertSwingV(const stdAc::swingv_t position);
    -
    149  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    150  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    151  static stdAc::swingv_t toCommonSwingV(const uint8_t setting);
    -
    152  stdAc::state_t toCommon(void) const;
    -
    153  String toString(void) const;
    -
    154 #ifndef UNIT_TEST
    -
    155 
    -
    156  private:
    - -
    158 #else // UNIT_TEST
    -
    159  IRsendTest _irsend;
    -
    161 #endif // UNIT_TEST
    - -
    164  void checksum(void);
    -
    165  static uint8_t calcChecksum(const uint8_t state[],
    -
    166  const uint16_t length = kSanyoAcStateLength);
    -
    167 };
    -
    168 
    -
    169 #endif // IR_SANYO_H_
    -
    -
    uint8_t Sleep
    Definition: ir_Sanyo.h:67
    -
    SanyoProtocol _
    Definition: ir_Sanyo.h:163
    -
    const uint8_t kSanyoAcTempDelta
    Celsius to Native Temp difference.
    Definition: ir_Sanyo.h:80
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    uint8_t getSensorTemp(void) const
    Get the current sensor temperature setting.
    Definition: ir_Sanyo.cpp:452
    -
    uint8_t Fan
    Definition: ir_Sanyo.h:56
    -
    uint8_t Beep
    Definition: ir_Sanyo.h:50
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    static uint8_t convertSwingV(const stdAc::swingv_t position)
    Convert a stdAc::swingv_t enum into it's native setting.
    Definition: ir_Sanyo.cpp:513
    -
    const uint8_t kSanyoAcHourMax
    0b1111
    Definition: ir_Sanyo.h:82
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kSanyoAcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Sanyo.cpp:345
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Sanyo.cpp:385
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Sanyo.cpp:379
    -
    const uint8_t kSanyoAcCool
    0b010
    Definition: ir_Sanyo.h:85
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Sanyo.h:157
    - -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Sanyo.cpp:373
    -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as IR messages.
    Definition: ir_Sanyo.cpp:322
    -
    const uint8_t kSanyoAcDry
    0b011
    Definition: ir_Sanyo.h:86
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Sanyo.cpp:392
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Sanyo.cpp:464
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kSanyoAcSwingVHigh
    0b110
    Definition: ir_Sanyo.h:101
    -
    Class for handling detailed Sanyo A/C messages.
    Definition: ir_Sanyo.h:106
    -
    bool getSleep(void) const
    Get the Sleep (Night Setback) setting of the A/C.
    Definition: ir_Sanyo.cpp:547
    -
    const uint8_t kSanyoAcPowerOff
    Off.
    Definition: ir_Sanyo.h:94
    -
    void setSensor(const bool location)
    Set the Sensor Location setting of the A/C. i.e. Where the ambient temperature is measured.
    Definition: ir_Sanyo.cpp:554
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kSanyoAcFanAuto
    0b00
    Definition: ir_Sanyo.h:88
    -
    bool getSensor(void) const
    Get the Sensor Location setting of the A/C. i.e. Where the ambient temperature is measured.
    Definition: ir_Sanyo.cpp:561
    -
    void setTemp(const uint8_t degrees)
    Set the desired temperature.
    Definition: ir_Sanyo.cpp:430
    -
    uint8_t OffTimer
    Definition: ir_Sanyo.h:57
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Sanyo.h:117
    -
    const uint8_t kSanyoAcSwingVHighest
    0b111
    Definition: ir_Sanyo.h:102
    - -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Sanyo.cpp:626
    -
    const uint8_t kSanyoAcSwingVAuto
    0b000
    Definition: ir_Sanyo.h:96
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    const uint8_t kSanyoAcTempMin
    Celsius.
    Definition: ir_Sanyo.h:78
    -
    const uint8_t kSanyoAcFanHigh
    0b01
    Definition: ir_Sanyo.h:89
    -
    const uint8_t kSanyoAcSwingVLow
    0b011
    Definition: ir_Sanyo.h:98
    -
    IRSanyoAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Sanyo.cpp:304
    -
    void checksum(void)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Sanyo.cpp:359
    -
    const uint8_t kSanyoAcAuto
    0b100
    Definition: ir_Sanyo.h:87
    -
    uint16_t getOffTimer(void) const
    Get the nr of minutes the Off Timer is set to.
    Definition: ir_Sanyo.cpp:581
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Sanyo.cpp:600
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Sanyo.cpp:407
    -
    uint8_t raw[kSanyoAcStateLength]
    The state in IR code form.
    Definition: ir_Sanyo.h:39
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Sanyo.cpp:317
    -
    uint8_t OffHour
    Definition: ir_Sanyo.h:53
    -
    const uint8_t kSanyoAcHeat
    0b001
    Definition: ir_Sanyo.h:84
    -
    void setSwingV(const uint8_t setting)
    Set the vertical swing setting of the A/C.
    Definition: ir_Sanyo.cpp:502
    -
    uint8_t SensorTemp
    Definition: ir_Sanyo.h:48
    -
    static stdAc::swingv_t toCommonSwingV(const uint8_t setting)
    Convert a native vertical swing postion to it's common equivalent.
    Definition: ir_Sanyo.cpp:527
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Sanyo.cpp:471
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Sanyo.cpp:419
    -
    const uint8_t kSanyoAcSwingVUpperMiddle
    0b101
    Definition: ir_Sanyo.h:100
    -
    uint8_t Mode
    Definition: ir_Sanyo.h:59
    -
    Native representation of a Sanyo A/C message.
    Definition: ir_Sanyo.h:38
    -
    uint8_t getTemp(void) const
    Get the current desired temperature setting.
    Definition: ir_Sanyo.cpp:438
    -
    uint8_t getSwingV(void) const
    Get the vertical swing setting of the A/C.
    Definition: ir_Sanyo.cpp:496
    -
    const uint8_t kSanyoAcFanMedium
    0b11
    Definition: ir_Sanyo.h:91
    -
    void setSleep(const bool on)
    Set the Sleep (Night Setback) setting of the A/C.
    Definition: ir_Sanyo.cpp:541
    -
    uint8_t Temp
    Definition: ir_Sanyo.h:45
    -
    const uint8_t kSanyoAcPowerOn
    On.
    Definition: ir_Sanyo.h:95
    -
    const uint8_t kSanyoAcTempMax
    Celsius.
    Definition: ir_Sanyo.h:79
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Sanyo.cpp:458
    -
    const uint8_t kSanyoAcFanLow
    0b10
    Definition: ir_Sanyo.h:90
    -
    const uint8_t kSanyoAcSwingVLowest
    0b010
    Definition: ir_Sanyo.h:97
    -
    uint8_t Power
    Definition: ir_Sanyo.h:64
    -
    const uint8_t kSanyoAcSwingVLowerMiddle
    0b100
    Definition: ir_Sanyo.h:99
    -
    void setBeep(const bool on)
    Set the Beep setting of the A/C.
    Definition: ir_Sanyo.cpp:567
    -
    const uint16_t kSanyoAcStateLength
    Definition: IRremoteESP8266.h:1114
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol with all integrity checks passing.
    Definition: ir_Sanyo.cpp:330
    -
    void setSensorTemp(const uint8_t degrees)
    Set the sensor temperature.
    Definition: ir_Sanyo.cpp:444
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Sanyo.cpp:310
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Sanyo.cpp:366
    -
    uint8_t Sum
    Definition: ir_Sanyo.h:72
    -
    void setRaw(const uint8_t newState[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Sanyo.cpp:337
    -
    void setOffTimer(const uint16_t mins)
    Set the nr of minutes for the Off Timer.
    Definition: ir_Sanyo.cpp:592
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kSanyoAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Sanyo.cpp:354
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t Sensor
    Sensor location (0 = remote, 1 = A/C)
    Definition: ir_Sanyo.h:49
    -
    bool getBeep(void) const
    Get the Beep setting of the A/C.
    Definition: ir_Sanyo.cpp:573
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Sanyo.cpp:485
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Sanyo.cpp:369
    -
    uint8_t SwingV
    Definition: ir_Sanyo.h:62
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8cpp.html deleted file mode 100644 index cac4947a5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8cpp.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sharp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Sharp.cpp File Reference
    -
    -
    - -

    Support for Sharp protocols. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kSharpTick = 26
     
    const uint16_t kSharpBitMarkTicks = 10
     
    const uint16_t kSharpBitMark = kSharpBitMarkTicks * kSharpTick
     
    const uint16_t kSharpOneSpaceTicks = 70
     
    const uint16_t kSharpOneSpace = kSharpOneSpaceTicks * kSharpTick
     
    const uint16_t kSharpZeroSpaceTicks = 30
     
    const uint16_t kSharpZeroSpace = kSharpZeroSpaceTicks * kSharpTick
     
    const uint16_t kSharpGapTicks = 1677
     
    const uint16_t kSharpGap = kSharpGapTicks * kSharpTick
     
    const uint64_t kSharpToggleMask
     
    const uint64_t kSharpAddressMask = ((uint64_t)1 << kSharpAddressBits) - 1
     
    const uint64_t kSharpCommandMask = ((uint64_t)1 << kSharpCommandBits) - 1
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSharpAddressMask

    - -
    -
    - - - - -
    const uint64_t kSharpAddressMask = ((uint64_t)1 << kSharpAddressBits) - 1
    -
    - -
    -
    - -

    ◆ kSharpBitMark

    - -
    -
    - - - - -
    const uint16_t kSharpBitMark = kSharpBitMarkTicks * kSharpTick
    -
    - -
    -
    - -

    ◆ kSharpBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kSharpBitMarkTicks = 10
    -
    - -
    -
    - -

    ◆ kSharpCommandMask

    - -
    -
    - - - - -
    const uint64_t kSharpCommandMask = ((uint64_t)1 << kSharpCommandBits) - 1
    -
    - -
    -
    - -

    ◆ kSharpGap

    - -
    -
    - - - - -
    const uint16_t kSharpGap = kSharpGapTicks * kSharpTick
    -
    - -
    -
    - -

    ◆ kSharpGapTicks

    - -
    -
    - - - - -
    const uint16_t kSharpGapTicks = 1677
    -
    - -
    -
    - -

    ◆ kSharpOneSpace

    - -
    -
    - - - - -
    const uint16_t kSharpOneSpace = kSharpOneSpaceTicks * kSharpTick
    -
    - -
    -
    - -

    ◆ kSharpOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSharpOneSpaceTicks = 70
    -
    - -
    -
    - -

    ◆ kSharpTick

    - -
    -
    - - - - -
    const uint16_t kSharpTick = 26
    -
    - -
    -
    - -

    ◆ kSharpToggleMask

    - -
    -
    - - - - -
    const uint64_t kSharpToggleMask
    -
    -Initial value:
    =
    -
    ((uint64_t)1 << (kSharpBits - kSharpAddressBits)) - 1
    -
    -
    -
    - -

    ◆ kSharpZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSharpZeroSpace = kSharpZeroSpaceTicks * kSharpTick
    -
    - -
    -
    - -

    ◆ kSharpZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSharpZeroSpaceTicks = 30
    -
    - -
    -
    -
    -
    const uint16_t kSharpBits
    Definition: IRremoteESP8266.h:1123
    -
    const uint8_t kSharpAddressBits
    Definition: IRremoteESP8266.h:1121
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h.html deleted file mode 100644 index 50886cbca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h.html +++ /dev/null @@ -1,793 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sharp.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Sharp.h File Reference
    -
    -
    - -

    Support for Sharp protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  SharpProtocol
     Native representation of a Sharp A/C message. More...
     
    class  IRSharpAc
     Class for handling detailed Sharp A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kSharpAcHdrMark = 3800
     
    const uint16_t kSharpAcHdrSpace = 1900
     
    const uint16_t kSharpAcBitMark = 470
     
    const uint16_t kSharpAcZeroSpace = 500
     
    const uint16_t kSharpAcOneSpace = 1400
     
    const uint32_t kSharpAcGap = kDefaultMessageGap
     
    const uint8_t kSharpAcByteTemp = 4
     
    const uint8_t kSharpAcMinTemp = 15
     
    const uint8_t kSharpAcMaxTemp = 30
     
    const uint8_t kSharpAcPowerUnknown = 0
     
    const uint8_t kSharpAcPowerOnFromOff = 1
     
    const uint8_t kSharpAcPowerOff = 2
     
    const uint8_t kSharpAcPowerOn = 3
     
    const uint8_t kSharpAcPowerSetSpecialOn = 6
     
    const uint8_t kSharpAcPowerSetSpecialOff = 7
     
    const uint8_t kSharpAcPowerTimerSetting = 8
     
    const uint8_t kSharpAcAuto = 0b00
     
    const uint8_t kSharpAcFan = 0b00
     
    const uint8_t kSharpAcDry = 0b11
     
    const uint8_t kSharpAcCool = 0b10
     
    const uint8_t kSharpAcHeat = 0b01
     
    const uint8_t kSharpAcFanAuto = 0b010
     
    const uint8_t kSharpAcFanMin = 0b100
     
    const uint8_t kSharpAcFanMed = 0b011
     
    const uint8_t kSharpAcFanA705Low = 0b011
     
    const uint8_t kSharpAcFanHigh = 0b101
     
    const uint8_t kSharpAcFanA705Med = 0b101
     
    const uint8_t kSharpAcFanMax = 0b111
     
    const uint8_t kSharpAcTimerIncrement = 30
     
    const uint8_t kSharpAcTimerHoursOff = 0b0000
     
    const uint8_t kSharpAcTimerHoursMax = 0b1100
     
    const uint8_t kSharpAcOffTimerType = 0b0
     
    const uint8_t kSharpAcOnTimerType = 0b1
     
    const uint8_t kSharpAcSwingToggle = 0b111
     
    const uint8_t kSharpAcSwingNoToggle = 0b000
     
    const uint8_t kSharpAcSpecialPower = 0x00
     
    const uint8_t kSharpAcSpecialTurbo = 0x01
     
    const uint8_t kSharpAcSpecialTempEcono = 0x04
     
    const uint8_t kSharpAcSpecialFan = 0x05
     
    const uint8_t kSharpAcSpecialSwing = 0x06
     
    const uint8_t kSharpAcSpecialTimer = 0xC0
     
    const uint8_t kSharpAcSpecialTimerHalfHour = 0xDE
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSharpAcAuto

    - -
    -
    - - - - -
    const uint8_t kSharpAcAuto = 0b00
    -
    - -
    -
    - -

    ◆ kSharpAcBitMark

    - -
    -
    - - - - -
    const uint16_t kSharpAcBitMark = 470
    -
    - -
    -
    - -

    ◆ kSharpAcByteTemp

    - -
    -
    - - - - -
    const uint8_t kSharpAcByteTemp = 4
    -
    - -
    -
    - -

    ◆ kSharpAcCool

    - -
    -
    - - - - -
    const uint8_t kSharpAcCool = 0b10
    -
    - -
    -
    - -

    ◆ kSharpAcDry

    - -
    -
    - - - - -
    const uint8_t kSharpAcDry = 0b11
    -
    - -
    -
    - -

    ◆ kSharpAcFan

    - -
    -
    - - - - -
    const uint8_t kSharpAcFan = 0b00
    -
    - -
    -
    - -

    ◆ kSharpAcFanA705Low

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanA705Low = 0b011
    -
    - -
    -
    - -

    ◆ kSharpAcFanA705Med

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanA705Med = 0b101
    -
    - -
    -
    - -

    ◆ kSharpAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanAuto = 0b010
    -
    - -
    -
    - -

    ◆ kSharpAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanHigh = 0b101
    -
    - -
    -
    - -

    ◆ kSharpAcFanMax

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanMax = 0b111
    -
    - -
    -
    - -

    ◆ kSharpAcFanMed

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanMed = 0b011
    -
    - -
    -
    - -

    ◆ kSharpAcFanMin

    - -
    -
    - - - - -
    const uint8_t kSharpAcFanMin = 0b100
    -
    - -
    -
    - -

    ◆ kSharpAcGap

    - -
    -
    - - - - -
    const uint32_t kSharpAcGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kSharpAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kSharpAcHdrMark = 3800
    -
    - -
    -
    - -

    ◆ kSharpAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kSharpAcHdrSpace = 1900
    -
    - -
    -
    - -

    ◆ kSharpAcHeat

    - -
    -
    - - - - -
    const uint8_t kSharpAcHeat = 0b01
    -
    - -
    -
    - -

    ◆ kSharpAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kSharpAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kSharpAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kSharpAcMinTemp = 15
    -
    - -
    -
    - -

    ◆ kSharpAcOffTimerType

    - -
    -
    - - - - -
    const uint8_t kSharpAcOffTimerType = 0b0
    -
    - -
    -
    - -

    ◆ kSharpAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kSharpAcOneSpace = 1400
    -
    - -
    -
    - -

    ◆ kSharpAcOnTimerType

    - -
    -
    - - - - -
    const uint8_t kSharpAcOnTimerType = 0b1
    -
    - -
    -
    - -

    ◆ kSharpAcPowerOff

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerOff = 2
    -
    - -
    -
    - -

    ◆ kSharpAcPowerOn

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerOn = 3
    -
    - -
    -
    - -

    ◆ kSharpAcPowerOnFromOff

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerOnFromOff = 1
    -
    - -
    -
    - -

    ◆ kSharpAcPowerSetSpecialOff

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerSetSpecialOff = 7
    -
    - -
    -
    - -

    ◆ kSharpAcPowerSetSpecialOn

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerSetSpecialOn = 6
    -
    - -
    -
    - -

    ◆ kSharpAcPowerTimerSetting

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerTimerSetting = 8
    -
    - -
    -
    - -

    ◆ kSharpAcPowerUnknown

    - -
    -
    - - - - -
    const uint8_t kSharpAcPowerUnknown = 0
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialFan

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialFan = 0x05
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialPower

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialPower = 0x00
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialSwing

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialSwing = 0x06
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialTempEcono

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialTempEcono = 0x04
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialTimer

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialTimer = 0xC0
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialTimerHalfHour

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialTimerHalfHour = 0xDE
    -
    - -
    -
    - -

    ◆ kSharpAcSpecialTurbo

    - -
    -
    - - - - -
    const uint8_t kSharpAcSpecialTurbo = 0x01
    -
    - -
    -
    - -

    ◆ kSharpAcSwingNoToggle

    - -
    -
    - - - - -
    const uint8_t kSharpAcSwingNoToggle = 0b000
    -
    - -
    -
    - -

    ◆ kSharpAcSwingToggle

    - -
    -
    - - - - -
    const uint8_t kSharpAcSwingToggle = 0b111
    -
    - -
    -
    - -

    ◆ kSharpAcTimerHoursMax

    - -
    -
    - - - - -
    const uint8_t kSharpAcTimerHoursMax = 0b1100
    -
    - -
    -
    - -

    ◆ kSharpAcTimerHoursOff

    - -
    -
    - - - - -
    const uint8_t kSharpAcTimerHoursOff = 0b0000
    -
    - -
    -
    - -

    ◆ kSharpAcTimerIncrement

    - -
    -
    - - - - -
    const uint8_t kSharpAcTimerIncrement = 30
    -
    - -
    -
    - -

    ◆ kSharpAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSharpAcZeroSpace = 500
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h_source.html deleted file mode 100644 index 6774312d2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sharp_8h_source.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sharp.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Sharp.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 crankyoldgit
    -
    2 
    -
    14 
    -
    15 // Supports:
    -
    16 // Brand: Sharp, Model: LC-52D62U TV
    -
    17 // Brand: Sharp, Model: AY-ZP40KR A/C (A907)
    -
    18 // Brand: Sharp, Model: AH-AxSAY A/C (A907)
    -
    19 // Brand: Sharp, Model: CRMC-A907 JBEZ remote (A907)
    -
    20 // Brand: Sharp, Model: AH-PR13-GL A/C (A903)
    -
    21 // Brand: Sharp, Model: CRMC-A903JBEZ remote (A903)
    -
    22 // Brand: Sharp, Model: AH-XP10NRY A/C (A903)
    -
    23 // Brand: Sharp, Model: CRMC-820 JBEZ remote (A903)
    -
    24 // Brand: Sharp, Model: CRMC-A705 JBEZ remote (A705)
    -
    25 // Brand: Sharp, Model: AH-A12REVP-1 A/C (A903)
    -
    26 // Brand: Sharp, Model: CRMC-A863 JBEZ remote (A903)
    -
    27 
    -
    28 #ifndef IR_SHARP_H_
    -
    29 #define IR_SHARP_H_
    -
    30 
    -
    31 #ifndef UNIT_TEST
    -
    32 #include <Arduino.h>
    -
    33 #endif
    -
    34 #include "IRrecv.h"
    -
    35 #include "IRremoteESP8266.h"
    -
    36 #include "IRsend.h"
    -
    37 #ifdef UNIT_TEST
    -
    38 #include "IRsend_test.h"
    -
    39 #endif
    -
    40 #include "IRutils.h"
    -
    41 
    - - -
    45  struct {
    -
    46  // Byte 0~3
    -
    47  uint8_t pad[4];
    -
    48  // Byte 4
    -
    49  uint8_t Temp :4;
    -
    50  uint8_t Model :1;
    -
    51  uint8_t :3;
    -
    52  // Byte 5
    -
    53  uint8_t :4;
    -
    54  uint8_t PowerSpecial :4;
    -
    55  // Byte 6
    -
    56  uint8_t Mode :2;
    -
    57  uint8_t :1;
    -
    58  uint8_t Clean :1;
    -
    59  uint8_t Fan :3;
    -
    60  uint8_t :1;
    -
    61  // Byte 7
    -
    62  uint8_t TimerHours :4;
    -
    63  uint8_t :2;
    -
    64  uint8_t TimerType :1;
    -
    65  uint8_t TimerEnabled:1;
    -
    66  // Byte 8
    -
    67  uint8_t Swing :3;
    -
    68  uint8_t :5;
    -
    69  // Byte 9
    -
    70  uint8_t :8;
    -
    71  // Byte 10
    -
    72  uint8_t Special :8;
    -
    73  // Byte 11
    -
    74  uint8_t :2;
    -
    75  uint8_t Ion :1;
    -
    76  uint8_t :1;
    -
    77  uint8_t Model2 :1;
    -
    78  uint8_t :3;
    -
    79  // Byte 12
    -
    80  uint8_t :4;
    -
    81  uint8_t Sum :4;
    -
    82  };
    -
    83 };
    -
    84 
    -
    85 // Constants
    -
    86 const uint16_t kSharpAcHdrMark = 3800;
    -
    87 const uint16_t kSharpAcHdrSpace = 1900;
    -
    88 const uint16_t kSharpAcBitMark = 470;
    -
    89 const uint16_t kSharpAcZeroSpace = 500;
    -
    90 const uint16_t kSharpAcOneSpace = 1400;
    - -
    92 
    -
    93 const uint8_t kSharpAcByteTemp = 4;
    -
    94 const uint8_t kSharpAcMinTemp = 15; // Celsius
    -
    95 const uint8_t kSharpAcMaxTemp = 30; // Celsius
    -
    96 
    -
    97 const uint8_t kSharpAcPowerUnknown = 0; // 0b0000
    -
    98 const uint8_t kSharpAcPowerOnFromOff = 1; // 0b0001
    -
    99 const uint8_t kSharpAcPowerOff = 2; // 0b0010
    -
    100 const uint8_t kSharpAcPowerOn = 3; // 0b0011 (Normal)
    -
    101 const uint8_t kSharpAcPowerSetSpecialOn = 6; // 0b0110
    -
    102 const uint8_t kSharpAcPowerSetSpecialOff = 7; // 0b0111
    -
    103 const uint8_t kSharpAcPowerTimerSetting = 8; // 0b1000
    -
    104 
    -
    105 const uint8_t kSharpAcAuto = 0b00; // A907 only
    -
    106 const uint8_t kSharpAcFan = 0b00; // A705 only
    -
    107 const uint8_t kSharpAcDry = 0b11;
    -
    108 const uint8_t kSharpAcCool = 0b10;
    -
    109 const uint8_t kSharpAcHeat = 0b01; // A907 only
    -
    110 const uint8_t kSharpAcFanAuto = 0b010; // 2
    -
    111 const uint8_t kSharpAcFanMin = 0b100; // 4 (FAN1)
    -
    112 const uint8_t kSharpAcFanMed = 0b011; // 3 (FAN2)
    -
    113 const uint8_t kSharpAcFanA705Low = 0b011; // 3 (A903 too)
    -
    114 const uint8_t kSharpAcFanHigh = 0b101; // 5 (FAN3)
    -
    115 const uint8_t kSharpAcFanA705Med = 0b101; // 5 (A903 too)
    -
    116 const uint8_t kSharpAcFanMax = 0b111; // 7 (FAN4)
    -
    117 
    -
    118 const uint8_t kSharpAcTimerIncrement = 30; // Mins
    -
    119 const uint8_t kSharpAcTimerHoursOff = 0b0000;
    -
    120 const uint8_t kSharpAcTimerHoursMax = 0b1100; // 12
    -
    121 const uint8_t kSharpAcOffTimerType = 0b0;
    -
    122 const uint8_t kSharpAcOnTimerType = 0b1;
    -
    123 
    -
    124 const uint8_t kSharpAcSwingToggle = 0b111;
    -
    125 const uint8_t kSharpAcSwingNoToggle = 0b000;
    -
    126 
    -
    127 const uint8_t kSharpAcSpecialPower = 0x00;
    -
    128 const uint8_t kSharpAcSpecialTurbo = 0x01;
    -
    129 const uint8_t kSharpAcSpecialTempEcono = 0x04;
    -
    130 const uint8_t kSharpAcSpecialFan = 0x05;
    -
    131 const uint8_t kSharpAcSpecialSwing = 0x06;
    -
    132 const uint8_t kSharpAcSpecialTimer = 0xC0;
    -
    133 const uint8_t kSharpAcSpecialTimerHalfHour = 0xDE;
    -
    134 
    -
    135 // Classes
    -
    137 class IRSharpAc {
    -
    138  public:
    -
    139  explicit IRSharpAc(const uint16_t pin, const bool inverted = false,
    -
    140  const bool use_modulation = true);
    -
    141 #if SEND_SHARP_AC
    -
    142  void send(const uint16_t repeat = kSharpAcDefaultRepeat);
    -
    147  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    148 #endif // SEND_SHARP_AC
    -
    149  void begin(void);
    -
    150  void setModel(const sharp_ac_remote_model_t model);
    -
    151  sharp_ac_remote_model_t getModel(const bool raw = false) const;
    -
    152  void on(void);
    -
    153  void off(void);
    -
    154  void setPower(const bool on, const bool prev_on = true);
    -
    155  bool getPower(void) const;
    -
    156  bool isPowerSpecial(void) const;
    -
    157  void setTemp(const uint8_t temp, const bool save = true);
    -
    158  uint8_t getTemp(void) const;
    -
    159  void setFan(const uint8_t fan, const bool save = true);
    -
    160  uint8_t getFan(void) const;
    -
    161  void setMode(const uint8_t mode, const bool save = true);
    -
    162  uint8_t getMode(void) const;
    -
    163  void setSpecial(const uint8_t mode);
    -
    164  uint8_t getSpecial(void) const;
    -
    165  bool getTurbo(void) const;
    -
    166  void setTurbo(const bool on);
    -
    167  bool getSwingToggle(void) const;
    -
    168  void setSwingToggle(const bool on);
    -
    169  bool getIon(void) const;
    -
    170  void setIon(const bool on);
    -
    171  bool getEconoToggle(void) const;
    -
    172  void setEconoToggle(const bool on);
    -
    173  bool getLightToggle(void) const;
    -
    174  void setLightToggle(const bool on);
    -
    175  uint16_t getTimerTime(void) const;
    -
    176  bool getTimerEnabled(void) const;
    -
    177  bool getTimerType(void) const;
    -
    178  void setTimer(bool enable, bool timer_type, uint16_t mins);
    -
    179  bool getClean(void) const;
    -
    180  void setClean(const bool on);
    -
    181  uint8_t* getRaw(void);
    -
    182  void setRaw(const uint8_t new_code[],
    -
    183  const uint16_t length = kSharpAcStateLength);
    -
    184  static bool validChecksum(uint8_t state[],
    -
    185  const uint16_t length = kSharpAcStateLength);
    -
    186  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    187  static uint8_t convertFan(const stdAc::fanspeed_t speed,
    -
    188  const sharp_ac_remote_model_t model =
    - -
    190  stdAc::opmode_t toCommonMode(const uint8_t mode) const;
    -
    191  stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed) const;
    -
    192  stdAc::state_t toCommon(void) const;
    -
    193  String toString(void) const;
    -
    194 #ifndef UNIT_TEST
    -
    195 
    -
    196  private:
    - -
    198 #else // UNIT_TEST
    -
    199  IRsendTest _irsend;
    -
    201 #endif // UNIT_TEST
    - -
    204  uint8_t _temp;
    -
    205  uint8_t _mode;
    -
    206  uint8_t _fan;
    - -
    208  void stateReset(void);
    -
    209  void checksum(void);
    -
    210  static uint8_t calcChecksum(uint8_t state[],
    -
    211  const uint16_t length = kSharpAcStateLength);
    -
    212  void setPowerSpecial(const uint8_t value);
    -
    213  uint8_t getPowerSpecial(void) const;
    -
    214  void clearPowerSpecial(void);
    -
    215  bool _getEconoToggle(void) const;
    -
    216  void _setEconoToggle(const bool on);
    -
    217 };
    -
    218 
    -
    219 #endif // IR_SHARP_H_
    -
    -
    bool getEconoToggle(void) const
    Get the Economical mode toggle setting of the A/C.
    Definition: ir_Sharp.cpp:602
    -
    const uint8_t kSharpAcHeat
    Definition: ir_Sharp.h:109
    -
    const uint8_t kSharpAcSpecialTempEcono
    Definition: ir_Sharp.h:129
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Sharp.h:147
    -
    bool getLightToggle(void) const
    Get the Light toggle setting of the A/C.
    Definition: ir_Sharp.cpp:617
    -
    void setTimer(bool enable, bool timer_type, uint16_t mins)
    Set or cancel the timer function.
    Definition: ir_Sharp.cpp:646
    -
    void setTemp(const uint8_t temp, const bool save=true)
    Set the temperature.
    Definition: ir_Sharp.cpp:426
    -
    const uint8_t kSharpAcPowerOnFromOff
    Definition: ir_Sharp.h:98
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Sharp.cpp:378
    -
    const uint16_t kSharpAcOneSpace
    Definition: ir_Sharp.h:90
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t _temp
    Saved copy of the desired temp.
    Definition: ir_Sharp.h:204
    -
    const uint32_t kDefaultMessageGap
    Definition: IRsend.h:41
    -
    static uint8_t calcChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Sharp.cpp:262
    -
    const uint8_t kSharpAcFanA705Low
    Definition: ir_Sharp.h:113
    -
    stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed) const
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Sharp.cpp:748
    -
    const uint8_t kSharpAcSpecialTimer
    Definition: ir_Sharp.h:132
    -
    const uint8_t kSharpAcOnTimerType
    Definition: ir_Sharp.h:122
    -
    const uint8_t kSharpAcCool
    Definition: ir_Sharp.h:108
    -
    uint8_t Model2
    Definition: ir_Sharp.h:77
    - -
    const uint8_t kSharpAcSpecialFan
    Definition: ir_Sharp.h:130
    -
    const uint8_t kSharpAcSpecialSwing
    Definition: ir_Sharp.h:131
    -
    bool getIon(void) const
    Get the Ion (Filter) setting of the A/C.
    Definition: ir_Sharp.cpp:562
    -
    const uint8_t kSharpAcOffTimerType
    Definition: ir_Sharp.h:121
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    const uint8_t kSharpAcMaxTemp
    Definition: ir_Sharp.h:95
    -
    void setFan(const uint8_t fan, const bool save=true)
    Set the speed of the fan.
    Definition: ir_Sharp.cpp:505
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    sharp_ac_remote_model_t _model
    Saved copy of the model.
    Definition: ir_Sharp.h:207
    -
    IRSharpAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Sharp.cpp:243
    -
    const uint16_t kSharpAcZeroSpace
    Definition: ir_Sharp.h:89
    -
    void setPower(const bool on, const bool prev_on=true)
    Change the power setting, including the previous power state.
    Definition: ir_Sharp.cpp:383
    -
    const uint8_t kSharpAcDry
    Definition: ir_Sharp.h:107
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kSharpAcTimerHoursMax
    Definition: ir_Sharp.h:120
    -
    const uint8_t kSharpAcPowerOff
    Definition: ir_Sharp.h:99
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Sharp.cpp:525
    -
    Native representation of a Sharp A/C message.
    Definition: ir_Sharp.h:43
    -
    const uint8_t kSharpAcSwingNoToggle
    Definition: ir_Sharp.h:125
    -
    const uint8_t kSharpAcTimerIncrement
    Definition: ir_Sharp.h:118
    - -
    const uint8_t kSharpAcPowerSetSpecialOn
    Definition: ir_Sharp.h:101
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Sharp.cpp:689
    -
    void setTurbo(const bool on)
    Set the Turbo setting of the A/C.
    Definition: ir_Sharp.cpp:541
    -
    void setModel(const sharp_ac_remote_model_t model)
    Set the model of the A/C to emulate.
    Definition: ir_Sharp.cpp:312
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kSharpAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Sharp.cpp:273
    -
    const uint8_t kSharpAcSpecialTimerHalfHour
    Definition: ir_Sharp.h:133
    -
    const uint8_t kSharpAcTimerHoursOff
    Definition: ir_Sharp.h:119
    -
    bool getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Sharp.cpp:531
    -
    uint8_t Model
    Definition: ir_Sharp.h:50
    -
    uint8_t Clean
    Definition: ir_Sharp.h:58
    -
    uint8_t TimerType
    Definition: ir_Sharp.h:64
    -
    const uint8_t kSharpAcSwingToggle
    Definition: ir_Sharp.h:124
    -
    void setPowerSpecial(const uint8_t value)
    Set the value of the Power Special setting without any checks.
    Definition: ir_Sharp.cpp:347
    -
    const uint8_t kSharpAcFanAuto
    Definition: ir_Sharp.h:110
    -
    uint8_t Ion
    Definition: ir_Sharp.h:75
    -
    void send(const uint16_t repeat=kSharpAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Sharp.cpp:253
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Sharp.h:197
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Sharp.cpp:279
    -
    const uint32_t kSharpAcGap
    Definition: ir_Sharp.h:91
    -
    bool isPowerSpecial(void) const
    Is one of the special power states in use?
    Definition: ir_Sharp.cpp:365
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed, const sharp_ac_remote_model_t model=sharp_ac_remote_model_t::A907)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Sharp.cpp:703
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Sharp.cpp:297
    -
    bool _getEconoToggle(void) const
    Get the Economical mode toggle setting of the A/C.
    Definition: ir_Sharp.cpp:577
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Sharp.cpp:452
    -
    const uint8_t kSharpAcPowerUnknown
    Definition: ir_Sharp.h:97
    - -
    const uint8_t kSharpAcPowerOn
    Definition: ir_Sharp.h:100
    -
    uint8_t getPowerSpecial(void) const
    Get the value of the Power Special setting.
    Definition: ir_Sharp.cpp:353
    -
    void _setEconoToggle(const bool on)
    Set the Economical mode toggle setting of the A/C.
    Definition: ir_Sharp.cpp:586
    -
    void setSpecial(const uint8_t mode)
    Set the value of the Special (button/command?) setting.
    Definition: ir_Sharp.cpp:403
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Sharp.cpp:248
    -
    const uint16_t kSharpAcStateLength
    Definition: IRremoteESP8266.h:1124
    -
    const uint8_t kSharpAcFanMax
    Definition: ir_Sharp.h:116
    - -
    uint8_t _mode
    Saved copy of the desired mode.
    Definition: ir_Sharp.h:205
    -
    uint8_t PowerSpecial
    Definition: ir_Sharp.h:54
    -
    Class for handling detailed Sharp A/C messages.
    Definition: ir_Sharp.h:137
    -
    uint8_t Sum
    Definition: ir_Sharp.h:81
    -
    bool getClean(void) const
    Get the Clean setting of the A/C.
    Definition: ir_Sharp.cpp:665
    -
    uint8_t TimerEnabled
    Definition: ir_Sharp.h:65
    -
    uint8_t Swing
    Definition: ir_Sharp.h:67
    -
    uint8_t Special
    Definition: ir_Sharp.h:72
    -
    const uint8_t kSharpAcPowerTimerSetting
    Definition: ir_Sharp.h:103
    -
    const uint8_t kSharpAcFanHigh
    Definition: ir_Sharp.h:114
    -
    const uint8_t kSharpAcFanMin
    Definition: ir_Sharp.h:111
    -
    void setClean(const bool on)
    Set the Economical mode toggle setting of the A/C.
    Definition: ir_Sharp.cpp:672
    -
    stdAc::opmode_t toCommonMode(const uint8_t mode) const
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Sharp.cpp:730
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Sharp.cpp:458
    -
    const uint8_t kSharpAcFan
    Definition: ir_Sharp.h:106
    -
    const uint8_t kSharpAcFanMed
    Definition: ir_Sharp.h:112
    -
    const uint16_t kSharpAcDefaultRepeat
    Definition: IRremoteESP8266.h:1126
    -
    sharp_ac_remote_model_t getModel(const bool raw=false) const
    Get/Detect the model of the A/C.
    Definition: ir_Sharp.cpp:331
    -
    uint8_t getSpecial(void) const
    Get the value of the Special (button/command?) setting.
    Definition: ir_Sharp.cpp:421
    -
    bool getTimerEnabled(void) const
    Is the Timer enabled?
    Definition: ir_Sharp.cpp:631
    -
    bool getTimerType(void) const
    Get the current timer type.
    Definition: ir_Sharp.cpp:637
    -
    const uint8_t kSharpAcFanA705Med
    Definition: ir_Sharp.h:115
    -
    uint8_t _fan
    Saved copy of the desired fan speed.
    Definition: ir_Sharp.h:206
    -
    void setEconoToggle(const bool on)
    Set the Economical mode toggle setting of the A/C.
    Definition: ir_Sharp.cpp:595
    -
    uint8_t Mode
    Definition: ir_Sharp.h:56
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Sharp.cpp:770
    -
    uint8_t TimerHours
    Definition: ir_Sharp.h:62
    -
    uint16_t getTimerTime(void) const
    Get how long the timer is set for, in minutes.
    Definition: ir_Sharp.cpp:623
    -
    const uint16_t kSharpAcHdrSpace
    Definition: ir_Sharp.h:87
    -
    const uint8_t kSharpAcAuto
    Definition: ir_Sharp.h:105
    -
    SharpProtocol _
    Definition: ir_Sharp.h:203
    -
    void setLightToggle(const bool on)
    Set the Light mode toggle setting of the A/C.
    Definition: ir_Sharp.cpp:610
    -
    void setSwingToggle(const bool on)
    Set the (vertical) Swing Toggle setting of the A/C.
    Definition: ir_Sharp.cpp:555
    -
    uint8_t Fan
    Definition: ir_Sharp.h:59
    -
    const uint8_t kSharpAcPowerSetSpecialOff
    Definition: ir_Sharp.h:102
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Sharp.cpp:375
    -
    bool getSwingToggle(void) const
    Get the (vertical) Swing Toggle setting of the A/C.
    Definition: ir_Sharp.cpp:549
    -
    void setMode(const uint8_t mode, const bool save=true)
    Set the operating mode of the A/C.
    Definition: ir_Sharp.cpp:465
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Sharp.cpp:393
    -
    @ A907
    Definition: IRsend.h:158
    -
    const uint16_t kSharpAcBitMark
    Definition: ir_Sharp.h:88
    -
    uint8_t raw[kSharpAcStateLength]
    State of the remote in IR code form.
    Definition: ir_Sharp.h:44
    -
    const uint8_t kSharpAcMinTemp
    Definition: ir_Sharp.h:94
    -
    uint8_t Temp
    Definition: ir_Sharp.h:49
    -
    const uint8_t kSharpAcSpecialTurbo
    Definition: ir_Sharp.h:128
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Sharp.cpp:284
    -
    const uint8_t kSharpAcByteTemp
    Definition: ir_Sharp.h:93
    -
    void setIon(const bool on)
    Set the Ion (Filter) setting of the A/C.
    Definition: ir_Sharp.cpp:568
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void clearPowerSpecial(void)
    Clear the "special"/non-normal bits in the power section. e.g. for normal/common command modes.
    Definition: ir_Sharp.cpp:359
    -
    const uint16_t kSharpAcHdrMark
    Definition: ir_Sharp.h:86
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kSharpAcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Sharp.cpp:305
    -
    const uint8_t kSharpAcSpecialPower
    Definition: ir_Sharp.h:127
    -
    uint8_t pad[4]
    Definition: ir_Sharp.h:47
    -
    sharp_ac_remote_model_t
    Sharp A/C model numbers.
    Definition: IRsend.h:157
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Sharp.cpp:797
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sherwood_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sherwood_8cpp.html deleted file mode 100644 index a6b133aa1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sherwood_8cpp.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sherwood.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Sherwood.cpp File Reference
    -
    -
    - -

    Support for Sherwood protocols. -More...

    -

    Detailed Description

    -

    Support for Sherwood protocols.

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sony_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sony_8cpp.html deleted file mode 100644 index fa4943313..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Sony_8cpp.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Sony.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Sony.cpp File Reference
    -
    -
    - -

    Support for Sony SIRC(Serial Infra-Red Control) protocols. Sony originally added from https://github.com/shirriff/Arduino-IRremote/ Updates from marcosamarinho. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kSonyTick = 200
     
    const uint16_t kSonyHdrMarkTicks = 12
     
    const uint16_t kSonyHdrMark = kSonyHdrMarkTicks * kSonyTick
     
    const uint16_t kSonySpaceTicks = 3
     
    const uint16_t kSonySpace = kSonySpaceTicks * kSonyTick
     
    const uint16_t kSonyOneMarkTicks = 6
     
    const uint16_t kSonyOneMark = kSonyOneMarkTicks * kSonyTick
     
    const uint16_t kSonyZeroMarkTicks = 3
     
    const uint16_t kSonyZeroMark = kSonyZeroMarkTicks * kSonyTick
     
    const uint16_t kSonyRptLengthTicks = 225
     
    const uint16_t kSonyRptLength = kSonyRptLengthTicks * kSonyTick
     
    const uint16_t kSonyMinGapTicks = 50
     
    const uint16_t kSonyMinGap = kSonyMinGapTicks * kSonyTick
     
    const uint16_t kSonyStdFreq = 40000
     
    const uint16_t kSonyAltFreq = 38000
     
    -

    Detailed Description

    -

    Support for Sony SIRC(Serial Infra-Red Control) protocols. Sony originally added from https://github.com/shirriff/Arduino-IRremote/ Updates from marcosamarinho.

    -
    See also
    http://www.sbprojects.net/knowledge/ir/sirc.php
    -
    -https://github.com/crankyoldgit/IRremoteESP8266/issues/1018
    -

    Variable Documentation

    - -

    ◆ kSonyAltFreq

    - -
    -
    - - - - -
    const uint16_t kSonyAltFreq = 38000
    -
    - -
    -
    - -

    ◆ kSonyHdrMark

    - -
    -
    - - - - -
    const uint16_t kSonyHdrMark = kSonyHdrMarkTicks * kSonyTick
    -
    - -
    -
    - -

    ◆ kSonyHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kSonyHdrMarkTicks = 12
    -
    - -
    -
    - -

    ◆ kSonyMinGap

    - -
    -
    - - - - -
    const uint16_t kSonyMinGap = kSonyMinGapTicks * kSonyTick
    -
    - -
    -
    - -

    ◆ kSonyMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kSonyMinGapTicks = 50
    -
    - -
    -
    - -

    ◆ kSonyOneMark

    - -
    -
    - - - - -
    const uint16_t kSonyOneMark = kSonyOneMarkTicks * kSonyTick
    -
    - -
    -
    - -

    ◆ kSonyOneMarkTicks

    - -
    -
    - - - - -
    const uint16_t kSonyOneMarkTicks = 6
    -
    - -
    -
    - -

    ◆ kSonyRptLength

    - -
    -
    - - - - -
    const uint16_t kSonyRptLength = kSonyRptLengthTicks * kSonyTick
    -
    - -
    -
    - -

    ◆ kSonyRptLengthTicks

    - -
    -
    - - - - -
    const uint16_t kSonyRptLengthTicks = 225
    -
    - -
    -
    - -

    ◆ kSonySpace

    - -
    -
    - - - - -
    const uint16_t kSonySpace = kSonySpaceTicks * kSonyTick
    -
    - -
    -
    - -

    ◆ kSonySpaceTicks

    - -
    -
    - - - - -
    const uint16_t kSonySpaceTicks = 3
    -
    - -
    -
    - -

    ◆ kSonyStdFreq

    - -
    -
    - - - - -
    const uint16_t kSonyStdFreq = 40000
    -
    - -
    -
    - -

    ◆ kSonyTick

    - -
    -
    - - - - -
    const uint16_t kSonyTick = 200
    -
    - -
    -
    - -

    ◆ kSonyZeroMark

    - -
    -
    - - - - -
    const uint16_t kSonyZeroMark = kSonyZeroMarkTicks * kSonyTick
    -
    - -
    -
    - -

    ◆ kSonyZeroMarkTicks

    - -
    -
    - - - - -
    const uint16_t kSonyZeroMarkTicks = 3
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Symphony_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Symphony_8cpp.html deleted file mode 100644 index 9ad124022..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Symphony_8cpp.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Symphony.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Symphony.cpp File Reference
    -
    -
    - -

    Support for Symphony protocols. -More...

    - - - - - - - - - - - - -

    -Variables

    const uint16_t kSymphonyZeroMark = 400
     
    const uint16_t kSymphonyZeroSpace = 1250
     
    const uint16_t kSymphonyOneMark = kSymphonyZeroSpace
     
    const uint16_t kSymphonyOneSpace = kSymphonyZeroMark
     
    const uint32_t kSymphonyFooterGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kSymphonyFooterGap

    - -
    -
    - - - - -
    const uint32_t kSymphonyFooterGap
    -
    -Initial value: -
    -
    - -

    ◆ kSymphonyOneMark

    - -
    -
    - - - - -
    const uint16_t kSymphonyOneMark = kSymphonyZeroSpace
    -
    - -
    -
    - -

    ◆ kSymphonyOneSpace

    - -
    -
    - - - - -
    const uint16_t kSymphonyOneSpace = kSymphonyZeroMark
    -
    - -
    -
    - -

    ◆ kSymphonyZeroMark

    - -
    -
    - - - - -
    const uint16_t kSymphonyZeroMark = 400
    -
    - -
    -
    - -

    ◆ kSymphonyZeroSpace

    - -
    -
    - - - - -
    const uint16_t kSymphonyZeroSpace = 1250
    -
    - -
    -
    -
    -
    const uint16_t kSymphonyZeroMark
    Definition: ir_Symphony.cpp:29
    -
    const uint16_t kSymphonyZeroSpace
    Definition: ir_Symphony.cpp:30
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8cpp.html deleted file mode 100644 index 722bb446c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8cpp.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Tcl.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Tcl.cpp File Reference
    -
    -
    - -

    Support for TCL protocols. -More...

    -

    Detailed Description

    -

    Support for TCL protocols.

    -
    Note
    There is no decodedecodeTcl112Ac(). It's the same as decodeMitsubishi112(). A shared routine is used. You can find it in: ir_Mitsubishi.cpp
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h.html deleted file mode 100644 index 5229e6e46..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Tcl.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Tcl.h File Reference
    -
    -
    - -

    Support for TCL protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  Tcl112Protocol
     Native representation of a TCL 112 A/C message. More...
     
    class  IRTcl112Ac
     Class for handling detailed TCL A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTcl112AcHdrMark = 3000
     
    const uint16_t kTcl112AcHdrSpace = 1650
     
    const uint16_t kTcl112AcBitMark = 500
     
    const uint16_t kTcl112AcOneSpace = 1050
     
    const uint16_t kTcl112AcZeroSpace = 325
     
    const uint32_t kTcl112AcGap = kDefaultMessageGap
     
    const uint8_t kTcl112AcHdrMarkTolerance = 6
     
    const uint8_t kTcl112AcTolerance = 5
     
    const uint8_t kTcl112AcHeat = 1
     
    const uint8_t kTcl112AcDry = 2
     
    const uint8_t kTcl112AcCool = 3
     
    const uint8_t kTcl112AcFan = 7
     
    const uint8_t kTcl112AcAuto = 8
     
    const uint8_t kTcl112AcFanAuto = 0b000
     
    const uint8_t kTcl112AcFanLow = 0b010
     
    const uint8_t kTcl112AcFanMed = 0b011
     
    const uint8_t kTcl112AcFanHigh = 0b101
     
    const float kTcl112AcTempMax = 31.0
     
    const float kTcl112AcTempMin = 16.0
     
    const uint8_t kTcl112AcSwingVOn = 0b111
     
    const uint8_t kTcl112AcSwingVOff = 0b000
     
    -

    Detailed Description

    -

    Support for TCL protocols.

    -

    Variable Documentation

    - -

    ◆ kTcl112AcAuto

    - -
    -
    - - - - -
    const uint8_t kTcl112AcAuto = 8
    -
    - -
    -
    - -

    ◆ kTcl112AcBitMark

    - -
    -
    - - - - -
    const uint16_t kTcl112AcBitMark = 500
    -
    - -
    -
    - -

    ◆ kTcl112AcCool

    - -
    -
    - - - - -
    const uint8_t kTcl112AcCool = 3
    -
    - -
    -
    - -

    ◆ kTcl112AcDry

    - -
    -
    - - - - -
    const uint8_t kTcl112AcDry = 2
    -
    - -
    -
    - -

    ◆ kTcl112AcFan

    - -
    -
    - - - - -
    const uint8_t kTcl112AcFan = 7
    -
    - -
    -
    - -

    ◆ kTcl112AcFanAuto

    - -
    -
    - - - - -
    const uint8_t kTcl112AcFanAuto = 0b000
    -
    - -
    -
    - -

    ◆ kTcl112AcFanHigh

    - -
    -
    - - - - -
    const uint8_t kTcl112AcFanHigh = 0b101
    -
    - -
    -
    - -

    ◆ kTcl112AcFanLow

    - -
    -
    - - - - -
    const uint8_t kTcl112AcFanLow = 0b010
    -
    - -
    -
    - -

    ◆ kTcl112AcFanMed

    - -
    -
    - - - - -
    const uint8_t kTcl112AcFanMed = 0b011
    -
    - -
    -
    - -

    ◆ kTcl112AcGap

    - -
    -
    - - - - -
    const uint32_t kTcl112AcGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kTcl112AcHdrMark

    - -
    -
    - - - - -
    const uint16_t kTcl112AcHdrMark = 3000
    -
    - -
    -
    - -

    ◆ kTcl112AcHdrMarkTolerance

    - -
    -
    - - - - -
    const uint8_t kTcl112AcHdrMarkTolerance = 6
    -
    - -
    -
    - -

    ◆ kTcl112AcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kTcl112AcHdrSpace = 1650
    -
    - -
    -
    - -

    ◆ kTcl112AcHeat

    - -
    -
    - - - - -
    const uint8_t kTcl112AcHeat = 1
    -
    - -
    -
    - -

    ◆ kTcl112AcOneSpace

    - -
    -
    - - - - -
    const uint16_t kTcl112AcOneSpace = 1050
    -
    - -
    -
    - -

    ◆ kTcl112AcSwingVOff

    - -
    -
    - - - - -
    const uint8_t kTcl112AcSwingVOff = 0b000
    -
    - -
    -
    - -

    ◆ kTcl112AcSwingVOn

    - -
    -
    - - - - -
    const uint8_t kTcl112AcSwingVOn = 0b111
    -
    - -
    -
    - -

    ◆ kTcl112AcTempMax

    - -
    -
    - - - - -
    const float kTcl112AcTempMax = 31.0
    -
    - -
    -
    - -

    ◆ kTcl112AcTempMin

    - -
    -
    - - - - -
    const float kTcl112AcTempMin = 16.0
    -
    - -
    -
    - -

    ◆ kTcl112AcTolerance

    - -
    -
    - - - - -
    const uint8_t kTcl112AcTolerance = 5
    -
    - -
    -
    - -

    ◆ kTcl112AcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kTcl112AcZeroSpace = 325
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h_source.html deleted file mode 100644 index 31de193f3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Tcl_8h_source.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Tcl.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Tcl.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 David Conran
    -
    2 
    -
    5 
    -
    6 // Supports:
    -
    7 // Brand: Leberg, Model: LBS-TOR07 A/C
    -
    8 
    -
    9 #ifndef IR_TCL_H_
    -
    10 #define IR_TCL_H_
    -
    11 
    -
    12 #ifndef UNIT_TEST
    -
    13 #include <Arduino.h>
    -
    14 #endif
    -
    15 #include "IRremoteESP8266.h"
    -
    16 #include "IRsend.h"
    -
    17 #include "IRrecv.h"
    -
    18 #ifdef UNIT_TEST
    -
    19 #include "IRsend_test.h"
    -
    20 #endif
    -
    21 
    - - -
    25  struct {
    -
    26  // Byte 0~4
    -
    27  uint8_t pad0[5];
    -
    28  // Byte 5
    -
    29  uint8_t :2;
    -
    30  uint8_t Power :1;
    -
    31  uint8_t :3;
    -
    32  uint8_t Light :1;
    -
    33  uint8_t Econo :1;
    -
    34  // Byte 6
    -
    35  uint8_t Mode :4;
    -
    36  uint8_t Health :1;
    -
    37  uint8_t Turbo :1;
    -
    38  uint8_t :2;
    -
    39  // Byte 7
    -
    40  uint8_t Temp :4;
    -
    41  uint8_t :4;
    -
    42  // Byte 8
    -
    43  uint8_t Fan :3;
    -
    44  uint8_t SwingV :3;
    -
    45  uint8_t :2;
    -
    46  // Byte 9~11
    -
    47  uint8_t pad1[3];
    -
    48  // Byte 12
    -
    49  uint8_t :3;
    -
    50  uint8_t SwingH :1;
    -
    51  uint8_t :1;
    -
    52  uint8_t HalfDegree :1;
    -
    53  uint8_t :2;
    -
    54  // Byte 13
    -
    55  uint8_t Sum :8;
    -
    56  };
    -
    57 };
    -
    58 
    -
    59 // Constants
    -
    60 const uint16_t kTcl112AcHdrMark = 3000;
    -
    61 const uint16_t kTcl112AcHdrSpace = 1650;
    -
    62 const uint16_t kTcl112AcBitMark = 500;
    -
    63 const uint16_t kTcl112AcOneSpace = 1050;
    -
    64 const uint16_t kTcl112AcZeroSpace = 325;
    -
    65 const uint32_t kTcl112AcGap = kDefaultMessageGap; // Just a guess.
    -
    66 // Total tolerance percentage to use for matching the header mark.
    -
    67 const uint8_t kTcl112AcHdrMarkTolerance = 6;
    -
    68 const uint8_t kTcl112AcTolerance = 5; // Extra Percentage for the rest.
    -
    69 
    -
    70 const uint8_t kTcl112AcHeat = 1;
    -
    71 const uint8_t kTcl112AcDry = 2;
    -
    72 const uint8_t kTcl112AcCool = 3;
    -
    73 const uint8_t kTcl112AcFan = 7;
    -
    74 const uint8_t kTcl112AcAuto = 8;
    -
    75 
    -
    76 const uint8_t kTcl112AcFanAuto = 0b000;
    -
    77 const uint8_t kTcl112AcFanLow = 0b010;
    -
    78 const uint8_t kTcl112AcFanMed = 0b011;
    -
    79 const uint8_t kTcl112AcFanHigh = 0b101;
    -
    80 
    -
    81 const float kTcl112AcTempMax = 31.0;
    -
    82 const float kTcl112AcTempMin = 16.0;
    -
    83 
    -
    84 const uint8_t kTcl112AcSwingVOn = 0b111;
    -
    85 const uint8_t kTcl112AcSwingVOff = 0b000;
    -
    86 
    -
    87 // Classes
    -
    89 class IRTcl112Ac {
    -
    90  public:
    -
    91  explicit IRTcl112Ac(const uint16_t pin, const bool inverted = false,
    -
    92  const bool use_modulation = true);
    -
    93 #if SEND_TCL112AC
    -
    94  void send(const uint16_t repeat = kTcl112AcDefaultRepeat);
    -
    99  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    100 #endif // SEND_TCL
    -
    101  void begin(void);
    -
    102  void stateReset(void);
    -
    103  uint8_t* getRaw(void);
    -
    104  void setRaw(const uint8_t new_code[],
    -
    105  const uint16_t length = kTcl112AcStateLength);
    -
    106  void on(void);
    -
    107  void off(void);
    -
    108  void setPower(const bool on);
    -
    109  bool getPower(void) const;
    -
    110  void setTemp(const float celsius); // Celsius in 0.5 increments
    -
    111  float getTemp(void) const;
    -
    112  void setMode(const uint8_t mode);
    -
    113  uint8_t getMode(void) const;
    -
    114  static uint8_t calcChecksum(uint8_t state[],
    -
    115  const uint16_t length = kTcl112AcStateLength);
    -
    116  static bool validChecksum(uint8_t state[],
    -
    117  const uint16_t length = kTcl112AcStateLength);
    -
    118  void setFan(const uint8_t speed);
    -
    119  uint8_t getFan(void) const;
    -
    120  void setEcono(const bool on);
    -
    121  bool getEcono(void) const;
    -
    122  void setHealth(const bool on);
    -
    123  bool getHealth(void) const;
    -
    124  void setLight(const bool on);
    -
    125  bool getLight(void) const;
    -
    126  void setSwingHorizontal(const bool on);
    -
    127  bool getSwingHorizontal(void) const;
    -
    128  void setSwingVertical(const bool on);
    -
    129  bool getSwingVertical(void) const;
    -
    130  void setTurbo(const bool on);
    -
    131  bool getTurbo(void) const;
    -
    132  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    133  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    134  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    135  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    136  stdAc::state_t toCommon(void) const;
    -
    137  String toString(void) const;
    -
    138 #ifndef UNIT_TEST
    -
    139 
    -
    140  private:
    - -
    142 #else // UNIT_TEST
    -
    143  IRsendTest _irsend;
    -
    145 #endif // UNIT_TEST
    - -
    148  void checksum(const uint16_t length = kTcl112AcStateLength);
    -
    149 };
    -
    150 
    -
    151 #endif // IR_TCL_H_
    -
    -
    Tcl112Protocol _
    Definition: ir_Tcl.h:147
    -
    void setSwingHorizontal(const bool on)
    Set the horizontal swing setting of the A/C.
    Definition: ir_Tcl.cpp:238
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Tcl.cpp:292
    -
    static uint8_t calcChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Tcl.cpp:64
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Tcl.cpp:130
    -
    const float kTcl112AcTempMin
    Definition: ir_Tcl.h:82
    -
    void setSwingVertical(const bool on)
    Set the vertical swing setting of the A/C.
    Definition: ir_Tcl.cpp:250
    -
    const uint16_t kTcl112AcHdrSpace
    Definition: ir_Tcl.h:61
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Tcl.cpp:279
    -
    uint8_t SwingH
    Definition: ir_Tcl.h:50
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint32_t kDefaultMessageGap
    Definition: IRsend.h:41
    -
    const uint8_t kTcl112AcFanLow
    Definition: ir_Tcl.h:77
    -
    void send(const uint16_t repeat=kTcl112AcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Tcl.cpp:55
    -
    const uint16_t kTcl112AcBitMark
    Definition: ir_Tcl.h:62
    -
    bool getEcono(void) const
    Get the economy setting of the A/C.
    Definition: ir_Tcl.cpp:208
    -
    const uint8_t kTcl112AcFanMed
    Definition: ir_Tcl.h:78
    -
    uint8_t Temp
    Definition: ir_Tcl.h:40
    - -
    bool getSwingHorizontal(void) const
    Get the horizontal swing setting of the A/C.
    Definition: ir_Tcl.cpp:244
    -
    float getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Tcl.cpp:172
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    void setEcono(const bool on)
    Set the economy setting of the A/C.
    Definition: ir_Tcl.cpp:202
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Tcl.cpp:330
    -
    bool getHealth(void) const
    Get the Health (Filter) setting of the A/C.
    Definition: ir_Tcl.cpp:220
    -
    const uint16_t kTcl112AcOneSpace
    Definition: ir_Tcl.h:63
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    void stateReset(void)
    Reset the internal state of the emulation. (On, Cool, 24C)
    Definition: ir_Tcl.cpp:88
    -
    Class for handling detailed TCL A/C messages.
    Definition: ir_Tcl.h:89
    -
    void checksum(const uint16_t length=kTcl112AcStateLength)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Tcl.cpp:73
    -
    uint8_t Turbo
    Definition: ir_Tcl.h:37
    - -
    Native representation of a TCL 112 A/C message.
    Definition: ir_Tcl.h:23
    -
    uint8_t HalfDegree
    Definition: ir_Tcl.h:52
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Tcl.h:141
    -
    void setTemp(const float celsius)
    Set the temperature.
    Definition: ir_Tcl.cpp:158
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Tcl.cpp:98
    -
    void setLight(const bool on)
    Set the Light (LED/Display) setting of the A/C.
    Definition: ir_Tcl.cpp:226
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Tcl.cpp:118
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Tcl.h:99
    -
    uint8_t Light
    Definition: ir_Tcl.h:32
    -
    const uint32_t kTcl112AcGap
    Definition: ir_Tcl.h:65
    -
    static bool validChecksum(uint8_t state[], const uint16_t length=kTcl112AcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Tcl.cpp:83
    -
    uint8_t Fan
    Definition: ir_Tcl.h:43
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Tcl.cpp:50
    -
    uint8_t Mode
    Definition: ir_Tcl.h:35
    -
    uint8_t pad1[3]
    Definition: ir_Tcl.h:47
    -
    const uint8_t kTcl112AcSwingVOn
    Definition: ir_Tcl.h:84
    -
    const uint8_t kTcl112AcAuto
    Definition: ir_Tcl.h:74
    -
    const uint16_t kTcl112AcDefaultRepeat
    Definition: IRremoteESP8266.h:1138
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Tcl.cpp:319
    -
    const float kTcl112AcTempMax
    Definition: ir_Tcl.h:81
    -
    const uint16_t kTcl112AcHdrMark
    Definition: ir_Tcl.h:60
    -
    bool getLight(void) const
    Get the Light (LED/Display) setting of the A/C.
    Definition: ir_Tcl.cpp:232
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Tcl.cpp:138
    -
    const uint8_t kTcl112AcFanAuto
    Definition: ir_Tcl.h:76
    -
    const uint8_t kTcl112AcCool
    Definition: ir_Tcl.h:72
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Tcl.cpp:111
    - -
    uint8_t SwingV
    Definition: ir_Tcl.h:44
    -
    uint8_t Health
    Definition: ir_Tcl.h:36
    -
    uint8_t pad0[5]
    Definition: ir_Tcl.h:27
    -
    uint8_t raw[kTcl112AcStateLength]
    The State in IR code form.
    Definition: ir_Tcl.h:24
    -
    void setHealth(const bool on)
    Set the Health (Filter) setting of the A/C.
    Definition: ir_Tcl.cpp:214
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Tcl.cpp:114
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kTcl112AcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Tcl.cpp:106
    -
    const uint8_t kTcl112AcSwingVOff
    Definition: ir_Tcl.h:85
    -
    uint8_t Sum
    Definition: ir_Tcl.h:55
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Tcl.cpp:181
    -
    const uint8_t kTcl112AcHdrMarkTolerance
    Definition: ir_Tcl.h:67
    -
    const uint8_t kTcl112AcDry
    Definition: ir_Tcl.h:71
    -
    bool getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Tcl.cpp:272
    -
    const uint8_t kTcl112AcFanHigh
    Definition: ir_Tcl.h:79
    -
    bool getSwingVertical(void) const
    Get the vertical swing setting of the A/C.
    Definition: ir_Tcl.cpp:256
    -
    const uint16_t kTcl112AcStateLength
    Definition: IRremoteESP8266.h:1136
    -
    const uint8_t kTcl112AcFan
    Definition: ir_Tcl.h:73
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Tcl.cpp:358
    -
    const uint16_t kTcl112AcZeroSpace
    Definition: ir_Tcl.h:64
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Tcl.cpp:124
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Tcl.cpp:306
    -
    void setTurbo(const bool on)
    Set the Turbo setting of the A/C.
    Definition: ir_Tcl.cpp:262
    -
    IRTcl112Ac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Tcl.cpp:45
    -
    const uint8_t kTcl112AcTolerance
    Definition: ir_Tcl.h:68
    -
    const uint8_t kTcl112AcHeat
    Definition: ir_Tcl.h:70
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Tcl.cpp:196
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    uint8_t Econo
    Definition: ir_Tcl.h:33
    -
    uint8_t Power
    Definition: ir_Tcl.h:30
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8cpp.html deleted file mode 100644 index 6526947e1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8cpp.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Technibel.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Technibel.cpp File Reference
    -
    -
    - -

    Support for Technibel protocol. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTechnibelAcHdrMark = 8836
     
    const uint16_t kTechnibelAcHdrSpace = 4380
     
    const uint16_t kTechnibelAcBitMark = 523
     
    const uint16_t kTechnibelAcOneSpace = 1696
     
    const uint16_t kTechnibelAcZeroSpace = 564
     
    const uint32_t kTechnibelAcGap = kDefaultMessageGap
     
    const uint16_t kTechnibelAcFreq = 38000
     
    -

    Detailed Description

    -

    Support for Technibel protocol.

    -

    Variable Documentation

    - -

    ◆ kTechnibelAcBitMark

    - -
    -
    - - - - -
    const uint16_t kTechnibelAcBitMark = 523
    -
    - -
    -
    - -

    ◆ kTechnibelAcFreq

    - -
    -
    - - - - -
    const uint16_t kTechnibelAcFreq = 38000
    -
    - -
    -
    - -

    ◆ kTechnibelAcGap

    - -
    -
    - - - - -
    const uint32_t kTechnibelAcGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kTechnibelAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kTechnibelAcHdrMark = 8836
    -
    - -
    -
    - -

    ◆ kTechnibelAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kTechnibelAcHdrSpace = 4380
    -
    - -
    -
    - -

    ◆ kTechnibelAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kTechnibelAcOneSpace = 1696
    -
    - -
    -
    - -

    ◆ kTechnibelAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kTechnibelAcZeroSpace = 564
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h.html deleted file mode 100644 index 31c3b6646..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Technibel.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Technibel.h File Reference
    -
    -
    - -

    Support for Technibel protocol. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  TechnibelProtocol
     Native representation of a Technibel A/C message. More...
     
    class  IRTechnibelAc
     Class for handling detailed Technibel A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kTechnibelAcTimerHoursOffset = 16
     
    const uint8_t kTechnibelAcTimerMax = 24
     
    const uint8_t kTechnibelAcTempMinC = 16
     
    const uint8_t kTechnibelAcTempMaxC = 31
     
    const uint8_t kTechnibelAcTempMinF = 61
     
    const uint8_t kTechnibelAcTempMaxF = 88
     
    const uint8_t kTechnibelAcFanSize = 4
     
    const uint8_t kTechnibelAcFanLow = 0b0001
     
    const uint8_t kTechnibelAcFanMedium = 0b0010
     
    const uint8_t kTechnibelAcFanHigh = 0b0100
     
    const uint8_t kTechnibelAcCool = 0b0001
     
    const uint8_t kTechnibelAcDry = 0b0010
     
    const uint8_t kTechnibelAcFan = 0b0100
     
    const uint8_t kTechnibelAcHeat = 0b1000
     
    const uint8_t kTechnibelAcHeaderOffset = 48
     
    const uint8_t kTechnibelAcHeader = 0b00011000
     
    const uint64_t kTechnibelAcResetState = 0x180101140000EA
     Mode:Cool, Power:Off, fan:Low, temp:20, swing:Off, sleep:Off. More...
     
    -

    Detailed Description

    -

    Support for Technibel protocol.

    -

    Variable Documentation

    - -

    ◆ kTechnibelAcCool

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcCool = 0b0001
    -
    - -
    -
    - -

    ◆ kTechnibelAcDry

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcDry = 0b0010
    -
    - -
    -
    - -

    ◆ kTechnibelAcFan

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcFan = 0b0100
    -
    - -
    -
    - -

    ◆ kTechnibelAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcFanHigh = 0b0100
    -
    - -
    -
    - -

    ◆ kTechnibelAcFanLow

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcFanLow = 0b0001
    -
    - -
    -
    - -

    ◆ kTechnibelAcFanMedium

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcFanMedium = 0b0010
    -
    - -
    -
    - -

    ◆ kTechnibelAcFanSize

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcFanSize = 4
    -
    - -
    -
    - -

    ◆ kTechnibelAcHeader

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcHeader = 0b00011000
    -
    - -
    -
    - -

    ◆ kTechnibelAcHeaderOffset

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcHeaderOffset = 48
    -
    - -
    -
    - -

    ◆ kTechnibelAcHeat

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcHeat = 0b1000
    -
    - -
    -
    - -

    ◆ kTechnibelAcResetState

    - -
    -
    - - - - -
    const uint64_t kTechnibelAcResetState = 0x180101140000EA
    -
    - -

    Mode:Cool, Power:Off, fan:Low, temp:20, swing:Off, sleep:Off.

    - -
    -
    - -

    ◆ kTechnibelAcTempMaxC

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcTempMaxC = 31
    -
    - -
    -
    - -

    ◆ kTechnibelAcTempMaxF

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcTempMaxF = 88
    -
    - -
    -
    - -

    ◆ kTechnibelAcTempMinC

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcTempMinC = 16
    -
    - -
    -
    - -

    ◆ kTechnibelAcTempMinF

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcTempMinF = 61
    -
    - -
    -
    - -

    ◆ kTechnibelAcTimerHoursOffset

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcTimerHoursOffset = 16
    -
    - -
    -
    - -

    ◆ kTechnibelAcTimerMax

    - -
    -
    - - - - -
    const uint8_t kTechnibelAcTimerMax = 24
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h_source.html deleted file mode 100644 index f39d47bde..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Technibel_8h_source.html +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Technibel.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Technibel.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 Quentin Briollant
    -
    2 
    -
    5 
    -
    6 #ifndef IR_TECHNIBEL_H_
    -
    7 #define IR_TECHNIBEL_H_
    -
    8 
    -
    9 #define __STDC_LIMIT_MACROS
    -
    10 #include <stdint.h>
    -
    11 #ifndef UNIT_TEST
    -
    12 #include <Arduino.h>
    -
    13 #endif
    -
    14 #include "IRremoteESP8266.h"
    -
    15 #include "IRsend.h"
    -
    16 #ifdef UNIT_TEST
    -
    17 #include "IRsend_test.h"
    -
    18 #endif
    -
    19 
    -
    20 // Supports:
    -
    21 // Brand: Technibel, Model: IRO PLUS
    -
    22 
    - -
    25  uint64_t raw; // The state of the IR remote.
    -
    26  struct {
    -
    27  uint8_t Sum :8;
    -
    28  uint8_t Footer :8;
    -
    29  uint8_t TimerHours :5;
    -
    30  uint8_t :3;
    -
    31  uint8_t Temp :7;
    -
    32  uint8_t :1;
    -
    33  uint8_t Fan :3;
    -
    34  uint8_t :1;
    -
    35  uint8_t Sleep :1;
    -
    36  uint8_t Swing :1;
    -
    37  uint8_t UseFah :1;
    -
    38  uint8_t TimerEnable :1;
    -
    39  uint8_t Mode :4;
    -
    40  uint8_t FanChange :1;
    -
    41  uint8_t TempChange :1;
    -
    42  uint8_t TimerChange :1;
    -
    43  uint8_t Power :1;
    -
    44  uint8_t Header :8;
    -
    45  };
    -
    46 };
    -
    47 
    -
    48 // Constants
    -
    49 
    -
    50 const uint8_t kTechnibelAcTimerHoursOffset = 16;
    -
    51 const uint8_t kTechnibelAcTimerMax = 24;
    -
    52 
    -
    53 const uint8_t kTechnibelAcTempMinC = 16; // Deg C
    -
    54 const uint8_t kTechnibelAcTempMaxC = 31; // Deg C
    -
    55 const uint8_t kTechnibelAcTempMinF = 61; // Deg F
    -
    56 const uint8_t kTechnibelAcTempMaxF = 88; // Deg F
    -
    57 
    -
    58 const uint8_t kTechnibelAcFanSize = 4;
    -
    59 const uint8_t kTechnibelAcFanLow = 0b0001;
    -
    60 const uint8_t kTechnibelAcFanMedium = 0b0010;
    -
    61 const uint8_t kTechnibelAcFanHigh = 0b0100;
    -
    62 
    -
    63 const uint8_t kTechnibelAcCool = 0b0001;
    -
    64 const uint8_t kTechnibelAcDry = 0b0010;
    -
    65 const uint8_t kTechnibelAcFan = 0b0100;
    -
    66 const uint8_t kTechnibelAcHeat = 0b1000;
    -
    67 
    -
    68 const uint8_t kTechnibelAcHeaderOffset = 48;
    -
    69 const uint8_t kTechnibelAcHeader = 0b00011000;
    -
    70 
    -
    71 const uint64_t kTechnibelAcResetState = 0x180101140000EA;
    -
    72 
    -
    74 
    -
    75 // Classes
    - -
    78  public:
    -
    79  explicit IRTechnibelAc(const uint16_t pin, const bool inverted = false,
    -
    80  const bool use_modulation = true);
    -
    81  void stateReset(void);
    -
    82 #if SEND_TECHNIBEL_AC
    -
    83  void send(const uint16_t repeat = kTechnibelAcDefaultRepeat);
    -
    88  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    89 #endif // SEND_TECHNIBEL_AC
    -
    90  void begin(void);
    -
    91  static uint8_t calcChecksum(const uint64_t state);
    -
    92  static bool validChecksum(const uint64_t state);
    -
    93  void setPower(const bool on);
    -
    94  bool getPower(void) const;
    -
    95  void on(void);
    -
    96  void off(void);
    -
    97  void setTempUnit(const bool celsius);
    -
    98  bool getTempUnit(void) const;
    -
    99  void setTemp(const uint8_t temp, const bool fahrenheit = false);
    -
    100  uint8_t getTemp(void) const;
    -
    101  void setFan(const uint8_t speed);
    -
    102  uint8_t getFan(void) const;
    -
    103  void setMode(const uint8_t mode);
    -
    104  uint8_t getMode(void) const;
    -
    105  void setSwing(const bool on);
    -
    106  bool getSwing(void) const;
    -
    107  static bool convertSwing(const stdAc::swingv_t swing);
    -
    108  static stdAc::swingv_t toCommonSwing(const bool swing);
    -
    109  void setSleep(const bool on);
    -
    110  bool getSleep(void) const;
    -
    111  void setTimerEnabled(const bool on);
    -
    112  bool getTimerEnabled(void) const;
    -
    113  void setTimer(const uint16_t nr_of_mins);
    -
    114  uint16_t getTimer(void) const;
    -
    115  uint64_t getRaw(void);
    -
    116  void setRaw(const uint64_t state);
    -
    117  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    118  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    119  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    120  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    121  stdAc::state_t toCommon(void) const;
    -
    122  String toString(void) const;
    -
    123 #ifndef UNIT_TEST
    -
    124 
    -
    125  private:
    - -
    127 #else
    -
    128  IRsendTest _irsend;
    -
    129 #endif
    - -
    131  uint8_t _saved_temp; // The previously user requested temp value.
    -
    132  uint8_t _saved_temp_units; // The previously user requested temp units.
    -
    133  void checksum(void);
    -
    134 };
    -
    135 #endif // IR_TECHNIBEL_H_
    -
    -
    IRsendTest _irsend
    Definition: ir_Technibel.h:128
    -
    static uint8_t calcChecksum(const uint64_t state)
    Compute the checksum of the supplied state.
    Definition: ir_Technibel.cpp:107
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Technibel.cpp:256
    -
    TechnibelProtocol _
    Definition: ir_Technibel.h:130
    -
    Native representation of a Technibel A/C message.
    Definition: ir_Technibel.h:24
    -
    const uint8_t kTechnibelAcTempMinF
    Definition: ir_Technibel.h:55
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Technibel.cpp:194
    -
    swingv_t
    Common A/C settings for Vertical Swing.
    Definition: IRsend.h:70
    -
    const uint8_t kTechnibelAcFanLow
    Definition: ir_Technibel.h:59
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Technibel.cpp:154
    -
    bool getSwing(void) const
    Get the (vertical) swing setting of the A/C.
    Definition: ir_Technibel.cpp:304
    -
    bool getTempUnit(void) const
    Get the temperature unit setting.
    Definition: ir_Technibel.cpp:177
    -
    const uint8_t kTechnibelAcFanSize
    Definition: ir_Technibel.h:58
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Technibel.cpp:287
    -
    void setRaw(const uint64_t state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Technibel.cpp:146
    -
    IRTechnibelAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Technibel.cpp:89
    -
    uint8_t TimerChange
    Definition: ir_Technibel.h:42
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Technibel.cpp:94
    -
    void setTempUnit(const bool celsius)
    Set the temperature unit setting.
    Definition: ir_Technibel.cpp:170
    - -
    void setTimer(const uint16_t nr_of_mins)
    Set the timer for when the A/C unit will switch off.
    Definition: ir_Technibel.cpp:350
    -
    void checksum(void)
    Set the checksum of the internal state.
    Definition: ir_Technibel.cpp:125
    -
    static bool validChecksum(const uint64_t state)
    Confirm the checksum of the supplied state is valid.
    Definition: ir_Technibel.cpp:119
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t Footer
    Definition: ir_Technibel.h:28
    -
    void setTemp(const uint8_t temp, const bool fahrenheit=false)
    Set the temperature.
    Definition: ir_Technibel.cpp:184
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Technibel.cpp:219
    -
    uint8_t TempChange
    Definition: ir_Technibel.h:41
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint64_t raw
    Definition: ir_Technibel.h:25
    -
    const uint8_t kTechnibelAcTempMaxC
    Definition: ir_Technibel.h:54
    -
    uint8_t UseFah
    Definition: ir_Technibel.h:37
    -
    uint8_t TimerHours
    Definition: ir_Technibel.h:29
    -
    uint8_t Mode
    Definition: ir_Technibel.h:39
    - -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Technibel.cpp:151
    -
    bool getTimerEnabled(void) const
    Is the timer function enabled?
    Definition: ir_Technibel.cpp:342
    -
    static stdAc::swingv_t toCommonSwing(const bool swing)
    Convert a native swing into its stdAc equivalent.
    Definition: ir_Technibel.cpp:318
    -
    const uint8_t kTechnibelAcFanHigh
    Definition: ir_Technibel.h:61
    -
    const uint8_t kTechnibelAcTimerMax
    Definition: ir_Technibel.h:51
    -
    uint8_t Sleep
    Definition: ir_Technibel.h:35
    -
    uint8_t Sum
    Definition: ir_Technibel.h:27
    -
    void send(const uint16_t repeat=kTechnibelAcDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Technibel.cpp:99
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Technibel.cpp:365
    -
    const uint8_t kTechnibelAcCool
    Definition: ir_Technibel.h:63
    -
    uint8_t Swing
    Definition: ir_Technibel.h:36
    -
    const uint8_t kTechnibelAcFan
    Definition: ir_Technibel.h:65
    -
    void stateReset(void)
    Reset the internal state of the emulation.
    Definition: ir_Technibel.cpp:131
    -
    const uint8_t kTechnibelAcHeader
    Definition: ir_Technibel.h:69
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Technibel.cpp:164
    -
    uint64_t getRaw(void)
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Technibel.cpp:139
    -
    const uint8_t kTechnibelAcHeat
    Definition: ir_Technibel.h:66
    -
    Class for handling detailed Technibel A/C messages.
    Definition: ir_Technibel.h:77
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Technibel.cpp:226
    -
    uint8_t FanChange
    Definition: ir_Technibel.h:40
    -
    uint8_t _saved_temp
    Definition: ir_Technibel.h:131
    -
    uint8_t Temp
    Definition: ir_Technibel.h:31
    -
    const uint8_t kTechnibelAcHeaderOffset
    Definition: ir_Technibel.h:68
    -
    uint8_t Header
    Definition: ir_Technibel.h:44
    -
    uint8_t TimerEnable
    Definition: ir_Technibel.h:38
    -
    const uint8_t kTechnibelAcTempMinC
    Definition: ir_Technibel.h:53
    -
    uint8_t Power
    Definition: ir_Technibel.h:43
    -
    const uint8_t kTechnibelAcTimerHoursOffset
    Definition: ir_Technibel.h:50
    -
    uint8_t _saved_temp_units
    Definition: ir_Technibel.h:132
    -
    const uint64_t kTechnibelAcResetState
    Mode:Cool, Power:Off, fan:Low, temp:20, swing:Off, sleep:Off.
    Definition: ir_Technibel.h:71
    -
    void setTimerEnabled(const bool on)
    Set the enable timer setting.
    Definition: ir_Technibel.cpp:336
    -
    const uint16_t kTechnibelAcDefaultRepeat
    Definition: IRremoteESP8266.h:988
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Technibel.cpp:250
    -
    void setSwing(const bool on)
    Set the (vertical) swing setting of the A/C.
    Definition: ir_Technibel.cpp:298
    -
    uint16_t getTimer(void) const
    Get the timer time for when the A/C unit will switch power state.
    Definition: ir_Technibel.cpp:359
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Technibel.cpp:391
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Technibel.h:88
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Technibel.cpp:240
    -
    const uint8_t kTechnibelAcFanMedium
    Definition: ir_Technibel.h:60
    -
    uint8_t Fan
    Definition: ir_Technibel.h:33
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    static bool convertSwing(const stdAc::swingv_t swing)
    Convert a stdAc::swingv_t enum into it's native swing.
    Definition: ir_Technibel.cpp:311
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Technibel.cpp:275
    -
    const uint8_t kTechnibelAcDry
    Definition: ir_Technibel.h:64
    -
    const uint8_t kTechnibelAcTempMaxF
    Definition: ir_Technibel.h:56
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Technibel.cpp:330
    -
    IRsend _irsend
    Definition: ir_Technibel.h:126
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Technibel.cpp:158
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Technibel.cpp:324
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Technibel.cpp:200
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8cpp.html deleted file mode 100644 index 56e288060..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8cpp.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Teco.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Teco.cpp File Reference
    -
    -
    - -

    Support for Teco protocols. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTecoHdrMark = 9000
     
    const uint16_t kTecoHdrSpace = 4440
     
    const uint16_t kTecoBitMark = 620
     
    const uint16_t kTecoOneSpace = 1650
     
    const uint16_t kTecoZeroSpace = 580
     
    const uint32_t kTecoGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Support for Teco protocols.

    -

    Variable Documentation

    - -

    ◆ kTecoBitMark

    - -
    -
    - - - - -
    const uint16_t kTecoBitMark = 620
    -
    - -
    -
    - -

    ◆ kTecoGap

    - -
    -
    - - - - -
    const uint32_t kTecoGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kTecoHdrMark

    - -
    -
    - - - - -
    const uint16_t kTecoHdrMark = 9000
    -
    - -
    -
    - -

    ◆ kTecoHdrSpace

    - -
    -
    - - - - -
    const uint16_t kTecoHdrSpace = 4440
    -
    - -
    -
    - -

    ◆ kTecoOneSpace

    - -
    -
    - - - - -
    const uint16_t kTecoOneSpace = 1650
    -
    - -
    -
    - -

    ◆ kTecoZeroSpace

    - -
    -
    - - - - -
    const uint16_t kTecoZeroSpace = 580
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h.html deleted file mode 100644 index e156d0ddc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h.html +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Teco.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Teco.h File Reference
    -
    -
    - -

    Support for Teco protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  TecoProtocol
     Native representation of a Teco A/C message. More...
     
    class  IRTecoAc
     Class for handling detailed Teco A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kTecoAuto = 0
     
    const uint8_t kTecoCool = 1
     
    const uint8_t kTecoDry = 2
     
    const uint8_t kTecoFan = 3
     
    const uint8_t kTecoHeat = 4
     
    const uint8_t kTecoFanAuto = 0
     
    const uint8_t kTecoFanLow = 1
     
    const uint8_t kTecoFanMed = 2
     
    const uint8_t kTecoFanHigh = 3
     
    const uint8_t kTecoMinTemp = 16
     
    const uint8_t kTecoMaxTemp = 30
     
    const uint64_t kTecoReset = 0b01001010000000000000010000000000000
     
    -

    Detailed Description

    -

    Support for Teco protocols.

    -

    Variable Documentation

    - -

    ◆ kTecoAuto

    - -
    -
    - - - - -
    const uint8_t kTecoAuto = 0
    -
    - -
    -
    - -

    ◆ kTecoCool

    - -
    -
    - - - - -
    const uint8_t kTecoCool = 1
    -
    - -
    -
    - -

    ◆ kTecoDry

    - -
    -
    - - - - -
    const uint8_t kTecoDry = 2
    -
    - -
    -
    - -

    ◆ kTecoFan

    - -
    -
    - - - - -
    const uint8_t kTecoFan = 3
    -
    - -
    -
    - -

    ◆ kTecoFanAuto

    - -
    -
    - - - - -
    const uint8_t kTecoFanAuto = 0
    -
    - -
    -
    - -

    ◆ kTecoFanHigh

    - -
    -
    - - - - -
    const uint8_t kTecoFanHigh = 3
    -
    - -
    -
    - -

    ◆ kTecoFanLow

    - -
    -
    - - - - -
    const uint8_t kTecoFanLow = 1
    -
    - -
    -
    - -

    ◆ kTecoFanMed

    - -
    -
    - - - - -
    const uint8_t kTecoFanMed = 2
    -
    - -
    -
    - -

    ◆ kTecoHeat

    - -
    -
    - - - - -
    const uint8_t kTecoHeat = 4
    -
    - -
    -
    - -

    ◆ kTecoMaxTemp

    - -
    -
    - - - - -
    const uint8_t kTecoMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kTecoMinTemp

    - -
    -
    - - - - -
    const uint8_t kTecoMinTemp = 16
    -
    - -
    -
    - -

    ◆ kTecoReset

    - -
    -
    - - - - -
    const uint64_t kTecoReset = 0b01001010000000000000010000000000000
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h_source.html deleted file mode 100644 index 601dea9e4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teco_8h_source.html +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Teco.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Teco.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2019 Fabien Valthier
    -
    2 
    -
    5 
    -
    6 // Supports:
    -
    7 // Brand: Alaska, Model: SAC9010QC A/C
    -
    8 // Brand: Alaska, Model: SAC9010QC remote
    -
    9 
    -
    10 #ifndef IR_TECO_H_
    -
    11 #define IR_TECO_H_
    -
    12 
    -
    13 #ifndef UNIT_TEST
    -
    14 #include <Arduino.h>
    -
    15 #endif
    -
    16 #include "IRremoteESP8266.h"
    -
    17 #include "IRsend.h"
    -
    18 #ifdef UNIT_TEST
    -
    19 #include "IRsend_test.h"
    -
    20 #endif
    -
    21 
    - -
    24  uint64_t raw;
    -
    25  struct {
    -
    26  uint8_t Mode :3;
    -
    27  uint8_t Power :1;
    -
    28  uint8_t Fan :2;
    -
    29  uint8_t Swing :1;
    -
    30  uint8_t Sleep :1;
    -
    31  uint8_t Temp :4;
    -
    32  uint8_t HalfHour :1;
    -
    33  uint8_t TensHours :2; // number of 10hours
    -
    34  uint8_t TimerOn :1;
    -
    35  uint8_t UnitHours :4; // unit, not thenth
    -
    36  uint8_t Humid :1;
    -
    37  uint8_t Light :1;
    -
    38  uint8_t :1; // "Tree with bubbles" / Filter?? (Not Implemented)
    -
    39  uint8_t Save :1;
    -
    40  uint8_t :8; // Cst 0x50
    -
    41  uint8_t :8; // Cst 0x02
    -
    42  };
    -
    43 };
    -
    44 
    -
    45 // Constants.
    -
    46 const uint8_t kTecoAuto = 0; // temp = 25C
    -
    47 const uint8_t kTecoCool = 1;
    -
    48 const uint8_t kTecoDry = 2; // temp = 25C, but not shown
    -
    49 const uint8_t kTecoFan = 3;
    -
    50 const uint8_t kTecoHeat = 4;
    -
    51 const uint8_t kTecoFanAuto = 0; // 0b00
    -
    52 const uint8_t kTecoFanLow = 1; // 0b01
    -
    53 const uint8_t kTecoFanMed = 2; // 0b10
    -
    54 const uint8_t kTecoFanHigh = 3; // 0b11
    -
    55 const uint8_t kTecoMinTemp = 16; // 16C
    -
    56 const uint8_t kTecoMaxTemp = 30; // 30C
    -
    57 
    -
    58 const uint64_t kTecoReset = 0b01001010000000000000010000000000000;
    -
    59 
    -
    60 // Classes
    -
    62 class IRTecoAc {
    -
    63  public:
    -
    64  explicit IRTecoAc(const uint16_t pin, const bool inverted = false,
    -
    65  const bool use_modulation = true);
    -
    66  void stateReset(void);
    -
    67 #if SEND_TECO
    -
    68  void send(const uint16_t repeat = kTecoDefaultRepeat);
    -
    73  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    74 #endif // SEND_TECO
    -
    75  void begin(void);
    -
    76  void on(void);
    -
    77  void off(void);
    -
    78 
    -
    79  void setPower(const bool on);
    -
    80  bool getPower(void) const;
    -
    81 
    -
    82  void setTemp(const uint8_t temp);
    -
    83  uint8_t getTemp(void) const;
    -
    84 
    -
    85  void setFan(const uint8_t fan);
    -
    86  uint8_t getFan(void) const;
    -
    87 
    -
    88  void setMode(const uint8_t mode);
    -
    89  uint8_t getMode(void) const;
    -
    90 
    -
    91  void setSwing(const bool on);
    -
    92  bool getSwing(void) const;
    -
    93 
    -
    94  void setSleep(const bool on);
    -
    95  bool getSleep(void) const;
    -
    96 
    -
    97  void setLight(const bool on);
    -
    98  bool getLight(void) const;
    -
    99 
    -
    100  void setHumid(const bool on);
    -
    101  bool getHumid(void) const;
    -
    102 
    -
    103  void setSave(const bool on);
    -
    104  bool getSave(void) const;
    -
    105 
    -
    106  uint16_t getTimer(void) const;
    -
    107  void setTimer(const uint16_t mins);
    -
    108 
    -
    109  uint64_t getRaw(void) const;
    -
    110  void setRaw(const uint64_t new_code);
    -
    111 
    -
    112  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    113  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    114  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    115  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    116  stdAc::state_t toCommon(void) const;
    -
    117  String toString(void) const;
    -
    118 #ifndef UNIT_TEST
    -
    119 
    -
    120  private:
    - -
    122 #else // UNIT_TEST
    -
    123  IRsendTest _irsend;
    -
    125 #endif // UNIT_TEST
    - -
    128  bool getTimerEnabled(void) const;
    -
    129 };
    -
    130 
    -
    131 #endif // IR_TECO_H_
    -
    -
    uint8_t TensHours
    Definition: ir_Teco.h:33
    -
    uint8_t TimerOn
    Definition: ir_Teco.h:34
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Teco.cpp:322
    -
    const uint8_t kTecoFanMed
    Definition: ir_Teco.h:53
    -
    const uint64_t kTecoReset
    Definition: ir_Teco.h:58
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Teco.cpp:272
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Teco.cpp:82
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    bool getLight(void) const
    Get the Light (LED/Display) setting of the A/C.
    Definition: ir_Teco.cpp:184
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Teco.cpp:245
    -
    uint8_t Swing
    Definition: ir_Teco.h:29
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Teco.cpp:148
    -
    uint8_t Humid
    Definition: ir_Teco.h:36
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Teco.h:73
    - -
    uint8_t Save
    Definition: ir_Teco.h:39
    -
    const uint8_t kTecoMinTemp
    Definition: ir_Teco.h:55
    -
    void setRaw(const uint64_t new_code)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Teco.cpp:76
    -
    IRTecoAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Teco.cpp:49
    -
    const uint8_t kTecoMaxTemp
    Definition: ir_Teco.h:56
    -
    uint8_t UnitHours
    Definition: ir_Teco.h:35
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Teco.cpp:79
    -
    const uint8_t kTecoDry
    Definition: ir_Teco.h:48
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kTecoHeat
    Definition: ir_Teco.h:50
    -
    uint16_t getTimer(void) const
    Get the timer time for when the A/C unit will switch power state.
    Definition: ir_Teco.cpp:220
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    Native representation of a Teco A/C message.
    Definition: ir_Teco.h:23
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Teco.cpp:86
    -
    void setSwing(const bool on)
    Set the (vertical) swing setting of the A/C.
    Definition: ir_Teco.cpp:154
    - -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Teco.cpp:107
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Teco.cpp:172
    -
    void setHumid(const bool on)
    Set the Humid setting of the A/C.
    Definition: ir_Teco.cpp:190
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Teco.cpp:92
    -
    void setTimer(const uint16_t mins)
    Set the timer for when the A/C unit will switch power state.
    Definition: ir_Teco.cpp:233
    -
    const uint8_t kTecoFanLow
    Definition: ir_Teco.h:52
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Teco.cpp:166
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Teco.cpp:54
    -
    const uint16_t kTecoDefaultRepeat
    Definition: IRremoteESP8266.h:1140
    -
    uint8_t Temp
    Definition: ir_Teco.h:31
    -
    const uint8_t kTecoFanAuto
    Definition: ir_Teco.h:51
    -
    uint8_t Fan
    Definition: ir_Teco.h:28
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Teco.cpp:127
    -
    const uint8_t kTecoCool
    Definition: ir_Teco.h:47
    -
    bool getTimerEnabled(void) const
    Is the timer function enabled?
    Definition: ir_Teco.cpp:214
    -
    bool getSwing(void) const
    Get the (vertical) swing setting of the A/C.
    Definition: ir_Teco.cpp:160
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Teco.cpp:98
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Teco.cpp:133
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Teco.cpp:285
    -
    bool getHumid(void) const
    Get the Humid setting of the A/C.
    Definition: ir_Teco.cpp:196
    -
    void setSave(const bool on)
    Set the Save setting of the A/C.
    Definition: ir_Teco.cpp:202
    -
    void stateReset(void)
    Reset the internal state of the emulation.
    Definition: ir_Teco.cpp:66
    -
    TecoProtocol _
    Definition: ir_Teco.h:127
    -
    uint8_t HalfHour
    Definition: ir_Teco.h:32
    -
    uint64_t getRaw(void) const
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Teco.cpp:72
    -
    const uint8_t kTecoFan
    Definition: ir_Teco.h:49
    -
    uint8_t Light
    Definition: ir_Teco.h:37
    -
    bool getSave(void) const
    Get the Save setting of the A/C.
    Definition: ir_Teco.cpp:208
    -
    uint8_t Power
    Definition: ir_Teco.h:27
    -
    Class for handling detailed Teco A/C messages.
    Definition: ir_Teco.h:62
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Teco.cpp:258
    -
    uint8_t Sleep
    Definition: ir_Teco.h:30
    -
    uint8_t Mode
    Definition: ir_Teco.h:26
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Teco.h:121
    -
    uint64_t raw
    The state of the IR remote in IR code form.
    Definition: ir_Teco.h:24
    -
    void setLight(const bool on)
    Set the Light (LED/Display) setting of the A/C.
    Definition: ir_Teco.cpp:178
    -
    void send(const uint16_t repeat=kTecoDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Teco.cpp:59
    -
    const uint8_t kTecoFanHigh
    Definition: ir_Teco.h:54
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Teco.cpp:296
    -
    const uint8_t kTecoAuto
    Definition: ir_Teco.h:46
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Teco.cpp:113
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teknopoint_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teknopoint_8cpp.html deleted file mode 100644 index 991228a4d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Teknopoint_8cpp.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Teknopoint.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Teknopoint.cpp File Reference
    -
    -
    - -

    Support for the Teknopoint protocol. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTeknopointHdrMark = 3600
     
    const uint16_t kTeknopointBitMark = 477
     
    const uint16_t kTeknopointHdrSpace = 1600
     
    const uint16_t kTeknopointOneSpace = 1200
     
    const uint16_t kTeknopointZeroSpace = 530
     
    const uint16_t kTeknopointFreq = 38000
     
    const uint8_t kTeknopointExtraTol = 10
     
    -

    Detailed Description

    -

    Support for the Teknopoint protocol.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1486
    -

    Variable Documentation

    - -

    ◆ kTeknopointBitMark

    - -
    -
    - - - - -
    const uint16_t kTeknopointBitMark = 477
    -
    - -
    -
    - -

    ◆ kTeknopointExtraTol

    - -
    -
    - - - - -
    const uint8_t kTeknopointExtraTol = 10
    -
    - -
    -
    - -

    ◆ kTeknopointFreq

    - -
    -
    - - - - -
    const uint16_t kTeknopointFreq = 38000
    -
    - -
    -
    - -

    ◆ kTeknopointHdrMark

    - -
    -
    - - - - -
    const uint16_t kTeknopointHdrMark = 3600
    -
    - -
    -
    - -

    ◆ kTeknopointHdrSpace

    - -
    -
    - - - - -
    const uint16_t kTeknopointHdrSpace = 1600
    -
    - -
    -
    - -

    ◆ kTeknopointOneSpace

    - -
    -
    - - - - -
    const uint16_t kTeknopointOneSpace = 1200
    -
    - -
    -
    - -

    ◆ kTeknopointZeroSpace

    - -
    -
    - - - - -
    const uint16_t kTeknopointZeroSpace = 530
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8cpp.html deleted file mode 100644 index d1cd1e179..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8cpp.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Toshiba.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Toshiba.cpp File Reference
    -
    -
    - -

    Support for Toshiba protocols. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kToshibaAcHdrMark = 4400
     
    const uint16_t kToshibaAcHdrSpace = 4300
     
    const uint16_t kToshibaAcBitMark = 580
     
    const uint16_t kToshibaAcOneSpace = 1600
     
    const uint16_t kToshibaAcZeroSpace = 490
     
    const uint16_t kToshibaAcMinGap = 4600
     
    const uint16_t kToshibaAcUsualGap = 7400
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kToshibaAcBitMark

    - -
    -
    - - - - -
    const uint16_t kToshibaAcBitMark = 580
    -
    - -
    -
    - -

    ◆ kToshibaAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kToshibaAcHdrMark = 4400
    -
    - -
    -
    - -

    ◆ kToshibaAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kToshibaAcHdrSpace = 4300
    -
    - -
    -
    - -

    ◆ kToshibaAcMinGap

    - -
    -
    - - - - -
    const uint16_t kToshibaAcMinGap = 4600
    -
    - -
    -
    - -

    ◆ kToshibaAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kToshibaAcOneSpace = 1600
    -
    - -
    -
    - -

    ◆ kToshibaAcUsualGap

    - -
    -
    - - - - -
    const uint16_t kToshibaAcUsualGap = 7400
    -
    - -
    -
    - -

    ◆ kToshibaAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kToshibaAcZeroSpace = 490
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h.html deleted file mode 100644 index 44622ba9d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Toshiba.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Toshiba.h File Reference
    -
    -
    - -

    Support for Toshiba protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  ToshibaProtocol
     Native representation of a Toshiba A/C message. More...
     
    class  IRToshibaAC
     Class for handling detailed Toshiba A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kToshibaAcLengthByte = 2
     Byte pos of the "length" attribute. More...
     
    const uint8_t kToshibaAcMinLength = 6
     Min Nr. of bytes in a message. More...
     
    const uint16_t kToshibaAcInvertedLength = 4
     Nr. of leading bytes in inverted pairs. More...
     
    const uint8_t kToshibaAcSwingStep = 0
     0b000 More...
     
    const uint8_t kToshibaAcSwingOn = 1
     0b001 More...
     
    const uint8_t kToshibaAcSwingOff = 2
     0b010 More...
     
    const uint8_t kToshibaAcSwingToggle = 4
     0b100 More...
     
    const uint8_t kToshibaAcMinTemp = 17
     17C More...
     
    const uint8_t kToshibaAcMaxTemp = 30
     30C More...
     
    const uint8_t kToshibaAcAuto = 0
     
    const uint8_t kToshibaAcCool = 1
     
    const uint8_t kToshibaAcDry = 2
     
    const uint8_t kToshibaAcHeat = 3
     
    const uint8_t kToshibaAcFan = 4
     
    const uint8_t kToshibaAcOff = 7
     
    const uint8_t kToshibaAcFanAuto = 0
     
    const uint8_t kToshibaAcFanMin = 1
     
    const uint8_t kToshibaAcFanMed = 3
     
    const uint8_t kToshibaAcFanMax = 5
     
    const uint8_t kToshibaAcTurboOn = 1
     
    const uint8_t kToshibaAcEconoOn = 3
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kToshibaAcAuto

    - -
    -
    - - - - -
    const uint8_t kToshibaAcAuto = 0
    -
    - -
    -
    - -

    ◆ kToshibaAcCool

    - -
    -
    - - - - -
    const uint8_t kToshibaAcCool = 1
    -
    - -
    -
    - -

    ◆ kToshibaAcDry

    - -
    -
    - - - - -
    const uint8_t kToshibaAcDry = 2
    -
    - -
    -
    - -

    ◆ kToshibaAcEconoOn

    - -
    -
    - - - - -
    const uint8_t kToshibaAcEconoOn = 3
    -
    - -
    -
    - -

    ◆ kToshibaAcFan

    - -
    -
    - - - - -
    const uint8_t kToshibaAcFan = 4
    -
    - -
    -
    - -

    ◆ kToshibaAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kToshibaAcFanAuto = 0
    -
    - -
    -
    - -

    ◆ kToshibaAcFanMax

    - -
    -
    - - - - -
    const uint8_t kToshibaAcFanMax = 5
    -
    - -
    -
    - -

    ◆ kToshibaAcFanMed

    - -
    -
    - - - - -
    const uint8_t kToshibaAcFanMed = 3
    -
    - -
    -
    - -

    ◆ kToshibaAcFanMin

    - -
    -
    - - - - -
    const uint8_t kToshibaAcFanMin = 1
    -
    - -
    -
    - -

    ◆ kToshibaAcHeat

    - -
    -
    - - - - -
    const uint8_t kToshibaAcHeat = 3
    -
    - -
    -
    - -

    ◆ kToshibaAcInvertedLength

    - -
    -
    - - - - -
    const uint16_t kToshibaAcInvertedLength = 4
    -
    - -

    Nr. of leading bytes in inverted pairs.

    - -
    -
    - -

    ◆ kToshibaAcLengthByte

    - -
    -
    - - - - -
    const uint8_t kToshibaAcLengthByte = 2
    -
    - -

    Byte pos of the "length" attribute.

    - -
    -
    - -

    ◆ kToshibaAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kToshibaAcMaxTemp = 30
    -
    - -

    30C

    - -
    -
    - -

    ◆ kToshibaAcMinLength

    - -
    -
    - - - - -
    const uint8_t kToshibaAcMinLength = 6
    -
    - -

    Min Nr. of bytes in a message.

    - -
    -
    - -

    ◆ kToshibaAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kToshibaAcMinTemp = 17
    -
    - -

    17C

    - -
    -
    - -

    ◆ kToshibaAcOff

    - -
    -
    - - - - -
    const uint8_t kToshibaAcOff = 7
    -
    - -
    -
    - -

    ◆ kToshibaAcSwingOff

    - -
    -
    - - - - -
    const uint8_t kToshibaAcSwingOff = 2
    -
    - -

    0b010

    - -
    -
    - -

    ◆ kToshibaAcSwingOn

    - -
    -
    - - - - -
    const uint8_t kToshibaAcSwingOn = 1
    -
    - -

    0b001

    - -
    -
    - -

    ◆ kToshibaAcSwingStep

    - -
    -
    - - - - -
    const uint8_t kToshibaAcSwingStep = 0
    -
    - -

    0b000

    - -
    -
    - -

    ◆ kToshibaAcSwingToggle

    - -
    -
    - - - - -
    const uint8_t kToshibaAcSwingToggle = 4
    -
    - -

    0b100

    - -
    -
    - -

    ◆ kToshibaAcTurboOn

    - -
    -
    - - - - -
    const uint8_t kToshibaAcTurboOn = 1
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h_source.html deleted file mode 100644 index 521718108..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Toshiba_8h_source.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Toshiba.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Toshiba.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2017 David Conran
    -
    2 
    -
    11 
    -
    12 // Supports:
    -
    13 // Brand: Toshiba, Model: RAS-B13N3KV2
    -
    14 // Brand: Toshiba, Model: Akita EVO II
    -
    15 // Brand: Toshiba, Model: RAS-B13N3KVP-E
    -
    16 // Brand: Toshiba, Model: RAS 18SKP-ES
    -
    17 // Brand: Toshiba, Model: WH-TA04NE
    -
    18 // Brand: Toshiba, Model: WC-L03SE
    -
    19 // Brand: Toshiba, Model: WH-UB03NJ remote
    -
    20 // Brand: Toshiba, Model: RAS-2558V A/C
    -
    21 // Brand: Carrier, Model: 42NQV060M2 / 38NYV060M2 A/C
    -
    22 // Brand: Carrier, Model: 42NQV050M2 / 38NYV050M2 A/C
    -
    23 // Brand: Carrier, Model: 42NQV035M2 / 38NYV035M2 A/C
    -
    24 // Brand: Carrier, Model: 42NQV025M2 / 38NYV025M2 A/C
    -
    25 
    -
    26 #ifndef IR_TOSHIBA_H_
    -
    27 #define IR_TOSHIBA_H_
    -
    28 
    -
    29 #define __STDC_LIMIT_MACROS
    -
    30 #include <stdint.h>
    -
    31 #ifdef ARDUINO
    -
    32 #include <Arduino.h>
    -
    33 #endif
    -
    34 #include "IRremoteESP8266.h"
    -
    35 #include "IRsend.h"
    -
    36 #ifdef UNIT_TEST
    -
    37 #include "IRsend_test.h"
    -
    38 #endif
    -
    39 
    - - -
    43  struct {
    -
    44  // Byte[0] - 0xF2
    -
    45  uint8_t :8;
    -
    46  // Byte[1] - 0x0D (inverted previous byte's value)
    -
    47  uint8_t :8;
    -
    48  // Byte[2] - The expected payload length (in bytes) past the Byte[4].
    -
    53  uint8_t Length :8;
    -
    54  // Byte[3] - The bit-inverted value of the "length" byte.
    -
    55  uint8_t :8;
    -
    56  // Byte[4]
    -
    57  uint8_t :3;
    -
    58  uint8_t LongMsg :1;
    -
    59  uint8_t :1;
    -
    60  uint8_t ShortMsg:1;
    -
    61  uint8_t :2;
    -
    62  // Byte[5]
    -
    63  uint8_t Swing :3;
    -
    64  uint8_t :1;
    -
    65  uint8_t Temp :4;
    -
    66  // Byte[6]
    -
    67  uint8_t Mode :3;
    -
    68  uint8_t :2;
    -
    69  uint8_t Fan :3;
    -
    70  // Byte[7]
    -
    71  uint8_t :8;
    -
    72  // Byte[8]
    -
    73  // (Checksum for 72 bit messages, Eco/Turbo for long 80 bit messages)
    -
    74  uint8_t EcoTurbo :8;
    -
    75  };
    -
    76 };
    -
    77 
    -
    78 // Constants
    -
    79 
    -
    80 const uint8_t kToshibaAcLengthByte = 2;
    -
    81 const uint8_t kToshibaAcMinLength = 6;
    -
    82 
    -
    83 const uint16_t kToshibaAcInvertedLength = 4;
    -
    84 
    -
    86 const uint8_t kToshibaAcSwingStep = 0;
    -
    87 const uint8_t kToshibaAcSwingOn = 1;
    -
    88 const uint8_t kToshibaAcSwingOff = 2;
    -
    89 const uint8_t kToshibaAcSwingToggle = 4;
    -
    90 
    -
    91 const uint8_t kToshibaAcMinTemp = 17;
    -
    92 const uint8_t kToshibaAcMaxTemp = 30;
    -
    93 
    -
    94 const uint8_t kToshibaAcAuto = 0; // 0b000
    -
    95 const uint8_t kToshibaAcCool = 1; // 0b001
    -
    96 const uint8_t kToshibaAcDry = 2; // 0b010
    -
    97 const uint8_t kToshibaAcHeat = 3; // 0b011
    -
    98 const uint8_t kToshibaAcFan = 4; // 0b100
    -
    99 const uint8_t kToshibaAcOff = 7; // 0b111
    -
    100 const uint8_t kToshibaAcFanAuto = 0; // 0b000
    -
    101 const uint8_t kToshibaAcFanMin = 1; // 0b001
    -
    102 const uint8_t kToshibaAcFanMed = 3; // 0b011
    -
    103 const uint8_t kToshibaAcFanMax = 5; // 0b101
    -
    104 
    -
    105 const uint8_t kToshibaAcTurboOn = 1; // 0b01
    -
    106 const uint8_t kToshibaAcEconoOn = 3; // 0b11
    -
    107 
    -
    108 // Legacy defines. (Deprecated)
    -
    109 #define TOSHIBA_AC_AUTO kToshibaAcAuto
    -
    110 #define TOSHIBA_AC_COOL kToshibaAcCool
    -
    111 #define TOSHIBA_AC_DRY kToshibaAcDry
    -
    112 #define TOSHIBA_AC_HEAT kToshibaAcHeat
    -
    113 #define TOSHIBA_AC_POWER kToshibaAcPower
    -
    114 #define TOSHIBA_AC_FAN_AUTO kToshibaAcFanAuto
    -
    115 #define TOSHIBA_AC_FAN_MAX kToshibaAcFanMax
    -
    116 #define TOSHIBA_AC_MIN_TEMP kToshibaAcMinTemp
    -
    117 #define TOSHIBA_AC_MAX_TEMP kToshibaAcMaxTemp
    -
    118 
    -
    119 // Classes
    -
    121 class IRToshibaAC {
    -
    122  public:
    -
    123  explicit IRToshibaAC(const uint16_t pin, const bool inverted = false,
    -
    124  const bool use_modulation = true);
    -
    125  void stateReset(void);
    -
    126 #if SEND_TOSHIBA_AC
    -
    127  void send(const uint16_t repeat = kToshibaACMinRepeat);
    -
    132  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    133 #endif // SEND_TOSHIBA_AC
    -
    134  void begin(void);
    -
    135  void on(void);
    -
    136  void off(void);
    -
    137  void setPower(const bool on);
    -
    138  bool getPower(void) const;
    -
    139  void setTemp(const uint8_t degrees);
    -
    140  uint8_t getTemp(void) const;
    -
    141  void setFan(const uint8_t speed);
    -
    142  uint8_t getFan(void) const;
    -
    143  void setTurbo(const bool on);
    -
    144  bool getTurbo(void) const;
    -
    145  void setEcono(const bool on);
    -
    146  bool getEcono(void) const;
    -
    147  void setMode(const uint8_t mode);
    -
    148  uint8_t getMode(const bool raw = false) const;
    -
    149  void setRaw(const uint8_t newState[],
    -
    150  const uint16_t length = kToshibaACStateLength);
    -
    151  uint8_t* getRaw(void);
    -
    152  static uint16_t getInternalStateLength(const uint8_t state[],
    -
    153  const uint16_t size);
    -
    154  uint16_t getStateLength(void) const;
    -
    155  static bool validChecksum(const uint8_t state[],
    -
    156  const uint16_t length = kToshibaACStateLength);
    -
    157  uint8_t getSwing(const bool raw = true) const;
    -
    158  void setSwing(const uint8_t setting);
    -
    159  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    160  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    161  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    162  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    163  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    164  String toString(void) const;
    -
    165 #ifndef UNIT_TEST
    -
    166 
    -
    167  private:
    - -
    169 #else // UNIT_TEST
    -
    170  IRsendTest _irsend;
    -
    172 #endif // UNIT_TEST
    - - -
    176  uint8_t _prev_mode;
    -
    177  bool _send_swing;
    -
    178  uint8_t _swing_mode;
    -
    179  void checksum(const uint16_t length = kToshibaACStateLength);
    -
    180  static uint8_t calcChecksum(const uint8_t state[],
    -
    181  const uint16_t length = kToshibaACStateLength);
    -
    182  void setStateLength(const uint16_t size);
    -
    183  void _backupState(void);
    -
    184  void _restoreState(void);
    -
    185 };
    -
    186 
    -
    187 #endif // IR_TOSHIBA_H_
    -
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Toshiba.cpp:190
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Toshiba.cpp:373
    -
    Class for handling detailed Toshiba A/C messages.
    Definition: ir_Toshiba.h:121
    -
    bool getEcono(void) const
    Get the Economy mode setting of the A/C.
    Definition: ir_Toshiba.cpp:324
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Toshiba.cpp:400
    -
    void setSwing(const uint8_t setting)
    Set the swing setting of the A/C.
    Definition: ir_Toshiba.cpp:251
    -
    const uint8_t kToshibaAcCool
    Definition: ir_Toshiba.h:95
    -
    void setTurbo(const bool on)
    Set the Turbo (Powerful) setting of the A/C.
    Definition: ir_Toshiba.cpp:313
    -
    uint8_t getSwing(const bool raw=true) const
    Get the swing setting of the A/C.
    Definition: ir_Toshiba.cpp:245
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Toshiba.cpp:155
    -
    uint8_t _swing_mode
    The saved swing state/mode/command.
    Definition: ir_Toshiba.h:178
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Toshiba.cpp:187
    -
    void _backupState(void)
    Make a copy of the internal code-form A/C state.
    Definition: ir_Toshiba.cpp:125
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Toshiba.cpp:345
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    static uint16_t getInternalStateLength(const uint8_t state[], const uint16_t size)
    Get the length of the supplied Toshiba state per it's protocol structure.
    Definition: ir_Toshiba.cpp:104
    -
    const uint8_t kToshibaAcFanAuto
    Definition: ir_Toshiba.h:100
    -
    void send(const uint16_t repeat=kToshibaACMinRepeat)
    Send the current internal state as IR messages.
    Definition: ir_Toshiba.cpp:84
    -
    void setRaw(const uint8_t newState[], const uint16_t length=kToshibaACStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Toshiba.cpp:145
    -
    void setEcono(const bool on)
    Set the Economy mode setting of the A/C.
    Definition: ir_Toshiba.cpp:333
    -
    const uint16_t kToshibaAcInvertedLength
    Nr. of leading bytes in inverted pairs.
    Definition: ir_Toshiba.h:83
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Toshiba.cpp:225
    -
    const uint8_t kToshibaAcMinTemp
    17C
    Definition: ir_Toshiba.h:91
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Toshiba.h:168
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Toshiba.h:132
    - -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol with all integrity checks passing.
    Definition: ir_Toshiba.cpp:137
    -
    void checksum(const uint16_t length=kToshibaACStateLength)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Toshiba.cpp:173
    -
    uint8_t raw[kToshibaACStateLengthLong]
    The state in code form.
    Definition: ir_Toshiba.h:42
    -
    uint8_t EcoTurbo
    Definition: ir_Toshiba.h:74
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kToshibaAcSwingOn
    0b001
    Definition: ir_Toshiba.h:87
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Toshiba.cpp:194
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    IRToshibaAC(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Toshiba.cpp:63
    -
    uint8_t Fan
    Definition: ir_Toshiba.h:69
    -
    uint16_t getStateLength(void) const
    Get the length of the current internal state per the protocol structure.
    Definition: ir_Toshiba.cpp:113
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Toshiba.cpp:451
    -
    uint8_t LongMsg
    Definition: ir_Toshiba.h:58
    -
    const uint8_t kToshibaAcSwingOff
    0b010
    Definition: ir_Toshiba.h:88
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Toshiba.cpp:205
    -
    const uint8_t kToshibaAcFanMed
    Definition: ir_Toshiba.h:102
    - -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Toshiba.cpp:79
    -
    const uint8_t kToshibaAcMinLength
    Min Nr. of bytes in a message.
    Definition: ir_Toshiba.h:81
    -
    const uint8_t kToshibaAcSwingStep
    0b000
    Definition: ir_Toshiba.h:86
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Toshiba.cpp:69
    -
    void _restoreState(void)
    Recover the internal code-form A/C state from the backup.
    Definition: ir_Toshiba.cpp:130
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Toshiba.cpp:219
    -
    const uint8_t kToshibaAcFan
    Definition: ir_Toshiba.h:98
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Toshiba.cpp:387
    -
    const uint8_t kToshibaAcHeat
    Definition: ir_Toshiba.h:97
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Toshiba.cpp:280
    -
    uint8_t Length
    < Known lengths are: 1 (56 bit message) 3 (72 bit message) 4 (80 bit message)
    Definition: ir_Toshiba.h:53
    -
    const uint8_t kToshibaAcTurboOn
    Definition: ir_Toshiba.h:105
    -
    Native representation of a Toshiba A/C message.
    Definition: ir_Toshiba.h:41
    -
    uint8_t Swing
    Definition: ir_Toshiba.h:63
    -
    const uint8_t kToshibaAcLengthByte
    Byte pos of the "length" attribute.
    Definition: ir_Toshiba.h:80
    -
    uint8_t getMode(const bool raw=false) const
    Get the operating mode setting of the A/C.
    Definition: ir_Toshiba.cpp:267
    -
    uint8_t Mode
    Definition: ir_Toshiba.h:67
    -
    const uint16_t kToshibaACMinRepeat
    Definition: IRremoteESP8266.h:1145
    -
    const uint16_t kToshibaACStateLength
    Definition: IRremoteESP8266.h:1143
    -
    bool _send_swing
    Flag indicating if we need to send a swing message.
    Definition: ir_Toshiba.h:177
    -
    const uint8_t kToshibaAcSwingToggle
    0b100
    Definition: ir_Toshiba.h:89
    -
    const uint16_t kToshibaACStateLengthLong
    Definition: IRremoteESP8266.h:1148
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kToshibaACStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Toshiba.cpp:164
    -
    const uint8_t kToshibaAcDry
    Definition: ir_Toshiba.h:96
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Toshiba.cpp:236
    -
    uint8_t backup[kToshibaACStateLengthLong]
    A backup copy of the state.
    Definition: ir_Toshiba.h:175
    -
    uint8_t ShortMsg
    Definition: ir_Toshiba.h:60
    -
    bool getTurbo(void) const
    Get the Turbo (Powerful) setting of the A/C.
    Definition: ir_Toshiba.cpp:304
    -
    const uint8_t kToshibaAcAuto
    Definition: ir_Toshiba.h:94
    -
    const uint8_t kToshibaAcMaxTemp
    30C
    Definition: ir_Toshiba.h:92
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Toshiba.cpp:359
    -
    void setTemp(const uint8_t degrees)
    Set the temperature.
    Definition: ir_Toshiba.cpp:211
    -
    uint8_t Temp
    Definition: ir_Toshiba.h:65
    -
    uint8_t _prev_mode
    Store of the previously set mode.
    Definition: ir_Toshiba.h:176
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kToshibaAcFanMax
    Definition: ir_Toshiba.h:103
    -
    const uint8_t kToshibaAcEconoOn
    Definition: ir_Toshiba.h:106
    -
    ToshibaProtocol _
    Definition: ir_Toshiba.h:174
    -
    const uint8_t kToshibaAcFanMin
    Definition: ir_Toshiba.h:101
    -
    void setStateLength(const uint16_t size)
    Set the internal length of the current internal state per the protocol.
    Definition: ir_Toshiba.cpp:119
    -
    const uint8_t kToshibaAcOff
    Definition: ir_Toshiba.h:99
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8cpp.html deleted file mode 100644 index 1da5d4788..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8cpp.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Transcold.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Transcold.cpp File Reference
    -
    -
    - -

    Support for Transcold A/C protocols. -More...

    - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTranscoldHdrMark = 5944
     uSeconds. More...
     
    const uint16_t kTranscoldBitMark = 555
     uSeconds. More...
     
    const uint16_t kTranscoldHdrSpace = 7563
     uSeconds. More...
     
    const uint16_t kTranscoldOneSpace = 3556
     uSeconds. More...
     
    const uint16_t kTranscoldZeroSpace = 1526
     uSeconds. More...
     
    -

    Detailed Description

    -

    Support for Transcold A/C protocols.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1256
    -

    Variable Documentation

    - -

    ◆ kTranscoldBitMark

    - -
    -
    - - - - -
    const uint16_t kTranscoldBitMark = 555
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kTranscoldHdrMark

    - -
    -
    - - - - -
    const uint16_t kTranscoldHdrMark = 5944
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kTranscoldHdrSpace

    - -
    -
    - - - - -
    const uint16_t kTranscoldHdrSpace = 7563
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kTranscoldOneSpace

    - -
    -
    - - - - -
    const uint16_t kTranscoldOneSpace = 3556
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kTranscoldZeroSpace

    - -
    -
    - - - - -
    const uint16_t kTranscoldZeroSpace = 1526
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h.html deleted file mode 100644 index a5f83afdc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h.html +++ /dev/null @@ -1,491 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Transcold.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Transcold.h File Reference
    -
    -
    - -

    Support for Transcold A/C protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  TranscoldProtocol
     Native representation of a Transcold A/C message. More...
     
    class  IRTranscoldAc
     Class for handling detailed Transcold A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kTranscoldCool = 0b0110
     
    const uint8_t kTranscoldDry = 0b1100
     
    const uint8_t kTranscoldAuto = 0b1110
     
    const uint8_t kTranscoldHeat = 0b1010
     
    const uint8_t kTranscoldFan = 0b0010
     
    const uint8_t kTranscoldFanMin = 0b1001
     
    const uint8_t kTranscoldFanMed = 0b1101
     
    const uint8_t kTranscoldFanMax = 0b1011
     
    const uint8_t kTranscoldFanAuto = 0b1111
     
    const uint8_t kTranscoldFanAuto0 = 0b0110
     
    const uint8_t kTranscoldFanZoneFollow = 0b0000
     
    const uint8_t kTranscoldFanFixed = 0b1100
     
    const uint8_t kTranscoldTempMin = 18
     
    const uint8_t kTranscoldTempMax = 30
     
    const uint8_t kTranscoldFanTempCode = 0b1111
     
    const uint8_t kTranscoldTempSize = 4
     
    const uint8_t kTranscoldPrefix = 0b0000
     
    const uint8_t kTranscoldUnknown = 0xFF
     
    const uint32_t kTranscoldOff = 0b111011110111100101010100
     
    const uint32_t kTranscoldSwing = 0b111001110110000101010100
     
    const uint32_t kTranscoldSwingH = 0b111101110110000101010100
     
    const uint32_t kTranscoldSwingV = 0b111001110110000101010100
     
    const uint32_t kTranscoldCmdFan = 0b111011110110000101010100
     
    const uint32_t kTranscoldKnownGoodState = 0xE96554
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kTranscoldAuto

    - -
    -
    - - - - -
    const uint8_t kTranscoldAuto = 0b1110
    -
    - -
    -
    - -

    ◆ kTranscoldCmdFan

    - -
    -
    - - - - -
    const uint32_t kTranscoldCmdFan = 0b111011110110000101010100
    -
    - -
    -
    - -

    ◆ kTranscoldCool

    - -
    -
    - - - - -
    const uint8_t kTranscoldCool = 0b0110
    -
    - -
    -
    - -

    ◆ kTranscoldDry

    - -
    -
    - - - - -
    const uint8_t kTranscoldDry = 0b1100
    -
    - -
    -
    - -

    ◆ kTranscoldFan

    - -
    -
    - - - - -
    const uint8_t kTranscoldFan = 0b0010
    -
    - -
    -
    - -

    ◆ kTranscoldFanAuto

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanAuto = 0b1111
    -
    - -
    -
    - -

    ◆ kTranscoldFanAuto0

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanAuto0 = 0b0110
    -
    - -
    -
    - -

    ◆ kTranscoldFanFixed

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanFixed = 0b1100
    -
    - -
    -
    - -

    ◆ kTranscoldFanMax

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanMax = 0b1011
    -
    - -
    -
    - -

    ◆ kTranscoldFanMed

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanMed = 0b1101
    -
    - -
    -
    - -

    ◆ kTranscoldFanMin

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanMin = 0b1001
    -
    - -
    -
    - -

    ◆ kTranscoldFanTempCode

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanTempCode = 0b1111
    -
    - -
    -
    - -

    ◆ kTranscoldFanZoneFollow

    - -
    -
    - - - - -
    const uint8_t kTranscoldFanZoneFollow = 0b0000
    -
    - -
    -
    - -

    ◆ kTranscoldHeat

    - -
    -
    - - - - -
    const uint8_t kTranscoldHeat = 0b1010
    -
    - -
    -
    - -

    ◆ kTranscoldKnownGoodState

    - -
    -
    - - - - -
    const uint32_t kTranscoldKnownGoodState = 0xE96554
    -
    - -
    -
    - -

    ◆ kTranscoldOff

    - -
    -
    - - - - -
    const uint32_t kTranscoldOff = 0b111011110111100101010100
    -
    - -
    -
    - -

    ◆ kTranscoldPrefix

    - -
    -
    - - - - -
    const uint8_t kTranscoldPrefix = 0b0000
    -
    - -
    -
    - -

    ◆ kTranscoldSwing

    - -
    -
    - - - - -
    const uint32_t kTranscoldSwing = 0b111001110110000101010100
    -
    - -
    -
    - -

    ◆ kTranscoldSwingH

    - -
    -
    - - - - -
    const uint32_t kTranscoldSwingH = 0b111101110110000101010100
    -
    - -
    -
    - -

    ◆ kTranscoldSwingV

    - -
    -
    - - - - -
    const uint32_t kTranscoldSwingV = 0b111001110110000101010100
    -
    - -
    -
    - -

    ◆ kTranscoldTempMax

    - -
    -
    - - - - -
    const uint8_t kTranscoldTempMax = 30
    -
    - -
    -
    - -

    ◆ kTranscoldTempMin

    - -
    -
    - - - - -
    const uint8_t kTranscoldTempMin = 18
    -
    - -
    -
    - -

    ◆ kTranscoldTempSize

    - -
    -
    - - - - -
    const uint8_t kTranscoldTempSize = 4
    -
    - -
    -
    - -

    ◆ kTranscoldUnknown

    - -
    -
    - - - - -
    const uint8_t kTranscoldUnknown = 0xFF
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h_source.html deleted file mode 100644 index eb8b2e7d7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Transcold_8h_source.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Transcold.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Transcold.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 Chandrashekar Shetty (iamDshetty)
    -
    2 // Copyright 2020 crankyoldgit
    -
    3 // Copyright 2021 siriuslzx
    -
    4 
    -
    9 
    -
    10 // Supports:
    -
    11 // Brand: Transcold, Model: M1-F-NO-6 A/C
    -
    12 
    -
    13 /***************************************************************************************************************
    -
    14 
    -
    15  Raw Data Calculation: (UR 12)
    -
    16 //ON button
    -
    17 ON 24 Auto cool close (right) 111011110001000001100001100111100101010010101011
    -
    18 
    -
    19 //OFF button
    -
    20 OFF 24 Auto cool close (right) 111011110001000001110001100011100101010010101011
    -
    21 
    -
    22 // MODE
    -
    23 Hot mode 24 auto hot close (right) 111010010001011010100001010111100101010010101011
    -
    24 Fan mode 0 (prev24) low fan close (right) "11101001 0001011000100001110111100101010010101011"
    -
    25 Dry mode 24 low dry close (right) "11101001 0001011011000001 00111110 0101010010101011"
    -
    26 Auto Mode 0(prev24) low auto close (right) "11101001 0001011011100001 00011110 0101010010101011"
    -
    27 Cool Mode 24 low cool close (right) "11101001 0001011001100001 10011110 0101010010101011"
    -
    28 
    -
    29 //FAN SPEED
    -
    30 fan Speed low 24 low cool close (right) "11101001 0001011001100001 10011110 0101010010101011"
    -
    31 fan Speed medium 24 medium cool close (right) "11101101 000100100110000110011110 0101010010101011"
    -
    32 fan Speed high 24 high cool close (right) "11101011 000101000110000110011110 0101010010101011"
    -
    33 fan Speed auto 24 auto cool close (right) "11101111 000100000110000110011110 0101010010101011"
    -
    34 
    -
    35 //SWING
    -
    36 Swing open 24 auto cool open (left) "11110111 000010000110000110011110 0101010010101011"
    -
    37 Swing close 24 auto cool close (right) "11101111 000100000110000110011110 0101010010101011"
    -
    38 
    -
    39 //TEMPERATURE
    -
    40 temp 30degC Auto cool close (right) 111011110001000001100100100100010101010010101011
    -
    41 temp 29 Auto cool close (right) 111011110001000001101100100100010101010010101011
    -
    42 temp 28 Auto cool close (right) 111011110001000001100010100100010101010010101011
    -
    43 temp 27 Auto cool close (right) 111011110001000001101010100100010101010010101011
    -
    44 temp 26 Auto cool close (right) 111011110001000001100110100100010101010010101011
    -
    45 temp 25 Auto cool close (right) 111011110001000001101110100100010101010010101011
    -
    46 temp 24 Auto cool close (right) 111011110001000001100001100111100101010010101011
    -
    47 temp 23 Auto cool close (right) 111011110001000001101001100101100101010010101011
    -
    48 temp 22 Auto cool close (right) 111011110001000001100101100101100101010010101011
    -
    49 temp 21 Auto cool close (right) 111011110001000001101101100101100101010010101011
    -
    50 temp 20 Auto cool close (right) 111011110001000001100011100101100101010010101011
    -
    51 temp 19 Auto cool close (right) 111011110001000001101011100101100101010010101011
    -
    52 temp 18 Auto cool close (right) 111011110001000001100111100110000101010010101011
    -
    53 temp 17 Auto cool close (right) 111011110001000001100111100110000101010010101011
    -
    54 temp 16 Auto cool close (right) 111011110001000001100111100110000101010010101011
    -
    55 
    -
    56  **************************************************************************************************************/
    -
    57 
    -
    58 #ifndef IR_TRANSCOLD_H_
    -
    59 #define IR_TRANSCOLD_H_
    -
    60 
    -
    61 #define __STDC_LIMIT_MACROS
    -
    62 #include <stdint.h>
    -
    63 #ifndef UNIT_TEST
    -
    64 #include <Arduino.h>
    -
    65 #endif
    -
    66 #include "IRremoteESP8266.h"
    -
    67 #include "IRsend.h"
    -
    68 #ifdef UNIT_TEST
    -
    69 #include "IRsend_test.h"
    -
    70 #endif
    -
    71 
    - -
    74  uint32_t raw;
    -
    75  struct {
    -
    76  uint8_t :8;
    -
    77  uint8_t Temp :4;
    -
    78  uint8_t Mode :4;
    -
    79  uint8_t Fan :4;
    -
    80  uint8_t :4;
    -
    81  uint8_t :8;
    -
    82  };
    -
    83 };
    -
    84 
    -
    85 // Constants
    -
    86 // Modes
    -
    87 const uint8_t kTranscoldCool = 0b0110;
    -
    88 const uint8_t kTranscoldDry = 0b1100;
    -
    89 const uint8_t kTranscoldAuto = 0b1110;
    -
    90 const uint8_t kTranscoldHeat = 0b1010;
    -
    91 const uint8_t kTranscoldFan = 0b0010;
    -
    92 
    -
    93 // Fan Control
    -
    94 const uint8_t kTranscoldFanMin = 0b1001;
    -
    95 const uint8_t kTranscoldFanMed = 0b1101;
    -
    96 const uint8_t kTranscoldFanMax = 0b1011;
    -
    97 const uint8_t kTranscoldFanAuto = 0b1111;
    -
    98 const uint8_t kTranscoldFanAuto0 = 0b0110;
    -
    99 const uint8_t kTranscoldFanZoneFollow = 0b0000;
    -
    100 const uint8_t kTranscoldFanFixed = 0b1100;
    -
    101 
    -
    102 // Temperature
    -
    103 const uint8_t kTranscoldTempMin = 18; // Celsius
    -
    104 const uint8_t kTranscoldTempMax = 30; // Celsius
    -
    105 const uint8_t kTranscoldFanTempCode = 0b1111; // Part of Fan Mode.
    -
    106 const uint8_t kTranscoldTempSize = 4;
    -
    107 
    -
    108 const uint8_t kTranscoldPrefix = 0b0000;
    -
    109 const uint8_t kTranscoldUnknown = 0xFF;
    -
    110 const uint32_t kTranscoldOff = 0b111011110111100101010100;
    -
    111 const uint32_t kTranscoldSwing = 0b111001110110000101010100;
    -
    112 const uint32_t kTranscoldSwingH = 0b111101110110000101010100; // NA
    -
    113 const uint32_t kTranscoldSwingV = 0b111001110110000101010100; // NA
    -
    114 const uint32_t kTranscoldCmdFan = 0b111011110110000101010100; // NA
    -
    115 
    -
    116 const uint32_t kTranscoldKnownGoodState = 0xE96554;
    -
    117 
    -
    118 // Classes
    - -
    121  public:
    -
    122  explicit IRTranscoldAc(const uint16_t pin, const bool inverted = false,
    -
    123  const bool use_modulation = true);
    -
    124  void stateReset(void);
    -
    125 #if SEND_TRANSCOLD
    -
    126  void send(const uint16_t repeat = kTranscoldDefaultRepeat);
    -
    131  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    132 #endif // SEND_TRANSCOLD
    -
    133  void begin(void);
    -
    134  void on(void);
    -
    135  void off(void);
    -
    136  void setPower(const bool state);
    -
    137  bool getPower(void) const;
    -
    138  void setTemp(const uint8_t temp);
    -
    139  uint8_t getTemp(void) const;
    -
    140  void setFan(const uint8_t speed, const bool modecheck = true);
    -
    141  uint8_t getFan(void) const;
    -
    142  void setMode(const uint8_t mode);
    -
    143  uint8_t getMode(void) const;
    -
    144  void setSwing(void);
    -
    145  bool getSwing(void) const;
    -
    146  uint32_t getRaw(void) const;
    -
    147  void setRaw(const uint32_t new_code);
    -
    148  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    149  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    150  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    151  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    152  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    153  String toString(void) const;
    -
    154 #ifndef UNIT_TEST
    -
    155 
    -
    156  private:
    - -
    158 #else
    -
    159  IRsendTest _irsend;
    -
    161 #endif
    -
    163  // internal state
    -
    164  bool swingFlag;
    - - -
    167 
    - -
    169  uint32_t special_state;
    -
    170  bool isSpecialState(void) const;
    -
    171  bool handleSpecialState(const uint32_t data);
    -
    172 };
    -
    173 
    -
    174 #endif // IR_TRANSCOLD_H_
    -
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode to it's common stdAc::opmode_t equivalent.
    Definition: ir_Transcold.cpp:316
    -
    const uint8_t kTranscoldFanFixed
    Definition: ir_Transcold.h:100
    -
    String toString(void) const
    Convert the internal state into a human readable string.
    Definition: ir_Transcold.cpp:388
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Transcold.cpp:88
    -
    void stateReset(void)
    Reset the internal state to a fixed known good state.
    Definition: ir_Transcold.cpp:79
    -
    const uint32_t kTranscoldSwing
    Definition: ir_Transcold.h:111
    -
    IRTranscoldAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Transcold.cpp:74
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    const uint8_t kTranscoldFanMed
    Definition: ir_Transcold.h:95
    -
    const uint32_t kTranscoldOff
    Definition: ir_Transcold.h:110
    -
    bool getSwing(void) const
    Get the Swing setting of the A/C.
    Definition: ir_Transcold.cpp:201
    -
    const uint8_t kTranscoldUnknown
    Definition: ir_Transcold.h:109
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Transcold.cpp:213
    -
    uint32_t raw
    The state of the IR remote in IR code form.
    Definition: ir_Transcold.h:74
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Transcold.cpp:329
    -
    const uint32_t kTranscoldSwingH
    Definition: ir_Transcold.h:112
    -
    void setRaw(const uint32_t new_code)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Transcold.cpp:114
    -
    const uint16_t kTranscoldDefaultRepeat
    Definition: IRremoteESP8266.h:1151
    -
    void setPower(const bool state)
    Change the power setting.
    Definition: ir_Transcold.cpp:185
    -
    const uint8_t kTranscoldPrefix
    Definition: ir_Transcold.h:108
    - -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    void setFan(const uint8_t speed, const bool modecheck=true)
    Set the speed of the fan.
    Definition: ir_Transcold.cpp:256
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Transcold.cpp:194
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kTranscoldCool
    Definition: ir_Transcold.h:87
    -
    const uint8_t kTranscoldHeat
    Definition: ir_Transcold.h:90
    -
    const uint8_t kTranscoldFanAuto0
    Definition: ir_Transcold.h:98
    -
    bool handleSpecialState(const uint32_t data)
    Adjust any internal settings based on the type of special state we are supplied. Does nothing if it i...
    Definition: ir_Transcold.cpp:146
    -
    uint32_t getRaw(void) const
    Get a copy of the internal state as a valid code for this protocol.
    Definition: ir_Transcold.cpp:105
    - -
    bool swingHFlag
    Definition: ir_Transcold.h:165
    -
    const uint8_t kTranscoldFanZoneFollow
    Definition: ir_Transcold.h:99
    -
    uint8_t Mode
    Definition: ir_Transcold.h:78
    -
    TranscoldProtocol _
    Definition: ir_Transcold.h:168
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Transcold.h:157
    -
    const uint8_t kTranscoldTempSize
    Definition: ir_Transcold.h:106
    -
    bool isSpecialState(void) const
    Is the current state is a special state?
    Definition: ir_Transcold.cpp:132
    -
    const uint32_t kTranscoldKnownGoodState
    Definition: ir_Transcold.h:116
    -
    const uint8_t kTranscoldFanAuto
    Definition: ir_Transcold.h:97
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Transcold.cpp:161
    -
    Native representation of a Transcold A/C message.
    Definition: ir_Transcold.h:73
    -
    bool swingFlag
    Definition: ir_Transcold.h:164
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Transcold.cpp:178
    -
    const uint8_t kTranscoldFanTempCode
    Definition: ir_Transcold.h:105
    -
    const uint8_t kTranscoldFanMax
    Definition: ir_Transcold.h:96
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Transcold.cpp:197
    -
    void setSwing(void)
    Toggle the Swing mode of the A/C.
    Definition: ir_Transcold.cpp:204
    -
    const uint8_t kTranscoldTempMin
    Definition: ir_Transcold.h:103
    -
    bool swingVFlag
    Definition: ir_Transcold.h:166
    -
    uint8_t Temp
    Definition: ir_Transcold.h:77
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the A/C state to it's common stdAc::state_t equivalent.
    Definition: ir_Transcold.cpp:341
    -
    Class for handling detailed Transcold A/C messages.
    Definition: ir_Transcold.h:120
    -
    const uint32_t kTranscoldSwingV
    Definition: ir_Transcold.h:113
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Transcold.cpp:249
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Transcold.cpp:302
    -
    uint32_t special_state
    special mode.
    Definition: ir_Transcold.h:169
    -
    const uint8_t kTranscoldAuto
    Definition: ir_Transcold.h:89
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Transcold.cpp:171
    -
    void send(const uint16_t repeat=kTranscoldDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Transcold.cpp:93
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a standard A/C mode into its native mode.
    Definition: ir_Transcold.cpp:289
    -
    const uint32_t kTranscoldCmdFan
    Definition: ir_Transcold.h:114
    -
    const uint8_t kTranscoldFanMin
    Definition: ir_Transcold.h:94
    -
    const uint8_t kTranscoldFan
    Definition: ir_Transcold.h:91
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Transcold.cpp:240
    -
    const uint8_t kTranscoldTempMax
    Definition: ir_Transcold.h:104
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kTranscoldDry
    Definition: ir_Transcold.h:88
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Transcold.h:131
    -
    uint8_t Fan
    Definition: ir_Transcold.h:79
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8cpp.html deleted file mode 100644 index 3d4b6e325..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8cpp.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Trotec.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Trotec.cpp File Reference
    -
    -
    - -

    Support for Trotec protocols. -More...

    - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTrotecHdrMark = 5952
     
    const uint16_t kTrotecHdrSpace = 7364
     
    const uint16_t kTrotecBitMark = 592
     
    const uint16_t kTrotecOneSpace = 1560
     
    const uint16_t kTrotecZeroSpace = 592
     
    const uint16_t kTrotecGap = 6184
     
    const uint16_t kTrotecGapEnd = 1500
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kTrotecBitMark

    - -
    -
    - - - - -
    const uint16_t kTrotecBitMark = 592
    -
    - -
    -
    - -

    ◆ kTrotecGap

    - -
    -
    - - - - -
    const uint16_t kTrotecGap = 6184
    -
    - -
    -
    - -

    ◆ kTrotecGapEnd

    - -
    -
    - - - - -
    const uint16_t kTrotecGapEnd = 1500
    -
    - -
    -
    - -

    ◆ kTrotecHdrMark

    - -
    -
    - - - - -
    const uint16_t kTrotecHdrMark = 5952
    -
    - -
    -
    - -

    ◆ kTrotecHdrSpace

    - -
    -
    - - - - -
    const uint16_t kTrotecHdrSpace = 7364
    -
    - -
    -
    - -

    ◆ kTrotecOneSpace

    - -
    -
    - - - - -
    const uint16_t kTrotecOneSpace = 1560
    -
    - -
    -
    - -

    ◆ kTrotecZeroSpace

    - -
    -
    - - - - -
    const uint16_t kTrotecZeroSpace = 592
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h.html deleted file mode 100644 index 551181c55..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Trotec.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Trotec.h File Reference
    -
    -
    - -

    Support for Trotec protocols. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  TrotecProtocol
     Native representation of a Trotec A/C message. More...
     
    class  IRTrotecESP
     Class for handling detailed Trotec A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kTrotecIntro1 = 0x12
     
    const uint8_t kTrotecIntro2 = 0x34
     
    const uint8_t kTrotecAuto = 0
     
    const uint8_t kTrotecCool = 1
     
    const uint8_t kTrotecDry = 2
     
    const uint8_t kTrotecFan = 3
     
    const uint8_t kTrotecFanLow = 1
     
    const uint8_t kTrotecFanMed = 2
     
    const uint8_t kTrotecFanHigh = 3
     
    const uint8_t kTrotecMinTemp = 18
     
    const uint8_t kTrotecDefTemp = 25
     
    const uint8_t kTrotecMaxTemp = 32
     
    const uint8_t kTrotecMaxTimer = 23
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kTrotecAuto

    - -
    -
    - - - - -
    const uint8_t kTrotecAuto = 0
    -
    - -
    -
    - -

    ◆ kTrotecCool

    - -
    -
    - - - - -
    const uint8_t kTrotecCool = 1
    -
    - -
    -
    - -

    ◆ kTrotecDefTemp

    - -
    -
    - - - - -
    const uint8_t kTrotecDefTemp = 25
    -
    - -
    -
    - -

    ◆ kTrotecDry

    - -
    -
    - - - - -
    const uint8_t kTrotecDry = 2
    -
    - -
    -
    - -

    ◆ kTrotecFan

    - -
    -
    - - - - -
    const uint8_t kTrotecFan = 3
    -
    - -
    -
    - -

    ◆ kTrotecFanHigh

    - -
    -
    - - - - -
    const uint8_t kTrotecFanHigh = 3
    -
    - -
    -
    - -

    ◆ kTrotecFanLow

    - -
    -
    - - - - -
    const uint8_t kTrotecFanLow = 1
    -
    - -
    -
    - -

    ◆ kTrotecFanMed

    - -
    -
    - - - - -
    const uint8_t kTrotecFanMed = 2
    -
    - -
    -
    - -

    ◆ kTrotecIntro1

    - -
    -
    - - - - -
    const uint8_t kTrotecIntro1 = 0x12
    -
    - -
    -
    - -

    ◆ kTrotecIntro2

    - -
    -
    - - - - -
    const uint8_t kTrotecIntro2 = 0x34
    -
    - -
    -
    - -

    ◆ kTrotecMaxTemp

    - -
    -
    - - - - -
    const uint8_t kTrotecMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kTrotecMaxTimer

    - -
    -
    - - - - -
    const uint8_t kTrotecMaxTimer = 23
    -
    - -
    -
    - -

    ◆ kTrotecMinTemp

    - -
    -
    - - - - -
    const uint8_t kTrotecMinTemp = 18
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h_source.html deleted file mode 100644 index 44c1b7f36..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Trotec_8h_source.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Trotec.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Trotec.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2017 stufisher
    -
    2 // Copyright 2019 crankyoldgit
    -
    3 
    -
    8 
    -
    9 // Supports:
    -
    10 // Brand: Trotec, Model: PAC 3200 A/C
    -
    11 // Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C
    -
    12 
    -
    13 #ifndef IR_TROTEC_H_
    -
    14 #define IR_TROTEC_H_
    -
    15 
    -
    16 #ifndef UNIT_TEST
    -
    17 #include <Arduino.h>
    -
    18 #endif
    -
    19 #include "IRremoteESP8266.h"
    -
    20 #include "IRsend.h"
    -
    21 #ifdef UNIT_TEST
    -
    22 #include "IRsend_test.h"
    -
    23 #endif
    -
    24 
    - - -
    28  struct {
    -
    29  // Byte 0
    -
    30  uint8_t Intro1:8; // fixed value
    -
    31  // Byte 1
    -
    32  uint8_t Intro2:8; // fixed value
    -
    33  // Byte 2
    -
    34  uint8_t Mode :2;
    -
    35  uint8_t :1;
    -
    36  uint8_t Power :1;
    -
    37  uint8_t Fan :2;
    -
    38  uint8_t :2;
    -
    39  // Byte 3
    -
    40  uint8_t Temp :4;
    -
    41  uint8_t :3;
    -
    42  uint8_t Sleep :1;
    -
    43  // Byte 4
    -
    44  uint8_t :8;
    -
    45  // Byte 5
    -
    46  uint8_t :6;
    -
    47  uint8_t Timer :1;
    -
    48  uint8_t :1;
    -
    49  // Byte 6
    -
    50  uint8_t Hours :8;
    -
    51  // Byte 7
    -
    52  uint8_t :8;
    -
    53  // Byte 8
    -
    54  uint8_t Sum :8;
    -
    55  };
    -
    56 };
    -
    57 
    -
    58 // Constants
    -
    59 const uint8_t kTrotecIntro1 = 0x12;
    -
    60 const uint8_t kTrotecIntro2 = 0x34;
    -
    61 
    -
    62 const uint8_t kTrotecAuto = 0;
    -
    63 const uint8_t kTrotecCool = 1;
    -
    64 const uint8_t kTrotecDry = 2;
    -
    65 const uint8_t kTrotecFan = 3;
    -
    66 
    -
    67 const uint8_t kTrotecFanLow = 1;
    -
    68 const uint8_t kTrotecFanMed = 2;
    -
    69 const uint8_t kTrotecFanHigh = 3;
    -
    70 
    -
    71 const uint8_t kTrotecMinTemp = 18;
    -
    72 const uint8_t kTrotecDefTemp = 25;
    -
    73 const uint8_t kTrotecMaxTemp = 32;
    -
    74 
    -
    75 const uint8_t kTrotecMaxTimer = 23;
    -
    76 
    -
    77 // Legacy defines. (Deprecated)
    -
    78 #define TROTEC_AUTO kTrotecAuto
    -
    79 #define TROTEC_COOL kTrotecCool
    -
    80 #define TROTEC_DRY kTrotecDry
    -
    81 #define TROTEC_FAN kTrotecFan
    -
    82 #define TROTEC_FAN_LOW kTrotecFanLow
    -
    83 #define TROTEC_FAN_MED kTrotecFanMed
    -
    84 #define TROTEC_FAN_HIGH kTrotecFanHigh
    -
    85 #define TROTEC_MIN_TEMP kTrotecMinTemp
    -
    86 #define TROTEC_MAX_TEMP kTrotecMaxTemp
    -
    87 #define TROTEC_MAX_TIMER kTrotecMaxTimer
    -
    88 
    -
    89 // Class
    -
    91 class IRTrotecESP {
    -
    92  public:
    -
    93  explicit IRTrotecESP(const uint16_t pin, const bool inverted = false,
    -
    94  const bool use_modulation = true);
    -
    95 #if SEND_TROTEC
    -
    96  void send(const uint16_t repeat = kTrotecDefaultRepeat);
    -
    101  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    102 #endif // SEND_TROTEC
    -
    103  void begin(void);
    -
    104  void stateReset(void);
    -
    105 
    -
    106  void on(void);
    -
    107  void off(void);
    -
    108  void setPower(const bool state);
    -
    109  bool getPower(void) const;
    -
    110 
    -
    111  void setTemp(const uint8_t celsius);
    -
    112  uint8_t getTemp(void) const;
    -
    113 
    -
    114  void setSpeed(const uint8_t fan);
    -
    115  uint8_t getSpeed(void) const;
    -
    116 
    -
    117  void setFan(const uint8_t fan) { setSpeed(fan); }
    -
    118  uint8_t getFan(void) const { return getSpeed(); }
    -
    119 
    -
    120  uint8_t getMode(void) const;
    -
    121  void setMode(const uint8_t mode);
    -
    122 
    -
    123  bool getSleep(void) const;
    -
    124  void setSleep(const bool on);
    -
    125 
    -
    126  uint8_t getTimer(void) const;
    -
    127  void setTimer(const uint8_t timer);
    -
    128 
    -
    129  uint8_t* getRaw(void);
    -
    130  void setRaw(const uint8_t state[]);
    -
    131  static bool validChecksum(const uint8_t state[],
    -
    132  const uint16_t length = kTrotecStateLength);
    -
    133  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    134  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    135  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    136  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    137  stdAc::state_t toCommon(void) const;
    -
    138  String toString(void) const;
    -
    139 #ifndef UNIT_TEST
    -
    140 
    -
    141  private:
    - -
    143 #else // UNIT_TEST
    -
    144  IRsendTest _irsend;
    -
    146 #endif // UNIT_TEST
    - -
    149  static uint8_t calcChecksum(const uint8_t state[],
    -
    150  const uint16_t length = kTrotecStateLength);
    -
    151  void checksum(void);
    -
    152 };
    -
    153 
    -
    154 #endif // IR_TROTEC_H_
    -
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Trotec.cpp:259
    -
    void checksum(void)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Trotec.cpp:96
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Trotec.cpp:165
    -
    uint8_t Hours
    Definition: ir_Trotec.h:50
    -
    const uint16_t kTrotecDefaultRepeat
    Definition: IRremoteESP8266.h:1154
    -
    uint8_t Sleep
    Definition: ir_Trotec.h:42
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Trotec.cpp:285
    -
    void setFan(const uint8_t fan)
    Definition: ir_Trotec.h:117
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Trotec.cpp:68
    -
    uint8_t Intro1
    Definition: ir_Trotec.h:30
    -
    const uint8_t kTrotecFanMed
    Definition: ir_Trotec.h:68
    -
    uint8_t getTimer(void) const
    Get the timer time in nr. of Hours.
    Definition: ir_Trotec.cpp:204
    - -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Trotec.cpp:115
    -
    const uint8_t kTrotecIntro2
    Definition: ir_Trotec.h:60
    -
    uint8_t Power
    Definition: ir_Trotec.h:36
    -
    const uint8_t kTrotecFanHigh
    Definition: ir_Trotec.h:69
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    uint8_t Sum
    Definition: ir_Trotec.h:54
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Trotec.cpp:140
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Trotec.cpp:91
    -
    const uint8_t kTrotecMinTemp
    Definition: ir_Trotec.h:71
    -
    const uint8_t kTrotecDefTemp
    Definition: ir_Trotec.h:72
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Trotec.cpp:127
    -
    const uint8_t kTrotecMaxTimer
    Definition: ir_Trotec.h:75
    - -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Trotec.cpp:191
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Trotec.cpp:209
    -
    Native representation of a Trotec A/C message.
    Definition: ir_Trotec.h:26
    -
    const uint8_t kTrotecDry
    Definition: ir_Trotec.h:64
    -
    void setTemp(const uint8_t celsius)
    Set the temperature.
    Definition: ir_Trotec.cpp:171
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Trotec.cpp:159
    -
    const uint16_t kTrotecStateLength
    Definition: IRremoteESP8266.h:1152
    -
    uint8_t Temp
    Definition: ir_Trotec.h:40
    -
    const uint8_t kTrotecMaxTemp
    Definition: ir_Trotec.h:73
    -
    const uint8_t kTrotecFanLow
    Definition: ir_Trotec.h:67
    -
    uint8_t raw[kTrotecStateLength]
    Remote state in IR code form.
    Definition: ir_Trotec.h:27
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Trotec.cpp:101
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Trotec.h:101
    -
    void setTimer(const uint8_t timer)
    Set the timer time in nr. of Hours.
    Definition: ir_Trotec.cpp:197
    -
    uint8_t Mode
    Definition: ir_Trotec.h:34
    -
    uint8_t getFan(void) const
    Definition: ir_Trotec.h:118
    -
    void setPower(const bool state)
    Change the power setting.
    Definition: ir_Trotec.cpp:134
    -
    const uint8_t kTrotecFan
    Definition: ir_Trotec.h:65
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Trotec.cpp:236
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Trotec.h:142
    -
    const uint8_t kTrotecCool
    Definition: ir_Trotec.h:63
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Trotec.cpp:185
    -
    uint8_t getSpeed(void) const
    Get the current fan speed setting.
    Definition: ir_Trotec.cpp:153
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Trotec.cpp:130
    -
    uint8_t Intro2
    Definition: ir_Trotec.h:32
    -
    TrotecProtocol _
    Definition: ir_Trotec.h:148
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kTrotecStateLength)
    Calculate the checksum for a given state.
    Definition: ir_Trotec.cpp:82
    -
    void send(const uint16_t repeat=kTrotecDefaultRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Trotec.cpp:73
    -
    uint8_t Fan
    Definition: ir_Trotec.h:37
    -
    const uint8_t kTrotecAuto
    Definition: ir_Trotec.h:62
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Trotec.cpp:248
    -
    Class for handling detailed Trotec A/C messages.
    Definition: ir_Trotec.h:91
    -
    IRTrotecESP(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Trotec.cpp:63
    -
    uint8_t Timer
    Definition: ir_Trotec.h:47
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Trotec.cpp:222
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kTrotecIntro1
    Definition: ir_Trotec.h:59
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Trotec.cpp:179
    -
    void setRaw(const uint8_t state[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Trotec.cpp:122
    -
    void setSpeed(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Trotec.cpp:146
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8cpp.html deleted file mode 100644 index 50403bc0c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8cpp.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Truma.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Truma.cpp File Reference
    -
    -
    - -

    Support for Truma protocol. This protocol uses mark length bit encoding. -More...

    - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kTrumaLdrMark = 20200
     
    const uint16_t kTrumaLdrSpace = 1000
     
    const uint16_t kTrumaHdrMark = 1800
     
    const uint16_t kTrumaSpace = 630
     
    const uint16_t kTrumaOneMark = 600
     
    const uint16_t kTrumaZeroMark = 1200
     
    const uint16_t kTrumaFooterMark = kTrumaOneMark
     
    const uint32_t kTrumaGap = kDefaultMessageGap
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kTrumaFooterMark

    - -
    -
    - - - - -
    const uint16_t kTrumaFooterMark = kTrumaOneMark
    -
    - -
    -
    - -

    ◆ kTrumaGap

    - -
    -
    - - - - -
    const uint32_t kTrumaGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kTrumaHdrMark

    - -
    -
    - - - - -
    const uint16_t kTrumaHdrMark = 1800
    -
    - -
    -
    - -

    ◆ kTrumaLdrMark

    - -
    -
    - - - - -
    const uint16_t kTrumaLdrMark = 20200
    -
    - -
    -
    - -

    ◆ kTrumaLdrSpace

    - -
    -
    - - - - -
    const uint16_t kTrumaLdrSpace = 1000
    -
    - -
    -
    - -

    ◆ kTrumaOneMark

    - -
    -
    - - - - -
    const uint16_t kTrumaOneMark = 600
    -
    - -
    -
    - -

    ◆ kTrumaSpace

    - -
    -
    - - - - -
    const uint16_t kTrumaSpace = 630
    -
    - -
    -
    - -

    ◆ kTrumaZeroMark

    - -
    -
    - - - - -
    const uint16_t kTrumaZeroMark = 1200
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h.html deleted file mode 100644 index e53122cd8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Truma.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Truma.h File Reference
    -
    -
    - -

    Support for Truma protocol. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  TrumaProtocol
     Native representation of a Truma A/C message. More...
     
    class  IRTrumaAc
     Class for handling detailed Truma A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint64_t kTrumaDefaultState = 0x50FFFFFFE6E781
     Off, Auto, 16C, High. More...
     
    const uint8_t kTrumaChecksumInit = 5
     
    const uint8_t kTrumaAuto = 0
     
    const uint8_t kTrumaCool = 2
     
    const uint8_t kTrumaFan = 3
     
    const uint8_t kTrumaFanQuiet = 3
     
    const uint8_t kTrumaFanHigh = 4
     
    const uint8_t kTrumaFanMed = 5
     
    const uint8_t kTrumaFanLow = 6
     
    const uint8_t kTrumaTempOffset = 10
     
    const uint8_t kTrumaMinTemp = 16
     
    const uint8_t kTrumaMaxTemp = 31
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kTrumaAuto

    - -
    -
    - - - - -
    const uint8_t kTrumaAuto = 0
    -
    - -
    -
    - -

    ◆ kTrumaChecksumInit

    - -
    -
    - - - - -
    const uint8_t kTrumaChecksumInit = 5
    -
    - -
    -
    - -

    ◆ kTrumaCool

    - -
    -
    - - - - -
    const uint8_t kTrumaCool = 2
    -
    - -
    -
    - -

    ◆ kTrumaDefaultState

    - -
    -
    - - - - -
    const uint64_t kTrumaDefaultState = 0x50FFFFFFE6E781
    -
    - -

    Off, Auto, 16C, High.

    - -
    -
    - -

    ◆ kTrumaFan

    - -
    -
    - - - - -
    const uint8_t kTrumaFan = 3
    -
    - -
    -
    - -

    ◆ kTrumaFanHigh

    - -
    -
    - - - - -
    const uint8_t kTrumaFanHigh = 4
    -
    - -
    -
    - -

    ◆ kTrumaFanLow

    - -
    -
    - - - - -
    const uint8_t kTrumaFanLow = 6
    -
    - -
    -
    - -

    ◆ kTrumaFanMed

    - -
    -
    - - - - -
    const uint8_t kTrumaFanMed = 5
    -
    - -
    -
    - -

    ◆ kTrumaFanQuiet

    - -
    -
    - - - - -
    const uint8_t kTrumaFanQuiet = 3
    -
    - -
    -
    - -

    ◆ kTrumaMaxTemp

    - -
    -
    - - - - -
    const uint8_t kTrumaMaxTemp = 31
    -
    - -
    -
    - -

    ◆ kTrumaMinTemp

    - -
    -
    - - - - -
    const uint8_t kTrumaMinTemp = 16
    -
    - -
    -
    - -

    ◆ kTrumaTempOffset

    - -
    -
    - - - - -
    const uint8_t kTrumaTempOffset = 10
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h_source.html deleted file mode 100644 index be53e701c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Truma_8h_source.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Truma.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Truma.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2021 David Conran (crankyoldgit)
    -
    2 
    -
    7 
    -
    8 // Supports:
    -
    9 // Brand: Truma, Model: Aventa A/C
    -
    10 // Brand: Truma, Model: 40091-86700 remote
    -
    11 
    -
    12 #ifndef IR_TRUMA_H_
    -
    13 #define IR_TRUMA_H_
    -
    14 
    -
    15 #ifndef UNIT_TEST
    -
    16 #include <Arduino.h>
    -
    17 #endif
    -
    18 #include "IRremoteESP8266.h"
    -
    19 #include "IRsend.h"
    -
    20 #ifdef UNIT_TEST
    -
    21 #include "IRsend_test.h"
    -
    22 #endif
    -
    23 
    - -
    26  uint64_t raw;
    -
    27  struct {
    -
    28  // Byte 0 (least significant byte)
    -
    29  uint8_t :8; // fixed value (0x81)
    -
    30  // Byte 1
    -
    31  uint8_t Mode :2;
    -
    32  uint8_t PowerOff :1;
    -
    33  uint8_t Fan :3;
    -
    34  uint8_t :2; // fixed value (0b11)
    -
    35  // Byte 2
    -
    36  uint8_t Temp:5;
    -
    37  uint8_t :3;
    -
    38  // Byte 3
    -
    39  uint8_t :8; // fixed value (0xFF)
    -
    40  // Byte 4
    -
    41  uint8_t :8; // fixed value (0xFF)
    -
    42  // Byte 5
    -
    43  uint8_t :8; // fixed value (0xFF)
    -
    44  // Byte 6
    -
    45  uint8_t Sum:8;
    -
    46  };
    -
    47 };
    -
    48 
    -
    49 // Constants
    -
    50 const uint64_t kTrumaDefaultState = 0x50FFFFFFE6E781;
    -
    51 const uint8_t kTrumaChecksumInit = 5;
    -
    52 
    -
    53 const uint8_t kTrumaAuto = 0; // 0b00
    -
    54 const uint8_t kTrumaCool = 2; // 0b10
    -
    55 const uint8_t kTrumaFan = 3; // 0b11
    -
    56 
    -
    57 const uint8_t kTrumaFanQuiet = 3; // 0b011
    -
    58 const uint8_t kTrumaFanHigh = 4; // 0b100
    -
    59 const uint8_t kTrumaFanMed = 5; // 0b101
    -
    60 const uint8_t kTrumaFanLow = 6; // 0b110
    -
    61 
    -
    62 const uint8_t kTrumaTempOffset = 10;
    -
    63 const uint8_t kTrumaMinTemp = 16;
    -
    64 const uint8_t kTrumaMaxTemp = 31;
    -
    65 
    -
    66 
    -
    67 // Class
    -
    69 class IRTrumaAc {
    -
    70  public:
    -
    71  explicit IRTrumaAc(const uint16_t pin, const bool inverted = false,
    -
    72  const bool use_modulation = true);
    -
    73 #if SEND_TRUMA
    -
    74  void send(const uint16_t repeat = kNoRepeat);
    -
    79  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    80 #endif // SEND_TRUMA
    -
    81  void begin(void);
    -
    82  void stateReset(void);
    -
    83 
    -
    84  void on(void);
    -
    85  void off(void);
    -
    86  void setPower(const bool on);
    -
    87  bool getPower(void) const;
    -
    88 
    -
    89  void setTemp(const uint8_t celsius);
    -
    90  uint8_t getTemp(void) const;
    -
    91 
    -
    92  void setFan(const uint8_t speed);
    -
    93  uint8_t getFan(void) const;
    -
    94 
    -
    95  uint8_t getMode(void) const;
    -
    96  void setMode(const uint8_t mode);
    -
    97 
    -
    98  void setQuiet(const bool on);
    -
    99  bool getQuiet(void) const;
    -
    100 
    -
    101  uint64_t getRaw(void);
    -
    102  void setRaw(const uint64_t state);
    -
    103  static bool validChecksum(const uint64_t state);
    -
    104  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    105  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    106  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    107  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    108  stdAc::state_t toCommon(void) const;
    -
    109  String toString(void) const;
    -
    110 #ifndef UNIT_TEST
    -
    111 
    -
    112  private:
    - -
    114 #else // UNIT_TEST
    -
    115  IRsendTest _irsend;
    -
    117 #endif // UNIT_TEST
    - -
    120  uint8_t _lastfan; // Last user chosen/valid fan speed.
    -
    121  uint8_t _lastmode; // Last user chosen operation mode.
    -
    122  static uint8_t calcChecksum(const uint64_t state);
    -
    123  void checksum(void);
    -
    124 };
    -
    125 
    -
    126 #endif // IR_TRUMA_H_
    -
    -
    void setTemp(const uint8_t celsius)
    Set the temperature.
    Definition: ir_Truma.cpp:225
    -
    const uint8_t kTrumaFanQuiet
    Definition: ir_Truma.h:57
    -
    const uint8_t kTrumaCool
    Definition: ir_Truma.h:54
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Truma.cpp:275
    -
    void setQuiet(const bool on)
    Change the Quiet setting.
    Definition: ir_Truma.cpp:238
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Truma.cpp:200
    -
    void checksum(void)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Truma.cpp:143
    -
    const uint8_t kTrumaMaxTemp
    Definition: ir_Truma.h:64
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Truma.cpp:221
    -
    const uint64_t kTrumaDefaultState
    Off, Auto, 16C, High.
    Definition: ir_Truma.h:50
    -
    const uint8_t kTrumaMinTemp
    Definition: ir_Truma.h:63
    -
    const uint8_t kTrumaAuto
    Definition: ir_Truma.h:53
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Truma.cpp:286
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Truma.h:79
    -
    uint8_t Fan
    Definition: ir_Truma.h:33
    - -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Truma.cpp:204
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Truma.cpp:146
    -
    const uint8_t kTrumaTempOffset
    Definition: ir_Truma.h:62
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint64_t raw
    Remote state in IR code form.
    Definition: ir_Truma.h:26
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Truma.cpp:110
    -
    const uint8_t kTrumaChecksumInit
    Definition: ir_Truma.h:51
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Truma.cpp:167
    -
    bool getQuiet(void) const
    Get the value of the current quiet setting.
    Definition: ir_Truma.cpp:247
    - -
    void setRaw(const uint64_t state)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Truma.cpp:157
    -
    TrumaProtocol _
    Definition: ir_Truma.h:119
    -
    static bool validChecksum(const uint64_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_Truma.cpp:136
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Truma.cpp:171
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Truma.h:113
    -
    uint8_t Mode
    Definition: ir_Truma.h:31
    -
    uint8_t Temp
    Temp in DegC minus 10(DEC).
    Definition: ir_Truma.h:36
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Truma.cpp:233
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Truma.cpp:182
    -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Truma.cpp:115
    -
    uint8_t _lastfan
    Definition: ir_Truma.h:120
    -
    IRTrumaAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Truma.cpp:105
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Truma.cpp:327
    -
    Native representation of a Truma A/C message.
    Definition: ir_Truma.h:25
    -
    uint8_t Sum
    Checksum value.
    Definition: ir_Truma.h:45
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Truma.cpp:297
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Truma.cpp:164
    -
    const uint8_t kTrumaFan
    Definition: ir_Truma.h:55
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Truma.cpp:263
    -
    const uint8_t kTrumaFanMed
    Definition: ir_Truma.h:59
    -
    uint64_t getRaw(void)
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Truma.cpp:150
    -
    Class for handling detailed Truma A/C messages.
    Definition: ir_Truma.h:69
    -
    static uint8_t calcChecksum(const uint64_t state)
    Calculate the checksum for a given state.
    Definition: ir_Truma.cpp:123
    -
    uint8_t PowerOff
    Definition: ir_Truma.h:32
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Truma.cpp:178
    -
    const uint8_t kTrumaFanHigh
    Definition: ir_Truma.h:58
    -
    uint8_t _lastmode
    Definition: ir_Truma.h:121
    -
    const uint8_t kTrumaFanLow
    Definition: ir_Truma.h:60
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Truma.cpp:252
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8cpp.html deleted file mode 100644 index 36b147b25..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8cpp.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Vestel.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Vestel.cpp File Reference
    -
    -
    - -

    Support for Vestel protocols. Vestel added by Erdem U. Altinyurt. -More...

    -

    Detailed Description

    -

    Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h.html deleted file mode 100644 index 865c3b883..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Vestel.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Vestel.h File Reference
    -
    -
    - -

    Support for Vestel protocols. Vestel added by Erdem U. Altinyurt. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  VestelProtocol
     Native representation of a Vestel A/C message. More...
     
    class  IRVestelAc
     Class for handling detailed Vestel A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kVestelAcHdrMark = 3110
     
    const uint16_t kVestelAcHdrSpace = 9066
     
    const uint16_t kVestelAcBitMark = 520
     
    const uint16_t kVestelAcOneSpace = 1535
     
    const uint16_t kVestelAcZeroSpace = 480
     
    const uint16_t kVestelAcTolerance = 30
     
    const uint8_t kVestelAcMinTempH = 16
     
    const uint8_t kVestelAcMinTempC = 18
     
    const uint8_t kVestelAcMaxTemp = 30
     
    const uint8_t kVestelAcAuto = 0
     
    const uint8_t kVestelAcCool = 1
     
    const uint8_t kVestelAcDry = 2
     
    const uint8_t kVestelAcFan = 3
     
    const uint8_t kVestelAcHeat = 4
     
    const uint8_t kVestelAcFanAuto = 1
     
    const uint8_t kVestelAcFanLow = 5
     
    const uint8_t kVestelAcFanMed = 9
     
    const uint8_t kVestelAcFanHigh = 0xB
     
    const uint8_t kVestelAcFanAutoCool = 0xC
     
    const uint8_t kVestelAcFanAutoHot = 0xD
     
    const uint8_t kVestelAcNormal = 1
     
    const uint8_t kVestelAcSleep = 3
     
    const uint8_t kVestelAcTurbo = 7
     
    const uint8_t kVestelAcIon = 4
     
    const uint8_t kVestelAcSwing = 0xA
     
    const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL
     
    const uint64_t kVestelAcTimeStateDefault = 0x201ULL
     
    -

    Detailed Description

    -

    Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.

    -

    Variable Documentation

    - -

    ◆ kVestelAcAuto

    - -
    -
    - - - - -
    const uint8_t kVestelAcAuto = 0
    -
    - -
    -
    - -

    ◆ kVestelAcBitMark

    - -
    -
    - - - - -
    const uint16_t kVestelAcBitMark = 520
    -
    - -
    -
    - -

    ◆ kVestelAcCool

    - -
    -
    - - - - -
    const uint8_t kVestelAcCool = 1
    -
    - -
    -
    - -

    ◆ kVestelAcDry

    - -
    -
    - - - - -
    const uint8_t kVestelAcDry = 2
    -
    - -
    -
    - -

    ◆ kVestelAcFan

    - -
    -
    - - - - -
    const uint8_t kVestelAcFan = 3
    -
    - -
    -
    - -

    ◆ kVestelAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kVestelAcFanAuto = 1
    -
    - -
    -
    - -

    ◆ kVestelAcFanAutoCool

    - -
    -
    - - - - -
    const uint8_t kVestelAcFanAutoCool = 0xC
    -
    - -
    -
    - -

    ◆ kVestelAcFanAutoHot

    - -
    -
    - - - - -
    const uint8_t kVestelAcFanAutoHot = 0xD
    -
    - -
    -
    - -

    ◆ kVestelAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kVestelAcFanHigh = 0xB
    -
    - -
    -
    - -

    ◆ kVestelAcFanLow

    - -
    -
    - - - - -
    const uint8_t kVestelAcFanLow = 5
    -
    - -
    -
    - -

    ◆ kVestelAcFanMed

    - -
    -
    - - - - -
    const uint8_t kVestelAcFanMed = 9
    -
    - -
    -
    - -

    ◆ kVestelAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kVestelAcHdrMark = 3110
    -
    - -
    -
    - -

    ◆ kVestelAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kVestelAcHdrSpace = 9066
    -
    - -
    -
    - -

    ◆ kVestelAcHeat

    - -
    -
    - - - - -
    const uint8_t kVestelAcHeat = 4
    -
    - -
    -
    - -

    ◆ kVestelAcIon

    - -
    -
    - - - - -
    const uint8_t kVestelAcIon = 4
    -
    - -
    -
    - -

    ◆ kVestelAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kVestelAcMaxTemp = 30
    -
    - -
    -
    - -

    ◆ kVestelAcMinTempC

    - -
    -
    - - - - -
    const uint8_t kVestelAcMinTempC = 18
    -
    - -
    -
    - -

    ◆ kVestelAcMinTempH

    - -
    -
    - - - - -
    const uint8_t kVestelAcMinTempH = 16
    -
    - -
    -
    - -

    ◆ kVestelAcNormal

    - -
    -
    - - - - -
    const uint8_t kVestelAcNormal = 1
    -
    - -
    -
    - -

    ◆ kVestelAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kVestelAcOneSpace = 1535
    -
    - -
    -
    - -

    ◆ kVestelAcSleep

    - -
    -
    - - - - -
    const uint8_t kVestelAcSleep = 3
    -
    - -
    -
    - -

    ◆ kVestelAcStateDefault

    - -
    -
    - - - - -
    const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL
    -
    - -
    -
    - -

    ◆ kVestelAcSwing

    - -
    -
    - - - - -
    const uint8_t kVestelAcSwing = 0xA
    -
    - -
    -
    - -

    ◆ kVestelAcTimeStateDefault

    - -
    -
    - - - - -
    const uint64_t kVestelAcTimeStateDefault = 0x201ULL
    -
    - -
    -
    - -

    ◆ kVestelAcTolerance

    - -
    -
    - - - - -
    const uint16_t kVestelAcTolerance = 30
    -
    - -
    -
    - -

    ◆ kVestelAcTurbo

    - -
    -
    - - - - -
    const uint8_t kVestelAcTurbo = 7
    -
    - -
    -
    - -

    ◆ kVestelAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kVestelAcZeroSpace = 480
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h_source.html deleted file mode 100644 index e627f8b7b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Vestel_8h_source.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Vestel.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Vestel.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018 Erdem U. Altinyurt
    -
    2 // Copyright 2019 David Conran
    -
    3 
    -
    7 
    -
    8 // Supports:
    -
    9 // Brand: Vestel, Model: BIOX CXP-9 A/C (9K BTU)
    -
    10 
    -
    11 #ifndef IR_VESTEL_H_
    -
    12 #define IR_VESTEL_H_
    -
    13 
    -
    14 #define __STDC_LIMIT_MACROS
    -
    15 #include <stdint.h>
    -
    16 #ifdef ARDUINO
    -
    17 #include <Arduino.h>
    -
    18 #endif
    -
    19 #include "IRremoteESP8266.h"
    -
    20 #include "IRsend.h"
    -
    21 #ifdef UNIT_TEST
    -
    22 #include "IRsend_test.h"
    -
    23 #endif
    -
    24 
    - -
    27  struct {
    -
    28  uint64_t cmdState;
    -
    29  uint64_t timeState;
    -
    30  };
    -
    31  struct {
    -
    32  // Command
    -
    33  uint64_t Signature :12; // 0x201
    -
    34  uint64_t CmdSum :8;
    -
    35  uint64_t Swing :4; // auto 0xA, stop 0xF
    -
    36  uint64_t TurboSleep :4; // normal 0x1, sleep 0x3, turbo 0x7
    -
    37  uint64_t :8;
    -
    38  uint64_t Temp :4;
    -
    39  uint64_t Fan :4;
    -
    40  uint64_t Mode :3;
    -
    41  uint64_t :3;
    -
    42  uint64_t Ion :1;
    -
    43  uint64_t :1;
    -
    44  uint64_t Power :2;
    -
    45  uint64_t UseCmd :1;
    -
    46  uint64_t :0;
    -
    47  // Time
    -
    48  uint64_t :12;
    -
    49  uint64_t TimeSum :8;
    -
    50  uint64_t OffTenMins :3;
    -
    51  uint64_t OffHours :5;
    -
    52  uint64_t OnTenMins :3;
    -
    53  uint64_t OnHours :5;
    -
    54  uint64_t Hours :5;
    -
    55  uint64_t OnTimer :1;
    -
    56  uint64_t OffTimer :1;
    -
    57  uint64_t Timer :1;
    -
    58  uint64_t Minutes :8;
    -
    59  uint64_t :0;
    -
    60  };
    -
    61 };
    -
    62 
    -
    63 // Constants
    -
    64 const uint16_t kVestelAcHdrMark = 3110;
    -
    65 const uint16_t kVestelAcHdrSpace = 9066;
    -
    66 const uint16_t kVestelAcBitMark = 520;
    -
    67 const uint16_t kVestelAcOneSpace = 1535;
    -
    68 const uint16_t kVestelAcZeroSpace = 480;
    -
    69 const uint16_t kVestelAcTolerance = 30;
    -
    70 
    -
    71 const uint8_t kVestelAcMinTempH = 16;
    -
    72 const uint8_t kVestelAcMinTempC = 18;
    -
    73 const uint8_t kVestelAcMaxTemp = 30;
    -
    74 
    -
    75 const uint8_t kVestelAcAuto = 0;
    -
    76 const uint8_t kVestelAcCool = 1;
    -
    77 const uint8_t kVestelAcDry = 2;
    -
    78 const uint8_t kVestelAcFan = 3;
    -
    79 const uint8_t kVestelAcHeat = 4;
    -
    80 
    -
    81 const uint8_t kVestelAcFanAuto = 1;
    -
    82 const uint8_t kVestelAcFanLow = 5;
    -
    83 const uint8_t kVestelAcFanMed = 9;
    -
    84 const uint8_t kVestelAcFanHigh = 0xB;
    -
    85 const uint8_t kVestelAcFanAutoCool = 0xC;
    -
    86 const uint8_t kVestelAcFanAutoHot = 0xD;
    -
    87 
    -
    88 const uint8_t kVestelAcNormal = 1;
    -
    89 const uint8_t kVestelAcSleep = 3;
    -
    90 const uint8_t kVestelAcTurbo = 7;
    -
    91 const uint8_t kVestelAcIon = 4;
    -
    92 const uint8_t kVestelAcSwing = 0xA;
    -
    93 
    -
    94 // Default states
    -
    95 const uint64_t kVestelAcStateDefault = 0x0F00D9001FEF201ULL;
    -
    96 const uint64_t kVestelAcTimeStateDefault = 0x201ULL;
    -
    97 
    -
    98 // Classes
    -
    100 class IRVestelAc {
    -
    101  public:
    -
    102  explicit IRVestelAc(const uint16_t pin, const bool inverted = false,
    -
    103  const bool use_modulation = true);
    -
    104  void stateReset(void);
    -
    105 #if SEND_VESTEL_AC
    -
    106  void send(const uint16_t repeat = kNoRepeat);
    -
    111  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    112 #endif // SEND_VESTEL_AC
    -
    113  void begin(void);
    -
    114  void on(void);
    -
    115  void off(void);
    -
    116  void setPower(const bool on);
    -
    117  bool getPower(void) const;
    -
    118  void setAuto(const int8_t autoLevel);
    -
    119  void setTimer(const uint16_t minutes);
    -
    120  uint16_t getTimer(void) const;
    -
    121  void setTime(const uint16_t minutes);
    -
    122  uint16_t getTime(void) const;
    -
    123  void setOnTimer(const uint16_t minutes);
    -
    124  uint16_t getOnTimer(void) const;
    -
    125  void setOffTimer(const uint16_t minutes);
    -
    126  uint16_t getOffTimer(void) const;
    -
    127  void setTemp(const uint8_t temp);
    -
    128  uint8_t getTemp(void) const;
    -
    129  void setFan(const uint8_t fan);
    -
    130  uint8_t getFan(void) const;
    -
    131  void setMode(const uint8_t mode);
    -
    132  uint8_t getMode(void) const;
    -
    133  void setRaw(const uint8_t* newState);
    -
    134  void setRaw(const uint64_t newState);
    -
    135  uint64_t getRaw(void);
    -
    136  static bool validChecksum(const uint64_t state);
    -
    137  void setSwing(const bool on);
    -
    138  bool getSwing(void) const;
    -
    139  void setSleep(const bool on);
    -
    140  bool getSleep(void) const;
    -
    141  void setTurbo(const bool on);
    -
    142  bool getTurbo(void) const;
    -
    143  void setIon(const bool on);
    -
    144  bool getIon(void) const;
    -
    145  bool isTimeCommand(void) const;
    -
    146  bool isOnTimerActive(void) const;
    -
    147  void setOnTimerActive(const bool on);
    -
    148  bool isOffTimerActive(void) const;
    -
    149  void setOffTimerActive(const bool on);
    -
    150  bool isTimerActive(void) const;
    -
    151  void setTimerActive(const bool on);
    -
    152  static uint8_t calcChecksum(const uint64_t state);
    -
    153  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    154  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    155  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    156  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    157  stdAc::state_t toCommon(void) const;
    -
    158  String toString(void) const;
    -
    159 #ifndef UNIT_TEST
    -
    160 
    -
    161  private:
    - -
    163 #else // UNIT_TEST
    -
    164  IRsendTest _irsend;
    -
    166 #endif // UNIT_TEST
    - -
    169  void checksum(void);
    -
    170 };
    -
    171 
    -
    172 #endif // IR_VESTEL_H_
    -
    -
    const uint16_t kVestelAcHdrSpace
    Definition: ir_Vestel.h:65
    -
    const uint8_t kVestelAcFanAutoHot
    Definition: ir_Vestel.h:86
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Vestel.cpp:58
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Vestel.cpp:64
    -
    void setFan(const uint8_t fan)
    Set the speed of the fan.
    Definition: ir_Vestel.cpp:140
    -
    uint64_t Timer
    Definition: ir_Vestel.h:57
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Vestel.cpp:125
    -
    void setOffTimerActive(const bool on)
    Set the Off timer to be active on the A/C.
    Definition: ir_Vestel.cpp:282
    -
    void setTime(const uint16_t minutes)
    Set the A/C's internal clock.
    Definition: ir_Vestel.cpp:240
    -
    uint64_t OffHours
    Definition: ir_Vestel.h:51
    -
    const uint8_t kVestelAcMaxTemp
    Definition: ir_Vestel.h:73
    -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Vestel.cpp:112
    -
    uint16_t getOnTimer(void) const
    Get the A/C's On Timer time.
    Definition: ir_Vestel.cpp:276
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Vestel.cpp:158
    -
    uint16_t getTimer(void) const
    Get the Timer time of A/C.
    Definition: ir_Vestel.cpp:236
    -
    bool isOnTimerActive(void) const
    Get if the On Timer is active on the A/C.
    Definition: ir_Vestel.cpp:261
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint64_t Swing
    Definition: ir_Vestel.h:35
    -
    const uint8_t kVestelAcSleep
    Definition: ir_Vestel.h:89
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Vestel.h:111
    -
    const uint8_t kVestelAcDry
    Definition: ir_Vestel.h:77
    -
    bool getIon(void) const
    Get the Ion (Filter) setting of the A/C.
    Definition: ir_Vestel.cpp:343
    -
    const uint16_t kVestelAcBitMark
    Definition: ir_Vestel.h:66
    -
    const uint8_t kVestelAcAuto
    Definition: ir_Vestel.h:75
    -
    const uint8_t kVestelAcFanMed
    Definition: ir_Vestel.h:83
    -
    void setTurbo(const bool on)
    Set the Turbo setting of the A/C.
    Definition: ir_Vestel.cpp:323
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Vestel.h:162
    -
    void setTimer(const uint16_t minutes)
    Set Timer option of A/C.
    Definition: ir_Vestel.cpp:221
    -
    void on(void)
    Set the requested power state of the A/C to on.
    Definition: ir_Vestel.cpp:105
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Vestel.cpp:171
    - -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Vestel.cpp:471
    -
    stdAc::state_t toCommon(void) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Vestel.cpp:444
    -
    const uint8_t kVestelAcMinTempC
    Definition: ir_Vestel.h:72
    -
    Native representation of a Vestel A/C message.
    Definition: ir_Vestel.h:26
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint16_t getTime(void) const
    Get the A/C's internal clock's time.
    Definition: ir_Vestel.cpp:248
    -
    uint64_t CmdSum
    Definition: ir_Vestel.h:34
    -
    void setRaw(const uint8_t *newState)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Vestel.cpp:84
    -
    const uint8_t kVestelAcFan
    Definition: ir_Vestel.h:78
    -
    bool isOffTimerActive(void) const
    Get if the Off Timer is active on the A/C.
    Definition: ir_Vestel.cpp:289
    - -
    const uint8_t kVestelAcMinTempH
    Definition: ir_Vestel.h:71
    -
    uint64_t OffTimer
    Definition: ir_Vestel.h:56
    -
    const uint16_t kVestelAcHdrMark
    Definition: ir_Vestel.h:64
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    bool isTimeCommand(void) const
    Is the current state a time command?
    Definition: ir_Vestel.cpp:386
    -
    uint64_t Power
    Definition: ir_Vestel.h:44
    -
    uint16_t getOffTimer(void) const
    Get the A/C's Off Timer time.
    Definition: ir_Vestel.cpp:304
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Vestel.cpp:420
    -
    bool getTurbo(void) const
    Get the Turbo setting of the A/C.
    Definition: ir_Vestel.cpp:330
    -
    uint64_t Ion
    Definition: ir_Vestel.h:42
    -
    const uint16_t kVestelAcOneSpace
    Definition: ir_Vestel.h:67
    -
    uint64_t Hours
    Definition: ir_Vestel.h:54
    -
    void checksum(void)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Vestel.cpp:378
    -
    void setSwing(const bool on)
    Set the Swing Roaming setting of the A/C.
    Definition: ir_Vestel.cpp:349
    -
    bool getSwing(void) const
    Get the Swing Roaming setting of the A/C.
    Definition: ir_Vestel.cpp:356
    -
    uint64_t OffTenMins
    Definition: ir_Vestel.h:50
    -
    void setOffTimer(const uint16_t minutes)
    Set the Off timer time on the A/C.
    Definition: ir_Vestel.cpp:295
    -
    uint64_t timeState
    Definition: ir_Vestel.h:29
    -
    uint64_t OnHours
    Definition: ir_Vestel.h:53
    -
    uint64_t TurboSleep
    Definition: ir_Vestel.h:36
    -
    void setOnTimerActive(const bool on)
    Set the On timer to be active on the A/C.
    Definition: ir_Vestel.cpp:254
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Vestel.cpp:433
    -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Vestel.cpp:69
    -
    void off(void)
    Set the requested power state of the A/C to off.
    Definition: ir_Vestel.cpp:108
    -
    const uint8_t kVestelAcFanAutoCool
    Definition: ir_Vestel.h:85
    -
    const uint64_t kVestelAcStateDefault
    Definition: ir_Vestel.h:95
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Vestel.cpp:393
    -
    void setIon(const bool on)
    Set the Ion (Filter) setting of the A/C.
    Definition: ir_Vestel.cpp:336
    -
    const uint16_t kVestelAcTolerance
    Definition: ir_Vestel.h:69
    -
    const uint8_t kVestelAcFanLow
    Definition: ir_Vestel.h:82
    -
    uint64_t Mode
    Definition: ir_Vestel.h:40
    -
    uint64_t Fan
    Definition: ir_Vestel.h:39
    -
    const uint8_t kVestelAcSwing
    Definition: ir_Vestel.h:92
    -
    const uint16_t kVestelAcZeroSpace
    Definition: ir_Vestel.h:68
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Vestel.cpp:317
    -
    const uint64_t kVestelAcTimeStateDefault
    Definition: ir_Vestel.h:96
    -
    uint64_t OnTenMins
    Definition: ir_Vestel.h:52
    -
    const uint8_t kVestelAcTurbo
    Definition: ir_Vestel.h:90
    -
    static uint8_t calcChecksum(const uint64_t state)
    Calculate the checksum for a given state.
    Definition: ir_Vestel.cpp:363
    -
    uint64_t getRaw(void)
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Vestel.cpp:76
    -
    const uint8_t kVestelAcHeat
    Definition: ir_Vestel.h:79
    -
    const uint8_t kVestelAcNormal
    Definition: ir_Vestel.h:88
    -
    const uint8_t kVestelAcFanHigh
    Definition: ir_Vestel.h:84
    -
    uint64_t Signature
    Definition: ir_Vestel.h:33
    -
    IRVestelAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Vestel.cpp:52
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Vestel.cpp:119
    -
    Class for handling detailed Vestel A/C messages.
    Definition: ir_Vestel.h:100
    -
    const uint8_t kVestelAcCool
    Definition: ir_Vestel.h:76
    -
    VestelProtocol _
    Definition: ir_Vestel.h:168
    -
    uint64_t cmdState
    Definition: ir_Vestel.h:28
    -
    bool isTimerActive(void) const
    Get if the Timer is active on the A/C.
    Definition: ir_Vestel.cpp:213
    -
    void setTimerActive(const bool on)
    Set the timer to be active on the A/C.
    Definition: ir_Vestel.cpp:206
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Vestel.cpp:310
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Vestel.cpp:164
    -
    uint64_t UseCmd
    Definition: ir_Vestel.h:45
    -
    uint64_t OnTimer
    Definition: ir_Vestel.h:55
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Vestel.cpp:134
    -
    const uint8_t kVestelAcIon
    Definition: ir_Vestel.h:91
    -
    uint64_t Minutes
    Definition: ir_Vestel.h:58
    -
    uint64_t Temp
    Definition: ir_Vestel.h:38
    -
    static bool validChecksum(const uint64_t state)
    Verify the checksum is valid for a given state.
    Definition: ir_Vestel.cpp:371
    -
    void setAuto(const int8_t autoLevel)
    Set Auto mode/level of the A/C.
    Definition: ir_Vestel.cpp:188
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    const uint8_t kVestelAcFanAuto
    Definition: ir_Vestel.h:81
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Vestel.cpp:406
    -
    void setOnTimer(const uint16_t minutes)
    Set the On timer time on the A/C.
    Definition: ir_Vestel.cpp:267
    -
    uint64_t TimeSum
    Definition: ir_Vestel.h:49
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8cpp.html deleted file mode 100644 index 1ce153339..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8cpp.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Voltas.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Voltas.cpp File Reference
    -
    -
    - -

    Support for Voltas A/C protocol. -More...

    - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kVoltasBitMark = 1026
     uSeconds. More...
     
    const uint16_t kVoltasOneSpace = 2553
     uSeconds. More...
     
    const uint16_t kVoltasZeroSpace = 554
     uSeconds. More...
     
    const uint16_t kVoltasFreq = 38000
     Hz. More...
     
    -

    Detailed Description

    -

    Support for Voltas A/C protocol.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1238
    -

    Variable Documentation

    - -

    ◆ kVoltasBitMark

    - -
    -
    - - - - -
    const uint16_t kVoltasBitMark = 1026
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kVoltasFreq

    - -
    -
    - - - - -
    const uint16_t kVoltasFreq = 38000
    -
    - -

    Hz.

    - -
    -
    - -

    ◆ kVoltasOneSpace

    - -
    -
    - - - - -
    const uint16_t kVoltasOneSpace = 2553
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kVoltasZeroSpace

    - -
    -
    - - - - -
    const uint16_t kVoltasZeroSpace = 554
    -
    - -

    uSeconds.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h.html deleted file mode 100644 index 48fb1bde3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Voltas.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Voltas.h File Reference
    -
    -
    - -

    Support for Voltas A/C protocol. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  VoltasProtocol
     Native representation of a Voltas A/C message. More...
     
    class  IRVoltas
     Class for handling detailed Voltas A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kVoltasFan = 0b0001
     1 More...
     
    const uint8_t kVoltasHeat = 0b0010
     2 More...
     
    const uint8_t kVoltasDry = 0b0100
     4 More...
     
    const uint8_t kVoltasCool = 0b1000
     8 More...
     
    const uint8_t kVoltasMinTemp = 16
     Celsius. More...
     
    const uint8_t kVoltasDryTemp = 24
     Celsius. More...
     
    const uint8_t kVoltasMaxTemp = 30
     Celsius. More...
     
    const uint8_t kVoltasFanHigh = 0b001
     1 More...
     
    const uint8_t kVoltasFanMed = 0b010
     2 More...
     
    const uint8_t kVoltasFanLow = 0b100
     4 More...
     
    const uint8_t kVoltasFanAuto = 0b111
     7 More...
     
    const uint8_t kVoltasSwingHChange = 0b1111100
     0x7D More...
     
    const uint8_t kVoltasSwingHNoChange = 0b0011001
     0x19 More...
     
    -

    Detailed Description

    -

    Support for Voltas A/C protocol.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1238
    -

    Variable Documentation

    - -

    ◆ kVoltasCool

    - -
    -
    - - - - -
    const uint8_t kVoltasCool = 0b1000
    -
    - -

    8

    - -
    -
    - -

    ◆ kVoltasDry

    - -
    -
    - - - - -
    const uint8_t kVoltasDry = 0b0100
    -
    - -

    4

    - -
    -
    - -

    ◆ kVoltasDryTemp

    - -
    -
    - - - - -
    const uint8_t kVoltasDryTemp = 24
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kVoltasFan

    - -
    -
    - - - - -
    const uint8_t kVoltasFan = 0b0001
    -
    - -

    1

    - -
    -
    - -

    ◆ kVoltasFanAuto

    - -
    -
    - - - - -
    const uint8_t kVoltasFanAuto = 0b111
    -
    - -

    7

    - -
    -
    - -

    ◆ kVoltasFanHigh

    - -
    -
    - - - - -
    const uint8_t kVoltasFanHigh = 0b001
    -
    - -

    1

    - -
    -
    - -

    ◆ kVoltasFanLow

    - -
    -
    - - - - -
    const uint8_t kVoltasFanLow = 0b100
    -
    - -

    4

    - -
    -
    - -

    ◆ kVoltasFanMed

    - -
    -
    - - - - -
    const uint8_t kVoltasFanMed = 0b010
    -
    - -

    2

    - -
    -
    - -

    ◆ kVoltasHeat

    - -
    -
    - - - - -
    const uint8_t kVoltasHeat = 0b0010
    -
    - -

    2

    - -
    -
    - -

    ◆ kVoltasMaxTemp

    - -
    -
    - - - - -
    const uint8_t kVoltasMaxTemp = 30
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kVoltasMinTemp

    - -
    -
    - - - - -
    const uint8_t kVoltasMinTemp = 16
    -
    - -

    Celsius.

    - -
    -
    - -

    ◆ kVoltasSwingHChange

    - -
    -
    - - - - -
    const uint8_t kVoltasSwingHChange = 0b1111100
    -
    - -

    0x7D

    - -
    -
    - -

    ◆ kVoltasSwingHNoChange

    - -
    -
    - - - - -
    const uint8_t kVoltasSwingHNoChange = 0b0011001
    -
    - -

    0x19

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h_source.html deleted file mode 100644 index b7f086d08..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Voltas_8h_source.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Voltas.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Voltas.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 David Conran (crankyoldgit)
    -
    2 // Copyright 2020 manj9501
    -
    6 
    -
    7 // Supports:
    -
    8 // Brand: Voltas, Model: 122LZF 4011252 Window A/C
    -
    9 //
    -
    10 // Ref: https://docs.google.com/spreadsheets/d/1zzDEUQ52y7MZ7_xCU3pdjdqbRXOwZLsbTGvKWcicqCI/
    -
    11 // Ref: https://www.corona.co.jp/box/download.php?id=145060636229
    -
    12 
    -
    13 #ifndef IR_VOLTAS_H_
    -
    14 #define IR_VOLTAS_H_
    -
    15 
    -
    16 #define __STDC_LIMIT_MACROS
    -
    17 #include <stdint.h>
    -
    18 #ifndef UNIT_TEST
    -
    19 #include <Arduino.h>
    -
    20 #endif
    -
    21 #include "IRremoteESP8266.h"
    -
    22 #include "IRsend.h"
    -
    23 #ifdef UNIT_TEST
    -
    24 #include "IRsend_test.h"
    -
    25 #endif
    -
    26 
    - - -
    30  struct {
    -
    31  // Byte 0
    -
    32  uint8_t SwingH :1;
    -
    33  uint8_t SwingHChange :7;
    -
    34  // Byte 1
    -
    35  uint8_t Mode :4;
    -
    36  uint8_t :1; // Unknown/Unused
    -
    37  uint8_t FanSpeed :3;
    -
    38  // Byte 2
    -
    39  uint8_t SwingV :3;
    -
    40  uint8_t Wifi :1;
    -
    41  uint8_t :1; // Unknown/Unused
    -
    42  uint8_t Turbo :1;
    -
    43  uint8_t Sleep :1;
    -
    44  uint8_t Power :1;
    -
    45  // Byte 3
    -
    46  uint8_t Temp :4;
    -
    47  uint8_t :2; // Typically 0b01
    -
    48  uint8_t Econo :1;
    -
    49  uint8_t TempSet :1;
    -
    50  // Byte 4
    -
    51  uint8_t OnTimerMins :6; // 0-59
    -
    52  uint8_t :1; // Unknown/Unused
    -
    53  uint8_t OnTimer12Hr :1; // (Nr of Hours + 1) % 12.
    -
    54  // Byte 5
    -
    55  uint8_t OffTimerMins :6; // 0-59
    -
    56  uint8_t :1; // Unknown/Unused
    -
    57  uint8_t OffTimer12Hr :1; // (Nr of Hours + 1) % 12.
    -
    58  // Byte 6
    -
    59  uint8_t :8; // Typically 0b00111011(0x3B)
    -
    60  // Byte 7
    -
    61  uint8_t OnTimerHrs :4; // (Nr of Hours + 1) % 12.
    -
    62  uint8_t OffTimerHrs :4; // (Nr of Hours + 1) % 12.
    -
    63  // Byte 8
    -
    64  uint8_t :5; // Typically 0b00000
    -
    65  uint8_t Light :1;
    -
    66  uint8_t OffTimerEnable :1;
    -
    67  uint8_t OnTimerEnable :1;
    -
    68  // Byte 9
    -
    69  uint8_t Checksum :8;
    -
    70  };
    -
    71 };
    -
    72 
    -
    73 // Constants
    -
    74 const uint8_t kVoltasFan = 0b0001;
    -
    75 const uint8_t kVoltasHeat = 0b0010;
    -
    76 const uint8_t kVoltasDry = 0b0100;
    -
    77 const uint8_t kVoltasCool = 0b1000;
    -
    78 const uint8_t kVoltasMinTemp = 16;
    -
    79 const uint8_t kVoltasDryTemp = 24;
    -
    80 const uint8_t kVoltasMaxTemp = 30;
    -
    81 const uint8_t kVoltasFanHigh = 0b001;
    -
    82 const uint8_t kVoltasFanMed = 0b010;
    -
    83 const uint8_t kVoltasFanLow = 0b100;
    -
    84 const uint8_t kVoltasFanAuto = 0b111;
    -
    85 const uint8_t kVoltasSwingHChange = 0b1111100;
    -
    86 const uint8_t kVoltasSwingHNoChange = 0b0011001;
    -
    87 
    -
    88 // Classes
    -
    90 class IRVoltas {
    -
    91  public:
    -
    92  explicit IRVoltas(const uint16_t pin, const bool inverted = false,
    -
    93  const bool use_modulation = true);
    -
    94  void stateReset();
    -
    95 #if SEND_VOLTAS
    -
    96  void send(const uint16_t repeat = kNoRepeat);
    -
    101  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    102 #endif // SEND_VOLTAS
    -
    103  void begin();
    -
    104  static bool validChecksum(const uint8_t state[],
    -
    105  const uint16_t length = kVoltasStateLength);
    -
    106  void setModel(const voltas_ac_remote_model_t model);
    -
    107  voltas_ac_remote_model_t getModel(const bool raw = false) const;
    -
    108  void setPower(const bool on);
    -
    109  bool getPower(void) const;
    -
    110  void on(void);
    -
    111  void off(void);
    -
    112  void setWifi(const bool on);
    -
    113  bool getWifi(void) const;
    -
    114  void setTemp(const uint8_t temp);
    -
    115  uint8_t getTemp(void);
    -
    116  void setFan(const uint8_t speed);
    -
    117  uint8_t getFan(void);
    -
    118  void setMode(const uint8_t mode);
    -
    119  uint8_t getMode(void);
    -
    120  void setSwingH(const bool on);
    -
    121  bool getSwingH(void) const;
    -
    122  void setSwingHChange(const bool on);
    -
    123  bool getSwingHChange(void) const;
    -
    124  void setSwingV(const bool on);
    -
    125  bool getSwingV(void) const;
    -
    126  void setEcono(const bool on);
    -
    127  bool getEcono(void) const;
    -
    128  void setLight(const bool on);
    -
    129  bool getLight(void) const;
    -
    130  void setTurbo(const bool on);
    -
    131  bool getTurbo(void) const;
    -
    132  void setSleep(const bool on);
    -
    133  bool getSleep(void) const;
    -
    134  uint16_t getOnTime(void) const;
    -
    135  void setOnTime(const uint16_t nr_of_mins);
    -
    136  uint16_t getOffTime(void) const;
    -
    137  void setOffTime(const uint16_t nr_of_mins);
    -
    138  uint8_t* getRaw(void);
    -
    139  void setRaw(const uint8_t new_code[]);
    -
    140  uint8_t convertMode(const stdAc::opmode_t mode);
    -
    141  uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    142  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    143  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    144  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL);
    -
    145  String toString(void);
    -
    146 #ifndef UNIT_TEST
    -
    147 
    -
    148  private:
    - -
    150 #else
    -
    151  IRsendTest _irsend;
    -
    153 #endif
    - - -
    157  void checksum(void);
    -
    158  static uint8_t calcChecksum(const uint8_t state[],
    -
    159  const uint16_t length = kVoltasStateLength);
    -
    160 };
    -
    161 #endif // IR_VOLTAS_H_
    -
    -
    void setOnTime(const uint16_t nr_of_mins)
    Set the value of the On Timer time.
    Definition: ir_Voltas.cpp:423
    -
    uint8_t getTemp(void)
    Get the current temperature setting.
    Definition: ir_Voltas.cpp:258
    -
    uint8_t Temp
    Definition: ir_Voltas.h:46
    -
    const uint8_t kVoltasFan
    1
    Definition: ir_Voltas.h:74
    -
    uint8_t getFan(void)
    Get the current fan speed setting.
    Definition: ir_Voltas.cpp:282
    -
    uint8_t Mode
    Definition: ir_Voltas.h:35
    -
    uint16_t getOnTime(void) const
    Get the value of the On Timer time.
    Definition: ir_Voltas.cpp:415
    -
    bool getEcono(void) const
    Get the value of the current Econo setting.
    Definition: ir_Voltas.cpp:389
    -
    uint8_t getMode(void)
    Get the operating mode setting of the A/C.
    Definition: ir_Voltas.cpp:222
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t OnTimerMins
    Definition: ir_Voltas.h:51
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Voltas.cpp:301
    -
    uint8_t Wifi
    Definition: ir_Voltas.h:40
    -
    bool getSwingHChange(void) const
    Are the Horizontal Swing change bits set in the message?
    Definition: ir_Voltas.cpp:351
    -
    const uint8_t kVoltasFanMed
    2
    Definition: ir_Voltas.h:82
    -
    const uint8_t kVoltasSwingHNoChange
    0x19
    Definition: ir_Voltas.h:86
    - -
    uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Voltas.cpp:227
    -
    uint8_t SwingH
    Definition: ir_Voltas.h:32
    -
    Class for handling detailed Voltas A/C messages.
    Definition: ir_Voltas.h:90
    -
    Native representation of a Voltas A/C message.
    Definition: ir_Voltas.h:28
    -
    const uint8_t kVoltasFanAuto
    7
    Definition: ir_Voltas.h:84
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    voltas_ac_remote_model_t _model
    Model type.
    Definition: ir_Voltas.h:156
    -
    const uint16_t kVoltasStateLength
    Definition: IRremoteESP8266.h:1165
    -
    uint8_t SwingV
    Definition: ir_Voltas.h:39
    -
    void off(void)
    Change the power setting to Off.
    Definition: ir_Voltas.cpp:184
    -
    uint8_t Light
    Definition: ir_Voltas.h:65
    -
    uint8_t OffTimerMins
    Definition: ir_Voltas.h:55
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Voltas.cpp:287
    -
    void setSleep(const bool on)
    Change the Sleep setting.
    Definition: ir_Voltas.cpp:402
    -
    bool getWifi(void) const
    Get the value of the current Wifi setting.
    Definition: ir_Voltas.cpp:361
    -
    IRVoltas(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Voltas.cpp:87
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Voltas.cpp:262
    -
    uint8_t Econo
    Definition: ir_Voltas.h:48
    -
    void on(void)
    Change the power setting to On.
    Definition: ir_Voltas.cpp:181
    - -
    void setPower(const bool on)
    Change the power setting.
    Definition: ir_Voltas.cpp:188
    -
    uint8_t OffTimerEnable
    Definition: ir_Voltas.h:66
    -
    uint8_t OffTimer12Hr
    Definition: ir_Voltas.h:57
    -
    bool getSwingV(void) const
    Get the Vertical Swing setting of the A/C.
    Definition: ir_Voltas.cpp:316
    -
    const uint16_t kNoRepeat
    Definition: IRremoteESP8266.h:934
    -
    const uint8_t kVoltasHeat
    2
    Definition: ir_Voltas.h:75
    -
    void setSwingV(const bool on)
    Set the Vertical Swing setting of the A/C.
    Definition: ir_Voltas.cpp:312
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL)
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Voltas.cpp:456
    -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Voltas.cpp:250
    -
    void setRaw(const uint8_t new_code[])
    Set the internal state from a valid code for this protocol.
    Definition: ir_Voltas.cpp:150
    -
    uint8_t OffTimerHrs
    Definition: ir_Voltas.h:62
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Voltas.h:149
    -
    void setTurbo(const bool on)
    Change the Turbo setting.
    Definition: ir_Voltas.cpp:366
    -
    uint8_t FanSpeed
    Definition: ir_Voltas.h:37
    -
    void begin()
    Set up hardware to be able to send a message.
    Definition: ir_Voltas.cpp:103
    -
    uint8_t OnTimerHrs
    Definition: ir_Voltas.h:61
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Voltas.cpp:197
    -
    uint8_t Turbo
    Definition: ir_Voltas.h:42
    -
    void setSwingH(const bool on)
    Set the Horizontal Swing setting of the A/C.
    Definition: ir_Voltas.cpp:320
    -
    void setWifi(const bool on)
    Change the Wifi setting.
    Definition: ir_Voltas.cpp:357
    -
    void setSwingHChange(const bool on)
    Set the bits for changing the Horizontal Swing setting of the A/C.
    Definition: ir_Voltas.cpp:344
    -
    uint8_t Power
    Definition: ir_Voltas.h:44
    -
    uint16_t getOffTime(void) const
    Get the value of the On Timer time.
    Definition: ir_Voltas.cpp:435
    -
    String toString(void)
    Convert the current internal state into a human readable string.
    Definition: ir_Voltas.cpp:491
    -
    void setModel(const voltas_ac_remote_model_t model)
    Set the current model for the remote.
    Definition: ir_Voltas.cpp:131
    -
    void stateReset()
    Definition: ir_Voltas.cpp:94
    -
    void setEcono(const bool on)
    Change the Economy setting.
    Definition: ir_Voltas.cpp:380
    -
    uint8_t OnTimerEnable
    Definition: ir_Voltas.h:67
    -
    const uint8_t kVoltasMaxTemp
    Celsius.
    Definition: ir_Voltas.h:80
    -
    const uint8_t kVoltasDry
    4
    Definition: ir_Voltas.h:76
    -
    uint8_t raw[kVoltasStateLength]
    The state in native IR code form.
    Definition: ir_Voltas.h:29
    -
    uint8_t TempSet
    Definition: ir_Voltas.h:49
    -
    uint8_t Checksum
    Definition: ir_Voltas.h:69
    -
    const uint8_t kVoltasSwingHChange
    0x7D
    Definition: ir_Voltas.h:85
    -
    static uint8_t calcChecksum(const uint8_t state[], const uint16_t length=kVoltasStateLength)
    Calculate the checksum is valid for a given state.
    Definition: ir_Voltas.cpp:173
    -
    const uint8_t kVoltasMinTemp
    Celsius.
    Definition: ir_Voltas.h:78
    -
    void checksum(void)
    Calculate and set the checksum values for the internal state.
    Definition: ir_Voltas.cpp:156
    -
    const uint8_t kVoltasDryTemp
    Celsius.
    Definition: ir_Voltas.h:79
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Voltas.cpp:239
    -
    void send(const uint16_t repeat=kNoRepeat)
    Send the current internal state as an IR message.
    Definition: ir_Voltas.cpp:108
    -
    const uint8_t kVoltasFanHigh
    1
    Definition: ir_Voltas.h:81
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Voltas.h:101
    -
    uint8_t Sleep
    Definition: ir_Voltas.h:43
    -
    bool getSwingH(void) const
    Get the Horizontal Swing setting of the A/C.
    Definition: ir_Voltas.cpp:332
    -
    void setOffTime(const uint16_t nr_of_mins)
    Set the value of the Off Timer time.
    Definition: ir_Voltas.cpp:443
    -
    uint8_t OnTimer12Hr
    Definition: ir_Voltas.h:53
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kVoltasStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Voltas.cpp:164
    -
    const uint8_t kVoltasFanLow
    4
    Definition: ir_Voltas.h:83
    -
    bool getSleep(void) const
    Get the value of the current Sleep setting.
    Definition: ir_Voltas.cpp:411
    -
    const uint8_t kVoltasCool
    8
    Definition: ir_Voltas.h:77
    -
    bool getPower(void) const
    Get the value of the current power setting.
    Definition: ir_Voltas.cpp:192
    -
    uint8_t * getRaw(void)
    Get a PTR to the internal state/code for this protocol.
    Definition: ir_Voltas.cpp:143
    -
    VoltasProtocol _
    The state of the IR remote.
    Definition: ir_Voltas.h:155
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    bool getLight(void) const
    Get the value of the current Light setting.
    Definition: ir_Voltas.cpp:397
    -
    void setLight(const bool on)
    Change the Light setting.
    Definition: ir_Voltas.cpp:393
    -
    voltas_ac_remote_model_t getModel(const bool raw=false) const
    Get the model information currently known.
    Definition: ir_Voltas.cpp:116
    -
    bool getTurbo(void) const
    Get the value of the current Turbo setting.
    Definition: ir_Voltas.cpp:375
    -
    voltas_ac_remote_model_t
    Voltas A/C model numbers.
    Definition: IRsend.h:164
    -
    uint8_t SwingHChange
    Definition: ir_Voltas.h:33
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8cpp.html deleted file mode 100644 index 95fcdadbf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8cpp.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Whirlpool.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Whirlpool.cpp File Reference
    -
    -
    - -

    Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea. -More...

    - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kWhirlpoolAcHdrMark = 8950
     
    const uint16_t kWhirlpoolAcHdrSpace = 4484
     
    const uint16_t kWhirlpoolAcBitMark = 597
     
    const uint16_t kWhirlpoolAcOneSpace = 1649
     
    const uint16_t kWhirlpoolAcZeroSpace = 533
     
    const uint16_t kWhirlpoolAcGap = 7920
     
    const uint32_t kWhirlpoolAcMinGap = kDefaultMessageGap
     
    const uint8_t kWhirlpoolAcSections = 3
     
    -

    Detailed Description

    -

    Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/509
    -
    Note
    Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. Advanced 6thSense, Dehumidify, & Sleep modes are not supported.
    -
    -Dim == !Light, Jet == Super == Turbo
    -

    Variable Documentation

    - -

    ◆ kWhirlpoolAcBitMark

    - -
    -
    - - - - -
    const uint16_t kWhirlpoolAcBitMark = 597
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcGap

    - -
    -
    - - - - -
    const uint16_t kWhirlpoolAcGap = 7920
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcHdrMark

    - -
    -
    - - - - -
    const uint16_t kWhirlpoolAcHdrMark = 8950
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcHdrSpace

    - -
    -
    - - - - -
    const uint16_t kWhirlpoolAcHdrSpace = 4484
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcMinGap

    - -
    -
    - - - - -
    const uint32_t kWhirlpoolAcMinGap = kDefaultMessageGap
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcOneSpace

    - -
    -
    - - - - -
    const uint16_t kWhirlpoolAcOneSpace = 1649
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcSections

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcSections = 3
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcZeroSpace

    - -
    -
    - - - - -
    const uint16_t kWhirlpoolAcZeroSpace = 533
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h.html deleted file mode 100644 index 5d793bfef..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h.html +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Whirlpool.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Whirlpool.h File Reference
    -
    -
    - -

    Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea. -More...

    - -

    Go to the source code of this file.

    - - - - - - - - -

    -Classes

    union  WhirlpoolProtocol
     Native representation of a Whirlpool A/C message. More...
     
    class  IRWhirlpoolAc
     Class for handling detailed Whirlpool A/C messages. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint8_t kWhirlpoolAcChecksumByte1 = 13
     
    const uint8_t kWhirlpoolAcChecksumByte2 = kWhirlpoolAcStateLength - 1
     
    const uint8_t kWhirlpoolAcHeat = 0
     
    const uint8_t kWhirlpoolAcAuto = 1
     
    const uint8_t kWhirlpoolAcCool = 2
     
    const uint8_t kWhirlpoolAcDry = 3
     
    const uint8_t kWhirlpoolAcFan = 4
     
    const uint8_t kWhirlpoolAcFanAuto = 0
     
    const uint8_t kWhirlpoolAcFanHigh = 1
     
    const uint8_t kWhirlpoolAcFanMedium = 2
     
    const uint8_t kWhirlpoolAcFanLow = 3
     
    const uint8_t kWhirlpoolAcMinTemp = 18
     
    const uint8_t kWhirlpoolAcMaxTemp = 32
     
    const uint8_t kWhirlpoolAcAutoTemp = 23
     
    const uint8_t kWhirlpoolAcCommandLight = 0x00
     
    const uint8_t kWhirlpoolAcCommandPower = 0x01
     
    const uint8_t kWhirlpoolAcCommandTemp = 0x02
     
    const uint8_t kWhirlpoolAcCommandSleep = 0x03
     
    const uint8_t kWhirlpoolAcCommandSuper = 0x04
     
    const uint8_t kWhirlpoolAcCommandOnTimer = 0x05
     
    const uint8_t kWhirlpoolAcCommandMode = 0x06
     
    const uint8_t kWhirlpoolAcCommandSwing = 0x07
     
    const uint8_t kWhirlpoolAcCommandIFeel = 0x0D
     
    const uint8_t kWhirlpoolAcCommandFanSpeed = 0x11
     
    const uint8_t kWhirlpoolAcCommand6thSense = 0x17
     
    const uint8_t kWhirlpoolAcCommandOffTimer = 0x1D
     
    -

    Detailed Description

    -

    Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.

    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/509
    -
    Note
    Smart, iFeel, AroundU, PowerSave, & Silent modes are unsupported. Advanced 6thSense, Dehumidify, & Sleep modes are not supported.
    -
    -Dim == !Light, Jet == Super == Turbo
    -

    Variable Documentation

    - -

    ◆ kWhirlpoolAcAuto

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcAuto = 1
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcAutoTemp

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcAutoTemp = 23
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcChecksumByte1

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcChecksumByte1 = 13
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcChecksumByte2

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcChecksumByte2 = kWhirlpoolAcStateLength - 1
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommand6thSense

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommand6thSense = 0x17
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandFanSpeed

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandFanSpeed = 0x11
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandIFeel

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandIFeel = 0x0D
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandLight

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandLight = 0x00
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandMode

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandMode = 0x06
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandOffTimer

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandOffTimer = 0x1D
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandOnTimer

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandOnTimer = 0x05
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandPower

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandPower = 0x01
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandSleep

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandSleep = 0x03
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandSuper

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandSuper = 0x04
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandSwing

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandSwing = 0x07
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCommandTemp

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCommandTemp = 0x02
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcCool

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcCool = 2
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcDry

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcDry = 3
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcFan

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcFan = 4
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcFanAuto

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcFanAuto = 0
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcFanHigh

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcFanHigh = 1
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcFanLow

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcFanLow = 3
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcFanMedium

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcFanMedium = 2
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcHeat

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcHeat = 0
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcMaxTemp

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcMaxTemp = 32
    -
    - -
    -
    - -

    ◆ kWhirlpoolAcMinTemp

    - -
    -
    - - - - -
    const uint8_t kWhirlpoolAcMinTemp = 18
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h_source.html deleted file mode 100644 index 99df3a4e6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whirlpool_8h_source.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Whirlpool.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    ir_Whirlpool.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2018 David Conran
    -
    2 
    -
    10 
    -
    11 // Supports:
    -
    12 // Brand: Whirlpool, Model: DG11J1-3A remote
    -
    13 // Brand: Whirlpool, Model: DG11J1-04 remote
    -
    14 // Brand: Whirlpool, Model: DG11J1-91 remote
    -
    15 // Brand: Whirlpool, Model: SPIS409L A/C
    -
    16 // Brand: Whirlpool, Model: SPIS412L A/C
    -
    17 // Brand: Whirlpool, Model: SPIW409L A/C
    -
    18 // Brand: Whirlpool, Model: SPIW412L A/C
    -
    19 // Brand: Whirlpool, Model: SPIW418L A/C
    -
    20 
    -
    21 #ifndef IR_WHIRLPOOL_H_
    -
    22 #define IR_WHIRLPOOL_H_
    -
    23 
    -
    24 #define __STDC_LIMIT_MACROS
    -
    25 #include <stdint.h>
    -
    26 #ifndef UNIT_TEST
    -
    27 #include <Arduino.h>
    -
    28 #endif
    -
    29 #include "IRremoteESP8266.h"
    -
    30 #include "IRsend.h"
    -
    31 #ifdef UNIT_TEST
    -
    32 #include "IRsend_test.h"
    -
    33 #endif
    -
    34 
    - - -
    38  struct {
    -
    39  // Byte 0~1
    -
    40  uint8_t pad0[2];
    -
    41  // Byte 2
    -
    42  uint8_t Fan :2;
    -
    43  uint8_t Power :1;
    -
    44  uint8_t Sleep :1;
    -
    45  uint8_t :3;
    -
    46  uint8_t Swing1 :1;
    -
    47  // Byte 3
    -
    48  uint8_t Mode :3;
    -
    49  uint8_t :1;
    -
    50  uint8_t Temp :4;
    -
    51  // Byte 4
    -
    52  uint8_t :8;
    -
    53  // Byte 5
    -
    54  uint8_t :4;
    -
    55  uint8_t Super1 :1;
    -
    56  uint8_t :2;
    -
    57  uint8_t Super2 :1;
    -
    58  // Byte 6
    -
    59  uint8_t ClockHours :5;
    -
    60  uint8_t LightOff :1;
    -
    61  uint8_t :2;
    -
    62  // Byte 7
    -
    63  uint8_t ClockMins :6;
    -
    64  uint8_t :1;
    -
    65  uint8_t OffTimerEnabled :1;
    -
    66  // Byte 8
    -
    67  uint8_t OffHours :5;
    -
    68  uint8_t :1;
    -
    69  uint8_t Swing2 :1;
    -
    70  uint8_t :1;
    -
    71  // Byte 9
    -
    72  uint8_t OffMins :6;
    -
    73  uint8_t :1;
    -
    74  uint8_t OnTimerEnabled :1;
    -
    75  // Byte 10
    -
    76  uint8_t OnHours :5;
    -
    77  uint8_t :3;
    -
    78  // Byte 11
    -
    79  uint8_t OnMins :6;
    -
    80  uint8_t :2;
    -
    81  // Byte 12
    -
    82  uint8_t :8;
    -
    83  // Byte 13
    -
    84  uint8_t Sum1 :8;
    -
    85  // Byte 14
    -
    86  uint8_t :8;
    -
    87  // Byte 15
    -
    88  uint8_t Cmd :8;
    -
    89  // Byte 16~17
    -
    90  uint8_t pad1[2];
    -
    91  // Byte 18
    -
    92  uint8_t :3;
    -
    93  uint8_t J191 :1;
    -
    94  uint8_t :4;
    -
    95  // Byte 19
    -
    96  uint8_t :8;
    -
    97  // Byte 20
    -
    98  uint8_t Sum2 :8;
    -
    99  };
    -
    100 };
    -
    101 
    -
    102 // Constants
    -
    103 const uint8_t kWhirlpoolAcChecksumByte1 = 13;
    - -
    105 const uint8_t kWhirlpoolAcHeat = 0;
    -
    106 const uint8_t kWhirlpoolAcAuto = 1;
    -
    107 const uint8_t kWhirlpoolAcCool = 2;
    -
    108 const uint8_t kWhirlpoolAcDry = 3;
    -
    109 const uint8_t kWhirlpoolAcFan = 4;
    -
    110 const uint8_t kWhirlpoolAcFanAuto = 0;
    -
    111 const uint8_t kWhirlpoolAcFanHigh = 1;
    -
    112 const uint8_t kWhirlpoolAcFanMedium = 2;
    -
    113 const uint8_t kWhirlpoolAcFanLow = 3;
    -
    114 const uint8_t kWhirlpoolAcMinTemp = 18; // 18C (DG11J1-3A), 16C (DG11J1-91)
    -
    115 const uint8_t kWhirlpoolAcMaxTemp = 32; // 32C (DG11J1-3A), 30C (DG11J1-91)
    -
    116 const uint8_t kWhirlpoolAcAutoTemp = 23; // 23C
    -
    117 const uint8_t kWhirlpoolAcCommandLight = 0x00;
    -
    118 const uint8_t kWhirlpoolAcCommandPower = 0x01;
    -
    119 const uint8_t kWhirlpoolAcCommandTemp = 0x02;
    -
    120 const uint8_t kWhirlpoolAcCommandSleep = 0x03;
    -
    121 const uint8_t kWhirlpoolAcCommandSuper = 0x04;
    -
    122 const uint8_t kWhirlpoolAcCommandOnTimer = 0x05;
    -
    123 const uint8_t kWhirlpoolAcCommandMode = 0x06;
    -
    124 const uint8_t kWhirlpoolAcCommandSwing = 0x07;
    -
    125 const uint8_t kWhirlpoolAcCommandIFeel = 0x0D;
    -
    126 const uint8_t kWhirlpoolAcCommandFanSpeed = 0x11;
    -
    127 const uint8_t kWhirlpoolAcCommand6thSense = 0x17;
    -
    128 const uint8_t kWhirlpoolAcCommandOffTimer = 0x1D;
    -
    129 
    -
    130 // Classes
    - -
    133  public:
    -
    134  explicit IRWhirlpoolAc(const uint16_t pin, const bool inverted = false,
    -
    135  const bool use_modulation = true);
    -
    136  void stateReset(void);
    -
    137 #if SEND_WHIRLPOOL_AC
    -
    138  void send(const uint16_t repeat = kWhirlpoolAcDefaultRepeat,
    -
    139  const bool calcchecksum = true);
    -
    144  int8_t calibrate(void) { return _irsend.calibrate(); }
    -
    145 #endif // SEND_WHIRLPOOL_AC
    -
    146  void begin(void);
    -
    147  void setPowerToggle(const bool on);
    -
    148  bool getPowerToggle(void) const;
    -
    149  void setSleep(const bool on);
    -
    150  bool getSleep(void) const;
    -
    151  void setSuper(const bool on);
    -
    152  bool getSuper(void) const;
    -
    153  void setTemp(const uint8_t temp);
    -
    154  uint8_t getTemp(void) const;
    -
    155  void setFan(const uint8_t speed);
    -
    156  uint8_t getFan(void) const;
    -
    157  void setMode(const uint8_t mode);
    -
    158  uint8_t getMode(void) const;
    -
    159  void setSwing(const bool on);
    -
    160  bool getSwing(void) const;
    -
    161  void setLight(const bool on);
    -
    162  bool getLight(void) const;
    -
    163  uint16_t getClock(void) const;
    -
    164  void setClock(const uint16_t minspastmidnight);
    -
    165  uint16_t getOnTimer(void) const;
    -
    166  void setOnTimer(const uint16_t minspastmidnight);
    -
    167  void enableOnTimer(const bool on);
    -
    168  bool isOnTimerEnabled(void) const;
    -
    169  uint16_t getOffTimer(void) const;
    -
    170  void setOffTimer(const uint16_t minspastmidnight);
    -
    171  void enableOffTimer(const bool on);
    -
    172  bool isOffTimerEnabled(void) const;
    -
    173  void setCommand(const uint8_t code);
    -
    174  uint8_t getCommand(void) const;
    - -
    176  void setModel(const whirlpool_ac_remote_model_t model);
    -
    177  uint8_t* getRaw(const bool calcchecksum = true);
    -
    178  void setRaw(const uint8_t new_code[],
    -
    179  const uint16_t length = kWhirlpoolAcStateLength);
    -
    180  static bool validChecksum(const uint8_t state[],
    -
    181  const uint16_t length = kWhirlpoolAcStateLength);
    -
    182  static uint8_t convertMode(const stdAc::opmode_t mode);
    -
    183  static uint8_t convertFan(const stdAc::fanspeed_t speed);
    -
    184  static stdAc::opmode_t toCommonMode(const uint8_t mode);
    -
    185  static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed);
    -
    186  stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const;
    -
    187  String toString(void) const;
    -
    188 #ifndef UNIT_TEST
    -
    189 
    -
    190  private:
    - -
    192 #else // UNIT_TEST
    -
    193  IRsendTest _irsend;
    -
    195 #endif // UNIT_TEST
    - -
    198  uint8_t _desiredtemp;
    -
    199  void checksum(const uint16_t length = kWhirlpoolAcStateLength);
    -
    200  void _setTemp(const uint8_t temp, const bool remember = true);
    -
    201  void _setMode(const uint8_t mode);
    -
    202  int8_t getTempOffset(void) const;
    -
    203 };
    -
    204 
    -
    205 #endif // IR_WHIRLPOOL_H_
    -
    -
    uint16_t getClock(void) const
    Get the clock time in nr. of minutes past midnight.
    Definition: ir_Whirlpool.cpp:314
    -
    void send(const uint16_t repeat=kWhirlpoolAcDefaultRepeat, const bool calcchecksum=true)
    Send the current internal state as an IR message.
    Definition: ir_Whirlpool.cpp:142
    -
    void stateReset(void)
    Reset the state of the remote to a known good state/sequence.
    Definition: ir_Whirlpool.cpp:94
    -
    uint8_t raw[kWhirlpoolAcStateLength]
    The state in IR code form.
    Definition: ir_Whirlpool.h:37
    -
    bool getSwing(void) const
    Get the (vertical) swing setting of the A/C.
    Definition: ir_Whirlpool.cpp:289
    -
    uint8_t getFan(void) const
    Get the current fan speed setting.
    Definition: ir_Whirlpool.cpp:275
    -
    uint8_t Swing1
    Definition: ir_Whirlpool.h:46
    -
    const uint8_t kWhirlpoolAcCommandSuper
    Definition: ir_Whirlpool.h:121
    -
    uint8_t Swing2
    Definition: ir_Whirlpool.h:69
    -
    int8_t calibrate(void)
    Run the calibration to calculate uSec timing offsets for this platform.
    Definition: ir_Whirlpool.h:144
    -
    static uint8_t convertMode(const stdAc::opmode_t mode)
    Convert a stdAc::opmode_t enum into its native mode.
    Definition: ir_Whirlpool.cpp:441
    -
    uint8_t getCommand(void) const
    Get the Command (Button) setting of the A/C.
    Definition: ir_Whirlpool.cpp:384
    -
    void _setTemp(const uint8_t temp, const bool remember=true)
    Set the temperature.
    Definition: ir_Whirlpool.cpp:200
    -
    fanspeed_t
    Common A/C settings for Fan Speeds.
    Definition: IRsend.h:58
    -
    uint8_t getMode(void) const
    Get the operating mode setting of the A/C.
    Definition: ir_Whirlpool.cpp:254
    -
    whirlpool_ac_remote_model_t
    Whirlpool A/C model numbers.
    Definition: IRsend.h:170
    -
    const uint8_t kWhirlpoolAcAutoTemp
    Definition: ir_Whirlpool.h:116
    -
    uint8_t OnMins
    Definition: ir_Whirlpool.h:79
    -
    const uint8_t kWhirlpoolAcFanHigh
    Definition: ir_Whirlpool.h:111
    -
    stdAc::state_t toCommon(const stdAc::state_t *prev=NULL) const
    Convert the current internal state into its stdAc::state_t equivalent.
    Definition: ir_Whirlpool.cpp:495
    -
    const uint8_t kWhirlpoolAcMaxTemp
    Definition: ir_Whirlpool.h:115
    -
    const uint8_t kWhirlpoolAcAuto
    Definition: ir_Whirlpool.h:106
    -
    static uint8_t convertFan(const stdAc::fanspeed_t speed)
    Convert a stdAc::fanspeed_t enum into it's native speed.
    Definition: ir_Whirlpool.cpp:456
    -
    static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed)
    Convert a native fan speed into its stdAc equivalent.
    Definition: ir_Whirlpool.cpp:483
    -
    uint16_t getOffTimer(void) const
    Get the Off Timer time..
    Definition: ir_Whirlpool.cpp:326
    -
    bool getSleep(void) const
    Get the Sleep setting of the A/C.
    Definition: ir_Whirlpool.cpp:398
    -
    IRWhirlpoolAc(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
    Class constructor.
    Definition: ir_Whirlpool.cpp:89
    -
    String toString(void) const
    Convert the current internal state into a human readable string.
    Definition: ir_Whirlpool.cpp:530
    -
    const uint8_t kWhirlpoolAcCommandOnTimer
    Definition: ir_Whirlpool.h:122
    - -
    void setTemp(const uint8_t temp)
    Set the temperature.
    Definition: ir_Whirlpool.cpp:210
    -
    const uint8_t kWhirlpoolAcCommandIFeel
    Definition: ir_Whirlpool.h:125
    -
    whirlpool_ac_remote_model_t getModel(void) const
    Get/Detect the model of the A/C.
    Definition: ir_Whirlpool.cpp:165
    -
    void setClock(const uint16_t minspastmidnight)
    Set the clock time in nr. of minutes past midnight.
    Definition: ir_Whirlpool.cpp:308
    -
    int8_t getTempOffset(void) const
    Calculate the temp. offset in deg C for the current model.
    Definition: ir_Whirlpool.cpp:189
    -
    Class for sending all basic IR protocols.
    Definition: IRsend.h:188
    -
    uint8_t Super1
    Definition: ir_Whirlpool.h:55
    -
    int8_t calibrate(uint16_t hz=38000U)
    Calculate & set any offsets to account for execution times during sending.
    Definition: IRsend.cpp:207
    -
    const uint8_t kWhirlpoolAcChecksumByte1
    Definition: ir_Whirlpool.h:103
    -
    Class for handling detailed Whirlpool A/C messages.
    Definition: ir_Whirlpool.h:132
    -
    std::string String
    Definition: IRremoteESP8266.h:1250
    -
    const uint8_t kWhirlpoolAcCommandMode
    Definition: ir_Whirlpool.h:123
    -
    uint8_t getTemp(void) const
    Get the current temperature setting.
    Definition: ir_Whirlpool.cpp:218
    -
    bool isOffTimerEnabled(void) const
    Is the Off timer enabled?
    Definition: ir_Whirlpool.cpp:332
    -
    uint8_t pad1[2]
    Definition: ir_Whirlpool.h:90
    -
    const uint8_t kWhirlpoolAcCool
    Definition: ir_Whirlpool.h:107
    -
    const uint8_t kWhirlpoolAcCommandOffTimer
    Definition: ir_Whirlpool.h:128
    - -
    bool getPowerToggle(void) const
    Get the value of the current power toggle setting.
    Definition: ir_Whirlpool.cpp:378
    -
    const uint8_t kWhirlpoolAcCommandSwing
    Definition: ir_Whirlpool.h:124
    -
    uint8_t OffHours
    Definition: ir_Whirlpool.h:67
    -
    Native representation of a Whirlpool A/C message.
    Definition: ir_Whirlpool.h:36
    -
    WhirlpoolProtocol _
    Definition: ir_Whirlpool.h:197
    -
    static bool validChecksum(const uint8_t state[], const uint16_t length=kWhirlpoolAcStateLength)
    Verify the checksum is valid for a given state.
    Definition: ir_Whirlpool.cpp:109
    -
    const uint8_t kWhirlpoolAcFanMedium
    Definition: ir_Whirlpool.h:112
    -
    const uint8_t kWhirlpoolAcDry
    Definition: ir_Whirlpool.h:108
    -
    void setPowerToggle(const bool on)
    Change the power toggle setting.
    Definition: ir_Whirlpool.cpp:370
    -
    void setOffTimer(const uint16_t minspastmidnight)
    Set the Off Timer time.
    Definition: ir_Whirlpool.cpp:320
    -
    uint8_t Sleep
    Definition: ir_Whirlpool.h:44
    -
    const uint8_t kWhirlpoolAcCommandLight
    Definition: ir_Whirlpool.h:117
    -
    void _setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Whirlpool.cpp:225
    -
    uint8_t ClockMins
    Definition: ir_Whirlpool.h:63
    -
    const uint8_t kWhirlpoolAcFanLow
    Definition: ir_Whirlpool.h:113
    -
    const uint16_t kWhirlpoolAcDefaultRepeat
    Definition: IRremoteESP8266.h:1158
    -
    void setModel(const whirlpool_ac_remote_model_t model)
    Set the model of the A/C to emulate.
    Definition: ir_Whirlpool.cpp:174
    -
    void setSuper(const bool on)
    Set the Super (Turbo/Jet) setting of the A/C.
    Definition: ir_Whirlpool.cpp:404
    -
    uint8_t Power
    Definition: ir_Whirlpool.h:43
    -
    const uint8_t kWhirlpoolAcChecksumByte2
    Definition: ir_Whirlpool.h:104
    -
    const uint8_t kWhirlpoolAcFan
    Definition: ir_Whirlpool.h:109
    -
    uint8_t OffMins
    Definition: ir_Whirlpool.h:72
    -
    const uint8_t kWhirlpoolAcCommandFanSpeed
    Definition: ir_Whirlpool.h:126
    -
    void setCommand(const uint8_t code)
    Set the Command (Button) setting of the A/C.
    Definition: ir_Whirlpool.cpp:434
    -
    const uint16_t kWhirlpoolAcStateLength
    Definition: IRremoteESP8266.h:1156
    -
    uint8_t Cmd
    Definition: ir_Whirlpool.h:88
    -
    void setRaw(const uint8_t new_code[], const uint16_t length=kWhirlpoolAcStateLength)
    Set the internal state from a valid code for this protocol.
    Definition: ir_Whirlpool.cpp:159
    -
    const uint8_t kWhirlpoolAcMinTemp
    Definition: ir_Whirlpool.h:114
    -
    void setSleep(const bool on)
    Set the Sleep setting of the A/C.
    Definition: ir_Whirlpool.cpp:390
    -
    void setMode(const uint8_t mode)
    Set the operating mode of the A/C.
    Definition: ir_Whirlpool.cpp:247
    -
    uint8_t OnTimerEnabled
    Definition: ir_Whirlpool.h:74
    -
    const uint8_t kWhirlpoolAcHeat
    Definition: ir_Whirlpool.h:105
    -
    void checksum(const uint16_t length=kWhirlpoolAcStateLength)
    Calculate & set the checksum for the current internal state of the remote.
    Definition: ir_Whirlpool.cpp:130
    -
    bool isOnTimerEnabled(void) const
    Is the On timer enabled?
    Definition: ir_Whirlpool.cpp:357
    -
    void enableOffTimer(const bool on)
    Enable the Off Timer.
    Definition: ir_Whirlpool.cpp:338
    -
    const uint8_t kWhirlpoolAcCommandPower
    Definition: ir_Whirlpool.h:118
    -
    void enableOnTimer(const bool on)
    Enable the On Timer.
    Definition: ir_Whirlpool.cpp:363
    -
    IRsend _irsend
    Instance of the IR send class.
    Definition: ir_Whirlpool.h:191
    -
    void setOnTimer(const uint16_t minspastmidnight)
    Set the On Timer time.
    Definition: ir_Whirlpool.cpp:345
    -
    uint8_t _desiredtemp
    The last user explicitly set temperature.
    Definition: ir_Whirlpool.h:198
    -
    uint8_t LightOff
    Definition: ir_Whirlpool.h:60
    -
    uint8_t OnHours
    Definition: ir_Whirlpool.h:76
    -
    uint8_t Fan
    Definition: ir_Whirlpool.h:42
    -
    uint8_t OffTimerEnabled
    Definition: ir_Whirlpool.h:65
    -
    const uint8_t kWhirlpoolAcCommandTemp
    Definition: ir_Whirlpool.h:119
    -
    uint8_t Super2
    Definition: ir_Whirlpool.h:57
    -
    const uint8_t kWhirlpoolAcCommand6thSense
    Definition: ir_Whirlpool.h:127
    -
    const uint8_t kWhirlpoolAcCommandSleep
    Definition: ir_Whirlpool.h:120
    -
    uint8_t Sum1
    Definition: ir_Whirlpool.h:84
    -
    uint8_t Sum2
    Definition: ir_Whirlpool.h:98
    -
    uint8_t J191
    Definition: ir_Whirlpool.h:93
    -
    uint8_t ClockHours
    Definition: ir_Whirlpool.h:59
    -
    void begin(void)
    Set up hardware to be able to send a message.
    Definition: ir_Whirlpool.cpp:103
    -
    bool getLight(void) const
    Get the Light (Display/LED) setting of the A/C.
    Definition: ir_Whirlpool.cpp:302
    -
    uint8_t pad0[2]
    Definition: ir_Whirlpool.h:40
    -
    uint16_t getOnTimer(void) const
    Get the On Timer time..
    Definition: ir_Whirlpool.cpp:351
    -
    Structure to hold a common A/C state.
    Definition: IRsend.h:97
    -
    void setFan(const uint8_t speed)
    Set the speed of the fan.
    Definition: ir_Whirlpool.cpp:260
    -
    void setLight(const bool on)
    Set the Light (Display/LED) setting of the A/C.
    Definition: ir_Whirlpool.cpp:295
    -
    uint8_t Mode
    Definition: ir_Whirlpool.h:48
    -
    void setSwing(const bool on)
    Set the (vertical) swing setting of the A/C.
    Definition: ir_Whirlpool.cpp:281
    -
    uint8_t Temp
    Definition: ir_Whirlpool.h:50
    -
    static stdAc::opmode_t toCommonMode(const uint8_t mode)
    Convert a native mode into its stdAc equivalent.
    Definition: ir_Whirlpool.cpp:470
    -
    bool getSuper(void) const
    Get the Super (Turbo/Jet) setting of the A/C.
    Definition: ir_Whirlpool.cpp:428
    -
    const uint8_t kWhirlpoolAcFanAuto
    Definition: ir_Whirlpool.h:110
    -
    uint8_t * getRaw(const bool calcchecksum=true)
    Get a copy of the internal state/code for this protocol.
    Definition: ir_Whirlpool.cpp:151
    -
    opmode_t
    Common A/C settings for A/C operating modes.
    Definition: IRsend.h:46
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whynter_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whynter_8cpp.html deleted file mode 100644 index 735ba5cca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Whynter_8cpp.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Whynter.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Whynter.cpp File Reference
    -
    -
    - -

    Support for Whynter protocols. Whynter A/C ARC-110WD added by Francesco Meschia Whynter originally added from https://github.com/shirriff/Arduino-IRremote/. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kWhynterTick = 50
     
    const uint16_t kWhynterHdrMarkTicks = 57
     
    const uint16_t kWhynterHdrMark = kWhynterHdrMarkTicks * kWhynterTick
     
    const uint16_t kWhynterHdrSpaceTicks = 57
     
    const uint16_t kWhynterHdrSpace = kWhynterHdrSpaceTicks * kWhynterTick
     
    const uint16_t kWhynterBitMarkTicks = 15
     
    const uint16_t kWhynterBitMark = kWhynterBitMarkTicks * kWhynterTick
     
    const uint16_t kWhynterOneSpaceTicks = 43
     
    const uint16_t kWhynterOneSpace = kWhynterOneSpaceTicks * kWhynterTick
     
    const uint16_t kWhynterZeroSpaceTicks = 15
     
    const uint16_t kWhynterZeroSpace = kWhynterZeroSpaceTicks * kWhynterTick
     
    const uint16_t kWhynterMinCommandLengthTicks = 2160
     
    const uint32_t kWhynterMinCommandLength
     
    const uint16_t kWhynterMinGapTicks
     
    const uint16_t kWhynterMinGap = kWhynterMinGapTicks * kWhynterTick
     
    -

    Detailed Description

    -

    Support for Whynter protocols. Whynter A/C ARC-110WD added by Francesco Meschia Whynter originally added from https://github.com/shirriff/Arduino-IRremote/.

    -

    Variable Documentation

    - -

    ◆ kWhynterBitMark

    - -
    -
    - - - - -
    const uint16_t kWhynterBitMark = kWhynterBitMarkTicks * kWhynterTick
    -
    - -
    -
    - -

    ◆ kWhynterBitMarkTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterBitMarkTicks = 15
    -
    - -
    -
    - -

    ◆ kWhynterHdrMark

    - -
    -
    - - - - -
    const uint16_t kWhynterHdrMark = kWhynterHdrMarkTicks * kWhynterTick
    -
    - -
    -
    - -

    ◆ kWhynterHdrMarkTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterHdrMarkTicks = 57
    -
    - -
    -
    - -

    ◆ kWhynterHdrSpace

    - -
    -
    - - - - -
    const uint16_t kWhynterHdrSpace = kWhynterHdrSpaceTicks * kWhynterTick
    -
    - -
    -
    - -

    ◆ kWhynterHdrSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterHdrSpaceTicks = 57
    -
    - -
    -
    - -

    ◆ kWhynterMinCommandLength

    - -
    -
    - - - - -
    const uint32_t kWhynterMinCommandLength
    -
    -
    - -

    ◆ kWhynterMinCommandLengthTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterMinCommandLengthTicks = 2160
    -
    - -
    -
    - -

    ◆ kWhynterMinGap

    - -
    -
    - - - - -
    const uint16_t kWhynterMinGap = kWhynterMinGapTicks * kWhynterTick
    -
    - -
    -
    - -

    ◆ kWhynterMinGapTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterMinGapTicks
    -
    -
    - -

    ◆ kWhynterOneSpace

    - -
    -
    - - - - -
    const uint16_t kWhynterOneSpace = kWhynterOneSpaceTicks * kWhynterTick
    -
    - -
    -
    - -

    ◆ kWhynterOneSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterOneSpaceTicks = 43
    -
    - -
    -
    - -

    ◆ kWhynterTick

    - -
    -
    - - - - -
    const uint16_t kWhynterTick = 50
    -
    - -
    -
    - -

    ◆ kWhynterZeroSpace

    - -
    -
    - - - - -
    const uint16_t kWhynterZeroSpace = kWhynterZeroSpaceTicks * kWhynterTick
    -
    - -
    -
    - -

    ◆ kWhynterZeroSpaceTicks

    - -
    -
    - - - - -
    const uint16_t kWhynterZeroSpaceTicks = 15
    -
    - -
    -
    -
    -
    const uint16_t kWhynterBits
    Definition: IRremoteESP8266.h:1159
    -
    const uint16_t kWhynterZeroSpaceTicks
    Definition: ir_Whynter.cpp:27
    -
    const uint16_t kWhynterMinCommandLengthTicks
    Definition: ir_Whynter.cpp:29
    -
    const uint16_t kWhynterBitMarkTicks
    Definition: ir_Whynter.cpp:23
    -
    const uint16_t kWhynterTick
    Definition: ir_Whynter.cpp:18
    -
    const uint16_t kWhynterOneSpaceTicks
    Definition: ir_Whynter.cpp:25
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Xmp_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Xmp_8cpp.html deleted file mode 100644 index b32dafe4d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Xmp_8cpp.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Xmp.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Xmp.cpp File Reference
    -
    -
    - -

    Support for XMP protocols. -More...

    - - - - -

    -Namespaces

     IRXmpUtils
     
    - - - - - - - - - - - - - - - - - - - -

    -Functions

    uint8_t IRXmpUtils::getSectionChecksum (const uint32_t data, const uint16_t nbits)
     Get the current checksum value from an XMP data section. More...
     
    uint8_t IRXmpUtils::calcSectionChecksum (const uint32_t data, const uint16_t nbits)
     Calculate the correct checksum value for an XMP data section. More...
     
    uint64_t IRXmpUtils::updateChecksums (const uint64_t data, const uint16_t nbits)
     Recalculate a XMP message code ensuring it has the checksums valid. More...
     
    uint16_t IRXmpUtils::calcRepeatOffset (const uint16_t nbits)
     Calculate the bit offset the repeat nibble in an XMP code. More...
     
    bool IRXmpUtils::isRepeat (const uint64_t data, const uint16_t nbits)
     Test if an XMP message code is a repeat or not. More...
     
    uint64_t IRXmpUtils::adjustRepeat (const uint64_t data, const uint16_t nbits, const uint8_t repeat_code)
     Adjust an XMP message code to make it a valid repeat or non-repeat code. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kXmpMark = 210
     uSeconds. More...
     
    const uint16_t kXmpBaseSpace = 760
     uSeconds More...
     
    const uint16_t kXmpSpaceStep = 135
     uSeconds More...
     
    const uint16_t kXmpFooterSpace = 13000
     uSeconds. More...
     
    const uint32_t kXmpMessageGap = 80400
     uSeconds. More...
     
    const uint8_t kXmpWordSize = kNibbleSize
     nr. of Bits in a word. More...
     
    const uint8_t kXmpMaxWordValue = (1 << kXmpWordSize) - 1
     
    const uint8_t kXmpSections = 2
     Nr. of Data sections. More...
     
    const uint8_t kXmpRepeatCode = 0b1000
     
    const uint8_t kXmpRepeatCodeAlt = 0b1001
     
    -

    Detailed Description

    -

    Variable Documentation

    - -

    ◆ kXmpBaseSpace

    - -
    -
    - - - - -
    const uint16_t kXmpBaseSpace = 760
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kXmpFooterSpace

    - -
    -
    - - - - -
    const uint16_t kXmpFooterSpace = 13000
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kXmpMark

    - -
    -
    - - - - -
    const uint16_t kXmpMark = 210
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kXmpMaxWordValue

    - -
    -
    - - - - -
    const uint8_t kXmpMaxWordValue = (1 << kXmpWordSize) - 1
    -
    - -
    -
    - -

    ◆ kXmpMessageGap

    - -
    -
    - - - - -
    const uint32_t kXmpMessageGap = 80400
    -
    - -

    uSeconds.

    - -
    -
    - -

    ◆ kXmpRepeatCode

    - -
    -
    - - - - -
    const uint8_t kXmpRepeatCode = 0b1000
    -
    - -
    -
    - -

    ◆ kXmpRepeatCodeAlt

    - -
    -
    - - - - -
    const uint8_t kXmpRepeatCodeAlt = 0b1001
    -
    - -
    -
    - -

    ◆ kXmpSections

    - -
    -
    - - - - -
    const uint8_t kXmpSections = 2
    -
    - -

    Nr. of Data sections.

    - -
    -
    - -

    ◆ kXmpSpaceStep

    - -
    -
    - - - - -
    const uint16_t kXmpSpaceStep = 135
    -
    - -

    uSeconds

    - -
    -
    - -

    ◆ kXmpWordSize

    - -
    -
    - - - - -
    const uint8_t kXmpWordSize = kNibbleSize
    -
    - -

    nr. of Bits in a word.

    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Zepeal_8cpp.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Zepeal_8cpp.html deleted file mode 100644 index a28b6cdcd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/ir__Zepeal_8cpp.html +++ /dev/null @@ -1,333 +0,0 @@ - - - - - - - -IRremoteESP8266: src/ir_Zepeal.cpp File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    ir_Zepeal.cpp File Reference
    -
    -
    - -

    Support for Zepeal protocol. This protocol uses fixed length bit encoding. Most official information about Zepeal seems to be from Denkyosha. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Variables

    const uint16_t kZepealHdrMark = 2330
     
    const uint16_t kZepealHdrSpace = 3380
     
    const uint16_t kZepealOneMark = 1300
     
    const uint16_t kZepealZeroMark = 420
     
    const uint16_t kZepealOneSpace = kZepealZeroMark
     
    const uint16_t kZepealZeroSpace = kZepealOneMark
     
    const uint16_t kZepealFooterMark = 420
     
    const uint16_t kZepealGap = 6750
     
    const uint8_t kZepealTolerance = 40
     
    const uint8_t kZepealSignature = 0x6C
     
    const uint16_t kZepealCommandSpeed = 0x6C82
     
    const uint16_t kZepealCommandOffOn = 0x6C81
     
    const uint16_t kZepealCommandRhythm = 0x6C84
     
    const uint16_t kZepealCommandOffTimer = 0x6C88
     
    const uint16_t kZepealCommandOnTimer = 0x6CC3
     
    -

    Detailed Description

    -

    Support for Zepeal protocol. This protocol uses fixed length bit encoding. Most official information about Zepeal seems to be from Denkyosha.

    -
    See also
    https://www.denkyosha.co.jp/
    -

    Variable Documentation

    - -

    ◆ kZepealCommandOffOn

    - -
    -
    - - - - -
    const uint16_t kZepealCommandOffOn = 0x6C81
    -
    - -
    -
    - -

    ◆ kZepealCommandOffTimer

    - -
    -
    - - - - -
    const uint16_t kZepealCommandOffTimer = 0x6C88
    -
    - -
    -
    - -

    ◆ kZepealCommandOnTimer

    - -
    -
    - - - - -
    const uint16_t kZepealCommandOnTimer = 0x6CC3
    -
    - -
    -
    - -

    ◆ kZepealCommandRhythm

    - -
    -
    - - - - -
    const uint16_t kZepealCommandRhythm = 0x6C84
    -
    - -
    -
    - -

    ◆ kZepealCommandSpeed

    - -
    -
    - - - - -
    const uint16_t kZepealCommandSpeed = 0x6C82
    -
    - -
    -
    - -

    ◆ kZepealFooterMark

    - -
    -
    - - - - -
    const uint16_t kZepealFooterMark = 420
    -
    - -
    -
    - -

    ◆ kZepealGap

    - -
    -
    - - - - -
    const uint16_t kZepealGap = 6750
    -
    - -
    -
    - -

    ◆ kZepealHdrMark

    - -
    -
    - - - - -
    const uint16_t kZepealHdrMark = 2330
    -
    - -
    -
    - -

    ◆ kZepealHdrSpace

    - -
    -
    - - - - -
    const uint16_t kZepealHdrSpace = 3380
    -
    - -
    -
    - -

    ◆ kZepealOneMark

    - -
    -
    - - - - -
    const uint16_t kZepealOneMark = 1300
    -
    - -
    -
    - -

    ◆ kZepealOneSpace

    - -
    -
    - - - - -
    const uint16_t kZepealOneSpace = kZepealZeroMark
    -
    - -
    -
    - -

    ◆ kZepealSignature

    - -
    -
    - - - - -
    const uint8_t kZepealSignature = 0x6C
    -
    - -
    -
    - -

    ◆ kZepealTolerance

    - -
    -
    - - - - -
    const uint8_t kZepealTolerance = 40
    -
    - -
    -
    - -

    ◆ kZepealZeroMark

    - -
    -
    - - - - -
    const uint16_t kZepealZeroMark = 420
    -
    - -
    -
    - -

    ◆ kZepealZeroSpace

    - -
    -
    - - - - -
    const uint16_t kZepealZeroSpace = kZepealOneMark
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h.html deleted file mode 100644 index 8bd3af9fa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/it-IT.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    it-IT.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h_source.html deleted file mode 100644 index 4b554dec9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/it-IT_8h_source.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/it-IT.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    it-IT.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 - Enrico Gueli (@egueli)
    -
    2 // Locale/language file for Italian.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 
    -
    5 #ifndef LOCALE_IT_IT_H_
    -
    6 #define LOCALE_IT_IT_H_
    -
    7 
    -
    8 #define D_STR_UNKNOWN "SCONOSCIUTO"
    -
    9 #define D_STR_PROTOCOL "Protocollo"
    -
    10 #define D_STR_POWER "Accensione"
    -
    11 #define D_STR_PREVIOUS "Precedente"
    -
    12 #define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
    -
    13 #define D_STR_ON "Acceso"
    -
    14 #define D_STR_OFF "Spento"
    -
    15 #define D_STR_MODE "Modalità"
    -
    16 #define D_STR_TOGGLE "Alterna"
    -
    17 #define D_STR_SLEEP "Sonno"
    -
    18 #define D_STR_LIGHT "Leggero"
    -
    19 #define D_STR_POWERFUL "Forte"
    -
    20 #define D_STR_QUIET "Silenzioso"
    -
    21 #define D_STR_ECONO "Eco"
    -
    22 #define D_STR_SWING "Swing"
    -
    23 #define D_STR_SWINGH D_STR_SWING"(O)" // Set `D_STR_SWING` first!
    -
    24 #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
    -
    25 #define D_STR_MOULD "Muffa"
    -
    26 #define D_STR_CLEAN "Pulizia"
    -
    27 #define D_STR_PURIFY "Purifica"
    -
    28 #define D_STR_TIMER "Timer"
    -
    29 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
    -
    30 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
    -
    31 #define D_STR_CLOCK "Orologio"
    -
    32 #define D_STR_COMMAND "Comando"
    -
    33 #define D_STR_MODEL "Modello"
    -
    34 #define D_STR_TEMP "Temp"
    -
    35 #define D_STR_HUMID "Umido"
    -
    36 #define D_STR_SAVE "Salva"
    -
    37 #define D_STR_EYE "Occhio"
    -
    38 #define D_STR_FOLLOW "Segui"
    -
    39 #define D_STR_ION "Ioni"
    -
    40 #define D_STR_FRESH "Fresco"
    -
    41 #define D_STR_HOLD "Mantieni"
    -
    42 #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
    -
    43 #define D_STR_BUTTON "Pulsante"
    -
    44 #define D_STR_NIGHT "Notte"
    -
    45 #define D_STR_SILENT "Silenzioso"
    -
    46 #define D_STR_FILTER "Filtro"
    -
    47 #define D_STR_UP "Su"
    -
    48 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
    -
    49 #define D_STR_DOWN "Giù"
    -
    50 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
    -
    51 #define D_STR_CHANGE "Cambia"
    -
    52 #define D_STR_START "Avvia"
    -
    53 #define D_STR_STOP "Ferma"
    -
    54 #define D_STR_MOVE "Muovi"
    -
    55 #define D_STR_SET "Imposta"
    -
    56 #define D_STR_CANCEL "Annulla"
    -
    57 #define D_STR_SENSOR "Sensore"
    -
    58 #define D_STR_WEEKLY "Settimanale"
    -
    59 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
    -
    60 #define D_STR_LAST "Ultimo"
    -
    61 #define D_STR_FAST "Veloce"
    -
    62 #define D_STR_SLOW "Lento"
    -
    63 #define D_STR_AIRFLOW "Flusso d'aria"
    -
    64 #define D_STR_STEP "Passo"
    -
    65 #define D_STR_NA "N/D"
    -
    66 #define D_STR_OUTSIDE "Esterno"
    -
    67 #define D_STR_LOUD "Rumoroso"
    -
    68 #define D_STR_UPPER "Superiore"
    -
    69 #define D_STR_LOWER "Inferiore"
    -
    70 #define D_STR_CIRCULATE "Circolare"
    -
    71 #define D_STR_CEILING "Soffitto"
    -
    72 #define D_STR_WALL "Muro"
    -
    73 #define D_STR_ROOM "Camera"
    -
    74 #define D_STR_FIXED "Fisso"
    -
    75 
    -
    76 #define D_STR_AUTO "Auto"
    -
    77 #define D_STR_AUTOMATIC "Automatico"
    -
    78 #define D_STR_MANUAL "Manuale"
    -
    79 #define D_STR_COOL "Fresco"
    -
    80 #define D_STR_HEAT "Caldo"
    -
    81 #define D_STR_FAN "Ventola"
    -
    82 #define D_STR_FANONLY "solo_ventola"
    -
    83 #define D_STR_DRY "Secco"
    -
    84 
    -
    85 #define D_STR_MAX "Max"
    -
    86 #define D_STR_MAXIMUM "Massimo"
    -
    87 #define D_STR_MINIMUM "Minimo"
    -
    88 #define D_STR_MEDIUM "Medio"
    -
    89 
    -
    90 #define D_STR_HIGHEST "Molto alto"
    -
    91 #define D_STR_HIGH "Alto"
    -
    92 #define D_STR_MID "Med"
    -
    93 #define D_STR_MIDDLE "Medio"
    -
    94 #define D_STR_LOW "Basso"
    -
    95 #define D_STR_LOWEST "Bassissimo"
    -
    96 #define D_STR_RIGHT "Destra"
    -
    97 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
    -
    98 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
    -
    99 #define D_STR_LEFT "Sinistra"
    -
    100 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
    -
    101 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
    -
    102 #define D_STR_WIDE "Largo"
    -
    103 #define D_STR_CENTRE "Centro"
    -
    104 #define D_STR_TOP "Superiore"
    -
    105 #define D_STR_BOTTOM "Inferiore"
    -
    106 // Compound words/phrases/descriptions from pre-defined words.
    -
    107 // Note: Obviously these need to be defined *after* their component words.
    -
    108 
    -
    109 #define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
    -
    110 #define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
    -
    111 #define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
    -
    112 #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
    -
    113 #define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
    -
    114 #define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
    -
    115 #define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
    -
    116 #define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
    -
    117 // Separators
    -
    118 #ifndef D_CHR_TIME_SEP
    -
    119 #define D_CHR_TIME_SEP '.'
    -
    120 #endif // D_CHR_TIME_SEP
    -
    121 
    -
    122 #define D_STR_SPACELBRACE " ("
    -
    123 #define D_STR_COMMASPACE ", "
    -
    124 #define D_STR_COLONSPACE ": "
    -
    125 
    -
    126 #define D_STR_DAY "Giorno"
    -
    127 #define D_STR_DAYS D_STR_DAY "s"
    -
    128 #define D_STR_HOUR "Ore"
    -
    129 #define D_STR_HOURS D_STR_HOUR "s"
    -
    130 #define D_STR_MINUTE "Minuti"
    -
    131 #define D_STR_MINUTES D_STR_MINUTE "s"
    -
    132 #define D_STR_SECOND "Secondi"
    -
    133 #define D_STR_SECONDS D_STR_SECOND "s"
    -
    134 #define D_STR_NOW "Adesso"
    -
    135 #define D_STR_THREELETTERDAYS "DomLunMarMerGioVenSab"
    -
    136 
    -
    137 #define D_STR_YES "Sì"
    -
    138 #define D_STR_TRUE "Vero"
    -
    139 #define D_STR_FALSE "Falso"
    -
    140 
    -
    141 #define D_STR_REPEAT "Ripeti"
    -
    142 #define D_STR_CODE "Codice"
    -
    143 #define D_STR_BITS "Bit"
    -
    144 
    -
    145 // IRrecvDumpV2+
    -
    146 #define D_STR_LIBRARY "Libreria"
    -
    147 #define D_STR_MESGDESC "Desc. Mess."
    -
    148 #define D_STR_IRRECVDUMP_STARTUP \
    -
    149  "IRrecvDump è ora attivo e in attesa di segnali IR dal pin %d"
    -
    150 
    -
    151 #ifndef D_WARN_BUFFERFULL
    -
    152 #define D_WARN_BUFFERFULL \
    -
    153  "ATTENZIONE: il codice IR è troppo grande per il buffer (>= %d). " \
    -
    154  "Non fare affidamento a questi risultati finché questo problema " \
    -
    155  "non è risolto." \
    -
    156  "Modifica e aumenta `kCaptureBufferSize`."
    -
    157 #endif // D_WARN_BUFFERFULL
    -
    158 
    -
    159 #endif // LOCALE_IT_IT_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/jquery.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/jquery.js deleted file mode 100644 index 103c32d79..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/md_src_locale_README.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/md_src_locale_README.html deleted file mode 100644 index 2289f61b3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/md_src_locale_README.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -IRremoteESP8266: Internationalisation (I18N) & Locale Files - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Internationalisation (I18N) & Locale Files
    -
    -
    -

    This directory contains the files used by the library to store the text it uses. If you want to add support for a language, this is the correct place. If you are adding text strings to a routine, you should use the ones here.

    -

    -Changing the language/locale used by the library.

    -

    There are several ways to change which locale file is used by the library. Use which ever one suits your needs best. To keep the space used by the library to a minimum, all methods require the change to happen at compile time. There is no runtime option to change locales.

    -

    -Change <tt>_IR_LOCALE_</tt> in the <tt>src/IRremoteESP8266.h</tt> file.

    -

    In the IRremoteESP8266.h file, find and locate the lines that look like:

    {c++}
    -
    #ifndef _IR_LOCALE_
    -
    #define _IR_LOCALE_ en-AU
    -
    #endif // _IR_LOCALE_
    -

    Change en-AU to the language & country that best suits your needs. e.g. de-DE for Germany/German.

    -

    -Use a compile-time build flag.

    -

    Use the compiler flag: -D_IR_LOCALE_=en-AU when compiling the library. Especially when compiling the IRtext.cpp file. Change en-AU to a value which matches one of the file names in this directory. e.g. de-DE for Germany/German, which will use the de_DE.h file.

    -

    -Use the appropriate pre-prepared build environment. _(PlatformIO only)_

    -

    If you examine the platformio.ini file located in the same directory as the example code you may find pre-setup compile environments for the different supported locales. Choose the appropriate one for you language by asking PlatformIO to build or upload using that environment. e.g. See IRrecvDumpV2's platformio.ini

    -

    -Use a custom <tt>build_flags</tt>. _(PlatformIO only)_

    -

    Edit the platformio.ini file in the directory containing your example/source code. Either in the default PlatformIO environment ([env]), or in which ever PlatformIO environment you using, change or add the following line:

    build_flags = -D_IR_LOCALE_=en-AU ; Or use which ever locale variable you want.
    -

    Every time you change that line, you should do a pio clean or choose the clean option from the build menu, to ensure a fresh copy of IRtext.o is created.

    -

    -Adding support for a new locale/language.

    -

    Only ASCII/UTF-8 8-bit characters are supported. Unicode is not supported. Unicode may work. It may not. It's just not supported. i.e. If Arduino's Serial.print() can handle it, it will probably work.

    -

    -Copy/create a new locale file in this directory.

    -

    Copy en-AU.h or which every is a closer fit for your language to xx-YY.h where xx is the ISO code for the language. e.g. en is English. de is German etc. and YY is the ISO country code. e.g. AU is Australia. Modify the comments and all LOCALE_EN_AU_H_s in the file to LOCALE_XX_YY_H_ for your locale.

    -

    -Override any <tt>#‍define</tt> values that reside in <tt>defaults.h</tt>

    -

    Go through the defaults.h file, and find any #‍define lines that define a macro starting with D_ that has text that needs to change for your locale. Copy or create a corresponding #‍define D_STR_HELLOWORLD "Hello World" in your xx-YY.h file, and translate the text appropriately e.g. #‍define D_STR_HELLOWORLD "Bonjour le monde" (French)

    -

    Any values you #‍define in xx-YY.h will override the corresponding value in the defaults.h file.

    -

    -Supporting a dialect/regional variant of another <em>existing</em> language/locale.

    -

    Similar to the previous step, if you only need to modify a small subset of the strings used in another locale file, then include the other locale file and then make sure to #‍undef any strings that need to be (re-)changed. See the Swiss-German for an example of how to do this. i.e. It #‍include "locale/de-DE.h"s the German locale, and redefines any strings that are not standard German.

    -

    -Adding new text strings to the library.

    -

    If you need to add an entirely new string to the library to support some feature etc. e.g. _"Widget"_. You should first understand how the library tries to do this such that it is easy to support different languages for it.

    -
      -
    1. Use a constant named kWidgetStr in the appropriate statement in the .cpp file.
    2. -
    3. Edit IRtext.cpp, and add the appropriate line for your new constant. e.g.
      {c++}
      -
      String kWidgetStr = D_STR_WIDGET;
      -
    4. -
    -

    The kWidgetStr variable will house the sole copy of the string for the entire library. This limits any duplication. The D_STR_WIDGET macro will be what is targeted by the different language / locales files.

    -
      -
    1. Edit locale/defaults.h, and add the appropriate stanza for your new string. e.g.
      {c++}
      -
      #ifndef D_STR_WIDGET
      -
      #define D_STR_WIDGET "Turbo"
      -
      #endif // D_STR_WIDGET
      -
    2. -
    3. _(Manual)_ Update IRtext.h, and add the appropriate line for your new constant. e.g.
      {c++}
      -
      extern const String kWidgetStr;
      -
    4. -
    -

    For any file that #‍include <IRtext.h>s this file, it will tell it that the string is stored elsewhere, and to look for it elsewhere at the object linking stage of the build. This is what makes the string be referenced from a central location.

    -
      -
    1. _(Automatic)_ Run tools/generate_irtext_h.sh to update IRtext.h. In the src/locale directory. Run the ../../tools/generate_irtext_h.sh command. It will update the file for you automatically.
    2. -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menu.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menu.js deleted file mode 100644 index 433c15b8f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - 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 2 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, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('

    @9o#yr8TsVP_|ZPN!?C z=hf3x0z*PW0ed3+3Jy^f74oZ}USfb4e9X(+TLoB#xVX50k~<_JAwj{VIbGy(h=c77 zPfu}BQZFyB=QY*UN`Ub9D}Q1zJv%h&(CRKQe&S9IZrj__(-X?Y)!ox`99+QYA8t-- z7MGS<+t_rzOOY6zNYA?*%1YT-Tf>rabBSP_2@yCfEG$%1RY&*Cay0yD!;->q_$YbT zZIq;WFA;c_Dro+&urL{5LrZ;PS3G0WbK@HnxG4;=IB diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.map deleted file mode 100644 index 3645784fa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.md5 deleted file mode 100644 index e3456a566..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.md5 +++ /dev/null @@ -1 +0,0 @@ -83ea42707e2ee77465dee4ea484af824 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_24.png deleted file mode 100644 index 0fcecea6062c2d18a4527699ff99e746ab5a6e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1197 zcmV;e1XBBnP)R3EP%R=VC=uEjT|`JzBG3rhL@OuAh+0Hcbea0P5RqMIkviYvfPd4mzh9;`aDJ|KN~V01k--;E-4VFMQ(hc&4VNe##0agu!5_sHg}{ zKO9LEMLC_$lv~1l!0B{S6ct|KMT;B`N2>f_7=RE)RPZ&41>lfa01k--{N9jcGMUwC z{b?89hC-p3nVI?8W4}M7MBMy_{=bl~gj82o*Voqf`bwvtyl}ZI6Z(GSh*0Kn1FQG}qhv~+TE5{=RR zczJml(I4S*xwu?zghO_VyOPLzBq_AT@M5rzni_w6hC?1a|kx0EHeH{!2jYgy2?*{-#B$7ZNfcC*} z1novIFE1oX*4EaB>Y;DO^78Whe*eYA1)3foAERP~?N~BK+n@AIgye>lot?e6w}--b zdwUB8gBckaX=!OBNg9ntq!Ek7DwV3EqvPP63N8GgjTB+3WWxPp{c1U zB(qwr#l^)+rBW)DdcEG7nwmKK&&Iy zwOB0Cwm*?E+Kweoi115GoC^m`QUTw!aKNMz91;t_A+Z1)5(~f~u>c$r3&0_<0EVA* zEiEmj-UsFr7(!C3)v5P^`2 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.md5 deleted file mode 100644 index 460758cb6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.md5 +++ /dev/null @@ -1 +0,0 @@ -837256640d3f3621ef27c275e4df7d15 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_25.png deleted file mode 100644 index 9a44d57273a1a2cda40d6f2e0cda5c1b7755770c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1417 zcmV;41$O$0P)PvFx$tm)7vI|d{AXKZhECtt)%W{3?|sha zv-dgQbGEZVk|Y6!UfBJ10hsRxn@U5lsWb$eN<$o|leM+A_V)JQDh2apDk>_XqN4QE z|DCA>K}=0e{dh?jtC*UaA_#&Sarh{joSgirdNAJrgwP;@ucWK;y{B z$f2Pjs|x%8H9vwR$=KLf2;tV&7K$j9N|8w9;^N}vLeUJr}KYHn_Rcz9S_TLS=ax!jtXnz*<)CX+cnK7Mm^la-alX0zSh-E(tu zZ*OmnwrNyms!da3Yp~&&IzB$mB!7d3t&Z05~`}Fc5@=g|)S{p)ops&(F^d z@=K*sltio50suBQHw}_>cXzwFxg8!Jn%4`3LbUwqbh@&#GA5IGb#;YmKr0GKl1E2J z0D$A;V>I2_*#Q7tUS1lsX-a0aO*1*EZJGxFpin5NkuRR9=q=F0=kqOj)#T)4L_`FG z!GI7-B$D&3tyE}^e`1qg!K@biO4jc{#O#=b~P|zTcDVfnWEzJ2@ zY+9>x%*@)_TCG<5{{G(4(ee8F3IO16IB#!n=$QQ!8ja@S;)2a)LkK-Q zJOBXU;o((PRcLEtW1~zaTV7rc4-dCQj}Ftv$48Y)m5`92-;4g6Rc~+a*Vosxvokb3 zJUm1}gEmdcjJ9ber#0BtR1Xi2?d@%3-t+VG`}@0#i;JV9qe`XH->Ufd_#`JM=jZ3| z?d|Dwy1u@?+1Xi3l4oaU>z4}sa@yM33IM37sp;+QU0GQP4i2_NZwY>WelamIB_$&}1=jZ30ot*^&0f)nBX=%yK%w(}x6%`e! zsi}I|=;&xjNQh7<^z-vmtJU%G@z(70@$pe6lbxNN1qKG9PoGXsPFA-9000Vwg27;f zhKBNZJTEV=k&zJ;r?zQEX0%OHVymED8ZEq0!u%<~cikvq{xaB98iGxwA=p$Jf=#6% z*i;&VO{F15ej++CG4bL~|EaVCUsGuaHkF28Q)vh`m4^HS XJB_rQP@rtk00000NkvXXu0mjf`XsL# diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.map deleted file mode 100644 index 824f2ba18..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.md5 deleted file mode 100644 index 61a310dc0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.md5 +++ /dev/null @@ -1 +0,0 @@ -1d1626b9f12e6b834949d12f356ffcb5 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_26.png deleted file mode 100644 index 2488a9b225a411af9a035af88da3c8604f4c8e50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1140 zcmV-)1dIELP)g-UMbENc|4w<^7E&`Ff5~j&I}fT!e9|73>LxOFcb=f)9L(e z7oUb8h=qlPuU-57VdUe64gG(SuY{q|XoiP}(<=l)OiWC`F-ejG0|Ri}*x0zdyquT8 zEYkaHG#U)UFbw1K`OVGEySuxeYE=k(`M}<7>VufgW}2pNZfuBM=B?W@etAp8S4406?KojE;`Bwzl&5e3#1=jYhk>yM;ob zNF?g*?Y+OhXSByC%VjT@I3EhQGF&bfj^j&9OEgWBBnbfU`Fu1@zrMb%udlDHtgNoC zLZ#7YJUBSm+}sQXgE)@w?Cik0!{L~oo{mH!Jv}`}qw!N;y(}&+PEAccJUr<2`mV07 zSS)sUc(}j6Pf?W7Xk@gNz!VyLXAWs(Q38*{rx8=C$U(}Znyh< zzHjs(m&;pPT84&(!r?GQQ6`hAy}ey57H8PYC1bSrPS1QOY#1XWBU@WrTrQU&2&q&$ zJ3DJI7z6@=#bW8~>`cj=PG@axty-;?%jJPUpslU#du_PgZXSJaHU=b(`7V#f?W1S@QL&Z@50000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.md5 deleted file mode 100644 index 0d582a4be..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.md5 +++ /dev/null @@ -1 +0,0 @@ -91b56b36df4d5e06f27aa19a6435eaf2 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_27.png deleted file mode 100644 index 559fc0217e7185417012714eca5189f40e90ad54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmV;T0$u%yP)<)x#b{z+(IXiclnl~ylUXSi z0~t(6io_!mvyp{`y2DL~lG|ObLiu;z;VC`uz2576@gAw?GoAD8bbg;szw`8TAVLV- zA)H$aoC)iVmwWYoU{0FNW-J!FmCDcPbUMG^f0+Ju-sADOQmJ59I!&w9YBrn9^FoqC92>E>e^Ye3|P`IkzAGyMLlO%}{ z`uO;8yWLKwv)AigzUN7<)+c;E-|O{42)o@botR7}2qA~Vk;~=baQN`UJfF`=l9bEk zVzJoc@hldLTY4{-%VaVMA=GNMbW*F;5JH>HrdqA$a=Bu$NaqfRqtofs>-E84pwVa= zjmA0k5Q9>w^d&ip!C;_!gB~BY;_-O2>vs}~gw19{2#rP~0KnVZ+sP_S2!bF8f|*>c zzu({A&1Q2b6x!`}bWTx}TCElc1Q0@!Bqx&z0AM&Aa=BckQh8y~tM!RQB1xyy{eC}_ z$p8Rmvzgs)4+ewN>2$x}$K&zsb_)QI$z;3TuHWxpSnitNZ;?n82m~UL$a=kAtycT} z{_*jV$K$nHt#~|6uX%cUGMP*+m+STQ_4D&Hl}goWwHtc_0DL~*a=FZAvoe`18jafR zcA-${_xmjt%VAAEpI50=27^JNP_)}^yt<8 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.map deleted file mode 100644 index b629dbac8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.md5 deleted file mode 100644 index 8e722ece9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.md5 +++ /dev/null @@ -1 +0,0 @@ -b0065efa5bef64d3e2da91bb9ee1e68d \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_28.png deleted file mode 100644 index 030bb5c2bf0accca4b0477c583e1aeac78c7598d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1301 zcmV+w1?u{VP)t&MnYdIJPuM9Ms(uQHv~s%toDT5wpla2b9L=UG%;~<2WC_I8GPN z5ANc*&$;LP&-rscF5Ig`M9`Rl;f!=E&?JvG%S33iOoTSeL}abM;qiFr>FG&_7R?_F z4-ZG(i<((JpO5FypKpsGO*G%WeTzB%Q8Vj5HgZ;zdR#6SSFT*yFsJt{6QRvA5!x&h zq0Rb(vuDrZbUI_k>E^FC>u(#Zbh9O9UAS<8uCA_#SSf{4ikzGrPM$o;vuDpXe73v0 z8>JKj0|QaHSFc`i{rdH-khrD9)0|3DHnZ$@J0gPL@29P;jppWNK79BPQD$vz4Z|?F zcI_Gtha*)|wv=>gPWdvJlaoV7M+ZtNrlzJMa-*Z8?B2bb-riokUT>6{>zBdPr%!Y1 z)-9}7D?4}Y({Tz%gf`}uU`NxEiGZU+bJq4B0oQ$ zhK2^_=H@olpG2AifdF>9ox_I@vuoEb+S}V%US8f*8?i{aS;1hCM~@z%l%l-6JR;|C zIJj}+1{RBjj*brc`uY;q_xSN+?%lh`&!0c(>+9pomoLoE&ja9gyE%637;d*a99ykc zva)`^`!_c?Gd(@c|*)aU#ugb8`a7^z`(m#_vz!jK3@8d)AL1KWJ=h zdAQ8ylmhriKFt z4p2}~z=H=5*t2I3Cr+FIps1*bjEoHYet$%pB0^(hW5RwUqq(@am{2Ih%*@RH8LEVA z%X?OSem*yE-sJAxyR5FR^77?N07^?sBg$1*S2Hy=6?G7aM^#l7fk1%4!NKq>ve|6h zzkfd*!|xe+@!~~VT3Y!0`7^;_kT-AM(A3n#%F0T@c9PLtSXf9yLj$d?t$h0QiN(c5 z`uqDC85v2sKk?YMm*UROPJ+Q8Po6x%;c!q_R~J>rVzF@k{P|5CiLgw3Pe?Og_owT&Hke!{Ku$^QzKYjX?va&L2Yil`j z - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.md5 deleted file mode 100644 index 7f14e3836..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.md5 +++ /dev/null @@ -1 +0,0 @@ -fd77e92eb539b07b298ba28c872ed33a \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_29.png deleted file mode 100644 index f6da0e6ffb0cda9e52d906c565b42d0a897bb3b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmV+{1k?M8P)#EGVjl zlqD^KR)Muk+7wt?5CvIAiwueuE+eprEFwy*E?G!KMj1$Ye~W?3eZKqrJ?CfrUi{{> znserO&hhKa+!2Kg!vI3!{PnvV_^uG)Fd@QWLWILaz%};w_swSW?`q|Lj?rkWuC8Xy zzpXf$rX3E)m$&o{a5x+^O>;ehe+I3uuYXlP-v$U_jE9_Ym=NJGA;Muogu{dghY5~w zjg5^%LqqHsLI@!g3WZ9ga%E*DCfH;$K?s+YmVUKUEIzM#5>}kSU|<;L@$s>@x3{yi z^YrwTor*@IHk+-dr^jNk{Cc58`PAx3+p0pLP_NfR2t6JT>)hSl&CbrAot^dhd|W{* zDk_XdV@*wsNF-7y6bAJPl zAP{J8Z_mxm&CAQ{>gsxWdSY{qjg8gT)~2VYudc4fsm_}=QIaNHC={BRnSl^iR#vi3 zi^VcLJWNrPUay~_qG&EdXT%4SoxZUopt*woX4HTo(>5h($ zwzs!^KA%dZa=BapfR>h)U@&-meC&3+X`0sQbZpLrg@wt<$>-q*)f z7YGEJo14eS$0Lyl^4n}Snx-j=f)M89dMlgT2H2wGw+5{cyF_8VoK>bz+&Naj5* zGc$8!WMpDuA{-9y?Cbyl6bc19t5&N$9uN1?5g(~k+SJt4-Q9hDejW@4=jZ30PN!Th zSF6=}z5f3Go~G%+!9lH7o1dQ_^V&GodDCLN*(6_p2L=X0q0r*uqQzp-YPH-cilXZ4 z>l3;eEH5vYm6d5U8o6A4cz9S>R|f#F+wCHeNU2n+RI0+lLf$)C{OY`E6NY=>{l|yH z9|-u2hr^!<5e^d~9416KOo(up5aBQ(!ePSm^WfUr+Sm8-?cfovwYBx@`}lT1hWtMc m3v$L`LWIMF2!{y~4wE0fWx}yS=X;+30000 - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.md5 deleted file mode 100644 index bd432404d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.md5 +++ /dev/null @@ -1 +0,0 @@ -da886ab7ca91beae36baa3524446269e \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_3.png deleted file mode 100644 index 574f96bfb74a4ec3d1eabe2b3128eb228e2d6810..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1328 zcmV-01<(44P)Q5d200006VoOIv0RI60 z0RN!9r;`8x1m#IYK~!jg?V4REyKflB?;H6=V-A@2c^ZlX#FUXHPWFO{ChbI$lw^vM zC?}k7U^$XTBrk1qpr$yq12)6~jq%eR_FD)&7`A9ztold9KYKfUJZ;?u+`l@+;BK7t49vNysARo#D@}WE+AIgJIgTvuW zPEH0<_$@pLdiwtdL3*&gyF85x#!_Y`5Ek9zv(nwY0PZRKn-;A%qaZ zsHmutk`j$Z6Hs|!Vd2coOh6@nk6=7lTU+CDxtW=no12?ft94;v!Dh3m)#^_l&Oe=< zoj8tLEEYDKEfR_D?(V*LfKLM_pin40GTyjcE)2uk+S+`sR#sL503d`Ih7Ar5x?C=l z&&$i}>+35kE2Gh9i;IgMVNp?$TrNk-r>7^WRLW#B>2!K!Wu?(*^x1*O;~@`l9DjLv zfewZ*L_MNnBhUgTZKQY`nj}$8o%&p}~FlMMXt8j{B71IBv7qq*5t{VKFf= zt*x!k&(D6u#G~+oSS%Kc#l%d&9_aOY0DxAj^`mh(9D93v85tS#^YiXAn2?aLv9aNB zIJ`sR^tH9M0)gQC{M=@y; z!!Q(PWMrVE$CJJ%Ga8Mdp`q#N=^qjMJR2V*U=OmhvoQ>to161qLT{7<0|VFB*DjY! zCX+cF4)-dAkSO*D5ou{@At51FtCe_}R99E~EJ3e>=jUggPFGP;;oUhkHPzv8m`o-V zo}QkfBmf{JT9+S<3bw?O+KSS%Ko z%WZFOzrMaUo6SVkx1xtdUbU*hG8QkBNB-uIy$ - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.md5 deleted file mode 100644 index a26a3b99a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.md5 +++ /dev/null @@ -1 +0,0 @@ -c57cc0030c7d3a9e44b4f20708a8d83f \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/inherit_graph_30.png deleted file mode 100644 index e44e05dd8d0b8a002cfad686446f623efa164b39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1161 zcmV;41a|w0P)p!jZ6Ti!RetzEB*~w%wK}mCS zbFZ(jUrnBYeiv`t1J9cDwQ&u&Aq+7Mx*iPHzM-8%npY`B9YY8 z)SRB4Mj{c5#S)9f_V)I^d;^St)oT3^A*HRY4QTPfP9~ED1qBw11s{2Ea8O@g|MvFA zX0u%`7ap&xtDBshY;JC*)9G7VTY*48E|(V-6$ypH#l=Mkg2Lf2hGCD7j~b1J#bT9} zm1(uw=jZ42nNz70kH_op@Bh~+d_bvGDwRrNBxCzaJRVk8jZ%`;b8

  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menudata.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menudata.js deleted file mode 100644 index e2ef9b24f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/menudata.js +++ /dev/null @@ -1,210 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -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, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Related Pages",url:"pages.html"}, -{text:"Namespaces",url:"namespaces.html",children:[ -{text:"Namespace List",url:"namespaces.html"}, -{text:"Namespace Members",url:"namespacemembers.html",children:[ -{text:"All",url:"namespacemembers.html",children:[ -{text:"a",url:"namespacemembers.html#index_a"}, -{text:"b",url:"namespacemembers.html#index_b"}, -{text:"c",url:"namespacemembers.html#index_c"}, -{text:"d",url:"namespacemembers.html#index_d"}, -{text:"f",url:"namespacemembers.html#index_f"}, -{text:"g",url:"namespacemembers.html#index_g"}, -{text:"h",url:"namespacemembers.html#index_h"}, -{text:"i",url:"namespacemembers.html#index_i"}, -{text:"l",url:"namespacemembers.html#index_l"}, -{text:"m",url:"namespacemembers.html#index_m"}, -{text:"o",url:"namespacemembers.html#index_o"}, -{text:"p",url:"namespacemembers.html#index_p"}, -{text:"r",url:"namespacemembers.html#index_r"}, -{text:"s",url:"namespacemembers.html#index_s"}, -{text:"u",url:"namespacemembers.html#index_u"}]}, -{text:"Functions",url:"namespacemembers_func.html",children:[ -{text:"a",url:"namespacemembers_func.html#index_a"}, -{text:"b",url:"namespacemembers_func.html#index_b"}, -{text:"c",url:"namespacemembers_func.html#index_c"}, -{text:"d",url:"namespacemembers_func.html#index_d"}, -{text:"g",url:"namespacemembers_func.html#index_g"}, -{text:"h",url:"namespacemembers_func.html#index_h"}, -{text:"i",url:"namespacemembers_func.html#index_i"}, -{text:"l",url:"namespacemembers_func.html#index_l"}, -{text:"m",url:"namespacemembers_func.html#index_m"}, -{text:"r",url:"namespacemembers_func.html#index_r"}, -{text:"s",url:"namespacemembers_func.html#index_s"}, -{text:"u",url:"namespacemembers_func.html#index_u"}]}, -{text:"Variables",url:"namespacemembers_vars.html"}, -{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, -{text:"Classes",url:"annotated.html",children:[ -{text:"Class List",url:"annotated.html"}, -{text:"Class Index",url:"classes.html"}, -{text:"Class Hierarchy",url:"inherits.html"}, -{text:"Class Members",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"_",url:"functions.html#index__5F"}, -{text:"a",url:"functions_a.html#index_a"}, -{text:"b",url:"functions_b.html#index_b"}, -{text:"c",url:"functions_c.html#index_c"}, -{text:"d",url:"functions_d.html#index_d"}, -{text:"e",url:"functions_e.html#index_e"}, -{text:"f",url:"functions_f.html#index_f"}, -{text:"g",url:"functions_g.html#index_g"}, -{text:"h",url:"functions_h.html#index_h"}, -{text:"i",url:"functions_i.html#index_i"}, -{text:"j",url:"functions_j.html#index_j"}, -{text:"k",url:"functions_k.html#index_k"}, -{text:"l",url:"functions_l.html#index_l"}, -{text:"m",url:"functions_m.html#index_m"}, -{text:"n",url:"functions_n.html#index_n"}, -{text:"o",url:"functions_o.html#index_o"}, -{text:"p",url:"functions_p.html#index_p"}, -{text:"q",url:"functions_q.html#index_q"}, -{text:"r",url:"functions_r.html#index_r"}, -{text:"s",url:"functions_s.html#index_s"}, -{text:"t",url:"functions_t.html#index_t"}, -{text:"u",url:"functions_u.html#index_u"}, -{text:"v",url:"functions_v.html#index_v"}, -{text:"w",url:"functions_w.html#index_w"}, -{text:"x",url:"functions_x.html#index_x"}, -{text:"z",url:"functions_z.html#index_z"}, -{text:"~",url:"functions_~.html#index__7E"}]}, -{text:"Functions",url:"functions_func.html",children:[ -{text:"_",url:"functions_func.html#index__5F"}, -{text:"a",url:"functions_func_a.html#index_a"}, -{text:"b",url:"functions_func_b.html#index_b"}, -{text:"c",url:"functions_func_c.html#index_c"}, -{text:"d",url:"functions_func_d.html#index_d"}, -{text:"e",url:"functions_func_e.html#index_e"}, -{text:"f",url:"functions_func_f.html#index_f"}, -{text:"g",url:"functions_func_g.html#index_g"}, -{text:"h",url:"functions_func_h.html#index_h"}, -{text:"i",url:"functions_func_i.html#index_i"}, -{text:"k",url:"functions_func_k.html#index_k"}, -{text:"l",url:"functions_func_l.html#index_l"}, -{text:"m",url:"functions_func_m.html#index_m"}, -{text:"n",url:"functions_func_n.html#index_n"}, -{text:"o",url:"functions_func_o.html#index_o"}, -{text:"p",url:"functions_func_p.html#index_p"}, -{text:"r",url:"functions_func_r.html#index_r"}, -{text:"s",url:"functions_func_s.html#index_s"}, -{text:"t",url:"functions_func_t.html#index_t"}, -{text:"u",url:"functions_func_u.html#index_u"}, -{text:"v",url:"functions_func_v.html#index_v"}, -{text:"w",url:"functions_func_w.html#index_w"}, -{text:"~",url:"functions_func_~.html#index__7E"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"_",url:"functions_vars.html#index__5F"}, -{text:"a",url:"functions_vars_a.html#index_a"}, -{text:"b",url:"functions_vars_b.html#index_b"}, -{text:"c",url:"functions_vars_c.html#index_c"}, -{text:"d",url:"functions_vars_d.html#index_d"}, -{text:"e",url:"functions_vars_e.html#index_e"}, -{text:"f",url:"functions_vars_f.html#index_f"}, -{text:"h",url:"functions_vars_h.html#index_h"}, -{text:"i",url:"functions_vars_i.html#index_i"}, -{text:"j",url:"functions_vars_j.html#index_j"}, -{text:"l",url:"functions_vars_l.html#index_l"}, -{text:"m",url:"functions_vars_m.html#index_m"}, -{text:"n",url:"functions_vars_n.html#index_n"}, -{text:"o",url:"functions_vars_o.html#index_o"}, -{text:"p",url:"functions_vars_p.html#index_p"}, -{text:"q",url:"functions_vars_q.html#index_q"}, -{text:"r",url:"functions_vars_r.html#index_r"}, -{text:"s",url:"functions_vars_s.html#index_s"}, -{text:"t",url:"functions_vars_t.html#index_t"}, -{text:"u",url:"functions_vars_u.html#index_u"}, -{text:"v",url:"functions_vars_v.html#index_v"}, -{text:"w",url:"functions_vars_w.html#index_w"}, -{text:"x",url:"functions_vars_x.html#index_x"}, -{text:"z",url:"functions_vars_z.html#index_z"}]}, -{text:"Related Functions",url:"functions_rela.html"}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"File Members",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"_",url:"globals.html#index__5F"}, -{text:"a",url:"globals_a.html#index_a"}, -{text:"c",url:"globals_c.html#index_c"}, -{text:"d",url:"globals_d.html#index_d"}, -{text:"e",url:"globals_e.html#index_e"}, -{text:"f",url:"globals_f.html#index_f"}, -{text:"g",url:"globals_g.html#index_g"}, -{text:"h",url:"globals_h.html#index_h"}, -{text:"i",url:"globals_i.html#index_i"}, -{text:"j",url:"globals_j.html#index_j"}, -{text:"k",url:"globals_k.html#index_k"}, -{text:"l",url:"globals_l.html#index_l"}, -{text:"m",url:"globals_m.html#index_m"}, -{text:"n",url:"globals_n.html#index_n"}, -{text:"p",url:"globals_p.html#index_p"}, -{text:"r",url:"globals_r.html#index_r"}, -{text:"s",url:"globals_s.html#index_s"}, -{text:"t",url:"globals_t.html#index_t"}, -{text:"u",url:"globals_u.html#index_u"}, -{text:"v",url:"globals_v.html#index_v"}, -{text:"w",url:"globals_w.html#index_w"}, -{text:"x",url:"globals_x.html#index_x"}, -{text:"y",url:"globals_y.html#index_y"}, -{text:"z",url:"globals_z.html#index_z"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"c",url:"globals_func.html#index_c"}, -{text:"f",url:"globals_func.html#index_f"}, -{text:"g",url:"globals_func.html#index_g"}, -{text:"h",url:"globals_func.html#index_h"}, -{text:"i",url:"globals_func.html#index_i"}, -{text:"r",url:"globals_func.html#index_r"}, -{text:"s",url:"globals_func.html#index_s"}, -{text:"t",url:"globals_func.html#index_t"}, -{text:"u",url:"globals_func.html#index_u"}, -{text:"x",url:"globals_func.html#index_x"}]}, -{text:"Variables",url:"globals_vars.html",children:[ -{text:"_",url:"globals_vars.html#index__5F"}, -{text:"k",url:"globals_vars_k.html#index_k"}]}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Enumerations",url:"globals_enum.html"}, -{text:"Enumerator",url:"globals_eval.html",children:[ -{text:"a",url:"globals_eval.html#index_a"}, -{text:"c",url:"globals_eval.html#index_c"}, -{text:"d",url:"globals_eval.html#index_d"}, -{text:"e",url:"globals_eval.html#index_e"}, -{text:"f",url:"globals_eval.html#index_f"}, -{text:"g",url:"globals_eval.html#index_g"}, -{text:"h",url:"globals_eval.html#index_h"}, -{text:"i",url:"globals_eval.html#index_i"}, -{text:"j",url:"globals_eval.html#index_j"}, -{text:"k",url:"globals_eval.html#index_k"}, -{text:"l",url:"globals_eval.html#index_l"}, -{text:"m",url:"globals_eval.html#index_m"}, -{text:"n",url:"globals_eval.html#index_n"}, -{text:"p",url:"globals_eval.html#index_p"}, -{text:"r",url:"globals_eval.html#index_r"}, -{text:"s",url:"globals_eval.html#index_s"}, -{text:"t",url:"globals_eval.html#index_t"}, -{text:"u",url:"globals_eval.html#index_u"}, -{text:"v",url:"globals_eval.html#index_v"}, -{text:"w",url:"globals_eval.html#index_w"}, -{text:"x",url:"globals_eval.html#index_x"}, -{text:"y",url:"globals_eval.html#index_y"}, -{text:"z",url:"globals_eval.html#index_z"}]}]}]}]} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRAcUtils.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRAcUtils.html deleted file mode 100644 index e633a29ed..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRAcUtils.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - -IRremoteESP8266: IRAcUtils Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    IRAcUtils Namespace Reference
    -
    -
    - -

    Common functions for use with all A/Cs supported by the IRac class. -More...

    - - - - - - - - -

    -Functions

    String resultAcToString (const decode_results *const result)
     Display the human readable state of an A/C message if we can. More...
     
    bool decodeToState (const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
     Convert a valid IR A/C remote message that we understand enough into a Common A/C state. More...
     
    -

    Detailed Description

    -

    Common functions for use with all A/Cs supported by the IRac class.

    -

    Function Documentation

    - -

    ◆ decodeToState()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool IRAcUtils::decodeToState (const decode_resultsdecode,
    stdAc::state_tresult,
    const stdAc::state_tprev 
    )
    -
    - -

    Convert a valid IR A/C remote message that we understand enough into a Common A/C state.

    -
    Parameters
    - - - - -
    [in]decodeA PTR to a successful raw IR decode object.
    [in]resultA PTR to a state structure to store the result in.
    [in]prevA PTR to a state structure which has the prev. state.
    -
    -
    -
    Returns
    A boolean indicating success or failure.
    - -
    -
    - -

    ◆ resultAcToString()

    - -
    -
    - - - - - - - - -
    String IRAcUtils::resultAcToString (const decode_results *const result)
    -
    - -

    Display the human readable state of an A/C message if we can.

    -
    Parameters
    - - -
    [in]resultA Ptr to the captured decode_results that contains an A/C mesg.
    -
    -
    -
    Returns
    A string with the human description of the A/C message. An empty string if we can't.
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRXmpUtils.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRXmpUtils.html deleted file mode 100644 index 0bbf4b203..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceIRXmpUtils.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - -IRremoteESP8266: IRXmpUtils Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    IRXmpUtils Namespace Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - -

    -Functions

    uint8_t getSectionChecksum (const uint32_t data, const uint16_t nbits)
     Get the current checksum value from an XMP data section. More...
     
    uint8_t calcSectionChecksum (const uint32_t data, const uint16_t nbits)
     Calculate the correct checksum value for an XMP data section. More...
     
    uint64_t updateChecksums (const uint64_t data, const uint16_t nbits)
     Recalculate a XMP message code ensuring it has the checksums valid. More...
     
    uint16_t calcRepeatOffset (const uint16_t nbits)
     Calculate the bit offset the repeat nibble in an XMP code. More...
     
    bool isRepeat (const uint64_t data, const uint16_t nbits)
     Test if an XMP message code is a repeat or not. More...
     
    uint64_t adjustRepeat (const uint64_t data, const uint16_t nbits, const uint8_t repeat_code)
     Adjust an XMP message code to make it a valid repeat or non-repeat code. More...
     
    -

    Function Documentation

    - -

    ◆ adjustRepeat()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint64_t IRXmpUtils::adjustRepeat (const uint64_t data,
    const uint16_t nbits,
    const uint8_t repeat_code 
    )
    -
    - -

    Adjust an XMP message code to make it a valid repeat or non-repeat code.

    -
    Parameters
    - - - - -
    [in]dataThe value of the XMP message code.
    [in]nbitsThe number of data bits in the entire message code.
    [in]repeat_codeThe value of the XMP repeat nibble to use. A value of 8 is the normal value for a repeat. 9 has also been seen. A value of 0 will convert the code to a non-repeat code.
    -
    -
    -
    Returns
    The valud of the modified XMP code.
    - -
    -
    - -

    ◆ calcRepeatOffset()

    - -
    -
    - - - - - - - - -
    uint16_t IRXmpUtils::calcRepeatOffset (const uint16_t nbits)
    -
    - -

    Calculate the bit offset the repeat nibble in an XMP code.

    -
    Parameters
    - - -
    [in]nbitsThe number of data bits in the entire message code.
    -
    -
    -
    Returns
    The offset to the start of the XMP repeat nibble.
    - -
    -
    - -

    ◆ calcSectionChecksum()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRXmpUtils::calcSectionChecksum (const uint32_t data,
    const uint16_t nbits 
    )
    -
    - -

    Calculate the correct checksum value for an XMP data section.

    -
    Parameters
    - - - -
    [in]dataThe value of the data section.
    [in]nbitsThe number of data bits in the section.
    -
    -
    -
    Returns
    The value of the correct checksum.
    - -
    -
    - -

    ◆ getSectionChecksum()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint8_t IRXmpUtils::getSectionChecksum (const uint32_t data,
    const uint16_t nbits 
    )
    -
    - -

    Get the current checksum value from an XMP data section.

    -
    Parameters
    - - - -
    [in]dataThe value of the data section.
    [in]nbitsThe number of data bits in the section.
    -
    -
    -
    Returns
    The value of the stored checksum.
    -
    Warning
    Returns 0 if we can't obtain a valid checksum.
    - -
    -
    - -

    ◆ isRepeat()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool IRXmpUtils::isRepeat (const uint64_t data,
    const uint16_t nbits 
    )
    -
    - -

    Test if an XMP message code is a repeat or not.

    -
    Parameters
    - - - -
    [in]dataThe value of the XMP message code.
    [in]nbitsThe number of data bits in the entire message code.
    -
    -
    -
    Returns
    true, if it looks like a repeat, false if not.
    - -
    -
    - -

    ◆ updateChecksums()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint64_t IRXmpUtils::updateChecksums (const uint64_t data,
    const uint16_t nbits 
    )
    -
    - -

    Recalculate a XMP message code ensuring it has the checksums valid.

    -
    Parameters
    - - - -
    [in]dataThe value of the XMP message code.
    [in]nbitsThe number of data bits in the entire message code.
    -
    -
    -
    Returns
    The corrected XMP message with valid checksum sections.
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespace__IRrecv.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespace__IRrecv.html deleted file mode 100644 index 88eb2798b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespace__IRrecv.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -IRremoteESP8266: _IRrecv Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    _IRrecv Namespace Reference
    -
    -
    - - - - - - - - -

    -Variables

    portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED
     
    volatile irparams_t params
     
    irparams_tparams_save
     
    -

    Variable Documentation

    - -

    ◆ mux

    - -
    -
    - - - - -
    portMUX_TYPE _IRrecv::mux = portMUX_INITIALIZER_UNLOCKED
    -
    - -
    -
    - -

    ◆ params

    - -
    -
    - - - - -
    volatile irparams_t _IRrecv::params
    -
    - -
    -
    - -

    ◆ params_save

    - -
    -
    - - - - -
    irparams_t* _IRrecv::params_save
    -
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceirutils.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceirutils.html deleted file mode 100644 index 345907f29..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaceirutils.html +++ /dev/null @@ -1,1743 +0,0 @@ - - - - - - - -IRremoteESP8266: irutils Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    irutils Namespace Reference
    -
    -
    - -

    Namespace for covering common functions & procedures for advancd protocol handlers. -More...

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    String addLabeledString (const String value, const String label, const bool precomma)
     Create a String with a colon separated "label: value" pair suitable for Humans. More...
     
    String addBoolToString (const bool value, const String label, const bool precomma)
     Create a String with a colon separated flag suitable for Humans. e.g. "Power: On". More...
     
    String addIntToString (const uint16_t value, const String label, const bool precomma)
     Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
     
    String addSignedIntToString (const int16_t value, const String label, const bool precomma)
     Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23". More...
     
    String modelToStr (const decode_type_t protocol, const int16_t model)
     Generate the model string for a given Protocol/Model pair. More...
     
    String addModelToString (const decode_type_t protocol, const int16_t model, const bool precomma)
     Create a String of human output for a given protocol model number. e.g. "Model: JKE". More...
     
    String addTempToString (const uint16_t degrees, const bool celsius, const bool precomma)
     Create a String of human output for a given temperature. e.g. "Temp: 25C". More...
     
    String addTempFloatToString (const float degrees, const bool celsius, const bool precomma)
     Create a String of human output for a given temperature. e.g. "Temp: 25.5C". More...
     
    String addModeToString (const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan)
     Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)". More...
     
    String addDayToString (const uint8_t day_of_week, const int8_t offset, const bool precomma)
     Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)". More...
     
    String addFanToString (const uint8_t speed, const uint8_t high, const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum)
     Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)". More...
     
    String addSwingHToString (const uint8_t position, const uint8_t automatic, const uint8_t maxleft, const uint8_t left, const uint8_t middle, const uint8_t right, const uint8_t maxright, const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide)
     Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)". More...
     
    String addSwingVToString (const uint8_t position, const uint8_t automatic, const uint8_t highest, const uint8_t high, const uint8_t uppermiddle, const uint8_t middle, const uint8_t lowermiddle, const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate)
     Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)". More...
     
    String htmlEscape (const String unescaped)
     Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS. More...
     
    String msToString (uint32_t const msecs)
     Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds". More...
     
    String minsToString (const uint16_t mins)
     Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59". More...
     
    uint8_t sumNibbles (const uint8_t *const start, const uint16_t length, const uint8_t init)
     Sum all the nibbles together in a series of bytes. More...
     
    uint8_t sumNibbles (const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)
     Sum all the nibbles together in an integer. More...
     
    uint8_t bcdToUint8 (const uint8_t bcd)
     Convert a byte of Binary Coded Decimal(BCD) into an Integer. More...
     
    uint8_t uint8ToBcd (const uint8_t integer)
     Convert an Integer into a byte of Binary Coded Decimal(BCD). More...
     
    bool getBit (const uint64_t data, const uint8_t position, const uint8_t size)
     Return the value of positionth bit of an Integer. More...
     
    bool getBit (const uint8_t data, const uint8_t position)
     Return the value of positionth bit of an Integer. More...
     
    uint64_t setBit (const uint64_t data, const uint8_t position, const bool on, const uint8_t size)
     Return the value of an Integer with the positionth bit changed. More...
     
    uint8_t setBit (const uint8_t data, const uint8_t position, const bool on)
     Return the value of an Integer with the positionth bit changed. More...
     
    void setBit (uint8_t *const data, const uint8_t position, const bool on)
     Alter the value of an Integer with the positionth bit changed. More...
     
    void setBit (uint32_t *const data, const uint8_t position, const bool on)
     Alter the value of an Integer with the positionth bit changed. More...
     
    void setBit (uint64_t *const data, const uint8_t position, const bool on)
     Alter the value of an Integer with the positionth bit changed. More...
     
    void setBits (uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)
     Alter an uint8_t value by overwriting an arbitrary given number of bits. More...
     
    void setBits (uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)
     Alter an uint32_t value by overwriting an arbitrary given number of bits. More...
     
    void setBits (uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)
     Alter an uint64_t value by overwriting an arbitrary given number of bits. More...
     
    uint8_t * invertBytePairs (uint8_t *ptr, const uint16_t length)
     Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previous byte of the pair. More...
     
    bool checkInvertedBytePairs (const uint8_t *const ptr, const uint16_t length)
     Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/previous byte of the pair. More...
     
    uint8_t lowLevelSanityCheck (void)
     Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler operation. Calls to this should return 0 if everything is as expected, anything else means the library won't work as expected. More...
     
    -

    Detailed Description

    -

    Namespace for covering common functions & procedures for advancd protocol handlers.

    -

    Function Documentation

    - -

    ◆ addBoolToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addBoolToString (const bool value,
    const String label,
    const bool precomma 
    )
    -
    - -

    Create a String with a colon separated flag suitable for Humans. e.g. "Power: On".

    -
    Parameters
    - - - - -
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addDayToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addDayToString (const uint8_t day_of_week,
    const int8_t offset,
    const bool precomma 
    )
    -
    - -

    Create a String of the 3-letter day of the week from a numerical day of the week. e.g. "Day: 1 (Mon)".

    -
    Parameters
    - - - - -
    [in]day_of_weekA numerical version of the sequential day of the week. e.g. Saturday = 7 etc.
    [in]offsetDays to offset by. e.g. For different day starting the week.
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addFanToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addFanToString (const uint8_t speed,
    const uint8_t high,
    const uint8_t low,
    const uint8_t automatic,
    const uint8_t quiet,
    const uint8_t medium,
    const uint8_t maximum 
    )
    -
    - -

    Create a String of human output for the given fan speed. e.g. "Fan: 0 (Auto)".

    -
    Parameters
    - - - - - - - - -
    [in]speedThe numeric speed of the fan to display.
    [in]highThe numeric value for High speed.
    [in]lowThe numeric value for Low speed.
    [in]automaticThe numeric value for Auto speed.
    [in]quietThe numeric value for Quiet speed.
    [in]mediumThe numeric value for Medium speed.
    [in]maximumThe numeric value for Highest speed. (if > high)
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addIntToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addIntToString (const uint16_t value,
    const String label,
    const bool precomma 
    )
    -
    - -

    Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".

    -
    Parameters
    - - - - -
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addLabeledString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addLabeledString (const String value,
    const String label,
    const bool precomma 
    )
    -
    - -

    Create a String with a colon separated "label: value" pair suitable for Humans.

    -
    Parameters
    - - - - -
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addModelToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addModelToString (const decode_type_t protocol,
    const int16_t model,
    const bool precomma 
    )
    -
    - -

    Create a String of human output for a given protocol model number. e.g. "Model: JKE".

    -
    Parameters
    - - - - -
    [in]protocolThe IR protocol.
    [in]modelThe model number for that protocol.
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addModeToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addModeToString (const uint8_t mode,
    const uint8_t automatic,
    const uint8_t cool,
    const uint8_t heat,
    const uint8_t dry,
    const uint8_t fan 
    )
    -
    - -

    Create a String of human output for the given operating mode. e.g. "Mode: 1 (Cool)".

    -
    Parameters
    - - - - - - - -
    [in]modeThe operating mode to display.
    [in]automaticThe numeric value for Auto mode.
    [in]coolThe numeric value for Cool mode.
    [in]heatThe numeric value for Heat mode.
    [in]dryThe numeric value for Dry mode.
    [in]fanThe numeric value for Fan mode.
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addSignedIntToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addSignedIntToString (const int16_t value,
    const String label,
    const bool precomma 
    )
    -
    - -

    Create a String with a colon separated labeled Integer suitable for Humans. e.g. "Foo: 23".

    -
    Parameters
    - - - - -
    [in]valueThe value to come after the label.
    [in]labelThe label to precede the value.
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addSwingHToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addSwingHToString (const uint8_t position,
    const uint8_t automatic,
    const uint8_t maxleft,
    const uint8_t left,
    const uint8_t middle,
    const uint8_t right,
    const uint8_t maxright,
    const uint8_t off,
    const uint8_t leftright,
    const uint8_t rightleft,
    const uint8_t threed,
    const uint8_t wide 
    )
    -
    - -

    Create a String of human output for the given horizontal swing setting. e.g. "Swing(H): 0 (Auto)".

    -
    Parameters
    - - - - - - - - - - - - - -
    [in]positionThe numeric position of the swing to display.
    [in]automaticThe numeric value for Auto position.
    [in]maxleftThe numeric value for most left position.
    [in]leftThe numeric value for Left position.
    [in]middleThe numeric value for Middle position.
    [in]rightThe numeric value for Right position.
    [in]maxrightThe numeric value for most right position.
    [in]offThe numeric value for Off position.
    [in]leftrightThe numeric value for "left right" position.
    [in]rightleftThe numeric value for "right left" position.
    [in]threedThe numeric value for 3D setting.
    [in]wideThe numeric value for Wide position.
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addSwingVToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addSwingVToString (const uint8_t position,
    const uint8_t automatic,
    const uint8_t highest,
    const uint8_t high,
    const uint8_t uppermiddle,
    const uint8_t middle,
    const uint8_t lowermiddle,
    const uint8_t low,
    const uint8_t lowest,
    const uint8_t off,
    const uint8_t swing,
    const uint8_t breeze,
    const uint8_t circulate 
    )
    -
    - -

    Create a String of human output for the given vertical swing setting. e.g. "Swing(V): 0 (Auto)".

    -
    Parameters
    - - - - - - - - - - - - - - -
    [in]positionThe numeric position of the swing to display.
    [in]automaticThe numeric value for Auto position.
    [in]highestThe numeric value for Highest position.
    [in]highThe numeric value for High position.
    [in]uppermiddleThe numeric value for Upper Middle position.
    [in]middleThe numeric value for Middle position.
    [in]lowermiddleThe numeric value for Lower Middle position.
    [in]lowThe numeric value for Low position.
    [in]lowestThe numeric value for Low position.
    [in]offThe numeric value for Off position.
    [in]swingThe numeric value for Swing setting.
    [in]breezeThe numeric value for Breeze setting.
    [in]circulateThe numeric value for Circulate setting.
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addTempFloatToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addTempFloatToString (const float degrees,
    const bool celsius,
    const bool precomma 
    )
    -
    - -

    Create a String of human output for a given temperature. e.g. "Temp: 25.5C".

    -
    Parameters
    - - - - -
    [in]degreesThe temperature in degrees.
    [in]celsiusIs the temp Celsius or Fahrenheit. true is C, false is F
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ addTempToString()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    String irutils::addTempToString (const uint16_t degrees,
    const bool celsius,
    const bool precomma 
    )
    -
    - -

    Create a String of human output for a given temperature. e.g. "Temp: 25C".

    -
    Parameters
    - - - - -
    [in]degreesThe temperature in degrees.
    [in]celsiusIs the temp Celsius or Fahrenheit. true is C, false is F
    [in]precommaShould the output string start with ", " or not?
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ bcdToUint8()

    - -
    -
    - - - - - - - - -
    uint8_t irutils::bcdToUint8 (const uint8_t bcd)
    -
    - -

    Convert a byte of Binary Coded Decimal(BCD) into an Integer.

    -
    Parameters
    - - -
    [in]bcdThe BCD value.
    -
    -
    -
    Returns
    A normal Integer value.
    - -
    -
    - -

    ◆ checkInvertedBytePairs()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool irutils::checkInvertedBytePairs (const uint8_t *const ptr,
    const uint16_t length 
    )
    -
    - -

    Check an array to see if every second byte of a pair is a bit inverted/flipped copy of the first/previous byte of the pair.

    -
    Parameters
    - - - -
    [in]ptrA pointer to the start of array to check.
    [in]lengthThe byte size of the array.
    -
    -
    -
    Note
    A length of <= 1 will always return true.
    -
    Returns
    true, if every second byte is inverted. Otherwise false.
    - -
    -
    - -

    ◆ getBit() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool irutils::getBit (const uint64_t data,
    const uint8_t position,
    const uint8_t size 
    )
    -
    - -

    Return the value of positionth bit of an Integer.

    -
    Parameters
    - - - - -
    [in]dataValue to be examined.
    [in]positionNr. of the Nth bit to be examined. 0 is the LSB.
    [in]sizeNr. of bits in data.
    -
    -
    -
    Returns
    The bit's value.
    - -
    -
    - -

    ◆ getBit() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool irutils::getBit (const uint8_t data,
    const uint8_t position 
    )
    -
    - -

    Return the value of positionth bit of an Integer.

    -
    Parameters
    - - - -
    [in]dataValue to be examined.
    [in]positionNr. of the Nth bit to be examined. 0 is the LSB.
    -
    -
    -
    Returns
    The bit's value.
    - -
    -
    - -

    ◆ htmlEscape()

    - -
    -
    - - - - - - - - -
    String irutils::htmlEscape (const String unescaped)
    -
    - -

    Escape any special HTML (unsafe) characters in a string. e.g. anti-XSS.

    -
    Parameters
    - - -
    [in]unescapedA String containing text to make HTML safe.
    -
    -
    -
    Returns
    A string that is HTML safe.
    - -
    -
    - -

    ◆ invertBytePairs()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint8_t * irutils::invertBytePairs (uint8_t * ptr,
    const uint16_t length 
    )
    -
    - -

    Create byte pairs where the second byte of the pair is a bit inverted/flipped copy of the first/previous byte of the pair.

    -
    Parameters
    - - - -
    [in,out]ptrA pointer to the start of array to modify.
    [in]lengthThe byte size of the array.
    -
    -
    -
    Note
    A length of <= 1 will do nothing.
    -
    Returns
    A ptr to the modified array.
    - -
    -
    - -

    ◆ lowLevelSanityCheck()

    - -
    -
    - - - - - - - - -
    uint8_t irutils::lowLevelSanityCheck (void )
    -
    - -

    Perform a low level bit manipulation sanity check for the given cpu architecture and the compiler operation. Calls to this should return 0 if everything is as expected, anything else means the library won't work as expected.

    -
    Returns
    A bit mask value of potential issues. 0: (e.g. 0b00000000) Everything appears okay. 0th bit set: (0b1) Unexpected bit field/packing encountered. Try a different compiler. 1st bit set: (0b10) Unexpected Endianness. Try a different compiler flag or use a CPU different architecture. e.g. A result of 3 (0b11) would mean both a bit field and an Endianness issue has been found.
    - -
    -
    - -

    ◆ minsToString()

    - -
    -
    - - - - - - - - -
    String irutils::minsToString (const uint16_t mins)
    -
    - -

    Convert a nr. of minutes into a 24h clock format Human-readable string. e.g. "23:59".

    -
    Parameters
    - - -
    [in]minsNr. of Minutes.
    -
    -
    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ modelToStr()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    String irutils::modelToStr (const decode_type_t protocol,
    const int16_t model 
    )
    -
    - -

    Generate the model string for a given Protocol/Model pair.

    -
    Parameters
    - - - -
    [in]protocolThe IR protocol.
    [in]modelThe model number for that protocol.
    -
    -
    -
    Returns
    The resulting String.
    - -
    -
    - -

    ◆ msToString()

    - -
    -
    - - - - - - - - -
    String irutils::msToString (uint32_t const msecs)
    -
    - -

    Convert a nr. of milliSeconds into a Human-readable string. e.g. "1 Day 6 Hours 34 Minutes 17 Seconds".

    -
    Parameters
    - - -
    [in]msecsNr. of milliSeconds (ms).
    -
    -
    -
    Returns
    A human readable string.
    - -
    -
    - -

    ◆ setBit() [1/5]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint64_t irutils::setBit (const uint64_t data,
    const uint8_t position,
    const bool on,
    const uint8_t size 
    )
    -
    - -

    Return the value of an Integer with the positionth bit changed.

    -
    Parameters
    - - - - - -
    [in]dataValue to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    [in]sizeNr. of bits in data.
    -
    -
    -
    Returns
    A suitably modified integer.
    - -
    -
    - -

    ◆ setBit() [2/5]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint8_t irutils::setBit (const uint8_t data,
    const uint8_t position,
    const bool on 
    )
    -
    - -

    Return the value of an Integer with the positionth bit changed.

    -
    Parameters
    - - - - -
    [in]dataValue to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    -
    -
    -
    Returns
    A suitably modified integer.
    - -
    -
    - -

    ◆ setBit() [3/5]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void irutils::setBit (uint32_t *const data,
    const uint8_t position,
    const bool on 
    )
    -
    - -

    Alter the value of an Integer with the positionth bit changed.

    -
    Parameters
    - - - - -
    [in,out]dataA pointer to the 32-bit integer to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    -
    -
    - -
    -
    - -

    ◆ setBit() [4/5]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void irutils::setBit (uint64_t *const data,
    const uint8_t position,
    const bool on 
    )
    -
    - -

    Alter the value of an Integer with the positionth bit changed.

    -
    Parameters
    - - - - -
    [in,out]dataA pointer to the 64-bit integer to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    -
    -
    - -
    -
    - -

    ◆ setBit() [5/5]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void irutils::setBit (uint8_t *const data,
    const uint8_t position,
    const bool on 
    )
    -
    - -

    Alter the value of an Integer with the positionth bit changed.

    -
    Parameters
    - - - - -
    [in,out]dataA pointer to the 8-bit integer to be changed.
    [in]positionNr. of the bit to be changed. 0 is the LSB.
    [in]onValue to set the position'th bit to.
    -
    -
    - -
    -
    - -

    ◆ setBits() [1/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void irutils::setBits (uint32_t *const dst,
    const uint8_t offset,
    const uint8_t nbits,
    const uint32_t data 
    )
    -
    - -

    Alter an uint32_t value by overwriting an arbitrary given number of bits.

    -
    Parameters
    - - - - - -
    [in,out]dstA pointer to the value to be changed.
    [in]offsetNr. of bits from the Least Significant Bit to be ignored
    [in]nbitsNr of bits of data to be placed into the destination.
    [in]dataThe value to be placed.
    -
    -
    - -
    -
    - -

    ◆ setBits() [2/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void irutils::setBits (uint64_t *const dst,
    const uint8_t offset,
    const uint8_t nbits,
    const uint64_t data 
    )
    -
    - -

    Alter an uint64_t value by overwriting an arbitrary given number of bits.

    -
    Parameters
    - - - - - -
    [in,out]dstA pointer to the value to be changed.
    [in]offsetNr. of bits from the Least Significant Bit to be ignored
    [in]nbitsNr of bits of data to be placed into the destination.
    [in]dataThe value to be placed.
    -
    -
    - -
    -
    - -

    ◆ setBits() [3/3]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void irutils::setBits (uint8_t *const dst,
    const uint8_t offset,
    const uint8_t nbits,
    const uint8_t data 
    )
    -
    - -

    Alter an uint8_t value by overwriting an arbitrary given number of bits.

    -
    Parameters
    - - - - - -
    [in,out]dstA pointer to the value to be changed.
    [in]offsetNr. of bits from the Least Significant Bit to be ignored
    [in]nbitsNr of bits of data to be placed into the destination.
    [in]dataThe value to be placed.
    -
    -
    - -
    -
    - -

    ◆ sumNibbles() [1/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uint8_t irutils::sumNibbles (const uint64_t data,
    const uint8_t count,
    const uint8_t init,
    const bool nibbleonly 
    )
    -
    - -

    Sum all the nibbles together in an integer.

    -
    Parameters
    - - - - - -
    [in]dataThe integer to be summed.
    [in]countThe number of nibbles to sum. Starts from LSB. Max of 16.
    [in]initStarting value of the calculation to use. (Default is 0)
    [in]nibbleonlytrue, the result is 4 bits. false, it's 8 bits.
    -
    -
    -
    Returns
    The 4/8-bit calculated result of all the nibbles and init value.
    - -
    -
    - -

    ◆ sumNibbles() [2/2]

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uint8_t irutils::sumNibbles (const uint8_t *const start,
    const uint16_t length,
    const uint8_t init 
    )
    -
    - -

    Sum all the nibbles together in a series of bytes.

    -
    Parameters
    - - - - -
    [in]startA ptr to the start of the byte array to calculate over.
    [in]lengthHow many bytes to use in the calculation.
    [in]initStarting value of the calculation to use. (Default is 0)
    -
    -
    -
    Returns
    The 8-bit calculated result of all the bytes and init value.
    - -
    -
    - -

    ◆ uint8ToBcd()

    - -
    -
    - - - - - - - - -
    uint8_t irutils::uint8ToBcd (const uint8_t integer)
    -
    - -

    Convert an Integer into a byte of Binary Coded Decimal(BCD).

    -
    Parameters
    - - -
    [in]integerThe number to convert.
    -
    -
    -
    Returns
    An 8-bit BCD value.
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers.html deleted file mode 100644 index 07c981fe9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - -IRremoteESP8266: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    Here is a list of all namespace members with links to the namespace documentation for each member:
    - -

    - a -

    - - -

    - b -

    - - -

    - c -

    - - -

    - d -

    - - -

    - f -

      -
    • fanspeed_t -: stdAc -
    • -
    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - l -

      -
    • lowLevelSanityCheck() -: irutils -
    • -
    - - -

    - m -

    - - -

    - o -

    - - -

    - p -

    - - -

    - r -

    - - -

    - s -

    - - -

    - u -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_enum.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_enum.html deleted file mode 100644 index 20b291697..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_enum.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_func.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_func.html deleted file mode 100644 index 5874e2750..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_func.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - -IRremoteESP8266: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -  - -

    - a -

    - - -

    - b -

    - - -

    - c -

    - - -

    - d -

    - - -

    - g -

    - - -

    - h -

    - - -

    - i -

    - - -

    - l -

      -
    • lowLevelSanityCheck() -: irutils -
    • -
    - - -

    - m -

    - - -

    - r -

    - - -

    - s -

    - - -

    - u -

    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_vars.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_vars.html deleted file mode 100644 index 815962a0a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacemembers_vars.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -IRremoteESP8266: Namespace Members - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaces.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaces.html deleted file mode 100644 index 6bf789ce5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespaces.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - -IRremoteESP8266: Namespace List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Namespace List
    -
    -
    -
    Here is a list of all namespaces with brief descriptions:
    - - - - - - -
     N_IRrecv
     NIRAcUtilsCommon functions for use with all A/Cs supported by the IRac class
     NirutilsNamespace for covering common functions & procedures for advancd protocol handlers
     NIRXmpUtils
     NstdAcEnumerators and Structures for the Common A/C API
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacestdAc.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacestdAc.html deleted file mode 100644 index 59ba02326..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/namespacestdAc.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - - -IRremoteESP8266: stdAc Namespace Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    stdAc Namespace Reference
    -
    -
    - -

    Enumerators and Structures for the Common A/C API. -More...

    - - - - - -

    -Classes

    struct  state_t
     Structure to hold a common A/C state. More...
     
    - - - - - - - - - - - - - -

    -Enumerations

    enum  opmode_t {
    -  opmode_t::kOff = -1, -opmode_t::kAuto = 0, -opmode_t::kCool = 1, -opmode_t::kHeat = 2, -
    -  opmode_t::kDry = 3, -opmode_t::kFan = 4, -opmode_t::kLastOpmodeEnum = kFan -
    - }
     Common A/C settings for A/C operating modes. More...
     
    enum  fanspeed_t {
    -  fanspeed_t::kAuto = 0, -fanspeed_t::kMin = 1, -fanspeed_t::kLow = 2, -fanspeed_t::kMedium = 3, -
    -  fanspeed_t::kHigh = 4, -fanspeed_t::kMax = 5, -fanspeed_t::kLastFanspeedEnum = kMax -
    - }
     Common A/C settings for Fan Speeds. More...
     
    enum  swingv_t {
    -  swingv_t::kOff = -1, -swingv_t::kAuto = 0, -swingv_t::kHighest = 1, -swingv_t::kHigh = 2, -
    -  swingv_t::kMiddle = 3, -swingv_t::kLow = 4, -swingv_t::kLowest = 5, -swingv_t::kLastSwingvEnum = kLowest -
    - }
     Common A/C settings for Vertical Swing. More...
     
    enum  swingh_t {
    -  swingh_t::kOff = -1, -swingh_t::kAuto = 0, -swingh_t::kLeftMax = 1, -swingh_t::kLeft = 2, -
    -  swingh_t::kMiddle = 3, -swingh_t::kRight = 4, -swingh_t::kRightMax = 5, -swingh_t::kWide = 6, -
    -  swingh_t::kLastSwinghEnum = kWide -
    - }
     Common A/C settings for Horizontal Swing. More...
     
    -

    Detailed Description

    -

    Enumerators and Structures for the Common A/C API.

    -

    Enumeration Type Documentation

    - -

    ◆ fanspeed_t

    - -
    -
    - - - - - -
    - - - - -
    enum stdAc::fanspeed_t
    -
    -strong
    -
    - -

    Common A/C settings for Fan Speeds.

    - - - - - - - - -
    Enumerator
    kAuto 
    kMin 
    kLow 
    kMedium 
    kHigh 
    kMax 
    kLastFanspeedEnum 
    - -
    -
    - -

    ◆ opmode_t

    - -
    -
    - - - - - -
    - - - - -
    enum stdAc::opmode_t
    -
    -strong
    -
    - -

    Common A/C settings for A/C operating modes.

    - - - - - - - - -
    Enumerator
    kOff 
    kAuto 
    kCool 
    kHeat 
    kDry 
    kFan 
    kLastOpmodeEnum 
    - -
    -
    - -

    ◆ swingh_t

    - -
    -
    - - - - - -
    - - - - -
    enum stdAc::swingh_t
    -
    -strong
    -
    - -

    Common A/C settings for Horizontal Swing.

    - - - - - - - - - - -
    Enumerator
    kOff 
    kAuto 
    kLeftMax 
    kLeft 
    kMiddle 
    kRight 
    kRightMax 
    kWide 
    kLastSwinghEnum 
    - -
    -
    - -

    ◆ swingv_t

    - -
    -
    - - - - - -
    - - - - -
    enum stdAc::swingv_t
    -
    -strong
    -
    - -

    Common A/C settings for Vertical Swing.

    - - - - - - - - - -
    Enumerator
    kOff 
    kAuto 
    kHighest 
    kHigh 
    kMiddle 
    kLow 
    kLowest 
    kLastSwingvEnum 
    - -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_f.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_g.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - -IRremoteESP8266: Related Pages - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    Related Pages
    -
    -
    -
    Here is a list of all related documentation pages:
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h.html deleted file mode 100644 index c781e38f4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/pt-BR.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    pt-BR.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h_source.html deleted file mode 100644 index 82254cbe4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/pt-BR_8h_source.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/pt-BR.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    pt-BR.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 - Guilherme (@guieiras)
    -
    2 // Locale/language file for Portuguese / Brazil.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_PT_BR_H_
    -
    5 #define LOCALE_PT_BR_H_
    -
    6 
    -
    7 #define D_STR_UNKNOWN "DESCONHECIDO"
    -
    8 #define D_STR_PROTOCOL "Protocolo"
    -
    9 #define D_STR_POWER "Energia"
    -
    10 #define D_STR_PREVIOUS "Anterior"
    -
    11 #define D_STR_ON "Ligado"
    -
    12 #define D_STR_OFF "Desligado"
    -
    13 #define D_STR_MODE "Modo"
    -
    14 #define D_STR_TOGGLE "Alterar"
    -
    15 #define D_STR_TURBO "Turbo"
    -
    16 #define D_STR_SUPER "Super"
    -
    17 #define D_STR_SLEEP "Dormir"
    -
    18 #define D_STR_LIGHT "Luz"
    -
    19 #define D_STR_POWERFUL "Potente"
    -
    20 #define D_STR_QUIET "Silencioso"
    -
    21 #define D_STR_ECONO "Econômico"
    -
    22 #define D_STR_SWING "Girar"
    -
    23 #define D_STR_SWINGH D_STR_SWING"(H)"
    -
    24 #define D_STR_SWINGV D_STR_SWING"(V)"
    -
    25 #define D_STR_BEEP "Tocar beep"
    -
    26 #define D_STR_MOULD "Moldar"
    -
    27 #define D_STR_CLEAN "Limpar"
    -
    28 #define D_STR_PURIFY "Purificar"
    -
    29 #define D_STR_TIMER "Timer"
    -
    30 #define D_STR_ONTIMER D_STR_TIMER " " D_STR_ON
    -
    31 #define D_STR_OFFTIMER D_STR_TIMER " " D_STR_OFF
    -
    32 #define D_STR_CLOCK "Relógio"
    -
    33 #define D_STR_COMMAND "Comando"
    -
    34 #define D_STR_HEALTH "Saúde"
    -
    35 #define D_STR_MODEL "Modelo"
    -
    36 #define D_STR_TEMP "Temperatura"
    -
    37 #define D_STR_HUMID "Umidificar"
    -
    38 #define D_STR_SAVE "Salvar"
    -
    39 #define D_STR_EYE "Ver"
    -
    40 #define D_STR_FOLLOW "Acompanhar"
    -
    41 #define D_STR_ION "Ionizar"
    -
    42 #define D_STR_FRESH "Refrescar"
    -
    43 #define D_STR_HOLD "Manter"
    -
    44 #define D_STR_BUTTON "Botão"
    -
    45 #define D_STR_NIGHT "Noite"
    -
    46 #define D_STR_SILENT "Silencioso"
    -
    47 #define D_STR_FILTER "Filtrar"
    -
    48 #define D_STR_3D "3D"
    -
    49 #define D_STR_CELSIUS "Celsius"
    -
    50 #define D_STR_FAHRENHEIT "Fahrenheit"
    -
    51 #define D_STR_CELSIUS_FAHRENHEIT D_STR_CELSIUS "/" D_STR_FAHRENHEIT
    -
    52 #define D_STR_UP "Aumentar"
    -
    53 #define D_STR_TEMPUP D_STR_UP " " D_STR_TEMP
    -
    54 #define D_STR_DOWN "Diminuir"
    -
    55 #define D_STR_TEMPDOWN D_STR_DOWN " " D_STR_TEMP
    -
    56 #define D_STR_CHANGE "Alterar"
    -
    57 #define D_STR_START "Iniciar"
    -
    58 #define D_STR_STOP "Parar"
    -
    59 #define D_STR_MOVE "Mover"
    -
    60 #define D_STR_SET "Definir"
    -
    61 #define D_STR_CANCEL "Cancelar"
    -
    62 #define D_STR_COMFORT "Conforto"
    -
    63 #define D_STR_SENSOR "Sensor"
    -
    64 #define D_STR_DISPLAY "Mostrar"
    -
    65 #define D_STR_WEEKLY "Semanal"
    -
    66 #define D_STR_WEEKLYTIMER D_STR_TIMER " " D_STR_WEEKLY
    -
    67 #define D_STR_WIFI "WiFi"
    -
    68 #define D_STR_LAST "Último"
    -
    69 #define D_STR_FAST "Rápido"
    -
    70 #define D_STR_SLOW "Devagar"
    -
    71 #define D_STR_AIRFLOW "Fluxo de Ar"
    -
    72 #define D_STR_STEP "Etapa"
    -
    73 #define D_STR_NA "N/A"
    -
    74 #define D_STR_INSIDE "Interno"
    -
    75 #define D_STR_OUTSIDE "Externo"
    -
    76 #define D_STR_LOUD "Alto"
    -
    77 #define D_STR_UPPER "Mais alto"
    -
    78 #define D_STR_LOWER "Mais baixo"
    -
    79 #define D_STR_BREEZE "Brisa"
    -
    80 #define D_STR_CIRCULATE "Circular"
    -
    81 #define D_STR_CEILING "Teto"
    -
    82 #define D_STR_WALL "Parede"
    -
    83 #define D_STR_ROOM "Sala"
    -
    84 #define D_STR_6THSENSE "Sexto sentido"
    -
    85 #define D_STR_ZONEFOLLOW "Acompanhar ambiente"
    -
    86 #define D_STR_FIXED "Fixo"
    -
    87 
    -
    88 #define D_STR_AUTO "Auto"
    -
    89 #define D_STR_AUTOMATIC "Automático"
    -
    90 #define D_STR_MANUAL "Manual"
    -
    91 #define D_STR_COOL "Esfriar"
    -
    92 #define D_STR_HEAT "Aquecer"
    -
    93 #define D_STR_FAN "Ventilar"
    -
    94 #define D_STR_FANONLY "Apenas ventilar"
    -
    95 #define D_STR_DRY "Secar"
    -
    96 #define D_STR_8C_HEAT D_STR_HEAT " 8C"
    -
    97 
    -
    98 #define D_STR_MAX "Max"
    -
    99 #define D_STR_MAXIMUM "Máximo"
    -
    100 #define D_STR_MIN "Min"
    -
    101 #define D_STR_MINIMUM "Mínimo"
    -
    102 #define D_STR_MED "Med"
    -
    103 #define D_STR_MEDIUM "Médio"
    -
    104 
    -
    105 #define D_STR_HIGHEST "Mais alto"
    -
    106 #define D_STR_HIGH "Alto"
    -
    107 #define D_STR_HI "Médio alto"
    -
    108 #define D_STR_MID "Médio"
    -
    109 #define D_STR_MIDDLE "Médio baixo"
    -
    110 #define D_STR_LOW "Inferior"
    -
    111 #define D_STR_LO "Baixo"
    -
    112 #define D_STR_LOWEST "Mais baixo"
    -
    113 #define D_STR_RIGHT "Direita"
    -
    114 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
    -
    115 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT " (" D_STR_MAX ")"
    -
    116 #define D_STR_LEFT "Esquerda"
    -
    117 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
    -
    118 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT " (" D_STR_MAX ")"
    -
    119 #define D_STR_WIDE "Amplo"
    -
    120 #define D_STR_CENTRE "Centro"
    -
    121 #define D_STR_TOP "Topo"
    -
    122 #define D_STR_BOTTOM "Baixo"
    -
    123 
    -
    124 // Separators
    -
    125 #define D_CHR_TIME_SEP ':'
    -
    126 #define D_STR_SPACELBRACE " ("
    -
    127 #define D_STR_COMMASPACE ", "
    -
    128 #define D_STR_COLONSPACE ": "
    -
    129 
    -
    130 #define D_STR_DAY "Dia"
    -
    131 #define D_STR_DAYS D_STR_DAY "s"
    -
    132 #define D_STR_HOUR "Hora"
    -
    133 #define D_STR_HOURS D_STR_HOUR "s"
    -
    134 #define D_STR_MINUTE "Minuto"
    -
    135 #define D_STR_MINUTES D_STR_MINUTE "s"
    -
    136 #define D_STR_SECOND "Segundo"
    -
    137 #define D_STR_SECONDS D_STR_SECOND "s"
    -
    138 #define D_STR_NOW "Agora"
    -
    139 #define D_STR_THREELETTERDAYS "DomSegTerQuaQuiSexSab"
    -
    140 
    -
    141 #define D_STR_YES "Sim"
    -
    142 #define D_STR_NO "Não"
    -
    143 #define D_STR_TRUE "Verdadeiro"
    -
    144 #define D_STR_FALSE "Falso"
    -
    145 
    -
    146 #define D_STR_REPEAT "Repetir"
    -
    147 #define D_STR_CODE "Código"
    -
    148 #define D_STR_BITS "Bits"
    -
    149 
    -
    150 // IRrecvDumpV2+
    -
    151 #define D_STR_TIMESTAMP "Timestamp"
    -
    152 #define D_STR_LIBRARY "Biblioteca"
    -
    153 #define D_STR_MESGDESC "Descrição da mensagem"
    -
    154 #define D_STR_TOLERANCE "Tolerância"
    -
    155 #ifndef D_STR_IRRECVDUMP_STARTUP
    -
    156 #define D_STR_IRRECVDUMP_STARTUP \
    -
    157  "IRrecvDump está rodando e aguardando por entradas IR no pino %d"
    -
    158 #endif // D_STR_IRRECVDUMP_STARTUP
    -
    159 
    -
    160 #ifndef D_WARN_BUFFERFULL
    -
    161 #define D_WARN_BUFFERFULL \
    -
    162  "AVISO: O código IR é muito grande para o buffer (>= %d). " \
    -
    163  "Esse resultado não é confiavel e precisa ser resolvido. " \
    -
    164  "Edite e aumente o valor de `kCaptureBufferSize`."
    -
    165 #endif // D_WARN_BUFFERFULL
    -
    166 
    -
    167 #endif // LOCALE_PT_BR_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.html deleted file mode 100644 index 26dd244fd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.js deleted file mode 100644 index 82a5338dc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_0.js +++ /dev/null @@ -1,88 +0,0 @@ -var searchData= -[ - ['_5f_0',['_',['../classIRAirwellAc.html#af5675d200cdc571911162ecf8c74fdc0',1,'IRAirwellAc::_()'],['../classIRAmcorAc.html#a57bd1149a63a8c2373eeced414ed0a80',1,'IRAmcorAc::_()'],['../classIRArgoAC.html#a748a4828682df0f98226754123fe2142',1,'IRArgoAC::_()'],['../classIRCarrierAc64.html#a79ddb0fb877232a581d0142949a7c356',1,'IRCarrierAc64::_()'],['../classIRCoolixAC.html#a35c7cd549fcd37c60199b53d67fb9dd2',1,'IRCoolixAC::_()'],['../classIRCoronaAc.html#aa6e07135d66fda5c609c0d6a317bb0de',1,'IRCoronaAc::_()'],['../classIRDaikinESP.html#abbdecc7d713255021360094f720b03d4',1,'IRDaikinESP::_()'],['../classIRDaikin2.html#a656fd69f0163ba8685e537d122355f13',1,'IRDaikin2::_()'],['../classIRDaikin216.html#a41e9c282f84a853782dae90736d29b4b',1,'IRDaikin216::_()'],['../classIRDaikin160.html#a391d29ba41097a521b25af3b24554191',1,'IRDaikin160::_()'],['../classIRDaikin176.html#a82ad91178ed497d7087c758cd92635c5',1,'IRDaikin176::_()'],['../classIRDaikin128.html#aa5f2c8742a4127d76c28c96b02700af1',1,'IRDaikin128::_()'],['../classIRDaikin152.html#ad21ebef489e09af9ace1aea71c9a3606',1,'IRDaikin152::_()'],['../classIRDaikin64.html#a21b23d9ffbb8df86160affa249c86e40',1,'IRDaikin64::_()'],['../classIRDelonghiAc.html#a85f522b680c0fb5974d741c8f399e691',1,'IRDelonghiAc::_()'],['../classIREcoclimAc.html#a8bb20ae92cb32b3a083f43eea7be5f9a',1,'IREcoclimAc::_()'],['../classIRElectraAc.html#a4e6db6134d2e8915c4f2ad2e7e41ca83',1,'IRElectraAc::_()'],['../classIRFujitsuAC.html#ac26150793cfe7cc627e9721031f870e1',1,'IRFujitsuAC::_()'],['../classIRGoodweatherAc.html#a357e8f133b16a086c3100eb1e7b35279',1,'IRGoodweatherAc::_()'],['../classIRGreeAC.html#a9c048fe707312bdfd30c29fe8d6ab4b5',1,'IRGreeAC::_()'],['../classIRHaierAC.html#a523b6e63f16c5f817d82bcdbf351d7e7',1,'IRHaierAC::_()'],['../classIRHaierACYRW02.html#aaa31ae12544758f57f0dcd11b20fe285',1,'IRHaierACYRW02::_()'],['../classIRHitachiAc.html#a437587da1c6f0946dfbf9a0666123f4d',1,'IRHitachiAc::_()'],['../classIRHitachiAc1.html#ac2195f94ff673d24ac9f33b9463d5680',1,'IRHitachiAc1::_()'],['../classIRHitachiAc424.html#aa3e49f9ccda3b94099a11b4fba87fb3e',1,'IRHitachiAc424::_()'],['../classIRKelonAc.html#aeeaf52576cde829c1d7adb72c4dfe029',1,'IRKelonAc::_()'],['../classIRKelvinatorAC.html#ada1ada9d4441938af9f98e03b11f2b65',1,'IRKelvinatorAC::_()'],['../classIRLgAc.html#a2d337e8d615c8e526d5620206f7b45cf',1,'IRLgAc::_()'],['../classIRMideaAC.html#a43e44a594e00ed14c9b6aca4a862ea9e',1,'IRMideaAC::_()'],['../classIRMitsubishiAC.html#a418d0c771b50d014a1027cffcf53ca27',1,'IRMitsubishiAC::_()'],['../classIRMitsubishi136.html#ac38f8620a8cb3ada2f6a2e5c300b9a60',1,'IRMitsubishi136::_()'],['../classIRMitsubishi112.html#a5e4c08c77bfc74b1c0f8b407f020aa2e',1,'IRMitsubishi112::_()'],['../classIRMitsubishiHeavy152Ac.html#aba9d9871ddd93dc2f1e32fc773fadb86',1,'IRMitsubishiHeavy152Ac::_()'],['../classIRMitsubishiHeavy88Ac.html#a01ba20c205e3650a31ba605e291c0d65',1,'IRMitsubishiHeavy88Ac::_()'],['../classIRNeoclimaAc.html#a46453121ea930c6b356dd752fdaaec51',1,'IRNeoclimaAc::_()'],['../classIRPanasonicAc32.html#a9d6fab2a42e831ab00ab5364ad8d3de4',1,'IRPanasonicAc32::_()'],['../classIRSamsungAc.html#a7ac33928a62f2f4e487509490ed64814',1,'IRSamsungAc::_()'],['../classIRSanyoAc.html#ad849828b1fa034d851cdadfee43108aa',1,'IRSanyoAc::_()'],['../classIRSharpAc.html#a4687771aefa4879b4c9f331976ceb4bc',1,'IRSharpAc::_()'],['../classIRTcl112Ac.html#a905e47d5236b5dbbcc0aeadfc3fc9339',1,'IRTcl112Ac::_()'],['../classIRTechnibelAc.html#ae5bd8b758ef88ce473b38f93db207b13',1,'IRTechnibelAc::_()'],['../classIRTecoAc.html#a1d46a7c59ae9a0d87e092231de2d2510',1,'IRTecoAc::_()'],['../classIRToshibaAC.html#ae8a3a6ff11a38c11cdddb79af98c796f',1,'IRToshibaAC::_()'],['../classIRTranscoldAc.html#a50d0d2c8a2f25855ca721ef3f477284b',1,'IRTranscoldAc::_()'],['../classIRTrotecESP.html#a989eeedd017943dec0a3337f4e0bf23a',1,'IRTrotecESP::_()'],['../classIRTrumaAc.html#ac756f5efa2a62a36495def7b4ca755c7',1,'IRTrumaAc::_()'],['../classIRVestelAc.html#a1445480ae91942e752beb2facc9b151b',1,'IRVestelAc::_()'],['../classIRVoltas.html#a251065338907253521a12e5e0f8aeb26',1,'IRVoltas::_()'],['../classIRWhirlpoolAc.html#a62d86151ac9fae122927f588953c9712',1,'IRWhirlpoolAc::_()']]], - ['_5f_5fpad0_5f_5f_1',['__pad0__',['../unionAirwellProtocol.html#ac8190704f390caf41b76dc0ee3377056',1,'AirwellProtocol::__pad0__()'],['../unionAmcorProtocol.html#a8678a5bf4a4d917d8b02d854114b2cc0',1,'AmcorProtocol::__pad0__()'],['../unionArgoProtocol.html#a2b15de65bd2368c53c07850b32c240f1',1,'ArgoProtocol::__pad0__()'],['../unionCarrierProtocol.html#a8187ddda3722f75d7260b9a20147b2d3',1,'CarrierProtocol::__pad0__()'],['../unionCoolixProtocol.html#aed69535018e1a145ecadf868b9285cce',1,'CoolixProtocol::__pad0__()'],['../unionCoronaProtocol.html#a06ac994ce787d3f1c65529e99d87d146',1,'CoronaProtocol::__pad0__()'],['../unionDaikinESPProtocol.html#a4b6340f47c0b18f3ca03527c075370a8',1,'DaikinESPProtocol::__pad0__()'],['../unionDaikin2Protocol.html#a862b1116a11ccc47c197da1c45bcf939',1,'Daikin2Protocol::__pad0__()'],['../unionDaikin216Protocol.html#a34e330a1e718719a36fbcf1630d3a329',1,'Daikin216Protocol::__pad0__()'],['../unionDaikin160Protocol.html#a004c3ba468c671d18e6777b97caa5118',1,'Daikin160Protocol::__pad0__()'],['../unionDaikin176Protocol.html#a8c63d7ff706301c55b9b82669b93504b',1,'Daikin176Protocol::__pad0__()'],['../unionDaikin128Protocol.html#a95b62a4448251a23cb7b8448da6db90a',1,'Daikin128Protocol::__pad0__()'],['../unionDaikin152Protocol.html#ae12253e3f2a43142a7a9e508a49ac97b',1,'Daikin152Protocol::__pad0__()'],['../unionDaikin64Protocol.html#a4311ec81ff9b3b13466b2fe3da4fb9be',1,'Daikin64Protocol::__pad0__()'],['../unionDelonghiProtocol.html#add514a227f6b9dcbaa41eaa5c81d6be2',1,'DelonghiProtocol::__pad0__()'],['../unionEcoclimProtocol.html#af8ab3b4b36c8d226267bd9d408a247b5',1,'EcoclimProtocol::__pad0__()'],['../unionElectraProtocol.html#a607d7c92e7a627b9afccf9022f379184',1,'ElectraProtocol::__pad0__()'],['../unionFujitsuProtocol.html#ae09a6236e9c28edcec7192b2f2527d94',1,'FujitsuProtocol::__pad0__()'],['../unionGoodweatherProtocol.html#a58bfae03b0e7faeb4a5eb2baa7027499',1,'GoodweatherProtocol::__pad0__()'],['../unionGreeProtocol.html#a06baff7b648875f337ea4d099f8ba73d',1,'GreeProtocol::__pad0__()'],['../unionHaierProtocol.html#a2648f0ff2bc5a6481e9fd2017408a590',1,'HaierProtocol::__pad0__()'],['../unionHaierYRW02Protocol.html#a48fb1f12d6902568da902b5de7e1bfef',1,'HaierYRW02Protocol::__pad0__()'],['../unionHitachiProtocol.html#a59198deea3c754055b8db3c53597b28a',1,'HitachiProtocol::__pad0__()'],['../unionHitachi424Protocol.html#a8bbd10b57407543a47af052d3ad7d45d',1,'Hitachi424Protocol::__pad0__()'],['../unionHitachi1Protocol.html#aef99c45f1361f6f3af5384e388e769f0',1,'Hitachi1Protocol::__pad0__()'],['../unionKelvinatorProtocol.html#a1c5a62ea69b305fe7c842ed06201544e',1,'KelvinatorProtocol::__pad0__()'],['../unionLGProtocol.html#a56f4b64eddafae10e174097f17129672',1,'LGProtocol::__pad0__()'],['../unionMideaProtocol.html#ab48c834ee5a37297d04e71e6e32468d2',1,'MideaProtocol::__pad0__()'],['../unionMitsubishi144Protocol.html#a54a33f76ce69f4ffb355bbd80b40333e',1,'Mitsubishi144Protocol::__pad0__()'],['../unionMitsubishi136Protocol.html#ac7c07e05f6b9ab112db05bfc0e50b8fe',1,'Mitsubishi136Protocol::__pad0__()'],['../unionMitsubishi112Protocol.html#a10e85997ccda345c41d243d621f5c6c5',1,'Mitsubishi112Protocol::__pad0__()'],['../unionMitsubishi152Protocol.html#afe483629cb0b355cc9dc24720a3dbfc1',1,'Mitsubishi152Protocol::__pad0__()'],['../unionMitsubishi88Protocol.html#ad271ae6069331e7de5173eda076391bf',1,'Mitsubishi88Protocol::__pad0__()'],['../unionNeoclimaProtocol.html#ab7283cca22005d0a4a16349a10443c75',1,'NeoclimaProtocol::__pad0__()'],['../unionPanasonicAc32Protocol.html#aa1aac1cdb8d947e7ecea4a487e2a184f',1,'PanasonicAc32Protocol::__pad0__()'],['../unionSamsungProtocol.html#a5828729c8465645c7953f33f7a759b66',1,'SamsungProtocol::__pad0__()'],['../unionSanyoProtocol.html#ab545036dab31de4c9fed22c3b69a8956',1,'SanyoProtocol::__pad0__()'],['../unionSharpProtocol.html#a1849030fb0a1228c149773fc59cd5a3a',1,'SharpProtocol::__pad0__()'],['../unionTcl112Protocol.html#ac6a87b38987b8acf6a4f2e8c56915e9b',1,'Tcl112Protocol::__pad0__()'],['../unionTechnibelProtocol.html#a867176d7b37eea700911a9e1436fd759',1,'TechnibelProtocol::__pad0__()'],['../unionTecoProtocol.html#a4f28c648b1ea808fa3f85dccd9aa7f0e',1,'TecoProtocol::__pad0__()'],['../unionToshibaProtocol.html#afcaa4bab05d9b9a178d377981963804f',1,'ToshibaProtocol::__pad0__()'],['../unionTranscoldProtocol.html#ae31134005dcf214468c247c1a8e0c3c2',1,'TranscoldProtocol::__pad0__()'],['../unionTrotecProtocol.html#a5a595bd97622b796cc790b3781b5f945',1,'TrotecProtocol::__pad0__()'],['../unionTrumaProtocol.html#ae1dba9448f8eafde9880dd3c62d0d6eb',1,'TrumaProtocol::__pad0__()'],['../unionVestelProtocol.html#ae1c70f14718a4374f62db9a5ee047525',1,'VestelProtocol::__pad0__()'],['../unionVoltasProtocol.html#a6a9f9ff0c3c7b691ed78738138467afa',1,'VoltasProtocol::__pad0__()'],['../unionWhirlpoolProtocol.html#a346c5be5f86c773065807453a37b1803',1,'WhirlpoolProtocol::__pad0__()']]], - ['_5f_5fpad10_5f_5f_2',['__pad10__',['../unionArgoProtocol.html#aa2c0eb524c5870ea14aac018834c203f',1,'ArgoProtocol::__pad10__()'],['../unionDaikinESPProtocol.html#ab5f4cadf160b7b0cd86d23f0d29226b5',1,'DaikinESPProtocol::__pad10__()'],['../unionDaikin2Protocol.html#a6c39db0f9d872e4e955d95530e364f8c',1,'Daikin2Protocol::__pad10__()'],['../unionElectraProtocol.html#a1c6c36949391af9da5dbb39a7ab9894b',1,'ElectraProtocol::__pad10__()'],['../unionFujitsuProtocol.html#a401eaf495ccd6f029263af08c6b810b0',1,'FujitsuProtocol::__pad10__()'],['../unionHaierYRW02Protocol.html#abc9d14dbc6ab798a389244499fad7d96',1,'HaierYRW02Protocol::__pad10__()'],['../unionKelvinatorProtocol.html#aa2ce27bd061f2e9a44fd01b3c5abcd0a',1,'KelvinatorProtocol::__pad10__()'],['../unionMitsubishi152Protocol.html#a05b638b3d3727c028e00c7e0826988ac',1,'Mitsubishi152Protocol::__pad10__()'],['../unionNeoclimaProtocol.html#a035ce50ea046d70206a899b022514fc1',1,'NeoclimaProtocol::__pad10__()'],['../unionSamsungProtocol.html#ad142f78386bc81486c7237de5c9dba02',1,'SamsungProtocol::__pad10__()'],['../unionSharpProtocol.html#a38bc19719f1597b4b2f412eda520edff',1,'SharpProtocol::__pad10__()'],['../unionWhirlpoolProtocol.html#a08e2114e6ecd39db2d05d4fbe6f331eb',1,'WhirlpoolProtocol::__pad10__()']]], - ['_5f_5fpad11_5f_5f_3',['__pad11__',['../unionArgoProtocol.html#a6ccde46c9c033ca08161da12a2657187',1,'ArgoProtocol::__pad11__()'],['../unionDaikinESPProtocol.html#a63226f3ed0f535ecc6575d68e402aca4',1,'DaikinESPProtocol::__pad11__()'],['../unionDaikin2Protocol.html#a4dbf000916d610dd6f7779702b827a32',1,'Daikin2Protocol::__pad11__()'],['../unionElectraProtocol.html#a60df01dbc021ccb4167bf05b6cfb3575',1,'ElectraProtocol::__pad11__()'],['../unionHaierYRW02Protocol.html#a033dacb9a8b936c0187e86c585431198',1,'HaierYRW02Protocol::__pad11__()'],['../unionKelvinatorProtocol.html#a154ce4b17b1920eeeed576a84c42078c',1,'KelvinatorProtocol::__pad11__()'],['../unionMitsubishi152Protocol.html#a613a6a6436459e9c0e50ea9dbe98adb7',1,'Mitsubishi152Protocol::__pad11__()'],['../unionSamsungProtocol.html#adbacd1c9f1da9e52897e371932448104',1,'SamsungProtocol::__pad11__()'],['../unionWhirlpoolProtocol.html#a2298dc17501470bc907c2942b3b78a31',1,'WhirlpoolProtocol::__pad11__()']]], - ['_5f_5fpad12_5f_5f_4',['__pad12__',['../unionArgoProtocol.html#a338bbbc882a3409af4ff510a9b7c001b',1,'ArgoProtocol::__pad12__()'],['../unionDaikinESPProtocol.html#acb1fbea3c23fc3cd9171e8dc5ec6c704',1,'DaikinESPProtocol::__pad12__()'],['../unionDaikin2Protocol.html#a8ed55611b407b4565879d1c590d9db97',1,'Daikin2Protocol::__pad12__()'],['../unionElectraProtocol.html#af6cc114e85af4dc98468b8912d9550e1',1,'ElectraProtocol::__pad12__()'],['../unionHaierYRW02Protocol.html#a3df5d93e5f676ff44b32227a44be98ac',1,'HaierYRW02Protocol::__pad12__()'],['../unionKelvinatorProtocol.html#aca9a8e9d3bfae177addbbf5cf59be5b9',1,'KelvinatorProtocol::__pad12__()'],['../unionMitsubishi152Protocol.html#a79605175bd897bb9d9dbde5e2a5e75cd',1,'Mitsubishi152Protocol::__pad12__()'],['../unionSamsungProtocol.html#a3498152c423584a34036a0004965e483',1,'SamsungProtocol::__pad12__()'],['../unionWhirlpoolProtocol.html#a5bb903a38e613af99420d157b6a4497c',1,'WhirlpoolProtocol::__pad12__()']]], - ['_5f_5fpad13_5f_5f_5',['__pad13__',['../unionArgoProtocol.html#a093e716979933669e589fb5ead32a3a5',1,'ArgoProtocol::__pad13__()'],['../unionDaikinESPProtocol.html#ad00fd7a0383f41faa020b5468f326d40',1,'DaikinESPProtocol::__pad13__()'],['../unionDaikin2Protocol.html#a71b32e066737020b4b50752a1b49aa59',1,'Daikin2Protocol::__pad13__()'],['../unionKelvinatorProtocol.html#a7791a8425a444901bba50c314ea72f07',1,'KelvinatorProtocol::__pad13__()'],['../unionSamsungProtocol.html#a0cc6887b0f67b3478679612a61f53494',1,'SamsungProtocol::__pad13__()'],['../unionWhirlpoolProtocol.html#aee015ccecfa7008bf16b9c94c471d611',1,'WhirlpoolProtocol::__pad13__()']]], - ['_5f_5fpad14_5f_5f_6',['__pad14__',['../unionArgoProtocol.html#ab35dfc5963cfdcf5a776c78d3ea5f423',1,'ArgoProtocol::__pad14__()'],['../unionDaikinESPProtocol.html#af60b5d6127571efd945834134e9820cf',1,'DaikinESPProtocol::__pad14__()'],['../unionDaikin2Protocol.html#a775f2fb0cb2c7814487a595d7dbf9433',1,'Daikin2Protocol::__pad14__()'],['../unionKelvinatorProtocol.html#aae165412d5c955b14dce78a4793c1196',1,'KelvinatorProtocol::__pad14__()'],['../unionSamsungProtocol.html#a18c1a85c27a25cfd52ea3894770e046d',1,'SamsungProtocol::__pad14__()'],['../unionWhirlpoolProtocol.html#a3d91bff7afe79cceb9410303625501e8',1,'WhirlpoolProtocol::__pad14__()']]], - ['_5f_5fpad15_5f_5f_7',['__pad15__',['../unionArgoProtocol.html#a1a3263d128339d19b1dfa2857da3475b',1,'ArgoProtocol::__pad15__()'],['../unionDaikinESPProtocol.html#aa50501fc2b9f3c687fdc6ffae01b0b26',1,'DaikinESPProtocol::__pad15__()'],['../unionDaikin2Protocol.html#a8e3e56e3e43e01196aa76b26746a7793',1,'Daikin2Protocol::__pad15__()'],['../unionKelvinatorProtocol.html#ab92ccd2d83d1f6a8ac071a6bf964192f',1,'KelvinatorProtocol::__pad15__()'],['../unionSamsungProtocol.html#a432749e94e913ec1070a6eaa189d28cc',1,'SamsungProtocol::__pad15__()'],['../unionWhirlpoolProtocol.html#a3befb6d4bc7900b5ce1521557b7ac1da',1,'WhirlpoolProtocol::__pad15__()']]], - ['_5f_5fpad16_5f_5f_8',['__pad16__',['../unionArgoProtocol.html#a0e901bceaaa0cc966eabb937ad4b549a',1,'ArgoProtocol::__pad16__()'],['../unionDaikinESPProtocol.html#a25289149f23cde94303b04579ef5ab51',1,'DaikinESPProtocol::__pad16__()'],['../unionDaikin2Protocol.html#a1cc01ee37d30381041627a436b12b06e',1,'Daikin2Protocol::__pad16__()'],['../unionKelvinatorProtocol.html#a3a2a481ac55f63f010954be00839e9f5',1,'KelvinatorProtocol::__pad16__()'],['../unionSamsungProtocol.html#a4d5d840172077977f2019a57c359fa3e',1,'SamsungProtocol::__pad16__()'],['../unionWhirlpoolProtocol.html#ac1c4612fadecbcbcf3afb7cd3b5ae2ec',1,'WhirlpoolProtocol::__pad16__()']]], - ['_5f_5fpad17_5f_5f_9',['__pad17__',['../unionDaikinESPProtocol.html#a4f5109e7102aa264f0769b3c8e59143e',1,'DaikinESPProtocol::__pad17__()'],['../unionDaikin2Protocol.html#a95ba00e7fe66eb4461df6185a4203272',1,'Daikin2Protocol::__pad17__()']]], - ['_5f_5fpad18_5f_5f_10',['__pad18__',['../unionDaikin2Protocol.html#a0f1bbafed357f2b8c3792072edcd024f',1,'Daikin2Protocol']]], - ['_5f_5fpad19_5f_5f_11',['__pad19__',['../unionDaikin2Protocol.html#a8625b24852e8b61e99608d3ed6108060',1,'Daikin2Protocol']]], - ['_5f_5fpad1_5f_5f_12',['__pad1__',['../unionAirwellProtocol.html#ab2a20785c417317ac37cd1b5ef795249',1,'AirwellProtocol::__pad1__()'],['../unionAmcorProtocol.html#a9603d27ed81d3efc3b1fff2d6a877f6f',1,'AmcorProtocol::__pad1__()'],['../unionArgoProtocol.html#a87ef29a274368f72fe0e8aee0d09c241',1,'ArgoProtocol::__pad1__()'],['../unionCarrierProtocol.html#a344e5a62f7624bdc8d6b53c89d53ff01',1,'CarrierProtocol::__pad1__()'],['../unionCoolixProtocol.html#a40ad4befacf2e80aa8b58ffa009282d8',1,'CoolixProtocol::__pad1__()'],['../unionCoronaProtocol.html#a562183bf52e393fb07ca57f5f8341bfd',1,'CoronaProtocol::__pad1__()'],['../unionDaikinESPProtocol.html#a171688991f490457597ef35ae981364c',1,'DaikinESPProtocol::__pad1__()'],['../unionDaikin2Protocol.html#adcfa8f9e936b2d3847bf2a916398a2c6',1,'Daikin2Protocol::__pad1__()'],['../unionDaikin216Protocol.html#a195343e0e34535032963cf7a2e860310',1,'Daikin216Protocol::__pad1__()'],['../unionDaikin160Protocol.html#a019c8599ff9271e4d85294aa9d30f7b3',1,'Daikin160Protocol::__pad1__()'],['../unionDaikin176Protocol.html#a4bc397de2956316e96548d0d91c9e853',1,'Daikin176Protocol::__pad1__()'],['../unionDaikin128Protocol.html#acbbe6f9c88b1ac0e0accc9e7da3d6f56',1,'Daikin128Protocol::__pad1__()'],['../unionDaikin152Protocol.html#aa0078b4986f0c5af41e4eb6c66bbbcdf',1,'Daikin152Protocol::__pad1__()'],['../unionDaikin64Protocol.html#a85e8ad5d286b0c048651a22939185f46',1,'Daikin64Protocol::__pad1__()'],['../unionDelonghiProtocol.html#a26a942f261b6d45e3d3a9734b8535c8d',1,'DelonghiProtocol::__pad1__()'],['../unionEcoclimProtocol.html#af5e0d8721a854eacd373ba6b3907bfcc',1,'EcoclimProtocol::__pad1__()'],['../unionElectraProtocol.html#a144dab2a792292298898217b72ffe95a',1,'ElectraProtocol::__pad1__()'],['../unionFujitsuProtocol.html#a419bfbb3660ce591194319f23f7b03e3',1,'FujitsuProtocol::__pad1__()'],['../unionGoodweatherProtocol.html#af377b40f40c2182c39892322d48b6e41',1,'GoodweatherProtocol::__pad1__()'],['../unionGreeProtocol.html#a094751746e21e5ae70ff7ace3b84c75d',1,'GreeProtocol::__pad1__()'],['../unionHaierProtocol.html#a8e91589ca0e2db529f73e3f8ecbb00a0',1,'HaierProtocol::__pad1__()'],['../unionHaierYRW02Protocol.html#aa20f4bbeb35dfa6afe0af4c7ea1cc498',1,'HaierYRW02Protocol::__pad1__()'],['../unionHitachiProtocol.html#a1c8b361a818c9c39d4fa68e89f9a8e22',1,'HitachiProtocol::__pad1__()'],['../unionHitachi424Protocol.html#a242455776887250de614f82c786a7305',1,'Hitachi424Protocol::__pad1__()'],['../unionHitachi1Protocol.html#a5a1391e156a30793572f4fe2b0b09bce',1,'Hitachi1Protocol::__pad1__()'],['../unionKelvinatorProtocol.html#a3e434ffef93cd99fe33800f87f5f4c02',1,'KelvinatorProtocol::__pad1__()'],['../unionLGProtocol.html#a6ed86f00b55c5e136039ccb4d8b92bc9',1,'LGProtocol::__pad1__()'],['../unionMideaProtocol.html#a3351e3af6d3f214536e593c450fa0915',1,'MideaProtocol::__pad1__()'],['../unionMitsubishi144Protocol.html#a73a24c6aed86265c733bd65c52c71a2b',1,'Mitsubishi144Protocol::__pad1__()'],['../unionMitsubishi136Protocol.html#abf3c48fa8afee2e538c4edd691df1cc3',1,'Mitsubishi136Protocol::__pad1__()'],['../unionMitsubishi112Protocol.html#ab9760331882703b5b80a30f9ba008e66',1,'Mitsubishi112Protocol::__pad1__()'],['../unionMitsubishi152Protocol.html#a758cb7e9d347f8642f680ec803e12282',1,'Mitsubishi152Protocol::__pad1__()'],['../unionMitsubishi88Protocol.html#aa46d6fc69b2de17ea7fd1c3e06b953c0',1,'Mitsubishi88Protocol::__pad1__()'],['../unionNeoclimaProtocol.html#a76421acbe5fd17e423d2e1159261f4e2',1,'NeoclimaProtocol::__pad1__()'],['../unionPanasonicAc32Protocol.html#a5cda61ba9d077c018393878bac8ef02e',1,'PanasonicAc32Protocol::__pad1__()'],['../unionSamsungProtocol.html#a9cee9377b1f9e1481ddc996c20d17fa0',1,'SamsungProtocol::__pad1__()'],['../unionSanyoProtocol.html#afcd8e773058c6c1c61c1ca8fadec557a',1,'SanyoProtocol::__pad1__()'],['../unionSharpProtocol.html#abd9e4cc871884cfc1fa50c0785e20dca',1,'SharpProtocol::__pad1__()'],['../unionTcl112Protocol.html#a4eadf5f4b418c756332c565db930bc4b',1,'Tcl112Protocol::__pad1__()'],['../unionTechnibelProtocol.html#a21dcbf63bcb5f9a2071d186d8d0ee7f7',1,'TechnibelProtocol::__pad1__()'],['../unionTecoProtocol.html#a5fc378f32498bb71500d9ca68ccd71d6',1,'TecoProtocol::__pad1__()'],['../unionToshibaProtocol.html#a33806189420dacc911832a0290364acc',1,'ToshibaProtocol::__pad1__()'],['../unionTranscoldProtocol.html#a3dc6ac4b02073bd781632c1f1f7c8805',1,'TranscoldProtocol::__pad1__()'],['../unionTrotecProtocol.html#a0e7816aae4f8d5f604103a5e25ad5c4d',1,'TrotecProtocol::__pad1__()'],['../unionTrumaProtocol.html#a8124c299b6ad13bc42bfd0c18b774d62',1,'TrumaProtocol::__pad1__()'],['../unionVestelProtocol.html#a30aa4f861223ae78a3735cbefb71b894',1,'VestelProtocol::__pad1__()'],['../unionVoltasProtocol.html#a80c4eeb8eea30866ef991cab330f6def',1,'VoltasProtocol::__pad1__()'],['../unionWhirlpoolProtocol.html#a1a6a151ac226c361d7fb9c5775959719',1,'WhirlpoolProtocol::__pad1__()']]], - ['_5f_5fpad20_5f_5f_13',['__pad20__',['../unionDaikin2Protocol.html#a5263b84da0ca6a26a32f9235054d975a',1,'Daikin2Protocol']]], - ['_5f_5fpad21_5f_5f_14',['__pad21__',['../unionDaikin2Protocol.html#a2d1fa760cd0d6e2420a63dac338d5c72',1,'Daikin2Protocol']]], - ['_5f_5fpad22_5f_5f_15',['__pad22__',['../unionDaikin2Protocol.html#aec8c4d930e4d316428d9f0aa52fa307a',1,'Daikin2Protocol']]], - ['_5f_5fpad23_5f_5f_16',['__pad23__',['../unionDaikin2Protocol.html#a1d13146bb96e0f1a38f61ff473a95787',1,'Daikin2Protocol']]], - ['_5f_5fpad24_5f_5f_17',['__pad24__',['../unionDaikin2Protocol.html#a1c39c5b58eea52a36b52d6a69d841368',1,'Daikin2Protocol']]], - ['_5f_5fpad2_5f_5f_18',['__pad2__',['../unionAirwellProtocol.html#a3ba38aea4ada26e1936478d737e2080a',1,'AirwellProtocol::__pad2__()'],['../unionAmcorProtocol.html#afefa908f10f814fadde57efdc4dce76c',1,'AmcorProtocol::__pad2__()'],['../unionArgoProtocol.html#a44dff1537c390a45ee43c57f2b80050d',1,'ArgoProtocol::__pad2__()'],['../unionCarrierProtocol.html#aac511fa89b32f24a01d179c37fffc2fa',1,'CarrierProtocol::__pad2__()'],['../unionCoolixProtocol.html#a6d0452c77ec2042ecd9f6067fae5333d',1,'CoolixProtocol::__pad2__()'],['../unionCoronaProtocol.html#a53c510747a6970ea6f0172a39194369d',1,'CoronaProtocol::__pad2__()'],['../unionDaikinESPProtocol.html#a01827591728378573fa1c6de1d0fb047',1,'DaikinESPProtocol::__pad2__()'],['../unionDaikin2Protocol.html#a18d60de4ac1cd64c9544d275bd2f0d77',1,'Daikin2Protocol::__pad2__()'],['../unionDaikin216Protocol.html#a1c7d014ca2fbab35649ac04e711090e4',1,'Daikin216Protocol::__pad2__()'],['../unionDaikin160Protocol.html#a18fa821c54eaebb5b728914976f33c10',1,'Daikin160Protocol::__pad2__()'],['../unionDaikin176Protocol.html#ae78012028d2d6983028aed4206347f68',1,'Daikin176Protocol::__pad2__()'],['../unionDaikin128Protocol.html#af5cb68ecd15fba7cafa9252479f8f8bd',1,'Daikin128Protocol::__pad2__()'],['../unionDaikin152Protocol.html#af147c5af64b24303b2975f44d73b6e60',1,'Daikin152Protocol::__pad2__()'],['../unionDelonghiProtocol.html#a78b2654018ed1c8c9a762ee6b1241bdc',1,'DelonghiProtocol::__pad2__()'],['../unionEcoclimProtocol.html#a8e6682232e119fc85a7de034a454072b',1,'EcoclimProtocol::__pad2__()'],['../unionElectraProtocol.html#abcc4e66431cd1ffadcdd3e25c611e306',1,'ElectraProtocol::__pad2__()'],['../unionFujitsuProtocol.html#af4b24c6663c4b4b94ea13c66ee3a122d',1,'FujitsuProtocol::__pad2__()'],['../unionGoodweatherProtocol.html#af9191479578e5541782ab08dca536cd8',1,'GoodweatherProtocol::__pad2__()'],['../unionGreeProtocol.html#a715441faac2bdd5dc37d6a3efcc99c4f',1,'GreeProtocol::__pad2__()'],['../unionHaierYRW02Protocol.html#a51178359e3860a50dbf53bda14b5a88c',1,'HaierYRW02Protocol::__pad2__()'],['../unionHitachiProtocol.html#a057c243efc8dea1fb191a5e46e919945',1,'HitachiProtocol::__pad2__()'],['../unionHitachi424Protocol.html#af8456076f173c8ba3fe398a4b603d7f9',1,'Hitachi424Protocol::__pad2__()'],['../unionHitachi1Protocol.html#a8817d394030fff87bf433137fc7cd616',1,'Hitachi1Protocol::__pad2__()'],['../unionKelvinatorProtocol.html#a612fd8e28cb1ca0b675f6397465422fb',1,'KelvinatorProtocol::__pad2__()'],['../unionMideaProtocol.html#ab638086cc0b8d25fba57278c7ba881cb',1,'MideaProtocol::__pad2__()'],['../unionMitsubishi144Protocol.html#a8adaf8e3c219a7deb561bd54783d58c8',1,'Mitsubishi144Protocol::__pad2__()'],['../unionMitsubishi136Protocol.html#a787183f490db45ea0421cd90aa8ee58b',1,'Mitsubishi136Protocol::__pad2__()'],['../unionMitsubishi112Protocol.html#aec7545bf250d0f8a5035d518258978d7',1,'Mitsubishi112Protocol::__pad2__()'],['../unionMitsubishi152Protocol.html#aebca5fcc9d424d56fb46ba275c5b9f9b',1,'Mitsubishi152Protocol::__pad2__()'],['../unionMitsubishi88Protocol.html#ad644461a3b45b36ee3feabee34897e90',1,'Mitsubishi88Protocol::__pad2__()'],['../unionNeoclimaProtocol.html#ae25f51e0b116bf7587527b8b41b27bec',1,'NeoclimaProtocol::__pad2__()'],['../unionPanasonicAc32Protocol.html#ab2296c3c02d374663675d476bc0b2b0c',1,'PanasonicAc32Protocol::__pad2__()'],['../unionSamsungProtocol.html#a3594b63392afa71e288b96e0ee488690',1,'SamsungProtocol::__pad2__()'],['../unionSanyoProtocol.html#af762ec4bca951f0a8193be08692a9b3e',1,'SanyoProtocol::__pad2__()'],['../unionSharpProtocol.html#af02d3d154667f63afbacb9f50e40ddd2',1,'SharpProtocol::__pad2__()'],['../unionTcl112Protocol.html#ac3ca9623e507753cacd7303b1a0272b2',1,'Tcl112Protocol::__pad2__()'],['../unionTechnibelProtocol.html#a76022ef93412caed8f938cd76eae288e',1,'TechnibelProtocol::__pad2__()'],['../unionTecoProtocol.html#a6f255afef8feea0838b60ca308a3fe15',1,'TecoProtocol::__pad2__()'],['../unionToshibaProtocol.html#ab976a3d007474db50729a9d315ea2ddf',1,'ToshibaProtocol::__pad2__()'],['../unionTranscoldProtocol.html#a72050e0bc1c4828c9277b67803315868',1,'TranscoldProtocol::__pad2__()'],['../unionTrotecProtocol.html#af25bde6df1a74da8fecada128f23ba48',1,'TrotecProtocol::__pad2__()'],['../unionTrumaProtocol.html#a86e5187205b4ca9a16147160de04585d',1,'TrumaProtocol::__pad2__()'],['../unionVestelProtocol.html#a4a611ce846177ae4b9bc7cd6a60bf17f',1,'VestelProtocol::__pad2__()'],['../unionVoltasProtocol.html#a4c2798df803074bcde8ddf6c7e855d91',1,'VoltasProtocol::__pad2__()'],['../unionWhirlpoolProtocol.html#ab7f93602ea91e831fbb1d0d5862c690b',1,'WhirlpoolProtocol::__pad2__()']]], - ['_5f_5fpad3_5f_5f_19',['__pad3__',['../unionAmcorProtocol.html#a25002ba50158c3ee26d20d94d3507a9b',1,'AmcorProtocol::__pad3__()'],['../unionArgoProtocol.html#a6b383394993c83f6ed098826e5c02a4a',1,'ArgoProtocol::__pad3__()'],['../unionCarrierProtocol.html#a50193ce74f535d6dad154a96f54adb48',1,'CarrierProtocol::__pad3__()'],['../unionCoronaProtocol.html#a5f0dd8e7b0d0b5673088416e2f88df6e',1,'CoronaProtocol::__pad3__()'],['../unionDaikinESPProtocol.html#a2ef5628a9259b528c700a990bf411c01',1,'DaikinESPProtocol::__pad3__()'],['../unionDaikin2Protocol.html#aa6331c57c9e4a96077f449839fdf44e4',1,'Daikin2Protocol::__pad3__()'],['../unionDaikin216Protocol.html#a8c2dd3c46d384ce286dc4790afe31ffd',1,'Daikin216Protocol::__pad3__()'],['../unionDaikin160Protocol.html#ac3a48f7a81ec67c0d4cc1b4ac8ba7f59',1,'Daikin160Protocol::__pad3__()'],['../unionDaikin176Protocol.html#ab630c3dd3b3f6c733b255a4de5ca7642',1,'Daikin176Protocol::__pad3__()'],['../unionDaikin128Protocol.html#ac7a7623a3947b3cdd43a49ccd6359f3b',1,'Daikin128Protocol::__pad3__()'],['../unionDaikin152Protocol.html#a46b0a6cc3b11fc0f6c9a636be660cc42',1,'Daikin152Protocol::__pad3__()'],['../unionDelonghiProtocol.html#a98b1173e0d07b4a29506f5df0f396e72',1,'DelonghiProtocol::__pad3__()'],['../unionEcoclimProtocol.html#acddb949003223952f34beba59abbe319',1,'EcoclimProtocol::__pad3__()'],['../unionElectraProtocol.html#a6403f6b51a0deec451ccc385663ac0ab',1,'ElectraProtocol::__pad3__()'],['../unionFujitsuProtocol.html#a3f6c0bc00666716575cb48805f88fc80',1,'FujitsuProtocol::__pad3__()'],['../unionGoodweatherProtocol.html#ac9e781a9b5d7f9631c0b4696bca0bcef',1,'GoodweatherProtocol::__pad3__()'],['../unionGreeProtocol.html#a7291d729f3b5638cb160afbda37baba1',1,'GreeProtocol::__pad3__()'],['../unionHaierYRW02Protocol.html#ad2c1066a2d796f49424feb2612df3d98',1,'HaierYRW02Protocol::__pad3__()'],['../unionHitachiProtocol.html#a81ef6998c55ca142aa0418bfcdcfa3f1',1,'HitachiProtocol::__pad3__()'],['../unionHitachi424Protocol.html#aa0c15cc7acbf16f76a5194d1b2512cce',1,'Hitachi424Protocol::__pad3__()'],['../unionHitachi1Protocol.html#a8f53a39a6f727509b9faa1e41df34e65',1,'Hitachi1Protocol::__pad3__()'],['../unionKelvinatorProtocol.html#a35b5c9cd85f4b8c9eeec9231321acb5e',1,'KelvinatorProtocol::__pad3__()'],['../unionMitsubishi144Protocol.html#a5fd5cf0329ffc81873452121bc6c694b',1,'Mitsubishi144Protocol::__pad3__()'],['../unionMitsubishi136Protocol.html#aac4daa062404ef7de66285c661bd07c1',1,'Mitsubishi136Protocol::__pad3__()'],['../unionMitsubishi112Protocol.html#a61f23d1857c90d6bbb6c2c4bdd5f4366',1,'Mitsubishi112Protocol::__pad3__()'],['../unionMitsubishi152Protocol.html#a46ae84f569070c49ac38f922cb1ef418',1,'Mitsubishi152Protocol::__pad3__()'],['../unionMitsubishi88Protocol.html#a32d9cf7a2c286e7a54700685c8c7f971',1,'Mitsubishi88Protocol::__pad3__()'],['../unionNeoclimaProtocol.html#af6dbc91124759aa129d1f90e6dc72018',1,'NeoclimaProtocol::__pad3__()'],['../unionPanasonicAc32Protocol.html#a7c4bfcb851fdb80a894a63b2315735d8',1,'PanasonicAc32Protocol::__pad3__()'],['../unionSamsungProtocol.html#a604db5fe346dd0260352ceb8110fa9fc',1,'SamsungProtocol::__pad3__()'],['../unionSanyoProtocol.html#a8361c7d8c6d8c29cb32cf8fc767af20d',1,'SanyoProtocol::__pad3__()'],['../unionSharpProtocol.html#a16dd55080d92063e1f94a8d0001f5422',1,'SharpProtocol::__pad3__()'],['../unionTcl112Protocol.html#affe38fa7d2100bea87de4071e21fc2b6',1,'Tcl112Protocol::__pad3__()'],['../unionToshibaProtocol.html#a98c82a98cf2cdaf6a90689a56a76b3d5',1,'ToshibaProtocol::__pad3__()'],['../unionTrotecProtocol.html#aa8d15923ce801a0066bc656f1de7c022',1,'TrotecProtocol::__pad3__()'],['../unionTrumaProtocol.html#a37e7eac9fb988eaf6e09b5006c38fcac',1,'TrumaProtocol::__pad3__()'],['../unionVestelProtocol.html#a0c33c79555a228be2c4daf1fc67d5916',1,'VestelProtocol::__pad3__()'],['../unionVoltasProtocol.html#aa63b5dd18bc7376a712e7dd16d594525',1,'VoltasProtocol::__pad3__()'],['../unionWhirlpoolProtocol.html#a6bbb9f4faf465e74c2d3a66f17b1df48',1,'WhirlpoolProtocol::__pad3__()']]], - ['_5f_5fpad4_5f_5f_20',['__pad4__',['../unionAmcorProtocol.html#a4375506f729c9d45a1269aea9d968889',1,'AmcorProtocol::__pad4__()'],['../unionArgoProtocol.html#a2c425c7f223a53cdb33a783d133f5a77',1,'ArgoProtocol::__pad4__()'],['../unionCarrierProtocol.html#ade0f53c0cd05eaad14f0a3f0121e7b5e',1,'CarrierProtocol::__pad4__()'],['../unionCoronaProtocol.html#a58df374f27d3733fc63d3cc040478293',1,'CoronaProtocol::__pad4__()'],['../unionDaikinESPProtocol.html#a7014ed7555ab0ee36e2579fcb8df1f98',1,'DaikinESPProtocol::__pad4__()'],['../unionDaikin2Protocol.html#a62d5a48a2ed939f962d01ccc36240140',1,'Daikin2Protocol::__pad4__()'],['../unionDaikin216Protocol.html#a0b0ecd2afae9e01895d9eb9d7006ed79',1,'Daikin216Protocol::__pad4__()'],['../unionDaikin160Protocol.html#a74bccea5226643c27859b38a12a59be9',1,'Daikin160Protocol::__pad4__()'],['../unionDaikin176Protocol.html#a7a87ca0ff85353e3a3e0853af8784f0e',1,'Daikin176Protocol::__pad4__()'],['../unionDaikin128Protocol.html#a6646f9ae8d244cfd6ce6ae8444c26ee9',1,'Daikin128Protocol::__pad4__()'],['../unionDaikin152Protocol.html#afe5f17c62a8ba5ae29e4e2bb59aa1529',1,'Daikin152Protocol::__pad4__()'],['../unionDelonghiProtocol.html#a4cc4153806e037068b52d1f356bca2ef',1,'DelonghiProtocol::__pad4__()'],['../unionElectraProtocol.html#aca5ea0ef13aa3ad08fc35e0a5ba90b44',1,'ElectraProtocol::__pad4__()'],['../unionFujitsuProtocol.html#a62ccdc24ef47c68b3b13e35becaec99a',1,'FujitsuProtocol::__pad4__()'],['../unionGoodweatherProtocol.html#a15507e180c97e420b5d6fe3c0bc61fb8',1,'GoodweatherProtocol::__pad4__()'],['../unionGreeProtocol.html#a6caf58eb68a83c0686dbd65d7a35cb58',1,'GreeProtocol::__pad4__()'],['../unionHaierYRW02Protocol.html#a62e17795ebcaea82715972f98d5408ca',1,'HaierYRW02Protocol::__pad4__()'],['../unionHitachiProtocol.html#ad774d48d4f5aeea2866393fdfe3f555d',1,'HitachiProtocol::__pad4__()'],['../unionHitachi424Protocol.html#ae8a14021f2ffbbc8e371a98746f48254',1,'Hitachi424Protocol::__pad4__()'],['../unionKelvinatorProtocol.html#ac5dfd253e66fe1ec3e81861ff9831152',1,'KelvinatorProtocol::__pad4__()'],['../unionMitsubishi144Protocol.html#a3b863e77427d3a0e1aa253a78f7b74a2',1,'Mitsubishi144Protocol::__pad4__()'],['../unionMitsubishi136Protocol.html#abccf31e8af18978d9a1a88e89d940e09',1,'Mitsubishi136Protocol::__pad4__()'],['../unionMitsubishi112Protocol.html#a85d5019e05dd9f03a1f7ee064a88a942',1,'Mitsubishi112Protocol::__pad4__()'],['../unionMitsubishi152Protocol.html#a433f0416bbb79637c6f9fbe2acceac87',1,'Mitsubishi152Protocol::__pad4__()'],['../unionMitsubishi88Protocol.html#a9ea2db6c6894570bca8d28ca291257d4',1,'Mitsubishi88Protocol::__pad4__()'],['../unionNeoclimaProtocol.html#a8a71980caab28f7ec1d9db296e59b9b6',1,'NeoclimaProtocol::__pad4__()'],['../unionSamsungProtocol.html#aa760a13dc0616a19bdb0d26247f4069c',1,'SamsungProtocol::__pad4__()'],['../unionSanyoProtocol.html#a02c7bd013488fa887bb5c7f769ae7701',1,'SanyoProtocol::__pad4__()'],['../unionSharpProtocol.html#ad2f9ae4c63f0e3d7bf5ea29641f64f45',1,'SharpProtocol::__pad4__()'],['../unionTcl112Protocol.html#ae6dae45ebb41b93a08a5279123f2eb2c',1,'Tcl112Protocol::__pad4__()'],['../unionToshibaProtocol.html#a1dda567a649fbc2b9c62b88453d91a95',1,'ToshibaProtocol::__pad4__()'],['../unionTrotecProtocol.html#ad029528c5697ef44f4398297626ed3b0',1,'TrotecProtocol::__pad4__()'],['../unionTrumaProtocol.html#a47b0981e1af1482b07426ab2556239c4',1,'TrumaProtocol::__pad4__()'],['../unionVestelProtocol.html#aec62b8fe14c683d97ecae5f35c114a36',1,'VestelProtocol::__pad4__()'],['../unionVoltasProtocol.html#ab0ec8c8b4f98d8ad2185259a1013f20b',1,'VoltasProtocol::__pad4__()'],['../unionWhirlpoolProtocol.html#a4dd07f43eb81c73da20b4090a808cfb4',1,'WhirlpoolProtocol::__pad4__()']]], - ['_5f_5fpad5_5f_5f_21',['__pad5__',['../unionAmcorProtocol.html#aa2fa57304833e2067f438d74f898dfc8',1,'AmcorProtocol::__pad5__()'],['../unionArgoProtocol.html#aa3990245fbd608c4a4e7fef690532656',1,'ArgoProtocol::__pad5__()'],['../unionCarrierProtocol.html#a635772a0e49e2a82b7e665b1f8d42148',1,'CarrierProtocol::__pad5__()'],['../unionCoronaProtocol.html#a8a34423073c0a91ace50605fc8337bc0',1,'CoronaProtocol::__pad5__()'],['../unionDaikinESPProtocol.html#a2fd0730f664fb53db682583eec683655',1,'DaikinESPProtocol::__pad5__()'],['../unionDaikin2Protocol.html#ae8820509ea3d0d469eeaf2c6b24b1cc6',1,'Daikin2Protocol::__pad5__()'],['../unionDaikin216Protocol.html#af741df8a92304153646c72e327a1f84c',1,'Daikin216Protocol::__pad5__()'],['../unionDaikin160Protocol.html#a3d27052aa6059811302d7b55c0f937f4',1,'Daikin160Protocol::__pad5__()'],['../unionDaikin176Protocol.html#a3072452ff1a6f05474bf41e1a9ceed9c',1,'Daikin176Protocol::__pad5__()'],['../unionDaikin152Protocol.html#a341c6fab12f9de609675822e437033dc',1,'Daikin152Protocol::__pad5__()'],['../unionDelonghiProtocol.html#a09090f4876d843dc6c4425e2f2e9b285',1,'DelonghiProtocol::__pad5__()'],['../unionElectraProtocol.html#a104239d43eacdb9a3a02a390f0162e90',1,'ElectraProtocol::__pad5__()'],['../unionFujitsuProtocol.html#aee4a515da60b77610fd3f6ae79d23693',1,'FujitsuProtocol::__pad5__()'],['../unionGoodweatherProtocol.html#a30b3e624d81d69c2a3f1365692b6a1e9',1,'GoodweatherProtocol::__pad5__()'],['../unionHaierYRW02Protocol.html#a7405f45e3dfb5230a6e531c3ea5bd2cc',1,'HaierYRW02Protocol::__pad5__()'],['../unionHitachi424Protocol.html#aa366817e22645701ccd3ffa37d7317eb',1,'Hitachi424Protocol::__pad5__()'],['../unionKelvinatorProtocol.html#a57849bb224e56d4cee776299d1ca04b4',1,'KelvinatorProtocol::__pad5__()'],['../unionMitsubishi144Protocol.html#ae4e8f971ea13ebced975441862bc9ae8',1,'Mitsubishi144Protocol::__pad5__()'],['../unionMitsubishi112Protocol.html#ab2ef871a7872995119e7c0055bd532ca',1,'Mitsubishi112Protocol::__pad5__()'],['../unionMitsubishi152Protocol.html#a9041f537b5d1dafd244c48d8f9a6e7ee',1,'Mitsubishi152Protocol::__pad5__()'],['../unionNeoclimaProtocol.html#aabf9592dcc470f8eba1a39e8633cf597',1,'NeoclimaProtocol::__pad5__()'],['../unionSamsungProtocol.html#a81057e26a43dcb99dc5b14d31dc900f5',1,'SamsungProtocol::__pad5__()'],['../unionSanyoProtocol.html#afe99c3e0bad0c7da17cf26a2fab655fc',1,'SanyoProtocol::__pad5__()'],['../unionSharpProtocol.html#a3ab9b37f4ad117e094210d7576e38d92',1,'SharpProtocol::__pad5__()'],['../unionTcl112Protocol.html#af7625c2439f53ca9b9865056d8c304b0',1,'Tcl112Protocol::__pad5__()'],['../unionToshibaProtocol.html#aea55884c83704873093edf6aa89e5515',1,'ToshibaProtocol::__pad5__()'],['../unionTrotecProtocol.html#a44b5f228f9f74a83f93d5d4d772b5b4c',1,'TrotecProtocol::__pad5__()'],['../unionTrumaProtocol.html#a158f1727d5503b42fa8b8289f5077c1c',1,'TrumaProtocol::__pad5__()'],['../unionVestelProtocol.html#a59279963eb0888f6f0669987f43c7440',1,'VestelProtocol::__pad5__()'],['../unionVoltasProtocol.html#af25903098b89acf7d2b6ebc08eea3ce5',1,'VoltasProtocol::__pad5__()'],['../unionWhirlpoolProtocol.html#a6cd9a96ce3841158165039b0e7e85bcc',1,'WhirlpoolProtocol::__pad5__()']]], - ['_5f_5fpad6_5f_5f_22',['__pad6__',['../unionAmcorProtocol.html#ac7c9258f0465028a4d95468e9289a95e',1,'AmcorProtocol::__pad6__()'],['../unionArgoProtocol.html#a644f13f404fc89ac769437a1cf6ef5cc',1,'ArgoProtocol::__pad6__()'],['../unionCarrierProtocol.html#a683b70f292ffed7253b8956225a71a51',1,'CarrierProtocol::__pad6__()'],['../unionCoronaProtocol.html#aabdd6e87ab321b893f07461f755094c0',1,'CoronaProtocol::__pad6__()'],['../unionDaikinESPProtocol.html#a90b66e353330ccc293e1eb1011fd867c',1,'DaikinESPProtocol::__pad6__()'],['../unionDaikin2Protocol.html#a7ab72b8638708e7ccd77a8eddcd16222',1,'Daikin2Protocol::__pad6__()'],['../unionDaikin216Protocol.html#a69c25d121679d7f9809d7aaf3fd7dc2e',1,'Daikin216Protocol::__pad6__()'],['../unionDaikin160Protocol.html#af942373e7f265b12c5e1f8421384eec2',1,'Daikin160Protocol::__pad6__()'],['../unionDaikin152Protocol.html#a1767202bcd8ceb6e74af8a4ca0d2bee0',1,'Daikin152Protocol::__pad6__()'],['../unionElectraProtocol.html#a9e6ecfaa9e412c66289ce7053adb0b9b',1,'ElectraProtocol::__pad6__()'],['../unionFujitsuProtocol.html#a7cf469c79816ca98736f98ddb5748bd1',1,'FujitsuProtocol::__pad6__()'],['../unionGoodweatherProtocol.html#a426e1226b9b4427db41ab2b05ee6ed41',1,'GoodweatherProtocol::__pad6__()'],['../unionHaierYRW02Protocol.html#a03595ed00f070b0eecc647f426c2c9b1',1,'HaierYRW02Protocol::__pad6__()'],['../unionHitachi424Protocol.html#a6493b7bbcf755459eac23c47752c2ec4',1,'Hitachi424Protocol::__pad6__()'],['../unionKelvinatorProtocol.html#aa66ce8c926b143fa20f625272327f562',1,'KelvinatorProtocol::__pad6__()'],['../unionMitsubishi144Protocol.html#a4c0c204c7b2a5e74501064c648e2208e',1,'Mitsubishi144Protocol::__pad6__()'],['../unionMitsubishi112Protocol.html#aa4d66539685a6f96e7dd8fbe3d8e0107',1,'Mitsubishi112Protocol::__pad6__()'],['../unionMitsubishi152Protocol.html#abff52e55e71cd57b440094cd3dd9e115',1,'Mitsubishi152Protocol::__pad6__()'],['../unionNeoclimaProtocol.html#aad51233672b91f2ce68e950d4c50765e',1,'NeoclimaProtocol::__pad6__()'],['../unionSamsungProtocol.html#afa02814c4753f639a90ab6a23ef110d9',1,'SamsungProtocol::__pad6__()'],['../unionSanyoProtocol.html#a791ae08f3ba857068ae743192b59c82b',1,'SanyoProtocol::__pad6__()'],['../unionSharpProtocol.html#abedfd3c4badb1196e3e9b70a74288a56',1,'SharpProtocol::__pad6__()'],['../unionTcl112Protocol.html#a61cf175094f4bc60ab3af7f92d47d3ee',1,'Tcl112Protocol::__pad6__()'],['../unionToshibaProtocol.html#a70a740582720c7e99c1f0a19373e69eb',1,'ToshibaProtocol::__pad6__()'],['../unionTrotecProtocol.html#a66ea84463a2951cdc77ae7f08cd91600',1,'TrotecProtocol::__pad6__()'],['../unionVoltasProtocol.html#a1fc2d4c2b5792d53d364e61b84ca1fb0',1,'VoltasProtocol::__pad6__()'],['../unionWhirlpoolProtocol.html#a2918410c20d3861dda9c03e3ede1d802',1,'WhirlpoolProtocol::__pad6__()']]], - ['_5f_5fpad7_5f_5f_23',['__pad7__',['../unionAmcorProtocol.html#a06dbf04a6bb3326c3277308bee61e375',1,'AmcorProtocol::__pad7__()'],['../unionArgoProtocol.html#a981cc0905966560692835630b870bc96',1,'ArgoProtocol::__pad7__()'],['../unionCarrierProtocol.html#a21fe681b7a9b1a507d03b6eef716f57d',1,'CarrierProtocol::__pad7__()'],['../unionCoronaProtocol.html#aa833c2aa87c8b67ded46784d9d9fd506',1,'CoronaProtocol::__pad7__()'],['../unionDaikinESPProtocol.html#a6800cde1656446518ea87f1118439b03',1,'DaikinESPProtocol::__pad7__()'],['../unionDaikin2Protocol.html#a6aa60bc17385c5e18c12e384a1d4c0a8',1,'Daikin2Protocol::__pad7__()'],['../unionDaikin152Protocol.html#ac4382a8fab79df328801f8ec55dc8e57',1,'Daikin152Protocol::__pad7__()'],['../unionElectraProtocol.html#a985fb931c2ddcc73fefd4c207ed3e1a9',1,'ElectraProtocol::__pad7__()'],['../unionFujitsuProtocol.html#adeff2904e753c8d964465732b86fc2c5',1,'FujitsuProtocol::__pad7__()'],['../unionHaierYRW02Protocol.html#a13f95461887012ca8a0d27ce71c65cb6',1,'HaierYRW02Protocol::__pad7__()'],['../unionKelvinatorProtocol.html#a02e3f067fc93fae6f5656abe574bb440',1,'KelvinatorProtocol::__pad7__()'],['../unionMitsubishi152Protocol.html#ae9fcb056173bc5189802a0854b86ec45',1,'Mitsubishi152Protocol::__pad7__()'],['../unionNeoclimaProtocol.html#a141f688a97a101159035a384da7aba21',1,'NeoclimaProtocol::__pad7__()'],['../unionSamsungProtocol.html#a9566b98e808ae427eb3f6091c46ba8cb',1,'SamsungProtocol::__pad7__()'],['../unionSanyoProtocol.html#a1193bfb80754a3d4393bb638f17bafc4',1,'SanyoProtocol::__pad7__()'],['../unionSharpProtocol.html#a97bd3208dfa6bc72a37aee33c419b1ec',1,'SharpProtocol::__pad7__()'],['../unionTcl112Protocol.html#adc928f47f29d1b4bf33e7bd35c9987bd',1,'Tcl112Protocol::__pad7__()'],['../unionToshibaProtocol.html#a722c3fbf8955ca74f2ce7d8c5106301e',1,'ToshibaProtocol::__pad7__()'],['../unionWhirlpoolProtocol.html#a06cd885d96a9cb40b173ed243e1c68f1',1,'WhirlpoolProtocol::__pad7__()']]], - ['_5f_5fpad8_5f_5f_24',['__pad8__',['../unionAmcorProtocol.html#a7a602c91754a62acb96b65fad3ed5009',1,'AmcorProtocol::__pad8__()'],['../unionArgoProtocol.html#aada1e2f63bf852c820d3313d6bf55e2e',1,'ArgoProtocol::__pad8__()'],['../unionDaikinESPProtocol.html#a5257adef869633be571d00ff185e177b',1,'DaikinESPProtocol::__pad8__()'],['../unionDaikin2Protocol.html#ab0e5af627d95aa7d2a7ffecbeb34cd1e',1,'Daikin2Protocol::__pad8__()'],['../unionDaikin152Protocol.html#a36da6d6a07db0d3c4c559fb5319cf653',1,'Daikin152Protocol::__pad8__()'],['../unionElectraProtocol.html#aad3d9638d69b6a92f8e4205456d7b1e4',1,'ElectraProtocol::__pad8__()'],['../unionFujitsuProtocol.html#aaf3462eb6604ea7875995797805e69b1',1,'FujitsuProtocol::__pad8__()'],['../unionHaierYRW02Protocol.html#ab0640cdf0ae186ef0a75699bb2ab2247',1,'HaierYRW02Protocol::__pad8__()'],['../unionKelvinatorProtocol.html#ab2101275d6280bc95665d64ca936d4d2',1,'KelvinatorProtocol::__pad8__()'],['../unionMitsubishi152Protocol.html#acac643d9404b978f6f23e10dedee0076',1,'Mitsubishi152Protocol::__pad8__()'],['../unionNeoclimaProtocol.html#a96a021ba5d0cf5ffa0d8389b8c71f572',1,'NeoclimaProtocol::__pad8__()'],['../unionSamsungProtocol.html#a9c421e874b7ef2943cc7dfd37b35585f',1,'SamsungProtocol::__pad8__()'],['../unionSanyoProtocol.html#a41960ddb576d82e70010fa0699d88c74',1,'SanyoProtocol::__pad8__()'],['../unionSharpProtocol.html#a69a77f391ddca92c6ec7b26de9e1a4ea',1,'SharpProtocol::__pad8__()'],['../unionToshibaProtocol.html#afff1b9b96aa68e6d0772f361019e2684',1,'ToshibaProtocol::__pad8__()'],['../unionWhirlpoolProtocol.html#a00025b90681d37c8ee3daa93cf870a3d',1,'WhirlpoolProtocol::__pad8__()']]], - ['_5f_5fpad9_5f_5f_25',['__pad9__',['../unionArgoProtocol.html#a38bc056c18e086e4ff91d86e33b0bc08',1,'ArgoProtocol::__pad9__()'],['../unionDaikinESPProtocol.html#a73486ab8f7374a19e40ffd20daae2304',1,'DaikinESPProtocol::__pad9__()'],['../unionDaikin2Protocol.html#a68031d2df7b64929392f391f0e37fdeb',1,'Daikin2Protocol::__pad9__()'],['../unionElectraProtocol.html#af1e208eaa64b08e027265f302e3fbe9d',1,'ElectraProtocol::__pad9__()'],['../unionFujitsuProtocol.html#a80f43087377c73374eacb06691dd8ba0',1,'FujitsuProtocol::__pad9__()'],['../unionHaierYRW02Protocol.html#ad5c197a23df2a768d022946347d765fe',1,'HaierYRW02Protocol::__pad9__()'],['../unionKelvinatorProtocol.html#aec71a5df4da5fd9a10e199d2112a88ce',1,'KelvinatorProtocol::__pad9__()'],['../unionMitsubishi152Protocol.html#aa96a8fa1d266927c2673472d459b0d66',1,'Mitsubishi152Protocol::__pad9__()'],['../unionNeoclimaProtocol.html#a1440db9fae372808b6360bcf60c39f03',1,'NeoclimaProtocol::__pad9__()'],['../unionSamsungProtocol.html#abcda913039808cf6b1cd7d6d8b01ce13',1,'SamsungProtocol::__pad9__()'],['../unionSanyoProtocol.html#ad6d6489ed793360fdee4b2167d1b4efb',1,'SanyoProtocol::__pad9__()'],['../unionSharpProtocol.html#a02c515fbdde1a15a8f19af0d9154e9d2',1,'SharpProtocol::__pad9__()'],['../unionWhirlpoolProtocol.html#aa7006fe4a8c77706762ec523838a7d5e',1,'WhirlpoolProtocol::__pad9__()']]], - ['_5fbackupstate_26',['_backupState',['../classIRToshibaAC.html#a108c23cb859a64228166e5385295a1e5',1,'IRToshibaAC']]], - ['_5fcancelofftimer_27',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], - ['_5fcancelontimer_28',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], - ['_5fcmd_29',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], - ['_5fdelaymicroseconds_30',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], - ['_5fdesiredtemp_31',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], - ['_5fdutycycle_32',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], - ['_5feconotoggle_33',['_EconoToggle',['../classIRMideaAC.html#a30f184751948b4412da46577578b625a',1,'IRMideaAC']]], - ['_5ffan_34',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], - ['_5fforcepower_35',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], - ['_5ffreq_5funittest_36',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], - ['_5fgeteconotoggle_37',['_getEconoToggle',['../classIRSharpAc.html#a4cbf2b92302a8b0a40e76e7431c82745',1,'IRSharpAc']]], - ['_5fgetparamsptr_38',['_getParamsPtr',['../classIRrecv.html#ae388aa2a339d589a6f9f1cc5cbbda7f4',1,'IRrecv']]], - ['_5fgettime_39',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], - ['_5fgettimer_40',['_getTimer',['../classIRCoronaAc.html#a352fedb1c80549d2b580e538d8ba7901',1,'IRCoronaAc']]], - ['_5finverted_41',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], - ['_5firrecv_42',['_IRrecv',['../namespace__IRrecv.html',1,'']]], - ['_5firsend_43',['_irsend',['../classIRAirwellAc.html#a57a01d6e65f6fa1127f8d3dc86ff8071',1,'IRAirwellAc::_irsend()'],['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIREcoclimAc.html#aa34348b379abce3ae540987c3b83ec4c',1,'IREcoclimAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelonAc.html#a7384fd6a4fb513dd56ff6b5c9f40e922',1,'IRKelonAc::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRPanasonicAc32.html#acc38daddd226f27b33835532041d5148',1,'IRPanasonicAc32::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSanyoAc.html#a5dc78b02c5d10ac717542b67b65f15d6',1,'IRSanyoAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTechnibelAc.html#adb30f91c384028cc53aaae6edaacf3b0',1,'IRTechnibelAc::_irsend()'],['../classIRTechnibelAc.html#a9db7b15e279e0c17e0eafd8201d5c7dc',1,'IRTechnibelAc::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTranscoldAc.html#a3f7136d98c100a67b97f4f8afb750fc4',1,'IRTranscoldAc::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRTrumaAc.html#abd9d54c3185e53d25c870a8e89cb0e90',1,'IRTrumaAc::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRVoltas.html#a09225bcf0cdff72f0fe35a88a91a88ad',1,'IRVoltas::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], - ['_5firtimer_5funittest_5fnow_44',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], - ['_5flastfan_45',['_lastfan',['../classIRTrumaAc.html#a7793142d962316d930372ea6beac2069',1,'IRTrumaAc']]], - ['_5flastmode_46',['_lastmode',['../classIRTrumaAc.html#a9e72a42def9956635765c6bfb54f333b',1,'IRTrumaAc']]], - ['_5flastsentpowerstate_47',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], - ['_5flighttoggle_48',['_LightToggle',['../classIRMideaAC.html#ab466b5939e796f818203220e0ca6896d',1,'IRMideaAC']]], - ['_5fmatchgeneric_49',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], - ['_5fmode_50',['_mode',['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc']]], - ['_5fmodel_51',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()'],['../classIRSharpAc.html#a93ef10252142effe9fe52d2ad9787c6c',1,'IRSharpAc::_model()'],['../classIRVoltas.html#a01270b3d5e2b0d85a3ee860edb5c3232',1,'IRVoltas::_model()']]], - ['_5fmodulation_52',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], - ['_5fpin_53',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], - ['_5fprev_54',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], - ['_5fprev_5fmode_55',['_prev_mode',['../classIRToshibaAC.html#aed47a2b5df2c06438942b00852c45ace',1,'IRToshibaAC']]], - ['_5fpreviousfan_56',['_previousFan',['../classIRKelonAc.html#abd9285d41e26dccb5d09a32662adb1b4',1,'IRKelonAc']]], - ['_5fpreviousmode_57',['_previousMode',['../classIRKelonAc.html#aff35eb29e8e612acf701cef6c53ecaba',1,'IRKelonAc']]], - ['_5fprevioustemp_58',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()'],['../classIRKelonAc.html#ab65d1fd26a3e72d1d07e6fca1cc44a1f',1,'IRKelonAc::_previousTemp()']]], - ['_5fprotocol_59',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], - ['_5frestorestate_60',['_restoreState',['../classIRToshibaAC.html#a23fb190770159f8f1e9bf64df22e8a26',1,'IRToshibaAC']]], - ['_5fsaved_61',['_saved',['../classIRCoolixAC.html#a24160742d72e8b1ee1069c9c6ddc57fa',1,'IRCoolixAC']]], - ['_5fsaved_5ftemp_62',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()'],['../classIRTechnibelAc.html#a0b98069ac7367419f736fa0e639e4847',1,'IRTechnibelAc::_saved_temp()']]], - ['_5fsaved_5ftemp_5funits_63',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc::_saved_temp_units()'],['../classIRTechnibelAc.html#a8d5a8e132e1d5884564f3212d396d160',1,'IRTechnibelAc::_saved_temp_units()']]], - ['_5fsend_5fswing_64',['_send_swing',['../classIRToshibaAC.html#a3c0873667deefce7b13a051910d13046',1,'IRToshibaAC']]], - ['_5fsendsony_65',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], - ['_5fseteconotoggle_66',['_setEconoToggle',['../classIRSharpAc.html#a959d422c7e5a5204909b299a5fbb2a69',1,'IRSharpAc']]], - ['_5fsetmode_67',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], - ['_5fsettemp_68',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], - ['_5fsettime_69',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], - ['_5fsettimer_70',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc']]], - ['_5fstate_5flength_71',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], - ['_5fstate_5flength_5fshort_72',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], - ['_5fswing_5fmode_73',['_swing_mode',['../classIRToshibaAC.html#a3d782a316cbadf2128a1392feda5c21b',1,'IRToshibaAC']]], - ['_5fswingh_74',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], - ['_5fswingvstep_75',['_SwingVStep',['../classIRMideaAC.html#a8a1c79c8a4b61075790faef879928c4b',1,'IRMideaAC']]], - ['_5fswingvtoggle_76',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], - ['_5ftemp_77',['_temp',['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], - ['_5ftimer_5fnum_78',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], - ['_5ftimerms_5funittest_5fnow_79',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], - ['_5ftolerance_80',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], - ['_5ftostring_81',['_toString',['../classIRHitachiAc424.html#af8ff90fe9beb31d8f44310a9e646a230',1,'IRHitachiAc424']]], - ['_5fturbotoggle_82',['_TurboToggle',['../classIRMideaAC.html#a86ee53513a7f47556f9cfe44d060e94c',1,'IRMideaAC']]], - ['_5funknown_5fthreshold_83',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]], - ['_5fvalidtolerance_84',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.html deleted file mode 100644 index 8eb215b90..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.js deleted file mode 100644 index 87aa515b3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1.js +++ /dev/null @@ -1,37 +0,0 @@ -var searchData= -[ - ['a705_85',['A705',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7a7478bee154c89b576fd478d9623d9281',1,'IRsend.h']]], - ['a903_86',['A903',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7a2357513b74e874971927b6b08dcc1655',1,'IRsend.h']]], - ['a907_87',['A907',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7a11c3296670bdeab9ddd87e4edb875e64',1,'IRsend.h']]], - ['add_88',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], - ['addbooltostring_89',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], - ['adddaytostring_90',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], - ['addfantostring_91',['addFanToString',['../namespaceirutils.html#af222d5a977e2cd2c979184c449d3c2f8',1,'irutils']]], - ['addinttostring_92',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], - ['addlabeledstring_93',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], - ['addmodeltostring_94',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], - ['addmodetostring_95',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], - ['address_96',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], - ['addsignedinttostring_97',['addSignedIntToString',['../namespaceirutils.html#ad8032ad49c2af274b7c9bc2ecd7d6bce',1,'irutils']]], - ['addswinghtostring_98',['addSwingHToString',['../namespaceirutils.html#ae9eeea9379788b856d148ca5bc7eaf7a',1,'irutils']]], - ['addswingvtostring_99',['addSwingVToString',['../namespaceirutils.html#a4921dc8d85aa1cc3e89aaa64c24abd58',1,'irutils']]], - ['addtempfloattostring_100',['addTempFloatToString',['../namespaceirutils.html#a3a47e2b142c7738958e367b0c80a79e7',1,'irutils']]], - ['addtemptostring_101',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], - ['adjustrepeat_102',['adjustRepeat',['../namespaceIRXmpUtils.html#a8e7705ba4373589a651e662a3debb0a8',1,'IRXmpUtils']]], - ['airflow_103',['AirFlow',['../unionGoodweatherProtocol.html#a7b876552a27a7a9bf84b1009f7b12f7a',1,'GoodweatherProtocol']]], - ['airwell_104',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac::airwell()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'AIRWELL(): IRremoteESP8266.h']]], - ['airwellprotocol_105',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]], - ['aiwa_5frc_5ft501_106',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], - ['akb75215403_107',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], - ['altmode_108',['AltMode',['../unionDaikin176Protocol.html#a05511938e152951723792dc08b33d0dd',1,'Daikin176Protocol']]], - ['amcor_109',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac::amcor()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'AMCOR(): IRremoteESP8266.h']]], - ['amcorprotocol_110',['AmcorProtocol',['../unionAmcorProtocol.html',1,'']]], - ['ardb1_111',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], - ['argo_112',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac::argo()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'ARGO(): IRremoteESP8266.h']]], - ['argoprotocol_113',['ArgoProtocol',['../unionArgoProtocol.html',1,'']]], - ['arjw2_114',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], - ['arrah2e_115',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], - ['arreb1e_116',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], - ['arrew4e_117',['ARREW4E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a15f4cef920f6b63156a209dd97189a3b',1,'IRsend.h']]], - ['arry4_118',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.html deleted file mode 100644 index 6fd3a4aa2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.js deleted file mode 100644 index 21e5f2660..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_10.js +++ /dev/null @@ -1,37 +0,0 @@ -var searchData= -[ - ['pad_3177',['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()'],['../unionSharpProtocol.html#a315ed64d8b03c559003aa032152c742e',1,'SharpProtocol::pad()']]], - ['pad0_3178',['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()'],['../unionSamsungProtocol.html#adcf56d5e9d61401deba67ae4bed32797',1,'SamsungProtocol::pad0()'],['../unionTcl112Protocol.html#a8da5d4f35f677c8d81ea628a753e110f',1,'Tcl112Protocol::pad0()'],['../unionWhirlpoolProtocol.html#a85afaae2ea603ff9aad240a67b9a770f',1,'WhirlpoolProtocol::pad0()']]], - ['pad1_3179',['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()'],['../unionKelonProtocol.html#ac0c1c5efd6837df7101355cddd2d41bb',1,'KelonProtocol::pad1()'],['../unionKelvinatorProtocol.html#a9feee780a54bfb86968f137080d3d68e',1,'KelvinatorProtocol::pad1()'],['../unionMitsubishi144Protocol.html#ad256f8e7f36c654002807b7fbb5038dd',1,'Mitsubishi144Protocol::pad1()'],['../unionMitsubishi112Protocol.html#af5c30781b3183c3530b4e401952a5666',1,'Mitsubishi112Protocol::pad1()'],['../unionSamsungProtocol.html#a197a2005789029b5037840fa5f0945f1',1,'SamsungProtocol::pad1()'],['../unionTcl112Protocol.html#a701ddcba3061c25b515a1d7788ddec12',1,'Tcl112Protocol::pad1()'],['../unionWhirlpoolProtocol.html#aed57244f4451176e68ce407ced81eb2c',1,'WhirlpoolProtocol::pad1()']]], - ['pad2_3180',['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()'],['../unionKelonProtocol.html#a07276300448ba5caa961e1d2a6714780',1,'KelonProtocol::pad2()']]], - ['pad3_3181',['pad3',['../unionDaikin216Protocol.html#aeef7d4b689a7dccc73c201d1b5d96a2f',1,'Daikin216Protocol::pad3()'],['../unionDaikin176Protocol.html#a9959937c9a6bffc149060886f1ebb9b3',1,'Daikin176Protocol::pad3()']]], - ['padding_3182',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], - ['panasonic_3183',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac::panasonic()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'PANASONIC(): IRremoteESP8266.h']]], - ['panasonic32_3184',['panasonic32',['../classIRac.html#a66ed34d5686ad25a1659862f3b683f68',1,'IRac']]], - ['panasonic_5fac_3185',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], - ['panasonic_5fac32_3186',['PANASONIC_AC32',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada790ec65ea3e5d3ef9dc19614521c889e',1,'IRremoteESP8266.h']]], - ['panasonic_5fac_5fremote_5fmodel_5ft_3187',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]], - ['panasonicac32protocol_3188',['PanasonicAc32Protocol',['../unionPanasonicAc32Protocol.html',1,'']]], - ['params_3189',['params',['../namespace__IRrecv.html#a75e3f81d5e64fd51c049231876a37906',1,'_IRrecv']]], - ['params_5fsave_3190',['params_save',['../namespace__IRrecv.html#af604d4630a17b4113c0e086e513187d1',1,'_IRrecv']]], - ['periodoffset_3191',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], - ['pioneer_3192',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], - ['power_3193',['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()'],['../unionEcoclimProtocol.html#ae022c9f0fe7a6912f0b9c335388cd386',1,'EcoclimProtocol::Power()'],['../unionElectraProtocol.html#a907a426aa30a50667d5e4f4615d71518',1,'ElectraProtocol::Power()'],['../unionFujitsuProtocol.html#ad6ac9cd452bac615abf2015e5baeb934',1,'FujitsuProtocol::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()'],['../unionNeoclimaProtocol.html#a25d1e93aeea3a386d31bc5f665a52444',1,'NeoclimaProtocol::Power()'],['../unionSanyoProtocol.html#ae3626ac8b929a397f19705a29368d457',1,'SanyoProtocol::Power()'],['../unionTcl112Protocol.html#af087805327d98279e00c8f6427a2f9e7',1,'Tcl112Protocol::Power()'],['../unionTechnibelProtocol.html#aaab9c2a129506d34f9f0879cb2657f4d',1,'TechnibelProtocol::Power()'],['../unionTecoProtocol.html#a43035d0a8a9f00c5330a776a26b70465',1,'TecoProtocol::Power()'],['../unionTrotecProtocol.html#aabb71ec60601e95b6d6613e4407262cc',1,'TrotecProtocol::Power()'],['../unionVestelProtocol.html#aeca45915cf95898c9baa0e77d3a6e517',1,'VestelProtocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()'],['../unionWhirlpoolProtocol.html#a33653fd6f01c43852cf44b5feb0cb349',1,'WhirlpoolProtocol::Power()']]], - ['power1_3194',['Power1',['../unionSamsungProtocol.html#af389a11a1f56c92dfe67ce151310d0d8',1,'SamsungProtocol']]], - ['power2_3195',['Power2',['../unionDaikin2Protocol.html#ad38268911be9104ab7fcaf0d35dd4c6f',1,'Daikin2Protocol']]], - ['power6_3196',['Power6',['../unionSamsungProtocol.html#a4b30b11279244b37fa5b82a5203a3a77',1,'SamsungProtocol']]], - ['powerbutton_3197',['PowerButton',['../unionCoronaProtocol.html#abceccc1306d3a78be6177758f3056a5a',1,'CoronaProtocol']]], - ['powerflag_3198',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC']]], - ['powerful_3199',['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()']]], - ['powerful10_3200',['Powerful10',['../unionSamsungProtocol.html#a500901489b00950de98ea922c7e8adcf',1,'SamsungProtocol']]], - ['powerful8_3201',['Powerful8',['../unionSamsungProtocol.html#a4fe9bf8b0d5d30af2b9b4dc20d8f68e3',1,'SamsungProtocol']]], - ['poweroff_3202',['PowerOff',['../unionTrumaProtocol.html#ac245b1ff37fb967f363cd8cae8b12b22',1,'TrumaProtocol']]], - ['powerspecial_3203',['PowerSpecial',['../unionSharpProtocol.html#aa2fd90d4f6117177dec13282ccc13ead',1,'SharpProtocol']]], - ['powertoggle_3204',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol::PowerToggle()'],['../unionHitachi1Protocol.html#adf8067b7e2d7ea3afb6ffae08a9cf609',1,'Hitachi1Protocol::PowerToggle()'],['../unionKelonProtocol.html#a5055123f4ca8f2efdd10ed3dc5d86e50',1,'KelonProtocol::PowerToggle()'],['../unionPanasonicAc32Protocol.html#a5d6c6d8100c60323449ba5f96e147172',1,'PanasonicAc32Protocol::PowerToggle()']]], - ['preamble_3205',['preamble',['../unionKelonProtocol.html#a89dc5481508f53095896b5b4fc688f4e',1,'KelonProtocol']]], - ['prefix_3206',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]], - ['pronto_3207',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]], - ['protocol_3208',['Protocol',['../unionFujitsuProtocol.html#acf8b6b900c9dab936b4888b52e92e3b5',1,'FujitsuProtocol::Protocol()'],['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t::protocol()']]], - ['pt_2dbr_2eh_3209',['pt-BR.h',['../pt-BR_8h.html',1,'']]], - ['purify_3210',['Purify',['../unionDaikin2Protocol.html#ad3c5427e7d4d0182bb86f61fa2c2484a',1,'Daikin2Protocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.html deleted file mode 100644 index f78343b9b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.js deleted file mode 100644 index a50400f30..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_11.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['quiet_3211',['Quiet',['../unionDaikinESPProtocol.html#af93324815f6be6cfc5d0d50af9e73aad',1,'DaikinESPProtocol::Quiet()'],['../unionDaikin2Protocol.html#afa111c9afbc94bcf52e9ba15b59c1bee',1,'Daikin2Protocol::Quiet()'],['../unionDaikin152Protocol.html#ac5bfe8541e53cb2732bfcbc71500ed32',1,'Daikin152Protocol::Quiet()'],['../unionKelvinatorProtocol.html#ac803fe14d6d21155418d2fe0543c9d9f',1,'KelvinatorProtocol::Quiet()'],['../structstdAc_1_1state__t.html#a251ad14e187a9905137e9e4e010c3e34',1,'stdAc::state_t::quiet()']]], - ['quiet1_3212',['Quiet1',['../unionSamsungProtocol.html#ac38e3f34f98ac3dae9738a1582dfeca6',1,'SamsungProtocol']]], - ['quiet5_3213',['Quiet5',['../unionSamsungProtocol.html#a94a9d2b42e1ab7a308d079322350c3f9',1,'SamsungProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.html deleted file mode 100644 index dd9ff1d59..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.js deleted file mode 100644 index c91a6d7b0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_12.js +++ /dev/null @@ -1,29 +0,0 @@ -var searchData= -[ - ['r_5flt0541_5fhta_5fa_3214',['R_LT0541_HTA_A',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8',1,'IRsend.h']]], - ['r_5flt0541_5fhta_5fb_3215',['R_LT0541_HTA_B',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f',1,'IRsend.h']]], - ['raw_3216',['raw',['../unionAirwellProtocol.html#a984e1bba5afac9887c2ebb976a38d560',1,'AirwellProtocol::raw()'],['../unionAmcorProtocol.html#a2044da7ab12175f20657f18f4b76728b',1,'AmcorProtocol::raw()'],['../unionArgoProtocol.html#a845151d1f5062ab0116f3a413e23da8f',1,'ArgoProtocol::raw()'],['../unionCarrierProtocol.html#a1a09f5c8340a2e7e074a332bf4906dfd',1,'CarrierProtocol::raw()'],['../unionCoolixProtocol.html#a41c5b4f502fedd08d691ee44b1767a11',1,'CoolixProtocol::raw()'],['../unionCoronaProtocol.html#a16cbcc7f8542e9367a815efa4491c71b',1,'CoronaProtocol::raw()'],['../unionDaikinESPProtocol.html#a2875b60fdac6547968cf71976a6f5101',1,'DaikinESPProtocol::raw()'],['../unionDaikin2Protocol.html#a66a685c572a98c1a4f5598c6e61082fa',1,'Daikin2Protocol::raw()'],['../unionDaikin216Protocol.html#adaca3670dfbb98c2fb08bb996d88ebfa',1,'Daikin216Protocol::raw()'],['../unionDaikin160Protocol.html#afde716be26af9cb415102171b68d63ee',1,'Daikin160Protocol::raw()'],['../unionDaikin176Protocol.html#aa037609a71d25ca0dd9be53e7e4bc138',1,'Daikin176Protocol::raw()'],['../unionDaikin128Protocol.html#a6c6ece8bed97c5eb4335d50229c8469f',1,'Daikin128Protocol::raw()'],['../unionDaikin152Protocol.html#a363f93d1bd9e1466222503a194449cab',1,'Daikin152Protocol::raw()'],['../unionDaikin64Protocol.html#aca4063a77b19390e61697478c2e6706d',1,'Daikin64Protocol::raw()'],['../unionDelonghiProtocol.html#a5e82aa5e22fdbdb64b5232766b9ac7c2',1,'DelonghiProtocol::raw()'],['../unionEcoclimProtocol.html#af4c52ba1cf4306ddf149d26fc93c14e2',1,'EcoclimProtocol::raw()'],['../unionElectraProtocol.html#aad34141d26a6673df8fcb2bbfe3b0439',1,'ElectraProtocol::raw()'],['../unionGoodweatherProtocol.html#aea5a3a02cea21af0f42b63b7145709c9',1,'GoodweatherProtocol::raw()'],['../unionHaierYRW02Protocol.html#aa1607ceff9c90cbb78e446a98eb0fe52',1,'HaierYRW02Protocol::raw()'],['../unionHitachiProtocol.html#ab39a02f7cdf88ea4cdcd71c2f4be409a',1,'HitachiProtocol::raw()'],['../unionHitachi424Protocol.html#a0d1b33b2122247103476e7d33a125672',1,'Hitachi424Protocol::raw()'],['../unionHitachi1Protocol.html#ad02b8338e2b099f371d3c7366087caf4',1,'Hitachi1Protocol::raw()'],['../unionKelonProtocol.html#a5cbd812734ed55a33aba1b5c8dc90e22',1,'KelonProtocol::raw()'],['../unionKelvinatorProtocol.html#a9d16ef4663c237f8217a081f71e96e44',1,'KelvinatorProtocol::raw()'],['../unionLGProtocol.html#a3255b9b6a3069f7b749b98ed22bf5378',1,'LGProtocol::raw()'],['../unionMitsubishi144Protocol.html#aae639c8be3c729e29b68e29ed7141d45',1,'Mitsubishi144Protocol::raw()'],['../unionMitsubishi136Protocol.html#ace7d2ec3beca925e4e8ede3398d13684',1,'Mitsubishi136Protocol::raw()'],['../unionMitsubishi112Protocol.html#adf74af634ab8ebeb0fd06e37fe86c641',1,'Mitsubishi112Protocol::raw()'],['../unionMitsubishi152Protocol.html#af0b9754d5fe5437768100f2e50581929',1,'Mitsubishi152Protocol::raw()'],['../unionMitsubishi88Protocol.html#a9b54684f51573a21d26d816df376ac6e',1,'Mitsubishi88Protocol::raw()'],['../unionNeoclimaProtocol.html#aa7591e6333f5266d5f9592c4c623083e',1,'NeoclimaProtocol::raw()'],['../unionPanasonicAc32Protocol.html#a3e93ce14cef274f4ac003f8ba54cec5d',1,'PanasonicAc32Protocol::raw()'],['../unionSamsungProtocol.html#ac0883f3aa613c5ff7c234a2a16a2585f',1,'SamsungProtocol::raw()'],['../unionSanyoProtocol.html#a5213248c1834d15af3d3f1ba94d4481e',1,'SanyoProtocol::raw()'],['../unionSharpProtocol.html#a0013861cb2cd4bc466177ea07d4dfdb8',1,'SharpProtocol::raw()'],['../unionTcl112Protocol.html#a1d1a6ffcb7076b1d6c742de1178c2420',1,'Tcl112Protocol::raw()'],['../unionTechnibelProtocol.html#a56e1c8a038404cd900e438f3e0db8567',1,'TechnibelProtocol::raw()'],['../unionTecoProtocol.html#aaab0e91ca6ea4d346589d4b8db12b72c',1,'TecoProtocol::raw()'],['../unionToshibaProtocol.html#a2f5742d891e33106fd55acc4f2898012',1,'ToshibaProtocol::raw()'],['../unionTranscoldProtocol.html#a054af4c474a87583c1106a5f2a7e83e7',1,'TranscoldProtocol::raw()'],['../unionTrotecProtocol.html#aaf54633e6ddaf5dddf63adc904f117dd',1,'TrotecProtocol::raw()'],['../unionTrumaProtocol.html#aa4902b2b89193e0c317bbb46208a0730',1,'TrumaProtocol::raw()'],['../unionVoltasProtocol.html#aef55de7b215b4dd5d36d0bd7b542a85b',1,'VoltasProtocol::raw()'],['../unionWhirlpoolProtocol.html#a6b9f13431fc739a77cc719e69a0b0467',1,'WhirlpoolProtocol::raw()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadabdeded99fe7d3f2773014a9a2cfb73d7',1,'RAW(): IRremoteESP8266.h']]], - ['rawbuf_3217',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], - ['rawlen_3218',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], - ['rc5_3219',['RC5',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3c0a3883a1488209bcd91730ece33b2',1,'IRremoteESP8266.h']]], - ['rc5x_3220',['RC5X',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a3ac4419806a34ba566bfcbbb0e4f1d',1,'IRremoteESP8266.h']]], - ['rc6_3221',['RC6',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7f7247f15587eb3812846f424b941abe',1,'IRremoteESP8266.h']]], - ['rcmm_3222',['RCMM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada79204b7ae26be334cebf3ea8268c34ab',1,'IRremoteESP8266.h']]], - ['rcvstate_3223',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], - ['readme_2emd_3224',['README.md',['../README_8md.html',1,'']]], - ['recoversavedstate_3225',['recoverSavedState',['../classIRCoolixAC.html#a134cb36681c3fab53074b402bba0a45c',1,'IRCoolixAC']]], - ['recvpin_3226',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], - ['remote_5fstate_3227',['remote_state',['../unionGreeProtocol.html#ae034ac3966312175d26fe1817108d7a4',1,'GreeProtocol::remote_state()'],['../unionHaierProtocol.html#af8966fa819bcb51f496ec185130bcf0f',1,'HaierProtocol::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../unionMideaProtocol.html#a8d696bb16d652ef6d582014049be2bbb',1,'MideaProtocol::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()']]], - ['repeat_3228',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]], - ['reset_3229',['reset',['../classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a',1,'IRtimer::reset()'],['../classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b',1,'TimerMs::reset()']]], - ['restlength_3230',['RestLength',['../unionFujitsuProtocol.html#aa402d7b8ee039662954138ec4863fbcb',1,'FujitsuProtocol']]], - ['resultactostring_3231',['resultAcToString',['../namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3',1,'IRAcUtils']]], - ['resulttohexidecimal_3232',['resultToHexidecimal',['../IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp'],['../IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp']]], - ['resulttohumanreadablebasic_3233',['resultToHumanReadableBasic',['../IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp']]], - ['resulttorawarray_3234',['resultToRawArray',['../IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp'],['../IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp']]], - ['resulttosourcecode_3235',['resultToSourceCode',['../IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp']]], - ['resulttotiminginfo_3236',['resultToTimingInfo',['../IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp']]], - ['resume_3237',['resume',['../classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e',1,'IRrecv']]], - ['reversebits_3238',['reverseBits',['../IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp']]], - ['roomtemp_3239',['RoomTemp',['../unionArgoProtocol.html#a35f91863997bb886da9fc6a303e62c65',1,'ArgoProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.html deleted file mode 100644 index 2611a100d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.js deleted file mode 100644 index a8239ab12..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_13.js +++ /dev/null @@ -1,317 +0,0 @@ -var searchData= -[ - ['samsung_3240',['samsung',['../classIRac.html#a619c659a11c258ea9623eaa37689ba4c',1,'IRac::samsung()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2b451b6e7bebbf070d0913ec77d5d438',1,'SAMSUNG(): IRremoteESP8266.h']]], - ['samsung36_3241',['SAMSUNG36',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa0d1be0c368e3594bc546c241d031fd4',1,'IRremoteESP8266.h']]], - ['samsung_5fac_3242',['SAMSUNG_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada39f991023009d760432489e7ad7ad4df',1,'IRremoteESP8266.h']]], - ['samsungprotocol_3243',['SamsungProtocol',['../unionSamsungProtocol.html',1,'']]], - ['sanyo_3244',['sanyo',['../classIRac.html#a9b0e12748dc25a1d224993b2a013e822',1,'IRac::sanyo()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac1cf5078ebfd7ff83c70e8ec8522b288',1,'SANYO(): IRremoteESP8266.h']]], - ['sanyo_5fac_3245',['SANYO_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf85e76d33b94649a2ecc957acd214209',1,'IRremoteESP8266.h']]], - ['sanyo_5flc7461_3246',['SANYO_LC7461',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada558721044a11b1d4b491343f02267e1d',1,'IRremoteESP8266.h']]], - ['sanyoprotocol_3247',['SanyoProtocol',['../unionSanyoProtocol.html',1,'']]], - ['save_3248',['Save',['../unionTecoProtocol.html#ae724fb83aed6d33cc43ec4ded5307983',1,'TecoProtocol']]], - ['savedfan_3249',['savedFan',['../classIRCoolixAC.html#a5645cc98a1b1c509729544c09dc77fbf',1,'IRCoolixAC']]], - ['scrap_3250',['scrap',['../unionmagiquest.html#afd0bcf9a87f0fa2db87b68b211952a73',1,'magiquest']]], - ['sections_3251',['sections',['../unionCoronaProtocol.html#ae7cdfa7315fae2be9aa64f57b10b325a',1,'CoronaProtocol']]], - ['send_3252',['send',['../classIRAirwellAc.html#a503a7879c5739041bb97ad80128287ba',1,'IRAirwellAc::send()'],['../classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9',1,'IRAmcorAc::send()'],['../classIRArgoAC.html#a0e4793a4f6fc537ec1450f5a42206dae',1,'IRArgoAC::send()'],['../classIRCarrierAc64.html#aace8aa2d125c6e80bcdd6d96eac722c2',1,'IRCarrierAc64::send()'],['../classIRCoolixAC.html#aaaa681d6cfcf04d110b913e8bb27a53c',1,'IRCoolixAC::send()'],['../classIRCoronaAc.html#aa0c8a1ef4473a3c7d02e1a04c7678fa6',1,'IRCoronaAc::send()'],['../classIRDaikinESP.html#a9f0d2641b54e97da943fceb0ba3f67eb',1,'IRDaikinESP::send()'],['../classIRDaikin2.html#aae2db88038d8d02617f16588e6a82b64',1,'IRDaikin2::send()'],['../classIRDaikin216.html#ab1061620f838cf7774c16c593b4ada8c',1,'IRDaikin216::send()'],['../classIRDaikin160.html#a0e1c74070c03be02e40fdd05ed56465c',1,'IRDaikin160::send()'],['../classIRDaikin176.html#affd71592fa8ed05816d94edbf94d2c0a',1,'IRDaikin176::send()'],['../classIRDaikin128.html#aae7fec91ad2265e8b0378c6b99379e89',1,'IRDaikin128::send()'],['../classIRDaikin152.html#a205de6821effc077f51d941d369791e4',1,'IRDaikin152::send()'],['../classIRDaikin64.html#a904eec38045d9ddc8a97ab33c8a2ac4d',1,'IRDaikin64::send()'],['../classIRDelonghiAc.html#afba831b6884771b84bab684732e0f4f5',1,'IRDelonghiAc::send()'],['../classIREcoclimAc.html#a8f254f318d13695ce9e4096ed5693769',1,'IREcoclimAc::send()'],['../classIRElectraAc.html#a30170a65de1161e26daeddf694f8afdb',1,'IRElectraAc::send()'],['../classIRFujitsuAC.html#a1f1aa593cc4503d14c0fbea5cd9823a1',1,'IRFujitsuAC::send()'],['../classIRGoodweatherAc.html#abcc3c9d9b0912b09d3c0b0c1affb8cc8',1,'IRGoodweatherAc::send()'],['../classIRGreeAC.html#a9823578040c2d15e2b3e8e3a17a9e220',1,'IRGreeAC::send()'],['../classIRHaierAC.html#a9fe53d04965efca6daf234f20d20eb5a',1,'IRHaierAC::send()'],['../classIRHaierACYRW02.html#a65a5d5840dddac505b009e899a0dada7',1,'IRHaierACYRW02::send()'],['../classIRHitachiAc.html#afc53e562370bbaba8b5dda26a62de427',1,'IRHitachiAc::send()'],['../classIRHitachiAc1.html#aafad51c226066b8697cf00661ef38d99',1,'IRHitachiAc1::send()'],['../classIRHitachiAc424.html#adf15121bb329e1bb061f9e5efb848764',1,'IRHitachiAc424::send()'],['../classIRHitachiAc3.html#ab95fd527a4841c44d6e91c8b4afee8b4',1,'IRHitachiAc3::send()'],['../classIRHitachiAc344.html#ab11947f9c2a7272d35d75ce3ddbe6581',1,'IRHitachiAc344::send()'],['../classIRKelonAc.html#af534911523b5372e25327bf85a5b3b66',1,'IRKelonAc::send()'],['../classIRKelvinatorAC.html#aa55fbfefbaca1acf5bc9ba796bea8464',1,'IRKelvinatorAC::send()'],['../classIRLgAc.html#aea85c840161b48f2e8d31e7e6e7da532',1,'IRLgAc::send()'],['../classIRMideaAC.html#af66b9f76ad794450a0a7eace4bb59300',1,'IRMideaAC::send()'],['../classIRMitsubishiAC.html#a2467ad33d88af8f6244e7cd0620e012e',1,'IRMitsubishiAC::send()'],['../classIRMitsubishi136.html#a41295e551acf428e76b9b404af2381ad',1,'IRMitsubishi136::send()'],['../classIRMitsubishi112.html#a8f813da813b1a281654147ada2e63eba',1,'IRMitsubishi112::send()'],['../classIRMitsubishiHeavy152Ac.html#acc53c5c136c6987c420d48bddcf9b2da',1,'IRMitsubishiHeavy152Ac::send()'],['../classIRMitsubishiHeavy88Ac.html#a707cb3ec3e3c18bedeb12205580d5048',1,'IRMitsubishiHeavy88Ac::send()'],['../classIRNeoclimaAc.html#a2220bbb1d928b8f6490cd43b702ef430',1,'IRNeoclimaAc::send()'],['../classIRPanasonicAc.html#a778420ebe52aa6422ba5633ce91676df',1,'IRPanasonicAc::send()'],['../classIRPanasonicAc32.html#aae5867f05744ebcac4720b31b6fc9021',1,'IRPanasonicAc32::send()'],['../classIRSamsungAc.html#a8128429fcb1828a049784d832cafc9fe',1,'IRSamsungAc::send()'],['../classIRSanyoAc.html#aa8be9e2e0c63646ce39425c9e58e4ca1',1,'IRSanyoAc::send()'],['../classIRSharpAc.html#a829872744bf9fef51dccd89584ddffe6',1,'IRSharpAc::send()'],['../classIRTcl112Ac.html#a9aa8c67e167a3d241157306d0668ff15',1,'IRTcl112Ac::send()'],['../classIRTechnibelAc.html#ad3a94fdd7b718d8d4ba3ffdb84cf0ebb',1,'IRTechnibelAc::send()'],['../classIRTecoAc.html#ad5785e93e8c0c95a8618b0e371adaa79',1,'IRTecoAc::send()'],['../classIRToshibaAC.html#a14b155d3a20fb9c127eb7f3fe1fd16cd',1,'IRToshibaAC::send()'],['../classIRTranscoldAc.html#ad9807a5c56b9797e4d9ef2fe4b95d3bf',1,'IRTranscoldAc::send()'],['../classIRTrotecESP.html#add228d50195d7b9b43346a90bf959512',1,'IRTrotecESP::send()'],['../classIRTrumaAc.html#ac429be41669c7ea395a4f57b99f90642',1,'IRTrumaAc::send()'],['../classIRVestelAc.html#a606497754b381e70d13ddef5643c9d0b',1,'IRVestelAc::send()'],['../classIRVoltas.html#ab06af0578b5137c53af6e641bfcbee9a',1,'IRVoltas::send()'],['../classIRWhirlpoolAc.html#a0c043b3d7cc993940941351e6c63b5cc',1,'IRWhirlpoolAc::send()'],['../classIRsend.html#a204eedc3ad182fb2f40c42ef58f78cfc',1,'IRsend::send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)'],['../classIRsend.html#ac684c209ea8722f0a377070752df0040',1,'IRsend::send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes)']]], - ['sendac_3253',['sendAc',['../classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130',1,'IRac::sendAc(void)'],['../classIRac.html#aa33c42968acafc5cf479574483f94ea9',1,'IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)'],['../classIRac.html#ad60fbe1488efe2d02307d81b090b3b72',1,'IRac::sendAc(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=-1, const int16_t clock=-1)']]], - ['sendairwell_3254',['sendAirwell',['../classIRsend.html#a5b180d3845b45af38a19b72e6fa8e0c0',1,'IRsend']]], - ['sendaiwarct501_3255',['sendAiwaRCT501',['../classIRsend.html#ad39a4b13ad2e8500c95db49265e7c771',1,'IRsend']]], - ['sendamcor_3256',['sendAmcor',['../classIRsend.html#acd64b100eb155f90451d467188a83e92',1,'IRsend']]], - ['sendargo_3257',['sendArgo',['../classIRsend.html#a59668b767e4ad4966fe0bc259c3bd34f',1,'IRsend']]], - ['sendcarrierac_3258',['sendCarrierAC',['../classIRsend.html#a9e859a8b5eaea2e64978c8f93b78d159',1,'IRsend']]], - ['sendcarrierac40_3259',['sendCarrierAC40',['../classIRsend.html#a4342b775777d2ff9371f48aa39ad9b69',1,'IRsend']]], - ['sendcarrierac64_3260',['sendCarrierAC64',['../classIRsend.html#abf755688d87fcef5aee86c6a2c89e7c4',1,'IRsend']]], - ['sendcoolix_3261',['sendCOOLIX',['../classIRsend.html#a088af5f0d76965c61fe5716f7b8f2b61',1,'IRsend']]], - ['sendcoronaac_3262',['sendCoronaAc',['../classIRsend.html#a81f82b8248b324799a48a7685d62aaa5',1,'IRsend']]], - ['senddaikin_3263',['sendDaikin',['../classIRsend.html#a3010546144b5ca3b3c94f5881050dbd0',1,'IRsend']]], - ['senddaikin128_3264',['sendDaikin128',['../classIRsend.html#a72a41a704d48750c144c6467ae9a1430',1,'IRsend']]], - ['senddaikin152_3265',['sendDaikin152',['../classIRsend.html#a4ad420eb86e0ae38b12e983f7eaa912c',1,'IRsend']]], - ['senddaikin160_3266',['sendDaikin160',['../classIRsend.html#ab144a86def38f9f5c98701742683c004',1,'IRsend']]], - ['senddaikin176_3267',['sendDaikin176',['../classIRsend.html#ac4b5bcb95d3aff70b2f84074177e9e92',1,'IRsend']]], - ['senddaikin2_3268',['sendDaikin2',['../classIRsend.html#a34262e579cbb6634459bc09c5b15dfa0',1,'IRsend']]], - ['senddaikin216_3269',['sendDaikin216',['../classIRsend.html#aa99bfdaa71ff5bf088faaa17d304f45d',1,'IRsend']]], - ['senddaikin64_3270',['sendDaikin64',['../classIRsend.html#aa403d2192a6eb57910e6f84695475b27',1,'IRsend']]], - ['senddata_3271',['sendData',['../classIRsend.html#a4f8cd77dab7ce6c406029fe87674858f',1,'IRsend']]], - ['senddelonghiac_3272',['sendDelonghiAc',['../classIRsend.html#a35dc18f9abbffa8da40816a8a9df1093',1,'IRsend']]], - ['senddenon_3273',['sendDenon',['../classIRsend.html#a2618e000bf91cf1585329308a078653a',1,'IRsend']]], - ['senddish_3274',['sendDISH',['../classIRsend.html#ac7a72d61af219d983409911bdc1769b8',1,'IRsend']]], - ['senddoshisha_3275',['sendDoshisha',['../classIRsend.html#a3a9a8247e470975137b37f474bb97639',1,'IRsend']]], - ['sendecoclim_3276',['sendEcoclim',['../classIRsend.html#a63f0d3f7ed8433c7dd18114d50e5d076',1,'IRsend']]], - ['sendelectraac_3277',['sendElectraAC',['../classIRsend.html#a52526c4e7bc4402e57ecf81e0047d49c',1,'IRsend']]], - ['sendelitescreens_3278',['sendElitescreens',['../classIRsend.html#a37c6fac0e447fd9e4d3dc3ca23f8936f',1,'IRsend']]], - ['sendepson_3279',['sendEpson',['../classIRsend.html#a063168fd82f6a88cca7253b42b9c0b28',1,'IRsend']]], - ['sendextended_3280',['sendExtended',['../classIRSamsungAc.html#a16a8dbd8f3fd34a6e681125b276acfd9',1,'IRSamsungAc']]], - ['sendfujitsuac_3281',['sendFujitsuAC',['../classIRsend.html#a1a3d3f83d0b7a59ff5510b038f658eb6',1,'IRsend']]], - ['sendgc_3282',['sendGC',['../classIRsend.html#acf987a501326d9c945cd8dbeb0806e17',1,'IRsend']]], - ['sendgeneric_3283',['sendGeneric',['../classIRsend.html#a5215fd797dfd490816f31bb99b38c273',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#aaace48306af9c020c18848db1a05e641',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#a4f5ad649827692b4b42d15b45c7f684b',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)']]], - ['sendgicable_3284',['sendGICable',['../classIRsend.html#a61dd16bc150473bbfd998dada72b205f',1,'IRsend']]], - ['sendgoodweather_3285',['sendGoodweather',['../classIRsend.html#a8e2d98ae5c39ee07a61f08facecbaa1e',1,'IRsend']]], - ['sendgree_3286',['sendGree',['../classIRsend.html#aca81ea348ceb6b0c9e62073b57bc0b17',1,'IRsend::sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)'],['../classIRsend.html#af788e7d9a2ad2483313434f9b5196753',1,'IRsend::sendGree(const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)']]], - ['sendhaierac_3287',['sendHaierAC',['../classIRsend.html#a6b4b9144d56dda302f5b321f1c5017ff',1,'IRsend']]], - ['sendhaierac176_3288',['sendHaierAC176',['../classIRsend.html#abe87b116301328fb68aee1f54fc9ebe4',1,'IRsend']]], - ['sendhaieracyrw02_3289',['sendHaierACYRW02',['../classIRsend.html#a6aa1c1a6880872c87a46e4e0ead5d9b0',1,'IRsend']]], - ['sendhitachiac_3290',['sendHitachiAC',['../classIRsend.html#a8e6079b8b1b69ad7d7f8d05c492becbe',1,'IRsend']]], - ['sendhitachiac1_3291',['sendHitachiAC1',['../classIRsend.html#a5be9a87ce052e4f056766919247e0b22',1,'IRsend']]], - ['sendhitachiac2_3292',['sendHitachiAC2',['../classIRsend.html#a451b1913608a4ba8c26d9af8c85d16f1',1,'IRsend']]], - ['sendhitachiac3_3293',['sendHitachiAc3',['../classIRsend.html#aec7e67f4292622521b5a0a8cfdd21d84',1,'IRsend']]], - ['sendhitachiac344_3294',['sendHitachiAc344',['../classIRsend.html#a5fb28d54f2832651d992450673d05c01',1,'IRsend']]], - ['sendhitachiac424_3295',['sendHitachiAc424',['../classIRsend.html#a2a9676de30bb868b313cc9c30025f790',1,'IRsend']]], - ['sendinax_3296',['sendInax',['../classIRsend.html#a5fa5ff62276d9d680fb1255cc8b99eec',1,'IRsend']]], - ['sendjvc_3297',['sendJVC',['../classIRsend.html#aaa10c899768a5b4cdb1a7913d06141ca',1,'IRsend']]], - ['sendkelon_3298',['sendKelon',['../classIRsend.html#ab0b4816ad227a541d27042d76c451b73',1,'IRsend']]], - ['sendkelvinator_3299',['sendKelvinator',['../classIRsend.html#a8cba9df982fc91f895196d61d2e65b0e',1,'IRsend']]], - ['sendlasertag_3300',['sendLasertag',['../classIRsend.html#a55a79f9727590044751f291a4df83892',1,'IRsend']]], - ['sendlegopf_3301',['sendLegoPf',['../classIRsend.html#a4e38273aeacf01873a013c02d41a44e4',1,'IRsend']]], - ['sendlg_3302',['sendLG',['../classIRsend.html#a079a84c82f360d6d55fde5c27634f51c',1,'IRsend']]], - ['sendlg2_3303',['sendLG2',['../classIRsend.html#a5b6be1ceac8a4bc4ef55dc12eb060531',1,'IRsend']]], - ['sendlutron_3304',['sendLutron',['../classIRsend.html#a85f2a98255d3af7b7407c082ea7b7c16',1,'IRsend']]], - ['sendmagiquest_3305',['sendMagiQuest',['../classIRsend.html#af1d0e9ec0f735fc5fb9011d4f4cb8327',1,'IRsend']]], - ['sendmanchester_3306',['sendManchester',['../classIRsend.html#a7862231cbb1d50f42996c25e2f05b93e',1,'IRsend']]], - ['sendmanchesterdata_3307',['sendManchesterData',['../classIRsend.html#aa76aa33785827c1278eb57d1c15236f8',1,'IRsend']]], - ['sendmetz_3308',['sendMetz',['../classIRsend.html#ab98023283eca787f7bb8bcb47f79ed01',1,'IRsend']]], - ['sendmidea_3309',['sendMidea',['../classIRsend.html#a37d91b3a77b36509abdc53e2fec20a67',1,'IRsend']]], - ['sendmidea24_3310',['sendMidea24',['../classIRsend.html#a103d79e8df7954e9ab6284fa9f3daf02',1,'IRsend']]], - ['sendmilestag2_3311',['sendMilestag2',['../classIRsend.html#a1a506824c7668e58f35351ad400051b1',1,'IRsend']]], - ['sendmirage_3312',['sendMirage',['../classIRsend.html#a03427bab21dd5a04121c652103c2ef97',1,'IRsend']]], - ['sendmitsubishi_3313',['sendMitsubishi',['../classIRsend.html#a59e8941a25c5c0bbc839fba5b1a22813',1,'IRsend']]], - ['sendmitsubishi112_3314',['sendMitsubishi112',['../classIRsend.html#a0a55e688c6aad015494168f25eb337b5',1,'IRsend']]], - ['sendmitsubishi136_3315',['sendMitsubishi136',['../classIRsend.html#a988a8b7dda3563977d537d6ac448ebc8',1,'IRsend']]], - ['sendmitsubishi2_3316',['sendMitsubishi2',['../classIRsend.html#ac54e50a6819f5c39e060891f1f6ea0f2',1,'IRsend']]], - ['sendmitsubishiac_3317',['sendMitsubishiAC',['../classIRsend.html#a3600527a82f9f22387c9f16ae51fb06f',1,'IRsend']]], - ['sendmitsubishiheavy152_3318',['sendMitsubishiHeavy152',['../classIRsend.html#ae1cffc4882c63f192c231397d19a4032',1,'IRsend']]], - ['sendmitsubishiheavy88_3319',['sendMitsubishiHeavy88',['../classIRsend.html#afaf4fd0c3dabd1bd6f8fe421294c5063',1,'IRsend']]], - ['sendmultibrackets_3320',['sendMultibrackets',['../classIRsend.html#a9026d42480b85270e560e122b8be3b6c',1,'IRsend']]], - ['sendmwm_3321',['sendMWM',['../classIRsend.html#a98301801daf929ec8ce022987ae394f2',1,'IRsend']]], - ['sendnec_3322',['sendNEC',['../classIRsend.html#a324c9e455c0bae51ebe9bc07e915c043',1,'IRsend']]], - ['sendneoclima_3323',['sendNeoclima',['../classIRsend.html#a71e1b5e780851210465bbf061b9c095b',1,'IRsend']]], - ['sendnikai_3324',['sendNikai',['../classIRsend.html#a693e6616b81509cf27d1345c140acc96',1,'IRsend']]], - ['sendoff_3325',['sendOff',['../classIRSamsungAc.html#a96e2ae87f3ffcf1ad812f256f31e4898',1,'IRSamsungAc']]], - ['sendon_3326',['sendOn',['../classIRSamsungAc.html#a7e6980c829dfd143d4d19abaf5d65678',1,'IRSamsungAc']]], - ['sendpanasonic_3327',['sendPanasonic',['../classIRsend.html#a92192475f89b19cfdf7fd0416a263145',1,'IRsend']]], - ['sendpanasonic64_3328',['sendPanasonic64',['../classIRsend.html#adc4fd287f3546f7ff0b67e177a42b560',1,'IRsend']]], - ['sendpanasonicac_3329',['sendPanasonicAC',['../classIRsend.html#a10a3c387a328dbb11733a251f4db7614',1,'IRsend']]], - ['sendpanasonicac32_3330',['sendPanasonicAC32',['../classIRsend.html#af281c7e8e09bb547bf7236dfd8b42154',1,'IRsend']]], - ['sendpioneer_3331',['sendPioneer',['../classIRsend.html#a11f099f3768a659d1f996589cea8a313',1,'IRsend']]], - ['sendpronto_3332',['sendPronto',['../classIRsend.html#a0b349351e2ba19f87e6b01cde7e67c49',1,'IRsend']]], - ['sendraw_3333',['sendRaw',['../classIRsend.html#a2b9b84f828918f933bd1764d113b53f8',1,'IRsend']]], - ['sendrc5_3334',['sendRC5',['../classIRsend.html#a2bd2ccb27ecd57e14b36f76d82af308a',1,'IRsend']]], - ['sendrc6_3335',['sendRC6',['../classIRsend.html#a2192a95e0d162f9b1775fc2a47f65c37',1,'IRsend']]], - ['sendrcmm_3336',['sendRCMM',['../classIRsend.html#a3cafe475a58234a0d3aa655a2464be75',1,'IRsend']]], - ['sendsamsung_3337',['sendSAMSUNG',['../classIRsend.html#a5252dd159aad713c099de6728ac56d81',1,'IRsend']]], - ['sendsamsung36_3338',['sendSamsung36',['../classIRsend.html#ab5dcd4ec5ddb0b0351870ddf54e5ba66',1,'IRsend']]], - ['sendsamsungac_3339',['sendSamsungAC',['../classIRsend.html#a2773d251da1d35b964810c8cc4cb438b',1,'IRsend']]], - ['sendsanyoac_3340',['sendSanyoAc',['../classIRsend.html#ab606c11f7bdc726289ba4dadf8bd9da6',1,'IRsend']]], - ['sendsanyolc7461_3341',['sendSanyoLC7461',['../classIRsend.html#aa23e51a97a0ec1907d22623fed6dd223',1,'IRsend']]], - ['sendsharp_3342',['sendSharp',['../classIRsend.html#a801ae78ac5a72116c566c4ac5f99c6bd',1,'IRsend']]], - ['sendsharpac_3343',['sendSharpAc',['../classIRsend.html#a438e4c9d50e62da7d772d8d638728213',1,'IRsend']]], - ['sendsharpraw_3344',['sendSharpRaw',['../classIRsend.html#aa1f12fd537ca8c21c183ee41d17a3afc',1,'IRsend']]], - ['sendsherwood_3345',['sendSherwood',['../classIRsend.html#afb3a89acfb868c92a997a3000e70c6e8',1,'IRsend']]], - ['sendsony_3346',['sendSony',['../classIRsend.html#a02bb64503474a0841c51664cf4668d85',1,'IRsend']]], - ['sendsony38_3347',['sendSony38',['../classIRsend.html#a558442f49b32453f0fb987c29e1ec6d3',1,'IRsend']]], - ['sendsymphony_3348',['sendSymphony',['../classIRsend.html#a1f1d5a30660ab0061f64d559d4916d4e',1,'IRsend']]], - ['sendtcl112ac_3349',['sendTcl112Ac',['../classIRsend.html#a2dedce2841e4a6445a98f03393fce823',1,'IRsend']]], - ['sendtechnibelac_3350',['sendTechnibelAc',['../classIRsend.html#afcc65332acb4b5a1edc623194cc2ac7e',1,'IRsend']]], - ['sendteco_3351',['sendTeco',['../classIRsend.html#ac6300f977fe94119813481ba682ce33f',1,'IRsend']]], - ['sendteknopoint_3352',['sendTeknopoint',['../classIRsend.html#a23729c22c85385528fdba5a2ec5625a8',1,'IRsend']]], - ['sendtoshibaac_3353',['sendToshibaAC',['../classIRsend.html#a5554dd976b56148e214dca9891d2810c',1,'IRsend']]], - ['sendtranscold_3354',['sendTranscold',['../classIRsend.html#aba4e3420174de6b5538ae91f20d19e21',1,'IRsend']]], - ['sendtrotec_3355',['sendTrotec',['../classIRsend.html#a135796327b5db127473f4d198e663c00',1,'IRsend']]], - ['sendtruma_3356',['sendTruma',['../classIRsend.html#addb8dc185e7d96d3186dad362a6e1445',1,'IRsend']]], - ['sendvestelac_3357',['sendVestelAc',['../classIRsend.html#a129a40f9d344cb0fadfd4cca53ca6b44',1,'IRsend']]], - ['sendvoltas_3358',['sendVoltas',['../classIRsend.html#a3bda5e5e44d2c0e811e9fe3d42b241bf',1,'IRsend']]], - ['sendwhirlpoolac_3359',['sendWhirlpoolAC',['../classIRsend.html#aa440a50000a259072f93ad6c0e42ec22',1,'IRsend']]], - ['sendwhynter_3360',['sendWhynter',['../classIRsend.html#a07188366deed3dd902cba80a711cf220',1,'IRsend']]], - ['sendxmp_3361',['sendXmp',['../classIRsend.html#a79e650dedb19f37601600c8cb16e4c8e',1,'IRsend']]], - ['sendzepeal_3362',['sendZepeal',['../classIRsend.html#a9bcba8bbac41d679b5b930e67d3e1b7f',1,'IRsend']]], - ['sensor_3363',['Sensor',['../unionDaikinESPProtocol.html#a9cdca7efde034c19bc1bd3da5c204ec9',1,'DaikinESPProtocol::Sensor()'],['../unionDaikin152Protocol.html#a4bbb04adc012732ba03820a2f8632a2a',1,'Daikin152Protocol::Sensor()'],['../unionSanyoProtocol.html#ad71145ae23e81d6a934149402788d6c8',1,'SanyoProtocol::Sensor()']]], - ['sensortemp_3364',['SensorTemp',['../unionCoolixProtocol.html#a3213a8e821e4f8dc89240b1aa429ab9d',1,'CoolixProtocol::SensorTemp()'],['../unionEcoclimProtocol.html#a35648af709ab62a606481bd73cc72e14',1,'EcoclimProtocol::SensorTemp()'],['../unionMideaProtocol.html#a2ce21157e61749f4d1c3b14fd0b6cfe8',1,'MideaProtocol::SensorTemp()'],['../unionSanyoProtocol.html#a2221111b02f522b4e482b21edfd3dd39',1,'SanyoProtocol::SensorTemp()']]], - ['serialprintuint64_3365',['serialPrintUint64',['../IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433',1,'serialPrintUint64(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243',1,'serialPrintUint64(uint64_t input, uint8_t base=10): IRutils.cpp']]], - ['set10cheat_3366',['set10CHeat',['../classIRFujitsuAC.html#a0352fca45ddb7b05277cd3fd66b5a6ca',1,'IRFujitsuAC']]], - ['set3d_3367',['set3D',['../classIRMitsubishiHeavy152Ac.html#ab22654d492a4b0e82efcd0c96fc9bbe3',1,'IRMitsubishiHeavy152Ac::set3D()'],['../classIRMitsubishiHeavy88Ac.html#ae0b7eac743a8de6852722f067e010ba7',1,'IRMitsubishiHeavy88Ac::set3D()']]], - ['set8cheat_3368',['set8CHeat',['../classIRNeoclimaAc.html#a3176c5fe3251bd6a31a3a0ddc2c294be',1,'IRNeoclimaAc']]], - ['setauto_3369',['setAuto',['../classIRVestelAc.html#a2509eed2e0d7b23595bbe6dd7df17d74',1,'IRVestelAc']]], - ['setbeep_3370',['setBeep',['../classIRDaikin2.html#a4c0588887a45403a0a9f2cf95f847889',1,'IRDaikin2::setBeep()'],['../classIRSamsungAc.html#a092ccbea031dd4be747076530117649d',1,'IRSamsungAc::setBeep()'],['../classIRSanyoAc.html#a420e2cc1f1d2590e7582f3f3a3b5c536',1,'IRSanyoAc::setBeep()']]], - ['setbit_3371',['setBit',['../namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b',1,'irutils::setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)'],['../namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c',1,'irutils::setBit(const uint8_t data, const uint8_t position, const bool on)'],['../namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220',1,'irutils::setBit(uint8_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b',1,'irutils::setBit(uint32_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487',1,'irutils::setBit(uint64_t *const data, const uint8_t position, const bool on)']]], - ['setbits_3372',['setBits',['../namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78',1,'irutils::setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)'],['../namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e',1,'irutils::setBits(uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)'],['../namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c',1,'irutils::setBits(uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)']]], - ['setboost_3373',['setBoost',['../classIRDelonghiAc.html#a827d1e43e9252657147226aa3f8e4eb8',1,'IRDelonghiAc']]], - ['setbreeze_3374',['setBreeze',['../classIRSamsungAc.html#a310a73f15a0274fbaf15b981abaae592',1,'IRSamsungAc']]], - ['setbutton_3375',['setButton',['../classIRHaierACYRW02.html#aa0f1561e2446f6231f722581f5bae34d',1,'IRHaierACYRW02::setButton()'],['../classIRHitachiAc424.html#af4ded7ea8aa94271d5135eebd3bb80a8',1,'IRHitachiAc424::setButton()'],['../classIRNeoclimaAc.html#a7e2e6e646411b4f5ea3c1ce1e944581c',1,'IRNeoclimaAc::setButton()']]], - ['setcelsius_3376',['setCelsius',['../classIRFujitsuAC.html#a29050c9b6174ac038d85ef8983fe8940',1,'IRFujitsuAC']]], - ['setclean_3377',['setClean',['../classIRCoolixAC.html#a4ca2c23f44ae56d80dcb7a7424ec17b3',1,'IRCoolixAC::setClean()'],['../classIRDaikin2.html#a21e09b867710a225d5cf53006f723326',1,'IRDaikin2::setClean()'],['../classIRElectraAc.html#a4aa44fc40196067469dfa8a722e33115',1,'IRElectraAc::setClean()'],['../classIRFujitsuAC.html#a7f6f18ea39bf28717cb65ff348b1b2f5',1,'IRFujitsuAC::setClean()'],['../classIRMitsubishiHeavy152Ac.html#a11678e7eb906414770938f6efce266f1',1,'IRMitsubishiHeavy152Ac::setClean()'],['../classIRMitsubishiHeavy88Ac.html#a65968304e4aaf025dfefc49d5d777cbd',1,'IRMitsubishiHeavy88Ac::setClean()'],['../classIRSamsungAc.html#a911ca57dfb0e6787cba330e8d49b2496',1,'IRSamsungAc::setClean()'],['../classIRSharpAc.html#ace6e7b98496a594031809fe8a535c429',1,'IRSharpAc::setClean()']]], - ['setclock_3378',['setClock',['../classIRDaikin128.html#aa9928ac010ec79ddab4f551eedf2f5d9',1,'IRDaikin128::setClock()'],['../classIRDaikin64.html#a655f1cec5e28f79e5718573678c535ec',1,'IRDaikin64::setClock()'],['../classIREcoclimAc.html#af81295d2878131c0302902b9a1f80db2',1,'IREcoclimAc::setClock()'],['../classIRMitsubishiAC.html#a7abe34adf36bdd1a65a17f56ee8af1f6',1,'IRMitsubishiAC::setClock()'],['../classIRPanasonicAc.html#a3f76c6aca94f52c227c2e259512fd101',1,'IRPanasonicAc::setClock()'],['../classIRWhirlpoolAc.html#aab09aae7de733414bf480c3df22b83f8',1,'IRWhirlpoolAc::setClock()']]], - ['setcmd_3379',['setCmd',['../classIRFujitsuAC.html#a7579944c11b3d31bb069303926307617',1,'IRFujitsuAC']]], - ['setcomfort_3380',['setComfort',['../classIRDaikinESP.html#aaa15c0be7ffb8e845a03d193583a58d1',1,'IRDaikinESP::setComfort()'],['../classIRDaikin152.html#a95de2dc0a90fe4212cb60973b9430486',1,'IRDaikin152::setComfort()']]], - ['setcommand_3381',['setCommand',['../classIRGoodweatherAc.html#a4e266f42b7a82c49208e2acc7813e07b',1,'IRGoodweatherAc::setCommand()'],['../classIRHaierAC.html#ade34c951e72a794c2ff7fa0d1595d68f',1,'IRHaierAC::setCommand()'],['../classIRWhirlpoolAc.html#aaea26b1388489dff70a98fde1e6185be',1,'IRWhirlpoolAc::setCommand()']]], - ['setcurrentday_3382',['setCurrentDay',['../classIRDaikinESP.html#a5465b9857fd73b82362f766368717d16',1,'IRDaikinESP']]], - ['setcurrenttime_3383',['setCurrentTime',['../classIRDaikinESP.html#ae6559268982ae0968358a885c7dbba6e',1,'IRDaikinESP::setCurrentTime()'],['../classIRDaikin2.html#a8b32b1b9a87c9b671af6aeedb709d520',1,'IRDaikin2::setCurrentTime()']]], - ['setcurrtime_3384',['setCurrTime',['../classIRHaierAC.html#a53500ebdec058d27396e5906a572fe15',1,'IRHaierAC']]], - ['setdisplay_3385',['setDisplay',['../classIRSamsungAc.html#ad20199bed3a01208ec694b9d4eb7ef98',1,'IRSamsungAc']]], - ['setdisplaytempsource_3386',['setDisplayTempSource',['../classIRGreeAC.html#a1d073c31ea169d0e5cf33c8592982035',1,'IRGreeAC']]], - ['setdrygrade_3387',['setDryGrade',['../classIRKelonAc.html#aec38ea2d05bfece8314c5b7a45d19dbc',1,'IRKelonAc']]], - ['setecono_3388',['setEcono',['../classIRCoronaAc.html#abb5624317fff60674bed410be3a3fa52',1,'IRCoronaAc::setEcono()'],['../classIRDaikinESP.html#a12129aedd6320522a9b6e811e347089c',1,'IRDaikinESP::setEcono()'],['../classIRDaikin2.html#a42a44a6cefa6bf6f45148d39c216ebc0',1,'IRDaikin2::setEcono()'],['../classIRDaikin128.html#a07fb5289ee476e0335fec4845254b7ce',1,'IRDaikin128::setEcono()'],['../classIRDaikin152.html#a8062d16f7aefb7586e3d3bdfea8755b4',1,'IRDaikin152::setEcono()'],['../classIRMitsubishiHeavy152Ac.html#ab3964219ee3c0c5112bb38c892a01784',1,'IRMitsubishiHeavy152Ac::setEcono()'],['../classIRMitsubishiHeavy88Ac.html#a7612448f1cceaa6aeee1697f51adaf43',1,'IRMitsubishiHeavy88Ac::setEcono()'],['../classIRNeoclimaAc.html#af6748510814a39756263916913890844',1,'IRNeoclimaAc::setEcono()'],['../classIRTcl112Ac.html#a48ac7acfa8fed8e9da39907282f4f377',1,'IRTcl112Ac::setEcono()'],['../classIRToshibaAC.html#a780040755a8061107f655e060f2da206',1,'IRToshibaAC::setEcono()'],['../classIRVoltas.html#a0e9ebffcb4a62afc68722e8abf9f9adb',1,'IRVoltas::setEcono()']]], - ['seteconotoggle_3389',['setEconoToggle',['../classIRMideaAC.html#aef83db5c3d13273541039d9e03e3230e',1,'IRMideaAC::setEconoToggle()'],['../classIRSharpAc.html#ae3495676b8bffecba5c56fbf1ab9ee4d',1,'IRSharpAc::setEconoToggle()']]], - ['setenablesensortemp_3390',['setEnableSensorTemp',['../classIRMideaAC.html#a89eede8ecf61bc05a7c53e49706361a2',1,'IRMideaAC']]], - ['seteye_3391',['setEye',['../classIRDaikin2.html#a5ba8e5d5dd4aba45a90de1d450a7a88b',1,'IRDaikin2::setEye()'],['../classIRNeoclimaAc.html#aaf433cab785db382c55a420e68e7d7ec',1,'IRNeoclimaAc::setEye()']]], - ['seteyeauto_3392',['setEyeAuto',['../classIRDaikin2.html#a975c2fdb261d6d2b6c8e196fbd074899',1,'IRDaikin2']]], - ['setfan_3393',['setFan',['../classIRAirwellAc.html#a3b3acc1670d7057e7c36fc2bd0a71232',1,'IRAirwellAc::setFan()'],['../classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553',1,'IRAmcorAc::setFan()'],['../classIRArgoAC.html#a8144f003628e128ec6630aef49ed5cb5',1,'IRArgoAC::setFan()'],['../classIRCarrierAc64.html#a312027468b508e9d38dd9e23ee99f9e4',1,'IRCarrierAc64::setFan()'],['../classIRCoolixAC.html#aff4189cb1000c6db7d88624fbadbe0cb',1,'IRCoolixAC::setFan()'],['../classIRCoronaAc.html#aa4da12502bf85438846bdde56391ee5c',1,'IRCoronaAc::setFan()'],['../classIRDaikinESP.html#a1f191f45e473482a86aad9a1c879e083',1,'IRDaikinESP::setFan()'],['../classIRDaikin2.html#af9f3ddbdd1f1d5d99c84846b73c5daa1',1,'IRDaikin2::setFan()'],['../classIRDaikin216.html#a8fadfb1e61deca74a2d1b9c1d5ae62e1',1,'IRDaikin216::setFan()'],['../classIRDaikin160.html#a7f507c64dc7a9fa1e9391e9e8473af1b',1,'IRDaikin160::setFan()'],['../classIRDaikin176.html#a050a9943dc7d8289472e6b9dbdcb06c1',1,'IRDaikin176::setFan()'],['../classIRDaikin128.html#a0495834250e97e7831e9906ab548fe44',1,'IRDaikin128::setFan()'],['../classIRDaikin152.html#a385a4f65dfccd0a9e94be06ae60c5343',1,'IRDaikin152::setFan()'],['../classIRDaikin64.html#af39206f90b99fd5ee340923b196368b8',1,'IRDaikin64::setFan()'],['../classIRDelonghiAc.html#a440f1e0efa18c6b1a8e18e0a97fbfb79',1,'IRDelonghiAc::setFan()'],['../classIREcoclimAc.html#a5760f762c04f950566b51b34bee2b013',1,'IREcoclimAc::setFan()'],['../classIRElectraAc.html#aa338ce18cafaf9c7b9aa3385e681bbe7',1,'IRElectraAc::setFan()'],['../classIRGoodweatherAc.html#af8cf9ba59af548677e586cd59e8a6cc2',1,'IRGoodweatherAc::setFan()'],['../classIRGreeAC.html#a9bb570e71df5002298505d49473e6bac',1,'IRGreeAC::setFan()'],['../classIRHaierAC.html#a42ee1c5889f07bf7615c8f853bca2261',1,'IRHaierAC::setFan()'],['../classIRHaierACYRW02.html#ae9c3a7bffc08d9d5204616823f709889',1,'IRHaierACYRW02::setFan()'],['../classIRHitachiAc.html#a0760b07502b976880ee8499dc6fa61ff',1,'IRHitachiAc::setFan()'],['../classIRHitachiAc1.html#a7294dc1324877d4a64f7b4373d97d745',1,'IRHitachiAc1::setFan()'],['../classIRHitachiAc424.html#afd69bcff56224f39af92fc2d334b67bb',1,'IRHitachiAc424::setFan()'],['../classIRKelonAc.html#a8ecc24641976085aed802e6e1c67ea9a',1,'IRKelonAc::setFan()'],['../classIRKelvinatorAC.html#af08e94be9699983c0087c9b059aad319',1,'IRKelvinatorAC::setFan()'],['../classIRLgAc.html#a0f1901a21ffb93641d3481417d74bb4e',1,'IRLgAc::setFan()'],['../classIRMideaAC.html#a546eeca4eea015899a5ad9f5d1c6fafb',1,'IRMideaAC::setFan()'],['../classIRMitsubishiAC.html#a4e88e50b2eddd0233aade5c1bf7819f1',1,'IRMitsubishiAC::setFan()'],['../classIRMitsubishi136.html#a2aa62126614f734ec3d1b7b3cb653e9e',1,'IRMitsubishi136::setFan()'],['../classIRMitsubishi112.html#ab681e78572c869a8c57079a660fe1505',1,'IRMitsubishi112::setFan()'],['../classIRMitsubishiHeavy152Ac.html#ac8d8eceba935aa626cb229d1c41081bb',1,'IRMitsubishiHeavy152Ac::setFan()'],['../classIRMitsubishiHeavy88Ac.html#a4f8c934a82091547c36da512329e76d7',1,'IRMitsubishiHeavy88Ac::setFan()'],['../classIRNeoclimaAc.html#a8db9d2d446e8614b2fc4583a454d7cee',1,'IRNeoclimaAc::setFan()'],['../classIRPanasonicAc.html#a8d77292226f55601c30ee53252ba83cd',1,'IRPanasonicAc::setFan()'],['../classIRPanasonicAc32.html#aaa15347ebf0eb6db7abb64553f3eb3d7',1,'IRPanasonicAc32::setFan()'],['../classIRSamsungAc.html#a6c7571e14fe6629348273a2b49a0a824',1,'IRSamsungAc::setFan()'],['../classIRSanyoAc.html#a400ec91300c0bfa5dd329dc0414d078b',1,'IRSanyoAc::setFan()'],['../classIRSharpAc.html#a5138068f8ba4c51939ff3bb14f0aae45',1,'IRSharpAc::setFan()'],['../classIRTcl112Ac.html#a0dab8ad6675c4ec122d0d7e28a557cba',1,'IRTcl112Ac::setFan()'],['../classIRTechnibelAc.html#a885f272cfa47004dfd8d19a6e251a337',1,'IRTechnibelAc::setFan()'],['../classIRTecoAc.html#afda9a33ca450568f968217bedc9ad7f2',1,'IRTecoAc::setFan()'],['../classIRToshibaAC.html#a020ba3e95c607f52ce091193fc5825fc',1,'IRToshibaAC::setFan()'],['../classIRTranscoldAc.html#a444593321998f04b4ef5e9c9ceb5b511',1,'IRTranscoldAc::setFan()'],['../classIRTrotecESP.html#a01b26cb6e671298f8a77a54dafdb27e3',1,'IRTrotecESP::setFan()'],['../classIRTrumaAc.html#a6e650fb764693da7ab1b863b43a667e1',1,'IRTrumaAc::setFan()'],['../classIRVestelAc.html#af53dfd0a0372c878b6ba2ca1cfc21ccd',1,'IRVestelAc::setFan()'],['../classIRVoltas.html#a013f93d588f57b8e62d059984fbf6173',1,'IRVoltas::setFan()'],['../classIRWhirlpoolAc.html#a8da28ee25fdc91d55a9f6ab5dab3af81',1,'IRWhirlpoolAc::setFan()']]], - ['setfanspeed_3394',['setFanSpeed',['../classIRFujitsuAC.html#af0fc10ec0a606434477cb41c60eb49e5',1,'IRFujitsuAC']]], - ['setfilter_3395',['setFilter',['../classIRFujitsuAC.html#aec0048efe87f60406c76ad6bc3ffbc61',1,'IRFujitsuAC::setFilter()'],['../classIRMitsubishiHeavy152Ac.html#aaf76ac48228d3a7b8490e684407e65b1',1,'IRMitsubishiHeavy152Ac::setFilter()']]], - ['setflap_3396',['setFlap',['../classIRArgoAC.html#a55a6402ffc3fe7fb59775050901416ca',1,'IRArgoAC']]], - ['setfresh_3397',['setFresh',['../classIRNeoclimaAc.html#a6354d8b902ffc1e7c044a61185504404',1,'IRNeoclimaAc']]], - ['setfreshair_3398',['setFreshAir',['../classIRDaikin2.html#a6e0596c7b9f9b43b8d241340ae08e886',1,'IRDaikin2']]], - ['setfreshairhigh_3399',['setFreshAirHigh',['../classIRDaikin2.html#a044471f2298a1942bcc2f859f9459924',1,'IRDaikin2']]], - ['sethealth_3400',['setHealth',['../classIRHaierAC.html#a48c9ae91809d63156eeb3889f2e908f4',1,'IRHaierAC::setHealth()'],['../classIRHaierACYRW02.html#a79673650a2285f029a35ab69edeb0e74',1,'IRHaierACYRW02::setHealth()'],['../classIRTcl112Ac.html#a28ed509977d8642174bc6c9aa97ae1c3',1,'IRTcl112Ac::setHealth()']]], - ['sethold_3401',['setHold',['../classIRNeoclimaAc.html#a2eb4e0a2ff39ceb1b6b571998d91b31e',1,'IRNeoclimaAc']]], - ['sethumid_3402',['setHumid',['../classIRTecoAc.html#a4ab07a7c95f34d3b292926c719aeb303',1,'IRTecoAc']]], - ['setid_3403',['setId',['../classIRFujitsuAC.html#a5f87182e0eea7bba7ed50b9942565c91',1,'IRFujitsuAC']]], - ['setifeel_3404',['setIFeel',['../classIRGreeAC.html#a68a670156a5e0a91a8a3cf9225263e0b',1,'IRGreeAC::setIFeel()'],['../classIRArgoAC.html#ae59f903855961441b676b7f662602554',1,'IRArgoAC::setiFeel()']]], - ['setinvertedstates_3405',['setInvertedStates',['../classIRHitachiAc424.html#ad18528cf83e863b98cb1609eec970ac5',1,'IRHitachiAc424::setInvertedStates()'],['../classIRHitachiAc3.html#af37c710449cd32df4753509749e31cad',1,'IRHitachiAc3::setInvertedStates()']]], - ['setion_3406',['setIon',['../classIRNeoclimaAc.html#a504fc5e371746fda8e7eb7cc0abf137a',1,'IRNeoclimaAc::setIon()'],['../classIRPanasonicAc.html#a5a1c4f5b9eb7a3a1a81a6acd0491c3cd',1,'IRPanasonicAc::setIon()'],['../classIRSamsungAc.html#aeee65ca6d2100635a517077f01053bed',1,'IRSamsungAc::setIon()'],['../classIRSharpAc.html#af6a390362bc5b40eecc6564b16b3379b',1,'IRSharpAc::setIon()'],['../classIRVestelAc.html#acf860da68a15d463dab437a808c9c8c6',1,'IRVestelAc::setIon()']]], - ['setionfilter_3407',['setIonFilter',['../classIRKelvinatorAC.html#a6a219c481ddc21d93028f5c799c25883',1,'IRKelvinatorAC']]], - ['setled_3408',['setLed',['../classIRCoolixAC.html#aee6c7fd3a065ff14425fc02cb2ed8354',1,'IRCoolixAC']]], - ['setlight_3409',['setLight',['../classIRDaikin2.html#a7ecadb3335e9b22729a89b4c41456242',1,'IRDaikin2::setLight()'],['../classIRGoodweatherAc.html#a3f149ff426b236ba9f90659a6daf4a9c',1,'IRGoodweatherAc::setLight()'],['../classIRGreeAC.html#a702bbba38e11bb8f3428ee707fc82311',1,'IRGreeAC::setLight()'],['../classIRKelvinatorAC.html#a870890c2bc8510f8f7351ca21db8d855',1,'IRKelvinatorAC::setLight()'],['../classIRNeoclimaAc.html#a1d7a6ec6d319544bee907a23a1d14084',1,'IRNeoclimaAc::setLight()'],['../classIRTcl112Ac.html#a7dec5b0559f996df8a4fc259ab6012e9',1,'IRTcl112Ac::setLight()'],['../classIRTecoAc.html#a25d97c1e7be31d80a4ffad0026e633d7',1,'IRTecoAc::setLight()'],['../classIRVoltas.html#aedd6ca44b32c6da83da997d7048a82f4',1,'IRVoltas::setLight()'],['../classIRWhirlpoolAc.html#a70b4c0467a7747f9cf9e106af1025771',1,'IRWhirlpoolAc::setLight()']]], - ['setlighttoggle_3410',['setLightToggle',['../classIRDaikin128.html#a6361c789141ccecb729c104e71ddcc41',1,'IRDaikin128::setLightToggle()'],['../classIRElectraAc.html#a15373982641e36f4b68258368700be7d',1,'IRElectraAc::setLightToggle()'],['../classIRMideaAC.html#a84daaa272cedd6f5e74b03a9f3962cba',1,'IRMideaAC::setLightToggle()'],['../classIRSharpAc.html#a7b3b5ef00b94366feb42cc1e4781ae57',1,'IRSharpAc::setLightToggle()']]], - ['setmax_3411',['setMax',['../classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f',1,'IRAmcorAc::setMax()'],['../classIRArgoAC.html#a909c1f74e9452d0e19fc3ffd28b1b81b',1,'IRArgoAC::setMax()']]], - ['setmode_3412',['setMode',['../classIRAirwellAc.html#a3cbc12fee37b9b2b19aa5455ace9d46e',1,'IRAirwellAc::setMode()'],['../classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68',1,'IRAmcorAc::setMode()'],['../classIRArgoAC.html#a8575f0ef967b09308ed6a453857e65c7',1,'IRArgoAC::setMode()'],['../classIRCarrierAc64.html#ae462eeec49ff91358f1b9921750ee36d',1,'IRCarrierAc64::setMode()'],['../classIRCoolixAC.html#a5c0094d32aca6a5323f4dc72a03f02e9',1,'IRCoolixAC::setMode()'],['../classIRCoronaAc.html#aedeeedd176c89e5b7b650a4311e712be',1,'IRCoronaAc::setMode()'],['../classIRDaikinESP.html#af0f463201c877d33fa8680053dda7551',1,'IRDaikinESP::setMode()'],['../classIRDaikin2.html#a24ef3b53f22fe3557ed2dbc98a5bc6d2',1,'IRDaikin2::setMode()'],['../classIRDaikin216.html#a1d0dfce75ac95df9125b2cfe7c955080',1,'IRDaikin216::setMode()'],['../classIRDaikin160.html#a48e6fff63fd8b894c649fb495a467faa',1,'IRDaikin160::setMode()'],['../classIRDaikin176.html#a7ce82479f5ae2721baae8119b711c112',1,'IRDaikin176::setMode()'],['../classIRDaikin128.html#a9693e9931449f39253ca9102ac5cbfe9',1,'IRDaikin128::setMode()'],['../classIRDaikin152.html#aad0a46c751b73792282d6614103f57d8',1,'IRDaikin152::setMode()'],['../classIRDaikin64.html#a04dff0d273457a7bc3f3e0e1af4f7cd9',1,'IRDaikin64::setMode()'],['../classIRDelonghiAc.html#a62392c26321f038a84d99d54039bcfae',1,'IRDelonghiAc::setMode()'],['../classIREcoclimAc.html#a0d240abafeed17a9e0d3dca9804e03d2',1,'IREcoclimAc::setMode()'],['../classIRElectraAc.html#a911b7410fd2f29464c1505e183c04c5d',1,'IRElectraAc::setMode()'],['../classIRFujitsuAC.html#ac125c320f9794aae931bc59ba332a4a8',1,'IRFujitsuAC::setMode()'],['../classIRGoodweatherAc.html#a8eed6b70b7b1c2e8a9620db7462e1fb5',1,'IRGoodweatherAc::setMode()'],['../classIRGreeAC.html#a9d9dbd416e3dc270fcfda620b3bb4fe2',1,'IRGreeAC::setMode()'],['../classIRHaierAC.html#a3ad0317f2fd4f57d8ce61353ab3e48c7',1,'IRHaierAC::setMode()'],['../classIRHaierACYRW02.html#ae762c5f5422b4af612fa00f7c26452ed',1,'IRHaierACYRW02::setMode()'],['../classIRHitachiAc.html#a208f73a42484a1555145b41849e8c51f',1,'IRHitachiAc::setMode()'],['../classIRHitachiAc1.html#a1f3ced601e1131b70f840820ecb3feaa',1,'IRHitachiAc1::setMode()'],['../classIRHitachiAc424.html#a373a51d207674e35e00762b057f73cd5',1,'IRHitachiAc424::setMode()'],['../classIRKelonAc.html#a0c7c47dabb377efe2079b16a14f4ca75',1,'IRKelonAc::setMode()'],['../classIRKelvinatorAC.html#af55cc77892bc960587037c337b90d1bc',1,'IRKelvinatorAC::setMode()'],['../classIRLgAc.html#a5e1b21d9121c6bf6507f615f470b5890',1,'IRLgAc::setMode()'],['../classIRMideaAC.html#a3b92f25a82741ae404e8f9af8dbca3a8',1,'IRMideaAC::setMode()'],['../classIRMitsubishiAC.html#a2b4e2f00ee5a385172b13e8d9858ac0b',1,'IRMitsubishiAC::setMode()'],['../classIRMitsubishi136.html#aaef2ed81bdeb183995e2342c2ca17a8b',1,'IRMitsubishi136::setMode()'],['../classIRMitsubishi112.html#a0c1434e1d8dd513007400042324e868e',1,'IRMitsubishi112::setMode()'],['../classIRMitsubishiHeavy152Ac.html#a5a68388f337d7ba80289359903a1d01d',1,'IRMitsubishiHeavy152Ac::setMode()'],['../classIRMitsubishiHeavy88Ac.html#a1802cc8a382d6161b83f8947137d941d',1,'IRMitsubishiHeavy88Ac::setMode()'],['../classIRNeoclimaAc.html#adabd715c4a2ec34dd88330b97a1f0ecd',1,'IRNeoclimaAc::setMode()'],['../classIRPanasonicAc.html#add025b64e736d5120abeb2564a2849a4',1,'IRPanasonicAc::setMode()'],['../classIRPanasonicAc32.html#a3bd5cef91112ddb0913685e64d3f60ae',1,'IRPanasonicAc32::setMode()'],['../classIRSamsungAc.html#a708d9c6c91d774d6eeadbc0bd7f350af',1,'IRSamsungAc::setMode()'],['../classIRSanyoAc.html#a47521969475393eafe94faeb51204132',1,'IRSanyoAc::setMode()'],['../classIRSharpAc.html#ab51c207de90391cb7190e3ec95adc16e',1,'IRSharpAc::setMode()'],['../classIRTcl112Ac.html#a1a050c9b238691ba6d4764beeb788778',1,'IRTcl112Ac::setMode()'],['../classIRTechnibelAc.html#a04917b3760ed658d88ad2dae976d7a64',1,'IRTechnibelAc::setMode()'],['../classIRTecoAc.html#aba404540b723fa4687a4fda954221130',1,'IRTecoAc::setMode()'],['../classIRToshibaAC.html#aa001cddc464d6cbcc342e5e4c7af13ff',1,'IRToshibaAC::setMode()'],['../classIRTranscoldAc.html#a9371bf7cdc08067d4afb2dffa1c584c4',1,'IRTranscoldAc::setMode()'],['../classIRTrotecESP.html#a5d34e8d1e1be765e51cbfb6874482997',1,'IRTrotecESP::setMode()'],['../classIRTrumaAc.html#ae244a2be001cc99946f59cd3c178d95a',1,'IRTrumaAc::setMode()'],['../classIRVestelAc.html#a470e14ab5623386c0fa2b02fd15ea1d8',1,'IRVestelAc::setMode()'],['../classIRVoltas.html#afa1407bb1cfac30bdb762f7131dc9136',1,'IRVoltas::setMode()'],['../classIRWhirlpoolAc.html#ab09869929f5cc1fd0cc5dede93bba1c5',1,'IRWhirlpoolAc::setMode()']]], - ['setmodel_3413',['setModel',['../classIRFujitsuAC.html#a5393698000d8becf33ff332b32b97c73',1,'IRFujitsuAC::setModel()'],['../classIRGreeAC.html#a1075a08c30a2de97892e0842cb30e451',1,'IRGreeAC::setModel()'],['../classIRHitachiAc1.html#abb8c2c87e87f9d538f171e842c9d309a',1,'IRHitachiAc1::setModel()'],['../classIRLgAc.html#ae4b8758ecf10bd7e25ed401593692821',1,'IRLgAc::setModel()'],['../classIRPanasonicAc.html#a342531bfea3b05484de84e537bde390c',1,'IRPanasonicAc::setModel()'],['../classIRSharpAc.html#a35eb3241339c663db31002738b9632d3',1,'IRSharpAc::setModel()'],['../classIRVoltas.html#aa642fcbc4b0da48ef26c4e8c79f3e8b4',1,'IRVoltas::setModel()'],['../classIRWhirlpoolAc.html#accfa1660ed792acc3cf48ff60d9570f0',1,'IRWhirlpoolAc::setModel()']]], - ['setmold_3414',['setMold',['../classIRDaikinESP.html#a1616d08c8fd3c628fc45a76c32743ac9',1,'IRDaikinESP::setMold()'],['../classIRDaikin2.html#ad53e046e545f3b6c5418dfbaf58653ca',1,'IRDaikin2::setMold()']]], - ['setnight_3415',['setNight',['../classIRArgoAC.html#a769dd3b538653940e41883848bc1e19c',1,'IRArgoAC::setNight()'],['../classIRMitsubishiHeavy152Ac.html#a6920a1aad327e2f347b09da12f11cf8c',1,'IRMitsubishiHeavy152Ac::setNight()']]], - ['setoffsleeptimer_3416',['setOffSleepTimer',['../classIRFujitsuAC.html#acc78790fa33d24c5e068200ec3109798',1,'IRFujitsuAC']]], - ['setofftime_3417',['setOffTime',['../classIRDaikin64.html#a46a0b1e2438087ba557494b0b4fce4a5',1,'IRDaikin64::setOffTime()'],['../classIRVoltas.html#ad5977a24ef551ad0a19b5e61bae0482a',1,'IRVoltas::setOffTime()']]], - ['setofftimeenabled_3418',['setOffTimeEnabled',['../classIRDaikin64.html#aea59ae39ddd0fc33a6941d0affceae9a',1,'IRDaikin64']]], - ['setofftimer_3419',['setOffTimer',['../classIRCarrierAc64.html#a92b1066e783db1bdffabfdc57699deef',1,'IRCarrierAc64::setOffTimer()'],['../classIRCoronaAc.html#a00f269b6389bf65d1816e80b835aa9b0',1,'IRCoronaAc::setOffTimer()'],['../classIRDaikin128.html#a30ca067676dfde963986e25c84616368',1,'IRDaikin128::setOffTimer()'],['../classIRDelonghiAc.html#a9602c652b10b06c6eeae0e6158c42c68',1,'IRDelonghiAc::setOffTimer()'],['../classIREcoclimAc.html#a9a1b8b23de45b38eff74d10f5dfdd7bf',1,'IREcoclimAc::setOffTimer()'],['../classIRFujitsuAC.html#a3f69df43ab82f08c84782585b90437a2',1,'IRFujitsuAC::setOffTimer()'],['../classIRHaierAC.html#aa16b36aa7ef07628343dbd2dfe5157a2',1,'IRHaierAC::setOffTimer()'],['../classIRHitachiAc1.html#a62e9c7b68e63d1791d79805f2bce99df',1,'IRHitachiAc1::setOffTimer()'],['../classIRMideaAC.html#a1f5e4e75987a11300f29355bae12d9e5',1,'IRMideaAC::setOffTimer()'],['../classIRPanasonicAc.html#a08e097f40cee6c614ec1a8de716222cf',1,'IRPanasonicAc::setOffTimer()'],['../classIRSanyoAc.html#a6f5edbc22b039191500845ffd3ec77b5',1,'IRSanyoAc::setOffTimer()'],['../classIRVestelAc.html#acc61cd785d2f668a86ecefb243d63549',1,'IRVestelAc::setOffTimer()'],['../classIRWhirlpoolAc.html#a69f3555c9b27f3cfd9167ed3239804b8',1,'IRWhirlpoolAc::setOffTimer()']]], - ['setofftimeractive_3420',['setOffTimerActive',['../classIRVestelAc.html#a8a023f5594b446f0c20f66c4ee584d8e',1,'IRVestelAc']]], - ['setofftimerenabled_3421',['setOffTimerEnabled',['../classIRDaikin128.html#aac8a178bdaf7de7a183991e710a9a9d8',1,'IRDaikin128::setOffTimerEnabled()'],['../classIRDelonghiAc.html#a5cf81c9864f3c3728d4dd65e4d9c49c8',1,'IRDelonghiAc::setOffTimerEnabled()']]], - ['setontime_3422',['setOnTime',['../classIRDaikin64.html#aaada482820a90492a933f368fafaebb7',1,'IRDaikin64::setOnTime()'],['../classIRVoltas.html#a260ef77c26d2c987122391378ff5e876',1,'IRVoltas::setOnTime()']]], - ['setontimeenabled_3423',['setOnTimeEnabled',['../classIRDaikin64.html#a8e7a7c1f775f8ddf9d48a96915751c7a',1,'IRDaikin64']]], - ['setontimer_3424',['setOnTimer',['../classIRCarrierAc64.html#a9049a8d91200b878cc2a1b9b80a280ea',1,'IRCarrierAc64::setOnTimer()'],['../classIRCoronaAc.html#aae4142f45cc9c2b3e392b72cb404a2d8',1,'IRCoronaAc::setOnTimer()'],['../classIRDaikin128.html#a21773493eafae741b5716ac569eaf0a8',1,'IRDaikin128::setOnTimer()'],['../classIRDelonghiAc.html#a9a478f463a632893be7c4f5223c188ad',1,'IRDelonghiAc::setOnTimer()'],['../classIREcoclimAc.html#ae09d0b632cf657769d23f201284aa08f',1,'IREcoclimAc::setOnTimer()'],['../classIRFujitsuAC.html#a500fd3371c360b446b0cc14e994b77db',1,'IRFujitsuAC::setOnTimer()'],['../classIRHaierAC.html#aa5e95aa05749f6d35dd31b021fea2f5b',1,'IRHaierAC::setOnTimer()'],['../classIRHitachiAc1.html#a51ed6155f228628942ba08ea2ff5c547',1,'IRHitachiAc1::setOnTimer()'],['../classIRMideaAC.html#a99ae120368751b88b73d3b0fe9b426ce',1,'IRMideaAC::setOnTimer()'],['../classIRPanasonicAc.html#a51fdaa11e4e3f77189a94007a5acbec2',1,'IRPanasonicAc::setOnTimer()'],['../classIRVestelAc.html#af19bb7704326eb5688f2a2fa08e10ee2',1,'IRVestelAc::setOnTimer()'],['../classIRWhirlpoolAc.html#a1cb0e346e6f40b65b98a768df7fdace8',1,'IRWhirlpoolAc::setOnTimer()']]], - ['setontimeractive_3425',['setOnTimerActive',['../classIRVestelAc.html#a16ef4ecb7c76bef89b6e0ca36746d606',1,'IRVestelAc']]], - ['setontimerenabled_3426',['setOnTimerEnabled',['../classIRDaikin128.html#a07f693fac3de101c91c190e5e70edb57',1,'IRDaikin128::setOnTimerEnabled()'],['../classIRDelonghiAc.html#af6b956c273284e287093260039003362',1,'IRDelonghiAc::setOnTimerEnabled()']]], - ['setoutsidequiet_3427',['setOutsideQuiet',['../classIRFujitsuAC.html#a9a0533cba18739e52014307bf4b1ad07',1,'IRFujitsuAC']]], - ['setpower_3428',['setPower',['../classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988',1,'IRAmcorAc::setPower()'],['../classIRArgoAC.html#a991f73d84952c1d8ac86c579d1b01785',1,'IRArgoAC::setPower()'],['../classIRCarrierAc64.html#a8acf59cbf3b02381b5188324030b7727',1,'IRCarrierAc64::setPower()'],['../classIRCoolixAC.html#a975b59045a3c2a50392fdade2743e4e6',1,'IRCoolixAC::setPower()'],['../classIRCoronaAc.html#adc636402b51e0c78c4797aea5f80915d',1,'IRCoronaAc::setPower()'],['../classIRDaikinESP.html#aa0fb65d01bb203d17d923504ddd60984',1,'IRDaikinESP::setPower()'],['../classIRDaikin2.html#a3adfe1a80a702b7098ccd0e18225396e',1,'IRDaikin2::setPower()'],['../classIRDaikin216.html#a130a98bb2422a228977dea8a4e068ace',1,'IRDaikin216::setPower()'],['../classIRDaikin160.html#af1a800ef7494c49a868d01039f5c37e4',1,'IRDaikin160::setPower()'],['../classIRDaikin176.html#a58c755ba53d1f14a51b0c64ff4ef0669',1,'IRDaikin176::setPower()'],['../classIRDaikin152.html#a887f7340b9c3e7933f5d06bc5f59ee91',1,'IRDaikin152::setPower()'],['../classIRDelonghiAc.html#aa1ebbf63aa2331b87b95df9c5bdb41dc',1,'IRDelonghiAc::setPower()'],['../classIREcoclimAc.html#acca0a0d62568abd6f62c6f403e99847f',1,'IREcoclimAc::setPower()'],['../classIRElectraAc.html#abd04ffe9a77a97d4fafbcecd3a7949a4',1,'IRElectraAc::setPower()'],['../classIRFujitsuAC.html#a8d8211f20c8ec299e1fcb588a0846ac2',1,'IRFujitsuAC::setPower()'],['../classIRGoodweatherAc.html#ac49e30082777b10fe9edf6ec7bd76ea5',1,'IRGoodweatherAc::setPower()'],['../classIRGreeAC.html#a16b8c6af038752cd2b416cdcf9e2fb51',1,'IRGreeAC::setPower()'],['../classIRHaierACYRW02.html#a32e4a52cf31b43ad96ff3d8f0f390620',1,'IRHaierACYRW02::setPower()'],['../classIRHitachiAc.html#ad78a7176ded93735a296eefbf75cbc06',1,'IRHitachiAc::setPower()'],['../classIRHitachiAc1.html#a4dd034793018ea58d0cc32e7a47e8f35',1,'IRHitachiAc1::setPower()'],['../classIRHitachiAc424.html#a7b0b2e2c631d1bce2dd4677bb71e79b4',1,'IRHitachiAc424::setPower()'],['../classIRKelvinatorAC.html#a517a0193a9236a28a20d1760d7401efd',1,'IRKelvinatorAC::setPower()'],['../classIRLgAc.html#a175e6482fd1565d43906c527f911b59e',1,'IRLgAc::setPower()'],['../classIRMideaAC.html#ab8341f8d3d553d8b0ed9270cc15fc8ec',1,'IRMideaAC::setPower()'],['../classIRMitsubishiAC.html#a13f26de3c35b01470176b6fd9efda566',1,'IRMitsubishiAC::setPower()'],['../classIRMitsubishi136.html#a4bf52b3784faaca95ff97a09b8be322a',1,'IRMitsubishi136::setPower()'],['../classIRMitsubishi112.html#a0545da32a5048bc9d857ffb05767d3a6',1,'IRMitsubishi112::setPower()'],['../classIRMitsubishiHeavy152Ac.html#a08202752226ff3295eb8ccd637b0158b',1,'IRMitsubishiHeavy152Ac::setPower()'],['../classIRMitsubishiHeavy88Ac.html#ac2ee9dd82e84a3735e8a0c69e64cb02e',1,'IRMitsubishiHeavy88Ac::setPower()'],['../classIRNeoclimaAc.html#ac19bea3b79cdfc868bd137b0a70c0718',1,'IRNeoclimaAc::setPower()'],['../classIRPanasonicAc.html#ad60bf8a88d041f8e8ab3d728831ee8f3',1,'IRPanasonicAc::setPower()'],['../classIRSamsungAc.html#a4af21fa0dcbf5595386f67db676a443c',1,'IRSamsungAc::setPower()'],['../classIRSanyoAc.html#a13b080b4244e027460af90740ed0ff45',1,'IRSanyoAc::setPower()'],['../classIRSharpAc.html#a6b57a66878f125f86d2aed8bd7545000',1,'IRSharpAc::setPower()'],['../classIRTcl112Ac.html#ad2367d2481f94f14b9c4f7b378711b7e',1,'IRTcl112Ac::setPower()'],['../classIRTechnibelAc.html#a935f26d55d7d5c7024e8b298fda9aeb4',1,'IRTechnibelAc::setPower()'],['../classIRTecoAc.html#a989e48a889b36ec36386a532c81872d9',1,'IRTecoAc::setPower()'],['../classIRToshibaAC.html#a100f01c014582e162f9fd287beb91dff',1,'IRToshibaAC::setPower()'],['../classIRTranscoldAc.html#a3a19128eaf81ec52f752d79d718d43a3',1,'IRTranscoldAc::setPower()'],['../classIRTrotecESP.html#a0f3f5f5db367cb5a9adb936fada94fd5',1,'IRTrotecESP::setPower()'],['../classIRTrumaAc.html#aaff68f98a079f0596440a0915409a6c1',1,'IRTrumaAc::setPower()'],['../classIRVestelAc.html#a01e06ff3916d4a14f9ca49f22918a47b',1,'IRVestelAc::setPower()'],['../classIRVoltas.html#a0ee0be11284527861476091c855a8606',1,'IRVoltas::setPower()']]], - ['setpowerbutton_3429',['setPowerButton',['../classIRCoronaAc.html#a518471d42a62863953c97334cad348be',1,'IRCoronaAc']]], - ['setpowerful_3430',['setPowerful',['../classIRDaikinESP.html#a4c0da54ee1639a3bf813cb3f3afee064',1,'IRDaikinESP::setPowerful()'],['../classIRDaikin2.html#a6538104cdcf1b55e480aaddd51116d9a',1,'IRDaikin2::setPowerful()'],['../classIRDaikin216.html#a5cb6e958f3b9789828738defe4d12c7b',1,'IRDaikin216::setPowerful()'],['../classIRDaikin128.html#aeb3aa5013b1746ed714146ca7f233119',1,'IRDaikin128::setPowerful()'],['../classIRDaikin152.html#a6477111b5662146e937c10cf02423e10',1,'IRDaikin152::setPowerful()'],['../classIRPanasonicAc.html#a6357688bc9cca92ab222343ee045f4f4',1,'IRPanasonicAc::setPowerful()'],['../classIRSamsungAc.html#ab657b79740e0f84c09611ea3b10d06f0',1,'IRSamsungAc::setPowerful()']]], - ['setpowerspecial_3431',['setPowerSpecial',['../classIRSharpAc.html#af7dd64c6d82a8502d2ee176f7b0f5abb',1,'IRSharpAc']]], - ['setpowertoggle_3432',['setPowerToggle',['../classIRAirwellAc.html#a1b6aa498d9766b041d39a7b3d73653e7',1,'IRAirwellAc::setPowerToggle()'],['../classIRDaikin128.html#a5d7edaa44f0c9ca55ef1040dd42e42e3',1,'IRDaikin128::setPowerToggle()'],['../classIRDaikin64.html#ac7f673619842d217d4eda893da2f35fd',1,'IRDaikin64::setPowerToggle()'],['../classIRHitachiAc1.html#ae30430edd92ec4b848c8a105a78e8068',1,'IRHitachiAc1::setPowerToggle()'],['../classIRPanasonicAc32.html#ad0206dff39920f1407ed52256ee1b083',1,'IRPanasonicAc32::setPowerToggle()'],['../classIRWhirlpoolAc.html#a61bec25edce5bc244acb41f79df561e7',1,'IRWhirlpoolAc::setPowerToggle()']]], - ['setpurify_3433',['setPurify',['../classIRDaikin2.html#accd4430e998a8c9be80b5a708be9337e',1,'IRDaikin2']]], - ['setquiet_3434',['setQuiet',['../classIRDaikinESP.html#a4927eb8b2db2540efa90b37f4c3cc733',1,'IRDaikinESP::setQuiet()'],['../classIRDaikin2.html#a61ca7e72f850d0f9600fa9d8a336a8ef',1,'IRDaikin2::setQuiet()'],['../classIRDaikin216.html#a062528f54412cd3d2339c7bf82305ebb',1,'IRDaikin216::setQuiet()'],['../classIRDaikin128.html#a89c49332006831debbabbfcb5ec30249',1,'IRDaikin128::setQuiet()'],['../classIRDaikin152.html#a3aadf5f0ae11c5c6c53f351dd6b9c1a4',1,'IRDaikin152::setQuiet()'],['../classIRDaikin64.html#a7e3fb8debcefb76e76dda5612e28f377',1,'IRDaikin64::setQuiet()'],['../classIRKelvinatorAC.html#a2a3ca238649c55cd4f6f92f48eddf9ac',1,'IRKelvinatorAC::setQuiet()'],['../classIRMitsubishi136.html#a70c8a44f93e90ba025a8909c004c3a7b',1,'IRMitsubishi136::setQuiet()'],['../classIRMitsubishi112.html#a9fbbfb7bb1f6cccfcdcfbc4dcc335169',1,'IRMitsubishi112::setQuiet()'],['../classIRPanasonicAc.html#a51b6ae49cb490f697adeaf7f9f466518',1,'IRPanasonicAc::setQuiet()'],['../classIRSamsungAc.html#a6b3dd7d83c613a06f3499f1c8b26a67b',1,'IRSamsungAc::setQuiet()'],['../classIRTrumaAc.html#a5c1bc2a26b75c50a723cc4d29d121a9d',1,'IRTrumaAc::setQuiet()']]], - ['setraw_3435',['setRaw',['../classIRAirwellAc.html#a56e90d8b7e902be15c5db12be872d0fb',1,'IRAirwellAc::setRaw()'],['../classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b',1,'IRAmcorAc::setRaw()'],['../classIRArgoAC.html#a98db56256eb71bf2e8da419007145e2b',1,'IRArgoAC::setRaw()'],['../classIRCarrierAc64.html#af49cf0b53bf8ff946a63bae94be0251d',1,'IRCarrierAc64::setRaw()'],['../classIRCoolixAC.html#aed28d08743c529a5715331255a8d5507',1,'IRCoolixAC::setRaw()'],['../classIRCoronaAc.html#a9ccf78675a3c175209c8d0ef08e2e671',1,'IRCoronaAc::setRaw()'],['../classIRDaikinESP.html#a7c69fc77ead837e5b4f1ececd9f43ca9',1,'IRDaikinESP::setRaw()'],['../classIRDaikin2.html#a132001e73eb5744a3a174c5517c9bbda',1,'IRDaikin2::setRaw()'],['../classIRDaikin216.html#a49f6a2ffc2e76ec4ff020e773bd70160',1,'IRDaikin216::setRaw()'],['../classIRDaikin160.html#a22e8a1600f612dd4326b2f9722d3a269',1,'IRDaikin160::setRaw()'],['../classIRDaikin176.html#a51e5f74b532eca958c09998727064e8d',1,'IRDaikin176::setRaw()'],['../classIRDaikin128.html#a25db29e01def45e8850ac9da68aa7ea7',1,'IRDaikin128::setRaw()'],['../classIRDaikin152.html#aab10e030ebe66e44607e9f35af1eb4cb',1,'IRDaikin152::setRaw()'],['../classIRDaikin64.html#a5f081026aca2bccc6fdeef8199e80779',1,'IRDaikin64::setRaw()'],['../classIRDelonghiAc.html#a219bafa7839f10acca33526cf585152a',1,'IRDelonghiAc::setRaw()'],['../classIREcoclimAc.html#ac88006b639a05c9605548db1af672fb0',1,'IREcoclimAc::setRaw()'],['../classIRElectraAc.html#ae57c51cd3f5d1ebfb2fe7b926d149dd6',1,'IRElectraAc::setRaw()'],['../classIRFujitsuAC.html#a9b89d756948affa7029eeeed51916cbb',1,'IRFujitsuAC::setRaw()'],['../classIRGoodweatherAc.html#a2eae4bbdb14fea9e3004d656f852df59',1,'IRGoodweatherAc::setRaw()'],['../classIRGreeAC.html#a588f526f2f5500c7c2933ca91ccaf865',1,'IRGreeAC::setRaw()'],['../classIRHaierAC.html#a152961e20b5a5bed2ea03cbc65d65ce9',1,'IRHaierAC::setRaw()'],['../classIRHaierACYRW02.html#a389e711e128533c409731d2c87868c85',1,'IRHaierACYRW02::setRaw()'],['../classIRHitachiAc.html#a3b67215c162ef508c68c49b621c5199b',1,'IRHitachiAc::setRaw()'],['../classIRHitachiAc1.html#ae2d40bc477e30ee574f5c5e2ba4e09c2',1,'IRHitachiAc1::setRaw()'],['../classIRHitachiAc424.html#adc24b8b984ff20cebdf81f65843bb283',1,'IRHitachiAc424::setRaw()'],['../classIRHitachiAc3.html#acff4faf79a30df7b7e7c183dec4153a7',1,'IRHitachiAc3::setRaw()'],['../classIRHitachiAc344.html#a8bf02e3923d881436a9578532ed3c024',1,'IRHitachiAc344::setRaw()'],['../classIRKelonAc.html#af752008b00838cf61cc53e631abd8c84',1,'IRKelonAc::setRaw()'],['../classIRKelvinatorAC.html#a4a32bbf1a7ee8a089ea1e4e7c750433b',1,'IRKelvinatorAC::setRaw()'],['../classIRLgAc.html#a0da8ea4946826736f526386dc4d115cc',1,'IRLgAc::setRaw()'],['../classIRMideaAC.html#ab24da22531f5b2823551501642ec1b94',1,'IRMideaAC::setRaw()'],['../classIRMitsubishiAC.html#ac7bb79f91d5a9296c2b2b74aae1bfb53',1,'IRMitsubishiAC::setRaw()'],['../classIRMitsubishi136.html#abf0487a6fb163bf896e09b2cae6ee939',1,'IRMitsubishi136::setRaw()'],['../classIRMitsubishi112.html#a5c82f92d4a1ba1477ae7738ed5ade368',1,'IRMitsubishi112::setRaw()'],['../classIRMitsubishiHeavy152Ac.html#a8d42a2d87bf889ab4b233ea0c239f4c2',1,'IRMitsubishiHeavy152Ac::setRaw()'],['../classIRMitsubishiHeavy88Ac.html#abf01e448da9ec6e3b4512f58c3020299',1,'IRMitsubishiHeavy88Ac::setRaw()'],['../classIRNeoclimaAc.html#a607ea7df35572578ef86da7f505ab407',1,'IRNeoclimaAc::setRaw()'],['../classIRPanasonicAc.html#a63308883e8447aa5cdf7d29107be220f',1,'IRPanasonicAc::setRaw()'],['../classIRPanasonicAc32.html#a349462a31274f3785effdb249b485368',1,'IRPanasonicAc32::setRaw()'],['../classIRSamsungAc.html#a95377e8c73b51e73e78b51a2b2fa16d4',1,'IRSamsungAc::setRaw()'],['../classIRSanyoAc.html#a0fb38af499c140401396831665f862bd',1,'IRSanyoAc::setRaw()'],['../classIRSharpAc.html#a89b18c4ee29afa56ebed5fa32e578df7',1,'IRSharpAc::setRaw()'],['../classIRTcl112Ac.html#a5b0994f37df6846137b564eeb322f21b',1,'IRTcl112Ac::setRaw()'],['../classIRTechnibelAc.html#aed63ea8dd6ba08a13623be756462a997',1,'IRTechnibelAc::setRaw()'],['../classIRTecoAc.html#a1ef3423214f55a2e2695cc1180f94bcc',1,'IRTecoAc::setRaw()'],['../classIRToshibaAC.html#a58313e235136bf8f9e36dee59857cebc',1,'IRToshibaAC::setRaw()'],['../classIRTranscoldAc.html#ac8d5395411aa44efffe3bb1a068eaf4f',1,'IRTranscoldAc::setRaw()'],['../classIRTrotecESP.html#a4ffe5ee2559828a61af710bb7d892b6c',1,'IRTrotecESP::setRaw()'],['../classIRTrumaAc.html#a80eec53fa6df87174eb2212eee01f4fa',1,'IRTrumaAc::setRaw()'],['../classIRVestelAc.html#a617bf1f4b5596d5ad005237e8445c12e',1,'IRVestelAc::setRaw(const uint8_t *newState)'],['../classIRVestelAc.html#a5cc86216d33f228c0648d6c66526b0eb',1,'IRVestelAc::setRaw(const uint64_t newState)'],['../classIRVoltas.html#a5e946ed52c025643b4fc6b89619c90b5',1,'IRVoltas::setRaw()'],['../classIRWhirlpoolAc.html#afa9c66ea36c970f80c88a0489448ab5b',1,'IRWhirlpoolAc::setRaw()']]], - ['setroomtemp_3436',['setRoomTemp',['../classIRArgoAC.html#aec5a2edc6f414aab201a18defaa78c5b',1,'IRArgoAC']]], - ['setsave_3437',['setSave',['../classIRTecoAc.html#a0f7d203d44d4040be3a4b28fcd5dd34c',1,'IRTecoAc']]], - ['setsensor_3438',['setSensor',['../classIRDaikinESP.html#ae1c95533934fffb29eed3e9a27e8f636',1,'IRDaikinESP::setSensor()'],['../classIRDaikin152.html#af418dbf2bb79dab0193801167dfb5b78',1,'IRDaikin152::setSensor()'],['../classIRSanyoAc.html#a287d7b6c417151d303cb7d731ae349be',1,'IRSanyoAc::setSensor()']]], - ['setsensortemp_3439',['setSensorTemp',['../classIRCoolixAC.html#a9bf364245a05818ced3e8fb79d725d9c',1,'IRCoolixAC::setSensorTemp()'],['../classIREcoclimAc.html#a371062a46e92fec628be150bd0eada96',1,'IREcoclimAc::setSensorTemp()'],['../classIRMideaAC.html#a99270b5f488ebcf3b0ef73d9697399a0',1,'IRMideaAC::setSensorTemp()'],['../classIRSanyoAc.html#a22aa95f76076a3a9634609a27bbc1a7f',1,'IRSanyoAc::setSensorTemp()']]], - ['setsensortempraw_3440',['setSensorTempRaw',['../classIRCoolixAC.html#a425c3f5fb26330266156c133fb9104eb',1,'IRCoolixAC']]], - ['setsilent_3441',['setSilent',['../classIRMitsubishiHeavy152Ac.html#ab398b9ea2965f059903137ab088791c0',1,'IRMitsubishiHeavy152Ac']]], - ['setsleep_3442',['setSleep',['../classIRCarrierAc64.html#aa729dbef39afeeed8e83f26b927d3b21',1,'IRCarrierAc64::setSleep()'],['../classIRCoolixAC.html#af0108f5a5ae0049fd296307a7cef605e',1,'IRCoolixAC::setSleep()'],['../classIRDaikin128.html#ac43854ae557ec5582f2bfd9150fd57f2',1,'IRDaikin128::setSleep()'],['../classIRDaikin64.html#a7faf8e018179fed2b091a78d0d69a9b8',1,'IRDaikin64::setSleep()'],['../classIRDelonghiAc.html#aa74806e520b2b01a5b0c87ee32ce427e',1,'IRDelonghiAc::setSleep()'],['../classIRGoodweatherAc.html#a30987629a159c5112649f0973895c9c1',1,'IRGoodweatherAc::setSleep()'],['../classIRGreeAC.html#ac9c11817d15bc5c82732a901cd95e07c',1,'IRGreeAC::setSleep()'],['../classIRHaierAC.html#acb72b89fa53b565f9d32db4d8960f988',1,'IRHaierAC::setSleep()'],['../classIRHaierACYRW02.html#ad63834eb1a91ed974af988c385570457',1,'IRHaierACYRW02::setSleep()'],['../classIRHitachiAc1.html#a2ddb6a5d446b379884828e81df0806ee',1,'IRHitachiAc1::setSleep()'],['../classIRKelonAc.html#abe299f1f7b54ca43546522050a9902f4',1,'IRKelonAc::setSleep()'],['../classIRMideaAC.html#a1e008ff673450060bf39a65f1cb926e6',1,'IRMideaAC::setSleep()'],['../classIRNeoclimaAc.html#ad01a62fb369c6894333adb2fe0f52b79',1,'IRNeoclimaAc::setSleep()'],['../classIRSanyoAc.html#af0bb8ab84d7ee2e9bd1848582f54ff74',1,'IRSanyoAc::setSleep()'],['../classIRTechnibelAc.html#a2df311dc104af45a281c7d87512248d4',1,'IRTechnibelAc::setSleep()'],['../classIRTecoAc.html#a1e989a4fbd21c507ba13014b1e336ce2',1,'IRTecoAc::setSleep()'],['../classIRTrotecESP.html#a41c558c6937e61e77269139f96135420',1,'IRTrotecESP::setSleep()'],['../classIRVestelAc.html#a4b93d5585b7fb9d509e7fcf84e2b4abc',1,'IRVestelAc::setSleep()'],['../classIRVoltas.html#a64210225e6c0bf89944b4b12fda2c799',1,'IRVoltas::setSleep()'],['../classIRWhirlpoolAc.html#a6eaa24abc9eac64d9cbe79205a239474',1,'IRWhirlpoolAc::setSleep()']]], - ['setsleeptimer_3443',['setSleepTimer',['../classIRFujitsuAC.html#aebed4f746874057d7a8a50bbc88e74a5',1,'IRFujitsuAC']]], - ['setspecial_3444',['setSpecial',['../classIRSharpAc.html#ad7d2eca8b863569a1b17fdca4930d84f',1,'IRSharpAc']]], - ['setspeed_3445',['setSpeed',['../classIRTrotecESP.html#a268146141ce0358c2353c0ff59cfbad3',1,'IRTrotecESP']]], - ['setstartclock_3446',['setStartClock',['../classIRMitsubishiAC.html#a22d8c0dfd8098cb274d915476ed4caae',1,'IRMitsubishiAC']]], - ['setstatelength_3447',['setStateLength',['../classIRToshibaAC.html#a9ee4c6cff9be72455b6133a6280c65c4',1,'IRToshibaAC']]], - ['setstopclock_3448',['setStopClock',['../classIRMitsubishiAC.html#a228dafbf1ea3e9c3487506a5ca2ea274',1,'IRMitsubishiAC']]], - ['setsuper_3449',['setSuper',['../classIRWhirlpoolAc.html#a19a14674b0bae79d3aee81b8d48aacc7',1,'IRWhirlpoolAc']]], - ['setsupercool_3450',['setSupercool',['../classIRKelonAc.html#acb502b372e6a077f7a7ed8f95f30e991',1,'IRKelonAc']]], - ['setswing_3451',['setSwing',['../classIRCoolixAC.html#a8e8a76617d06d8ad8a74bc8af3512d95',1,'IRCoolixAC::setSwing()'],['../classIRFujitsuAC.html#a60ab8f21b5561e94a322b72a606468b9',1,'IRFujitsuAC::setSwing()'],['../classIRGoodweatherAc.html#a4d11a6885a5e7851e7c941b559159c35',1,'IRGoodweatherAc::setSwing()'],['../classIRHaierAC.html#a28c8bf6e0f45e074bf5eb13c25805627',1,'IRHaierAC::setSwing()'],['../classIRHaierACYRW02.html#ab9152dd09dec2db522dd96778f3b1556',1,'IRHaierACYRW02::setSwing()'],['../classIRSamsungAc.html#aaa7aaca1134e1565f527fcaa96a2fa6e',1,'IRSamsungAc::setSwing()'],['../classIRTechnibelAc.html#ad6c991f62d9ff127e662b8bbfe0376ca',1,'IRTechnibelAc::setSwing()'],['../classIRTecoAc.html#aaaeb10176c0b73e72fdb63b53fdcd5d0',1,'IRTecoAc::setSwing()'],['../classIRToshibaAC.html#aec1cf1c148197e22a30d578043ce1912',1,'IRToshibaAC::setSwing()'],['../classIRTranscoldAc.html#a8ee39074ca2ac9fc6546be09b5f67e6b',1,'IRTranscoldAc::setSwing()'],['../classIRVestelAc.html#a6c98427df6e5e8081a6dcbfcd436ff0d',1,'IRVestelAc::setSwing()'],['../classIRWhirlpoolAc.html#a6fec80710ba87599840e576f37e0c944',1,'IRWhirlpoolAc::setSwing()']]], - ['setswingh_3452',['setSwingH',['../classIRElectraAc.html#afcd40681003d57b4f1b652175fc276a8',1,'IRElectraAc::setSwingH()'],['../classIRHitachiAc1.html#af6cc42d52dfed89e23d3d180e7b69af9',1,'IRHitachiAc1::setSwingH()'],['../classIRHitachiAc344.html#a5651cb90ba9b87ef841f8987bad267d4',1,'IRHitachiAc344::setSwingH()'],['../classIRMitsubishi112.html#a99f97b04ac22a7942ea371f470faaf49',1,'IRMitsubishi112::setSwingH()'],['../classIRNeoclimaAc.html#a1aeebc60d7bbd0fb801ad88f639cb6a0',1,'IRNeoclimaAc::setSwingH()'],['../classIRVoltas.html#a6069eea71ca7e48326f8155df950e798',1,'IRVoltas::setSwingH()']]], - ['setswinghchange_3453',['setSwingHChange',['../classIRVoltas.html#acf7be0544dabb18ac29975b0f7ec9773',1,'IRVoltas']]], - ['setswinghorizontal_3454',['setSwingHorizontal',['../classIRDaikinESP.html#a5a7ec7b00811138879c636b03ae58606',1,'IRDaikinESP::setSwingHorizontal()'],['../classIRDaikin2.html#a75b6d6fb5bab0a9c951ad35e3e1d07c5',1,'IRDaikin2::setSwingHorizontal()'],['../classIRDaikin216.html#af8a1525cbe8d813c419d17ee6776a7d9',1,'IRDaikin216::setSwingHorizontal()'],['../classIRDaikin176.html#a9e63cf22410ffad45f6b308674079ee8',1,'IRDaikin176::setSwingHorizontal()'],['../classIRHitachiAc.html#ae70600f4a6f9fd7579221b11cd73062f',1,'IRHitachiAc::setSwingHorizontal()'],['../classIRKelvinatorAC.html#a2f1731f71bc74fb7ad6fec1210ecb1c7',1,'IRKelvinatorAC::setSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#a8713144e057424809292494a663dcd22',1,'IRMitsubishiHeavy152Ac::setSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#aaceffdd4e631fb2d4c404de0c8ff8cdb',1,'IRMitsubishiHeavy88Ac::setSwingHorizontal()'],['../classIRPanasonicAc.html#a32f3f07813165a39359887485dd87254',1,'IRPanasonicAc::setSwingHorizontal()'],['../classIRPanasonicAc32.html#a3361eb1f7e4da86290ad3f2c3e68340b',1,'IRPanasonicAc32::setSwingHorizontal()'],['../classIRTcl112Ac.html#aedc63c59a924d64048bc034a752ce7ed',1,'IRTcl112Ac::setSwingHorizontal()']]], - ['setswingtoggle_3455',['setSwingToggle',['../classIRHitachiAc1.html#a24ec128b6bb27cfc4be4dda9ece003d6',1,'IRHitachiAc1::setSwingToggle()'],['../classIRSharpAc.html#a0d397009ecf213111207fcebb12b95fb',1,'IRSharpAc::setSwingToggle()']]], - ['setswingv_3456',['setSwingV',['../classIRCarrierAc64.html#a61a3f9f29cabc0634a9a74fc2227d8c5',1,'IRCarrierAc64::setSwingV()'],['../classIRDaikin152.html#ad151bb85529d46f7e3e3e65dbf446ff0',1,'IRDaikin152::setSwingV()'],['../classIRElectraAc.html#ae5b33942670e0033cbb9b9c7a1524e93',1,'IRElectraAc::setSwingV()'],['../classIRHitachiAc1.html#a1bcc61a9a33a3ddec41d44d52e7df0d3',1,'IRHitachiAc1::setSwingV()'],['../classIRHitachiAc344.html#a3982f110de8ff9881cf4070902294285',1,'IRHitachiAc344::setSwingV()'],['../classIRMitsubishi136.html#a0d54bc6dd55da18b05f723a1b61e575e',1,'IRMitsubishi136::setSwingV()'],['../classIRMitsubishi112.html#ae33b469f1b67616f101f4a3df874fb78',1,'IRMitsubishi112::setSwingV()'],['../classIRNeoclimaAc.html#aa6e5f6f092f52c5c289642c9576c8bc0',1,'IRNeoclimaAc::setSwingV()'],['../classIRSanyoAc.html#a4d159778cd93caaecdb57d5c9417a2c9',1,'IRSanyoAc::setSwingV()'],['../classIRVoltas.html#aff014fc2f818a0bdb22cb89bd074c555',1,'IRVoltas::setSwingV()']]], - ['setswingvertical_3457',['setSwingVertical',['../classIRDaikinESP.html#a9200ef5751df5d488d7e08b138ec6356',1,'IRDaikinESP::setSwingVertical()'],['../classIRDaikin2.html#a35e72dc8e7967ee8ca8e84a6344468f3',1,'IRDaikin2::setSwingVertical()'],['../classIRDaikin216.html#a851484d5a37ceb1b0fc32e2e4bc2bcbb',1,'IRDaikin216::setSwingVertical()'],['../classIRDaikin160.html#a1683a255393f233d3e5b46d186d62881',1,'IRDaikin160::setSwingVertical()'],['../classIRDaikin128.html#a961aceb41145001003a50c5988f04c4d',1,'IRDaikin128::setSwingVertical()'],['../classIRDaikin64.html#afca186067111fa7181916a218c2800ec',1,'IRDaikin64::setSwingVertical()'],['../classIRGreeAC.html#a1b571dea8a5bf553554e45074f3a01c0',1,'IRGreeAC::setSwingVertical()'],['../classIRHitachiAc.html#a7e3ee78e4835fe402095b544c1e52f9f',1,'IRHitachiAc::setSwingVertical()'],['../classIRKelvinatorAC.html#a7334fbf8f2a67b33562ecea6b6e66f0e',1,'IRKelvinatorAC::setSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#aea3ac937feff058feef321bfe7357145',1,'IRMitsubishiHeavy152Ac::setSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#a9406e1890483703afb7b383e1363f8ec',1,'IRMitsubishiHeavy88Ac::setSwingVertical()'],['../classIRPanasonicAc.html#a48f31b1f85c92fac22f85a1aa8074c6e',1,'IRPanasonicAc::setSwingVertical()'],['../classIRPanasonicAc32.html#ab6af790d2828a64e5b5cb70bf818a578',1,'IRPanasonicAc32::setSwingVertical()'],['../classIRTcl112Ac.html#a53f702dcc66de81f6e7e03d538a6946d',1,'IRTcl112Ac::setSwingVertical()']]], - ['setswingvstep_3458',['setSwingVStep',['../classIRCoolixAC.html#af0659a8a63004a5f9833ca3c565afff4',1,'IRCoolixAC::setSwingVStep()'],['../classIRMideaAC.html#a0dc0122ffcc2fccba4f044fbf755b924',1,'IRMideaAC::setSwingVStep()']]], - ['setswingvtoggle_3459',['setSwingVToggle',['../classIRCoronaAc.html#a7cb31da86353ec637239cb747890bd7b',1,'IRCoronaAc::setSwingVToggle()'],['../classIRHitachiAc424.html#a220fd85bd213dd13ee9c609d4d7d20c1',1,'IRHitachiAc424::setSwingVToggle()'],['../classIRMideaAC.html#a7fce182bff4f5bc2c6679b20f344837b',1,'IRMideaAC::setSwingVToggle()']]], - ['settemp_3460',['setTemp',['../classIRAirwellAc.html#a30883e7b4f7933b6fa2258736995d295',1,'IRAirwellAc::setTemp()'],['../classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522',1,'IRAmcorAc::setTemp()'],['../classIRArgoAC.html#abad424a3cf1894715baa03780fa9b53b',1,'IRArgoAC::setTemp()'],['../classIRCarrierAc64.html#a79e193514ac6d07be537a78887426311',1,'IRCarrierAc64::setTemp()'],['../classIRCoolixAC.html#a1d4b4fb810b9f3835ee585b2aa66088f',1,'IRCoolixAC::setTemp()'],['../classIRCoronaAc.html#a9b1d5223cbb6ae6ba07f32871b27d9c6',1,'IRCoronaAc::setTemp()'],['../classIRDaikinESP.html#a631db8830684b745711667aed73a6433',1,'IRDaikinESP::setTemp()'],['../classIRDaikin2.html#a7f752c785fe180d5038e35bb07ff965a',1,'IRDaikin2::setTemp()'],['../classIRDaikin216.html#a8735732d3264eec119127d4353990669',1,'IRDaikin216::setTemp()'],['../classIRDaikin160.html#abedd99ed838478a7ef856537c6fabb82',1,'IRDaikin160::setTemp()'],['../classIRDaikin176.html#acb3b296f4c87a5a37258c666ef886ff3',1,'IRDaikin176::setTemp()'],['../classIRDaikin128.html#aba143a1b80e6de7d1c7b987eeda6b0db',1,'IRDaikin128::setTemp()'],['../classIRDaikin152.html#a97567ade1c0262b3f95f23f171936d8c',1,'IRDaikin152::setTemp()'],['../classIRDaikin64.html#adb1eb657998c05a143365755da0a1e81',1,'IRDaikin64::setTemp()'],['../classIRDelonghiAc.html#a08cc3e32c50277e3f986ed2c3945ce0d',1,'IRDelonghiAc::setTemp()'],['../classIREcoclimAc.html#a4e176cd0def4fccc15bac1bc1dcf023b',1,'IREcoclimAc::setTemp()'],['../classIRElectraAc.html#a5f986d9a376b6d5348fcb021d66d235b',1,'IRElectraAc::setTemp()'],['../classIRFujitsuAC.html#add8b65e2f16c36c6ccdf00bd19c34366',1,'IRFujitsuAC::setTemp()'],['../classIRGoodweatherAc.html#a8b1c90f69a3a2e412020d07809d180cc',1,'IRGoodweatherAc::setTemp()'],['../classIRGreeAC.html#a1890c6d134183beb89b791ec565623bb',1,'IRGreeAC::setTemp()'],['../classIRHaierAC.html#a9fb2a375cc1b8692fe4d5dcdd765cc46',1,'IRHaierAC::setTemp()'],['../classIRHaierACYRW02.html#a80170879e7bd391e360d41f18f6fa52b',1,'IRHaierACYRW02::setTemp()'],['../classIRHitachiAc.html#a9f416886ae341cdb6d449572e4d168a9',1,'IRHitachiAc::setTemp()'],['../classIRHitachiAc1.html#a10ba2dcbe447e505cbaa1a9b63f4823c',1,'IRHitachiAc1::setTemp()'],['../classIRHitachiAc424.html#a5cca8f31d07ce87b6e4a0ff0c22b1be8',1,'IRHitachiAc424::setTemp()'],['../classIRKelonAc.html#af4dfb42ff38f252961a8806ae7437055',1,'IRKelonAc::setTemp()'],['../classIRKelvinatorAC.html#ab098a376c7393d377abcc6c1f504d372',1,'IRKelvinatorAC::setTemp()'],['../classIRLgAc.html#ad9924a8bc9737ec6007d76ec47b34142',1,'IRLgAc::setTemp()'],['../classIRMideaAC.html#a42f79e73f418d5267eed7ba5b0e266f5',1,'IRMideaAC::setTemp()'],['../classIRMitsubishiAC.html#a0a043ce8a1a9e27ae3ac84be5b207d72',1,'IRMitsubishiAC::setTemp()'],['../classIRMitsubishi136.html#ac19c9234a5f65cae50b64d56c4bebb8f',1,'IRMitsubishi136::setTemp()'],['../classIRMitsubishi112.html#a03ba44a6d2f152b7afade423f12c8726',1,'IRMitsubishi112::setTemp()'],['../classIRMitsubishiHeavy152Ac.html#ad4f9ae94b8ab1fff8fc99b8d7818a8fe',1,'IRMitsubishiHeavy152Ac::setTemp()'],['../classIRMitsubishiHeavy88Ac.html#aa4a92e5334aebdca5d2b26b642e9b9e8',1,'IRMitsubishiHeavy88Ac::setTemp()'],['../classIRNeoclimaAc.html#ae9d6cd2de77ac324550d69cfc80b0e3f',1,'IRNeoclimaAc::setTemp()'],['../classIRPanasonicAc.html#a58376c311177e701333f4915515d49f1',1,'IRPanasonicAc::setTemp()'],['../classIRPanasonicAc32.html#a697a5816a4bed187e2245fe626727395',1,'IRPanasonicAc32::setTemp()'],['../classIRSamsungAc.html#a94a71e82321343220836aa614b231bd0',1,'IRSamsungAc::setTemp()'],['../classIRSanyoAc.html#ab1346677e0e9f6828629f3f7d50ef656',1,'IRSanyoAc::setTemp()'],['../classIRSharpAc.html#a151f88799cdab6fda4cfef83b30e5917',1,'IRSharpAc::setTemp()'],['../classIRTcl112Ac.html#a110bae0201b63db0409c352dd8d62786',1,'IRTcl112Ac::setTemp()'],['../classIRTechnibelAc.html#add05b89590340e891e2e1e666c5d033b',1,'IRTechnibelAc::setTemp()'],['../classIRTecoAc.html#a405106cb572dac338d79da48fe7a7cb3',1,'IRTecoAc::setTemp()'],['../classIRToshibaAC.html#a923fad1f637e1851a77a063978994604',1,'IRToshibaAC::setTemp()'],['../classIRTranscoldAc.html#aa183d51c121c70704f6b0a5957911986',1,'IRTranscoldAc::setTemp()'],['../classIRTrotecESP.html#ad467e7fe9ff61fec4ec10b367c0f9279',1,'IRTrotecESP::setTemp()'],['../classIRTrumaAc.html#ae6cb4a1fa7671a9162145b6a4e8bd08b',1,'IRTrumaAc::setTemp()'],['../classIRVestelAc.html#a8c4eddfba4edfa16e317e12677736756',1,'IRVestelAc::setTemp()'],['../classIRVoltas.html#a328a8ed84e89d44c13ca6e641c4b6f97',1,'IRVoltas::setTemp()'],['../classIRWhirlpoolAc.html#afff1ae75ffa362abb791c97c20023755',1,'IRWhirlpoolAc::setTemp()']]], - ['settempraw_3461',['setTempRaw',['../classIRCoolixAC.html#ae9371280e92daa8e1441523026f1ef0a',1,'IRCoolixAC']]], - ['settempunit_3462',['setTempUnit',['../classIRDelonghiAc.html#a4e3681e49065ba232577ca05157a5ef2',1,'IRDelonghiAc::setTempUnit()'],['../classIRTechnibelAc.html#a48ea1ac452c84b0a6c705a5c341c8ad5',1,'IRTechnibelAc::setTempUnit()']]], - ['settime_3463',['setTime',['../classIRArgoAC.html#ae285801cde19da82e128098097624852',1,'IRArgoAC::setTime()'],['../classIRVestelAc.html#afc5dedf83855a8fea8b29494bfb07d64',1,'IRVestelAc::setTime()']]], - ['settimer_3464',['setTimer',['../classIRGreeAC.html#a84debd45d2f2ba221f825257e0bc6294',1,'IRGreeAC::setTimer()'],['../classIRKelonAc.html#aebbebeaf41b54b6b0387b5a71fa92f28',1,'IRKelonAc::setTimer()'],['../classIRMitsubishiAC.html#acb56c91ef0db6ace7782d356af2dcd4d',1,'IRMitsubishiAC::setTimer()'],['../classIRSharpAc.html#a8782543c33e48af0a09e548276eb6413',1,'IRSharpAc::setTimer()'],['../classIRTechnibelAc.html#a940a048710432db01bcd1be34ea5324e',1,'IRTechnibelAc::setTimer()'],['../classIRTecoAc.html#a88a84e22d53a204da754c04210fadd04',1,'IRTecoAc::setTimer()'],['../classIRTrotecESP.html#a92bfed0f247b21c77737b720151dbb88',1,'IRTrotecESP::setTimer()'],['../classIRVestelAc.html#a7c66e1ec13c827714eaa2233f50f072b',1,'IRVestelAc::setTimer()']]], - ['settimeractive_3465',['setTimerActive',['../classIRVestelAc.html#a77f78e534b19a8dca776b17aa06739aa',1,'IRVestelAc']]], - ['settimerenabled_3466',['setTimerEnabled',['../classIRGreeAC.html#a1002d6dfe409076fa7ef252589d5043c',1,'IRGreeAC::setTimerEnabled()'],['../classIRKelonAc.html#a19d6b061a5a42de460078c32e406c058',1,'IRKelonAc::setTimerEnabled()'],['../classIRTechnibelAc.html#a0fc61ce2941376e03d8285495e1fe2b2',1,'IRTechnibelAc::setTimerEnabled()']]], - ['settimertype_3467',['setTimerType',['../classIRFujitsuAC.html#a58670cab1b422527897da9e5ae821b0c',1,'IRFujitsuAC']]], - ['settogglepower_3468',['setTogglePower',['../classIRKelonAc.html#aa892e8e4c9865cccb123d793ae5f9550',1,'IRKelonAc']]], - ['settoggleswingvertical_3469',['setToggleSwingVertical',['../classIRKelonAc.html#a37223c374b8bb82dd5bf5059b0903b4f',1,'IRKelonAc']]], - ['settolerance_3470',['setTolerance',['../classIRrecv.html#aa091c449db70c65fd0221669df7438ea',1,'IRrecv']]], - ['setturbo_3471',['setTurbo',['../classIRCoolixAC.html#a857c14452f80d3d332729b2bdd04f92d',1,'IRCoolixAC::setTurbo()'],['../classIRDaikin64.html#a734cc23f79a4de4099a4ceb1aff14762',1,'IRDaikin64::setTurbo()'],['../classIRElectraAc.html#adb40e95465788b03e4cb845bd481f7ed',1,'IRElectraAc::setTurbo()'],['../classIRGoodweatherAc.html#a7827fc5a8f85b284c0121727dba34f11',1,'IRGoodweatherAc::setTurbo()'],['../classIRGreeAC.html#ae873023ad81f7dcb12ee5b061e160bea',1,'IRGreeAC::setTurbo()'],['../classIRHaierACYRW02.html#aba5f028ee1ebf7be2d4de5a66237f01b',1,'IRHaierACYRW02::setTurbo()'],['../classIRKelvinatorAC.html#a7d9c44970e85f23c83723f27e96260ee',1,'IRKelvinatorAC::setTurbo()'],['../classIRMitsubishiHeavy152Ac.html#a275e8ae44e2018a848b3e8f0893c8023',1,'IRMitsubishiHeavy152Ac::setTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a39ac892d349180327cce92c6f82bea30',1,'IRMitsubishiHeavy88Ac::setTurbo()'],['../classIRNeoclimaAc.html#aa2a9563d9e3c5c95dfa512c0bb87e16f',1,'IRNeoclimaAc::setTurbo()'],['../classIRSharpAc.html#a8a184ae8eeb07704b9b69849421e3172',1,'IRSharpAc::setTurbo()'],['../classIRTcl112Ac.html#a99e3b3e2f0cc627b6d872d04b35d6230',1,'IRTcl112Ac::setTurbo()'],['../classIRToshibaAC.html#a5d1d6b00a9b99bf29496fbd6af5cce31',1,'IRToshibaAC::setTurbo()'],['../classIRVestelAc.html#afa762d0fa63ecc7444c1c107f8f07cdb',1,'IRVestelAc::setTurbo()'],['../classIRVoltas.html#ac7418f197deb96c0fef5d2c36732f5af',1,'IRVoltas::setTurbo()']]], - ['setturbotoggle_3472',['setTurboToggle',['../classIRMideaAC.html#a05b58666391bb204cef6fff288ed7660',1,'IRMideaAC']]], - ['settype_3473',['setType',['../classIREcoclimAc.html#a0b196d1f8079d5336de11ba6ddf0a039',1,'IREcoclimAc::setType()'],['../classIRMideaAC.html#a89a6990ce864d111ccb97a1d37acc379',1,'IRMideaAC::setType()']]], - ['setunknownthreshold_3474',['setUnknownThreshold',['../classIRrecv.html#a02693553aad1decd67bdae60402e48bf',1,'IRrecv']]], - ['setusecelsius_3475',['setUseCelsius',['../classIRMideaAC.html#a1eeb72ddd2b9867c2f9c392080b9c1ed',1,'IRMideaAC']]], - ['setusefahrenheit_3476',['setUseFahrenheit',['../classIRGreeAC.html#af559afaa9da5fd27cdb516355da67bd6',1,'IRGreeAC']]], - ['setvane_3477',['setVane',['../classIRMitsubishiAC.html#abb247f1dca5cf23a7b8a16852dcf32f1',1,'IRMitsubishiAC']]], - ['setweeklytimerenable_3478',['setWeeklyTimerEnable',['../classIRDaikinESP.html#a0db67d46b13acfad9b94c7e4691777b8',1,'IRDaikinESP']]], - ['setweeklytimerenabled_3479',['setWeeklyTimerEnabled',['../classIRMitsubishiAC.html#ac872db2785dd08da86dfff04921b7df3',1,'IRMitsubishiAC']]], - ['setwidevane_3480',['setWideVane',['../classIRMitsubishiAC.html#a02b2b3d7456e6123c60dca70de346c25',1,'IRMitsubishiAC']]], - ['setwifi_3481',['setWifi',['../classIRVoltas.html#a3aa24f471e306abfe7fd7af2b74c7ca0',1,'IRVoltas::setWifi()'],['../classIRGreeAC.html#afde745ceaa97f9608195b2ba9fce6c5c',1,'IRGreeAC::setWiFi()']]], - ['setxfan_3482',['setXFan',['../classIRGreeAC.html#af465c607222fa433f54c2ce56ced2474',1,'IRGreeAC::setXFan()'],['../classIRKelvinatorAC.html#af02da81109109cf1cb44057fd1a40164',1,'IRKelvinatorAC::setXFan()']]], - ['setzonefollow_3483',['setZoneFollow',['../classIRCoolixAC.html#a0c0f39d8e2e79d8259000695263ec3fa',1,'IRCoolixAC']]], - ['sharp_3484',['sharp',['../classIRac.html#a13494c43813e857bdeaa2cc95e2cb5bd',1,'IRac::sharp()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaad63db67a2284cd7e3ffe382b6d6ea82',1,'SHARP(): IRremoteESP8266.h']]], - ['sharp_5fac_3485',['SHARP_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada353a9d71906702ae10aa4f803a04ca68',1,'IRremoteESP8266.h']]], - ['sharp_5fac_5fremote_5fmodel_5ft_3486',['sharp_ac_remote_model_t',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7',1,'IRsend.h']]], - ['sharpprotocol_3487',['SharpProtocol',['../unionSharpProtocol.html',1,'']]], - ['sherwood_3488',['SHERWOOD',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1412522651b0c8f1a35e1db3807466bb',1,'IRremoteESP8266.h']]], - ['shortcode_3489',['shortcode',['../unionFujitsuProtocol.html#a37fb86943f1b72293a8ac515b42ea4a0',1,'FujitsuProtocol']]], - ['shortmsg_3490',['ShortMsg',['../unionToshibaProtocol.html#ad82a92de12d4bf814dd93cbde958a9b8',1,'ToshibaProtocol']]], - ['sig_3491',['Sig',['../unionMitsubishi152Protocol.html#a3e212768123e252ab4c17cec54084ddc',1,'Mitsubishi152Protocol::Sig()'],['../unionMitsubishi88Protocol.html#a7334ae1a2beac4e7db68817d715780f8',1,'Mitsubishi88Protocol::Sig()']]], - ['sign_3492',['Sign',['../unionLGProtocol.html#a0ce79a58c9afe05d8f88a246f1e4e38c',1,'LGProtocol']]], - ['signature_3493',['Signature',['../unionVestelProtocol.html#a04f21c296b64b6446e084286042cc43e',1,'VestelProtocol']]], - ['silent_3494',['Silent',['../unionMitsubishi152Protocol.html#af3a374268ed6de973571de1104a1e3b6',1,'Mitsubishi152Protocol']]], - ['sleep_3495',['Sleep',['../unionCarrierProtocol.html#a957ac027dec4e1942d88ac8f7bcbc767',1,'CarrierProtocol::Sleep()'],['../unionDaikin128Protocol.html#a6d8c864358deaac3e8af9e3c7160acdb',1,'Daikin128Protocol::Sleep()'],['../unionDaikin64Protocol.html#ad97e50c0e3dee468254d84f0ffeab71a',1,'Daikin64Protocol::Sleep()'],['../unionDelonghiProtocol.html#a8ae7e6b8982693fc0cff79dcc5352cc5',1,'DelonghiProtocol::Sleep()'],['../unionGoodweatherProtocol.html#ab5b363c97de0b9ea362335914202aa5d',1,'GoodweatherProtocol::Sleep()'],['../unionGreeProtocol.html#a1ea579a0c99eb1dc8fd72867519ab258',1,'GreeProtocol::Sleep()'],['../unionHaierProtocol.html#a88942d48d868ff5697040d5a89f93099',1,'HaierProtocol::Sleep()'],['../unionHaierYRW02Protocol.html#a0b0ad77222892e9fccf122fcee95d87d',1,'HaierYRW02Protocol::Sleep()'],['../unionHitachi1Protocol.html#a6f7f771174da0e309c817d1e1b8dad04',1,'Hitachi1Protocol::Sleep()'],['../unionMideaProtocol.html#aeea5e2520e4cd1773c1eddc8a84af2d3',1,'MideaProtocol::Sleep()'],['../unionNeoclimaProtocol.html#ac43619a2a36e6e904f1ccfc727705d0f',1,'NeoclimaProtocol::Sleep()'],['../unionSanyoProtocol.html#a30ddc4048f18df21a0ba9a1ceb6ed04f',1,'SanyoProtocol::Sleep()'],['../unionTechnibelProtocol.html#a0b2415893ee58c78aab7d5da9dc0ac9a',1,'TechnibelProtocol::Sleep()'],['../unionTecoProtocol.html#a1e154eb394b329d0a4bcda1f99f10b3a',1,'TecoProtocol::Sleep()'],['../unionTrotecProtocol.html#a7e608cfd2be86c98ef165d82224d12e0',1,'TrotecProtocol::Sleep()'],['../unionVoltasProtocol.html#a1a47a7e57717d28e610e97b40e86b1ca',1,'VoltasProtocol::Sleep()'],['../unionWhirlpoolProtocol.html#aa8c066a535606fca820875eb16275b04',1,'WhirlpoolProtocol::Sleep()'],['../structstdAc_1_1state__t.html#a94fa6098d7422292a1c6943973cd106a',1,'stdAc::state_t::sleep()']]], - ['sleepenabled_3496',['SleepEnabled',['../unionKelonProtocol.html#acce94332bf7fa92e7c52b64e63ee243b',1,'KelonProtocol']]], - ['sleepflag_3497',['sleepFlag',['../classIRCoolixAC.html#a26560e04d1f77830e40e5570845b9e06',1,'IRCoolixAC']]], - ['sleeptimer_3498',['SleepTimer',['../unionDaikin2Protocol.html#a08f4a54ef2100e9afc8d360d6f1f809b',1,'Daikin2Protocol']]], - ['smartmodeenabled_3499',['SmartModeEnabled',['../unionKelonProtocol.html#a06eb8f550eea47a5620c29290d362457',1,'KelonProtocol']]], - ['sony_3500',['SONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada72d58193d4d25517202d22b7e57a65c3',1,'IRremoteESP8266.h']]], - ['sony_5f38k_3501',['SONY_38K',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0027bcfbb78c0c2b951dfff1102a027b',1,'IRremoteESP8266.h']]], - ['space_3502',['space',['../classIRsend.html#a0417b10d4e16718a87f8b2062a7d04a1',1,'IRsend']]], - ['special_3503',['Special',['../unionSharpProtocol.html#a6a7b512b5cfb2103b562ba7ceb8ab318',1,'SharpProtocol']]], - ['special_5fstate_3504',['special_state',['../classIRTranscoldAc.html#a634858a8d3987fa95cb355083c1276da',1,'IRTranscoldAc']]], - ['start_3505',['start',['../classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a',1,'IRtimer::start()'],['../classTimerMs.html#a15ad2e08a5931397391d48f040722f65',1,'TimerMs::start()']]], - ['startclock_3506',['StartClock',['../unionMitsubishi144Protocol.html#a2b3fcf0371639b6c73c152c671ae3b66',1,'Mitsubishi144Protocol']]], - ['state_3507',['state',['../classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305',1,'decode_results']]], - ['state_5ft_3508',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]], - ['statereset_3509',['stateReset',['../classIRAirwellAc.html#a82591a86e031ef30b58f9565b6233953',1,'IRAirwellAc::stateReset()'],['../classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b',1,'IRAmcorAc::stateReset()'],['../classIRArgoAC.html#af34a99bc37c4496c9fd68856aa065a13',1,'IRArgoAC::stateReset()'],['../classIRCarrierAc64.html#abe58c8f97ab4c34fd0cf198b07589694',1,'IRCarrierAc64::stateReset()'],['../classIRCoolixAC.html#a0048b9ef226f8f4312cf8221ee3123f8',1,'IRCoolixAC::stateReset()'],['../classIRCoronaAc.html#a47726d4ff93528bd8a5a6f1b47ba7141',1,'IRCoronaAc::stateReset()'],['../classIRDaikinESP.html#a49f6b90336225f7e94b8aefd066e1993',1,'IRDaikinESP::stateReset()'],['../classIRDaikin2.html#a93928b703f9b72218f2a607879cb401d',1,'IRDaikin2::stateReset()'],['../classIRDaikin216.html#a8456bd9981063019d48c59e5050680ed',1,'IRDaikin216::stateReset()'],['../classIRDaikin160.html#a72f9f1526907f1076348666eb9151f75',1,'IRDaikin160::stateReset()'],['../classIRDaikin176.html#a7f0b4b6c0a4a8b0680a8b8cd0eda8127',1,'IRDaikin176::stateReset()'],['../classIRDaikin128.html#ab604a7594c3b0131c5d977e3fc3b3565',1,'IRDaikin128::stateReset()'],['../classIRDaikin152.html#adde28c0b529d4a32dc0b702746026b6a',1,'IRDaikin152::stateReset()'],['../classIRDaikin64.html#a5fd1412719c648212978d80474f256e4',1,'IRDaikin64::stateReset()'],['../classIRDelonghiAc.html#acadbed22a27f2376c1e8424dec0caa35',1,'IRDelonghiAc::stateReset()'],['../classIREcoclimAc.html#a2b88c0636f3947e48fc4aa48ade74e2e',1,'IREcoclimAc::stateReset()'],['../classIRElectraAc.html#ab8035c14158fcf3758f46f6976b814f7',1,'IRElectraAc::stateReset()'],['../classIRFujitsuAC.html#a603a0e1870f406e4e746a7bb4c37fb70',1,'IRFujitsuAC::stateReset()'],['../classIRGoodweatherAc.html#ae7f8873ad58e553dc89307220628bebf',1,'IRGoodweatherAc::stateReset()'],['../classIRGreeAC.html#a61356a0dfb4656ac438c3629c591b165',1,'IRGreeAC::stateReset()'],['../classIRHaierAC.html#a62fbae1d2bac01ac3a2194274aa839d9',1,'IRHaierAC::stateReset()'],['../classIRHaierACYRW02.html#a106e7ffa0d69cdf976087c6e190d03ea',1,'IRHaierACYRW02::stateReset()'],['../classIRHitachiAc.html#a0564c00c60e64e57e20f3c1a4bd3d894',1,'IRHitachiAc::stateReset()'],['../classIRHitachiAc1.html#a9764b329d982d018b15098b3044f9596',1,'IRHitachiAc1::stateReset()'],['../classIRHitachiAc424.html#afd8d5b21086b34cdc07b498157240f8f',1,'IRHitachiAc424::stateReset()'],['../classIRHitachiAc3.html#a7bdcddf9c7f85b7cb43a92198e422549',1,'IRHitachiAc3::stateReset()'],['../classIRHitachiAc344.html#a481cbfb0420ba884a7eb4c2ba82bd666',1,'IRHitachiAc344::stateReset()'],['../classIRKelonAc.html#a4c19f0aa6d12b41aaae296e8c89961e0',1,'IRKelonAc::stateReset()'],['../classIRKelvinatorAC.html#ad6fefe85023c3fc318b0e45924874f9f',1,'IRKelvinatorAC::stateReset()'],['../classIRLgAc.html#a5959000c9f0b2cf64742d6a2f1c4c9b9',1,'IRLgAc::stateReset()'],['../classIRMideaAC.html#acc584e07406e1811acfb26f6cd5383cd',1,'IRMideaAC::stateReset()'],['../classIRMitsubishiAC.html#a8da4be360c8e2fd3a5a40cb4049b5d84',1,'IRMitsubishiAC::stateReset()'],['../classIRMitsubishi136.html#a67556dab7ed42c68a274f4f24ecc35bb',1,'IRMitsubishi136::stateReset()'],['../classIRMitsubishi112.html#a9c601ba34e10d5c63886c2c5b405d9ae',1,'IRMitsubishi112::stateReset()'],['../classIRMitsubishiHeavy152Ac.html#a0b239cacd3a8a96f2e3d7047f26119da',1,'IRMitsubishiHeavy152Ac::stateReset()'],['../classIRMitsubishiHeavy88Ac.html#a1cf118f435c99372c89a140a79c67f1f',1,'IRMitsubishiHeavy88Ac::stateReset()'],['../classIRNeoclimaAc.html#a5ce32a6e6195b246696cb609994f3762',1,'IRNeoclimaAc::stateReset()'],['../classIRPanasonicAc.html#a9a9fbf531f04c486edf913c382351b2b',1,'IRPanasonicAc::stateReset()'],['../classIRPanasonicAc32.html#ac38e1daa7107f90d2d1984940c72c4a1',1,'IRPanasonicAc32::stateReset()'],['../classIRSamsungAc.html#a52186401655966b3103d3d73fb77e7f0',1,'IRSamsungAc::stateReset()'],['../classIRSanyoAc.html#aeba68a833d8756a9a6069edc3fef58cb',1,'IRSanyoAc::stateReset()'],['../classIRSharpAc.html#aa151c704ba4f5690a7cfadaf90c4b60d',1,'IRSharpAc::stateReset()'],['../classIRTcl112Ac.html#a049f475c1af7b62b9f3482dcf9e66d4a',1,'IRTcl112Ac::stateReset()'],['../classIRTechnibelAc.html#ae72f22533fc9b05169ac66ac034ca4d8',1,'IRTechnibelAc::stateReset()'],['../classIRTecoAc.html#ad53e6f3d3693ee6efb419326a3d4c492',1,'IRTecoAc::stateReset()'],['../classIRToshibaAC.html#a3d3c3df261b4db7a9d831c94cc206e8a',1,'IRToshibaAC::stateReset()'],['../classIRTranscoldAc.html#a88018c184feed75774ad01a41fdb3e69',1,'IRTranscoldAc::stateReset()'],['../classIRTrotecESP.html#a86c3415d8c1880c325bc22c2c4ca44e0',1,'IRTrotecESP::stateReset()'],['../classIRTrumaAc.html#a8a028e5859735ecfd11cbef649dd51d3',1,'IRTrumaAc::stateReset()'],['../classIRVestelAc.html#a921100234f5751f8b94d9673a5d217f9',1,'IRVestelAc::stateReset()'],['../classIRVoltas.html#a07cde80e35d990733c41d6b0e4dcafda',1,'IRVoltas::stateReset()'],['../classIRWhirlpoolAc.html#a371a6f48a2f4f66e4243dacbbf4471be',1,'IRWhirlpoolAc::stateReset()']]], - ['stdac_3510',['stdAc',['../namespacestdAc.html',1,'']]], - ['stephoriz_3511',['stepHoriz',['../classIRFujitsuAC.html#a53c48bc1f32c849263a3aa86ff06b1d4',1,'IRFujitsuAC']]], - ['stepvert_3512',['stepVert',['../classIRFujitsuAC.html#a942f106c27ce04094b5b615f2e174022',1,'IRFujitsuAC']]], - ['stopclock_3513',['StopClock',['../unionMitsubishi144Protocol.html#a827da42e7df246a6849223430412e051',1,'Mitsubishi144Protocol']]], - ['string_3514',['String',['../IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff',1,'IRremoteESP8266.h']]], - ['strtobool_3515',['strToBool',['../classIRac.html#a3dba736fe25bd3a3a47b9ec7dae51728',1,'IRac']]], - ['strtodecodetype_3516',['strToDecodeType',['../IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff',1,'strToDecodeType(const char *const str): IRutils.cpp'],['../IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e',1,'strToDecodeType(const char *str): IRutils.cpp']]], - ['strtofanspeed_3517',['strToFanspeed',['../classIRac.html#a7173b12c155d04dd1db07a055f4ecb03',1,'IRac']]], - ['strtomodel_3518',['strToModel',['../classIRac.html#a7036fbbb918d644a98b5efa16374a256',1,'IRac']]], - ['strtoopmode_3519',['strToOpmode',['../classIRac.html#a251fa76ddacc84d2655bac723b7dea28',1,'IRac']]], - ['strtoswingh_3520',['strToSwingH',['../classIRac.html#a294d6040909519f465945245df56e56d',1,'IRac']]], - ['strtoswingv_3521',['strToSwingV',['../classIRac.html#a538c861d79afabb11fb8becedd3962f8',1,'IRac']]], - ['success_3522',['success',['../structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90',1,'match_result_t']]], - ['sum_3523',['Sum',['../unionAmcorProtocol.html#a108cf161abbbdd7ae4178f70066e8ae6',1,'AmcorProtocol::Sum()'],['../unionArgoProtocol.html#ab0ec3039d81a3a2a6c8b44f5c64d2fae',1,'ArgoProtocol::Sum()'],['../unionCarrierProtocol.html#acbbf207e7a0e79d74713e6f8598c16c2',1,'CarrierProtocol::Sum()'],['../unionDaikin152Protocol.html#ab9d2826560480612000ff57967c949ce',1,'Daikin152Protocol::Sum()'],['../unionDaikin64Protocol.html#add19fb01e106fe9dd759a33870378b64',1,'Daikin64Protocol::Sum()'],['../unionDelonghiProtocol.html#a9f7a2ecd94db83a8673e8929b373a036',1,'DelonghiProtocol::Sum()'],['../unionElectraProtocol.html#a06f949386cbc460b017f5a2da4a2c557',1,'ElectraProtocol::Sum()'],['../unionGreeProtocol.html#a7502111538873c23d70129b77a26019e',1,'GreeProtocol::Sum()'],['../unionHaierProtocol.html#a5842a170e3cdd0ad823cf244c7b8dd51',1,'HaierProtocol::Sum()'],['../unionHaierYRW02Protocol.html#a656449e6901b3333ca0efe4a2e662fc7',1,'HaierYRW02Protocol::Sum()'],['../unionHitachiProtocol.html#a7917d5fe64dc17c4240286d113edffbf',1,'HitachiProtocol::Sum()'],['../unionHitachi1Protocol.html#af8695d17dd292292c1a395fca1052d0d',1,'Hitachi1Protocol::Sum()'],['../unionLGProtocol.html#a8f527a8f4b6235ca01bb96ed9cce8fcd',1,'LGProtocol::Sum()'],['../unionMideaProtocol.html#a3d4afe5411a769c48e8bfaa3a9e8e84c',1,'MideaProtocol::Sum()'],['../unionMitsubishi144Protocol.html#a50ccc136c9cb813e62731c0e91e1bb18',1,'Mitsubishi144Protocol::Sum()'],['../unionMitsubishi112Protocol.html#a167d9e324351844304624224ebd6c54e',1,'Mitsubishi112Protocol::Sum()'],['../unionNeoclimaProtocol.html#aa1be79f892a05e91733539899ce243d1',1,'NeoclimaProtocol::Sum()'],['../unionSanyoProtocol.html#a4873098c3fca0d6f9b43ba1ecdfb5252',1,'SanyoProtocol::Sum()'],['../unionSharpProtocol.html#a4cfdeea6c7a9b0e808e1b6dcf1584710',1,'SharpProtocol::Sum()'],['../unionTcl112Protocol.html#a5d46a94c80989ecfd47c86028ab69662',1,'Tcl112Protocol::Sum()'],['../unionTechnibelProtocol.html#ac749e8bb30f13d62819204deb36256bb',1,'TechnibelProtocol::Sum()'],['../unionTrotecProtocol.html#a6b4daa2398f213d1002d48e1371cd6c0',1,'TrotecProtocol::Sum()'],['../unionTrumaProtocol.html#a3d8915bbafe0bb431a89310ff8a43653',1,'TrumaProtocol::Sum()']]], - ['sum1_3524',['Sum1',['../unionDaikinESPProtocol.html#a149da481f13ce5a29ce31a3dce8e8cb0',1,'DaikinESPProtocol::Sum1()'],['../unionDaikin2Protocol.html#ab38b622ad6d915d30d696b31664a94f4',1,'Daikin2Protocol::Sum1()'],['../unionDaikin216Protocol.html#af5a0be12a198c7398a3b85aea0ca321f',1,'Daikin216Protocol::Sum1()'],['../unionDaikin160Protocol.html#ade9652651eb01aab9777c9a6244d41a1',1,'Daikin160Protocol::Sum1()'],['../unionDaikin176Protocol.html#a2acfd274cfe47a17603ff382c2948695',1,'Daikin176Protocol::Sum1()'],['../unionDaikin128Protocol.html#a72cbe31d6a6efa72c3be3a5f97a33d9a',1,'Daikin128Protocol::Sum1()'],['../unionKelvinatorProtocol.html#a11960442c40eb23519d44c3daa354d4f',1,'KelvinatorProtocol::Sum1()'],['../unionSamsungProtocol.html#a1fe6cb13d6faf1b6d671ca057558669e',1,'SamsungProtocol::Sum1()'],['../unionWhirlpoolProtocol.html#a2d9fc7639cd9b5bd18b125d99fa0a26e',1,'WhirlpoolProtocol::Sum1()']]], - ['sum2_3525',['Sum2',['../unionDaikinESPProtocol.html#a23ab8932c3c7fc9ffb79a4540458f1e8',1,'DaikinESPProtocol::Sum2()'],['../unionDaikin2Protocol.html#a8c6c9f26a55cf656e4dd7043e3c8e9cb',1,'Daikin2Protocol::Sum2()'],['../unionDaikin216Protocol.html#a190893ad04cf10e16f2c15dc025bb683',1,'Daikin216Protocol::Sum2()'],['../unionDaikin160Protocol.html#a0c0c7e34389309a1b780f2518d0528bd',1,'Daikin160Protocol::Sum2()'],['../unionDaikin176Protocol.html#ae797bea46028cd4a19c42746ba4f3d65',1,'Daikin176Protocol::Sum2()'],['../unionDaikin128Protocol.html#a19162e554dbd868382130d39e4fbf221',1,'Daikin128Protocol::Sum2()'],['../unionKelvinatorProtocol.html#aade6e576f735c6ef84c11062175f0013',1,'KelvinatorProtocol::Sum2()'],['../unionSamsungProtocol.html#a73be0a77d7bd16a28befba84eafe79fa',1,'SamsungProtocol::Sum2()'],['../unionWhirlpoolProtocol.html#a17ac6562d12278e9fe52695e5175e8ed',1,'WhirlpoolProtocol::Sum2()']]], - ['sum3_3526',['Sum3',['../unionDaikinESPProtocol.html#a94351ee2b8b5090cb0934f21ebcd195c',1,'DaikinESPProtocol']]], - ['sumbytes_3527',['sumBytes',['../IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]], - ['sumnibbles_3528',['sumNibbles',['../namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343',1,'irutils::sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)'],['../namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2',1,'irutils::sumNibbles(const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)']]], - ['super1_3529',['Super1',['../unionWhirlpoolProtocol.html#abed3697b1a9697d1b95991c6ee7cded8',1,'WhirlpoolProtocol']]], - ['super2_3530',['Super2',['../unionWhirlpoolProtocol.html#ae61909ca04d65db8282a51aa697a519f',1,'WhirlpoolProtocol']]], - ['supercoolenabled1_3531',['SuperCoolEnabled1',['../unionKelonProtocol.html#a2e7513510d69ef845d823cab658f40ae',1,'KelonProtocol']]], - ['supercoolenabled2_3532',['SuperCoolEnabled2',['../unionKelonProtocol.html#a244cffa76f010df00e78029afccea745',1,'KelonProtocol']]], - ['swing_3533',['Swing',['../unionFujitsuProtocol.html#af86bba40fd05a9538d1dca0a02196282',1,'FujitsuProtocol::Swing()'],['../unionGoodweatherProtocol.html#a0a9be72f6b174f5bc4f4082f3afd93b1',1,'GoodweatherProtocol::Swing()'],['../unionGreeProtocol.html#a6ee1b2c7459fcd5ed839a7730a2c5931',1,'GreeProtocol::Swing()'],['../unionHaierProtocol.html#afc7ba334ae13911868d90c2fe37813b9',1,'HaierProtocol::Swing()'],['../unionHaierYRW02Protocol.html#a671ff83501bd3e6f6e5c2b08bb6d26d1',1,'HaierYRW02Protocol::Swing()'],['../unionSamsungProtocol.html#ad63e66ad39ded5ff568325b2cc2913e6',1,'SamsungProtocol::Swing()'],['../unionSharpProtocol.html#aaf3716e85768e55ae39083b702e51b23',1,'SharpProtocol::Swing()'],['../unionTechnibelProtocol.html#ad65f35496e1a8801807f12b0fb151bfd',1,'TechnibelProtocol::Swing()'],['../unionTecoProtocol.html#a515148adf18ffca1dcab693a8e063479',1,'TecoProtocol::Swing()'],['../unionToshibaProtocol.html#a7055dad465b9500ce8654ebb517cb363',1,'ToshibaProtocol::Swing()'],['../unionVestelProtocol.html#a885f7bf3caef01109e22fa376e39b272',1,'VestelProtocol::Swing()']]], - ['swing1_3534',['Swing1',['../unionWhirlpoolProtocol.html#a0553a73ef3aa9a490e461ab9e8258084',1,'WhirlpoolProtocol']]], - ['swing2_3535',['Swing2',['../unionWhirlpoolProtocol.html#a0b7a02e7a75a8a761a4bbafd77c0d355',1,'WhirlpoolProtocol']]], - ['swingauto_3536',['SwingAuto',['../unionGreeProtocol.html#a866257731360d655ffa24ba3fbdfa3cc',1,'GreeProtocol']]], - ['swingflag_3537',['swingFlag',['../classIRCoolixAC.html#a6d61903a90cebef56b931bebbfa5cba3',1,'IRCoolixAC::swingFlag()'],['../classIRTranscoldAc.html#acaaa6c7fc022b3a259692bfd61258f49',1,'IRTranscoldAc::swingFlag()']]], - ['swingh_3538',['SwingH',['../unionDaikinESPProtocol.html#af3dacc4757d42c204532551565d05013',1,'DaikinESPProtocol::SwingH()'],['../unionDaikin2Protocol.html#a2763869384806cdbb8b9eeec419fddb5',1,'Daikin2Protocol::SwingH()'],['../unionDaikin216Protocol.html#a3e024277a27b1bb20d66c8a01a5d4abf',1,'Daikin216Protocol::SwingH()'],['../unionDaikin176Protocol.html#a1c66607da26b68ab359def3884112bbc',1,'Daikin176Protocol::SwingH()'],['../unionElectraProtocol.html#ac265663bdb90f785a5c3a3d452101a03',1,'ElectraProtocol::SwingH()'],['../unionHitachiProtocol.html#adc2e2a72df76b96392db614103476ad1',1,'HitachiProtocol::SwingH()'],['../unionHitachi424Protocol.html#aca9d734f4809828027727ba0ec5fb56f',1,'Hitachi424Protocol::SwingH()'],['../unionHitachi1Protocol.html#a8d623507f6042e6a2a7b38711d972b1d',1,'Hitachi1Protocol::SwingH()'],['../unionKelvinatorProtocol.html#aa00bcaec92896c766d0c59edfd19fa0c',1,'KelvinatorProtocol::SwingH()'],['../unionMitsubishi112Protocol.html#a06f3c53c43e8e12a171570bcbc44b722',1,'Mitsubishi112Protocol::SwingH()'],['../unionMitsubishi152Protocol.html#a6ff8b8c4309663ca8abffc6d5022e13a',1,'Mitsubishi152Protocol::SwingH()'],['../unionNeoclimaProtocol.html#a2df2379997121fa8e22a98d7ccfe7b0a',1,'NeoclimaProtocol::SwingH()'],['../unionPanasonicAc32Protocol.html#ad2150fa0dbf816d48818969100ea1ac1',1,'PanasonicAc32Protocol::SwingH()'],['../unionTcl112Protocol.html#ac10dd12d472bf3a9f632b645e48a1c7f',1,'Tcl112Protocol::SwingH()'],['../unionVoltasProtocol.html#a55094a8796bf95e81eb7dd9a91d7a127',1,'VoltasProtocol::SwingH()'],['../structstdAc_1_1state__t.html#a761bb702891ed1fa35906929a4c8a3f8',1,'stdAc::state_t::swingh()']]], - ['swingh1_3539',['SwingH1',['../unionMitsubishi88Protocol.html#a25360a714725166199b45ee26ddbe6d7',1,'Mitsubishi88Protocol']]], - ['swingh2_3540',['SwingH2',['../unionMitsubishi88Protocol.html#ad175a3bea6aa442e1de553be6f352b32',1,'Mitsubishi88Protocol']]], - ['swingh_5ft_3541',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]], - ['swinghchange_3542',['SwingHChange',['../unionVoltasProtocol.html#a32c53808a0f8b6574025f2b3c721ae47',1,'VoltasProtocol']]], - ['swinghflag_3543',['swingHFlag',['../classIRTranscoldAc.html#a15da6840a234b2ff739a86d19f15c58d',1,'IRTranscoldAc']]], - ['swinghtostring_3544',['swinghToString',['../classIRac.html#a21c9d71bbf229fd8369480e50a7c3689',1,'IRac']]], - ['swingtoggle_3545',['SwingToggle',['../unionHitachi1Protocol.html#a479a73b38e4f079d7d0e221bb6814a45',1,'Hitachi1Protocol']]], - ['swingv_3546',['SwingV',['../unionCarrierProtocol.html#a9d08c75d7f8357139cd3d844cf29ca22',1,'CarrierProtocol::SwingV()'],['../unionDaikinESPProtocol.html#abaa6622e63357ff194ec473d763e6347',1,'DaikinESPProtocol::SwingV()'],['../unionDaikin2Protocol.html#ad54bd084ae49600bc02d5de9d557b24f',1,'Daikin2Protocol::SwingV()'],['../unionDaikin216Protocol.html#a09abba3b50a33d8d549a0554099b639b',1,'Daikin216Protocol::SwingV()'],['../unionDaikin160Protocol.html#af3ecc8b83528477acdfc2a10352f09e3',1,'Daikin160Protocol::SwingV()'],['../unionDaikin128Protocol.html#a9c0f7c9d691a97ce316ef5b76fb1cafd',1,'Daikin128Protocol::SwingV()'],['../unionDaikin152Protocol.html#a72a99dc5a7497285a7f1e2a0cac7dab8',1,'Daikin152Protocol::SwingV()'],['../unionDaikin64Protocol.html#a5c14fc6cba6aa76a75452808717ee507',1,'Daikin64Protocol::SwingV()'],['../unionElectraProtocol.html#a1f04f248d66f0890548f3cfe4e269beb',1,'ElectraProtocol::SwingV()'],['../unionHitachiProtocol.html#a31530689da10bfae60d005039c6ab596',1,'HitachiProtocol::SwingV()'],['../unionHitachi424Protocol.html#afa4ca85beef441434700d09a09fb60c7',1,'Hitachi424Protocol::SwingV()'],['../unionHitachi1Protocol.html#a73473181cf6a1fce2ea4874ba29552be',1,'Hitachi1Protocol::SwingV()'],['../unionKelvinatorProtocol.html#abd01a8f9d88b44f59484955107d9b7bb',1,'KelvinatorProtocol::SwingV()'],['../unionMitsubishi136Protocol.html#a24b4d22d88ac7630c1fcdccd964d013b',1,'Mitsubishi136Protocol::SwingV()'],['../unionMitsubishi112Protocol.html#a4de8c60641ea95f8f2b875d13f87f594',1,'Mitsubishi112Protocol::SwingV()'],['../unionMitsubishi152Protocol.html#a3ae158a863e0ade1d64cc62a9cc7a374',1,'Mitsubishi152Protocol::SwingV()'],['../unionNeoclimaProtocol.html#a5c8407706693a73ff3716ba857e56e8f',1,'NeoclimaProtocol::SwingV()'],['../unionPanasonicAc32Protocol.html#ad72c8342fd1bcf04c0244934ac6a1172',1,'PanasonicAc32Protocol::SwingV()'],['../unionSanyoProtocol.html#ad3384be2dd09a39be41ebf2bae5e7480',1,'SanyoProtocol::SwingV()'],['../unionTcl112Protocol.html#a4d4ec9093ad1cb4457e004e21545d1a7',1,'Tcl112Protocol::SwingV()'],['../unionVoltasProtocol.html#ac2a240ab6b19af0e472c3134331a6e68',1,'VoltasProtocol::SwingV()'],['../structstdAc_1_1state__t.html#a35477d368350d8981ad8b7b09505857e',1,'stdAc::state_t::swingv()']]], - ['swingv5_3547',['SwingV5',['../unionMitsubishi88Protocol.html#aaa1b4fc42a673c7437373d85b2e22c26',1,'Mitsubishi88Protocol']]], - ['swingv7_3548',['SwingV7',['../unionMitsubishi88Protocol.html#aa56bc52d2d6ec0d2f76aea923e084856',1,'Mitsubishi88Protocol']]], - ['swingv_5ft_3549',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]], - ['swingvflag_3550',['swingVFlag',['../classIRTranscoldAc.html#ae2aa4d5a19dd9056606ca20d03c893df',1,'IRTranscoldAc']]], - ['swingvtoggle_3551',['SwingVToggle',['../unionCoronaProtocol.html#a3b21dc7f46b2153be56daeca1b0b40e8',1,'CoronaProtocol::SwingVToggle()'],['../unionKelonProtocol.html#a46d1647685a3c62aaf658f5971d86268',1,'KelonProtocol::SwingVToggle()']]], - ['swingvtostring_3552',['swingvToString',['../classIRac.html#a641b59e48183a8f6d9b739ce7210f142',1,'IRac']]], - ['symphony_3553',['SYMPHONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada44c4a84d776e02328ef3b169e743e5ec',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.html deleted file mode 100644 index 72d12e90e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.js deleted file mode 100644 index 204055c2b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_14.js +++ /dev/null @@ -1,61 +0,0 @@ -var searchData= -[ - ['tcl112_3554',['tcl112',['../classIRac.html#a3028bd9e83956d57b592bb96638b3f59',1,'IRac']]], - ['tcl112ac_3555',['TCL112AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac4a6ebe702365620ed65ac6f484afda6',1,'IRremoteESP8266.h']]], - ['tcl112protocol_3556',['Tcl112Protocol',['../unionTcl112Protocol.html',1,'']]], - ['technibel_3557',['technibel',['../classIRac.html#a13fbfbf7d6368a10b7526c1c1cedfa5a',1,'IRac']]], - ['technibel_5fac_3558',['TECHNIBEL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada11b133c97acd985c6eed8815ae0baf21',1,'IRremoteESP8266.h']]], - ['technibelprotocol_3559',['TechnibelProtocol',['../unionTechnibelProtocol.html',1,'']]], - ['teco_3560',['teco',['../classIRac.html#a9e612e04e270dd5710e8a63a64b56064',1,'IRac::teco()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3a15ee4466478d484508acc3d4d7a050',1,'TECO(): IRremoteESP8266.h']]], - ['tecoprotocol_3561',['TecoProtocol',['../unionTecoProtocol.html',1,'']]], - ['teknopoint_3562',['TEKNOPOINT',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada41578cc8c062749d2805da53694dbc55',1,'IRremoteESP8266.h']]], - ['temp_3563',['Temp',['../unionAirwellProtocol.html#a5a6bd2772f3b9b5898ea84cf272cdf87',1,'AirwellProtocol::Temp()'],['../unionAmcorProtocol.html#a93dac8f8fa9796452fc67be02ac154cd',1,'AmcorProtocol::Temp()'],['../unionArgoProtocol.html#a928a356c79acc2b56ffeea8e536d9e98',1,'ArgoProtocol::Temp()'],['../unionCarrierProtocol.html#a43fb183022e8b4aef36bee0cb0cd9aaa',1,'CarrierProtocol::Temp()'],['../unionCoolixProtocol.html#a3d7fee6490b9d5f1a66e2f229760d7b7',1,'CoolixProtocol::Temp()'],['../unionCoronaProtocol.html#a18002c42df09d30705af1ebd4c5cd2e3',1,'CoronaProtocol::Temp()'],['../unionDaikinESPProtocol.html#a0ad595273164311e5038c0fac53145a5',1,'DaikinESPProtocol::Temp()'],['../unionDaikin2Protocol.html#ab028d2a7dc019e9389134bcc9bc89e7f',1,'Daikin2Protocol::Temp()'],['../unionDaikin216Protocol.html#adedf9354b1605903bb0fc69dfc087fed',1,'Daikin216Protocol::Temp()'],['../unionDaikin160Protocol.html#ac050e5317af867a602da555ff5c0f445',1,'Daikin160Protocol::Temp()'],['../unionDaikin176Protocol.html#ad6de066afd97c966ad50bb2e578102c2',1,'Daikin176Protocol::Temp()'],['../unionDaikin128Protocol.html#a38ecd43c273a4460417218c1dbd5002f',1,'Daikin128Protocol::Temp()'],['../unionDaikin152Protocol.html#a53bd877ac22cf1beee6a369e94f6ef8b',1,'Daikin152Protocol::Temp()'],['../unionDaikin64Protocol.html#a2d5cc94de8060dc28a611f417a67cdf6',1,'Daikin64Protocol::Temp()'],['../unionDelonghiProtocol.html#a39bdc64b05d4cc3c55c9b33779a2b673',1,'DelonghiProtocol::Temp()'],['../unionEcoclimProtocol.html#af88e83a0f5f4ef72e44070afc5db6acb',1,'EcoclimProtocol::Temp()'],['../unionElectraProtocol.html#acfa59481898d71fc31174c82ff30a7cf',1,'ElectraProtocol::Temp()'],['../unionFujitsuProtocol.html#a44d3a88ea8d71a78f6905571154872a5',1,'FujitsuProtocol::Temp()'],['../unionGoodweatherProtocol.html#a52cc284981b27dab58eb8c6ccce164aa',1,'GoodweatherProtocol::Temp()'],['../unionGreeProtocol.html#a46075a9f5fbd0d3829a84cca3d4a9d4f',1,'GreeProtocol::Temp()'],['../unionHaierProtocol.html#affb6ef60b50ae3351393e3f168ae8f2f',1,'HaierProtocol::Temp()'],['../unionHaierYRW02Protocol.html#a19211a1af7d11da6034b87cb7a042fcd',1,'HaierYRW02Protocol::Temp()'],['../unionHitachiProtocol.html#a82506fdbc1e1dded01ff0b148b63aefc',1,'HitachiProtocol::Temp()'],['../unionHitachi424Protocol.html#a55d9783eb1187ac86d1cf7ef97c220c4',1,'Hitachi424Protocol::Temp()'],['../unionHitachi1Protocol.html#acec70cd3c02926c3cfb596a30795d576',1,'Hitachi1Protocol::Temp()'],['../unionKelvinatorProtocol.html#a2ad164ea50b7501e9b04352aa283ddce',1,'KelvinatorProtocol::Temp()'],['../unionLGProtocol.html#ae556c7e3100b062ec21581cbe61f126a',1,'LGProtocol::Temp()'],['../unionMideaProtocol.html#a4206c02c5cafe996c05d92beb7a7e8d6',1,'MideaProtocol::Temp()'],['../unionMitsubishi144Protocol.html#a1bd567c01d07cedb0475097b4fc46195',1,'Mitsubishi144Protocol::Temp()'],['../unionMitsubishi136Protocol.html#abd84c910c48418162a7647cda2d13b48',1,'Mitsubishi136Protocol::Temp()'],['../unionMitsubishi112Protocol.html#aa15bf2e818b1988fa790e36d2237f105',1,'Mitsubishi112Protocol::Temp()'],['../unionMitsubishi152Protocol.html#a2608f42bbdacb6b5cca759affaa57fce',1,'Mitsubishi152Protocol::Temp()'],['../unionMitsubishi88Protocol.html#abae8097bf27a43d95fb486ba7ca50e03',1,'Mitsubishi88Protocol::Temp()'],['../unionNeoclimaProtocol.html#a6b12bad4406a2c89aae3db1b1614d980',1,'NeoclimaProtocol::Temp()'],['../unionPanasonicAc32Protocol.html#ad0ab801a8f4ec655d176bb900d50245d',1,'PanasonicAc32Protocol::Temp()'],['../unionSamsungProtocol.html#aee5c202d59174c4c85900054001ed679',1,'SamsungProtocol::Temp()'],['../unionSanyoProtocol.html#a3a3e20f65bcb220f84aee2f48d05d986',1,'SanyoProtocol::Temp()'],['../unionSharpProtocol.html#a4b5dfbe7c378055840a1a51b7035234d',1,'SharpProtocol::Temp()'],['../unionTcl112Protocol.html#adac34333fb283e85dbbae7f82464034c',1,'Tcl112Protocol::Temp()'],['../unionTechnibelProtocol.html#a77c1358fde3dc80d152bcbdf277152be',1,'TechnibelProtocol::Temp()'],['../unionTecoProtocol.html#aa65998afac0fcadca42ce5c1262793a2',1,'TecoProtocol::Temp()'],['../unionToshibaProtocol.html#abe862f03c3a5fc68d199e0514c4d05e2',1,'ToshibaProtocol::Temp()'],['../unionTranscoldProtocol.html#a6e743702012bdb7037a96bcef630d30f',1,'TranscoldProtocol::Temp()'],['../unionTrotecProtocol.html#a89cfb912a2a4177485c588b707cedf83',1,'TrotecProtocol::Temp()'],['../unionTrumaProtocol.html#aada7b9bcdd6de808da5a1b7804f359cf',1,'TrumaProtocol::Temp()'],['../unionVestelProtocol.html#a1227bbe21da25c259103e9861e7c4c95',1,'VestelProtocol::Temp()'],['../unionVoltasProtocol.html#a23efaf01747b58d1e77c101f99bc2b4c',1,'VoltasProtocol::Temp()'],['../unionWhirlpoolProtocol.html#a9df58d0ddd25b06a5fb03db2a3bc379e',1,'WhirlpoolProtocol::Temp()']]], - ['tempchange_3564',['TempChange',['../unionTechnibelProtocol.html#a1defef3843fa2d57a84857f573bc646f',1,'TechnibelProtocol']]], - ['temperature_3565',['Temperature',['../unionKelonProtocol.html#ace732d42dc9ad0f46117c5d98dc836d5',1,'KelonProtocol']]], - ['tempextradegreef_3566',['TempExtraDegreeF',['../unionGreeProtocol.html#ae093878b66b84bbc4f5c5df5e59fd639',1,'GreeProtocol']]], - ['tempset_3567',['TempSet',['../unionVoltasProtocol.html#a16ae188cb58127b21fb905f3b1d8653c',1,'VoltasProtocol']]], - ['tenshours_3568',['TensHours',['../unionTecoProtocol.html#a666e09f45c649f518b68b575dc8212bb',1,'TecoProtocol']]], - ['three_3569',['Three',['../unionMitsubishi152Protocol.html#afdd9554bfc3ac476ca87acd69eba3bc3',1,'Mitsubishi152Protocol']]], - ['tickshigh_3570',['ticksHigh',['../classIRrecv.html#a573dbb20695f2ffc808623df8c36280c',1,'IRrecv']]], - ['tickslow_3571',['ticksLow',['../classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8',1,'IRrecv']]], - ['timeout_3572',['timeout',['../structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4',1,'irparams_t']]], - ['timer_3573',['timer',['../structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d',1,'irparams_t::timer()'],['../unionMitsubishi144Protocol.html#a29613b47de756a0e67c42d41fd44a77a',1,'Mitsubishi144Protocol::Timer()'],['../unionTrotecProtocol.html#a02e56a4ff6210117c5519ef568203d0c',1,'TrotecProtocol::Timer()'],['../unionVestelProtocol.html#a9aeab043445a2195de7761d99ff45611',1,'VestelProtocol::Timer()']]], - ['timerchange_3574',['TimerChange',['../unionTechnibelProtocol.html#ac3999a3162e2f7de613c9d61eacabde1',1,'TechnibelProtocol']]], - ['timerenable_3575',['TimerEnable',['../unionTechnibelProtocol.html#a40dfea84eea20bb0fc0168b2074f95e0',1,'TechnibelProtocol']]], - ['timerenabled_3576',['TimerEnabled',['../unionGreeProtocol.html#a603b0bde826287c2ddddb4d17cf9acd0',1,'GreeProtocol::TimerEnabled()'],['../unionKelonProtocol.html#ad6c550a067c1d16cf86cdfb048e0785f',1,'KelonProtocol::TimerEnabled()'],['../unionSharpProtocol.html#abdf436472440de69d9bc86fadf4d719b',1,'SharpProtocol::TimerEnabled()']]], - ['timerhalfhour_3577',['TimerHalfHour',['../unionKelonProtocol.html#a72a044058e0339bc7097cee53966a25f',1,'KelonProtocol']]], - ['timerhalfhr_3578',['TimerHalfHr',['../unionGreeProtocol.html#a3e9fe2455001daec79f687797842239c',1,'GreeProtocol']]], - ['timerhours_3579',['TimerHours',['../unionGreeProtocol.html#a7cc95f9868755876049dbe2b3ce4c730',1,'GreeProtocol::TimerHours()'],['../unionKelonProtocol.html#a7fd0c539dc8ec94e5962c57091c230f0',1,'KelonProtocol::TimerHours()'],['../unionSharpProtocol.html#a7872b52282ecd70b49c17db87d04c8dd',1,'SharpProtocol::TimerHours()'],['../unionTechnibelProtocol.html#a058b2d15d4b2f3974e0271ef24228478',1,'TechnibelProtocol::TimerHours()']]], - ['timerms_3580',['TimerMs',['../classTimerMs.html',1,'TimerMs'],['../classTimerMs.html#a7bf7f8d2fcf76b27b34ea4705810eef5',1,'TimerMs::TimerMs()']]], - ['timeron_3581',['TimerOn',['../unionTecoProtocol.html#ab6a0e79403cd997d43487d939e37be2b',1,'TecoProtocol']]], - ['timertenshr_3582',['TimerTensHr',['../unionGreeProtocol.html#a21cc20bf1a214a17c735e5997f236ee9',1,'GreeProtocol']]], - ['timertype_3583',['TimerType',['../unionFujitsuProtocol.html#a5f80e90a7c02237d38d2e0f97bbdc573',1,'FujitsuProtocol::TimerType()'],['../unionSharpProtocol.html#af29fb49abd51a5a979c7dbb03d440b7e',1,'SharpProtocol::TimerType()']]], - ['timestate_3584',['timeState',['../unionVestelProtocol.html#a64f74ca21d2e21004fe70db529297b99',1,'VestelProtocol']]], - ['timesum_3585',['TimeSum',['../unionVestelProtocol.html#a6d7fee68c9fa0b80e8ff64e01f9ab2e4',1,'VestelProtocol']]], - ['tocommon_3586',['toCommon',['../classIRAirwellAc.html#a279b9cf59acf8462ea99ffcd7d08b919',1,'IRAirwellAc::toCommon()'],['../classIRAmcorAc.html#a67b9fc041a0de132cfac901d1bfd1313',1,'IRAmcorAc::toCommon()'],['../classIRArgoAC.html#ad799686591d91845d526fc3a5db42171',1,'IRArgoAC::toCommon()'],['../classIRCarrierAc64.html#a6cef4a532c3f4c961500e51598a6df80',1,'IRCarrierAc64::toCommon()'],['../classIRCoolixAC.html#a533c6341065b5e47d56771d13c0c248a',1,'IRCoolixAC::toCommon()'],['../classIRCoronaAc.html#a38fbd2262153c740a71bb373a6672096',1,'IRCoronaAc::toCommon()'],['../classIRDaikinESP.html#ab636c6718d8663a98be0e32b189e6d44',1,'IRDaikinESP::toCommon()'],['../classIRDaikin2.html#a8d6c439465779b8febe9eb977e4542c0',1,'IRDaikin2::toCommon()'],['../classIRDaikin216.html#a4e1de110bf0c7a50fb8c2243b7f87524',1,'IRDaikin216::toCommon()'],['../classIRDaikin160.html#a70778c17bcdd6c8adf50af209406fad5',1,'IRDaikin160::toCommon()'],['../classIRDaikin176.html#aee7d30b9935881513afafa5291dd8c0c',1,'IRDaikin176::toCommon()'],['../classIRDaikin128.html#a03c0403dadb7377b463373dc67431b7a',1,'IRDaikin128::toCommon()'],['../classIRDaikin152.html#a0bd5276ee23cf56c75d8a84d8c4bf17a',1,'IRDaikin152::toCommon()'],['../classIRDaikin64.html#abcdf16d946975a35292168d4548999ab',1,'IRDaikin64::toCommon()'],['../classIRDelonghiAc.html#a30c2463464576889af014f8e15d59c75',1,'IRDelonghiAc::toCommon()'],['../classIREcoclimAc.html#a239da399ed837c535538e2321839746c',1,'IREcoclimAc::toCommon()'],['../classIRElectraAc.html#a8ea21abd10c629bd3dd9673ce36b07ed',1,'IRElectraAc::toCommon()'],['../classIRFujitsuAC.html#ae878d663cdcd9f40cb3ae348b03a4cb2',1,'IRFujitsuAC::toCommon()'],['../classIRGoodweatherAc.html#abaaa40915d93e8c6bd5dd49d8e02b510',1,'IRGoodweatherAc::toCommon()'],['../classIRGreeAC.html#ac28c640aa4b5dd0dbbca42b056f877f7',1,'IRGreeAC::toCommon()'],['../classIRHaierAC.html#a738de44369e3322d264c8ee78cc72ab6',1,'IRHaierAC::toCommon()'],['../classIRHaierACYRW02.html#a0189f929df672e9996d9c2959378d4af',1,'IRHaierACYRW02::toCommon()'],['../classIRHitachiAc.html#a2d4aa7ff76dfef5055e051e347c8552f',1,'IRHitachiAc::toCommon()'],['../classIRHitachiAc1.html#ad5819257f1042fa97689fc70e578adaa',1,'IRHitachiAc1::toCommon()'],['../classIRHitachiAc424.html#ad33ed9dfd26bb513e113549b932f2f3f',1,'IRHitachiAc424::toCommon()'],['../classIRHitachiAc344.html#a2bdc3e19a6125d107844f548e4321f6e',1,'IRHitachiAc344::toCommon()'],['../classIRKelonAc.html#a4ae759003ba0abd4a29971745c5971a3',1,'IRKelonAc::toCommon()'],['../classIRKelvinatorAC.html#a4f44754277101b80574ce66b02bdbe06',1,'IRKelvinatorAC::toCommon()'],['../classIRLgAc.html#ab7c25ce38605a54204f761f8aa7f24e1',1,'IRLgAc::toCommon()'],['../classIRMideaAC.html#a62086b58f71908b75e28a61bd4f6bf15',1,'IRMideaAC::toCommon()'],['../classIRMitsubishiAC.html#af794d838a5f4ca75ac8e581d8d06c945',1,'IRMitsubishiAC::toCommon()'],['../classIRMitsubishi136.html#ad03ce7834e5b928cf9e2c7c266bc567e',1,'IRMitsubishi136::toCommon()'],['../classIRMitsubishi112.html#abe39fadc87c09105bdc330069ee7ce20',1,'IRMitsubishi112::toCommon()'],['../classIRMitsubishiHeavy152Ac.html#a37d7bbd42a6816c9c5639ed1080b1371',1,'IRMitsubishiHeavy152Ac::toCommon()'],['../classIRMitsubishiHeavy88Ac.html#a0e3ec0c4a3ffc9c0c5b5342e4d697601',1,'IRMitsubishiHeavy88Ac::toCommon()'],['../classIRNeoclimaAc.html#a068f762e89180f80011b25323a0b5c1a',1,'IRNeoclimaAc::toCommon()'],['../classIRPanasonicAc.html#af2218f117db06424ced00ba6c0cc3234',1,'IRPanasonicAc::toCommon()'],['../classIRPanasonicAc32.html#a49749cb320f52c62fd51a6d271277696',1,'IRPanasonicAc32::toCommon()'],['../classIRSamsungAc.html#a47fb72f99ca6dfba378e2ce60e4c1246',1,'IRSamsungAc::toCommon()'],['../classIRSanyoAc.html#a408e12d69a26c62d53254e4b7c29a925',1,'IRSanyoAc::toCommon()'],['../classIRSharpAc.html#a4fa96fdd02031b1b46736befcd8bae1a',1,'IRSharpAc::toCommon()'],['../classIRTcl112Ac.html#afa6cacde7053c502f66f227c9eb1e82d',1,'IRTcl112Ac::toCommon()'],['../classIRTechnibelAc.html#acafa5e84c84ca1e1299b7dbced6cdc17',1,'IRTechnibelAc::toCommon()'],['../classIRTecoAc.html#a35b2c56f7667d4f1ebe81ac28e7a38c7',1,'IRTecoAc::toCommon()'],['../classIRToshibaAC.html#a533cc022b014adff376c0dfc319242ca',1,'IRToshibaAC::toCommon()'],['../classIRTranscoldAc.html#abbd4d9ba01a8e27a719dcf00c2890d38',1,'IRTranscoldAc::toCommon()'],['../classIRTrotecESP.html#afc86878429018657442ce1fd1863ae06',1,'IRTrotecESP::toCommon()'],['../classIRTrumaAc.html#a71cbcde09a100df106dc86a6e9022958',1,'IRTrumaAc::toCommon()'],['../classIRVestelAc.html#ad31b99f939667487b6f04acace6a29bd',1,'IRVestelAc::toCommon()'],['../classIRVoltas.html#a79c76ddd91237e624115aaf0e183f3f0',1,'IRVoltas::toCommon()'],['../classIRWhirlpoolAc.html#a3fbdadc6b064cdb72358c220ce56ca41',1,'IRWhirlpoolAc::toCommon()']]], - ['tocommonfanspeed_3587',['toCommonFanSpeed',['../classIRAirwellAc.html#a38a93fc115fbe4deb0a5ee82a913c166',1,'IRAirwellAc::toCommonFanSpeed()'],['../classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a',1,'IRAmcorAc::toCommonFanSpeed()'],['../classIRArgoAC.html#a334afe3ce6536089bc2832985067f029',1,'IRArgoAC::toCommonFanSpeed()'],['../classIRCarrierAc64.html#a5a9149acc82fcc22a5be8dcbe791ab77',1,'IRCarrierAc64::toCommonFanSpeed()'],['../classIRCoolixAC.html#a6a0e7219c667eb06897b47a7c36f5fbc',1,'IRCoolixAC::toCommonFanSpeed()'],['../classIRCoronaAc.html#a6d5d0015f01acc97badff7edda964485',1,'IRCoronaAc::toCommonFanSpeed()'],['../classIRDaikinESP.html#a6855a423f10a2230953646d478400574',1,'IRDaikinESP::toCommonFanSpeed()'],['../classIRDaikin176.html#a6f9b7dddcf98c7a42495c900dddf505d',1,'IRDaikin176::toCommonFanSpeed()'],['../classIRDaikin128.html#a1c53a27678731229308e355eb94ec762',1,'IRDaikin128::toCommonFanSpeed()'],['../classIRDaikin64.html#acd24c4932e2bfd6bffbb9a90da2028a6',1,'IRDaikin64::toCommonFanSpeed()'],['../classIRDelonghiAc.html#a231e26843e3616e7455fd020dbb8807b',1,'IRDelonghiAc::toCommonFanSpeed()'],['../classIREcoclimAc.html#aee569b3f1c6e5f7209da6a5acd37ec66',1,'IREcoclimAc::toCommonFanSpeed()'],['../classIRElectraAc.html#a5d53fb85582344cfdbfa33da6acbdb7d',1,'IRElectraAc::toCommonFanSpeed()'],['../classIRFujitsuAC.html#a93a35e42d887b5ca6414b295a4a91526',1,'IRFujitsuAC::toCommonFanSpeed()'],['../classIRGoodweatherAc.html#aff899c76d5b808ee35c9f88c116b5dc4',1,'IRGoodweatherAc::toCommonFanSpeed()'],['../classIRGreeAC.html#ade6cb54e99b6dab1df708cbf25fc5967',1,'IRGreeAC::toCommonFanSpeed()'],['../classIRHaierAC.html#ad67ee0b7299d041aad77382dde893229',1,'IRHaierAC::toCommonFanSpeed()'],['../classIRHaierACYRW02.html#a15402e3ba2a9875d5b49f6dab3e85034',1,'IRHaierACYRW02::toCommonFanSpeed()'],['../classIRHitachiAc.html#afba02d48c4a023ed800abf38d5314c7e',1,'IRHitachiAc::toCommonFanSpeed()'],['../classIRHitachiAc1.html#a99f205391deb75d23d08d63e1feff0d4',1,'IRHitachiAc1::toCommonFanSpeed()'],['../classIRHitachiAc424.html#a16abdf55ea3ae4b06e2a23dad3496738',1,'IRHitachiAc424::toCommonFanSpeed()'],['../classIRKelonAc.html#a77c79c1f41429ae2dbaee0254eeb6af1',1,'IRKelonAc::toCommonFanSpeed()'],['../classIRKelvinatorAC.html#a0ebd262c554c5c843bc3f710570e1401',1,'IRKelvinatorAC::toCommonFanSpeed()'],['../classIRLgAc.html#af47317ba139a4b1e5961b9a45db974df',1,'IRLgAc::toCommonFanSpeed()'],['../classIRMideaAC.html#acd89d4864a46b146ac4f648c4406ded5',1,'IRMideaAC::toCommonFanSpeed()'],['../classIRMitsubishiAC.html#aa7dd30cde520b14575d7fcd992c3bbf1',1,'IRMitsubishiAC::toCommonFanSpeed()'],['../classIRMitsubishi136.html#aaf9f9f17f3ac59ef325b57b9110faa34',1,'IRMitsubishi136::toCommonFanSpeed()'],['../classIRMitsubishi112.html#aaeee082d9adbf7b0d91316c703571f1a',1,'IRMitsubishi112::toCommonFanSpeed()'],['../classIRMitsubishiHeavy152Ac.html#a5e26c3121aceb944fc688e6f641dd5b1',1,'IRMitsubishiHeavy152Ac::toCommonFanSpeed()'],['../classIRMitsubishiHeavy88Ac.html#aa5dae03951ba9a9aeac62184c27f9439',1,'IRMitsubishiHeavy88Ac::toCommonFanSpeed()'],['../classIRNeoclimaAc.html#a5d87285928bd8bfa2abad92fbdf384b5',1,'IRNeoclimaAc::toCommonFanSpeed()'],['../classIRPanasonicAc.html#a1eff8e4d670abc303a02d8baeeb58f8c',1,'IRPanasonicAc::toCommonFanSpeed()'],['../classIRPanasonicAc32.html#acbe96fc57d66d4759e007d97b2cba8b6',1,'IRPanasonicAc32::toCommonFanSpeed()'],['../classIRSamsungAc.html#a2905b33c273d2be6cabfc3b16b51a5b4',1,'IRSamsungAc::toCommonFanSpeed()'],['../classIRSanyoAc.html#a3bcd35a2e4933ddac55a4e27d9d43359',1,'IRSanyoAc::toCommonFanSpeed()'],['../classIRSharpAc.html#a4436ad5eadfc422a6f111ca07c08397b',1,'IRSharpAc::toCommonFanSpeed()'],['../classIRTcl112Ac.html#a66843ee5b53ce9be1aef3774b8df5c84',1,'IRTcl112Ac::toCommonFanSpeed()'],['../classIRTechnibelAc.html#aece92f0e3f4dd4c3b25a8b0408926d45',1,'IRTechnibelAc::toCommonFanSpeed()'],['../classIRTecoAc.html#ac3ad2828770440695969d696ca6ff46d',1,'IRTecoAc::toCommonFanSpeed()'],['../classIRToshibaAC.html#a6c77121c9aba3928e676394f88e88dee',1,'IRToshibaAC::toCommonFanSpeed()'],['../classIRTranscoldAc.html#ad373dbb4df435d9a191710e5bce56883',1,'IRTranscoldAc::toCommonFanSpeed()'],['../classIRTrotecESP.html#a4aaf17993757533370290fffb728befc',1,'IRTrotecESP::toCommonFanSpeed()'],['../classIRTrumaAc.html#ac91956eb18e0339cfa6280104737e22c',1,'IRTrumaAc::toCommonFanSpeed()'],['../classIRVestelAc.html#a6dfd46f56f2d6b15344722cde0741500',1,'IRVestelAc::toCommonFanSpeed()'],['../classIRVoltas.html#a822ac5b90857b912649601a2f7e75ac8',1,'IRVoltas::toCommonFanSpeed()'],['../classIRWhirlpoolAc.html#a61ef6661a985763540b7c2273b8b1b9c',1,'IRWhirlpoolAc::toCommonFanSpeed()']]], - ['tocommonmode_3588',['toCommonMode',['../classIRAirwellAc.html#ad2c717b7750e43894197ee8b292ba23b',1,'IRAirwellAc::toCommonMode()'],['../classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f',1,'IRAmcorAc::toCommonMode()'],['../classIRArgoAC.html#a8ccd3f5398f50548fda3a9e0172fb5fa',1,'IRArgoAC::toCommonMode()'],['../classIRCarrierAc64.html#ab17b24d0306b8983886d15175898909e',1,'IRCarrierAc64::toCommonMode()'],['../classIRCoolixAC.html#a789fb5d5eab2e78d392c8e0b9a194b18',1,'IRCoolixAC::toCommonMode()'],['../classIRCoronaAc.html#a04ca6532beb099893eb1dd5d01bb4d31',1,'IRCoronaAc::toCommonMode()'],['../classIRDaikinESP.html#a3a7543204520da36547c163a96e30deb',1,'IRDaikinESP::toCommonMode()'],['../classIRDaikin176.html#aa0b9c96d3bf08400a5110bcfa9f1ec9d',1,'IRDaikin176::toCommonMode()'],['../classIRDaikin128.html#a105a4fc511feba96afc956bb36d2dc50',1,'IRDaikin128::toCommonMode()'],['../classIRDaikin64.html#a80b9dd0fbf935bed5035463af2ad0102',1,'IRDaikin64::toCommonMode()'],['../classIRDelonghiAc.html#a5a3eef369009836a629369cf835741c4',1,'IRDelonghiAc::toCommonMode()'],['../classIREcoclimAc.html#a0355e830df179eb4f006b473d30e3117',1,'IREcoclimAc::toCommonMode()'],['../classIRElectraAc.html#a01bd399c3b8908083b95f31d97ddb26f',1,'IRElectraAc::toCommonMode()'],['../classIRFujitsuAC.html#a96140e74d31631581003064f70041d02',1,'IRFujitsuAC::toCommonMode()'],['../classIRGoodweatherAc.html#ab3bcd1354b715179f67499c28fb219fb',1,'IRGoodweatherAc::toCommonMode()'],['../classIRGreeAC.html#a3f393071163fd1577c772a8515e2b5a9',1,'IRGreeAC::toCommonMode()'],['../classIRHaierAC.html#a4d73f75516afff0ef18bdbb7ed9c26ed',1,'IRHaierAC::toCommonMode()'],['../classIRHaierACYRW02.html#a24007a5be360c93ec157b95c8cc06493',1,'IRHaierACYRW02::toCommonMode()'],['../classIRHitachiAc.html#ab7edc0f5571100e1778779081e1c1114',1,'IRHitachiAc::toCommonMode()'],['../classIRHitachiAc1.html#a5cbca62775089593fe2447a77d84b3d5',1,'IRHitachiAc1::toCommonMode()'],['../classIRHitachiAc424.html#a2a725d8dc2178975c977a7496792e667',1,'IRHitachiAc424::toCommonMode()'],['../classIRKelonAc.html#aee7fef2e11d5bfebcd866f27f46979a2',1,'IRKelonAc::toCommonMode()'],['../classIRKelvinatorAC.html#ae2683d38ae72b99e6843e37d36f96db2',1,'IRKelvinatorAC::toCommonMode()'],['../classIRLgAc.html#ac3436968a4445f0210403c353d766b73',1,'IRLgAc::toCommonMode()'],['../classIRMideaAC.html#ac2e0ff374678aadd7fea80194aef8bca',1,'IRMideaAC::toCommonMode()'],['../classIRMitsubishiAC.html#a7eae5da584faf41139be597d6a5e7210',1,'IRMitsubishiAC::toCommonMode()'],['../classIRMitsubishi136.html#a2771fd09b2e953b037c0c65c4e4029ee',1,'IRMitsubishi136::toCommonMode()'],['../classIRMitsubishi112.html#a6da77ebe6e03cfc09aa35e531c292ed1',1,'IRMitsubishi112::toCommonMode()'],['../classIRMitsubishiHeavy152Ac.html#a9faaff371ad3ec33de5646a1afd1992a',1,'IRMitsubishiHeavy152Ac::toCommonMode()'],['../classIRNeoclimaAc.html#a2a220b673c96e54e675d8296aa8b2303',1,'IRNeoclimaAc::toCommonMode()'],['../classIRPanasonicAc.html#a1ace0180b9ac3f4bd17357a03c64792e',1,'IRPanasonicAc::toCommonMode()'],['../classIRPanasonicAc32.html#a396a35813eef61112168f4700eb6e4f7',1,'IRPanasonicAc32::toCommonMode()'],['../classIRSamsungAc.html#a39820a05a9650e9da8a44109234a8d87',1,'IRSamsungAc::toCommonMode()'],['../classIRSanyoAc.html#abd8441f70245dd1225aeebf5f9b42e9b',1,'IRSanyoAc::toCommonMode()'],['../classIRSharpAc.html#a3f97044325d19f3d0987c6fe5b22f6d0',1,'IRSharpAc::toCommonMode()'],['../classIRTcl112Ac.html#a230a8d768089d869efdea6589b0a9e37',1,'IRTcl112Ac::toCommonMode()'],['../classIRTechnibelAc.html#a1a75968674695a9a6b3da2bc979e6cac',1,'IRTechnibelAc::toCommonMode()'],['../classIRTecoAc.html#ac6c7011b31208887de6d15edbffb211a',1,'IRTecoAc::toCommonMode()'],['../classIRToshibaAC.html#a77871a927ee67460b7bdcb8f204297bc',1,'IRToshibaAC::toCommonMode()'],['../classIRTranscoldAc.html#a4316d539b0a5270fab794fc7c3cef20a',1,'IRTranscoldAc::toCommonMode()'],['../classIRTrotecESP.html#a2b28b06bd25234427d90172b27d57092',1,'IRTrotecESP::toCommonMode()'],['../classIRTrumaAc.html#a7d07273e6fb55fd9ad0e328054e1bfd0',1,'IRTrumaAc::toCommonMode()'],['../classIRVestelAc.html#add602c0f052c8ada3b3b5748dda50a58',1,'IRVestelAc::toCommonMode()'],['../classIRVoltas.html#adcf63c5e8c0f2e88c103ee82cfd6a5a9',1,'IRVoltas::toCommonMode()'],['../classIRWhirlpoolAc.html#a748caa4e22f2f1f47e6334b1a031c4d8',1,'IRWhirlpoolAc::toCommonMode()']]], - ['tocommonswing_3589',['toCommonSwing',['../classIRTechnibelAc.html#ac379ff8f6f84fd93aa503269c36d6b49',1,'IRTechnibelAc']]], - ['tocommonswingh_3590',['toCommonSwingH',['../classIRDaikin2.html#a85bb152a4bdcc2798270ee58a3cfe2ae',1,'IRDaikin2::toCommonSwingH()'],['../classIRDaikin176.html#a6a3b66c9777992ed9fcab4e26c1d74dc',1,'IRDaikin176::toCommonSwingH()'],['../classIRHitachiAc344.html#a31562e32ccdf179032e75334b16279f0',1,'IRHitachiAc344::toCommonSwingH()'],['../classIRMitsubishiAC.html#ad7446e0a4ea8d349004c2b4224e69cd9',1,'IRMitsubishiAC::toCommonSwingH()'],['../classIRMitsubishi112.html#a17cfee6dc9ddc38465539ca46f29b263',1,'IRMitsubishi112::toCommonSwingH()'],['../classIRMitsubishiHeavy152Ac.html#afb9e039776c77e898928e9139a21a2b8',1,'IRMitsubishiHeavy152Ac::toCommonSwingH()'],['../classIRMitsubishiHeavy88Ac.html#aead69a01407729240055bd64e583b51b',1,'IRMitsubishiHeavy88Ac::toCommonSwingH()'],['../classIRPanasonicAc.html#aa4241990c350ca936c73b8391c2a11fc',1,'IRPanasonicAc::toCommonSwingH()']]], - ['tocommonswingv_3591',['toCommonSwingV',['../classIRDaikin2.html#a1f3e17757bd4beb0330d75ec3df9788b',1,'IRDaikin2::toCommonSwingV()'],['../classIRDaikin160.html#afae9b50e59c0efa46b96eef9f05a95b7',1,'IRDaikin160::toCommonSwingV()'],['../classIRGreeAC.html#a537d17801a90e22ad2baba7145b038cb',1,'IRGreeAC::toCommonSwingV()'],['../classIRHaierAC.html#aac354e2e4ad72d91667509398078b309',1,'IRHaierAC::toCommonSwingV()'],['../classIRHaierACYRW02.html#a0e426a3479fd80bb3816f016fac22f19',1,'IRHaierACYRW02::toCommonSwingV()'],['../classIRMitsubishiAC.html#a173e3c22f4173f235e7213e41925fdd9',1,'IRMitsubishiAC::toCommonSwingV()'],['../classIRMitsubishi136.html#aca5e6ac2d886083c8c56e2949f9d11e9',1,'IRMitsubishi136::toCommonSwingV()'],['../classIRMitsubishi112.html#a0e577d8554a090d7f2ac2a9ddd3bf15c',1,'IRMitsubishi112::toCommonSwingV()'],['../classIRMitsubishiHeavy152Ac.html#ae4dd9b8f0b5b4becb07618e859a09a51',1,'IRMitsubishiHeavy152Ac::toCommonSwingV()'],['../classIRMitsubishiHeavy88Ac.html#a0597303839e79c97b0fafe6c9ddbcf9a',1,'IRMitsubishiHeavy88Ac::toCommonSwingV()'],['../classIRPanasonicAc.html#adae801e0a2641c196a59d65c26404a13',1,'IRPanasonicAc::toCommonSwingV()'],['../classIRPanasonicAc32.html#a3118f4625c25c450a0dccf34568ea726',1,'IRPanasonicAc32::toCommonSwingV()'],['../classIRSanyoAc.html#a25f99385761bab4f7ae055b7dad9be3b',1,'IRSanyoAc::toCommonSwingV()']]], - ['todo_20list_3592',['Todo List',['../todo.html',1,'']]], - ['togglerc5_3593',['toggleRC5',['../classIRsend.html#a42a78d4a3ef0f88b54bee488320344da',1,'IRsend']]], - ['togglerc6_3594',['toggleRC6',['../classIRsend.html#a5a0e8778394021ea12a8b8c2daf0add6',1,'IRsend']]], - ['toggleswinghoriz_3595',['toggleSwingHoriz',['../classIRFujitsuAC.html#aeba829bb9a9934ad9246a5ba4f4c03fc',1,'IRFujitsuAC']]], - ['toggleswingvert_3596',['toggleSwingVert',['../classIRFujitsuAC.html#a6dc9cc4bda83215fa97896c41b01e584',1,'IRFujitsuAC']]], - ['toshiba_3597',['toshiba',['../classIRac.html#a9bb89d95bd06eb04efb4999baee63725',1,'IRac']]], - ['toshiba_5fac_3598',['TOSHIBA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66de3fced9e8f97d1919bcf4d5726f3e',1,'IRremoteESP8266.h']]], - ['toshibaprotocol_3599',['ToshibaProtocol',['../unionToshibaProtocol.html',1,'']]], - ['tostring_3600',['toString',['../classIRAirwellAc.html#acbd6772f93e897308db4f606d1f56eac',1,'IRAirwellAc::toString()'],['../classIRAmcorAc.html#acf007ffc602b69ebbb7ed680e683fa25',1,'IRAmcorAc::toString()'],['../classIRArgoAC.html#ad8cbbda40a07a4300a68712e45dd4c2d',1,'IRArgoAC::toString()'],['../classIRCarrierAc64.html#a2807d30650f50653118dad5d10c52921',1,'IRCarrierAc64::toString()'],['../classIRCoolixAC.html#af4e833be17070157662c6fe01545b5f4',1,'IRCoolixAC::toString()'],['../classIRCoronaAc.html#a5ba0f7cd5d990a02bcdfe16ea95296ba',1,'IRCoronaAc::toString()'],['../classIRDaikinESP.html#aa167e4a9d3447c42f9fcbf185a7cd54c',1,'IRDaikinESP::toString()'],['../classIRDaikin2.html#ac714e4a88f2b129920a7813d3e1658b7',1,'IRDaikin2::toString()'],['../classIRDaikin216.html#ade381807ebfe6c1ac36ff256a28dca16',1,'IRDaikin216::toString()'],['../classIRDaikin160.html#a9608db210fb2df94e1889eced9a63f79',1,'IRDaikin160::toString()'],['../classIRDaikin176.html#a1f72e3a2d9cbb075956b5cbec4a41412',1,'IRDaikin176::toString()'],['../classIRDaikin128.html#ad93d8f524671a086732d7b727e46dc6c',1,'IRDaikin128::toString()'],['../classIRDaikin152.html#a138c4a4bb302490201b7628107ce20f3',1,'IRDaikin152::toString()'],['../classIRDaikin64.html#af156a0f84732988a8545f0161cb5599c',1,'IRDaikin64::toString()'],['../classIRDelonghiAc.html#a8b186047aab8735e2f33dd5bdc4b72c9',1,'IRDelonghiAc::toString()'],['../classIREcoclimAc.html#a2f82f6da12f5f7fa66e8c136df535aa9',1,'IREcoclimAc::toString()'],['../classIRElectraAc.html#af496feed11da67a84efd565b435c1d67',1,'IRElectraAc::toString()'],['../classIRFujitsuAC.html#a418e1c0ded978d80f85ec0fda813c8f3',1,'IRFujitsuAC::toString()'],['../classIRGoodweatherAc.html#a95b191495e9cf0c603b407d5e466661a',1,'IRGoodweatherAc::toString()'],['../classIRGreeAC.html#a1f18b275e0e3d10fbc952d1da9613074',1,'IRGreeAC::toString()'],['../classIRHaierAC.html#af52b438cc7c6b0600793a0eb3c8f6419',1,'IRHaierAC::toString()'],['../classIRHaierACYRW02.html#a306eae31da6256f46e0a3cb5c54711a3',1,'IRHaierACYRW02::toString()'],['../classIRHitachiAc.html#aa7a28c8cf15c06b01681feb17e8bb6fc',1,'IRHitachiAc::toString()'],['../classIRHitachiAc1.html#a20b176622eceed9b7f15091966d86f56',1,'IRHitachiAc1::toString()'],['../classIRHitachiAc424.html#a2fa426e756e6b94a480ddeba4bcde25c',1,'IRHitachiAc424::toString()'],['../classIRHitachiAc344.html#a62c4b681346bb8def0dacda3c92af4b1',1,'IRHitachiAc344::toString()'],['../classIRKelonAc.html#adac302ee5223d520789f5d800c0889cc',1,'IRKelonAc::toString()'],['../classIRKelvinatorAC.html#a6635961df47a9847ace3185598750616',1,'IRKelvinatorAC::toString()'],['../classIRLgAc.html#a4a8711f21c894afd2653835be5bcdd9f',1,'IRLgAc::toString()'],['../classIRMideaAC.html#a4980fbb52145e1d12a6fa5601f75018a',1,'IRMideaAC::toString()'],['../classIRMitsubishiAC.html#a2bc1502cc0c28b098d3fb74f3bc83654',1,'IRMitsubishiAC::toString()'],['../classIRMitsubishi136.html#a9b8f30de94d7903ed73e19d55a93ab95',1,'IRMitsubishi136::toString()'],['../classIRMitsubishi112.html#a0a82daa2e90f9080da1a1bce2af95ca7',1,'IRMitsubishi112::toString()'],['../classIRMitsubishiHeavy152Ac.html#a76ae555f0d30b8cf87b4625c14301b44',1,'IRMitsubishiHeavy152Ac::toString()'],['../classIRMitsubishiHeavy88Ac.html#a9647e2c511ba34dbfdc0e4956953691f',1,'IRMitsubishiHeavy88Ac::toString()'],['../classIRNeoclimaAc.html#a5f285a0eb02b57ae0f8dc6d29e7aba83',1,'IRNeoclimaAc::toString()'],['../classIRPanasonicAc.html#ada0b3e2bf11123d0a2f5df8692ae73ad',1,'IRPanasonicAc::toString()'],['../classIRPanasonicAc32.html#a4aee4f688769c04453ac275ffdb1a94c',1,'IRPanasonicAc32::toString()'],['../classIRSamsungAc.html#a9e1b126cbbd3a90e275e632aaa8fd506',1,'IRSamsungAc::toString()'],['../classIRSanyoAc.html#aec5e4f0371da52f752919f510ee1d106',1,'IRSanyoAc::toString()'],['../classIRSharpAc.html#a995b6d988725b60a02dbcf1e0b5b9e5f',1,'IRSharpAc::toString()'],['../classIRTcl112Ac.html#af9bed8c8ef7e25e624f1f4765722acc5',1,'IRTcl112Ac::toString()'],['../classIRTechnibelAc.html#aa7b74876e99ee837f789640403b9c952',1,'IRTechnibelAc::toString()'],['../classIRTecoAc.html#a9fe1e8da3cc963d5d55a4967fe83dcce',1,'IRTecoAc::toString()'],['../classIRToshibaAC.html#a2d83a10c921398a1b32888c68bb4a35d',1,'IRToshibaAC::toString()'],['../classIRTranscoldAc.html#a8be351a7df54e6606eeebc8630ee4029',1,'IRTranscoldAc::toString()'],['../classIRTrotecESP.html#a0c7c6f4b33efcea9332d464908d7c87f',1,'IRTrotecESP::toString()'],['../classIRTrumaAc.html#a0250f4a833b4ec583d28e85dd5ec6f7a',1,'IRTrumaAc::toString()'],['../classIRVestelAc.html#ab13d9ddf1d487acb12a4d8e3cee72b1b',1,'IRVestelAc::toString()'],['../classIRVoltas.html#af650633516b67861f6f074f3be943bbd',1,'IRVoltas::toString()'],['../classIRWhirlpoolAc.html#a26912db41a4e5afa2b3ad2bf537b9170',1,'IRWhirlpoolAc::toString()']]], - ['transcold_3601',['transcold',['../classIRac.html#a788f29495e5ac706bdb4f4efabcb26d0',1,'IRac::transcold()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada67cbbd63e69dfc1ff147fc2a070222ef',1,'TRANSCOLD(): IRremoteESP8266.h']]], - ['transcoldprotocol_3602',['TranscoldProtocol',['../unionTranscoldProtocol.html',1,'']]], - ['trotec_3603',['trotec',['../classIRac.html#aed1a012c0546c2b1d53e86871a42ba1a',1,'IRac::trotec()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d0f8056d221b37f68f80bace2b794b9',1,'TROTEC(): IRremoteESP8266.h']]], - ['trotecprotocol_3604',['TrotecProtocol',['../unionTrotecProtocol.html',1,'']]], - ['truma_3605',['truma',['../classIRac.html#ab4cffb706bed9926b5eb600eba083482',1,'IRac::truma()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada89f82e81dfba292febe62858976e9e91',1,'TRUMA(): IRremoteESP8266.h']]], - ['trumaprotocol_3606',['TrumaProtocol',['../unionTrumaProtocol.html',1,'']]], - ['turbo_3607',['turbo',['../structstdAc_1_1state__t.html#aae084b686685f2b2a07ccdda649e358c',1,'stdAc::state_t::turbo()'],['../unionElectraProtocol.html#af812a40c2acfafe8134e9299d2b80a7a',1,'ElectraProtocol::Turbo()'],['../unionGoodweatherProtocol.html#a007f6dd38f4e7137d08278355941885d',1,'GoodweatherProtocol::Turbo()'],['../unionGreeProtocol.html#a36add055a70df62e09bca1e031314a4d',1,'GreeProtocol::Turbo()'],['../unionHaierYRW02Protocol.html#a1cea874c8398b49e704ba0943284c64a',1,'HaierYRW02Protocol::Turbo()'],['../unionKelvinatorProtocol.html#a53c157f2b60f079f5ce77798084888a5',1,'KelvinatorProtocol::Turbo()'],['../unionNeoclimaProtocol.html#a36e23b1343d0638516232bb44c49416b',1,'NeoclimaProtocol::Turbo()'],['../unionTcl112Protocol.html#a2b994555374f08b3c9f6654211cb698a',1,'Tcl112Protocol::Turbo()'],['../unionVoltasProtocol.html#aa0bfed2718430a9cffdfdc02b345971b',1,'VoltasProtocol::Turbo()']]], - ['turboflag_3608',['turboFlag',['../classIRCoolixAC.html#a60a8a848951555dba34f2a317d6611ea',1,'IRCoolixAC']]], - ['turbosleep_3609',['TurboSleep',['../unionVestelProtocol.html#a160beacb49f68008f6f9ecf51b99b84a',1,'VestelProtocol']]], - ['type_3610',['Type',['../unionMideaProtocol.html#ae6deb4675602e9d1be3f8a49c601cdce',1,'MideaProtocol']]], - ['typetostring_3611',['typeToString',['../IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1',1,'typeToString(const decode_type_t protocol, const bool isRepeat): IRutils.cpp'],['../IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c',1,'typeToString(const decode_type_t protocol, const bool isRepeat=false): IRutils.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.html deleted file mode 100644 index 767aec361..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.js deleted file mode 100644 index 0f714c41e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_15.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['uint64tostring_3612',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10): IRutils.cpp']]], - ['uint8tobcd_3613',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]], - ['unithours_3614',['UnitHours',['../unionTecoProtocol.html#a53501f83a1d730135ec75bfb5838821b',1,'TecoProtocol']]], - ['unknown_3615',['unknown',['../unionFujitsuProtocol.html#a1ffda1931475b743913abe2aad2138e3',1,'FujitsuProtocol::unknown()'],['../unionHaierProtocol.html#aabc2a684c5936858544c02ec8a68afb9',1,'HaierProtocol::unknown()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada6ce26a62afab55d7606ad4e92428b30c',1,'UNKNOWN(): IRremoteESP8266.h']]], - ['unknown1_3616',['unknown1',['../unionGreeProtocol.html#ae973c1c723b7162959374e1fd8ecab61',1,'GreeProtocol']]], - ['unknown2_3617',['unknown2',['../unionGreeProtocol.html#aa102f7d68c26f5b8644b13113a5b05f4',1,'GreeProtocol']]], - ['unused_3618',['UNUSED',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa09b651ef326a9d8efcee5cc5b720ab4',1,'IRremoteESP8266.h']]], - ['updateandsavestate_3619',['updateAndSaveState',['../classIRCoolixAC.html#a2681a6affc5fb542584b1ef241bc38af',1,'IRCoolixAC']]], - ['updatechecksums_3620',['updateChecksums',['../namespaceIRXmpUtils.html#a0ada8200316c402f268dd621a3b0695a',1,'IRXmpUtils']]], - ['updateuselongorshort_3621',['updateUseLongOrShort',['../classIRFujitsuAC.html#a0c2aed356899787b8cd51b76b59e01bb',1,'IRFujitsuAC']]], - ['usecmd_3622',['UseCmd',['../unionVestelProtocol.html#ae82716fdc06ba75def19a130d60d9e83',1,'VestelProtocol']]], - ['used_3623',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]], - ['usefah_3624',['UseFah',['../unionNeoclimaProtocol.html#ae60408715008e78ab8058ab024669955',1,'NeoclimaProtocol::UseFah()'],['../unionTechnibelProtocol.html#a118cbcb15250c35ee423062e5f397662',1,'TechnibelProtocol::UseFah()']]], - ['usefahrenheit_3625',['useFahrenheit',['../unionMideaProtocol.html#a1b1258107620bb83fd6356815242e19b',1,'MideaProtocol::useFahrenheit()'],['../unionGreeProtocol.html#a47c79761efe40c00e6bb01b7712b272c',1,'GreeProtocol::UseFahrenheit()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.html deleted file mode 100644 index 7bd7afe63..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.js deleted file mode 100644 index 56935dfe3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_16.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['validchecksum_3626',['validChecksum',['../classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28',1,'IRAmcorAc::validChecksum()'],['../classIRArgoAC.html#acfa5a9df8273123e6f4c48684ef60006',1,'IRArgoAC::validChecksum()'],['../classIRCarrierAc64.html#affa23f178e079cd3a6c933240759fe80',1,'IRCarrierAc64::validChecksum()'],['../classIRDaikinESP.html#ad766e60827f80b96a66449bddc621d87',1,'IRDaikinESP::validChecksum()'],['../classIRDaikin2.html#ade5c0dbfe38d9ac0c4bc009c897af04d',1,'IRDaikin2::validChecksum()'],['../classIRDaikin216.html#a663c11977545ba01b34715a61a26ab88',1,'IRDaikin216::validChecksum()'],['../classIRDaikin160.html#a0d9f3af404e3b6c116e8c27e938f8479',1,'IRDaikin160::validChecksum()'],['../classIRDaikin176.html#abc97abc68f535f7ad801b393e0a795d5',1,'IRDaikin176::validChecksum()'],['../classIRDaikin128.html#ad0b16e48bff00c5cdeffa1419c003946',1,'IRDaikin128::validChecksum()'],['../classIRDaikin152.html#ade1c641eecea63857115fc20f1811fe7',1,'IRDaikin152::validChecksum()'],['../classIRDaikin64.html#ab04287881112ff21d1ea541c0f21b507',1,'IRDaikin64::validChecksum()'],['../classIRDelonghiAc.html#ae39b20bcea2b7090ac2e29d8cd28e5f6',1,'IRDelonghiAc::validChecksum()'],['../classIRElectraAc.html#a60034a18e7574844fb59a03e7789f419',1,'IRElectraAc::validChecksum()'],['../classIRFujitsuAC.html#a26153c647d127356e47d35a7456c6235',1,'IRFujitsuAC::validChecksum()'],['../classIRGreeAC.html#a74e7df0634f0a60110db8c033d9d5b1d',1,'IRGreeAC::validChecksum()'],['../classIRHaierAC.html#ad7aae554b8f0a76493efc2a43ac0f780',1,'IRHaierAC::validChecksum()'],['../classIRHaierACYRW02.html#a3f6d071d215b0316cccc2e94c4786954',1,'IRHaierACYRW02::validChecksum()'],['../classIRHitachiAc.html#a2549c1fd2e8a603eb8924fbba8b26e87',1,'IRHitachiAc::validChecksum()'],['../classIRHitachiAc1.html#aa6b7ab76567ee15aa08b1594c67bd29d',1,'IRHitachiAc1::validChecksum()'],['../classIRKelvinatorAC.html#aaa915fa5eb3f7e5c7a3dc143b6fda826',1,'IRKelvinatorAC::validChecksum()'],['../classIRLgAc.html#a51748fa24de24049a2fafb4590e84176',1,'IRLgAc::validChecksum()'],['../classIRMideaAC.html#a971ab4af0267bb732834e7e1f7b8e354',1,'IRMideaAC::validChecksum()'],['../classIRMitsubishiAC.html#ad74885e17434aa9038dc19ad74de4cd0',1,'IRMitsubishiAC::validChecksum()'],['../classIRMitsubishi136.html#a666d1268a93e96b50ac9012c09320de9',1,'IRMitsubishi136::validChecksum()'],['../classIRMitsubishiHeavy152Ac.html#abef94200719da0c14e211315ffc8bede',1,'IRMitsubishiHeavy152Ac::validChecksum()'],['../classIRMitsubishiHeavy88Ac.html#aabd9d8f81108f20f1d7adff3ac6c2fd4',1,'IRMitsubishiHeavy88Ac::validChecksum()'],['../classIRNeoclimaAc.html#a32e4b4444e0a97b6da4447e977f74f94',1,'IRNeoclimaAc::validChecksum()'],['../classIRPanasonicAc.html#a6a084754596f7840dd308041d11a822d',1,'IRPanasonicAc::validChecksum()'],['../classIRSamsungAc.html#a4f7339bce78ce2b656fc597b4c88db22',1,'IRSamsungAc::validChecksum()'],['../classIRSanyoAc.html#a77844e855a875ff0f5dc79200a3d2777',1,'IRSanyoAc::validChecksum()'],['../classIRSharpAc.html#acb7fb0ac19e09da02d36cb73c808420d',1,'IRSharpAc::validChecksum()'],['../classIRTcl112Ac.html#a204bc37ffadf72ed31b305197c4803f4',1,'IRTcl112Ac::validChecksum()'],['../classIRTechnibelAc.html#ac0bc7bfe24f72255230c8a4c1c7eb192',1,'IRTechnibelAc::validChecksum()'],['../classIRToshibaAC.html#adc7c1eee14e4de896121ad06e88b61eb',1,'IRToshibaAC::validChecksum()'],['../classIRTrotecESP.html#ae08748e33ed12c536b18f6d0dc4da1c7',1,'IRTrotecESP::validChecksum()'],['../classIRTrumaAc.html#abd89085aeaa1847e37e14c01ac874c69',1,'IRTrumaAc::validChecksum()'],['../classIRVestelAc.html#ad3bcc08fb4242af7dcc65e534816a219',1,'IRVestelAc::validChecksum()'],['../classIRVoltas.html#a020336b6c8fd363d50ca44ba2b78181d',1,'IRVoltas::validChecksum()'],['../classIRWhirlpoolAc.html#a2d891069ebdecc62b03e8c92befa15c6',1,'IRWhirlpoolAc::validChecksum()']]], - ['validsection_3627',['validSection',['../classIRCoronaAc.html#af36894d88e7fb45affc883ba0b077862',1,'IRCoronaAc']]], - ['value_3628',['value',['../classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47',1,'decode_results']]], - ['vane_3629',['Vane',['../unionMitsubishi144Protocol.html#af4cb685d4c5f87f6ff61d1305ccd6967',1,'Mitsubishi144Protocol']]], - ['vanebit_3630',['VaneBit',['../unionMitsubishi144Protocol.html#aaefd53cd1441b57b90dc3d21488bbdd3',1,'Mitsubishi144Protocol']]], - ['vent_3631',['Vent',['../unionAmcorProtocol.html#a289bcba64f01cd2c847845f41978d400',1,'AmcorProtocol']]], - ['ventswing_3632',['VentSwing',['../unionKelvinatorProtocol.html#af7cd4e8ebfaa36812d09105c54f868f2',1,'KelvinatorProtocol']]], - ['vestel_3633',['vestel',['../classIRac.html#a9b1cd1a4d44bc56e62128b9dbc178bba',1,'IRac']]], - ['vestel_5fac_3634',['VESTEL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada165413c6395bde985757b5b446f76569',1,'IRremoteESP8266.h']]], - ['vestelprotocol_3635',['VestelProtocol',['../unionVestelProtocol.html',1,'']]], - ['voltas_3636',['voltas',['../classIRac.html#aab4cf3b1872a94835cf1c885b767adb6',1,'IRac::voltas()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada507821565df57e34d8806d2613b1533c',1,'VOLTAS(): IRremoteESP8266.h']]], - ['voltas_5fac_5fremote_5fmodel_5ft_3637',['voltas_ac_remote_model_t',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2',1,'IRsend.h']]], - ['voltasprotocol_3638',['VoltasProtocol',['../unionVoltasProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.html deleted file mode 100644 index 35702ecdd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.js deleted file mode 100644 index e6a7d9cb0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_17.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['wall_3639',['Wall',['../unionDaikin128Protocol.html#aed2c5bc365820f2c0a5f27dd68fa8a05',1,'Daikin128Protocol']]], - ['wand_5fid_3640',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]], - ['weeklytimer_3641',['WeeklyTimer',['../unionDaikinESPProtocol.html#a25e632da82856caebd233699fda8d796',1,'DaikinESPProtocol::WeeklyTimer()'],['../unionMitsubishi144Protocol.html#a313d3721705676e04d73aee8a29c4a37',1,'Mitsubishi144Protocol::WeeklyTimer()']]], - ['whirlpool_3642',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]], - ['whirlpool_5fac_3643',['WHIRLPOOL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9faf927323d110269541b356f079b85a',1,'IRremoteESP8266.h']]], - ['whirlpool_5fac_5fremote_5fmodel_5ft_3644',['whirlpool_ac_remote_model_t',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2',1,'IRsend.h']]], - ['whirlpoolprotocol_3645',['WhirlpoolProtocol',['../unionWhirlpoolProtocol.html',1,'']]], - ['whynter_3646',['WHYNTER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada458cdd7fa2b29dc8617c694696580c0c',1,'IRremoteESP8266.h']]], - ['widevane_3647',['WideVane',['../unionMitsubishi144Protocol.html#ad0c48e95ca7e0658edf7c2ac2b541c3c',1,'Mitsubishi144Protocol']]], - ['wifi_3648',['Wifi',['../unionVoltasProtocol.html#aae1406825a156f159c5ad4b28d20364c',1,'VoltasProtocol::Wifi()'],['../unionGreeProtocol.html#a6cf8e0a6c54a5d2b6f14074c6f3dcc92',1,'GreeProtocol::WiFi()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.html deleted file mode 100644 index 540cdb6a5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.js deleted file mode 100644 index aed2899de..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_18.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['xfan_3649',['Xfan',['../unionGreeProtocol.html#a3fbf66dfc2043710c5e00f8230eddb48',1,'GreeProtocol::Xfan()'],['../unionKelvinatorProtocol.html#a44a0ba82ee5dc39f64215d26edb9636c',1,'KelvinatorProtocol::XFan()']]], - ['xmp_3650',['XMP',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada009e712c328b21b54c2a099ec8520585',1,'IRremoteESP8266.h']]], - ['xorbytes_3651',['xorBytes',['../IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.html deleted file mode 100644 index 14e13e7d2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.js deleted file mode 100644 index 2705957c5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_19.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['yaw1f_3652',['YAW1F',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a6b29d752ac8bafc8fedabc1282fccfb6',1,'IRsend.h']]], - ['ybofb_3653',['YBOFB',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a5d6dadebb4f337aa20ea06a87ae9b34a',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.html deleted file mode 100644 index 233281a12..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.js deleted file mode 100644 index e93803cf9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['zepeal_3654',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]], - ['zh_2dcn_2eh_3655',['zh-CN.h',['../zh-CN_8h.html',1,'']]], - ['zonefollow1_3656',['ZoneFollow1',['../unionCoolixProtocol.html#a5f19a21823bbdb6d5deceb03db0d3d5b',1,'CoolixProtocol']]], - ['zonefollow2_3657',['ZoneFollow2',['../unionCoolixProtocol.html#ade33ba99bcfcf9d7dac334e56e9bb167',1,'CoolixProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.html deleted file mode 100644 index 470a5bffa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.js deleted file mode 100644 index a1a98d365..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_1b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eirrecv_3658',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.html deleted file mode 100644 index b26d91650..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.js deleted file mode 100644 index 104c60cd4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_2.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['backup_119',['backup',['../classIRToshibaAC.html#adc8d8c6918cd110f524f6bedf6f2bb6e',1,'IRToshibaAC']]], - ['basicfan_120',['BasicFan',['../unionKelvinatorProtocol.html#a9237eb894fd7d6807169d18655bb3261',1,'KelvinatorProtocol']]], - ['bcdtouint8_121',['bcdToUint8',['../namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7',1,'irutils']]], - ['beep_122',['Beep',['../unionDaikin2Protocol.html#ae464d693bde12c9a0085cf268010d158',1,'Daikin2Protocol::Beep()'],['../unionSamsungProtocol.html#a80645f900ef2b45b44b0b9522f4265cc',1,'SamsungProtocol::Beep()'],['../unionSanyoProtocol.html#a56e41c218b229561ee48e9e0184981bd',1,'SanyoProtocol::Beep()'],['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t::beep()']]], - ['beepdisable_123',['BeepDisable',['../unionMideaProtocol.html#a2a1d3b51765737427adb5dddcda84d60',1,'MideaProtocol']]], - ['begin_124',['begin',['../classIRAirwellAc.html#a09a142457af5e012405da80ddaef1dc0',1,'IRAirwellAc::begin()'],['../classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654',1,'IRAmcorAc::begin()'],['../classIRArgoAC.html#aca61a63c37797699540c180354809bd8',1,'IRArgoAC::begin()'],['../classIRCarrierAc64.html#a7d9800edffad8a529971535ada5c00ad',1,'IRCarrierAc64::begin()'],['../classIRCoolixAC.html#a089744bd3bfd65253cd507192afc5311',1,'IRCoolixAC::begin()'],['../classIRCoronaAc.html#a7db1a8eb9c3c7f76091b2707458e54a9',1,'IRCoronaAc::begin()'],['../classIRDaikinESP.html#accd087c48f246a71898cc6fd7afc2cc7',1,'IRDaikinESP::begin()'],['../classIRDaikin2.html#a0fc6c2ca326a1f3b3e4e2b87643d044b',1,'IRDaikin2::begin()'],['../classIRDaikin216.html#ab78433160895dd26cabf4fd2c4b7515d',1,'IRDaikin216::begin()'],['../classIRDaikin160.html#a653727b34a1e50bef14ef0033a4f013a',1,'IRDaikin160::begin()'],['../classIRDaikin176.html#a0e41b220033f16e57664f8d59b6e890b',1,'IRDaikin176::begin()'],['../classIRDaikin128.html#ac1687817fe17f87e0962eb07be81c84d',1,'IRDaikin128::begin()'],['../classIRDaikin152.html#a06039da8e295b6cc785489989c2b012d',1,'IRDaikin152::begin()'],['../classIRDaikin64.html#a9af2d9d594db9114397fb87d19bbb459',1,'IRDaikin64::begin()'],['../classIRDelonghiAc.html#af3e6d5f445b5968fc69792a1c06f6d5b',1,'IRDelonghiAc::begin()'],['../classIREcoclimAc.html#a828ba8b5663d3ceabe8529d4ece87400',1,'IREcoclimAc::begin()'],['../classIRElectraAc.html#afff519ff9e81ec4aa03ff337f8efef13',1,'IRElectraAc::begin()'],['../classIRFujitsuAC.html#af0dc3fffdafae5970bc367f31029464b',1,'IRFujitsuAC::begin()'],['../classIRGoodweatherAc.html#abace3c8b25d4737a83fe33f94fc741d9',1,'IRGoodweatherAc::begin()'],['../classIRGreeAC.html#a44cf8f0e09248741094af4b35321ab1c',1,'IRGreeAC::begin()'],['../classIRHaierAC.html#ab92fd48ccb5707cb6d14e9d46ce42e17',1,'IRHaierAC::begin()'],['../classIRHaierACYRW02.html#addc01e60e8c4045fab6f22c852eb620f',1,'IRHaierACYRW02::begin()'],['../classIRHitachiAc.html#a62817c840f352bb01a394c37fc95f0f0',1,'IRHitachiAc::begin()'],['../classIRHitachiAc1.html#a28d5d351003d3e0bc1506b06cac8b3d6',1,'IRHitachiAc1::begin()'],['../classIRHitachiAc424.html#a11866bba49e9b976eb22b1039787ecae',1,'IRHitachiAc424::begin()'],['../classIRHitachiAc3.html#a6d79ac7b8ce977e8059019349d6991a7',1,'IRHitachiAc3::begin()'],['../classIRKelonAc.html#a038287955eb4d2a0fa6d149d43865fcc',1,'IRKelonAc::begin()'],['../classIRKelvinatorAC.html#a4591bf4e8131aa2a228cbc611156e7f4',1,'IRKelvinatorAC::begin()'],['../classIRLgAc.html#ac08ada1c67ace5ee2ebe4d325aa8c25d',1,'IRLgAc::begin()'],['../classIRMideaAC.html#ac36b6aa76b6b98ab186cd1d5ad9246b4',1,'IRMideaAC::begin()'],['../classIRMitsubishiAC.html#aa6e58080fd811f5b6d0f90c4ef5917df',1,'IRMitsubishiAC::begin()'],['../classIRMitsubishi136.html#abbcd8307862beee2899d2b9900537520',1,'IRMitsubishi136::begin()'],['../classIRMitsubishi112.html#a1d00958556872286b1818d0dbf02e112',1,'IRMitsubishi112::begin()'],['../classIRMitsubishiHeavy152Ac.html#afd649a53d9f7d9b31b7a5732d6cd0857',1,'IRMitsubishiHeavy152Ac::begin()'],['../classIRMitsubishiHeavy88Ac.html#a9bcf18c942ad4df4856bd319215a2002',1,'IRMitsubishiHeavy88Ac::begin()'],['../classIRNeoclimaAc.html#a8f82159b94d86cc4e3d4719441bfa96e',1,'IRNeoclimaAc::begin()'],['../classIRPanasonicAc.html#af48075dc4eb84fcc7f718375d4b0e00a',1,'IRPanasonicAc::begin()'],['../classIRPanasonicAc32.html#a8f57fefe38eac51f49113a21defadc4c',1,'IRPanasonicAc32::begin()'],['../classIRSamsungAc.html#a89f1f902042cd6c6ba9d0f0c6d2cc581',1,'IRSamsungAc::begin()'],['../classIRSanyoAc.html#af4859c4049a35b7f82cf91d326c9a957',1,'IRSanyoAc::begin()'],['../classIRSharpAc.html#ab87e5b599b7e8fc387fff25b5e13e34f',1,'IRSharpAc::begin()'],['../classIRTcl112Ac.html#a5b9983ab4027951679f0dc31b33cbadf',1,'IRTcl112Ac::begin()'],['../classIRTechnibelAc.html#a094f2f3b3690ddd773a175bacd99f894',1,'IRTechnibelAc::begin()'],['../classIRTecoAc.html#a3b23a8556686c83b146101fc31b0dff3',1,'IRTecoAc::begin()'],['../classIRToshibaAC.html#a41e847f399e42c91b0f4aa2ef5d36cba',1,'IRToshibaAC::begin()'],['../classIRTranscoldAc.html#ad3daf2c7108712b6e54eba9c68071910',1,'IRTranscoldAc::begin()'],['../classIRTrotecESP.html#a093b874287adb8ef2cc60c832765ff58',1,'IRTrotecESP::begin()'],['../classIRTrumaAc.html#a46d8ace3fd0d30f07c35b52c4d9ff71a',1,'IRTrumaAc::begin()'],['../classIRVestelAc.html#a794808d49eb6ce1521ff800b2b15a580',1,'IRVestelAc::begin()'],['../classIRVoltas.html#a1b895fa945ce8c6f81444d9306a59d65',1,'IRVoltas::begin()'],['../classIRWhirlpoolAc.html#a21db8b31504d416efb2511a33bdc2209',1,'IRWhirlpoolAc::begin()'],['../classIRsend.html#a386f026bf739b0718efde4cffa6ce129',1,'IRsend::begin()']]], - ['bits_125',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], - ['booltostring_126',['boolToString',['../classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf',1,'IRac']]], - ['boost_127',['Boost',['../unionDelonghiProtocol.html#ad3347e0739d5c00f3fb5cba7c9f53bcd',1,'DelonghiProtocol']]], - ['breeze_128',['Breeze',['../unionSamsungProtocol.html#a5b60f239d70e2005e14e0f4c3c9f8986',1,'SamsungProtocol']]], - ['bufsize_129',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], - ['buildfromstate_130',['buildFromState',['../classIRFujitsuAC.html#a6fc8d7d0f649185e0858974394636a8d',1,'IRFujitsuAC']]], - ['button_131',['Button',['../unionHaierYRW02Protocol.html#ab5b13626ecf6214cc1be52d47909915d',1,'HaierYRW02Protocol::Button()'],['../unionHitachi424Protocol.html#aaadfa5a2e789fb1159ce795f833b83e5',1,'Hitachi424Protocol::Button()'],['../unionNeoclimaProtocol.html#aedacead75ecd658f9e2c8c3a23d2bc58',1,'NeoclimaProtocol::Button()']]], - ['byte_132',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.html deleted file mode 100644 index b61b96f83..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.js deleted file mode 100644 index 01ba6e7aa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_3.js +++ /dev/null @@ -1,67 +0,0 @@ -var searchData= -[ - ['calcblockchecksum_133',['calcBlockChecksum',['../classIRKelvinatorAC.html#a22f561397c526ed6cc3f69a5d527d8d6',1,'IRKelvinatorAC']]], - ['calcchecksum_134',['calcChecksum',['../classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9',1,'IRAmcorAc::calcChecksum()'],['../classIRArgoAC.html#acab2fe3b9f77f57f0e99da0bec0d7392',1,'IRArgoAC::calcChecksum()'],['../classIRCarrierAc64.html#a20676dcf4b0a6510cc3bce282fbf8504',1,'IRCarrierAc64::calcChecksum()'],['../classIRDaikin64.html#ac29c18fde1b0cd98991e68c0f672d0e9',1,'IRDaikin64::calcChecksum()'],['../classIRDelonghiAc.html#a14d7629bb888deb02e83886191f44c2d',1,'IRDelonghiAc::calcChecksum()'],['../classIRElectraAc.html#aa8063d07e41ca2cc0fd27093a2e67bb2',1,'IRElectraAc::calcChecksum()'],['../classIRHitachiAc.html#a6e5da77c12ad105439eb159b6a58104a',1,'IRHitachiAc::calcChecksum()'],['../classIRHitachiAc1.html#a6995513d5b59cd7b14cfff39c8843e8d',1,'IRHitachiAc1::calcChecksum()'],['../classIRLgAc.html#a96024e736cf87e65b4e2db7c4c269520',1,'IRLgAc::calcChecksum()'],['../classIRMideaAC.html#ac8733348b311ecf8eed87021cdf4ee31',1,'IRMideaAC::calcChecksum()'],['../classIRNeoclimaAc.html#ac75f316cd1813cdb4e8a6d45d10ddd57',1,'IRNeoclimaAc::calcChecksum()'],['../classIRPanasonicAc.html#a0e38b0f3c54e49cdb59f92279e19840f',1,'IRPanasonicAc::calcChecksum()'],['../classIRSamsungAc.html#a00f9b2a1480d2ed45bdea5d236c77d0f',1,'IRSamsungAc::calcChecksum()'],['../classIRSanyoAc.html#a7836c947d6d725d6c55ae2ca9e8b445d',1,'IRSanyoAc::calcChecksum()'],['../classIRSharpAc.html#af3655c9c394b1391572e8ffab70881ff',1,'IRSharpAc::calcChecksum()'],['../classIRTcl112Ac.html#a0973a1c8a53661ee7720ecb5d08e6dcc',1,'IRTcl112Ac::calcChecksum()'],['../classIRTechnibelAc.html#a1762ef4003cec898543cebe0957e2c8b',1,'IRTechnibelAc::calcChecksum()'],['../classIRToshibaAC.html#a0d91d32d0d9d722f750eb423d88509f4',1,'IRToshibaAC::calcChecksum()'],['../classIRTrotecESP.html#ac1fdbcbbb8dd1ca50ccf2b55c7281c89',1,'IRTrotecESP::calcChecksum()'],['../classIRTrumaAc.html#a88f8ba515492d3d217f6476e0f386f1e',1,'IRTrumaAc::calcChecksum()'],['../classIRVestelAc.html#ac0ba3de4de70350c5325b3d5e0b39e58',1,'IRVestelAc::calcChecksum()'],['../classIRVoltas.html#a0069131bedc4b97a61547abe9640fd09',1,'IRVoltas::calcChecksum()']]], - ['calcfirstchecksum_135',['calcFirstChecksum',['../classIRDaikin128.html#a25b25f6b73bb5f1fd17a16080179d4bc',1,'IRDaikin128']]], - ['calcrepeatoffset_136',['calcRepeatOffset',['../namespaceIRXmpUtils.html#adbf7d8c8f73c5c9beca3094871d6a7c2',1,'IRXmpUtils']]], - ['calcsecondchecksum_137',['calcSecondChecksum',['../classIRDaikin128.html#aea8da64300afe0d62ddf3082a72251f2',1,'IRDaikin128']]], - ['calcsectionchecksum_138',['calcSectionChecksum',['../namespaceIRXmpUtils.html#a170c46b9aa59d1717fdff6f932353dca',1,'IRXmpUtils']]], - ['calculatechecksum_139',['calculateChecksum',['../classIRMitsubishiAC.html#aaadefc5880dcd48e3fb2f12b59101f71',1,'IRMitsubishiAC']]], - ['calcusecperiod_140',['calcUSecPeriod',['../classIRsend.html#ae9e68c0ed22e27c8f7ff82cec7ca3e33',1,'IRsend']]], - ['calibrate_141',['calibrate',['../classIRAirwellAc.html#ae7a80cbb217d35835961477caaea3218',1,'IRAirwellAc::calibrate()'],['../classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80',1,'IRAmcorAc::calibrate()'],['../classIRArgoAC.html#a63cd2f350a7f249c020439543ef3c6d5',1,'IRArgoAC::calibrate()'],['../classIRCarrierAc64.html#a0718376156750e66f98ea0549c75b21b',1,'IRCarrierAc64::calibrate()'],['../classIRCoolixAC.html#a9e39ce5050888210d6ba9b79ae3763e3',1,'IRCoolixAC::calibrate()'],['../classIRCoronaAc.html#a5b10141e4a6e3d8511fb7f9f46d00a96',1,'IRCoronaAc::calibrate()'],['../classIRDaikinESP.html#a638a49f49275a2ab0affb09088794e1b',1,'IRDaikinESP::calibrate()'],['../classIRDaikin2.html#a96c62125bddf113c6524960062d05a57',1,'IRDaikin2::calibrate()'],['../classIRDaikin216.html#a49d7501966528c0a690cfb505f163e26',1,'IRDaikin216::calibrate()'],['../classIRDaikin160.html#a608b5556f316c31e3a8aa73684e4e10d',1,'IRDaikin160::calibrate()'],['../classIRDaikin176.html#a1f5989110782c18aa18e3757c50f4a31',1,'IRDaikin176::calibrate()'],['../classIRDaikin128.html#a281396f4c632899648694e3139c3acd0',1,'IRDaikin128::calibrate()'],['../classIRDaikin152.html#a82fa8bfb3384ed09473345b6e194c3ba',1,'IRDaikin152::calibrate()'],['../classIRDaikin64.html#a12a1e21ba1b06f9b3ffac56691ff2206',1,'IRDaikin64::calibrate()'],['../classIRDelonghiAc.html#aab8f78adcd7fcbea0be753a4fc7696e0',1,'IRDelonghiAc::calibrate()'],['../classIREcoclimAc.html#a20a2b503f5125a90c4ab183dfe92446b',1,'IREcoclimAc::calibrate()'],['../classIRElectraAc.html#af333e90117ab035ff92389d4eefb3649',1,'IRElectraAc::calibrate()'],['../classIRFujitsuAC.html#a8bb6d8456561dfb04ccac95e0e489558',1,'IRFujitsuAC::calibrate()'],['../classIRGoodweatherAc.html#a8a747144587cf38d64bb32a7f86432b3',1,'IRGoodweatherAc::calibrate()'],['../classIRGreeAC.html#a8069d00a16ed04fd6fa10d84b364bca7',1,'IRGreeAC::calibrate()'],['../classIRHaierAC.html#a448b1d5db05f7722db4758e968ea3171',1,'IRHaierAC::calibrate()'],['../classIRHaierACYRW02.html#a2081b29d0526e339a6b94fc41c854197',1,'IRHaierACYRW02::calibrate()'],['../classIRHitachiAc.html#aaabd743da491ef5d73c4b8c46f11241a',1,'IRHitachiAc::calibrate()'],['../classIRHitachiAc1.html#a847a26df2e19668b147cba2eef595a21',1,'IRHitachiAc1::calibrate()'],['../classIRHitachiAc424.html#aae5e5c13767f335331c5fab8d8ba55d6',1,'IRHitachiAc424::calibrate()'],['../classIRHitachiAc3.html#a02e065c08f9ec4a3d9e6f71432087595',1,'IRHitachiAc3::calibrate()'],['../classIRKelonAc.html#abc971aa5df1cb04d804b1b0eab5282a2',1,'IRKelonAc::calibrate()'],['../classIRKelvinatorAC.html#aee8863c1678b09432618bb4ca734db95',1,'IRKelvinatorAC::calibrate()'],['../classIRLgAc.html#a4fd11e935c781319b29f606f2f4b2570',1,'IRLgAc::calibrate()'],['../classIRMideaAC.html#a4077604c2af56783f95a0a64eda7148b',1,'IRMideaAC::calibrate()'],['../classIRMitsubishiAC.html#a973c876e34942776ac98f27de96c5228',1,'IRMitsubishiAC::calibrate()'],['../classIRMitsubishi136.html#a76133542efc3763cb7edc9809ad8d93c',1,'IRMitsubishi136::calibrate()'],['../classIRMitsubishi112.html#ad148250070a3f4ac57ed6cb957ffdefb',1,'IRMitsubishi112::calibrate()'],['../classIRMitsubishiHeavy152Ac.html#a5d4c4ce0e69ed33a2f1db2af127c13c5',1,'IRMitsubishiHeavy152Ac::calibrate()'],['../classIRMitsubishiHeavy88Ac.html#a027423ffbee92ef65b02423f7cbaeca8',1,'IRMitsubishiHeavy88Ac::calibrate()'],['../classIRNeoclimaAc.html#a636dd97ca22c847f966eca8112c8eede',1,'IRNeoclimaAc::calibrate()'],['../classIRPanasonicAc.html#a3f850333f2aa7ce40856c99ef85ffd79',1,'IRPanasonicAc::calibrate()'],['../classIRPanasonicAc32.html#a99218b5c80a3cedda986df9bfbcf5065',1,'IRPanasonicAc32::calibrate()'],['../classIRSamsungAc.html#a5cc7486ae41f61cbe0bb053dd7c9e9e3',1,'IRSamsungAc::calibrate()'],['../classIRSanyoAc.html#a603f8f7dcfa1c3707a64ee092c72cb09',1,'IRSanyoAc::calibrate()'],['../classIRSharpAc.html#ac37b1a5679ce90e84f6f95c5df1526bb',1,'IRSharpAc::calibrate()'],['../classIRTcl112Ac.html#a435744e4c6ef31b362d15523ce0584f5',1,'IRTcl112Ac::calibrate()'],['../classIRTechnibelAc.html#a137e375497c699b0e7bfd8a7d46f087c',1,'IRTechnibelAc::calibrate()'],['../classIRTecoAc.html#ad700578cbae74857483372597a399ff3',1,'IRTecoAc::calibrate()'],['../classIRToshibaAC.html#a74c66bba288cb3cbb43008edb7b376bf',1,'IRToshibaAC::calibrate()'],['../classIRTranscoldAc.html#ae91dbd4a94ff4cd648c283b9f18bc149',1,'IRTranscoldAc::calibrate()'],['../classIRTrotecESP.html#a56de318a27011e0bddb40738c18dbcf2',1,'IRTrotecESP::calibrate()'],['../classIRTrumaAc.html#a6596a2fd4644358a6f122db2a94447e7',1,'IRTrumaAc::calibrate()'],['../classIRVestelAc.html#aae91667d96d86de824a20c256c311f15',1,'IRVestelAc::calibrate()'],['../classIRVoltas.html#ac264033a983290d9c194fde822ed63a4',1,'IRVoltas::calibrate()'],['../classIRWhirlpoolAc.html#a006c59c1c84c62fccd3730bec30ef5e8',1,'IRWhirlpoolAc::calibrate()'],['../classIRsend.html#ad1776aa6c699f9eeca1eef9bb4fe355b',1,'IRsend::calibrate()']]], - ['cancelofftimer_142',['cancelOffTimer',['../classIRPanasonicAc.html#a6d202284320c59205cb0d02cb613cada',1,'IRPanasonicAc']]], - ['cancelontimer_143',['cancelOnTimer',['../classIRPanasonicAc.html#a102e7c029a923e121e40326859f2e4a3',1,'IRPanasonicAc']]], - ['canceltimers_144',['cancelTimers',['../classIRHaierAC.html#a1cccc733f74232751f95c32e47795638',1,'IRHaierAC']]], - ['carrier64_145',['carrier64',['../classIRac.html#a8090f2d79a31b81a0342b2e9efb9d555',1,'IRac']]], - ['carrier_5fac_146',['CARRIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4d7328071e0a48bc828fccb02f969c20',1,'IRremoteESP8266.h']]], - ['carrier_5fac40_147',['CARRIER_AC40',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1340c578f7986b0ed126744127af3907',1,'IRremoteESP8266.h']]], - ['carrier_5fac64_148',['CARRIER_AC64',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4122973f5d8ce282457d348857ba0af0',1,'IRremoteESP8266.h']]], - ['carrierprotocol_149',['CarrierProtocol',['../unionCarrierProtocol.html',1,'']]], - ['ceiling_150',['Ceiling',['../unionDaikin128Protocol.html#a8d2eb9c3a65bd4ecd111d1eccbb4ebe1',1,'Daikin128Protocol']]], - ['celsius_151',['celsius',['../structstdAc_1_1state__t.html#a235b17f3979b155b368bfdc2b14123f5',1,'stdAc::state_t']]], - ['celsiustofahrenheit_152',['celsiusToFahrenheit',['../IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp'],['../IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp']]], - ['cheat_153',['CHeat',['../unionNeoclimaProtocol.html#aba91857f67b7039783cd6c504de1ad64',1,'NeoclimaProtocol']]], - ['checkinvertedbytepairs_154',['checkInvertedBytePairs',['../namespaceirutils.html#ab27a18cec663509b4d0df094575c2f64',1,'irutils']]], - ['checksum_155',['checkSum',['../classIRFujitsuAC.html#ad89b20a62f08acb326d7f6613b815eaf',1,'IRFujitsuAC::checkSum()'],['../unionVoltasProtocol.html#a4349ae4488d2d9c9dd5606502d486b19',1,'VoltasProtocol::Checksum()'],['../classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113',1,'IRAmcorAc::checksum()'],['../classIRArgoAC.html#ab0fe4e42d1c1201a92f5c4738b869763',1,'IRArgoAC::checksum()'],['../classIRCarrierAc64.html#a005fab56acf94fe97db7fa92651b2882',1,'IRCarrierAc64::checksum()'],['../classIRCoronaAc.html#ae0257fdafacf7fd2e7ac6ca3f8ae3168',1,'IRCoronaAc::checksum()'],['../classIRDaikinESP.html#ac8ac2a0674dc5cfaf514d319b51b20ab',1,'IRDaikinESP::checksum()'],['../classIRDaikin2.html#a0d418ae9490b2a24d680998209e5c7ea',1,'IRDaikin2::checksum()'],['../classIRDaikin216.html#ae9d7d1ed13a6f32e5a30975f72554fba',1,'IRDaikin216::checksum()'],['../classIRDaikin160.html#aac3b34aeae49f5179aa3f06fad28925d',1,'IRDaikin160::checksum()'],['../classIRDaikin176.html#a155e0dc2c7fcc334fffdef64c31c33fd',1,'IRDaikin176::checksum()'],['../classIRDaikin128.html#a747c906808c269581de6cf9b02e5c0a7',1,'IRDaikin128::checksum()'],['../classIRDaikin152.html#a2e39f879606a7b2c72869f3c9537cb07',1,'IRDaikin152::checksum()'],['../classIRDaikin64.html#a796e6a58cbb6f1920349db019952f355',1,'IRDaikin64::checksum()'],['../classIRDelonghiAc.html#ae4c4e7140a763eee159991f5c8afc54f',1,'IRDelonghiAc::checksum()'],['../classIRElectraAc.html#a73dc5b9a038669cc1f00f5b64ad458d1',1,'IRElectraAc::checksum()'],['../classIRGreeAC.html#aaa6b2702d79a7a3db454b99d71064679',1,'IRGreeAC::checksum()'],['../classIRHaierAC.html#ab7faae274ff7f30bf7df3c58d6e7e210',1,'IRHaierAC::checksum()'],['../classIRHaierACYRW02.html#a18045defdd5641ae13c7c75dda0cf23a',1,'IRHaierACYRW02::checksum()'],['../classIRHitachiAc.html#a3b65ccbd6de6b5dcb5a794b471e363f5',1,'IRHitachiAc::checksum()'],['../classIRHitachiAc1.html#aa6687d6282b134d508d6534e8446b341',1,'IRHitachiAc1::checksum()'],['../classIRKelvinatorAC.html#aad752fda68767a47d77ae4e1eeb550f7',1,'IRKelvinatorAC::checksum()'],['../classIRLgAc.html#a438cbbb77668205c3f2b59b8f28585cd',1,'IRLgAc::checksum()'],['../classIRMideaAC.html#a418b7cbb4b388dba732176d891bb499d',1,'IRMideaAC::checksum()'],['../classIRMitsubishiAC.html#a7c5b1e5c53d99f1564d8a0424f626adb',1,'IRMitsubishiAC::checksum()'],['../classIRMitsubishi136.html#aa2c6fe9b28462052cf6627960126a783',1,'IRMitsubishi136::checksum()'],['../classIRMitsubishi112.html#a65ee232bfc09d05724b8ec5ada538ccf',1,'IRMitsubishi112::checksum()'],['../classIRMitsubishiHeavy152Ac.html#a14cdcaeefef283f707d0fae5108d65f4',1,'IRMitsubishiHeavy152Ac::checksum()'],['../classIRMitsubishiHeavy88Ac.html#acb03ef0da10d3fec14c71bfa087a02b8',1,'IRMitsubishiHeavy88Ac::checksum()'],['../classIRNeoclimaAc.html#acba18ea35a59f6f1ccbcfd75e7979feb',1,'IRNeoclimaAc::checksum()'],['../classIRSamsungAc.html#a75c5886916dd3ef3aa6f96f04934048d',1,'IRSamsungAc::checksum()'],['../classIRSanyoAc.html#abeb47f286c0228d5694a0b8218a29408',1,'IRSanyoAc::checksum()'],['../classIRSharpAc.html#ad87f46ad9220213d77022dc34920d802',1,'IRSharpAc::checksum()'],['../classIRTcl112Ac.html#a2486f46c7db6a3dfbe3af9c842ff37fa',1,'IRTcl112Ac::checksum()'],['../classIRTechnibelAc.html#af93f984eacd2820cad58400a85b0f05b',1,'IRTechnibelAc::checksum()'],['../classIRToshibaAC.html#a5aa2c6fc3b07830f872f98906df7e9ec',1,'IRToshibaAC::checksum()'],['../classIRTrotecESP.html#a5e416e083653ab365f65b3f645f60e8c',1,'IRTrotecESP::checksum()'],['../classIRTrumaAc.html#a5bdb72773b8b2583754227d4f22e4573',1,'IRTrumaAc::checksum()'],['../classIRVestelAc.html#a7a9046e7b5ff57864862bf5f7ad23c4d',1,'IRVestelAc::checksum()'],['../classIRVoltas.html#acd7b669c0ef94959f1fc9d7a8f7abe8a',1,'IRVoltas::checksum()'],['../classIRWhirlpoolAc.html#a7790be3df6c4609e5c08c17c5ee52047',1,'IRWhirlpoolAc::checksum()']]], - ['checkzjssig_156',['checkZjsSig',['../classIRMitsubishiHeavy88Ac.html#a6aaf8ae4c9b52d73229b20414099f309',1,'IRMitsubishiHeavy88Ac']]], - ['checkzmssig_157',['checkZmsSig',['../classIRMitsubishiHeavy152Ac.html#a3d1c9d2c98945d21eb1ce82fac1771d2',1,'IRMitsubishiHeavy152Ac']]], - ['clean_158',['Clean',['../unionDaikin2Protocol.html#a064d834228a18ca64cefc3d246db9bad',1,'Daikin2Protocol::Clean()'],['../unionElectraProtocol.html#aa51de8a1e38d432aad7d2e0a656db86e',1,'ElectraProtocol::Clean()'],['../unionFujitsuProtocol.html#a0080a99d466ee4924b128fb3271edfee',1,'FujitsuProtocol::Clean()'],['../unionMitsubishi152Protocol.html#aef8f83b0301182a5f75f604b473b7c10',1,'Mitsubishi152Protocol::Clean()'],['../unionMitsubishi88Protocol.html#a458d9bec45523636e7caf452bf5e46c6',1,'Mitsubishi88Protocol::Clean()'],['../unionSharpProtocol.html#ad5b81ea43a14061b02bed374bce16ce5',1,'SharpProtocol::Clean()'],['../structstdAc_1_1state__t.html#a703fa57ade60d68deccbb2a59258b32a',1,'stdAc::state_t::clean()']]], - ['clean10_159',['Clean10',['../unionSamsungProtocol.html#a4d3bce30e1795bc4e95c0209c5e702b2',1,'SamsungProtocol']]], - ['clean11_160',['Clean11',['../unionSamsungProtocol.html#af33c314cfb3a42cb7536c4a809a9fa0c',1,'SamsungProtocol']]], - ['cleanflag_161',['cleanFlag',['../classIRCoolixAC.html#a9280bc7517713dae451a64e35674804d',1,'IRCoolixAC']]], - ['cleanstate_162',['cleanState',['../classIRac.html#aad988dc123495012758307213a933f37',1,'IRac']]], - ['clear_163',['Clear',['../unionEcoclimProtocol.html#a424f9fd7d803ad18d4bf32ff0f3342b3',1,'EcoclimProtocol']]], - ['clearontimerflag_164',['clearOnTimerFlag',['../classIRDaikin2.html#a1e6507bb20167547d175496ffc5ed39d',1,'IRDaikin2']]], - ['clearpowerspecial_165',['clearPowerSpecial',['../classIRSharpAc.html#a3c98c96a66dff560941e461a70efdb1a',1,'IRSharpAc']]], - ['clearsensortemp_166',['clearSensorTemp',['../classIRCoolixAC.html#a1881a0c74685920b54cbbbfb6adbb0c6',1,'IRCoolixAC']]], - ['clearsleeptimerflag_167',['clearSleepTimerFlag',['../classIRDaikin2.html#a2e00f01a66257966c7a166d66d01de93',1,'IRDaikin2']]], - ['clock_168',['Clock',['../unionEcoclimProtocol.html#a521fbbb17cf7755806d62ede90144f5c',1,'EcoclimProtocol::Clock()'],['../unionMitsubishi144Protocol.html#a61b5a9fa2305eedb437c8e9d01b3a7fe',1,'Mitsubishi144Protocol::Clock()'],['../structstdAc_1_1state__t.html#ab1d76172930ebfe992fd9b700369e787',1,'stdAc::state_t::clock()']]], - ['clockhours_169',['ClockHours',['../unionDaikin128Protocol.html#a1de4c4ec4a98bcfff4d515d0c84f5c4d',1,'Daikin128Protocol::ClockHours()'],['../unionDaikin64Protocol.html#a0405fde38f8da649561cb58df28ac5b7',1,'Daikin64Protocol::ClockHours()'],['../unionWhirlpoolProtocol.html#a5241ed48023d1b4dd8042a39d9ef83fe',1,'WhirlpoolProtocol::ClockHours()']]], - ['clockmins_170',['ClockMins',['../unionDaikin128Protocol.html#afbed1ec9c718f417c25968a3f3b14681',1,'Daikin128Protocol::ClockMins()'],['../unionDaikin64Protocol.html#a5263808e2456f707bded2d8f244ca370',1,'Daikin64Protocol::ClockMins()'],['../unionWhirlpoolProtocol.html#aebb367f02ac1b311c75236ad44e5666a',1,'WhirlpoolProtocol::ClockMins()']]], - ['cmd_171',['Cmd',['../unionFujitsuProtocol.html#a9361fb99d71caae87e3f7c10b7f1bd5f',1,'FujitsuProtocol::Cmd()'],['../unionWhirlpoolProtocol.html#a19b065181eaf22cf7878176a2914100e',1,'WhirlpoolProtocol::Cmd()'],['../unionmagiquest.html#a7f77946114ac2fdf3f0491482f9c277a',1,'magiquest::cmd()']]], - ['cmdstate_172',['cmdState',['../unionVestelProtocol.html#a823af315c3a09e3deaefa838b8c9deb5',1,'VestelProtocol']]], - ['cmdsum_173',['CmdSum',['../unionVestelProtocol.html#acc13a6d521b86c1a1e03e98a6b67eeef',1,'VestelProtocol']]], - ['cmpstates_174',['cmpStates',['../classIRac.html#a3ba4eee08650dfcdd6d492a67c86f016',1,'IRac']]], - ['comfort_175',['Comfort',['../unionDaikinESPProtocol.html#a276e609fab153bdac93341ac4f76a09c',1,'DaikinESPProtocol::Comfort()'],['../unionDaikin152Protocol.html#a1fa909ea9a26e65e354aa6a59c69d163',1,'Daikin152Protocol::Comfort()']]], - ['command_176',['Command',['../unionGoodweatherProtocol.html#acaa336e2b9915da4dfb51e4738af9265',1,'GoodweatherProtocol::Command()'],['../unionHaierProtocol.html#aeb39971e74e12fb0c7463006d6c644bd',1,'HaierProtocol::Command()'],['../classdecode__results.html#a9b750d09f713b0693472f815fd0fd402',1,'decode_results::command()']]], - ['compare_177',['compare',['../classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc',1,'IRrecv']]], - ['convertfan_178',['convertFan',['../classIRAirwellAc.html#a44091f4d58b8078df1a93170cb9900d8',1,'IRAirwellAc::convertFan()'],['../classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c',1,'IRAmcorAc::convertFan()'],['../classIRArgoAC.html#acd147993fb998a0e7015173b9514d4a2',1,'IRArgoAC::convertFan()'],['../classIRCarrierAc64.html#a255e6679397434877f1c6c9ac70fff50',1,'IRCarrierAc64::convertFan()'],['../classIRCoolixAC.html#a7ffa1cfcf82bd905b0f607401200c895',1,'IRCoolixAC::convertFan()'],['../classIRCoronaAc.html#a6826036fcabbb45e7369f42912fae02f',1,'IRCoronaAc::convertFan()'],['../classIRDaikinESP.html#ab58be19636d41d60b9c62d658ca18cae',1,'IRDaikinESP::convertFan()'],['../classIRDaikin2.html#ad147ea14695c9498bb091862e172dc81',1,'IRDaikin2::convertFan()'],['../classIRDaikin216.html#a520cc65161290f15022b4108f7049a83',1,'IRDaikin216::convertFan()'],['../classIRDaikin160.html#a32658c0f24d0b0c398d54ef648d717a9',1,'IRDaikin160::convertFan()'],['../classIRDaikin176.html#ae3dda9a55f851b5253d0677835a2c3dd',1,'IRDaikin176::convertFan()'],['../classIRDaikin128.html#a983c13bc608fbfa32d7ea2c36dc84116',1,'IRDaikin128::convertFan()'],['../classIRDaikin152.html#a5e2e79252602ca3493baf00cf3fe7787',1,'IRDaikin152::convertFan()'],['../classIRDaikin64.html#a109ff0c33b0a7dfd763683538915c811',1,'IRDaikin64::convertFan()'],['../classIRDelonghiAc.html#aeff2970b20963ae59b99464ae683113f',1,'IRDelonghiAc::convertFan()'],['../classIREcoclimAc.html#a308c50e46019d174b8b62bf5b7b8feaf',1,'IREcoclimAc::convertFan()'],['../classIRElectraAc.html#afcf3ef62d69e370cb88dd2036e5a1357',1,'IRElectraAc::convertFan()'],['../classIRFujitsuAC.html#a111060b7c93e77fdbd1dc96fc8a6c10f',1,'IRFujitsuAC::convertFan()'],['../classIRGoodweatherAc.html#abb443826453a65e87f6dedddf2dd74d5',1,'IRGoodweatherAc::convertFan()'],['../classIRGreeAC.html#a39aa0e4759330aef39382813d3aa96a4',1,'IRGreeAC::convertFan()'],['../classIRHaierAC.html#a58628dd19a7247fc5358c0dc8c30baba',1,'IRHaierAC::convertFan()'],['../classIRHaierACYRW02.html#a66e42d018f3d86b136624a347d333401',1,'IRHaierACYRW02::convertFan()'],['../classIRHitachiAc.html#a5c632c9efc42d9378fdefe608c9bb771',1,'IRHitachiAc::convertFan()'],['../classIRHitachiAc1.html#a96c22fddcd7dfcc5b8f205cc5c7efdef',1,'IRHitachiAc1::convertFan()'],['../classIRHitachiAc424.html#a4f502b779f9fe4aca3a2f649c4cfbda3',1,'IRHitachiAc424::convertFan()'],['../classIRKelonAc.html#ae27dcc27fd6f972e20f92063b33f4ab3',1,'IRKelonAc::convertFan()'],['../classIRLgAc.html#a71ce8d1be4222ecae26fcea3b71a1ba6',1,'IRLgAc::convertFan()'],['../classIRMideaAC.html#a08a8e49986ce808fd7edd8aee7399a64',1,'IRMideaAC::convertFan()'],['../classIRMitsubishiAC.html#a58ce95e1ae198a9855ee5e81335570cf',1,'IRMitsubishiAC::convertFan()'],['../classIRMitsubishi136.html#a81e691b386950859d1ad0a3c7faf7e49',1,'IRMitsubishi136::convertFan()'],['../classIRMitsubishi112.html#a4194e5b076687b79153bc8cd50c9bc86',1,'IRMitsubishi112::convertFan()'],['../classIRMitsubishiHeavy152Ac.html#ae11040290301b5fe66dfe79e8ea9512b',1,'IRMitsubishiHeavy152Ac::convertFan()'],['../classIRMitsubishiHeavy88Ac.html#acd69c45dbc3f5a150e17b82b5eae7b3f',1,'IRMitsubishiHeavy88Ac::convertFan()'],['../classIRNeoclimaAc.html#a8c3ac622428f118b28d53a3a82740993',1,'IRNeoclimaAc::convertFan()'],['../classIRPanasonicAc.html#aeada51b2d1ff51ff81dfc5c996b416df',1,'IRPanasonicAc::convertFan()'],['../classIRPanasonicAc32.html#a35814ff1a9625da3380482d039665b0b',1,'IRPanasonicAc32::convertFan()'],['../classIRSamsungAc.html#a6be52cc6980ad0bf80261c2a48eb3c87',1,'IRSamsungAc::convertFan()'],['../classIRSanyoAc.html#ab8bc1d3df116aa4a4b86c9faea2b4f40',1,'IRSanyoAc::convertFan()'],['../classIRSharpAc.html#a7b332ac755592ee643ac698654a63270',1,'IRSharpAc::convertFan()'],['../classIRTcl112Ac.html#a3f8178f8f646ed9892eefa40bbff4fb1',1,'IRTcl112Ac::convertFan()'],['../classIRTechnibelAc.html#aa59bf477a0ed2b814096f135cc5fe7c6',1,'IRTechnibelAc::convertFan()'],['../classIRTecoAc.html#a262aead12607ff962dd97c73e6dea078',1,'IRTecoAc::convertFan()'],['../classIRToshibaAC.html#aeef5cfb840f3058629b486232b7efb22',1,'IRToshibaAC::convertFan()'],['../classIRTranscoldAc.html#a5d67793bc5174f1c9f415b43fe6fb584',1,'IRTranscoldAc::convertFan()'],['../classIRTrotecESP.html#a905d4d5bd298db8c2e1a9b004fd541e8',1,'IRTrotecESP::convertFan()'],['../classIRTrumaAc.html#a3b7bbb494fcb23b7b154e89587eb871a',1,'IRTrumaAc::convertFan()'],['../classIRVestelAc.html#aa7702b0e50b6c8073cd7740a630b19dd',1,'IRVestelAc::convertFan()'],['../classIRVoltas.html#a83022d8acc690f1a9672566ae4845e9e',1,'IRVoltas::convertFan()'],['../classIRWhirlpoolAc.html#a3004feef0ec5fe327d6a43d68d029377',1,'IRWhirlpoolAc::convertFan()']]], - ['convertmode_179',['convertMode',['../classIRAirwellAc.html#a20f9a804b2f8774165befc43d434ad84',1,'IRAirwellAc::convertMode()'],['../classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc',1,'IRAmcorAc::convertMode()'],['../classIRArgoAC.html#ad242e7b18dea9768b9fad6b1e0e12f65',1,'IRArgoAC::convertMode()'],['../classIRCarrierAc64.html#a8e94b1526b26cec55f1e700c86aaf74e',1,'IRCarrierAc64::convertMode()'],['../classIRCoolixAC.html#acfb0d2c20322cb4d3cd681a3a54b30fe',1,'IRCoolixAC::convertMode()'],['../classIRCoronaAc.html#a9f9cf8e38285cb2f3caf79e14516bda1',1,'IRCoronaAc::convertMode()'],['../classIRDaikinESP.html#aa96f52596148cab1f806faf190a0aa0a',1,'IRDaikinESP::convertMode()'],['../classIRDaikin2.html#a10aae6ec9783eac9d89ff98b947767dd',1,'IRDaikin2::convertMode()'],['../classIRDaikin216.html#a4fa9eca71ee6ad66b3fffd8b779f5fb0',1,'IRDaikin216::convertMode()'],['../classIRDaikin160.html#ac69861fdbde341fc75d90a5e4918aa56',1,'IRDaikin160::convertMode()'],['../classIRDaikin176.html#ab07fd6eab0ac6132625a291dae8cfc78',1,'IRDaikin176::convertMode()'],['../classIRDaikin128.html#a0bad4830267887299b2773075a16b283',1,'IRDaikin128::convertMode()'],['../classIRDaikin152.html#a25592419c95c0271d8a0c4203a2919c3',1,'IRDaikin152::convertMode()'],['../classIRDaikin64.html#a595d91c0294c9482aa453f077eebf882',1,'IRDaikin64::convertMode()'],['../classIRDelonghiAc.html#a51a6eab431f81fa448a48c0ec071e706',1,'IRDelonghiAc::convertMode()'],['../classIREcoclimAc.html#aa685f7824b36e3c80926d9ab96faf623',1,'IREcoclimAc::convertMode()'],['../classIRElectraAc.html#a0026a1981e713ce1f6916203717e0a00',1,'IRElectraAc::convertMode()'],['../classIRFujitsuAC.html#a242504a5b97c19ff7e369efcadd3916e',1,'IRFujitsuAC::convertMode()'],['../classIRGoodweatherAc.html#aef14e2b6c220e556300d286922da1f54',1,'IRGoodweatherAc::convertMode()'],['../classIRGreeAC.html#a609e87ad4926f150b44426caf79fd38e',1,'IRGreeAC::convertMode()'],['../classIRHaierAC.html#af6188dbed5cae022b4fd1eef358f594c',1,'IRHaierAC::convertMode()'],['../classIRHaierACYRW02.html#a9a51f3d4b4c60ed7d99f9836a57bb3e5',1,'IRHaierACYRW02::convertMode()'],['../classIRHitachiAc.html#af1bdc5e22e5e24218421bd3bbb436301',1,'IRHitachiAc::convertMode()'],['../classIRHitachiAc1.html#a6211c96f463353791e5d922d9939f23c',1,'IRHitachiAc1::convertMode()'],['../classIRHitachiAc424.html#a974bf3ada7117e463b8c23e2158902be',1,'IRHitachiAc424::convertMode()'],['../classIRKelonAc.html#a3ac8b212ee8606bbd2f4668908daf0fa',1,'IRKelonAc::convertMode()'],['../classIRKelvinatorAC.html#acc9d70a94dd3813005ca0381b80a35e4',1,'IRKelvinatorAC::convertMode()'],['../classIRLgAc.html#a114eca216b7c9c7be33d4527f848311e',1,'IRLgAc::convertMode()'],['../classIRMideaAC.html#a0ca16c8bc2232be467baba8ea69b40d4',1,'IRMideaAC::convertMode()'],['../classIRMitsubishiAC.html#a86d069e406d247bafbefbdd09b22894f',1,'IRMitsubishiAC::convertMode()'],['../classIRMitsubishi136.html#a43b8ff1083d09563a5d3a25b24e480ea',1,'IRMitsubishi136::convertMode()'],['../classIRMitsubishi112.html#aa41d6ec8bc6dc91891aaddbd996f6040',1,'IRMitsubishi112::convertMode()'],['../classIRMitsubishiHeavy152Ac.html#a067ca776edc19a577e8bcda5013e1d0f',1,'IRMitsubishiHeavy152Ac::convertMode()'],['../classIRMitsubishiHeavy88Ac.html#ad0419d176d70935fc535cdcc47ffba02',1,'IRMitsubishiHeavy88Ac::convertMode()'],['../classIRNeoclimaAc.html#a61335773816ecbbeb949e5da78d07e50',1,'IRNeoclimaAc::convertMode()'],['../classIRPanasonicAc.html#a3f3bc3e4b73338351f33f26c635075bb',1,'IRPanasonicAc::convertMode()'],['../classIRPanasonicAc32.html#a229264735483d62735dc3b32c42fb718',1,'IRPanasonicAc32::convertMode()'],['../classIRSamsungAc.html#a76f7fed436bdfcd9c9a9da8dd99cb9f7',1,'IRSamsungAc::convertMode()'],['../classIRSanyoAc.html#a12a355a527ba5d572448d420e1cad9a7',1,'IRSanyoAc::convertMode()'],['../classIRSharpAc.html#a340d60b4b24c10479b3fed4409e0834b',1,'IRSharpAc::convertMode()'],['../classIRTcl112Ac.html#ac063653636319a9451590b08abbfecdc',1,'IRTcl112Ac::convertMode()'],['../classIRTechnibelAc.html#a2e9eef25e288656e7840b09cda0f9aa5',1,'IRTechnibelAc::convertMode()'],['../classIRTecoAc.html#a5f95c5aacd8fc312acd0f36fd9dc33f2',1,'IRTecoAc::convertMode()'],['../classIRToshibaAC.html#a1cdcb695e128d57c721623cfdc9a8e8d',1,'IRToshibaAC::convertMode()'],['../classIRTranscoldAc.html#a45372965e8735a1fb54173eb1ed31c9d',1,'IRTranscoldAc::convertMode()'],['../classIRTrotecESP.html#a114a7022f0382275a55a2775d3d8e894',1,'IRTrotecESP::convertMode()'],['../classIRTrumaAc.html#a5d300dcade65104145b253110862aa2f',1,'IRTrumaAc::convertMode()'],['../classIRVestelAc.html#a5bb967d4972374254dad2c0a6fac7ed2',1,'IRVestelAc::convertMode()'],['../classIRVoltas.html#a3086d4e457769916808b3aef151c9b6b',1,'IRVoltas::convertMode()'],['../classIRWhirlpoolAc.html#afbf2f473c98f480d68c8bb28e1202d56',1,'IRWhirlpoolAc::convertMode()']]], - ['convertswing_180',['convertSwing',['../classIRTechnibelAc.html#a9368635dd24b042066094bfca13e8a17',1,'IRTechnibelAc']]], - ['convertswingh_181',['convertSwingH',['../classIRDaikin2.html#a79a989ad0221157c4dd8d992cc2863dc',1,'IRDaikin2::convertSwingH()'],['../classIRDaikin176.html#a2387b8dff2a9c9cd164034977b03f192',1,'IRDaikin176::convertSwingH()'],['../classIRHitachiAc344.html#a34d0fa5b522b51dac46f33cbb0a0a389',1,'IRHitachiAc344::convertSwingH()'],['../classIRMitsubishiAC.html#a8235a527a178486bb58ce62749aaf2fb',1,'IRMitsubishiAC::convertSwingH()'],['../classIRMitsubishi112.html#ab17598ce693475ef167525b8408e2da4',1,'IRMitsubishi112::convertSwingH()'],['../classIRMitsubishiHeavy152Ac.html#a0183cf4fcefb60ac61060dde698efbd1',1,'IRMitsubishiHeavy152Ac::convertSwingH()'],['../classIRMitsubishiHeavy88Ac.html#a8b995256a6651822731da7a912c01f19',1,'IRMitsubishiHeavy88Ac::convertSwingH()'],['../classIRPanasonicAc.html#abb17db3452ae347101dc6eaa8e84433b',1,'IRPanasonicAc::convertSwingH()']]], - ['convertswingv_182',['convertSwingV',['../classIRArgoAC.html#ac23ff32b45c3fc5402e7e303ad9b5d54',1,'IRArgoAC::convertSwingV()'],['../classIRDaikin2.html#aa3de8468b869989ec52a5f9f57ff4a77',1,'IRDaikin2::convertSwingV()'],['../classIRDaikin160.html#a615f599f3bc3e8dec5e5ef92512a2301',1,'IRDaikin160::convertSwingV()'],['../classIRGoodweatherAc.html#a3b37c04fd9b60b63052d93374fc15d4f',1,'IRGoodweatherAc::convertSwingV()'],['../classIRGreeAC.html#ae3717400d1dc0336bcc5fa17c1397a9b',1,'IRGreeAC::convertSwingV()'],['../classIRHaierAC.html#a34053c32ba50ff3b81b208d068efe2a4',1,'IRHaierAC::convertSwingV()'],['../classIRHaierACYRW02.html#a1f7dffe29fbe67989b2f425d629850db',1,'IRHaierACYRW02::convertSwingV()'],['../classIRMitsubishiAC.html#ab561f6421b2f3e0d92d9fab685da639a',1,'IRMitsubishiAC::convertSwingV()'],['../classIRMitsubishi136.html#a59dee0c57d3ca2bdf4c7839142d23059',1,'IRMitsubishi136::convertSwingV()'],['../classIRMitsubishi112.html#a95c545497e0acc6f78ec229a2ada9de0',1,'IRMitsubishi112::convertSwingV()'],['../classIRMitsubishiHeavy152Ac.html#a93f2678fce3b35cfe3e31221d3355291',1,'IRMitsubishiHeavy152Ac::convertSwingV()'],['../classIRMitsubishiHeavy88Ac.html#abeba5346e1fc2223838fbc5d3ed03f23',1,'IRMitsubishiHeavy88Ac::convertSwingV()'],['../classIRPanasonicAc.html#a024e64fe32848e9b0b72e9c04db0fd98',1,'IRPanasonicAc::convertSwingV()'],['../classIRPanasonicAc32.html#a0487f241fd414aa20d2f352203c72a26',1,'IRPanasonicAc32::convertSwingV()'],['../classIRSanyoAc.html#a944cd3b85d0510b5a0b0fa45604e5977',1,'IRSanyoAc::convertSwingV()']]], - ['cool_5fmode_183',['cool_mode',['../classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431',1,'IRArgoAC']]], - ['coolix_184',['coolix',['../classIRac.html#a4750db3b06db51f5a23c22538c41b7b3',1,'IRac::coolix()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae561d1d82d90c1b54a1a502431749873',1,'COOLIX(): IRremoteESP8266.h']]], - ['coolixprotocol_185',['CoolixProtocol',['../unionCoolixProtocol.html',1,'']]], - ['copyirparams_186',['copyIrParams',['../classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf',1,'IRrecv']]], - ['corona_187',['corona',['../classIRac.html#adcf2bdb1ef6dc057532ae7d188557dac',1,'IRac']]], - ['corona_5fac_188',['CORONA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf61f2c360f487309cfa466a44fcae106',1,'IRremoteESP8266.h']]], - ['coronaprotocol_189',['CoronaProtocol',['../unionCoronaProtocol.html',1,'']]], - ['coronasection_190',['CoronaSection',['../structCoronaSection.html',1,'']]], - ['countbits_191',['countBits',['../IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8cpp.html#aae8042367bb94df81672603270fa7342',1,'countBits(const uint64_t data, const uint8_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp'],['../IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365',1,'countBits(const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp']]], - ['crudenoisefilter_192',['crudeNoiseFilter',['../classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1',1,'IRrecv']]], - ['currentday_193',['CurrentDay',['../unionDaikinESPProtocol.html#ae47c0fdc9517ad7d16cda183c4317dcb',1,'DaikinESPProtocol']]], - ['currenttime_194',['CurrentTime',['../unionDaikinESPProtocol.html#af46e520574bb6a20c10a4cbe9bfeda27',1,'DaikinESPProtocol::CurrentTime()'],['../unionDaikin2Protocol.html#a4ccf50fbb1af1fbf0c20dbd1fb400f38',1,'Daikin2Protocol::CurrentTime()']]], - ['currhours_195',['CurrHours',['../unionHaierProtocol.html#a093d2441856e448462551ac7bc1b8d9b',1,'HaierProtocol']]], - ['currmins_196',['CurrMins',['../unionHaierProtocol.html#a70abde8bccafd39cf1a1506f63481893',1,'HaierProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.html deleted file mode 100644 index 06de1550e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.js deleted file mode 100644 index 88c4d9ecf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_4.js +++ /dev/null @@ -1,145 +0,0 @@ -var searchData= -[ - ['d_197',['D',['../unionMitsubishi152Protocol.html#ac493830f3bf09e178aa09b24368746c9',1,'Mitsubishi152Protocol']]], - ['daikin_198',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac::daikin()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'DAIKIN(): IRremoteESP8266.h']]], - ['daikin128_199',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac::daikin128()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'DAIKIN128(): IRremoteESP8266.h']]], - ['daikin128protocol_200',['Daikin128Protocol',['../unionDaikin128Protocol.html',1,'']]], - ['daikin152_201',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac::daikin152()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'DAIKIN152(): IRremoteESP8266.h']]], - ['daikin152protocol_202',['Daikin152Protocol',['../unionDaikin152Protocol.html',1,'']]], - ['daikin160_203',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac::daikin160()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'DAIKIN160(): IRremoteESP8266.h']]], - ['daikin160protocol_204',['Daikin160Protocol',['../unionDaikin160Protocol.html',1,'']]], - ['daikin176_205',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac::daikin176()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'DAIKIN176(): IRremoteESP8266.h']]], - ['daikin176protocol_206',['Daikin176Protocol',['../unionDaikin176Protocol.html',1,'']]], - ['daikin2_207',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac::daikin2()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'DAIKIN2(): IRremoteESP8266.h']]], - ['daikin216_208',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac::daikin216()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'DAIKIN216(): IRremoteESP8266.h']]], - ['daikin216protocol_209',['Daikin216Protocol',['../unionDaikin216Protocol.html',1,'']]], - ['daikin2protocol_210',['Daikin2Protocol',['../unionDaikin2Protocol.html',1,'']]], - ['daikin64_211',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac::daikin64()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'DAIKIN64(): IRremoteESP8266.h']]], - ['daikin64protocol_212',['Daikin64Protocol',['../unionDaikin64Protocol.html',1,'']]], - ['daikinespprotocol_213',['DaikinESPProtocol',['../unionDaikinESPProtocol.html',1,'']]], - ['data_214',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], - ['data0_215',['Data0',['../structCoronaSection.html#a975b14d8bc30807013714158ef7474ea',1,'CoronaSection']]], - ['data0inv_216',['Data0Inv',['../structCoronaSection.html#ab05024b8314929dcd8ccdda9b497be8c',1,'CoronaSection']]], - ['data1_217',['Data1',['../structCoronaSection.html#a59d97a1bc0a1be50b6f96c4d70673425',1,'CoronaSection']]], - ['data1inv_218',['Data1Inv',['../structCoronaSection.html#ada247bbfb60f24cd9e9a612c9621cbb4',1,'CoronaSection']]], - ['de_2dch_2eh_219',['de-CH.h',['../de-CH_8h.html',1,'']]], - ['de_2dde_2eh_220',['de-DE.h',['../de-DE_8h.html',1,'']]], - ['decode_221',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], - ['decode_5fresults_222',['decode_results',['../classdecode__results.html',1,'']]], - ['decode_5ftype_223',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], - ['decode_5ftype_5ft_224',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]], - ['decodeairwell_225',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], - ['decodeaiwarct501_226',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], - ['decodeamcor_227',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], - ['decodeargo_228',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], - ['decodecarrierac_229',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], - ['decodecarrierac40_230',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], - ['decodecarrierac64_231',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], - ['decodecoolix_232',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], - ['decodecoronaac_233',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], - ['decodedaikin_234',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], - ['decodedaikin128_235',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], - ['decodedaikin152_236',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], - ['decodedaikin160_237',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], - ['decodedaikin176_238',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], - ['decodedaikin2_239',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], - ['decodedaikin216_240',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], - ['decodedaikin64_241',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], - ['decodedelonghiac_242',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], - ['decodedenon_243',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], - ['decodedish_244',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], - ['decodedoshisha_245',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], - ['decodeecoclim_246',['decodeEcoclim',['../classIRrecv.html#a823387b95b6adb676e976a8eeaf01a0b',1,'IRrecv']]], - ['decodeelectraac_247',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], - ['decodeelitescreens_248',['decodeElitescreens',['../classIRrecv.html#ac830ece2c2c200b8c13fcd66828e2846',1,'IRrecv']]], - ['decodeepson_249',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], - ['decodefujitsuac_250',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], - ['decodegicable_251',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], - ['decodegoodweather_252',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], - ['decodegree_253',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], - ['decodehaierac_254',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], - ['decodehaierac176_255',['decodeHaierAC176',['../classIRrecv.html#af16bdb5515d931a2c55a65c35e95bb7c',1,'IRrecv']]], - ['decodehaieracyrw02_256',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], - ['decodehash_257',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], - ['decodehitachiac_258',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], - ['decodehitachiac1_259',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], - ['decodehitachiac3_260',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], - ['decodehitachiac424_261',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], - ['decodeinax_262',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], - ['decodejvc_263',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], - ['decodekelon_264',['decodeKelon',['../classIRrecv.html#a5d4194feeee9c15b1dff57a41d34098b',1,'IRrecv']]], - ['decodekelvinator_265',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], - ['decodelasertag_266',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], - ['decodelegopf_267',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], - ['decodelg_268',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], - ['decodelutron_269',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], - ['decodemagiquest_270',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], - ['decodemetz_271',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]], - ['decodemidea_272',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], - ['decodemidea24_273',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], - ['decodemilestag2_274',['decodeMilestag2',['../classIRrecv.html#adddf192765ba0d9c233833bdda9b266e',1,'IRrecv']]], - ['decodemirage_275',['decodeMirage',['../classIRrecv.html#aa88813f830a6ff6bfd6e7bde6728a3d5',1,'IRrecv']]], - ['decodemitsubishi_276',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], - ['decodemitsubishi112_277',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], - ['decodemitsubishi136_278',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], - ['decodemitsubishi2_279',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], - ['decodemitsubishiac_280',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], - ['decodemitsubishiheavy_281',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], - ['decodemultibrackets_282',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], - ['decodemwm_283',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], - ['decodenec_284',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], - ['decodeneoclima_285',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], - ['decodenikai_286',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], - ['decodepanasonic_287',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], - ['decodepanasonicac_288',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], - ['decodepanasonicac32_289',['decodePanasonicAC32',['../classIRrecv.html#a89ce20e483b1297cae05ab1ae96d24ec',1,'IRrecv']]], - ['decodepioneer_290',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], - ['decoderc5_291',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], - ['decoderc6_292',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], - ['decodercmm_293',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], - ['decodesamsung_294',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], - ['decodesamsung36_295',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], - ['decodesamsungac_296',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], - ['decodesanyoac_297',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]], - ['decodesanyolc7461_298',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]], - ['decodesharp_299',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], - ['decodesharpac_300',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], - ['decodesony_301',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], - ['decodesymphony_302',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], - ['decodetechnibelac_303',['decodeTechnibelAc',['../classIRrecv.html#a2f022741309ad814bf11aec440a838d0',1,'IRrecv']]], - ['decodeteco_304',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], - ['decodeteknopoint_305',['decodeTeknopoint',['../classIRrecv.html#a16765d6d73382423835b5beb39df7d2f',1,'IRrecv']]], - ['decodetoshibaac_306',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]], - ['decodetostate_307',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], - ['decodetranscold_308',['decodeTranscold',['../classIRrecv.html#a16c44538d7e01d9b118d983de39d18e3',1,'IRrecv']]], - ['decodetrotec_309',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], - ['decodetruma_310',['decodeTruma',['../classIRrecv.html#a76a85fb183cc943532bc9c589c42a17a',1,'IRrecv']]], - ['decodevestelac_311',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], - ['decodevoltas_312',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]], - ['decodewhirlpoolac_313',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], - ['decodewhynter_314',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], - ['decodexmp_315',['decodeXmp',['../classIRrecv.html#a9c7c5cdee244070d5999232a1bcdae60',1,'IRrecv']]], - ['decodezepeal_316',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], - ['defaultbits_317',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], - ['defaults_2eh_318',['defaults.h',['../defaults_8h.html',1,'']]], - ['degrees_319',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], - ['dehumidifiergrade_320',['DehumidifierGrade',['../unionKelonProtocol.html#ad43fd448895765e29c108df3233de7a6',1,'KelonProtocol']]], - ['delonghi_5fac_321',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]], - ['delonghiac_322',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], - ['delonghiprotocol_323',['DelonghiProtocol',['../unionDelonghiProtocol.html',1,'']]], - ['denon_324',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]], - ['deprecated_20list_325',['Deprecated List',['../deprecated.html',1,'']]], - ['dg11j13a_326',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]], - ['dg11j191_327',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]], - ['dipconfig_328',['DipConfig',['../unionEcoclimProtocol.html#a6635a22deb4d5db6b320828a183df6bd',1,'EcoclimProtocol']]], - ['disableirin_329',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], - ['disableofftimer_330',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a8cbdbc0de31b14f974cd8cd87f3ca54a',1,'IRDaikin2::disableOffTimer()'],['../classIREcoclimAc.html#a8278eec1b47aff9304cb255be5b561bb',1,'IREcoclimAc::disableOffTimer()']]], - ['disableontimer_331',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#a170a1e9ddb7873dc1392184a85387cc3',1,'IRDaikin2::disableOnTimer()'],['../classIREcoclimAc.html#adddfdb01de28e0dda5f8c919ee0cd0fa',1,'IREcoclimAc::disableOnTimer()']]], - ['disablesensor_332',['disableSensor',['../unionMideaProtocol.html#a20cc2079eae404c980cc75101b4a3116',1,'MideaProtocol']]], - ['disablesleeptimer_333',['disableSleepTimer',['../classIRDaikin2.html#a152532ef9d905e26930ae145a9623877',1,'IRDaikin2']]], - ['dish_334',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]], - ['display_335',['Display',['../unionSamsungProtocol.html#aac97ebabee022e772aa00d4357079eb4',1,'SamsungProtocol']]], - ['displaytemp_336',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]], - ['doshisha_337',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]], - ['doxygen_5findex_2emd_338',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.html deleted file mode 100644 index 2544c4e5b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.js deleted file mode 100644 index f5e29c10d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_5.js +++ /dev/null @@ -1,42 +0,0 @@ -var searchData= -[ - ['ecoclim_339',['ecoclim',['../classIRac.html#a3ef3fd7283a1578963ca314a6f1cbd71',1,'IRac::ecoclim()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab7e60c2218bac76695bcff178366ec8d',1,'ECOCLIM(): IRremoteESP8266.h']]], - ['ecoclimprotocol_340',['EcoclimProtocol',['../unionEcoclimProtocol.html',1,'']]], - ['econo_341',['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()'],['../unionNeoclimaProtocol.html#ae6e84df0fe5279729c8980c68db35c50',1,'NeoclimaProtocol::Econo()'],['../unionTcl112Protocol.html#a5791daa5a91ae0bfff5db2b42472b218',1,'Tcl112Protocol::Econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()'],['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()']]], - ['ecoturbo_342',['EcoTurbo',['../unionToshibaProtocol.html#a59ebff5274a795d94fdbc735f847274d',1,'ToshibaProtocol']]], - ['elapsed_343',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]], - ['electra_344',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]], - ['electra_5fac_345',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], - ['electraprotocol_346',['ElectraProtocol',['../unionElectraProtocol.html',1,'']]], - ['elitescreens_347',['ELITESCREENS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafebe19d5453be4c99de8c031508b7cb1',1,'IRremoteESP8266.h']]], - ['en_2dau_2eh_348',['en-AU.h',['../en-AU_8h.html',1,'']]], - ['en_2die_2eh_349',['en-IE.h',['../en-IE_8h.html',1,'']]], - ['en_2duk_2eh_350',['en-UK.h',['../en-UK_8h.html',1,'']]], - ['en_2dus_2eh_351',['en-US.h',['../en-US_8h.html',1,'']]], - ['enableirin_352',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]], - ['enableirout_353',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]], - ['enableofftimer_354',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]], - ['enableontimer_355',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]], - ['enablesleeptimer_356',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]], - ['encodedoshisha_357',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]], - ['encodejvc_358',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]], - ['encodelg_359',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]], - ['encodemagiquest_360',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]], - ['encodemetz_361',['encodeMetz',['../classIRsend.html#a99c88ec9f8426003738a9a1682595b9a',1,'IRsend']]], - ['encodenec_362',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]], - ['encodepanasonic_363',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]], - ['encodepioneer_364',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]], - ['encoderc5_365',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]], - ['encoderc5x_366',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]], - ['encoderc6_367',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]], - ['encodesamsung_368',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]], - ['encodesanyolc7461_369',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]], - ['encodesharp_370',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]], - ['encodesony_371',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]], - ['encodetime_372',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]], - ['ensurepower_373',['ensurePower',['../classIRKelonAc.html#ad6265f10ad249f82b3fcf97f42213274',1,'IRKelonAc']]], - ['epson_374',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]], - ['es_2des_2eh_375',['es-ES.h',['../es-ES_8h.html',1,'']]], - ['eye_376',['Eye',['../unionDaikin2Protocol.html#aa8351138b8db3b8be5f40d1515802381',1,'Daikin2Protocol::Eye()'],['../unionNeoclimaProtocol.html#a61b0055d4d939dc85ee204e4f3b6ab46',1,'NeoclimaProtocol::Eye()']]], - ['eyeauto_377',['EyeAuto',['../unionDaikin2Protocol.html#a22f2288452065069018bef94d2505ab7',1,'Daikin2Protocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.html deleted file mode 100644 index 43f14eab3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.js deleted file mode 100644 index 4c1b23a0f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_6.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['fahrenheit_378',['Fahrenheit',['../unionDelonghiProtocol.html#a8fe11756b36ba6f55eaccf553cc0dea3',1,'DelonghiProtocol::Fahrenheit()'],['../unionFujitsuProtocol.html#a23e44e249fba92fdf6b723e2e3a38218',1,'FujitsuProtocol::Fahrenheit()']]], - ['fahrenheittocelsius_379',['fahrenheitToCelsius',['../IRutils_8cpp.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp'],['../IRutils_8h.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp']]], - ['fan_380',['Fan',['../unionAirwellProtocol.html#a7d38043e982231fb6a331d72f7407c10',1,'AirwellProtocol::Fan()'],['../unionAmcorProtocol.html#a208edfb233f0747b5abe8911fe55bfb3',1,'AmcorProtocol::Fan()'],['../unionArgoProtocol.html#a9247f87997f4fda42940ca204b8363d6',1,'ArgoProtocol::Fan()'],['../unionCarrierProtocol.html#ab7e563e2015627a65259b0190908034b',1,'CarrierProtocol::Fan()'],['../unionCoolixProtocol.html#ad534acc857b6693327880b8a420da4dc',1,'CoolixProtocol::Fan()'],['../unionCoronaProtocol.html#a981185f964fcaa1dc657a7ad770c446d',1,'CoronaProtocol::Fan()'],['../unionDaikinESPProtocol.html#ad93d41ea1d921579aead9d8be78f52ac',1,'DaikinESPProtocol::Fan()'],['../unionDaikin2Protocol.html#a7928d4eecb9d5ba004ccedb304c06829',1,'Daikin2Protocol::Fan()'],['../unionDaikin216Protocol.html#a6da4ec3880fbd895aa969b8daf4ed7cc',1,'Daikin216Protocol::Fan()'],['../unionDaikin160Protocol.html#a263a50340360eff5bb161658046fd968',1,'Daikin160Protocol::Fan()'],['../unionDaikin176Protocol.html#aadaabe83d23d12554d3431fa0939c18c',1,'Daikin176Protocol::Fan()'],['../unionDaikin128Protocol.html#ac5cf543511bf5baaaa1ad593c726640f',1,'Daikin128Protocol::Fan()'],['../unionDaikin152Protocol.html#aa880c1bf93598c7d2c355ce9e8af79f1',1,'Daikin152Protocol::Fan()'],['../unionDaikin64Protocol.html#a11aceeeaf3b80ee0ce9aa23b88bcb2e6',1,'Daikin64Protocol::Fan()'],['../unionDelonghiProtocol.html#ab3a1bc23e8349851f7d813b117426518',1,'DelonghiProtocol::Fan()'],['../unionEcoclimProtocol.html#ac3dadf32f707065b79c7ff0677c9f192',1,'EcoclimProtocol::Fan()'],['../unionElectraProtocol.html#a4aca91a79fad6a2ce08ac6e5f854ab96',1,'ElectraProtocol::Fan()'],['../unionFujitsuProtocol.html#a649627976dbf420ab80c9a73e9d78d31',1,'FujitsuProtocol::Fan()'],['../unionGoodweatherProtocol.html#a7dd02188438a4e2b37c70a2b3913e550',1,'GoodweatherProtocol::Fan()'],['../unionGreeProtocol.html#af6f917228f457a24e70256d7c132289c',1,'GreeProtocol::Fan()'],['../unionHaierProtocol.html#a44e6a58782f4c6d5e532c715e9050b5b',1,'HaierProtocol::Fan()'],['../unionHaierYRW02Protocol.html#a4ecca9653d14ccd283e44f6e385ff36a',1,'HaierYRW02Protocol::Fan()'],['../unionHitachiProtocol.html#ae451ce39e2ba32da81580c2bf5c5d6d9',1,'HitachiProtocol::Fan()'],['../unionHitachi424Protocol.html#a45907766ba99132b300f50f7c194fee6',1,'Hitachi424Protocol::Fan()'],['../unionHitachi1Protocol.html#ad74c329496f93855ffec6e0a16cda338',1,'Hitachi1Protocol::Fan()'],['../unionKelonProtocol.html#a638145dbdf9d30d20796a9d5e931a4d8',1,'KelonProtocol::Fan()'],['../unionKelvinatorProtocol.html#a720843565363129441f5db98a166f439',1,'KelvinatorProtocol::Fan()'],['../unionLGProtocol.html#ad8132d6e5603d1eb3b51b28165fe3803',1,'LGProtocol::Fan()'],['../unionMideaProtocol.html#a04b0f344ec9b7cf2bdbd2c530b409fcb',1,'MideaProtocol::Fan()'],['../unionMitsubishi144Protocol.html#a0bc3dfc7954983752b0e30abb84c00e6',1,'Mitsubishi144Protocol::Fan()'],['../unionMitsubishi136Protocol.html#ae39096aaafd4e93a122a1f9942668031',1,'Mitsubishi136Protocol::Fan()'],['../unionMitsubishi112Protocol.html#af559efed44be81781556e2ce1b668fae',1,'Mitsubishi112Protocol::Fan()'],['../unionMitsubishi152Protocol.html#a2b91b3185aa9f05d4b32b1628c693c3f',1,'Mitsubishi152Protocol::Fan()'],['../unionMitsubishi88Protocol.html#a0b895ed43f664b7298d6ab7b2eda8e06',1,'Mitsubishi88Protocol::Fan()'],['../unionNeoclimaProtocol.html#acdf888082bd07c6b1b061f928295bdd9',1,'NeoclimaProtocol::Fan()'],['../unionPanasonicAc32Protocol.html#aff4c3aeb5a2724653c334f5ea75b6435',1,'PanasonicAc32Protocol::Fan()'],['../unionSamsungProtocol.html#a5eae02eead5032f6fa7ce3bc891122b6',1,'SamsungProtocol::Fan()'],['../unionSanyoProtocol.html#aaf3dc81d03fcb6ad893cd5647cd95213',1,'SanyoProtocol::Fan()'],['../unionSharpProtocol.html#acb0819fc971fc7d7206785aaad4b82b2',1,'SharpProtocol::Fan()'],['../unionTcl112Protocol.html#a8aefa398eb58112b2f39ead30c3953a9',1,'Tcl112Protocol::Fan()'],['../unionTechnibelProtocol.html#a7e78bd68b747186143648fedbe29f75a',1,'TechnibelProtocol::Fan()'],['../unionTecoProtocol.html#a9be4d4e129beee82ff43ac6b09dd7f58',1,'TecoProtocol::Fan()'],['../unionToshibaProtocol.html#ade6e7b0543cd68c41cff2fc240f874ff',1,'ToshibaProtocol::Fan()'],['../unionTranscoldProtocol.html#a1b3c9da9be9dfe9c3306f562655900e1',1,'TranscoldProtocol::Fan()'],['../unionTrotecProtocol.html#ac42d9f97612c5b6f1aa42d95639b6492',1,'TrotecProtocol::Fan()'],['../unionTrumaProtocol.html#a3199edc177e0308ba0c2aa3b3485841d',1,'TrumaProtocol::Fan()'],['../unionVestelProtocol.html#a6c2a667af849583af46b3f40ca56bca3',1,'VestelProtocol::Fan()'],['../unionWhirlpoolProtocol.html#ad81249077201513dc772e6baba34c363',1,'WhirlpoolProtocol::Fan()']]], - ['fanauto_381',['FanAuto',['../unionMitsubishi144Protocol.html#a50a10d24ada3c67f778438e3dae9fe73',1,'Mitsubishi144Protocol']]], - ['fanchange_382',['FanChange',['../unionTechnibelProtocol.html#a2a733692b8c56270ec1b94e450caf4a8',1,'TechnibelProtocol']]], - ['fanspeed_383',['FanSpeed',['../unionVoltasProtocol.html#a7a2326d3ecf316e1a4e0a5db0523cad6',1,'VoltasProtocol::FanSpeed()'],['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t::fanspeed()']]], - ['fanspeed_5ft_384',['fanspeed_t',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383',1,'stdAc']]], - ['fanspeedtostring_385',['fanspeedToString',['../classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6',1,'IRac']]], - ['filter_386',['Filter',['../unionFujitsuProtocol.html#a00c5204defd34eb3e8d1d8a53ccd7810',1,'FujitsuProtocol::Filter()'],['../unionMitsubishi152Protocol.html#ac228a2f41e4267c919df440bde470a86',1,'Mitsubishi152Protocol::Filter()'],['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t::filter()']]], - ['fixchecksum_387',['fixChecksum',['../classIRPanasonicAc.html#aa40bef35000ddf6d14e286b3f2044897',1,'IRPanasonicAc']]], - ['fixup_388',['fixup',['../classIRGreeAC.html#a5bbdcc83f9d49e32379cd27cad0ba130',1,'IRGreeAC::fixup()'],['../classIRKelvinatorAC.html#a389af589003c39794ae5d4bd572fa485',1,'IRKelvinatorAC::fixup()']]], - ['flap_389',['Flap',['../unionArgoProtocol.html#ab7d5a6a5d6849160b5980de7615dd5d1',1,'ArgoProtocol']]], - ['flap_5fmode_390',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]], - ['follow_391',['Follow',['../unionNeoclimaProtocol.html#a8d506fa694026184d0c82016e99ae3c0',1,'NeoclimaProtocol']]], - ['footer_392',['Footer',['../unionTechnibelProtocol.html#a5e575790ca9af8f8975065aee10fe44e',1,'TechnibelProtocol']]], - ['fr_2dfr_2eh_393',['fr-FR.h',['../fr-FR_8h.html',1,'']]], - ['fresh_394',['Fresh',['../unionNeoclimaProtocol.html#ad521881ecb1973370c82d63d6b917023',1,'NeoclimaProtocol']]], - ['freshair_395',['FreshAir',['../unionDaikin2Protocol.html#a6cfb49a475f49f34ad0a239b10b73385',1,'Daikin2Protocol']]], - ['freshairhigh_396',['FreshAirHigh',['../unionDaikin2Protocol.html#a538ce0c2496f8514fbb4ea1d1706e210',1,'Daikin2Protocol']]], - ['fujitsu_397',['fujitsu',['../classIRac.html#ae951653fc030f30a989dd40f53d30b35',1,'IRac']]], - ['fujitsu_5fac_398',['FUJITSU_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8cf99a3a8776d644b78313306a2108c',1,'IRremoteESP8266.h']]], - ['fujitsu_5fac_5fremote_5fmodel_5ft_399',['fujitsu_ac_remote_model_t',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0',1,'IRsend.h']]], - ['fujitsuprotocol_400',['FujitsuProtocol',['../unionFujitsuProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.html deleted file mode 100644 index af52f82a4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.js deleted file mode 100644 index 03deb8c1a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_7.js +++ /dev/null @@ -1,137 +0,0 @@ -var searchData= -[ - ['ge6711ar2853m_401',['GE6711AR2853M',['../IRsend_8h.html#a50c54713e16502d280723334879dc83bada534bddbb58907faa6c7eae385ec790',1,'IRsend.h']]], - ['get10cheat_402',['get10CHeat',['../classIRFujitsuAC.html#a3c096987c44aa7dcc3c682fb372f585a',1,'IRFujitsuAC']]], - ['get3d_403',['get3D',['../classIRMitsubishiHeavy152Ac.html#aa1fc0f9cb991ae5fa4320bfe75037791',1,'IRMitsubishiHeavy152Ac::get3D()'],['../classIRMitsubishiHeavy88Ac.html#acdebce895deab9d8c19b63e43dcd55ce',1,'IRMitsubishiHeavy88Ac::get3D()']]], - ['get8cheat_404',['get8CHeat',['../classIRNeoclimaAc.html#abebfca9eeb51d23d194162a6570b1d39',1,'IRNeoclimaAc']]], - ['getbeep_405',['getBeep',['../classIRDaikin2.html#ac952fe406ec76350b80b94c1237d0db9',1,'IRDaikin2::getBeep()'],['../classIRSamsungAc.html#a17412aeb213d2800fa106b7af6c3933f',1,'IRSamsungAc::getBeep()'],['../classIRSanyoAc.html#ae7f3e043b55bdb1a54d1fd29a025a893',1,'IRSanyoAc::getBeep()']]], - ['getbit_406',['getBit',['../namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6',1,'irutils::getBit(const uint64_t data, const uint8_t position, const uint8_t size)'],['../namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee',1,'irutils::getBit(const uint8_t data, const uint8_t position)']]], - ['getboost_407',['getBoost',['../classIRDelonghiAc.html#a6f49f15cba66d184b9bdc950114d4ff0',1,'IRDelonghiAc']]], - ['getbreeze_408',['getBreeze',['../classIRSamsungAc.html#ae442d9d84a1058196620ab6f0c994cc7',1,'IRSamsungAc']]], - ['getbufsize_409',['getBufSize',['../classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e',1,'IRrecv']]], - ['getbutton_410',['getButton',['../classIRHaierACYRW02.html#a58f8df6244a91d02e109b91197d535b9',1,'IRHaierACYRW02::getButton()'],['../classIRHitachiAc424.html#a8f3342235b1f69fdcdc942147ac3a909',1,'IRHitachiAc424::getButton()'],['../classIRNeoclimaAc.html#a21c11784fc1504688164b2c8a01a8e06',1,'IRNeoclimaAc::getButton()']]], - ['getcelsius_411',['getCelsius',['../classIRFujitsuAC.html#af91371d9fc03c014dad0a6f2abb56df1',1,'IRFujitsuAC']]], - ['getclean_412',['getClean',['../classIRCoolixAC.html#a7f4c287068939ff94f03a005d9c7e4b4',1,'IRCoolixAC::getClean()'],['../classIRDaikin2.html#a742d3167334e11c6386906ed7f4ba044',1,'IRDaikin2::getClean()'],['../classIRElectraAc.html#af48c261ceb93568010c57a61bf0f882d',1,'IRElectraAc::getClean()'],['../classIRFujitsuAC.html#a8b356ce721c4b7d4845d27f43adb0e2a',1,'IRFujitsuAC::getClean()'],['../classIRMitsubishiHeavy152Ac.html#acecd9523961d07dd0cf7644a7008e59f',1,'IRMitsubishiHeavy152Ac::getClean()'],['../classIRMitsubishiHeavy88Ac.html#a6eeaeca11d48df313f8da364e2a91e2e',1,'IRMitsubishiHeavy88Ac::getClean()'],['../classIRSamsungAc.html#a8980cc9a230a78ec76a190056a8b9be6',1,'IRSamsungAc::getClean()'],['../classIRSharpAc.html#a1e3be9f825418843393c15715944da63',1,'IRSharpAc::getClean()']]], - ['getclock_413',['getClock',['../classIRDaikin128.html#a21ac762a97228b2183d247e27b9f471d',1,'IRDaikin128::getClock()'],['../classIRDaikin64.html#aafc78cfd252453c559080eb4b1bdc7a2',1,'IRDaikin64::getClock()'],['../classIREcoclimAc.html#a2313035ff6dfece5dc716bc59c95f843',1,'IREcoclimAc::getClock()'],['../classIRMitsubishiAC.html#ad6ba27d19cce9528ce869c8a9b9752f2',1,'IRMitsubishiAC::getClock()'],['../classIRPanasonicAc.html#a084479e8f23f7dbb8f155209b36efb3b',1,'IRPanasonicAc::getClock()'],['../classIRWhirlpoolAc.html#a97ab57772b05bc674c43000a57bb05de',1,'IRWhirlpoolAc::getClock()']]], - ['getcmd_414',['getCmd',['../classIRFujitsuAC.html#a59d6739d40ebb0beaef3504de7cecbfd',1,'IRFujitsuAC']]], - ['getcomfort_415',['getComfort',['../classIRDaikinESP.html#a61a4d8bf064dc4f2f1af768062950931',1,'IRDaikinESP::getComfort()'],['../classIRDaikin152.html#a7021aedd84115062149369a167f76d00',1,'IRDaikin152::getComfort()']]], - ['getcommand_416',['getCommand',['../classIRGoodweatherAc.html#ac46149fab1211f16891ffe31fa55b1b8',1,'IRGoodweatherAc::getCommand()'],['../classIRHaierAC.html#a0e9bea37c9f3a43ad205994b396d5cd2',1,'IRHaierAC::getCommand()'],['../classIRWhirlpoolAc.html#ac5f07ffc689770b0327279df09ac1f1e',1,'IRWhirlpoolAc::getCommand()']]], - ['getcorrectedrawlength_417',['getCorrectedRawLength',['../IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp']]], - ['getcurrentday_418',['getCurrentDay',['../classIRDaikinESP.html#a2f4db9739f130e013b047847bb01e4a6',1,'IRDaikinESP']]], - ['getcurrenttime_419',['getCurrentTime',['../classIRDaikinESP.html#aa32d285bba6557a9f375b309ea697dec',1,'IRDaikinESP::getCurrentTime()'],['../classIRDaikin2.html#ac6350e7bc0af04e7a5e49b8d35c5883a',1,'IRDaikin2::getCurrentTime()']]], - ['getcurrtime_420',['getCurrTime',['../classIRHaierAC.html#ace3a6ad8816dbf5d4a9f8595cc621b09',1,'IRHaierAC']]], - ['getdisplay_421',['getDisplay',['../classIRSamsungAc.html#a05e2c47fc5c63782f2420feb1337014c',1,'IRSamsungAc']]], - ['getdisplaytempsource_422',['getDisplayTempSource',['../classIRGreeAC.html#a2ed802a668c53499133d7b5be9b287ec',1,'IRGreeAC']]], - ['getdrygrade_423',['getDryGrade',['../classIRKelonAc.html#abd5fa54411ed2bd54da47f7e71bb9411',1,'IRKelonAc']]], - ['getecono_424',['getEcono',['../classIRCoronaAc.html#a4b379e29e5784c33a6ee73b3e81844e4',1,'IRCoronaAc::getEcono()'],['../classIRDaikinESP.html#af683032a0602275c3e64aa1eaec8bce0',1,'IRDaikinESP::getEcono()'],['../classIRDaikin2.html#aa0471ba51480c60af811b157c98945b8',1,'IRDaikin2::getEcono()'],['../classIRDaikin128.html#a4f1de86c0086aeb02444c11ff12dfb90',1,'IRDaikin128::getEcono()'],['../classIRDaikin152.html#a55f1ba2167dfab3571c8d9cc8df9da1b',1,'IRDaikin152::getEcono()'],['../classIRMitsubishiHeavy152Ac.html#ad9269cfab5a568131885133993d76ae7',1,'IRMitsubishiHeavy152Ac::getEcono()'],['../classIRMitsubishiHeavy88Ac.html#a589bd953d2f7e73c5e2802d145891d7c',1,'IRMitsubishiHeavy88Ac::getEcono()'],['../classIRNeoclimaAc.html#aed7b9c7b8a1686a1e2850c9b9347d868',1,'IRNeoclimaAc::getEcono()'],['../classIRTcl112Ac.html#a7a097fd243a9f0c9f965d2299996cd32',1,'IRTcl112Ac::getEcono()'],['../classIRToshibaAC.html#a13c884468baf27828c61ffd526d0e297',1,'IRToshibaAC::getEcono()'],['../classIRVoltas.html#a7849e211bf16bf5bd6d0d940bd3e6431',1,'IRVoltas::getEcono()']]], - ['geteconotoggle_425',['getEconoToggle',['../classIRMideaAC.html#a69839c88534920e667e56750c83f926f',1,'IRMideaAC::getEconoToggle()'],['../classIRSharpAc.html#a39c6c18289eb2deee80fa7584d19b89a',1,'IRSharpAc::getEconoToggle()']]], - ['getenablesensortemp_426',['getEnableSensorTemp',['../classIRMideaAC.html#a313effc2012af55df719edff56c9ccea',1,'IRMideaAC']]], - ['geteye_427',['getEye',['../classIRDaikin2.html#a7de3421d44db047fdbdfa6bad20a71e8',1,'IRDaikin2::getEye()'],['../classIRNeoclimaAc.html#a2a5d21b3109a9105db9e2445bf8358b4',1,'IRNeoclimaAc::getEye()']]], - ['geteyeauto_428',['getEyeAuto',['../classIRDaikin2.html#ad3de9384586e091b85065a1f2c359295',1,'IRDaikin2']]], - ['getfan_429',['getFan',['../classIRAirwellAc.html#aa24f7ff64fcb1cea358f7b5288eb7aa1',1,'IRAirwellAc::getFan()'],['../classIRAmcorAc.html#a06e64e42bb7bc26afc17e504bf57616a',1,'IRAmcorAc::getFan()'],['../classIRArgoAC.html#aee8a1870fc079b0c8679c403b6cd6806',1,'IRArgoAC::getFan()'],['../classIRCarrierAc64.html#a0426f9c043b65b0d0d870f7ef5474ed9',1,'IRCarrierAc64::getFan()'],['../classIRCoolixAC.html#a2ef6155c4a8880481a996fdf9462a8e9',1,'IRCoolixAC::getFan()'],['../classIRCoronaAc.html#aaf36811405387c3fb14a8019ce0ffb4b',1,'IRCoronaAc::getFan()'],['../classIRDaikinESP.html#a35585fa7c6742031a1c23b724096fa2b',1,'IRDaikinESP::getFan()'],['../classIRDaikin2.html#a5ba2b2a1cd20916b3dc0f5f57dd265e3',1,'IRDaikin2::getFan()'],['../classIRDaikin216.html#abc21da328afcf0831d6cd834c954f7a0',1,'IRDaikin216::getFan()'],['../classIRDaikin160.html#a2b0d39a508521a2ee982ed8d012b5e07',1,'IRDaikin160::getFan()'],['../classIRDaikin176.html#af4d75131b7912d499af590fdc2be03d5',1,'IRDaikin176::getFan()'],['../classIRDaikin128.html#afda28bc88f4b4f1db5ee4229634cef8c',1,'IRDaikin128::getFan()'],['../classIRDaikin152.html#a3e40410ddd64a6417ad4a43301ad8c09',1,'IRDaikin152::getFan()'],['../classIRDaikin64.html#ac510c4758eb52d703840e85c88108bfb',1,'IRDaikin64::getFan()'],['../classIRDelonghiAc.html#a897dd29a58fed41abb4a6bbe10527188',1,'IRDelonghiAc::getFan()'],['../classIREcoclimAc.html#a61740f93abcbb3af61b89ed754d71700',1,'IREcoclimAc::getFan()'],['../classIRElectraAc.html#a5d6c472701f93579341c34f2b14a5238',1,'IRElectraAc::getFan()'],['../classIRGoodweatherAc.html#a58839f0a332a1db1d808c608aa718031',1,'IRGoodweatherAc::getFan()'],['../classIRGreeAC.html#af5586de05500d3f11307a387ef91bb22',1,'IRGreeAC::getFan()'],['../classIRHaierAC.html#a20efaa79ca7ead0b08f19a4b41c198aa',1,'IRHaierAC::getFan()'],['../classIRHaierACYRW02.html#a543f7d2ce346b94a7ae29d50d1189f27',1,'IRHaierACYRW02::getFan()'],['../classIRHitachiAc.html#addc6c94839c7d994573029b66e7fbe94',1,'IRHitachiAc::getFan()'],['../classIRHitachiAc1.html#a7cb01dc7abf8f7c45c8690134c71e7a8',1,'IRHitachiAc1::getFan()'],['../classIRHitachiAc424.html#a2d105be99f05794ce845db06e17bffcd',1,'IRHitachiAc424::getFan()'],['../classIRKelonAc.html#adba50d061f4f6f2eb1dca61355c3017e',1,'IRKelonAc::getFan()'],['../classIRKelvinatorAC.html#ae96f43f14a7df9f23be734d1f9b09b37',1,'IRKelvinatorAC::getFan()'],['../classIRLgAc.html#a38a3fed9066641cd80208d330c92ef9b',1,'IRLgAc::getFan()'],['../classIRMideaAC.html#a38a0c175fead133026a0079c36e3e8ce',1,'IRMideaAC::getFan()'],['../classIRMitsubishiAC.html#ad7bda7fc858dd11c242f563bdda9c8a9',1,'IRMitsubishiAC::getFan()'],['../classIRMitsubishi136.html#aed870bd56c47808c6b3dae878ba6cf7f',1,'IRMitsubishi136::getFan()'],['../classIRMitsubishi112.html#a18bf39ff526ead69eb91854c5f0b48cc',1,'IRMitsubishi112::getFan()'],['../classIRMitsubishiHeavy152Ac.html#ae4e0a08c61289443fdd3e928b91568b3',1,'IRMitsubishiHeavy152Ac::getFan()'],['../classIRMitsubishiHeavy88Ac.html#a43f25d927d54712384a632228544c124',1,'IRMitsubishiHeavy88Ac::getFan()'],['../classIRNeoclimaAc.html#a60c4e4b50c2bcd07991eaff73c031834',1,'IRNeoclimaAc::getFan()'],['../classIRPanasonicAc.html#a302ba64400c820a5a0d822315516564a',1,'IRPanasonicAc::getFan()'],['../classIRPanasonicAc32.html#a03a6d54ef606dcb67931a7e42532fb34',1,'IRPanasonicAc32::getFan()'],['../classIRSamsungAc.html#a924701fc0a10c1bae8a93749658abff5',1,'IRSamsungAc::getFan()'],['../classIRSanyoAc.html#a01ecbebadcdb81220ab1f2cbe239c6c0',1,'IRSanyoAc::getFan()'],['../classIRSharpAc.html#ad9881478c89a4852f2fccb7623843b4c',1,'IRSharpAc::getFan()'],['../classIRTcl112Ac.html#a4c7f0b599c415406274bfba4f0e65984',1,'IRTcl112Ac::getFan()'],['../classIRTechnibelAc.html#a71a97d77ffe257518d9a72b716bd5373',1,'IRTechnibelAc::getFan()'],['../classIRTecoAc.html#ad7c6b4f2a79582deb67e4928796392a6',1,'IRTecoAc::getFan()'],['../classIRToshibaAC.html#abd5191c603faef027ad6bc4b8abe82ae',1,'IRToshibaAC::getFan()'],['../classIRTranscoldAc.html#a084be3ebe2b371a4b7ff3d08f287d56e',1,'IRTranscoldAc::getFan()'],['../classIRTrotecESP.html#af7546138743b6e7a63e5566d3a6ba6bf',1,'IRTrotecESP::getFan()'],['../classIRTrumaAc.html#a5e96e2b872dcb6cccff9f8231b3374c4',1,'IRTrumaAc::getFan()'],['../classIRVestelAc.html#a510b05386df2578a3241929cffcfa13e',1,'IRVestelAc::getFan()'],['../classIRVoltas.html#afbe5c3cda5fa2233b29a582de71d4723',1,'IRVoltas::getFan()'],['../classIRWhirlpoolAc.html#aa1a1077dd30b0b244c90ac8c7387e33c',1,'IRWhirlpoolAc::getFan()']]], - ['getfanspeed_430',['getFanSpeed',['../classIRFujitsuAC.html#a38016d2f305ff0d17c57e60c77ad77f8',1,'IRFujitsuAC']]], - ['getfilter_431',['getFilter',['../classIRFujitsuAC.html#af76f83d0e31fd33caf2360e4f26bdfe4',1,'IRFujitsuAC::getFilter()'],['../classIRMitsubishiHeavy152Ac.html#aea4bdebc0a2b63bb621cb9236e113bd2',1,'IRMitsubishiHeavy152Ac::getFilter()']]], - ['getflap_432',['getFlap',['../classIRArgoAC.html#ae0cb1c5df94fc38cccc14f313296c280',1,'IRArgoAC']]], - ['getfollow_433',['getFollow',['../classIRNeoclimaAc.html#a7223965174db938d90b5324e3d601d4e',1,'IRNeoclimaAc']]], - ['getfresh_434',['getFresh',['../classIRNeoclimaAc.html#ad22722bde267db7ecfd99298bde0165e',1,'IRNeoclimaAc']]], - ['getfreshair_435',['getFreshAir',['../classIRDaikin2.html#a5a7f38e358d0968d9af6ffca76248330',1,'IRDaikin2']]], - ['getfreshairhigh_436',['getFreshAirHigh',['../classIRDaikin2.html#a0e1d1a46a38c722943bc212cdc09ab97',1,'IRDaikin2']]], - ['gethealth_437',['getHealth',['../classIRHaierAC.html#aff4e7de97c375daf881249eefc1c60f8',1,'IRHaierAC::getHealth()'],['../classIRHaierACYRW02.html#a3de686bdee579703b8203acec3353b01',1,'IRHaierACYRW02::getHealth()'],['../classIRTcl112Ac.html#a37015a710d0c3b6278874fd5a5673e0f',1,'IRTcl112Ac::getHealth()']]], - ['gethold_438',['getHold',['../classIRNeoclimaAc.html#adbbd41de5f5f4cd7fb89ebc6e20e81cd',1,'IRNeoclimaAc']]], - ['gethumid_439',['getHumid',['../classIRTecoAc.html#a47072d5984da8284b28ac9ab093f275c',1,'IRTecoAc']]], - ['getid_440',['getId',['../classIRFujitsuAC.html#a51369012283f84ff52d733138a690340',1,'IRFujitsuAC']]], - ['getifeel_441',['getIFeel',['../classIRGreeAC.html#a73a8de0e0e9d7fc8ce9a0b44cffc2357',1,'IRGreeAC::getIFeel()'],['../classIRArgoAC.html#ac1b4819a4cc035b7cc8317892a412348',1,'IRArgoAC::getiFeel()']]], - ['getinternalstatelength_442',['getInternalStateLength',['../classIRToshibaAC.html#a146624d75ab5f6c23a75fe87918edadd',1,'IRToshibaAC']]], - ['getion_443',['getIon',['../classIRNeoclimaAc.html#a4e76b4f123a6138712834c12ef8a6f50',1,'IRNeoclimaAc::getIon()'],['../classIRPanasonicAc.html#a6d6909b7b96815c227f0009dcbd3ce8c',1,'IRPanasonicAc::getIon()'],['../classIRSamsungAc.html#a4b29304810f8e619123553ffd40b35c1',1,'IRSamsungAc::getIon()'],['../classIRSharpAc.html#a63739c8f8aea457fbaa260983a1b828d',1,'IRSharpAc::getIon()'],['../classIRVestelAc.html#a9b31dcca090f98b575a97fd6cb397eb3',1,'IRVestelAc::getIon()']]], - ['getionfilter_444',['getIonFilter',['../classIRKelvinatorAC.html#ae1cb7be762f306bd007976dc0feb788e',1,'IRKelvinatorAC']]], - ['getled_445',['getLed',['../classIRCoolixAC.html#a5eb13d05cf8aff9cfe8d5f437b8042e4',1,'IRCoolixAC']]], - ['getlight_446',['getLight',['../classIRDaikin2.html#a100812aedfaa32830dfb59c7857b4af5',1,'IRDaikin2::getLight()'],['../classIRGoodweatherAc.html#addd2e3cb3824ce4ca8f15bee468b1a16',1,'IRGoodweatherAc::getLight()'],['../classIRGreeAC.html#a65293afe8c8c0c95a47d577326d06893',1,'IRGreeAC::getLight()'],['../classIRKelvinatorAC.html#aafda5580f46145f2b1843d1d4b7dc055',1,'IRKelvinatorAC::getLight()'],['../classIRNeoclimaAc.html#a2c1cd7460cd82b302f9e1373c7ffe738',1,'IRNeoclimaAc::getLight()'],['../classIRTcl112Ac.html#a058bdb5e3191ba900aeb68a02290ef7f',1,'IRTcl112Ac::getLight()'],['../classIRTecoAc.html#ab5135b0873c172036f1a2426c96504ce',1,'IRTecoAc::getLight()'],['../classIRVoltas.html#aab64c21de6d129af4379e32731cea163',1,'IRVoltas::getLight()'],['../classIRWhirlpoolAc.html#a4583ad4468e9bc736e77c8ea63bcdcbd',1,'IRWhirlpoolAc::getLight()']]], - ['getlighttoggle_447',['getLightToggle',['../classIRDaikin128.html#a3825b86cffe11409447f5c41bc3a469f',1,'IRDaikin128::getLightToggle()'],['../classIRElectraAc.html#aed9858539f66d98e065532f0a6bac048',1,'IRElectraAc::getLightToggle()'],['../classIRMideaAC.html#a770500c76c09ea7a7a7f6d0967c5f348',1,'IRMideaAC::getLightToggle()'],['../classIRSharpAc.html#a0bef3a8c41ca85ac84607606fe3a1728',1,'IRSharpAc::getLightToggle()']]], - ['getmax_448',['getMax',['../classIRAmcorAc.html#a9cff471d660dd92a48cc8f76b8ee5009',1,'IRAmcorAc::getMax()'],['../classIRArgoAC.html#a70186816a8981ca1d29b86df3bb8d36b',1,'IRArgoAC::getMax()']]], - ['getmode_449',['getMode',['../classIRAirwellAc.html#a9a1d651c8b71703212207888ddb4be14',1,'IRAirwellAc::getMode()'],['../classIRAmcorAc.html#a2309c3eba2ce3ec506ce0bb11639d47a',1,'IRAmcorAc::getMode()'],['../classIRArgoAC.html#a3c9c49e32fe2f06e218a1b8278ab4db2',1,'IRArgoAC::getMode()'],['../classIRCarrierAc64.html#a554d655ebd58aa90375cad18de24cc0d',1,'IRCarrierAc64::getMode()'],['../classIRCoolixAC.html#a8fb9a73b6c3540bc395682bb32ef8a27',1,'IRCoolixAC::getMode()'],['../classIRCoronaAc.html#a4ea2e6e8e5b19c8bfc4b5625bcd308ad',1,'IRCoronaAc::getMode()'],['../classIRDaikinESP.html#abc4417c6d46ba7e7f15e80984ed458f4',1,'IRDaikinESP::getMode()'],['../classIRDaikin2.html#ab89325df2b63faccaa82c7708cae894e',1,'IRDaikin2::getMode()'],['../classIRDaikin216.html#a4ec4d63df2c3536bc9b10c1a883123f2',1,'IRDaikin216::getMode()'],['../classIRDaikin160.html#a177d6e5e5957f64e6e71e3792d94188a',1,'IRDaikin160::getMode()'],['../classIRDaikin176.html#a06d4d50b48a3d10c882342c582d46402',1,'IRDaikin176::getMode()'],['../classIRDaikin128.html#ae0aaea03e3da871673212c92bc166bb2',1,'IRDaikin128::getMode()'],['../classIRDaikin152.html#ae08cda442b9495cd23d40184efb27b45',1,'IRDaikin152::getMode()'],['../classIRDaikin64.html#adea9511f98273e2f4e8fcb47ddfa0a5a',1,'IRDaikin64::getMode()'],['../classIRDelonghiAc.html#a09ff883265f23bf67d73e11755155600',1,'IRDelonghiAc::getMode()'],['../classIREcoclimAc.html#a93a69322013b546dc4e1ddb2b2dc4a2f',1,'IREcoclimAc::getMode()'],['../classIRElectraAc.html#ab38a479c1947f1758a882ec8df2e1fc9',1,'IRElectraAc::getMode()'],['../classIRFujitsuAC.html#addabed92c560d2a97743f2fd074fab4d',1,'IRFujitsuAC::getMode()'],['../classIRGoodweatherAc.html#a7a33c367d8cb64ec85afc37bbdda3ab1',1,'IRGoodweatherAc::getMode()'],['../classIRGreeAC.html#a52d00282331a137869f3e1e165d8fe41',1,'IRGreeAC::getMode()'],['../classIRHaierAC.html#a2ddf59c6ce732c23a9898dfc6679be02',1,'IRHaierAC::getMode()'],['../classIRHaierACYRW02.html#a36be68111465fb0161aa22cfac8cbe55',1,'IRHaierACYRW02::getMode()'],['../classIRHitachiAc.html#ab0fa1185703c71d2558260cb5e3e40dc',1,'IRHitachiAc::getMode()'],['../classIRHitachiAc1.html#ac10580db160a458a97168e6f0e8a9970',1,'IRHitachiAc1::getMode()'],['../classIRHitachiAc424.html#a94c44ea44ec395351715f28d2067bdca',1,'IRHitachiAc424::getMode()'],['../classIRHitachiAc3.html#a511c9b731a0367fd05b32b42a69adec2',1,'IRHitachiAc3::getMode()'],['../classIRKelonAc.html#a45d82807dee13f01f6bac9f7fe4ab42e',1,'IRKelonAc::getMode()'],['../classIRKelvinatorAC.html#af878b8867a65e62e1208e8358cfffa7c',1,'IRKelvinatorAC::getMode()'],['../classIRLgAc.html#a684e35c0c7f4dafbaf6d53230e7ee643',1,'IRLgAc::getMode()'],['../classIRMideaAC.html#aa024806cd5fce842e031f130d1f70ec6',1,'IRMideaAC::getMode()'],['../classIRMitsubishiAC.html#a6aa36b5cdb80acf93d0a2bb413ef5c6c',1,'IRMitsubishiAC::getMode()'],['../classIRMitsubishi136.html#a2930dc65d4e9d193a1763c836ab6d1cd',1,'IRMitsubishi136::getMode()'],['../classIRMitsubishi112.html#adf3365711e44842586a776030c52fd23',1,'IRMitsubishi112::getMode()'],['../classIRMitsubishiHeavy152Ac.html#a948571778a16aa7a7256773a101e81b0',1,'IRMitsubishiHeavy152Ac::getMode()'],['../classIRMitsubishiHeavy88Ac.html#a5004a26143481a3baa658026d1eed32f',1,'IRMitsubishiHeavy88Ac::getMode()'],['../classIRNeoclimaAc.html#a305db84bf11bd9f226db7dbec73e7dd3',1,'IRNeoclimaAc::getMode()'],['../classIRPanasonicAc.html#a5ffd59dd87b047e172ba74866267a9f3',1,'IRPanasonicAc::getMode()'],['../classIRPanasonicAc32.html#a353b10038a47d96ec12ea233b8160031',1,'IRPanasonicAc32::getMode()'],['../classIRSamsungAc.html#adcfed1f2123c48715cb6f3623ecf3f58',1,'IRSamsungAc::getMode()'],['../classIRSanyoAc.html#a8ec24049c1eb0e68f7c29c8a26c4faf2',1,'IRSanyoAc::getMode()'],['../classIRSharpAc.html#a36018c943865f189a32abae85a2b111b',1,'IRSharpAc::getMode()'],['../classIRTcl112Ac.html#a923f20af1fafa75feba9fabe0a39aa0a',1,'IRTcl112Ac::getMode()'],['../classIRTechnibelAc.html#ad1361f45fd3cc86105fc77aeffef1796',1,'IRTechnibelAc::getMode()'],['../classIRTecoAc.html#ad62055752174ef33b5444419162291aa',1,'IRTecoAc::getMode()'],['../classIRToshibaAC.html#a748c242e280954ef4b0efea6d47c1471',1,'IRToshibaAC::getMode()'],['../classIRTranscoldAc.html#a12e32c7b7a708ff6ee6b895ca3a884a8',1,'IRTranscoldAc::getMode()'],['../classIRTrotecESP.html#a734686c303babb58d836eb035ed11081',1,'IRTrotecESP::getMode()'],['../classIRTrumaAc.html#ac5190d6978631080f1617d3feec6f239',1,'IRTrumaAc::getMode()'],['../classIRVestelAc.html#a38e48fa0f7ddbc0b16983d84824a198b',1,'IRVestelAc::getMode()'],['../classIRVoltas.html#acedc05af3702d4beb98ebd5717b5f06c',1,'IRVoltas::getMode()'],['../classIRWhirlpoolAc.html#a82e7290554e4504d8fce19cdec1e2d0f',1,'IRWhirlpoolAc::getMode()']]], - ['getmodel_450',['getModel',['../classIRFujitsuAC.html#a13a66019e2ba72e0b6e6bfa9c525f4a7',1,'IRFujitsuAC::getModel()'],['../classIRGreeAC.html#ae45f26fe0726c0730628624a271532fa',1,'IRGreeAC::getModel()'],['../classIRHitachiAc1.html#a9f84923ef60194ed218321fcdcf5adc7',1,'IRHitachiAc1::getModel()'],['../classIRLgAc.html#a15f94c5fc2b4dfabe1ae0e0bad3f1f37',1,'IRLgAc::getModel()'],['../classIRPanasonicAc.html#a625be846baf3ec556a59379785e642e8',1,'IRPanasonicAc::getModel()'],['../classIRSharpAc.html#a2274a217db53ba0363def8fb3fc5c88f',1,'IRSharpAc::getModel()'],['../classIRVoltas.html#a64e24f4f6aefa66ffa2f4a953f4ab205',1,'IRVoltas::getModel()'],['../classIRWhirlpoolAc.html#a96b0339714de063febd68829a8eea94f',1,'IRWhirlpoolAc::getModel()']]], - ['getmold_451',['getMold',['../classIRDaikinESP.html#a6e940bd512a5ee0ffafa203b0fe4b360',1,'IRDaikinESP::getMold()'],['../classIRDaikin2.html#a6fdc34fe5e43a9df5677bb54315359fb',1,'IRDaikin2::getMold()']]], - ['getnight_452',['getNight',['../classIRArgoAC.html#a4b50f226061301149107ce34dbf76daf',1,'IRArgoAC::getNight()'],['../classIRMitsubishiHeavy152Ac.html#ae8e193a64044e17493878dcc558a88da',1,'IRMitsubishiHeavy152Ac::getNight()']]], - ['getnormalstate_453',['getNormalState',['../classIRCoolixAC.html#a458618f926f8b57e4b9bdeae0d13a70d',1,'IRCoolixAC']]], - ['getoffsleeptimer_454',['getOffSleepTimer',['../classIRFujitsuAC.html#a24f5928580566b3db7a14d0366a3b6e6',1,'IRFujitsuAC']]], - ['getofftime_455',['getOffTime',['../classIRDaikinESP.html#a8e57cf94a231ad5d029bad4a4c029191',1,'IRDaikinESP::getOffTime()'],['../classIRDaikin2.html#a8556aa0c7343343efda80246aebd44cb',1,'IRDaikin2::getOffTime()'],['../classIRDaikin64.html#a7c6a4e163f01be4017cb028470c7d4d7',1,'IRDaikin64::getOffTime()'],['../classIRVoltas.html#a9f6d0e9c6ea6e71177df4d8d8dcb34b8',1,'IRVoltas::getOffTime()']]], - ['getofftimeenabled_456',['getOffTimeEnabled',['../classIRDaikin64.html#a8f02ea1c216886ebbed4369797329e40',1,'IRDaikin64']]], - ['getofftimer_457',['getOffTimer',['../classIRCarrierAc64.html#ae777fcdb402eb862a1e4a5912ff39fae',1,'IRCarrierAc64::getOffTimer()'],['../classIRCoronaAc.html#ad46f8bd5c50ebd4de3354a77deac2518',1,'IRCoronaAc::getOffTimer()'],['../classIRDaikin128.html#a7550e40a909b21d8357871983951e02d',1,'IRDaikin128::getOffTimer()'],['../classIRDelonghiAc.html#a825e23b338644cd7b41a6529b2a38ee9',1,'IRDelonghiAc::getOffTimer()'],['../classIREcoclimAc.html#ae74a5c07d7840e00a69b8f92cda8fcf8',1,'IREcoclimAc::getOffTimer()'],['../classIRHaierAC.html#a4760af54cbc1618b2dc4c1bf57884ebb',1,'IRHaierAC::getOffTimer()'],['../classIRHitachiAc1.html#a37988864a631c1cd7df1bd09cc3878ba',1,'IRHitachiAc1::getOffTimer()'],['../classIRMideaAC.html#a280b85deb97232f03d6d9953f309926f',1,'IRMideaAC::getOffTimer()'],['../classIRPanasonicAc.html#a4bce377d32504f666662f1d93645761f',1,'IRPanasonicAc::getOffTimer()'],['../classIRSanyoAc.html#a754239cad3d588083a2dba5e933f0306',1,'IRSanyoAc::getOffTimer()'],['../classIRVestelAc.html#a45c725deb349e357b8c52ab3dcf51bdb',1,'IRVestelAc::getOffTimer()'],['../classIRWhirlpoolAc.html#a597de82026cdb3ebf12319ad5b6f7314',1,'IRWhirlpoolAc::getOffTimer()']]], - ['getofftimerenabled_458',['getOffTimerEnabled',['../classIRDaikinESP.html#ae17795e1e1d4f0d3c6898a0d3188366e',1,'IRDaikinESP::getOffTimerEnabled()'],['../classIRDaikin2.html#ab6c48355e0a0c80d3cd99ae276df80a5',1,'IRDaikin2::getOffTimerEnabled()'],['../classIRDaikin128.html#a7437b509c7c26d94e5f5224d4375578e',1,'IRDaikin128::getOffTimerEnabled()'],['../classIRDelonghiAc.html#ae48767203f462ac02441c635328ef7aa',1,'IRDelonghiAc::getOffTimerEnabled()']]], - ['getontime_459',['getOnTime',['../classIRDaikinESP.html#ab11a5aae3cd055f3c9b61dbf9fdb3ef9',1,'IRDaikinESP::getOnTime()'],['../classIRDaikin2.html#a7e98e1f9211e7e8885c503a7f724030f',1,'IRDaikin2::getOnTime()'],['../classIRDaikin64.html#a24536b3bce2d3e55f9a75ac093621cbc',1,'IRDaikin64::getOnTime()'],['../classIRVoltas.html#a96578f6ff015d5791a172fd9d0d0916f',1,'IRVoltas::getOnTime()']]], - ['getontimeenabled_460',['getOnTimeEnabled',['../classIRDaikin64.html#a2e64a60c10bd8508a9d4b1373e2aab22',1,'IRDaikin64']]], - ['getontimer_461',['getOnTimer',['../classIRCarrierAc64.html#a57f606d89eb29dafc18a2461467ad74f',1,'IRCarrierAc64::getOnTimer()'],['../classIRCoronaAc.html#a1a2f65c1eb0df18246d5088ef1a80e2f',1,'IRCoronaAc::getOnTimer()'],['../classIRDaikin128.html#a012991ae4e0bfce0dec50dce7e79b3d6',1,'IRDaikin128::getOnTimer()'],['../classIRDelonghiAc.html#a15c948b5ab0ea17298c95dc8b9fd5887',1,'IRDelonghiAc::getOnTimer()'],['../classIREcoclimAc.html#afdb831e4920ab2e11b63e10f8dfabf7d',1,'IREcoclimAc::getOnTimer()'],['../classIRFujitsuAC.html#ae7a012df0406b90d6ff6197334eb7bf3',1,'IRFujitsuAC::getOnTimer()'],['../classIRHaierAC.html#a1c71cd51382036c4548b460a13072e91',1,'IRHaierAC::getOnTimer()'],['../classIRHitachiAc1.html#a4f850fa34340b4cd976b514c355b0f99',1,'IRHitachiAc1::getOnTimer()'],['../classIRMideaAC.html#a4b8c1124bde8fab95f82ea57c0a77c39',1,'IRMideaAC::getOnTimer()'],['../classIRPanasonicAc.html#a51d50a59e09f0911022c59ab60bf4889',1,'IRPanasonicAc::getOnTimer()'],['../classIRVestelAc.html#a3b93b975802111973241d2c57d691bd0',1,'IRVestelAc::getOnTimer()'],['../classIRWhirlpoolAc.html#a3af30bd17c4facd9f93c21e740095222',1,'IRWhirlpoolAc::getOnTimer()']]], - ['getontimerenabled_462',['getOnTimerEnabled',['../classIRDaikinESP.html#a1305a311d2cb6acc8fd4b26d0b9b5e57',1,'IRDaikinESP::getOnTimerEnabled()'],['../classIRDaikin2.html#a635bd00eff13041b284566936af0d589',1,'IRDaikin2::getOnTimerEnabled()'],['../classIRDaikin128.html#aebe10daacaf0629ed451624b776981fd',1,'IRDaikin128::getOnTimerEnabled()'],['../classIRDelonghiAc.html#afdd8284ec6c1d31b0cc943a49bdf3f0e',1,'IRDelonghiAc::getOnTimerEnabled()']]], - ['getoutsidequiet_463',['getOutsideQuiet',['../classIRFujitsuAC.html#a706456b7e46a3da48483fa61e11c8e86',1,'IRFujitsuAC']]], - ['getpower_464',['getPower',['../classIRAmcorAc.html#aa5c0a82e7425f9e71d303ebcd6af22aa',1,'IRAmcorAc::getPower()'],['../classIRArgoAC.html#a0784b8dec8e3e136b263a8c6387b7819',1,'IRArgoAC::getPower()'],['../classIRCarrierAc64.html#a61422ae8089453a26f1eea4fc0a57489',1,'IRCarrierAc64::getPower()'],['../classIRCoolixAC.html#a733ea01983f9936fbcee4c313c2ff54a',1,'IRCoolixAC::getPower()'],['../classIRCoronaAc.html#a0616dcf381d95d40138fb549e54eb7c4',1,'IRCoronaAc::getPower()'],['../classIRDaikinESP.html#acb6694d29a241e0a82b50212f46363f7',1,'IRDaikinESP::getPower()'],['../classIRDaikin2.html#a742026c183ee2bf5be1aafd0b6bbec20',1,'IRDaikin2::getPower()'],['../classIRDaikin216.html#aaafa8df6d9e1c74fcc94de4630746642',1,'IRDaikin216::getPower()'],['../classIRDaikin160.html#a0c5e6157a818d2c67046fd4560db7859',1,'IRDaikin160::getPower()'],['../classIRDaikin176.html#aa095669914397f51729b0f6bd8d9c094',1,'IRDaikin176::getPower()'],['../classIRDaikin152.html#a3ebf05f9b7dab1d1a78c4a1a2c8a03eb',1,'IRDaikin152::getPower()'],['../classIRDelonghiAc.html#a88a2ef78cf091f9b4ab38536b6cbe25e',1,'IRDelonghiAc::getPower()'],['../classIREcoclimAc.html#acccf77fc5f0151a3414cfea45491c110',1,'IREcoclimAc::getPower()'],['../classIRElectraAc.html#a776fdad40d191f04356f8366ff6128d3',1,'IRElectraAc::getPower()'],['../classIRFujitsuAC.html#a0b77519e85271d48bcd2a151b603d288',1,'IRFujitsuAC::getPower()'],['../classIRGoodweatherAc.html#ac07f4c3c4e064a13f1f90d0c227d8ec0',1,'IRGoodweatherAc::getPower()'],['../classIRGreeAC.html#a72ba2c19cc104ae8307b3d7ca533d4c1',1,'IRGreeAC::getPower()'],['../classIRHaierACYRW02.html#a242508ff127e27ac644c195b3d572baf',1,'IRHaierACYRW02::getPower()'],['../classIRHitachiAc.html#a8d94eb158971fcc28c85ce81443795f1',1,'IRHitachiAc::getPower()'],['../classIRHitachiAc1.html#a0183bbe39cfdda9d3b43e6d9c87df714',1,'IRHitachiAc1::getPower()'],['../classIRHitachiAc424.html#a025b0e8cd50111555d55fea481ca7b1c',1,'IRHitachiAc424::getPower()'],['../classIRKelvinatorAC.html#adfbe7efd74ec16f339c21983967920f9',1,'IRKelvinatorAC::getPower()'],['../classIRLgAc.html#a592403e1602a3b92f75d0e07756cc86e',1,'IRLgAc::getPower()'],['../classIRMideaAC.html#ad4dd8a532419cd2d8f5656df3e5a23e2',1,'IRMideaAC::getPower()'],['../classIRMitsubishiAC.html#abd4e2414d75b61c5d9d3693568dff791',1,'IRMitsubishiAC::getPower()'],['../classIRMitsubishi136.html#a2ebea047c764746524163f8c35dbe660',1,'IRMitsubishi136::getPower()'],['../classIRMitsubishi112.html#a04af02100d0cbad644d890f249f383ce',1,'IRMitsubishi112::getPower()'],['../classIRMitsubishiHeavy152Ac.html#afd5016f6c87fe822e6fe0e80d450f07b',1,'IRMitsubishiHeavy152Ac::getPower()'],['../classIRMitsubishiHeavy88Ac.html#a217d1f049e5046f5f0b5abd5c9cff422',1,'IRMitsubishiHeavy88Ac::getPower()'],['../classIRNeoclimaAc.html#a0bca526fcbe79a1ef3a6f281ef0f916b',1,'IRNeoclimaAc::getPower()'],['../classIRPanasonicAc.html#a2d50ed3994f6cc6e205d2c5fb6c0cc55',1,'IRPanasonicAc::getPower()'],['../classIRSamsungAc.html#aecb2a7187ea08433bed9c6a6f5dfc7e2',1,'IRSamsungAc::getPower()'],['../classIRSanyoAc.html#a0ad0e3522dc1ac2af56812540bbd2c5b',1,'IRSanyoAc::getPower()'],['../classIRSharpAc.html#a5d763e7c40eb7310789444b8746c50c8',1,'IRSharpAc::getPower()'],['../classIRTcl112Ac.html#a631d9d1addb03f18708fbec9d2480651',1,'IRTcl112Ac::getPower()'],['../classIRTechnibelAc.html#a1321272ac58e24e827a194965bb2b7a4',1,'IRTechnibelAc::getPower()'],['../classIRTecoAc.html#a66002ccce4fb4537ac5d937bc3ade7b5',1,'IRTecoAc::getPower()'],['../classIRToshibaAC.html#aacaa7c9c50b96de92f5947b87f4f3829',1,'IRToshibaAC::getPower()'],['../classIRTranscoldAc.html#a6ac4a00b6b9340e2a6ce304a928b148b',1,'IRTranscoldAc::getPower()'],['../classIRTrotecESP.html#a3c3e20f1b0edfe11c65c8e4ec1c0347c',1,'IRTrotecESP::getPower()'],['../classIRTrumaAc.html#a3a27b6b42bcd57cd1acfc2a7d6c4389c',1,'IRTrumaAc::getPower()'],['../classIRVestelAc.html#a88e2b24cc600488a6a27a1e616c80580',1,'IRVestelAc::getPower()'],['../classIRVoltas.html#aec20c3251f68bacf925406f243eb1b1a',1,'IRVoltas::getPower()']]], - ['getpowerbutton_465',['getPowerButton',['../classIRCoronaAc.html#ab1ec9772fae659e91c4939afab8e77ca',1,'IRCoronaAc']]], - ['getpowerful_466',['getPowerful',['../classIRDaikinESP.html#af70b79d4d3eaf91db08a1d597ce3e092',1,'IRDaikinESP::getPowerful()'],['../classIRDaikin2.html#a91ddd73b1b38fe74233765feecbd1055',1,'IRDaikin2::getPowerful()'],['../classIRDaikin216.html#a062077a6948d16de8b5f01522a989b2e',1,'IRDaikin216::getPowerful()'],['../classIRDaikin128.html#ab4eef7bc4e0d0ac29f465334687a65dc',1,'IRDaikin128::getPowerful()'],['../classIRDaikin152.html#a0668484f94dcb8ccdb13dba4f7782f7f',1,'IRDaikin152::getPowerful()'],['../classIRPanasonicAc.html#a736b77df0563705095d8f4241a80b1cb',1,'IRPanasonicAc::getPowerful()'],['../classIRSamsungAc.html#acea93892d56221b2563d0db1c09589d1',1,'IRSamsungAc::getPowerful()']]], - ['getpowerspecial_467',['getPowerSpecial',['../classIRSharpAc.html#af9b74287cfd37c600371e266bffb5be4',1,'IRSharpAc']]], - ['getpowertoggle_468',['getPowerToggle',['../classIRAirwellAc.html#a73ae0827f0235788d5d6149ea4de8eb0',1,'IRAirwellAc::getPowerToggle()'],['../classIRDaikin128.html#a7bcc31cfbaa886481831236268ba51a2',1,'IRDaikin128::getPowerToggle()'],['../classIRDaikin64.html#a0bb829722a7cdc6625a5a6684c7a7d95',1,'IRDaikin64::getPowerToggle()'],['../classIRHitachiAc1.html#a1028550ea882741a0f98d974671f1fd7',1,'IRHitachiAc1::getPowerToggle()'],['../classIRPanasonicAc32.html#afbbae70ea168e39a3adcf6846e981bd8',1,'IRPanasonicAc32::getPowerToggle()'],['../classIRWhirlpoolAc.html#a23aebd8217ea671f5e847a1eb70e61de',1,'IRWhirlpoolAc::getPowerToggle()']]], - ['getpurify_469',['getPurify',['../classIRDaikin2.html#a73b691ef3fa4a555f7557d0cad63ef02',1,'IRDaikin2']]], - ['getquiet_470',['getQuiet',['../classIRDaikinESP.html#ae066d6fd02d78021bb6d1b4cfa2e2ad8',1,'IRDaikinESP::getQuiet()'],['../classIRDaikin2.html#ae77c687b5e258baf941181ae0a261aae',1,'IRDaikin2::getQuiet()'],['../classIRDaikin216.html#adb59e4a7e933c1daa5456b9561710913',1,'IRDaikin216::getQuiet()'],['../classIRDaikin128.html#a0d59cd6b8a05a397d8cda84ecfeea426',1,'IRDaikin128::getQuiet()'],['../classIRDaikin152.html#a2ff46afdbce630536ce80066f8505aad',1,'IRDaikin152::getQuiet()'],['../classIRDaikin64.html#a2ee30dde1870871eaefe246c30990e59',1,'IRDaikin64::getQuiet()'],['../classIRKelvinatorAC.html#a3ecb10d41670852841c2543e6e97c781',1,'IRKelvinatorAC::getQuiet()'],['../classIRMitsubishi136.html#a9ea4cb8a87988cc6c97d7116d154448f',1,'IRMitsubishi136::getQuiet()'],['../classIRMitsubishi112.html#a28b91ee196fc212f7e3259e7429dc770',1,'IRMitsubishi112::getQuiet()'],['../classIRPanasonicAc.html#a8d7dfc9b5f7c7a4523c0bfa4e0bc415a',1,'IRPanasonicAc::getQuiet()'],['../classIRSamsungAc.html#a4296eb88c1b349206d7a0bd551d33ee6',1,'IRSamsungAc::getQuiet()'],['../classIRTrumaAc.html#a5102362a518e49176b3605d6fddf027e',1,'IRTrumaAc::getQuiet()']]], - ['getraw_471',['getRaw',['../classIRAirwellAc.html#aec84bac505703ad872cd4b6391fbe748',1,'IRAirwellAc::getRaw()'],['../classIRAmcorAc.html#a4dc24f5aa597dba421fdb0e2e0481875',1,'IRAmcorAc::getRaw()'],['../classIRArgoAC.html#ac9e8b45dbbef453a54e3593d7e2927fb',1,'IRArgoAC::getRaw()'],['../classIRCarrierAc64.html#a6f83fc571d5d7d3e3af2237367e66884',1,'IRCarrierAc64::getRaw()'],['../classIRCoolixAC.html#ada7799bf0e9fb40e7475a510187ff762',1,'IRCoolixAC::getRaw()'],['../classIRCoronaAc.html#ac2ba3b4bcefb801da345c9da5daa85fc',1,'IRCoronaAc::getRaw()'],['../classIRDaikinESP.html#ab100221dacc23402f486dee038df046d',1,'IRDaikinESP::getRaw()'],['../classIRDaikin2.html#af4bcf5f856169761c9b0f1fb6607af21',1,'IRDaikin2::getRaw()'],['../classIRDaikin216.html#a178e2dd3578a53356e1cebdbac6024a7',1,'IRDaikin216::getRaw()'],['../classIRDaikin160.html#accccba95fee75626871f91861678c57e',1,'IRDaikin160::getRaw()'],['../classIRDaikin176.html#acd84f4e9f36a91264290a7a0cf0f519e',1,'IRDaikin176::getRaw()'],['../classIRDaikin128.html#a05669c2b1a6720b95d9a5fb898179a10',1,'IRDaikin128::getRaw()'],['../classIRDaikin152.html#af6c492ed5216aedbd5ad922437e842fd',1,'IRDaikin152::getRaw()'],['../classIRDaikin64.html#aa3a947da9925c0f2568eeeeb0d9632b0',1,'IRDaikin64::getRaw()'],['../classIRDelonghiAc.html#a17159362299572642e485a7f815220d7',1,'IRDelonghiAc::getRaw()'],['../classIREcoclimAc.html#aec7b0bf1c542ce8141333a84ca3afcbd',1,'IREcoclimAc::getRaw()'],['../classIRElectraAc.html#a7674d29474ecbbb6366d96056794314c',1,'IRElectraAc::getRaw()'],['../classIRFujitsuAC.html#ae4dce44cab1f26756d63728cb8d55e65',1,'IRFujitsuAC::getRaw()'],['../classIRGoodweatherAc.html#a82d973e562b2425e8823fbc7332c06de',1,'IRGoodweatherAc::getRaw()'],['../classIRGreeAC.html#afa1595d4f69200b0076db1b9f8f2ea73',1,'IRGreeAC::getRaw()'],['../classIRHaierAC.html#abf72eed86c2c86c4f0f5f49f6a788b82',1,'IRHaierAC::getRaw()'],['../classIRHaierACYRW02.html#abca7bbe8c723551723f24f186343b764',1,'IRHaierACYRW02::getRaw()'],['../classIRHitachiAc.html#a8dafb9436f63cfc2d7e4f558fbd6e1ab',1,'IRHitachiAc::getRaw()'],['../classIRHitachiAc1.html#ad850b6364603880ccc444381e85af564',1,'IRHitachiAc1::getRaw()'],['../classIRHitachiAc424.html#acd8388f938feeaf6808ff65779435b5d',1,'IRHitachiAc424::getRaw()'],['../classIRHitachiAc3.html#a915605ca6d0bf3ff6fc9b376ddd394ae',1,'IRHitachiAc3::getRaw()'],['../classIRKelonAc.html#a9406ac65db0b49d31d34344103faeb62',1,'IRKelonAc::getRaw()'],['../classIRKelvinatorAC.html#a09149dd7bc45ca50b0c490b9c1f1e6f4',1,'IRKelvinatorAC::getRaw()'],['../classIRLgAc.html#afcb529d2f2c9016388264b80e6a99351',1,'IRLgAc::getRaw()'],['../classIRMideaAC.html#ae0b2c3a5a0a1d84eaeb462bbbe944d97',1,'IRMideaAC::getRaw()'],['../classIRMitsubishiAC.html#a1f2d0ea70bdeb71efab4c20ccd876aa9',1,'IRMitsubishiAC::getRaw()'],['../classIRMitsubishi136.html#a61cceec2bf241a75be1389391e8f3d9a',1,'IRMitsubishi136::getRaw()'],['../classIRMitsubishi112.html#a5e47e892921b8464652b55f41f42fd9a',1,'IRMitsubishi112::getRaw()'],['../classIRMitsubishiHeavy152Ac.html#a34ae73479c76b08512eaa87ed0662c0a',1,'IRMitsubishiHeavy152Ac::getRaw()'],['../classIRMitsubishiHeavy88Ac.html#af96915ac45861327ed7d55803dadd4fd',1,'IRMitsubishiHeavy88Ac::getRaw()'],['../classIRNeoclimaAc.html#a1f67329cad92d4252b0d33effce6380e',1,'IRNeoclimaAc::getRaw()'],['../classIRPanasonicAc.html#ad65c2bcdc3984a986f5ef2f03b5574d4',1,'IRPanasonicAc::getRaw()'],['../classIRPanasonicAc32.html#a9128df3724e0767070718c9811ce7d2d',1,'IRPanasonicAc32::getRaw()'],['../classIRSamsungAc.html#a96c6ac410053f0f2804160040d9fcf12',1,'IRSamsungAc::getRaw()'],['../classIRSanyoAc.html#a0ae6388f53eaf58d9c9276ab192e846b',1,'IRSanyoAc::getRaw()'],['../classIRSharpAc.html#a9d680b0145c376060bd2d2e4c2630162',1,'IRSharpAc::getRaw()'],['../classIRTcl112Ac.html#a517375b764d1381aa5a7d4ec962346ec',1,'IRTcl112Ac::getRaw()'],['../classIRTechnibelAc.html#ad606f7448fdb0813f52f253fd218562d',1,'IRTechnibelAc::getRaw()'],['../classIRTecoAc.html#ab88386c5c7669437dfbb91b1fa6321ed',1,'IRTecoAc::getRaw()'],['../classIRToshibaAC.html#a3572a06423851d2c4da5f85133a1a8ff',1,'IRToshibaAC::getRaw()'],['../classIRTranscoldAc.html#aaf7aa5d00d7447bfcb82d17ed1f66a6d',1,'IRTranscoldAc::getRaw()'],['../classIRTrotecESP.html#a412dd2cf9dcb711003bcbb5b579cb2b8',1,'IRTrotecESP::getRaw()'],['../classIRTrumaAc.html#a96c74884f744b75ba230bb7a4464fd21',1,'IRTrumaAc::getRaw()'],['../classIRVestelAc.html#afffd1dbcdec22ecca4efe9a996bf27e5',1,'IRVestelAc::getRaw()'],['../classIRVoltas.html#a8718fd8231a8b1c282c5c2a4b2e9c176',1,'IRVoltas::getRaw()'],['../classIRWhirlpoolAc.html#a788a6a5373256e10200969cc5c73da63',1,'IRWhirlpoolAc::getRaw()']]], - ['getrclevel_472',['getRClevel',['../classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc',1,'IRrecv']]], - ['getroomtemp_473',['getRoomTemp',['../classIRArgoAC.html#aeae1c1fb6f1a3eeb4296849b0be6c44c',1,'IRArgoAC']]], - ['getsave_474',['getSave',['../classIRTecoAc.html#a75175a6a3bbe4bc37323042c1f902a34',1,'IRTecoAc']]], - ['getsectionbyte_475',['getSectionByte',['../classIRCoronaAc.html#aed9181df842370739a5b4977b20769f9',1,'IRCoronaAc']]], - ['getsectionchecksum_476',['getSectionChecksum',['../namespaceIRXmpUtils.html#a60f5e4774b9ff0e08ae54844b132d5fb',1,'IRXmpUtils']]], - ['getsensor_477',['getSensor',['../classIRDaikinESP.html#a6493face77cd685c85d080dd45decbc7',1,'IRDaikinESP::getSensor()'],['../classIRDaikin152.html#af07ad5e4e1b0f3b1cae18d3f4ef0a15f',1,'IRDaikin152::getSensor()'],['../classIRSanyoAc.html#abb18cd13144d0481f7547b7826a381f6',1,'IRSanyoAc::getSensor()']]], - ['getsensortemp_478',['getSensorTemp',['../classIRCoolixAC.html#ab2f86254c73285bbd420d90d6f089dfd',1,'IRCoolixAC::getSensorTemp()'],['../classIREcoclimAc.html#ac0395413439cc393a8d39a6fb26e1553',1,'IREcoclimAc::getSensorTemp()'],['../classIRMideaAC.html#a3ed0a7ef0acb6e7b7c83ed6722a80a7f',1,'IRMideaAC::getSensorTemp()'],['../classIRSanyoAc.html#abff813c8f55d9f52d705e10fab214963',1,'IRSanyoAc::getSensorTemp()']]], - ['getsilent_479',['getSilent',['../classIRMitsubishiHeavy152Ac.html#a352fe50eeb18db9f74114dd95e8754dc',1,'IRMitsubishiHeavy152Ac']]], - ['getsleep_480',['getSleep',['../classIRCarrierAc64.html#ae999122072e0dd1e9b83120292bc6256',1,'IRCarrierAc64::getSleep()'],['../classIRCoolixAC.html#a3baf61e1d13863681ce57f9465c42c65',1,'IRCoolixAC::getSleep()'],['../classIRDaikin128.html#a49f5b2bca44efadb585ec067deed39c3',1,'IRDaikin128::getSleep()'],['../classIRDaikin64.html#a6c158e0701a9b7d821c7a2c3c90d4bea',1,'IRDaikin64::getSleep()'],['../classIRDelonghiAc.html#ab41702206eb36ca6e1cc8689ce259861',1,'IRDelonghiAc::getSleep()'],['../classIRGoodweatherAc.html#a17ddc9ee4e4200176ede62817ed7cb7f',1,'IRGoodweatherAc::getSleep()'],['../classIRGreeAC.html#a54b727511a82eca6fb712bea3ae357bb',1,'IRGreeAC::getSleep()'],['../classIRHaierAC.html#af88bef780a4f14f44cd7d2549f3838b3',1,'IRHaierAC::getSleep()'],['../classIRHaierACYRW02.html#afcd1dc8fbf846040ead3122d2b5ea3b7',1,'IRHaierACYRW02::getSleep()'],['../classIRHitachiAc1.html#a7bd7318f8b02e1f0db1d4b23f8845f03',1,'IRHitachiAc1::getSleep()'],['../classIRKelonAc.html#afbc72e3dfaa1782fa84e6aae9433dd42',1,'IRKelonAc::getSleep()'],['../classIRMideaAC.html#a2cef1181e13416425edb1bac972c4adf',1,'IRMideaAC::getSleep()'],['../classIRNeoclimaAc.html#a139adc7789bcbc3914906331759fac48',1,'IRNeoclimaAc::getSleep()'],['../classIRSanyoAc.html#ab0a41518ea6ed5005141bef874ab09af',1,'IRSanyoAc::getSleep()'],['../classIRTechnibelAc.html#a36da9a7b867fb8b4b36812f0bb9abf8f',1,'IRTechnibelAc::getSleep()'],['../classIRTecoAc.html#a3a86eb6a4d6d1b4ae0069aea245c0d86',1,'IRTecoAc::getSleep()'],['../classIRTrotecESP.html#a71743691c207d13115383899cdbd26fe',1,'IRTrotecESP::getSleep()'],['../classIRVestelAc.html#a31143f56418da08af313eccf0fd46c40',1,'IRVestelAc::getSleep()'],['../classIRVoltas.html#a56795d5b7cb4a42df4d1289363bfe276',1,'IRVoltas::getSleep()'],['../classIRWhirlpoolAc.html#ab8bcb6bce16a10c7184bf7226c9cb9c7',1,'IRWhirlpoolAc::getSleep()']]], - ['getsleeptime_481',['getSleepTime',['../classIRDaikin2.html#a267a7975e882ffc884eccbdc16a0df5f',1,'IRDaikin2']]], - ['getsleeptimerenabled_482',['getSleepTimerEnabled',['../classIRDaikin2.html#a763e88c841fc6b32521787d3f1df32e4',1,'IRDaikin2']]], - ['getspecial_483',['getSpecial',['../classIRSharpAc.html#a3d0a128734a796557dcda8054e3056fd',1,'IRSharpAc']]], - ['getspeed_484',['getSpeed',['../classIRTrotecESP.html#ae0ede3d969d6f3903dca7899efd674fd',1,'IRTrotecESP']]], - ['getstartclock_485',['getStartClock',['../classIRMitsubishiAC.html#aac0b7c36e9eb1b5254fe6f6966cc0206',1,'IRMitsubishiAC']]], - ['getstate_486',['getState',['../classIRac.html#af0122722691881b04c312bb30efcc3f2',1,'IRac']]], - ['getstatelength_487',['getStateLength',['../classIRFujitsuAC.html#a02636372996211d464c7394329921ea0',1,'IRFujitsuAC::getStateLength()'],['../classIRToshibaAC.html#af65addadf7cf47d2178fdf9c9fa16bd8',1,'IRToshibaAC::getStateLength()']]], - ['getstateprev_488',['getStatePrev',['../classIRac.html#adf582223eae0127491c7f1db38f101d3',1,'IRac']]], - ['getstopclock_489',['getStopClock',['../classIRMitsubishiAC.html#affbddec76d8f00f9a2cbf568b2e69233',1,'IRMitsubishiAC']]], - ['getsuper_490',['getSuper',['../classIRWhirlpoolAc.html#af9e4fd82307476b1fb71db980949c970',1,'IRWhirlpoolAc']]], - ['getsupercool_491',['getSupercool',['../classIRKelonAc.html#ad46eec811631a9b1732bec75cccd393c',1,'IRKelonAc']]], - ['getswing_492',['getSwing',['../classIRCoolixAC.html#a59b96858b6fe88f46de40fd3c743f0e0',1,'IRCoolixAC::getSwing()'],['../classIRFujitsuAC.html#ac0f7128a617e01440bb4f12321cd81f7',1,'IRFujitsuAC::getSwing()'],['../classIRGoodweatherAc.html#a4112cccacc2f8ea30c7d8bdb068beae0',1,'IRGoodweatherAc::getSwing()'],['../classIRHaierAC.html#ac1192427f02d7f77bb88105d74fc8276',1,'IRHaierAC::getSwing()'],['../classIRHaierACYRW02.html#aca4d95809fad3e6851bb9af20e00b520',1,'IRHaierACYRW02::getSwing()'],['../classIRSamsungAc.html#a5627d39ea3af4d1e948fc4b8339baf9b',1,'IRSamsungAc::getSwing()'],['../classIRTechnibelAc.html#a8f5265c3752c98a48a6be0ef443a9248',1,'IRTechnibelAc::getSwing()'],['../classIRTecoAc.html#a91d2fb0dfbbfb3c97ec9691655ee111f',1,'IRTecoAc::getSwing()'],['../classIRToshibaAC.html#a18998242b9d04a6702585d489f25c56f',1,'IRToshibaAC::getSwing()'],['../classIRTranscoldAc.html#a9d427219a71afa71fb5518b2abb6d202',1,'IRTranscoldAc::getSwing()'],['../classIRVestelAc.html#a5f1d1009cc3cd29123a0db815e437c3a',1,'IRVestelAc::getSwing()'],['../classIRWhirlpoolAc.html#aeb6a97f0407caf9a7a98098397e68335',1,'IRWhirlpoolAc::getSwing()']]], - ['getswingh_493',['getSwingH',['../classIRElectraAc.html#ae71e3f7bb1a4caa54c9cdbc99d29c381',1,'IRElectraAc::getSwingH()'],['../classIRHitachiAc1.html#a18a07374143855102df4aa1e6415f524',1,'IRHitachiAc1::getSwingH()'],['../classIRHitachiAc344.html#ad3a2a8cfda11640d3c163ab09d84c2b3',1,'IRHitachiAc344::getSwingH()'],['../classIRMitsubishi112.html#ab760d57617d2a085be1e09c1dc6fb314',1,'IRMitsubishi112::getSwingH()'],['../classIRNeoclimaAc.html#aa0e598394a411e627a684525053a6500',1,'IRNeoclimaAc::getSwingH()'],['../classIRVoltas.html#a681b2f013a436bc1a117071ccc36c1cf',1,'IRVoltas::getSwingH()']]], - ['getswinghchange_494',['getSwingHChange',['../classIRVoltas.html#ac7f222cb487a772d77dea53e489ef614',1,'IRVoltas']]], - ['getswinghorizontal_495',['getSwingHorizontal',['../classIRDaikinESP.html#aff785e5f56246db3bebff7cfe09417ed',1,'IRDaikinESP::getSwingHorizontal()'],['../classIRDaikin2.html#adec30b33929a1cd219ae6d50eb44fe17',1,'IRDaikin2::getSwingHorizontal()'],['../classIRDaikin216.html#afb800780b003ad6b77f310e168ea8024',1,'IRDaikin216::getSwingHorizontal()'],['../classIRDaikin176.html#a4cf043df8f6f2e5a3554208dff0d963d',1,'IRDaikin176::getSwingHorizontal()'],['../classIRHitachiAc.html#a04734465f6c3c5deb28f0a42d0d6bc84',1,'IRHitachiAc::getSwingHorizontal()'],['../classIRKelvinatorAC.html#ab24237062a73a8c236b6691a0277c1f3',1,'IRKelvinatorAC::getSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#aa16ca11537459dbbad1267e227898aef',1,'IRMitsubishiHeavy152Ac::getSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#a90065b9855d805e7cec4d4d6c596f956',1,'IRMitsubishiHeavy88Ac::getSwingHorizontal()'],['../classIRPanasonicAc.html#a37d9b268b3c8527be0939e0a24b02ef6',1,'IRPanasonicAc::getSwingHorizontal()'],['../classIRPanasonicAc32.html#aa1d2c9d265db4c3395376c45ba6b5bba',1,'IRPanasonicAc32::getSwingHorizontal()'],['../classIRTcl112Ac.html#aa39f0f91e6a59477c914189817ae5518',1,'IRTcl112Ac::getSwingHorizontal()']]], - ['getswingtoggle_496',['getSwingToggle',['../classIRHitachiAc1.html#a79aea8264a5d6b4bfd2d2ce6651ac8a5',1,'IRHitachiAc1::getSwingToggle()'],['../classIRSharpAc.html#af3191879408c280c108fd0afdbce475d',1,'IRSharpAc::getSwingToggle()']]], - ['getswingv_497',['getSwingV',['../classIRCarrierAc64.html#a22e14700eb0efe9f28c8008297a21ced',1,'IRCarrierAc64::getSwingV()'],['../classIRDaikin152.html#aa728135169cbe54291e362dcffebc23a',1,'IRDaikin152::getSwingV()'],['../classIRElectraAc.html#a5ea68ed936a2395ea72eac562420f4ee',1,'IRElectraAc::getSwingV()'],['../classIRHitachiAc1.html#a66f24e20b53a1d40d465b36d7bb0b6b2',1,'IRHitachiAc1::getSwingV()'],['../classIRHitachiAc344.html#a86f1db7b42edf48e751b2a6a0bca8c47',1,'IRHitachiAc344::getSwingV()'],['../classIRMitsubishi136.html#a3bd3e55f343c18e915549f94ca2f42a6',1,'IRMitsubishi136::getSwingV()'],['../classIRMitsubishi112.html#a42ef9d26b85d9dac34730e7f65c6256b',1,'IRMitsubishi112::getSwingV()'],['../classIRNeoclimaAc.html#aaaac3278cfe3120e3973b38ade87b904',1,'IRNeoclimaAc::getSwingV()'],['../classIRSanyoAc.html#abcb0f05930ac13b9229a8575a99c9159',1,'IRSanyoAc::getSwingV()'],['../classIRVoltas.html#a20360a21d87672e3a2f569be29c840f4',1,'IRVoltas::getSwingV()']]], - ['getswingvertical_498',['getSwingVertical',['../classIRDaikinESP.html#a2c50ee50ce429da67ec00182151ff4ff',1,'IRDaikinESP::getSwingVertical()'],['../classIRDaikin2.html#a411a950d43da08070ef1ad744f7188f1',1,'IRDaikin2::getSwingVertical()'],['../classIRDaikin216.html#af00b48f968c5ab428c36bde8886c9e31',1,'IRDaikin216::getSwingVertical()'],['../classIRDaikin160.html#ace47ac509abe05ad9c97eeeb7e9916db',1,'IRDaikin160::getSwingVertical()'],['../classIRDaikin128.html#a66b247675babf3d4f571c2c6e7237b14',1,'IRDaikin128::getSwingVertical()'],['../classIRDaikin64.html#a71b4190e3f871815b549c531d134f925',1,'IRDaikin64::getSwingVertical()'],['../classIRHitachiAc.html#ad494c4e80fd7f041e4ab7d9f18f0985a',1,'IRHitachiAc::getSwingVertical()'],['../classIRKelvinatorAC.html#aafb8deadf87564b4111a44ffaf9c866a',1,'IRKelvinatorAC::getSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#ab8fe96c4c97c3621e006326a849f25fe',1,'IRMitsubishiHeavy152Ac::getSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#a68dc25472a3a8c652b62ca9c0265ae07',1,'IRMitsubishiHeavy88Ac::getSwingVertical()'],['../classIRPanasonicAc.html#a7a35303cd4fb4b23c0e5a25777d5819c',1,'IRPanasonicAc::getSwingVertical()'],['../classIRPanasonicAc32.html#a93326072ab7684c147673ff7a5074799',1,'IRPanasonicAc32::getSwingVertical()'],['../classIRTcl112Ac.html#ac997659c2ab82cfa1bf8eaa11fc0efc1',1,'IRTcl112Ac::getSwingVertical()']]], - ['getswingverticalauto_499',['getSwingVerticalAuto',['../classIRGreeAC.html#afaeb34a429e75989593d1311e4487ae5',1,'IRGreeAC']]], - ['getswingverticalposition_500',['getSwingVerticalPosition',['../classIRGreeAC.html#a55f30d5b23edc18dd873f9a1fbace43c',1,'IRGreeAC']]], - ['getswingvstep_501',['getSwingVStep',['../classIRCoolixAC.html#af1324a62bdb4d847bf02b635d3a1df05',1,'IRCoolixAC::getSwingVStep()'],['../classIRMideaAC.html#ab963d4e492689a669cd97345859f7d41',1,'IRMideaAC::getSwingVStep()']]], - ['getswingvtoggle_502',['getSwingVToggle',['../classIRCoronaAc.html#a1d9dd3fae0695522cbb2a97a110c4428',1,'IRCoronaAc::getSwingVToggle()'],['../classIRHitachiAc424.html#aafd0dd25455dd9743cf4fd879a843e54',1,'IRHitachiAc424::getSwingVToggle()'],['../classIRMideaAC.html#a50b260d69bc0df8851bfccb003971dfe',1,'IRMideaAC::getSwingVToggle()']]], - ['gettemp_503',['getTemp',['../classIRAirwellAc.html#aee52deba26ba5b217704667d159d1110',1,'IRAirwellAc::getTemp()'],['../classIRAmcorAc.html#a5a16756250e4331fffb74608439a5813',1,'IRAmcorAc::getTemp()'],['../classIRArgoAC.html#a061fa1b6c4472f8d59a3a3469a6dd514',1,'IRArgoAC::getTemp()'],['../classIRCarrierAc64.html#a38583e54e47ae08b2ce3469f55797e63',1,'IRCarrierAc64::getTemp()'],['../classIRCoolixAC.html#a5861b7089a7fb2dab02be36b287a42e8',1,'IRCoolixAC::getTemp()'],['../classIRCoronaAc.html#acab661bc33a7bc8bc1da85af70eab334',1,'IRCoronaAc::getTemp()'],['../classIRDaikinESP.html#a8aa56cf86e6b417dfaea77d9c0eada06',1,'IRDaikinESP::getTemp()'],['../classIRDaikin2.html#ad5c2f9113952e82329d943565445074c',1,'IRDaikin2::getTemp()'],['../classIRDaikin216.html#ac6413e168b366658396b4c90ecd0d243',1,'IRDaikin216::getTemp()'],['../classIRDaikin160.html#a3e3e27cc129f49117fa6da49e24f3b1f',1,'IRDaikin160::getTemp()'],['../classIRDaikin176.html#a9d1edc9dbb661deec9b6a22e3d3ab307',1,'IRDaikin176::getTemp()'],['../classIRDaikin128.html#ab54d88d9d00263102856483cebd00ec6',1,'IRDaikin128::getTemp()'],['../classIRDaikin152.html#a2090bcca7631181cf8ad1551b56f4df9',1,'IRDaikin152::getTemp()'],['../classIRDaikin64.html#a32860d84a3a5378d753a533d948a1a33',1,'IRDaikin64::getTemp()'],['../classIRDelonghiAc.html#a1c2d1e8a10cac59b9ef925a26191c99c',1,'IRDelonghiAc::getTemp()'],['../classIREcoclimAc.html#a4a0a22deb136371f5d93c40363cc65e9',1,'IREcoclimAc::getTemp()'],['../classIRElectraAc.html#ab3ac984ca54b6a7f7b89db6c6c664c1b',1,'IRElectraAc::getTemp()'],['../classIRFujitsuAC.html#aba877f65241647ab1e59f3d68026c906',1,'IRFujitsuAC::getTemp()'],['../classIRGoodweatherAc.html#a253e92453136f37c3082a5d492d45c82',1,'IRGoodweatherAc::getTemp()'],['../classIRGreeAC.html#a909b49c3ca07a8b38e1fe1ceae668998',1,'IRGreeAC::getTemp()'],['../classIRHaierAC.html#aa6f23534e63039527bf92fc85fed2e2c',1,'IRHaierAC::getTemp()'],['../classIRHaierACYRW02.html#a29cf50881ef62c18499e81a43c717c46',1,'IRHaierACYRW02::getTemp()'],['../classIRHitachiAc.html#a480338cf955af5d613f28f7f227f4b96',1,'IRHitachiAc::getTemp()'],['../classIRHitachiAc1.html#a3ce1fdb58c722d78ca2f94ed81b5a12c',1,'IRHitachiAc1::getTemp()'],['../classIRHitachiAc424.html#a166d3d7cd9028d906a7a259902c8898c',1,'IRHitachiAc424::getTemp()'],['../classIRKelonAc.html#aaf519bf89bb0b93513c59051ed61a052',1,'IRKelonAc::getTemp()'],['../classIRKelvinatorAC.html#a6b7c66f0bc68f2d43fbbabce7933e0a5',1,'IRKelvinatorAC::getTemp()'],['../classIRLgAc.html#ab31fa58db72e02efe836e398d8c4ac85',1,'IRLgAc::getTemp()'],['../classIRMideaAC.html#a319f5ca24e977a6b7f0df93324dab63e',1,'IRMideaAC::getTemp()'],['../classIRMitsubishiAC.html#ae77c2975bd1a0fd3dcebff4fc4a8ac1b',1,'IRMitsubishiAC::getTemp()'],['../classIRMitsubishi136.html#ab6bb4c13ee3507fd048e5213eca9be4f',1,'IRMitsubishi136::getTemp()'],['../classIRMitsubishi112.html#a0076a6a8181b50148a7aff68637c040d',1,'IRMitsubishi112::getTemp()'],['../classIRMitsubishiHeavy152Ac.html#a78bf8b8e2af65a8800bb1f0c7e6c2ec6',1,'IRMitsubishiHeavy152Ac::getTemp()'],['../classIRMitsubishiHeavy88Ac.html#aa8bf74217098c414306d0fc50e0beaa7',1,'IRMitsubishiHeavy88Ac::getTemp()'],['../classIRNeoclimaAc.html#a08bf660c8662806e60cf1024eb219b60',1,'IRNeoclimaAc::getTemp()'],['../classIRPanasonicAc.html#af8a5607c317e541752fada6ca79ee80f',1,'IRPanasonicAc::getTemp()'],['../classIRPanasonicAc32.html#a1813480b9ecf4cee49d41f3da84f2e9f',1,'IRPanasonicAc32::getTemp()'],['../classIRSamsungAc.html#a1e770b7736fe5602bb49d82a5c3b0dd2',1,'IRSamsungAc::getTemp()'],['../classIRSanyoAc.html#a92c72388fd6c948f1869f7b4e46ee1ee',1,'IRSanyoAc::getTemp()'],['../classIRSharpAc.html#af92f3a2d3932cbd21373f556a49c90a5',1,'IRSharpAc::getTemp()'],['../classIRTcl112Ac.html#a0b67c42831d2f6af39a5512bbf290ec7',1,'IRTcl112Ac::getTemp()'],['../classIRTechnibelAc.html#aef4e87289ee51b68ef8da511833c15f4',1,'IRTechnibelAc::getTemp()'],['../classIRTecoAc.html#adb87a792c60fd2698f9333d96327dba7',1,'IRTecoAc::getTemp()'],['../classIRToshibaAC.html#af7321d15910eef276a6a716e868f9fcf',1,'IRToshibaAC::getTemp()'],['../classIRTranscoldAc.html#a73c260bf13212948872a96ce17d5adb7',1,'IRTranscoldAc::getTemp()'],['../classIRTrotecESP.html#a387cfde6cb1911aa0605f4215527e1b0',1,'IRTrotecESP::getTemp()'],['../classIRTrumaAc.html#a779a279fe607c42f2b4a7b4ff8eaf13f',1,'IRTrumaAc::getTemp()'],['../classIRVestelAc.html#a822bb550803b7fbb1ae9f00c51279259',1,'IRVestelAc::getTemp()'],['../classIRVoltas.html#a94571ef1d0844e0e6ca1b9a82b69ce10',1,'IRVoltas::getTemp()'],['../classIRWhirlpoolAc.html#ae9b6764f01ea525e86bdd5288715992d',1,'IRWhirlpoolAc::getTemp()']]], - ['gettempoffset_504',['getTempOffset',['../classIRWhirlpoolAc.html#abb44b09321ea607d170b59bbc30d5c49',1,'IRWhirlpoolAc']]], - ['gettempraw_505',['getTempRaw',['../classIRCoolixAC.html#a83e88b3f9d648ffd607db457fea401bc',1,'IRCoolixAC']]], - ['gettempunit_506',['getTempUnit',['../classIRDelonghiAc.html#a444276a706d2b5099eab4452cfe4712d',1,'IRDelonghiAc::getTempUnit()'],['../classIRTechnibelAc.html#a19c61ade2ad976dd93108cafabe6a23f',1,'IRTechnibelAc::getTempUnit()']]], - ['gettempunits_507',['getTempUnits',['../classIRNeoclimaAc.html#a14074dc932bd554c3c1746e6b0ecf43c',1,'IRNeoclimaAc']]], - ['gettime_508',['getTime',['../classIRVestelAc.html#a7310f2d251aaba0467718fb8c8983f3d',1,'IRVestelAc']]], - ['gettimer_509',['getTimer',['../classIRGreeAC.html#a3e58e19819ae3b74d8fa9c9eca2f8be9',1,'IRGreeAC::getTimer()'],['../classIRKelonAc.html#a4e24235f913ebda516a14fb6629a0a67',1,'IRKelonAc::getTimer()'],['../classIRMitsubishiAC.html#a595e06747e8d1b2d7bc22dad17c0e9d2',1,'IRMitsubishiAC::getTimer()'],['../classIRTechnibelAc.html#a631b234cfb8445785ee3cfbbeb1366d3',1,'IRTechnibelAc::getTimer()'],['../classIRTecoAc.html#a3a9a48da5f42ae26f1c2f250702744f6',1,'IRTecoAc::getTimer()'],['../classIRTrotecESP.html#a85fb0a416c58c4f05af3abae2ae5c115',1,'IRTrotecESP::getTimer()'],['../classIRVestelAc.html#afa445ac18ef2b872a10c6048b222e90c',1,'IRVestelAc::getTimer()']]], - ['gettimerenabled_510',['getTimerEnabled',['../classIRGreeAC.html#a483ddaec91302343cef14b0c5024b965',1,'IRGreeAC::getTimerEnabled()'],['../classIRKelonAc.html#a5ff072da7dc5215bfb9140c638f10061',1,'IRKelonAc::getTimerEnabled()'],['../classIRSharpAc.html#ae9147b6dd3011b223e811dff34b08e20',1,'IRSharpAc::getTimerEnabled()'],['../classIRTechnibelAc.html#a86d21954cfc55f2dbb9d3ee8adb1a5d6',1,'IRTechnibelAc::getTimerEnabled()'],['../classIRTecoAc.html#a82ab7f210c10406b2a30f41f129d4a39',1,'IRTecoAc::getTimerEnabled()']]], - ['gettimertime_511',['getTimerTime',['../classIRSharpAc.html#a1a035d3d9da5998a342e6a644a8ac1ba',1,'IRSharpAc']]], - ['gettimertype_512',['getTimerType',['../classIRFujitsuAC.html#a9bbc0e019e58bb990318432db75e8468',1,'IRFujitsuAC::getTimerType()'],['../classIRSharpAc.html#aeab6fe3c2c2777db4d09375868008f00',1,'IRSharpAc::getTimerType()']]], - ['gettogglepower_513',['getTogglePower',['../classIRKelonAc.html#acf437757e5ee534da08cf1d0ec1c7445',1,'IRKelonAc']]], - ['gettoggleswingvertical_514',['getToggleSwingVertical',['../classIRKelonAc.html#a4fa220013c5c72afbcbeba4ac0063feb',1,'IRKelonAc']]], - ['gettolerance_515',['getTolerance',['../classIRrecv.html#a144f64da3b44708394c06b0fbefb6347',1,'IRrecv']]], - ['getturbo_516',['getTurbo',['../classIRCoolixAC.html#a31f5e82c5e68b1a0b41f4025885bf0cb',1,'IRCoolixAC::getTurbo()'],['../classIRDaikin64.html#a78016d0d11e22ad12020bf96125426d9',1,'IRDaikin64::getTurbo()'],['../classIRElectraAc.html#abfc42bc97c9dc41115383895abe15292',1,'IRElectraAc::getTurbo()'],['../classIRGoodweatherAc.html#a2f15a3c8063af85bc81f3a5f3bcacb5e',1,'IRGoodweatherAc::getTurbo()'],['../classIRGreeAC.html#a3558ad573c7762c1d0f076fd336805eb',1,'IRGreeAC::getTurbo()'],['../classIRHaierACYRW02.html#a0cd7297948d7dd8aafe35775cf26b543',1,'IRHaierACYRW02::getTurbo()'],['../classIRKelvinatorAC.html#aee37bb608940cb0214e1d0c0046c8eee',1,'IRKelvinatorAC::getTurbo()'],['../classIRMitsubishiHeavy152Ac.html#a39a5bfc53cc81ab08835e8e4c30854de',1,'IRMitsubishiHeavy152Ac::getTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a4f1281e42d3eee7824233d8a4f8d37cb',1,'IRMitsubishiHeavy88Ac::getTurbo()'],['../classIRNeoclimaAc.html#a95af8bbe9500fc2f99d30214e38fae85',1,'IRNeoclimaAc::getTurbo()'],['../classIRSharpAc.html#a6b38ef7a3a8fdc4e6f8f3e02336a4e19',1,'IRSharpAc::getTurbo()'],['../classIRTcl112Ac.html#a044a8f5f05a4bbc10bac155b49d27ee5',1,'IRTcl112Ac::getTurbo()'],['../classIRToshibaAC.html#aaf9aa3601885a3d869c2e9dbcd581a93',1,'IRToshibaAC::getTurbo()'],['../classIRVestelAc.html#aa492c2fc2d3ff33cdcc53abe8ecd6ea5',1,'IRVestelAc::getTurbo()'],['../classIRVoltas.html#a0fa61b04f473f208a40059554f6a054b',1,'IRVoltas::getTurbo()']]], - ['getturbotoggle_517',['getTurboToggle',['../classIRMideaAC.html#a33cf363d9dd94f46005a0be40bd224ff',1,'IRMideaAC']]], - ['gettype_518',['getType',['../classIREcoclimAc.html#a3a924cc4b0cc7dc1b6eb4a8423785ddb',1,'IREcoclimAc::getType()'],['../classIRMideaAC.html#a1b1c0afbb0b9d7ba93e61df2b339cd14',1,'IRMideaAC::getType()']]], - ['getusecelsius_519',['getUseCelsius',['../classIRMideaAC.html#a7904de4572d80c0eafe4975682b3ea29',1,'IRMideaAC']]], - ['getusefahrenheit_520',['getUseFahrenheit',['../classIRGreeAC.html#a55b6dd1354b7246ce959d563dfdfcba4',1,'IRGreeAC']]], - ['getvane_521',['getVane',['../classIRMitsubishiAC.html#a547a2d4fd52162ece0276978da22d456',1,'IRMitsubishiAC']]], - ['getweeklytimerenable_522',['getWeeklyTimerEnable',['../classIRDaikinESP.html#a59a0e9726b97887b27a2f869d249b1b7',1,'IRDaikinESP']]], - ['getweeklytimerenabled_523',['getWeeklyTimerEnabled',['../classIRMitsubishiAC.html#a6da4a89e5ce71c2283d9318c2f26e46e',1,'IRMitsubishiAC']]], - ['getwidevane_524',['getWideVane',['../classIRMitsubishiAC.html#a6d6008f7d374113cc6b5c3a4f298a287',1,'IRMitsubishiAC']]], - ['getwifi_525',['getWiFi',['../classIRGreeAC.html#a9e9fb9867977764cac7afdee7083d0a1',1,'IRGreeAC::getWiFi()'],['../classIRVoltas.html#a13460412829d204fe2e51e75188998d2',1,'IRVoltas::getWifi()']]], - ['getxfan_526',['getXFan',['../classIRGreeAC.html#aa8111e44470062729b56b24268d20eed',1,'IRGreeAC::getXFan()'],['../classIRKelvinatorAC.html#a3ba6705529806f3ca083dd45f4b28377',1,'IRKelvinatorAC::getXFan()']]], - ['getzonefollow_527',['getZoneFollow',['../classIRCoolixAC.html#acf811a44dfd28627ce352fd79e7ffec5',1,'IRCoolixAC']]], - ['gicable_528',['GICABLE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac8f9010b746a07a7a6329d1b336b68cf',1,'IRremoteESP8266.h']]], - ['globalcache_529',['GLOBALCACHE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf8c11b983768907fdb625ff9fb3729d2',1,'IRremoteESP8266.h']]], - ['goodweather_530',['goodweather',['../classIRac.html#ac47ff5c6faf41e6fb37df258a8bafc08',1,'IRac::goodweather()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9e8d893590b745f6b1b5ffcb556d9cba',1,'GOODWEATHER(): IRremoteESP8266.h']]], - ['goodweatherprotocol_531',['GoodweatherProtocol',['../unionGoodweatherProtocol.html',1,'']]], - ['gree_532',['gree',['../classIRac.html#ab66e48b039c9990bf97cd8c2512a6c70',1,'IRac::gree()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae3a5e7c315f6f88b34a4c856f280ed83',1,'GREE(): IRremoteESP8266.h']]], - ['gree_5fac_5fremote_5fmodel_5ft_533',['gree_ac_remote_model_t',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9',1,'IRsend.h']]], - ['greeprotocol_534',['GreeProtocol',['../unionGreeProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.html deleted file mode 100644 index cf2b5df92..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.js deleted file mode 100644 index cc055eb6e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_8.js +++ /dev/null @@ -1,41 +0,0 @@ -var searchData= -[ - ['haier_535',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], - ['haier_5fac_536',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]], - ['haier_5fac176_537',['HAIER_AC176',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5840c3d0e9c83ef706b600ba78854209',1,'IRremoteESP8266.h']]], - ['haier_5fac_5fyrw02_538',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]], - ['haierprotocol_539',['HaierProtocol',['../unionHaierProtocol.html',1,'']]], - ['haieryrw02protocol_540',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]], - ['haieryrwo2_541',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], - ['halfdegree_542',['HalfDegree',['../unionMitsubishi144Protocol.html#a5dd9bbf66e0f25d17a836346ad37d303',1,'Mitsubishi144Protocol::HalfDegree()'],['../unionTcl112Protocol.html#a38ef38c4d67dfae2a1927ce756bba84a',1,'Tcl112Protocol::HalfDegree()']]], - ['halfhour_543',['HalfHour',['../unionTecoProtocol.html#ae7eed85a01e7041535279d98ef65cf6a',1,'TecoProtocol']]], - ['handlespecialstate_544',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC::handleSpecialState()'],['../classIRTranscoldAc.html#a01a3e3f8f92b8fb3b6d023e595f3ce17',1,'IRTranscoldAc::handleSpecialState()']]], - ['handletoggles_545',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], - ['hasacstate_546',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], - ['hasinvertedstates_547',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], - ['hasstatechanged_548',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], - ['header_549',['Header',['../unionMideaProtocol.html#a892508b7b4cade91dd2e315b678f5f1b',1,'MideaProtocol::Header()'],['../unionTechnibelProtocol.html#a54fd7409b3eb2ccb826ab55f7ab3a4c9',1,'TechnibelProtocol::Header()']]], - ['header0_550',['Header0',['../structCoronaSection.html#a3b3c0a1a42da65bb4b481e59b42f26a6',1,'CoronaSection']]], - ['header1_551',['Header1',['../structCoronaSection.html#a3d6d6c1e31f82a76cd88f81bcdb83a3a',1,'CoronaSection']]], - ['health_552',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()'],['../unionTcl112Protocol.html#a2dce97bdebb2d9a2648d7e8e83ed892d',1,'Tcl112Protocol::Health()']]], - ['heat_5fmode_553',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]], - ['hitachi_554',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], - ['hitachi1_555',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], - ['hitachi1protocol_556',['Hitachi1Protocol',['../unionHitachi1Protocol.html',1,'']]], - ['hitachi344_557',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], - ['hitachi424_558',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], - ['hitachi424protocol_559',['Hitachi424Protocol',['../unionHitachi424Protocol.html',1,'']]], - ['hitachi_5fac_560',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_561',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_5fremote_5fmodel_5ft_562',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]], - ['hitachi_5fac2_563',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]], - ['hitachi_5fac3_564',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]], - ['hitachi_5fac344_565',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]], - ['hitachi_5fac424_566',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]], - ['hitachiprotocol_567',['HitachiProtocol',['../unionHitachiProtocol.html',1,'']]], - ['hold_568',['Hold',['../unionNeoclimaProtocol.html#aaf3af5b5ab99978fb669e75949bfe136',1,'NeoclimaProtocol']]], - ['hours_569',['Hours',['../unionTrotecProtocol.html#acbcd8e075d48cdd5c4570cbab50643b1',1,'TrotecProtocol::Hours()'],['../unionVestelProtocol.html#a38a88b6bd1cbf6eb2a47fcc53768397f',1,'VestelProtocol::Hours()']]], - ['htmlescape_570',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]], - ['humid_571',['Humid',['../unionTecoProtocol.html#a37db4d115d1b1bef9f71fa7bccb1865f',1,'TecoProtocol']]], - ['hw_5ftimer_5ft_572',['hw_timer_t',['../IRrecv_8cpp.html#a6d06e662914b9ad7eeaea3cb650292c0',1,'IRrecv.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.html deleted file mode 100644 index 690785a5d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.js deleted file mode 100644 index ce640b88e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_9.js +++ /dev/null @@ -1,215 +0,0 @@ -var searchData= -[ - ['i18n_2eh_573',['i18n.h',['../i18n_8h.html',1,'']]], - ['id_574',['Id',['../unionFujitsuProtocol.html#ac3f6bb6208623f0842fa640fb183305c',1,'FujitsuProtocol']]], - ['ifeel_575',['iFeel',['../unionArgoProtocol.html#a9d51b32b8e2b2ff08339be238a775097',1,'ArgoProtocol::iFeel()'],['../unionGreeProtocol.html#a592364307a4b11064888bda76c403142',1,'GreeProtocol::IFeel()']]], - ['inax_576',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]], - ['irremoteesp8266_20library_20api_20documentation_577',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], - ['initstate_578',['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)']]], - ['int64tostring_579',['int64ToString',['../IRutils_8cpp.html#aa1beb5c8700b91d8e5419bafd0a1ed84',1,'int64ToString(int64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a1c9b605bf161ffe454f31ef7f91ddede',1,'int64ToString(int64_t input, uint8_t base=10): IRutils.cpp']]], - ['intro1_580',['Intro1',['../unionTrotecProtocol.html#afc82e5449c9d83af40c7235e220eb237',1,'TrotecProtocol']]], - ['intro2_581',['Intro2',['../unionTrotecProtocol.html#a2f665441f11df93e2c779ce4343a8441',1,'TrotecProtocol']]], - ['invertbits_582',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], - ['invertbytepairs_583',['invertBytePairs',['../namespaceirutils.html#ad818a474349546c84824451a5468f4fe',1,'irutils']]], - ['ion_584',['Ion',['../unionNeoclimaProtocol.html#aeee2a3f53f997ad7ffdbef2b5b6ee31a',1,'NeoclimaProtocol::Ion()'],['../unionSamsungProtocol.html#a977ae7e0e4cea918e4b4a714b25bb4ca',1,'SamsungProtocol::Ion()'],['../unionSharpProtocol.html#ae744f63f03d1c13fbd5bbcf8f40aea0e',1,'SharpProtocol::Ion()'],['../unionVestelProtocol.html#a532ca8ba3bbebc8e61853409aacd7ad9',1,'VestelProtocol::Ion()']]], - ['ionfilter_585',['IonFilter',['../unionKelvinatorProtocol.html#ad7c762e410c8cba234614563cdc9d384',1,'KelvinatorProtocol']]], - ['ir_5fairwell_2ecpp_586',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], - ['ir_5fairwell_2eh_587',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]], - ['ir_5faiwa_2ecpp_588',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], - ['ir_5famcor_2ecpp_589',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], - ['ir_5famcor_2eh_590',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], - ['ir_5fargo_2ecpp_591',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], - ['ir_5fargo_2eh_592',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], - ['ir_5fcarrier_2ecpp_593',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], - ['ir_5fcarrier_2eh_594',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], - ['ir_5fcoolix_2ecpp_595',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], - ['ir_5fcoolix_2eh_596',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], - ['ir_5fcorona_2ecpp_597',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], - ['ir_5fcorona_2eh_598',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], - ['ir_5fdaikin_2ecpp_599',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], - ['ir_5fdaikin_2eh_600',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], - ['ir_5fdelonghi_2ecpp_601',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], - ['ir_5fdelonghi_2eh_602',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], - ['ir_5fdenon_2ecpp_603',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], - ['ir_5fdish_2ecpp_604',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], - ['ir_5fdoshisha_2ecpp_605',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], - ['ir_5fecoclim_2ecpp_606',['ir_Ecoclim.cpp',['../ir__Ecoclim_8cpp.html',1,'']]], - ['ir_5fecoclim_2eh_607',['ir_Ecoclim.h',['../ir__Ecoclim_8h.html',1,'']]], - ['ir_5felectra_2ecpp_608',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], - ['ir_5felectra_2eh_609',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], - ['ir_5felitescreens_2ecpp_610',['ir_EliteScreens.cpp',['../ir__EliteScreens_8cpp.html',1,'']]], - ['ir_5fepson_2ecpp_611',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], - ['ir_5ffujitsu_2ecpp_612',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], - ['ir_5ffujitsu_2eh_613',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], - ['ir_5fgicable_2ecpp_614',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], - ['ir_5fglobalcache_2ecpp_615',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], - ['ir_5fgoodweather_2ecpp_616',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], - ['ir_5fgoodweather_2eh_617',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], - ['ir_5fgree_2ecpp_618',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], - ['ir_5fgree_2eh_619',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], - ['ir_5fhaier_2ecpp_620',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], - ['ir_5fhaier_2eh_621',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], - ['ir_5fhitachi_2ecpp_622',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], - ['ir_5fhitachi_2eh_623',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], - ['ir_5finax_2ecpp_624',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], - ['ir_5fjvc_2ecpp_625',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], - ['ir_5fkelon_2ecpp_626',['ir_Kelon.cpp',['../ir__Kelon_8cpp.html',1,'']]], - ['ir_5fkelon_2eh_627',['ir_Kelon.h',['../ir__Kelon_8h.html',1,'']]], - ['ir_5fkelvinator_2ecpp_628',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], - ['ir_5fkelvinator_2eh_629',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], - ['ir_5flasertag_2ecpp_630',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], - ['ir_5flego_2ecpp_631',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], - ['ir_5flg_2ecpp_632',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], - ['ir_5flg_2eh_633',['ir_LG.h',['../ir__LG_8h.html',1,'']]], - ['ir_5flutron_2ecpp_634',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], - ['ir_5fmagiquest_2ecpp_635',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], - ['ir_5fmagiquest_2eh_636',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], - ['ir_5fmetz_2ecpp_637',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]], - ['ir_5fmidea_2ecpp_638',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], - ['ir_5fmidea_2eh_639',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], - ['ir_5fmilestag2_2ecpp_640',['ir_MilesTag2.cpp',['../ir__MilesTag2_8cpp.html',1,'']]], - ['ir_5fmirage_2ecpp_641',['ir_Mirage.cpp',['../ir__Mirage_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2ecpp_642',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2eh_643',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], - ['ir_5fmitsubishiheavy_2ecpp_644',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], - ['ir_5fmitsubishiheavy_2eh_645',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], - ['ir_5fmultibrackets_2ecpp_646',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], - ['ir_5fmwm_2ecpp_647',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], - ['ir_5fnec_2ecpp_648',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], - ['ir_5fnec_2eh_649',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], - ['ir_5fneoclima_2ecpp_650',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], - ['ir_5fneoclima_2eh_651',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], - ['ir_5fnikai_2ecpp_652',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], - ['ir_5fpanasonic_2ecpp_653',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], - ['ir_5fpanasonic_2eh_654',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], - ['ir_5fpioneer_2ecpp_655',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], - ['ir_5fpronto_2ecpp_656',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], - ['ir_5frc5_5frc6_2ecpp_657',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], - ['ir_5frcmm_2ecpp_658',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], - ['ir_5fsamsung_2ecpp_659',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], - ['ir_5fsamsung_2eh_660',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], - ['ir_5fsanyo_2ecpp_661',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], - ['ir_5fsanyo_2eh_662',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]], - ['ir_5fsharp_2ecpp_663',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], - ['ir_5fsharp_2eh_664',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], - ['ir_5fsherwood_2ecpp_665',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], - ['ir_5fsony_2ecpp_666',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], - ['ir_5fsymphony_2ecpp_667',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], - ['ir_5ftcl_2ecpp_668',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], - ['ir_5ftcl_2eh_669',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], - ['ir_5ftechnibel_2ecpp_670',['ir_Technibel.cpp',['../ir__Technibel_8cpp.html',1,'']]], - ['ir_5ftechnibel_2eh_671',['ir_Technibel.h',['../ir__Technibel_8h.html',1,'']]], - ['ir_5fteco_2ecpp_672',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], - ['ir_5fteco_2eh_673',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], - ['ir_5fteknopoint_2ecpp_674',['ir_Teknopoint.cpp',['../ir__Teknopoint_8cpp.html',1,'']]], - ['ir_5ftoshiba_2ecpp_675',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], - ['ir_5ftoshiba_2eh_676',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], - ['ir_5ftranscold_2ecpp_677',['ir_Transcold.cpp',['../ir__Transcold_8cpp.html',1,'']]], - ['ir_5ftranscold_2eh_678',['ir_Transcold.h',['../ir__Transcold_8h.html',1,'']]], - ['ir_5ftrotec_2ecpp_679',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], - ['ir_5ftrotec_2eh_680',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], - ['ir_5ftruma_2ecpp_681',['ir_Truma.cpp',['../ir__Truma_8cpp.html',1,'']]], - ['ir_5ftruma_2eh_682',['ir_Truma.h',['../ir__Truma_8h.html',1,'']]], - ['ir_5fvestel_2ecpp_683',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], - ['ir_5fvestel_2eh_684',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], - ['ir_5fvoltas_2ecpp_685',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]], - ['ir_5fvoltas_2eh_686',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]], - ['ir_5fwhirlpool_2ecpp_687',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], - ['ir_5fwhirlpool_2eh_688',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], - ['ir_5fwhynter_2ecpp_689',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], - ['ir_5fxmp_2ecpp_690',['ir_Xmp.cpp',['../ir__Xmp_8cpp.html',1,'']]], - ['ir_5fzepeal_2ecpp_691',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], - ['irac_692',['IRac',['../classIRac.html',1,'IRac'],['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac::IRac()']]], - ['irac_2ecpp_693',['IRac.cpp',['../IRac_8cpp.html',1,'']]], - ['irac_2eh_694',['IRac.h',['../IRac_8h.html',1,'']]], - ['iracutils_695',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], - ['irairwellac_696',['IRAirwellAc',['../classIRAirwellAc.html',1,'IRAirwellAc'],['../classIRAirwellAc.html#a38cfe20bff4522034b16d64df64750e8',1,'IRAirwellAc::IRAirwellAc()']]], - ['iramcorac_697',['IRAmcorAc',['../classIRAmcorAc.html',1,'IRAmcorAc'],['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc::IRAmcorAc()']]], - ['irargoac_698',['IRArgoAC',['../classIRArgoAC.html',1,'IRArgoAC'],['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC::IRArgoAC()']]], - ['ircarrierac64_699',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'IRCarrierAc64'],['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64::IRCarrierAc64()']]], - ['ircoolixac_700',['IRCoolixAC',['../classIRCoolixAC.html',1,'IRCoolixAC'],['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC::IRCoolixAC()']]], - ['ircoronaac_701',['IRCoronaAc',['../classIRCoronaAc.html',1,'IRCoronaAc'],['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc::IRCoronaAc()']]], - ['irdaikin128_702',['IRDaikin128',['../classIRDaikin128.html',1,'IRDaikin128'],['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128::IRDaikin128()']]], - ['irdaikin152_703',['IRDaikin152',['../classIRDaikin152.html',1,'IRDaikin152'],['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152::IRDaikin152()']]], - ['irdaikin160_704',['IRDaikin160',['../classIRDaikin160.html',1,'IRDaikin160'],['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160::IRDaikin160()']]], - ['irdaikin176_705',['IRDaikin176',['../classIRDaikin176.html',1,'IRDaikin176'],['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176::IRDaikin176()']]], - ['irdaikin2_706',['IRDaikin2',['../classIRDaikin2.html',1,'IRDaikin2'],['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2::IRDaikin2()']]], - ['irdaikin216_707',['IRDaikin216',['../classIRDaikin216.html',1,'IRDaikin216'],['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216::IRDaikin216()']]], - ['irdaikin64_708',['IRDaikin64',['../classIRDaikin64.html',1,'IRDaikin64'],['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64::IRDaikin64()']]], - ['irdaikinesp_709',['IRDaikinESP',['../classIRDaikinESP.html',1,'IRDaikinESP'],['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP::IRDaikinESP()']]], - ['irdelonghiac_710',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'IRDelonghiAc'],['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc::IRDelonghiAc()']]], - ['irecoclimac_711',['IREcoclimAc',['../classIREcoclimAc.html',1,'IREcoclimAc'],['../classIREcoclimAc.html#a72a2d765c86a780162c59041e7146f19',1,'IREcoclimAc::IREcoclimAc()']]], - ['irelectraac_712',['IRElectraAc',['../classIRElectraAc.html',1,'IRElectraAc'],['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc::IRElectraAc()']]], - ['irfujitsuac_713',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'IRFujitsuAC'],['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC::IRFujitsuAC()']]], - ['irgoodweatherac_714',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'IRGoodweatherAc'],['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc::IRGoodweatherAc()']]], - ['irgreeac_715',['IRGreeAC',['../classIRGreeAC.html',1,'IRGreeAC'],['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC::IRGreeAC()']]], - ['irhaierac_716',['IRHaierAC',['../classIRHaierAC.html',1,'IRHaierAC'],['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC::IRHaierAC()']]], - ['irhaieracyrw02_717',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'IRHaierACYRW02'],['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02::IRHaierACYRW02()']]], - ['irhitachiac_718',['IRHitachiAc',['../classIRHitachiAc.html',1,'IRHitachiAc'],['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc::IRHitachiAc()']]], - ['irhitachiac1_719',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'IRHitachiAc1'],['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1::IRHitachiAc1()']]], - ['irhitachiac3_720',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'IRHitachiAc3'],['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3::IRHitachiAc3()']]], - ['irhitachiac344_721',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'IRHitachiAc344'],['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424::IRHitachiAc344()'],['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344::IRHitachiAc344()']]], - ['irhitachiac424_722',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'IRHitachiAc424'],['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424::IRHitachiAc424()']]], - ['irkelonac_723',['IRKelonAc',['../classIRKelonAc.html',1,'IRKelonAc'],['../classIRKelonAc.html#aad3fc6341d978c41eb3dab1259a1ab54',1,'IRKelonAc::IRKelonAc()']]], - ['irkelvinatorac_724',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'IRKelvinatorAC'],['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC::IRKelvinatorAC()']]], - ['irlgac_725',['IRLgAc',['../classIRLgAc.html',1,'IRLgAc'],['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc::IRLgAc()']]], - ['irmideaac_726',['IRMideaAC',['../classIRMideaAC.html',1,'IRMideaAC'],['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC::IRMideaAC()']]], - ['irmitsubishi112_727',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'IRMitsubishi112'],['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112::IRMitsubishi112()']]], - ['irmitsubishi136_728',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'IRMitsubishi136'],['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136::IRMitsubishi136()']]], - ['irmitsubishiac_729',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'IRMitsubishiAC'],['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC::IRMitsubishiAC()']]], - ['irmitsubishiheavy152ac_730',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'IRMitsubishiHeavy152Ac'],['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac::IRMitsubishiHeavy152Ac()']]], - ['irmitsubishiheavy88ac_731',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'IRMitsubishiHeavy88Ac'],['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac::IRMitsubishiHeavy88Ac()']]], - ['irneoclimaac_732',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'IRNeoclimaAc'],['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc::IRNeoclimaAc()']]], - ['irpanasonicac_733',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'IRPanasonicAc'],['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc::IRPanasonicAc()']]], - ['irpanasonicac32_734',['IRPanasonicAc32',['../classIRPanasonicAc32.html',1,'IRPanasonicAc32'],['../classIRPanasonicAc32.html#ade8637984d8c1d5d881dc636d501676d',1,'IRPanasonicAc32::IRPanasonicAc32()']]], - ['irparams_5fsave_735',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv']]], - ['irparams_5ft_736',['irparams_t',['../structirparams__t.html',1,'']]], - ['irpin_737',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]], - ['irrecv_738',['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_739',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], - ['irrecv_2eh_740',['IRrecv.h',['../IRrecv_8h.html',1,'']]], - ['irremoteesp8266_2eh_741',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], - ['irsamsungac_742',['IRSamsungAc',['../classIRSamsungAc.html',1,'IRSamsungAc'],['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc::IRSamsungAc()']]], - ['irsanyoac_743',['IRSanyoAc',['../classIRSanyoAc.html',1,'IRSanyoAc'],['../classIRSanyoAc.html#ab7b9a1f1685993b95807f7e48624e4e2',1,'IRSanyoAc::IRSanyoAc()']]], - ['irsend_744',['IRsend',['../classIRsend.html',1,'IRsend'],['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend::IRsend()']]], - ['irsend_2ecpp_745',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], - ['irsend_2eh_746',['IRsend.h',['../IRsend_8h.html',1,'']]], - ['irsharpac_747',['IRSharpAc',['../classIRSharpAc.html',1,'IRSharpAc'],['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc::IRSharpAc()']]], - ['irtcl112ac_748',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'IRTcl112Ac'],['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac::IRTcl112Ac()']]], - ['irtechnibelac_749',['IRTechnibelAc',['../classIRTechnibelAc.html',1,'IRTechnibelAc'],['../classIRTechnibelAc.html#a799407de348870d5765acf163ab92a75',1,'IRTechnibelAc::IRTechnibelAc()']]], - ['irtecoac_750',['IRTecoAc',['../classIRTecoAc.html',1,'IRTecoAc'],['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc::IRTecoAc()']]], - ['irtext_2ecpp_751',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], - ['irtext_2eh_752',['IRtext.h',['../IRtext_8h.html',1,'']]], - ['irtimer_753',['IRtimer',['../classIRtimer.html',1,'IRtimer'],['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer::IRtimer()']]], - ['irtimer_2ecpp_754',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], - ['irtimer_2eh_755',['IRtimer.h',['../IRtimer_8h.html',1,'']]], - ['irtoshibaac_756',['IRToshibaAC',['../classIRToshibaAC.html',1,'IRToshibaAC'],['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC::IRToshibaAC()']]], - ['irtranscoldac_757',['IRTranscoldAc',['../classIRTranscoldAc.html',1,'IRTranscoldAc'],['../classIRTranscoldAc.html#a155278b9e5803aacf69a1ae20ed5b652',1,'IRTranscoldAc::IRTranscoldAc()']]], - ['irtrotecesp_758',['IRTrotecESP',['../classIRTrotecESP.html',1,'IRTrotecESP'],['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP::IRTrotecESP()']]], - ['irtrumaac_759',['IRTrumaAc',['../classIRTrumaAc.html',1,'IRTrumaAc'],['../classIRTrumaAc.html#a02171342bc69c38b9d13930bfd5c44ff',1,'IRTrumaAc::IRTrumaAc()']]], - ['irutils_760',['irutils',['../namespaceirutils.html',1,'']]], - ['irutils_2ecpp_761',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], - ['irutils_2eh_762',['IRutils.h',['../IRutils_8h.html',1,'']]], - ['irvestelac_763',['IRVestelAc',['../classIRVestelAc.html',1,'IRVestelAc'],['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc::IRVestelAc()']]], - ['irvoltas_764',['IRVoltas',['../classIRVoltas.html',1,'IRVoltas'],['../classIRVoltas.html#a4bfb0c5b16507d330abea2a9147f8332',1,'IRVoltas::IRVoltas()']]], - ['irwhirlpoolac_765',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'IRWhirlpoolAc'],['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc::IRWhirlpoolAc()']]], - ['irxmputils_766',['IRXmpUtils',['../namespaceIRXmpUtils.html',1,'']]], - ['iseconotoggle_767',['isEconoToggle',['../classIRMideaAC.html#a227aeed678af6da49b510cb67b02991e',1,'IRMideaAC']]], - ['islighttoggle_768',['isLightToggle',['../classIRMideaAC.html#ac0f321a8a38bd2cecf453c6aff9020e6',1,'IRMideaAC']]], - ['isofftimeractive_769',['isOffTimerActive',['../classIRVestelAc.html#ae000ce54cedc707ba8e3dc025b506b54',1,'IRVestelAc']]], - ['isofftimerenabled_770',['isOffTimerEnabled',['../classIREcoclimAc.html#aa819b7f8deff0823a6e6b59d2decace1',1,'IREcoclimAc::isOffTimerEnabled()'],['../classIRMideaAC.html#a10aa3386a15b46c62083baaca3bcf699',1,'IRMideaAC::isOffTimerEnabled()'],['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a00ee5757db34855f39d225a9467f2268',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], - ['isontimeractive_771',['isOnTimerActive',['../classIRVestelAc.html#ad9d0a8755026644b8198398278f2457b',1,'IRVestelAc']]], - ['isontimerenabled_772',['isOnTimerEnabled',['../classIREcoclimAc.html#acfa7fbedf65508a7e0cea30f8d87edfd',1,'IREcoclimAc::isOnTimerEnabled()'],['../classIRMideaAC.html#a61f53e462caa1bc8329a6ebadbe47f93',1,'IRMideaAC::isOnTimerEnabled()'],['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#a5cf82e21ff75cc6edb39a42b369240a0',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], - ['ispowerspecial_773',['isPowerSpecial',['../classIRSharpAc.html#ae18f76e03fd9ee8cb5bb8e9b41718e9d',1,'IRSharpAc']]], - ['isprotocolsupported_774',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], - ['isrepeat_775',['isRepeat',['../namespaceIRXmpUtils.html#a25e2d3af57d86fecf7b01b6a0639d0cc',1,'IRXmpUtils']]], - ['isspecialstate_776',['isSpecialState',['../classIRCoolixAC.html#aa9bfc6c78fca87962c9335d60f625322',1,'IRCoolixAC::isSpecialState()'],['../classIRTranscoldAc.html#aacef65f9dc6c1315db1e1af7a09a5dc6',1,'IRTranscoldAc::isSpecialState()']]], - ['isswingvstep_777',['isSwingVStep',['../classIRMideaAC.html#a360aa29e0f6817709644f6b36abce754',1,'IRMideaAC']]], - ['isswingvtoggle_778',['isSwingVToggle',['../classIRMideaAC.html#a5277fa1d077650be0edcf284db50d38b',1,'IRMideaAC']]], - ['istimecommand_779',['isTimeCommand',['../classIRVestelAc.html#a6dd52adaef191c8e735e2d13bc489a9f',1,'IRVestelAc']]], - ['istimeractive_780',['isTimerActive',['../classIRVestelAc.html#a06a63f80a7cdadac86ffbd4f5795b14b',1,'IRVestelAc']]], - ['isturbotoggle_781',['isTurboToggle',['../classIRMideaAC.html#ae40e95fbee35ecc00ebff23c0b64e56d',1,'IRMideaAC']]], - ['isvalidlgac_782',['isValidLgAc',['../classIRLgAc.html#ad35d47f590ee4bd51bfdf9d911bce242',1,'IRLgAc']]], - ['it_2dit_2eh_783',['it-IT.h',['../it-IT_8h.html',1,'']]], - ['internationalisation_20_28i18n_29_20_26_20locale_20files_784',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.html deleted file mode 100644 index f2f3d3a38..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.js deleted file mode 100644 index 2ea97a2df..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['j191_785',['J191',['../unionWhirlpoolProtocol.html#a225b788d0993185a994893fdc572dad1',1,'WhirlpoolProtocol']]], - ['jvc_786',['JVC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b6f507fb4bbd70ee70be4e2e0b0371d',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.html deleted file mode 100644 index 14f34036c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.js deleted file mode 100644 index 2af51652c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_b.js +++ /dev/null @@ -1,2276 +0,0 @@ -var searchData= -[ - ['k10cheatstr_787',['k10CHeatStr',['../IRtext_8cpp.html#afeaf1a56a8fc5d1071593ef1eb6d80b1',1,'k10CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#ac71f0df9b9047c57d22ca4b3d3c3ea82',1,'k10CHeatStr(): IRtext.cpp']]], - ['k3dstr_788',['k3DStr',['../IRtext_8cpp.html#aedbfd5e861447c2cde9f7bb6aade1370',1,'k3DStr(): IRtext.cpp'],['../IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d',1,'k3DStr(): IRtext.cpp']]], - ['k6thsensestr_789',['k6thSenseStr',['../IRtext_8cpp.html#ad0bfc24932f22a599c7e7bf04fb57b10',1,'k6thSenseStr(): IRtext.cpp'],['../IRtext_8h.html#a7425119d393b134c4659db9d35691e35',1,'k6thSenseStr(): IRtext.cpp']]], - ['k8cheatstr_790',['k8CHeatStr',['../IRtext_8cpp.html#ac6ab822edcfe7768cd1a8b0426a1bd59',1,'k8CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8',1,'k8CHeatStr(): IRtext.cpp']]], - ['kairflowstr_791',['kAirFlowStr',['../IRtext_8cpp.html#a7ecf1c6454bbf9963ca85a2bd7d4a34a',1,'kAirFlowStr(): IRtext.cpp'],['../IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180',1,'kAirFlowStr(): IRtext.cpp']]], - ['kairwellauto_792',['kAirwellAuto',['../ir__Airwell_8h.html#a5f3dbadb46874c672e093c5bbb59a97e',1,'ir_Airwell.h']]], - ['kairwellbits_793',['kAirwellBits',['../IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f',1,'IRremoteESP8266.h']]], - ['kairwellcool_794',['kAirwellCool',['../ir__Airwell_8h.html#ab82c81efca876184ab30f24347dfa6af',1,'ir_Airwell.h']]], - ['kairwelldry_795',['kAirwellDry',['../ir__Airwell_8h.html#a1274093143c10ea0208fdfe7b4ebdb02',1,'ir_Airwell.h']]], - ['kairwellfan_796',['kAirwellFan',['../ir__Airwell_8h.html#abcdf6dac387c3fa5bb2eeb0327250ac7',1,'ir_Airwell.h']]], - ['kairwellfanauto_797',['kAirwellFanAuto',['../ir__Airwell_8h.html#a40c8e262e6e6084c1d069bebb6a0fcb1',1,'ir_Airwell.h']]], - ['kairwellfanhigh_798',['kAirwellFanHigh',['../ir__Airwell_8h.html#ab269b3942bee5458ec89a917d2ab0288',1,'ir_Airwell.h']]], - ['kairwellfanlow_799',['kAirwellFanLow',['../ir__Airwell_8h.html#ab105d4d9a63166f9fbf2dfb47a58a3b7',1,'ir_Airwell.h']]], - ['kairwellfanmedium_800',['kAirwellFanMedium',['../ir__Airwell_8h.html#ac755543eac2fad7bbd1f2727e11aee21',1,'ir_Airwell.h']]], - ['kairwellfootermark_801',['kAirwellFooterMark',['../ir__Airwell_8cpp.html#a2f41c6fe12eb5b3369ffb67fc6333431',1,'ir_Airwell.cpp']]], - ['kairwellhalfclockperiod_802',['kAirwellHalfClockPeriod',['../ir__Airwell_8cpp.html#a955f70631a1bc9be8453ccc9fbb3ecfc',1,'ir_Airwell.cpp']]], - ['kairwellhdrmark_803',['kAirwellHdrMark',['../ir__Airwell_8cpp.html#ad0c7b6c28df61b706eef2ec05506d8c2',1,'ir_Airwell.cpp']]], - ['kairwellhdrspace_804',['kAirwellHdrSpace',['../ir__Airwell_8cpp.html#ad7e80d679eaa5742f261619cc1115567',1,'ir_Airwell.cpp']]], - ['kairwellheat_805',['kAirwellHeat',['../ir__Airwell_8h.html#a0f6e36670946f015d4599ad626300ef7',1,'ir_Airwell.h']]], - ['kairwellknowngoodstate_806',['kAirwellKnownGoodState',['../ir__Airwell_8h.html#ae907f815fab982317d7865525b0294d5',1,'ir_Airwell.h']]], - ['kairwellmaxtemp_807',['kAirwellMaxTemp',['../ir__Airwell_8h.html#adccc14f29d12b3c1e38a2e6a7b820b5f',1,'ir_Airwell.h']]], - ['kairwellminrepeats_808',['kAirwellMinRepeats',['../IRremoteESP8266_8h.html#a669217ae5aa0baa159f7452f53551875',1,'IRremoteESP8266.h']]], - ['kairwellmintemp_809',['kAirwellMinTemp',['../ir__Airwell_8h.html#ad8eef8b76485134c1c5278cae460e028',1,'ir_Airwell.h']]], - ['kairwelloverhead_810',['kAirwellOverhead',['../ir__Airwell_8cpp.html#a8365fb4b254f5eeb6fed59cdc627fead',1,'ir_Airwell.cpp']]], - ['kaiwarct501bits_811',['kAiwaRcT501Bits',['../IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6',1,'IRremoteESP8266.h']]], - ['kaiwarct501minrepeats_812',['kAiwaRcT501MinRepeats',['../IRremoteESP8266_8h.html#ad796714d955b6cc8e207b03058eae5a3',1,'IRremoteESP8266.h']]], - ['kaiwarct501postbits_813',['kAiwaRcT501PostBits',['../ir__Aiwa_8cpp.html#a1ad2ad119febec79cb20bf2356ae4dd4',1,'ir_Aiwa.cpp']]], - ['kaiwarct501postdata_814',['kAiwaRcT501PostData',['../ir__Aiwa_8cpp.html#a5c8aa67edc9ceed9dc398f878930b1cb',1,'ir_Aiwa.cpp']]], - ['kaiwarct501prebits_815',['kAiwaRcT501PreBits',['../ir__Aiwa_8cpp.html#a614f30df204126f234ce1d256406f075',1,'ir_Aiwa.cpp']]], - ['kaiwarct501predata_816',['kAiwaRcT501PreData',['../ir__Aiwa_8cpp.html#a9aafbd2938553c9b97dac6f4e3edee6e',1,'ir_Aiwa.cpp']]], - ['kallprotocolnamesstr_817',['kAllProtocolNamesStr',['../IRtext_8cpp.html#a3ef36cf85e44181ecc4d11085b7abed6',1,'kAllProtocolNamesStr(): IRtext.cpp'],['../IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775',1,'kAllProtocolNamesStr(): IRtext.cpp']]], - ['kalokabits_818',['kAlokaBits',['../IRremoteESP8266_8h.html#a864918ca63a5fe7345688a72d61ddf23',1,'IRremoteESP8266.h']]], - ['kalokaledblue_819',['kAlokaLedBlue',['../ir__NEC_8h.html#a49908cff59d8e7a4926638c74b796c61',1,'ir_NEC.h']]], - ['kalokaledgreen_820',['kAlokaLedGreen',['../ir__NEC_8h.html#aa6c6afc878f4b2a8d4b9349bf6766fb6',1,'ir_NEC.h']]], - ['kalokaledlightgreen_821',['kAlokaLedLightGreen',['../ir__NEC_8h.html#ab2daa6b17fd2d5e30fc47105e4c3c6b6',1,'ir_NEC.h']]], - ['kalokaledmidblue_822',['kAlokaLedMidBlue',['../ir__NEC_8h.html#a47d88027186cd96216bea935ca93d7bc',1,'ir_NEC.h']]], - ['kalokaledorange_823',['kAlokaLedOrange',['../ir__NEC_8h.html#a40f8ae5d6ec8f6aa887c73f032ce03bb',1,'ir_NEC.h']]], - ['kalokaledpink_824',['kAlokaLedPink',['../ir__NEC_8h.html#a53cf14e43062b82259e8d171a992ceff',1,'ir_NEC.h']]], - ['kalokaledpinkred_825',['kAlokaLedPinkRed',['../ir__NEC_8h.html#a20ef8a4a844577849b4b3bc7a86fe352',1,'ir_NEC.h']]], - ['kalokaledrainbow_826',['kAlokaLedRainbow',['../ir__NEC_8h.html#a724ce8d8c71c07a019ed2ddfba269151',1,'ir_NEC.h']]], - ['kalokaledred_827',['kAlokaLedRed',['../ir__NEC_8h.html#ade8f47e4607be919ca05b6dd6ed23ae9',1,'ir_NEC.h']]], - ['kalokaledtreegrow_828',['kAlokaLedTreeGrow',['../ir__NEC_8h.html#a5ecb76db25229f9f05044e54239144ee',1,'ir_NEC.h']]], - ['kalokaledwhite_829',['kAlokaLedWhite',['../ir__NEC_8h.html#a0c0b35e9d905de0b299e38e5807f363e',1,'ir_NEC.h']]], - ['kalokaledyellow_830',['kAlokaLedYellow',['../ir__NEC_8h.html#a1853a0e8856b8af97f458a180c41d6d5',1,'ir_NEC.h']]], - ['kalokanightfade_831',['kAlokaNightFade',['../ir__NEC_8h.html#adb8489faf42032a38187759b5f1037a1',1,'ir_NEC.h']]], - ['kalokanighttimer_832',['kAlokaNightTimer',['../ir__NEC_8h.html#a1b48b8bbd71fbe3728487f36123f4e4b',1,'ir_NEC.h']]], - ['kalokapower_833',['kAlokaPower',['../ir__NEC_8h.html#a147ecbccf8f11976f65b3f374b6ab2d0',1,'ir_NEC.h']]], - ['kamcorauto_834',['kAmcorAuto',['../ir__Amcor_8h.html#a9c02a27d5ed80963ff3b1ff32fc261c5',1,'ir_Amcor.h']]], - ['kamcorbits_835',['kAmcorBits',['../IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db',1,'IRremoteESP8266.h']]], - ['kamcorcool_836',['kAmcorCool',['../ir__Amcor_8h.html#a221c452a3323bd4d39a6084f84ecefbd',1,'ir_Amcor.h']]], - ['kamcordefaultrepeat_837',['kAmcorDefaultRepeat',['../IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c',1,'IRremoteESP8266.h']]], - ['kamcordry_838',['kAmcorDry',['../ir__Amcor_8h.html#a4d285053d14cf85d0c17e738c53538cd',1,'ir_Amcor.h']]], - ['kamcorfan_839',['kAmcorFan',['../ir__Amcor_8h.html#a5fa0c6e3a73c94fc419ff8d1aa1423c2',1,'ir_Amcor.h']]], - ['kamcorfanauto_840',['kAmcorFanAuto',['../ir__Amcor_8h.html#a3199dbace6444ed6ca7ff2e55a8a3a24',1,'ir_Amcor.h']]], - ['kamcorfanmax_841',['kAmcorFanMax',['../ir__Amcor_8h.html#a08ea054d4121220ba758a0e0cacef8ca',1,'ir_Amcor.h']]], - ['kamcorfanmed_842',['kAmcorFanMed',['../ir__Amcor_8h.html#a9ef019a27cf0724ff1f1ff39e06c0c87',1,'ir_Amcor.h']]], - ['kamcorfanmin_843',['kAmcorFanMin',['../ir__Amcor_8h.html#a0276f72dc5b39557850838c8c70fd157',1,'ir_Amcor.h']]], - ['kamcorfootermark_844',['kAmcorFooterMark',['../ir__Amcor_8cpp.html#a3f877b05b07810ff43712dd4412af4f5',1,'ir_Amcor.cpp']]], - ['kamcorgap_845',['kAmcorGap',['../ir__Amcor_8cpp.html#a090f83ec3d4f3fd10baa16bf512dca23',1,'ir_Amcor.cpp']]], - ['kamcorhdrmark_846',['kAmcorHdrMark',['../ir__Amcor_8cpp.html#ab528f545e9af4ffb0f13d5674cfd1589',1,'ir_Amcor.cpp']]], - ['kamcorhdrspace_847',['kAmcorHdrSpace',['../ir__Amcor_8cpp.html#ae0e00c60c4220d27ef7051b45f2ae8b5',1,'ir_Amcor.cpp']]], - ['kamcorheat_848',['kAmcorHeat',['../ir__Amcor_8h.html#a9467539574a0030d166fac79684216f8',1,'ir_Amcor.h']]], - ['kamcormax_849',['kAmcorMax',['../ir__Amcor_8h.html#afac44479dc50e3885e474d2cf8d1f878',1,'ir_Amcor.h']]], - ['kamcormaxtemp_850',['kAmcorMaxTemp',['../ir__Amcor_8h.html#a6460abc4e2b44e4ef3f680c7e195c019',1,'ir_Amcor.h']]], - ['kamcormintemp_851',['kAmcorMinTemp',['../ir__Amcor_8h.html#a2d952bf3f43cb55253a89db1bcc0b568',1,'ir_Amcor.h']]], - ['kamcoronemark_852',['kAmcorOneMark',['../ir__Amcor_8cpp.html#a402a3643dc6b85813eb5f28d742c4e7f',1,'ir_Amcor.cpp']]], - ['kamcoronespace_853',['kAmcorOneSpace',['../ir__Amcor_8cpp.html#a51163573fdc7b8017c7311f0e4011b1b',1,'ir_Amcor.cpp']]], - ['kamcorpoweroff_854',['kAmcorPowerOff',['../ir__Amcor_8h.html#aeccd11f34ca0a93f682ab6c144f07fb7',1,'ir_Amcor.h']]], - ['kamcorpoweron_855',['kAmcorPowerOn',['../ir__Amcor_8h.html#adf21c2364e64c818ba5379e78cae9d5c',1,'ir_Amcor.h']]], - ['kamcorstatelength_856',['kAmcorStateLength',['../IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7',1,'IRremoteESP8266.h']]], - ['kamcortolerance_857',['kAmcorTolerance',['../ir__Amcor_8cpp.html#ad7a4b72f06c5e71002a44c3e4d483bef',1,'ir_Amcor.cpp']]], - ['kamcorventon_858',['kAmcorVentOn',['../ir__Amcor_8h.html#a0774a9180ab233da61c77c717be02521',1,'ir_Amcor.h']]], - ['kamcorzeromark_859',['kAmcorZeroMark',['../ir__Amcor_8cpp.html#a6f16bcf81087461a4e196a2c670f29ee',1,'ir_Amcor.cpp']]], - ['kamcorzerospace_860',['kAmcorZeroSpace',['../ir__Amcor_8cpp.html#a0cbb87d1a5bb594cf428c79cd96c8733',1,'ir_Amcor.cpp']]], - ['kargoauto_861',['kArgoAuto',['../ir__Argo_8h.html#a527fa5776cb58f88013de5062c620b12',1,'ir_Argo.h']]], - ['kargobitmark_862',['kArgoBitMark',['../ir__Argo_8cpp.html#aa15902c11e3a7d3cbb25504764b163c1',1,'ir_Argo.cpp']]], - ['kargobits_863',['kArgoBits',['../IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2',1,'IRremoteESP8266.h']]], - ['kargocool_864',['kArgoCool',['../ir__Argo_8h.html#ab331356887b5f8f04f5ffdf9031fde71',1,'ir_Argo.h']]], - ['kargodefaultrepeat_865',['kArgoDefaultRepeat',['../IRremoteESP8266_8h.html#a9a2190c526885753c676db666e48b764',1,'IRremoteESP8266.h']]], - ['kargodry_866',['kArgoDry',['../ir__Argo_8h.html#ae119706139f65f730db477d060a7bc5d',1,'ir_Argo.h']]], - ['kargofan1_867',['kArgoFan1',['../ir__Argo_8h.html#abfbde2676afb8b027a26a49d947a1396',1,'ir_Argo.h']]], - ['kargofan2_868',['kArgoFan2',['../ir__Argo_8h.html#a7b544220198b6aa311da78bc02b0e211',1,'ir_Argo.h']]], - ['kargofan3_869',['kArgoFan3',['../ir__Argo_8h.html#aa34af62e7134bbca2028d74ba7dfed4e',1,'ir_Argo.h']]], - ['kargofanauto_870',['kArgoFanAuto',['../ir__Argo_8h.html#a3b17c0ba868b439135e6e016452f1623',1,'ir_Argo.h']]], - ['kargoflap1_871',['kArgoFlap1',['../ir__Argo_8h.html#a477dac25a687b9d875cf9e94623d5e84',1,'ir_Argo.h']]], - ['kargoflap2_872',['kArgoFlap2',['../ir__Argo_8h.html#aa72401adcdd23c12d36f98370c605ef6',1,'ir_Argo.h']]], - ['kargoflap3_873',['kArgoFlap3',['../ir__Argo_8h.html#ab18e2931823d631b533c14f417ed4adb',1,'ir_Argo.h']]], - ['kargoflap4_874',['kArgoFlap4',['../ir__Argo_8h.html#a59204076030de56e1160fc599879b142',1,'ir_Argo.h']]], - ['kargoflap5_875',['kArgoFlap5',['../ir__Argo_8h.html#a5a3f4c1b1303b177a924c61dfdcce3e6',1,'ir_Argo.h']]], - ['kargoflap6_876',['kArgoFlap6',['../ir__Argo_8h.html#ac11d6b575b4abc7ac5aec9006ac41634',1,'ir_Argo.h']]], - ['kargoflapauto_877',['kArgoFlapAuto',['../ir__Argo_8h.html#af7f4a97011f94e4bf453e7cfd01fd780',1,'ir_Argo.h']]], - ['kargoflapfull_878',['kArgoFlapFull',['../ir__Argo_8h.html#a8befe8d8b6826fc79176b66eea8352b7',1,'ir_Argo.h']]], - ['kargogap_879',['kArgoGap',['../ir__Argo_8cpp.html#a1a28fc063dea8beacbaac39cf8e9b81b',1,'ir_Argo.cpp']]], - ['kargohdrmark_880',['kArgoHdrMark',['../ir__Argo_8cpp.html#a5c25d5a07e397fe86378021e7c3f2980',1,'ir_Argo.cpp']]], - ['kargohdrspace_881',['kArgoHdrSpace',['../ir__Argo_8cpp.html#a10e8a2ac55f8b123093cd92757d1603d',1,'ir_Argo.cpp']]], - ['kargoheat_882',['kArgoHeat',['../ir__Argo_8h.html#a431536a03ef985b53a4147df5a043b21',1,'ir_Argo.h']]], - ['kargoheatauto_883',['kArgoHeatAuto',['../ir__Argo_8h.html#a154f8b3e0d600d87b2822027bf0c6619',1,'ir_Argo.h']]], - ['kargoheatbit_884',['kArgoHeatBit',['../ir__Argo_8h.html#ada4b42336f3d423e3ef1060605c7f7f1',1,'ir_Argo.h']]], - ['kargoheatblink_885',['kArgoHeatBlink',['../ir__Argo_8h.html#ad29933c939f9364399dfa0f7eaa8cce6',1,'ir_Argo.h']]], - ['kargomaxroomtemp_886',['kArgoMaxRoomTemp',['../ir__Argo_8h.html#a27427d4479dc126e8782985008d4dd7d',1,'ir_Argo.h']]], - ['kargomaxtemp_887',['kArgoMaxTemp',['../ir__Argo_8h.html#a2409d2f472fb950c070fa5c0a07f69ce',1,'ir_Argo.h']]], - ['kargomintemp_888',['kArgoMinTemp',['../ir__Argo_8h.html#a4bc4e4cfe12af43730cb128f4043ad11',1,'ir_Argo.h']]], - ['kargooff_889',['kArgoOff',['../ir__Argo_8h.html#af3c6e4f7b18095179ea9e20e45e1890a',1,'ir_Argo.h']]], - ['kargoonespace_890',['kArgoOneSpace',['../ir__Argo_8cpp.html#a47131b446d160fed9c7af1886d3580e4',1,'ir_Argo.cpp']]], - ['kargostatelength_891',['kArgoStateLength',['../IRremoteESP8266_8h.html#a5f38a56eacd9964a8514cb57de287a45',1,'IRremoteESP8266.h']]], - ['kargotempdelta_892',['kArgoTempDelta',['../ir__Argo_8h.html#a7256560730a73dcaaa60cdfc8140fc0b',1,'ir_Argo.h']]], - ['kargozerospace_893',['kArgoZeroSpace',['../ir__Argo_8cpp.html#a5e06b6d522b35f503ca1e5db27f32ff6',1,'ir_Argo.cpp']]], - ['kauto_894',['kAuto',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()']]], - ['kautomaticstr_895',['kAutomaticStr',['../IRtext_8cpp.html#a66a32b6387a99572644e91f3299910a6',1,'kAutomaticStr(): IRtext.cpp'],['../IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea',1,'kAutomaticStr(): IRtext.cpp']]], - ['kautostr_896',['kAutoStr',['../IRtext_8cpp.html#ae8ec328761b0218d0b18479a972b1121',1,'kAutoStr(): IRtext.cpp'],['../IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9',1,'kAutoStr(): IRtext.cpp']]], - ['kbeepstr_897',['kBeepStr',['../IRtext_8cpp.html#a429f5c2f5aea162bd1568e8489aecb28',1,'kBeepStr(): IRtext.cpp'],['../IRtext_8h.html#a2e98c29968ade682d94f35e28364c878',1,'kBeepStr(): IRtext.cpp']]], - ['kbitsstr_898',['kBitsStr',['../IRtext_8cpp.html#aaabaca413c37bb6b18dc13daf5b335c1',1,'kBitsStr(): IRtext.cpp'],['../IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94',1,'kBitsStr(): IRtext.cpp']]], - ['kbottomstr_899',['kBottomStr',['../IRtext_8cpp.html#ab0bd355efc13bd278a0e33765a783cd0',1,'kBottomStr(): IRtext.cpp'],['../IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3',1,'kBottomStr(): IRtext.cpp']]], - ['kbreezestr_900',['kBreezeStr',['../IRtext_8cpp.html#ab0317e8cf720936fb02816e7827bea9e',1,'kBreezeStr(): IRtext.cpp'],['../IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d',1,'kBreezeStr(): IRtext.cpp']]], - ['kbuttonstr_901',['kButtonStr',['../IRtext_8cpp.html#a6ee11e0a45632c54e34bed14c3a971ce',1,'kButtonStr(): IRtext.cpp'],['../IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e',1,'kButtonStr(): IRtext.cpp']]], - ['kcancelstr_902',['kCancelStr',['../IRtext_8cpp.html#af79c3879bac5ca97947f16c3a6a03321',1,'kCancelStr(): IRtext.cpp'],['../IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b',1,'kCancelStr(): IRtext.cpp']]], - ['kcarrierac40bitmark_903',['kCarrierAc40BitMark',['../ir__Carrier_8cpp.html#a3f8996aa3a7b9b871bc6556f98efb345',1,'ir_Carrier.cpp']]], - ['kcarrierac40bits_904',['kCarrierAc40Bits',['../IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d',1,'IRremoteESP8266.h']]], - ['kcarrierac40gap_905',['kCarrierAc40Gap',['../ir__Carrier_8cpp.html#aa5f0d39a4e12645a6fb477efb3191384',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrmark_906',['kCarrierAc40HdrMark',['../ir__Carrier_8cpp.html#a4b77665ded6dab393779d2763bc367f0',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrspace_907',['kCarrierAc40HdrSpace',['../ir__Carrier_8cpp.html#a5ea98bc575a7ac8d7f5da937feeaeed4',1,'ir_Carrier.cpp']]], - ['kcarrierac40minrepeat_908',['kCarrierAc40MinRepeat',['../IRremoteESP8266_8h.html#a222aa743f398883a4910fbbb6d408bdc',1,'IRremoteESP8266.h']]], - ['kcarrierac40onespace_909',['kCarrierAc40OneSpace',['../ir__Carrier_8cpp.html#a79073c06820817e077c5bd8d9b8acfbd',1,'ir_Carrier.cpp']]], - ['kcarrierac40zerospace_910',['kCarrierAc40ZeroSpace',['../ir__Carrier_8cpp.html#a2ee9b60c12887983a6f4f123db6fd5e9',1,'ir_Carrier.cpp']]], - ['kcarrierac64bitmark_911',['kCarrierAc64BitMark',['../ir__Carrier_8cpp.html#ae32b2dab6a654fa293f54684da45c5c0',1,'ir_Carrier.cpp']]], - ['kcarrierac64bits_912',['kCarrierAc64Bits',['../IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a',1,'IRremoteESP8266.h']]], - ['kcarrierac64checksumoffset_913',['kCarrierAc64ChecksumOffset',['../ir__Carrier_8h.html#a3aa65474b5be8c77d498b7e83d8b8f31',1,'ir_Carrier.h']]], - ['kcarrierac64checksumsize_914',['kCarrierAc64ChecksumSize',['../ir__Carrier_8h.html#a0b446c17c4965508f335e68c786f0596',1,'ir_Carrier.h']]], - ['kcarrierac64cool_915',['kCarrierAc64Cool',['../ir__Carrier_8h.html#aa75d5965da484d09f6f4c645cdb23869',1,'ir_Carrier.h']]], - ['kcarrierac64fan_916',['kCarrierAc64Fan',['../ir__Carrier_8h.html#a57655ceea762b18e0dd96724ddf888bd',1,'ir_Carrier.h']]], - ['kcarrierac64fanauto_917',['kCarrierAc64FanAuto',['../ir__Carrier_8h.html#a12d1fb295a0d9cf407040ab544acc245',1,'ir_Carrier.h']]], - ['kcarrierac64fanhigh_918',['kCarrierAc64FanHigh',['../ir__Carrier_8h.html#a099f2e82998bd78d25cec17a4be5f230',1,'ir_Carrier.h']]], - ['kcarrierac64fanlow_919',['kCarrierAc64FanLow',['../ir__Carrier_8h.html#aaeee61e5924bdc8028c4775f96ba14d2',1,'ir_Carrier.h']]], - ['kcarrierac64fanmedium_920',['kCarrierAc64FanMedium',['../ir__Carrier_8h.html#aeb8943f8d9f2bd95a9df6500eea7cba4',1,'ir_Carrier.h']]], - ['kcarrierac64gap_921',['kCarrierAc64Gap',['../ir__Carrier_8cpp.html#a6f7ba77f1350126d78a23d7ba967e258',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrmark_922',['kCarrierAc64HdrMark',['../ir__Carrier_8cpp.html#a19dc2108d4490c82c03c87c625bc5f31',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrspace_923',['kCarrierAc64HdrSpace',['../ir__Carrier_8cpp.html#ad73dbf55f5ffa03d92ec699b23e8ca8d',1,'ir_Carrier.cpp']]], - ['kcarrierac64heat_924',['kCarrierAc64Heat',['../ir__Carrier_8h.html#ac261ba8bff6f103bb9043c85a6f21d58',1,'ir_Carrier.h']]], - ['kcarrierac64maxtemp_925',['kCarrierAc64MaxTemp',['../ir__Carrier_8h.html#a5653bc180a4c849b5e0b33b957255ae4',1,'ir_Carrier.h']]], - ['kcarrierac64minrepeat_926',['kCarrierAc64MinRepeat',['../IRremoteESP8266_8h.html#a8b2b3670dc74ce9fbf3c8b511422a06c',1,'IRremoteESP8266.h']]], - ['kcarrierac64mintemp_927',['kCarrierAc64MinTemp',['../ir__Carrier_8h.html#a9e7a88bf52839ecb34da1966bb8a956b',1,'ir_Carrier.h']]], - ['kcarrierac64onespace_928',['kCarrierAc64OneSpace',['../ir__Carrier_8cpp.html#a58ea051d56227a4037682f5d612b4cc7',1,'ir_Carrier.cpp']]], - ['kcarrierac64timermax_929',['kCarrierAc64TimerMax',['../ir__Carrier_8h.html#a78a34b51e51dc3b4129f350673c9fa96',1,'ir_Carrier.h']]], - ['kcarrierac64timermin_930',['kCarrierAc64TimerMin',['../ir__Carrier_8h.html#aeebac3e61246f2e148806d4b4e8ac13e',1,'ir_Carrier.h']]], - ['kcarrierac64zerospace_931',['kCarrierAc64ZeroSpace',['../ir__Carrier_8cpp.html#af28d4332e0f1ad19aa743b993f44cdc7',1,'ir_Carrier.cpp']]], - ['kcarrieracbitmark_932',['kCarrierAcBitMark',['../ir__Carrier_8cpp.html#af4a608f81c745734499ec1842167940b',1,'ir_Carrier.cpp']]], - ['kcarrieracbits_933',['kCarrierAcBits',['../IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b',1,'IRremoteESP8266.h']]], - ['kcarrieracfreq_934',['kCarrierAcFreq',['../ir__Carrier_8cpp.html#a795dc2d9b122bd3794fddbddef571058',1,'ir_Carrier.cpp']]], - ['kcarrieracgap_935',['kCarrierAcGap',['../ir__Carrier_8cpp.html#a00767c0b503a7fc8f0b2ddfac24a4f85',1,'ir_Carrier.cpp']]], - ['kcarrierachdrmark_936',['kCarrierAcHdrMark',['../ir__Carrier_8cpp.html#ad9a7754e77cfcfd6c6032d497bc4528d',1,'ir_Carrier.cpp']]], - ['kcarrierachdrspace_937',['kCarrierAcHdrSpace',['../ir__Carrier_8cpp.html#a8e09857e2fe15d6983ec0384c57140d4',1,'ir_Carrier.cpp']]], - ['kcarrieracminrepeat_938',['kCarrierAcMinRepeat',['../IRremoteESP8266_8h.html#a78c8a8b11179e8fd20bf09fa35f6b886',1,'IRremoteESP8266.h']]], - ['kcarrieraconespace_939',['kCarrierAcOneSpace',['../ir__Carrier_8cpp.html#ab04a214a7c2e0439384736c46ddc6c61',1,'ir_Carrier.cpp']]], - ['kcarrieraczerospace_940',['kCarrierAcZeroSpace',['../ir__Carrier_8cpp.html#a51c9c4bbd6e2927baac15dc60c1e60fa',1,'ir_Carrier.cpp']]], - ['kceilingstr_941',['kCeilingStr',['../IRtext_8cpp.html#a5258c9d80502d5a8e14bb324a394452b',1,'kCeilingStr(): IRtext.cpp'],['../IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e',1,'kCeilingStr(): IRtext.cpp']]], - ['kcelsiusfahrenheitstr_942',['kCelsiusFahrenheitStr',['../IRtext_8cpp.html#ab24f542059d0c1c1352686469c9fde7d',1,'kCelsiusFahrenheitStr(): IRtext.cpp'],['../IRtext_8h.html#a9bd25ef522ae667d9869b6f6ea937f5d',1,'kCelsiusFahrenheitStr(): IRtext.cpp']]], - ['kcelsiusstr_943',['kCelsiusStr',['../IRtext_8cpp.html#af0ad7ca76c659a17872960bcbcfbdbbf',1,'kCelsiusStr(): IRtext.cpp'],['../IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e',1,'kCelsiusStr(): IRtext.cpp']]], - ['kcentrestr_944',['kCentreStr',['../IRtext_8cpp.html#a87a4151e0361c9f75d0d5c00f9bad1ee',1,'kCentreStr(): IRtext.cpp'],['../IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228',1,'kCentreStr(): IRtext.cpp']]], - ['kchangestr_945',['kChangeStr',['../IRtext_8cpp.html#a1f6396eb9bd4327a7a2307e5724c1dd7',1,'kChangeStr(): IRtext.cpp'],['../IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae',1,'kChangeStr(): IRtext.cpp']]], - ['kcirculatestr_946',['kCirculateStr',['../IRtext_8cpp.html#a869ef1f579373ff4b5b61b1cba215680',1,'kCirculateStr(): IRtext.cpp'],['../IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578',1,'kCirculateStr(): IRtext.cpp']]], - ['kcleanstr_947',['kCleanStr',['../IRtext_8cpp.html#ad2d97c52e8df2704654fdbd0a7a0561e',1,'kCleanStr(): IRtext.cpp'],['../IRtext_8h.html#a45c17b23773e9dcded65a82577b00263',1,'kCleanStr(): IRtext.cpp']]], - ['kclockstr_948',['kClockStr',['../IRtext_8cpp.html#ad39bd469d5474159463543184cfae321',1,'kClockStr(): IRtext.cpp'],['../IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8',1,'kClockStr(): IRtext.cpp']]], - ['kcodestr_949',['kCodeStr',['../IRtext_8cpp.html#a26e4bf74871ce457f42ec839545987f4',1,'kCodeStr(): IRtext.cpp'],['../IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd',1,'kCodeStr(): IRtext.cpp']]], - ['kcolonspacestr_950',['kColonSpaceStr',['../IRtext_8cpp.html#a5d978c9ac25163a9629b7e8e2d37d25e',1,'kColonSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512',1,'kColonSpaceStr(): IRtext.cpp']]], - ['kcomfortstr_951',['kComfortStr',['../IRtext_8cpp.html#aa7f0cfdb126ff7b0f8db6033bb51f36d',1,'kComfortStr(): IRtext.cpp'],['../IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1',1,'kComfortStr(): IRtext.cpp']]], - ['kcommandstr_952',['kCommandStr',['../IRtext_8cpp.html#afd5865ea8c0f8565369dd2c4ee4622d6',1,'kCommandStr(): IRtext.cpp'],['../IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606',1,'kCommandStr(): IRtext.cpp']]], - ['kcommaspacestr_953',['kCommaSpaceStr',['../IRtext_8cpp.html#ac8a9678d4c9eeee17a9dc28624c0ab49',1,'kCommaSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3',1,'kCommaSpaceStr(): IRtext.cpp']]], - ['kcool_954',['kCool',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fab9480fe865ab6bbfb66c8308068a06c2',1,'stdAc']]], - ['kcoolixauto_955',['kCoolixAuto',['../ir__Coolix_8h.html#a73c1ef7c2c80c861256a14a9f256b125',1,'ir_Coolix.h']]], - ['kcoolixbitmark_956',['kCoolixBitMark',['../ir__Coolix_8cpp.html#acd8562a27ec6c0a6c2cf9480082e04cd',1,'ir_Coolix.cpp']]], - ['kcoolixbitmarkticks_957',['kCoolixBitMarkTicks',['../ir__Coolix_8cpp.html#aefaa206b4316a4fd921f7171295d1232',1,'ir_Coolix.cpp']]], - ['kcoolixbits_958',['kCoolixBits',['../IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9',1,'IRremoteESP8266.h']]], - ['kcoolixclean_959',['kCoolixClean',['../ir__Coolix_8h.html#a5cc9fcde4a6da54917b4d69bb352bc86',1,'ir_Coolix.h']]], - ['kcoolixcmdfan_960',['kCoolixCmdFan',['../ir__Coolix_8h.html#a7d5ff02f4a0c379322877b3dcf934c77',1,'ir_Coolix.h']]], - ['kcoolixcool_961',['kCoolixCool',['../ir__Coolix_8h.html#ae285ee4206fe45d25bb1d99b848c7e65',1,'ir_Coolix.h']]], - ['kcoolixdefaultrepeat_962',['kCoolixDefaultRepeat',['../IRremoteESP8266_8h.html#aa89410d369d71738c8cbefae6ac3b00f',1,'IRremoteESP8266.h']]], - ['kcoolixdefaultstate_963',['kCoolixDefaultState',['../ir__Coolix_8h.html#ad54ebf20658c33e5ad54fc54a513511e',1,'ir_Coolix.h']]], - ['kcoolixdry_964',['kCoolixDry',['../ir__Coolix_8h.html#a904c4135f61120e71577f6830adae689',1,'ir_Coolix.h']]], - ['kcoolixfan_965',['kCoolixFan',['../ir__Coolix_8h.html#a2e050321c994844f2ff6668ba6973ac4',1,'ir_Coolix.h']]], - ['kcoolixfanauto_966',['kCoolixFanAuto',['../ir__Coolix_8h.html#ac25d3c45ed7d7d30ff2ebf617d8265f0',1,'ir_Coolix.h']]], - ['kcoolixfanauto0_967',['kCoolixFanAuto0',['../ir__Coolix_8h.html#a38cccd1edee2c88c1b080f1d5600ead7',1,'ir_Coolix.h']]], - ['kcoolixfanfixed_968',['kCoolixFanFixed',['../ir__Coolix_8h.html#a37a3a23d8fe30df024cb844f82f90b2a',1,'ir_Coolix.h']]], - ['kcoolixfanmax_969',['kCoolixFanMax',['../ir__Coolix_8h.html#aabb349ee111467088b9a292950aba753',1,'ir_Coolix.h']]], - ['kcoolixfanmed_970',['kCoolixFanMed',['../ir__Coolix_8h.html#a2750626cda2e389df901b459805e09bd',1,'ir_Coolix.h']]], - ['kcoolixfanmin_971',['kCoolixFanMin',['../ir__Coolix_8h.html#a6c0086075cce1698c48cc30e045ab5bf',1,'ir_Coolix.h']]], - ['kcoolixfantempcode_972',['kCoolixFanTempCode',['../ir__Coolix_8h.html#a6d2d6f2fd8f5e9a4491623b9351efcba',1,'ir_Coolix.h']]], - ['kcoolixfanzonefollow_973',['kCoolixFanZoneFollow',['../ir__Coolix_8h.html#a5a71c6acd18b3198c7900e2de34c48a3',1,'ir_Coolix.h']]], - ['kcoolixhdrmark_974',['kCoolixHdrMark',['../ir__Coolix_8cpp.html#a746299797d958ccf116e6d1cdab3ad06',1,'ir_Coolix.cpp']]], - ['kcoolixhdrmarkticks_975',['kCoolixHdrMarkTicks',['../ir__Coolix_8cpp.html#a04d520a0fe3d773f377810174e5463a4',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspace_976',['kCoolixHdrSpace',['../ir__Coolix_8cpp.html#ab7ff2a6bd99e0e6a0db3f14350cca84c',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspaceticks_977',['kCoolixHdrSpaceTicks',['../ir__Coolix_8cpp.html#a58951e9800513b019ccb9f04ae55716f',1,'ir_Coolix.cpp']]], - ['kcoolixheat_978',['kCoolixHeat',['../ir__Coolix_8h.html#a234b39696f0b2fac6b37aa309082505e',1,'ir_Coolix.h']]], - ['kcoolixled_979',['kCoolixLed',['../ir__Coolix_8h.html#a68ae46e117caf0d7a3cc2ef9492495f1',1,'ir_Coolix.h']]], - ['kcoolixmingap_980',['kCoolixMinGap',['../ir__Coolix_8cpp.html#a46da2480f6850af899db74a4f2270cdc',1,'ir_Coolix.cpp']]], - ['kcoolixmingapticks_981',['kCoolixMinGapTicks',['../ir__Coolix_8cpp.html#a94f47fbf027fcb90664b302ff123f535',1,'ir_Coolix.cpp']]], - ['kcoolixoff_982',['kCoolixOff',['../ir__Coolix_8h.html#aef6f59b83a14b8505f395b2eb8d8ad39',1,'ir_Coolix.h']]], - ['kcoolixonespace_983',['kCoolixOneSpace',['../ir__Coolix_8cpp.html#a97a8439ace71584e36ab7306c3d53749',1,'ir_Coolix.cpp']]], - ['kcoolixonespaceticks_984',['kCoolixOneSpaceTicks',['../ir__Coolix_8cpp.html#a78770eaf597e4aa2ed539248ef10ec11',1,'ir_Coolix.cpp']]], - ['kcoolixsensortempignorecode_985',['kCoolixSensorTempIgnoreCode',['../ir__Coolix_8h.html#ae3aba531b0c0053424786ec4bb2be934',1,'ir_Coolix.h']]], - ['kcoolixsensortempmax_986',['kCoolixSensorTempMax',['../ir__Coolix_8h.html#a71641b1240ee439e77128165cedf899f',1,'ir_Coolix.h']]], - ['kcoolixsleep_987',['kCoolixSleep',['../ir__Coolix_8h.html#aa7f9f96e56bd3f6b814bc84b947b2417',1,'ir_Coolix.h']]], - ['kcoolixswing_988',['kCoolixSwing',['../ir__Coolix_8h.html#a799ad5ab7cf43f0aac3c342305f14b90',1,'ir_Coolix.h']]], - ['kcoolixswingh_989',['kCoolixSwingH',['../ir__Coolix_8h.html#a877bd2731dfc86d864e38a5ceb4ede6e',1,'ir_Coolix.h']]], - ['kcoolixswingv_990',['kCoolixSwingV',['../ir__Coolix_8h.html#ab9fcaf25426f1f9ad293e165f8c0bf38',1,'ir_Coolix.h']]], - ['kcoolixtempmap_991',['kCoolixTempMap',['../ir__Coolix_8h.html#a9c8931df1dbed38c8119f6605266c710',1,'ir_Coolix.h']]], - ['kcoolixtempmax_992',['kCoolixTempMax',['../ir__Coolix_8h.html#afbbb02bfeaaf5cb558ca28cdd5cfc4c3',1,'ir_Coolix.h']]], - ['kcoolixtempmin_993',['kCoolixTempMin',['../ir__Coolix_8h.html#accd37cf257fa5fbeb64e28f0d63888fb',1,'ir_Coolix.h']]], - ['kcoolixtemprange_994',['kCoolixTempRange',['../ir__Coolix_8h.html#a74e3e75466fd27672968d660e3fddc9a',1,'ir_Coolix.h']]], - ['kcoolixtick_995',['kCoolixTick',['../ir__Coolix_8cpp.html#a61ddf842920e2b3e33fdb856bd911eae',1,'ir_Coolix.cpp']]], - ['kcoolixturbo_996',['kCoolixTurbo',['../ir__Coolix_8h.html#ade957b6f4a6cdb064c709972a5c31a4b',1,'ir_Coolix.h']]], - ['kcoolixzerospace_997',['kCoolixZeroSpace',['../ir__Coolix_8cpp.html#a1a9ccf6b91e786f310ffe53d55cfd6d1',1,'ir_Coolix.cpp']]], - ['kcoolixzerospaceticks_998',['kCoolixZeroSpaceTicks',['../ir__Coolix_8cpp.html#af1a750cb3e1f142326cd177118c27136',1,'ir_Coolix.cpp']]], - ['kcoolstr_999',['kCoolStr',['../IRtext_8cpp.html#a31258a2210b16dc977bcfd96938a8937',1,'kCoolStr(): IRtext.cpp'],['../IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3',1,'kCoolStr(): IRtext.cpp']]], - ['kcoronaacbitmark_1000',['kCoronaAcBitMark',['../ir__Corona_8cpp.html#a1ecb863f625463289d34e210885238db',1,'ir_Corona.cpp']]], - ['kcoronaacbits_1001',['kCoronaAcBits',['../IRremoteESP8266_8h.html#aaf59be616d7e3a5e605b8d1e08f20686',1,'IRremoteESP8266.h']]], - ['kcoronaacbitsshort_1002',['kCoronaAcBitsShort',['../IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3',1,'IRremoteESP8266.h']]], - ['kcoronaacfanauto_1003',['kCoronaAcFanAuto',['../ir__Corona_8h.html#a8c97a0c674c000e4486159d628f1aa0a',1,'ir_Corona.h']]], - ['kcoronaacfanhigh_1004',['kCoronaAcFanHigh',['../ir__Corona_8h.html#a4f58be196a744892402e287b12502dcb',1,'ir_Corona.h']]], - ['kcoronaacfanlow_1005',['kCoronaAcFanLow',['../ir__Corona_8h.html#af9e5c729be856bf4b1bc10568f96c183',1,'ir_Corona.h']]], - ['kcoronaacfanmedium_1006',['kCoronaAcFanMedium',['../ir__Corona_8h.html#a9d6b46c006bd6ea54a14b92a2d7a3dff',1,'ir_Corona.h']]], - ['kcoronaacfreq_1007',['kCoronaAcFreq',['../ir__Corona_8cpp.html#a0cb56860c88e9503743bcf94068bbf56',1,'ir_Corona.cpp']]], - ['kcoronaachdrmark_1008',['kCoronaAcHdrMark',['../ir__Corona_8cpp.html#a697d84f13a1228dbae3cfb491124689a',1,'ir_Corona.cpp']]], - ['kcoronaachdrspace_1009',['kCoronaAcHdrSpace',['../ir__Corona_8cpp.html#ad2425c406aa36c7752832d19f4a735f7',1,'ir_Corona.cpp']]], - ['kcoronaacmaxtemp_1010',['kCoronaAcMaxTemp',['../ir__Corona_8h.html#aa6d199e5bb8382443da4e1f303dd7988',1,'ir_Corona.h']]], - ['kcoronaacmintemp_1011',['kCoronaAcMinTemp',['../ir__Corona_8h.html#ae984b624da5e2d5ef1405e1b8d9424ba',1,'ir_Corona.h']]], - ['kcoronaacmodecool_1012',['kCoronaAcModeCool',['../ir__Corona_8h.html#a6f8bb2e27990014686828b4b7e2c84c6',1,'ir_Corona.h']]], - ['kcoronaacmodedry_1013',['kCoronaAcModeDry',['../ir__Corona_8h.html#afd47996b221103ae142363f04014fb4b',1,'ir_Corona.h']]], - ['kcoronaacmodefan_1014',['kCoronaAcModeFan',['../ir__Corona_8h.html#ab8098af3e0f9cd82a7c9c771ffd8ad15',1,'ir_Corona.h']]], - ['kcoronaacmodeheat_1015',['kCoronaAcModeHeat',['../ir__Corona_8h.html#a7f3c7c051ae3ee07621c47505a87bec1',1,'ir_Corona.h']]], - ['kcoronaacofftimersection_1016',['kCoronaAcOffTimerSection',['../ir__Corona_8h.html#ac2cfdbf9b3ed3d85c0e298c3de8f357b',1,'ir_Corona.h']]], - ['kcoronaaconespace_1017',['kCoronaAcOneSpace',['../ir__Corona_8cpp.html#a6d9c199bdefbbb30b9561c5498c5a76e',1,'ir_Corona.cpp']]], - ['kcoronaacontimersection_1018',['kCoronaAcOnTimerSection',['../ir__Corona_8h.html#a711b7b5bd2081ca9b1e7ab25573ff612',1,'ir_Corona.h']]], - ['kcoronaacoverhead_1019',['kCoronaAcOverhead',['../ir__Corona_8cpp.html#aaef71b297a7868863a2ad7219bafabeb',1,'ir_Corona.cpp']]], - ['kcoronaacoverheadshort_1020',['kCoronaAcOverheadShort',['../ir__Corona_8cpp.html#a56010f67a047f551db681bb0ec8c35f7',1,'ir_Corona.cpp']]], - ['kcoronaacsectionbytes_1021',['kCoronaAcSectionBytes',['../ir__Corona_8h.html#a094063159064053dd5e5059eb0d90f7c',1,'ir_Corona.h']]], - ['kcoronaacsectiondata0base_1022',['kCoronaAcSectionData0Base',['../ir__Corona_8h.html#a2d0b1f5a0839839a17947bde624d4c74',1,'ir_Corona.h']]], - ['kcoronaacsectionheader0_1023',['kCoronaAcSectionHeader0',['../ir__Corona_8h.html#a39a2c0d214a10f8f9685e9955c0be0a4',1,'ir_Corona.h']]], - ['kcoronaacsectionheader1_1024',['kCoronaAcSectionHeader1',['../ir__Corona_8h.html#a8a661569fc7b97ba2e9e755b944162f8',1,'ir_Corona.h']]], - ['kcoronaacsectionlabelbase_1025',['kCoronaAcSectionLabelBase',['../ir__Corona_8h.html#a6ff8a3461b87df048878faf49c12d064',1,'ir_Corona.h']]], - ['kcoronaacsections_1026',['kCoronaAcSections',['../ir__Corona_8h.html#a37e6cc5e2e186b2f5c5c938496ece111',1,'ir_Corona.h']]], - ['kcoronaacsettingssection_1027',['kCoronaAcSettingsSection',['../ir__Corona_8h.html#a5a83a045fd9878eae073f25e6c5b4753',1,'ir_Corona.h']]], - ['kcoronaacspacegap_1028',['kCoronaAcSpaceGap',['../ir__Corona_8cpp.html#a50f46039059d2a427bc9bc93c53df4fd',1,'ir_Corona.cpp']]], - ['kcoronaacstatelength_1029',['kCoronaAcStateLength',['../IRremoteESP8266_8h.html#ab18df94a82b365ff30caaabb05a9fcaf',1,'IRremoteESP8266.h']]], - ['kcoronaacstatelengthshort_1030',['kCoronaAcStateLengthShort',['../IRremoteESP8266_8h.html#a32b65ada4941a9622fbbc60f01b82425',1,'IRremoteESP8266.h']]], - ['kcoronaactimermax_1031',['kCoronaAcTimerMax',['../ir__Corona_8h.html#af0428879b0fd39def7ea41e2906d9127',1,'ir_Corona.h']]], - ['kcoronaactimeroff_1032',['kCoronaAcTimerOff',['../ir__Corona_8h.html#af0feaf445fae561c3fa18ec68a19edef',1,'ir_Corona.h']]], - ['kcoronaactimerunitspermin_1033',['kCoronaAcTimerUnitsPerMin',['../ir__Corona_8h.html#a7f76e80480abdbdcdaf39186901950a4',1,'ir_Corona.h']]], - ['kcoronaaczerospace_1034',['kCoronaAcZeroSpace',['../ir__Corona_8cpp.html#af64bbcaf63ca9d06089de382354eb2d9',1,'ir_Corona.cpp']]], - ['kcoronatolerance_1035',['kCoronaTolerance',['../ir__Corona_8cpp.html#aad3726c95bfd7a9f79ba1e0c7058bb7b',1,'ir_Corona.cpp']]], - ['kdaikin128auto_1036',['kDaikin128Auto',['../ir__Daikin_8h.html#a1d2a0f9db8e1be93bff12ec23ba212e0',1,'ir_Daikin.h']]], - ['kdaikin128bitceiling_1037',['kDaikin128BitCeiling',['../ir__Daikin_8h.html#a0e1d1c1e7544eb455187290dbe4a1520',1,'ir_Daikin.h']]], - ['kdaikin128bitmark_1038',['kDaikin128BitMark',['../ir__Daikin_8h.html#a5178ac70eb4e134597e504d373d52fcd',1,'ir_Daikin.h']]], - ['kdaikin128bits_1039',['kDaikin128Bits',['../IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a',1,'IRremoteESP8266.h']]], - ['kdaikin128bitwall_1040',['kDaikin128BitWall',['../ir__Daikin_8h.html#a842b3b696f95c5515ee4180626d78973',1,'ir_Daikin.h']]], - ['kdaikin128cool_1041',['kDaikin128Cool',['../ir__Daikin_8h.html#a24ee5ffe877d7caa964256e5723af7e1',1,'ir_Daikin.h']]], - ['kdaikin128defaultrepeat_1042',['kDaikin128DefaultRepeat',['../IRremoteESP8266_8h.html#a5c116cb58be005468de125f6ee651ccb',1,'IRremoteESP8266.h']]], - ['kdaikin128dry_1043',['kDaikin128Dry',['../ir__Daikin_8h.html#ac4da761bf3b0ce12e6513a2718b3a907',1,'ir_Daikin.h']]], - ['kdaikin128fan_1044',['kDaikin128Fan',['../ir__Daikin_8h.html#ac1c41d54f27d1653181ac69384f1130f',1,'ir_Daikin.h']]], - ['kdaikin128fanauto_1045',['kDaikin128FanAuto',['../ir__Daikin_8h.html#aec2fe4618978c17e60a1ea8b1a89c263',1,'ir_Daikin.h']]], - ['kdaikin128fanhigh_1046',['kDaikin128FanHigh',['../ir__Daikin_8h.html#a7ffd52eb15f6ffb5a0ffcddf39aa8f0d',1,'ir_Daikin.h']]], - ['kdaikin128fanlow_1047',['kDaikin128FanLow',['../ir__Daikin_8h.html#a505c58ff23c5a551c6e2e356f66e9cc1',1,'ir_Daikin.h']]], - ['kdaikin128fanmed_1048',['kDaikin128FanMed',['../ir__Daikin_8h.html#a4eb21add9bfb6774047a8a2c8b87ebbf',1,'ir_Daikin.h']]], - ['kdaikin128fanpowerful_1049',['kDaikin128FanPowerful',['../ir__Daikin_8h.html#ae0899153669a6e8848556cd65c26c8b5',1,'ir_Daikin.h']]], - ['kdaikin128fanquiet_1050',['kDaikin128FanQuiet',['../ir__Daikin_8h.html#a54777f468236bf4b342240e8c523308d',1,'ir_Daikin.h']]], - ['kdaikin128footermark_1051',['kDaikin128FooterMark',['../ir__Daikin_8h.html#ad5668b12e38afa4b44a8e214dac22f2e',1,'ir_Daikin.h']]], - ['kdaikin128freq_1052',['kDaikin128Freq',['../ir__Daikin_8h.html#a5a76fc08310d517cb7e182c287e77df1',1,'ir_Daikin.h']]], - ['kdaikin128gap_1053',['kDaikin128Gap',['../ir__Daikin_8h.html#a6323c59eb5906ac2887a02f9cd09a329',1,'ir_Daikin.h']]], - ['kdaikin128hdrmark_1054',['kDaikin128HdrMark',['../ir__Daikin_8h.html#a6257375541b6e10bda4083d9529e80f0',1,'ir_Daikin.h']]], - ['kdaikin128hdrspace_1055',['kDaikin128HdrSpace',['../ir__Daikin_8h.html#a114a4cef444d4c552b90701cb7debc73',1,'ir_Daikin.h']]], - ['kdaikin128heat_1056',['kDaikin128Heat',['../ir__Daikin_8h.html#ada28db809b26e2ae9e927650d4cb4f7a',1,'ir_Daikin.h']]], - ['kdaikin128leadermark_1057',['kDaikin128LeaderMark',['../ir__Daikin_8h.html#ab609b8979a2d2bf4fa5b7164590b2bfb',1,'ir_Daikin.h']]], - ['kdaikin128leaderspace_1058',['kDaikin128LeaderSpace',['../ir__Daikin_8h.html#a259bfa510a9ec06049c0a7bf6563eb35',1,'ir_Daikin.h']]], - ['kdaikin128maxtemp_1059',['kDaikin128MaxTemp',['../ir__Daikin_8h.html#a7dcd514d292ef98d70083227d046baad',1,'ir_Daikin.h']]], - ['kdaikin128mintemp_1060',['kDaikin128MinTemp',['../ir__Daikin_8h.html#aad27f3ff311f1defc5ac9fb3be0ad504',1,'ir_Daikin.h']]], - ['kdaikin128onespace_1061',['kDaikin128OneSpace',['../ir__Daikin_8h.html#ac6a9a48ae0037b889a6619361fd090ac',1,'ir_Daikin.h']]], - ['kdaikin128sectionlength_1062',['kDaikin128SectionLength',['../ir__Daikin_8h.html#a204a306e7d7071d4b798f7947c232520',1,'ir_Daikin.h']]], - ['kdaikin128sections_1063',['kDaikin128Sections',['../ir__Daikin_8h.html#a81f0cfda4d8452d6053cc6999a270b1f',1,'ir_Daikin.h']]], - ['kdaikin128statelength_1064',['kDaikin128StateLength',['../IRremoteESP8266_8h.html#a4279ccd14a3af2046e393661a7b4879f',1,'IRremoteESP8266.h']]], - ['kdaikin128zerospace_1065',['kDaikin128ZeroSpace',['../ir__Daikin_8h.html#a1ca69805ada8ec451199c18d9da6f02a',1,'ir_Daikin.h']]], - ['kdaikin152bitmark_1066',['kDaikin152BitMark',['../ir__Daikin_8h.html#afd50318eaa383a7e85f0d0c2866bc9d5',1,'ir_Daikin.h']]], - ['kdaikin152bits_1067',['kDaikin152Bits',['../IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09',1,'IRremoteESP8266.h']]], - ['kdaikin152defaultrepeat_1068',['kDaikin152DefaultRepeat',['../IRremoteESP8266_8h.html#a9407eebab271524e74bc3ddddb1a2e0b',1,'IRremoteESP8266.h']]], - ['kdaikin152drytemp_1069',['kDaikin152DryTemp',['../ir__Daikin_8h.html#a86e9308c00dbdd79546687af412c4156',1,'ir_Daikin.h']]], - ['kdaikin152fantemp_1070',['kDaikin152FanTemp',['../ir__Daikin_8h.html#ad5c5bb7e8b181c79fe68607c1a4d202f',1,'ir_Daikin.h']]], - ['kdaikin152freq_1071',['kDaikin152Freq',['../ir__Daikin_8h.html#aa45492ae186142971975b7da56658a0b',1,'ir_Daikin.h']]], - ['kdaikin152gap_1072',['kDaikin152Gap',['../ir__Daikin_8h.html#aee02d3b17db4a382035c00329c6c2a0a',1,'ir_Daikin.h']]], - ['kdaikin152hdrmark_1073',['kDaikin152HdrMark',['../ir__Daikin_8h.html#a85fad797a9b43cb317fdb2e2c254a3bb',1,'ir_Daikin.h']]], - ['kdaikin152hdrspace_1074',['kDaikin152HdrSpace',['../ir__Daikin_8h.html#a0eb0b1b5fabab75a5956b6b939696a12',1,'ir_Daikin.h']]], - ['kdaikin152leaderbits_1075',['kDaikin152LeaderBits',['../ir__Daikin_8h.html#a432454efd5ea7457d34fe014b0d328c1',1,'ir_Daikin.h']]], - ['kdaikin152onespace_1076',['kDaikin152OneSpace',['../ir__Daikin_8h.html#a1f96172c74b261a26ec6d71201f7c589',1,'ir_Daikin.h']]], - ['kdaikin152statelength_1077',['kDaikin152StateLength',['../IRremoteESP8266_8h.html#ae7579708922ffd3e44295f8770878983',1,'IRremoteESP8266.h']]], - ['kdaikin152zerospace_1078',['kDaikin152ZeroSpace',['../ir__Daikin_8h.html#aec201aee71c0e301e8e191ddcaadb2de',1,'ir_Daikin.h']]], - ['kdaikin160bitmark_1079',['kDaikin160BitMark',['../ir__Daikin_8h.html#a852c2268ed7a8dd42c629e8a0706b6f5',1,'ir_Daikin.h']]], - ['kdaikin160bits_1080',['kDaikin160Bits',['../IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6',1,'IRremoteESP8266.h']]], - ['kdaikin160defaultrepeat_1081',['kDaikin160DefaultRepeat',['../IRremoteESP8266_8h.html#a82f4f1d8fae51c7e2f1f6753ca6e6053',1,'IRremoteESP8266.h']]], - ['kdaikin160freq_1082',['kDaikin160Freq',['../ir__Daikin_8h.html#a69e8abb57aecc6b99c60c5df7e18ff39',1,'ir_Daikin.h']]], - ['kdaikin160gap_1083',['kDaikin160Gap',['../ir__Daikin_8h.html#a8d107f0d63ef6951d657a55a370e8a8b',1,'ir_Daikin.h']]], - ['kdaikin160hdrmark_1084',['kDaikin160HdrMark',['../ir__Daikin_8h.html#a96043b43ba4d963456206e2d02639325',1,'ir_Daikin.h']]], - ['kdaikin160hdrspace_1085',['kDaikin160HdrSpace',['../ir__Daikin_8h.html#aefa7b5de43483951e00bd5d2cdbe5665',1,'ir_Daikin.h']]], - ['kdaikin160onespace_1086',['kDaikin160OneSpace',['../ir__Daikin_8h.html#a068c2252191675dca6503bfc37e4785e',1,'ir_Daikin.h']]], - ['kdaikin160section1length_1087',['kDaikin160Section1Length',['../ir__Daikin_8h.html#a06b59ee56cddcdcd9dfa375663da0c2d',1,'ir_Daikin.h']]], - ['kdaikin160section2length_1088',['kDaikin160Section2Length',['../ir__Daikin_8h.html#a7d6194a363661e11167cc972f1b92f68',1,'ir_Daikin.h']]], - ['kdaikin160sections_1089',['kDaikin160Sections',['../ir__Daikin_8h.html#afcc5de2994c1cd618437f1c67a5754d0',1,'ir_Daikin.h']]], - ['kdaikin160statelength_1090',['kDaikin160StateLength',['../IRremoteESP8266_8h.html#a09f022a12a40a8fae09bfbddfbee6d62',1,'IRremoteESP8266.h']]], - ['kdaikin160swingvauto_1091',['kDaikin160SwingVAuto',['../ir__Daikin_8h.html#aa6d9ee84d2c15c69ed8dbbc832285baf',1,'ir_Daikin.h']]], - ['kdaikin160swingvhigh_1092',['kDaikin160SwingVHigh',['../ir__Daikin_8h.html#abf542bd70d12534af72fb4ec8df5d265',1,'ir_Daikin.h']]], - ['kdaikin160swingvhighest_1093',['kDaikin160SwingVHighest',['../ir__Daikin_8h.html#a2a48ca041acbde68b902a4d0be4aeec5',1,'ir_Daikin.h']]], - ['kdaikin160swingvlow_1094',['kDaikin160SwingVLow',['../ir__Daikin_8h.html#a04ff7cb63db6b281ced56283288f05c0',1,'ir_Daikin.h']]], - ['kdaikin160swingvlowest_1095',['kDaikin160SwingVLowest',['../ir__Daikin_8h.html#ac4f34c7862802b21dede2ac0b534c8d8',1,'ir_Daikin.h']]], - ['kdaikin160swingvmiddle_1096',['kDaikin160SwingVMiddle',['../ir__Daikin_8h.html#a620b644f07f9b664f09417bb362dc216',1,'ir_Daikin.h']]], - ['kdaikin160zerospace_1097',['kDaikin160ZeroSpace',['../ir__Daikin_8h.html#a2b4591126c0b26ab16b5611dbfa4d5f6',1,'ir_Daikin.h']]], - ['kdaikin176auto_1098',['kDaikin176Auto',['../ir__Daikin_8h.html#a692292ea29754f646f3611326899a3c4',1,'ir_Daikin.h']]], - ['kdaikin176bitmark_1099',['kDaikin176BitMark',['../ir__Daikin_8h.html#a4be0185fb8f65c0286cbf55dfd63a40f',1,'ir_Daikin.h']]], - ['kdaikin176bits_1100',['kDaikin176Bits',['../IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7',1,'IRremoteESP8266.h']]], - ['kdaikin176cool_1101',['kDaikin176Cool',['../ir__Daikin_8h.html#ab67e912a9abdda7dcbe52ce90b70a3b5',1,'ir_Daikin.h']]], - ['kdaikin176defaultrepeat_1102',['kDaikin176DefaultRepeat',['../IRremoteESP8266_8h.html#a0228803e8fff3c73227214d4bb3d8b05',1,'IRremoteESP8266.h']]], - ['kdaikin176dry_1103',['kDaikin176Dry',['../ir__Daikin_8h.html#a23bf5f3e572d11fb38476a5118382b35',1,'ir_Daikin.h']]], - ['kdaikin176dryfantemp_1104',['kDaikin176DryFanTemp',['../ir__Daikin_8h.html#a462ad30312f13443f51b510e5b391f42',1,'ir_Daikin.h']]], - ['kdaikin176fan_1105',['kDaikin176Fan',['../ir__Daikin_8h.html#ace1184864858e862a66be779cbe698b1',1,'ir_Daikin.h']]], - ['kdaikin176fanmax_1106',['kDaikin176FanMax',['../ir__Daikin_8h.html#a97e77d2a09bc753c17104f9695a0c0b1',1,'ir_Daikin.h']]], - ['kdaikin176freq_1107',['kDaikin176Freq',['../ir__Daikin_8h.html#a7f0c76e579dad510f21c34ba57cbf8dc',1,'ir_Daikin.h']]], - ['kdaikin176gap_1108',['kDaikin176Gap',['../ir__Daikin_8h.html#a0309c9d689f64e2d57ab09a2bb27bc18',1,'ir_Daikin.h']]], - ['kdaikin176hdrmark_1109',['kDaikin176HdrMark',['../ir__Daikin_8h.html#a9ff1ca660571d09caa0de39ce1370720',1,'ir_Daikin.h']]], - ['kdaikin176hdrspace_1110',['kDaikin176HdrSpace',['../ir__Daikin_8h.html#a64c4874b5d92682911ca84e826e1ff0b',1,'ir_Daikin.h']]], - ['kdaikin176heat_1111',['kDaikin176Heat',['../ir__Daikin_8h.html#a16500da7848870fdda27209906d56ead',1,'ir_Daikin.h']]], - ['kdaikin176modebutton_1112',['kDaikin176ModeButton',['../ir__Daikin_8h.html#a5c8602d17e9f70eefd735741b9d714eb',1,'ir_Daikin.h']]], - ['kdaikin176onespace_1113',['kDaikin176OneSpace',['../ir__Daikin_8h.html#a86ed046d66daf884ac0f06722991f5ba',1,'ir_Daikin.h']]], - ['kdaikin176section1length_1114',['kDaikin176Section1Length',['../ir__Daikin_8h.html#a4c5ce7df75834c77c0908cc40dbe02ed',1,'ir_Daikin.h']]], - ['kdaikin176section2length_1115',['kDaikin176Section2Length',['../ir__Daikin_8h.html#a9e2bb25a1d64d2c042e7eef38f5347d0',1,'ir_Daikin.h']]], - ['kdaikin176sections_1116',['kDaikin176Sections',['../ir__Daikin_8h.html#a177d12ac0f4fe8b5c5aeaf8f72579607',1,'ir_Daikin.h']]], - ['kdaikin176statelength_1117',['kDaikin176StateLength',['../IRremoteESP8266_8h.html#aa71fc87dcb6f14b82997e1d2269429d2',1,'IRremoteESP8266.h']]], - ['kdaikin176swinghauto_1118',['kDaikin176SwingHAuto',['../ir__Daikin_8h.html#a326ffcf00330a1759e4f71f8f8603f23',1,'ir_Daikin.h']]], - ['kdaikin176swinghoff_1119',['kDaikin176SwingHOff',['../ir__Daikin_8h.html#a8672ccb9016808c84b1b06de6584188a',1,'ir_Daikin.h']]], - ['kdaikin176zerospace_1120',['kDaikin176ZeroSpace',['../ir__Daikin_8h.html#a4db8836caa6cae0bab6fbde94409c879',1,'ir_Daikin.h']]], - ['kdaikin216bitmark_1121',['kDaikin216BitMark',['../ir__Daikin_8h.html#ada7cf9c593d716617ff4436755eef4f9',1,'ir_Daikin.h']]], - ['kdaikin216bits_1122',['kDaikin216Bits',['../IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9',1,'IRremoteESP8266.h']]], - ['kdaikin216defaultrepeat_1123',['kDaikin216DefaultRepeat',['../IRremoteESP8266_8h.html#a9d14d424d5a93de62f3e6f453db112db',1,'IRremoteESP8266.h']]], - ['kdaikin216freq_1124',['kDaikin216Freq',['../ir__Daikin_8h.html#aa3a9753c90ecb6d7f5ee3e5a16c79217',1,'ir_Daikin.h']]], - ['kdaikin216gap_1125',['kDaikin216Gap',['../ir__Daikin_8h.html#ab807adaab8afbeb97afaa9ddb2ec2c63',1,'ir_Daikin.h']]], - ['kdaikin216hdrmark_1126',['kDaikin216HdrMark',['../ir__Daikin_8h.html#a24163655b3d374aa643506c2bf4a2406',1,'ir_Daikin.h']]], - ['kdaikin216hdrspace_1127',['kDaikin216HdrSpace',['../ir__Daikin_8h.html#a2e69973e9a4aee29668597d09fcd70a4',1,'ir_Daikin.h']]], - ['kdaikin216onespace_1128',['kDaikin216OneSpace',['../ir__Daikin_8h.html#a1edeb73093bdea23e6cfb39c31ca1fce',1,'ir_Daikin.h']]], - ['kdaikin216section1length_1129',['kDaikin216Section1Length',['../ir__Daikin_8h.html#a5aacc812feb33ef954adc49086036859',1,'ir_Daikin.h']]], - ['kdaikin216section2length_1130',['kDaikin216Section2Length',['../ir__Daikin_8h.html#aade497bb9aad663a9e1e9403188d2154',1,'ir_Daikin.h']]], - ['kdaikin216sections_1131',['kDaikin216Sections',['../ir__Daikin_8h.html#a0ecd54bb733b982e3e5adf0c13ac9f6b',1,'ir_Daikin.h']]], - ['kdaikin216statelength_1132',['kDaikin216StateLength',['../IRremoteESP8266_8h.html#a70a1a65c1947b440e4ff27477de5ddc7',1,'IRremoteESP8266.h']]], - ['kdaikin216swingoff_1133',['kDaikin216SwingOff',['../ir__Daikin_8h.html#a84d6bb74c705dfbcd558f0b411a2a88e',1,'ir_Daikin.h']]], - ['kdaikin216swingon_1134',['kDaikin216SwingOn',['../ir__Daikin_8h.html#a4b2d77aafd84ed004390b5d4c7ad0455',1,'ir_Daikin.h']]], - ['kdaikin216zerospace_1135',['kDaikin216ZeroSpace',['../ir__Daikin_8h.html#a448250dbb5a3a9733f21a0e347d17999',1,'ir_Daikin.h']]], - ['kdaikin2bitmark_1136',['kDaikin2BitMark',['../ir__Daikin_8h.html#a226f10b7216d4f039cf79af823673a18',1,'ir_Daikin.h']]], - ['kdaikin2bits_1137',['kDaikin2Bits',['../IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de',1,'IRremoteESP8266.h']]], - ['kdaikin2defaultrepeat_1138',['kDaikin2DefaultRepeat',['../IRremoteESP8266_8h.html#a2dde8fd00f8a28e35da04cff9a3a1908',1,'IRremoteESP8266.h']]], - ['kdaikin2freq_1139',['kDaikin2Freq',['../ir__Daikin_8h.html#ab82e4836d9023c4ba3041d1226761461',1,'ir_Daikin.h']]], - ['kdaikin2gap_1140',['kDaikin2Gap',['../ir__Daikin_8h.html#afe14712c1be4ca14d5cd41e77d4bada0',1,'ir_Daikin.h']]], - ['kdaikin2hdrmark_1141',['kDaikin2HdrMark',['../ir__Daikin_8h.html#ab679ef183af5b94f53697d434e6540c3',1,'ir_Daikin.h']]], - ['kdaikin2hdrspace_1142',['kDaikin2HdrSpace',['../ir__Daikin_8h.html#a557f8eeaf55ff7fda0cacd0245ac27d3',1,'ir_Daikin.h']]], - ['kdaikin2leadermark_1143',['kDaikin2LeaderMark',['../ir__Daikin_8h.html#a533c7ea8f968502d4b31e14eb2b1f614',1,'ir_Daikin.h']]], - ['kdaikin2leaderspace_1144',['kDaikin2LeaderSpace',['../ir__Daikin_8h.html#a9d48d64e470ff0318bd62b3385433f57',1,'ir_Daikin.h']]], - ['kdaikin2mincooltemp_1145',['kDaikin2MinCoolTemp',['../ir__Daikin_8h.html#a78b37644f9327537d35bec4c0fd8faee',1,'ir_Daikin.h']]], - ['kdaikin2onespace_1146',['kDaikin2OneSpace',['../ir__Daikin_8h.html#a70a96368500562fa95f88dc2f203c194',1,'ir_Daikin.h']]], - ['kdaikin2section1length_1147',['kDaikin2Section1Length',['../ir__Daikin_8h.html#a463878e9bfb22ca3c64a40259598872c',1,'ir_Daikin.h']]], - ['kdaikin2section2length_1148',['kDaikin2Section2Length',['../ir__Daikin_8h.html#a8cb956f86fdf487b1ea7ac388eeda2b5',1,'ir_Daikin.h']]], - ['kdaikin2sections_1149',['kDaikin2Sections',['../ir__Daikin_8h.html#a770cef4efa5d5668b063cf0e26f1b134',1,'ir_Daikin.h']]], - ['kdaikin2statelength_1150',['kDaikin2StateLength',['../IRremoteESP8266_8h.html#a349e4d17f83bb3e707ff19c0255c1644',1,'IRremoteESP8266.h']]], - ['kdaikin2swinghauto_1151',['kDaikin2SwingHAuto',['../ir__Daikin_8h.html#a834a3138b0f9bfdac98d26aa63bc951e',1,'ir_Daikin.h']]], - ['kdaikin2swinghleft_1152',['kDaikin2SwingHLeft',['../ir__Daikin_8h.html#aa9b294b2f12660081171df290a7e874f',1,'ir_Daikin.h']]], - ['kdaikin2swinghleftmax_1153',['kDaikin2SwingHLeftMax',['../ir__Daikin_8h.html#aac08696fc9734996537204c089db2f7c',1,'ir_Daikin.h']]], - ['kdaikin2swinghmiddle_1154',['kDaikin2SwingHMiddle',['../ir__Daikin_8h.html#ab882d68819344e622182b07ded30cccf',1,'ir_Daikin.h']]], - ['kdaikin2swinghoff_1155',['kDaikin2SwingHOff',['../ir__Daikin_8h.html#ae49a187598033a7cd1c6bd33295670cf',1,'ir_Daikin.h']]], - ['kdaikin2swinghright_1156',['kDaikin2SwingHRight',['../ir__Daikin_8h.html#a8d7c79266bedbb722dc1a74c8b727a27',1,'ir_Daikin.h']]], - ['kdaikin2swinghrightmax_1157',['kDaikin2SwingHRightMax',['../ir__Daikin_8h.html#a843ad9ee10eccd799814ca9fff57f481',1,'ir_Daikin.h']]], - ['kdaikin2swinghswing_1158',['kDaikin2SwingHSwing',['../ir__Daikin_8h.html#a3776d46e94a771a6dc94d14257f34d09',1,'ir_Daikin.h']]], - ['kdaikin2swinghwide_1159',['kDaikin2SwingHWide',['../ir__Daikin_8h.html#a93157e048486e564757ba737551cf481',1,'ir_Daikin.h']]], - ['kdaikin2swingvauto_1160',['kDaikin2SwingVAuto',['../ir__Daikin_8h.html#aa91228576ef22854a693c86df5276cbb',1,'ir_Daikin.h']]], - ['kdaikin2swingvbreeze_1161',['kDaikin2SwingVBreeze',['../ir__Daikin_8h.html#a5646d38fff6a985314158796665d9d76',1,'ir_Daikin.h']]], - ['kdaikin2swingvcirculate_1162',['kDaikin2SwingVCirculate',['../ir__Daikin_8h.html#a717bb32ce20e6d65ee78a9e8ba0f5490',1,'ir_Daikin.h']]], - ['kdaikin2swingvhigh_1163',['kDaikin2SwingVHigh',['../ir__Daikin_8h.html#a2d25d46fb289c3450ed6817a45982e27',1,'ir_Daikin.h']]], - ['kdaikin2swingvhighest_1164',['kDaikin2SwingVHighest',['../ir__Daikin_8h.html#a19a1466e7c23d4713026d6713ee301dc',1,'ir_Daikin.h']]], - ['kdaikin2swingvlow_1165',['kDaikin2SwingVLow',['../ir__Daikin_8h.html#accae3be213670675f8dfc974fe19f2cf',1,'ir_Daikin.h']]], - ['kdaikin2swingvlowermiddle_1166',['kDaikin2SwingVLowerMiddle',['../ir__Daikin_8h.html#afc89861dee46baa67b4beaa4a970a579',1,'ir_Daikin.h']]], - ['kdaikin2swingvlowest_1167',['kDaikin2SwingVLowest',['../ir__Daikin_8h.html#a7fd3777c7c574d773ede3d1c2d72301d',1,'ir_Daikin.h']]], - ['kdaikin2swingvoff_1168',['kDaikin2SwingVOff',['../ir__Daikin_8h.html#a30cfd294ea52a0ef736ebcc38a79aa71',1,'ir_Daikin.h']]], - ['kdaikin2swingvswing_1169',['kDaikin2SwingVSwing',['../ir__Daikin_8h.html#a2a62938481ba7b4374df50867295c07d',1,'ir_Daikin.h']]], - ['kdaikin2swingvuppermiddle_1170',['kDaikin2SwingVUpperMiddle',['../ir__Daikin_8h.html#a9f12c68db1a0af6e3defbc2bb8f3b8bc',1,'ir_Daikin.h']]], - ['kdaikin2tolerance_1171',['kDaikin2Tolerance',['../ir__Daikin_8h.html#ac428e884b15026c0610cc1b0b8b46154',1,'ir_Daikin.h']]], - ['kdaikin2zerospace_1172',['kDaikin2ZeroSpace',['../ir__Daikin_8h.html#a91b023ce8679d8d0e4434e014e746f99',1,'ir_Daikin.h']]], - ['kdaikin64bitmark_1173',['kDaikin64BitMark',['../ir__Daikin_8h.html#a6d89c1acd56b670b2aba65429d6fbf00',1,'ir_Daikin.h']]], - ['kdaikin64bits_1174',['kDaikin64Bits',['../IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f',1,'IRremoteESP8266.h']]], - ['kdaikin64checksumoffset_1175',['kDaikin64ChecksumOffset',['../ir__Daikin_8h.html#a5c47c0a0b1d2a23620beb2496af958c5',1,'ir_Daikin.h']]], - ['kdaikin64checksumsize_1176',['kDaikin64ChecksumSize',['../ir__Daikin_8h.html#a0c068274c73deb732e70a7daf6684391',1,'ir_Daikin.h']]], - ['kdaikin64cool_1177',['kDaikin64Cool',['../ir__Daikin_8h.html#a1ed020e8e7b5b741e90c4a27ca9f3a91',1,'ir_Daikin.h']]], - ['kdaikin64defaultrepeat_1178',['kDaikin64DefaultRepeat',['../IRremoteESP8266_8h.html#aca64338c3e3bbe52f8ec5688317041b3',1,'IRremoteESP8266.h']]], - ['kdaikin64dry_1179',['kDaikin64Dry',['../ir__Daikin_8h.html#aa494c8e2a54209c7467fdd7f40655b0b',1,'ir_Daikin.h']]], - ['kdaikin64fan_1180',['kDaikin64Fan',['../ir__Daikin_8h.html#aa1f4bb12be0f74af35ee54a5540f8a7b',1,'ir_Daikin.h']]], - ['kdaikin64fanauto_1181',['kDaikin64FanAuto',['../ir__Daikin_8h.html#a6fbc965cb8194048ed27d586321c01b2',1,'ir_Daikin.h']]], - ['kdaikin64fanhigh_1182',['kDaikin64FanHigh',['../ir__Daikin_8h.html#a122d57c30d1f4ad8f20d44077b0a1970',1,'ir_Daikin.h']]], - ['kdaikin64fanlow_1183',['kDaikin64FanLow',['../ir__Daikin_8h.html#a5a692fdcb373acf101536adb4c18384f',1,'ir_Daikin.h']]], - ['kdaikin64fanmed_1184',['kDaikin64FanMed',['../ir__Daikin_8h.html#a9b2737ba57e38d4c3dfe7bc65de4c944',1,'ir_Daikin.h']]], - ['kdaikin64fanquiet_1185',['kDaikin64FanQuiet',['../ir__Daikin_8h.html#a1a7d78b2ed8ca5b83d6422d659ecb296',1,'ir_Daikin.h']]], - ['kdaikin64fanturbo_1186',['kDaikin64FanTurbo',['../ir__Daikin_8h.html#ae6d370916c0897bc82346136d7922f5d',1,'ir_Daikin.h']]], - ['kdaikin64freq_1187',['kDaikin64Freq',['../ir__Daikin_8h.html#a7b63829df4d0e1de61ed396c3b07e988',1,'ir_Daikin.h']]], - ['kdaikin64gap_1188',['kDaikin64Gap',['../ir__Daikin_8h.html#ae191cb5f6c65b944970158caaf56618d',1,'ir_Daikin.h']]], - ['kdaikin64hdrmark_1189',['kDaikin64HdrMark',['../ir__Daikin_8h.html#abe7b92798de08dfc5f044869891bdec5',1,'ir_Daikin.h']]], - ['kdaikin64hdrspace_1190',['kDaikin64HdrSpace',['../ir__Daikin_8h.html#a1eac122554acda264f9aa48261b2a884',1,'ir_Daikin.h']]], - ['kdaikin64heat_1191',['kDaikin64Heat',['../ir__Daikin_8h.html#a2640df7a3472259f114873bdb5cbb70f',1,'ir_Daikin.h']]], - ['kdaikin64knowngoodstate_1192',['kDaikin64KnownGoodState',['../ir__Daikin_8h.html#a09f0aa8c586b35b79bbceb19e822eb48',1,'ir_Daikin.h']]], - ['kdaikin64ldrmark_1193',['kDaikin64LdrMark',['../ir__Daikin_8h.html#aca20b8ee0fa9a8aa2d676ef12bd5ba97',1,'ir_Daikin.h']]], - ['kdaikin64ldrspace_1194',['kDaikin64LdrSpace',['../ir__Daikin_8h.html#ada1084c119abe58dadcb17eb4cfed072',1,'ir_Daikin.h']]], - ['kdaikin64maxtemp_1195',['kDaikin64MaxTemp',['../ir__Daikin_8h.html#a495e3b77590263a2c043c1ba12489fac',1,'ir_Daikin.h']]], - ['kdaikin64mintemp_1196',['kDaikin64MinTemp',['../ir__Daikin_8h.html#a209cb1798ae64de1f5274fb167ee62ea',1,'ir_Daikin.h']]], - ['kdaikin64onespace_1197',['kDaikin64OneSpace',['../ir__Daikin_8h.html#ab3129b72f5300893d04b47e72dd420e1',1,'ir_Daikin.h']]], - ['kdaikin64overhead_1198',['kDaikin64Overhead',['../ir__Daikin_8h.html#af0dafe45d0127430e05f2312e8ba99bb',1,'ir_Daikin.h']]], - ['kdaikin64tolerancedelta_1199',['kDaikin64ToleranceDelta',['../ir__Daikin_8h.html#ae0b22a140c2727de9a347e8ab8d554e9',1,'ir_Daikin.h']]], - ['kdaikin64zerospace_1200',['kDaikin64ZeroSpace',['../ir__Daikin_8h.html#a142e45c289af1e9802254b9c138003fa',1,'ir_Daikin.h']]], - ['kdaikinauto_1201',['kDaikinAuto',['../ir__Daikin_8h.html#af3a0e7c149d020002cdf345a15606542',1,'ir_Daikin.h']]], - ['kdaikinbeeploud_1202',['kDaikinBeepLoud',['../ir__Daikin_8h.html#a4eb2b3899076882e3ed23220138ebac1',1,'ir_Daikin.h']]], - ['kdaikinbeepoff_1203',['kDaikinBeepOff',['../ir__Daikin_8h.html#a8271934c8bbd4b8e4d6aacdee5a038cf',1,'ir_Daikin.h']]], - ['kdaikinbeepquiet_1204',['kDaikinBeepQuiet',['../ir__Daikin_8h.html#a11008f7d6afc934426b88704d47301e7',1,'ir_Daikin.h']]], - ['kdaikinbitmark_1205',['kDaikinBitMark',['../ir__Daikin_8h.html#ae109b9ea2120f989dac2529345e38adb',1,'ir_Daikin.h']]], - ['kdaikinbits_1206',['kDaikinBits',['../IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485',1,'IRremoteESP8266.h']]], - ['kdaikinbitsshort_1207',['kDaikinBitsShort',['../IRremoteESP8266_8h.html#aebaa8eb786747761fb369cfd34181cb7',1,'IRremoteESP8266.h']]], - ['kdaikinbytechecksum1_1208',['kDaikinByteChecksum1',['../ir__Daikin_8h.html#a887d8d38cf4330e1107443471fa119ca',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum2_1209',['kDaikinByteChecksum2',['../ir__Daikin_8h.html#ab27225f21b29e617bf03fc68cc6e8e0f',1,'ir_Daikin.h']]], - ['kdaikincool_1210',['kDaikinCool',['../ir__Daikin_8h.html#aa57615a0a9f79b97139580a807bf095f',1,'ir_Daikin.h']]], - ['kdaikincurbit_1211',['kDaikinCurBit',['../ir__Daikin_8h.html#afccfde2b46f5fcb425f02a79a9c20494',1,'ir_Daikin.h']]], - ['kdaikincurindex_1212',['kDaikinCurIndex',['../ir__Daikin_8h.html#a5c01a0bfbd92b337d2e4a5c3df381865',1,'ir_Daikin.h']]], - ['kdaikindefaultrepeat_1213',['kDaikinDefaultRepeat',['../IRremoteESP8266_8h.html#af691d5202b7f121a16b2d9871ee14d9c',1,'IRremoteESP8266.h']]], - ['kdaikindry_1214',['kDaikinDry',['../ir__Daikin_8h.html#ab6143bef74a122c3fba3a3b29df0cf29',1,'ir_Daikin.h']]], - ['kdaikinfan_1215',['kDaikinFan',['../ir__Daikin_8h.html#a616df34328cdac764aecc9ffb0f16f09',1,'ir_Daikin.h']]], - ['kdaikinfanauto_1216',['kDaikinFanAuto',['../ir__Daikin_8h.html#a87807bd5727d9da1b615fca2bd732292',1,'ir_Daikin.h']]], - ['kdaikinfanmax_1217',['kDaikinFanMax',['../ir__Daikin_8h.html#ab483f3913a909884f44f8cd8f779bca0',1,'ir_Daikin.h']]], - ['kdaikinfanmed_1218',['kDaikinFanMed',['../ir__Daikin_8h.html#ab6eb2c902c2b5f927160efc9fb9ab08c',1,'ir_Daikin.h']]], - ['kdaikinfanmin_1219',['kDaikinFanMin',['../ir__Daikin_8h.html#a83ad300b9374e50c22211501ee2d1a7a',1,'ir_Daikin.h']]], - ['kdaikinfanquiet_1220',['kDaikinFanQuiet',['../ir__Daikin_8h.html#aae481cf166671c30bccdc7f47aa6666e',1,'ir_Daikin.h']]], - ['kdaikinfirstheader64_1221',['kDaikinFirstHeader64',['../ir__Daikin_8h.html#a0bd3b36061d545bb21562622642f4196',1,'ir_Daikin.h']]], - ['kdaikingap_1222',['kDaikinGap',['../ir__Daikin_8h.html#aed68991584125a277593c339ab387276',1,'ir_Daikin.h']]], - ['kdaikinhdrmark_1223',['kDaikinHdrMark',['../ir__Daikin_8h.html#a0a38b3bdfd8f4f7a18f969188388e29e',1,'ir_Daikin.h']]], - ['kdaikinhdrspace_1224',['kDaikinHdrSpace',['../ir__Daikin_8h.html#ac4ca6c53faeec7d7a7ccfb50802087dc',1,'ir_Daikin.h']]], - ['kdaikinheaderlength_1225',['kDaikinHeaderLength',['../ir__Daikin_8h.html#a476ca864b6791439549bb4257ca78b23',1,'ir_Daikin.h']]], - ['kdaikinheat_1226',['kDaikinHeat',['../ir__Daikin_8h.html#a05824dc5af4ed0d3eceda540ad0e7a9f',1,'ir_Daikin.h']]], - ['kdaikinlightbright_1227',['kDaikinLightBright',['../ir__Daikin_8h.html#a20a3103d8d0a672c0c05c1679bf3b2ab',1,'ir_Daikin.h']]], - ['kdaikinlightdim_1228',['kDaikinLightDim',['../ir__Daikin_8h.html#a1093baf5b62fca42f9361715be2198a3',1,'ir_Daikin.h']]], - ['kdaikinlightoff_1229',['kDaikinLightOff',['../ir__Daikin_8h.html#ae57f7d2ea43e865ebf8175a8dbacab45',1,'ir_Daikin.h']]], - ['kdaikinmarkexcess_1230',['kDaikinMarkExcess',['../ir__Daikin_8h.html#a5331e1ee51bd7b001346aa41ee5d26cc',1,'ir_Daikin.h']]], - ['kdaikinmaxtemp_1231',['kDaikinMaxTemp',['../ir__Daikin_8h.html#aab7be756494a5ed23e9202af769e0012',1,'ir_Daikin.h']]], - ['kdaikinmintemp_1232',['kDaikinMinTemp',['../ir__Daikin_8h.html#af257feb15dc282c7d06351ee9eed666b',1,'ir_Daikin.h']]], - ['kdaikinonespace_1233',['kDaikinOneSpace',['../ir__Daikin_8h.html#a6653082dcfde989bd2c5810809fc18a9',1,'ir_Daikin.h']]], - ['kdaikinsection1length_1234',['kDaikinSection1Length',['../ir__Daikin_8h.html#ab3b8aacbebe6c1c5514141102d1ca26f',1,'ir_Daikin.h']]], - ['kdaikinsection2length_1235',['kDaikinSection2Length',['../ir__Daikin_8h.html#a2e65cdf05d22a20f01ae5f6d3e222218',1,'ir_Daikin.h']]], - ['kdaikinsection3length_1236',['kDaikinSection3Length',['../ir__Daikin_8h.html#ae7dbaf6b4034267e4610087f9f2f51e3',1,'ir_Daikin.h']]], - ['kdaikinsections_1237',['kDaikinSections',['../ir__Daikin_8h.html#aad822c70789b861fa5beb839833e0b4c',1,'ir_Daikin.h']]], - ['kdaikinstatelength_1238',['kDaikinStateLength',['../IRremoteESP8266_8h.html#af1fda5b9f355e526dc66cf58824315a7',1,'IRremoteESP8266.h']]], - ['kdaikinstatelengthshort_1239',['kDaikinStateLengthShort',['../IRremoteESP8266_8h.html#ae94c897cb0bd25ca7a4d693c7be9be3d',1,'IRremoteESP8266.h']]], - ['kdaikinswingoff_1240',['kDaikinSwingOff',['../ir__Daikin_8h.html#abc9194f48f63632b87c6139dd8ab6ecf',1,'ir_Daikin.h']]], - ['kdaikinswingon_1241',['kDaikinSwingOn',['../ir__Daikin_8h.html#af19ec29dc79837deca05f6061f2e6524',1,'ir_Daikin.h']]], - ['kdaikintolerance_1242',['kDaikinTolerance',['../ir__Daikin_8h.html#aea3938d1522df0040ddb9775075d6669',1,'ir_Daikin.h']]], - ['kdaikinunusedtime_1243',['kDaikinUnusedTime',['../ir__Daikin_8h.html#af60d27bb9d08317498b35f62c167f6a4',1,'ir_Daikin.h']]], - ['kdaikinzerospace_1244',['kDaikinZeroSpace',['../ir__Daikin_8h.html#ace5b2c2be3b58f22248eafb2148d059c',1,'ir_Daikin.h']]], - ['kdaysstr_1245',['kDaysStr',['../IRtext_8cpp.html#a4269111ae41c3a673ec0a87fca0fd78b',1,'kDaysStr(): IRtext.cpp'],['../IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae',1,'kDaysStr(): IRtext.cpp']]], - ['kdaystr_1246',['kDayStr',['../IRtext_8cpp.html#ab6fb8803c6a95d1926abb56b7ecb2e09',1,'kDayStr(): IRtext.cpp'],['../IRtext_8h.html#adb64531a5054629613696f9af39420e2',1,'kDayStr(): IRtext.cpp']]], - ['kdefaultesp32timer_1247',['kDefaultESP32Timer',['../IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709',1,'IRrecv.h']]], - ['kdefaultmessagegap_1248',['kDefaultMessageGap',['../IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7',1,'IRsend.h']]], - ['kdelonghiacauto_1249',['kDelonghiAcAuto',['../ir__Delonghi_8h.html#ab10d4fe0b9dbe99ed942b73a6ff61d37',1,'ir_Delonghi.h']]], - ['kdelonghiacbitmark_1250',['kDelonghiAcBitMark',['../ir__Delonghi_8cpp.html#aa70f02d16b78f513e245871d4db0785a',1,'ir_Delonghi.cpp']]], - ['kdelonghiacbits_1251',['kDelonghiAcBits',['../IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909',1,'IRremoteESP8266.h']]], - ['kdelonghiacchecksumoffset_1252',['kDelonghiAcChecksumOffset',['../ir__Delonghi_8h.html#a4b5e3d9874b016f60b7f9c26e7cf0cfd',1,'ir_Delonghi.h']]], - ['kdelonghiaccool_1253',['kDelonghiAcCool',['../ir__Delonghi_8h.html#a9447cc3a3f6f4e0603ecc99104523119',1,'ir_Delonghi.h']]], - ['kdelonghiacdefaultrepeat_1254',['kDelonghiAcDefaultRepeat',['../IRremoteESP8266_8h.html#a8f18256a0a6893e077e253e5e80da164',1,'IRremoteESP8266.h']]], - ['kdelonghiacdry_1255',['kDelonghiAcDry',['../ir__Delonghi_8h.html#a1c83f080ac1f48548fcfa5d691ef893d',1,'ir_Delonghi.h']]], - ['kdelonghiacfan_1256',['kDelonghiAcFan',['../ir__Delonghi_8h.html#af494534acfb8ae1c0f9c15bc13e2d0c8',1,'ir_Delonghi.h']]], - ['kdelonghiacfanauto_1257',['kDelonghiAcFanAuto',['../ir__Delonghi_8h.html#adf2286936d79d8c899283fa6e3838ebb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanhigh_1258',['kDelonghiAcFanHigh',['../ir__Delonghi_8h.html#a03027eb1a6a382479b44db0699aee30b',1,'ir_Delonghi.h']]], - ['kdelonghiacfanlow_1259',['kDelonghiAcFanLow',['../ir__Delonghi_8h.html#a053a51021679cd5c4720e7ec68fa43eb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanmedium_1260',['kDelonghiAcFanMedium',['../ir__Delonghi_8h.html#ac748c5e0b7c5acb108086f90c088028f',1,'ir_Delonghi.h']]], - ['kdelonghiacfreq_1261',['kDelonghiAcFreq',['../ir__Delonghi_8cpp.html#a9425e4f71aa6454a89b55f3b5789d94d',1,'ir_Delonghi.cpp']]], - ['kdelonghiacgap_1262',['kDelonghiAcGap',['../ir__Delonghi_8cpp.html#ab1cd2481fc96811ed822c8c9f63420c3',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrmark_1263',['kDelonghiAcHdrMark',['../ir__Delonghi_8cpp.html#a0feead944883173788b8d02b7ae94ef8',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrspace_1264',['kDelonghiAcHdrSpace',['../ir__Delonghi_8cpp.html#a606ea96746b1b6471b1d76f05bdc7e5a',1,'ir_Delonghi.cpp']]], - ['kdelonghiaconespace_1265',['kDelonghiAcOneSpace',['../ir__Delonghi_8cpp.html#a8805fdc60cd3537ba2d94038610a3490',1,'ir_Delonghi.cpp']]], - ['kdelonghiacoverhead_1266',['kDelonghiAcOverhead',['../ir__Delonghi_8cpp.html#ac265c123c0cd7492d26f030d129f3475',1,'ir_Delonghi.cpp']]], - ['kdelonghiactempautodrymode_1267',['kDelonghiAcTempAutoDryMode',['../ir__Delonghi_8h.html#add6f728d2746a089e00a35644d664a6c',1,'ir_Delonghi.h']]], - ['kdelonghiactempfanmode_1268',['kDelonghiAcTempFanMode',['../ir__Delonghi_8h.html#a120ae31fac35c33214317c3187aae15c',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxc_1269',['kDelonghiAcTempMaxC',['../ir__Delonghi_8h.html#a476922b8d240c46cf092897f6c701e87',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxf_1270',['kDelonghiAcTempMaxF',['../ir__Delonghi_8h.html#abc11f81bc221aa3789258b7a990633b3',1,'ir_Delonghi.h']]], - ['kdelonghiactempminc_1271',['kDelonghiAcTempMinC',['../ir__Delonghi_8h.html#ad31267284f7dd8f533fc978ed7e92428',1,'ir_Delonghi.h']]], - ['kdelonghiactempminf_1272',['kDelonghiAcTempMinF',['../ir__Delonghi_8h.html#a0311abab5eff5a8c47261db8e3d40ed5',1,'ir_Delonghi.h']]], - ['kdelonghiactimermax_1273',['kDelonghiAcTimerMax',['../ir__Delonghi_8h.html#a44d3f0d850c5cd5ad8c0e2dc7c2bd860',1,'ir_Delonghi.h']]], - ['kdelonghiaczerospace_1274',['kDelonghiAcZeroSpace',['../ir__Delonghi_8cpp.html#a4c1a9a70a50c7da9aa6cf91af85c695e',1,'ir_Delonghi.cpp']]], - ['kdenon48bits_1275',['kDenon48Bits',['../IRremoteESP8266_8h.html#ad7389b5b4f01a16dbf940eaae005c805',1,'IRremoteESP8266.h']]], - ['kdenonbitmark_1276',['kDenonBitMark',['../ir__Denon_8cpp.html#a1cd978061cfdc9bf1d5e1142dad86e59',1,'ir_Denon.cpp']]], - ['kdenonbitmarkticks_1277',['kDenonBitMarkTicks',['../ir__Denon_8cpp.html#ae6dddc89296abc186ac524c3f1efbe63',1,'ir_Denon.cpp']]], - ['kdenonbits_1278',['kDenonBits',['../IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238',1,'IRremoteESP8266.h']]], - ['kdenonhdrmark_1279',['kDenonHdrMark',['../ir__Denon_8cpp.html#a6f7b5da8c723615200109f425df72254',1,'ir_Denon.cpp']]], - ['kdenonhdrmarkticks_1280',['kDenonHdrMarkTicks',['../ir__Denon_8cpp.html#a484a90cdd15de164c931f1c70ab02938',1,'ir_Denon.cpp']]], - ['kdenonhdrspace_1281',['kDenonHdrSpace',['../ir__Denon_8cpp.html#a758b11259a5dcab3e949739cf67106be',1,'ir_Denon.cpp']]], - ['kdenonhdrspaceticks_1282',['kDenonHdrSpaceTicks',['../ir__Denon_8cpp.html#afe6cb1be37dcea0251ebf0fc43640fe1',1,'ir_Denon.cpp']]], - ['kdenonlegacybits_1283',['kDenonLegacyBits',['../IRremoteESP8266_8h.html#aacf2eea1349016ccbc96e97a0976f4ec',1,'IRremoteESP8266.h']]], - ['kdenonmanufacturer_1284',['kDenonManufacturer',['../ir__Denon_8cpp.html#abd89138765e21d25991fd5857506491b',1,'ir_Denon.cpp']]], - ['kdenonmincommandlengthticks_1285',['kDenonMinCommandLengthTicks',['../ir__Denon_8cpp.html#abb20f9f6053e0d46399011de71697a6a',1,'ir_Denon.cpp']]], - ['kdenonmingap_1286',['kDenonMinGap',['../ir__Denon_8cpp.html#a19b3fe79e06b3ece2cb167d5e14b2c11',1,'ir_Denon.cpp']]], - ['kdenonmingapticks_1287',['kDenonMinGapTicks',['../ir__Denon_8cpp.html#a191e0cfcf8167805ef9bfdc05463c313',1,'ir_Denon.cpp']]], - ['kdenononespace_1288',['kDenonOneSpace',['../ir__Denon_8cpp.html#a150b22eeeb64b59a3d9df51904fdda3f',1,'ir_Denon.cpp']]], - ['kdenononespaceticks_1289',['kDenonOneSpaceTicks',['../ir__Denon_8cpp.html#ad15a88b8f6b953918799eac1e814d107',1,'ir_Denon.cpp']]], - ['kdenontick_1290',['kDenonTick',['../ir__Denon_8cpp.html#a6cc0eba04ca4a2362068bf47d1869752',1,'ir_Denon.cpp']]], - ['kdenonzerospace_1291',['kDenonZeroSpace',['../ir__Denon_8cpp.html#ad8f53f000727e66938d086eadb5bf6eb',1,'ir_Denon.cpp']]], - ['kdenonzerospaceticks_1292',['kDenonZeroSpaceTicks',['../ir__Denon_8cpp.html#aed0c86367586cd043d8381499b3a4bdd',1,'ir_Denon.cpp']]], - ['kdishbitmark_1293',['kDishBitMark',['../ir__Dish_8cpp.html#aabe7f9815a2f5e65558b0f482e2ac50e',1,'ir_Dish.cpp']]], - ['kdishbitmarkticks_1294',['kDishBitMarkTicks',['../ir__Dish_8cpp.html#a1cfd9b730c78aac35f6c2cb56367c7bb',1,'ir_Dish.cpp']]], - ['kdishbits_1295',['kDishBits',['../IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831',1,'IRremoteESP8266.h']]], - ['kdishhdrmark_1296',['kDishHdrMark',['../ir__Dish_8cpp.html#ac4311aaed27b1f37a41a2a9cced0ecc5',1,'ir_Dish.cpp']]], - ['kdishhdrmarkticks_1297',['kDishHdrMarkTicks',['../ir__Dish_8cpp.html#a8dce19ee6e3a6859bd2d43c0c9e90517',1,'ir_Dish.cpp']]], - ['kdishhdrspace_1298',['kDishHdrSpace',['../ir__Dish_8cpp.html#ac68dfa9e554c919fd51b379621b2fbc4',1,'ir_Dish.cpp']]], - ['kdishhdrspaceticks_1299',['kDishHdrSpaceTicks',['../ir__Dish_8cpp.html#ab212535e169722d7f23b461b011400c2',1,'ir_Dish.cpp']]], - ['kdishminrepeat_1300',['kDishMinRepeat',['../IRremoteESP8266_8h.html#a5c2263819b032e3af4d416ab41126bd8',1,'IRremoteESP8266.h']]], - ['kdishonespace_1301',['kDishOneSpace',['../ir__Dish_8cpp.html#a6f1986377a4571c8eba5f401b772c194',1,'ir_Dish.cpp']]], - ['kdishonespaceticks_1302',['kDishOneSpaceTicks',['../ir__Dish_8cpp.html#ade25414e4747c56303752060d9f89446',1,'ir_Dish.cpp']]], - ['kdishrptspace_1303',['kDishRptSpace',['../ir__Dish_8cpp.html#a67628a3581fe85638f72711581ec0e42',1,'ir_Dish.cpp']]], - ['kdishrptspaceticks_1304',['kDishRptSpaceTicks',['../ir__Dish_8cpp.html#a801af68fd07720f74abcf2712e3228dd',1,'ir_Dish.cpp']]], - ['kdishtick_1305',['kDishTick',['../ir__Dish_8cpp.html#aa1eccae3b18a457c7cec248d483e808a',1,'ir_Dish.cpp']]], - ['kdishzerospace_1306',['kDishZeroSpace',['../ir__Dish_8cpp.html#acde5c5a789af871f7b5aacdf3f0efeb7',1,'ir_Dish.cpp']]], - ['kdishzerospaceticks_1307',['kDishZeroSpaceTicks',['../ir__Dish_8cpp.html#a68a0f2b9e2e457c8a58fa533e0ca5336',1,'ir_Dish.cpp']]], - ['kdisplaytempstr_1308',['kDisplayTempStr',['../IRtext_8cpp.html#a018814e961b4eb51b91680db3be7d17c',1,'kDisplayTempStr(): IRtext.cpp'],['../IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3',1,'kDisplayTempStr(): IRtext.cpp']]], - ['kdoshishabitmark_1309',['kDoshishaBitMark',['../ir__Doshisha_8cpp.html#a50a4feaff92c4a9fbba6128638fdb2fb',1,'ir_Doshisha.cpp']]], - ['kdoshishabits_1310',['kDoshishaBits',['../IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362',1,'IRremoteESP8266.h']]], - ['kdoshishahdrmark_1311',['kDoshishaHdrMark',['../ir__Doshisha_8cpp.html#adbfc15a1abb62540538afc9c645c1875',1,'ir_Doshisha.cpp']]], - ['kdoshishahdrspace_1312',['kDoshishaHdrSpace',['../ir__Doshisha_8cpp.html#a95a58b09fde0ee9ba59fcf838d16f736',1,'ir_Doshisha.cpp']]], - ['kdoshishaonespace_1313',['kDoshishaOneSpace',['../ir__Doshisha_8cpp.html#a48f3b70ddd3bc06c628ebe7ce29e74d3',1,'ir_Doshisha.cpp']]], - ['kdoshishazerospace_1314',['kDoshishaZeroSpace',['../ir__Doshisha_8cpp.html#a055ae27320600bc7e100ea7e147775f9',1,'ir_Doshisha.cpp']]], - ['kdownstr_1315',['kDownStr',['../IRtext_8cpp.html#a24998688cbbe54780843983394e925e5',1,'kDownStr(): IRtext.cpp'],['../IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd',1,'kDownStr(): IRtext.cpp']]], - ['kdry_1316',['kDry',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa0d254f21cc940f41cf7cc1c8ff46ce1f',1,'stdAc']]], - ['kdrystr_1317',['kDryStr',['../IRtext_8cpp.html#a149780a7bbdd13757ee4336c281ccd9d',1,'kDryStr(): IRtext.cpp'],['../IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5',1,'kDryStr(): IRtext.cpp']]], - ['kdutydefault_1318',['kDutyDefault',['../IRsend_8h.html#affa33c170fe058b783372852fca7cc5b',1,'IRsend.h']]], - ['kdutymax_1319',['kDutyMax',['../IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2',1,'IRsend.h']]], - ['kecoclimauto_1320',['kEcoclimAuto',['../ir__Ecoclim_8h.html#ae9de485f87949561850847b66ac81e47',1,'ir_Ecoclim.h']]], - ['kecoclimbitmark_1321',['kEcoclimBitMark',['../ir__Ecoclim_8cpp.html#ad03f638e01d2fdce86fe9a89f3f8dab2',1,'ir_Ecoclim.cpp']]], - ['kecoclimbits_1322',['kEcoclimBits',['../IRremoteESP8266_8h.html#accd38d1019bde991e9a887f853f295d0',1,'IRremoteESP8266.h']]], - ['kecoclimcool_1323',['kEcoclimCool',['../ir__Ecoclim_8h.html#ad6adc2787f3c3bf0116994d0966cfe20',1,'ir_Ecoclim.h']]], - ['kecoclimdefaultstate_1324',['kEcoclimDefaultState',['../ir__Ecoclim_8h.html#a7bf25176d3b9648e53c7a04334878d90',1,'ir_Ecoclim.h']]], - ['kecoclimdipmaster_1325',['kEcoclimDipMaster',['../ir__Ecoclim_8h.html#a69ebcc54bc7c25ce02557b7274a97641',1,'ir_Ecoclim.h']]], - ['kecoclimdipslave_1326',['kEcoclimDipSlave',['../ir__Ecoclim_8h.html#a118d61dbd264ffee7536e987dbf027df',1,'ir_Ecoclim.h']]], - ['kecoclimdry_1327',['kEcoclimDry',['../ir__Ecoclim_8h.html#a4533dbeddf89b4a95eb808e6284eb2af',1,'ir_Ecoclim.h']]], - ['kecoclimextratolerance_1328',['kEcoclimExtraTolerance',['../ir__Ecoclim_8cpp.html#a2b6fe32f39ac739d6dc0cbbd17dcf2af',1,'ir_Ecoclim.cpp']]], - ['kecoclimfan_1329',['kEcoclimFan',['../ir__Ecoclim_8h.html#aac7d10152a70e17e9338e61f477faa68',1,'ir_Ecoclim.h']]], - ['kecoclimfanauto_1330',['kEcoclimFanAuto',['../ir__Ecoclim_8h.html#a0675f3a9fa7a4308ca4cbee9b70c91b4',1,'ir_Ecoclim.h']]], - ['kecoclimfanmax_1331',['kEcoclimFanMax',['../ir__Ecoclim_8h.html#a1653fffcdcfdad604304f30c3e01969b',1,'ir_Ecoclim.h']]], - ['kecoclimfanmed_1332',['kEcoclimFanMed',['../ir__Ecoclim_8h.html#a6cb9ba6ffc6db3bb1a76a46d08e9a3e1',1,'ir_Ecoclim.h']]], - ['kecoclimfanmin_1333',['kEcoclimFanMin',['../ir__Ecoclim_8h.html#a2e6a1af18f73cefe4f1549b60c7a2199',1,'ir_Ecoclim.h']]], - ['kecoclimfootermark_1334',['kEcoclimFooterMark',['../ir__Ecoclim_8cpp.html#a911b6a39dd4e76eb7a5dc6945dad0f83',1,'ir_Ecoclim.cpp']]], - ['kecoclimgap_1335',['kEcoclimGap',['../ir__Ecoclim_8cpp.html#a95241311f503991fd423d224df9caa8e',1,'ir_Ecoclim.cpp']]], - ['kecoclimhdrmark_1336',['kEcoclimHdrMark',['../ir__Ecoclim_8cpp.html#af1cadad08d1adb19ae89ec05731a18e1',1,'ir_Ecoclim.cpp']]], - ['kecoclimhdrspace_1337',['kEcoclimHdrSpace',['../ir__Ecoclim_8cpp.html#a13d0809cbb678d064f411fb00633e5ed',1,'ir_Ecoclim.cpp']]], - ['kecoclimheat_1338',['kEcoclimHeat',['../ir__Ecoclim_8h.html#a38c275b9ee8e0a3c409190aefb1e06a3',1,'ir_Ecoclim.h']]], - ['kecoclimonespace_1339',['kEcoclimOneSpace',['../ir__Ecoclim_8cpp.html#a31fe81e18ee98b39c380b4687860fd7a',1,'ir_Ecoclim.cpp']]], - ['kecoclimrecycle_1340',['kEcoclimRecycle',['../ir__Ecoclim_8h.html#abb1183a1acbe1b3257dbf05cc72380f3',1,'ir_Ecoclim.h']]], - ['kecoclimsections_1341',['kEcoclimSections',['../ir__Ecoclim_8cpp.html#a94df888067ef8ddfac32741199631964',1,'ir_Ecoclim.cpp']]], - ['kecoclimshortbits_1342',['kEcoclimShortBits',['../IRremoteESP8266_8h.html#aff612cce1271e3254664c2efc7a2a9d5',1,'IRremoteESP8266.h']]], - ['kecoclimsleep_1343',['kEcoclimSleep',['../ir__Ecoclim_8h.html#adaeffa57c2e26d64e8afde8e296212dc',1,'ir_Ecoclim.h']]], - ['kecoclimtempmax_1344',['kEcoclimTempMax',['../ir__Ecoclim_8h.html#a748f159701406c4d149ec10765423acb',1,'ir_Ecoclim.h']]], - ['kecoclimtempmin_1345',['kEcoclimTempMin',['../ir__Ecoclim_8h.html#a52a5e38c10e8aa1fa350ea1d71180a15',1,'ir_Ecoclim.h']]], - ['kecoclimtimerdisable_1346',['kEcoclimTimerDisable',['../ir__Ecoclim_8h.html#ab271e282eeb7486f4fabfdc14368e161',1,'ir_Ecoclim.h']]], - ['kecoclimzerospace_1347',['kEcoclimZeroSpace',['../ir__Ecoclim_8cpp.html#a5c8f6e7dd7f1bb97124852ec4c274683',1,'ir_Ecoclim.cpp']]], - ['keconostr_1348',['kEconoStr',['../IRtext_8cpp.html#a4e3bee67564fe8f13d1d4f997924f464',1,'kEconoStr(): IRtext.cpp'],['../IRtext_8h.html#ab0b71c4429416a581a393f07e898bade',1,'kEconoStr(): IRtext.cpp']]], - ['keconotogglestr_1349',['kEconoToggleStr',['../IRtext_8cpp.html#abd6fd4c918a7911bfa223cd87e6f3d32',1,'kEconoToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a03bbafdddd086cacd34dca1a32d540f6',1,'kEconoToggleStr(): IRtext.cpp']]], - ['kelectraacauto_1350',['kElectraAcAuto',['../ir__Electra_8h.html#a536965f5003a474d68860005883afb5a',1,'ir_Electra.h']]], - ['kelectraacbitmark_1351',['kElectraAcBitMark',['../ir__Electra_8cpp.html#a41f7254b061b099b8131ec4d2a775116',1,'ir_Electra.cpp']]], - ['kelectraacbits_1352',['kElectraAcBits',['../IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16',1,'IRremoteESP8266.h']]], - ['kelectraaccool_1353',['kElectraAcCool',['../ir__Electra_8h.html#a6a37f4e24aad54a982994599a1bca59d',1,'ir_Electra.h']]], - ['kelectraacdry_1354',['kElectraAcDry',['../ir__Electra_8h.html#a9b8636631c22e003072bf84a9e30ddff',1,'ir_Electra.h']]], - ['kelectraacfan_1355',['kElectraAcFan',['../ir__Electra_8h.html#a28047c7d083d8bc9d9e34ab210c28185',1,'ir_Electra.h']]], - ['kelectraacfanauto_1356',['kElectraAcFanAuto',['../ir__Electra_8h.html#a48b3067393d4dc1e3461db4535212bff',1,'ir_Electra.h']]], - ['kelectraacfanhigh_1357',['kElectraAcFanHigh',['../ir__Electra_8h.html#a5cbf3118669f056f377b4625e8e97d8c',1,'ir_Electra.h']]], - ['kelectraacfanlow_1358',['kElectraAcFanLow',['../ir__Electra_8h.html#a9a5663e86cb766a4e4579d1b81473c44',1,'ir_Electra.h']]], - ['kelectraacfanmed_1359',['kElectraAcFanMed',['../ir__Electra_8h.html#a4e906bcb7aa6c0fc5c71bd06c43c3993',1,'ir_Electra.h']]], - ['kelectraachdrmark_1360',['kElectraAcHdrMark',['../ir__Electra_8cpp.html#a1200826684547765f1e526f362408e2e',1,'ir_Electra.cpp']]], - ['kelectraachdrspace_1361',['kElectraAcHdrSpace',['../ir__Electra_8cpp.html#a28cd57057c52b0def3683e71ee92c5d3',1,'ir_Electra.cpp']]], - ['kelectraacheat_1362',['kElectraAcHeat',['../ir__Electra_8h.html#af764a4738f146b752b8e29357af257e3',1,'ir_Electra.h']]], - ['kelectraaclighttogglemask_1363',['kElectraAcLightToggleMask',['../ir__Electra_8h.html#aa51ccef46052dd988ac1bccc4f2303f6',1,'ir_Electra.h']]], - ['kelectraaclighttoggleoff_1364',['kElectraAcLightToggleOff',['../ir__Electra_8h.html#ae98c4a00f003cc98c253b9367226c5c5',1,'ir_Electra.h']]], - ['kelectraaclighttoggleon_1365',['kElectraAcLightToggleOn',['../ir__Electra_8h.html#aa9ca231e98b7e529b081c3aaa1876df9',1,'ir_Electra.h']]], - ['kelectraacmaxtemp_1366',['kElectraAcMaxTemp',['../ir__Electra_8h.html#a3962ca1ae42f006baa1181683cbcbf86',1,'ir_Electra.h']]], - ['kelectraacmessagegap_1367',['kElectraAcMessageGap',['../ir__Electra_8cpp.html#adbcde2296ebf6ea93c7c95ce6d0b264e',1,'ir_Electra.cpp']]], - ['kelectraacminrepeat_1368',['kElectraAcMinRepeat',['../IRremoteESP8266_8h.html#a2ca237d578ca9a59aecac9813ab851ba',1,'IRremoteESP8266.h']]], - ['kelectraacmintemp_1369',['kElectraAcMinTemp',['../ir__Electra_8h.html#ad6f62477d70b59c958ba347c228f8e2b',1,'ir_Electra.h']]], - ['kelectraaconespace_1370',['kElectraAcOneSpace',['../ir__Electra_8cpp.html#aeb59d520635a93f5dd7acdbe4327174d',1,'ir_Electra.cpp']]], - ['kelectraacstatelength_1371',['kElectraAcStateLength',['../IRremoteESP8266_8h.html#a8fb8c5778feaa94114218c36e8e43641',1,'IRremoteESP8266.h']]], - ['kelectraacswingoff_1372',['kElectraAcSwingOff',['../ir__Electra_8h.html#ade2211d0bd695daf490300db856d660a',1,'ir_Electra.h']]], - ['kelectraacswingon_1373',['kElectraAcSwingOn',['../ir__Electra_8h.html#a4ef75911d929752357d727aee339563e',1,'ir_Electra.h']]], - ['kelectraactempdelta_1374',['kElectraAcTempDelta',['../ir__Electra_8h.html#ac3310f7b0d4b9fbe22d7192465669487',1,'ir_Electra.h']]], - ['kelectraaczerospace_1375',['kElectraAcZeroSpace',['../ir__Electra_8cpp.html#a1453e0796cfe6ca169fd3c56e2595082',1,'ir_Electra.cpp']]], - ['kelitescreensbits_1376',['kEliteScreensBits',['../IRremoteESP8266_8h.html#a102ebea398ea7b155e1e5212676af6dd',1,'IRremoteESP8266.h']]], - ['kelitescreensdefaultrepeat_1377',['kEliteScreensDefaultRepeat',['../IRremoteESP8266_8h.html#a9b23f59f288fc2ab9ee171436c11b04b',1,'IRremoteESP8266.h']]], - ['kelitescreensgap_1378',['kEliteScreensGap',['../ir__EliteScreens_8cpp.html#a7023784c82a3973e638245bf774adb34',1,'ir_EliteScreens.cpp']]], - ['kelitescreensone_1379',['kEliteScreensOne',['../ir__EliteScreens_8cpp.html#a9e53ba0d824f43cc70b489b95055007f',1,'ir_EliteScreens.cpp']]], - ['kelitescreenszero_1380',['kEliteScreensZero',['../ir__EliteScreens_8cpp.html#ae2d4b6fd6aec50baa7173d302a629438',1,'ir_EliteScreens.cpp']]], - ['kelon_1381',['kelon',['../classIRac.html#a38bd8145eecbb840bda38bb280466a17',1,'IRac::kelon()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1da4bf20d5f517e00e57b593b9878c7d',1,'KELON(): IRremoteESP8266.h']]], - ['kelonprotocol_1382',['KelonProtocol',['../unionKelonProtocol.html',1,'']]], - ['kelvinator_1383',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac::kelvinator()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab3a52797572065c912c34c976c08c542',1,'KELVINATOR(): IRremoteESP8266.h']]], - ['kelvinatorprotocol_1384',['KelvinatorProtocol',['../unionKelvinatorProtocol.html',1,'']]], - ['kepsonbits_1385',['kEpsonBits',['../IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425',1,'IRremoteESP8266.h']]], - ['kepsonminrepeat_1386',['kEpsonMinRepeat',['../IRremoteESP8266_8h.html#ac8738cb054de937b77269acb973c5133',1,'IRremoteESP8266.h']]], - ['keyeautostr_1387',['kEyeAutoStr',['../IRtext_8cpp.html#ab7c525442638022439c7a277e1edf694',1,'kEyeAutoStr(): IRtext.cpp'],['../IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f',1,'kEyeAutoStr(): IRtext.cpp']]], - ['keyestr_1388',['kEyeStr',['../IRtext_8cpp.html#a1d8dc83e7f15aacd013509e36a49a9d8',1,'kEyeStr(): IRtext.cpp'],['../IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885',1,'kEyeStr(): IRtext.cpp']]], - ['kfalsestr_1389',['kFalseStr',['../IRtext_8cpp.html#a338ee31c8fb5a1c74c0640b279051cd2',1,'kFalseStr(): IRtext.cpp'],['../IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988',1,'kFalseStr(): IRtext.cpp']]], - ['kfan_1390',['kFan',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa03b7310c6ec7018a07ee9e3ffb95a34b',1,'stdAc']]], - ['kfanonlystr_1391',['kFanOnlyStr',['../IRtext_8cpp.html#adada7550fa28466a6db6f4544f8c7063',1,'kFanOnlyStr(): IRtext.cpp'],['../IRtext_8h.html#a220378c7b69db06362af5ad932965628',1,'kFanOnlyStr(): IRtext.cpp']]], - ['kfanstr_1392',['kFanStr',['../IRtext_8cpp.html#aaab703dfae684a786852a55c0f7f61ec',1,'kFanStr(): IRtext.cpp'],['../IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300',1,'kFanStr(): IRtext.cpp']]], - ['kfaststr_1393',['kFastStr',['../IRtext_8cpp.html#ad6084cb569cd62bb1199c6ecc8ac4126',1,'kFastStr(): IRtext.cpp'],['../IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8',1,'kFastStr(): IRtext.cpp']]], - ['kfilterstr_1394',['kFilterStr',['../IRtext_8cpp.html#af287ead64de5dc3b1cbafe7bc945e519',1,'kFilterStr(): IRtext.cpp'],['../IRtext_8h.html#a5b3133e24c729077da411e08119033be',1,'kFilterStr(): IRtext.cpp']]], - ['kfixedstr_1395',['kFixedStr',['../IRtext_8cpp.html#ab45f91a889dae134e48c86586608bfc9',1,'kFixedStr(): IRtext.cpp'],['../IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14',1,'kFixedStr(): IRtext.cpp']]], - ['kfnvbasis32_1396',['kFnvBasis32',['../IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3',1,'IRrecv.h']]], - ['kfnvprime32_1397',['kFnvPrime32',['../IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f',1,'IRrecv.h']]], - ['kfollowstr_1398',['kFollowStr',['../IRtext_8cpp.html#a5477068666c86b3d605df8cf0240c86f',1,'kFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b',1,'kFollowStr(): IRtext.cpp']]], - ['kfooter_1399',['kFooter',['../IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3',1,'IRrecv.h']]], - ['kfreshstr_1400',['kFreshStr',['../IRtext_8cpp.html#ae416979803b912c932aa5eda837fc471',1,'kFreshStr(): IRtext.cpp'],['../IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2',1,'kFreshStr(): IRtext.cpp']]], - ['kfujitsuacbitmark_1401',['kFujitsuAcBitMark',['../ir__Fujitsu_8cpp.html#a2e01906b1317da42fcc204284646e3db',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacbits_1402',['kFujitsuAcBits',['../IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47',1,'IRremoteESP8266.h']]], - ['kfujitsuaccmdecono_1403',['kFujitsuAcCmdEcono',['../ir__Fujitsu_8h.html#a1e1eb4274232c43769f70b40f395a084',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdpowerful_1404',['kFujitsuAcCmdPowerful',['../ir__Fujitsu_8h.html#a69349537a37674a82b8ca630e6ca1b5a',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstayon_1405',['kFujitsuAcCmdStayOn',['../ir__Fujitsu_8h.html#acc729a2cd570761f97c63b98024c157d',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstephoriz_1406',['kFujitsuAcCmdStepHoriz',['../ir__Fujitsu_8h.html#ac67e3fa9ab8f1e1146bed1296f9a2131',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstepvert_1407',['kFujitsuAcCmdStepVert',['../ir__Fujitsu_8h.html#a5dda60d753d93089fc323bfcd9567afd',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswinghoriz_1408',['kFujitsuAcCmdToggleSwingHoriz',['../ir__Fujitsu_8h.html#a43b5912e65a8e6d3f1c672b155135f27',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswingvert_1409',['kFujitsuAcCmdToggleSwingVert',['../ir__Fujitsu_8h.html#a66960882cee5d109f332917fe1f8067c',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnoff_1410',['kFujitsuAcCmdTurnOff',['../ir__Fujitsu_8h.html#a073903b56c40d89b9999ee9b7dc48f00',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnon_1411',['kFujitsuAcCmdTurnOn',['../ir__Fujitsu_8h.html#a51c2abda78c7d6ced59f88acb857281e',1,'ir_Fujitsu.h']]], - ['kfujitsuacextratolerance_1412',['kFujitsuAcExtraTolerance',['../ir__Fujitsu_8cpp.html#ad89512dbc470982174d236be27caf071',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacfanauto_1413',['kFujitsuAcFanAuto',['../ir__Fujitsu_8h.html#a55bbb5a5b1760515f070d302c9fa4cbb',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanhigh_1414',['kFujitsuAcFanHigh',['../ir__Fujitsu_8h.html#a30b11ea24865a00b10468015aae77886',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanlow_1415',['kFujitsuAcFanLow',['../ir__Fujitsu_8h.html#aa0162cde862a3c02dd877a3a7933c130',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanmed_1416',['kFujitsuAcFanMed',['../ir__Fujitsu_8h.html#a0efcb8e8a6521e4788a82ff6c556b67b',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanquiet_1417',['kFujitsuAcFanQuiet',['../ir__Fujitsu_8h.html#a9abb4ec5fe9f27c6acd62273329490b6',1,'ir_Fujitsu.h']]], - ['kfujitsuachdrmark_1418',['kFujitsuAcHdrMark',['../ir__Fujitsu_8cpp.html#a96402e0aed6962a8a72cc736fa9bbc08',1,'ir_Fujitsu.cpp']]], - ['kfujitsuachdrspace_1419',['kFujitsuAcHdrSpace',['../ir__Fujitsu_8cpp.html#a655e37e172ab06dc06ca69f3c06223b2',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacmaxtemp_1420',['kFujitsuAcMaxTemp',['../ir__Fujitsu_8h.html#ac3b4c1f7a9c8aa63da0307d9b32e839e',1,'ir_Fujitsu.h']]], - ['kfujitsuacmaxtempf_1421',['kFujitsuAcMaxTempF',['../ir__Fujitsu_8h.html#ac799d71f9add0ec307f783dc93272f41',1,'ir_Fujitsu.h']]], - ['kfujitsuacminbits_1422',['kFujitsuAcMinBits',['../IRremoteESP8266_8h.html#a025caa6d0ae6becdd5ee58b5ac6ed61f',1,'IRremoteESP8266.h']]], - ['kfujitsuacmingap_1423',['kFujitsuAcMinGap',['../ir__Fujitsu_8cpp.html#a255fab3b9047b34cf6c4d42c0c82c485',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacminrepeat_1424',['kFujitsuAcMinRepeat',['../IRremoteESP8266_8h.html#a9dd52420366167afb4c8831b4ccd02fa',1,'IRremoteESP8266.h']]], - ['kfujitsuacmintemp_1425',['kFujitsuAcMinTemp',['../ir__Fujitsu_8h.html#ada381853475c2f25b9fc6536de175e8d',1,'ir_Fujitsu.h']]], - ['kfujitsuacmintempf_1426',['kFujitsuAcMinTempF',['../ir__Fujitsu_8h.html#a83abf89b7e533db047f6d178df7a0ad5',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeauto_1427',['kFujitsuAcModeAuto',['../ir__Fujitsu_8h.html#acf0aa6d1d033c893a3acd5b8d7756a5b',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodecool_1428',['kFujitsuAcModeCool',['../ir__Fujitsu_8h.html#a782e226fadab0a256144821cacea2314',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodedry_1429',['kFujitsuAcModeDry',['../ir__Fujitsu_8h.html#ae66f2ed2e554a6befdf0377d01bce257',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodefan_1430',['kFujitsuAcModeFan',['../ir__Fujitsu_8h.html#a7cc07ec4747b5cebc50257ec02297800',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeheat_1431',['kFujitsuAcModeHeat',['../ir__Fujitsu_8h.html#ad9b47b7419853a4cb1cf072023dac69b',1,'ir_Fujitsu.h']]], - ['kfujitsuacofftimer_1432',['kFujitsuAcOffTimer',['../ir__Fujitsu_8h.html#ad2f217a98a0062d488ffd0586dc0d011',1,'ir_Fujitsu.h']]], - ['kfujitsuaconespace_1433',['kFujitsuAcOneSpace',['../ir__Fujitsu_8cpp.html#a4f5246e6428cc701dbaa18923904713a',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacontimer_1434',['kFujitsuAcOnTimer',['../ir__Fujitsu_8h.html#abad3816a098ecc96bde57d1ff820552c',1,'ir_Fujitsu.h']]], - ['kfujitsuacsleeptimer_1435',['kFujitsuAcSleepTimer',['../ir__Fujitsu_8h.html#a53c550f5e4d63c54b6962f47d281bec6',1,'ir_Fujitsu.h']]], - ['kfujitsuacstatelength_1436',['kFujitsuAcStateLength',['../IRremoteESP8266_8h.html#ac3aa33a8386f73de0f57fc1ff7c6e7d9',1,'IRremoteESP8266.h']]], - ['kfujitsuacstatelengthshort_1437',['kFujitsuAcStateLengthShort',['../IRremoteESP8266_8h.html#a81cb09663eedbdc3888ee68438f0a5d3',1,'IRremoteESP8266.h']]], - ['kfujitsuacstoptimers_1438',['kFujitsuAcStopTimers',['../ir__Fujitsu_8h.html#a0f416a0f84e4100a702528664c9df177',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingboth_1439',['kFujitsuAcSwingBoth',['../ir__Fujitsu_8h.html#a07c5a757b0c3bbe07412813807272434',1,'ir_Fujitsu.h']]], - ['kfujitsuacswinghoriz_1440',['kFujitsuAcSwingHoriz',['../ir__Fujitsu_8h.html#a8875f62d61afb8cbf468207aedcb8982',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingoff_1441',['kFujitsuAcSwingOff',['../ir__Fujitsu_8h.html#a7f8109a1b8fd13a93d6b0255d05413df',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingvert_1442',['kFujitsuAcSwingVert',['../ir__Fujitsu_8h.html#a5c532a43ab11bf7cb353de2081260f40',1,'ir_Fujitsu.h']]], - ['kfujitsuactempoffsetc_1443',['kFujitsuAcTempOffsetC',['../ir__Fujitsu_8h.html#a84f16db63e1d1a47a4e41874d6c9c397',1,'ir_Fujitsu.h']]], - ['kfujitsuactempoffsetf_1444',['kFujitsuAcTempOffsetF',['../ir__Fujitsu_8h.html#a9530a57830aa1e45efe0368928a02a8b',1,'ir_Fujitsu.h']]], - ['kfujitsuactimermax_1445',['kFujitsuAcTimerMax',['../ir__Fujitsu_8h.html#adaec1744905feeb18af4ebe9ea2f6aae',1,'ir_Fujitsu.h']]], - ['kfujitsuaczerospace_1446',['kFujitsuAcZeroSpace',['../ir__Fujitsu_8cpp.html#a3815b89a2037cd0c8d774217df603d6e',1,'ir_Fujitsu.cpp']]], - ['kgicablebitmark_1447',['kGicableBitMark',['../ir__GICable_8cpp.html#ac315be0b5e02fb4c7109a6f67c4fac8e',1,'ir_GICable.cpp']]], - ['kgicablebits_1448',['kGicableBits',['../IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa',1,'IRremoteESP8266.h']]], - ['kgicablehdrmark_1449',['kGicableHdrMark',['../ir__GICable_8cpp.html#a0388e7a2030246928029ed1c79ba819d',1,'ir_GICable.cpp']]], - ['kgicablehdrspace_1450',['kGicableHdrSpace',['../ir__GICable_8cpp.html#ab357b0a095155eab6206245008387fc0',1,'ir_GICable.cpp']]], - ['kgicablemincommandlength_1451',['kGicableMinCommandLength',['../ir__GICable_8cpp.html#a79db5de95ff6b42259f0a54fa59f46f6',1,'ir_GICable.cpp']]], - ['kgicablemingap_1452',['kGicableMinGap',['../ir__GICable_8cpp.html#aff7027ab4b933e4a7f5506590c25f699',1,'ir_GICable.cpp']]], - ['kgicableminrepeat_1453',['kGicableMinRepeat',['../IRremoteESP8266_8h.html#ad8142649290db6fc337ac839d4078aef',1,'IRremoteESP8266.h']]], - ['kgicableonespace_1454',['kGicableOneSpace',['../ir__GICable_8cpp.html#a31300a6f41363cbc22d40f26e693b8be',1,'ir_GICable.cpp']]], - ['kgicablerptspace_1455',['kGicableRptSpace',['../ir__GICable_8cpp.html#a9e0d82ed05e210dec2980a7d1a2e081b',1,'ir_GICable.cpp']]], - ['kgicablezerospace_1456',['kGicableZeroSpace',['../ir__GICable_8cpp.html#a1383f274e701ad5c8141beb7703783ff',1,'ir_GICable.cpp']]], - ['kglobalcachefreqindex_1457',['kGlobalCacheFreqIndex',['../ir__GlobalCache_8cpp.html#aaa0bdfe1eb76e8519a111b6588a5a3ff',1,'ir_GlobalCache.cpp']]], - ['kglobalcachemaxrepeat_1458',['kGlobalCacheMaxRepeat',['../ir__GlobalCache_8cpp.html#ae4a19c45ab538e8a386769cd98943a0d',1,'ir_GlobalCache.cpp']]], - ['kglobalcacheminusec_1459',['kGlobalCacheMinUsec',['../ir__GlobalCache_8cpp.html#a133cf089a7b40516fac3b1143981b2a6',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptindex_1460',['kGlobalCacheRptIndex',['../ir__GlobalCache_8cpp.html#ad4d55ed7e89cfc6d513dae6ecb211fe9',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptstartindex_1461',['kGlobalCacheRptStartIndex',['../ir__GlobalCache_8cpp.html#afde4c65e9e75558df6ac7aa479bf507a',1,'ir_GlobalCache.cpp']]], - ['kglobalcachestartindex_1462',['kGlobalCacheStartIndex',['../ir__GlobalCache_8cpp.html#a8640be7a67ce3f49452b28bc24912637',1,'ir_GlobalCache.cpp']]], - ['kgoodweatherauto_1463',['kGoodweatherAuto',['../ir__Goodweather_8h.html#a2fc5f0f7d0f68dcff193548830f50528',1,'ir_Goodweather.h']]], - ['kgoodweatherbitmark_1464',['kGoodweatherBitMark',['../ir__Goodweather_8h.html#acb9fb47b2a207997fda0244d1bafbe89',1,'ir_Goodweather.h']]], - ['kgoodweatherbits_1465',['kGoodweatherBits',['../IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425',1,'IRremoteESP8266.h']]], - ['kgoodweathercmdairflow_1466',['kGoodweatherCmdAirFlow',['../ir__Goodweather_8h.html#aa51248353573abd95af37e46f0a2c4a7',1,'ir_Goodweather.h']]], - ['kgoodweathercmddowntemp_1467',['kGoodweatherCmdDownTemp',['../ir__Goodweather_8h.html#a8a0b72bf745b6003fb460a3c917eecff',1,'ir_Goodweather.h']]], - ['kgoodweathercmdfan_1468',['kGoodweatherCmdFan',['../ir__Goodweather_8h.html#a4a0881f87af157fdf9ed3d9f342f1ac5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdhold_1469',['kGoodweatherCmdHold',['../ir__Goodweather_8h.html#ac0f3b1413228cb7e86822c5690f20344',1,'ir_Goodweather.h']]], - ['kgoodweathercmdlight_1470',['kGoodweatherCmdLight',['../ir__Goodweather_8h.html#ae70c4e66b17db9caf4800eb57a50706f',1,'ir_Goodweather.h']]], - ['kgoodweathercmdmode_1471',['kGoodweatherCmdMode',['../ir__Goodweather_8h.html#a6042296931ab29e9dfa5a701f3e42175',1,'ir_Goodweather.h']]], - ['kgoodweathercmdpower_1472',['kGoodweatherCmdPower',['../ir__Goodweather_8h.html#a3f1bf85bb10343512bb276adfc64b3b2',1,'ir_Goodweather.h']]], - ['kgoodweathercmdsleep_1473',['kGoodweatherCmdSleep',['../ir__Goodweather_8h.html#a3f4d72b620c73aec68c2125430ca709d',1,'ir_Goodweather.h']]], - ['kgoodweathercmdswing_1474',['kGoodweatherCmdSwing',['../ir__Goodweather_8h.html#ab4ceedbe859811a9fb394f6ebf233cb5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdtimer_1475',['kGoodweatherCmdTimer',['../ir__Goodweather_8h.html#ad4d247ea6c9fc237e0acda84fdaa2eb6',1,'ir_Goodweather.h']]], - ['kgoodweathercmdturbo_1476',['kGoodweatherCmdTurbo',['../ir__Goodweather_8h.html#aebc6d53b3e7d1769bff47968c19c09c9',1,'ir_Goodweather.h']]], - ['kgoodweathercmduptemp_1477',['kGoodweatherCmdUpTemp',['../ir__Goodweather_8h.html#a51a089b03bd72a247a4c35c2ff3f3dc6',1,'ir_Goodweather.h']]], - ['kgoodweathercool_1478',['kGoodweatherCool',['../ir__Goodweather_8h.html#a92c807d6ff8a3356e65f04e82b99aba4',1,'ir_Goodweather.h']]], - ['kgoodweatherdry_1479',['kGoodweatherDry',['../ir__Goodweather_8h.html#ac5174a3e2c64361c25adcf7caa5b714c',1,'ir_Goodweather.h']]], - ['kgoodweatherextratolerance_1480',['kGoodweatherExtraTolerance',['../ir__Goodweather_8h.html#aae814dfbd574241d3b434d0bf2d38939',1,'ir_Goodweather.h']]], - ['kgoodweatherfan_1481',['kGoodweatherFan',['../ir__Goodweather_8h.html#ad56f00c7e39df93d28419d6a4afa360b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanauto_1482',['kGoodweatherFanAuto',['../ir__Goodweather_8h.html#a9cc119524ac1cb93395dff3bb44b85cc',1,'ir_Goodweather.h']]], - ['kgoodweatherfanhigh_1483',['kGoodweatherFanHigh',['../ir__Goodweather_8h.html#af2b24de50923a0aabd4379dc6d3ef10f',1,'ir_Goodweather.h']]], - ['kgoodweatherfanlow_1484',['kGoodweatherFanLow',['../ir__Goodweather_8h.html#a7bc7c0cf9f2df574a7c087542991ab9b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanmed_1485',['kGoodweatherFanMed',['../ir__Goodweather_8h.html#a5174245e9369a488332b32dfa416963e',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrmark_1486',['kGoodweatherHdrMark',['../ir__Goodweather_8h.html#a5c39e33226770babb4b0e89fc0cde709',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrspace_1487',['kGoodweatherHdrSpace',['../ir__Goodweather_8h.html#a837bfeaa111b00e2744c4ada89281bfb',1,'ir_Goodweather.h']]], - ['kgoodweatherheat_1488',['kGoodweatherHeat',['../ir__Goodweather_8h.html#a17d223f03df2718151a426582a224a2e',1,'ir_Goodweather.h']]], - ['kgoodweatherminrepeat_1489',['kGoodweatherMinRepeat',['../IRremoteESP8266_8h.html#a885bc5a3a5ba2d8827a62d07a43d0321',1,'IRremoteESP8266.h']]], - ['kgoodweatheronespace_1490',['kGoodweatherOneSpace',['../ir__Goodweather_8h.html#a8efa251085a8f434cb91c049e65cda56',1,'ir_Goodweather.h']]], - ['kgoodweatherstateinit_1491',['kGoodweatherStateInit',['../ir__Goodweather_8h.html#a5ec0e7ca097241d6bef0cbf2135c8fca',1,'ir_Goodweather.h']]], - ['kgoodweatherswingfast_1492',['kGoodweatherSwingFast',['../ir__Goodweather_8h.html#a2d2fa76fa35cf7d450aaf0b980660514',1,'ir_Goodweather.h']]], - ['kgoodweatherswingoff_1493',['kGoodweatherSwingOff',['../ir__Goodweather_8h.html#aa2c53f56daa2820351924d91b542bb67',1,'ir_Goodweather.h']]], - ['kgoodweatherswingslow_1494',['kGoodweatherSwingSlow',['../ir__Goodweather_8h.html#ad2c87d849af2c77088ffc533d279aadb',1,'ir_Goodweather.h']]], - ['kgoodweathertempmax_1495',['kGoodweatherTempMax',['../ir__Goodweather_8h.html#abec401548ce2221a9c668318a33a039c',1,'ir_Goodweather.h']]], - ['kgoodweathertempmin_1496',['kGoodweatherTempMin',['../ir__Goodweather_8h.html#a8e76c0ec1bd5e124d9cee5742a2d1cfe',1,'ir_Goodweather.h']]], - ['kgoodweatherzerospace_1497',['kGoodweatherZeroSpace',['../ir__Goodweather_8h.html#a411cbfb812d102daeaf6a83c742f9a9a',1,'ir_Goodweather.h']]], - ['kgpiounused_1498',['kGpioUnused',['../IRac_8h.html#afd817f0bc02c516b6430098dcecde383',1,'IRac.h']]], - ['kgreeauto_1499',['kGreeAuto',['../ir__Gree_8h.html#a65d2d0192a1baff86b859da1018ef2f8',1,'ir_Gree.h']]], - ['kgreebitmark_1500',['kGreeBitMark',['../ir__Gree_8cpp.html#ad7e23346f6d793cc2469e4c8a5650397',1,'ir_Gree.cpp']]], - ['kgreebits_1501',['kGreeBits',['../IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d',1,'IRremoteESP8266.h']]], - ['kgreeblockfooter_1502',['kGreeBlockFooter',['../ir__Gree_8cpp.html#ae6d01cfa7ee2ef6ff27c1ecd7cd9be51',1,'ir_Gree.cpp']]], - ['kgreeblockfooterbits_1503',['kGreeBlockFooterBits',['../ir__Gree_8cpp.html#ae866eef4c729c703597a266917799cbd',1,'ir_Gree.cpp']]], - ['kgreecool_1504',['kGreeCool',['../ir__Gree_8h.html#a1e1eeab696b43864cec66e6485487cea',1,'ir_Gree.h']]], - ['kgreedefaultrepeat_1505',['kGreeDefaultRepeat',['../IRremoteESP8266_8h.html#a6816d2cb11b99a61fb63e6d0928e6706',1,'IRremoteESP8266.h']]], - ['kgreedisplaytempinside_1506',['kGreeDisplayTempInside',['../ir__Gree_8h.html#a7495e5873f63135490090929ed79e994',1,'ir_Gree.h']]], - ['kgreedisplaytempoff_1507',['kGreeDisplayTempOff',['../ir__Gree_8h.html#aa5881910d1c01b816f3ac22ddf0f89a8',1,'ir_Gree.h']]], - ['kgreedisplaytempoutside_1508',['kGreeDisplayTempOutside',['../ir__Gree_8h.html#a737c90e90897053623b15b5579cdb6a1',1,'ir_Gree.h']]], - ['kgreedisplaytempset_1509',['kGreeDisplayTempSet',['../ir__Gree_8h.html#a20f7d0948b158f83655ee4187a104176',1,'ir_Gree.h']]], - ['kgreedry_1510',['kGreeDry',['../ir__Gree_8h.html#aa818bcc036988ee24fe0467d128d174f',1,'ir_Gree.h']]], - ['kgreefan_1511',['kGreeFan',['../ir__Gree_8h.html#aa1513ffe43257664f761e4e1a5c2a38f',1,'ir_Gree.h']]], - ['kgreefanauto_1512',['kGreeFanAuto',['../ir__Gree_8h.html#aaad16357e34078257315aad7155b2cd1',1,'ir_Gree.h']]], - ['kgreefanmax_1513',['kGreeFanMax',['../ir__Gree_8h.html#a8753f860f2f503a4a70609fb000654f2',1,'ir_Gree.h']]], - ['kgreefanmed_1514',['kGreeFanMed',['../ir__Gree_8h.html#a674d096a91a5db4b5b7f1b0650c833de',1,'ir_Gree.h']]], - ['kgreefanmin_1515',['kGreeFanMin',['../ir__Gree_8h.html#a34ca09b196c41acc85a4fa0036f3ac3b',1,'ir_Gree.h']]], - ['kgreehdrmark_1516',['kGreeHdrMark',['../ir__Gree_8cpp.html#aaae182fb09bed73e37a5b5d3aee6a5fb',1,'ir_Gree.cpp']]], - ['kgreehdrspace_1517',['kGreeHdrSpace',['../ir__Gree_8cpp.html#a96b50632219c2b5808aea4ee9077b15c',1,'ir_Gree.cpp']]], - ['kgreeheat_1518',['kGreeHeat',['../ir__Gree_8h.html#ada5dac7b789497bf7a434a809d4070f6',1,'ir_Gree.h']]], - ['kgreemaxtempc_1519',['kGreeMaxTempC',['../ir__Gree_8h.html#a4c01aedfff06ed5a028c40010ad7bfa0',1,'ir_Gree.h']]], - ['kgreemaxtempf_1520',['kGreeMaxTempF',['../ir__Gree_8h.html#a6495898a7a6ddda1473b55820f4b6c44',1,'ir_Gree.h']]], - ['kgreemintempc_1521',['kGreeMinTempC',['../ir__Gree_8h.html#ad127acfc710e281a7b29023c8d1da8f6',1,'ir_Gree.h']]], - ['kgreemintempf_1522',['kGreeMinTempF',['../ir__Gree_8h.html#acf0ecb1b535894e3e790b668333fb66b',1,'ir_Gree.h']]], - ['kgreemsgspace_1523',['kGreeMsgSpace',['../ir__Gree_8cpp.html#a619ed3a2915196ab91d87db2b5a829fd',1,'ir_Gree.cpp']]], - ['kgreeonespace_1524',['kGreeOneSpace',['../ir__Gree_8cpp.html#ab139138084643ea0fca13b28412904e9',1,'ir_Gree.cpp']]], - ['kgreestatelength_1525',['kGreeStateLength',['../IRremoteESP8266_8h.html#a5558b24542873d8475e1ee0e2439839f',1,'IRremoteESP8266.h']]], - ['kgreeswingauto_1526',['kGreeSwingAuto',['../ir__Gree_8h.html#a414a503ad11c1d1d3b68d8b630df1f3a',1,'ir_Gree.h']]], - ['kgreeswingdown_1527',['kGreeSwingDown',['../ir__Gree_8h.html#abbe69b966ceb1f9eb60fe9c3fb18088d',1,'ir_Gree.h']]], - ['kgreeswingdownauto_1528',['kGreeSwingDownAuto',['../ir__Gree_8h.html#abc7d7b7de5dd2eb9c0a6ca28827aeb06',1,'ir_Gree.h']]], - ['kgreeswinglastpos_1529',['kGreeSwingLastPos',['../ir__Gree_8h.html#a630cd8fec01f13bfda0fffc1a0e59199',1,'ir_Gree.h']]], - ['kgreeswingmiddle_1530',['kGreeSwingMiddle',['../ir__Gree_8h.html#a12a7caa871f33a5bb83611b4efc7a42b',1,'ir_Gree.h']]], - ['kgreeswingmiddleauto_1531',['kGreeSwingMiddleAuto',['../ir__Gree_8h.html#ac9f85ef5c1bfeac1e4c759742e2d147f',1,'ir_Gree.h']]], - ['kgreeswingmiddledown_1532',['kGreeSwingMiddleDown',['../ir__Gree_8h.html#acad74b8154d73786e093fa215ab800b0',1,'ir_Gree.h']]], - ['kgreeswingmiddleup_1533',['kGreeSwingMiddleUp',['../ir__Gree_8h.html#aefbdd203df5b35eb61be1d0edd712c80',1,'ir_Gree.h']]], - ['kgreeswingup_1534',['kGreeSwingUp',['../ir__Gree_8h.html#adad431eb1010951fcf77dc4dac6449c6',1,'ir_Gree.h']]], - ['kgreeswingupauto_1535',['kGreeSwingUpAuto',['../ir__Gree_8h.html#a63f04add215785d4ccfe6ccec03d7667',1,'ir_Gree.h']]], - ['kgreetimermax_1536',['kGreeTimerMax',['../ir__Gree_8h.html#a76048e03908dd0d22cc8cacfbd99a40b',1,'ir_Gree.h']]], - ['kgreezerospace_1537',['kGreeZeroSpace',['../ir__Gree_8cpp.html#aa4694ba8ff0e14cd6b9c4730675c385f',1,'ir_Gree.cpp']]], - ['khaierac176bits_1538',['kHaierAC176Bits',['../IRremoteESP8266_8h.html#a71c5cfe4b9da0da55e8a6e9b32d2ddc9',1,'IRremoteESP8266.h']]], - ['khaierac176defaultrepeat_1539',['kHaierAc176DefaultRepeat',['../IRremoteESP8266_8h.html#af87d7078ba6fd24dd489086111f14db6',1,'IRremoteESP8266.h']]], - ['khaierac176statelength_1540',['kHaierAC176StateLength',['../IRremoteESP8266_8h.html#a98033047ba27af810bb90fe33169cef2',1,'IRremoteESP8266.h']]], - ['khaieracauto_1541',['kHaierAcAuto',['../ir__Haier_8h.html#ac33a02f63ee77e0d3050598511730865',1,'ir_Haier.h']]], - ['khaieracbitmark_1542',['kHaierAcBitMark',['../ir__Haier_8cpp.html#a4dec38325834c873c03588a8046f0963',1,'ir_Haier.cpp']]], - ['khaieracbits_1543',['kHaierACBits',['../IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720',1,'IRremoteESP8266.h']]], - ['khaieraccmdfan_1544',['kHaierAcCmdFan',['../ir__Haier_8h.html#a447818ec7970e2ca09540afe44ecf90d',1,'ir_Haier.h']]], - ['khaieraccmdhealth_1545',['kHaierAcCmdHealth',['../ir__Haier_8h.html#a83cd0b5f307d9ae3ed0a3c6ed8fef94d',1,'ir_Haier.h']]], - ['khaieraccmdmode_1546',['kHaierAcCmdMode',['../ir__Haier_8h.html#a4543aa4ee28323bb9cb5c077f9bf9da1',1,'ir_Haier.h']]], - ['khaieraccmdoff_1547',['kHaierAcCmdOff',['../ir__Haier_8h.html#a96599917176ee244874926d1a530dd7e',1,'ir_Haier.h']]], - ['khaieraccmdon_1548',['kHaierAcCmdOn',['../ir__Haier_8h.html#a83973c2ad2b7b95611c81628c387e0d8',1,'ir_Haier.h']]], - ['khaieraccmdsleep_1549',['kHaierAcCmdSleep',['../ir__Haier_8h.html#abe52b62dd513395f2a8c7d47fa2fc514',1,'ir_Haier.h']]], - ['khaieraccmdswing_1550',['kHaierAcCmdSwing',['../ir__Haier_8h.html#afab164c2aabf39fdc1e956ff88af19d9',1,'ir_Haier.h']]], - ['khaieraccmdtempdown_1551',['kHaierAcCmdTempDown',['../ir__Haier_8h.html#aecc31139b4e45a7784669554c6fdbb54',1,'ir_Haier.h']]], - ['khaieraccmdtempup_1552',['kHaierAcCmdTempUp',['../ir__Haier_8h.html#aab5363f07920971c31d6acf8e70d392c',1,'ir_Haier.h']]], - ['khaieraccmdtimercancel_1553',['kHaierAcCmdTimerCancel',['../ir__Haier_8h.html#ab780da80fc471f004c5b34dc8f347d00',1,'ir_Haier.h']]], - ['khaieraccmdtimerset_1554',['kHaierAcCmdTimerSet',['../ir__Haier_8h.html#a9bd7c081d460a4ae5e3eac977f3916e4',1,'ir_Haier.h']]], - ['khaieraccool_1555',['kHaierAcCool',['../ir__Haier_8h.html#a83cd81ea1115f42a403ea5ee07a32bbb',1,'ir_Haier.h']]], - ['khaieracdefaultrepeat_1556',['kHaierAcDefaultRepeat',['../IRremoteESP8266_8h.html#a882914932449e33933b6f8e224cbaf3c',1,'IRremoteESP8266.h']]], - ['khaieracdeftemp_1557',['kHaierAcDefTemp',['../ir__Haier_8h.html#a86c9e8176fc01e52e883cadcc1d31763',1,'ir_Haier.h']]], - ['khaieracdry_1558',['kHaierAcDry',['../ir__Haier_8h.html#a3d36fbe1308221248f45044e5a671636',1,'ir_Haier.h']]], - ['khaieracfan_1559',['kHaierAcFan',['../ir__Haier_8h.html#af4049629b2139ca82471dfed1e1ced15',1,'ir_Haier.h']]], - ['khaieracfanauto_1560',['kHaierAcFanAuto',['../ir__Haier_8h.html#a8a34e74f7083caa98ed4afc31294539e',1,'ir_Haier.h']]], - ['khaieracfanhigh_1561',['kHaierAcFanHigh',['../ir__Haier_8h.html#aa4d9e45ca5777707778ef78a3284da19',1,'ir_Haier.h']]], - ['khaieracfanlow_1562',['kHaierAcFanLow',['../ir__Haier_8h.html#ae31e878b09284a6730a11e2017cfd7a8',1,'ir_Haier.h']]], - ['khaieracfanmed_1563',['kHaierAcFanMed',['../ir__Haier_8h.html#a5dfa833768e549964aa0bf8a336c32b0',1,'ir_Haier.h']]], - ['khaierachdr_1564',['kHaierAcHdr',['../ir__Haier_8cpp.html#a0f5dbd2eb92f10bc354e6b0a7a074084',1,'ir_Haier.cpp']]], - ['khaierachdrgap_1565',['kHaierAcHdrGap',['../ir__Haier_8cpp.html#a4c3fe62f8e5abf5d084009bbd4c4f878',1,'ir_Haier.cpp']]], - ['khaieracheat_1566',['kHaierAcHeat',['../ir__Haier_8h.html#a0edb011bdf85197e63a32d37f8517dd2',1,'ir_Haier.h']]], - ['khaieracmaxtemp_1567',['kHaierAcMaxTemp',['../ir__Haier_8h.html#a925252489fe34d9932151817d0dbe90b',1,'ir_Haier.h']]], - ['khaieracmaxtime_1568',['kHaierAcMaxTime',['../ir__Haier_8h.html#ae04e48e926a7533c3b62f0ff991e1f88',1,'ir_Haier.h']]], - ['khaieracmingap_1569',['kHaierAcMinGap',['../ir__Haier_8cpp.html#a7ab1f44876a931da765b52e4633e5e82',1,'ir_Haier.cpp']]], - ['khaieracmintemp_1570',['kHaierAcMinTemp',['../ir__Haier_8h.html#aafd2a4f38ecf78482a5a94e9c6c23f1c',1,'ir_Haier.h']]], - ['khaieraconespace_1571',['kHaierAcOneSpace',['../ir__Haier_8cpp.html#a43739aa786e08fca2a4a62a680b5c38b',1,'ir_Haier.cpp']]], - ['khaieracprefix_1572',['kHaierAcPrefix',['../ir__Haier_8h.html#a8502c9bea40205e01e6a01b47354272a',1,'ir_Haier.h']]], - ['khaieracsleepbit_1573',['kHaierAcSleepBit',['../ir__Haier_8h.html#ac63b91acdffa55d440b08aee05bda5dc',1,'ir_Haier.h']]], - ['khaieracstatelength_1574',['kHaierACStateLength',['../IRremoteESP8266_8h.html#afb4cd0c1a9c689d862e7095f0ab6dbe5',1,'IRremoteESP8266.h']]], - ['khaieracswingchg_1575',['kHaierAcSwingChg',['../ir__Haier_8h.html#af65a92a0b9d29a52ac882d4457e954e8',1,'ir_Haier.h']]], - ['khaieracswingdown_1576',['kHaierAcSwingDown',['../ir__Haier_8h.html#a2cf3a2102c6d4f9aede44efe853ffaa8',1,'ir_Haier.h']]], - ['khaieracswingoff_1577',['kHaierAcSwingOff',['../ir__Haier_8h.html#ac21f78c3cef931154b3fc953bbebc3b4',1,'ir_Haier.h']]], - ['khaieracswingup_1578',['kHaierAcSwingUp',['../ir__Haier_8h.html#a4bff8829604ee927dda5cfc54bd6cfe6',1,'ir_Haier.h']]], - ['khaieracyrw02auto_1579',['kHaierAcYrw02Auto',['../ir__Haier_8h.html#aa025eeba1c344c50cc98334c97a3c174',1,'ir_Haier.h']]], - ['khaieracyrw02bits_1580',['kHaierACYRW02Bits',['../IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27',1,'IRremoteESP8266.h']]], - ['khaieracyrw02buttonfan_1581',['kHaierAcYrw02ButtonFan',['../ir__Haier_8h.html#a0f9c265510e1e27f38817f08ef9c622b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonhealth_1582',['kHaierAcYrw02ButtonHealth',['../ir__Haier_8h.html#ab1dc6c0a4ed59446bb69c4dd671c78cd',1,'ir_Haier.h']]], - ['khaieracyrw02buttonmode_1583',['kHaierAcYrw02ButtonMode',['../ir__Haier_8h.html#a74466c50b450b08407c9f226a5d657e5',1,'ir_Haier.h']]], - ['khaieracyrw02buttonpower_1584',['kHaierAcYrw02ButtonPower',['../ir__Haier_8h.html#af36b9c628a697f6c596052ecd143d80b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonsleep_1585',['kHaierAcYrw02ButtonSleep',['../ir__Haier_8h.html#a5c7b8ff351e3d0167ec2c897c4820c40',1,'ir_Haier.h']]], - ['khaieracyrw02buttonswing_1586',['kHaierAcYrw02ButtonSwing',['../ir__Haier_8h.html#aa10c558317448783535e96be5876505c',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempdown_1587',['kHaierAcYrw02ButtonTempDown',['../ir__Haier_8h.html#af4a9e5f7f705c331531ea2863dbbd11d',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempup_1588',['kHaierAcYrw02ButtonTempUp',['../ir__Haier_8h.html#a3b24373f9c812f93eca05ee47e61d6e0',1,'ir_Haier.h']]], - ['khaieracyrw02buttonturbo_1589',['kHaierAcYrw02ButtonTurbo',['../ir__Haier_8h.html#ad80547c526b2eba142297715c0a0636d',1,'ir_Haier.h']]], - ['khaieracyrw02cool_1590',['kHaierAcYrw02Cool',['../ir__Haier_8h.html#a30c5d4e61ae3112a8a3e3622eecbb10b',1,'ir_Haier.h']]], - ['khaieracyrw02defaultrepeat_1591',['kHaierAcYrw02DefaultRepeat',['../IRremoteESP8266_8h.html#a62412e221207dbc2660f93dc265b4218',1,'IRremoteESP8266.h']]], - ['khaieracyrw02dry_1592',['kHaierAcYrw02Dry',['../ir__Haier_8h.html#a66cd902f2d35b4c8f66f085a0950a5fc',1,'ir_Haier.h']]], - ['khaieracyrw02fan_1593',['kHaierAcYrw02Fan',['../ir__Haier_8h.html#a35f50f043a2dda75c59507c1ed845b5d',1,'ir_Haier.h']]], - ['khaieracyrw02fanauto_1594',['kHaierAcYrw02FanAuto',['../ir__Haier_8h.html#ad554d38035ac15e4ea8b855802886989',1,'ir_Haier.h']]], - ['khaieracyrw02fanhigh_1595',['kHaierAcYrw02FanHigh',['../ir__Haier_8h.html#ab47bc48ac77fbf6734a41d10f0a53e4a',1,'ir_Haier.h']]], - ['khaieracyrw02fanlow_1596',['kHaierAcYrw02FanLow',['../ir__Haier_8h.html#a9a0a14ab98e1e52b60b9b9bf611c20cc',1,'ir_Haier.h']]], - ['khaieracyrw02fanmed_1597',['kHaierAcYrw02FanMed',['../ir__Haier_8h.html#a65583649324c6039112e7db26d685afc',1,'ir_Haier.h']]], - ['khaieracyrw02heat_1598',['kHaierAcYrw02Heat',['../ir__Haier_8h.html#aa0873975b6649294a3c9943130cb7a38',1,'ir_Haier.h']]], - ['khaieracyrw02prefix_1599',['kHaierAcYrw02Prefix',['../ir__Haier_8h.html#ac62d0f7ca94e064712f8a7a80da2f11e',1,'ir_Haier.h']]], - ['khaieracyrw02statelength_1600',['kHaierACYRW02StateLength',['../IRremoteESP8266_8h.html#a8f52b7d4595c117cf0b81ffbd1148cda',1,'IRremoteESP8266.h']]], - ['khaieracyrw02swingauto_1601',['kHaierAcYrw02SwingAuto',['../ir__Haier_8h.html#a95ae88223d910d4d966949241bccff8d',1,'ir_Haier.h']]], - ['khaieracyrw02swingbottom_1602',['kHaierAcYrw02SwingBottom',['../ir__Haier_8h.html#aa4b64385da5e9b2a89e15f70cd8c89e9',1,'ir_Haier.h']]], - ['khaieracyrw02swingdown_1603',['kHaierAcYrw02SwingDown',['../ir__Haier_8h.html#aab380411ac07b2b7f67956a5bbc362fb',1,'ir_Haier.h']]], - ['khaieracyrw02swingmiddle_1604',['kHaierAcYrw02SwingMiddle',['../ir__Haier_8h.html#a32d6dd98a050711bf928bf250b769839',1,'ir_Haier.h']]], - ['khaieracyrw02swingoff_1605',['kHaierAcYrw02SwingOff',['../ir__Haier_8h.html#a62570c15418cf24a94c92b162967f892',1,'ir_Haier.h']]], - ['khaieracyrw02swingtop_1606',['kHaierAcYrw02SwingTop',['../ir__Haier_8h.html#adf10f1bc1b293c684232cb6398631f70',1,'ir_Haier.h']]], - ['khaieracyrw02turbohigh_1607',['kHaierAcYrw02TurboHigh',['../ir__Haier_8h.html#ab096c15c69f242b99fbc1e4d7bd7548e',1,'ir_Haier.h']]], - ['khaieracyrw02turbolow_1608',['kHaierAcYrw02TurboLow',['../ir__Haier_8h.html#a19b7f4aee8115eb77267c415d8b3bd82',1,'ir_Haier.h']]], - ['khaieracyrw02turbooff_1609',['kHaierAcYrw02TurboOff',['../ir__Haier_8h.html#aa06ba46287b5806a6373e921cee34a51',1,'ir_Haier.h']]], - ['khaieraczerospace_1610',['kHaierAcZeroSpace',['../ir__Haier_8cpp.html#af2b1a4f27c7b50a1e60ae00bbbec7a16',1,'ir_Haier.cpp']]], - ['kheader_1611',['kHeader',['../IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed',1,'IRrecv.h']]], - ['khealthstr_1612',['kHealthStr',['../IRtext_8cpp.html#a12474bbd4a7f700c922bcc1de240894f',1,'kHealthStr(): IRtext.cpp'],['../IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42',1,'kHealthStr(): IRtext.cpp']]], - ['kheat_1613',['kHeat',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faece059b52386d38cd6da9729cca08b4e',1,'stdAc']]], - ['kheatstr_1614',['kHeatStr',['../IRtext_8cpp.html#a3a16f1dabca01c8f8e5ba1516408ba39',1,'kHeatStr(): IRtext.cpp'],['../IRtext_8h.html#a058df7d2db245e307719d025352d464d',1,'kHeatStr(): IRtext.cpp']]], - ['khigh_1615',['kHigh',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()']]], - ['khighest_1616',['kHighest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a24d8e31603e486f788826bc24e3a2e1d',1,'stdAc']]], - ['khigheststr_1617',['kHighestStr',['../IRtext_8cpp.html#a219f1d54c5ea75bd5c736efc0d7d7275',1,'kHighestStr(): IRtext.cpp'],['../IRtext_8h.html#ad7706307f507466526b4288e33385bde',1,'kHighestStr(): IRtext.cpp']]], - ['khighnibble_1618',['kHighNibble',['../IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032',1,'IRutils.h']]], - ['khighstr_1619',['kHighStr',['../IRtext_8cpp.html#a127a20ad54e671f48a8faa822ff006f4',1,'kHighStr(): IRtext.cpp'],['../IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1',1,'kHighStr(): IRtext.cpp']]], - ['khistr_1620',['kHiStr',['../IRtext_8cpp.html#a7f4994ce51aed70ce6b5b4c88b886466',1,'kHiStr(): IRtext.cpp'],['../IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd',1,'kHiStr(): IRtext.cpp']]], - ['khitachiac1auto_1621',['kHitachiAc1Auto',['../ir__Hitachi_8h.html#a2689ef34702107dc3dce3d1cfa260fc9',1,'ir_Hitachi.h']]], - ['khitachiac1bits_1622',['kHitachiAc1Bits',['../IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1',1,'IRremoteESP8266.h']]], - ['khitachiac1checksumstartbyte_1623',['kHitachiAc1ChecksumStartByte',['../ir__Hitachi_8h.html#afafa689c5e922b812f63e08941feb2a7',1,'ir_Hitachi.h']]], - ['khitachiac1cool_1624',['kHitachiAc1Cool',['../ir__Hitachi_8h.html#a1146eda7688843d16094acf7a19a75ac',1,'ir_Hitachi.h']]], - ['khitachiac1dry_1625',['kHitachiAc1Dry',['../ir__Hitachi_8h.html#a82895db5201610844da803bf333102a3',1,'ir_Hitachi.h']]], - ['khitachiac1fan_1626',['kHitachiAc1Fan',['../ir__Hitachi_8h.html#ac5a3ba0e0e4ed02d4792d5a8e6a22654',1,'ir_Hitachi.h']]], - ['khitachiac1fanauto_1627',['kHitachiAc1FanAuto',['../ir__Hitachi_8h.html#a6f9adda7b08ec4b8566ceb4d79966689',1,'ir_Hitachi.h']]], - ['khitachiac1fanhigh_1628',['kHitachiAc1FanHigh',['../ir__Hitachi_8h.html#ace677cf030da9d74eda0f50d54c91411',1,'ir_Hitachi.h']]], - ['khitachiac1fanlow_1629',['kHitachiAc1FanLow',['../ir__Hitachi_8h.html#a011219de5c0e2ba043a8be6345f8cb05',1,'ir_Hitachi.h']]], - ['khitachiac1fanmed_1630',['kHitachiAc1FanMed',['../ir__Hitachi_8h.html#afbc2a535d85adb80cbcbac63e2432b1a',1,'ir_Hitachi.h']]], - ['khitachiac1hdrmark_1631',['kHitachiAc1HdrMark',['../ir__Hitachi_8cpp.html#a2b1891174c78be6f960e92b389d25fe7',1,'ir_Hitachi.cpp']]], - ['khitachiac1hdrspace_1632',['kHitachiAc1HdrSpace',['../ir__Hitachi_8cpp.html#a93f34ee53a375dd7f4ccf82458453701',1,'ir_Hitachi.cpp']]], - ['khitachiac1heat_1633',['kHitachiAc1Heat',['../ir__Hitachi_8h.html#abd5d4db30d6be3b990a74d4481e7eabe',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fa_1634',['kHitachiAc1Model_A',['../ir__Hitachi_8h.html#a5f8fc3bb000d46705e4530ca0a8f7b60',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fb_1635',['kHitachiAc1Model_B',['../ir__Hitachi_8h.html#a2d894a528c538b8a3922e2500241a55b',1,'ir_Hitachi.h']]], - ['khitachiac1sleep1_1636',['kHitachiAc1Sleep1',['../ir__Hitachi_8h.html#ab4ca89a9d8c8034e6a3d8ff17b09f3d5',1,'ir_Hitachi.h']]], - ['khitachiac1sleep2_1637',['kHitachiAc1Sleep2',['../ir__Hitachi_8h.html#a1e1a1ea1743b38da6bc6be63fa796689',1,'ir_Hitachi.h']]], - ['khitachiac1sleep3_1638',['kHitachiAc1Sleep3',['../ir__Hitachi_8h.html#a17eaa63f13a3c04aede9f485c310a930',1,'ir_Hitachi.h']]], - ['khitachiac1sleep4_1639',['kHitachiAc1Sleep4',['../ir__Hitachi_8h.html#a21360448a538fbd9491aa9dd28e6c545',1,'ir_Hitachi.h']]], - ['khitachiac1sleepoff_1640',['kHitachiAc1SleepOff',['../ir__Hitachi_8h.html#a96f87cb3838a1e1aab4b8407dcfc5b78',1,'ir_Hitachi.h']]], - ['khitachiac1statelength_1641',['kHitachiAc1StateLength',['../IRremoteESP8266_8h.html#abb5e2ddb1a8d3c6fa7a94dbe1989ec5d',1,'IRremoteESP8266.h']]], - ['khitachiac1tempauto_1642',['kHitachiAc1TempAuto',['../ir__Hitachi_8h.html#ad402dff999a97b50b392572899522b6a',1,'ir_Hitachi.h']]], - ['khitachiac1tempdelta_1643',['kHitachiAc1TempDelta',['../ir__Hitachi_8h.html#a279c856a2b4d25651b117a8c654cb48d',1,'ir_Hitachi.h']]], - ['khitachiac1tempsize_1644',['kHitachiAc1TempSize',['../ir__Hitachi_8h.html#affb52642edc8f2231f0dc83bc5271885',1,'ir_Hitachi.h']]], - ['khitachiac1timersize_1645',['kHitachiAc1TimerSize',['../ir__Hitachi_8h.html#afd7f469f67f55263b0031b325232751b',1,'ir_Hitachi.h']]], - ['khitachiac2bits_1646',['kHitachiAc2Bits',['../IRremoteESP8266_8h.html#a362a0b0b0afc216cf8162a3724cf073a',1,'IRremoteESP8266.h']]], - ['khitachiac2statelength_1647',['kHitachiAc2StateLength',['../IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352',1,'IRremoteESP8266.h']]], - ['khitachiac344bits_1648',['kHitachiAc344Bits',['../IRremoteESP8266_8h.html#a204fc2410c3d555a37b152a01dceead0',1,'IRremoteESP8266.h']]], - ['khitachiac344buttonfan_1649',['kHitachiAc344ButtonFan',['../ir__Hitachi_8h.html#a5f33b956ec83ee0004785a9c44bd5b0b',1,'ir_Hitachi.h']]], - ['khitachiac344buttonpowermode_1650',['kHitachiAc344ButtonPowerMode',['../ir__Hitachi_8h.html#a3816a8ad86e03f8c5870057e7ad86335',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingh_1651',['kHitachiAc344ButtonSwingH',['../ir__Hitachi_8h.html#a10dea534868d76d99e91458ee28f5fe9',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingv_1652',['kHitachiAc344ButtonSwingV',['../ir__Hitachi_8h.html#a95c1b0ee7e3802631f4c2708371e7d34',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempdown_1653',['kHitachiAc344ButtonTempDown',['../ir__Hitachi_8h.html#a05d9bd95037669f1d3743d935471db33',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempup_1654',['kHitachiAc344ButtonTempUp',['../ir__Hitachi_8h.html#a74abf2ce4ed5918bf68f485eff179578',1,'ir_Hitachi.h']]], - ['khitachiac344cool_1655',['kHitachiAc344Cool',['../ir__Hitachi_8h.html#a92d4d8dea34a9387e55852b6b5289328',1,'ir_Hitachi.h']]], - ['khitachiac344dry_1656',['kHitachiAc344Dry',['../ir__Hitachi_8h.html#a37697339ddc2ffaf4ee13b5e140adf2c',1,'ir_Hitachi.h']]], - ['khitachiac344fan_1657',['kHitachiAc344Fan',['../ir__Hitachi_8h.html#a296cd0fc1f414a4e15ce228b5a794bcb',1,'ir_Hitachi.h']]], - ['khitachiac344fanauto_1658',['kHitachiAc344FanAuto',['../ir__Hitachi_8h.html#a6439744edb1ae4dd9e8ea2097fac7a9d',1,'ir_Hitachi.h']]], - ['khitachiac344fanhigh_1659',['kHitachiAc344FanHigh',['../ir__Hitachi_8h.html#a83ea1924948ce9ac8266ab64a41f3ebd',1,'ir_Hitachi.h']]], - ['khitachiac344fanlow_1660',['kHitachiAc344FanLow',['../ir__Hitachi_8h.html#acbbb61fde653c84a8e35865fa724872c',1,'ir_Hitachi.h']]], - ['khitachiac344fanmax_1661',['kHitachiAc344FanMax',['../ir__Hitachi_8h.html#af041ed41027b8e444e3069d9a3481c51',1,'ir_Hitachi.h']]], - ['khitachiac344fanmedium_1662',['kHitachiAc344FanMedium',['../ir__Hitachi_8h.html#aa6d47b5c28f758aa297b345cbf853c9a',1,'ir_Hitachi.h']]], - ['khitachiac344fanmin_1663',['kHitachiAc344FanMin',['../ir__Hitachi_8h.html#ac4bafed10c76739698e9a35183beb970',1,'ir_Hitachi.h']]], - ['khitachiac344heat_1664',['kHitachiAc344Heat',['../ir__Hitachi_8h.html#a6c4102910d21dc838efee1fb2477218d',1,'ir_Hitachi.h']]], - ['khitachiac344maxtemp_1665',['kHitachiAc344MaxTemp',['../ir__Hitachi_8h.html#a4a394fc23fb119ba67e3ca53e4b88f7f',1,'ir_Hitachi.h']]], - ['khitachiac344mintemp_1666',['kHitachiAc344MinTemp',['../ir__Hitachi_8h.html#a7322f7769c9c1af2311180474e5b0f57',1,'ir_Hitachi.h']]], - ['khitachiac344statelength_1667',['kHitachiAc344StateLength',['../IRremoteESP8266_8h.html#a2192f6b7c353f7f124dff3b57eab0659',1,'IRremoteESP8266.h']]], - ['khitachiac344swinghauto_1668',['kHitachiAc344SwingHAuto',['../ir__Hitachi_8h.html#a4f93eccee6e3e5f5c49c84034ca25af3',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleft_1669',['kHitachiAc344SwingHLeft',['../ir__Hitachi_8h.html#af714a1eb296b05f3fc8167aff5419764',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleftmax_1670',['kHitachiAc344SwingHLeftMax',['../ir__Hitachi_8h.html#ad0c5636ac0ccfd7e9cd087101bd5d204',1,'ir_Hitachi.h']]], - ['khitachiac344swinghmiddle_1671',['kHitachiAc344SwingHMiddle',['../ir__Hitachi_8h.html#a7e4372e02d72723049b378e955070c21',1,'ir_Hitachi.h']]], - ['khitachiac344swinghright_1672',['kHitachiAc344SwingHRight',['../ir__Hitachi_8h.html#af4b087dec06cfd86920dbf9df22aca63',1,'ir_Hitachi.h']]], - ['khitachiac344swinghrightmax_1673',['kHitachiAc344SwingHRightMax',['../ir__Hitachi_8h.html#a90cffc131be89a36d352c462403f689f',1,'ir_Hitachi.h']]], - ['khitachiac3bitmark_1674',['kHitachiAc3BitMark',['../ir__Hitachi_8cpp.html#a68269a88e02a3030749061e5f28f74cc',1,'ir_Hitachi.cpp']]], - ['khitachiac3bits_1675',['kHitachiAc3Bits',['../IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb',1,'IRremoteESP8266.h']]], - ['khitachiac3hdrmark_1676',['kHitachiAc3HdrMark',['../ir__Hitachi_8cpp.html#af0a80a66094e67b4a78e8dfa539cd22f',1,'ir_Hitachi.cpp']]], - ['khitachiac3hdrspace_1677',['kHitachiAc3HdrSpace',['../ir__Hitachi_8cpp.html#aca4dc0b851c69a5e640337d68eb6f412',1,'ir_Hitachi.cpp']]], - ['khitachiac3minbits_1678',['kHitachiAc3MinBits',['../IRremoteESP8266_8h.html#a66ebaf70d2b4018371825c9cd3078a42',1,'IRremoteESP8266.h']]], - ['khitachiac3minstatelength_1679',['kHitachiAc3MinStateLength',['../IRremoteESP8266_8h.html#ac3becb270bfddaa1c64b1f8582dfc902',1,'IRremoteESP8266.h']]], - ['khitachiac3onespace_1680',['kHitachiAc3OneSpace',['../ir__Hitachi_8cpp.html#a0e630e38b4bffd5ec931153c20e41d97',1,'ir_Hitachi.cpp']]], - ['khitachiac3statelength_1681',['kHitachiAc3StateLength',['../IRremoteESP8266_8h.html#a9cc230bac4f902d46049c7b2c2fdbd3d',1,'IRremoteESP8266.h']]], - ['khitachiac3zerospace_1682',['kHitachiAc3ZeroSpace',['../ir__Hitachi_8cpp.html#a7cf96a2734bcc9a5eb390b8647666925',1,'ir_Hitachi.cpp']]], - ['khitachiac424bitmark_1683',['kHitachiAc424BitMark',['../ir__Hitachi_8cpp.html#acf5f9d83873a74688eb0413708e26eed',1,'ir_Hitachi.cpp']]], - ['khitachiac424bits_1684',['kHitachiAc424Bits',['../IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb',1,'IRremoteESP8266.h']]], - ['khitachiac424buttonfan_1685',['kHitachiAc424ButtonFan',['../ir__Hitachi_8h.html#a4aa278fb1983213a2506c71debe035aa',1,'ir_Hitachi.h']]], - ['khitachiac424buttonpowermode_1686',['kHitachiAc424ButtonPowerMode',['../ir__Hitachi_8h.html#a2dd37a36c6ad928ad0c3485ae4ea78fd',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingh_1687',['kHitachiAc424ButtonSwingH',['../ir__Hitachi_8h.html#af3a0d9499fab327bc7dfb5d57562a946',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingv_1688',['kHitachiAc424ButtonSwingV',['../ir__Hitachi_8h.html#a59d8e5407daf37d38e0c76ab3abdec9d',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempdown_1689',['kHitachiAc424ButtonTempDown',['../ir__Hitachi_8h.html#ad909ee0bc97e24aa70ff6ecd1cffe6c2',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempup_1690',['kHitachiAc424ButtonTempUp',['../ir__Hitachi_8h.html#ac8885804fb276f6327beb2018b204359',1,'ir_Hitachi.h']]], - ['khitachiac424cool_1691',['kHitachiAc424Cool',['../ir__Hitachi_8h.html#a64c1e01c222e6dec001a7052e822d64f',1,'ir_Hitachi.h']]], - ['khitachiac424dry_1692',['kHitachiAc424Dry',['../ir__Hitachi_8h.html#a56bfde42914bc92f47929179cddcbdf3',1,'ir_Hitachi.h']]], - ['khitachiac424fan_1693',['kHitachiAc424Fan',['../ir__Hitachi_8h.html#a35db6fdcedeb3de0ffb0bb72f1e60a0b',1,'ir_Hitachi.h']]], - ['khitachiac424fanauto_1694',['kHitachiAc424FanAuto',['../ir__Hitachi_8h.html#add1ec95cfd4e388f90154b25410471d0',1,'ir_Hitachi.h']]], - ['khitachiac424fanhigh_1695',['kHitachiAc424FanHigh',['../ir__Hitachi_8h.html#aacabc41baea6c3ddf711424a400144a3',1,'ir_Hitachi.h']]], - ['khitachiac424fanlow_1696',['kHitachiAc424FanLow',['../ir__Hitachi_8h.html#acae66b060db5cd03732ccbf808c6049e',1,'ir_Hitachi.h']]], - ['khitachiac424fanmax_1697',['kHitachiAc424FanMax',['../ir__Hitachi_8h.html#a6298e6dee6ff9f5fc57cfc9ccf30c073',1,'ir_Hitachi.h']]], - ['khitachiac424fanmaxdry_1698',['kHitachiAc424FanMaxDry',['../ir__Hitachi_8h.html#af770b29d838610b87463551444548ac0',1,'ir_Hitachi.h']]], - ['khitachiac424fanmedium_1699',['kHitachiAc424FanMedium',['../ir__Hitachi_8h.html#a3d6479f2e76bd84eeda9f5c0772210c5',1,'ir_Hitachi.h']]], - ['khitachiac424fanmin_1700',['kHitachiAc424FanMin',['../ir__Hitachi_8h.html#aacf1d4b99d89a0e24622ca02402c683b',1,'ir_Hitachi.h']]], - ['khitachiac424fantemp_1701',['kHitachiAc424FanTemp',['../ir__Hitachi_8h.html#a874362698fad488da1a477c4f99923aa',1,'ir_Hitachi.h']]], - ['khitachiac424hdrmark_1702',['kHitachiAc424HdrMark',['../ir__Hitachi_8cpp.html#a7b1dcaa7569237831b08ea061fd403fb',1,'ir_Hitachi.cpp']]], - ['khitachiac424hdrspace_1703',['kHitachiAc424HdrSpace',['../ir__Hitachi_8cpp.html#a9309b801d147dd3eba96ed15245f7445',1,'ir_Hitachi.cpp']]], - ['khitachiac424heat_1704',['kHitachiAc424Heat',['../ir__Hitachi_8h.html#a5cfd38c9e7aa2c39dfa38b1ef4b33b4c',1,'ir_Hitachi.h']]], - ['khitachiac424ldrmark_1705',['kHitachiAc424LdrMark',['../ir__Hitachi_8cpp.html#a0e2a88cb5930fb9726a453bdefe33bae',1,'ir_Hitachi.cpp']]], - ['khitachiac424ldrspace_1706',['kHitachiAc424LdrSpace',['../ir__Hitachi_8cpp.html#ad6285b55ed74e0e1087c3eb12d63b39c',1,'ir_Hitachi.cpp']]], - ['khitachiac424maxtemp_1707',['kHitachiAc424MaxTemp',['../ir__Hitachi_8h.html#a22574044b5a9163aca1f0581b9fa9241',1,'ir_Hitachi.h']]], - ['khitachiac424mintemp_1708',['kHitachiAc424MinTemp',['../ir__Hitachi_8h.html#a3d4311f1f28bbe31a22b80556e678b22',1,'ir_Hitachi.h']]], - ['khitachiac424onespace_1709',['kHitachiAc424OneSpace',['../ir__Hitachi_8cpp.html#a9b9cd22801f17acac593a8bcf334fd71',1,'ir_Hitachi.cpp']]], - ['khitachiac424poweroff_1710',['kHitachiAc424PowerOff',['../ir__Hitachi_8h.html#affc2d076cc0de329466ecbde7186d4eb',1,'ir_Hitachi.h']]], - ['khitachiac424poweron_1711',['kHitachiAc424PowerOn',['../ir__Hitachi_8h.html#a922478904efd86c6ecf7dabec3dd759f',1,'ir_Hitachi.h']]], - ['khitachiac424statelength_1712',['kHitachiAc424StateLength',['../IRremoteESP8266_8h.html#aff17d9c0ccf683895d2c868094679f0a',1,'IRremoteESP8266.h']]], - ['khitachiac424zerospace_1713',['kHitachiAc424ZeroSpace',['../ir__Hitachi_8cpp.html#a0f2032ac476bf344df31dc9351b2b98a',1,'ir_Hitachi.cpp']]], - ['khitachiacauto_1714',['kHitachiAcAuto',['../ir__Hitachi_8h.html#af8c74a8388361162b93339e1b0bc94d9',1,'ir_Hitachi.h']]], - ['khitachiacautotemp_1715',['kHitachiAcAutoTemp',['../ir__Hitachi_8h.html#aaa28bb683fefc065cb115fbfb66994ec',1,'ir_Hitachi.h']]], - ['khitachiacbitmark_1716',['kHitachiAcBitMark',['../ir__Hitachi_8cpp.html#a0993bf3d527a12bfe51c7bbfcf788c59',1,'ir_Hitachi.cpp']]], - ['khitachiacbits_1717',['kHitachiAcBits',['../IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b',1,'IRremoteESP8266.h']]], - ['khitachiaccool_1718',['kHitachiAcCool',['../ir__Hitachi_8h.html#a2b40b07601fdf8b038c97bb8bd2bec59',1,'ir_Hitachi.h']]], - ['khitachiacdefaultrepeat_1719',['kHitachiAcDefaultRepeat',['../IRremoteESP8266_8h.html#acc8510281d2ff9a808501d375c03ba21',1,'IRremoteESP8266.h']]], - ['khitachiacdry_1720',['kHitachiAcDry',['../ir__Hitachi_8h.html#a19730b13fca736392600580c156ae3c3',1,'ir_Hitachi.h']]], - ['khitachiacfan_1721',['kHitachiAcFan',['../ir__Hitachi_8h.html#a69626883b6fdbd3ccd26bb3123bf1883',1,'ir_Hitachi.h']]], - ['khitachiacfanauto_1722',['kHitachiAcFanAuto',['../ir__Hitachi_8h.html#a6be6f6eae193e784133be63d7cc5d75e',1,'ir_Hitachi.h']]], - ['khitachiacfanhigh_1723',['kHitachiAcFanHigh',['../ir__Hitachi_8h.html#a85ef905a1d3704237141f07defc128f5',1,'ir_Hitachi.h']]], - ['khitachiacfanlow_1724',['kHitachiAcFanLow',['../ir__Hitachi_8h.html#a0add8c3a3d00a81fcc3279af78256de2',1,'ir_Hitachi.h']]], - ['khitachiacfanmed_1725',['kHitachiAcFanMed',['../ir__Hitachi_8h.html#ac88b4cfdce5d69bf07316ddd716c2c11',1,'ir_Hitachi.h']]], - ['khitachiacfreq_1726',['kHitachiAcFreq',['../ir__Hitachi_8h.html#a443eaa664017d7b671bef0e9aa2d643b',1,'ir_Hitachi.h']]], - ['khitachiachdrmark_1727',['kHitachiAcHdrMark',['../ir__Hitachi_8cpp.html#aefe34d17f5c72ee05afb9a6302a450da',1,'ir_Hitachi.cpp']]], - ['khitachiachdrspace_1728',['kHitachiAcHdrSpace',['../ir__Hitachi_8cpp.html#a4a4352723f119ea070be1eba2aafe36b',1,'ir_Hitachi.cpp']]], - ['khitachiacheat_1729',['kHitachiAcHeat',['../ir__Hitachi_8h.html#add2498e77e5585fd8c82a553bb0c22c0',1,'ir_Hitachi.h']]], - ['khitachiacmaxtemp_1730',['kHitachiAcMaxTemp',['../ir__Hitachi_8h.html#a63e17171c40d770d25f24d018aee2c4c',1,'ir_Hitachi.h']]], - ['khitachiacmingap_1731',['kHitachiAcMinGap',['../ir__Hitachi_8cpp.html#a14016b9110c11423c628c8e220e50864',1,'ir_Hitachi.cpp']]], - ['khitachiacmintemp_1732',['kHitachiAcMinTemp',['../ir__Hitachi_8h.html#a9b4f3ea50cc0491f10ff8dc8eabb3ecd',1,'ir_Hitachi.h']]], - ['khitachiaconespace_1733',['kHitachiAcOneSpace',['../ir__Hitachi_8cpp.html#a79a79aaf52a05c021621335586dd928f',1,'ir_Hitachi.cpp']]], - ['khitachiacstatelength_1734',['kHitachiAcStateLength',['../IRremoteESP8266_8h.html#a8bef76bac826afbbc51c2a867af15ed8',1,'IRremoteESP8266.h']]], - ['khitachiaczerospace_1735',['kHitachiAcZeroSpace',['../ir__Hitachi_8cpp.html#a0b03a4abb11d69a8b8da56ca2abc50c8',1,'ir_Hitachi.cpp']]], - ['kholdstr_1736',['kHoldStr',['../IRtext_8cpp.html#a86fd1f86e4a513603449e90a47500986',1,'kHoldStr(): IRtext.cpp'],['../IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e',1,'kHoldStr(): IRtext.cpp']]], - ['khoursstr_1737',['kHoursStr',['../IRtext_8cpp.html#ae94260daddf2ea56e54d56bbad66526c',1,'kHoursStr(): IRtext.cpp'],['../IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161',1,'kHoursStr(): IRtext.cpp']]], - ['khourstr_1738',['kHourStr',['../IRtext_8cpp.html#a1d25a0bf2c8a638fff1557a0c5637977',1,'kHourStr(): IRtext.cpp'],['../IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6',1,'kHourStr(): IRtext.cpp']]], - ['khumidstr_1739',['kHumidStr',['../IRtext_8cpp.html#aae236cd2e7ed4961360fe687fe38170d',1,'kHumidStr(): IRtext.cpp'],['../IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f',1,'kHumidStr(): IRtext.cpp']]], - ['kidlestate_1740',['kIdleState',['../IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf',1,'IRrecv.h']]], - ['kidstr_1741',['kIdStr',['../IRtext_8cpp.html#a35dc8efdb79d96e4f0a48d3bd7993a6e',1,'kIdStr(): IRtext.cpp'],['../IRtext_8h.html#aed59ca935ee6bc14064af69bf50aa16b',1,'kIdStr(): IRtext.cpp']]], - ['kifeelstr_1742',['kIFeelStr',['../IRtext_8cpp.html#a3c7368d9138477f0eac2a6249ba2606b',1,'kIFeelStr(): IRtext.cpp'],['../IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f',1,'kIFeelStr(): IRtext.cpp']]], - ['kinaxbitmark_1743',['kInaxBitMark',['../ir__Inax_8cpp.html#a84553819866dbfcfad8cba87f6c02e04',1,'ir_Inax.cpp']]], - ['kinaxbits_1744',['kInaxBits',['../IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a',1,'IRremoteESP8266.h']]], - ['kinaxhdrmark_1745',['kInaxHdrMark',['../ir__Inax_8cpp.html#ac467a96d91b6266c3ce9a2a4ec2a8b44',1,'ir_Inax.cpp']]], - ['kinaxhdrspace_1746',['kInaxHdrSpace',['../ir__Inax_8cpp.html#a6ddcc8ca7a5d05cee91e57b3e69cca33',1,'ir_Inax.cpp']]], - ['kinaxmingap_1747',['kInaxMinGap',['../ir__Inax_8cpp.html#a600f49303a77fbdc1d77aae2abe9b9aa',1,'ir_Inax.cpp']]], - ['kinaxminrepeat_1748',['kInaxMinRepeat',['../IRremoteESP8266_8h.html#a37a3d0ae51a6ce850a424fe77d5b22d2',1,'IRremoteESP8266.h']]], - ['kinaxonespace_1749',['kInaxOneSpace',['../ir__Inax_8cpp.html#aeb77e3a51838547a29c1b343eba4c7ef',1,'ir_Inax.cpp']]], - ['kinaxtick_1750',['kInaxTick',['../ir__Inax_8cpp.html#ad437f0beac0893853cc9d5cc214b03c6',1,'ir_Inax.cpp']]], - ['kinaxzerospace_1751',['kInaxZeroSpace',['../ir__Inax_8cpp.html#a115f1f061362c1c3c41e3bb20ea7e1c6',1,'ir_Inax.cpp']]], - ['kinsidestr_1752',['kInsideStr',['../IRtext_8cpp.html#aa94c7a9b472bcd2297b43a5b4008bc51',1,'kInsideStr(): IRtext.cpp'],['../IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb',1,'kInsideStr(): IRtext.cpp']]], - ['kionstr_1753',['kIonStr',['../IRtext_8cpp.html#afc36ce4beed72e662a8d9d1473dad235',1,'kIonStr(): IRtext.cpp'],['../IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b',1,'kIonStr(): IRtext.cpp']]], - ['kjvcbitmark_1754',['kJvcBitMark',['../ir__JVC_8cpp.html#a23c11d77431d37bba18776f9341c767f',1,'ir_JVC.cpp']]], - ['kjvcbitmarkticks_1755',['kJvcBitMarkTicks',['../ir__JVC_8cpp.html#aad7cf432a9bd0d2b4df66d5f903a70dd',1,'ir_JVC.cpp']]], - ['kjvcbits_1756',['kJvcBits',['../IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f',1,'IRremoteESP8266.h']]], - ['kjvchdrmark_1757',['kJvcHdrMark',['../ir__JVC_8cpp.html#a60d81ad0066288b602054bd24a912f1f',1,'ir_JVC.cpp']]], - ['kjvchdrmarkticks_1758',['kJvcHdrMarkTicks',['../ir__JVC_8cpp.html#abb12fba45b7a366e23849d693953e749',1,'ir_JVC.cpp']]], - ['kjvchdrspace_1759',['kJvcHdrSpace',['../ir__JVC_8cpp.html#a5444718f66ba8b43c1d7d99f7b378a0d',1,'ir_JVC.cpp']]], - ['kjvchdrspaceticks_1760',['kJvcHdrSpaceTicks',['../ir__JVC_8cpp.html#ae7cf6cb7b5ea5fe17a9b182d1ef3b008',1,'ir_JVC.cpp']]], - ['kjvcmingap_1761',['kJvcMinGap',['../ir__JVC_8cpp.html#ac19d8396c10adb687a883d016ec43aa5',1,'ir_JVC.cpp']]], - ['kjvcmingapticks_1762',['kJvcMinGapTicks',['../ir__JVC_8cpp.html#a525e7d672b148c02bdca1f66ab92e6c7',1,'ir_JVC.cpp']]], - ['kjvconespace_1763',['kJvcOneSpace',['../ir__JVC_8cpp.html#a8befef1d03f3a09541c2612c66c0256f',1,'ir_JVC.cpp']]], - ['kjvconespaceticks_1764',['kJvcOneSpaceTicks',['../ir__JVC_8cpp.html#a20d4f7737d71bdbec58694e775669df9',1,'ir_JVC.cpp']]], - ['kjvcrptlength_1765',['kJvcRptLength',['../ir__JVC_8cpp.html#a3896e40881e70c63234fecb88375b5a1',1,'ir_JVC.cpp']]], - ['kjvcrptlengthticks_1766',['kJvcRptLengthTicks',['../ir__JVC_8cpp.html#a75e03cf5739ab0ba67e5cfa426776d16',1,'ir_JVC.cpp']]], - ['kjvctick_1767',['kJvcTick',['../ir__JVC_8cpp.html#acd5a2ba251824cac5311adcc9a813b1a',1,'ir_JVC.cpp']]], - ['kjvczerospace_1768',['kJvcZeroSpace',['../ir__JVC_8cpp.html#a67c790b909f82e044b8c4e7227d9c189',1,'ir_JVC.cpp']]], - ['kjvczerospaceticks_1769',['kJvcZeroSpaceTicks',['../ir__JVC_8cpp.html#a0a5319df3b1e01741cd35a37087342f5',1,'ir_JVC.cpp']]], - ['kkelonbitmark_1770',['kKelonBitMark',['../ir__Kelon_8cpp.html#af3f0f9a4c7492bd5279d113cc0e11270',1,'ir_Kelon.cpp']]], - ['kkelonbits_1771',['kKelonBits',['../IRremoteESP8266_8h.html#a98d17d9115af9c6edff1198b14c46838',1,'IRremoteESP8266.h']]], - ['kkelondrygrademax_1772',['kKelonDryGradeMax',['../ir__Kelon_8h.html#aaf96912cb4f2180a4f8e45ab15a62fdb',1,'ir_Kelon.h']]], - ['kkelondrygrademin_1773',['kKelonDryGradeMin',['../ir__Kelon_8h.html#ad0217fb386e35b899fa63c0917605de1',1,'ir_Kelon.h']]], - ['kkelonfanauto_1774',['kKelonFanAuto',['../ir__Kelon_8h.html#a71f311bc7e9982f96069d186240bafb6',1,'ir_Kelon.h']]], - ['kkelonfanmax_1775',['kKelonFanMax',['../ir__Kelon_8h.html#a4bd60c6979883d711dbd1b6019164963',1,'ir_Kelon.h']]], - ['kkelonfanmedium_1776',['kKelonFanMedium',['../ir__Kelon_8h.html#a93d7558b282b38d11e9a04e95410ff5c',1,'ir_Kelon.h']]], - ['kkelonfanmin_1777',['kKelonFanMin',['../ir__Kelon_8h.html#acac1aee0b3063ff82283b86714722eb9',1,'ir_Kelon.h']]], - ['kkelonfreq_1778',['kKelonFreq',['../ir__Kelon_8cpp.html#aa3c42f0925abf8bb5cd0a9c0e331b86b',1,'ir_Kelon.cpp']]], - ['kkelongap_1779',['kKelonGap',['../ir__Kelon_8cpp.html#aac9bfeaac4f477354641f7a6df2a1343',1,'ir_Kelon.cpp']]], - ['kkelonhdrmark_1780',['kKelonHdrMark',['../ir__Kelon_8cpp.html#a3af58cb728ec13111df8514908cdb306',1,'ir_Kelon.cpp']]], - ['kkelonhdrspace_1781',['kKelonHdrSpace',['../ir__Kelon_8cpp.html#aa8874c181833144e3f9a2385f17fd190',1,'ir_Kelon.cpp']]], - ['kkelonmaxtemp_1782',['kKelonMaxTemp',['../ir__Kelon_8h.html#a04169c90255e4a83f9fd51f67ca07e54',1,'ir_Kelon.h']]], - ['kkelonmintemp_1783',['kKelonMinTemp',['../ir__Kelon_8h.html#abc7695e69ede30a8eeed9f21f47a9ee6',1,'ir_Kelon.h']]], - ['kkelonmodecool_1784',['kKelonModeCool',['../ir__Kelon_8h.html#aabab51724f0036fdfb8a27272ef2b0ad',1,'ir_Kelon.h']]], - ['kkelonmodedry_1785',['kKelonModeDry',['../ir__Kelon_8h.html#a4ced8b60523afafb93f7b86914be34d6',1,'ir_Kelon.h']]], - ['kkelonmodefan_1786',['kKelonModeFan',['../ir__Kelon_8h.html#a39b42afb41b16a05e188faf1e17ab1a6',1,'ir_Kelon.h']]], - ['kkelonmodeheat_1787',['kKelonModeHeat',['../ir__Kelon_8h.html#a924a4138c047d7db1c5f07ff94e66f51',1,'ir_Kelon.h']]], - ['kkelonmodesmart_1788',['kKelonModeSmart',['../ir__Kelon_8h.html#a0bc24153f4463980e3db6069fdd2d1d6',1,'ir_Kelon.h']]], - ['kkelononespace_1789',['kKelonOneSpace',['../ir__Kelon_8cpp.html#a90cec23910a63973f8a37ba16c6d7554',1,'ir_Kelon.cpp']]], - ['kkelonzerospace_1790',['kKelonZeroSpace',['../ir__Kelon_8cpp.html#ad10179a5136391e75b21618b0f32717f',1,'ir_Kelon.cpp']]], - ['kkelvinatorauto_1791',['kKelvinatorAuto',['../ir__Kelvinator_8h.html#a879b005fc5493a693b05e3bb7cbc8fbf',1,'ir_Kelvinator.h']]], - ['kkelvinatorautotemp_1792',['kKelvinatorAutoTemp',['../ir__Kelvinator_8h.html#afa9e7ea8c9fb86cb02358cc8221733b0',1,'ir_Kelvinator.h']]], - ['kkelvinatorbasicfanmax_1793',['kKelvinatorBasicFanMax',['../ir__Kelvinator_8h.html#a10624389f033451cf9a6f4530c2dfb98',1,'ir_Kelvinator.h']]], - ['kkelvinatorbitmark_1794',['kKelvinatorBitMark',['../ir__Kelvinator_8cpp.html#a2014f9f92f1e24a04341398e7e673807',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbitmarkticks_1795',['kKelvinatorBitMarkTicks',['../ir__Kelvinator_8cpp.html#a2d6579257ab7f185e4f0fecdbdf03835',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbits_1796',['kKelvinatorBits',['../IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86',1,'IRremoteESP8266.h']]], - ['kkelvinatorchecksumstart_1797',['kKelvinatorChecksumStart',['../ir__Kelvinator_8cpp.html#a0afa7cec1db6a5f46c1b30d7ce718ae6',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooter_1798',['kKelvinatorCmdFooter',['../ir__Kelvinator_8cpp.html#ad2361e09472fa03376b447114a19513f',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooterbits_1799',['kKelvinatorCmdFooterBits',['../ir__Kelvinator_8cpp.html#af6c85d3b30a5949da53ad9400734f203',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcool_1800',['kKelvinatorCool',['../ir__Kelvinator_8h.html#ad49a2e457470d6e16d001cdae3215606',1,'ir_Kelvinator.h']]], - ['kkelvinatordefaultrepeat_1801',['kKelvinatorDefaultRepeat',['../IRremoteESP8266_8h.html#a94c968c5cc929f189b8e578d2f55b132',1,'IRremoteESP8266.h']]], - ['kkelvinatordry_1802',['kKelvinatorDry',['../ir__Kelvinator_8h.html#a181b3d10b522f9afb29706da42afea55',1,'ir_Kelvinator.h']]], - ['kkelvinatorfan_1803',['kKelvinatorFan',['../ir__Kelvinator_8h.html#a8d6d97be2fd8a5aefa1319d3f662a50c',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanauto_1804',['kKelvinatorFanAuto',['../ir__Kelvinator_8h.html#ac4994c36634ca0ad8791807c9a992976',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmax_1805',['kKelvinatorFanMax',['../ir__Kelvinator_8h.html#a889ce17d112d1a61420e1064d72c583a',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmin_1806',['kKelvinatorFanMin',['../ir__Kelvinator_8h.html#a36a9422e2e6c6b7a87e8b2deffd1b189',1,'ir_Kelvinator.h']]], - ['kkelvinatorgapspace_1807',['kKelvinatorGapSpace',['../ir__Kelvinator_8cpp.html#abf66116a235a9d05089182f2f7fd7640',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorgapspaceticks_1808',['kKelvinatorGapSpaceTicks',['../ir__Kelvinator_8cpp.html#a6a81fb4c1cf1ad34f99f3ca87ab74a5c',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmark_1809',['kKelvinatorHdrMark',['../ir__Kelvinator_8cpp.html#a413e824c6bdd4778e70f496917b3fe30',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmarkticks_1810',['kKelvinatorHdrMarkTicks',['../ir__Kelvinator_8cpp.html#a8ad828958071c75a80928abfb916c0df',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspace_1811',['kKelvinatorHdrSpace',['../ir__Kelvinator_8cpp.html#a9cab23fbd5ba62714fda24765db0e7d1',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspaceticks_1812',['kKelvinatorHdrSpaceTicks',['../ir__Kelvinator_8cpp.html#ab4fbf899dcb2c2d510055215617d5b44',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorheat_1813',['kKelvinatorHeat',['../ir__Kelvinator_8h.html#a080eade5648791e37c76af7a52e85731',1,'ir_Kelvinator.h']]], - ['kkelvinatormaxtemp_1814',['kKelvinatorMaxTemp',['../ir__Kelvinator_8h.html#a14933442e718db1a87bae5d076ad228d',1,'ir_Kelvinator.h']]], - ['kkelvinatormintemp_1815',['kKelvinatorMinTemp',['../ir__Kelvinator_8h.html#a98871ce825dbbe80d072f25253142879',1,'ir_Kelvinator.h']]], - ['kkelvinatoronespace_1816',['kKelvinatorOneSpace',['../ir__Kelvinator_8cpp.html#aae5a009282517309b8fdbfdaced9d659',1,'ir_Kelvinator.cpp']]], - ['kkelvinatoronespaceticks_1817',['kKelvinatorOneSpaceTicks',['../ir__Kelvinator_8cpp.html#ac907f4495debdcaf680f6e6941b844d5',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorstatelength_1818',['kKelvinatorStateLength',['../IRremoteESP8266_8h.html#af68545e8c2fe9af3719fb74c5d21f0c9',1,'IRremoteESP8266.h']]], - ['kkelvinatortick_1819',['kKelvinatorTick',['../ir__Kelvinator_8cpp.html#a846cbb5609b1dff139a90487000c7393',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospace_1820',['kKelvinatorZeroSpace',['../ir__Kelvinator_8cpp.html#a10469f76f50285a6084bb088fd601dea',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospaceticks_1821',['kKelvinatorZeroSpaceTicks',['../ir__Kelvinator_8cpp.html#a0abc0fdc3d9ac9f12133a46e95d69432',1,'ir_Kelvinator.cpp']]], - ['klasertagbits_1822',['kLasertagBits',['../IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e',1,'IRremoteESP8266.h']]], - ['klasertagdelta_1823',['kLasertagDelta',['../ir__Lasertag_8cpp.html#a5c0e8e9c6dec0480c09fcd339ed62257',1,'ir_Lasertag.cpp']]], - ['klasertagexcess_1824',['kLasertagExcess',['../ir__Lasertag_8cpp.html#afa77dc5a431a8d851320e7623378983e',1,'ir_Lasertag.cpp']]], - ['klasertagmingap_1825',['kLasertagMinGap',['../ir__Lasertag_8cpp.html#a33762e2c44dac34e00d255b41d9f2822',1,'ir_Lasertag.cpp']]], - ['klasertagminrepeat_1826',['kLasertagMinRepeat',['../IRremoteESP8266_8h.html#a9b36135c3df24eab232a5edac8c58c5e',1,'IRremoteESP8266.h']]], - ['klasertagminsamples_1827',['kLasertagMinSamples',['../ir__Lasertag_8cpp.html#acbf98970106cadb43e0703ae2caab0c1',1,'ir_Lasertag.cpp']]], - ['klasertagtick_1828',['kLasertagTick',['../ir__Lasertag_8cpp.html#a878b5d53379f8b1b21dfe19f1f83a626',1,'ir_Lasertag.cpp']]], - ['klasertagtolerance_1829',['kLasertagTolerance',['../ir__Lasertag_8cpp.html#a6146bcf378515d31330b3fec5c967346',1,'ir_Lasertag.cpp']]], - ['klastdecodetype_1830',['kLastDecodeType',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab09881b84bf9d61af99e62a85cce0b59',1,'IRremoteESP8266.h']]], - ['klastfanspeedenum_1831',['kLastFanspeedEnum',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383ab2d2a6993491fd666f1fa0afff5913ad',1,'stdAc']]], - ['klastopmodeenum_1832',['kLastOpmodeEnum',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa8dd00ffd575f66172d594e78860aad9f',1,'stdAc']]], - ['klaststr_1833',['kLastStr',['../IRtext_8cpp.html#ad7c8430b935afb7aec114788a9c0bf7d',1,'kLastStr(): IRtext.cpp'],['../IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32',1,'kLastStr(): IRtext.cpp']]], - ['klastswinghenum_1834',['kLastSwinghEnum',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ac5bc5e605db47897c114283926ba7fe4',1,'stdAc']]], - ['klastswingvenum_1835',['kLastSwingvEnum',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a4127912afc084d51c71c4ea0c7dd7b30',1,'stdAc']]], - ['kleft_1836',['kLeft',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2d5fde1d924910a2a01ecd8e70a87c28',1,'stdAc']]], - ['kleftmax_1837',['kLeftMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a375fe2e8ea70186052eeb2983baa1d7d',1,'stdAc']]], - ['kleftmaxstr_1838',['kLeftMaxStr',['../IRtext_8cpp.html#a1a82999b6eb3b6637f51bb8ce6a46efd',1,'kLeftMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf',1,'kLeftMaxStr(): IRtext.cpp']]], - ['kleftstr_1839',['kLeftStr',['../IRtext_8cpp.html#a0bb005966f2ff2da12a542e713f7f1f2',1,'kLeftStr(): IRtext.cpp'],['../IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf',1,'kLeftStr(): IRtext.cpp']]], - ['klegopfbitmark_1840',['kLegoPfBitMark',['../ir__Lego_8cpp.html#afdf76660f62bfefb4a813d57cd84b590',1,'ir_Lego.cpp']]], - ['klegopfbits_1841',['kLegoPfBits',['../IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e',1,'IRremoteESP8266.h']]], - ['klegopfhdrspace_1842',['kLegoPfHdrSpace',['../ir__Lego_8cpp.html#a140e8707900bfd4e3a9e2722a6b0bfb3',1,'ir_Lego.cpp']]], - ['klegopfmincommandlength_1843',['kLegoPfMinCommandLength',['../ir__Lego_8cpp.html#ad9a0c5184cc422ec1b32edf58c52d2b1',1,'ir_Lego.cpp']]], - ['klegopfminrepeat_1844',['kLegoPfMinRepeat',['../IRremoteESP8266_8h.html#a2614cf3cb840f028eb1dc684aeb1272c',1,'IRremoteESP8266.h']]], - ['klegopfonespace_1845',['kLegoPfOneSpace',['../ir__Lego_8cpp.html#a59a41085f2e8f81e1019fd40782269e3',1,'ir_Lego.cpp']]], - ['klegopfzerospace_1846',['kLegoPfZeroSpace',['../ir__Lego_8cpp.html#ada07e8aaf79cf58c46b301a410d9fb3e',1,'ir_Lego.cpp']]], - ['klg2bitmark_1847',['kLg2BitMark',['../ir__LG_8cpp.html#abf4db4647161db6fb2548b5200c41843',1,'ir_LG.cpp']]], - ['klg2hdrmark_1848',['kLg2HdrMark',['../ir__LG_8cpp.html#a5ca50077fba2d5130220255e1659e0c3',1,'ir_LG.cpp']]], - ['klg2hdrspace_1849',['kLg2HdrSpace',['../ir__LG_8cpp.html#a6637da052fea9320e97cff261f219cdb',1,'ir_LG.cpp']]], - ['klg32bits_1850',['kLg32Bits',['../IRremoteESP8266_8h.html#ae3c458814d7221b66d2f267cb2663bd2',1,'IRremoteESP8266.h']]], - ['klg32hdrmark_1851',['kLg32HdrMark',['../ir__LG_8cpp.html#a26cb3fb11b1a0bf0815868767e50f31b',1,'ir_LG.cpp']]], - ['klg32hdrspace_1852',['kLg32HdrSpace',['../ir__LG_8cpp.html#a59ddf2070642615e162c85b7575aff76',1,'ir_LG.cpp']]], - ['klg32rpthdrmark_1853',['kLg32RptHdrMark',['../ir__LG_8cpp.html#af19a674228bea82c1c588aa9dd974805',1,'ir_LG.cpp']]], - ['klgacauto_1854',['kLgAcAuto',['../ir__LG_8h.html#ae5e45a0f42ce7544d6fb7981a43fb932',1,'ir_LG.h']]], - ['klgaccool_1855',['kLgAcCool',['../ir__LG_8h.html#a3ba35885488bdda3d87ba344a5c58eb2',1,'ir_LG.h']]], - ['klgacdry_1856',['kLgAcDry',['../ir__LG_8h.html#ab3b9a106551be1217e0c824cffe1ea44',1,'ir_LG.h']]], - ['klgacfan_1857',['kLgAcFan',['../ir__LG_8h.html#afc12144673b8dd0555833427fa757275',1,'ir_LG.h']]], - ['klgacfanauto_1858',['kLgAcFanAuto',['../ir__LG_8h.html#a3dee1dc33f768d36a2216213c90a0a5c',1,'ir_LG.h']]], - ['klgacfanhigh_1859',['kLgAcFanHigh',['../ir__LG_8h.html#a89888f8d36899b5526e4c2ebb1097357',1,'ir_LG.h']]], - ['klgacfanlow_1860',['kLgAcFanLow',['../ir__LG_8h.html#afa3633c1b26d837f85b10a8a8d677efc',1,'ir_LG.h']]], - ['klgacfanlowest_1861',['kLgAcFanLowest',['../ir__LG_8h.html#a6b89a2e6a5bee761e1754fe520459d49',1,'ir_LG.h']]], - ['klgacfanmedium_1862',['kLgAcFanMedium',['../ir__LG_8h.html#abe0fb8a8f9d6ab9ebda36d0343841619',1,'ir_LG.h']]], - ['klgacheat_1863',['kLgAcHeat',['../ir__LG_8h.html#a6c17d61082cc24f9d714c5d4ac151933',1,'ir_LG.h']]], - ['klgacmaxtemp_1864',['kLgAcMaxTemp',['../ir__LG_8h.html#a0fab7b6e6d1138638bdeadeab85f5090',1,'ir_LG.h']]], - ['klgacmintemp_1865',['kLgAcMinTemp',['../ir__LG_8h.html#ae3bef99e329f057358001cacf67f6d70',1,'ir_LG.h']]], - ['klgacoffcommand_1866',['kLgAcOffCommand',['../ir__LG_8h.html#aecf8158eec1d9ec0d54056392b512296',1,'ir_LG.h']]], - ['klgacpoweroff_1867',['kLgAcPowerOff',['../ir__LG_8h.html#a3b2681e41071298197d849fbd7649318',1,'ir_LG.h']]], - ['klgacpoweron_1868',['kLgAcPowerOn',['../ir__LG_8h.html#a87d2f6e4e2755aaab4762952b1bf6108',1,'ir_LG.h']]], - ['klgacsignature_1869',['kLgAcSignature',['../ir__LG_8h.html#ab7c3589deb28829ad0313b1505ec196e',1,'ir_LG.h']]], - ['klgactempadjust_1870',['kLgAcTempAdjust',['../ir__LG_8h.html#a16210dc395a86dc4562436047c22600f',1,'ir_LG.h']]], - ['klgbitmark_1871',['kLgBitMark',['../ir__LG_8cpp.html#a9311195710d4c3a2ac48456390a03138',1,'ir_LG.cpp']]], - ['klgbits_1872',['kLgBits',['../IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102',1,'IRremoteESP8266.h']]], - ['klgdefaultrepeat_1873',['kLgDefaultRepeat',['../IRremoteESP8266_8h.html#a2d6832b3d214e0adad781c205993e461',1,'IRremoteESP8266.h']]], - ['klghdrmark_1874',['kLgHdrMark',['../ir__LG_8cpp.html#a74f253d9e4cc72148233021c47d59f35',1,'ir_LG.cpp']]], - ['klghdrspace_1875',['kLgHdrSpace',['../ir__LG_8cpp.html#a6eaf100cde647fc119d3e993680afd47',1,'ir_LG.cpp']]], - ['klgmingap_1876',['kLgMinGap',['../ir__LG_8cpp.html#a784323468e6b5ebc65bd2870a94fb553',1,'ir_LG.cpp']]], - ['klgminmessagelength_1877',['kLgMinMessageLength',['../ir__LG_8cpp.html#a4eb3f82ae2ca6c34b58e512848a6dc41',1,'ir_LG.cpp']]], - ['klgonespace_1878',['kLgOneSpace',['../ir__LG_8cpp.html#a05fe6a47f437efc686cb46ec805da4d4',1,'ir_LG.cpp']]], - ['klgrptspace_1879',['kLgRptSpace',['../ir__LG_8cpp.html#a834b8f08ee32030c51ea5e2c5bd5a73c',1,'ir_LG.cpp']]], - ['klgzerospace_1880',['kLgZeroSpace',['../ir__LG_8cpp.html#a981fe3cfc4adf0b3016a008ca1bbf734',1,'ir_LG.cpp']]], - ['klightstr_1881',['kLightStr',['../IRtext_8cpp.html#a2912b7dc11fd571706eaaf90e0095a4f',1,'kLightStr(): IRtext.cpp'],['../IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da',1,'kLightStr(): IRtext.cpp']]], - ['klighttogglestr_1882',['kLightToggleStr',['../IRtext_8cpp.html#a74a3ef3c72995e19582be04a2716b285',1,'kLightToggleStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c',1,'kLightToggleStr(): IRtext.cpp']]], - ['klostr_1883',['kLoStr',['../IRtext_8cpp.html#a72fc3855eec7026260de3a6b3a25c377',1,'kLoStr(): IRtext.cpp'],['../IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c',1,'kLoStr(): IRtext.cpp']]], - ['kloudstr_1884',['kLoudStr',['../IRtext_8cpp.html#a3b6d3eed96c5623cc95ebcfb93cb6f96',1,'kLoudStr(): IRtext.cpp'],['../IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2',1,'kLoudStr(): IRtext.cpp']]], - ['klow_1885',['kLow',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()']]], - ['klowerstr_1886',['kLowerStr',['../IRtext_8cpp.html#a518681524ec3c8f8bc993823003fe58a',1,'kLowerStr(): IRtext.cpp'],['../IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c',1,'kLowerStr(): IRtext.cpp']]], - ['klowest_1887',['kLowest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a334c684494b7f19d765cf062ae94a314',1,'stdAc']]], - ['kloweststr_1888',['kLowestStr',['../IRtext_8cpp.html#ae0c595955599a398669a372edd339f67',1,'kLowestStr(): IRtext.cpp'],['../IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3',1,'kLowestStr(): IRtext.cpp']]], - ['klownibble_1889',['kLowNibble',['../IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec',1,'IRutils.h']]], - ['klowstr_1890',['kLowStr',['../IRtext_8cpp.html#a18f69bf40b866ee1d30d1586757d5f41',1,'kLowStr(): IRtext.cpp'],['../IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea',1,'kLowStr(): IRtext.cpp']]], - ['klutronbits_1891',['kLutronBits',['../IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99',1,'IRremoteESP8266.h']]], - ['klutrondelta_1892',['kLutronDelta',['../ir__Lutron_8cpp.html#a4220004fac195ef46388199ad9624860',1,'ir_Lutron.cpp']]], - ['klutrongap_1893',['kLutronGap',['../ir__Lutron_8cpp.html#a18ffb51db0ae33904a64012cb72d6165',1,'ir_Lutron.cpp']]], - ['klutrontick_1894',['kLutronTick',['../ir__Lutron_8cpp.html#a04a84309978b79c0983c398a497a087a',1,'ir_Lutron.cpp']]], - ['kmagiquestbits_1895',['kMagiquestBits',['../IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751',1,'IRremoteESP8266.h']]], - ['kmagiquestgap_1896',['kMagiQuestGap',['../ir__Magiquest_8h.html#aebdea5a1a55547d812f1f7bb2d3ddf1f',1,'ir_Magiquest.h']]], - ['kmagiquestmarkone_1897',['kMagiQuestMarkOne',['../ir__Magiquest_8h.html#a0d5d090015ecf49995514054c29cb4e2',1,'ir_Magiquest.h']]], - ['kmagiquestmarkzero_1898',['kMagiQuestMarkZero',['../ir__Magiquest_8h.html#a7240a15dbb9bc6a1e31575be7837c390',1,'ir_Magiquest.h']]], - ['kmagiquestoneratio_1899',['kMagiQuestOneRatio',['../ir__Magiquest_8h.html#a073cdb7ca4dd35b8fa05d99eb7da5b65',1,'ir_Magiquest.h']]], - ['kmagiquestspaceone_1900',['kMagiQuestSpaceOne',['../ir__Magiquest_8h.html#a92bad440c0291cbb903f08de08d96fb2',1,'ir_Magiquest.h']]], - ['kmagiquestspacezero_1901',['kMagiQuestSpaceZero',['../ir__Magiquest_8h.html#abe557052c5c3bef87e62daf71b4c8654',1,'ir_Magiquest.h']]], - ['kmagiquesttotalusec_1902',['kMagiQuestTotalUsec',['../ir__Magiquest_8h.html#a819dcf22b127f4f7b282d784490a83c3',1,'ir_Magiquest.h']]], - ['kmagiquestzeroratio_1903',['kMagiQuestZeroRatio',['../ir__Magiquest_8h.html#a41e5594b8e1510267e563ed78fbe98b0',1,'ir_Magiquest.h']]], - ['kmanualstr_1904',['kManualStr',['../IRtext_8cpp.html#a619896ae89717b2b0e1d3492bb528cbc',1,'kManualStr(): IRtext.cpp'],['../IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8',1,'kManualStr(): IRtext.cpp']]], - ['kmark_1905',['kMark',['../ir__Lasertag_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_RC5_RC6.cpp']]], - ['kmarkexcess_1906',['kMarkExcess',['../IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e',1,'IRrecv.h']]], - ['kmarkstate_1907',['kMarkState',['../IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2',1,'IRrecv.h']]], - ['kmax_1908',['kMax',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa0b1ac8aae6b1cfbbe89085c642b3b4b',1,'stdAc']]], - ['kmaxaccurateusecdelay_1909',['kMaxAccurateUsecDelay',['../IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9',1,'IRsend.h']]], - ['kmaximumstr_1910',['kMaximumStr',['../IRtext_8cpp.html#af346693e98c91c7ce79bb22c7460dcee',1,'kMaximumStr(): IRtext.cpp'],['../IRtext_8h.html#a487173616cc3fced0489c01c11333912',1,'kMaximumStr(): IRtext.cpp']]], - ['kmaxleftstr_1911',['kMaxLeftStr',['../IRtext_8cpp.html#ae8ad7e46c3a33b4b9c5fa6545c9e3822',1,'kMaxLeftStr(): IRtext.cpp'],['../IRtext_8h.html#aac197960695463757652bc643efdcd59',1,'kMaxLeftStr(): IRtext.cpp']]], - ['kmaxrightstr_1912',['kMaxRightStr',['../IRtext_8cpp.html#a1ae3f331adb8ac6d1a27aa3d688fb65f',1,'kMaxRightStr(): IRtext.cpp'],['../IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e',1,'kMaxRightStr(): IRtext.cpp']]], - ['kmaxstr_1913',['kMaxStr',['../IRtext_8cpp.html#ad30e01090f06db0a3cb0c00bb6d2f0ca',1,'kMaxStr(): IRtext.cpp'],['../IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb',1,'kMaxStr(): IRtext.cpp']]], - ['kmaxtimeoutms_1914',['kMaxTimeoutMs',['../IRrecv_8h.html#a73391726d7caccb9b498bba73a969784',1,'IRrecv.h']]], - ['kmedium_1915',['kMedium',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a3ce9d817402b59f65fb01ea044bb1ee9',1,'stdAc']]], - ['kmediumstr_1916',['kMediumStr',['../IRtext_8cpp.html#ac59539e93fdc7d8f15f1f55bcbf933c5',1,'kMediumStr(): IRtext.cpp'],['../IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b',1,'kMediumStr(): IRtext.cpp']]], - ['kmedstr_1917',['kMedStr',['../IRtext_8cpp.html#a4832f8f5118018fa3c6eae1cd652eabf',1,'kMedStr(): IRtext.cpp'],['../IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0',1,'kMedStr(): IRtext.cpp']]], - ['kmetzaddressbits_1918',['kMetzAddressBits',['../ir__Metz_8cpp.html#accbe5b6fed5bd637faff4b6e04bd1ced',1,'ir_Metz.cpp']]], - ['kmetzbitmark_1919',['kMetzBitMark',['../ir__Metz_8cpp.html#a6aa8842178b5c67d709bca787a285301',1,'ir_Metz.cpp']]], - ['kmetzbits_1920',['kMetzBits',['../IRremoteESP8266_8h.html#ad07971b39dd912f9e01ab5912c0667e6',1,'IRremoteESP8266.h']]], - ['kmetzcommandbits_1921',['kMetzCommandBits',['../ir__Metz_8cpp.html#a71d1a54f579541d040640f468dbbd47f',1,'ir_Metz.cpp']]], - ['kmetzfreq_1922',['kMetzFreq',['../ir__Metz_8cpp.html#a4970bcdab10f7ccfc6d619f417c312ab',1,'ir_Metz.cpp']]], - ['kmetzhdrmark_1923',['kMetzHdrMark',['../ir__Metz_8cpp.html#a37d8db3081bb8155738a8e0ca3fb0f69',1,'ir_Metz.cpp']]], - ['kmetzhdrspace_1924',['kMetzHdrSpace',['../ir__Metz_8cpp.html#a0692936979b5453e9a3baf867ec8ed0e',1,'ir_Metz.cpp']]], - ['kmetzminrepeat_1925',['kMetzMinRepeat',['../IRremoteESP8266_8h.html#a06aa5d85cd9b325024d79ec9af9e30e4',1,'IRremoteESP8266.h']]], - ['kmetzonespace_1926',['kMetzOneSpace',['../ir__Metz_8cpp.html#a397415b944f0be2a3b87c6c8eaeddda0',1,'ir_Metz.cpp']]], - ['kmetzzerospace_1927',['kMetzZeroSpace',['../ir__Metz_8cpp.html#ac5eb86e56a2df05a02e1581d0f8595c5',1,'ir_Metz.cpp']]], - ['kmiddle_1928',['kMiddle',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()']]], - ['kmiddlestr_1929',['kMiddleStr',['../IRtext_8cpp.html#a536f05d84867cfae601d4c1a2312d755',1,'kMiddleStr(): IRtext.cpp'],['../IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad',1,'kMiddleStr(): IRtext.cpp']]], - ['kmidea24bits_1930',['kMidea24Bits',['../IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14',1,'IRremoteESP8266.h']]], - ['kmidea24mingap_1931',['kMidea24MinGap',['../ir__Midea_8cpp.html#abfee73cafcc017c4742893908200dffc',1,'ir_Midea.cpp']]], - ['kmidea24minrepeat_1932',['kMidea24MinRepeat',['../IRremoteESP8266_8h.html#a8ed4bb62818fc64e4c4b60ef1094059e',1,'IRremoteESP8266.h']]], - ['kmideaacauto_1933',['kMideaACAuto',['../ir__Midea_8h.html#a379f580c4d1832a62fe49d66f7c13af6',1,'ir_Midea.h']]], - ['kmideaaccool_1934',['kMideaACCool',['../ir__Midea_8h.html#a94b1b18f6aa9c5010699ea9bfcc89b21',1,'ir_Midea.h']]], - ['kmideaacdry_1935',['kMideaACDry',['../ir__Midea_8h.html#a88c2d215406e337b437b99a04c4ca6c4',1,'ir_Midea.h']]], - ['kmideaacfan_1936',['kMideaACFan',['../ir__Midea_8h.html#ac92dd372bb18d43aea73d5ec511e1290',1,'ir_Midea.h']]], - ['kmideaacfanauto_1937',['kMideaACFanAuto',['../ir__Midea_8h.html#a334a64f653b141d67ffda2eca2a9851f',1,'ir_Midea.h']]], - ['kmideaacfanhigh_1938',['kMideaACFanHigh',['../ir__Midea_8h.html#a9c177aff562a19f32d6cf010704ac681',1,'ir_Midea.h']]], - ['kmideaacfanlow_1939',['kMideaACFanLow',['../ir__Midea_8h.html#a90ebe3812e8b554798a2083ddfe9fdff',1,'ir_Midea.h']]], - ['kmideaacfanmed_1940',['kMideaACFanMed',['../ir__Midea_8h.html#a9406c8d9ad79e6a121a29cd5455e8e7d',1,'ir_Midea.h']]], - ['kmideaacheat_1941',['kMideaACHeat',['../ir__Midea_8h.html#aa0fb74d8406327a9510f0efa8a16a488',1,'ir_Midea.h']]], - ['kmideaacmaxsensortempc_1942',['kMideaACMaxSensorTempC',['../ir__Midea_8h.html#a784d183233c97b36f18564c3079fa7df',1,'ir_Midea.h']]], - ['kmideaacmaxsensortempf_1943',['kMideaACMaxSensorTempF',['../ir__Midea_8h.html#a7255c3b9cc882762e015e23512cabc2b',1,'ir_Midea.h']]], - ['kmideaacmaxtempc_1944',['kMideaACMaxTempC',['../ir__Midea_8h.html#a0cccc3093cffabe1e512f298c04b3ba1',1,'ir_Midea.h']]], - ['kmideaacmaxtempf_1945',['kMideaACMaxTempF',['../ir__Midea_8h.html#ac7306c86080e934055d5be9728c91629',1,'ir_Midea.h']]], - ['kmideaacminsensortempc_1946',['kMideaACMinSensorTempC',['../ir__Midea_8h.html#afac831019875d12925c451bf77222a9e',1,'ir_Midea.h']]], - ['kmideaacminsensortempf_1947',['kMideaACMinSensorTempF',['../ir__Midea_8h.html#aae0e3970c0c9e9798797bb8a6b5cc2cc',1,'ir_Midea.h']]], - ['kmideaacmintempc_1948',['kMideaACMinTempC',['../ir__Midea_8h.html#ae849eb79db6c077d617283154edade84',1,'ir_Midea.h']]], - ['kmideaacmintempf_1949',['kMideaACMinTempF',['../ir__Midea_8h.html#a0b0bdf519164f793a129d0e32152069a',1,'ir_Midea.h']]], - ['kmideaacsensortempontimeroff_1950',['kMideaACSensorTempOnTimerOff',['../ir__Midea_8h.html#a009632051bf4eb07bf538df4dd88e395',1,'ir_Midea.h']]], - ['kmideaacswingvstep_1951',['kMideaACSwingVStep',['../ir__Midea_8h.html#a040f6f438909ede82e7c1cf6963a302e',1,'ir_Midea.h']]], - ['kmideaactimeroff_1952',['kMideaACTimerOff',['../ir__Midea_8h.html#aeca8c17c8b25199756e3decc283c1525',1,'ir_Midea.h']]], - ['kmideaactoggleecono_1953',['kMideaACToggleEcono',['../ir__Midea_8h.html#afae5d72469e092300eb740d696b27c2b',1,'ir_Midea.h']]], - ['kmideaactogglelight_1954',['kMideaACToggleLight',['../ir__Midea_8h.html#a76d6884a5bd3b8bfc72025f424820ce3',1,'ir_Midea.h']]], - ['kmideaactoggleswingv_1955',['kMideaACToggleSwingV',['../ir__Midea_8h.html#a5420b72289d3ae99a6dbc5c94914c473',1,'ir_Midea.h']]], - ['kmideaactoggleturbo_1956',['kMideaACToggleTurbo',['../ir__Midea_8h.html#a50f88772bb6bf8a4fd239cd6ca1f7e24',1,'ir_Midea.h']]], - ['kmideaactypecommand_1957',['kMideaACTypeCommand',['../ir__Midea_8h.html#a6df81f61bed8016ef5cad9d7a3bc89ba',1,'ir_Midea.h']]], - ['kmideaactypefollow_1958',['kMideaACTypeFollow',['../ir__Midea_8h.html#a0837f838d5b48d577a0941a1eab51bb2',1,'ir_Midea.h']]], - ['kmideaactypespecial_1959',['kMideaACTypeSpecial',['../ir__Midea_8h.html#af6ee12e87e831016f159aa2a480af8aa',1,'ir_Midea.h']]], - ['kmideabitmark_1960',['kMideaBitMark',['../ir__Midea_8cpp.html#a39dc2d03456f67418519dc0f5efde7e0',1,'ir_Midea.cpp']]], - ['kmideabitmarkticks_1961',['kMideaBitMarkTicks',['../ir__Midea_8cpp.html#ac4d9b1460516aa19913b5bd328c1e176',1,'ir_Midea.cpp']]], - ['kmideabits_1962',['kMideaBits',['../IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239',1,'IRremoteESP8266.h']]], - ['kmideahdrmark_1963',['kMideaHdrMark',['../ir__Midea_8cpp.html#adcaa1ad6e2ba1022f3c90266f4fd0378',1,'ir_Midea.cpp']]], - ['kmideahdrmarkticks_1964',['kMideaHdrMarkTicks',['../ir__Midea_8cpp.html#af63b6cfcc5dc3e501b61c0d55d678f9e',1,'ir_Midea.cpp']]], - ['kmideahdrspace_1965',['kMideaHdrSpace',['../ir__Midea_8cpp.html#a8676eda087a85f6639b547140496c12f',1,'ir_Midea.cpp']]], - ['kmideahdrspaceticks_1966',['kMideaHdrSpaceTicks',['../ir__Midea_8cpp.html#aad99b5d8361733a9ca662735783e061c',1,'ir_Midea.cpp']]], - ['kmideamingap_1967',['kMideaMinGap',['../ir__Midea_8cpp.html#ad9ed8fb4841654fa756614862ac63be7',1,'ir_Midea.cpp']]], - ['kmideamingapticks_1968',['kMideaMinGapTicks',['../ir__Midea_8cpp.html#accd4e69e8fe0957ba013b97879fb1120',1,'ir_Midea.cpp']]], - ['kmideaminrepeat_1969',['kMideaMinRepeat',['../IRremoteESP8266_8h.html#aa8876e8e177b8e71154f8cfb42b19160',1,'IRremoteESP8266.h']]], - ['kmideaonespace_1970',['kMideaOneSpace',['../ir__Midea_8cpp.html#aabe187743f36e664c6069b004e9a82f7',1,'ir_Midea.cpp']]], - ['kmideaonespaceticks_1971',['kMideaOneSpaceTicks',['../ir__Midea_8cpp.html#a2cf0d5df2e5a3d7b1d24fd25ae3d7453',1,'ir_Midea.cpp']]], - ['kmideatick_1972',['kMideaTick',['../ir__Midea_8cpp.html#a878185258a4174978b072ac36aa377e2',1,'ir_Midea.cpp']]], - ['kmideatolerance_1973',['kMideaTolerance',['../ir__Midea_8cpp.html#a55553c3b8e7997fb1257ac2a37a929b6',1,'ir_Midea.cpp']]], - ['kmideazerospace_1974',['kMideaZeroSpace',['../ir__Midea_8cpp.html#a107d1d062e8475b84ec4ab548c3f01ef',1,'ir_Midea.cpp']]], - ['kmideazerospaceticks_1975',['kMideaZeroSpaceTicks',['../ir__Midea_8cpp.html#acd6580988c12ef5614727dd4d1b4c92d',1,'ir_Midea.cpp']]], - ['kmidstr_1976',['kMidStr',['../IRtext_8cpp.html#afd827d424c0bfdcc34b3607440fd2652',1,'kMidStr(): IRtext.cpp'],['../IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196',1,'kMidStr(): IRtext.cpp']]], - ['kmilesminrepeat_1977',['kMilesMinRepeat',['../IRremoteESP8266_8h.html#aa92b00aa3423473fc42766d369ff99ad',1,'IRremoteESP8266.h']]], - ['kmilestag2hdrmark_1978',['kMilesTag2HdrMark',['../ir__MilesTag2_8cpp.html#af5598d2d156a1db3125f0e8a397cd137',1,'ir_MilesTag2.cpp']]], - ['kmilestag2msgbits_1979',['kMilesTag2MsgBits',['../IRremoteESP8266_8h.html#a09f5246478103197630f269ccb3b8c40',1,'IRremoteESP8266.h']]], - ['kmilestag2msgmask_1980',['kMilesTag2MsgMask',['../ir__MilesTag2_8cpp.html#ae92d8fa6c1c2e2320feb545a47aa3107',1,'ir_MilesTag2.cpp']]], - ['kmilestag2msgterminator_1981',['kMilesTag2MsgTerminator',['../ir__MilesTag2_8cpp.html#ab61102a594ad830baea09c17bb585f6d',1,'ir_MilesTag2.cpp']]], - ['kmilestag2onemark_1982',['kMilesTag2OneMark',['../ir__MilesTag2_8cpp.html#add084d40b9b206e86497b565f558c968',1,'ir_MilesTag2.cpp']]], - ['kmilestag2rptlength_1983',['kMilesTag2RptLength',['../ir__MilesTag2_8cpp.html#aa87dd4bd7d51c91df882f161a548de0b',1,'ir_MilesTag2.cpp']]], - ['kmilestag2shotbits_1984',['kMilesTag2ShotBits',['../IRremoteESP8266_8h.html#ae29b9f5dd6db067c17917417a3524905',1,'IRremoteESP8266.h']]], - ['kmilestag2shotmask_1985',['kMilesTag2ShotMask',['../ir__MilesTag2_8cpp.html#a4f436018ecf899050cc2da2d5a04f7c0',1,'ir_MilesTag2.cpp']]], - ['kmilestag2space_1986',['kMilesTag2Space',['../ir__MilesTag2_8cpp.html#aebc0f5dd66afa1556b25d9874a138b9d',1,'ir_MilesTag2.cpp']]], - ['kmilestag2stdduty_1987',['kMilesTag2StdDuty',['../ir__MilesTag2_8cpp.html#ada2b524ac46dda1c888fcd44a2929ce9',1,'ir_MilesTag2.cpp']]], - ['kmilestag2stdfreq_1988',['kMilesTag2StdFreq',['../ir__MilesTag2_8cpp.html#a3d6e6059094b8579e2344488f8b962fe',1,'ir_MilesTag2.cpp']]], - ['kmilestag2zeromark_1989',['kMilesTag2ZeroMark',['../ir__MilesTag2_8cpp.html#acceb49cb744e69d73c13ca234b300392',1,'ir_MilesTag2.cpp']]], - ['kmin_1990',['kMin',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a8fbc2f6c44a6d70550df79903eb57d48',1,'stdAc']]], - ['kminimumstr_1991',['kMinimumStr',['../IRtext_8cpp.html#acbd869e5978b6fee053d33d8cf21e11a',1,'kMinimumStr(): IRtext.cpp'],['../IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607',1,'kMinimumStr(): IRtext.cpp']]], - ['kminstr_1992',['kMinStr',['../IRtext_8cpp.html#a2b0c7369c1a93b8a7d5a87bf37fcee34',1,'kMinStr(): IRtext.cpp'],['../IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8',1,'kMinStr(): IRtext.cpp']]], - ['kminutesstr_1993',['kMinutesStr',['../IRtext_8cpp.html#a1c05b3e6af04586a0060c58979df002f',1,'kMinutesStr(): IRtext.cpp'],['../IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38',1,'kMinutesStr(): IRtext.cpp']]], - ['kminutestr_1994',['kMinuteStr',['../IRtext_8cpp.html#acab620931ba510a7bc395bad59169099',1,'kMinuteStr(): IRtext.cpp'],['../IRtext_8h.html#a54df015b1adadb211a30f826999c78f6',1,'kMinuteStr(): IRtext.cpp']]], - ['kmiragebitmark_1995',['kMirageBitMark',['../ir__Mirage_8cpp.html#a9ef6b7fd36c8457163384f5a5adec60a',1,'ir_Mirage.cpp']]], - ['kmiragebits_1996',['kMirageBits',['../IRremoteESP8266_8h.html#a700032ac17f14dc6d2782e141ce058f0',1,'IRremoteESP8266.h']]], - ['kmiragefreq_1997',['kMirageFreq',['../ir__Mirage_8cpp.html#aa2af21dba41dc6952e7bb98ba21a9cf0',1,'ir_Mirage.cpp']]], - ['kmiragegap_1998',['kMirageGap',['../ir__Mirage_8cpp.html#a06d54b8d7c95a5a913c87289b6ed5b43',1,'ir_Mirage.cpp']]], - ['kmiragehdrmark_1999',['kMirageHdrMark',['../ir__Mirage_8cpp.html#ad03f01d5212781babcc1f6664866e4df',1,'ir_Mirage.cpp']]], - ['kmiragehdrspace_2000',['kMirageHdrSpace',['../ir__Mirage_8cpp.html#a20c2e5c158c5f38403b0cf80fa25fd99',1,'ir_Mirage.cpp']]], - ['kmirageminrepeat_2001',['kMirageMinRepeat',['../IRremoteESP8266_8h.html#a86283c34cf9991bf8bfc29ee089a6a21',1,'IRremoteESP8266.h']]], - ['kmirageonespace_2002',['kMirageOneSpace',['../ir__Mirage_8cpp.html#af90d7f7221eedb4369fcd77142f65b51',1,'ir_Mirage.cpp']]], - ['kmiragestatelength_2003',['kMirageStateLength',['../IRremoteESP8266_8h.html#ab3b6bee4c5f483b4312a4b6eb5fcb146',1,'IRremoteESP8266.h']]], - ['kmiragezerospace_2004',['kMirageZeroSpace',['../ir__Mirage_8cpp.html#aeb32da61046362b4a2cbf366264dbd8d',1,'ir_Mirage.cpp']]], - ['kmitsubishi112auto_2005',['kMitsubishi112Auto',['../ir__Mitsubishi_8h.html#a6e38f06ff78e3406a4f2cf1e1b453402',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112bitmark_2006',['kMitsubishi112BitMark',['../ir__Mitsubishi_8cpp.html#aef96bbd77d5bd66ed220840c09f54c37',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112bits_2007',['kMitsubishi112Bits',['../IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8',1,'IRremoteESP8266.h']]], - ['kmitsubishi112cool_2008',['kMitsubishi112Cool',['../ir__Mitsubishi_8h.html#aa9d1a63a8a275cda1794628f8d516963',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112dry_2009',['kMitsubishi112Dry',['../ir__Mitsubishi_8h.html#a4a3023d0342003b7947b19c9c5c25fb3',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanlow_2010',['kMitsubishi112FanLow',['../ir__Mitsubishi_8h.html#a4b8d6d04bb75ed98f6ed5bdff7472f50',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmax_2011',['kMitsubishi112FanMax',['../ir__Mitsubishi_8h.html#a5a3e7c72ed85864b34f8ee298b3adc49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmed_2012',['kMitsubishi112FanMed',['../ir__Mitsubishi_8h.html#aa8a81057eeccbf528962b31a197b0319',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmin_2013',['kMitsubishi112FanMin',['../ir__Mitsubishi_8h.html#ad8b101130e781d30b5d4072b3c514c78',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanquiet_2014',['kMitsubishi112FanQuiet',['../ir__Mitsubishi_8h.html#addcf7a99c5ba2f4510754d22a4c0760f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112gap_2015',['kMitsubishi112Gap',['../ir__Mitsubishi_8cpp.html#ab24cc7d395c1620b9519b5d0ce2a2023',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmark_2016',['kMitsubishi112HdrMark',['../ir__Mitsubishi_8cpp.html#a3082567d58d6f8e6ef26714ff23f3728',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmarktolerance_2017',['kMitsubishi112HdrMarkTolerance',['../ir__Mitsubishi_8cpp.html#a288931e01f8cffa1917fb7bc59710e20',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrspace_2018',['kMitsubishi112HdrSpace',['../ir__Mitsubishi_8cpp.html#a7b35ecbbc94f7ef622b20f21f83c0fba',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112heat_2019',['kMitsubishi112Heat',['../ir__Mitsubishi_8h.html#a260b6883e9433b466abf31618b1c4015',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112maxtemp_2020',['kMitsubishi112MaxTemp',['../ir__Mitsubishi_8h.html#afd968ea297ef8856b7266a8cc6e1bba0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112minrepeat_2021',['kMitsubishi112MinRepeat',['../IRremoteESP8266_8h.html#a6bba58bb0f33feb9a6dfd20637d01d13',1,'IRremoteESP8266.h']]], - ['kmitsubishi112mintemp_2022',['kMitsubishi112MinTemp',['../ir__Mitsubishi_8h.html#acea288a8911a540cb9602d057eccb2a6',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112onespace_2023',['kMitsubishi112OneSpace',['../ir__Mitsubishi_8cpp.html#a8dd0d824826a7da007e78741015d418a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112statelength_2024',['kMitsubishi112StateLength',['../IRremoteESP8266_8h.html#a5ff0437b26e325bc2516a3e63c7ffe76',1,'IRremoteESP8266.h']]], - ['kmitsubishi112swinghauto_2025',['kMitsubishi112SwingHAuto',['../ir__Mitsubishi_8h.html#ab55e72c6d2b407868cda075efb24ac92',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleft_2026',['kMitsubishi112SwingHLeft',['../ir__Mitsubishi_8h.html#a8299b42b0972bda8a4bc4f32527c33e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleftmax_2027',['kMitsubishi112SwingHLeftMax',['../ir__Mitsubishi_8h.html#a48346e97056af670454bc77a64b904bc',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghmiddle_2028',['kMitsubishi112SwingHMiddle',['../ir__Mitsubishi_8h.html#a7adcab7d152d84adef2059339de4bb40',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghright_2029',['kMitsubishi112SwingHRight',['../ir__Mitsubishi_8h.html#a76cf277572a2b628d4a5353186ca2522',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghrightmax_2030',['kMitsubishi112SwingHRightMax',['../ir__Mitsubishi_8h.html#a1ff73f603b6e32075cbc9253d3090b49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghwide_2031',['kMitsubishi112SwingHWide',['../ir__Mitsubishi_8h.html#afab80db45769ab2957afc0e4799b46e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvauto_2032',['kMitsubishi112SwingVAuto',['../ir__Mitsubishi_8h.html#a1e16b172e864a74b426b1f823770cdaa',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhigh_2033',['kMitsubishi112SwingVHigh',['../ir__Mitsubishi_8h.html#ab6e345e609d72f9ed903e30f3aa9a26f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhighest_2034',['kMitsubishi112SwingVHighest',['../ir__Mitsubishi_8h.html#a1cb8c62990dfb98a8ea228ad59cd88e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlow_2035',['kMitsubishi112SwingVLow',['../ir__Mitsubishi_8h.html#a515bea322889f619d64ae96c37eaba72',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlowest_2036',['kMitsubishi112SwingVLowest',['../ir__Mitsubishi_8h.html#ac4dd729a11e3ece244df6b1ddc9250f8',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvmiddle_2037',['kMitsubishi112SwingVMiddle',['../ir__Mitsubishi_8h.html#a0ae62480999dc4cf8a223b59938a0d68',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112zerospace_2038',['kMitsubishi112ZeroSpace',['../ir__Mitsubishi_8cpp.html#ad70d1567dc2e4ea07a247f2555fc23b4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136auto_2039',['kMitsubishi136Auto',['../ir__Mitsubishi_8h.html#ae10977a0d09f4c583b03fa05720c3aed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136bitmark_2040',['kMitsubishi136BitMark',['../ir__Mitsubishi_8cpp.html#a3aa9c715088a58a8b4a97d5038dbf6d4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136bits_2041',['kMitsubishi136Bits',['../IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974',1,'IRremoteESP8266.h']]], - ['kmitsubishi136cool_2042',['kMitsubishi136Cool',['../ir__Mitsubishi_8h.html#a93332579055a07ea291b3caf9ad11944',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136dry_2043',['kMitsubishi136Dry',['../ir__Mitsubishi_8h.html#ad612c480e8664169e2b8e062d47bd8b9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fan_2044',['kMitsubishi136Fan',['../ir__Mitsubishi_8h.html#a4445944955b9017fcd6d1ae447f1b0d7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanlow_2045',['kMitsubishi136FanLow',['../ir__Mitsubishi_8h.html#af0f7177491c4cb053e6811376be956ec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmax_2046',['kMitsubishi136FanMax',['../ir__Mitsubishi_8h.html#a43a4337e20fbf4f6747a58c15213bd16',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmed_2047',['kMitsubishi136FanMed',['../ir__Mitsubishi_8h.html#a73ff7df8fe65829cfd5875dc5040dec7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmin_2048',['kMitsubishi136FanMin',['../ir__Mitsubishi_8h.html#a2623eaf6e7d2ceb20ee72faddf46569e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanquiet_2049',['kMitsubishi136FanQuiet',['../ir__Mitsubishi_8h.html#af2f7483bbb99216614e01dd5aedc35d5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136gap_2050',['kMitsubishi136Gap',['../ir__Mitsubishi_8cpp.html#a3f9e0708bbe8ed3ff98a563c3ff1af2b',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrmark_2051',['kMitsubishi136HdrMark',['../ir__Mitsubishi_8cpp.html#a49c54ff757d070de54e3739b775bea00',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrspace_2052',['kMitsubishi136HdrSpace',['../ir__Mitsubishi_8cpp.html#a1ddd09e423c427b3956298c20725188a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136heat_2053',['kMitsubishi136Heat',['../ir__Mitsubishi_8h.html#a932f074e9348d35cea119c8141eeb7f2',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136maxtemp_2054',['kMitsubishi136MaxTemp',['../ir__Mitsubishi_8h.html#a2db420b28003dc3e05bf1c86830c61ed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136minrepeat_2055',['kMitsubishi136MinRepeat',['../IRremoteESP8266_8h.html#a448bd7af5fdab67fb40901a3d6efed21',1,'IRremoteESP8266.h']]], - ['kmitsubishi136mintemp_2056',['kMitsubishi136MinTemp',['../ir__Mitsubishi_8h.html#a5e2e5783d33f927f941271a44d11434c',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136onespace_2057',['kMitsubishi136OneSpace',['../ir__Mitsubishi_8cpp.html#a9a0cfee8b6ea94d3f798d53d30c99d5f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136powerbyte_2058',['kMitsubishi136PowerByte',['../ir__Mitsubishi_8h.html#aca06b9d066d3f1a322bbb0f3d1a874a7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136statelength_2059',['kMitsubishi136StateLength',['../IRremoteESP8266_8h.html#a01adbe4e1afb2ba26a5a60bf5b0b42f6',1,'IRremoteESP8266.h']]], - ['kmitsubishi136swingvauto_2060',['kMitsubishi136SwingVAuto',['../ir__Mitsubishi_8h.html#a828c2cc017cb7d00872137464d2119ae',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhigh_2061',['kMitsubishi136SwingVHigh',['../ir__Mitsubishi_8h.html#a319b36df23511aba8fb16b13eda9333b',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhighest_2062',['kMitsubishi136SwingVHighest',['../ir__Mitsubishi_8h.html#a5bd1dbb97df91dfec0f9493120ea1269',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlow_2063',['kMitsubishi136SwingVLow',['../ir__Mitsubishi_8h.html#a1ba4f3f7eb75bb54a752cfb11f196af0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlowest_2064',['kMitsubishi136SwingVLowest',['../ir__Mitsubishi_8h.html#ab0701f0127b07780066040bc08e46a2e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136zerospace_2065',['kMitsubishi136ZeroSpace',['../ir__Mitsubishi_8cpp.html#afaf1eca1169f492dcdd8a7266756c827',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2bitmark_2066',['kMitsubishi2BitMark',['../ir__Mitsubishi_8cpp.html#a8b0e87a15c51c3b62c14b4e7a071207f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrmark_2067',['kMitsubishi2HdrMark',['../ir__Mitsubishi_8cpp.html#a2d838e748f1f69165fb6b672955ea95e',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrspace_2068',['kMitsubishi2HdrSpace',['../ir__Mitsubishi_8cpp.html#acd8994a08389c8d874afcbb8eb9c0861',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2mingap_2069',['kMitsubishi2MinGap',['../ir__Mitsubishi_8cpp.html#a7fa283a14968b582123a474c86a6fde9',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2onespace_2070',['kMitsubishi2OneSpace',['../ir__Mitsubishi_8cpp.html#aeee614cef3e95f661dca95b344edcf64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2zerospace_2071',['kMitsubishi2ZeroSpace',['../ir__Mitsubishi_8cpp.html#a665522ccd10f4c9fba39e3f8f8a5cb95',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacauto_2072',['kMitsubishiAcAuto',['../ir__Mitsubishi_8h.html#a1fdbdc0906594e0efebbd05110877000',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacbitmark_2073',['kMitsubishiAcBitMark',['../ir__Mitsubishi_8cpp.html#a3787c48ffff208ef964886efab7e17ca',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacbits_2074',['kMitsubishiACBits',['../IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b',1,'IRremoteESP8266.h']]], - ['kmitsubishiaccool_2075',['kMitsubishiAcCool',['../ir__Mitsubishi_8h.html#a434455f6c76f0ca354b01e6a8a6479e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacdry_2076',['kMitsubishiAcDry',['../ir__Mitsubishi_8h.html#a9875c4b91a1b155b5f2e12370c33e031',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacextratolerance_2077',['kMitsubishiAcExtraTolerance',['../ir__Mitsubishi_8cpp.html#a98a0e4182311d584d4de4632eb491f04',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacfanauto_2078',['kMitsubishiAcFanAuto',['../ir__Mitsubishi_8h.html#a302cfd0468875cff23c69f71c392ad36',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanmax_2079',['kMitsubishiAcFanMax',['../ir__Mitsubishi_8h.html#abbc2b87dfc6b2364d065f66f4d3e540c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanquiet_2080',['kMitsubishiAcFanQuiet',['../ir__Mitsubishi_8h.html#a90799250620dec05385b9e81cfcb83af',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanrealmax_2081',['kMitsubishiAcFanRealMax',['../ir__Mitsubishi_8h.html#aa28f81fbd686adb082786e7cda9a17fc',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfansilent_2082',['kMitsubishiAcFanSilent',['../ir__Mitsubishi_8h.html#a731206548afa4f2672a78dae677f6b44',1,'ir_Mitsubishi.h']]], - ['kmitsubishiachdrmark_2083',['kMitsubishiAcHdrMark',['../ir__Mitsubishi_8cpp.html#a11fcb08ce6bf9fa5fc50ca0e5c7d2d64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiachdrspace_2084',['kMitsubishiAcHdrSpace',['../ir__Mitsubishi_8cpp.html#af0af560129a4666aeba1a4a9ab59e271',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacheat_2085',['kMitsubishiAcHeat',['../ir__Mitsubishi_8h.html#a6107df195ecf54ec4ef97b5ab82e911c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacmaxtemp_2086',['kMitsubishiAcMaxTemp',['../ir__Mitsubishi_8h.html#aa7178f9ba06fb137af022e629ebfabc3',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacminrepeat_2087',['kMitsubishiACMinRepeat',['../IRremoteESP8266_8h.html#a376653a421df42d889ac3b2a071de58b',1,'IRremoteESP8266.h']]], - ['kmitsubishiacmintemp_2088',['kMitsubishiAcMinTemp',['../ir__Mitsubishi_8h.html#ad9d7413138205abef46942a2144b9e98',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacnotimer_2089',['kMitsubishiAcNoTimer',['../ir__Mitsubishi_8h.html#a0f5da97478cd6cdf2ffab161657e4ab6',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaconespace_2090',['kMitsubishiAcOneSpace',['../ir__Mitsubishi_8cpp.html#abdf26b381c5288556257fabf43458775',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacrptmark_2091',['kMitsubishiAcRptMark',['../ir__Mitsubishi_8cpp.html#a541d764aef906909a1a0d40466567c92',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacrptspace_2092',['kMitsubishiAcRptSpace',['../ir__Mitsubishi_8cpp.html#a4b120db1bd34c62778597abf05092d0a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacstartstoptimer_2093',['kMitsubishiAcStartStopTimer',['../ir__Mitsubishi_8h.html#aecbdc43fb4bd199c47cb5125816eab59',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstarttimer_2094',['kMitsubishiAcStartTimer',['../ir__Mitsubishi_8h.html#a4107cbc35f18204f46adb57b0fd0f09c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstatelength_2095',['kMitsubishiACStateLength',['../IRremoteESP8266_8h.html#a7d0d6dd6d5741f91a1afb641f11d9bc5',1,'IRremoteESP8266.h']]], - ['kmitsubishiacstoptimer_2096',['kMitsubishiAcStopTimer',['../ir__Mitsubishi_8h.html#a5e59039d523d15b145aa87222d52f2bf',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneauto_2097',['kMitsubishiAcVaneAuto',['../ir__Mitsubishi_8h.html#a1caff28ea3678cc5f655fc7147c5a15e',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneautomove_2098',['kMitsubishiAcVaneAutoMove',['../ir__Mitsubishi_8h.html#a2dc0b1ff66ffc21f626d7d8894a31fbb',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanehigh_2099',['kMitsubishiAcVaneHigh',['../ir__Mitsubishi_8h.html#a5f3d8906d4e1ddad1cc569f276f428d2',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanehighest_2100',['kMitsubishiAcVaneHighest',['../ir__Mitsubishi_8h.html#a8b587143d7fb6c766437d3257442c4cd',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanelow_2101',['kMitsubishiAcVaneLow',['../ir__Mitsubishi_8h.html#acd4f01209522f1cf5db3662a7c5e9df5',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanelowest_2102',['kMitsubishiAcVaneLowest',['../ir__Mitsubishi_8h.html#ae2cada87838e0f21886409cde4ef97e3',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanemiddle_2103',['kMitsubishiAcVaneMiddle',['../ir__Mitsubishi_8h.html#a2345713f7d81fb679e2af44fa8475945',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneswing_2104',['kMitsubishiAcVaneSwing',['../ir__Mitsubishi_8h.html#a0831abb1415db21ee9db0973b19f26fd',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneauto_2105',['kMitsubishiAcWideVaneAuto',['../ir__Mitsubishi_8h.html#a2081e2b8eb778e15b7d9f2f0f332c012',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneleft_2106',['kMitsubishiAcWideVaneLeft',['../ir__Mitsubishi_8h.html#a811260dcbb4aebb11f0ec1e2a7d0548b',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneleftmax_2107',['kMitsubishiAcWideVaneLeftMax',['../ir__Mitsubishi_8h.html#adb2917f8ccb3a6a4d72a07913ea4a9d7',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevanemiddle_2108',['kMitsubishiAcWideVaneMiddle',['../ir__Mitsubishi_8h.html#ab35fe20c0aae6c3c23766b2d1ae8834e',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneright_2109',['kMitsubishiAcWideVaneRight',['../ir__Mitsubishi_8h.html#a5a315b92c684841eeb4bc97603979931',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevanerightmax_2110',['kMitsubishiAcWideVaneRightMax',['../ir__Mitsubishi_8h.html#ab37f3da432a2561030bbc3ccbed3e3b2',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevanewide_2111',['kMitsubishiAcWideVaneWide',['../ir__Mitsubishi_8h.html#a64714abaff784b87d326c7127674ad16',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaczerospace_2112',['kMitsubishiAcZeroSpace',['../ir__Mitsubishi_8cpp.html#a9481515c349154bbb6f56cec2712ba85',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmark_2113',['kMitsubishiBitMark',['../ir__Mitsubishi_8cpp.html#a82c8e081b172080df14bdd6e3e6eb608',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmarkticks_2114',['kMitsubishiBitMarkTicks',['../ir__Mitsubishi_8cpp.html#a6daf88606f40b13bce698c73d00f5faf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibits_2115',['kMitsubishiBits',['../IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152bits_2116',['kMitsubishiHeavy152Bits',['../IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152fanauto_2117',['kMitsubishiHeavy152FanAuto',['../ir__MitsubishiHeavy_8h.html#ae1739c1b5cd00b28a06dfd96413570a8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanecono_2118',['kMitsubishiHeavy152FanEcono',['../ir__MitsubishiHeavy_8h.html#acf0522589438103f805889e980259eb8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanhigh_2119',['kMitsubishiHeavy152FanHigh',['../ir__MitsubishiHeavy_8h.html#a48881ddd596b6945d04465b3f7a9bee6',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanlow_2120',['kMitsubishiHeavy152FanLow',['../ir__MitsubishiHeavy_8h.html#acff7254b2ced32550ec9305dbaac3d95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmax_2121',['kMitsubishiHeavy152FanMax',['../ir__MitsubishiHeavy_8h.html#aa1e9a41137a7dd65fc049ae41856795f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmed_2122',['kMitsubishiHeavy152FanMed',['../ir__MitsubishiHeavy_8h.html#ac432324a30abcc0e664cf0ff8e974516',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanturbo_2123',['kMitsubishiHeavy152FanTurbo',['../ir__MitsubishiHeavy_8h.html#a7665d1ecb52afabd0dd951f2ab54e59b',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152minrepeat_2124',['kMitsubishiHeavy152MinRepeat',['../IRremoteESP8266_8h.html#a789cbb74cf332f8440a4fcdcac188741',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152statelength_2125',['kMitsubishiHeavy152StateLength',['../IRremoteESP8266_8h.html#a31d12a44c8c3a3c4533f65b8213e2086',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152swinghauto_2126',['kMitsubishiHeavy152SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac0ed87ce67ece78e2e9f2b49da5ba152',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleft_2127',['kMitsubishiHeavy152SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a1a20549b529745e913565e6d717d9f95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftmax_2128',['kMitsubishiHeavy152SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a970e6b602f5bbd4d560249966f6de6c9',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftright_2129',['kMitsubishiHeavy152SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a24c71dc5a17affb2f2d136f6846befbc',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghmiddle_2130',['kMitsubishiHeavy152SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#af1a02e21631c1efb12a01b3db065916c',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghoff_2131',['kMitsubishiHeavy152SwingHOff',['../ir__MitsubishiHeavy_8h.html#a246f8f9c9083f21ee22c2367ece2b9e2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghright_2132',['kMitsubishiHeavy152SwingHRight',['../ir__MitsubishiHeavy_8h.html#aeec05249b3958f5a1cd629b328209e05',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightleft_2133',['kMitsubishiHeavy152SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#a43ddc14cc8707aa9743519b1c54eb776',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightmax_2134',['kMitsubishiHeavy152SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#ae825ed46bf143bc6a01891a5f021c870',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvauto_2135',['kMitsubishiHeavy152SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a31c20346b5538d74b58cb1fd499b5751',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhigh_2136',['kMitsubishiHeavy152SwingVHigh',['../ir__MitsubishiHeavy_8h.html#a9ac8e39e46b43fb2276af7dd9724e3d4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhighest_2137',['kMitsubishiHeavy152SwingVHighest',['../ir__MitsubishiHeavy_8h.html#a554efbb611fd29a5d388d8195aa79993',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlow_2138',['kMitsubishiHeavy152SwingVLow',['../ir__MitsubishiHeavy_8h.html#ad9a0b57ba70d318572b77236c23830a7',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlowest_2139',['kMitsubishiHeavy152SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a02f1b980aa78b4ff314209d16bf0a6e8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvmiddle_2140',['kMitsubishiHeavy152SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#ae5c3ec8b8837dddff01d71c44a4ba813',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvoff_2141',['kMitsubishiHeavy152SwingVOff',['../ir__MitsubishiHeavy_8h.html#abb6905210a2f4021d157eeb61eaed7cd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88bits_2142',['kMitsubishiHeavy88Bits',['../IRremoteESP8266_8h.html#aa80d389140df4ab7071bfb3510b35dda',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88fanauto_2143',['kMitsubishiHeavy88FanAuto',['../ir__MitsubishiHeavy_8h.html#a607cbc27223765b3dd1f9bfd77932d0f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanecono_2144',['kMitsubishiHeavy88FanEcono',['../ir__MitsubishiHeavy_8h.html#ab5fbaaffd9e0182fc7e60252f89da2c3',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanhigh_2145',['kMitsubishiHeavy88FanHigh',['../ir__MitsubishiHeavy_8h.html#aa45b29aaa7d8df7a34dfe6308a6b6412',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanlow_2146',['kMitsubishiHeavy88FanLow',['../ir__MitsubishiHeavy_8h.html#a92f0cba1aef78e5ade01c648837e7553',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanmed_2147',['kMitsubishiHeavy88FanMed',['../ir__MitsubishiHeavy_8h.html#aade681ee8ed4c4647a997a3caad093ea',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanturbo_2148',['kMitsubishiHeavy88FanTurbo',['../ir__MitsubishiHeavy_8h.html#a29201ebd9395edb2660337ee00efa1dd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88minrepeat_2149',['kMitsubishiHeavy88MinRepeat',['../IRremoteESP8266_8h.html#ad7bccde1a9b32c962c99748fb130f711',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88statelength_2150',['kMitsubishiHeavy88StateLength',['../IRremoteESP8266_8h.html#a515e5a081c388dd4313b20ff2b6c7955',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88swingh3d_2151',['kMitsubishiHeavy88SwingH3D',['../ir__MitsubishiHeavy_8h.html#adfeb87be0ddfc6c06bbcb4a1506d3185',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghauto_2152',['kMitsubishiHeavy88SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac39f2339ab90bdc6d9c98dd6cf95fce2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleft_2153',['kMitsubishiHeavy88SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a32a76b07c6da2b09d04d985544d91af1',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftmax_2154',['kMitsubishiHeavy88SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a83340e32cff8ca09eb7596ec55a67853',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftright_2155',['kMitsubishiHeavy88SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a82f7addc930441b6e756d71ce3df24ca',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghmiddle_2156',['kMitsubishiHeavy88SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#a7a4b00b2953f2bc068d83c2618484c69',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoff_2157',['kMitsubishiHeavy88SwingHOff',['../ir__MitsubishiHeavy_8h.html#a5313aeb4115ca5a795c6ebb9871ce436',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghright_2158',['kMitsubishiHeavy88SwingHRight',['../ir__MitsubishiHeavy_8h.html#a35224e254d897b9d42e16f9dae04d984',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightleft_2159',['kMitsubishiHeavy88SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#aa913c0f1c61260c533c66aaa12dc83ac',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightmax_2160',['kMitsubishiHeavy88SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#a83c481d42999e377a2c50cacc28017b0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghsize_2161',['kMitsubishiHeavy88SwingHSize',['../ir__MitsubishiHeavy_8h.html#a46a3cb1874cf5d1875e971094527b98f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvauto_2162',['kMitsubishiHeavy88SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a65c66f030afd2795d3132b3d0be2cabe',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte5size_2163',['kMitsubishiHeavy88SwingVByte5Size',['../ir__MitsubishiHeavy_8h.html#ae0569562330f8c2af57a78764341c310',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhigh_2164',['kMitsubishiHeavy88SwingVHigh',['../ir__MitsubishiHeavy_8h.html#af99a8f0925f184f56080ddf3e9a37606',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhighest_2165',['kMitsubishiHeavy88SwingVHighest',['../ir__MitsubishiHeavy_8h.html#adc2a20b5ca5dda6417c60a1a3c321fc0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlow_2166',['kMitsubishiHeavy88SwingVLow',['../ir__MitsubishiHeavy_8h.html#adb086c76e06cbf6c8808470363da5e93',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlowest_2167',['kMitsubishiHeavy88SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a6f4af31ee9b187648c242aca2851d3ed',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvmiddle_2168',['kMitsubishiHeavy88SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#aeaddb1d80dd777c0fdd8e77661479598',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvoff_2169',['kMitsubishiHeavy88SwingVOff',['../ir__MitsubishiHeavy_8h.html#ad29f5b94153e0fc9943a2c4c02aa1f61',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyauto_2170',['kMitsubishiHeavyAuto',['../ir__MitsubishiHeavy_8h.html#a1bcb7429a89904e3b431aaaff20e35fa',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavybitmark_2171',['kMitsubishiHeavyBitMark',['../ir__MitsubishiHeavy_8cpp.html#a54b398e130a1893bdc81067c636d6001',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavycool_2172',['kMitsubishiHeavyCool',['../ir__MitsubishiHeavy_8h.html#a5d819a9a6372fde79380a6890ffd3168',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavydry_2173',['kMitsubishiHeavyDry',['../ir__MitsubishiHeavy_8h.html#a749f4d74b6cce4ad29a7ab78bb780eaf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyfan_2174',['kMitsubishiHeavyFan',['../ir__MitsubishiHeavy_8h.html#a55d9e0b9676da64dfdc888e7941665f8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavygap_2175',['kMitsubishiHeavyGap',['../ir__MitsubishiHeavy_8cpp.html#a92920bf4a95bccb9b55c623ff6dac96a',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrmark_2176',['kMitsubishiHeavyHdrMark',['../ir__MitsubishiHeavy_8cpp.html#a9b1724efadc251117733297c424e76f4',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrspace_2177',['kMitsubishiHeavyHdrSpace',['../ir__MitsubishiHeavy_8cpp.html#a9070250903c1d1653beb54ac3de27033',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyheat_2178',['kMitsubishiHeavyHeat',['../ir__MitsubishiHeavy_8h.html#a0b76a854d109dd0622155015edd31d74',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymaxtemp_2179',['kMitsubishiHeavyMaxTemp',['../ir__MitsubishiHeavy_8h.html#a49abbf34671b67eb4ebbe881444180f4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymintemp_2180',['kMitsubishiHeavyMinTemp',['../ir__MitsubishiHeavy_8h.html#afa83fd435c67699da272b883277dbb98',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyonespace_2181',['kMitsubishiHeavyOneSpace',['../ir__MitsubishiHeavy_8cpp.html#adec6564e4af2886b4c7d44343d98b9dc',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavysiglength_2182',['kMitsubishiHeavySigLength',['../ir__MitsubishiHeavy_8h.html#af08e6fc65b10821e52dd4a0073033d14',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzerospace_2183',['kMitsubishiHeavyZeroSpace',['../ir__MitsubishiHeavy_8cpp.html#a903c30cee53f76c7dc3d2fef74b6e4b2',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyzjssig_2184',['kMitsubishiHeavyZjsSig',['../ir__MitsubishiHeavy_8h.html#a01eb89bfc9d4b271a97fea566eb937ff',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzmssig_2185',['kMitsubishiHeavyZmsSig',['../ir__MitsubishiHeavy_8h.html#a18761991123d121c8d40531d07922165',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishimincommandlength_2186',['kMitsubishiMinCommandLength',['../ir__Mitsubishi_8cpp.html#ad5a6d37e755ce1faa4cdb024d2bed26a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimincommandlengthticks_2187',['kMitsubishiMinCommandLengthTicks',['../ir__Mitsubishi_8cpp.html#a4f69a50c720c7a19f0ee04d262eb5948',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingap_2188',['kMitsubishiMinGap',['../ir__Mitsubishi_8cpp.html#a66f6379ca4c0e5f03eda2d81be0a35b2',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingapticks_2189',['kMitsubishiMinGapTicks',['../ir__Mitsubishi_8cpp.html#af9e8409306344cf4cd0117f2131fc67a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiminrepeat_2190',['kMitsubishiMinRepeat',['../IRremoteESP8266_8h.html#ad88bda81b48f25d30bb5a169d3b6bcec',1,'IRremoteESP8266.h']]], - ['kmitsubishionespace_2191',['kMitsubishiOneSpace',['../ir__Mitsubishi_8cpp.html#ab3c6a50b722402633aaf26e2a4a39ff0',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishionespaceticks_2192',['kMitsubishiOneSpaceTicks',['../ir__Mitsubishi_8cpp.html#a3b12f2aa2c3b4b7ef439f86356aab9cf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishitick_2193',['kMitsubishiTick',['../ir__Mitsubishi_8cpp.html#a5197eb8b6e8de8fdfb9f056b6f7d9aa5',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospace_2194',['kMitsubishiZeroSpace',['../ir__Mitsubishi_8cpp.html#a9660ac382e9a929f6acb73a32b2a1a3c',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospaceticks_2195',['kMitsubishiZeroSpaceTicks',['../ir__Mitsubishi_8cpp.html#a18f364a0ba491236538bc9d086303d69',1,'ir_Mitsubishi.cpp']]], - ['kmodebitssize_2196',['kModeBitsSize',['../IRutils_8h.html#a5432915ab86062fceadc067a233f1627',1,'IRutils.h']]], - ['kmodelstr_2197',['kModelStr',['../IRtext_8cpp.html#a40905418e2934e539c50c6cfc2c4ffe3',1,'kModelStr(): IRtext.cpp'],['../IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186',1,'kModelStr(): IRtext.cpp']]], - ['kmodestr_2198',['kModeStr',['../IRtext_8cpp.html#a7260c578d290c33b7705cd1439d992ee',1,'kModeStr(): IRtext.cpp'],['../IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f',1,'kModeStr(): IRtext.cpp']]], - ['kmouldstr_2199',['kMouldStr',['../IRtext_8cpp.html#ac665ea584a4949565aa35629d791dbc5',1,'kMouldStr(): IRtext.cpp'],['../IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30',1,'kMouldStr(): IRtext.cpp']]], - ['kmovestr_2200',['kMoveStr',['../IRtext_8cpp.html#a321f98699209fb487287c4911a0c0200',1,'kMoveStr(): IRtext.cpp'],['../IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd',1,'kMoveStr(): IRtext.cpp']]], - ['kmultibracketsbits_2201',['kMultibracketsBits',['../IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1',1,'IRremoteESP8266.h']]], - ['kmultibracketsdefaultrepeat_2202',['kMultibracketsDefaultRepeat',['../IRremoteESP8266_8h.html#a5aa418baefd018d5facc08d3bb721fe9',1,'IRremoteESP8266.h']]], - ['kmultibracketsfooterspace_2203',['kMultibracketsFooterSpace',['../ir__Multibrackets_8cpp.html#a738cde2d6a25611bea116d04375dd28a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketsfreq_2204',['kMultibracketsFreq',['../ir__Multibrackets_8cpp.html#a38ba01a3c516f6018199aa9031a5fb4a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketshdrmark_2205',['kMultibracketsHdrMark',['../ir__Multibrackets_8cpp.html#a4eaafbf701604ceb6591b8a8b9c1d202',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstick_2206',['kMultibracketsTick',['../ir__Multibrackets_8cpp.html#aa528fbf06b8d5293d82b7efc2bcd1e9b',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstolerance_2207',['kMultibracketsTolerance',['../ir__Multibrackets_8cpp.html#a242017fb86f015cdecbf31c278c43ccc',1,'ir_Multibrackets.cpp']]], - ['kmwmdelta_2208',['kMWMDelta',['../ir__MWM_8cpp.html#a4e32849a3c799af002d1290a8a33366e',1,'ir_MWM.cpp']]], - ['kmwmexcess_2209',['kMWMExcess',['../ir__MWM_8cpp.html#ab3ff88bfc09c94e70fb74a77dbdd87d7',1,'ir_MWM.cpp']]], - ['kmwmmaxwidth_2210',['kMWMMaxWidth',['../ir__MWM_8cpp.html#a833013dcb331ebce3b885b0ce73c9eaa',1,'ir_MWM.cpp']]], - ['kmwmmingap_2211',['kMWMMinGap',['../ir__MWM_8cpp.html#a4d1f9c5442390a5ba089270c1187e917',1,'ir_MWM.cpp']]], - ['kmwmminsamples_2212',['kMWMMinSamples',['../ir__MWM_8cpp.html#ad386c922a0fcbd0c5b904b9abdd8d582',1,'ir_MWM.cpp']]], - ['kmwmtick_2213',['kMWMTick',['../ir__MWM_8cpp.html#a42c39c0101ccad1e88fa206a26447256',1,'ir_MWM.cpp']]], - ['kmwmtolerance_2214',['kMWMTolerance',['../ir__MWM_8cpp.html#ae3a91ec66f51f50810229b4adc1264fd',1,'ir_MWM.cpp']]], - ['knastr_2215',['kNAStr',['../IRtext_8cpp.html#a1757349137713553454f405872bc4dcd',1,'kNAStr(): IRtext.cpp'],['../IRtext_8h.html#a5d094344fba1715dbde69ff947775264',1,'kNAStr(): IRtext.cpp']]], - ['knecbitmark_2216',['kNecBitMark',['../ir__NEC_8h.html#ab536a800ec8f7259fe7e485ea4aea465',1,'ir_NEC.h']]], - ['knecbitmarkticks_2217',['kNecBitMarkTicks',['../ir__NEC_8h.html#a84ca60f84d64d65872b40a87819eccc1',1,'ir_NEC.h']]], - ['knecbits_2218',['kNECBits',['../IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097',1,'IRremoteESP8266.h']]], - ['knechdrmark_2219',['kNecHdrMark',['../ir__NEC_8h.html#ac727ede47d30ec76b03e4a41b48ce8c7',1,'ir_NEC.h']]], - ['knechdrmarkticks_2220',['kNecHdrMarkTicks',['../ir__NEC_8h.html#ab1486c07a09bc4324c03b1c887f5c5f7',1,'ir_NEC.h']]], - ['knechdrspace_2221',['kNecHdrSpace',['../ir__NEC_8h.html#a8279410369d6ed266502615d3ff1750b',1,'ir_NEC.h']]], - ['knechdrspaceticks_2222',['kNecHdrSpaceTicks',['../ir__NEC_8h.html#a4470ee927c0c3447bdda20c52b0f8566',1,'ir_NEC.h']]], - ['knecmincommandlength_2223',['kNecMinCommandLength',['../ir__NEC_8h.html#ac7b8d897d9e5bbf29b9b1b899a2ef7d8',1,'ir_NEC.h']]], - ['knecmincommandlengthticks_2224',['kNecMinCommandLengthTicks',['../ir__NEC_8h.html#a78e411960e643495987b1cb53268bc46',1,'ir_NEC.h']]], - ['knecmingap_2225',['kNecMinGap',['../ir__NEC_8h.html#a3d6ecc128599df57dc98e97e51b2264e',1,'ir_NEC.h']]], - ['knecmingapticks_2226',['kNecMinGapTicks',['../ir__NEC_8h.html#a2e6d938510a34aa1217a56aa51ece9f5',1,'ir_NEC.h']]], - ['kneconespace_2227',['kNecOneSpace',['../ir__NEC_8h.html#af57080e9b7513d1c8e7e781f3d502fbd',1,'ir_NEC.h']]], - ['kneconespaceticks_2228',['kNecOneSpaceTicks',['../ir__NEC_8h.html#a2f1e5412d44816f92e4b6c72e16e8b1f',1,'ir_NEC.h']]], - ['knecrptlength_2229',['kNecRptLength',['../ir__NEC_8h.html#af4ab20595dfda177fbb06dd821ea14c7',1,'ir_NEC.h']]], - ['knecrptspace_2230',['kNecRptSpace',['../ir__NEC_8h.html#a9538478446b1ae5d72c8366dd6a11673',1,'ir_NEC.h']]], - ['knecrptspaceticks_2231',['kNecRptSpaceTicks',['../ir__NEC_8h.html#a91b5296d480008a4b44c5b084756f04b',1,'ir_NEC.h']]], - ['knectick_2232',['kNecTick',['../ir__NEC_8h.html#abe1ec110798236c7b626f7efe4cc5657',1,'ir_NEC.h']]], - ['kneczerospace_2233',['kNecZeroSpace',['../ir__NEC_8h.html#a00573a6bdb348339b9898173b644b693',1,'ir_NEC.h']]], - ['kneczerospaceticks_2234',['kNecZeroSpaceTicks',['../ir__NEC_8h.html#a80f316535d761c64f1d5752ef80a65ff',1,'ir_NEC.h']]], - ['kneoclimaauto_2235',['kNeoclimaAuto',['../ir__Neoclima_8h.html#a4574742c21aae9aafaff9b10f9423006',1,'ir_Neoclima.h']]], - ['kneoclimabitmark_2236',['kNeoclimaBitMark',['../ir__Neoclima_8cpp.html#ae34236a830ec2d200575ac33fda43689',1,'ir_Neoclima.cpp']]], - ['kneoclimabits_2237',['kNeoclimaBits',['../IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f',1,'IRremoteESP8266.h']]], - ['kneoclimabutton8cheat_2238',['kNeoclimaButton8CHeat',['../ir__Neoclima_8h.html#ad337d964ff800bea5c55f1fe69dfb7ff',1,'ir_Neoclima.h']]], - ['kneoclimabuttonairflow_2239',['kNeoclimaButtonAirFlow',['../ir__Neoclima_8h.html#ab5fff838f8e5ac9ff213fc69346ffa7c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonecono_2240',['kNeoclimaButtonEcono',['../ir__Neoclima_8h.html#a3bf5508439a8af4543f95468fd32a8bb',1,'ir_Neoclima.h']]], - ['kneoclimabuttoneye_2241',['kNeoclimaButtonEye',['../ir__Neoclima_8h.html#a6cabdccd3c8d52cb2817f99454bdc884',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfanspeed_2242',['kNeoclimaButtonFanSpeed',['../ir__Neoclima_8h.html#ab41ffd863516b79b6c7e9b69e7d5a272',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfollow_2243',['kNeoclimaButtonFollow',['../ir__Neoclima_8h.html#a592017dce3bfa4ea2f0f341a818aff72',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfresh_2244',['kNeoclimaButtonFresh',['../ir__Neoclima_8h.html#a6a965f2dc7860879ccaf410405095e9c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonhold_2245',['kNeoclimaButtonHold',['../ir__Neoclima_8h.html#aada6fdb6572bd7d841de89f1d1eed3fe',1,'ir_Neoclima.h']]], - ['kneoclimabuttonion_2246',['kNeoclimaButtonIon',['../ir__Neoclima_8h.html#a05dccf1c19237d315bb78f387f8fd57f',1,'ir_Neoclima.h']]], - ['kneoclimabuttonlight_2247',['kNeoclimaButtonLight',['../ir__Neoclima_8h.html#ac66b472b31f6183f4615584561baa284',1,'ir_Neoclima.h']]], - ['kneoclimabuttonmode_2248',['kNeoclimaButtonMode',['../ir__Neoclima_8h.html#a4cfee4b0898f1504be5cbd129cd99278',1,'ir_Neoclima.h']]], - ['kneoclimabuttonpower_2249',['kNeoclimaButtonPower',['../ir__Neoclima_8h.html#a047d19978c58b35dcd6a069fce04af87',1,'ir_Neoclima.h']]], - ['kneoclimabuttonsleep_2250',['kNeoclimaButtonSleep',['../ir__Neoclima_8h.html#adcbe2a89eecf41fe1fe2b8c62428084e',1,'ir_Neoclima.h']]], - ['kneoclimabuttonswing_2251',['kNeoclimaButtonSwing',['../ir__Neoclima_8h.html#aeea180bef85a40d8c7fe3f5facf7b199',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempdown_2252',['kNeoclimaButtonTempDown',['../ir__Neoclima_8h.html#aee91f1ebdf89b6fe9f3b31937d1185a0',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempunit_2253',['kNeoclimaButtonTempUnit',['../ir__Neoclima_8h.html#ad552c7576d7f6c89b3530bcddf15d00c',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempup_2254',['kNeoclimaButtonTempUp',['../ir__Neoclima_8h.html#abb093132f77d179ab02fc4a022d55236',1,'ir_Neoclima.h']]], - ['kneoclimabuttonturbo_2255',['kNeoclimaButtonTurbo',['../ir__Neoclima_8h.html#af156d94f9e47e8b5e2e2493308cca04c',1,'ir_Neoclima.h']]], - ['kneoclimacool_2256',['kNeoclimaCool',['../ir__Neoclima_8h.html#ac5d874e5ffce72ce68176f38e780c439',1,'ir_Neoclima.h']]], - ['kneoclimadry_2257',['kNeoclimaDry',['../ir__Neoclima_8h.html#ab68ba4480e1bcb685579c5f902d0709e',1,'ir_Neoclima.h']]], - ['kneoclimafan_2258',['kNeoclimaFan',['../ir__Neoclima_8h.html#aa6166bd65d80a708d790dbf703c83ea2',1,'ir_Neoclima.h']]], - ['kneoclimafanauto_2259',['kNeoclimaFanAuto',['../ir__Neoclima_8h.html#a7885fdbc4ae3336aac74d7ee3d8c3258',1,'ir_Neoclima.h']]], - ['kneoclimafanhigh_2260',['kNeoclimaFanHigh',['../ir__Neoclima_8h.html#a57ddf91c1cbb157b3a53b1082bac2d75',1,'ir_Neoclima.h']]], - ['kneoclimafanlow_2261',['kNeoclimaFanLow',['../ir__Neoclima_8h.html#ac9031328be51a46543ebd4360aaca55a',1,'ir_Neoclima.h']]], - ['kneoclimafanmed_2262',['kNeoclimaFanMed',['../ir__Neoclima_8h.html#a11faf2a34faf44460795b50bfbdab402',1,'ir_Neoclima.h']]], - ['kneoclimafollowme_2263',['kNeoclimaFollowMe',['../ir__Neoclima_8h.html#a493c1e6b8b8909f4201cd506a1f4804a',1,'ir_Neoclima.h']]], - ['kneoclimahdrmark_2264',['kNeoclimaHdrMark',['../ir__Neoclima_8cpp.html#aa392821c0ce822a7b7d67efd202bedd5',1,'ir_Neoclima.cpp']]], - ['kneoclimahdrspace_2265',['kNeoclimaHdrSpace',['../ir__Neoclima_8cpp.html#a3714ad66d75162ccb286152b70375588',1,'ir_Neoclima.cpp']]], - ['kneoclimaheat_2266',['kNeoclimaHeat',['../ir__Neoclima_8h.html#a5a5e53801c0f8e554c391ed56404b926',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempc_2267',['kNeoclimaMaxTempC',['../ir__Neoclima_8h.html#a9333b62cef8e22e05a2fbfb566830bb6',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempf_2268',['kNeoclimaMaxTempF',['../ir__Neoclima_8h.html#a7e1b67f87fbf56b52c4ad39c4865212d',1,'ir_Neoclima.h']]], - ['kneoclimamingap_2269',['kNeoclimaMinGap',['../ir__Neoclima_8cpp.html#a0e54c73eff563f6c3ec39a0951dd3d2d',1,'ir_Neoclima.cpp']]], - ['kneoclimaminrepeat_2270',['kNeoclimaMinRepeat',['../IRremoteESP8266_8h.html#a16fc26a3ff66a66068ac9638554df847',1,'IRremoteESP8266.h']]], - ['kneoclimamintempc_2271',['kNeoclimaMinTempC',['../ir__Neoclima_8h.html#a39d700251ad835e4b36ec6e9db667703',1,'ir_Neoclima.h']]], - ['kneoclimamintempf_2272',['kNeoclimaMinTempF',['../ir__Neoclima_8h.html#ac6159ea9bbc08e115c45b4611190fe9f',1,'ir_Neoclima.h']]], - ['kneoclimaonespace_2273',['kNeoclimaOneSpace',['../ir__Neoclima_8cpp.html#a5fd5f3b7f04134190aafc65762528da0',1,'ir_Neoclima.cpp']]], - ['kneoclimastatelength_2274',['kNeoclimaStateLength',['../IRremoteESP8266_8h.html#a5a871ed6d145c5ea3d50e96600c02e31',1,'IRremoteESP8266.h']]], - ['kneoclimaswingvoff_2275',['kNeoclimaSwingVOff',['../ir__Neoclima_8h.html#ad230a8c18e6edb5709cb29033f1fd221',1,'ir_Neoclima.h']]], - ['kneoclimaswingvon_2276',['kNeoclimaSwingVOn',['../ir__Neoclima_8h.html#a7021804eb30e7a7c5b9c9ababb1b8cad',1,'ir_Neoclima.h']]], - ['kneoclimazerospace_2277',['kNeoclimaZeroSpace',['../ir__Neoclima_8cpp.html#a0b98d84da4651d8d31f8f1d84621c21e',1,'ir_Neoclima.cpp']]], - ['knibblesize_2278',['kNibbleSize',['../IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846',1,'IRutils.h']]], - ['knightstr_2279',['kNightStr',['../IRtext_8cpp.html#a01908d3c0f79bc015a699fc0576a8771',1,'kNightStr(): IRtext.cpp'],['../IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0',1,'kNightStr(): IRtext.cpp']]], - ['knikaibitmark_2280',['kNikaiBitMark',['../ir__Nikai_8cpp.html#ad665145b0ee9cc722d9fde43cbd3fd82',1,'ir_Nikai.cpp']]], - ['knikaibitmarkticks_2281',['kNikaiBitMarkTicks',['../ir__Nikai_8cpp.html#ac10d1b4c45af3ddbf3c50b85dbb0c2f0',1,'ir_Nikai.cpp']]], - ['knikaibits_2282',['kNikaiBits',['../IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40',1,'IRremoteESP8266.h']]], - ['knikaihdrmark_2283',['kNikaiHdrMark',['../ir__Nikai_8cpp.html#ae0656b931e18e6e011a7c74cfaf4384b',1,'ir_Nikai.cpp']]], - ['knikaihdrmarkticks_2284',['kNikaiHdrMarkTicks',['../ir__Nikai_8cpp.html#a11671cee9a312ece8f1c90596eddd7ac',1,'ir_Nikai.cpp']]], - ['knikaihdrspace_2285',['kNikaiHdrSpace',['../ir__Nikai_8cpp.html#ae801e20e669f3039888bf48074988b84',1,'ir_Nikai.cpp']]], - ['knikaihdrspaceticks_2286',['kNikaiHdrSpaceTicks',['../ir__Nikai_8cpp.html#a83885a2fc573f947afe5015cd2f4d953',1,'ir_Nikai.cpp']]], - ['knikaimingap_2287',['kNikaiMinGap',['../ir__Nikai_8cpp.html#ad88846eaa7559df7fb944283fd292da1',1,'ir_Nikai.cpp']]], - ['knikaimingapticks_2288',['kNikaiMinGapTicks',['../ir__Nikai_8cpp.html#afdf938a763f30e3c5e534eba269dff1f',1,'ir_Nikai.cpp']]], - ['knikaionespace_2289',['kNikaiOneSpace',['../ir__Nikai_8cpp.html#a4bb69ab22b2abcd20ffff90f9267fa43',1,'ir_Nikai.cpp']]], - ['knikaionespaceticks_2290',['kNikaiOneSpaceTicks',['../ir__Nikai_8cpp.html#a25a4d289b7fad06c31312df552ee81ab',1,'ir_Nikai.cpp']]], - ['knikaitick_2291',['kNikaiTick',['../ir__Nikai_8cpp.html#a70eb8953509420081d0a294203eeb34b',1,'ir_Nikai.cpp']]], - ['knikaizerospace_2292',['kNikaiZeroSpace',['../ir__Nikai_8cpp.html#aa9af57c5c936107b00096e16cc6f57d9',1,'ir_Nikai.cpp']]], - ['knikaizerospaceticks_2293',['kNikaiZeroSpaceTicks',['../ir__Nikai_8cpp.html#a8df777a744c018e27c6969c2109d6d79',1,'ir_Nikai.cpp']]], - ['knorepeat_2294',['kNoRepeat',['../IRremoteESP8266_8h.html#a1a49dde7ffbd753f7756cf0c9dc6d826',1,'IRremoteESP8266.h']]], - ['knostr_2295',['kNoStr',['../IRtext_8cpp.html#a07897ceb4a6607d87ef37a517908a4b5',1,'kNoStr(): IRtext.cpp'],['../IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d',1,'kNoStr(): IRtext.cpp']]], - ['knowstr_2296',['kNowStr',['../IRtext_8cpp.html#a09d8590020bcf998746528d0e50f7a20',1,'kNowStr(): IRtext.cpp'],['../IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12',1,'kNowStr(): IRtext.cpp']]], - ['koff_2297',['kOff',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444facc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()']]], - ['koffstr_2298',['kOffStr',['../IRtext_8cpp.html#a9ce19a214db45b8cff83032ffa1ccdd8',1,'kOffStr(): IRtext.cpp'],['../IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a',1,'kOffStr(): IRtext.cpp']]], - ['kofftimerstr_2299',['kOffTimerStr',['../IRtext_8cpp.html#ae5faab97b26f9e877f79f49002bbba2c',1,'kOffTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f',1,'kOffTimerStr(): IRtext.cpp']]], - ['konstr_2300',['kOnStr',['../IRtext_8cpp.html#ab3f42c8df156baa46326a57193f78c51',1,'kOnStr(): IRtext.cpp'],['../IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7',1,'kOnStr(): IRtext.cpp']]], - ['kontimerstr_2301',['kOnTimerStr',['../IRtext_8cpp.html#adaecb1b5526f2bb3a1334e816a414273',1,'kOnTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a9f355a0d834790287d95eea30b57564d',1,'kOnTimerStr(): IRtext.cpp']]], - ['koutsidequietstr_2302',['kOutsideQuietStr',['../IRtext_8cpp.html#a103f2a8a2a6d351cd8ea259de3c454ef',1,'kOutsideQuietStr(): IRtext.cpp'],['../IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c',1,'kOutsideQuietStr(): IRtext.cpp']]], - ['koutsidestr_2303',['kOutsideStr',['../IRtext_8cpp.html#a8465ee1e8b1e5dd58a9cf872c9569e01',1,'kOutsideStr(): IRtext.cpp'],['../IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0',1,'kOutsideStr(): IRtext.cpp']]], - ['kpanasonicac32auto_2304',['kPanasonicAc32Auto',['../ir__Panasonic_8h.html#a3ddd918dd9ccd97fc591a795c665f275',1,'ir_Panasonic.h']]], - ['kpanasonicac32bitmark_2305',['kPanasonicAc32BitMark',['../ir__Panasonic_8cpp.html#acfabc49966b4de99f75af1e364785338',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32bits_2306',['kPanasonicAc32Bits',['../IRremoteESP8266_8h.html#adae68c6e0ebe7d18c344d9cad5ca49f0',1,'IRremoteESP8266.h']]], - ['kpanasonicac32blockspersection_2307',['kPanasonicAc32BlocksPerSection',['../ir__Panasonic_8cpp.html#a1fac8213c4bc8555ed0f3267b0f41d5f',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32cool_2308',['kPanasonicAc32Cool',['../ir__Panasonic_8h.html#afb25de760b1210efd2b6d34ddc1dcee8',1,'ir_Panasonic.h']]], - ['kpanasonicac32dry_2309',['kPanasonicAc32Dry',['../ir__Panasonic_8h.html#a92592f6e966de10510e8547e3863445a',1,'ir_Panasonic.h']]], - ['kpanasonicac32fan_2310',['kPanasonicAc32Fan',['../ir__Panasonic_8h.html#ab18e968771c2ace0b2e053ea61a0327a',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanauto_2311',['kPanasonicAc32FanAuto',['../ir__Panasonic_8h.html#aa093ff0443bb37cecd19331b2147ddb6',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanhigh_2312',['kPanasonicAc32FanHigh',['../ir__Panasonic_8h.html#a010754f8844452de684b2d346f6beb79',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanlow_2313',['kPanasonicAc32FanLow',['../ir__Panasonic_8h.html#af395ea1be8216b63320e7669f582e399',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanmax_2314',['kPanasonicAc32FanMax',['../ir__Panasonic_8h.html#a7fa3122beae91071e2fde235a6b76da5',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanmed_2315',['kPanasonicAc32FanMed',['../ir__Panasonic_8h.html#ad43a603c7c5d6d52ec7af7b6aa7258af',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanmin_2316',['kPanasonicAc32FanMin',['../ir__Panasonic_8h.html#a3cc712e4dbf4d8ab9b60b4338a1c6831',1,'ir_Panasonic.h']]], - ['kpanasonicac32hdrmark_2317',['kPanasonicAc32HdrMark',['../ir__Panasonic_8cpp.html#a16e84fe3a68d385a51d92924a56edffe',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32hdrspace_2318',['kPanasonicAc32HdrSpace',['../ir__Panasonic_8cpp.html#a1eeb2e9362c9355ea34f6b73eded2612',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32heat_2319',['kPanasonicAc32Heat',['../ir__Panasonic_8h.html#a91581c58624da05d36e3807a4eecfd8a',1,'ir_Panasonic.h']]], - ['kpanasonicac32knowngood_2320',['kPanasonicAc32KnownGood',['../ir__Panasonic_8h.html#aeeca2ce0d19ad601e762a9f1858c2d50',1,'ir_Panasonic.h']]], - ['kpanasonicac32onespace_2321',['kPanasonicAc32OneSpace',['../ir__Panasonic_8cpp.html#aab874afd4e02b558e73ecfbc1c3b46ea',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32sectiongap_2322',['kPanasonicAc32SectionGap',['../ir__Panasonic_8cpp.html#a6e7bfebde7c0a307ce5dc6cbdb8626e0',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32sections_2323',['kPanasonicAc32Sections',['../ir__Panasonic_8cpp.html#a0108f19bc064d5bb55abb341048c298f',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32swingvauto_2324',['kPanasonicAc32SwingVAuto',['../ir__Panasonic_8h.html#a705b34ad74e271656bf8986740658321',1,'ir_Panasonic.h']]], - ['kpanasonicac32zerospace_2325',['kPanasonicAc32ZeroSpace',['../ir__Panasonic_8cpp.html#a5ec58e2129c493ebdb877f934a8af849',1,'ir_Panasonic.cpp']]], - ['kpanasonicacauto_2326',['kPanasonicAcAuto',['../ir__Panasonic_8h.html#aa7c839a4342205c384870e8a4f5ec36b',1,'ir_Panasonic.h']]], - ['kpanasonicacbits_2327',['kPanasonicAcBits',['../IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a',1,'IRremoteESP8266.h']]], - ['kpanasonicacchecksuminit_2328',['kPanasonicAcChecksumInit',['../ir__Panasonic_8h.html#a49329b4fef403696effcbcc5c8a86cd2',1,'ir_Panasonic.h']]], - ['kpanasonicaccool_2329',['kPanasonicAcCool',['../ir__Panasonic_8h.html#acfaa3d61fbb13fc6cd8d354f1c0a8dc7',1,'ir_Panasonic.h']]], - ['kpanasonicacdefaultrepeat_2330',['kPanasonicAcDefaultRepeat',['../IRremoteESP8266_8h.html#af6b7c6ad564253cb128ac92c00e86f0c',1,'IRremoteESP8266.h']]], - ['kpanasonicacdry_2331',['kPanasonicAcDry',['../ir__Panasonic_8h.html#a2d211bd2150a67819453f3220dc0cc91',1,'ir_Panasonic.h']]], - ['kpanasonicacexcess_2332',['kPanasonicAcExcess',['../ir__Panasonic_8h.html#adde8b69377faa9a4566dc15e95711257',1,'ir_Panasonic.h']]], - ['kpanasonicacfan_2333',['kPanasonicAcFan',['../ir__Panasonic_8h.html#a87e4dd423bbd1f879a9d5da31e1fea5e',1,'ir_Panasonic.h']]], - ['kpanasonicacfanauto_2334',['kPanasonicAcFanAuto',['../ir__Panasonic_8h.html#a7d4486fd68969af4f7230f12e865c698',1,'ir_Panasonic.h']]], - ['kpanasonicacfandelta_2335',['kPanasonicAcFanDelta',['../ir__Panasonic_8h.html#a2210f85a17fba2bbdfbb883e9fb57e52',1,'ir_Panasonic.h']]], - ['kpanasonicacfanhigh_2336',['kPanasonicAcFanHigh',['../ir__Panasonic_8h.html#ab19838820e1ca649c156b5f4a5d6c8cb',1,'ir_Panasonic.h']]], - ['kpanasonicacfanlow_2337',['kPanasonicAcFanLow',['../ir__Panasonic_8h.html#a222ef797cbefbff556e0ab93f23407cc',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmax_2338',['kPanasonicAcFanMax',['../ir__Panasonic_8h.html#aa4599c84d72ab9c622b642870efb9cf1',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmed_2339',['kPanasonicAcFanMed',['../ir__Panasonic_8h.html#a978004e8e2c4122fec81c5a972b842a0',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmin_2340',['kPanasonicAcFanMin',['../ir__Panasonic_8h.html#a450c7951a525817d27351fb7c8ff2df9',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmodetemp_2341',['kPanasonicAcFanModeTemp',['../ir__Panasonic_8h.html#a76543f9d81c2d109e04359f0c61dcb99',1,'ir_Panasonic.h']]], - ['kpanasonicacheat_2342',['kPanasonicAcHeat',['../ir__Panasonic_8h.html#ac37bb7dd975a9aa803edfc108a5071ed',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilterbyte_2343',['kPanasonicAcIonFilterByte',['../ir__Panasonic_8h.html#a16c946660d2ee3821dd2e30a69144a38',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilteroffset_2344',['kPanasonicAcIonFilterOffset',['../ir__Panasonic_8h.html#a5c1b18d1b834e9d46cbd29c74a1b8269',1,'ir_Panasonic.h']]], - ['kpanasonicacmaxtemp_2345',['kPanasonicAcMaxTemp',['../ir__Panasonic_8h.html#a95fe6bc5b2565bf29d1a6dcee2f0c39f',1,'ir_Panasonic.h']]], - ['kpanasonicacmessagegap_2346',['kPanasonicAcMessageGap',['../ir__Panasonic_8cpp.html#a962cde97e8d98ad32f0b59172b641d6d',1,'ir_Panasonic.cpp']]], - ['kpanasonicacmintemp_2347',['kPanasonicAcMinTemp',['../ir__Panasonic_8h.html#a7861e8477904e1a572bcf35286fd3733',1,'ir_Panasonic.h']]], - ['kpanasonicacofftimeroffset_2348',['kPanasonicAcOffTimerOffset',['../ir__Panasonic_8h.html#a477b61044f1db5c296f13a404c536046',1,'ir_Panasonic.h']]], - ['kpanasonicacontimeroffset_2349',['kPanasonicAcOnTimerOffset',['../ir__Panasonic_8h.html#a64350202f82aabfd1673f0dda4d3c13d',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfulckpoffset_2350',['kPanasonicAcPowerfulCkpOffset',['../ir__Panasonic_8h.html#aa839301a08c8e49548f497e786dbb6fa',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfuloffset_2351',['kPanasonicAcPowerfulOffset',['../ir__Panasonic_8h.html#a27e9b1af4b65830015576beed69cb27d',1,'ir_Panasonic.h']]], - ['kpanasonicacpoweroffset_2352',['kPanasonicAcPowerOffset',['../ir__Panasonic_8h.html#a9e9b3d0c77ef93ab472ce14ed1534c77',1,'ir_Panasonic.h']]], - ['kpanasonicacquietckpoffset_2353',['kPanasonicAcQuietCkpOffset',['../ir__Panasonic_8h.html#a5a3779cd6fd8d573ae14ed4a6d676dba',1,'ir_Panasonic.h']]], - ['kpanasonicacquietoffset_2354',['kPanasonicAcQuietOffset',['../ir__Panasonic_8h.html#a1ec8db8798f79dead05233ee6333700d',1,'ir_Panasonic.h']]], - ['kpanasonicacsection1length_2355',['kPanasonicAcSection1Length',['../ir__Panasonic_8cpp.html#a34c6c085d468ed4b35f814452335d334',1,'ir_Panasonic.cpp']]], - ['kpanasonicacsectiongap_2356',['kPanasonicAcSectionGap',['../ir__Panasonic_8cpp.html#a3cf28f1268e8a35da220d42deda7c456',1,'ir_Panasonic.cpp']]], - ['kpanasonicacshortbits_2357',['kPanasonicAcShortBits',['../IRremoteESP8266_8h.html#a2fd1f84669f7994bb3c235a508333c6c',1,'IRremoteESP8266.h']]], - ['kpanasonicacstatelength_2358',['kPanasonicAcStateLength',['../IRremoteESP8266_8h.html#ab21d86545b57738354e7a3b833d38f94',1,'IRremoteESP8266.h']]], - ['kpanasonicacstateshortlength_2359',['kPanasonicAcStateShortLength',['../IRremoteESP8266_8h.html#a0a6ca8c1dfa6f313421ddf268d76d8e6',1,'IRremoteESP8266.h']]], - ['kpanasonicacswinghauto_2360',['kPanasonicAcSwingHAuto',['../ir__Panasonic_8h.html#a91e2933692ad98acf054c7a69f6c2018',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullleft_2361',['kPanasonicAcSwingHFullLeft',['../ir__Panasonic_8h.html#abf1d8c53a1b69d99019c6878f9ec220d',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullright_2362',['kPanasonicAcSwingHFullRight',['../ir__Panasonic_8h.html#a0e1b7a7591a0f14b2f8be3cb222f1187',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghleft_2363',['kPanasonicAcSwingHLeft',['../ir__Panasonic_8h.html#a853f2c2922e03a975bdd11efc474fa7e',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghmiddle_2364',['kPanasonicAcSwingHMiddle',['../ir__Panasonic_8h.html#afad8a7257fc178321867f16939fff7c7',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghright_2365',['kPanasonicAcSwingHRight',['../ir__Panasonic_8h.html#a282900f1c494efdc6ee057357e624d2e',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvauto_2366',['kPanasonicAcSwingVAuto',['../ir__Panasonic_8h.html#a218e2ea8c76966105c71edcb6e46cd12',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhigh_2367',['kPanasonicAcSwingVHigh',['../ir__Panasonic_8h.html#a25c63195112c5aedc5b5bad40441c55a',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhighest_2368',['kPanasonicAcSwingVHighest',['../ir__Panasonic_8h.html#ac1cea523d6e1da08d333e0b4acec81af',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlow_2369',['kPanasonicAcSwingVLow',['../ir__Panasonic_8h.html#a3ae9b6c5581f1bfb5b31e252052a6c9d',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlowest_2370',['kPanasonicAcSwingVLowest',['../ir__Panasonic_8h.html#af269e81dae5989c33199d607adcc04a0',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvmiddle_2371',['kPanasonicAcSwingVMiddle',['../ir__Panasonic_8h.html#a5d46c8234f97e10695507b17a7483d51',1,'ir_Panasonic.h']]], - ['kpanasonicactempoffset_2372',['kPanasonicAcTempOffset',['../ir__Panasonic_8h.html#a203e0351cd53db8376312a3289503175',1,'ir_Panasonic.h']]], - ['kpanasonicactempsize_2373',['kPanasonicAcTempSize',['../ir__Panasonic_8h.html#af30649a3489a4a1dc1f655d15c00e991',1,'ir_Panasonic.h']]], - ['kpanasonicactimemax_2374',['kPanasonicAcTimeMax',['../ir__Panasonic_8h.html#a61378ccad09d1a2e900123a8cbd34858',1,'ir_Panasonic.h']]], - ['kpanasonicactimeoverflowsize_2375',['kPanasonicAcTimeOverflowSize',['../ir__Panasonic_8h.html#ad7942b5ffbb2b1f7a5d9b3719592622b',1,'ir_Panasonic.h']]], - ['kpanasonicactimesize_2376',['kPanasonicAcTimeSize',['../ir__Panasonic_8h.html#a16577844a2f5ca46e2dff076952f2963',1,'ir_Panasonic.h']]], - ['kpanasonicactimespecial_2377',['kPanasonicAcTimeSpecial',['../ir__Panasonic_8h.html#aefb20e7cdbbc27e3c0725a8660a84a28',1,'ir_Panasonic.h']]], - ['kpanasonicactolerance_2378',['kPanasonicAcTolerance',['../ir__Panasonic_8h.html#a586a655b3afd82c38588fc1b61089aa1',1,'ir_Panasonic.h']]], - ['kpanasonicbitmark_2379',['kPanasonicBitMark',['../ir__Panasonic_8cpp.html#a428cd02c5dc3dc571e495efa0707cc99',1,'ir_Panasonic.cpp']]], - ['kpanasonicbits_2380',['kPanasonicBits',['../IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7',1,'IRremoteESP8266.h']]], - ['kpanasonicckp_2381',['kPanasonicCkp',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0',1,'IRsend.h']]], - ['kpanasonicdke_2382',['kPanasonicDke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd',1,'IRsend.h']]], - ['kpanasonicendgap_2383',['kPanasonicEndGap',['../ir__Panasonic_8cpp.html#a3cb2f7a925bb8374a90e3156febabb39',1,'ir_Panasonic.cpp']]], - ['kpanasonicfreq_2384',['kPanasonicFreq',['../ir__Panasonic_8h.html#af344612d7f1c0d3f8271c312f310243e',1,'ir_Panasonic.h']]], - ['kpanasonichdrmark_2385',['kPanasonicHdrMark',['../ir__Panasonic_8cpp.html#a0d36b699fead0e229c583dae94f5e8f9',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrspace_2386',['kPanasonicHdrSpace',['../ir__Panasonic_8cpp.html#ae56b3eb80f186a63b0f69c6b4e9efce8',1,'ir_Panasonic.cpp']]], - ['kpanasonicjke_2387',['kPanasonicJke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4',1,'IRsend.h']]], - ['kpanasonicknowngoodstate_2388',['kPanasonicKnownGoodState',['../ir__Panasonic_8h.html#a88a9678f8b00efa173b800b0b8441f87',1,'ir_Panasonic.h']]], - ['kpanasoniclke_2389',['kPanasonicLke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6',1,'IRsend.h']]], - ['kpanasonicmanufacturer_2390',['kPanasonicManufacturer',['../IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47',1,'IRremoteESP8266.h']]], - ['kpanasonicmincommandlength_2391',['kPanasonicMinCommandLength',['../ir__Panasonic_8cpp.html#a5f191fff3eeb722cb03bee859a016132',1,'ir_Panasonic.cpp']]], - ['kpanasonicmingap_2392',['kPanasonicMinGap',['../ir__Panasonic_8cpp.html#a61592f3569c0ee4825cca185fb43236d',1,'ir_Panasonic.cpp']]], - ['kpanasonicnke_2393',['kPanasonicNke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790',1,'IRsend.h']]], - ['kpanasoniconespace_2394',['kPanasonicOneSpace',['../ir__Panasonic_8cpp.html#a9069f2ab94cacbd301d7615795c155b1',1,'ir_Panasonic.cpp']]], - ['kpanasonicrkr_2395',['kPanasonicRkr',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db',1,'IRsend.h']]], - ['kpanasonicunknown_2396',['kPanasonicUnknown',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4',1,'IRsend.h']]], - ['kpanasoniczerospace_2397',['kPanasonicZeroSpace',['../ir__Panasonic_8cpp.html#a43f64a8326fd2447653c81488673fd21',1,'ir_Panasonic.cpp']]], - ['kperiodoffset_2398',['kPeriodOffset',['../IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5',1,'IRsend.h']]], - ['kpioneerbitmark_2399',['kPioneerBitMark',['../ir__Pioneer_8cpp.html#a6117fd080ad88efcf943aef53dadd1ad',1,'ir_Pioneer.cpp']]], - ['kpioneerbits_2400',['kPioneerBits',['../IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b',1,'IRremoteESP8266.h']]], - ['kpioneerhdrmark_2401',['kPioneerHdrMark',['../ir__Pioneer_8cpp.html#a03c4df7d9eba6ab56df0451a18e5adbd',1,'ir_Pioneer.cpp']]], - ['kpioneerhdrspace_2402',['kPioneerHdrSpace',['../ir__Pioneer_8cpp.html#a1308ff993ce7d030bdef919d65f35e62',1,'ir_Pioneer.cpp']]], - ['kpioneermincommandlength_2403',['kPioneerMinCommandLength',['../ir__Pioneer_8cpp.html#a22cb7d70bb0eb3b0ce6c7da3631d832f',1,'ir_Pioneer.cpp']]], - ['kpioneermingap_2404',['kPioneerMinGap',['../ir__Pioneer_8cpp.html#adc67bf557bd3474f18dfaa3125c1af41',1,'ir_Pioneer.cpp']]], - ['kpioneeronespace_2405',['kPioneerOneSpace',['../ir__Pioneer_8cpp.html#a5238b059346168128184bca93de16a54',1,'ir_Pioneer.cpp']]], - ['kpioneertick_2406',['kPioneerTick',['../ir__Pioneer_8cpp.html#a63de2364627344f86537ac82447c5cb4',1,'ir_Pioneer.cpp']]], - ['kpioneerzerospace_2407',['kPioneerZeroSpace',['../ir__Pioneer_8cpp.html#a3c6428f201dd3e32c171d6db44269d67',1,'ir_Pioneer.cpp']]], - ['kpowerbuttonstr_2408',['kPowerButtonStr',['../IRtext_8cpp.html#a69d36084b1410a06aa780edcda9428dd',1,'kPowerButtonStr(): IRtext.cpp'],['../IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c',1,'kPowerButtonStr(): IRtext.cpp']]], - ['kpowerfulstr_2409',['kPowerfulStr',['../IRtext_8cpp.html#a5dfc12bfa12ddf7da3ab6c216258284a',1,'kPowerfulStr(): IRtext.cpp'],['../IRtext_8h.html#a7980630cd028febca8245730dffa684b',1,'kPowerfulStr(): IRtext.cpp']]], - ['kpowerstr_2410',['kPowerStr',['../IRtext_8cpp.html#a5b4b43efe1f1c27d6aee90ebb3500792',1,'kPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda',1,'kPowerStr(): IRtext.cpp']]], - ['kpowertogglestr_2411',['kPowerToggleStr',['../IRtext_8cpp.html#a2f7e242dc28cf61fb718bb5c1b681642',1,'kPowerToggleStr(): IRtext.cpp'],['../IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5',1,'kPowerToggleStr(): IRtext.cpp']]], - ['kpreviouspowerstr_2412',['kPreviousPowerStr',['../IRtext_8cpp.html#a2a5cd83ac519798debd7065eb03d5d72',1,'kPreviousPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c',1,'kPreviousPowerStr(): IRtext.cpp']]], - ['kprontodataoffset_2413',['kProntoDataOffset',['../ir__Pronto_8cpp.html#ac073b9ac759e09091b3d80af747656a1',1,'ir_Pronto.cpp']]], - ['kprontofreqfactor_2414',['kProntoFreqFactor',['../ir__Pronto_8cpp.html#aa63eef9baeb563c8494d85d13b956db8',1,'ir_Pronto.cpp']]], - ['kprontofreqoffset_2415',['kProntoFreqOffset',['../ir__Pronto_8cpp.html#a2fae4105559199e292121bcb847d9d52',1,'ir_Pronto.cpp']]], - ['kprontominlength_2416',['kProntoMinLength',['../IRremoteESP8266_8h.html#a25dd42234e21d41b0b4bc97e1fe921c4',1,'IRremoteESP8266.h']]], - ['kprontoseq1lenoffset_2417',['kProntoSeq1LenOffset',['../ir__Pronto_8cpp.html#a1df51305dddf233fc3963856e288366f',1,'ir_Pronto.cpp']]], - ['kprontoseq2lenoffset_2418',['kProntoSeq2LenOffset',['../ir__Pronto_8cpp.html#a708744a9f82547e5abc17d7ed866a648',1,'ir_Pronto.cpp']]], - ['kprontotypeoffset_2419',['kProntoTypeOffset',['../ir__Pronto_8cpp.html#a603ff34f28f270a98bf0bebdaf19bfbc',1,'ir_Pronto.cpp']]], - ['kprotocolstr_2420',['kProtocolStr',['../IRtext_8cpp.html#afb9e901ded9e88a48218282a7446ff63',1,'kProtocolStr(): IRtext.cpp'],['../IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef',1,'kProtocolStr(): IRtext.cpp']]], - ['kpurifystr_2421',['kPurifyStr',['../IRtext_8cpp.html#a85c2b59f6cba1878648d3d8fe9d7f9a4',1,'kPurifyStr(): IRtext.cpp'],['../IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb',1,'kPurifyStr(): IRtext.cpp']]], - ['kquietstr_2422',['kQuietStr',['../IRtext_8cpp.html#a6f85e3119eb884455f474ff909be6b53',1,'kQuietStr(): IRtext.cpp'],['../IRtext_8h.html#a7086660370d73d6f499972cf802db8f7',1,'kQuietStr(): IRtext.cpp']]], - ['krawbuf_2423',['kRawBuf',['../IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3',1,'IRrecv.h']]], - ['krawtick_2424',['kRawTick',['../IRrecv_8h.html#a373dde69c312b0122665e581eea1297b',1,'IRrecv.h']]], - ['krc5bits_2425',['kRC5Bits',['../IRremoteESP8266_8h.html#ad0935984e6518e340562665742199483',1,'IRremoteESP8266.h']]], - ['krc5mincommandlength_2426',['kRc5MinCommandLength',['../ir__RC5__RC6_8cpp.html#a32b5997148b53fd2984388f6d0384c35',1,'ir_RC5_RC6.cpp']]], - ['krc5mingap_2427',['kRc5MinGap',['../ir__RC5__RC6_8cpp.html#a26580409f593179d838c465647e35c41',1,'ir_RC5_RC6.cpp']]], - ['krc5rawbits_2428',['kRC5RawBits',['../IRremoteESP8266_8h.html#a955183d3358fcafea853014ddd890574',1,'IRremoteESP8266.h']]], - ['krc5samplesmin_2429',['kRc5SamplesMin',['../ir__RC5__RC6_8cpp.html#aa206173838597c760b4a01c36bbc771a',1,'ir_RC5_RC6.cpp']]], - ['krc5t1_2430',['kRc5T1',['../ir__RC5__RC6_8cpp.html#aa42cae15fa77a196eb8f198de09e19eb',1,'ir_RC5_RC6.cpp']]], - ['krc5togglemask_2431',['kRc5ToggleMask',['../ir__RC5__RC6_8cpp.html#ae3485c1c157d6d84a0385cb1bfb8833a',1,'ir_RC5_RC6.cpp']]], - ['krc5xbits_2432',['kRC5XBits',['../IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc',1,'IRremoteESP8266.h']]], - ['krc6_5f36bits_2433',['kRC6_36Bits',['../IRremoteESP8266_8h.html#a30a2cb328aa0d47f53aba56055ac74e0',1,'IRremoteESP8266.h']]], - ['krc6_5f36togglemask_2434',['kRc6_36ToggleMask',['../ir__RC5__RC6_8cpp.html#a31ae862ce2a43edd99bda647262b18fa',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmark_2435',['kRc6HdrMark',['../ir__RC5__RC6_8cpp.html#ae05bbb9f690cc92feb0a9c14b3b8c477',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmarkticks_2436',['kRc6HdrMarkTicks',['../ir__RC5__RC6_8cpp.html#aff2a5bc05ddf61d289c44a4fd093009c',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspace_2437',['kRc6HdrSpace',['../ir__RC5__RC6_8cpp.html#a0196311c9b116cf48c8f901fb6c93ac3',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspaceticks_2438',['kRc6HdrSpaceTicks',['../ir__RC5__RC6_8cpp.html#a35a9cc59fe5251a34c88e34b6a507fd3',1,'ir_RC5_RC6.cpp']]], - ['krc6mode0bits_2439',['kRC6Mode0Bits',['../IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a',1,'IRremoteESP8266.h']]], - ['krc6rptlength_2440',['kRc6RptLength',['../ir__RC5__RC6_8cpp.html#a4989f36b790a99545e708c8681b6b961',1,'ir_RC5_RC6.cpp']]], - ['krc6rptlengthticks_2441',['kRc6RptLengthTicks',['../ir__RC5__RC6_8cpp.html#acf2dc0074bfe7671deb8985eba4396e3',1,'ir_RC5_RC6.cpp']]], - ['krc6tick_2442',['kRc6Tick',['../ir__RC5__RC6_8cpp.html#aad98dc2541039634817609d4e297322f',1,'ir_RC5_RC6.cpp']]], - ['krc6togglemask_2443',['kRc6ToggleMask',['../ir__RC5__RC6_8cpp.html#a4df09270c1e9cda504026189e30829ff',1,'ir_RC5_RC6.cpp']]], - ['krcmmbitmark_2444',['kRcmmBitMark',['../ir__RCMM_8cpp.html#ad768f62bbd7e4df567c3e53ea0a8ed06',1,'ir_RCMM.cpp']]], - ['krcmmbitmarkticks_2445',['kRcmmBitMarkTicks',['../ir__RCMM_8cpp.html#a48aeb7992d30f8c7cfa04dbd14ea0996',1,'ir_RCMM.cpp']]], - ['krcmmbits_2446',['kRCMMBits',['../IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5',1,'IRremoteESP8266.h']]], - ['krcmmbitspace0_2447',['kRcmmBitSpace0',['../ir__RCMM_8cpp.html#a34a7b22107461be18500f6d1ddf979e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace0ticks_2448',['kRcmmBitSpace0Ticks',['../ir__RCMM_8cpp.html#a0864042e8c098169d1d221fbd798cda3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1_2449',['kRcmmBitSpace1',['../ir__RCMM_8cpp.html#a812b9895f0eccaaf78752dc7030022aa',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1ticks_2450',['kRcmmBitSpace1Ticks',['../ir__RCMM_8cpp.html#a89f945e0a91feccd505f0b8310a9ebb9',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2_2451',['kRcmmBitSpace2',['../ir__RCMM_8cpp.html#aff0db6a8f28d3a307cd7bbb6dc90e3e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2ticks_2452',['kRcmmBitSpace2Ticks',['../ir__RCMM_8cpp.html#a592dda1dd9239c9a015163b80cddf859',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3_2453',['kRcmmBitSpace3',['../ir__RCMM_8cpp.html#a5e6351cbcb4c576871584dbf61d87d33',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3ticks_2454',['kRcmmBitSpace3Ticks',['../ir__RCMM_8cpp.html#aa3f7d7e37ffa6bf9649eef7720770767',1,'ir_RCMM.cpp']]], - ['krcmmexcess_2455',['kRcmmExcess',['../ir__RCMM_8cpp.html#a3845e23031e92fd008157b0f95827432',1,'ir_RCMM.cpp']]], - ['krcmmhdrmark_2456',['kRcmmHdrMark',['../ir__RCMM_8cpp.html#a7fc5d5c1dc89ef0615fcaebaacc504df',1,'ir_RCMM.cpp']]], - ['krcmmhdrmarkticks_2457',['kRcmmHdrMarkTicks',['../ir__RCMM_8cpp.html#a00e93c94548ac081083ed2cabd614330',1,'ir_RCMM.cpp']]], - ['krcmmhdrspace_2458',['kRcmmHdrSpace',['../ir__RCMM_8cpp.html#af4dc2548c8069caf889612b3b28895ea',1,'ir_RCMM.cpp']]], - ['krcmmhdrspaceticks_2459',['kRcmmHdrSpaceTicks',['../ir__RCMM_8cpp.html#a87cd8bb5322fb38aecd20362a7df5016',1,'ir_RCMM.cpp']]], - ['krcmmmingap_2460',['kRcmmMinGap',['../ir__RCMM_8cpp.html#a94f9533bf18c0a2c2b6511ffa95ff5dc',1,'ir_RCMM.cpp']]], - ['krcmmmingapticks_2461',['kRcmmMinGapTicks',['../ir__RCMM_8cpp.html#aacb274f2da878aed511f6ab400cd51e9',1,'ir_RCMM.cpp']]], - ['krcmmrptlength_2462',['kRcmmRptLength',['../ir__RCMM_8cpp.html#a1dccf2b944d4eeb8b7dd2a1f66548a68',1,'ir_RCMM.cpp']]], - ['krcmmrptlengthticks_2463',['kRcmmRptLengthTicks',['../ir__RCMM_8cpp.html#a4cd637fa0a6071f9ea0b52c346ffe7f0',1,'ir_RCMM.cpp']]], - ['krcmmtick_2464',['kRcmmTick',['../ir__RCMM_8cpp.html#a9e1a3a26185d58ff675eec7485bc671f',1,'ir_RCMM.cpp']]], - ['krcmmtolerance_2465',['kRcmmTolerance',['../ir__RCMM_8cpp.html#a4b95480078186b3498ca6426e5bbc428',1,'ir_RCMM.cpp']]], - ['krcz01channelmask_2466',['kRcz01ChannelMask',['../ir__Doshisha_8cpp.html#a085b3d47e4cf8d8b4ba999ae58ec3533',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel1_2467',['kRcz01CommandLevel1',['../ir__Doshisha_8cpp.html#a436b801a282374de0f28e27828e1c4bf',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel2_2468',['kRcz01CommandLevel2',['../ir__Doshisha_8cpp.html#a311ef41fff985236216238565219bfe7',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel3_2469',['kRcz01CommandLevel3',['../ir__Doshisha_8cpp.html#a879bd44f482c87fbaf9fecaad8ed4c6d',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel4_2470',['kRcz01CommandLevel4',['../ir__Doshisha_8cpp.html#a52bad85f1a3918e3031297a6c6074b45',1,'ir_Doshisha.cpp']]], - ['krcz01commandleveldown_2471',['kRcz01CommandLevelDown',['../ir__Doshisha_8cpp.html#a1678269506503f1abf871ed0af6dcc2b',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevelup_2472',['kRcz01CommandLevelUp',['../ir__Doshisha_8cpp.html#a4eba011d2b110a5348783534e957660e',1,'ir_Doshisha.cpp']]], - ['krcz01commandmask_2473',['kRcz01CommandMask',['../ir__Doshisha_8cpp.html#a148e2f676f895f4e3b77b39780e2ca94',1,'ir_Doshisha.cpp']]], - ['krcz01commandnightlight_2474',['kRcz01CommandNightLight',['../ir__Doshisha_8cpp.html#a47e9d5bf353cf8aef8199fb74693aa0f',1,'ir_Doshisha.cpp']]], - ['krcz01commandoff_2475',['kRcz01CommandOff',['../ir__Doshisha_8cpp.html#a97fd32975ab9fafa85e0704964780773',1,'ir_Doshisha.cpp']]], - ['krcz01commandon_2476',['kRcz01CommandOn',['../ir__Doshisha_8cpp.html#a7377eac8b1d938903fd43d7505dd8a49',1,'ir_Doshisha.cpp']]], - ['krcz01commandswitchchannel_2477',['kRcz01CommandSwitchChannel',['../ir__Doshisha_8cpp.html#afcd3fe98c34ef9572c1a68bd143e128b',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer30_2478',['kRcz01CommandTimmer30',['../ir__Doshisha_8cpp.html#a3deebab67d01756f7776f0d11cbdef6e',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer60_2479',['kRcz01CommandTimmer60',['../ir__Doshisha_8cpp.html#abac6b50227512508aeb5b6042a8380fd',1,'ir_Doshisha.cpp']]], - ['krcz01signature_2480',['kRcz01Signature',['../ir__Doshisha_8cpp.html#a35c6dff74ae1702933e33f02f743f616',1,'ir_Doshisha.cpp']]], - ['krcz01signaturemask_2481',['kRcz01SignatureMask',['../ir__Doshisha_8cpp.html#a1f3b9cdfba7cc7515611d7145b7318a5',1,'ir_Doshisha.cpp']]], - ['krecyclestr_2482',['kRecycleStr',['../IRtext_8cpp.html#a5159481cec97d0fdfbfac15e43a8c20a',1,'kRecycleStr(): IRtext.cpp'],['../IRtext_8h.html#a91ca83e3aebe460fe74314747580aefa',1,'kRecycleStr(): IRtext.cpp']]], - ['krepeat_2483',['kRepeat',['../IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89',1,'IRrecv.h']]], - ['krepeatstr_2484',['kRepeatStr',['../IRtext_8cpp.html#ad55ef2e023915f39c7ce77e7eeb1ad76',1,'kRepeatStr(): IRtext.cpp'],['../IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b',1,'kRepeatStr(): IRtext.cpp']]], - ['kright_2485',['kRight',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2dd2b017192f8a09367d48c7648213c9',1,'stdAc']]], - ['krightmax_2486',['kRightMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a856bf9929ade459f451be17c97db4b32',1,'stdAc']]], - ['krightmaxstr_2487',['kRightMaxStr',['../IRtext_8cpp.html#af3e63659779f5fdb4aded4861521e564',1,'kRightMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae',1,'kRightMaxStr(): IRtext.cpp']]], - ['krightstr_2488',['kRightStr',['../IRtext_8cpp.html#aacc9b0b21efb6053b75ed117d4ab9105',1,'kRightStr(): IRtext.cpp'],['../IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd',1,'kRightStr(): IRtext.cpp']]], - ['kroomstr_2489',['kRoomStr',['../IRtext_8cpp.html#ab3f02ff54af9a94fd57d098838a4a642',1,'kRoomStr(): IRtext.cpp'],['../IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079',1,'kRoomStr(): IRtext.cpp']]], - ['ksamsung36bitmark_2490',['kSamsung36BitMark',['../ir__Samsung_8cpp.html#a2e9bc50c6320d7a1244713b4a1647e71',1,'ir_Samsung.cpp']]], - ['ksamsung36bits_2491',['kSamsung36Bits',['../IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179',1,'IRremoteESP8266.h']]], - ['ksamsung36hdrmark_2492',['kSamsung36HdrMark',['../ir__Samsung_8cpp.html#a47c0e69d6e21597ea15dc613c58861b6',1,'ir_Samsung.cpp']]], - ['ksamsung36hdrspace_2493',['kSamsung36HdrSpace',['../ir__Samsung_8cpp.html#a4761b62640c0a56ee641c9077fd800dd',1,'ir_Samsung.cpp']]], - ['ksamsung36onespace_2494',['kSamsung36OneSpace',['../ir__Samsung_8cpp.html#a3a913fe500926cf448d7408303e3698c',1,'ir_Samsung.cpp']]], - ['ksamsung36zerospace_2495',['kSamsung36ZeroSpace',['../ir__Samsung_8cpp.html#ac24972846bc1a2240537b212f5aa55d6',1,'ir_Samsung.cpp']]], - ['ksamsungacauto_2496',['kSamsungAcAuto',['../ir__Samsung_8h.html#a1b05ff970f45c57b13fc13d11e95396b',1,'ir_Samsung.h']]], - ['ksamsungacautotemp_2497',['kSamsungAcAutoTemp',['../ir__Samsung_8h.html#a87bb469afc0e2b6bad44634f3ba5e0ef',1,'ir_Samsung.h']]], - ['ksamsungacbitmark_2498',['kSamsungAcBitMark',['../ir__Samsung_8cpp.html#a37e6f36939f1a12ffe52907bbb64a4cf',1,'ir_Samsung.cpp']]], - ['ksamsungacbits_2499',['kSamsungAcBits',['../IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c',1,'IRremoteESP8266.h']]], - ['ksamsungacbreezeon_2500',['kSamsungAcBreezeOn',['../ir__Samsung_8h.html#a06299ba6942969f7b9472e752b50d4d7',1,'ir_Samsung.h']]], - ['ksamsungaccool_2501',['kSamsungAcCool',['../ir__Samsung_8h.html#a24d40e01f046f887b7d41dad67ad7555',1,'ir_Samsung.h']]], - ['ksamsungacdefaultrepeat_2502',['kSamsungAcDefaultRepeat',['../IRremoteESP8266_8h.html#a973f4e0189fc10805f67b67f708be1e4',1,'IRremoteESP8266.h']]], - ['ksamsungacdry_2503',['kSamsungAcDry',['../ir__Samsung_8h.html#a6423976c7a41f526e7a878cecb257bbd',1,'ir_Samsung.h']]], - ['ksamsungacextendedbits_2504',['kSamsungAcExtendedBits',['../IRremoteESP8266_8h.html#a296e700965e70a622fe99675ff0438af',1,'IRremoteESP8266.h']]], - ['ksamsungacextendedstatelength_2505',['kSamsungAcExtendedStateLength',['../IRremoteESP8266_8h.html#a28039071f1130e9bc86efddd8265cbf9',1,'IRremoteESP8266.h']]], - ['ksamsungacfan_2506',['kSamsungAcFan',['../ir__Samsung_8h.html#a61d825254b26894a2f097ad92a7dbff2',1,'ir_Samsung.h']]], - ['ksamsungacfanauto_2507',['kSamsungAcFanAuto',['../ir__Samsung_8h.html#a37b29911f4d2b71dcdbd18a5d6dc301a',1,'ir_Samsung.h']]], - ['ksamsungacfanauto2_2508',['kSamsungAcFanAuto2',['../ir__Samsung_8h.html#aafa4319fb523b14d58371f757497e82a',1,'ir_Samsung.h']]], - ['ksamsungacfanhigh_2509',['kSamsungAcFanHigh',['../ir__Samsung_8h.html#a52cccad28fad5b9886ef408af02f56f9',1,'ir_Samsung.h']]], - ['ksamsungacfanlow_2510',['kSamsungAcFanLow',['../ir__Samsung_8h.html#a6f16b5b3f2dea3461f5d44379e8b8634',1,'ir_Samsung.h']]], - ['ksamsungacfanmed_2511',['kSamsungAcFanMed',['../ir__Samsung_8h.html#a798c3544dbd6bb6c8622cf45f88abc14',1,'ir_Samsung.h']]], - ['ksamsungacfanturbo_2512',['kSamsungAcFanTurbo',['../ir__Samsung_8h.html#af6c1432748eaa19df35531b87d197095',1,'ir_Samsung.h']]], - ['ksamsungachdrmark_2513',['kSamsungAcHdrMark',['../ir__Samsung_8cpp.html#ab7385ca5b7b417753b253a0f7cb3721b',1,'ir_Samsung.cpp']]], - ['ksamsungachdrspace_2514',['kSamsungAcHdrSpace',['../ir__Samsung_8cpp.html#a1b1f903fff13b10fb2431be9373e27cb',1,'ir_Samsung.cpp']]], - ['ksamsungacheat_2515',['kSamsungAcHeat',['../ir__Samsung_8h.html#a44ce6be7046ec4b4fe9caba7b71b8f0d',1,'ir_Samsung.h']]], - ['ksamsungacmaxtemp_2516',['kSamsungAcMaxTemp',['../ir__Samsung_8h.html#a0a994796db81a3d56dd2c27cad448a71',1,'ir_Samsung.h']]], - ['ksamsungacmintemp_2517',['kSamsungAcMinTemp',['../ir__Samsung_8h.html#ad5f46ccb96335519f5633c33de0d8018',1,'ir_Samsung.h']]], - ['ksamsungaconespace_2518',['kSamsungAcOneSpace',['../ir__Samsung_8cpp.html#ab106d9b7efb165eed83ae2ccef9a49b4',1,'ir_Samsung.cpp']]], - ['ksamsungacpowerful10on_2519',['kSamsungAcPowerful10On',['../ir__Samsung_8h.html#aa05bb4788febba1f56b2b3929ac273a3',1,'ir_Samsung.h']]], - ['ksamsungacpowerfulmask8_2520',['kSamsungAcPowerfulMask8',['../ir__Samsung_8h.html#a39e23325e35688a3641c467b720381ce',1,'ir_Samsung.h']]], - ['ksamsungacpowersection_2521',['kSamsungAcPowerSection',['../ir__Samsung_8h.html#a9264b5d640d9052c153562fd38415676',1,'ir_Samsung.h']]], - ['ksamsungacsectiongap_2522',['kSamsungAcSectionGap',['../ir__Samsung_8cpp.html#a9752fc615c215a93c1ee65edca3a359e',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionlength_2523',['kSamsungAcSectionLength',['../ir__Samsung_8h.html#ad3faedf7b111f1b91d671666e38ce6f3',1,'ir_Samsung.h']]], - ['ksamsungacsectionmark_2524',['kSamsungAcSectionMark',['../ir__Samsung_8cpp.html#a4304073cddaa2da9613dedce499fee56',1,'ir_Samsung.cpp']]], - ['ksamsungacsections_2525',['kSamsungAcSections',['../ir__Samsung_8cpp.html#a86185d98d6e891a17688d9d2a0fa7114',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionspace_2526',['kSamsungAcSectionSpace',['../ir__Samsung_8cpp.html#a4837f502ef9b7c972ec409cf4fc3c605',1,'ir_Samsung.cpp']]], - ['ksamsungacstatelength_2527',['kSamsungAcStateLength',['../IRremoteESP8266_8h.html#a2d07d8c8917fee072a261d00e67e0d36',1,'IRremoteESP8266.h']]], - ['ksamsungacswingmove_2528',['kSamsungAcSwingMove',['../ir__Samsung_8h.html#ab2d2b422e3972f77aef23f77c7cfbbac',1,'ir_Samsung.h']]], - ['ksamsungacswingstop_2529',['kSamsungAcSwingStop',['../ir__Samsung_8h.html#a37c1720d66c4ba02e368946e53036367',1,'ir_Samsung.h']]], - ['ksamsungaczerospace_2530',['kSamsungAcZeroSpace',['../ir__Samsung_8cpp.html#a7492a25e730f93f22c099ab687621b18',1,'ir_Samsung.cpp']]], - ['ksamsungbitmark_2531',['kSamsungBitMark',['../ir__Samsung_8cpp.html#a03f9ae317a7a701437c8015dfde4401f',1,'ir_Samsung.cpp']]], - ['ksamsungbitmarkticks_2532',['kSamsungBitMarkTicks',['../ir__Samsung_8cpp.html#afe1663f83396f7e5cf9bfc32f321e539',1,'ir_Samsung.cpp']]], - ['ksamsungbits_2533',['kSamsungBits',['../IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170',1,'IRremoteESP8266.h']]], - ['ksamsunghdrmark_2534',['kSamsungHdrMark',['../ir__Samsung_8cpp.html#a3d0598585af609af4c8d5004789d2df7',1,'ir_Samsung.cpp']]], - ['ksamsunghdrmarkticks_2535',['kSamsungHdrMarkTicks',['../ir__Samsung_8cpp.html#a0c81f486877d24bfd40215b089c52f2a',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspace_2536',['kSamsungHdrSpace',['../ir__Samsung_8cpp.html#a2f55c53bfc72de06ff202c8ec401163d',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspaceticks_2537',['kSamsungHdrSpaceTicks',['../ir__Samsung_8cpp.html#a1ae96cedfa4ed26869d295cfbb8056dd',1,'ir_Samsung.cpp']]], - ['ksamsungmingap_2538',['kSamsungMinGap',['../ir__Samsung_8cpp.html#ab13edb242547803b386aa8539a4b9470',1,'ir_Samsung.cpp']]], - ['ksamsungmingapticks_2539',['kSamsungMinGapTicks',['../ir__Samsung_8cpp.html#a55d79dcfcd43f05ebe456a9a2fce3ff0',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelength_2540',['kSamsungMinMessageLength',['../ir__Samsung_8cpp.html#ae2ec2e45f91f872e85c250c7aac0efc1',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelengthticks_2541',['kSamsungMinMessageLengthTicks',['../ir__Samsung_8cpp.html#a6d436a1b71158ff9b5d7ae21344cd7d2',1,'ir_Samsung.cpp']]], - ['ksamsungonespace_2542',['kSamsungOneSpace',['../ir__Samsung_8cpp.html#ab486b048d13f44623ee291d4221c2a1b',1,'ir_Samsung.cpp']]], - ['ksamsungonespaceticks_2543',['kSamsungOneSpaceTicks',['../ir__Samsung_8cpp.html#a484a1e3ce3dcbbef15be559bfb5822d0',1,'ir_Samsung.cpp']]], - ['ksamsungrptspace_2544',['kSamsungRptSpace',['../ir__Samsung_8cpp.html#a1cc2f3bcd7f2ca36f0a726828c14aa74',1,'ir_Samsung.cpp']]], - ['ksamsungrptspaceticks_2545',['kSamsungRptSpaceTicks',['../ir__Samsung_8cpp.html#a6864f78ad1428358acbc8b46796e50cc',1,'ir_Samsung.cpp']]], - ['ksamsungtick_2546',['kSamsungTick',['../ir__Samsung_8cpp.html#accd7d51c2714bd383170831372f57bc5',1,'ir_Samsung.cpp']]], - ['ksamsungzerospace_2547',['kSamsungZeroSpace',['../ir__Samsung_8cpp.html#ae2c828a3d099d6195208a3794022587e',1,'ir_Samsung.cpp']]], - ['ksamsungzerospaceticks_2548',['kSamsungZeroSpaceTicks',['../ir__Samsung_8cpp.html#aea63a73a5b0af2c173bc473ee2447a93',1,'ir_Samsung.cpp']]], - ['ksanyoacauto_2549',['kSanyoAcAuto',['../ir__Sanyo_8h.html#a80d3d83c1b85f8c44dd93cc44b30accb',1,'ir_Sanyo.h']]], - ['ksanyoacbitmark_2550',['kSanyoAcBitMark',['../ir__Sanyo_8cpp.html#af738984c8164ff32f3bd91b9263f55c2',1,'ir_Sanyo.cpp']]], - ['ksanyoacbits_2551',['kSanyoAcBits',['../IRremoteESP8266_8h.html#ad3931645167deda3fd0ec72ba33a4034',1,'IRremoteESP8266.h']]], - ['ksanyoaccool_2552',['kSanyoAcCool',['../ir__Sanyo_8h.html#ad6a49260b9097a821cf29fe87796456d',1,'ir_Sanyo.h']]], - ['ksanyoacdry_2553',['kSanyoAcDry',['../ir__Sanyo_8h.html#a5e0645e5f69dc627d130e4bca1751b5c',1,'ir_Sanyo.h']]], - ['ksanyoacfanauto_2554',['kSanyoAcFanAuto',['../ir__Sanyo_8h.html#a7bc8d0e04bdf32a3d7147a8ee4f0fc9c',1,'ir_Sanyo.h']]], - ['ksanyoacfanhigh_2555',['kSanyoAcFanHigh',['../ir__Sanyo_8h.html#a34a75f871c7b2648641830bf8210be0b',1,'ir_Sanyo.h']]], - ['ksanyoacfanlow_2556',['kSanyoAcFanLow',['../ir__Sanyo_8h.html#a3a0bfc84856de44bc2bce7cb63f61414',1,'ir_Sanyo.h']]], - ['ksanyoacfanmedium_2557',['kSanyoAcFanMedium',['../ir__Sanyo_8h.html#a54189bf27e6cbcbe03b9898985a3486f',1,'ir_Sanyo.h']]], - ['ksanyoacfreq_2558',['kSanyoAcFreq',['../ir__Sanyo_8cpp.html#a85397f4fba50f4409467435ae22a003c',1,'ir_Sanyo.cpp']]], - ['ksanyoacgap_2559',['kSanyoAcGap',['../ir__Sanyo_8cpp.html#a20213c79f423cb292a55be3618ff1f2f',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrmark_2560',['kSanyoAcHdrMark',['../ir__Sanyo_8cpp.html#a0b1b08bcc921bbbe6686c699c1aaad2e',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrspace_2561',['kSanyoAcHdrSpace',['../ir__Sanyo_8cpp.html#a8c09cce29f3791eb80c1546be5e5535c',1,'ir_Sanyo.cpp']]], - ['ksanyoacheat_2562',['kSanyoAcHeat',['../ir__Sanyo_8h.html#aacdcd75fdf538881354662454c95e8b5',1,'ir_Sanyo.h']]], - ['ksanyoachourmax_2563',['kSanyoAcHourMax',['../ir__Sanyo_8h.html#aeaa1ba34ec4f7bb2e66e1c63e78ad864',1,'ir_Sanyo.h']]], - ['ksanyoaconespace_2564',['kSanyoAcOneSpace',['../ir__Sanyo_8cpp.html#ac9e641f6e3e07a8938ed28a656281122',1,'ir_Sanyo.cpp']]], - ['ksanyoacpoweroff_2565',['kSanyoAcPowerOff',['../ir__Sanyo_8h.html#a1777504e5870f0e29846cda7a17bb3fd',1,'ir_Sanyo.h']]], - ['ksanyoacpoweron_2566',['kSanyoAcPowerOn',['../ir__Sanyo_8h.html#a6e3da0779d665696d36a03b445ca82ea',1,'ir_Sanyo.h']]], - ['ksanyoacstatelength_2567',['kSanyoAcStateLength',['../IRremoteESP8266_8h.html#ae3128c987a1571fb6b021ffe30079663',1,'IRremoteESP8266.h']]], - ['ksanyoacswingvauto_2568',['kSanyoAcSwingVAuto',['../ir__Sanyo_8h.html#afce45a19ba8cdff528dac0ee8b13bb66',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhigh_2569',['kSanyoAcSwingVHigh',['../ir__Sanyo_8h.html#a4cdea5c3718a4a869d1e914a7a8ee2af',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhighest_2570',['kSanyoAcSwingVHighest',['../ir__Sanyo_8h.html#a64b28da09adf0416c49640264ccb760b',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlow_2571',['kSanyoAcSwingVLow',['../ir__Sanyo_8h.html#aaef1fa9d1ef8f92f59525b09175f6048',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowermiddle_2572',['kSanyoAcSwingVLowerMiddle',['../ir__Sanyo_8h.html#a11141a0d31bca64561eed3be5698a5a6',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowest_2573',['kSanyoAcSwingVLowest',['../ir__Sanyo_8h.html#a3d97c9b2da1c26ba5943996f76aa4f3f',1,'ir_Sanyo.h']]], - ['ksanyoacswingvuppermiddle_2574',['kSanyoAcSwingVUpperMiddle',['../ir__Sanyo_8h.html#a314f05625e1985042dc6e2a4866c51df',1,'ir_Sanyo.h']]], - ['ksanyoactempdelta_2575',['kSanyoAcTempDelta',['../ir__Sanyo_8h.html#ac0991e0a826fae8228e1064d5d803edc',1,'ir_Sanyo.h']]], - ['ksanyoactempmax_2576',['kSanyoAcTempMax',['../ir__Sanyo_8h.html#aa4222421c4571c9e34d39f01a2c71394',1,'ir_Sanyo.h']]], - ['ksanyoactempmin_2577',['kSanyoAcTempMin',['../ir__Sanyo_8h.html#a59fb387ec5657ba8ff301b9198703b9a',1,'ir_Sanyo.h']]], - ['ksanyoaczerospace_2578',['kSanyoAcZeroSpace',['../ir__Sanyo_8cpp.html#a9a600476008e4462df534ee98c732c1b',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461addressbits_2579',['kSanyoLC7461AddressBits',['../IRremoteESP8266_8h.html#a7e15e988acbea0fb4dfaee6f5bfa12d0',1,'IRremoteESP8266.h']]], - ['ksanyolc7461addressmask_2580',['kSanyoLc7461AddressMask',['../ir__Sanyo_8cpp.html#a785ccc066e433f11791f8a30243944d3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bitmark_2581',['kSanyoLc7461BitMark',['../ir__Sanyo_8cpp.html#a1360ba5ac3f30715c00a6a65155cfec8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bits_2582',['kSanyoLC7461Bits',['../IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandbits_2583',['kSanyoLC7461CommandBits',['../IRremoteESP8266_8h.html#a5cd69a192be51634ce72a40398a6c0d7',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandmask_2584',['kSanyoLc7461CommandMask',['../ir__Sanyo_8cpp.html#abdd072e210a7616d564a9d4a7f798ad3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrmark_2585',['kSanyoLc7461HdrMark',['../ir__Sanyo_8cpp.html#a0b2e520442dd96f8cd77969230713277',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrspace_2586',['kSanyoLc7461HdrSpace',['../ir__Sanyo_8cpp.html#aa9ca2469e22f66d6e5e3f4ef952484ba',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mincommandlength_2587',['kSanyoLc7461MinCommandLength',['../ir__Sanyo_8cpp.html#a237fac9264bba0014124a815133868b2',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mingap_2588',['kSanyoLc7461MinGap',['../ir__Sanyo_8cpp.html#aff7f31500dbe9939e223bed6b6c631a8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461onespace_2589',['kSanyoLc7461OneSpace',['../ir__Sanyo_8cpp.html#a52716e37d6943b01e9df37956f1a83de',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461zerospace_2590',['kSanyoLc7461ZeroSpace',['../ir__Sanyo_8cpp.html#a4e386992c8fca642c259e86e34729a4d',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bbits_2591',['kSanyoSA8650BBits',['../IRremoteESP8266_8h.html#a2c572c8bfa811b7dc3a8a537cc642b85',1,'IRremoteESP8266.h']]], - ['ksanyosa8650bdoublespaceusecs_2592',['kSanyoSa8650bDoubleSpaceUsecs',['../ir__Sanyo_8cpp.html#a828caf6fd05e81cedee67c558b88a0b6',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrmark_2593',['kSanyoSa8650bHdrMark',['../ir__Sanyo_8cpp.html#a9d0472d183a96b8ca71a2b704a06cac8',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrspace_2594',['kSanyoSa8650bHdrSpace',['../ir__Sanyo_8cpp.html#ab432df3bd299b72b4449672d611798b7',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bonemark_2595',['kSanyoSa8650bOneMark',['../ir__Sanyo_8cpp.html#a8854c7bd32c1ec53e8e1869cd9dd8cdd',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650brptlength_2596',['kSanyoSa8650bRptLength',['../ir__Sanyo_8cpp.html#a327ee6de7027aacfa9aa6ee8bdc74e3e',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bzeromark_2597',['kSanyoSa8650bZeroMark',['../ir__Sanyo_8cpp.html#a516a45a7934f23274fa302d7e711b43c',1,'ir_Sanyo.cpp']]], - ['ksavestr_2598',['kSaveStr',['../IRtext_8cpp.html#a24f9462727ee596a3ae16393c33e3ebc',1,'kSaveStr(): IRtext.cpp'],['../IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069',1,'kSaveStr(): IRtext.cpp']]], - ['ksecondsstr_2599',['kSecondsStr',['../IRtext_8cpp.html#a282cb9785839a9da66a9333d788c0fb1',1,'kSecondsStr(): IRtext.cpp'],['../IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455',1,'kSecondsStr(): IRtext.cpp']]], - ['ksecondstr_2600',['kSecondStr',['../IRtext_8cpp.html#a5ec55e16709cbd2c4b1ff8c72c01c1f5',1,'kSecondStr(): IRtext.cpp'],['../IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1',1,'kSecondStr(): IRtext.cpp']]], - ['ksensorstr_2601',['kSensorStr',['../IRtext_8cpp.html#aa7e6eab2fbc832f98d6560f62453c934',1,'kSensorStr(): IRtext.cpp'],['../IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8',1,'kSensorStr(): IRtext.cpp']]], - ['ksensortempstr_2602',['kSensorTempStr',['../IRtext_8cpp.html#a756daa989457676d2af255428a01e1d5',1,'kSensorTempStr(): IRtext.cpp'],['../IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1',1,'kSensorTempStr(): IRtext.cpp']]], - ['ksetstr_2603',['kSetStr',['../IRtext_8cpp.html#a27b5e437df44d4d41db9b296a1f236a1',1,'kSetStr(): IRtext.cpp'],['../IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce',1,'kSetStr(): IRtext.cpp']]], - ['ksharpacauto_2604',['kSharpAcAuto',['../ir__Sharp_8h.html#ad4e228b234598a84e11a76e7f2d27199',1,'ir_Sharp.h']]], - ['ksharpacbitmark_2605',['kSharpAcBitMark',['../ir__Sharp_8h.html#ae73dd2c91b531bf3a52641b36f56ead7',1,'ir_Sharp.h']]], - ['ksharpacbits_2606',['kSharpAcBits',['../IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2',1,'IRremoteESP8266.h']]], - ['ksharpacbytetemp_2607',['kSharpAcByteTemp',['../ir__Sharp_8h.html#a1b67ab12ed664517124fe3c1d7325927',1,'ir_Sharp.h']]], - ['ksharpaccool_2608',['kSharpAcCool',['../ir__Sharp_8h.html#ae828d7e915f69cc1e9538839fc51c895',1,'ir_Sharp.h']]], - ['ksharpacdefaultrepeat_2609',['kSharpAcDefaultRepeat',['../IRremoteESP8266_8h.html#a7f0438831899e3df16f9002717c818b9',1,'IRremoteESP8266.h']]], - ['ksharpacdry_2610',['kSharpAcDry',['../ir__Sharp_8h.html#a50ae949b473ed4a6482fa00d747b2c0f',1,'ir_Sharp.h']]], - ['ksharpacfan_2611',['kSharpAcFan',['../ir__Sharp_8h.html#a4b8ec70fe3b83debdc6b3a1440cfe3e4',1,'ir_Sharp.h']]], - ['ksharpacfana705low_2612',['kSharpAcFanA705Low',['../ir__Sharp_8h.html#a49b66950f998c99cc516a68cd5490691',1,'ir_Sharp.h']]], - ['ksharpacfana705med_2613',['kSharpAcFanA705Med',['../ir__Sharp_8h.html#a80d5e21efa5286b1eff937913915c492',1,'ir_Sharp.h']]], - ['ksharpacfanauto_2614',['kSharpAcFanAuto',['../ir__Sharp_8h.html#a2ef78269271593420ea2bdc20025ca69',1,'ir_Sharp.h']]], - ['ksharpacfanhigh_2615',['kSharpAcFanHigh',['../ir__Sharp_8h.html#af29136d64c2f2a2515918ccf0ff0f594',1,'ir_Sharp.h']]], - ['ksharpacfanmax_2616',['kSharpAcFanMax',['../ir__Sharp_8h.html#a8b0aaa58a5f4caabea84e3b448793054',1,'ir_Sharp.h']]], - ['ksharpacfanmed_2617',['kSharpAcFanMed',['../ir__Sharp_8h.html#a7607f054da76f5e1508abf42d9cd71fc',1,'ir_Sharp.h']]], - ['ksharpacfanmin_2618',['kSharpAcFanMin',['../ir__Sharp_8h.html#a2372fdfbb0d8c2163a3eae5b8eda570a',1,'ir_Sharp.h']]], - ['ksharpacgap_2619',['kSharpAcGap',['../ir__Sharp_8h.html#a777eb0358ce3ef4528f086ff9ff7cd8d',1,'ir_Sharp.h']]], - ['ksharpachdrmark_2620',['kSharpAcHdrMark',['../ir__Sharp_8h.html#aff6f1e55de051762a0def881a5bb555c',1,'ir_Sharp.h']]], - ['ksharpachdrspace_2621',['kSharpAcHdrSpace',['../ir__Sharp_8h.html#a0ea5ff96afd358a8ad1be8d8ed808f04',1,'ir_Sharp.h']]], - ['ksharpacheat_2622',['kSharpAcHeat',['../ir__Sharp_8h.html#ab546d06a0b1f3477f88282f764f208cb',1,'ir_Sharp.h']]], - ['ksharpacmaxtemp_2623',['kSharpAcMaxTemp',['../ir__Sharp_8h.html#a6cfb060ea8c2f650fdd73b055cfda00a',1,'ir_Sharp.h']]], - ['ksharpacmintemp_2624',['kSharpAcMinTemp',['../ir__Sharp_8h.html#ad9ac5214b6cc780d9424ec7d038fe837',1,'ir_Sharp.h']]], - ['ksharpacofftimertype_2625',['kSharpAcOffTimerType',['../ir__Sharp_8h.html#ada633bea9c6c2ffd234c8262e92cebd5',1,'ir_Sharp.h']]], - ['ksharpaconespace_2626',['kSharpAcOneSpace',['../ir__Sharp_8h.html#a20e8eb7c8763fbddb20530badbaab38b',1,'ir_Sharp.h']]], - ['ksharpacontimertype_2627',['kSharpAcOnTimerType',['../ir__Sharp_8h.html#adce8625b00931645c7ccf54edf263c59',1,'ir_Sharp.h']]], - ['ksharpacpoweroff_2628',['kSharpAcPowerOff',['../ir__Sharp_8h.html#a5c13882a47bdd289507e8a5a23ec99d6',1,'ir_Sharp.h']]], - ['ksharpacpoweron_2629',['kSharpAcPowerOn',['../ir__Sharp_8h.html#af485487ea50dd2f9bc153e5f83dc5cf9',1,'ir_Sharp.h']]], - ['ksharpacpoweronfromoff_2630',['kSharpAcPowerOnFromOff',['../ir__Sharp_8h.html#ae484cf776fa47542f4d693c29052fc9f',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialoff_2631',['kSharpAcPowerSetSpecialOff',['../ir__Sharp_8h.html#a93b22ba4b5e68f8185ed28a6bb7c05dd',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialon_2632',['kSharpAcPowerSetSpecialOn',['../ir__Sharp_8h.html#a67aff6b22c0cfb89debb8ade7239f07e',1,'ir_Sharp.h']]], - ['ksharpacpowertimersetting_2633',['kSharpAcPowerTimerSetting',['../ir__Sharp_8h.html#a208cb9446ea1f42db42a1f6e24b61219',1,'ir_Sharp.h']]], - ['ksharpacpowerunknown_2634',['kSharpAcPowerUnknown',['../ir__Sharp_8h.html#ab20172b860fa1401607f0678c682640f',1,'ir_Sharp.h']]], - ['ksharpacspecialfan_2635',['kSharpAcSpecialFan',['../ir__Sharp_8h.html#a6c1a1c535150f973eecb1a131d0c4780',1,'ir_Sharp.h']]], - ['ksharpacspecialpower_2636',['kSharpAcSpecialPower',['../ir__Sharp_8h.html#a843585897995ee15e39af0d452d8660d',1,'ir_Sharp.h']]], - ['ksharpacspecialswing_2637',['kSharpAcSpecialSwing',['../ir__Sharp_8h.html#a34127a7df393d2a5a84ca90e60e8507a',1,'ir_Sharp.h']]], - ['ksharpacspecialtempecono_2638',['kSharpAcSpecialTempEcono',['../ir__Sharp_8h.html#af2dcb54fc26802d1818ef88e6ddfc819',1,'ir_Sharp.h']]], - ['ksharpacspecialtimer_2639',['kSharpAcSpecialTimer',['../ir__Sharp_8h.html#a539b21c344db53fbfd4f17c91ab98139',1,'ir_Sharp.h']]], - ['ksharpacspecialtimerhalfhour_2640',['kSharpAcSpecialTimerHalfHour',['../ir__Sharp_8h.html#a1f9bf40a4af95689947c09559ed049bf',1,'ir_Sharp.h']]], - ['ksharpacspecialturbo_2641',['kSharpAcSpecialTurbo',['../ir__Sharp_8h.html#a270bb2bc83d4eb8974f498dd8eb299bb',1,'ir_Sharp.h']]], - ['ksharpacstatelength_2642',['kSharpAcStateLength',['../IRremoteESP8266_8h.html#a5192edb9406a8572e393918bab69e3c6',1,'IRremoteESP8266.h']]], - ['ksharpacswingnotoggle_2643',['kSharpAcSwingNoToggle',['../ir__Sharp_8h.html#a9c56d4f694ea69921ba2cb75f67426d6',1,'ir_Sharp.h']]], - ['ksharpacswingtoggle_2644',['kSharpAcSwingToggle',['../ir__Sharp_8h.html#aa6db653d25f67214819292b8f86af0e6',1,'ir_Sharp.h']]], - ['ksharpactimerhoursmax_2645',['kSharpAcTimerHoursMax',['../ir__Sharp_8h.html#a63af01993ba1e539dfb8dae67f42b9ae',1,'ir_Sharp.h']]], - ['ksharpactimerhoursoff_2646',['kSharpAcTimerHoursOff',['../ir__Sharp_8h.html#a462c10c12d828ba58d589cc365bd7be3',1,'ir_Sharp.h']]], - ['ksharpactimerincrement_2647',['kSharpAcTimerIncrement',['../ir__Sharp_8h.html#af32638e308a7034eb013b7ea9569273e',1,'ir_Sharp.h']]], - ['ksharpaczerospace_2648',['kSharpAcZeroSpace',['../ir__Sharp_8h.html#a5310e0404daae1a6e534dbaeaa9a9939',1,'ir_Sharp.h']]], - ['ksharpaddressbits_2649',['kSharpAddressBits',['../IRremoteESP8266_8h.html#a79c2f3cc459267cf0261124ddef47f5e',1,'IRremoteESP8266.h']]], - ['ksharpaddressmask_2650',['kSharpAddressMask',['../ir__Sharp_8cpp.html#a84fba003383cd4652fc804b97002f464',1,'ir_Sharp.cpp']]], - ['ksharpbitmark_2651',['kSharpBitMark',['../ir__Sharp_8cpp.html#ae2adc2bffb2b024faab8da363621733f',1,'ir_Sharp.cpp']]], - ['ksharpbitmarkticks_2652',['kSharpBitMarkTicks',['../ir__Sharp_8cpp.html#aa64bd0c359add4038c0143b5774627bb',1,'ir_Sharp.cpp']]], - ['ksharpbits_2653',['kSharpBits',['../IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae',1,'IRremoteESP8266.h']]], - ['ksharpcommandbits_2654',['kSharpCommandBits',['../IRremoteESP8266_8h.html#ae4cdfc8e358ec738d20c1bda49842ccf',1,'IRremoteESP8266.h']]], - ['ksharpcommandmask_2655',['kSharpCommandMask',['../ir__Sharp_8cpp.html#ad44eda54ade4bef4fdf4451fdb784950',1,'ir_Sharp.cpp']]], - ['ksharpgap_2656',['kSharpGap',['../ir__Sharp_8cpp.html#a77015be2a04274bcb332ec21cb75251e',1,'ir_Sharp.cpp']]], - ['ksharpgapticks_2657',['kSharpGapTicks',['../ir__Sharp_8cpp.html#a4aa110ec2934797f71ddf9bcd34498d1',1,'ir_Sharp.cpp']]], - ['ksharponespace_2658',['kSharpOneSpace',['../ir__Sharp_8cpp.html#a3359539480a203db37c2cf2efd88fdcc',1,'ir_Sharp.cpp']]], - ['ksharponespaceticks_2659',['kSharpOneSpaceTicks',['../ir__Sharp_8cpp.html#a12e18dfd195faae6ca581936434c9063',1,'ir_Sharp.cpp']]], - ['ksharptick_2660',['kSharpTick',['../ir__Sharp_8cpp.html#af417ab19220576243753903657923ba7',1,'ir_Sharp.cpp']]], - ['ksharptogglemask_2661',['kSharpToggleMask',['../ir__Sharp_8cpp.html#a2701123f01683c6927c23c7699bce13a',1,'ir_Sharp.cpp']]], - ['ksharpzerospace_2662',['kSharpZeroSpace',['../ir__Sharp_8cpp.html#ac2ad6123d938999e234896e1635e3063',1,'ir_Sharp.cpp']]], - ['ksharpzerospaceticks_2663',['kSharpZeroSpaceTicks',['../ir__Sharp_8cpp.html#af8c638f77ff29c2d20555343be80e5f0',1,'ir_Sharp.cpp']]], - ['ksherwoodbits_2664',['kSherwoodBits',['../IRremoteESP8266_8h.html#a94abd640c9e7aa225f4a8873a1ddea6a',1,'IRremoteESP8266.h']]], - ['ksherwoodminrepeat_2665',['kSherwoodMinRepeat',['../IRremoteESP8266_8h.html#a2e00b92b55657fc4e140eb85e3a414dc',1,'IRremoteESP8266.h']]], - ['ksilentstr_2666',['kSilentStr',['../IRtext_8cpp.html#a398d3c627c5b95c5d7adfb5308fc7de0',1,'kSilentStr(): IRtext.cpp'],['../IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e',1,'kSilentStr(): IRtext.cpp']]], - ['ksinglerepeat_2667',['kSingleRepeat',['../IRremoteESP8266_8h.html#a46835b1e2d279570fd818749e88180d4',1,'IRremoteESP8266.h']]], - ['ksleepstr_2668',['kSleepStr',['../IRtext_8cpp.html#a38068788c0ef50e6034dbcffeec1eb36',1,'kSleepStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac743c367e179723b128ad69f124c5',1,'kSleepStr(): IRtext.cpp']]], - ['ksleeptimerstr_2669',['kSleepTimerStr',['../IRtext_8cpp.html#a3402e1f6d78e3c59b71bd0dfdf020b51',1,'kSleepTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa',1,'kSleepTimerStr(): IRtext.cpp']]], - ['kslowstr_2670',['kSlowStr',['../IRtext_8cpp.html#a3131a17a06dff31058579b301227a04f',1,'kSlowStr(): IRtext.cpp'],['../IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473',1,'kSlowStr(): IRtext.cpp']]], - ['ksony12bits_2671',['kSony12Bits',['../IRremoteESP8266_8h.html#aa16fdf708a67dbe22c85ad4bac9b05b6',1,'IRremoteESP8266.h']]], - ['ksony15bits_2672',['kSony15Bits',['../IRremoteESP8266_8h.html#ad868d68d289d618ace266519afa059f4',1,'IRremoteESP8266.h']]], - ['ksony20bits_2673',['kSony20Bits',['../IRremoteESP8266_8h.html#aa9cd1ff8036f6c3a288c4f34af4a5eb4',1,'IRremoteESP8266.h']]], - ['ksonyaltfreq_2674',['kSonyAltFreq',['../ir__Sony_8cpp.html#a05912a15a9a6a4a78416600adc7e526b',1,'ir_Sony.cpp']]], - ['ksonyhdrmark_2675',['kSonyHdrMark',['../ir__Sony_8cpp.html#afac5a232c82e81ac257ddfc94aa4f379',1,'ir_Sony.cpp']]], - ['ksonyhdrmarkticks_2676',['kSonyHdrMarkTicks',['../ir__Sony_8cpp.html#a89abc5f0556f38d462202d1de78cbddb',1,'ir_Sony.cpp']]], - ['ksonyminbits_2677',['kSonyMinBits',['../IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b',1,'IRremoteESP8266.h']]], - ['ksonymingap_2678',['kSonyMinGap',['../ir__Sony_8cpp.html#abfe3a5e1fa2a38ee556326b1ea0e7e11',1,'ir_Sony.cpp']]], - ['ksonymingapticks_2679',['kSonyMinGapTicks',['../ir__Sony_8cpp.html#a150d62f71f79295153bac4694bae0aa3',1,'ir_Sony.cpp']]], - ['ksonyminrepeat_2680',['kSonyMinRepeat',['../IRremoteESP8266_8h.html#a112408429fb4a5cca22a66a351453bad',1,'IRremoteESP8266.h']]], - ['ksonyonemark_2681',['kSonyOneMark',['../ir__Sony_8cpp.html#a490e7ca2b0f81848ae42eb57d0023d13',1,'ir_Sony.cpp']]], - ['ksonyonemarkticks_2682',['kSonyOneMarkTicks',['../ir__Sony_8cpp.html#ad41c0d0496661c2e066056de6974bfe9',1,'ir_Sony.cpp']]], - ['ksonyrptlength_2683',['kSonyRptLength',['../ir__Sony_8cpp.html#a24578b92cf53caa48fa3660f16ec90ec',1,'ir_Sony.cpp']]], - ['ksonyrptlengthticks_2684',['kSonyRptLengthTicks',['../ir__Sony_8cpp.html#a0a7f67ba27e03c35d5df35a2a14a1e19',1,'ir_Sony.cpp']]], - ['ksonyspace_2685',['kSonySpace',['../ir__Sony_8cpp.html#ad09a9eb0dc0b809cea0d0a2a8ff6b9fb',1,'ir_Sony.cpp']]], - ['ksonyspaceticks_2686',['kSonySpaceTicks',['../ir__Sony_8cpp.html#a80dccfab869821cadaf02df664d91eda',1,'ir_Sony.cpp']]], - ['ksonystdfreq_2687',['kSonyStdFreq',['../ir__Sony_8cpp.html#a5e5b14c45909411d160e051f0bc7c63d',1,'ir_Sony.cpp']]], - ['ksonytick_2688',['kSonyTick',['../ir__Sony_8cpp.html#a7ced75a5e9f06f5c68132665d27e01b8',1,'ir_Sony.cpp']]], - ['ksonyzeromark_2689',['kSonyZeroMark',['../ir__Sony_8cpp.html#a7808995a9d2755681f1461d578d5480b',1,'ir_Sony.cpp']]], - ['ksonyzeromarkticks_2690',['kSonyZeroMarkTicks',['../ir__Sony_8cpp.html#a542aed17f98a11ca89456eec507a5225',1,'ir_Sony.cpp']]], - ['kspace_2691',['kSpace',['../ir__Lasertag_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_RC5_RC6.cpp']]], - ['kspacelbracestr_2692',['kSpaceLBraceStr',['../IRtext_8cpp.html#a156ef0014809a3509e7b254a9585e0a1',1,'kSpaceLBraceStr(): IRtext.cpp'],['../IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03',1,'kSpaceLBraceStr(): IRtext.cpp']]], - ['kspacestate_2693',['kSpaceState',['../IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a',1,'IRrecv.h']]], - ['kspecialstr_2694',['kSpecialStr',['../IRtext_8cpp.html#ae80b543c1a3933ec7da34b5a8880fde6',1,'kSpecialStr(): IRtext.cpp'],['../IRtext_8h.html#a37413264af775b482dec58e9fe3dbb44',1,'kSpecialStr(): IRtext.cpp']]], - ['kstartoffset_2695',['kStartOffset',['../IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972',1,'IRrecv.h']]], - ['kstartstr_2696',['kStartStr',['../IRtext_8cpp.html#a2075a48eed571455a88e7dfbc3a547ef',1,'kStartStr(): IRtext.cpp'],['../IRtext_8h.html#ad030c0930697d3c295f3783e8519995c',1,'kStartStr(): IRtext.cpp']]], - ['kstatesizemax_2697',['kStateSizeMax',['../IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2',1,'IRrecv.h']]], - ['kstepstr_2698',['kStepStr',['../IRtext_8cpp.html#ac6c64c4bdc955b6528616db3a4b303c1',1,'kStepStr(): IRtext.cpp'],['../IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3',1,'kStepStr(): IRtext.cpp']]], - ['kstopstate_2699',['kStopState',['../IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3',1,'IRrecv.h']]], - ['kstopstr_2700',['kStopStr',['../IRtext_8cpp.html#a0466188f9064d18622304cd375b18390',1,'kStopStr(): IRtext.cpp'],['../IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b',1,'kStopStr(): IRtext.cpp']]], - ['ksuperstr_2701',['kSuperStr',['../IRtext_8cpp.html#a81e6c76017bc819882a043ac8fcc2854',1,'kSuperStr(): IRtext.cpp'],['../IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7',1,'kSuperStr(): IRtext.cpp']]], - ['kswinghstr_2702',['kSwingHStr',['../IRtext_8cpp.html#a12d4e0afe0f6b96af817ebc95eb0b6f4',1,'kSwingHStr(): IRtext.cpp'],['../IRtext_8h.html#acfad569446290c1da0c102b98344411c',1,'kSwingHStr(): IRtext.cpp']]], - ['kswingstr_2703',['kSwingStr',['../IRtext_8cpp.html#a106174aef3a46450c0a16bef7c36a8c5',1,'kSwingStr(): IRtext.cpp'],['../IRtext_8h.html#a56d1a94eae3422758b2762da008e243c',1,'kSwingStr(): IRtext.cpp']]], - ['kswingvmodestr_2704',['kSwingVModeStr',['../IRtext_8cpp.html#ab71be957190939e2b4643f2e56e1201f',1,'kSwingVModeStr(): IRtext.cpp'],['../IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485',1,'kSwingVModeStr(): IRtext.cpp']]], - ['kswingvstr_2705',['kSwingVStr',['../IRtext_8cpp.html#a6dc1ec788e0659e82219534b5dbb79bc',1,'kSwingVStr(): IRtext.cpp'],['../IRtext_8h.html#a8415af77afcb671c3729d604be51fd22',1,'kSwingVStr(): IRtext.cpp']]], - ['kswingvtogglestr_2706',['kSwingVToggleStr',['../ir__Midea_8h.html#acb6aaab538b7aeb884e9c0fdb46cea90',1,'kSwingVToggleStr(): ir_Midea.h'],['../IRtext_8cpp.html#a3efcf06e5ac4d6309bad1b1d0e49a933',1,'kSwingVToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a27ae4d475898878bd8e71111066629c6',1,'kSwingVToggleStr(): ir_Midea.h']]], - ['ksymphonybits_2707',['kSymphonyBits',['../IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533',1,'IRremoteESP8266.h']]], - ['ksymphonydefaultrepeat_2708',['kSymphonyDefaultRepeat',['../IRremoteESP8266_8h.html#a219b8495f77932c200680f7a2b133880',1,'IRremoteESP8266.h']]], - ['ksymphonyfootergap_2709',['kSymphonyFooterGap',['../ir__Symphony_8cpp.html#a363cf54f4e752932d5e341975c2445f4',1,'ir_Symphony.cpp']]], - ['ksymphonyonemark_2710',['kSymphonyOneMark',['../ir__Symphony_8cpp.html#a469bfa8046ba75f9ba7cda4996dd785d',1,'ir_Symphony.cpp']]], - ['ksymphonyonespace_2711',['kSymphonyOneSpace',['../ir__Symphony_8cpp.html#ab699747bdf28d5a89920041e9c5bb01b',1,'ir_Symphony.cpp']]], - ['ksymphonyzeromark_2712',['kSymphonyZeroMark',['../ir__Symphony_8cpp.html#a58f27b1b9da16ffe73448c7ae3998fc9',1,'ir_Symphony.cpp']]], - ['ksymphonyzerospace_2713',['kSymphonyZeroSpace',['../ir__Symphony_8cpp.html#a9aaf8db419618de847573d2019155287',1,'ir_Symphony.cpp']]], - ['ktcl112acauto_2714',['kTcl112AcAuto',['../ir__Tcl_8h.html#a11a982cc182e446d53ded658cb7a08b6',1,'ir_Tcl.h']]], - ['ktcl112acbitmark_2715',['kTcl112AcBitMark',['../ir__Tcl_8h.html#a45360de532d2262246bf57cb7c08604d',1,'ir_Tcl.h']]], - ['ktcl112acbits_2716',['kTcl112AcBits',['../IRremoteESP8266_8h.html#a4a60d79056d70d3d56067b0bb2ec00f4',1,'IRremoteESP8266.h']]], - ['ktcl112accool_2717',['kTcl112AcCool',['../ir__Tcl_8h.html#a4a4b778086b3ebf856b750fe0c4bd2c0',1,'ir_Tcl.h']]], - ['ktcl112acdefaultrepeat_2718',['kTcl112AcDefaultRepeat',['../IRremoteESP8266_8h.html#a97c82cec6d72845d9ab8a201b0fa5034',1,'IRremoteESP8266.h']]], - ['ktcl112acdry_2719',['kTcl112AcDry',['../ir__Tcl_8h.html#a1d9ec40c278fedf87acb7420ef861101',1,'ir_Tcl.h']]], - ['ktcl112acfan_2720',['kTcl112AcFan',['../ir__Tcl_8h.html#ae07f3dd0a84be27bcb13ba60f4fd025b',1,'ir_Tcl.h']]], - ['ktcl112acfanauto_2721',['kTcl112AcFanAuto',['../ir__Tcl_8h.html#a099935d6d2bf6ebb28332005036c59c0',1,'ir_Tcl.h']]], - ['ktcl112acfanhigh_2722',['kTcl112AcFanHigh',['../ir__Tcl_8h.html#aab9672bac3e83b2e3b3d2cc5f1aa0e1f',1,'ir_Tcl.h']]], - ['ktcl112acfanlow_2723',['kTcl112AcFanLow',['../ir__Tcl_8h.html#a5114fe3f978672fc62c0cd16f6d46dd7',1,'ir_Tcl.h']]], - ['ktcl112acfanmed_2724',['kTcl112AcFanMed',['../ir__Tcl_8h.html#ad8f34f1972da347a169e2eb4ddf3d835',1,'ir_Tcl.h']]], - ['ktcl112acgap_2725',['kTcl112AcGap',['../ir__Tcl_8h.html#a9ccdf5ce9ce325b9813dadbdc855a469',1,'ir_Tcl.h']]], - ['ktcl112achdrmark_2726',['kTcl112AcHdrMark',['../ir__Tcl_8h.html#a56f9f7daf3ada77f8f844afd46a80de9',1,'ir_Tcl.h']]], - ['ktcl112achdrmarktolerance_2727',['kTcl112AcHdrMarkTolerance',['../ir__Tcl_8h.html#ab9d980747b2ddd1b7fb04f00d71af1e7',1,'ir_Tcl.h']]], - ['ktcl112achdrspace_2728',['kTcl112AcHdrSpace',['../ir__Tcl_8h.html#a9135b4d7496383ad3a7da7c3ac7c92b4',1,'ir_Tcl.h']]], - ['ktcl112acheat_2729',['kTcl112AcHeat',['../ir__Tcl_8h.html#ae573f856f0bdf50406e9be84b1aa8ade',1,'ir_Tcl.h']]], - ['ktcl112aconespace_2730',['kTcl112AcOneSpace',['../ir__Tcl_8h.html#af1e67019978260ba3f514cd895b54dad',1,'ir_Tcl.h']]], - ['ktcl112acstatelength_2731',['kTcl112AcStateLength',['../IRremoteESP8266_8h.html#a23ba2f5af02242e14ae7eefcd066152e',1,'IRremoteESP8266.h']]], - ['ktcl112acswingvoff_2732',['kTcl112AcSwingVOff',['../ir__Tcl_8h.html#aa78e1b544f392c251093d458e5d21e12',1,'ir_Tcl.h']]], - ['ktcl112acswingvon_2733',['kTcl112AcSwingVOn',['../ir__Tcl_8h.html#a5406fbabd66478d601aebc6939a3788f',1,'ir_Tcl.h']]], - ['ktcl112actempmax_2734',['kTcl112AcTempMax',['../ir__Tcl_8h.html#a60efbe31031e1e9c3a17c7d80cac54cb',1,'ir_Tcl.h']]], - ['ktcl112actempmin_2735',['kTcl112AcTempMin',['../ir__Tcl_8h.html#a30fe65ec015bc4d91cd35ead9cc43dcc',1,'ir_Tcl.h']]], - ['ktcl112actolerance_2736',['kTcl112AcTolerance',['../ir__Tcl_8h.html#a13bbe794b2b59763f7f93f15a3f26820',1,'ir_Tcl.h']]], - ['ktcl112aczerospace_2737',['kTcl112AcZeroSpace',['../ir__Tcl_8h.html#abc05edaeb1a4fa7e6ccf9bda1f66b483',1,'ir_Tcl.h']]], - ['ktechnibelacbitmark_2738',['kTechnibelAcBitMark',['../ir__Technibel_8cpp.html#a82529fd6c6fd51f036b1930613ed5e9b',1,'ir_Technibel.cpp']]], - ['ktechnibelacbits_2739',['kTechnibelAcBits',['../IRremoteESP8266_8h.html#a0c4bc77a2443037598940b955c83eb82',1,'IRremoteESP8266.h']]], - ['ktechnibelaccool_2740',['kTechnibelAcCool',['../ir__Technibel_8h.html#aa0a74f362c3d9160660763d89195b387',1,'ir_Technibel.h']]], - ['ktechnibelacdefaultrepeat_2741',['kTechnibelAcDefaultRepeat',['../IRremoteESP8266_8h.html#a0e797e69cca806e73c902f5d9dfe1bf1',1,'IRremoteESP8266.h']]], - ['ktechnibelacdry_2742',['kTechnibelAcDry',['../ir__Technibel_8h.html#afb6b5b6b2e88fb06f1706c57e03672d8',1,'ir_Technibel.h']]], - ['ktechnibelacfan_2743',['kTechnibelAcFan',['../ir__Technibel_8h.html#a9b9c7971f9f76dbb8b742727f48408d6',1,'ir_Technibel.h']]], - ['ktechnibelacfanhigh_2744',['kTechnibelAcFanHigh',['../ir__Technibel_8h.html#a7ec8f7e2911b0a8db8714aa06377a017',1,'ir_Technibel.h']]], - ['ktechnibelacfanlow_2745',['kTechnibelAcFanLow',['../ir__Technibel_8h.html#a3be4c4dbdfe0ef1ab7f7f2308ee5f906',1,'ir_Technibel.h']]], - ['ktechnibelacfanmedium_2746',['kTechnibelAcFanMedium',['../ir__Technibel_8h.html#ae390f138de9e24940a066a75f960ce67',1,'ir_Technibel.h']]], - ['ktechnibelacfansize_2747',['kTechnibelAcFanSize',['../ir__Technibel_8h.html#a29d3d827bd0486f4f1c6c8090bfae7b3',1,'ir_Technibel.h']]], - ['ktechnibelacfreq_2748',['kTechnibelAcFreq',['../ir__Technibel_8cpp.html#ab5e0c7c1bd254eb3dff6e81153cdce95',1,'ir_Technibel.cpp']]], - ['ktechnibelacgap_2749',['kTechnibelAcGap',['../ir__Technibel_8cpp.html#a9e400dd55fa32e3c91880a55a87e1e5e',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrmark_2750',['kTechnibelAcHdrMark',['../ir__Technibel_8cpp.html#af72f1210a259c1dde24fc39e6b026521',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrspace_2751',['kTechnibelAcHdrSpace',['../ir__Technibel_8cpp.html#a1703e3c4105c858b4534b0e40302cfae',1,'ir_Technibel.cpp']]], - ['ktechnibelacheader_2752',['kTechnibelAcHeader',['../ir__Technibel_8h.html#a11b2a3eaded5d7890c65f8eaa7c445a6',1,'ir_Technibel.h']]], - ['ktechnibelacheaderoffset_2753',['kTechnibelAcHeaderOffset',['../ir__Technibel_8h.html#a750df711adeb31d902ca20b572c6f541',1,'ir_Technibel.h']]], - ['ktechnibelacheat_2754',['kTechnibelAcHeat',['../ir__Technibel_8h.html#a517fa48501655e8d4f0f86146a8761d3',1,'ir_Technibel.h']]], - ['ktechnibelaconespace_2755',['kTechnibelAcOneSpace',['../ir__Technibel_8cpp.html#ae70ce0b82874c4bc0797f510353e2cc3',1,'ir_Technibel.cpp']]], - ['ktechnibelacresetstate_2756',['kTechnibelAcResetState',['../ir__Technibel_8h.html#a1c526f7f53f689c095c70687d6bd20ee',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxc_2757',['kTechnibelAcTempMaxC',['../ir__Technibel_8h.html#a141efb22c7ac16c9218ecfde9577b132',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxf_2758',['kTechnibelAcTempMaxF',['../ir__Technibel_8h.html#a048b6c574309291de654ee0340ffbe3c',1,'ir_Technibel.h']]], - ['ktechnibelactempminc_2759',['kTechnibelAcTempMinC',['../ir__Technibel_8h.html#a82962d65e7835dc589bd2a9ace171de7',1,'ir_Technibel.h']]], - ['ktechnibelactempminf_2760',['kTechnibelAcTempMinF',['../ir__Technibel_8h.html#acbe3d2e41a0c2bf1b8857ab97cbb7b3c',1,'ir_Technibel.h']]], - ['ktechnibelactimerhoursoffset_2761',['kTechnibelAcTimerHoursOffset',['../ir__Technibel_8h.html#a6f4c74a83e3734474d84dc305f975cd1',1,'ir_Technibel.h']]], - ['ktechnibelactimermax_2762',['kTechnibelAcTimerMax',['../ir__Technibel_8h.html#af689f2686034aa45b19be75077a0baa6',1,'ir_Technibel.h']]], - ['ktechnibelaczerospace_2763',['kTechnibelAcZeroSpace',['../ir__Technibel_8cpp.html#a28f5833aa7529badc4785fac661974b4',1,'ir_Technibel.cpp']]], - ['ktecoauto_2764',['kTecoAuto',['../ir__Teco_8h.html#a79178aa25d9f60c0a838285369e1b910',1,'ir_Teco.h']]], - ['ktecobitmark_2765',['kTecoBitMark',['../ir__Teco_8cpp.html#a0aa2e352f4a61027b17467e92863883b',1,'ir_Teco.cpp']]], - ['ktecobits_2766',['kTecoBits',['../IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d',1,'IRremoteESP8266.h']]], - ['ktecocool_2767',['kTecoCool',['../ir__Teco_8h.html#a554686c72b6bc487d03c9461f9633a6b',1,'ir_Teco.h']]], - ['ktecodefaultrepeat_2768',['kTecoDefaultRepeat',['../IRremoteESP8266_8h.html#a095362359f34c1ee5ab71d56e6d64f64',1,'IRremoteESP8266.h']]], - ['ktecodry_2769',['kTecoDry',['../ir__Teco_8h.html#af7efcf371967eb97fd31d54016a82006',1,'ir_Teco.h']]], - ['ktecofan_2770',['kTecoFan',['../ir__Teco_8h.html#a7385fe198242c9203e3a5d5ffb7beb4d',1,'ir_Teco.h']]], - ['ktecofanauto_2771',['kTecoFanAuto',['../ir__Teco_8h.html#a43e58c0158efac1c4e5497c619b5674c',1,'ir_Teco.h']]], - ['ktecofanhigh_2772',['kTecoFanHigh',['../ir__Teco_8h.html#a0a73f5f892e7f9812793fbf5dab458dd',1,'ir_Teco.h']]], - ['ktecofanlow_2773',['kTecoFanLow',['../ir__Teco_8h.html#abac7443a86fb304376dd94a9c10e6940',1,'ir_Teco.h']]], - ['ktecofanmed_2774',['kTecoFanMed',['../ir__Teco_8h.html#a35f313943f9e2f5b69d5237fdaa64914',1,'ir_Teco.h']]], - ['ktecogap_2775',['kTecoGap',['../ir__Teco_8cpp.html#a6a153d84287fba3bd11e3e5054fd7e30',1,'ir_Teco.cpp']]], - ['ktecohdrmark_2776',['kTecoHdrMark',['../ir__Teco_8cpp.html#ada983ce2d6f03949cddfe06191ab05d9',1,'ir_Teco.cpp']]], - ['ktecohdrspace_2777',['kTecoHdrSpace',['../ir__Teco_8cpp.html#acf417d42fd39dbaf06282162ab5b17e2',1,'ir_Teco.cpp']]], - ['ktecoheat_2778',['kTecoHeat',['../ir__Teco_8h.html#ab6f9dbeb2838b124be12d08fd9b209bb',1,'ir_Teco.h']]], - ['ktecomaxtemp_2779',['kTecoMaxTemp',['../ir__Teco_8h.html#a1c24aa0cc4d475a5eb97d5208f4dcf06',1,'ir_Teco.h']]], - ['ktecomintemp_2780',['kTecoMinTemp',['../ir__Teco_8h.html#a54da99bfcbea5e076c3ca2934e769ab1',1,'ir_Teco.h']]], - ['ktecoonespace_2781',['kTecoOneSpace',['../ir__Teco_8cpp.html#a62eccbf6773ea8fbc18432627c62d0d5',1,'ir_Teco.cpp']]], - ['ktecoreset_2782',['kTecoReset',['../ir__Teco_8h.html#acf559a2cd772835ce46c3f673cd95806',1,'ir_Teco.h']]], - ['ktecozerospace_2783',['kTecoZeroSpace',['../ir__Teco_8cpp.html#a8dc1f6ea44519a0930b48f69a83a7363',1,'ir_Teco.cpp']]], - ['kteknopointbitmark_2784',['kTeknopointBitMark',['../ir__Teknopoint_8cpp.html#ab58c977a7dc7dfffc8dab82940d149e2',1,'ir_Teknopoint.cpp']]], - ['kteknopointbits_2785',['kTeknopointBits',['../IRremoteESP8266_8h.html#a380abb9cac983d1ceedae89505085e3c',1,'IRremoteESP8266.h']]], - ['kteknopointextratol_2786',['kTeknopointExtraTol',['../ir__Teknopoint_8cpp.html#a55a09fd073a5de698242ff1d9b784c84',1,'ir_Teknopoint.cpp']]], - ['kteknopointfreq_2787',['kTeknopointFreq',['../ir__Teknopoint_8cpp.html#adb1bc8cf295e79b3ee7711fa4529f5b6',1,'ir_Teknopoint.cpp']]], - ['kteknopointhdrmark_2788',['kTeknopointHdrMark',['../ir__Teknopoint_8cpp.html#a80ce4d25a5243bafafead2ea859a32aa',1,'ir_Teknopoint.cpp']]], - ['kteknopointhdrspace_2789',['kTeknopointHdrSpace',['../ir__Teknopoint_8cpp.html#aa73bdfdaf8cb26f8c50e7bd7fb9029de',1,'ir_Teknopoint.cpp']]], - ['kteknopointonespace_2790',['kTeknopointOneSpace',['../ir__Teknopoint_8cpp.html#abf3b750dc47d44bfedc5def28b973a0a',1,'ir_Teknopoint.cpp']]], - ['kteknopointstatelength_2791',['kTeknopointStateLength',['../IRremoteESP8266_8h.html#a5a443c73a07c0e4f8c2f70953fe9ec6e',1,'IRremoteESP8266.h']]], - ['kteknopointzerospace_2792',['kTeknopointZeroSpace',['../ir__Teknopoint_8cpp.html#a788fa66858d2c3fcef231c836f97f90d',1,'ir_Teknopoint.cpp']]], - ['ktempdownstr_2793',['kTempDownStr',['../IRtext_8cpp.html#a3fa3262c5631c9357a5723c70dc3be12',1,'kTempDownStr(): IRtext.cpp'],['../IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395',1,'kTempDownStr(): IRtext.cpp']]], - ['ktempstr_2794',['kTempStr',['../IRtext_8cpp.html#a487bd9a4225536aba2595be0b5cb8039',1,'kTempStr(): IRtext.cpp'],['../IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb',1,'kTempStr(): IRtext.cpp']]], - ['ktempupstr_2795',['kTempUpStr',['../IRtext_8cpp.html#a7c4f18322b600aaaf5a8716654d05dc3',1,'kTempUpStr(): IRtext.cpp'],['../IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86',1,'kTempUpStr(): IRtext.cpp']]], - ['kthreeletterdayofweekstr_2796',['kThreeLetterDayOfWeekStr',['../IRtext_8cpp.html#ae16da0464743313a1fbeae92dcfcebbd',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp'],['../IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp']]], - ['ktimeoutms_2797',['kTimeoutMs',['../IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b',1,'IRrecv.h']]], - ['ktimerstr_2798',['kTimerStr',['../IRtext_8cpp.html#a2b5219ba887cfbc578fb880ebada832a',1,'kTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109',1,'kTimerStr(): IRtext.cpp']]], - ['ktimesep_2799',['kTimeSep',['../IRtext_8cpp.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp'],['../IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp']]], - ['ktogglestr_2800',['kToggleStr',['../IRtext_8cpp.html#a33860b90859d19191c9759b099283b37',1,'kToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e',1,'kToggleStr(): IRtext.cpp']]], - ['ktolerance_2801',['kTolerance',['../IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272',1,'IRrecv.h']]], - ['ktopstr_2802',['kTopStr',['../IRtext_8cpp.html#a65a8bf89c9dd0277607478277c0c7088',1,'kTopStr(): IRtext.cpp'],['../IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2',1,'kTopStr(): IRtext.cpp']]], - ['ktoshibaacauto_2803',['kToshibaAcAuto',['../ir__Toshiba_8h.html#a4730189595a884ae6535805948e096aa',1,'ir_Toshiba.h']]], - ['ktoshibaacbitmark_2804',['kToshibaAcBitMark',['../ir__Toshiba_8cpp.html#adff1c244103ff274243b8e20ca209866',1,'ir_Toshiba.cpp']]], - ['ktoshibaacbits_2805',['kToshibaACBits',['../IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitslong_2806',['kToshibaACBitsLong',['../IRremoteESP8266_8h.html#aaf9e746cb8ee9e246f435ba4416a5428',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitsshort_2807',['kToshibaACBitsShort',['../IRremoteESP8266_8h.html#a7483cfe84003b0e24bfa846c240afc4c',1,'IRremoteESP8266.h']]], - ['ktoshibaaccool_2808',['kToshibaAcCool',['../ir__Toshiba_8h.html#a2f30e65bb092365d1a8bcb1f3395333a',1,'ir_Toshiba.h']]], - ['ktoshibaacdry_2809',['kToshibaAcDry',['../ir__Toshiba_8h.html#a10b77d1038efc59775398789c33af91e',1,'ir_Toshiba.h']]], - ['ktoshibaaceconoon_2810',['kToshibaAcEconoOn',['../ir__Toshiba_8h.html#ab95da2ea12790cd327519615dbb48efe',1,'ir_Toshiba.h']]], - ['ktoshibaacfan_2811',['kToshibaAcFan',['../ir__Toshiba_8h.html#a4ecdbe268368c9d22a690bc5e394586f',1,'ir_Toshiba.h']]], - ['ktoshibaacfanauto_2812',['kToshibaAcFanAuto',['../ir__Toshiba_8h.html#a69f52e19a5b0e68abda00b680fbef7f6',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmax_2813',['kToshibaAcFanMax',['../ir__Toshiba_8h.html#a0f6ffde3491f464166d6064d7dfe5ba4',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmed_2814',['kToshibaAcFanMed',['../ir__Toshiba_8h.html#a3ff967af7d1a30c7c5cb958eaa5cbd58',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmin_2815',['kToshibaAcFanMin',['../ir__Toshiba_8h.html#ab2c5eea9ccabf2e0e56bc03baec5d898',1,'ir_Toshiba.h']]], - ['ktoshibaachdrmark_2816',['kToshibaAcHdrMark',['../ir__Toshiba_8cpp.html#a2eac25ff2a381ad6690623641153a780',1,'ir_Toshiba.cpp']]], - ['ktoshibaachdrspace_2817',['kToshibaAcHdrSpace',['../ir__Toshiba_8cpp.html#a0ae9047d5a204f320c06736fa40d0a7d',1,'ir_Toshiba.cpp']]], - ['ktoshibaacheat_2818',['kToshibaAcHeat',['../ir__Toshiba_8h.html#aa9ec24f9a5e460aa7017f642ce7a4c0d',1,'ir_Toshiba.h']]], - ['ktoshibaacinvertedlength_2819',['kToshibaAcInvertedLength',['../ir__Toshiba_8h.html#adfc646265ec1e4a03646d7f3b867d65b',1,'ir_Toshiba.h']]], - ['ktoshibaaclengthbyte_2820',['kToshibaAcLengthByte',['../ir__Toshiba_8h.html#a4e3f39edb4cc3a8c7b94ff9cce0e01d0',1,'ir_Toshiba.h']]], - ['ktoshibaacmaxtemp_2821',['kToshibaAcMaxTemp',['../ir__Toshiba_8h.html#a475028a2a519e3310506ceac0a5dc4e6',1,'ir_Toshiba.h']]], - ['ktoshibaacmingap_2822',['kToshibaAcMinGap',['../ir__Toshiba_8cpp.html#ade7642284aa7c6a638b9fab45610cc59',1,'ir_Toshiba.cpp']]], - ['ktoshibaacminlength_2823',['kToshibaAcMinLength',['../ir__Toshiba_8h.html#a105b24e11afdd102097c81bf050a0f3a',1,'ir_Toshiba.h']]], - ['ktoshibaacminrepeat_2824',['kToshibaACMinRepeat',['../IRremoteESP8266_8h.html#a8fca6a7c3cd608ff49cab35f24af0546',1,'IRremoteESP8266.h']]], - ['ktoshibaacmintemp_2825',['kToshibaAcMinTemp',['../ir__Toshiba_8h.html#ad0e8e76aabc38ac7ba2f13a009de98e0',1,'ir_Toshiba.h']]], - ['ktoshibaacoff_2826',['kToshibaAcOff',['../ir__Toshiba_8h.html#a58b75ee3ddd1325bd4da71902d840c1d',1,'ir_Toshiba.h']]], - ['ktoshibaaconespace_2827',['kToshibaAcOneSpace',['../ir__Toshiba_8cpp.html#a787330c9e5f9d30e8df157acc15f56dd',1,'ir_Toshiba.cpp']]], - ['ktoshibaacstatelength_2828',['kToshibaACStateLength',['../IRremoteESP8266_8h.html#ad3be6a1b9241c20bb1464a2cb80b97d2',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthlong_2829',['kToshibaACStateLengthLong',['../IRremoteESP8266_8h.html#a3c0ebc01f8a61422c26b84e78fcec8f7',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthshort_2830',['kToshibaACStateLengthShort',['../IRremoteESP8266_8h.html#a5fa111fa9d560834605eff2941c0cacc',1,'IRremoteESP8266.h']]], - ['ktoshibaacswingoff_2831',['kToshibaAcSwingOff',['../ir__Toshiba_8h.html#ab556d401c0f8d822a7ef9db5c89d9c87',1,'ir_Toshiba.h']]], - ['ktoshibaacswingon_2832',['kToshibaAcSwingOn',['../ir__Toshiba_8h.html#ac5815fcd06c734de58253e64f0b4fb7f',1,'ir_Toshiba.h']]], - ['ktoshibaacswingstep_2833',['kToshibaAcSwingStep',['../ir__Toshiba_8h.html#aff168c247bc0ea425f805f595cb14012',1,'ir_Toshiba.h']]], - ['ktoshibaacswingtoggle_2834',['kToshibaAcSwingToggle',['../ir__Toshiba_8h.html#a0a2c37d609c5085f68bdfcaef1d8a05e',1,'ir_Toshiba.h']]], - ['ktoshibaacturboon_2835',['kToshibaAcTurboOn',['../ir__Toshiba_8h.html#a8f84e028f12a8fac27366893b65faba7',1,'ir_Toshiba.h']]], - ['ktoshibaacusualgap_2836',['kToshibaAcUsualGap',['../ir__Toshiba_8cpp.html#ab8b9142b37e7cbecac3544f016791a78',1,'ir_Toshiba.cpp']]], - ['ktoshibaaczerospace_2837',['kToshibaAcZeroSpace',['../ir__Toshiba_8cpp.html#ab2fc2833cfb31d872894073687eebd99',1,'ir_Toshiba.cpp']]], - ['ktranscoldauto_2838',['kTranscoldAuto',['../ir__Transcold_8h.html#ad764a143afb464fe25fe5d670241ef87',1,'ir_Transcold.h']]], - ['ktranscoldbitmark_2839',['kTranscoldBitMark',['../ir__Transcold_8cpp.html#acc3092436f39e583e4a2e51851543fec',1,'ir_Transcold.cpp']]], - ['ktranscoldbits_2840',['kTranscoldBits',['../IRremoteESP8266_8h.html#abe50a182c1f65378337705d2784e2fdb',1,'IRremoteESP8266.h']]], - ['ktranscoldcmdfan_2841',['kTranscoldCmdFan',['../ir__Transcold_8h.html#a97b418d9a169e5e79f1ee08fd433c62f',1,'ir_Transcold.h']]], - ['ktranscoldcool_2842',['kTranscoldCool',['../ir__Transcold_8h.html#ad1fcfe19e632b7dc8489cee494d48436',1,'ir_Transcold.h']]], - ['ktranscolddefaultrepeat_2843',['kTranscoldDefaultRepeat',['../IRremoteESP8266_8h.html#a17cef98fbfae6a84c0a3e009fb3c31d0',1,'IRremoteESP8266.h']]], - ['ktranscolddry_2844',['kTranscoldDry',['../ir__Transcold_8h.html#a2f185d4fb3a103c15b537557e24aff09',1,'ir_Transcold.h']]], - ['ktranscoldfan_2845',['kTranscoldFan',['../ir__Transcold_8h.html#a7710625ad8497f1baa6a6d4de2ca8be1',1,'ir_Transcold.h']]], - ['ktranscoldfanauto_2846',['kTranscoldFanAuto',['../ir__Transcold_8h.html#a89f832806c8b3d7311070a285fc757ec',1,'ir_Transcold.h']]], - ['ktranscoldfanauto0_2847',['kTranscoldFanAuto0',['../ir__Transcold_8h.html#a813d31eace1b1a6c4d7b2efb5eddb9af',1,'ir_Transcold.h']]], - ['ktranscoldfanfixed_2848',['kTranscoldFanFixed',['../ir__Transcold_8h.html#ac3afe530635393f2d642cecd7e77b131',1,'ir_Transcold.h']]], - ['ktranscoldfanmax_2849',['kTranscoldFanMax',['../ir__Transcold_8h.html#aa5b9f6cd6aa930a856b26e7714575e85',1,'ir_Transcold.h']]], - ['ktranscoldfanmed_2850',['kTranscoldFanMed',['../ir__Transcold_8h.html#ad37f4a57666b991be80e647de6b4ca65',1,'ir_Transcold.h']]], - ['ktranscoldfanmin_2851',['kTranscoldFanMin',['../ir__Transcold_8h.html#a4ddaefba3d91ee7aa25b603f1034af9c',1,'ir_Transcold.h']]], - ['ktranscoldfantempcode_2852',['kTranscoldFanTempCode',['../ir__Transcold_8h.html#a57eef64332f604b0c71557270ae255ad',1,'ir_Transcold.h']]], - ['ktranscoldfanzonefollow_2853',['kTranscoldFanZoneFollow',['../ir__Transcold_8h.html#aa78ff958ca560d1db1e69e3bd2bcd5e3',1,'ir_Transcold.h']]], - ['ktranscoldhdrmark_2854',['kTranscoldHdrMark',['../ir__Transcold_8cpp.html#aa999da00de9866212cacc740bb66d5f6',1,'ir_Transcold.cpp']]], - ['ktranscoldhdrspace_2855',['kTranscoldHdrSpace',['../ir__Transcold_8cpp.html#a0568fcecce190a29828771add3386b6a',1,'ir_Transcold.cpp']]], - ['ktranscoldheat_2856',['kTranscoldHeat',['../ir__Transcold_8h.html#ad109eb1c3cb044994179fafdbfc107e2',1,'ir_Transcold.h']]], - ['ktranscoldknowngoodstate_2857',['kTranscoldKnownGoodState',['../ir__Transcold_8h.html#a385409f55006ad7fedca2d335b69bf39',1,'ir_Transcold.h']]], - ['ktranscoldoff_2858',['kTranscoldOff',['../ir__Transcold_8h.html#a55d930cdd8e4246de18832bbd88a7d99',1,'ir_Transcold.h']]], - ['ktranscoldonespace_2859',['kTranscoldOneSpace',['../ir__Transcold_8cpp.html#aadd9575e345b8c57b4e2c65bcdb3123d',1,'ir_Transcold.cpp']]], - ['ktranscoldprefix_2860',['kTranscoldPrefix',['../ir__Transcold_8h.html#aaef68d4ab70d54b64486b7ba27a15822',1,'ir_Transcold.h']]], - ['ktranscoldswing_2861',['kTranscoldSwing',['../ir__Transcold_8h.html#af467e8cfb7f71abb609f4b9673908937',1,'ir_Transcold.h']]], - ['ktranscoldswingh_2862',['kTranscoldSwingH',['../ir__Transcold_8h.html#a300cfff72391f0c7c0caa97d49a73918',1,'ir_Transcold.h']]], - ['ktranscoldswingv_2863',['kTranscoldSwingV',['../ir__Transcold_8h.html#acfb0faab9bcf147c5dab61bee2cd93c9',1,'ir_Transcold.h']]], - ['ktranscoldtempmax_2864',['kTranscoldTempMax',['../ir__Transcold_8h.html#a5c9be5911208f2f7062a966b3deda0cd',1,'ir_Transcold.h']]], - ['ktranscoldtempmin_2865',['kTranscoldTempMin',['../ir__Transcold_8h.html#a52ff579c8e54611aed6be38d9907af57',1,'ir_Transcold.h']]], - ['ktranscoldtempsize_2866',['kTranscoldTempSize',['../ir__Transcold_8h.html#adeffd84ae91146e1ac5b27735193ba55',1,'ir_Transcold.h']]], - ['ktranscoldunknown_2867',['kTranscoldUnknown',['../ir__Transcold_8h.html#af52672df48539c826ccf8ffc1e3f9927',1,'ir_Transcold.h']]], - ['ktranscoldzerospace_2868',['kTranscoldZeroSpace',['../ir__Transcold_8cpp.html#af932911d55d7eee66ee217cb8ad5d4d4',1,'ir_Transcold.cpp']]], - ['ktrotecauto_2869',['kTrotecAuto',['../ir__Trotec_8h.html#a53b2687b96f8e69ec6f57dd2ac7a6dfa',1,'ir_Trotec.h']]], - ['ktrotecbitmark_2870',['kTrotecBitMark',['../ir__Trotec_8cpp.html#a870b2da19855eff625a2834ca7fd8765',1,'ir_Trotec.cpp']]], - ['ktrotecbits_2871',['kTrotecBits',['../IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2',1,'IRremoteESP8266.h']]], - ['ktroteccool_2872',['kTrotecCool',['../ir__Trotec_8h.html#add33a35046e4270ad9ff3b998526d5d1',1,'ir_Trotec.h']]], - ['ktrotecdefaultrepeat_2873',['kTrotecDefaultRepeat',['../IRremoteESP8266_8h.html#a4c0411462f2854a8606deca09ed15df5',1,'IRremoteESP8266.h']]], - ['ktrotecdeftemp_2874',['kTrotecDefTemp',['../ir__Trotec_8h.html#ac28d1d0ea6db18716a7d9d21e84178c0',1,'ir_Trotec.h']]], - ['ktrotecdry_2875',['kTrotecDry',['../ir__Trotec_8h.html#abdaa1836c6bc90b1d5813df028a76e21',1,'ir_Trotec.h']]], - ['ktrotecfan_2876',['kTrotecFan',['../ir__Trotec_8h.html#a9309d528d50dd542a5184a51fb101a6a',1,'ir_Trotec.h']]], - ['ktrotecfanhigh_2877',['kTrotecFanHigh',['../ir__Trotec_8h.html#ae780f0bb6b9b83f3dbcc1c1e282e5436',1,'ir_Trotec.h']]], - ['ktrotecfanlow_2878',['kTrotecFanLow',['../ir__Trotec_8h.html#aa1c3695c1becc935d2a3b2691996a17b',1,'ir_Trotec.h']]], - ['ktrotecfanmed_2879',['kTrotecFanMed',['../ir__Trotec_8h.html#abae1944f529099ff4736b6cb13bcbeda',1,'ir_Trotec.h']]], - ['ktrotecgap_2880',['kTrotecGap',['../ir__Trotec_8cpp.html#a753ba93d7b757dc58fcf1b4a6bb65ff6',1,'ir_Trotec.cpp']]], - ['ktrotecgapend_2881',['kTrotecGapEnd',['../ir__Trotec_8cpp.html#a5fcc4a020bcebfe90abe12d4a47de372',1,'ir_Trotec.cpp']]], - ['ktrotechdrmark_2882',['kTrotecHdrMark',['../ir__Trotec_8cpp.html#a809faed7ee2fef78a5b8271a2c5ddd10',1,'ir_Trotec.cpp']]], - ['ktrotechdrspace_2883',['kTrotecHdrSpace',['../ir__Trotec_8cpp.html#a5d42cd98bf737dd8161572afa393be1e',1,'ir_Trotec.cpp']]], - ['ktrotecintro1_2884',['kTrotecIntro1',['../ir__Trotec_8h.html#aabc5c6a9b4867c25d84ffe2839e88564',1,'ir_Trotec.h']]], - ['ktrotecintro2_2885',['kTrotecIntro2',['../ir__Trotec_8h.html#ac33de8b2fc4b70bb272a56f6bbb68e34',1,'ir_Trotec.h']]], - ['ktrotecmaxtemp_2886',['kTrotecMaxTemp',['../ir__Trotec_8h.html#abfe4004dcac892f575ec1efb09567595',1,'ir_Trotec.h']]], - ['ktrotecmaxtimer_2887',['kTrotecMaxTimer',['../ir__Trotec_8h.html#a8467d1b9983d5750a61817cacb148efd',1,'ir_Trotec.h']]], - ['ktrotecmintemp_2888',['kTrotecMinTemp',['../ir__Trotec_8h.html#a091904af9fee2384e137feab274af7f8',1,'ir_Trotec.h']]], - ['ktroteconespace_2889',['kTrotecOneSpace',['../ir__Trotec_8cpp.html#a570aa73a82089906971932212d99a283',1,'ir_Trotec.cpp']]], - ['ktrotecstatelength_2890',['kTrotecStateLength',['../IRremoteESP8266_8h.html#ae1d2aa52fef81f03b92c35f4970728d2',1,'IRremoteESP8266.h']]], - ['ktroteczerospace_2891',['kTrotecZeroSpace',['../ir__Trotec_8cpp.html#a8e8f85e7b8a8157eb425316b5108d717',1,'ir_Trotec.cpp']]], - ['ktruestr_2892',['kTrueStr',['../IRtext_8cpp.html#a28a627d6f48d7d06a560f9613e4550fa',1,'kTrueStr(): IRtext.cpp'],['../IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0',1,'kTrueStr(): IRtext.cpp']]], - ['ktrumaauto_2893',['kTrumaAuto',['../ir__Truma_8h.html#aa539e7b75df4a2542db4fac86c341aae',1,'ir_Truma.h']]], - ['ktrumabits_2894',['kTrumaBits',['../IRremoteESP8266_8h.html#aa5ba6ea5669410e37620b616c75e766f',1,'IRremoteESP8266.h']]], - ['ktrumachecksuminit_2895',['kTrumaChecksumInit',['../ir__Truma_8h.html#aa5aadfae49e282d39b16edd75e3bfe4e',1,'ir_Truma.h']]], - ['ktrumacool_2896',['kTrumaCool',['../ir__Truma_8h.html#adfe6810b410e5c77d3faf5cc25d6cc3a',1,'ir_Truma.h']]], - ['ktrumadefaultstate_2897',['kTrumaDefaultState',['../ir__Truma_8h.html#a78982ad49a52d492472ea25b985f3b5e',1,'ir_Truma.h']]], - ['ktrumafan_2898',['kTrumaFan',['../ir__Truma_8h.html#ac1dfc97d02422f3d95c9aa6d85c4c24f',1,'ir_Truma.h']]], - ['ktrumafanhigh_2899',['kTrumaFanHigh',['../ir__Truma_8h.html#ab4e4af197a48a2fd6932a901c6ccd64e',1,'ir_Truma.h']]], - ['ktrumafanlow_2900',['kTrumaFanLow',['../ir__Truma_8h.html#a84f36ff984a23ec7613e72cf6bfb568a',1,'ir_Truma.h']]], - ['ktrumafanmed_2901',['kTrumaFanMed',['../ir__Truma_8h.html#acaabaf9fea52f17a4747ce7875ba2ed4',1,'ir_Truma.h']]], - ['ktrumafanquiet_2902',['kTrumaFanQuiet',['../ir__Truma_8h.html#a6582d41f790b9fc82fd9c30b913b0943',1,'ir_Truma.h']]], - ['ktrumafootermark_2903',['kTrumaFooterMark',['../ir__Truma_8cpp.html#afe540950135dbd3b355c7c480fd5e536',1,'ir_Truma.cpp']]], - ['ktrumagap_2904',['kTrumaGap',['../ir__Truma_8cpp.html#af9b738db46af724dbb04d2950ee744ab',1,'ir_Truma.cpp']]], - ['ktrumahdrmark_2905',['kTrumaHdrMark',['../ir__Truma_8cpp.html#a4cebd76faecf7a09c5a6c2ccb9b5f917',1,'ir_Truma.cpp']]], - ['ktrumaldrmark_2906',['kTrumaLdrMark',['../ir__Truma_8cpp.html#ab2986992a9aff6dec819d47bdee7b815',1,'ir_Truma.cpp']]], - ['ktrumaldrspace_2907',['kTrumaLdrSpace',['../ir__Truma_8cpp.html#ae0b8d934817dd611ad1a95d15970567d',1,'ir_Truma.cpp']]], - ['ktrumamaxtemp_2908',['kTrumaMaxTemp',['../ir__Truma_8h.html#ae569645f4f21a1c3fb39ed24dad4eef4',1,'ir_Truma.h']]], - ['ktrumamintemp_2909',['kTrumaMinTemp',['../ir__Truma_8h.html#a553ccb38aa5c0a202b2556d5e5664a2b',1,'ir_Truma.h']]], - ['ktrumaonemark_2910',['kTrumaOneMark',['../ir__Truma_8cpp.html#acd542e5de6ea90eccb341c62f7628204',1,'ir_Truma.cpp']]], - ['ktrumaspace_2911',['kTrumaSpace',['../ir__Truma_8cpp.html#a5f6941b73a61eff9c717a06866b5e028',1,'ir_Truma.cpp']]], - ['ktrumatempoffset_2912',['kTrumaTempOffset',['../ir__Truma_8h.html#ac377b70947017722c45a08278597d382',1,'ir_Truma.h']]], - ['ktrumazeromark_2913',['kTrumaZeroMark',['../ir__Truma_8cpp.html#a87a88430e179fe947c3180801cef25d5',1,'ir_Truma.cpp']]], - ['kturbostr_2914',['kTurboStr',['../IRtext_8cpp.html#a9f3f7395d980887699ac5a0c146d37d2',1,'kTurboStr(): IRtext.cpp'],['../IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8',1,'kTurboStr(): IRtext.cpp']]], - ['kturbotogglestr_2915',['kTurboToggleStr',['../IRtext_8cpp.html#a22717e4f7c1683ae1b6feac88441ad2d',1,'kTurboToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a1cb328db0aaa0b2bbb4afa24c9f3d731',1,'kTurboToggleStr(): IRtext.cpp']]], - ['ktypestr_2916',['kTypeStr',['../IRtext_8cpp.html#a284508462cfcbfb66b3002f447e3a002',1,'kTypeStr(): IRtext.cpp'],['../IRtext_8h.html#ab6117f82c4dbbfc229d99cc613d62c94',1,'kTypeStr(): IRtext.cpp']]], - ['kunknownstr_2917',['kUnknownStr',['../IRtext_8cpp.html#a9c6c6d47ce3eb07cc607faa600978029',1,'kUnknownStr(): IRtext.cpp'],['../IRtext_8h.html#aa59176b31741b60729d4279817a7da1b',1,'kUnknownStr(): IRtext.cpp']]], - ['kunknownthreshold_2918',['kUnknownThreshold',['../IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f',1,'IRrecv.h']]], - ['kupperstr_2919',['kUpperStr',['../IRtext_8cpp.html#a887bb7c61f38014d21b025c67102fa0b',1,'kUpperStr(): IRtext.cpp'],['../IRtext_8h.html#a5aea60591627481d90688f655b2eb82a',1,'kUpperStr(): IRtext.cpp']]], - ['kupstr_2920',['kUpStr',['../IRtext_8cpp.html#ab970b3d5239f08f21a8e5e2eae49739f',1,'kUpStr(): IRtext.cpp'],['../IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a',1,'kUpStr(): IRtext.cpp']]], - ['kusedeftol_2921',['kUseDefTol',['../IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c',1,'IRrecv.h']]], - ['kvestelacauto_2922',['kVestelAcAuto',['../ir__Vestel_8h.html#a157e879cbe3b216075e3b7b2db5fdc3c',1,'ir_Vestel.h']]], - ['kvestelacbitmark_2923',['kVestelAcBitMark',['../ir__Vestel_8h.html#a70d7198002c61529956625986aa533f0',1,'ir_Vestel.h']]], - ['kvestelacbits_2924',['kVestelAcBits',['../IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7',1,'IRremoteESP8266.h']]], - ['kvestelaccool_2925',['kVestelAcCool',['../ir__Vestel_8h.html#aa2ec681dd63a976a6b2b182ae590e020',1,'ir_Vestel.h']]], - ['kvestelacdry_2926',['kVestelAcDry',['../ir__Vestel_8h.html#a21a255842a75a932a3a0735851d9c197',1,'ir_Vestel.h']]], - ['kvestelacfan_2927',['kVestelAcFan',['../ir__Vestel_8h.html#aeabf5404a3f66fd1428b6e4c09f24c08',1,'ir_Vestel.h']]], - ['kvestelacfanauto_2928',['kVestelAcFanAuto',['../ir__Vestel_8h.html#ac2f3175c25844414de2c2489595dd851',1,'ir_Vestel.h']]], - ['kvestelacfanautocool_2929',['kVestelAcFanAutoCool',['../ir__Vestel_8h.html#ab40dc2ebe05c77e701e2d5acf16b2658',1,'ir_Vestel.h']]], - ['kvestelacfanautohot_2930',['kVestelAcFanAutoHot',['../ir__Vestel_8h.html#a95dee8baacedb7aa62edbdecf766cdc1',1,'ir_Vestel.h']]], - ['kvestelacfanhigh_2931',['kVestelAcFanHigh',['../ir__Vestel_8h.html#acae63d91ee2a2b448fe1a68b2472e4a3',1,'ir_Vestel.h']]], - ['kvestelacfanlow_2932',['kVestelAcFanLow',['../ir__Vestel_8h.html#a21ce5e539ecb764be8dbad33914f4b87',1,'ir_Vestel.h']]], - ['kvestelacfanmed_2933',['kVestelAcFanMed',['../ir__Vestel_8h.html#a265fa70e0e38caefb45ed007eb25a430',1,'ir_Vestel.h']]], - ['kvestelachdrmark_2934',['kVestelAcHdrMark',['../ir__Vestel_8h.html#a32871ab992bfee13918a50f04508a95a',1,'ir_Vestel.h']]], - ['kvestelachdrspace_2935',['kVestelAcHdrSpace',['../ir__Vestel_8h.html#a2389409048e409b411ea8416829c06ef',1,'ir_Vestel.h']]], - ['kvestelacheat_2936',['kVestelAcHeat',['../ir__Vestel_8h.html#a33d36614992862c41f5e48548b0a45f1',1,'ir_Vestel.h']]], - ['kvestelacion_2937',['kVestelAcIon',['../ir__Vestel_8h.html#a6a661c914fd67e261e2148d797789339',1,'ir_Vestel.h']]], - ['kvestelacmaxtemp_2938',['kVestelAcMaxTemp',['../ir__Vestel_8h.html#a4e49902b2e4fe049fd5969b4532cc7b4',1,'ir_Vestel.h']]], - ['kvestelacmintempc_2939',['kVestelAcMinTempC',['../ir__Vestel_8h.html#ae597f05d0886a5a2aa8c43db187a657b',1,'ir_Vestel.h']]], - ['kvestelacmintemph_2940',['kVestelAcMinTempH',['../ir__Vestel_8h.html#a06977d297c84adac7927c80c7b0e7297',1,'ir_Vestel.h']]], - ['kvestelacnormal_2941',['kVestelAcNormal',['../ir__Vestel_8h.html#afa4c0fafcc806cd22dfb45475631d754',1,'ir_Vestel.h']]], - ['kvestelaconespace_2942',['kVestelAcOneSpace',['../ir__Vestel_8h.html#a507a849ef5e031f40ecc0e5db6ac8dd6',1,'ir_Vestel.h']]], - ['kvestelacsleep_2943',['kVestelAcSleep',['../ir__Vestel_8h.html#abc4701f0a44ed48a139d192f86a7169b',1,'ir_Vestel.h']]], - ['kvestelacstatedefault_2944',['kVestelAcStateDefault',['../ir__Vestel_8h.html#a4207797ae1043280ec6364de5981a791',1,'ir_Vestel.h']]], - ['kvestelacswing_2945',['kVestelAcSwing',['../ir__Vestel_8h.html#aeb764aa28cb134348e64fde5cb4d40f0',1,'ir_Vestel.h']]], - ['kvestelactimestatedefault_2946',['kVestelAcTimeStateDefault',['../ir__Vestel_8h.html#aaf4d9b6a41269ede2101d45cc1549794',1,'ir_Vestel.h']]], - ['kvestelactolerance_2947',['kVestelAcTolerance',['../ir__Vestel_8h.html#a4abe236ac8a801aa03ab843c3e418711',1,'ir_Vestel.h']]], - ['kvestelacturbo_2948',['kVestelAcTurbo',['../ir__Vestel_8h.html#a85b8b744f201b1666f9608f693a61059',1,'ir_Vestel.h']]], - ['kvestelaczerospace_2949',['kVestelAcZeroSpace',['../ir__Vestel_8h.html#a2094b0ff279fb1696b51e57d657efd13',1,'ir_Vestel.h']]], - ['kvoltas122lzf_2950',['kVoltas122LZF',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2a8de4d20c3d39f984be46ee9ead3b2a59',1,'IRsend.h']]], - ['kvoltasbitmark_2951',['kVoltasBitMark',['../ir__Voltas_8cpp.html#aff3e77a8712c4b9132a36b1909727906',1,'ir_Voltas.cpp']]], - ['kvoltasbits_2952',['kVoltasBits',['../IRremoteESP8266_8h.html#ad13056674d7d5fc530123ee1bb754409',1,'IRremoteESP8266.h']]], - ['kvoltascool_2953',['kVoltasCool',['../ir__Voltas_8h.html#a60ce895195221d1344db3b6bfded5422',1,'ir_Voltas.h']]], - ['kvoltasdry_2954',['kVoltasDry',['../ir__Voltas_8h.html#a3a89e1bb4d6f9b0371cb2b1a77f95aa0',1,'ir_Voltas.h']]], - ['kvoltasdrytemp_2955',['kVoltasDryTemp',['../ir__Voltas_8h.html#abb138aeb435b0583c09042f01d7eb42b',1,'ir_Voltas.h']]], - ['kvoltasfan_2956',['kVoltasFan',['../ir__Voltas_8h.html#a5a32539c5a10fb63d4df009968a1cc90',1,'ir_Voltas.h']]], - ['kvoltasfanauto_2957',['kVoltasFanAuto',['../ir__Voltas_8h.html#a68fc7bebcc711e8ca00c664e09f0aff9',1,'ir_Voltas.h']]], - ['kvoltasfanhigh_2958',['kVoltasFanHigh',['../ir__Voltas_8h.html#a6d217a662dd1c9353f3899b2be2dc269',1,'ir_Voltas.h']]], - ['kvoltasfanlow_2959',['kVoltasFanLow',['../ir__Voltas_8h.html#a3b84c9d78f23e694b25edddf5e5ac94a',1,'ir_Voltas.h']]], - ['kvoltasfanmed_2960',['kVoltasFanMed',['../ir__Voltas_8h.html#a0bf9ee213cf9266ea29b6813dc79e165',1,'ir_Voltas.h']]], - ['kvoltasfreq_2961',['kVoltasFreq',['../ir__Voltas_8cpp.html#abf1ddb4b962572b4a4aae323f02d91f1',1,'ir_Voltas.cpp']]], - ['kvoltasheat_2962',['kVoltasHeat',['../ir__Voltas_8h.html#a9f131121d8bff4112de9878be5ce0330',1,'ir_Voltas.h']]], - ['kvoltasmaxtemp_2963',['kVoltasMaxTemp',['../ir__Voltas_8h.html#a21a7e03f17b6daacd82037b892177724',1,'ir_Voltas.h']]], - ['kvoltasmintemp_2964',['kVoltasMinTemp',['../ir__Voltas_8h.html#a85f2d29327aa19177ea026a049c0fe52',1,'ir_Voltas.h']]], - ['kvoltasonespace_2965',['kVoltasOneSpace',['../ir__Voltas_8cpp.html#a5ad53f57f302eb44dfb773304c872018',1,'ir_Voltas.cpp']]], - ['kvoltasstatelength_2966',['kVoltasStateLength',['../IRremoteESP8266_8h.html#a336bd721135fc8b869941cd3aa73646e',1,'IRremoteESP8266.h']]], - ['kvoltasswinghchange_2967',['kVoltasSwingHChange',['../ir__Voltas_8h.html#a92242c38b240f5134e1a6c2200b6d0de',1,'ir_Voltas.h']]], - ['kvoltasswinghnochange_2968',['kVoltasSwingHNoChange',['../ir__Voltas_8h.html#acb66394dca0f3606066f61077444b0d3',1,'ir_Voltas.h']]], - ['kvoltasunknown_2969',['kVoltasUnknown',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2aa804f5b34349056dea270669f8b67229',1,'IRsend.h']]], - ['kvoltaszerospace_2970',['kVoltasZeroSpace',['../ir__Voltas_8cpp.html#abcfc7887357e19c6d74b5befddfa7eb4',1,'ir_Voltas.cpp']]], - ['kwallstr_2971',['kWallStr',['../IRtext_8cpp.html#a860a71561b888c82318daad9f2c34592',1,'kWallStr(): IRtext.cpp'],['../IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29',1,'kWallStr(): IRtext.cpp']]], - ['kweeklytimerstr_2972',['kWeeklyTimerStr',['../IRtext_8cpp.html#aaf0b7bf26b4710a4c032cec9e55c545a',1,'kWeeklyTimerStr(): IRtext.cpp'],['../IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa',1,'kWeeklyTimerStr(): IRtext.cpp']]], - ['kwhirlpoolacauto_2973',['kWhirlpoolAcAuto',['../ir__Whirlpool_8h.html#a2f3cc5447f8042e9c2eae0c2e0dc1b80',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacautotemp_2974',['kWhirlpoolAcAutoTemp',['../ir__Whirlpool_8h.html#a314b66dc86a7f622d73d3973d9dca86d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacbitmark_2975',['kWhirlpoolAcBitMark',['../ir__Whirlpool_8cpp.html#a5c076ca2e18927f8b0594cb74a7de1ff',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacbits_2976',['kWhirlpoolAcBits',['../IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacchecksumbyte1_2977',['kWhirlpoolAcChecksumByte1',['../ir__Whirlpool_8h.html#ab199c13354730c715debbeed63182cbd',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacchecksumbyte2_2978',['kWhirlpoolAcChecksumByte2',['../ir__Whirlpool_8h.html#a37d1a2fd814ccf83062325225bddb9be',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommand6thsense_2979',['kWhirlpoolAcCommand6thSense',['../ir__Whirlpool_8h.html#a48b1309aab30dd871ce047881680efa2',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandfanspeed_2980',['kWhirlpoolAcCommandFanSpeed',['../ir__Whirlpool_8h.html#a4712f7dd6c5631f6aa692eeb99fa3963',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandifeel_2981',['kWhirlpoolAcCommandIFeel',['../ir__Whirlpool_8h.html#a5cb95c379d033d7f5b0c81755f1d376f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandlight_2982',['kWhirlpoolAcCommandLight',['../ir__Whirlpool_8h.html#af6ae6f50d9dbfa610b7033181e4f7eb1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandmode_2983',['kWhirlpoolAcCommandMode',['../ir__Whirlpool_8h.html#ab03770a941b7277a66fe65003497e183',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandofftimer_2984',['kWhirlpoolAcCommandOffTimer',['../ir__Whirlpool_8h.html#a072883e3780aa0970183ab330db26118',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandontimer_2985',['kWhirlpoolAcCommandOnTimer',['../ir__Whirlpool_8h.html#a54cbadf2ded73e66d6d12b6622249bdc',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandpower_2986',['kWhirlpoolAcCommandPower',['../ir__Whirlpool_8h.html#ac215c2827ebfe25a896d53e576b643d1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsleep_2987',['kWhirlpoolAcCommandSleep',['../ir__Whirlpool_8h.html#a695c9d69953ad2663512ede38e619b09',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsuper_2988',['kWhirlpoolAcCommandSuper',['../ir__Whirlpool_8h.html#a4da2162e70a7257c5f4149e8556816d4',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandswing_2989',['kWhirlpoolAcCommandSwing',['../ir__Whirlpool_8h.html#a320e57c0727a74f049883c77233647a9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandtemp_2990',['kWhirlpoolAcCommandTemp',['../ir__Whirlpool_8h.html#a6e567d58af9bc3fb246e3d47a09fb065',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccool_2991',['kWhirlpoolAcCool',['../ir__Whirlpool_8h.html#a9574c0a604ffee1df43222344f649db8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacdefaultrepeat_2992',['kWhirlpoolAcDefaultRepeat',['../IRremoteESP8266_8h.html#a3b41358898f69d96bdeece17ead13ee0',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacdry_2993',['kWhirlpoolAcDry',['../ir__Whirlpool_8h.html#ab7433a4e3e8ad7ee665ab234df43e45f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfan_2994',['kWhirlpoolAcFan',['../ir__Whirlpool_8h.html#a91ecddbde81174268fdde3679565daeb',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanauto_2995',['kWhirlpoolAcFanAuto',['../ir__Whirlpool_8h.html#a133a436db244935a812beba78a1a9d05',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanhigh_2996',['kWhirlpoolAcFanHigh',['../ir__Whirlpool_8h.html#a93affe2700e13830ff09ee16801be56d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanlow_2997',['kWhirlpoolAcFanLow',['../ir__Whirlpool_8h.html#abdbd00636661a234d9e30521144d76e1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanmedium_2998',['kWhirlpoolAcFanMedium',['../ir__Whirlpool_8h.html#acf1ae9526d2fd3f49d484608730f607d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacgap_2999',['kWhirlpoolAcGap',['../ir__Whirlpool_8cpp.html#a5946b0c81f68442645f795f4f6518972',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrmark_3000',['kWhirlpoolAcHdrMark',['../ir__Whirlpool_8cpp.html#ad2f759eb7426cfe5fb3421f101c926bb',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrspace_3001',['kWhirlpoolAcHdrSpace',['../ir__Whirlpool_8cpp.html#a7a83a305cc6ebb7be7163bd1c3fb679d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacheat_3002',['kWhirlpoolAcHeat',['../ir__Whirlpool_8h.html#a1e9290ec94cca537b5c44d2e4326b59c',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmaxtemp_3003',['kWhirlpoolAcMaxTemp',['../ir__Whirlpool_8h.html#a08171b333f214963e21a0c574783299f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmingap_3004',['kWhirlpoolAcMinGap',['../ir__Whirlpool_8cpp.html#aa6e5e114daf18d77914a08f831c37c7d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacmintemp_3005',['kWhirlpoolAcMinTemp',['../ir__Whirlpool_8h.html#aeffef97e3247609d5731b525692f1e7b',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaconespace_3006',['kWhirlpoolAcOneSpace',['../ir__Whirlpool_8cpp.html#a7680ed11a0bc6b2f9340e3557681a470',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacsections_3007',['kWhirlpoolAcSections',['../ir__Whirlpool_8cpp.html#a75ebed07d288ac32a0138035279b41c7',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacstatelength_3008',['kWhirlpoolAcStateLength',['../IRremoteESP8266_8h.html#a0fff60a43f776fb999d0f1f91d88154f',1,'IRremoteESP8266.h']]], - ['kwhirlpoolaczerospace_3009',['kWhirlpoolAcZeroSpace',['../ir__Whirlpool_8cpp.html#af03c9ee4d432bbce7d2ee214dd5ca095',1,'ir_Whirlpool.cpp']]], - ['kwhynterbitmark_3010',['kWhynterBitMark',['../ir__Whynter_8cpp.html#a032043e058989b6402d8af99d2c20552',1,'ir_Whynter.cpp']]], - ['kwhynterbitmarkticks_3011',['kWhynterBitMarkTicks',['../ir__Whynter_8cpp.html#acfd8f04e0453ec1b9cd85837053a47e2',1,'ir_Whynter.cpp']]], - ['kwhynterbits_3012',['kWhynterBits',['../IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98',1,'IRremoteESP8266.h']]], - ['kwhynterhdrmark_3013',['kWhynterHdrMark',['../ir__Whynter_8cpp.html#a7d62b0e658fe6f697d41d6932e4e6662',1,'ir_Whynter.cpp']]], - ['kwhynterhdrmarkticks_3014',['kWhynterHdrMarkTicks',['../ir__Whynter_8cpp.html#a34da808cebff09fc038589c035f2d2fe',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspace_3015',['kWhynterHdrSpace',['../ir__Whynter_8cpp.html#ad20c874e642238e299a44ead2ea592f1',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspaceticks_3016',['kWhynterHdrSpaceTicks',['../ir__Whynter_8cpp.html#a8090f73380ea212e904402555156364d',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlength_3017',['kWhynterMinCommandLength',['../ir__Whynter_8cpp.html#a5e584a8d6aa8a146c9c8e74839b28e8f',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlengthticks_3018',['kWhynterMinCommandLengthTicks',['../ir__Whynter_8cpp.html#a65e8195824053403967573b7603059e7',1,'ir_Whynter.cpp']]], - ['kwhyntermingap_3019',['kWhynterMinGap',['../ir__Whynter_8cpp.html#ad09957f4c9c76d76ab55a74f440dad5f',1,'ir_Whynter.cpp']]], - ['kwhyntermingapticks_3020',['kWhynterMinGapTicks',['../ir__Whynter_8cpp.html#a89af5f0ab7af456f58052bf9256620a2',1,'ir_Whynter.cpp']]], - ['kwhynteronespace_3021',['kWhynterOneSpace',['../ir__Whynter_8cpp.html#a78993c22d94b107a37f61cddad728003',1,'ir_Whynter.cpp']]], - ['kwhynteronespaceticks_3022',['kWhynterOneSpaceTicks',['../ir__Whynter_8cpp.html#a95a5903a8f057df2b6587a331fec6f18',1,'ir_Whynter.cpp']]], - ['kwhyntertick_3023',['kWhynterTick',['../ir__Whynter_8cpp.html#a8f704cdf6cfd11455101919d7a772389',1,'ir_Whynter.cpp']]], - ['kwhynterzerospace_3024',['kWhynterZeroSpace',['../ir__Whynter_8cpp.html#a426deb9a35a1a6afdcbcfa58c6943490',1,'ir_Whynter.cpp']]], - ['kwhynterzerospaceticks_3025',['kWhynterZeroSpaceTicks',['../ir__Whynter_8cpp.html#ae38da416cd065b561287ebd2fe0257f0',1,'ir_Whynter.cpp']]], - ['kwide_3026',['kWide',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a9934dc3d02540583d5f13be6716739cd',1,'stdAc']]], - ['kwidestr_3027',['kWideStr',['../IRtext_8cpp.html#a19875c78e68ba6fdd78df3526f82969c',1,'kWideStr(): IRtext.cpp'],['../IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b',1,'kWideStr(): IRtext.cpp']]], - ['kwifistr_3028',['kWifiStr',['../IRtext_8cpp.html#a3f2dddbcbc03e31ed6f1081fce001ea4',1,'kWifiStr(): IRtext.cpp'],['../IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d',1,'kWifiStr(): IRtext.cpp']]], - ['kxfanstr_3029',['kXFanStr',['../IRtext_8cpp.html#ada36ab4b7555d38a76c4477971736cb7',1,'kXFanStr(): IRtext.cpp'],['../IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571',1,'kXFanStr(): IRtext.cpp']]], - ['kxmpbasespace_3030',['kXmpBaseSpace',['../ir__Xmp_8cpp.html#abefc09e9ed818c7efb3bbdda98e30be1',1,'ir_Xmp.cpp']]], - ['kxmpbits_3031',['kXmpBits',['../IRremoteESP8266_8h.html#adfcd08adae1243b1108353ef5cfe8776',1,'IRremoteESP8266.h']]], - ['kxmpfooterspace_3032',['kXmpFooterSpace',['../ir__Xmp_8cpp.html#a83012cfefe50c5f8b2b13315e72dc1f1',1,'ir_Xmp.cpp']]], - ['kxmpmark_3033',['kXmpMark',['../ir__Xmp_8cpp.html#a9c09decb9eaa8afd6b2053c142e87db9',1,'ir_Xmp.cpp']]], - ['kxmpmaxwordvalue_3034',['kXmpMaxWordValue',['../ir__Xmp_8cpp.html#ab54dbf1bdf33d8f7e7413723980dc518',1,'ir_Xmp.cpp']]], - ['kxmpmessagegap_3035',['kXmpMessageGap',['../ir__Xmp_8cpp.html#ad678abebb2d8ccfd578e7c1d70f44987',1,'ir_Xmp.cpp']]], - ['kxmprepeatcode_3036',['kXmpRepeatCode',['../ir__Xmp_8cpp.html#a7cdde1ffa7ba5186dfcfc3660966ce9d',1,'ir_Xmp.cpp']]], - ['kxmprepeatcodealt_3037',['kXmpRepeatCodeAlt',['../ir__Xmp_8cpp.html#a34460e1fdf809f8b87c1da2942124c49',1,'ir_Xmp.cpp']]], - ['kxmpsections_3038',['kXmpSections',['../ir__Xmp_8cpp.html#ab20e02ac019d4eb974f06e531a9af5c0',1,'ir_Xmp.cpp']]], - ['kxmpspacestep_3039',['kXmpSpaceStep',['../ir__Xmp_8cpp.html#a4f0b555035f665354c5743208d52d5b9',1,'ir_Xmp.cpp']]], - ['kxmpwordsize_3040',['kXmpWordSize',['../ir__Xmp_8cpp.html#a1974129b35ffdb85f3a1727aa5509b9f',1,'ir_Xmp.cpp']]], - ['kyesstr_3041',['kYesStr',['../IRtext_8cpp.html#a96492aa94d18702db41a639ae2a45423',1,'kYesStr(): IRtext.cpp'],['../IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae',1,'kYesStr(): IRtext.cpp']]], - ['kzepealbits_3042',['kZepealBits',['../IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296',1,'IRremoteESP8266.h']]], - ['kzepealcommandoffon_3043',['kZepealCommandOffOn',['../ir__Zepeal_8cpp.html#a37af9800da3144c218d422e54066e837',1,'ir_Zepeal.cpp']]], - ['kzepealcommandofftimer_3044',['kZepealCommandOffTimer',['../ir__Zepeal_8cpp.html#a87b136a95af4437182530d6f7cbc69ee',1,'ir_Zepeal.cpp']]], - ['kzepealcommandontimer_3045',['kZepealCommandOnTimer',['../ir__Zepeal_8cpp.html#aed4491019bb6575c113404a095e8b116',1,'ir_Zepeal.cpp']]], - ['kzepealcommandrhythm_3046',['kZepealCommandRhythm',['../ir__Zepeal_8cpp.html#aa3960b3bdaa77c060543881bdf71e46c',1,'ir_Zepeal.cpp']]], - ['kzepealcommandspeed_3047',['kZepealCommandSpeed',['../ir__Zepeal_8cpp.html#a1189a81901daaf4b8b45e8f45caf0f49',1,'ir_Zepeal.cpp']]], - ['kzepealfootermark_3048',['kZepealFooterMark',['../ir__Zepeal_8cpp.html#a83167e93978d9cec8cf2dfac980582ba',1,'ir_Zepeal.cpp']]], - ['kzepealgap_3049',['kZepealGap',['../ir__Zepeal_8cpp.html#ab5bea0fe08e14fa3d1812bea018f44f0',1,'ir_Zepeal.cpp']]], - ['kzepealhdrmark_3050',['kZepealHdrMark',['../ir__Zepeal_8cpp.html#abee2a1537cfff9481d3060fba94a4b04',1,'ir_Zepeal.cpp']]], - ['kzepealhdrspace_3051',['kZepealHdrSpace',['../ir__Zepeal_8cpp.html#ad49be13d3dd108a18e4e641a40ff0408',1,'ir_Zepeal.cpp']]], - ['kzepealminrepeat_3052',['kZepealMinRepeat',['../IRremoteESP8266_8h.html#afb5c734e808d8f108f976f0556bf6e58',1,'IRremoteESP8266.h']]], - ['kzepealonemark_3053',['kZepealOneMark',['../ir__Zepeal_8cpp.html#a4d9919883561086dd3e3060e93983480',1,'ir_Zepeal.cpp']]], - ['kzepealonespace_3054',['kZepealOneSpace',['../ir__Zepeal_8cpp.html#a88702dbff33a9dddcfd4b255637460a0',1,'ir_Zepeal.cpp']]], - ['kzepealsignature_3055',['kZepealSignature',['../ir__Zepeal_8cpp.html#a7994e564096ac01b77d9ebe3a753167d',1,'ir_Zepeal.cpp']]], - ['kzepealtolerance_3056',['kZepealTolerance',['../ir__Zepeal_8cpp.html#ab35f666ef98b24b8b4bacdf462a9fbe6',1,'ir_Zepeal.cpp']]], - ['kzepealzeromark_3057',['kZepealZeroMark',['../ir__Zepeal_8cpp.html#a94eac58ef78ea4e39687f54e381c3a00',1,'ir_Zepeal.cpp']]], - ['kzepealzerospace_3058',['kZepealZeroSpace',['../ir__Zepeal_8cpp.html#a1af802b587e8f0a88ae87ab964fde690',1,'ir_Zepeal.cpp']]], - ['kzonefollowstr_3059',['kZoneFollowStr',['../IRtext_8cpp.html#a9a112fb47e39e35d096fe09266d37db1',1,'kZoneFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f',1,'kZoneFollowStr(): IRtext.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.html deleted file mode 100644 index da60ab8d5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.js deleted file mode 100644 index 2bef687ea..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_c.js +++ /dev/null @@ -1,23 +0,0 @@ -var searchData= -[ - ['label_3060',['Label',['../structCoronaSection.html#abc6d0caa713c73244c4bf2f602074d48',1,'CoronaSection']]], - ['lasertag_3061',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]], - ['ledflag_3062',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], - ['ledoff_3063',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], - ['ledon_3064',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], - ['legopf_3065',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]], - ['length_3066',['Length',['../unionToshibaProtocol.html#aacb09c50f1892d3244b4dd0c14a12ed6',1,'ToshibaProtocol']]], - ['lg_3067',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac::lg()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'LG(): IRremoteESP8266.h']]], - ['lg2_3068',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]], - ['lg_5fac_5fremote_5fmodel_5ft_3069',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]], - ['lgprotocol_3070',['LGProtocol',['../unionLGProtocol.html',1,'']]], - ['light_3071',['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()'],['../unionNeoclimaProtocol.html#a598346f565ad6d57df03f5256a878dd6',1,'NeoclimaProtocol::Light()'],['../unionTcl112Protocol.html#a1787bdc0b636eeca6f85dcbec14aef6b',1,'Tcl112Protocol::Light()'],['../unionTecoProtocol.html#a00a2d53fdbfcb60461284374f8894b97',1,'TecoProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()'],['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()']]], - ['lightoff_3072',['LightOff',['../unionWhirlpoolProtocol.html#afb34ebe6d6b418f8398dd33b42bb4982',1,'WhirlpoolProtocol']]], - ['lighttoggle_3073',['LightToggle',['../unionElectraProtocol.html#aa2a5998cafd139e5ce7626edc4782c56',1,'ElectraProtocol']]], - ['llword_3074',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], - ['longcode_3075',['longcode',['../unionFujitsuProtocol.html#a3802bebe7a7e4d01f58fb191ffd8adca',1,'FujitsuProtocol']]], - ['longmsg_3076',['LongMsg',['../unionToshibaProtocol.html#ad1f3816fce9e7e7ca004870b264cca5d',1,'ToshibaProtocol']]], - ['lowlevelsanitycheck_3077',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]], - ['lutron_3078',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]], - ['lword_3079',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.html deleted file mode 100644 index bc376fec3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.js deleted file mode 100644 index b4f9f4473..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_d.js +++ /dev/null @@ -1,56 +0,0 @@ -var searchData= -[ - ['magiquest_3080',['magiquest',['../unionmagiquest.html',1,'magiquest'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3be750ce1687bc1a92fee05b0c511100',1,'MAGIQUEST(): IRremoteESP8266.h']]], - ['magnitude_3081',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], - ['mark_3082',['mark',['../classIRsend.html#a7399389d40bfe24bc062ffca88fc3780',1,'IRsend']]], - ['markassent_3083',['markAsSent',['../classIRac.html#ad0e45b13f477e29823b8c138704536c4',1,'IRac']]], - ['match_3084',['match',['../classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa',1,'IRrecv']]], - ['match_5fresult_5ft_3085',['match_result_t',['../structmatch__result__t.html',1,'']]], - ['matchatleast_3086',['matchAtLeast',['../classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a',1,'IRrecv']]], - ['matchbytes_3087',['matchBytes',['../classIRrecv.html#a97534938349b52b46395be1d3e2f59fa',1,'IRrecv']]], - ['matchdata_3088',['matchData',['../classIRrecv.html#a1d8b50fcac074e71e9a92a62f62f0be7',1,'IRrecv']]], - ['matchgeneric_3089',['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_3090',['matchGenericConstBitTime',['../classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0',1,'IRrecv']]], - ['matchmanchester_3091',['matchManchester',['../classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728',1,'IRrecv']]], - ['matchmanchesterdata_3092',['matchManchesterData',['../classIRrecv.html#ab44403411a217eb8ea75271575f8ab83',1,'IRrecv']]], - ['matchmark_3093',['matchMark',['../classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d',1,'IRrecv']]], - ['matchmarkrange_3094',['matchMarkRange',['../classIRrecv.html#adf11286f0ef5e8984396b5f6331db87e',1,'IRrecv']]], - ['matchspace_3095',['matchSpace',['../classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc',1,'IRrecv']]], - ['matchspacerange_3096',['matchSpaceRange',['../classIRrecv.html#a2200a9c1064497838506eb278791bb03',1,'IRrecv']]], - ['max_3097',['Max',['../unionAmcorProtocol.html#a9e0ea99322601af4b09784da2cf21d7e',1,'AmcorProtocol::Max()'],['../unionArgoProtocol.html#ac3edf881406da0b9a253a7536ba3e810',1,'ArgoProtocol::Max()']]], - ['metz_3098',['METZ',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa77ca3ee98846eee35bd2995bf2ae25b',1,'IRremoteESP8266.h']]], - ['midea_3099',['midea',['../classIRac.html#a11765b1d08c0c02f5e08254bd870dae6',1,'IRac::midea()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1571f3cf72caf1cf23481802b450382a',1,'MIDEA(): IRremoteESP8266.h']]], - ['midea24_3100',['MIDEA24',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada59b5ac5c1d354e50932dc0208d9b0b43',1,'IRremoteESP8266.h']]], - ['mideaprotocol_3101',['MideaProtocol',['../unionMideaProtocol.html',1,'']]], - ['milestag2_3102',['MILESTAG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5ffb7486d99840e02f2688e3d6605a14',1,'IRremoteESP8266.h']]], - ['minrepeats_3103',['minRepeats',['../classIRsend.html#ae02772f34180163861b7e4eb3520db2a',1,'IRsend']]], - ['minstostring_3104',['minsToString',['../namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f',1,'irutils']]], - ['minutes_3105',['Minutes',['../unionVestelProtocol.html#a13e423c0ae919980baa57f0e9a22d59e',1,'VestelProtocol']]], - ['mirage_3106',['MIRAGE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9ab6dd14fa5c7d0d32c60d414c7df36a',1,'IRremoteESP8266.h']]], - ['mitsubishi_3107',['mitsubishi',['../classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3',1,'IRac::mitsubishi()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab98915357fe1cb91de0536136be20d07',1,'MITSUBISHI(): IRremoteESP8266.h']]], - ['mitsubishi112_3108',['mitsubishi112',['../classIRac.html#a2438b6e4403d5952adb299083e038e10',1,'IRac::mitsubishi112()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab8e5875a5959b72ca7ff17bccff97c4d',1,'MITSUBISHI112(): IRremoteESP8266.h']]], - ['mitsubishi112protocol_3109',['Mitsubishi112Protocol',['../unionMitsubishi112Protocol.html',1,'']]], - ['mitsubishi136_3110',['mitsubishi136',['../classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e',1,'IRac::mitsubishi136()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3c73724a654627a04cc96e280b9630fe',1,'MITSUBISHI136(): IRremoteESP8266.h']]], - ['mitsubishi136protocol_3111',['Mitsubishi136Protocol',['../unionMitsubishi136Protocol.html',1,'']]], - ['mitsubishi144protocol_3112',['Mitsubishi144Protocol',['../unionMitsubishi144Protocol.html',1,'']]], - ['mitsubishi152protocol_3113',['Mitsubishi152Protocol',['../unionMitsubishi152Protocol.html',1,'']]], - ['mitsubishi2_3114',['MITSUBISHI2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66368850d567cbeb3b2c2233cae34cd0',1,'IRremoteESP8266.h']]], - ['mitsubishi88protocol_3115',['Mitsubishi88Protocol',['../unionMitsubishi88Protocol.html',1,'']]], - ['mitsubishi_5fac_3116',['MITSUBISHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada45198cb83bbf76b320eaa91d09c44b38',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fheavy_5f152_3117',['MITSUBISHI_HEAVY_152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada15c8d1d51d5f9e42fd03638cbdfb7cbf',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fheavy_5f88_3118',['MITSUBISHI_HEAVY_88',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad303f6c0494d33354cb7c11af258f663',1,'IRremoteESP8266.h']]], - ['mitsubishiheavy152_3119',['mitsubishiHeavy152',['../classIRac.html#a635b89320d878c1e3f270d7146cb9b00',1,'IRac']]], - ['mitsubishiheavy88_3120',['mitsubishiHeavy88',['../classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e',1,'IRac']]], - ['mode_3121',['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()'],['../unionEcoclimProtocol.html#a25d3ca6d95d9ed88e01f512aec8f0765',1,'EcoclimProtocol::Mode()'],['../unionElectraProtocol.html#a27e64c16e4cefeac55cd12165554e0b0',1,'ElectraProtocol::Mode()'],['../unionFujitsuProtocol.html#aa9260ff8cda7409dc14b9b057ad903a5',1,'FujitsuProtocol::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()'],['../unionKelonProtocol.html#afefb71dce13bc346164cbbbba493eb69',1,'KelonProtocol::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()'],['../unionNeoclimaProtocol.html#ad7f68fc3c6b62f74f4025edbd57a5e5b',1,'NeoclimaProtocol::Mode()'],['../unionPanasonicAc32Protocol.html#adc5a9e48b207202c5361e700a06157e2',1,'PanasonicAc32Protocol::Mode()'],['../unionSamsungProtocol.html#a46106899d30f8e503b4fc190d11d1c48',1,'SamsungProtocol::Mode()'],['../unionSanyoProtocol.html#a0c36d7f731d49be5baab0ea925401c93',1,'SanyoProtocol::Mode()'],['../unionSharpProtocol.html#a44a57c217d0f1065d4c480b32002455d',1,'SharpProtocol::Mode()'],['../unionTcl112Protocol.html#a96d87be2a38710de21cecfab0050ff95',1,'Tcl112Protocol::Mode()'],['../unionTechnibelProtocol.html#ad6b2e2f016fe885859bd6622ec37d7dd',1,'TechnibelProtocol::Mode()'],['../unionTecoProtocol.html#a40b8ca2a2126c4bde467a308472ca446',1,'TecoProtocol::Mode()'],['../unionToshibaProtocol.html#ae821300a670c95fb9e34243d8efec1bf',1,'ToshibaProtocol::Mode()'],['../unionTranscoldProtocol.html#a78a73050062dbb8aa24dce07a0a382ff',1,'TranscoldProtocol::Mode()'],['../unionTrotecProtocol.html#ae86771f0cdffdec88b0be265cd9e2524',1,'TrotecProtocol::Mode()'],['../unionTrumaProtocol.html#acf754cf5578169a1e94607c3f0c3916f',1,'TrumaProtocol::Mode()'],['../unionVestelProtocol.html#a60edaaaacdcfa5aefa957c14579f671a',1,'VestelProtocol::Mode()'],['../unionVoltasProtocol.html#ad991a7ccaf9caa0b9f7880f4138f1dab',1,'VoltasProtocol::Mode()'],['../unionWhirlpoolProtocol.html#a0196cbbf3d41cb867f857c786b45a580',1,'WhirlpoolProtocol::Mode()']]], - ['modebutton_3122',['ModeButton',['../unionDaikin176Protocol.html#af48f77b741bcfa7717497077c50ee240',1,'Daikin176Protocol']]], - ['model_3123',['Model',['../unionHitachi1Protocol.html#aad97f1edb72b8786423089f1dad70681',1,'Hitachi1Protocol::Model()'],['../unionSharpProtocol.html#acdaebb53185b4c6f59c9fedabe9586ba',1,'SharpProtocol::Model()'],['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t::model()']]], - ['model2_3124',['Model2',['../unionSharpProtocol.html#a4e9764f8c1b98a6108f0de676d618dd3',1,'SharpProtocol']]], - ['modela_3125',['ModelA',['../unionGreeProtocol.html#a66fdedd8318541269f0ab9ae3b832813',1,'GreeProtocol']]], - ['modeltostr_3126',['modelToStr',['../namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd',1,'irutils']]], - ['modulation_3127',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]], - ['mold_3128',['Mold',['../unionDaikinESPProtocol.html#a61c7eeeb3589f775897d79a130dd1be8',1,'DaikinESPProtocol::Mold()'],['../unionDaikin2Protocol.html#a18207f0f0913ade09f16ba2e98a5dbf1',1,'Daikin2Protocol::Mold()']]], - ['mstostring_3129',['msToString',['../namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a',1,'irutils']]], - ['multibrackets_3130',['MULTIBRACKETS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaebb72f3ad9ff2a706d8041763de6e49',1,'IRremoteESP8266.h']]], - ['mux_3131',['mux',['../namespace__IRrecv.html#a1baf83e60312b43397ca8b9d185fb469',1,'_IRrecv']]], - ['mwm_3132',['MWM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a6938c955212e1fb81fb511437cbe56',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.html deleted file mode 100644 index 2e3c74dc6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.js deleted file mode 100644 index 69e4d3e98..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_e.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['nec_3133',['NEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0811f93a25b0873e21979d569eeac05e',1,'IRremoteESP8266.h']]], - ['nec_5flike_3134',['NEC_LIKE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada97acfde550d201fa0abc3120098fb471',1,'IRremoteESP8266.h']]], - ['neoclima_3135',['neoclima',['../classIRac.html#a777da4b0552ee3b64d656c4592687f47',1,'IRac::neoclima()'],['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac698e0c030768ed91207b0e63910c3e7',1,'NEOCLIMA(): IRremoteESP8266.h']]], - ['neoclimaprotocol_3136',['NeoclimaProtocol',['../unionNeoclimaProtocol.html',1,'']]], - ['next_3137',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]], - ['night_3138',['Night',['../unionArgoProtocol.html#a6dbfb2137f0e64a65e3aa45a50485fbe',1,'ArgoProtocol::Night()'],['../unionMitsubishi152Protocol.html#a2ad34c4b3a726495ec23ca7af5a2a540',1,'Mitsubishi152Protocol::Night()']]], - ['nikai_3139',['NIKAI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0bc180c4ab5e68798451f4799f7f9377',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.html deleted file mode 100644 index 246f8ab12..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.js deleted file mode 100644 index 04fb36949..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/all_f.js +++ /dev/null @@ -1,40 +0,0 @@ -var searchData= -[ - ['off_3140',['off',['../classIRAmcorAc.html#a184fbd76463e195beb67b4a8d2096941',1,'IRAmcorAc::off()'],['../classIRArgoAC.html#ab5ab7cc22bbce59bb02ca60431dca3fb',1,'IRArgoAC::off()'],['../classIRCarrierAc64.html#af11d8ea5ac93cbf2d9fe1419729168a5',1,'IRCarrierAc64::off()'],['../classIRCoolixAC.html#a7d6133fe102a5869beb9a5334ca749aa',1,'IRCoolixAC::off()'],['../classIRCoronaAc.html#a6f1335001f9e299340f658fbb777b630',1,'IRCoronaAc::off()'],['../classIRDaikinESP.html#a5d1d22f45d877660719916ca546bd3af',1,'IRDaikinESP::off()'],['../classIRDaikin2.html#ae9eee92387d78dad68fc98efc9371ea0',1,'IRDaikin2::off()'],['../classIRDaikin216.html#a086d8cea2d6dd0f74c5cbece79d91567',1,'IRDaikin216::off()'],['../classIRDaikin160.html#a95f8c71bbf861d3c884656364e04b02a',1,'IRDaikin160::off()'],['../classIRDaikin176.html#a4ad81df1fe4921abee3634bf19b0d0f7',1,'IRDaikin176::off()'],['../classIRDaikin152.html#a035588ad676a54d2b6ada8cefe10e114',1,'IRDaikin152::off()'],['../classIRDelonghiAc.html#ab584add0eb59acf3b209e7c252605304',1,'IRDelonghiAc::off()'],['../classIREcoclimAc.html#a9a0e2ee4ff9cbc6008cb359f2c3faf23',1,'IREcoclimAc::off()'],['../classIRElectraAc.html#afe3a9b789eafbef19d015cdebf71dc0d',1,'IRElectraAc::off()'],['../classIRFujitsuAC.html#ae7a320c2d2b8afbd9a04251053831cdd',1,'IRFujitsuAC::off()'],['../classIRGoodweatherAc.html#ad6863d837140951fcc0faf629025d48e',1,'IRGoodweatherAc::off()'],['../classIRGreeAC.html#a4cce897175ed731ab62402133089ed4f',1,'IRGreeAC::off()'],['../classIRHaierACYRW02.html#a9837ba26574f8bd452d616173819a9a4',1,'IRHaierACYRW02::off()'],['../classIRHitachiAc.html#a62be5ca181c8c9d11b65b38b1ed178b5',1,'IRHitachiAc::off()'],['../classIRHitachiAc1.html#a646b554980706d0dd2ac762be8458cdb',1,'IRHitachiAc1::off()'],['../classIRHitachiAc424.html#a0815a09fc49449bac03d996c63040a5f',1,'IRHitachiAc424::off()'],['../classIRKelvinatorAC.html#a4a759df902d1465c9520da7c7c595abc',1,'IRKelvinatorAC::off()'],['../classIRLgAc.html#a6d3d50b34575fecb93ed8bd5897c3f7c',1,'IRLgAc::off()'],['../classIRMideaAC.html#a29fbafcf47dc41475d009c4c92b2917b',1,'IRMideaAC::off()'],['../classIRMitsubishiAC.html#ac204620341200994c28411f53d5aa046',1,'IRMitsubishiAC::off()'],['../classIRMitsubishi136.html#a4122014509e9e755881920650f19baf3',1,'IRMitsubishi136::off()'],['../classIRMitsubishi112.html#ab5b6370edf2626da2e9f124a218678a8',1,'IRMitsubishi112::off()'],['../classIRMitsubishiHeavy152Ac.html#a93b603cc37d2dc7e3e7005ce21a0b2d7',1,'IRMitsubishiHeavy152Ac::off()'],['../classIRMitsubishiHeavy88Ac.html#a45c56c0454755d704a3df1f1f3647130',1,'IRMitsubishiHeavy88Ac::off()'],['../classIRNeoclimaAc.html#a9a277308bf8d8b0cd06a28964e7cbafb',1,'IRNeoclimaAc::off()'],['../classIRPanasonicAc.html#a03b706293c1c5b348bba536e6d8d33f5',1,'IRPanasonicAc::off()'],['../classIRSamsungAc.html#a34cb19bb4902441a2b9f10892eb17d83',1,'IRSamsungAc::off()'],['../classIRSanyoAc.html#a31f4c1d33875a99194b21f430c5467ef',1,'IRSanyoAc::off()'],['../classIRSharpAc.html#a178925a1d7ca01aae5c107fab5b32e93',1,'IRSharpAc::off()'],['../classIRTcl112Ac.html#ab2e39430629fcada55a584cff66d2749',1,'IRTcl112Ac::off()'],['../classIRTechnibelAc.html#a01f40042435f9472985853e40c1f9593',1,'IRTechnibelAc::off()'],['../classIRTecoAc.html#ade1b1541bf2de053c78657af1ebcd001',1,'IRTecoAc::off()'],['../classIRToshibaAC.html#a70b145f7b9c46790e4e5da812bb66e58',1,'IRToshibaAC::off()'],['../classIRTranscoldAc.html#a54ecdef5ff2c9a1ce8c476ff2ad16801',1,'IRTranscoldAc::off()'],['../classIRTrotecESP.html#a8f300ddaf255de1cdfee10b76b1f08e0',1,'IRTrotecESP::off()'],['../classIRTrumaAc.html#a82ef2f54b87332f6d2f1e3350544a3ec',1,'IRTrumaAc::off()'],['../classIRVestelAc.html#a59e90e51e3518ef26bb382903ce67357',1,'IRVestelAc::off()'],['../classIRVoltas.html#a472dd54afd93b595c8c5b78f6ba43008',1,'IRVoltas::off()']]], - ['offhalfhour_3141',['OffHalfHour',['../unionDaikin128Protocol.html#a95e474c4f74f8921d1bbe42a06c58aa6',1,'Daikin128Protocol::OffHalfHour()'],['../unionDaikin64Protocol.html#af27302ff8553d43234c782432556482b',1,'Daikin64Protocol::OffHalfHour()']]], - ['offhour_3142',['OffHour',['../unionSanyoProtocol.html#a819d8fa041aa52b94b366ced926828d9',1,'SanyoProtocol']]], - ['offhours_3143',['OffHours',['../unionDaikin128Protocol.html#a2cff2aa98cb96d420ee9f7745af05b2a',1,'Daikin128Protocol::OffHours()'],['../unionDaikin64Protocol.html#aa0be38e313504c06a83d613823b08d67',1,'Daikin64Protocol::OffHours()'],['../unionDelonghiProtocol.html#ae699f25608c0f66aafaf7cb50e9c0258',1,'DelonghiProtocol::OffHours()'],['../unionEcoclimProtocol.html#ab2b370d17c8b7153869a3efb6cc9af67',1,'EcoclimProtocol::OffHours()'],['../unionHaierProtocol.html#aecaad31185de1e7843047a9b9194d55b',1,'HaierProtocol::OffHours()'],['../unionVestelProtocol.html#ada82c37fc9adf2ed34735b0ff05b70b6',1,'VestelProtocol::OffHours()'],['../unionWhirlpoolProtocol.html#a70c2d80980c585fac6581d5a4da08447',1,'WhirlpoolProtocol::OffHours()']]], - ['offmins_3144',['OffMins',['../unionDelonghiProtocol.html#a0d0acd3e8c1ccd190076db4287251096',1,'DelonghiProtocol::OffMins()'],['../unionHaierProtocol.html#a6eec6ff574e93f327ca567251b37e33b',1,'HaierProtocol::OffMins()'],['../unionWhirlpoolProtocol.html#a4f3fecf53dab7c9ffb8ed02c71eb652d',1,'WhirlpoolProtocol::OffMins()']]], - ['offtenmins_3145',['OffTenMins',['../unionEcoclimProtocol.html#a453dcd8e81eced1362f352c21809deab',1,'EcoclimProtocol::OffTenMins()'],['../unionVestelProtocol.html#add80ad31a31c042837492ae558deb8ce',1,'VestelProtocol::OffTenMins()']]], - ['offtime_3146',['OffTime',['../unionDaikinESPProtocol.html#a1e74e0e3c6ba822ccb32aa052bb47f05',1,'DaikinESPProtocol::OffTime()'],['../unionDaikin2Protocol.html#ab0bdcd7cb92206426feae8bbf408fc0f',1,'Daikin2Protocol::OffTime()']]], - ['offtimeperiod_3147',['offTimePeriod',['../classIRsend.html#a9e45c9e4f54db86c1f3e506cd72fe4c1',1,'IRsend']]], - ['offtimer_3148',['OffTimer',['../unionCarrierProtocol.html#a42fcd3b5c796076fa372985b3b1cd473',1,'CarrierProtocol::OffTimer()'],['../unionDaikinESPProtocol.html#ad5c9be68e472eb538be020bc4595da61',1,'DaikinESPProtocol::OffTimer()'],['../unionDaikin2Protocol.html#a8064a7edb7a307331b5e7232adc09234',1,'Daikin2Protocol::OffTimer()'],['../unionDaikin128Protocol.html#aa9f559a12057893bb936b3972ff63972',1,'Daikin128Protocol::OffTimer()'],['../unionDaikin64Protocol.html#a6866d3ed0105d0bb807645723feab21f',1,'Daikin64Protocol::OffTimer()'],['../unionDelonghiProtocol.html#a0f27d98df3895d7cf8fef26602a2ea1d',1,'DelonghiProtocol::OffTimer()'],['../unionFujitsuProtocol.html#a28481e54ff98309f7456a870a987a0cc',1,'FujitsuProtocol::OffTimer()'],['../unionHaierProtocol.html#a6f3893711bffc1d59d8e3d76e7a954a2',1,'HaierProtocol::OffTimer()'],['../unionMideaProtocol.html#afd53c8223249e271fe48d03c67a74364',1,'MideaProtocol::OffTimer()'],['../unionSanyoProtocol.html#a8cd49c1eea805eb74af696079760a8fe',1,'SanyoProtocol::OffTimer()'],['../unionVestelProtocol.html#afe4ad429db29472e41a9db0f5eb927fe',1,'VestelProtocol::OffTimer()']]], - ['offtimer12hr_3149',['OffTimer12Hr',['../unionVoltasProtocol.html#a6d55446514c9a0209209504de336a0b5',1,'VoltasProtocol']]], - ['offtimerenable_3150',['OffTimerEnable',['../unionCarrierProtocol.html#a15e27c0710c706b2f1e8227a962fc722',1,'CarrierProtocol::OffTimerEnable()'],['../unionFujitsuProtocol.html#a9c8c3d1304617e70a0367f97d37eb98f',1,'FujitsuProtocol::OffTimerEnable()'],['../unionVoltasProtocol.html#a415a13e7722786f41b33c1db78771c8e',1,'VoltasProtocol::OffTimerEnable()']]], - ['offtimerenabled_3151',['OffTimerEnabled',['../unionWhirlpoolProtocol.html#a9288dc4e7ab5e59fc16885771268a856',1,'WhirlpoolProtocol']]], - ['offtimerhigh_3152',['OffTimerHigh',['../unionHitachi1Protocol.html#a10702ba90386aba2eb25280f54e7cf44',1,'Hitachi1Protocol']]], - ['offtimerhrs_3153',['OffTimerHrs',['../unionVoltasProtocol.html#aeef99d8c93860c34eb08f1c591d1da9f',1,'VoltasProtocol']]], - ['offtimerlow_3154',['OffTimerLow',['../unionHitachi1Protocol.html#ae724c85578d3d211ca17f3778a8cd599',1,'Hitachi1Protocol']]], - ['offtimermins_3155',['OffTimerMins',['../unionVoltasProtocol.html#a243f1a105ba96c4830d0b4ce66a75a4e',1,'VoltasProtocol']]], - ['on_3156',['on',['../classIRAmcorAc.html#a96a1d9858dcdc34a9859311e450e722e',1,'IRAmcorAc::on()'],['../classIRArgoAC.html#a70497752f7afd8e3274cf4d8b1e22628',1,'IRArgoAC::on()'],['../classIRCarrierAc64.html#a75ed9bf7501a31b74dcd42723e85b184',1,'IRCarrierAc64::on()'],['../classIRCoolixAC.html#a13f0346bf6450f3853c6dba6be8cb63a',1,'IRCoolixAC::on()'],['../classIRCoronaAc.html#a0348b6ee1226edfda1ab9aa424febb3c',1,'IRCoronaAc::on()'],['../classIRDaikinESP.html#a502e9dea10605d52e291d49af26b07eb',1,'IRDaikinESP::on()'],['../classIRDaikin2.html#aa3bdd3aa29a4db32f04411cbab27e570',1,'IRDaikin2::on()'],['../classIRDaikin216.html#a09f54bb4ed1d553b4bbf6ffe6992a755',1,'IRDaikin216::on()'],['../classIRDaikin160.html#a2b6c282ad5cb2a702857532ab020110b',1,'IRDaikin160::on()'],['../classIRDaikin176.html#a3ca59ccdad4b7958fc4dc1a4b0593f38',1,'IRDaikin176::on()'],['../classIRDaikin152.html#a10ee74aa43e3940d657ac88cb03b9138',1,'IRDaikin152::on()'],['../classIRDelonghiAc.html#ab919817947827f900e35080f63354ac3',1,'IRDelonghiAc::on()'],['../classIREcoclimAc.html#a32c37e30242f049190ab086d3beb8651',1,'IREcoclimAc::on()'],['../classIRElectraAc.html#a99e29f982435b01c726d0234a433cfa6',1,'IRElectraAc::on()'],['../classIRFujitsuAC.html#adcb24818d088c879beb7d76ada332f43',1,'IRFujitsuAC::on()'],['../classIRGoodweatherAc.html#a1e3c2a9f47376062ab66318d6af4324b',1,'IRGoodweatherAc::on()'],['../classIRGreeAC.html#a69e399e411a19e5669e752d52ae66f15',1,'IRGreeAC::on()'],['../classIRHaierACYRW02.html#aaeb257d68235278be272e521fdec7331',1,'IRHaierACYRW02::on()'],['../classIRHitachiAc.html#a855e95d55d4ebfb3958b9d80a7b42c6f',1,'IRHitachiAc::on()'],['../classIRHitachiAc1.html#aea4fe1fddb56c8df31077b301e9c6473',1,'IRHitachiAc1::on()'],['../classIRHitachiAc424.html#ad414bca642af40ed81a6cbf93a0bf40b',1,'IRHitachiAc424::on()'],['../classIRKelvinatorAC.html#a714d0e70f2996694e2c46afdd9996341',1,'IRKelvinatorAC::on()'],['../classIRLgAc.html#a171358340c1ba8f90fef0c5454f2aa41',1,'IRLgAc::on()'],['../classIRMideaAC.html#af8dde03cb641a5af4f2ef0dcf70f1ca0',1,'IRMideaAC::on()'],['../classIRMitsubishiAC.html#a2946d1b3b641d7b991c0d296d5c5e77e',1,'IRMitsubishiAC::on()'],['../classIRMitsubishi136.html#a74180e99a5f4f1f4b740b442a1b74a06',1,'IRMitsubishi136::on()'],['../classIRMitsubishi112.html#accd250f130b4d0cd61593982b84b9138',1,'IRMitsubishi112::on()'],['../classIRMitsubishiHeavy152Ac.html#a5c7aec50b53fdc3af591e077a4a268e4',1,'IRMitsubishiHeavy152Ac::on()'],['../classIRMitsubishiHeavy88Ac.html#a44ce2c4f03b8b8973922f5bf59a19d2c',1,'IRMitsubishiHeavy88Ac::on()'],['../classIRNeoclimaAc.html#ab4a23cefef02351883dc4088dec51071',1,'IRNeoclimaAc::on()'],['../classIRPanasonicAc.html#a88e6b0f607b17266567306576e623a0c',1,'IRPanasonicAc::on()'],['../classIRSamsungAc.html#a68cf52997489a1c835662c7cdf23463c',1,'IRSamsungAc::on()'],['../classIRSanyoAc.html#abe8f1be3ea8f861ab56ee4697cb9e731',1,'IRSanyoAc::on()'],['../classIRSharpAc.html#a5c8dad46c2965fc0d87780a8bd8b98f4',1,'IRSharpAc::on()'],['../classIRTcl112Ac.html#a0bbf7f0b9753b516fda0544c17b15b8a',1,'IRTcl112Ac::on()'],['../classIRTechnibelAc.html#a65558a08fbce34eedeb90d81e16140b1',1,'IRTechnibelAc::on()'],['../classIRTecoAc.html#af26015e5c663c346cf7db6d8af3f8c60',1,'IRTecoAc::on()'],['../classIRToshibaAC.html#abdc35338e4a18132d56bf6b46ddea590',1,'IRToshibaAC::on()'],['../classIRTranscoldAc.html#a4af8e44cb2d9c1751cd0dac3e096c06a',1,'IRTranscoldAc::on()'],['../classIRTrotecESP.html#a86c050edab8409a9b38d28f311f19404',1,'IRTrotecESP::on()'],['../classIRTrumaAc.html#a3c6f23621e34049df6ff135a4552f93a',1,'IRTrumaAc::on()'],['../classIRVestelAc.html#a4ed05fb5cbdfa5677ca238616bf03922',1,'IRVestelAc::on()'],['../classIRVoltas.html#a8c25557906af38ae41c47e39e90650a9',1,'IRVoltas::on()']]], - ['onhalfhour_3157',['OnHalfHour',['../unionDaikin128Protocol.html#a89c02e7657a06fe65f924480acdc9cf0',1,'Daikin128Protocol::OnHalfHour()'],['../unionDaikin64Protocol.html#a0a4c0f02f2dab9dfb9ec52f57b527d37',1,'Daikin64Protocol::OnHalfHour()']]], - ['onhours_3158',['OnHours',['../unionDaikin128Protocol.html#a25cb19708a89d2b685d09c6710155646',1,'Daikin128Protocol::OnHours()'],['../unionDaikin64Protocol.html#ab80c9a47ba53f044dc6f236bb635511e',1,'Daikin64Protocol::OnHours()'],['../unionDelonghiProtocol.html#af5cd29dcc62aa712c9754b9729e528bb',1,'DelonghiProtocol::OnHours()'],['../unionEcoclimProtocol.html#af4ae2762de59708ae92670a5deaaac61',1,'EcoclimProtocol::OnHours()'],['../unionHaierProtocol.html#af08311ee6680b3a6951bd200e2b8f310',1,'HaierProtocol::OnHours()'],['../unionVestelProtocol.html#adbcdeb4f7db89ef89217593f959f4592',1,'VestelProtocol::OnHours()'],['../unionWhirlpoolProtocol.html#a0ecde3649180f2d47e4932bb5e7cb558',1,'WhirlpoolProtocol::OnHours()']]], - ['onmins_3159',['OnMins',['../unionDelonghiProtocol.html#ace54d8cccf1885084f8c641d234b15fe',1,'DelonghiProtocol::OnMins()'],['../unionHaierProtocol.html#a65fe65bdfb819fec434eba573daccc34',1,'HaierProtocol::OnMins()'],['../unionWhirlpoolProtocol.html#ab27e3d443afec8d26d341e62fa4cbf7c',1,'WhirlpoolProtocol::OnMins()']]], - ['ontenmins_3160',['OnTenMins',['../unionEcoclimProtocol.html#afad5515fac563e6a74b2fc19032be0a6',1,'EcoclimProtocol::OnTenMins()'],['../unionVestelProtocol.html#a76f1a69f268607ff2b9b9728c50b013a',1,'VestelProtocol::OnTenMins()']]], - ['ontime_3161',['OnTime',['../unionDaikinESPProtocol.html#a95a27ed63686d577accdeefb407e3bc3',1,'DaikinESPProtocol::OnTime()'],['../unionDaikin2Protocol.html#a4fadf043415c8f20235a060f725fcd30',1,'Daikin2Protocol::OnTime()']]], - ['ontimeperiod_3162',['onTimePeriod',['../classIRsend.html#aaaa65f31dbea033f8130e847b0366d94',1,'IRsend']]], - ['ontimer_3163',['OnTimer',['../unionCarrierProtocol.html#a8b66fd8c444395f14d663000ea5a27ee',1,'CarrierProtocol::OnTimer()'],['../unionDaikinESPProtocol.html#aa39934433625161ff928097e52bff7d3',1,'DaikinESPProtocol::OnTimer()'],['../unionDaikin2Protocol.html#aa20abbbeb32f6c73e2f389b1e163814c',1,'Daikin2Protocol::OnTimer()'],['../unionDaikin128Protocol.html#a51462af9615909d23985476025d9a609',1,'Daikin128Protocol::OnTimer()'],['../unionDaikin64Protocol.html#a5ac7df474efab5bcb086df1c706d392b',1,'Daikin64Protocol::OnTimer()'],['../unionDelonghiProtocol.html#a742d638f420f489e67f03c98fab3cd9d',1,'DelonghiProtocol::OnTimer()'],['../unionFujitsuProtocol.html#af7cd4cf5d3e1fe208580a710901473d4',1,'FujitsuProtocol::OnTimer()'],['../unionHaierProtocol.html#ae5c9fd1397bcf3c6737c38d8e76682b1',1,'HaierProtocol::OnTimer()'],['../unionVestelProtocol.html#a1915bb5909374c75f4ec45ddb0584f9f',1,'VestelProtocol::OnTimer()']]], - ['ontimer12hr_3164',['OnTimer12Hr',['../unionVoltasProtocol.html#a600e00d4c64841f9ce11490197bfbc0d',1,'VoltasProtocol']]], - ['ontimerenable_3165',['OnTimerEnable',['../unionCarrierProtocol.html#aadf3236a9a5883fc7f263516be951e0c',1,'CarrierProtocol::OnTimerEnable()'],['../unionFujitsuProtocol.html#a7fc1d3edb5d3d604d13940e21d534d57',1,'FujitsuProtocol::OnTimerEnable()'],['../unionVoltasProtocol.html#a26f169f663b7cbac7e6235b7320929da',1,'VoltasProtocol::OnTimerEnable()']]], - ['ontimerenabled_3166',['OnTimerEnabled',['../unionWhirlpoolProtocol.html#a5e35f030a9ff30985738fd534154a122',1,'WhirlpoolProtocol']]], - ['ontimerhigh_3167',['OnTimerHigh',['../unionHitachi1Protocol.html#a74d9afe7eb31941ad8991d5a0533c67a',1,'Hitachi1Protocol']]], - ['ontimerhrs_3168',['OnTimerHrs',['../unionVoltasProtocol.html#ad38a8a291f71ccb4c34363c4662994d6',1,'VoltasProtocol']]], - ['ontimerlow_3169',['OnTimerLow',['../unionHitachi1Protocol.html#a682cda9a01e0f9f303b670164e0bce3b',1,'Hitachi1Protocol']]], - ['ontimermins_3170',['OnTimerMins',['../unionVoltasProtocol.html#a38cb13bbd23b5680bcdbfcf5b2223a71',1,'VoltasProtocol']]], - ['opmode_5ft_3171',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]], - ['opmodetostring_3172',['opmodeToString',['../classIRac.html#a6dd1b87f2477bc3721d207b1fed482b8',1,'IRac']]], - ['outputoff_3173',['outputOff',['../classIRsend.html#a5e80df8b2ee534dbd6ddc30a852a2791',1,'IRsend']]], - ['outputon_3174',['outputOn',['../classIRsend.html#a4acfc45b339e724e2dbdff24762dfa7d',1,'IRsend']]], - ['outsidequiet_3175',['OutsideQuiet',['../unionFujitsuProtocol.html#a5ddbee1e404cbabc7e203bbd886e7021',1,'FujitsuProtocol']]], - ['overflow_3176',['overflow',['../structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58',1,'irparams_t::overflow()'],['../classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3',1,'decode_results::overflow()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.html deleted file mode 100644 index f7e4c14e1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.js deleted file mode 100644 index be6e293db..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['airwellprotocol_3659',['AirwellProtocol',['../unionAirwellProtocol.html',1,'']]], - ['amcorprotocol_3660',['AmcorProtocol',['../unionAmcorProtocol.html',1,'']]], - ['argoprotocol_3661',['ArgoProtocol',['../unionArgoProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.html deleted file mode 100644 index c7ff4b311..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.js deleted file mode 100644 index f55bbe95a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['carrierprotocol_3662',['CarrierProtocol',['../unionCarrierProtocol.html',1,'']]], - ['coolixprotocol_3663',['CoolixProtocol',['../unionCoolixProtocol.html',1,'']]], - ['coronaprotocol_3664',['CoronaProtocol',['../unionCoronaProtocol.html',1,'']]], - ['coronasection_3665',['CoronaSection',['../structCoronaSection.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.html deleted file mode 100644 index abf37f539..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.js deleted file mode 100644 index a05c3704e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_10.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['whirlpoolprotocol_3770',['WhirlpoolProtocol',['../unionWhirlpoolProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.html deleted file mode 100644 index 0d1e8a0cd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.js deleted file mode 100644 index 96ccd79da..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_2.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['daikin128protocol_3666',['Daikin128Protocol',['../unionDaikin128Protocol.html',1,'']]], - ['daikin152protocol_3667',['Daikin152Protocol',['../unionDaikin152Protocol.html',1,'']]], - ['daikin160protocol_3668',['Daikin160Protocol',['../unionDaikin160Protocol.html',1,'']]], - ['daikin176protocol_3669',['Daikin176Protocol',['../unionDaikin176Protocol.html',1,'']]], - ['daikin216protocol_3670',['Daikin216Protocol',['../unionDaikin216Protocol.html',1,'']]], - ['daikin2protocol_3671',['Daikin2Protocol',['../unionDaikin2Protocol.html',1,'']]], - ['daikin64protocol_3672',['Daikin64Protocol',['../unionDaikin64Protocol.html',1,'']]], - ['daikinespprotocol_3673',['DaikinESPProtocol',['../unionDaikinESPProtocol.html',1,'']]], - ['decode_5fresults_3674',['decode_results',['../classdecode__results.html',1,'']]], - ['delonghiprotocol_3675',['DelonghiProtocol',['../unionDelonghiProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.html deleted file mode 100644 index 21025456b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.js deleted file mode 100644 index da67469a0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_3.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['ecoclimprotocol_3676',['EcoclimProtocol',['../unionEcoclimProtocol.html',1,'']]], - ['electraprotocol_3677',['ElectraProtocol',['../unionElectraProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.html deleted file mode 100644 index 095ab5952..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.js deleted file mode 100644 index c1e2788b4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fujitsuprotocol_3678',['FujitsuProtocol',['../unionFujitsuProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.html deleted file mode 100644 index fc9cdc996..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.js deleted file mode 100644 index 3d04e531b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['goodweatherprotocol_3679',['GoodweatherProtocol',['../unionGoodweatherProtocol.html',1,'']]], - ['greeprotocol_3680',['GreeProtocol',['../unionGreeProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.html deleted file mode 100644 index 1ecfdddff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.js deleted file mode 100644 index c76bf670b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['haierprotocol_3681',['HaierProtocol',['../unionHaierProtocol.html',1,'']]], - ['haieryrw02protocol_3682',['HaierYRW02Protocol',['../unionHaierYRW02Protocol.html',1,'']]], - ['hitachi1protocol_3683',['Hitachi1Protocol',['../unionHitachi1Protocol.html',1,'']]], - ['hitachi424protocol_3684',['Hitachi424Protocol',['../unionHitachi424Protocol.html',1,'']]], - ['hitachiprotocol_3685',['HitachiProtocol',['../unionHitachiProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.html deleted file mode 100644 index 0fc6fc3ed..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.js deleted file mode 100644 index 2781ab034..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_7.js +++ /dev/null @@ -1,60 +0,0 @@ -var searchData= -[ - ['irac_3686',['IRac',['../classIRac.html',1,'']]], - ['irairwellac_3687',['IRAirwellAc',['../classIRAirwellAc.html',1,'']]], - ['iramcorac_3688',['IRAmcorAc',['../classIRAmcorAc.html',1,'']]], - ['irargoac_3689',['IRArgoAC',['../classIRArgoAC.html',1,'']]], - ['ircarrierac64_3690',['IRCarrierAc64',['../classIRCarrierAc64.html',1,'']]], - ['ircoolixac_3691',['IRCoolixAC',['../classIRCoolixAC.html',1,'']]], - ['ircoronaac_3692',['IRCoronaAc',['../classIRCoronaAc.html',1,'']]], - ['irdaikin128_3693',['IRDaikin128',['../classIRDaikin128.html',1,'']]], - ['irdaikin152_3694',['IRDaikin152',['../classIRDaikin152.html',1,'']]], - ['irdaikin160_3695',['IRDaikin160',['../classIRDaikin160.html',1,'']]], - ['irdaikin176_3696',['IRDaikin176',['../classIRDaikin176.html',1,'']]], - ['irdaikin2_3697',['IRDaikin2',['../classIRDaikin2.html',1,'']]], - ['irdaikin216_3698',['IRDaikin216',['../classIRDaikin216.html',1,'']]], - ['irdaikin64_3699',['IRDaikin64',['../classIRDaikin64.html',1,'']]], - ['irdaikinesp_3700',['IRDaikinESP',['../classIRDaikinESP.html',1,'']]], - ['irdelonghiac_3701',['IRDelonghiAc',['../classIRDelonghiAc.html',1,'']]], - ['irecoclimac_3702',['IREcoclimAc',['../classIREcoclimAc.html',1,'']]], - ['irelectraac_3703',['IRElectraAc',['../classIRElectraAc.html',1,'']]], - ['irfujitsuac_3704',['IRFujitsuAC',['../classIRFujitsuAC.html',1,'']]], - ['irgoodweatherac_3705',['IRGoodweatherAc',['../classIRGoodweatherAc.html',1,'']]], - ['irgreeac_3706',['IRGreeAC',['../classIRGreeAC.html',1,'']]], - ['irhaierac_3707',['IRHaierAC',['../classIRHaierAC.html',1,'']]], - ['irhaieracyrw02_3708',['IRHaierACYRW02',['../classIRHaierACYRW02.html',1,'']]], - ['irhitachiac_3709',['IRHitachiAc',['../classIRHitachiAc.html',1,'']]], - ['irhitachiac1_3710',['IRHitachiAc1',['../classIRHitachiAc1.html',1,'']]], - ['irhitachiac3_3711',['IRHitachiAc3',['../classIRHitachiAc3.html',1,'']]], - ['irhitachiac344_3712',['IRHitachiAc344',['../classIRHitachiAc344.html',1,'']]], - ['irhitachiac424_3713',['IRHitachiAc424',['../classIRHitachiAc424.html',1,'']]], - ['irkelonac_3714',['IRKelonAc',['../classIRKelonAc.html',1,'']]], - ['irkelvinatorac_3715',['IRKelvinatorAC',['../classIRKelvinatorAC.html',1,'']]], - ['irlgac_3716',['IRLgAc',['../classIRLgAc.html',1,'']]], - ['irmideaac_3717',['IRMideaAC',['../classIRMideaAC.html',1,'']]], - ['irmitsubishi112_3718',['IRMitsubishi112',['../classIRMitsubishi112.html',1,'']]], - ['irmitsubishi136_3719',['IRMitsubishi136',['../classIRMitsubishi136.html',1,'']]], - ['irmitsubishiac_3720',['IRMitsubishiAC',['../classIRMitsubishiAC.html',1,'']]], - ['irmitsubishiheavy152ac_3721',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html',1,'']]], - ['irmitsubishiheavy88ac_3722',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html',1,'']]], - ['irneoclimaac_3723',['IRNeoclimaAc',['../classIRNeoclimaAc.html',1,'']]], - ['irpanasonicac_3724',['IRPanasonicAc',['../classIRPanasonicAc.html',1,'']]], - ['irpanasonicac32_3725',['IRPanasonicAc32',['../classIRPanasonicAc32.html',1,'']]], - ['irparams_5ft_3726',['irparams_t',['../structirparams__t.html',1,'']]], - ['irrecv_3727',['IRrecv',['../classIRrecv.html',1,'']]], - ['irsamsungac_3728',['IRSamsungAc',['../classIRSamsungAc.html',1,'']]], - ['irsanyoac_3729',['IRSanyoAc',['../classIRSanyoAc.html',1,'']]], - ['irsend_3730',['IRsend',['../classIRsend.html',1,'']]], - ['irsharpac_3731',['IRSharpAc',['../classIRSharpAc.html',1,'']]], - ['irtcl112ac_3732',['IRTcl112Ac',['../classIRTcl112Ac.html',1,'']]], - ['irtechnibelac_3733',['IRTechnibelAc',['../classIRTechnibelAc.html',1,'']]], - ['irtecoac_3734',['IRTecoAc',['../classIRTecoAc.html',1,'']]], - ['irtimer_3735',['IRtimer',['../classIRtimer.html',1,'']]], - ['irtoshibaac_3736',['IRToshibaAC',['../classIRToshibaAC.html',1,'']]], - ['irtranscoldac_3737',['IRTranscoldAc',['../classIRTranscoldAc.html',1,'']]], - ['irtrotecesp_3738',['IRTrotecESP',['../classIRTrotecESP.html',1,'']]], - ['irtrumaac_3739',['IRTrumaAc',['../classIRTrumaAc.html',1,'']]], - ['irvestelac_3740',['IRVestelAc',['../classIRVestelAc.html',1,'']]], - ['irvoltas_3741',['IRVoltas',['../classIRVoltas.html',1,'']]], - ['irwhirlpoolac_3742',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.html deleted file mode 100644 index ac8af7dca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.js deleted file mode 100644 index 0f9db534f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['kelonprotocol_3743',['KelonProtocol',['../unionKelonProtocol.html',1,'']]], - ['kelvinatorprotocol_3744',['KelvinatorProtocol',['../unionKelvinatorProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.html deleted file mode 100644 index 86cad046a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.js deleted file mode 100644 index 86c2a30b5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['lgprotocol_3745',['LGProtocol',['../unionLGProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.html deleted file mode 100644 index 4201e97e3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.js deleted file mode 100644 index fe028d668..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_a.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['magiquest_3746',['magiquest',['../unionmagiquest.html',1,'']]], - ['match_5fresult_5ft_3747',['match_result_t',['../structmatch__result__t.html',1,'']]], - ['mideaprotocol_3748',['MideaProtocol',['../unionMideaProtocol.html',1,'']]], - ['mitsubishi112protocol_3749',['Mitsubishi112Protocol',['../unionMitsubishi112Protocol.html',1,'']]], - ['mitsubishi136protocol_3750',['Mitsubishi136Protocol',['../unionMitsubishi136Protocol.html',1,'']]], - ['mitsubishi144protocol_3751',['Mitsubishi144Protocol',['../unionMitsubishi144Protocol.html',1,'']]], - ['mitsubishi152protocol_3752',['Mitsubishi152Protocol',['../unionMitsubishi152Protocol.html',1,'']]], - ['mitsubishi88protocol_3753',['Mitsubishi88Protocol',['../unionMitsubishi88Protocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.html deleted file mode 100644 index f88a57801..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.js deleted file mode 100644 index 824aaa977..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_b.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['neoclimaprotocol_3754',['NeoclimaProtocol',['../unionNeoclimaProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.html deleted file mode 100644 index fa0cf4d6d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.js deleted file mode 100644 index 8e6d0603a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_c.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['panasonicac32protocol_3755',['PanasonicAc32Protocol',['../unionPanasonicAc32Protocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.html deleted file mode 100644 index 0b6b13710..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.js deleted file mode 100644 index dfcc42e51..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_d.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['samsungprotocol_3756',['SamsungProtocol',['../unionSamsungProtocol.html',1,'']]], - ['sanyoprotocol_3757',['SanyoProtocol',['../unionSanyoProtocol.html',1,'']]], - ['sharpprotocol_3758',['SharpProtocol',['../unionSharpProtocol.html',1,'']]], - ['state_5ft_3759',['state_t',['../structstdAc_1_1state__t.html',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.html deleted file mode 100644 index 2e42779f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.js deleted file mode 100644 index 83c4314f0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_e.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['tcl112protocol_3760',['Tcl112Protocol',['../unionTcl112Protocol.html',1,'']]], - ['technibelprotocol_3761',['TechnibelProtocol',['../unionTechnibelProtocol.html',1,'']]], - ['tecoprotocol_3762',['TecoProtocol',['../unionTecoProtocol.html',1,'']]], - ['timerms_3763',['TimerMs',['../classTimerMs.html',1,'']]], - ['toshibaprotocol_3764',['ToshibaProtocol',['../unionToshibaProtocol.html',1,'']]], - ['transcoldprotocol_3765',['TranscoldProtocol',['../unionTranscoldProtocol.html',1,'']]], - ['trotecprotocol_3766',['TrotecProtocol',['../unionTrotecProtocol.html',1,'']]], - ['trumaprotocol_3767',['TrumaProtocol',['../unionTrumaProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.html deleted file mode 100644 index e664ccd8e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.js deleted file mode 100644 index f138f137f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/classes_f.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['vestelprotocol_3768',['VestelProtocol',['../unionVestelProtocol.html',1,'']]], - ['voltasprotocol_3769',['VoltasProtocol',['../unionVoltasProtocol.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/close.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/close.png deleted file mode 100644 index 9342d3dfeea7b7c4ee610987e717804b5a42ceb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.html deleted file mode 100644 index 9669700af..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.js deleted file mode 100644 index f0f5212ac..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['decode_5ftype_5ft_7239',['decode_type_t',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fad',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.html deleted file mode 100644 index dfec174d1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.js deleted file mode 100644 index 0708bd079..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['fanspeed_5ft_7240',['fanspeed_t',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383',1,'stdAc']]], - ['fujitsu_5fac_5fremote_5fmodel_5ft_7241',['fujitsu_ac_remote_model_t',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.html deleted file mode 100644 index db70c3668..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.js deleted file mode 100644 index f3c7203fb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['gree_5fac_5fremote_5fmodel_5ft_7242',['gree_ac_remote_model_t',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.html deleted file mode 100644 index fb7ec1764..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.js deleted file mode 100644 index 52e9f8be7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hitachi_5fac1_5fremote_5fmodel_5ft_7243',['hitachi_ac1_remote_model_t',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.html deleted file mode 100644 index b8b51ef8f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.js deleted file mode 100644 index e2df63fbf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['lg_5fac_5fremote_5fmodel_5ft_7244',['lg_ac_remote_model_t',['../IRsend_8h.html#a50c54713e16502d280723334879dc83b',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.html deleted file mode 100644 index d39b033aa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.js deleted file mode 100644 index 319e91e7e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['opmode_5ft_7245',['opmode_t',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444f',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.html deleted file mode 100644 index 7dd141e97..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.js deleted file mode 100644 index 7b4779f29..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['panasonic_5fac_5fremote_5fmodel_5ft_7246',['panasonic_ac_remote_model_t',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6f',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.html deleted file mode 100644 index 2836f52ee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.js deleted file mode 100644 index 53ba6d939..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['sharp_5fac_5fremote_5fmodel_5ft_7247',['sharp_ac_remote_model_t',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7',1,'IRsend.h']]], - ['swingh_5ft_7248',['swingh_t',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147',1,'stdAc']]], - ['swingv_5ft_7249',['swingv_t',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.html deleted file mode 100644 index cf04f764b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.js deleted file mode 100644 index 4026d4fae..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['voltas_5fac_5fremote_5fmodel_5ft_7250',['voltas_ac_remote_model_t',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.html deleted file mode 100644 index cb330655d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.js deleted file mode 100644 index 24bddeed4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enums_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['whirlpool_5fac_5fremote_5fmodel_5ft_7251',['whirlpool_ac_remote_model_t',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.html deleted file mode 100644 index 928624899..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.js deleted file mode 100644 index 3cf5b8af6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_0.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['a705_7252',['A705',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7a7478bee154c89b576fd478d9623d9281',1,'IRsend.h']]], - ['a903_7253',['A903',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7a2357513b74e874971927b6b08dcc1655',1,'IRsend.h']]], - ['a907_7254',['A907',['../IRsend_8h.html#a258e4af12642d613587149fa734e45e7a11c3296670bdeab9ddd87e4edb875e64',1,'IRsend.h']]], - ['airwell_7255',['AIRWELL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0cd75c2edaa4c674d679dbb39635990a',1,'IRremoteESP8266.h']]], - ['aiwa_5frc_5ft501_7256',['AIWA_RC_T501',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7dc14b2c4769ef9de663c2e2165d8f75',1,'IRremoteESP8266.h']]], - ['akb75215403_7257',['AKB75215403',['../IRsend_8h.html#a50c54713e16502d280723334879dc83ba37d3851f43307f1e1eac46c5fbf3f08a',1,'IRsend.h']]], - ['amcor_7258',['AMCOR',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1325ba25674d7a99562f15a1b392086b',1,'IRremoteESP8266.h']]], - ['ardb1_7259',['ARDB1',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6f6fcd0be917d91b71c1b80b5446ee5b',1,'IRsend.h']]], - ['argo_7260',['ARGO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac9ff1fa84905b54238b16d31197efb72',1,'IRremoteESP8266.h']]], - ['arjw2_7261',['ARJW2',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0acbca1f3d199103d8cb9d856b9089cdc4',1,'IRsend.h']]], - ['arrah2e_7262',['ARRAH2E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a6ccf47af1067e794e02e21f03389297b',1,'IRsend.h']]], - ['arreb1e_7263',['ARREB1E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a2443ff6f0181dbc1af275c709d67147a',1,'IRsend.h']]], - ['arrew4e_7264',['ARREW4E',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0a15f4cef920f6b63156a209dd97189a3b',1,'IRsend.h']]], - ['arry4_7265',['ARRY4',['../IRsend_8h.html#a7204e78a1fe37a819c0b66f87a685dc0aee3994c5a4a8447463d67df2cdf5a946',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.html deleted file mode 100644 index e22a79fb9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.js deleted file mode 100644 index d9ef16466..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['carrier_5fac_7266',['CARRIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4d7328071e0a48bc828fccb02f969c20',1,'IRremoteESP8266.h']]], - ['carrier_5fac40_7267',['CARRIER_AC40',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1340c578f7986b0ed126744127af3907',1,'IRremoteESP8266.h']]], - ['carrier_5fac64_7268',['CARRIER_AC64',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4122973f5d8ce282457d348857ba0af0',1,'IRremoteESP8266.h']]], - ['coolix_7269',['COOLIX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae561d1d82d90c1b54a1a502431749873',1,'IRremoteESP8266.h']]], - ['corona_5fac_7270',['CORONA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf61f2c360f487309cfa466a44fcae106',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.html deleted file mode 100644 index 7107c3d7d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.js deleted file mode 100644 index 559ec9dd8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_10.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['tcl112ac_7389',['TCL112AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac4a6ebe702365620ed65ac6f484afda6',1,'IRremoteESP8266.h']]], - ['technibel_5fac_7390',['TECHNIBEL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada11b133c97acd985c6eed8815ae0baf21',1,'IRremoteESP8266.h']]], - ['teco_7391',['TECO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3a15ee4466478d484508acc3d4d7a050',1,'IRremoteESP8266.h']]], - ['teknopoint_7392',['TEKNOPOINT',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada41578cc8c062749d2805da53694dbc55',1,'IRremoteESP8266.h']]], - ['toshiba_5fac_7393',['TOSHIBA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66de3fced9e8f97d1919bcf4d5726f3e',1,'IRremoteESP8266.h']]], - ['transcold_7394',['TRANSCOLD',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada67cbbd63e69dfc1ff147fc2a070222ef',1,'IRremoteESP8266.h']]], - ['trotec_7395',['TROTEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d0f8056d221b37f68f80bace2b794b9',1,'IRremoteESP8266.h']]], - ['truma_7396',['TRUMA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada89f82e81dfba292febe62858976e9e91',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.html deleted file mode 100644 index aab485d35..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.js deleted file mode 100644 index 3a6c86e30..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_11.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['unknown_7397',['UNKNOWN',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada6ce26a62afab55d7606ad4e92428b30c',1,'IRremoteESP8266.h']]], - ['unused_7398',['UNUSED',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa09b651ef326a9d8efcee5cc5b720ab4',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.html deleted file mode 100644 index 9d9425504..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.js deleted file mode 100644 index 3824c17e6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_12.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['vestel_5fac_7399',['VESTEL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada165413c6395bde985757b5b446f76569',1,'IRremoteESP8266.h']]], - ['voltas_7400',['VOLTAS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada507821565df57e34d8806d2613b1533c',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.html deleted file mode 100644 index f7dea3e56..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.js deleted file mode 100644 index 022064ee3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_13.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['whirlpool_5fac_7401',['WHIRLPOOL_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9faf927323d110269541b356f079b85a',1,'IRremoteESP8266.h']]], - ['whynter_7402',['WHYNTER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada458cdd7fa2b29dc8617c694696580c0c',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.html deleted file mode 100644 index 6a7874ada..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.js deleted file mode 100644 index a6c95ea28..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xmp_7403',['XMP',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada009e712c328b21b54c2a099ec8520585',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.html deleted file mode 100644 index 1e778765b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.js deleted file mode 100644 index 4dd423bf1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_15.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['yaw1f_7404',['YAW1F',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a6b29d752ac8bafc8fedabc1282fccfb6',1,'IRsend.h']]], - ['ybofb_7405',['YBOFB',['../IRsend_8h.html#af65070c92b97fa00b2de3818c46039c9a5d6dadebb4f337aa20ea06a87ae9b34a',1,'IRsend.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.html deleted file mode 100644 index da0dcc8ff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.js deleted file mode 100644 index f880c471b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zepeal_7406',['ZEPEAL',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1622e3d0835b4d47add716811c7bf797',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.html deleted file mode 100644 index 01a77bf7a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.js deleted file mode 100644 index e8fe9e72e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_2.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['daikin_7271',['DAIKIN',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8dc0597fd237d7098246334f3b5f37e',1,'IRremoteESP8266.h']]], - ['daikin128_7272',['DAIKIN128',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4b26fb376f6375dd6d1d4be186438f88',1,'IRremoteESP8266.h']]], - ['daikin152_7273',['DAIKIN152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad3f5f7ca39aee5fdab671a1b0d647ae4',1,'IRremoteESP8266.h']]], - ['daikin160_7274',['DAIKIN160',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada4db6a848df3aed4289801e1b2bbbf6aa',1,'IRremoteESP8266.h']]], - ['daikin176_7275',['DAIKIN176',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada57f78a3b04d904f19d10bac13483deab',1,'IRremoteESP8266.h']]], - ['daikin2_7276',['DAIKIN2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab37b344f84d575ec78a92ca55e153586',1,'IRremoteESP8266.h']]], - ['daikin216_7277',['DAIKIN216',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa833fa3a20c3cbb7e6206dac4da30ffb',1,'IRremoteESP8266.h']]], - ['daikin64_7278',['DAIKIN64',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada70581853ce4883b747d22fdfd74409c4',1,'IRremoteESP8266.h']]], - ['delonghi_5fac_7279',['DELONGHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada149190c9dec98e9c3f4a2bd530b154a3',1,'IRremoteESP8266.h']]], - ['denon_7280',['DENON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2bda37b76abb290d1675c3e027e3c2e1',1,'IRremoteESP8266.h']]], - ['dg11j13a_7281',['DG11J13A',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2a868d69f0605cf9151b0163a3481e2fb9',1,'IRsend.h']]], - ['dg11j191_7282',['DG11J191',['../IRsend_8h.html#ab4e3ebf2fdf3c6a46da89a3e6ebcd2e2adaecfc16f36975f231db2507a8a36c0c',1,'IRsend.h']]], - ['dish_7283',['DISH',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac27c6ac38ba872593af8e46ac2fdc85a',1,'IRremoteESP8266.h']]], - ['doshisha_7284',['DOSHISHA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab4566b260773b60c85450f40fa5b4341',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.html deleted file mode 100644 index 4e761d602..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.js deleted file mode 100644 index 411a50a36..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['ecoclim_7285',['ECOCLIM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab7e60c2218bac76695bcff178366ec8d',1,'IRremoteESP8266.h']]], - ['electra_5fac_7286',['ELECTRA_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada05f193ef4ead3e54624bd92dc3203fac',1,'IRremoteESP8266.h']]], - ['elitescreens_7287',['ELITESCREENS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafebe19d5453be4c99de8c031508b7cb1',1,'IRremoteESP8266.h']]], - ['epson_7288',['EPSON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaf677fd380c38297264a10732631927c',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.html deleted file mode 100644 index e2977a05c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.js deleted file mode 100644 index 01d7a86fd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fujitsu_5fac_7289',['FUJITSU_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad8cf99a3a8776d644b78313306a2108c',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.html deleted file mode 100644 index eabdd4be2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.js deleted file mode 100644 index 90c4f8e36..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_5.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['ge6711ar2853m_7290',['GE6711AR2853M',['../IRsend_8h.html#a50c54713e16502d280723334879dc83bada534bddbb58907faa6c7eae385ec790',1,'IRsend.h']]], - ['gicable_7291',['GICABLE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac8f9010b746a07a7a6329d1b336b68cf',1,'IRremoteESP8266.h']]], - ['globalcache_7292',['GLOBALCACHE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf8c11b983768907fdb625ff9fb3729d2',1,'IRremoteESP8266.h']]], - ['goodweather_7293',['GOODWEATHER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9e8d893590b745f6b1b5ffcb556d9cba',1,'IRremoteESP8266.h']]], - ['gree_7294',['GREE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadae3a5e7c315f6f88b34a4c856f280ed83',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.html deleted file mode 100644 index 24764919a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.js deleted file mode 100644 index af35af6d9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_6.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['haier_5fac_7295',['HAIER_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1f232bcdf330ec2e353196941b9f1628',1,'IRremoteESP8266.h']]], - ['haier_5fac176_7296',['HAIER_AC176',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5840c3d0e9c83ef706b600ba78854209',1,'IRremoteESP8266.h']]], - ['haier_5fac_5fyrw02_7297',['HAIER_AC_YRW02',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaacda5821835865551f6df46c76282fa4',1,'IRremoteESP8266.h']]], - ['hitachi_5fac_7298',['HITACHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9020fb54ac69d8aec0185f7e80c962ca',1,'IRremoteESP8266.h']]], - ['hitachi_5fac1_7299',['HITACHI_AC1',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7d9a74161d95e62bece3c0e48900cb35',1,'IRremoteESP8266.h']]], - ['hitachi_5fac2_7300',['HITACHI_AC2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab5a44068d519506efa8a3113aa44c9c0',1,'IRremoteESP8266.h']]], - ['hitachi_5fac3_7301',['HITACHI_AC3',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3487c47b14da6af922f5b27992b30f3',1,'IRremoteESP8266.h']]], - ['hitachi_5fac344_7302',['HITACHI_AC344',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1e147eb39adc40e4181940cc2357f070',1,'IRremoteESP8266.h']]], - ['hitachi_5fac424_7303',['HITACHI_AC424',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada85af068f8964d4359512265d8cc27a31',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.html deleted file mode 100644 index 5d5ce7ee6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.js deleted file mode 100644 index 36cac19a1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['inax_7304',['INAX',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadafc566aab3afb8face6d8965ca4d0eab7',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.html deleted file mode 100644 index be088de03..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.js deleted file mode 100644 index 73a62aed0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jvc_7305',['JVC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b6f507fb4bbd70ee70be4e2e0b0371d',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.html deleted file mode 100644 index b521e0972..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.js deleted file mode 100644 index 0d2388e9e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_9.js +++ /dev/null @@ -1,38 +0,0 @@ -var searchData= -[ - ['kauto_7306',['kAuto',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147aa8c857c2f1b000c92f9794ebf53888d7',1,'stdAc::kAuto()']]], - ['kcool_7307',['kCool',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fab9480fe865ab6bbfb66c8308068a06c2',1,'stdAc']]], - ['kdry_7308',['kDry',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa0d254f21cc940f41cf7cc1c8ff46ce1f',1,'stdAc']]], - ['kelon_7309',['KELON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1da4bf20d5f517e00e57b593b9878c7d',1,'IRremoteESP8266.h']]], - ['kelvinator_7310',['KELVINATOR',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab3a52797572065c912c34c976c08c542',1,'IRremoteESP8266.h']]], - ['kfan_7311',['kFan',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa03b7310c6ec7018a07ee9e3ffb95a34b',1,'stdAc']]], - ['kheat_7312',['kHeat',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444faece059b52386d38cd6da9729cca08b4e',1,'stdAc']]], - ['khigh_7313',['kHigh',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43aa022f15e910eb36278094efb6e808a07',1,'stdAc::kHigh()']]], - ['khighest_7314',['kHighest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a24d8e31603e486f788826bc24e3a2e1d',1,'stdAc']]], - ['klastdecodetype_7315',['kLastDecodeType',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab09881b84bf9d61af99e62a85cce0b59',1,'IRremoteESP8266.h']]], - ['klastfanspeedenum_7316',['kLastFanspeedEnum',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383ab2d2a6993491fd666f1fa0afff5913ad',1,'stdAc']]], - ['klastopmodeenum_7317',['kLastOpmodeEnum',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444fa8dd00ffd575f66172d594e78860aad9f',1,'stdAc']]], - ['klastswinghenum_7318',['kLastSwinghEnum',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ac5bc5e605db47897c114283926ba7fe4',1,'stdAc']]], - ['klastswingvenum_7319',['kLastSwingvEnum',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a4127912afc084d51c71c4ea0c7dd7b30',1,'stdAc']]], - ['kleft_7320',['kLeft',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2d5fde1d924910a2a01ecd8e70a87c28',1,'stdAc']]], - ['kleftmax_7321',['kLeftMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a375fe2e8ea70186052eeb2983baa1d7d',1,'stdAc']]], - ['klow_7322',['kLow',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acd8fe42741a3bbc973bbf1d404afeff4',1,'stdAc::kLow()']]], - ['klowest_7323',['kLowest',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43a334c684494b7f19d765cf062ae94a314',1,'stdAc']]], - ['kmax_7324',['kMax',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383aa0b1ac8aae6b1cfbbe89085c642b3b4b',1,'stdAc']]], - ['kmedium_7325',['kMedium',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a3ce9d817402b59f65fb01ea044bb1ee9',1,'stdAc']]], - ['kmiddle_7326',['kMiddle',['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147ab3199775e825c139b44e3e9ccf3cbc7e',1,'stdAc::kMiddle()']]], - ['kmin_7327',['kMin',['../namespacestdAc.html#a8bb0dbf18fe69f639f4ac0b3ff133383a8fbc2f6c44a6d70550df79903eb57d48',1,'stdAc']]], - ['koff_7328',['kOff',['../namespacestdAc.html#a99ad268c783486f9b3207cb78f48444facc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#ac07f224c7bb47cac55dd01f24770ef43acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()'],['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147acc9ab5e60ac2a9a675ba64bf4bb49dc8',1,'stdAc::kOff()']]], - ['kpanasonicckp_7329',['kPanasonicCkp',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa537e8c640473597d2a1cb832498f9cb0',1,'IRsend.h']]], - ['kpanasonicdke_7330',['kPanasonicDke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fac8df2e0cfd553b0103f4c06a0fd573fd',1,'IRsend.h']]], - ['kpanasonicjke_7331',['kPanasonicJke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fabf39cff180c071fbc44601eeded236c4',1,'IRsend.h']]], - ['kpanasoniclke_7332',['kPanasonicLke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa71ceb4b576a03a47f0d945323b896cd6',1,'IRsend.h']]], - ['kpanasonicnke_7333',['kPanasonicNke',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6faf70fc847e204f60ab1dc5ecb330fc790',1,'IRsend.h']]], - ['kpanasonicrkr_7334',['kPanasonicRkr',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fab809a062f38eb61589cf5aa2db5789db',1,'IRsend.h']]], - ['kpanasonicunknown_7335',['kPanasonicUnknown',['../IRsend_8h.html#a1b797a5e5176ac0eef49810bf7f40e6fa3b23623c9580717d0ade5137200ae2a4',1,'IRsend.h']]], - ['kright_7336',['kRight',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a2dd2b017192f8a09367d48c7648213c9',1,'stdAc']]], - ['krightmax_7337',['kRightMax',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a856bf9929ade459f451be17c97db4b32',1,'stdAc']]], - ['kvoltas122lzf_7338',['kVoltas122LZF',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2a8de4d20c3d39f984be46ee9ead3b2a59',1,'IRsend.h']]], - ['kvoltasunknown_7339',['kVoltasUnknown',['../IRsend_8h.html#aaf962dae17f7186607a93128fc2d13e2aa804f5b34349056dea270669f8b67229',1,'IRsend.h']]], - ['kwide_7340',['kWide',['../namespacestdAc.html#aae50ee315fa9c9ec1a4078da40d6b147a9934dc3d02540583d5f13be6716739cd',1,'stdAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.html deleted file mode 100644 index ea342169a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.js deleted file mode 100644 index b76d2104d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_a.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['lasertag_7341',['LASERTAG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada92eadf4fa6dd16da5b79a2fcbf729894',1,'IRremoteESP8266.h']]], - ['legopf_7342',['LEGOPF',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9a31bf5555b17ea7b115a5c2550fc1de',1,'IRremoteESP8266.h']]], - ['lg_7343',['LG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf6c249ac7d923229f9e623eff9a61f4',1,'IRremoteESP8266.h']]], - ['lg2_7344',['LG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8402547ec0b99b9b0efe97dec65badf9',1,'IRremoteESP8266.h']]], - ['lutron_7345',['LUTRON',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada76cc459b9e26d82ed82cf120272fd8cb',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.html deleted file mode 100644 index 0bb27ce3b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.js deleted file mode 100644 index b83fa5283..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_b.js +++ /dev/null @@ -1,18 +0,0 @@ -var searchData= -[ - ['magiquest_7346',['MAGIQUEST',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3be750ce1687bc1a92fee05b0c511100',1,'IRremoteESP8266.h']]], - ['metz_7347',['METZ',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa77ca3ee98846eee35bd2995bf2ae25b',1,'IRremoteESP8266.h']]], - ['midea_7348',['MIDEA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1571f3cf72caf1cf23481802b450382a',1,'IRremoteESP8266.h']]], - ['midea24_7349',['MIDEA24',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada59b5ac5c1d354e50932dc0208d9b0b43',1,'IRremoteESP8266.h']]], - ['milestag2_7350',['MILESTAG2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5ffb7486d99840e02f2688e3d6605a14',1,'IRremoteESP8266.h']]], - ['mirage_7351',['MIRAGE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada9ab6dd14fa5c7d0d32c60d414c7df36a',1,'IRremoteESP8266.h']]], - ['mitsubishi_7352',['MITSUBISHI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab98915357fe1cb91de0536136be20d07',1,'IRremoteESP8266.h']]], - ['mitsubishi112_7353',['MITSUBISHI112',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadab8e5875a5959b72ca7ff17bccff97c4d',1,'IRremoteESP8266.h']]], - ['mitsubishi136_7354',['MITSUBISHI136',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada3c73724a654627a04cc96e280b9630fe',1,'IRremoteESP8266.h']]], - ['mitsubishi2_7355',['MITSUBISHI2',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada66368850d567cbeb3b2c2233cae34cd0',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fac_7356',['MITSUBISHI_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada45198cb83bbf76b320eaa91d09c44b38',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fheavy_5f152_7357',['MITSUBISHI_HEAVY_152',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada15c8d1d51d5f9e42fd03638cbdfb7cbf',1,'IRremoteESP8266.h']]], - ['mitsubishi_5fheavy_5f88_7358',['MITSUBISHI_HEAVY_88',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadad303f6c0494d33354cb7c11af258f663',1,'IRremoteESP8266.h']]], - ['multibrackets_7359',['MULTIBRACKETS',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaaebb72f3ad9ff2a706d8041763de6e49',1,'IRremoteESP8266.h']]], - ['mwm_7360',['MWM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a6938c955212e1fb81fb511437cbe56',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.html deleted file mode 100644 index 1ee90d91d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.js deleted file mode 100644 index 07b0b650a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_c.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['nec_7361',['NEC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0811f93a25b0873e21979d569eeac05e',1,'IRremoteESP8266.h']]], - ['nec_5flike_7362',['NEC_LIKE',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada97acfde550d201fa0abc3120098fb471',1,'IRremoteESP8266.h']]], - ['neoclima_7363',['NEOCLIMA',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac698e0c030768ed91207b0e63910c3e7',1,'IRremoteESP8266.h']]], - ['nikai_7364',['NIKAI',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0bc180c4ab5e68798451f4799f7f9377',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.html deleted file mode 100644 index e1b3b48a0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.js deleted file mode 100644 index d094faed2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_d.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['panasonic_7365',['PANASONIC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf87c99938d26a1f77d4f082c070d4660',1,'IRremoteESP8266.h']]], - ['panasonic_5fac_7366',['PANASONIC_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada02178d0c70511011d5f381291bb7e491',1,'IRremoteESP8266.h']]], - ['panasonic_5fac32_7367',['PANASONIC_AC32',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada790ec65ea3e5d3ef9dc19614521c889e',1,'IRremoteESP8266.h']]], - ['pioneer_7368',['PIONEER',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadadf49fef8f6e9740c92af2e25384f7846',1,'IRremoteESP8266.h']]], - ['pronto_7369',['PRONTO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada5b68c32f80c4afa6e61039843b2d1f97',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.html deleted file mode 100644 index c5d31975c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.js deleted file mode 100644 index ffef82c68..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_e.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['r_5flt0541_5fhta_5fa_7370',['R_LT0541_HTA_A',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49afed7c9dd67250bb1e72081e5f05b35f8',1,'IRsend.h']]], - ['r_5flt0541_5fhta_5fb_7371',['R_LT0541_HTA_B',['../IRsend_8h.html#acd0c6107b5a6cab2080b18a8de14ea49a03b6e058b4cfeb6719906bc3cd57594f',1,'IRsend.h']]], - ['raw_7372',['RAW',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadabdeded99fe7d3f2773014a9a2cfb73d7',1,'IRremoteESP8266.h']]], - ['rc5_7373',['RC5',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac3c0a3883a1488209bcd91730ece33b2',1,'IRremoteESP8266.h']]], - ['rc5x_7374',['RC5X',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada8a3ac4419806a34ba566bfcbbb0e4f1d',1,'IRremoteESP8266.h']]], - ['rc6_7375',['RC6',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada7f7247f15587eb3812846f424b941abe',1,'IRremoteESP8266.h']]], - ['rcmm_7376',['RCMM',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada79204b7ae26be334cebf3ea8268c34ab',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.html deleted file mode 100644 index 5de961d49..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.js deleted file mode 100644 index f1e1ed017..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/enumvalues_f.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['samsung_7377',['SAMSUNG',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada2b451b6e7bebbf070d0913ec77d5d438',1,'IRremoteESP8266.h']]], - ['samsung36_7378',['SAMSUNG36',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaa0d1be0c368e3594bc546c241d031fd4',1,'IRremoteESP8266.h']]], - ['samsung_5fac_7379',['SAMSUNG_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada39f991023009d760432489e7ad7ad4df',1,'IRremoteESP8266.h']]], - ['sanyo_7380',['SANYO',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadac1cf5078ebfd7ff83c70e8ec8522b288',1,'IRremoteESP8266.h']]], - ['sanyo_5fac_7381',['SANYO_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaf85e76d33b94649a2ecc957acd214209',1,'IRremoteESP8266.h']]], - ['sanyo_5flc7461_7382',['SANYO_LC7461',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada558721044a11b1d4b491343f02267e1d',1,'IRremoteESP8266.h']]], - ['sharp_7383',['SHARP',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fadaad63db67a2284cd7e3ffe382b6d6ea82',1,'IRremoteESP8266.h']]], - ['sharp_5fac_7384',['SHARP_AC',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada353a9d71906702ae10aa4f803a04ca68',1,'IRremoteESP8266.h']]], - ['sherwood_7385',['SHERWOOD',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada1412522651b0c8f1a35e1db3807466bb',1,'IRremoteESP8266.h']]], - ['sony_7386',['SONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada72d58193d4d25517202d22b7e57a65c3',1,'IRremoteESP8266.h']]], - ['sony_5f38k_7387',['SONY_38K',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada0027bcfbb78c0c2b951dfff1102a027b',1,'IRremoteESP8266.h']]], - ['symphony_7388',['SYMPHONY',['../IRremoteESP8266_8h.html#ad5b287a488a8c1b7b8661f029ab56fada44c4a84d776e02328ef3b169e743e5ec',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.html deleted file mode 100644 index 737608e10..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.js deleted file mode 100644 index 8f313c14d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['de_2dch_2eh_3776',['de-CH.h',['../de-CH_8h.html',1,'']]], - ['de_2dde_2eh_3777',['de-DE.h',['../de-DE_8h.html',1,'']]], - ['defaults_2eh_3778',['defaults.h',['../defaults_8h.html',1,'']]], - ['doxygen_5findex_2emd_3779',['doxygen_index.md',['../doxygen__index_8md.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.html deleted file mode 100644 index f27a62dee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.js deleted file mode 100644 index b9595974f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['en_2dau_2eh_3780',['en-AU.h',['../en-AU_8h.html',1,'']]], - ['en_2die_2eh_3781',['en-IE.h',['../en-IE_8h.html',1,'']]], - ['en_2duk_2eh_3782',['en-UK.h',['../en-UK_8h.html',1,'']]], - ['en_2dus_2eh_3783',['en-US.h',['../en-US_8h.html',1,'']]], - ['es_2des_2eh_3784',['es-ES.h',['../es-ES_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.html deleted file mode 100644 index a45066e93..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.js deleted file mode 100644 index 040a4cb5f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['fr_2dfr_2eh_3785',['fr-FR.h',['../fr-FR_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.html deleted file mode 100644 index 1076bc5a1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.js deleted file mode 100644 index 95edc1f99..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_3.js +++ /dev/null @@ -1,124 +0,0 @@ -var searchData= -[ - ['i18n_2eh_3786',['i18n.h',['../i18n_8h.html',1,'']]], - ['ir_5fairwell_2ecpp_3787',['ir_Airwell.cpp',['../ir__Airwell_8cpp.html',1,'']]], - ['ir_5fairwell_2eh_3788',['ir_Airwell.h',['../ir__Airwell_8h.html',1,'']]], - ['ir_5faiwa_2ecpp_3789',['ir_Aiwa.cpp',['../ir__Aiwa_8cpp.html',1,'']]], - ['ir_5famcor_2ecpp_3790',['ir_Amcor.cpp',['../ir__Amcor_8cpp.html',1,'']]], - ['ir_5famcor_2eh_3791',['ir_Amcor.h',['../ir__Amcor_8h.html',1,'']]], - ['ir_5fargo_2ecpp_3792',['ir_Argo.cpp',['../ir__Argo_8cpp.html',1,'']]], - ['ir_5fargo_2eh_3793',['ir_Argo.h',['../ir__Argo_8h.html',1,'']]], - ['ir_5fcarrier_2ecpp_3794',['ir_Carrier.cpp',['../ir__Carrier_8cpp.html',1,'']]], - ['ir_5fcarrier_2eh_3795',['ir_Carrier.h',['../ir__Carrier_8h.html',1,'']]], - ['ir_5fcoolix_2ecpp_3796',['ir_Coolix.cpp',['../ir__Coolix_8cpp.html',1,'']]], - ['ir_5fcoolix_2eh_3797',['ir_Coolix.h',['../ir__Coolix_8h.html',1,'']]], - ['ir_5fcorona_2ecpp_3798',['ir_Corona.cpp',['../ir__Corona_8cpp.html',1,'']]], - ['ir_5fcorona_2eh_3799',['ir_Corona.h',['../ir__Corona_8h.html',1,'']]], - ['ir_5fdaikin_2ecpp_3800',['ir_Daikin.cpp',['../ir__Daikin_8cpp.html',1,'']]], - ['ir_5fdaikin_2eh_3801',['ir_Daikin.h',['../ir__Daikin_8h.html',1,'']]], - ['ir_5fdelonghi_2ecpp_3802',['ir_Delonghi.cpp',['../ir__Delonghi_8cpp.html',1,'']]], - ['ir_5fdelonghi_2eh_3803',['ir_Delonghi.h',['../ir__Delonghi_8h.html',1,'']]], - ['ir_5fdenon_2ecpp_3804',['ir_Denon.cpp',['../ir__Denon_8cpp.html',1,'']]], - ['ir_5fdish_2ecpp_3805',['ir_Dish.cpp',['../ir__Dish_8cpp.html',1,'']]], - ['ir_5fdoshisha_2ecpp_3806',['ir_Doshisha.cpp',['../ir__Doshisha_8cpp.html',1,'']]], - ['ir_5fecoclim_2ecpp_3807',['ir_Ecoclim.cpp',['../ir__Ecoclim_8cpp.html',1,'']]], - ['ir_5fecoclim_2eh_3808',['ir_Ecoclim.h',['../ir__Ecoclim_8h.html',1,'']]], - ['ir_5felectra_2ecpp_3809',['ir_Electra.cpp',['../ir__Electra_8cpp.html',1,'']]], - ['ir_5felectra_2eh_3810',['ir_Electra.h',['../ir__Electra_8h.html',1,'']]], - ['ir_5felitescreens_2ecpp_3811',['ir_EliteScreens.cpp',['../ir__EliteScreens_8cpp.html',1,'']]], - ['ir_5fepson_2ecpp_3812',['ir_Epson.cpp',['../ir__Epson_8cpp.html',1,'']]], - ['ir_5ffujitsu_2ecpp_3813',['ir_Fujitsu.cpp',['../ir__Fujitsu_8cpp.html',1,'']]], - ['ir_5ffujitsu_2eh_3814',['ir_Fujitsu.h',['../ir__Fujitsu_8h.html',1,'']]], - ['ir_5fgicable_2ecpp_3815',['ir_GICable.cpp',['../ir__GICable_8cpp.html',1,'']]], - ['ir_5fglobalcache_2ecpp_3816',['ir_GlobalCache.cpp',['../ir__GlobalCache_8cpp.html',1,'']]], - ['ir_5fgoodweather_2ecpp_3817',['ir_Goodweather.cpp',['../ir__Goodweather_8cpp.html',1,'']]], - ['ir_5fgoodweather_2eh_3818',['ir_Goodweather.h',['../ir__Goodweather_8h.html',1,'']]], - ['ir_5fgree_2ecpp_3819',['ir_Gree.cpp',['../ir__Gree_8cpp.html',1,'']]], - ['ir_5fgree_2eh_3820',['ir_Gree.h',['../ir__Gree_8h.html',1,'']]], - ['ir_5fhaier_2ecpp_3821',['ir_Haier.cpp',['../ir__Haier_8cpp.html',1,'']]], - ['ir_5fhaier_2eh_3822',['ir_Haier.h',['../ir__Haier_8h.html',1,'']]], - ['ir_5fhitachi_2ecpp_3823',['ir_Hitachi.cpp',['../ir__Hitachi_8cpp.html',1,'']]], - ['ir_5fhitachi_2eh_3824',['ir_Hitachi.h',['../ir__Hitachi_8h.html',1,'']]], - ['ir_5finax_2ecpp_3825',['ir_Inax.cpp',['../ir__Inax_8cpp.html',1,'']]], - ['ir_5fjvc_2ecpp_3826',['ir_JVC.cpp',['../ir__JVC_8cpp.html',1,'']]], - ['ir_5fkelon_2ecpp_3827',['ir_Kelon.cpp',['../ir__Kelon_8cpp.html',1,'']]], - ['ir_5fkelon_2eh_3828',['ir_Kelon.h',['../ir__Kelon_8h.html',1,'']]], - ['ir_5fkelvinator_2ecpp_3829',['ir_Kelvinator.cpp',['../ir__Kelvinator_8cpp.html',1,'']]], - ['ir_5fkelvinator_2eh_3830',['ir_Kelvinator.h',['../ir__Kelvinator_8h.html',1,'']]], - ['ir_5flasertag_2ecpp_3831',['ir_Lasertag.cpp',['../ir__Lasertag_8cpp.html',1,'']]], - ['ir_5flego_2ecpp_3832',['ir_Lego.cpp',['../ir__Lego_8cpp.html',1,'']]], - ['ir_5flg_2ecpp_3833',['ir_LG.cpp',['../ir__LG_8cpp.html',1,'']]], - ['ir_5flg_2eh_3834',['ir_LG.h',['../ir__LG_8h.html',1,'']]], - ['ir_5flutron_2ecpp_3835',['ir_Lutron.cpp',['../ir__Lutron_8cpp.html',1,'']]], - ['ir_5fmagiquest_2ecpp_3836',['ir_Magiquest.cpp',['../ir__Magiquest_8cpp.html',1,'']]], - ['ir_5fmagiquest_2eh_3837',['ir_Magiquest.h',['../ir__Magiquest_8h.html',1,'']]], - ['ir_5fmetz_2ecpp_3838',['ir_Metz.cpp',['../ir__Metz_8cpp.html',1,'']]], - ['ir_5fmidea_2ecpp_3839',['ir_Midea.cpp',['../ir__Midea_8cpp.html',1,'']]], - ['ir_5fmidea_2eh_3840',['ir_Midea.h',['../ir__Midea_8h.html',1,'']]], - ['ir_5fmilestag2_2ecpp_3841',['ir_MilesTag2.cpp',['../ir__MilesTag2_8cpp.html',1,'']]], - ['ir_5fmirage_2ecpp_3842',['ir_Mirage.cpp',['../ir__Mirage_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2ecpp_3843',['ir_Mitsubishi.cpp',['../ir__Mitsubishi_8cpp.html',1,'']]], - ['ir_5fmitsubishi_2eh_3844',['ir_Mitsubishi.h',['../ir__Mitsubishi_8h.html',1,'']]], - ['ir_5fmitsubishiheavy_2ecpp_3845',['ir_MitsubishiHeavy.cpp',['../ir__MitsubishiHeavy_8cpp.html',1,'']]], - ['ir_5fmitsubishiheavy_2eh_3846',['ir_MitsubishiHeavy.h',['../ir__MitsubishiHeavy_8h.html',1,'']]], - ['ir_5fmultibrackets_2ecpp_3847',['ir_Multibrackets.cpp',['../ir__Multibrackets_8cpp.html',1,'']]], - ['ir_5fmwm_2ecpp_3848',['ir_MWM.cpp',['../ir__MWM_8cpp.html',1,'']]], - ['ir_5fnec_2ecpp_3849',['ir_NEC.cpp',['../ir__NEC_8cpp.html',1,'']]], - ['ir_5fnec_2eh_3850',['ir_NEC.h',['../ir__NEC_8h.html',1,'']]], - ['ir_5fneoclima_2ecpp_3851',['ir_Neoclima.cpp',['../ir__Neoclima_8cpp.html',1,'']]], - ['ir_5fneoclima_2eh_3852',['ir_Neoclima.h',['../ir__Neoclima_8h.html',1,'']]], - ['ir_5fnikai_2ecpp_3853',['ir_Nikai.cpp',['../ir__Nikai_8cpp.html',1,'']]], - ['ir_5fpanasonic_2ecpp_3854',['ir_Panasonic.cpp',['../ir__Panasonic_8cpp.html',1,'']]], - ['ir_5fpanasonic_2eh_3855',['ir_Panasonic.h',['../ir__Panasonic_8h.html',1,'']]], - ['ir_5fpioneer_2ecpp_3856',['ir_Pioneer.cpp',['../ir__Pioneer_8cpp.html',1,'']]], - ['ir_5fpronto_2ecpp_3857',['ir_Pronto.cpp',['../ir__Pronto_8cpp.html',1,'']]], - ['ir_5frc5_5frc6_2ecpp_3858',['ir_RC5_RC6.cpp',['../ir__RC5__RC6_8cpp.html',1,'']]], - ['ir_5frcmm_2ecpp_3859',['ir_RCMM.cpp',['../ir__RCMM_8cpp.html',1,'']]], - ['ir_5fsamsung_2ecpp_3860',['ir_Samsung.cpp',['../ir__Samsung_8cpp.html',1,'']]], - ['ir_5fsamsung_2eh_3861',['ir_Samsung.h',['../ir__Samsung_8h.html',1,'']]], - ['ir_5fsanyo_2ecpp_3862',['ir_Sanyo.cpp',['../ir__Sanyo_8cpp.html',1,'']]], - ['ir_5fsanyo_2eh_3863',['ir_Sanyo.h',['../ir__Sanyo_8h.html',1,'']]], - ['ir_5fsharp_2ecpp_3864',['ir_Sharp.cpp',['../ir__Sharp_8cpp.html',1,'']]], - ['ir_5fsharp_2eh_3865',['ir_Sharp.h',['../ir__Sharp_8h.html',1,'']]], - ['ir_5fsherwood_2ecpp_3866',['ir_Sherwood.cpp',['../ir__Sherwood_8cpp.html',1,'']]], - ['ir_5fsony_2ecpp_3867',['ir_Sony.cpp',['../ir__Sony_8cpp.html',1,'']]], - ['ir_5fsymphony_2ecpp_3868',['ir_Symphony.cpp',['../ir__Symphony_8cpp.html',1,'']]], - ['ir_5ftcl_2ecpp_3869',['ir_Tcl.cpp',['../ir__Tcl_8cpp.html',1,'']]], - ['ir_5ftcl_2eh_3870',['ir_Tcl.h',['../ir__Tcl_8h.html',1,'']]], - ['ir_5ftechnibel_2ecpp_3871',['ir_Technibel.cpp',['../ir__Technibel_8cpp.html',1,'']]], - ['ir_5ftechnibel_2eh_3872',['ir_Technibel.h',['../ir__Technibel_8h.html',1,'']]], - ['ir_5fteco_2ecpp_3873',['ir_Teco.cpp',['../ir__Teco_8cpp.html',1,'']]], - ['ir_5fteco_2eh_3874',['ir_Teco.h',['../ir__Teco_8h.html',1,'']]], - ['ir_5fteknopoint_2ecpp_3875',['ir_Teknopoint.cpp',['../ir__Teknopoint_8cpp.html',1,'']]], - ['ir_5ftoshiba_2ecpp_3876',['ir_Toshiba.cpp',['../ir__Toshiba_8cpp.html',1,'']]], - ['ir_5ftoshiba_2eh_3877',['ir_Toshiba.h',['../ir__Toshiba_8h.html',1,'']]], - ['ir_5ftranscold_2ecpp_3878',['ir_Transcold.cpp',['../ir__Transcold_8cpp.html',1,'']]], - ['ir_5ftranscold_2eh_3879',['ir_Transcold.h',['../ir__Transcold_8h.html',1,'']]], - ['ir_5ftrotec_2ecpp_3880',['ir_Trotec.cpp',['../ir__Trotec_8cpp.html',1,'']]], - ['ir_5ftrotec_2eh_3881',['ir_Trotec.h',['../ir__Trotec_8h.html',1,'']]], - ['ir_5ftruma_2ecpp_3882',['ir_Truma.cpp',['../ir__Truma_8cpp.html',1,'']]], - ['ir_5ftruma_2eh_3883',['ir_Truma.h',['../ir__Truma_8h.html',1,'']]], - ['ir_5fvestel_2ecpp_3884',['ir_Vestel.cpp',['../ir__Vestel_8cpp.html',1,'']]], - ['ir_5fvestel_2eh_3885',['ir_Vestel.h',['../ir__Vestel_8h.html',1,'']]], - ['ir_5fvoltas_2ecpp_3886',['ir_Voltas.cpp',['../ir__Voltas_8cpp.html',1,'']]], - ['ir_5fvoltas_2eh_3887',['ir_Voltas.h',['../ir__Voltas_8h.html',1,'']]], - ['ir_5fwhirlpool_2ecpp_3888',['ir_Whirlpool.cpp',['../ir__Whirlpool_8cpp.html',1,'']]], - ['ir_5fwhirlpool_2eh_3889',['ir_Whirlpool.h',['../ir__Whirlpool_8h.html',1,'']]], - ['ir_5fwhynter_2ecpp_3890',['ir_Whynter.cpp',['../ir__Whynter_8cpp.html',1,'']]], - ['ir_5fxmp_2ecpp_3891',['ir_Xmp.cpp',['../ir__Xmp_8cpp.html',1,'']]], - ['ir_5fzepeal_2ecpp_3892',['ir_Zepeal.cpp',['../ir__Zepeal_8cpp.html',1,'']]], - ['irac_2ecpp_3893',['IRac.cpp',['../IRac_8cpp.html',1,'']]], - ['irac_2eh_3894',['IRac.h',['../IRac_8h.html',1,'']]], - ['irrecv_2ecpp_3895',['IRrecv.cpp',['../IRrecv_8cpp.html',1,'']]], - ['irrecv_2eh_3896',['IRrecv.h',['../IRrecv_8h.html',1,'']]], - ['irremoteesp8266_2eh_3897',['IRremoteESP8266.h',['../IRremoteESP8266_8h.html',1,'']]], - ['irsend_2ecpp_3898',['IRsend.cpp',['../IRsend_8cpp.html',1,'']]], - ['irsend_2eh_3899',['IRsend.h',['../IRsend_8h.html',1,'']]], - ['irtext_2ecpp_3900',['IRtext.cpp',['../IRtext_8cpp.html',1,'']]], - ['irtext_2eh_3901',['IRtext.h',['../IRtext_8h.html',1,'']]], - ['irtimer_2ecpp_3902',['IRtimer.cpp',['../IRtimer_8cpp.html',1,'']]], - ['irtimer_2eh_3903',['IRtimer.h',['../IRtimer_8h.html',1,'']]], - ['irutils_2ecpp_3904',['IRutils.cpp',['../IRutils_8cpp.html',1,'']]], - ['irutils_2eh_3905',['IRutils.h',['../IRutils_8h.html',1,'']]], - ['it_2dit_2eh_3906',['it-IT.h',['../it-IT_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.html deleted file mode 100644 index e5cd7f43a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.js deleted file mode 100644 index 526aa095f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['pt_2dbr_2eh_3907',['pt-BR.h',['../pt-BR_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.html deleted file mode 100644 index 2cc480f29..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.js deleted file mode 100644 index f2c1e14bb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['readme_2emd_3908',['README.md',['../README_8md.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.html deleted file mode 100644 index 6510245ff..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.js deleted file mode 100644 index 681089f09..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['zh_2dcn_2eh_3909',['zh-CN.h',['../zh-CN_8h.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.html deleted file mode 100644 index e17c71111..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.js deleted file mode 100644 index c9a7fe2b8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_0.js +++ /dev/null @@ -1,21 +0,0 @@ -var searchData= -[ - ['_5fbackupstate_3910',['_backupState',['../classIRToshibaAC.html#a108c23cb859a64228166e5385295a1e5',1,'IRToshibaAC']]], - ['_5fcancelofftimer_3911',['_cancelOffTimer',['../classIRCarrierAc64.html#a4a0fdf34836b1c954b27c9b242324679',1,'IRCarrierAc64']]], - ['_5fcancelontimer_3912',['_cancelOnTimer',['../classIRCarrierAc64.html#a43e7be5a1a6fe2dbfe245e99d2205779',1,'IRCarrierAc64']]], - ['_5fdelaymicroseconds_3913',['_delayMicroseconds',['../classIRsend.html#a61ceb32aa53f538b93377b10e58b45c9',1,'IRsend']]], - ['_5fgeteconotoggle_3914',['_getEconoToggle',['../classIRSharpAc.html#a4cbf2b92302a8b0a40e76e7431c82745',1,'IRSharpAc']]], - ['_5fgetparamsptr_3915',['_getParamsPtr',['../classIRrecv.html#ae388aa2a339d589a6f9f1cc5cbbda7f4',1,'IRrecv']]], - ['_5fgettime_3916',['_getTime',['../classIRPanasonicAc.html#ab0a592b759daf90be548ac69ae99f40f',1,'IRPanasonicAc']]], - ['_5fgettimer_3917',['_getTimer',['../classIRCoronaAc.html#a352fedb1c80549d2b580e538d8ba7901',1,'IRCoronaAc']]], - ['_5fmatchgeneric_3918',['_matchGeneric',['../classIRrecv.html#af0b300fe6fdff58324525e8208be3024',1,'IRrecv']]], - ['_5frestorestate_3919',['_restoreState',['../classIRToshibaAC.html#a23fb190770159f8f1e9bf64df22e8a26',1,'IRToshibaAC']]], - ['_5fsendsony_3920',['_sendSony',['../classIRsend.html#a21352b4499f976872a74bae36ea10338',1,'IRsend']]], - ['_5fseteconotoggle_3921',['_setEconoToggle',['../classIRSharpAc.html#a959d422c7e5a5204909b299a5fbb2a69',1,'IRSharpAc']]], - ['_5fsetmode_3922',['_setMode',['../classIRWhirlpoolAc.html#a60fd8da35d6e0137711e114a5307d664',1,'IRWhirlpoolAc']]], - ['_5fsettemp_3923',['_setTemp',['../classIRLgAc.html#a39aca9861608211c8e74c89a7ccc97cd',1,'IRLgAc::_setTemp()'],['../classIRWhirlpoolAc.html#abb221e09077efd96304f84e8ca130458',1,'IRWhirlpoolAc::_setTemp()']]], - ['_5fsettime_3924',['_setTime',['../classIRPanasonicAc.html#a51e306dd7a3e4d580ed5396fcd166141',1,'IRPanasonicAc']]], - ['_5fsettimer_3925',['_setTimer',['../classIRCoronaAc.html#a0ea9319987de7cb7f3dcb9fbefb60a2c',1,'IRCoronaAc']]], - ['_5ftostring_3926',['_toString',['../classIRHitachiAc424.html#af8ff90fe9beb31d8f44310a9e646a230',1,'IRHitachiAc424']]], - ['_5fvalidtolerance_3927',['_validTolerance',['../classIRrecv.html#a0b4221970de0d027b5ae99648fa1c003',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.html deleted file mode 100644 index 0ddac0a4f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.js deleted file mode 100644 index 99ace7f6a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_1.js +++ /dev/null @@ -1,20 +0,0 @@ -var searchData= -[ - ['add_3928',['add',['../classIRtimer.html#aa8e3ff975ae5468b4727790c828fa032',1,'IRtimer::add()'],['../classTimerMs.html#a77bfc23a029a9172c3dbac03f746b0cb',1,'TimerMs::add()']]], - ['addbooltostring_3929',['addBoolToString',['../namespaceirutils.html#a12ba9cf1830a886649a80c3cc5fdce2b',1,'irutils']]], - ['adddaytostring_3930',['addDayToString',['../namespaceirutils.html#a6ead1d10578c64627f8a24b5d8a7444f',1,'irutils']]], - ['addfantostring_3931',['addFanToString',['../namespaceirutils.html#af222d5a977e2cd2c979184c449d3c2f8',1,'irutils']]], - ['addinttostring_3932',['addIntToString',['../namespaceirutils.html#a772e623c4b60208200e02afbaec66651',1,'irutils']]], - ['addlabeledstring_3933',['addLabeledString',['../namespaceirutils.html#ac98793392d1e65c1b8d6895eb9d9b75b',1,'irutils']]], - ['addmodeltostring_3934',['addModelToString',['../namespaceirutils.html#a06e5a5c2b6f6649035dfa5eb19801367',1,'irutils']]], - ['addmodetostring_3935',['addModeToString',['../namespaceirutils.html#a8b74ae0258e98aa0eaebc6f3efe1481e',1,'irutils']]], - ['addsignedinttostring_3936',['addSignedIntToString',['../namespaceirutils.html#ad8032ad49c2af274b7c9bc2ecd7d6bce',1,'irutils']]], - ['addswinghtostring_3937',['addSwingHToString',['../namespaceirutils.html#ae9eeea9379788b856d148ca5bc7eaf7a',1,'irutils']]], - ['addswingvtostring_3938',['addSwingVToString',['../namespaceirutils.html#a4921dc8d85aa1cc3e89aaa64c24abd58',1,'irutils']]], - ['addtempfloattostring_3939',['addTempFloatToString',['../namespaceirutils.html#a3a47e2b142c7738958e367b0c80a79e7',1,'irutils']]], - ['addtemptostring_3940',['addTempToString',['../namespaceirutils.html#a0cef0634f4db979a93b7dc19cc2b4a85',1,'irutils']]], - ['adjustrepeat_3941',['adjustRepeat',['../namespaceIRXmpUtils.html#a8e7705ba4373589a651e662a3debb0a8',1,'IRXmpUtils']]], - ['airwell_3942',['airwell',['../classIRac.html#a26cd62e09250d87b652d35406ebfb159',1,'IRac']]], - ['amcor_3943',['amcor',['../classIRac.html#a4bad16621b232572e14fe4a53f678131',1,'IRac']]], - ['argo_3944',['argo',['../classIRac.html#aa06ee1314529dbf96f4e6f3c28ea6821',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.html deleted file mode 100644 index 09422e1e5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.js deleted file mode 100644 index 9be1ab4c6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_10.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['recoversavedstate_4373',['recoverSavedState',['../classIRCoolixAC.html#a134cb36681c3fab53074b402bba0a45c',1,'IRCoolixAC']]], - ['reset_4374',['reset',['../classIRtimer.html#aaaf886de2c9533a8c791242dc575db1a',1,'IRtimer::reset()'],['../classTimerMs.html#a25ab025793a4d432e7d4180cbd31157b',1,'TimerMs::reset()']]], - ['resultactostring_4375',['resultAcToString',['../namespaceIRAcUtils.html#ac3d2683bc26edc2bf58916187b5349c3',1,'IRAcUtils']]], - ['resulttohexidecimal_4376',['resultToHexidecimal',['../IRutils_8cpp.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp'],['../IRutils_8h.html#a25a669d53f231de6152f8e60cedf39f7',1,'resultToHexidecimal(const decode_results *const result): IRutils.cpp']]], - ['resulttohumanreadablebasic_4377',['resultToHumanReadableBasic',['../IRutils_8cpp.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a0cc6ae1b9649b1ea1d2bfe7e7b03b6d8',1,'resultToHumanReadableBasic(const decode_results *const results): IRutils.cpp']]], - ['resulttorawarray_4378',['resultToRawArray',['../IRutils_8cpp.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp'],['../IRutils_8h.html#a7b3bbfa1f2bf2dea2fc40a2fefe05a2a',1,'resultToRawArray(const decode_results *const decode): IRutils.cpp']]], - ['resulttosourcecode_4379',['resultToSourceCode',['../IRutils_8cpp.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#a10fc00c8b399dddb67a228325e6e2f79',1,'resultToSourceCode(const decode_results *const results): IRutils.cpp']]], - ['resulttotiminginfo_4380',['resultToTimingInfo',['../IRutils_8cpp.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#afbfdef125ff077431f3abc27a1eeb800',1,'resultToTimingInfo(const decode_results *const results): IRutils.cpp']]], - ['resume_4381',['resume',['../classIRrecv.html#a6b5beb7348d807d8d98ae929d005510e',1,'IRrecv']]], - ['reversebits_4382',['reverseBits',['../IRutils_8cpp.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a366219b6f1c46f41c6573b3e5e875e41',1,'reverseBits(uint64_t input, uint16_t nbits): IRutils.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.html deleted file mode 100644 index 1cde7b49e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.js deleted file mode 100644 index 485607472..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_11.js +++ /dev/null @@ -1,251 +0,0 @@ -var searchData= -[ - ['samsung_4383',['samsung',['../classIRac.html#a619c659a11c258ea9623eaa37689ba4c',1,'IRac']]], - ['sanyo_4384',['sanyo',['../classIRac.html#a9b0e12748dc25a1d224993b2a013e822',1,'IRac']]], - ['send_4385',['send',['../classIRAirwellAc.html#a503a7879c5739041bb97ad80128287ba',1,'IRAirwellAc::send()'],['../classIRAmcorAc.html#a4fa894c01a8baabfeadb39634a850fd9',1,'IRAmcorAc::send()'],['../classIRArgoAC.html#a0e4793a4f6fc537ec1450f5a42206dae',1,'IRArgoAC::send()'],['../classIRCarrierAc64.html#aace8aa2d125c6e80bcdd6d96eac722c2',1,'IRCarrierAc64::send()'],['../classIRCoolixAC.html#aaaa681d6cfcf04d110b913e8bb27a53c',1,'IRCoolixAC::send()'],['../classIRCoronaAc.html#aa0c8a1ef4473a3c7d02e1a04c7678fa6',1,'IRCoronaAc::send()'],['../classIRDaikinESP.html#a9f0d2641b54e97da943fceb0ba3f67eb',1,'IRDaikinESP::send()'],['../classIRDaikin2.html#aae2db88038d8d02617f16588e6a82b64',1,'IRDaikin2::send()'],['../classIRDaikin216.html#ab1061620f838cf7774c16c593b4ada8c',1,'IRDaikin216::send()'],['../classIRDaikin160.html#a0e1c74070c03be02e40fdd05ed56465c',1,'IRDaikin160::send()'],['../classIRDaikin176.html#affd71592fa8ed05816d94edbf94d2c0a',1,'IRDaikin176::send()'],['../classIRDaikin128.html#aae7fec91ad2265e8b0378c6b99379e89',1,'IRDaikin128::send()'],['../classIRDaikin152.html#a205de6821effc077f51d941d369791e4',1,'IRDaikin152::send()'],['../classIRDaikin64.html#a904eec38045d9ddc8a97ab33c8a2ac4d',1,'IRDaikin64::send()'],['../classIRDelonghiAc.html#afba831b6884771b84bab684732e0f4f5',1,'IRDelonghiAc::send()'],['../classIREcoclimAc.html#a8f254f318d13695ce9e4096ed5693769',1,'IREcoclimAc::send()'],['../classIRElectraAc.html#a30170a65de1161e26daeddf694f8afdb',1,'IRElectraAc::send()'],['../classIRFujitsuAC.html#a1f1aa593cc4503d14c0fbea5cd9823a1',1,'IRFujitsuAC::send()'],['../classIRGoodweatherAc.html#abcc3c9d9b0912b09d3c0b0c1affb8cc8',1,'IRGoodweatherAc::send()'],['../classIRGreeAC.html#a9823578040c2d15e2b3e8e3a17a9e220',1,'IRGreeAC::send()'],['../classIRHaierAC.html#a9fe53d04965efca6daf234f20d20eb5a',1,'IRHaierAC::send()'],['../classIRHaierACYRW02.html#a65a5d5840dddac505b009e899a0dada7',1,'IRHaierACYRW02::send()'],['../classIRHitachiAc.html#afc53e562370bbaba8b5dda26a62de427',1,'IRHitachiAc::send()'],['../classIRHitachiAc1.html#aafad51c226066b8697cf00661ef38d99',1,'IRHitachiAc1::send()'],['../classIRHitachiAc424.html#adf15121bb329e1bb061f9e5efb848764',1,'IRHitachiAc424::send()'],['../classIRHitachiAc3.html#ab95fd527a4841c44d6e91c8b4afee8b4',1,'IRHitachiAc3::send()'],['../classIRHitachiAc344.html#ab11947f9c2a7272d35d75ce3ddbe6581',1,'IRHitachiAc344::send()'],['../classIRKelonAc.html#af534911523b5372e25327bf85a5b3b66',1,'IRKelonAc::send()'],['../classIRKelvinatorAC.html#aa55fbfefbaca1acf5bc9ba796bea8464',1,'IRKelvinatorAC::send()'],['../classIRLgAc.html#aea85c840161b48f2e8d31e7e6e7da532',1,'IRLgAc::send()'],['../classIRMideaAC.html#af66b9f76ad794450a0a7eace4bb59300',1,'IRMideaAC::send()'],['../classIRMitsubishiAC.html#a2467ad33d88af8f6244e7cd0620e012e',1,'IRMitsubishiAC::send()'],['../classIRMitsubishi136.html#a41295e551acf428e76b9b404af2381ad',1,'IRMitsubishi136::send()'],['../classIRMitsubishi112.html#a8f813da813b1a281654147ada2e63eba',1,'IRMitsubishi112::send()'],['../classIRMitsubishiHeavy152Ac.html#acc53c5c136c6987c420d48bddcf9b2da',1,'IRMitsubishiHeavy152Ac::send()'],['../classIRMitsubishiHeavy88Ac.html#a707cb3ec3e3c18bedeb12205580d5048',1,'IRMitsubishiHeavy88Ac::send()'],['../classIRNeoclimaAc.html#a2220bbb1d928b8f6490cd43b702ef430',1,'IRNeoclimaAc::send()'],['../classIRPanasonicAc.html#a778420ebe52aa6422ba5633ce91676df',1,'IRPanasonicAc::send()'],['../classIRPanasonicAc32.html#aae5867f05744ebcac4720b31b6fc9021',1,'IRPanasonicAc32::send()'],['../classIRSamsungAc.html#a8128429fcb1828a049784d832cafc9fe',1,'IRSamsungAc::send()'],['../classIRSanyoAc.html#aa8be9e2e0c63646ce39425c9e58e4ca1',1,'IRSanyoAc::send()'],['../classIRSharpAc.html#a829872744bf9fef51dccd89584ddffe6',1,'IRSharpAc::send()'],['../classIRTcl112Ac.html#a9aa8c67e167a3d241157306d0668ff15',1,'IRTcl112Ac::send()'],['../classIRTechnibelAc.html#ad3a94fdd7b718d8d4ba3ffdb84cf0ebb',1,'IRTechnibelAc::send()'],['../classIRTecoAc.html#ad5785e93e8c0c95a8618b0e371adaa79',1,'IRTecoAc::send()'],['../classIRToshibaAC.html#a14b155d3a20fb9c127eb7f3fe1fd16cd',1,'IRToshibaAC::send()'],['../classIRTranscoldAc.html#ad9807a5c56b9797e4d9ef2fe4b95d3bf',1,'IRTranscoldAc::send()'],['../classIRTrotecESP.html#add228d50195d7b9b43346a90bf959512',1,'IRTrotecESP::send()'],['../classIRTrumaAc.html#ac429be41669c7ea395a4f57b99f90642',1,'IRTrumaAc::send()'],['../classIRVestelAc.html#a606497754b381e70d13ddef5643c9d0b',1,'IRVestelAc::send()'],['../classIRVoltas.html#ab06af0578b5137c53af6e641bfcbee9a',1,'IRVoltas::send()'],['../classIRWhirlpoolAc.html#a0c043b3d7cc993940941351e6c63b5cc',1,'IRWhirlpoolAc::send()'],['../classIRsend.html#a204eedc3ad182fb2f40c42ef58f78cfc',1,'IRsend::send(const decode_type_t type, const uint64_t data, const uint16_t nbits, const uint16_t repeat=kNoRepeat)'],['../classIRsend.html#ac684c209ea8722f0a377070752df0040',1,'IRsend::send(const decode_type_t type, const uint8_t *state, const uint16_t nbytes)']]], - ['sendac_4386',['sendAc',['../classIRac.html#a0cea80b7bab92c9dc4f18c61f5762130',1,'IRac::sendAc(void)'],['../classIRac.html#aa33c42968acafc5cf479574483f94ea9',1,'IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)'],['../classIRac.html#ad60fbe1488efe2d02307d81b090b3b72',1,'IRac::sendAc(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=-1, const int16_t clock=-1)']]], - ['sendairwell_4387',['sendAirwell',['../classIRsend.html#a5b180d3845b45af38a19b72e6fa8e0c0',1,'IRsend']]], - ['sendaiwarct501_4388',['sendAiwaRCT501',['../classIRsend.html#ad39a4b13ad2e8500c95db49265e7c771',1,'IRsend']]], - ['sendamcor_4389',['sendAmcor',['../classIRsend.html#acd64b100eb155f90451d467188a83e92',1,'IRsend']]], - ['sendargo_4390',['sendArgo',['../classIRsend.html#a59668b767e4ad4966fe0bc259c3bd34f',1,'IRsend']]], - ['sendcarrierac_4391',['sendCarrierAC',['../classIRsend.html#a9e859a8b5eaea2e64978c8f93b78d159',1,'IRsend']]], - ['sendcarrierac40_4392',['sendCarrierAC40',['../classIRsend.html#a4342b775777d2ff9371f48aa39ad9b69',1,'IRsend']]], - ['sendcarrierac64_4393',['sendCarrierAC64',['../classIRsend.html#abf755688d87fcef5aee86c6a2c89e7c4',1,'IRsend']]], - ['sendcoolix_4394',['sendCOOLIX',['../classIRsend.html#a088af5f0d76965c61fe5716f7b8f2b61',1,'IRsend']]], - ['sendcoronaac_4395',['sendCoronaAc',['../classIRsend.html#a81f82b8248b324799a48a7685d62aaa5',1,'IRsend']]], - ['senddaikin_4396',['sendDaikin',['../classIRsend.html#a3010546144b5ca3b3c94f5881050dbd0',1,'IRsend']]], - ['senddaikin128_4397',['sendDaikin128',['../classIRsend.html#a72a41a704d48750c144c6467ae9a1430',1,'IRsend']]], - ['senddaikin152_4398',['sendDaikin152',['../classIRsend.html#a4ad420eb86e0ae38b12e983f7eaa912c',1,'IRsend']]], - ['senddaikin160_4399',['sendDaikin160',['../classIRsend.html#ab144a86def38f9f5c98701742683c004',1,'IRsend']]], - ['senddaikin176_4400',['sendDaikin176',['../classIRsend.html#ac4b5bcb95d3aff70b2f84074177e9e92',1,'IRsend']]], - ['senddaikin2_4401',['sendDaikin2',['../classIRsend.html#a34262e579cbb6634459bc09c5b15dfa0',1,'IRsend']]], - ['senddaikin216_4402',['sendDaikin216',['../classIRsend.html#aa99bfdaa71ff5bf088faaa17d304f45d',1,'IRsend']]], - ['senddaikin64_4403',['sendDaikin64',['../classIRsend.html#aa403d2192a6eb57910e6f84695475b27',1,'IRsend']]], - ['senddata_4404',['sendData',['../classIRsend.html#a4f8cd77dab7ce6c406029fe87674858f',1,'IRsend']]], - ['senddelonghiac_4405',['sendDelonghiAc',['../classIRsend.html#a35dc18f9abbffa8da40816a8a9df1093',1,'IRsend']]], - ['senddenon_4406',['sendDenon',['../classIRsend.html#a2618e000bf91cf1585329308a078653a',1,'IRsend']]], - ['senddish_4407',['sendDISH',['../classIRsend.html#ac7a72d61af219d983409911bdc1769b8',1,'IRsend']]], - ['senddoshisha_4408',['sendDoshisha',['../classIRsend.html#a3a9a8247e470975137b37f474bb97639',1,'IRsend']]], - ['sendecoclim_4409',['sendEcoclim',['../classIRsend.html#a63f0d3f7ed8433c7dd18114d50e5d076',1,'IRsend']]], - ['sendelectraac_4410',['sendElectraAC',['../classIRsend.html#a52526c4e7bc4402e57ecf81e0047d49c',1,'IRsend']]], - ['sendelitescreens_4411',['sendElitescreens',['../classIRsend.html#a37c6fac0e447fd9e4d3dc3ca23f8936f',1,'IRsend']]], - ['sendepson_4412',['sendEpson',['../classIRsend.html#a063168fd82f6a88cca7253b42b9c0b28',1,'IRsend']]], - ['sendextended_4413',['sendExtended',['../classIRSamsungAc.html#a16a8dbd8f3fd34a6e681125b276acfd9',1,'IRSamsungAc']]], - ['sendfujitsuac_4414',['sendFujitsuAC',['../classIRsend.html#a1a3d3f83d0b7a59ff5510b038f658eb6',1,'IRsend']]], - ['sendgc_4415',['sendGC',['../classIRsend.html#acf987a501326d9c945cd8dbeb0806e17',1,'IRsend']]], - ['sendgeneric_4416',['sendGeneric',['../classIRsend.html#a5215fd797dfd490816f31bb99b38c273',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#aaace48306af9c020c18848db1a05e641',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint32_t mesgtime, const uint64_t data, const uint16_t nbits, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)'],['../classIRsend.html#a4f5ad649827692b4b42d15b45c7f684b',1,'IRsend::sendGeneric(const uint16_t headermark, const uint32_t headerspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t gap, const uint8_t *dataptr, const uint16_t nbytes, const uint16_t frequency, const bool MSBfirst, const uint16_t repeat, const uint8_t dutycycle)']]], - ['sendgicable_4417',['sendGICable',['../classIRsend.html#a61dd16bc150473bbfd998dada72b205f',1,'IRsend']]], - ['sendgoodweather_4418',['sendGoodweather',['../classIRsend.html#a8e2d98ae5c39ee07a61f08facecbaa1e',1,'IRsend']]], - ['sendgree_4419',['sendGree',['../classIRsend.html#aca81ea348ceb6b0c9e62073b57bc0b17',1,'IRsend::sendGree(const uint64_t data, const uint16_t nbits=kGreeBits, const uint16_t repeat=kGreeDefaultRepeat)'],['../classIRsend.html#af788e7d9a2ad2483313434f9b5196753',1,'IRsend::sendGree(const uint8_t data[], const uint16_t nbytes=kGreeStateLength, const uint16_t repeat=kGreeDefaultRepeat)']]], - ['sendhaierac_4420',['sendHaierAC',['../classIRsend.html#a6b4b9144d56dda302f5b321f1c5017ff',1,'IRsend']]], - ['sendhaierac176_4421',['sendHaierAC176',['../classIRsend.html#abe87b116301328fb68aee1f54fc9ebe4',1,'IRsend']]], - ['sendhaieracyrw02_4422',['sendHaierACYRW02',['../classIRsend.html#a6aa1c1a6880872c87a46e4e0ead5d9b0',1,'IRsend']]], - ['sendhitachiac_4423',['sendHitachiAC',['../classIRsend.html#a8e6079b8b1b69ad7d7f8d05c492becbe',1,'IRsend']]], - ['sendhitachiac1_4424',['sendHitachiAC1',['../classIRsend.html#a5be9a87ce052e4f056766919247e0b22',1,'IRsend']]], - ['sendhitachiac2_4425',['sendHitachiAC2',['../classIRsend.html#a451b1913608a4ba8c26d9af8c85d16f1',1,'IRsend']]], - ['sendhitachiac3_4426',['sendHitachiAc3',['../classIRsend.html#aec7e67f4292622521b5a0a8cfdd21d84',1,'IRsend']]], - ['sendhitachiac344_4427',['sendHitachiAc344',['../classIRsend.html#a5fb28d54f2832651d992450673d05c01',1,'IRsend']]], - ['sendhitachiac424_4428',['sendHitachiAc424',['../classIRsend.html#a2a9676de30bb868b313cc9c30025f790',1,'IRsend']]], - ['sendinax_4429',['sendInax',['../classIRsend.html#a5fa5ff62276d9d680fb1255cc8b99eec',1,'IRsend']]], - ['sendjvc_4430',['sendJVC',['../classIRsend.html#aaa10c899768a5b4cdb1a7913d06141ca',1,'IRsend']]], - ['sendkelon_4431',['sendKelon',['../classIRsend.html#ab0b4816ad227a541d27042d76c451b73',1,'IRsend']]], - ['sendkelvinator_4432',['sendKelvinator',['../classIRsend.html#a8cba9df982fc91f895196d61d2e65b0e',1,'IRsend']]], - ['sendlasertag_4433',['sendLasertag',['../classIRsend.html#a55a79f9727590044751f291a4df83892',1,'IRsend']]], - ['sendlegopf_4434',['sendLegoPf',['../classIRsend.html#a4e38273aeacf01873a013c02d41a44e4',1,'IRsend']]], - ['sendlg_4435',['sendLG',['../classIRsend.html#a079a84c82f360d6d55fde5c27634f51c',1,'IRsend']]], - ['sendlg2_4436',['sendLG2',['../classIRsend.html#a5b6be1ceac8a4bc4ef55dc12eb060531',1,'IRsend']]], - ['sendlutron_4437',['sendLutron',['../classIRsend.html#a85f2a98255d3af7b7407c082ea7b7c16',1,'IRsend']]], - ['sendmagiquest_4438',['sendMagiQuest',['../classIRsend.html#af1d0e9ec0f735fc5fb9011d4f4cb8327',1,'IRsend']]], - ['sendmanchester_4439',['sendManchester',['../classIRsend.html#a7862231cbb1d50f42996c25e2f05b93e',1,'IRsend']]], - ['sendmanchesterdata_4440',['sendManchesterData',['../classIRsend.html#aa76aa33785827c1278eb57d1c15236f8',1,'IRsend']]], - ['sendmetz_4441',['sendMetz',['../classIRsend.html#ab98023283eca787f7bb8bcb47f79ed01',1,'IRsend']]], - ['sendmidea_4442',['sendMidea',['../classIRsend.html#a37d91b3a77b36509abdc53e2fec20a67',1,'IRsend']]], - ['sendmidea24_4443',['sendMidea24',['../classIRsend.html#a103d79e8df7954e9ab6284fa9f3daf02',1,'IRsend']]], - ['sendmilestag2_4444',['sendMilestag2',['../classIRsend.html#a1a506824c7668e58f35351ad400051b1',1,'IRsend']]], - ['sendmirage_4445',['sendMirage',['../classIRsend.html#a03427bab21dd5a04121c652103c2ef97',1,'IRsend']]], - ['sendmitsubishi_4446',['sendMitsubishi',['../classIRsend.html#a59e8941a25c5c0bbc839fba5b1a22813',1,'IRsend']]], - ['sendmitsubishi112_4447',['sendMitsubishi112',['../classIRsend.html#a0a55e688c6aad015494168f25eb337b5',1,'IRsend']]], - ['sendmitsubishi136_4448',['sendMitsubishi136',['../classIRsend.html#a988a8b7dda3563977d537d6ac448ebc8',1,'IRsend']]], - ['sendmitsubishi2_4449',['sendMitsubishi2',['../classIRsend.html#ac54e50a6819f5c39e060891f1f6ea0f2',1,'IRsend']]], - ['sendmitsubishiac_4450',['sendMitsubishiAC',['../classIRsend.html#a3600527a82f9f22387c9f16ae51fb06f',1,'IRsend']]], - ['sendmitsubishiheavy152_4451',['sendMitsubishiHeavy152',['../classIRsend.html#ae1cffc4882c63f192c231397d19a4032',1,'IRsend']]], - ['sendmitsubishiheavy88_4452',['sendMitsubishiHeavy88',['../classIRsend.html#afaf4fd0c3dabd1bd6f8fe421294c5063',1,'IRsend']]], - ['sendmultibrackets_4453',['sendMultibrackets',['../classIRsend.html#a9026d42480b85270e560e122b8be3b6c',1,'IRsend']]], - ['sendmwm_4454',['sendMWM',['../classIRsend.html#a98301801daf929ec8ce022987ae394f2',1,'IRsend']]], - ['sendnec_4455',['sendNEC',['../classIRsend.html#a324c9e455c0bae51ebe9bc07e915c043',1,'IRsend']]], - ['sendneoclima_4456',['sendNeoclima',['../classIRsend.html#a71e1b5e780851210465bbf061b9c095b',1,'IRsend']]], - ['sendnikai_4457',['sendNikai',['../classIRsend.html#a693e6616b81509cf27d1345c140acc96',1,'IRsend']]], - ['sendoff_4458',['sendOff',['../classIRSamsungAc.html#a96e2ae87f3ffcf1ad812f256f31e4898',1,'IRSamsungAc']]], - ['sendon_4459',['sendOn',['../classIRSamsungAc.html#a7e6980c829dfd143d4d19abaf5d65678',1,'IRSamsungAc']]], - ['sendpanasonic_4460',['sendPanasonic',['../classIRsend.html#a92192475f89b19cfdf7fd0416a263145',1,'IRsend']]], - ['sendpanasonic64_4461',['sendPanasonic64',['../classIRsend.html#adc4fd287f3546f7ff0b67e177a42b560',1,'IRsend']]], - ['sendpanasonicac_4462',['sendPanasonicAC',['../classIRsend.html#a10a3c387a328dbb11733a251f4db7614',1,'IRsend']]], - ['sendpanasonicac32_4463',['sendPanasonicAC32',['../classIRsend.html#af281c7e8e09bb547bf7236dfd8b42154',1,'IRsend']]], - ['sendpioneer_4464',['sendPioneer',['../classIRsend.html#a11f099f3768a659d1f996589cea8a313',1,'IRsend']]], - ['sendpronto_4465',['sendPronto',['../classIRsend.html#a0b349351e2ba19f87e6b01cde7e67c49',1,'IRsend']]], - ['sendraw_4466',['sendRaw',['../classIRsend.html#a2b9b84f828918f933bd1764d113b53f8',1,'IRsend']]], - ['sendrc5_4467',['sendRC5',['../classIRsend.html#a2bd2ccb27ecd57e14b36f76d82af308a',1,'IRsend']]], - ['sendrc6_4468',['sendRC6',['../classIRsend.html#a2192a95e0d162f9b1775fc2a47f65c37',1,'IRsend']]], - ['sendrcmm_4469',['sendRCMM',['../classIRsend.html#a3cafe475a58234a0d3aa655a2464be75',1,'IRsend']]], - ['sendsamsung_4470',['sendSAMSUNG',['../classIRsend.html#a5252dd159aad713c099de6728ac56d81',1,'IRsend']]], - ['sendsamsung36_4471',['sendSamsung36',['../classIRsend.html#ab5dcd4ec5ddb0b0351870ddf54e5ba66',1,'IRsend']]], - ['sendsamsungac_4472',['sendSamsungAC',['../classIRsend.html#a2773d251da1d35b964810c8cc4cb438b',1,'IRsend']]], - ['sendsanyoac_4473',['sendSanyoAc',['../classIRsend.html#ab606c11f7bdc726289ba4dadf8bd9da6',1,'IRsend']]], - ['sendsanyolc7461_4474',['sendSanyoLC7461',['../classIRsend.html#aa23e51a97a0ec1907d22623fed6dd223',1,'IRsend']]], - ['sendsharp_4475',['sendSharp',['../classIRsend.html#a801ae78ac5a72116c566c4ac5f99c6bd',1,'IRsend']]], - ['sendsharpac_4476',['sendSharpAc',['../classIRsend.html#a438e4c9d50e62da7d772d8d638728213',1,'IRsend']]], - ['sendsharpraw_4477',['sendSharpRaw',['../classIRsend.html#aa1f12fd537ca8c21c183ee41d17a3afc',1,'IRsend']]], - ['sendsherwood_4478',['sendSherwood',['../classIRsend.html#afb3a89acfb868c92a997a3000e70c6e8',1,'IRsend']]], - ['sendsony_4479',['sendSony',['../classIRsend.html#a02bb64503474a0841c51664cf4668d85',1,'IRsend']]], - ['sendsony38_4480',['sendSony38',['../classIRsend.html#a558442f49b32453f0fb987c29e1ec6d3',1,'IRsend']]], - ['sendsymphony_4481',['sendSymphony',['../classIRsend.html#a1f1d5a30660ab0061f64d559d4916d4e',1,'IRsend']]], - ['sendtcl112ac_4482',['sendTcl112Ac',['../classIRsend.html#a2dedce2841e4a6445a98f03393fce823',1,'IRsend']]], - ['sendtechnibelac_4483',['sendTechnibelAc',['../classIRsend.html#afcc65332acb4b5a1edc623194cc2ac7e',1,'IRsend']]], - ['sendteco_4484',['sendTeco',['../classIRsend.html#ac6300f977fe94119813481ba682ce33f',1,'IRsend']]], - ['sendteknopoint_4485',['sendTeknopoint',['../classIRsend.html#a23729c22c85385528fdba5a2ec5625a8',1,'IRsend']]], - ['sendtoshibaac_4486',['sendToshibaAC',['../classIRsend.html#a5554dd976b56148e214dca9891d2810c',1,'IRsend']]], - ['sendtranscold_4487',['sendTranscold',['../classIRsend.html#aba4e3420174de6b5538ae91f20d19e21',1,'IRsend']]], - ['sendtrotec_4488',['sendTrotec',['../classIRsend.html#a135796327b5db127473f4d198e663c00',1,'IRsend']]], - ['sendtruma_4489',['sendTruma',['../classIRsend.html#addb8dc185e7d96d3186dad362a6e1445',1,'IRsend']]], - ['sendvestelac_4490',['sendVestelAc',['../classIRsend.html#a129a40f9d344cb0fadfd4cca53ca6b44',1,'IRsend']]], - ['sendvoltas_4491',['sendVoltas',['../classIRsend.html#a3bda5e5e44d2c0e811e9fe3d42b241bf',1,'IRsend']]], - ['sendwhirlpoolac_4492',['sendWhirlpoolAC',['../classIRsend.html#aa440a50000a259072f93ad6c0e42ec22',1,'IRsend']]], - ['sendwhynter_4493',['sendWhynter',['../classIRsend.html#a07188366deed3dd902cba80a711cf220',1,'IRsend']]], - ['sendxmp_4494',['sendXmp',['../classIRsend.html#a79e650dedb19f37601600c8cb16e4c8e',1,'IRsend']]], - ['sendzepeal_4495',['sendZepeal',['../classIRsend.html#a9bcba8bbac41d679b5b930e67d3e1b7f',1,'IRsend']]], - ['serialprintuint64_4496',['serialPrintUint64',['../IRutils_8cpp.html#ad2b0a4b9a1a7fca3d5f5afc14b682433',1,'serialPrintUint64(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a315d5f05fb572564025bc9ce9b820243',1,'serialPrintUint64(uint64_t input, uint8_t base=10): IRutils.cpp']]], - ['set10cheat_4497',['set10CHeat',['../classIRFujitsuAC.html#a0352fca45ddb7b05277cd3fd66b5a6ca',1,'IRFujitsuAC']]], - ['set3d_4498',['set3D',['../classIRMitsubishiHeavy152Ac.html#ab22654d492a4b0e82efcd0c96fc9bbe3',1,'IRMitsubishiHeavy152Ac::set3D()'],['../classIRMitsubishiHeavy88Ac.html#ae0b7eac743a8de6852722f067e010ba7',1,'IRMitsubishiHeavy88Ac::set3D()']]], - ['set8cheat_4499',['set8CHeat',['../classIRNeoclimaAc.html#a3176c5fe3251bd6a31a3a0ddc2c294be',1,'IRNeoclimaAc']]], - ['setauto_4500',['setAuto',['../classIRVestelAc.html#a2509eed2e0d7b23595bbe6dd7df17d74',1,'IRVestelAc']]], - ['setbeep_4501',['setBeep',['../classIRDaikin2.html#a4c0588887a45403a0a9f2cf95f847889',1,'IRDaikin2::setBeep()'],['../classIRSamsungAc.html#a092ccbea031dd4be747076530117649d',1,'IRSamsungAc::setBeep()'],['../classIRSanyoAc.html#a420e2cc1f1d2590e7582f3f3a3b5c536',1,'IRSanyoAc::setBeep()']]], - ['setbit_4502',['setBit',['../namespaceirutils.html#a316301577d2ff338bfba6605df2cc46b',1,'irutils::setBit(const uint64_t data, const uint8_t position, const bool on, const uint8_t size)'],['../namespaceirutils.html#a2e9e858b490fa3328b4c5bd01adedb8c',1,'irutils::setBit(const uint8_t data, const uint8_t position, const bool on)'],['../namespaceirutils.html#ac1b3de6e733d9c4d614a8239f5bd3220',1,'irutils::setBit(uint8_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a86bbcf05c1601712b1d587b87035f09b',1,'irutils::setBit(uint32_t *const data, const uint8_t position, const bool on)'],['../namespaceirutils.html#a9e7814e2274f02df0dac0106c293c487',1,'irutils::setBit(uint64_t *const data, const uint8_t position, const bool on)']]], - ['setbits_4503',['setBits',['../namespaceirutils.html#ab4f5e3eb26e111909ddc93a8b018ba78',1,'irutils::setBits(uint8_t *const dst, const uint8_t offset, const uint8_t nbits, const uint8_t data)'],['../namespaceirutils.html#a3fd8b18a76f0ae8f730b4de55fc9486e',1,'irutils::setBits(uint32_t *const dst, const uint8_t offset, const uint8_t nbits, const uint32_t data)'],['../namespaceirutils.html#a4dfb0984a9ea38602805987a7845839c',1,'irutils::setBits(uint64_t *const dst, const uint8_t offset, const uint8_t nbits, const uint64_t data)']]], - ['setboost_4504',['setBoost',['../classIRDelonghiAc.html#a827d1e43e9252657147226aa3f8e4eb8',1,'IRDelonghiAc']]], - ['setbreeze_4505',['setBreeze',['../classIRSamsungAc.html#a310a73f15a0274fbaf15b981abaae592',1,'IRSamsungAc']]], - ['setbutton_4506',['setButton',['../classIRHaierACYRW02.html#aa0f1561e2446f6231f722581f5bae34d',1,'IRHaierACYRW02::setButton()'],['../classIRHitachiAc424.html#af4ded7ea8aa94271d5135eebd3bb80a8',1,'IRHitachiAc424::setButton()'],['../classIRNeoclimaAc.html#a7e2e6e646411b4f5ea3c1ce1e944581c',1,'IRNeoclimaAc::setButton()']]], - ['setcelsius_4507',['setCelsius',['../classIRFujitsuAC.html#a29050c9b6174ac038d85ef8983fe8940',1,'IRFujitsuAC']]], - ['setclean_4508',['setClean',['../classIRCoolixAC.html#a4ca2c23f44ae56d80dcb7a7424ec17b3',1,'IRCoolixAC::setClean()'],['../classIRDaikin2.html#a21e09b867710a225d5cf53006f723326',1,'IRDaikin2::setClean()'],['../classIRElectraAc.html#a4aa44fc40196067469dfa8a722e33115',1,'IRElectraAc::setClean()'],['../classIRFujitsuAC.html#a7f6f18ea39bf28717cb65ff348b1b2f5',1,'IRFujitsuAC::setClean()'],['../classIRMitsubishiHeavy152Ac.html#a11678e7eb906414770938f6efce266f1',1,'IRMitsubishiHeavy152Ac::setClean()'],['../classIRMitsubishiHeavy88Ac.html#a65968304e4aaf025dfefc49d5d777cbd',1,'IRMitsubishiHeavy88Ac::setClean()'],['../classIRSamsungAc.html#a911ca57dfb0e6787cba330e8d49b2496',1,'IRSamsungAc::setClean()'],['../classIRSharpAc.html#ace6e7b98496a594031809fe8a535c429',1,'IRSharpAc::setClean()']]], - ['setclock_4509',['setClock',['../classIRDaikin128.html#aa9928ac010ec79ddab4f551eedf2f5d9',1,'IRDaikin128::setClock()'],['../classIRDaikin64.html#a655f1cec5e28f79e5718573678c535ec',1,'IRDaikin64::setClock()'],['../classIREcoclimAc.html#af81295d2878131c0302902b9a1f80db2',1,'IREcoclimAc::setClock()'],['../classIRMitsubishiAC.html#a7abe34adf36bdd1a65a17f56ee8af1f6',1,'IRMitsubishiAC::setClock()'],['../classIRPanasonicAc.html#a3f76c6aca94f52c227c2e259512fd101',1,'IRPanasonicAc::setClock()'],['../classIRWhirlpoolAc.html#aab09aae7de733414bf480c3df22b83f8',1,'IRWhirlpoolAc::setClock()']]], - ['setcmd_4510',['setCmd',['../classIRFujitsuAC.html#a7579944c11b3d31bb069303926307617',1,'IRFujitsuAC']]], - ['setcomfort_4511',['setComfort',['../classIRDaikinESP.html#aaa15c0be7ffb8e845a03d193583a58d1',1,'IRDaikinESP::setComfort()'],['../classIRDaikin152.html#a95de2dc0a90fe4212cb60973b9430486',1,'IRDaikin152::setComfort()']]], - ['setcommand_4512',['setCommand',['../classIRGoodweatherAc.html#a4e266f42b7a82c49208e2acc7813e07b',1,'IRGoodweatherAc::setCommand()'],['../classIRHaierAC.html#ade34c951e72a794c2ff7fa0d1595d68f',1,'IRHaierAC::setCommand()'],['../classIRWhirlpoolAc.html#aaea26b1388489dff70a98fde1e6185be',1,'IRWhirlpoolAc::setCommand()']]], - ['setcurrentday_4513',['setCurrentDay',['../classIRDaikinESP.html#a5465b9857fd73b82362f766368717d16',1,'IRDaikinESP']]], - ['setcurrenttime_4514',['setCurrentTime',['../classIRDaikinESP.html#ae6559268982ae0968358a885c7dbba6e',1,'IRDaikinESP::setCurrentTime()'],['../classIRDaikin2.html#a8b32b1b9a87c9b671af6aeedb709d520',1,'IRDaikin2::setCurrentTime()']]], - ['setcurrtime_4515',['setCurrTime',['../classIRHaierAC.html#a53500ebdec058d27396e5906a572fe15',1,'IRHaierAC']]], - ['setdisplay_4516',['setDisplay',['../classIRSamsungAc.html#ad20199bed3a01208ec694b9d4eb7ef98',1,'IRSamsungAc']]], - ['setdisplaytempsource_4517',['setDisplayTempSource',['../classIRGreeAC.html#a1d073c31ea169d0e5cf33c8592982035',1,'IRGreeAC']]], - ['setdrygrade_4518',['setDryGrade',['../classIRKelonAc.html#aec38ea2d05bfece8314c5b7a45d19dbc',1,'IRKelonAc']]], - ['setecono_4519',['setEcono',['../classIRCoronaAc.html#abb5624317fff60674bed410be3a3fa52',1,'IRCoronaAc::setEcono()'],['../classIRDaikinESP.html#a12129aedd6320522a9b6e811e347089c',1,'IRDaikinESP::setEcono()'],['../classIRDaikin2.html#a42a44a6cefa6bf6f45148d39c216ebc0',1,'IRDaikin2::setEcono()'],['../classIRDaikin128.html#a07fb5289ee476e0335fec4845254b7ce',1,'IRDaikin128::setEcono()'],['../classIRDaikin152.html#a8062d16f7aefb7586e3d3bdfea8755b4',1,'IRDaikin152::setEcono()'],['../classIRMitsubishiHeavy152Ac.html#ab3964219ee3c0c5112bb38c892a01784',1,'IRMitsubishiHeavy152Ac::setEcono()'],['../classIRMitsubishiHeavy88Ac.html#a7612448f1cceaa6aeee1697f51adaf43',1,'IRMitsubishiHeavy88Ac::setEcono()'],['../classIRNeoclimaAc.html#af6748510814a39756263916913890844',1,'IRNeoclimaAc::setEcono()'],['../classIRTcl112Ac.html#a48ac7acfa8fed8e9da39907282f4f377',1,'IRTcl112Ac::setEcono()'],['../classIRToshibaAC.html#a780040755a8061107f655e060f2da206',1,'IRToshibaAC::setEcono()'],['../classIRVoltas.html#a0e9ebffcb4a62afc68722e8abf9f9adb',1,'IRVoltas::setEcono()']]], - ['seteconotoggle_4520',['setEconoToggle',['../classIRMideaAC.html#aef83db5c3d13273541039d9e03e3230e',1,'IRMideaAC::setEconoToggle()'],['../classIRSharpAc.html#ae3495676b8bffecba5c56fbf1ab9ee4d',1,'IRSharpAc::setEconoToggle()']]], - ['setenablesensortemp_4521',['setEnableSensorTemp',['../classIRMideaAC.html#a89eede8ecf61bc05a7c53e49706361a2',1,'IRMideaAC']]], - ['seteye_4522',['setEye',['../classIRDaikin2.html#a5ba8e5d5dd4aba45a90de1d450a7a88b',1,'IRDaikin2::setEye()'],['../classIRNeoclimaAc.html#aaf433cab785db382c55a420e68e7d7ec',1,'IRNeoclimaAc::setEye()']]], - ['seteyeauto_4523',['setEyeAuto',['../classIRDaikin2.html#a975c2fdb261d6d2b6c8e196fbd074899',1,'IRDaikin2']]], - ['setfan_4524',['setFan',['../classIRAirwellAc.html#a3b3acc1670d7057e7c36fc2bd0a71232',1,'IRAirwellAc::setFan()'],['../classIRAmcorAc.html#acf26fc65363e2734e4dc6eb562812553',1,'IRAmcorAc::setFan()'],['../classIRArgoAC.html#a8144f003628e128ec6630aef49ed5cb5',1,'IRArgoAC::setFan()'],['../classIRCarrierAc64.html#a312027468b508e9d38dd9e23ee99f9e4',1,'IRCarrierAc64::setFan()'],['../classIRCoolixAC.html#aff4189cb1000c6db7d88624fbadbe0cb',1,'IRCoolixAC::setFan()'],['../classIRCoronaAc.html#aa4da12502bf85438846bdde56391ee5c',1,'IRCoronaAc::setFan()'],['../classIRDaikinESP.html#a1f191f45e473482a86aad9a1c879e083',1,'IRDaikinESP::setFan()'],['../classIRDaikin2.html#af9f3ddbdd1f1d5d99c84846b73c5daa1',1,'IRDaikin2::setFan()'],['../classIRDaikin216.html#a8fadfb1e61deca74a2d1b9c1d5ae62e1',1,'IRDaikin216::setFan()'],['../classIRDaikin160.html#a7f507c64dc7a9fa1e9391e9e8473af1b',1,'IRDaikin160::setFan()'],['../classIRDaikin176.html#a050a9943dc7d8289472e6b9dbdcb06c1',1,'IRDaikin176::setFan()'],['../classIRDaikin128.html#a0495834250e97e7831e9906ab548fe44',1,'IRDaikin128::setFan()'],['../classIRDaikin152.html#a385a4f65dfccd0a9e94be06ae60c5343',1,'IRDaikin152::setFan()'],['../classIRDaikin64.html#af39206f90b99fd5ee340923b196368b8',1,'IRDaikin64::setFan()'],['../classIRDelonghiAc.html#a440f1e0efa18c6b1a8e18e0a97fbfb79',1,'IRDelonghiAc::setFan()'],['../classIREcoclimAc.html#a5760f762c04f950566b51b34bee2b013',1,'IREcoclimAc::setFan()'],['../classIRElectraAc.html#aa338ce18cafaf9c7b9aa3385e681bbe7',1,'IRElectraAc::setFan()'],['../classIRGoodweatherAc.html#af8cf9ba59af548677e586cd59e8a6cc2',1,'IRGoodweatherAc::setFan()'],['../classIRGreeAC.html#a9bb570e71df5002298505d49473e6bac',1,'IRGreeAC::setFan()'],['../classIRHaierAC.html#a42ee1c5889f07bf7615c8f853bca2261',1,'IRHaierAC::setFan()'],['../classIRHaierACYRW02.html#ae9c3a7bffc08d9d5204616823f709889',1,'IRHaierACYRW02::setFan()'],['../classIRHitachiAc.html#a0760b07502b976880ee8499dc6fa61ff',1,'IRHitachiAc::setFan()'],['../classIRHitachiAc1.html#a7294dc1324877d4a64f7b4373d97d745',1,'IRHitachiAc1::setFan()'],['../classIRHitachiAc424.html#afd69bcff56224f39af92fc2d334b67bb',1,'IRHitachiAc424::setFan()'],['../classIRKelonAc.html#a8ecc24641976085aed802e6e1c67ea9a',1,'IRKelonAc::setFan()'],['../classIRKelvinatorAC.html#af08e94be9699983c0087c9b059aad319',1,'IRKelvinatorAC::setFan()'],['../classIRLgAc.html#a0f1901a21ffb93641d3481417d74bb4e',1,'IRLgAc::setFan()'],['../classIRMideaAC.html#a546eeca4eea015899a5ad9f5d1c6fafb',1,'IRMideaAC::setFan()'],['../classIRMitsubishiAC.html#a4e88e50b2eddd0233aade5c1bf7819f1',1,'IRMitsubishiAC::setFan()'],['../classIRMitsubishi136.html#a2aa62126614f734ec3d1b7b3cb653e9e',1,'IRMitsubishi136::setFan()'],['../classIRMitsubishi112.html#ab681e78572c869a8c57079a660fe1505',1,'IRMitsubishi112::setFan()'],['../classIRMitsubishiHeavy152Ac.html#ac8d8eceba935aa626cb229d1c41081bb',1,'IRMitsubishiHeavy152Ac::setFan()'],['../classIRMitsubishiHeavy88Ac.html#a4f8c934a82091547c36da512329e76d7',1,'IRMitsubishiHeavy88Ac::setFan()'],['../classIRNeoclimaAc.html#a8db9d2d446e8614b2fc4583a454d7cee',1,'IRNeoclimaAc::setFan()'],['../classIRPanasonicAc.html#a8d77292226f55601c30ee53252ba83cd',1,'IRPanasonicAc::setFan()'],['../classIRPanasonicAc32.html#aaa15347ebf0eb6db7abb64553f3eb3d7',1,'IRPanasonicAc32::setFan()'],['../classIRSamsungAc.html#a6c7571e14fe6629348273a2b49a0a824',1,'IRSamsungAc::setFan()'],['../classIRSanyoAc.html#a400ec91300c0bfa5dd329dc0414d078b',1,'IRSanyoAc::setFan()'],['../classIRSharpAc.html#a5138068f8ba4c51939ff3bb14f0aae45',1,'IRSharpAc::setFan()'],['../classIRTcl112Ac.html#a0dab8ad6675c4ec122d0d7e28a557cba',1,'IRTcl112Ac::setFan()'],['../classIRTechnibelAc.html#a885f272cfa47004dfd8d19a6e251a337',1,'IRTechnibelAc::setFan()'],['../classIRTecoAc.html#afda9a33ca450568f968217bedc9ad7f2',1,'IRTecoAc::setFan()'],['../classIRToshibaAC.html#a020ba3e95c607f52ce091193fc5825fc',1,'IRToshibaAC::setFan()'],['../classIRTranscoldAc.html#a444593321998f04b4ef5e9c9ceb5b511',1,'IRTranscoldAc::setFan()'],['../classIRTrotecESP.html#a01b26cb6e671298f8a77a54dafdb27e3',1,'IRTrotecESP::setFan()'],['../classIRTrumaAc.html#a6e650fb764693da7ab1b863b43a667e1',1,'IRTrumaAc::setFan()'],['../classIRVestelAc.html#af53dfd0a0372c878b6ba2ca1cfc21ccd',1,'IRVestelAc::setFan()'],['../classIRVoltas.html#a013f93d588f57b8e62d059984fbf6173',1,'IRVoltas::setFan()'],['../classIRWhirlpoolAc.html#a8da28ee25fdc91d55a9f6ab5dab3af81',1,'IRWhirlpoolAc::setFan()']]], - ['setfanspeed_4525',['setFanSpeed',['../classIRFujitsuAC.html#af0fc10ec0a606434477cb41c60eb49e5',1,'IRFujitsuAC']]], - ['setfilter_4526',['setFilter',['../classIRFujitsuAC.html#aec0048efe87f60406c76ad6bc3ffbc61',1,'IRFujitsuAC::setFilter()'],['../classIRMitsubishiHeavy152Ac.html#aaf76ac48228d3a7b8490e684407e65b1',1,'IRMitsubishiHeavy152Ac::setFilter()']]], - ['setflap_4527',['setFlap',['../classIRArgoAC.html#a55a6402ffc3fe7fb59775050901416ca',1,'IRArgoAC']]], - ['setfresh_4528',['setFresh',['../classIRNeoclimaAc.html#a6354d8b902ffc1e7c044a61185504404',1,'IRNeoclimaAc']]], - ['setfreshair_4529',['setFreshAir',['../classIRDaikin2.html#a6e0596c7b9f9b43b8d241340ae08e886',1,'IRDaikin2']]], - ['setfreshairhigh_4530',['setFreshAirHigh',['../classIRDaikin2.html#a044471f2298a1942bcc2f859f9459924',1,'IRDaikin2']]], - ['sethealth_4531',['setHealth',['../classIRHaierAC.html#a48c9ae91809d63156eeb3889f2e908f4',1,'IRHaierAC::setHealth()'],['../classIRHaierACYRW02.html#a79673650a2285f029a35ab69edeb0e74',1,'IRHaierACYRW02::setHealth()'],['../classIRTcl112Ac.html#a28ed509977d8642174bc6c9aa97ae1c3',1,'IRTcl112Ac::setHealth()']]], - ['sethold_4532',['setHold',['../classIRNeoclimaAc.html#a2eb4e0a2ff39ceb1b6b571998d91b31e',1,'IRNeoclimaAc']]], - ['sethumid_4533',['setHumid',['../classIRTecoAc.html#a4ab07a7c95f34d3b292926c719aeb303',1,'IRTecoAc']]], - ['setid_4534',['setId',['../classIRFujitsuAC.html#a5f87182e0eea7bba7ed50b9942565c91',1,'IRFujitsuAC']]], - ['setifeel_4535',['setIFeel',['../classIRGreeAC.html#a68a670156a5e0a91a8a3cf9225263e0b',1,'IRGreeAC::setIFeel()'],['../classIRArgoAC.html#ae59f903855961441b676b7f662602554',1,'IRArgoAC::setiFeel()']]], - ['setinvertedstates_4536',['setInvertedStates',['../classIRHitachiAc424.html#ad18528cf83e863b98cb1609eec970ac5',1,'IRHitachiAc424::setInvertedStates()'],['../classIRHitachiAc3.html#af37c710449cd32df4753509749e31cad',1,'IRHitachiAc3::setInvertedStates()']]], - ['setion_4537',['setIon',['../classIRNeoclimaAc.html#a504fc5e371746fda8e7eb7cc0abf137a',1,'IRNeoclimaAc::setIon()'],['../classIRPanasonicAc.html#a5a1c4f5b9eb7a3a1a81a6acd0491c3cd',1,'IRPanasonicAc::setIon()'],['../classIRSamsungAc.html#aeee65ca6d2100635a517077f01053bed',1,'IRSamsungAc::setIon()'],['../classIRSharpAc.html#af6a390362bc5b40eecc6564b16b3379b',1,'IRSharpAc::setIon()'],['../classIRVestelAc.html#acf860da68a15d463dab437a808c9c8c6',1,'IRVestelAc::setIon()']]], - ['setionfilter_4538',['setIonFilter',['../classIRKelvinatorAC.html#a6a219c481ddc21d93028f5c799c25883',1,'IRKelvinatorAC']]], - ['setled_4539',['setLed',['../classIRCoolixAC.html#aee6c7fd3a065ff14425fc02cb2ed8354',1,'IRCoolixAC']]], - ['setlight_4540',['setLight',['../classIRDaikin2.html#a7ecadb3335e9b22729a89b4c41456242',1,'IRDaikin2::setLight()'],['../classIRGoodweatherAc.html#a3f149ff426b236ba9f90659a6daf4a9c',1,'IRGoodweatherAc::setLight()'],['../classIRGreeAC.html#a702bbba38e11bb8f3428ee707fc82311',1,'IRGreeAC::setLight()'],['../classIRKelvinatorAC.html#a870890c2bc8510f8f7351ca21db8d855',1,'IRKelvinatorAC::setLight()'],['../classIRNeoclimaAc.html#a1d7a6ec6d319544bee907a23a1d14084',1,'IRNeoclimaAc::setLight()'],['../classIRTcl112Ac.html#a7dec5b0559f996df8a4fc259ab6012e9',1,'IRTcl112Ac::setLight()'],['../classIRTecoAc.html#a25d97c1e7be31d80a4ffad0026e633d7',1,'IRTecoAc::setLight()'],['../classIRVoltas.html#aedd6ca44b32c6da83da997d7048a82f4',1,'IRVoltas::setLight()'],['../classIRWhirlpoolAc.html#a70b4c0467a7747f9cf9e106af1025771',1,'IRWhirlpoolAc::setLight()']]], - ['setlighttoggle_4541',['setLightToggle',['../classIRDaikin128.html#a6361c789141ccecb729c104e71ddcc41',1,'IRDaikin128::setLightToggle()'],['../classIRElectraAc.html#a15373982641e36f4b68258368700be7d',1,'IRElectraAc::setLightToggle()'],['../classIRMideaAC.html#a84daaa272cedd6f5e74b03a9f3962cba',1,'IRMideaAC::setLightToggle()'],['../classIRSharpAc.html#a7b3b5ef00b94366feb42cc1e4781ae57',1,'IRSharpAc::setLightToggle()']]], - ['setmax_4542',['setMax',['../classIRAmcorAc.html#a1250c6b106378286d9db013296c9b16f',1,'IRAmcorAc::setMax()'],['../classIRArgoAC.html#a909c1f74e9452d0e19fc3ffd28b1b81b',1,'IRArgoAC::setMax()']]], - ['setmode_4543',['setMode',['../classIRAirwellAc.html#a3cbc12fee37b9b2b19aa5455ace9d46e',1,'IRAirwellAc::setMode()'],['../classIRAmcorAc.html#afa9c2d080ed5c4c7bc64eb13a07eab68',1,'IRAmcorAc::setMode()'],['../classIRArgoAC.html#a8575f0ef967b09308ed6a453857e65c7',1,'IRArgoAC::setMode()'],['../classIRCarrierAc64.html#ae462eeec49ff91358f1b9921750ee36d',1,'IRCarrierAc64::setMode()'],['../classIRCoolixAC.html#a5c0094d32aca6a5323f4dc72a03f02e9',1,'IRCoolixAC::setMode()'],['../classIRCoronaAc.html#aedeeedd176c89e5b7b650a4311e712be',1,'IRCoronaAc::setMode()'],['../classIRDaikinESP.html#af0f463201c877d33fa8680053dda7551',1,'IRDaikinESP::setMode()'],['../classIRDaikin2.html#a24ef3b53f22fe3557ed2dbc98a5bc6d2',1,'IRDaikin2::setMode()'],['../classIRDaikin216.html#a1d0dfce75ac95df9125b2cfe7c955080',1,'IRDaikin216::setMode()'],['../classIRDaikin160.html#a48e6fff63fd8b894c649fb495a467faa',1,'IRDaikin160::setMode()'],['../classIRDaikin176.html#a7ce82479f5ae2721baae8119b711c112',1,'IRDaikin176::setMode()'],['../classIRDaikin128.html#a9693e9931449f39253ca9102ac5cbfe9',1,'IRDaikin128::setMode()'],['../classIRDaikin152.html#aad0a46c751b73792282d6614103f57d8',1,'IRDaikin152::setMode()'],['../classIRDaikin64.html#a04dff0d273457a7bc3f3e0e1af4f7cd9',1,'IRDaikin64::setMode()'],['../classIRDelonghiAc.html#a62392c26321f038a84d99d54039bcfae',1,'IRDelonghiAc::setMode()'],['../classIREcoclimAc.html#a0d240abafeed17a9e0d3dca9804e03d2',1,'IREcoclimAc::setMode()'],['../classIRElectraAc.html#a911b7410fd2f29464c1505e183c04c5d',1,'IRElectraAc::setMode()'],['../classIRFujitsuAC.html#ac125c320f9794aae931bc59ba332a4a8',1,'IRFujitsuAC::setMode()'],['../classIRGoodweatherAc.html#a8eed6b70b7b1c2e8a9620db7462e1fb5',1,'IRGoodweatherAc::setMode()'],['../classIRGreeAC.html#a9d9dbd416e3dc270fcfda620b3bb4fe2',1,'IRGreeAC::setMode()'],['../classIRHaierAC.html#a3ad0317f2fd4f57d8ce61353ab3e48c7',1,'IRHaierAC::setMode()'],['../classIRHaierACYRW02.html#ae762c5f5422b4af612fa00f7c26452ed',1,'IRHaierACYRW02::setMode()'],['../classIRHitachiAc.html#a208f73a42484a1555145b41849e8c51f',1,'IRHitachiAc::setMode()'],['../classIRHitachiAc1.html#a1f3ced601e1131b70f840820ecb3feaa',1,'IRHitachiAc1::setMode()'],['../classIRHitachiAc424.html#a373a51d207674e35e00762b057f73cd5',1,'IRHitachiAc424::setMode()'],['../classIRKelonAc.html#a0c7c47dabb377efe2079b16a14f4ca75',1,'IRKelonAc::setMode()'],['../classIRKelvinatorAC.html#af55cc77892bc960587037c337b90d1bc',1,'IRKelvinatorAC::setMode()'],['../classIRLgAc.html#a5e1b21d9121c6bf6507f615f470b5890',1,'IRLgAc::setMode()'],['../classIRMideaAC.html#a3b92f25a82741ae404e8f9af8dbca3a8',1,'IRMideaAC::setMode()'],['../classIRMitsubishiAC.html#a2b4e2f00ee5a385172b13e8d9858ac0b',1,'IRMitsubishiAC::setMode()'],['../classIRMitsubishi136.html#aaef2ed81bdeb183995e2342c2ca17a8b',1,'IRMitsubishi136::setMode()'],['../classIRMitsubishi112.html#a0c1434e1d8dd513007400042324e868e',1,'IRMitsubishi112::setMode()'],['../classIRMitsubishiHeavy152Ac.html#a5a68388f337d7ba80289359903a1d01d',1,'IRMitsubishiHeavy152Ac::setMode()'],['../classIRMitsubishiHeavy88Ac.html#a1802cc8a382d6161b83f8947137d941d',1,'IRMitsubishiHeavy88Ac::setMode()'],['../classIRNeoclimaAc.html#adabd715c4a2ec34dd88330b97a1f0ecd',1,'IRNeoclimaAc::setMode()'],['../classIRPanasonicAc.html#add025b64e736d5120abeb2564a2849a4',1,'IRPanasonicAc::setMode()'],['../classIRPanasonicAc32.html#a3bd5cef91112ddb0913685e64d3f60ae',1,'IRPanasonicAc32::setMode()'],['../classIRSamsungAc.html#a708d9c6c91d774d6eeadbc0bd7f350af',1,'IRSamsungAc::setMode()'],['../classIRSanyoAc.html#a47521969475393eafe94faeb51204132',1,'IRSanyoAc::setMode()'],['../classIRSharpAc.html#ab51c207de90391cb7190e3ec95adc16e',1,'IRSharpAc::setMode()'],['../classIRTcl112Ac.html#a1a050c9b238691ba6d4764beeb788778',1,'IRTcl112Ac::setMode()'],['../classIRTechnibelAc.html#a04917b3760ed658d88ad2dae976d7a64',1,'IRTechnibelAc::setMode()'],['../classIRTecoAc.html#aba404540b723fa4687a4fda954221130',1,'IRTecoAc::setMode()'],['../classIRToshibaAC.html#aa001cddc464d6cbcc342e5e4c7af13ff',1,'IRToshibaAC::setMode()'],['../classIRTranscoldAc.html#a9371bf7cdc08067d4afb2dffa1c584c4',1,'IRTranscoldAc::setMode()'],['../classIRTrotecESP.html#a5d34e8d1e1be765e51cbfb6874482997',1,'IRTrotecESP::setMode()'],['../classIRTrumaAc.html#ae244a2be001cc99946f59cd3c178d95a',1,'IRTrumaAc::setMode()'],['../classIRVestelAc.html#a470e14ab5623386c0fa2b02fd15ea1d8',1,'IRVestelAc::setMode()'],['../classIRVoltas.html#afa1407bb1cfac30bdb762f7131dc9136',1,'IRVoltas::setMode()'],['../classIRWhirlpoolAc.html#ab09869929f5cc1fd0cc5dede93bba1c5',1,'IRWhirlpoolAc::setMode()']]], - ['setmodel_4544',['setModel',['../classIRFujitsuAC.html#a5393698000d8becf33ff332b32b97c73',1,'IRFujitsuAC::setModel()'],['../classIRGreeAC.html#a1075a08c30a2de97892e0842cb30e451',1,'IRGreeAC::setModel()'],['../classIRHitachiAc1.html#abb8c2c87e87f9d538f171e842c9d309a',1,'IRHitachiAc1::setModel()'],['../classIRLgAc.html#ae4b8758ecf10bd7e25ed401593692821',1,'IRLgAc::setModel()'],['../classIRPanasonicAc.html#a342531bfea3b05484de84e537bde390c',1,'IRPanasonicAc::setModel()'],['../classIRSharpAc.html#a35eb3241339c663db31002738b9632d3',1,'IRSharpAc::setModel()'],['../classIRVoltas.html#aa642fcbc4b0da48ef26c4e8c79f3e8b4',1,'IRVoltas::setModel()'],['../classIRWhirlpoolAc.html#accfa1660ed792acc3cf48ff60d9570f0',1,'IRWhirlpoolAc::setModel()']]], - ['setmold_4545',['setMold',['../classIRDaikinESP.html#a1616d08c8fd3c628fc45a76c32743ac9',1,'IRDaikinESP::setMold()'],['../classIRDaikin2.html#ad53e046e545f3b6c5418dfbaf58653ca',1,'IRDaikin2::setMold()']]], - ['setnight_4546',['setNight',['../classIRArgoAC.html#a769dd3b538653940e41883848bc1e19c',1,'IRArgoAC::setNight()'],['../classIRMitsubishiHeavy152Ac.html#a6920a1aad327e2f347b09da12f11cf8c',1,'IRMitsubishiHeavy152Ac::setNight()']]], - ['setoffsleeptimer_4547',['setOffSleepTimer',['../classIRFujitsuAC.html#acc78790fa33d24c5e068200ec3109798',1,'IRFujitsuAC']]], - ['setofftime_4548',['setOffTime',['../classIRDaikin64.html#a46a0b1e2438087ba557494b0b4fce4a5',1,'IRDaikin64::setOffTime()'],['../classIRVoltas.html#ad5977a24ef551ad0a19b5e61bae0482a',1,'IRVoltas::setOffTime()']]], - ['setofftimeenabled_4549',['setOffTimeEnabled',['../classIRDaikin64.html#aea59ae39ddd0fc33a6941d0affceae9a',1,'IRDaikin64']]], - ['setofftimer_4550',['setOffTimer',['../classIRCarrierAc64.html#a92b1066e783db1bdffabfdc57699deef',1,'IRCarrierAc64::setOffTimer()'],['../classIRCoronaAc.html#a00f269b6389bf65d1816e80b835aa9b0',1,'IRCoronaAc::setOffTimer()'],['../classIRDaikin128.html#a30ca067676dfde963986e25c84616368',1,'IRDaikin128::setOffTimer()'],['../classIRDelonghiAc.html#a9602c652b10b06c6eeae0e6158c42c68',1,'IRDelonghiAc::setOffTimer()'],['../classIREcoclimAc.html#a9a1b8b23de45b38eff74d10f5dfdd7bf',1,'IREcoclimAc::setOffTimer()'],['../classIRFujitsuAC.html#a3f69df43ab82f08c84782585b90437a2',1,'IRFujitsuAC::setOffTimer()'],['../classIRHaierAC.html#aa16b36aa7ef07628343dbd2dfe5157a2',1,'IRHaierAC::setOffTimer()'],['../classIRHitachiAc1.html#a62e9c7b68e63d1791d79805f2bce99df',1,'IRHitachiAc1::setOffTimer()'],['../classIRMideaAC.html#a1f5e4e75987a11300f29355bae12d9e5',1,'IRMideaAC::setOffTimer()'],['../classIRPanasonicAc.html#a08e097f40cee6c614ec1a8de716222cf',1,'IRPanasonicAc::setOffTimer()'],['../classIRSanyoAc.html#a6f5edbc22b039191500845ffd3ec77b5',1,'IRSanyoAc::setOffTimer()'],['../classIRVestelAc.html#acc61cd785d2f668a86ecefb243d63549',1,'IRVestelAc::setOffTimer()'],['../classIRWhirlpoolAc.html#a69f3555c9b27f3cfd9167ed3239804b8',1,'IRWhirlpoolAc::setOffTimer()']]], - ['setofftimeractive_4551',['setOffTimerActive',['../classIRVestelAc.html#a8a023f5594b446f0c20f66c4ee584d8e',1,'IRVestelAc']]], - ['setofftimerenabled_4552',['setOffTimerEnabled',['../classIRDaikin128.html#aac8a178bdaf7de7a183991e710a9a9d8',1,'IRDaikin128::setOffTimerEnabled()'],['../classIRDelonghiAc.html#a5cf81c9864f3c3728d4dd65e4d9c49c8',1,'IRDelonghiAc::setOffTimerEnabled()']]], - ['setontime_4553',['setOnTime',['../classIRDaikin64.html#aaada482820a90492a933f368fafaebb7',1,'IRDaikin64::setOnTime()'],['../classIRVoltas.html#a260ef77c26d2c987122391378ff5e876',1,'IRVoltas::setOnTime()']]], - ['setontimeenabled_4554',['setOnTimeEnabled',['../classIRDaikin64.html#a8e7a7c1f775f8ddf9d48a96915751c7a',1,'IRDaikin64']]], - ['setontimer_4555',['setOnTimer',['../classIRCarrierAc64.html#a9049a8d91200b878cc2a1b9b80a280ea',1,'IRCarrierAc64::setOnTimer()'],['../classIRCoronaAc.html#aae4142f45cc9c2b3e392b72cb404a2d8',1,'IRCoronaAc::setOnTimer()'],['../classIRDaikin128.html#a21773493eafae741b5716ac569eaf0a8',1,'IRDaikin128::setOnTimer()'],['../classIRDelonghiAc.html#a9a478f463a632893be7c4f5223c188ad',1,'IRDelonghiAc::setOnTimer()'],['../classIREcoclimAc.html#ae09d0b632cf657769d23f201284aa08f',1,'IREcoclimAc::setOnTimer()'],['../classIRFujitsuAC.html#a500fd3371c360b446b0cc14e994b77db',1,'IRFujitsuAC::setOnTimer()'],['../classIRHaierAC.html#aa5e95aa05749f6d35dd31b021fea2f5b',1,'IRHaierAC::setOnTimer()'],['../classIRHitachiAc1.html#a51ed6155f228628942ba08ea2ff5c547',1,'IRHitachiAc1::setOnTimer()'],['../classIRMideaAC.html#a99ae120368751b88b73d3b0fe9b426ce',1,'IRMideaAC::setOnTimer()'],['../classIRPanasonicAc.html#a51fdaa11e4e3f77189a94007a5acbec2',1,'IRPanasonicAc::setOnTimer()'],['../classIRVestelAc.html#af19bb7704326eb5688f2a2fa08e10ee2',1,'IRVestelAc::setOnTimer()'],['../classIRWhirlpoolAc.html#a1cb0e346e6f40b65b98a768df7fdace8',1,'IRWhirlpoolAc::setOnTimer()']]], - ['setontimeractive_4556',['setOnTimerActive',['../classIRVestelAc.html#a16ef4ecb7c76bef89b6e0ca36746d606',1,'IRVestelAc']]], - ['setontimerenabled_4557',['setOnTimerEnabled',['../classIRDaikin128.html#a07f693fac3de101c91c190e5e70edb57',1,'IRDaikin128::setOnTimerEnabled()'],['../classIRDelonghiAc.html#af6b956c273284e287093260039003362',1,'IRDelonghiAc::setOnTimerEnabled()']]], - ['setoutsidequiet_4558',['setOutsideQuiet',['../classIRFujitsuAC.html#a9a0533cba18739e52014307bf4b1ad07',1,'IRFujitsuAC']]], - ['setpower_4559',['setPower',['../classIRAmcorAc.html#a2ccfb2c2f0feb8a8cea9e10e30035988',1,'IRAmcorAc::setPower()'],['../classIRArgoAC.html#a991f73d84952c1d8ac86c579d1b01785',1,'IRArgoAC::setPower()'],['../classIRCarrierAc64.html#a8acf59cbf3b02381b5188324030b7727',1,'IRCarrierAc64::setPower()'],['../classIRCoolixAC.html#a975b59045a3c2a50392fdade2743e4e6',1,'IRCoolixAC::setPower()'],['../classIRCoronaAc.html#adc636402b51e0c78c4797aea5f80915d',1,'IRCoronaAc::setPower()'],['../classIRDaikinESP.html#aa0fb65d01bb203d17d923504ddd60984',1,'IRDaikinESP::setPower()'],['../classIRDaikin2.html#a3adfe1a80a702b7098ccd0e18225396e',1,'IRDaikin2::setPower()'],['../classIRDaikin216.html#a130a98bb2422a228977dea8a4e068ace',1,'IRDaikin216::setPower()'],['../classIRDaikin160.html#af1a800ef7494c49a868d01039f5c37e4',1,'IRDaikin160::setPower()'],['../classIRDaikin176.html#a58c755ba53d1f14a51b0c64ff4ef0669',1,'IRDaikin176::setPower()'],['../classIRDaikin152.html#a887f7340b9c3e7933f5d06bc5f59ee91',1,'IRDaikin152::setPower()'],['../classIRDelonghiAc.html#aa1ebbf63aa2331b87b95df9c5bdb41dc',1,'IRDelonghiAc::setPower()'],['../classIREcoclimAc.html#acca0a0d62568abd6f62c6f403e99847f',1,'IREcoclimAc::setPower()'],['../classIRElectraAc.html#abd04ffe9a77a97d4fafbcecd3a7949a4',1,'IRElectraAc::setPower()'],['../classIRFujitsuAC.html#a8d8211f20c8ec299e1fcb588a0846ac2',1,'IRFujitsuAC::setPower()'],['../classIRGoodweatherAc.html#ac49e30082777b10fe9edf6ec7bd76ea5',1,'IRGoodweatherAc::setPower()'],['../classIRGreeAC.html#a16b8c6af038752cd2b416cdcf9e2fb51',1,'IRGreeAC::setPower()'],['../classIRHaierACYRW02.html#a32e4a52cf31b43ad96ff3d8f0f390620',1,'IRHaierACYRW02::setPower()'],['../classIRHitachiAc.html#ad78a7176ded93735a296eefbf75cbc06',1,'IRHitachiAc::setPower()'],['../classIRHitachiAc1.html#a4dd034793018ea58d0cc32e7a47e8f35',1,'IRHitachiAc1::setPower()'],['../classIRHitachiAc424.html#a7b0b2e2c631d1bce2dd4677bb71e79b4',1,'IRHitachiAc424::setPower()'],['../classIRKelvinatorAC.html#a517a0193a9236a28a20d1760d7401efd',1,'IRKelvinatorAC::setPower()'],['../classIRLgAc.html#a175e6482fd1565d43906c527f911b59e',1,'IRLgAc::setPower()'],['../classIRMideaAC.html#ab8341f8d3d553d8b0ed9270cc15fc8ec',1,'IRMideaAC::setPower()'],['../classIRMitsubishiAC.html#a13f26de3c35b01470176b6fd9efda566',1,'IRMitsubishiAC::setPower()'],['../classIRMitsubishi136.html#a4bf52b3784faaca95ff97a09b8be322a',1,'IRMitsubishi136::setPower()'],['../classIRMitsubishi112.html#a0545da32a5048bc9d857ffb05767d3a6',1,'IRMitsubishi112::setPower()'],['../classIRMitsubishiHeavy152Ac.html#a08202752226ff3295eb8ccd637b0158b',1,'IRMitsubishiHeavy152Ac::setPower()'],['../classIRMitsubishiHeavy88Ac.html#ac2ee9dd82e84a3735e8a0c69e64cb02e',1,'IRMitsubishiHeavy88Ac::setPower()'],['../classIRNeoclimaAc.html#ac19bea3b79cdfc868bd137b0a70c0718',1,'IRNeoclimaAc::setPower()'],['../classIRPanasonicAc.html#ad60bf8a88d041f8e8ab3d728831ee8f3',1,'IRPanasonicAc::setPower()'],['../classIRSamsungAc.html#a4af21fa0dcbf5595386f67db676a443c',1,'IRSamsungAc::setPower()'],['../classIRSanyoAc.html#a13b080b4244e027460af90740ed0ff45',1,'IRSanyoAc::setPower()'],['../classIRSharpAc.html#a6b57a66878f125f86d2aed8bd7545000',1,'IRSharpAc::setPower()'],['../classIRTcl112Ac.html#ad2367d2481f94f14b9c4f7b378711b7e',1,'IRTcl112Ac::setPower()'],['../classIRTechnibelAc.html#a935f26d55d7d5c7024e8b298fda9aeb4',1,'IRTechnibelAc::setPower()'],['../classIRTecoAc.html#a989e48a889b36ec36386a532c81872d9',1,'IRTecoAc::setPower()'],['../classIRToshibaAC.html#a100f01c014582e162f9fd287beb91dff',1,'IRToshibaAC::setPower()'],['../classIRTranscoldAc.html#a3a19128eaf81ec52f752d79d718d43a3',1,'IRTranscoldAc::setPower()'],['../classIRTrotecESP.html#a0f3f5f5db367cb5a9adb936fada94fd5',1,'IRTrotecESP::setPower()'],['../classIRTrumaAc.html#aaff68f98a079f0596440a0915409a6c1',1,'IRTrumaAc::setPower()'],['../classIRVestelAc.html#a01e06ff3916d4a14f9ca49f22918a47b',1,'IRVestelAc::setPower()'],['../classIRVoltas.html#a0ee0be11284527861476091c855a8606',1,'IRVoltas::setPower()']]], - ['setpowerbutton_4560',['setPowerButton',['../classIRCoronaAc.html#a518471d42a62863953c97334cad348be',1,'IRCoronaAc']]], - ['setpowerful_4561',['setPowerful',['../classIRDaikinESP.html#a4c0da54ee1639a3bf813cb3f3afee064',1,'IRDaikinESP::setPowerful()'],['../classIRDaikin2.html#a6538104cdcf1b55e480aaddd51116d9a',1,'IRDaikin2::setPowerful()'],['../classIRDaikin216.html#a5cb6e958f3b9789828738defe4d12c7b',1,'IRDaikin216::setPowerful()'],['../classIRDaikin128.html#aeb3aa5013b1746ed714146ca7f233119',1,'IRDaikin128::setPowerful()'],['../classIRDaikin152.html#a6477111b5662146e937c10cf02423e10',1,'IRDaikin152::setPowerful()'],['../classIRPanasonicAc.html#a6357688bc9cca92ab222343ee045f4f4',1,'IRPanasonicAc::setPowerful()'],['../classIRSamsungAc.html#ab657b79740e0f84c09611ea3b10d06f0',1,'IRSamsungAc::setPowerful()']]], - ['setpowerspecial_4562',['setPowerSpecial',['../classIRSharpAc.html#af7dd64c6d82a8502d2ee176f7b0f5abb',1,'IRSharpAc']]], - ['setpowertoggle_4563',['setPowerToggle',['../classIRAirwellAc.html#a1b6aa498d9766b041d39a7b3d73653e7',1,'IRAirwellAc::setPowerToggle()'],['../classIRDaikin128.html#a5d7edaa44f0c9ca55ef1040dd42e42e3',1,'IRDaikin128::setPowerToggle()'],['../classIRDaikin64.html#ac7f673619842d217d4eda893da2f35fd',1,'IRDaikin64::setPowerToggle()'],['../classIRHitachiAc1.html#ae30430edd92ec4b848c8a105a78e8068',1,'IRHitachiAc1::setPowerToggle()'],['../classIRPanasonicAc32.html#ad0206dff39920f1407ed52256ee1b083',1,'IRPanasonicAc32::setPowerToggle()'],['../classIRWhirlpoolAc.html#a61bec25edce5bc244acb41f79df561e7',1,'IRWhirlpoolAc::setPowerToggle()']]], - ['setpurify_4564',['setPurify',['../classIRDaikin2.html#accd4430e998a8c9be80b5a708be9337e',1,'IRDaikin2']]], - ['setquiet_4565',['setQuiet',['../classIRDaikinESP.html#a4927eb8b2db2540efa90b37f4c3cc733',1,'IRDaikinESP::setQuiet()'],['../classIRDaikin2.html#a61ca7e72f850d0f9600fa9d8a336a8ef',1,'IRDaikin2::setQuiet()'],['../classIRDaikin216.html#a062528f54412cd3d2339c7bf82305ebb',1,'IRDaikin216::setQuiet()'],['../classIRDaikin128.html#a89c49332006831debbabbfcb5ec30249',1,'IRDaikin128::setQuiet()'],['../classIRDaikin152.html#a3aadf5f0ae11c5c6c53f351dd6b9c1a4',1,'IRDaikin152::setQuiet()'],['../classIRDaikin64.html#a7e3fb8debcefb76e76dda5612e28f377',1,'IRDaikin64::setQuiet()'],['../classIRKelvinatorAC.html#a2a3ca238649c55cd4f6f92f48eddf9ac',1,'IRKelvinatorAC::setQuiet()'],['../classIRMitsubishi136.html#a70c8a44f93e90ba025a8909c004c3a7b',1,'IRMitsubishi136::setQuiet()'],['../classIRMitsubishi112.html#a9fbbfb7bb1f6cccfcdcfbc4dcc335169',1,'IRMitsubishi112::setQuiet()'],['../classIRPanasonicAc.html#a51b6ae49cb490f697adeaf7f9f466518',1,'IRPanasonicAc::setQuiet()'],['../classIRSamsungAc.html#a6b3dd7d83c613a06f3499f1c8b26a67b',1,'IRSamsungAc::setQuiet()'],['../classIRTrumaAc.html#a5c1bc2a26b75c50a723cc4d29d121a9d',1,'IRTrumaAc::setQuiet()']]], - ['setraw_4566',['setRaw',['../classIRAirwellAc.html#a56e90d8b7e902be15c5db12be872d0fb',1,'IRAirwellAc::setRaw()'],['../classIRAmcorAc.html#ac0520033d7a59c817ca8ec08462fe39b',1,'IRAmcorAc::setRaw()'],['../classIRArgoAC.html#a98db56256eb71bf2e8da419007145e2b',1,'IRArgoAC::setRaw()'],['../classIRCarrierAc64.html#af49cf0b53bf8ff946a63bae94be0251d',1,'IRCarrierAc64::setRaw()'],['../classIRCoolixAC.html#aed28d08743c529a5715331255a8d5507',1,'IRCoolixAC::setRaw()'],['../classIRCoronaAc.html#a9ccf78675a3c175209c8d0ef08e2e671',1,'IRCoronaAc::setRaw()'],['../classIRDaikinESP.html#a7c69fc77ead837e5b4f1ececd9f43ca9',1,'IRDaikinESP::setRaw()'],['../classIRDaikin2.html#a132001e73eb5744a3a174c5517c9bbda',1,'IRDaikin2::setRaw()'],['../classIRDaikin216.html#a49f6a2ffc2e76ec4ff020e773bd70160',1,'IRDaikin216::setRaw()'],['../classIRDaikin160.html#a22e8a1600f612dd4326b2f9722d3a269',1,'IRDaikin160::setRaw()'],['../classIRDaikin176.html#a51e5f74b532eca958c09998727064e8d',1,'IRDaikin176::setRaw()'],['../classIRDaikin128.html#a25db29e01def45e8850ac9da68aa7ea7',1,'IRDaikin128::setRaw()'],['../classIRDaikin152.html#aab10e030ebe66e44607e9f35af1eb4cb',1,'IRDaikin152::setRaw()'],['../classIRDaikin64.html#a5f081026aca2bccc6fdeef8199e80779',1,'IRDaikin64::setRaw()'],['../classIRDelonghiAc.html#a219bafa7839f10acca33526cf585152a',1,'IRDelonghiAc::setRaw()'],['../classIREcoclimAc.html#ac88006b639a05c9605548db1af672fb0',1,'IREcoclimAc::setRaw()'],['../classIRElectraAc.html#ae57c51cd3f5d1ebfb2fe7b926d149dd6',1,'IRElectraAc::setRaw()'],['../classIRFujitsuAC.html#a9b89d756948affa7029eeeed51916cbb',1,'IRFujitsuAC::setRaw()'],['../classIRGoodweatherAc.html#a2eae4bbdb14fea9e3004d656f852df59',1,'IRGoodweatherAc::setRaw()'],['../classIRGreeAC.html#a588f526f2f5500c7c2933ca91ccaf865',1,'IRGreeAC::setRaw()'],['../classIRHaierAC.html#a152961e20b5a5bed2ea03cbc65d65ce9',1,'IRHaierAC::setRaw()'],['../classIRHaierACYRW02.html#a389e711e128533c409731d2c87868c85',1,'IRHaierACYRW02::setRaw()'],['../classIRHitachiAc.html#a3b67215c162ef508c68c49b621c5199b',1,'IRHitachiAc::setRaw()'],['../classIRHitachiAc1.html#ae2d40bc477e30ee574f5c5e2ba4e09c2',1,'IRHitachiAc1::setRaw()'],['../classIRHitachiAc424.html#adc24b8b984ff20cebdf81f65843bb283',1,'IRHitachiAc424::setRaw()'],['../classIRHitachiAc3.html#acff4faf79a30df7b7e7c183dec4153a7',1,'IRHitachiAc3::setRaw()'],['../classIRHitachiAc344.html#a8bf02e3923d881436a9578532ed3c024',1,'IRHitachiAc344::setRaw()'],['../classIRKelonAc.html#af752008b00838cf61cc53e631abd8c84',1,'IRKelonAc::setRaw()'],['../classIRKelvinatorAC.html#a4a32bbf1a7ee8a089ea1e4e7c750433b',1,'IRKelvinatorAC::setRaw()'],['../classIRLgAc.html#a0da8ea4946826736f526386dc4d115cc',1,'IRLgAc::setRaw()'],['../classIRMideaAC.html#ab24da22531f5b2823551501642ec1b94',1,'IRMideaAC::setRaw()'],['../classIRMitsubishiAC.html#ac7bb79f91d5a9296c2b2b74aae1bfb53',1,'IRMitsubishiAC::setRaw()'],['../classIRMitsubishi136.html#abf0487a6fb163bf896e09b2cae6ee939',1,'IRMitsubishi136::setRaw()'],['../classIRMitsubishi112.html#a5c82f92d4a1ba1477ae7738ed5ade368',1,'IRMitsubishi112::setRaw()'],['../classIRMitsubishiHeavy152Ac.html#a8d42a2d87bf889ab4b233ea0c239f4c2',1,'IRMitsubishiHeavy152Ac::setRaw()'],['../classIRMitsubishiHeavy88Ac.html#abf01e448da9ec6e3b4512f58c3020299',1,'IRMitsubishiHeavy88Ac::setRaw()'],['../classIRNeoclimaAc.html#a607ea7df35572578ef86da7f505ab407',1,'IRNeoclimaAc::setRaw()'],['../classIRPanasonicAc.html#a63308883e8447aa5cdf7d29107be220f',1,'IRPanasonicAc::setRaw()'],['../classIRPanasonicAc32.html#a349462a31274f3785effdb249b485368',1,'IRPanasonicAc32::setRaw()'],['../classIRSamsungAc.html#a95377e8c73b51e73e78b51a2b2fa16d4',1,'IRSamsungAc::setRaw()'],['../classIRSanyoAc.html#a0fb38af499c140401396831665f862bd',1,'IRSanyoAc::setRaw()'],['../classIRSharpAc.html#a89b18c4ee29afa56ebed5fa32e578df7',1,'IRSharpAc::setRaw()'],['../classIRTcl112Ac.html#a5b0994f37df6846137b564eeb322f21b',1,'IRTcl112Ac::setRaw()'],['../classIRTechnibelAc.html#aed63ea8dd6ba08a13623be756462a997',1,'IRTechnibelAc::setRaw()'],['../classIRTecoAc.html#a1ef3423214f55a2e2695cc1180f94bcc',1,'IRTecoAc::setRaw()'],['../classIRToshibaAC.html#a58313e235136bf8f9e36dee59857cebc',1,'IRToshibaAC::setRaw()'],['../classIRTranscoldAc.html#ac8d5395411aa44efffe3bb1a068eaf4f',1,'IRTranscoldAc::setRaw()'],['../classIRTrotecESP.html#a4ffe5ee2559828a61af710bb7d892b6c',1,'IRTrotecESP::setRaw()'],['../classIRTrumaAc.html#a80eec53fa6df87174eb2212eee01f4fa',1,'IRTrumaAc::setRaw()'],['../classIRVestelAc.html#a617bf1f4b5596d5ad005237e8445c12e',1,'IRVestelAc::setRaw(const uint8_t *newState)'],['../classIRVestelAc.html#a5cc86216d33f228c0648d6c66526b0eb',1,'IRVestelAc::setRaw(const uint64_t newState)'],['../classIRVoltas.html#a5e946ed52c025643b4fc6b89619c90b5',1,'IRVoltas::setRaw()'],['../classIRWhirlpoolAc.html#afa9c66ea36c970f80c88a0489448ab5b',1,'IRWhirlpoolAc::setRaw()']]], - ['setroomtemp_4567',['setRoomTemp',['../classIRArgoAC.html#aec5a2edc6f414aab201a18defaa78c5b',1,'IRArgoAC']]], - ['setsave_4568',['setSave',['../classIRTecoAc.html#a0f7d203d44d4040be3a4b28fcd5dd34c',1,'IRTecoAc']]], - ['setsensor_4569',['setSensor',['../classIRDaikinESP.html#ae1c95533934fffb29eed3e9a27e8f636',1,'IRDaikinESP::setSensor()'],['../classIRDaikin152.html#af418dbf2bb79dab0193801167dfb5b78',1,'IRDaikin152::setSensor()'],['../classIRSanyoAc.html#a287d7b6c417151d303cb7d731ae349be',1,'IRSanyoAc::setSensor()']]], - ['setsensortemp_4570',['setSensorTemp',['../classIRCoolixAC.html#a9bf364245a05818ced3e8fb79d725d9c',1,'IRCoolixAC::setSensorTemp()'],['../classIREcoclimAc.html#a371062a46e92fec628be150bd0eada96',1,'IREcoclimAc::setSensorTemp()'],['../classIRMideaAC.html#a99270b5f488ebcf3b0ef73d9697399a0',1,'IRMideaAC::setSensorTemp()'],['../classIRSanyoAc.html#a22aa95f76076a3a9634609a27bbc1a7f',1,'IRSanyoAc::setSensorTemp()']]], - ['setsensortempraw_4571',['setSensorTempRaw',['../classIRCoolixAC.html#a425c3f5fb26330266156c133fb9104eb',1,'IRCoolixAC']]], - ['setsilent_4572',['setSilent',['../classIRMitsubishiHeavy152Ac.html#ab398b9ea2965f059903137ab088791c0',1,'IRMitsubishiHeavy152Ac']]], - ['setsleep_4573',['setSleep',['../classIRCarrierAc64.html#aa729dbef39afeeed8e83f26b927d3b21',1,'IRCarrierAc64::setSleep()'],['../classIRCoolixAC.html#af0108f5a5ae0049fd296307a7cef605e',1,'IRCoolixAC::setSleep()'],['../classIRDaikin128.html#ac43854ae557ec5582f2bfd9150fd57f2',1,'IRDaikin128::setSleep()'],['../classIRDaikin64.html#a7faf8e018179fed2b091a78d0d69a9b8',1,'IRDaikin64::setSleep()'],['../classIRDelonghiAc.html#aa74806e520b2b01a5b0c87ee32ce427e',1,'IRDelonghiAc::setSleep()'],['../classIRGoodweatherAc.html#a30987629a159c5112649f0973895c9c1',1,'IRGoodweatherAc::setSleep()'],['../classIRGreeAC.html#ac9c11817d15bc5c82732a901cd95e07c',1,'IRGreeAC::setSleep()'],['../classIRHaierAC.html#acb72b89fa53b565f9d32db4d8960f988',1,'IRHaierAC::setSleep()'],['../classIRHaierACYRW02.html#ad63834eb1a91ed974af988c385570457',1,'IRHaierACYRW02::setSleep()'],['../classIRHitachiAc1.html#a2ddb6a5d446b379884828e81df0806ee',1,'IRHitachiAc1::setSleep()'],['../classIRKelonAc.html#abe299f1f7b54ca43546522050a9902f4',1,'IRKelonAc::setSleep()'],['../classIRMideaAC.html#a1e008ff673450060bf39a65f1cb926e6',1,'IRMideaAC::setSleep()'],['../classIRNeoclimaAc.html#ad01a62fb369c6894333adb2fe0f52b79',1,'IRNeoclimaAc::setSleep()'],['../classIRSanyoAc.html#af0bb8ab84d7ee2e9bd1848582f54ff74',1,'IRSanyoAc::setSleep()'],['../classIRTechnibelAc.html#a2df311dc104af45a281c7d87512248d4',1,'IRTechnibelAc::setSleep()'],['../classIRTecoAc.html#a1e989a4fbd21c507ba13014b1e336ce2',1,'IRTecoAc::setSleep()'],['../classIRTrotecESP.html#a41c558c6937e61e77269139f96135420',1,'IRTrotecESP::setSleep()'],['../classIRVestelAc.html#a4b93d5585b7fb9d509e7fcf84e2b4abc',1,'IRVestelAc::setSleep()'],['../classIRVoltas.html#a64210225e6c0bf89944b4b12fda2c799',1,'IRVoltas::setSleep()'],['../classIRWhirlpoolAc.html#a6eaa24abc9eac64d9cbe79205a239474',1,'IRWhirlpoolAc::setSleep()']]], - ['setsleeptimer_4574',['setSleepTimer',['../classIRFujitsuAC.html#aebed4f746874057d7a8a50bbc88e74a5',1,'IRFujitsuAC']]], - ['setspecial_4575',['setSpecial',['../classIRSharpAc.html#ad7d2eca8b863569a1b17fdca4930d84f',1,'IRSharpAc']]], - ['setspeed_4576',['setSpeed',['../classIRTrotecESP.html#a268146141ce0358c2353c0ff59cfbad3',1,'IRTrotecESP']]], - ['setstartclock_4577',['setStartClock',['../classIRMitsubishiAC.html#a22d8c0dfd8098cb274d915476ed4caae',1,'IRMitsubishiAC']]], - ['setstatelength_4578',['setStateLength',['../classIRToshibaAC.html#a9ee4c6cff9be72455b6133a6280c65c4',1,'IRToshibaAC']]], - ['setstopclock_4579',['setStopClock',['../classIRMitsubishiAC.html#a228dafbf1ea3e9c3487506a5ca2ea274',1,'IRMitsubishiAC']]], - ['setsuper_4580',['setSuper',['../classIRWhirlpoolAc.html#a19a14674b0bae79d3aee81b8d48aacc7',1,'IRWhirlpoolAc']]], - ['setsupercool_4581',['setSupercool',['../classIRKelonAc.html#acb502b372e6a077f7a7ed8f95f30e991',1,'IRKelonAc']]], - ['setswing_4582',['setSwing',['../classIRCoolixAC.html#a8e8a76617d06d8ad8a74bc8af3512d95',1,'IRCoolixAC::setSwing()'],['../classIRFujitsuAC.html#a60ab8f21b5561e94a322b72a606468b9',1,'IRFujitsuAC::setSwing()'],['../classIRGoodweatherAc.html#a4d11a6885a5e7851e7c941b559159c35',1,'IRGoodweatherAc::setSwing()'],['../classIRHaierAC.html#a28c8bf6e0f45e074bf5eb13c25805627',1,'IRHaierAC::setSwing()'],['../classIRHaierACYRW02.html#ab9152dd09dec2db522dd96778f3b1556',1,'IRHaierACYRW02::setSwing()'],['../classIRSamsungAc.html#aaa7aaca1134e1565f527fcaa96a2fa6e',1,'IRSamsungAc::setSwing()'],['../classIRTechnibelAc.html#ad6c991f62d9ff127e662b8bbfe0376ca',1,'IRTechnibelAc::setSwing()'],['../classIRTecoAc.html#aaaeb10176c0b73e72fdb63b53fdcd5d0',1,'IRTecoAc::setSwing()'],['../classIRToshibaAC.html#aec1cf1c148197e22a30d578043ce1912',1,'IRToshibaAC::setSwing()'],['../classIRTranscoldAc.html#a8ee39074ca2ac9fc6546be09b5f67e6b',1,'IRTranscoldAc::setSwing()'],['../classIRVestelAc.html#a6c98427df6e5e8081a6dcbfcd436ff0d',1,'IRVestelAc::setSwing()'],['../classIRWhirlpoolAc.html#a6fec80710ba87599840e576f37e0c944',1,'IRWhirlpoolAc::setSwing()']]], - ['setswingh_4583',['setSwingH',['../classIRElectraAc.html#afcd40681003d57b4f1b652175fc276a8',1,'IRElectraAc::setSwingH()'],['../classIRHitachiAc1.html#af6cc42d52dfed89e23d3d180e7b69af9',1,'IRHitachiAc1::setSwingH()'],['../classIRHitachiAc344.html#a5651cb90ba9b87ef841f8987bad267d4',1,'IRHitachiAc344::setSwingH()'],['../classIRMitsubishi112.html#a99f97b04ac22a7942ea371f470faaf49',1,'IRMitsubishi112::setSwingH()'],['../classIRNeoclimaAc.html#a1aeebc60d7bbd0fb801ad88f639cb6a0',1,'IRNeoclimaAc::setSwingH()'],['../classIRVoltas.html#a6069eea71ca7e48326f8155df950e798',1,'IRVoltas::setSwingH()']]], - ['setswinghchange_4584',['setSwingHChange',['../classIRVoltas.html#acf7be0544dabb18ac29975b0f7ec9773',1,'IRVoltas']]], - ['setswinghorizontal_4585',['setSwingHorizontal',['../classIRDaikinESP.html#a5a7ec7b00811138879c636b03ae58606',1,'IRDaikinESP::setSwingHorizontal()'],['../classIRDaikin2.html#a75b6d6fb5bab0a9c951ad35e3e1d07c5',1,'IRDaikin2::setSwingHorizontal()'],['../classIRDaikin216.html#af8a1525cbe8d813c419d17ee6776a7d9',1,'IRDaikin216::setSwingHorizontal()'],['../classIRDaikin176.html#a9e63cf22410ffad45f6b308674079ee8',1,'IRDaikin176::setSwingHorizontal()'],['../classIRHitachiAc.html#ae70600f4a6f9fd7579221b11cd73062f',1,'IRHitachiAc::setSwingHorizontal()'],['../classIRKelvinatorAC.html#a2f1731f71bc74fb7ad6fec1210ecb1c7',1,'IRKelvinatorAC::setSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#a8713144e057424809292494a663dcd22',1,'IRMitsubishiHeavy152Ac::setSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#aaceffdd4e631fb2d4c404de0c8ff8cdb',1,'IRMitsubishiHeavy88Ac::setSwingHorizontal()'],['../classIRPanasonicAc.html#a32f3f07813165a39359887485dd87254',1,'IRPanasonicAc::setSwingHorizontal()'],['../classIRPanasonicAc32.html#a3361eb1f7e4da86290ad3f2c3e68340b',1,'IRPanasonicAc32::setSwingHorizontal()'],['../classIRTcl112Ac.html#aedc63c59a924d64048bc034a752ce7ed',1,'IRTcl112Ac::setSwingHorizontal()']]], - ['setswingtoggle_4586',['setSwingToggle',['../classIRHitachiAc1.html#a24ec128b6bb27cfc4be4dda9ece003d6',1,'IRHitachiAc1::setSwingToggle()'],['../classIRSharpAc.html#a0d397009ecf213111207fcebb12b95fb',1,'IRSharpAc::setSwingToggle()']]], - ['setswingv_4587',['setSwingV',['../classIRCarrierAc64.html#a61a3f9f29cabc0634a9a74fc2227d8c5',1,'IRCarrierAc64::setSwingV()'],['../classIRDaikin152.html#ad151bb85529d46f7e3e3e65dbf446ff0',1,'IRDaikin152::setSwingV()'],['../classIRElectraAc.html#ae5b33942670e0033cbb9b9c7a1524e93',1,'IRElectraAc::setSwingV()'],['../classIRHitachiAc1.html#a1bcc61a9a33a3ddec41d44d52e7df0d3',1,'IRHitachiAc1::setSwingV()'],['../classIRHitachiAc344.html#a3982f110de8ff9881cf4070902294285',1,'IRHitachiAc344::setSwingV()'],['../classIRMitsubishi136.html#a0d54bc6dd55da18b05f723a1b61e575e',1,'IRMitsubishi136::setSwingV()'],['../classIRMitsubishi112.html#ae33b469f1b67616f101f4a3df874fb78',1,'IRMitsubishi112::setSwingV()'],['../classIRNeoclimaAc.html#aa6e5f6f092f52c5c289642c9576c8bc0',1,'IRNeoclimaAc::setSwingV()'],['../classIRSanyoAc.html#a4d159778cd93caaecdb57d5c9417a2c9',1,'IRSanyoAc::setSwingV()'],['../classIRVoltas.html#aff014fc2f818a0bdb22cb89bd074c555',1,'IRVoltas::setSwingV()']]], - ['setswingvertical_4588',['setSwingVertical',['../classIRDaikinESP.html#a9200ef5751df5d488d7e08b138ec6356',1,'IRDaikinESP::setSwingVertical()'],['../classIRDaikin2.html#a35e72dc8e7967ee8ca8e84a6344468f3',1,'IRDaikin2::setSwingVertical()'],['../classIRDaikin216.html#a851484d5a37ceb1b0fc32e2e4bc2bcbb',1,'IRDaikin216::setSwingVertical()'],['../classIRDaikin160.html#a1683a255393f233d3e5b46d186d62881',1,'IRDaikin160::setSwingVertical()'],['../classIRDaikin128.html#a961aceb41145001003a50c5988f04c4d',1,'IRDaikin128::setSwingVertical()'],['../classIRDaikin64.html#afca186067111fa7181916a218c2800ec',1,'IRDaikin64::setSwingVertical()'],['../classIRGreeAC.html#a1b571dea8a5bf553554e45074f3a01c0',1,'IRGreeAC::setSwingVertical()'],['../classIRHitachiAc.html#a7e3ee78e4835fe402095b544c1e52f9f',1,'IRHitachiAc::setSwingVertical()'],['../classIRKelvinatorAC.html#a7334fbf8f2a67b33562ecea6b6e66f0e',1,'IRKelvinatorAC::setSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#aea3ac937feff058feef321bfe7357145',1,'IRMitsubishiHeavy152Ac::setSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#a9406e1890483703afb7b383e1363f8ec',1,'IRMitsubishiHeavy88Ac::setSwingVertical()'],['../classIRPanasonicAc.html#a48f31b1f85c92fac22f85a1aa8074c6e',1,'IRPanasonicAc::setSwingVertical()'],['../classIRPanasonicAc32.html#ab6af790d2828a64e5b5cb70bf818a578',1,'IRPanasonicAc32::setSwingVertical()'],['../classIRTcl112Ac.html#a53f702dcc66de81f6e7e03d538a6946d',1,'IRTcl112Ac::setSwingVertical()']]], - ['setswingvstep_4589',['setSwingVStep',['../classIRCoolixAC.html#af0659a8a63004a5f9833ca3c565afff4',1,'IRCoolixAC::setSwingVStep()'],['../classIRMideaAC.html#a0dc0122ffcc2fccba4f044fbf755b924',1,'IRMideaAC::setSwingVStep()']]], - ['setswingvtoggle_4590',['setSwingVToggle',['../classIRCoronaAc.html#a7cb31da86353ec637239cb747890bd7b',1,'IRCoronaAc::setSwingVToggle()'],['../classIRHitachiAc424.html#a220fd85bd213dd13ee9c609d4d7d20c1',1,'IRHitachiAc424::setSwingVToggle()'],['../classIRMideaAC.html#a7fce182bff4f5bc2c6679b20f344837b',1,'IRMideaAC::setSwingVToggle()']]], - ['settemp_4591',['setTemp',['../classIRAirwellAc.html#a30883e7b4f7933b6fa2258736995d295',1,'IRAirwellAc::setTemp()'],['../classIRAmcorAc.html#af4b2c476b76534687f14e9be963e9522',1,'IRAmcorAc::setTemp()'],['../classIRArgoAC.html#abad424a3cf1894715baa03780fa9b53b',1,'IRArgoAC::setTemp()'],['../classIRCarrierAc64.html#a79e193514ac6d07be537a78887426311',1,'IRCarrierAc64::setTemp()'],['../classIRCoolixAC.html#a1d4b4fb810b9f3835ee585b2aa66088f',1,'IRCoolixAC::setTemp()'],['../classIRCoronaAc.html#a9b1d5223cbb6ae6ba07f32871b27d9c6',1,'IRCoronaAc::setTemp()'],['../classIRDaikinESP.html#a631db8830684b745711667aed73a6433',1,'IRDaikinESP::setTemp()'],['../classIRDaikin2.html#a7f752c785fe180d5038e35bb07ff965a',1,'IRDaikin2::setTemp()'],['../classIRDaikin216.html#a8735732d3264eec119127d4353990669',1,'IRDaikin216::setTemp()'],['../classIRDaikin160.html#abedd99ed838478a7ef856537c6fabb82',1,'IRDaikin160::setTemp()'],['../classIRDaikin176.html#acb3b296f4c87a5a37258c666ef886ff3',1,'IRDaikin176::setTemp()'],['../classIRDaikin128.html#aba143a1b80e6de7d1c7b987eeda6b0db',1,'IRDaikin128::setTemp()'],['../classIRDaikin152.html#a97567ade1c0262b3f95f23f171936d8c',1,'IRDaikin152::setTemp()'],['../classIRDaikin64.html#adb1eb657998c05a143365755da0a1e81',1,'IRDaikin64::setTemp()'],['../classIRDelonghiAc.html#a08cc3e32c50277e3f986ed2c3945ce0d',1,'IRDelonghiAc::setTemp()'],['../classIREcoclimAc.html#a4e176cd0def4fccc15bac1bc1dcf023b',1,'IREcoclimAc::setTemp()'],['../classIRElectraAc.html#a5f986d9a376b6d5348fcb021d66d235b',1,'IRElectraAc::setTemp()'],['../classIRFujitsuAC.html#add8b65e2f16c36c6ccdf00bd19c34366',1,'IRFujitsuAC::setTemp()'],['../classIRGoodweatherAc.html#a8b1c90f69a3a2e412020d07809d180cc',1,'IRGoodweatherAc::setTemp()'],['../classIRGreeAC.html#a1890c6d134183beb89b791ec565623bb',1,'IRGreeAC::setTemp()'],['../classIRHaierAC.html#a9fb2a375cc1b8692fe4d5dcdd765cc46',1,'IRHaierAC::setTemp()'],['../classIRHaierACYRW02.html#a80170879e7bd391e360d41f18f6fa52b',1,'IRHaierACYRW02::setTemp()'],['../classIRHitachiAc.html#a9f416886ae341cdb6d449572e4d168a9',1,'IRHitachiAc::setTemp()'],['../classIRHitachiAc1.html#a10ba2dcbe447e505cbaa1a9b63f4823c',1,'IRHitachiAc1::setTemp()'],['../classIRHitachiAc424.html#a5cca8f31d07ce87b6e4a0ff0c22b1be8',1,'IRHitachiAc424::setTemp()'],['../classIRKelonAc.html#af4dfb42ff38f252961a8806ae7437055',1,'IRKelonAc::setTemp()'],['../classIRKelvinatorAC.html#ab098a376c7393d377abcc6c1f504d372',1,'IRKelvinatorAC::setTemp()'],['../classIRLgAc.html#ad9924a8bc9737ec6007d76ec47b34142',1,'IRLgAc::setTemp()'],['../classIRMideaAC.html#a42f79e73f418d5267eed7ba5b0e266f5',1,'IRMideaAC::setTemp()'],['../classIRMitsubishiAC.html#a0a043ce8a1a9e27ae3ac84be5b207d72',1,'IRMitsubishiAC::setTemp()'],['../classIRMitsubishi136.html#ac19c9234a5f65cae50b64d56c4bebb8f',1,'IRMitsubishi136::setTemp()'],['../classIRMitsubishi112.html#a03ba44a6d2f152b7afade423f12c8726',1,'IRMitsubishi112::setTemp()'],['../classIRMitsubishiHeavy152Ac.html#ad4f9ae94b8ab1fff8fc99b8d7818a8fe',1,'IRMitsubishiHeavy152Ac::setTemp()'],['../classIRMitsubishiHeavy88Ac.html#aa4a92e5334aebdca5d2b26b642e9b9e8',1,'IRMitsubishiHeavy88Ac::setTemp()'],['../classIRNeoclimaAc.html#ae9d6cd2de77ac324550d69cfc80b0e3f',1,'IRNeoclimaAc::setTemp()'],['../classIRPanasonicAc.html#a58376c311177e701333f4915515d49f1',1,'IRPanasonicAc::setTemp()'],['../classIRPanasonicAc32.html#a697a5816a4bed187e2245fe626727395',1,'IRPanasonicAc32::setTemp()'],['../classIRSamsungAc.html#a94a71e82321343220836aa614b231bd0',1,'IRSamsungAc::setTemp()'],['../classIRSanyoAc.html#ab1346677e0e9f6828629f3f7d50ef656',1,'IRSanyoAc::setTemp()'],['../classIRSharpAc.html#a151f88799cdab6fda4cfef83b30e5917',1,'IRSharpAc::setTemp()'],['../classIRTcl112Ac.html#a110bae0201b63db0409c352dd8d62786',1,'IRTcl112Ac::setTemp()'],['../classIRTechnibelAc.html#add05b89590340e891e2e1e666c5d033b',1,'IRTechnibelAc::setTemp()'],['../classIRTecoAc.html#a405106cb572dac338d79da48fe7a7cb3',1,'IRTecoAc::setTemp()'],['../classIRToshibaAC.html#a923fad1f637e1851a77a063978994604',1,'IRToshibaAC::setTemp()'],['../classIRTranscoldAc.html#aa183d51c121c70704f6b0a5957911986',1,'IRTranscoldAc::setTemp()'],['../classIRTrotecESP.html#ad467e7fe9ff61fec4ec10b367c0f9279',1,'IRTrotecESP::setTemp()'],['../classIRTrumaAc.html#ae6cb4a1fa7671a9162145b6a4e8bd08b',1,'IRTrumaAc::setTemp()'],['../classIRVestelAc.html#a8c4eddfba4edfa16e317e12677736756',1,'IRVestelAc::setTemp()'],['../classIRVoltas.html#a328a8ed84e89d44c13ca6e641c4b6f97',1,'IRVoltas::setTemp()'],['../classIRWhirlpoolAc.html#afff1ae75ffa362abb791c97c20023755',1,'IRWhirlpoolAc::setTemp()']]], - ['settempraw_4592',['setTempRaw',['../classIRCoolixAC.html#ae9371280e92daa8e1441523026f1ef0a',1,'IRCoolixAC']]], - ['settempunit_4593',['setTempUnit',['../classIRDelonghiAc.html#a4e3681e49065ba232577ca05157a5ef2',1,'IRDelonghiAc::setTempUnit()'],['../classIRTechnibelAc.html#a48ea1ac452c84b0a6c705a5c341c8ad5',1,'IRTechnibelAc::setTempUnit()']]], - ['settime_4594',['setTime',['../classIRArgoAC.html#ae285801cde19da82e128098097624852',1,'IRArgoAC::setTime()'],['../classIRVestelAc.html#afc5dedf83855a8fea8b29494bfb07d64',1,'IRVestelAc::setTime()']]], - ['settimer_4595',['setTimer',['../classIRGreeAC.html#a84debd45d2f2ba221f825257e0bc6294',1,'IRGreeAC::setTimer()'],['../classIRKelonAc.html#aebbebeaf41b54b6b0387b5a71fa92f28',1,'IRKelonAc::setTimer()'],['../classIRMitsubishiAC.html#acb56c91ef0db6ace7782d356af2dcd4d',1,'IRMitsubishiAC::setTimer()'],['../classIRSharpAc.html#a8782543c33e48af0a09e548276eb6413',1,'IRSharpAc::setTimer()'],['../classIRTechnibelAc.html#a940a048710432db01bcd1be34ea5324e',1,'IRTechnibelAc::setTimer()'],['../classIRTecoAc.html#a88a84e22d53a204da754c04210fadd04',1,'IRTecoAc::setTimer()'],['../classIRTrotecESP.html#a92bfed0f247b21c77737b720151dbb88',1,'IRTrotecESP::setTimer()'],['../classIRVestelAc.html#a7c66e1ec13c827714eaa2233f50f072b',1,'IRVestelAc::setTimer()']]], - ['settimeractive_4596',['setTimerActive',['../classIRVestelAc.html#a77f78e534b19a8dca776b17aa06739aa',1,'IRVestelAc']]], - ['settimerenabled_4597',['setTimerEnabled',['../classIRGreeAC.html#a1002d6dfe409076fa7ef252589d5043c',1,'IRGreeAC::setTimerEnabled()'],['../classIRKelonAc.html#a19d6b061a5a42de460078c32e406c058',1,'IRKelonAc::setTimerEnabled()'],['../classIRTechnibelAc.html#a0fc61ce2941376e03d8285495e1fe2b2',1,'IRTechnibelAc::setTimerEnabled()']]], - ['settimertype_4598',['setTimerType',['../classIRFujitsuAC.html#a58670cab1b422527897da9e5ae821b0c',1,'IRFujitsuAC']]], - ['settogglepower_4599',['setTogglePower',['../classIRKelonAc.html#aa892e8e4c9865cccb123d793ae5f9550',1,'IRKelonAc']]], - ['settoggleswingvertical_4600',['setToggleSwingVertical',['../classIRKelonAc.html#a37223c374b8bb82dd5bf5059b0903b4f',1,'IRKelonAc']]], - ['settolerance_4601',['setTolerance',['../classIRrecv.html#aa091c449db70c65fd0221669df7438ea',1,'IRrecv']]], - ['setturbo_4602',['setTurbo',['../classIRCoolixAC.html#a857c14452f80d3d332729b2bdd04f92d',1,'IRCoolixAC::setTurbo()'],['../classIRDaikin64.html#a734cc23f79a4de4099a4ceb1aff14762',1,'IRDaikin64::setTurbo()'],['../classIRElectraAc.html#adb40e95465788b03e4cb845bd481f7ed',1,'IRElectraAc::setTurbo()'],['../classIRGoodweatherAc.html#a7827fc5a8f85b284c0121727dba34f11',1,'IRGoodweatherAc::setTurbo()'],['../classIRGreeAC.html#ae873023ad81f7dcb12ee5b061e160bea',1,'IRGreeAC::setTurbo()'],['../classIRHaierACYRW02.html#aba5f028ee1ebf7be2d4de5a66237f01b',1,'IRHaierACYRW02::setTurbo()'],['../classIRKelvinatorAC.html#a7d9c44970e85f23c83723f27e96260ee',1,'IRKelvinatorAC::setTurbo()'],['../classIRMitsubishiHeavy152Ac.html#a275e8ae44e2018a848b3e8f0893c8023',1,'IRMitsubishiHeavy152Ac::setTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a39ac892d349180327cce92c6f82bea30',1,'IRMitsubishiHeavy88Ac::setTurbo()'],['../classIRNeoclimaAc.html#aa2a9563d9e3c5c95dfa512c0bb87e16f',1,'IRNeoclimaAc::setTurbo()'],['../classIRSharpAc.html#a8a184ae8eeb07704b9b69849421e3172',1,'IRSharpAc::setTurbo()'],['../classIRTcl112Ac.html#a99e3b3e2f0cc627b6d872d04b35d6230',1,'IRTcl112Ac::setTurbo()'],['../classIRToshibaAC.html#a5d1d6b00a9b99bf29496fbd6af5cce31',1,'IRToshibaAC::setTurbo()'],['../classIRVestelAc.html#afa762d0fa63ecc7444c1c107f8f07cdb',1,'IRVestelAc::setTurbo()'],['../classIRVoltas.html#ac7418f197deb96c0fef5d2c36732f5af',1,'IRVoltas::setTurbo()']]], - ['setturbotoggle_4603',['setTurboToggle',['../classIRMideaAC.html#a05b58666391bb204cef6fff288ed7660',1,'IRMideaAC']]], - ['settype_4604',['setType',['../classIREcoclimAc.html#a0b196d1f8079d5336de11ba6ddf0a039',1,'IREcoclimAc::setType()'],['../classIRMideaAC.html#a89a6990ce864d111ccb97a1d37acc379',1,'IRMideaAC::setType()']]], - ['setunknownthreshold_4605',['setUnknownThreshold',['../classIRrecv.html#a02693553aad1decd67bdae60402e48bf',1,'IRrecv']]], - ['setusecelsius_4606',['setUseCelsius',['../classIRMideaAC.html#a1eeb72ddd2b9867c2f9c392080b9c1ed',1,'IRMideaAC']]], - ['setusefahrenheit_4607',['setUseFahrenheit',['../classIRGreeAC.html#af559afaa9da5fd27cdb516355da67bd6',1,'IRGreeAC']]], - ['setvane_4608',['setVane',['../classIRMitsubishiAC.html#abb247f1dca5cf23a7b8a16852dcf32f1',1,'IRMitsubishiAC']]], - ['setweeklytimerenable_4609',['setWeeklyTimerEnable',['../classIRDaikinESP.html#a0db67d46b13acfad9b94c7e4691777b8',1,'IRDaikinESP']]], - ['setweeklytimerenabled_4610',['setWeeklyTimerEnabled',['../classIRMitsubishiAC.html#ac872db2785dd08da86dfff04921b7df3',1,'IRMitsubishiAC']]], - ['setwidevane_4611',['setWideVane',['../classIRMitsubishiAC.html#a02b2b3d7456e6123c60dca70de346c25',1,'IRMitsubishiAC']]], - ['setwifi_4612',['setWifi',['../classIRVoltas.html#a3aa24f471e306abfe7fd7af2b74c7ca0',1,'IRVoltas::setWifi()'],['../classIRGreeAC.html#afde745ceaa97f9608195b2ba9fce6c5c',1,'IRGreeAC::setWiFi()']]], - ['setxfan_4613',['setXFan',['../classIRGreeAC.html#af465c607222fa433f54c2ce56ced2474',1,'IRGreeAC::setXFan()'],['../classIRKelvinatorAC.html#af02da81109109cf1cb44057fd1a40164',1,'IRKelvinatorAC::setXFan()']]], - ['setzonefollow_4614',['setZoneFollow',['../classIRCoolixAC.html#a0c0f39d8e2e79d8259000695263ec3fa',1,'IRCoolixAC']]], - ['sharp_4615',['sharp',['../classIRac.html#a13494c43813e857bdeaa2cc95e2cb5bd',1,'IRac']]], - ['space_4616',['space',['../classIRsend.html#a0417b10d4e16718a87f8b2062a7d04a1',1,'IRsend']]], - ['statereset_4617',['stateReset',['../classIRAirwellAc.html#a82591a86e031ef30b58f9565b6233953',1,'IRAirwellAc::stateReset()'],['../classIRAmcorAc.html#a018ab4ca4d738d848d3388ea1300b83b',1,'IRAmcorAc::stateReset()'],['../classIRArgoAC.html#af34a99bc37c4496c9fd68856aa065a13',1,'IRArgoAC::stateReset()'],['../classIRCarrierAc64.html#abe58c8f97ab4c34fd0cf198b07589694',1,'IRCarrierAc64::stateReset()'],['../classIRCoolixAC.html#a0048b9ef226f8f4312cf8221ee3123f8',1,'IRCoolixAC::stateReset()'],['../classIRCoronaAc.html#a47726d4ff93528bd8a5a6f1b47ba7141',1,'IRCoronaAc::stateReset()'],['../classIRDaikinESP.html#a49f6b90336225f7e94b8aefd066e1993',1,'IRDaikinESP::stateReset()'],['../classIRDaikin2.html#a93928b703f9b72218f2a607879cb401d',1,'IRDaikin2::stateReset()'],['../classIRDaikin216.html#a8456bd9981063019d48c59e5050680ed',1,'IRDaikin216::stateReset()'],['../classIRDaikin160.html#a72f9f1526907f1076348666eb9151f75',1,'IRDaikin160::stateReset()'],['../classIRDaikin176.html#a7f0b4b6c0a4a8b0680a8b8cd0eda8127',1,'IRDaikin176::stateReset()'],['../classIRDaikin128.html#ab604a7594c3b0131c5d977e3fc3b3565',1,'IRDaikin128::stateReset()'],['../classIRDaikin152.html#adde28c0b529d4a32dc0b702746026b6a',1,'IRDaikin152::stateReset()'],['../classIRDaikin64.html#a5fd1412719c648212978d80474f256e4',1,'IRDaikin64::stateReset()'],['../classIRDelonghiAc.html#acadbed22a27f2376c1e8424dec0caa35',1,'IRDelonghiAc::stateReset()'],['../classIREcoclimAc.html#a2b88c0636f3947e48fc4aa48ade74e2e',1,'IREcoclimAc::stateReset()'],['../classIRElectraAc.html#ab8035c14158fcf3758f46f6976b814f7',1,'IRElectraAc::stateReset()'],['../classIRFujitsuAC.html#a603a0e1870f406e4e746a7bb4c37fb70',1,'IRFujitsuAC::stateReset()'],['../classIRGoodweatherAc.html#ae7f8873ad58e553dc89307220628bebf',1,'IRGoodweatherAc::stateReset()'],['../classIRGreeAC.html#a61356a0dfb4656ac438c3629c591b165',1,'IRGreeAC::stateReset()'],['../classIRHaierAC.html#a62fbae1d2bac01ac3a2194274aa839d9',1,'IRHaierAC::stateReset()'],['../classIRHaierACYRW02.html#a106e7ffa0d69cdf976087c6e190d03ea',1,'IRHaierACYRW02::stateReset()'],['../classIRHitachiAc.html#a0564c00c60e64e57e20f3c1a4bd3d894',1,'IRHitachiAc::stateReset()'],['../classIRHitachiAc1.html#a9764b329d982d018b15098b3044f9596',1,'IRHitachiAc1::stateReset()'],['../classIRHitachiAc424.html#afd8d5b21086b34cdc07b498157240f8f',1,'IRHitachiAc424::stateReset()'],['../classIRHitachiAc3.html#a7bdcddf9c7f85b7cb43a92198e422549',1,'IRHitachiAc3::stateReset()'],['../classIRHitachiAc344.html#a481cbfb0420ba884a7eb4c2ba82bd666',1,'IRHitachiAc344::stateReset()'],['../classIRKelonAc.html#a4c19f0aa6d12b41aaae296e8c89961e0',1,'IRKelonAc::stateReset()'],['../classIRKelvinatorAC.html#ad6fefe85023c3fc318b0e45924874f9f',1,'IRKelvinatorAC::stateReset()'],['../classIRLgAc.html#a5959000c9f0b2cf64742d6a2f1c4c9b9',1,'IRLgAc::stateReset()'],['../classIRMideaAC.html#acc584e07406e1811acfb26f6cd5383cd',1,'IRMideaAC::stateReset()'],['../classIRMitsubishiAC.html#a8da4be360c8e2fd3a5a40cb4049b5d84',1,'IRMitsubishiAC::stateReset()'],['../classIRMitsubishi136.html#a67556dab7ed42c68a274f4f24ecc35bb',1,'IRMitsubishi136::stateReset()'],['../classIRMitsubishi112.html#a9c601ba34e10d5c63886c2c5b405d9ae',1,'IRMitsubishi112::stateReset()'],['../classIRMitsubishiHeavy152Ac.html#a0b239cacd3a8a96f2e3d7047f26119da',1,'IRMitsubishiHeavy152Ac::stateReset()'],['../classIRMitsubishiHeavy88Ac.html#a1cf118f435c99372c89a140a79c67f1f',1,'IRMitsubishiHeavy88Ac::stateReset()'],['../classIRNeoclimaAc.html#a5ce32a6e6195b246696cb609994f3762',1,'IRNeoclimaAc::stateReset()'],['../classIRPanasonicAc.html#a9a9fbf531f04c486edf913c382351b2b',1,'IRPanasonicAc::stateReset()'],['../classIRPanasonicAc32.html#ac38e1daa7107f90d2d1984940c72c4a1',1,'IRPanasonicAc32::stateReset()'],['../classIRSamsungAc.html#a52186401655966b3103d3d73fb77e7f0',1,'IRSamsungAc::stateReset()'],['../classIRSanyoAc.html#aeba68a833d8756a9a6069edc3fef58cb',1,'IRSanyoAc::stateReset()'],['../classIRSharpAc.html#aa151c704ba4f5690a7cfadaf90c4b60d',1,'IRSharpAc::stateReset()'],['../classIRTcl112Ac.html#a049f475c1af7b62b9f3482dcf9e66d4a',1,'IRTcl112Ac::stateReset()'],['../classIRTechnibelAc.html#ae72f22533fc9b05169ac66ac034ca4d8',1,'IRTechnibelAc::stateReset()'],['../classIRTecoAc.html#ad53e6f3d3693ee6efb419326a3d4c492',1,'IRTecoAc::stateReset()'],['../classIRToshibaAC.html#a3d3c3df261b4db7a9d831c94cc206e8a',1,'IRToshibaAC::stateReset()'],['../classIRTranscoldAc.html#a88018c184feed75774ad01a41fdb3e69',1,'IRTranscoldAc::stateReset()'],['../classIRTrotecESP.html#a86c3415d8c1880c325bc22c2c4ca44e0',1,'IRTrotecESP::stateReset()'],['../classIRTrumaAc.html#a8a028e5859735ecfd11cbef649dd51d3',1,'IRTrumaAc::stateReset()'],['../classIRVestelAc.html#a921100234f5751f8b94d9673a5d217f9',1,'IRVestelAc::stateReset()'],['../classIRVoltas.html#a07cde80e35d990733c41d6b0e4dcafda',1,'IRVoltas::stateReset()'],['../classIRWhirlpoolAc.html#a371a6f48a2f4f66e4243dacbbf4471be',1,'IRWhirlpoolAc::stateReset()']]], - ['stephoriz_4618',['stepHoriz',['../classIRFujitsuAC.html#a53c48bc1f32c849263a3aa86ff06b1d4',1,'IRFujitsuAC']]], - ['stepvert_4619',['stepVert',['../classIRFujitsuAC.html#a942f106c27ce04094b5b615f2e174022',1,'IRFujitsuAC']]], - ['strtobool_4620',['strToBool',['../classIRac.html#a3dba736fe25bd3a3a47b9ec7dae51728',1,'IRac']]], - ['strtodecodetype_4621',['strToDecodeType',['../IRutils_8cpp.html#ae1614f315c1ebc44eaf1ac62055cc1ff',1,'strToDecodeType(const char *const str): IRutils.cpp'],['../IRutils_8h.html#a10b9312e4ac9c96d895af83db01ed72e',1,'strToDecodeType(const char *str): IRutils.cpp']]], - ['strtofanspeed_4622',['strToFanspeed',['../classIRac.html#a7173b12c155d04dd1db07a055f4ecb03',1,'IRac']]], - ['strtomodel_4623',['strToModel',['../classIRac.html#a7036fbbb918d644a98b5efa16374a256',1,'IRac']]], - ['strtoopmode_4624',['strToOpmode',['../classIRac.html#a251fa76ddacc84d2655bac723b7dea28',1,'IRac']]], - ['strtoswingh_4625',['strToSwingH',['../classIRac.html#a294d6040909519f465945245df56e56d',1,'IRac']]], - ['strtoswingv_4626',['strToSwingV',['../classIRac.html#a538c861d79afabb11fb8becedd3962f8',1,'IRac']]], - ['sumbytes_4627',['sumBytes',['../IRutils_8cpp.html#abfbd3d7cc33d0aac341e6619f3390108',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#a3f33bdd680bea210b212d4e9925eb8eb',1,'sumBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]], - ['sumnibbles_4628',['sumNibbles',['../namespaceirutils.html#a4752ecc3eafa3ca2e13344a52519b343',1,'irutils::sumNibbles(const uint8_t *const start, const uint16_t length, const uint8_t init)'],['../namespaceirutils.html#aeb5202fa0093ee6b7e07d4290229fbd2',1,'irutils::sumNibbles(const uint64_t data, const uint8_t count, const uint8_t init, const bool nibbleonly)']]], - ['swinghtostring_4629',['swinghToString',['../classIRac.html#a21c9d71bbf229fd8369480e50a7c3689',1,'IRac']]], - ['swingvtostring_4630',['swingvToString',['../classIRac.html#a641b59e48183a8f6d9b739ce7210f142',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.html deleted file mode 100644 index 48e591559..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.js deleted file mode 100644 index 191e49e5f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_12.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['tcl112_4631',['tcl112',['../classIRac.html#a3028bd9e83956d57b592bb96638b3f59',1,'IRac']]], - ['technibel_4632',['technibel',['../classIRac.html#a13fbfbf7d6368a10b7526c1c1cedfa5a',1,'IRac']]], - ['teco_4633',['teco',['../classIRac.html#a9e612e04e270dd5710e8a63a64b56064',1,'IRac']]], - ['tickshigh_4634',['ticksHigh',['../classIRrecv.html#a573dbb20695f2ffc808623df8c36280c',1,'IRrecv']]], - ['tickslow_4635',['ticksLow',['../classIRrecv.html#ac08e50c5eec10c0095157f4bdd4051c8',1,'IRrecv']]], - ['timerms_4636',['TimerMs',['../classTimerMs.html#a7bf7f8d2fcf76b27b34ea4705810eef5',1,'TimerMs']]], - ['tocommon_4637',['toCommon',['../classIRAirwellAc.html#a279b9cf59acf8462ea99ffcd7d08b919',1,'IRAirwellAc::toCommon()'],['../classIRAmcorAc.html#a67b9fc041a0de132cfac901d1bfd1313',1,'IRAmcorAc::toCommon()'],['../classIRArgoAC.html#ad799686591d91845d526fc3a5db42171',1,'IRArgoAC::toCommon()'],['../classIRCarrierAc64.html#a6cef4a532c3f4c961500e51598a6df80',1,'IRCarrierAc64::toCommon()'],['../classIRCoolixAC.html#a533c6341065b5e47d56771d13c0c248a',1,'IRCoolixAC::toCommon()'],['../classIRCoronaAc.html#a38fbd2262153c740a71bb373a6672096',1,'IRCoronaAc::toCommon()'],['../classIRDaikinESP.html#ab636c6718d8663a98be0e32b189e6d44',1,'IRDaikinESP::toCommon()'],['../classIRDaikin2.html#a8d6c439465779b8febe9eb977e4542c0',1,'IRDaikin2::toCommon()'],['../classIRDaikin216.html#a4e1de110bf0c7a50fb8c2243b7f87524',1,'IRDaikin216::toCommon()'],['../classIRDaikin160.html#a70778c17bcdd6c8adf50af209406fad5',1,'IRDaikin160::toCommon()'],['../classIRDaikin176.html#aee7d30b9935881513afafa5291dd8c0c',1,'IRDaikin176::toCommon()'],['../classIRDaikin128.html#a03c0403dadb7377b463373dc67431b7a',1,'IRDaikin128::toCommon()'],['../classIRDaikin152.html#a0bd5276ee23cf56c75d8a84d8c4bf17a',1,'IRDaikin152::toCommon()'],['../classIRDaikin64.html#abcdf16d946975a35292168d4548999ab',1,'IRDaikin64::toCommon()'],['../classIRDelonghiAc.html#a30c2463464576889af014f8e15d59c75',1,'IRDelonghiAc::toCommon()'],['../classIREcoclimAc.html#a239da399ed837c535538e2321839746c',1,'IREcoclimAc::toCommon()'],['../classIRElectraAc.html#a8ea21abd10c629bd3dd9673ce36b07ed',1,'IRElectraAc::toCommon()'],['../classIRFujitsuAC.html#ae878d663cdcd9f40cb3ae348b03a4cb2',1,'IRFujitsuAC::toCommon()'],['../classIRGoodweatherAc.html#abaaa40915d93e8c6bd5dd49d8e02b510',1,'IRGoodweatherAc::toCommon()'],['../classIRGreeAC.html#ac28c640aa4b5dd0dbbca42b056f877f7',1,'IRGreeAC::toCommon()'],['../classIRHaierAC.html#a738de44369e3322d264c8ee78cc72ab6',1,'IRHaierAC::toCommon()'],['../classIRHaierACYRW02.html#a0189f929df672e9996d9c2959378d4af',1,'IRHaierACYRW02::toCommon()'],['../classIRHitachiAc.html#a2d4aa7ff76dfef5055e051e347c8552f',1,'IRHitachiAc::toCommon()'],['../classIRHitachiAc1.html#ad5819257f1042fa97689fc70e578adaa',1,'IRHitachiAc1::toCommon()'],['../classIRHitachiAc424.html#ad33ed9dfd26bb513e113549b932f2f3f',1,'IRHitachiAc424::toCommon()'],['../classIRHitachiAc344.html#a2bdc3e19a6125d107844f548e4321f6e',1,'IRHitachiAc344::toCommon()'],['../classIRKelonAc.html#a4ae759003ba0abd4a29971745c5971a3',1,'IRKelonAc::toCommon()'],['../classIRKelvinatorAC.html#a4f44754277101b80574ce66b02bdbe06',1,'IRKelvinatorAC::toCommon()'],['../classIRLgAc.html#ab7c25ce38605a54204f761f8aa7f24e1',1,'IRLgAc::toCommon()'],['../classIRMideaAC.html#a62086b58f71908b75e28a61bd4f6bf15',1,'IRMideaAC::toCommon()'],['../classIRMitsubishiAC.html#af794d838a5f4ca75ac8e581d8d06c945',1,'IRMitsubishiAC::toCommon()'],['../classIRMitsubishi136.html#ad03ce7834e5b928cf9e2c7c266bc567e',1,'IRMitsubishi136::toCommon()'],['../classIRMitsubishi112.html#abe39fadc87c09105bdc330069ee7ce20',1,'IRMitsubishi112::toCommon()'],['../classIRMitsubishiHeavy152Ac.html#a37d7bbd42a6816c9c5639ed1080b1371',1,'IRMitsubishiHeavy152Ac::toCommon()'],['../classIRMitsubishiHeavy88Ac.html#a0e3ec0c4a3ffc9c0c5b5342e4d697601',1,'IRMitsubishiHeavy88Ac::toCommon()'],['../classIRNeoclimaAc.html#a068f762e89180f80011b25323a0b5c1a',1,'IRNeoclimaAc::toCommon()'],['../classIRPanasonicAc.html#af2218f117db06424ced00ba6c0cc3234',1,'IRPanasonicAc::toCommon()'],['../classIRPanasonicAc32.html#a49749cb320f52c62fd51a6d271277696',1,'IRPanasonicAc32::toCommon()'],['../classIRSamsungAc.html#a47fb72f99ca6dfba378e2ce60e4c1246',1,'IRSamsungAc::toCommon()'],['../classIRSanyoAc.html#a408e12d69a26c62d53254e4b7c29a925',1,'IRSanyoAc::toCommon()'],['../classIRSharpAc.html#a4fa96fdd02031b1b46736befcd8bae1a',1,'IRSharpAc::toCommon()'],['../classIRTcl112Ac.html#afa6cacde7053c502f66f227c9eb1e82d',1,'IRTcl112Ac::toCommon()'],['../classIRTechnibelAc.html#acafa5e84c84ca1e1299b7dbced6cdc17',1,'IRTechnibelAc::toCommon()'],['../classIRTecoAc.html#a35b2c56f7667d4f1ebe81ac28e7a38c7',1,'IRTecoAc::toCommon()'],['../classIRToshibaAC.html#a533cc022b014adff376c0dfc319242ca',1,'IRToshibaAC::toCommon()'],['../classIRTranscoldAc.html#abbd4d9ba01a8e27a719dcf00c2890d38',1,'IRTranscoldAc::toCommon()'],['../classIRTrotecESP.html#afc86878429018657442ce1fd1863ae06',1,'IRTrotecESP::toCommon()'],['../classIRTrumaAc.html#a71cbcde09a100df106dc86a6e9022958',1,'IRTrumaAc::toCommon()'],['../classIRVestelAc.html#ad31b99f939667487b6f04acace6a29bd',1,'IRVestelAc::toCommon()'],['../classIRVoltas.html#a79c76ddd91237e624115aaf0e183f3f0',1,'IRVoltas::toCommon()'],['../classIRWhirlpoolAc.html#a3fbdadc6b064cdb72358c220ce56ca41',1,'IRWhirlpoolAc::toCommon()']]], - ['tocommonfanspeed_4638',['toCommonFanSpeed',['../classIRAirwellAc.html#a38a93fc115fbe4deb0a5ee82a913c166',1,'IRAirwellAc::toCommonFanSpeed()'],['../classIRAmcorAc.html#a951aa81d98c66138f61069431e13f35a',1,'IRAmcorAc::toCommonFanSpeed()'],['../classIRArgoAC.html#a334afe3ce6536089bc2832985067f029',1,'IRArgoAC::toCommonFanSpeed()'],['../classIRCarrierAc64.html#a5a9149acc82fcc22a5be8dcbe791ab77',1,'IRCarrierAc64::toCommonFanSpeed()'],['../classIRCoolixAC.html#a6a0e7219c667eb06897b47a7c36f5fbc',1,'IRCoolixAC::toCommonFanSpeed()'],['../classIRCoronaAc.html#a6d5d0015f01acc97badff7edda964485',1,'IRCoronaAc::toCommonFanSpeed()'],['../classIRDaikinESP.html#a6855a423f10a2230953646d478400574',1,'IRDaikinESP::toCommonFanSpeed()'],['../classIRDaikin176.html#a6f9b7dddcf98c7a42495c900dddf505d',1,'IRDaikin176::toCommonFanSpeed()'],['../classIRDaikin128.html#a1c53a27678731229308e355eb94ec762',1,'IRDaikin128::toCommonFanSpeed()'],['../classIRDaikin64.html#acd24c4932e2bfd6bffbb9a90da2028a6',1,'IRDaikin64::toCommonFanSpeed()'],['../classIRDelonghiAc.html#a231e26843e3616e7455fd020dbb8807b',1,'IRDelonghiAc::toCommonFanSpeed()'],['../classIREcoclimAc.html#aee569b3f1c6e5f7209da6a5acd37ec66',1,'IREcoclimAc::toCommonFanSpeed()'],['../classIRElectraAc.html#a5d53fb85582344cfdbfa33da6acbdb7d',1,'IRElectraAc::toCommonFanSpeed()'],['../classIRFujitsuAC.html#a93a35e42d887b5ca6414b295a4a91526',1,'IRFujitsuAC::toCommonFanSpeed()'],['../classIRGoodweatherAc.html#aff899c76d5b808ee35c9f88c116b5dc4',1,'IRGoodweatherAc::toCommonFanSpeed()'],['../classIRGreeAC.html#ade6cb54e99b6dab1df708cbf25fc5967',1,'IRGreeAC::toCommonFanSpeed()'],['../classIRHaierAC.html#ad67ee0b7299d041aad77382dde893229',1,'IRHaierAC::toCommonFanSpeed()'],['../classIRHaierACYRW02.html#a15402e3ba2a9875d5b49f6dab3e85034',1,'IRHaierACYRW02::toCommonFanSpeed()'],['../classIRHitachiAc.html#afba02d48c4a023ed800abf38d5314c7e',1,'IRHitachiAc::toCommonFanSpeed()'],['../classIRHitachiAc1.html#a99f205391deb75d23d08d63e1feff0d4',1,'IRHitachiAc1::toCommonFanSpeed()'],['../classIRHitachiAc424.html#a16abdf55ea3ae4b06e2a23dad3496738',1,'IRHitachiAc424::toCommonFanSpeed()'],['../classIRKelonAc.html#a77c79c1f41429ae2dbaee0254eeb6af1',1,'IRKelonAc::toCommonFanSpeed()'],['../classIRKelvinatorAC.html#a0ebd262c554c5c843bc3f710570e1401',1,'IRKelvinatorAC::toCommonFanSpeed()'],['../classIRLgAc.html#af47317ba139a4b1e5961b9a45db974df',1,'IRLgAc::toCommonFanSpeed()'],['../classIRMideaAC.html#acd89d4864a46b146ac4f648c4406ded5',1,'IRMideaAC::toCommonFanSpeed()'],['../classIRMitsubishiAC.html#aa7dd30cde520b14575d7fcd992c3bbf1',1,'IRMitsubishiAC::toCommonFanSpeed()'],['../classIRMitsubishi136.html#aaf9f9f17f3ac59ef325b57b9110faa34',1,'IRMitsubishi136::toCommonFanSpeed()'],['../classIRMitsubishi112.html#aaeee082d9adbf7b0d91316c703571f1a',1,'IRMitsubishi112::toCommonFanSpeed()'],['../classIRMitsubishiHeavy152Ac.html#a5e26c3121aceb944fc688e6f641dd5b1',1,'IRMitsubishiHeavy152Ac::toCommonFanSpeed()'],['../classIRMitsubishiHeavy88Ac.html#aa5dae03951ba9a9aeac62184c27f9439',1,'IRMitsubishiHeavy88Ac::toCommonFanSpeed()'],['../classIRNeoclimaAc.html#a5d87285928bd8bfa2abad92fbdf384b5',1,'IRNeoclimaAc::toCommonFanSpeed()'],['../classIRPanasonicAc.html#a1eff8e4d670abc303a02d8baeeb58f8c',1,'IRPanasonicAc::toCommonFanSpeed()'],['../classIRPanasonicAc32.html#acbe96fc57d66d4759e007d97b2cba8b6',1,'IRPanasonicAc32::toCommonFanSpeed()'],['../classIRSamsungAc.html#a2905b33c273d2be6cabfc3b16b51a5b4',1,'IRSamsungAc::toCommonFanSpeed()'],['../classIRSanyoAc.html#a3bcd35a2e4933ddac55a4e27d9d43359',1,'IRSanyoAc::toCommonFanSpeed()'],['../classIRSharpAc.html#a4436ad5eadfc422a6f111ca07c08397b',1,'IRSharpAc::toCommonFanSpeed()'],['../classIRTcl112Ac.html#a66843ee5b53ce9be1aef3774b8df5c84',1,'IRTcl112Ac::toCommonFanSpeed()'],['../classIRTechnibelAc.html#aece92f0e3f4dd4c3b25a8b0408926d45',1,'IRTechnibelAc::toCommonFanSpeed()'],['../classIRTecoAc.html#ac3ad2828770440695969d696ca6ff46d',1,'IRTecoAc::toCommonFanSpeed()'],['../classIRToshibaAC.html#a6c77121c9aba3928e676394f88e88dee',1,'IRToshibaAC::toCommonFanSpeed()'],['../classIRTranscoldAc.html#ad373dbb4df435d9a191710e5bce56883',1,'IRTranscoldAc::toCommonFanSpeed()'],['../classIRTrotecESP.html#a4aaf17993757533370290fffb728befc',1,'IRTrotecESP::toCommonFanSpeed()'],['../classIRTrumaAc.html#ac91956eb18e0339cfa6280104737e22c',1,'IRTrumaAc::toCommonFanSpeed()'],['../classIRVestelAc.html#a6dfd46f56f2d6b15344722cde0741500',1,'IRVestelAc::toCommonFanSpeed()'],['../classIRVoltas.html#a822ac5b90857b912649601a2f7e75ac8',1,'IRVoltas::toCommonFanSpeed()'],['../classIRWhirlpoolAc.html#a61ef6661a985763540b7c2273b8b1b9c',1,'IRWhirlpoolAc::toCommonFanSpeed()']]], - ['tocommonmode_4639',['toCommonMode',['../classIRAirwellAc.html#ad2c717b7750e43894197ee8b292ba23b',1,'IRAirwellAc::toCommonMode()'],['../classIRAmcorAc.html#a6da2f34f1e044f815e94ede578f4c26f',1,'IRAmcorAc::toCommonMode()'],['../classIRArgoAC.html#a8ccd3f5398f50548fda3a9e0172fb5fa',1,'IRArgoAC::toCommonMode()'],['../classIRCarrierAc64.html#ab17b24d0306b8983886d15175898909e',1,'IRCarrierAc64::toCommonMode()'],['../classIRCoolixAC.html#a789fb5d5eab2e78d392c8e0b9a194b18',1,'IRCoolixAC::toCommonMode()'],['../classIRCoronaAc.html#a04ca6532beb099893eb1dd5d01bb4d31',1,'IRCoronaAc::toCommonMode()'],['../classIRDaikinESP.html#a3a7543204520da36547c163a96e30deb',1,'IRDaikinESP::toCommonMode()'],['../classIRDaikin176.html#aa0b9c96d3bf08400a5110bcfa9f1ec9d',1,'IRDaikin176::toCommonMode()'],['../classIRDaikin128.html#a105a4fc511feba96afc956bb36d2dc50',1,'IRDaikin128::toCommonMode()'],['../classIRDaikin64.html#a80b9dd0fbf935bed5035463af2ad0102',1,'IRDaikin64::toCommonMode()'],['../classIRDelonghiAc.html#a5a3eef369009836a629369cf835741c4',1,'IRDelonghiAc::toCommonMode()'],['../classIREcoclimAc.html#a0355e830df179eb4f006b473d30e3117',1,'IREcoclimAc::toCommonMode()'],['../classIRElectraAc.html#a01bd399c3b8908083b95f31d97ddb26f',1,'IRElectraAc::toCommonMode()'],['../classIRFujitsuAC.html#a96140e74d31631581003064f70041d02',1,'IRFujitsuAC::toCommonMode()'],['../classIRGoodweatherAc.html#ab3bcd1354b715179f67499c28fb219fb',1,'IRGoodweatherAc::toCommonMode()'],['../classIRGreeAC.html#a3f393071163fd1577c772a8515e2b5a9',1,'IRGreeAC::toCommonMode()'],['../classIRHaierAC.html#a4d73f75516afff0ef18bdbb7ed9c26ed',1,'IRHaierAC::toCommonMode()'],['../classIRHaierACYRW02.html#a24007a5be360c93ec157b95c8cc06493',1,'IRHaierACYRW02::toCommonMode()'],['../classIRHitachiAc.html#ab7edc0f5571100e1778779081e1c1114',1,'IRHitachiAc::toCommonMode()'],['../classIRHitachiAc1.html#a5cbca62775089593fe2447a77d84b3d5',1,'IRHitachiAc1::toCommonMode()'],['../classIRHitachiAc424.html#a2a725d8dc2178975c977a7496792e667',1,'IRHitachiAc424::toCommonMode()'],['../classIRKelonAc.html#aee7fef2e11d5bfebcd866f27f46979a2',1,'IRKelonAc::toCommonMode()'],['../classIRKelvinatorAC.html#ae2683d38ae72b99e6843e37d36f96db2',1,'IRKelvinatorAC::toCommonMode()'],['../classIRLgAc.html#ac3436968a4445f0210403c353d766b73',1,'IRLgAc::toCommonMode()'],['../classIRMideaAC.html#ac2e0ff374678aadd7fea80194aef8bca',1,'IRMideaAC::toCommonMode()'],['../classIRMitsubishiAC.html#a7eae5da584faf41139be597d6a5e7210',1,'IRMitsubishiAC::toCommonMode()'],['../classIRMitsubishi136.html#a2771fd09b2e953b037c0c65c4e4029ee',1,'IRMitsubishi136::toCommonMode()'],['../classIRMitsubishi112.html#a6da77ebe6e03cfc09aa35e531c292ed1',1,'IRMitsubishi112::toCommonMode()'],['../classIRMitsubishiHeavy152Ac.html#a9faaff371ad3ec33de5646a1afd1992a',1,'IRMitsubishiHeavy152Ac::toCommonMode()'],['../classIRNeoclimaAc.html#a2a220b673c96e54e675d8296aa8b2303',1,'IRNeoclimaAc::toCommonMode()'],['../classIRPanasonicAc.html#a1ace0180b9ac3f4bd17357a03c64792e',1,'IRPanasonicAc::toCommonMode()'],['../classIRPanasonicAc32.html#a396a35813eef61112168f4700eb6e4f7',1,'IRPanasonicAc32::toCommonMode()'],['../classIRSamsungAc.html#a39820a05a9650e9da8a44109234a8d87',1,'IRSamsungAc::toCommonMode()'],['../classIRSanyoAc.html#abd8441f70245dd1225aeebf5f9b42e9b',1,'IRSanyoAc::toCommonMode()'],['../classIRSharpAc.html#a3f97044325d19f3d0987c6fe5b22f6d0',1,'IRSharpAc::toCommonMode()'],['../classIRTcl112Ac.html#a230a8d768089d869efdea6589b0a9e37',1,'IRTcl112Ac::toCommonMode()'],['../classIRTechnibelAc.html#a1a75968674695a9a6b3da2bc979e6cac',1,'IRTechnibelAc::toCommonMode()'],['../classIRTecoAc.html#ac6c7011b31208887de6d15edbffb211a',1,'IRTecoAc::toCommonMode()'],['../classIRToshibaAC.html#a77871a927ee67460b7bdcb8f204297bc',1,'IRToshibaAC::toCommonMode()'],['../classIRTranscoldAc.html#a4316d539b0a5270fab794fc7c3cef20a',1,'IRTranscoldAc::toCommonMode()'],['../classIRTrotecESP.html#a2b28b06bd25234427d90172b27d57092',1,'IRTrotecESP::toCommonMode()'],['../classIRTrumaAc.html#a7d07273e6fb55fd9ad0e328054e1bfd0',1,'IRTrumaAc::toCommonMode()'],['../classIRVestelAc.html#add602c0f052c8ada3b3b5748dda50a58',1,'IRVestelAc::toCommonMode()'],['../classIRVoltas.html#adcf63c5e8c0f2e88c103ee82cfd6a5a9',1,'IRVoltas::toCommonMode()'],['../classIRWhirlpoolAc.html#a748caa4e22f2f1f47e6334b1a031c4d8',1,'IRWhirlpoolAc::toCommonMode()']]], - ['tocommonswing_4640',['toCommonSwing',['../classIRTechnibelAc.html#ac379ff8f6f84fd93aa503269c36d6b49',1,'IRTechnibelAc']]], - ['tocommonswingh_4641',['toCommonSwingH',['../classIRDaikin2.html#a85bb152a4bdcc2798270ee58a3cfe2ae',1,'IRDaikin2::toCommonSwingH()'],['../classIRDaikin176.html#a6a3b66c9777992ed9fcab4e26c1d74dc',1,'IRDaikin176::toCommonSwingH()'],['../classIRHitachiAc344.html#a31562e32ccdf179032e75334b16279f0',1,'IRHitachiAc344::toCommonSwingH()'],['../classIRMitsubishiAC.html#ad7446e0a4ea8d349004c2b4224e69cd9',1,'IRMitsubishiAC::toCommonSwingH()'],['../classIRMitsubishi112.html#a17cfee6dc9ddc38465539ca46f29b263',1,'IRMitsubishi112::toCommonSwingH()'],['../classIRMitsubishiHeavy152Ac.html#afb9e039776c77e898928e9139a21a2b8',1,'IRMitsubishiHeavy152Ac::toCommonSwingH()'],['../classIRMitsubishiHeavy88Ac.html#aead69a01407729240055bd64e583b51b',1,'IRMitsubishiHeavy88Ac::toCommonSwingH()'],['../classIRPanasonicAc.html#aa4241990c350ca936c73b8391c2a11fc',1,'IRPanasonicAc::toCommonSwingH()']]], - ['tocommonswingv_4642',['toCommonSwingV',['../classIRDaikin2.html#a1f3e17757bd4beb0330d75ec3df9788b',1,'IRDaikin2::toCommonSwingV()'],['../classIRDaikin160.html#afae9b50e59c0efa46b96eef9f05a95b7',1,'IRDaikin160::toCommonSwingV()'],['../classIRGreeAC.html#a537d17801a90e22ad2baba7145b038cb',1,'IRGreeAC::toCommonSwingV()'],['../classIRHaierAC.html#aac354e2e4ad72d91667509398078b309',1,'IRHaierAC::toCommonSwingV()'],['../classIRHaierACYRW02.html#a0e426a3479fd80bb3816f016fac22f19',1,'IRHaierACYRW02::toCommonSwingV()'],['../classIRMitsubishiAC.html#a173e3c22f4173f235e7213e41925fdd9',1,'IRMitsubishiAC::toCommonSwingV()'],['../classIRMitsubishi136.html#aca5e6ac2d886083c8c56e2949f9d11e9',1,'IRMitsubishi136::toCommonSwingV()'],['../classIRMitsubishi112.html#a0e577d8554a090d7f2ac2a9ddd3bf15c',1,'IRMitsubishi112::toCommonSwingV()'],['../classIRMitsubishiHeavy152Ac.html#ae4dd9b8f0b5b4becb07618e859a09a51',1,'IRMitsubishiHeavy152Ac::toCommonSwingV()'],['../classIRMitsubishiHeavy88Ac.html#a0597303839e79c97b0fafe6c9ddbcf9a',1,'IRMitsubishiHeavy88Ac::toCommonSwingV()'],['../classIRPanasonicAc.html#adae801e0a2641c196a59d65c26404a13',1,'IRPanasonicAc::toCommonSwingV()'],['../classIRPanasonicAc32.html#a3118f4625c25c450a0dccf34568ea726',1,'IRPanasonicAc32::toCommonSwingV()'],['../classIRSanyoAc.html#a25f99385761bab4f7ae055b7dad9be3b',1,'IRSanyoAc::toCommonSwingV()']]], - ['togglerc5_4643',['toggleRC5',['../classIRsend.html#a42a78d4a3ef0f88b54bee488320344da',1,'IRsend']]], - ['togglerc6_4644',['toggleRC6',['../classIRsend.html#a5a0e8778394021ea12a8b8c2daf0add6',1,'IRsend']]], - ['toggleswinghoriz_4645',['toggleSwingHoriz',['../classIRFujitsuAC.html#aeba829bb9a9934ad9246a5ba4f4c03fc',1,'IRFujitsuAC']]], - ['toggleswingvert_4646',['toggleSwingVert',['../classIRFujitsuAC.html#a6dc9cc4bda83215fa97896c41b01e584',1,'IRFujitsuAC']]], - ['toshiba_4647',['toshiba',['../classIRac.html#a9bb89d95bd06eb04efb4999baee63725',1,'IRac']]], - ['tostring_4648',['toString',['../classIRAirwellAc.html#acbd6772f93e897308db4f606d1f56eac',1,'IRAirwellAc::toString()'],['../classIRAmcorAc.html#acf007ffc602b69ebbb7ed680e683fa25',1,'IRAmcorAc::toString()'],['../classIRArgoAC.html#ad8cbbda40a07a4300a68712e45dd4c2d',1,'IRArgoAC::toString()'],['../classIRCarrierAc64.html#a2807d30650f50653118dad5d10c52921',1,'IRCarrierAc64::toString()'],['../classIRCoolixAC.html#af4e833be17070157662c6fe01545b5f4',1,'IRCoolixAC::toString()'],['../classIRCoronaAc.html#a5ba0f7cd5d990a02bcdfe16ea95296ba',1,'IRCoronaAc::toString()'],['../classIRDaikinESP.html#aa167e4a9d3447c42f9fcbf185a7cd54c',1,'IRDaikinESP::toString()'],['../classIRDaikin2.html#ac714e4a88f2b129920a7813d3e1658b7',1,'IRDaikin2::toString()'],['../classIRDaikin216.html#ade381807ebfe6c1ac36ff256a28dca16',1,'IRDaikin216::toString()'],['../classIRDaikin160.html#a9608db210fb2df94e1889eced9a63f79',1,'IRDaikin160::toString()'],['../classIRDaikin176.html#a1f72e3a2d9cbb075956b5cbec4a41412',1,'IRDaikin176::toString()'],['../classIRDaikin128.html#ad93d8f524671a086732d7b727e46dc6c',1,'IRDaikin128::toString()'],['../classIRDaikin152.html#a138c4a4bb302490201b7628107ce20f3',1,'IRDaikin152::toString()'],['../classIRDaikin64.html#af156a0f84732988a8545f0161cb5599c',1,'IRDaikin64::toString()'],['../classIRDelonghiAc.html#a8b186047aab8735e2f33dd5bdc4b72c9',1,'IRDelonghiAc::toString()'],['../classIREcoclimAc.html#a2f82f6da12f5f7fa66e8c136df535aa9',1,'IREcoclimAc::toString()'],['../classIRElectraAc.html#af496feed11da67a84efd565b435c1d67',1,'IRElectraAc::toString()'],['../classIRFujitsuAC.html#a418e1c0ded978d80f85ec0fda813c8f3',1,'IRFujitsuAC::toString()'],['../classIRGoodweatherAc.html#a95b191495e9cf0c603b407d5e466661a',1,'IRGoodweatherAc::toString()'],['../classIRGreeAC.html#a1f18b275e0e3d10fbc952d1da9613074',1,'IRGreeAC::toString()'],['../classIRHaierAC.html#af52b438cc7c6b0600793a0eb3c8f6419',1,'IRHaierAC::toString()'],['../classIRHaierACYRW02.html#a306eae31da6256f46e0a3cb5c54711a3',1,'IRHaierACYRW02::toString()'],['../classIRHitachiAc.html#aa7a28c8cf15c06b01681feb17e8bb6fc',1,'IRHitachiAc::toString()'],['../classIRHitachiAc1.html#a20b176622eceed9b7f15091966d86f56',1,'IRHitachiAc1::toString()'],['../classIRHitachiAc424.html#a2fa426e756e6b94a480ddeba4bcde25c',1,'IRHitachiAc424::toString()'],['../classIRHitachiAc344.html#a62c4b681346bb8def0dacda3c92af4b1',1,'IRHitachiAc344::toString()'],['../classIRKelonAc.html#adac302ee5223d520789f5d800c0889cc',1,'IRKelonAc::toString()'],['../classIRKelvinatorAC.html#a6635961df47a9847ace3185598750616',1,'IRKelvinatorAC::toString()'],['../classIRLgAc.html#a4a8711f21c894afd2653835be5bcdd9f',1,'IRLgAc::toString()'],['../classIRMideaAC.html#a4980fbb52145e1d12a6fa5601f75018a',1,'IRMideaAC::toString()'],['../classIRMitsubishiAC.html#a2bc1502cc0c28b098d3fb74f3bc83654',1,'IRMitsubishiAC::toString()'],['../classIRMitsubishi136.html#a9b8f30de94d7903ed73e19d55a93ab95',1,'IRMitsubishi136::toString()'],['../classIRMitsubishi112.html#a0a82daa2e90f9080da1a1bce2af95ca7',1,'IRMitsubishi112::toString()'],['../classIRMitsubishiHeavy152Ac.html#a76ae555f0d30b8cf87b4625c14301b44',1,'IRMitsubishiHeavy152Ac::toString()'],['../classIRMitsubishiHeavy88Ac.html#a9647e2c511ba34dbfdc0e4956953691f',1,'IRMitsubishiHeavy88Ac::toString()'],['../classIRNeoclimaAc.html#a5f285a0eb02b57ae0f8dc6d29e7aba83',1,'IRNeoclimaAc::toString()'],['../classIRPanasonicAc.html#ada0b3e2bf11123d0a2f5df8692ae73ad',1,'IRPanasonicAc::toString()'],['../classIRPanasonicAc32.html#a4aee4f688769c04453ac275ffdb1a94c',1,'IRPanasonicAc32::toString()'],['../classIRSamsungAc.html#a9e1b126cbbd3a90e275e632aaa8fd506',1,'IRSamsungAc::toString()'],['../classIRSanyoAc.html#aec5e4f0371da52f752919f510ee1d106',1,'IRSanyoAc::toString()'],['../classIRSharpAc.html#a995b6d988725b60a02dbcf1e0b5b9e5f',1,'IRSharpAc::toString()'],['../classIRTcl112Ac.html#af9bed8c8ef7e25e624f1f4765722acc5',1,'IRTcl112Ac::toString()'],['../classIRTechnibelAc.html#aa7b74876e99ee837f789640403b9c952',1,'IRTechnibelAc::toString()'],['../classIRTecoAc.html#a9fe1e8da3cc963d5d55a4967fe83dcce',1,'IRTecoAc::toString()'],['../classIRToshibaAC.html#a2d83a10c921398a1b32888c68bb4a35d',1,'IRToshibaAC::toString()'],['../classIRTranscoldAc.html#a8be351a7df54e6606eeebc8630ee4029',1,'IRTranscoldAc::toString()'],['../classIRTrotecESP.html#a0c7c6f4b33efcea9332d464908d7c87f',1,'IRTrotecESP::toString()'],['../classIRTrumaAc.html#a0250f4a833b4ec583d28e85dd5ec6f7a',1,'IRTrumaAc::toString()'],['../classIRVestelAc.html#ab13d9ddf1d487acb12a4d8e3cee72b1b',1,'IRVestelAc::toString()'],['../classIRVoltas.html#af650633516b67861f6f074f3be943bbd',1,'IRVoltas::toString()'],['../classIRWhirlpoolAc.html#a26912db41a4e5afa2b3ad2bf537b9170',1,'IRWhirlpoolAc::toString()']]], - ['transcold_4649',['transcold',['../classIRac.html#a788f29495e5ac706bdb4f4efabcb26d0',1,'IRac']]], - ['trotec_4650',['trotec',['../classIRac.html#aed1a012c0546c2b1d53e86871a42ba1a',1,'IRac']]], - ['truma_4651',['truma',['../classIRac.html#ab4cffb706bed9926b5eb600eba083482',1,'IRac']]], - ['typetostring_4652',['typeToString',['../IRutils_8cpp.html#a9e98a1b929f36dfa75c2e325bf281cd1',1,'typeToString(const decode_type_t protocol, const bool isRepeat): IRutils.cpp'],['../IRutils_8h.html#a7f49135f3d160700eb12ff6b7309341c',1,'typeToString(const decode_type_t protocol, const bool isRepeat=false): IRutils.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.html deleted file mode 100644 index f1fc553fe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.js deleted file mode 100644 index c8012ec9c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_13.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['uint64tostring_4653',['uint64ToString',['../IRutils_8cpp.html#a9f6ddef74b41ef6f8d2805fcfc396420',1,'uint64ToString(uint64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a781650451d38303e80da677539f574ee',1,'uint64ToString(uint64_t input, uint8_t base=10): IRutils.cpp']]], - ['uint8tobcd_4654',['uint8ToBcd',['../namespaceirutils.html#a534704a52b75acd46f687cc0a2b91bf1',1,'irutils']]], - ['updateandsavestate_4655',['updateAndSaveState',['../classIRCoolixAC.html#a2681a6affc5fb542584b1ef241bc38af',1,'IRCoolixAC']]], - ['updatechecksums_4656',['updateChecksums',['../namespaceIRXmpUtils.html#a0ada8200316c402f268dd621a3b0695a',1,'IRXmpUtils']]], - ['updateuselongorshort_4657',['updateUseLongOrShort',['../classIRFujitsuAC.html#a0c2aed356899787b8cd51b76b59e01bb',1,'IRFujitsuAC']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.html deleted file mode 100644 index 0302cd989..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.js deleted file mode 100644 index 765b2854d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_14.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['validchecksum_4658',['validChecksum',['../classIRAmcorAc.html#a1ad297a62ac3152c9d957cef38757d28',1,'IRAmcorAc::validChecksum()'],['../classIRArgoAC.html#acfa5a9df8273123e6f4c48684ef60006',1,'IRArgoAC::validChecksum()'],['../classIRCarrierAc64.html#affa23f178e079cd3a6c933240759fe80',1,'IRCarrierAc64::validChecksum()'],['../classIRDaikinESP.html#ad766e60827f80b96a66449bddc621d87',1,'IRDaikinESP::validChecksum()'],['../classIRDaikin2.html#ade5c0dbfe38d9ac0c4bc009c897af04d',1,'IRDaikin2::validChecksum()'],['../classIRDaikin216.html#a663c11977545ba01b34715a61a26ab88',1,'IRDaikin216::validChecksum()'],['../classIRDaikin160.html#a0d9f3af404e3b6c116e8c27e938f8479',1,'IRDaikin160::validChecksum()'],['../classIRDaikin176.html#abc97abc68f535f7ad801b393e0a795d5',1,'IRDaikin176::validChecksum()'],['../classIRDaikin128.html#ad0b16e48bff00c5cdeffa1419c003946',1,'IRDaikin128::validChecksum()'],['../classIRDaikin152.html#ade1c641eecea63857115fc20f1811fe7',1,'IRDaikin152::validChecksum()'],['../classIRDaikin64.html#ab04287881112ff21d1ea541c0f21b507',1,'IRDaikin64::validChecksum()'],['../classIRDelonghiAc.html#ae39b20bcea2b7090ac2e29d8cd28e5f6',1,'IRDelonghiAc::validChecksum()'],['../classIRElectraAc.html#a60034a18e7574844fb59a03e7789f419',1,'IRElectraAc::validChecksum()'],['../classIRFujitsuAC.html#a26153c647d127356e47d35a7456c6235',1,'IRFujitsuAC::validChecksum()'],['../classIRGreeAC.html#a74e7df0634f0a60110db8c033d9d5b1d',1,'IRGreeAC::validChecksum()'],['../classIRHaierAC.html#ad7aae554b8f0a76493efc2a43ac0f780',1,'IRHaierAC::validChecksum()'],['../classIRHaierACYRW02.html#a3f6d071d215b0316cccc2e94c4786954',1,'IRHaierACYRW02::validChecksum()'],['../classIRHitachiAc.html#a2549c1fd2e8a603eb8924fbba8b26e87',1,'IRHitachiAc::validChecksum()'],['../classIRHitachiAc1.html#aa6b7ab76567ee15aa08b1594c67bd29d',1,'IRHitachiAc1::validChecksum()'],['../classIRKelvinatorAC.html#aaa915fa5eb3f7e5c7a3dc143b6fda826',1,'IRKelvinatorAC::validChecksum()'],['../classIRLgAc.html#a51748fa24de24049a2fafb4590e84176',1,'IRLgAc::validChecksum()'],['../classIRMideaAC.html#a971ab4af0267bb732834e7e1f7b8e354',1,'IRMideaAC::validChecksum()'],['../classIRMitsubishiAC.html#ad74885e17434aa9038dc19ad74de4cd0',1,'IRMitsubishiAC::validChecksum()'],['../classIRMitsubishi136.html#a666d1268a93e96b50ac9012c09320de9',1,'IRMitsubishi136::validChecksum()'],['../classIRMitsubishiHeavy152Ac.html#abef94200719da0c14e211315ffc8bede',1,'IRMitsubishiHeavy152Ac::validChecksum()'],['../classIRMitsubishiHeavy88Ac.html#aabd9d8f81108f20f1d7adff3ac6c2fd4',1,'IRMitsubishiHeavy88Ac::validChecksum()'],['../classIRNeoclimaAc.html#a32e4b4444e0a97b6da4447e977f74f94',1,'IRNeoclimaAc::validChecksum()'],['../classIRPanasonicAc.html#a6a084754596f7840dd308041d11a822d',1,'IRPanasonicAc::validChecksum()'],['../classIRSamsungAc.html#a4f7339bce78ce2b656fc597b4c88db22',1,'IRSamsungAc::validChecksum()'],['../classIRSanyoAc.html#a77844e855a875ff0f5dc79200a3d2777',1,'IRSanyoAc::validChecksum()'],['../classIRSharpAc.html#acb7fb0ac19e09da02d36cb73c808420d',1,'IRSharpAc::validChecksum()'],['../classIRTcl112Ac.html#a204bc37ffadf72ed31b305197c4803f4',1,'IRTcl112Ac::validChecksum()'],['../classIRTechnibelAc.html#ac0bc7bfe24f72255230c8a4c1c7eb192',1,'IRTechnibelAc::validChecksum()'],['../classIRToshibaAC.html#adc7c1eee14e4de896121ad06e88b61eb',1,'IRToshibaAC::validChecksum()'],['../classIRTrotecESP.html#ae08748e33ed12c536b18f6d0dc4da1c7',1,'IRTrotecESP::validChecksum()'],['../classIRTrumaAc.html#abd89085aeaa1847e37e14c01ac874c69',1,'IRTrumaAc::validChecksum()'],['../classIRVestelAc.html#ad3bcc08fb4242af7dcc65e534816a219',1,'IRVestelAc::validChecksum()'],['../classIRVoltas.html#a020336b6c8fd363d50ca44ba2b78181d',1,'IRVoltas::validChecksum()'],['../classIRWhirlpoolAc.html#a2d891069ebdecc62b03e8c92befa15c6',1,'IRWhirlpoolAc::validChecksum()']]], - ['validsection_4659',['validSection',['../classIRCoronaAc.html#af36894d88e7fb45affc883ba0b077862',1,'IRCoronaAc']]], - ['vestel_4660',['vestel',['../classIRac.html#a9b1cd1a4d44bc56e62128b9dbc178bba',1,'IRac']]], - ['voltas_4661',['voltas',['../classIRac.html#aab4cf3b1872a94835cf1c885b767adb6',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.html deleted file mode 100644 index 18cf76b24..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.js deleted file mode 100644 index 28d2d3f7a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_15.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['whirlpool_4662',['whirlpool',['../classIRac.html#ae5f7a03589f614c03c5ad8629100b05a',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.html deleted file mode 100644 index 9182391d2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.js deleted file mode 100644 index 6bd556214..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_16.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xorbytes_4663',['xorBytes',['../IRutils_8cpp.html#aaa2a3fb714375e61051a0b24623b9cc9',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init): IRutils.cpp'],['../IRutils_8h.html#ab030689a93499311ee8e6621ac8757aa',1,'xorBytes(const uint8_t *const start, const uint16_t length, const uint8_t init=0): IRutils.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.html deleted file mode 100644 index 807950604..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.js deleted file mode 100644 index 96e14f5e3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_7eirrecv_4664',['~IRrecv',['../classIRrecv.html#a87d4cca5e350177cb0922842dda1eb5b',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.html deleted file mode 100644 index 2737c5ac1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.js deleted file mode 100644 index 280979772..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['bcdtouint8_3945',['bcdToUint8',['../namespaceirutils.html#af18c4abfd0ed9f4b3a099ecec1999ee7',1,'irutils']]], - ['begin_3946',['begin',['../classIRAirwellAc.html#a09a142457af5e012405da80ddaef1dc0',1,'IRAirwellAc::begin()'],['../classIRAmcorAc.html#aa723533eea981f79844f241d5bb84654',1,'IRAmcorAc::begin()'],['../classIRArgoAC.html#aca61a63c37797699540c180354809bd8',1,'IRArgoAC::begin()'],['../classIRCarrierAc64.html#a7d9800edffad8a529971535ada5c00ad',1,'IRCarrierAc64::begin()'],['../classIRCoolixAC.html#a089744bd3bfd65253cd507192afc5311',1,'IRCoolixAC::begin()'],['../classIRCoronaAc.html#a7db1a8eb9c3c7f76091b2707458e54a9',1,'IRCoronaAc::begin()'],['../classIRDaikinESP.html#accd087c48f246a71898cc6fd7afc2cc7',1,'IRDaikinESP::begin()'],['../classIRDaikin2.html#a0fc6c2ca326a1f3b3e4e2b87643d044b',1,'IRDaikin2::begin()'],['../classIRDaikin216.html#ab78433160895dd26cabf4fd2c4b7515d',1,'IRDaikin216::begin()'],['../classIRDaikin160.html#a653727b34a1e50bef14ef0033a4f013a',1,'IRDaikin160::begin()'],['../classIRDaikin176.html#a0e41b220033f16e57664f8d59b6e890b',1,'IRDaikin176::begin()'],['../classIRDaikin128.html#ac1687817fe17f87e0962eb07be81c84d',1,'IRDaikin128::begin()'],['../classIRDaikin152.html#a06039da8e295b6cc785489989c2b012d',1,'IRDaikin152::begin()'],['../classIRDaikin64.html#a9af2d9d594db9114397fb87d19bbb459',1,'IRDaikin64::begin()'],['../classIRDelonghiAc.html#af3e6d5f445b5968fc69792a1c06f6d5b',1,'IRDelonghiAc::begin()'],['../classIREcoclimAc.html#a828ba8b5663d3ceabe8529d4ece87400',1,'IREcoclimAc::begin()'],['../classIRElectraAc.html#afff519ff9e81ec4aa03ff337f8efef13',1,'IRElectraAc::begin()'],['../classIRFujitsuAC.html#af0dc3fffdafae5970bc367f31029464b',1,'IRFujitsuAC::begin()'],['../classIRGoodweatherAc.html#abace3c8b25d4737a83fe33f94fc741d9',1,'IRGoodweatherAc::begin()'],['../classIRGreeAC.html#a44cf8f0e09248741094af4b35321ab1c',1,'IRGreeAC::begin()'],['../classIRHaierAC.html#ab92fd48ccb5707cb6d14e9d46ce42e17',1,'IRHaierAC::begin()'],['../classIRHaierACYRW02.html#addc01e60e8c4045fab6f22c852eb620f',1,'IRHaierACYRW02::begin()'],['../classIRHitachiAc.html#a62817c840f352bb01a394c37fc95f0f0',1,'IRHitachiAc::begin()'],['../classIRHitachiAc1.html#a28d5d351003d3e0bc1506b06cac8b3d6',1,'IRHitachiAc1::begin()'],['../classIRHitachiAc424.html#a11866bba49e9b976eb22b1039787ecae',1,'IRHitachiAc424::begin()'],['../classIRHitachiAc3.html#a6d79ac7b8ce977e8059019349d6991a7',1,'IRHitachiAc3::begin()'],['../classIRKelonAc.html#a038287955eb4d2a0fa6d149d43865fcc',1,'IRKelonAc::begin()'],['../classIRKelvinatorAC.html#a4591bf4e8131aa2a228cbc611156e7f4',1,'IRKelvinatorAC::begin()'],['../classIRLgAc.html#ac08ada1c67ace5ee2ebe4d325aa8c25d',1,'IRLgAc::begin()'],['../classIRMideaAC.html#ac36b6aa76b6b98ab186cd1d5ad9246b4',1,'IRMideaAC::begin()'],['../classIRMitsubishiAC.html#aa6e58080fd811f5b6d0f90c4ef5917df',1,'IRMitsubishiAC::begin()'],['../classIRMitsubishi136.html#abbcd8307862beee2899d2b9900537520',1,'IRMitsubishi136::begin()'],['../classIRMitsubishi112.html#a1d00958556872286b1818d0dbf02e112',1,'IRMitsubishi112::begin()'],['../classIRMitsubishiHeavy152Ac.html#afd649a53d9f7d9b31b7a5732d6cd0857',1,'IRMitsubishiHeavy152Ac::begin()'],['../classIRMitsubishiHeavy88Ac.html#a9bcf18c942ad4df4856bd319215a2002',1,'IRMitsubishiHeavy88Ac::begin()'],['../classIRNeoclimaAc.html#a8f82159b94d86cc4e3d4719441bfa96e',1,'IRNeoclimaAc::begin()'],['../classIRPanasonicAc.html#af48075dc4eb84fcc7f718375d4b0e00a',1,'IRPanasonicAc::begin()'],['../classIRPanasonicAc32.html#a8f57fefe38eac51f49113a21defadc4c',1,'IRPanasonicAc32::begin()'],['../classIRSamsungAc.html#a89f1f902042cd6c6ba9d0f0c6d2cc581',1,'IRSamsungAc::begin()'],['../classIRSanyoAc.html#af4859c4049a35b7f82cf91d326c9a957',1,'IRSanyoAc::begin()'],['../classIRSharpAc.html#ab87e5b599b7e8fc387fff25b5e13e34f',1,'IRSharpAc::begin()'],['../classIRTcl112Ac.html#a5b9983ab4027951679f0dc31b33cbadf',1,'IRTcl112Ac::begin()'],['../classIRTechnibelAc.html#a094f2f3b3690ddd773a175bacd99f894',1,'IRTechnibelAc::begin()'],['../classIRTecoAc.html#a3b23a8556686c83b146101fc31b0dff3',1,'IRTecoAc::begin()'],['../classIRToshibaAC.html#a41e847f399e42c91b0f4aa2ef5d36cba',1,'IRToshibaAC::begin()'],['../classIRTranscoldAc.html#ad3daf2c7108712b6e54eba9c68071910',1,'IRTranscoldAc::begin()'],['../classIRTrotecESP.html#a093b874287adb8ef2cc60c832765ff58',1,'IRTrotecESP::begin()'],['../classIRTrumaAc.html#a46d8ace3fd0d30f07c35b52c4d9ff71a',1,'IRTrumaAc::begin()'],['../classIRVestelAc.html#a794808d49eb6ce1521ff800b2b15a580',1,'IRVestelAc::begin()'],['../classIRVoltas.html#a1b895fa945ce8c6f81444d9306a59d65',1,'IRVoltas::begin()'],['../classIRWhirlpoolAc.html#a21db8b31504d416efb2511a33bdc2209',1,'IRWhirlpoolAc::begin()'],['../classIRsend.html#a386f026bf739b0718efde4cffa6ce129',1,'IRsend::begin()']]], - ['booltostring_3947',['boolToString',['../classIRac.html#a9bbd9e6b72e82a752df56e8c489668cf',1,'IRac']]], - ['buildfromstate_3948',['buildFromState',['../classIRFujitsuAC.html#a6fc8d7d0f649185e0858974394636a8d',1,'IRFujitsuAC']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.html deleted file mode 100644 index 6da86e7da..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.js deleted file mode 100644 index c68f27cee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_3.js +++ /dev/null @@ -1,38 +0,0 @@ -var searchData= -[ - ['calcblockchecksum_3949',['calcBlockChecksum',['../classIRKelvinatorAC.html#a22f561397c526ed6cc3f69a5d527d8d6',1,'IRKelvinatorAC']]], - ['calcchecksum_3950',['calcChecksum',['../classIRAmcorAc.html#aec764cf4d88bb3fcbe3f36d24780f6a9',1,'IRAmcorAc::calcChecksum()'],['../classIRArgoAC.html#acab2fe3b9f77f57f0e99da0bec0d7392',1,'IRArgoAC::calcChecksum()'],['../classIRCarrierAc64.html#a20676dcf4b0a6510cc3bce282fbf8504',1,'IRCarrierAc64::calcChecksum()'],['../classIRDaikin64.html#ac29c18fde1b0cd98991e68c0f672d0e9',1,'IRDaikin64::calcChecksum()'],['../classIRDelonghiAc.html#a14d7629bb888deb02e83886191f44c2d',1,'IRDelonghiAc::calcChecksum()'],['../classIRElectraAc.html#aa8063d07e41ca2cc0fd27093a2e67bb2',1,'IRElectraAc::calcChecksum()'],['../classIRHitachiAc.html#a6e5da77c12ad105439eb159b6a58104a',1,'IRHitachiAc::calcChecksum()'],['../classIRHitachiAc1.html#a6995513d5b59cd7b14cfff39c8843e8d',1,'IRHitachiAc1::calcChecksum()'],['../classIRLgAc.html#a96024e736cf87e65b4e2db7c4c269520',1,'IRLgAc::calcChecksum()'],['../classIRMideaAC.html#ac8733348b311ecf8eed87021cdf4ee31',1,'IRMideaAC::calcChecksum()'],['../classIRNeoclimaAc.html#ac75f316cd1813cdb4e8a6d45d10ddd57',1,'IRNeoclimaAc::calcChecksum()'],['../classIRPanasonicAc.html#a0e38b0f3c54e49cdb59f92279e19840f',1,'IRPanasonicAc::calcChecksum()'],['../classIRSamsungAc.html#a00f9b2a1480d2ed45bdea5d236c77d0f',1,'IRSamsungAc::calcChecksum()'],['../classIRSanyoAc.html#a7836c947d6d725d6c55ae2ca9e8b445d',1,'IRSanyoAc::calcChecksum()'],['../classIRSharpAc.html#af3655c9c394b1391572e8ffab70881ff',1,'IRSharpAc::calcChecksum()'],['../classIRTcl112Ac.html#a0973a1c8a53661ee7720ecb5d08e6dcc',1,'IRTcl112Ac::calcChecksum()'],['../classIRTechnibelAc.html#a1762ef4003cec898543cebe0957e2c8b',1,'IRTechnibelAc::calcChecksum()'],['../classIRToshibaAC.html#a0d91d32d0d9d722f750eb423d88509f4',1,'IRToshibaAC::calcChecksum()'],['../classIRTrotecESP.html#ac1fdbcbbb8dd1ca50ccf2b55c7281c89',1,'IRTrotecESP::calcChecksum()'],['../classIRTrumaAc.html#a88f8ba515492d3d217f6476e0f386f1e',1,'IRTrumaAc::calcChecksum()'],['../classIRVestelAc.html#ac0ba3de4de70350c5325b3d5e0b39e58',1,'IRVestelAc::calcChecksum()'],['../classIRVoltas.html#a0069131bedc4b97a61547abe9640fd09',1,'IRVoltas::calcChecksum()']]], - ['calcfirstchecksum_3951',['calcFirstChecksum',['../classIRDaikin128.html#a25b25f6b73bb5f1fd17a16080179d4bc',1,'IRDaikin128']]], - ['calcrepeatoffset_3952',['calcRepeatOffset',['../namespaceIRXmpUtils.html#adbf7d8c8f73c5c9beca3094871d6a7c2',1,'IRXmpUtils']]], - ['calcsecondchecksum_3953',['calcSecondChecksum',['../classIRDaikin128.html#aea8da64300afe0d62ddf3082a72251f2',1,'IRDaikin128']]], - ['calcsectionchecksum_3954',['calcSectionChecksum',['../namespaceIRXmpUtils.html#a170c46b9aa59d1717fdff6f932353dca',1,'IRXmpUtils']]], - ['calculatechecksum_3955',['calculateChecksum',['../classIRMitsubishiAC.html#aaadefc5880dcd48e3fb2f12b59101f71',1,'IRMitsubishiAC']]], - ['calcusecperiod_3956',['calcUSecPeriod',['../classIRsend.html#ae9e68c0ed22e27c8f7ff82cec7ca3e33',1,'IRsend']]], - ['calibrate_3957',['calibrate',['../classIRAirwellAc.html#ae7a80cbb217d35835961477caaea3218',1,'IRAirwellAc::calibrate()'],['../classIRAmcorAc.html#a6206e866e859bc4690cb014c49c1ff80',1,'IRAmcorAc::calibrate()'],['../classIRArgoAC.html#a63cd2f350a7f249c020439543ef3c6d5',1,'IRArgoAC::calibrate()'],['../classIRCarrierAc64.html#a0718376156750e66f98ea0549c75b21b',1,'IRCarrierAc64::calibrate()'],['../classIRCoolixAC.html#a9e39ce5050888210d6ba9b79ae3763e3',1,'IRCoolixAC::calibrate()'],['../classIRCoronaAc.html#a5b10141e4a6e3d8511fb7f9f46d00a96',1,'IRCoronaAc::calibrate()'],['../classIRDaikinESP.html#a638a49f49275a2ab0affb09088794e1b',1,'IRDaikinESP::calibrate()'],['../classIRDaikin2.html#a96c62125bddf113c6524960062d05a57',1,'IRDaikin2::calibrate()'],['../classIRDaikin216.html#a49d7501966528c0a690cfb505f163e26',1,'IRDaikin216::calibrate()'],['../classIRDaikin160.html#a608b5556f316c31e3a8aa73684e4e10d',1,'IRDaikin160::calibrate()'],['../classIRDaikin176.html#a1f5989110782c18aa18e3757c50f4a31',1,'IRDaikin176::calibrate()'],['../classIRDaikin128.html#a281396f4c632899648694e3139c3acd0',1,'IRDaikin128::calibrate()'],['../classIRDaikin152.html#a82fa8bfb3384ed09473345b6e194c3ba',1,'IRDaikin152::calibrate()'],['../classIRDaikin64.html#a12a1e21ba1b06f9b3ffac56691ff2206',1,'IRDaikin64::calibrate()'],['../classIRDelonghiAc.html#aab8f78adcd7fcbea0be753a4fc7696e0',1,'IRDelonghiAc::calibrate()'],['../classIREcoclimAc.html#a20a2b503f5125a90c4ab183dfe92446b',1,'IREcoclimAc::calibrate()'],['../classIRElectraAc.html#af333e90117ab035ff92389d4eefb3649',1,'IRElectraAc::calibrate()'],['../classIRFujitsuAC.html#a8bb6d8456561dfb04ccac95e0e489558',1,'IRFujitsuAC::calibrate()'],['../classIRGoodweatherAc.html#a8a747144587cf38d64bb32a7f86432b3',1,'IRGoodweatherAc::calibrate()'],['../classIRGreeAC.html#a8069d00a16ed04fd6fa10d84b364bca7',1,'IRGreeAC::calibrate()'],['../classIRHaierAC.html#a448b1d5db05f7722db4758e968ea3171',1,'IRHaierAC::calibrate()'],['../classIRHaierACYRW02.html#a2081b29d0526e339a6b94fc41c854197',1,'IRHaierACYRW02::calibrate()'],['../classIRHitachiAc.html#aaabd743da491ef5d73c4b8c46f11241a',1,'IRHitachiAc::calibrate()'],['../classIRHitachiAc1.html#a847a26df2e19668b147cba2eef595a21',1,'IRHitachiAc1::calibrate()'],['../classIRHitachiAc424.html#aae5e5c13767f335331c5fab8d8ba55d6',1,'IRHitachiAc424::calibrate()'],['../classIRHitachiAc3.html#a02e065c08f9ec4a3d9e6f71432087595',1,'IRHitachiAc3::calibrate()'],['../classIRKelonAc.html#abc971aa5df1cb04d804b1b0eab5282a2',1,'IRKelonAc::calibrate()'],['../classIRKelvinatorAC.html#aee8863c1678b09432618bb4ca734db95',1,'IRKelvinatorAC::calibrate()'],['../classIRLgAc.html#a4fd11e935c781319b29f606f2f4b2570',1,'IRLgAc::calibrate()'],['../classIRMideaAC.html#a4077604c2af56783f95a0a64eda7148b',1,'IRMideaAC::calibrate()'],['../classIRMitsubishiAC.html#a973c876e34942776ac98f27de96c5228',1,'IRMitsubishiAC::calibrate()'],['../classIRMitsubishi136.html#a76133542efc3763cb7edc9809ad8d93c',1,'IRMitsubishi136::calibrate()'],['../classIRMitsubishi112.html#ad148250070a3f4ac57ed6cb957ffdefb',1,'IRMitsubishi112::calibrate()'],['../classIRMitsubishiHeavy152Ac.html#a5d4c4ce0e69ed33a2f1db2af127c13c5',1,'IRMitsubishiHeavy152Ac::calibrate()'],['../classIRMitsubishiHeavy88Ac.html#a027423ffbee92ef65b02423f7cbaeca8',1,'IRMitsubishiHeavy88Ac::calibrate()'],['../classIRNeoclimaAc.html#a636dd97ca22c847f966eca8112c8eede',1,'IRNeoclimaAc::calibrate()'],['../classIRPanasonicAc.html#a3f850333f2aa7ce40856c99ef85ffd79',1,'IRPanasonicAc::calibrate()'],['../classIRPanasonicAc32.html#a99218b5c80a3cedda986df9bfbcf5065',1,'IRPanasonicAc32::calibrate()'],['../classIRSamsungAc.html#a5cc7486ae41f61cbe0bb053dd7c9e9e3',1,'IRSamsungAc::calibrate()'],['../classIRSanyoAc.html#a603f8f7dcfa1c3707a64ee092c72cb09',1,'IRSanyoAc::calibrate()'],['../classIRSharpAc.html#ac37b1a5679ce90e84f6f95c5df1526bb',1,'IRSharpAc::calibrate()'],['../classIRTcl112Ac.html#a435744e4c6ef31b362d15523ce0584f5',1,'IRTcl112Ac::calibrate()'],['../classIRTechnibelAc.html#a137e375497c699b0e7bfd8a7d46f087c',1,'IRTechnibelAc::calibrate()'],['../classIRTecoAc.html#ad700578cbae74857483372597a399ff3',1,'IRTecoAc::calibrate()'],['../classIRToshibaAC.html#a74c66bba288cb3cbb43008edb7b376bf',1,'IRToshibaAC::calibrate()'],['../classIRTranscoldAc.html#ae91dbd4a94ff4cd648c283b9f18bc149',1,'IRTranscoldAc::calibrate()'],['../classIRTrotecESP.html#a56de318a27011e0bddb40738c18dbcf2',1,'IRTrotecESP::calibrate()'],['../classIRTrumaAc.html#a6596a2fd4644358a6f122db2a94447e7',1,'IRTrumaAc::calibrate()'],['../classIRVestelAc.html#aae91667d96d86de824a20c256c311f15',1,'IRVestelAc::calibrate()'],['../classIRVoltas.html#ac264033a983290d9c194fde822ed63a4',1,'IRVoltas::calibrate()'],['../classIRWhirlpoolAc.html#a006c59c1c84c62fccd3730bec30ef5e8',1,'IRWhirlpoolAc::calibrate()'],['../classIRsend.html#ad1776aa6c699f9eeca1eef9bb4fe355b',1,'IRsend::calibrate()']]], - ['cancelofftimer_3958',['cancelOffTimer',['../classIRPanasonicAc.html#a6d202284320c59205cb0d02cb613cada',1,'IRPanasonicAc']]], - ['cancelontimer_3959',['cancelOnTimer',['../classIRPanasonicAc.html#a102e7c029a923e121e40326859f2e4a3',1,'IRPanasonicAc']]], - ['canceltimers_3960',['cancelTimers',['../classIRHaierAC.html#a1cccc733f74232751f95c32e47795638',1,'IRHaierAC']]], - ['carrier64_3961',['carrier64',['../classIRac.html#a8090f2d79a31b81a0342b2e9efb9d555',1,'IRac']]], - ['celsiustofahrenheit_3962',['celsiusToFahrenheit',['../IRutils_8cpp.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp'],['../IRutils_8h.html#a19b940e26a4f8ddcaf86cce1ec62d563',1,'celsiusToFahrenheit(const float deg): IRutils.cpp']]], - ['checkinvertedbytepairs_3963',['checkInvertedBytePairs',['../namespaceirutils.html#ab27a18cec663509b4d0df094575c2f64',1,'irutils']]], - ['checksum_3964',['checkSum',['../classIRFujitsuAC.html#ad89b20a62f08acb326d7f6613b815eaf',1,'IRFujitsuAC::checkSum()'],['../classIRAmcorAc.html#a67244a75731be6a3bd96ecc0384d0113',1,'IRAmcorAc::checksum()'],['../classIRArgoAC.html#ab0fe4e42d1c1201a92f5c4738b869763',1,'IRArgoAC::checksum()'],['../classIRCarrierAc64.html#a005fab56acf94fe97db7fa92651b2882',1,'IRCarrierAc64::checksum()'],['../classIRCoronaAc.html#ae0257fdafacf7fd2e7ac6ca3f8ae3168',1,'IRCoronaAc::checksum()'],['../classIRDaikinESP.html#ac8ac2a0674dc5cfaf514d319b51b20ab',1,'IRDaikinESP::checksum()'],['../classIRDaikin2.html#a0d418ae9490b2a24d680998209e5c7ea',1,'IRDaikin2::checksum()'],['../classIRDaikin216.html#ae9d7d1ed13a6f32e5a30975f72554fba',1,'IRDaikin216::checksum()'],['../classIRDaikin160.html#aac3b34aeae49f5179aa3f06fad28925d',1,'IRDaikin160::checksum()'],['../classIRDaikin176.html#a155e0dc2c7fcc334fffdef64c31c33fd',1,'IRDaikin176::checksum()'],['../classIRDaikin128.html#a747c906808c269581de6cf9b02e5c0a7',1,'IRDaikin128::checksum()'],['../classIRDaikin152.html#a2e39f879606a7b2c72869f3c9537cb07',1,'IRDaikin152::checksum()'],['../classIRDaikin64.html#a796e6a58cbb6f1920349db019952f355',1,'IRDaikin64::checksum()'],['../classIRDelonghiAc.html#ae4c4e7140a763eee159991f5c8afc54f',1,'IRDelonghiAc::checksum()'],['../classIRElectraAc.html#a73dc5b9a038669cc1f00f5b64ad458d1',1,'IRElectraAc::checksum()'],['../classIRGreeAC.html#aaa6b2702d79a7a3db454b99d71064679',1,'IRGreeAC::checksum()'],['../classIRHaierAC.html#ab7faae274ff7f30bf7df3c58d6e7e210',1,'IRHaierAC::checksum()'],['../classIRHaierACYRW02.html#a18045defdd5641ae13c7c75dda0cf23a',1,'IRHaierACYRW02::checksum()'],['../classIRHitachiAc.html#a3b65ccbd6de6b5dcb5a794b471e363f5',1,'IRHitachiAc::checksum()'],['../classIRHitachiAc1.html#aa6687d6282b134d508d6534e8446b341',1,'IRHitachiAc1::checksum()'],['../classIRKelvinatorAC.html#aad752fda68767a47d77ae4e1eeb550f7',1,'IRKelvinatorAC::checksum()'],['../classIRLgAc.html#a438cbbb77668205c3f2b59b8f28585cd',1,'IRLgAc::checksum()'],['../classIRMideaAC.html#a418b7cbb4b388dba732176d891bb499d',1,'IRMideaAC::checksum()'],['../classIRMitsubishiAC.html#a7c5b1e5c53d99f1564d8a0424f626adb',1,'IRMitsubishiAC::checksum()'],['../classIRMitsubishi136.html#aa2c6fe9b28462052cf6627960126a783',1,'IRMitsubishi136::checksum()'],['../classIRMitsubishi112.html#a65ee232bfc09d05724b8ec5ada538ccf',1,'IRMitsubishi112::checksum()'],['../classIRMitsubishiHeavy152Ac.html#a14cdcaeefef283f707d0fae5108d65f4',1,'IRMitsubishiHeavy152Ac::checksum()'],['../classIRMitsubishiHeavy88Ac.html#acb03ef0da10d3fec14c71bfa087a02b8',1,'IRMitsubishiHeavy88Ac::checksum()'],['../classIRNeoclimaAc.html#acba18ea35a59f6f1ccbcfd75e7979feb',1,'IRNeoclimaAc::checksum()'],['../classIRSamsungAc.html#a75c5886916dd3ef3aa6f96f04934048d',1,'IRSamsungAc::checksum()'],['../classIRSanyoAc.html#abeb47f286c0228d5694a0b8218a29408',1,'IRSanyoAc::checksum()'],['../classIRSharpAc.html#ad87f46ad9220213d77022dc34920d802',1,'IRSharpAc::checksum()'],['../classIRTcl112Ac.html#a2486f46c7db6a3dfbe3af9c842ff37fa',1,'IRTcl112Ac::checksum()'],['../classIRTechnibelAc.html#af93f984eacd2820cad58400a85b0f05b',1,'IRTechnibelAc::checksum()'],['../classIRToshibaAC.html#a5aa2c6fc3b07830f872f98906df7e9ec',1,'IRToshibaAC::checksum()'],['../classIRTrotecESP.html#a5e416e083653ab365f65b3f645f60e8c',1,'IRTrotecESP::checksum()'],['../classIRTrumaAc.html#a5bdb72773b8b2583754227d4f22e4573',1,'IRTrumaAc::checksum()'],['../classIRVestelAc.html#a7a9046e7b5ff57864862bf5f7ad23c4d',1,'IRVestelAc::checksum()'],['../classIRVoltas.html#acd7b669c0ef94959f1fc9d7a8f7abe8a',1,'IRVoltas::checksum()'],['../classIRWhirlpoolAc.html#a7790be3df6c4609e5c08c17c5ee52047',1,'IRWhirlpoolAc::checksum()']]], - ['checkzjssig_3965',['checkZjsSig',['../classIRMitsubishiHeavy88Ac.html#a6aaf8ae4c9b52d73229b20414099f309',1,'IRMitsubishiHeavy88Ac']]], - ['checkzmssig_3966',['checkZmsSig',['../classIRMitsubishiHeavy152Ac.html#a3d1c9d2c98945d21eb1ce82fac1771d2',1,'IRMitsubishiHeavy152Ac']]], - ['cleanstate_3967',['cleanState',['../classIRac.html#aad988dc123495012758307213a933f37',1,'IRac']]], - ['clearontimerflag_3968',['clearOnTimerFlag',['../classIRDaikin2.html#a1e6507bb20167547d175496ffc5ed39d',1,'IRDaikin2']]], - ['clearpowerspecial_3969',['clearPowerSpecial',['../classIRSharpAc.html#a3c98c96a66dff560941e461a70efdb1a',1,'IRSharpAc']]], - ['clearsensortemp_3970',['clearSensorTemp',['../classIRCoolixAC.html#a1881a0c74685920b54cbbbfb6adbb0c6',1,'IRCoolixAC']]], - ['clearsleeptimerflag_3971',['clearSleepTimerFlag',['../classIRDaikin2.html#a2e00f01a66257966c7a166d66d01de93',1,'IRDaikin2']]], - ['cmpstates_3972',['cmpStates',['../classIRac.html#a3ba4eee08650dfcdd6d492a67c86f016',1,'IRac']]], - ['compare_3973',['compare',['../classIRrecv.html#ad7347c72b14d9f2f20f65bcf235ab3dc',1,'IRrecv']]], - ['convertfan_3974',['convertFan',['../classIRAirwellAc.html#a44091f4d58b8078df1a93170cb9900d8',1,'IRAirwellAc::convertFan()'],['../classIRAmcorAc.html#ad0f8b7cdf5942c3680639d410f53d18c',1,'IRAmcorAc::convertFan()'],['../classIRArgoAC.html#acd147993fb998a0e7015173b9514d4a2',1,'IRArgoAC::convertFan()'],['../classIRCarrierAc64.html#a255e6679397434877f1c6c9ac70fff50',1,'IRCarrierAc64::convertFan()'],['../classIRCoolixAC.html#a7ffa1cfcf82bd905b0f607401200c895',1,'IRCoolixAC::convertFan()'],['../classIRCoronaAc.html#a6826036fcabbb45e7369f42912fae02f',1,'IRCoronaAc::convertFan()'],['../classIRDaikinESP.html#ab58be19636d41d60b9c62d658ca18cae',1,'IRDaikinESP::convertFan()'],['../classIRDaikin2.html#ad147ea14695c9498bb091862e172dc81',1,'IRDaikin2::convertFan()'],['../classIRDaikin216.html#a520cc65161290f15022b4108f7049a83',1,'IRDaikin216::convertFan()'],['../classIRDaikin160.html#a32658c0f24d0b0c398d54ef648d717a9',1,'IRDaikin160::convertFan()'],['../classIRDaikin176.html#ae3dda9a55f851b5253d0677835a2c3dd',1,'IRDaikin176::convertFan()'],['../classIRDaikin128.html#a983c13bc608fbfa32d7ea2c36dc84116',1,'IRDaikin128::convertFan()'],['../classIRDaikin152.html#a5e2e79252602ca3493baf00cf3fe7787',1,'IRDaikin152::convertFan()'],['../classIRDaikin64.html#a109ff0c33b0a7dfd763683538915c811',1,'IRDaikin64::convertFan()'],['../classIRDelonghiAc.html#aeff2970b20963ae59b99464ae683113f',1,'IRDelonghiAc::convertFan()'],['../classIREcoclimAc.html#a308c50e46019d174b8b62bf5b7b8feaf',1,'IREcoclimAc::convertFan()'],['../classIRElectraAc.html#afcf3ef62d69e370cb88dd2036e5a1357',1,'IRElectraAc::convertFan()'],['../classIRFujitsuAC.html#a111060b7c93e77fdbd1dc96fc8a6c10f',1,'IRFujitsuAC::convertFan()'],['../classIRGoodweatherAc.html#abb443826453a65e87f6dedddf2dd74d5',1,'IRGoodweatherAc::convertFan()'],['../classIRGreeAC.html#a39aa0e4759330aef39382813d3aa96a4',1,'IRGreeAC::convertFan()'],['../classIRHaierAC.html#a58628dd19a7247fc5358c0dc8c30baba',1,'IRHaierAC::convertFan()'],['../classIRHaierACYRW02.html#a66e42d018f3d86b136624a347d333401',1,'IRHaierACYRW02::convertFan()'],['../classIRHitachiAc.html#a5c632c9efc42d9378fdefe608c9bb771',1,'IRHitachiAc::convertFan()'],['../classIRHitachiAc1.html#a96c22fddcd7dfcc5b8f205cc5c7efdef',1,'IRHitachiAc1::convertFan()'],['../classIRHitachiAc424.html#a4f502b779f9fe4aca3a2f649c4cfbda3',1,'IRHitachiAc424::convertFan()'],['../classIRKelonAc.html#ae27dcc27fd6f972e20f92063b33f4ab3',1,'IRKelonAc::convertFan()'],['../classIRLgAc.html#a71ce8d1be4222ecae26fcea3b71a1ba6',1,'IRLgAc::convertFan()'],['../classIRMideaAC.html#a08a8e49986ce808fd7edd8aee7399a64',1,'IRMideaAC::convertFan()'],['../classIRMitsubishiAC.html#a58ce95e1ae198a9855ee5e81335570cf',1,'IRMitsubishiAC::convertFan()'],['../classIRMitsubishi136.html#a81e691b386950859d1ad0a3c7faf7e49',1,'IRMitsubishi136::convertFan()'],['../classIRMitsubishi112.html#a4194e5b076687b79153bc8cd50c9bc86',1,'IRMitsubishi112::convertFan()'],['../classIRMitsubishiHeavy152Ac.html#ae11040290301b5fe66dfe79e8ea9512b',1,'IRMitsubishiHeavy152Ac::convertFan()'],['../classIRMitsubishiHeavy88Ac.html#acd69c45dbc3f5a150e17b82b5eae7b3f',1,'IRMitsubishiHeavy88Ac::convertFan()'],['../classIRNeoclimaAc.html#a8c3ac622428f118b28d53a3a82740993',1,'IRNeoclimaAc::convertFan()'],['../classIRPanasonicAc.html#aeada51b2d1ff51ff81dfc5c996b416df',1,'IRPanasonicAc::convertFan()'],['../classIRPanasonicAc32.html#a35814ff1a9625da3380482d039665b0b',1,'IRPanasonicAc32::convertFan()'],['../classIRSamsungAc.html#a6be52cc6980ad0bf80261c2a48eb3c87',1,'IRSamsungAc::convertFan()'],['../classIRSanyoAc.html#ab8bc1d3df116aa4a4b86c9faea2b4f40',1,'IRSanyoAc::convertFan()'],['../classIRSharpAc.html#a7b332ac755592ee643ac698654a63270',1,'IRSharpAc::convertFan()'],['../classIRTcl112Ac.html#a3f8178f8f646ed9892eefa40bbff4fb1',1,'IRTcl112Ac::convertFan()'],['../classIRTechnibelAc.html#aa59bf477a0ed2b814096f135cc5fe7c6',1,'IRTechnibelAc::convertFan()'],['../classIRTecoAc.html#a262aead12607ff962dd97c73e6dea078',1,'IRTecoAc::convertFan()'],['../classIRToshibaAC.html#aeef5cfb840f3058629b486232b7efb22',1,'IRToshibaAC::convertFan()'],['../classIRTranscoldAc.html#a5d67793bc5174f1c9f415b43fe6fb584',1,'IRTranscoldAc::convertFan()'],['../classIRTrotecESP.html#a905d4d5bd298db8c2e1a9b004fd541e8',1,'IRTrotecESP::convertFan()'],['../classIRTrumaAc.html#a3b7bbb494fcb23b7b154e89587eb871a',1,'IRTrumaAc::convertFan()'],['../classIRVestelAc.html#aa7702b0e50b6c8073cd7740a630b19dd',1,'IRVestelAc::convertFan()'],['../classIRVoltas.html#a83022d8acc690f1a9672566ae4845e9e',1,'IRVoltas::convertFan()'],['../classIRWhirlpoolAc.html#a3004feef0ec5fe327d6a43d68d029377',1,'IRWhirlpoolAc::convertFan()']]], - ['convertmode_3975',['convertMode',['../classIRAirwellAc.html#a20f9a804b2f8774165befc43d434ad84',1,'IRAirwellAc::convertMode()'],['../classIRAmcorAc.html#ab57117e1072b5265ac9ab5be6d58bccc',1,'IRAmcorAc::convertMode()'],['../classIRArgoAC.html#ad242e7b18dea9768b9fad6b1e0e12f65',1,'IRArgoAC::convertMode()'],['../classIRCarrierAc64.html#a8e94b1526b26cec55f1e700c86aaf74e',1,'IRCarrierAc64::convertMode()'],['../classIRCoolixAC.html#acfb0d2c20322cb4d3cd681a3a54b30fe',1,'IRCoolixAC::convertMode()'],['../classIRCoronaAc.html#a9f9cf8e38285cb2f3caf79e14516bda1',1,'IRCoronaAc::convertMode()'],['../classIRDaikinESP.html#aa96f52596148cab1f806faf190a0aa0a',1,'IRDaikinESP::convertMode()'],['../classIRDaikin2.html#a10aae6ec9783eac9d89ff98b947767dd',1,'IRDaikin2::convertMode()'],['../classIRDaikin216.html#a4fa9eca71ee6ad66b3fffd8b779f5fb0',1,'IRDaikin216::convertMode()'],['../classIRDaikin160.html#ac69861fdbde341fc75d90a5e4918aa56',1,'IRDaikin160::convertMode()'],['../classIRDaikin176.html#ab07fd6eab0ac6132625a291dae8cfc78',1,'IRDaikin176::convertMode()'],['../classIRDaikin128.html#a0bad4830267887299b2773075a16b283',1,'IRDaikin128::convertMode()'],['../classIRDaikin152.html#a25592419c95c0271d8a0c4203a2919c3',1,'IRDaikin152::convertMode()'],['../classIRDaikin64.html#a595d91c0294c9482aa453f077eebf882',1,'IRDaikin64::convertMode()'],['../classIRDelonghiAc.html#a51a6eab431f81fa448a48c0ec071e706',1,'IRDelonghiAc::convertMode()'],['../classIREcoclimAc.html#aa685f7824b36e3c80926d9ab96faf623',1,'IREcoclimAc::convertMode()'],['../classIRElectraAc.html#a0026a1981e713ce1f6916203717e0a00',1,'IRElectraAc::convertMode()'],['../classIRFujitsuAC.html#a242504a5b97c19ff7e369efcadd3916e',1,'IRFujitsuAC::convertMode()'],['../classIRGoodweatherAc.html#aef14e2b6c220e556300d286922da1f54',1,'IRGoodweatherAc::convertMode()'],['../classIRGreeAC.html#a609e87ad4926f150b44426caf79fd38e',1,'IRGreeAC::convertMode()'],['../classIRHaierAC.html#af6188dbed5cae022b4fd1eef358f594c',1,'IRHaierAC::convertMode()'],['../classIRHaierACYRW02.html#a9a51f3d4b4c60ed7d99f9836a57bb3e5',1,'IRHaierACYRW02::convertMode()'],['../classIRHitachiAc.html#af1bdc5e22e5e24218421bd3bbb436301',1,'IRHitachiAc::convertMode()'],['../classIRHitachiAc1.html#a6211c96f463353791e5d922d9939f23c',1,'IRHitachiAc1::convertMode()'],['../classIRHitachiAc424.html#a974bf3ada7117e463b8c23e2158902be',1,'IRHitachiAc424::convertMode()'],['../classIRKelonAc.html#a3ac8b212ee8606bbd2f4668908daf0fa',1,'IRKelonAc::convertMode()'],['../classIRKelvinatorAC.html#acc9d70a94dd3813005ca0381b80a35e4',1,'IRKelvinatorAC::convertMode()'],['../classIRLgAc.html#a114eca216b7c9c7be33d4527f848311e',1,'IRLgAc::convertMode()'],['../classIRMideaAC.html#a0ca16c8bc2232be467baba8ea69b40d4',1,'IRMideaAC::convertMode()'],['../classIRMitsubishiAC.html#a86d069e406d247bafbefbdd09b22894f',1,'IRMitsubishiAC::convertMode()'],['../classIRMitsubishi136.html#a43b8ff1083d09563a5d3a25b24e480ea',1,'IRMitsubishi136::convertMode()'],['../classIRMitsubishi112.html#aa41d6ec8bc6dc91891aaddbd996f6040',1,'IRMitsubishi112::convertMode()'],['../classIRMitsubishiHeavy152Ac.html#a067ca776edc19a577e8bcda5013e1d0f',1,'IRMitsubishiHeavy152Ac::convertMode()'],['../classIRMitsubishiHeavy88Ac.html#ad0419d176d70935fc535cdcc47ffba02',1,'IRMitsubishiHeavy88Ac::convertMode()'],['../classIRNeoclimaAc.html#a61335773816ecbbeb949e5da78d07e50',1,'IRNeoclimaAc::convertMode()'],['../classIRPanasonicAc.html#a3f3bc3e4b73338351f33f26c635075bb',1,'IRPanasonicAc::convertMode()'],['../classIRPanasonicAc32.html#a229264735483d62735dc3b32c42fb718',1,'IRPanasonicAc32::convertMode()'],['../classIRSamsungAc.html#a76f7fed436bdfcd9c9a9da8dd99cb9f7',1,'IRSamsungAc::convertMode()'],['../classIRSanyoAc.html#a12a355a527ba5d572448d420e1cad9a7',1,'IRSanyoAc::convertMode()'],['../classIRSharpAc.html#a340d60b4b24c10479b3fed4409e0834b',1,'IRSharpAc::convertMode()'],['../classIRTcl112Ac.html#ac063653636319a9451590b08abbfecdc',1,'IRTcl112Ac::convertMode()'],['../classIRTechnibelAc.html#a2e9eef25e288656e7840b09cda0f9aa5',1,'IRTechnibelAc::convertMode()'],['../classIRTecoAc.html#a5f95c5aacd8fc312acd0f36fd9dc33f2',1,'IRTecoAc::convertMode()'],['../classIRToshibaAC.html#a1cdcb695e128d57c721623cfdc9a8e8d',1,'IRToshibaAC::convertMode()'],['../classIRTranscoldAc.html#a45372965e8735a1fb54173eb1ed31c9d',1,'IRTranscoldAc::convertMode()'],['../classIRTrotecESP.html#a114a7022f0382275a55a2775d3d8e894',1,'IRTrotecESP::convertMode()'],['../classIRTrumaAc.html#a5d300dcade65104145b253110862aa2f',1,'IRTrumaAc::convertMode()'],['../classIRVestelAc.html#a5bb967d4972374254dad2c0a6fac7ed2',1,'IRVestelAc::convertMode()'],['../classIRVoltas.html#a3086d4e457769916808b3aef151c9b6b',1,'IRVoltas::convertMode()'],['../classIRWhirlpoolAc.html#afbf2f473c98f480d68c8bb28e1202d56',1,'IRWhirlpoolAc::convertMode()']]], - ['convertswing_3976',['convertSwing',['../classIRTechnibelAc.html#a9368635dd24b042066094bfca13e8a17',1,'IRTechnibelAc']]], - ['convertswingh_3977',['convertSwingH',['../classIRDaikin2.html#a79a989ad0221157c4dd8d992cc2863dc',1,'IRDaikin2::convertSwingH()'],['../classIRDaikin176.html#a2387b8dff2a9c9cd164034977b03f192',1,'IRDaikin176::convertSwingH()'],['../classIRHitachiAc344.html#a34d0fa5b522b51dac46f33cbb0a0a389',1,'IRHitachiAc344::convertSwingH()'],['../classIRMitsubishiAC.html#a8235a527a178486bb58ce62749aaf2fb',1,'IRMitsubishiAC::convertSwingH()'],['../classIRMitsubishi112.html#ab17598ce693475ef167525b8408e2da4',1,'IRMitsubishi112::convertSwingH()'],['../classIRMitsubishiHeavy152Ac.html#a0183cf4fcefb60ac61060dde698efbd1',1,'IRMitsubishiHeavy152Ac::convertSwingH()'],['../classIRMitsubishiHeavy88Ac.html#a8b995256a6651822731da7a912c01f19',1,'IRMitsubishiHeavy88Ac::convertSwingH()'],['../classIRPanasonicAc.html#abb17db3452ae347101dc6eaa8e84433b',1,'IRPanasonicAc::convertSwingH()']]], - ['convertswingv_3978',['convertSwingV',['../classIRArgoAC.html#ac23ff32b45c3fc5402e7e303ad9b5d54',1,'IRArgoAC::convertSwingV()'],['../classIRDaikin2.html#aa3de8468b869989ec52a5f9f57ff4a77',1,'IRDaikin2::convertSwingV()'],['../classIRDaikin160.html#a615f599f3bc3e8dec5e5ef92512a2301',1,'IRDaikin160::convertSwingV()'],['../classIRGoodweatherAc.html#a3b37c04fd9b60b63052d93374fc15d4f',1,'IRGoodweatherAc::convertSwingV()'],['../classIRGreeAC.html#ae3717400d1dc0336bcc5fa17c1397a9b',1,'IRGreeAC::convertSwingV()'],['../classIRHaierAC.html#a34053c32ba50ff3b81b208d068efe2a4',1,'IRHaierAC::convertSwingV()'],['../classIRHaierACYRW02.html#a1f7dffe29fbe67989b2f425d629850db',1,'IRHaierACYRW02::convertSwingV()'],['../classIRMitsubishiAC.html#ab561f6421b2f3e0d92d9fab685da639a',1,'IRMitsubishiAC::convertSwingV()'],['../classIRMitsubishi136.html#a59dee0c57d3ca2bdf4c7839142d23059',1,'IRMitsubishi136::convertSwingV()'],['../classIRMitsubishi112.html#a95c545497e0acc6f78ec229a2ada9de0',1,'IRMitsubishi112::convertSwingV()'],['../classIRMitsubishiHeavy152Ac.html#a93f2678fce3b35cfe3e31221d3355291',1,'IRMitsubishiHeavy152Ac::convertSwingV()'],['../classIRMitsubishiHeavy88Ac.html#abeba5346e1fc2223838fbc5d3ed03f23',1,'IRMitsubishiHeavy88Ac::convertSwingV()'],['../classIRPanasonicAc.html#a024e64fe32848e9b0b72e9c04db0fd98',1,'IRPanasonicAc::convertSwingV()'],['../classIRPanasonicAc32.html#a0487f241fd414aa20d2f352203c72a26',1,'IRPanasonicAc32::convertSwingV()'],['../classIRSanyoAc.html#a944cd3b85d0510b5a0b0fa45604e5977',1,'IRSanyoAc::convertSwingV()']]], - ['coolix_3979',['coolix',['../classIRac.html#a4750db3b06db51f5a23c22538c41b7b3',1,'IRac']]], - ['copyirparams_3980',['copyIrParams',['../classIRrecv.html#ab017a0f9256954bb7d943e3c6b7e31bf',1,'IRrecv']]], - ['corona_3981',['corona',['../classIRac.html#adcf2bdb1ef6dc057532ae7d188557dac',1,'IRac']]], - ['countbits_3982',['countBits',['../IRutils_8cpp.html#a84621a9f7fb2d57bd425f9f0d662cf7d',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8cpp.html#aae8042367bb94df81672603270fa7342',1,'countBits(const uint64_t data, const uint8_t length, const bool ones, const uint16_t init): IRutils.cpp'],['../IRutils_8h.html#a27816eac50afafa9e53ba4b53675da20',1,'countBits(const uint8_t *const start, const uint16_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp'],['../IRutils_8h.html#a5a719829db11f5d5560b4367c0d2d365',1,'countBits(const uint64_t data, const uint8_t length, const bool ones=true, const uint16_t init=0): IRutils.cpp']]], - ['crudenoisefilter_3983',['crudeNoiseFilter',['../classIRrecv.html#ae833bdb8fccc676043fc4ccae432fab1',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.html deleted file mode 100644 index 911304e60..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.js deleted file mode 100644 index 6fff82622..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_4.js +++ /dev/null @@ -1,110 +0,0 @@ -var searchData= -[ - ['daikin_3984',['daikin',['../classIRac.html#afb6d77bbeb5b2465437cef4f58b83e0e',1,'IRac']]], - ['daikin128_3985',['daikin128',['../classIRac.html#a8fe7c254e1bcb32b6b6fdc1f91693a50',1,'IRac']]], - ['daikin152_3986',['daikin152',['../classIRac.html#a6dff8e608e3e9fecffe71c3fd1ebe74e',1,'IRac']]], - ['daikin160_3987',['daikin160',['../classIRac.html#a3b34f44d713efa52f30d43405cde831c',1,'IRac']]], - ['daikin176_3988',['daikin176',['../classIRac.html#aaae173fd58a7b53c3f4d2edbf7c4afe7',1,'IRac']]], - ['daikin2_3989',['daikin2',['../classIRac.html#a89eddc0e1b3c41c608208d2752dc954c',1,'IRac']]], - ['daikin216_3990',['daikin216',['../classIRac.html#a101ac8b9e9564e557ef1a1f61ff111d9',1,'IRac']]], - ['daikin64_3991',['daikin64',['../classIRac.html#a074db6fc0cff2878d80a397020e1b249',1,'IRac']]], - ['decode_3992',['decode',['../classIRrecv.html#aeaa5c07a8b46f8fbb982f996cc1f9f4b',1,'IRrecv']]], - ['decodeairwell_3993',['decodeAirwell',['../classIRrecv.html#acf4635d5ee146a82498cb0c269b6af41',1,'IRrecv']]], - ['decodeaiwarct501_3994',['decodeAiwaRCT501',['../classIRrecv.html#aa4d678376a4c0f8ea953474a6f5ef9d2',1,'IRrecv']]], - ['decodeamcor_3995',['decodeAmcor',['../classIRrecv.html#a8d81fcfb47e36925975d313027689a44',1,'IRrecv']]], - ['decodeargo_3996',['decodeArgo',['../classIRrecv.html#a94f12dc000a6e7b75ea8680fd48fc487',1,'IRrecv']]], - ['decodecarrierac_3997',['decodeCarrierAC',['../classIRrecv.html#acf3d1c37038120a5c0996d92577ce74a',1,'IRrecv']]], - ['decodecarrierac40_3998',['decodeCarrierAC40',['../classIRrecv.html#a4bdb35ec34f49401a6b9becd15b8a3b5',1,'IRrecv']]], - ['decodecarrierac64_3999',['decodeCarrierAC64',['../classIRrecv.html#a79d03c31da48a385ab47cc8f342ef9b3',1,'IRrecv']]], - ['decodecoolix_4000',['decodeCOOLIX',['../classIRrecv.html#a964af7e72e2133688f0596c718cb98ca',1,'IRrecv']]], - ['decodecoronaac_4001',['decodeCoronaAc',['../classIRrecv.html#a981cba14551c93af57f9c1c0e1775d12',1,'IRrecv']]], - ['decodedaikin_4002',['decodeDaikin',['../classIRrecv.html#a141f0de9f4cae8daeb025aff3904ecaa',1,'IRrecv']]], - ['decodedaikin128_4003',['decodeDaikin128',['../classIRrecv.html#ac7188577c874d9f8f19304a3ec775415',1,'IRrecv']]], - ['decodedaikin152_4004',['decodeDaikin152',['../classIRrecv.html#ab20a6586b4e56cc428012ec96f5ccc2c',1,'IRrecv']]], - ['decodedaikin160_4005',['decodeDaikin160',['../classIRrecv.html#af0b9822defe6b29099079d664d9dc413',1,'IRrecv']]], - ['decodedaikin176_4006',['decodeDaikin176',['../classIRrecv.html#aa142d1340201b6fdc5b462f46fe21ee0',1,'IRrecv']]], - ['decodedaikin2_4007',['decodeDaikin2',['../classIRrecv.html#a4c4799a0d45ea5562159c46939617d80',1,'IRrecv']]], - ['decodedaikin216_4008',['decodeDaikin216',['../classIRrecv.html#a7f860686a5c58aa8f4d1842cfb15b2f9',1,'IRrecv']]], - ['decodedaikin64_4009',['decodeDaikin64',['../classIRrecv.html#a030701f081a9c6eab0c07b75433b524c',1,'IRrecv']]], - ['decodedelonghiac_4010',['decodeDelonghiAc',['../classIRrecv.html#a8c91cc83770d243e942387cc16e9ca6f',1,'IRrecv']]], - ['decodedenon_4011',['decodeDenon',['../classIRrecv.html#a0b1bd1c817cb43bc3755126191b7f4a2',1,'IRrecv']]], - ['decodedish_4012',['decodeDISH',['../classIRrecv.html#a851776d9178aeb706d9a1abd3f254e31',1,'IRrecv']]], - ['decodedoshisha_4013',['decodeDoshisha',['../classIRrecv.html#a675c45e6b32aaeca3de734ccf2f0c819',1,'IRrecv']]], - ['decodeecoclim_4014',['decodeEcoclim',['../classIRrecv.html#a823387b95b6adb676e976a8eeaf01a0b',1,'IRrecv']]], - ['decodeelectraac_4015',['decodeElectraAC',['../classIRrecv.html#ad3a7be8afc36451c8e28e27f3c3e9aaa',1,'IRrecv']]], - ['decodeelitescreens_4016',['decodeElitescreens',['../classIRrecv.html#ac830ece2c2c200b8c13fcd66828e2846',1,'IRrecv']]], - ['decodeepson_4017',['decodeEpson',['../classIRrecv.html#aaadef8415f273ba25f4086fecd681d2e',1,'IRrecv']]], - ['decodefujitsuac_4018',['decodeFujitsuAC',['../classIRrecv.html#aa3778bdf994bf9c99ac48ef95434a826',1,'IRrecv']]], - ['decodegicable_4019',['decodeGICable',['../classIRrecv.html#afade8dac9b1d023e5e0946e6b2c08aea',1,'IRrecv']]], - ['decodegoodweather_4020',['decodeGoodweather',['../classIRrecv.html#a64650ce7dbaf5fc860a6a253d906e9de',1,'IRrecv']]], - ['decodegree_4021',['decodeGree',['../classIRrecv.html#a2e756342d7524a13d53d6c656700638c',1,'IRrecv']]], - ['decodehaierac_4022',['decodeHaierAC',['../classIRrecv.html#ad97403174f05197a7fa9a4a0107e3111',1,'IRrecv']]], - ['decodehaierac176_4023',['decodeHaierAC176',['../classIRrecv.html#af16bdb5515d931a2c55a65c35e95bb7c',1,'IRrecv']]], - ['decodehaieracyrw02_4024',['decodeHaierACYRW02',['../classIRrecv.html#a281fb9d972fee75db49209c42f649822',1,'IRrecv']]], - ['decodehash_4025',['decodeHash',['../classIRrecv.html#a7c15fbfa7936ca474712a1953911fd06',1,'IRrecv']]], - ['decodehitachiac_4026',['decodeHitachiAC',['../classIRrecv.html#aa42facfffc0e304005272b6ddd4583c8',1,'IRrecv']]], - ['decodehitachiac1_4027',['decodeHitachiAC1',['../classIRrecv.html#a122e0dcbf14c90ec2d77399acce21459',1,'IRrecv']]], - ['decodehitachiac3_4028',['decodeHitachiAc3',['../classIRrecv.html#a113bc834eff00f55d5545ce3fa1ab203',1,'IRrecv']]], - ['decodehitachiac424_4029',['decodeHitachiAc424',['../classIRrecv.html#a01c3dda56d6d916076fa1affa2213129',1,'IRrecv']]], - ['decodeinax_4030',['decodeInax',['../classIRrecv.html#a94545c6a8da027b9cb0e23ecba4c29d8',1,'IRrecv']]], - ['decodejvc_4031',['decodeJVC',['../classIRrecv.html#a25ab71efc223a418e9630d8421f44bc9',1,'IRrecv']]], - ['decodekelon_4032',['decodeKelon',['../classIRrecv.html#a5d4194feeee9c15b1dff57a41d34098b',1,'IRrecv']]], - ['decodekelvinator_4033',['decodeKelvinator',['../classIRrecv.html#a0ac82f20b48b2d71ee07eb392578b226',1,'IRrecv']]], - ['decodelasertag_4034',['decodeLasertag',['../classIRrecv.html#ae4af614a45ea65cb3304ef5bd7965122',1,'IRrecv']]], - ['decodelegopf_4035',['decodeLegoPf',['../classIRrecv.html#aea75ad0ba1d8fec33de16501940f2553',1,'IRrecv']]], - ['decodelg_4036',['decodeLG',['../classIRrecv.html#afe70015c36b1477a5de0c193163e13a7',1,'IRrecv']]], - ['decodelutron_4037',['decodeLutron',['../classIRrecv.html#a6093c4404a9a9d415c5bfeab5ec53be5',1,'IRrecv']]], - ['decodemagiquest_4038',['decodeMagiQuest',['../classIRrecv.html#a6f3bfcc6767484151dee758bcf94fb0b',1,'IRrecv']]], - ['decodemetz_4039',['decodeMetz',['../classIRrecv.html#ac39aa52eec10d1c92b6e9713a22252b6',1,'IRrecv']]], - ['decodemidea_4040',['decodeMidea',['../classIRrecv.html#a255b15601f7439a09ab5e77ad78816fb',1,'IRrecv']]], - ['decodemidea24_4041',['decodeMidea24',['../classIRrecv.html#a62a04019308b29ae2aea4b3a83ba9155',1,'IRrecv']]], - ['decodemilestag2_4042',['decodeMilestag2',['../classIRrecv.html#adddf192765ba0d9c233833bdda9b266e',1,'IRrecv']]], - ['decodemirage_4043',['decodeMirage',['../classIRrecv.html#aa88813f830a6ff6bfd6e7bde6728a3d5',1,'IRrecv']]], - ['decodemitsubishi_4044',['decodeMitsubishi',['../classIRrecv.html#a6efe3be80f0ebef3ff94ed0e56c5c52a',1,'IRrecv']]], - ['decodemitsubishi112_4045',['decodeMitsubishi112',['../classIRrecv.html#ae0690ff3cb5a5cdcdb6a514bb7bf0cdd',1,'IRrecv']]], - ['decodemitsubishi136_4046',['decodeMitsubishi136',['../classIRrecv.html#a87b3ee57dbdf762a0e305ddd43eec629',1,'IRrecv']]], - ['decodemitsubishi2_4047',['decodeMitsubishi2',['../classIRrecv.html#a9514197850491a5b8c30ae9ffc89d895',1,'IRrecv']]], - ['decodemitsubishiac_4048',['decodeMitsubishiAC',['../classIRrecv.html#a942c5f41df5cbff32a8b7703673cb621',1,'IRrecv']]], - ['decodemitsubishiheavy_4049',['decodeMitsubishiHeavy',['../classIRrecv.html#aef9cedf79793806df4cc5376710781bc',1,'IRrecv']]], - ['decodemultibrackets_4050',['decodeMultibrackets',['../classIRrecv.html#af61afacc9865232643164ba824e665ab',1,'IRrecv']]], - ['decodemwm_4051',['decodeMWM',['../classIRrecv.html#a27518b5d792cdf3ab333b324f409f328',1,'IRrecv']]], - ['decodenec_4052',['decodeNEC',['../classIRrecv.html#a52b844f80df7f64edf9ce9cc189ac5b9',1,'IRrecv']]], - ['decodeneoclima_4053',['decodeNeoclima',['../classIRrecv.html#a4729ee949e533448b481ae33bbbf1adf',1,'IRrecv']]], - ['decodenikai_4054',['decodeNikai',['../classIRrecv.html#abbcbf5fc07d7e37d7724acc37bb5f592',1,'IRrecv']]], - ['decodepanasonic_4055',['decodePanasonic',['../classIRrecv.html#aa8dd5f24d28576c6db03cc463bd0a865',1,'IRrecv']]], - ['decodepanasonicac_4056',['decodePanasonicAC',['../classIRrecv.html#a0f78e180ed731e8fb16d1c85aa721c95',1,'IRrecv']]], - ['decodepanasonicac32_4057',['decodePanasonicAC32',['../classIRrecv.html#a89ce20e483b1297cae05ab1ae96d24ec',1,'IRrecv']]], - ['decodepioneer_4058',['decodePioneer',['../classIRrecv.html#a78a9487cbe8a562392a07a4090b3091e',1,'IRrecv']]], - ['decoderc5_4059',['decodeRC5',['../classIRrecv.html#adab9dffbeceee514520fababd0e721bd',1,'IRrecv']]], - ['decoderc6_4060',['decodeRC6',['../classIRrecv.html#a67316499ef37db82e3b3ecaac25c5980',1,'IRrecv']]], - ['decodercmm_4061',['decodeRCMM',['../classIRrecv.html#a0e7bf769cb5bebf174e852e4b0b08cf3',1,'IRrecv']]], - ['decodesamsung_4062',['decodeSAMSUNG',['../classIRrecv.html#a18b6cf177364faf11b9a076dd2025eec',1,'IRrecv']]], - ['decodesamsung36_4063',['decodeSamsung36',['../classIRrecv.html#a290a9e6a0b12ef1fe02a92a456c8ad57',1,'IRrecv']]], - ['decodesamsungac_4064',['decodeSamsungAC',['../classIRrecv.html#ae779c76ebd0f3cd1fc13abaa55f80d67',1,'IRrecv']]], - ['decodesanyoac_4065',['decodeSanyoAc',['../classIRrecv.html#ab6c02d8b8079d7f344e141e6a4e7e225',1,'IRrecv']]], - ['decodesanyolc7461_4066',['decodeSanyoLC7461',['../classIRrecv.html#a01a165bf2e7d16dbbb916d1eae740bc5',1,'IRrecv']]], - ['decodesharp_4067',['decodeSharp',['../classIRrecv.html#a3390d63ba21a835d7c74c261532a22a7',1,'IRrecv']]], - ['decodesharpac_4068',['decodeSharpAc',['../classIRrecv.html#a8a9b920079f783e236f8a938e20b9743',1,'IRrecv']]], - ['decodesony_4069',['decodeSony',['../classIRrecv.html#ab03227955cf7d1d00c1620c55d7f9f18',1,'IRrecv']]], - ['decodesymphony_4070',['decodeSymphony',['../classIRrecv.html#a61cdf4d891654521afbc6ca9fb415745',1,'IRrecv']]], - ['decodetechnibelac_4071',['decodeTechnibelAc',['../classIRrecv.html#a2f022741309ad814bf11aec440a838d0',1,'IRrecv']]], - ['decodeteco_4072',['decodeTeco',['../classIRrecv.html#a950711d7df8dfe4cda86f53650cd9f56',1,'IRrecv']]], - ['decodeteknopoint_4073',['decodeTeknopoint',['../classIRrecv.html#a16765d6d73382423835b5beb39df7d2f',1,'IRrecv']]], - ['decodetoshibaac_4074',['decodeToshibaAC',['../classIRrecv.html#aae6ab687ae319ae50a52238916bcfb1a',1,'IRrecv']]], - ['decodetostate_4075',['decodeToState',['../namespaceIRAcUtils.html#ac5eb498bf12cb6cba023c9c1e9726949',1,'IRAcUtils']]], - ['decodetranscold_4076',['decodeTranscold',['../classIRrecv.html#a16c44538d7e01d9b118d983de39d18e3',1,'IRrecv']]], - ['decodetrotec_4077',['decodeTrotec',['../classIRrecv.html#ae2920c488173f3fa37f5325438157ced',1,'IRrecv']]], - ['decodetruma_4078',['decodeTruma',['../classIRrecv.html#a76a85fb183cc943532bc9c589c42a17a',1,'IRrecv']]], - ['decodevestelac_4079',['decodeVestelAc',['../classIRrecv.html#a5d48b3c91434c18c7726cca504d75b73',1,'IRrecv']]], - ['decodevoltas_4080',['decodeVoltas',['../classIRrecv.html#a43539320036ba1c17e9875e4dc9fd055',1,'IRrecv']]], - ['decodewhirlpoolac_4081',['decodeWhirlpoolAC',['../classIRrecv.html#a0d1eec83cf092f5621cb34b3e94777c4',1,'IRrecv']]], - ['decodewhynter_4082',['decodeWhynter',['../classIRrecv.html#a66289f6a462557ad26e6c0a64f36cf02',1,'IRrecv']]], - ['decodexmp_4083',['decodeXmp',['../classIRrecv.html#a9c7c5cdee244070d5999232a1bcdae60',1,'IRrecv']]], - ['decodezepeal_4084',['decodeZepeal',['../classIRrecv.html#a72afd857c8b2e0192021a40afc96c2d8',1,'IRrecv']]], - ['defaultbits_4085',['defaultBits',['../classIRsend.html#a70a2256bee8ad9b8ea8571dd4f26596f',1,'IRsend']]], - ['delonghiac_4086',['delonghiac',['../classIRac.html#af290b0b08cff5121bb88c62051ed1074',1,'IRac']]], - ['disableirin_4087',['disableIRIn',['../classIRrecv.html#a9f4a719e756ad78c7dd47186f8bef087',1,'IRrecv']]], - ['disableofftimer_4088',['disableOffTimer',['../classIRDaikinESP.html#a1e4e05ad0799002d0ab25db92dcaac06',1,'IRDaikinESP::disableOffTimer()'],['../classIRDaikin2.html#a8cbdbc0de31b14f974cd8cd87f3ca54a',1,'IRDaikin2::disableOffTimer()'],['../classIREcoclimAc.html#a8278eec1b47aff9304cb255be5b561bb',1,'IREcoclimAc::disableOffTimer()']]], - ['disableontimer_4089',['disableOnTimer',['../classIRDaikinESP.html#a0733e4a15d76baac23493926ef1765b1',1,'IRDaikinESP::disableOnTimer()'],['../classIRDaikin2.html#a170a1e9ddb7873dc1392184a85387cc3',1,'IRDaikin2::disableOnTimer()'],['../classIREcoclimAc.html#adddfdb01de28e0dda5f8c919ee0cd0fa',1,'IREcoclimAc::disableOnTimer()']]], - ['disablesleeptimer_4090',['disableSleepTimer',['../classIRDaikin2.html#a152532ef9d905e26930ae145a9623877',1,'IRDaikin2']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.html deleted file mode 100644 index 61b920db6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.js deleted file mode 100644 index 54f214531..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_5.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['ecoclim_4091',['ecoclim',['../classIRac.html#a3ef3fd7283a1578963ca314a6f1cbd71',1,'IRac']]], - ['elapsed_4092',['elapsed',['../classIRtimer.html#ad655e585f053580d49d8de7d52cd62a1',1,'IRtimer::elapsed()'],['../classTimerMs.html#ad4aa759c58727393f69863b3461dfc09',1,'TimerMs::elapsed()']]], - ['electra_4093',['electra',['../classIRac.html#abb847bd5e09feb293432b8a8cf0dd9de',1,'IRac']]], - ['enableirin_4094',['enableIRIn',['../classIRrecv.html#a52c05ec6d8f3dbfb75f21f3b4fe7be3d',1,'IRrecv']]], - ['enableirout_4095',['enableIROut',['../classIRsend.html#ab3b6d36c9b5d26c400526717d433ed2d',1,'IRsend']]], - ['enableofftimer_4096',['enableOffTimer',['../classIRDaikinESP.html#a8a5686066bfc86f1d7cc454e793d3357',1,'IRDaikinESP::enableOffTimer()'],['../classIRDaikin2.html#afc7ba7d7de2976e010a72778091d633a',1,'IRDaikin2::enableOffTimer()'],['../classIRWhirlpoolAc.html#abb1c3685d90d81b44e72050cd0e042f6',1,'IRWhirlpoolAc::enableOffTimer()']]], - ['enableontimer_4097',['enableOnTimer',['../classIRDaikinESP.html#aac4d0f5f60c9f4c41d3bb1e0f24bc4bc',1,'IRDaikinESP::enableOnTimer()'],['../classIRDaikin2.html#a91ec5f7c67cb87102a5eb030e0763b50',1,'IRDaikin2::enableOnTimer()'],['../classIRWhirlpoolAc.html#aa3edd58882cf4fc65172e490c9e0bb2e',1,'IRWhirlpoolAc::enableOnTimer()']]], - ['enablesleeptimer_4098',['enableSleepTimer',['../classIRDaikin2.html#a9c86782a98a54818ae92419eec5a060b',1,'IRDaikin2']]], - ['encodedoshisha_4099',['encodeDoshisha',['../classIRsend.html#a0522a2256e8358df715065530be6317d',1,'IRsend']]], - ['encodejvc_4100',['encodeJVC',['../classIRsend.html#a6303b991c0545443e7ccf63ba89dbf18',1,'IRsend']]], - ['encodelg_4101',['encodeLG',['../classIRsend.html#a109b67a68e7a33900cb5c5017ed4578b',1,'IRsend']]], - ['encodemagiquest_4102',['encodeMagiQuest',['../classIRsend.html#a4ee40126279dbde8bb02888115577563',1,'IRsend']]], - ['encodemetz_4103',['encodeMetz',['../classIRsend.html#a99c88ec9f8426003738a9a1682595b9a',1,'IRsend']]], - ['encodenec_4104',['encodeNEC',['../classIRsend.html#ab2e1ce918e4e06b955c3d2a089ce189c',1,'IRsend']]], - ['encodepanasonic_4105',['encodePanasonic',['../classIRsend.html#a8340497ae75f00c844e53dfc73700d9c',1,'IRsend']]], - ['encodepioneer_4106',['encodePioneer',['../classIRsend.html#ae0686829eba31587b71034a1c0495971',1,'IRsend']]], - ['encoderc5_4107',['encodeRC5',['../classIRsend.html#a88457fd4cc01d6e8097e04c022ede74a',1,'IRsend']]], - ['encoderc5x_4108',['encodeRC5X',['../classIRsend.html#ae760ef1be11f25f7a61237f96a8871d9',1,'IRsend']]], - ['encoderc6_4109',['encodeRC6',['../classIRsend.html#ac0e341462426ea146b944502a6d3fde0',1,'IRsend']]], - ['encodesamsung_4110',['encodeSAMSUNG',['../classIRsend.html#a4ab0579bd854306b2667de19207e4ffb',1,'IRsend']]], - ['encodesanyolc7461_4111',['encodeSanyoLC7461',['../classIRsend.html#a864bef0dc48f6af4b59057362906cf5d',1,'IRsend']]], - ['encodesharp_4112',['encodeSharp',['../classIRsend.html#a8f4c7a36380ba31155eba5ff8f5f631e',1,'IRsend']]], - ['encodesony_4113',['encodeSony',['../classIRsend.html#aa0aea2cb04f0a7ee9056f15fecfc08c3',1,'IRsend']]], - ['encodetime_4114',['encodeTime',['../classIRPanasonicAc.html#a0eee4ad6105d35ee6c34c4666174b04b',1,'IRPanasonicAc']]], - ['ensurepower_4115',['ensurePower',['../classIRKelonAc.html#ad6265f10ad249f82b3fcf97f42213274',1,'IRKelonAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.html deleted file mode 100644 index dc70a4a07..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.js deleted file mode 100644 index 9aa9b6bfe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['fahrenheittocelsius_4116',['fahrenheitToCelsius',['../IRutils_8cpp.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp'],['../IRutils_8h.html#a83538e86145850c24b1c824723089502',1,'fahrenheitToCelsius(const float deg): IRutils.cpp']]], - ['fanspeedtostring_4117',['fanspeedToString',['../classIRac.html#ab8d8a1ce5de8970c07c90fb41731e2e6',1,'IRac']]], - ['fixchecksum_4118',['fixChecksum',['../classIRPanasonicAc.html#aa40bef35000ddf6d14e286b3f2044897',1,'IRPanasonicAc']]], - ['fixup_4119',['fixup',['../classIRGreeAC.html#a5bbdcc83f9d49e32379cd27cad0ba130',1,'IRGreeAC::fixup()'],['../classIRKelvinatorAC.html#a389af589003c39794ae5d4bd572fa485',1,'IRKelvinatorAC::fixup()']]], - ['fujitsu_4120',['fujitsu',['../classIRac.html#ae951653fc030f30a989dd40f53d30b35',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.html deleted file mode 100644 index 7de310677..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.js deleted file mode 100644 index 7715f1ba1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_7.js +++ /dev/null @@ -1,131 +0,0 @@ -var searchData= -[ - ['get10cheat_4121',['get10CHeat',['../classIRFujitsuAC.html#a3c096987c44aa7dcc3c682fb372f585a',1,'IRFujitsuAC']]], - ['get3d_4122',['get3D',['../classIRMitsubishiHeavy152Ac.html#aa1fc0f9cb991ae5fa4320bfe75037791',1,'IRMitsubishiHeavy152Ac::get3D()'],['../classIRMitsubishiHeavy88Ac.html#acdebce895deab9d8c19b63e43dcd55ce',1,'IRMitsubishiHeavy88Ac::get3D()']]], - ['get8cheat_4123',['get8CHeat',['../classIRNeoclimaAc.html#abebfca9eeb51d23d194162a6570b1d39',1,'IRNeoclimaAc']]], - ['getbeep_4124',['getBeep',['../classIRDaikin2.html#ac952fe406ec76350b80b94c1237d0db9',1,'IRDaikin2::getBeep()'],['../classIRSamsungAc.html#a17412aeb213d2800fa106b7af6c3933f',1,'IRSamsungAc::getBeep()'],['../classIRSanyoAc.html#ae7f3e043b55bdb1a54d1fd29a025a893',1,'IRSanyoAc::getBeep()']]], - ['getbit_4125',['getBit',['../namespaceirutils.html#ac0756774b20e4f7c836abee466800ee6',1,'irutils::getBit(const uint64_t data, const uint8_t position, const uint8_t size)'],['../namespaceirutils.html#a27f90f74ed0b7af37c7bd8cd2a059dee',1,'irutils::getBit(const uint8_t data, const uint8_t position)']]], - ['getboost_4126',['getBoost',['../classIRDelonghiAc.html#a6f49f15cba66d184b9bdc950114d4ff0',1,'IRDelonghiAc']]], - ['getbreeze_4127',['getBreeze',['../classIRSamsungAc.html#ae442d9d84a1058196620ab6f0c994cc7',1,'IRSamsungAc']]], - ['getbufsize_4128',['getBufSize',['../classIRrecv.html#a69ab02ea6823ccf18d1f6be87ca1b92e',1,'IRrecv']]], - ['getbutton_4129',['getButton',['../classIRHaierACYRW02.html#a58f8df6244a91d02e109b91197d535b9',1,'IRHaierACYRW02::getButton()'],['../classIRHitachiAc424.html#a8f3342235b1f69fdcdc942147ac3a909',1,'IRHitachiAc424::getButton()'],['../classIRNeoclimaAc.html#a21c11784fc1504688164b2c8a01a8e06',1,'IRNeoclimaAc::getButton()']]], - ['getcelsius_4130',['getCelsius',['../classIRFujitsuAC.html#af91371d9fc03c014dad0a6f2abb56df1',1,'IRFujitsuAC']]], - ['getclean_4131',['getClean',['../classIRCoolixAC.html#a7f4c287068939ff94f03a005d9c7e4b4',1,'IRCoolixAC::getClean()'],['../classIRDaikin2.html#a742d3167334e11c6386906ed7f4ba044',1,'IRDaikin2::getClean()'],['../classIRElectraAc.html#af48c261ceb93568010c57a61bf0f882d',1,'IRElectraAc::getClean()'],['../classIRFujitsuAC.html#a8b356ce721c4b7d4845d27f43adb0e2a',1,'IRFujitsuAC::getClean()'],['../classIRMitsubishiHeavy152Ac.html#acecd9523961d07dd0cf7644a7008e59f',1,'IRMitsubishiHeavy152Ac::getClean()'],['../classIRMitsubishiHeavy88Ac.html#a6eeaeca11d48df313f8da364e2a91e2e',1,'IRMitsubishiHeavy88Ac::getClean()'],['../classIRSamsungAc.html#a8980cc9a230a78ec76a190056a8b9be6',1,'IRSamsungAc::getClean()'],['../classIRSharpAc.html#a1e3be9f825418843393c15715944da63',1,'IRSharpAc::getClean()']]], - ['getclock_4132',['getClock',['../classIRDaikin128.html#a21ac762a97228b2183d247e27b9f471d',1,'IRDaikin128::getClock()'],['../classIRDaikin64.html#aafc78cfd252453c559080eb4b1bdc7a2',1,'IRDaikin64::getClock()'],['../classIREcoclimAc.html#a2313035ff6dfece5dc716bc59c95f843',1,'IREcoclimAc::getClock()'],['../classIRMitsubishiAC.html#ad6ba27d19cce9528ce869c8a9b9752f2',1,'IRMitsubishiAC::getClock()'],['../classIRPanasonicAc.html#a084479e8f23f7dbb8f155209b36efb3b',1,'IRPanasonicAc::getClock()'],['../classIRWhirlpoolAc.html#a97ab57772b05bc674c43000a57bb05de',1,'IRWhirlpoolAc::getClock()']]], - ['getcmd_4133',['getCmd',['../classIRFujitsuAC.html#a59d6739d40ebb0beaef3504de7cecbfd',1,'IRFujitsuAC']]], - ['getcomfort_4134',['getComfort',['../classIRDaikinESP.html#a61a4d8bf064dc4f2f1af768062950931',1,'IRDaikinESP::getComfort()'],['../classIRDaikin152.html#a7021aedd84115062149369a167f76d00',1,'IRDaikin152::getComfort()']]], - ['getcommand_4135',['getCommand',['../classIRGoodweatherAc.html#ac46149fab1211f16891ffe31fa55b1b8',1,'IRGoodweatherAc::getCommand()'],['../classIRHaierAC.html#a0e9bea37c9f3a43ad205994b396d5cd2',1,'IRHaierAC::getCommand()'],['../classIRWhirlpoolAc.html#ac5f07ffc689770b0327279df09ac1f1e',1,'IRWhirlpoolAc::getCommand()']]], - ['getcorrectedrawlength_4136',['getCorrectedRawLength',['../IRutils_8cpp.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp'],['../IRutils_8h.html#aad5f25cf6a2dded8b48f4a6dd16857be',1,'getCorrectedRawLength(const decode_results *const results): IRutils.cpp']]], - ['getcurrentday_4137',['getCurrentDay',['../classIRDaikinESP.html#a2f4db9739f130e013b047847bb01e4a6',1,'IRDaikinESP']]], - ['getcurrenttime_4138',['getCurrentTime',['../classIRDaikinESP.html#aa32d285bba6557a9f375b309ea697dec',1,'IRDaikinESP::getCurrentTime()'],['../classIRDaikin2.html#ac6350e7bc0af04e7a5e49b8d35c5883a',1,'IRDaikin2::getCurrentTime()']]], - ['getcurrtime_4139',['getCurrTime',['../classIRHaierAC.html#ace3a6ad8816dbf5d4a9f8595cc621b09',1,'IRHaierAC']]], - ['getdisplay_4140',['getDisplay',['../classIRSamsungAc.html#a05e2c47fc5c63782f2420feb1337014c',1,'IRSamsungAc']]], - ['getdisplaytempsource_4141',['getDisplayTempSource',['../classIRGreeAC.html#a2ed802a668c53499133d7b5be9b287ec',1,'IRGreeAC']]], - ['getdrygrade_4142',['getDryGrade',['../classIRKelonAc.html#abd5fa54411ed2bd54da47f7e71bb9411',1,'IRKelonAc']]], - ['getecono_4143',['getEcono',['../classIRCoronaAc.html#a4b379e29e5784c33a6ee73b3e81844e4',1,'IRCoronaAc::getEcono()'],['../classIRDaikinESP.html#af683032a0602275c3e64aa1eaec8bce0',1,'IRDaikinESP::getEcono()'],['../classIRDaikin2.html#aa0471ba51480c60af811b157c98945b8',1,'IRDaikin2::getEcono()'],['../classIRDaikin128.html#a4f1de86c0086aeb02444c11ff12dfb90',1,'IRDaikin128::getEcono()'],['../classIRDaikin152.html#a55f1ba2167dfab3571c8d9cc8df9da1b',1,'IRDaikin152::getEcono()'],['../classIRMitsubishiHeavy152Ac.html#ad9269cfab5a568131885133993d76ae7',1,'IRMitsubishiHeavy152Ac::getEcono()'],['../classIRMitsubishiHeavy88Ac.html#a589bd953d2f7e73c5e2802d145891d7c',1,'IRMitsubishiHeavy88Ac::getEcono()'],['../classIRNeoclimaAc.html#aed7b9c7b8a1686a1e2850c9b9347d868',1,'IRNeoclimaAc::getEcono()'],['../classIRTcl112Ac.html#a7a097fd243a9f0c9f965d2299996cd32',1,'IRTcl112Ac::getEcono()'],['../classIRToshibaAC.html#a13c884468baf27828c61ffd526d0e297',1,'IRToshibaAC::getEcono()'],['../classIRVoltas.html#a7849e211bf16bf5bd6d0d940bd3e6431',1,'IRVoltas::getEcono()']]], - ['geteconotoggle_4144',['getEconoToggle',['../classIRMideaAC.html#a69839c88534920e667e56750c83f926f',1,'IRMideaAC::getEconoToggle()'],['../classIRSharpAc.html#a39c6c18289eb2deee80fa7584d19b89a',1,'IRSharpAc::getEconoToggle()']]], - ['getenablesensortemp_4145',['getEnableSensorTemp',['../classIRMideaAC.html#a313effc2012af55df719edff56c9ccea',1,'IRMideaAC']]], - ['geteye_4146',['getEye',['../classIRDaikin2.html#a7de3421d44db047fdbdfa6bad20a71e8',1,'IRDaikin2::getEye()'],['../classIRNeoclimaAc.html#a2a5d21b3109a9105db9e2445bf8358b4',1,'IRNeoclimaAc::getEye()']]], - ['geteyeauto_4147',['getEyeAuto',['../classIRDaikin2.html#ad3de9384586e091b85065a1f2c359295',1,'IRDaikin2']]], - ['getfan_4148',['getFan',['../classIRAirwellAc.html#aa24f7ff64fcb1cea358f7b5288eb7aa1',1,'IRAirwellAc::getFan()'],['../classIRAmcorAc.html#a06e64e42bb7bc26afc17e504bf57616a',1,'IRAmcorAc::getFan()'],['../classIRArgoAC.html#aee8a1870fc079b0c8679c403b6cd6806',1,'IRArgoAC::getFan()'],['../classIRCarrierAc64.html#a0426f9c043b65b0d0d870f7ef5474ed9',1,'IRCarrierAc64::getFan()'],['../classIRCoolixAC.html#a2ef6155c4a8880481a996fdf9462a8e9',1,'IRCoolixAC::getFan()'],['../classIRCoronaAc.html#aaf36811405387c3fb14a8019ce0ffb4b',1,'IRCoronaAc::getFan()'],['../classIRDaikinESP.html#a35585fa7c6742031a1c23b724096fa2b',1,'IRDaikinESP::getFan()'],['../classIRDaikin2.html#a5ba2b2a1cd20916b3dc0f5f57dd265e3',1,'IRDaikin2::getFan()'],['../classIRDaikin216.html#abc21da328afcf0831d6cd834c954f7a0',1,'IRDaikin216::getFan()'],['../classIRDaikin160.html#a2b0d39a508521a2ee982ed8d012b5e07',1,'IRDaikin160::getFan()'],['../classIRDaikin176.html#af4d75131b7912d499af590fdc2be03d5',1,'IRDaikin176::getFan()'],['../classIRDaikin128.html#afda28bc88f4b4f1db5ee4229634cef8c',1,'IRDaikin128::getFan()'],['../classIRDaikin152.html#a3e40410ddd64a6417ad4a43301ad8c09',1,'IRDaikin152::getFan()'],['../classIRDaikin64.html#ac510c4758eb52d703840e85c88108bfb',1,'IRDaikin64::getFan()'],['../classIRDelonghiAc.html#a897dd29a58fed41abb4a6bbe10527188',1,'IRDelonghiAc::getFan()'],['../classIREcoclimAc.html#a61740f93abcbb3af61b89ed754d71700',1,'IREcoclimAc::getFan()'],['../classIRElectraAc.html#a5d6c472701f93579341c34f2b14a5238',1,'IRElectraAc::getFan()'],['../classIRGoodweatherAc.html#a58839f0a332a1db1d808c608aa718031',1,'IRGoodweatherAc::getFan()'],['../classIRGreeAC.html#af5586de05500d3f11307a387ef91bb22',1,'IRGreeAC::getFan()'],['../classIRHaierAC.html#a20efaa79ca7ead0b08f19a4b41c198aa',1,'IRHaierAC::getFan()'],['../classIRHaierACYRW02.html#a543f7d2ce346b94a7ae29d50d1189f27',1,'IRHaierACYRW02::getFan()'],['../classIRHitachiAc.html#addc6c94839c7d994573029b66e7fbe94',1,'IRHitachiAc::getFan()'],['../classIRHitachiAc1.html#a7cb01dc7abf8f7c45c8690134c71e7a8',1,'IRHitachiAc1::getFan()'],['../classIRHitachiAc424.html#a2d105be99f05794ce845db06e17bffcd',1,'IRHitachiAc424::getFan()'],['../classIRKelonAc.html#adba50d061f4f6f2eb1dca61355c3017e',1,'IRKelonAc::getFan()'],['../classIRKelvinatorAC.html#ae96f43f14a7df9f23be734d1f9b09b37',1,'IRKelvinatorAC::getFan()'],['../classIRLgAc.html#a38a3fed9066641cd80208d330c92ef9b',1,'IRLgAc::getFan()'],['../classIRMideaAC.html#a38a0c175fead133026a0079c36e3e8ce',1,'IRMideaAC::getFan()'],['../classIRMitsubishiAC.html#ad7bda7fc858dd11c242f563bdda9c8a9',1,'IRMitsubishiAC::getFan()'],['../classIRMitsubishi136.html#aed870bd56c47808c6b3dae878ba6cf7f',1,'IRMitsubishi136::getFan()'],['../classIRMitsubishi112.html#a18bf39ff526ead69eb91854c5f0b48cc',1,'IRMitsubishi112::getFan()'],['../classIRMitsubishiHeavy152Ac.html#ae4e0a08c61289443fdd3e928b91568b3',1,'IRMitsubishiHeavy152Ac::getFan()'],['../classIRMitsubishiHeavy88Ac.html#a43f25d927d54712384a632228544c124',1,'IRMitsubishiHeavy88Ac::getFan()'],['../classIRNeoclimaAc.html#a60c4e4b50c2bcd07991eaff73c031834',1,'IRNeoclimaAc::getFan()'],['../classIRPanasonicAc.html#a302ba64400c820a5a0d822315516564a',1,'IRPanasonicAc::getFan()'],['../classIRPanasonicAc32.html#a03a6d54ef606dcb67931a7e42532fb34',1,'IRPanasonicAc32::getFan()'],['../classIRSamsungAc.html#a924701fc0a10c1bae8a93749658abff5',1,'IRSamsungAc::getFan()'],['../classIRSanyoAc.html#a01ecbebadcdb81220ab1f2cbe239c6c0',1,'IRSanyoAc::getFan()'],['../classIRSharpAc.html#ad9881478c89a4852f2fccb7623843b4c',1,'IRSharpAc::getFan()'],['../classIRTcl112Ac.html#a4c7f0b599c415406274bfba4f0e65984',1,'IRTcl112Ac::getFan()'],['../classIRTechnibelAc.html#a71a97d77ffe257518d9a72b716bd5373',1,'IRTechnibelAc::getFan()'],['../classIRTecoAc.html#ad7c6b4f2a79582deb67e4928796392a6',1,'IRTecoAc::getFan()'],['../classIRToshibaAC.html#abd5191c603faef027ad6bc4b8abe82ae',1,'IRToshibaAC::getFan()'],['../classIRTranscoldAc.html#a084be3ebe2b371a4b7ff3d08f287d56e',1,'IRTranscoldAc::getFan()'],['../classIRTrotecESP.html#af7546138743b6e7a63e5566d3a6ba6bf',1,'IRTrotecESP::getFan()'],['../classIRTrumaAc.html#a5e96e2b872dcb6cccff9f8231b3374c4',1,'IRTrumaAc::getFan()'],['../classIRVestelAc.html#a510b05386df2578a3241929cffcfa13e',1,'IRVestelAc::getFan()'],['../classIRVoltas.html#afbe5c3cda5fa2233b29a582de71d4723',1,'IRVoltas::getFan()'],['../classIRWhirlpoolAc.html#aa1a1077dd30b0b244c90ac8c7387e33c',1,'IRWhirlpoolAc::getFan()']]], - ['getfanspeed_4149',['getFanSpeed',['../classIRFujitsuAC.html#a38016d2f305ff0d17c57e60c77ad77f8',1,'IRFujitsuAC']]], - ['getfilter_4150',['getFilter',['../classIRFujitsuAC.html#af76f83d0e31fd33caf2360e4f26bdfe4',1,'IRFujitsuAC::getFilter()'],['../classIRMitsubishiHeavy152Ac.html#aea4bdebc0a2b63bb621cb9236e113bd2',1,'IRMitsubishiHeavy152Ac::getFilter()']]], - ['getflap_4151',['getFlap',['../classIRArgoAC.html#ae0cb1c5df94fc38cccc14f313296c280',1,'IRArgoAC']]], - ['getfollow_4152',['getFollow',['../classIRNeoclimaAc.html#a7223965174db938d90b5324e3d601d4e',1,'IRNeoclimaAc']]], - ['getfresh_4153',['getFresh',['../classIRNeoclimaAc.html#ad22722bde267db7ecfd99298bde0165e',1,'IRNeoclimaAc']]], - ['getfreshair_4154',['getFreshAir',['../classIRDaikin2.html#a5a7f38e358d0968d9af6ffca76248330',1,'IRDaikin2']]], - ['getfreshairhigh_4155',['getFreshAirHigh',['../classIRDaikin2.html#a0e1d1a46a38c722943bc212cdc09ab97',1,'IRDaikin2']]], - ['gethealth_4156',['getHealth',['../classIRHaierAC.html#aff4e7de97c375daf881249eefc1c60f8',1,'IRHaierAC::getHealth()'],['../classIRHaierACYRW02.html#a3de686bdee579703b8203acec3353b01',1,'IRHaierACYRW02::getHealth()'],['../classIRTcl112Ac.html#a37015a710d0c3b6278874fd5a5673e0f',1,'IRTcl112Ac::getHealth()']]], - ['gethold_4157',['getHold',['../classIRNeoclimaAc.html#adbbd41de5f5f4cd7fb89ebc6e20e81cd',1,'IRNeoclimaAc']]], - ['gethumid_4158',['getHumid',['../classIRTecoAc.html#a47072d5984da8284b28ac9ab093f275c',1,'IRTecoAc']]], - ['getid_4159',['getId',['../classIRFujitsuAC.html#a51369012283f84ff52d733138a690340',1,'IRFujitsuAC']]], - ['getifeel_4160',['getIFeel',['../classIRGreeAC.html#a73a8de0e0e9d7fc8ce9a0b44cffc2357',1,'IRGreeAC::getIFeel()'],['../classIRArgoAC.html#ac1b4819a4cc035b7cc8317892a412348',1,'IRArgoAC::getiFeel()']]], - ['getinternalstatelength_4161',['getInternalStateLength',['../classIRToshibaAC.html#a146624d75ab5f6c23a75fe87918edadd',1,'IRToshibaAC']]], - ['getion_4162',['getIon',['../classIRNeoclimaAc.html#a4e76b4f123a6138712834c12ef8a6f50',1,'IRNeoclimaAc::getIon()'],['../classIRPanasonicAc.html#a6d6909b7b96815c227f0009dcbd3ce8c',1,'IRPanasonicAc::getIon()'],['../classIRSamsungAc.html#a4b29304810f8e619123553ffd40b35c1',1,'IRSamsungAc::getIon()'],['../classIRSharpAc.html#a63739c8f8aea457fbaa260983a1b828d',1,'IRSharpAc::getIon()'],['../classIRVestelAc.html#a9b31dcca090f98b575a97fd6cb397eb3',1,'IRVestelAc::getIon()']]], - ['getionfilter_4163',['getIonFilter',['../classIRKelvinatorAC.html#ae1cb7be762f306bd007976dc0feb788e',1,'IRKelvinatorAC']]], - ['getled_4164',['getLed',['../classIRCoolixAC.html#a5eb13d05cf8aff9cfe8d5f437b8042e4',1,'IRCoolixAC']]], - ['getlight_4165',['getLight',['../classIRDaikin2.html#a100812aedfaa32830dfb59c7857b4af5',1,'IRDaikin2::getLight()'],['../classIRGoodweatherAc.html#addd2e3cb3824ce4ca8f15bee468b1a16',1,'IRGoodweatherAc::getLight()'],['../classIRGreeAC.html#a65293afe8c8c0c95a47d577326d06893',1,'IRGreeAC::getLight()'],['../classIRKelvinatorAC.html#aafda5580f46145f2b1843d1d4b7dc055',1,'IRKelvinatorAC::getLight()'],['../classIRNeoclimaAc.html#a2c1cd7460cd82b302f9e1373c7ffe738',1,'IRNeoclimaAc::getLight()'],['../classIRTcl112Ac.html#a058bdb5e3191ba900aeb68a02290ef7f',1,'IRTcl112Ac::getLight()'],['../classIRTecoAc.html#ab5135b0873c172036f1a2426c96504ce',1,'IRTecoAc::getLight()'],['../classIRVoltas.html#aab64c21de6d129af4379e32731cea163',1,'IRVoltas::getLight()'],['../classIRWhirlpoolAc.html#a4583ad4468e9bc736e77c8ea63bcdcbd',1,'IRWhirlpoolAc::getLight()']]], - ['getlighttoggle_4166',['getLightToggle',['../classIRDaikin128.html#a3825b86cffe11409447f5c41bc3a469f',1,'IRDaikin128::getLightToggle()'],['../classIRElectraAc.html#aed9858539f66d98e065532f0a6bac048',1,'IRElectraAc::getLightToggle()'],['../classIRMideaAC.html#a770500c76c09ea7a7a7f6d0967c5f348',1,'IRMideaAC::getLightToggle()'],['../classIRSharpAc.html#a0bef3a8c41ca85ac84607606fe3a1728',1,'IRSharpAc::getLightToggle()']]], - ['getmax_4167',['getMax',['../classIRAmcorAc.html#a9cff471d660dd92a48cc8f76b8ee5009',1,'IRAmcorAc::getMax()'],['../classIRArgoAC.html#a70186816a8981ca1d29b86df3bb8d36b',1,'IRArgoAC::getMax()']]], - ['getmode_4168',['getMode',['../classIRAirwellAc.html#a9a1d651c8b71703212207888ddb4be14',1,'IRAirwellAc::getMode()'],['../classIRAmcorAc.html#a2309c3eba2ce3ec506ce0bb11639d47a',1,'IRAmcorAc::getMode()'],['../classIRArgoAC.html#a3c9c49e32fe2f06e218a1b8278ab4db2',1,'IRArgoAC::getMode()'],['../classIRCarrierAc64.html#a554d655ebd58aa90375cad18de24cc0d',1,'IRCarrierAc64::getMode()'],['../classIRCoolixAC.html#a8fb9a73b6c3540bc395682bb32ef8a27',1,'IRCoolixAC::getMode()'],['../classIRCoronaAc.html#a4ea2e6e8e5b19c8bfc4b5625bcd308ad',1,'IRCoronaAc::getMode()'],['../classIRDaikinESP.html#abc4417c6d46ba7e7f15e80984ed458f4',1,'IRDaikinESP::getMode()'],['../classIRDaikin2.html#ab89325df2b63faccaa82c7708cae894e',1,'IRDaikin2::getMode()'],['../classIRDaikin216.html#a4ec4d63df2c3536bc9b10c1a883123f2',1,'IRDaikin216::getMode()'],['../classIRDaikin160.html#a177d6e5e5957f64e6e71e3792d94188a',1,'IRDaikin160::getMode()'],['../classIRDaikin176.html#a06d4d50b48a3d10c882342c582d46402',1,'IRDaikin176::getMode()'],['../classIRDaikin128.html#ae0aaea03e3da871673212c92bc166bb2',1,'IRDaikin128::getMode()'],['../classIRDaikin152.html#ae08cda442b9495cd23d40184efb27b45',1,'IRDaikin152::getMode()'],['../classIRDaikin64.html#adea9511f98273e2f4e8fcb47ddfa0a5a',1,'IRDaikin64::getMode()'],['../classIRDelonghiAc.html#a09ff883265f23bf67d73e11755155600',1,'IRDelonghiAc::getMode()'],['../classIREcoclimAc.html#a93a69322013b546dc4e1ddb2b2dc4a2f',1,'IREcoclimAc::getMode()'],['../classIRElectraAc.html#ab38a479c1947f1758a882ec8df2e1fc9',1,'IRElectraAc::getMode()'],['../classIRFujitsuAC.html#addabed92c560d2a97743f2fd074fab4d',1,'IRFujitsuAC::getMode()'],['../classIRGoodweatherAc.html#a7a33c367d8cb64ec85afc37bbdda3ab1',1,'IRGoodweatherAc::getMode()'],['../classIRGreeAC.html#a52d00282331a137869f3e1e165d8fe41',1,'IRGreeAC::getMode()'],['../classIRHaierAC.html#a2ddf59c6ce732c23a9898dfc6679be02',1,'IRHaierAC::getMode()'],['../classIRHaierACYRW02.html#a36be68111465fb0161aa22cfac8cbe55',1,'IRHaierACYRW02::getMode()'],['../classIRHitachiAc.html#ab0fa1185703c71d2558260cb5e3e40dc',1,'IRHitachiAc::getMode()'],['../classIRHitachiAc1.html#ac10580db160a458a97168e6f0e8a9970',1,'IRHitachiAc1::getMode()'],['../classIRHitachiAc424.html#a94c44ea44ec395351715f28d2067bdca',1,'IRHitachiAc424::getMode()'],['../classIRHitachiAc3.html#a511c9b731a0367fd05b32b42a69adec2',1,'IRHitachiAc3::getMode()'],['../classIRKelonAc.html#a45d82807dee13f01f6bac9f7fe4ab42e',1,'IRKelonAc::getMode()'],['../classIRKelvinatorAC.html#af878b8867a65e62e1208e8358cfffa7c',1,'IRKelvinatorAC::getMode()'],['../classIRLgAc.html#a684e35c0c7f4dafbaf6d53230e7ee643',1,'IRLgAc::getMode()'],['../classIRMideaAC.html#aa024806cd5fce842e031f130d1f70ec6',1,'IRMideaAC::getMode()'],['../classIRMitsubishiAC.html#a6aa36b5cdb80acf93d0a2bb413ef5c6c',1,'IRMitsubishiAC::getMode()'],['../classIRMitsubishi136.html#a2930dc65d4e9d193a1763c836ab6d1cd',1,'IRMitsubishi136::getMode()'],['../classIRMitsubishi112.html#adf3365711e44842586a776030c52fd23',1,'IRMitsubishi112::getMode()'],['../classIRMitsubishiHeavy152Ac.html#a948571778a16aa7a7256773a101e81b0',1,'IRMitsubishiHeavy152Ac::getMode()'],['../classIRMitsubishiHeavy88Ac.html#a5004a26143481a3baa658026d1eed32f',1,'IRMitsubishiHeavy88Ac::getMode()'],['../classIRNeoclimaAc.html#a305db84bf11bd9f226db7dbec73e7dd3',1,'IRNeoclimaAc::getMode()'],['../classIRPanasonicAc.html#a5ffd59dd87b047e172ba74866267a9f3',1,'IRPanasonicAc::getMode()'],['../classIRPanasonicAc32.html#a353b10038a47d96ec12ea233b8160031',1,'IRPanasonicAc32::getMode()'],['../classIRSamsungAc.html#adcfed1f2123c48715cb6f3623ecf3f58',1,'IRSamsungAc::getMode()'],['../classIRSanyoAc.html#a8ec24049c1eb0e68f7c29c8a26c4faf2',1,'IRSanyoAc::getMode()'],['../classIRSharpAc.html#a36018c943865f189a32abae85a2b111b',1,'IRSharpAc::getMode()'],['../classIRTcl112Ac.html#a923f20af1fafa75feba9fabe0a39aa0a',1,'IRTcl112Ac::getMode()'],['../classIRTechnibelAc.html#ad1361f45fd3cc86105fc77aeffef1796',1,'IRTechnibelAc::getMode()'],['../classIRTecoAc.html#ad62055752174ef33b5444419162291aa',1,'IRTecoAc::getMode()'],['../classIRToshibaAC.html#a748c242e280954ef4b0efea6d47c1471',1,'IRToshibaAC::getMode()'],['../classIRTranscoldAc.html#a12e32c7b7a708ff6ee6b895ca3a884a8',1,'IRTranscoldAc::getMode()'],['../classIRTrotecESP.html#a734686c303babb58d836eb035ed11081',1,'IRTrotecESP::getMode()'],['../classIRTrumaAc.html#ac5190d6978631080f1617d3feec6f239',1,'IRTrumaAc::getMode()'],['../classIRVestelAc.html#a38e48fa0f7ddbc0b16983d84824a198b',1,'IRVestelAc::getMode()'],['../classIRVoltas.html#acedc05af3702d4beb98ebd5717b5f06c',1,'IRVoltas::getMode()'],['../classIRWhirlpoolAc.html#a82e7290554e4504d8fce19cdec1e2d0f',1,'IRWhirlpoolAc::getMode()']]], - ['getmodel_4169',['getModel',['../classIRFujitsuAC.html#a13a66019e2ba72e0b6e6bfa9c525f4a7',1,'IRFujitsuAC::getModel()'],['../classIRGreeAC.html#ae45f26fe0726c0730628624a271532fa',1,'IRGreeAC::getModel()'],['../classIRHitachiAc1.html#a9f84923ef60194ed218321fcdcf5adc7',1,'IRHitachiAc1::getModel()'],['../classIRLgAc.html#a15f94c5fc2b4dfabe1ae0e0bad3f1f37',1,'IRLgAc::getModel()'],['../classIRPanasonicAc.html#a625be846baf3ec556a59379785e642e8',1,'IRPanasonicAc::getModel()'],['../classIRSharpAc.html#a2274a217db53ba0363def8fb3fc5c88f',1,'IRSharpAc::getModel()'],['../classIRVoltas.html#a64e24f4f6aefa66ffa2f4a953f4ab205',1,'IRVoltas::getModel()'],['../classIRWhirlpoolAc.html#a96b0339714de063febd68829a8eea94f',1,'IRWhirlpoolAc::getModel()']]], - ['getmold_4170',['getMold',['../classIRDaikinESP.html#a6e940bd512a5ee0ffafa203b0fe4b360',1,'IRDaikinESP::getMold()'],['../classIRDaikin2.html#a6fdc34fe5e43a9df5677bb54315359fb',1,'IRDaikin2::getMold()']]], - ['getnight_4171',['getNight',['../classIRArgoAC.html#a4b50f226061301149107ce34dbf76daf',1,'IRArgoAC::getNight()'],['../classIRMitsubishiHeavy152Ac.html#ae8e193a64044e17493878dcc558a88da',1,'IRMitsubishiHeavy152Ac::getNight()']]], - ['getnormalstate_4172',['getNormalState',['../classIRCoolixAC.html#a458618f926f8b57e4b9bdeae0d13a70d',1,'IRCoolixAC']]], - ['getoffsleeptimer_4173',['getOffSleepTimer',['../classIRFujitsuAC.html#a24f5928580566b3db7a14d0366a3b6e6',1,'IRFujitsuAC']]], - ['getofftime_4174',['getOffTime',['../classIRDaikinESP.html#a8e57cf94a231ad5d029bad4a4c029191',1,'IRDaikinESP::getOffTime()'],['../classIRDaikin2.html#a8556aa0c7343343efda80246aebd44cb',1,'IRDaikin2::getOffTime()'],['../classIRDaikin64.html#a7c6a4e163f01be4017cb028470c7d4d7',1,'IRDaikin64::getOffTime()'],['../classIRVoltas.html#a9f6d0e9c6ea6e71177df4d8d8dcb34b8',1,'IRVoltas::getOffTime()']]], - ['getofftimeenabled_4175',['getOffTimeEnabled',['../classIRDaikin64.html#a8f02ea1c216886ebbed4369797329e40',1,'IRDaikin64']]], - ['getofftimer_4176',['getOffTimer',['../classIRCarrierAc64.html#ae777fcdb402eb862a1e4a5912ff39fae',1,'IRCarrierAc64::getOffTimer()'],['../classIRCoronaAc.html#ad46f8bd5c50ebd4de3354a77deac2518',1,'IRCoronaAc::getOffTimer()'],['../classIRDaikin128.html#a7550e40a909b21d8357871983951e02d',1,'IRDaikin128::getOffTimer()'],['../classIRDelonghiAc.html#a825e23b338644cd7b41a6529b2a38ee9',1,'IRDelonghiAc::getOffTimer()'],['../classIREcoclimAc.html#ae74a5c07d7840e00a69b8f92cda8fcf8',1,'IREcoclimAc::getOffTimer()'],['../classIRHaierAC.html#a4760af54cbc1618b2dc4c1bf57884ebb',1,'IRHaierAC::getOffTimer()'],['../classIRHitachiAc1.html#a37988864a631c1cd7df1bd09cc3878ba',1,'IRHitachiAc1::getOffTimer()'],['../classIRMideaAC.html#a280b85deb97232f03d6d9953f309926f',1,'IRMideaAC::getOffTimer()'],['../classIRPanasonicAc.html#a4bce377d32504f666662f1d93645761f',1,'IRPanasonicAc::getOffTimer()'],['../classIRSanyoAc.html#a754239cad3d588083a2dba5e933f0306',1,'IRSanyoAc::getOffTimer()'],['../classIRVestelAc.html#a45c725deb349e357b8c52ab3dcf51bdb',1,'IRVestelAc::getOffTimer()'],['../classIRWhirlpoolAc.html#a597de82026cdb3ebf12319ad5b6f7314',1,'IRWhirlpoolAc::getOffTimer()']]], - ['getofftimerenabled_4177',['getOffTimerEnabled',['../classIRDaikinESP.html#ae17795e1e1d4f0d3c6898a0d3188366e',1,'IRDaikinESP::getOffTimerEnabled()'],['../classIRDaikin2.html#ab6c48355e0a0c80d3cd99ae276df80a5',1,'IRDaikin2::getOffTimerEnabled()'],['../classIRDaikin128.html#a7437b509c7c26d94e5f5224d4375578e',1,'IRDaikin128::getOffTimerEnabled()'],['../classIRDelonghiAc.html#ae48767203f462ac02441c635328ef7aa',1,'IRDelonghiAc::getOffTimerEnabled()']]], - ['getontime_4178',['getOnTime',['../classIRDaikinESP.html#ab11a5aae3cd055f3c9b61dbf9fdb3ef9',1,'IRDaikinESP::getOnTime()'],['../classIRDaikin2.html#a7e98e1f9211e7e8885c503a7f724030f',1,'IRDaikin2::getOnTime()'],['../classIRDaikin64.html#a24536b3bce2d3e55f9a75ac093621cbc',1,'IRDaikin64::getOnTime()'],['../classIRVoltas.html#a96578f6ff015d5791a172fd9d0d0916f',1,'IRVoltas::getOnTime()']]], - ['getontimeenabled_4179',['getOnTimeEnabled',['../classIRDaikin64.html#a2e64a60c10bd8508a9d4b1373e2aab22',1,'IRDaikin64']]], - ['getontimer_4180',['getOnTimer',['../classIRCarrierAc64.html#a57f606d89eb29dafc18a2461467ad74f',1,'IRCarrierAc64::getOnTimer()'],['../classIRCoronaAc.html#a1a2f65c1eb0df18246d5088ef1a80e2f',1,'IRCoronaAc::getOnTimer()'],['../classIRDaikin128.html#a012991ae4e0bfce0dec50dce7e79b3d6',1,'IRDaikin128::getOnTimer()'],['../classIRDelonghiAc.html#a15c948b5ab0ea17298c95dc8b9fd5887',1,'IRDelonghiAc::getOnTimer()'],['../classIREcoclimAc.html#afdb831e4920ab2e11b63e10f8dfabf7d',1,'IREcoclimAc::getOnTimer()'],['../classIRFujitsuAC.html#ae7a012df0406b90d6ff6197334eb7bf3',1,'IRFujitsuAC::getOnTimer()'],['../classIRHaierAC.html#a1c71cd51382036c4548b460a13072e91',1,'IRHaierAC::getOnTimer()'],['../classIRHitachiAc1.html#a4f850fa34340b4cd976b514c355b0f99',1,'IRHitachiAc1::getOnTimer()'],['../classIRMideaAC.html#a4b8c1124bde8fab95f82ea57c0a77c39',1,'IRMideaAC::getOnTimer()'],['../classIRPanasonicAc.html#a51d50a59e09f0911022c59ab60bf4889',1,'IRPanasonicAc::getOnTimer()'],['../classIRVestelAc.html#a3b93b975802111973241d2c57d691bd0',1,'IRVestelAc::getOnTimer()'],['../classIRWhirlpoolAc.html#a3af30bd17c4facd9f93c21e740095222',1,'IRWhirlpoolAc::getOnTimer()']]], - ['getontimerenabled_4181',['getOnTimerEnabled',['../classIRDaikinESP.html#a1305a311d2cb6acc8fd4b26d0b9b5e57',1,'IRDaikinESP::getOnTimerEnabled()'],['../classIRDaikin2.html#a635bd00eff13041b284566936af0d589',1,'IRDaikin2::getOnTimerEnabled()'],['../classIRDaikin128.html#aebe10daacaf0629ed451624b776981fd',1,'IRDaikin128::getOnTimerEnabled()'],['../classIRDelonghiAc.html#afdd8284ec6c1d31b0cc943a49bdf3f0e',1,'IRDelonghiAc::getOnTimerEnabled()']]], - ['getoutsidequiet_4182',['getOutsideQuiet',['../classIRFujitsuAC.html#a706456b7e46a3da48483fa61e11c8e86',1,'IRFujitsuAC']]], - ['getpower_4183',['getPower',['../classIRAmcorAc.html#aa5c0a82e7425f9e71d303ebcd6af22aa',1,'IRAmcorAc::getPower()'],['../classIRArgoAC.html#a0784b8dec8e3e136b263a8c6387b7819',1,'IRArgoAC::getPower()'],['../classIRCarrierAc64.html#a61422ae8089453a26f1eea4fc0a57489',1,'IRCarrierAc64::getPower()'],['../classIRCoolixAC.html#a733ea01983f9936fbcee4c313c2ff54a',1,'IRCoolixAC::getPower()'],['../classIRCoronaAc.html#a0616dcf381d95d40138fb549e54eb7c4',1,'IRCoronaAc::getPower()'],['../classIRDaikinESP.html#acb6694d29a241e0a82b50212f46363f7',1,'IRDaikinESP::getPower()'],['../classIRDaikin2.html#a742026c183ee2bf5be1aafd0b6bbec20',1,'IRDaikin2::getPower()'],['../classIRDaikin216.html#aaafa8df6d9e1c74fcc94de4630746642',1,'IRDaikin216::getPower()'],['../classIRDaikin160.html#a0c5e6157a818d2c67046fd4560db7859',1,'IRDaikin160::getPower()'],['../classIRDaikin176.html#aa095669914397f51729b0f6bd8d9c094',1,'IRDaikin176::getPower()'],['../classIRDaikin152.html#a3ebf05f9b7dab1d1a78c4a1a2c8a03eb',1,'IRDaikin152::getPower()'],['../classIRDelonghiAc.html#a88a2ef78cf091f9b4ab38536b6cbe25e',1,'IRDelonghiAc::getPower()'],['../classIREcoclimAc.html#acccf77fc5f0151a3414cfea45491c110',1,'IREcoclimAc::getPower()'],['../classIRElectraAc.html#a776fdad40d191f04356f8366ff6128d3',1,'IRElectraAc::getPower()'],['../classIRFujitsuAC.html#a0b77519e85271d48bcd2a151b603d288',1,'IRFujitsuAC::getPower()'],['../classIRGoodweatherAc.html#ac07f4c3c4e064a13f1f90d0c227d8ec0',1,'IRGoodweatherAc::getPower()'],['../classIRGreeAC.html#a72ba2c19cc104ae8307b3d7ca533d4c1',1,'IRGreeAC::getPower()'],['../classIRHaierACYRW02.html#a242508ff127e27ac644c195b3d572baf',1,'IRHaierACYRW02::getPower()'],['../classIRHitachiAc.html#a8d94eb158971fcc28c85ce81443795f1',1,'IRHitachiAc::getPower()'],['../classIRHitachiAc1.html#a0183bbe39cfdda9d3b43e6d9c87df714',1,'IRHitachiAc1::getPower()'],['../classIRHitachiAc424.html#a025b0e8cd50111555d55fea481ca7b1c',1,'IRHitachiAc424::getPower()'],['../classIRKelvinatorAC.html#adfbe7efd74ec16f339c21983967920f9',1,'IRKelvinatorAC::getPower()'],['../classIRLgAc.html#a592403e1602a3b92f75d0e07756cc86e',1,'IRLgAc::getPower()'],['../classIRMideaAC.html#ad4dd8a532419cd2d8f5656df3e5a23e2',1,'IRMideaAC::getPower()'],['../classIRMitsubishiAC.html#abd4e2414d75b61c5d9d3693568dff791',1,'IRMitsubishiAC::getPower()'],['../classIRMitsubishi136.html#a2ebea047c764746524163f8c35dbe660',1,'IRMitsubishi136::getPower()'],['../classIRMitsubishi112.html#a04af02100d0cbad644d890f249f383ce',1,'IRMitsubishi112::getPower()'],['../classIRMitsubishiHeavy152Ac.html#afd5016f6c87fe822e6fe0e80d450f07b',1,'IRMitsubishiHeavy152Ac::getPower()'],['../classIRMitsubishiHeavy88Ac.html#a217d1f049e5046f5f0b5abd5c9cff422',1,'IRMitsubishiHeavy88Ac::getPower()'],['../classIRNeoclimaAc.html#a0bca526fcbe79a1ef3a6f281ef0f916b',1,'IRNeoclimaAc::getPower()'],['../classIRPanasonicAc.html#a2d50ed3994f6cc6e205d2c5fb6c0cc55',1,'IRPanasonicAc::getPower()'],['../classIRSamsungAc.html#aecb2a7187ea08433bed9c6a6f5dfc7e2',1,'IRSamsungAc::getPower()'],['../classIRSanyoAc.html#a0ad0e3522dc1ac2af56812540bbd2c5b',1,'IRSanyoAc::getPower()'],['../classIRSharpAc.html#a5d763e7c40eb7310789444b8746c50c8',1,'IRSharpAc::getPower()'],['../classIRTcl112Ac.html#a631d9d1addb03f18708fbec9d2480651',1,'IRTcl112Ac::getPower()'],['../classIRTechnibelAc.html#a1321272ac58e24e827a194965bb2b7a4',1,'IRTechnibelAc::getPower()'],['../classIRTecoAc.html#a66002ccce4fb4537ac5d937bc3ade7b5',1,'IRTecoAc::getPower()'],['../classIRToshibaAC.html#aacaa7c9c50b96de92f5947b87f4f3829',1,'IRToshibaAC::getPower()'],['../classIRTranscoldAc.html#a6ac4a00b6b9340e2a6ce304a928b148b',1,'IRTranscoldAc::getPower()'],['../classIRTrotecESP.html#a3c3e20f1b0edfe11c65c8e4ec1c0347c',1,'IRTrotecESP::getPower()'],['../classIRTrumaAc.html#a3a27b6b42bcd57cd1acfc2a7d6c4389c',1,'IRTrumaAc::getPower()'],['../classIRVestelAc.html#a88e2b24cc600488a6a27a1e616c80580',1,'IRVestelAc::getPower()'],['../classIRVoltas.html#aec20c3251f68bacf925406f243eb1b1a',1,'IRVoltas::getPower()']]], - ['getpowerbutton_4184',['getPowerButton',['../classIRCoronaAc.html#ab1ec9772fae659e91c4939afab8e77ca',1,'IRCoronaAc']]], - ['getpowerful_4185',['getPowerful',['../classIRDaikinESP.html#af70b79d4d3eaf91db08a1d597ce3e092',1,'IRDaikinESP::getPowerful()'],['../classIRDaikin2.html#a91ddd73b1b38fe74233765feecbd1055',1,'IRDaikin2::getPowerful()'],['../classIRDaikin216.html#a062077a6948d16de8b5f01522a989b2e',1,'IRDaikin216::getPowerful()'],['../classIRDaikin128.html#ab4eef7bc4e0d0ac29f465334687a65dc',1,'IRDaikin128::getPowerful()'],['../classIRDaikin152.html#a0668484f94dcb8ccdb13dba4f7782f7f',1,'IRDaikin152::getPowerful()'],['../classIRPanasonicAc.html#a736b77df0563705095d8f4241a80b1cb',1,'IRPanasonicAc::getPowerful()'],['../classIRSamsungAc.html#acea93892d56221b2563d0db1c09589d1',1,'IRSamsungAc::getPowerful()']]], - ['getpowerspecial_4186',['getPowerSpecial',['../classIRSharpAc.html#af9b74287cfd37c600371e266bffb5be4',1,'IRSharpAc']]], - ['getpowertoggle_4187',['getPowerToggle',['../classIRAirwellAc.html#a73ae0827f0235788d5d6149ea4de8eb0',1,'IRAirwellAc::getPowerToggle()'],['../classIRDaikin128.html#a7bcc31cfbaa886481831236268ba51a2',1,'IRDaikin128::getPowerToggle()'],['../classIRDaikin64.html#a0bb829722a7cdc6625a5a6684c7a7d95',1,'IRDaikin64::getPowerToggle()'],['../classIRHitachiAc1.html#a1028550ea882741a0f98d974671f1fd7',1,'IRHitachiAc1::getPowerToggle()'],['../classIRPanasonicAc32.html#afbbae70ea168e39a3adcf6846e981bd8',1,'IRPanasonicAc32::getPowerToggle()'],['../classIRWhirlpoolAc.html#a23aebd8217ea671f5e847a1eb70e61de',1,'IRWhirlpoolAc::getPowerToggle()']]], - ['getpurify_4188',['getPurify',['../classIRDaikin2.html#a73b691ef3fa4a555f7557d0cad63ef02',1,'IRDaikin2']]], - ['getquiet_4189',['getQuiet',['../classIRDaikinESP.html#ae066d6fd02d78021bb6d1b4cfa2e2ad8',1,'IRDaikinESP::getQuiet()'],['../classIRDaikin2.html#ae77c687b5e258baf941181ae0a261aae',1,'IRDaikin2::getQuiet()'],['../classIRDaikin216.html#adb59e4a7e933c1daa5456b9561710913',1,'IRDaikin216::getQuiet()'],['../classIRDaikin128.html#a0d59cd6b8a05a397d8cda84ecfeea426',1,'IRDaikin128::getQuiet()'],['../classIRDaikin152.html#a2ff46afdbce630536ce80066f8505aad',1,'IRDaikin152::getQuiet()'],['../classIRDaikin64.html#a2ee30dde1870871eaefe246c30990e59',1,'IRDaikin64::getQuiet()'],['../classIRKelvinatorAC.html#a3ecb10d41670852841c2543e6e97c781',1,'IRKelvinatorAC::getQuiet()'],['../classIRMitsubishi136.html#a9ea4cb8a87988cc6c97d7116d154448f',1,'IRMitsubishi136::getQuiet()'],['../classIRMitsubishi112.html#a28b91ee196fc212f7e3259e7429dc770',1,'IRMitsubishi112::getQuiet()'],['../classIRPanasonicAc.html#a8d7dfc9b5f7c7a4523c0bfa4e0bc415a',1,'IRPanasonicAc::getQuiet()'],['../classIRSamsungAc.html#a4296eb88c1b349206d7a0bd551d33ee6',1,'IRSamsungAc::getQuiet()'],['../classIRTrumaAc.html#a5102362a518e49176b3605d6fddf027e',1,'IRTrumaAc::getQuiet()']]], - ['getraw_4190',['getRaw',['../classIRAirwellAc.html#aec84bac505703ad872cd4b6391fbe748',1,'IRAirwellAc::getRaw()'],['../classIRAmcorAc.html#a4dc24f5aa597dba421fdb0e2e0481875',1,'IRAmcorAc::getRaw()'],['../classIRArgoAC.html#ac9e8b45dbbef453a54e3593d7e2927fb',1,'IRArgoAC::getRaw()'],['../classIRCarrierAc64.html#a6f83fc571d5d7d3e3af2237367e66884',1,'IRCarrierAc64::getRaw()'],['../classIRCoolixAC.html#ada7799bf0e9fb40e7475a510187ff762',1,'IRCoolixAC::getRaw()'],['../classIRCoronaAc.html#ac2ba3b4bcefb801da345c9da5daa85fc',1,'IRCoronaAc::getRaw()'],['../classIRDaikinESP.html#ab100221dacc23402f486dee038df046d',1,'IRDaikinESP::getRaw()'],['../classIRDaikin2.html#af4bcf5f856169761c9b0f1fb6607af21',1,'IRDaikin2::getRaw()'],['../classIRDaikin216.html#a178e2dd3578a53356e1cebdbac6024a7',1,'IRDaikin216::getRaw()'],['../classIRDaikin160.html#accccba95fee75626871f91861678c57e',1,'IRDaikin160::getRaw()'],['../classIRDaikin176.html#acd84f4e9f36a91264290a7a0cf0f519e',1,'IRDaikin176::getRaw()'],['../classIRDaikin128.html#a05669c2b1a6720b95d9a5fb898179a10',1,'IRDaikin128::getRaw()'],['../classIRDaikin152.html#af6c492ed5216aedbd5ad922437e842fd',1,'IRDaikin152::getRaw()'],['../classIRDaikin64.html#aa3a947da9925c0f2568eeeeb0d9632b0',1,'IRDaikin64::getRaw()'],['../classIRDelonghiAc.html#a17159362299572642e485a7f815220d7',1,'IRDelonghiAc::getRaw()'],['../classIREcoclimAc.html#aec7b0bf1c542ce8141333a84ca3afcbd',1,'IREcoclimAc::getRaw()'],['../classIRElectraAc.html#a7674d29474ecbbb6366d96056794314c',1,'IRElectraAc::getRaw()'],['../classIRFujitsuAC.html#ae4dce44cab1f26756d63728cb8d55e65',1,'IRFujitsuAC::getRaw()'],['../classIRGoodweatherAc.html#a82d973e562b2425e8823fbc7332c06de',1,'IRGoodweatherAc::getRaw()'],['../classIRGreeAC.html#afa1595d4f69200b0076db1b9f8f2ea73',1,'IRGreeAC::getRaw()'],['../classIRHaierAC.html#abf72eed86c2c86c4f0f5f49f6a788b82',1,'IRHaierAC::getRaw()'],['../classIRHaierACYRW02.html#abca7bbe8c723551723f24f186343b764',1,'IRHaierACYRW02::getRaw()'],['../classIRHitachiAc.html#a8dafb9436f63cfc2d7e4f558fbd6e1ab',1,'IRHitachiAc::getRaw()'],['../classIRHitachiAc1.html#ad850b6364603880ccc444381e85af564',1,'IRHitachiAc1::getRaw()'],['../classIRHitachiAc424.html#acd8388f938feeaf6808ff65779435b5d',1,'IRHitachiAc424::getRaw()'],['../classIRHitachiAc3.html#a915605ca6d0bf3ff6fc9b376ddd394ae',1,'IRHitachiAc3::getRaw()'],['../classIRKelonAc.html#a9406ac65db0b49d31d34344103faeb62',1,'IRKelonAc::getRaw()'],['../classIRKelvinatorAC.html#a09149dd7bc45ca50b0c490b9c1f1e6f4',1,'IRKelvinatorAC::getRaw()'],['../classIRLgAc.html#afcb529d2f2c9016388264b80e6a99351',1,'IRLgAc::getRaw()'],['../classIRMideaAC.html#ae0b2c3a5a0a1d84eaeb462bbbe944d97',1,'IRMideaAC::getRaw()'],['../classIRMitsubishiAC.html#a1f2d0ea70bdeb71efab4c20ccd876aa9',1,'IRMitsubishiAC::getRaw()'],['../classIRMitsubishi136.html#a61cceec2bf241a75be1389391e8f3d9a',1,'IRMitsubishi136::getRaw()'],['../classIRMitsubishi112.html#a5e47e892921b8464652b55f41f42fd9a',1,'IRMitsubishi112::getRaw()'],['../classIRMitsubishiHeavy152Ac.html#a34ae73479c76b08512eaa87ed0662c0a',1,'IRMitsubishiHeavy152Ac::getRaw()'],['../classIRMitsubishiHeavy88Ac.html#af96915ac45861327ed7d55803dadd4fd',1,'IRMitsubishiHeavy88Ac::getRaw()'],['../classIRNeoclimaAc.html#a1f67329cad92d4252b0d33effce6380e',1,'IRNeoclimaAc::getRaw()'],['../classIRPanasonicAc.html#ad65c2bcdc3984a986f5ef2f03b5574d4',1,'IRPanasonicAc::getRaw()'],['../classIRPanasonicAc32.html#a9128df3724e0767070718c9811ce7d2d',1,'IRPanasonicAc32::getRaw()'],['../classIRSamsungAc.html#a96c6ac410053f0f2804160040d9fcf12',1,'IRSamsungAc::getRaw()'],['../classIRSanyoAc.html#a0ae6388f53eaf58d9c9276ab192e846b',1,'IRSanyoAc::getRaw()'],['../classIRSharpAc.html#a9d680b0145c376060bd2d2e4c2630162',1,'IRSharpAc::getRaw()'],['../classIRTcl112Ac.html#a517375b764d1381aa5a7d4ec962346ec',1,'IRTcl112Ac::getRaw()'],['../classIRTechnibelAc.html#ad606f7448fdb0813f52f253fd218562d',1,'IRTechnibelAc::getRaw()'],['../classIRTecoAc.html#ab88386c5c7669437dfbb91b1fa6321ed',1,'IRTecoAc::getRaw()'],['../classIRToshibaAC.html#a3572a06423851d2c4da5f85133a1a8ff',1,'IRToshibaAC::getRaw()'],['../classIRTranscoldAc.html#aaf7aa5d00d7447bfcb82d17ed1f66a6d',1,'IRTranscoldAc::getRaw()'],['../classIRTrotecESP.html#a412dd2cf9dcb711003bcbb5b579cb2b8',1,'IRTrotecESP::getRaw()'],['../classIRTrumaAc.html#a96c74884f744b75ba230bb7a4464fd21',1,'IRTrumaAc::getRaw()'],['../classIRVestelAc.html#afffd1dbcdec22ecca4efe9a996bf27e5',1,'IRVestelAc::getRaw()'],['../classIRVoltas.html#a8718fd8231a8b1c282c5c2a4b2e9c176',1,'IRVoltas::getRaw()'],['../classIRWhirlpoolAc.html#a788a6a5373256e10200969cc5c73da63',1,'IRWhirlpoolAc::getRaw()']]], - ['getrclevel_4191',['getRClevel',['../classIRrecv.html#a8e32daaa903a8e42dad7faaf405b33dc',1,'IRrecv']]], - ['getroomtemp_4192',['getRoomTemp',['../classIRArgoAC.html#aeae1c1fb6f1a3eeb4296849b0be6c44c',1,'IRArgoAC']]], - ['getsave_4193',['getSave',['../classIRTecoAc.html#a75175a6a3bbe4bc37323042c1f902a34',1,'IRTecoAc']]], - ['getsectionbyte_4194',['getSectionByte',['../classIRCoronaAc.html#aed9181df842370739a5b4977b20769f9',1,'IRCoronaAc']]], - ['getsectionchecksum_4195',['getSectionChecksum',['../namespaceIRXmpUtils.html#a60f5e4774b9ff0e08ae54844b132d5fb',1,'IRXmpUtils']]], - ['getsensor_4196',['getSensor',['../classIRDaikinESP.html#a6493face77cd685c85d080dd45decbc7',1,'IRDaikinESP::getSensor()'],['../classIRDaikin152.html#af07ad5e4e1b0f3b1cae18d3f4ef0a15f',1,'IRDaikin152::getSensor()'],['../classIRSanyoAc.html#abb18cd13144d0481f7547b7826a381f6',1,'IRSanyoAc::getSensor()']]], - ['getsensortemp_4197',['getSensorTemp',['../classIRCoolixAC.html#ab2f86254c73285bbd420d90d6f089dfd',1,'IRCoolixAC::getSensorTemp()'],['../classIREcoclimAc.html#ac0395413439cc393a8d39a6fb26e1553',1,'IREcoclimAc::getSensorTemp()'],['../classIRMideaAC.html#a3ed0a7ef0acb6e7b7c83ed6722a80a7f',1,'IRMideaAC::getSensorTemp()'],['../classIRSanyoAc.html#abff813c8f55d9f52d705e10fab214963',1,'IRSanyoAc::getSensorTemp()']]], - ['getsilent_4198',['getSilent',['../classIRMitsubishiHeavy152Ac.html#a352fe50eeb18db9f74114dd95e8754dc',1,'IRMitsubishiHeavy152Ac']]], - ['getsleep_4199',['getSleep',['../classIRCarrierAc64.html#ae999122072e0dd1e9b83120292bc6256',1,'IRCarrierAc64::getSleep()'],['../classIRCoolixAC.html#a3baf61e1d13863681ce57f9465c42c65',1,'IRCoolixAC::getSleep()'],['../classIRDaikin128.html#a49f5b2bca44efadb585ec067deed39c3',1,'IRDaikin128::getSleep()'],['../classIRDaikin64.html#a6c158e0701a9b7d821c7a2c3c90d4bea',1,'IRDaikin64::getSleep()'],['../classIRDelonghiAc.html#ab41702206eb36ca6e1cc8689ce259861',1,'IRDelonghiAc::getSleep()'],['../classIRGoodweatherAc.html#a17ddc9ee4e4200176ede62817ed7cb7f',1,'IRGoodweatherAc::getSleep()'],['../classIRGreeAC.html#a54b727511a82eca6fb712bea3ae357bb',1,'IRGreeAC::getSleep()'],['../classIRHaierAC.html#af88bef780a4f14f44cd7d2549f3838b3',1,'IRHaierAC::getSleep()'],['../classIRHaierACYRW02.html#afcd1dc8fbf846040ead3122d2b5ea3b7',1,'IRHaierACYRW02::getSleep()'],['../classIRHitachiAc1.html#a7bd7318f8b02e1f0db1d4b23f8845f03',1,'IRHitachiAc1::getSleep()'],['../classIRKelonAc.html#afbc72e3dfaa1782fa84e6aae9433dd42',1,'IRKelonAc::getSleep()'],['../classIRMideaAC.html#a2cef1181e13416425edb1bac972c4adf',1,'IRMideaAC::getSleep()'],['../classIRNeoclimaAc.html#a139adc7789bcbc3914906331759fac48',1,'IRNeoclimaAc::getSleep()'],['../classIRSanyoAc.html#ab0a41518ea6ed5005141bef874ab09af',1,'IRSanyoAc::getSleep()'],['../classIRTechnibelAc.html#a36da9a7b867fb8b4b36812f0bb9abf8f',1,'IRTechnibelAc::getSleep()'],['../classIRTecoAc.html#a3a86eb6a4d6d1b4ae0069aea245c0d86',1,'IRTecoAc::getSleep()'],['../classIRTrotecESP.html#a71743691c207d13115383899cdbd26fe',1,'IRTrotecESP::getSleep()'],['../classIRVestelAc.html#a31143f56418da08af313eccf0fd46c40',1,'IRVestelAc::getSleep()'],['../classIRVoltas.html#a56795d5b7cb4a42df4d1289363bfe276',1,'IRVoltas::getSleep()'],['../classIRWhirlpoolAc.html#ab8bcb6bce16a10c7184bf7226c9cb9c7',1,'IRWhirlpoolAc::getSleep()']]], - ['getsleeptime_4200',['getSleepTime',['../classIRDaikin2.html#a267a7975e882ffc884eccbdc16a0df5f',1,'IRDaikin2']]], - ['getsleeptimerenabled_4201',['getSleepTimerEnabled',['../classIRDaikin2.html#a763e88c841fc6b32521787d3f1df32e4',1,'IRDaikin2']]], - ['getspecial_4202',['getSpecial',['../classIRSharpAc.html#a3d0a128734a796557dcda8054e3056fd',1,'IRSharpAc']]], - ['getspeed_4203',['getSpeed',['../classIRTrotecESP.html#ae0ede3d969d6f3903dca7899efd674fd',1,'IRTrotecESP']]], - ['getstartclock_4204',['getStartClock',['../classIRMitsubishiAC.html#aac0b7c36e9eb1b5254fe6f6966cc0206',1,'IRMitsubishiAC']]], - ['getstate_4205',['getState',['../classIRac.html#af0122722691881b04c312bb30efcc3f2',1,'IRac']]], - ['getstatelength_4206',['getStateLength',['../classIRFujitsuAC.html#a02636372996211d464c7394329921ea0',1,'IRFujitsuAC::getStateLength()'],['../classIRToshibaAC.html#af65addadf7cf47d2178fdf9c9fa16bd8',1,'IRToshibaAC::getStateLength()']]], - ['getstateprev_4207',['getStatePrev',['../classIRac.html#adf582223eae0127491c7f1db38f101d3',1,'IRac']]], - ['getstopclock_4208',['getStopClock',['../classIRMitsubishiAC.html#affbddec76d8f00f9a2cbf568b2e69233',1,'IRMitsubishiAC']]], - ['getsuper_4209',['getSuper',['../classIRWhirlpoolAc.html#af9e4fd82307476b1fb71db980949c970',1,'IRWhirlpoolAc']]], - ['getsupercool_4210',['getSupercool',['../classIRKelonAc.html#ad46eec811631a9b1732bec75cccd393c',1,'IRKelonAc']]], - ['getswing_4211',['getSwing',['../classIRCoolixAC.html#a59b96858b6fe88f46de40fd3c743f0e0',1,'IRCoolixAC::getSwing()'],['../classIRFujitsuAC.html#ac0f7128a617e01440bb4f12321cd81f7',1,'IRFujitsuAC::getSwing()'],['../classIRGoodweatherAc.html#a4112cccacc2f8ea30c7d8bdb068beae0',1,'IRGoodweatherAc::getSwing()'],['../classIRHaierAC.html#ac1192427f02d7f77bb88105d74fc8276',1,'IRHaierAC::getSwing()'],['../classIRHaierACYRW02.html#aca4d95809fad3e6851bb9af20e00b520',1,'IRHaierACYRW02::getSwing()'],['../classIRSamsungAc.html#a5627d39ea3af4d1e948fc4b8339baf9b',1,'IRSamsungAc::getSwing()'],['../classIRTechnibelAc.html#a8f5265c3752c98a48a6be0ef443a9248',1,'IRTechnibelAc::getSwing()'],['../classIRTecoAc.html#a91d2fb0dfbbfb3c97ec9691655ee111f',1,'IRTecoAc::getSwing()'],['../classIRToshibaAC.html#a18998242b9d04a6702585d489f25c56f',1,'IRToshibaAC::getSwing()'],['../classIRTranscoldAc.html#a9d427219a71afa71fb5518b2abb6d202',1,'IRTranscoldAc::getSwing()'],['../classIRVestelAc.html#a5f1d1009cc3cd29123a0db815e437c3a',1,'IRVestelAc::getSwing()'],['../classIRWhirlpoolAc.html#aeb6a97f0407caf9a7a98098397e68335',1,'IRWhirlpoolAc::getSwing()']]], - ['getswingh_4212',['getSwingH',['../classIRElectraAc.html#ae71e3f7bb1a4caa54c9cdbc99d29c381',1,'IRElectraAc::getSwingH()'],['../classIRHitachiAc1.html#a18a07374143855102df4aa1e6415f524',1,'IRHitachiAc1::getSwingH()'],['../classIRHitachiAc344.html#ad3a2a8cfda11640d3c163ab09d84c2b3',1,'IRHitachiAc344::getSwingH()'],['../classIRMitsubishi112.html#ab760d57617d2a085be1e09c1dc6fb314',1,'IRMitsubishi112::getSwingH()'],['../classIRNeoclimaAc.html#aa0e598394a411e627a684525053a6500',1,'IRNeoclimaAc::getSwingH()'],['../classIRVoltas.html#a681b2f013a436bc1a117071ccc36c1cf',1,'IRVoltas::getSwingH()']]], - ['getswinghchange_4213',['getSwingHChange',['../classIRVoltas.html#ac7f222cb487a772d77dea53e489ef614',1,'IRVoltas']]], - ['getswinghorizontal_4214',['getSwingHorizontal',['../classIRDaikinESP.html#aff785e5f56246db3bebff7cfe09417ed',1,'IRDaikinESP::getSwingHorizontal()'],['../classIRDaikin2.html#adec30b33929a1cd219ae6d50eb44fe17',1,'IRDaikin2::getSwingHorizontal()'],['../classIRDaikin216.html#afb800780b003ad6b77f310e168ea8024',1,'IRDaikin216::getSwingHorizontal()'],['../classIRDaikin176.html#a4cf043df8f6f2e5a3554208dff0d963d',1,'IRDaikin176::getSwingHorizontal()'],['../classIRHitachiAc.html#a04734465f6c3c5deb28f0a42d0d6bc84',1,'IRHitachiAc::getSwingHorizontal()'],['../classIRKelvinatorAC.html#ab24237062a73a8c236b6691a0277c1f3',1,'IRKelvinatorAC::getSwingHorizontal()'],['../classIRMitsubishiHeavy152Ac.html#aa16ca11537459dbbad1267e227898aef',1,'IRMitsubishiHeavy152Ac::getSwingHorizontal()'],['../classIRMitsubishiHeavy88Ac.html#a90065b9855d805e7cec4d4d6c596f956',1,'IRMitsubishiHeavy88Ac::getSwingHorizontal()'],['../classIRPanasonicAc.html#a37d9b268b3c8527be0939e0a24b02ef6',1,'IRPanasonicAc::getSwingHorizontal()'],['../classIRPanasonicAc32.html#aa1d2c9d265db4c3395376c45ba6b5bba',1,'IRPanasonicAc32::getSwingHorizontal()'],['../classIRTcl112Ac.html#aa39f0f91e6a59477c914189817ae5518',1,'IRTcl112Ac::getSwingHorizontal()']]], - ['getswingtoggle_4215',['getSwingToggle',['../classIRHitachiAc1.html#a79aea8264a5d6b4bfd2d2ce6651ac8a5',1,'IRHitachiAc1::getSwingToggle()'],['../classIRSharpAc.html#af3191879408c280c108fd0afdbce475d',1,'IRSharpAc::getSwingToggle()']]], - ['getswingv_4216',['getSwingV',['../classIRCarrierAc64.html#a22e14700eb0efe9f28c8008297a21ced',1,'IRCarrierAc64::getSwingV()'],['../classIRDaikin152.html#aa728135169cbe54291e362dcffebc23a',1,'IRDaikin152::getSwingV()'],['../classIRElectraAc.html#a5ea68ed936a2395ea72eac562420f4ee',1,'IRElectraAc::getSwingV()'],['../classIRHitachiAc1.html#a66f24e20b53a1d40d465b36d7bb0b6b2',1,'IRHitachiAc1::getSwingV()'],['../classIRHitachiAc344.html#a86f1db7b42edf48e751b2a6a0bca8c47',1,'IRHitachiAc344::getSwingV()'],['../classIRMitsubishi136.html#a3bd3e55f343c18e915549f94ca2f42a6',1,'IRMitsubishi136::getSwingV()'],['../classIRMitsubishi112.html#a42ef9d26b85d9dac34730e7f65c6256b',1,'IRMitsubishi112::getSwingV()'],['../classIRNeoclimaAc.html#aaaac3278cfe3120e3973b38ade87b904',1,'IRNeoclimaAc::getSwingV()'],['../classIRSanyoAc.html#abcb0f05930ac13b9229a8575a99c9159',1,'IRSanyoAc::getSwingV()'],['../classIRVoltas.html#a20360a21d87672e3a2f569be29c840f4',1,'IRVoltas::getSwingV()']]], - ['getswingvertical_4217',['getSwingVertical',['../classIRDaikinESP.html#a2c50ee50ce429da67ec00182151ff4ff',1,'IRDaikinESP::getSwingVertical()'],['../classIRDaikin2.html#a411a950d43da08070ef1ad744f7188f1',1,'IRDaikin2::getSwingVertical()'],['../classIRDaikin216.html#af00b48f968c5ab428c36bde8886c9e31',1,'IRDaikin216::getSwingVertical()'],['../classIRDaikin160.html#ace47ac509abe05ad9c97eeeb7e9916db',1,'IRDaikin160::getSwingVertical()'],['../classIRDaikin128.html#a66b247675babf3d4f571c2c6e7237b14',1,'IRDaikin128::getSwingVertical()'],['../classIRDaikin64.html#a71b4190e3f871815b549c531d134f925',1,'IRDaikin64::getSwingVertical()'],['../classIRHitachiAc.html#ad494c4e80fd7f041e4ab7d9f18f0985a',1,'IRHitachiAc::getSwingVertical()'],['../classIRKelvinatorAC.html#aafb8deadf87564b4111a44ffaf9c866a',1,'IRKelvinatorAC::getSwingVertical()'],['../classIRMitsubishiHeavy152Ac.html#ab8fe96c4c97c3621e006326a849f25fe',1,'IRMitsubishiHeavy152Ac::getSwingVertical()'],['../classIRMitsubishiHeavy88Ac.html#a68dc25472a3a8c652b62ca9c0265ae07',1,'IRMitsubishiHeavy88Ac::getSwingVertical()'],['../classIRPanasonicAc.html#a7a35303cd4fb4b23c0e5a25777d5819c',1,'IRPanasonicAc::getSwingVertical()'],['../classIRPanasonicAc32.html#a93326072ab7684c147673ff7a5074799',1,'IRPanasonicAc32::getSwingVertical()'],['../classIRTcl112Ac.html#ac997659c2ab82cfa1bf8eaa11fc0efc1',1,'IRTcl112Ac::getSwingVertical()']]], - ['getswingverticalauto_4218',['getSwingVerticalAuto',['../classIRGreeAC.html#afaeb34a429e75989593d1311e4487ae5',1,'IRGreeAC']]], - ['getswingverticalposition_4219',['getSwingVerticalPosition',['../classIRGreeAC.html#a55f30d5b23edc18dd873f9a1fbace43c',1,'IRGreeAC']]], - ['getswingvstep_4220',['getSwingVStep',['../classIRCoolixAC.html#af1324a62bdb4d847bf02b635d3a1df05',1,'IRCoolixAC::getSwingVStep()'],['../classIRMideaAC.html#ab963d4e492689a669cd97345859f7d41',1,'IRMideaAC::getSwingVStep()']]], - ['getswingvtoggle_4221',['getSwingVToggle',['../classIRCoronaAc.html#a1d9dd3fae0695522cbb2a97a110c4428',1,'IRCoronaAc::getSwingVToggle()'],['../classIRHitachiAc424.html#aafd0dd25455dd9743cf4fd879a843e54',1,'IRHitachiAc424::getSwingVToggle()'],['../classIRMideaAC.html#a50b260d69bc0df8851bfccb003971dfe',1,'IRMideaAC::getSwingVToggle()']]], - ['gettemp_4222',['getTemp',['../classIRAirwellAc.html#aee52deba26ba5b217704667d159d1110',1,'IRAirwellAc::getTemp()'],['../classIRAmcorAc.html#a5a16756250e4331fffb74608439a5813',1,'IRAmcorAc::getTemp()'],['../classIRArgoAC.html#a061fa1b6c4472f8d59a3a3469a6dd514',1,'IRArgoAC::getTemp()'],['../classIRCarrierAc64.html#a38583e54e47ae08b2ce3469f55797e63',1,'IRCarrierAc64::getTemp()'],['../classIRCoolixAC.html#a5861b7089a7fb2dab02be36b287a42e8',1,'IRCoolixAC::getTemp()'],['../classIRCoronaAc.html#acab661bc33a7bc8bc1da85af70eab334',1,'IRCoronaAc::getTemp()'],['../classIRDaikinESP.html#a8aa56cf86e6b417dfaea77d9c0eada06',1,'IRDaikinESP::getTemp()'],['../classIRDaikin2.html#ad5c2f9113952e82329d943565445074c',1,'IRDaikin2::getTemp()'],['../classIRDaikin216.html#ac6413e168b366658396b4c90ecd0d243',1,'IRDaikin216::getTemp()'],['../classIRDaikin160.html#a3e3e27cc129f49117fa6da49e24f3b1f',1,'IRDaikin160::getTemp()'],['../classIRDaikin176.html#a9d1edc9dbb661deec9b6a22e3d3ab307',1,'IRDaikin176::getTemp()'],['../classIRDaikin128.html#ab54d88d9d00263102856483cebd00ec6',1,'IRDaikin128::getTemp()'],['../classIRDaikin152.html#a2090bcca7631181cf8ad1551b56f4df9',1,'IRDaikin152::getTemp()'],['../classIRDaikin64.html#a32860d84a3a5378d753a533d948a1a33',1,'IRDaikin64::getTemp()'],['../classIRDelonghiAc.html#a1c2d1e8a10cac59b9ef925a26191c99c',1,'IRDelonghiAc::getTemp()'],['../classIREcoclimAc.html#a4a0a22deb136371f5d93c40363cc65e9',1,'IREcoclimAc::getTemp()'],['../classIRElectraAc.html#ab3ac984ca54b6a7f7b89db6c6c664c1b',1,'IRElectraAc::getTemp()'],['../classIRFujitsuAC.html#aba877f65241647ab1e59f3d68026c906',1,'IRFujitsuAC::getTemp()'],['../classIRGoodweatherAc.html#a253e92453136f37c3082a5d492d45c82',1,'IRGoodweatherAc::getTemp()'],['../classIRGreeAC.html#a909b49c3ca07a8b38e1fe1ceae668998',1,'IRGreeAC::getTemp()'],['../classIRHaierAC.html#aa6f23534e63039527bf92fc85fed2e2c',1,'IRHaierAC::getTemp()'],['../classIRHaierACYRW02.html#a29cf50881ef62c18499e81a43c717c46',1,'IRHaierACYRW02::getTemp()'],['../classIRHitachiAc.html#a480338cf955af5d613f28f7f227f4b96',1,'IRHitachiAc::getTemp()'],['../classIRHitachiAc1.html#a3ce1fdb58c722d78ca2f94ed81b5a12c',1,'IRHitachiAc1::getTemp()'],['../classIRHitachiAc424.html#a166d3d7cd9028d906a7a259902c8898c',1,'IRHitachiAc424::getTemp()'],['../classIRKelonAc.html#aaf519bf89bb0b93513c59051ed61a052',1,'IRKelonAc::getTemp()'],['../classIRKelvinatorAC.html#a6b7c66f0bc68f2d43fbbabce7933e0a5',1,'IRKelvinatorAC::getTemp()'],['../classIRLgAc.html#ab31fa58db72e02efe836e398d8c4ac85',1,'IRLgAc::getTemp()'],['../classIRMideaAC.html#a319f5ca24e977a6b7f0df93324dab63e',1,'IRMideaAC::getTemp()'],['../classIRMitsubishiAC.html#ae77c2975bd1a0fd3dcebff4fc4a8ac1b',1,'IRMitsubishiAC::getTemp()'],['../classIRMitsubishi136.html#ab6bb4c13ee3507fd048e5213eca9be4f',1,'IRMitsubishi136::getTemp()'],['../classIRMitsubishi112.html#a0076a6a8181b50148a7aff68637c040d',1,'IRMitsubishi112::getTemp()'],['../classIRMitsubishiHeavy152Ac.html#a78bf8b8e2af65a8800bb1f0c7e6c2ec6',1,'IRMitsubishiHeavy152Ac::getTemp()'],['../classIRMitsubishiHeavy88Ac.html#aa8bf74217098c414306d0fc50e0beaa7',1,'IRMitsubishiHeavy88Ac::getTemp()'],['../classIRNeoclimaAc.html#a08bf660c8662806e60cf1024eb219b60',1,'IRNeoclimaAc::getTemp()'],['../classIRPanasonicAc.html#af8a5607c317e541752fada6ca79ee80f',1,'IRPanasonicAc::getTemp()'],['../classIRPanasonicAc32.html#a1813480b9ecf4cee49d41f3da84f2e9f',1,'IRPanasonicAc32::getTemp()'],['../classIRSamsungAc.html#a1e770b7736fe5602bb49d82a5c3b0dd2',1,'IRSamsungAc::getTemp()'],['../classIRSanyoAc.html#a92c72388fd6c948f1869f7b4e46ee1ee',1,'IRSanyoAc::getTemp()'],['../classIRSharpAc.html#af92f3a2d3932cbd21373f556a49c90a5',1,'IRSharpAc::getTemp()'],['../classIRTcl112Ac.html#a0b67c42831d2f6af39a5512bbf290ec7',1,'IRTcl112Ac::getTemp()'],['../classIRTechnibelAc.html#aef4e87289ee51b68ef8da511833c15f4',1,'IRTechnibelAc::getTemp()'],['../classIRTecoAc.html#adb87a792c60fd2698f9333d96327dba7',1,'IRTecoAc::getTemp()'],['../classIRToshibaAC.html#af7321d15910eef276a6a716e868f9fcf',1,'IRToshibaAC::getTemp()'],['../classIRTranscoldAc.html#a73c260bf13212948872a96ce17d5adb7',1,'IRTranscoldAc::getTemp()'],['../classIRTrotecESP.html#a387cfde6cb1911aa0605f4215527e1b0',1,'IRTrotecESP::getTemp()'],['../classIRTrumaAc.html#a779a279fe607c42f2b4a7b4ff8eaf13f',1,'IRTrumaAc::getTemp()'],['../classIRVestelAc.html#a822bb550803b7fbb1ae9f00c51279259',1,'IRVestelAc::getTemp()'],['../classIRVoltas.html#a94571ef1d0844e0e6ca1b9a82b69ce10',1,'IRVoltas::getTemp()'],['../classIRWhirlpoolAc.html#ae9b6764f01ea525e86bdd5288715992d',1,'IRWhirlpoolAc::getTemp()']]], - ['gettempoffset_4223',['getTempOffset',['../classIRWhirlpoolAc.html#abb44b09321ea607d170b59bbc30d5c49',1,'IRWhirlpoolAc']]], - ['gettempraw_4224',['getTempRaw',['../classIRCoolixAC.html#a83e88b3f9d648ffd607db457fea401bc',1,'IRCoolixAC']]], - ['gettempunit_4225',['getTempUnit',['../classIRDelonghiAc.html#a444276a706d2b5099eab4452cfe4712d',1,'IRDelonghiAc::getTempUnit()'],['../classIRTechnibelAc.html#a19c61ade2ad976dd93108cafabe6a23f',1,'IRTechnibelAc::getTempUnit()']]], - ['gettempunits_4226',['getTempUnits',['../classIRNeoclimaAc.html#a14074dc932bd554c3c1746e6b0ecf43c',1,'IRNeoclimaAc']]], - ['gettime_4227',['getTime',['../classIRVestelAc.html#a7310f2d251aaba0467718fb8c8983f3d',1,'IRVestelAc']]], - ['gettimer_4228',['getTimer',['../classIRGreeAC.html#a3e58e19819ae3b74d8fa9c9eca2f8be9',1,'IRGreeAC::getTimer()'],['../classIRKelonAc.html#a4e24235f913ebda516a14fb6629a0a67',1,'IRKelonAc::getTimer()'],['../classIRMitsubishiAC.html#a595e06747e8d1b2d7bc22dad17c0e9d2',1,'IRMitsubishiAC::getTimer()'],['../classIRTechnibelAc.html#a631b234cfb8445785ee3cfbbeb1366d3',1,'IRTechnibelAc::getTimer()'],['../classIRTecoAc.html#a3a9a48da5f42ae26f1c2f250702744f6',1,'IRTecoAc::getTimer()'],['../classIRTrotecESP.html#a85fb0a416c58c4f05af3abae2ae5c115',1,'IRTrotecESP::getTimer()'],['../classIRVestelAc.html#afa445ac18ef2b872a10c6048b222e90c',1,'IRVestelAc::getTimer()']]], - ['gettimerenabled_4229',['getTimerEnabled',['../classIRGreeAC.html#a483ddaec91302343cef14b0c5024b965',1,'IRGreeAC::getTimerEnabled()'],['../classIRKelonAc.html#a5ff072da7dc5215bfb9140c638f10061',1,'IRKelonAc::getTimerEnabled()'],['../classIRSharpAc.html#ae9147b6dd3011b223e811dff34b08e20',1,'IRSharpAc::getTimerEnabled()'],['../classIRTechnibelAc.html#a86d21954cfc55f2dbb9d3ee8adb1a5d6',1,'IRTechnibelAc::getTimerEnabled()'],['../classIRTecoAc.html#a82ab7f210c10406b2a30f41f129d4a39',1,'IRTecoAc::getTimerEnabled()']]], - ['gettimertime_4230',['getTimerTime',['../classIRSharpAc.html#a1a035d3d9da5998a342e6a644a8ac1ba',1,'IRSharpAc']]], - ['gettimertype_4231',['getTimerType',['../classIRFujitsuAC.html#a9bbc0e019e58bb990318432db75e8468',1,'IRFujitsuAC::getTimerType()'],['../classIRSharpAc.html#aeab6fe3c2c2777db4d09375868008f00',1,'IRSharpAc::getTimerType()']]], - ['gettogglepower_4232',['getTogglePower',['../classIRKelonAc.html#acf437757e5ee534da08cf1d0ec1c7445',1,'IRKelonAc']]], - ['gettoggleswingvertical_4233',['getToggleSwingVertical',['../classIRKelonAc.html#a4fa220013c5c72afbcbeba4ac0063feb',1,'IRKelonAc']]], - ['gettolerance_4234',['getTolerance',['../classIRrecv.html#a144f64da3b44708394c06b0fbefb6347',1,'IRrecv']]], - ['getturbo_4235',['getTurbo',['../classIRCoolixAC.html#a31f5e82c5e68b1a0b41f4025885bf0cb',1,'IRCoolixAC::getTurbo()'],['../classIRDaikin64.html#a78016d0d11e22ad12020bf96125426d9',1,'IRDaikin64::getTurbo()'],['../classIRElectraAc.html#abfc42bc97c9dc41115383895abe15292',1,'IRElectraAc::getTurbo()'],['../classIRGoodweatherAc.html#a2f15a3c8063af85bc81f3a5f3bcacb5e',1,'IRGoodweatherAc::getTurbo()'],['../classIRGreeAC.html#a3558ad573c7762c1d0f076fd336805eb',1,'IRGreeAC::getTurbo()'],['../classIRHaierACYRW02.html#a0cd7297948d7dd8aafe35775cf26b543',1,'IRHaierACYRW02::getTurbo()'],['../classIRKelvinatorAC.html#aee37bb608940cb0214e1d0c0046c8eee',1,'IRKelvinatorAC::getTurbo()'],['../classIRMitsubishiHeavy152Ac.html#a39a5bfc53cc81ab08835e8e4c30854de',1,'IRMitsubishiHeavy152Ac::getTurbo()'],['../classIRMitsubishiHeavy88Ac.html#a4f1281e42d3eee7824233d8a4f8d37cb',1,'IRMitsubishiHeavy88Ac::getTurbo()'],['../classIRNeoclimaAc.html#a95af8bbe9500fc2f99d30214e38fae85',1,'IRNeoclimaAc::getTurbo()'],['../classIRSharpAc.html#a6b38ef7a3a8fdc4e6f8f3e02336a4e19',1,'IRSharpAc::getTurbo()'],['../classIRTcl112Ac.html#a044a8f5f05a4bbc10bac155b49d27ee5',1,'IRTcl112Ac::getTurbo()'],['../classIRToshibaAC.html#aaf9aa3601885a3d869c2e9dbcd581a93',1,'IRToshibaAC::getTurbo()'],['../classIRVestelAc.html#aa492c2fc2d3ff33cdcc53abe8ecd6ea5',1,'IRVestelAc::getTurbo()'],['../classIRVoltas.html#a0fa61b04f473f208a40059554f6a054b',1,'IRVoltas::getTurbo()']]], - ['getturbotoggle_4236',['getTurboToggle',['../classIRMideaAC.html#a33cf363d9dd94f46005a0be40bd224ff',1,'IRMideaAC']]], - ['gettype_4237',['getType',['../classIREcoclimAc.html#a3a924cc4b0cc7dc1b6eb4a8423785ddb',1,'IREcoclimAc::getType()'],['../classIRMideaAC.html#a1b1c0afbb0b9d7ba93e61df2b339cd14',1,'IRMideaAC::getType()']]], - ['getusecelsius_4238',['getUseCelsius',['../classIRMideaAC.html#a7904de4572d80c0eafe4975682b3ea29',1,'IRMideaAC']]], - ['getusefahrenheit_4239',['getUseFahrenheit',['../classIRGreeAC.html#a55b6dd1354b7246ce959d563dfdfcba4',1,'IRGreeAC']]], - ['getvane_4240',['getVane',['../classIRMitsubishiAC.html#a547a2d4fd52162ece0276978da22d456',1,'IRMitsubishiAC']]], - ['getweeklytimerenable_4241',['getWeeklyTimerEnable',['../classIRDaikinESP.html#a59a0e9726b97887b27a2f869d249b1b7',1,'IRDaikinESP']]], - ['getweeklytimerenabled_4242',['getWeeklyTimerEnabled',['../classIRMitsubishiAC.html#a6da4a89e5ce71c2283d9318c2f26e46e',1,'IRMitsubishiAC']]], - ['getwidevane_4243',['getWideVane',['../classIRMitsubishiAC.html#a6d6008f7d374113cc6b5c3a4f298a287',1,'IRMitsubishiAC']]], - ['getwifi_4244',['getWiFi',['../classIRGreeAC.html#a9e9fb9867977764cac7afdee7083d0a1',1,'IRGreeAC::getWiFi()'],['../classIRVoltas.html#a13460412829d204fe2e51e75188998d2',1,'IRVoltas::getWifi()']]], - ['getxfan_4245',['getXFan',['../classIRGreeAC.html#aa8111e44470062729b56b24268d20eed',1,'IRGreeAC::getXFan()'],['../classIRKelvinatorAC.html#a3ba6705529806f3ca083dd45f4b28377',1,'IRKelvinatorAC::getXFan()']]], - ['getzonefollow_4246',['getZoneFollow',['../classIRCoolixAC.html#acf811a44dfd28627ce352fd79e7ffec5',1,'IRCoolixAC']]], - ['goodweather_4247',['goodweather',['../classIRac.html#ac47ff5c6faf41e6fb37df258a8bafc08',1,'IRac']]], - ['gree_4248',['gree',['../classIRac.html#ab66e48b039c9990bf97cd8c2512a6c70',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.html deleted file mode 100644 index 7422be245..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.js deleted file mode 100644 index c2d86e825..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_8.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['haier_4249',['haier',['../classIRac.html#ae0a29a4cb8c7a4707a7725c576822a58',1,'IRac']]], - ['haieryrwo2_4250',['haierYrwo2',['../classIRac.html#a7bc779a162dd9a1b4c925febec443353',1,'IRac']]], - ['handlespecialstate_4251',['handleSpecialState',['../classIRCoolixAC.html#af78090c6d8b45b4202a80f1223640390',1,'IRCoolixAC::handleSpecialState()'],['../classIRTranscoldAc.html#a01a3e3f8f92b8fb3b6d023e595f3ce17',1,'IRTranscoldAc::handleSpecialState()']]], - ['handletoggles_4252',['handleToggles',['../classIRac.html#a36833999dce4ad608a5a0f084988cfd1',1,'IRac']]], - ['hasacstate_4253',['hasACState',['../IRutils_8cpp.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp'],['../IRutils_8h.html#a6efd4986db60709d3501606ec7ab5382',1,'hasACState(const decode_type_t protocol): IRutils.cpp']]], - ['hasinvertedstates_4254',['hasInvertedStates',['../classIRHitachiAc3.html#ac06b36245c85480d97c1a9f49cfaa005',1,'IRHitachiAc3']]], - ['hasstatechanged_4255',['hasStateChanged',['../classIRac.html#a35258c35a2d2b19886292b22b2aa053a',1,'IRac']]], - ['hitachi_4256',['hitachi',['../classIRac.html#acd0f2fcf03aabf947a19a195000add3c',1,'IRac']]], - ['hitachi1_4257',['hitachi1',['../classIRac.html#ac8807d62f6ae87af72d44b50bed3f17b',1,'IRac']]], - ['hitachi344_4258',['hitachi344',['../classIRac.html#a0bc34635a1a349816344916a82585460',1,'IRac']]], - ['hitachi424_4259',['hitachi424',['../classIRac.html#aec6de0752ddd3a3e7c6824cb1b692508',1,'IRac']]], - ['htmlescape_4260',['htmlEscape',['../namespaceirutils.html#a6e55c6fdcc82e1ef8bd5f73df83609a7',1,'irutils']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.html deleted file mode 100644 index befd4faaa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.js deleted file mode 100644 index cb0e36998..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_9.js +++ /dev/null @@ -1,79 +0,0 @@ -var searchData= -[ - ['initstate_4261',['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)']]], - ['int64tostring_4262',['int64ToString',['../IRutils_8cpp.html#aa1beb5c8700b91d8e5419bafd0a1ed84',1,'int64ToString(int64_t input, uint8_t base): IRutils.cpp'],['../IRutils_8h.html#a1c9b605bf161ffe454f31ef7f91ddede',1,'int64ToString(int64_t input, uint8_t base=10): IRutils.cpp']]], - ['invertbits_4263',['invertBits',['../IRutils_8cpp.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp'],['../IRutils_8h.html#a1a85904f25c8ec77fb554d238c59cfdb',1,'invertBits(const uint64_t data, const uint16_t nbits): IRutils.cpp']]], - ['invertbytepairs_4264',['invertBytePairs',['../namespaceirutils.html#ad818a474349546c84824451a5468f4fe',1,'irutils']]], - ['irac_4265',['IRac',['../classIRac.html#abb0864e277d4f6c68a92c2729112a40d',1,'IRac']]], - ['irairwellac_4266',['IRAirwellAc',['../classIRAirwellAc.html#a38cfe20bff4522034b16d64df64750e8',1,'IRAirwellAc']]], - ['iramcorac_4267',['IRAmcorAc',['../classIRAmcorAc.html#a92db59a33c861dcd3b2960e9711f97c4',1,'IRAmcorAc']]], - ['irargoac_4268',['IRArgoAC',['../classIRArgoAC.html#ad6c2250738397441b8f956d1477b7d70',1,'IRArgoAC']]], - ['ircarrierac64_4269',['IRCarrierAc64',['../classIRCarrierAc64.html#ac225c0f24a0e385a145375ff447ab79b',1,'IRCarrierAc64']]], - ['ircoolixac_4270',['IRCoolixAC',['../classIRCoolixAC.html#a043ad3b74e964e39b111e1fcf9e55f42',1,'IRCoolixAC']]], - ['ircoronaac_4271',['IRCoronaAc',['../classIRCoronaAc.html#aa96f1ffce21cdec5b3901ebbb1c63fbb',1,'IRCoronaAc']]], - ['irdaikin128_4272',['IRDaikin128',['../classIRDaikin128.html#aa669739541daf1a2b39ce1cd0424c43b',1,'IRDaikin128']]], - ['irdaikin152_4273',['IRDaikin152',['../classIRDaikin152.html#a68dce79bab5890d9aea325a45ef8e4a3',1,'IRDaikin152']]], - ['irdaikin160_4274',['IRDaikin160',['../classIRDaikin160.html#a76fb744b041c38abb730bce0538a497a',1,'IRDaikin160']]], - ['irdaikin176_4275',['IRDaikin176',['../classIRDaikin176.html#accfe7c3f34351844d12059455f65f312',1,'IRDaikin176']]], - ['irdaikin2_4276',['IRDaikin2',['../classIRDaikin2.html#a3ffe908313f162b92e92307578592fca',1,'IRDaikin2']]], - ['irdaikin216_4277',['IRDaikin216',['../classIRDaikin216.html#ad802bde79e5ee2d16e3b09fbc8bbe8df',1,'IRDaikin216']]], - ['irdaikin64_4278',['IRDaikin64',['../classIRDaikin64.html#a88855df33ce903884b21d2ef4771e94f',1,'IRDaikin64']]], - ['irdaikinesp_4279',['IRDaikinESP',['../classIRDaikinESP.html#a2652cb45e07e8a4329c16cded9f6ad9a',1,'IRDaikinESP']]], - ['irdelonghiac_4280',['IRDelonghiAc',['../classIRDelonghiAc.html#aa6f8661cf6baa369a0a5b9d775c392e0',1,'IRDelonghiAc']]], - ['irecoclimac_4281',['IREcoclimAc',['../classIREcoclimAc.html#a72a2d765c86a780162c59041e7146f19',1,'IREcoclimAc']]], - ['irelectraac_4282',['IRElectraAc',['../classIRElectraAc.html#a2f56ad22943c3d261b1d2ef88d86e300',1,'IRElectraAc']]], - ['irfujitsuac_4283',['IRFujitsuAC',['../classIRFujitsuAC.html#acdb70f239884507f540b872ba25747ce',1,'IRFujitsuAC']]], - ['irgoodweatherac_4284',['IRGoodweatherAc',['../classIRGoodweatherAc.html#a681feff1a58125cde97b2d7ed0ba775e',1,'IRGoodweatherAc']]], - ['irgreeac_4285',['IRGreeAC',['../classIRGreeAC.html#abf7ead6ebee4bc776f83fb55f6fe6b63',1,'IRGreeAC']]], - ['irhaierac_4286',['IRHaierAC',['../classIRHaierAC.html#a0b78060cbd150cd886a409adc2dea49c',1,'IRHaierAC']]], - ['irhaieracyrw02_4287',['IRHaierACYRW02',['../classIRHaierACYRW02.html#afd9354c36df33434840bbc5f38d4e7ed',1,'IRHaierACYRW02']]], - ['irhitachiac_4288',['IRHitachiAc',['../classIRHitachiAc.html#a4c43e95e0cc28339e7162d7090ae16bf',1,'IRHitachiAc']]], - ['irhitachiac1_4289',['IRHitachiAc1',['../classIRHitachiAc1.html#ac00cfd9a60e08d34f292878de47f622f',1,'IRHitachiAc1']]], - ['irhitachiac3_4290',['IRHitachiAc3',['../classIRHitachiAc3.html#adef0e7ad217f078ce418e3aa82b9cb86',1,'IRHitachiAc3']]], - ['irhitachiac344_4291',['IRHitachiAc344',['../classIRHitachiAc344.html#afbff8a1dd2777880d2d1713d07e1d419',1,'IRHitachiAc344']]], - ['irhitachiac424_4292',['IRHitachiAc424',['../classIRHitachiAc424.html#add708c10a56d20621ef65a0ddcc2aac1',1,'IRHitachiAc424']]], - ['irkelonac_4293',['IRKelonAc',['../classIRKelonAc.html#aad3fc6341d978c41eb3dab1259a1ab54',1,'IRKelonAc']]], - ['irkelvinatorac_4294',['IRKelvinatorAC',['../classIRKelvinatorAC.html#a111dd384b1898a4fb880a19b6d1b1635',1,'IRKelvinatorAC']]], - ['irlgac_4295',['IRLgAc',['../classIRLgAc.html#a290636496526a9ed2057532649709375',1,'IRLgAc']]], - ['irmideaac_4296',['IRMideaAC',['../classIRMideaAC.html#a1ef2f532a1e6c6bfe89617d3fd0d9082',1,'IRMideaAC']]], - ['irmitsubishi112_4297',['IRMitsubishi112',['../classIRMitsubishi112.html#adea6f3b7b7619b0bf6da4a94cec9d712',1,'IRMitsubishi112']]], - ['irmitsubishi136_4298',['IRMitsubishi136',['../classIRMitsubishi136.html#ad92926b993869d0695f11ddb999b2090',1,'IRMitsubishi136']]], - ['irmitsubishiac_4299',['IRMitsubishiAC',['../classIRMitsubishiAC.html#a83fabfd9ebed5cef8dd2a18a85fdf4e6',1,'IRMitsubishiAC']]], - ['irmitsubishiheavy152ac_4300',['IRMitsubishiHeavy152Ac',['../classIRMitsubishiHeavy152Ac.html#a704e9f96c2d0a07f9ba16a400d9c97aa',1,'IRMitsubishiHeavy152Ac']]], - ['irmitsubishiheavy88ac_4301',['IRMitsubishiHeavy88Ac',['../classIRMitsubishiHeavy88Ac.html#aceabecf4a615e807a4636ff5990d77d7',1,'IRMitsubishiHeavy88Ac']]], - ['irneoclimaac_4302',['IRNeoclimaAc',['../classIRNeoclimaAc.html#a99ed2962176e5f12f8387fab977c6395',1,'IRNeoclimaAc']]], - ['irpanasonicac_4303',['IRPanasonicAc',['../classIRPanasonicAc.html#ae8b0f4518ee1a913d47a7101b0a11185',1,'IRPanasonicAc']]], - ['irpanasonicac32_4304',['IRPanasonicAc32',['../classIRPanasonicAc32.html#ade8637984d8c1d5d881dc636d501676d',1,'IRPanasonicAc32']]], - ['irrecv_4305',['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)']]], - ['irsamsungac_4306',['IRSamsungAc',['../classIRSamsungAc.html#a0db771b80d7d7a63b5ecb4b25efee609',1,'IRSamsungAc']]], - ['irsanyoac_4307',['IRSanyoAc',['../classIRSanyoAc.html#ab7b9a1f1685993b95807f7e48624e4e2',1,'IRSanyoAc']]], - ['irsend_4308',['IRsend',['../classIRsend.html#a792780b7de996c90c86dd7b700eaf271',1,'IRsend']]], - ['irsharpac_4309',['IRSharpAc',['../classIRSharpAc.html#a30b5f8f634a41c943b4e1453d12bc980',1,'IRSharpAc']]], - ['irtcl112ac_4310',['IRTcl112Ac',['../classIRTcl112Ac.html#a061bdfdf4444cb5e06fa90824985c1ec',1,'IRTcl112Ac']]], - ['irtechnibelac_4311',['IRTechnibelAc',['../classIRTechnibelAc.html#a799407de348870d5765acf163ab92a75',1,'IRTechnibelAc']]], - ['irtecoac_4312',['IRTecoAc',['../classIRTecoAc.html#a56e3f31a080bfd565570bf3b165e71d4',1,'IRTecoAc']]], - ['irtimer_4313',['IRtimer',['../classIRtimer.html#a09d64d689137ef8ca68973bb9e550e76',1,'IRtimer']]], - ['irtoshibaac_4314',['IRToshibaAC',['../classIRToshibaAC.html#abf2b3db316f7d6acb20c4f7ea2476ec2',1,'IRToshibaAC']]], - ['irtranscoldac_4315',['IRTranscoldAc',['../classIRTranscoldAc.html#a155278b9e5803aacf69a1ae20ed5b652',1,'IRTranscoldAc']]], - ['irtrotecesp_4316',['IRTrotecESP',['../classIRTrotecESP.html#a1b56b6e55bf133ccab6a482090408ee5',1,'IRTrotecESP']]], - ['irtrumaac_4317',['IRTrumaAc',['../classIRTrumaAc.html#a02171342bc69c38b9d13930bfd5c44ff',1,'IRTrumaAc']]], - ['irvestelac_4318',['IRVestelAc',['../classIRVestelAc.html#af1583ef81331edf112a0d04771c2cbec',1,'IRVestelAc']]], - ['irvoltas_4319',['IRVoltas',['../classIRVoltas.html#a4bfb0c5b16507d330abea2a9147f8332',1,'IRVoltas']]], - ['irwhirlpoolac_4320',['IRWhirlpoolAc',['../classIRWhirlpoolAc.html#a89bc9d440a5f7d04a602d7bc73904bc2',1,'IRWhirlpoolAc']]], - ['iseconotoggle_4321',['isEconoToggle',['../classIRMideaAC.html#a227aeed678af6da49b510cb67b02991e',1,'IRMideaAC']]], - ['islighttoggle_4322',['isLightToggle',['../classIRMideaAC.html#ac0f321a8a38bd2cecf453c6aff9020e6',1,'IRMideaAC']]], - ['isofftimeractive_4323',['isOffTimerActive',['../classIRVestelAc.html#ae000ce54cedc707ba8e3dc025b506b54',1,'IRVestelAc']]], - ['isofftimerenabled_4324',['isOffTimerEnabled',['../classIREcoclimAc.html#aa819b7f8deff0823a6e6b59d2decace1',1,'IREcoclimAc::isOffTimerEnabled()'],['../classIRMideaAC.html#a10aa3386a15b46c62083baaca3bcf699',1,'IRMideaAC::isOffTimerEnabled()'],['../classIRPanasonicAc.html#ac8e218b4886d66889734b01232767c8a',1,'IRPanasonicAc::isOffTimerEnabled()'],['../classIRWhirlpoolAc.html#a00ee5757db34855f39d225a9467f2268',1,'IRWhirlpoolAc::isOffTimerEnabled()']]], - ['isontimeractive_4325',['isOnTimerActive',['../classIRVestelAc.html#ad9d0a8755026644b8198398278f2457b',1,'IRVestelAc']]], - ['isontimerenabled_4326',['isOnTimerEnabled',['../classIREcoclimAc.html#acfa7fbedf65508a7e0cea30f8d87edfd',1,'IREcoclimAc::isOnTimerEnabled()'],['../classIRMideaAC.html#a61f53e462caa1bc8329a6ebadbe47f93',1,'IRMideaAC::isOnTimerEnabled()'],['../classIRPanasonicAc.html#a04cbf8f5063a3892020d383c77abc57c',1,'IRPanasonicAc::isOnTimerEnabled()'],['../classIRWhirlpoolAc.html#a5cf82e21ff75cc6edb39a42b369240a0',1,'IRWhirlpoolAc::isOnTimerEnabled()']]], - ['ispowerspecial_4327',['isPowerSpecial',['../classIRSharpAc.html#ae18f76e03fd9ee8cb5bb8e9b41718e9d',1,'IRSharpAc']]], - ['isprotocolsupported_4328',['isProtocolSupported',['../classIRac.html#ad9c2fc9d07db70704f78a2d5f7be5b1c',1,'IRac']]], - ['isrepeat_4329',['isRepeat',['../namespaceIRXmpUtils.html#a25e2d3af57d86fecf7b01b6a0639d0cc',1,'IRXmpUtils']]], - ['isspecialstate_4330',['isSpecialState',['../classIRCoolixAC.html#aa9bfc6c78fca87962c9335d60f625322',1,'IRCoolixAC::isSpecialState()'],['../classIRTranscoldAc.html#aacef65f9dc6c1315db1e1af7a09a5dc6',1,'IRTranscoldAc::isSpecialState()']]], - ['isswingvstep_4331',['isSwingVStep',['../classIRMideaAC.html#a360aa29e0f6817709644f6b36abce754',1,'IRMideaAC']]], - ['isswingvtoggle_4332',['isSwingVToggle',['../classIRMideaAC.html#a5277fa1d077650be0edcf284db50d38b',1,'IRMideaAC']]], - ['istimecommand_4333',['isTimeCommand',['../classIRVestelAc.html#a6dd52adaef191c8e735e2d13bc489a9f',1,'IRVestelAc']]], - ['istimeractive_4334',['isTimerActive',['../classIRVestelAc.html#a06a63f80a7cdadac86ffbd4f5795b14b',1,'IRVestelAc']]], - ['isturbotoggle_4335',['isTurboToggle',['../classIRMideaAC.html#ae40e95fbee35ecc00ebff23c0b64e56d',1,'IRMideaAC']]], - ['isvalidlgac_4336',['isValidLgAc',['../classIRLgAc.html#ad35d47f590ee4bd51bfdf9d911bce242',1,'IRLgAc']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.html deleted file mode 100644 index a81e96336..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.js deleted file mode 100644 index 5028ac36e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_a.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['kelon_4337',['kelon',['../classIRac.html#a38bd8145eecbb840bda38bb280466a17',1,'IRac']]], - ['kelvinator_4338',['kelvinator',['../classIRac.html#a6e4d8061841a7271205f81bd8e7d6171',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.html deleted file mode 100644 index 345265d62..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.js deleted file mode 100644 index 28d1e12ea..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_b.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['ledoff_4339',['ledOff',['../classIRsend.html#ae71cc5aa99f894785fb4f7abc05841b2',1,'IRsend']]], - ['ledon_4340',['ledOn',['../classIRsend.html#a13d804171fa7c14aff4def38c6ffb6c8',1,'IRsend']]], - ['lg_4341',['lg',['../classIRac.html#afad31ecf9eae573882d53dd6629485fb',1,'IRac']]], - ['lowlevelsanitycheck_4342',['lowLevelSanityCheck',['../namespaceirutils.html#af67b75834051c4aced358b274c1c55a8',1,'irutils']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.html deleted file mode 100644 index 858bfd6c9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.js deleted file mode 100644 index fffd31a38..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_c.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['mark_4343',['mark',['../classIRsend.html#a7399389d40bfe24bc062ffca88fc3780',1,'IRsend']]], - ['markassent_4344',['markAsSent',['../classIRac.html#ad0e45b13f477e29823b8c138704536c4',1,'IRac']]], - ['match_4345',['match',['../classIRrecv.html#a8bc218dae714ab189a3da4fff269cdaa',1,'IRrecv']]], - ['matchatleast_4346',['matchAtLeast',['../classIRrecv.html#ae7bfd4ff689c7563c65c4e6e8c58187a',1,'IRrecv']]], - ['matchbytes_4347',['matchBytes',['../classIRrecv.html#a97534938349b52b46395be1d3e2f59fa',1,'IRrecv']]], - ['matchdata_4348',['matchData',['../classIRrecv.html#a1d8b50fcac074e71e9a92a62f62f0be7',1,'IRrecv']]], - ['matchgeneric_4349',['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_4350',['matchGenericConstBitTime',['../classIRrecv.html#a4582d75ef1d11aee35fce86c38dcccf0',1,'IRrecv']]], - ['matchmanchester_4351',['matchManchester',['../classIRrecv.html#ade70777ad0e047e11b99b03d8f5e3728',1,'IRrecv']]], - ['matchmanchesterdata_4352',['matchManchesterData',['../classIRrecv.html#ab44403411a217eb8ea75271575f8ab83',1,'IRrecv']]], - ['matchmark_4353',['matchMark',['../classIRrecv.html#ae78ef12b8194db5d3cb5a2605d29830d',1,'IRrecv']]], - ['matchmarkrange_4354',['matchMarkRange',['../classIRrecv.html#adf11286f0ef5e8984396b5f6331db87e',1,'IRrecv']]], - ['matchspace_4355',['matchSpace',['../classIRrecv.html#a9fd363e8b2edee2ed3c473349ecc58fc',1,'IRrecv']]], - ['matchspacerange_4356',['matchSpaceRange',['../classIRrecv.html#a2200a9c1064497838506eb278791bb03',1,'IRrecv']]], - ['midea_4357',['midea',['../classIRac.html#a11765b1d08c0c02f5e08254bd870dae6',1,'IRac']]], - ['minrepeats_4358',['minRepeats',['../classIRsend.html#ae02772f34180163861b7e4eb3520db2a',1,'IRsend']]], - ['minstostring_4359',['minsToString',['../namespaceirutils.html#aebab40a2c69624adc1a5a8a6db72952f',1,'irutils']]], - ['mitsubishi_4360',['mitsubishi',['../classIRac.html#aaa60bcac75dc5dda40c78f8c227b19a3',1,'IRac']]], - ['mitsubishi112_4361',['mitsubishi112',['../classIRac.html#a2438b6e4403d5952adb299083e038e10',1,'IRac']]], - ['mitsubishi136_4362',['mitsubishi136',['../classIRac.html#aa3033eb835cf3cd313ee2c2f38357e8e',1,'IRac']]], - ['mitsubishiheavy152_4363',['mitsubishiHeavy152',['../classIRac.html#a635b89320d878c1e3f270d7146cb9b00',1,'IRac']]], - ['mitsubishiheavy88_4364',['mitsubishiHeavy88',['../classIRac.html#af6c9084c5e902f98a03ad0eaf3b9448e',1,'IRac']]], - ['modeltostr_4365',['modelToStr',['../namespaceirutils.html#ae89b70ce66617a8707c1951eadbc6fbd',1,'irutils']]], - ['mstostring_4366',['msToString',['../namespaceirutils.html#a9c59c8dd886c283fdb8adc9082c6890a',1,'irutils']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.html deleted file mode 100644 index 2f09f51ba..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.js deleted file mode 100644 index 79dd0734f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['neoclima_4367',['neoclima',['../classIRac.html#a777da4b0552ee3b64d656c4592687f47',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.html deleted file mode 100644 index ee5afa650..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.js deleted file mode 100644 index 9300c43fe..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_e.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['off_4368',['off',['../classIRAmcorAc.html#a184fbd76463e195beb67b4a8d2096941',1,'IRAmcorAc::off()'],['../classIRArgoAC.html#ab5ab7cc22bbce59bb02ca60431dca3fb',1,'IRArgoAC::off()'],['../classIRCarrierAc64.html#af11d8ea5ac93cbf2d9fe1419729168a5',1,'IRCarrierAc64::off()'],['../classIRCoolixAC.html#a7d6133fe102a5869beb9a5334ca749aa',1,'IRCoolixAC::off()'],['../classIRCoronaAc.html#a6f1335001f9e299340f658fbb777b630',1,'IRCoronaAc::off()'],['../classIRDaikinESP.html#a5d1d22f45d877660719916ca546bd3af',1,'IRDaikinESP::off()'],['../classIRDaikin2.html#ae9eee92387d78dad68fc98efc9371ea0',1,'IRDaikin2::off()'],['../classIRDaikin216.html#a086d8cea2d6dd0f74c5cbece79d91567',1,'IRDaikin216::off()'],['../classIRDaikin160.html#a95f8c71bbf861d3c884656364e04b02a',1,'IRDaikin160::off()'],['../classIRDaikin176.html#a4ad81df1fe4921abee3634bf19b0d0f7',1,'IRDaikin176::off()'],['../classIRDaikin152.html#a035588ad676a54d2b6ada8cefe10e114',1,'IRDaikin152::off()'],['../classIRDelonghiAc.html#ab584add0eb59acf3b209e7c252605304',1,'IRDelonghiAc::off()'],['../classIREcoclimAc.html#a9a0e2ee4ff9cbc6008cb359f2c3faf23',1,'IREcoclimAc::off()'],['../classIRElectraAc.html#afe3a9b789eafbef19d015cdebf71dc0d',1,'IRElectraAc::off()'],['../classIRFujitsuAC.html#ae7a320c2d2b8afbd9a04251053831cdd',1,'IRFujitsuAC::off()'],['../classIRGoodweatherAc.html#ad6863d837140951fcc0faf629025d48e',1,'IRGoodweatherAc::off()'],['../classIRGreeAC.html#a4cce897175ed731ab62402133089ed4f',1,'IRGreeAC::off()'],['../classIRHaierACYRW02.html#a9837ba26574f8bd452d616173819a9a4',1,'IRHaierACYRW02::off()'],['../classIRHitachiAc.html#a62be5ca181c8c9d11b65b38b1ed178b5',1,'IRHitachiAc::off()'],['../classIRHitachiAc1.html#a646b554980706d0dd2ac762be8458cdb',1,'IRHitachiAc1::off()'],['../classIRHitachiAc424.html#a0815a09fc49449bac03d996c63040a5f',1,'IRHitachiAc424::off()'],['../classIRKelvinatorAC.html#a4a759df902d1465c9520da7c7c595abc',1,'IRKelvinatorAC::off()'],['../classIRLgAc.html#a6d3d50b34575fecb93ed8bd5897c3f7c',1,'IRLgAc::off()'],['../classIRMideaAC.html#a29fbafcf47dc41475d009c4c92b2917b',1,'IRMideaAC::off()'],['../classIRMitsubishiAC.html#ac204620341200994c28411f53d5aa046',1,'IRMitsubishiAC::off()'],['../classIRMitsubishi136.html#a4122014509e9e755881920650f19baf3',1,'IRMitsubishi136::off()'],['../classIRMitsubishi112.html#ab5b6370edf2626da2e9f124a218678a8',1,'IRMitsubishi112::off()'],['../classIRMitsubishiHeavy152Ac.html#a93b603cc37d2dc7e3e7005ce21a0b2d7',1,'IRMitsubishiHeavy152Ac::off()'],['../classIRMitsubishiHeavy88Ac.html#a45c56c0454755d704a3df1f1f3647130',1,'IRMitsubishiHeavy88Ac::off()'],['../classIRNeoclimaAc.html#a9a277308bf8d8b0cd06a28964e7cbafb',1,'IRNeoclimaAc::off()'],['../classIRPanasonicAc.html#a03b706293c1c5b348bba536e6d8d33f5',1,'IRPanasonicAc::off()'],['../classIRSamsungAc.html#a34cb19bb4902441a2b9f10892eb17d83',1,'IRSamsungAc::off()'],['../classIRSanyoAc.html#a31f4c1d33875a99194b21f430c5467ef',1,'IRSanyoAc::off()'],['../classIRSharpAc.html#a178925a1d7ca01aae5c107fab5b32e93',1,'IRSharpAc::off()'],['../classIRTcl112Ac.html#ab2e39430629fcada55a584cff66d2749',1,'IRTcl112Ac::off()'],['../classIRTechnibelAc.html#a01f40042435f9472985853e40c1f9593',1,'IRTechnibelAc::off()'],['../classIRTecoAc.html#ade1b1541bf2de053c78657af1ebcd001',1,'IRTecoAc::off()'],['../classIRToshibaAC.html#a70b145f7b9c46790e4e5da812bb66e58',1,'IRToshibaAC::off()'],['../classIRTranscoldAc.html#a54ecdef5ff2c9a1ce8c476ff2ad16801',1,'IRTranscoldAc::off()'],['../classIRTrotecESP.html#a8f300ddaf255de1cdfee10b76b1f08e0',1,'IRTrotecESP::off()'],['../classIRTrumaAc.html#a82ef2f54b87332f6d2f1e3350544a3ec',1,'IRTrumaAc::off()'],['../classIRVestelAc.html#a59e90e51e3518ef26bb382903ce67357',1,'IRVestelAc::off()'],['../classIRVoltas.html#a472dd54afd93b595c8c5b78f6ba43008',1,'IRVoltas::off()']]], - ['on_4369',['on',['../classIRAmcorAc.html#a96a1d9858dcdc34a9859311e450e722e',1,'IRAmcorAc::on()'],['../classIRArgoAC.html#a70497752f7afd8e3274cf4d8b1e22628',1,'IRArgoAC::on()'],['../classIRCarrierAc64.html#a75ed9bf7501a31b74dcd42723e85b184',1,'IRCarrierAc64::on()'],['../classIRCoolixAC.html#a13f0346bf6450f3853c6dba6be8cb63a',1,'IRCoolixAC::on()'],['../classIRCoronaAc.html#a0348b6ee1226edfda1ab9aa424febb3c',1,'IRCoronaAc::on()'],['../classIRDaikinESP.html#a502e9dea10605d52e291d49af26b07eb',1,'IRDaikinESP::on()'],['../classIRDaikin2.html#aa3bdd3aa29a4db32f04411cbab27e570',1,'IRDaikin2::on()'],['../classIRDaikin216.html#a09f54bb4ed1d553b4bbf6ffe6992a755',1,'IRDaikin216::on()'],['../classIRDaikin160.html#a2b6c282ad5cb2a702857532ab020110b',1,'IRDaikin160::on()'],['../classIRDaikin176.html#a3ca59ccdad4b7958fc4dc1a4b0593f38',1,'IRDaikin176::on()'],['../classIRDaikin152.html#a10ee74aa43e3940d657ac88cb03b9138',1,'IRDaikin152::on()'],['../classIRDelonghiAc.html#ab919817947827f900e35080f63354ac3',1,'IRDelonghiAc::on()'],['../classIREcoclimAc.html#a32c37e30242f049190ab086d3beb8651',1,'IREcoclimAc::on()'],['../classIRElectraAc.html#a99e29f982435b01c726d0234a433cfa6',1,'IRElectraAc::on()'],['../classIRFujitsuAC.html#adcb24818d088c879beb7d76ada332f43',1,'IRFujitsuAC::on()'],['../classIRGoodweatherAc.html#a1e3c2a9f47376062ab66318d6af4324b',1,'IRGoodweatherAc::on()'],['../classIRGreeAC.html#a69e399e411a19e5669e752d52ae66f15',1,'IRGreeAC::on()'],['../classIRHaierACYRW02.html#aaeb257d68235278be272e521fdec7331',1,'IRHaierACYRW02::on()'],['../classIRHitachiAc.html#a855e95d55d4ebfb3958b9d80a7b42c6f',1,'IRHitachiAc::on()'],['../classIRHitachiAc1.html#aea4fe1fddb56c8df31077b301e9c6473',1,'IRHitachiAc1::on()'],['../classIRHitachiAc424.html#ad414bca642af40ed81a6cbf93a0bf40b',1,'IRHitachiAc424::on()'],['../classIRKelvinatorAC.html#a714d0e70f2996694e2c46afdd9996341',1,'IRKelvinatorAC::on()'],['../classIRLgAc.html#a171358340c1ba8f90fef0c5454f2aa41',1,'IRLgAc::on()'],['../classIRMideaAC.html#af8dde03cb641a5af4f2ef0dcf70f1ca0',1,'IRMideaAC::on()'],['../classIRMitsubishiAC.html#a2946d1b3b641d7b991c0d296d5c5e77e',1,'IRMitsubishiAC::on()'],['../classIRMitsubishi136.html#a74180e99a5f4f1f4b740b442a1b74a06',1,'IRMitsubishi136::on()'],['../classIRMitsubishi112.html#accd250f130b4d0cd61593982b84b9138',1,'IRMitsubishi112::on()'],['../classIRMitsubishiHeavy152Ac.html#a5c7aec50b53fdc3af591e077a4a268e4',1,'IRMitsubishiHeavy152Ac::on()'],['../classIRMitsubishiHeavy88Ac.html#a44ce2c4f03b8b8973922f5bf59a19d2c',1,'IRMitsubishiHeavy88Ac::on()'],['../classIRNeoclimaAc.html#ab4a23cefef02351883dc4088dec51071',1,'IRNeoclimaAc::on()'],['../classIRPanasonicAc.html#a88e6b0f607b17266567306576e623a0c',1,'IRPanasonicAc::on()'],['../classIRSamsungAc.html#a68cf52997489a1c835662c7cdf23463c',1,'IRSamsungAc::on()'],['../classIRSanyoAc.html#abe8f1be3ea8f861ab56ee4697cb9e731',1,'IRSanyoAc::on()'],['../classIRSharpAc.html#a5c8dad46c2965fc0d87780a8bd8b98f4',1,'IRSharpAc::on()'],['../classIRTcl112Ac.html#a0bbf7f0b9753b516fda0544c17b15b8a',1,'IRTcl112Ac::on()'],['../classIRTechnibelAc.html#a65558a08fbce34eedeb90d81e16140b1',1,'IRTechnibelAc::on()'],['../classIRTecoAc.html#af26015e5c663c346cf7db6d8af3f8c60',1,'IRTecoAc::on()'],['../classIRToshibaAC.html#abdc35338e4a18132d56bf6b46ddea590',1,'IRToshibaAC::on()'],['../classIRTranscoldAc.html#a4af8e44cb2d9c1751cd0dac3e096c06a',1,'IRTranscoldAc::on()'],['../classIRTrotecESP.html#a86c050edab8409a9b38d28f311f19404',1,'IRTrotecESP::on()'],['../classIRTrumaAc.html#a3c6f23621e34049df6ff135a4552f93a',1,'IRTrumaAc::on()'],['../classIRVestelAc.html#a4ed05fb5cbdfa5677ca238616bf03922',1,'IRVestelAc::on()'],['../classIRVoltas.html#a8c25557906af38ae41c47e39e90650a9',1,'IRVoltas::on()']]], - ['opmodetostring_4370',['opmodeToString',['../classIRac.html#a6dd1b87f2477bc3721d207b1fed482b8',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.html deleted file mode 100644 index f17c412c9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.js deleted file mode 100644 index 2899b659d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/functions_f.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['panasonic_4371',['panasonic',['../classIRac.html#af873db2b9735127eb6f079861daed67a',1,'IRac']]], - ['panasonic32_4372',['panasonic32',['../classIRac.html#a66ed34d5686ad25a1659862f3b683f68',1,'IRac']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/mag_sel.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/mag_sel.png deleted file mode 100644 index 39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.html deleted file mode 100644 index 76996d1c2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.js deleted file mode 100644 index 8a4bc8416..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['_5firrecv_3771',['_IRrecv',['../namespace__IRrecv.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.html deleted file mode 100644 index c69e3662f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.js deleted file mode 100644 index 37cad7995..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['iracutils_3772',['IRAcUtils',['../namespaceIRAcUtils.html',1,'']]], - ['irutils_3773',['irutils',['../namespaceirutils.html',1,'']]], - ['irxmputils_3774',['IRXmpUtils',['../namespaceIRXmpUtils.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.html deleted file mode 100644 index aa978214c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.js deleted file mode 100644 index 4178fddb8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/namespaces_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['stdac_3775',['stdAc',['../namespacestdAc.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/nomatches.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/nomatches.html deleted file mode 100644 index 437732089..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
    -
    No Matches
    -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.html deleted file mode 100644 index 9a6a29ad3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.js deleted file mode 100644 index 9f7e10d2e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['deprecated_20list_7408',['Deprecated List',['../deprecated.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.html deleted file mode 100644 index 132ee038e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.js deleted file mode 100644 index 9756cf62f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['irremoteesp8266_20library_20api_20documentation_7409',['IRremoteESP8266 Library API Documentation',['../index.html',1,'']]], - ['internationalisation_20_28i18n_29_20_26_20locale_20files_7410',['Internationalisation (I18N) & Locale Files',['../md_src_locale_README.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.html deleted file mode 100644 index 6109d4704..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.js deleted file mode 100644 index 5fb24e1be..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['todo_20list_7411',['Todo List',['../todo.html',1,'']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.html deleted file mode 100644 index bbe15faaa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.js deleted file mode 100644 index 9c479f976..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/related_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['irhitachiac344_7407',['IRHitachiAc344',['../classIRHitachiAc424.html#a3c885313a79bf8c02bc5eb9f7d80088b',1,'IRHitachiAc424']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.css b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.css deleted file mode 100644 index 3cf9df94a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.js deleted file mode 100644 index a554ab9cb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - 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 2 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, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search_r.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/search_r.png deleted file mode 100644 index 1af5d21ee13e070d7600f1c4657fde843b953a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/searchdata.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/searchdata.js deleted file mode 100644 index d81cb1d4a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/searchdata.js +++ /dev/null @@ -1,45 +0,0 @@ -var indexSectionsWithContent = -{ - 0: "_abcdefghijklmnopqrstuvwxyz~", - 1: "acdefghiklmnpstvw", - 2: "_is", - 3: "defiprz", - 4: "_abcdefghiklmnoprstuvwx~", - 5: "_abcdefhijklmnopqrstuvwxz", - 6: "hs", - 7: "dfghlopsvw", - 8: "acdefghijklmnprstuvwxyz", - 9: "i", - 10: "dit" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "namespaces", - 3: "files", - 4: "functions", - 5: "variables", - 6: "typedefs", - 7: "enums", - 8: "enumvalues", - 9: "related", - 10: "pages" -}; - -var indexSectionLabels = -{ - 0: "All", - 1: "Classes", - 2: "Namespaces", - 3: "Files", - 4: "Functions", - 5: "Variables", - 6: "Typedefs", - 7: "Enumerations", - 8: "Enumerator", - 9: "Friends", - 10: "Pages" -}; - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.html deleted file mode 100644 index 376db4791..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.js deleted file mode 100644 index ce9b7b798..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hw_5ftimer_5ft_7237',['hw_timer_t',['../IRrecv_8cpp.html#a6d06e662914b9ad7eeaea3cb650292c0',1,'IRrecv.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.html deleted file mode 100644 index 9b8bf72f6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.js deleted file mode 100644 index 83be13d7a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/typedefs_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['string_7238',['String',['../IRremoteESP8266_8h.html#afbeda3fd1bdc8c37d01bdf9f5c8274ff',1,'IRremoteESP8266.h']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.html deleted file mode 100644 index bf3eba5cc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.js deleted file mode 100644 index 2d8e9730d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_0.js +++ /dev/null @@ -1,69 +0,0 @@ -var searchData= -[ - ['_5f_4665',['_',['../classIRAirwellAc.html#af5675d200cdc571911162ecf8c74fdc0',1,'IRAirwellAc::_()'],['../classIRAmcorAc.html#a57bd1149a63a8c2373eeced414ed0a80',1,'IRAmcorAc::_()'],['../classIRArgoAC.html#a748a4828682df0f98226754123fe2142',1,'IRArgoAC::_()'],['../classIRCarrierAc64.html#a79ddb0fb877232a581d0142949a7c356',1,'IRCarrierAc64::_()'],['../classIRCoolixAC.html#a35c7cd549fcd37c60199b53d67fb9dd2',1,'IRCoolixAC::_()'],['../classIRCoronaAc.html#aa6e07135d66fda5c609c0d6a317bb0de',1,'IRCoronaAc::_()'],['../classIRDaikinESP.html#abbdecc7d713255021360094f720b03d4',1,'IRDaikinESP::_()'],['../classIRDaikin2.html#a656fd69f0163ba8685e537d122355f13',1,'IRDaikin2::_()'],['../classIRDaikin216.html#a41e9c282f84a853782dae90736d29b4b',1,'IRDaikin216::_()'],['../classIRDaikin160.html#a391d29ba41097a521b25af3b24554191',1,'IRDaikin160::_()'],['../classIRDaikin176.html#a82ad91178ed497d7087c758cd92635c5',1,'IRDaikin176::_()'],['../classIRDaikin128.html#aa5f2c8742a4127d76c28c96b02700af1',1,'IRDaikin128::_()'],['../classIRDaikin152.html#ad21ebef489e09af9ace1aea71c9a3606',1,'IRDaikin152::_()'],['../classIRDaikin64.html#a21b23d9ffbb8df86160affa249c86e40',1,'IRDaikin64::_()'],['../classIRDelonghiAc.html#a85f522b680c0fb5974d741c8f399e691',1,'IRDelonghiAc::_()'],['../classIREcoclimAc.html#a8bb20ae92cb32b3a083f43eea7be5f9a',1,'IREcoclimAc::_()'],['../classIRElectraAc.html#a4e6db6134d2e8915c4f2ad2e7e41ca83',1,'IRElectraAc::_()'],['../classIRFujitsuAC.html#ac26150793cfe7cc627e9721031f870e1',1,'IRFujitsuAC::_()'],['../classIRGoodweatherAc.html#a357e8f133b16a086c3100eb1e7b35279',1,'IRGoodweatherAc::_()'],['../classIRGreeAC.html#a9c048fe707312bdfd30c29fe8d6ab4b5',1,'IRGreeAC::_()'],['../classIRHaierAC.html#a523b6e63f16c5f817d82bcdbf351d7e7',1,'IRHaierAC::_()'],['../classIRHaierACYRW02.html#aaa31ae12544758f57f0dcd11b20fe285',1,'IRHaierACYRW02::_()'],['../classIRHitachiAc.html#a437587da1c6f0946dfbf9a0666123f4d',1,'IRHitachiAc::_()'],['../classIRHitachiAc1.html#ac2195f94ff673d24ac9f33b9463d5680',1,'IRHitachiAc1::_()'],['../classIRHitachiAc424.html#aa3e49f9ccda3b94099a11b4fba87fb3e',1,'IRHitachiAc424::_()'],['../classIRKelonAc.html#aeeaf52576cde829c1d7adb72c4dfe029',1,'IRKelonAc::_()'],['../classIRKelvinatorAC.html#ada1ada9d4441938af9f98e03b11f2b65',1,'IRKelvinatorAC::_()'],['../classIRLgAc.html#a2d337e8d615c8e526d5620206f7b45cf',1,'IRLgAc::_()'],['../classIRMideaAC.html#a43e44a594e00ed14c9b6aca4a862ea9e',1,'IRMideaAC::_()'],['../classIRMitsubishiAC.html#a418d0c771b50d014a1027cffcf53ca27',1,'IRMitsubishiAC::_()'],['../classIRMitsubishi136.html#ac38f8620a8cb3ada2f6a2e5c300b9a60',1,'IRMitsubishi136::_()'],['../classIRMitsubishi112.html#a5e4c08c77bfc74b1c0f8b407f020aa2e',1,'IRMitsubishi112::_()'],['../classIRMitsubishiHeavy152Ac.html#aba9d9871ddd93dc2f1e32fc773fadb86',1,'IRMitsubishiHeavy152Ac::_()'],['../classIRMitsubishiHeavy88Ac.html#a01ba20c205e3650a31ba605e291c0d65',1,'IRMitsubishiHeavy88Ac::_()'],['../classIRNeoclimaAc.html#a46453121ea930c6b356dd752fdaaec51',1,'IRNeoclimaAc::_()'],['../classIRPanasonicAc32.html#a9d6fab2a42e831ab00ab5364ad8d3de4',1,'IRPanasonicAc32::_()'],['../classIRSamsungAc.html#a7ac33928a62f2f4e487509490ed64814',1,'IRSamsungAc::_()'],['../classIRSanyoAc.html#ad849828b1fa034d851cdadfee43108aa',1,'IRSanyoAc::_()'],['../classIRSharpAc.html#a4687771aefa4879b4c9f331976ceb4bc',1,'IRSharpAc::_()'],['../classIRTcl112Ac.html#a905e47d5236b5dbbcc0aeadfc3fc9339',1,'IRTcl112Ac::_()'],['../classIRTechnibelAc.html#ae5bd8b758ef88ce473b38f93db207b13',1,'IRTechnibelAc::_()'],['../classIRTecoAc.html#a1d46a7c59ae9a0d87e092231de2d2510',1,'IRTecoAc::_()'],['../classIRToshibaAC.html#ae8a3a6ff11a38c11cdddb79af98c796f',1,'IRToshibaAC::_()'],['../classIRTranscoldAc.html#a50d0d2c8a2f25855ca721ef3f477284b',1,'IRTranscoldAc::_()'],['../classIRTrotecESP.html#a989eeedd017943dec0a3337f4e0bf23a',1,'IRTrotecESP::_()'],['../classIRTrumaAc.html#ac756f5efa2a62a36495def7b4ca755c7',1,'IRTrumaAc::_()'],['../classIRVestelAc.html#a1445480ae91942e752beb2facc9b151b',1,'IRVestelAc::_()'],['../classIRVoltas.html#a251065338907253521a12e5e0f8aeb26',1,'IRVoltas::_()'],['../classIRWhirlpoolAc.html#a62d86151ac9fae122927f588953c9712',1,'IRWhirlpoolAc::_()']]], - ['_5f_5fpad0_5f_5f_4666',['__pad0__',['../unionAirwellProtocol.html#ac8190704f390caf41b76dc0ee3377056',1,'AirwellProtocol::__pad0__()'],['../unionAmcorProtocol.html#a8678a5bf4a4d917d8b02d854114b2cc0',1,'AmcorProtocol::__pad0__()'],['../unionArgoProtocol.html#a2b15de65bd2368c53c07850b32c240f1',1,'ArgoProtocol::__pad0__()'],['../unionCarrierProtocol.html#a8187ddda3722f75d7260b9a20147b2d3',1,'CarrierProtocol::__pad0__()'],['../unionCoolixProtocol.html#aed69535018e1a145ecadf868b9285cce',1,'CoolixProtocol::__pad0__()'],['../unionCoronaProtocol.html#a06ac994ce787d3f1c65529e99d87d146',1,'CoronaProtocol::__pad0__()'],['../unionDaikinESPProtocol.html#a4b6340f47c0b18f3ca03527c075370a8',1,'DaikinESPProtocol::__pad0__()'],['../unionDaikin2Protocol.html#a862b1116a11ccc47c197da1c45bcf939',1,'Daikin2Protocol::__pad0__()'],['../unionDaikin216Protocol.html#a34e330a1e718719a36fbcf1630d3a329',1,'Daikin216Protocol::__pad0__()'],['../unionDaikin160Protocol.html#a004c3ba468c671d18e6777b97caa5118',1,'Daikin160Protocol::__pad0__()'],['../unionDaikin176Protocol.html#a8c63d7ff706301c55b9b82669b93504b',1,'Daikin176Protocol::__pad0__()'],['../unionDaikin128Protocol.html#a95b62a4448251a23cb7b8448da6db90a',1,'Daikin128Protocol::__pad0__()'],['../unionDaikin152Protocol.html#ae12253e3f2a43142a7a9e508a49ac97b',1,'Daikin152Protocol::__pad0__()'],['../unionDaikin64Protocol.html#a4311ec81ff9b3b13466b2fe3da4fb9be',1,'Daikin64Protocol::__pad0__()'],['../unionDelonghiProtocol.html#add514a227f6b9dcbaa41eaa5c81d6be2',1,'DelonghiProtocol::__pad0__()'],['../unionEcoclimProtocol.html#af8ab3b4b36c8d226267bd9d408a247b5',1,'EcoclimProtocol::__pad0__()'],['../unionElectraProtocol.html#a607d7c92e7a627b9afccf9022f379184',1,'ElectraProtocol::__pad0__()'],['../unionFujitsuProtocol.html#ae09a6236e9c28edcec7192b2f2527d94',1,'FujitsuProtocol::__pad0__()'],['../unionGoodweatherProtocol.html#a58bfae03b0e7faeb4a5eb2baa7027499',1,'GoodweatherProtocol::__pad0__()'],['../unionGreeProtocol.html#a06baff7b648875f337ea4d099f8ba73d',1,'GreeProtocol::__pad0__()'],['../unionHaierProtocol.html#a2648f0ff2bc5a6481e9fd2017408a590',1,'HaierProtocol::__pad0__()'],['../unionHaierYRW02Protocol.html#a48fb1f12d6902568da902b5de7e1bfef',1,'HaierYRW02Protocol::__pad0__()'],['../unionHitachiProtocol.html#a59198deea3c754055b8db3c53597b28a',1,'HitachiProtocol::__pad0__()'],['../unionHitachi424Protocol.html#a8bbd10b57407543a47af052d3ad7d45d',1,'Hitachi424Protocol::__pad0__()'],['../unionHitachi1Protocol.html#aef99c45f1361f6f3af5384e388e769f0',1,'Hitachi1Protocol::__pad0__()'],['../unionKelvinatorProtocol.html#a1c5a62ea69b305fe7c842ed06201544e',1,'KelvinatorProtocol::__pad0__()'],['../unionLGProtocol.html#a56f4b64eddafae10e174097f17129672',1,'LGProtocol::__pad0__()'],['../unionMideaProtocol.html#ab48c834ee5a37297d04e71e6e32468d2',1,'MideaProtocol::__pad0__()'],['../unionMitsubishi144Protocol.html#a54a33f76ce69f4ffb355bbd80b40333e',1,'Mitsubishi144Protocol::__pad0__()'],['../unionMitsubishi136Protocol.html#ac7c07e05f6b9ab112db05bfc0e50b8fe',1,'Mitsubishi136Protocol::__pad0__()'],['../unionMitsubishi112Protocol.html#a10e85997ccda345c41d243d621f5c6c5',1,'Mitsubishi112Protocol::__pad0__()'],['../unionMitsubishi152Protocol.html#afe483629cb0b355cc9dc24720a3dbfc1',1,'Mitsubishi152Protocol::__pad0__()'],['../unionMitsubishi88Protocol.html#ad271ae6069331e7de5173eda076391bf',1,'Mitsubishi88Protocol::__pad0__()'],['../unionNeoclimaProtocol.html#ab7283cca22005d0a4a16349a10443c75',1,'NeoclimaProtocol::__pad0__()'],['../unionPanasonicAc32Protocol.html#aa1aac1cdb8d947e7ecea4a487e2a184f',1,'PanasonicAc32Protocol::__pad0__()'],['../unionSamsungProtocol.html#a5828729c8465645c7953f33f7a759b66',1,'SamsungProtocol::__pad0__()'],['../unionSanyoProtocol.html#ab545036dab31de4c9fed22c3b69a8956',1,'SanyoProtocol::__pad0__()'],['../unionSharpProtocol.html#a1849030fb0a1228c149773fc59cd5a3a',1,'SharpProtocol::__pad0__()'],['../unionTcl112Protocol.html#ac6a87b38987b8acf6a4f2e8c56915e9b',1,'Tcl112Protocol::__pad0__()'],['../unionTechnibelProtocol.html#a867176d7b37eea700911a9e1436fd759',1,'TechnibelProtocol::__pad0__()'],['../unionTecoProtocol.html#a4f28c648b1ea808fa3f85dccd9aa7f0e',1,'TecoProtocol::__pad0__()'],['../unionToshibaProtocol.html#afcaa4bab05d9b9a178d377981963804f',1,'ToshibaProtocol::__pad0__()'],['../unionTranscoldProtocol.html#ae31134005dcf214468c247c1a8e0c3c2',1,'TranscoldProtocol::__pad0__()'],['../unionTrotecProtocol.html#a5a595bd97622b796cc790b3781b5f945',1,'TrotecProtocol::__pad0__()'],['../unionTrumaProtocol.html#ae1dba9448f8eafde9880dd3c62d0d6eb',1,'TrumaProtocol::__pad0__()'],['../unionVestelProtocol.html#ae1c70f14718a4374f62db9a5ee047525',1,'VestelProtocol::__pad0__()'],['../unionVoltasProtocol.html#a6a9f9ff0c3c7b691ed78738138467afa',1,'VoltasProtocol::__pad0__()'],['../unionWhirlpoolProtocol.html#a346c5be5f86c773065807453a37b1803',1,'WhirlpoolProtocol::__pad0__()']]], - ['_5f_5fpad10_5f_5f_4667',['__pad10__',['../unionArgoProtocol.html#aa2c0eb524c5870ea14aac018834c203f',1,'ArgoProtocol::__pad10__()'],['../unionDaikinESPProtocol.html#ab5f4cadf160b7b0cd86d23f0d29226b5',1,'DaikinESPProtocol::__pad10__()'],['../unionDaikin2Protocol.html#a6c39db0f9d872e4e955d95530e364f8c',1,'Daikin2Protocol::__pad10__()'],['../unionElectraProtocol.html#a1c6c36949391af9da5dbb39a7ab9894b',1,'ElectraProtocol::__pad10__()'],['../unionFujitsuProtocol.html#a401eaf495ccd6f029263af08c6b810b0',1,'FujitsuProtocol::__pad10__()'],['../unionHaierYRW02Protocol.html#abc9d14dbc6ab798a389244499fad7d96',1,'HaierYRW02Protocol::__pad10__()'],['../unionKelvinatorProtocol.html#aa2ce27bd061f2e9a44fd01b3c5abcd0a',1,'KelvinatorProtocol::__pad10__()'],['../unionMitsubishi152Protocol.html#a05b638b3d3727c028e00c7e0826988ac',1,'Mitsubishi152Protocol::__pad10__()'],['../unionNeoclimaProtocol.html#a035ce50ea046d70206a899b022514fc1',1,'NeoclimaProtocol::__pad10__()'],['../unionSamsungProtocol.html#ad142f78386bc81486c7237de5c9dba02',1,'SamsungProtocol::__pad10__()'],['../unionSharpProtocol.html#a38bc19719f1597b4b2f412eda520edff',1,'SharpProtocol::__pad10__()'],['../unionWhirlpoolProtocol.html#a08e2114e6ecd39db2d05d4fbe6f331eb',1,'WhirlpoolProtocol::__pad10__()']]], - ['_5f_5fpad11_5f_5f_4668',['__pad11__',['../unionArgoProtocol.html#a6ccde46c9c033ca08161da12a2657187',1,'ArgoProtocol::__pad11__()'],['../unionDaikinESPProtocol.html#a63226f3ed0f535ecc6575d68e402aca4',1,'DaikinESPProtocol::__pad11__()'],['../unionDaikin2Protocol.html#a4dbf000916d610dd6f7779702b827a32',1,'Daikin2Protocol::__pad11__()'],['../unionElectraProtocol.html#a60df01dbc021ccb4167bf05b6cfb3575',1,'ElectraProtocol::__pad11__()'],['../unionHaierYRW02Protocol.html#a033dacb9a8b936c0187e86c585431198',1,'HaierYRW02Protocol::__pad11__()'],['../unionKelvinatorProtocol.html#a154ce4b17b1920eeeed576a84c42078c',1,'KelvinatorProtocol::__pad11__()'],['../unionMitsubishi152Protocol.html#a613a6a6436459e9c0e50ea9dbe98adb7',1,'Mitsubishi152Protocol::__pad11__()'],['../unionSamsungProtocol.html#adbacd1c9f1da9e52897e371932448104',1,'SamsungProtocol::__pad11__()'],['../unionWhirlpoolProtocol.html#a2298dc17501470bc907c2942b3b78a31',1,'WhirlpoolProtocol::__pad11__()']]], - ['_5f_5fpad12_5f_5f_4669',['__pad12__',['../unionArgoProtocol.html#a338bbbc882a3409af4ff510a9b7c001b',1,'ArgoProtocol::__pad12__()'],['../unionDaikinESPProtocol.html#acb1fbea3c23fc3cd9171e8dc5ec6c704',1,'DaikinESPProtocol::__pad12__()'],['../unionDaikin2Protocol.html#a8ed55611b407b4565879d1c590d9db97',1,'Daikin2Protocol::__pad12__()'],['../unionElectraProtocol.html#af6cc114e85af4dc98468b8912d9550e1',1,'ElectraProtocol::__pad12__()'],['../unionHaierYRW02Protocol.html#a3df5d93e5f676ff44b32227a44be98ac',1,'HaierYRW02Protocol::__pad12__()'],['../unionKelvinatorProtocol.html#aca9a8e9d3bfae177addbbf5cf59be5b9',1,'KelvinatorProtocol::__pad12__()'],['../unionMitsubishi152Protocol.html#a79605175bd897bb9d9dbde5e2a5e75cd',1,'Mitsubishi152Protocol::__pad12__()'],['../unionSamsungProtocol.html#a3498152c423584a34036a0004965e483',1,'SamsungProtocol::__pad12__()'],['../unionWhirlpoolProtocol.html#a5bb903a38e613af99420d157b6a4497c',1,'WhirlpoolProtocol::__pad12__()']]], - ['_5f_5fpad13_5f_5f_4670',['__pad13__',['../unionArgoProtocol.html#a093e716979933669e589fb5ead32a3a5',1,'ArgoProtocol::__pad13__()'],['../unionDaikinESPProtocol.html#ad00fd7a0383f41faa020b5468f326d40',1,'DaikinESPProtocol::__pad13__()'],['../unionDaikin2Protocol.html#a71b32e066737020b4b50752a1b49aa59',1,'Daikin2Protocol::__pad13__()'],['../unionKelvinatorProtocol.html#a7791a8425a444901bba50c314ea72f07',1,'KelvinatorProtocol::__pad13__()'],['../unionSamsungProtocol.html#a0cc6887b0f67b3478679612a61f53494',1,'SamsungProtocol::__pad13__()'],['../unionWhirlpoolProtocol.html#aee015ccecfa7008bf16b9c94c471d611',1,'WhirlpoolProtocol::__pad13__()']]], - ['_5f_5fpad14_5f_5f_4671',['__pad14__',['../unionArgoProtocol.html#ab35dfc5963cfdcf5a776c78d3ea5f423',1,'ArgoProtocol::__pad14__()'],['../unionDaikinESPProtocol.html#af60b5d6127571efd945834134e9820cf',1,'DaikinESPProtocol::__pad14__()'],['../unionDaikin2Protocol.html#a775f2fb0cb2c7814487a595d7dbf9433',1,'Daikin2Protocol::__pad14__()'],['../unionKelvinatorProtocol.html#aae165412d5c955b14dce78a4793c1196',1,'KelvinatorProtocol::__pad14__()'],['../unionSamsungProtocol.html#a18c1a85c27a25cfd52ea3894770e046d',1,'SamsungProtocol::__pad14__()'],['../unionWhirlpoolProtocol.html#a3d91bff7afe79cceb9410303625501e8',1,'WhirlpoolProtocol::__pad14__()']]], - ['_5f_5fpad15_5f_5f_4672',['__pad15__',['../unionArgoProtocol.html#a1a3263d128339d19b1dfa2857da3475b',1,'ArgoProtocol::__pad15__()'],['../unionDaikinESPProtocol.html#aa50501fc2b9f3c687fdc6ffae01b0b26',1,'DaikinESPProtocol::__pad15__()'],['../unionDaikin2Protocol.html#a8e3e56e3e43e01196aa76b26746a7793',1,'Daikin2Protocol::__pad15__()'],['../unionKelvinatorProtocol.html#ab92ccd2d83d1f6a8ac071a6bf964192f',1,'KelvinatorProtocol::__pad15__()'],['../unionSamsungProtocol.html#a432749e94e913ec1070a6eaa189d28cc',1,'SamsungProtocol::__pad15__()'],['../unionWhirlpoolProtocol.html#a3befb6d4bc7900b5ce1521557b7ac1da',1,'WhirlpoolProtocol::__pad15__()']]], - ['_5f_5fpad16_5f_5f_4673',['__pad16__',['../unionArgoProtocol.html#a0e901bceaaa0cc966eabb937ad4b549a',1,'ArgoProtocol::__pad16__()'],['../unionDaikinESPProtocol.html#a25289149f23cde94303b04579ef5ab51',1,'DaikinESPProtocol::__pad16__()'],['../unionDaikin2Protocol.html#a1cc01ee37d30381041627a436b12b06e',1,'Daikin2Protocol::__pad16__()'],['../unionKelvinatorProtocol.html#a3a2a481ac55f63f010954be00839e9f5',1,'KelvinatorProtocol::__pad16__()'],['../unionSamsungProtocol.html#a4d5d840172077977f2019a57c359fa3e',1,'SamsungProtocol::__pad16__()'],['../unionWhirlpoolProtocol.html#ac1c4612fadecbcbcf3afb7cd3b5ae2ec',1,'WhirlpoolProtocol::__pad16__()']]], - ['_5f_5fpad17_5f_5f_4674',['__pad17__',['../unionDaikinESPProtocol.html#a4f5109e7102aa264f0769b3c8e59143e',1,'DaikinESPProtocol::__pad17__()'],['../unionDaikin2Protocol.html#a95ba00e7fe66eb4461df6185a4203272',1,'Daikin2Protocol::__pad17__()']]], - ['_5f_5fpad18_5f_5f_4675',['__pad18__',['../unionDaikin2Protocol.html#a0f1bbafed357f2b8c3792072edcd024f',1,'Daikin2Protocol']]], - ['_5f_5fpad19_5f_5f_4676',['__pad19__',['../unionDaikin2Protocol.html#a8625b24852e8b61e99608d3ed6108060',1,'Daikin2Protocol']]], - ['_5f_5fpad1_5f_5f_4677',['__pad1__',['../unionAirwellProtocol.html#ab2a20785c417317ac37cd1b5ef795249',1,'AirwellProtocol::__pad1__()'],['../unionAmcorProtocol.html#a9603d27ed81d3efc3b1fff2d6a877f6f',1,'AmcorProtocol::__pad1__()'],['../unionArgoProtocol.html#a87ef29a274368f72fe0e8aee0d09c241',1,'ArgoProtocol::__pad1__()'],['../unionCarrierProtocol.html#a344e5a62f7624bdc8d6b53c89d53ff01',1,'CarrierProtocol::__pad1__()'],['../unionCoolixProtocol.html#a40ad4befacf2e80aa8b58ffa009282d8',1,'CoolixProtocol::__pad1__()'],['../unionCoronaProtocol.html#a562183bf52e393fb07ca57f5f8341bfd',1,'CoronaProtocol::__pad1__()'],['../unionDaikinESPProtocol.html#a171688991f490457597ef35ae981364c',1,'DaikinESPProtocol::__pad1__()'],['../unionDaikin2Protocol.html#adcfa8f9e936b2d3847bf2a916398a2c6',1,'Daikin2Protocol::__pad1__()'],['../unionDaikin216Protocol.html#a195343e0e34535032963cf7a2e860310',1,'Daikin216Protocol::__pad1__()'],['../unionDaikin160Protocol.html#a019c8599ff9271e4d85294aa9d30f7b3',1,'Daikin160Protocol::__pad1__()'],['../unionDaikin176Protocol.html#a4bc397de2956316e96548d0d91c9e853',1,'Daikin176Protocol::__pad1__()'],['../unionDaikin128Protocol.html#acbbe6f9c88b1ac0e0accc9e7da3d6f56',1,'Daikin128Protocol::__pad1__()'],['../unionDaikin152Protocol.html#aa0078b4986f0c5af41e4eb6c66bbbcdf',1,'Daikin152Protocol::__pad1__()'],['../unionDaikin64Protocol.html#a85e8ad5d286b0c048651a22939185f46',1,'Daikin64Protocol::__pad1__()'],['../unionDelonghiProtocol.html#a26a942f261b6d45e3d3a9734b8535c8d',1,'DelonghiProtocol::__pad1__()'],['../unionEcoclimProtocol.html#af5e0d8721a854eacd373ba6b3907bfcc',1,'EcoclimProtocol::__pad1__()'],['../unionElectraProtocol.html#a144dab2a792292298898217b72ffe95a',1,'ElectraProtocol::__pad1__()'],['../unionFujitsuProtocol.html#a419bfbb3660ce591194319f23f7b03e3',1,'FujitsuProtocol::__pad1__()'],['../unionGoodweatherProtocol.html#af377b40f40c2182c39892322d48b6e41',1,'GoodweatherProtocol::__pad1__()'],['../unionGreeProtocol.html#a094751746e21e5ae70ff7ace3b84c75d',1,'GreeProtocol::__pad1__()'],['../unionHaierProtocol.html#a8e91589ca0e2db529f73e3f8ecbb00a0',1,'HaierProtocol::__pad1__()'],['../unionHaierYRW02Protocol.html#aa20f4bbeb35dfa6afe0af4c7ea1cc498',1,'HaierYRW02Protocol::__pad1__()'],['../unionHitachiProtocol.html#a1c8b361a818c9c39d4fa68e89f9a8e22',1,'HitachiProtocol::__pad1__()'],['../unionHitachi424Protocol.html#a242455776887250de614f82c786a7305',1,'Hitachi424Protocol::__pad1__()'],['../unionHitachi1Protocol.html#a5a1391e156a30793572f4fe2b0b09bce',1,'Hitachi1Protocol::__pad1__()'],['../unionKelvinatorProtocol.html#a3e434ffef93cd99fe33800f87f5f4c02',1,'KelvinatorProtocol::__pad1__()'],['../unionLGProtocol.html#a6ed86f00b55c5e136039ccb4d8b92bc9',1,'LGProtocol::__pad1__()'],['../unionMideaProtocol.html#a3351e3af6d3f214536e593c450fa0915',1,'MideaProtocol::__pad1__()'],['../unionMitsubishi144Protocol.html#a73a24c6aed86265c733bd65c52c71a2b',1,'Mitsubishi144Protocol::__pad1__()'],['../unionMitsubishi136Protocol.html#abf3c48fa8afee2e538c4edd691df1cc3',1,'Mitsubishi136Protocol::__pad1__()'],['../unionMitsubishi112Protocol.html#ab9760331882703b5b80a30f9ba008e66',1,'Mitsubishi112Protocol::__pad1__()'],['../unionMitsubishi152Protocol.html#a758cb7e9d347f8642f680ec803e12282',1,'Mitsubishi152Protocol::__pad1__()'],['../unionMitsubishi88Protocol.html#aa46d6fc69b2de17ea7fd1c3e06b953c0',1,'Mitsubishi88Protocol::__pad1__()'],['../unionNeoclimaProtocol.html#a76421acbe5fd17e423d2e1159261f4e2',1,'NeoclimaProtocol::__pad1__()'],['../unionPanasonicAc32Protocol.html#a5cda61ba9d077c018393878bac8ef02e',1,'PanasonicAc32Protocol::__pad1__()'],['../unionSamsungProtocol.html#a9cee9377b1f9e1481ddc996c20d17fa0',1,'SamsungProtocol::__pad1__()'],['../unionSanyoProtocol.html#afcd8e773058c6c1c61c1ca8fadec557a',1,'SanyoProtocol::__pad1__()'],['../unionSharpProtocol.html#abd9e4cc871884cfc1fa50c0785e20dca',1,'SharpProtocol::__pad1__()'],['../unionTcl112Protocol.html#a4eadf5f4b418c756332c565db930bc4b',1,'Tcl112Protocol::__pad1__()'],['../unionTechnibelProtocol.html#a21dcbf63bcb5f9a2071d186d8d0ee7f7',1,'TechnibelProtocol::__pad1__()'],['../unionTecoProtocol.html#a5fc378f32498bb71500d9ca68ccd71d6',1,'TecoProtocol::__pad1__()'],['../unionToshibaProtocol.html#a33806189420dacc911832a0290364acc',1,'ToshibaProtocol::__pad1__()'],['../unionTranscoldProtocol.html#a3dc6ac4b02073bd781632c1f1f7c8805',1,'TranscoldProtocol::__pad1__()'],['../unionTrotecProtocol.html#a0e7816aae4f8d5f604103a5e25ad5c4d',1,'TrotecProtocol::__pad1__()'],['../unionTrumaProtocol.html#a8124c299b6ad13bc42bfd0c18b774d62',1,'TrumaProtocol::__pad1__()'],['../unionVestelProtocol.html#a30aa4f861223ae78a3735cbefb71b894',1,'VestelProtocol::__pad1__()'],['../unionVoltasProtocol.html#a80c4eeb8eea30866ef991cab330f6def',1,'VoltasProtocol::__pad1__()'],['../unionWhirlpoolProtocol.html#a1a6a151ac226c361d7fb9c5775959719',1,'WhirlpoolProtocol::__pad1__()']]], - ['_5f_5fpad20_5f_5f_4678',['__pad20__',['../unionDaikin2Protocol.html#a5263b84da0ca6a26a32f9235054d975a',1,'Daikin2Protocol']]], - ['_5f_5fpad21_5f_5f_4679',['__pad21__',['../unionDaikin2Protocol.html#a2d1fa760cd0d6e2420a63dac338d5c72',1,'Daikin2Protocol']]], - ['_5f_5fpad22_5f_5f_4680',['__pad22__',['../unionDaikin2Protocol.html#aec8c4d930e4d316428d9f0aa52fa307a',1,'Daikin2Protocol']]], - ['_5f_5fpad23_5f_5f_4681',['__pad23__',['../unionDaikin2Protocol.html#a1d13146bb96e0f1a38f61ff473a95787',1,'Daikin2Protocol']]], - ['_5f_5fpad24_5f_5f_4682',['__pad24__',['../unionDaikin2Protocol.html#a1c39c5b58eea52a36b52d6a69d841368',1,'Daikin2Protocol']]], - ['_5f_5fpad2_5f_5f_4683',['__pad2__',['../unionAirwellProtocol.html#a3ba38aea4ada26e1936478d737e2080a',1,'AirwellProtocol::__pad2__()'],['../unionAmcorProtocol.html#afefa908f10f814fadde57efdc4dce76c',1,'AmcorProtocol::__pad2__()'],['../unionArgoProtocol.html#a44dff1537c390a45ee43c57f2b80050d',1,'ArgoProtocol::__pad2__()'],['../unionCarrierProtocol.html#aac511fa89b32f24a01d179c37fffc2fa',1,'CarrierProtocol::__pad2__()'],['../unionCoolixProtocol.html#a6d0452c77ec2042ecd9f6067fae5333d',1,'CoolixProtocol::__pad2__()'],['../unionCoronaProtocol.html#a53c510747a6970ea6f0172a39194369d',1,'CoronaProtocol::__pad2__()'],['../unionDaikinESPProtocol.html#a01827591728378573fa1c6de1d0fb047',1,'DaikinESPProtocol::__pad2__()'],['../unionDaikin2Protocol.html#a18d60de4ac1cd64c9544d275bd2f0d77',1,'Daikin2Protocol::__pad2__()'],['../unionDaikin216Protocol.html#a1c7d014ca2fbab35649ac04e711090e4',1,'Daikin216Protocol::__pad2__()'],['../unionDaikin160Protocol.html#a18fa821c54eaebb5b728914976f33c10',1,'Daikin160Protocol::__pad2__()'],['../unionDaikin176Protocol.html#ae78012028d2d6983028aed4206347f68',1,'Daikin176Protocol::__pad2__()'],['../unionDaikin128Protocol.html#af5cb68ecd15fba7cafa9252479f8f8bd',1,'Daikin128Protocol::__pad2__()'],['../unionDaikin152Protocol.html#af147c5af64b24303b2975f44d73b6e60',1,'Daikin152Protocol::__pad2__()'],['../unionDelonghiProtocol.html#a78b2654018ed1c8c9a762ee6b1241bdc',1,'DelonghiProtocol::__pad2__()'],['../unionEcoclimProtocol.html#a8e6682232e119fc85a7de034a454072b',1,'EcoclimProtocol::__pad2__()'],['../unionElectraProtocol.html#abcc4e66431cd1ffadcdd3e25c611e306',1,'ElectraProtocol::__pad2__()'],['../unionFujitsuProtocol.html#af4b24c6663c4b4b94ea13c66ee3a122d',1,'FujitsuProtocol::__pad2__()'],['../unionGoodweatherProtocol.html#af9191479578e5541782ab08dca536cd8',1,'GoodweatherProtocol::__pad2__()'],['../unionGreeProtocol.html#a715441faac2bdd5dc37d6a3efcc99c4f',1,'GreeProtocol::__pad2__()'],['../unionHaierYRW02Protocol.html#a51178359e3860a50dbf53bda14b5a88c',1,'HaierYRW02Protocol::__pad2__()'],['../unionHitachiProtocol.html#a057c243efc8dea1fb191a5e46e919945',1,'HitachiProtocol::__pad2__()'],['../unionHitachi424Protocol.html#af8456076f173c8ba3fe398a4b603d7f9',1,'Hitachi424Protocol::__pad2__()'],['../unionHitachi1Protocol.html#a8817d394030fff87bf433137fc7cd616',1,'Hitachi1Protocol::__pad2__()'],['../unionKelvinatorProtocol.html#a612fd8e28cb1ca0b675f6397465422fb',1,'KelvinatorProtocol::__pad2__()'],['../unionMideaProtocol.html#ab638086cc0b8d25fba57278c7ba881cb',1,'MideaProtocol::__pad2__()'],['../unionMitsubishi144Protocol.html#a8adaf8e3c219a7deb561bd54783d58c8',1,'Mitsubishi144Protocol::__pad2__()'],['../unionMitsubishi136Protocol.html#a787183f490db45ea0421cd90aa8ee58b',1,'Mitsubishi136Protocol::__pad2__()'],['../unionMitsubishi112Protocol.html#aec7545bf250d0f8a5035d518258978d7',1,'Mitsubishi112Protocol::__pad2__()'],['../unionMitsubishi152Protocol.html#aebca5fcc9d424d56fb46ba275c5b9f9b',1,'Mitsubishi152Protocol::__pad2__()'],['../unionMitsubishi88Protocol.html#ad644461a3b45b36ee3feabee34897e90',1,'Mitsubishi88Protocol::__pad2__()'],['../unionNeoclimaProtocol.html#ae25f51e0b116bf7587527b8b41b27bec',1,'NeoclimaProtocol::__pad2__()'],['../unionPanasonicAc32Protocol.html#ab2296c3c02d374663675d476bc0b2b0c',1,'PanasonicAc32Protocol::__pad2__()'],['../unionSamsungProtocol.html#a3594b63392afa71e288b96e0ee488690',1,'SamsungProtocol::__pad2__()'],['../unionSanyoProtocol.html#af762ec4bca951f0a8193be08692a9b3e',1,'SanyoProtocol::__pad2__()'],['../unionSharpProtocol.html#af02d3d154667f63afbacb9f50e40ddd2',1,'SharpProtocol::__pad2__()'],['../unionTcl112Protocol.html#ac3ca9623e507753cacd7303b1a0272b2',1,'Tcl112Protocol::__pad2__()'],['../unionTechnibelProtocol.html#a76022ef93412caed8f938cd76eae288e',1,'TechnibelProtocol::__pad2__()'],['../unionTecoProtocol.html#a6f255afef8feea0838b60ca308a3fe15',1,'TecoProtocol::__pad2__()'],['../unionToshibaProtocol.html#ab976a3d007474db50729a9d315ea2ddf',1,'ToshibaProtocol::__pad2__()'],['../unionTranscoldProtocol.html#a72050e0bc1c4828c9277b67803315868',1,'TranscoldProtocol::__pad2__()'],['../unionTrotecProtocol.html#af25bde6df1a74da8fecada128f23ba48',1,'TrotecProtocol::__pad2__()'],['../unionTrumaProtocol.html#a86e5187205b4ca9a16147160de04585d',1,'TrumaProtocol::__pad2__()'],['../unionVestelProtocol.html#a4a611ce846177ae4b9bc7cd6a60bf17f',1,'VestelProtocol::__pad2__()'],['../unionVoltasProtocol.html#a4c2798df803074bcde8ddf6c7e855d91',1,'VoltasProtocol::__pad2__()'],['../unionWhirlpoolProtocol.html#ab7f93602ea91e831fbb1d0d5862c690b',1,'WhirlpoolProtocol::__pad2__()']]], - ['_5f_5fpad3_5f_5f_4684',['__pad3__',['../unionAmcorProtocol.html#a25002ba50158c3ee26d20d94d3507a9b',1,'AmcorProtocol::__pad3__()'],['../unionArgoProtocol.html#a6b383394993c83f6ed098826e5c02a4a',1,'ArgoProtocol::__pad3__()'],['../unionCarrierProtocol.html#a50193ce74f535d6dad154a96f54adb48',1,'CarrierProtocol::__pad3__()'],['../unionCoronaProtocol.html#a5f0dd8e7b0d0b5673088416e2f88df6e',1,'CoronaProtocol::__pad3__()'],['../unionDaikinESPProtocol.html#a2ef5628a9259b528c700a990bf411c01',1,'DaikinESPProtocol::__pad3__()'],['../unionDaikin2Protocol.html#aa6331c57c9e4a96077f449839fdf44e4',1,'Daikin2Protocol::__pad3__()'],['../unionDaikin216Protocol.html#a8c2dd3c46d384ce286dc4790afe31ffd',1,'Daikin216Protocol::__pad3__()'],['../unionDaikin160Protocol.html#ac3a48f7a81ec67c0d4cc1b4ac8ba7f59',1,'Daikin160Protocol::__pad3__()'],['../unionDaikin176Protocol.html#ab630c3dd3b3f6c733b255a4de5ca7642',1,'Daikin176Protocol::__pad3__()'],['../unionDaikin128Protocol.html#ac7a7623a3947b3cdd43a49ccd6359f3b',1,'Daikin128Protocol::__pad3__()'],['../unionDaikin152Protocol.html#a46b0a6cc3b11fc0f6c9a636be660cc42',1,'Daikin152Protocol::__pad3__()'],['../unionDelonghiProtocol.html#a98b1173e0d07b4a29506f5df0f396e72',1,'DelonghiProtocol::__pad3__()'],['../unionEcoclimProtocol.html#acddb949003223952f34beba59abbe319',1,'EcoclimProtocol::__pad3__()'],['../unionElectraProtocol.html#a6403f6b51a0deec451ccc385663ac0ab',1,'ElectraProtocol::__pad3__()'],['../unionFujitsuProtocol.html#a3f6c0bc00666716575cb48805f88fc80',1,'FujitsuProtocol::__pad3__()'],['../unionGoodweatherProtocol.html#ac9e781a9b5d7f9631c0b4696bca0bcef',1,'GoodweatherProtocol::__pad3__()'],['../unionGreeProtocol.html#a7291d729f3b5638cb160afbda37baba1',1,'GreeProtocol::__pad3__()'],['../unionHaierYRW02Protocol.html#ad2c1066a2d796f49424feb2612df3d98',1,'HaierYRW02Protocol::__pad3__()'],['../unionHitachiProtocol.html#a81ef6998c55ca142aa0418bfcdcfa3f1',1,'HitachiProtocol::__pad3__()'],['../unionHitachi424Protocol.html#aa0c15cc7acbf16f76a5194d1b2512cce',1,'Hitachi424Protocol::__pad3__()'],['../unionHitachi1Protocol.html#a8f53a39a6f727509b9faa1e41df34e65',1,'Hitachi1Protocol::__pad3__()'],['../unionKelvinatorProtocol.html#a35b5c9cd85f4b8c9eeec9231321acb5e',1,'KelvinatorProtocol::__pad3__()'],['../unionMitsubishi144Protocol.html#a5fd5cf0329ffc81873452121bc6c694b',1,'Mitsubishi144Protocol::__pad3__()'],['../unionMitsubishi136Protocol.html#aac4daa062404ef7de66285c661bd07c1',1,'Mitsubishi136Protocol::__pad3__()'],['../unionMitsubishi112Protocol.html#a61f23d1857c90d6bbb6c2c4bdd5f4366',1,'Mitsubishi112Protocol::__pad3__()'],['../unionMitsubishi152Protocol.html#a46ae84f569070c49ac38f922cb1ef418',1,'Mitsubishi152Protocol::__pad3__()'],['../unionMitsubishi88Protocol.html#a32d9cf7a2c286e7a54700685c8c7f971',1,'Mitsubishi88Protocol::__pad3__()'],['../unionNeoclimaProtocol.html#af6dbc91124759aa129d1f90e6dc72018',1,'NeoclimaProtocol::__pad3__()'],['../unionPanasonicAc32Protocol.html#a7c4bfcb851fdb80a894a63b2315735d8',1,'PanasonicAc32Protocol::__pad3__()'],['../unionSamsungProtocol.html#a604db5fe346dd0260352ceb8110fa9fc',1,'SamsungProtocol::__pad3__()'],['../unionSanyoProtocol.html#a8361c7d8c6d8c29cb32cf8fc767af20d',1,'SanyoProtocol::__pad3__()'],['../unionSharpProtocol.html#a16dd55080d92063e1f94a8d0001f5422',1,'SharpProtocol::__pad3__()'],['../unionTcl112Protocol.html#affe38fa7d2100bea87de4071e21fc2b6',1,'Tcl112Protocol::__pad3__()'],['../unionToshibaProtocol.html#a98c82a98cf2cdaf6a90689a56a76b3d5',1,'ToshibaProtocol::__pad3__()'],['../unionTrotecProtocol.html#aa8d15923ce801a0066bc656f1de7c022',1,'TrotecProtocol::__pad3__()'],['../unionTrumaProtocol.html#a37e7eac9fb988eaf6e09b5006c38fcac',1,'TrumaProtocol::__pad3__()'],['../unionVestelProtocol.html#a0c33c79555a228be2c4daf1fc67d5916',1,'VestelProtocol::__pad3__()'],['../unionVoltasProtocol.html#aa63b5dd18bc7376a712e7dd16d594525',1,'VoltasProtocol::__pad3__()'],['../unionWhirlpoolProtocol.html#a6bbb9f4faf465e74c2d3a66f17b1df48',1,'WhirlpoolProtocol::__pad3__()']]], - ['_5f_5fpad4_5f_5f_4685',['__pad4__',['../unionAmcorProtocol.html#a4375506f729c9d45a1269aea9d968889',1,'AmcorProtocol::__pad4__()'],['../unionArgoProtocol.html#a2c425c7f223a53cdb33a783d133f5a77',1,'ArgoProtocol::__pad4__()'],['../unionCarrierProtocol.html#ade0f53c0cd05eaad14f0a3f0121e7b5e',1,'CarrierProtocol::__pad4__()'],['../unionCoronaProtocol.html#a58df374f27d3733fc63d3cc040478293',1,'CoronaProtocol::__pad4__()'],['../unionDaikinESPProtocol.html#a7014ed7555ab0ee36e2579fcb8df1f98',1,'DaikinESPProtocol::__pad4__()'],['../unionDaikin2Protocol.html#a62d5a48a2ed939f962d01ccc36240140',1,'Daikin2Protocol::__pad4__()'],['../unionDaikin216Protocol.html#a0b0ecd2afae9e01895d9eb9d7006ed79',1,'Daikin216Protocol::__pad4__()'],['../unionDaikin160Protocol.html#a74bccea5226643c27859b38a12a59be9',1,'Daikin160Protocol::__pad4__()'],['../unionDaikin176Protocol.html#a7a87ca0ff85353e3a3e0853af8784f0e',1,'Daikin176Protocol::__pad4__()'],['../unionDaikin128Protocol.html#a6646f9ae8d244cfd6ce6ae8444c26ee9',1,'Daikin128Protocol::__pad4__()'],['../unionDaikin152Protocol.html#afe5f17c62a8ba5ae29e4e2bb59aa1529',1,'Daikin152Protocol::__pad4__()'],['../unionDelonghiProtocol.html#a4cc4153806e037068b52d1f356bca2ef',1,'DelonghiProtocol::__pad4__()'],['../unionElectraProtocol.html#aca5ea0ef13aa3ad08fc35e0a5ba90b44',1,'ElectraProtocol::__pad4__()'],['../unionFujitsuProtocol.html#a62ccdc24ef47c68b3b13e35becaec99a',1,'FujitsuProtocol::__pad4__()'],['../unionGoodweatherProtocol.html#a15507e180c97e420b5d6fe3c0bc61fb8',1,'GoodweatherProtocol::__pad4__()'],['../unionGreeProtocol.html#a6caf58eb68a83c0686dbd65d7a35cb58',1,'GreeProtocol::__pad4__()'],['../unionHaierYRW02Protocol.html#a62e17795ebcaea82715972f98d5408ca',1,'HaierYRW02Protocol::__pad4__()'],['../unionHitachiProtocol.html#ad774d48d4f5aeea2866393fdfe3f555d',1,'HitachiProtocol::__pad4__()'],['../unionHitachi424Protocol.html#ae8a14021f2ffbbc8e371a98746f48254',1,'Hitachi424Protocol::__pad4__()'],['../unionKelvinatorProtocol.html#ac5dfd253e66fe1ec3e81861ff9831152',1,'KelvinatorProtocol::__pad4__()'],['../unionMitsubishi144Protocol.html#a3b863e77427d3a0e1aa253a78f7b74a2',1,'Mitsubishi144Protocol::__pad4__()'],['../unionMitsubishi136Protocol.html#abccf31e8af18978d9a1a88e89d940e09',1,'Mitsubishi136Protocol::__pad4__()'],['../unionMitsubishi112Protocol.html#a85d5019e05dd9f03a1f7ee064a88a942',1,'Mitsubishi112Protocol::__pad4__()'],['../unionMitsubishi152Protocol.html#a433f0416bbb79637c6f9fbe2acceac87',1,'Mitsubishi152Protocol::__pad4__()'],['../unionMitsubishi88Protocol.html#a9ea2db6c6894570bca8d28ca291257d4',1,'Mitsubishi88Protocol::__pad4__()'],['../unionNeoclimaProtocol.html#a8a71980caab28f7ec1d9db296e59b9b6',1,'NeoclimaProtocol::__pad4__()'],['../unionSamsungProtocol.html#aa760a13dc0616a19bdb0d26247f4069c',1,'SamsungProtocol::__pad4__()'],['../unionSanyoProtocol.html#a02c7bd013488fa887bb5c7f769ae7701',1,'SanyoProtocol::__pad4__()'],['../unionSharpProtocol.html#ad2f9ae4c63f0e3d7bf5ea29641f64f45',1,'SharpProtocol::__pad4__()'],['../unionTcl112Protocol.html#ae6dae45ebb41b93a08a5279123f2eb2c',1,'Tcl112Protocol::__pad4__()'],['../unionToshibaProtocol.html#a1dda567a649fbc2b9c62b88453d91a95',1,'ToshibaProtocol::__pad4__()'],['../unionTrotecProtocol.html#ad029528c5697ef44f4398297626ed3b0',1,'TrotecProtocol::__pad4__()'],['../unionTrumaProtocol.html#a47b0981e1af1482b07426ab2556239c4',1,'TrumaProtocol::__pad4__()'],['../unionVestelProtocol.html#aec62b8fe14c683d97ecae5f35c114a36',1,'VestelProtocol::__pad4__()'],['../unionVoltasProtocol.html#ab0ec8c8b4f98d8ad2185259a1013f20b',1,'VoltasProtocol::__pad4__()'],['../unionWhirlpoolProtocol.html#a4dd07f43eb81c73da20b4090a808cfb4',1,'WhirlpoolProtocol::__pad4__()']]], - ['_5f_5fpad5_5f_5f_4686',['__pad5__',['../unionAmcorProtocol.html#aa2fa57304833e2067f438d74f898dfc8',1,'AmcorProtocol::__pad5__()'],['../unionArgoProtocol.html#aa3990245fbd608c4a4e7fef690532656',1,'ArgoProtocol::__pad5__()'],['../unionCarrierProtocol.html#a635772a0e49e2a82b7e665b1f8d42148',1,'CarrierProtocol::__pad5__()'],['../unionCoronaProtocol.html#a8a34423073c0a91ace50605fc8337bc0',1,'CoronaProtocol::__pad5__()'],['../unionDaikinESPProtocol.html#a2fd0730f664fb53db682583eec683655',1,'DaikinESPProtocol::__pad5__()'],['../unionDaikin2Protocol.html#ae8820509ea3d0d469eeaf2c6b24b1cc6',1,'Daikin2Protocol::__pad5__()'],['../unionDaikin216Protocol.html#af741df8a92304153646c72e327a1f84c',1,'Daikin216Protocol::__pad5__()'],['../unionDaikin160Protocol.html#a3d27052aa6059811302d7b55c0f937f4',1,'Daikin160Protocol::__pad5__()'],['../unionDaikin176Protocol.html#a3072452ff1a6f05474bf41e1a9ceed9c',1,'Daikin176Protocol::__pad5__()'],['../unionDaikin152Protocol.html#a341c6fab12f9de609675822e437033dc',1,'Daikin152Protocol::__pad5__()'],['../unionDelonghiProtocol.html#a09090f4876d843dc6c4425e2f2e9b285',1,'DelonghiProtocol::__pad5__()'],['../unionElectraProtocol.html#a104239d43eacdb9a3a02a390f0162e90',1,'ElectraProtocol::__pad5__()'],['../unionFujitsuProtocol.html#aee4a515da60b77610fd3f6ae79d23693',1,'FujitsuProtocol::__pad5__()'],['../unionGoodweatherProtocol.html#a30b3e624d81d69c2a3f1365692b6a1e9',1,'GoodweatherProtocol::__pad5__()'],['../unionHaierYRW02Protocol.html#a7405f45e3dfb5230a6e531c3ea5bd2cc',1,'HaierYRW02Protocol::__pad5__()'],['../unionHitachi424Protocol.html#aa366817e22645701ccd3ffa37d7317eb',1,'Hitachi424Protocol::__pad5__()'],['../unionKelvinatorProtocol.html#a57849bb224e56d4cee776299d1ca04b4',1,'KelvinatorProtocol::__pad5__()'],['../unionMitsubishi144Protocol.html#ae4e8f971ea13ebced975441862bc9ae8',1,'Mitsubishi144Protocol::__pad5__()'],['../unionMitsubishi112Protocol.html#ab2ef871a7872995119e7c0055bd532ca',1,'Mitsubishi112Protocol::__pad5__()'],['../unionMitsubishi152Protocol.html#a9041f537b5d1dafd244c48d8f9a6e7ee',1,'Mitsubishi152Protocol::__pad5__()'],['../unionNeoclimaProtocol.html#aabf9592dcc470f8eba1a39e8633cf597',1,'NeoclimaProtocol::__pad5__()'],['../unionSamsungProtocol.html#a81057e26a43dcb99dc5b14d31dc900f5',1,'SamsungProtocol::__pad5__()'],['../unionSanyoProtocol.html#afe99c3e0bad0c7da17cf26a2fab655fc',1,'SanyoProtocol::__pad5__()'],['../unionSharpProtocol.html#a3ab9b37f4ad117e094210d7576e38d92',1,'SharpProtocol::__pad5__()'],['../unionTcl112Protocol.html#af7625c2439f53ca9b9865056d8c304b0',1,'Tcl112Protocol::__pad5__()'],['../unionToshibaProtocol.html#aea55884c83704873093edf6aa89e5515',1,'ToshibaProtocol::__pad5__()'],['../unionTrotecProtocol.html#a44b5f228f9f74a83f93d5d4d772b5b4c',1,'TrotecProtocol::__pad5__()'],['../unionTrumaProtocol.html#a158f1727d5503b42fa8b8289f5077c1c',1,'TrumaProtocol::__pad5__()'],['../unionVestelProtocol.html#a59279963eb0888f6f0669987f43c7440',1,'VestelProtocol::__pad5__()'],['../unionVoltasProtocol.html#af25903098b89acf7d2b6ebc08eea3ce5',1,'VoltasProtocol::__pad5__()'],['../unionWhirlpoolProtocol.html#a6cd9a96ce3841158165039b0e7e85bcc',1,'WhirlpoolProtocol::__pad5__()']]], - ['_5f_5fpad6_5f_5f_4687',['__pad6__',['../unionAmcorProtocol.html#ac7c9258f0465028a4d95468e9289a95e',1,'AmcorProtocol::__pad6__()'],['../unionArgoProtocol.html#a644f13f404fc89ac769437a1cf6ef5cc',1,'ArgoProtocol::__pad6__()'],['../unionCarrierProtocol.html#a683b70f292ffed7253b8956225a71a51',1,'CarrierProtocol::__pad6__()'],['../unionCoronaProtocol.html#aabdd6e87ab321b893f07461f755094c0',1,'CoronaProtocol::__pad6__()'],['../unionDaikinESPProtocol.html#a90b66e353330ccc293e1eb1011fd867c',1,'DaikinESPProtocol::__pad6__()'],['../unionDaikin2Protocol.html#a7ab72b8638708e7ccd77a8eddcd16222',1,'Daikin2Protocol::__pad6__()'],['../unionDaikin216Protocol.html#a69c25d121679d7f9809d7aaf3fd7dc2e',1,'Daikin216Protocol::__pad6__()'],['../unionDaikin160Protocol.html#af942373e7f265b12c5e1f8421384eec2',1,'Daikin160Protocol::__pad6__()'],['../unionDaikin152Protocol.html#a1767202bcd8ceb6e74af8a4ca0d2bee0',1,'Daikin152Protocol::__pad6__()'],['../unionElectraProtocol.html#a9e6ecfaa9e412c66289ce7053adb0b9b',1,'ElectraProtocol::__pad6__()'],['../unionFujitsuProtocol.html#a7cf469c79816ca98736f98ddb5748bd1',1,'FujitsuProtocol::__pad6__()'],['../unionGoodweatherProtocol.html#a426e1226b9b4427db41ab2b05ee6ed41',1,'GoodweatherProtocol::__pad6__()'],['../unionHaierYRW02Protocol.html#a03595ed00f070b0eecc647f426c2c9b1',1,'HaierYRW02Protocol::__pad6__()'],['../unionHitachi424Protocol.html#a6493b7bbcf755459eac23c47752c2ec4',1,'Hitachi424Protocol::__pad6__()'],['../unionKelvinatorProtocol.html#aa66ce8c926b143fa20f625272327f562',1,'KelvinatorProtocol::__pad6__()'],['../unionMitsubishi144Protocol.html#a4c0c204c7b2a5e74501064c648e2208e',1,'Mitsubishi144Protocol::__pad6__()'],['../unionMitsubishi112Protocol.html#aa4d66539685a6f96e7dd8fbe3d8e0107',1,'Mitsubishi112Protocol::__pad6__()'],['../unionMitsubishi152Protocol.html#abff52e55e71cd57b440094cd3dd9e115',1,'Mitsubishi152Protocol::__pad6__()'],['../unionNeoclimaProtocol.html#aad51233672b91f2ce68e950d4c50765e',1,'NeoclimaProtocol::__pad6__()'],['../unionSamsungProtocol.html#afa02814c4753f639a90ab6a23ef110d9',1,'SamsungProtocol::__pad6__()'],['../unionSanyoProtocol.html#a791ae08f3ba857068ae743192b59c82b',1,'SanyoProtocol::__pad6__()'],['../unionSharpProtocol.html#abedfd3c4badb1196e3e9b70a74288a56',1,'SharpProtocol::__pad6__()'],['../unionTcl112Protocol.html#a61cf175094f4bc60ab3af7f92d47d3ee',1,'Tcl112Protocol::__pad6__()'],['../unionToshibaProtocol.html#a70a740582720c7e99c1f0a19373e69eb',1,'ToshibaProtocol::__pad6__()'],['../unionTrotecProtocol.html#a66ea84463a2951cdc77ae7f08cd91600',1,'TrotecProtocol::__pad6__()'],['../unionVoltasProtocol.html#a1fc2d4c2b5792d53d364e61b84ca1fb0',1,'VoltasProtocol::__pad6__()'],['../unionWhirlpoolProtocol.html#a2918410c20d3861dda9c03e3ede1d802',1,'WhirlpoolProtocol::__pad6__()']]], - ['_5f_5fpad7_5f_5f_4688',['__pad7__',['../unionAmcorProtocol.html#a06dbf04a6bb3326c3277308bee61e375',1,'AmcorProtocol::__pad7__()'],['../unionArgoProtocol.html#a981cc0905966560692835630b870bc96',1,'ArgoProtocol::__pad7__()'],['../unionCarrierProtocol.html#a21fe681b7a9b1a507d03b6eef716f57d',1,'CarrierProtocol::__pad7__()'],['../unionCoronaProtocol.html#aa833c2aa87c8b67ded46784d9d9fd506',1,'CoronaProtocol::__pad7__()'],['../unionDaikinESPProtocol.html#a6800cde1656446518ea87f1118439b03',1,'DaikinESPProtocol::__pad7__()'],['../unionDaikin2Protocol.html#a6aa60bc17385c5e18c12e384a1d4c0a8',1,'Daikin2Protocol::__pad7__()'],['../unionDaikin152Protocol.html#ac4382a8fab79df328801f8ec55dc8e57',1,'Daikin152Protocol::__pad7__()'],['../unionElectraProtocol.html#a985fb931c2ddcc73fefd4c207ed3e1a9',1,'ElectraProtocol::__pad7__()'],['../unionFujitsuProtocol.html#adeff2904e753c8d964465732b86fc2c5',1,'FujitsuProtocol::__pad7__()'],['../unionHaierYRW02Protocol.html#a13f95461887012ca8a0d27ce71c65cb6',1,'HaierYRW02Protocol::__pad7__()'],['../unionKelvinatorProtocol.html#a02e3f067fc93fae6f5656abe574bb440',1,'KelvinatorProtocol::__pad7__()'],['../unionMitsubishi152Protocol.html#ae9fcb056173bc5189802a0854b86ec45',1,'Mitsubishi152Protocol::__pad7__()'],['../unionNeoclimaProtocol.html#a141f688a97a101159035a384da7aba21',1,'NeoclimaProtocol::__pad7__()'],['../unionSamsungProtocol.html#a9566b98e808ae427eb3f6091c46ba8cb',1,'SamsungProtocol::__pad7__()'],['../unionSanyoProtocol.html#a1193bfb80754a3d4393bb638f17bafc4',1,'SanyoProtocol::__pad7__()'],['../unionSharpProtocol.html#a97bd3208dfa6bc72a37aee33c419b1ec',1,'SharpProtocol::__pad7__()'],['../unionTcl112Protocol.html#adc928f47f29d1b4bf33e7bd35c9987bd',1,'Tcl112Protocol::__pad7__()'],['../unionToshibaProtocol.html#a722c3fbf8955ca74f2ce7d8c5106301e',1,'ToshibaProtocol::__pad7__()'],['../unionWhirlpoolProtocol.html#a06cd885d96a9cb40b173ed243e1c68f1',1,'WhirlpoolProtocol::__pad7__()']]], - ['_5f_5fpad8_5f_5f_4689',['__pad8__',['../unionAmcorProtocol.html#a7a602c91754a62acb96b65fad3ed5009',1,'AmcorProtocol::__pad8__()'],['../unionArgoProtocol.html#aada1e2f63bf852c820d3313d6bf55e2e',1,'ArgoProtocol::__pad8__()'],['../unionDaikinESPProtocol.html#a5257adef869633be571d00ff185e177b',1,'DaikinESPProtocol::__pad8__()'],['../unionDaikin2Protocol.html#ab0e5af627d95aa7d2a7ffecbeb34cd1e',1,'Daikin2Protocol::__pad8__()'],['../unionDaikin152Protocol.html#a36da6d6a07db0d3c4c559fb5319cf653',1,'Daikin152Protocol::__pad8__()'],['../unionElectraProtocol.html#aad3d9638d69b6a92f8e4205456d7b1e4',1,'ElectraProtocol::__pad8__()'],['../unionFujitsuProtocol.html#aaf3462eb6604ea7875995797805e69b1',1,'FujitsuProtocol::__pad8__()'],['../unionHaierYRW02Protocol.html#ab0640cdf0ae186ef0a75699bb2ab2247',1,'HaierYRW02Protocol::__pad8__()'],['../unionKelvinatorProtocol.html#ab2101275d6280bc95665d64ca936d4d2',1,'KelvinatorProtocol::__pad8__()'],['../unionMitsubishi152Protocol.html#acac643d9404b978f6f23e10dedee0076',1,'Mitsubishi152Protocol::__pad8__()'],['../unionNeoclimaProtocol.html#a96a021ba5d0cf5ffa0d8389b8c71f572',1,'NeoclimaProtocol::__pad8__()'],['../unionSamsungProtocol.html#a9c421e874b7ef2943cc7dfd37b35585f',1,'SamsungProtocol::__pad8__()'],['../unionSanyoProtocol.html#a41960ddb576d82e70010fa0699d88c74',1,'SanyoProtocol::__pad8__()'],['../unionSharpProtocol.html#a69a77f391ddca92c6ec7b26de9e1a4ea',1,'SharpProtocol::__pad8__()'],['../unionToshibaProtocol.html#afff1b9b96aa68e6d0772f361019e2684',1,'ToshibaProtocol::__pad8__()'],['../unionWhirlpoolProtocol.html#a00025b90681d37c8ee3daa93cf870a3d',1,'WhirlpoolProtocol::__pad8__()']]], - ['_5f_5fpad9_5f_5f_4690',['__pad9__',['../unionArgoProtocol.html#a38bc056c18e086e4ff91d86e33b0bc08',1,'ArgoProtocol::__pad9__()'],['../unionDaikinESPProtocol.html#a73486ab8f7374a19e40ffd20daae2304',1,'DaikinESPProtocol::__pad9__()'],['../unionDaikin2Protocol.html#a68031d2df7b64929392f391f0e37fdeb',1,'Daikin2Protocol::__pad9__()'],['../unionElectraProtocol.html#af1e208eaa64b08e027265f302e3fbe9d',1,'ElectraProtocol::__pad9__()'],['../unionFujitsuProtocol.html#a80f43087377c73374eacb06691dd8ba0',1,'FujitsuProtocol::__pad9__()'],['../unionHaierYRW02Protocol.html#ad5c197a23df2a768d022946347d765fe',1,'HaierYRW02Protocol::__pad9__()'],['../unionKelvinatorProtocol.html#aec71a5df4da5fd9a10e199d2112a88ce',1,'KelvinatorProtocol::__pad9__()'],['../unionMitsubishi152Protocol.html#aa96a8fa1d266927c2673472d459b0d66',1,'Mitsubishi152Protocol::__pad9__()'],['../unionNeoclimaProtocol.html#a1440db9fae372808b6360bcf60c39f03',1,'NeoclimaProtocol::__pad9__()'],['../unionSamsungProtocol.html#abcda913039808cf6b1cd7d6d8b01ce13',1,'SamsungProtocol::__pad9__()'],['../unionSanyoProtocol.html#ad6d6489ed793360fdee4b2167d1b4efb',1,'SanyoProtocol::__pad9__()'],['../unionSharpProtocol.html#a02c515fbdde1a15a8f19af0d9154e9d2',1,'SharpProtocol::__pad9__()'],['../unionWhirlpoolProtocol.html#aa7006fe4a8c77706762ec523838a7d5e',1,'WhirlpoolProtocol::__pad9__()']]], - ['_5fcmd_4691',['_cmd',['../classIRFujitsuAC.html#a5e66bc4a24b892525cfa02bb4d741cbf',1,'IRFujitsuAC']]], - ['_5fdesiredtemp_4692',['_desiredtemp',['../classIRWhirlpoolAc.html#aee17cfa10f19e0df992b25cff58e9613',1,'IRWhirlpoolAc']]], - ['_5fdutycycle_4693',['_dutycycle',['../classIRsend.html#a602e96e8cdbd6af41d288d905043e51f',1,'IRsend']]], - ['_5feconotoggle_4694',['_EconoToggle',['../classIRMideaAC.html#a30f184751948b4412da46577578b625a',1,'IRMideaAC']]], - ['_5ffan_4695',['_fan',['../classIRSharpAc.html#ad0f4e6025f2952c477bbd3f72a64d2fe',1,'IRSharpAc']]], - ['_5fforcepower_4696',['_forcepower',['../classIRSamsungAc.html#a022c96bfab671b1d0b6b5b331be31993',1,'IRSamsungAc']]], - ['_5ffreq_5funittest_4697',['_freq_unittest',['../classIRsend.html#a2caec2f35ecdb890b1e34d9eb3642363',1,'IRsend']]], - ['_5finverted_4698',['_inverted',['../classIRac.html#a9cfaa0b92819f06b3aa5b3e9e48b9d51',1,'IRac']]], - ['_5firsend_4699',['_irsend',['../classIRAirwellAc.html#a57a01d6e65f6fa1127f8d3dc86ff8071',1,'IRAirwellAc::_irsend()'],['../classIRAmcorAc.html#a6245bb51fa206031c3348e3eb6cb096d',1,'IRAmcorAc::_irsend()'],['../classIRArgoAC.html#a1abd8d958c3e153c4f2aaf7a3716414e',1,'IRArgoAC::_irsend()'],['../classIRCarrierAc64.html#a17270f2b1d6cab828e2a51fc23b36437',1,'IRCarrierAc64::_irsend()'],['../classIRCoolixAC.html#a6c7033e72fb860bca600ba6ea6e7afef',1,'IRCoolixAC::_irsend()'],['../classIRCoronaAc.html#afba5a3c3cff3859303a91d136ad00b66',1,'IRCoronaAc::_irsend()'],['../classIRDaikinESP.html#a2f5a8cb170d54f06bfa3eeb9b8ff838e',1,'IRDaikinESP::_irsend()'],['../classIRDaikin2.html#aa8ba00ae2c09af098146452164c4cb3b',1,'IRDaikin2::_irsend()'],['../classIRDaikin216.html#ac0e88b92a5c75138ce5b3a31f0c09be2',1,'IRDaikin216::_irsend()'],['../classIRDaikin160.html#a3094f35b359d8774a95dd3896c0e45e4',1,'IRDaikin160::_irsend()'],['../classIRDaikin176.html#a24f7022eb1c1936f5ee95ac0d732584c',1,'IRDaikin176::_irsend()'],['../classIRDaikin128.html#a1f155cc34e6c21d206962239d0135d1b',1,'IRDaikin128::_irsend()'],['../classIRDaikin152.html#a9b203215156d48dabac0fa8fd19dc613',1,'IRDaikin152::_irsend()'],['../classIRDaikin64.html#a6eb57b0eb12dab12bd9cf2fe4fded2c7',1,'IRDaikin64::_irsend()'],['../classIRDelonghiAc.html#a8cbe8b6857b7492c108118b4eda3ecb0',1,'IRDelonghiAc::_irsend()'],['../classIREcoclimAc.html#aa34348b379abce3ae540987c3b83ec4c',1,'IREcoclimAc::_irsend()'],['../classIRElectraAc.html#af8732b31f2a4421226220dd8a4a4f985',1,'IRElectraAc::_irsend()'],['../classIRFujitsuAC.html#a2b7fec218b3530b06ce8b49f472e9595',1,'IRFujitsuAC::_irsend()'],['../classIRGoodweatherAc.html#acf606eb9e024c99407138dbd058e98d9',1,'IRGoodweatherAc::_irsend()'],['../classIRGreeAC.html#a36390655badf0ad5b5809499a8634f70',1,'IRGreeAC::_irsend()'],['../classIRHaierAC.html#aec69643fe633a57d635754690225fdd1',1,'IRHaierAC::_irsend()'],['../classIRHaierACYRW02.html#a24dd00bfa5e062c5c7f459bcd60213b7',1,'IRHaierACYRW02::_irsend()'],['../classIRHitachiAc.html#a0e296fa54cc4c56e16c6fc58c7ad827f',1,'IRHitachiAc::_irsend()'],['../classIRHitachiAc1.html#a61ad6289fc3719a850299788e642b98b',1,'IRHitachiAc1::_irsend()'],['../classIRHitachiAc424.html#a39157a1bda46304429570be2880c6ec4',1,'IRHitachiAc424::_irsend()'],['../classIRHitachiAc3.html#a8dc3b713e29f3ea96a106868451ba728',1,'IRHitachiAc3::_irsend()'],['../classIRKelonAc.html#a7384fd6a4fb513dd56ff6b5c9f40e922',1,'IRKelonAc::_irsend()'],['../classIRKelvinatorAC.html#ae3571bf6de20e47f81ad1da8f1d13118',1,'IRKelvinatorAC::_irsend()'],['../classIRLgAc.html#a779f321b65db6ad05ab3e578b38cf093',1,'IRLgAc::_irsend()'],['../classIRMideaAC.html#ae2b6068355ecdc360c4c2ca2fd8d921b',1,'IRMideaAC::_irsend()'],['../classIRMitsubishiAC.html#a6753b676690f35bc8ba73504fdc34946',1,'IRMitsubishiAC::_irsend()'],['../classIRMitsubishi136.html#acd14c7bb6b26d0603ee552a000e16d43',1,'IRMitsubishi136::_irsend()'],['../classIRMitsubishi112.html#af858d640f9b2fca053287f280c8a27c0',1,'IRMitsubishi112::_irsend()'],['../classIRMitsubishiHeavy152Ac.html#a1ebd4c8b06d64e0944358156f58d414e',1,'IRMitsubishiHeavy152Ac::_irsend()'],['../classIRMitsubishiHeavy88Ac.html#a1e999c9ee028d35c03cd6b4751bcb8be',1,'IRMitsubishiHeavy88Ac::_irsend()'],['../classIRNeoclimaAc.html#a43e42b1c7e68e5a85ed10454c6210be5',1,'IRNeoclimaAc::_irsend()'],['../classIRPanasonicAc.html#a065dcc65ef3dbb8f2384f883fb97d102',1,'IRPanasonicAc::_irsend()'],['../classIRPanasonicAc32.html#acc38daddd226f27b33835532041d5148',1,'IRPanasonicAc32::_irsend()'],['../classIRSamsungAc.html#a5815878dbebe512c41c26924cf9f5eeb',1,'IRSamsungAc::_irsend()'],['../classIRSanyoAc.html#a5dc78b02c5d10ac717542b67b65f15d6',1,'IRSanyoAc::_irsend()'],['../classIRSharpAc.html#a10ee598c31c0f8179ace953ed88e37c6',1,'IRSharpAc::_irsend()'],['../classIRTcl112Ac.html#a3f10e710a44c3a80f4f9ed5247b28058',1,'IRTcl112Ac::_irsend()'],['../classIRTechnibelAc.html#adb30f91c384028cc53aaae6edaacf3b0',1,'IRTechnibelAc::_irsend()'],['../classIRTechnibelAc.html#a9db7b15e279e0c17e0eafd8201d5c7dc',1,'IRTechnibelAc::_irsend()'],['../classIRTecoAc.html#a283ff8b73ef2998f0668d0a03cba0938',1,'IRTecoAc::_irsend()'],['../classIRToshibaAC.html#a694609136a9cbdb9af5f8bb98411c2eb',1,'IRToshibaAC::_irsend()'],['../classIRTranscoldAc.html#a3f7136d98c100a67b97f4f8afb750fc4',1,'IRTranscoldAc::_irsend()'],['../classIRTrotecESP.html#a1faa968fc2651dc1774160950e97a74e',1,'IRTrotecESP::_irsend()'],['../classIRTrumaAc.html#abd9d54c3185e53d25c870a8e89cb0e90',1,'IRTrumaAc::_irsend()'],['../classIRVestelAc.html#a56d35fc5d39c97b4c6f2decf176e2cae',1,'IRVestelAc::_irsend()'],['../classIRVoltas.html#a09225bcf0cdff72f0fe35a88a91a88ad',1,'IRVoltas::_irsend()'],['../classIRWhirlpoolAc.html#af4fdac2382048e2776c787bebd482e9e',1,'IRWhirlpoolAc::_irsend()']]], - ['_5firtimer_5funittest_5fnow_4700',['_IRtimer_unittest_now',['../IRtimer_8cpp.html#a4ac531aa761a28d68edbc12967038180',1,'IRtimer.cpp']]], - ['_5flastfan_4701',['_lastfan',['../classIRTrumaAc.html#a7793142d962316d930372ea6beac2069',1,'IRTrumaAc']]], - ['_5flastmode_4702',['_lastmode',['../classIRTrumaAc.html#a9e72a42def9956635765c6bfb54f333b',1,'IRTrumaAc']]], - ['_5flastsentpowerstate_4703',['_lastsentpowerstate',['../classIRSamsungAc.html#af1c6712dc05a451e815675abe972d9b4',1,'IRSamsungAc']]], - ['_5flighttoggle_4704',['_LightToggle',['../classIRMideaAC.html#ab466b5939e796f818203220e0ca6896d',1,'IRMideaAC']]], - ['_5fmode_4705',['_mode',['../classIRSharpAc.html#a169d5636aead556234dc301729050619',1,'IRSharpAc']]], - ['_5fmodel_4706',['_model',['../classIRFujitsuAC.html#a181c71dbd46ceabdcfe08448ee32bba7',1,'IRFujitsuAC::_model()'],['../classIRGreeAC.html#ae357bf1611f349e2686f4f46c2581c47',1,'IRGreeAC::_model()'],['../classIRSharpAc.html#a93ef10252142effe9fe52d2ad9787c6c',1,'IRSharpAc::_model()'],['../classIRVoltas.html#a01270b3d5e2b0d85a3ee860edb5c3232',1,'IRVoltas::_model()']]], - ['_5fmodulation_4707',['_modulation',['../classIRac.html#acc6b7380f11c38d13fffa99ca2189a9b',1,'IRac']]], - ['_5fpin_4708',['_pin',['../classIRac.html#aba78a2510d8cdcaf4c601e8b0574ae6c',1,'IRac']]], - ['_5fprev_4709',['_prev',['../classIRac.html#a8c63dc78c49f3714887fea0feefffd44',1,'IRac']]], - ['_5fprev_5fmode_4710',['_prev_mode',['../classIRToshibaAC.html#aed47a2b5df2c06438942b00852c45ace',1,'IRToshibaAC']]], - ['_5fpreviousfan_4711',['_previousFan',['../classIRKelonAc.html#abd9285d41e26dccb5d09a32662adb1b4',1,'IRKelonAc']]], - ['_5fpreviousmode_4712',['_previousMode',['../classIRKelonAc.html#aff35eb29e8e612acf701cef6c53ecaba',1,'IRKelonAc']]], - ['_5fprevioustemp_4713',['_previoustemp',['../classIRHitachiAc.html#a1368dcd7f4c0049822fd2b9b1e0acb5e',1,'IRHitachiAc::_previoustemp()'],['../classIRHitachiAc424.html#aba6c17936775e268744af23a4a533f92',1,'IRHitachiAc424::_previoustemp()'],['../classIRKelonAc.html#ab65d1fd26a3e72d1d07e6fca1cc44a1f',1,'IRKelonAc::_previousTemp()']]], - ['_5fprotocol_4714',['_protocol',['../classIRLgAc.html#a9bd32e865a7358bbf32830d888e2786a',1,'IRLgAc']]], - ['_5fsaved_4715',['_saved',['../classIRCoolixAC.html#a24160742d72e8b1ee1069c9c6ddc57fa',1,'IRCoolixAC']]], - ['_5fsaved_5ftemp_4716',['_saved_temp',['../classIRDaikin176.html#a8f1d6c765bf09c1a3dc9678c3939a5be',1,'IRDaikin176::_saved_temp()'],['../classIRDelonghiAc.html#a724aa5748e714a7f0109a2f3502cd1d1',1,'IRDelonghiAc::_saved_temp()'],['../classIRTechnibelAc.html#a0b98069ac7367419f736fa0e639e4847',1,'IRTechnibelAc::_saved_temp()']]], - ['_5fsaved_5ftemp_5funits_4717',['_saved_temp_units',['../classIRDelonghiAc.html#a14fba6ccbc25da76744d28e7a40c385b',1,'IRDelonghiAc::_saved_temp_units()'],['../classIRTechnibelAc.html#a8d5a8e132e1d5884564f3212d396d160',1,'IRTechnibelAc::_saved_temp_units()']]], - ['_5fsend_5fswing_4718',['_send_swing',['../classIRToshibaAC.html#a3c0873667deefce7b13a051910d13046',1,'IRToshibaAC']]], - ['_5fstate_5flength_4719',['_state_length',['../classIRFujitsuAC.html#aea1819d0041f305e2c990f6f3eced865',1,'IRFujitsuAC']]], - ['_5fstate_5flength_5fshort_4720',['_state_length_short',['../classIRFujitsuAC.html#a7093cf32cd2e856ff692aebc732c1d50',1,'IRFujitsuAC']]], - ['_5fswing_5fmode_4721',['_swing_mode',['../classIRToshibaAC.html#a3d782a316cbadf2128a1392feda5c21b',1,'IRToshibaAC']]], - ['_5fswingh_4722',['_swingh',['../classIRPanasonicAc.html#ad0300ee66bcab38e13724520cb3226f9',1,'IRPanasonicAc']]], - ['_5fswingvstep_4723',['_SwingVStep',['../classIRMideaAC.html#a8a1c79c8a4b61075790faef879928c4b',1,'IRMideaAC']]], - ['_5fswingvtoggle_4724',['_SwingVToggle',['../classIRMideaAC.html#adb4318940487aea09116fe6b9f061470',1,'IRMideaAC']]], - ['_5ftemp_4725',['_temp',['../classIRLgAc.html#a1eeb727ee96c26b784a607aabd4577c9',1,'IRLgAc::_temp()'],['../classIRPanasonicAc.html#af6511e3c9745ff6750dc6fc3fdda21b3',1,'IRPanasonicAc::_temp()'],['../classIRSharpAc.html#a1d0a6274534123133217175920c7cd95',1,'IRSharpAc::_temp()']]], - ['_5ftimer_5fnum_4726',['_timer_num',['../classIRrecv.html#aff11c0c20735b16ce411088003607911',1,'IRrecv']]], - ['_5ftimerms_5funittest_5fnow_4727',['_TimerMs_unittest_now',['../IRtimer_8cpp.html#aed35ce7fa92ebb856a03f81e756cb2c6',1,'IRtimer.cpp']]], - ['_5ftolerance_4728',['_tolerance',['../classIRrecv.html#a0459a65dd31b215713ad66a1e4f3540e',1,'IRrecv']]], - ['_5fturbotoggle_4729',['_TurboToggle',['../classIRMideaAC.html#a86ee53513a7f47556f9cfe44d060e94c',1,'IRMideaAC']]], - ['_5funknown_5fthreshold_4730',['_unknown_threshold',['../classIRrecv.html#adb8cbc5c1cb739f33f5be25b3a6c79bd',1,'IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.html deleted file mode 100644 index 49fe59a12..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.js deleted file mode 100644 index ad5e091f0..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['address_4731',['address',['../classdecode__results.html#a2858c3a5e28eccca95d44aaa87b70e9e',1,'decode_results']]], - ['airflow_4732',['AirFlow',['../unionGoodweatherProtocol.html#a7b876552a27a7a9bf84b1009f7b12f7a',1,'GoodweatherProtocol']]], - ['altmode_4733',['AltMode',['../unionDaikin176Protocol.html#a05511938e152951723792dc08b33d0dd',1,'Daikin176Protocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.html deleted file mode 100644 index 92982ac57..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.js deleted file mode 100644 index 58a04b278..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_10.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['quiet_7132',['Quiet',['../unionDaikinESPProtocol.html#af93324815f6be6cfc5d0d50af9e73aad',1,'DaikinESPProtocol::Quiet()'],['../unionDaikin2Protocol.html#afa111c9afbc94bcf52e9ba15b59c1bee',1,'Daikin2Protocol::Quiet()'],['../unionDaikin152Protocol.html#ac5bfe8541e53cb2732bfcbc71500ed32',1,'Daikin152Protocol::Quiet()'],['../unionKelvinatorProtocol.html#ac803fe14d6d21155418d2fe0543c9d9f',1,'KelvinatorProtocol::Quiet()'],['../structstdAc_1_1state__t.html#a251ad14e187a9905137e9e4e010c3e34',1,'stdAc::state_t::quiet()']]], - ['quiet1_7133',['Quiet1',['../unionSamsungProtocol.html#ac38e3f34f98ac3dae9738a1582dfeca6',1,'SamsungProtocol']]], - ['quiet5_7134',['Quiet5',['../unionSamsungProtocol.html#a94a9d2b42e1ab7a308d079322350c3f9',1,'SamsungProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.html deleted file mode 100644 index 94f1a8cf9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.js deleted file mode 100644 index cd9fe5aec..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_11.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['raw_7135',['raw',['../unionAirwellProtocol.html#a984e1bba5afac9887c2ebb976a38d560',1,'AirwellProtocol::raw()'],['../unionAmcorProtocol.html#a2044da7ab12175f20657f18f4b76728b',1,'AmcorProtocol::raw()'],['../unionArgoProtocol.html#a845151d1f5062ab0116f3a413e23da8f',1,'ArgoProtocol::raw()'],['../unionCarrierProtocol.html#a1a09f5c8340a2e7e074a332bf4906dfd',1,'CarrierProtocol::raw()'],['../unionCoolixProtocol.html#a41c5b4f502fedd08d691ee44b1767a11',1,'CoolixProtocol::raw()'],['../unionCoronaProtocol.html#a16cbcc7f8542e9367a815efa4491c71b',1,'CoronaProtocol::raw()'],['../unionDaikinESPProtocol.html#a2875b60fdac6547968cf71976a6f5101',1,'DaikinESPProtocol::raw()'],['../unionDaikin2Protocol.html#a66a685c572a98c1a4f5598c6e61082fa',1,'Daikin2Protocol::raw()'],['../unionDaikin216Protocol.html#adaca3670dfbb98c2fb08bb996d88ebfa',1,'Daikin216Protocol::raw()'],['../unionDaikin160Protocol.html#afde716be26af9cb415102171b68d63ee',1,'Daikin160Protocol::raw()'],['../unionDaikin176Protocol.html#aa037609a71d25ca0dd9be53e7e4bc138',1,'Daikin176Protocol::raw()'],['../unionDaikin128Protocol.html#a6c6ece8bed97c5eb4335d50229c8469f',1,'Daikin128Protocol::raw()'],['../unionDaikin152Protocol.html#a363f93d1bd9e1466222503a194449cab',1,'Daikin152Protocol::raw()'],['../unionDaikin64Protocol.html#aca4063a77b19390e61697478c2e6706d',1,'Daikin64Protocol::raw()'],['../unionDelonghiProtocol.html#a5e82aa5e22fdbdb64b5232766b9ac7c2',1,'DelonghiProtocol::raw()'],['../unionEcoclimProtocol.html#af4c52ba1cf4306ddf149d26fc93c14e2',1,'EcoclimProtocol::raw()'],['../unionElectraProtocol.html#aad34141d26a6673df8fcb2bbfe3b0439',1,'ElectraProtocol::raw()'],['../unionGoodweatherProtocol.html#aea5a3a02cea21af0f42b63b7145709c9',1,'GoodweatherProtocol::raw()'],['../unionHaierYRW02Protocol.html#aa1607ceff9c90cbb78e446a98eb0fe52',1,'HaierYRW02Protocol::raw()'],['../unionHitachiProtocol.html#ab39a02f7cdf88ea4cdcd71c2f4be409a',1,'HitachiProtocol::raw()'],['../unionHitachi424Protocol.html#a0d1b33b2122247103476e7d33a125672',1,'Hitachi424Protocol::raw()'],['../unionHitachi1Protocol.html#ad02b8338e2b099f371d3c7366087caf4',1,'Hitachi1Protocol::raw()'],['../unionKelonProtocol.html#a5cbd812734ed55a33aba1b5c8dc90e22',1,'KelonProtocol::raw()'],['../unionKelvinatorProtocol.html#a9d16ef4663c237f8217a081f71e96e44',1,'KelvinatorProtocol::raw()'],['../unionLGProtocol.html#a3255b9b6a3069f7b749b98ed22bf5378',1,'LGProtocol::raw()'],['../unionMitsubishi144Protocol.html#aae639c8be3c729e29b68e29ed7141d45',1,'Mitsubishi144Protocol::raw()'],['../unionMitsubishi136Protocol.html#ace7d2ec3beca925e4e8ede3398d13684',1,'Mitsubishi136Protocol::raw()'],['../unionMitsubishi112Protocol.html#adf74af634ab8ebeb0fd06e37fe86c641',1,'Mitsubishi112Protocol::raw()'],['../unionMitsubishi152Protocol.html#af0b9754d5fe5437768100f2e50581929',1,'Mitsubishi152Protocol::raw()'],['../unionMitsubishi88Protocol.html#a9b54684f51573a21d26d816df376ac6e',1,'Mitsubishi88Protocol::raw()'],['../unionNeoclimaProtocol.html#aa7591e6333f5266d5f9592c4c623083e',1,'NeoclimaProtocol::raw()'],['../unionPanasonicAc32Protocol.html#a3e93ce14cef274f4ac003f8ba54cec5d',1,'PanasonicAc32Protocol::raw()'],['../unionSamsungProtocol.html#ac0883f3aa613c5ff7c234a2a16a2585f',1,'SamsungProtocol::raw()'],['../unionSanyoProtocol.html#a5213248c1834d15af3d3f1ba94d4481e',1,'SanyoProtocol::raw()'],['../unionSharpProtocol.html#a0013861cb2cd4bc466177ea07d4dfdb8',1,'SharpProtocol::raw()'],['../unionTcl112Protocol.html#a1d1a6ffcb7076b1d6c742de1178c2420',1,'Tcl112Protocol::raw()'],['../unionTechnibelProtocol.html#a56e1c8a038404cd900e438f3e0db8567',1,'TechnibelProtocol::raw()'],['../unionTecoProtocol.html#aaab0e91ca6ea4d346589d4b8db12b72c',1,'TecoProtocol::raw()'],['../unionToshibaProtocol.html#a2f5742d891e33106fd55acc4f2898012',1,'ToshibaProtocol::raw()'],['../unionTranscoldProtocol.html#a054af4c474a87583c1106a5f2a7e83e7',1,'TranscoldProtocol::raw()'],['../unionTrotecProtocol.html#aaf54633e6ddaf5dddf63adc904f117dd',1,'TrotecProtocol::raw()'],['../unionTrumaProtocol.html#aa4902b2b89193e0c317bbb46208a0730',1,'TrumaProtocol::raw()'],['../unionVoltasProtocol.html#aef55de7b215b4dd5d36d0bd7b542a85b',1,'VoltasProtocol::raw()'],['../unionWhirlpoolProtocol.html#a6b9f13431fc739a77cc719e69a0b0467',1,'WhirlpoolProtocol::raw()']]], - ['rawbuf_7136',['rawbuf',['../structirparams__t.html#a6f8a82b51fa206a8cb195e5838aa0cb3',1,'irparams_t::rawbuf()'],['../classdecode__results.html#a19043dc161cd5e0d3dcc82b5a7470e49',1,'decode_results::rawbuf()']]], - ['rawlen_7137',['rawlen',['../structirparams__t.html#a08e83386c65a90038e0d4922f1f6aa84',1,'irparams_t::rawlen()'],['../classdecode__results.html#a913e19fc5032fa1f97cf8afe0fa450ec',1,'decode_results::rawlen()']]], - ['rcvstate_7138',['rcvstate',['../structirparams__t.html#a63354788dab4569f4092cd05e77f0260',1,'irparams_t']]], - ['recvpin_7139',['recvpin',['../structirparams__t.html#a50da5aa1c42a69b01d50ea688db67d14',1,'irparams_t']]], - ['remote_5fstate_7140',['remote_state',['../unionGreeProtocol.html#ae034ac3966312175d26fe1817108d7a4',1,'GreeProtocol::remote_state()'],['../unionHaierProtocol.html#af8966fa819bcb51f496ec185130bcf0f',1,'HaierProtocol::remote_state()'],['../classIRHitachiAc3.html#a5602ded229a41796c205519449f7d509',1,'IRHitachiAc3::remote_state()'],['../unionMideaProtocol.html#a8d696bb16d652ef6d582014049be2bbb',1,'MideaProtocol::remote_state()'],['../classIRPanasonicAc.html#a85d5118c0ed947cc77f2ed94b0d44e4a',1,'IRPanasonicAc::remote_state()']]], - ['repeat_7141',['repeat',['../classdecode__results.html#a09da48786fe3966cd5621840fd771bfa',1,'decode_results']]], - ['restlength_7142',['RestLength',['../unionFujitsuProtocol.html#aa402d7b8ee039662954138ec4863fbcb',1,'FujitsuProtocol']]], - ['roomtemp_7143',['RoomTemp',['../unionArgoProtocol.html#a35f91863997bb886da9fc6a303e62c65',1,'ArgoProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.html deleted file mode 100644 index 61c013a4e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.js deleted file mode 100644 index bd2b80a0d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_12.js +++ /dev/null @@ -1,51 +0,0 @@ -var searchData= -[ - ['save_7144',['Save',['../unionTecoProtocol.html#ae724fb83aed6d33cc43ec4ded5307983',1,'TecoProtocol']]], - ['savedfan_7145',['savedFan',['../classIRCoolixAC.html#a5645cc98a1b1c509729544c09dc77fbf',1,'IRCoolixAC']]], - ['scrap_7146',['scrap',['../unionmagiquest.html#afd0bcf9a87f0fa2db87b68b211952a73',1,'magiquest']]], - ['sections_7147',['sections',['../unionCoronaProtocol.html#ae7cdfa7315fae2be9aa64f57b10b325a',1,'CoronaProtocol']]], - ['sensor_7148',['Sensor',['../unionDaikinESPProtocol.html#a9cdca7efde034c19bc1bd3da5c204ec9',1,'DaikinESPProtocol::Sensor()'],['../unionDaikin152Protocol.html#a4bbb04adc012732ba03820a2f8632a2a',1,'Daikin152Protocol::Sensor()'],['../unionSanyoProtocol.html#ad71145ae23e81d6a934149402788d6c8',1,'SanyoProtocol::Sensor()']]], - ['sensortemp_7149',['SensorTemp',['../unionCoolixProtocol.html#a3213a8e821e4f8dc89240b1aa429ab9d',1,'CoolixProtocol::SensorTemp()'],['../unionEcoclimProtocol.html#a35648af709ab62a606481bd73cc72e14',1,'EcoclimProtocol::SensorTemp()'],['../unionMideaProtocol.html#a2ce21157e61749f4d1c3b14fd0b6cfe8',1,'MideaProtocol::SensorTemp()'],['../unionSanyoProtocol.html#a2221111b02f522b4e482b21edfd3dd39',1,'SanyoProtocol::SensorTemp()']]], - ['shortcode_7150',['shortcode',['../unionFujitsuProtocol.html#a37fb86943f1b72293a8ac515b42ea4a0',1,'FujitsuProtocol']]], - ['shortmsg_7151',['ShortMsg',['../unionToshibaProtocol.html#ad82a92de12d4bf814dd93cbde958a9b8',1,'ToshibaProtocol']]], - ['sig_7152',['Sig',['../unionMitsubishi152Protocol.html#a3e212768123e252ab4c17cec54084ddc',1,'Mitsubishi152Protocol::Sig()'],['../unionMitsubishi88Protocol.html#a7334ae1a2beac4e7db68817d715780f8',1,'Mitsubishi88Protocol::Sig()']]], - ['sign_7153',['Sign',['../unionLGProtocol.html#a0ce79a58c9afe05d8f88a246f1e4e38c',1,'LGProtocol']]], - ['signature_7154',['Signature',['../unionVestelProtocol.html#a04f21c296b64b6446e084286042cc43e',1,'VestelProtocol']]], - ['silent_7155',['Silent',['../unionMitsubishi152Protocol.html#af3a374268ed6de973571de1104a1e3b6',1,'Mitsubishi152Protocol']]], - ['sleep_7156',['Sleep',['../unionCarrierProtocol.html#a957ac027dec4e1942d88ac8f7bcbc767',1,'CarrierProtocol::Sleep()'],['../unionDaikin128Protocol.html#a6d8c864358deaac3e8af9e3c7160acdb',1,'Daikin128Protocol::Sleep()'],['../unionDaikin64Protocol.html#ad97e50c0e3dee468254d84f0ffeab71a',1,'Daikin64Protocol::Sleep()'],['../unionDelonghiProtocol.html#a8ae7e6b8982693fc0cff79dcc5352cc5',1,'DelonghiProtocol::Sleep()'],['../unionGoodweatherProtocol.html#ab5b363c97de0b9ea362335914202aa5d',1,'GoodweatherProtocol::Sleep()'],['../unionGreeProtocol.html#a1ea579a0c99eb1dc8fd72867519ab258',1,'GreeProtocol::Sleep()'],['../unionHaierProtocol.html#a88942d48d868ff5697040d5a89f93099',1,'HaierProtocol::Sleep()'],['../unionHaierYRW02Protocol.html#a0b0ad77222892e9fccf122fcee95d87d',1,'HaierYRW02Protocol::Sleep()'],['../unionHitachi1Protocol.html#a6f7f771174da0e309c817d1e1b8dad04',1,'Hitachi1Protocol::Sleep()'],['../unionMideaProtocol.html#aeea5e2520e4cd1773c1eddc8a84af2d3',1,'MideaProtocol::Sleep()'],['../unionNeoclimaProtocol.html#ac43619a2a36e6e904f1ccfc727705d0f',1,'NeoclimaProtocol::Sleep()'],['../unionSanyoProtocol.html#a30ddc4048f18df21a0ba9a1ceb6ed04f',1,'SanyoProtocol::Sleep()'],['../unionTechnibelProtocol.html#a0b2415893ee58c78aab7d5da9dc0ac9a',1,'TechnibelProtocol::Sleep()'],['../unionTecoProtocol.html#a1e154eb394b329d0a4bcda1f99f10b3a',1,'TecoProtocol::Sleep()'],['../unionTrotecProtocol.html#a7e608cfd2be86c98ef165d82224d12e0',1,'TrotecProtocol::Sleep()'],['../unionVoltasProtocol.html#a1a47a7e57717d28e610e97b40e86b1ca',1,'VoltasProtocol::Sleep()'],['../unionWhirlpoolProtocol.html#aa8c066a535606fca820875eb16275b04',1,'WhirlpoolProtocol::Sleep()'],['../structstdAc_1_1state__t.html#a94fa6098d7422292a1c6943973cd106a',1,'stdAc::state_t::sleep()']]], - ['sleepenabled_7157',['SleepEnabled',['../unionKelonProtocol.html#acce94332bf7fa92e7c52b64e63ee243b',1,'KelonProtocol']]], - ['sleepflag_7158',['sleepFlag',['../classIRCoolixAC.html#a26560e04d1f77830e40e5570845b9e06',1,'IRCoolixAC']]], - ['sleeptimer_7159',['SleepTimer',['../unionDaikin2Protocol.html#a08f4a54ef2100e9afc8d360d6f1f809b',1,'Daikin2Protocol']]], - ['smartmodeenabled_7160',['SmartModeEnabled',['../unionKelonProtocol.html#a06eb8f550eea47a5620c29290d362457',1,'KelonProtocol']]], - ['special_7161',['Special',['../unionSharpProtocol.html#a6a7b512b5cfb2103b562ba7ceb8ab318',1,'SharpProtocol']]], - ['special_5fstate_7162',['special_state',['../classIRTranscoldAc.html#a634858a8d3987fa95cb355083c1276da',1,'IRTranscoldAc']]], - ['start_7163',['start',['../classIRtimer.html#aaa087b8688ff8150e0fc1ec6d5c4a52a',1,'IRtimer::start()'],['../classTimerMs.html#a15ad2e08a5931397391d48f040722f65',1,'TimerMs::start()']]], - ['startclock_7164',['StartClock',['../unionMitsubishi144Protocol.html#a2b3fcf0371639b6c73c152c671ae3b66',1,'Mitsubishi144Protocol']]], - ['state_7165',['state',['../classdecode__results.html#aaeb4b1b2e950bdd181582c385b2f4305',1,'decode_results']]], - ['stopclock_7166',['StopClock',['../unionMitsubishi144Protocol.html#a827da42e7df246a6849223430412e051',1,'Mitsubishi144Protocol']]], - ['success_7167',['success',['../structmatch__result__t.html#a13fe18ae6cf89364df443a64295b2f90',1,'match_result_t']]], - ['sum_7168',['Sum',['../unionAmcorProtocol.html#a108cf161abbbdd7ae4178f70066e8ae6',1,'AmcorProtocol::Sum()'],['../unionArgoProtocol.html#ab0ec3039d81a3a2a6c8b44f5c64d2fae',1,'ArgoProtocol::Sum()'],['../unionCarrierProtocol.html#acbbf207e7a0e79d74713e6f8598c16c2',1,'CarrierProtocol::Sum()'],['../unionDaikin152Protocol.html#ab9d2826560480612000ff57967c949ce',1,'Daikin152Protocol::Sum()'],['../unionDaikin64Protocol.html#add19fb01e106fe9dd759a33870378b64',1,'Daikin64Protocol::Sum()'],['../unionDelonghiProtocol.html#a9f7a2ecd94db83a8673e8929b373a036',1,'DelonghiProtocol::Sum()'],['../unionElectraProtocol.html#a06f949386cbc460b017f5a2da4a2c557',1,'ElectraProtocol::Sum()'],['../unionGreeProtocol.html#a7502111538873c23d70129b77a26019e',1,'GreeProtocol::Sum()'],['../unionHaierProtocol.html#a5842a170e3cdd0ad823cf244c7b8dd51',1,'HaierProtocol::Sum()'],['../unionHaierYRW02Protocol.html#a656449e6901b3333ca0efe4a2e662fc7',1,'HaierYRW02Protocol::Sum()'],['../unionHitachiProtocol.html#a7917d5fe64dc17c4240286d113edffbf',1,'HitachiProtocol::Sum()'],['../unionHitachi1Protocol.html#af8695d17dd292292c1a395fca1052d0d',1,'Hitachi1Protocol::Sum()'],['../unionLGProtocol.html#a8f527a8f4b6235ca01bb96ed9cce8fcd',1,'LGProtocol::Sum()'],['../unionMideaProtocol.html#a3d4afe5411a769c48e8bfaa3a9e8e84c',1,'MideaProtocol::Sum()'],['../unionMitsubishi144Protocol.html#a50ccc136c9cb813e62731c0e91e1bb18',1,'Mitsubishi144Protocol::Sum()'],['../unionMitsubishi112Protocol.html#a167d9e324351844304624224ebd6c54e',1,'Mitsubishi112Protocol::Sum()'],['../unionNeoclimaProtocol.html#aa1be79f892a05e91733539899ce243d1',1,'NeoclimaProtocol::Sum()'],['../unionSanyoProtocol.html#a4873098c3fca0d6f9b43ba1ecdfb5252',1,'SanyoProtocol::Sum()'],['../unionSharpProtocol.html#a4cfdeea6c7a9b0e808e1b6dcf1584710',1,'SharpProtocol::Sum()'],['../unionTcl112Protocol.html#a5d46a94c80989ecfd47c86028ab69662',1,'Tcl112Protocol::Sum()'],['../unionTechnibelProtocol.html#ac749e8bb30f13d62819204deb36256bb',1,'TechnibelProtocol::Sum()'],['../unionTrotecProtocol.html#a6b4daa2398f213d1002d48e1371cd6c0',1,'TrotecProtocol::Sum()'],['../unionTrumaProtocol.html#a3d8915bbafe0bb431a89310ff8a43653',1,'TrumaProtocol::Sum()']]], - ['sum1_7169',['Sum1',['../unionDaikinESPProtocol.html#a149da481f13ce5a29ce31a3dce8e8cb0',1,'DaikinESPProtocol::Sum1()'],['../unionDaikin2Protocol.html#ab38b622ad6d915d30d696b31664a94f4',1,'Daikin2Protocol::Sum1()'],['../unionDaikin216Protocol.html#af5a0be12a198c7398a3b85aea0ca321f',1,'Daikin216Protocol::Sum1()'],['../unionDaikin160Protocol.html#ade9652651eb01aab9777c9a6244d41a1',1,'Daikin160Protocol::Sum1()'],['../unionDaikin176Protocol.html#a2acfd274cfe47a17603ff382c2948695',1,'Daikin176Protocol::Sum1()'],['../unionDaikin128Protocol.html#a72cbe31d6a6efa72c3be3a5f97a33d9a',1,'Daikin128Protocol::Sum1()'],['../unionKelvinatorProtocol.html#a11960442c40eb23519d44c3daa354d4f',1,'KelvinatorProtocol::Sum1()'],['../unionSamsungProtocol.html#a1fe6cb13d6faf1b6d671ca057558669e',1,'SamsungProtocol::Sum1()'],['../unionWhirlpoolProtocol.html#a2d9fc7639cd9b5bd18b125d99fa0a26e',1,'WhirlpoolProtocol::Sum1()']]], - ['sum2_7170',['Sum2',['../unionDaikinESPProtocol.html#a23ab8932c3c7fc9ffb79a4540458f1e8',1,'DaikinESPProtocol::Sum2()'],['../unionDaikin2Protocol.html#a8c6c9f26a55cf656e4dd7043e3c8e9cb',1,'Daikin2Protocol::Sum2()'],['../unionDaikin216Protocol.html#a190893ad04cf10e16f2c15dc025bb683',1,'Daikin216Protocol::Sum2()'],['../unionDaikin160Protocol.html#a0c0c7e34389309a1b780f2518d0528bd',1,'Daikin160Protocol::Sum2()'],['../unionDaikin176Protocol.html#ae797bea46028cd4a19c42746ba4f3d65',1,'Daikin176Protocol::Sum2()'],['../unionDaikin128Protocol.html#a19162e554dbd868382130d39e4fbf221',1,'Daikin128Protocol::Sum2()'],['../unionKelvinatorProtocol.html#aade6e576f735c6ef84c11062175f0013',1,'KelvinatorProtocol::Sum2()'],['../unionSamsungProtocol.html#a73be0a77d7bd16a28befba84eafe79fa',1,'SamsungProtocol::Sum2()'],['../unionWhirlpoolProtocol.html#a17ac6562d12278e9fe52695e5175e8ed',1,'WhirlpoolProtocol::Sum2()']]], - ['sum3_7171',['Sum3',['../unionDaikinESPProtocol.html#a94351ee2b8b5090cb0934f21ebcd195c',1,'DaikinESPProtocol']]], - ['super1_7172',['Super1',['../unionWhirlpoolProtocol.html#abed3697b1a9697d1b95991c6ee7cded8',1,'WhirlpoolProtocol']]], - ['super2_7173',['Super2',['../unionWhirlpoolProtocol.html#ae61909ca04d65db8282a51aa697a519f',1,'WhirlpoolProtocol']]], - ['supercoolenabled1_7174',['SuperCoolEnabled1',['../unionKelonProtocol.html#a2e7513510d69ef845d823cab658f40ae',1,'KelonProtocol']]], - ['supercoolenabled2_7175',['SuperCoolEnabled2',['../unionKelonProtocol.html#a244cffa76f010df00e78029afccea745',1,'KelonProtocol']]], - ['swing_7176',['Swing',['../unionFujitsuProtocol.html#af86bba40fd05a9538d1dca0a02196282',1,'FujitsuProtocol::Swing()'],['../unionGoodweatherProtocol.html#a0a9be72f6b174f5bc4f4082f3afd93b1',1,'GoodweatherProtocol::Swing()'],['../unionGreeProtocol.html#a6ee1b2c7459fcd5ed839a7730a2c5931',1,'GreeProtocol::Swing()'],['../unionHaierProtocol.html#afc7ba334ae13911868d90c2fe37813b9',1,'HaierProtocol::Swing()'],['../unionHaierYRW02Protocol.html#a671ff83501bd3e6f6e5c2b08bb6d26d1',1,'HaierYRW02Protocol::Swing()'],['../unionSamsungProtocol.html#ad63e66ad39ded5ff568325b2cc2913e6',1,'SamsungProtocol::Swing()'],['../unionSharpProtocol.html#aaf3716e85768e55ae39083b702e51b23',1,'SharpProtocol::Swing()'],['../unionTechnibelProtocol.html#ad65f35496e1a8801807f12b0fb151bfd',1,'TechnibelProtocol::Swing()'],['../unionTecoProtocol.html#a515148adf18ffca1dcab693a8e063479',1,'TecoProtocol::Swing()'],['../unionToshibaProtocol.html#a7055dad465b9500ce8654ebb517cb363',1,'ToshibaProtocol::Swing()'],['../unionVestelProtocol.html#a885f7bf3caef01109e22fa376e39b272',1,'VestelProtocol::Swing()']]], - ['swing1_7177',['Swing1',['../unionWhirlpoolProtocol.html#a0553a73ef3aa9a490e461ab9e8258084',1,'WhirlpoolProtocol']]], - ['swing2_7178',['Swing2',['../unionWhirlpoolProtocol.html#a0b7a02e7a75a8a761a4bbafd77c0d355',1,'WhirlpoolProtocol']]], - ['swingauto_7179',['SwingAuto',['../unionGreeProtocol.html#a866257731360d655ffa24ba3fbdfa3cc',1,'GreeProtocol']]], - ['swingflag_7180',['swingFlag',['../classIRCoolixAC.html#a6d61903a90cebef56b931bebbfa5cba3',1,'IRCoolixAC::swingFlag()'],['../classIRTranscoldAc.html#acaaa6c7fc022b3a259692bfd61258f49',1,'IRTranscoldAc::swingFlag()']]], - ['swingh_7181',['SwingH',['../unionDaikinESPProtocol.html#af3dacc4757d42c204532551565d05013',1,'DaikinESPProtocol::SwingH()'],['../unionDaikin2Protocol.html#a2763869384806cdbb8b9eeec419fddb5',1,'Daikin2Protocol::SwingH()'],['../unionDaikin216Protocol.html#a3e024277a27b1bb20d66c8a01a5d4abf',1,'Daikin216Protocol::SwingH()'],['../unionDaikin176Protocol.html#a1c66607da26b68ab359def3884112bbc',1,'Daikin176Protocol::SwingH()'],['../unionElectraProtocol.html#ac265663bdb90f785a5c3a3d452101a03',1,'ElectraProtocol::SwingH()'],['../unionHitachiProtocol.html#adc2e2a72df76b96392db614103476ad1',1,'HitachiProtocol::SwingH()'],['../unionHitachi424Protocol.html#aca9d734f4809828027727ba0ec5fb56f',1,'Hitachi424Protocol::SwingH()'],['../unionHitachi1Protocol.html#a8d623507f6042e6a2a7b38711d972b1d',1,'Hitachi1Protocol::SwingH()'],['../unionKelvinatorProtocol.html#aa00bcaec92896c766d0c59edfd19fa0c',1,'KelvinatorProtocol::SwingH()'],['../unionMitsubishi112Protocol.html#a06f3c53c43e8e12a171570bcbc44b722',1,'Mitsubishi112Protocol::SwingH()'],['../unionMitsubishi152Protocol.html#a6ff8b8c4309663ca8abffc6d5022e13a',1,'Mitsubishi152Protocol::SwingH()'],['../unionNeoclimaProtocol.html#a2df2379997121fa8e22a98d7ccfe7b0a',1,'NeoclimaProtocol::SwingH()'],['../unionPanasonicAc32Protocol.html#ad2150fa0dbf816d48818969100ea1ac1',1,'PanasonicAc32Protocol::SwingH()'],['../unionTcl112Protocol.html#ac10dd12d472bf3a9f632b645e48a1c7f',1,'Tcl112Protocol::SwingH()'],['../unionVoltasProtocol.html#a55094a8796bf95e81eb7dd9a91d7a127',1,'VoltasProtocol::SwingH()'],['../structstdAc_1_1state__t.html#a761bb702891ed1fa35906929a4c8a3f8',1,'stdAc::state_t::swingh()']]], - ['swingh1_7182',['SwingH1',['../unionMitsubishi88Protocol.html#a25360a714725166199b45ee26ddbe6d7',1,'Mitsubishi88Protocol']]], - ['swingh2_7183',['SwingH2',['../unionMitsubishi88Protocol.html#ad175a3bea6aa442e1de553be6f352b32',1,'Mitsubishi88Protocol']]], - ['swinghchange_7184',['SwingHChange',['../unionVoltasProtocol.html#a32c53808a0f8b6574025f2b3c721ae47',1,'VoltasProtocol']]], - ['swinghflag_7185',['swingHFlag',['../classIRTranscoldAc.html#a15da6840a234b2ff739a86d19f15c58d',1,'IRTranscoldAc']]], - ['swingtoggle_7186',['SwingToggle',['../unionHitachi1Protocol.html#a479a73b38e4f079d7d0e221bb6814a45',1,'Hitachi1Protocol']]], - ['swingv_7187',['SwingV',['../unionCarrierProtocol.html#a9d08c75d7f8357139cd3d844cf29ca22',1,'CarrierProtocol::SwingV()'],['../unionDaikinESPProtocol.html#abaa6622e63357ff194ec473d763e6347',1,'DaikinESPProtocol::SwingV()'],['../unionDaikin2Protocol.html#ad54bd084ae49600bc02d5de9d557b24f',1,'Daikin2Protocol::SwingV()'],['../unionDaikin216Protocol.html#a09abba3b50a33d8d549a0554099b639b',1,'Daikin216Protocol::SwingV()'],['../unionDaikin160Protocol.html#af3ecc8b83528477acdfc2a10352f09e3',1,'Daikin160Protocol::SwingV()'],['../unionDaikin128Protocol.html#a9c0f7c9d691a97ce316ef5b76fb1cafd',1,'Daikin128Protocol::SwingV()'],['../unionDaikin152Protocol.html#a72a99dc5a7497285a7f1e2a0cac7dab8',1,'Daikin152Protocol::SwingV()'],['../unionDaikin64Protocol.html#a5c14fc6cba6aa76a75452808717ee507',1,'Daikin64Protocol::SwingV()'],['../unionElectraProtocol.html#a1f04f248d66f0890548f3cfe4e269beb',1,'ElectraProtocol::SwingV()'],['../unionHitachiProtocol.html#a31530689da10bfae60d005039c6ab596',1,'HitachiProtocol::SwingV()'],['../unionHitachi424Protocol.html#afa4ca85beef441434700d09a09fb60c7',1,'Hitachi424Protocol::SwingV()'],['../unionHitachi1Protocol.html#a73473181cf6a1fce2ea4874ba29552be',1,'Hitachi1Protocol::SwingV()'],['../unionKelvinatorProtocol.html#abd01a8f9d88b44f59484955107d9b7bb',1,'KelvinatorProtocol::SwingV()'],['../unionMitsubishi136Protocol.html#a24b4d22d88ac7630c1fcdccd964d013b',1,'Mitsubishi136Protocol::SwingV()'],['../unionMitsubishi112Protocol.html#a4de8c60641ea95f8f2b875d13f87f594',1,'Mitsubishi112Protocol::SwingV()'],['../unionMitsubishi152Protocol.html#a3ae158a863e0ade1d64cc62a9cc7a374',1,'Mitsubishi152Protocol::SwingV()'],['../unionNeoclimaProtocol.html#a5c8407706693a73ff3716ba857e56e8f',1,'NeoclimaProtocol::SwingV()'],['../unionPanasonicAc32Protocol.html#ad72c8342fd1bcf04c0244934ac6a1172',1,'PanasonicAc32Protocol::SwingV()'],['../unionSanyoProtocol.html#ad3384be2dd09a39be41ebf2bae5e7480',1,'SanyoProtocol::SwingV()'],['../unionTcl112Protocol.html#a4d4ec9093ad1cb4457e004e21545d1a7',1,'Tcl112Protocol::SwingV()'],['../unionVoltasProtocol.html#ac2a240ab6b19af0e472c3134331a6e68',1,'VoltasProtocol::SwingV()'],['../structstdAc_1_1state__t.html#a35477d368350d8981ad8b7b09505857e',1,'stdAc::state_t::swingv()']]], - ['swingv5_7188',['SwingV5',['../unionMitsubishi88Protocol.html#aaa1b4fc42a673c7437373d85b2e22c26',1,'Mitsubishi88Protocol']]], - ['swingv7_7189',['SwingV7',['../unionMitsubishi88Protocol.html#aa56bc52d2d6ec0d2f76aea923e084856',1,'Mitsubishi88Protocol']]], - ['swingvflag_7190',['swingVFlag',['../classIRTranscoldAc.html#ae2aa4d5a19dd9056606ca20d03c893df',1,'IRTranscoldAc']]], - ['swingvtoggle_7191',['SwingVToggle',['../unionCoronaProtocol.html#a3b21dc7f46b2153be56daeca1b0b40e8',1,'CoronaProtocol::SwingVToggle()'],['../unionKelonProtocol.html#a46d1647685a3c62aaf658f5971d86268',1,'KelonProtocol::SwingVToggle()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.html deleted file mode 100644 index 87b7ca676..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.js deleted file mode 100644 index 3c485f0cb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_13.js +++ /dev/null @@ -1,27 +0,0 @@ -var searchData= -[ - ['temp_7192',['Temp',['../unionAirwellProtocol.html#a5a6bd2772f3b9b5898ea84cf272cdf87',1,'AirwellProtocol::Temp()'],['../unionAmcorProtocol.html#a93dac8f8fa9796452fc67be02ac154cd',1,'AmcorProtocol::Temp()'],['../unionArgoProtocol.html#a928a356c79acc2b56ffeea8e536d9e98',1,'ArgoProtocol::Temp()'],['../unionCarrierProtocol.html#a43fb183022e8b4aef36bee0cb0cd9aaa',1,'CarrierProtocol::Temp()'],['../unionCoolixProtocol.html#a3d7fee6490b9d5f1a66e2f229760d7b7',1,'CoolixProtocol::Temp()'],['../unionCoronaProtocol.html#a18002c42df09d30705af1ebd4c5cd2e3',1,'CoronaProtocol::Temp()'],['../unionDaikinESPProtocol.html#a0ad595273164311e5038c0fac53145a5',1,'DaikinESPProtocol::Temp()'],['../unionDaikin2Protocol.html#ab028d2a7dc019e9389134bcc9bc89e7f',1,'Daikin2Protocol::Temp()'],['../unionDaikin216Protocol.html#adedf9354b1605903bb0fc69dfc087fed',1,'Daikin216Protocol::Temp()'],['../unionDaikin160Protocol.html#ac050e5317af867a602da555ff5c0f445',1,'Daikin160Protocol::Temp()'],['../unionDaikin176Protocol.html#ad6de066afd97c966ad50bb2e578102c2',1,'Daikin176Protocol::Temp()'],['../unionDaikin128Protocol.html#a38ecd43c273a4460417218c1dbd5002f',1,'Daikin128Protocol::Temp()'],['../unionDaikin152Protocol.html#a53bd877ac22cf1beee6a369e94f6ef8b',1,'Daikin152Protocol::Temp()'],['../unionDaikin64Protocol.html#a2d5cc94de8060dc28a611f417a67cdf6',1,'Daikin64Protocol::Temp()'],['../unionDelonghiProtocol.html#a39bdc64b05d4cc3c55c9b33779a2b673',1,'DelonghiProtocol::Temp()'],['../unionEcoclimProtocol.html#af88e83a0f5f4ef72e44070afc5db6acb',1,'EcoclimProtocol::Temp()'],['../unionElectraProtocol.html#acfa59481898d71fc31174c82ff30a7cf',1,'ElectraProtocol::Temp()'],['../unionFujitsuProtocol.html#a44d3a88ea8d71a78f6905571154872a5',1,'FujitsuProtocol::Temp()'],['../unionGoodweatherProtocol.html#a52cc284981b27dab58eb8c6ccce164aa',1,'GoodweatherProtocol::Temp()'],['../unionGreeProtocol.html#a46075a9f5fbd0d3829a84cca3d4a9d4f',1,'GreeProtocol::Temp()'],['../unionHaierProtocol.html#affb6ef60b50ae3351393e3f168ae8f2f',1,'HaierProtocol::Temp()'],['../unionHaierYRW02Protocol.html#a19211a1af7d11da6034b87cb7a042fcd',1,'HaierYRW02Protocol::Temp()'],['../unionHitachiProtocol.html#a82506fdbc1e1dded01ff0b148b63aefc',1,'HitachiProtocol::Temp()'],['../unionHitachi424Protocol.html#a55d9783eb1187ac86d1cf7ef97c220c4',1,'Hitachi424Protocol::Temp()'],['../unionHitachi1Protocol.html#acec70cd3c02926c3cfb596a30795d576',1,'Hitachi1Protocol::Temp()'],['../unionKelvinatorProtocol.html#a2ad164ea50b7501e9b04352aa283ddce',1,'KelvinatorProtocol::Temp()'],['../unionLGProtocol.html#ae556c7e3100b062ec21581cbe61f126a',1,'LGProtocol::Temp()'],['../unionMideaProtocol.html#a4206c02c5cafe996c05d92beb7a7e8d6',1,'MideaProtocol::Temp()'],['../unionMitsubishi144Protocol.html#a1bd567c01d07cedb0475097b4fc46195',1,'Mitsubishi144Protocol::Temp()'],['../unionMitsubishi136Protocol.html#abd84c910c48418162a7647cda2d13b48',1,'Mitsubishi136Protocol::Temp()'],['../unionMitsubishi112Protocol.html#aa15bf2e818b1988fa790e36d2237f105',1,'Mitsubishi112Protocol::Temp()'],['../unionMitsubishi152Protocol.html#a2608f42bbdacb6b5cca759affaa57fce',1,'Mitsubishi152Protocol::Temp()'],['../unionMitsubishi88Protocol.html#abae8097bf27a43d95fb486ba7ca50e03',1,'Mitsubishi88Protocol::Temp()'],['../unionNeoclimaProtocol.html#a6b12bad4406a2c89aae3db1b1614d980',1,'NeoclimaProtocol::Temp()'],['../unionPanasonicAc32Protocol.html#ad0ab801a8f4ec655d176bb900d50245d',1,'PanasonicAc32Protocol::Temp()'],['../unionSamsungProtocol.html#aee5c202d59174c4c85900054001ed679',1,'SamsungProtocol::Temp()'],['../unionSanyoProtocol.html#a3a3e20f65bcb220f84aee2f48d05d986',1,'SanyoProtocol::Temp()'],['../unionSharpProtocol.html#a4b5dfbe7c378055840a1a51b7035234d',1,'SharpProtocol::Temp()'],['../unionTcl112Protocol.html#adac34333fb283e85dbbae7f82464034c',1,'Tcl112Protocol::Temp()'],['../unionTechnibelProtocol.html#a77c1358fde3dc80d152bcbdf277152be',1,'TechnibelProtocol::Temp()'],['../unionTecoProtocol.html#aa65998afac0fcadca42ce5c1262793a2',1,'TecoProtocol::Temp()'],['../unionToshibaProtocol.html#abe862f03c3a5fc68d199e0514c4d05e2',1,'ToshibaProtocol::Temp()'],['../unionTranscoldProtocol.html#a6e743702012bdb7037a96bcef630d30f',1,'TranscoldProtocol::Temp()'],['../unionTrotecProtocol.html#a89cfb912a2a4177485c588b707cedf83',1,'TrotecProtocol::Temp()'],['../unionTrumaProtocol.html#aada7b9bcdd6de808da5a1b7804f359cf',1,'TrumaProtocol::Temp()'],['../unionVestelProtocol.html#a1227bbe21da25c259103e9861e7c4c95',1,'VestelProtocol::Temp()'],['../unionVoltasProtocol.html#a23efaf01747b58d1e77c101f99bc2b4c',1,'VoltasProtocol::Temp()'],['../unionWhirlpoolProtocol.html#a9df58d0ddd25b06a5fb03db2a3bc379e',1,'WhirlpoolProtocol::Temp()']]], - ['tempchange_7193',['TempChange',['../unionTechnibelProtocol.html#a1defef3843fa2d57a84857f573bc646f',1,'TechnibelProtocol']]], - ['temperature_7194',['Temperature',['../unionKelonProtocol.html#ace732d42dc9ad0f46117c5d98dc836d5',1,'KelonProtocol']]], - ['tempextradegreef_7195',['TempExtraDegreeF',['../unionGreeProtocol.html#ae093878b66b84bbc4f5c5df5e59fd639',1,'GreeProtocol']]], - ['tempset_7196',['TempSet',['../unionVoltasProtocol.html#a16ae188cb58127b21fb905f3b1d8653c',1,'VoltasProtocol']]], - ['tenshours_7197',['TensHours',['../unionTecoProtocol.html#a666e09f45c649f518b68b575dc8212bb',1,'TecoProtocol']]], - ['three_7198',['Three',['../unionMitsubishi152Protocol.html#afdd9554bfc3ac476ca87acd69eba3bc3',1,'Mitsubishi152Protocol']]], - ['timeout_7199',['timeout',['../structirparams__t.html#a132d6448ad59f03f6b35c4b04a6d1af4',1,'irparams_t']]], - ['timer_7200',['timer',['../structirparams__t.html#a6d4594a4d6bf8a2587095be7adfc018d',1,'irparams_t::timer()'],['../unionMitsubishi144Protocol.html#a29613b47de756a0e67c42d41fd44a77a',1,'Mitsubishi144Protocol::Timer()'],['../unionTrotecProtocol.html#a02e56a4ff6210117c5519ef568203d0c',1,'TrotecProtocol::Timer()'],['../unionVestelProtocol.html#a9aeab043445a2195de7761d99ff45611',1,'VestelProtocol::Timer()']]], - ['timerchange_7201',['TimerChange',['../unionTechnibelProtocol.html#ac3999a3162e2f7de613c9d61eacabde1',1,'TechnibelProtocol']]], - ['timerenable_7202',['TimerEnable',['../unionTechnibelProtocol.html#a40dfea84eea20bb0fc0168b2074f95e0',1,'TechnibelProtocol']]], - ['timerenabled_7203',['TimerEnabled',['../unionGreeProtocol.html#a603b0bde826287c2ddddb4d17cf9acd0',1,'GreeProtocol::TimerEnabled()'],['../unionKelonProtocol.html#ad6c550a067c1d16cf86cdfb048e0785f',1,'KelonProtocol::TimerEnabled()'],['../unionSharpProtocol.html#abdf436472440de69d9bc86fadf4d719b',1,'SharpProtocol::TimerEnabled()']]], - ['timerhalfhour_7204',['TimerHalfHour',['../unionKelonProtocol.html#a72a044058e0339bc7097cee53966a25f',1,'KelonProtocol']]], - ['timerhalfhr_7205',['TimerHalfHr',['../unionGreeProtocol.html#a3e9fe2455001daec79f687797842239c',1,'GreeProtocol']]], - ['timerhours_7206',['TimerHours',['../unionGreeProtocol.html#a7cc95f9868755876049dbe2b3ce4c730',1,'GreeProtocol::TimerHours()'],['../unionKelonProtocol.html#a7fd0c539dc8ec94e5962c57091c230f0',1,'KelonProtocol::TimerHours()'],['../unionSharpProtocol.html#a7872b52282ecd70b49c17db87d04c8dd',1,'SharpProtocol::TimerHours()'],['../unionTechnibelProtocol.html#a058b2d15d4b2f3974e0271ef24228478',1,'TechnibelProtocol::TimerHours()']]], - ['timeron_7207',['TimerOn',['../unionTecoProtocol.html#ab6a0e79403cd997d43487d939e37be2b',1,'TecoProtocol']]], - ['timertenshr_7208',['TimerTensHr',['../unionGreeProtocol.html#a21cc20bf1a214a17c735e5997f236ee9',1,'GreeProtocol']]], - ['timertype_7209',['TimerType',['../unionFujitsuProtocol.html#a5f80e90a7c02237d38d2e0f97bbdc573',1,'FujitsuProtocol::TimerType()'],['../unionSharpProtocol.html#af29fb49abd51a5a979c7dbb03d440b7e',1,'SharpProtocol::TimerType()']]], - ['timestate_7210',['timeState',['../unionVestelProtocol.html#a64f74ca21d2e21004fe70db529297b99',1,'VestelProtocol']]], - ['timesum_7211',['TimeSum',['../unionVestelProtocol.html#a6d7fee68c9fa0b80e8ff64e01f9ab2e4',1,'VestelProtocol']]], - ['turbo_7212',['turbo',['../structstdAc_1_1state__t.html#aae084b686685f2b2a07ccdda649e358c',1,'stdAc::state_t::turbo()'],['../unionElectraProtocol.html#af812a40c2acfafe8134e9299d2b80a7a',1,'ElectraProtocol::Turbo()'],['../unionGoodweatherProtocol.html#a007f6dd38f4e7137d08278355941885d',1,'GoodweatherProtocol::Turbo()'],['../unionGreeProtocol.html#a36add055a70df62e09bca1e031314a4d',1,'GreeProtocol::Turbo()'],['../unionHaierYRW02Protocol.html#a1cea874c8398b49e704ba0943284c64a',1,'HaierYRW02Protocol::Turbo()'],['../unionKelvinatorProtocol.html#a53c157f2b60f079f5ce77798084888a5',1,'KelvinatorProtocol::Turbo()'],['../unionNeoclimaProtocol.html#a36e23b1343d0638516232bb44c49416b',1,'NeoclimaProtocol::Turbo()'],['../unionTcl112Protocol.html#a2b994555374f08b3c9f6654211cb698a',1,'Tcl112Protocol::Turbo()'],['../unionVoltasProtocol.html#aa0bfed2718430a9cffdfdc02b345971b',1,'VoltasProtocol::Turbo()']]], - ['turboflag_7213',['turboFlag',['../classIRCoolixAC.html#a60a8a848951555dba34f2a317d6611ea',1,'IRCoolixAC']]], - ['turbosleep_7214',['TurboSleep',['../unionVestelProtocol.html#a160beacb49f68008f6f9ecf51b99b84a',1,'VestelProtocol']]], - ['type_7215',['Type',['../unionMideaProtocol.html#ae6deb4675602e9d1be3f8a49c601cdce',1,'MideaProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.html deleted file mode 100644 index 874fe5958..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.js deleted file mode 100644 index 0b3a15659..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_14.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['unithours_7216',['UnitHours',['../unionTecoProtocol.html#a53501f83a1d730135ec75bfb5838821b',1,'TecoProtocol']]], - ['unknown_7217',['unknown',['../unionFujitsuProtocol.html#a1ffda1931475b743913abe2aad2138e3',1,'FujitsuProtocol::unknown()'],['../unionHaierProtocol.html#aabc2a684c5936858544c02ec8a68afb9',1,'HaierProtocol::unknown()']]], - ['unknown1_7218',['unknown1',['../unionGreeProtocol.html#ae973c1c723b7162959374e1fd8ecab61',1,'GreeProtocol']]], - ['unknown2_7219',['unknown2',['../unionGreeProtocol.html#aa102f7d68c26f5b8644b13113a5b05f4',1,'GreeProtocol']]], - ['usecmd_7220',['UseCmd',['../unionVestelProtocol.html#ae82716fdc06ba75def19a130d60d9e83',1,'VestelProtocol']]], - ['used_7221',['used',['../structmatch__result__t.html#a26cea305aa83ed65b88ac0b6ed6de54a',1,'match_result_t']]], - ['usefah_7222',['UseFah',['../unionNeoclimaProtocol.html#ae60408715008e78ab8058ab024669955',1,'NeoclimaProtocol::UseFah()'],['../unionTechnibelProtocol.html#a118cbcb15250c35ee423062e5f397662',1,'TechnibelProtocol::UseFah()']]], - ['usefahrenheit_7223',['useFahrenheit',['../unionMideaProtocol.html#a1b1258107620bb83fd6356815242e19b',1,'MideaProtocol::useFahrenheit()'],['../unionGreeProtocol.html#a47c79761efe40c00e6bb01b7712b272c',1,'GreeProtocol::UseFahrenheit()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.html deleted file mode 100644 index 3ca879906..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.js deleted file mode 100644 index 4abc58275..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_15.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['value_7224',['value',['../classdecode__results.html#a033502b7a6b4b0412e5a2062e33c5f47',1,'decode_results']]], - ['vane_7225',['Vane',['../unionMitsubishi144Protocol.html#af4cb685d4c5f87f6ff61d1305ccd6967',1,'Mitsubishi144Protocol']]], - ['vanebit_7226',['VaneBit',['../unionMitsubishi144Protocol.html#aaefd53cd1441b57b90dc3d21488bbdd3',1,'Mitsubishi144Protocol']]], - ['vent_7227',['Vent',['../unionAmcorProtocol.html#a289bcba64f01cd2c847845f41978d400',1,'AmcorProtocol']]], - ['ventswing_7228',['VentSwing',['../unionKelvinatorProtocol.html#af7cd4e8ebfaa36812d09105c54f868f2',1,'KelvinatorProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.html deleted file mode 100644 index 2b5a4330f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.js deleted file mode 100644 index 5ba5b161f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_16.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['wall_7229',['Wall',['../unionDaikin128Protocol.html#aed2c5bc365820f2c0a5f27dd68fa8a05',1,'Daikin128Protocol']]], - ['wand_5fid_7230',['wand_id',['../unionmagiquest.html#a1b159cd47635d548e1d4198cd6d41e93',1,'magiquest']]], - ['weeklytimer_7231',['WeeklyTimer',['../unionDaikinESPProtocol.html#a25e632da82856caebd233699fda8d796',1,'DaikinESPProtocol::WeeklyTimer()'],['../unionMitsubishi144Protocol.html#a313d3721705676e04d73aee8a29c4a37',1,'Mitsubishi144Protocol::WeeklyTimer()']]], - ['widevane_7232',['WideVane',['../unionMitsubishi144Protocol.html#ad0c48e95ca7e0658edf7c2ac2b541c3c',1,'Mitsubishi144Protocol']]], - ['wifi_7233',['Wifi',['../unionVoltasProtocol.html#aae1406825a156f159c5ad4b28d20364c',1,'VoltasProtocol::Wifi()'],['../unionGreeProtocol.html#a6cf8e0a6c54a5d2b6f14074c6f3dcc92',1,'GreeProtocol::WiFi()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.html deleted file mode 100644 index 16914b7bf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.js deleted file mode 100644 index 34fc4a458..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_17.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['xfan_7234',['Xfan',['../unionGreeProtocol.html#a3fbf66dfc2043710c5e00f8230eddb48',1,'GreeProtocol::Xfan()'],['../unionKelvinatorProtocol.html#a44a0ba82ee5dc39f64215d26edb9636c',1,'KelvinatorProtocol::XFan()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.html deleted file mode 100644 index 782b3bf0f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.js deleted file mode 100644 index 012c32720..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_18.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['zonefollow1_7235',['ZoneFollow1',['../unionCoolixProtocol.html#a5f19a21823bbdb6d5deceb03db0d3d5b',1,'CoolixProtocol']]], - ['zonefollow2_7236',['ZoneFollow2',['../unionCoolixProtocol.html#ade33ba99bcfcf9d7dac334e56e9bb167',1,'CoolixProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.html deleted file mode 100644 index 0c8a18cf9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.js deleted file mode 100644 index e649a21d5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_2.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['backup_4734',['backup',['../classIRToshibaAC.html#adc8d8c6918cd110f524f6bedf6f2bb6e',1,'IRToshibaAC']]], - ['basicfan_4735',['BasicFan',['../unionKelvinatorProtocol.html#a9237eb894fd7d6807169d18655bb3261',1,'KelvinatorProtocol']]], - ['beep_4736',['Beep',['../unionDaikin2Protocol.html#ae464d693bde12c9a0085cf268010d158',1,'Daikin2Protocol::Beep()'],['../unionSamsungProtocol.html#a80645f900ef2b45b44b0b9522f4265cc',1,'SamsungProtocol::Beep()'],['../unionSanyoProtocol.html#a56e41c218b229561ee48e9e0184981bd',1,'SanyoProtocol::Beep()'],['../structstdAc_1_1state__t.html#a468ce4cf8b68467964b1f1840257663d',1,'stdAc::state_t::beep()']]], - ['beepdisable_4737',['BeepDisable',['../unionMideaProtocol.html#a2a1d3b51765737427adb5dddcda84d60',1,'MideaProtocol']]], - ['bits_4738',['bits',['../classdecode__results.html#aa5ba2fd53bdb36bdc120d8eabd9f36d7',1,'decode_results']]], - ['boost_4739',['Boost',['../unionDelonghiProtocol.html#ad3347e0739d5c00f3fb5cba7c9f53bcd',1,'DelonghiProtocol']]], - ['breeze_4740',['Breeze',['../unionSamsungProtocol.html#a5b60f239d70e2005e14e0f4c3c9f8986',1,'SamsungProtocol']]], - ['bufsize_4741',['bufsize',['../structirparams__t.html#a2b34d697b85ee6a0ce08344c941e50ec',1,'irparams_t']]], - ['button_4742',['Button',['../unionHaierYRW02Protocol.html#ab5b13626ecf6214cc1be52d47909915d',1,'HaierYRW02Protocol::Button()'],['../unionHitachi424Protocol.html#aaadfa5a2e789fb1159ce795f833b83e5',1,'Hitachi424Protocol::Button()'],['../unionNeoclimaProtocol.html#aedacead75ecd658f9e2c8c3a23d2bc58',1,'NeoclimaProtocol::Button()']]], - ['byte_4743',['byte',['../unionmagiquest.html#af1a9c9a147a1610fe5f0e77ca3e09e44',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.html deleted file mode 100644 index 19a31fc28..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.js deleted file mode 100644 index 61da7cc36..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_3.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['ceiling_4744',['Ceiling',['../unionDaikin128Protocol.html#a8d2eb9c3a65bd4ecd111d1eccbb4ebe1',1,'Daikin128Protocol']]], - ['celsius_4745',['celsius',['../structstdAc_1_1state__t.html#a235b17f3979b155b368bfdc2b14123f5',1,'stdAc::state_t']]], - ['cheat_4746',['CHeat',['../unionNeoclimaProtocol.html#aba91857f67b7039783cd6c504de1ad64',1,'NeoclimaProtocol']]], - ['checksum_4747',['Checksum',['../unionVoltasProtocol.html#a4349ae4488d2d9c9dd5606502d486b19',1,'VoltasProtocol']]], - ['clean_4748',['Clean',['../unionDaikin2Protocol.html#a064d834228a18ca64cefc3d246db9bad',1,'Daikin2Protocol::Clean()'],['../unionElectraProtocol.html#aa51de8a1e38d432aad7d2e0a656db86e',1,'ElectraProtocol::Clean()'],['../unionFujitsuProtocol.html#a0080a99d466ee4924b128fb3271edfee',1,'FujitsuProtocol::Clean()'],['../unionMitsubishi152Protocol.html#aef8f83b0301182a5f75f604b473b7c10',1,'Mitsubishi152Protocol::Clean()'],['../unionMitsubishi88Protocol.html#a458d9bec45523636e7caf452bf5e46c6',1,'Mitsubishi88Protocol::Clean()'],['../unionSharpProtocol.html#ad5b81ea43a14061b02bed374bce16ce5',1,'SharpProtocol::Clean()'],['../structstdAc_1_1state__t.html#a703fa57ade60d68deccbb2a59258b32a',1,'stdAc::state_t::clean()']]], - ['clean10_4749',['Clean10',['../unionSamsungProtocol.html#a4d3bce30e1795bc4e95c0209c5e702b2',1,'SamsungProtocol']]], - ['clean11_4750',['Clean11',['../unionSamsungProtocol.html#af33c314cfb3a42cb7536c4a809a9fa0c',1,'SamsungProtocol']]], - ['cleanflag_4751',['cleanFlag',['../classIRCoolixAC.html#a9280bc7517713dae451a64e35674804d',1,'IRCoolixAC']]], - ['clear_4752',['Clear',['../unionEcoclimProtocol.html#a424f9fd7d803ad18d4bf32ff0f3342b3',1,'EcoclimProtocol']]], - ['clock_4753',['Clock',['../unionEcoclimProtocol.html#a521fbbb17cf7755806d62ede90144f5c',1,'EcoclimProtocol::Clock()'],['../unionMitsubishi144Protocol.html#a61b5a9fa2305eedb437c8e9d01b3a7fe',1,'Mitsubishi144Protocol::Clock()'],['../structstdAc_1_1state__t.html#ab1d76172930ebfe992fd9b700369e787',1,'stdAc::state_t::clock()']]], - ['clockhours_4754',['ClockHours',['../unionDaikin128Protocol.html#a1de4c4ec4a98bcfff4d515d0c84f5c4d',1,'Daikin128Protocol::ClockHours()'],['../unionDaikin64Protocol.html#a0405fde38f8da649561cb58df28ac5b7',1,'Daikin64Protocol::ClockHours()'],['../unionWhirlpoolProtocol.html#a5241ed48023d1b4dd8042a39d9ef83fe',1,'WhirlpoolProtocol::ClockHours()']]], - ['clockmins_4755',['ClockMins',['../unionDaikin128Protocol.html#afbed1ec9c718f417c25968a3f3b14681',1,'Daikin128Protocol::ClockMins()'],['../unionDaikin64Protocol.html#a5263808e2456f707bded2d8f244ca370',1,'Daikin64Protocol::ClockMins()'],['../unionWhirlpoolProtocol.html#aebb367f02ac1b311c75236ad44e5666a',1,'WhirlpoolProtocol::ClockMins()']]], - ['cmd_4756',['Cmd',['../unionFujitsuProtocol.html#a9361fb99d71caae87e3f7c10b7f1bd5f',1,'FujitsuProtocol::Cmd()'],['../unionWhirlpoolProtocol.html#a19b065181eaf22cf7878176a2914100e',1,'WhirlpoolProtocol::Cmd()'],['../unionmagiquest.html#a7f77946114ac2fdf3f0491482f9c277a',1,'magiquest::cmd()']]], - ['cmdstate_4757',['cmdState',['../unionVestelProtocol.html#a823af315c3a09e3deaefa838b8c9deb5',1,'VestelProtocol']]], - ['cmdsum_4758',['CmdSum',['../unionVestelProtocol.html#acc13a6d521b86c1a1e03e98a6b67eeef',1,'VestelProtocol']]], - ['comfort_4759',['Comfort',['../unionDaikinESPProtocol.html#a276e609fab153bdac93341ac4f76a09c',1,'DaikinESPProtocol::Comfort()'],['../unionDaikin152Protocol.html#a1fa909ea9a26e65e354aa6a59c69d163',1,'Daikin152Protocol::Comfort()']]], - ['command_4760',['Command',['../unionGoodweatherProtocol.html#acaa336e2b9915da4dfb51e4738af9265',1,'GoodweatherProtocol::Command()'],['../unionHaierProtocol.html#aeb39971e74e12fb0c7463006d6c644bd',1,'HaierProtocol::Command()'],['../classdecode__results.html#a9b750d09f713b0693472f815fd0fd402',1,'decode_results::command()']]], - ['cool_5fmode_4761',['cool_mode',['../classIRArgoAC.html#a74e7e489d743f213664d9259f1e7a431',1,'IRArgoAC']]], - ['currentday_4762',['CurrentDay',['../unionDaikinESPProtocol.html#ae47c0fdc9517ad7d16cda183c4317dcb',1,'DaikinESPProtocol']]], - ['currenttime_4763',['CurrentTime',['../unionDaikinESPProtocol.html#af46e520574bb6a20c10a4cbe9bfeda27',1,'DaikinESPProtocol::CurrentTime()'],['../unionDaikin2Protocol.html#a4ccf50fbb1af1fbf0c20dbd1fb400f38',1,'Daikin2Protocol::CurrentTime()']]], - ['currhours_4764',['CurrHours',['../unionHaierProtocol.html#a093d2441856e448462551ac7bc1b8d9b',1,'HaierProtocol']]], - ['currmins_4765',['CurrMins',['../unionHaierProtocol.html#a70abde8bccafd39cf1a1506f63481893',1,'HaierProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.html deleted file mode 100644 index bdc37be7f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.js deleted file mode 100644 index db4f97213..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_4.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['d_4766',['D',['../unionMitsubishi152Protocol.html#ac493830f3bf09e178aa09b24368746c9',1,'Mitsubishi152Protocol']]], - ['data_4767',['data',['../structmatch__result__t.html#ae88be61a6d1ffa7c3525aa958f4c0d25',1,'match_result_t']]], - ['data0_4768',['Data0',['../structCoronaSection.html#a975b14d8bc30807013714158ef7474ea',1,'CoronaSection']]], - ['data0inv_4769',['Data0Inv',['../structCoronaSection.html#ab05024b8314929dcd8ccdda9b497be8c',1,'CoronaSection']]], - ['data1_4770',['Data1',['../structCoronaSection.html#a59d97a1bc0a1be50b6f96c4d70673425',1,'CoronaSection']]], - ['data1inv_4771',['Data1Inv',['../structCoronaSection.html#ada247bbfb60f24cd9e9a612c9621cbb4',1,'CoronaSection']]], - ['decode_5ftype_4772',['decode_type',['../classdecode__results.html#a9c0e9f161b9c90dc10b7561d4c0b50fa',1,'decode_results']]], - ['degrees_4773',['degrees',['../structstdAc_1_1state__t.html#a3d1ff0ff2e0035db4ee8ead5c53b2dbd',1,'stdAc::state_t']]], - ['dehumidifiergrade_4774',['DehumidifierGrade',['../unionKelonProtocol.html#ad43fd448895765e29c108df3233de7a6',1,'KelonProtocol']]], - ['dipconfig_4775',['DipConfig',['../unionEcoclimProtocol.html#a6635a22deb4d5db6b320828a183df6bd',1,'EcoclimProtocol']]], - ['disablesensor_4776',['disableSensor',['../unionMideaProtocol.html#a20cc2079eae404c980cc75101b4a3116',1,'MideaProtocol']]], - ['display_4777',['Display',['../unionSamsungProtocol.html#aac97ebabee022e772aa00d4357079eb4',1,'SamsungProtocol']]], - ['displaytemp_4778',['DisplayTemp',['../unionGreeProtocol.html#ad0756a64f9c90c9dd12ca6cd71c78bb2',1,'GreeProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.html deleted file mode 100644 index 6aa2249b4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.js deleted file mode 100644 index dbbea5695..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_5.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['econo_4779',['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()'],['../unionNeoclimaProtocol.html#ae6e84df0fe5279729c8980c68db35c50',1,'NeoclimaProtocol::Econo()'],['../unionTcl112Protocol.html#a5791daa5a91ae0bfff5db2b42472b218',1,'Tcl112Protocol::Econo()'],['../unionVoltasProtocol.html#a4f44e3e3a68988d25173b2aab1c32e53',1,'VoltasProtocol::Econo()'],['../structstdAc_1_1state__t.html#a580c826c6d9671715adfe8445531b957',1,'stdAc::state_t::econo()']]], - ['ecoturbo_4780',['EcoTurbo',['../unionToshibaProtocol.html#a59ebff5274a795d94fdbc735f847274d',1,'ToshibaProtocol']]], - ['eye_4781',['Eye',['../unionDaikin2Protocol.html#aa8351138b8db3b8be5f40d1515802381',1,'Daikin2Protocol::Eye()'],['../unionNeoclimaProtocol.html#a61b0055d4d939dc85ee204e4f3b6ab46',1,'NeoclimaProtocol::Eye()']]], - ['eyeauto_4782',['EyeAuto',['../unionDaikin2Protocol.html#a22f2288452065069018bef94d2505ab7',1,'Daikin2Protocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.html deleted file mode 100644 index ce4a90635..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.js deleted file mode 100644 index c446e0165..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_6.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['fahrenheit_4783',['Fahrenheit',['../unionDelonghiProtocol.html#a8fe11756b36ba6f55eaccf553cc0dea3',1,'DelonghiProtocol::Fahrenheit()'],['../unionFujitsuProtocol.html#a23e44e249fba92fdf6b723e2e3a38218',1,'FujitsuProtocol::Fahrenheit()']]], - ['fan_4784',['Fan',['../unionAirwellProtocol.html#a7d38043e982231fb6a331d72f7407c10',1,'AirwellProtocol::Fan()'],['../unionAmcorProtocol.html#a208edfb233f0747b5abe8911fe55bfb3',1,'AmcorProtocol::Fan()'],['../unionArgoProtocol.html#a9247f87997f4fda42940ca204b8363d6',1,'ArgoProtocol::Fan()'],['../unionCarrierProtocol.html#ab7e563e2015627a65259b0190908034b',1,'CarrierProtocol::Fan()'],['../unionCoolixProtocol.html#ad534acc857b6693327880b8a420da4dc',1,'CoolixProtocol::Fan()'],['../unionCoronaProtocol.html#a981185f964fcaa1dc657a7ad770c446d',1,'CoronaProtocol::Fan()'],['../unionDaikinESPProtocol.html#ad93d41ea1d921579aead9d8be78f52ac',1,'DaikinESPProtocol::Fan()'],['../unionDaikin2Protocol.html#a7928d4eecb9d5ba004ccedb304c06829',1,'Daikin2Protocol::Fan()'],['../unionDaikin216Protocol.html#a6da4ec3880fbd895aa969b8daf4ed7cc',1,'Daikin216Protocol::Fan()'],['../unionDaikin160Protocol.html#a263a50340360eff5bb161658046fd968',1,'Daikin160Protocol::Fan()'],['../unionDaikin176Protocol.html#aadaabe83d23d12554d3431fa0939c18c',1,'Daikin176Protocol::Fan()'],['../unionDaikin128Protocol.html#ac5cf543511bf5baaaa1ad593c726640f',1,'Daikin128Protocol::Fan()'],['../unionDaikin152Protocol.html#aa880c1bf93598c7d2c355ce9e8af79f1',1,'Daikin152Protocol::Fan()'],['../unionDaikin64Protocol.html#a11aceeeaf3b80ee0ce9aa23b88bcb2e6',1,'Daikin64Protocol::Fan()'],['../unionDelonghiProtocol.html#ab3a1bc23e8349851f7d813b117426518',1,'DelonghiProtocol::Fan()'],['../unionEcoclimProtocol.html#ac3dadf32f707065b79c7ff0677c9f192',1,'EcoclimProtocol::Fan()'],['../unionElectraProtocol.html#a4aca91a79fad6a2ce08ac6e5f854ab96',1,'ElectraProtocol::Fan()'],['../unionFujitsuProtocol.html#a649627976dbf420ab80c9a73e9d78d31',1,'FujitsuProtocol::Fan()'],['../unionGoodweatherProtocol.html#a7dd02188438a4e2b37c70a2b3913e550',1,'GoodweatherProtocol::Fan()'],['../unionGreeProtocol.html#af6f917228f457a24e70256d7c132289c',1,'GreeProtocol::Fan()'],['../unionHaierProtocol.html#a44e6a58782f4c6d5e532c715e9050b5b',1,'HaierProtocol::Fan()'],['../unionHaierYRW02Protocol.html#a4ecca9653d14ccd283e44f6e385ff36a',1,'HaierYRW02Protocol::Fan()'],['../unionHitachiProtocol.html#ae451ce39e2ba32da81580c2bf5c5d6d9',1,'HitachiProtocol::Fan()'],['../unionHitachi424Protocol.html#a45907766ba99132b300f50f7c194fee6',1,'Hitachi424Protocol::Fan()'],['../unionHitachi1Protocol.html#ad74c329496f93855ffec6e0a16cda338',1,'Hitachi1Protocol::Fan()'],['../unionKelonProtocol.html#a638145dbdf9d30d20796a9d5e931a4d8',1,'KelonProtocol::Fan()'],['../unionKelvinatorProtocol.html#a720843565363129441f5db98a166f439',1,'KelvinatorProtocol::Fan()'],['../unionLGProtocol.html#ad8132d6e5603d1eb3b51b28165fe3803',1,'LGProtocol::Fan()'],['../unionMideaProtocol.html#a04b0f344ec9b7cf2bdbd2c530b409fcb',1,'MideaProtocol::Fan()'],['../unionMitsubishi144Protocol.html#a0bc3dfc7954983752b0e30abb84c00e6',1,'Mitsubishi144Protocol::Fan()'],['../unionMitsubishi136Protocol.html#ae39096aaafd4e93a122a1f9942668031',1,'Mitsubishi136Protocol::Fan()'],['../unionMitsubishi112Protocol.html#af559efed44be81781556e2ce1b668fae',1,'Mitsubishi112Protocol::Fan()'],['../unionMitsubishi152Protocol.html#a2b91b3185aa9f05d4b32b1628c693c3f',1,'Mitsubishi152Protocol::Fan()'],['../unionMitsubishi88Protocol.html#a0b895ed43f664b7298d6ab7b2eda8e06',1,'Mitsubishi88Protocol::Fan()'],['../unionNeoclimaProtocol.html#acdf888082bd07c6b1b061f928295bdd9',1,'NeoclimaProtocol::Fan()'],['../unionPanasonicAc32Protocol.html#aff4c3aeb5a2724653c334f5ea75b6435',1,'PanasonicAc32Protocol::Fan()'],['../unionSamsungProtocol.html#a5eae02eead5032f6fa7ce3bc891122b6',1,'SamsungProtocol::Fan()'],['../unionSanyoProtocol.html#aaf3dc81d03fcb6ad893cd5647cd95213',1,'SanyoProtocol::Fan()'],['../unionSharpProtocol.html#acb0819fc971fc7d7206785aaad4b82b2',1,'SharpProtocol::Fan()'],['../unionTcl112Protocol.html#a8aefa398eb58112b2f39ead30c3953a9',1,'Tcl112Protocol::Fan()'],['../unionTechnibelProtocol.html#a7e78bd68b747186143648fedbe29f75a',1,'TechnibelProtocol::Fan()'],['../unionTecoProtocol.html#a9be4d4e129beee82ff43ac6b09dd7f58',1,'TecoProtocol::Fan()'],['../unionToshibaProtocol.html#ade6e7b0543cd68c41cff2fc240f874ff',1,'ToshibaProtocol::Fan()'],['../unionTranscoldProtocol.html#a1b3c9da9be9dfe9c3306f562655900e1',1,'TranscoldProtocol::Fan()'],['../unionTrotecProtocol.html#ac42d9f97612c5b6f1aa42d95639b6492',1,'TrotecProtocol::Fan()'],['../unionTrumaProtocol.html#a3199edc177e0308ba0c2aa3b3485841d',1,'TrumaProtocol::Fan()'],['../unionVestelProtocol.html#a6c2a667af849583af46b3f40ca56bca3',1,'VestelProtocol::Fan()'],['../unionWhirlpoolProtocol.html#ad81249077201513dc772e6baba34c363',1,'WhirlpoolProtocol::Fan()']]], - ['fanauto_4785',['FanAuto',['../unionMitsubishi144Protocol.html#a50a10d24ada3c67f778438e3dae9fe73',1,'Mitsubishi144Protocol']]], - ['fanchange_4786',['FanChange',['../unionTechnibelProtocol.html#a2a733692b8c56270ec1b94e450caf4a8',1,'TechnibelProtocol']]], - ['fanspeed_4787',['FanSpeed',['../unionVoltasProtocol.html#a7a2326d3ecf316e1a4e0a5db0523cad6',1,'VoltasProtocol::FanSpeed()'],['../structstdAc_1_1state__t.html#a28a50c877a0eaa71689ccc3bf9c957d7',1,'stdAc::state_t::fanspeed()']]], - ['filter_4788',['Filter',['../unionFujitsuProtocol.html#a00c5204defd34eb3e8d1d8a53ccd7810',1,'FujitsuProtocol::Filter()'],['../unionMitsubishi152Protocol.html#ac228a2f41e4267c919df440bde470a86',1,'Mitsubishi152Protocol::Filter()'],['../structstdAc_1_1state__t.html#a41e4b957f9e011ddb32d35bfcd56c0e7',1,'stdAc::state_t::filter()']]], - ['flap_4789',['Flap',['../unionArgoProtocol.html#ab7d5a6a5d6849160b5980de7615dd5d1',1,'ArgoProtocol']]], - ['flap_5fmode_4790',['flap_mode',['../classIRArgoAC.html#abfc383d92ced7d47945cc5ac996e5fc4',1,'IRArgoAC']]], - ['follow_4791',['Follow',['../unionNeoclimaProtocol.html#a8d506fa694026184d0c82016e99ae3c0',1,'NeoclimaProtocol']]], - ['footer_4792',['Footer',['../unionTechnibelProtocol.html#a5e575790ca9af8f8975065aee10fe44e',1,'TechnibelProtocol']]], - ['fresh_4793',['Fresh',['../unionNeoclimaProtocol.html#ad521881ecb1973370c82d63d6b917023',1,'NeoclimaProtocol']]], - ['freshair_4794',['FreshAir',['../unionDaikin2Protocol.html#a6cfb49a475f49f34ad0a239b10b73385',1,'Daikin2Protocol']]], - ['freshairhigh_4795',['FreshAirHigh',['../unionDaikin2Protocol.html#a538ce0c2496f8514fbb4ea1d1706e210',1,'Daikin2Protocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.html deleted file mode 100644 index 39ffd4746..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.js deleted file mode 100644 index 9a097fbad..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_7.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['halfdegree_4796',['HalfDegree',['../unionMitsubishi144Protocol.html#a5dd9bbf66e0f25d17a836346ad37d303',1,'Mitsubishi144Protocol::HalfDegree()'],['../unionTcl112Protocol.html#a38ef38c4d67dfae2a1927ce756bba84a',1,'Tcl112Protocol::HalfDegree()']]], - ['halfhour_4797',['HalfHour',['../unionTecoProtocol.html#ae7eed85a01e7041535279d98ef65cf6a',1,'TecoProtocol']]], - ['header_4798',['Header',['../unionMideaProtocol.html#a892508b7b4cade91dd2e315b678f5f1b',1,'MideaProtocol::Header()'],['../unionTechnibelProtocol.html#a54fd7409b3eb2ccb826ab55f7ab3a4c9',1,'TechnibelProtocol::Header()']]], - ['header0_4799',['Header0',['../structCoronaSection.html#a3b3c0a1a42da65bb4b481e59b42f26a6',1,'CoronaSection']]], - ['header1_4800',['Header1',['../structCoronaSection.html#a3d6d6c1e31f82a76cd88f81bcdb83a3a',1,'CoronaSection']]], - ['health_4801',['Health',['../unionHaierProtocol.html#a4cf70c633e33066e3fc0f98bb2ad3820',1,'HaierProtocol::Health()'],['../unionHaierYRW02Protocol.html#a7fa39803fd72a788736bb8f00acfa76f',1,'HaierYRW02Protocol::Health()'],['../unionTcl112Protocol.html#a2dce97bdebb2d9a2648d7e8e83ed892d',1,'Tcl112Protocol::Health()']]], - ['heat_5fmode_4802',['heat_mode',['../classIRArgoAC.html#a255762f71502b9ffeb0686759991ec53',1,'IRArgoAC']]], - ['hold_4803',['Hold',['../unionNeoclimaProtocol.html#aaf3af5b5ab99978fb669e75949bfe136',1,'NeoclimaProtocol']]], - ['hours_4804',['Hours',['../unionTrotecProtocol.html#acbcd8e075d48cdd5c4570cbab50643b1',1,'TrotecProtocol::Hours()'],['../unionVestelProtocol.html#a38a88b6bd1cbf6eb2a47fcc53768397f',1,'VestelProtocol::Hours()']]], - ['humid_4805',['Humid',['../unionTecoProtocol.html#a37db4d115d1b1bef9f71fa7bccb1865f',1,'TecoProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.html deleted file mode 100644 index 37a2eddfa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.js deleted file mode 100644 index df21ba464..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_8.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['id_4806',['Id',['../unionFujitsuProtocol.html#ac3f6bb6208623f0842fa640fb183305c',1,'FujitsuProtocol']]], - ['ifeel_4807',['iFeel',['../unionArgoProtocol.html#a9d51b32b8e2b2ff08339be238a775097',1,'ArgoProtocol::iFeel()'],['../unionGreeProtocol.html#a592364307a4b11064888bda76c403142',1,'GreeProtocol::IFeel()']]], - ['intro1_4808',['Intro1',['../unionTrotecProtocol.html#afc82e5449c9d83af40c7235e220eb237',1,'TrotecProtocol']]], - ['intro2_4809',['Intro2',['../unionTrotecProtocol.html#a2f665441f11df93e2c779ce4343a8441',1,'TrotecProtocol']]], - ['ion_4810',['Ion',['../unionNeoclimaProtocol.html#aeee2a3f53f997ad7ffdbef2b5b6ee31a',1,'NeoclimaProtocol::Ion()'],['../unionSamsungProtocol.html#a977ae7e0e4cea918e4b4a714b25bb4ca',1,'SamsungProtocol::Ion()'],['../unionSharpProtocol.html#ae744f63f03d1c13fbd5bbcf8f40aea0e',1,'SharpProtocol::Ion()'],['../unionVestelProtocol.html#a532ca8ba3bbebc8e61853409aacd7ad9',1,'VestelProtocol::Ion()']]], - ['ionfilter_4811',['IonFilter',['../unionKelvinatorProtocol.html#ad7c762e410c8cba234614563cdc9d384',1,'KelvinatorProtocol']]], - ['irparams_5fsave_4812',['irparams_save',['../classIRrecv.html#a6fdac84ce51ce119972bf121ccc95aab',1,'IRrecv']]], - ['irpin_4813',['IRpin',['../classIRsend.html#ae4a6ea1e72f4861167002d6e7bf17b7c',1,'IRsend']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.html deleted file mode 100644 index 21e5a4f3c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.js deleted file mode 100644 index af14dde34..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['j191_4814',['J191',['../unionWhirlpoolProtocol.html#a225b788d0993185a994893fdc572dad1',1,'WhirlpoolProtocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.html deleted file mode 100644 index 1f6505537..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.js deleted file mode 100644 index c37fe6e42..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_a.js +++ /dev/null @@ -1,2239 +0,0 @@ -var searchData= -[ - ['k10cheatstr_4815',['k10CHeatStr',['../IRtext_8cpp.html#afeaf1a56a8fc5d1071593ef1eb6d80b1',1,'k10CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#ac71f0df9b9047c57d22ca4b3d3c3ea82',1,'k10CHeatStr(): IRtext.cpp']]], - ['k3dstr_4816',['k3DStr',['../IRtext_8cpp.html#aedbfd5e861447c2cde9f7bb6aade1370',1,'k3DStr(): IRtext.cpp'],['../IRtext_8h.html#a084c940b7221cd1d85d4a3b58063051d',1,'k3DStr(): IRtext.cpp']]], - ['k6thsensestr_4817',['k6thSenseStr',['../IRtext_8cpp.html#ad0bfc24932f22a599c7e7bf04fb57b10',1,'k6thSenseStr(): IRtext.cpp'],['../IRtext_8h.html#a7425119d393b134c4659db9d35691e35',1,'k6thSenseStr(): IRtext.cpp']]], - ['k8cheatstr_4818',['k8CHeatStr',['../IRtext_8cpp.html#ac6ab822edcfe7768cd1a8b0426a1bd59',1,'k8CHeatStr(): IRtext.cpp'],['../IRtext_8h.html#acfcc1bc573f4520f3e37977a949b74e8',1,'k8CHeatStr(): IRtext.cpp']]], - ['kairflowstr_4819',['kAirFlowStr',['../IRtext_8cpp.html#a7ecf1c6454bbf9963ca85a2bd7d4a34a',1,'kAirFlowStr(): IRtext.cpp'],['../IRtext_8h.html#a0f7e35a10e28e403da578c85b0e6b180',1,'kAirFlowStr(): IRtext.cpp']]], - ['kairwellauto_4820',['kAirwellAuto',['../ir__Airwell_8h.html#a5f3dbadb46874c672e093c5bbb59a97e',1,'ir_Airwell.h']]], - ['kairwellbits_4821',['kAirwellBits',['../IRremoteESP8266_8h.html#a570219a14f2d19c7a6ce0aecd37a3b1f',1,'IRremoteESP8266.h']]], - ['kairwellcool_4822',['kAirwellCool',['../ir__Airwell_8h.html#ab82c81efca876184ab30f24347dfa6af',1,'ir_Airwell.h']]], - ['kairwelldry_4823',['kAirwellDry',['../ir__Airwell_8h.html#a1274093143c10ea0208fdfe7b4ebdb02',1,'ir_Airwell.h']]], - ['kairwellfan_4824',['kAirwellFan',['../ir__Airwell_8h.html#abcdf6dac387c3fa5bb2eeb0327250ac7',1,'ir_Airwell.h']]], - ['kairwellfanauto_4825',['kAirwellFanAuto',['../ir__Airwell_8h.html#a40c8e262e6e6084c1d069bebb6a0fcb1',1,'ir_Airwell.h']]], - ['kairwellfanhigh_4826',['kAirwellFanHigh',['../ir__Airwell_8h.html#ab269b3942bee5458ec89a917d2ab0288',1,'ir_Airwell.h']]], - ['kairwellfanlow_4827',['kAirwellFanLow',['../ir__Airwell_8h.html#ab105d4d9a63166f9fbf2dfb47a58a3b7',1,'ir_Airwell.h']]], - ['kairwellfanmedium_4828',['kAirwellFanMedium',['../ir__Airwell_8h.html#ac755543eac2fad7bbd1f2727e11aee21',1,'ir_Airwell.h']]], - ['kairwellfootermark_4829',['kAirwellFooterMark',['../ir__Airwell_8cpp.html#a2f41c6fe12eb5b3369ffb67fc6333431',1,'ir_Airwell.cpp']]], - ['kairwellhalfclockperiod_4830',['kAirwellHalfClockPeriod',['../ir__Airwell_8cpp.html#a955f70631a1bc9be8453ccc9fbb3ecfc',1,'ir_Airwell.cpp']]], - ['kairwellhdrmark_4831',['kAirwellHdrMark',['../ir__Airwell_8cpp.html#ad0c7b6c28df61b706eef2ec05506d8c2',1,'ir_Airwell.cpp']]], - ['kairwellhdrspace_4832',['kAirwellHdrSpace',['../ir__Airwell_8cpp.html#ad7e80d679eaa5742f261619cc1115567',1,'ir_Airwell.cpp']]], - ['kairwellheat_4833',['kAirwellHeat',['../ir__Airwell_8h.html#a0f6e36670946f015d4599ad626300ef7',1,'ir_Airwell.h']]], - ['kairwellknowngoodstate_4834',['kAirwellKnownGoodState',['../ir__Airwell_8h.html#ae907f815fab982317d7865525b0294d5',1,'ir_Airwell.h']]], - ['kairwellmaxtemp_4835',['kAirwellMaxTemp',['../ir__Airwell_8h.html#adccc14f29d12b3c1e38a2e6a7b820b5f',1,'ir_Airwell.h']]], - ['kairwellminrepeats_4836',['kAirwellMinRepeats',['../IRremoteESP8266_8h.html#a669217ae5aa0baa159f7452f53551875',1,'IRremoteESP8266.h']]], - ['kairwellmintemp_4837',['kAirwellMinTemp',['../ir__Airwell_8h.html#ad8eef8b76485134c1c5278cae460e028',1,'ir_Airwell.h']]], - ['kairwelloverhead_4838',['kAirwellOverhead',['../ir__Airwell_8cpp.html#a8365fb4b254f5eeb6fed59cdc627fead',1,'ir_Airwell.cpp']]], - ['kaiwarct501bits_4839',['kAiwaRcT501Bits',['../IRremoteESP8266_8h.html#a9078adf040d21c9c3eb10ed69f9dced6',1,'IRremoteESP8266.h']]], - ['kaiwarct501minrepeats_4840',['kAiwaRcT501MinRepeats',['../IRremoteESP8266_8h.html#ad796714d955b6cc8e207b03058eae5a3',1,'IRremoteESP8266.h']]], - ['kaiwarct501postbits_4841',['kAiwaRcT501PostBits',['../ir__Aiwa_8cpp.html#a1ad2ad119febec79cb20bf2356ae4dd4',1,'ir_Aiwa.cpp']]], - ['kaiwarct501postdata_4842',['kAiwaRcT501PostData',['../ir__Aiwa_8cpp.html#a5c8aa67edc9ceed9dc398f878930b1cb',1,'ir_Aiwa.cpp']]], - ['kaiwarct501prebits_4843',['kAiwaRcT501PreBits',['../ir__Aiwa_8cpp.html#a614f30df204126f234ce1d256406f075',1,'ir_Aiwa.cpp']]], - ['kaiwarct501predata_4844',['kAiwaRcT501PreData',['../ir__Aiwa_8cpp.html#a9aafbd2938553c9b97dac6f4e3edee6e',1,'ir_Aiwa.cpp']]], - ['kallprotocolnamesstr_4845',['kAllProtocolNamesStr',['../IRtext_8cpp.html#a3ef36cf85e44181ecc4d11085b7abed6',1,'kAllProtocolNamesStr(): IRtext.cpp'],['../IRtext_8h.html#aa0dfe94cd4cba3bec642328f399dc775',1,'kAllProtocolNamesStr(): IRtext.cpp']]], - ['kalokabits_4846',['kAlokaBits',['../IRremoteESP8266_8h.html#a864918ca63a5fe7345688a72d61ddf23',1,'IRremoteESP8266.h']]], - ['kalokaledblue_4847',['kAlokaLedBlue',['../ir__NEC_8h.html#a49908cff59d8e7a4926638c74b796c61',1,'ir_NEC.h']]], - ['kalokaledgreen_4848',['kAlokaLedGreen',['../ir__NEC_8h.html#aa6c6afc878f4b2a8d4b9349bf6766fb6',1,'ir_NEC.h']]], - ['kalokaledlightgreen_4849',['kAlokaLedLightGreen',['../ir__NEC_8h.html#ab2daa6b17fd2d5e30fc47105e4c3c6b6',1,'ir_NEC.h']]], - ['kalokaledmidblue_4850',['kAlokaLedMidBlue',['../ir__NEC_8h.html#a47d88027186cd96216bea935ca93d7bc',1,'ir_NEC.h']]], - ['kalokaledorange_4851',['kAlokaLedOrange',['../ir__NEC_8h.html#a40f8ae5d6ec8f6aa887c73f032ce03bb',1,'ir_NEC.h']]], - ['kalokaledpink_4852',['kAlokaLedPink',['../ir__NEC_8h.html#a53cf14e43062b82259e8d171a992ceff',1,'ir_NEC.h']]], - ['kalokaledpinkred_4853',['kAlokaLedPinkRed',['../ir__NEC_8h.html#a20ef8a4a844577849b4b3bc7a86fe352',1,'ir_NEC.h']]], - ['kalokaledrainbow_4854',['kAlokaLedRainbow',['../ir__NEC_8h.html#a724ce8d8c71c07a019ed2ddfba269151',1,'ir_NEC.h']]], - ['kalokaledred_4855',['kAlokaLedRed',['../ir__NEC_8h.html#ade8f47e4607be919ca05b6dd6ed23ae9',1,'ir_NEC.h']]], - ['kalokaledtreegrow_4856',['kAlokaLedTreeGrow',['../ir__NEC_8h.html#a5ecb76db25229f9f05044e54239144ee',1,'ir_NEC.h']]], - ['kalokaledwhite_4857',['kAlokaLedWhite',['../ir__NEC_8h.html#a0c0b35e9d905de0b299e38e5807f363e',1,'ir_NEC.h']]], - ['kalokaledyellow_4858',['kAlokaLedYellow',['../ir__NEC_8h.html#a1853a0e8856b8af97f458a180c41d6d5',1,'ir_NEC.h']]], - ['kalokanightfade_4859',['kAlokaNightFade',['../ir__NEC_8h.html#adb8489faf42032a38187759b5f1037a1',1,'ir_NEC.h']]], - ['kalokanighttimer_4860',['kAlokaNightTimer',['../ir__NEC_8h.html#a1b48b8bbd71fbe3728487f36123f4e4b',1,'ir_NEC.h']]], - ['kalokapower_4861',['kAlokaPower',['../ir__NEC_8h.html#a147ecbccf8f11976f65b3f374b6ab2d0',1,'ir_NEC.h']]], - ['kamcorauto_4862',['kAmcorAuto',['../ir__Amcor_8h.html#a9c02a27d5ed80963ff3b1ff32fc261c5',1,'ir_Amcor.h']]], - ['kamcorbits_4863',['kAmcorBits',['../IRremoteESP8266_8h.html#a34bcab75a8ab94adfd46a245dd0748db',1,'IRremoteESP8266.h']]], - ['kamcorcool_4864',['kAmcorCool',['../ir__Amcor_8h.html#a221c452a3323bd4d39a6084f84ecefbd',1,'ir_Amcor.h']]], - ['kamcordefaultrepeat_4865',['kAmcorDefaultRepeat',['../IRremoteESP8266_8h.html#a746e1ce73c2ebd9bd1f5300494820a0c',1,'IRremoteESP8266.h']]], - ['kamcordry_4866',['kAmcorDry',['../ir__Amcor_8h.html#a4d285053d14cf85d0c17e738c53538cd',1,'ir_Amcor.h']]], - ['kamcorfan_4867',['kAmcorFan',['../ir__Amcor_8h.html#a5fa0c6e3a73c94fc419ff8d1aa1423c2',1,'ir_Amcor.h']]], - ['kamcorfanauto_4868',['kAmcorFanAuto',['../ir__Amcor_8h.html#a3199dbace6444ed6ca7ff2e55a8a3a24',1,'ir_Amcor.h']]], - ['kamcorfanmax_4869',['kAmcorFanMax',['../ir__Amcor_8h.html#a08ea054d4121220ba758a0e0cacef8ca',1,'ir_Amcor.h']]], - ['kamcorfanmed_4870',['kAmcorFanMed',['../ir__Amcor_8h.html#a9ef019a27cf0724ff1f1ff39e06c0c87',1,'ir_Amcor.h']]], - ['kamcorfanmin_4871',['kAmcorFanMin',['../ir__Amcor_8h.html#a0276f72dc5b39557850838c8c70fd157',1,'ir_Amcor.h']]], - ['kamcorfootermark_4872',['kAmcorFooterMark',['../ir__Amcor_8cpp.html#a3f877b05b07810ff43712dd4412af4f5',1,'ir_Amcor.cpp']]], - ['kamcorgap_4873',['kAmcorGap',['../ir__Amcor_8cpp.html#a090f83ec3d4f3fd10baa16bf512dca23',1,'ir_Amcor.cpp']]], - ['kamcorhdrmark_4874',['kAmcorHdrMark',['../ir__Amcor_8cpp.html#ab528f545e9af4ffb0f13d5674cfd1589',1,'ir_Amcor.cpp']]], - ['kamcorhdrspace_4875',['kAmcorHdrSpace',['../ir__Amcor_8cpp.html#ae0e00c60c4220d27ef7051b45f2ae8b5',1,'ir_Amcor.cpp']]], - ['kamcorheat_4876',['kAmcorHeat',['../ir__Amcor_8h.html#a9467539574a0030d166fac79684216f8',1,'ir_Amcor.h']]], - ['kamcormax_4877',['kAmcorMax',['../ir__Amcor_8h.html#afac44479dc50e3885e474d2cf8d1f878',1,'ir_Amcor.h']]], - ['kamcormaxtemp_4878',['kAmcorMaxTemp',['../ir__Amcor_8h.html#a6460abc4e2b44e4ef3f680c7e195c019',1,'ir_Amcor.h']]], - ['kamcormintemp_4879',['kAmcorMinTemp',['../ir__Amcor_8h.html#a2d952bf3f43cb55253a89db1bcc0b568',1,'ir_Amcor.h']]], - ['kamcoronemark_4880',['kAmcorOneMark',['../ir__Amcor_8cpp.html#a402a3643dc6b85813eb5f28d742c4e7f',1,'ir_Amcor.cpp']]], - ['kamcoronespace_4881',['kAmcorOneSpace',['../ir__Amcor_8cpp.html#a51163573fdc7b8017c7311f0e4011b1b',1,'ir_Amcor.cpp']]], - ['kamcorpoweroff_4882',['kAmcorPowerOff',['../ir__Amcor_8h.html#aeccd11f34ca0a93f682ab6c144f07fb7',1,'ir_Amcor.h']]], - ['kamcorpoweron_4883',['kAmcorPowerOn',['../ir__Amcor_8h.html#adf21c2364e64c818ba5379e78cae9d5c',1,'ir_Amcor.h']]], - ['kamcorstatelength_4884',['kAmcorStateLength',['../IRremoteESP8266_8h.html#a62866e6918602533d590912487150bc7',1,'IRremoteESP8266.h']]], - ['kamcortolerance_4885',['kAmcorTolerance',['../ir__Amcor_8cpp.html#ad7a4b72f06c5e71002a44c3e4d483bef',1,'ir_Amcor.cpp']]], - ['kamcorventon_4886',['kAmcorVentOn',['../ir__Amcor_8h.html#a0774a9180ab233da61c77c717be02521',1,'ir_Amcor.h']]], - ['kamcorzeromark_4887',['kAmcorZeroMark',['../ir__Amcor_8cpp.html#a6f16bcf81087461a4e196a2c670f29ee',1,'ir_Amcor.cpp']]], - ['kamcorzerospace_4888',['kAmcorZeroSpace',['../ir__Amcor_8cpp.html#a0cbb87d1a5bb594cf428c79cd96c8733',1,'ir_Amcor.cpp']]], - ['kargoauto_4889',['kArgoAuto',['../ir__Argo_8h.html#a527fa5776cb58f88013de5062c620b12',1,'ir_Argo.h']]], - ['kargobitmark_4890',['kArgoBitMark',['../ir__Argo_8cpp.html#aa15902c11e3a7d3cbb25504764b163c1',1,'ir_Argo.cpp']]], - ['kargobits_4891',['kArgoBits',['../IRremoteESP8266_8h.html#a351efcd1805c87bd338de81dab3f8fb2',1,'IRremoteESP8266.h']]], - ['kargocool_4892',['kArgoCool',['../ir__Argo_8h.html#ab331356887b5f8f04f5ffdf9031fde71',1,'ir_Argo.h']]], - ['kargodefaultrepeat_4893',['kArgoDefaultRepeat',['../IRremoteESP8266_8h.html#a9a2190c526885753c676db666e48b764',1,'IRremoteESP8266.h']]], - ['kargodry_4894',['kArgoDry',['../ir__Argo_8h.html#ae119706139f65f730db477d060a7bc5d',1,'ir_Argo.h']]], - ['kargofan1_4895',['kArgoFan1',['../ir__Argo_8h.html#abfbde2676afb8b027a26a49d947a1396',1,'ir_Argo.h']]], - ['kargofan2_4896',['kArgoFan2',['../ir__Argo_8h.html#a7b544220198b6aa311da78bc02b0e211',1,'ir_Argo.h']]], - ['kargofan3_4897',['kArgoFan3',['../ir__Argo_8h.html#aa34af62e7134bbca2028d74ba7dfed4e',1,'ir_Argo.h']]], - ['kargofanauto_4898',['kArgoFanAuto',['../ir__Argo_8h.html#a3b17c0ba868b439135e6e016452f1623',1,'ir_Argo.h']]], - ['kargoflap1_4899',['kArgoFlap1',['../ir__Argo_8h.html#a477dac25a687b9d875cf9e94623d5e84',1,'ir_Argo.h']]], - ['kargoflap2_4900',['kArgoFlap2',['../ir__Argo_8h.html#aa72401adcdd23c12d36f98370c605ef6',1,'ir_Argo.h']]], - ['kargoflap3_4901',['kArgoFlap3',['../ir__Argo_8h.html#ab18e2931823d631b533c14f417ed4adb',1,'ir_Argo.h']]], - ['kargoflap4_4902',['kArgoFlap4',['../ir__Argo_8h.html#a59204076030de56e1160fc599879b142',1,'ir_Argo.h']]], - ['kargoflap5_4903',['kArgoFlap5',['../ir__Argo_8h.html#a5a3f4c1b1303b177a924c61dfdcce3e6',1,'ir_Argo.h']]], - ['kargoflap6_4904',['kArgoFlap6',['../ir__Argo_8h.html#ac11d6b575b4abc7ac5aec9006ac41634',1,'ir_Argo.h']]], - ['kargoflapauto_4905',['kArgoFlapAuto',['../ir__Argo_8h.html#af7f4a97011f94e4bf453e7cfd01fd780',1,'ir_Argo.h']]], - ['kargoflapfull_4906',['kArgoFlapFull',['../ir__Argo_8h.html#a8befe8d8b6826fc79176b66eea8352b7',1,'ir_Argo.h']]], - ['kargogap_4907',['kArgoGap',['../ir__Argo_8cpp.html#a1a28fc063dea8beacbaac39cf8e9b81b',1,'ir_Argo.cpp']]], - ['kargohdrmark_4908',['kArgoHdrMark',['../ir__Argo_8cpp.html#a5c25d5a07e397fe86378021e7c3f2980',1,'ir_Argo.cpp']]], - ['kargohdrspace_4909',['kArgoHdrSpace',['../ir__Argo_8cpp.html#a10e8a2ac55f8b123093cd92757d1603d',1,'ir_Argo.cpp']]], - ['kargoheat_4910',['kArgoHeat',['../ir__Argo_8h.html#a431536a03ef985b53a4147df5a043b21',1,'ir_Argo.h']]], - ['kargoheatauto_4911',['kArgoHeatAuto',['../ir__Argo_8h.html#a154f8b3e0d600d87b2822027bf0c6619',1,'ir_Argo.h']]], - ['kargoheatbit_4912',['kArgoHeatBit',['../ir__Argo_8h.html#ada4b42336f3d423e3ef1060605c7f7f1',1,'ir_Argo.h']]], - ['kargoheatblink_4913',['kArgoHeatBlink',['../ir__Argo_8h.html#ad29933c939f9364399dfa0f7eaa8cce6',1,'ir_Argo.h']]], - ['kargomaxroomtemp_4914',['kArgoMaxRoomTemp',['../ir__Argo_8h.html#a27427d4479dc126e8782985008d4dd7d',1,'ir_Argo.h']]], - ['kargomaxtemp_4915',['kArgoMaxTemp',['../ir__Argo_8h.html#a2409d2f472fb950c070fa5c0a07f69ce',1,'ir_Argo.h']]], - ['kargomintemp_4916',['kArgoMinTemp',['../ir__Argo_8h.html#a4bc4e4cfe12af43730cb128f4043ad11',1,'ir_Argo.h']]], - ['kargooff_4917',['kArgoOff',['../ir__Argo_8h.html#af3c6e4f7b18095179ea9e20e45e1890a',1,'ir_Argo.h']]], - ['kargoonespace_4918',['kArgoOneSpace',['../ir__Argo_8cpp.html#a47131b446d160fed9c7af1886d3580e4',1,'ir_Argo.cpp']]], - ['kargostatelength_4919',['kArgoStateLength',['../IRremoteESP8266_8h.html#a5f38a56eacd9964a8514cb57de287a45',1,'IRremoteESP8266.h']]], - ['kargotempdelta_4920',['kArgoTempDelta',['../ir__Argo_8h.html#a7256560730a73dcaaa60cdfc8140fc0b',1,'ir_Argo.h']]], - ['kargozerospace_4921',['kArgoZeroSpace',['../ir__Argo_8cpp.html#a5e06b6d522b35f503ca1e5db27f32ff6',1,'ir_Argo.cpp']]], - ['kautomaticstr_4922',['kAutomaticStr',['../IRtext_8cpp.html#a66a32b6387a99572644e91f3299910a6',1,'kAutomaticStr(): IRtext.cpp'],['../IRtext_8h.html#a0fc9126a02b933a2af702cd6fdcb47ea',1,'kAutomaticStr(): IRtext.cpp']]], - ['kautostr_4923',['kAutoStr',['../IRtext_8cpp.html#ae8ec328761b0218d0b18479a972b1121',1,'kAutoStr(): IRtext.cpp'],['../IRtext_8h.html#a15a085c4f9e89926d2c165de4b1755d9',1,'kAutoStr(): IRtext.cpp']]], - ['kbeepstr_4924',['kBeepStr',['../IRtext_8cpp.html#a429f5c2f5aea162bd1568e8489aecb28',1,'kBeepStr(): IRtext.cpp'],['../IRtext_8h.html#a2e98c29968ade682d94f35e28364c878',1,'kBeepStr(): IRtext.cpp']]], - ['kbitsstr_4925',['kBitsStr',['../IRtext_8cpp.html#aaabaca413c37bb6b18dc13daf5b335c1',1,'kBitsStr(): IRtext.cpp'],['../IRtext_8h.html#aaf3e1b0041b00b261dfd949b41569d94',1,'kBitsStr(): IRtext.cpp']]], - ['kbottomstr_4926',['kBottomStr',['../IRtext_8cpp.html#ab0bd355efc13bd278a0e33765a783cd0',1,'kBottomStr(): IRtext.cpp'],['../IRtext_8h.html#accfb2322a40cfaf6707394e43f39e2a3',1,'kBottomStr(): IRtext.cpp']]], - ['kbreezestr_4927',['kBreezeStr',['../IRtext_8cpp.html#ab0317e8cf720936fb02816e7827bea9e',1,'kBreezeStr(): IRtext.cpp'],['../IRtext_8h.html#af4f31b53c295a877507e3ef5a5fbbc9d',1,'kBreezeStr(): IRtext.cpp']]], - ['kbuttonstr_4928',['kButtonStr',['../IRtext_8cpp.html#a6ee11e0a45632c54e34bed14c3a971ce',1,'kButtonStr(): IRtext.cpp'],['../IRtext_8h.html#a58bf62453a96d4e84bd1da3449b8799e',1,'kButtonStr(): IRtext.cpp']]], - ['kcancelstr_4929',['kCancelStr',['../IRtext_8cpp.html#af79c3879bac5ca97947f16c3a6a03321',1,'kCancelStr(): IRtext.cpp'],['../IRtext_8h.html#ab64c4cdebbc72cbb62ae6cd9a449876b',1,'kCancelStr(): IRtext.cpp']]], - ['kcarrierac40bitmark_4930',['kCarrierAc40BitMark',['../ir__Carrier_8cpp.html#a3f8996aa3a7b9b871bc6556f98efb345',1,'ir_Carrier.cpp']]], - ['kcarrierac40bits_4931',['kCarrierAc40Bits',['../IRremoteESP8266_8h.html#a56d1176a7b3fe59aeb3f4f39926c617d',1,'IRremoteESP8266.h']]], - ['kcarrierac40gap_4932',['kCarrierAc40Gap',['../ir__Carrier_8cpp.html#aa5f0d39a4e12645a6fb477efb3191384',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrmark_4933',['kCarrierAc40HdrMark',['../ir__Carrier_8cpp.html#a4b77665ded6dab393779d2763bc367f0',1,'ir_Carrier.cpp']]], - ['kcarrierac40hdrspace_4934',['kCarrierAc40HdrSpace',['../ir__Carrier_8cpp.html#a5ea98bc575a7ac8d7f5da937feeaeed4',1,'ir_Carrier.cpp']]], - ['kcarrierac40minrepeat_4935',['kCarrierAc40MinRepeat',['../IRremoteESP8266_8h.html#a222aa743f398883a4910fbbb6d408bdc',1,'IRremoteESP8266.h']]], - ['kcarrierac40onespace_4936',['kCarrierAc40OneSpace',['../ir__Carrier_8cpp.html#a79073c06820817e077c5bd8d9b8acfbd',1,'ir_Carrier.cpp']]], - ['kcarrierac40zerospace_4937',['kCarrierAc40ZeroSpace',['../ir__Carrier_8cpp.html#a2ee9b60c12887983a6f4f123db6fd5e9',1,'ir_Carrier.cpp']]], - ['kcarrierac64bitmark_4938',['kCarrierAc64BitMark',['../ir__Carrier_8cpp.html#ae32b2dab6a654fa293f54684da45c5c0',1,'ir_Carrier.cpp']]], - ['kcarrierac64bits_4939',['kCarrierAc64Bits',['../IRremoteESP8266_8h.html#a41bc7ab7289e499ad33901da3eab661a',1,'IRremoteESP8266.h']]], - ['kcarrierac64checksumoffset_4940',['kCarrierAc64ChecksumOffset',['../ir__Carrier_8h.html#a3aa65474b5be8c77d498b7e83d8b8f31',1,'ir_Carrier.h']]], - ['kcarrierac64checksumsize_4941',['kCarrierAc64ChecksumSize',['../ir__Carrier_8h.html#a0b446c17c4965508f335e68c786f0596',1,'ir_Carrier.h']]], - ['kcarrierac64cool_4942',['kCarrierAc64Cool',['../ir__Carrier_8h.html#aa75d5965da484d09f6f4c645cdb23869',1,'ir_Carrier.h']]], - ['kcarrierac64fan_4943',['kCarrierAc64Fan',['../ir__Carrier_8h.html#a57655ceea762b18e0dd96724ddf888bd',1,'ir_Carrier.h']]], - ['kcarrierac64fanauto_4944',['kCarrierAc64FanAuto',['../ir__Carrier_8h.html#a12d1fb295a0d9cf407040ab544acc245',1,'ir_Carrier.h']]], - ['kcarrierac64fanhigh_4945',['kCarrierAc64FanHigh',['../ir__Carrier_8h.html#a099f2e82998bd78d25cec17a4be5f230',1,'ir_Carrier.h']]], - ['kcarrierac64fanlow_4946',['kCarrierAc64FanLow',['../ir__Carrier_8h.html#aaeee61e5924bdc8028c4775f96ba14d2',1,'ir_Carrier.h']]], - ['kcarrierac64fanmedium_4947',['kCarrierAc64FanMedium',['../ir__Carrier_8h.html#aeb8943f8d9f2bd95a9df6500eea7cba4',1,'ir_Carrier.h']]], - ['kcarrierac64gap_4948',['kCarrierAc64Gap',['../ir__Carrier_8cpp.html#a6f7ba77f1350126d78a23d7ba967e258',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrmark_4949',['kCarrierAc64HdrMark',['../ir__Carrier_8cpp.html#a19dc2108d4490c82c03c87c625bc5f31',1,'ir_Carrier.cpp']]], - ['kcarrierac64hdrspace_4950',['kCarrierAc64HdrSpace',['../ir__Carrier_8cpp.html#ad73dbf55f5ffa03d92ec699b23e8ca8d',1,'ir_Carrier.cpp']]], - ['kcarrierac64heat_4951',['kCarrierAc64Heat',['../ir__Carrier_8h.html#ac261ba8bff6f103bb9043c85a6f21d58',1,'ir_Carrier.h']]], - ['kcarrierac64maxtemp_4952',['kCarrierAc64MaxTemp',['../ir__Carrier_8h.html#a5653bc180a4c849b5e0b33b957255ae4',1,'ir_Carrier.h']]], - ['kcarrierac64minrepeat_4953',['kCarrierAc64MinRepeat',['../IRremoteESP8266_8h.html#a8b2b3670dc74ce9fbf3c8b511422a06c',1,'IRremoteESP8266.h']]], - ['kcarrierac64mintemp_4954',['kCarrierAc64MinTemp',['../ir__Carrier_8h.html#a9e7a88bf52839ecb34da1966bb8a956b',1,'ir_Carrier.h']]], - ['kcarrierac64onespace_4955',['kCarrierAc64OneSpace',['../ir__Carrier_8cpp.html#a58ea051d56227a4037682f5d612b4cc7',1,'ir_Carrier.cpp']]], - ['kcarrierac64timermax_4956',['kCarrierAc64TimerMax',['../ir__Carrier_8h.html#a78a34b51e51dc3b4129f350673c9fa96',1,'ir_Carrier.h']]], - ['kcarrierac64timermin_4957',['kCarrierAc64TimerMin',['../ir__Carrier_8h.html#aeebac3e61246f2e148806d4b4e8ac13e',1,'ir_Carrier.h']]], - ['kcarrierac64zerospace_4958',['kCarrierAc64ZeroSpace',['../ir__Carrier_8cpp.html#af28d4332e0f1ad19aa743b993f44cdc7',1,'ir_Carrier.cpp']]], - ['kcarrieracbitmark_4959',['kCarrierAcBitMark',['../ir__Carrier_8cpp.html#af4a608f81c745734499ec1842167940b',1,'ir_Carrier.cpp']]], - ['kcarrieracbits_4960',['kCarrierAcBits',['../IRremoteESP8266_8h.html#a668d9ac84f7dae61c35534b842d4956b',1,'IRremoteESP8266.h']]], - ['kcarrieracfreq_4961',['kCarrierAcFreq',['../ir__Carrier_8cpp.html#a795dc2d9b122bd3794fddbddef571058',1,'ir_Carrier.cpp']]], - ['kcarrieracgap_4962',['kCarrierAcGap',['../ir__Carrier_8cpp.html#a00767c0b503a7fc8f0b2ddfac24a4f85',1,'ir_Carrier.cpp']]], - ['kcarrierachdrmark_4963',['kCarrierAcHdrMark',['../ir__Carrier_8cpp.html#ad9a7754e77cfcfd6c6032d497bc4528d',1,'ir_Carrier.cpp']]], - ['kcarrierachdrspace_4964',['kCarrierAcHdrSpace',['../ir__Carrier_8cpp.html#a8e09857e2fe15d6983ec0384c57140d4',1,'ir_Carrier.cpp']]], - ['kcarrieracminrepeat_4965',['kCarrierAcMinRepeat',['../IRremoteESP8266_8h.html#a78c8a8b11179e8fd20bf09fa35f6b886',1,'IRremoteESP8266.h']]], - ['kcarrieraconespace_4966',['kCarrierAcOneSpace',['../ir__Carrier_8cpp.html#ab04a214a7c2e0439384736c46ddc6c61',1,'ir_Carrier.cpp']]], - ['kcarrieraczerospace_4967',['kCarrierAcZeroSpace',['../ir__Carrier_8cpp.html#a51c9c4bbd6e2927baac15dc60c1e60fa',1,'ir_Carrier.cpp']]], - ['kceilingstr_4968',['kCeilingStr',['../IRtext_8cpp.html#a5258c9d80502d5a8e14bb324a394452b',1,'kCeilingStr(): IRtext.cpp'],['../IRtext_8h.html#aa47afe8f4c175954e9439c0c9e48c83e',1,'kCeilingStr(): IRtext.cpp']]], - ['kcelsiusfahrenheitstr_4969',['kCelsiusFahrenheitStr',['../IRtext_8cpp.html#ab24f542059d0c1c1352686469c9fde7d',1,'kCelsiusFahrenheitStr(): IRtext.cpp'],['../IRtext_8h.html#a9bd25ef522ae667d9869b6f6ea937f5d',1,'kCelsiusFahrenheitStr(): IRtext.cpp']]], - ['kcelsiusstr_4970',['kCelsiusStr',['../IRtext_8cpp.html#af0ad7ca76c659a17872960bcbcfbdbbf',1,'kCelsiusStr(): IRtext.cpp'],['../IRtext_8h.html#aae21484e9f049a7cfa507068abd3915e',1,'kCelsiusStr(): IRtext.cpp']]], - ['kcentrestr_4971',['kCentreStr',['../IRtext_8cpp.html#a87a4151e0361c9f75d0d5c00f9bad1ee',1,'kCentreStr(): IRtext.cpp'],['../IRtext_8h.html#aab13bc11db65584fbb8a61c686d67228',1,'kCentreStr(): IRtext.cpp']]], - ['kchangestr_4972',['kChangeStr',['../IRtext_8cpp.html#a1f6396eb9bd4327a7a2307e5724c1dd7',1,'kChangeStr(): IRtext.cpp'],['../IRtext_8h.html#a46e6bd06cfbf5f462042d7c720db01ae',1,'kChangeStr(): IRtext.cpp']]], - ['kcirculatestr_4973',['kCirculateStr',['../IRtext_8cpp.html#a869ef1f579373ff4b5b61b1cba215680',1,'kCirculateStr(): IRtext.cpp'],['../IRtext_8h.html#a0ba8b339babc7f7f26dbab2399bcc578',1,'kCirculateStr(): IRtext.cpp']]], - ['kcleanstr_4974',['kCleanStr',['../IRtext_8cpp.html#ad2d97c52e8df2704654fdbd0a7a0561e',1,'kCleanStr(): IRtext.cpp'],['../IRtext_8h.html#a45c17b23773e9dcded65a82577b00263',1,'kCleanStr(): IRtext.cpp']]], - ['kclockstr_4975',['kClockStr',['../IRtext_8cpp.html#ad39bd469d5474159463543184cfae321',1,'kClockStr(): IRtext.cpp'],['../IRtext_8h.html#a6e4b8f591a1d3d399a559d41847b3fa8',1,'kClockStr(): IRtext.cpp']]], - ['kcodestr_4976',['kCodeStr',['../IRtext_8cpp.html#a26e4bf74871ce457f42ec839545987f4',1,'kCodeStr(): IRtext.cpp'],['../IRtext_8h.html#a58a9da5cec40746dbe20455c6ef6c8fd',1,'kCodeStr(): IRtext.cpp']]], - ['kcolonspacestr_4977',['kColonSpaceStr',['../IRtext_8cpp.html#a5d978c9ac25163a9629b7e8e2d37d25e',1,'kColonSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#aab1b0d2ea5169c1e1d8eff4daef36512',1,'kColonSpaceStr(): IRtext.cpp']]], - ['kcomfortstr_4978',['kComfortStr',['../IRtext_8cpp.html#aa7f0cfdb126ff7b0f8db6033bb51f36d',1,'kComfortStr(): IRtext.cpp'],['../IRtext_8h.html#a20037561545d4ba4cfe66c1e103ecde1',1,'kComfortStr(): IRtext.cpp']]], - ['kcommandstr_4979',['kCommandStr',['../IRtext_8cpp.html#afd5865ea8c0f8565369dd2c4ee4622d6',1,'kCommandStr(): IRtext.cpp'],['../IRtext_8h.html#afdc9e8cc5c8c5c03749898d4f2d38606',1,'kCommandStr(): IRtext.cpp']]], - ['kcommaspacestr_4980',['kCommaSpaceStr',['../IRtext_8cpp.html#ac8a9678d4c9eeee17a9dc28624c0ab49',1,'kCommaSpaceStr(): IRtext.cpp'],['../IRtext_8h.html#a48f5dfcf2e0f13f502980d42e879aec3',1,'kCommaSpaceStr(): IRtext.cpp']]], - ['kcoolixauto_4981',['kCoolixAuto',['../ir__Coolix_8h.html#a73c1ef7c2c80c861256a14a9f256b125',1,'ir_Coolix.h']]], - ['kcoolixbitmark_4982',['kCoolixBitMark',['../ir__Coolix_8cpp.html#acd8562a27ec6c0a6c2cf9480082e04cd',1,'ir_Coolix.cpp']]], - ['kcoolixbitmarkticks_4983',['kCoolixBitMarkTicks',['../ir__Coolix_8cpp.html#aefaa206b4316a4fd921f7171295d1232',1,'ir_Coolix.cpp']]], - ['kcoolixbits_4984',['kCoolixBits',['../IRremoteESP8266_8h.html#aed48c68a637e4b45b80bbf4964ea79f9',1,'IRremoteESP8266.h']]], - ['kcoolixclean_4985',['kCoolixClean',['../ir__Coolix_8h.html#a5cc9fcde4a6da54917b4d69bb352bc86',1,'ir_Coolix.h']]], - ['kcoolixcmdfan_4986',['kCoolixCmdFan',['../ir__Coolix_8h.html#a7d5ff02f4a0c379322877b3dcf934c77',1,'ir_Coolix.h']]], - ['kcoolixcool_4987',['kCoolixCool',['../ir__Coolix_8h.html#ae285ee4206fe45d25bb1d99b848c7e65',1,'ir_Coolix.h']]], - ['kcoolixdefaultrepeat_4988',['kCoolixDefaultRepeat',['../IRremoteESP8266_8h.html#aa89410d369d71738c8cbefae6ac3b00f',1,'IRremoteESP8266.h']]], - ['kcoolixdefaultstate_4989',['kCoolixDefaultState',['../ir__Coolix_8h.html#ad54ebf20658c33e5ad54fc54a513511e',1,'ir_Coolix.h']]], - ['kcoolixdry_4990',['kCoolixDry',['../ir__Coolix_8h.html#a904c4135f61120e71577f6830adae689',1,'ir_Coolix.h']]], - ['kcoolixfan_4991',['kCoolixFan',['../ir__Coolix_8h.html#a2e050321c994844f2ff6668ba6973ac4',1,'ir_Coolix.h']]], - ['kcoolixfanauto_4992',['kCoolixFanAuto',['../ir__Coolix_8h.html#ac25d3c45ed7d7d30ff2ebf617d8265f0',1,'ir_Coolix.h']]], - ['kcoolixfanauto0_4993',['kCoolixFanAuto0',['../ir__Coolix_8h.html#a38cccd1edee2c88c1b080f1d5600ead7',1,'ir_Coolix.h']]], - ['kcoolixfanfixed_4994',['kCoolixFanFixed',['../ir__Coolix_8h.html#a37a3a23d8fe30df024cb844f82f90b2a',1,'ir_Coolix.h']]], - ['kcoolixfanmax_4995',['kCoolixFanMax',['../ir__Coolix_8h.html#aabb349ee111467088b9a292950aba753',1,'ir_Coolix.h']]], - ['kcoolixfanmed_4996',['kCoolixFanMed',['../ir__Coolix_8h.html#a2750626cda2e389df901b459805e09bd',1,'ir_Coolix.h']]], - ['kcoolixfanmin_4997',['kCoolixFanMin',['../ir__Coolix_8h.html#a6c0086075cce1698c48cc30e045ab5bf',1,'ir_Coolix.h']]], - ['kcoolixfantempcode_4998',['kCoolixFanTempCode',['../ir__Coolix_8h.html#a6d2d6f2fd8f5e9a4491623b9351efcba',1,'ir_Coolix.h']]], - ['kcoolixfanzonefollow_4999',['kCoolixFanZoneFollow',['../ir__Coolix_8h.html#a5a71c6acd18b3198c7900e2de34c48a3',1,'ir_Coolix.h']]], - ['kcoolixhdrmark_5000',['kCoolixHdrMark',['../ir__Coolix_8cpp.html#a746299797d958ccf116e6d1cdab3ad06',1,'ir_Coolix.cpp']]], - ['kcoolixhdrmarkticks_5001',['kCoolixHdrMarkTicks',['../ir__Coolix_8cpp.html#a04d520a0fe3d773f377810174e5463a4',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspace_5002',['kCoolixHdrSpace',['../ir__Coolix_8cpp.html#ab7ff2a6bd99e0e6a0db3f14350cca84c',1,'ir_Coolix.cpp']]], - ['kcoolixhdrspaceticks_5003',['kCoolixHdrSpaceTicks',['../ir__Coolix_8cpp.html#a58951e9800513b019ccb9f04ae55716f',1,'ir_Coolix.cpp']]], - ['kcoolixheat_5004',['kCoolixHeat',['../ir__Coolix_8h.html#a234b39696f0b2fac6b37aa309082505e',1,'ir_Coolix.h']]], - ['kcoolixled_5005',['kCoolixLed',['../ir__Coolix_8h.html#a68ae46e117caf0d7a3cc2ef9492495f1',1,'ir_Coolix.h']]], - ['kcoolixmingap_5006',['kCoolixMinGap',['../ir__Coolix_8cpp.html#a46da2480f6850af899db74a4f2270cdc',1,'ir_Coolix.cpp']]], - ['kcoolixmingapticks_5007',['kCoolixMinGapTicks',['../ir__Coolix_8cpp.html#a94f47fbf027fcb90664b302ff123f535',1,'ir_Coolix.cpp']]], - ['kcoolixoff_5008',['kCoolixOff',['../ir__Coolix_8h.html#aef6f59b83a14b8505f395b2eb8d8ad39',1,'ir_Coolix.h']]], - ['kcoolixonespace_5009',['kCoolixOneSpace',['../ir__Coolix_8cpp.html#a97a8439ace71584e36ab7306c3d53749',1,'ir_Coolix.cpp']]], - ['kcoolixonespaceticks_5010',['kCoolixOneSpaceTicks',['../ir__Coolix_8cpp.html#a78770eaf597e4aa2ed539248ef10ec11',1,'ir_Coolix.cpp']]], - ['kcoolixsensortempignorecode_5011',['kCoolixSensorTempIgnoreCode',['../ir__Coolix_8h.html#ae3aba531b0c0053424786ec4bb2be934',1,'ir_Coolix.h']]], - ['kcoolixsensortempmax_5012',['kCoolixSensorTempMax',['../ir__Coolix_8h.html#a71641b1240ee439e77128165cedf899f',1,'ir_Coolix.h']]], - ['kcoolixsleep_5013',['kCoolixSleep',['../ir__Coolix_8h.html#aa7f9f96e56bd3f6b814bc84b947b2417',1,'ir_Coolix.h']]], - ['kcoolixswing_5014',['kCoolixSwing',['../ir__Coolix_8h.html#a799ad5ab7cf43f0aac3c342305f14b90',1,'ir_Coolix.h']]], - ['kcoolixswingh_5015',['kCoolixSwingH',['../ir__Coolix_8h.html#a877bd2731dfc86d864e38a5ceb4ede6e',1,'ir_Coolix.h']]], - ['kcoolixswingv_5016',['kCoolixSwingV',['../ir__Coolix_8h.html#ab9fcaf25426f1f9ad293e165f8c0bf38',1,'ir_Coolix.h']]], - ['kcoolixtempmap_5017',['kCoolixTempMap',['../ir__Coolix_8h.html#a9c8931df1dbed38c8119f6605266c710',1,'ir_Coolix.h']]], - ['kcoolixtempmax_5018',['kCoolixTempMax',['../ir__Coolix_8h.html#afbbb02bfeaaf5cb558ca28cdd5cfc4c3',1,'ir_Coolix.h']]], - ['kcoolixtempmin_5019',['kCoolixTempMin',['../ir__Coolix_8h.html#accd37cf257fa5fbeb64e28f0d63888fb',1,'ir_Coolix.h']]], - ['kcoolixtemprange_5020',['kCoolixTempRange',['../ir__Coolix_8h.html#a74e3e75466fd27672968d660e3fddc9a',1,'ir_Coolix.h']]], - ['kcoolixtick_5021',['kCoolixTick',['../ir__Coolix_8cpp.html#a61ddf842920e2b3e33fdb856bd911eae',1,'ir_Coolix.cpp']]], - ['kcoolixturbo_5022',['kCoolixTurbo',['../ir__Coolix_8h.html#ade957b6f4a6cdb064c709972a5c31a4b',1,'ir_Coolix.h']]], - ['kcoolixzerospace_5023',['kCoolixZeroSpace',['../ir__Coolix_8cpp.html#a1a9ccf6b91e786f310ffe53d55cfd6d1',1,'ir_Coolix.cpp']]], - ['kcoolixzerospaceticks_5024',['kCoolixZeroSpaceTicks',['../ir__Coolix_8cpp.html#af1a750cb3e1f142326cd177118c27136',1,'ir_Coolix.cpp']]], - ['kcoolstr_5025',['kCoolStr',['../IRtext_8cpp.html#a31258a2210b16dc977bcfd96938a8937',1,'kCoolStr(): IRtext.cpp'],['../IRtext_8h.html#ac25d86b97b8e53292dc8d0604ae263a3',1,'kCoolStr(): IRtext.cpp']]], - ['kcoronaacbitmark_5026',['kCoronaAcBitMark',['../ir__Corona_8cpp.html#a1ecb863f625463289d34e210885238db',1,'ir_Corona.cpp']]], - ['kcoronaacbits_5027',['kCoronaAcBits',['../IRremoteESP8266_8h.html#aaf59be616d7e3a5e605b8d1e08f20686',1,'IRremoteESP8266.h']]], - ['kcoronaacbitsshort_5028',['kCoronaAcBitsShort',['../IRremoteESP8266_8h.html#a1191a9293b03aa14426083b6f411a4e3',1,'IRremoteESP8266.h']]], - ['kcoronaacfanauto_5029',['kCoronaAcFanAuto',['../ir__Corona_8h.html#a8c97a0c674c000e4486159d628f1aa0a',1,'ir_Corona.h']]], - ['kcoronaacfanhigh_5030',['kCoronaAcFanHigh',['../ir__Corona_8h.html#a4f58be196a744892402e287b12502dcb',1,'ir_Corona.h']]], - ['kcoronaacfanlow_5031',['kCoronaAcFanLow',['../ir__Corona_8h.html#af9e5c729be856bf4b1bc10568f96c183',1,'ir_Corona.h']]], - ['kcoronaacfanmedium_5032',['kCoronaAcFanMedium',['../ir__Corona_8h.html#a9d6b46c006bd6ea54a14b92a2d7a3dff',1,'ir_Corona.h']]], - ['kcoronaacfreq_5033',['kCoronaAcFreq',['../ir__Corona_8cpp.html#a0cb56860c88e9503743bcf94068bbf56',1,'ir_Corona.cpp']]], - ['kcoronaachdrmark_5034',['kCoronaAcHdrMark',['../ir__Corona_8cpp.html#a697d84f13a1228dbae3cfb491124689a',1,'ir_Corona.cpp']]], - ['kcoronaachdrspace_5035',['kCoronaAcHdrSpace',['../ir__Corona_8cpp.html#ad2425c406aa36c7752832d19f4a735f7',1,'ir_Corona.cpp']]], - ['kcoronaacmaxtemp_5036',['kCoronaAcMaxTemp',['../ir__Corona_8h.html#aa6d199e5bb8382443da4e1f303dd7988',1,'ir_Corona.h']]], - ['kcoronaacmintemp_5037',['kCoronaAcMinTemp',['../ir__Corona_8h.html#ae984b624da5e2d5ef1405e1b8d9424ba',1,'ir_Corona.h']]], - ['kcoronaacmodecool_5038',['kCoronaAcModeCool',['../ir__Corona_8h.html#a6f8bb2e27990014686828b4b7e2c84c6',1,'ir_Corona.h']]], - ['kcoronaacmodedry_5039',['kCoronaAcModeDry',['../ir__Corona_8h.html#afd47996b221103ae142363f04014fb4b',1,'ir_Corona.h']]], - ['kcoronaacmodefan_5040',['kCoronaAcModeFan',['../ir__Corona_8h.html#ab8098af3e0f9cd82a7c9c771ffd8ad15',1,'ir_Corona.h']]], - ['kcoronaacmodeheat_5041',['kCoronaAcModeHeat',['../ir__Corona_8h.html#a7f3c7c051ae3ee07621c47505a87bec1',1,'ir_Corona.h']]], - ['kcoronaacofftimersection_5042',['kCoronaAcOffTimerSection',['../ir__Corona_8h.html#ac2cfdbf9b3ed3d85c0e298c3de8f357b',1,'ir_Corona.h']]], - ['kcoronaaconespace_5043',['kCoronaAcOneSpace',['../ir__Corona_8cpp.html#a6d9c199bdefbbb30b9561c5498c5a76e',1,'ir_Corona.cpp']]], - ['kcoronaacontimersection_5044',['kCoronaAcOnTimerSection',['../ir__Corona_8h.html#a711b7b5bd2081ca9b1e7ab25573ff612',1,'ir_Corona.h']]], - ['kcoronaacoverhead_5045',['kCoronaAcOverhead',['../ir__Corona_8cpp.html#aaef71b297a7868863a2ad7219bafabeb',1,'ir_Corona.cpp']]], - ['kcoronaacoverheadshort_5046',['kCoronaAcOverheadShort',['../ir__Corona_8cpp.html#a56010f67a047f551db681bb0ec8c35f7',1,'ir_Corona.cpp']]], - ['kcoronaacsectionbytes_5047',['kCoronaAcSectionBytes',['../ir__Corona_8h.html#a094063159064053dd5e5059eb0d90f7c',1,'ir_Corona.h']]], - ['kcoronaacsectiondata0base_5048',['kCoronaAcSectionData0Base',['../ir__Corona_8h.html#a2d0b1f5a0839839a17947bde624d4c74',1,'ir_Corona.h']]], - ['kcoronaacsectionheader0_5049',['kCoronaAcSectionHeader0',['../ir__Corona_8h.html#a39a2c0d214a10f8f9685e9955c0be0a4',1,'ir_Corona.h']]], - ['kcoronaacsectionheader1_5050',['kCoronaAcSectionHeader1',['../ir__Corona_8h.html#a8a661569fc7b97ba2e9e755b944162f8',1,'ir_Corona.h']]], - ['kcoronaacsectionlabelbase_5051',['kCoronaAcSectionLabelBase',['../ir__Corona_8h.html#a6ff8a3461b87df048878faf49c12d064',1,'ir_Corona.h']]], - ['kcoronaacsections_5052',['kCoronaAcSections',['../ir__Corona_8h.html#a37e6cc5e2e186b2f5c5c938496ece111',1,'ir_Corona.h']]], - ['kcoronaacsettingssection_5053',['kCoronaAcSettingsSection',['../ir__Corona_8h.html#a5a83a045fd9878eae073f25e6c5b4753',1,'ir_Corona.h']]], - ['kcoronaacspacegap_5054',['kCoronaAcSpaceGap',['../ir__Corona_8cpp.html#a50f46039059d2a427bc9bc93c53df4fd',1,'ir_Corona.cpp']]], - ['kcoronaacstatelength_5055',['kCoronaAcStateLength',['../IRremoteESP8266_8h.html#ab18df94a82b365ff30caaabb05a9fcaf',1,'IRremoteESP8266.h']]], - ['kcoronaacstatelengthshort_5056',['kCoronaAcStateLengthShort',['../IRremoteESP8266_8h.html#a32b65ada4941a9622fbbc60f01b82425',1,'IRremoteESP8266.h']]], - ['kcoronaactimermax_5057',['kCoronaAcTimerMax',['../ir__Corona_8h.html#af0428879b0fd39def7ea41e2906d9127',1,'ir_Corona.h']]], - ['kcoronaactimeroff_5058',['kCoronaAcTimerOff',['../ir__Corona_8h.html#af0feaf445fae561c3fa18ec68a19edef',1,'ir_Corona.h']]], - ['kcoronaactimerunitspermin_5059',['kCoronaAcTimerUnitsPerMin',['../ir__Corona_8h.html#a7f76e80480abdbdcdaf39186901950a4',1,'ir_Corona.h']]], - ['kcoronaaczerospace_5060',['kCoronaAcZeroSpace',['../ir__Corona_8cpp.html#af64bbcaf63ca9d06089de382354eb2d9',1,'ir_Corona.cpp']]], - ['kcoronatolerance_5061',['kCoronaTolerance',['../ir__Corona_8cpp.html#aad3726c95bfd7a9f79ba1e0c7058bb7b',1,'ir_Corona.cpp']]], - ['kdaikin128auto_5062',['kDaikin128Auto',['../ir__Daikin_8h.html#a1d2a0f9db8e1be93bff12ec23ba212e0',1,'ir_Daikin.h']]], - ['kdaikin128bitceiling_5063',['kDaikin128BitCeiling',['../ir__Daikin_8h.html#a0e1d1c1e7544eb455187290dbe4a1520',1,'ir_Daikin.h']]], - ['kdaikin128bitmark_5064',['kDaikin128BitMark',['../ir__Daikin_8h.html#a5178ac70eb4e134597e504d373d52fcd',1,'ir_Daikin.h']]], - ['kdaikin128bits_5065',['kDaikin128Bits',['../IRremoteESP8266_8h.html#a5bb2e6f8acbc0123de5ac0fd76e1646a',1,'IRremoteESP8266.h']]], - ['kdaikin128bitwall_5066',['kDaikin128BitWall',['../ir__Daikin_8h.html#a842b3b696f95c5515ee4180626d78973',1,'ir_Daikin.h']]], - ['kdaikin128cool_5067',['kDaikin128Cool',['../ir__Daikin_8h.html#a24ee5ffe877d7caa964256e5723af7e1',1,'ir_Daikin.h']]], - ['kdaikin128defaultrepeat_5068',['kDaikin128DefaultRepeat',['../IRremoteESP8266_8h.html#a5c116cb58be005468de125f6ee651ccb',1,'IRremoteESP8266.h']]], - ['kdaikin128dry_5069',['kDaikin128Dry',['../ir__Daikin_8h.html#ac4da761bf3b0ce12e6513a2718b3a907',1,'ir_Daikin.h']]], - ['kdaikin128fan_5070',['kDaikin128Fan',['../ir__Daikin_8h.html#ac1c41d54f27d1653181ac69384f1130f',1,'ir_Daikin.h']]], - ['kdaikin128fanauto_5071',['kDaikin128FanAuto',['../ir__Daikin_8h.html#aec2fe4618978c17e60a1ea8b1a89c263',1,'ir_Daikin.h']]], - ['kdaikin128fanhigh_5072',['kDaikin128FanHigh',['../ir__Daikin_8h.html#a7ffd52eb15f6ffb5a0ffcddf39aa8f0d',1,'ir_Daikin.h']]], - ['kdaikin128fanlow_5073',['kDaikin128FanLow',['../ir__Daikin_8h.html#a505c58ff23c5a551c6e2e356f66e9cc1',1,'ir_Daikin.h']]], - ['kdaikin128fanmed_5074',['kDaikin128FanMed',['../ir__Daikin_8h.html#a4eb21add9bfb6774047a8a2c8b87ebbf',1,'ir_Daikin.h']]], - ['kdaikin128fanpowerful_5075',['kDaikin128FanPowerful',['../ir__Daikin_8h.html#ae0899153669a6e8848556cd65c26c8b5',1,'ir_Daikin.h']]], - ['kdaikin128fanquiet_5076',['kDaikin128FanQuiet',['../ir__Daikin_8h.html#a54777f468236bf4b342240e8c523308d',1,'ir_Daikin.h']]], - ['kdaikin128footermark_5077',['kDaikin128FooterMark',['../ir__Daikin_8h.html#ad5668b12e38afa4b44a8e214dac22f2e',1,'ir_Daikin.h']]], - ['kdaikin128freq_5078',['kDaikin128Freq',['../ir__Daikin_8h.html#a5a76fc08310d517cb7e182c287e77df1',1,'ir_Daikin.h']]], - ['kdaikin128gap_5079',['kDaikin128Gap',['../ir__Daikin_8h.html#a6323c59eb5906ac2887a02f9cd09a329',1,'ir_Daikin.h']]], - ['kdaikin128hdrmark_5080',['kDaikin128HdrMark',['../ir__Daikin_8h.html#a6257375541b6e10bda4083d9529e80f0',1,'ir_Daikin.h']]], - ['kdaikin128hdrspace_5081',['kDaikin128HdrSpace',['../ir__Daikin_8h.html#a114a4cef444d4c552b90701cb7debc73',1,'ir_Daikin.h']]], - ['kdaikin128heat_5082',['kDaikin128Heat',['../ir__Daikin_8h.html#ada28db809b26e2ae9e927650d4cb4f7a',1,'ir_Daikin.h']]], - ['kdaikin128leadermark_5083',['kDaikin128LeaderMark',['../ir__Daikin_8h.html#ab609b8979a2d2bf4fa5b7164590b2bfb',1,'ir_Daikin.h']]], - ['kdaikin128leaderspace_5084',['kDaikin128LeaderSpace',['../ir__Daikin_8h.html#a259bfa510a9ec06049c0a7bf6563eb35',1,'ir_Daikin.h']]], - ['kdaikin128maxtemp_5085',['kDaikin128MaxTemp',['../ir__Daikin_8h.html#a7dcd514d292ef98d70083227d046baad',1,'ir_Daikin.h']]], - ['kdaikin128mintemp_5086',['kDaikin128MinTemp',['../ir__Daikin_8h.html#aad27f3ff311f1defc5ac9fb3be0ad504',1,'ir_Daikin.h']]], - ['kdaikin128onespace_5087',['kDaikin128OneSpace',['../ir__Daikin_8h.html#ac6a9a48ae0037b889a6619361fd090ac',1,'ir_Daikin.h']]], - ['kdaikin128sectionlength_5088',['kDaikin128SectionLength',['../ir__Daikin_8h.html#a204a306e7d7071d4b798f7947c232520',1,'ir_Daikin.h']]], - ['kdaikin128sections_5089',['kDaikin128Sections',['../ir__Daikin_8h.html#a81f0cfda4d8452d6053cc6999a270b1f',1,'ir_Daikin.h']]], - ['kdaikin128statelength_5090',['kDaikin128StateLength',['../IRremoteESP8266_8h.html#a4279ccd14a3af2046e393661a7b4879f',1,'IRremoteESP8266.h']]], - ['kdaikin128zerospace_5091',['kDaikin128ZeroSpace',['../ir__Daikin_8h.html#a1ca69805ada8ec451199c18d9da6f02a',1,'ir_Daikin.h']]], - ['kdaikin152bitmark_5092',['kDaikin152BitMark',['../ir__Daikin_8h.html#afd50318eaa383a7e85f0d0c2866bc9d5',1,'ir_Daikin.h']]], - ['kdaikin152bits_5093',['kDaikin152Bits',['../IRremoteESP8266_8h.html#af056e1ac2d00c6d6440c3dd2ae283f09',1,'IRremoteESP8266.h']]], - ['kdaikin152defaultrepeat_5094',['kDaikin152DefaultRepeat',['../IRremoteESP8266_8h.html#a9407eebab271524e74bc3ddddb1a2e0b',1,'IRremoteESP8266.h']]], - ['kdaikin152drytemp_5095',['kDaikin152DryTemp',['../ir__Daikin_8h.html#a86e9308c00dbdd79546687af412c4156',1,'ir_Daikin.h']]], - ['kdaikin152fantemp_5096',['kDaikin152FanTemp',['../ir__Daikin_8h.html#ad5c5bb7e8b181c79fe68607c1a4d202f',1,'ir_Daikin.h']]], - ['kdaikin152freq_5097',['kDaikin152Freq',['../ir__Daikin_8h.html#aa45492ae186142971975b7da56658a0b',1,'ir_Daikin.h']]], - ['kdaikin152gap_5098',['kDaikin152Gap',['../ir__Daikin_8h.html#aee02d3b17db4a382035c00329c6c2a0a',1,'ir_Daikin.h']]], - ['kdaikin152hdrmark_5099',['kDaikin152HdrMark',['../ir__Daikin_8h.html#a85fad797a9b43cb317fdb2e2c254a3bb',1,'ir_Daikin.h']]], - ['kdaikin152hdrspace_5100',['kDaikin152HdrSpace',['../ir__Daikin_8h.html#a0eb0b1b5fabab75a5956b6b939696a12',1,'ir_Daikin.h']]], - ['kdaikin152leaderbits_5101',['kDaikin152LeaderBits',['../ir__Daikin_8h.html#a432454efd5ea7457d34fe014b0d328c1',1,'ir_Daikin.h']]], - ['kdaikin152onespace_5102',['kDaikin152OneSpace',['../ir__Daikin_8h.html#a1f96172c74b261a26ec6d71201f7c589',1,'ir_Daikin.h']]], - ['kdaikin152statelength_5103',['kDaikin152StateLength',['../IRremoteESP8266_8h.html#ae7579708922ffd3e44295f8770878983',1,'IRremoteESP8266.h']]], - ['kdaikin152zerospace_5104',['kDaikin152ZeroSpace',['../ir__Daikin_8h.html#aec201aee71c0e301e8e191ddcaadb2de',1,'ir_Daikin.h']]], - ['kdaikin160bitmark_5105',['kDaikin160BitMark',['../ir__Daikin_8h.html#a852c2268ed7a8dd42c629e8a0706b6f5',1,'ir_Daikin.h']]], - ['kdaikin160bits_5106',['kDaikin160Bits',['../IRremoteESP8266_8h.html#aa6f1d6dded2ae3500cd52aa0c482a1b6',1,'IRremoteESP8266.h']]], - ['kdaikin160defaultrepeat_5107',['kDaikin160DefaultRepeat',['../IRremoteESP8266_8h.html#a82f4f1d8fae51c7e2f1f6753ca6e6053',1,'IRremoteESP8266.h']]], - ['kdaikin160freq_5108',['kDaikin160Freq',['../ir__Daikin_8h.html#a69e8abb57aecc6b99c60c5df7e18ff39',1,'ir_Daikin.h']]], - ['kdaikin160gap_5109',['kDaikin160Gap',['../ir__Daikin_8h.html#a8d107f0d63ef6951d657a55a370e8a8b',1,'ir_Daikin.h']]], - ['kdaikin160hdrmark_5110',['kDaikin160HdrMark',['../ir__Daikin_8h.html#a96043b43ba4d963456206e2d02639325',1,'ir_Daikin.h']]], - ['kdaikin160hdrspace_5111',['kDaikin160HdrSpace',['../ir__Daikin_8h.html#aefa7b5de43483951e00bd5d2cdbe5665',1,'ir_Daikin.h']]], - ['kdaikin160onespace_5112',['kDaikin160OneSpace',['../ir__Daikin_8h.html#a068c2252191675dca6503bfc37e4785e',1,'ir_Daikin.h']]], - ['kdaikin160section1length_5113',['kDaikin160Section1Length',['../ir__Daikin_8h.html#a06b59ee56cddcdcd9dfa375663da0c2d',1,'ir_Daikin.h']]], - ['kdaikin160section2length_5114',['kDaikin160Section2Length',['../ir__Daikin_8h.html#a7d6194a363661e11167cc972f1b92f68',1,'ir_Daikin.h']]], - ['kdaikin160sections_5115',['kDaikin160Sections',['../ir__Daikin_8h.html#afcc5de2994c1cd618437f1c67a5754d0',1,'ir_Daikin.h']]], - ['kdaikin160statelength_5116',['kDaikin160StateLength',['../IRremoteESP8266_8h.html#a09f022a12a40a8fae09bfbddfbee6d62',1,'IRremoteESP8266.h']]], - ['kdaikin160swingvauto_5117',['kDaikin160SwingVAuto',['../ir__Daikin_8h.html#aa6d9ee84d2c15c69ed8dbbc832285baf',1,'ir_Daikin.h']]], - ['kdaikin160swingvhigh_5118',['kDaikin160SwingVHigh',['../ir__Daikin_8h.html#abf542bd70d12534af72fb4ec8df5d265',1,'ir_Daikin.h']]], - ['kdaikin160swingvhighest_5119',['kDaikin160SwingVHighest',['../ir__Daikin_8h.html#a2a48ca041acbde68b902a4d0be4aeec5',1,'ir_Daikin.h']]], - ['kdaikin160swingvlow_5120',['kDaikin160SwingVLow',['../ir__Daikin_8h.html#a04ff7cb63db6b281ced56283288f05c0',1,'ir_Daikin.h']]], - ['kdaikin160swingvlowest_5121',['kDaikin160SwingVLowest',['../ir__Daikin_8h.html#ac4f34c7862802b21dede2ac0b534c8d8',1,'ir_Daikin.h']]], - ['kdaikin160swingvmiddle_5122',['kDaikin160SwingVMiddle',['../ir__Daikin_8h.html#a620b644f07f9b664f09417bb362dc216',1,'ir_Daikin.h']]], - ['kdaikin160zerospace_5123',['kDaikin160ZeroSpace',['../ir__Daikin_8h.html#a2b4591126c0b26ab16b5611dbfa4d5f6',1,'ir_Daikin.h']]], - ['kdaikin176auto_5124',['kDaikin176Auto',['../ir__Daikin_8h.html#a692292ea29754f646f3611326899a3c4',1,'ir_Daikin.h']]], - ['kdaikin176bitmark_5125',['kDaikin176BitMark',['../ir__Daikin_8h.html#a4be0185fb8f65c0286cbf55dfd63a40f',1,'ir_Daikin.h']]], - ['kdaikin176bits_5126',['kDaikin176Bits',['../IRremoteESP8266_8h.html#a78baf9c97c548618428d2fcfd7cc91d7',1,'IRremoteESP8266.h']]], - ['kdaikin176cool_5127',['kDaikin176Cool',['../ir__Daikin_8h.html#ab67e912a9abdda7dcbe52ce90b70a3b5',1,'ir_Daikin.h']]], - ['kdaikin176defaultrepeat_5128',['kDaikin176DefaultRepeat',['../IRremoteESP8266_8h.html#a0228803e8fff3c73227214d4bb3d8b05',1,'IRremoteESP8266.h']]], - ['kdaikin176dry_5129',['kDaikin176Dry',['../ir__Daikin_8h.html#a23bf5f3e572d11fb38476a5118382b35',1,'ir_Daikin.h']]], - ['kdaikin176dryfantemp_5130',['kDaikin176DryFanTemp',['../ir__Daikin_8h.html#a462ad30312f13443f51b510e5b391f42',1,'ir_Daikin.h']]], - ['kdaikin176fan_5131',['kDaikin176Fan',['../ir__Daikin_8h.html#ace1184864858e862a66be779cbe698b1',1,'ir_Daikin.h']]], - ['kdaikin176fanmax_5132',['kDaikin176FanMax',['../ir__Daikin_8h.html#a97e77d2a09bc753c17104f9695a0c0b1',1,'ir_Daikin.h']]], - ['kdaikin176freq_5133',['kDaikin176Freq',['../ir__Daikin_8h.html#a7f0c76e579dad510f21c34ba57cbf8dc',1,'ir_Daikin.h']]], - ['kdaikin176gap_5134',['kDaikin176Gap',['../ir__Daikin_8h.html#a0309c9d689f64e2d57ab09a2bb27bc18',1,'ir_Daikin.h']]], - ['kdaikin176hdrmark_5135',['kDaikin176HdrMark',['../ir__Daikin_8h.html#a9ff1ca660571d09caa0de39ce1370720',1,'ir_Daikin.h']]], - ['kdaikin176hdrspace_5136',['kDaikin176HdrSpace',['../ir__Daikin_8h.html#a64c4874b5d92682911ca84e826e1ff0b',1,'ir_Daikin.h']]], - ['kdaikin176heat_5137',['kDaikin176Heat',['../ir__Daikin_8h.html#a16500da7848870fdda27209906d56ead',1,'ir_Daikin.h']]], - ['kdaikin176modebutton_5138',['kDaikin176ModeButton',['../ir__Daikin_8h.html#a5c8602d17e9f70eefd735741b9d714eb',1,'ir_Daikin.h']]], - ['kdaikin176onespace_5139',['kDaikin176OneSpace',['../ir__Daikin_8h.html#a86ed046d66daf884ac0f06722991f5ba',1,'ir_Daikin.h']]], - ['kdaikin176section1length_5140',['kDaikin176Section1Length',['../ir__Daikin_8h.html#a4c5ce7df75834c77c0908cc40dbe02ed',1,'ir_Daikin.h']]], - ['kdaikin176section2length_5141',['kDaikin176Section2Length',['../ir__Daikin_8h.html#a9e2bb25a1d64d2c042e7eef38f5347d0',1,'ir_Daikin.h']]], - ['kdaikin176sections_5142',['kDaikin176Sections',['../ir__Daikin_8h.html#a177d12ac0f4fe8b5c5aeaf8f72579607',1,'ir_Daikin.h']]], - ['kdaikin176statelength_5143',['kDaikin176StateLength',['../IRremoteESP8266_8h.html#aa71fc87dcb6f14b82997e1d2269429d2',1,'IRremoteESP8266.h']]], - ['kdaikin176swinghauto_5144',['kDaikin176SwingHAuto',['../ir__Daikin_8h.html#a326ffcf00330a1759e4f71f8f8603f23',1,'ir_Daikin.h']]], - ['kdaikin176swinghoff_5145',['kDaikin176SwingHOff',['../ir__Daikin_8h.html#a8672ccb9016808c84b1b06de6584188a',1,'ir_Daikin.h']]], - ['kdaikin176zerospace_5146',['kDaikin176ZeroSpace',['../ir__Daikin_8h.html#a4db8836caa6cae0bab6fbde94409c879',1,'ir_Daikin.h']]], - ['kdaikin216bitmark_5147',['kDaikin216BitMark',['../ir__Daikin_8h.html#ada7cf9c593d716617ff4436755eef4f9',1,'ir_Daikin.h']]], - ['kdaikin216bits_5148',['kDaikin216Bits',['../IRremoteESP8266_8h.html#a317bf475ee4c6ddd802995dc535377d9',1,'IRremoteESP8266.h']]], - ['kdaikin216defaultrepeat_5149',['kDaikin216DefaultRepeat',['../IRremoteESP8266_8h.html#a9d14d424d5a93de62f3e6f453db112db',1,'IRremoteESP8266.h']]], - ['kdaikin216freq_5150',['kDaikin216Freq',['../ir__Daikin_8h.html#aa3a9753c90ecb6d7f5ee3e5a16c79217',1,'ir_Daikin.h']]], - ['kdaikin216gap_5151',['kDaikin216Gap',['../ir__Daikin_8h.html#ab807adaab8afbeb97afaa9ddb2ec2c63',1,'ir_Daikin.h']]], - ['kdaikin216hdrmark_5152',['kDaikin216HdrMark',['../ir__Daikin_8h.html#a24163655b3d374aa643506c2bf4a2406',1,'ir_Daikin.h']]], - ['kdaikin216hdrspace_5153',['kDaikin216HdrSpace',['../ir__Daikin_8h.html#a2e69973e9a4aee29668597d09fcd70a4',1,'ir_Daikin.h']]], - ['kdaikin216onespace_5154',['kDaikin216OneSpace',['../ir__Daikin_8h.html#a1edeb73093bdea23e6cfb39c31ca1fce',1,'ir_Daikin.h']]], - ['kdaikin216section1length_5155',['kDaikin216Section1Length',['../ir__Daikin_8h.html#a5aacc812feb33ef954adc49086036859',1,'ir_Daikin.h']]], - ['kdaikin216section2length_5156',['kDaikin216Section2Length',['../ir__Daikin_8h.html#aade497bb9aad663a9e1e9403188d2154',1,'ir_Daikin.h']]], - ['kdaikin216sections_5157',['kDaikin216Sections',['../ir__Daikin_8h.html#a0ecd54bb733b982e3e5adf0c13ac9f6b',1,'ir_Daikin.h']]], - ['kdaikin216statelength_5158',['kDaikin216StateLength',['../IRremoteESP8266_8h.html#a70a1a65c1947b440e4ff27477de5ddc7',1,'IRremoteESP8266.h']]], - ['kdaikin216swingoff_5159',['kDaikin216SwingOff',['../ir__Daikin_8h.html#a84d6bb74c705dfbcd558f0b411a2a88e',1,'ir_Daikin.h']]], - ['kdaikin216swingon_5160',['kDaikin216SwingOn',['../ir__Daikin_8h.html#a4b2d77aafd84ed004390b5d4c7ad0455',1,'ir_Daikin.h']]], - ['kdaikin216zerospace_5161',['kDaikin216ZeroSpace',['../ir__Daikin_8h.html#a448250dbb5a3a9733f21a0e347d17999',1,'ir_Daikin.h']]], - ['kdaikin2bitmark_5162',['kDaikin2BitMark',['../ir__Daikin_8h.html#a226f10b7216d4f039cf79af823673a18',1,'ir_Daikin.h']]], - ['kdaikin2bits_5163',['kDaikin2Bits',['../IRremoteESP8266_8h.html#affd9b805fff390d05a83ff4eaa1c98de',1,'IRremoteESP8266.h']]], - ['kdaikin2defaultrepeat_5164',['kDaikin2DefaultRepeat',['../IRremoteESP8266_8h.html#a2dde8fd00f8a28e35da04cff9a3a1908',1,'IRremoteESP8266.h']]], - ['kdaikin2freq_5165',['kDaikin2Freq',['../ir__Daikin_8h.html#ab82e4836d9023c4ba3041d1226761461',1,'ir_Daikin.h']]], - ['kdaikin2gap_5166',['kDaikin2Gap',['../ir__Daikin_8h.html#afe14712c1be4ca14d5cd41e77d4bada0',1,'ir_Daikin.h']]], - ['kdaikin2hdrmark_5167',['kDaikin2HdrMark',['../ir__Daikin_8h.html#ab679ef183af5b94f53697d434e6540c3',1,'ir_Daikin.h']]], - ['kdaikin2hdrspace_5168',['kDaikin2HdrSpace',['../ir__Daikin_8h.html#a557f8eeaf55ff7fda0cacd0245ac27d3',1,'ir_Daikin.h']]], - ['kdaikin2leadermark_5169',['kDaikin2LeaderMark',['../ir__Daikin_8h.html#a533c7ea8f968502d4b31e14eb2b1f614',1,'ir_Daikin.h']]], - ['kdaikin2leaderspace_5170',['kDaikin2LeaderSpace',['../ir__Daikin_8h.html#a9d48d64e470ff0318bd62b3385433f57',1,'ir_Daikin.h']]], - ['kdaikin2mincooltemp_5171',['kDaikin2MinCoolTemp',['../ir__Daikin_8h.html#a78b37644f9327537d35bec4c0fd8faee',1,'ir_Daikin.h']]], - ['kdaikin2onespace_5172',['kDaikin2OneSpace',['../ir__Daikin_8h.html#a70a96368500562fa95f88dc2f203c194',1,'ir_Daikin.h']]], - ['kdaikin2section1length_5173',['kDaikin2Section1Length',['../ir__Daikin_8h.html#a463878e9bfb22ca3c64a40259598872c',1,'ir_Daikin.h']]], - ['kdaikin2section2length_5174',['kDaikin2Section2Length',['../ir__Daikin_8h.html#a8cb956f86fdf487b1ea7ac388eeda2b5',1,'ir_Daikin.h']]], - ['kdaikin2sections_5175',['kDaikin2Sections',['../ir__Daikin_8h.html#a770cef4efa5d5668b063cf0e26f1b134',1,'ir_Daikin.h']]], - ['kdaikin2statelength_5176',['kDaikin2StateLength',['../IRremoteESP8266_8h.html#a349e4d17f83bb3e707ff19c0255c1644',1,'IRremoteESP8266.h']]], - ['kdaikin2swinghauto_5177',['kDaikin2SwingHAuto',['../ir__Daikin_8h.html#a834a3138b0f9bfdac98d26aa63bc951e',1,'ir_Daikin.h']]], - ['kdaikin2swinghleft_5178',['kDaikin2SwingHLeft',['../ir__Daikin_8h.html#aa9b294b2f12660081171df290a7e874f',1,'ir_Daikin.h']]], - ['kdaikin2swinghleftmax_5179',['kDaikin2SwingHLeftMax',['../ir__Daikin_8h.html#aac08696fc9734996537204c089db2f7c',1,'ir_Daikin.h']]], - ['kdaikin2swinghmiddle_5180',['kDaikin2SwingHMiddle',['../ir__Daikin_8h.html#ab882d68819344e622182b07ded30cccf',1,'ir_Daikin.h']]], - ['kdaikin2swinghoff_5181',['kDaikin2SwingHOff',['../ir__Daikin_8h.html#ae49a187598033a7cd1c6bd33295670cf',1,'ir_Daikin.h']]], - ['kdaikin2swinghright_5182',['kDaikin2SwingHRight',['../ir__Daikin_8h.html#a8d7c79266bedbb722dc1a74c8b727a27',1,'ir_Daikin.h']]], - ['kdaikin2swinghrightmax_5183',['kDaikin2SwingHRightMax',['../ir__Daikin_8h.html#a843ad9ee10eccd799814ca9fff57f481',1,'ir_Daikin.h']]], - ['kdaikin2swinghswing_5184',['kDaikin2SwingHSwing',['../ir__Daikin_8h.html#a3776d46e94a771a6dc94d14257f34d09',1,'ir_Daikin.h']]], - ['kdaikin2swinghwide_5185',['kDaikin2SwingHWide',['../ir__Daikin_8h.html#a93157e048486e564757ba737551cf481',1,'ir_Daikin.h']]], - ['kdaikin2swingvauto_5186',['kDaikin2SwingVAuto',['../ir__Daikin_8h.html#aa91228576ef22854a693c86df5276cbb',1,'ir_Daikin.h']]], - ['kdaikin2swingvbreeze_5187',['kDaikin2SwingVBreeze',['../ir__Daikin_8h.html#a5646d38fff6a985314158796665d9d76',1,'ir_Daikin.h']]], - ['kdaikin2swingvcirculate_5188',['kDaikin2SwingVCirculate',['../ir__Daikin_8h.html#a717bb32ce20e6d65ee78a9e8ba0f5490',1,'ir_Daikin.h']]], - ['kdaikin2swingvhigh_5189',['kDaikin2SwingVHigh',['../ir__Daikin_8h.html#a2d25d46fb289c3450ed6817a45982e27',1,'ir_Daikin.h']]], - ['kdaikin2swingvhighest_5190',['kDaikin2SwingVHighest',['../ir__Daikin_8h.html#a19a1466e7c23d4713026d6713ee301dc',1,'ir_Daikin.h']]], - ['kdaikin2swingvlow_5191',['kDaikin2SwingVLow',['../ir__Daikin_8h.html#accae3be213670675f8dfc974fe19f2cf',1,'ir_Daikin.h']]], - ['kdaikin2swingvlowermiddle_5192',['kDaikin2SwingVLowerMiddle',['../ir__Daikin_8h.html#afc89861dee46baa67b4beaa4a970a579',1,'ir_Daikin.h']]], - ['kdaikin2swingvlowest_5193',['kDaikin2SwingVLowest',['../ir__Daikin_8h.html#a7fd3777c7c574d773ede3d1c2d72301d',1,'ir_Daikin.h']]], - ['kdaikin2swingvoff_5194',['kDaikin2SwingVOff',['../ir__Daikin_8h.html#a30cfd294ea52a0ef736ebcc38a79aa71',1,'ir_Daikin.h']]], - ['kdaikin2swingvswing_5195',['kDaikin2SwingVSwing',['../ir__Daikin_8h.html#a2a62938481ba7b4374df50867295c07d',1,'ir_Daikin.h']]], - ['kdaikin2swingvuppermiddle_5196',['kDaikin2SwingVUpperMiddle',['../ir__Daikin_8h.html#a9f12c68db1a0af6e3defbc2bb8f3b8bc',1,'ir_Daikin.h']]], - ['kdaikin2tolerance_5197',['kDaikin2Tolerance',['../ir__Daikin_8h.html#ac428e884b15026c0610cc1b0b8b46154',1,'ir_Daikin.h']]], - ['kdaikin2zerospace_5198',['kDaikin2ZeroSpace',['../ir__Daikin_8h.html#a91b023ce8679d8d0e4434e014e746f99',1,'ir_Daikin.h']]], - ['kdaikin64bitmark_5199',['kDaikin64BitMark',['../ir__Daikin_8h.html#a6d89c1acd56b670b2aba65429d6fbf00',1,'ir_Daikin.h']]], - ['kdaikin64bits_5200',['kDaikin64Bits',['../IRremoteESP8266_8h.html#a89266e9211a81eda22475fb5a258484f',1,'IRremoteESP8266.h']]], - ['kdaikin64checksumoffset_5201',['kDaikin64ChecksumOffset',['../ir__Daikin_8h.html#a5c47c0a0b1d2a23620beb2496af958c5',1,'ir_Daikin.h']]], - ['kdaikin64checksumsize_5202',['kDaikin64ChecksumSize',['../ir__Daikin_8h.html#a0c068274c73deb732e70a7daf6684391',1,'ir_Daikin.h']]], - ['kdaikin64cool_5203',['kDaikin64Cool',['../ir__Daikin_8h.html#a1ed020e8e7b5b741e90c4a27ca9f3a91',1,'ir_Daikin.h']]], - ['kdaikin64defaultrepeat_5204',['kDaikin64DefaultRepeat',['../IRremoteESP8266_8h.html#aca64338c3e3bbe52f8ec5688317041b3',1,'IRremoteESP8266.h']]], - ['kdaikin64dry_5205',['kDaikin64Dry',['../ir__Daikin_8h.html#aa494c8e2a54209c7467fdd7f40655b0b',1,'ir_Daikin.h']]], - ['kdaikin64fan_5206',['kDaikin64Fan',['../ir__Daikin_8h.html#aa1f4bb12be0f74af35ee54a5540f8a7b',1,'ir_Daikin.h']]], - ['kdaikin64fanauto_5207',['kDaikin64FanAuto',['../ir__Daikin_8h.html#a6fbc965cb8194048ed27d586321c01b2',1,'ir_Daikin.h']]], - ['kdaikin64fanhigh_5208',['kDaikin64FanHigh',['../ir__Daikin_8h.html#a122d57c30d1f4ad8f20d44077b0a1970',1,'ir_Daikin.h']]], - ['kdaikin64fanlow_5209',['kDaikin64FanLow',['../ir__Daikin_8h.html#a5a692fdcb373acf101536adb4c18384f',1,'ir_Daikin.h']]], - ['kdaikin64fanmed_5210',['kDaikin64FanMed',['../ir__Daikin_8h.html#a9b2737ba57e38d4c3dfe7bc65de4c944',1,'ir_Daikin.h']]], - ['kdaikin64fanquiet_5211',['kDaikin64FanQuiet',['../ir__Daikin_8h.html#a1a7d78b2ed8ca5b83d6422d659ecb296',1,'ir_Daikin.h']]], - ['kdaikin64fanturbo_5212',['kDaikin64FanTurbo',['../ir__Daikin_8h.html#ae6d370916c0897bc82346136d7922f5d',1,'ir_Daikin.h']]], - ['kdaikin64freq_5213',['kDaikin64Freq',['../ir__Daikin_8h.html#a7b63829df4d0e1de61ed396c3b07e988',1,'ir_Daikin.h']]], - ['kdaikin64gap_5214',['kDaikin64Gap',['../ir__Daikin_8h.html#ae191cb5f6c65b944970158caaf56618d',1,'ir_Daikin.h']]], - ['kdaikin64hdrmark_5215',['kDaikin64HdrMark',['../ir__Daikin_8h.html#abe7b92798de08dfc5f044869891bdec5',1,'ir_Daikin.h']]], - ['kdaikin64hdrspace_5216',['kDaikin64HdrSpace',['../ir__Daikin_8h.html#a1eac122554acda264f9aa48261b2a884',1,'ir_Daikin.h']]], - ['kdaikin64heat_5217',['kDaikin64Heat',['../ir__Daikin_8h.html#a2640df7a3472259f114873bdb5cbb70f',1,'ir_Daikin.h']]], - ['kdaikin64knowngoodstate_5218',['kDaikin64KnownGoodState',['../ir__Daikin_8h.html#a09f0aa8c586b35b79bbceb19e822eb48',1,'ir_Daikin.h']]], - ['kdaikin64ldrmark_5219',['kDaikin64LdrMark',['../ir__Daikin_8h.html#aca20b8ee0fa9a8aa2d676ef12bd5ba97',1,'ir_Daikin.h']]], - ['kdaikin64ldrspace_5220',['kDaikin64LdrSpace',['../ir__Daikin_8h.html#ada1084c119abe58dadcb17eb4cfed072',1,'ir_Daikin.h']]], - ['kdaikin64maxtemp_5221',['kDaikin64MaxTemp',['../ir__Daikin_8h.html#a495e3b77590263a2c043c1ba12489fac',1,'ir_Daikin.h']]], - ['kdaikin64mintemp_5222',['kDaikin64MinTemp',['../ir__Daikin_8h.html#a209cb1798ae64de1f5274fb167ee62ea',1,'ir_Daikin.h']]], - ['kdaikin64onespace_5223',['kDaikin64OneSpace',['../ir__Daikin_8h.html#ab3129b72f5300893d04b47e72dd420e1',1,'ir_Daikin.h']]], - ['kdaikin64overhead_5224',['kDaikin64Overhead',['../ir__Daikin_8h.html#af0dafe45d0127430e05f2312e8ba99bb',1,'ir_Daikin.h']]], - ['kdaikin64tolerancedelta_5225',['kDaikin64ToleranceDelta',['../ir__Daikin_8h.html#ae0b22a140c2727de9a347e8ab8d554e9',1,'ir_Daikin.h']]], - ['kdaikin64zerospace_5226',['kDaikin64ZeroSpace',['../ir__Daikin_8h.html#a142e45c289af1e9802254b9c138003fa',1,'ir_Daikin.h']]], - ['kdaikinauto_5227',['kDaikinAuto',['../ir__Daikin_8h.html#af3a0e7c149d020002cdf345a15606542',1,'ir_Daikin.h']]], - ['kdaikinbeeploud_5228',['kDaikinBeepLoud',['../ir__Daikin_8h.html#a4eb2b3899076882e3ed23220138ebac1',1,'ir_Daikin.h']]], - ['kdaikinbeepoff_5229',['kDaikinBeepOff',['../ir__Daikin_8h.html#a8271934c8bbd4b8e4d6aacdee5a038cf',1,'ir_Daikin.h']]], - ['kdaikinbeepquiet_5230',['kDaikinBeepQuiet',['../ir__Daikin_8h.html#a11008f7d6afc934426b88704d47301e7',1,'ir_Daikin.h']]], - ['kdaikinbitmark_5231',['kDaikinBitMark',['../ir__Daikin_8h.html#ae109b9ea2120f989dac2529345e38adb',1,'ir_Daikin.h']]], - ['kdaikinbits_5232',['kDaikinBits',['../IRremoteESP8266_8h.html#a657f8e60bc1f896d4a46ec101c289485',1,'IRremoteESP8266.h']]], - ['kdaikinbitsshort_5233',['kDaikinBitsShort',['../IRremoteESP8266_8h.html#aebaa8eb786747761fb369cfd34181cb7',1,'IRremoteESP8266.h']]], - ['kdaikinbytechecksum1_5234',['kDaikinByteChecksum1',['../ir__Daikin_8h.html#a887d8d38cf4330e1107443471fa119ca',1,'ir_Daikin.h']]], - ['kdaikinbytechecksum2_5235',['kDaikinByteChecksum2',['../ir__Daikin_8h.html#ab27225f21b29e617bf03fc68cc6e8e0f',1,'ir_Daikin.h']]], - ['kdaikincool_5236',['kDaikinCool',['../ir__Daikin_8h.html#aa57615a0a9f79b97139580a807bf095f',1,'ir_Daikin.h']]], - ['kdaikincurbit_5237',['kDaikinCurBit',['../ir__Daikin_8h.html#afccfde2b46f5fcb425f02a79a9c20494',1,'ir_Daikin.h']]], - ['kdaikincurindex_5238',['kDaikinCurIndex',['../ir__Daikin_8h.html#a5c01a0bfbd92b337d2e4a5c3df381865',1,'ir_Daikin.h']]], - ['kdaikindefaultrepeat_5239',['kDaikinDefaultRepeat',['../IRremoteESP8266_8h.html#af691d5202b7f121a16b2d9871ee14d9c',1,'IRremoteESP8266.h']]], - ['kdaikindry_5240',['kDaikinDry',['../ir__Daikin_8h.html#ab6143bef74a122c3fba3a3b29df0cf29',1,'ir_Daikin.h']]], - ['kdaikinfan_5241',['kDaikinFan',['../ir__Daikin_8h.html#a616df34328cdac764aecc9ffb0f16f09',1,'ir_Daikin.h']]], - ['kdaikinfanauto_5242',['kDaikinFanAuto',['../ir__Daikin_8h.html#a87807bd5727d9da1b615fca2bd732292',1,'ir_Daikin.h']]], - ['kdaikinfanmax_5243',['kDaikinFanMax',['../ir__Daikin_8h.html#ab483f3913a909884f44f8cd8f779bca0',1,'ir_Daikin.h']]], - ['kdaikinfanmed_5244',['kDaikinFanMed',['../ir__Daikin_8h.html#ab6eb2c902c2b5f927160efc9fb9ab08c',1,'ir_Daikin.h']]], - ['kdaikinfanmin_5245',['kDaikinFanMin',['../ir__Daikin_8h.html#a83ad300b9374e50c22211501ee2d1a7a',1,'ir_Daikin.h']]], - ['kdaikinfanquiet_5246',['kDaikinFanQuiet',['../ir__Daikin_8h.html#aae481cf166671c30bccdc7f47aa6666e',1,'ir_Daikin.h']]], - ['kdaikinfirstheader64_5247',['kDaikinFirstHeader64',['../ir__Daikin_8h.html#a0bd3b36061d545bb21562622642f4196',1,'ir_Daikin.h']]], - ['kdaikingap_5248',['kDaikinGap',['../ir__Daikin_8h.html#aed68991584125a277593c339ab387276',1,'ir_Daikin.h']]], - ['kdaikinhdrmark_5249',['kDaikinHdrMark',['../ir__Daikin_8h.html#a0a38b3bdfd8f4f7a18f969188388e29e',1,'ir_Daikin.h']]], - ['kdaikinhdrspace_5250',['kDaikinHdrSpace',['../ir__Daikin_8h.html#ac4ca6c53faeec7d7a7ccfb50802087dc',1,'ir_Daikin.h']]], - ['kdaikinheaderlength_5251',['kDaikinHeaderLength',['../ir__Daikin_8h.html#a476ca864b6791439549bb4257ca78b23',1,'ir_Daikin.h']]], - ['kdaikinheat_5252',['kDaikinHeat',['../ir__Daikin_8h.html#a05824dc5af4ed0d3eceda540ad0e7a9f',1,'ir_Daikin.h']]], - ['kdaikinlightbright_5253',['kDaikinLightBright',['../ir__Daikin_8h.html#a20a3103d8d0a672c0c05c1679bf3b2ab',1,'ir_Daikin.h']]], - ['kdaikinlightdim_5254',['kDaikinLightDim',['../ir__Daikin_8h.html#a1093baf5b62fca42f9361715be2198a3',1,'ir_Daikin.h']]], - ['kdaikinlightoff_5255',['kDaikinLightOff',['../ir__Daikin_8h.html#ae57f7d2ea43e865ebf8175a8dbacab45',1,'ir_Daikin.h']]], - ['kdaikinmarkexcess_5256',['kDaikinMarkExcess',['../ir__Daikin_8h.html#a5331e1ee51bd7b001346aa41ee5d26cc',1,'ir_Daikin.h']]], - ['kdaikinmaxtemp_5257',['kDaikinMaxTemp',['../ir__Daikin_8h.html#aab7be756494a5ed23e9202af769e0012',1,'ir_Daikin.h']]], - ['kdaikinmintemp_5258',['kDaikinMinTemp',['../ir__Daikin_8h.html#af257feb15dc282c7d06351ee9eed666b',1,'ir_Daikin.h']]], - ['kdaikinonespace_5259',['kDaikinOneSpace',['../ir__Daikin_8h.html#a6653082dcfde989bd2c5810809fc18a9',1,'ir_Daikin.h']]], - ['kdaikinsection1length_5260',['kDaikinSection1Length',['../ir__Daikin_8h.html#ab3b8aacbebe6c1c5514141102d1ca26f',1,'ir_Daikin.h']]], - ['kdaikinsection2length_5261',['kDaikinSection2Length',['../ir__Daikin_8h.html#a2e65cdf05d22a20f01ae5f6d3e222218',1,'ir_Daikin.h']]], - ['kdaikinsection3length_5262',['kDaikinSection3Length',['../ir__Daikin_8h.html#ae7dbaf6b4034267e4610087f9f2f51e3',1,'ir_Daikin.h']]], - ['kdaikinsections_5263',['kDaikinSections',['../ir__Daikin_8h.html#aad822c70789b861fa5beb839833e0b4c',1,'ir_Daikin.h']]], - ['kdaikinstatelength_5264',['kDaikinStateLength',['../IRremoteESP8266_8h.html#af1fda5b9f355e526dc66cf58824315a7',1,'IRremoteESP8266.h']]], - ['kdaikinstatelengthshort_5265',['kDaikinStateLengthShort',['../IRremoteESP8266_8h.html#ae94c897cb0bd25ca7a4d693c7be9be3d',1,'IRremoteESP8266.h']]], - ['kdaikinswingoff_5266',['kDaikinSwingOff',['../ir__Daikin_8h.html#abc9194f48f63632b87c6139dd8ab6ecf',1,'ir_Daikin.h']]], - ['kdaikinswingon_5267',['kDaikinSwingOn',['../ir__Daikin_8h.html#af19ec29dc79837deca05f6061f2e6524',1,'ir_Daikin.h']]], - ['kdaikintolerance_5268',['kDaikinTolerance',['../ir__Daikin_8h.html#aea3938d1522df0040ddb9775075d6669',1,'ir_Daikin.h']]], - ['kdaikinunusedtime_5269',['kDaikinUnusedTime',['../ir__Daikin_8h.html#af60d27bb9d08317498b35f62c167f6a4',1,'ir_Daikin.h']]], - ['kdaikinzerospace_5270',['kDaikinZeroSpace',['../ir__Daikin_8h.html#ace5b2c2be3b58f22248eafb2148d059c',1,'ir_Daikin.h']]], - ['kdaysstr_5271',['kDaysStr',['../IRtext_8cpp.html#a4269111ae41c3a673ec0a87fca0fd78b',1,'kDaysStr(): IRtext.cpp'],['../IRtext_8h.html#aa779ae24412ef82ee3d1eade3f0381ae',1,'kDaysStr(): IRtext.cpp']]], - ['kdaystr_5272',['kDayStr',['../IRtext_8cpp.html#ab6fb8803c6a95d1926abb56b7ecb2e09',1,'kDayStr(): IRtext.cpp'],['../IRtext_8h.html#adb64531a5054629613696f9af39420e2',1,'kDayStr(): IRtext.cpp']]], - ['kdefaultesp32timer_5273',['kDefaultESP32Timer',['../IRrecv_8h.html#a80a2d3445a1752d18caf307d7677b709',1,'IRrecv.h']]], - ['kdefaultmessagegap_5274',['kDefaultMessageGap',['../IRsend_8h.html#ad49e9828319afbad49fd5082c50ef4a7',1,'IRsend.h']]], - ['kdelonghiacauto_5275',['kDelonghiAcAuto',['../ir__Delonghi_8h.html#ab10d4fe0b9dbe99ed942b73a6ff61d37',1,'ir_Delonghi.h']]], - ['kdelonghiacbitmark_5276',['kDelonghiAcBitMark',['../ir__Delonghi_8cpp.html#aa70f02d16b78f513e245871d4db0785a',1,'ir_Delonghi.cpp']]], - ['kdelonghiacbits_5277',['kDelonghiAcBits',['../IRremoteESP8266_8h.html#a7b9fba82b602cf38147f0586e037f909',1,'IRremoteESP8266.h']]], - ['kdelonghiacchecksumoffset_5278',['kDelonghiAcChecksumOffset',['../ir__Delonghi_8h.html#a4b5e3d9874b016f60b7f9c26e7cf0cfd',1,'ir_Delonghi.h']]], - ['kdelonghiaccool_5279',['kDelonghiAcCool',['../ir__Delonghi_8h.html#a9447cc3a3f6f4e0603ecc99104523119',1,'ir_Delonghi.h']]], - ['kdelonghiacdefaultrepeat_5280',['kDelonghiAcDefaultRepeat',['../IRremoteESP8266_8h.html#a8f18256a0a6893e077e253e5e80da164',1,'IRremoteESP8266.h']]], - ['kdelonghiacdry_5281',['kDelonghiAcDry',['../ir__Delonghi_8h.html#a1c83f080ac1f48548fcfa5d691ef893d',1,'ir_Delonghi.h']]], - ['kdelonghiacfan_5282',['kDelonghiAcFan',['../ir__Delonghi_8h.html#af494534acfb8ae1c0f9c15bc13e2d0c8',1,'ir_Delonghi.h']]], - ['kdelonghiacfanauto_5283',['kDelonghiAcFanAuto',['../ir__Delonghi_8h.html#adf2286936d79d8c899283fa6e3838ebb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanhigh_5284',['kDelonghiAcFanHigh',['../ir__Delonghi_8h.html#a03027eb1a6a382479b44db0699aee30b',1,'ir_Delonghi.h']]], - ['kdelonghiacfanlow_5285',['kDelonghiAcFanLow',['../ir__Delonghi_8h.html#a053a51021679cd5c4720e7ec68fa43eb',1,'ir_Delonghi.h']]], - ['kdelonghiacfanmedium_5286',['kDelonghiAcFanMedium',['../ir__Delonghi_8h.html#ac748c5e0b7c5acb108086f90c088028f',1,'ir_Delonghi.h']]], - ['kdelonghiacfreq_5287',['kDelonghiAcFreq',['../ir__Delonghi_8cpp.html#a9425e4f71aa6454a89b55f3b5789d94d',1,'ir_Delonghi.cpp']]], - ['kdelonghiacgap_5288',['kDelonghiAcGap',['../ir__Delonghi_8cpp.html#ab1cd2481fc96811ed822c8c9f63420c3',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrmark_5289',['kDelonghiAcHdrMark',['../ir__Delonghi_8cpp.html#a0feead944883173788b8d02b7ae94ef8',1,'ir_Delonghi.cpp']]], - ['kdelonghiachdrspace_5290',['kDelonghiAcHdrSpace',['../ir__Delonghi_8cpp.html#a606ea96746b1b6471b1d76f05bdc7e5a',1,'ir_Delonghi.cpp']]], - ['kdelonghiaconespace_5291',['kDelonghiAcOneSpace',['../ir__Delonghi_8cpp.html#a8805fdc60cd3537ba2d94038610a3490',1,'ir_Delonghi.cpp']]], - ['kdelonghiacoverhead_5292',['kDelonghiAcOverhead',['../ir__Delonghi_8cpp.html#ac265c123c0cd7492d26f030d129f3475',1,'ir_Delonghi.cpp']]], - ['kdelonghiactempautodrymode_5293',['kDelonghiAcTempAutoDryMode',['../ir__Delonghi_8h.html#add6f728d2746a089e00a35644d664a6c',1,'ir_Delonghi.h']]], - ['kdelonghiactempfanmode_5294',['kDelonghiAcTempFanMode',['../ir__Delonghi_8h.html#a120ae31fac35c33214317c3187aae15c',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxc_5295',['kDelonghiAcTempMaxC',['../ir__Delonghi_8h.html#a476922b8d240c46cf092897f6c701e87',1,'ir_Delonghi.h']]], - ['kdelonghiactempmaxf_5296',['kDelonghiAcTempMaxF',['../ir__Delonghi_8h.html#abc11f81bc221aa3789258b7a990633b3',1,'ir_Delonghi.h']]], - ['kdelonghiactempminc_5297',['kDelonghiAcTempMinC',['../ir__Delonghi_8h.html#ad31267284f7dd8f533fc978ed7e92428',1,'ir_Delonghi.h']]], - ['kdelonghiactempminf_5298',['kDelonghiAcTempMinF',['../ir__Delonghi_8h.html#a0311abab5eff5a8c47261db8e3d40ed5',1,'ir_Delonghi.h']]], - ['kdelonghiactimermax_5299',['kDelonghiAcTimerMax',['../ir__Delonghi_8h.html#a44d3f0d850c5cd5ad8c0e2dc7c2bd860',1,'ir_Delonghi.h']]], - ['kdelonghiaczerospace_5300',['kDelonghiAcZeroSpace',['../ir__Delonghi_8cpp.html#a4c1a9a70a50c7da9aa6cf91af85c695e',1,'ir_Delonghi.cpp']]], - ['kdenon48bits_5301',['kDenon48Bits',['../IRremoteESP8266_8h.html#ad7389b5b4f01a16dbf940eaae005c805',1,'IRremoteESP8266.h']]], - ['kdenonbitmark_5302',['kDenonBitMark',['../ir__Denon_8cpp.html#a1cd978061cfdc9bf1d5e1142dad86e59',1,'ir_Denon.cpp']]], - ['kdenonbitmarkticks_5303',['kDenonBitMarkTicks',['../ir__Denon_8cpp.html#ae6dddc89296abc186ac524c3f1efbe63',1,'ir_Denon.cpp']]], - ['kdenonbits_5304',['kDenonBits',['../IRremoteESP8266_8h.html#a29160117e25f3dfc1cb899a4a53bc238',1,'IRremoteESP8266.h']]], - ['kdenonhdrmark_5305',['kDenonHdrMark',['../ir__Denon_8cpp.html#a6f7b5da8c723615200109f425df72254',1,'ir_Denon.cpp']]], - ['kdenonhdrmarkticks_5306',['kDenonHdrMarkTicks',['../ir__Denon_8cpp.html#a484a90cdd15de164c931f1c70ab02938',1,'ir_Denon.cpp']]], - ['kdenonhdrspace_5307',['kDenonHdrSpace',['../ir__Denon_8cpp.html#a758b11259a5dcab3e949739cf67106be',1,'ir_Denon.cpp']]], - ['kdenonhdrspaceticks_5308',['kDenonHdrSpaceTicks',['../ir__Denon_8cpp.html#afe6cb1be37dcea0251ebf0fc43640fe1',1,'ir_Denon.cpp']]], - ['kdenonlegacybits_5309',['kDenonLegacyBits',['../IRremoteESP8266_8h.html#aacf2eea1349016ccbc96e97a0976f4ec',1,'IRremoteESP8266.h']]], - ['kdenonmanufacturer_5310',['kDenonManufacturer',['../ir__Denon_8cpp.html#abd89138765e21d25991fd5857506491b',1,'ir_Denon.cpp']]], - ['kdenonmincommandlengthticks_5311',['kDenonMinCommandLengthTicks',['../ir__Denon_8cpp.html#abb20f9f6053e0d46399011de71697a6a',1,'ir_Denon.cpp']]], - ['kdenonmingap_5312',['kDenonMinGap',['../ir__Denon_8cpp.html#a19b3fe79e06b3ece2cb167d5e14b2c11',1,'ir_Denon.cpp']]], - ['kdenonmingapticks_5313',['kDenonMinGapTicks',['../ir__Denon_8cpp.html#a191e0cfcf8167805ef9bfdc05463c313',1,'ir_Denon.cpp']]], - ['kdenononespace_5314',['kDenonOneSpace',['../ir__Denon_8cpp.html#a150b22eeeb64b59a3d9df51904fdda3f',1,'ir_Denon.cpp']]], - ['kdenononespaceticks_5315',['kDenonOneSpaceTicks',['../ir__Denon_8cpp.html#ad15a88b8f6b953918799eac1e814d107',1,'ir_Denon.cpp']]], - ['kdenontick_5316',['kDenonTick',['../ir__Denon_8cpp.html#a6cc0eba04ca4a2362068bf47d1869752',1,'ir_Denon.cpp']]], - ['kdenonzerospace_5317',['kDenonZeroSpace',['../ir__Denon_8cpp.html#ad8f53f000727e66938d086eadb5bf6eb',1,'ir_Denon.cpp']]], - ['kdenonzerospaceticks_5318',['kDenonZeroSpaceTicks',['../ir__Denon_8cpp.html#aed0c86367586cd043d8381499b3a4bdd',1,'ir_Denon.cpp']]], - ['kdishbitmark_5319',['kDishBitMark',['../ir__Dish_8cpp.html#aabe7f9815a2f5e65558b0f482e2ac50e',1,'ir_Dish.cpp']]], - ['kdishbitmarkticks_5320',['kDishBitMarkTicks',['../ir__Dish_8cpp.html#a1cfd9b730c78aac35f6c2cb56367c7bb',1,'ir_Dish.cpp']]], - ['kdishbits_5321',['kDishBits',['../IRremoteESP8266_8h.html#aea0cc15e1c7a6edcd6b60d9ac62d4831',1,'IRremoteESP8266.h']]], - ['kdishhdrmark_5322',['kDishHdrMark',['../ir__Dish_8cpp.html#ac4311aaed27b1f37a41a2a9cced0ecc5',1,'ir_Dish.cpp']]], - ['kdishhdrmarkticks_5323',['kDishHdrMarkTicks',['../ir__Dish_8cpp.html#a8dce19ee6e3a6859bd2d43c0c9e90517',1,'ir_Dish.cpp']]], - ['kdishhdrspace_5324',['kDishHdrSpace',['../ir__Dish_8cpp.html#ac68dfa9e554c919fd51b379621b2fbc4',1,'ir_Dish.cpp']]], - ['kdishhdrspaceticks_5325',['kDishHdrSpaceTicks',['../ir__Dish_8cpp.html#ab212535e169722d7f23b461b011400c2',1,'ir_Dish.cpp']]], - ['kdishminrepeat_5326',['kDishMinRepeat',['../IRremoteESP8266_8h.html#a5c2263819b032e3af4d416ab41126bd8',1,'IRremoteESP8266.h']]], - ['kdishonespace_5327',['kDishOneSpace',['../ir__Dish_8cpp.html#a6f1986377a4571c8eba5f401b772c194',1,'ir_Dish.cpp']]], - ['kdishonespaceticks_5328',['kDishOneSpaceTicks',['../ir__Dish_8cpp.html#ade25414e4747c56303752060d9f89446',1,'ir_Dish.cpp']]], - ['kdishrptspace_5329',['kDishRptSpace',['../ir__Dish_8cpp.html#a67628a3581fe85638f72711581ec0e42',1,'ir_Dish.cpp']]], - ['kdishrptspaceticks_5330',['kDishRptSpaceTicks',['../ir__Dish_8cpp.html#a801af68fd07720f74abcf2712e3228dd',1,'ir_Dish.cpp']]], - ['kdishtick_5331',['kDishTick',['../ir__Dish_8cpp.html#aa1eccae3b18a457c7cec248d483e808a',1,'ir_Dish.cpp']]], - ['kdishzerospace_5332',['kDishZeroSpace',['../ir__Dish_8cpp.html#acde5c5a789af871f7b5aacdf3f0efeb7',1,'ir_Dish.cpp']]], - ['kdishzerospaceticks_5333',['kDishZeroSpaceTicks',['../ir__Dish_8cpp.html#a68a0f2b9e2e457c8a58fa533e0ca5336',1,'ir_Dish.cpp']]], - ['kdisplaytempstr_5334',['kDisplayTempStr',['../IRtext_8cpp.html#a018814e961b4eb51b91680db3be7d17c',1,'kDisplayTempStr(): IRtext.cpp'],['../IRtext_8h.html#a98f3ba92617c82c9091f155eebcdb3f3',1,'kDisplayTempStr(): IRtext.cpp']]], - ['kdoshishabitmark_5335',['kDoshishaBitMark',['../ir__Doshisha_8cpp.html#a50a4feaff92c4a9fbba6128638fdb2fb',1,'ir_Doshisha.cpp']]], - ['kdoshishabits_5336',['kDoshishaBits',['../IRremoteESP8266_8h.html#aedc53534cf6a40144be80abeee498362',1,'IRremoteESP8266.h']]], - ['kdoshishahdrmark_5337',['kDoshishaHdrMark',['../ir__Doshisha_8cpp.html#adbfc15a1abb62540538afc9c645c1875',1,'ir_Doshisha.cpp']]], - ['kdoshishahdrspace_5338',['kDoshishaHdrSpace',['../ir__Doshisha_8cpp.html#a95a58b09fde0ee9ba59fcf838d16f736',1,'ir_Doshisha.cpp']]], - ['kdoshishaonespace_5339',['kDoshishaOneSpace',['../ir__Doshisha_8cpp.html#a48f3b70ddd3bc06c628ebe7ce29e74d3',1,'ir_Doshisha.cpp']]], - ['kdoshishazerospace_5340',['kDoshishaZeroSpace',['../ir__Doshisha_8cpp.html#a055ae27320600bc7e100ea7e147775f9',1,'ir_Doshisha.cpp']]], - ['kdownstr_5341',['kDownStr',['../IRtext_8cpp.html#a24998688cbbe54780843983394e925e5',1,'kDownStr(): IRtext.cpp'],['../IRtext_8h.html#a1f452a2ac1a2b89b9c71cf64c177f6bd',1,'kDownStr(): IRtext.cpp']]], - ['kdrystr_5342',['kDryStr',['../IRtext_8cpp.html#a149780a7bbdd13757ee4336c281ccd9d',1,'kDryStr(): IRtext.cpp'],['../IRtext_8h.html#aa0f25fa3aa8d26f4635c38e563a974f5',1,'kDryStr(): IRtext.cpp']]], - ['kdutydefault_5343',['kDutyDefault',['../IRsend_8h.html#affa33c170fe058b783372852fca7cc5b',1,'IRsend.h']]], - ['kdutymax_5344',['kDutyMax',['../IRsend_8h.html#ac076e3f79a3d8d2dae9fc248a6f571e2',1,'IRsend.h']]], - ['kecoclimauto_5345',['kEcoclimAuto',['../ir__Ecoclim_8h.html#ae9de485f87949561850847b66ac81e47',1,'ir_Ecoclim.h']]], - ['kecoclimbitmark_5346',['kEcoclimBitMark',['../ir__Ecoclim_8cpp.html#ad03f638e01d2fdce86fe9a89f3f8dab2',1,'ir_Ecoclim.cpp']]], - ['kecoclimbits_5347',['kEcoclimBits',['../IRremoteESP8266_8h.html#accd38d1019bde991e9a887f853f295d0',1,'IRremoteESP8266.h']]], - ['kecoclimcool_5348',['kEcoclimCool',['../ir__Ecoclim_8h.html#ad6adc2787f3c3bf0116994d0966cfe20',1,'ir_Ecoclim.h']]], - ['kecoclimdefaultstate_5349',['kEcoclimDefaultState',['../ir__Ecoclim_8h.html#a7bf25176d3b9648e53c7a04334878d90',1,'ir_Ecoclim.h']]], - ['kecoclimdipmaster_5350',['kEcoclimDipMaster',['../ir__Ecoclim_8h.html#a69ebcc54bc7c25ce02557b7274a97641',1,'ir_Ecoclim.h']]], - ['kecoclimdipslave_5351',['kEcoclimDipSlave',['../ir__Ecoclim_8h.html#a118d61dbd264ffee7536e987dbf027df',1,'ir_Ecoclim.h']]], - ['kecoclimdry_5352',['kEcoclimDry',['../ir__Ecoclim_8h.html#a4533dbeddf89b4a95eb808e6284eb2af',1,'ir_Ecoclim.h']]], - ['kecoclimextratolerance_5353',['kEcoclimExtraTolerance',['../ir__Ecoclim_8cpp.html#a2b6fe32f39ac739d6dc0cbbd17dcf2af',1,'ir_Ecoclim.cpp']]], - ['kecoclimfan_5354',['kEcoclimFan',['../ir__Ecoclim_8h.html#aac7d10152a70e17e9338e61f477faa68',1,'ir_Ecoclim.h']]], - ['kecoclimfanauto_5355',['kEcoclimFanAuto',['../ir__Ecoclim_8h.html#a0675f3a9fa7a4308ca4cbee9b70c91b4',1,'ir_Ecoclim.h']]], - ['kecoclimfanmax_5356',['kEcoclimFanMax',['../ir__Ecoclim_8h.html#a1653fffcdcfdad604304f30c3e01969b',1,'ir_Ecoclim.h']]], - ['kecoclimfanmed_5357',['kEcoclimFanMed',['../ir__Ecoclim_8h.html#a6cb9ba6ffc6db3bb1a76a46d08e9a3e1',1,'ir_Ecoclim.h']]], - ['kecoclimfanmin_5358',['kEcoclimFanMin',['../ir__Ecoclim_8h.html#a2e6a1af18f73cefe4f1549b60c7a2199',1,'ir_Ecoclim.h']]], - ['kecoclimfootermark_5359',['kEcoclimFooterMark',['../ir__Ecoclim_8cpp.html#a911b6a39dd4e76eb7a5dc6945dad0f83',1,'ir_Ecoclim.cpp']]], - ['kecoclimgap_5360',['kEcoclimGap',['../ir__Ecoclim_8cpp.html#a95241311f503991fd423d224df9caa8e',1,'ir_Ecoclim.cpp']]], - ['kecoclimhdrmark_5361',['kEcoclimHdrMark',['../ir__Ecoclim_8cpp.html#af1cadad08d1adb19ae89ec05731a18e1',1,'ir_Ecoclim.cpp']]], - ['kecoclimhdrspace_5362',['kEcoclimHdrSpace',['../ir__Ecoclim_8cpp.html#a13d0809cbb678d064f411fb00633e5ed',1,'ir_Ecoclim.cpp']]], - ['kecoclimheat_5363',['kEcoclimHeat',['../ir__Ecoclim_8h.html#a38c275b9ee8e0a3c409190aefb1e06a3',1,'ir_Ecoclim.h']]], - ['kecoclimonespace_5364',['kEcoclimOneSpace',['../ir__Ecoclim_8cpp.html#a31fe81e18ee98b39c380b4687860fd7a',1,'ir_Ecoclim.cpp']]], - ['kecoclimrecycle_5365',['kEcoclimRecycle',['../ir__Ecoclim_8h.html#abb1183a1acbe1b3257dbf05cc72380f3',1,'ir_Ecoclim.h']]], - ['kecoclimsections_5366',['kEcoclimSections',['../ir__Ecoclim_8cpp.html#a94df888067ef8ddfac32741199631964',1,'ir_Ecoclim.cpp']]], - ['kecoclimshortbits_5367',['kEcoclimShortBits',['../IRremoteESP8266_8h.html#aff612cce1271e3254664c2efc7a2a9d5',1,'IRremoteESP8266.h']]], - ['kecoclimsleep_5368',['kEcoclimSleep',['../ir__Ecoclim_8h.html#adaeffa57c2e26d64e8afde8e296212dc',1,'ir_Ecoclim.h']]], - ['kecoclimtempmax_5369',['kEcoclimTempMax',['../ir__Ecoclim_8h.html#a748f159701406c4d149ec10765423acb',1,'ir_Ecoclim.h']]], - ['kecoclimtempmin_5370',['kEcoclimTempMin',['../ir__Ecoclim_8h.html#a52a5e38c10e8aa1fa350ea1d71180a15',1,'ir_Ecoclim.h']]], - ['kecoclimtimerdisable_5371',['kEcoclimTimerDisable',['../ir__Ecoclim_8h.html#ab271e282eeb7486f4fabfdc14368e161',1,'ir_Ecoclim.h']]], - ['kecoclimzerospace_5372',['kEcoclimZeroSpace',['../ir__Ecoclim_8cpp.html#a5c8f6e7dd7f1bb97124852ec4c274683',1,'ir_Ecoclim.cpp']]], - ['keconostr_5373',['kEconoStr',['../IRtext_8cpp.html#a4e3bee67564fe8f13d1d4f997924f464',1,'kEconoStr(): IRtext.cpp'],['../IRtext_8h.html#ab0b71c4429416a581a393f07e898bade',1,'kEconoStr(): IRtext.cpp']]], - ['keconotogglestr_5374',['kEconoToggleStr',['../IRtext_8cpp.html#abd6fd4c918a7911bfa223cd87e6f3d32',1,'kEconoToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a03bbafdddd086cacd34dca1a32d540f6',1,'kEconoToggleStr(): IRtext.cpp']]], - ['kelectraacauto_5375',['kElectraAcAuto',['../ir__Electra_8h.html#a536965f5003a474d68860005883afb5a',1,'ir_Electra.h']]], - ['kelectraacbitmark_5376',['kElectraAcBitMark',['../ir__Electra_8cpp.html#a41f7254b061b099b8131ec4d2a775116',1,'ir_Electra.cpp']]], - ['kelectraacbits_5377',['kElectraAcBits',['../IRremoteESP8266_8h.html#aa46876681f26ccf39c6d341fef041a16',1,'IRremoteESP8266.h']]], - ['kelectraaccool_5378',['kElectraAcCool',['../ir__Electra_8h.html#a6a37f4e24aad54a982994599a1bca59d',1,'ir_Electra.h']]], - ['kelectraacdry_5379',['kElectraAcDry',['../ir__Electra_8h.html#a9b8636631c22e003072bf84a9e30ddff',1,'ir_Electra.h']]], - ['kelectraacfan_5380',['kElectraAcFan',['../ir__Electra_8h.html#a28047c7d083d8bc9d9e34ab210c28185',1,'ir_Electra.h']]], - ['kelectraacfanauto_5381',['kElectraAcFanAuto',['../ir__Electra_8h.html#a48b3067393d4dc1e3461db4535212bff',1,'ir_Electra.h']]], - ['kelectraacfanhigh_5382',['kElectraAcFanHigh',['../ir__Electra_8h.html#a5cbf3118669f056f377b4625e8e97d8c',1,'ir_Electra.h']]], - ['kelectraacfanlow_5383',['kElectraAcFanLow',['../ir__Electra_8h.html#a9a5663e86cb766a4e4579d1b81473c44',1,'ir_Electra.h']]], - ['kelectraacfanmed_5384',['kElectraAcFanMed',['../ir__Electra_8h.html#a4e906bcb7aa6c0fc5c71bd06c43c3993',1,'ir_Electra.h']]], - ['kelectraachdrmark_5385',['kElectraAcHdrMark',['../ir__Electra_8cpp.html#a1200826684547765f1e526f362408e2e',1,'ir_Electra.cpp']]], - ['kelectraachdrspace_5386',['kElectraAcHdrSpace',['../ir__Electra_8cpp.html#a28cd57057c52b0def3683e71ee92c5d3',1,'ir_Electra.cpp']]], - ['kelectraacheat_5387',['kElectraAcHeat',['../ir__Electra_8h.html#af764a4738f146b752b8e29357af257e3',1,'ir_Electra.h']]], - ['kelectraaclighttogglemask_5388',['kElectraAcLightToggleMask',['../ir__Electra_8h.html#aa51ccef46052dd988ac1bccc4f2303f6',1,'ir_Electra.h']]], - ['kelectraaclighttoggleoff_5389',['kElectraAcLightToggleOff',['../ir__Electra_8h.html#ae98c4a00f003cc98c253b9367226c5c5',1,'ir_Electra.h']]], - ['kelectraaclighttoggleon_5390',['kElectraAcLightToggleOn',['../ir__Electra_8h.html#aa9ca231e98b7e529b081c3aaa1876df9',1,'ir_Electra.h']]], - ['kelectraacmaxtemp_5391',['kElectraAcMaxTemp',['../ir__Electra_8h.html#a3962ca1ae42f006baa1181683cbcbf86',1,'ir_Electra.h']]], - ['kelectraacmessagegap_5392',['kElectraAcMessageGap',['../ir__Electra_8cpp.html#adbcde2296ebf6ea93c7c95ce6d0b264e',1,'ir_Electra.cpp']]], - ['kelectraacminrepeat_5393',['kElectraAcMinRepeat',['../IRremoteESP8266_8h.html#a2ca237d578ca9a59aecac9813ab851ba',1,'IRremoteESP8266.h']]], - ['kelectraacmintemp_5394',['kElectraAcMinTemp',['../ir__Electra_8h.html#ad6f62477d70b59c958ba347c228f8e2b',1,'ir_Electra.h']]], - ['kelectraaconespace_5395',['kElectraAcOneSpace',['../ir__Electra_8cpp.html#aeb59d520635a93f5dd7acdbe4327174d',1,'ir_Electra.cpp']]], - ['kelectraacstatelength_5396',['kElectraAcStateLength',['../IRremoteESP8266_8h.html#a8fb8c5778feaa94114218c36e8e43641',1,'IRremoteESP8266.h']]], - ['kelectraacswingoff_5397',['kElectraAcSwingOff',['../ir__Electra_8h.html#ade2211d0bd695daf490300db856d660a',1,'ir_Electra.h']]], - ['kelectraacswingon_5398',['kElectraAcSwingOn',['../ir__Electra_8h.html#a4ef75911d929752357d727aee339563e',1,'ir_Electra.h']]], - ['kelectraactempdelta_5399',['kElectraAcTempDelta',['../ir__Electra_8h.html#ac3310f7b0d4b9fbe22d7192465669487',1,'ir_Electra.h']]], - ['kelectraaczerospace_5400',['kElectraAcZeroSpace',['../ir__Electra_8cpp.html#a1453e0796cfe6ca169fd3c56e2595082',1,'ir_Electra.cpp']]], - ['kelitescreensbits_5401',['kEliteScreensBits',['../IRremoteESP8266_8h.html#a102ebea398ea7b155e1e5212676af6dd',1,'IRremoteESP8266.h']]], - ['kelitescreensdefaultrepeat_5402',['kEliteScreensDefaultRepeat',['../IRremoteESP8266_8h.html#a9b23f59f288fc2ab9ee171436c11b04b',1,'IRremoteESP8266.h']]], - ['kelitescreensgap_5403',['kEliteScreensGap',['../ir__EliteScreens_8cpp.html#a7023784c82a3973e638245bf774adb34',1,'ir_EliteScreens.cpp']]], - ['kelitescreensone_5404',['kEliteScreensOne',['../ir__EliteScreens_8cpp.html#a9e53ba0d824f43cc70b489b95055007f',1,'ir_EliteScreens.cpp']]], - ['kelitescreenszero_5405',['kEliteScreensZero',['../ir__EliteScreens_8cpp.html#ae2d4b6fd6aec50baa7173d302a629438',1,'ir_EliteScreens.cpp']]], - ['kepsonbits_5406',['kEpsonBits',['../IRremoteESP8266_8h.html#a77a0ed1143f5bfec87e0c9fde5c2c425',1,'IRremoteESP8266.h']]], - ['kepsonminrepeat_5407',['kEpsonMinRepeat',['../IRremoteESP8266_8h.html#ac8738cb054de937b77269acb973c5133',1,'IRremoteESP8266.h']]], - ['keyeautostr_5408',['kEyeAutoStr',['../IRtext_8cpp.html#ab7c525442638022439c7a277e1edf694',1,'kEyeAutoStr(): IRtext.cpp'],['../IRtext_8h.html#ae1395c08682a2b858261d76b97311f4f',1,'kEyeAutoStr(): IRtext.cpp']]], - ['keyestr_5409',['kEyeStr',['../IRtext_8cpp.html#a1d8dc83e7f15aacd013509e36a49a9d8',1,'kEyeStr(): IRtext.cpp'],['../IRtext_8h.html#a84f6d62456976cc31fe6b1648182a885',1,'kEyeStr(): IRtext.cpp']]], - ['kfalsestr_5410',['kFalseStr',['../IRtext_8cpp.html#a338ee31c8fb5a1c74c0640b279051cd2',1,'kFalseStr(): IRtext.cpp'],['../IRtext_8h.html#a3dc9321c4146369e0e0794e6a4de1988',1,'kFalseStr(): IRtext.cpp']]], - ['kfanonlystr_5411',['kFanOnlyStr',['../IRtext_8cpp.html#adada7550fa28466a6db6f4544f8c7063',1,'kFanOnlyStr(): IRtext.cpp'],['../IRtext_8h.html#a220378c7b69db06362af5ad932965628',1,'kFanOnlyStr(): IRtext.cpp']]], - ['kfanstr_5412',['kFanStr',['../IRtext_8cpp.html#aaab703dfae684a786852a55c0f7f61ec',1,'kFanStr(): IRtext.cpp'],['../IRtext_8h.html#af7a0d76c40f3173a3e1367665d789300',1,'kFanStr(): IRtext.cpp']]], - ['kfaststr_5413',['kFastStr',['../IRtext_8cpp.html#ad6084cb569cd62bb1199c6ecc8ac4126',1,'kFastStr(): IRtext.cpp'],['../IRtext_8h.html#a82c26d9c7690ce001223e2a7cf8664d8',1,'kFastStr(): IRtext.cpp']]], - ['kfilterstr_5414',['kFilterStr',['../IRtext_8cpp.html#af287ead64de5dc3b1cbafe7bc945e519',1,'kFilterStr(): IRtext.cpp'],['../IRtext_8h.html#a5b3133e24c729077da411e08119033be',1,'kFilterStr(): IRtext.cpp']]], - ['kfixedstr_5415',['kFixedStr',['../IRtext_8cpp.html#ab45f91a889dae134e48c86586608bfc9',1,'kFixedStr(): IRtext.cpp'],['../IRtext_8h.html#ad9112f221a20ab498c5f133c4cea0b14',1,'kFixedStr(): IRtext.cpp']]], - ['kfnvbasis32_5416',['kFnvBasis32',['../IRrecv_8h.html#a04d9b0c909b377b36af3ece668482ca3',1,'IRrecv.h']]], - ['kfnvprime32_5417',['kFnvPrime32',['../IRrecv_8h.html#abcfcce36d3e2faef742aa3529c22f23f',1,'IRrecv.h']]], - ['kfollowstr_5418',['kFollowStr',['../IRtext_8cpp.html#a5477068666c86b3d605df8cf0240c86f',1,'kFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a47a659e1c6373c4af92f4261148f695b',1,'kFollowStr(): IRtext.cpp']]], - ['kfooter_5419',['kFooter',['../IRrecv_8h.html#a5abb2b821f207ee9cf35f889f86d0ea3',1,'IRrecv.h']]], - ['kfreshstr_5420',['kFreshStr',['../IRtext_8cpp.html#ae416979803b912c932aa5eda837fc471',1,'kFreshStr(): IRtext.cpp'],['../IRtext_8h.html#adc8991e424df3ebf2f47ffc2854057f2',1,'kFreshStr(): IRtext.cpp']]], - ['kfujitsuacbitmark_5421',['kFujitsuAcBitMark',['../ir__Fujitsu_8cpp.html#a2e01906b1317da42fcc204284646e3db',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacbits_5422',['kFujitsuAcBits',['../IRremoteESP8266_8h.html#aecd63891cac014d1b7e344638086ad47',1,'IRremoteESP8266.h']]], - ['kfujitsuaccmdecono_5423',['kFujitsuAcCmdEcono',['../ir__Fujitsu_8h.html#a1e1eb4274232c43769f70b40f395a084',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdpowerful_5424',['kFujitsuAcCmdPowerful',['../ir__Fujitsu_8h.html#a69349537a37674a82b8ca630e6ca1b5a',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstayon_5425',['kFujitsuAcCmdStayOn',['../ir__Fujitsu_8h.html#acc729a2cd570761f97c63b98024c157d',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstephoriz_5426',['kFujitsuAcCmdStepHoriz',['../ir__Fujitsu_8h.html#ac67e3fa9ab8f1e1146bed1296f9a2131',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdstepvert_5427',['kFujitsuAcCmdStepVert',['../ir__Fujitsu_8h.html#a5dda60d753d93089fc323bfcd9567afd',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswinghoriz_5428',['kFujitsuAcCmdToggleSwingHoriz',['../ir__Fujitsu_8h.html#a43b5912e65a8e6d3f1c672b155135f27',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdtoggleswingvert_5429',['kFujitsuAcCmdToggleSwingVert',['../ir__Fujitsu_8h.html#a66960882cee5d109f332917fe1f8067c',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnoff_5430',['kFujitsuAcCmdTurnOff',['../ir__Fujitsu_8h.html#a073903b56c40d89b9999ee9b7dc48f00',1,'ir_Fujitsu.h']]], - ['kfujitsuaccmdturnon_5431',['kFujitsuAcCmdTurnOn',['../ir__Fujitsu_8h.html#a51c2abda78c7d6ced59f88acb857281e',1,'ir_Fujitsu.h']]], - ['kfujitsuacextratolerance_5432',['kFujitsuAcExtraTolerance',['../ir__Fujitsu_8cpp.html#ad89512dbc470982174d236be27caf071',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacfanauto_5433',['kFujitsuAcFanAuto',['../ir__Fujitsu_8h.html#a55bbb5a5b1760515f070d302c9fa4cbb',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanhigh_5434',['kFujitsuAcFanHigh',['../ir__Fujitsu_8h.html#a30b11ea24865a00b10468015aae77886',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanlow_5435',['kFujitsuAcFanLow',['../ir__Fujitsu_8h.html#aa0162cde862a3c02dd877a3a7933c130',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanmed_5436',['kFujitsuAcFanMed',['../ir__Fujitsu_8h.html#a0efcb8e8a6521e4788a82ff6c556b67b',1,'ir_Fujitsu.h']]], - ['kfujitsuacfanquiet_5437',['kFujitsuAcFanQuiet',['../ir__Fujitsu_8h.html#a9abb4ec5fe9f27c6acd62273329490b6',1,'ir_Fujitsu.h']]], - ['kfujitsuachdrmark_5438',['kFujitsuAcHdrMark',['../ir__Fujitsu_8cpp.html#a96402e0aed6962a8a72cc736fa9bbc08',1,'ir_Fujitsu.cpp']]], - ['kfujitsuachdrspace_5439',['kFujitsuAcHdrSpace',['../ir__Fujitsu_8cpp.html#a655e37e172ab06dc06ca69f3c06223b2',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacmaxtemp_5440',['kFujitsuAcMaxTemp',['../ir__Fujitsu_8h.html#ac3b4c1f7a9c8aa63da0307d9b32e839e',1,'ir_Fujitsu.h']]], - ['kfujitsuacmaxtempf_5441',['kFujitsuAcMaxTempF',['../ir__Fujitsu_8h.html#ac799d71f9add0ec307f783dc93272f41',1,'ir_Fujitsu.h']]], - ['kfujitsuacminbits_5442',['kFujitsuAcMinBits',['../IRremoteESP8266_8h.html#a025caa6d0ae6becdd5ee58b5ac6ed61f',1,'IRremoteESP8266.h']]], - ['kfujitsuacmingap_5443',['kFujitsuAcMinGap',['../ir__Fujitsu_8cpp.html#a255fab3b9047b34cf6c4d42c0c82c485',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacminrepeat_5444',['kFujitsuAcMinRepeat',['../IRremoteESP8266_8h.html#a9dd52420366167afb4c8831b4ccd02fa',1,'IRremoteESP8266.h']]], - ['kfujitsuacmintemp_5445',['kFujitsuAcMinTemp',['../ir__Fujitsu_8h.html#ada381853475c2f25b9fc6536de175e8d',1,'ir_Fujitsu.h']]], - ['kfujitsuacmintempf_5446',['kFujitsuAcMinTempF',['../ir__Fujitsu_8h.html#a83abf89b7e533db047f6d178df7a0ad5',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeauto_5447',['kFujitsuAcModeAuto',['../ir__Fujitsu_8h.html#acf0aa6d1d033c893a3acd5b8d7756a5b',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodecool_5448',['kFujitsuAcModeCool',['../ir__Fujitsu_8h.html#a782e226fadab0a256144821cacea2314',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodedry_5449',['kFujitsuAcModeDry',['../ir__Fujitsu_8h.html#ae66f2ed2e554a6befdf0377d01bce257',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodefan_5450',['kFujitsuAcModeFan',['../ir__Fujitsu_8h.html#a7cc07ec4747b5cebc50257ec02297800',1,'ir_Fujitsu.h']]], - ['kfujitsuacmodeheat_5451',['kFujitsuAcModeHeat',['../ir__Fujitsu_8h.html#ad9b47b7419853a4cb1cf072023dac69b',1,'ir_Fujitsu.h']]], - ['kfujitsuacofftimer_5452',['kFujitsuAcOffTimer',['../ir__Fujitsu_8h.html#ad2f217a98a0062d488ffd0586dc0d011',1,'ir_Fujitsu.h']]], - ['kfujitsuaconespace_5453',['kFujitsuAcOneSpace',['../ir__Fujitsu_8cpp.html#a4f5246e6428cc701dbaa18923904713a',1,'ir_Fujitsu.cpp']]], - ['kfujitsuacontimer_5454',['kFujitsuAcOnTimer',['../ir__Fujitsu_8h.html#abad3816a098ecc96bde57d1ff820552c',1,'ir_Fujitsu.h']]], - ['kfujitsuacsleeptimer_5455',['kFujitsuAcSleepTimer',['../ir__Fujitsu_8h.html#a53c550f5e4d63c54b6962f47d281bec6',1,'ir_Fujitsu.h']]], - ['kfujitsuacstatelength_5456',['kFujitsuAcStateLength',['../IRremoteESP8266_8h.html#ac3aa33a8386f73de0f57fc1ff7c6e7d9',1,'IRremoteESP8266.h']]], - ['kfujitsuacstatelengthshort_5457',['kFujitsuAcStateLengthShort',['../IRremoteESP8266_8h.html#a81cb09663eedbdc3888ee68438f0a5d3',1,'IRremoteESP8266.h']]], - ['kfujitsuacstoptimers_5458',['kFujitsuAcStopTimers',['../ir__Fujitsu_8h.html#a0f416a0f84e4100a702528664c9df177',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingboth_5459',['kFujitsuAcSwingBoth',['../ir__Fujitsu_8h.html#a07c5a757b0c3bbe07412813807272434',1,'ir_Fujitsu.h']]], - ['kfujitsuacswinghoriz_5460',['kFujitsuAcSwingHoriz',['../ir__Fujitsu_8h.html#a8875f62d61afb8cbf468207aedcb8982',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingoff_5461',['kFujitsuAcSwingOff',['../ir__Fujitsu_8h.html#a7f8109a1b8fd13a93d6b0255d05413df',1,'ir_Fujitsu.h']]], - ['kfujitsuacswingvert_5462',['kFujitsuAcSwingVert',['../ir__Fujitsu_8h.html#a5c532a43ab11bf7cb353de2081260f40',1,'ir_Fujitsu.h']]], - ['kfujitsuactempoffsetc_5463',['kFujitsuAcTempOffsetC',['../ir__Fujitsu_8h.html#a84f16db63e1d1a47a4e41874d6c9c397',1,'ir_Fujitsu.h']]], - ['kfujitsuactempoffsetf_5464',['kFujitsuAcTempOffsetF',['../ir__Fujitsu_8h.html#a9530a57830aa1e45efe0368928a02a8b',1,'ir_Fujitsu.h']]], - ['kfujitsuactimermax_5465',['kFujitsuAcTimerMax',['../ir__Fujitsu_8h.html#adaec1744905feeb18af4ebe9ea2f6aae',1,'ir_Fujitsu.h']]], - ['kfujitsuaczerospace_5466',['kFujitsuAcZeroSpace',['../ir__Fujitsu_8cpp.html#a3815b89a2037cd0c8d774217df603d6e',1,'ir_Fujitsu.cpp']]], - ['kgicablebitmark_5467',['kGicableBitMark',['../ir__GICable_8cpp.html#ac315be0b5e02fb4c7109a6f67c4fac8e',1,'ir_GICable.cpp']]], - ['kgicablebits_5468',['kGicableBits',['../IRremoteESP8266_8h.html#aceb5cbd7ba5d8bc11560ba29137b10fa',1,'IRremoteESP8266.h']]], - ['kgicablehdrmark_5469',['kGicableHdrMark',['../ir__GICable_8cpp.html#a0388e7a2030246928029ed1c79ba819d',1,'ir_GICable.cpp']]], - ['kgicablehdrspace_5470',['kGicableHdrSpace',['../ir__GICable_8cpp.html#ab357b0a095155eab6206245008387fc0',1,'ir_GICable.cpp']]], - ['kgicablemincommandlength_5471',['kGicableMinCommandLength',['../ir__GICable_8cpp.html#a79db5de95ff6b42259f0a54fa59f46f6',1,'ir_GICable.cpp']]], - ['kgicablemingap_5472',['kGicableMinGap',['../ir__GICable_8cpp.html#aff7027ab4b933e4a7f5506590c25f699',1,'ir_GICable.cpp']]], - ['kgicableminrepeat_5473',['kGicableMinRepeat',['../IRremoteESP8266_8h.html#ad8142649290db6fc337ac839d4078aef',1,'IRremoteESP8266.h']]], - ['kgicableonespace_5474',['kGicableOneSpace',['../ir__GICable_8cpp.html#a31300a6f41363cbc22d40f26e693b8be',1,'ir_GICable.cpp']]], - ['kgicablerptspace_5475',['kGicableRptSpace',['../ir__GICable_8cpp.html#a9e0d82ed05e210dec2980a7d1a2e081b',1,'ir_GICable.cpp']]], - ['kgicablezerospace_5476',['kGicableZeroSpace',['../ir__GICable_8cpp.html#a1383f274e701ad5c8141beb7703783ff',1,'ir_GICable.cpp']]], - ['kglobalcachefreqindex_5477',['kGlobalCacheFreqIndex',['../ir__GlobalCache_8cpp.html#aaa0bdfe1eb76e8519a111b6588a5a3ff',1,'ir_GlobalCache.cpp']]], - ['kglobalcachemaxrepeat_5478',['kGlobalCacheMaxRepeat',['../ir__GlobalCache_8cpp.html#ae4a19c45ab538e8a386769cd98943a0d',1,'ir_GlobalCache.cpp']]], - ['kglobalcacheminusec_5479',['kGlobalCacheMinUsec',['../ir__GlobalCache_8cpp.html#a133cf089a7b40516fac3b1143981b2a6',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptindex_5480',['kGlobalCacheRptIndex',['../ir__GlobalCache_8cpp.html#ad4d55ed7e89cfc6d513dae6ecb211fe9',1,'ir_GlobalCache.cpp']]], - ['kglobalcacherptstartindex_5481',['kGlobalCacheRptStartIndex',['../ir__GlobalCache_8cpp.html#afde4c65e9e75558df6ac7aa479bf507a',1,'ir_GlobalCache.cpp']]], - ['kglobalcachestartindex_5482',['kGlobalCacheStartIndex',['../ir__GlobalCache_8cpp.html#a8640be7a67ce3f49452b28bc24912637',1,'ir_GlobalCache.cpp']]], - ['kgoodweatherauto_5483',['kGoodweatherAuto',['../ir__Goodweather_8h.html#a2fc5f0f7d0f68dcff193548830f50528',1,'ir_Goodweather.h']]], - ['kgoodweatherbitmark_5484',['kGoodweatherBitMark',['../ir__Goodweather_8h.html#acb9fb47b2a207997fda0244d1bafbe89',1,'ir_Goodweather.h']]], - ['kgoodweatherbits_5485',['kGoodweatherBits',['../IRremoteESP8266_8h.html#afa2675ce42d00175ec95caa6cd87a425',1,'IRremoteESP8266.h']]], - ['kgoodweathercmdairflow_5486',['kGoodweatherCmdAirFlow',['../ir__Goodweather_8h.html#aa51248353573abd95af37e46f0a2c4a7',1,'ir_Goodweather.h']]], - ['kgoodweathercmddowntemp_5487',['kGoodweatherCmdDownTemp',['../ir__Goodweather_8h.html#a8a0b72bf745b6003fb460a3c917eecff',1,'ir_Goodweather.h']]], - ['kgoodweathercmdfan_5488',['kGoodweatherCmdFan',['../ir__Goodweather_8h.html#a4a0881f87af157fdf9ed3d9f342f1ac5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdhold_5489',['kGoodweatherCmdHold',['../ir__Goodweather_8h.html#ac0f3b1413228cb7e86822c5690f20344',1,'ir_Goodweather.h']]], - ['kgoodweathercmdlight_5490',['kGoodweatherCmdLight',['../ir__Goodweather_8h.html#ae70c4e66b17db9caf4800eb57a50706f',1,'ir_Goodweather.h']]], - ['kgoodweathercmdmode_5491',['kGoodweatherCmdMode',['../ir__Goodweather_8h.html#a6042296931ab29e9dfa5a701f3e42175',1,'ir_Goodweather.h']]], - ['kgoodweathercmdpower_5492',['kGoodweatherCmdPower',['../ir__Goodweather_8h.html#a3f1bf85bb10343512bb276adfc64b3b2',1,'ir_Goodweather.h']]], - ['kgoodweathercmdsleep_5493',['kGoodweatherCmdSleep',['../ir__Goodweather_8h.html#a3f4d72b620c73aec68c2125430ca709d',1,'ir_Goodweather.h']]], - ['kgoodweathercmdswing_5494',['kGoodweatherCmdSwing',['../ir__Goodweather_8h.html#ab4ceedbe859811a9fb394f6ebf233cb5',1,'ir_Goodweather.h']]], - ['kgoodweathercmdtimer_5495',['kGoodweatherCmdTimer',['../ir__Goodweather_8h.html#ad4d247ea6c9fc237e0acda84fdaa2eb6',1,'ir_Goodweather.h']]], - ['kgoodweathercmdturbo_5496',['kGoodweatherCmdTurbo',['../ir__Goodweather_8h.html#aebc6d53b3e7d1769bff47968c19c09c9',1,'ir_Goodweather.h']]], - ['kgoodweathercmduptemp_5497',['kGoodweatherCmdUpTemp',['../ir__Goodweather_8h.html#a51a089b03bd72a247a4c35c2ff3f3dc6',1,'ir_Goodweather.h']]], - ['kgoodweathercool_5498',['kGoodweatherCool',['../ir__Goodweather_8h.html#a92c807d6ff8a3356e65f04e82b99aba4',1,'ir_Goodweather.h']]], - ['kgoodweatherdry_5499',['kGoodweatherDry',['../ir__Goodweather_8h.html#ac5174a3e2c64361c25adcf7caa5b714c',1,'ir_Goodweather.h']]], - ['kgoodweatherextratolerance_5500',['kGoodweatherExtraTolerance',['../ir__Goodweather_8h.html#aae814dfbd574241d3b434d0bf2d38939',1,'ir_Goodweather.h']]], - ['kgoodweatherfan_5501',['kGoodweatherFan',['../ir__Goodweather_8h.html#ad56f00c7e39df93d28419d6a4afa360b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanauto_5502',['kGoodweatherFanAuto',['../ir__Goodweather_8h.html#a9cc119524ac1cb93395dff3bb44b85cc',1,'ir_Goodweather.h']]], - ['kgoodweatherfanhigh_5503',['kGoodweatherFanHigh',['../ir__Goodweather_8h.html#af2b24de50923a0aabd4379dc6d3ef10f',1,'ir_Goodweather.h']]], - ['kgoodweatherfanlow_5504',['kGoodweatherFanLow',['../ir__Goodweather_8h.html#a7bc7c0cf9f2df574a7c087542991ab9b',1,'ir_Goodweather.h']]], - ['kgoodweatherfanmed_5505',['kGoodweatherFanMed',['../ir__Goodweather_8h.html#a5174245e9369a488332b32dfa416963e',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrmark_5506',['kGoodweatherHdrMark',['../ir__Goodweather_8h.html#a5c39e33226770babb4b0e89fc0cde709',1,'ir_Goodweather.h']]], - ['kgoodweatherhdrspace_5507',['kGoodweatherHdrSpace',['../ir__Goodweather_8h.html#a837bfeaa111b00e2744c4ada89281bfb',1,'ir_Goodweather.h']]], - ['kgoodweatherheat_5508',['kGoodweatherHeat',['../ir__Goodweather_8h.html#a17d223f03df2718151a426582a224a2e',1,'ir_Goodweather.h']]], - ['kgoodweatherminrepeat_5509',['kGoodweatherMinRepeat',['../IRremoteESP8266_8h.html#a885bc5a3a5ba2d8827a62d07a43d0321',1,'IRremoteESP8266.h']]], - ['kgoodweatheronespace_5510',['kGoodweatherOneSpace',['../ir__Goodweather_8h.html#a8efa251085a8f434cb91c049e65cda56',1,'ir_Goodweather.h']]], - ['kgoodweatherstateinit_5511',['kGoodweatherStateInit',['../ir__Goodweather_8h.html#a5ec0e7ca097241d6bef0cbf2135c8fca',1,'ir_Goodweather.h']]], - ['kgoodweatherswingfast_5512',['kGoodweatherSwingFast',['../ir__Goodweather_8h.html#a2d2fa76fa35cf7d450aaf0b980660514',1,'ir_Goodweather.h']]], - ['kgoodweatherswingoff_5513',['kGoodweatherSwingOff',['../ir__Goodweather_8h.html#aa2c53f56daa2820351924d91b542bb67',1,'ir_Goodweather.h']]], - ['kgoodweatherswingslow_5514',['kGoodweatherSwingSlow',['../ir__Goodweather_8h.html#ad2c87d849af2c77088ffc533d279aadb',1,'ir_Goodweather.h']]], - ['kgoodweathertempmax_5515',['kGoodweatherTempMax',['../ir__Goodweather_8h.html#abec401548ce2221a9c668318a33a039c',1,'ir_Goodweather.h']]], - ['kgoodweathertempmin_5516',['kGoodweatherTempMin',['../ir__Goodweather_8h.html#a8e76c0ec1bd5e124d9cee5742a2d1cfe',1,'ir_Goodweather.h']]], - ['kgoodweatherzerospace_5517',['kGoodweatherZeroSpace',['../ir__Goodweather_8h.html#a411cbfb812d102daeaf6a83c742f9a9a',1,'ir_Goodweather.h']]], - ['kgpiounused_5518',['kGpioUnused',['../IRac_8h.html#afd817f0bc02c516b6430098dcecde383',1,'IRac.h']]], - ['kgreeauto_5519',['kGreeAuto',['../ir__Gree_8h.html#a65d2d0192a1baff86b859da1018ef2f8',1,'ir_Gree.h']]], - ['kgreebitmark_5520',['kGreeBitMark',['../ir__Gree_8cpp.html#ad7e23346f6d793cc2469e4c8a5650397',1,'ir_Gree.cpp']]], - ['kgreebits_5521',['kGreeBits',['../IRremoteESP8266_8h.html#acadcc5d03e09784642f008d4d2913c7d',1,'IRremoteESP8266.h']]], - ['kgreeblockfooter_5522',['kGreeBlockFooter',['../ir__Gree_8cpp.html#ae6d01cfa7ee2ef6ff27c1ecd7cd9be51',1,'ir_Gree.cpp']]], - ['kgreeblockfooterbits_5523',['kGreeBlockFooterBits',['../ir__Gree_8cpp.html#ae866eef4c729c703597a266917799cbd',1,'ir_Gree.cpp']]], - ['kgreecool_5524',['kGreeCool',['../ir__Gree_8h.html#a1e1eeab696b43864cec66e6485487cea',1,'ir_Gree.h']]], - ['kgreedefaultrepeat_5525',['kGreeDefaultRepeat',['../IRremoteESP8266_8h.html#a6816d2cb11b99a61fb63e6d0928e6706',1,'IRremoteESP8266.h']]], - ['kgreedisplaytempinside_5526',['kGreeDisplayTempInside',['../ir__Gree_8h.html#a7495e5873f63135490090929ed79e994',1,'ir_Gree.h']]], - ['kgreedisplaytempoff_5527',['kGreeDisplayTempOff',['../ir__Gree_8h.html#aa5881910d1c01b816f3ac22ddf0f89a8',1,'ir_Gree.h']]], - ['kgreedisplaytempoutside_5528',['kGreeDisplayTempOutside',['../ir__Gree_8h.html#a737c90e90897053623b15b5579cdb6a1',1,'ir_Gree.h']]], - ['kgreedisplaytempset_5529',['kGreeDisplayTempSet',['../ir__Gree_8h.html#a20f7d0948b158f83655ee4187a104176',1,'ir_Gree.h']]], - ['kgreedry_5530',['kGreeDry',['../ir__Gree_8h.html#aa818bcc036988ee24fe0467d128d174f',1,'ir_Gree.h']]], - ['kgreefan_5531',['kGreeFan',['../ir__Gree_8h.html#aa1513ffe43257664f761e4e1a5c2a38f',1,'ir_Gree.h']]], - ['kgreefanauto_5532',['kGreeFanAuto',['../ir__Gree_8h.html#aaad16357e34078257315aad7155b2cd1',1,'ir_Gree.h']]], - ['kgreefanmax_5533',['kGreeFanMax',['../ir__Gree_8h.html#a8753f860f2f503a4a70609fb000654f2',1,'ir_Gree.h']]], - ['kgreefanmed_5534',['kGreeFanMed',['../ir__Gree_8h.html#a674d096a91a5db4b5b7f1b0650c833de',1,'ir_Gree.h']]], - ['kgreefanmin_5535',['kGreeFanMin',['../ir__Gree_8h.html#a34ca09b196c41acc85a4fa0036f3ac3b',1,'ir_Gree.h']]], - ['kgreehdrmark_5536',['kGreeHdrMark',['../ir__Gree_8cpp.html#aaae182fb09bed73e37a5b5d3aee6a5fb',1,'ir_Gree.cpp']]], - ['kgreehdrspace_5537',['kGreeHdrSpace',['../ir__Gree_8cpp.html#a96b50632219c2b5808aea4ee9077b15c',1,'ir_Gree.cpp']]], - ['kgreeheat_5538',['kGreeHeat',['../ir__Gree_8h.html#ada5dac7b789497bf7a434a809d4070f6',1,'ir_Gree.h']]], - ['kgreemaxtempc_5539',['kGreeMaxTempC',['../ir__Gree_8h.html#a4c01aedfff06ed5a028c40010ad7bfa0',1,'ir_Gree.h']]], - ['kgreemaxtempf_5540',['kGreeMaxTempF',['../ir__Gree_8h.html#a6495898a7a6ddda1473b55820f4b6c44',1,'ir_Gree.h']]], - ['kgreemintempc_5541',['kGreeMinTempC',['../ir__Gree_8h.html#ad127acfc710e281a7b29023c8d1da8f6',1,'ir_Gree.h']]], - ['kgreemintempf_5542',['kGreeMinTempF',['../ir__Gree_8h.html#acf0ecb1b535894e3e790b668333fb66b',1,'ir_Gree.h']]], - ['kgreemsgspace_5543',['kGreeMsgSpace',['../ir__Gree_8cpp.html#a619ed3a2915196ab91d87db2b5a829fd',1,'ir_Gree.cpp']]], - ['kgreeonespace_5544',['kGreeOneSpace',['../ir__Gree_8cpp.html#ab139138084643ea0fca13b28412904e9',1,'ir_Gree.cpp']]], - ['kgreestatelength_5545',['kGreeStateLength',['../IRremoteESP8266_8h.html#a5558b24542873d8475e1ee0e2439839f',1,'IRremoteESP8266.h']]], - ['kgreeswingauto_5546',['kGreeSwingAuto',['../ir__Gree_8h.html#a414a503ad11c1d1d3b68d8b630df1f3a',1,'ir_Gree.h']]], - ['kgreeswingdown_5547',['kGreeSwingDown',['../ir__Gree_8h.html#abbe69b966ceb1f9eb60fe9c3fb18088d',1,'ir_Gree.h']]], - ['kgreeswingdownauto_5548',['kGreeSwingDownAuto',['../ir__Gree_8h.html#abc7d7b7de5dd2eb9c0a6ca28827aeb06',1,'ir_Gree.h']]], - ['kgreeswinglastpos_5549',['kGreeSwingLastPos',['../ir__Gree_8h.html#a630cd8fec01f13bfda0fffc1a0e59199',1,'ir_Gree.h']]], - ['kgreeswingmiddle_5550',['kGreeSwingMiddle',['../ir__Gree_8h.html#a12a7caa871f33a5bb83611b4efc7a42b',1,'ir_Gree.h']]], - ['kgreeswingmiddleauto_5551',['kGreeSwingMiddleAuto',['../ir__Gree_8h.html#ac9f85ef5c1bfeac1e4c759742e2d147f',1,'ir_Gree.h']]], - ['kgreeswingmiddledown_5552',['kGreeSwingMiddleDown',['../ir__Gree_8h.html#acad74b8154d73786e093fa215ab800b0',1,'ir_Gree.h']]], - ['kgreeswingmiddleup_5553',['kGreeSwingMiddleUp',['../ir__Gree_8h.html#aefbdd203df5b35eb61be1d0edd712c80',1,'ir_Gree.h']]], - ['kgreeswingup_5554',['kGreeSwingUp',['../ir__Gree_8h.html#adad431eb1010951fcf77dc4dac6449c6',1,'ir_Gree.h']]], - ['kgreeswingupauto_5555',['kGreeSwingUpAuto',['../ir__Gree_8h.html#a63f04add215785d4ccfe6ccec03d7667',1,'ir_Gree.h']]], - ['kgreetimermax_5556',['kGreeTimerMax',['../ir__Gree_8h.html#a76048e03908dd0d22cc8cacfbd99a40b',1,'ir_Gree.h']]], - ['kgreezerospace_5557',['kGreeZeroSpace',['../ir__Gree_8cpp.html#aa4694ba8ff0e14cd6b9c4730675c385f',1,'ir_Gree.cpp']]], - ['khaierac176bits_5558',['kHaierAC176Bits',['../IRremoteESP8266_8h.html#a71c5cfe4b9da0da55e8a6e9b32d2ddc9',1,'IRremoteESP8266.h']]], - ['khaierac176defaultrepeat_5559',['kHaierAc176DefaultRepeat',['../IRremoteESP8266_8h.html#af87d7078ba6fd24dd489086111f14db6',1,'IRremoteESP8266.h']]], - ['khaierac176statelength_5560',['kHaierAC176StateLength',['../IRremoteESP8266_8h.html#a98033047ba27af810bb90fe33169cef2',1,'IRremoteESP8266.h']]], - ['khaieracauto_5561',['kHaierAcAuto',['../ir__Haier_8h.html#ac33a02f63ee77e0d3050598511730865',1,'ir_Haier.h']]], - ['khaieracbitmark_5562',['kHaierAcBitMark',['../ir__Haier_8cpp.html#a4dec38325834c873c03588a8046f0963',1,'ir_Haier.cpp']]], - ['khaieracbits_5563',['kHaierACBits',['../IRremoteESP8266_8h.html#ad44cfa0951c24d1f0c67b2fba997f720',1,'IRremoteESP8266.h']]], - ['khaieraccmdfan_5564',['kHaierAcCmdFan',['../ir__Haier_8h.html#a447818ec7970e2ca09540afe44ecf90d',1,'ir_Haier.h']]], - ['khaieraccmdhealth_5565',['kHaierAcCmdHealth',['../ir__Haier_8h.html#a83cd0b5f307d9ae3ed0a3c6ed8fef94d',1,'ir_Haier.h']]], - ['khaieraccmdmode_5566',['kHaierAcCmdMode',['../ir__Haier_8h.html#a4543aa4ee28323bb9cb5c077f9bf9da1',1,'ir_Haier.h']]], - ['khaieraccmdoff_5567',['kHaierAcCmdOff',['../ir__Haier_8h.html#a96599917176ee244874926d1a530dd7e',1,'ir_Haier.h']]], - ['khaieraccmdon_5568',['kHaierAcCmdOn',['../ir__Haier_8h.html#a83973c2ad2b7b95611c81628c387e0d8',1,'ir_Haier.h']]], - ['khaieraccmdsleep_5569',['kHaierAcCmdSleep',['../ir__Haier_8h.html#abe52b62dd513395f2a8c7d47fa2fc514',1,'ir_Haier.h']]], - ['khaieraccmdswing_5570',['kHaierAcCmdSwing',['../ir__Haier_8h.html#afab164c2aabf39fdc1e956ff88af19d9',1,'ir_Haier.h']]], - ['khaieraccmdtempdown_5571',['kHaierAcCmdTempDown',['../ir__Haier_8h.html#aecc31139b4e45a7784669554c6fdbb54',1,'ir_Haier.h']]], - ['khaieraccmdtempup_5572',['kHaierAcCmdTempUp',['../ir__Haier_8h.html#aab5363f07920971c31d6acf8e70d392c',1,'ir_Haier.h']]], - ['khaieraccmdtimercancel_5573',['kHaierAcCmdTimerCancel',['../ir__Haier_8h.html#ab780da80fc471f004c5b34dc8f347d00',1,'ir_Haier.h']]], - ['khaieraccmdtimerset_5574',['kHaierAcCmdTimerSet',['../ir__Haier_8h.html#a9bd7c081d460a4ae5e3eac977f3916e4',1,'ir_Haier.h']]], - ['khaieraccool_5575',['kHaierAcCool',['../ir__Haier_8h.html#a83cd81ea1115f42a403ea5ee07a32bbb',1,'ir_Haier.h']]], - ['khaieracdefaultrepeat_5576',['kHaierAcDefaultRepeat',['../IRremoteESP8266_8h.html#a882914932449e33933b6f8e224cbaf3c',1,'IRremoteESP8266.h']]], - ['khaieracdeftemp_5577',['kHaierAcDefTemp',['../ir__Haier_8h.html#a86c9e8176fc01e52e883cadcc1d31763',1,'ir_Haier.h']]], - ['khaieracdry_5578',['kHaierAcDry',['../ir__Haier_8h.html#a3d36fbe1308221248f45044e5a671636',1,'ir_Haier.h']]], - ['khaieracfan_5579',['kHaierAcFan',['../ir__Haier_8h.html#af4049629b2139ca82471dfed1e1ced15',1,'ir_Haier.h']]], - ['khaieracfanauto_5580',['kHaierAcFanAuto',['../ir__Haier_8h.html#a8a34e74f7083caa98ed4afc31294539e',1,'ir_Haier.h']]], - ['khaieracfanhigh_5581',['kHaierAcFanHigh',['../ir__Haier_8h.html#aa4d9e45ca5777707778ef78a3284da19',1,'ir_Haier.h']]], - ['khaieracfanlow_5582',['kHaierAcFanLow',['../ir__Haier_8h.html#ae31e878b09284a6730a11e2017cfd7a8',1,'ir_Haier.h']]], - ['khaieracfanmed_5583',['kHaierAcFanMed',['../ir__Haier_8h.html#a5dfa833768e549964aa0bf8a336c32b0',1,'ir_Haier.h']]], - ['khaierachdr_5584',['kHaierAcHdr',['../ir__Haier_8cpp.html#a0f5dbd2eb92f10bc354e6b0a7a074084',1,'ir_Haier.cpp']]], - ['khaierachdrgap_5585',['kHaierAcHdrGap',['../ir__Haier_8cpp.html#a4c3fe62f8e5abf5d084009bbd4c4f878',1,'ir_Haier.cpp']]], - ['khaieracheat_5586',['kHaierAcHeat',['../ir__Haier_8h.html#a0edb011bdf85197e63a32d37f8517dd2',1,'ir_Haier.h']]], - ['khaieracmaxtemp_5587',['kHaierAcMaxTemp',['../ir__Haier_8h.html#a925252489fe34d9932151817d0dbe90b',1,'ir_Haier.h']]], - ['khaieracmaxtime_5588',['kHaierAcMaxTime',['../ir__Haier_8h.html#ae04e48e926a7533c3b62f0ff991e1f88',1,'ir_Haier.h']]], - ['khaieracmingap_5589',['kHaierAcMinGap',['../ir__Haier_8cpp.html#a7ab1f44876a931da765b52e4633e5e82',1,'ir_Haier.cpp']]], - ['khaieracmintemp_5590',['kHaierAcMinTemp',['../ir__Haier_8h.html#aafd2a4f38ecf78482a5a94e9c6c23f1c',1,'ir_Haier.h']]], - ['khaieraconespace_5591',['kHaierAcOneSpace',['../ir__Haier_8cpp.html#a43739aa786e08fca2a4a62a680b5c38b',1,'ir_Haier.cpp']]], - ['khaieracprefix_5592',['kHaierAcPrefix',['../ir__Haier_8h.html#a8502c9bea40205e01e6a01b47354272a',1,'ir_Haier.h']]], - ['khaieracsleepbit_5593',['kHaierAcSleepBit',['../ir__Haier_8h.html#ac63b91acdffa55d440b08aee05bda5dc',1,'ir_Haier.h']]], - ['khaieracstatelength_5594',['kHaierACStateLength',['../IRremoteESP8266_8h.html#afb4cd0c1a9c689d862e7095f0ab6dbe5',1,'IRremoteESP8266.h']]], - ['khaieracswingchg_5595',['kHaierAcSwingChg',['../ir__Haier_8h.html#af65a92a0b9d29a52ac882d4457e954e8',1,'ir_Haier.h']]], - ['khaieracswingdown_5596',['kHaierAcSwingDown',['../ir__Haier_8h.html#a2cf3a2102c6d4f9aede44efe853ffaa8',1,'ir_Haier.h']]], - ['khaieracswingoff_5597',['kHaierAcSwingOff',['../ir__Haier_8h.html#ac21f78c3cef931154b3fc953bbebc3b4',1,'ir_Haier.h']]], - ['khaieracswingup_5598',['kHaierAcSwingUp',['../ir__Haier_8h.html#a4bff8829604ee927dda5cfc54bd6cfe6',1,'ir_Haier.h']]], - ['khaieracyrw02auto_5599',['kHaierAcYrw02Auto',['../ir__Haier_8h.html#aa025eeba1c344c50cc98334c97a3c174',1,'ir_Haier.h']]], - ['khaieracyrw02bits_5600',['kHaierACYRW02Bits',['../IRremoteESP8266_8h.html#aab346c5ad482113978e5a2cbb7a06f27',1,'IRremoteESP8266.h']]], - ['khaieracyrw02buttonfan_5601',['kHaierAcYrw02ButtonFan',['../ir__Haier_8h.html#a0f9c265510e1e27f38817f08ef9c622b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonhealth_5602',['kHaierAcYrw02ButtonHealth',['../ir__Haier_8h.html#ab1dc6c0a4ed59446bb69c4dd671c78cd',1,'ir_Haier.h']]], - ['khaieracyrw02buttonmode_5603',['kHaierAcYrw02ButtonMode',['../ir__Haier_8h.html#a74466c50b450b08407c9f226a5d657e5',1,'ir_Haier.h']]], - ['khaieracyrw02buttonpower_5604',['kHaierAcYrw02ButtonPower',['../ir__Haier_8h.html#af36b9c628a697f6c596052ecd143d80b',1,'ir_Haier.h']]], - ['khaieracyrw02buttonsleep_5605',['kHaierAcYrw02ButtonSleep',['../ir__Haier_8h.html#a5c7b8ff351e3d0167ec2c897c4820c40',1,'ir_Haier.h']]], - ['khaieracyrw02buttonswing_5606',['kHaierAcYrw02ButtonSwing',['../ir__Haier_8h.html#aa10c558317448783535e96be5876505c',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempdown_5607',['kHaierAcYrw02ButtonTempDown',['../ir__Haier_8h.html#af4a9e5f7f705c331531ea2863dbbd11d',1,'ir_Haier.h']]], - ['khaieracyrw02buttontempup_5608',['kHaierAcYrw02ButtonTempUp',['../ir__Haier_8h.html#a3b24373f9c812f93eca05ee47e61d6e0',1,'ir_Haier.h']]], - ['khaieracyrw02buttonturbo_5609',['kHaierAcYrw02ButtonTurbo',['../ir__Haier_8h.html#ad80547c526b2eba142297715c0a0636d',1,'ir_Haier.h']]], - ['khaieracyrw02cool_5610',['kHaierAcYrw02Cool',['../ir__Haier_8h.html#a30c5d4e61ae3112a8a3e3622eecbb10b',1,'ir_Haier.h']]], - ['khaieracyrw02defaultrepeat_5611',['kHaierAcYrw02DefaultRepeat',['../IRremoteESP8266_8h.html#a62412e221207dbc2660f93dc265b4218',1,'IRremoteESP8266.h']]], - ['khaieracyrw02dry_5612',['kHaierAcYrw02Dry',['../ir__Haier_8h.html#a66cd902f2d35b4c8f66f085a0950a5fc',1,'ir_Haier.h']]], - ['khaieracyrw02fan_5613',['kHaierAcYrw02Fan',['../ir__Haier_8h.html#a35f50f043a2dda75c59507c1ed845b5d',1,'ir_Haier.h']]], - ['khaieracyrw02fanauto_5614',['kHaierAcYrw02FanAuto',['../ir__Haier_8h.html#ad554d38035ac15e4ea8b855802886989',1,'ir_Haier.h']]], - ['khaieracyrw02fanhigh_5615',['kHaierAcYrw02FanHigh',['../ir__Haier_8h.html#ab47bc48ac77fbf6734a41d10f0a53e4a',1,'ir_Haier.h']]], - ['khaieracyrw02fanlow_5616',['kHaierAcYrw02FanLow',['../ir__Haier_8h.html#a9a0a14ab98e1e52b60b9b9bf611c20cc',1,'ir_Haier.h']]], - ['khaieracyrw02fanmed_5617',['kHaierAcYrw02FanMed',['../ir__Haier_8h.html#a65583649324c6039112e7db26d685afc',1,'ir_Haier.h']]], - ['khaieracyrw02heat_5618',['kHaierAcYrw02Heat',['../ir__Haier_8h.html#aa0873975b6649294a3c9943130cb7a38',1,'ir_Haier.h']]], - ['khaieracyrw02prefix_5619',['kHaierAcYrw02Prefix',['../ir__Haier_8h.html#ac62d0f7ca94e064712f8a7a80da2f11e',1,'ir_Haier.h']]], - ['khaieracyrw02statelength_5620',['kHaierACYRW02StateLength',['../IRremoteESP8266_8h.html#a8f52b7d4595c117cf0b81ffbd1148cda',1,'IRremoteESP8266.h']]], - ['khaieracyrw02swingauto_5621',['kHaierAcYrw02SwingAuto',['../ir__Haier_8h.html#a95ae88223d910d4d966949241bccff8d',1,'ir_Haier.h']]], - ['khaieracyrw02swingbottom_5622',['kHaierAcYrw02SwingBottom',['../ir__Haier_8h.html#aa4b64385da5e9b2a89e15f70cd8c89e9',1,'ir_Haier.h']]], - ['khaieracyrw02swingdown_5623',['kHaierAcYrw02SwingDown',['../ir__Haier_8h.html#aab380411ac07b2b7f67956a5bbc362fb',1,'ir_Haier.h']]], - ['khaieracyrw02swingmiddle_5624',['kHaierAcYrw02SwingMiddle',['../ir__Haier_8h.html#a32d6dd98a050711bf928bf250b769839',1,'ir_Haier.h']]], - ['khaieracyrw02swingoff_5625',['kHaierAcYrw02SwingOff',['../ir__Haier_8h.html#a62570c15418cf24a94c92b162967f892',1,'ir_Haier.h']]], - ['khaieracyrw02swingtop_5626',['kHaierAcYrw02SwingTop',['../ir__Haier_8h.html#adf10f1bc1b293c684232cb6398631f70',1,'ir_Haier.h']]], - ['khaieracyrw02turbohigh_5627',['kHaierAcYrw02TurboHigh',['../ir__Haier_8h.html#ab096c15c69f242b99fbc1e4d7bd7548e',1,'ir_Haier.h']]], - ['khaieracyrw02turbolow_5628',['kHaierAcYrw02TurboLow',['../ir__Haier_8h.html#a19b7f4aee8115eb77267c415d8b3bd82',1,'ir_Haier.h']]], - ['khaieracyrw02turbooff_5629',['kHaierAcYrw02TurboOff',['../ir__Haier_8h.html#aa06ba46287b5806a6373e921cee34a51',1,'ir_Haier.h']]], - ['khaieraczerospace_5630',['kHaierAcZeroSpace',['../ir__Haier_8cpp.html#af2b1a4f27c7b50a1e60ae00bbbec7a16',1,'ir_Haier.cpp']]], - ['kheader_5631',['kHeader',['../IRrecv_8h.html#a0eac186845b9b998a252a3bdfa72e8ed',1,'IRrecv.h']]], - ['khealthstr_5632',['kHealthStr',['../IRtext_8cpp.html#a12474bbd4a7f700c922bcc1de240894f',1,'kHealthStr(): IRtext.cpp'],['../IRtext_8h.html#a7ef833cf90df2c97ef46c5c4b6225a42',1,'kHealthStr(): IRtext.cpp']]], - ['kheatstr_5633',['kHeatStr',['../IRtext_8cpp.html#a3a16f1dabca01c8f8e5ba1516408ba39',1,'kHeatStr(): IRtext.cpp'],['../IRtext_8h.html#a058df7d2db245e307719d025352d464d',1,'kHeatStr(): IRtext.cpp']]], - ['khigheststr_5634',['kHighestStr',['../IRtext_8cpp.html#a219f1d54c5ea75bd5c736efc0d7d7275',1,'kHighestStr(): IRtext.cpp'],['../IRtext_8h.html#ad7706307f507466526b4288e33385bde',1,'kHighestStr(): IRtext.cpp']]], - ['khighnibble_5635',['kHighNibble',['../IRutils_8h.html#a26dd96e82207f707c21e696a60b9c032',1,'IRutils.h']]], - ['khighstr_5636',['kHighStr',['../IRtext_8cpp.html#a127a20ad54e671f48a8faa822ff006f4',1,'kHighStr(): IRtext.cpp'],['../IRtext_8h.html#a5b4ade5e08f30c5e9a61c813bb2046f1',1,'kHighStr(): IRtext.cpp']]], - ['khistr_5637',['kHiStr',['../IRtext_8cpp.html#a7f4994ce51aed70ce6b5b4c88b886466',1,'kHiStr(): IRtext.cpp'],['../IRtext_8h.html#aa6fe661cdd9e2f1dc30d6fee2980cadd',1,'kHiStr(): IRtext.cpp']]], - ['khitachiac1auto_5638',['kHitachiAc1Auto',['../ir__Hitachi_8h.html#a2689ef34702107dc3dce3d1cfa260fc9',1,'ir_Hitachi.h']]], - ['khitachiac1bits_5639',['kHitachiAc1Bits',['../IRremoteESP8266_8h.html#aae6947c431d2c9da4fe2fdd9428012c1',1,'IRremoteESP8266.h']]], - ['khitachiac1checksumstartbyte_5640',['kHitachiAc1ChecksumStartByte',['../ir__Hitachi_8h.html#afafa689c5e922b812f63e08941feb2a7',1,'ir_Hitachi.h']]], - ['khitachiac1cool_5641',['kHitachiAc1Cool',['../ir__Hitachi_8h.html#a1146eda7688843d16094acf7a19a75ac',1,'ir_Hitachi.h']]], - ['khitachiac1dry_5642',['kHitachiAc1Dry',['../ir__Hitachi_8h.html#a82895db5201610844da803bf333102a3',1,'ir_Hitachi.h']]], - ['khitachiac1fan_5643',['kHitachiAc1Fan',['../ir__Hitachi_8h.html#ac5a3ba0e0e4ed02d4792d5a8e6a22654',1,'ir_Hitachi.h']]], - ['khitachiac1fanauto_5644',['kHitachiAc1FanAuto',['../ir__Hitachi_8h.html#a6f9adda7b08ec4b8566ceb4d79966689',1,'ir_Hitachi.h']]], - ['khitachiac1fanhigh_5645',['kHitachiAc1FanHigh',['../ir__Hitachi_8h.html#ace677cf030da9d74eda0f50d54c91411',1,'ir_Hitachi.h']]], - ['khitachiac1fanlow_5646',['kHitachiAc1FanLow',['../ir__Hitachi_8h.html#a011219de5c0e2ba043a8be6345f8cb05',1,'ir_Hitachi.h']]], - ['khitachiac1fanmed_5647',['kHitachiAc1FanMed',['../ir__Hitachi_8h.html#afbc2a535d85adb80cbcbac63e2432b1a',1,'ir_Hitachi.h']]], - ['khitachiac1hdrmark_5648',['kHitachiAc1HdrMark',['../ir__Hitachi_8cpp.html#a2b1891174c78be6f960e92b389d25fe7',1,'ir_Hitachi.cpp']]], - ['khitachiac1hdrspace_5649',['kHitachiAc1HdrSpace',['../ir__Hitachi_8cpp.html#a93f34ee53a375dd7f4ccf82458453701',1,'ir_Hitachi.cpp']]], - ['khitachiac1heat_5650',['kHitachiAc1Heat',['../ir__Hitachi_8h.html#abd5d4db30d6be3b990a74d4481e7eabe',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fa_5651',['kHitachiAc1Model_A',['../ir__Hitachi_8h.html#a5f8fc3bb000d46705e4530ca0a8f7b60',1,'ir_Hitachi.h']]], - ['khitachiac1model_5fb_5652',['kHitachiAc1Model_B',['../ir__Hitachi_8h.html#a2d894a528c538b8a3922e2500241a55b',1,'ir_Hitachi.h']]], - ['khitachiac1sleep1_5653',['kHitachiAc1Sleep1',['../ir__Hitachi_8h.html#ab4ca89a9d8c8034e6a3d8ff17b09f3d5',1,'ir_Hitachi.h']]], - ['khitachiac1sleep2_5654',['kHitachiAc1Sleep2',['../ir__Hitachi_8h.html#a1e1a1ea1743b38da6bc6be63fa796689',1,'ir_Hitachi.h']]], - ['khitachiac1sleep3_5655',['kHitachiAc1Sleep3',['../ir__Hitachi_8h.html#a17eaa63f13a3c04aede9f485c310a930',1,'ir_Hitachi.h']]], - ['khitachiac1sleep4_5656',['kHitachiAc1Sleep4',['../ir__Hitachi_8h.html#a21360448a538fbd9491aa9dd28e6c545',1,'ir_Hitachi.h']]], - ['khitachiac1sleepoff_5657',['kHitachiAc1SleepOff',['../ir__Hitachi_8h.html#a96f87cb3838a1e1aab4b8407dcfc5b78',1,'ir_Hitachi.h']]], - ['khitachiac1statelength_5658',['kHitachiAc1StateLength',['../IRremoteESP8266_8h.html#abb5e2ddb1a8d3c6fa7a94dbe1989ec5d',1,'IRremoteESP8266.h']]], - ['khitachiac1tempauto_5659',['kHitachiAc1TempAuto',['../ir__Hitachi_8h.html#ad402dff999a97b50b392572899522b6a',1,'ir_Hitachi.h']]], - ['khitachiac1tempdelta_5660',['kHitachiAc1TempDelta',['../ir__Hitachi_8h.html#a279c856a2b4d25651b117a8c654cb48d',1,'ir_Hitachi.h']]], - ['khitachiac1tempsize_5661',['kHitachiAc1TempSize',['../ir__Hitachi_8h.html#affb52642edc8f2231f0dc83bc5271885',1,'ir_Hitachi.h']]], - ['khitachiac1timersize_5662',['kHitachiAc1TimerSize',['../ir__Hitachi_8h.html#afd7f469f67f55263b0031b325232751b',1,'ir_Hitachi.h']]], - ['khitachiac2bits_5663',['kHitachiAc2Bits',['../IRremoteESP8266_8h.html#a362a0b0b0afc216cf8162a3724cf073a',1,'IRremoteESP8266.h']]], - ['khitachiac2statelength_5664',['kHitachiAc2StateLength',['../IRremoteESP8266_8h.html#a10377a40053a12e091dbff2869db0352',1,'IRremoteESP8266.h']]], - ['khitachiac344bits_5665',['kHitachiAc344Bits',['../IRremoteESP8266_8h.html#a204fc2410c3d555a37b152a01dceead0',1,'IRremoteESP8266.h']]], - ['khitachiac344buttonfan_5666',['kHitachiAc344ButtonFan',['../ir__Hitachi_8h.html#a5f33b956ec83ee0004785a9c44bd5b0b',1,'ir_Hitachi.h']]], - ['khitachiac344buttonpowermode_5667',['kHitachiAc344ButtonPowerMode',['../ir__Hitachi_8h.html#a3816a8ad86e03f8c5870057e7ad86335',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingh_5668',['kHitachiAc344ButtonSwingH',['../ir__Hitachi_8h.html#a10dea534868d76d99e91458ee28f5fe9',1,'ir_Hitachi.h']]], - ['khitachiac344buttonswingv_5669',['kHitachiAc344ButtonSwingV',['../ir__Hitachi_8h.html#a95c1b0ee7e3802631f4c2708371e7d34',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempdown_5670',['kHitachiAc344ButtonTempDown',['../ir__Hitachi_8h.html#a05d9bd95037669f1d3743d935471db33',1,'ir_Hitachi.h']]], - ['khitachiac344buttontempup_5671',['kHitachiAc344ButtonTempUp',['../ir__Hitachi_8h.html#a74abf2ce4ed5918bf68f485eff179578',1,'ir_Hitachi.h']]], - ['khitachiac344cool_5672',['kHitachiAc344Cool',['../ir__Hitachi_8h.html#a92d4d8dea34a9387e55852b6b5289328',1,'ir_Hitachi.h']]], - ['khitachiac344dry_5673',['kHitachiAc344Dry',['../ir__Hitachi_8h.html#a37697339ddc2ffaf4ee13b5e140adf2c',1,'ir_Hitachi.h']]], - ['khitachiac344fan_5674',['kHitachiAc344Fan',['../ir__Hitachi_8h.html#a296cd0fc1f414a4e15ce228b5a794bcb',1,'ir_Hitachi.h']]], - ['khitachiac344fanauto_5675',['kHitachiAc344FanAuto',['../ir__Hitachi_8h.html#a6439744edb1ae4dd9e8ea2097fac7a9d',1,'ir_Hitachi.h']]], - ['khitachiac344fanhigh_5676',['kHitachiAc344FanHigh',['../ir__Hitachi_8h.html#a83ea1924948ce9ac8266ab64a41f3ebd',1,'ir_Hitachi.h']]], - ['khitachiac344fanlow_5677',['kHitachiAc344FanLow',['../ir__Hitachi_8h.html#acbbb61fde653c84a8e35865fa724872c',1,'ir_Hitachi.h']]], - ['khitachiac344fanmax_5678',['kHitachiAc344FanMax',['../ir__Hitachi_8h.html#af041ed41027b8e444e3069d9a3481c51',1,'ir_Hitachi.h']]], - ['khitachiac344fanmedium_5679',['kHitachiAc344FanMedium',['../ir__Hitachi_8h.html#aa6d47b5c28f758aa297b345cbf853c9a',1,'ir_Hitachi.h']]], - ['khitachiac344fanmin_5680',['kHitachiAc344FanMin',['../ir__Hitachi_8h.html#ac4bafed10c76739698e9a35183beb970',1,'ir_Hitachi.h']]], - ['khitachiac344heat_5681',['kHitachiAc344Heat',['../ir__Hitachi_8h.html#a6c4102910d21dc838efee1fb2477218d',1,'ir_Hitachi.h']]], - ['khitachiac344maxtemp_5682',['kHitachiAc344MaxTemp',['../ir__Hitachi_8h.html#a4a394fc23fb119ba67e3ca53e4b88f7f',1,'ir_Hitachi.h']]], - ['khitachiac344mintemp_5683',['kHitachiAc344MinTemp',['../ir__Hitachi_8h.html#a7322f7769c9c1af2311180474e5b0f57',1,'ir_Hitachi.h']]], - ['khitachiac344statelength_5684',['kHitachiAc344StateLength',['../IRremoteESP8266_8h.html#a2192f6b7c353f7f124dff3b57eab0659',1,'IRremoteESP8266.h']]], - ['khitachiac344swinghauto_5685',['kHitachiAc344SwingHAuto',['../ir__Hitachi_8h.html#a4f93eccee6e3e5f5c49c84034ca25af3',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleft_5686',['kHitachiAc344SwingHLeft',['../ir__Hitachi_8h.html#af714a1eb296b05f3fc8167aff5419764',1,'ir_Hitachi.h']]], - ['khitachiac344swinghleftmax_5687',['kHitachiAc344SwingHLeftMax',['../ir__Hitachi_8h.html#ad0c5636ac0ccfd7e9cd087101bd5d204',1,'ir_Hitachi.h']]], - ['khitachiac344swinghmiddle_5688',['kHitachiAc344SwingHMiddle',['../ir__Hitachi_8h.html#a7e4372e02d72723049b378e955070c21',1,'ir_Hitachi.h']]], - ['khitachiac344swinghright_5689',['kHitachiAc344SwingHRight',['../ir__Hitachi_8h.html#af4b087dec06cfd86920dbf9df22aca63',1,'ir_Hitachi.h']]], - ['khitachiac344swinghrightmax_5690',['kHitachiAc344SwingHRightMax',['../ir__Hitachi_8h.html#a90cffc131be89a36d352c462403f689f',1,'ir_Hitachi.h']]], - ['khitachiac3bitmark_5691',['kHitachiAc3BitMark',['../ir__Hitachi_8cpp.html#a68269a88e02a3030749061e5f28f74cc',1,'ir_Hitachi.cpp']]], - ['khitachiac3bits_5692',['kHitachiAc3Bits',['../IRremoteESP8266_8h.html#ac26b896cdc17018269fa881e10e3aabb',1,'IRremoteESP8266.h']]], - ['khitachiac3hdrmark_5693',['kHitachiAc3HdrMark',['../ir__Hitachi_8cpp.html#af0a80a66094e67b4a78e8dfa539cd22f',1,'ir_Hitachi.cpp']]], - ['khitachiac3hdrspace_5694',['kHitachiAc3HdrSpace',['../ir__Hitachi_8cpp.html#aca4dc0b851c69a5e640337d68eb6f412',1,'ir_Hitachi.cpp']]], - ['khitachiac3minbits_5695',['kHitachiAc3MinBits',['../IRremoteESP8266_8h.html#a66ebaf70d2b4018371825c9cd3078a42',1,'IRremoteESP8266.h']]], - ['khitachiac3minstatelength_5696',['kHitachiAc3MinStateLength',['../IRremoteESP8266_8h.html#ac3becb270bfddaa1c64b1f8582dfc902',1,'IRremoteESP8266.h']]], - ['khitachiac3onespace_5697',['kHitachiAc3OneSpace',['../ir__Hitachi_8cpp.html#a0e630e38b4bffd5ec931153c20e41d97',1,'ir_Hitachi.cpp']]], - ['khitachiac3statelength_5698',['kHitachiAc3StateLength',['../IRremoteESP8266_8h.html#a9cc230bac4f902d46049c7b2c2fdbd3d',1,'IRremoteESP8266.h']]], - ['khitachiac3zerospace_5699',['kHitachiAc3ZeroSpace',['../ir__Hitachi_8cpp.html#a7cf96a2734bcc9a5eb390b8647666925',1,'ir_Hitachi.cpp']]], - ['khitachiac424bitmark_5700',['kHitachiAc424BitMark',['../ir__Hitachi_8cpp.html#acf5f9d83873a74688eb0413708e26eed',1,'ir_Hitachi.cpp']]], - ['khitachiac424bits_5701',['kHitachiAc424Bits',['../IRremoteESP8266_8h.html#ab466e28528a0d688a1b91e8af69025cb',1,'IRremoteESP8266.h']]], - ['khitachiac424buttonfan_5702',['kHitachiAc424ButtonFan',['../ir__Hitachi_8h.html#a4aa278fb1983213a2506c71debe035aa',1,'ir_Hitachi.h']]], - ['khitachiac424buttonpowermode_5703',['kHitachiAc424ButtonPowerMode',['../ir__Hitachi_8h.html#a2dd37a36c6ad928ad0c3485ae4ea78fd',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingh_5704',['kHitachiAc424ButtonSwingH',['../ir__Hitachi_8h.html#af3a0d9499fab327bc7dfb5d57562a946',1,'ir_Hitachi.h']]], - ['khitachiac424buttonswingv_5705',['kHitachiAc424ButtonSwingV',['../ir__Hitachi_8h.html#a59d8e5407daf37d38e0c76ab3abdec9d',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempdown_5706',['kHitachiAc424ButtonTempDown',['../ir__Hitachi_8h.html#ad909ee0bc97e24aa70ff6ecd1cffe6c2',1,'ir_Hitachi.h']]], - ['khitachiac424buttontempup_5707',['kHitachiAc424ButtonTempUp',['../ir__Hitachi_8h.html#ac8885804fb276f6327beb2018b204359',1,'ir_Hitachi.h']]], - ['khitachiac424cool_5708',['kHitachiAc424Cool',['../ir__Hitachi_8h.html#a64c1e01c222e6dec001a7052e822d64f',1,'ir_Hitachi.h']]], - ['khitachiac424dry_5709',['kHitachiAc424Dry',['../ir__Hitachi_8h.html#a56bfde42914bc92f47929179cddcbdf3',1,'ir_Hitachi.h']]], - ['khitachiac424fan_5710',['kHitachiAc424Fan',['../ir__Hitachi_8h.html#a35db6fdcedeb3de0ffb0bb72f1e60a0b',1,'ir_Hitachi.h']]], - ['khitachiac424fanauto_5711',['kHitachiAc424FanAuto',['../ir__Hitachi_8h.html#add1ec95cfd4e388f90154b25410471d0',1,'ir_Hitachi.h']]], - ['khitachiac424fanhigh_5712',['kHitachiAc424FanHigh',['../ir__Hitachi_8h.html#aacabc41baea6c3ddf711424a400144a3',1,'ir_Hitachi.h']]], - ['khitachiac424fanlow_5713',['kHitachiAc424FanLow',['../ir__Hitachi_8h.html#acae66b060db5cd03732ccbf808c6049e',1,'ir_Hitachi.h']]], - ['khitachiac424fanmax_5714',['kHitachiAc424FanMax',['../ir__Hitachi_8h.html#a6298e6dee6ff9f5fc57cfc9ccf30c073',1,'ir_Hitachi.h']]], - ['khitachiac424fanmaxdry_5715',['kHitachiAc424FanMaxDry',['../ir__Hitachi_8h.html#af770b29d838610b87463551444548ac0',1,'ir_Hitachi.h']]], - ['khitachiac424fanmedium_5716',['kHitachiAc424FanMedium',['../ir__Hitachi_8h.html#a3d6479f2e76bd84eeda9f5c0772210c5',1,'ir_Hitachi.h']]], - ['khitachiac424fanmin_5717',['kHitachiAc424FanMin',['../ir__Hitachi_8h.html#aacf1d4b99d89a0e24622ca02402c683b',1,'ir_Hitachi.h']]], - ['khitachiac424fantemp_5718',['kHitachiAc424FanTemp',['../ir__Hitachi_8h.html#a874362698fad488da1a477c4f99923aa',1,'ir_Hitachi.h']]], - ['khitachiac424hdrmark_5719',['kHitachiAc424HdrMark',['../ir__Hitachi_8cpp.html#a7b1dcaa7569237831b08ea061fd403fb',1,'ir_Hitachi.cpp']]], - ['khitachiac424hdrspace_5720',['kHitachiAc424HdrSpace',['../ir__Hitachi_8cpp.html#a9309b801d147dd3eba96ed15245f7445',1,'ir_Hitachi.cpp']]], - ['khitachiac424heat_5721',['kHitachiAc424Heat',['../ir__Hitachi_8h.html#a5cfd38c9e7aa2c39dfa38b1ef4b33b4c',1,'ir_Hitachi.h']]], - ['khitachiac424ldrmark_5722',['kHitachiAc424LdrMark',['../ir__Hitachi_8cpp.html#a0e2a88cb5930fb9726a453bdefe33bae',1,'ir_Hitachi.cpp']]], - ['khitachiac424ldrspace_5723',['kHitachiAc424LdrSpace',['../ir__Hitachi_8cpp.html#ad6285b55ed74e0e1087c3eb12d63b39c',1,'ir_Hitachi.cpp']]], - ['khitachiac424maxtemp_5724',['kHitachiAc424MaxTemp',['../ir__Hitachi_8h.html#a22574044b5a9163aca1f0581b9fa9241',1,'ir_Hitachi.h']]], - ['khitachiac424mintemp_5725',['kHitachiAc424MinTemp',['../ir__Hitachi_8h.html#a3d4311f1f28bbe31a22b80556e678b22',1,'ir_Hitachi.h']]], - ['khitachiac424onespace_5726',['kHitachiAc424OneSpace',['../ir__Hitachi_8cpp.html#a9b9cd22801f17acac593a8bcf334fd71',1,'ir_Hitachi.cpp']]], - ['khitachiac424poweroff_5727',['kHitachiAc424PowerOff',['../ir__Hitachi_8h.html#affc2d076cc0de329466ecbde7186d4eb',1,'ir_Hitachi.h']]], - ['khitachiac424poweron_5728',['kHitachiAc424PowerOn',['../ir__Hitachi_8h.html#a922478904efd86c6ecf7dabec3dd759f',1,'ir_Hitachi.h']]], - ['khitachiac424statelength_5729',['kHitachiAc424StateLength',['../IRremoteESP8266_8h.html#aff17d9c0ccf683895d2c868094679f0a',1,'IRremoteESP8266.h']]], - ['khitachiac424zerospace_5730',['kHitachiAc424ZeroSpace',['../ir__Hitachi_8cpp.html#a0f2032ac476bf344df31dc9351b2b98a',1,'ir_Hitachi.cpp']]], - ['khitachiacauto_5731',['kHitachiAcAuto',['../ir__Hitachi_8h.html#af8c74a8388361162b93339e1b0bc94d9',1,'ir_Hitachi.h']]], - ['khitachiacautotemp_5732',['kHitachiAcAutoTemp',['../ir__Hitachi_8h.html#aaa28bb683fefc065cb115fbfb66994ec',1,'ir_Hitachi.h']]], - ['khitachiacbitmark_5733',['kHitachiAcBitMark',['../ir__Hitachi_8cpp.html#a0993bf3d527a12bfe51c7bbfcf788c59',1,'ir_Hitachi.cpp']]], - ['khitachiacbits_5734',['kHitachiAcBits',['../IRremoteESP8266_8h.html#aec91e459b1e52765c700f8f7a4723f3b',1,'IRremoteESP8266.h']]], - ['khitachiaccool_5735',['kHitachiAcCool',['../ir__Hitachi_8h.html#a2b40b07601fdf8b038c97bb8bd2bec59',1,'ir_Hitachi.h']]], - ['khitachiacdefaultrepeat_5736',['kHitachiAcDefaultRepeat',['../IRremoteESP8266_8h.html#acc8510281d2ff9a808501d375c03ba21',1,'IRremoteESP8266.h']]], - ['khitachiacdry_5737',['kHitachiAcDry',['../ir__Hitachi_8h.html#a19730b13fca736392600580c156ae3c3',1,'ir_Hitachi.h']]], - ['khitachiacfan_5738',['kHitachiAcFan',['../ir__Hitachi_8h.html#a69626883b6fdbd3ccd26bb3123bf1883',1,'ir_Hitachi.h']]], - ['khitachiacfanauto_5739',['kHitachiAcFanAuto',['../ir__Hitachi_8h.html#a6be6f6eae193e784133be63d7cc5d75e',1,'ir_Hitachi.h']]], - ['khitachiacfanhigh_5740',['kHitachiAcFanHigh',['../ir__Hitachi_8h.html#a85ef905a1d3704237141f07defc128f5',1,'ir_Hitachi.h']]], - ['khitachiacfanlow_5741',['kHitachiAcFanLow',['../ir__Hitachi_8h.html#a0add8c3a3d00a81fcc3279af78256de2',1,'ir_Hitachi.h']]], - ['khitachiacfanmed_5742',['kHitachiAcFanMed',['../ir__Hitachi_8h.html#ac88b4cfdce5d69bf07316ddd716c2c11',1,'ir_Hitachi.h']]], - ['khitachiacfreq_5743',['kHitachiAcFreq',['../ir__Hitachi_8h.html#a443eaa664017d7b671bef0e9aa2d643b',1,'ir_Hitachi.h']]], - ['khitachiachdrmark_5744',['kHitachiAcHdrMark',['../ir__Hitachi_8cpp.html#aefe34d17f5c72ee05afb9a6302a450da',1,'ir_Hitachi.cpp']]], - ['khitachiachdrspace_5745',['kHitachiAcHdrSpace',['../ir__Hitachi_8cpp.html#a4a4352723f119ea070be1eba2aafe36b',1,'ir_Hitachi.cpp']]], - ['khitachiacheat_5746',['kHitachiAcHeat',['../ir__Hitachi_8h.html#add2498e77e5585fd8c82a553bb0c22c0',1,'ir_Hitachi.h']]], - ['khitachiacmaxtemp_5747',['kHitachiAcMaxTemp',['../ir__Hitachi_8h.html#a63e17171c40d770d25f24d018aee2c4c',1,'ir_Hitachi.h']]], - ['khitachiacmingap_5748',['kHitachiAcMinGap',['../ir__Hitachi_8cpp.html#a14016b9110c11423c628c8e220e50864',1,'ir_Hitachi.cpp']]], - ['khitachiacmintemp_5749',['kHitachiAcMinTemp',['../ir__Hitachi_8h.html#a9b4f3ea50cc0491f10ff8dc8eabb3ecd',1,'ir_Hitachi.h']]], - ['khitachiaconespace_5750',['kHitachiAcOneSpace',['../ir__Hitachi_8cpp.html#a79a79aaf52a05c021621335586dd928f',1,'ir_Hitachi.cpp']]], - ['khitachiacstatelength_5751',['kHitachiAcStateLength',['../IRremoteESP8266_8h.html#a8bef76bac826afbbc51c2a867af15ed8',1,'IRremoteESP8266.h']]], - ['khitachiaczerospace_5752',['kHitachiAcZeroSpace',['../ir__Hitachi_8cpp.html#a0b03a4abb11d69a8b8da56ca2abc50c8',1,'ir_Hitachi.cpp']]], - ['kholdstr_5753',['kHoldStr',['../IRtext_8cpp.html#a86fd1f86e4a513603449e90a47500986',1,'kHoldStr(): IRtext.cpp'],['../IRtext_8h.html#adb2d0f01f1429b0f3eb7193519fe3d6e',1,'kHoldStr(): IRtext.cpp']]], - ['khoursstr_5754',['kHoursStr',['../IRtext_8cpp.html#ae94260daddf2ea56e54d56bbad66526c',1,'kHoursStr(): IRtext.cpp'],['../IRtext_8h.html#a10ecbc18040f0d0ed88b728c18b0a161',1,'kHoursStr(): IRtext.cpp']]], - ['khourstr_5755',['kHourStr',['../IRtext_8cpp.html#a1d25a0bf2c8a638fff1557a0c5637977',1,'kHourStr(): IRtext.cpp'],['../IRtext_8h.html#a67a94ecb5a557b5335a8085cf1d8cdd6',1,'kHourStr(): IRtext.cpp']]], - ['khumidstr_5756',['kHumidStr',['../IRtext_8cpp.html#aae236cd2e7ed4961360fe687fe38170d',1,'kHumidStr(): IRtext.cpp'],['../IRtext_8h.html#a25365e722200ac40d581c4f585f9ae2f',1,'kHumidStr(): IRtext.cpp']]], - ['kidlestate_5757',['kIdleState',['../IRrecv_8h.html#aabba6fe7d7b97c45173eb7781a5d99bf',1,'IRrecv.h']]], - ['kidstr_5758',['kIdStr',['../IRtext_8cpp.html#a35dc8efdb79d96e4f0a48d3bd7993a6e',1,'kIdStr(): IRtext.cpp'],['../IRtext_8h.html#aed59ca935ee6bc14064af69bf50aa16b',1,'kIdStr(): IRtext.cpp']]], - ['kifeelstr_5759',['kIFeelStr',['../IRtext_8cpp.html#a3c7368d9138477f0eac2a6249ba2606b',1,'kIFeelStr(): IRtext.cpp'],['../IRtext_8h.html#a40f90b18252e14a73dd91527f621e35f',1,'kIFeelStr(): IRtext.cpp']]], - ['kinaxbitmark_5760',['kInaxBitMark',['../ir__Inax_8cpp.html#a84553819866dbfcfad8cba87f6c02e04',1,'ir_Inax.cpp']]], - ['kinaxbits_5761',['kInaxBits',['../IRremoteESP8266_8h.html#af8441f25b32d113096adeaff331c126a',1,'IRremoteESP8266.h']]], - ['kinaxhdrmark_5762',['kInaxHdrMark',['../ir__Inax_8cpp.html#ac467a96d91b6266c3ce9a2a4ec2a8b44',1,'ir_Inax.cpp']]], - ['kinaxhdrspace_5763',['kInaxHdrSpace',['../ir__Inax_8cpp.html#a6ddcc8ca7a5d05cee91e57b3e69cca33',1,'ir_Inax.cpp']]], - ['kinaxmingap_5764',['kInaxMinGap',['../ir__Inax_8cpp.html#a600f49303a77fbdc1d77aae2abe9b9aa',1,'ir_Inax.cpp']]], - ['kinaxminrepeat_5765',['kInaxMinRepeat',['../IRremoteESP8266_8h.html#a37a3d0ae51a6ce850a424fe77d5b22d2',1,'IRremoteESP8266.h']]], - ['kinaxonespace_5766',['kInaxOneSpace',['../ir__Inax_8cpp.html#aeb77e3a51838547a29c1b343eba4c7ef',1,'ir_Inax.cpp']]], - ['kinaxtick_5767',['kInaxTick',['../ir__Inax_8cpp.html#ad437f0beac0893853cc9d5cc214b03c6',1,'ir_Inax.cpp']]], - ['kinaxzerospace_5768',['kInaxZeroSpace',['../ir__Inax_8cpp.html#a115f1f061362c1c3c41e3bb20ea7e1c6',1,'ir_Inax.cpp']]], - ['kinsidestr_5769',['kInsideStr',['../IRtext_8cpp.html#aa94c7a9b472bcd2297b43a5b4008bc51',1,'kInsideStr(): IRtext.cpp'],['../IRtext_8h.html#a55c406749cb48970c11c58ec83ef97eb',1,'kInsideStr(): IRtext.cpp']]], - ['kionstr_5770',['kIonStr',['../IRtext_8cpp.html#afc36ce4beed72e662a8d9d1473dad235',1,'kIonStr(): IRtext.cpp'],['../IRtext_8h.html#add28006fe2f8ac70db1b5048c85be84b',1,'kIonStr(): IRtext.cpp']]], - ['kjvcbitmark_5771',['kJvcBitMark',['../ir__JVC_8cpp.html#a23c11d77431d37bba18776f9341c767f',1,'ir_JVC.cpp']]], - ['kjvcbitmarkticks_5772',['kJvcBitMarkTicks',['../ir__JVC_8cpp.html#aad7cf432a9bd0d2b4df66d5f903a70dd',1,'ir_JVC.cpp']]], - ['kjvcbits_5773',['kJvcBits',['../IRremoteESP8266_8h.html#a7c28467832e7480864a6be0ce87c608f',1,'IRremoteESP8266.h']]], - ['kjvchdrmark_5774',['kJvcHdrMark',['../ir__JVC_8cpp.html#a60d81ad0066288b602054bd24a912f1f',1,'ir_JVC.cpp']]], - ['kjvchdrmarkticks_5775',['kJvcHdrMarkTicks',['../ir__JVC_8cpp.html#abb12fba45b7a366e23849d693953e749',1,'ir_JVC.cpp']]], - ['kjvchdrspace_5776',['kJvcHdrSpace',['../ir__JVC_8cpp.html#a5444718f66ba8b43c1d7d99f7b378a0d',1,'ir_JVC.cpp']]], - ['kjvchdrspaceticks_5777',['kJvcHdrSpaceTicks',['../ir__JVC_8cpp.html#ae7cf6cb7b5ea5fe17a9b182d1ef3b008',1,'ir_JVC.cpp']]], - ['kjvcmingap_5778',['kJvcMinGap',['../ir__JVC_8cpp.html#ac19d8396c10adb687a883d016ec43aa5',1,'ir_JVC.cpp']]], - ['kjvcmingapticks_5779',['kJvcMinGapTicks',['../ir__JVC_8cpp.html#a525e7d672b148c02bdca1f66ab92e6c7',1,'ir_JVC.cpp']]], - ['kjvconespace_5780',['kJvcOneSpace',['../ir__JVC_8cpp.html#a8befef1d03f3a09541c2612c66c0256f',1,'ir_JVC.cpp']]], - ['kjvconespaceticks_5781',['kJvcOneSpaceTicks',['../ir__JVC_8cpp.html#a20d4f7737d71bdbec58694e775669df9',1,'ir_JVC.cpp']]], - ['kjvcrptlength_5782',['kJvcRptLength',['../ir__JVC_8cpp.html#a3896e40881e70c63234fecb88375b5a1',1,'ir_JVC.cpp']]], - ['kjvcrptlengthticks_5783',['kJvcRptLengthTicks',['../ir__JVC_8cpp.html#a75e03cf5739ab0ba67e5cfa426776d16',1,'ir_JVC.cpp']]], - ['kjvctick_5784',['kJvcTick',['../ir__JVC_8cpp.html#acd5a2ba251824cac5311adcc9a813b1a',1,'ir_JVC.cpp']]], - ['kjvczerospace_5785',['kJvcZeroSpace',['../ir__JVC_8cpp.html#a67c790b909f82e044b8c4e7227d9c189',1,'ir_JVC.cpp']]], - ['kjvczerospaceticks_5786',['kJvcZeroSpaceTicks',['../ir__JVC_8cpp.html#a0a5319df3b1e01741cd35a37087342f5',1,'ir_JVC.cpp']]], - ['kkelonbitmark_5787',['kKelonBitMark',['../ir__Kelon_8cpp.html#af3f0f9a4c7492bd5279d113cc0e11270',1,'ir_Kelon.cpp']]], - ['kkelonbits_5788',['kKelonBits',['../IRremoteESP8266_8h.html#a98d17d9115af9c6edff1198b14c46838',1,'IRremoteESP8266.h']]], - ['kkelondrygrademax_5789',['kKelonDryGradeMax',['../ir__Kelon_8h.html#aaf96912cb4f2180a4f8e45ab15a62fdb',1,'ir_Kelon.h']]], - ['kkelondrygrademin_5790',['kKelonDryGradeMin',['../ir__Kelon_8h.html#ad0217fb386e35b899fa63c0917605de1',1,'ir_Kelon.h']]], - ['kkelonfanauto_5791',['kKelonFanAuto',['../ir__Kelon_8h.html#a71f311bc7e9982f96069d186240bafb6',1,'ir_Kelon.h']]], - ['kkelonfanmax_5792',['kKelonFanMax',['../ir__Kelon_8h.html#a4bd60c6979883d711dbd1b6019164963',1,'ir_Kelon.h']]], - ['kkelonfanmedium_5793',['kKelonFanMedium',['../ir__Kelon_8h.html#a93d7558b282b38d11e9a04e95410ff5c',1,'ir_Kelon.h']]], - ['kkelonfanmin_5794',['kKelonFanMin',['../ir__Kelon_8h.html#acac1aee0b3063ff82283b86714722eb9',1,'ir_Kelon.h']]], - ['kkelonfreq_5795',['kKelonFreq',['../ir__Kelon_8cpp.html#aa3c42f0925abf8bb5cd0a9c0e331b86b',1,'ir_Kelon.cpp']]], - ['kkelongap_5796',['kKelonGap',['../ir__Kelon_8cpp.html#aac9bfeaac4f477354641f7a6df2a1343',1,'ir_Kelon.cpp']]], - ['kkelonhdrmark_5797',['kKelonHdrMark',['../ir__Kelon_8cpp.html#a3af58cb728ec13111df8514908cdb306',1,'ir_Kelon.cpp']]], - ['kkelonhdrspace_5798',['kKelonHdrSpace',['../ir__Kelon_8cpp.html#aa8874c181833144e3f9a2385f17fd190',1,'ir_Kelon.cpp']]], - ['kkelonmaxtemp_5799',['kKelonMaxTemp',['../ir__Kelon_8h.html#a04169c90255e4a83f9fd51f67ca07e54',1,'ir_Kelon.h']]], - ['kkelonmintemp_5800',['kKelonMinTemp',['../ir__Kelon_8h.html#abc7695e69ede30a8eeed9f21f47a9ee6',1,'ir_Kelon.h']]], - ['kkelonmodecool_5801',['kKelonModeCool',['../ir__Kelon_8h.html#aabab51724f0036fdfb8a27272ef2b0ad',1,'ir_Kelon.h']]], - ['kkelonmodedry_5802',['kKelonModeDry',['../ir__Kelon_8h.html#a4ced8b60523afafb93f7b86914be34d6',1,'ir_Kelon.h']]], - ['kkelonmodefan_5803',['kKelonModeFan',['../ir__Kelon_8h.html#a39b42afb41b16a05e188faf1e17ab1a6',1,'ir_Kelon.h']]], - ['kkelonmodeheat_5804',['kKelonModeHeat',['../ir__Kelon_8h.html#a924a4138c047d7db1c5f07ff94e66f51',1,'ir_Kelon.h']]], - ['kkelonmodesmart_5805',['kKelonModeSmart',['../ir__Kelon_8h.html#a0bc24153f4463980e3db6069fdd2d1d6',1,'ir_Kelon.h']]], - ['kkelononespace_5806',['kKelonOneSpace',['../ir__Kelon_8cpp.html#a90cec23910a63973f8a37ba16c6d7554',1,'ir_Kelon.cpp']]], - ['kkelonzerospace_5807',['kKelonZeroSpace',['../ir__Kelon_8cpp.html#ad10179a5136391e75b21618b0f32717f',1,'ir_Kelon.cpp']]], - ['kkelvinatorauto_5808',['kKelvinatorAuto',['../ir__Kelvinator_8h.html#a879b005fc5493a693b05e3bb7cbc8fbf',1,'ir_Kelvinator.h']]], - ['kkelvinatorautotemp_5809',['kKelvinatorAutoTemp',['../ir__Kelvinator_8h.html#afa9e7ea8c9fb86cb02358cc8221733b0',1,'ir_Kelvinator.h']]], - ['kkelvinatorbasicfanmax_5810',['kKelvinatorBasicFanMax',['../ir__Kelvinator_8h.html#a10624389f033451cf9a6f4530c2dfb98',1,'ir_Kelvinator.h']]], - ['kkelvinatorbitmark_5811',['kKelvinatorBitMark',['../ir__Kelvinator_8cpp.html#a2014f9f92f1e24a04341398e7e673807',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbitmarkticks_5812',['kKelvinatorBitMarkTicks',['../ir__Kelvinator_8cpp.html#a2d6579257ab7f185e4f0fecdbdf03835',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorbits_5813',['kKelvinatorBits',['../IRremoteESP8266_8h.html#acfa71cb3caf4964829bb1f557dee5b86',1,'IRremoteESP8266.h']]], - ['kkelvinatorchecksumstart_5814',['kKelvinatorChecksumStart',['../ir__Kelvinator_8cpp.html#a0afa7cec1db6a5f46c1b30d7ce718ae6',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooter_5815',['kKelvinatorCmdFooter',['../ir__Kelvinator_8cpp.html#ad2361e09472fa03376b447114a19513f',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcmdfooterbits_5816',['kKelvinatorCmdFooterBits',['../ir__Kelvinator_8cpp.html#af6c85d3b30a5949da53ad9400734f203',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorcool_5817',['kKelvinatorCool',['../ir__Kelvinator_8h.html#ad49a2e457470d6e16d001cdae3215606',1,'ir_Kelvinator.h']]], - ['kkelvinatordefaultrepeat_5818',['kKelvinatorDefaultRepeat',['../IRremoteESP8266_8h.html#a94c968c5cc929f189b8e578d2f55b132',1,'IRremoteESP8266.h']]], - ['kkelvinatordry_5819',['kKelvinatorDry',['../ir__Kelvinator_8h.html#a181b3d10b522f9afb29706da42afea55',1,'ir_Kelvinator.h']]], - ['kkelvinatorfan_5820',['kKelvinatorFan',['../ir__Kelvinator_8h.html#a8d6d97be2fd8a5aefa1319d3f662a50c',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanauto_5821',['kKelvinatorFanAuto',['../ir__Kelvinator_8h.html#ac4994c36634ca0ad8791807c9a992976',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmax_5822',['kKelvinatorFanMax',['../ir__Kelvinator_8h.html#a889ce17d112d1a61420e1064d72c583a',1,'ir_Kelvinator.h']]], - ['kkelvinatorfanmin_5823',['kKelvinatorFanMin',['../ir__Kelvinator_8h.html#a36a9422e2e6c6b7a87e8b2deffd1b189',1,'ir_Kelvinator.h']]], - ['kkelvinatorgapspace_5824',['kKelvinatorGapSpace',['../ir__Kelvinator_8cpp.html#abf66116a235a9d05089182f2f7fd7640',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorgapspaceticks_5825',['kKelvinatorGapSpaceTicks',['../ir__Kelvinator_8cpp.html#a6a81fb4c1cf1ad34f99f3ca87ab74a5c',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmark_5826',['kKelvinatorHdrMark',['../ir__Kelvinator_8cpp.html#a413e824c6bdd4778e70f496917b3fe30',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrmarkticks_5827',['kKelvinatorHdrMarkTicks',['../ir__Kelvinator_8cpp.html#a8ad828958071c75a80928abfb916c0df',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspace_5828',['kKelvinatorHdrSpace',['../ir__Kelvinator_8cpp.html#a9cab23fbd5ba62714fda24765db0e7d1',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorhdrspaceticks_5829',['kKelvinatorHdrSpaceTicks',['../ir__Kelvinator_8cpp.html#ab4fbf899dcb2c2d510055215617d5b44',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorheat_5830',['kKelvinatorHeat',['../ir__Kelvinator_8h.html#a080eade5648791e37c76af7a52e85731',1,'ir_Kelvinator.h']]], - ['kkelvinatormaxtemp_5831',['kKelvinatorMaxTemp',['../ir__Kelvinator_8h.html#a14933442e718db1a87bae5d076ad228d',1,'ir_Kelvinator.h']]], - ['kkelvinatormintemp_5832',['kKelvinatorMinTemp',['../ir__Kelvinator_8h.html#a98871ce825dbbe80d072f25253142879',1,'ir_Kelvinator.h']]], - ['kkelvinatoronespace_5833',['kKelvinatorOneSpace',['../ir__Kelvinator_8cpp.html#aae5a009282517309b8fdbfdaced9d659',1,'ir_Kelvinator.cpp']]], - ['kkelvinatoronespaceticks_5834',['kKelvinatorOneSpaceTicks',['../ir__Kelvinator_8cpp.html#ac907f4495debdcaf680f6e6941b844d5',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorstatelength_5835',['kKelvinatorStateLength',['../IRremoteESP8266_8h.html#af68545e8c2fe9af3719fb74c5d21f0c9',1,'IRremoteESP8266.h']]], - ['kkelvinatortick_5836',['kKelvinatorTick',['../ir__Kelvinator_8cpp.html#a846cbb5609b1dff139a90487000c7393',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospace_5837',['kKelvinatorZeroSpace',['../ir__Kelvinator_8cpp.html#a10469f76f50285a6084bb088fd601dea',1,'ir_Kelvinator.cpp']]], - ['kkelvinatorzerospaceticks_5838',['kKelvinatorZeroSpaceTicks',['../ir__Kelvinator_8cpp.html#a0abc0fdc3d9ac9f12133a46e95d69432',1,'ir_Kelvinator.cpp']]], - ['klasertagbits_5839',['kLasertagBits',['../IRremoteESP8266_8h.html#a3ea0e89a8b6a3ffa4a2d346abeed851e',1,'IRremoteESP8266.h']]], - ['klasertagdelta_5840',['kLasertagDelta',['../ir__Lasertag_8cpp.html#a5c0e8e9c6dec0480c09fcd339ed62257',1,'ir_Lasertag.cpp']]], - ['klasertagexcess_5841',['kLasertagExcess',['../ir__Lasertag_8cpp.html#afa77dc5a431a8d851320e7623378983e',1,'ir_Lasertag.cpp']]], - ['klasertagmingap_5842',['kLasertagMinGap',['../ir__Lasertag_8cpp.html#a33762e2c44dac34e00d255b41d9f2822',1,'ir_Lasertag.cpp']]], - ['klasertagminrepeat_5843',['kLasertagMinRepeat',['../IRremoteESP8266_8h.html#a9b36135c3df24eab232a5edac8c58c5e',1,'IRremoteESP8266.h']]], - ['klasertagminsamples_5844',['kLasertagMinSamples',['../ir__Lasertag_8cpp.html#acbf98970106cadb43e0703ae2caab0c1',1,'ir_Lasertag.cpp']]], - ['klasertagtick_5845',['kLasertagTick',['../ir__Lasertag_8cpp.html#a878b5d53379f8b1b21dfe19f1f83a626',1,'ir_Lasertag.cpp']]], - ['klasertagtolerance_5846',['kLasertagTolerance',['../ir__Lasertag_8cpp.html#a6146bcf378515d31330b3fec5c967346',1,'ir_Lasertag.cpp']]], - ['klaststr_5847',['kLastStr',['../IRtext_8cpp.html#ad7c8430b935afb7aec114788a9c0bf7d',1,'kLastStr(): IRtext.cpp'],['../IRtext_8h.html#aa9ffd7c6e6921607653ed5dc1fea4f32',1,'kLastStr(): IRtext.cpp']]], - ['kleftmaxstr_5848',['kLeftMaxStr',['../IRtext_8cpp.html#a1a82999b6eb3b6637f51bb8ce6a46efd',1,'kLeftMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ab2fd48f052fcfed8ca779ca499edcdbf',1,'kLeftMaxStr(): IRtext.cpp']]], - ['kleftstr_5849',['kLeftStr',['../IRtext_8cpp.html#a0bb005966f2ff2da12a542e713f7f1f2',1,'kLeftStr(): IRtext.cpp'],['../IRtext_8h.html#a001f11495c7c9452ceec68455ae524bf',1,'kLeftStr(): IRtext.cpp']]], - ['klegopfbitmark_5850',['kLegoPfBitMark',['../ir__Lego_8cpp.html#afdf76660f62bfefb4a813d57cd84b590',1,'ir_Lego.cpp']]], - ['klegopfbits_5851',['kLegoPfBits',['../IRremoteESP8266_8h.html#a8a7c7659250a81c7c84fc739eafed13e',1,'IRremoteESP8266.h']]], - ['klegopfhdrspace_5852',['kLegoPfHdrSpace',['../ir__Lego_8cpp.html#a140e8707900bfd4e3a9e2722a6b0bfb3',1,'ir_Lego.cpp']]], - ['klegopfmincommandlength_5853',['kLegoPfMinCommandLength',['../ir__Lego_8cpp.html#ad9a0c5184cc422ec1b32edf58c52d2b1',1,'ir_Lego.cpp']]], - ['klegopfminrepeat_5854',['kLegoPfMinRepeat',['../IRremoteESP8266_8h.html#a2614cf3cb840f028eb1dc684aeb1272c',1,'IRremoteESP8266.h']]], - ['klegopfonespace_5855',['kLegoPfOneSpace',['../ir__Lego_8cpp.html#a59a41085f2e8f81e1019fd40782269e3',1,'ir_Lego.cpp']]], - ['klegopfzerospace_5856',['kLegoPfZeroSpace',['../ir__Lego_8cpp.html#ada07e8aaf79cf58c46b301a410d9fb3e',1,'ir_Lego.cpp']]], - ['klg2bitmark_5857',['kLg2BitMark',['../ir__LG_8cpp.html#abf4db4647161db6fb2548b5200c41843',1,'ir_LG.cpp']]], - ['klg2hdrmark_5858',['kLg2HdrMark',['../ir__LG_8cpp.html#a5ca50077fba2d5130220255e1659e0c3',1,'ir_LG.cpp']]], - ['klg2hdrspace_5859',['kLg2HdrSpace',['../ir__LG_8cpp.html#a6637da052fea9320e97cff261f219cdb',1,'ir_LG.cpp']]], - ['klg32bits_5860',['kLg32Bits',['../IRremoteESP8266_8h.html#ae3c458814d7221b66d2f267cb2663bd2',1,'IRremoteESP8266.h']]], - ['klg32hdrmark_5861',['kLg32HdrMark',['../ir__LG_8cpp.html#a26cb3fb11b1a0bf0815868767e50f31b',1,'ir_LG.cpp']]], - ['klg32hdrspace_5862',['kLg32HdrSpace',['../ir__LG_8cpp.html#a59ddf2070642615e162c85b7575aff76',1,'ir_LG.cpp']]], - ['klg32rpthdrmark_5863',['kLg32RptHdrMark',['../ir__LG_8cpp.html#af19a674228bea82c1c588aa9dd974805',1,'ir_LG.cpp']]], - ['klgacauto_5864',['kLgAcAuto',['../ir__LG_8h.html#ae5e45a0f42ce7544d6fb7981a43fb932',1,'ir_LG.h']]], - ['klgaccool_5865',['kLgAcCool',['../ir__LG_8h.html#a3ba35885488bdda3d87ba344a5c58eb2',1,'ir_LG.h']]], - ['klgacdry_5866',['kLgAcDry',['../ir__LG_8h.html#ab3b9a106551be1217e0c824cffe1ea44',1,'ir_LG.h']]], - ['klgacfan_5867',['kLgAcFan',['../ir__LG_8h.html#afc12144673b8dd0555833427fa757275',1,'ir_LG.h']]], - ['klgacfanauto_5868',['kLgAcFanAuto',['../ir__LG_8h.html#a3dee1dc33f768d36a2216213c90a0a5c',1,'ir_LG.h']]], - ['klgacfanhigh_5869',['kLgAcFanHigh',['../ir__LG_8h.html#a89888f8d36899b5526e4c2ebb1097357',1,'ir_LG.h']]], - ['klgacfanlow_5870',['kLgAcFanLow',['../ir__LG_8h.html#afa3633c1b26d837f85b10a8a8d677efc',1,'ir_LG.h']]], - ['klgacfanlowest_5871',['kLgAcFanLowest',['../ir__LG_8h.html#a6b89a2e6a5bee761e1754fe520459d49',1,'ir_LG.h']]], - ['klgacfanmedium_5872',['kLgAcFanMedium',['../ir__LG_8h.html#abe0fb8a8f9d6ab9ebda36d0343841619',1,'ir_LG.h']]], - ['klgacheat_5873',['kLgAcHeat',['../ir__LG_8h.html#a6c17d61082cc24f9d714c5d4ac151933',1,'ir_LG.h']]], - ['klgacmaxtemp_5874',['kLgAcMaxTemp',['../ir__LG_8h.html#a0fab7b6e6d1138638bdeadeab85f5090',1,'ir_LG.h']]], - ['klgacmintemp_5875',['kLgAcMinTemp',['../ir__LG_8h.html#ae3bef99e329f057358001cacf67f6d70',1,'ir_LG.h']]], - ['klgacoffcommand_5876',['kLgAcOffCommand',['../ir__LG_8h.html#aecf8158eec1d9ec0d54056392b512296',1,'ir_LG.h']]], - ['klgacpoweroff_5877',['kLgAcPowerOff',['../ir__LG_8h.html#a3b2681e41071298197d849fbd7649318',1,'ir_LG.h']]], - ['klgacpoweron_5878',['kLgAcPowerOn',['../ir__LG_8h.html#a87d2f6e4e2755aaab4762952b1bf6108',1,'ir_LG.h']]], - ['klgacsignature_5879',['kLgAcSignature',['../ir__LG_8h.html#ab7c3589deb28829ad0313b1505ec196e',1,'ir_LG.h']]], - ['klgactempadjust_5880',['kLgAcTempAdjust',['../ir__LG_8h.html#a16210dc395a86dc4562436047c22600f',1,'ir_LG.h']]], - ['klgbitmark_5881',['kLgBitMark',['../ir__LG_8cpp.html#a9311195710d4c3a2ac48456390a03138',1,'ir_LG.cpp']]], - ['klgbits_5882',['kLgBits',['../IRremoteESP8266_8h.html#a256bd6093034b3e4c33324680f3a7102',1,'IRremoteESP8266.h']]], - ['klgdefaultrepeat_5883',['kLgDefaultRepeat',['../IRremoteESP8266_8h.html#a2d6832b3d214e0adad781c205993e461',1,'IRremoteESP8266.h']]], - ['klghdrmark_5884',['kLgHdrMark',['../ir__LG_8cpp.html#a74f253d9e4cc72148233021c47d59f35',1,'ir_LG.cpp']]], - ['klghdrspace_5885',['kLgHdrSpace',['../ir__LG_8cpp.html#a6eaf100cde647fc119d3e993680afd47',1,'ir_LG.cpp']]], - ['klgmingap_5886',['kLgMinGap',['../ir__LG_8cpp.html#a784323468e6b5ebc65bd2870a94fb553',1,'ir_LG.cpp']]], - ['klgminmessagelength_5887',['kLgMinMessageLength',['../ir__LG_8cpp.html#a4eb3f82ae2ca6c34b58e512848a6dc41',1,'ir_LG.cpp']]], - ['klgonespace_5888',['kLgOneSpace',['../ir__LG_8cpp.html#a05fe6a47f437efc686cb46ec805da4d4',1,'ir_LG.cpp']]], - ['klgrptspace_5889',['kLgRptSpace',['../ir__LG_8cpp.html#a834b8f08ee32030c51ea5e2c5bd5a73c',1,'ir_LG.cpp']]], - ['klgzerospace_5890',['kLgZeroSpace',['../ir__LG_8cpp.html#a981fe3cfc4adf0b3016a008ca1bbf734',1,'ir_LG.cpp']]], - ['klightstr_5891',['kLightStr',['../IRtext_8cpp.html#a2912b7dc11fd571706eaaf90e0095a4f',1,'kLightStr(): IRtext.cpp'],['../IRtext_8h.html#a926ebb4be14179afdc55d5524c8eb5da',1,'kLightStr(): IRtext.cpp']]], - ['klighttogglestr_5892',['kLightToggleStr',['../IRtext_8cpp.html#a74a3ef3c72995e19582be04a2716b285',1,'kLightToggleStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac8ce54e78f0d8f7e0043d08e6256c',1,'kLightToggleStr(): IRtext.cpp']]], - ['klostr_5893',['kLoStr',['../IRtext_8cpp.html#a72fc3855eec7026260de3a6b3a25c377',1,'kLoStr(): IRtext.cpp'],['../IRtext_8h.html#abf3295aeb3dfb7048e677d8d6e65e47c',1,'kLoStr(): IRtext.cpp']]], - ['kloudstr_5894',['kLoudStr',['../IRtext_8cpp.html#a3b6d3eed96c5623cc95ebcfb93cb6f96',1,'kLoudStr(): IRtext.cpp'],['../IRtext_8h.html#a7d265b75ed59c0be3c6b72ec0eaf8aa2',1,'kLoudStr(): IRtext.cpp']]], - ['klowerstr_5895',['kLowerStr',['../IRtext_8cpp.html#a518681524ec3c8f8bc993823003fe58a',1,'kLowerStr(): IRtext.cpp'],['../IRtext_8h.html#ae389ed4ed6982d4617ee3f3e82ce388c',1,'kLowerStr(): IRtext.cpp']]], - ['kloweststr_5896',['kLowestStr',['../IRtext_8cpp.html#ae0c595955599a398669a372edd339f67',1,'kLowestStr(): IRtext.cpp'],['../IRtext_8h.html#a31a34e51d7f1f9360cc3a7ea3f2bf7a3',1,'kLowestStr(): IRtext.cpp']]], - ['klownibble_5897',['kLowNibble',['../IRutils_8h.html#ad0288cc71e1814a27c27393f06676eec',1,'IRutils.h']]], - ['klowstr_5898',['kLowStr',['../IRtext_8cpp.html#a18f69bf40b866ee1d30d1586757d5f41',1,'kLowStr(): IRtext.cpp'],['../IRtext_8h.html#a09c0f7f1b07f7591bdbe56fd8a18f7ea',1,'kLowStr(): IRtext.cpp']]], - ['klutronbits_5899',['kLutronBits',['../IRremoteESP8266_8h.html#a814dfab515b91887c494237b1f6ebd99',1,'IRremoteESP8266.h']]], - ['klutrondelta_5900',['kLutronDelta',['../ir__Lutron_8cpp.html#a4220004fac195ef46388199ad9624860',1,'ir_Lutron.cpp']]], - ['klutrongap_5901',['kLutronGap',['../ir__Lutron_8cpp.html#a18ffb51db0ae33904a64012cb72d6165',1,'ir_Lutron.cpp']]], - ['klutrontick_5902',['kLutronTick',['../ir__Lutron_8cpp.html#a04a84309978b79c0983c398a497a087a',1,'ir_Lutron.cpp']]], - ['kmagiquestbits_5903',['kMagiquestBits',['../IRremoteESP8266_8h.html#ad756bfec6eabbe2ac10b7847f87fb751',1,'IRremoteESP8266.h']]], - ['kmagiquestgap_5904',['kMagiQuestGap',['../ir__Magiquest_8h.html#aebdea5a1a55547d812f1f7bb2d3ddf1f',1,'ir_Magiquest.h']]], - ['kmagiquestmarkone_5905',['kMagiQuestMarkOne',['../ir__Magiquest_8h.html#a0d5d090015ecf49995514054c29cb4e2',1,'ir_Magiquest.h']]], - ['kmagiquestmarkzero_5906',['kMagiQuestMarkZero',['../ir__Magiquest_8h.html#a7240a15dbb9bc6a1e31575be7837c390',1,'ir_Magiquest.h']]], - ['kmagiquestoneratio_5907',['kMagiQuestOneRatio',['../ir__Magiquest_8h.html#a073cdb7ca4dd35b8fa05d99eb7da5b65',1,'ir_Magiquest.h']]], - ['kmagiquestspaceone_5908',['kMagiQuestSpaceOne',['../ir__Magiquest_8h.html#a92bad440c0291cbb903f08de08d96fb2',1,'ir_Magiquest.h']]], - ['kmagiquestspacezero_5909',['kMagiQuestSpaceZero',['../ir__Magiquest_8h.html#abe557052c5c3bef87e62daf71b4c8654',1,'ir_Magiquest.h']]], - ['kmagiquesttotalusec_5910',['kMagiQuestTotalUsec',['../ir__Magiquest_8h.html#a819dcf22b127f4f7b282d784490a83c3',1,'ir_Magiquest.h']]], - ['kmagiquestzeroratio_5911',['kMagiQuestZeroRatio',['../ir__Magiquest_8h.html#a41e5594b8e1510267e563ed78fbe98b0',1,'ir_Magiquest.h']]], - ['kmanualstr_5912',['kManualStr',['../IRtext_8cpp.html#a619896ae89717b2b0e1d3492bb528cbc',1,'kManualStr(): IRtext.cpp'],['../IRtext_8h.html#aa8d9143da032cdc1accf7f4441b05bc8',1,'kManualStr(): IRtext.cpp']]], - ['kmark_5913',['kMark',['../ir__Lasertag_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7af2e83face1b9378d216f15a4d379cf',1,'kMark(): ir_RC5_RC6.cpp']]], - ['kmarkexcess_5914',['kMarkExcess',['../IRrecv_8h.html#a99bbffe986ad7ba86d2b11e75f4aa50e',1,'IRrecv.h']]], - ['kmarkstate_5915',['kMarkState',['../IRrecv_8h.html#acc85ad22929660bdc17fe185d87edfb2',1,'IRrecv.h']]], - ['kmaxaccurateusecdelay_5916',['kMaxAccurateUsecDelay',['../IRsend_8h.html#a527e66125f3ae6ce87adbc72eab7d0b9',1,'IRsend.h']]], - ['kmaximumstr_5917',['kMaximumStr',['../IRtext_8cpp.html#af346693e98c91c7ce79bb22c7460dcee',1,'kMaximumStr(): IRtext.cpp'],['../IRtext_8h.html#a487173616cc3fced0489c01c11333912',1,'kMaximumStr(): IRtext.cpp']]], - ['kmaxleftstr_5918',['kMaxLeftStr',['../IRtext_8cpp.html#ae8ad7e46c3a33b4b9c5fa6545c9e3822',1,'kMaxLeftStr(): IRtext.cpp'],['../IRtext_8h.html#aac197960695463757652bc643efdcd59',1,'kMaxLeftStr(): IRtext.cpp']]], - ['kmaxrightstr_5919',['kMaxRightStr',['../IRtext_8cpp.html#a1ae3f331adb8ac6d1a27aa3d688fb65f',1,'kMaxRightStr(): IRtext.cpp'],['../IRtext_8h.html#a0f888d5c39cf82b2c02a7caad10c716e',1,'kMaxRightStr(): IRtext.cpp']]], - ['kmaxstr_5920',['kMaxStr',['../IRtext_8cpp.html#ad30e01090f06db0a3cb0c00bb6d2f0ca',1,'kMaxStr(): IRtext.cpp'],['../IRtext_8h.html#a7f4b2ff4134386a09e2bcb5f71f591cb',1,'kMaxStr(): IRtext.cpp']]], - ['kmaxtimeoutms_5921',['kMaxTimeoutMs',['../IRrecv_8h.html#a73391726d7caccb9b498bba73a969784',1,'IRrecv.h']]], - ['kmediumstr_5922',['kMediumStr',['../IRtext_8cpp.html#ac59539e93fdc7d8f15f1f55bcbf933c5',1,'kMediumStr(): IRtext.cpp'],['../IRtext_8h.html#a122ee1c6b866267f771888a7d7b2969b',1,'kMediumStr(): IRtext.cpp']]], - ['kmedstr_5923',['kMedStr',['../IRtext_8cpp.html#a4832f8f5118018fa3c6eae1cd652eabf',1,'kMedStr(): IRtext.cpp'],['../IRtext_8h.html#a18f613c7f11f6f746227cfa8cc1e00e0',1,'kMedStr(): IRtext.cpp']]], - ['kmetzaddressbits_5924',['kMetzAddressBits',['../ir__Metz_8cpp.html#accbe5b6fed5bd637faff4b6e04bd1ced',1,'ir_Metz.cpp']]], - ['kmetzbitmark_5925',['kMetzBitMark',['../ir__Metz_8cpp.html#a6aa8842178b5c67d709bca787a285301',1,'ir_Metz.cpp']]], - ['kmetzbits_5926',['kMetzBits',['../IRremoteESP8266_8h.html#ad07971b39dd912f9e01ab5912c0667e6',1,'IRremoteESP8266.h']]], - ['kmetzcommandbits_5927',['kMetzCommandBits',['../ir__Metz_8cpp.html#a71d1a54f579541d040640f468dbbd47f',1,'ir_Metz.cpp']]], - ['kmetzfreq_5928',['kMetzFreq',['../ir__Metz_8cpp.html#a4970bcdab10f7ccfc6d619f417c312ab',1,'ir_Metz.cpp']]], - ['kmetzhdrmark_5929',['kMetzHdrMark',['../ir__Metz_8cpp.html#a37d8db3081bb8155738a8e0ca3fb0f69',1,'ir_Metz.cpp']]], - ['kmetzhdrspace_5930',['kMetzHdrSpace',['../ir__Metz_8cpp.html#a0692936979b5453e9a3baf867ec8ed0e',1,'ir_Metz.cpp']]], - ['kmetzminrepeat_5931',['kMetzMinRepeat',['../IRremoteESP8266_8h.html#a06aa5d85cd9b325024d79ec9af9e30e4',1,'IRremoteESP8266.h']]], - ['kmetzonespace_5932',['kMetzOneSpace',['../ir__Metz_8cpp.html#a397415b944f0be2a3b87c6c8eaeddda0',1,'ir_Metz.cpp']]], - ['kmetzzerospace_5933',['kMetzZeroSpace',['../ir__Metz_8cpp.html#ac5eb86e56a2df05a02e1581d0f8595c5',1,'ir_Metz.cpp']]], - ['kmiddlestr_5934',['kMiddleStr',['../IRtext_8cpp.html#a536f05d84867cfae601d4c1a2312d755',1,'kMiddleStr(): IRtext.cpp'],['../IRtext_8h.html#abbd5b682b584b737c76bded900a6ffad',1,'kMiddleStr(): IRtext.cpp']]], - ['kmidea24bits_5935',['kMidea24Bits',['../IRremoteESP8266_8h.html#aff132faa67b1d07890378df5c9b52a14',1,'IRremoteESP8266.h']]], - ['kmidea24mingap_5936',['kMidea24MinGap',['../ir__Midea_8cpp.html#abfee73cafcc017c4742893908200dffc',1,'ir_Midea.cpp']]], - ['kmidea24minrepeat_5937',['kMidea24MinRepeat',['../IRremoteESP8266_8h.html#a8ed4bb62818fc64e4c4b60ef1094059e',1,'IRremoteESP8266.h']]], - ['kmideaacauto_5938',['kMideaACAuto',['../ir__Midea_8h.html#a379f580c4d1832a62fe49d66f7c13af6',1,'ir_Midea.h']]], - ['kmideaaccool_5939',['kMideaACCool',['../ir__Midea_8h.html#a94b1b18f6aa9c5010699ea9bfcc89b21',1,'ir_Midea.h']]], - ['kmideaacdry_5940',['kMideaACDry',['../ir__Midea_8h.html#a88c2d215406e337b437b99a04c4ca6c4',1,'ir_Midea.h']]], - ['kmideaacfan_5941',['kMideaACFan',['../ir__Midea_8h.html#ac92dd372bb18d43aea73d5ec511e1290',1,'ir_Midea.h']]], - ['kmideaacfanauto_5942',['kMideaACFanAuto',['../ir__Midea_8h.html#a334a64f653b141d67ffda2eca2a9851f',1,'ir_Midea.h']]], - ['kmideaacfanhigh_5943',['kMideaACFanHigh',['../ir__Midea_8h.html#a9c177aff562a19f32d6cf010704ac681',1,'ir_Midea.h']]], - ['kmideaacfanlow_5944',['kMideaACFanLow',['../ir__Midea_8h.html#a90ebe3812e8b554798a2083ddfe9fdff',1,'ir_Midea.h']]], - ['kmideaacfanmed_5945',['kMideaACFanMed',['../ir__Midea_8h.html#a9406c8d9ad79e6a121a29cd5455e8e7d',1,'ir_Midea.h']]], - ['kmideaacheat_5946',['kMideaACHeat',['../ir__Midea_8h.html#aa0fb74d8406327a9510f0efa8a16a488',1,'ir_Midea.h']]], - ['kmideaacmaxsensortempc_5947',['kMideaACMaxSensorTempC',['../ir__Midea_8h.html#a784d183233c97b36f18564c3079fa7df',1,'ir_Midea.h']]], - ['kmideaacmaxsensortempf_5948',['kMideaACMaxSensorTempF',['../ir__Midea_8h.html#a7255c3b9cc882762e015e23512cabc2b',1,'ir_Midea.h']]], - ['kmideaacmaxtempc_5949',['kMideaACMaxTempC',['../ir__Midea_8h.html#a0cccc3093cffabe1e512f298c04b3ba1',1,'ir_Midea.h']]], - ['kmideaacmaxtempf_5950',['kMideaACMaxTempF',['../ir__Midea_8h.html#ac7306c86080e934055d5be9728c91629',1,'ir_Midea.h']]], - ['kmideaacminsensortempc_5951',['kMideaACMinSensorTempC',['../ir__Midea_8h.html#afac831019875d12925c451bf77222a9e',1,'ir_Midea.h']]], - ['kmideaacminsensortempf_5952',['kMideaACMinSensorTempF',['../ir__Midea_8h.html#aae0e3970c0c9e9798797bb8a6b5cc2cc',1,'ir_Midea.h']]], - ['kmideaacmintempc_5953',['kMideaACMinTempC',['../ir__Midea_8h.html#ae849eb79db6c077d617283154edade84',1,'ir_Midea.h']]], - ['kmideaacmintempf_5954',['kMideaACMinTempF',['../ir__Midea_8h.html#a0b0bdf519164f793a129d0e32152069a',1,'ir_Midea.h']]], - ['kmideaacsensortempontimeroff_5955',['kMideaACSensorTempOnTimerOff',['../ir__Midea_8h.html#a009632051bf4eb07bf538df4dd88e395',1,'ir_Midea.h']]], - ['kmideaacswingvstep_5956',['kMideaACSwingVStep',['../ir__Midea_8h.html#a040f6f438909ede82e7c1cf6963a302e',1,'ir_Midea.h']]], - ['kmideaactimeroff_5957',['kMideaACTimerOff',['../ir__Midea_8h.html#aeca8c17c8b25199756e3decc283c1525',1,'ir_Midea.h']]], - ['kmideaactoggleecono_5958',['kMideaACToggleEcono',['../ir__Midea_8h.html#afae5d72469e092300eb740d696b27c2b',1,'ir_Midea.h']]], - ['kmideaactogglelight_5959',['kMideaACToggleLight',['../ir__Midea_8h.html#a76d6884a5bd3b8bfc72025f424820ce3',1,'ir_Midea.h']]], - ['kmideaactoggleswingv_5960',['kMideaACToggleSwingV',['../ir__Midea_8h.html#a5420b72289d3ae99a6dbc5c94914c473',1,'ir_Midea.h']]], - ['kmideaactoggleturbo_5961',['kMideaACToggleTurbo',['../ir__Midea_8h.html#a50f88772bb6bf8a4fd239cd6ca1f7e24',1,'ir_Midea.h']]], - ['kmideaactypecommand_5962',['kMideaACTypeCommand',['../ir__Midea_8h.html#a6df81f61bed8016ef5cad9d7a3bc89ba',1,'ir_Midea.h']]], - ['kmideaactypefollow_5963',['kMideaACTypeFollow',['../ir__Midea_8h.html#a0837f838d5b48d577a0941a1eab51bb2',1,'ir_Midea.h']]], - ['kmideaactypespecial_5964',['kMideaACTypeSpecial',['../ir__Midea_8h.html#af6ee12e87e831016f159aa2a480af8aa',1,'ir_Midea.h']]], - ['kmideabitmark_5965',['kMideaBitMark',['../ir__Midea_8cpp.html#a39dc2d03456f67418519dc0f5efde7e0',1,'ir_Midea.cpp']]], - ['kmideabitmarkticks_5966',['kMideaBitMarkTicks',['../ir__Midea_8cpp.html#ac4d9b1460516aa19913b5bd328c1e176',1,'ir_Midea.cpp']]], - ['kmideabits_5967',['kMideaBits',['../IRremoteESP8266_8h.html#afc98096b1e2945e2eaeb07d70d511239',1,'IRremoteESP8266.h']]], - ['kmideahdrmark_5968',['kMideaHdrMark',['../ir__Midea_8cpp.html#adcaa1ad6e2ba1022f3c90266f4fd0378',1,'ir_Midea.cpp']]], - ['kmideahdrmarkticks_5969',['kMideaHdrMarkTicks',['../ir__Midea_8cpp.html#af63b6cfcc5dc3e501b61c0d55d678f9e',1,'ir_Midea.cpp']]], - ['kmideahdrspace_5970',['kMideaHdrSpace',['../ir__Midea_8cpp.html#a8676eda087a85f6639b547140496c12f',1,'ir_Midea.cpp']]], - ['kmideahdrspaceticks_5971',['kMideaHdrSpaceTicks',['../ir__Midea_8cpp.html#aad99b5d8361733a9ca662735783e061c',1,'ir_Midea.cpp']]], - ['kmideamingap_5972',['kMideaMinGap',['../ir__Midea_8cpp.html#ad9ed8fb4841654fa756614862ac63be7',1,'ir_Midea.cpp']]], - ['kmideamingapticks_5973',['kMideaMinGapTicks',['../ir__Midea_8cpp.html#accd4e69e8fe0957ba013b97879fb1120',1,'ir_Midea.cpp']]], - ['kmideaminrepeat_5974',['kMideaMinRepeat',['../IRremoteESP8266_8h.html#aa8876e8e177b8e71154f8cfb42b19160',1,'IRremoteESP8266.h']]], - ['kmideaonespace_5975',['kMideaOneSpace',['../ir__Midea_8cpp.html#aabe187743f36e664c6069b004e9a82f7',1,'ir_Midea.cpp']]], - ['kmideaonespaceticks_5976',['kMideaOneSpaceTicks',['../ir__Midea_8cpp.html#a2cf0d5df2e5a3d7b1d24fd25ae3d7453',1,'ir_Midea.cpp']]], - ['kmideatick_5977',['kMideaTick',['../ir__Midea_8cpp.html#a878185258a4174978b072ac36aa377e2',1,'ir_Midea.cpp']]], - ['kmideatolerance_5978',['kMideaTolerance',['../ir__Midea_8cpp.html#a55553c3b8e7997fb1257ac2a37a929b6',1,'ir_Midea.cpp']]], - ['kmideazerospace_5979',['kMideaZeroSpace',['../ir__Midea_8cpp.html#a107d1d062e8475b84ec4ab548c3f01ef',1,'ir_Midea.cpp']]], - ['kmideazerospaceticks_5980',['kMideaZeroSpaceTicks',['../ir__Midea_8cpp.html#acd6580988c12ef5614727dd4d1b4c92d',1,'ir_Midea.cpp']]], - ['kmidstr_5981',['kMidStr',['../IRtext_8cpp.html#afd827d424c0bfdcc34b3607440fd2652',1,'kMidStr(): IRtext.cpp'],['../IRtext_8h.html#a571a28fe4174574caac4d93fb09ae196',1,'kMidStr(): IRtext.cpp']]], - ['kmilesminrepeat_5982',['kMilesMinRepeat',['../IRremoteESP8266_8h.html#aa92b00aa3423473fc42766d369ff99ad',1,'IRremoteESP8266.h']]], - ['kmilestag2hdrmark_5983',['kMilesTag2HdrMark',['../ir__MilesTag2_8cpp.html#af5598d2d156a1db3125f0e8a397cd137',1,'ir_MilesTag2.cpp']]], - ['kmilestag2msgbits_5984',['kMilesTag2MsgBits',['../IRremoteESP8266_8h.html#a09f5246478103197630f269ccb3b8c40',1,'IRremoteESP8266.h']]], - ['kmilestag2msgmask_5985',['kMilesTag2MsgMask',['../ir__MilesTag2_8cpp.html#ae92d8fa6c1c2e2320feb545a47aa3107',1,'ir_MilesTag2.cpp']]], - ['kmilestag2msgterminator_5986',['kMilesTag2MsgTerminator',['../ir__MilesTag2_8cpp.html#ab61102a594ad830baea09c17bb585f6d',1,'ir_MilesTag2.cpp']]], - ['kmilestag2onemark_5987',['kMilesTag2OneMark',['../ir__MilesTag2_8cpp.html#add084d40b9b206e86497b565f558c968',1,'ir_MilesTag2.cpp']]], - ['kmilestag2rptlength_5988',['kMilesTag2RptLength',['../ir__MilesTag2_8cpp.html#aa87dd4bd7d51c91df882f161a548de0b',1,'ir_MilesTag2.cpp']]], - ['kmilestag2shotbits_5989',['kMilesTag2ShotBits',['../IRremoteESP8266_8h.html#ae29b9f5dd6db067c17917417a3524905',1,'IRremoteESP8266.h']]], - ['kmilestag2shotmask_5990',['kMilesTag2ShotMask',['../ir__MilesTag2_8cpp.html#a4f436018ecf899050cc2da2d5a04f7c0',1,'ir_MilesTag2.cpp']]], - ['kmilestag2space_5991',['kMilesTag2Space',['../ir__MilesTag2_8cpp.html#aebc0f5dd66afa1556b25d9874a138b9d',1,'ir_MilesTag2.cpp']]], - ['kmilestag2stdduty_5992',['kMilesTag2StdDuty',['../ir__MilesTag2_8cpp.html#ada2b524ac46dda1c888fcd44a2929ce9',1,'ir_MilesTag2.cpp']]], - ['kmilestag2stdfreq_5993',['kMilesTag2StdFreq',['../ir__MilesTag2_8cpp.html#a3d6e6059094b8579e2344488f8b962fe',1,'ir_MilesTag2.cpp']]], - ['kmilestag2zeromark_5994',['kMilesTag2ZeroMark',['../ir__MilesTag2_8cpp.html#acceb49cb744e69d73c13ca234b300392',1,'ir_MilesTag2.cpp']]], - ['kminimumstr_5995',['kMinimumStr',['../IRtext_8cpp.html#acbd869e5978b6fee053d33d8cf21e11a',1,'kMinimumStr(): IRtext.cpp'],['../IRtext_8h.html#a4f6fee52ae5f7f9c8fe791dbae762607',1,'kMinimumStr(): IRtext.cpp']]], - ['kminstr_5996',['kMinStr',['../IRtext_8cpp.html#a2b0c7369c1a93b8a7d5a87bf37fcee34',1,'kMinStr(): IRtext.cpp'],['../IRtext_8h.html#a4940a3f71a484f936d3e58b9573931a8',1,'kMinStr(): IRtext.cpp']]], - ['kminutesstr_5997',['kMinutesStr',['../IRtext_8cpp.html#a1c05b3e6af04586a0060c58979df002f',1,'kMinutesStr(): IRtext.cpp'],['../IRtext_8h.html#a3358666a695e8d54c23b20dc6a371a38',1,'kMinutesStr(): IRtext.cpp']]], - ['kminutestr_5998',['kMinuteStr',['../IRtext_8cpp.html#acab620931ba510a7bc395bad59169099',1,'kMinuteStr(): IRtext.cpp'],['../IRtext_8h.html#a54df015b1adadb211a30f826999c78f6',1,'kMinuteStr(): IRtext.cpp']]], - ['kmiragebitmark_5999',['kMirageBitMark',['../ir__Mirage_8cpp.html#a9ef6b7fd36c8457163384f5a5adec60a',1,'ir_Mirage.cpp']]], - ['kmiragebits_6000',['kMirageBits',['../IRremoteESP8266_8h.html#a700032ac17f14dc6d2782e141ce058f0',1,'IRremoteESP8266.h']]], - ['kmiragefreq_6001',['kMirageFreq',['../ir__Mirage_8cpp.html#aa2af21dba41dc6952e7bb98ba21a9cf0',1,'ir_Mirage.cpp']]], - ['kmiragegap_6002',['kMirageGap',['../ir__Mirage_8cpp.html#a06d54b8d7c95a5a913c87289b6ed5b43',1,'ir_Mirage.cpp']]], - ['kmiragehdrmark_6003',['kMirageHdrMark',['../ir__Mirage_8cpp.html#ad03f01d5212781babcc1f6664866e4df',1,'ir_Mirage.cpp']]], - ['kmiragehdrspace_6004',['kMirageHdrSpace',['../ir__Mirage_8cpp.html#a20c2e5c158c5f38403b0cf80fa25fd99',1,'ir_Mirage.cpp']]], - ['kmirageminrepeat_6005',['kMirageMinRepeat',['../IRremoteESP8266_8h.html#a86283c34cf9991bf8bfc29ee089a6a21',1,'IRremoteESP8266.h']]], - ['kmirageonespace_6006',['kMirageOneSpace',['../ir__Mirage_8cpp.html#af90d7f7221eedb4369fcd77142f65b51',1,'ir_Mirage.cpp']]], - ['kmiragestatelength_6007',['kMirageStateLength',['../IRremoteESP8266_8h.html#ab3b6bee4c5f483b4312a4b6eb5fcb146',1,'IRremoteESP8266.h']]], - ['kmiragezerospace_6008',['kMirageZeroSpace',['../ir__Mirage_8cpp.html#aeb32da61046362b4a2cbf366264dbd8d',1,'ir_Mirage.cpp']]], - ['kmitsubishi112auto_6009',['kMitsubishi112Auto',['../ir__Mitsubishi_8h.html#a6e38f06ff78e3406a4f2cf1e1b453402',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112bitmark_6010',['kMitsubishi112BitMark',['../ir__Mitsubishi_8cpp.html#aef96bbd77d5bd66ed220840c09f54c37',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112bits_6011',['kMitsubishi112Bits',['../IRremoteESP8266_8h.html#ae8349abe183be965e3d051cb736773a8',1,'IRremoteESP8266.h']]], - ['kmitsubishi112cool_6012',['kMitsubishi112Cool',['../ir__Mitsubishi_8h.html#aa9d1a63a8a275cda1794628f8d516963',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112dry_6013',['kMitsubishi112Dry',['../ir__Mitsubishi_8h.html#a4a3023d0342003b7947b19c9c5c25fb3',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanlow_6014',['kMitsubishi112FanLow',['../ir__Mitsubishi_8h.html#a4b8d6d04bb75ed98f6ed5bdff7472f50',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmax_6015',['kMitsubishi112FanMax',['../ir__Mitsubishi_8h.html#a5a3e7c72ed85864b34f8ee298b3adc49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmed_6016',['kMitsubishi112FanMed',['../ir__Mitsubishi_8h.html#aa8a81057eeccbf528962b31a197b0319',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanmin_6017',['kMitsubishi112FanMin',['../ir__Mitsubishi_8h.html#ad8b101130e781d30b5d4072b3c514c78',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112fanquiet_6018',['kMitsubishi112FanQuiet',['../ir__Mitsubishi_8h.html#addcf7a99c5ba2f4510754d22a4c0760f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112gap_6019',['kMitsubishi112Gap',['../ir__Mitsubishi_8cpp.html#ab24cc7d395c1620b9519b5d0ce2a2023',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmark_6020',['kMitsubishi112HdrMark',['../ir__Mitsubishi_8cpp.html#a3082567d58d6f8e6ef26714ff23f3728',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrmarktolerance_6021',['kMitsubishi112HdrMarkTolerance',['../ir__Mitsubishi_8cpp.html#a288931e01f8cffa1917fb7bc59710e20',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112hdrspace_6022',['kMitsubishi112HdrSpace',['../ir__Mitsubishi_8cpp.html#a7b35ecbbc94f7ef622b20f21f83c0fba',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112heat_6023',['kMitsubishi112Heat',['../ir__Mitsubishi_8h.html#a260b6883e9433b466abf31618b1c4015',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112maxtemp_6024',['kMitsubishi112MaxTemp',['../ir__Mitsubishi_8h.html#afd968ea297ef8856b7266a8cc6e1bba0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112minrepeat_6025',['kMitsubishi112MinRepeat',['../IRremoteESP8266_8h.html#a6bba58bb0f33feb9a6dfd20637d01d13',1,'IRremoteESP8266.h']]], - ['kmitsubishi112mintemp_6026',['kMitsubishi112MinTemp',['../ir__Mitsubishi_8h.html#acea288a8911a540cb9602d057eccb2a6',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112onespace_6027',['kMitsubishi112OneSpace',['../ir__Mitsubishi_8cpp.html#a8dd0d824826a7da007e78741015d418a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi112statelength_6028',['kMitsubishi112StateLength',['../IRremoteESP8266_8h.html#a5ff0437b26e325bc2516a3e63c7ffe76',1,'IRremoteESP8266.h']]], - ['kmitsubishi112swinghauto_6029',['kMitsubishi112SwingHAuto',['../ir__Mitsubishi_8h.html#ab55e72c6d2b407868cda075efb24ac92',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleft_6030',['kMitsubishi112SwingHLeft',['../ir__Mitsubishi_8h.html#a8299b42b0972bda8a4bc4f32527c33e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghleftmax_6031',['kMitsubishi112SwingHLeftMax',['../ir__Mitsubishi_8h.html#a48346e97056af670454bc77a64b904bc',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghmiddle_6032',['kMitsubishi112SwingHMiddle',['../ir__Mitsubishi_8h.html#a7adcab7d152d84adef2059339de4bb40',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghright_6033',['kMitsubishi112SwingHRight',['../ir__Mitsubishi_8h.html#a76cf277572a2b628d4a5353186ca2522',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghrightmax_6034',['kMitsubishi112SwingHRightMax',['../ir__Mitsubishi_8h.html#a1ff73f603b6e32075cbc9253d3090b49',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swinghwide_6035',['kMitsubishi112SwingHWide',['../ir__Mitsubishi_8h.html#afab80db45769ab2957afc0e4799b46e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvauto_6036',['kMitsubishi112SwingVAuto',['../ir__Mitsubishi_8h.html#a1e16b172e864a74b426b1f823770cdaa',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhigh_6037',['kMitsubishi112SwingVHigh',['../ir__Mitsubishi_8h.html#ab6e345e609d72f9ed903e30f3aa9a26f',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvhighest_6038',['kMitsubishi112SwingVHighest',['../ir__Mitsubishi_8h.html#a1cb8c62990dfb98a8ea228ad59cd88e5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlow_6039',['kMitsubishi112SwingVLow',['../ir__Mitsubishi_8h.html#a515bea322889f619d64ae96c37eaba72',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvlowest_6040',['kMitsubishi112SwingVLowest',['../ir__Mitsubishi_8h.html#ac4dd729a11e3ece244df6b1ddc9250f8',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112swingvmiddle_6041',['kMitsubishi112SwingVMiddle',['../ir__Mitsubishi_8h.html#a0ae62480999dc4cf8a223b59938a0d68',1,'ir_Mitsubishi.h']]], - ['kmitsubishi112zerospace_6042',['kMitsubishi112ZeroSpace',['../ir__Mitsubishi_8cpp.html#ad70d1567dc2e4ea07a247f2555fc23b4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136auto_6043',['kMitsubishi136Auto',['../ir__Mitsubishi_8h.html#ae10977a0d09f4c583b03fa05720c3aed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136bitmark_6044',['kMitsubishi136BitMark',['../ir__Mitsubishi_8cpp.html#a3aa9c715088a58a8b4a97d5038dbf6d4',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136bits_6045',['kMitsubishi136Bits',['../IRremoteESP8266_8h.html#aa19f0122b2f906e5473a6ea232c38974',1,'IRremoteESP8266.h']]], - ['kmitsubishi136cool_6046',['kMitsubishi136Cool',['../ir__Mitsubishi_8h.html#a93332579055a07ea291b3caf9ad11944',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136dry_6047',['kMitsubishi136Dry',['../ir__Mitsubishi_8h.html#ad612c480e8664169e2b8e062d47bd8b9',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fan_6048',['kMitsubishi136Fan',['../ir__Mitsubishi_8h.html#a4445944955b9017fcd6d1ae447f1b0d7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanlow_6049',['kMitsubishi136FanLow',['../ir__Mitsubishi_8h.html#af0f7177491c4cb053e6811376be956ec',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmax_6050',['kMitsubishi136FanMax',['../ir__Mitsubishi_8h.html#a43a4337e20fbf4f6747a58c15213bd16',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmed_6051',['kMitsubishi136FanMed',['../ir__Mitsubishi_8h.html#a73ff7df8fe65829cfd5875dc5040dec7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanmin_6052',['kMitsubishi136FanMin',['../ir__Mitsubishi_8h.html#a2623eaf6e7d2ceb20ee72faddf46569e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136fanquiet_6053',['kMitsubishi136FanQuiet',['../ir__Mitsubishi_8h.html#af2f7483bbb99216614e01dd5aedc35d5',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136gap_6054',['kMitsubishi136Gap',['../ir__Mitsubishi_8cpp.html#a3f9e0708bbe8ed3ff98a563c3ff1af2b',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrmark_6055',['kMitsubishi136HdrMark',['../ir__Mitsubishi_8cpp.html#a49c54ff757d070de54e3739b775bea00',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136hdrspace_6056',['kMitsubishi136HdrSpace',['../ir__Mitsubishi_8cpp.html#a1ddd09e423c427b3956298c20725188a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136heat_6057',['kMitsubishi136Heat',['../ir__Mitsubishi_8h.html#a932f074e9348d35cea119c8141eeb7f2',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136maxtemp_6058',['kMitsubishi136MaxTemp',['../ir__Mitsubishi_8h.html#a2db420b28003dc3e05bf1c86830c61ed',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136minrepeat_6059',['kMitsubishi136MinRepeat',['../IRremoteESP8266_8h.html#a448bd7af5fdab67fb40901a3d6efed21',1,'IRremoteESP8266.h']]], - ['kmitsubishi136mintemp_6060',['kMitsubishi136MinTemp',['../ir__Mitsubishi_8h.html#a5e2e5783d33f927f941271a44d11434c',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136onespace_6061',['kMitsubishi136OneSpace',['../ir__Mitsubishi_8cpp.html#a9a0cfee8b6ea94d3f798d53d30c99d5f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi136powerbyte_6062',['kMitsubishi136PowerByte',['../ir__Mitsubishi_8h.html#aca06b9d066d3f1a322bbb0f3d1a874a7',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136statelength_6063',['kMitsubishi136StateLength',['../IRremoteESP8266_8h.html#a01adbe4e1afb2ba26a5a60bf5b0b42f6',1,'IRremoteESP8266.h']]], - ['kmitsubishi136swingvauto_6064',['kMitsubishi136SwingVAuto',['../ir__Mitsubishi_8h.html#a828c2cc017cb7d00872137464d2119ae',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhigh_6065',['kMitsubishi136SwingVHigh',['../ir__Mitsubishi_8h.html#a319b36df23511aba8fb16b13eda9333b',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvhighest_6066',['kMitsubishi136SwingVHighest',['../ir__Mitsubishi_8h.html#a5bd1dbb97df91dfec0f9493120ea1269',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlow_6067',['kMitsubishi136SwingVLow',['../ir__Mitsubishi_8h.html#a1ba4f3f7eb75bb54a752cfb11f196af0',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136swingvlowest_6068',['kMitsubishi136SwingVLowest',['../ir__Mitsubishi_8h.html#ab0701f0127b07780066040bc08e46a2e',1,'ir_Mitsubishi.h']]], - ['kmitsubishi136zerospace_6069',['kMitsubishi136ZeroSpace',['../ir__Mitsubishi_8cpp.html#afaf1eca1169f492dcdd8a7266756c827',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2bitmark_6070',['kMitsubishi2BitMark',['../ir__Mitsubishi_8cpp.html#a8b0e87a15c51c3b62c14b4e7a071207f',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrmark_6071',['kMitsubishi2HdrMark',['../ir__Mitsubishi_8cpp.html#a2d838e748f1f69165fb6b672955ea95e',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2hdrspace_6072',['kMitsubishi2HdrSpace',['../ir__Mitsubishi_8cpp.html#acd8994a08389c8d874afcbb8eb9c0861',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2mingap_6073',['kMitsubishi2MinGap',['../ir__Mitsubishi_8cpp.html#a7fa283a14968b582123a474c86a6fde9',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2onespace_6074',['kMitsubishi2OneSpace',['../ir__Mitsubishi_8cpp.html#aeee614cef3e95f661dca95b344edcf64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishi2zerospace_6075',['kMitsubishi2ZeroSpace',['../ir__Mitsubishi_8cpp.html#a665522ccd10f4c9fba39e3f8f8a5cb95',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacauto_6076',['kMitsubishiAcAuto',['../ir__Mitsubishi_8h.html#a1fdbdc0906594e0efebbd05110877000',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacbitmark_6077',['kMitsubishiAcBitMark',['../ir__Mitsubishi_8cpp.html#a3787c48ffff208ef964886efab7e17ca',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacbits_6078',['kMitsubishiACBits',['../IRremoteESP8266_8h.html#a911a47148656b26da2e094a7ced1fc8b',1,'IRremoteESP8266.h']]], - ['kmitsubishiaccool_6079',['kMitsubishiAcCool',['../ir__Mitsubishi_8h.html#a434455f6c76f0ca354b01e6a8a6479e9',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacdry_6080',['kMitsubishiAcDry',['../ir__Mitsubishi_8h.html#a9875c4b91a1b155b5f2e12370c33e031',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacextratolerance_6081',['kMitsubishiAcExtraTolerance',['../ir__Mitsubishi_8cpp.html#a98a0e4182311d584d4de4632eb491f04',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacfanauto_6082',['kMitsubishiAcFanAuto',['../ir__Mitsubishi_8h.html#a302cfd0468875cff23c69f71c392ad36',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanmax_6083',['kMitsubishiAcFanMax',['../ir__Mitsubishi_8h.html#abbc2b87dfc6b2364d065f66f4d3e540c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanquiet_6084',['kMitsubishiAcFanQuiet',['../ir__Mitsubishi_8h.html#a90799250620dec05385b9e81cfcb83af',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfanrealmax_6085',['kMitsubishiAcFanRealMax',['../ir__Mitsubishi_8h.html#aa28f81fbd686adb082786e7cda9a17fc',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacfansilent_6086',['kMitsubishiAcFanSilent',['../ir__Mitsubishi_8h.html#a731206548afa4f2672a78dae677f6b44',1,'ir_Mitsubishi.h']]], - ['kmitsubishiachdrmark_6087',['kMitsubishiAcHdrMark',['../ir__Mitsubishi_8cpp.html#a11fcb08ce6bf9fa5fc50ca0e5c7d2d64',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiachdrspace_6088',['kMitsubishiAcHdrSpace',['../ir__Mitsubishi_8cpp.html#af0af560129a4666aeba1a4a9ab59e271',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacheat_6089',['kMitsubishiAcHeat',['../ir__Mitsubishi_8h.html#a6107df195ecf54ec4ef97b5ab82e911c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacmaxtemp_6090',['kMitsubishiAcMaxTemp',['../ir__Mitsubishi_8h.html#aa7178f9ba06fb137af022e629ebfabc3',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacminrepeat_6091',['kMitsubishiACMinRepeat',['../IRremoteESP8266_8h.html#a376653a421df42d889ac3b2a071de58b',1,'IRremoteESP8266.h']]], - ['kmitsubishiacmintemp_6092',['kMitsubishiAcMinTemp',['../ir__Mitsubishi_8h.html#ad9d7413138205abef46942a2144b9e98',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacnotimer_6093',['kMitsubishiAcNoTimer',['../ir__Mitsubishi_8h.html#a0f5da97478cd6cdf2ffab161657e4ab6',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaconespace_6094',['kMitsubishiAcOneSpace',['../ir__Mitsubishi_8cpp.html#abdf26b381c5288556257fabf43458775',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacrptmark_6095',['kMitsubishiAcRptMark',['../ir__Mitsubishi_8cpp.html#a541d764aef906909a1a0d40466567c92',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacrptspace_6096',['kMitsubishiAcRptSpace',['../ir__Mitsubishi_8cpp.html#a4b120db1bd34c62778597abf05092d0a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiacstartstoptimer_6097',['kMitsubishiAcStartStopTimer',['../ir__Mitsubishi_8h.html#aecbdc43fb4bd199c47cb5125816eab59',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstarttimer_6098',['kMitsubishiAcStartTimer',['../ir__Mitsubishi_8h.html#a4107cbc35f18204f46adb57b0fd0f09c',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacstatelength_6099',['kMitsubishiACStateLength',['../IRremoteESP8266_8h.html#a7d0d6dd6d5741f91a1afb641f11d9bc5',1,'IRremoteESP8266.h']]], - ['kmitsubishiacstoptimer_6100',['kMitsubishiAcStopTimer',['../ir__Mitsubishi_8h.html#a5e59039d523d15b145aa87222d52f2bf',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneauto_6101',['kMitsubishiAcVaneAuto',['../ir__Mitsubishi_8h.html#a1caff28ea3678cc5f655fc7147c5a15e',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneautomove_6102',['kMitsubishiAcVaneAutoMove',['../ir__Mitsubishi_8h.html#a2dc0b1ff66ffc21f626d7d8894a31fbb',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanehigh_6103',['kMitsubishiAcVaneHigh',['../ir__Mitsubishi_8h.html#a5f3d8906d4e1ddad1cc569f276f428d2',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanehighest_6104',['kMitsubishiAcVaneHighest',['../ir__Mitsubishi_8h.html#a8b587143d7fb6c766437d3257442c4cd',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanelow_6105',['kMitsubishiAcVaneLow',['../ir__Mitsubishi_8h.html#acd4f01209522f1cf5db3662a7c5e9df5',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanelowest_6106',['kMitsubishiAcVaneLowest',['../ir__Mitsubishi_8h.html#ae2cada87838e0f21886409cde4ef97e3',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvanemiddle_6107',['kMitsubishiAcVaneMiddle',['../ir__Mitsubishi_8h.html#a2345713f7d81fb679e2af44fa8475945',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacvaneswing_6108',['kMitsubishiAcVaneSwing',['../ir__Mitsubishi_8h.html#a0831abb1415db21ee9db0973b19f26fd',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneauto_6109',['kMitsubishiAcWideVaneAuto',['../ir__Mitsubishi_8h.html#a2081e2b8eb778e15b7d9f2f0f332c012',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneleft_6110',['kMitsubishiAcWideVaneLeft',['../ir__Mitsubishi_8h.html#a811260dcbb4aebb11f0ec1e2a7d0548b',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneleftmax_6111',['kMitsubishiAcWideVaneLeftMax',['../ir__Mitsubishi_8h.html#adb2917f8ccb3a6a4d72a07913ea4a9d7',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevanemiddle_6112',['kMitsubishiAcWideVaneMiddle',['../ir__Mitsubishi_8h.html#ab35fe20c0aae6c3c23766b2d1ae8834e',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevaneright_6113',['kMitsubishiAcWideVaneRight',['../ir__Mitsubishi_8h.html#a5a315b92c684841eeb4bc97603979931',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevanerightmax_6114',['kMitsubishiAcWideVaneRightMax',['../ir__Mitsubishi_8h.html#ab37f3da432a2561030bbc3ccbed3e3b2',1,'ir_Mitsubishi.h']]], - ['kmitsubishiacwidevanewide_6115',['kMitsubishiAcWideVaneWide',['../ir__Mitsubishi_8h.html#a64714abaff784b87d326c7127674ad16',1,'ir_Mitsubishi.h']]], - ['kmitsubishiaczerospace_6116',['kMitsubishiAcZeroSpace',['../ir__Mitsubishi_8cpp.html#a9481515c349154bbb6f56cec2712ba85',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmark_6117',['kMitsubishiBitMark',['../ir__Mitsubishi_8cpp.html#a82c8e081b172080df14bdd6e3e6eb608',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibitmarkticks_6118',['kMitsubishiBitMarkTicks',['../ir__Mitsubishi_8cpp.html#a6daf88606f40b13bce698c73d00f5faf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishibits_6119',['kMitsubishiBits',['../IRremoteESP8266_8h.html#abd2187340d0b94996136081413e2ad22',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152bits_6120',['kMitsubishiHeavy152Bits',['../IRremoteESP8266_8h.html#ab973b35583dabc7e04b12018fac04cc9',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152fanauto_6121',['kMitsubishiHeavy152FanAuto',['../ir__MitsubishiHeavy_8h.html#ae1739c1b5cd00b28a06dfd96413570a8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanecono_6122',['kMitsubishiHeavy152FanEcono',['../ir__MitsubishiHeavy_8h.html#acf0522589438103f805889e980259eb8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanhigh_6123',['kMitsubishiHeavy152FanHigh',['../ir__MitsubishiHeavy_8h.html#a48881ddd596b6945d04465b3f7a9bee6',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanlow_6124',['kMitsubishiHeavy152FanLow',['../ir__MitsubishiHeavy_8h.html#acff7254b2ced32550ec9305dbaac3d95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmax_6125',['kMitsubishiHeavy152FanMax',['../ir__MitsubishiHeavy_8h.html#aa1e9a41137a7dd65fc049ae41856795f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanmed_6126',['kMitsubishiHeavy152FanMed',['../ir__MitsubishiHeavy_8h.html#ac432324a30abcc0e664cf0ff8e974516',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152fanturbo_6127',['kMitsubishiHeavy152FanTurbo',['../ir__MitsubishiHeavy_8h.html#a7665d1ecb52afabd0dd951f2ab54e59b',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152minrepeat_6128',['kMitsubishiHeavy152MinRepeat',['../IRremoteESP8266_8h.html#a789cbb74cf332f8440a4fcdcac188741',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152statelength_6129',['kMitsubishiHeavy152StateLength',['../IRremoteESP8266_8h.html#a31d12a44c8c3a3c4533f65b8213e2086',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy152swinghauto_6130',['kMitsubishiHeavy152SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac0ed87ce67ece78e2e9f2b49da5ba152',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleft_6131',['kMitsubishiHeavy152SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a1a20549b529745e913565e6d717d9f95',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftmax_6132',['kMitsubishiHeavy152SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a970e6b602f5bbd4d560249966f6de6c9',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghleftright_6133',['kMitsubishiHeavy152SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a24c71dc5a17affb2f2d136f6846befbc',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghmiddle_6134',['kMitsubishiHeavy152SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#af1a02e21631c1efb12a01b3db065916c',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghoff_6135',['kMitsubishiHeavy152SwingHOff',['../ir__MitsubishiHeavy_8h.html#a246f8f9c9083f21ee22c2367ece2b9e2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghright_6136',['kMitsubishiHeavy152SwingHRight',['../ir__MitsubishiHeavy_8h.html#aeec05249b3958f5a1cd629b328209e05',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightleft_6137',['kMitsubishiHeavy152SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#a43ddc14cc8707aa9743519b1c54eb776',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swinghrightmax_6138',['kMitsubishiHeavy152SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#ae825ed46bf143bc6a01891a5f021c870',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvauto_6139',['kMitsubishiHeavy152SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a31c20346b5538d74b58cb1fd499b5751',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhigh_6140',['kMitsubishiHeavy152SwingVHigh',['../ir__MitsubishiHeavy_8h.html#a9ac8e39e46b43fb2276af7dd9724e3d4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvhighest_6141',['kMitsubishiHeavy152SwingVHighest',['../ir__MitsubishiHeavy_8h.html#a554efbb611fd29a5d388d8195aa79993',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlow_6142',['kMitsubishiHeavy152SwingVLow',['../ir__MitsubishiHeavy_8h.html#ad9a0b57ba70d318572b77236c23830a7',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvlowest_6143',['kMitsubishiHeavy152SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a02f1b980aa78b4ff314209d16bf0a6e8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvmiddle_6144',['kMitsubishiHeavy152SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#ae5c3ec8b8837dddff01d71c44a4ba813',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy152swingvoff_6145',['kMitsubishiHeavy152SwingVOff',['../ir__MitsubishiHeavy_8h.html#abb6905210a2f4021d157eeb61eaed7cd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88bits_6146',['kMitsubishiHeavy88Bits',['../IRremoteESP8266_8h.html#aa80d389140df4ab7071bfb3510b35dda',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88fanauto_6147',['kMitsubishiHeavy88FanAuto',['../ir__MitsubishiHeavy_8h.html#a607cbc27223765b3dd1f9bfd77932d0f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanecono_6148',['kMitsubishiHeavy88FanEcono',['../ir__MitsubishiHeavy_8h.html#ab5fbaaffd9e0182fc7e60252f89da2c3',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanhigh_6149',['kMitsubishiHeavy88FanHigh',['../ir__MitsubishiHeavy_8h.html#aa45b29aaa7d8df7a34dfe6308a6b6412',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanlow_6150',['kMitsubishiHeavy88FanLow',['../ir__MitsubishiHeavy_8h.html#a92f0cba1aef78e5ade01c648837e7553',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanmed_6151',['kMitsubishiHeavy88FanMed',['../ir__MitsubishiHeavy_8h.html#aade681ee8ed4c4647a997a3caad093ea',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88fanturbo_6152',['kMitsubishiHeavy88FanTurbo',['../ir__MitsubishiHeavy_8h.html#a29201ebd9395edb2660337ee00efa1dd',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88minrepeat_6153',['kMitsubishiHeavy88MinRepeat',['../IRremoteESP8266_8h.html#ad7bccde1a9b32c962c99748fb130f711',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88statelength_6154',['kMitsubishiHeavy88StateLength',['../IRremoteESP8266_8h.html#a515e5a081c388dd4313b20ff2b6c7955',1,'IRremoteESP8266.h']]], - ['kmitsubishiheavy88swingh3d_6155',['kMitsubishiHeavy88SwingH3D',['../ir__MitsubishiHeavy_8h.html#adfeb87be0ddfc6c06bbcb4a1506d3185',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghauto_6156',['kMitsubishiHeavy88SwingHAuto',['../ir__MitsubishiHeavy_8h.html#ac39f2339ab90bdc6d9c98dd6cf95fce2',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleft_6157',['kMitsubishiHeavy88SwingHLeft',['../ir__MitsubishiHeavy_8h.html#a32a76b07c6da2b09d04d985544d91af1',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftmax_6158',['kMitsubishiHeavy88SwingHLeftMax',['../ir__MitsubishiHeavy_8h.html#a83340e32cff8ca09eb7596ec55a67853',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghleftright_6159',['kMitsubishiHeavy88SwingHLeftRight',['../ir__MitsubishiHeavy_8h.html#a82f7addc930441b6e756d71ce3df24ca',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghmiddle_6160',['kMitsubishiHeavy88SwingHMiddle',['../ir__MitsubishiHeavy_8h.html#a7a4b00b2953f2bc068d83c2618484c69',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghoff_6161',['kMitsubishiHeavy88SwingHOff',['../ir__MitsubishiHeavy_8h.html#a5313aeb4115ca5a795c6ebb9871ce436',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghright_6162',['kMitsubishiHeavy88SwingHRight',['../ir__MitsubishiHeavy_8h.html#a35224e254d897b9d42e16f9dae04d984',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightleft_6163',['kMitsubishiHeavy88SwingHRightLeft',['../ir__MitsubishiHeavy_8h.html#aa913c0f1c61260c533c66aaa12dc83ac',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghrightmax_6164',['kMitsubishiHeavy88SwingHRightMax',['../ir__MitsubishiHeavy_8h.html#a83c481d42999e377a2c50cacc28017b0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swinghsize_6165',['kMitsubishiHeavy88SwingHSize',['../ir__MitsubishiHeavy_8h.html#a46a3cb1874cf5d1875e971094527b98f',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvauto_6166',['kMitsubishiHeavy88SwingVAuto',['../ir__MitsubishiHeavy_8h.html#a65c66f030afd2795d3132b3d0be2cabe',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvbyte5size_6167',['kMitsubishiHeavy88SwingVByte5Size',['../ir__MitsubishiHeavy_8h.html#ae0569562330f8c2af57a78764341c310',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhigh_6168',['kMitsubishiHeavy88SwingVHigh',['../ir__MitsubishiHeavy_8h.html#af99a8f0925f184f56080ddf3e9a37606',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvhighest_6169',['kMitsubishiHeavy88SwingVHighest',['../ir__MitsubishiHeavy_8h.html#adc2a20b5ca5dda6417c60a1a3c321fc0',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlow_6170',['kMitsubishiHeavy88SwingVLow',['../ir__MitsubishiHeavy_8h.html#adb086c76e06cbf6c8808470363da5e93',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvlowest_6171',['kMitsubishiHeavy88SwingVLowest',['../ir__MitsubishiHeavy_8h.html#a6f4af31ee9b187648c242aca2851d3ed',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvmiddle_6172',['kMitsubishiHeavy88SwingVMiddle',['../ir__MitsubishiHeavy_8h.html#aeaddb1d80dd777c0fdd8e77661479598',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavy88swingvoff_6173',['kMitsubishiHeavy88SwingVOff',['../ir__MitsubishiHeavy_8h.html#ad29f5b94153e0fc9943a2c4c02aa1f61',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyauto_6174',['kMitsubishiHeavyAuto',['../ir__MitsubishiHeavy_8h.html#a1bcb7429a89904e3b431aaaff20e35fa',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavybitmark_6175',['kMitsubishiHeavyBitMark',['../ir__MitsubishiHeavy_8cpp.html#a54b398e130a1893bdc81067c636d6001',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavycool_6176',['kMitsubishiHeavyCool',['../ir__MitsubishiHeavy_8h.html#a5d819a9a6372fde79380a6890ffd3168',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavydry_6177',['kMitsubishiHeavyDry',['../ir__MitsubishiHeavy_8h.html#a749f4d74b6cce4ad29a7ab78bb780eaf',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyfan_6178',['kMitsubishiHeavyFan',['../ir__MitsubishiHeavy_8h.html#a55d9e0b9676da64dfdc888e7941665f8',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavygap_6179',['kMitsubishiHeavyGap',['../ir__MitsubishiHeavy_8cpp.html#a92920bf4a95bccb9b55c623ff6dac96a',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrmark_6180',['kMitsubishiHeavyHdrMark',['../ir__MitsubishiHeavy_8cpp.html#a9b1724efadc251117733297c424e76f4',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyhdrspace_6181',['kMitsubishiHeavyHdrSpace',['../ir__MitsubishiHeavy_8cpp.html#a9070250903c1d1653beb54ac3de27033',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyheat_6182',['kMitsubishiHeavyHeat',['../ir__MitsubishiHeavy_8h.html#a0b76a854d109dd0622155015edd31d74',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymaxtemp_6183',['kMitsubishiHeavyMaxTemp',['../ir__MitsubishiHeavy_8h.html#a49abbf34671b67eb4ebbe881444180f4',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavymintemp_6184',['kMitsubishiHeavyMinTemp',['../ir__MitsubishiHeavy_8h.html#afa83fd435c67699da272b883277dbb98',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyonespace_6185',['kMitsubishiHeavyOneSpace',['../ir__MitsubishiHeavy_8cpp.html#adec6564e4af2886b4c7d44343d98b9dc',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavysiglength_6186',['kMitsubishiHeavySigLength',['../ir__MitsubishiHeavy_8h.html#af08e6fc65b10821e52dd4a0073033d14',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzerospace_6187',['kMitsubishiHeavyZeroSpace',['../ir__MitsubishiHeavy_8cpp.html#a903c30cee53f76c7dc3d2fef74b6e4b2',1,'ir_MitsubishiHeavy.cpp']]], - ['kmitsubishiheavyzjssig_6188',['kMitsubishiHeavyZjsSig',['../ir__MitsubishiHeavy_8h.html#a01eb89bfc9d4b271a97fea566eb937ff',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishiheavyzmssig_6189',['kMitsubishiHeavyZmsSig',['../ir__MitsubishiHeavy_8h.html#a18761991123d121c8d40531d07922165',1,'ir_MitsubishiHeavy.h']]], - ['kmitsubishimincommandlength_6190',['kMitsubishiMinCommandLength',['../ir__Mitsubishi_8cpp.html#ad5a6d37e755ce1faa4cdb024d2bed26a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimincommandlengthticks_6191',['kMitsubishiMinCommandLengthTicks',['../ir__Mitsubishi_8cpp.html#a4f69a50c720c7a19f0ee04d262eb5948',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingap_6192',['kMitsubishiMinGap',['../ir__Mitsubishi_8cpp.html#a66f6379ca4c0e5f03eda2d81be0a35b2',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishimingapticks_6193',['kMitsubishiMinGapTicks',['../ir__Mitsubishi_8cpp.html#af9e8409306344cf4cd0117f2131fc67a',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishiminrepeat_6194',['kMitsubishiMinRepeat',['../IRremoteESP8266_8h.html#ad88bda81b48f25d30bb5a169d3b6bcec',1,'IRremoteESP8266.h']]], - ['kmitsubishionespace_6195',['kMitsubishiOneSpace',['../ir__Mitsubishi_8cpp.html#ab3c6a50b722402633aaf26e2a4a39ff0',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishionespaceticks_6196',['kMitsubishiOneSpaceTicks',['../ir__Mitsubishi_8cpp.html#a3b12f2aa2c3b4b7ef439f86356aab9cf',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishitick_6197',['kMitsubishiTick',['../ir__Mitsubishi_8cpp.html#a5197eb8b6e8de8fdfb9f056b6f7d9aa5',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospace_6198',['kMitsubishiZeroSpace',['../ir__Mitsubishi_8cpp.html#a9660ac382e9a929f6acb73a32b2a1a3c',1,'ir_Mitsubishi.cpp']]], - ['kmitsubishizerospaceticks_6199',['kMitsubishiZeroSpaceTicks',['../ir__Mitsubishi_8cpp.html#a18f364a0ba491236538bc9d086303d69',1,'ir_Mitsubishi.cpp']]], - ['kmodebitssize_6200',['kModeBitsSize',['../IRutils_8h.html#a5432915ab86062fceadc067a233f1627',1,'IRutils.h']]], - ['kmodelstr_6201',['kModelStr',['../IRtext_8cpp.html#a40905418e2934e539c50c6cfc2c4ffe3',1,'kModelStr(): IRtext.cpp'],['../IRtext_8h.html#a4a553cfcc7ca2a8cea8e1263f5f6c186',1,'kModelStr(): IRtext.cpp']]], - ['kmodestr_6202',['kModeStr',['../IRtext_8cpp.html#a7260c578d290c33b7705cd1439d992ee',1,'kModeStr(): IRtext.cpp'],['../IRtext_8h.html#a6666695e388b607bfd3bb0e6efd4193f',1,'kModeStr(): IRtext.cpp']]], - ['kmouldstr_6203',['kMouldStr',['../IRtext_8cpp.html#ac665ea584a4949565aa35629d791dbc5',1,'kMouldStr(): IRtext.cpp'],['../IRtext_8h.html#a693b29e4764d959dac781a0992f2bf30',1,'kMouldStr(): IRtext.cpp']]], - ['kmovestr_6204',['kMoveStr',['../IRtext_8cpp.html#a321f98699209fb487287c4911a0c0200',1,'kMoveStr(): IRtext.cpp'],['../IRtext_8h.html#ae99940df2a9243fd7fe6f3814c0802dd',1,'kMoveStr(): IRtext.cpp']]], - ['kmultibracketsbits_6205',['kMultibracketsBits',['../IRremoteESP8266_8h.html#aad7be0971479839493615cafcd654fc1',1,'IRremoteESP8266.h']]], - ['kmultibracketsdefaultrepeat_6206',['kMultibracketsDefaultRepeat',['../IRremoteESP8266_8h.html#a5aa418baefd018d5facc08d3bb721fe9',1,'IRremoteESP8266.h']]], - ['kmultibracketsfooterspace_6207',['kMultibracketsFooterSpace',['../ir__Multibrackets_8cpp.html#a738cde2d6a25611bea116d04375dd28a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketsfreq_6208',['kMultibracketsFreq',['../ir__Multibrackets_8cpp.html#a38ba01a3c516f6018199aa9031a5fb4a',1,'ir_Multibrackets.cpp']]], - ['kmultibracketshdrmark_6209',['kMultibracketsHdrMark',['../ir__Multibrackets_8cpp.html#a4eaafbf701604ceb6591b8a8b9c1d202',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstick_6210',['kMultibracketsTick',['../ir__Multibrackets_8cpp.html#aa528fbf06b8d5293d82b7efc2bcd1e9b',1,'ir_Multibrackets.cpp']]], - ['kmultibracketstolerance_6211',['kMultibracketsTolerance',['../ir__Multibrackets_8cpp.html#a242017fb86f015cdecbf31c278c43ccc',1,'ir_Multibrackets.cpp']]], - ['kmwmdelta_6212',['kMWMDelta',['../ir__MWM_8cpp.html#a4e32849a3c799af002d1290a8a33366e',1,'ir_MWM.cpp']]], - ['kmwmexcess_6213',['kMWMExcess',['../ir__MWM_8cpp.html#ab3ff88bfc09c94e70fb74a77dbdd87d7',1,'ir_MWM.cpp']]], - ['kmwmmaxwidth_6214',['kMWMMaxWidth',['../ir__MWM_8cpp.html#a833013dcb331ebce3b885b0ce73c9eaa',1,'ir_MWM.cpp']]], - ['kmwmmingap_6215',['kMWMMinGap',['../ir__MWM_8cpp.html#a4d1f9c5442390a5ba089270c1187e917',1,'ir_MWM.cpp']]], - ['kmwmminsamples_6216',['kMWMMinSamples',['../ir__MWM_8cpp.html#ad386c922a0fcbd0c5b904b9abdd8d582',1,'ir_MWM.cpp']]], - ['kmwmtick_6217',['kMWMTick',['../ir__MWM_8cpp.html#a42c39c0101ccad1e88fa206a26447256',1,'ir_MWM.cpp']]], - ['kmwmtolerance_6218',['kMWMTolerance',['../ir__MWM_8cpp.html#ae3a91ec66f51f50810229b4adc1264fd',1,'ir_MWM.cpp']]], - ['knastr_6219',['kNAStr',['../IRtext_8cpp.html#a1757349137713553454f405872bc4dcd',1,'kNAStr(): IRtext.cpp'],['../IRtext_8h.html#a5d094344fba1715dbde69ff947775264',1,'kNAStr(): IRtext.cpp']]], - ['knecbitmark_6220',['kNecBitMark',['../ir__NEC_8h.html#ab536a800ec8f7259fe7e485ea4aea465',1,'ir_NEC.h']]], - ['knecbitmarkticks_6221',['kNecBitMarkTicks',['../ir__NEC_8h.html#a84ca60f84d64d65872b40a87819eccc1',1,'ir_NEC.h']]], - ['knecbits_6222',['kNECBits',['../IRremoteESP8266_8h.html#a65e03baf646815b4b02f943bdd74a097',1,'IRremoteESP8266.h']]], - ['knechdrmark_6223',['kNecHdrMark',['../ir__NEC_8h.html#ac727ede47d30ec76b03e4a41b48ce8c7',1,'ir_NEC.h']]], - ['knechdrmarkticks_6224',['kNecHdrMarkTicks',['../ir__NEC_8h.html#ab1486c07a09bc4324c03b1c887f5c5f7',1,'ir_NEC.h']]], - ['knechdrspace_6225',['kNecHdrSpace',['../ir__NEC_8h.html#a8279410369d6ed266502615d3ff1750b',1,'ir_NEC.h']]], - ['knechdrspaceticks_6226',['kNecHdrSpaceTicks',['../ir__NEC_8h.html#a4470ee927c0c3447bdda20c52b0f8566',1,'ir_NEC.h']]], - ['knecmincommandlength_6227',['kNecMinCommandLength',['../ir__NEC_8h.html#ac7b8d897d9e5bbf29b9b1b899a2ef7d8',1,'ir_NEC.h']]], - ['knecmincommandlengthticks_6228',['kNecMinCommandLengthTicks',['../ir__NEC_8h.html#a78e411960e643495987b1cb53268bc46',1,'ir_NEC.h']]], - ['knecmingap_6229',['kNecMinGap',['../ir__NEC_8h.html#a3d6ecc128599df57dc98e97e51b2264e',1,'ir_NEC.h']]], - ['knecmingapticks_6230',['kNecMinGapTicks',['../ir__NEC_8h.html#a2e6d938510a34aa1217a56aa51ece9f5',1,'ir_NEC.h']]], - ['kneconespace_6231',['kNecOneSpace',['../ir__NEC_8h.html#af57080e9b7513d1c8e7e781f3d502fbd',1,'ir_NEC.h']]], - ['kneconespaceticks_6232',['kNecOneSpaceTicks',['../ir__NEC_8h.html#a2f1e5412d44816f92e4b6c72e16e8b1f',1,'ir_NEC.h']]], - ['knecrptlength_6233',['kNecRptLength',['../ir__NEC_8h.html#af4ab20595dfda177fbb06dd821ea14c7',1,'ir_NEC.h']]], - ['knecrptspace_6234',['kNecRptSpace',['../ir__NEC_8h.html#a9538478446b1ae5d72c8366dd6a11673',1,'ir_NEC.h']]], - ['knecrptspaceticks_6235',['kNecRptSpaceTicks',['../ir__NEC_8h.html#a91b5296d480008a4b44c5b084756f04b',1,'ir_NEC.h']]], - ['knectick_6236',['kNecTick',['../ir__NEC_8h.html#abe1ec110798236c7b626f7efe4cc5657',1,'ir_NEC.h']]], - ['kneczerospace_6237',['kNecZeroSpace',['../ir__NEC_8h.html#a00573a6bdb348339b9898173b644b693',1,'ir_NEC.h']]], - ['kneczerospaceticks_6238',['kNecZeroSpaceTicks',['../ir__NEC_8h.html#a80f316535d761c64f1d5752ef80a65ff',1,'ir_NEC.h']]], - ['kneoclimaauto_6239',['kNeoclimaAuto',['../ir__Neoclima_8h.html#a4574742c21aae9aafaff9b10f9423006',1,'ir_Neoclima.h']]], - ['kneoclimabitmark_6240',['kNeoclimaBitMark',['../ir__Neoclima_8cpp.html#ae34236a830ec2d200575ac33fda43689',1,'ir_Neoclima.cpp']]], - ['kneoclimabits_6241',['kNeoclimaBits',['../IRremoteESP8266_8h.html#afff9132e57296b4d7e04ec9e1e5ab04f',1,'IRremoteESP8266.h']]], - ['kneoclimabutton8cheat_6242',['kNeoclimaButton8CHeat',['../ir__Neoclima_8h.html#ad337d964ff800bea5c55f1fe69dfb7ff',1,'ir_Neoclima.h']]], - ['kneoclimabuttonairflow_6243',['kNeoclimaButtonAirFlow',['../ir__Neoclima_8h.html#ab5fff838f8e5ac9ff213fc69346ffa7c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonecono_6244',['kNeoclimaButtonEcono',['../ir__Neoclima_8h.html#a3bf5508439a8af4543f95468fd32a8bb',1,'ir_Neoclima.h']]], - ['kneoclimabuttoneye_6245',['kNeoclimaButtonEye',['../ir__Neoclima_8h.html#a6cabdccd3c8d52cb2817f99454bdc884',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfanspeed_6246',['kNeoclimaButtonFanSpeed',['../ir__Neoclima_8h.html#ab41ffd863516b79b6c7e9b69e7d5a272',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfollow_6247',['kNeoclimaButtonFollow',['../ir__Neoclima_8h.html#a592017dce3bfa4ea2f0f341a818aff72',1,'ir_Neoclima.h']]], - ['kneoclimabuttonfresh_6248',['kNeoclimaButtonFresh',['../ir__Neoclima_8h.html#a6a965f2dc7860879ccaf410405095e9c',1,'ir_Neoclima.h']]], - ['kneoclimabuttonhold_6249',['kNeoclimaButtonHold',['../ir__Neoclima_8h.html#aada6fdb6572bd7d841de89f1d1eed3fe',1,'ir_Neoclima.h']]], - ['kneoclimabuttonion_6250',['kNeoclimaButtonIon',['../ir__Neoclima_8h.html#a05dccf1c19237d315bb78f387f8fd57f',1,'ir_Neoclima.h']]], - ['kneoclimabuttonlight_6251',['kNeoclimaButtonLight',['../ir__Neoclima_8h.html#ac66b472b31f6183f4615584561baa284',1,'ir_Neoclima.h']]], - ['kneoclimabuttonmode_6252',['kNeoclimaButtonMode',['../ir__Neoclima_8h.html#a4cfee4b0898f1504be5cbd129cd99278',1,'ir_Neoclima.h']]], - ['kneoclimabuttonpower_6253',['kNeoclimaButtonPower',['../ir__Neoclima_8h.html#a047d19978c58b35dcd6a069fce04af87',1,'ir_Neoclima.h']]], - ['kneoclimabuttonsleep_6254',['kNeoclimaButtonSleep',['../ir__Neoclima_8h.html#adcbe2a89eecf41fe1fe2b8c62428084e',1,'ir_Neoclima.h']]], - ['kneoclimabuttonswing_6255',['kNeoclimaButtonSwing',['../ir__Neoclima_8h.html#aeea180bef85a40d8c7fe3f5facf7b199',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempdown_6256',['kNeoclimaButtonTempDown',['../ir__Neoclima_8h.html#aee91f1ebdf89b6fe9f3b31937d1185a0',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempunit_6257',['kNeoclimaButtonTempUnit',['../ir__Neoclima_8h.html#ad552c7576d7f6c89b3530bcddf15d00c',1,'ir_Neoclima.h']]], - ['kneoclimabuttontempup_6258',['kNeoclimaButtonTempUp',['../ir__Neoclima_8h.html#abb093132f77d179ab02fc4a022d55236',1,'ir_Neoclima.h']]], - ['kneoclimabuttonturbo_6259',['kNeoclimaButtonTurbo',['../ir__Neoclima_8h.html#af156d94f9e47e8b5e2e2493308cca04c',1,'ir_Neoclima.h']]], - ['kneoclimacool_6260',['kNeoclimaCool',['../ir__Neoclima_8h.html#ac5d874e5ffce72ce68176f38e780c439',1,'ir_Neoclima.h']]], - ['kneoclimadry_6261',['kNeoclimaDry',['../ir__Neoclima_8h.html#ab68ba4480e1bcb685579c5f902d0709e',1,'ir_Neoclima.h']]], - ['kneoclimafan_6262',['kNeoclimaFan',['../ir__Neoclima_8h.html#aa6166bd65d80a708d790dbf703c83ea2',1,'ir_Neoclima.h']]], - ['kneoclimafanauto_6263',['kNeoclimaFanAuto',['../ir__Neoclima_8h.html#a7885fdbc4ae3336aac74d7ee3d8c3258',1,'ir_Neoclima.h']]], - ['kneoclimafanhigh_6264',['kNeoclimaFanHigh',['../ir__Neoclima_8h.html#a57ddf91c1cbb157b3a53b1082bac2d75',1,'ir_Neoclima.h']]], - ['kneoclimafanlow_6265',['kNeoclimaFanLow',['../ir__Neoclima_8h.html#ac9031328be51a46543ebd4360aaca55a',1,'ir_Neoclima.h']]], - ['kneoclimafanmed_6266',['kNeoclimaFanMed',['../ir__Neoclima_8h.html#a11faf2a34faf44460795b50bfbdab402',1,'ir_Neoclima.h']]], - ['kneoclimafollowme_6267',['kNeoclimaFollowMe',['../ir__Neoclima_8h.html#a493c1e6b8b8909f4201cd506a1f4804a',1,'ir_Neoclima.h']]], - ['kneoclimahdrmark_6268',['kNeoclimaHdrMark',['../ir__Neoclima_8cpp.html#aa392821c0ce822a7b7d67efd202bedd5',1,'ir_Neoclima.cpp']]], - ['kneoclimahdrspace_6269',['kNeoclimaHdrSpace',['../ir__Neoclima_8cpp.html#a3714ad66d75162ccb286152b70375588',1,'ir_Neoclima.cpp']]], - ['kneoclimaheat_6270',['kNeoclimaHeat',['../ir__Neoclima_8h.html#a5a5e53801c0f8e554c391ed56404b926',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempc_6271',['kNeoclimaMaxTempC',['../ir__Neoclima_8h.html#a9333b62cef8e22e05a2fbfb566830bb6',1,'ir_Neoclima.h']]], - ['kneoclimamaxtempf_6272',['kNeoclimaMaxTempF',['../ir__Neoclima_8h.html#a7e1b67f87fbf56b52c4ad39c4865212d',1,'ir_Neoclima.h']]], - ['kneoclimamingap_6273',['kNeoclimaMinGap',['../ir__Neoclima_8cpp.html#a0e54c73eff563f6c3ec39a0951dd3d2d',1,'ir_Neoclima.cpp']]], - ['kneoclimaminrepeat_6274',['kNeoclimaMinRepeat',['../IRremoteESP8266_8h.html#a16fc26a3ff66a66068ac9638554df847',1,'IRremoteESP8266.h']]], - ['kneoclimamintempc_6275',['kNeoclimaMinTempC',['../ir__Neoclima_8h.html#a39d700251ad835e4b36ec6e9db667703',1,'ir_Neoclima.h']]], - ['kneoclimamintempf_6276',['kNeoclimaMinTempF',['../ir__Neoclima_8h.html#ac6159ea9bbc08e115c45b4611190fe9f',1,'ir_Neoclima.h']]], - ['kneoclimaonespace_6277',['kNeoclimaOneSpace',['../ir__Neoclima_8cpp.html#a5fd5f3b7f04134190aafc65762528da0',1,'ir_Neoclima.cpp']]], - ['kneoclimastatelength_6278',['kNeoclimaStateLength',['../IRremoteESP8266_8h.html#a5a871ed6d145c5ea3d50e96600c02e31',1,'IRremoteESP8266.h']]], - ['kneoclimaswingvoff_6279',['kNeoclimaSwingVOff',['../ir__Neoclima_8h.html#ad230a8c18e6edb5709cb29033f1fd221',1,'ir_Neoclima.h']]], - ['kneoclimaswingvon_6280',['kNeoclimaSwingVOn',['../ir__Neoclima_8h.html#a7021804eb30e7a7c5b9c9ababb1b8cad',1,'ir_Neoclima.h']]], - ['kneoclimazerospace_6281',['kNeoclimaZeroSpace',['../ir__Neoclima_8cpp.html#a0b98d84da4651d8d31f8f1d84621c21e',1,'ir_Neoclima.cpp']]], - ['knibblesize_6282',['kNibbleSize',['../IRutils_8h.html#aa72cd082cdde3d8d7473ed9d11ff6846',1,'IRutils.h']]], - ['knightstr_6283',['kNightStr',['../IRtext_8cpp.html#a01908d3c0f79bc015a699fc0576a8771',1,'kNightStr(): IRtext.cpp'],['../IRtext_8h.html#afe6519eaae5b1fb4d110529ce98f05b0',1,'kNightStr(): IRtext.cpp']]], - ['knikaibitmark_6284',['kNikaiBitMark',['../ir__Nikai_8cpp.html#ad665145b0ee9cc722d9fde43cbd3fd82',1,'ir_Nikai.cpp']]], - ['knikaibitmarkticks_6285',['kNikaiBitMarkTicks',['../ir__Nikai_8cpp.html#ac10d1b4c45af3ddbf3c50b85dbb0c2f0',1,'ir_Nikai.cpp']]], - ['knikaibits_6286',['kNikaiBits',['../IRremoteESP8266_8h.html#a9fce002592f9e2488b1b717d0b1a6a40',1,'IRremoteESP8266.h']]], - ['knikaihdrmark_6287',['kNikaiHdrMark',['../ir__Nikai_8cpp.html#ae0656b931e18e6e011a7c74cfaf4384b',1,'ir_Nikai.cpp']]], - ['knikaihdrmarkticks_6288',['kNikaiHdrMarkTicks',['../ir__Nikai_8cpp.html#a11671cee9a312ece8f1c90596eddd7ac',1,'ir_Nikai.cpp']]], - ['knikaihdrspace_6289',['kNikaiHdrSpace',['../ir__Nikai_8cpp.html#ae801e20e669f3039888bf48074988b84',1,'ir_Nikai.cpp']]], - ['knikaihdrspaceticks_6290',['kNikaiHdrSpaceTicks',['../ir__Nikai_8cpp.html#a83885a2fc573f947afe5015cd2f4d953',1,'ir_Nikai.cpp']]], - ['knikaimingap_6291',['kNikaiMinGap',['../ir__Nikai_8cpp.html#ad88846eaa7559df7fb944283fd292da1',1,'ir_Nikai.cpp']]], - ['knikaimingapticks_6292',['kNikaiMinGapTicks',['../ir__Nikai_8cpp.html#afdf938a763f30e3c5e534eba269dff1f',1,'ir_Nikai.cpp']]], - ['knikaionespace_6293',['kNikaiOneSpace',['../ir__Nikai_8cpp.html#a4bb69ab22b2abcd20ffff90f9267fa43',1,'ir_Nikai.cpp']]], - ['knikaionespaceticks_6294',['kNikaiOneSpaceTicks',['../ir__Nikai_8cpp.html#a25a4d289b7fad06c31312df552ee81ab',1,'ir_Nikai.cpp']]], - ['knikaitick_6295',['kNikaiTick',['../ir__Nikai_8cpp.html#a70eb8953509420081d0a294203eeb34b',1,'ir_Nikai.cpp']]], - ['knikaizerospace_6296',['kNikaiZeroSpace',['../ir__Nikai_8cpp.html#aa9af57c5c936107b00096e16cc6f57d9',1,'ir_Nikai.cpp']]], - ['knikaizerospaceticks_6297',['kNikaiZeroSpaceTicks',['../ir__Nikai_8cpp.html#a8df777a744c018e27c6969c2109d6d79',1,'ir_Nikai.cpp']]], - ['knorepeat_6298',['kNoRepeat',['../IRremoteESP8266_8h.html#a1a49dde7ffbd753f7756cf0c9dc6d826',1,'IRremoteESP8266.h']]], - ['knostr_6299',['kNoStr',['../IRtext_8cpp.html#a07897ceb4a6607d87ef37a517908a4b5',1,'kNoStr(): IRtext.cpp'],['../IRtext_8h.html#a51c9fb58ee7d01e96e2571018aea746d',1,'kNoStr(): IRtext.cpp']]], - ['knowstr_6300',['kNowStr',['../IRtext_8cpp.html#a09d8590020bcf998746528d0e50f7a20',1,'kNowStr(): IRtext.cpp'],['../IRtext_8h.html#a6a3c0965a32c36d9b5aa4918b473cc12',1,'kNowStr(): IRtext.cpp']]], - ['koffstr_6301',['kOffStr',['../IRtext_8cpp.html#a9ce19a214db45b8cff83032ffa1ccdd8',1,'kOffStr(): IRtext.cpp'],['../IRtext_8h.html#a95f119413a113c9a2e8c246892b8c52a',1,'kOffStr(): IRtext.cpp']]], - ['kofftimerstr_6302',['kOffTimerStr',['../IRtext_8cpp.html#ae5faab97b26f9e877f79f49002bbba2c',1,'kOffTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a818275085f8a8d7c083b66f081689b1f',1,'kOffTimerStr(): IRtext.cpp']]], - ['konstr_6303',['kOnStr',['../IRtext_8cpp.html#ab3f42c8df156baa46326a57193f78c51',1,'kOnStr(): IRtext.cpp'],['../IRtext_8h.html#aaf4ffad7f827a2ce8512e644bc9c25c7',1,'kOnStr(): IRtext.cpp']]], - ['kontimerstr_6304',['kOnTimerStr',['../IRtext_8cpp.html#adaecb1b5526f2bb3a1334e816a414273',1,'kOnTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a9f355a0d834790287d95eea30b57564d',1,'kOnTimerStr(): IRtext.cpp']]], - ['koutsidequietstr_6305',['kOutsideQuietStr',['../IRtext_8cpp.html#a103f2a8a2a6d351cd8ea259de3c454ef',1,'kOutsideQuietStr(): IRtext.cpp'],['../IRtext_8h.html#afaf12ae53365f790b47ff3790e94cc1c',1,'kOutsideQuietStr(): IRtext.cpp']]], - ['koutsidestr_6306',['kOutsideStr',['../IRtext_8cpp.html#a8465ee1e8b1e5dd58a9cf872c9569e01',1,'kOutsideStr(): IRtext.cpp'],['../IRtext_8h.html#ada5c81e0fcc4073d6f51e7447e8c5da0',1,'kOutsideStr(): IRtext.cpp']]], - ['kpanasonicac32auto_6307',['kPanasonicAc32Auto',['../ir__Panasonic_8h.html#a3ddd918dd9ccd97fc591a795c665f275',1,'ir_Panasonic.h']]], - ['kpanasonicac32bitmark_6308',['kPanasonicAc32BitMark',['../ir__Panasonic_8cpp.html#acfabc49966b4de99f75af1e364785338',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32bits_6309',['kPanasonicAc32Bits',['../IRremoteESP8266_8h.html#adae68c6e0ebe7d18c344d9cad5ca49f0',1,'IRremoteESP8266.h']]], - ['kpanasonicac32blockspersection_6310',['kPanasonicAc32BlocksPerSection',['../ir__Panasonic_8cpp.html#a1fac8213c4bc8555ed0f3267b0f41d5f',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32cool_6311',['kPanasonicAc32Cool',['../ir__Panasonic_8h.html#afb25de760b1210efd2b6d34ddc1dcee8',1,'ir_Panasonic.h']]], - ['kpanasonicac32dry_6312',['kPanasonicAc32Dry',['../ir__Panasonic_8h.html#a92592f6e966de10510e8547e3863445a',1,'ir_Panasonic.h']]], - ['kpanasonicac32fan_6313',['kPanasonicAc32Fan',['../ir__Panasonic_8h.html#ab18e968771c2ace0b2e053ea61a0327a',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanauto_6314',['kPanasonicAc32FanAuto',['../ir__Panasonic_8h.html#aa093ff0443bb37cecd19331b2147ddb6',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanhigh_6315',['kPanasonicAc32FanHigh',['../ir__Panasonic_8h.html#a010754f8844452de684b2d346f6beb79',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanlow_6316',['kPanasonicAc32FanLow',['../ir__Panasonic_8h.html#af395ea1be8216b63320e7669f582e399',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanmax_6317',['kPanasonicAc32FanMax',['../ir__Panasonic_8h.html#a7fa3122beae91071e2fde235a6b76da5',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanmed_6318',['kPanasonicAc32FanMed',['../ir__Panasonic_8h.html#ad43a603c7c5d6d52ec7af7b6aa7258af',1,'ir_Panasonic.h']]], - ['kpanasonicac32fanmin_6319',['kPanasonicAc32FanMin',['../ir__Panasonic_8h.html#a3cc712e4dbf4d8ab9b60b4338a1c6831',1,'ir_Panasonic.h']]], - ['kpanasonicac32hdrmark_6320',['kPanasonicAc32HdrMark',['../ir__Panasonic_8cpp.html#a16e84fe3a68d385a51d92924a56edffe',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32hdrspace_6321',['kPanasonicAc32HdrSpace',['../ir__Panasonic_8cpp.html#a1eeb2e9362c9355ea34f6b73eded2612',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32heat_6322',['kPanasonicAc32Heat',['../ir__Panasonic_8h.html#a91581c58624da05d36e3807a4eecfd8a',1,'ir_Panasonic.h']]], - ['kpanasonicac32knowngood_6323',['kPanasonicAc32KnownGood',['../ir__Panasonic_8h.html#aeeca2ce0d19ad601e762a9f1858c2d50',1,'ir_Panasonic.h']]], - ['kpanasonicac32onespace_6324',['kPanasonicAc32OneSpace',['../ir__Panasonic_8cpp.html#aab874afd4e02b558e73ecfbc1c3b46ea',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32sectiongap_6325',['kPanasonicAc32SectionGap',['../ir__Panasonic_8cpp.html#a6e7bfebde7c0a307ce5dc6cbdb8626e0',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32sections_6326',['kPanasonicAc32Sections',['../ir__Panasonic_8cpp.html#a0108f19bc064d5bb55abb341048c298f',1,'ir_Panasonic.cpp']]], - ['kpanasonicac32swingvauto_6327',['kPanasonicAc32SwingVAuto',['../ir__Panasonic_8h.html#a705b34ad74e271656bf8986740658321',1,'ir_Panasonic.h']]], - ['kpanasonicac32zerospace_6328',['kPanasonicAc32ZeroSpace',['../ir__Panasonic_8cpp.html#a5ec58e2129c493ebdb877f934a8af849',1,'ir_Panasonic.cpp']]], - ['kpanasonicacauto_6329',['kPanasonicAcAuto',['../ir__Panasonic_8h.html#aa7c839a4342205c384870e8a4f5ec36b',1,'ir_Panasonic.h']]], - ['kpanasonicacbits_6330',['kPanasonicAcBits',['../IRremoteESP8266_8h.html#a210f5c78b0f90b64dd5037698141433a',1,'IRremoteESP8266.h']]], - ['kpanasonicacchecksuminit_6331',['kPanasonicAcChecksumInit',['../ir__Panasonic_8h.html#a49329b4fef403696effcbcc5c8a86cd2',1,'ir_Panasonic.h']]], - ['kpanasonicaccool_6332',['kPanasonicAcCool',['../ir__Panasonic_8h.html#acfaa3d61fbb13fc6cd8d354f1c0a8dc7',1,'ir_Panasonic.h']]], - ['kpanasonicacdefaultrepeat_6333',['kPanasonicAcDefaultRepeat',['../IRremoteESP8266_8h.html#af6b7c6ad564253cb128ac92c00e86f0c',1,'IRremoteESP8266.h']]], - ['kpanasonicacdry_6334',['kPanasonicAcDry',['../ir__Panasonic_8h.html#a2d211bd2150a67819453f3220dc0cc91',1,'ir_Panasonic.h']]], - ['kpanasonicacexcess_6335',['kPanasonicAcExcess',['../ir__Panasonic_8h.html#adde8b69377faa9a4566dc15e95711257',1,'ir_Panasonic.h']]], - ['kpanasonicacfan_6336',['kPanasonicAcFan',['../ir__Panasonic_8h.html#a87e4dd423bbd1f879a9d5da31e1fea5e',1,'ir_Panasonic.h']]], - ['kpanasonicacfanauto_6337',['kPanasonicAcFanAuto',['../ir__Panasonic_8h.html#a7d4486fd68969af4f7230f12e865c698',1,'ir_Panasonic.h']]], - ['kpanasonicacfandelta_6338',['kPanasonicAcFanDelta',['../ir__Panasonic_8h.html#a2210f85a17fba2bbdfbb883e9fb57e52',1,'ir_Panasonic.h']]], - ['kpanasonicacfanhigh_6339',['kPanasonicAcFanHigh',['../ir__Panasonic_8h.html#ab19838820e1ca649c156b5f4a5d6c8cb',1,'ir_Panasonic.h']]], - ['kpanasonicacfanlow_6340',['kPanasonicAcFanLow',['../ir__Panasonic_8h.html#a222ef797cbefbff556e0ab93f23407cc',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmax_6341',['kPanasonicAcFanMax',['../ir__Panasonic_8h.html#aa4599c84d72ab9c622b642870efb9cf1',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmed_6342',['kPanasonicAcFanMed',['../ir__Panasonic_8h.html#a978004e8e2c4122fec81c5a972b842a0',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmin_6343',['kPanasonicAcFanMin',['../ir__Panasonic_8h.html#a450c7951a525817d27351fb7c8ff2df9',1,'ir_Panasonic.h']]], - ['kpanasonicacfanmodetemp_6344',['kPanasonicAcFanModeTemp',['../ir__Panasonic_8h.html#a76543f9d81c2d109e04359f0c61dcb99',1,'ir_Panasonic.h']]], - ['kpanasonicacheat_6345',['kPanasonicAcHeat',['../ir__Panasonic_8h.html#ac37bb7dd975a9aa803edfc108a5071ed',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilterbyte_6346',['kPanasonicAcIonFilterByte',['../ir__Panasonic_8h.html#a16c946660d2ee3821dd2e30a69144a38',1,'ir_Panasonic.h']]], - ['kpanasonicacionfilteroffset_6347',['kPanasonicAcIonFilterOffset',['../ir__Panasonic_8h.html#a5c1b18d1b834e9d46cbd29c74a1b8269',1,'ir_Panasonic.h']]], - ['kpanasonicacmaxtemp_6348',['kPanasonicAcMaxTemp',['../ir__Panasonic_8h.html#a95fe6bc5b2565bf29d1a6dcee2f0c39f',1,'ir_Panasonic.h']]], - ['kpanasonicacmessagegap_6349',['kPanasonicAcMessageGap',['../ir__Panasonic_8cpp.html#a962cde97e8d98ad32f0b59172b641d6d',1,'ir_Panasonic.cpp']]], - ['kpanasonicacmintemp_6350',['kPanasonicAcMinTemp',['../ir__Panasonic_8h.html#a7861e8477904e1a572bcf35286fd3733',1,'ir_Panasonic.h']]], - ['kpanasonicacofftimeroffset_6351',['kPanasonicAcOffTimerOffset',['../ir__Panasonic_8h.html#a477b61044f1db5c296f13a404c536046',1,'ir_Panasonic.h']]], - ['kpanasonicacontimeroffset_6352',['kPanasonicAcOnTimerOffset',['../ir__Panasonic_8h.html#a64350202f82aabfd1673f0dda4d3c13d',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfulckpoffset_6353',['kPanasonicAcPowerfulCkpOffset',['../ir__Panasonic_8h.html#aa839301a08c8e49548f497e786dbb6fa',1,'ir_Panasonic.h']]], - ['kpanasonicacpowerfuloffset_6354',['kPanasonicAcPowerfulOffset',['../ir__Panasonic_8h.html#a27e9b1af4b65830015576beed69cb27d',1,'ir_Panasonic.h']]], - ['kpanasonicacpoweroffset_6355',['kPanasonicAcPowerOffset',['../ir__Panasonic_8h.html#a9e9b3d0c77ef93ab472ce14ed1534c77',1,'ir_Panasonic.h']]], - ['kpanasonicacquietckpoffset_6356',['kPanasonicAcQuietCkpOffset',['../ir__Panasonic_8h.html#a5a3779cd6fd8d573ae14ed4a6d676dba',1,'ir_Panasonic.h']]], - ['kpanasonicacquietoffset_6357',['kPanasonicAcQuietOffset',['../ir__Panasonic_8h.html#a1ec8db8798f79dead05233ee6333700d',1,'ir_Panasonic.h']]], - ['kpanasonicacsection1length_6358',['kPanasonicAcSection1Length',['../ir__Panasonic_8cpp.html#a34c6c085d468ed4b35f814452335d334',1,'ir_Panasonic.cpp']]], - ['kpanasonicacsectiongap_6359',['kPanasonicAcSectionGap',['../ir__Panasonic_8cpp.html#a3cf28f1268e8a35da220d42deda7c456',1,'ir_Panasonic.cpp']]], - ['kpanasonicacshortbits_6360',['kPanasonicAcShortBits',['../IRremoteESP8266_8h.html#a2fd1f84669f7994bb3c235a508333c6c',1,'IRremoteESP8266.h']]], - ['kpanasonicacstatelength_6361',['kPanasonicAcStateLength',['../IRremoteESP8266_8h.html#ab21d86545b57738354e7a3b833d38f94',1,'IRremoteESP8266.h']]], - ['kpanasonicacstateshortlength_6362',['kPanasonicAcStateShortLength',['../IRremoteESP8266_8h.html#a0a6ca8c1dfa6f313421ddf268d76d8e6',1,'IRremoteESP8266.h']]], - ['kpanasonicacswinghauto_6363',['kPanasonicAcSwingHAuto',['../ir__Panasonic_8h.html#a91e2933692ad98acf054c7a69f6c2018',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullleft_6364',['kPanasonicAcSwingHFullLeft',['../ir__Panasonic_8h.html#abf1d8c53a1b69d99019c6878f9ec220d',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghfullright_6365',['kPanasonicAcSwingHFullRight',['../ir__Panasonic_8h.html#a0e1b7a7591a0f14b2f8be3cb222f1187',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghleft_6366',['kPanasonicAcSwingHLeft',['../ir__Panasonic_8h.html#a853f2c2922e03a975bdd11efc474fa7e',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghmiddle_6367',['kPanasonicAcSwingHMiddle',['../ir__Panasonic_8h.html#afad8a7257fc178321867f16939fff7c7',1,'ir_Panasonic.h']]], - ['kpanasonicacswinghright_6368',['kPanasonicAcSwingHRight',['../ir__Panasonic_8h.html#a282900f1c494efdc6ee057357e624d2e',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvauto_6369',['kPanasonicAcSwingVAuto',['../ir__Panasonic_8h.html#a218e2ea8c76966105c71edcb6e46cd12',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhigh_6370',['kPanasonicAcSwingVHigh',['../ir__Panasonic_8h.html#a25c63195112c5aedc5b5bad40441c55a',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvhighest_6371',['kPanasonicAcSwingVHighest',['../ir__Panasonic_8h.html#ac1cea523d6e1da08d333e0b4acec81af',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlow_6372',['kPanasonicAcSwingVLow',['../ir__Panasonic_8h.html#a3ae9b6c5581f1bfb5b31e252052a6c9d',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvlowest_6373',['kPanasonicAcSwingVLowest',['../ir__Panasonic_8h.html#af269e81dae5989c33199d607adcc04a0',1,'ir_Panasonic.h']]], - ['kpanasonicacswingvmiddle_6374',['kPanasonicAcSwingVMiddle',['../ir__Panasonic_8h.html#a5d46c8234f97e10695507b17a7483d51',1,'ir_Panasonic.h']]], - ['kpanasonicactempoffset_6375',['kPanasonicAcTempOffset',['../ir__Panasonic_8h.html#a203e0351cd53db8376312a3289503175',1,'ir_Panasonic.h']]], - ['kpanasonicactempsize_6376',['kPanasonicAcTempSize',['../ir__Panasonic_8h.html#af30649a3489a4a1dc1f655d15c00e991',1,'ir_Panasonic.h']]], - ['kpanasonicactimemax_6377',['kPanasonicAcTimeMax',['../ir__Panasonic_8h.html#a61378ccad09d1a2e900123a8cbd34858',1,'ir_Panasonic.h']]], - ['kpanasonicactimeoverflowsize_6378',['kPanasonicAcTimeOverflowSize',['../ir__Panasonic_8h.html#ad7942b5ffbb2b1f7a5d9b3719592622b',1,'ir_Panasonic.h']]], - ['kpanasonicactimesize_6379',['kPanasonicAcTimeSize',['../ir__Panasonic_8h.html#a16577844a2f5ca46e2dff076952f2963',1,'ir_Panasonic.h']]], - ['kpanasonicactimespecial_6380',['kPanasonicAcTimeSpecial',['../ir__Panasonic_8h.html#aefb20e7cdbbc27e3c0725a8660a84a28',1,'ir_Panasonic.h']]], - ['kpanasonicactolerance_6381',['kPanasonicAcTolerance',['../ir__Panasonic_8h.html#a586a655b3afd82c38588fc1b61089aa1',1,'ir_Panasonic.h']]], - ['kpanasonicbitmark_6382',['kPanasonicBitMark',['../ir__Panasonic_8cpp.html#a428cd02c5dc3dc571e495efa0707cc99',1,'ir_Panasonic.cpp']]], - ['kpanasonicbits_6383',['kPanasonicBits',['../IRremoteESP8266_8h.html#aa148f54492be1cf8a8b285a96861a0b7',1,'IRremoteESP8266.h']]], - ['kpanasonicendgap_6384',['kPanasonicEndGap',['../ir__Panasonic_8cpp.html#a3cb2f7a925bb8374a90e3156febabb39',1,'ir_Panasonic.cpp']]], - ['kpanasonicfreq_6385',['kPanasonicFreq',['../ir__Panasonic_8h.html#af344612d7f1c0d3f8271c312f310243e',1,'ir_Panasonic.h']]], - ['kpanasonichdrmark_6386',['kPanasonicHdrMark',['../ir__Panasonic_8cpp.html#a0d36b699fead0e229c583dae94f5e8f9',1,'ir_Panasonic.cpp']]], - ['kpanasonichdrspace_6387',['kPanasonicHdrSpace',['../ir__Panasonic_8cpp.html#ae56b3eb80f186a63b0f69c6b4e9efce8',1,'ir_Panasonic.cpp']]], - ['kpanasonicknowngoodstate_6388',['kPanasonicKnownGoodState',['../ir__Panasonic_8h.html#a88a9678f8b00efa173b800b0b8441f87',1,'ir_Panasonic.h']]], - ['kpanasonicmanufacturer_6389',['kPanasonicManufacturer',['../IRremoteESP8266_8h.html#a1dd1a9799e5d20d39e82ff678bf07b47',1,'IRremoteESP8266.h']]], - ['kpanasonicmincommandlength_6390',['kPanasonicMinCommandLength',['../ir__Panasonic_8cpp.html#a5f191fff3eeb722cb03bee859a016132',1,'ir_Panasonic.cpp']]], - ['kpanasonicmingap_6391',['kPanasonicMinGap',['../ir__Panasonic_8cpp.html#a61592f3569c0ee4825cca185fb43236d',1,'ir_Panasonic.cpp']]], - ['kpanasoniconespace_6392',['kPanasonicOneSpace',['../ir__Panasonic_8cpp.html#a9069f2ab94cacbd301d7615795c155b1',1,'ir_Panasonic.cpp']]], - ['kpanasoniczerospace_6393',['kPanasonicZeroSpace',['../ir__Panasonic_8cpp.html#a43f64a8326fd2447653c81488673fd21',1,'ir_Panasonic.cpp']]], - ['kperiodoffset_6394',['kPeriodOffset',['../IRsend_8h.html#a3a451a4e72e39a4bbf75c62af0ac62f5',1,'IRsend.h']]], - ['kpioneerbitmark_6395',['kPioneerBitMark',['../ir__Pioneer_8cpp.html#a6117fd080ad88efcf943aef53dadd1ad',1,'ir_Pioneer.cpp']]], - ['kpioneerbits_6396',['kPioneerBits',['../IRremoteESP8266_8h.html#a6a7ccd31e0a6f967a219b1a53b89653b',1,'IRremoteESP8266.h']]], - ['kpioneerhdrmark_6397',['kPioneerHdrMark',['../ir__Pioneer_8cpp.html#a03c4df7d9eba6ab56df0451a18e5adbd',1,'ir_Pioneer.cpp']]], - ['kpioneerhdrspace_6398',['kPioneerHdrSpace',['../ir__Pioneer_8cpp.html#a1308ff993ce7d030bdef919d65f35e62',1,'ir_Pioneer.cpp']]], - ['kpioneermincommandlength_6399',['kPioneerMinCommandLength',['../ir__Pioneer_8cpp.html#a22cb7d70bb0eb3b0ce6c7da3631d832f',1,'ir_Pioneer.cpp']]], - ['kpioneermingap_6400',['kPioneerMinGap',['../ir__Pioneer_8cpp.html#adc67bf557bd3474f18dfaa3125c1af41',1,'ir_Pioneer.cpp']]], - ['kpioneeronespace_6401',['kPioneerOneSpace',['../ir__Pioneer_8cpp.html#a5238b059346168128184bca93de16a54',1,'ir_Pioneer.cpp']]], - ['kpioneertick_6402',['kPioneerTick',['../ir__Pioneer_8cpp.html#a63de2364627344f86537ac82447c5cb4',1,'ir_Pioneer.cpp']]], - ['kpioneerzerospace_6403',['kPioneerZeroSpace',['../ir__Pioneer_8cpp.html#a3c6428f201dd3e32c171d6db44269d67',1,'ir_Pioneer.cpp']]], - ['kpowerbuttonstr_6404',['kPowerButtonStr',['../IRtext_8cpp.html#a69d36084b1410a06aa780edcda9428dd',1,'kPowerButtonStr(): IRtext.cpp'],['../IRtext_8h.html#adb54b8d070a4ba7f08b7d2d0f1c03d1c',1,'kPowerButtonStr(): IRtext.cpp']]], - ['kpowerfulstr_6405',['kPowerfulStr',['../IRtext_8cpp.html#a5dfc12bfa12ddf7da3ab6c216258284a',1,'kPowerfulStr(): IRtext.cpp'],['../IRtext_8h.html#a7980630cd028febca8245730dffa684b',1,'kPowerfulStr(): IRtext.cpp']]], - ['kpowerstr_6406',['kPowerStr',['../IRtext_8cpp.html#a5b4b43efe1f1c27d6aee90ebb3500792',1,'kPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a47a76dc8d87d9694a36c6417d7e19dda',1,'kPowerStr(): IRtext.cpp']]], - ['kpowertogglestr_6407',['kPowerToggleStr',['../IRtext_8cpp.html#a2f7e242dc28cf61fb718bb5c1b681642',1,'kPowerToggleStr(): IRtext.cpp'],['../IRtext_8h.html#afd802a94c6146efb7812ef89f3bf0cc5',1,'kPowerToggleStr(): IRtext.cpp']]], - ['kpreviouspowerstr_6408',['kPreviousPowerStr',['../IRtext_8cpp.html#a2a5cd83ac519798debd7065eb03d5d72',1,'kPreviousPowerStr(): IRtext.cpp'],['../IRtext_8h.html#a9833364e538f50be227ff6c0b01f8f7c',1,'kPreviousPowerStr(): IRtext.cpp']]], - ['kprontodataoffset_6409',['kProntoDataOffset',['../ir__Pronto_8cpp.html#ac073b9ac759e09091b3d80af747656a1',1,'ir_Pronto.cpp']]], - ['kprontofreqfactor_6410',['kProntoFreqFactor',['../ir__Pronto_8cpp.html#aa63eef9baeb563c8494d85d13b956db8',1,'ir_Pronto.cpp']]], - ['kprontofreqoffset_6411',['kProntoFreqOffset',['../ir__Pronto_8cpp.html#a2fae4105559199e292121bcb847d9d52',1,'ir_Pronto.cpp']]], - ['kprontominlength_6412',['kProntoMinLength',['../IRremoteESP8266_8h.html#a25dd42234e21d41b0b4bc97e1fe921c4',1,'IRremoteESP8266.h']]], - ['kprontoseq1lenoffset_6413',['kProntoSeq1LenOffset',['../ir__Pronto_8cpp.html#a1df51305dddf233fc3963856e288366f',1,'ir_Pronto.cpp']]], - ['kprontoseq2lenoffset_6414',['kProntoSeq2LenOffset',['../ir__Pronto_8cpp.html#a708744a9f82547e5abc17d7ed866a648',1,'ir_Pronto.cpp']]], - ['kprontotypeoffset_6415',['kProntoTypeOffset',['../ir__Pronto_8cpp.html#a603ff34f28f270a98bf0bebdaf19bfbc',1,'ir_Pronto.cpp']]], - ['kprotocolstr_6416',['kProtocolStr',['../IRtext_8cpp.html#afb9e901ded9e88a48218282a7446ff63',1,'kProtocolStr(): IRtext.cpp'],['../IRtext_8h.html#ac50f97a0d33041fe4bba6e02c500c8ef',1,'kProtocolStr(): IRtext.cpp']]], - ['kpurifystr_6417',['kPurifyStr',['../IRtext_8cpp.html#a85c2b59f6cba1878648d3d8fe9d7f9a4',1,'kPurifyStr(): IRtext.cpp'],['../IRtext_8h.html#aae574dbb4b9f70db0e64386d61c21beb',1,'kPurifyStr(): IRtext.cpp']]], - ['kquietstr_6418',['kQuietStr',['../IRtext_8cpp.html#a6f85e3119eb884455f474ff909be6b53',1,'kQuietStr(): IRtext.cpp'],['../IRtext_8h.html#a7086660370d73d6f499972cf802db8f7',1,'kQuietStr(): IRtext.cpp']]], - ['krawbuf_6419',['kRawBuf',['../IRrecv_8h.html#aadfa37def10a1adeaf2cf4c09d7504e3',1,'IRrecv.h']]], - ['krawtick_6420',['kRawTick',['../IRrecv_8h.html#a373dde69c312b0122665e581eea1297b',1,'IRrecv.h']]], - ['krc5bits_6421',['kRC5Bits',['../IRremoteESP8266_8h.html#ad0935984e6518e340562665742199483',1,'IRremoteESP8266.h']]], - ['krc5mincommandlength_6422',['kRc5MinCommandLength',['../ir__RC5__RC6_8cpp.html#a32b5997148b53fd2984388f6d0384c35',1,'ir_RC5_RC6.cpp']]], - ['krc5mingap_6423',['kRc5MinGap',['../ir__RC5__RC6_8cpp.html#a26580409f593179d838c465647e35c41',1,'ir_RC5_RC6.cpp']]], - ['krc5rawbits_6424',['kRC5RawBits',['../IRremoteESP8266_8h.html#a955183d3358fcafea853014ddd890574',1,'IRremoteESP8266.h']]], - ['krc5samplesmin_6425',['kRc5SamplesMin',['../ir__RC5__RC6_8cpp.html#aa206173838597c760b4a01c36bbc771a',1,'ir_RC5_RC6.cpp']]], - ['krc5t1_6426',['kRc5T1',['../ir__RC5__RC6_8cpp.html#aa42cae15fa77a196eb8f198de09e19eb',1,'ir_RC5_RC6.cpp']]], - ['krc5togglemask_6427',['kRc5ToggleMask',['../ir__RC5__RC6_8cpp.html#ae3485c1c157d6d84a0385cb1bfb8833a',1,'ir_RC5_RC6.cpp']]], - ['krc5xbits_6428',['kRC5XBits',['../IRremoteESP8266_8h.html#abec3ebb217126560e824fa8b66d495bc',1,'IRremoteESP8266.h']]], - ['krc6_5f36bits_6429',['kRC6_36Bits',['../IRremoteESP8266_8h.html#a30a2cb328aa0d47f53aba56055ac74e0',1,'IRremoteESP8266.h']]], - ['krc6_5f36togglemask_6430',['kRc6_36ToggleMask',['../ir__RC5__RC6_8cpp.html#a31ae862ce2a43edd99bda647262b18fa',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmark_6431',['kRc6HdrMark',['../ir__RC5__RC6_8cpp.html#ae05bbb9f690cc92feb0a9c14b3b8c477',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrmarkticks_6432',['kRc6HdrMarkTicks',['../ir__RC5__RC6_8cpp.html#aff2a5bc05ddf61d289c44a4fd093009c',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspace_6433',['kRc6HdrSpace',['../ir__RC5__RC6_8cpp.html#a0196311c9b116cf48c8f901fb6c93ac3',1,'ir_RC5_RC6.cpp']]], - ['krc6hdrspaceticks_6434',['kRc6HdrSpaceTicks',['../ir__RC5__RC6_8cpp.html#a35a9cc59fe5251a34c88e34b6a507fd3',1,'ir_RC5_RC6.cpp']]], - ['krc6mode0bits_6435',['kRC6Mode0Bits',['../IRremoteESP8266_8h.html#a84a6d3e15e98f7a4917d252d5665534a',1,'IRremoteESP8266.h']]], - ['krc6rptlength_6436',['kRc6RptLength',['../ir__RC5__RC6_8cpp.html#a4989f36b790a99545e708c8681b6b961',1,'ir_RC5_RC6.cpp']]], - ['krc6rptlengthticks_6437',['kRc6RptLengthTicks',['../ir__RC5__RC6_8cpp.html#acf2dc0074bfe7671deb8985eba4396e3',1,'ir_RC5_RC6.cpp']]], - ['krc6tick_6438',['kRc6Tick',['../ir__RC5__RC6_8cpp.html#aad98dc2541039634817609d4e297322f',1,'ir_RC5_RC6.cpp']]], - ['krc6togglemask_6439',['kRc6ToggleMask',['../ir__RC5__RC6_8cpp.html#a4df09270c1e9cda504026189e30829ff',1,'ir_RC5_RC6.cpp']]], - ['krcmmbitmark_6440',['kRcmmBitMark',['../ir__RCMM_8cpp.html#ad768f62bbd7e4df567c3e53ea0a8ed06',1,'ir_RCMM.cpp']]], - ['krcmmbitmarkticks_6441',['kRcmmBitMarkTicks',['../ir__RCMM_8cpp.html#a48aeb7992d30f8c7cfa04dbd14ea0996',1,'ir_RCMM.cpp']]], - ['krcmmbits_6442',['kRCMMBits',['../IRremoteESP8266_8h.html#a2bfaf393c2d77a594f2a0a5a763e84f5',1,'IRremoteESP8266.h']]], - ['krcmmbitspace0_6443',['kRcmmBitSpace0',['../ir__RCMM_8cpp.html#a34a7b22107461be18500f6d1ddf979e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace0ticks_6444',['kRcmmBitSpace0Ticks',['../ir__RCMM_8cpp.html#a0864042e8c098169d1d221fbd798cda3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1_6445',['kRcmmBitSpace1',['../ir__RCMM_8cpp.html#a812b9895f0eccaaf78752dc7030022aa',1,'ir_RCMM.cpp']]], - ['krcmmbitspace1ticks_6446',['kRcmmBitSpace1Ticks',['../ir__RCMM_8cpp.html#a89f945e0a91feccd505f0b8310a9ebb9',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2_6447',['kRcmmBitSpace2',['../ir__RCMM_8cpp.html#aff0db6a8f28d3a307cd7bbb6dc90e3e3',1,'ir_RCMM.cpp']]], - ['krcmmbitspace2ticks_6448',['kRcmmBitSpace2Ticks',['../ir__RCMM_8cpp.html#a592dda1dd9239c9a015163b80cddf859',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3_6449',['kRcmmBitSpace3',['../ir__RCMM_8cpp.html#a5e6351cbcb4c576871584dbf61d87d33',1,'ir_RCMM.cpp']]], - ['krcmmbitspace3ticks_6450',['kRcmmBitSpace3Ticks',['../ir__RCMM_8cpp.html#aa3f7d7e37ffa6bf9649eef7720770767',1,'ir_RCMM.cpp']]], - ['krcmmexcess_6451',['kRcmmExcess',['../ir__RCMM_8cpp.html#a3845e23031e92fd008157b0f95827432',1,'ir_RCMM.cpp']]], - ['krcmmhdrmark_6452',['kRcmmHdrMark',['../ir__RCMM_8cpp.html#a7fc5d5c1dc89ef0615fcaebaacc504df',1,'ir_RCMM.cpp']]], - ['krcmmhdrmarkticks_6453',['kRcmmHdrMarkTicks',['../ir__RCMM_8cpp.html#a00e93c94548ac081083ed2cabd614330',1,'ir_RCMM.cpp']]], - ['krcmmhdrspace_6454',['kRcmmHdrSpace',['../ir__RCMM_8cpp.html#af4dc2548c8069caf889612b3b28895ea',1,'ir_RCMM.cpp']]], - ['krcmmhdrspaceticks_6455',['kRcmmHdrSpaceTicks',['../ir__RCMM_8cpp.html#a87cd8bb5322fb38aecd20362a7df5016',1,'ir_RCMM.cpp']]], - ['krcmmmingap_6456',['kRcmmMinGap',['../ir__RCMM_8cpp.html#a94f9533bf18c0a2c2b6511ffa95ff5dc',1,'ir_RCMM.cpp']]], - ['krcmmmingapticks_6457',['kRcmmMinGapTicks',['../ir__RCMM_8cpp.html#aacb274f2da878aed511f6ab400cd51e9',1,'ir_RCMM.cpp']]], - ['krcmmrptlength_6458',['kRcmmRptLength',['../ir__RCMM_8cpp.html#a1dccf2b944d4eeb8b7dd2a1f66548a68',1,'ir_RCMM.cpp']]], - ['krcmmrptlengthticks_6459',['kRcmmRptLengthTicks',['../ir__RCMM_8cpp.html#a4cd637fa0a6071f9ea0b52c346ffe7f0',1,'ir_RCMM.cpp']]], - ['krcmmtick_6460',['kRcmmTick',['../ir__RCMM_8cpp.html#a9e1a3a26185d58ff675eec7485bc671f',1,'ir_RCMM.cpp']]], - ['krcmmtolerance_6461',['kRcmmTolerance',['../ir__RCMM_8cpp.html#a4b95480078186b3498ca6426e5bbc428',1,'ir_RCMM.cpp']]], - ['krcz01channelmask_6462',['kRcz01ChannelMask',['../ir__Doshisha_8cpp.html#a085b3d47e4cf8d8b4ba999ae58ec3533',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel1_6463',['kRcz01CommandLevel1',['../ir__Doshisha_8cpp.html#a436b801a282374de0f28e27828e1c4bf',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel2_6464',['kRcz01CommandLevel2',['../ir__Doshisha_8cpp.html#a311ef41fff985236216238565219bfe7',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel3_6465',['kRcz01CommandLevel3',['../ir__Doshisha_8cpp.html#a879bd44f482c87fbaf9fecaad8ed4c6d',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevel4_6466',['kRcz01CommandLevel4',['../ir__Doshisha_8cpp.html#a52bad85f1a3918e3031297a6c6074b45',1,'ir_Doshisha.cpp']]], - ['krcz01commandleveldown_6467',['kRcz01CommandLevelDown',['../ir__Doshisha_8cpp.html#a1678269506503f1abf871ed0af6dcc2b',1,'ir_Doshisha.cpp']]], - ['krcz01commandlevelup_6468',['kRcz01CommandLevelUp',['../ir__Doshisha_8cpp.html#a4eba011d2b110a5348783534e957660e',1,'ir_Doshisha.cpp']]], - ['krcz01commandmask_6469',['kRcz01CommandMask',['../ir__Doshisha_8cpp.html#a148e2f676f895f4e3b77b39780e2ca94',1,'ir_Doshisha.cpp']]], - ['krcz01commandnightlight_6470',['kRcz01CommandNightLight',['../ir__Doshisha_8cpp.html#a47e9d5bf353cf8aef8199fb74693aa0f',1,'ir_Doshisha.cpp']]], - ['krcz01commandoff_6471',['kRcz01CommandOff',['../ir__Doshisha_8cpp.html#a97fd32975ab9fafa85e0704964780773',1,'ir_Doshisha.cpp']]], - ['krcz01commandon_6472',['kRcz01CommandOn',['../ir__Doshisha_8cpp.html#a7377eac8b1d938903fd43d7505dd8a49',1,'ir_Doshisha.cpp']]], - ['krcz01commandswitchchannel_6473',['kRcz01CommandSwitchChannel',['../ir__Doshisha_8cpp.html#afcd3fe98c34ef9572c1a68bd143e128b',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer30_6474',['kRcz01CommandTimmer30',['../ir__Doshisha_8cpp.html#a3deebab67d01756f7776f0d11cbdef6e',1,'ir_Doshisha.cpp']]], - ['krcz01commandtimmer60_6475',['kRcz01CommandTimmer60',['../ir__Doshisha_8cpp.html#abac6b50227512508aeb5b6042a8380fd',1,'ir_Doshisha.cpp']]], - ['krcz01signature_6476',['kRcz01Signature',['../ir__Doshisha_8cpp.html#a35c6dff74ae1702933e33f02f743f616',1,'ir_Doshisha.cpp']]], - ['krcz01signaturemask_6477',['kRcz01SignatureMask',['../ir__Doshisha_8cpp.html#a1f3b9cdfba7cc7515611d7145b7318a5',1,'ir_Doshisha.cpp']]], - ['krecyclestr_6478',['kRecycleStr',['../IRtext_8cpp.html#a5159481cec97d0fdfbfac15e43a8c20a',1,'kRecycleStr(): IRtext.cpp'],['../IRtext_8h.html#a91ca83e3aebe460fe74314747580aefa',1,'kRecycleStr(): IRtext.cpp']]], - ['krepeat_6479',['kRepeat',['../IRrecv_8h.html#ae8b11750ba7f2e2d56343f770720ed89',1,'IRrecv.h']]], - ['krepeatstr_6480',['kRepeatStr',['../IRtext_8cpp.html#ad55ef2e023915f39c7ce77e7eeb1ad76',1,'kRepeatStr(): IRtext.cpp'],['../IRtext_8h.html#a74a53cc1564f75b36269eb1ca8c6235b',1,'kRepeatStr(): IRtext.cpp']]], - ['krightmaxstr_6481',['kRightMaxStr',['../IRtext_8cpp.html#af3e63659779f5fdb4aded4861521e564',1,'kRightMaxStr(): IRtext.cpp'],['../IRtext_8h.html#ac7a90008560fd1e7b4ed240f354d8fae',1,'kRightMaxStr(): IRtext.cpp']]], - ['krightstr_6482',['kRightStr',['../IRtext_8cpp.html#aacc9b0b21efb6053b75ed117d4ab9105',1,'kRightStr(): IRtext.cpp'],['../IRtext_8h.html#a953f9c48fcf87e81bf6f383e8fe8b1dd',1,'kRightStr(): IRtext.cpp']]], - ['kroomstr_6483',['kRoomStr',['../IRtext_8cpp.html#ab3f02ff54af9a94fd57d098838a4a642',1,'kRoomStr(): IRtext.cpp'],['../IRtext_8h.html#a5358a85538e4643c1cc109a7a0b90079',1,'kRoomStr(): IRtext.cpp']]], - ['ksamsung36bitmark_6484',['kSamsung36BitMark',['../ir__Samsung_8cpp.html#a2e9bc50c6320d7a1244713b4a1647e71',1,'ir_Samsung.cpp']]], - ['ksamsung36bits_6485',['kSamsung36Bits',['../IRremoteESP8266_8h.html#a5e1e6f30a41f0d94652429a9e1034179',1,'IRremoteESP8266.h']]], - ['ksamsung36hdrmark_6486',['kSamsung36HdrMark',['../ir__Samsung_8cpp.html#a47c0e69d6e21597ea15dc613c58861b6',1,'ir_Samsung.cpp']]], - ['ksamsung36hdrspace_6487',['kSamsung36HdrSpace',['../ir__Samsung_8cpp.html#a4761b62640c0a56ee641c9077fd800dd',1,'ir_Samsung.cpp']]], - ['ksamsung36onespace_6488',['kSamsung36OneSpace',['../ir__Samsung_8cpp.html#a3a913fe500926cf448d7408303e3698c',1,'ir_Samsung.cpp']]], - ['ksamsung36zerospace_6489',['kSamsung36ZeroSpace',['../ir__Samsung_8cpp.html#ac24972846bc1a2240537b212f5aa55d6',1,'ir_Samsung.cpp']]], - ['ksamsungacauto_6490',['kSamsungAcAuto',['../ir__Samsung_8h.html#a1b05ff970f45c57b13fc13d11e95396b',1,'ir_Samsung.h']]], - ['ksamsungacautotemp_6491',['kSamsungAcAutoTemp',['../ir__Samsung_8h.html#a87bb469afc0e2b6bad44634f3ba5e0ef',1,'ir_Samsung.h']]], - ['ksamsungacbitmark_6492',['kSamsungAcBitMark',['../ir__Samsung_8cpp.html#a37e6f36939f1a12ffe52907bbb64a4cf',1,'ir_Samsung.cpp']]], - ['ksamsungacbits_6493',['kSamsungAcBits',['../IRremoteESP8266_8h.html#adebe85ab48eb876ec15daacca246797c',1,'IRremoteESP8266.h']]], - ['ksamsungacbreezeon_6494',['kSamsungAcBreezeOn',['../ir__Samsung_8h.html#a06299ba6942969f7b9472e752b50d4d7',1,'ir_Samsung.h']]], - ['ksamsungaccool_6495',['kSamsungAcCool',['../ir__Samsung_8h.html#a24d40e01f046f887b7d41dad67ad7555',1,'ir_Samsung.h']]], - ['ksamsungacdefaultrepeat_6496',['kSamsungAcDefaultRepeat',['../IRremoteESP8266_8h.html#a973f4e0189fc10805f67b67f708be1e4',1,'IRremoteESP8266.h']]], - ['ksamsungacdry_6497',['kSamsungAcDry',['../ir__Samsung_8h.html#a6423976c7a41f526e7a878cecb257bbd',1,'ir_Samsung.h']]], - ['ksamsungacextendedbits_6498',['kSamsungAcExtendedBits',['../IRremoteESP8266_8h.html#a296e700965e70a622fe99675ff0438af',1,'IRremoteESP8266.h']]], - ['ksamsungacextendedstatelength_6499',['kSamsungAcExtendedStateLength',['../IRremoteESP8266_8h.html#a28039071f1130e9bc86efddd8265cbf9',1,'IRremoteESP8266.h']]], - ['ksamsungacfan_6500',['kSamsungAcFan',['../ir__Samsung_8h.html#a61d825254b26894a2f097ad92a7dbff2',1,'ir_Samsung.h']]], - ['ksamsungacfanauto_6501',['kSamsungAcFanAuto',['../ir__Samsung_8h.html#a37b29911f4d2b71dcdbd18a5d6dc301a',1,'ir_Samsung.h']]], - ['ksamsungacfanauto2_6502',['kSamsungAcFanAuto2',['../ir__Samsung_8h.html#aafa4319fb523b14d58371f757497e82a',1,'ir_Samsung.h']]], - ['ksamsungacfanhigh_6503',['kSamsungAcFanHigh',['../ir__Samsung_8h.html#a52cccad28fad5b9886ef408af02f56f9',1,'ir_Samsung.h']]], - ['ksamsungacfanlow_6504',['kSamsungAcFanLow',['../ir__Samsung_8h.html#a6f16b5b3f2dea3461f5d44379e8b8634',1,'ir_Samsung.h']]], - ['ksamsungacfanmed_6505',['kSamsungAcFanMed',['../ir__Samsung_8h.html#a798c3544dbd6bb6c8622cf45f88abc14',1,'ir_Samsung.h']]], - ['ksamsungacfanturbo_6506',['kSamsungAcFanTurbo',['../ir__Samsung_8h.html#af6c1432748eaa19df35531b87d197095',1,'ir_Samsung.h']]], - ['ksamsungachdrmark_6507',['kSamsungAcHdrMark',['../ir__Samsung_8cpp.html#ab7385ca5b7b417753b253a0f7cb3721b',1,'ir_Samsung.cpp']]], - ['ksamsungachdrspace_6508',['kSamsungAcHdrSpace',['../ir__Samsung_8cpp.html#a1b1f903fff13b10fb2431be9373e27cb',1,'ir_Samsung.cpp']]], - ['ksamsungacheat_6509',['kSamsungAcHeat',['../ir__Samsung_8h.html#a44ce6be7046ec4b4fe9caba7b71b8f0d',1,'ir_Samsung.h']]], - ['ksamsungacmaxtemp_6510',['kSamsungAcMaxTemp',['../ir__Samsung_8h.html#a0a994796db81a3d56dd2c27cad448a71',1,'ir_Samsung.h']]], - ['ksamsungacmintemp_6511',['kSamsungAcMinTemp',['../ir__Samsung_8h.html#ad5f46ccb96335519f5633c33de0d8018',1,'ir_Samsung.h']]], - ['ksamsungaconespace_6512',['kSamsungAcOneSpace',['../ir__Samsung_8cpp.html#ab106d9b7efb165eed83ae2ccef9a49b4',1,'ir_Samsung.cpp']]], - ['ksamsungacpowerful10on_6513',['kSamsungAcPowerful10On',['../ir__Samsung_8h.html#aa05bb4788febba1f56b2b3929ac273a3',1,'ir_Samsung.h']]], - ['ksamsungacpowerfulmask8_6514',['kSamsungAcPowerfulMask8',['../ir__Samsung_8h.html#a39e23325e35688a3641c467b720381ce',1,'ir_Samsung.h']]], - ['ksamsungacpowersection_6515',['kSamsungAcPowerSection',['../ir__Samsung_8h.html#a9264b5d640d9052c153562fd38415676',1,'ir_Samsung.h']]], - ['ksamsungacsectiongap_6516',['kSamsungAcSectionGap',['../ir__Samsung_8cpp.html#a9752fc615c215a93c1ee65edca3a359e',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionlength_6517',['kSamsungAcSectionLength',['../ir__Samsung_8h.html#ad3faedf7b111f1b91d671666e38ce6f3',1,'ir_Samsung.h']]], - ['ksamsungacsectionmark_6518',['kSamsungAcSectionMark',['../ir__Samsung_8cpp.html#a4304073cddaa2da9613dedce499fee56',1,'ir_Samsung.cpp']]], - ['ksamsungacsections_6519',['kSamsungAcSections',['../ir__Samsung_8cpp.html#a86185d98d6e891a17688d9d2a0fa7114',1,'ir_Samsung.cpp']]], - ['ksamsungacsectionspace_6520',['kSamsungAcSectionSpace',['../ir__Samsung_8cpp.html#a4837f502ef9b7c972ec409cf4fc3c605',1,'ir_Samsung.cpp']]], - ['ksamsungacstatelength_6521',['kSamsungAcStateLength',['../IRremoteESP8266_8h.html#a2d07d8c8917fee072a261d00e67e0d36',1,'IRremoteESP8266.h']]], - ['ksamsungacswingmove_6522',['kSamsungAcSwingMove',['../ir__Samsung_8h.html#ab2d2b422e3972f77aef23f77c7cfbbac',1,'ir_Samsung.h']]], - ['ksamsungacswingstop_6523',['kSamsungAcSwingStop',['../ir__Samsung_8h.html#a37c1720d66c4ba02e368946e53036367',1,'ir_Samsung.h']]], - ['ksamsungaczerospace_6524',['kSamsungAcZeroSpace',['../ir__Samsung_8cpp.html#a7492a25e730f93f22c099ab687621b18',1,'ir_Samsung.cpp']]], - ['ksamsungbitmark_6525',['kSamsungBitMark',['../ir__Samsung_8cpp.html#a03f9ae317a7a701437c8015dfde4401f',1,'ir_Samsung.cpp']]], - ['ksamsungbitmarkticks_6526',['kSamsungBitMarkTicks',['../ir__Samsung_8cpp.html#afe1663f83396f7e5cf9bfc32f321e539',1,'ir_Samsung.cpp']]], - ['ksamsungbits_6527',['kSamsungBits',['../IRremoteESP8266_8h.html#a7c1c015cce09284799cbf5a2f21ee170',1,'IRremoteESP8266.h']]], - ['ksamsunghdrmark_6528',['kSamsungHdrMark',['../ir__Samsung_8cpp.html#a3d0598585af609af4c8d5004789d2df7',1,'ir_Samsung.cpp']]], - ['ksamsunghdrmarkticks_6529',['kSamsungHdrMarkTicks',['../ir__Samsung_8cpp.html#a0c81f486877d24bfd40215b089c52f2a',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspace_6530',['kSamsungHdrSpace',['../ir__Samsung_8cpp.html#a2f55c53bfc72de06ff202c8ec401163d',1,'ir_Samsung.cpp']]], - ['ksamsunghdrspaceticks_6531',['kSamsungHdrSpaceTicks',['../ir__Samsung_8cpp.html#a1ae96cedfa4ed26869d295cfbb8056dd',1,'ir_Samsung.cpp']]], - ['ksamsungmingap_6532',['kSamsungMinGap',['../ir__Samsung_8cpp.html#ab13edb242547803b386aa8539a4b9470',1,'ir_Samsung.cpp']]], - ['ksamsungmingapticks_6533',['kSamsungMinGapTicks',['../ir__Samsung_8cpp.html#a55d79dcfcd43f05ebe456a9a2fce3ff0',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelength_6534',['kSamsungMinMessageLength',['../ir__Samsung_8cpp.html#ae2ec2e45f91f872e85c250c7aac0efc1',1,'ir_Samsung.cpp']]], - ['ksamsungminmessagelengthticks_6535',['kSamsungMinMessageLengthTicks',['../ir__Samsung_8cpp.html#a6d436a1b71158ff9b5d7ae21344cd7d2',1,'ir_Samsung.cpp']]], - ['ksamsungonespace_6536',['kSamsungOneSpace',['../ir__Samsung_8cpp.html#ab486b048d13f44623ee291d4221c2a1b',1,'ir_Samsung.cpp']]], - ['ksamsungonespaceticks_6537',['kSamsungOneSpaceTicks',['../ir__Samsung_8cpp.html#a484a1e3ce3dcbbef15be559bfb5822d0',1,'ir_Samsung.cpp']]], - ['ksamsungrptspace_6538',['kSamsungRptSpace',['../ir__Samsung_8cpp.html#a1cc2f3bcd7f2ca36f0a726828c14aa74',1,'ir_Samsung.cpp']]], - ['ksamsungrptspaceticks_6539',['kSamsungRptSpaceTicks',['../ir__Samsung_8cpp.html#a6864f78ad1428358acbc8b46796e50cc',1,'ir_Samsung.cpp']]], - ['ksamsungtick_6540',['kSamsungTick',['../ir__Samsung_8cpp.html#accd7d51c2714bd383170831372f57bc5',1,'ir_Samsung.cpp']]], - ['ksamsungzerospace_6541',['kSamsungZeroSpace',['../ir__Samsung_8cpp.html#ae2c828a3d099d6195208a3794022587e',1,'ir_Samsung.cpp']]], - ['ksamsungzerospaceticks_6542',['kSamsungZeroSpaceTicks',['../ir__Samsung_8cpp.html#aea63a73a5b0af2c173bc473ee2447a93',1,'ir_Samsung.cpp']]], - ['ksanyoacauto_6543',['kSanyoAcAuto',['../ir__Sanyo_8h.html#a80d3d83c1b85f8c44dd93cc44b30accb',1,'ir_Sanyo.h']]], - ['ksanyoacbitmark_6544',['kSanyoAcBitMark',['../ir__Sanyo_8cpp.html#af738984c8164ff32f3bd91b9263f55c2',1,'ir_Sanyo.cpp']]], - ['ksanyoacbits_6545',['kSanyoAcBits',['../IRremoteESP8266_8h.html#ad3931645167deda3fd0ec72ba33a4034',1,'IRremoteESP8266.h']]], - ['ksanyoaccool_6546',['kSanyoAcCool',['../ir__Sanyo_8h.html#ad6a49260b9097a821cf29fe87796456d',1,'ir_Sanyo.h']]], - ['ksanyoacdry_6547',['kSanyoAcDry',['../ir__Sanyo_8h.html#a5e0645e5f69dc627d130e4bca1751b5c',1,'ir_Sanyo.h']]], - ['ksanyoacfanauto_6548',['kSanyoAcFanAuto',['../ir__Sanyo_8h.html#a7bc8d0e04bdf32a3d7147a8ee4f0fc9c',1,'ir_Sanyo.h']]], - ['ksanyoacfanhigh_6549',['kSanyoAcFanHigh',['../ir__Sanyo_8h.html#a34a75f871c7b2648641830bf8210be0b',1,'ir_Sanyo.h']]], - ['ksanyoacfanlow_6550',['kSanyoAcFanLow',['../ir__Sanyo_8h.html#a3a0bfc84856de44bc2bce7cb63f61414',1,'ir_Sanyo.h']]], - ['ksanyoacfanmedium_6551',['kSanyoAcFanMedium',['../ir__Sanyo_8h.html#a54189bf27e6cbcbe03b9898985a3486f',1,'ir_Sanyo.h']]], - ['ksanyoacfreq_6552',['kSanyoAcFreq',['../ir__Sanyo_8cpp.html#a85397f4fba50f4409467435ae22a003c',1,'ir_Sanyo.cpp']]], - ['ksanyoacgap_6553',['kSanyoAcGap',['../ir__Sanyo_8cpp.html#a20213c79f423cb292a55be3618ff1f2f',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrmark_6554',['kSanyoAcHdrMark',['../ir__Sanyo_8cpp.html#a0b1b08bcc921bbbe6686c699c1aaad2e',1,'ir_Sanyo.cpp']]], - ['ksanyoachdrspace_6555',['kSanyoAcHdrSpace',['../ir__Sanyo_8cpp.html#a8c09cce29f3791eb80c1546be5e5535c',1,'ir_Sanyo.cpp']]], - ['ksanyoacheat_6556',['kSanyoAcHeat',['../ir__Sanyo_8h.html#aacdcd75fdf538881354662454c95e8b5',1,'ir_Sanyo.h']]], - ['ksanyoachourmax_6557',['kSanyoAcHourMax',['../ir__Sanyo_8h.html#aeaa1ba34ec4f7bb2e66e1c63e78ad864',1,'ir_Sanyo.h']]], - ['ksanyoaconespace_6558',['kSanyoAcOneSpace',['../ir__Sanyo_8cpp.html#ac9e641f6e3e07a8938ed28a656281122',1,'ir_Sanyo.cpp']]], - ['ksanyoacpoweroff_6559',['kSanyoAcPowerOff',['../ir__Sanyo_8h.html#a1777504e5870f0e29846cda7a17bb3fd',1,'ir_Sanyo.h']]], - ['ksanyoacpoweron_6560',['kSanyoAcPowerOn',['../ir__Sanyo_8h.html#a6e3da0779d665696d36a03b445ca82ea',1,'ir_Sanyo.h']]], - ['ksanyoacstatelength_6561',['kSanyoAcStateLength',['../IRremoteESP8266_8h.html#ae3128c987a1571fb6b021ffe30079663',1,'IRremoteESP8266.h']]], - ['ksanyoacswingvauto_6562',['kSanyoAcSwingVAuto',['../ir__Sanyo_8h.html#afce45a19ba8cdff528dac0ee8b13bb66',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhigh_6563',['kSanyoAcSwingVHigh',['../ir__Sanyo_8h.html#a4cdea5c3718a4a869d1e914a7a8ee2af',1,'ir_Sanyo.h']]], - ['ksanyoacswingvhighest_6564',['kSanyoAcSwingVHighest',['../ir__Sanyo_8h.html#a64b28da09adf0416c49640264ccb760b',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlow_6565',['kSanyoAcSwingVLow',['../ir__Sanyo_8h.html#aaef1fa9d1ef8f92f59525b09175f6048',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowermiddle_6566',['kSanyoAcSwingVLowerMiddle',['../ir__Sanyo_8h.html#a11141a0d31bca64561eed3be5698a5a6',1,'ir_Sanyo.h']]], - ['ksanyoacswingvlowest_6567',['kSanyoAcSwingVLowest',['../ir__Sanyo_8h.html#a3d97c9b2da1c26ba5943996f76aa4f3f',1,'ir_Sanyo.h']]], - ['ksanyoacswingvuppermiddle_6568',['kSanyoAcSwingVUpperMiddle',['../ir__Sanyo_8h.html#a314f05625e1985042dc6e2a4866c51df',1,'ir_Sanyo.h']]], - ['ksanyoactempdelta_6569',['kSanyoAcTempDelta',['../ir__Sanyo_8h.html#ac0991e0a826fae8228e1064d5d803edc',1,'ir_Sanyo.h']]], - ['ksanyoactempmax_6570',['kSanyoAcTempMax',['../ir__Sanyo_8h.html#aa4222421c4571c9e34d39f01a2c71394',1,'ir_Sanyo.h']]], - ['ksanyoactempmin_6571',['kSanyoAcTempMin',['../ir__Sanyo_8h.html#a59fb387ec5657ba8ff301b9198703b9a',1,'ir_Sanyo.h']]], - ['ksanyoaczerospace_6572',['kSanyoAcZeroSpace',['../ir__Sanyo_8cpp.html#a9a600476008e4462df534ee98c732c1b',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461addressbits_6573',['kSanyoLC7461AddressBits',['../IRremoteESP8266_8h.html#a7e15e988acbea0fb4dfaee6f5bfa12d0',1,'IRremoteESP8266.h']]], - ['ksanyolc7461addressmask_6574',['kSanyoLc7461AddressMask',['../ir__Sanyo_8cpp.html#a785ccc066e433f11791f8a30243944d3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bitmark_6575',['kSanyoLc7461BitMark',['../ir__Sanyo_8cpp.html#a1360ba5ac3f30715c00a6a65155cfec8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461bits_6576',['kSanyoLC7461Bits',['../IRremoteESP8266_8h.html#ad067db05b273337e0df38d529094c9e8',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandbits_6577',['kSanyoLC7461CommandBits',['../IRremoteESP8266_8h.html#a5cd69a192be51634ce72a40398a6c0d7',1,'IRremoteESP8266.h']]], - ['ksanyolc7461commandmask_6578',['kSanyoLc7461CommandMask',['../ir__Sanyo_8cpp.html#abdd072e210a7616d564a9d4a7f798ad3',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrmark_6579',['kSanyoLc7461HdrMark',['../ir__Sanyo_8cpp.html#a0b2e520442dd96f8cd77969230713277',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461hdrspace_6580',['kSanyoLc7461HdrSpace',['../ir__Sanyo_8cpp.html#aa9ca2469e22f66d6e5e3f4ef952484ba',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mincommandlength_6581',['kSanyoLc7461MinCommandLength',['../ir__Sanyo_8cpp.html#a237fac9264bba0014124a815133868b2',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461mingap_6582',['kSanyoLc7461MinGap',['../ir__Sanyo_8cpp.html#aff7f31500dbe9939e223bed6b6c631a8',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461onespace_6583',['kSanyoLc7461OneSpace',['../ir__Sanyo_8cpp.html#a52716e37d6943b01e9df37956f1a83de',1,'ir_Sanyo.cpp']]], - ['ksanyolc7461zerospace_6584',['kSanyoLc7461ZeroSpace',['../ir__Sanyo_8cpp.html#a4e386992c8fca642c259e86e34729a4d',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bbits_6585',['kSanyoSA8650BBits',['../IRremoteESP8266_8h.html#a2c572c8bfa811b7dc3a8a537cc642b85',1,'IRremoteESP8266.h']]], - ['ksanyosa8650bdoublespaceusecs_6586',['kSanyoSa8650bDoubleSpaceUsecs',['../ir__Sanyo_8cpp.html#a828caf6fd05e81cedee67c558b88a0b6',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrmark_6587',['kSanyoSa8650bHdrMark',['../ir__Sanyo_8cpp.html#a9d0472d183a96b8ca71a2b704a06cac8',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bhdrspace_6588',['kSanyoSa8650bHdrSpace',['../ir__Sanyo_8cpp.html#ab432df3bd299b72b4449672d611798b7',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bonemark_6589',['kSanyoSa8650bOneMark',['../ir__Sanyo_8cpp.html#a8854c7bd32c1ec53e8e1869cd9dd8cdd',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650brptlength_6590',['kSanyoSa8650bRptLength',['../ir__Sanyo_8cpp.html#a327ee6de7027aacfa9aa6ee8bdc74e3e',1,'ir_Sanyo.cpp']]], - ['ksanyosa8650bzeromark_6591',['kSanyoSa8650bZeroMark',['../ir__Sanyo_8cpp.html#a516a45a7934f23274fa302d7e711b43c',1,'ir_Sanyo.cpp']]], - ['ksavestr_6592',['kSaveStr',['../IRtext_8cpp.html#a24f9462727ee596a3ae16393c33e3ebc',1,'kSaveStr(): IRtext.cpp'],['../IRtext_8h.html#acb40b78a5269c43cc3e4f44d3da01069',1,'kSaveStr(): IRtext.cpp']]], - ['ksecondsstr_6593',['kSecondsStr',['../IRtext_8cpp.html#a282cb9785839a9da66a9333d788c0fb1',1,'kSecondsStr(): IRtext.cpp'],['../IRtext_8h.html#ad736b59d3fe45b3c06bd301af4d7b455',1,'kSecondsStr(): IRtext.cpp']]], - ['ksecondstr_6594',['kSecondStr',['../IRtext_8cpp.html#a5ec55e16709cbd2c4b1ff8c72c01c1f5',1,'kSecondStr(): IRtext.cpp'],['../IRtext_8h.html#ad3489e1c008bc517b8bf0271c40252d1',1,'kSecondStr(): IRtext.cpp']]], - ['ksensorstr_6595',['kSensorStr',['../IRtext_8cpp.html#aa7e6eab2fbc832f98d6560f62453c934',1,'kSensorStr(): IRtext.cpp'],['../IRtext_8h.html#a56ee9a96dd0a7ee0a5f95c286f6ea7e8',1,'kSensorStr(): IRtext.cpp']]], - ['ksensortempstr_6596',['kSensorTempStr',['../IRtext_8cpp.html#a756daa989457676d2af255428a01e1d5',1,'kSensorTempStr(): IRtext.cpp'],['../IRtext_8h.html#a03e76a09bade0c229fea1ce31fe8c9a1',1,'kSensorTempStr(): IRtext.cpp']]], - ['ksetstr_6597',['kSetStr',['../IRtext_8cpp.html#a27b5e437df44d4d41db9b296a1f236a1',1,'kSetStr(): IRtext.cpp'],['../IRtext_8h.html#a31d3426b8a8d1a35c47c88ef00023fce',1,'kSetStr(): IRtext.cpp']]], - ['ksharpacauto_6598',['kSharpAcAuto',['../ir__Sharp_8h.html#ad4e228b234598a84e11a76e7f2d27199',1,'ir_Sharp.h']]], - ['ksharpacbitmark_6599',['kSharpAcBitMark',['../ir__Sharp_8h.html#ae73dd2c91b531bf3a52641b36f56ead7',1,'ir_Sharp.h']]], - ['ksharpacbits_6600',['kSharpAcBits',['../IRremoteESP8266_8h.html#a6c106a982acced5d8aeef98644002ca2',1,'IRremoteESP8266.h']]], - ['ksharpacbytetemp_6601',['kSharpAcByteTemp',['../ir__Sharp_8h.html#a1b67ab12ed664517124fe3c1d7325927',1,'ir_Sharp.h']]], - ['ksharpaccool_6602',['kSharpAcCool',['../ir__Sharp_8h.html#ae828d7e915f69cc1e9538839fc51c895',1,'ir_Sharp.h']]], - ['ksharpacdefaultrepeat_6603',['kSharpAcDefaultRepeat',['../IRremoteESP8266_8h.html#a7f0438831899e3df16f9002717c818b9',1,'IRremoteESP8266.h']]], - ['ksharpacdry_6604',['kSharpAcDry',['../ir__Sharp_8h.html#a50ae949b473ed4a6482fa00d747b2c0f',1,'ir_Sharp.h']]], - ['ksharpacfan_6605',['kSharpAcFan',['../ir__Sharp_8h.html#a4b8ec70fe3b83debdc6b3a1440cfe3e4',1,'ir_Sharp.h']]], - ['ksharpacfana705low_6606',['kSharpAcFanA705Low',['../ir__Sharp_8h.html#a49b66950f998c99cc516a68cd5490691',1,'ir_Sharp.h']]], - ['ksharpacfana705med_6607',['kSharpAcFanA705Med',['../ir__Sharp_8h.html#a80d5e21efa5286b1eff937913915c492',1,'ir_Sharp.h']]], - ['ksharpacfanauto_6608',['kSharpAcFanAuto',['../ir__Sharp_8h.html#a2ef78269271593420ea2bdc20025ca69',1,'ir_Sharp.h']]], - ['ksharpacfanhigh_6609',['kSharpAcFanHigh',['../ir__Sharp_8h.html#af29136d64c2f2a2515918ccf0ff0f594',1,'ir_Sharp.h']]], - ['ksharpacfanmax_6610',['kSharpAcFanMax',['../ir__Sharp_8h.html#a8b0aaa58a5f4caabea84e3b448793054',1,'ir_Sharp.h']]], - ['ksharpacfanmed_6611',['kSharpAcFanMed',['../ir__Sharp_8h.html#a7607f054da76f5e1508abf42d9cd71fc',1,'ir_Sharp.h']]], - ['ksharpacfanmin_6612',['kSharpAcFanMin',['../ir__Sharp_8h.html#a2372fdfbb0d8c2163a3eae5b8eda570a',1,'ir_Sharp.h']]], - ['ksharpacgap_6613',['kSharpAcGap',['../ir__Sharp_8h.html#a777eb0358ce3ef4528f086ff9ff7cd8d',1,'ir_Sharp.h']]], - ['ksharpachdrmark_6614',['kSharpAcHdrMark',['../ir__Sharp_8h.html#aff6f1e55de051762a0def881a5bb555c',1,'ir_Sharp.h']]], - ['ksharpachdrspace_6615',['kSharpAcHdrSpace',['../ir__Sharp_8h.html#a0ea5ff96afd358a8ad1be8d8ed808f04',1,'ir_Sharp.h']]], - ['ksharpacheat_6616',['kSharpAcHeat',['../ir__Sharp_8h.html#ab546d06a0b1f3477f88282f764f208cb',1,'ir_Sharp.h']]], - ['ksharpacmaxtemp_6617',['kSharpAcMaxTemp',['../ir__Sharp_8h.html#a6cfb060ea8c2f650fdd73b055cfda00a',1,'ir_Sharp.h']]], - ['ksharpacmintemp_6618',['kSharpAcMinTemp',['../ir__Sharp_8h.html#ad9ac5214b6cc780d9424ec7d038fe837',1,'ir_Sharp.h']]], - ['ksharpacofftimertype_6619',['kSharpAcOffTimerType',['../ir__Sharp_8h.html#ada633bea9c6c2ffd234c8262e92cebd5',1,'ir_Sharp.h']]], - ['ksharpaconespace_6620',['kSharpAcOneSpace',['../ir__Sharp_8h.html#a20e8eb7c8763fbddb20530badbaab38b',1,'ir_Sharp.h']]], - ['ksharpacontimertype_6621',['kSharpAcOnTimerType',['../ir__Sharp_8h.html#adce8625b00931645c7ccf54edf263c59',1,'ir_Sharp.h']]], - ['ksharpacpoweroff_6622',['kSharpAcPowerOff',['../ir__Sharp_8h.html#a5c13882a47bdd289507e8a5a23ec99d6',1,'ir_Sharp.h']]], - ['ksharpacpoweron_6623',['kSharpAcPowerOn',['../ir__Sharp_8h.html#af485487ea50dd2f9bc153e5f83dc5cf9',1,'ir_Sharp.h']]], - ['ksharpacpoweronfromoff_6624',['kSharpAcPowerOnFromOff',['../ir__Sharp_8h.html#ae484cf776fa47542f4d693c29052fc9f',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialoff_6625',['kSharpAcPowerSetSpecialOff',['../ir__Sharp_8h.html#a93b22ba4b5e68f8185ed28a6bb7c05dd',1,'ir_Sharp.h']]], - ['ksharpacpowersetspecialon_6626',['kSharpAcPowerSetSpecialOn',['../ir__Sharp_8h.html#a67aff6b22c0cfb89debb8ade7239f07e',1,'ir_Sharp.h']]], - ['ksharpacpowertimersetting_6627',['kSharpAcPowerTimerSetting',['../ir__Sharp_8h.html#a208cb9446ea1f42db42a1f6e24b61219',1,'ir_Sharp.h']]], - ['ksharpacpowerunknown_6628',['kSharpAcPowerUnknown',['../ir__Sharp_8h.html#ab20172b860fa1401607f0678c682640f',1,'ir_Sharp.h']]], - ['ksharpacspecialfan_6629',['kSharpAcSpecialFan',['../ir__Sharp_8h.html#a6c1a1c535150f973eecb1a131d0c4780',1,'ir_Sharp.h']]], - ['ksharpacspecialpower_6630',['kSharpAcSpecialPower',['../ir__Sharp_8h.html#a843585897995ee15e39af0d452d8660d',1,'ir_Sharp.h']]], - ['ksharpacspecialswing_6631',['kSharpAcSpecialSwing',['../ir__Sharp_8h.html#a34127a7df393d2a5a84ca90e60e8507a',1,'ir_Sharp.h']]], - ['ksharpacspecialtempecono_6632',['kSharpAcSpecialTempEcono',['../ir__Sharp_8h.html#af2dcb54fc26802d1818ef88e6ddfc819',1,'ir_Sharp.h']]], - ['ksharpacspecialtimer_6633',['kSharpAcSpecialTimer',['../ir__Sharp_8h.html#a539b21c344db53fbfd4f17c91ab98139',1,'ir_Sharp.h']]], - ['ksharpacspecialtimerhalfhour_6634',['kSharpAcSpecialTimerHalfHour',['../ir__Sharp_8h.html#a1f9bf40a4af95689947c09559ed049bf',1,'ir_Sharp.h']]], - ['ksharpacspecialturbo_6635',['kSharpAcSpecialTurbo',['../ir__Sharp_8h.html#a270bb2bc83d4eb8974f498dd8eb299bb',1,'ir_Sharp.h']]], - ['ksharpacstatelength_6636',['kSharpAcStateLength',['../IRremoteESP8266_8h.html#a5192edb9406a8572e393918bab69e3c6',1,'IRremoteESP8266.h']]], - ['ksharpacswingnotoggle_6637',['kSharpAcSwingNoToggle',['../ir__Sharp_8h.html#a9c56d4f694ea69921ba2cb75f67426d6',1,'ir_Sharp.h']]], - ['ksharpacswingtoggle_6638',['kSharpAcSwingToggle',['../ir__Sharp_8h.html#aa6db653d25f67214819292b8f86af0e6',1,'ir_Sharp.h']]], - ['ksharpactimerhoursmax_6639',['kSharpAcTimerHoursMax',['../ir__Sharp_8h.html#a63af01993ba1e539dfb8dae67f42b9ae',1,'ir_Sharp.h']]], - ['ksharpactimerhoursoff_6640',['kSharpAcTimerHoursOff',['../ir__Sharp_8h.html#a462c10c12d828ba58d589cc365bd7be3',1,'ir_Sharp.h']]], - ['ksharpactimerincrement_6641',['kSharpAcTimerIncrement',['../ir__Sharp_8h.html#af32638e308a7034eb013b7ea9569273e',1,'ir_Sharp.h']]], - ['ksharpaczerospace_6642',['kSharpAcZeroSpace',['../ir__Sharp_8h.html#a5310e0404daae1a6e534dbaeaa9a9939',1,'ir_Sharp.h']]], - ['ksharpaddressbits_6643',['kSharpAddressBits',['../IRremoteESP8266_8h.html#a79c2f3cc459267cf0261124ddef47f5e',1,'IRremoteESP8266.h']]], - ['ksharpaddressmask_6644',['kSharpAddressMask',['../ir__Sharp_8cpp.html#a84fba003383cd4652fc804b97002f464',1,'ir_Sharp.cpp']]], - ['ksharpbitmark_6645',['kSharpBitMark',['../ir__Sharp_8cpp.html#ae2adc2bffb2b024faab8da363621733f',1,'ir_Sharp.cpp']]], - ['ksharpbitmarkticks_6646',['kSharpBitMarkTicks',['../ir__Sharp_8cpp.html#aa64bd0c359add4038c0143b5774627bb',1,'ir_Sharp.cpp']]], - ['ksharpbits_6647',['kSharpBits',['../IRremoteESP8266_8h.html#a8a74f9d7cec751cc0945fd89fa6237ae',1,'IRremoteESP8266.h']]], - ['ksharpcommandbits_6648',['kSharpCommandBits',['../IRremoteESP8266_8h.html#ae4cdfc8e358ec738d20c1bda49842ccf',1,'IRremoteESP8266.h']]], - ['ksharpcommandmask_6649',['kSharpCommandMask',['../ir__Sharp_8cpp.html#ad44eda54ade4bef4fdf4451fdb784950',1,'ir_Sharp.cpp']]], - ['ksharpgap_6650',['kSharpGap',['../ir__Sharp_8cpp.html#a77015be2a04274bcb332ec21cb75251e',1,'ir_Sharp.cpp']]], - ['ksharpgapticks_6651',['kSharpGapTicks',['../ir__Sharp_8cpp.html#a4aa110ec2934797f71ddf9bcd34498d1',1,'ir_Sharp.cpp']]], - ['ksharponespace_6652',['kSharpOneSpace',['../ir__Sharp_8cpp.html#a3359539480a203db37c2cf2efd88fdcc',1,'ir_Sharp.cpp']]], - ['ksharponespaceticks_6653',['kSharpOneSpaceTicks',['../ir__Sharp_8cpp.html#a12e18dfd195faae6ca581936434c9063',1,'ir_Sharp.cpp']]], - ['ksharptick_6654',['kSharpTick',['../ir__Sharp_8cpp.html#af417ab19220576243753903657923ba7',1,'ir_Sharp.cpp']]], - ['ksharptogglemask_6655',['kSharpToggleMask',['../ir__Sharp_8cpp.html#a2701123f01683c6927c23c7699bce13a',1,'ir_Sharp.cpp']]], - ['ksharpzerospace_6656',['kSharpZeroSpace',['../ir__Sharp_8cpp.html#ac2ad6123d938999e234896e1635e3063',1,'ir_Sharp.cpp']]], - ['ksharpzerospaceticks_6657',['kSharpZeroSpaceTicks',['../ir__Sharp_8cpp.html#af8c638f77ff29c2d20555343be80e5f0',1,'ir_Sharp.cpp']]], - ['ksherwoodbits_6658',['kSherwoodBits',['../IRremoteESP8266_8h.html#a94abd640c9e7aa225f4a8873a1ddea6a',1,'IRremoteESP8266.h']]], - ['ksherwoodminrepeat_6659',['kSherwoodMinRepeat',['../IRremoteESP8266_8h.html#a2e00b92b55657fc4e140eb85e3a414dc',1,'IRremoteESP8266.h']]], - ['ksilentstr_6660',['kSilentStr',['../IRtext_8cpp.html#a398d3c627c5b95c5d7adfb5308fc7de0',1,'kSilentStr(): IRtext.cpp'],['../IRtext_8h.html#a8efb4256a49dc0acd27d6995851d585e',1,'kSilentStr(): IRtext.cpp']]], - ['ksinglerepeat_6661',['kSingleRepeat',['../IRremoteESP8266_8h.html#a46835b1e2d279570fd818749e88180d4',1,'IRremoteESP8266.h']]], - ['ksleepstr_6662',['kSleepStr',['../IRtext_8cpp.html#a38068788c0ef50e6034dbcffeec1eb36',1,'kSleepStr(): IRtext.cpp'],['../IRtext_8h.html#af9ac743c367e179723b128ad69f124c5',1,'kSleepStr(): IRtext.cpp']]], - ['ksleeptimerstr_6663',['kSleepTimerStr',['../IRtext_8cpp.html#a3402e1f6d78e3c59b71bd0dfdf020b51',1,'kSleepTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a86639857f884487cf3bedc91e71d6faa',1,'kSleepTimerStr(): IRtext.cpp']]], - ['kslowstr_6664',['kSlowStr',['../IRtext_8cpp.html#a3131a17a06dff31058579b301227a04f',1,'kSlowStr(): IRtext.cpp'],['../IRtext_8h.html#a171736ab5e3d59198ed740ea5fd93473',1,'kSlowStr(): IRtext.cpp']]], - ['ksony12bits_6665',['kSony12Bits',['../IRremoteESP8266_8h.html#aa16fdf708a67dbe22c85ad4bac9b05b6',1,'IRremoteESP8266.h']]], - ['ksony15bits_6666',['kSony15Bits',['../IRremoteESP8266_8h.html#ad868d68d289d618ace266519afa059f4',1,'IRremoteESP8266.h']]], - ['ksony20bits_6667',['kSony20Bits',['../IRremoteESP8266_8h.html#aa9cd1ff8036f6c3a288c4f34af4a5eb4',1,'IRremoteESP8266.h']]], - ['ksonyaltfreq_6668',['kSonyAltFreq',['../ir__Sony_8cpp.html#a05912a15a9a6a4a78416600adc7e526b',1,'ir_Sony.cpp']]], - ['ksonyhdrmark_6669',['kSonyHdrMark',['../ir__Sony_8cpp.html#afac5a232c82e81ac257ddfc94aa4f379',1,'ir_Sony.cpp']]], - ['ksonyhdrmarkticks_6670',['kSonyHdrMarkTicks',['../ir__Sony_8cpp.html#a89abc5f0556f38d462202d1de78cbddb',1,'ir_Sony.cpp']]], - ['ksonyminbits_6671',['kSonyMinBits',['../IRremoteESP8266_8h.html#a6f0794107a7643e0bec8de6de9e7621b',1,'IRremoteESP8266.h']]], - ['ksonymingap_6672',['kSonyMinGap',['../ir__Sony_8cpp.html#abfe3a5e1fa2a38ee556326b1ea0e7e11',1,'ir_Sony.cpp']]], - ['ksonymingapticks_6673',['kSonyMinGapTicks',['../ir__Sony_8cpp.html#a150d62f71f79295153bac4694bae0aa3',1,'ir_Sony.cpp']]], - ['ksonyminrepeat_6674',['kSonyMinRepeat',['../IRremoteESP8266_8h.html#a112408429fb4a5cca22a66a351453bad',1,'IRremoteESP8266.h']]], - ['ksonyonemark_6675',['kSonyOneMark',['../ir__Sony_8cpp.html#a490e7ca2b0f81848ae42eb57d0023d13',1,'ir_Sony.cpp']]], - ['ksonyonemarkticks_6676',['kSonyOneMarkTicks',['../ir__Sony_8cpp.html#ad41c0d0496661c2e066056de6974bfe9',1,'ir_Sony.cpp']]], - ['ksonyrptlength_6677',['kSonyRptLength',['../ir__Sony_8cpp.html#a24578b92cf53caa48fa3660f16ec90ec',1,'ir_Sony.cpp']]], - ['ksonyrptlengthticks_6678',['kSonyRptLengthTicks',['../ir__Sony_8cpp.html#a0a7f67ba27e03c35d5df35a2a14a1e19',1,'ir_Sony.cpp']]], - ['ksonyspace_6679',['kSonySpace',['../ir__Sony_8cpp.html#ad09a9eb0dc0b809cea0d0a2a8ff6b9fb',1,'ir_Sony.cpp']]], - ['ksonyspaceticks_6680',['kSonySpaceTicks',['../ir__Sony_8cpp.html#a80dccfab869821cadaf02df664d91eda',1,'ir_Sony.cpp']]], - ['ksonystdfreq_6681',['kSonyStdFreq',['../ir__Sony_8cpp.html#a5e5b14c45909411d160e051f0bc7c63d',1,'ir_Sony.cpp']]], - ['ksonytick_6682',['kSonyTick',['../ir__Sony_8cpp.html#a7ced75a5e9f06f5c68132665d27e01b8',1,'ir_Sony.cpp']]], - ['ksonyzeromark_6683',['kSonyZeroMark',['../ir__Sony_8cpp.html#a7808995a9d2755681f1461d578d5480b',1,'ir_Sony.cpp']]], - ['ksonyzeromarkticks_6684',['kSonyZeroMarkTicks',['../ir__Sony_8cpp.html#a542aed17f98a11ca89456eec507a5225',1,'ir_Sony.cpp']]], - ['kspace_6685',['kSpace',['../ir__Lasertag_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_Lasertag.cpp'],['../ir__MWM_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_MWM.cpp'],['../ir__RC5__RC6_8cpp.html#a7c41a2a72148172c93e39d5a2fd64036',1,'kSpace(): ir_RC5_RC6.cpp']]], - ['kspacelbracestr_6686',['kSpaceLBraceStr',['../IRtext_8cpp.html#a156ef0014809a3509e7b254a9585e0a1',1,'kSpaceLBraceStr(): IRtext.cpp'],['../IRtext_8h.html#a42a2d6b1e764138a5e20b7a34e0cff03',1,'kSpaceLBraceStr(): IRtext.cpp']]], - ['kspacestate_6687',['kSpaceState',['../IRrecv_8h.html#acc0d1931164a8967c210eb03a2d03e2a',1,'IRrecv.h']]], - ['kspecialstr_6688',['kSpecialStr',['../IRtext_8cpp.html#ae80b543c1a3933ec7da34b5a8880fde6',1,'kSpecialStr(): IRtext.cpp'],['../IRtext_8h.html#a37413264af775b482dec58e9fe3dbb44',1,'kSpecialStr(): IRtext.cpp']]], - ['kstartoffset_6689',['kStartOffset',['../IRrecv_8h.html#a44a836a34428f8f75b1ae566de4bb972',1,'IRrecv.h']]], - ['kstartstr_6690',['kStartStr',['../IRtext_8cpp.html#a2075a48eed571455a88e7dfbc3a547ef',1,'kStartStr(): IRtext.cpp'],['../IRtext_8h.html#ad030c0930697d3c295f3783e8519995c',1,'kStartStr(): IRtext.cpp']]], - ['kstatesizemax_6691',['kStateSizeMax',['../IRrecv_8h.html#ab7d82cf4c0937c9b1d59d75f6f347ab2',1,'IRrecv.h']]], - ['kstepstr_6692',['kStepStr',['../IRtext_8cpp.html#ac6c64c4bdc955b6528616db3a4b303c1',1,'kStepStr(): IRtext.cpp'],['../IRtext_8h.html#ad8cc5f179089e8497a9670492429d7e3',1,'kStepStr(): IRtext.cpp']]], - ['kstopstate_6693',['kStopState',['../IRrecv_8h.html#a0e87ae8496a061e394bc9f7f3415a9b3',1,'IRrecv.h']]], - ['kstopstr_6694',['kStopStr',['../IRtext_8cpp.html#a0466188f9064d18622304cd375b18390',1,'kStopStr(): IRtext.cpp'],['../IRtext_8h.html#a7037a67c71778fe06f9dc9b4363f6f9b',1,'kStopStr(): IRtext.cpp']]], - ['ksuperstr_6695',['kSuperStr',['../IRtext_8cpp.html#a81e6c76017bc819882a043ac8fcc2854',1,'kSuperStr(): IRtext.cpp'],['../IRtext_8h.html#af83fbe756a22ef800d40bc738be886c7',1,'kSuperStr(): IRtext.cpp']]], - ['kswinghstr_6696',['kSwingHStr',['../IRtext_8cpp.html#a12d4e0afe0f6b96af817ebc95eb0b6f4',1,'kSwingHStr(): IRtext.cpp'],['../IRtext_8h.html#acfad569446290c1da0c102b98344411c',1,'kSwingHStr(): IRtext.cpp']]], - ['kswingstr_6697',['kSwingStr',['../IRtext_8cpp.html#a106174aef3a46450c0a16bef7c36a8c5',1,'kSwingStr(): IRtext.cpp'],['../IRtext_8h.html#a56d1a94eae3422758b2762da008e243c',1,'kSwingStr(): IRtext.cpp']]], - ['kswingvmodestr_6698',['kSwingVModeStr',['../IRtext_8cpp.html#ab71be957190939e2b4643f2e56e1201f',1,'kSwingVModeStr(): IRtext.cpp'],['../IRtext_8h.html#a0c801e35becc1eab4cdf0076e1c99485',1,'kSwingVModeStr(): IRtext.cpp']]], - ['kswingvstr_6699',['kSwingVStr',['../IRtext_8cpp.html#a6dc1ec788e0659e82219534b5dbb79bc',1,'kSwingVStr(): IRtext.cpp'],['../IRtext_8h.html#a8415af77afcb671c3729d604be51fd22',1,'kSwingVStr(): IRtext.cpp']]], - ['kswingvtogglestr_6700',['kSwingVToggleStr',['../ir__Midea_8h.html#acb6aaab538b7aeb884e9c0fdb46cea90',1,'kSwingVToggleStr(): ir_Midea.h'],['../IRtext_8cpp.html#a3efcf06e5ac4d6309bad1b1d0e49a933',1,'kSwingVToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a27ae4d475898878bd8e71111066629c6',1,'kSwingVToggleStr(): ir_Midea.h']]], - ['ksymphonybits_6701',['kSymphonyBits',['../IRremoteESP8266_8h.html#abb5b89578ab0757999530c0383f38533',1,'IRremoteESP8266.h']]], - ['ksymphonydefaultrepeat_6702',['kSymphonyDefaultRepeat',['../IRremoteESP8266_8h.html#a219b8495f77932c200680f7a2b133880',1,'IRremoteESP8266.h']]], - ['ksymphonyfootergap_6703',['kSymphonyFooterGap',['../ir__Symphony_8cpp.html#a363cf54f4e752932d5e341975c2445f4',1,'ir_Symphony.cpp']]], - ['ksymphonyonemark_6704',['kSymphonyOneMark',['../ir__Symphony_8cpp.html#a469bfa8046ba75f9ba7cda4996dd785d',1,'ir_Symphony.cpp']]], - ['ksymphonyonespace_6705',['kSymphonyOneSpace',['../ir__Symphony_8cpp.html#ab699747bdf28d5a89920041e9c5bb01b',1,'ir_Symphony.cpp']]], - ['ksymphonyzeromark_6706',['kSymphonyZeroMark',['../ir__Symphony_8cpp.html#a58f27b1b9da16ffe73448c7ae3998fc9',1,'ir_Symphony.cpp']]], - ['ksymphonyzerospace_6707',['kSymphonyZeroSpace',['../ir__Symphony_8cpp.html#a9aaf8db419618de847573d2019155287',1,'ir_Symphony.cpp']]], - ['ktcl112acauto_6708',['kTcl112AcAuto',['../ir__Tcl_8h.html#a11a982cc182e446d53ded658cb7a08b6',1,'ir_Tcl.h']]], - ['ktcl112acbitmark_6709',['kTcl112AcBitMark',['../ir__Tcl_8h.html#a45360de532d2262246bf57cb7c08604d',1,'ir_Tcl.h']]], - ['ktcl112acbits_6710',['kTcl112AcBits',['../IRremoteESP8266_8h.html#a4a60d79056d70d3d56067b0bb2ec00f4',1,'IRremoteESP8266.h']]], - ['ktcl112accool_6711',['kTcl112AcCool',['../ir__Tcl_8h.html#a4a4b778086b3ebf856b750fe0c4bd2c0',1,'ir_Tcl.h']]], - ['ktcl112acdefaultrepeat_6712',['kTcl112AcDefaultRepeat',['../IRremoteESP8266_8h.html#a97c82cec6d72845d9ab8a201b0fa5034',1,'IRremoteESP8266.h']]], - ['ktcl112acdry_6713',['kTcl112AcDry',['../ir__Tcl_8h.html#a1d9ec40c278fedf87acb7420ef861101',1,'ir_Tcl.h']]], - ['ktcl112acfan_6714',['kTcl112AcFan',['../ir__Tcl_8h.html#ae07f3dd0a84be27bcb13ba60f4fd025b',1,'ir_Tcl.h']]], - ['ktcl112acfanauto_6715',['kTcl112AcFanAuto',['../ir__Tcl_8h.html#a099935d6d2bf6ebb28332005036c59c0',1,'ir_Tcl.h']]], - ['ktcl112acfanhigh_6716',['kTcl112AcFanHigh',['../ir__Tcl_8h.html#aab9672bac3e83b2e3b3d2cc5f1aa0e1f',1,'ir_Tcl.h']]], - ['ktcl112acfanlow_6717',['kTcl112AcFanLow',['../ir__Tcl_8h.html#a5114fe3f978672fc62c0cd16f6d46dd7',1,'ir_Tcl.h']]], - ['ktcl112acfanmed_6718',['kTcl112AcFanMed',['../ir__Tcl_8h.html#ad8f34f1972da347a169e2eb4ddf3d835',1,'ir_Tcl.h']]], - ['ktcl112acgap_6719',['kTcl112AcGap',['../ir__Tcl_8h.html#a9ccdf5ce9ce325b9813dadbdc855a469',1,'ir_Tcl.h']]], - ['ktcl112achdrmark_6720',['kTcl112AcHdrMark',['../ir__Tcl_8h.html#a56f9f7daf3ada77f8f844afd46a80de9',1,'ir_Tcl.h']]], - ['ktcl112achdrmarktolerance_6721',['kTcl112AcHdrMarkTolerance',['../ir__Tcl_8h.html#ab9d980747b2ddd1b7fb04f00d71af1e7',1,'ir_Tcl.h']]], - ['ktcl112achdrspace_6722',['kTcl112AcHdrSpace',['../ir__Tcl_8h.html#a9135b4d7496383ad3a7da7c3ac7c92b4',1,'ir_Tcl.h']]], - ['ktcl112acheat_6723',['kTcl112AcHeat',['../ir__Tcl_8h.html#ae573f856f0bdf50406e9be84b1aa8ade',1,'ir_Tcl.h']]], - ['ktcl112aconespace_6724',['kTcl112AcOneSpace',['../ir__Tcl_8h.html#af1e67019978260ba3f514cd895b54dad',1,'ir_Tcl.h']]], - ['ktcl112acstatelength_6725',['kTcl112AcStateLength',['../IRremoteESP8266_8h.html#a23ba2f5af02242e14ae7eefcd066152e',1,'IRremoteESP8266.h']]], - ['ktcl112acswingvoff_6726',['kTcl112AcSwingVOff',['../ir__Tcl_8h.html#aa78e1b544f392c251093d458e5d21e12',1,'ir_Tcl.h']]], - ['ktcl112acswingvon_6727',['kTcl112AcSwingVOn',['../ir__Tcl_8h.html#a5406fbabd66478d601aebc6939a3788f',1,'ir_Tcl.h']]], - ['ktcl112actempmax_6728',['kTcl112AcTempMax',['../ir__Tcl_8h.html#a60efbe31031e1e9c3a17c7d80cac54cb',1,'ir_Tcl.h']]], - ['ktcl112actempmin_6729',['kTcl112AcTempMin',['../ir__Tcl_8h.html#a30fe65ec015bc4d91cd35ead9cc43dcc',1,'ir_Tcl.h']]], - ['ktcl112actolerance_6730',['kTcl112AcTolerance',['../ir__Tcl_8h.html#a13bbe794b2b59763f7f93f15a3f26820',1,'ir_Tcl.h']]], - ['ktcl112aczerospace_6731',['kTcl112AcZeroSpace',['../ir__Tcl_8h.html#abc05edaeb1a4fa7e6ccf9bda1f66b483',1,'ir_Tcl.h']]], - ['ktechnibelacbitmark_6732',['kTechnibelAcBitMark',['../ir__Technibel_8cpp.html#a82529fd6c6fd51f036b1930613ed5e9b',1,'ir_Technibel.cpp']]], - ['ktechnibelacbits_6733',['kTechnibelAcBits',['../IRremoteESP8266_8h.html#a0c4bc77a2443037598940b955c83eb82',1,'IRremoteESP8266.h']]], - ['ktechnibelaccool_6734',['kTechnibelAcCool',['../ir__Technibel_8h.html#aa0a74f362c3d9160660763d89195b387',1,'ir_Technibel.h']]], - ['ktechnibelacdefaultrepeat_6735',['kTechnibelAcDefaultRepeat',['../IRremoteESP8266_8h.html#a0e797e69cca806e73c902f5d9dfe1bf1',1,'IRremoteESP8266.h']]], - ['ktechnibelacdry_6736',['kTechnibelAcDry',['../ir__Technibel_8h.html#afb6b5b6b2e88fb06f1706c57e03672d8',1,'ir_Technibel.h']]], - ['ktechnibelacfan_6737',['kTechnibelAcFan',['../ir__Technibel_8h.html#a9b9c7971f9f76dbb8b742727f48408d6',1,'ir_Technibel.h']]], - ['ktechnibelacfanhigh_6738',['kTechnibelAcFanHigh',['../ir__Technibel_8h.html#a7ec8f7e2911b0a8db8714aa06377a017',1,'ir_Technibel.h']]], - ['ktechnibelacfanlow_6739',['kTechnibelAcFanLow',['../ir__Technibel_8h.html#a3be4c4dbdfe0ef1ab7f7f2308ee5f906',1,'ir_Technibel.h']]], - ['ktechnibelacfanmedium_6740',['kTechnibelAcFanMedium',['../ir__Technibel_8h.html#ae390f138de9e24940a066a75f960ce67',1,'ir_Technibel.h']]], - ['ktechnibelacfansize_6741',['kTechnibelAcFanSize',['../ir__Technibel_8h.html#a29d3d827bd0486f4f1c6c8090bfae7b3',1,'ir_Technibel.h']]], - ['ktechnibelacfreq_6742',['kTechnibelAcFreq',['../ir__Technibel_8cpp.html#ab5e0c7c1bd254eb3dff6e81153cdce95',1,'ir_Technibel.cpp']]], - ['ktechnibelacgap_6743',['kTechnibelAcGap',['../ir__Technibel_8cpp.html#a9e400dd55fa32e3c91880a55a87e1e5e',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrmark_6744',['kTechnibelAcHdrMark',['../ir__Technibel_8cpp.html#af72f1210a259c1dde24fc39e6b026521',1,'ir_Technibel.cpp']]], - ['ktechnibelachdrspace_6745',['kTechnibelAcHdrSpace',['../ir__Technibel_8cpp.html#a1703e3c4105c858b4534b0e40302cfae',1,'ir_Technibel.cpp']]], - ['ktechnibelacheader_6746',['kTechnibelAcHeader',['../ir__Technibel_8h.html#a11b2a3eaded5d7890c65f8eaa7c445a6',1,'ir_Technibel.h']]], - ['ktechnibelacheaderoffset_6747',['kTechnibelAcHeaderOffset',['../ir__Technibel_8h.html#a750df711adeb31d902ca20b572c6f541',1,'ir_Technibel.h']]], - ['ktechnibelacheat_6748',['kTechnibelAcHeat',['../ir__Technibel_8h.html#a517fa48501655e8d4f0f86146a8761d3',1,'ir_Technibel.h']]], - ['ktechnibelaconespace_6749',['kTechnibelAcOneSpace',['../ir__Technibel_8cpp.html#ae70ce0b82874c4bc0797f510353e2cc3',1,'ir_Technibel.cpp']]], - ['ktechnibelacresetstate_6750',['kTechnibelAcResetState',['../ir__Technibel_8h.html#a1c526f7f53f689c095c70687d6bd20ee',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxc_6751',['kTechnibelAcTempMaxC',['../ir__Technibel_8h.html#a141efb22c7ac16c9218ecfde9577b132',1,'ir_Technibel.h']]], - ['ktechnibelactempmaxf_6752',['kTechnibelAcTempMaxF',['../ir__Technibel_8h.html#a048b6c574309291de654ee0340ffbe3c',1,'ir_Technibel.h']]], - ['ktechnibelactempminc_6753',['kTechnibelAcTempMinC',['../ir__Technibel_8h.html#a82962d65e7835dc589bd2a9ace171de7',1,'ir_Technibel.h']]], - ['ktechnibelactempminf_6754',['kTechnibelAcTempMinF',['../ir__Technibel_8h.html#acbe3d2e41a0c2bf1b8857ab97cbb7b3c',1,'ir_Technibel.h']]], - ['ktechnibelactimerhoursoffset_6755',['kTechnibelAcTimerHoursOffset',['../ir__Technibel_8h.html#a6f4c74a83e3734474d84dc305f975cd1',1,'ir_Technibel.h']]], - ['ktechnibelactimermax_6756',['kTechnibelAcTimerMax',['../ir__Technibel_8h.html#af689f2686034aa45b19be75077a0baa6',1,'ir_Technibel.h']]], - ['ktechnibelaczerospace_6757',['kTechnibelAcZeroSpace',['../ir__Technibel_8cpp.html#a28f5833aa7529badc4785fac661974b4',1,'ir_Technibel.cpp']]], - ['ktecoauto_6758',['kTecoAuto',['../ir__Teco_8h.html#a79178aa25d9f60c0a838285369e1b910',1,'ir_Teco.h']]], - ['ktecobitmark_6759',['kTecoBitMark',['../ir__Teco_8cpp.html#a0aa2e352f4a61027b17467e92863883b',1,'ir_Teco.cpp']]], - ['ktecobits_6760',['kTecoBits',['../IRremoteESP8266_8h.html#aee01958e9d97a70a6881cf560ca0ca9d',1,'IRremoteESP8266.h']]], - ['ktecocool_6761',['kTecoCool',['../ir__Teco_8h.html#a554686c72b6bc487d03c9461f9633a6b',1,'ir_Teco.h']]], - ['ktecodefaultrepeat_6762',['kTecoDefaultRepeat',['../IRremoteESP8266_8h.html#a095362359f34c1ee5ab71d56e6d64f64',1,'IRremoteESP8266.h']]], - ['ktecodry_6763',['kTecoDry',['../ir__Teco_8h.html#af7efcf371967eb97fd31d54016a82006',1,'ir_Teco.h']]], - ['ktecofan_6764',['kTecoFan',['../ir__Teco_8h.html#a7385fe198242c9203e3a5d5ffb7beb4d',1,'ir_Teco.h']]], - ['ktecofanauto_6765',['kTecoFanAuto',['../ir__Teco_8h.html#a43e58c0158efac1c4e5497c619b5674c',1,'ir_Teco.h']]], - ['ktecofanhigh_6766',['kTecoFanHigh',['../ir__Teco_8h.html#a0a73f5f892e7f9812793fbf5dab458dd',1,'ir_Teco.h']]], - ['ktecofanlow_6767',['kTecoFanLow',['../ir__Teco_8h.html#abac7443a86fb304376dd94a9c10e6940',1,'ir_Teco.h']]], - ['ktecofanmed_6768',['kTecoFanMed',['../ir__Teco_8h.html#a35f313943f9e2f5b69d5237fdaa64914',1,'ir_Teco.h']]], - ['ktecogap_6769',['kTecoGap',['../ir__Teco_8cpp.html#a6a153d84287fba3bd11e3e5054fd7e30',1,'ir_Teco.cpp']]], - ['ktecohdrmark_6770',['kTecoHdrMark',['../ir__Teco_8cpp.html#ada983ce2d6f03949cddfe06191ab05d9',1,'ir_Teco.cpp']]], - ['ktecohdrspace_6771',['kTecoHdrSpace',['../ir__Teco_8cpp.html#acf417d42fd39dbaf06282162ab5b17e2',1,'ir_Teco.cpp']]], - ['ktecoheat_6772',['kTecoHeat',['../ir__Teco_8h.html#ab6f9dbeb2838b124be12d08fd9b209bb',1,'ir_Teco.h']]], - ['ktecomaxtemp_6773',['kTecoMaxTemp',['../ir__Teco_8h.html#a1c24aa0cc4d475a5eb97d5208f4dcf06',1,'ir_Teco.h']]], - ['ktecomintemp_6774',['kTecoMinTemp',['../ir__Teco_8h.html#a54da99bfcbea5e076c3ca2934e769ab1',1,'ir_Teco.h']]], - ['ktecoonespace_6775',['kTecoOneSpace',['../ir__Teco_8cpp.html#a62eccbf6773ea8fbc18432627c62d0d5',1,'ir_Teco.cpp']]], - ['ktecoreset_6776',['kTecoReset',['../ir__Teco_8h.html#acf559a2cd772835ce46c3f673cd95806',1,'ir_Teco.h']]], - ['ktecozerospace_6777',['kTecoZeroSpace',['../ir__Teco_8cpp.html#a8dc1f6ea44519a0930b48f69a83a7363',1,'ir_Teco.cpp']]], - ['kteknopointbitmark_6778',['kTeknopointBitMark',['../ir__Teknopoint_8cpp.html#ab58c977a7dc7dfffc8dab82940d149e2',1,'ir_Teknopoint.cpp']]], - ['kteknopointbits_6779',['kTeknopointBits',['../IRremoteESP8266_8h.html#a380abb9cac983d1ceedae89505085e3c',1,'IRremoteESP8266.h']]], - ['kteknopointextratol_6780',['kTeknopointExtraTol',['../ir__Teknopoint_8cpp.html#a55a09fd073a5de698242ff1d9b784c84',1,'ir_Teknopoint.cpp']]], - ['kteknopointfreq_6781',['kTeknopointFreq',['../ir__Teknopoint_8cpp.html#adb1bc8cf295e79b3ee7711fa4529f5b6',1,'ir_Teknopoint.cpp']]], - ['kteknopointhdrmark_6782',['kTeknopointHdrMark',['../ir__Teknopoint_8cpp.html#a80ce4d25a5243bafafead2ea859a32aa',1,'ir_Teknopoint.cpp']]], - ['kteknopointhdrspace_6783',['kTeknopointHdrSpace',['../ir__Teknopoint_8cpp.html#aa73bdfdaf8cb26f8c50e7bd7fb9029de',1,'ir_Teknopoint.cpp']]], - ['kteknopointonespace_6784',['kTeknopointOneSpace',['../ir__Teknopoint_8cpp.html#abf3b750dc47d44bfedc5def28b973a0a',1,'ir_Teknopoint.cpp']]], - ['kteknopointstatelength_6785',['kTeknopointStateLength',['../IRremoteESP8266_8h.html#a5a443c73a07c0e4f8c2f70953fe9ec6e',1,'IRremoteESP8266.h']]], - ['kteknopointzerospace_6786',['kTeknopointZeroSpace',['../ir__Teknopoint_8cpp.html#a788fa66858d2c3fcef231c836f97f90d',1,'ir_Teknopoint.cpp']]], - ['ktempdownstr_6787',['kTempDownStr',['../IRtext_8cpp.html#a3fa3262c5631c9357a5723c70dc3be12',1,'kTempDownStr(): IRtext.cpp'],['../IRtext_8h.html#a3d367a899d7e8ed20844bb3c48bf6395',1,'kTempDownStr(): IRtext.cpp']]], - ['ktempstr_6788',['kTempStr',['../IRtext_8cpp.html#a487bd9a4225536aba2595be0b5cb8039',1,'kTempStr(): IRtext.cpp'],['../IRtext_8h.html#a87652df1cf724353547f27a9ebde5edb',1,'kTempStr(): IRtext.cpp']]], - ['ktempupstr_6789',['kTempUpStr',['../IRtext_8cpp.html#a7c4f18322b600aaaf5a8716654d05dc3',1,'kTempUpStr(): IRtext.cpp'],['../IRtext_8h.html#a71687df5bc94e4ca18cf59c9ff238e86',1,'kTempUpStr(): IRtext.cpp']]], - ['kthreeletterdayofweekstr_6790',['kThreeLetterDayOfWeekStr',['../IRtext_8cpp.html#ae16da0464743313a1fbeae92dcfcebbd',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp'],['../IRtext_8h.html#a837ecfeff9a1bc7546016229e9f2ddfb',1,'kThreeLetterDayOfWeekStr(): IRtext.cpp']]], - ['ktimeoutms_6791',['kTimeoutMs',['../IRrecv_8h.html#ad37e9659aaef29c541802d9759e0ab7b',1,'IRrecv.h']]], - ['ktimerstr_6792',['kTimerStr',['../IRtext_8cpp.html#a2b5219ba887cfbc578fb880ebada832a',1,'kTimerStr(): IRtext.cpp'],['../IRtext_8h.html#a36fa3584a89f6e48757eba8f3df7e109',1,'kTimerStr(): IRtext.cpp']]], - ['ktimesep_6793',['kTimeSep',['../IRtext_8cpp.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp'],['../IRtext_8h.html#a277b588db53ec31ab7b0d287310c6d50',1,'kTimeSep(): IRtext.cpp']]], - ['ktogglestr_6794',['kToggleStr',['../IRtext_8cpp.html#a33860b90859d19191c9759b099283b37',1,'kToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a05b1e2f809dadf05e22e1cb1d1a7f07e',1,'kToggleStr(): IRtext.cpp']]], - ['ktolerance_6795',['kTolerance',['../IRrecv_8h.html#a7884008b3a738dfc7bd8658655e10272',1,'IRrecv.h']]], - ['ktopstr_6796',['kTopStr',['../IRtext_8cpp.html#a65a8bf89c9dd0277607478277c0c7088',1,'kTopStr(): IRtext.cpp'],['../IRtext_8h.html#a6bb6abfc54409b801dcb591f036635d2',1,'kTopStr(): IRtext.cpp']]], - ['ktoshibaacauto_6797',['kToshibaAcAuto',['../ir__Toshiba_8h.html#a4730189595a884ae6535805948e096aa',1,'ir_Toshiba.h']]], - ['ktoshibaacbitmark_6798',['kToshibaAcBitMark',['../ir__Toshiba_8cpp.html#adff1c244103ff274243b8e20ca209866',1,'ir_Toshiba.cpp']]], - ['ktoshibaacbits_6799',['kToshibaACBits',['../IRremoteESP8266_8h.html#a172dde7867fa9a68902c3ad7ea9629b0',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitslong_6800',['kToshibaACBitsLong',['../IRremoteESP8266_8h.html#aaf9e746cb8ee9e246f435ba4416a5428',1,'IRremoteESP8266.h']]], - ['ktoshibaacbitsshort_6801',['kToshibaACBitsShort',['../IRremoteESP8266_8h.html#a7483cfe84003b0e24bfa846c240afc4c',1,'IRremoteESP8266.h']]], - ['ktoshibaaccool_6802',['kToshibaAcCool',['../ir__Toshiba_8h.html#a2f30e65bb092365d1a8bcb1f3395333a',1,'ir_Toshiba.h']]], - ['ktoshibaacdry_6803',['kToshibaAcDry',['../ir__Toshiba_8h.html#a10b77d1038efc59775398789c33af91e',1,'ir_Toshiba.h']]], - ['ktoshibaaceconoon_6804',['kToshibaAcEconoOn',['../ir__Toshiba_8h.html#ab95da2ea12790cd327519615dbb48efe',1,'ir_Toshiba.h']]], - ['ktoshibaacfan_6805',['kToshibaAcFan',['../ir__Toshiba_8h.html#a4ecdbe268368c9d22a690bc5e394586f',1,'ir_Toshiba.h']]], - ['ktoshibaacfanauto_6806',['kToshibaAcFanAuto',['../ir__Toshiba_8h.html#a69f52e19a5b0e68abda00b680fbef7f6',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmax_6807',['kToshibaAcFanMax',['../ir__Toshiba_8h.html#a0f6ffde3491f464166d6064d7dfe5ba4',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmed_6808',['kToshibaAcFanMed',['../ir__Toshiba_8h.html#a3ff967af7d1a30c7c5cb958eaa5cbd58',1,'ir_Toshiba.h']]], - ['ktoshibaacfanmin_6809',['kToshibaAcFanMin',['../ir__Toshiba_8h.html#ab2c5eea9ccabf2e0e56bc03baec5d898',1,'ir_Toshiba.h']]], - ['ktoshibaachdrmark_6810',['kToshibaAcHdrMark',['../ir__Toshiba_8cpp.html#a2eac25ff2a381ad6690623641153a780',1,'ir_Toshiba.cpp']]], - ['ktoshibaachdrspace_6811',['kToshibaAcHdrSpace',['../ir__Toshiba_8cpp.html#a0ae9047d5a204f320c06736fa40d0a7d',1,'ir_Toshiba.cpp']]], - ['ktoshibaacheat_6812',['kToshibaAcHeat',['../ir__Toshiba_8h.html#aa9ec24f9a5e460aa7017f642ce7a4c0d',1,'ir_Toshiba.h']]], - ['ktoshibaacinvertedlength_6813',['kToshibaAcInvertedLength',['../ir__Toshiba_8h.html#adfc646265ec1e4a03646d7f3b867d65b',1,'ir_Toshiba.h']]], - ['ktoshibaaclengthbyte_6814',['kToshibaAcLengthByte',['../ir__Toshiba_8h.html#a4e3f39edb4cc3a8c7b94ff9cce0e01d0',1,'ir_Toshiba.h']]], - ['ktoshibaacmaxtemp_6815',['kToshibaAcMaxTemp',['../ir__Toshiba_8h.html#a475028a2a519e3310506ceac0a5dc4e6',1,'ir_Toshiba.h']]], - ['ktoshibaacmingap_6816',['kToshibaAcMinGap',['../ir__Toshiba_8cpp.html#ade7642284aa7c6a638b9fab45610cc59',1,'ir_Toshiba.cpp']]], - ['ktoshibaacminlength_6817',['kToshibaAcMinLength',['../ir__Toshiba_8h.html#a105b24e11afdd102097c81bf050a0f3a',1,'ir_Toshiba.h']]], - ['ktoshibaacminrepeat_6818',['kToshibaACMinRepeat',['../IRremoteESP8266_8h.html#a8fca6a7c3cd608ff49cab35f24af0546',1,'IRremoteESP8266.h']]], - ['ktoshibaacmintemp_6819',['kToshibaAcMinTemp',['../ir__Toshiba_8h.html#ad0e8e76aabc38ac7ba2f13a009de98e0',1,'ir_Toshiba.h']]], - ['ktoshibaacoff_6820',['kToshibaAcOff',['../ir__Toshiba_8h.html#a58b75ee3ddd1325bd4da71902d840c1d',1,'ir_Toshiba.h']]], - ['ktoshibaaconespace_6821',['kToshibaAcOneSpace',['../ir__Toshiba_8cpp.html#a787330c9e5f9d30e8df157acc15f56dd',1,'ir_Toshiba.cpp']]], - ['ktoshibaacstatelength_6822',['kToshibaACStateLength',['../IRremoteESP8266_8h.html#ad3be6a1b9241c20bb1464a2cb80b97d2',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthlong_6823',['kToshibaACStateLengthLong',['../IRremoteESP8266_8h.html#a3c0ebc01f8a61422c26b84e78fcec8f7',1,'IRremoteESP8266.h']]], - ['ktoshibaacstatelengthshort_6824',['kToshibaACStateLengthShort',['../IRremoteESP8266_8h.html#a5fa111fa9d560834605eff2941c0cacc',1,'IRremoteESP8266.h']]], - ['ktoshibaacswingoff_6825',['kToshibaAcSwingOff',['../ir__Toshiba_8h.html#ab556d401c0f8d822a7ef9db5c89d9c87',1,'ir_Toshiba.h']]], - ['ktoshibaacswingon_6826',['kToshibaAcSwingOn',['../ir__Toshiba_8h.html#ac5815fcd06c734de58253e64f0b4fb7f',1,'ir_Toshiba.h']]], - ['ktoshibaacswingstep_6827',['kToshibaAcSwingStep',['../ir__Toshiba_8h.html#aff168c247bc0ea425f805f595cb14012',1,'ir_Toshiba.h']]], - ['ktoshibaacswingtoggle_6828',['kToshibaAcSwingToggle',['../ir__Toshiba_8h.html#a0a2c37d609c5085f68bdfcaef1d8a05e',1,'ir_Toshiba.h']]], - ['ktoshibaacturboon_6829',['kToshibaAcTurboOn',['../ir__Toshiba_8h.html#a8f84e028f12a8fac27366893b65faba7',1,'ir_Toshiba.h']]], - ['ktoshibaacusualgap_6830',['kToshibaAcUsualGap',['../ir__Toshiba_8cpp.html#ab8b9142b37e7cbecac3544f016791a78',1,'ir_Toshiba.cpp']]], - ['ktoshibaaczerospace_6831',['kToshibaAcZeroSpace',['../ir__Toshiba_8cpp.html#ab2fc2833cfb31d872894073687eebd99',1,'ir_Toshiba.cpp']]], - ['ktranscoldauto_6832',['kTranscoldAuto',['../ir__Transcold_8h.html#ad764a143afb464fe25fe5d670241ef87',1,'ir_Transcold.h']]], - ['ktranscoldbitmark_6833',['kTranscoldBitMark',['../ir__Transcold_8cpp.html#acc3092436f39e583e4a2e51851543fec',1,'ir_Transcold.cpp']]], - ['ktranscoldbits_6834',['kTranscoldBits',['../IRremoteESP8266_8h.html#abe50a182c1f65378337705d2784e2fdb',1,'IRremoteESP8266.h']]], - ['ktranscoldcmdfan_6835',['kTranscoldCmdFan',['../ir__Transcold_8h.html#a97b418d9a169e5e79f1ee08fd433c62f',1,'ir_Transcold.h']]], - ['ktranscoldcool_6836',['kTranscoldCool',['../ir__Transcold_8h.html#ad1fcfe19e632b7dc8489cee494d48436',1,'ir_Transcold.h']]], - ['ktranscolddefaultrepeat_6837',['kTranscoldDefaultRepeat',['../IRremoteESP8266_8h.html#a17cef98fbfae6a84c0a3e009fb3c31d0',1,'IRremoteESP8266.h']]], - ['ktranscolddry_6838',['kTranscoldDry',['../ir__Transcold_8h.html#a2f185d4fb3a103c15b537557e24aff09',1,'ir_Transcold.h']]], - ['ktranscoldfan_6839',['kTranscoldFan',['../ir__Transcold_8h.html#a7710625ad8497f1baa6a6d4de2ca8be1',1,'ir_Transcold.h']]], - ['ktranscoldfanauto_6840',['kTranscoldFanAuto',['../ir__Transcold_8h.html#a89f832806c8b3d7311070a285fc757ec',1,'ir_Transcold.h']]], - ['ktranscoldfanauto0_6841',['kTranscoldFanAuto0',['../ir__Transcold_8h.html#a813d31eace1b1a6c4d7b2efb5eddb9af',1,'ir_Transcold.h']]], - ['ktranscoldfanfixed_6842',['kTranscoldFanFixed',['../ir__Transcold_8h.html#ac3afe530635393f2d642cecd7e77b131',1,'ir_Transcold.h']]], - ['ktranscoldfanmax_6843',['kTranscoldFanMax',['../ir__Transcold_8h.html#aa5b9f6cd6aa930a856b26e7714575e85',1,'ir_Transcold.h']]], - ['ktranscoldfanmed_6844',['kTranscoldFanMed',['../ir__Transcold_8h.html#ad37f4a57666b991be80e647de6b4ca65',1,'ir_Transcold.h']]], - ['ktranscoldfanmin_6845',['kTranscoldFanMin',['../ir__Transcold_8h.html#a4ddaefba3d91ee7aa25b603f1034af9c',1,'ir_Transcold.h']]], - ['ktranscoldfantempcode_6846',['kTranscoldFanTempCode',['../ir__Transcold_8h.html#a57eef64332f604b0c71557270ae255ad',1,'ir_Transcold.h']]], - ['ktranscoldfanzonefollow_6847',['kTranscoldFanZoneFollow',['../ir__Transcold_8h.html#aa78ff958ca560d1db1e69e3bd2bcd5e3',1,'ir_Transcold.h']]], - ['ktranscoldhdrmark_6848',['kTranscoldHdrMark',['../ir__Transcold_8cpp.html#aa999da00de9866212cacc740bb66d5f6',1,'ir_Transcold.cpp']]], - ['ktranscoldhdrspace_6849',['kTranscoldHdrSpace',['../ir__Transcold_8cpp.html#a0568fcecce190a29828771add3386b6a',1,'ir_Transcold.cpp']]], - ['ktranscoldheat_6850',['kTranscoldHeat',['../ir__Transcold_8h.html#ad109eb1c3cb044994179fafdbfc107e2',1,'ir_Transcold.h']]], - ['ktranscoldknowngoodstate_6851',['kTranscoldKnownGoodState',['../ir__Transcold_8h.html#a385409f55006ad7fedca2d335b69bf39',1,'ir_Transcold.h']]], - ['ktranscoldoff_6852',['kTranscoldOff',['../ir__Transcold_8h.html#a55d930cdd8e4246de18832bbd88a7d99',1,'ir_Transcold.h']]], - ['ktranscoldonespace_6853',['kTranscoldOneSpace',['../ir__Transcold_8cpp.html#aadd9575e345b8c57b4e2c65bcdb3123d',1,'ir_Transcold.cpp']]], - ['ktranscoldprefix_6854',['kTranscoldPrefix',['../ir__Transcold_8h.html#aaef68d4ab70d54b64486b7ba27a15822',1,'ir_Transcold.h']]], - ['ktranscoldswing_6855',['kTranscoldSwing',['../ir__Transcold_8h.html#af467e8cfb7f71abb609f4b9673908937',1,'ir_Transcold.h']]], - ['ktranscoldswingh_6856',['kTranscoldSwingH',['../ir__Transcold_8h.html#a300cfff72391f0c7c0caa97d49a73918',1,'ir_Transcold.h']]], - ['ktranscoldswingv_6857',['kTranscoldSwingV',['../ir__Transcold_8h.html#acfb0faab9bcf147c5dab61bee2cd93c9',1,'ir_Transcold.h']]], - ['ktranscoldtempmax_6858',['kTranscoldTempMax',['../ir__Transcold_8h.html#a5c9be5911208f2f7062a966b3deda0cd',1,'ir_Transcold.h']]], - ['ktranscoldtempmin_6859',['kTranscoldTempMin',['../ir__Transcold_8h.html#a52ff579c8e54611aed6be38d9907af57',1,'ir_Transcold.h']]], - ['ktranscoldtempsize_6860',['kTranscoldTempSize',['../ir__Transcold_8h.html#adeffd84ae91146e1ac5b27735193ba55',1,'ir_Transcold.h']]], - ['ktranscoldunknown_6861',['kTranscoldUnknown',['../ir__Transcold_8h.html#af52672df48539c826ccf8ffc1e3f9927',1,'ir_Transcold.h']]], - ['ktranscoldzerospace_6862',['kTranscoldZeroSpace',['../ir__Transcold_8cpp.html#af932911d55d7eee66ee217cb8ad5d4d4',1,'ir_Transcold.cpp']]], - ['ktrotecauto_6863',['kTrotecAuto',['../ir__Trotec_8h.html#a53b2687b96f8e69ec6f57dd2ac7a6dfa',1,'ir_Trotec.h']]], - ['ktrotecbitmark_6864',['kTrotecBitMark',['../ir__Trotec_8cpp.html#a870b2da19855eff625a2834ca7fd8765',1,'ir_Trotec.cpp']]], - ['ktrotecbits_6865',['kTrotecBits',['../IRremoteESP8266_8h.html#ab819cb0a34937714dcb10059799c26e2',1,'IRremoteESP8266.h']]], - ['ktroteccool_6866',['kTrotecCool',['../ir__Trotec_8h.html#add33a35046e4270ad9ff3b998526d5d1',1,'ir_Trotec.h']]], - ['ktrotecdefaultrepeat_6867',['kTrotecDefaultRepeat',['../IRremoteESP8266_8h.html#a4c0411462f2854a8606deca09ed15df5',1,'IRremoteESP8266.h']]], - ['ktrotecdeftemp_6868',['kTrotecDefTemp',['../ir__Trotec_8h.html#ac28d1d0ea6db18716a7d9d21e84178c0',1,'ir_Trotec.h']]], - ['ktrotecdry_6869',['kTrotecDry',['../ir__Trotec_8h.html#abdaa1836c6bc90b1d5813df028a76e21',1,'ir_Trotec.h']]], - ['ktrotecfan_6870',['kTrotecFan',['../ir__Trotec_8h.html#a9309d528d50dd542a5184a51fb101a6a',1,'ir_Trotec.h']]], - ['ktrotecfanhigh_6871',['kTrotecFanHigh',['../ir__Trotec_8h.html#ae780f0bb6b9b83f3dbcc1c1e282e5436',1,'ir_Trotec.h']]], - ['ktrotecfanlow_6872',['kTrotecFanLow',['../ir__Trotec_8h.html#aa1c3695c1becc935d2a3b2691996a17b',1,'ir_Trotec.h']]], - ['ktrotecfanmed_6873',['kTrotecFanMed',['../ir__Trotec_8h.html#abae1944f529099ff4736b6cb13bcbeda',1,'ir_Trotec.h']]], - ['ktrotecgap_6874',['kTrotecGap',['../ir__Trotec_8cpp.html#a753ba93d7b757dc58fcf1b4a6bb65ff6',1,'ir_Trotec.cpp']]], - ['ktrotecgapend_6875',['kTrotecGapEnd',['../ir__Trotec_8cpp.html#a5fcc4a020bcebfe90abe12d4a47de372',1,'ir_Trotec.cpp']]], - ['ktrotechdrmark_6876',['kTrotecHdrMark',['../ir__Trotec_8cpp.html#a809faed7ee2fef78a5b8271a2c5ddd10',1,'ir_Trotec.cpp']]], - ['ktrotechdrspace_6877',['kTrotecHdrSpace',['../ir__Trotec_8cpp.html#a5d42cd98bf737dd8161572afa393be1e',1,'ir_Trotec.cpp']]], - ['ktrotecintro1_6878',['kTrotecIntro1',['../ir__Trotec_8h.html#aabc5c6a9b4867c25d84ffe2839e88564',1,'ir_Trotec.h']]], - ['ktrotecintro2_6879',['kTrotecIntro2',['../ir__Trotec_8h.html#ac33de8b2fc4b70bb272a56f6bbb68e34',1,'ir_Trotec.h']]], - ['ktrotecmaxtemp_6880',['kTrotecMaxTemp',['../ir__Trotec_8h.html#abfe4004dcac892f575ec1efb09567595',1,'ir_Trotec.h']]], - ['ktrotecmaxtimer_6881',['kTrotecMaxTimer',['../ir__Trotec_8h.html#a8467d1b9983d5750a61817cacb148efd',1,'ir_Trotec.h']]], - ['ktrotecmintemp_6882',['kTrotecMinTemp',['../ir__Trotec_8h.html#a091904af9fee2384e137feab274af7f8',1,'ir_Trotec.h']]], - ['ktroteconespace_6883',['kTrotecOneSpace',['../ir__Trotec_8cpp.html#a570aa73a82089906971932212d99a283',1,'ir_Trotec.cpp']]], - ['ktrotecstatelength_6884',['kTrotecStateLength',['../IRremoteESP8266_8h.html#ae1d2aa52fef81f03b92c35f4970728d2',1,'IRremoteESP8266.h']]], - ['ktroteczerospace_6885',['kTrotecZeroSpace',['../ir__Trotec_8cpp.html#a8e8f85e7b8a8157eb425316b5108d717',1,'ir_Trotec.cpp']]], - ['ktruestr_6886',['kTrueStr',['../IRtext_8cpp.html#a28a627d6f48d7d06a560f9613e4550fa',1,'kTrueStr(): IRtext.cpp'],['../IRtext_8h.html#aca6e78a25b9dacd2508069f0a6b919c0',1,'kTrueStr(): IRtext.cpp']]], - ['ktrumaauto_6887',['kTrumaAuto',['../ir__Truma_8h.html#aa539e7b75df4a2542db4fac86c341aae',1,'ir_Truma.h']]], - ['ktrumabits_6888',['kTrumaBits',['../IRremoteESP8266_8h.html#aa5ba6ea5669410e37620b616c75e766f',1,'IRremoteESP8266.h']]], - ['ktrumachecksuminit_6889',['kTrumaChecksumInit',['../ir__Truma_8h.html#aa5aadfae49e282d39b16edd75e3bfe4e',1,'ir_Truma.h']]], - ['ktrumacool_6890',['kTrumaCool',['../ir__Truma_8h.html#adfe6810b410e5c77d3faf5cc25d6cc3a',1,'ir_Truma.h']]], - ['ktrumadefaultstate_6891',['kTrumaDefaultState',['../ir__Truma_8h.html#a78982ad49a52d492472ea25b985f3b5e',1,'ir_Truma.h']]], - ['ktrumafan_6892',['kTrumaFan',['../ir__Truma_8h.html#ac1dfc97d02422f3d95c9aa6d85c4c24f',1,'ir_Truma.h']]], - ['ktrumafanhigh_6893',['kTrumaFanHigh',['../ir__Truma_8h.html#ab4e4af197a48a2fd6932a901c6ccd64e',1,'ir_Truma.h']]], - ['ktrumafanlow_6894',['kTrumaFanLow',['../ir__Truma_8h.html#a84f36ff984a23ec7613e72cf6bfb568a',1,'ir_Truma.h']]], - ['ktrumafanmed_6895',['kTrumaFanMed',['../ir__Truma_8h.html#acaabaf9fea52f17a4747ce7875ba2ed4',1,'ir_Truma.h']]], - ['ktrumafanquiet_6896',['kTrumaFanQuiet',['../ir__Truma_8h.html#a6582d41f790b9fc82fd9c30b913b0943',1,'ir_Truma.h']]], - ['ktrumafootermark_6897',['kTrumaFooterMark',['../ir__Truma_8cpp.html#afe540950135dbd3b355c7c480fd5e536',1,'ir_Truma.cpp']]], - ['ktrumagap_6898',['kTrumaGap',['../ir__Truma_8cpp.html#af9b738db46af724dbb04d2950ee744ab',1,'ir_Truma.cpp']]], - ['ktrumahdrmark_6899',['kTrumaHdrMark',['../ir__Truma_8cpp.html#a4cebd76faecf7a09c5a6c2ccb9b5f917',1,'ir_Truma.cpp']]], - ['ktrumaldrmark_6900',['kTrumaLdrMark',['../ir__Truma_8cpp.html#ab2986992a9aff6dec819d47bdee7b815',1,'ir_Truma.cpp']]], - ['ktrumaldrspace_6901',['kTrumaLdrSpace',['../ir__Truma_8cpp.html#ae0b8d934817dd611ad1a95d15970567d',1,'ir_Truma.cpp']]], - ['ktrumamaxtemp_6902',['kTrumaMaxTemp',['../ir__Truma_8h.html#ae569645f4f21a1c3fb39ed24dad4eef4',1,'ir_Truma.h']]], - ['ktrumamintemp_6903',['kTrumaMinTemp',['../ir__Truma_8h.html#a553ccb38aa5c0a202b2556d5e5664a2b',1,'ir_Truma.h']]], - ['ktrumaonemark_6904',['kTrumaOneMark',['../ir__Truma_8cpp.html#acd542e5de6ea90eccb341c62f7628204',1,'ir_Truma.cpp']]], - ['ktrumaspace_6905',['kTrumaSpace',['../ir__Truma_8cpp.html#a5f6941b73a61eff9c717a06866b5e028',1,'ir_Truma.cpp']]], - ['ktrumatempoffset_6906',['kTrumaTempOffset',['../ir__Truma_8h.html#ac377b70947017722c45a08278597d382',1,'ir_Truma.h']]], - ['ktrumazeromark_6907',['kTrumaZeroMark',['../ir__Truma_8cpp.html#a87a88430e179fe947c3180801cef25d5',1,'ir_Truma.cpp']]], - ['kturbostr_6908',['kTurboStr',['../IRtext_8cpp.html#a9f3f7395d980887699ac5a0c146d37d2',1,'kTurboStr(): IRtext.cpp'],['../IRtext_8h.html#a3ced6d2a545174133308d7803157f7f8',1,'kTurboStr(): IRtext.cpp']]], - ['kturbotogglestr_6909',['kTurboToggleStr',['../IRtext_8cpp.html#a22717e4f7c1683ae1b6feac88441ad2d',1,'kTurboToggleStr(): IRtext.cpp'],['../IRtext_8h.html#a1cb328db0aaa0b2bbb4afa24c9f3d731',1,'kTurboToggleStr(): IRtext.cpp']]], - ['ktypestr_6910',['kTypeStr',['../IRtext_8cpp.html#a284508462cfcbfb66b3002f447e3a002',1,'kTypeStr(): IRtext.cpp'],['../IRtext_8h.html#ab6117f82c4dbbfc229d99cc613d62c94',1,'kTypeStr(): IRtext.cpp']]], - ['kunknownstr_6911',['kUnknownStr',['../IRtext_8cpp.html#a9c6c6d47ce3eb07cc607faa600978029',1,'kUnknownStr(): IRtext.cpp'],['../IRtext_8h.html#aa59176b31741b60729d4279817a7da1b',1,'kUnknownStr(): IRtext.cpp']]], - ['kunknownthreshold_6912',['kUnknownThreshold',['../IRrecv_8h.html#aa6b5a940c7a0432aa82a8d823202cd7f',1,'IRrecv.h']]], - ['kupperstr_6913',['kUpperStr',['../IRtext_8cpp.html#a887bb7c61f38014d21b025c67102fa0b',1,'kUpperStr(): IRtext.cpp'],['../IRtext_8h.html#a5aea60591627481d90688f655b2eb82a',1,'kUpperStr(): IRtext.cpp']]], - ['kupstr_6914',['kUpStr',['../IRtext_8cpp.html#ab970b3d5239f08f21a8e5e2eae49739f',1,'kUpStr(): IRtext.cpp'],['../IRtext_8h.html#a8672abbd2a279c032f0435ed75143b1a',1,'kUpStr(): IRtext.cpp']]], - ['kusedeftol_6915',['kUseDefTol',['../IRrecv_8h.html#a05025e8bd724ae2d0c7fea6e924ca84c',1,'IRrecv.h']]], - ['kvestelacauto_6916',['kVestelAcAuto',['../ir__Vestel_8h.html#a157e879cbe3b216075e3b7b2db5fdc3c',1,'ir_Vestel.h']]], - ['kvestelacbitmark_6917',['kVestelAcBitMark',['../ir__Vestel_8h.html#a70d7198002c61529956625986aa533f0',1,'ir_Vestel.h']]], - ['kvestelacbits_6918',['kVestelAcBits',['../IRremoteESP8266_8h.html#ae31945a1ce90b2d4c33b5c91d980d3a7',1,'IRremoteESP8266.h']]], - ['kvestelaccool_6919',['kVestelAcCool',['../ir__Vestel_8h.html#aa2ec681dd63a976a6b2b182ae590e020',1,'ir_Vestel.h']]], - ['kvestelacdry_6920',['kVestelAcDry',['../ir__Vestel_8h.html#a21a255842a75a932a3a0735851d9c197',1,'ir_Vestel.h']]], - ['kvestelacfan_6921',['kVestelAcFan',['../ir__Vestel_8h.html#aeabf5404a3f66fd1428b6e4c09f24c08',1,'ir_Vestel.h']]], - ['kvestelacfanauto_6922',['kVestelAcFanAuto',['../ir__Vestel_8h.html#ac2f3175c25844414de2c2489595dd851',1,'ir_Vestel.h']]], - ['kvestelacfanautocool_6923',['kVestelAcFanAutoCool',['../ir__Vestel_8h.html#ab40dc2ebe05c77e701e2d5acf16b2658',1,'ir_Vestel.h']]], - ['kvestelacfanautohot_6924',['kVestelAcFanAutoHot',['../ir__Vestel_8h.html#a95dee8baacedb7aa62edbdecf766cdc1',1,'ir_Vestel.h']]], - ['kvestelacfanhigh_6925',['kVestelAcFanHigh',['../ir__Vestel_8h.html#acae63d91ee2a2b448fe1a68b2472e4a3',1,'ir_Vestel.h']]], - ['kvestelacfanlow_6926',['kVestelAcFanLow',['../ir__Vestel_8h.html#a21ce5e539ecb764be8dbad33914f4b87',1,'ir_Vestel.h']]], - ['kvestelacfanmed_6927',['kVestelAcFanMed',['../ir__Vestel_8h.html#a265fa70e0e38caefb45ed007eb25a430',1,'ir_Vestel.h']]], - ['kvestelachdrmark_6928',['kVestelAcHdrMark',['../ir__Vestel_8h.html#a32871ab992bfee13918a50f04508a95a',1,'ir_Vestel.h']]], - ['kvestelachdrspace_6929',['kVestelAcHdrSpace',['../ir__Vestel_8h.html#a2389409048e409b411ea8416829c06ef',1,'ir_Vestel.h']]], - ['kvestelacheat_6930',['kVestelAcHeat',['../ir__Vestel_8h.html#a33d36614992862c41f5e48548b0a45f1',1,'ir_Vestel.h']]], - ['kvestelacion_6931',['kVestelAcIon',['../ir__Vestel_8h.html#a6a661c914fd67e261e2148d797789339',1,'ir_Vestel.h']]], - ['kvestelacmaxtemp_6932',['kVestelAcMaxTemp',['../ir__Vestel_8h.html#a4e49902b2e4fe049fd5969b4532cc7b4',1,'ir_Vestel.h']]], - ['kvestelacmintempc_6933',['kVestelAcMinTempC',['../ir__Vestel_8h.html#ae597f05d0886a5a2aa8c43db187a657b',1,'ir_Vestel.h']]], - ['kvestelacmintemph_6934',['kVestelAcMinTempH',['../ir__Vestel_8h.html#a06977d297c84adac7927c80c7b0e7297',1,'ir_Vestel.h']]], - ['kvestelacnormal_6935',['kVestelAcNormal',['../ir__Vestel_8h.html#afa4c0fafcc806cd22dfb45475631d754',1,'ir_Vestel.h']]], - ['kvestelaconespace_6936',['kVestelAcOneSpace',['../ir__Vestel_8h.html#a507a849ef5e031f40ecc0e5db6ac8dd6',1,'ir_Vestel.h']]], - ['kvestelacsleep_6937',['kVestelAcSleep',['../ir__Vestel_8h.html#abc4701f0a44ed48a139d192f86a7169b',1,'ir_Vestel.h']]], - ['kvestelacstatedefault_6938',['kVestelAcStateDefault',['../ir__Vestel_8h.html#a4207797ae1043280ec6364de5981a791',1,'ir_Vestel.h']]], - ['kvestelacswing_6939',['kVestelAcSwing',['../ir__Vestel_8h.html#aeb764aa28cb134348e64fde5cb4d40f0',1,'ir_Vestel.h']]], - ['kvestelactimestatedefault_6940',['kVestelAcTimeStateDefault',['../ir__Vestel_8h.html#aaf4d9b6a41269ede2101d45cc1549794',1,'ir_Vestel.h']]], - ['kvestelactolerance_6941',['kVestelAcTolerance',['../ir__Vestel_8h.html#a4abe236ac8a801aa03ab843c3e418711',1,'ir_Vestel.h']]], - ['kvestelacturbo_6942',['kVestelAcTurbo',['../ir__Vestel_8h.html#a85b8b744f201b1666f9608f693a61059',1,'ir_Vestel.h']]], - ['kvestelaczerospace_6943',['kVestelAcZeroSpace',['../ir__Vestel_8h.html#a2094b0ff279fb1696b51e57d657efd13',1,'ir_Vestel.h']]], - ['kvoltasbitmark_6944',['kVoltasBitMark',['../ir__Voltas_8cpp.html#aff3e77a8712c4b9132a36b1909727906',1,'ir_Voltas.cpp']]], - ['kvoltasbits_6945',['kVoltasBits',['../IRremoteESP8266_8h.html#ad13056674d7d5fc530123ee1bb754409',1,'IRremoteESP8266.h']]], - ['kvoltascool_6946',['kVoltasCool',['../ir__Voltas_8h.html#a60ce895195221d1344db3b6bfded5422',1,'ir_Voltas.h']]], - ['kvoltasdry_6947',['kVoltasDry',['../ir__Voltas_8h.html#a3a89e1bb4d6f9b0371cb2b1a77f95aa0',1,'ir_Voltas.h']]], - ['kvoltasdrytemp_6948',['kVoltasDryTemp',['../ir__Voltas_8h.html#abb138aeb435b0583c09042f01d7eb42b',1,'ir_Voltas.h']]], - ['kvoltasfan_6949',['kVoltasFan',['../ir__Voltas_8h.html#a5a32539c5a10fb63d4df009968a1cc90',1,'ir_Voltas.h']]], - ['kvoltasfanauto_6950',['kVoltasFanAuto',['../ir__Voltas_8h.html#a68fc7bebcc711e8ca00c664e09f0aff9',1,'ir_Voltas.h']]], - ['kvoltasfanhigh_6951',['kVoltasFanHigh',['../ir__Voltas_8h.html#a6d217a662dd1c9353f3899b2be2dc269',1,'ir_Voltas.h']]], - ['kvoltasfanlow_6952',['kVoltasFanLow',['../ir__Voltas_8h.html#a3b84c9d78f23e694b25edddf5e5ac94a',1,'ir_Voltas.h']]], - ['kvoltasfanmed_6953',['kVoltasFanMed',['../ir__Voltas_8h.html#a0bf9ee213cf9266ea29b6813dc79e165',1,'ir_Voltas.h']]], - ['kvoltasfreq_6954',['kVoltasFreq',['../ir__Voltas_8cpp.html#abf1ddb4b962572b4a4aae323f02d91f1',1,'ir_Voltas.cpp']]], - ['kvoltasheat_6955',['kVoltasHeat',['../ir__Voltas_8h.html#a9f131121d8bff4112de9878be5ce0330',1,'ir_Voltas.h']]], - ['kvoltasmaxtemp_6956',['kVoltasMaxTemp',['../ir__Voltas_8h.html#a21a7e03f17b6daacd82037b892177724',1,'ir_Voltas.h']]], - ['kvoltasmintemp_6957',['kVoltasMinTemp',['../ir__Voltas_8h.html#a85f2d29327aa19177ea026a049c0fe52',1,'ir_Voltas.h']]], - ['kvoltasonespace_6958',['kVoltasOneSpace',['../ir__Voltas_8cpp.html#a5ad53f57f302eb44dfb773304c872018',1,'ir_Voltas.cpp']]], - ['kvoltasstatelength_6959',['kVoltasStateLength',['../IRremoteESP8266_8h.html#a336bd721135fc8b869941cd3aa73646e',1,'IRremoteESP8266.h']]], - ['kvoltasswinghchange_6960',['kVoltasSwingHChange',['../ir__Voltas_8h.html#a92242c38b240f5134e1a6c2200b6d0de',1,'ir_Voltas.h']]], - ['kvoltasswinghnochange_6961',['kVoltasSwingHNoChange',['../ir__Voltas_8h.html#acb66394dca0f3606066f61077444b0d3',1,'ir_Voltas.h']]], - ['kvoltaszerospace_6962',['kVoltasZeroSpace',['../ir__Voltas_8cpp.html#abcfc7887357e19c6d74b5befddfa7eb4',1,'ir_Voltas.cpp']]], - ['kwallstr_6963',['kWallStr',['../IRtext_8cpp.html#a860a71561b888c82318daad9f2c34592',1,'kWallStr(): IRtext.cpp'],['../IRtext_8h.html#add1af6d900b500ca7affff3c9ff02d29',1,'kWallStr(): IRtext.cpp']]], - ['kweeklytimerstr_6964',['kWeeklyTimerStr',['../IRtext_8cpp.html#aaf0b7bf26b4710a4c032cec9e55c545a',1,'kWeeklyTimerStr(): IRtext.cpp'],['../IRtext_8h.html#ab59fa6f63401196c0ff32aba6da9d9aa',1,'kWeeklyTimerStr(): IRtext.cpp']]], - ['kwhirlpoolacauto_6965',['kWhirlpoolAcAuto',['../ir__Whirlpool_8h.html#a2f3cc5447f8042e9c2eae0c2e0dc1b80',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacautotemp_6966',['kWhirlpoolAcAutoTemp',['../ir__Whirlpool_8h.html#a314b66dc86a7f622d73d3973d9dca86d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacbitmark_6967',['kWhirlpoolAcBitMark',['../ir__Whirlpool_8cpp.html#a5c076ca2e18927f8b0594cb74a7de1ff',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacbits_6968',['kWhirlpoolAcBits',['../IRremoteESP8266_8h.html#a149bd4f3fb9c83e683095d393209ede3',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacchecksumbyte1_6969',['kWhirlpoolAcChecksumByte1',['../ir__Whirlpool_8h.html#ab199c13354730c715debbeed63182cbd',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacchecksumbyte2_6970',['kWhirlpoolAcChecksumByte2',['../ir__Whirlpool_8h.html#a37d1a2fd814ccf83062325225bddb9be',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommand6thsense_6971',['kWhirlpoolAcCommand6thSense',['../ir__Whirlpool_8h.html#a48b1309aab30dd871ce047881680efa2',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandfanspeed_6972',['kWhirlpoolAcCommandFanSpeed',['../ir__Whirlpool_8h.html#a4712f7dd6c5631f6aa692eeb99fa3963',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandifeel_6973',['kWhirlpoolAcCommandIFeel',['../ir__Whirlpool_8h.html#a5cb95c379d033d7f5b0c81755f1d376f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandlight_6974',['kWhirlpoolAcCommandLight',['../ir__Whirlpool_8h.html#af6ae6f50d9dbfa610b7033181e4f7eb1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandmode_6975',['kWhirlpoolAcCommandMode',['../ir__Whirlpool_8h.html#ab03770a941b7277a66fe65003497e183',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandofftimer_6976',['kWhirlpoolAcCommandOffTimer',['../ir__Whirlpool_8h.html#a072883e3780aa0970183ab330db26118',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandontimer_6977',['kWhirlpoolAcCommandOnTimer',['../ir__Whirlpool_8h.html#a54cbadf2ded73e66d6d12b6622249bdc',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandpower_6978',['kWhirlpoolAcCommandPower',['../ir__Whirlpool_8h.html#ac215c2827ebfe25a896d53e576b643d1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsleep_6979',['kWhirlpoolAcCommandSleep',['../ir__Whirlpool_8h.html#a695c9d69953ad2663512ede38e619b09',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandsuper_6980',['kWhirlpoolAcCommandSuper',['../ir__Whirlpool_8h.html#a4da2162e70a7257c5f4149e8556816d4',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandswing_6981',['kWhirlpoolAcCommandSwing',['../ir__Whirlpool_8h.html#a320e57c0727a74f049883c77233647a9',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccommandtemp_6982',['kWhirlpoolAcCommandTemp',['../ir__Whirlpool_8h.html#a6e567d58af9bc3fb246e3d47a09fb065',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaccool_6983',['kWhirlpoolAcCool',['../ir__Whirlpool_8h.html#a9574c0a604ffee1df43222344f649db8',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacdefaultrepeat_6984',['kWhirlpoolAcDefaultRepeat',['../IRremoteESP8266_8h.html#a3b41358898f69d96bdeece17ead13ee0',1,'IRremoteESP8266.h']]], - ['kwhirlpoolacdry_6985',['kWhirlpoolAcDry',['../ir__Whirlpool_8h.html#ab7433a4e3e8ad7ee665ab234df43e45f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfan_6986',['kWhirlpoolAcFan',['../ir__Whirlpool_8h.html#a91ecddbde81174268fdde3679565daeb',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanauto_6987',['kWhirlpoolAcFanAuto',['../ir__Whirlpool_8h.html#a133a436db244935a812beba78a1a9d05',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanhigh_6988',['kWhirlpoolAcFanHigh',['../ir__Whirlpool_8h.html#a93affe2700e13830ff09ee16801be56d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanlow_6989',['kWhirlpoolAcFanLow',['../ir__Whirlpool_8h.html#abdbd00636661a234d9e30521144d76e1',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacfanmedium_6990',['kWhirlpoolAcFanMedium',['../ir__Whirlpool_8h.html#acf1ae9526d2fd3f49d484608730f607d',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacgap_6991',['kWhirlpoolAcGap',['../ir__Whirlpool_8cpp.html#a5946b0c81f68442645f795f4f6518972',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrmark_6992',['kWhirlpoolAcHdrMark',['../ir__Whirlpool_8cpp.html#ad2f759eb7426cfe5fb3421f101c926bb',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolachdrspace_6993',['kWhirlpoolAcHdrSpace',['../ir__Whirlpool_8cpp.html#a7a83a305cc6ebb7be7163bd1c3fb679d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacheat_6994',['kWhirlpoolAcHeat',['../ir__Whirlpool_8h.html#a1e9290ec94cca537b5c44d2e4326b59c',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmaxtemp_6995',['kWhirlpoolAcMaxTemp',['../ir__Whirlpool_8h.html#a08171b333f214963e21a0c574783299f',1,'ir_Whirlpool.h']]], - ['kwhirlpoolacmingap_6996',['kWhirlpoolAcMinGap',['../ir__Whirlpool_8cpp.html#aa6e5e114daf18d77914a08f831c37c7d',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacmintemp_6997',['kWhirlpoolAcMinTemp',['../ir__Whirlpool_8h.html#aeffef97e3247609d5731b525692f1e7b',1,'ir_Whirlpool.h']]], - ['kwhirlpoolaconespace_6998',['kWhirlpoolAcOneSpace',['../ir__Whirlpool_8cpp.html#a7680ed11a0bc6b2f9340e3557681a470',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacsections_6999',['kWhirlpoolAcSections',['../ir__Whirlpool_8cpp.html#a75ebed07d288ac32a0138035279b41c7',1,'ir_Whirlpool.cpp']]], - ['kwhirlpoolacstatelength_7000',['kWhirlpoolAcStateLength',['../IRremoteESP8266_8h.html#a0fff60a43f776fb999d0f1f91d88154f',1,'IRremoteESP8266.h']]], - ['kwhirlpoolaczerospace_7001',['kWhirlpoolAcZeroSpace',['../ir__Whirlpool_8cpp.html#af03c9ee4d432bbce7d2ee214dd5ca095',1,'ir_Whirlpool.cpp']]], - ['kwhynterbitmark_7002',['kWhynterBitMark',['../ir__Whynter_8cpp.html#a032043e058989b6402d8af99d2c20552',1,'ir_Whynter.cpp']]], - ['kwhynterbitmarkticks_7003',['kWhynterBitMarkTicks',['../ir__Whynter_8cpp.html#acfd8f04e0453ec1b9cd85837053a47e2',1,'ir_Whynter.cpp']]], - ['kwhynterbits_7004',['kWhynterBits',['../IRremoteESP8266_8h.html#a4553f6670e241a67104d45216a4ebd98',1,'IRremoteESP8266.h']]], - ['kwhynterhdrmark_7005',['kWhynterHdrMark',['../ir__Whynter_8cpp.html#a7d62b0e658fe6f697d41d6932e4e6662',1,'ir_Whynter.cpp']]], - ['kwhynterhdrmarkticks_7006',['kWhynterHdrMarkTicks',['../ir__Whynter_8cpp.html#a34da808cebff09fc038589c035f2d2fe',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspace_7007',['kWhynterHdrSpace',['../ir__Whynter_8cpp.html#ad20c874e642238e299a44ead2ea592f1',1,'ir_Whynter.cpp']]], - ['kwhynterhdrspaceticks_7008',['kWhynterHdrSpaceTicks',['../ir__Whynter_8cpp.html#a8090f73380ea212e904402555156364d',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlength_7009',['kWhynterMinCommandLength',['../ir__Whynter_8cpp.html#a5e584a8d6aa8a146c9c8e74839b28e8f',1,'ir_Whynter.cpp']]], - ['kwhyntermincommandlengthticks_7010',['kWhynterMinCommandLengthTicks',['../ir__Whynter_8cpp.html#a65e8195824053403967573b7603059e7',1,'ir_Whynter.cpp']]], - ['kwhyntermingap_7011',['kWhynterMinGap',['../ir__Whynter_8cpp.html#ad09957f4c9c76d76ab55a74f440dad5f',1,'ir_Whynter.cpp']]], - ['kwhyntermingapticks_7012',['kWhynterMinGapTicks',['../ir__Whynter_8cpp.html#a89af5f0ab7af456f58052bf9256620a2',1,'ir_Whynter.cpp']]], - ['kwhynteronespace_7013',['kWhynterOneSpace',['../ir__Whynter_8cpp.html#a78993c22d94b107a37f61cddad728003',1,'ir_Whynter.cpp']]], - ['kwhynteronespaceticks_7014',['kWhynterOneSpaceTicks',['../ir__Whynter_8cpp.html#a95a5903a8f057df2b6587a331fec6f18',1,'ir_Whynter.cpp']]], - ['kwhyntertick_7015',['kWhynterTick',['../ir__Whynter_8cpp.html#a8f704cdf6cfd11455101919d7a772389',1,'ir_Whynter.cpp']]], - ['kwhynterzerospace_7016',['kWhynterZeroSpace',['../ir__Whynter_8cpp.html#a426deb9a35a1a6afdcbcfa58c6943490',1,'ir_Whynter.cpp']]], - ['kwhynterzerospaceticks_7017',['kWhynterZeroSpaceTicks',['../ir__Whynter_8cpp.html#ae38da416cd065b561287ebd2fe0257f0',1,'ir_Whynter.cpp']]], - ['kwidestr_7018',['kWideStr',['../IRtext_8cpp.html#a19875c78e68ba6fdd78df3526f82969c',1,'kWideStr(): IRtext.cpp'],['../IRtext_8h.html#a6fe3dbd6899e85e79e517f71cc74a87b',1,'kWideStr(): IRtext.cpp']]], - ['kwifistr_7019',['kWifiStr',['../IRtext_8cpp.html#a3f2dddbcbc03e31ed6f1081fce001ea4',1,'kWifiStr(): IRtext.cpp'],['../IRtext_8h.html#a8bc9343f209803dbab3e765e39b41b4d',1,'kWifiStr(): IRtext.cpp']]], - ['kxfanstr_7020',['kXFanStr',['../IRtext_8cpp.html#ada36ab4b7555d38a76c4477971736cb7',1,'kXFanStr(): IRtext.cpp'],['../IRtext_8h.html#a7ddc859861308f2f9077abcec2a4b571',1,'kXFanStr(): IRtext.cpp']]], - ['kxmpbasespace_7021',['kXmpBaseSpace',['../ir__Xmp_8cpp.html#abefc09e9ed818c7efb3bbdda98e30be1',1,'ir_Xmp.cpp']]], - ['kxmpbits_7022',['kXmpBits',['../IRremoteESP8266_8h.html#adfcd08adae1243b1108353ef5cfe8776',1,'IRremoteESP8266.h']]], - ['kxmpfooterspace_7023',['kXmpFooterSpace',['../ir__Xmp_8cpp.html#a83012cfefe50c5f8b2b13315e72dc1f1',1,'ir_Xmp.cpp']]], - ['kxmpmark_7024',['kXmpMark',['../ir__Xmp_8cpp.html#a9c09decb9eaa8afd6b2053c142e87db9',1,'ir_Xmp.cpp']]], - ['kxmpmaxwordvalue_7025',['kXmpMaxWordValue',['../ir__Xmp_8cpp.html#ab54dbf1bdf33d8f7e7413723980dc518',1,'ir_Xmp.cpp']]], - ['kxmpmessagegap_7026',['kXmpMessageGap',['../ir__Xmp_8cpp.html#ad678abebb2d8ccfd578e7c1d70f44987',1,'ir_Xmp.cpp']]], - ['kxmprepeatcode_7027',['kXmpRepeatCode',['../ir__Xmp_8cpp.html#a7cdde1ffa7ba5186dfcfc3660966ce9d',1,'ir_Xmp.cpp']]], - ['kxmprepeatcodealt_7028',['kXmpRepeatCodeAlt',['../ir__Xmp_8cpp.html#a34460e1fdf809f8b87c1da2942124c49',1,'ir_Xmp.cpp']]], - ['kxmpsections_7029',['kXmpSections',['../ir__Xmp_8cpp.html#ab20e02ac019d4eb974f06e531a9af5c0',1,'ir_Xmp.cpp']]], - ['kxmpspacestep_7030',['kXmpSpaceStep',['../ir__Xmp_8cpp.html#a4f0b555035f665354c5743208d52d5b9',1,'ir_Xmp.cpp']]], - ['kxmpwordsize_7031',['kXmpWordSize',['../ir__Xmp_8cpp.html#a1974129b35ffdb85f3a1727aa5509b9f',1,'ir_Xmp.cpp']]], - ['kyesstr_7032',['kYesStr',['../IRtext_8cpp.html#a96492aa94d18702db41a639ae2a45423',1,'kYesStr(): IRtext.cpp'],['../IRtext_8h.html#a95ca78b5cc3caa31c564a28480379fae',1,'kYesStr(): IRtext.cpp']]], - ['kzepealbits_7033',['kZepealBits',['../IRremoteESP8266_8h.html#af09c9402a1c4fa24f692994498641296',1,'IRremoteESP8266.h']]], - ['kzepealcommandoffon_7034',['kZepealCommandOffOn',['../ir__Zepeal_8cpp.html#a37af9800da3144c218d422e54066e837',1,'ir_Zepeal.cpp']]], - ['kzepealcommandofftimer_7035',['kZepealCommandOffTimer',['../ir__Zepeal_8cpp.html#a87b136a95af4437182530d6f7cbc69ee',1,'ir_Zepeal.cpp']]], - ['kzepealcommandontimer_7036',['kZepealCommandOnTimer',['../ir__Zepeal_8cpp.html#aed4491019bb6575c113404a095e8b116',1,'ir_Zepeal.cpp']]], - ['kzepealcommandrhythm_7037',['kZepealCommandRhythm',['../ir__Zepeal_8cpp.html#aa3960b3bdaa77c060543881bdf71e46c',1,'ir_Zepeal.cpp']]], - ['kzepealcommandspeed_7038',['kZepealCommandSpeed',['../ir__Zepeal_8cpp.html#a1189a81901daaf4b8b45e8f45caf0f49',1,'ir_Zepeal.cpp']]], - ['kzepealfootermark_7039',['kZepealFooterMark',['../ir__Zepeal_8cpp.html#a83167e93978d9cec8cf2dfac980582ba',1,'ir_Zepeal.cpp']]], - ['kzepealgap_7040',['kZepealGap',['../ir__Zepeal_8cpp.html#ab5bea0fe08e14fa3d1812bea018f44f0',1,'ir_Zepeal.cpp']]], - ['kzepealhdrmark_7041',['kZepealHdrMark',['../ir__Zepeal_8cpp.html#abee2a1537cfff9481d3060fba94a4b04',1,'ir_Zepeal.cpp']]], - ['kzepealhdrspace_7042',['kZepealHdrSpace',['../ir__Zepeal_8cpp.html#ad49be13d3dd108a18e4e641a40ff0408',1,'ir_Zepeal.cpp']]], - ['kzepealminrepeat_7043',['kZepealMinRepeat',['../IRremoteESP8266_8h.html#afb5c734e808d8f108f976f0556bf6e58',1,'IRremoteESP8266.h']]], - ['kzepealonemark_7044',['kZepealOneMark',['../ir__Zepeal_8cpp.html#a4d9919883561086dd3e3060e93983480',1,'ir_Zepeal.cpp']]], - ['kzepealonespace_7045',['kZepealOneSpace',['../ir__Zepeal_8cpp.html#a88702dbff33a9dddcfd4b255637460a0',1,'ir_Zepeal.cpp']]], - ['kzepealsignature_7046',['kZepealSignature',['../ir__Zepeal_8cpp.html#a7994e564096ac01b77d9ebe3a753167d',1,'ir_Zepeal.cpp']]], - ['kzepealtolerance_7047',['kZepealTolerance',['../ir__Zepeal_8cpp.html#ab35f666ef98b24b8b4bacdf462a9fbe6',1,'ir_Zepeal.cpp']]], - ['kzepealzeromark_7048',['kZepealZeroMark',['../ir__Zepeal_8cpp.html#a94eac58ef78ea4e39687f54e381c3a00',1,'ir_Zepeal.cpp']]], - ['kzepealzerospace_7049',['kZepealZeroSpace',['../ir__Zepeal_8cpp.html#a1af802b587e8f0a88ae87ab964fde690',1,'ir_Zepeal.cpp']]], - ['kzonefollowstr_7050',['kZoneFollowStr',['../IRtext_8cpp.html#a9a112fb47e39e35d096fe09266d37db1',1,'kZoneFollowStr(): IRtext.cpp'],['../IRtext_8h.html#a100dc6d7c4d53bffa00a24a582ace80f',1,'kZoneFollowStr(): IRtext.cpp']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.html deleted file mode 100644 index c02d066f5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.js deleted file mode 100644 index 732575a22..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_b.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['label_7051',['Label',['../structCoronaSection.html#abc6d0caa713c73244c4bf2f602074d48',1,'CoronaSection']]], - ['ledflag_7052',['ledFlag',['../classIRCoolixAC.html#a03ba5e0a6cb47a7bb054155c2111a69c',1,'IRCoolixAC']]], - ['length_7053',['Length',['../unionToshibaProtocol.html#aacb09c50f1892d3244b4dd0c14a12ed6',1,'ToshibaProtocol']]], - ['light_7054',['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()'],['../unionNeoclimaProtocol.html#a598346f565ad6d57df03f5256a878dd6',1,'NeoclimaProtocol::Light()'],['../unionTcl112Protocol.html#a1787bdc0b636eeca6f85dcbec14aef6b',1,'Tcl112Protocol::Light()'],['../unionTecoProtocol.html#a00a2d53fdbfcb60461284374f8894b97',1,'TecoProtocol::Light()'],['../unionVoltasProtocol.html#a811a0de66771c693831740440aac460c',1,'VoltasProtocol::Light()'],['../structstdAc_1_1state__t.html#a51c3a5c4703ea49b420d70aeb18b6b9b',1,'stdAc::state_t::light()']]], - ['lightoff_7055',['LightOff',['../unionWhirlpoolProtocol.html#afb34ebe6d6b418f8398dd33b42bb4982',1,'WhirlpoolProtocol']]], - ['lighttoggle_7056',['LightToggle',['../unionElectraProtocol.html#aa2a5998cafd139e5ce7626edc4782c56',1,'ElectraProtocol']]], - ['llword_7057',['llword',['../unionmagiquest.html#ad57fbc75ab289c3e93b94be0b2187d65',1,'magiquest']]], - ['longcode_7058',['longcode',['../unionFujitsuProtocol.html#a3802bebe7a7e4d01f58fb191ffd8adca',1,'FujitsuProtocol']]], - ['longmsg_7059',['LongMsg',['../unionToshibaProtocol.html#ad1f3816fce9e7e7ca004870b264cca5d',1,'ToshibaProtocol']]], - ['lword_7060',['lword',['../unionmagiquest.html#ac87102145311831a232002b52fe2d02c',1,'magiquest']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.html deleted file mode 100644 index 4b866c6ce..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.js deleted file mode 100644 index e6cacd6f9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_c.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['magnitude_7061',['magnitude',['../unionmagiquest.html#a8f687419a00322a04aab223dec093d6e',1,'magiquest']]], - ['max_7062',['Max',['../unionAmcorProtocol.html#a9e0ea99322601af4b09784da2cf21d7e',1,'AmcorProtocol::Max()'],['../unionArgoProtocol.html#ac3edf881406da0b9a253a7536ba3e810',1,'ArgoProtocol::Max()']]], - ['minutes_7063',['Minutes',['../unionVestelProtocol.html#a13e423c0ae919980baa57f0e9a22d59e',1,'VestelProtocol']]], - ['mode_7064',['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()'],['../unionEcoclimProtocol.html#a25d3ca6d95d9ed88e01f512aec8f0765',1,'EcoclimProtocol::Mode()'],['../unionElectraProtocol.html#a27e64c16e4cefeac55cd12165554e0b0',1,'ElectraProtocol::Mode()'],['../unionFujitsuProtocol.html#aa9260ff8cda7409dc14b9b057ad903a5',1,'FujitsuProtocol::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()'],['../unionKelonProtocol.html#afefb71dce13bc346164cbbbba493eb69',1,'KelonProtocol::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()'],['../unionNeoclimaProtocol.html#ad7f68fc3c6b62f74f4025edbd57a5e5b',1,'NeoclimaProtocol::Mode()'],['../unionPanasonicAc32Protocol.html#adc5a9e48b207202c5361e700a06157e2',1,'PanasonicAc32Protocol::Mode()'],['../unionSamsungProtocol.html#a46106899d30f8e503b4fc190d11d1c48',1,'SamsungProtocol::Mode()'],['../unionSanyoProtocol.html#a0c36d7f731d49be5baab0ea925401c93',1,'SanyoProtocol::Mode()'],['../unionSharpProtocol.html#a44a57c217d0f1065d4c480b32002455d',1,'SharpProtocol::Mode()'],['../unionTcl112Protocol.html#a96d87be2a38710de21cecfab0050ff95',1,'Tcl112Protocol::Mode()'],['../unionTechnibelProtocol.html#ad6b2e2f016fe885859bd6622ec37d7dd',1,'TechnibelProtocol::Mode()'],['../unionTecoProtocol.html#a40b8ca2a2126c4bde467a308472ca446',1,'TecoProtocol::Mode()'],['../unionToshibaProtocol.html#ae821300a670c95fb9e34243d8efec1bf',1,'ToshibaProtocol::Mode()'],['../unionTranscoldProtocol.html#a78a73050062dbb8aa24dce07a0a382ff',1,'TranscoldProtocol::Mode()'],['../unionTrotecProtocol.html#ae86771f0cdffdec88b0be265cd9e2524',1,'TrotecProtocol::Mode()'],['../unionTrumaProtocol.html#acf754cf5578169a1e94607c3f0c3916f',1,'TrumaProtocol::Mode()'],['../unionVestelProtocol.html#a60edaaaacdcfa5aefa957c14579f671a',1,'VestelProtocol::Mode()'],['../unionVoltasProtocol.html#ad991a7ccaf9caa0b9f7880f4138f1dab',1,'VoltasProtocol::Mode()'],['../unionWhirlpoolProtocol.html#a0196cbbf3d41cb867f857c786b45a580',1,'WhirlpoolProtocol::Mode()']]], - ['modebutton_7065',['ModeButton',['../unionDaikin176Protocol.html#af48f77b741bcfa7717497077c50ee240',1,'Daikin176Protocol']]], - ['model_7066',['Model',['../unionHitachi1Protocol.html#aad97f1edb72b8786423089f1dad70681',1,'Hitachi1Protocol::Model()'],['../unionSharpProtocol.html#acdaebb53185b4c6f59c9fedabe9586ba',1,'SharpProtocol::Model()'],['../structstdAc_1_1state__t.html#aa1a57a63b2ea80c1f9c4a1bcf16a4c62',1,'stdAc::state_t::model()']]], - ['model2_7067',['Model2',['../unionSharpProtocol.html#a4e9764f8c1b98a6108f0de676d618dd3',1,'SharpProtocol']]], - ['modela_7068',['ModelA',['../unionGreeProtocol.html#a66fdedd8318541269f0ab9ae3b832813',1,'GreeProtocol']]], - ['modulation_7069',['modulation',['../classIRsend.html#a11e26c03c87e2bed756eb7f318570bd8',1,'IRsend']]], - ['mold_7070',['Mold',['../unionDaikinESPProtocol.html#a61c7eeeb3589f775897d79a130dd1be8',1,'DaikinESPProtocol::Mold()'],['../unionDaikin2Protocol.html#a18207f0f0913ade09f16ba2e98a5dbf1',1,'Daikin2Protocol::Mold()']]], - ['mux_7071',['mux',['../namespace__IRrecv.html#a1baf83e60312b43397ca8b9d185fb469',1,'_IRrecv']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.html deleted file mode 100644 index 84d878b81..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.js deleted file mode 100644 index 999a05bdc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_d.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['next_7072',['next',['../classIRac.html#ae85d7ac0c58028b2547518f88d3e98fe',1,'IRac']]], - ['night_7073',['Night',['../unionArgoProtocol.html#a6dbfb2137f0e64a65e3aa45a50485fbe',1,'ArgoProtocol::Night()'],['../unionMitsubishi152Protocol.html#a2ad34c4b3a726495ec23ca7af5a2a540',1,'Mitsubishi152Protocol::Night()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.html deleted file mode 100644 index b0d9b7b20..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.js deleted file mode 100644 index a2fa77cdf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_e.js +++ /dev/null @@ -1,36 +0,0 @@ -var searchData= -[ - ['offhalfhour_7074',['OffHalfHour',['../unionDaikin128Protocol.html#a95e474c4f74f8921d1bbe42a06c58aa6',1,'Daikin128Protocol::OffHalfHour()'],['../unionDaikin64Protocol.html#af27302ff8553d43234c782432556482b',1,'Daikin64Protocol::OffHalfHour()']]], - ['offhour_7075',['OffHour',['../unionSanyoProtocol.html#a819d8fa041aa52b94b366ced926828d9',1,'SanyoProtocol']]], - ['offhours_7076',['OffHours',['../unionDaikin128Protocol.html#a2cff2aa98cb96d420ee9f7745af05b2a',1,'Daikin128Protocol::OffHours()'],['../unionDaikin64Protocol.html#aa0be38e313504c06a83d613823b08d67',1,'Daikin64Protocol::OffHours()'],['../unionDelonghiProtocol.html#ae699f25608c0f66aafaf7cb50e9c0258',1,'DelonghiProtocol::OffHours()'],['../unionEcoclimProtocol.html#ab2b370d17c8b7153869a3efb6cc9af67',1,'EcoclimProtocol::OffHours()'],['../unionHaierProtocol.html#aecaad31185de1e7843047a9b9194d55b',1,'HaierProtocol::OffHours()'],['../unionVestelProtocol.html#ada82c37fc9adf2ed34735b0ff05b70b6',1,'VestelProtocol::OffHours()'],['../unionWhirlpoolProtocol.html#a70c2d80980c585fac6581d5a4da08447',1,'WhirlpoolProtocol::OffHours()']]], - ['offmins_7077',['OffMins',['../unionDelonghiProtocol.html#a0d0acd3e8c1ccd190076db4287251096',1,'DelonghiProtocol::OffMins()'],['../unionHaierProtocol.html#a6eec6ff574e93f327ca567251b37e33b',1,'HaierProtocol::OffMins()'],['../unionWhirlpoolProtocol.html#a4f3fecf53dab7c9ffb8ed02c71eb652d',1,'WhirlpoolProtocol::OffMins()']]], - ['offtenmins_7078',['OffTenMins',['../unionEcoclimProtocol.html#a453dcd8e81eced1362f352c21809deab',1,'EcoclimProtocol::OffTenMins()'],['../unionVestelProtocol.html#add80ad31a31c042837492ae558deb8ce',1,'VestelProtocol::OffTenMins()']]], - ['offtime_7079',['OffTime',['../unionDaikinESPProtocol.html#a1e74e0e3c6ba822ccb32aa052bb47f05',1,'DaikinESPProtocol::OffTime()'],['../unionDaikin2Protocol.html#ab0bdcd7cb92206426feae8bbf408fc0f',1,'Daikin2Protocol::OffTime()']]], - ['offtimeperiod_7080',['offTimePeriod',['../classIRsend.html#a9e45c9e4f54db86c1f3e506cd72fe4c1',1,'IRsend']]], - ['offtimer_7081',['OffTimer',['../unionCarrierProtocol.html#a42fcd3b5c796076fa372985b3b1cd473',1,'CarrierProtocol::OffTimer()'],['../unionDaikinESPProtocol.html#ad5c9be68e472eb538be020bc4595da61',1,'DaikinESPProtocol::OffTimer()'],['../unionDaikin2Protocol.html#a8064a7edb7a307331b5e7232adc09234',1,'Daikin2Protocol::OffTimer()'],['../unionDaikin128Protocol.html#aa9f559a12057893bb936b3972ff63972',1,'Daikin128Protocol::OffTimer()'],['../unionDaikin64Protocol.html#a6866d3ed0105d0bb807645723feab21f',1,'Daikin64Protocol::OffTimer()'],['../unionDelonghiProtocol.html#a0f27d98df3895d7cf8fef26602a2ea1d',1,'DelonghiProtocol::OffTimer()'],['../unionFujitsuProtocol.html#a28481e54ff98309f7456a870a987a0cc',1,'FujitsuProtocol::OffTimer()'],['../unionHaierProtocol.html#a6f3893711bffc1d59d8e3d76e7a954a2',1,'HaierProtocol::OffTimer()'],['../unionMideaProtocol.html#afd53c8223249e271fe48d03c67a74364',1,'MideaProtocol::OffTimer()'],['../unionSanyoProtocol.html#a8cd49c1eea805eb74af696079760a8fe',1,'SanyoProtocol::OffTimer()'],['../unionVestelProtocol.html#afe4ad429db29472e41a9db0f5eb927fe',1,'VestelProtocol::OffTimer()']]], - ['offtimer12hr_7082',['OffTimer12Hr',['../unionVoltasProtocol.html#a6d55446514c9a0209209504de336a0b5',1,'VoltasProtocol']]], - ['offtimerenable_7083',['OffTimerEnable',['../unionCarrierProtocol.html#a15e27c0710c706b2f1e8227a962fc722',1,'CarrierProtocol::OffTimerEnable()'],['../unionFujitsuProtocol.html#a9c8c3d1304617e70a0367f97d37eb98f',1,'FujitsuProtocol::OffTimerEnable()'],['../unionVoltasProtocol.html#a415a13e7722786f41b33c1db78771c8e',1,'VoltasProtocol::OffTimerEnable()']]], - ['offtimerenabled_7084',['OffTimerEnabled',['../unionWhirlpoolProtocol.html#a9288dc4e7ab5e59fc16885771268a856',1,'WhirlpoolProtocol']]], - ['offtimerhigh_7085',['OffTimerHigh',['../unionHitachi1Protocol.html#a10702ba90386aba2eb25280f54e7cf44',1,'Hitachi1Protocol']]], - ['offtimerhrs_7086',['OffTimerHrs',['../unionVoltasProtocol.html#aeef99d8c93860c34eb08f1c591d1da9f',1,'VoltasProtocol']]], - ['offtimerlow_7087',['OffTimerLow',['../unionHitachi1Protocol.html#ae724c85578d3d211ca17f3778a8cd599',1,'Hitachi1Protocol']]], - ['offtimermins_7088',['OffTimerMins',['../unionVoltasProtocol.html#a243f1a105ba96c4830d0b4ce66a75a4e',1,'VoltasProtocol']]], - ['onhalfhour_7089',['OnHalfHour',['../unionDaikin128Protocol.html#a89c02e7657a06fe65f924480acdc9cf0',1,'Daikin128Protocol::OnHalfHour()'],['../unionDaikin64Protocol.html#a0a4c0f02f2dab9dfb9ec52f57b527d37',1,'Daikin64Protocol::OnHalfHour()']]], - ['onhours_7090',['OnHours',['../unionDaikin128Protocol.html#a25cb19708a89d2b685d09c6710155646',1,'Daikin128Protocol::OnHours()'],['../unionDaikin64Protocol.html#ab80c9a47ba53f044dc6f236bb635511e',1,'Daikin64Protocol::OnHours()'],['../unionDelonghiProtocol.html#af5cd29dcc62aa712c9754b9729e528bb',1,'DelonghiProtocol::OnHours()'],['../unionEcoclimProtocol.html#af4ae2762de59708ae92670a5deaaac61',1,'EcoclimProtocol::OnHours()'],['../unionHaierProtocol.html#af08311ee6680b3a6951bd200e2b8f310',1,'HaierProtocol::OnHours()'],['../unionVestelProtocol.html#adbcdeb4f7db89ef89217593f959f4592',1,'VestelProtocol::OnHours()'],['../unionWhirlpoolProtocol.html#a0ecde3649180f2d47e4932bb5e7cb558',1,'WhirlpoolProtocol::OnHours()']]], - ['onmins_7091',['OnMins',['../unionDelonghiProtocol.html#ace54d8cccf1885084f8c641d234b15fe',1,'DelonghiProtocol::OnMins()'],['../unionHaierProtocol.html#a65fe65bdfb819fec434eba573daccc34',1,'HaierProtocol::OnMins()'],['../unionWhirlpoolProtocol.html#ab27e3d443afec8d26d341e62fa4cbf7c',1,'WhirlpoolProtocol::OnMins()']]], - ['ontenmins_7092',['OnTenMins',['../unionEcoclimProtocol.html#afad5515fac563e6a74b2fc19032be0a6',1,'EcoclimProtocol::OnTenMins()'],['../unionVestelProtocol.html#a76f1a69f268607ff2b9b9728c50b013a',1,'VestelProtocol::OnTenMins()']]], - ['ontime_7093',['OnTime',['../unionDaikinESPProtocol.html#a95a27ed63686d577accdeefb407e3bc3',1,'DaikinESPProtocol::OnTime()'],['../unionDaikin2Protocol.html#a4fadf043415c8f20235a060f725fcd30',1,'Daikin2Protocol::OnTime()']]], - ['ontimeperiod_7094',['onTimePeriod',['../classIRsend.html#aaaa65f31dbea033f8130e847b0366d94',1,'IRsend']]], - ['ontimer_7095',['OnTimer',['../unionCarrierProtocol.html#a8b66fd8c444395f14d663000ea5a27ee',1,'CarrierProtocol::OnTimer()'],['../unionDaikinESPProtocol.html#aa39934433625161ff928097e52bff7d3',1,'DaikinESPProtocol::OnTimer()'],['../unionDaikin2Protocol.html#aa20abbbeb32f6c73e2f389b1e163814c',1,'Daikin2Protocol::OnTimer()'],['../unionDaikin128Protocol.html#a51462af9615909d23985476025d9a609',1,'Daikin128Protocol::OnTimer()'],['../unionDaikin64Protocol.html#a5ac7df474efab5bcb086df1c706d392b',1,'Daikin64Protocol::OnTimer()'],['../unionDelonghiProtocol.html#a742d638f420f489e67f03c98fab3cd9d',1,'DelonghiProtocol::OnTimer()'],['../unionFujitsuProtocol.html#af7cd4cf5d3e1fe208580a710901473d4',1,'FujitsuProtocol::OnTimer()'],['../unionHaierProtocol.html#ae5c9fd1397bcf3c6737c38d8e76682b1',1,'HaierProtocol::OnTimer()'],['../unionVestelProtocol.html#a1915bb5909374c75f4ec45ddb0584f9f',1,'VestelProtocol::OnTimer()']]], - ['ontimer12hr_7096',['OnTimer12Hr',['../unionVoltasProtocol.html#a600e00d4c64841f9ce11490197bfbc0d',1,'VoltasProtocol']]], - ['ontimerenable_7097',['OnTimerEnable',['../unionCarrierProtocol.html#aadf3236a9a5883fc7f263516be951e0c',1,'CarrierProtocol::OnTimerEnable()'],['../unionFujitsuProtocol.html#a7fc1d3edb5d3d604d13940e21d534d57',1,'FujitsuProtocol::OnTimerEnable()'],['../unionVoltasProtocol.html#a26f169f663b7cbac7e6235b7320929da',1,'VoltasProtocol::OnTimerEnable()']]], - ['ontimerenabled_7098',['OnTimerEnabled',['../unionWhirlpoolProtocol.html#a5e35f030a9ff30985738fd534154a122',1,'WhirlpoolProtocol']]], - ['ontimerhigh_7099',['OnTimerHigh',['../unionHitachi1Protocol.html#a74d9afe7eb31941ad8991d5a0533c67a',1,'Hitachi1Protocol']]], - ['ontimerhrs_7100',['OnTimerHrs',['../unionVoltasProtocol.html#ad38a8a291f71ccb4c34363c4662994d6',1,'VoltasProtocol']]], - ['ontimerlow_7101',['OnTimerLow',['../unionHitachi1Protocol.html#a682cda9a01e0f9f303b670164e0bce3b',1,'Hitachi1Protocol']]], - ['ontimermins_7102',['OnTimerMins',['../unionVoltasProtocol.html#a38cb13bbd23b5680bcdbfcf5b2223a71',1,'VoltasProtocol']]], - ['outputoff_7103',['outputOff',['../classIRsend.html#a5e80df8b2ee534dbd6ddc30a852a2791',1,'IRsend']]], - ['outputon_7104',['outputOn',['../classIRsend.html#a4acfc45b339e724e2dbdff24762dfa7d',1,'IRsend']]], - ['outsidequiet_7105',['OutsideQuiet',['../unionFujitsuProtocol.html#a5ddbee1e404cbabc7e203bbd886e7021',1,'FujitsuProtocol']]], - ['overflow_7106',['overflow',['../structirparams__t.html#aa39b4f38e0ffcd470766373e03548e58',1,'irparams_t::overflow()'],['../classdecode__results.html#a821bc53c006bab3283c6b8592f0c43d3',1,'decode_results::overflow()']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.html deleted file mode 100644 index a708dbf04..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.js b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.js deleted file mode 100644 index 18a446d75..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/search/variables_f.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['pad_7107',['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()'],['../unionSharpProtocol.html#a315ed64d8b03c559003aa032152c742e',1,'SharpProtocol::pad()']]], - ['pad0_7108',['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()'],['../unionSamsungProtocol.html#adcf56d5e9d61401deba67ae4bed32797',1,'SamsungProtocol::pad0()'],['../unionTcl112Protocol.html#a8da5d4f35f677c8d81ea628a753e110f',1,'Tcl112Protocol::pad0()'],['../unionWhirlpoolProtocol.html#a85afaae2ea603ff9aad240a67b9a770f',1,'WhirlpoolProtocol::pad0()']]], - ['pad1_7109',['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()'],['../unionKelonProtocol.html#ac0c1c5efd6837df7101355cddd2d41bb',1,'KelonProtocol::pad1()'],['../unionKelvinatorProtocol.html#a9feee780a54bfb86968f137080d3d68e',1,'KelvinatorProtocol::pad1()'],['../unionMitsubishi144Protocol.html#ad256f8e7f36c654002807b7fbb5038dd',1,'Mitsubishi144Protocol::pad1()'],['../unionMitsubishi112Protocol.html#af5c30781b3183c3530b4e401952a5666',1,'Mitsubishi112Protocol::pad1()'],['../unionSamsungProtocol.html#a197a2005789029b5037840fa5f0945f1',1,'SamsungProtocol::pad1()'],['../unionTcl112Protocol.html#a701ddcba3061c25b515a1d7788ddec12',1,'Tcl112Protocol::pad1()'],['../unionWhirlpoolProtocol.html#aed57244f4451176e68ce407ced81eb2c',1,'WhirlpoolProtocol::pad1()']]], - ['pad2_7110',['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()'],['../unionKelonProtocol.html#a07276300448ba5caa961e1d2a6714780',1,'KelonProtocol::pad2()']]], - ['pad3_7111',['pad3',['../unionDaikin216Protocol.html#aeef7d4b689a7dccc73c201d1b5d96a2f',1,'Daikin216Protocol::pad3()'],['../unionDaikin176Protocol.html#a9959937c9a6bffc149060886f1ebb9b3',1,'Daikin176Protocol::pad3()']]], - ['padding_7112',['padding',['../unionmagiquest.html#a28ca4be56c78ef762f87171506dc6e93',1,'magiquest']]], - ['params_7113',['params',['../namespace__IRrecv.html#a75e3f81d5e64fd51c049231876a37906',1,'_IRrecv']]], - ['params_5fsave_7114',['params_save',['../namespace__IRrecv.html#af604d4630a17b4113c0e086e513187d1',1,'_IRrecv']]], - ['periodoffset_7115',['periodOffset',['../classIRsend.html#a1b5180cbf4f88f19fca3f677e1e91b96',1,'IRsend']]], - ['power_7116',['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()'],['../unionEcoclimProtocol.html#ae022c9f0fe7a6912f0b9c335388cd386',1,'EcoclimProtocol::Power()'],['../unionElectraProtocol.html#a907a426aa30a50667d5e4f4615d71518',1,'ElectraProtocol::Power()'],['../unionFujitsuProtocol.html#ad6ac9cd452bac615abf2015e5baeb934',1,'FujitsuProtocol::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()'],['../unionNeoclimaProtocol.html#a25d1e93aeea3a386d31bc5f665a52444',1,'NeoclimaProtocol::Power()'],['../unionSanyoProtocol.html#ae3626ac8b929a397f19705a29368d457',1,'SanyoProtocol::Power()'],['../unionTcl112Protocol.html#af087805327d98279e00c8f6427a2f9e7',1,'Tcl112Protocol::Power()'],['../unionTechnibelProtocol.html#aaab9c2a129506d34f9f0879cb2657f4d',1,'TechnibelProtocol::Power()'],['../unionTecoProtocol.html#a43035d0a8a9f00c5330a776a26b70465',1,'TecoProtocol::Power()'],['../unionTrotecProtocol.html#aabb71ec60601e95b6d6613e4407262cc',1,'TrotecProtocol::Power()'],['../unionVestelProtocol.html#aeca45915cf95898c9baa0e77d3a6e517',1,'VestelProtocol::Power()'],['../unionVoltasProtocol.html#a554e4bce95426a096f090cc6890f46f2',1,'VoltasProtocol::Power()'],['../unionWhirlpoolProtocol.html#a33653fd6f01c43852cf44b5feb0cb349',1,'WhirlpoolProtocol::Power()']]], - ['power1_7117',['Power1',['../unionSamsungProtocol.html#af389a11a1f56c92dfe67ce151310d0d8',1,'SamsungProtocol']]], - ['power2_7118',['Power2',['../unionDaikin2Protocol.html#ad38268911be9104ab7fcaf0d35dd4c6f',1,'Daikin2Protocol']]], - ['power6_7119',['Power6',['../unionSamsungProtocol.html#a4b30b11279244b37fa5b82a5203a3a77',1,'SamsungProtocol']]], - ['powerbutton_7120',['PowerButton',['../unionCoronaProtocol.html#abceccc1306d3a78be6177758f3056a5a',1,'CoronaProtocol']]], - ['powerflag_7121',['powerFlag',['../classIRCoolixAC.html#a5984ff64ff14df92291618a647da08f9',1,'IRCoolixAC']]], - ['powerful_7122',['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()']]], - ['powerful10_7123',['Powerful10',['../unionSamsungProtocol.html#a500901489b00950de98ea922c7e8adcf',1,'SamsungProtocol']]], - ['powerful8_7124',['Powerful8',['../unionSamsungProtocol.html#a4fe9bf8b0d5d30af2b9b4dc20d8f68e3',1,'SamsungProtocol']]], - ['poweroff_7125',['PowerOff',['../unionTrumaProtocol.html#ac245b1ff37fb967f363cd8cae8b12b22',1,'TrumaProtocol']]], - ['powerspecial_7126',['PowerSpecial',['../unionSharpProtocol.html#aa2fd90d4f6117177dec13282ccc13ead',1,'SharpProtocol']]], - ['powertoggle_7127',['PowerToggle',['../unionAirwellProtocol.html#a9a3893a0ec7811202697adeb60d89775',1,'AirwellProtocol::PowerToggle()'],['../unionHitachi1Protocol.html#adf8067b7e2d7ea3afb6ffae08a9cf609',1,'Hitachi1Protocol::PowerToggle()'],['../unionKelonProtocol.html#a5055123f4ca8f2efdd10ed3dc5d86e50',1,'KelonProtocol::PowerToggle()'],['../unionPanasonicAc32Protocol.html#a5d6c6d8100c60323449ba5f96e147172',1,'PanasonicAc32Protocol::PowerToggle()']]], - ['preamble_7128',['preamble',['../unionKelonProtocol.html#a89dc5481508f53095896b5b4fc688f4e',1,'KelonProtocol']]], - ['prefix_7129',['Prefix',['../unionHaierProtocol.html#a6c15a8e22231dae23ffa8bef78420054',1,'HaierProtocol::Prefix()'],['../unionHaierYRW02Protocol.html#af55185fad3229f2011b5917412ad8c1b',1,'HaierYRW02Protocol::Prefix()']]], - ['protocol_7130',['Protocol',['../unionFujitsuProtocol.html#acf8b6b900c9dab936b4888b52e92e3b5',1,'FujitsuProtocol::Protocol()'],['../structstdAc_1_1state__t.html#af59897778be0e571f77dd11337352c27',1,'stdAc::state_t::protocol()']]], - ['purify_7131',['Purify',['../unionDaikin2Protocol.html#ad3c5427e7d4d0182bb86f61fa2c2484a',1,'Daikin2Protocol']]] -]; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/splitbar.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection-members.html deleted file mode 100644 index 3d0c5bdc7..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    CoronaSection Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection.html deleted file mode 100644 index 61571e5e2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structCoronaSection.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - -IRremoteESP8266: CoronaSection Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    CoronaSection Struct Reference
    -
    -
    - -

    Native representation of a section of a Corona A/C message. - More...

    - -

    #include <ir_Corona.h>

    - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t Header0
     
    uint8_t Header1
     
    uint8_t Label
     
    uint8_t Data0
     
    uint8_t Data0Inv
     
    uint8_t Data1
     
    uint8_t Data1Inv
     
    -

    Detailed Description

    -

    Native representation of a section of a Corona A/C message.

    -

    Member Data Documentation

    - -

    ◆ Data0

    - -
    -
    - - - - -
    uint8_t CoronaSection::Data0
    -
    - -
    -
    - -

    ◆ Data0Inv

    - -
    -
    - - - - -
    uint8_t CoronaSection::Data0Inv
    -
    - -
    -
    - -

    ◆ Data1

    - -
    -
    - - - - -
    uint8_t CoronaSection::Data1
    -
    - -
    -
    - -

    ◆ Data1Inv

    - -
    -
    - - - - -
    uint8_t CoronaSection::Data1Inv
    -
    - -
    -
    - -

    ◆ Header0

    - -
    -
    - - - - -
    uint8_t CoronaSection::Header0
    -
    - -
    -
    - -

    ◆ Header1

    - -
    -
    - - - - -
    uint8_t CoronaSection::Header1
    -
    - -
    -
    - -

    ◆ Label

    - -
    -
    - - - - -
    uint8_t CoronaSection::Label
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t-members.html deleted file mode 100644 index 0c526f445..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    irparams_t Member List
    -
    -
    - -

    This is the complete list of members for irparams_t, including all inherited members.

    - - - - - - - - - -
    bufsizeirparams_t
    overflowirparams_t
    rawbufirparams_t
    rawlenirparams_t
    rcvstateirparams_t
    recvpinirparams_t
    timeoutirparams_t
    timerirparams_t
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t.html deleted file mode 100644 index 74d3bcddf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structirparams__t.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -IRremoteESP8266: irparams_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    irparams_t Struct Reference
    -
    -
    - -

    Information for the interrupt handler. - More...

    - -

    #include <IRrecv.h>

    - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t recvpin
     
    uint8_t rcvstate
     
    uint16_t timer
     
    uint16_t bufsize
     
    uint16_t * rawbuf
     
    uint16_t rawlen
     
    uint8_t overflow
     
    uint8_t timeout
     
    -

    Detailed Description

    -

    Information for the interrupt handler.

    -

    Member Data Documentation

    - -

    ◆ bufsize

    - -
    -
    - - - - -
    uint16_t irparams_t::bufsize
    -
    - -
    -
    - -

    ◆ overflow

    - -
    -
    - - - - -
    uint8_t irparams_t::overflow
    -
    - -
    -
    - -

    ◆ rawbuf

    - -
    -
    - - - - -
    uint16_t* irparams_t::rawbuf
    -
    - -
    -
    - -

    ◆ rawlen

    - -
    -
    - - - - -
    uint16_t irparams_t::rawlen
    -
    - -
    -
    - -

    ◆ rcvstate

    - -
    -
    - - - - -
    uint8_t irparams_t::rcvstate
    -
    - -
    -
    - -

    ◆ recvpin

    - -
    -
    - - - - -
    uint8_t irparams_t::recvpin
    -
    - -
    -
    - -

    ◆ timeout

    - -
    -
    - - - - -
    uint8_t irparams_t::timeout
    -
    - -
    -
    - -

    ◆ timer

    - -
    -
    - - - - -
    uint16_t irparams_t::timer
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t-members.html deleted file mode 100644 index 4a624fb26..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t-members.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    match_result_t Member List
    -
    -
    - -

    This is the complete list of members for match_result_t, including all inherited members.

    - - - - -
    datamatch_result_t
    successmatch_result_t
    usedmatch_result_t
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t.html deleted file mode 100644 index db08c0b2f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structmatch__result__t.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - -IRremoteESP8266: match_result_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    match_result_t Struct Reference
    -
    -
    - -

    Results from a data match. - More...

    - -

    #include <IRrecv.h>

    - - - - - - - - -

    -Public Attributes

    bool success
     
    uint64_t data
     
    uint16_t used
     
    -

    Detailed Description

    -

    Results from a data match.

    -

    Member Data Documentation

    - -

    ◆ data

    - -
    -
    - - - - -
    uint64_t match_result_t::data
    -
    - -
    -
    - -

    ◆ success

    - -
    -
    - - - - -
    bool match_result_t::success
    -
    - -
    -
    - -

    ◆ used

    - -
    -
    - - - - -
    uint16_t match_result_t::used
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t-members.html deleted file mode 100644 index 00b774f43..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t-members.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    stdAc::state_t Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t.html deleted file mode 100644 index 28ece11ce..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/structstdAc_1_1state__t.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - -IRremoteESP8266: stdAc::state_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    stdAc::state_t Struct Reference
    -
    -
    - -

    Structure to hold a common A/C state. - More...

    - -

    #include <IRsend.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    decode_type_t protocol
     
    int16_t model
     
    bool power
     
    stdAc::opmode_t mode
     
    float degrees
     
    bool celsius
     
    stdAc::fanspeed_t fanspeed
     
    stdAc::swingv_t swingv
     
    stdAc::swingh_t swingh
     
    bool quiet
     
    bool turbo
     
    bool econo
     
    bool light
     
    bool filter
     
    bool clean
     
    bool beep
     
    int16_t sleep
     
    int16_t clock
     
    -

    Detailed Description

    -

    Structure to hold a common A/C state.

    -

    Member Data Documentation

    - -

    ◆ beep

    - -
    -
    - - - - -
    bool stdAc::state_t::beep
    -
    - -
    -
    - -

    ◆ celsius

    - -
    -
    - - - - -
    bool stdAc::state_t::celsius
    -
    - -
    -
    - -

    ◆ clean

    - -
    -
    - - - - -
    bool stdAc::state_t::clean
    -
    - -
    -
    - -

    ◆ clock

    - -
    -
    - - - - -
    int16_t stdAc::state_t::clock
    -
    - -
    -
    - -

    ◆ degrees

    - -
    -
    - - - - -
    float stdAc::state_t::degrees
    -
    - -
    -
    - -

    ◆ econo

    - -
    -
    - - - - -
    bool stdAc::state_t::econo
    -
    - -
    -
    - -

    ◆ fanspeed

    - -
    -
    - - - - -
    stdAc::fanspeed_t stdAc::state_t::fanspeed
    -
    - -
    -
    - -

    ◆ filter

    - -
    -
    - - - - -
    bool stdAc::state_t::filter
    -
    - -
    -
    - -

    ◆ light

    - -
    -
    - - - - -
    bool stdAc::state_t::light
    -
    - -
    -
    - -

    ◆ mode

    - -
    -
    - - - - -
    stdAc::opmode_t stdAc::state_t::mode
    -
    - -
    -
    - -

    ◆ model

    - -
    -
    - - - - -
    int16_t stdAc::state_t::model
    -
    - -
    -
    - -

    ◆ power

    - -
    -
    - - - - -
    bool stdAc::state_t::power
    -
    - -
    -
    - -

    ◆ protocol

    - -
    -
    - - - - -
    decode_type_t stdAc::state_t::protocol
    -
    - -
    -
    - -

    ◆ quiet

    - -
    -
    - - - - -
    bool stdAc::state_t::quiet
    -
    - -
    -
    - -

    ◆ sleep

    - -
    -
    - - - - -
    int16_t stdAc::state_t::sleep
    -
    - -
    -
    - -

    ◆ swingh

    - -
    -
    - - - - -
    stdAc::swingh_t stdAc::state_t::swingh
    -
    - -
    -
    - -

    ◆ swingv

    - -
    -
    - - - - -
    stdAc::swingv_t stdAc::state_t::swingv
    -
    - -
    -
    - -

    ◆ turbo

    - -
    -
    - - - - -
    bool stdAc::state_t::turbo
    -
    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/sync_off.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/sync_on.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_a.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_b.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tabs.css b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tabs.css deleted file mode 100644 index 7d45d36c1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/todo.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/todo.html deleted file mode 100644 index 18fef957e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/todo.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -IRremoteESP8266: Todo List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Todo List
    -
    -
    -
    -
    Member IRrecv::decodeLasertag (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)
    -
    Convert to using matchManchester() if we can.
    -
    Member IRrecv::decodeRC5 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)
    -
    Serious testing of the RC-5X and strict aspects needs to be done.
    -
    Member IRrecv::decodeRC6 (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)
    -
    Testing of the strict compliance aspects.
    -
    Member IRrecv::decodeSharp (decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
    -
    Need to ensure capture of the inverted message as it can be missed due to the interrupt timeout used to detect an end of message. Several compliance checks are disabled until that is resolved.
    -
    Member IRrecv::matchManchesterData (volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
    -
    Clean up and optimise this. It is just "get it working code" atm.
    -
    Member IRSamsungAc::getSwing (void) const
    -
    (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
    -
    Member IRSamsungAc::setSwing (const bool on)
    -
    (Hollako) Explain why sometimes the LSB of remote_state[9] is a 1. e.g. 0xAE or 0XAF for swing move.
    -
    Member IRsend::sendLasertag (uint64_t data, uint16_t nbits=kLasertagBits, uint16_t repeat=kLasertagMinRepeat)
    -
    Convert this to use sendManchester() if we can.`
    -
    Member IRsend::sendRC5 (const uint64_t data, uint16_t nbits=kRC5XBits, const uint16_t repeat=kNoRepeat)
    -
    Testing of the RC-5X components.
    -
    Member IRsend::sendSAMSUNG (const uint64_t data, const uint16_t nbits=kSamsungBits, const uint16_t repeat=kNoRepeat)
    -
    Confirm that is actually how Samsung sends a repeat. The refdoc doesn't indicate it is true.
    -
    Member MideaProtocol::__pad2__
    -
    Find out what this bit controls.
    -
    -
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol-members.html deleted file mode 100644 index 2a21a289e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    AirwellProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol.html deleted file mode 100644 index 5285f6670..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAirwellProtocol.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - -IRremoteESP8266: AirwellProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    AirwellProtocol Union Reference
    -
    -
    - -

    Native representation of a Airwell A/C message. - More...

    - -

    #include <ir_Airwell.h>

    - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     
    struct {
       uint64_t   __pad0__:19
     
       uint64_t   Temp:4
     
       uint64_t   __pad1__:5
     
       uint64_t   Fan:2
     
       uint64_t   Mode:3
     
       uint64_t   PowerToggle:1
     
       uint64_t   __pad2__:0
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Airwell A/C message.

    -

    Member Data Documentation

    - -

    ◆ @1

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::Mode
    -
    - -
    -
    - -

    ◆ PowerToggle

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::PowerToggle
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::raw
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t AirwellProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol-members.html deleted file mode 100644 index 9c15b7fee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    AmcorProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol.html deleted file mode 100644 index ea13655d3..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionAmcorProtocol.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - -IRremoteESP8266: AmcorProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    AmcorProtocol Union Reference
    -
    -
    - -

    Native representation of a Amcor A/C message. - More...

    - -

    #include <ir_Amcor.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kAmcorStateLength]
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Mode:3
     
       uint8_t   __pad1__:1
     
       uint8_t   Fan:3
     
       uint8_t   __pad2__:1
     
       uint8_t   __pad3__:1
     
       uint8_t   Temp:6
     
       uint8_t   __pad4__:1
     
       uint8_t   __pad5__:8
     
       uint8_t   __pad6__:8
     
       uint8_t   __pad7__:4
     
       uint8_t   Power:4
     
       uint8_t   Max:2
     
       uint8_t   __pad8__:4
     
       uint8_t   Vent:2
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Amcor A/C message.

    -

    Member Data Documentation

    - -

    ◆ @3

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Fan
    -
    - -
    -
    - -

    ◆ Max

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Max
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::raw[kAmcorStateLength]
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Temp
    -
    - -
    -
    - -

    ◆ Vent

    - -
    -
    - - - - -
    uint8_t AmcorProtocol::Vent
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol-members.html deleted file mode 100644 index 8864a8add..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    ArgoProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol.html deleted file mode 100644 index cf092bc37..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionArgoProtocol.html +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - -IRremoteESP8266: ArgoProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    ArgoProtocol Union Reference
    -
    -
    - -

    Native representation of a Argo A/C message. - More...

    - -

    #include <ir_Argo.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kArgoStateLength]
     The state in native IR code form. More...
     
    struct {
       uint64_t   __pad0__:8
     
       uint64_t   __pad1__:8
     
       uint64_t   __pad2__:3
     
       uint64_t   Mode:3
     
       uint64_t   Temp:5
     
       uint64_t   Fan:2
     
       uint64_t   RoomTemp:5
     
       uint64_t   Flap:3
     
       uint64_t   __pad3__:3
     
       uint64_t   __pad4__:8
     
       uint64_t   __pad5__:8
     
       uint64_t   __pad6__:3
     
       uint64_t   __pad7__:5
     
       uint32_t   __pad8__:6
     
       uint32_t   __pad9__:1
     
       uint32_t   __pad10__:1
     
       uint32_t   __pad11__:1
     
       uint32_t   __pad12__:1
     
       uint32_t   Night:1
     
       uint32_t   Max:1
     
       uint32_t   __pad13__:1
     
       uint32_t   Power:1
     
       uint32_t   __pad14__:1
     
       uint32_t   iFeel:1
     
       uint32_t   __pad15__:2
     
       uint32_t   Sum:8
     
       uint32_t   __pad16__:6
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Argo A/C message.

    -

    Member Data Documentation

    - -

    ◆ @5

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad13__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad13__
    -
    - -
    -
    - -

    ◆ __pad14__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad14__
    -
    - -
    -
    - -

    ◆ __pad15__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad15__
    -
    - -
    -
    - -

    ◆ __pad16__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad16__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::Fan
    -
    - -
    -
    - -

    ◆ Flap

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::Flap
    -
    - -
    -
    - -

    ◆ iFeel

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::iFeel
    -
    - -
    -
    - -

    ◆ Max

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::Max
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::Mode
    -
    - -
    -
    - -

    ◆ Night

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::Night
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t ArgoProtocol::raw[kArgoStateLength]
    -
    - -

    The state in native IR code form.

    - -
    -
    - -

    ◆ RoomTemp

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::RoomTemp
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint32_t ArgoProtocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t ArgoProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol-members.html deleted file mode 100644 index 96e51a162..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    CarrierProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol.html deleted file mode 100644 index b96fb8d6f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCarrierProtocol.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - -IRremoteESP8266: CarrierProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    CarrierProtocol Union Reference
    -
    -
    - -

    Native representation of a Carrier A/C message. - More...

    - -

    #include <ir_Carrier.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     The state of the IR remote. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:8
     
       uint8_t   Sum:4
     
       uint8_t   Mode:2
     
       uint8_t   Fan:2
     
       uint8_t   Temp:4
     
       uint8_t   __pad2__:1
     
       uint8_t   SwingV:1
     
       uint8_t   __pad3__:2
     
       uint8_t   __pad4__:4
     
       uint8_t   Power:1
     
       uint8_t   OffTimerEnable:1
     
       uint8_t   OnTimerEnable:1
     
       uint8_t   Sleep:1
     
       uint8_t   __pad5__:8
     
       uint8_t   __pad6__:4
     
       uint8_t   OnTimer:4
     
       uint8_t   __pad7__:4
     
       uint8_t   OffTimer:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Carrier A/C message.

    -

    Member Data Documentation

    - -

    ◆ @7

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ OffTimerEnable

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::OffTimerEnable
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::OnTimer
    -
    - -
    -
    - -

    ◆ OnTimerEnable

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::OnTimerEnable
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t CarrierProtocol::raw
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::Sum
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t CarrierProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol-members.html deleted file mode 100644 index 456bd6f6e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol-members.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    CoolixProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol.html deleted file mode 100644 index dcf7ea750..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoolixProtocol.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - -IRremoteESP8266: CoolixProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    CoolixProtocol Union Reference
    -
    -
    - -

    Native representation of a Coolix A/C message. - More...

    - -

    #include <ir_Coolix.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint32_t raw
     The state in IR code form. More...
     
    struct {
       uint32_t   __pad0__:1
     
       uint32_t   ZoneFollow1:1
     Control bit for Zone Follow mode. More...
     
       uint32_t   Mode:2
     Operation mode. More...
     
       uint32_t   Temp:4
     Desired temperature (Celsius) More...
     
       uint32_t   SensorTemp:5
     The temperature sensor in the IR remote. More...
     
       uint32_t   Fan:3
     Fan speed. More...
     
       uint32_t   __pad1__:3
     
       uint32_t   ZoneFollow2:1
     Additional control bit for Zone Follow mode. More...
     
       uint32_t   __pad2__:4
     Fixed value 0b1011 / 0xB. More...
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Coolix A/C message.

    -

    Member Data Documentation

    - -

    ◆ @9

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::__pad2__
    -
    - -

    Fixed value 0b1011 / 0xB.

    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::Fan
    -
    - -

    Fan speed.

    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::Mode
    -
    - -

    Operation mode.

    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::raw
    -
    - -

    The state in IR code form.

    - -
    -
    - -

    ◆ SensorTemp

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::SensorTemp
    -
    - -

    The temperature sensor in the IR remote.

    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::Temp
    -
    - -

    Desired temperature (Celsius)

    - -
    -
    - -

    ◆ ZoneFollow1

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::ZoneFollow1
    -
    - -

    Control bit for Zone Follow mode.

    - -
    -
    - -

    ◆ ZoneFollow2

    - -
    -
    - - - - -
    uint32_t CoolixProtocol::ZoneFollow2
    -
    - -

    Additional control bit for Zone Follow mode.

    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol-members.html deleted file mode 100644 index e203a53ee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    CoronaProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol.html deleted file mode 100644 index b37b28a5b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol.html +++ /dev/null @@ -1,395 +0,0 @@ - - - - - - - -IRremoteESP8266: CoronaProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    CoronaProtocol Union Reference
    -
    -
    - -

    Native representation of a Corona A/C message. - More...

    - -

    #include <ir_Corona.h>

    -
    -Collaboration diagram for CoronaProtocol:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kCoronaAcStateLength]
     The state of the IR remote. More...
     
    CoronaSection sections [kCoronaAcSections]
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:8
     
       uint8_t   __pad2__:8
     
       uint8_t   Fan:2
     
       uint8_t   __pad3__:1
     
       uint8_t   Econo:1
     
       uint8_t   __pad4__:1
     
       uint8_t   __pad5__:1
     
       uint8_t   SwingVToggle:1
     
       uint8_t   __pad6__:1
     
       uint8_t   __pad7__:8
     
       uint8_t   Temp:4
     
       uint8_t   Power:1
     
       uint8_t   PowerButton:1
     
       uint8_t   Mode:2
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Corona A/C message.

    -

    Member Data Documentation

    - -

    ◆ @11

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::Econo
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::Power
    -
    - -
    -
    - -

    ◆ PowerButton

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::PowerButton
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::raw[kCoronaAcStateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ sections

    - -
    -
    - - - - -
    CoronaSection CoronaProtocol::sections[kCoronaAcSections]
    -
    - -
    -
    - -

    ◆ SwingVToggle

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::SwingVToggle
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t CoronaProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.map b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.map deleted file mode 100644 index 831b3276c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 deleted file mode 100644 index 8bc98c724..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0ab2a90e0d231a677632e61388465d06 \ No newline at end of file diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.png b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionCoronaProtocol__coll__graph.png deleted file mode 100644 index 2db5afb84fbf514a424b7f87b7d2bb294dc8b49d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 zcmaJ^2{e@NzaP7lbu8Hj*=5U?Wr&Fg5h2+^_MPlT_9eT7N=TvXS+nm_M#NYnV;9EQ z#xm4>y7&Hn_niAb=Rb31-gDmbzR!7{@AtEP6AbjVsHxbfAP@+(_ASI+aE%7Pa7uFU zFHY|g1}@~bx3v(EKYzakZ6%oy2u+|i;)ZeHtL?ck1LGAg3fvBnb{Er4@1E+%H)OVN zYTAGe;Qt1K>jb?CgbK6&^rF7E8 zgN?Bqr2uhd6&1|tYU~B50F0lXOixcQb#cY*&D*!6hK7a)B3U>bPAxD{LI1U~bEZ25 zIr-vdRR{BPCT3>ajqmT|rrWPhE7Pg|IlHE=p&{ikbeWNnv7oq^oPvhqNtaD0rYFw* z+(!;dPfrx19#QM~O}%7{hlhvgL8C`~!2Pz=a+gw`MLA?>7k7KjLcmjMnBv_m;T{&lQ&;XOw4G( zjVPzBshVe*nS53GvaZZTFzt+66(&Y^?=s|~9C&$~y_d*|3Vhdw@0XvP>#mB!GWo2Xxe0-#Zvvf}MJV$^0&~^OwnqO5_^%OtrnXvvaZ6JwN zqpJN>#94;T1$>Nrjg1*&;^K^)orPI1kq7Uz9XT!bCfG~o#>YDizq&5-_?NMWxOj1M zv*Jv>D+?z)G$%e@K<@=2ssLn zI~`C+GxA)KUWFsn$Hym|5PG^%vUfV$=m~{<-#px&s0kzZC#Ix4&)+-@PJH^54{X%O z+q*C=jqb~rFTA{O5)-M2)v~g(d_pn@5m+qN57SN7?7z)M1gkKa#kxLbjMtKC$NR0G z*KIh)15A)WL_|feHoPw_RqH^W7nqc-JVGLod(F%uSs%WJJ=1x2_Or6G5&{cPQ}J7; zBPJ#;Fc5-iGniCaQMXx1G#=sc{VAME1!xyTBcrHE>u^qhcZ8J{7ue0RT*j3f8CMjP zl$Nk_EkY6!T0ueAU*+XV1s|*rZ67%KNWjVxNNc1#E3?tDVOLjPKp+a+Bkem1RPqP}>aw0RdVT798U) zvU~gcQZC~{3fHd}0^A?qN<~z8`S=P=${tGRdL8~k`!}vF+lR>?`Gq#vkEz|thz4z? z3c+u6QE-PsDomdC_iHk;u-Ns)Qhy#Aims}X07Rl^VTt?jLB!bD7zT%PVKA7>QnrYe z*=_y&i5D+k*vP$<3dGqc@Ag84#KaITE+1OkKYnCLPftHy$+k8yHKmB^dScn)U)b8p z0dQ;Z-Z5J1ncl~rfhLbbuTYTpc?d0XjE4e1)sDu10*dy z{V&6Th}e98tBnH)AXAN=-2KVyaX6fpP?k>XIeylx&WZl?XonU8I;LtBh#?!w zks@htZx<2~Q8zQY41q~W(QBo0#gvtm^*y){EDe8<5ij=h@tn`6XAu*qHevw2?HwHOnpgez7e26Gxv;)A>$G#1OSsJ{HJwk( z+;e;sEmhb2{7)17d1MT^l-cu9Na)=4-O#dQzK}sr5oyM3c{f+^bjoPdD=j+D)et1IjuI z4zQFT4Z)Ac#&t)2XOdv(TqNYX3`Tc17Che3*Jl&32V|)_aoHW*@<$@cxI8S6Sea-G zEd+;S9VyndMTlO&>uyr4k$uQuWG z^B^A9LC0j{2C4(6!-XmwlmZJz|^xyIPc#N1qmgo5TRP@6jEpOb;`M=H?s^l>dQm7+it=vi4W)J`XX zC15f#jQ8%{+p}LsqtTb;+{|7g74!68Uus)PcB>H0ENncpCTdn>ZGJa1_v1%7eu*!d zY#@cR=k##Xd*ut0av%;Okg5F|(N=XQ)}sQS;sq1Sk#lE@y~G*`7!w#62m?Bmo11GO z#0WXX+plw?J*dN_$l3=RWZ~+PMBF@`M;dkgfD7V$qU2R~aS`F=<*l~uqYCO%r1}nB3fnU zel)7ZUD)2vwXv}=1%ighTyxCT2Mv_&DO@UvkG?+VQBq=;=s5E!IbB{}wmI2bIsQ%9 zk+SQ*}miRa&J)ZGYZwWyEIS}wC?~OTIfxHTC!Q2y3Eu$LxHP5t#_T|m6vBx z3czlSPc^zt69bQ|c+j}G&=nQ9n(OEVs;j>v|KOK5%$%m`_3PKnv%s1$XD9oCYk2{Z zZc~y$Rs%*Q`h^V*CLSzIOfhS(LumB%_4BZ`HeJL??D90{grk8UpM1U7hB+Uq;Jj9+ z!2WFJTZ2A-`{vmQ5TLm=-^LE&M<9OMF~r!&wBO3oGC4AmxZJXZxkxiPQoXPfl#8B$ z;d{m8=6kMuX+S$-Na_3c^s81L70u0T!^6Y4y}gX=ppXy}2&fSM9oiqw;f{p5RygFO zr)<=T6tcXsg6WJPDJ?DSJSWhGj}XrGzg?_<^ym?fsOUu!@=H$uR5CI%f%EfJ?da=S zvJ!yxk_ie5Dj$v;&CPo@j4!EyBpDbKgqf+UF@c&5XzD**jaR<^=vasU1W$YpqF z(~ru-Pi?hfV(-h!G(Zf7|30=OB_-`dqnYmCzwfTky1({q;KRK#F^`fm+4C^2&6Lv| zU4a~wgGC3@5?SkBPupBHP;yB-1BY$dSuDv%c7sG!IJx;yhRx8*D&^q74;8G$`#Vt2KOG&`H_*4CtF)?PBJgJcA~J=gZX)xf_M7y+q2%=GqU9tpBO-X zzX^`QNJXZut`324BaeA3EG=v72N`<%`@6@+pqmpFwas(b182<2O3c)h*%f|%9xz}5 zI3b*zoKgp74D~<~Q2-I#VJIg8=!XA?Z?V+u3rkB;y}gLu-rfQ*`9KBrw|3#{DRQdg zgF{0IFalWrMh<}~gNKigq^b@7qWV=wv%~*RYX2sQHoNAr?+Ezmr3#dMR?4vvTnjya t=Oi#iSYYAXKi+mgGE&>3Ic2w^>T@^EwV=|j3rwXD?VI|DN_Csa{{r3?Bs~BC diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol-members.html deleted file mode 100644 index 34f82798b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin128Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol.html deleted file mode 100644 index 4ae49549d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin128Protocol.html +++ /dev/null @@ -1,530 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin128Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin128Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin128 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kDaikin128StateLength]
     The state of the IR remote. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Mode:4
     
       uint8_t   Fan:4
     
       uint8_t   ClockMins:8
     
       uint8_t   ClockHours:8
     
       uint8_t   OnHours:6
     
       uint8_t   OnHalfHour:1
     
       uint8_t   OnTimer:1
     
       uint8_t   OffHours:6
     
       uint8_t   OffHalfHour:1
     
       uint8_t   OffTimer:1
     
       uint8_t   Temp:8
     
       uint8_t   SwingV:1
     
       uint8_t   Sleep:1
     
       uint8_t   __pad1__:1
     
       uint8_t   Power:1
     
       uint8_t   Sum1:4
     
       uint8_t   __pad2__:8
     
       uint8_t   Ceiling:1
     
       uint8_t   __pad3__:1
     
       uint8_t   Econo:1
     
       uint8_t   Wall:1
     
       uint8_t   __pad4__:4
     
       uint8_t   pad [5]
     
       uint8_t   Sum2:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin128 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @25

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ Ceiling

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Ceiling
    -
    - -
    -
    - -

    ◆ ClockHours

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::ClockHours
    -
    - -
    -
    - -

    ◆ ClockMins

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::ClockMins
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Econo
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Mode
    -
    - -
    -
    - -

    ◆ OffHalfHour

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::OffHalfHour
    -
    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::OffHours
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnHalfHour

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::OnHalfHour
    -
    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::OnHours
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::OnTimer
    -
    - -
    -
    - -

    ◆ pad

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::pad[5]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::raw[kDaikin128StateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Sum2
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Temp
    -
    - -
    -
    - -

    ◆ Wall

    - -
    -
    - - - - -
    uint8_t Daikin128Protocol::Wall
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol-members.html deleted file mode 100644 index 43cbbb612..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin152Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol.html deleted file mode 100644 index 6f782aab1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin152Protocol.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin152Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin152Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin152 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kDaikin152StateLength]
     The state of the IR remote. More...
     
    struct {
       uint8_t   pad0 [5]
     
       uint8_t   Power:1
     
       uint8_t   __pad0__:3
     
       uint8_t   Mode:3
     
       uint8_t   __pad1__:1
     
       uint8_t   __pad2__:1
     
       uint8_t   Temp:7
     
       uint8_t   __pad3__:8
     
       uint8_t   SwingV:4
     
       uint8_t   Fan:4
     
       uint8_t   pad1 [4]
     
       uint8_t   Powerful:1
     
       uint8_t   __pad4__:4
     
       uint8_t   Quiet:1
     
       uint8_t   __pad5__:2
     
       uint8_t   pad2 [2]
     
       uint8_t   __pad6__:1
     
       uint8_t   Comfort:1
     
       uint8_t   Econo:1
     
       uint8_t   Sensor:1
     
       uint8_t   __pad7__:4
     
       uint8_t   __pad8__:8
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin152 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @27

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::__pad8__
    -
    - -
    -
    - -

    ◆ Comfort

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Comfort
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Econo
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::pad0[5]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::pad1[4]
    -
    - -
    -
    - -

    ◆ pad2

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::pad2[2]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Power
    -
    - -
    -
    - -

    ◆ Powerful

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Powerful
    -
    - -
    -
    - -

    ◆ Quiet

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Quiet
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::raw[kDaikin152StateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sensor

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Sensor
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Sum
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Daikin152Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol-members.html deleted file mode 100644 index 86d9d254b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin160Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol.html deleted file mode 100644 index ca0704ccd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin160Protocol.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin160Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin160Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin160 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kDaikin160StateLength]
     The state of the IR remote. More...
     
    struct {
       uint8_t   pad0 [6]
     
       uint8_t   Sum1:8
     
       uint8_t   pad1 [5]
     
       uint8_t   Power:1
     
       uint8_t   __pad0__:3
     
       uint8_t   Mode:3
     
       uint8_t   __pad1__:1
     
       uint8_t   __pad2__:4
     
       uint8_t   SwingV:4
     
       uint8_t   pad2 [2]
     
       uint8_t   __pad3__:1
     
       uint8_t   Temp:6
     
       uint8_t   __pad4__:1
     
       uint8_t   Fan:4
     
       uint8_t   __pad5__:4
     
       uint8_t   __pad6__:8
     
       uint8_t   Sum2:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin160 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @21

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::pad0[6]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::pad1[5]
    -
    - -
    -
    - -

    ◆ pad2

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::pad2[2]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::raw[kDaikin160StateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::Sum2
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Daikin160Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol-members.html deleted file mode 100644 index 903dabb24..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol-members.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin176Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol.html deleted file mode 100644 index 3bf5020ad..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin176Protocol.html +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin176Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin176Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin176 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kDaikin176StateLength]
     The state of the IR remote. More...
     
    struct {
       uint8_t   pad0 [6]
     
       uint8_t   Sum1:8
     
       uint8_t   pad1 [5]
     
       uint8_t   __pad0__:4
     
       uint8_t   AltMode:3
     
       uint8_t   __pad1__:1
     
       uint8_t   ModeButton:8
     
       uint8_t   Power:1
     
       uint8_t   __pad2__:3
     
       uint8_t   Mode:3
     
       uint8_t   __pad3__:1
     
       uint8_t   pad2 [2]
     
       uint8_t   __pad4__:1
     
       uint8_t   Temp:6
     
       uint8_t   __pad5__:1
     
       uint8_t   SwingH:4
     
       uint8_t   Fan:4
     
       uint8_t   pad3 [2]
     
       uint8_t   Sum2:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin176 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @23

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ AltMode

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::AltMode
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::Mode
    -
    - -
    -
    - -

    ◆ ModeButton

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::ModeButton
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::pad0[6]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::pad1[5]
    -
    - -
    -
    - -

    ◆ pad2

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::pad2[2]
    -
    - -
    -
    - -

    ◆ pad3

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::pad3[2]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::raw[kDaikin176StateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::Sum2
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::SwingH
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Daikin176Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol-members.html deleted file mode 100644 index 1f8c63857..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin216Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol.html deleted file mode 100644 index ec575cee8..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin216Protocol.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin216Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin216Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin216 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kDaikin216StateLength]
     The state of the IR remote. More...
     
    struct {
       uint8_t   pad0 [7]
     
       uint8_t   Sum1:8
     
       uint8_t   pad1 [5]
     
       uint8_t   Power:1
     
       uint8_t   __pad0__:3
     
       uint8_t   Mode:3
     
       uint8_t   __pad1__:1
     
       uint8_t   __pad2__:1
     
       uint8_t   Temp:6
     
       uint8_t   __pad3__:1
     
       uint8_t   __pad4__:8
     
       uint8_t   SwingV:4
     
       uint8_t   Fan:4
     
       uint8_t   SwingH:4
     
       uint8_t   __pad5__:4
     
       uint8_t   pad2 [3]
     
       uint8_t   Powerful:1
     
       uint8_t   __pad6__:0
     
       uint8_t   pad3 [4]
     
       uint8_t   Sum2:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin216 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @19

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::pad0[7]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::pad1[5]
    -
    - -
    -
    - -

    ◆ pad2

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::pad2[3]
    -
    - -
    -
    - -

    ◆ pad3

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::pad3[4]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Power
    -
    - -
    -
    - -

    ◆ Powerful

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Powerful
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::raw[kDaikin216StateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Sum2
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Daikin216Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol-members.html deleted file mode 100644 index 027fbd3ca..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol-members.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin2Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol.html deleted file mode 100644 index bebcac8b4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin2Protocol.html +++ /dev/null @@ -1,996 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin2Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin2Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin2 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    struct {
       uint8_t   pad [3]
     
       uint8_t   raw [kDaikin2StateLength]
     The state of the IR remote. More...
     
    }; 
     
    struct {
       uint64_t   __pad0__:64
     
       uint64_t   CurrentTime:12
     
       uint64_t   __pad1__:3
     
       uint64_t   Power2:1
     
       uint64_t   __pad2__:4
     
       uint64_t   Light:2
     
       uint64_t   Beep:2
     
       uint64_t   FreshAir:1
     
       uint64_t   __pad3__:2
     
       uint64_t   Mold:1
     
       uint64_t   __pad4__:1
     
       uint64_t   Clean:1
     
       uint64_t   __pad5__:1
     
       uint64_t   FreshAirHigh:1
     
       uint64_t   __pad6__:32
     
       uint64_t   __pad7__:7
     
       uint64_t   EyeAuto:1
     
       uint64_t   __pad8__:24
     
       uint64_t   SwingH:8
     
       uint64_t   SwingV:4
     
       uint64_t   __pad9__:4
     
       uint64_t   Sum1:8
     
       uint64_t   __pad10__:8
     
       uint64_t   __pad11__:32
     
       uint64_t   Power:1
     
       uint64_t   OnTimer:1
     
       uint64_t   OffTimer:1
     
       uint64_t   __pad12__:1
     
       uint64_t   Mode:3
     
       uint64_t   __pad13__:1
     
       uint64_t   __pad14__:1
     
       uint64_t   Temp:7
     
       uint64_t   __pad15__:8
     
       uint64_t   __pad16__:4
     
       uint64_t   Fan:4
     
       uint64_t   __pad17__:8
     
       uint64_t   OnTime:12
     
       uint64_t   OffTime:12
     
       uint64_t   Powerful:1
     
       uint64_t   __pad18__:4
     
       uint64_t   Quiet:1
     
       uint64_t   __pad19__:2
     
       uint64_t   __pad20__:16
     
       uint64_t   __pad21__:1
     
       uint64_t   Eye:1
     
       uint64_t   Econo:1
     
       uint64_t   __pad22__:1
     
       uint64_t   Purify:1
     
       uint64_t   SleepTimer:1
     
       uint64_t   __pad23__:2
     
       uint8_t   __pad24__:8
     
       uint8_t   Sum2:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin2 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @15

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ @17

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad13__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad13__
    -
    - -
    -
    - -

    ◆ __pad14__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad14__
    -
    - -
    -
    - -

    ◆ __pad15__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad15__
    -
    - -
    -
    - -

    ◆ __pad16__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad16__
    -
    - -
    -
    - -

    ◆ __pad17__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad17__
    -
    - -
    -
    - -

    ◆ __pad18__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad18__
    -
    - -
    -
    - -

    ◆ __pad19__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad19__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad20__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad20__
    -
    - -
    -
    - -

    ◆ __pad21__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad21__
    -
    - -
    -
    - -

    ◆ __pad22__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad22__
    -
    - -
    -
    - -

    ◆ __pad23__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad23__
    -
    - -
    -
    - -

    ◆ __pad24__

    - -
    -
    - - - - -
    uint8_t Daikin2Protocol::__pad24__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::__pad9__
    -
    - -
    -
    - -

    ◆ Beep

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Beep
    -
    - -
    -
    - -

    ◆ Clean

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Clean
    -
    - -
    -
    - -

    ◆ CurrentTime

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::CurrentTime
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Econo
    -
    - -
    -
    - -

    ◆ Eye

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Eye
    -
    - -
    -
    - -

    ◆ EyeAuto

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::EyeAuto
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Fan
    -
    - -
    -
    - -

    ◆ FreshAir

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::FreshAir
    -
    - -
    -
    - -

    ◆ FreshAirHigh

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::FreshAirHigh
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Mode
    -
    - -
    -
    - -

    ◆ Mold

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Mold
    -
    - -
    -
    - -

    ◆ OffTime

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::OffTime
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnTime

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::OnTime
    -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::OnTimer
    -
    - -
    -
    - -

    ◆ pad

    - -
    -
    - - - - -
    uint8_t Daikin2Protocol::pad[3]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Power
    -
    - -
    -
    - -

    ◆ Power2

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Power2
    -
    - -
    -
    - -

    ◆ Powerful

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Powerful
    -
    - -
    -
    - -

    ◆ Purify

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Purify
    -
    - -
    -
    - -

    ◆ Quiet

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Quiet
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Daikin2Protocol::raw[kDaikin2StateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ SleepTimer

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::SleepTimer
    -
    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t Daikin2Protocol::Sum2
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t Daikin2Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol-members.html deleted file mode 100644 index 5df0481aa..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Daikin64Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol.html deleted file mode 100644 index aca611b2c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikin64Protocol.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -IRremoteESP8266: Daikin64Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Daikin64Protocol Union Reference
    -
    -
    - -

    Native representation of a Daikin64 A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     The state of the IR remote. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Mode:4
     
       uint8_t   Fan:4
     
       uint8_t   ClockMins:8
     
       uint8_t   ClockHours:8
     
       uint8_t   OnHours:6
     
       uint8_t   OnHalfHour:1
     
       uint8_t   OnTimer:1
     
       uint8_t   OffHours:6
     
       uint8_t   OffHalfHour:1
     
       uint8_t   OffTimer:1
     
       uint8_t   Temp:8
     
       uint8_t   SwingV:1
     
       uint8_t   Sleep:1
     
       uint8_t   __pad1__:1
     
       uint8_t   Power:1
     
       uint8_t   Sum:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin64 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @29

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ ClockHours

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::ClockHours
    -
    - -
    -
    - -

    ◆ ClockMins

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::ClockMins
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::Mode
    -
    - -
    -
    - -

    ◆ OffHalfHour

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::OffHalfHour
    -
    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::OffHours
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnHalfHour

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::OnHalfHour
    -
    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::OnHours
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::OnTimer
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t Daikin64Protocol::raw
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::Sum
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Daikin64Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol-members.html deleted file mode 100644 index 8fbb216df..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol-members.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    DaikinESPProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol.html deleted file mode 100644 index 834bcc308..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDaikinESPProtocol.html +++ /dev/null @@ -1,770 +0,0 @@ - - - - - - - -IRremoteESP8266: DaikinESPProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    DaikinESPProtocol Union Reference
    -
    -
    - -

    Native representation of a Daikin A/C message. - More...

    - -

    #include <ir_Daikin.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kDaikinStateLength]
     The state of the IR remote. More...
     
    struct {
       uint64_t   __pad0__:48
     
       uint64_t   __pad1__:4
     
       uint64_t   Comfort:1
     
       uint64_t   __pad2__:3
     
       uint64_t   Sum1:8
     
       uint64_t   __pad3__:40
     
       uint64_t   CurrentTime:11
     
       uint64_t   CurrentDay:3
     
       uint64_t   __pad4__:2
     
       uint64_t   Sum2:8
     
       uint64_t   __pad5__:40
     
       uint64_t   Power:1
     
       uint64_t   OnTimer:1
     
       uint64_t   OffTimer:1
     
       uint64_t   __pad6__:1
     
       uint64_t   Mode:3
     
       uint64_t   __pad7__:1
     
       uint64_t   __pad8__:1
     
       uint64_t   Temp:7
     
       uint64_t   __pad9__:8
     
       uint64_t   SwingV:4
     
       uint64_t   Fan:4
     
       uint64_t   SwingH:4
     
       uint64_t   __pad10__:4
     
       uint64_t   OnTime:12
     
       uint64_t   OffTime:12
     
       uint64_t   Powerful:1
     
       uint64_t   __pad11__:4
     
       uint64_t   Quiet:1
     
       uint64_t   __pad12__:2
     
       uint64_t   __pad13__:0
     
       uint8_t   __pad14__:1
     
       uint8_t   Sensor:1
     
       uint8_t   Econo:1
     
       uint8_t   __pad15__:4
     
       uint8_t   WeeklyTimer:1
     
       uint8_t   __pad16__:1
     
       uint8_t   Mold:1
     
       uint8_t   __pad17__:6
     
       uint8_t   Sum3:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Daikin A/C message.

    -

    Member Data Documentation

    - -

    ◆ @13

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad13__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad13__
    -
    - -
    -
    - -

    ◆ __pad14__

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::__pad14__
    -
    - -
    -
    - -

    ◆ __pad15__

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::__pad15__
    -
    - -
    -
    - -

    ◆ __pad16__

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::__pad16__
    -
    - -
    -
    - -

    ◆ __pad17__

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::__pad17__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Comfort

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Comfort
    -
    - -
    -
    - -

    ◆ CurrentDay

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::CurrentDay
    -
    - -
    -
    - -

    ◆ CurrentTime

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::CurrentTime
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::Econo
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Mode
    -
    - -
    -
    - -

    ◆ Mold

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::Mold
    -
    - -
    -
    - -

    ◆ OffTime

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::OffTime
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnTime

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::OnTime
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::OnTimer
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Power
    -
    - -
    -
    - -

    ◆ Powerful

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Powerful
    -
    - -
    -
    - -

    ◆ Quiet

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Quiet
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::raw[kDaikinStateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sensor

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::Sensor
    -
    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Sum2
    -
    - -
    -
    - -

    ◆ Sum3

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::Sum3
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t DaikinESPProtocol::Temp
    -
    - -
    -
    - -

    ◆ WeeklyTimer

    - -
    -
    - - - - -
    uint8_t DaikinESPProtocol::WeeklyTimer
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol-members.html deleted file mode 100644 index 92b23cadf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    DelonghiProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol.html deleted file mode 100644 index 1bb507606..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionDelonghiProtocol.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - - - - -IRremoteESP8266: DelonghiProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    DelonghiProtocol Union Reference
    -
    -
    - -

    Native representation of a Delonghi A/C message. - More...

    - -

    #include <ir_Delonghi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     The state of the IR remote. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Temp:5
     
       uint8_t   Fan:2
     
       uint8_t   Fahrenheit:1
     
       uint8_t   Power:1
     
       uint8_t   Mode:3
     
       uint8_t   Boost:1
     
       uint8_t   Sleep:1
     
       uint8_t   __pad1__:2
     
       uint8_t   OnTimer:1
     
       uint8_t   OnHours:5
     
       uint8_t   __pad2__:2
     
       uint8_t   OnMins:6
     
       uint8_t   __pad3__:2
     
       uint8_t   OffTimer:1
     
       uint8_t   OffHours:5
     
       uint8_t   __pad4__:2
     
       uint8_t   OffMins:6
     
       uint8_t   __pad5__:2
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Delonghi A/C message.

    -

    Member Data Documentation

    - -

    ◆ @31

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ Boost

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Boost
    -
    - -
    -
    - -

    ◆ Fahrenheit

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Fahrenheit
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::OffHours
    -
    - -
    -
    - -

    ◆ OffMins

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::OffMins
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::OnHours
    -
    - -
    -
    - -

    ◆ OnMins

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::OnMins
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::OnTimer
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t DelonghiProtocol::raw
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t DelonghiProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol-members.html deleted file mode 100644 index 41ebaa544..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    EcoclimProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol.html deleted file mode 100644 index ba53d67ee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionEcoclimProtocol.html +++ /dev/null @@ -1,428 +0,0 @@ - - - - - - - -IRremoteESP8266: EcoclimProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    EcoclimProtocol Union Reference
    -
    -
    - -

    Native representation of a Ecoclim A/C message. - More...

    - -

    #include <ir_Ecoclim.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     The state in IR code form. More...
     
    struct {
       uint64_t   __pad0__:3
     Fixed 0b010. More...
     
       uint64_t   __pad1__:1
     Unknown. More...
     
       uint64_t   DipConfig:4
     0b0000 = Master, 0b0111 = Slave More...
     
       uint64_t   OffTenMins:3
     Off Timer minutes (in tens of mins) More...
     
       uint64_t   OffHours:5
     Off Timer nr of Hours. More...
     
       uint64_t   OnTenMins:3
     On Timer minutes (in tens of mins) More...
     
       uint64_t   OnHours:5
     On Timer nr of Hours. More...
     
       uint64_t   Clock:11
     
       uint64_t   __pad2__:1
     Unknown. More...
     
       uint64_t   Fan:2
     Fan Speed. More...
     
       uint64_t   Power:1
     Power control. More...
     
       uint64_t   Clear:1
     
       uint64_t   Temp:5
     Desired Temperature (Celsius) More...
     
       uint64_t   Mode:3
     Operating Mode. More...
     
       uint64_t   SensorTemp:5
     Sensed Temperature (Celsius) More...
     
       uint64_t   __pad3__:3
     Fixed. More...
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Ecoclim A/C message.

    -

    Member Data Documentation

    - -

    ◆ @33

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::__pad0__
    -
    - -

    Fixed 0b010.

    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::__pad1__
    -
    - -

    Unknown.

    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::__pad2__
    -
    - -

    Unknown.

    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::__pad3__
    -
    - -

    Fixed.

    - -
    -
    - -

    ◆ Clear

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::Clear
    -
    - -
    -
    - -

    ◆ Clock

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::Clock
    -
    - -
    -
    - -

    ◆ DipConfig

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::DipConfig
    -
    - -

    0b0000 = Master, 0b0111 = Slave

    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::Fan
    -
    - -

    Fan Speed.

    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::Mode
    -
    - -

    Operating Mode.

    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::OffHours
    -
    - -

    Off Timer nr of Hours.

    - -
    -
    - -

    ◆ OffTenMins

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::OffTenMins
    -
    - -

    Off Timer minutes (in tens of mins)

    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::OnHours
    -
    - -

    On Timer nr of Hours.

    - -
    -
    - -

    ◆ OnTenMins

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::OnTenMins
    -
    - -

    On Timer minutes (in tens of mins)

    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::Power
    -
    - -

    Power control.

    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::raw
    -
    - -

    The state in IR code form.

    - -
    -
    - -

    ◆ SensorTemp

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::SensorTemp
    -
    - -

    Sensed Temperature (Celsius)

    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t EcoclimProtocol::Temp
    -
    - -

    Desired Temperature (Celsius)

    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol-members.html deleted file mode 100644 index 65b742ce4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol-members.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    ElectraProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol.html deleted file mode 100644 index e9daab680..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionElectraProtocol.html +++ /dev/null @@ -1,498 +0,0 @@ - - - - - - - -IRremoteESP8266: ElectraProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    ElectraProtocol Union Reference
    -
    -
    - -

    Native representation of a Electra A/C message. - More...

    - -

    #include <ir_Electra.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kElectraAcStateLength]
     The state of the IR remote. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   SwingV:3
     
       uint8_t   Temp:5
     
       uint8_t   __pad1__:5
     
       uint8_t   SwingH:3
     
       uint8_t   __pad2__:8
     
       uint8_t   __pad3__:5
     
       uint8_t   Fan:3
     
       uint8_t   __pad4__:6
     
       uint8_t   Turbo:1
     
       uint8_t   __pad5__:1
     
       uint8_t   __pad6__:5
     
       uint8_t   Mode:3
     
       uint8_t   __pad7__:8
     
       uint8_t   __pad8__:8
     
       uint8_t   __pad9__:2
     
       uint8_t   Clean:1
     
       uint8_t   __pad10__:2
     
       uint8_t   Power:1
     
       uint8_t   __pad11__:2
     
       uint8_t   __pad12__:8
     
       uint8_t   LightToggle:8
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Electra A/C message.

    -

    Member Data Documentation

    - -

    ◆ @35

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Clean

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Clean
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Fan
    -
    - -
    -
    - -

    ◆ LightToggle

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::LightToggle
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::raw[kElectraAcStateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Sum
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Temp
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t ElectraProtocol::Turbo
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol-members.html deleted file mode 100644 index a21ff7586..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol-members.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    FujitsuProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol.html deleted file mode 100644 index 754cc9ddb..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionFujitsuProtocol.html +++ /dev/null @@ -1,643 +0,0 @@ - - - - - - - -IRremoteESP8266: FujitsuProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    FujitsuProtocol Union Reference
    -
    -
    - -

    Native representation of a Fujitsu A/C message. - More...

    - -

    #include <ir_Fujitsu.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    struct {
       uint8_t   longcode [kFujitsuAcStateLength]
     The state of the IR remote. More...
     
       uint8_t   shortcode [kFujitsuAcStateLengthShort]
     
    }; 
     
    struct {
       uint64_t   __pad0__:16
     
       uint64_t   __pad1__:4
     
       uint64_t   Id:2
     
       uint64_t   __pad2__:2
     
       uint64_t   __pad3__:16
     
       uint64_t   Cmd:8
     
       uint64_t   RestLength:8
     
       uint64_t   Protocol:8
     
       uint64_t   Power:1
     
       uint64_t   Fahrenheit:1
     
       uint64_t   Temp:6
     
       uint64_t   Mode:3
     
       uint64_t   Clean:1
     
       uint64_t   TimerType:2
     
       uint64_t   __pad4__:2
     
       uint64_t   Fan:3
     
       uint64_t   __pad5__:1
     
       uint64_t   Swing:2
     
       uint64_t   __pad6__:2
     
       uint64_t   OffTimer:11
     
       uint64_t   OffTimerEnable:1
     
       uint64_t   OnTimer:11
     
       uint64_t   OnTimerEnable:1
     
       uint64_t   __pad7__:3
     
       uint64_t   Filter:1
     
       uint64_t   __pad8__:1
     
       uint64_t   unknown:1
     
       uint64_t   __pad9__:1
     
       uint64_t   OutsideQuiet:1
     
       uint64_t   __pad10__:0
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Fujitsu A/C message.

    -

    Member Data Documentation

    - -

    ◆ @37

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ @39

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Clean

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Clean
    -
    - -
    -
    - -

    ◆ Cmd

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Cmd
    -
    - -
    -
    - -

    ◆ Fahrenheit

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Fahrenheit
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Fan
    -
    - -
    -
    - -

    ◆ Filter

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Filter
    -
    - -
    -
    - -

    ◆ Id

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Id
    -
    - -
    -
    - -

    ◆ longcode

    - -
    -
    - - - - -
    uint8_t FujitsuProtocol::longcode[kFujitsuAcStateLength]
    -
    - -

    The state of the IR remote.

    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ OffTimerEnable

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::OffTimerEnable
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::OnTimer
    -
    - -
    -
    - -

    ◆ OnTimerEnable

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::OnTimerEnable
    -
    - -
    -
    - -

    ◆ OutsideQuiet

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::OutsideQuiet
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Power
    -
    - -
    -
    - -

    ◆ Protocol

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Protocol
    -
    - -
    -
    - -

    ◆ RestLength

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::RestLength
    -
    - -
    -
    - -

    ◆ shortcode

    - -
    -
    - - - - -
    uint8_t FujitsuProtocol::shortcode[kFujitsuAcStateLengthShort]
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::Temp
    -
    - -
    -
    - -

    ◆ TimerType

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::TimerType
    -
    - -
    -
    - -

    ◆ unknown

    - -
    -
    - - - - -
    uint64_t FujitsuProtocol::unknown
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol-members.html deleted file mode 100644 index 432f427d4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    GoodweatherProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol.html deleted file mode 100644 index 6bf0edcee..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGoodweatherProtocol.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -IRremoteESP8266: GoodweatherProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    GoodweatherProtocol Union Reference
    -
    -
    - -

    Native representation of a Goodweather A/C message. - More...

    - -

    #include <ir_Goodweather.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     The state of the IR remote in IR code form. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Light:1
     
       uint8_t   __pad1__:2
     
       uint8_t   Turbo:1
     
       uint8_t   __pad2__:0
     
       uint8_t   Command:4
     
       uint8_t   __pad3__:0
     
       uint8_t   Sleep:1
     
       uint8_t   Power:1
     
       uint8_t   Swing:2
     
       uint8_t   AirFlow:1
     
       uint8_t   Fan:2
     
       uint8_t   __pad4__:0
     
       uint8_t   Temp:4
     
       uint8_t   __pad5__:1
     
       uint8_t   Mode:3
     
       uint8_t   __pad6__:0
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Goodweather A/C message.

    -

    Member Data Documentation

    - -

    ◆ @41

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ AirFlow

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::AirFlow
    -
    - -
    -
    - -

    ◆ Command

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Command
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Fan
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t GoodweatherProtocol::raw
    -
    - -

    The state of the IR remote in IR code form.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Temp
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t GoodweatherProtocol::Turbo
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol-members.html deleted file mode 100644 index 8bafd0972..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    GreeProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol.html deleted file mode 100644 index 5be10f67c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionGreeProtocol.html +++ /dev/null @@ -1,578 +0,0 @@ - - - - - - - -IRremoteESP8266: GreeProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    GreeProtocol Union Reference
    -
    -
    - -

    Native representation of a Gree A/C message. - More...

    - -

    #include <ir_Gree.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t remote_state [kGreeStateLength]
     The state in native IR code form. More...
     
    struct {
       uint8_t   Mode:3
     
       uint8_t   Power:1
     
       uint8_t   Fan:2
     
       uint8_t   SwingAuto:1
     
       uint8_t   Sleep:1
     
       uint8_t   Temp:4
     
       uint8_t   TimerHalfHr:1
     
       uint8_t   TimerTensHr:2
     
       uint8_t   TimerEnabled:1
     
       uint8_t   TimerHours:4
     
       uint8_t   Turbo:1
     
       uint8_t   Light:1
     
       uint8_t   ModelA:1
     
       uint8_t   Xfan:1
     
       uint8_t   __pad0__:2
     
       uint8_t   TempExtraDegreeF:1
     
       uint8_t   UseFahrenheit:1
     
       uint8_t   unknown1:4
     
       uint8_t   Swing:4
     
       uint8_t   __pad1__:0
     
       uint8_t   DisplayTemp:2
     
       uint8_t   IFeel:1
     
       uint8_t   unknown2:3
     
       uint8_t   WiFi:1
     
       uint8_t   __pad2__:0
     
       uint8_t   __pad3__:8
     
       uint8_t   __pad4__:4
     
       uint8_t   Sum:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Gree A/C message.

    -

    Member Data Documentation

    - -

    ◆ @43

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t GreeProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t GreeProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t GreeProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t GreeProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t GreeProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ DisplayTemp

    - -
    -
    - - - - -
    uint8_t GreeProtocol::DisplayTemp
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Fan
    -
    - -
    -
    - -

    ◆ IFeel

    - -
    -
    - - - - -
    uint8_t GreeProtocol::IFeel
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Mode
    -
    - -
    -
    - -

    ◆ ModelA

    - -
    -
    - - - - -
    uint8_t GreeProtocol::ModelA
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Power
    -
    - -
    -
    - -

    ◆ remote_state

    - -
    -
    - - - - -
    uint8_t GreeProtocol::remote_state[kGreeStateLength]
    -
    - -

    The state in native IR code form.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Sum
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Swing
    -
    - -
    -
    - -

    ◆ SwingAuto

    - -
    -
    - - - - -
    uint8_t GreeProtocol::SwingAuto
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Temp
    -
    - -
    -
    - -

    ◆ TempExtraDegreeF

    - -
    -
    - - - - -
    uint8_t GreeProtocol::TempExtraDegreeF
    -
    - -
    -
    - -

    ◆ TimerEnabled

    - -
    -
    - - - - -
    uint8_t GreeProtocol::TimerEnabled
    -
    - -
    -
    - -

    ◆ TimerHalfHr

    - -
    -
    - - - - -
    uint8_t GreeProtocol::TimerHalfHr
    -
    - -
    -
    - -

    ◆ TimerHours

    - -
    -
    - - - - -
    uint8_t GreeProtocol::TimerHours
    -
    - -
    -
    - -

    ◆ TimerTensHr

    - -
    -
    - - - - -
    uint8_t GreeProtocol::TimerTensHr
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Turbo
    -
    - -
    -
    - -

    ◆ unknown1

    - -
    -
    - - - - -
    uint8_t GreeProtocol::unknown1
    -
    - -
    -
    - -

    ◆ unknown2

    - -
    -
    - - - - -
    uint8_t GreeProtocol::unknown2
    -
    - -
    -
    - -

    ◆ UseFahrenheit

    - -
    -
    - - - - -
    uint8_t GreeProtocol::UseFahrenheit
    -
    - -
    -
    - -

    ◆ WiFi

    - -
    -
    - - - - -
    uint8_t GreeProtocol::WiFi
    -
    - -
    -
    - -

    ◆ Xfan

    - -
    -
    - - - - -
    uint8_t GreeProtocol::Xfan
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol-members.html deleted file mode 100644 index ebe72b06b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    HaierProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol.html deleted file mode 100644 index 46e2a3edd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierProtocol.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - - - - -IRremoteESP8266: HaierProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    HaierProtocol Union Reference
    -
    -
    - -

    Native representation of a Haier HSU07-HEA03 A/C message. - More...

    - -

    #include <ir_Haier.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t remote_state [kHaierACStateLength]
     < The state in native IR code form More...
     
    struct {
       uint8_t   Prefix
     
       uint8_t   Command:4
     
       uint8_t   Temp:4
     
       uint8_t   CurrHours:5
     
       uint8_t   unknown:1
     
       uint8_t   Swing:2
     
       uint8_t   CurrMins:6
     
       uint8_t   OffTimer:1
     
       uint8_t   OnTimer:1
     
       uint8_t   OffHours:5
     
       uint8_t   Health:1
     
       uint8_t   __pad0__:0
     
       uint8_t   OffMins:6
     
       uint8_t   Fan:2
     
       uint8_t   OnHours:5
     
       uint8_t   Mode:3
     
       uint8_t   OnMins:6
     
       uint8_t   Sleep:1
     
       uint8_t   __pad1__:0
     
       uint8_t   Sum
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Haier HSU07-HEA03 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @45

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t HaierProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t HaierProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ Command

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Command
    -
    - -
    -
    - -

    ◆ CurrHours

    - -
    -
    - - - - -
    uint8_t HaierProtocol::CurrHours
    -
    - -
    -
    - -

    ◆ CurrMins

    - -
    -
    - - - - -
    uint8_t HaierProtocol::CurrMins
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Fan
    -
    - -
    -
    - -

    ◆ Health

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Health
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint8_t HaierProtocol::OffHours
    -
    - -
    -
    - -

    ◆ OffMins

    - -
    -
    - - - - -
    uint8_t HaierProtocol::OffMins
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t HaierProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint8_t HaierProtocol::OnHours
    -
    - -
    -
    - -

    ◆ OnMins

    - -
    -
    - - - - -
    uint8_t HaierProtocol::OnMins
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint8_t HaierProtocol::OnTimer
    -
    - -
    -
    - -

    ◆ Prefix

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Prefix
    -
    - -
    -
    - -

    ◆ remote_state

    - -
    -
    - - - - -
    uint8_t HaierProtocol::remote_state[kHaierACStateLength]
    -
    - -

    < The state in native IR code form

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Sum
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t HaierProtocol::Temp
    -
    - -
    -
    - -

    ◆ unknown

    - -
    -
    - - - - -
    uint8_t HaierProtocol::unknown
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol-members.html deleted file mode 100644 index 2259336d1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    HaierYRW02Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol.html deleted file mode 100644 index 789bfbfcf..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHaierYRW02Protocol.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - -IRremoteESP8266: HaierYRW02Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    HaierYRW02Protocol Union Reference
    -
    -
    - -

    Native representation of a Haier YRW02 A/C message. - More...

    - -

    #include <ir_Haier.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kHaierACYRW02StateLength]
     The state in native form. More...
     
    struct {
       uint8_t   Prefix
     
       uint8_t   Swing:4
     
       uint8_t   Temp:4
     
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:1
     
       uint8_t   Health:1
     
       uint8_t   __pad2__:6
     
       uint8_t   __pad3__:6
     
       uint8_t   Power:1
     
       uint8_t   __pad4__:1
     
       uint8_t   __pad5__:5
     
       uint8_t   Fan:3
     
       uint8_t   __pad6__:6
     
       uint8_t   Turbo:2
     
       uint8_t   __pad7__:5
     
       uint8_t   Mode:3
     
       uint8_t   __pad8__:7
     
       uint8_t   Sleep:1
     
       uint8_t   __pad9__:8
     
       uint8_t   __pad10__:8
     
       uint8_t   __pad11__:8
     
       uint8_t   Button:4
     
       uint8_t   __pad12__:4
     
       uint8_t   Sum
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Haier YRW02 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @47

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::__pad9__
    -
    - -
    -
    - -

    ◆ Button

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Button
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Fan
    -
    - -
    -
    - -

    ◆ Health

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Health
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Power
    -
    - -
    -
    - -

    ◆ Prefix

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Prefix
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::raw[kHaierACYRW02StateLength]
    -
    - -

    The state in native form.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Sum
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Temp
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t HaierYRW02Protocol::Turbo
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol-members.html deleted file mode 100644 index d8c450ca6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol-members.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Hitachi1Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol.html deleted file mode 100644 index df24a5620..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi1Protocol.html +++ /dev/null @@ -1,450 +0,0 @@ - - - - - - - -IRremoteESP8266: Hitachi1Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Hitachi1Protocol Union Reference
    -
    -
    - -

    Native representation of a Hitachi 104-bit A/C message. - More...

    - -

    #include <ir_Hitachi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kHitachiAc1StateLength]
     The state in native code. More...
     
    struct {
       uint8_t   pad [3]
     
       uint8_t   __pad0__:6
     
       uint8_t   Model:2
     
       uint8_t   __pad1__:8
     
       uint8_t   Fan:4
     
       uint8_t   Mode:4
     
       uint8_t   __pad2__:2
     
       uint8_t   Temp:5
     
       uint8_t   __pad3__:1
     
       uint8_t   OffTimerLow:8
     
       uint8_t   OffTimerHigh:8
     
       uint8_t   OnTimerLow:8
     
       uint8_t   OnTimerHigh:8
     
       uint8_t   SwingToggle:1
     
       uint8_t   Sleep:3
     
       uint8_t   PowerToggle:1
     
       uint8_t   Power:1
     
       uint8_t   SwingV:1
     
       uint8_t   SwingH:1
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Hitachi 104-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @53

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Mode
    -
    - -
    -
    - -

    ◆ Model

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Model
    -
    - -
    -
    - -

    ◆ OffTimerHigh

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::OffTimerHigh
    -
    - -
    -
    - -

    ◆ OffTimerLow

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::OffTimerLow
    -
    - -
    -
    - -

    ◆ OnTimerHigh

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::OnTimerHigh
    -
    - -
    -
    - -

    ◆ OnTimerLow

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::OnTimerLow
    -
    - -
    -
    - -

    ◆ pad

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::pad[3]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Power
    -
    - -
    -
    - -

    ◆ PowerToggle

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::PowerToggle
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::raw[kHitachiAc1StateLength]
    -
    - -

    The state in native code.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Sum
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingToggle

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::SwingToggle
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Hitachi1Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol-members.html deleted file mode 100644 index bb76ce41c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Hitachi424Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol.html deleted file mode 100644 index a933ab237..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachi424Protocol.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -IRremoteESP8266: Hitachi424Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Hitachi424Protocol Union Reference
    -
    -
    - -

    Native representation of a Hitachi 53-byte/424-bit A/C message. - More...

    - -

    #include <ir_Hitachi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kHitachiAc424StateLength]
     The state in native code. More...
     
    struct {
       uint8_t   pad0 [11]
     
       uint8_t   Button:8
     
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:2
     
       uint8_t   Temp:6
     
       uint8_t   pad1 [11]
     
       uint8_t   Mode:4
     
       uint8_t   Fan:4
     
       uint8_t   __pad2__:8
     
       uint8_t   Power:8
     
       uint8_t   pad2 [7]
     
       uint8_t   SwingH:3
     
       uint8_t   __pad3__:5
     
       uint8_t   __pad4__:8
     
       uint8_t   __pad5__:5
     
       uint8_t   SwingV:1
     
       uint8_t   __pad6__:2
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Hitachi 53-byte/424-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @51

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ Button

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::Button
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::pad0[11]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::pad1[11]
    -
    - -
    -
    - -

    ◆ pad2

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::pad2[7]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::raw[kHitachiAc424StateLength]
    -
    - -

    The state in native code.

    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Hitachi424Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol-members.html deleted file mode 100644 index c30c13b57..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol-members.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    HitachiProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol.html deleted file mode 100644 index 25813d827..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionHitachiProtocol.html +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - -IRremoteESP8266: HitachiProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    HitachiProtocol Union Reference
    -
    -
    - -

    Native representation of a Hitachi 224-bit A/C message. - More...

    - -

    #include <ir_Hitachi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kHitachiAcStateLength]
     The state in native code. More...
     
    struct {
       uint8_t   pad0 [10]
     
       uint8_t   Mode:8
     
       uint8_t   Temp:8
     
       uint8_t   __pad0__:8
     
       uint8_t   Fan:8
     
       uint8_t   __pad1__:7
     
       uint8_t   SwingV:1
     
       uint8_t   __pad2__:7
     
       uint8_t   SwingH:1
     
       uint8_t   __pad3__:8
     
       uint8_t   Power:1
     
       uint8_t   __pad4__:7
     
       uint8_t   pad1 [9]
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Hitachi 224-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @49

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::pad0[10]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::pad1[9]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::raw[kHitachiAcStateLength]
    -
    - -

    The state in native code.

    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::Sum
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t HitachiProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol-members.html deleted file mode 100644 index 58849749e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    KelonProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol.html deleted file mode 100644 index b1afdac0b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelonProtocol.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - -IRremoteESP8266: KelonProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    KelonProtocol Union Reference
    -
    -
    - -

    #include <ir_Kelon.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     
    struct {
       uint8_t   preamble [2]
     
       uint8_t   Fan: 2
     
       uint8_t   PowerToggle: 1
     
       uint8_t   SleepEnabled: 1
     
       uint8_t   DehumidifierGrade: 3
     
       uint8_t   SwingVToggle: 1
     
       uint8_t   Mode: 3
     
       uint8_t   TimerEnabled: 1
     
       uint8_t   Temperature: 4
     
       uint8_t   TimerHalfHour: 1
     
       uint8_t   TimerHours: 6
     
       uint8_t   SmartModeEnabled: 1
     
       uint8_t   pad1: 4
     
       uint8_t   SuperCoolEnabled1: 1
     
       uint8_t   pad2: 2
     
       uint8_t   SuperCoolEnabled2: 1
     
    }; 
     
    -

    Member Data Documentation

    - -

    ◆ @55

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ DehumidifierGrade

    - -
    -
    - - - - -
    uint8_t KelonProtocol::DehumidifierGrade
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t KelonProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t KelonProtocol::Mode
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t KelonProtocol::pad1
    -
    - -
    -
    - -

    ◆ pad2

    - -
    -
    - - - - -
    uint8_t KelonProtocol::pad2
    -
    - -
    -
    - -

    ◆ PowerToggle

    - -
    -
    - - - - -
    uint8_t KelonProtocol::PowerToggle
    -
    - -
    -
    - -

    ◆ preamble

    - -
    -
    - - - - -
    uint8_t KelonProtocol::preamble[2]
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t KelonProtocol::raw
    -
    - -
    -
    - -

    ◆ SleepEnabled

    - -
    -
    - - - - -
    uint8_t KelonProtocol::SleepEnabled
    -
    - -
    -
    - -

    ◆ SmartModeEnabled

    - -
    -
    - - - - -
    uint8_t KelonProtocol::SmartModeEnabled
    -
    - -
    -
    - -

    ◆ SuperCoolEnabled1

    - -
    -
    - - - - -
    uint8_t KelonProtocol::SuperCoolEnabled1
    -
    - -
    -
    - -

    ◆ SuperCoolEnabled2

    - -
    -
    - - - - -
    uint8_t KelonProtocol::SuperCoolEnabled2
    -
    - -
    -
    - -

    ◆ SwingVToggle

    - -
    -
    - - - - -
    uint8_t KelonProtocol::SwingVToggle
    -
    - -
    -
    - -

    ◆ Temperature

    - -
    -
    - - - - -
    uint8_t KelonProtocol::Temperature
    -
    - -
    -
    - -

    ◆ TimerEnabled

    - -
    -
    - - - - -
    uint8_t KelonProtocol::TimerEnabled
    -
    - -
    -
    - -

    ◆ TimerHalfHour

    - -
    -
    - - - - -
    uint8_t KelonProtocol::TimerHalfHour
    -
    - -
    -
    - -

    ◆ TimerHours

    - -
    -
    - - - - -
    uint8_t KelonProtocol::TimerHours
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol-members.html deleted file mode 100644 index 20a0d0d6f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    KelvinatorProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol.html deleted file mode 100644 index 6c8922c5c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionKelvinatorProtocol.html +++ /dev/null @@ -1,674 +0,0 @@ - - - - - - - -IRremoteESP8266: KelvinatorProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    KelvinatorProtocol Union Reference
    -
    -
    - -

    Native representation of a Kelvinator A/C message. - More...

    - -

    #include <ir_Kelvinator.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kKelvinatorStateLength]
     The state in IR code form. More...
     
    struct {
       uint8_t   Mode:3
     
       uint8_t   Power:1
     
       uint8_t   BasicFan:2
     
       uint8_t   VentSwing:1
     
       uint8_t   __pad0__:1
     
       uint8_t   Temp:4
     
       uint8_t   __pad1__:4
     
       uint8_t   __pad2__:4
     
       uint8_t   Turbo:1
     
       uint8_t   Light:1
     
       uint8_t   IonFilter:1
     
       uint8_t   XFan:1
     
       uint8_t   __pad3__:4
     
       uint8_t   __pad4__:2
     
       uint8_t   __pad5__:2
     
       uint8_t   SwingV:1
     
       uint8_t   __pad6__:3
     
       uint8_t   SwingH:1
     
       uint8_t   __pad7__:3
     
       uint8_t   pad0 [2]
     
       uint8_t   __pad8__:4
     
       uint8_t   Sum1:4
     
       uint8_t   pad1 [3]
     
       uint8_t   __pad9__:4
     
       uint8_t   __pad10__:2
     
       uint8_t   __pad11__:2
     
       uint8_t   __pad12__:1
     
       uint8_t   __pad13__:6
     
       uint8_t   Quiet:1
     
       uint8_t   __pad14__:8
     
       uint8_t   __pad15__:4
     
       uint8_t   Fan:3
     
       uint8_t   __pad16__:4
     
       uint8_t   Sum2:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Kelvinator A/C message.

    -

    Member Data Documentation

    - -

    ◆ @57

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad13__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad13__
    -
    - -
    -
    - -

    ◆ __pad14__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad14__
    -
    - -
    -
    - -

    ◆ __pad15__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad15__
    -
    - -
    -
    - -

    ◆ __pad16__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad16__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ BasicFan

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::BasicFan
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Fan
    -
    - -
    -
    - -

    ◆ IonFilter

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::IonFilter
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::pad0[2]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::pad1[3]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Power
    -
    - -
    -
    - -

    ◆ Quiet

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Quiet
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::raw[kKelvinatorStateLength]
    -
    - -

    The state in IR code form.

    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Sum2
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Temp
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::Turbo
    -
    - -
    -
    - -

    ◆ VentSwing

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::VentSwing
    -
    - -
    -
    - -

    ◆ XFan

    - -
    -
    - - - - -
    uint8_t KelvinatorProtocol::XFan
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol-members.html deleted file mode 100644 index 7aae985fd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol-members.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    LGProtocol Member List
    -
    -
    - -

    This is the complete list of members for LGProtocol, including all inherited members.

    - - - - - - - - - - -
    __pad0__LGProtocol
    __pad1__LGProtocol
    FanLGProtocol
    ModeLGProtocol
    PowerLGProtocol
    rawLGProtocol
    SignLGProtocol
    SumLGProtocol
    TempLGProtocol
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol.html deleted file mode 100644 index 56642d34d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionLGProtocol.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - -IRremoteESP8266: LGProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    LGProtocol Union Reference
    -
    -
    - -

    Native representation of a LG A/C message. - More...

    - -

    #include <ir_LG.h>

    - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint32_t raw
     The state of the IR remote in IR code form. More...
     
    struct {
       uint32_t   Sum:4
     
       uint32_t   Fan:3
     
       uint32_t   __pad0__:1
     
       uint32_t   Temp:4
     
       uint32_t   Mode:3
     
       uint32_t   __pad1__:3
     
       uint32_t   Power:2
     
       uint32_t   Sign:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a LG A/C message.

    -

    Member Data Documentation

    - -

    ◆ @59

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint32_t LGProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint32_t LGProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint32_t LGProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint32_t LGProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint32_t LGProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint32_t LGProtocol::raw
    -
    - -

    The state of the IR remote in IR code form.

    - -
    -
    - -

    ◆ Sign

    - -
    -
    - - - - -
    uint32_t LGProtocol::Sign
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint32_t LGProtocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint32_t LGProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol-members.html deleted file mode 100644 index d35959cda..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    MideaProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol.html deleted file mode 100644 index a840ec44b..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMideaProtocol.html +++ /dev/null @@ -1,410 +0,0 @@ - - - - - - - -IRremoteESP8266: MideaProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    MideaProtocol Union Reference
    -
    -
    - -

    Native representation of a Midea A/C message. - More...

    - -

    #include <ir_Midea.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t remote_state
     The state in native IR code form. More...
     
    struct {
       uint8_t   Sum
     
       uint8_t   SensorTemp:7
     Degrees or OnTimer. More...
     
       uint8_t   disableSensor:1
     
       uint8_t   __pad0__:1
     
       uint8_t   OffTimer:6
     Nr of Half hours. Off is 0b111111. More...
     
       uint8_t   BeepDisable:1
     0 = no beep in follow me messages, 1 = beep. More...
     
       uint8_t   Temp:5
     
       uint8_t   useFahrenheit:1
     
       uint8_t   __pad1__:0
     
       uint8_t   Mode:3
     
       uint8_t   Fan:2
     
       uint8_t   __pad2__:1
     Unknown, but set on some Pioneer System A/Cs. More...
     
       uint8_t   Sleep:1
     
       uint8_t   Power:1
     
       uint8_t   Type:3
     Normal, Special, or FollowMe message type. More...
     
       uint8_t   Header:5
     Typically 0b10100. More...
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Midea A/C message.

    -
    Note
    Compile-time model specific overrides. Uncomment one of these if you have such a devices to better match your A/C. It changes some of the special commands/settings.
    -
    -Some Pioneer Systems have required a special bit to be set in order for the A/C unit to accept the message. We don't currently understand what this bit does. See the link for details of how to set this if needed.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1342#issuecomment-733721085
    -

    Member Data Documentation

    - -

    ◆ @62

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t MideaProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t MideaProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t MideaProtocol::__pad2__
    -
    - -

    Unknown, but set on some Pioneer System A/Cs.

    -
    Todo:
    Find out what this bit controls.
    -
    See also
    https://github.com/crankyoldgit/IRremoteESP8266/issues/1342#issuecomment-733721085
    - -
    -
    - -

    ◆ BeepDisable

    - -
    -
    - - - - -
    uint8_t MideaProtocol::BeepDisable
    -
    - -

    0 = no beep in follow me messages, 1 = beep.

    - -
    -
    - -

    ◆ disableSensor

    - -
    -
    - - - - -
    uint8_t MideaProtocol::disableSensor
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Fan
    -
    - -
    -
    - -

    ◆ Header

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Header
    -
    - -

    Typically 0b10100.

    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t MideaProtocol::OffTimer
    -
    - -

    Nr of Half hours. Off is 0b111111.

    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Power
    -
    - -
    -
    - -

    ◆ remote_state

    - -
    -
    - - - - -
    uint64_t MideaProtocol::remote_state
    -
    - -

    The state in native IR code form.

    - -
    -
    - -

    ◆ SensorTemp

    - -
    -
    - - - - -
    uint8_t MideaProtocol::SensorTemp
    -
    - -

    Degrees or OnTimer.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Temp
    -
    - -
    -
    - -

    ◆ Type

    - -
    -
    - - - - -
    uint8_t MideaProtocol::Type
    -
    - -

    Normal, Special, or FollowMe message type.

    - -
    -
    - -

    ◆ useFahrenheit

    - -
    -
    - - - - -
    uint8_t MideaProtocol::useFahrenheit
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol-members.html deleted file mode 100644 index b8d5981ed..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Mitsubishi112Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol.html deleted file mode 100644 index 40d932cf5..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi112Protocol.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - -IRremoteESP8266: Mitsubishi112Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Mitsubishi112Protocol Union Reference
    -
    -
    - -

    Native representation of a Mitsubishi 112-bit A/C message. - More...

    - -

    #include <ir_Mitsubishi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kMitsubishi112StateLength]
     The state in code form. More...
     
    struct {
       uint8_t   pad0 [5]
     
       uint8_t   __pad0__:2
     
       uint8_t   Power:1
     
       uint8_t   __pad1__:5
     
       uint8_t   Mode:3
     
       uint8_t   __pad2__:5
     
       uint8_t   Temp:4
     
       uint8_t   __pad3__:4
     
       uint8_t   Fan:3
     
       uint8_t   SwingV:3
     
       uint8_t   __pad4__:2
     
       uint8_t   pad1 [3]
     
       uint8_t   __pad5__:2
     
       uint8_t   SwingH:4
     
       uint8_t   __pad6__:2
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Mitsubishi 112-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @68

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::pad0[5]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::pad1[3]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::raw[kMitsubishi112StateLength]
    -
    - -

    The state in code form.

    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::Sum
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Mitsubishi112Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol-members.html deleted file mode 100644 index ba3fd853c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Mitsubishi136Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol.html deleted file mode 100644 index 7de33feb6..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi136Protocol.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - -IRremoteESP8266: Mitsubishi136Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Mitsubishi136Protocol Union Reference
    -
    -
    - -

    Native representation of a Mitsubishi 136-bit A/C message. - More...

    - -

    #include <ir_Mitsubishi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kMitsubishi136StateLength]
     The state in code form. More...
     
    struct {
       uint8_t   pad [5]
     
       uint8_t   __pad0__:6
     
       uint8_t   Power:1
     
       uint8_t   __pad1__:1
     
       uint8_t   Mode:3
     
       uint8_t   __pad2__:1
     
       uint8_t   Temp:4
     
       uint8_t   __pad3__:1
     
       uint8_t   Fan:2
     
       uint8_t   __pad4__:1
     
       uint8_t   SwingV:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Mitsubishi 136-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @66

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::pad[5]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::raw[kMitsubishi136StateLength]
    -
    - -

    The state in code form.

    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Mitsubishi136Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol-members.html deleted file mode 100644 index 8eba0cc7a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol-members.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Mitsubishi144Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol.html deleted file mode 100644 index 2519e81b9..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi144Protocol.html +++ /dev/null @@ -1,514 +0,0 @@ - - - - - - - -IRremoteESP8266: Mitsubishi144Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Mitsubishi144Protocol Union Reference
    -
    -
    - -

    Native representation of a Mitsubishi 144-bit A/C message. - More...

    - -

    #include <ir_Mitsubishi.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kMitsubishiACStateLength]
     The state in code form. More...
     
    struct {
       uint8_t   pad0 [5]
     
       uint8_t   __pad0__:5
     
       uint8_t   Power:1
     
       uint8_t   __pad1__:2
     
       uint8_t   __pad2__:3
     
       uint8_t   Mode:3
     
       uint8_t   __pad3__:2
     
       uint8_t   Temp:4
     
       uint8_t   HalfDegree:1
     
       uint8_t   __pad4__:3
     
       uint8_t   __pad5__:4
     
       uint8_t   WideVane:4
     
       uint8_t   Fan:3
     
       uint8_t   Vane:3
     
       uint8_t   VaneBit:1
     
       uint8_t   FanAuto:1
     
       uint8_t   Clock:8
     
       uint8_t   StopClock:8
     
       uint8_t   StartClock:8
     
       uint8_t   Timer:3
     
       uint8_t   WeeklyTimer:1
     
       uint8_t   __pad6__:4
     
       uint8_t   pad1 [3]
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Mitsubishi 144-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @64

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ Clock

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Clock
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Fan
    -
    - -
    -
    - -

    ◆ FanAuto

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::FanAuto
    -
    - -
    -
    - -

    ◆ HalfDegree

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::HalfDegree
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::pad0[5]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::pad1[3]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::raw[kMitsubishiACStateLength]
    -
    - -

    The state in code form.

    - -
    -
    - -

    ◆ StartClock

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::StartClock
    -
    - -
    -
    - -

    ◆ StopClock

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::StopClock
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Temp
    -
    - -
    -
    - -

    ◆ Timer

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Timer
    -
    - -
    -
    - -

    ◆ Vane

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::Vane
    -
    - -
    -
    - -

    ◆ VaneBit

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::VaneBit
    -
    - -
    -
    - -

    ◆ WeeklyTimer

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::WeeklyTimer
    -
    - -
    -
    - -

    ◆ WideVane

    - -
    -
    - - - - -
    uint8_t Mitsubishi144Protocol::WideVane
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol-members.html deleted file mode 100644 index b48287b60..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Mitsubishi152Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol.html deleted file mode 100644 index f5ebc382f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi152Protocol.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - -IRremoteESP8266: Mitsubishi152Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Mitsubishi152Protocol Union Reference
    -
    -
    - -

    Native representation of a Mitsubishi Heavy 152-bit A/C message. - More...

    - -

    #include <ir_MitsubishiHeavy.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kMitsubishiHeavy152StateLength]
     State in code form. More...
     
    struct {
       uint8_t   Sig [5]
     
       uint8_t   Mode:3
     
       uint8_t   Power:1
     
       uint8_t   __pad0__:1
     
       uint8_t   Clean:1
     
       uint8_t   Filter:1
     
       uint8_t   __pad1__:1
     
       uint8_t   __pad2__:8
     
       uint8_t   Temp:4
     
       uint8_t   __pad3__:4
     
       uint8_t   __pad4__:8
     
       uint8_t   Fan:4
     
       uint8_t   __pad5__:4
     
       uint8_t   __pad6__:8
     
       uint8_t   __pad7__:1
     
       uint8_t   Three:1
     
       uint8_t   __pad8__:2
     
       uint8_t   D:1
     
       uint8_t   SwingV:3
     
       uint8_t   __pad9__:8
     
       uint8_t   SwingH:4
     
       uint8_t   __pad10__:4
     
       uint8_t   __pad11__:8
     
       uint8_t   __pad12__:6
     
       uint8_t   Night:1
     
       uint8_t   Silent:1
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Mitsubishi Heavy 152-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @70

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::__pad9__
    -
    - -
    -
    - -

    ◆ Clean

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Clean
    -
    - -
    -
    - -

    ◆ D

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::D
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Fan
    -
    - -
    -
    - -

    ◆ Filter

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Filter
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Mode
    -
    - -
    -
    - -

    ◆ Night

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Night
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::raw[kMitsubishiHeavy152StateLength]
    -
    - -

    State in code form.

    - -
    -
    - -

    ◆ Sig

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Sig[5]
    -
    - -
    -
    - -

    ◆ Silent

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Silent
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Temp
    -
    - -
    -
    - -

    ◆ Three

    - -
    -
    - - - - -
    uint8_t Mitsubishi152Protocol::Three
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol-members.html deleted file mode 100644 index 8a3e46b39..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol-members.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Mitsubishi88Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol.html deleted file mode 100644 index 1a3efcd18..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionMitsubishi88Protocol.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - -IRremoteESP8266: Mitsubishi88Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Mitsubishi88Protocol Union Reference
    -
    -
    - -

    Native representation of a Mitsubishi Heavy 88-bit A/C message. - More...

    - -

    #include <ir_MitsubishiHeavy.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kMitsubishiHeavy88StateLength]
     State in code form. More...
     
    struct {
       uint8_t   Sig [5]
     
       uint8_t   __pad0__:1
     
       uint8_t   SwingV5:1
     
       uint8_t   SwingH1:2
     
       uint8_t   __pad1__:1
     
       uint8_t   Clean:1
     
       uint8_t   SwingH2:2
     
       uint8_t   __pad2__:8
     
       uint8_t   __pad3__:3
     
       uint8_t   SwingV7:2
     
       uint8_t   Fan:3
     
       uint8_t   __pad4__:8
     
       uint8_t   Mode:3
     
       uint8_t   Power:1
     
       uint8_t   Temp:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Mitsubishi Heavy 88-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @72

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ Clean

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::Clean
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::raw[kMitsubishiHeavy88StateLength]
    -
    - -

    State in code form.

    - -
    -
    - -

    ◆ Sig

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::Sig[5]
    -
    - -
    -
    - -

    ◆ SwingH1

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::SwingH1
    -
    - -
    -
    - -

    ◆ SwingH2

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::SwingH2
    -
    - -
    -
    - -

    ◆ SwingV5

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::SwingV5
    -
    - -
    -
    - -

    ◆ SwingV7

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::SwingV7
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Mitsubishi88Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol-members.html deleted file mode 100644 index e50af24a4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol-members.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    NeoclimaProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol.html deleted file mode 100644 index 648465bb4..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionNeoclimaProtocol.html +++ /dev/null @@ -1,610 +0,0 @@ - - - - - - - -IRremoteESP8266: NeoclimaProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    NeoclimaProtocol Union Reference
    -
    -
    - -

    Native representation of a Neoclima A/C message. - More...

    - -

    #include <ir_Neoclima.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kNeoclimaStateLength]
     State of the remote in code. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:1
     
       uint8_t   CHeat:1
     
       uint8_t   Ion:1
     
       uint8_t   __pad2__:5
     
       uint8_t   __pad3__:8
     
       uint8_t   Light:1
     
       uint8_t   __pad4__:1
     
       uint8_t   Hold:1
     
       uint8_t   Turbo:1
     
       uint8_t   Econo:1
     
       uint8_t   __pad5__:1
     
       uint8_t   Eye:1
     
       uint8_t   __pad6__:1
     
       uint8_t   __pad7__:8
     
       uint8_t   Button:5
     
       uint8_t   __pad8__:2
     
       uint8_t   Fresh:1
     
       uint8_t   __pad9__:8
     
       uint8_t   Sleep:1
     
       uint8_t   Power:1
     
       uint8_t   SwingV:2
     
       uint8_t   SwingH:1
     
       uint8_t   Fan:2
     
       uint8_t   UseFah:1
     
       uint8_t   Follow:8
     
       uint8_t   Temp:5
     
       uint8_t   Mode:3
     
       uint8_t   __pad10__:8
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Neoclima A/C message.

    -

    Member Data Documentation

    - -

    ◆ @74

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Button

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Button
    -
    - -
    -
    - -

    ◆ CHeat

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::CHeat
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Econo
    -
    - -
    -
    - -

    ◆ Eye

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Eye
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Fan
    -
    - -
    -
    - -

    ◆ Follow

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Follow
    -
    - -
    -
    - -

    ◆ Fresh

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Fresh
    -
    - -
    -
    - -

    ◆ Hold

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Hold
    -
    - -
    -
    - -

    ◆ Ion

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Ion
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::raw[kNeoclimaStateLength]
    -
    - -

    State of the remote in code.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Sum
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Temp
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::Turbo
    -
    - -
    -
    - -

    ◆ UseFah

    - -
    -
    - - - - -
    uint8_t NeoclimaProtocol::UseFah
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol-members.html deleted file mode 100644 index 9fae1cb3c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol-members.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    PanasonicAc32Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol.html deleted file mode 100644 index bb86be40d..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionPanasonicAc32Protocol.html +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - -IRremoteESP8266: PanasonicAc32Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    PanasonicAc32Protocol Union Reference
    -
    -
    - -

    Native representation of a Panasonic 32-bit A/C message. - More...

    - -

    #include <ir_Panasonic.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint32_t raw
     The state in IR code form. More...
     
    struct {
       uint8_t   __pad0__:3
     
       uint8_t   SwingH:1
     
       uint8_t   SwingV:3
     
       uint8_t   __pad1__:1
     Always appears to be set. (1) More...
     
       uint8_t   __pad2__:8
     
       uint8_t   Temp:4
     
       uint8_t   Fan:4
     
       uint8_t   Mode:3
     
       uint8_t   PowerToggle:1
     
       uint8_t   __pad3__:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Panasonic 32-bit A/C message.

    -

    Member Data Documentation

    - -

    ◆ @76

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::__pad1__
    -
    - -

    Always appears to be set. (1)

    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::Mode
    -
    - -
    -
    - -

    ◆ PowerToggle

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::PowerToggle
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint32_t PanasonicAc32Protocol::raw
    -
    - -

    The state in IR code form.

    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t PanasonicAc32Protocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol-members.html deleted file mode 100644 index 663fca56a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol-members.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    SamsungProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol.html deleted file mode 100644 index 77add399f..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSamsungProtocol.html +++ /dev/null @@ -1,751 +0,0 @@ - - - - - - - -IRremoteESP8266: SamsungProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    SamsungProtocol Union Reference
    -
    -
    - -

    Native representation of a Samsung A/C message. - More...

    - -

    #include <ir_Samsung.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kSamsungAcExtendedStateLength]
     State in code form. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:4
     
       uint8_t   Quiet1:1
     
       uint8_t   Power1:1
     
       uint8_t   __pad2__:2
     
       uint8_t   pad0 [3]
     
       uint8_t   __pad3__:5
     
       uint8_t   Quiet5:1
     
       uint8_t   __pad4__:2
     
       uint8_t   __pad5__:4
     
       uint8_t   Power6:2
     
       uint8_t   __pad6__:2
     
       uint8_t   __pad7__:8
     
       uint8_t   Powerful8:8
     
       uint8_t   __pad8__:4
     
       uint8_t   Swing:3
     
       uint8_t   __pad9__:1
     
       uint8_t   __pad10__:1
     
       uint8_t   Powerful10:3
     
       uint8_t   Display:1
     
       uint8_t   __pad11__:2
     
       uint8_t   Clean10:1
     
       uint8_t   Ion:1
     
       uint8_t   Clean11:1
     
       uint8_t   __pad12__:2
     
       uint8_t   Temp:4
     
       uint8_t   __pad13__:1
     
       uint8_t   Fan:3
     
       uint8_t   Mode:3
     
       uint8_t   __pad14__:1
     
       uint8_t   __pad15__:1
     
       uint8_t   Beep:1
     
       uint8_t   __pad16__:6
     
    }; 
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:4
     
       uint8_t   Sum1:4
     
       uint8_t   pad1 [6]
     
       uint8_t   __pad2__:4
     
       uint8_t   Sum2:4
     
       uint8_t   __pad3__:8
     
       uint8_t   __pad4__:1
     
       uint8_t   Breeze:3
     
       uint8_t   __pad5__:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Samsung A/C message.

    -

    Member Data Documentation

    - -

    ◆ @78

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ @80

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad13__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad13__
    -
    - -
    -
    - -

    ◆ __pad14__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad14__
    -
    - -
    -
    - -

    ◆ __pad15__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad15__
    -
    - -
    -
    - -

    ◆ __pad16__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad16__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Beep

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Beep
    -
    - -
    -
    - -

    ◆ Breeze

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Breeze
    -
    - -
    -
    - -

    ◆ Clean10

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Clean10
    -
    - -
    -
    - -

    ◆ Clean11

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Clean11
    -
    - -
    -
    - -

    ◆ Display

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Display
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Fan
    -
    - -
    -
    - -

    ◆ Ion

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Ion
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::pad0[3]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::pad1[6]
    -
    - -
    -
    - -

    ◆ Power1

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Power1
    -
    - -
    -
    - -

    ◆ Power6

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Power6
    -
    - -
    -
    - -

    ◆ Powerful10

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Powerful10
    -
    - -
    -
    - -

    ◆ Powerful8

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Powerful8
    -
    - -
    -
    - -

    ◆ Quiet1

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Quiet1
    -
    - -
    -
    - -

    ◆ Quiet5

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Quiet5
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::raw[kSamsungAcExtendedStateLength]
    -
    - -

    State in code form.

    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Sum2
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t SamsungProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol-members.html deleted file mode 100644 index b1b10dabc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    SanyoProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol.html deleted file mode 100644 index 4d2c91928..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSanyoProtocol.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - -IRremoteESP8266: SanyoProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    SanyoProtocol Union Reference
    -
    -
    - -

    Native representation of a Sanyo A/C message. - More...

    - -

    #include <ir_Sanyo.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kSanyoAcStateLength]
     The state in IR code form. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Temp:5
     
       uint8_t   __pad1__:3
     
       uint8_t   SensorTemp:5
     
       uint8_t   Sensor:1
     Sensor location (0 = remote, 1 = A/C) More...
     
       uint8_t   Beep:1
     
       uint8_t   __pad2__:1
     
       uint8_t   OffHour:4
     
       uint8_t   __pad3__:4
     
       uint8_t   Fan:2
     
       uint8_t   OffTimer:1
     
       uint8_t   __pad4__:1
     
       uint8_t   Mode:3
     
       uint8_t   __pad5__:1
     
       uint8_t   SwingV:3
     
       uint8_t   __pad6__:3
     
       uint8_t   Power:2
     
       uint8_t   __pad7__:3
     
       uint8_t   Sleep:1
     
       uint8_t   __pad8__:4
     
       uint8_t   __pad9__:8
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Sanyo A/C message.

    -

    Member Data Documentation

    - -

    ◆ @82

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Beep

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Beep
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffHour

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::OffHour
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::raw[kSanyoAcStateLength]
    -
    - -

    The state in IR code form.

    - -
    -
    - -

    ◆ Sensor

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Sensor
    -
    - -

    Sensor location (0 = remote, 1 = A/C)

    - -
    -
    - -

    ◆ SensorTemp

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::SensorTemp
    -
    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Sum
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t SanyoProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol-members.html deleted file mode 100644 index 49f2db91a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    SharpProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol.html deleted file mode 100644 index 9b4fd3962..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionSharpProtocol.html +++ /dev/null @@ -1,546 +0,0 @@ - - - - - - - -IRremoteESP8266: SharpProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    SharpProtocol Union Reference
    -
    -
    - -

    Native representation of a Sharp A/C message. - More...

    - -

    #include <ir_Sharp.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kSharpAcStateLength]
     State of the remote in IR code form. More...
     
    struct {
       uint8_t   pad [4]
     
       uint8_t   Temp:4
     
       uint8_t   Model:1
     
       uint8_t   __pad0__:3
     
       uint8_t   __pad1__:4
     
       uint8_t   PowerSpecial:4
     
       uint8_t   Mode:2
     
       uint8_t   __pad2__:1
     
       uint8_t   Clean:1
     
       uint8_t   Fan:3
     
       uint8_t   __pad3__:1
     
       uint8_t   TimerHours:4
     
       uint8_t   __pad4__:2
     
       uint8_t   TimerType:1
     
       uint8_t   TimerEnabled:1
     
       uint8_t   Swing:3
     
       uint8_t   __pad5__:5
     
       uint8_t   __pad6__:8
     
       uint8_t   Special:8
     
       uint8_t   __pad7__:2
     
       uint8_t   Ion:1
     
       uint8_t   __pad8__:1
     
       uint8_t   Model2:1
     
       uint8_t   __pad9__:3
     
       uint8_t   __pad10__:4
     
       uint8_t   Sum:4
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Sharp A/C message.

    -

    Member Data Documentation

    - -

    ◆ @84

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t SharpProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ Clean

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Clean
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Fan
    -
    - -
    -
    - -

    ◆ Ion

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Ion
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Mode
    -
    - -
    -
    - -

    ◆ Model

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Model
    -
    - -
    -
    - -

    ◆ Model2

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Model2
    -
    - -
    -
    - -

    ◆ pad

    - -
    -
    - - - - -
    uint8_t SharpProtocol::pad[4]
    -
    - -
    -
    - -

    ◆ PowerSpecial

    - -
    -
    - - - - -
    uint8_t SharpProtocol::PowerSpecial
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t SharpProtocol::raw[kSharpAcStateLength]
    -
    - -

    State of the remote in IR code form.

    - -
    -
    - -

    ◆ Special

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Special
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Sum
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t SharpProtocol::Temp
    -
    - -
    -
    - -

    ◆ TimerEnabled

    - -
    -
    - - - - -
    uint8_t SharpProtocol::TimerEnabled
    -
    - -
    -
    - -

    ◆ TimerHours

    - -
    -
    - - - - -
    uint8_t SharpProtocol::TimerHours
    -
    - -
    -
    - -

    ◆ TimerType

    - -
    -
    - - - - -
    uint8_t SharpProtocol::TimerType
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol-members.html deleted file mode 100644 index 15abf4920..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol-members.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    Tcl112Protocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol.html deleted file mode 100644 index 5f7978831..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTcl112Protocol.html +++ /dev/null @@ -1,482 +0,0 @@ - - - - - - - -IRremoteESP8266: Tcl112Protocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    Tcl112Protocol Union Reference
    -
    -
    - -

    Native representation of a TCL 112 A/C message. - More...

    - -

    #include <ir_Tcl.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kTcl112AcStateLength]
     The State in IR code form. More...
     
    struct {
       uint8_t   pad0 [5]
     
       uint8_t   __pad0__:2
     
       uint8_t   Power:1
     
       uint8_t   __pad1__:3
     
       uint8_t   Light:1
     
       uint8_t   Econo:1
     
       uint8_t   Mode:4
     
       uint8_t   Health:1
     
       uint8_t   Turbo:1
     
       uint8_t   __pad2__:2
     
       uint8_t   Temp:4
     
       uint8_t   __pad3__:4
     
       uint8_t   Fan:3
     
       uint8_t   SwingV:3
     
       uint8_t   __pad4__:2
     
       uint8_t   pad1 [3]
     
       uint8_t   __pad5__:3
     
       uint8_t   SwingH:1
     
       uint8_t   __pad6__:1
     
       uint8_t   HalfDegree:1
     
       uint8_t   __pad7__:2
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a TCL 112 A/C message.

    -

    Member Data Documentation

    - -

    ◆ @86

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::__pad7__
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Econo
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Fan
    -
    - -
    -
    - -

    ◆ HalfDegree

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::HalfDegree
    -
    - -
    -
    - -

    ◆ Health

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Health
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Mode
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::pad0[5]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::pad1[3]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::raw[kTcl112AcStateLength]
    -
    - -

    The State in IR code form.

    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Sum
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Temp
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t Tcl112Protocol::Turbo
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol-members.html deleted file mode 100644 index 94833e605..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol-members.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    TechnibelProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol.html deleted file mode 100644 index 577ddd68e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTechnibelProtocol.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - - - -IRremoteESP8266: TechnibelProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    TechnibelProtocol Union Reference
    -
    -
    - -

    Native representation of a Technibel A/C message. - More...

    - -

    #include <ir_Technibel.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     
    struct {
       uint8_t   Sum:8
     
       uint8_t   Footer:8
     
       uint8_t   TimerHours:5
     
       uint8_t   __pad0__:3
     
       uint8_t   Temp:7
     
       uint8_t   __pad1__:1
     
       uint8_t   Fan:3
     
       uint8_t   __pad2__:1
     
       uint8_t   Sleep:1
     
       uint8_t   Swing:1
     
       uint8_t   UseFah:1
     
       uint8_t   TimerEnable:1
     
       uint8_t   Mode:4
     
       uint8_t   FanChange:1
     
       uint8_t   TempChange:1
     
       uint8_t   TimerChange:1
     
       uint8_t   Power:1
     
       uint8_t   Header:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Technibel A/C message.

    -

    Member Data Documentation

    - -

    ◆ @88

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Fan
    -
    - -
    -
    - -

    ◆ FanChange

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::FanChange
    -
    - -
    -
    - -

    ◆ Footer

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Footer
    -
    - -
    -
    - -

    ◆ Header

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Header
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t TechnibelProtocol::raw
    -
    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Sum
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::Temp
    -
    - -
    -
    - -

    ◆ TempChange

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::TempChange
    -
    - -
    -
    - -

    ◆ TimerChange

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::TimerChange
    -
    - -
    -
    - -

    ◆ TimerEnable

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::TimerEnable
    -
    - -
    -
    - -

    ◆ TimerHours

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::TimerHours
    -
    - -
    -
    - -

    ◆ UseFah

    - -
    -
    - - - - -
    uint8_t TechnibelProtocol::UseFah
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol-members.html deleted file mode 100644 index dabd0c309..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol-members.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    TecoProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol.html deleted file mode 100644 index 0dd119605..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTecoProtocol.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - -IRremoteESP8266: TecoProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    TecoProtocol Union Reference
    -
    -
    - -

    Native representation of a Teco A/C message. - More...

    - -

    #include <ir_Teco.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     The state of the IR remote in IR code form. More...
     
    struct {
       uint8_t   Mode:3
     
       uint8_t   Power:1
     
       uint8_t   Fan:2
     
       uint8_t   Swing:1
     
       uint8_t   Sleep:1
     
       uint8_t   Temp:4
     
       uint8_t   HalfHour:1
     
       uint8_t   TensHours:2
     
       uint8_t   TimerOn:1
     
       uint8_t   UnitHours:4
     
       uint8_t   Humid:1
     
       uint8_t   Light:1
     
       uint8_t   __pad0__:1
     
       uint8_t   Save:1
     
       uint8_t   __pad1__:8
     
       uint8_t   __pad2__:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Teco A/C message.

    -

    Member Data Documentation

    - -

    ◆ @90

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t TecoProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t TecoProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t TecoProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Fan
    -
    - -
    -
    - -

    ◆ HalfHour

    - -
    -
    - - - - -
    uint8_t TecoProtocol::HalfHour
    -
    - -
    -
    - -

    ◆ Humid

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Humid
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t TecoProtocol::raw
    -
    - -

    The state of the IR remote in IR code form.

    - -
    -
    - -

    ◆ Save

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Save
    -
    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t TecoProtocol::Temp
    -
    - -
    -
    - -

    ◆ TensHours

    - -
    -
    - - - - -
    uint8_t TecoProtocol::TensHours
    -
    - -
    -
    - -

    ◆ TimerOn

    - -
    -
    - - - - -
    uint8_t TecoProtocol::TimerOn
    -
    - -
    -
    - -

    ◆ UnitHours

    - -
    -
    - - - - -
    uint8_t TecoProtocol::UnitHours
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol-members.html deleted file mode 100644 index c65bb7aa1..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    ToshibaProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol.html deleted file mode 100644 index c2ac867dd..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionToshibaProtocol.html +++ /dev/null @@ -1,405 +0,0 @@ - - - - - - - -IRremoteESP8266: ToshibaProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    ToshibaProtocol Union Reference
    -
    -
    - -

    Native representation of a Toshiba A/C message. - More...

    - -

    #include <ir_Toshiba.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kToshibaACStateLengthLong]
     The state in code form. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   __pad1__:8
     
       uint8_t   Length:8
     < Known lengths are: 1 (56 bit message) 3 (72 bit message) 4 (80 bit message) More...
     
       uint8_t   __pad2__:8
     
       uint8_t   __pad3__:3
     
       uint8_t   LongMsg:1
     
       uint8_t   __pad4__:1
     
       uint8_t   ShortMsg:1
     
       uint8_t   __pad5__:2
     
       uint8_t   Swing:3
     
       uint8_t   __pad6__:1
     
       uint8_t   Temp:4
     
       uint8_t   Mode:3
     
       uint8_t   __pad7__:2
     
       uint8_t   Fan:3
     
       uint8_t   __pad8__:8
     
       uint8_t   EcoTurbo:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Toshiba A/C message.

    -

    Member Data Documentation

    - -

    ◆ @92

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ EcoTurbo

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::EcoTurbo
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::Fan
    -
    - -
    -
    - -

    ◆ Length

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::Length
    -
    - -

    < Known lengths are: 1 (56 bit message) 3 (72 bit message) 4 (80 bit message)

    - -
    -
    - -

    ◆ LongMsg

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::LongMsg
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::Mode
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::raw[kToshibaACStateLengthLong]
    -
    - -

    The state in code form.

    - -
    -
    - -

    ◆ ShortMsg

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::ShortMsg
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t ToshibaProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol-members.html deleted file mode 100644 index 6eb615359..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol-members.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    TranscoldProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol.html deleted file mode 100644 index f0ba14d69..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTranscoldProtocol.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - -IRremoteESP8266: TranscoldProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    TranscoldProtocol Union Reference
    -
    -
    - -

    Native representation of a Transcold A/C message. - More...

    - -

    #include <ir_Transcold.h>

    - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint32_t raw
     The state of the IR remote in IR code form. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Temp:4
     
       uint8_t   Mode:4
     
       uint8_t   Fan:4
     
       uint8_t   __pad1__:4
     
       uint8_t   __pad2__:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Transcold A/C message.

    -

    Member Data Documentation

    - -

    ◆ @94

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t TranscoldProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t TranscoldProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t TranscoldProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t TranscoldProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t TranscoldProtocol::Mode
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint32_t TranscoldProtocol::raw
    -
    - -

    The state of the IR remote in IR code form.

    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t TranscoldProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol-members.html deleted file mode 100644 index ed5b482e2..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol-members.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    TrotecProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol.html deleted file mode 100644 index b2b874712..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrotecProtocol.html +++ /dev/null @@ -1,402 +0,0 @@ - - - - - - - -IRremoteESP8266: TrotecProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    TrotecProtocol Union Reference
    -
    -
    - -

    Native representation of a Trotec A/C message. - More...

    - -

    #include <ir_Trotec.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kTrotecStateLength]
     Remote state in IR code form. More...
     
    struct {
       uint8_t   Intro1:8
     
       uint8_t   Intro2:8
     
       uint8_t   Mode:2
     
       uint8_t   __pad0__:1
     
       uint8_t   Power:1
     
       uint8_t   Fan:2
     
       uint8_t   __pad1__:2
     
       uint8_t   Temp:4
     
       uint8_t   __pad2__:3
     
       uint8_t   Sleep:1
     
       uint8_t   __pad3__:8
     
       uint8_t   __pad4__:6
     
       uint8_t   Timer:1
     
       uint8_t   __pad5__:1
     
       uint8_t   Hours:8
     
       uint8_t   __pad6__:8
     
       uint8_t   Sum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Trotec A/C message.

    -

    Member Data Documentation

    - -

    ◆ @96

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Fan
    -
    - -
    -
    - -

    ◆ Hours

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Hours
    -
    - -
    -
    - -

    ◆ Intro1

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Intro1
    -
    - -
    -
    - -

    ◆ Intro2

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Intro2
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Mode
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::raw[kTrotecStateLength]
    -
    - -

    Remote state in IR code form.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Sum
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Temp
    -
    - -
    -
    - -

    ◆ Timer

    - -
    -
    - - - - -
    uint8_t TrotecProtocol::Timer
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol-members.html deleted file mode 100644 index c2325952a..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol-members.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    TrumaProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol.html deleted file mode 100644 index 79621988c..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionTrumaProtocol.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - -IRremoteESP8266: TrumaProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    TrumaProtocol Union Reference
    -
    -
    - -

    Native representation of a Truma A/C message. - More...

    - -

    #include <ir_Truma.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t raw
     Remote state in IR code form. More...
     
    struct {
       uint8_t   __pad0__:8
     
       uint8_t   Mode:2
     
       uint8_t   PowerOff:1
     
       uint8_t   Fan:3
     
       uint8_t   __pad1__:2
     
       uint8_t   Temp:5
     Temp in DegC minus 10(DEC). More...
     
       uint8_t   __pad2__:3
     
       uint8_t   __pad3__:8
     
       uint8_t   __pad4__:8
     
       uint8_t   __pad5__:8
     
       uint8_t   Sum:8
     Checksum value. More...
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Truma A/C message.

    -

    Member Data Documentation

    - -

    ◆ @98

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::Fan
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::Mode
    -
    - -
    -
    - -

    ◆ PowerOff

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::PowerOff
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint64_t TrumaProtocol::raw
    -
    - -

    Remote state in IR code form.

    - -
    -
    - -

    ◆ Sum

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::Sum
    -
    - -

    Checksum value.

    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t TrumaProtocol::Temp
    -
    - -

    Temp in DegC minus 10(DEC).

    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol-members.html deleted file mode 100644 index d58786771..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol-members.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    VestelProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol.html deleted file mode 100644 index 711691048..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVestelProtocol.html +++ /dev/null @@ -1,576 +0,0 @@ - - - - - - - -IRremoteESP8266: VestelProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    VestelProtocol Union Reference
    -
    -
    - -

    Native representation of a Vestel A/C message. - More...

    - -

    #include <ir_Vestel.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    struct {
       uint64_t   cmdState
     
       uint64_t   timeState
     
    }; 
     
    struct {
       uint64_t   Signature:12
     
       uint64_t   CmdSum:8
     
       uint64_t   Swing:4
     
       uint64_t   TurboSleep:4
     
       uint64_t   __pad0__:8
     
       uint64_t   Temp:4
     
       uint64_t   Fan:4
     
       uint64_t   Mode:3
     
       uint64_t   __pad1__:3
     
       uint64_t   Ion:1
     
       uint64_t   __pad2__:1
     
       uint64_t   Power:2
     
       uint64_t   UseCmd:1
     
       uint64_t   __pad3__:0
     
       uint64_t   __pad4__:12
     
       uint64_t   TimeSum:8
     
       uint64_t   OffTenMins:3
     
       uint64_t   OffHours:5
     
       uint64_t   OnTenMins:3
     
       uint64_t   OnHours:5
     
       uint64_t   Hours:5
     
       uint64_t   OnTimer:1
     
       uint64_t   OffTimer:1
     
       uint64_t   Timer:1
     
       uint64_t   Minutes:8
     
       uint64_t   __pad5__:0
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Vestel A/C message.

    -

    Member Data Documentation

    - -

    ◆ @100

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ @102

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint64_t VestelProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint64_t VestelProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint64_t VestelProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint64_t VestelProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint64_t VestelProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint64_t VestelProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ cmdState

    - -
    -
    - - - - -
    uint64_t VestelProtocol::cmdState
    -
    - -
    -
    - -

    ◆ CmdSum

    - -
    -
    - - - - -
    uint64_t VestelProtocol::CmdSum
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Fan
    -
    - -
    -
    - -

    ◆ Hours

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Hours
    -
    - -
    -
    - -

    ◆ Ion

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Ion
    -
    - -
    -
    - -

    ◆ Minutes

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Minutes
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint64_t VestelProtocol::OffHours
    -
    - -
    -
    - -

    ◆ OffTenMins

    - -
    -
    - - - - -
    uint64_t VestelProtocol::OffTenMins
    -
    - -
    -
    - -

    ◆ OffTimer

    - -
    -
    - - - - -
    uint64_t VestelProtocol::OffTimer
    -
    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint64_t VestelProtocol::OnHours
    -
    - -
    -
    - -

    ◆ OnTenMins

    - -
    -
    - - - - -
    uint64_t VestelProtocol::OnTenMins
    -
    - -
    -
    - -

    ◆ OnTimer

    - -
    -
    - - - - -
    uint64_t VestelProtocol::OnTimer
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Power
    -
    - -
    -
    - -

    ◆ Signature

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Signature
    -
    - -
    -
    - -

    ◆ Swing

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Swing
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Temp
    -
    - -
    -
    - -

    ◆ Timer

    - -
    -
    - - - - -
    uint64_t VestelProtocol::Timer
    -
    - -
    -
    - -

    ◆ timeState

    - -
    -
    - - - - -
    uint64_t VestelProtocol::timeState
    -
    - -
    -
    - -

    ◆ TimeSum

    - -
    -
    - - - - -
    uint64_t VestelProtocol::TimeSum
    -
    - -
    -
    - -

    ◆ TurboSleep

    - -
    -
    - - - - -
    uint64_t VestelProtocol::TurboSleep
    -
    - -
    -
    - -

    ◆ UseCmd

    - -
    -
    - - - - -
    uint64_t VestelProtocol::UseCmd
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol-members.html deleted file mode 100644 index 29e9fe4dc..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol-members.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    VoltasProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol.html deleted file mode 100644 index 24ff93454..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionVoltasProtocol.html +++ /dev/null @@ -1,594 +0,0 @@ - - - - - - - -IRremoteESP8266: VoltasProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    VoltasProtocol Union Reference
    -
    -
    - -

    Native representation of a Voltas A/C message. - More...

    - -

    #include <ir_Voltas.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kVoltasStateLength]
     The state in native IR code form. More...
     
    struct {
       uint8_t   SwingH:1
     
       uint8_t   SwingHChange:7
     
       uint8_t   Mode:4
     
       uint8_t   __pad0__:1
     
       uint8_t   FanSpeed:3
     
       uint8_t   SwingV:3
     
       uint8_t   Wifi:1
     
       uint8_t   __pad1__:1
     
       uint8_t   Turbo:1
     
       uint8_t   Sleep:1
     
       uint8_t   Power:1
     
       uint8_t   Temp:4
     
       uint8_t   __pad2__:2
     
       uint8_t   Econo:1
     
       uint8_t   TempSet:1
     
       uint8_t   OnTimerMins:6
     
       uint8_t   __pad3__:1
     
       uint8_t   OnTimer12Hr:1
     
       uint8_t   OffTimerMins:6
     
       uint8_t   __pad4__:1
     
       uint8_t   OffTimer12Hr:1
     
       uint8_t   __pad5__:8
     
       uint8_t   OnTimerHrs:4
     
       uint8_t   OffTimerHrs:4
     
       uint8_t   __pad6__:5
     
       uint8_t   Light:1
     
       uint8_t   OffTimerEnable:1
     
       uint8_t   OnTimerEnable:1
     
       uint8_t   Checksum:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Voltas A/C message.

    -

    Member Data Documentation

    - -

    ◆ @104

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ Checksum

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Checksum
    -
    - -
    -
    - -

    ◆ Econo

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Econo
    -
    - -
    -
    - -

    ◆ FanSpeed

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::FanSpeed
    -
    - -
    -
    - -

    ◆ Light

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Light
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffTimer12Hr

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OffTimer12Hr
    -
    - -
    -
    - -

    ◆ OffTimerEnable

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OffTimerEnable
    -
    - -
    -
    - -

    ◆ OffTimerHrs

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OffTimerHrs
    -
    - -
    -
    - -

    ◆ OffTimerMins

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OffTimerMins
    -
    - -
    -
    - -

    ◆ OnTimer12Hr

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OnTimer12Hr
    -
    - -
    -
    - -

    ◆ OnTimerEnable

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OnTimerEnable
    -
    - -
    -
    - -

    ◆ OnTimerHrs

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OnTimerHrs
    -
    - -
    -
    - -

    ◆ OnTimerMins

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::OnTimerMins
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::raw[kVoltasStateLength]
    -
    - -

    The state in native IR code form.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Sleep
    -
    - -
    -
    - -

    ◆ SwingH

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::SwingH
    -
    - -
    -
    - -

    ◆ SwingHChange

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::SwingHChange
    -
    - -
    -
    - -

    ◆ SwingV

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::SwingV
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Temp
    -
    - -
    -
    - -

    ◆ TempSet

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::TempSet
    -
    - -
    -
    - -

    ◆ Turbo

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Turbo
    -
    - -
    -
    - -

    ◆ Wifi

    - -
    -
    - - - - -
    uint8_t VoltasProtocol::Wifi
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol-members.html deleted file mode 100644 index 8dad86347..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol-members.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    WhirlpoolProtocol Member List
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol.html deleted file mode 100644 index 351072527..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionWhirlpoolProtocol.html +++ /dev/null @@ -1,786 +0,0 @@ - - - - - - - -IRremoteESP8266: WhirlpoolProtocol Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    WhirlpoolProtocol Union Reference
    -
    -
    - -

    Native representation of a Whirlpool A/C message. - More...

    - -

    #include <ir_Whirlpool.h>

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint8_t raw [kWhirlpoolAcStateLength]
     The state in IR code form. More...
     
    struct {
       uint8_t   pad0 [2]
     
       uint8_t   Fan:2
     
       uint8_t   Power:1
     
       uint8_t   Sleep:1
     
       uint8_t   __pad0__:3
     
       uint8_t   Swing1:1
     
       uint8_t   Mode:3
     
       uint8_t   __pad1__:1
     
       uint8_t   Temp:4
     
       uint8_t   __pad2__:8
     
       uint8_t   __pad3__:4
     
       uint8_t   Super1:1
     
       uint8_t   __pad4__:2
     
       uint8_t   Super2:1
     
       uint8_t   ClockHours:5
     
       uint8_t   LightOff:1
     
       uint8_t   __pad5__:2
     
       uint8_t   ClockMins:6
     
       uint8_t   __pad6__:1
     
       uint8_t   OffTimerEnabled:1
     
       uint8_t   OffHours:5
     
       uint8_t   __pad7__:1
     
       uint8_t   Swing2:1
     
       uint8_t   __pad8__:1
     
       uint8_t   OffMins:6
     
       uint8_t   __pad9__:1
     
       uint8_t   OnTimerEnabled:1
     
       uint8_t   OnHours:5
     
       uint8_t   __pad10__:3
     
       uint8_t   OnMins:6
     
       uint8_t   __pad11__:2
     
       uint8_t   __pad12__:8
     
       uint8_t   Sum1:8
     
       uint8_t   __pad13__:8
     
       uint8_t   Cmd:8
     
       uint8_t   pad1 [2]
     
       uint8_t   __pad14__:3
     
       uint8_t   J191:1
     
       uint8_t   __pad15__:4
     
       uint8_t   __pad16__:8
     
       uint8_t   Sum2:8
     
    }; 
     
    -

    Detailed Description

    -

    Native representation of a Whirlpool A/C message.

    -

    Member Data Documentation

    - -

    ◆ @106

    - -
    -
    - - - - -
    struct { ... }
    -
    - -
    -
    - -

    ◆ __pad0__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad0__
    -
    - -
    -
    - -

    ◆ __pad10__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad10__
    -
    - -
    -
    - -

    ◆ __pad11__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad11__
    -
    - -
    -
    - -

    ◆ __pad12__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad12__
    -
    - -
    -
    - -

    ◆ __pad13__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad13__
    -
    - -
    -
    - -

    ◆ __pad14__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad14__
    -
    - -
    -
    - -

    ◆ __pad15__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad15__
    -
    - -
    -
    - -

    ◆ __pad16__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad16__
    -
    - -
    -
    - -

    ◆ __pad1__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad1__
    -
    - -
    -
    - -

    ◆ __pad2__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad2__
    -
    - -
    -
    - -

    ◆ __pad3__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad3__
    -
    - -
    -
    - -

    ◆ __pad4__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad4__
    -
    - -
    -
    - -

    ◆ __pad5__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad5__
    -
    - -
    -
    - -

    ◆ __pad6__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad6__
    -
    - -
    -
    - -

    ◆ __pad7__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad7__
    -
    - -
    -
    - -

    ◆ __pad8__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad8__
    -
    - -
    -
    - -

    ◆ __pad9__

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::__pad9__
    -
    - -
    -
    - -

    ◆ ClockHours

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::ClockHours
    -
    - -
    -
    - -

    ◆ ClockMins

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::ClockMins
    -
    - -
    -
    - -

    ◆ Cmd

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Cmd
    -
    - -
    -
    - -

    ◆ Fan

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Fan
    -
    - -
    -
    - -

    ◆ J191

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::J191
    -
    - -
    -
    - -

    ◆ LightOff

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::LightOff
    -
    - -
    -
    - -

    ◆ Mode

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Mode
    -
    - -
    -
    - -

    ◆ OffHours

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::OffHours
    -
    - -
    -
    - -

    ◆ OffMins

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::OffMins
    -
    - -
    -
    - -

    ◆ OffTimerEnabled

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::OffTimerEnabled
    -
    - -
    -
    - -

    ◆ OnHours

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::OnHours
    -
    - -
    -
    - -

    ◆ OnMins

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::OnMins
    -
    - -
    -
    - -

    ◆ OnTimerEnabled

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::OnTimerEnabled
    -
    - -
    -
    - -

    ◆ pad0

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::pad0[2]
    -
    - -
    -
    - -

    ◆ pad1

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::pad1[2]
    -
    - -
    -
    - -

    ◆ Power

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Power
    -
    - -
    -
    - -

    ◆ raw

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::raw[kWhirlpoolAcStateLength]
    -
    - -

    The state in IR code form.

    - -
    -
    - -

    ◆ Sleep

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Sleep
    -
    - -
    -
    - -

    ◆ Sum1

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Sum1
    -
    - -
    -
    - -

    ◆ Sum2

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Sum2
    -
    - -
    -
    - -

    ◆ Super1

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Super1
    -
    - -
    -
    - -

    ◆ Super2

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Super2
    -
    - -
    -
    - -

    ◆ Swing1

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Swing1
    -
    - -
    -
    - -

    ◆ Swing2

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Swing2
    -
    - -
    -
    - -

    ◆ Temp

    - -
    -
    - - - - -
    uint8_t WhirlpoolProtocol::Temp
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest-members.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest-members.html deleted file mode 100644 index 15cd1c557..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest-members.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -IRremoteESP8266: Member List - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    -
    -
    magiquest Member List
    -
    -
    - -

    This is the complete list of members for magiquest, including all inherited members.

    - - - - - - - - - -
    bytemagiquest
    cmdmagiquest
    llwordmagiquest
    lwordmagiquest
    magnitudemagiquest
    paddingmagiquest
    scrapmagiquest
    wand_idmagiquest
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest.html deleted file mode 100644 index f51c4a5ec..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/unionmagiquest.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - -IRremoteESP8266: magiquest Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    magiquest Union Reference
    -
    -
    - -

    MagiQuest packet is both Wand ID and magnitude of swish and flick. - More...

    - -

    #include <ir_Magiquest.h>

    - - - - - - - - - - - - - - - - - - - -

    -Public Attributes

    uint64_t llword
     
    uint8_t byte [8]
     
    uint32_t lword [2]
     
    struct {
       uint16_t   magnitude
     
       uint32_t   wand_id
     
       uint8_t   padding
     
       uint8_t   scrap
     
    cmd
     
    -

    Detailed Description

    -

    MagiQuest packet is both Wand ID and magnitude of swish and flick.

    -

    Member Data Documentation

    - -

    ◆ byte

    - -
    -
    - - - - -
    uint8_t magiquest::byte[8]
    -
    - -
    -
    - -

    ◆ cmd

    - -
    -
    - - - - -
    struct { ... } magiquest::cmd
    -
    - -
    -
    - -

    ◆ llword

    - -
    -
    - - - - -
    uint64_t magiquest::llword
    -
    - -
    -
    - -

    ◆ lword

    - -
    -
    - - - - -
    uint32_t magiquest::lword[2]
    -
    - -
    -
    - -

    ◆ magnitude

    - -
    -
    - - - - -
    uint16_t magiquest::magnitude
    -
    - -
    -
    - -

    ◆ padding

    - -
    -
    - - - - -
    uint8_t magiquest::padding
    -
    - -
    -
    - -

    ◆ scrap

    - -
    -
    - - - - -
    uint8_t magiquest::scrap
    -
    - -
    -
    - -

    ◆ wand_id

    - -
    -
    - - - - -
    uint32_t magiquest::wand_id
    -
    - -
    -
    -
    The documentation for this union was generated from the following file: -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h.html deleted file mode 100644 index 30e00c752..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/zh-CN.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    zh-CN.h File Reference
    -
    - - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h_source.html b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h_source.html deleted file mode 100644 index a5b0277da..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen/html/zh-CN_8h_source.html +++ /dev/null @@ -1,545 +0,0 @@ - - - - - - - -IRremoteESP8266: src/locale/zh-CN.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    IRremoteESP8266 -
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    zh-CN.h
    -
    -
    -Go to the documentation of this file.
    1 // Copyright 2020 - MiaoYi (@Caffreyfans)
    -
    2 // Locale/language file for China / Simplified.
    -
    3 // This file will override the default values located in `defaults.h`.
    -
    4 #ifndef LOCALE_ZH_CN_H_
    -
    5 #define LOCALE_ZH_CN_H_
    -
    6 
    -
    7 #ifndef D_STR_UNKNOWN
    -
    8 #define D_STR_UNKNOWN "未知"
    -
    9 #endif // D_STR_UNKNOWN
    -
    10 #ifndef D_STR_PROTOCOL
    -
    11 #define D_STR_PROTOCOL "协议"
    -
    12 #endif // D_STR_PROTOCOL
    -
    13 #ifndef D_STR_POWER
    -
    14 #define D_STR_POWER "电源"
    -
    15 #endif // D_STR_POWER
    -
    16 #ifndef D_STR_PREVIOUS
    -
    17 #define D_STR_PREVIOUS "以前"
    -
    18 #endif // D_STR_PREVIOUS
    -
    19 #ifndef D_STR_ON
    -
    20 #define D_STR_ON "开"
    -
    21 #endif // D_STR_ON
    -
    22 #ifndef D_STR_OFF
    -
    23 #define D_STR_OFF "关"
    -
    24 #endif // D_STR_OFF
    -
    25 #ifndef D_STR_MODE
    -
    26 #define D_STR_MODE "模式"
    -
    27 #endif // D_STR_MODE
    -
    28 #ifndef D_STR_TOGGLE
    -
    29 #define D_STR_TOGGLE "切换"
    -
    30 #endif // D_STR_TOGGLE
    -
    31 #ifndef D_STR_TURBO
    -
    32 #define D_STR_TURBO "强力"
    -
    33 #endif // D_STR_TURBO
    -
    34 #ifndef D_STR_SUPER
    -
    35 #define D_STR_SUPER "超级"
    -
    36 #endif // D_STR_SUPER
    -
    37 #ifndef D_STR_SLEEP
    -
    38 #define D_STR_SLEEP "睡眠"
    -
    39 #endif // D_STR_SLEEP
    -
    40 #ifndef D_STR_LIGHT
    -
    41 #define D_STR_LIGHT "灯光"
    -
    42 #endif // D_STR_LIGHT
    -
    43 #ifndef D_STR_POWERFUL
    -
    44 #define D_STR_POWERFUL "强劲模式"
    -
    45 #endif // D_STR_POWERFUL
    -
    46 #ifndef D_STR_QUIET
    -
    47 #define D_STR_QUIET "安静"
    -
    48 #endif // D_STR_QUIET
    -
    49 #ifndef D_STR_ECONO
    -
    50 #define D_STR_ECONO "经济"
    -
    51 #endif // D_STR_ECONO
    -
    52 #ifndef D_STR_SWING
    -
    53 #define D_STR_SWING "扫风"
    -
    54 #endif // D_STR_SWING
    -
    55 #ifndef D_STR_SWINGH
    -
    56 #define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first!
    -
    57 #endif // D_STR_SWINGH
    -
    58 #ifndef D_STR_SWINGV
    -
    59 #define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
    -
    60 #endif // D_STR_SWINGV
    -
    61 #ifndef D_STR_BEEP
    -
    62 #define D_STR_BEEP "蜂鸣"
    -
    63 #endif // D_STR_BEEP
    -
    64 #ifndef D_STR_MOULD
    -
    65 #define D_STR_MOULD "模子"
    -
    66 #endif // D_STR_MOULD
    -
    67 #ifndef D_STR_CLEAN
    -
    68 #define D_STR_CLEAN "清洁"
    -
    69 #endif // D_STR_CLEAN
    -
    70 #ifndef D_STR_PURIFY
    -
    71 #define D_STR_PURIFY "净化"
    -
    72 #endif // D_STR_PURIFY
    -
    73 #ifndef D_STR_TIMER
    -
    74 #define D_STR_TIMER "计时器"
    -
    75 #endif // D_STR_TIMER
    -
    76 #ifndef D_STR_ONTIMER
    -
    77 #define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
    -
    78 #endif // D_STR_ONTIMER
    -
    79 #ifndef D_STR_OFFTIMER
    -
    80 #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
    -
    81 #endif // D_STR_OFFTIMER
    -
    82 #ifndef D_STR_CLOCK
    -
    83 #define D_STR_CLOCK "时钟"
    -
    84 #endif // D_STR_CLOCK
    -
    85 #ifndef D_STR_COMMAND
    -
    86 #define D_STR_COMMAND "命令"
    -
    87 #endif // D_STR_COMMAND
    -
    88 #ifndef D_STR_XFAN
    -
    89 #define D_STR_XFAN "XFan"
    -
    90 #endif // D_STR_XFAN
    -
    91 #ifndef D_STR_HEALTH
    -
    92 #define D_STR_HEALTH "健康"
    -
    93 #endif // D_STR_HEALTH
    -
    94 #ifndef D_STR_MODEL
    -
    95 #define D_STR_MODEL "模式"
    -
    96 #endif // D_STR_MODEL
    -
    97 #ifndef D_STR_TEMP
    -
    98 #define D_STR_TEMP "温度"
    -
    99 #endif // D_STR_TEMP
    -
    100 #ifndef D_STR_IFEEL
    -
    101 #define D_STR_IFEEL "IFeel"
    -
    102 #endif // D_STR_IFEEL
    -
    103 #ifndef D_STR_HUMID
    -
    104 #define D_STR_HUMID "湿度"
    -
    105 #endif // D_STR_HUMID
    -
    106 #ifndef D_STR_SAVE
    -
    107 #define D_STR_SAVE "保存"
    -
    108 #endif // D_STR_SAVE
    -
    109 #ifndef D_STR_EYE
    -
    110 #define D_STR_EYE "眼"
    -
    111 #endif // D_STR_EYE
    -
    112 #ifndef D_STR_FOLLOW
    -
    113 #define D_STR_FOLLOW "跟随"
    -
    114 #endif // D_STR_FOLLOW
    -
    115 #ifndef D_STR_ION
    -
    116 #define D_STR_ION "Ion"
    -
    117 #endif // D_STR_ION
    -
    118 #ifndef D_STR_FRESH
    -
    119 #define D_STR_FRESH "刷新"
    -
    120 #endif // D_STR_FRESH
    -
    121 #ifndef D_STR_HOLD
    -
    122 #define D_STR_HOLD "保持"
    -
    123 #endif // D_STR_HOLD
    -
    124 #ifndef D_STR_8C_HEAT
    -
    125 #define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
    -
    126 #endif // D_STR_8C_HEAT
    -
    127 #ifndef D_STR_BUTTON
    -
    128 #define D_STR_BUTTON "按钮"
    -
    129 #endif // D_STR_BUTTON
    -
    130 #ifndef D_STR_NIGHT
    -
    131 #define D_STR_NIGHT "夜间"
    -
    132 #endif // D_STR_NIGHT
    -
    133 #ifndef D_STR_SILENT
    -
    134 #define D_STR_SILENT "安静"
    -
    135 #endif // D_STR_SILENT
    -
    136 #ifndef D_STR_FILTER
    -
    137 #define D_STR_FILTER "过滤"
    -
    138 #endif // D_STR_FILTER
    -
    139 #ifndef D_STR_3D
    -
    140 #define D_STR_3D "3D"
    -
    141 #endif // D_STR_3D
    -
    142 #ifndef D_STR_CELSIUS
    -
    143 #define D_STR_CELSIUS "摄氏度"
    -
    144 #endif // D_STR_CELSIUS
    -
    145 #ifndef D_STR_UP
    -
    146 #define D_STR_UP "上"
    -
    147 #endif // D_STR_UP
    -
    148 #ifndef D_STR_TEMPUP
    -
    149 #define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
    -
    150 #endif // D_STR_TEMPUP
    -
    151 #ifndef D_STR_DOWN
    -
    152 #define D_STR_DOWN "下"
    -
    153 #endif // D_STR_DOWN
    -
    154 #ifndef D_STR_TEMPDOWN
    -
    155 #define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
    -
    156 #endif // D_STR_TEMPDOWN
    -
    157 #ifndef D_STR_CHANGE
    -
    158 #define D_STR_CHANGE "改变"
    -
    159 #endif // D_STR_CHANGE
    -
    160 #ifndef D_STR_START
    -
    161 #define D_STR_START "开始"
    -
    162 #endif // D_STR_START
    -
    163 #ifndef D_STR_STOP
    -
    164 #define D_STR_STOP "结束"
    -
    165 #endif // D_STR_STOP
    -
    166 #ifndef D_STR_MOVE
    -
    167 #define D_STR_MOVE "移动"
    -
    168 #endif // D_STR_MOVE
    -
    169 #ifndef D_STR_SET
    -
    170 #define D_STR_SET "设置"
    -
    171 #endif // D_STR_SET
    -
    172 #ifndef D_STR_CANCEL
    -
    173 #define D_STR_CANCEL "取消"
    -
    174 #endif // D_STR_CANCEL
    -
    175 #ifndef D_STR_COMFORT
    -
    176 #define D_STR_COMFORT "舒适"
    -
    177 #endif // D_STR_COMFORT
    -
    178 #ifndef D_STR_SENSOR
    -
    179 #define D_STR_SENSOR "传感器"
    -
    180 #endif // D_STR_SENSOR
    -
    181 #ifndef D_STR_WEEKLY
    -
    182 #define D_STR_WEEKLY "每周"
    -
    183 #endif // D_STR_WEEKLY
    -
    184 #ifndef D_STR_WEEKLYTIMER
    -
    185 #define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
    -
    186 #endif // D_STR_WEEKLYTIMER
    -
    187 #ifndef D_STR_WIFI
    -
    188 #define D_STR_WIFI "WiFi"
    -
    189 #endif // D_STR_WIFI
    -
    190 #ifndef D_STR_LAST
    -
    191 #define D_STR_LAST "最近"
    -
    192 #endif // D_STR_LAST
    -
    193 #ifndef D_STR_FAST
    -
    194 #define D_STR_FAST "快"
    -
    195 #endif // D_STR_FAST
    -
    196 #ifndef D_STR_SLOW
    -
    197 #define D_STR_SLOW "慢"
    -
    198 #endif // D_STR_SLOW
    -
    199 #ifndef D_STR_AIRFLOW
    -
    200 #define D_STR_AIRFLOW "空气流动"
    -
    201 #endif // D_STR_AIRFLOW
    -
    202 #ifndef D_STR_STEP
    -
    203 #define D_STR_STEP "步"
    -
    204 #endif // D_STR_STEP
    -
    205 #ifndef D_STR_NA
    -
    206 #define D_STR_NA "不适用"
    -
    207 #endif // D_STR_NA
    -
    208 #ifndef D_STR_OUTSIDE
    -
    209 #define D_STR_OUTSIDE "室外"
    -
    210 #endif // D_STR_OUTSIDE
    -
    211 #ifndef D_STR_LOUD
    -
    212 #define D_STR_LOUD "大声"
    -
    213 #endif // D_STR_LOUD
    -
    214 #ifndef D_STR_UPPER
    -
    215 #define D_STR_UPPER "更高"
    -
    216 #endif // D_STR_UPPER
    -
    217 #ifndef D_STR_LOWER
    -
    218 #define D_STR_LOWER "更低"
    -
    219 #endif // D_STR_LOWER
    -
    220 #ifndef D_STR_BREEZE
    -
    221 #define D_STR_BREEZE "微风"
    -
    222 #endif // D_STR_BREEZE
    -
    223 #ifndef D_STR_CIRCULATE
    -
    224 #define D_STR_CIRCULATE "流通"
    -
    225 #endif // D_STR_CIRCULATE
    -
    226 #ifndef D_STR_CEILING
    -
    227 #define D_STR_CEILING "天花板"
    -
    228 #endif // D_STR_CEILING
    -
    229 #ifndef D_STR_WALL
    -
    230 #define D_STR_WALL "墙"
    -
    231 #endif // D_STR_WALL
    -
    232 #ifndef D_STR_ROOM
    -
    233 #define D_STR_ROOM "房间"
    -
    234 #endif // D_STR_ROOM
    -
    235 #ifndef D_STR_6THSENSE
    -
    236 #define D_STR_6THSENSE "第六感"
    -
    237 #endif // D_STR_6THSENSE
    -
    238 #ifndef D_STR_ZONEFOLLOW
    -
    239 #define D_STR_ZONEFOLLOW "区域跟随"
    -
    240 #endif // D_STR_ZONEFOLLOW
    -
    241 #ifndef D_STR_FIXED
    -
    242 #define D_STR_FIXED "固定"
    -
    243 #endif // D_STR_FIXED
    -
    244 
    -
    245 #ifndef D_STR_AUTO
    -
    246 #define D_STR_AUTO "自动"
    -
    247 #endif // D_STR_AUTO
    -
    248 #ifndef D_STR_AUTOMATIC
    -
    249 #define D_STR_AUTOMATIC "自动的"
    -
    250 #endif // D_STR_AUTOMATIC
    -
    251 #ifndef D_STR_MANUAL
    -
    252 #define D_STR_MANUAL "手动"
    -
    253 #endif // D_STR_MANUAL
    -
    254 #ifndef D_STR_COOL
    -
    255 #define D_STR_COOL "制冷"
    -
    256 #endif // D_STR_COOL
    -
    257 #ifndef D_STR_HEAT
    -
    258 #define D_STR_HEAT "加热"
    -
    259 #endif // D_STR_HEAT
    -
    260 #ifndef D_STR_FAN
    -
    261 #define D_STR_FAN "风扇"
    -
    262 #endif // D_STR_FAN
    -
    263 #ifndef D_STR_FANONLY
    -
    264 #define D_STR_FANONLY "仅风扇"
    -
    265 #endif // D_STR_FANONLY
    -
    266 #ifndef D_STR_DRY
    -
    267 #define D_STR_DRY "干燥"
    -
    268 #endif // D_STR_DRY
    -
    269 
    -
    270 #ifndef D_STR_MAX
    -
    271 #define D_STR_MAX "最大"
    -
    272 #endif // D_STR_MAX
    -
    273 #ifndef D_STR_MAXIMUM
    -
    274 #define D_STR_MAXIMUM "最小"
    -
    275 #endif // D_STR_MAXIMUM
    -
    276 #ifndef D_STR_MIN
    -
    277 #define D_STR_MIN "最低"
    -
    278 #endif // D_STR_MIN
    -
    279 #ifndef D_STR_MINIMUM
    -
    280 #define D_STR_MINIMUM "最低"
    -
    281 #endif // D_STR_MINIMUM
    -
    282 #ifndef D_STR_MED
    -
    283 #define D_STR_MED "中"
    -
    284 #endif // D_STR_MED
    -
    285 #ifndef D_STR_MEDIUM
    -
    286 #define D_STR_MEDIUM "中"
    -
    287 #endif // D_STR_MEDIUM
    -
    288 
    -
    289 #ifndef D_STR_HIGHEST
    -
    290 #define D_STR_HIGHEST "最高"
    -
    291 #endif // D_STR_HIGHEST
    -
    292 #ifndef D_STR_HIGH
    -
    293 #define D_STR_HIGH "高"
    -
    294 #endif // D_STR_HIGH
    -
    295 #ifndef D_STR_HI
    -
    296 #define D_STR_HI "嗨"
    -
    297 #endif // D_STR_HI
    -
    298 #ifndef D_STR_MID
    -
    299 #define D_STR_MID "中"
    -
    300 #endif // D_STR_MID
    -
    301 #ifndef D_STR_MIDDLE
    -
    302 #define D_STR_MIDDLE "居中"
    -
    303 #endif // D_STR_MIDDLE
    -
    304 #ifndef D_STR_LOW
    -
    305 #define D_STR_LOW "低"
    -
    306 #endif // D_STR_LOW
    -
    307 #ifndef D_STR_LO
    -
    308 #define D_STR_LO "低"
    -
    309 #endif // D_STR_LO
    -
    310 #ifndef D_STR_LOWEST
    -
    311 #define D_STR_LOWEST "最低"
    -
    312 #endif // D_STR_LOWEST
    -
    313 #ifndef D_STR_RIGHT
    -
    314 #define D_STR_RIGHT "右"
    -
    315 #endif // D_STR_RIGHT
    -
    316 #ifndef D_STR_MAXRIGHT
    -
    317 #define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
    -
    318 #endif // D_STR_MAXRIGHT
    -
    319 #ifndef D_STR_RIGHTMAX_NOSPACE
    -
    320 #define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
    -
    321 #endif // D_STR_RIGHTMAX_NOSPACE
    -
    322 #ifndef D_STR_LEFT
    -
    323 #define D_STR_LEFT "左"
    -
    324 #endif // D_STR_LEFT
    -
    325 #ifndef D_STR_MAXLEFT
    -
    326 #define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
    -
    327 #endif // D_STR_MAXLEFT
    -
    328 #ifndef D_STR_LEFTMAX_NOSPACE
    -
    329 #define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
    -
    330 #endif // D_STR_LEFTMAX_NOSPACE
    -
    331 #ifndef D_STR_WIDE
    -
    332 #define D_STR_WIDE "扫风"
    -
    333 #endif // D_STR_WIDE
    -
    334 #ifndef D_STR_CENTRE
    -
    335 #define D_STR_CENTRE "中间"
    -
    336 #endif // D_STR_CENTRE
    -
    337 #ifndef D_STR_TOP
    -
    338 #define D_STR_TOP "上部"
    -
    339 #endif // D_STR_TOP
    -
    340 #ifndef D_STR_BOTTOM
    -
    341 #define D_STR_BOTTOM "底部"
    -
    342 #endif // D_STR_BOTTOM
    -
    343 
    -
    344 // Compound words/phrases/descriptions from pre-defined words.
    -
    345 // Note: Obviously these need to be defined *after* their component words.
    -
    346 #ifndef D_STR_EYEAUTO
    -
    347 #define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
    -
    348 #endif // D_STR_EYEAUTO
    -
    349 #ifndef D_STR_LIGHTTOGGLE
    -
    350 #define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
    -
    351 #endif // D_STR_LIGHTTOGGLE
    -
    352 #ifndef D_STR_OUTSIDEQUIET
    -
    353 #define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
    -
    354 #endif // D_STR_OUTSIDEQUIET
    -
    355 #ifndef D_STR_POWERTOGGLE
    -
    356 #define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
    -
    357 #endif // D_STR_POWERTOGGLE
    -
    358 #ifndef D_STR_PREVIOUSPOWER
    -
    359 #define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER
    -
    360 #endif // D_STR_PREVIOUSPOWER
    -
    361 #ifndef D_STR_SENSORTEMP
    -
    362 #define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
    -
    363 #endif // D_STR_SENSORTEMP
    -
    364 #ifndef D_STR_SLEEP_TIMER
    -
    365 #define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
    -
    366 #endif // D_STR_SLEEP_TIMER
    -
    367 #ifndef D_STR_SWINGVMODE
    -
    368 #define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
    -
    369 #endif // D_STR_SWINGVMODE
    -
    370 #ifndef D_STR_SWINGVTOGGLE
    -
    371 #define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
    -
    372 #endif // D_STR_SWINGVTOGGLE
    -
    373 
    -
    374 // Separators
    -
    375 #ifndef D_CHR_TIME_SEP
    -
    376 #define D_CHR_TIME_SEP ':'
    -
    377 #endif // D_CHR_TIME_SEP
    -
    378 #ifndef D_STR_SPACELBRACE
    -
    379 #define D_STR_SPACELBRACE " ("
    -
    380 #endif // D_STR_SPACELBRACE
    -
    381 #ifndef D_STR_COMMASPACE
    -
    382 #define D_STR_COMMASPACE ", "
    -
    383 #endif // D_STR_COMMASPACE
    -
    384 #ifndef D_STR_COLONSPACE
    -
    385 #define D_STR_COLONSPACE ": "
    -
    386 #endif // D_STR_COLONSPACE
    -
    387 
    -
    388 #ifndef D_STR_DAY
    -
    389 #define D_STR_DAY "天"
    -
    390 #endif // D_STR_DAY
    -
    391 #ifndef D_STR_DAYS
    -
    392 #define D_STR_DAYS D_STR_DAY "s"
    -
    393 #endif // D_STR_DAYS
    -
    394 #ifndef D_STR_HOUR
    -
    395 #define D_STR_HOUR "时"
    -
    396 #endif // D_STR_HOUR
    -
    397 #ifndef D_STR_HOURS
    -
    398 #define D_STR_HOURS D_STR_HOUR "s"
    -
    399 #endif // D_STR_HOURS
    -
    400 #ifndef D_STR_MINUTE
    -
    401 #define D_STR_MINUTE "分"
    -
    402 #endif // D_STR_MINUTE
    -
    403 #ifndef D_STR_MINUTES
    -
    404 #define D_STR_MINUTES D_STR_MINUTE "s"
    -
    405 #endif // D_STR_MINUTES
    -
    406 #ifndef D_STR_SECOND
    -
    407 #define D_STR_SECOND "秒"
    -
    408 #endif // D_STR_SECOND
    -
    409 #ifndef D_STR_SECONDS
    -
    410 #define D_STR_SECONDS D_STR_SECOND "s"
    -
    411 #endif // D_STR_SECONDS
    -
    412 #ifndef D_STR_NOW
    -
    413 #define D_STR_NOW "现在"
    -
    414 #endif // D_STR_NOW
    -
    415 /* This is not three letter days. Disabled.
    -
    416 #ifndef D_STR_THREELETTERDAYS
    -
    417 #define D_STR_THREELETTERDAYS "周一至周末"
    -
    418 #endif // D_STR_THREELETTERDAYS
    -
    419 */
    -
    420 
    -
    421 #ifndef D_STR_YES
    -
    422 #define D_STR_YES "是"
    -
    423 #endif // D_STR_YES
    -
    424 #ifndef D_STR_NO
    -
    425 #define D_STR_NO "否"
    -
    426 #endif // D_STR_NO
    -
    427 #ifndef D_STR_TRUE
    -
    428 #define D_STR_TRUE "正确"
    -
    429 #endif // D_STR_TRUE
    -
    430 #ifndef D_STR_FALSE
    -
    431 #define D_STR_FALSE "错误"
    -
    432 #endif // D_STR_FALSE
    -
    433 
    -
    434 #ifndef D_STR_REPEAT
    -
    435 #define D_STR_REPEAT "重复"
    -
    436 #endif // D_STR_REPEAT
    -
    437 #ifndef D_STR_CODE
    -
    438 #define D_STR_CODE "代码"
    -
    439 #endif // D_STR_CODE
    -
    440 #ifndef D_STR_BITS
    -
    441 #define D_STR_BITS "位"
    -
    442 #endif // D_STR_BITS
    -
    443 
    -
    444 // IRrecvDumpV2+
    -
    445 #ifndef D_STR_TIMESTAMP
    -
    446 #define D_STR_TIMESTAMP "时间戳记"
    -
    447 #endif // D_STR_TIMESTAMP
    -
    448 #ifndef D_STR_LIBRARY
    -
    449 #define D_STR_LIBRARY "库文件"
    -
    450 #endif // D_STR_LIBRARY
    -
    451 #ifndef D_STR_MESGDESC
    -
    452 #define D_STR_MESGDESC "等等信息"
    -
    453 #endif // D_STR_MESGDESC
    -
    454 #ifndef D_STR_IRRECVDUMP_STARTUP
    -
    455 #define D_STR_IRRECVDUMP_STARTUP \
    -
    456  "IRrecvDump 运行当中,等待红外信息输入位于引脚 %d"
    -
    457 #endif // D_STR_IRRECVDUMP_STARTUP
    -
    458 #ifndef D_WARN_BUFFERFULL
    -
    459 #define D_WARN_BUFFERFULL \
    -
    460  "警告: 红外编码数组过大(>= %d). " \
    -
    461  "在解决此问题之前,不应信任此结果. " \
    -
    462  "编辑并增加 `kCaptureBufferSize` 变量."
    -
    463 #endif // D_WARN_BUFFERFULL
    -
    464 
    -
    465 #endif // LOCALE_ZH_CN_H_
    -
    - - - - diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen_index.md b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen_index.md deleted file mode 100644 index 95607645e..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/docs/doxygen_index.md +++ /dev/null @@ -1,60 +0,0 @@ -# IRremoteESP8266 Library API Documentation {#mainpage} - -## Getting Started - -### The basics -For sending messages, look at the IRsend class. - -For receiving messages, look at the IRrecv & decode_results classes. - -### Air Conditioners -For _generic_ Air Conditioner control, look at the IRac class & the -stdAc::state_t structure. - -For _detailed_ Air Conditioner control, you need to determine what protocol the -library detects your remote/Air Conditioner to be, look into the appropriate -`src/ir_Protocol.[h|cpp]` files and use the appropriate class object. -e.g. if `IRrecvDumpV2` (or better) detects the protocol as `KELVINATOR`, -open the `src/ir_Kelvinator.*` files, and examine the IRKelvinatorAC class the -methods available to create/decode/send `KELVINATOR` messages with all the -abilities the library offers. You can also select it from the -[Classes](annotated.html) menu above. - -Various native constants & options for a given Protocol's class object can be -found in the associated header file for that protocol. - -## Examples -Most of the common uses of this library's APIs have demonstration code -available under the [examples](https://github.com/crankyoldgit/IRremoteESP8266/tree/master/examples) -directory. It ranges from trivial examples to complex real-world project code. - -## Tuning -The most commonly used & needed knobs for controlling aspects of this library -are available via run-time class methods or at class-object instantiation. -Again, you are referred to the IRsend & IRrecv classes. - -### Advanced -Certain addition constants and options are available as compile-time tweaks. -You should inspect [IRremoteESP8266.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRremoteESP8266.h), -[IRsend.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRsend.h), -& [IRrecv.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRrecv.h) -for General, Sending, & Receiving tweaks respectively. - -#### Protocol timings -Generally you should never need to adjust the timing parameters for a given -protocol or device. However, occasionally some individual devices just want to -be special. -If you are having problems decoding/receiving a message, look into the -`tolerance`, `kTolerance`, or IRrecv::setTolerance constants/methods etc first. -However, if your problems is sending, or adjusting the tolerance doesn't work -you may need to tweak per-protocol timing values. These are stored as -constants in the `ir_ProtocolName.cpp` file for the given protocol. This is -typically a step of last resort. - -#### Reducing code size & flash usage. -You can disable most protocols by either modifying the appropriate `#‍define`s -in [IRremoteESP8266.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRremoteESP8266.h) -or passing the appropriate compile-time flags, as documented in the same file. - -Avoid using the A/C classes, especially the IRac class as they will force the -compiler to include large amounts of code you may not need. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/IRMQTTServer.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/IRMQTTServer.h index 29d3320dc..0563ac855 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/IRMQTTServer.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/IRMQTTServer.h @@ -1,6 +1,6 @@ /* * Send & receive arbitrary IR codes via a web server or MQTT. - * Copyright David Conran 2016, 2017, 2018, 2019, 2020 + * Copyright David Conran 2016-2021 */ #ifndef EXAMPLES_IRMQTTSERVER_IRMQTTSERVER_H_ #define EXAMPLES_IRMQTTSERVER_IRMQTTSERVER_H_ @@ -101,8 +101,9 @@ const IPAddress kSubnetMask = IPAddress(255, 255, 255, 0); // The unset default is 8%. // (Uncomment to enable) // Do you want/need mdns enabled? (https://en.wikipedia.org/wiki/Multicast_DNS) +#ifndef MDNS_ENABLE #define MDNS_ENABLE true // `false` to disable and save ~21k of program space. - +#endif // MDNS_ENABLE // ----------------------- HTTP Related Settings ------------------------------- #define FIRMWARE_OTA true // Allow remote update of the firmware via http. // Less secure if enabled. @@ -197,7 +198,9 @@ const uint16_t kMinUnknownSize = 2 * 10; // can understand the individual settings of the remote. // e.g. Aquire the A/C settings from an actual A/C IR remote and override // any local settings set via MQTT/HTTP etc. +#ifndef USE_DECODED_AC_SETTINGS #define USE_DECODED_AC_SETTINGS true // `false` to disable. `true` to enable. +#endif // USE_DECODED_AC_SETTINGS // Should we allow or ignore an A/C IR remote to override the A/C protocol/model // as set via MQTT or HTTP? // e.g. If `true`, you can use any fully supported A/C remote to control diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/platformio.ini b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/platformio.ini index 7c110531e..d0ac2b8c8 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/platformio.ini +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/examples/IRMQTTServer/platformio.ini @@ -50,7 +50,21 @@ lib_deps = ${common_esp32.lib_deps_external} [env:esp01_1m] board = esp01_1m +board_build.ldscript = eagle.flash.1m64.ld +lib_deps = ${common_esp8266.lib_deps_external} + +; This is just to help enable swapping IRMQTTServer via OTA on platforms with +; limited flash space. It doesn't do *ANY* IR stuff. It has almost everything +; turned off except OTA over http. +; Produces a ".bin" file of ~380k. +[env:esp8266_1m_OTA_minimal] +board = esp01_1m +board_build.ldscript = eagle.flash.1m64.ld build_flags = ${env.build_flags} - -Wl,-Teagle.flash.1m64.ld + -DMQTT_ENABLE=false + -D_IR_ENABLE_DEFAULT_=false + -DEXAMPLES_ENABLE=false + -DMDNS_ENABLE=false + -DUSE_DECODED_AC_SETTINGS=false lib_deps = ${common_esp8266.lib_deps_external} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/keywords.txt b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/keywords.txt index 3b192e779..fefce8d9d 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/keywords.txt +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/keywords.txt @@ -41,6 +41,7 @@ IRFujitsuAC KEYWORD1 IRGoodweatherAc KEYWORD1 IRGreeAC KEYWORD1 IRHaierAC KEYWORD1 +IRHaierAC176 KEYWORD1 IRHaierACYRW02 KEYWORD1 IRHitachiAc KEYWORD1 IRHitachiAc1 KEYWORD1 @@ -61,12 +62,14 @@ IRPanasonicAc KEYWORD1 IRPanasonicAc32 KEYWORD1 IRSamsungAc KEYWORD1 IRSanyoAc KEYWORD1 +IRSanyoAc88 KEYWORD1 IRSharpAc KEYWORD1 IRTcl112Ac KEYWORD1 IRTechnibelAc KEYWORD1 IRTecoAc KEYWORD1 IRToshibaAC KEYWORD1 IRTranscoldAc KEYWORD1 +IRTrotec3550 KEYWORD1 IRTrotecESP KEYWORD1 IRTrumaAc KEYWORD1 IRVestelAc KEYWORD1 @@ -106,6 +109,9 @@ _delayMicroseconds KEYWORD2 _getEconoToggle KEYWORD2 _getTime KEYWORD2 _getTimer KEYWORD2 +_isAKB73757604 KEYWORD2 +_isAKB74955603 KEYWORD2 +_isNormal KEYWORD2 _matchGeneric KEYWORD2 _restoreState KEYWORD2 _sendSony KEYWORD2 @@ -144,6 +150,7 @@ calcRepeatOffset KEYWORD2 calcSecondChecksum KEYWORD2 calcSectionChecksum KEYWORD2 calcUSecPeriod KEYWORD2 +calcVaneSwingV KEYWORD2 calculateChecksum KEYWORD2 calibrate KEYWORD2 cancelOffTimer KEYWORD2 @@ -167,6 +174,7 @@ convertMode KEYWORD2 convertSwing KEYWORD2 convertSwingH KEYWORD2 convertSwingV KEYWORD2 +convertVaneSwingV KEYWORD2 coolix KEYWORD2 copyIrParams KEYWORD2 corona KEYWORD2 @@ -185,6 +193,7 @@ decodeAirwell KEYWORD2 decodeAiwaRCT501 KEYWORD2 decodeAmcor KEYWORD2 decodeArgo KEYWORD2 +decodeBose KEYWORD2 decodeCOOLIX KEYWORD2 decodeCarrierAC KEYWORD2 decodeCarrierAC40 KEYWORD2 @@ -254,6 +263,7 @@ decodeSamsung36 KEYWORD2 decodeSamsungAC KEYWORD2 decodeSanyo KEYWORD2 decodeSanyoAc KEYWORD2 +decodeSanyoAc88 KEYWORD2 decodeSanyoLC7461 KEYWORD2 decodeSharp KEYWORD2 decodeSharpAc KEYWORD2 @@ -266,6 +276,7 @@ decodeToState KEYWORD2 decodeToshibaAC KEYWORD2 decodeTranscold KEYWORD2 decodeTrotec KEYWORD2 +decodeTrotec3550 KEYWORD2 decodeTruma KEYWORD2 decodeVestelAc KEYWORD2 decodeVoltas KEYWORD2 @@ -347,6 +358,7 @@ getFreshAirHigh KEYWORD2 getHealth KEYWORD2 getHold KEYWORD2 getHumid KEYWORD2 +getHumidity KEYWORD2 getIFeel KEYWORD2 getId KEYWORD2 getInternalStateLength KEYWORD2 @@ -413,6 +425,7 @@ getTempUnits KEYWORD2 getTime KEYWORD2 getTimer KEYWORD2 getTimerEnabled KEYWORD2 +getTimerMode KEYWORD2 getTimerTime KEYWORD2 getTimerType KEYWORD2 getTogglePower KEYWORD2 @@ -424,6 +437,9 @@ getType KEYWORD2 getUseCelsius KEYWORD2 getUseFahrenheit KEYWORD2 getVane KEYWORD2 +getVaneCode KEYWORD2 +getVaneLeft KEYWORD2 +getVaneSwingV KEYWORD2 getWeeklyTimerEnable KEYWORD2 getWeeklyTimerEnabled KEYWORD2 getWiFi KEYWORD2 @@ -435,6 +451,7 @@ getiFeel KEYWORD2 goodweather KEYWORD2 gree KEYWORD2 haier KEYWORD2 +haier176 KEYWORD2 haierYrwo2 KEYWORD2 handleSpecialState KEYWORD2 hasACState KEYWORD2 @@ -450,6 +467,7 @@ int64ToString KEYWORD2 invertBits KEYWORD2 isEconoToggle KEYWORD2 isLightToggle KEYWORD2 +isOffCommand KEYWORD2 isOffTimerActive KEYWORD2 isOffTimerEnabled KEYWORD2 isOnTimerActive KEYWORD2 @@ -458,12 +476,16 @@ isPowerSpecial KEYWORD2 isProtocolSupported KEYWORD2 isRepeat KEYWORD2 isSpecialState KEYWORD2 +isSwing KEYWORD2 +isSwingH KEYWORD2 +isSwingV KEYWORD2 isSwingVStep KEYWORD2 isSwingVToggle KEYWORD2 isTimeCommand KEYWORD2 isTimerActive KEYWORD2 isTurboToggle KEYWORD2 isValidLgAc KEYWORD2 +isVaneSwingV KEYWORD2 kelon KEYWORD2 kelvinator KEYWORD2 ledOff KEYWORD2 @@ -512,12 +534,14 @@ resume KEYWORD2 reverseBits KEYWORD2 samsung KEYWORD2 sanyo KEYWORD2 +sanyo88 KEYWORD2 send KEYWORD2 sendAc KEYWORD2 sendAirwell KEYWORD2 sendAiwaRCT501 KEYWORD2 sendAmcor KEYWORD2 sendArgo KEYWORD2 +sendBose KEYWORD2 sendCOOLIX KEYWORD2 sendCarrierAC KEYWORD2 sendCarrierAC40 KEYWORD2 @@ -601,6 +625,7 @@ sendSAMSUNG KEYWORD2 sendSamsung36 KEYWORD2 sendSamsungAC KEYWORD2 sendSanyoAc KEYWORD2 +sendSanyoAc88 KEYWORD2 sendSanyoLC7461 KEYWORD2 sendSharp KEYWORD2 sendSharpAc KEYWORD2 @@ -616,6 +641,7 @@ sendTeknopoint KEYWORD2 sendToshibaAC KEYWORD2 sendTranscold KEYWORD2 sendTrotec KEYWORD2 +sendTrotec3550 KEYWORD2 sendTruma KEYWORD2 sendVestelAc KEYWORD2 sendVoltas KEYWORD2 @@ -662,6 +688,7 @@ setFreshAirHigh KEYWORD2 setHealth KEYWORD2 setHold KEYWORD2 setHumid KEYWORD2 +setHumidity KEYWORD2 setIFeel KEYWORD2 setId KEYWORD2 setInvertedStates KEYWORD2 @@ -724,6 +751,7 @@ setTime KEYWORD2 setTimer KEYWORD2 setTimerActive KEYWORD2 setTimerEnabled KEYWORD2 +setTimerMode KEYWORD2 setTimerType KEYWORD2 setTogglePower KEYWORD2 setToggleSwingVertical KEYWORD2 @@ -735,6 +763,8 @@ setUnknownThreshold KEYWORD2 setUseCelsius KEYWORD2 setUseFahrenheit KEYWORD2 setVane KEYWORD2 +setVaneLeft KEYWORD2 +setVaneSwingV KEYWORD2 setWeeklyTimerEnable KEYWORD2 setWeeklyTimerEnabled KEYWORD2 setWiFi KEYWORD2 @@ -768,12 +798,14 @@ toggleSwingVert KEYWORD2 toshiba KEYWORD2 transcold KEYWORD2 trotec KEYWORD2 +trotec3550 KEYWORD2 truma KEYWORD2 typeToString KEYWORD2 uint64ToString KEYWORD2 uint8ToBcd KEYWORD2 updateAndSaveState KEYWORD2 updateChecksums KEYWORD2 +updateSwingPrev KEYWORD2 updateUseLongOrShort KEYWORD2 validChecksum KEYWORD2 validSection KEYWORD2 @@ -786,13 +818,14 @@ xorBytes KEYWORD2 # Constants (LITERAL1) ####################################### -// LITERAL1 A705 LITERAL1 A903 LITERAL1 A907 LITERAL1 AIRWELL LITERAL1 AIWA_RC_T501 LITERAL1 AIWA_RC_T501_BITS LITERAL1 +AKB73757604 LITERAL1 +AKB74955603 LITERAL1 AKB75215403 LITERAL1 ALLOW_DELAY_CALLS LITERAL1 AMCOR LITERAL1 @@ -825,6 +858,7 @@ ARRAH2E LITERAL1 ARREB1E LITERAL1 ARREW4E LITERAL1 ARRY4 LITERAL1 +BOSE LITERAL1 CARRIER_AC LITERAL1 CARRIER_AC40 LITERAL1 CARRIER_AC64 LITERAL1 @@ -857,6 +891,7 @@ DECODE_AIRWELL LITERAL1 DECODE_AIWA_RC_T501 LITERAL1 DECODE_AMCOR LITERAL1 DECODE_ARGO LITERAL1 +DECODE_BOSE LITERAL1 DECODE_CARRIER_AC LITERAL1 DECODE_CARRIER_AC40 LITERAL1 DECODE_CARRIER_AC64 LITERAL1 @@ -931,6 +966,7 @@ DECODE_SAMSUNG36 LITERAL1 DECODE_SAMSUNG_AC LITERAL1 DECODE_SANYO LITERAL1 DECODE_SANYO_AC LITERAL1 +DECODE_SANYO_AC88 LITERAL1 DECODE_SHARP LITERAL1 DECODE_SHARP_AC LITERAL1 DECODE_SHERWOOD LITERAL1 @@ -943,6 +979,7 @@ DECODE_TEKNOPOINT LITERAL1 DECODE_TOSHIBA_AC LITERAL1 DECODE_TRANSCOLD LITERAL1 DECODE_TROTEC LITERAL1 +DECODE_TROTEC_3550 LITERAL1 DECODE_TRUMA LITERAL1 DECODE_VESTEL_AC LITERAL1 DECODE_VOLTAS LITERAL1 @@ -1195,6 +1232,7 @@ SAMSUNG_AC LITERAL1 SAMSUNG_BITS LITERAL1 SANYO LITERAL1 SANYO_AC LITERAL1 +SANYO_AC88 LITERAL1 SANYO_LC7461 LITERAL1 SANYO_LC7461_BITS LITERAL1 SANYO_SA8650B_BITS LITERAL1 @@ -1202,6 +1240,7 @@ SEND_AIRWELL LITERAL1 SEND_AIWA_RC_T501 LITERAL1 SEND_AMCOR LITERAL1 SEND_ARGO LITERAL1 +SEND_BOSE LITERAL1 SEND_CARRIER_AC LITERAL1 SEND_CARRIER_AC40 LITERAL1 SEND_CARRIER_AC64 LITERAL1 @@ -1276,6 +1315,7 @@ SEND_SAMSUNG36 LITERAL1 SEND_SAMSUNG_AC LITERAL1 SEND_SANYO LITERAL1 SEND_SANYO_AC LITERAL1 +SEND_SANYO_AC88 LITERAL1 SEND_SHARP LITERAL1 SEND_SHARP_AC LITERAL1 SEND_SHERWOOD LITERAL1 @@ -1288,6 +1328,7 @@ SEND_TEKNOPOINT LITERAL1 SEND_TOSHIBA_AC LITERAL1 SEND_TRANSCOLD LITERAL1 SEND_TROTEC LITERAL1 +SEND_TROTEC_3550 LITERAL1 SEND_TRUMA LITERAL1 SEND_VESTEL_AC LITERAL1 SEND_VOLTAS LITERAL1 @@ -1324,6 +1365,7 @@ TOSHIBA_AC_POWER LITERAL1 TOSHIBA_AC_STATE_LENGTH LITERAL1 TRANSCOLD LITERAL1 TROTEC LITERAL1 +TROTEC_3550 LITERAL1 TROTEC_AUTO LITERAL1 TROTEC_COMMAND_LENGTH LITERAL1 TROTEC_COOL LITERAL1 @@ -1460,6 +1502,14 @@ kAutoStr LITERAL1 kAutomaticStr LITERAL1 kBeepStr LITERAL1 kBitsStr LITERAL1 +kBoseBitMark LITERAL1 +kBoseBits LITERAL1 +kBoseFreq LITERAL1 +kBoseGap LITERAL1 +kBoseHdrMark LITERAL1 +kBoseHdrSpace LITERAL1 +kBoseOneSpace LITERAL1 +kBoseZeroSpace LITERAL1 kBottomStr LITERAL1 kBreezeStr LITERAL1 kButtonStr LITERAL1 @@ -1706,6 +1756,14 @@ kDaikin2Freq LITERAL1 kDaikin2Gap LITERAL1 kDaikin2HdrMark LITERAL1 kDaikin2HdrSpace LITERAL1 +kDaikin2HumidityAuto LITERAL1 +kDaikin2HumidityDryHigh LITERAL1 +kDaikin2HumidityDryLow LITERAL1 +kDaikin2HumidityDryMedium LITERAL1 +kDaikin2HumidityHeatHigh LITERAL1 +kDaikin2HumidityHeatLow LITERAL1 +kDaikin2HumidityHeatMedium LITERAL1 +kDaikin2HumidityOff LITERAL1 kDaikin2LeaderMark LITERAL1 kDaikin2LeaderSpace LITERAL1 kDaikin2MinCoolTemp LITERAL1 @@ -2104,6 +2162,7 @@ kHaierACStateLength LITERAL1 kHaierACYRW02Bits LITERAL1 kHaierACYRW02StateLength LITERAL1 kHaierAc176DefaultRepeat LITERAL1 +kHaierAc176Prefix LITERAL1 kHaierAcAuto LITERAL1 kHaierAcBitMark LITERAL1 kHaierAcCmdFan LITERAL1 @@ -2159,6 +2218,11 @@ kHaierAcYrw02FanHigh LITERAL1 kHaierAcYrw02FanLow LITERAL1 kHaierAcYrw02FanMed LITERAL1 kHaierAcYrw02Heat LITERAL1 +kHaierAcYrw02NoTimers LITERAL1 +kHaierAcYrw02OffThenOnTimer LITERAL1 +kHaierAcYrw02OffTimer LITERAL1 +kHaierAcYrw02OnThenOffTimer LITERAL1 +kHaierAcYrw02OnTimer LITERAL1 kHaierAcYrw02Prefix LITERAL1 kHaierAcYrw02SwingAuto LITERAL1 kHaierAcYrw02SwingBottom LITERAL1 @@ -2413,23 +2477,61 @@ kLg32Bits LITERAL1 kLg32HdrMark LITERAL1 kLg32HdrSpace LITERAL1 kLg32RptHdrMark LITERAL1 +kLgAcAKB74955603DetectionMask LITERAL1 kLgAcAuto LITERAL1 +kLgAcChecksumSize LITERAL1 kLgAcCool LITERAL1 kLgAcDry LITERAL1 kLgAcFan LITERAL1 kLgAcFanAuto LITERAL1 +kLgAcFanEntries LITERAL1 kLgAcFanHigh LITERAL1 kLgAcFanLow LITERAL1 +kLgAcFanLowAlt LITERAL1 kLgAcFanLowest LITERAL1 +kLgAcFanMax LITERAL1 kLgAcFanMedium LITERAL1 kLgAcHeat LITERAL1 +kLgAcLightToggle LITERAL1 kLgAcMaxTemp LITERAL1 kLgAcMinTemp LITERAL1 kLgAcOffCommand LITERAL1 kLgAcPowerOff LITERAL1 kLgAcPowerOn LITERAL1 kLgAcSignature LITERAL1 +kLgAcSwingHAuto LITERAL1 +kLgAcSwingHOff LITERAL1 +kLgAcSwingHOffsetSize LITERAL1 +kLgAcSwingHSignature LITERAL1 +kLgAcSwingSignature LITERAL1 +kLgAcSwingVAuto LITERAL1 +kLgAcSwingVAuto_Short LITERAL1 +kLgAcSwingVHigh LITERAL1 +kLgAcSwingVHigh_Short LITERAL1 +kLgAcSwingVHighest LITERAL1 +kLgAcSwingVHighest_Short LITERAL1 +kLgAcSwingVLow LITERAL1 +kLgAcSwingVLow_Short LITERAL1 +kLgAcSwingVLowest LITERAL1 +kLgAcSwingVLowest_Short LITERAL1 +kLgAcSwingVMaxVanes LITERAL1 +kLgAcSwingVMiddle LITERAL1 +kLgAcSwingVMiddle_Short LITERAL1 +kLgAcSwingVOff LITERAL1 +kLgAcSwingVOff_Short LITERAL1 +kLgAcSwingVSwing LITERAL1 +kLgAcSwingVSwing_Short LITERAL1 +kLgAcSwingVUpperMiddle LITERAL1 +kLgAcSwingVUpperMiddle_Short LITERAL1 kLgAcTempAdjust LITERAL1 +kLgAcVaneSwingVBase LITERAL1 +kLgAcVaneSwingVHigh LITERAL1 +kLgAcVaneSwingVHighest LITERAL1 +kLgAcVaneSwingVLow LITERAL1 +kLgAcVaneSwingVLowest LITERAL1 +kLgAcVaneSwingVMiddle LITERAL1 +kLgAcVaneSwingVSize LITERAL1 +kLgAcVaneSwingVUpperMiddle LITERAL1 kLgBitMark LITERAL1 kLgBits LITERAL1 kLgDefaultRepeat LITERAL1 @@ -2644,6 +2746,7 @@ kMitsubishiAcBitMark LITERAL1 kMitsubishiAcCool LITERAL1 kMitsubishiAcDry LITERAL1 kMitsubishiAcExtraTolerance LITERAL1 +kMitsubishiAcFan LITERAL1 kMitsubishiAcFanAuto LITERAL1 kMitsubishiAcFanMax LITERAL1 kMitsubishiAcFanQuiet LITERAL1 @@ -3106,6 +3209,29 @@ kSamsungRptSpaceTicks LITERAL1 kSamsungTick LITERAL1 kSamsungZeroSpace LITERAL1 kSamsungZeroSpaceTicks LITERAL1 +kSanyoAc88Auto LITERAL1 +kSanyoAc88BitMark LITERAL1 +kSanyoAc88Bits LITERAL1 +kSanyoAc88Cool LITERAL1 +kSanyoAc88ExtraTolerance LITERAL1 +kSanyoAc88Fan LITERAL1 +kSanyoAc88FanAuto LITERAL1 +kSanyoAc88FanHigh LITERAL1 +kSanyoAc88FanLow LITERAL1 +kSanyoAc88FanMedium LITERAL1 +kSanyoAc88FeelCool LITERAL1 +kSanyoAc88FeelHeat LITERAL1 +kSanyoAc88Freq LITERAL1 +kSanyoAc88Gap LITERAL1 +kSanyoAc88HdrMark LITERAL1 +kSanyoAc88HdrSpace LITERAL1 +kSanyoAc88Heat LITERAL1 +kSanyoAc88MinRepeat LITERAL1 +kSanyoAc88OneSpace LITERAL1 +kSanyoAc88StateLength LITERAL1 +kSanyoAc88TempMax LITERAL1 +kSanyoAc88TempMin LITERAL1 +kSanyoAc88ZeroSpace LITERAL1 kSanyoAcAuto LITERAL1 kSanyoAcBitMark LITERAL1 kSanyoAcBits LITERAL1 @@ -3287,7 +3413,9 @@ kTcl112AcHdrMark LITERAL1 kTcl112AcHdrMarkTolerance LITERAL1 kTcl112AcHdrSpace LITERAL1 kTcl112AcHeat LITERAL1 +kTcl112AcNormal LITERAL1 kTcl112AcOneSpace LITERAL1 +kTcl112AcSpecial LITERAL1 kTcl112AcStateLength LITERAL1 kTcl112AcSwingVOff LITERAL1 kTcl112AcSwingVOn LITERAL1 @@ -3355,6 +3483,7 @@ kTempStr LITERAL1 kTempUpStr LITERAL1 kThreeLetterDayOfWeekStr LITERAL1 kTimeoutMs LITERAL1 +kTimerModeStr LITERAL1 kTimerStr LITERAL1 kToggleStr LITERAL1 kTolerance LITERAL1 @@ -3425,6 +3554,16 @@ kTranscoldTempMin LITERAL1 kTranscoldTempSize LITERAL1 kTranscoldUnknown LITERAL1 kTranscoldZeroSpace LITERAL1 +kTrotec3550BitMark LITERAL1 +kTrotec3550HdrMark LITERAL1 +kTrotec3550HdrSpace LITERAL1 +kTrotec3550MaxTempC LITERAL1 +kTrotec3550MaxTempF LITERAL1 +kTrotec3550MinTempC LITERAL1 +kTrotec3550MinTempF LITERAL1 +kTrotec3550OneSpace LITERAL1 +kTrotec3550TimerMax LITERAL1 +kTrotec3550ZeroSpace LITERAL1 kTrotecAuto LITERAL1 kTrotecBitMark LITERAL1 kTrotecBits LITERAL1 @@ -3478,6 +3617,7 @@ kUnknownThreshold LITERAL1 kUpStr LITERAL1 kUpperStr LITERAL1 kUseDefTol LITERAL1 +kVaneStr LITERAL1 kVestelAcAuto LITERAL1 kVestelAcBitMark LITERAL1 kVestelAcBits LITERAL1 diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json index 4c093c0ea..5bce2238e 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.json @@ -1,6 +1,6 @@ { "name": "IRremoteESP8266", - "version": "2.7.19", + "version": "2.7.20", "keywords": "infrared, ir, remote, esp8266, esp32", "description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)", "repository": diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties index f44ec1236..e4985e2a2 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/library.properties @@ -1,5 +1,5 @@ name=IRremoteESP8266 -version=2.7.19 +version=2.7.20 author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff maintainer=David Conran, Mark Szabo, Sebastien Warin, Roi Dayan, Massimiliano Pinto, Christian Nilsson sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32) diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp index 4988b67d7..9b4e10cbd 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.cpp @@ -203,6 +203,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) { #if SEND_HAIER_AC case decode_type_t::HAIER_AC: #endif +#if SEND_HAIER_AC176 + case decode_type_t::HAIER_AC176: +#endif // SEND_HAIER_AC176 #if SEND_HAIER_AC_YRW02 case decode_type_t::HAIER_AC_YRW02: #endif @@ -259,6 +262,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) { #if SEND_SANYO_AC case decode_type_t::SANYO_AC: #endif +#if SEND_SANYO_AC88 + case decode_type_t::SANYO_AC88: +#endif #if SEND_SHARP_AC case decode_type_t::SHARP_AC: #endif @@ -280,6 +286,9 @@ bool IRac::isProtocolSupported(const decode_type_t protocol) { #if SEND_TROTEC case decode_type_t::TROTEC: #endif +#if SEND_TROTEC_3550 + case decode_type_t::TROTEC_3550: +#endif // SEND_TROTEC_3550 #if SEND_TRUMA case decode_type_t::TRUMA: #endif // SEND_TRUMA @@ -1077,6 +1086,40 @@ void IRac::haier(IRHaierAC *ac, } #endif // SEND_HAIER_AC +#if SEND_HAIER_AC176 +/// Send a Haier 176 bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRHaierAC176 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. +void IRac::haier176(IRHaierAC176 *ac, + const bool on, const stdAc::opmode_t mode, + const float degrees, const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv, const bool turbo, + const bool filter, const int16_t sleep) { + ac->begin(); + ac->setMode(ac->convertMode(mode)); + ac->setTemp(degrees); + ac->setFan(ac->convertFan(fan)); + ac->setSwing(ac->convertSwingV(swingv)); + // No Horizontal Swing setting available. + // No Quiet setting available. + ac->setTurbo(turbo); + // No Light setting available. + ac->setHealth(filter); + // No Clean setting available. + // No Beep setting available. + ac->setSleep(sleep >= 0); // Sleep on this A/C is either on or off. + ac->setPower(on); + ac->send(); +} +#endif // SEND_HAIER_AC176 + #if SEND_HAIER_AC_YRW02 /// Send a Haier YRWO2 A/C message with the supplied settings. /// @param[in, out] ac A Ptr to an IRHaierACYRW02 object to use. @@ -1333,20 +1376,31 @@ void IRac::kelvinator(IRKelvinatorAC *ac, /// @param[in] mode The operation mode setting. /// @param[in] degrees The temperature setting in degrees. /// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] swingv_prev The previous vertical swing setting. +/// @param[in] swingh The horizontal swing setting. +/// @param[in] light Turn on the LED/Display mode. void IRac::lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, - const float degrees, const stdAc::fanspeed_t fan) { + const float degrees, const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, + const stdAc::swingh_t swingh, const bool light) { ac->begin(); ac->setModel(model); ac->setPower(on); ac->setMode(ac->convertMode(mode)); ac->setTemp(degrees); ac->setFan(ac->convertFan(fan)); - // No Vertical swing setting available. - // No Horizontal swing setting available. + ac->setSwingV(ac->convertSwingV(swingv_prev)); + ac->updateSwingPrev(); + ac->setSwingV(ac->convertSwingV(swingv)); + const uint8_t pos = ac->convertVaneSwingV(swingv); + for (uint8_t vane = 0; vane < kLgAcSwingVMaxVanes; vane++) + ac->setVaneSwingV(vane, pos); + ac->setSwingH(swingh != stdAc::swingh_t::kOff); // No Quiet setting available. // No Turbo setting available. - // No Light setting available. + ac->setLight(light); // No Filter setting available. // No Clean setting available. // No Beep setting available. @@ -1752,7 +1806,7 @@ void IRac::samsung(IRSamsungAc *ac, #endif // SEND_SAMSUNG_AC #if SEND_SANYO_AC -/// Send a Toshiba A/C message with the supplied settings. +/// Send a Sanyo A/C message with the supplied settings. /// @param[in, out] ac A Ptr to an IRSanyoAc object to use. /// @param[in] on The power setting. /// @param[in] mode The operation mode setting. @@ -1790,6 +1844,44 @@ void IRac::sanyo(IRSanyoAc *ac, } #endif // SEND_SANYO_AC +#if SEND_SANYO_AC88 +/// Send a Sanyo 88-bit A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRSanyoAc88 object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +/// @param[in] turbo Run the device in turbo/powerful mode. +/// @param[in] filter Turn on the (ion/pollen/etc) filter mode. +/// @param[in] sleep Nr. of minutes for sleep mode. -1 is Off, >= 0 is on. +/// @param[in] clock The time in Nr. of mins since midnight. < 0 is ignore. +void IRac::sanyo88(IRSanyoAc88 *ac, + const bool on, const stdAc::opmode_t mode, + const float degrees, const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv, const bool turbo, + const bool filter, const int16_t sleep, + const int16_t clock) { + ac->begin(); + ac->setPower(on); + ac->setMode(ac->convertMode(mode)); + ac->setTemp(degrees); + ac->setFan(ac->convertFan(fan)); + ac->setSwingV(swingv != stdAc::swingv_t::kOff); + // No Horizontal swing setting available. + // No Quiet setting available. + ac->setTurbo(turbo); + // No Econo setting available. + // No Light setting available. + ac->setFilter(filter); + // No Clean setting available. + // No Beep setting available. + ac->setSleep(sleep >= 0); // Sleep is either on/off, so convert to boolean. + if (clock >= 0) ac->setClock(clock); + ac->send(); +} +#endif // SEND_SANYO_AC88 + #if SEND_SHARP_AC /// Send a Sharp A/C message with the supplied settings. /// @note Multiple IR messages may be generated & sent. @@ -1854,6 +1946,7 @@ void IRac::sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, /// @param[in] fan The speed setting for the fan. /// @param[in] swingv The vertical swing setting. /// @param[in] swingh The horizontal swing setting. +/// @param[in] quiet Run the device in quiet/silent mode. /// @param[in] turbo Run the device in turbo/powerful mode. /// @param[in] light Turn on the LED/Display mode. /// @param[in] econo Run the device in economical mode. @@ -1862,8 +1955,8 @@ void IRac::tcl112(IRTcl112Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, - const bool turbo, const bool light, const bool econo, - const bool filter) { + const bool quiet, const bool turbo, const bool light, + const bool econo, const bool filter) { ac->begin(); ac->setPower(on); ac->setMode(ac->convertMode(mode)); @@ -1871,7 +1964,7 @@ void IRac::tcl112(IRTcl112Ac *ac, ac->setFan(ac->convertFan(fan)); ac->setSwingVertical(swingv != stdAc::swingv_t::kOff); ac->setSwingHorizontal(swingh != stdAc::swingh_t::kOff); - // No Quiet setting available. + ac->setQuiet(quiet); ac->setTurbo(turbo); ac->setLight(light); ac->setEcono(econo); @@ -2019,6 +2112,39 @@ void IRac::trotec(IRTrotecESP *ac, } #endif // SEND_TROTEC +#if SEND_TROTEC_3550 +/// Send a Trotec 3550 A/C message with the supplied settings. +/// @param[in, out] ac A Ptr to an IRTrotecESP object to use. +/// @param[in] on The power setting. +/// @param[in] mode The operation mode setting. +/// @param[in] celsius Temperature units. True is Celsius, False is Fahrenheit. +/// @param[in] degrees The temperature setting in degrees. +/// @param[in] fan The speed setting for the fan. +/// @param[in] swingv The vertical swing setting. +void IRac::trotec3550(IRTrotec3550 *ac, + const bool on, const stdAc::opmode_t mode, + const bool celsius, const float degrees, + const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv) { + ac->begin(); + ac->setPower(on); + ac->setMode(ac->convertMode(mode)); + ac->setTemp(degrees, celsius); + ac->setFan(ac->convertFan(fan)); + ac->setSwingV(swingv != stdAc::swingv_t::kOff); + // No Horizontal swing setting available. + // No Quiet setting available. + // No Turbo setting available. + // No Light setting available. + // No Filter setting available. + // No Clean setting available. + // No Beep setting available. + // No Sleep setting available. + // No Clock setting available. + ac->send(); +} +#endif // SEND_TROTEC_3550 + #if SEND_TRUMA /// Send a Truma A/C message with the supplied settings. /// @param[in, out] ac A Ptr to an IRTrumaAc object to use. @@ -2368,7 +2494,11 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { // Construct a pointer-safe previous power state incase prev is NULL/NULLPTR. #if (SEND_HITACHI_AC1 || SEND_SAMSUNG_AC || SEND_SHARP_AC) const bool prev_power = (prev != NULL) ? prev->power : !send.power; -#endif +#endif // (SEND_HITACHI_AC1 || SEND_SAMSUNG_AC || SEND_SHARP_AC) +#if SEND_LG + const stdAc::swingv_t prev_swingv = (prev != NULL) ? prev->swingv + : stdAc::swingv_t::kOff; +#endif // SEND_LG // Per vendor settings & setup. switch (send.protocol) { #if SEND_AIRWELL @@ -2562,6 +2692,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { break; } #endif // SEND_HAIER_AC +#if SEND_HAIER_AC176 + case HAIER_AC176: + { + IRHaierAC176 ac(_pin, _inverted, _modulation); + haier176(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, + send.turbo, send.filter, send.sleep); + break; + } +#endif // SEND_HAIER_AC176 #if SEND_HAIER_AC_YRW02 case HAIER_AC_YRW02: { @@ -2638,7 +2777,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { { IRLgAc ac(_pin, _inverted, _modulation); lg(&ac, (lg_ac_remote_model_t)send.model, send.power, send.mode, - send.degrees, send.fanspeed); + send.degrees, send.fanspeed, send.swingv, prev_swingv, send.swingh, + send.light); break; } #endif // SEND_LG @@ -2745,6 +2885,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { break; } #endif // SEND_SANYO_AC +#if SEND_SANYO_AC88 + case SANYO_AC88: + { + IRSanyoAc88 ac(_pin, _inverted, _modulation); + sanyo88(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, + send.turbo, send.filter, send.sleep, send.clock); + break; + } +#endif // SEND_SANYO_AC88 #if SEND_SHARP_AC case SHARP_AC: { @@ -2760,7 +2909,8 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { { IRTcl112Ac ac(_pin, _inverted, _modulation); tcl112(&ac, send.power, send.mode, degC, send.fanspeed, send.swingv, - send.swingh, send.turbo, send.light, send.econo, send.filter); + send.swingh, send.quiet, send.turbo, send.light, send.econo, + send.filter); break; } #endif // SEND_TCL112AC @@ -2799,6 +2949,15 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { break; } #endif // SEND_TROTEC +#if SEND_TROTEC_3550 + case TROTEC_3550: + { + IRTrotec3550 ac(_pin, _inverted, _modulation); + trotec3550(&ac, send.power, send.mode, send.celsius, send.degrees, + send.fanspeed, send.swingv); + break; + } +#endif // SEND_TROTEC_3550 #if SEND_TRUMA case TRUMA: { @@ -2849,7 +3008,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) { return false; // Fail, didn't match anything. } return true; // Success. -} +} // NOLINT(readability/fn_size) /// Update the previous state to the current one. void IRac::markAsSent(void) { @@ -2998,10 +3157,10 @@ stdAc::swingh_t IRac::strToSwingH(const char *str, else if (!strcasecmp(str, kOffStr) || !strcasecmp(str, kStopStr)) return stdAc::swingh_t::kOff; - else if (!strcasecmp(str, kLeftMaxStr) || - !strcasecmp(str, D_STR_LEFT " " D_STR_MAX) || - !strcasecmp(str, D_STR_MAX D_STR_LEFT) || - !strcasecmp(str, kMaxLeftStr)) + else if (!strcasecmp(str, kLeftMaxStr) || // "LeftMax" + !strcasecmp(str, D_STR_LEFT " " D_STR_MAX) || // "Left Max" + !strcasecmp(str, D_STR_MAX D_STR_LEFT) || // "MaxLeft" + !strcasecmp(str, kMaxLeftStr)) // "Max Left" return stdAc::swingh_t::kLeftMax; else if (!strcasecmp(str, kLeftStr)) return stdAc::swingh_t::kLeft; @@ -3013,10 +3172,10 @@ stdAc::swingh_t IRac::strToSwingH(const char *str, return stdAc::swingh_t::kMiddle; else if (!strcasecmp(str, kRightStr)) return stdAc::swingh_t::kRight; - else if (!strcasecmp(str, kRightMaxStr) || - !strcasecmp(str, D_STR_MAX " " D_STR_RIGHT) || - !strcasecmp(str, D_STR_MAX D_STR_RIGHT) || - !strcasecmp(str, kMaxRightStr)) + else if (!strcasecmp(str, kRightMaxStr) || // "RightMax" + !strcasecmp(str, D_STR_RIGHT " " D_STR_MAX) || // "Right Max" + !strcasecmp(str, D_STR_MAX D_STR_RIGHT) || // "MaxRight" + !strcasecmp(str, kMaxRightStr)) // "Max Right" return stdAc::swingh_t::kRightMax; else if (!strcasecmp(str, kWideStr)) return stdAc::swingh_t::kWide; @@ -3056,6 +3215,10 @@ int16_t IRac::strToModel(const char *str, const int16_t def) { return lg_ac_remote_model_t::GE6711AR2853M; } else if (!strcasecmp(str, "AKB75215403")) { return lg_ac_remote_model_t::AKB75215403; + } else if (!strcasecmp(str, "AKB74955603")) { + return lg_ac_remote_model_t::AKB74955603; + } else if (!strcasecmp(str, "AKB73757604")) { + return lg_ac_remote_model_t::AKB73757604; // Panasonic A/C families } else if (!strcasecmp(str, "LKE") || !strcasecmp(str, "PANASONICLKE")) { return panasonic_ac_remote_model_t::kPanasonicLke; @@ -3399,6 +3562,13 @@ namespace IRAcUtils { return ac.toString(); } #endif // DECODE_TROTEC +#if DECODE_TROTEC_3550 + case decode_type_t::TROTEC_3550: { + IRTrotec3550 ac(kGpioUnused); + ac.setRaw(result->state); + return ac.toString(); + } +#endif // DECODE_TROTEC_3550 #if DECODE_TRUMA case decode_type_t::TRUMA: { IRTrumaAc ac(kGpioUnused); @@ -3434,6 +3604,13 @@ namespace IRAcUtils { return ac.toString(); } #endif // DECODE_HAIER_AC +#if DECODE_HAIER_AC176 + case decode_type_t::HAIER_AC176: { + IRHaierAC176 ac(kGpioUnused); + ac.setRaw(result->state); + return ac.toString(); + } +#endif // DECODE_HAIER_AC176 #if DECODE_HAIER_AC_YRW02 case decode_type_t::HAIER_AC_YRW02: { IRHaierACYRW02 ac(kGpioUnused); @@ -3455,6 +3632,13 @@ namespace IRAcUtils { return ac.toString(); } #endif // DECODE_SANYO_AC +#if DECODE_SANYO_AC88 + case decode_type_t::SANYO_AC88: { + IRSanyoAc88 ac(kGpioUnused); + ac.setRaw(result->state); + return ac.toString(); + } +#endif // DECODE_SANYO_AC88 #if DECODE_SHARP_AC case decode_type_t::SHARP_AC: { IRSharpAc ac(kGpioUnused); @@ -3571,14 +3755,7 @@ namespace IRAcUtils { case decode_type_t::LG: case decode_type_t::LG2: { IRLgAc ac(kGpioUnused); - ac.setRaw(result->value); // Like Coolix, use value instead of state. - switch (result->decode_type) { - case decode_type_t::LG2: - ac.setModel(lg_ac_remote_model_t::AKB75215403); - break; - default: - ac.setModel(lg_ac_remote_model_t::GE6711AR2853M); - } + ac.setRaw(result->value, result->decode_type); // Use value, not state. return ac.isValidLgAc() ? ac.toString() : ""; } #endif // DECODE_LG @@ -3783,6 +3960,14 @@ namespace IRAcUtils { break; } #endif // DECODE_HAIER_AC +#if DECODE_HAIER_AC176 + case decode_type_t::HAIER_AC176: { + IRHaierAC176 ac(kGpioUnused); + ac.setRaw(decode->state); + *result = ac.toCommon(); + break; + } +#endif // DECODE_HAIER_AC176 #if DECODE_HAIER_AC_YRW02 case decode_type_t::HAIER_AC_YRW02: { IRHaierACYRW02 ac(kGpioUnused); @@ -3843,16 +4028,9 @@ namespace IRAcUtils { case decode_type_t::LG: case decode_type_t::LG2: { IRLgAc ac(kGpioUnused); - ac.setRaw(decode->value); // Uses value instead of state. + ac.setRaw(decode->value, decode->decode_type); // Use value, not state. if (!ac.isValidLgAc()) return false; - switch (decode->decode_type) { - case decode_type_t::LG2: - ac.setModel(lg_ac_remote_model_t::AKB75215403); - break; - default: - ac.setModel(lg_ac_remote_model_t::GE6711AR2853M); - } - *result = ac.toCommon(); + *result = ac.toCommon(prev); break; } #endif // DECODE_LG @@ -3946,6 +4124,14 @@ namespace IRAcUtils { break; } #endif // DECODE_SANYO_AC +#if DECODE_SANYO_AC88 + case decode_type_t::SANYO_AC88: { + IRSanyoAc88 ac(kGpioUnused); + ac.setRaw(decode->state); + *result = ac.toCommon(); + break; + } +#endif // DECODE_SANYO_AC88 #if DECODE_SHARP_AC case decode_type_t::SHARP_AC: { IRSharpAc ac(kGpioUnused); @@ -3958,7 +4144,7 @@ namespace IRAcUtils { case decode_type_t::TCL112AC: { IRTcl112Ac ac(kGpioUnused); ac.setRaw(decode->state); - *result = ac.toCommon(); + *result = ac.toCommon(prev); break; } #endif // DECODE_TCL112AC @@ -3994,6 +4180,14 @@ namespace IRAcUtils { break; } #endif // DECODE_TROTEC +#if DECODE_TROTEC_3550 + case decode_type_t::TROTEC_3550: { + IRTrotec3550 ac(kGpioUnused); + ac.setRaw(decode->state); + *result = ac.toCommon(); + break; + } +#endif // DECODE_TROTEC_3550 #if DECODE_TRUMA case decode_type_t::TRUMA: { IRTrumaAc ac(kGpioUnused); diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.h index 8f765ccbe..573e7ae7e 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRac.h @@ -255,6 +255,14 @@ void electra(IRElectraAc *ac, const bool filter, const int16_t sleep = -1, const int16_t clock = -1); #endif // SEND_HAIER_AC +#if SEND_HAIER_AC176 + void haier176(IRHaierAC176 *ac, + const bool on, const stdAc::opmode_t mode, + const float degrees, const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv, + const bool turbo, const bool filter, + const int16_t sleep = -1); +#endif // SEND_HAIER_AC176 #if SEND_HAIER_AC_YRW02 void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, @@ -307,7 +315,9 @@ void electra(IRElectraAc *ac, #if SEND_LG void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, - const float degrees, const stdAc::fanspeed_t fan); + const float degrees, const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, + const stdAc::swingh_t swingh, const bool light); #endif // SEND_LG #if SEND_MIDEA void midea(IRMideaAC *ac, @@ -391,6 +401,14 @@ void electra(IRElectraAc *ac, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep = -1); #endif // SEND_SANYO_AC +#if SEND_SANYO_AC88 + void sanyo88(IRSanyoAc88 *ac, + const bool on, const stdAc::opmode_t mode, + const float degrees, const stdAc::fanspeed_t fan, + const stdAc::swingv_t swingv, const bool turbo, + const bool filter, + const int16_t sleep = -1, const int16_t clock = -1); +#endif // SEND_SANYO_AC88 #if SEND_SHARP_AC void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, @@ -403,8 +421,8 @@ void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, - const bool turbo, const bool light, const bool econo, - const bool filter); + const bool quiet, const bool turbo, const bool light, + const bool econo, const bool filter); #endif // SEND_TCL112AC #if SEND_TECHNIBEL_AC void technibel(IRTechnibelAc *ac, @@ -429,6 +447,12 @@ void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep = -1); #endif // SEND_TROTEC +#if SEND_TROTEC_3550 + void trotec3550(IRTrotec3550 *ac, + const bool on, const stdAc::opmode_t mode, + const bool celsius, const float degrees, + const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv); +#endif // SEND_TROTEC_3550 #if SEND_TRUMA void truma(IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp index 38e9e5ec0..9c7519cbd 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.cpp @@ -899,6 +899,10 @@ bool IRrecv::decode(decode_results *results, irparams_t *save, DPRINTLN("Attempting Trotec decode"); if (decodeTrotec(results, offset)) return true; #endif // DECODE_TROTEC +#if DECODE_TROTEC_3550 + DPRINTLN("Attempting Trotec 3550 decode"); + if (decodeTrotec3550(results, offset)) return true; +#endif // DECODE_TROTEC_3550 #if DECODE_DAIKIN160 DPRINTLN("Attempting Daikin160 decode"); if (decodeDaikin160(results, offset)) return true; @@ -1024,6 +1028,14 @@ bool IRrecv::decode(decode_results *results, irparams_t *save, DPRINTLN("Attempting Kelon decode"); if (decodeKelon(results, offset)) return true; #endif // DECODE_KELON +#if DECODE_SANYO_AC88 + DPRINTLN("Attempting SanyoAc88 decode"); + if (decodeSanyoAc88(results, offset)) return true; +#endif // DECODE_SANYO_AC88 +#if DECODE_BOSE + DPRINTLN("Attempting Bose decode"); + if (decodeBose(results, offset)) return true; +#endif // DECODE_BOSE // Typically new protocols are added above this line. } #if DECODE_HASH diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.h index bdcca0cc0..1a883d509 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRrecv.h @@ -58,10 +58,10 @@ const uint8_t kDefaultESP32Timer = 3; #if DECODE_AC // Hitachi AC is the current largest state size. const uint16_t kStateSizeMax = kHitachiAc2StateLength; -#else -// Just define something -const uint16_t kStateSizeMax = 0; -#endif +#else // DECODE_AC +// Just define something (a uint64_t) +const uint16_t kStateSizeMax = sizeof(uint64_t); +#endif // DECODE_AC // Types @@ -308,6 +308,12 @@ class IRrecv { const uint16_t nbits = kSanyoAcBits, const bool strict = true); #endif // DECODE_SANYO_AC +#if DECODE_SANYO_AC88 + bool decodeSanyoAc88(decode_results *results, + uint16_t offset = kStartOffset, + const uint16_t nbits = kSanyoAc88Bits, + const bool strict = true); +#endif // DECODE_SANYO_AC88 #if DECODE_MITSUBISHI bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kMitsubishiBits, @@ -500,6 +506,11 @@ class IRrecv { const uint16_t nbits = kTrotecBits, const bool strict = true); #endif // DECODE_TROTEC +#if DECODE_TROTEC_3550 + bool decodeTrotec3550(decode_results *results, uint16_t offset = kStartOffset, + const uint16_t nbits = kTrotecBits, + const bool strict = true); +#endif // DECODE_TROTEC_3550 #if DECODE_MIDEA bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kMideaBits, @@ -751,6 +762,10 @@ class IRrecv { bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset, const uint16_t nbits = kKelonBits, const bool strict = true); #endif // DECODE_KELON +#if DECODE_BOSE + bool decodeBose(decode_results *results, uint16_t offset = kStartOffset, + const uint16_t nbits = kBoseBits, const bool strict = true); +#endif // DECODE_BOSE }; #endif // IRRECV_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h index 691855b89..35b45d958 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRremoteESP8266.h @@ -53,7 +53,7 @@ #endif // UNIT_TEST // Library Version -#define _IRREMOTEESP8266_VERSION_ "2.7.19" +#define _IRREMOTEESP8266_VERSION_ "2.7.20" // Set the language & locale for the library. See the `locale` dir for options. #ifndef _IR_LOCALE_ @@ -209,6 +209,13 @@ #define SEND_SANYO_AC _IR_ENABLE_DEFAULT_ #endif // SEND_SANYO_AC +#ifndef DECODE_SANYO_AC88 +#define DECODE_SANYO_AC88 _IR_ENABLE_DEFAULT_ +#endif // DECODE_SANYO_AC88 +#ifndef SEND_SANYO_AC88 +#define SEND_SANYO_AC88 _IR_ENABLE_DEFAULT_ +#endif // SEND_SANYO_AC88 + #ifndef DECODE_MITSUBISHI #define DECODE_MITSUBISHI _IR_ENABLE_DEFAULT_ #endif // DECODE_MITSUBISHI @@ -349,6 +356,13 @@ #define SEND_TROTEC _IR_ENABLE_DEFAULT_ #endif // SEND_TROTEC +#ifndef DECODE_TROTEC_3550 +#define DECODE_TROTEC_3550 _IR_ENABLE_DEFAULT_ +#endif // DECODE_TROTEC_3550 +#ifndef SEND_TROTEC_3550 +#define SEND_TROTEC_3550 _IR_ENABLE_DEFAULT_ +#endif // SEND_TROTEC_3550 + #ifndef DECODE_NIKAI #define DECODE_NIKAI _IR_ENABLE_DEFAULT_ #endif // DECODE_NIKAI @@ -769,6 +783,13 @@ #define SEND_KELON _IR_ENABLE_DEFAULT_ #endif // SEND_KELON +#ifndef DECODE_BOSE +#define DECODE_BOSE _IR_ENABLE_DEFAULT_ +#endif // DECODE_BOSE +#ifndef SEND_BOSE +#define SEND_BOSE _IR_ENABLE_DEFAULT_ +#endif // SEND_BOSE + #if (DECODE_ARGO || DECODE_DAIKIN || DECODE_FUJITSU_AC || DECODE_GREE || \ DECODE_KELVINATOR || DECODE_MITSUBISHI_AC || DECODE_TOSHIBA_AC || \ DECODE_TROTEC || DECODE_HAIER_AC || DECODE_HITACHI_AC || \ @@ -782,7 +803,8 @@ DECODE_MITSUBISHI112 || DECODE_HITACHI_AC424 || DECODE_HITACHI_AC3 || \ DECODE_HITACHI_AC344 || DECODE_CORONA_AC || DECODE_SANYO_AC || \ DECODE_VOLTAS || DECODE_MIRAGE || DECODE_HAIER_AC176 || \ - DECODE_TEKNOPOINT || DECODE_KELON || \ + DECODE_TEKNOPOINT || DECODE_KELON || DECODE_TROTEC_3550 || \ + DECODE_SANYO_AC88 || \ false) // Add any DECODE to the above if it uses result->state (see kStateSizeMax) // you might also want to add the protocol to hasACState function @@ -926,8 +948,11 @@ enum decode_type_t { HAIER_AC176, TEKNOPOINT, KELON, + TROTEC_3550, + SANYO_AC88, // 105 + BOSE, // Add new entries before this one, and update it to point to the last entry. - kLastDecodeType = KELON, + kLastDecodeType = BOSE, }; // Message lengths & required repeat values @@ -1113,6 +1138,9 @@ const uint16_t kSamsungAcExtendedBits = kSamsungAcExtendedStateLength * 8; const uint16_t kSamsungAcDefaultRepeat = kNoRepeat; const uint16_t kSanyoAcStateLength = 9; const uint16_t kSanyoAcBits = kSanyoAcStateLength * 8; +const uint16_t kSanyoAc88StateLength = 11; +const uint16_t kSanyoAc88Bits = kSanyoAc88StateLength * 8; +const uint16_t kSanyoAc88MinRepeat = 2; const uint16_t kSanyoSA8650BBits = 12; const uint16_t kSanyoLC7461AddressBits = 13; const uint16_t kSanyoLC7461CommandBits = 8; @@ -1166,6 +1194,7 @@ const uint16_t kVoltasStateLength = 10; const uint16_t kMilesTag2ShotBits = 14; const uint16_t kMilesTag2MsgBits = 24; const uint16_t kMilesMinRepeat = 0; +const uint16_t kBoseBits = 16; // Legacy defines. (Deprecated) diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.cpp index f552000aa..4814bd431 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.cpp @@ -580,6 +580,8 @@ uint16_t IRsend::minRepeats(const decode_type_t protocol) { return kDishMinRepeat; case EPSON: return kEpsonMinRepeat; + case SANYO_AC88: + return kSanyoAc88MinRepeat; case SONY: return kSonyMinRepeat; case SONY_38K: @@ -610,6 +612,7 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { case DENON: case SHARP: return 15; + case BOSE: case DISH: case GICABLE: case JVC: @@ -739,6 +742,8 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { return kSamsungAcBits; case SANYO_AC: return kSanyoAcBits; + case SANYO_AC88: + return kSanyoAc88Bits; case SHARP_AC: return kSharpAcBits; case TCL112AC: @@ -748,6 +753,7 @@ uint16_t IRsend::defaultBits(const decode_type_t protocol) { case TOSHIBA_AC: return kToshibaACBits; case TROTEC: + case TROTEC_3550: return kTrotecBits; case VOLTAS: return kVoltasBits; @@ -785,6 +791,11 @@ bool IRsend::send(const decode_type_t type, const uint64_t data, sendAiwaRCT501(data, nbits, min_repeat); break; #endif +#if SEND_BOSE + case BOSE: + sendBose(data, nbits, min_repeat); + break; +#endif // SEND_BOSE #if SEND_CARRIER_AC case CARRIER_AC: sendCarrierAC(data, nbits, min_repeat); @@ -1246,6 +1257,11 @@ bool IRsend::send(const decode_type_t type, const uint8_t *state, sendSanyoAc(state, nbytes); break; #endif // SEND_SANYO_AC +#if SEND_SANYO_AC88 + case SANYO_AC88: + sendSanyoAc88(state, nbytes); + break; +#endif // SEND_SANYO_AC88 #if SEND_SHARP_AC case SHARP_AC: sendSharpAc(state, nbytes); @@ -1271,6 +1287,11 @@ bool IRsend::send(const decode_type_t type, const uint8_t *state, sendTrotec(state, nbytes); break; #endif // SEND_TROTEC +#if SEND_TROTEC_3550 + case TROTEC_3550: + sendTrotec3550(state, nbytes); + break; +#endif // SEND_TROTEC_3550 #if SEND_WHIRLPOOL_AC case WHIRLPOOL_AC: sendWhirlpoolAC(state, nbytes); diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h index a936da0f7..c20fc64bc 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRsend.h @@ -176,6 +176,8 @@ enum whirlpool_ac_remote_model_t { enum lg_ac_remote_model_t { GE6711AR2853M = 1, // (1) LG 28-bit Protocol (default) AKB75215403, // (2) LG2 28-bit Protocol + AKB74955603, // (3) LG2 28-bit Protocol variant + AKB73757604, // (4) LG2 Variant of AKB74955603 }; @@ -317,6 +319,11 @@ class IRsend { const uint16_t nbytes = kSanyoAcStateLength, const uint16_t repeat = kNoRepeat); #endif // SEND_SANYO_AC +#if SEND_SANYO_AC88 + void sendSanyoAc88(const uint8_t *data, + const uint16_t nbytes = kSanyoAc88StateLength, + const uint16_t repeat = kSanyoAc88MinRepeat); +#endif // SEND_SANYO_AC88 #if SEND_DISH // sendDISH() should typically be called with repeat=3 as DISH devices // expect the code to be sent at least 4 times. (code + 3 repeats = 4 codes) @@ -483,7 +490,12 @@ class IRsend { void sendTrotec(const unsigned char data[], const uint16_t nbytes = kTrotecStateLength, const uint16_t repeat = kTrotecDefaultRepeat); -#endif +#endif // SEND_TROTEC +#if SEND_TROTEC_3550 + void sendTrotec3550(const unsigned char data[], + const uint16_t nbytes = kTrotecStateLength, + const uint16_t repeat = kTrotecDefaultRepeat); +#endif // SEND_TROTEC_3550 #if SEND_NIKAI void sendNikai(uint64_t data, uint16_t nbits = kNikaiBits, uint16_t repeat = kNoRepeat); @@ -721,6 +733,10 @@ class IRsend { void sendKelon(const uint64_t data, const uint16_t nbits = kKelonBits, const uint16_t repeat = kNoRepeat); #endif // SEND_KELON +#if SEND_BOSE + void sendBose(const uint64_t data, const uint16_t nbits = kBoseBits, + const uint16_t repeat = kNoRepeat); +#endif // SEND_BOSE protected: #ifdef UNIT_TEST diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.cpp index 91233ad80..a7bd7de29 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.cpp @@ -39,8 +39,9 @@ const PROGMEM char* kMouldStr = D_STR_MOULD; ///< "Mould" const PROGMEM char* kCleanStr = D_STR_CLEAN; ///< "Clean" const PROGMEM char* kPurifyStr = D_STR_PURIFY; ///< "Purify" const PROGMEM char* kTimerStr = D_STR_TIMER; ///< "Timer" -const PROGMEM char* kOnTimerStr = D_STR_ONTIMER; ///< "OnTimer" -const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER; ///< "OffTimer" +const PROGMEM char* kOnTimerStr = D_STR_ONTIMER; ///< "On Timer" +const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER; ///< "Off Timer" +const PROGMEM char* kTimerModeStr = D_STR_TIMERMODE; ///< "Timer Mode" const PROGMEM char* kClockStr = D_STR_CLOCK; ///< "Clock" const PROGMEM char* kCommandStr = D_STR_COMMAND; ///< "Command" const PROGMEM char* kXFanStr = D_STR_XFAN; ///< "XFan" @@ -99,6 +100,7 @@ const PROGMEM char* k6thSenseStr = D_STR_6THSENSE; ///< "6th Sense" const PROGMEM char* kTypeStr = D_STR_TYPE; ///< "Type" const PROGMEM char* kSpecialStr = D_STR_SPECIAL; ///< "Special" const PROGMEM char* kIdStr = D_STR_ID; ///< "Id" / Device Identifier +const PROGMEM char* kVaneStr = D_STR_VANE; ///< "Vane" const PROGMEM char* kAutoStr = D_STR_AUTO; ///< "Auto" const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC; ///< "Automatic" @@ -288,5 +290,8 @@ const PROGMEM char *kAllProtocolNamesStr = D_STR_HAIER_AC176 "\x0" D_STR_TEKNOPOINT "\x0" D_STR_KELON "\x0" + D_STR_TROTEC_3550 "\x0" + D_STR_SANYO_AC88 "\x0" + D_STR_BOSE "\x0" ///< New protocol strings should be added just above this line. "\x0"; ///< This string requires double null termination. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.h index d991276cd..55840688d 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRtext.h @@ -146,6 +146,7 @@ extern const char* kTempDownStr; extern const char* kTempStr; extern const char* kTempUpStr; extern const char* kThreeLetterDayOfWeekStr; +extern const char* kTimerModeStr; extern const char* kTimerStr; extern const char* kToggleStr; extern const char* kTopStr; @@ -156,6 +157,7 @@ extern const char* kTypeStr; extern const char* kUnknownStr; extern const char* kUpperStr; extern const char* kUpStr; +extern const char* kVaneStr; extern const char* kWallStr; extern const char* kWeeklyTimerStr; extern const char* kWideStr; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp index 9f6cee1be..f9892d2a4 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/IRutils.cpp @@ -116,6 +116,7 @@ decode_type_t strToDecodeType(const char * const str) { /// @return A String containing the protocol name. kUnknownStr if no match. String typeToString(const decode_type_t protocol, const bool isRepeat) { String result = ""; + result.reserve(30); // Size of longest protocol name + " (Repeat)" const char *ptr = kAllProtocolNamesStr; if (protocol > kLastDecodeType || protocol == decode_type_t::UNKNOWN) { result = kUnknownStr; @@ -176,11 +177,13 @@ bool hasACState(const decode_type_t protocol) { case PANASONIC_AC: case SAMSUNG_AC: case SANYO_AC: + case SANYO_AC88: case SHARP_AC: case TCL112AC: case TEKNOPOINT: case TOSHIBA_AC: case TROTEC: + case TROTEC_3550: case VOLTAS: case WHIRLPOOL_AC: return true; @@ -209,12 +212,25 @@ uint16_t getCorrectedRawLength(const decode_results * const results) { /// @return A String containing the code-ified result. String resultToSourceCode(const decode_results * const results) { String output = ""; + const uint16_t length = getCorrectedRawLength(results); + const bool hasState = hasACState(results->decode_type); // Reserve some space for the string to reduce heap fragmentation. - output.reserve(1536); // 1.5KB should cover most cases. + // "uint16_t rawData[9999] = {}; // LONGEST_PROTOCOL\n" = ~55 chars. + // "NNNN, " = ~7 chars on average per raw entry + // Protocols with a `state`: + // "uint8_t state[NN] = {};\n" = ~25 chars + // "0xNN, " = 6 chars per byte. + // Protocols without a `state`: + // " DEADBEEFDEADBEEF\n" + // "uint32_t address = 0xDEADBEEF;\n" + // "uint32_t command = 0xDEADBEEF;\n" + // "uint64_t data = 0xDEADBEEFDEADBEEF;" = ~116 chars max. + output.reserve(55 + (length * 7) + hasState ? 25 + (results->bits / 8) * 6 + : 116); // Start declaration output += F("uint16_t "); // variable type output += F("rawData["); // array name - output += uint64ToString(getCorrectedRawLength(results), 10); + output += uint64ToString(length, 10); // array size output += F("] = {"); // Start declaration @@ -242,13 +258,13 @@ String resultToSourceCode(const decode_results * const results) { output += F(" // "); output += typeToString(results->decode_type, results->repeat); // Only display the value if the decode type doesn't have an A/C state. - if (!hasACState(results->decode_type)) + if (!hasState) output += ' ' + uint64ToString(results->value, 16); output += F("\n"); // Now dump "known" codes if (results->decode_type != UNKNOWN) { - if (hasACState(results->decode_type)) { + if (hasState) { #if DECODE_AC uint16_t nbytes = results->bits / 8; output += F("uint8_t state["); @@ -292,7 +308,9 @@ String resultToTimingInfo(const decode_results * const results) { String output = ""; String value = ""; // Reserve some space for the string to reduce heap fragmentation. - output.reserve(2048); // 2KB should cover most cases. + // "Raw Timing[NNNN]:\n\n" = 19 chars + // " +123456, " / "-123456, " = ~12 chars on avg per raw entry. + output.reserve(19 + 12 * results->rawlen); // Should be less than this. value.reserve(6); // Max value should be 2^17 = 131072 output += F("Raw Timing["); output += uint64ToString(results->rawlen - 1, 10); @@ -341,7 +359,9 @@ String resultToHexidecimal(const decode_results * const result) { String resultToHumanReadableBasic(const decode_results * const results) { String output = ""; // Reserve some space for the string to reduce heap fragmentation. - output.reserve(2 * kStateSizeMax + 50); // Should cover most cases. + // "Protocol : LONGEST_PROTOCOL_NAME (Repeat)\n" + // "Code : 0x (NNNN Bits)\n" = 70 chars + output.reserve(2 * kStateSizeMax + 70); // Should cover most cases. // Show Encoding standard output += kProtocolStr; output += F(" : "); @@ -479,6 +499,8 @@ namespace irutils { String addLabeledString(const String value, const String label, const bool precomma) { String result = ""; + // ", " + ": " = 4 chars + result.reserve(4 + value.length() + label.length()); if (precomma) result += kCommaSpaceStr; result += label; result += kColonSpaceStr; @@ -558,7 +580,9 @@ namespace irutils { case decode_type_t::LG2: switch (model) { case lg_ac_remote_model_t::GE6711AR2853M: return F("GE6711AR2853M"); - case lg_ac_remote_model_t::AKB75215403: return F("AKB75215403"); + case lg_ac_remote_model_t::AKB75215403: return F("AKB75215403"); + case lg_ac_remote_model_t::AKB74955603: return F("AKB74955603"); + case lg_ac_remote_model_t::AKB73757604: return F("AKB73757604"); default: return kUnknownStr; } break; @@ -606,7 +630,10 @@ namespace irutils { /// @return The resulting String. String addModelToString(const decode_type_t protocol, const int16_t model, const bool precomma) { - String result = addIntToString(model, kModelStr, precomma); + String result = ""; + // ", Model: NNN (BlahBlahEtc)" = ~40 chars for longest model name. + result.reserve(40); + result += addIntToString(model, kModelStr, precomma); result += kSpaceLBraceStr; result += modelToStr(protocol, model); return result + ')'; @@ -635,7 +662,9 @@ namespace irutils { /// @return The resulting String. String addTempFloatToString(const float degrees, const bool celsius, const bool precomma) { - String result = addIntToString(degrees, kTempStr, precomma); + String result = ""; + result.reserve(14); // Assuming ", Temp: XXX.5F" is the largest. + result += addIntToString(degrees, kTempStr, precomma); // Is it a half degree? if (((uint16_t)(2 * degrees)) & 1) result += F(".5"); result += celsius ? 'C' : 'F'; @@ -654,7 +683,9 @@ namespace irutils { String addModeToString(const uint8_t mode, const uint8_t automatic, const uint8_t cool, const uint8_t heat, const uint8_t dry, const uint8_t fan) { - String result = addIntToString(mode, kModeStr); + String result = ""; + result.reserve(22); // ", Mode: NNN (UNKNOWN)" + result += addIntToString(mode, kModeStr); result += kSpaceLBraceStr; if (mode == automatic) result += kAutoStr; else if (mode == cool) result += kCoolStr; @@ -676,7 +707,9 @@ namespace irutils { /// @return The resulting String. String addDayToString(const uint8_t day_of_week, const int8_t offset, const bool precomma) { - String result = addIntToString(day_of_week, kDayStr, precomma); + String result = ""; + result.reserve(19); // ", Day: N (UNKNOWN)" + result += addIntToString(day_of_week, kDayStr, precomma); result += kSpaceLBraceStr; if ((uint8_t)(day_of_week + offset) < 7) #if UNIT_TEST @@ -705,7 +738,9 @@ namespace irutils { const uint8_t low, const uint8_t automatic, const uint8_t quiet, const uint8_t medium, const uint8_t maximum) { - String result = addIntToString(speed, kFanStr); + String result = ""; + result.reserve(21); // ", Fan: NNN (UNKNOWN)" + result += addIntToString(speed, kFanStr); result += kSpaceLBraceStr; if (speed == high) result += kHighStr; else if (speed == low) result += kLowStr; @@ -740,7 +775,9 @@ namespace irutils { const uint8_t off, const uint8_t leftright, const uint8_t rightleft, const uint8_t threed, const uint8_t wide) { - String result = addIntToString(position, kSwingHStr); + String result = ""; + result.reserve(30); // ", Swing(H): NNN (Left Right)" + result += addIntToString(position, kSwingHStr); result += kSpaceLBraceStr; if (position == automatic) { result += kAutoStr; @@ -798,7 +835,9 @@ namespace irutils { const uint8_t low, const uint8_t lowest, const uint8_t off, const uint8_t swing, const uint8_t breeze, const uint8_t circulate) { - String result = addIntToString(position, kSwingVStr); + String result = ""; + result.reserve(31); // ", Swing(V): NNN (Upper Middle)" + result += addIntToString(position, kSwingVStr); result += kSpaceLBraceStr; if (position == automatic) { result += kAutoStr; @@ -880,6 +919,7 @@ namespace irutils { uint8_t seconds = totalseconds % 60; String result = ""; + result.reserve(42); // "99 Days, 23 Hours, 59 Minutes, 59 Seconds" if (days) result += uint64ToString(days) + ' ' + String((days > 1) ? kDaysStr : kDayStr); diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Bose.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Bose.cpp new file mode 100644 index 000000000..a57d125b3 --- /dev/null +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Bose.cpp @@ -0,0 +1,69 @@ +// Copyright 2021 parsnip42 +// Copyright 2021 David Conran + +/// @file +/// @brief Support for Bose protocols. +/// @note Currently only tested against Bose TV Speaker. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/pull/1579 + +// Supports: +// Brand: Bose, Model: Bose TV Speaker + +#include "IRrecv.h" +#include "IRsend.h" + +const uint16_t kBoseHdrMark = 1100; +const uint16_t kBoseHdrSpace = 1350; +const uint16_t kBoseBitMark = 555; +const uint16_t kBoseOneSpace = 1435; +const uint16_t kBoseZeroSpace = 500; +const uint32_t kBoseGap = kDefaultMessageGap; +const uint16_t kBoseFreq = 38; + +#if SEND_BOSE +/// Send a Bose formatted message. +/// Status: STABLE / Known working. +/// @param[in] data The message to be sent. +/// @param[in] nbits The number of bits of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +void IRsend::sendBose(const uint64_t data, const uint16_t nbits, + const uint16_t repeat) { + sendGeneric(kBoseHdrMark, kBoseHdrSpace, + kBoseBitMark, kBoseOneSpace, + kBoseBitMark, kBoseZeroSpace, + kBoseBitMark, kBoseGap, + data, nbits, kBoseFreq, false, + repeat, kDutyDefault); +} +#endif // SEND_BOSE + +#if DECODE_BOSE +/// Decode the supplied Bose formatted message. +/// Status: STABLE / Known working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +bool IRrecv::decodeBose(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (strict && nbits != kBoseBits) return false; + + if (!matchGeneric(results->rawbuf + offset, &(results->value), + results->rawlen - offset, nbits, + kBoseHdrMark, kBoseHdrSpace, + kBoseBitMark, kBoseOneSpace, + kBoseBitMark, kBoseZeroSpace, + kBoseBitMark, kBoseGap, true, + kUseDefTol, 0, false)) { + return false; + } + + // + results->decode_type = decode_type_t::BOSE; + results->bits = nbits; + results->address = 0; + results->command = 0; + return true; +} +#endif // DECODE_BOSE diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.cpp index 062af2749..ea11daf78 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.cpp @@ -1,6 +1,6 @@ // Copyright 2016 sillyfrog // Copyright 2017 sillyfrog, crankyoldgit -// Copyright 2018-2020 crankyoldgit +// Copyright 2018-2021 crankyoldgit // Copyright 2019 pasna (IRDaikin160 class / Daikin176 class) /// @file @@ -16,6 +16,7 @@ /// @see Daikin160 https://github.com/crankyoldgit/IRremoteESP8266/issues/731 /// @see Daikin2 https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit#gid=236366525&range=B25:D32 /// @see Daikin2 https://github.com/crankyoldgit/IRremoteESP8266/issues/582 +/// @see Daikin2 https://github.com/crankyoldgit/IRremoteESP8266/issues/1535 /// @see Daikin2 https://www.daikin.co.nz/sites/default/files/daikin-split-system-US7-FTXZ25-50NV1B.pdf /// @see Daikin216 https://github.com/crankyoldgit/IRremoteESP8266/issues/689 /// @see Daikin216 https://github.com/danny-source/Arduino_DY_IRDaikin @@ -795,15 +796,11 @@ void IRDaikin2::setPower(const bool on) { /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getPower(void) const { - return _.Power && !_.Power2; -} +bool IRDaikin2::getPower(void) const { return _.Power && !_.Power2; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin2::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin2::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] desired_mode The desired operating mode. @@ -819,6 +816,7 @@ void IRDaikin2::setMode(const uint8_t desired_mode) { _.Mode = mode; // Redo the temp setting as Cool mode has a different min temp. if (mode == kDaikinCool) setTemp(getTemp()); + setHumidity(getHumidity()); // Make sure the humidity is okay for this mode. } /// Set the temperature. @@ -829,6 +827,8 @@ void IRDaikin2::setTemp(const uint8_t desired) { (_.Mode == kDaikinCool) ? kDaikin2MinCoolTemp : kDaikinMinTemp, desired); _.Temp = std::min(kDaikinMaxTemp, temp); + // If the humidity setting is in use, the temp is a fixed value. + if (_.HumidOn) _.Temp = kDaikinMaxTemp; } /// Get the current temperature setting. @@ -880,9 +880,7 @@ void IRDaikin2::setSwingVertical(const uint8_t position) { /// Get the Vertical Swing mode of the A/C. /// @return The native position/mode setting. -uint8_t IRDaikin2::getSwingVertical(void) const { - return _.SwingV; -} +uint8_t IRDaikin2::getSwingVertical(void) const { return _.SwingV; } /// Convert a stdAc::swingv_t enum into it's native setting. /// @param[in] position The enum to be converted. @@ -938,9 +936,7 @@ void IRDaikin2::setCurrentTime(const uint16_t numMins) { /// Get the clock time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin2::getCurrentTime(void) const { - return _.CurrentTime; -} +uint16_t IRDaikin2::getCurrentTime(void) const { return _.CurrentTime; } /// Set the enable status & time of the On Timer. /// @param[in] starttime The number of minutes past midnight. @@ -952,9 +948,7 @@ void IRDaikin2::enableOnTimer(const uint16_t starttime) { } /// Clear the On Timer flag. -void IRDaikin2::clearOnTimerFlag(void) { - _.OnTimer = false; -} +void IRDaikin2::clearOnTimerFlag(void) { _.OnTimer = false; } /// Disable the On timer. void IRDaikin2::disableOnTimer(void) { @@ -965,15 +959,11 @@ void IRDaikin2::disableOnTimer(void) { /// Get the On Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin2::getOnTime(void) const { - return _.OnTime; -} +uint16_t IRDaikin2::getOnTime(void) const { return _.OnTime; } /// Get the enable status of the On Timer. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getOnTimerEnabled(void) const { - return _.OnTimer; -} +bool IRDaikin2::getOnTimerEnabled(void) const { return _.OnTimer; } /// Set the enable status & time of the Off Timer. /// @param[in] endtime The number of minutes past midnight. @@ -992,123 +982,83 @@ void IRDaikin2::disableOffTimer(void) { /// Get the Off Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin2::getOffTime(void) const { - return _.OffTime; -} +uint16_t IRDaikin2::getOffTime(void) const { return _.OffTime; } /// Get the enable status of the Off Timer. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getOffTimerEnabled(void) const { - return _.OffTimer; -} +bool IRDaikin2::getOffTimerEnabled(void) const { return _.OffTimer; } /// Get the Beep status of the A/C. /// @return true, the setting is on. false, the setting is off. -uint8_t IRDaikin2::getBeep(void) const { - return _.Beep; -} +uint8_t IRDaikin2::getBeep(void) const { return _.Beep; } /// Set the Beep mode of the A/C. /// @param[in] beep true, the setting is on. false, the setting is off. -void IRDaikin2::setBeep(const uint8_t beep) { - _.Beep = beep; -} +void IRDaikin2::setBeep(const uint8_t beep) { _.Beep = beep; } /// Get the Light status of the A/C. /// @return true, the setting is on. false, the setting is off. -uint8_t IRDaikin2::getLight(void) const { - return _.Light; -} +uint8_t IRDaikin2::getLight(void) const { return _.Light; } /// Set the Light (LED) mode of the A/C. /// @param[in] light true, the setting is on. false, the setting is off. -void IRDaikin2::setLight(const uint8_t light) { - _.Light = light; -} +void IRDaikin2::setLight(const uint8_t light) { _.Light = light; } /// Set the Mould (filter) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setMold(const bool on) { - _.Mold = on; -} +void IRDaikin2::setMold(const bool on) { _.Mold = on; } /// Get the Mould (filter) mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getMold(void) const { - return _.Mold; -} +bool IRDaikin2::getMold(void) const { return _.Mold; } /// Set the Auto clean mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setClean(const bool on) { - _.Clean = on; -} +void IRDaikin2::setClean(const bool on) { _.Clean = on; } /// Get the Auto Clean mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getClean(void) const { - return _.Clean; -} +bool IRDaikin2::getClean(void) const { return _.Clean; } /// Set the Fresh Air mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setFreshAir(const bool on) { - _.FreshAir = on; -} +void IRDaikin2::setFreshAir(const bool on) { _.FreshAir = on; } /// Get the Fresh Air mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getFreshAir(void) const { - return _.FreshAir; -} +bool IRDaikin2::getFreshAir(void) const { return _.FreshAir; } /// Set the (High) Fresh Air mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setFreshAirHigh(const bool on) { - _.FreshAirHigh = on; -} +void IRDaikin2::setFreshAirHigh(const bool on) { _.FreshAirHigh = on; } /// Get the (High) Fresh Air mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getFreshAirHigh(void) const { - return _.FreshAirHigh; -} +bool IRDaikin2::getFreshAirHigh(void) const { return _.FreshAirHigh; } /// Set the Automatic Eye (Sensor) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setEyeAuto(bool on) { - _.EyeAuto = on; -} +void IRDaikin2::setEyeAuto(bool on) { _.EyeAuto = on; } /// Get the Automaitc Eye (Sensor) mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getEyeAuto(void) const { - return _.EyeAuto; -} +bool IRDaikin2::getEyeAuto(void) const { return _.EyeAuto; } /// Set the Eye (Sensor) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setEye(bool on) { - _.Eye = on; -} +void IRDaikin2::setEye(bool on) { _.Eye = on; } /// Get the Eye (Sensor) mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getEye(void) const { - return _.Eye; -} +bool IRDaikin2::getEye(void) const { return _.Eye; } /// Set the Economy mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setEcono(bool on) { - _.Econo = on; -} +void IRDaikin2::setEcono(bool on) { _.Econo = on; } /// Get the Economical mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getEcono(void) const { - return _.Econo; -} +bool IRDaikin2::getEcono(void) const { return _.Econo; } /// Set the enable status & time of the Sleep Timer. /// @param[in] sleeptime The number of minutes past midnight. @@ -1120,26 +1070,18 @@ void IRDaikin2::enableSleepTimer(const uint16_t sleeptime) { } /// Clear the sleep timer flag. -void IRDaikin2::clearSleepTimerFlag(void) { - _.SleepTimer = false; -} +void IRDaikin2::clearSleepTimerFlag(void) { _.SleepTimer = false; } /// Disable the sleep timer. -void IRDaikin2::disableSleepTimer(void) { - disableOnTimer(); -} +void IRDaikin2::disableSleepTimer(void) { disableOnTimer(); } /// Get the Sleep Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin2::getSleepTime(void) const { - return getOnTime(); -} +uint16_t IRDaikin2::getSleepTime(void) const { return getOnTime(); } /// Get the Sleep timer enabled status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getSleepTimerEnabled(void) const { - return _.SleepTimer; -} +bool IRDaikin2::getSleepTimerEnabled(void) const { return _.SleepTimer; } /// Set the Quiet mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -1151,9 +1093,7 @@ void IRDaikin2::setQuiet(const bool on) { /// Get the Quiet mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getQuiet(void) const { - return _.Quiet; -} +bool IRDaikin2::getQuiet(void) const { return _.Quiet; } /// Set the Powerful (Turbo) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -1165,20 +1105,49 @@ void IRDaikin2::setPowerful(const bool on) { /// Get the Powerful (Turbo) mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getPowerful(void) const { - return _.Powerful; -} +bool IRDaikin2::getPowerful(void) const { return _.Powerful; } /// Set the Purify (Filter) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin2::setPurify(const bool on) { - _.Purify = on; -} +void IRDaikin2::setPurify(const bool on) { _.Purify = on; } /// Get the Purify (Filter) mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin2::getPurify(void) const { - return _.Purify; +bool IRDaikin2::getPurify(void) const { return _.Purify; } + +/// Get the Humidity percentage setting of the A/C. +/// @return The setting percentage. 255 is Automatic. 0 is Off. +uint8_t IRDaikin2::getHumidity(void) const { return _.Humidity; } + +/// Set the Humidity percentage setting of the A/C. +/// @param[in] percent Percentage humidty. 255 is Auto. 0 is Off. +/// @note Only available in Dry & Heat modes, otherwise it is Off. +void IRDaikin2::setHumidity(const uint8_t percent) { + _.Humidity = kDaikin2HumidityOff; // Default to off. + switch (getMode()) { + case kDaikinHeat: + switch (percent) { + case kDaikin2HumidityOff: + case kDaikin2HumidityHeatLow: + case kDaikin2HumidityHeatMedium: + case kDaikin2HumidityHeatHigh: + case kDaikin2HumidityAuto: + _.Humidity = percent; + } + break; + case kDaikinDry: + switch (percent) { + case kDaikin2HumidityOff: + case kDaikin2HumidityDryLow: + case kDaikin2HumidityDryMedium: + case kDaikin2HumidityDryHigh: + case kDaikin2HumidityAuto: + _.Humidity = percent; + } + break; + } + _.HumidOn = (_.Humidity != kDaikin2HumidityOff); // Enabled? + setTemp(getTemp()); // Adjust the temperature if we need to. } /// Convert a stdAc::opmode_t enum into its native mode. @@ -1257,7 +1226,7 @@ stdAc::state_t IRDaikin2::toCommon(void) const { /// @return A human readable string. String IRDaikin2::toString(void) const { String result = ""; - result.reserve(310); // Reserve some heap for the string to reduce fragging. + result.reserve(330); // Reserve some heap for the string to reduce fragging. result += addBoolToString(getPower(), kPowerStr, false); result += addModeToString(_.Mode, kDaikinAuto, kDaikinCool, kDaikinHeat, kDaikinDry, kDaikinFan); @@ -1336,6 +1305,17 @@ String IRDaikin2::toString(void) const { result += addBoolToString(_.Powerful, kPowerfulStr); result += addBoolToString(_.Purify, kPurifyStr); result += addBoolToString(_.Econo, kEconoStr); + result += addIntToString(_.Humidity, kHumidStr); + switch (_.Humidity) { + case kDaikin2HumidityOff: + case kDaikin2HumidityAuto: + result += kSpaceLBraceStr; + result += _.Humidity ? kAutoStr : kOffStr; + result += ')'; + break; + default: + result += '%'; + } return result; } @@ -1513,21 +1493,15 @@ void IRDaikin216::off(void) { setPower(false); } /// Change the power setting. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin216::setPower(const bool on) { - _.Power = on; -} +void IRDaikin216::setPower(const bool on) { _.Power = on; } /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin216::getPower(void) const { - return _.Power; -} +bool IRDaikin216::getPower(void) const { return _.Power; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin216::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin216::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -1562,9 +1536,7 @@ void IRDaikin216::setTemp(const uint8_t temp) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRDaikin216::getTemp(void) const { - return _.Temp; -} +uint8_t IRDaikin216::getTemp(void) const { return _.Temp; } /// Set the speed of the fan. /// @param[in] fan The desired setting. @@ -1604,9 +1576,7 @@ void IRDaikin216::setSwingVertical(const bool on) { /// Get the Vertical Swing mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin216::getSwingVertical(void) const { - return _.SwingV; -} +bool IRDaikin216::getSwingVertical(void) const { return _.SwingV; } /// Set the Horizontal Swing mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -1616,9 +1586,7 @@ void IRDaikin216::setSwingHorizontal(const bool on) { /// Get the Horizontal Swing mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin216::getSwingHorizontal(void) const { - return _.SwingH; -} +bool IRDaikin216::getSwingHorizontal(void) const { return _.SwingH; } /// Set the Quiet mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -1636,9 +1604,7 @@ void IRDaikin216::setQuiet(const bool on) { /// Get the Quiet mode status of the A/C. /// @return true, the setting is on. false, the setting is off. /// @note This is a horrible hack till someone works out the quiet mode bit. -bool IRDaikin216::getQuiet(void) const { - return getFan() == kDaikinFanQuiet; -} +bool IRDaikin216::getQuiet(void) const { return getFan() == kDaikinFanQuiet; } /// Set the Powerful (Turbo) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -1650,9 +1616,7 @@ void IRDaikin216::setPowerful(const bool on) { /// Get the Powerful (Turbo) mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin216::getPowerful(void) const { - return _.Powerful; -} +bool IRDaikin216::getPowerful(void) const { return _.Powerful; } /// Convert the current internal state into its stdAc::state_t equivalent. /// @return The stdAc equivalent of the native settings. @@ -1872,21 +1836,15 @@ void IRDaikin160::off(void) { setPower(false); } /// Change the power setting. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin160::setPower(const bool on) { - _.Power = on; -} +void IRDaikin160::setPower(const bool on) { _.Power = on; } /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin160::getPower(void) const { - return _.Power; -} +bool IRDaikin160::getPower(void) const { return _.Power; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin160::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin160::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -1920,9 +1878,7 @@ void IRDaikin160::setTemp(const uint8_t temp) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRDaikin160::getTemp(void) const { - return _.Temp + 10; -} +uint8_t IRDaikin160::getTemp(void) const { return _.Temp + 10; } /// Set the speed of the fan. /// @param[in] fan The desired setting. @@ -1979,9 +1935,7 @@ void IRDaikin160::setSwingVertical(const uint8_t position) { /// Get the Vertical Swing mode of the A/C. /// @return The native position/mode setting. -uint8_t IRDaikin160::getSwingVertical(void) const { - return _.SwingV; -} +uint8_t IRDaikin160::getSwingVertical(void) const { return _.SwingV; } /// Convert a stdAc::swingv_t enum into it's native setting. /// @param[in] position The enum to be converted. @@ -2244,15 +2198,11 @@ void IRDaikin176::setPower(const bool on) { /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin176::getPower(void) const { - return _.Power; -} +bool IRDaikin176::getPower(void) const { return _.Power; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin176::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin176::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -2320,9 +2270,7 @@ void IRDaikin176::setTemp(const uint8_t temp) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRDaikin176::getTemp(void) const { - return _.Temp + 9; -} +uint8_t IRDaikin176::getTemp(void) const { return _.Temp + 9; } /// Set the speed of the fan. /// @param[in] fan The desired setting. @@ -2342,9 +2290,7 @@ void IRDaikin176::setFan(const uint8_t fan) { /// Get the current fan speed setting. /// @return The current fan speed. -uint8_t IRDaikin176::getFan(void) const { - return _.Fan; -} +uint8_t IRDaikin176::getFan(void) const { return _.Fan; } /// Convert a stdAc::fanspeed_t enum into it's native speed. /// @param[in] speed The enum to be converted. @@ -2371,9 +2317,16 @@ void IRDaikin176::setSwingHorizontal(const uint8_t position) { /// Get the Horizontal Swing mode of the A/C. /// @return The native position/mode setting. -uint8_t IRDaikin176::getSwingHorizontal(void) const { - return _.SwingH; -} +uint8_t IRDaikin176::getSwingHorizontal(void) const { return _.SwingH; } + +/// Get the Unit Id of the A/C. +/// @return The Unit Id the A/C is to use. +uint8_t IRDaikin176::getId(void) const { return _.Id1; } + +/// Set the Unit Id of the A/C. +/// @param[in] num The Unit Id the A/C is to use. +/// @note 0 for Unit A; 1 for Unit B +void IRDaikin176::setId(const uint8_t num) { _.Id1 = _.Id2 = num; } /// Convert a stdAc::swingh_t enum into it's native setting. /// @param[in] position The enum to be converted. @@ -2437,7 +2390,7 @@ stdAc::state_t IRDaikin176::toCommon(void) const { /// @return A human readable string. String IRDaikin176::toString(void) const { String result = ""; - result.reserve(80); // Reserve some heap for the string to reduce fragging. + result.reserve(90); // Reserve some heap for the string to reduce fragging. result += addBoolToString(_.Power, kPowerStr, false); result += addModeToString(_.Mode, kDaikin176Auto, kDaikin176Cool, kDaikin176Heat, kDaikin176Dry, kDaikin176Fan); @@ -2456,6 +2409,7 @@ String IRDaikin176::toString(void) const { kDaikin176SwingHAuto, kDaikin176SwingHAuto, kDaikin176SwingHAuto); + result += addIntToString(_.Id1, kIdStr); return result; } @@ -2622,21 +2576,15 @@ void IRDaikin128::send(const uint16_t repeat) { /// Set the Power toggle setting of the A/C. /// @param[in] toggle true, the setting is on. false, the setting is off. -void IRDaikin128::setPowerToggle(const bool toggle) { - _.Power = toggle; -} +void IRDaikin128::setPowerToggle(const bool toggle) { _.Power = toggle; } /// Get the Power toggle setting of the A/C. /// @return The current operating mode setting. -bool IRDaikin128::getPowerToggle(void) const { - return _.Power; -} +bool IRDaikin128::getPowerToggle(void) const { return _.Power; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin128::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin128::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -2693,15 +2641,11 @@ void IRDaikin128::setTemp(const uint8_t temp) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRDaikin128::getTemp(void) const { - return bcdToUint8(_.Temp); -} +uint8_t IRDaikin128::getTemp(void) const { return bcdToUint8(_.Temp); } /// Get the current fan speed setting. /// @return The current fan speed. -uint8_t IRDaikin128::getFan(void) const { - return _.Fan; -} +uint8_t IRDaikin128::getFan(void) const { return _.Fan; } /// Set the speed of the fan. /// @param[in] speed The desired setting. @@ -2755,27 +2699,19 @@ stdAc::fanspeed_t IRDaikin128::toCommonFanSpeed(const uint8_t speed) { /// Set the Vertical Swing mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin128::setSwingVertical(const bool on) { - _.SwingV = on; -} +void IRDaikin128::setSwingVertical(const bool on) { _.SwingV = on; } /// Get the Vertical Swing mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin128::getSwingVertical(void) const { - return _.SwingV; -} +bool IRDaikin128::getSwingVertical(void) const { return _.SwingV; } /// Set the Sleep mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin128::setSleep(const bool on) { - _.Sleep = on; -} +void IRDaikin128::setSleep(const bool on) { _.Sleep = on; } /// Get the Sleep mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin128::getSleep(void) const { - return _.Sleep; -} +bool IRDaikin128::getSleep(void) const { return _.Sleep; } /// Set the Economy mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -2786,9 +2722,7 @@ void IRDaikin128::setEcono(const bool on) { /// Get the Economical mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin128::getEcono(void) const { - return _.Econo; -} +bool IRDaikin128::getEcono(void) const { return _.Econo; } /// Set the Quiet mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -2802,9 +2736,7 @@ void IRDaikin128::setQuiet(const bool on) { /// Get the Quiet mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin128::getQuiet(void) const { - return _.Fan == kDaikin128FanQuiet; -} +bool IRDaikin128::getQuiet(void) const { return _.Fan == kDaikin128FanQuiet; } /// Set the Powerful (Turbo) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -2841,15 +2773,11 @@ uint16_t IRDaikin128::getClock(void) const { /// Set the enable status of the On Timer. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin128::setOnTimerEnabled(const bool on) { - _.OnTimer = on; -} +void IRDaikin128::setOnTimerEnabled(const bool on) { _.OnTimer = on; } /// Get the enable status of the On Timer. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin128::getOnTimerEnabled(void) const { - return _.OnTimer; -} +bool IRDaikin128::getOnTimerEnabled(void) const { return _.OnTimer; } #define SETTIME(x, n) do { \ uint16_t mins = n;\ @@ -2868,21 +2796,15 @@ void IRDaikin128::setOnTimer(const uint16_t mins_since_midnight) { /// Get the On Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin128::getOnTimer(void) const { - return GETTIME(On); -} +uint16_t IRDaikin128::getOnTimer(void) const { return GETTIME(On); } /// Set the enable status of the Off Timer. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin128::setOffTimerEnabled(const bool on) { - _.OffTimer = on; -} +void IRDaikin128::setOffTimerEnabled(const bool on) { _.OffTimer = on; } /// Get the enable status of the Off Timer. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin128::getOffTimerEnabled(void) const { - return _.OffTimer; -} +bool IRDaikin128::getOffTimerEnabled(void) const { return _.OffTimer; } /// Set the Off Timer time for the A/C unit. /// @param[in] mins_since_midnight Nr. of minutes past midnight. @@ -2892,9 +2814,7 @@ void IRDaikin128::setOffTimer(const uint16_t mins_since_midnight) { /// Get the Off Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin128::getOffTimer(void) const { - return GETTIME(Off); -} +uint16_t IRDaikin128::getOffTimer(void) const { return GETTIME(Off); } /// Set the Light toggle setting of the A/C. /// @param[in] unit Device to show the LED (Light) Display info about. @@ -3202,21 +3122,15 @@ void IRDaikin152::off(void) { setPower(false); } /// Change the power setting. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin152::setPower(const bool on) { - _.Power = on; -} +void IRDaikin152::setPower(const bool on) { _.Power = on; } /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getPower(void) const { - return _.Power; -} +bool IRDaikin152::getPower(void) const { return _.Power; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin152::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin152::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -3258,9 +3172,7 @@ void IRDaikin152::setTemp(const uint8_t temp) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRDaikin152::getTemp(void) const { - return _.Temp; -} +uint8_t IRDaikin152::getTemp(void) const { return _.Temp; } /// Set the speed of the fan. /// @param[in] fan The desired setting. @@ -3303,9 +3215,7 @@ void IRDaikin152::setSwingV(const bool on) { /// Get the Vertical Swing mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getSwingV(void) const { - return _.SwingV; -} +bool IRDaikin152::getSwingV(void) const { return _.SwingV; } /// Set the Quiet mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -3317,9 +3227,7 @@ void IRDaikin152::setQuiet(const bool on) { /// Get the Quiet mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getQuiet(void) const { - return _.Quiet; -} +bool IRDaikin152::getQuiet(void) const { return _.Quiet; } /// Set the Powerful (Turbo) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -3335,9 +3243,7 @@ void IRDaikin152::setPowerful(const bool on) { /// Get the Powerful (Turbo) mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getPowerful(void) const { - return _.Powerful; -} +bool IRDaikin152::getPowerful(void) const { return _.Powerful; } /// Set the Economy mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -3349,21 +3255,15 @@ void IRDaikin152::setEcono(const bool on) { /// Get the Economical mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getEcono(void) const { - return _.Econo; -} +bool IRDaikin152::getEcono(void) const { return _.Econo; } /// Set the Sensor mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin152::setSensor(const bool on) { - _.Sensor = on; -} +void IRDaikin152::setSensor(const bool on) { _.Sensor = on; } /// Get the Sensor mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getSensor(void) const { - return _.Sensor; -} +bool IRDaikin152::getSensor(void) const { return _.Sensor; } /// Set the Comfort mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -3380,9 +3280,7 @@ void IRDaikin152::setComfort(const bool on) { /// Get the Comfort mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin152::getComfort(void) const { - return _.Comfort; -} +bool IRDaikin152::getComfort(void) const { return _.Comfort; } /// Convert the current internal state into its stdAc::state_t equivalent. /// @return The stdAc equivalent of the native settings. @@ -3551,14 +3449,10 @@ bool IRDaikin64::validChecksum(const uint64_t state) { } /// Calculate and set the checksum values for the internal state. -void IRDaikin64::checksum(void) { - _.Sum = calcChecksum(_.raw); -} +void IRDaikin64::checksum(void) { _.Sum = calcChecksum(_.raw); } /// Reset the internal state to a fixed known good state. -void IRDaikin64::stateReset(void) { - _.raw = kDaikin64KnownGoodState; -} +void IRDaikin64::stateReset(void) { _.raw = kDaikin64KnownGoodState; } /// Get a copy of the internal state as a valid code for this protocol. /// @return A valid code for this protocol based on the current internal state. @@ -3573,15 +3467,11 @@ void IRDaikin64::setRaw(const uint64_t new_state) { _.raw = new_state; } /// Set the Power toggle setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin64::setPowerToggle(const bool on) { - _.Power = on; -} +void IRDaikin64::setPowerToggle(const bool on) { _.Power = on; } /// Get the Power toggle setting of the A/C. /// @return The current operating mode setting. -bool IRDaikin64::getPowerToggle(void) const { - return _.Power; -} +bool IRDaikin64::getPowerToggle(void) const { return _.Power; } /// Set the temperature. /// @param[in] temp The temperature in degrees celsius. @@ -3593,15 +3483,11 @@ void IRDaikin64::setTemp(const uint8_t temp) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRDaikin64::getTemp(void) const { - return bcdToUint8(_.Temp); -} +uint8_t IRDaikin64::getTemp(void) const { return bcdToUint8(_.Temp); } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRDaikin64::getMode(void) const { - return _.Mode; -} +uint8_t IRDaikin64::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -3645,9 +3531,7 @@ stdAc::opmode_t IRDaikin64::toCommonMode(const uint8_t mode) { /// Get the current fan speed setting. /// @return The current fan speed. -uint8_t IRDaikin64::getFan(void) const { - return _.Fan; -} +uint8_t IRDaikin64::getFan(void) const { return _.Fan; } /// Set the speed of the fan. /// @param[in] speed The desired setting. @@ -3696,9 +3580,7 @@ stdAc::fanspeed_t IRDaikin64::toCommonFanSpeed(const uint8_t speed) { /// Get the Turbo (Powerful) mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin64::getTurbo(void) const { - return _.Fan == kDaikin64FanTurbo; -} +bool IRDaikin64::getTurbo(void) const { return _.Fan == kDaikin64FanTurbo; } /// Set the Turbo (Powerful) mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -3712,9 +3594,7 @@ void IRDaikin64::setTurbo(const bool on) { /// Get the Quiet mode status of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin64::getQuiet(void) const { - return _.Fan == kDaikin64FanQuiet; -} +bool IRDaikin64::getQuiet(void) const { return _.Fan == kDaikin64FanQuiet; } /// Set the Quiet mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -3728,27 +3608,19 @@ void IRDaikin64::setQuiet(const bool on) { /// Set the Vertical Swing mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin64::setSwingVertical(const bool on) { - _.SwingV = on; -} +void IRDaikin64::setSwingVertical(const bool on) { _.SwingV = on; } /// Get the Vertical Swing mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin64::getSwingVertical(void) const { - return _.SwingV; -} +bool IRDaikin64::getSwingVertical(void) const { return _.SwingV; } /// Set the Sleep mode of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin64::setSleep(const bool on) { - _.Sleep = on; -} +void IRDaikin64::setSleep(const bool on) { _.Sleep = on; } /// Get the Sleep mode of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin64::getSleep(void) const { - return _.Sleep; -} +bool IRDaikin64::getSleep(void) const { return _.Sleep; } /// Set the clock on the A/C unit. /// @param[in] mins_since_midnight Nr. of minutes past midnight. @@ -3767,21 +3639,15 @@ uint16_t IRDaikin64::getClock(void) const { /// Set the enable status of the On Timer. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin64::setOnTimeEnabled(const bool on) { - _.OnTimer = on; -} +void IRDaikin64::setOnTimeEnabled(const bool on) { _.OnTimer = on; } /// Get the enable status of the On Timer. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin64::getOnTimeEnabled(void) const { - return _.OnTimer; -} +bool IRDaikin64::getOnTimeEnabled(void) const { return _.OnTimer; } /// Get the On Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin64::getOnTime(void) const { - return GETTIME(On); -} +uint16_t IRDaikin64::getOnTime(void) const { return GETTIME(On); } /// Set the On Timer time for the A/C unit. /// @param[in] mins_since_midnight Nr. of minutes past midnight. @@ -3791,21 +3657,15 @@ void IRDaikin64::setOnTime(const uint16_t mins_since_midnight) { /// Set the enable status of the Off Timer. /// @param[in] on true, the setting is on. false, the setting is off. -void IRDaikin64::setOffTimeEnabled(const bool on) { - _.OffTimer = on; -} +void IRDaikin64::setOffTimeEnabled(const bool on) { _.OffTimer = on; } /// Get the enable status of the Off Timer. /// @return true, the setting is on. false, the setting is off. -bool IRDaikin64::getOffTimeEnabled(void) const { - return _.OffTimer; -} +bool IRDaikin64::getOffTimeEnabled(void) const { return _.OffTimer; } /// Get the Off Timer time to be sent to the A/C unit. /// @return The number of minutes past midnight. -uint16_t IRDaikin64::getOffTime(void) const { - return GETTIME(Off); -} +uint16_t IRDaikin64::getOffTime(void) const { return GETTIME(Off); } /// Set the Off Timer time for the A/C unit. /// @param[in] mins_since_midnight Nr. of minutes past midnight. diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.h index 297fb3995..0a12c5b69 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Daikin.h @@ -1,6 +1,6 @@ // Copyright 2016 sillyfrog // Copyright 2017 sillyfrog, crankyoldgit -// Copyright 2018-2020 crankyoldgit +// Copyright 2018-2021 crankyoldgit // Copyright 2019 pasna (IRDaikin160 class / Daikin176 class) /// @file @@ -16,6 +16,7 @@ /// @see Daikin160 https://github.com/crankyoldgit/IRremoteESP8266/issues/731 /// @see Daikin2 https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit#gid=236366525&range=B25:D32 /// @see Daikin2 https://github.com/crankyoldgit/IRremoteESP8266/issues/582 +/// @see Daikin2 https://github.com/crankyoldgit/IRremoteESP8266/issues/1535 /// @see Daikin2 https://www.daikin.co.nz/sites/default/files/daikin-split-system-US7-FTXZ25-50NV1B.pdf /// @see Daikin216 https://github.com/crankyoldgit/IRremoteESP8266/issues/689 /// @see Daikin216 https://github.com/danny-source/Arduino_DY_IRDaikin @@ -44,6 +45,8 @@ // Brand: Daikin, Model: FTXM-M A/C (DAIKIN) // Brand: Daikin, Model: ARC466A33 remote (DAIKIN) // Brand: Daikin, Model: FTWX35AXV1 A/C (DAIKIN64) +// Brand: Daikin, Model: ARC484A4 remote (DAIKIN216) +// Brand: Daikin, Model: FTQ60TV16U2 A/C (DAIKIN216) #ifndef IR_DAIKIN_H_ #define IR_DAIKIN_H_ @@ -227,9 +230,10 @@ union Daikin2Protocol{ uint64_t :1; // Byte 26 uint64_t :1; - uint64_t Temp :7; + uint64_t Temp :6; + uint64_t HumidOn :1; // Byte 27 - uint64_t :8; + uint64_t Humidity :8; // Byte 28 uint64_t :4; uint64_t Fan :4; @@ -299,6 +303,19 @@ const uint8_t kDaikin2SwingHAuto = 0xBE; // A.k.a "Swing" const uint8_t kDaikin2SwingHOff = 0xBF; const uint8_t kDaikin2SwingHSwing = kDaikin2SwingHAuto; +// Ref: +// https://github.com/crankyoldgit/IRremoteESP8266/issues/1535#issuecomment-882092486 +// https://docs.google.com/spreadsheets/d/1kxHgFqiUB9ETXYEkszAIN5gE-t2ykvnPCnOV-sPUE0A/edit?usp=sharing +const uint8_t kDaikin2HumidityOff = 0x00; +const uint8_t kDaikin2HumidityHeatLow = 0x28; // Humidify (Heat) only (40%?) +const uint8_t kDaikin2HumidityHeatMedium = 0x2D; // Humidify (Heat) only (45%?) +const uint8_t kDaikin2HumidityHeatHigh = 0x32; // Humidify (Heat) only (50%?) +const uint8_t kDaikin2HumidityDryLow = 0x32; // Dry only (50%?) +const uint8_t kDaikin2HumidityDryMedium = 0x37; // Dry only (55%?) +const uint8_t kDaikin2HumidityDryHigh = 0x3C; // Dry only (60%?) +const uint8_t kDaikin2HumidityAuto = 0xFF; + + const uint8_t kDaikin2MinCoolTemp = 18; // Min temp (in C) when in Cool mode. /// Native representation of a Daikin216 A/C message. @@ -411,12 +428,28 @@ const uint8_t kDaikin160SwingVAuto = 0xF; union Daikin176Protocol{ uint8_t raw[kDaikin176StateLength]; ///< The state of the IR remote. struct { - // Byte 0~5 - uint8_t pad0[6]; + // Byte 0~2 + uint8_t :8; + uint8_t :8; + uint8_t :8; + // Byte 3 + uint8_t Id1 :1; + uint8_t :7; + // Byte 4 + uint8_t :8; + // Byte 5 + uint8_t :8; // Byte 6 uint8_t Sum1 :8; - // Byte 7~11 - uint8_t pad1[5]; + // Byte 7-9 + uint8_t :8; + uint8_t :8; + uint8_t :8; + // Byte 10 + uint8_t Id2 :1; + uint8_t :7; + // Byte 11 + uint8_t :8; // Byte 12 uint8_t :4; uint8_t AltMode :3; @@ -805,6 +838,8 @@ class IRDaikin2 { bool getFreshAir(void) const; void setFreshAirHigh(const bool on); bool getFreshAirHigh(void) const; + uint8_t getHumidity(void) const; + void setHumidity(const uint8_t percent); uint8_t* getRaw(void); void setRaw(const uint8_t new_code[]); static bool validChecksum(uint8_t state[], @@ -975,6 +1010,8 @@ class IRDaikin176 { static uint8_t convertFan(const stdAc::fanspeed_t speed); void setSwingHorizontal(const uint8_t position); uint8_t getSwingHorizontal(void) const; + uint8_t getId(void) const; + void setId(const uint8_t num); static uint8_t convertSwingH(const stdAc::swingh_t position); static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); static stdAc::opmode_t toCommonMode(const uint8_t mode); diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Gree.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Gree.cpp index 51bf0fd7e..1d1371b2d 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Gree.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Gree.cpp @@ -548,9 +548,9 @@ stdAc::fanspeed_t IRGreeAC::toCommonFanSpeed(const uint8_t speed) { } } -/// Convert a stdAc::swingv_t enum into it's native setting. -/// @param[in] pos The enum to be converted. -/// @return The native equivalent of the enum. +/// Convert a native Vertical Swing into its stdAc equivalent. +/// @param[in] pos The native setting to be converted. +/// @return The stdAc equivalent of the native setting. stdAc::swingv_t IRGreeAC::toCommonSwingV(const uint8_t pos) { switch (pos) { case kGreeSwingUp: return stdAc::swingv_t::kHighest; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.cpp index 2a01f3b36..a43e9400d 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.cpp @@ -11,6 +11,7 @@ /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1480 #include "ir_Haier.h" +#include #include #ifndef UNIT_TEST #include @@ -537,63 +538,74 @@ String IRHaierAC::toString(void) const { /// @param[in] pin GPIO to be used when sending. /// @param[in] inverted Is the output signal to be inverted? /// @param[in] use_modulation Is frequency modulation to be used? -IRHaierACYRW02::IRHaierACYRW02(const uint16_t pin, const bool inverted, - const bool use_modulation) +IRHaierAC176::IRHaierAC176(const uint16_t pin, const bool inverted, + const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } /// Set up hardware to be able to send a message. -void IRHaierACYRW02::begin(void) { _irsend.begin(); } +void IRHaierAC176::begin(void) { _irsend.begin(); } -#if SEND_HAIER_AC_YRW02 +#if SEND_HAIER_AC176 /// Send the current internal state as an IR message. /// @param[in] repeat Nr. of times the message will be repeated. -void IRHaierACYRW02::send(const uint16_t repeat) { - _irsend.sendHaierACYRW02(getRaw(), kHaierACYRW02StateLength, repeat); +void IRHaierAC176::send(const uint16_t repeat) { + _irsend.sendHaierAC176(getRaw(), kHaierAC176StateLength, repeat); } -#endif // SEND_HAIER_AC_YRW02 +#endif // SEND_HAIER_AC176 /// Calculate and set the checksum values for the internal state. -void IRHaierACYRW02::checksum(void) { +void IRHaierAC176::checksum(void) { _.Sum = sumBytes(_.raw, kHaierACYRW02StateLength - 1); + _.Sum2 = sumBytes(_.raw + kHaierACYRW02StateLength, + kHaierAC176StateLength - kHaierACYRW02StateLength - 1); } /// Verify the checksum is valid for a given state. /// @param[in] state The array to verify the checksum of. /// @param[in] length The length of the state array. /// @return true, if the state has a valid checksum. Otherwise, false. -bool IRHaierACYRW02::validChecksum(uint8_t state[], const uint16_t length) { +bool IRHaierAC176::validChecksum(const uint8_t state[], const uint16_t length) { if (length < 2) return false; // 1 byte of data can't have a checksum. - return (state[length - 1] == sumBytes(state, length - 1)); + if (length < kHaierAC176StateLength) { // Is it too short? + // Then it is just a checksum of the whole thing. + return (state[length - 1] == sumBytes(state, length - 1)); + } else { // It is long enough for two checksums. + return (state[kHaierACYRW02StateLength - 1] == + sumBytes(state, kHaierACYRW02StateLength - 1)) && + (state[length - 1] == + sumBytes(state + kHaierACYRW02StateLength, + length - kHaierACYRW02StateLength - 1)); + } } /// Reset the internal state to a fixed known good state. -void IRHaierACYRW02::stateReset(void) { +void IRHaierAC176::stateReset(void) { std::memset(_.raw, 0, sizeof _.raw); - _.Prefix = kHaierAcYrw02Prefix; + _.Prefix2 = kHaierAc176Prefix; _.Temp = kHaierAcDefTemp - kHaierAcMinTemp; _.Health = true; - _.Fan = kHaierAcYrw02FanAuto; + setFan(kHaierAcYrw02FanAuto); _.Power = true; _.Button = kHaierAcYrw02ButtonPower; } /// Get a PTR to the internal state/code for this protocol. /// @return PTR to a code for this protocol based on the current internal state. -uint8_t* IRHaierACYRW02::getRaw(void) { +uint8_t* IRHaierAC176::getRaw(void) { checksum(); return _.raw; } /// Set the internal state from a valid code for this protocol. /// @param[in] new_code A valid code for this protocol. -void IRHaierACYRW02::setRaw(const uint8_t new_code[]) { - memcpy(_.raw, new_code, kHaierACYRW02StateLength); +void IRHaierAC176::setRaw(const uint8_t new_code[]) { + memcpy(_.raw, new_code, kHaierAC176StateLength); } /// Set the Button/Command setting of the A/C. /// @param[in] button The value of the button/command that was pressed. -void IRHaierACYRW02::setButton(uint8_t button) { +void IRHaierAC176::setButton(uint8_t button) { switch (button) { case kHaierAcYrw02ButtonTempUp: case kHaierAcYrw02ButtonTempDown: @@ -610,13 +622,13 @@ void IRHaierACYRW02::setButton(uint8_t button) { /// Get the Button/Command setting of the A/C. /// @return The value of the button/command that was pressed. -uint8_t IRHaierACYRW02::getButton(void) const { +uint8_t IRHaierAC176::getButton(void) const { return _.Button; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. -void IRHaierACYRW02::setMode(uint8_t mode) { +void IRHaierAC176::setMode(uint8_t mode) { uint8_t new_mode = mode; _.Button = kHaierAcYrw02ButtonMode; switch (mode) { @@ -632,13 +644,13 @@ void IRHaierACYRW02::setMode(uint8_t mode) { /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRHaierACYRW02::getMode(void) const { +uint8_t IRHaierAC176::getMode(void) const { return _.Mode; } /// Set the temperature. /// @param[in] celsius The temperature in degrees celsius. -void IRHaierACYRW02::setTemp(const uint8_t celsius) { +void IRHaierAC176::setTemp(const uint8_t celsius) { uint8_t temp = celsius; if (temp < kHaierAcMinTemp) temp = kHaierAcMinTemp; @@ -656,58 +668,58 @@ void IRHaierACYRW02::setTemp(const uint8_t celsius) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. -uint8_t IRHaierACYRW02::getTemp(void) const { +uint8_t IRHaierAC176::getTemp(void) const { return _.Temp + kHaierAcMinTemp; } /// Set the Health (filter) setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRHaierACYRW02::setHealth(const bool on) { +void IRHaierAC176::setHealth(const bool on) { _.Button = kHaierAcYrw02ButtonHealth; _.Health = on; } /// Get the Health (filter) setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRHaierACYRW02::getHealth(void) const { +bool IRHaierAC176::getHealth(void) const { return _.Health; } /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRHaierACYRW02::getPower(void) const { +bool IRHaierAC176::getPower(void) const { return _.Power; } /// Change the power setting. /// @param[in] on true, the setting is on. false, the setting is off. -void IRHaierACYRW02::setPower(const bool on) { +void IRHaierAC176::setPower(const bool on) { _.Button = kHaierAcYrw02ButtonPower; _.Power = on; } /// Change the power setting to On. -void IRHaierACYRW02::on(void) { setPower(true); } +void IRHaierAC176::on(void) { setPower(true); } /// Change the power setting to Off. -void IRHaierACYRW02::off(void) { setPower(false); } +void IRHaierAC176::off(void) { setPower(false); } /// Get the Sleep setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRHaierACYRW02::getSleep(void) const { +bool IRHaierAC176::getSleep(void) const { return _.Sleep; } /// Set the Sleep setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRHaierACYRW02::setSleep(const bool on) { +void IRHaierAC176::setSleep(const bool on) { _.Button = kHaierAcYrw02ButtonSleep; _.Sleep = on; } /// Get the Turbo setting of the A/C. /// @return The current turbo speed setting. -uint8_t IRHaierACYRW02::getTurbo(void) const { +uint8_t IRHaierAC176::getTurbo(void) const { return _.Turbo; } @@ -715,7 +727,7 @@ uint8_t IRHaierACYRW02::getTurbo(void) const { /// @param[in] speed The desired turbo speed setting. /// @note Valid speeds are kHaierAcYrw02TurboOff, kHaierAcYrw02TurboLow, & /// kHaierAcYrw02TurboHigh. -void IRHaierACYRW02::setTurbo(uint8_t speed) { +void IRHaierAC176::setTurbo(uint8_t speed) { switch (speed) { case kHaierAcYrw02TurboOff: case kHaierAcYrw02TurboLow: @@ -727,32 +739,31 @@ void IRHaierACYRW02::setTurbo(uint8_t speed) { /// Get the current fan speed setting. /// @return The current fan speed. -uint8_t IRHaierACYRW02::getFan(void) const { +uint8_t IRHaierAC176::getFan(void) const { return _.Fan; } /// Set the speed of the fan. /// @param[in] speed The desired setting. -void IRHaierACYRW02::setFan(uint8_t speed) { +void IRHaierAC176::setFan(uint8_t speed) { switch (speed) { case kHaierAcYrw02FanLow: case kHaierAcYrw02FanMed: case kHaierAcYrw02FanHigh: case kHaierAcYrw02FanAuto: _.Fan = speed; + _.Fan2 = (speed == kHaierAcYrw02FanAuto) ? 0 : speed; _.Button = kHaierAcYrw02ButtonFan; } } /// Get the Vertical Swing position setting of the A/C. /// @return The native position/mode. -uint8_t IRHaierACYRW02::getSwing(void) const { - return _.Swing; -} +uint8_t IRHaierAC176::getSwing(void) const { return _.Swing; } /// Set the Vertical Swing mode of the A/C. /// @param[in] pos The position/mode to set the vanes to. -void IRHaierACYRW02::setSwing(uint8_t pos) { +void IRHaierAC176::setSwing(uint8_t pos) { uint8_t newpos = pos; switch (pos) { case kHaierAcYrw02SwingOff: @@ -772,10 +783,94 @@ void IRHaierACYRW02::setSwing(uint8_t pos) { _.Swing = newpos; } + +/// Set the Timer operating mode. +/// @param[in] mode The timer mode to use. +void IRHaierAC176::setTimerMode(const uint8_t mode) { + _.TimerMode = (mode > kHaierAcYrw02OffThenOnTimer) ? kHaierAcYrw02NoTimers + : mode; + switch (_.TimerMode) { + case kHaierAcYrw02NoTimers: + setOnTimer(0); // Disable the On timer. + setOffTimer(0); // Disable the Off timer. + break; + case kHaierAcYrw02OffTimer: + setOnTimer(0); // Disable the On timer. + break; + case kHaierAcYrw02OnTimer: + setOffTimer(0); // Disable the Off timer. + break; + } +} + +/// Get the Timer operating mode. +/// @return The mode of the timer is currently configured to. +uint8_t IRHaierAC176::getTimerMode(void) const { return _.TimerMode; } + +/// Set the number of minutes of the On Timer setting. +/// @param[in] mins Nr. of Minutes for the Timer. `0` means disable the timer. +void IRHaierAC176::setOnTimer(const uint16_t mins) { + const uint16_t nr_mins = std::min((uint16_t)(23 * 60 + 59), mins); + _.OnTimerHrs = nr_mins / 60; + _.OnTimerMins = nr_mins % 60; + + const bool enabled = (nr_mins > 0); + uint8_t mode = getTimerMode(); + switch (mode) { + case kHaierAcYrw02OffTimer: + mode = enabled ? kHaierAcYrw02OffThenOnTimer : mode; + break; + case kHaierAcYrw02OnThenOffTimer: + case kHaierAcYrw02OffThenOnTimer: + mode = enabled ? kHaierAcYrw02OffThenOnTimer : kHaierAcYrw02OffTimer; + break; + default: + // Enable/Disable the On timer for the simple case. + mode = enabled << 1; + } + _.TimerMode = mode; +} + +/// Get the number of minutes of the On Timer setting. +/// @return Nr of minutes. +uint16_t IRHaierAC176::getOnTimer(void) const { + return _.OnTimerHrs * 60 + _.OnTimerMins; +} + +/// Set the number of minutes of the Off Timer setting. +/// @param[in] mins Nr. of Minutes for the Timer. `0` means disable the timer. +void IRHaierAC176::setOffTimer(const uint16_t mins) { + const uint16_t nr_mins = std::min((uint16_t)(23 * 60 + 59), mins); + _.OffTimerHrs = nr_mins / 60; + _.OffTimerMins = nr_mins % 60; + + const bool enabled = (nr_mins > 0); + uint8_t mode = getTimerMode(); + switch (mode) { + case kHaierAcYrw02OnTimer: + mode = enabled ? kHaierAcYrw02OnThenOffTimer : mode; + break; + case kHaierAcYrw02OnThenOffTimer: + case kHaierAcYrw02OffThenOnTimer: + mode = enabled ? kHaierAcYrw02OnThenOffTimer : kHaierAcYrw02OnTimer; + break; + default: + // Enable/Disable the Off timer for the simple case. + mode = enabled; + } + _.TimerMode = mode; +} + +/// Get the number of minutes of the Off Timer setting. +/// @return Nr of minutes. +uint16_t IRHaierAC176::getOffTimer(void) const { + return _.OffTimerHrs * 60 + _.OffTimerMins; +} + /// Convert a stdAc::opmode_t enum into its native mode. /// @param[in] mode The enum to be converted. /// @return The native equivalent of the enum. -uint8_t IRHaierACYRW02::convertMode(const stdAc::opmode_t mode) { +uint8_t IRHaierAC176::convertMode(const stdAc::opmode_t mode) { switch (mode) { case stdAc::opmode_t::kCool: return kHaierAcYrw02Cool; case stdAc::opmode_t::kHeat: return kHaierAcYrw02Heat; @@ -788,7 +883,7 @@ uint8_t IRHaierACYRW02::convertMode(const stdAc::opmode_t mode) { /// Convert a stdAc::fanspeed_t enum into it's native speed. /// @param[in] speed The enum to be converted. /// @return The native equivalent of the enum. -uint8_t IRHaierACYRW02::convertFan(const stdAc::fanspeed_t speed) { +uint8_t IRHaierAC176::convertFan(const stdAc::fanspeed_t speed) { switch (speed) { case stdAc::fanspeed_t::kMin: case stdAc::fanspeed_t::kLow: return kHaierAcYrw02FanLow; @@ -802,7 +897,7 @@ uint8_t IRHaierACYRW02::convertFan(const stdAc::fanspeed_t speed) { /// Convert a stdAc::swingv_t enum into it's native setting. /// @param[in] position The enum to be converted. /// @return The native equivalent of the enum. -uint8_t IRHaierACYRW02::convertSwingV(const stdAc::swingv_t position) { +uint8_t IRHaierAC176::convertSwingV(const stdAc::swingv_t position) { switch (position) { case stdAc::swingv_t::kHighest: case stdAc::swingv_t::kHigh: return kHaierAcYrw02SwingTop; @@ -817,7 +912,7 @@ uint8_t IRHaierACYRW02::convertSwingV(const stdAc::swingv_t position) { /// Convert a native mode into its stdAc equivalent. /// @param[in] mode The native setting to be converted. /// @return The stdAc equivalent of the native setting. -stdAc::opmode_t IRHaierACYRW02::toCommonMode(const uint8_t mode) { +stdAc::opmode_t IRHaierAC176::toCommonMode(const uint8_t mode) { switch (mode) { case kHaierAcYrw02Cool: return stdAc::opmode_t::kCool; case kHaierAcYrw02Heat: return stdAc::opmode_t::kHeat; @@ -830,7 +925,7 @@ stdAc::opmode_t IRHaierACYRW02::toCommonMode(const uint8_t mode) { /// Convert a native fan speed into its stdAc equivalent. /// @param[in] speed The native setting to be converted. /// @return The stdAc equivalent of the native setting. -stdAc::fanspeed_t IRHaierACYRW02::toCommonFanSpeed(const uint8_t speed) { +stdAc::fanspeed_t IRHaierAC176::toCommonFanSpeed(const uint8_t speed) { switch (speed) { case kHaierAcYrw02FanHigh: return stdAc::fanspeed_t::kMax; case kHaierAcYrw02FanMed: return stdAc::fanspeed_t::kMedium; @@ -842,7 +937,7 @@ stdAc::fanspeed_t IRHaierACYRW02::toCommonFanSpeed(const uint8_t speed) { /// Convert a stdAc::swingv_t enum into it's native setting. /// @param[in] pos The enum to be converted. /// @return The native equivalent of the enum. -stdAc::swingv_t IRHaierACYRW02::toCommonSwingV(const uint8_t pos) { +stdAc::swingv_t IRHaierAC176::toCommonSwingV(const uint8_t pos) { switch (pos) { case kHaierAcYrw02SwingTop: return stdAc::swingv_t::kHighest; case kHaierAcYrw02SwingMiddle: return stdAc::swingv_t::kMiddle; @@ -855,7 +950,7 @@ stdAc::swingv_t IRHaierACYRW02::toCommonSwingV(const uint8_t pos) { /// Convert the current internal state into its stdAc::state_t equivalent. /// @return The stdAc equivalent of the native settings. -stdAc::state_t IRHaierACYRW02::toCommon(void) const { +stdAc::state_t IRHaierAC176::toCommon(void) const { stdAc::state_t result; result.protocol = decode_type_t::HAIER_AC_YRW02; result.model = -1; // No models used. @@ -881,7 +976,7 @@ stdAc::state_t IRHaierACYRW02::toCommon(void) const { /// Convert the current internal state into a human readable string. /// @return A human readable string. -String IRHaierACYRW02::toString(void) const { +String IRHaierAC176::toString(void) const { String result = ""; result.reserve(130); // Reserve some heap for the string to reduce fragging. result += addBoolToString(_.Power, kPowerStr, false); @@ -970,8 +1065,74 @@ String IRHaierACYRW02::toString(void) const { result += ')'; result += addBoolToString(_.Sleep, kSleepStr); result += addBoolToString(_.Health, kHealthStr); + const uint8_t tmode = getTimerMode(); + result += addIntToString(tmode, kTimerModeStr); + result += kSpaceLBraceStr; + switch (tmode) { + case kHaierAcYrw02NoTimers: + result += kNAStr; + break; + case kHaierAcYrw02OnTimer: + result += kOnStr; + break; + case kHaierAcYrw02OffTimer: + result += kOffStr; + break; + case kHaierAcYrw02OnThenOffTimer: + result += kOnStr; + result += '-'; + result += kOffStr; + break; + case kHaierAcYrw02OffThenOnTimer: + result += kOffStr; + result += '-'; + result += kOnStr; + break; + default: + result += kUnknownStr; + } + result += ')'; + result += addLabeledString((tmode != kHaierAcYrw02NoTimers && + tmode != kHaierAcYrw02OffTimer) ? + minsToString(getOnTimer()) : kOffStr, kOnTimerStr); + result += addLabeledString((tmode != kHaierAcYrw02NoTimers && + tmode != kHaierAcYrw02OnTimer) ? + minsToString(getOffTimer()) : kOffStr, kOffTimerStr); return result; } +// End of IRHaierAC176 class. + + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +IRHaierACYRW02::IRHaierACYRW02(const uint16_t pin, const bool inverted, + const bool use_modulation) + : IRHaierAC176(pin, inverted, use_modulation) { stateReset(); } + +#if SEND_HAIER_AC_YRW02 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +void IRHaierACYRW02::send(const uint16_t repeat) { + _irsend.sendHaierACYRW02(getRaw(), kHaierACYRW02StateLength, repeat); +} +#endif // SEND_HAIER_AC_YRW02 + +/// Set the internal state from a valid code for this protocol. +/// @param[in] new_code A valid code for this protocol. +void IRHaierACYRW02::setRaw(const uint8_t new_code[]) { + memcpy(_.raw, new_code, kHaierACYRW02StateLength); +} + +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length of the state array. +/// @return true, if the state has a valid checksum. Otherwise, false. +bool IRHaierACYRW02::validChecksum(const uint8_t state[], + const uint16_t length) { + return IRHaierAC176::validChecksum(state, length); +} // End of IRHaierACYRW02 class. #if (DECODE_HAIER_AC || DECODE_HAIER_AC_YRW02) @@ -1076,6 +1237,7 @@ bool IRrecv::decodeHaierAC176(decode_results* results, uint16_t offset, // Compliance if (strict) { if (results->state[0] != kHaierAcYrw02Prefix) return false; + if (!IRHaierAC176::validChecksum(results->state, nbits / 8)) return false; } // Success diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.h index df696642c..2e287cd12 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Haier.h @@ -179,6 +179,7 @@ union HaierYRW02Protocol{ }; const uint8_t kHaierAcYrw02Prefix = 0xA6; +const uint8_t kHaierAc176Prefix = 0xB7; const uint8_t kHaierAcYrw02SwingOff = 0x0; const uint8_t kHaierAcYrw02SwingTop = 0x1; @@ -190,7 +191,7 @@ const uint8_t kHaierAcYrw02SwingAuto = 0xC; // Airflow const uint8_t kHaierAcYrw02FanHigh = 0b001; const uint8_t kHaierAcYrw02FanMed = 0b010; const uint8_t kHaierAcYrw02FanLow = 0b011; -const uint8_t kHaierAcYrw02FanAuto = 0b101; +const uint8_t kHaierAcYrw02FanAuto = 0b101; // HAIER_AC176 uses `0` in Fan2 const uint8_t kHaierAcYrw02TurboOff = 0x0; const uint8_t kHaierAcYrw02TurboHigh = 0x1; @@ -212,6 +213,76 @@ const uint8_t kHaierAcYrw02ButtonHealth = 0x7; const uint8_t kHaierAcYrw02ButtonTurbo = 0x8; const uint8_t kHaierAcYrw02ButtonSleep = 0xB; +const uint8_t kHaierAcYrw02NoTimers = 0b000; +const uint8_t kHaierAcYrw02OffTimer = 0b001; +const uint8_t kHaierAcYrw02OnTimer = 0b010; +const uint8_t kHaierAcYrw02OnThenOffTimer = 0b100; +const uint8_t kHaierAcYrw02OffThenOnTimer = 0b101; + +/// Native representation of a Haier 176 bit A/C message. +union HaierAc176Protocol{ + uint8_t raw[kHaierAC176StateLength]; ///< The state in native form + struct { + // Byte 0 + uint8_t Prefix :8; + // Byte 1 + uint8_t Swing :4; + uint8_t Temp :4; // 16C~30C + // Byte 2 + uint8_t :8; + // Byte 3 + uint8_t :1; + uint8_t Health :1; + uint8_t :3; + uint8_t TimerMode :3; + // Byte 4 + uint8_t :6; + uint8_t Power :1; + uint8_t :1; + // Byte 5 + uint8_t OffTimerHrs :5; + uint8_t Fan :3; + // Byte 6 + uint8_t OffTimerMins:6; + uint8_t Turbo:2; + // Byte 7 + uint8_t OnTimerHrs :5; + uint8_t Mode :3; + // Byte 8 + uint8_t OnTimerMins :6; + uint8_t :1; + uint8_t Sleep :1; + // Byte 9 + uint8_t :8; + // Byte 10 + uint8_t :8; + // Byte 11 + uint8_t :8; + // Byte 12 + uint8_t Button :4; + uint8_t :4; + // Byte 13 + uint8_t Sum :8; + // Byte 14 + uint8_t Prefix2 :8; + // Byte 15 + uint8_t :8; + // Byte 16 + uint8_t :6; + uint8_t Fan2 :2; + // Byte 17 + uint8_t :8; + // Byte 18 + uint8_t :8; + // Byte 19 + uint8_t :8; + // Byte 20 + uint8_t :8; + // Byte 21 + uint8_t Sum2 :8; + }; +}; + // Legacy Haier YRW02 remote defines. #define HAIER_AC_YRW02_SWING_OFF kHaierAcYrw02SwingOff #define HAIER_AC_YRW02_SWING_TOP kHaierAcYrw02SwingTop @@ -256,6 +327,7 @@ class IRHaierAC { int8_t calibrate(void) { return _irsend.calibrate(); } #endif // SEND_HAIER_AC void begin(void); + void stateReset(void); void setCommand(const uint8_t command); uint8_t getCommand(void) const; @@ -308,24 +380,25 @@ class IRHaierAC { /// @endcond #endif HaierProtocol _; - void stateReset(void); void checksum(void); }; -/// Class for handling detailed Haier ACYRW02 A/C messages. -class IRHaierACYRW02 { +/// Class for handling detailed Haier 176 bit A/C messages. +class IRHaierAC176 { + friend class IRHaierACYRW02; public: - explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false, - const bool use_modulation = true); -#if SEND_HAIER_AC_YRW02 - void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat); + explicit IRHaierAC176(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); +#if SEND_HAIER_AC176 + virtual void send(const uint16_t repeat = kHaierAc176DefaultRepeat); /// Run the calibration to calculate uSec timing offsets for this platform. /// @return The uSec timing offset needed per modulation of the IR Led. /// @note This will produce a 65ms IR signal pulse at 38kHz. /// Only ever needs to be run once per object instantiation, if at all. int8_t calibrate(void) { return _irsend.calibrate(); } -#endif // SEND_HAIER_AC_YRW02 +#endif // SEND_HAIER_AC176 void begin(void); + void stateReset(void); void setButton(const uint8_t button); uint8_t getButton(void) const; @@ -355,10 +428,17 @@ class IRHaierACYRW02 { uint8_t getSwing(void) const; void setSwing(const uint8_t pos); + void setTimerMode(const uint8_t setting); + uint8_t getTimerMode(void) const; + void setOnTimer(const uint16_t mins); + uint16_t getOnTimer(void) const; + void setOffTimer(const uint16_t mins); + uint16_t getOffTimer(void) const; + uint8_t* getRaw(void); - void setRaw(const uint8_t new_code[]); - static bool validChecksum(uint8_t state[], - const uint16_t length = kHaierACYRW02StateLength); + virtual void setRaw(const uint8_t new_code[]); + static bool validChecksum(const uint8_t state[], + const uint16_t length = kHaierAC176StateLength); static uint8_t convertMode(const stdAc::opmode_t mode); static uint8_t convertFan(const stdAc::fanspeed_t speed); static uint8_t convertSwingV(const stdAc::swingv_t position); @@ -376,8 +456,26 @@ class IRHaierACYRW02 { IRsendTest _irsend; ///< Instance of the testing IR send class /// @endcond #endif // UNIT_TEST - HaierYRW02Protocol _; - void stateReset(void); + HaierAc176Protocol _; void checksum(void); }; + +/// Class for handling detailed Haier ACYRW02 A/C messages. +class IRHaierACYRW02 : public IRHaierAC176 { + public: + explicit IRHaierACYRW02(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); +#if SEND_HAIER_AC_YRW02 + void send(const uint16_t repeat = kHaierAcYrw02DefaultRepeat) override; + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } +#endif // SEND_HAIER_AC_YRW02 + void setRaw(const uint8_t new_code[]) override; + static bool validChecksum( + const uint8_t state[], + const uint16_t length = kHaierACYRW02StateLength); +}; #endif // IR_HAIER_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.cpp index d78f25888..d817fbdb7 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.cpp @@ -1,12 +1,13 @@ // Copyright 2015 Darryl Smith // Copyright 2015 cheaplin -// Copyright 2017, 2018 David Conran +// Copyright 2017-2021 David Conran /// @file /// @brief Support for LG protocols. /// LG decode originally added by Darryl Smith (based on the JVC protocol) /// LG send originally added by https://github.com/chaeplin /// @see https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438 +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1513 #include "ir_LG.h" #include @@ -21,6 +22,8 @@ using irutils::addModeToString; using irutils::addModelToString; using irutils::addFanToString; using irutils::addTempToString; +using irutils::addSwingVToString; +using irutils::addIntToString; // Constants @@ -43,6 +46,18 @@ const uint16_t kLg2HdrMark = 3200; ///< uSeconds. const uint16_t kLg2HdrSpace = 9900; ///< uSeconds. const uint16_t kLg2BitMark = 480; ///< uSeconds. +const uint32_t kLgAcAKB74955603DetectionMask = 0x0000080; +const uint8_t kLgAcChecksumSize = 4; ///< Size in bits. +// Signature has the checksum removed, and another bit to match both Auto & Off. +const uint8_t kLgAcSwingHOffsetSize = kLgAcChecksumSize + 1; +const uint32_t kLgAcSwingHSignature = kLgAcSwingHOff >> kLgAcSwingHOffsetSize; +const uint32_t kLgAcVaneSwingVBase = 0x8813200; + +#ifdef VANESWINGVPOS +#undef VANESWINGVPOS +#endif +#define VANESWINGVPOS(code) (code % kLgAcVaneSwingVSize) + #if SEND_LG /// Send an LG formatted message. (LG) /// Status: Beta / Should be working. @@ -114,7 +129,8 @@ void IRsend::sendLG2(uint64_t data, uint16_t nbits, uint16_t repeat) { /// @return A raw 28-bit LG message code suitable for sendLG() etc. /// @note Sequence of bits = address + command + checksum. uint32_t IRsend::encodeLG(uint16_t address, uint16_t command) { - return ((address << 20) | (command << 4) | irutils::sumNibbles(command, 4)); + return ((address << 20) | (command << kLgAcChecksumSize) | + irutils::sumNibbles(command, 4)); } #endif // SEND_LG @@ -187,9 +203,10 @@ bool IRrecv::decodeLG(decode_results *results, uint16_t offset, kBitmark, kLgMinGap, true, kUseDefTol)) return false; } - // Compliance - uint16_t command = (data >> 4); // The 16 bits before the checksum. + // The 16 bits before the checksum. + uint16_t command = (data >> kLgAcChecksumSize); + // Compliance if (strict && (data & 0xF) != irutils::sumNibbles(command, 4)) return false; // The last 4 bits sent are the expected checksum. // Success @@ -219,6 +236,12 @@ IRLgAc::IRLgAc(const uint16_t pin, const bool inverted, void IRLgAc::stateReset(void) { setRaw(kLgAcOffCommand); setModel(lg_ac_remote_model_t::GE6711AR2853M); + _light = true; + _swingv = kLgAcSwingVOff; + _swingh = false; + for (uint8_t i = 0; i < kLgAcSwingVMaxVanes; i++) + _vaneswingv[i] = 0; // Reset to an unused value. + updateSwingPrev(); } /// Set up hardware to be able to send a message. @@ -228,40 +251,91 @@ void IRLgAc::begin(void) { _irsend.begin(); } /// Send the current internal state as an IR message. /// @param[in] repeat Nr. of times the message will be repeated. void IRLgAc::send(const uint16_t repeat) { - if (getPower()) + if (getPower()) { _irsend.send(_protocol, getRaw(), kLgBits, repeat); - else + // Some models have extra/special settings & controls + switch (getModel()) { + case lg_ac_remote_model_t::AKB74955603: + // Only send the swing setting if we need to. + if (_swingv != _swingv_prev) + _irsend.send(_protocol, _swingv, kLgBits, repeat); + // Any "normal" command sent will always turn the light on, thus we only + // send it when we want it off. Must be sent last! + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1513#issuecomment-877283080 + if (!_light) _irsend.send(_protocol, kLgAcLightToggle, kLgBits, repeat); + break; + case lg_ac_remote_model_t::AKB73757604: + // Check if we need to send any vane specific swingv's. + for (uint8_t i = 0; i < kLgAcSwingVMaxVanes; i++) // For all vanes + if (_vaneswingv[i] != _vaneswingv_prev[i]) // Only send if we must. + _irsend.send(_protocol, calcVaneSwingV(i, _vaneswingv[i]), kLgBits, + repeat); + // and if we need to send a swingh message. + if (_swingh != _swingh_prev) + _irsend.send(_protocol, _swingh ? kLgAcSwingHAuto : kLgAcSwingHOff, + kLgBits, repeat); + break; + default: + break; + } + updateSwingPrev(); // Swing changes will have been sent, so make them prev. + } else { // Always send the special Off command if the power is set to off. // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1008#issuecomment-570763580 _irsend.send(_protocol, kLgAcOffCommand, kLgBits, repeat); + } } #endif // SEND_LG +/// Is the current message a normal (non-special) message? +/// @return True, if it is a normal message, False, if it is special. +bool IRLgAc::_isNormal(void) const { + switch (_.raw) { + case kLgAcOffCommand: + case kLgAcLightToggle: + return false; + } + if (isSwing()) return false; + return true; +} + /// Set the model of the A/C to emulate. /// @param[in] model The enum of the appropriate model. void IRLgAc::setModel(const lg_ac_remote_model_t model) { switch (model) { case lg_ac_remote_model_t::AKB75215403: + case lg_ac_remote_model_t::AKB74955603: + case lg_ac_remote_model_t::AKB73757604: _protocol = decode_type_t::LG2; break; case lg_ac_remote_model_t::GE6711AR2853M: - // FALL THRU - default: _protocol = decode_type_t::LG; + break; + default: + return; } + _model = model; } /// Get the model of the A/C. /// @return The enum of the compatible model. lg_ac_remote_model_t IRLgAc::getModel(void) const { - switch (_protocol) { - case LG2: - return lg_ac_remote_model_t::AKB75215403; - case LG: - // FALL THRU - default: - return lg_ac_remote_model_t::GE6711AR2853M; - } + return _model; +} + +/// Check if the stored code must belong to a AKB74955603 model. +/// @return true, if it is AKB74955603 message. Otherwise, false. +/// @note Internal use only. +bool IRLgAc::_isAKB74955603(void) const { + return ((_.raw & kLgAcAKB74955603DetectionMask) && _isNormal()) || + isSwingV() || isLightToggle(); +} + +/// Check if the stored code must belong to a AKB73757604 model. +/// @return true, if it is AKB73757604 message. Otherwise, false. +/// @note Internal use only. +bool IRLgAc::_isAKB73757604(void) const { + return isSwingH() || isVaneSwingV(); } /// Get a copy of the internal state/code for this protocol. @@ -273,8 +347,36 @@ uint32_t IRLgAc::getRaw(void) { /// Set the internal state from a valid code for this protocol. /// @param[in] new_code A valid code for this protocol. -void IRLgAc::setRaw(const uint32_t new_code) { +/// @param[in] protocol A valid decode protocol type to use. +void IRLgAc::setRaw(const uint32_t new_code, const decode_type_t protocol) { _.raw = new_code; + // Set the default model for this protocol, if the protocol is supplied. + switch (protocol) { + case decode_type_t::LG: + setModel(lg_ac_remote_model_t::GE6711AR2853M); + break; + case decode_type_t::LG2: + setModel(lg_ac_remote_model_t::AKB75215403); + break; + default: + // Don't change anything if it isn't an expected protocol. + break; + } + // Look for model specific settings/features to improve model detection. + if (_isAKB74955603()) { + setModel(lg_ac_remote_model_t::AKB74955603); + if (isSwingV()) _swingv = new_code; + } + if (_isAKB73757604()) { + setModel(lg_ac_remote_model_t::AKB73757604); + if (isVaneSwingV()) { + // Extract just the vane nr and position part of the message. + const uint32_t vanecode = getVaneCode(_.raw); + _vaneswingv[vanecode / kLgAcVaneSwingVSize] = VANESWINGVPOS(vanecode); + } else if (isSwingH()) { + _swingh = (_.raw == kLgAcSwingHAuto); + } + } _temp = 15; // Ensure there is a "sane" previous temp. _temp = getTemp(); } @@ -283,7 +385,7 @@ void IRLgAc::setRaw(const uint32_t new_code) { /// @param[in] state The value to calc the checksum of. /// @return The calculated checksum value. uint8_t IRLgAc::calcChecksum(const uint32_t state) { - return irutils::sumNibbles(state >> 4, 4); + return irutils::sumNibbles(state >> kLgAcChecksumSize, 4); } /// Verify the checksum is valid for a given state. @@ -322,12 +424,26 @@ bool IRLgAc::getPower(void) const { return _.Power == kLgAcPowerOn; } +/// Is the message a Power Off message? +/// @return true, if it is. false, if not. +bool IRLgAc::isOffCommand(void) const { return _.raw == kLgAcOffCommand; } + +/// Change the light/led/display setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRLgAc::setLight(const bool on) { _light = on; } + +/// Get the value of the current light setting. +/// @return true, the setting is on. false, the setting is off. +bool IRLgAc::getLight(void) const { return _light; } + +/// Is the message a Light Toggle message? +/// @return true, if it is. false, if not. +bool IRLgAc::isLightToggle(void) const { return _.raw == kLgAcLightToggle; } + /// Set the temperature. /// @param[in] value The native temperature. /// @note Internal use only. -inline void IRLgAc::_setTemp(const uint8_t value) { - _.Temp = value; -} +inline void IRLgAc::_setTemp(const uint8_t value) { _.Temp = value; } /// Set the temperature. /// @param[in] degrees The temperature in degrees celsius. @@ -341,39 +457,53 @@ void IRLgAc::setTemp(const uint8_t degrees) { /// Get the current temperature setting. /// @return The current setting for temp. in degrees celsius. uint8_t IRLgAc::getTemp(void) const { - if (getPower()) - return _.Temp + kLgAcTempAdjust; - else - return _temp; + return _isNormal() ? _.Temp + kLgAcTempAdjust : _temp; } /// Set the speed of the fan. /// @param[in] speed The desired setting. void IRLgAc::setFan(const uint8_t speed) { + uint8_t _speed = speed; + // Only model AKB74955603 has these speeds, so convert if we have to. + if (getModel() != lg_ac_remote_model_t::AKB74955603) { + switch (speed) { + case kLgAcFanLowAlt: + _.Fan = kLgAcFanLow; + return; + case kLgAcFanHigh: + _.Fan = kLgAcFanMax; + return; + } + } switch (speed) { + case kLgAcFanLow: + case kLgAcFanLowAlt: + _speed = (getModel() != lg_ac_remote_model_t::AKB74955603) + ? kLgAcFanLow : kLgAcFanLowAlt; + break; + case kLgAcFanHigh: + _speed = (getModel() != lg_ac_remote_model_t::AKB74955603) + ? kLgAcFanMax : speed; + break; case kLgAcFanAuto: case kLgAcFanLowest: - case kLgAcFanLow: case kLgAcFanMedium: - case kLgAcFanHigh: - _.Fan = speed; + case kLgAcFanMax: + _speed = speed; break; default: - _.Fan = kLgAcFanAuto; + _speed = kLgAcFanAuto; } + _.Fan = _speed; } /// Get the current fan speed setting. /// @return The current fan speed. -uint8_t IRLgAc::getFan(void) const { - return _.Fan; -} +uint8_t IRLgAc::getFan(void) const { return _.Fan; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRLgAc::getMode(void) const { - return _.Mode; -} +uint8_t IRLgAc::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -391,6 +521,101 @@ void IRLgAc::setMode(const uint8_t mode) { } } +/// Check if the stored code is a Swing message. +/// @return true, if it is. Otherwise, false. +bool IRLgAc::isSwing(void) const { + return (_.raw >> 12) == kLgAcSwingSignature; +} + +/// Check if the stored code is a non-vane SwingV message. +/// @return true, if it is. Otherwise, false. +bool IRLgAc::isSwingV(void) const { + const uint32_t code = _.raw >> kLgAcChecksumSize; + return code >= (kLgAcSwingVLowest >> kLgAcChecksumSize) && + code < (kLgAcSwingHAuto >> kLgAcChecksumSize); +} + +/// Check if the stored code is a SwingH message. +/// @return true, if it is. Otherwise, false. +bool IRLgAc::isSwingH(void) const { + return (_.raw >> kLgAcSwingHOffsetSize) == kLgAcSwingHSignature; +} + +/// Get the Horizontal Swing position setting of the A/C. +/// @return true, if it is. Otherwise, false. +bool IRLgAc::getSwingH(void) const { return _swingh; } + +/// Set the Horizontal Swing mode of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRLgAc::setSwingH(const bool on) { _swingh = on; } + +/// Check if the stored code is a vane specific SwingV message. +/// @return true, if it is. Otherwise, false. +bool IRLgAc::isVaneSwingV(void) const { + return _.raw > kLgAcVaneSwingVBase && + _.raw < (kLgAcVaneSwingVBase + + ((kLgAcSwingVMaxVanes * + kLgAcVaneSwingVSize) << kLgAcChecksumSize)); +} + +/// Set the Vertical Swing mode of the A/C. +/// @param[in] position The position/mode to set the vanes to. +void IRLgAc::setSwingV(const uint32_t position) { + // Is it a valid position code? + if (position == kLgAcSwingVOff || + toCommonSwingV(position) != stdAc::swingv_t::kOff) { + if (position <= 0xFF) { // It's a short code, convert it. + _swingv = (kLgAcSwingSignature << 8 | position) << kLgAcChecksumSize; + _swingv |= calcChecksum(_swingv); + } else { + _swingv = position; + } + } +} + +// Copy the previous swing settings from the current ones. +void IRLgAc::updateSwingPrev(void) { + _swingv_prev = _swingv; + for (uint8_t i = 0; i < kLgAcSwingVMaxVanes; i++) + _vaneswingv_prev[i] = _vaneswingv[i]; +} + +/// Get the Vertical Swing position setting of the A/C. +/// @return The native position/mode. +uint32_t IRLgAc::getSwingV(void) const { return _swingv; } + +/// Set the per Vane Vertical Swing mode of the A/C. +/// @param[in] vane The nr. of the vane to control. +/// @param[in] position The position/mode to set the vanes to. +void IRLgAc::setVaneSwingV(const uint8_t vane, const uint8_t position) { + if (vane < kLgAcSwingVMaxVanes) // It's a valid vane nr. + if (position && position <= kLgAcVaneSwingVLowest) // Valid position + _vaneswingv[vane] = position; +} + +/// Get the Vertical Swing position for the given vane of the A/C. +/// @return The native position/mode. +uint8_t IRLgAc::getVaneSwingV(const uint8_t vane) const { + return (vane < kLgAcSwingVMaxVanes) ? _vaneswingv[vane] : 0; +} + +/// Get the vane code of a Vane Vertical Swing message. +/// @param[in] raw A raw number representing a native LG message. +/// @return A number containing just the vane nr, and the position. +uint8_t IRLgAc::getVaneCode(const uint32_t raw) { + return (raw - kLgAcVaneSwingVBase) >> kLgAcChecksumSize; +} + +/// Calculate the Vane specific Vertical Swing code for the A/C. +/// @return The native raw code. +uint32_t IRLgAc::calcVaneSwingV(const uint8_t vane, const uint8_t position) { + uint32_t result = kLgAcVaneSwingVBase; + if (vane < kLgAcSwingVMaxVanes) // It's a valid vane nr. + if (position && position <= kLgAcVaneSwingVLowest) // Valid position + result += ((vane * kLgAcVaneSwingVSize + position) << kLgAcChecksumSize); + return result | calcChecksum(result); +} + /// Convert a stdAc::opmode_t enum into its native mode. /// @param[in] mode The enum to be converted. /// @return The native equivalent of the enum. @@ -425,8 +650,8 @@ uint8_t IRLgAc::convertFan(const stdAc::fanspeed_t speed) { case stdAc::fanspeed_t::kMin: return kLgAcFanLowest; case stdAc::fanspeed_t::kLow: return kLgAcFanLow; case stdAc::fanspeed_t::kMedium: return kLgAcFanMedium; - case stdAc::fanspeed_t::kHigh: - case stdAc::fanspeed_t::kMax: return kLgAcFanHigh; + case stdAc::fanspeed_t::kHigh: return kLgAcFanHigh; + case stdAc::fanspeed_t::kMax: return kLgAcFanMax; default: return kLgAcFanAuto; } } @@ -436,31 +661,111 @@ uint8_t IRLgAc::convertFan(const stdAc::fanspeed_t speed) { /// @return The stdAc equivalent of the native setting. stdAc::fanspeed_t IRLgAc::toCommonFanSpeed(const uint8_t speed) { switch (speed) { - case kLgAcFanHigh: return stdAc::fanspeed_t::kMax; + case kLgAcFanMax: return stdAc::fanspeed_t::kMax; + case kLgAcFanHigh: return stdAc::fanspeed_t::kHigh; case kLgAcFanMedium: return stdAc::fanspeed_t::kMedium; - case kLgAcFanLow: return stdAc::fanspeed_t::kLow; + case kLgAcFanLow: + case kLgAcFanLowAlt: return stdAc::fanspeed_t::kLow; case kLgAcFanLowest: return stdAc::fanspeed_t::kMin; default: return stdAc::fanspeed_t::kAuto; } } +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] swingv The enum to be converted. +/// @return The native equivalent of the enum. +uint32_t IRLgAc::convertSwingV(const stdAc::swingv_t swingv) { + switch (swingv) { + case stdAc::swingv_t::kHighest: return kLgAcSwingVHighest; + case stdAc::swingv_t::kHigh: return kLgAcSwingVHigh; + case stdAc::swingv_t::kMiddle: return kLgAcSwingVMiddle; + case stdAc::swingv_t::kLow: return kLgAcSwingVLow; + case stdAc::swingv_t::kLowest: return kLgAcSwingVLowest; + case stdAc::swingv_t::kAuto: return kLgAcSwingVSwing; + default: return kLgAcSwingVOff; + } +} + +/// Convert a native Vertical Swing into its stdAc equivalent. +/// @param[in] code The native code to be converted. +/// @return The stdAc equivalent of the native setting. +stdAc::swingv_t IRLgAc::toCommonSwingV(const uint32_t code) { + switch (code) { + case kLgAcSwingVHighest_Short: + case kLgAcSwingVHighest: return stdAc::swingv_t::kHighest; + case kLgAcSwingVHigh_Short: + case kLgAcSwingVHigh: return stdAc::swingv_t::kHigh; + case kLgAcSwingVUpperMiddle_Short: + case kLgAcSwingVUpperMiddle: + case kLgAcSwingVMiddle_Short: + case kLgAcSwingVMiddle: return stdAc::swingv_t::kMiddle; + case kLgAcSwingVLow_Short: + case kLgAcSwingVLow: return stdAc::swingv_t::kLow; + case kLgAcSwingVLowest_Short: + case kLgAcSwingVLowest: return stdAc::swingv_t::kLowest; + case kLgAcSwingVSwing_Short: + case kLgAcSwingVSwing: return stdAc::swingv_t::kAuto; + default: return stdAc::swingv_t::kOff; + } +} + +/// Convert a native Vane specific Vertical Swing into its stdAc equivalent. +/// @param[in] pos The native position to be converted. +/// @return The stdAc equivalent of the native setting. +stdAc::swingv_t IRLgAc::toCommonVaneSwingV(const uint8_t pos) { + switch (pos) { + case kLgAcVaneSwingVHigh: return stdAc::swingv_t::kHigh; + case kLgAcVaneSwingVUpperMiddle: + case kLgAcVaneSwingVMiddle: return stdAc::swingv_t::kMiddle; + case kLgAcVaneSwingVLow: return stdAc::swingv_t::kLow; + case kLgAcVaneSwingVLowest: return stdAc::swingv_t::kLowest; + default: return stdAc::swingv_t::kHighest; + } +} + +/// Convert a stdAc::swingv_t enum into it's native setting. +/// @param[in] swingv The enum to be converted. +/// @return The native equivalent of the enum. +uint8_t IRLgAc::convertVaneSwingV(const stdAc::swingv_t swingv) { + switch (swingv) { + case stdAc::swingv_t::kHigh: return kLgAcVaneSwingVHigh; + case stdAc::swingv_t::kMiddle: return kLgAcVaneSwingVMiddle; + case stdAc::swingv_t::kLow: return kLgAcVaneSwingVLow; + case stdAc::swingv_t::kLowest: return kLgAcVaneSwingVLowest; + default: return kLgAcVaneSwingVHighest; + } +} + /// Convert the current internal state into its stdAc::state_t equivalent. +/// @param[in] prev Ptr to the previous state if required. /// @return The stdAc equivalent of the native settings. -stdAc::state_t IRLgAc::toCommon(void) const { +stdAc::state_t IRLgAc::toCommon(const stdAc::state_t *prev) const { stdAc::state_t result; - result.protocol = decode_type_t::LG; + // Start with the previous state if given it. + if (prev != NULL) { + result = *prev; + } else { + // Set defaults for non-zero values that are not implicitly set for when + // there is no previous state. + // e.g. Any setting that toggles should probably go here. + result.light = true; + result.swingv = toCommonSwingV(getSwingV()); + } + result.protocol = _protocol; result.model = getModel(); result.power = getPower(); result.mode = toCommonMode(_.Mode); result.celsius = true; result.degrees = getTemp(); result.fanspeed = toCommonFanSpeed(_.Fan); + result.light = isLightToggle() ? !result.light : _light; + if (isSwingV()) result.swingv = toCommonSwingV(getSwingV()); + if (isVaneSwingV()) + result.swingv = toCommonVaneSwingV(VANESWINGVPOS(getVaneCode(_.raw))); + result.swingh = isSwingH() ? stdAc::swingh_t::kAuto : stdAc::swingh_t::kOff; // Not supported. - result.swingv = stdAc::swingv_t::kOff; - result.swingh = stdAc::swingh_t::kOff; result.quiet = false; result.turbo = false; - result.light = false; result.filter = false; result.clean = false; result.econo = false; @@ -476,13 +781,52 @@ String IRLgAc::toString(void) const { String result = ""; result.reserve(80); // Reserve some heap for the string to reduce fragging. result += addModelToString(_protocol, getModel(), false); - result += addBoolToString(getPower(), kPowerStr); - if (getPower()) { // Only display the rest if is in power on state. - result += addModeToString(_.Mode, kLgAcAuto, kLgAcCool, - kLgAcHeat, kLgAcDry, kLgAcFan); - result += addTempToString(getTemp()); - result += addFanToString(_.Fan, kLgAcFanHigh, kLgAcFanLow, - kLgAcFanAuto, kLgAcFanLowest, kLgAcFanMedium); + if (_isNormal()) { // A "Normal" generic settings message. + result += addBoolToString(getPower(), kPowerStr); + if (getPower()) { // Only display the rest if is in power on state. + result += addModeToString(_.Mode, kLgAcAuto, kLgAcCool, + kLgAcHeat, kLgAcDry, kLgAcFan); + result += addTempToString(getTemp()); + result += addFanToString(_.Fan, kLgAcFanHigh, + _isAKB74955603() ? kLgAcFanLowAlt : kLgAcFanLow, + kLgAcFanAuto, kLgAcFanLowest, kLgAcFanMedium, + kLgAcFanMax); + } + } else { // It must be a special single purpose code. + if (isOffCommand()) { + result += addBoolToString(false, kPowerStr); + } else if (isLightToggle()) { + result += addBoolToString(true, kLightToggleStr); + } else if (isSwingH()) { + result += addBoolToString(_swingh, kSwingHStr); + } else if (isSwingV()) { + result += addSwingVToString((uint8_t)(_swingv >> kLgAcChecksumSize), + 0, // No Auto, See "swing". Unused + kLgAcSwingVHighest_Short, + kLgAcSwingVHigh_Short, + kLgAcSwingVUpperMiddle_Short, + kLgAcSwingVMiddle_Short, + 0, // Unused + kLgAcSwingVLow_Short, + kLgAcSwingVLowest_Short, + kLgAcSwingVOff_Short, + kLgAcSwingVSwing_Short, + 0, 0); + } else if (isVaneSwingV()) { + const uint8_t vane = getVaneCode(_.raw) / kLgAcVaneSwingVSize; + result += addIntToString(vane, kVaneStr); + result += addSwingVToString(_vaneswingv[vane], + 0, // No Auto, See "swing". Unused + kLgAcVaneSwingVHighest, + kLgAcVaneSwingVHigh, + kLgAcVaneSwingVUpperMiddle, + kLgAcVaneSwingVMiddle, + 0, // Unused + kLgAcVaneSwingVLow, + kLgAcVaneSwingVLowest, + // Rest unused + 0, 0, 0, 0); + } } return result; } diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.h index f02e9cb79..6010282ca 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_LG.h @@ -1,17 +1,22 @@ -// Copyright 2017, 2019 David Conran +// Copyright 2017-2021 David Conran /// @file /// @brief Support for LG protocols. /// @see https://github.com/arendst/Tasmota/blob/54c2eb283a02e4287640a4595e506bc6eadbd7f2/sonoff/xdrv_05_irremote.ino#L327-438 - +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1513 // Supports: // Brand: LG, Model: 6711A20083V remote (LG) // Brand: LG, Model: AKB74395308 remote (LG2) // Brand: LG, Model: S4-W12JA3AA A/C (LG2) // Brand: LG, Model: AKB75215403 remote (LG2) -// Brand: General Electric, Model: AG1BH09AW101 Split A/C -// Brand: General Electric, Model: 6711AR2853M A/C Remote +// Brand: LG, Model: AKB74955603 remote (LG2 - AKB74955603) +// Brand: LG, Model: A4UW30GFA2 A/C (LG2 - AKB74955603 & AKB73757604) +// Brand: LG, Model: AMNW09GSJA0 A/C (LG2 - AKB74955603) +// Brand: LG, Model: AMNW24GTPA1 A/C (LG2 - AKB73757604) +// Brand: LG, Model: AKB73757604 remote (LG2 - AKB73757604) +// Brand: General Electric, Model: AG1BH09AW101 Split A/C (LG) +// Brand: General Electric, Model: 6711AR2853M A/C Remote (LG) #ifndef IR_LG_H_ #define IR_LG_H_ @@ -33,8 +38,7 @@ union LGProtocol{ uint32_t raw; ///< The state of the IR remote in IR code form. struct { uint32_t Sum :4; - uint32_t Fan :3; - uint32_t :1; + uint32_t Fan :4; uint32_t Temp :4; uint32_t Mode :3; uint32_t :3; @@ -43,11 +47,15 @@ union LGProtocol{ }; }; -const uint8_t kLgAcFanLowest = 0; // 0b000 -const uint8_t kLgAcFanLow = 1; // 0b001 -const uint8_t kLgAcFanMedium = 2; // 0b010 -const uint8_t kLgAcFanHigh = 4; // 0b100 -const uint8_t kLgAcFanAuto = 5; // 0b101 +const uint8_t kLgAcFanLowest = 0; // 0b0000 +const uint8_t kLgAcFanLow = 1; // 0b0001 +const uint8_t kLgAcFanMedium = 2; // 0b0010 +const uint8_t kLgAcFanMax = 4; // 0b0100 +const uint8_t kLgAcFanAuto = 5; // 0b0101 +const uint8_t kLgAcFanLowAlt = 9; // 0b1001 +const uint8_t kLgAcFanHigh = 10; // 0b1010 +// Nr. of slots in the look-up table +const uint8_t kLgAcFanEntries = kLgAcFanHigh + 1; const uint8_t kLgAcTempAdjust = 15; const uint8_t kLgAcMinTemp = 16; // Celsius const uint8_t kLgAcMaxTemp = 30; // Celsius @@ -60,7 +68,42 @@ const uint8_t kLgAcPowerOff = 3; // 0b11 const uint8_t kLgAcPowerOn = 0; // 0b00 const uint8_t kLgAcSignature = 0x88; -const uint32_t kLgAcOffCommand = 0x88C0051; +const uint32_t kLgAcOffCommand = 0x88C0051; +const uint32_t kLgAcLightToggle = 0x88C00A6; + +const uint32_t kLgAcSwingSignature = 0x8813; +const uint32_t kLgAcSwingVLowest = 0x8813048; +const uint32_t kLgAcSwingVLow = 0x8813059; +const uint32_t kLgAcSwingVMiddle = 0x881306A; +const uint32_t kLgAcSwingVUpperMiddle = 0x881307B; +const uint32_t kLgAcSwingVHigh = 0x881308C; +const uint32_t kLgAcSwingVHighest = 0x881309D; +const uint32_t kLgAcSwingVSwing = 0x8813149; +const uint32_t kLgAcSwingVAuto = kLgAcSwingVSwing; +const uint32_t kLgAcSwingVOff = 0x881315A; +const uint8_t kLgAcSwingVLowest_Short = 0x04; +const uint8_t kLgAcSwingVLow_Short = 0x05; +const uint8_t kLgAcSwingVMiddle_Short = 0x06; +const uint8_t kLgAcSwingVUpperMiddle_Short = 0x07; +const uint8_t kLgAcSwingVHigh_Short = 0x08; +const uint8_t kLgAcSwingVHighest_Short = 0x09; +const uint8_t kLgAcSwingVSwing_Short = 0x14; +const uint8_t kLgAcSwingVAuto_Short = kLgAcSwingVSwing_Short; +const uint8_t kLgAcSwingVOff_Short = 0x15; + +// AKB73757604 Constants +// SwingH +const uint32_t kLgAcSwingHAuto = 0x881316B; +const uint32_t kLgAcSwingHOff = 0x881317C; +// SwingV +const uint8_t kLgAcVaneSwingVHighest = 1; ///< 0b001 +const uint8_t kLgAcVaneSwingVHigh = 2; ///< 0b010 +const uint8_t kLgAcVaneSwingVUpperMiddle = 3; ///< 0b011 +const uint8_t kLgAcVaneSwingVMiddle = 4; ///< 0b100 +const uint8_t kLgAcVaneSwingVLow = 5; ///< 0b101 +const uint8_t kLgAcVaneSwingVLowest = 6; ///< 0b110 +const uint8_t kLgAcVaneSwingVSize = 8; +const uint8_t kLgAcSwingVMaxVanes = 4; ///< Max Nr. of Vanes // Classes /// Class for handling detailed LG A/C messages. @@ -85,19 +128,41 @@ class IRLgAc { void off(void); void setPower(const bool on); bool getPower(void) const; + bool isOffCommand(void) const; void setTemp(const uint8_t degrees); uint8_t getTemp(void) const; void setFan(const uint8_t speed); uint8_t getFan(void) const; void setMode(const uint8_t mode); uint8_t getMode(void) const; + void setLight(const bool on); + bool getLight(void) const; + bool isLightToggle(void) const; + bool isSwing(void) const; + void setSwingH(const bool on); + bool getSwingH(void) const; + bool isSwingV(void) const; + bool isVaneSwingV(void) const; + void setSwingV(const uint32_t position); + uint32_t getSwingV(void) const; + void setVaneSwingV(const uint8_t vane, const uint8_t position); + uint8_t getVaneSwingV(const uint8_t vane) const; + static uint32_t calcVaneSwingV(const uint8_t vane, const uint8_t position); + static uint8_t getVaneCode(const uint32_t raw); + bool isSwingH(void) const; + void updateSwingPrev(void); uint32_t getRaw(void); - void setRaw(const uint32_t new_code); + void setRaw(const uint32_t new_code, + const decode_type_t protocol = decode_type_t::UNKNOWN); static uint8_t convertMode(const stdAc::opmode_t mode); static stdAc::opmode_t toCommonMode(const uint8_t mode); static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); + static stdAc::swingv_t toCommonSwingV(const uint32_t code); + static stdAc::swingv_t toCommonVaneSwingV(const uint8_t pos); static uint8_t convertFan(const stdAc::fanspeed_t speed); - stdAc::state_t toCommon(void) const; + static uint32_t convertSwingV(const stdAc::swingv_t swingv); + static uint8_t convertVaneSwingV(const stdAc::swingv_t swingv); + stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const; String toString(void) const; void setModel(const lg_ac_remote_model_t model); lg_ac_remote_model_t getModel(void) const; @@ -112,9 +177,20 @@ class IRLgAc { #endif // UNIT_TEST LGProtocol _; uint8_t _temp; - decode_type_t _protocol; ///< model + bool _light; + uint32_t _swingv; + uint32_t _swingv_prev; + uint8_t _vaneswingv[kLgAcSwingVMaxVanes]; + uint8_t _vaneswingv_prev[kLgAcSwingVMaxVanes]; + bool _swingh; + bool _swingh_prev; + decode_type_t _protocol; ///< Protocol version + lg_ac_remote_model_t _model; ///< Model type void checksum(void); void _setTemp(const uint8_t value); + bool _isAKB74955603(void) const; + bool _isAKB73757604(void) const; + bool _isNormal(void) const; }; #endif // IR_LG_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Midea.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Midea.h index d01dcce82..eaeaa04d8 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Midea.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Midea.h @@ -22,6 +22,8 @@ // Brand: Danby, Model: DAC100BGUWDB (MIDEA) // Brand: Danby, Model: DAC120BGUWDB (MIDEA) // Brand: Danby, Model: R09C/BCGE remote (MIDEA) +// Brand: Trotec, Model: TROTEC PAC 3900 X (MIDEA) +// Brand: Trotec, Model: RG57H(B)/BGE remote (MIDEA) #ifndef IR_MIDEA_H_ #define IR_MIDEA_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.cpp index fd415c834..03e562ef5 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.cpp @@ -257,120 +257,49 @@ void IRsend::sendMitsubishiAC(const unsigned char data[], const uint16_t nbytes, bool IRrecv::decodeMitsubishiAC(decode_results *results, uint16_t offset, const uint16_t nbits, const bool strict) { - if (results->rawlen <= ((kMitsubishiACBits * 2) + 2) + offset) { - DPRINTLN("Shorter than shortest possibly expected."); - return false; // Shorter than shortest possibly expected. - } - if (strict && nbits != kMitsubishiACBits) { - DPRINTLN("Request is out of spec."); - return false; // Request is out of spec. - } - for (uint8_t i = 0; i < kMitsubishiACStateLength; i++) results->state[i] = 0; - bool failure = false; - uint8_t rep = 0; - do { - failure = false; - // Header: - // Sometime happens that junk signals arrives before the real message - bool headerFound = false; - while (!headerFound && - offset < (results->rawlen - (kMitsubishiACBits * 2 + 2))) { - headerFound = - matchMark(results->rawbuf[offset], kMitsubishiAcHdrMark) && - matchSpace(results->rawbuf[offset + 1], kMitsubishiAcHdrSpace); - offset += 2; - } - if (!headerFound) { - DPRINTLN("Header mark not found."); - return false; - } - DPRINT("Header mark found at #"); - DPRINTLN(offset - 2); - // Decode byte-by-byte: - match_result_t data_result; - for (uint8_t i = 0; i < kMitsubishiACStateLength && !failure; i++) { - results->state[i] = 0; - data_result = - matchData(&(results->rawbuf[offset]), 8, kMitsubishiAcBitMark, - kMitsubishiAcOneSpace, kMitsubishiAcBitMark, - kMitsubishiAcZeroSpace, - _tolerance + kMitsubishiAcExtraTolerance, 0, false); - if (data_result.success == false) { - failure = true; - DPRINT("Byte decode failed at #"); - DPRINTLN((uint16_t)i); - } else { - results->state[i] = data_result.data; - offset += data_result.used; - DPRINT((uint16_t)results->state[i]); - DPRINT(","); + // Compliance + if (strict && nbits != kMitsubishiACBits) return false; // Out of spec. + // Do we need to look for a repeat? + const uint16_t expected_repeats = strict ? kMitsubishiACMinRepeat : kNoRepeat; + // Enough data? + if (results->rawlen <= (nbits * 2 + kHeader + kFooter) * + (expected_repeats + 1) + offset - 1) return false; + uint16_t save[kStateSizeMax]; + // Handle repeats if we need too. + for (uint16_t r = 0; r <= expected_repeats; r++) { + // Header + Data + Footer + uint16_t used = matchGeneric(results->rawbuf + offset, results->state, + results->rawlen - offset, nbits, + kMitsubishiAcHdrMark, kMitsubishiAcHdrSpace, + kMitsubishiAcBitMark, kMitsubishiAcOneSpace, + kMitsubishiAcBitMark, kMitsubishiAcZeroSpace, + kMitsubishiAcRptMark, kMitsubishiAcRptSpace, + r < expected_repeats, // At least? + _tolerance + kMitsubishiAcExtraTolerance, + 0, false); + if (!used) return false; // No match. + offset += used; + if (r) { // Is this a repeat? + // Repeats are expected to be exactly the same. + if (std::memcmp(save, results->state, nbits / 8) != 0) return false; + } else { // It is the first message. + // Compliance + if (strict) { + // Data signature check. + static const uint8_t signature[5] = {0x23, 0xCB, 0x26, 0x01, 0x00}; + if (std::memcmp(results->state, signature, 5) != 0) return false; + // Checksum verification. + if (!IRMitsubishiAC::validChecksum(results->state)) return false; } - DPRINTLN(""); + // Save a copy of the state to compare with. + std::memcpy(save, results->state, nbits / 8); } - // HEADER validation: - if (failure || results->state[0] != 0x23 || results->state[1] != 0xCB || - results->state[2] != 0x26 || results->state[3] != 0x01 || - results->state[4] != 0x00) { - DPRINTLN("Header mismatch."); - failure = true; - } else { - // DATA part: + } - // FOOTER checksum: - if (!IRMitsubishiAC::validChecksum(results->state)) { - DPRINTLN("Checksum error."); - failure = true; - } - } - if (rep != kMitsubishiACMinRepeat && failure) { - bool repeatMarkFound = false; - while (!repeatMarkFound && - offset < (results->rawlen - (kMitsubishiACBits * 2 + 4))) { - repeatMarkFound = - matchMark(results->rawbuf[offset], kMitsubishiAcRptMark) && - matchSpace(results->rawbuf[offset + 1], kMitsubishiAcRptSpace); - offset += 2; - } - if (!repeatMarkFound) { - DPRINTLN("First attempt failure and repeat mark not found."); - return false; - } - } - rep++; - // Check if the repeat is correct if we need strict decode: - if (strict && !failure) { - DPRINTLN("Strict repeat check enabled."); - // Repeat mark and space: - if (!matchMark(results->rawbuf[offset++], kMitsubishiAcRptMark) || - !matchSpace(results->rawbuf[offset++], kMitsubishiAcRptSpace)) { - DPRINTLN("Repeat mark error."); - return false; - } - // Header mark and space: - if (!matchMark(results->rawbuf[offset++], kMitsubishiAcHdrMark) || - !matchSpace(results->rawbuf[offset++], kMitsubishiAcHdrSpace)) { - DPRINTLN("Repeat header error."); - return false; - } - // Payload: - for (uint8_t i = 0; i < kMitsubishiACStateLength; i++) { - data_result = - matchData(&(results->rawbuf[offset]), 8, kMitsubishiAcBitMark, - kMitsubishiAcOneSpace, kMitsubishiAcBitMark, - kMitsubishiAcZeroSpace, - _tolerance + kMitsubishiAcExtraTolerance, 0, false); - if (data_result.success == false || - data_result.data != results->state[i]) { - DPRINTLN("Repeat payload error."); - return false; - } - offset += data_result.used; - } - } // strict repeat check - } while (failure && rep <= kMitsubishiACMinRepeat); + // Success. results->decode_type = MITSUBISHI_AC; results->bits = nbits; - return !failure; + return true; } #endif // DECODE_MITSUBISHI_AC @@ -516,6 +445,7 @@ void IRMitsubishiAC::setMode(const uint8_t mode) { case kMitsubishiAcCool: _.raw[8] = 0b00110110; break; case kMitsubishiAcDry: _.raw[8] = 0b00110010; break; case kMitsubishiAcHeat: _.raw[8] = 0b00110000; break; + case kMitsubishiAcFan: _.raw[8] = 0b00110111; break; default: _.raw[8] = 0b00110000; _.Mode = kMitsubishiAcAuto; @@ -525,6 +455,7 @@ void IRMitsubishiAC::setMode(const uint8_t mode) { } /// Set the requested vane (Vertical Swing) operation mode of the a/c unit. +/// @note On some models, this represents the Right vertical vane. /// @param[in] position The position/mode to set the vane to. void IRMitsubishiAC::setVane(const uint8_t position) { uint8_t pos = std::min(position, kMitsubishiAcVaneAutoMove); // bounds check @@ -539,6 +470,7 @@ void IRMitsubishiAC::setWideVane(const uint8_t position) { } /// Get the Vane (Vertical Swing) mode of the A/C. +/// @note On some models, this represents the Right vertical vane. /// @return The native position/mode setting. uint8_t IRMitsubishiAC::getVane(void) const { return _.Vane; @@ -550,6 +482,16 @@ uint8_t IRMitsubishiAC::getWideVane(void) const { return _.WideVane; } +/// Set the requested Left Vane (Vertical Swing) operation mode of the a/c unit. +/// @param[in] position The position/mode to set the vane to. +void IRMitsubishiAC::setVaneLeft(const uint8_t position) { + _.VaneLeft = std::min(position, kMitsubishiAcVaneAutoMove); // bounds check +} + +/// Get the Left Vane (Vertical Swing) mode of the A/C. +/// @return The native position/mode setting. +uint8_t IRMitsubishiAC::getVaneLeft(void) const { return _.VaneLeft; } + /// Get the clock time of the A/C unit. /// @return Nr. of 10 minute increments past midnight. /// @note 1 = 1/6 hour (10 minutes). e.g. 4pm = 48. @@ -612,6 +554,7 @@ uint8_t IRMitsubishiAC::convertMode(const stdAc::opmode_t mode) { case stdAc::opmode_t::kCool: return kMitsubishiAcCool; case stdAc::opmode_t::kHeat: return kMitsubishiAcHeat; case stdAc::opmode_t::kDry: return kMitsubishiAcDry; + case stdAc::opmode_t::kFan: return kMitsubishiAcFan; default: return kMitsubishiAcAuto; } } @@ -679,6 +622,7 @@ stdAc::opmode_t IRMitsubishiAC::toCommonMode(const uint8_t mode) { case kMitsubishiAcCool: return stdAc::opmode_t::kCool; case kMitsubishiAcHeat: return stdAc::opmode_t::kHeat; case kMitsubishiAcDry: return stdAc::opmode_t::kDry; + case kMitsubishiAcFan: return stdAc::opmode_t::kFan; default: return stdAc::opmode_t::kAuto; } } @@ -780,7 +724,7 @@ String IRMitsubishiAC::toString(void) const { result += addBoolToString(_.Power, kPowerStr, false); result += addModeToString(_.Mode, kMitsubishiAcAuto, kMitsubishiAcCool, kMitsubishiAcHeat, kMitsubishiAcDry, - kMitsubishiAcAuto); + kMitsubishiAcFan); result += addTempFloatToString(getTemp()); result += addFanToString(getFan(), kMitsubishiAcFanRealMax, kMitsubishiAcFanRealMax - 3, diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.h index 6c9e6dcca..1f3a42184 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Mitsubishi.h @@ -31,6 +31,9 @@ // Brand: Mitsubishi Electric, Model: SG153/M21EDF426 remote (MITSUBISHI_AC) // Brand: Mitsubishi Electric, Model: MSZ-GV2519 A/C (MITSUBISHI_AC) // Brand: Mitsubishi Electric, Model: RH151/M21ED6426 remote (MITSUBISHI_AC) +// Brand: Mitsubishi Electric, Model: MSZ-SF25VE3 A/C (MITSUBISHI_AC) +// Brand: Mitsubishi Electric, Model: SG15D remote (MITSUBISHI_AC) +// Brand: Mitsubishi Electric, Model: MSZ-ZW4017S A/C (MITSUBISHI_AC) #ifndef IR_MITSUBISHI_H_ #define IR_MITSUBISHI_H_ @@ -82,8 +85,14 @@ union Mitsubishi144Protocol{ uint8_t Timer :3; uint8_t WeeklyTimer :1; uint8_t :4; - // Byte 14~16 - uint8_t pad1[3]; + // Byte 14 + uint8_t :8; + // Byte 15 + uint8_t :8; + // Byte 16 + uint8_t :3; + uint8_t VaneLeft :3; // SwingV(Left) + uint8_t :2; // Byte 17 uint8_t Sum :8; }; @@ -94,6 +103,7 @@ const uint8_t kMitsubishiAcAuto = 0b100; const uint8_t kMitsubishiAcCool = 0b011; const uint8_t kMitsubishiAcDry = 0b010; const uint8_t kMitsubishiAcHeat = 0b001; +const uint8_t kMitsubishiAcFan = 0b111; const uint8_t kMitsubishiAcFanAuto = 0; const uint8_t kMitsubishiAcFanMax = 5; const uint8_t kMitsubishiAcFanRealMax = 4; @@ -268,6 +278,8 @@ class IRMitsubishiAC { void setWideVane(const uint8_t position); uint8_t getVane(void) const; uint8_t getWideVane(void) const; + void setVaneLeft(const uint8_t position); + uint8_t getVaneLeft(void) const; uint8_t* getRaw(void); void setRaw(const uint8_t* data); uint8_t getClock(void) const; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Panasonic.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Panasonic.h index 57cf8faab..5668e4a57 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Panasonic.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Panasonic.h @@ -18,6 +18,7 @@ // Brand: Panasonic, Model: CS-ME14CKPG A/C (PANASONIC_AC CKP/5) // Brand: Panasonic, Model: CS-E7PKR A/C (PANASONIC_AC DKE/2) // Brand: Panasonic, Model: CS-Z9RKR A/C (PANASONIC_AC RKR/6) +// Brand: Panasonic, Model: CS-Z24RKR A/C (PANASONIC_AC RKR/6) // Brand: Panasonic, Model: CS-YW9MKD A/C (PANASONIC_AC JKE/4) // Brand: Panasonic, Model: A75C2311 remote (PANASONIC_AC CKP/5) // Brand: Panasonic, Model: A75C2616-1 remote (PANASONIC_AC DKE/3) @@ -25,6 +26,7 @@ // Brand: Panasonic, Model: A75C3747 remote (PANASONIC_AC JKE/4) // Brand: Panasonic, Model: CS-E9CKP series A/C (PANASONIC_AC32) // Brand: Panasonic, Model: A75C2295 remote (PANASONIC_AC32) +// Brand: Panasonic, Model: A75C4762 remote (PANASONIC_AC RKR/6) #ifndef IR_PANASONIC_H_ #define IR_PANASONIC_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp index 0adb81170..9e1ad4669 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.cpp @@ -7,6 +7,7 @@ /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/621 /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 /// @see http://elektrolab.wz.cz/katalog/samsung_protocol.pdf +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1538 (Checksum) #include "ir_Samsung.h" #include @@ -279,8 +280,8 @@ IRSamsungAc::IRSamsungAc(const uint16_t pin, const bool inverted, /// @param[in] initialPower Set the initial power state. True, on. False, off. void IRSamsungAc::stateReset(const bool forcepower, const bool initialPower) { static const uint8_t kReset[kSamsungAcExtendedStateLength] = { - 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x02, 0xAE, 0x71, 0x00, - 0x15, 0xF0}; + 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, + 0x01, 0x02, 0xAE, 0x71, 0x00, 0x15, 0xF0}; std::memcpy(_.raw, kReset, kSamsungAcExtendedStateLength); _forcepower = forcepower; _lastsentpowerstate = initialPower; @@ -290,23 +291,31 @@ void IRSamsungAc::stateReset(const bool forcepower, const bool initialPower) { /// Set up hardware to be able to send a message. void IRSamsungAc::begin(void) { _irsend.begin(); } -/// Calculate the checksum for a given state. -/// @param[in] state The array to calc the checksum of. -/// @param[in] length The length/size of the array. +/// Get the existing checksum for a given state section. +/// @param[in] section The array to extract the checksum from. +/// @return The existing checksum value. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1538#issuecomment-894645947 +uint8_t IRSamsungAc::getSectionChecksum(const uint8_t *section) { + return ((GETBITS8(*(section + 2), kLowNibble, kNibbleSize) << kNibbleSize) + + GETBITS8(*(section + 1), kHighNibble, kNibbleSize)); +} + +/// Calculate the checksum for a given state section. +/// @param[in] section The array to calc the checksum of. /// @return The calculated checksum value. -uint8_t IRSamsungAc::calcChecksum(const uint8_t state[], - const uint16_t length) { +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1538#issuecomment-894645947 +uint8_t IRSamsungAc::calcSectionChecksum(const uint8_t *section) { uint8_t sum = 0; - // Safety check so we don't go outside the array. - if (length < 7) return 255; - // Shamelessly inspired by: - // https://github.com/adafruit/Raw-IR-decoder-for-Arduino/pull/3/files - // Count most of the '1' bits after the checksum location. - sum += countBits(state[length - 7], 8); - sum -= countBits(GETBITS8(state[length - 6], kLowNibble, kNibbleSize), 8); - sum += countBits(GETBITS8(state[length - 5], 1, 7), 8); - sum += countBits(state + length - 4, 3); - return GETBITS8(28 - sum, kLowNibble, kNibbleSize); + + sum += countBits(*section, 8); // Include the entire first byte + // The lower half of the second byte. + sum += countBits(GETBITS8(*(section + 1), kLowNibble, kNibbleSize), 8); + // The upper half of the third byte. + sum += countBits(GETBITS8(*(section + 2), kHighNibble, kNibbleSize), 8); + // The next 4 bytes. + sum += countBits(section + 3, 4); + // Bitwise invert the result. + return sum ^ UINT8_MAX; } /// Verify the checksum is valid for a given state. @@ -314,22 +323,29 @@ uint8_t IRSamsungAc::calcChecksum(const uint8_t state[], /// @param[in] length The length/size of the array. /// @return true, if the state has a valid checksum. Otherwise, false. bool IRSamsungAc::validChecksum(const uint8_t state[], const uint16_t length) { - if (length < kSamsungAcStateLength) - return true; // No checksum to compare with. Assume okay. - uint8_t offset = 0; - if (length >= kSamsungAcExtendedStateLength) offset = 7; - return (GETBITS8(state[length - 6], kHighNibble, kNibbleSize) == - IRSamsungAc::calcChecksum(state, length)) && - (GETBITS8(state[length - (13 + offset)], kHighNibble, kNibbleSize) == - IRSamsungAc::calcChecksum(state, length - (7 + offset))); + bool result = true; + const uint16_t maxlength = + (length > kSamsungAcExtendedStateLength) ? kSamsungAcExtendedStateLength + : length; + for (uint16_t offset = 0; + offset + kSamsungAcSectionLength <= maxlength; + offset += kSamsungAcSectionLength) + result &= (getSectionChecksum(state + offset) == + calcSectionChecksum(state + offset)); + return result; } /// Update the checksum for the internal state. -/// @param[in] length The length/size of the internal array to checksum. -void IRSamsungAc::checksum(uint16_t length) { - if (length < 13) return; - _.Sum2 = calcChecksum(_.raw, length); - _.Sum1 = calcChecksum(_.raw, length - 7); +void IRSamsungAc::checksum(void) { + uint8_t sectionsum = calcSectionChecksum(_.raw); + _.Sum1Upper = GETBITS8(sectionsum, kHighNibble, kNibbleSize); + _.Sum1Lower = GETBITS8(sectionsum, kLowNibble, kNibbleSize); + sectionsum = calcSectionChecksum(_.raw + kSamsungAcSectionLength); + _.Sum2Upper = GETBITS8(sectionsum, kHighNibble, kNibbleSize); + _.Sum2Lower = GETBITS8(sectionsum, kLowNibble, kNibbleSize); + sectionsum = calcSectionChecksum(_.raw + kSamsungAcSectionLength * 2); + _.Sum3Upper = GETBITS8(sectionsum, kHighNibble, kNibbleSize); + _.Sum3Lower = GETBITS8(sectionsum, kLowNibble, kNibbleSize); } #if SEND_SAMSUNG_AC @@ -339,18 +355,14 @@ void IRSamsungAc::checksum(uint16_t length) { /// @note Use for most function/mode/settings changes to the unit. /// i.e. When the device is already running. void IRSamsungAc::send(const uint16_t repeat, const bool calcchecksum) { - if (calcchecksum) checksum(); - // Do we need to send a the special power on/off message? - if (getPower() != _lastsentpowerstate || _forcepower) { - _forcepower = false; // It will now been sent, so clear the flag if set. - if (getPower()) { - sendOn(repeat); - } else { - sendOff(repeat); - return; // No point sending anything else if we are turning the unit off. - } + // Do we need to send a the special power on/off message? i.e. An Extended Msg + if (getPower() != _lastsentpowerstate || _forcepower) { // We do. + sendExtended(repeat, calcchecksum); + _forcepower = false; // It has now been sent, so clear the flag if set. + } else { // No, it's just a normal message. + if (calcchecksum) checksum(); + _irsend.sendSamsungAC(_.raw, kSamsungAcStateLength, repeat); } - _irsend.sendSamsungAC(_.raw, kSamsungAcStateLength, repeat); } /// Send the extended current internal state as an IR message. @@ -360,20 +372,24 @@ void IRSamsungAc::send(const uint16_t repeat, const bool calcchecksum) { /// Samsung A/C requires an extended length message when you want to /// change the power operating mode of the A/C unit. void IRSamsungAc::sendExtended(const uint16_t repeat, const bool calcchecksum) { + static const uint8_t extended_middle_section[kSamsungAcSectionLength] = { + 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00}; if (calcchecksum) checksum(); - uint8_t extended_state[kSamsungAcExtendedStateLength] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - // Copy/convert the internal state to an extended state. - for (uint16_t i = 0; i < kSamsungAcSectionLength; i++) - extended_state[i] = _.raw[i]; - for (uint16_t i = kSamsungAcSectionLength; i < kSamsungAcStateLength; i++) - extended_state[i + kSamsungAcSectionLength] = _.raw[i]; - // extended_state[8] seems special. This is a guess on how to calculate it. - extended_state[8] = (extended_state[1] & 0x9F) | 0x40; + // Copy/convert the internal state to an extended state by + // copying the second section to the third section, and inserting the extended + // middle (second) section. + std::memcpy(_.raw + 2 * kSamsungAcSectionLength, + _.raw + kSamsungAcSectionLength, + kSamsungAcSectionLength); + std::memcpy(_.raw + kSamsungAcSectionLength, extended_middle_section, + kSamsungAcSectionLength); // Send it. - _irsend.sendSamsungAC(extended_state, kSamsungAcExtendedStateLength, repeat); + _irsend.sendSamsungAC(_.raw, kSamsungAcExtendedStateLength, repeat); + // Now revert it by copying the third section over the second section. + std::memcpy(_.raw + kSamsungAcSectionLength, + _.raw + 2* kSamsungAcSectionLength, + kSamsungAcSectionLength); + _lastsentpowerstate = getPower(); // Remember the last power state sent. } /// Send the special extended "On" message as the library can't seem to @@ -381,7 +397,7 @@ void IRSamsungAc::sendExtended(const uint16_t repeat, const bool calcchecksum) { /// @param[in] repeat Nr. of times the message will be repeated. /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036 void IRSamsungAc::sendOn(const uint16_t repeat) { - const uint8_t extended_state[21] = { + const uint8_t extended_state[kSamsungAcExtendedStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE2, 0xFE, 0x71, 0x80, 0x11, 0xF0}; @@ -394,7 +410,7 @@ void IRSamsungAc::sendOn(const uint16_t repeat) { /// @param[in] repeat Nr. of times the message will be repeated. /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/604#issuecomment-475020036 void IRSamsungAc::sendOff(const uint16_t repeat) { - const uint8_t extended_state[21] = { + const uint8_t extended_state[kSamsungAcExtendedStateLength] = { 0x02, 0xB2, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xFF, 0x71, 0x80, 0x11, 0xC0}; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.h index 9d493f4a8..bf9215edc 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Samsung.h @@ -6,6 +6,7 @@ /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/621 /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1062 /// @see http://elektrolab.wz.cz/katalog/samsung_protocol.pdf +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1538 (Checksum) // Supports: // Brand: Samsung, Model: UA55H6300 TV (SAMSUNG) @@ -88,19 +89,59 @@ union SamsungProtocol{ uint8_t :6; }; struct { - uint8_t :8; + // 1st Section + // Byte 0 + uint8_t :8; // Byte 1 - uint8_t :4; - uint8_t Sum1 :4; - uint8_t pad1[6]; + uint8_t :4; + uint8_t Sum1Lower :4; + // Byte 2 + uint8_t Sum1Upper :4; + uint8_t :4; + // Byte 3 + uint8_t :8; + // Byte 4 + uint8_t :8; + // Byte 5 + uint8_t :8; + // Byte 6 + uint8_t :8; + // 2nd Section + // Byte 7 + uint8_t :8; // Byte 8 - uint8_t :4; - uint8_t Sum2 :4; - uint8_t :8; + uint8_t :4; + uint8_t Sum2Lower :4; + // Byte 9 + uint8_t Sum2Upper :4; + uint8_t :4; // Byte 10 - uint8_t :1; - uint8_t Breeze :3; // WindFree - uint8_t :4; + uint8_t :1; + uint8_t Breeze :3; // WindFree + uint8_t :4; + // Byte 11 + uint8_t :8; + // Byte 12 + uint8_t :8; + // Byte 13 + uint8_t :8; + // 3rd Section + // Byte 14 + uint8_t :8; + // Byte 15 + uint8_t :4; + uint8_t Sum3Lower :4; + // Byte 16 + uint8_t Sum3Upper :4; + uint8_t :4; + // Byte 17 + uint8_t :8; + // Byte 18 + uint8_t :8; + // Byte 19 + uint8_t :8; + // Byte 20 + uint8_t :8; }; }; @@ -110,8 +151,8 @@ const uint8_t kSamsungAcSwingMove = 0b010; const uint8_t kSamsungAcSwingStop = 0b111; const uint8_t kSamsungAcPowerful10On = 0b011; const uint8_t kSamsungAcBreezeOn = 0b101; -const uint8_t kSamsungAcMinTemp = 16; // C Mask 0b11110000 -const uint8_t kSamsungAcMaxTemp = 30; // C Mask 0b11110000 +const uint8_t kSamsungAcMinTemp = 16; // C Mask 0b11110000 +const uint8_t kSamsungAcMaxTemp = 30; // C Mask 0b11110000 const uint8_t kSamsungAcAutoTemp = 25; // C Mask 0b11110000 const uint8_t kSamsungAcAuto = 0; const uint8_t kSamsungAcCool = 1; @@ -177,10 +218,10 @@ class IRSamsungAc { uint8_t* getRaw(void); void setRaw(const uint8_t new_code[], const uint16_t length = kSamsungAcStateLength); + static uint8_t calcSectionChecksum(const uint8_t *section); + static uint8_t getSectionChecksum(const uint8_t *section); static bool validChecksum(const uint8_t state[], const uint16_t length = kSamsungAcStateLength); - static uint8_t calcChecksum(const uint8_t state[], - const uint16_t length = kSamsungAcStateLength); static uint8_t convertMode(const stdAc::opmode_t mode); static uint8_t convertFan(const stdAc::fanspeed_t speed); static stdAc::opmode_t toCommonMode(const uint8_t mode); @@ -199,7 +240,7 @@ class IRSamsungAc { SamsungProtocol _; bool _forcepower; ///< Hack to know when we need to send a special power mesg bool _lastsentpowerstate; - void checksum(const uint16_t length = kSamsungAcStateLength); + void checksum(void); }; #endif // IR_SAMSUNG_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.cpp index 637d346fb..7dbed5a58 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.cpp @@ -1,6 +1,6 @@ // Copyright 2009 Ken Shirriff // Copyright 2016 marcosamarinho -// Copyright 2017-2020 David Conran +// Copyright 2017-2021 David Conran /// @file /// @brief Support for Sanyo protocols. @@ -13,6 +13,7 @@ /// @see http://slydiman.narod.ru/scr/kb/sanyo.htm /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1211 /// @see https://docs.google.com/spreadsheets/d/1dYfLsnYvpjV-SgO8pdinpfuBIpSzm8Q1R5SabrLeskw/edit?usp=sharing +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1503 #include "ir_Sanyo.h" #include @@ -67,6 +68,15 @@ const uint16_t kSanyoAcZeroSpace = 550; ///< uSeconds const uint32_t kSanyoAcGap = kDefaultMessageGap; ///< uSeconds (Guess only) const uint16_t kSanyoAcFreq = 38000; ///< Hz. (Guess only) +const uint16_t kSanyoAc88HdrMark = 5400; ///< uSeconds +const uint16_t kSanyoAc88HdrSpace = 2000; ///< uSeconds +const uint16_t kSanyoAc88BitMark = 500; ///< uSeconds +const uint16_t kSanyoAc88OneSpace = 1500; ///< uSeconds +const uint16_t kSanyoAc88ZeroSpace = 750; ///< uSeconds +const uint32_t kSanyoAc88Gap = 3675; ///< uSeconds +const uint16_t kSanyoAc88Freq = 38000; ///< Hz. (Guess only) +const uint8_t kSanyoAc88ExtraTolerance = 5; /// (%) Extra tolerance to use. + #if SEND_SANYO /// Construct a Sanyo LC7461 message. /// @param[in] address The 13 bit value of the address(Custom) portion of the @@ -305,8 +315,7 @@ IRSanyoAc::IRSanyoAc(const uint16_t pin, const bool inverted, const bool use_modulation) : _irsend(pin, inverted, use_modulation) { stateReset(); } -/// Reset the state of the remote to a known good state/sequence. -/// @see https://docs.google.com/spreadsheets/d/1dYfLsnYvpjV-SgO8pdinpfuBIpSzm8Q1R5SabrLeskw/edit?ts=5f0190a5#gid=1050142776&range=A2:B2 +/// Reset the state of the remote to a known state/sequence. void IRSanyoAc::stateReset(void) { static const uint8_t kReset[kSanyoAcStateLength] = { 0x6A, 0x6D, 0x51, 0x00, 0x10, 0x45, 0x00, 0x00, 0x33}; @@ -656,3 +665,314 @@ String IRSanyoAc::toString(void) const { kOffTimerStr); return result; } + +#if SEND_SANYO_AC88 +/// Send a SanyoAc88 formatted message. +/// Status: ALPHA / Completely untested. +/// @param[in] data An array of bytes containing the IR command. +/// @warning data's bit order may change. It is not yet confirmed. +/// @param[in] nbytes Nr. of bytes of data in the array. +/// @param[in] repeat Nr. of times the message is to be repeated. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1503 +void IRsend::sendSanyoAc88(const uint8_t data[], const uint16_t nbytes, + const uint16_t repeat) { + // (Header + Data + Footer) per repeat + sendGeneric(kSanyoAc88HdrMark, kSanyoAc88HdrSpace, + kSanyoAc88BitMark, kSanyoAc88OneSpace, + kSanyoAc88BitMark, kSanyoAc88ZeroSpace, + kSanyoAc88BitMark, kSanyoAc88Gap, + data, nbytes, kSanyoAc88Freq, false, repeat, kDutyDefault); + space(kDefaultMessageGap); // Make a guess at a post message gap. +} +#endif // SEND_SANYO_AC88 + +#if DECODE_SANYO_AC88 +/// Decode the supplied SanyoAc message. +/// Status: ALPHA / Untested. +/// @param[in,out] results Ptr to the data to decode & where to store the decode +/// @warning data's bit order may change. It is not yet confirmed. +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return A boolean. True if it can decode it, false if it can't. +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1503 +bool IRrecv::decodeSanyoAc88(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (strict && nbits != kSanyoAc88Bits) + return false; + + uint16_t used = 0; + // Compliance + const uint16_t expected_repeats = strict ? kSanyoAc88MinRepeat : 0; + + // Handle the expected nr of repeats. + for (uint16_t r = 0; r <= expected_repeats; r++) { + // Header + Data + Footer + used = matchGeneric(results->rawbuf + offset, results->state, + results->rawlen - offset, nbits, + kSanyoAc88HdrMark, kSanyoAc88HdrSpace, + kSanyoAc88BitMark, kSanyoAc88OneSpace, + kSanyoAc88BitMark, kSanyoAc88ZeroSpace, + kSanyoAc88BitMark, + // Expect an inter-message gap, or just the end of msg? + (r < expected_repeats) ? kSanyoAc88Gap + : kDefaultMessageGap, + r == expected_repeats, + _tolerance + kSanyoAc88ExtraTolerance, + kMarkExcess, false); + if (!used) return false; // No match! + offset += used; + } + + // Success + results->decode_type = decode_type_t::SANYO_AC88; + results->bits = nbits; + // No need to record the state as we stored it as we decoded it. + // As we use result->state, we don't record value, address, or command as it + // is a union data type. + return true; +} +#endif // DECODE_SANYO_AC88 + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +IRSanyoAc88::IRSanyoAc88(const uint16_t pin, const bool inverted, + const bool use_modulation) + : _irsend(pin, inverted, use_modulation) { stateReset(); } + +/// Reset the state of the remote to a known good state/sequence. +/// @see https://docs.google.com/spreadsheets/d/1dYfLsnYvpjV-SgO8pdinpfuBIpSzm8Q1R5SabrLeskw/edit?ts=5f0190a5#gid=1050142776&range=A2:B2 +void IRSanyoAc88::stateReset(void) { + static const uint8_t kReset[kSanyoAc88StateLength] = { + 0xAA, 0x55, 0xA0, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x10}; + std::memcpy(_.raw, kReset, kSanyoAc88StateLength); +} + +/// Set up hardware to be able to send a message. +void IRSanyoAc88::begin(void) { _irsend.begin(); } + +#if SEND_SANYO_AC +/// Send the current internal state as IR messages. +/// @param[in] repeat Nr. of times the message will be repeated. +void IRSanyoAc88::send(const uint16_t repeat) { + _irsend.sendSanyoAc88(getRaw(), kSanyoAc88StateLength, repeat); +} +#endif // SEND_SANYO_AC + +/// Get a PTR to the internal state/code for this protocol with all integrity +/// checks passing. +/// @return PTR to a code for this protocol based on the current internal state. +uint8_t* IRSanyoAc88::getRaw(void) { + return _.raw; +} + +/// Set the internal state from a valid code for this protocol. +/// @param[in] newState A valid code for this protocol. +void IRSanyoAc88::setRaw(const uint8_t newState[]) { + std::memcpy(_.raw, newState, kSanyoAc88StateLength); +} + +/// Set the requested power state of the A/C to on. +void IRSanyoAc88::on(void) { setPower(true); } + +/// Set the requested power state of the A/C to off. +void IRSanyoAc88::off(void) { setPower(false); } + +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRSanyoAc88::setPower(const bool on) { _.Power = on; } + +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. +bool IRSanyoAc88::getPower(void) const { return _.Power; } + +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. +uint8_t IRSanyoAc88::getMode(void) const { return _.Mode; } + +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +/// @note If we get an unexpected mode, default to AUTO. +void IRSanyoAc88::setMode(const uint8_t mode) { + switch (mode) { + case kSanyoAc88Auto: + case kSanyoAc88FeelCool: + case kSanyoAc88Cool: + case kSanyoAc88FeelHeat: + case kSanyoAc88Heat: + case kSanyoAc88Fan: + _.Mode = mode; + break; + default: _.Mode = kSanyoAc88Auto; + } +} + +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivalent of the enum. +uint8_t IRSanyoAc88::convertMode(const stdAc::opmode_t mode) { + switch (mode) { + case stdAc::opmode_t::kCool: return kSanyoAc88Cool; + case stdAc::opmode_t::kHeat: return kSanyoAc88Heat; + case stdAc::opmode_t::kFan: return kSanyoAc88Fan; + default: return kSanyoAc88Auto; + } +} + +/// Convert a native mode into its stdAc equivalent. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivalent of the native setting. +stdAc::opmode_t IRSanyoAc88::toCommonMode(const uint8_t mode) { + switch (mode) { + case kSanyoAc88FeelCool: + case kSanyoAc88Cool: + return stdAc::opmode_t::kCool; + case kSanyoAc88FeelHeat: + case kSanyoAc88Heat: + return stdAc::opmode_t::kHeat; + case kSanyoAc88Fan: + return stdAc::opmode_t::kFan; + default: + return stdAc::opmode_t::kAuto; + } +} + +/// Set the desired temperature. +/// @param[in] degrees The temperature in degrees celsius. +void IRSanyoAc88::setTemp(const uint8_t degrees) { + uint8_t temp = std::max((uint8_t)kSanyoAc88TempMin, degrees); + _.Temp = std::min((uint8_t)kSanyoAc88TempMax, temp); +} + +/// Get the current desired temperature setting. +/// @return The current setting for temp. in degrees celsius. +uint8_t IRSanyoAc88::getTemp(void) const { return _.Temp; } + +/// Set the speed of the fan. +/// @param[in] speed The desired setting. +void IRSanyoAc88::setFan(const uint8_t speed) { _.Fan = speed; } + +/// Get the current fan speed setting. +/// @return The current fan speed/mode. +uint8_t IRSanyoAc88::getFan(void) const { return _.Fan; } + +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivalent of the enum. +uint8_t IRSanyoAc88::convertFan(const stdAc::fanspeed_t speed) { + switch (speed) { + case stdAc::fanspeed_t::kMin: + case stdAc::fanspeed_t::kLow: return kSanyoAc88FanLow; + case stdAc::fanspeed_t::kMedium: return kSanyoAc88FanMedium; + case stdAc::fanspeed_t::kHigh: + case stdAc::fanspeed_t::kMax: return kSanyoAc88FanHigh; + default: return kSanyoAc88FanAuto; + } +} + +/// Get the current clock time. +/// @return The time as the nr. of minutes past midnight. +uint16_t IRSanyoAc88::getClock(void) const { + return _.ClockHrs * 60 + _.ClockMins; +} + +/// Set the current clock time. +/// @param[in] mins_since_midnight The time as nr. of minutes past midnight. +void IRSanyoAc88::setClock(const uint16_t mins_since_midnight) { + uint16_t mins = std::min(mins_since_midnight, (uint16_t)(23 * 60 + 59)); + _.ClockMins = mins % 60; + _.ClockHrs = mins / 60; + _.ClockSecs = 0; +} + +/// Convert a native fan speed into its stdAc equivalent. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivalent of the native setting. +stdAc::fanspeed_t IRSanyoAc88::toCommonFanSpeed(const uint8_t spd) { + switch (spd) { + case kSanyoAc88FanHigh: return stdAc::fanspeed_t::kHigh; + case kSanyoAc88FanMedium: return stdAc::fanspeed_t::kMedium; + case kSanyoAc88FanLow: return stdAc::fanspeed_t::kLow; + default: return stdAc::fanspeed_t::kAuto; + } +} + +/// Change the SwingV setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRSanyoAc88::setSwingV(const bool on) { _.SwingV = on; } + +/// Get the value of the current SwingV setting. +/// @return true, the setting is on. false, the setting is off. +bool IRSanyoAc88::getSwingV(void) const { return _.SwingV; } + +/// Change the Turbo setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRSanyoAc88::setTurbo(const bool on) { _.Turbo = on; } + +/// Get the value of the current Turbo setting. +/// @return true, the setting is on. false, the setting is off. +bool IRSanyoAc88::getTurbo(void) const { return _.Turbo; } + +/// Change the Filter setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRSanyoAc88::setFilter(const bool on) { _.Filter = on; } + +/// Get the value of the current Filter setting. +/// @return true, the setting is on. false, the setting is off. +bool IRSanyoAc88::getFilter(void) const { return _.Filter; } + +/// Change the Sleep setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRSanyoAc88::setSleep(const bool on) { _.Sleep = on; } + +/// Get the value of the current Sleep setting. +/// @return true, the setting is on. false, the setting is off. +bool IRSanyoAc88::getSleep(void) const { return _.Sleep; } + +/// Convert the current internal state into its stdAc::state_t equivalent. +/// @return The stdAc equivalent of the native settings. +stdAc::state_t IRSanyoAc88::toCommon(void) const { + stdAc::state_t result; + result.protocol = decode_type_t::SANYO_AC88; + result.model = -1; // Not supported. + result.power = getPower(); + result.mode = toCommonMode(_.Mode); + result.celsius = true; + result.degrees = getTemp(); + result.fanspeed = toCommonFanSpeed(_.Fan); + result.swingv = _.SwingV ? stdAc::swingv_t::kAuto : stdAc::swingv_t::kOff; + result.filter = _.Filter; + result.turbo = _.Turbo; + result.sleep = _.Sleep ? 0 : -1; + result.clock = getClock(); + // Not supported. + result.swingh = stdAc::swingh_t::kOff; + result.econo = false; + result.light = false; + result.quiet = false; + result.beep = false; + result.clean = false; + return result; +} + +/// Convert the current internal state into a human readable string. +/// @return A human readable string. +String IRSanyoAc88::toString(void) const { + String result = ""; + result.reserve(115); + result += addBoolToString(getPower(), kPowerStr, false); + result += addModeToString(_.Mode, kSanyoAc88Auto, kSanyoAc88Cool, + kSanyoAc88Heat, kSanyoAc88Auto, kSanyoAc88Fan); + result += addTempToString(getTemp()); + result += addFanToString(_.Fan, kSanyoAc88FanHigh, kSanyoAc88FanLow, + kSanyoAc88FanAuto, kSanyoAc88FanAuto, + kSanyoAc88FanMedium); + result += addBoolToString(_.SwingV, kSwingVStr); + result += addBoolToString(_.Turbo, kTurboStr); + result += addBoolToString(_.Sleep, kSleepStr); + result += addLabeledString(minsToString(getClock()), kClockStr); + return result; +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.h index d02b06c21..66376328f 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Sanyo.h @@ -1,4 +1,4 @@ -// Copyright 2020 David Conran +// Copyright 2020-2021 David Conran /// @file /// @brief Support for Sanyo protocols. @@ -11,6 +11,8 @@ /// @see http://slydiman.narod.ru/scr/kb/sanyo.htm /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1211 /// @see https://docs.google.com/spreadsheets/d/1dYfLsnYvpjV-SgO8pdinpfuBIpSzm8Q1R5SabrLeskw/edit?usp=sharing +/// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1503 +/// @see https://docs.google.com/spreadsheets/d/1weUmGAsEpfX38gg5rlDN69Uchnbr6gQl9FqHffLBIRk/edit#gid=0 // Supports: // Brand: Sanyo, Model: SA 8650B - disabled @@ -166,4 +168,115 @@ class IRSanyoAc { const uint16_t length = kSanyoAcStateLength); }; +const uint8_t kSanyoAc88Auto = 0; ///< 0b000 +const uint8_t kSanyoAc88FeelCool = 1; ///< 0b001 +const uint8_t kSanyoAc88Cool = 2; ///< 0b010 +const uint8_t kSanyoAc88FeelHeat = 3; ///< 0b011 +const uint8_t kSanyoAc88Heat = 4; ///< 0b100 +const uint8_t kSanyoAc88Fan = 5; ///< 0b101 + +const uint8_t kSanyoAc88TempMin = 10; ///< Celsius +const uint8_t kSanyoAc88TempMax = 30; ///< Celsius + +const uint8_t kSanyoAc88FanAuto = 0; ///< 0b00 +const uint8_t kSanyoAc88FanLow = 1; ///< 0b11 +const uint8_t kSanyoAc88FanMedium = 2; ///< 0b10 +const uint8_t kSanyoAc88FanHigh = 3; ///< 0b11 + +/// Native representation of a Sanyo 88-bit A/C message. +union SanyoAc88Protocol{ + uint8_t raw[kSanyoAc88StateLength]; ///< The state in IR code form. + // Ref: https://docs.google.com/spreadsheets/d/1weUmGAsEpfX38gg5rlDN69Uchnbr6gQl9FqHffLBIRk/edit#gid=0 + struct { + // Byte 0-1 + uint8_t :8; // 0xAA (Fixed?) + uint8_t :8; // 0x55 (Fixed?) + // Byte 2 + uint8_t Fan :2; + uint8_t :2; + uint8_t Mode :3; + uint8_t Power :1; + // Byte 3 + uint8_t Temp :5; + uint8_t Filter :1; + uint8_t SwingV :1; + uint8_t :1; + // Byte 4 + uint8_t ClockSecs :8; // Nr. of Seconds + // Byte 5 + uint8_t ClockMins :8; // Nr. of Minutes + // Byte 6 + uint8_t ClockHrs :8; // Nr. of Hours + // Byte 7-9 (Timer times?) + uint8_t :8; + uint8_t :8; + uint8_t :8; + // Byte 10 + uint8_t :3; + uint8_t Turbo :1; + uint8_t EnableStartTimer :1; + uint8_t EnableStopTimer :1; + uint8_t Sleep :1; + uint8_t :1; + }; +}; + +// Classes +/// Class for handling detailed Sanyo A/C messages. +class IRSanyoAc88 { + public: + explicit IRSanyoAc88(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); + void stateReset(void); +#if SEND_SANYO_AC88 + void send(const uint16_t repeat = kSanyoAc88MinRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } +#endif // SEND_SANYO_AC88 + void begin(void); + void on(void); + void off(void); + void setPower(const bool on); + bool getPower(void) const; + void setTemp(const uint8_t degrees); + uint8_t getTemp(void) const; + void setFan(const uint8_t speed); + uint8_t getFan(void) const; + void setMode(const uint8_t mode); + uint8_t getMode(void) const; + void setSleep(const bool on); + bool getSleep(void) const; + void setTurbo(const bool on); + bool getTurbo(void) const; + void setFilter(const bool on); + bool getFilter(void) const; + void setSwingV(const bool on); + bool getSwingV(void) const; + uint16_t getClock(void) const; + void setClock(const uint16_t mins_since_midnight); + void setRaw(const uint8_t newState[]); + uint8_t* getRaw(void); + static uint8_t convertMode(const stdAc::opmode_t mode); + static uint8_t convertFan(const stdAc::fanspeed_t speed); + static stdAc::opmode_t toCommonMode(const uint8_t mode); + static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); + stdAc::state_t toCommon(void) const; + String toString(void) const; +#ifndef UNIT_TEST + + private: + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + SanyoAc88Protocol _; + void checksum(void); + static uint8_t calcChecksum(const uint8_t state[], + const uint16_t length = kSanyoAcStateLength); +}; #endif // IR_SANYO_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.cpp index 6ec95220b..cce9d1f4c 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.cpp @@ -1,4 +1,4 @@ -// Copyright 2019 David Conran +// Copyright 2019, 2021 David Conran /// @file /// @brief Support for TCL protocols. @@ -53,6 +53,26 @@ void IRTcl112Ac::begin(void) { _irsend.begin(); } /// Send the current internal state as an IR message. /// @param[in] repeat Nr. of times the message will be repeated. void IRTcl112Ac::send(const uint16_t repeat) { + uint8_t save[kTcl112AcStateLength]; + // Do we need to send the special "quiet" message? + if (_quiet != _quiet_prev) { + // Backup the current state. + std::memcpy(save, _.raw, kTcl112AcStateLength); + const uint8_t quiet_off[kTcl112AcStateLength] = { + 0x23, 0xCB, 0x26, 0x02, 0x00, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65}; + // Use a known good quiet/mute off/type 2 state for the time being. + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1528#issuecomment-876989044 + setRaw(quiet_off); + setQuiet(_quiet); + // Send it. + _irsend.sendTcl112Ac(getRaw(), kTcl112AcStateLength, repeat); + // Now it's been sent, update the quiet previous state. + _quiet_prev = _quiet; + // Restore the old state. + setRaw(save); + } + // Send the normal (type 1) state. _irsend.sendTcl112Ac(getRaw(), kTcl112AcStateLength, repeat); } #endif // SEND_TCL112AC @@ -62,10 +82,15 @@ void IRTcl112Ac::send(const uint16_t repeat) { /// @param[in] length The length/size of the array. /// @return The calculated checksum value. uint8_t IRTcl112Ac::calcChecksum(uint8_t state[], const uint16_t length) { - if (length) - return sumBytes(state, length - 1); - else + if (length) { + if (length > 4 && state[3] == 0x02) { // Special nessage? + return sumBytes(state, length - 1, 0xF); // Checksum needs an offset. + } else { + return sumBytes(state, length - 1); + } + } else { return 0; + } } /// Calculate & set the checksum for the current internal state of the remote. @@ -91,6 +116,9 @@ void IRTcl112Ac::stateReset(void) { 0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x03, 0x07, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03}; std::memcpy(_.raw, reset, kTcl112AcStateLength); + _quiet = false; + _quiet_prev = false; + _quiet_explictly_set = false; } /// Get a PTR to the internal state/code for this protocol. @@ -115,21 +143,15 @@ void IRTcl112Ac::off(void) { setPower(false); } /// Change the power setting. /// @param[in] on true, the setting is on. false, the setting is off. -void IRTcl112Ac::setPower(const bool on) { - _.Power = on; -} +void IRTcl112Ac::setPower(const bool on) { _.Power = on; } /// Get the value of the current power setting. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getPower(void) const { - return _.Power; -} +bool IRTcl112Ac::getPower(void) const { return _.Power; } /// Get the operating mode setting of the A/C. /// @return The current operating mode setting. -uint8_t IRTcl112Ac::getMode(void) const { - return _.Mode; -} +uint8_t IRTcl112Ac::getMode(void) const { return _.Mode; } /// Set the operating mode of the A/C. /// @param[in] mode The desired operating mode. @@ -193,57 +215,39 @@ void IRTcl112Ac::setFan(const uint8_t speed) { /// Get the current fan speed setting. /// @return The current fan speed/mode. -uint8_t IRTcl112Ac::getFan(void) const { - return _.Fan; -} +uint8_t IRTcl112Ac::getFan(void) const { return _.Fan; } /// Set the economy setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRTcl112Ac::setEcono(const bool on) { - _.Econo = on; -} +void IRTcl112Ac::setEcono(const bool on) { _.Econo = on; } /// Get the economy setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getEcono(void) const { - return _.Econo; -} +bool IRTcl112Ac::getEcono(void) const { return _.Econo; } /// Set the Health (Filter) setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRTcl112Ac::setHealth(const bool on) { - _.Health = on; -} +void IRTcl112Ac::setHealth(const bool on) { _.Health = on; } /// Get the Health (Filter) setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getHealth(void) const { - return _.Health; -} +bool IRTcl112Ac::getHealth(void) const { return _.Health; } /// Set the Light (LED/Display) setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRTcl112Ac::setLight(const bool on) { - _.Light = !on; // Cleared when on. -} +void IRTcl112Ac::setLight(const bool on) { _.Light = !on; } // Cleared when on. /// Get the Light (LED/Display) setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getLight(void) const { - return !_.Light; -} +bool IRTcl112Ac::getLight(void) const { return !_.Light; } /// Set the horizontal swing setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. -void IRTcl112Ac::setSwingHorizontal(const bool on) { - _.SwingH = on; -} +void IRTcl112Ac::setSwingHorizontal(const bool on) { _.SwingH = on; } /// Get the horizontal swing setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getSwingHorizontal(void) const { - return _.SwingH; -} +bool IRTcl112Ac::getSwingHorizontal(void) const { return _.SwingH; } /// Set the vertical swing setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -253,9 +257,7 @@ void IRTcl112Ac::setSwingVertical(const bool on) { /// Get the vertical swing setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getSwingVertical(void) const { - return _.SwingV; -} +bool IRTcl112Ac::getSwingVertical(void) const { return _.SwingV; } /// Set the Turbo setting of the A/C. /// @param[in] on true, the setting is on. false, the setting is off. @@ -269,8 +271,24 @@ void IRTcl112Ac::setTurbo(const bool on) { /// Get the Turbo setting of the A/C. /// @return true, the setting is on. false, the setting is off. -bool IRTcl112Ac::getTurbo(void) const { - return _.Turbo; +bool IRTcl112Ac::getTurbo(void) const { return _.Turbo; } + +/// Set the Quiet setting of the A/C. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRTcl112Ac::setQuiet(const bool on) { + _quiet_explictly_set = true; + _quiet = on; + if (_.MsgType == kTcl112AcSpecial) _.Quiet = on; +} + +/// Get the Quiet setting of the A/C. +/// @param[in] def The default value to use if we are not sure. +/// @return true, the setting is on. false, the setting is off. +bool IRTcl112Ac::getQuiet(const bool def) const { + if (_.MsgType == kTcl112AcSpecial) + return _.Quiet; + else + return _quiet_explictly_set ? _quiet : def; } /// Convert a stdAc::opmode_t enum into its native mode. @@ -326,26 +344,30 @@ stdAc::fanspeed_t IRTcl112Ac::toCommonFanSpeed(const uint8_t spd) { } /// Convert the current internal state into its stdAc::state_t equivalent. +/// @param[in] prev Ptr to the previous state if required. /// @return The stdAc equivalent of the native settings. -stdAc::state_t IRTcl112Ac::toCommon(void) const { +stdAc::state_t IRTcl112Ac::toCommon(const stdAc::state_t *prev) const { stdAc::state_t result; + // Start with the previous state if given it. + if (prev != NULL) result = *prev; result.protocol = decode_type_t::TCL112AC; result.model = -1; // Not supported. - result.power = _.Power; - result.mode = toCommonMode(_.Mode); - result.celsius = true; - result.degrees = getTemp(); - result.fanspeed = toCommonFanSpeed(_.Fan); - result.swingv = _.SwingV ? stdAc::swingv_t::kAuto : - stdAc::swingv_t::kOff; - result.swingh = _.SwingH ? stdAc::swingh_t::kAuto : - stdAc::swingh_t::kOff; - result.turbo = _.Turbo; - result.light = getLight(); - result.filter = _.Health; - result.econo = _.Econo; + result.quiet = getQuiet(result.quiet); + // The rest only get updated if it is a "normal" message. + if (_.MsgType == kTcl112AcNormal) { + result.power = _.Power; + result.mode = toCommonMode(_.Mode); + result.celsius = true; + result.degrees = getTemp(); + result.fanspeed = toCommonFanSpeed(_.Fan); + result.swingv = _.SwingV ? stdAc::swingv_t::kAuto : stdAc::swingv_t::kOff; + result.swingh = _.SwingH ? stdAc::swingh_t::kAuto : stdAc::swingh_t::kOff; + result.turbo = _.Turbo; + result.filter = _.Health; + result.econo = _.Econo; + result.light = getLight(); + } // Not supported. - result.quiet = false; result.clean = false; result.beep = false; result.sleep = -1; @@ -357,19 +379,28 @@ stdAc::state_t IRTcl112Ac::toCommon(void) const { /// @return A human readable string. String IRTcl112Ac::toString(void) const { String result = ""; - result.reserve(140); // Reserve some heap for the string to reduce fragging. - result += addBoolToString(_.Power, kPowerStr, false); - result += addModeToString(_.Mode, kTcl112AcAuto, kTcl112AcCool, - kTcl112AcHeat, kTcl112AcDry, kTcl112AcFan); - result += addTempFloatToString(getTemp()); - result += addFanToString(_.Fan, kTcl112AcFanHigh, kTcl112AcFanLow, - kTcl112AcFanAuto, kTcl112AcFanAuto, kTcl112AcFanMed); - result += addBoolToString(_.Econo, kEconoStr); - result += addBoolToString(_.Health, kHealthStr); - result += addBoolToString(getLight(), kLightStr); - result += addBoolToString(_.Turbo, kTurboStr); - result += addBoolToString(_.SwingH, kSwingHStr); - result += addBoolToString(_.SwingV, kSwingVStr); + result.reserve(150); // Reserve some heap for the string to reduce fragging. + result += addIntToString(_.MsgType, D_STR_TYPE, false); + switch (_.MsgType) { + case kTcl112AcNormal: + result += addBoolToString(_.Power, kPowerStr); + result += addModeToString(_.Mode, kTcl112AcAuto, kTcl112AcCool, + kTcl112AcHeat, kTcl112AcDry, kTcl112AcFan); + result += addTempFloatToString(getTemp()); + result += addFanToString(_.Fan, kTcl112AcFanHigh, kTcl112AcFanLow, + kTcl112AcFanAuto, kTcl112AcFanAuto, + kTcl112AcFanMed); + result += addBoolToString(_.Econo, kEconoStr); + result += addBoolToString(_.Health, kHealthStr); + result += addBoolToString(_.Turbo, kTurboStr); + result += addBoolToString(_.SwingH, kSwingHStr); + result += addBoolToString(_.SwingV, kSwingVStr); + result += addBoolToString(getLight(), kLightStr); + break; + case kTcl112AcSpecial: + result += addBoolToString(_.Quiet, kQuietStr); + break; + } return result; } diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.h index fded2fed5..b9f059627 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Tcl.h @@ -1,10 +1,11 @@ -// Copyright 2019 David Conran +// Copyright 2019, 2021 David Conran /// @file /// @brief Support for TCL protocols. // Supports: // Brand: Leberg, Model: LBS-TOR07 A/C +// Brand: TCL, Model: TAC-09CHSD/XA31I A/C #ifndef IR_TCL_H_ #define IR_TCL_H_ @@ -23,12 +24,18 @@ union Tcl112Protocol{ uint8_t raw[kTcl112AcStateLength]; ///< The State in IR code form. struct { - // Byte 0~4 - uint8_t pad0[5]; + // Byte 0~2 + uint8_t pad0[3]; + // Byte 3 + uint8_t MsgType :2; + uint8_t :6; + // Byte 4 + uint8_t :8; // Byte 5 uint8_t :2; uint8_t Power :1; - uint8_t :3; + uint8_t :2; + uint8_t Quiet :1; uint8_t Light :1; uint8_t Econo :1; // Byte 6 @@ -83,6 +90,9 @@ const float kTcl112AcTempMin = 16.0; const uint8_t kTcl112AcSwingVOn = 0b111; const uint8_t kTcl112AcSwingVOff = 0b000; +// MsgType +const uint8_t kTcl112AcNormal = 0b01; +const uint8_t kTcl112AcSpecial = 0b10; // Classes /// Class for handling detailed TCL A/C messages. @@ -129,11 +139,13 @@ class IRTcl112Ac { bool getSwingVertical(void) const; void setTurbo(const bool on); bool getTurbo(void) const; + void setQuiet(const bool on); + bool getQuiet(const bool def = false) const; static uint8_t convertMode(const stdAc::opmode_t mode); static uint8_t convertFan(const stdAc::fanspeed_t speed); static stdAc::opmode_t toCommonMode(const uint8_t mode); static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); - stdAc::state_t toCommon(void) const; + stdAc::state_t toCommon(const stdAc::state_t *prev = NULL) const; String toString(void) const; #ifndef UNIT_TEST @@ -145,6 +157,9 @@ class IRTcl112Ac { /// @endcond #endif // UNIT_TEST Tcl112Protocol _; + bool _quiet_prev; + bool _quiet; + bool _quiet_explictly_set; void checksum(const uint16_t length = kTcl112AcStateLength); }; diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.cpp index ffb91bd90..7cd6fff5e 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.cpp @@ -25,12 +25,21 @@ const uint16_t kTrotecZeroSpace = 592; const uint16_t kTrotecGap = 6184; const uint16_t kTrotecGapEnd = 1500; // made up value +const uint16_t kTrotec3550HdrMark = 12000; +const uint16_t kTrotec3550HdrSpace = 5130; +const uint16_t kTrotec3550BitMark = 550; +const uint16_t kTrotec3550OneSpace = 1950; +const uint16_t kTrotec3550ZeroSpace = 500; + +const uint16_t kTrotec3550TimerMax = 8 * 60; ///< 8 hours in Minutes. + using irutils::addBoolToString; using irutils::addFanToString; using irutils::addIntToString; using irutils::addLabeledString; using irutils::addModeToString; using irutils::addTempToString; +using irutils::minsToString; #if SEND_TROTEC /// Send a Trotec message. @@ -338,3 +347,296 @@ bool IRrecv::decodeTrotec(decode_results *results, uint16_t offset, return true; } #endif // DECODE_TROTEC + +#if SEND_TROTEC_3550 +/// Send a Trotec 3550 message. +/// Status: STABLE / Known to be working. +/// @param[in] data The message to be sent. +/// @param[in] nbytes The number of bytes of message to be sent. +/// @param[in] repeat The number of times the command is to be repeated. +void IRsend::sendTrotec3550(const unsigned char data[], const uint16_t nbytes, + const uint16_t repeat) { + sendGeneric(kTrotec3550HdrMark, kTrotec3550HdrSpace, + kTrotec3550BitMark, kTrotec3550OneSpace, + kTrotec3550BitMark, kTrotec3550ZeroSpace, + kTrotec3550BitMark, kDefaultMessageGap, + data, nbytes, 38, true, repeat, kDutyDefault); +} +#endif // SEND_TROTEC_3550 + +#if DECODE_TROTEC_3550 +/// Decode the supplied Trotec 3550 message. +/// Status: STABLE / Known to be working. +/// @param[in,out] results Ptr to the data to decode & where to store the result +/// @param[in] offset The starting index to use when attempting to decode the +/// raw data. Typically/Defaults to kStartOffset. +/// @param[in] nbits The number of data bits to expect. +/// @param[in] strict Flag indicating if we should perform strict matching. +/// @return True if it can decode it, false if it can't. +bool IRrecv::decodeTrotec3550(decode_results *results, uint16_t offset, + const uint16_t nbits, const bool strict) { + if (strict && nbits != kTrotecBits) return false; + + // Header + Data + Footer + if (!matchGeneric(results->rawbuf + offset, results->state, + results->rawlen - offset, nbits, + kTrotec3550HdrMark, kTrotec3550HdrSpace, + kTrotec3550BitMark, kTrotec3550OneSpace, + kTrotec3550BitMark, kTrotec3550ZeroSpace, + kTrotec3550BitMark, kDefaultMessageGap)) return false; + // Compliance + if (strict && !IRTrotec3550::validChecksum(results->state, nbits / 8)) + return false; + // Success + results->decode_type = TROTEC_3550; + results->bits = nbits; + // No need to record the state as we stored it as we decoded it. + // As we use result->state, we don't record value, address, or command as it + // is a union data type. + return true; +} +#endif // DECODE_TROTEC_3550 + +/// Class constructor +/// @param[in] pin GPIO to be used when sending. +/// @param[in] inverted Is the output signal to be inverted? +/// @param[in] use_modulation Is frequency modulation to be used? +IRTrotec3550::IRTrotec3550(const uint16_t pin, const bool inverted, + const bool use_modulation) + : _irsend(pin, inverted, use_modulation) { stateReset(); } + +/// Set up hardware to be able to send a message. +void IRTrotec3550::begin(void) { _irsend.begin(); } + +#if SEND_TROTEC_3550 +/// Send the current internal state as an IR message. +/// @param[in] repeat Nr. of times the message will be repeated. +void IRTrotec3550::send(const uint16_t repeat) { + _irsend.sendTrotec3550(getRaw(), kTrotecStateLength, repeat); +} +#endif // SEND_TROTEC_3550 + +/// Calculate the checksum for a given state. +/// @param[in] state The array to calc the checksum of. +/// @param[in] length The length/size of the array. +/// @return The calculated checksum value. +uint8_t IRTrotec3550::calcChecksum(const uint8_t state[], + const uint16_t length) { + return length ? sumBytes(state, length - 1) : 0; +} + +/// Verify the checksum is valid for a given state. +/// @param[in] state The array to verify the checksum of. +/// @param[in] length The length/size of the array. +/// @return true, if the state has a valid checksum. Otherwise, false. +bool IRTrotec3550::validChecksum(const uint8_t state[], const uint16_t length) { + return state[length - 1] == calcChecksum(state, length); +} + +/// Calculate & set the checksum for the current internal state of the remote. +void IRTrotec3550::checksum(void) { _.Sum = calcChecksum(_.raw); } + +/// Reset the state of the remote to a known good state/sequence. +void IRTrotec3550::stateReset(void) { + static const uint8_t kReset[kTrotecStateLength] = { + 0x55, 0x60, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x88, 0x5A}; + std::memcpy(_.raw, kReset, kTrotecStateLength); +} + +/// Get a PTR to the internal state/code for this protocol. +/// @return PTR to a code for this protocol based on the current internal state. +uint8_t* IRTrotec3550::getRaw(void) { + checksum(); + return _.raw; +} + +/// Set the internal state from a valid code for this protocol. +/// @param[in] state A valid code for this protocol. +void IRTrotec3550::setRaw(const uint8_t state[]) { + memcpy(_.raw, state, kTrotecStateLength); +} + +/// Set the requested power state of the A/C to on. +void IRTrotec3550::on(void) { setPower(true); } + +/// Set the requested power state of the A/C to off. +void IRTrotec3550::off(void) { setPower(false); } + +/// Change the power setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRTrotec3550::setPower(const bool on) { _.Power = on; } + +/// Get the value of the current power setting. +/// @return true, the setting is on. false, the setting is off. +bool IRTrotec3550::getPower(void) const { return _.Power; } + +/// Set the speed of the fan. +/// @param[in] fan The desired setting. +void IRTrotec3550::setFan(const uint8_t fan) { + uint8_t speed = std::min(fan, kTrotecFanHigh); + _.Fan = speed; +} + +/// Get the current fan speed setting. +/// @return The current fan speed/mode. +uint8_t IRTrotec3550::getFan(void) const { return _.Fan; } + +/// Set the operating mode of the A/C. +/// @param[in] mode The desired operating mode. +void IRTrotec3550::setMode(const uint8_t mode) { + _.Mode = (mode > kTrotecFan) ? kTrotecAuto : mode; +} + +/// Get the operating mode setting of the A/C. +/// @return The current operating mode setting. +uint8_t IRTrotec3550::getMode(void) const { return _.Mode; } + +/// Set the temperature. +/// @param[in] degrees The temperature in degrees. +/// @param[in] celsius Use celsius units. True, Celsius; False Fahrenheit. +void IRTrotec3550::setTemp(const uint8_t degrees, const bool celsius) { + setTempUnit(celsius); + uint8_t minTemp = kTrotec3550MinTempC; + uint8_t maxTemp = kTrotec3550MaxTempC; + if (!celsius) { // Fahrenheit? + minTemp = kTrotec3550MinTempF; + maxTemp = kTrotec3550MaxTempF; + } + uint8_t temp = std::max(degrees, minTemp); + temp = std::min(temp, maxTemp); + if (celsius) { + _.TempC = temp - minTemp; + _.TempF = celsiusToFahrenheit(temp) - kTrotec3550MinTempF; + } else { + _.TempF = temp - minTemp; + _.TempC = fahrenheitToCelsius(temp) - kTrotec3550MinTempC; + } +} + +/// Get the current temperature setting. +/// @return The current setting for temp. in degrees. +uint8_t IRTrotec3550::getTemp(void) const { + return getTempUnit() ? _.TempC + kTrotec3550MinTempC + : _.TempF + kTrotec3550MinTempF; +} + +/// Set the temperature unit that the A/C will use.. +/// @param[in] celsius Use celsius units. True, Celsius; False Fahrenheit. +void IRTrotec3550::setTempUnit(const bool celsius) { _.Celsius = celsius; } + +/// Get the current temperature unit setting. +/// @return True, Celsius; False Fahrenheit. +bool IRTrotec3550::getTempUnit(void) const { return _.Celsius; } + +/// Change the Vertical Swing setting. +/// @param[in] on true, the setting is on. false, the setting is off. +void IRTrotec3550::setSwingV(const bool on) { _.SwingV = on; } + +/// Get the value of the current Vertical Swing setting. +/// @return true, the setting is on. false, the setting is off. +bool IRTrotec3550::getSwingV(void) const { return _.SwingV; } + +/// Get the number of minutes of the Timer setting. +/// @return Nr of minutes. +uint16_t IRTrotec3550::getTimer(void) const { return _.TimerHrs * 60; } + +/// Set the number of minutes of the Timer setting. +/// @param[in] mins Nr. of Minutes for the Timer. `0` means disable the timer. +void IRTrotec3550::setTimer(const uint16_t mins) { + _.TimerSet = mins > 0; + _.TimerHrs = (std::min(mins, kTrotec3550TimerMax) / 60); +} + +/// Convert a stdAc::opmode_t enum into its native mode. +/// @param[in] mode The enum to be converted. +/// @return The native equivalent of the enum. +uint8_t IRTrotec3550::convertMode(const stdAc::opmode_t mode) { + switch (mode) { + case stdAc::opmode_t::kCool: return kTrotecCool; + case stdAc::opmode_t::kDry: return kTrotecDry; + case stdAc::opmode_t::kFan: return kTrotecFan; + // Note: No Heat mode. + default: return kTrotecAuto; + } +} + +/// Convert a stdAc::fanspeed_t enum into it's native speed. +/// @param[in] speed The enum to be converted. +/// @return The native equivalent of the enum. +uint8_t IRTrotec3550::convertFan(const stdAc::fanspeed_t speed) { + switch (speed) { + case stdAc::fanspeed_t::kMin: + case stdAc::fanspeed_t::kLow: return kTrotecFanLow; + case stdAc::fanspeed_t::kMedium: return kTrotecFanMed; + case stdAc::fanspeed_t::kHigh: + case stdAc::fanspeed_t::kMax: return kTrotecFanHigh; + default: return kTrotecFanMed; + } +} + +/// Convert a native mode into its stdAc equivalent. +/// @param[in] mode The native setting to be converted. +/// @return The stdAc equivalent of the native setting. +stdAc::opmode_t IRTrotec3550::toCommonMode(const uint8_t mode) { + switch (mode) { + case kTrotecCool: return stdAc::opmode_t::kCool; + case kTrotecDry: return stdAc::opmode_t::kDry; + case kTrotecFan: return stdAc::opmode_t::kFan; + default: return stdAc::opmode_t::kAuto; + } +} + +/// Convert a native fan speed into its stdAc equivalent. +/// @param[in] spd The native setting to be converted. +/// @return The stdAc equivalent of the native setting. +stdAc::fanspeed_t IRTrotec3550::toCommonFanSpeed(const uint8_t spd) { + switch (spd) { + case kTrotecFanHigh: return stdAc::fanspeed_t::kMax; + case kTrotecFanMed: return stdAc::fanspeed_t::kMedium; + case kTrotecFanLow: return stdAc::fanspeed_t::kMin; + default: return stdAc::fanspeed_t::kAuto; + } +} + +/// Convert the current internal state into its stdAc::state_t equivalent. +/// @return The stdAc equivalent of the native settings. +stdAc::state_t IRTrotec3550::toCommon(void) const { + stdAc::state_t result; + result.protocol = decode_type_t::TROTEC_3550; + result.power = _.Power; + result.mode = toCommonMode(_.Mode); + result.celsius = getTempUnit(); + result.degrees = getTemp(); + result.fanspeed = toCommonFanSpeed(_.Fan); + result.swingv = _.SwingV ? stdAc::swingv_t::kAuto : stdAc::swingv_t::kOff; + // Not supported. + result.model = -1; + result.swingh = stdAc::swingh_t::kOff; + result.turbo = false; + result.light = false; + result.filter = false; + result.econo = false; + result.quiet = false; + result.clean = false; + result.beep = false; + result.sleep = -1; + result.clock = -1; + return result; +} + +/// Convert the current internal state into a human readable string. +/// @return A human readable string. +String IRTrotec3550::toString(void) const { + String result = ""; + result.reserve(80); // Reserve some heap for the string to reduce fragging. + result += addBoolToString(_.Power, kPowerStr, false); + result += addModeToString(_.Mode, kTrotecAuto, kTrotecCool, kTrotecAuto, + kTrotecDry, kTrotecFan); + result += addTempToString(getTemp(), _.Celsius); + result += addFanToString(_.Fan, kTrotecFanHigh, kTrotecFanLow, + kTrotecFanHigh, kTrotecFanHigh, kTrotecFanMed); + result += addBoolToString(_.SwingV, kSwingVStr); + result += addLabeledString(_.TimerSet ? minsToString(getTimer()) : kOffStr, + kTimerStr); + return result; +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.h index 8713a99f1..3381ec3f2 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/ir_Trotec.h @@ -7,8 +7,10 @@ /// @see https://github.com/crankyoldgit/IRremoteESP8266/issues/1176 // Supports: -// Brand: Trotec, Model: PAC 3200 A/C -// Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C +// Brand: Trotec, Model: PAC 3200 A/C (TROTEC) +// Brand: Trotec, Model: PAC 3550 Pro A/C (TROTEC_3550) +// Brand: Duux, Model: Blizzard Smart 10K / DXMA04 A/C (TROTEC) +// For Trotec Model PAC 3900 X, use the Midea protocol instead. #ifndef IR_TROTEC_H_ #define IR_TROTEC_H_ @@ -74,6 +76,46 @@ const uint8_t kTrotecMaxTemp = 32; const uint8_t kTrotecMaxTimer = 23; +/// Native representation of a Trotec 3550 A/C message. +union Trotec3550Protocol{ + uint8_t raw[kTrotecStateLength]; ///< Remote state in IR code form. + struct { + // Byte 0 + uint8_t Intro: 8; // fixed value (0x55) + // Byte 1 + uint8_t SwingV :1; + uint8_t Power :1; + uint8_t :1; // Unknown + uint8_t TimerSet :1; + uint8_t TempC :4; // Temp + kTrotec3550MinTempC for degC) + // Byte 2 + uint8_t TimerHrs :4; + uint8_t :4; // Unknown + // Byte 3 + uint8_t TempF :5; // Temp + kTrotec3550MinTempF for degF) + uint8_t :3; // Unknown + // Byte 4 + uint8_t :8; // Unknown + // Byte 5 + uint8_t :8; // Unknown + // Byte 6 + uint8_t Mode :2; + uint8_t :2; // Unknown + uint8_t Fan :2; + uint8_t :2; // Unknown + // Byte 7 + uint8_t :7; // Unknown + uint8_t Celsius :1; // DegC or DegF + // Byte 8 + uint8_t Sum :8; + }; +}; + +const uint8_t kTrotec3550MinTempC = 16; +const uint8_t kTrotec3550MaxTempC = 30; +const uint8_t kTrotec3550MinTempF = 59; +const uint8_t kTrotec3550MaxTempF = 86; + // Legacy defines. (Deprecated) #define TROTEC_AUTO kTrotecAuto #define TROTEC_COOL kTrotecCool @@ -130,6 +172,8 @@ class IRTrotecESP { void setRaw(const uint8_t state[]); static bool validChecksum(const uint8_t state[], const uint16_t length = kTrotecStateLength); + static uint8_t calcChecksum(const uint8_t state[], + const uint16_t length = kTrotecStateLength); static uint8_t convertMode(const stdAc::opmode_t mode); static uint8_t convertFan(const stdAc::fanspeed_t speed); static stdAc::opmode_t toCommonMode(const uint8_t mode); @@ -146,9 +190,63 @@ class IRTrotecESP { /// @endcond #endif // UNIT_TEST TrotecProtocol _; - static uint8_t calcChecksum(const uint8_t state[], - const uint16_t length = kTrotecStateLength); void checksum(void); }; +// Class +/// Class for handling detailed Trotec 3550 A/C messages. +class IRTrotec3550 { + public: + explicit IRTrotec3550(const uint16_t pin, const bool inverted = false, + const bool use_modulation = true); +#if SEND_TROTEC_3550 + void send(const uint16_t repeat = kTrotecDefaultRepeat); + /// Run the calibration to calculate uSec timing offsets for this platform. + /// @return The uSec timing offset needed per modulation of the IR Led. + /// @note This will produce a 65ms IR signal pulse at 38kHz. + /// Only ever needs to be run once per object instantiation, if at all. + int8_t calibrate(void) { return _irsend.calibrate(); } +#endif // SEND_TROTEC_3550 + void begin(void); + void stateReset(void); + void on(void); + void off(void); + void setPower(const bool state); + bool getPower(void) const; + void setTemp(const uint8_t degrees, const bool celsius = true); + uint8_t getTemp(void) const; + void setTempUnit(const bool celsius); + bool getTempUnit(void) const; + void setFan(const uint8_t fan); + uint8_t getFan(void) const; + uint8_t getMode(void) const; + void setMode(const uint8_t mode); + bool getSwingV(void) const; + void setSwingV(const bool on); + uint16_t getTimer(void) const; + void setTimer(const uint16_t mins); + uint8_t* getRaw(void); + void setRaw(const uint8_t state[]); + static bool validChecksum(const uint8_t state[], + const uint16_t length = kTrotecStateLength); + static uint8_t calcChecksum(const uint8_t state[], + const uint16_t length = kTrotecStateLength); + static uint8_t convertMode(const stdAc::opmode_t mode); + static uint8_t convertFan(const stdAc::fanspeed_t speed); + static stdAc::opmode_t toCommonMode(const uint8_t mode); + static stdAc::fanspeed_t toCommonFanSpeed(const uint8_t speed); + stdAc::state_t toCommon(void) const; + String toString(void) const; +#ifndef UNIT_TEST + + private: + IRsend _irsend; ///< Instance of the IR send class +#else // UNIT_TEST + /// @cond IGNORE + IRsendTest _irsend; ///< Instance of the testing IR send class + /// @endcond +#endif // UNIT_TEST + Trotec3550Protocol _; + void checksum(void); +}; #endif // IR_TROTEC_H_ diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/locale/defaults.h b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/locale/defaults.h index 8c6096289..b55b87abc 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/locale/defaults.h +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/src/locale/defaults.h @@ -90,6 +90,9 @@ #ifndef D_STR_OFFTIMER #define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first! #endif // D_STR_OFFTIMER +#ifndef D_STR_TIMERMODE +#define D_STR_TIMERMODE D_STR_TIMER " " D_STR_MODE // Set `D_STR_MODE` first! +#endif // D_STR_TIMERMODE #ifndef D_STR_CLOCK #define D_STR_CLOCK "Clock" #endif // D_STR_CLOCK @@ -279,6 +282,9 @@ #ifndef D_STR_ID #define D_STR_ID "Id" #endif // D_STR_ID +#ifndef D_STR_VANE +#define D_STR_VANE "Vane" +#endif // D_STR_VANE #ifndef D_STR_AUTO #define D_STR_AUTO "Auto" @@ -502,6 +508,9 @@ #ifndef D_STR_ARGO #define D_STR_ARGO "ARGO" #endif // D_STR_ARGO +#ifndef D_STR_BOSE +#define D_STR_BOSE "BOSE" +#endif // D_STR_BOSE #ifndef D_STR_CARRIER_AC #define D_STR_CARRIER_AC "CARRIER_AC" #endif // D_STR_CARRIER_AC @@ -739,6 +748,9 @@ #ifndef D_STR_SANYO_AC #define D_STR_SANYO_AC "SANYO_AC" #endif // D_STR_SANYO_AC +#ifndef D_STR_SANYO_AC88 +#define D_STR_SANYO_AC88 "SANYO_AC88" +#endif // D_STR_SANYO_AC88 #ifndef D_STR_SANYO_LC7461 #define D_STR_SANYO_LC7461 "SANYO_LC7461" #endif // D_STR_SANYO_LC7461 @@ -781,6 +793,9 @@ #ifndef D_STR_TROTEC #define D_STR_TROTEC "TROTEC" #endif // D_STR_TROTEC +#ifndef D_STR_TROTEC_3550 +#define D_STR_TROTEC_3550 D_STR_TROTEC "_3550" +#endif // D_STR_TROTEC_3550 #ifndef D_STR_TRUMA #define D_STR_TRUMA "TRUMA" #endif // D_STR_TRUMA diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp index 74e530d7c..140e50137 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/IRac_test.cpp @@ -371,7 +371,8 @@ TEST(TestIRac, Daikin176) { IRac irac(kGpioUnused); IRrecv capture(kGpioUnused); char expected[] = - "Power: On, Mode: 2 (Cool), Temp: 26C, Fan: 1 (Low), Swing(H): 5 (Auto)"; + "Power: On, Mode: 2 (Cool), Temp: 26C, Fan: 1 (Low), Swing(H): 5 (Auto), " + "Id: 0"; ac.begin(); irac.daikin176(&ac, @@ -399,7 +400,8 @@ TEST(TestIRac, Daikin2) { "Swing(V): 14 (Off), Swing(H): 170 (Middle), Clock: 00:00, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 2 (Loud), " "Light: 1 (High), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off"; + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)"; ac.begin(); irac.daikin2(&ac, @@ -781,6 +783,33 @@ TEST(TestIRac, Haier) { ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); } +TEST(TestIRac, Haier176) { + IRHaierAC176 ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + const char expected[] = + "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " + "Fan: 2 (Medium), Turbo: 1 (High), Swing: 1 (Highest), Sleep: On, " + "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; + ac.begin(); + irac.haier176(&ac, + true, // Power + stdAc::opmode_t::kCool, // Mode + 23, // Celsius + stdAc::fanspeed_t::kMedium, // Fan speed + stdAc::swingv_t::kHigh, // Vertical swing + true, // Turbo + true, // Filter + 8 * 60 + 0); // Sleep time + ASSERT_EQ(expected, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(HAIER_AC176, ac._irsend.capture.decode_type); + ASSERT_EQ(kHaierAC176Bits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); +} TEST(TestIRac, HaierYrwo2) { IRHaierACYRW02 ac(kGpioUnused); @@ -789,7 +818,7 @@ TEST(TestIRac, HaierYrwo2) { char expected[] = "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 23C, " "Fan: 2 (Medium), Turbo: 1 (High), Swing: 1 (Highest), Sleep: On, " - "Health: On"; + "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off"; ac.begin(); irac.haierYrwo2(&ac, @@ -1013,7 +1042,11 @@ TEST(TestIRac, LG) { true, // Power stdAc::opmode_t::kDry, // Mode 27, // Degrees C - stdAc::fanspeed_t::kMedium); // Fan speed + stdAc::fanspeed_t::kMedium, // Fan speed + stdAc::swingv_t::kLow, // Vertical swing + stdAc::swingv_t::kOff, // Vertical swing (previous) + stdAc::swingh_t::kOff, // Horizontal swing + true); // Light ASSERT_EQ(expected, ac.toString()); ac._irsend.makeDecodeResult(); @@ -1021,10 +1054,171 @@ TEST(TestIRac, LG) { ASSERT_EQ(LG, ac._irsend.capture.decode_type); ASSERT_EQ(kLgBits, ac._irsend.capture.bits); ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + // There should only be a single message. + ASSERT_EQ(61, ac._irsend.capture.rawlen); stdAc::state_t r, p; ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); } +TEST(TestIRac, LG2) { + IRLgAc ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + char expected[] = + "Model: 3 (AKB74955603), " + "Power: On, Mode: 1 (Dry), Temp: 27C, Fan: 9 (Low)"; + + ac.begin(); + irac.lg(&ac, + lg_ac_remote_model_t::AKB74955603, // Model + true, // Power + stdAc::opmode_t::kDry, // Mode + 27, // Degrees C + stdAc::fanspeed_t::kLow, // Fan speed + stdAc::swingv_t::kLow, // Vertical swing + stdAc::swingv_t::kOff, // Vertical swing (previous) + stdAc::swingh_t::kOff, // Horizontal swing + false); // Light + + ASSERT_EQ(expected, ac.toString()); + ac._irsend.makeDecodeResult(); + ASSERT_EQ(181, ac._irsend.capture.rawlen); // We expect three messages. + // Message #1 + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); + // Message #2 - SwingV Low + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 61)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(kLgAcSwingVLow, ac._irsend.capture.value); + // Message #3 - Light Toggle + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 121)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(kLgAcLightToggle, ac._irsend.capture.value); +} + +// Ref: +// https://github.com/crankyoldgit/IRremoteESP8266/issues/1513#issuecomment-877960010 +// https://docs.google.com/spreadsheets/d/1zF0FI2ENvbLdk4zaWBY9ZYVM3MB_4oxro9wCM7ETX4Y/edit#gid=348220307&range=A49:C49 +TEST(TestIRac, Issue1513) { + // Simulate sending a state with a SwingV auto, then followed by a SwingV Off. + IRLgAc ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + ac.begin(); + // IRhvac {"Vendor":"LG2", "Model": 3, "Power": "On", "Mode": "Heat", + // "Temp": 26, "FanSpeed": "min", "SwingV": "Auto", "Light": "On"} + ac._irsend.reset(); + irac.lg(&ac, + lg_ac_remote_model_t::AKB74955603, // Model + true, // Power + stdAc::opmode_t::kHeat, // Mode + 26, // Degrees C + stdAc::fanspeed_t::kMin, // Fan speed + stdAc::swingv_t::kAuto, // Vertical swing + stdAc::swingv_t::kHighest, // Vertical swing (previous) + stdAc::swingh_t::kOff, // Horizontal swing + true); // Light + ac._irsend.makeDecodeResult(); + // All sent, we assume the above works. Just need to switch to swing off now. + ac._irsend.reset(); + ac.stateReset(); + ac.send(); + // IRhvac {"Vendor":"LG2", "Model": 3, "Power": "On", "Mode": "Heat", + // "Temp": 26, "FanSpeed": "min", "SwingV": "Off", "Light": "On"} + ac._irsend.makeDecodeResult(); + ac._irsend.reset(); + irac.lg(&ac, + lg_ac_remote_model_t::AKB74955603, // Model + true, // Power + stdAc::opmode_t::kHeat, // Mode + 26, // Degrees C + stdAc::fanspeed_t::kMin, // Fan speed + stdAc::swingv_t::kOff, // Vertical swing + stdAc::swingv_t::kAuto, // Vertical swing (previous) + stdAc::swingh_t::kOff, // Horizontal swing + true); // Light + ac._irsend.makeDecodeResult(); + // There should only be two messages. + EXPECT_EQ(121, ac._irsend.capture.rawlen); + // First message should be normal. + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ( + "Model: 2 (AKB75215403), Power: On, Mode: 4 (Heat), Temp: 26C," + " Fan: 0 (Quiet)", + IRAcUtils::resultAcToString(&ac._irsend.capture)); + // The next should be a SwingV Off. + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 61)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + EXPECT_EQ(kLgAcSwingVOff, ac._irsend.capture.value); + ASSERT_EQ("Model: 3 (AKB74955603), Swing(V): 21 (Off)", + IRAcUtils::resultAcToString(&ac._irsend.capture)); +} + +TEST(TestIRac, LG2_AKB73757604) { + IRLgAc ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + char expected[] = + "Model: 2 (AKB75215403), " + "Power: On, Mode: 1 (Dry), Temp: 27C, Fan: 1 (Low)"; + + ac.begin(); + irac.lg(&ac, + lg_ac_remote_model_t::AKB73757604, // Model + true, // Power + stdAc::opmode_t::kDry, // Mode + 27, // Degrees C + stdAc::fanspeed_t::kLow, // Fan speed + stdAc::swingv_t::kLow, // Vertical swing + stdAc::swingv_t::kOff, // Vertical swing (previous) + stdAc::swingh_t::kAuto, // Horizontal swing + true); // Light + + ac._irsend.makeDecodeResult(); + ASSERT_EQ(361, ac._irsend.capture.rawlen); // We expect six messages. + // Message #1 + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); + // Message #2 - Vane 0 SwingV Low + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 61)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(0x881325B, ac._irsend.capture.value); + // Message #3 - Vane 1 SwingV Low + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 121)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(0x88132D3, ac._irsend.capture.value); + // Message #4 - Vane 2 SwingV Low + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 181)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(0x881335C, ac._irsend.capture.value); + // Message #5 - Vane 3 SwingV Low + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 241)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(0x88133D4, ac._irsend.capture.value); + // Message #6 - Horizontal swing + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 301)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(kLgAcSwingHAuto, ac._irsend.capture.value); +} + TEST(TestIRac, Midea) { IRMideaAC ac(kGpioUnused); IRac irac(kGpioUnused); @@ -1347,14 +1541,9 @@ TEST(TestIRac, Samsung) { ac._irsend.makeDecodeResult(); EXPECT_TRUE(capture.decode(&ac._irsend.capture)); ASSERT_EQ(SAMSUNG_AC, ac._irsend.capture.decode_type); + // We expect an extended state because of `dopower`. ASSERT_EQ(kSamsungAcExtendedBits, ac._irsend.capture.bits); - // However, we expect a plain "on" state as it should be sent before the - // desired state. - char expected_on[] = - "Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 0 (Auto), Swing: Off, " - "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " - "Light: On, Ion: Off"; - ASSERT_EQ(expected_on, IRAcUtils::resultAcToString(&ac._irsend.capture)); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); } @@ -1386,6 +1575,35 @@ TEST(TestIRac, Sanyo) { ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); } +TEST(TestIRac, Sanyo88) { + IRSanyoAc88 ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + const char expected[] = + "Power: On, Mode: 2 (Cool), Temp: 28C, Fan: 2 (Medium), Swing(V): On, " + "Turbo: On, Sleep: On, Clock: 11:40"; + + ac.begin(); + irac.sanyo88(&ac, + true, // Power + stdAc::opmode_t::kCool, // Mode + 28, // Celsius + stdAc::fanspeed_t::kMedium, // Fan speed + stdAc::swingv_t::kAuto, // Vertical Swing + true, // Turbo + true, // Filter + 17, // Sleep + 11 * 60 + 40); // Clock + ASSERT_EQ(expected, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(SANYO_AC88, ac._irsend.capture.decode_type); + ASSERT_EQ(kSanyoAc88Bits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); +} + TEST(TestIRac, Sharp) { IRSharpAc ac(kGpioUnused); IRac irac(kGpioUnused); @@ -1422,8 +1640,9 @@ TEST(TestIRac, Tcl112) { IRac irac(kGpioUnused); IRrecv capture(kGpioUnused); char expected[] = - "Power: On, Mode: 3 (Cool), Temp: 20C, Fan: 3 (Medium), Econo: On, " - "Health: On, Light: On, Turbo: Off, Swing(H): On, Swing(V): Off"; + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 20C, Fan: 3 (Medium), " + "Econo: On, Health: On, Turbo: Off, Swing(H): On, Swing(V): Off, " + "Light: On"; ac.begin(); irac.tcl112(&ac, @@ -1433,6 +1652,7 @@ TEST(TestIRac, Tcl112) { stdAc::fanspeed_t::kMedium, // Fan speed stdAc::swingv_t::kOff, // Vertical swing stdAc::swingh_t::kAuto, // Horizontal swing + false, // Quiet (aka. Mute) false, // Turbo true, // Light true, // Econo @@ -1445,6 +1665,33 @@ TEST(TestIRac, Tcl112) { ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); stdAc::state_t r, p; ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); + // Test the quiet mode, which should generate two messages. + ac._irsend.reset(); + irac.tcl112(&ac, + true, // Power + stdAc::opmode_t::kCool, // Mode + 20, // Celsius + stdAc::fanspeed_t::kMedium, // Fan speed + stdAc::swingv_t::kOff, // Vertical swing + stdAc::swingh_t::kAuto, // Horizontal swing + true, // Quiet (aka. Mute) + false, // Turbo + true, // Light + true, // Econo + true); // Filter (aka. Health) + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(TCL112AC, ac._irsend.capture.decode_type); + ASSERT_EQ(kTcl112AcBits, ac._irsend.capture.bits); + ASSERT_EQ( + "Type: 2, Quiet: On", + IRAcUtils::resultAcToString(&ac._irsend.capture)); + // TCL112 uses the Mitsubishi112 decoder. + // Skip first message. + EXPECT_TRUE(capture.decodeMitsubishi112(&ac._irsend.capture, 229)); + ASSERT_EQ(TCL112AC, ac._irsend.capture.decode_type); + ASSERT_EQ(kTcl112AcBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); } TEST(TestIRac, Technibel) { @@ -1633,6 +1880,36 @@ TEST(TestIRac, Trotec) { ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); } +TEST(TestIRac, Trotec3550) { + IRTrotec3550 ac(kGpioUnused); + IRac irac(kGpioUnused); + IRrecv capture(kGpioUnused); + char expected[] = + "Power: On, Mode: 1 (Cool), Temp: 18C, Fan: 3 (High), Swing(V): On, " + "Timer: Off"; + ac.begin(); + irac.trotec3550(&ac, + true, // Power + stdAc::opmode_t::kCool, // Mode + true, // Celsius + 18, // Degrees + stdAc::fanspeed_t::kHigh, // Fan speed + stdAc::swingv_t::kAuto); // Vertical Swing + EXPECT_TRUE(ac.getPower()); + EXPECT_EQ(kTrotecCool, ac.getMode()); + EXPECT_EQ(18, ac.getTemp()); + EXPECT_EQ(kTrotecFanHigh, ac.getFan()); + EXPECT_TRUE(ac.getSwingV()); + ASSERT_EQ(expected, ac.toString()); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(TROTEC_3550, ac._irsend.capture.decode_type); + ASSERT_EQ(kTrotecBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); +} + TEST(TestIRac, Truma) { IRTrumaAc ac(kGpioUnused); IRac irac(kGpioUnused); diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Bose_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Bose_test.cpp new file mode 100644 index 000000000..bf3e18c91 --- /dev/null +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Bose_test.cpp @@ -0,0 +1,108 @@ +// Copyright 2021 parsnip42 +// Copyright 2021 David Conran + +#include "IRac.h" +#include "IRrecv.h" +#include "IRrecv_test.h" +#include "IRsend.h" +#include "IRsend_test.h" +#include "gtest/gtest.h" + + +TEST(TestUtils, Housekeeping) { + ASSERT_EQ("BOSE", typeToString(decode_type_t::BOSE)); + ASSERT_EQ(decode_type_t::BOSE, strToDecodeType("BOSE")); + ASSERT_FALSE(hasACState(decode_type_t::BOSE)); + ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::BOSE)); + ASSERT_EQ(kBoseBits, IRsend::defaultBits(decode_type_t::BOSE)); + ASSERT_EQ(kNoRepeat, IRsend::minRepeats(decode_type_t::BOSE)); +} + +// Tests for sendBose(). + +// Test sending typical data only. +TEST(TestSendBose, SendDataOnly) { + IRsendTest irsend(kGpioUnused); + irsend.begin(); + irsend.sendBose(0xCD32); + EXPECT_EQ("f38000d50" + "m1100s1350m555s500m555s1435m555s500m555s500m555s1435m555s1435" + "m555s500m555s500m555s1435m555s500m555s1435m555s1435m555s500" + "m555s500m555s1435m555s1435m555s100000", + irsend.outputStr()); +} + +// Decode normal Bose messages. +TEST(TestDecodeBose, SyntheticSelfDecode) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + + // Synthesised 16-bit Bose message (TV Speaker Power On). + irsend.reset(); + irsend.sendBose(0xCD32); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(BOSE, irsend.capture.decode_type); + EXPECT_EQ(kBoseBits, irsend.capture.bits); + EXPECT_EQ(0xCD32, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); +} + +// Decode normal Bose messages. +TEST(TestDecodeBose, RealMessageDecode1) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + + irsend.begin(); + + // Real-life Bose code from an actual capture/decode (TV Speaker Power On). + irsend.reset(); + + const uint16_t rawData_0[35] = { + 942, 1558, + 442, 558, 442, 1502, 494, 534, 466, 560, 440, 1530, 468, 1532, 466, + 558, 440, 504, 496, 1558, 440, 534, 466, 1556, 442, 1558, 440, 558, + 440, 534, 466, 1556, 442, 1558, 440 + }; + + irsend.sendRaw(rawData_0, 35, 38000); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(BOSE, irsend.capture.decode_type); + EXPECT_EQ(kBoseBits, irsend.capture.bits); + EXPECT_EQ(0xCD32, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); +} + +// Decode normal Bose messages. +TEST(TestDecodeBose, RealMessageDecode2) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + + irsend.begin(); + + // Real-life Bose code from an actual capture/decode (TV Speaker Mute). + irsend.reset(); + + const uint16_t rawData_0[35] = { + 1024, 1504, + 496, 528, 472, 480, 520, 502, 496, 506, 494, 502, 496, 502, 498, + 502, 498, 1500, 498, 1502, 496, 1504, 496, 1502, 496, 1504, 494, + 1472, 524, 1504, 468, 1556, 442, 532, 468, + }; + + irsend.sendRaw(rawData_0, 35, 38000); + irsend.makeDecodeResult(); + + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(BOSE, irsend.capture.decode_type); + EXPECT_EQ(kBoseBits, irsend.capture.bits); + EXPECT_EQ(0x7F80, irsend.capture.value); + EXPECT_EQ(0x0, irsend.capture.address); + EXPECT_EQ(0x0, irsend.capture.command); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Daikin_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Daikin_test.cpp index 925f91ddb..783bd4e66 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Daikin_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Daikin_test.cpp @@ -11,7 +11,7 @@ // Test sending typical data only. TEST(TestSendDaikin, SendDataOnly) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); uint8_t daikin_code[kDaikinStateLength] = { @@ -72,7 +72,7 @@ TEST(TestSendDaikin, SendDataOnly) { // Test sending with repeats. TEST(TestSendDaikin, SendWithRepeats) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); irsend.reset(); @@ -237,7 +237,7 @@ TEST(TestSendDaikin, SendUnexpectedSizes) { // Tests for IRDaikinESP class. TEST(TestDaikinClass, Power) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.on(); @@ -254,7 +254,7 @@ TEST(TestDaikinClass, Power) { } TEST(TestDaikinClass, Temperature) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setTemp(0); @@ -289,7 +289,7 @@ TEST(TestDaikinClass, Temperature) { } TEST(TestDaikinClass, OperatingMode) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setMode(kDaikinAuto); @@ -318,7 +318,7 @@ TEST(TestDaikinClass, OperatingMode) { } TEST(TestDaikinClass, VaneSwing) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setSwingHorizontal(true); @@ -342,7 +342,7 @@ TEST(TestDaikinClass, VaneSwing) { } TEST(TestDaikinClass, QuietMode) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setQuiet(true); @@ -366,7 +366,7 @@ TEST(TestDaikinClass, QuietMode) { } TEST(TestDaikinClass, PowerfulMode) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setPowerful(true); @@ -387,7 +387,7 @@ TEST(TestDaikinClass, PowerfulMode) { } TEST(TestDaikinClass, EconoMode) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setEcono(true); @@ -411,7 +411,7 @@ TEST(TestDaikinClass, EconoMode) { } TEST(TestDaikinClass, FanSpeed) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); // Unexpected value should default to Auto. @@ -453,7 +453,7 @@ TEST(TestDaikinClass, FanSpeed) { } TEST(TestDaikinClass, CurrentTime) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setCurrentTime(0); // 00:00 @@ -467,7 +467,7 @@ TEST(TestDaikinClass, CurrentTime) { } TEST(TestDaikinClass, OnOffTimers) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); // Both timers turned off. @@ -542,7 +542,7 @@ TEST(TestDaikinClass, OnOffTimers) { } TEST(TestDaikinClass, WeeklyTimerEnable) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); // The Weekly Timer Enabled flag is stored in the same byte as Econo mode. @@ -586,7 +586,7 @@ TEST(TestDaikinClass, WeeklyTimerEnable) { // Test Mold mode. TEST(TestDaikinClass, MoldSetting) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setMold(false); @@ -601,7 +601,7 @@ TEST(TestDaikinClass, MoldSetting) { // Test Comfort mode. TEST(TestDaikinClass, ComfortSetting) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setComfort(false); @@ -616,7 +616,7 @@ TEST(TestDaikinClass, ComfortSetting) { // Test Sensor mode. TEST(TestDaikinClass, SensorSetting) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.begin(); ac.setSensor(false); @@ -630,7 +630,7 @@ TEST(TestDaikinClass, SensorSetting) { } TEST(TestDaikinClass, SetAndGetRaw) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); uint8_t shortState[kDaikinStateLengthShort] = { 0x11, 0xDA, 0x27, 0x00, 0x42, 0x00, 0x00, 0x54, 0x11, 0xDA, 0x27, 0x00, 0x00, 0x49, 0x1E, 0x00, 0xB0, 0x00, @@ -688,7 +688,7 @@ TEST(TestDaikinClass, ChecksumValidation) { // Test human readable output. TEST(TestDaikinClass, HumanReadable) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); EXPECT_EQ( "Power: On, Mode: 4 (Heat), Temp: 15C, Fan: 11 (Quiet), " @@ -723,7 +723,7 @@ TEST(TestDaikinClass, HumanReadable) { // Test general message construction after tweaking some settings. TEST(TestDaikinClass, MessageConstuction) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); IRsendTest irsend(4); ac.begin(); irsend.begin(); @@ -796,9 +796,9 @@ TEST(TestDaikinClass, MessageConstuction) { // Test decoding a message captured from a real IR remote. TEST(TestDecodeDaikin, RealExample) { - IRDaikinESP ac(0); - IRsendTest irsend(0); - IRrecv irrecv(0); + IRDaikinESP ac(kGpioUnused); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); uint8_t expectedState[kDaikinStateLength] = { @@ -875,9 +875,9 @@ TEST(TestDecodeDaikin, RealExample) { // Decoding a message we entirely constructed based solely on a given state. TEST(TestDecodeDaikin, ShortSyntheticExample) { - IRDaikinESP ac(0); - IRsendTest irsend(0); - IRrecv irrecv(0); + IRDaikinESP ac(kGpioUnused); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); uint8_t shortState[kDaikinStateLengthShort] = { @@ -908,9 +908,9 @@ TEST(TestDecodeDaikin, ShortSyntheticExample) { // Decoding a message we entirely constructed based solely on a given state. TEST(TestDecodeDaikin, LongSyntheticExample) { - IRDaikinESP ac(0); - IRsendTest irsend(0); - IRrecv irrecv(0); + IRDaikinESP ac(kGpioUnused); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); uint8_t expectedState[kDaikinStateLength] = { @@ -937,8 +937,8 @@ TEST(TestDecodeDaikin, LongSyntheticExample) { // Test decoding a message captured from a real IR remote. TEST(TestDecodeDaikin2, RealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); uint8_t expectedState[kDaikin2StateLength] = { @@ -1012,9 +1012,9 @@ TEST(TestDecodeDaikin2, RealExample) { // Decoding a message we entirely constructed based solely on a given state. TEST(TestDecodeDaikin2, SyntheticExample) { - IRDaikin2 ac(0); - IRsendTest irsend(0); - IRrecv irrecv(0); + IRDaikin2 ac(kGpioUnused); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); uint8_t expectedState[kDaikin2StateLength] = { @@ -1037,12 +1037,12 @@ TEST(TestDecodeDaikin2, SyntheticExample) { "Clock: 14:50, On Timer: Off, Off Timer: Off, Sleep Timer: Off, " "Beep: 1 (Quiet), Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, " "Eye: Off, Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: Off, " - "Econo: Off", + "Econo: Off, Humid: 0 (Off)", ac.toString()); } TEST(TestDaikin2Class, CurrentTime) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setCurrentTime(0); // 00:00 @@ -1056,7 +1056,7 @@ TEST(TestDaikin2Class, CurrentTime) { } TEST(TestDaikin2Class, OnOffTimers) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); // Both timers turned off. @@ -1097,7 +1097,7 @@ TEST(TestDaikin2Class, OnOffTimers) { } TEST(TestDaikin2Class, LightAndBeep) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setLight(kDaikinLightOff); @@ -1113,7 +1113,7 @@ TEST(TestDaikin2Class, LightAndBeep) { } TEST(TestDaikin2Class, FanSpeed) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); // Unexpected value should default to Auto. @@ -1156,7 +1156,7 @@ TEST(TestDaikin2Class, FanSpeed) { // Test Mold mode. TEST(TestDaikin2Class, MoldSetting) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setMold(false); @@ -1171,7 +1171,7 @@ TEST(TestDaikin2Class, MoldSetting) { // Test Auto Clean setting. TEST(TestDaikin2Class, CleanSetting) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setClean(false); @@ -1186,7 +1186,7 @@ TEST(TestDaikin2Class, CleanSetting) { TEST(TestDaikin2Class, Temperature) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikinAuto); @@ -1236,7 +1236,7 @@ TEST(TestDaikin2Class, Temperature) { // Test Fresh Air settings. TEST(TestDaikin2Class, FreshAirSettings) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setFreshAir(false); @@ -1263,7 +1263,7 @@ TEST(TestDaikin2Class, FreshAirSettings) { // Test Eye mode. TEST(TestDaikin2Class, EyeSetting) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setEye(false); @@ -1276,7 +1276,7 @@ TEST(TestDaikin2Class, EyeSetting) { // Test Econo setting. TEST(TestDaikin2Class, EconoSetting) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setEcono(false); @@ -1288,7 +1288,7 @@ TEST(TestDaikin2Class, EconoSetting) { } TEST(TestDaikin2Class, SleepTimer) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); // NOTE: On & Sleep timer share the same time location. @@ -1334,7 +1334,7 @@ TEST(TestDaikin2Class, SleepTimer) { // Test Vertical Swing. TEST(TestDaikin2Class, Swing) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); // Vertical @@ -1372,7 +1372,7 @@ TEST(TestDaikin2Class, Swing) { } TEST(TestDaikin2Class, QuietMode) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setQuiet(true); @@ -1390,7 +1390,7 @@ TEST(TestDaikin2Class, QuietMode) { } TEST(TestDaikin2Class, PowerfulMode) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setPowerful(true); @@ -1408,7 +1408,7 @@ TEST(TestDaikin2Class, PowerfulMode) { // Test Purify mode. TEST(TestDaikin2Class, PurifySetting) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setPurify(false); @@ -1420,7 +1420,7 @@ TEST(TestDaikin2Class, PurifySetting) { } TEST(TestDaikin2Class, HumanReadable) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.begin(); ac.setPower(true); ac.setMode(kDaikinCool); @@ -1448,7 +1448,8 @@ TEST(TestDaikin2Class, HumanReadable) { "Swing(V): 15 (Auto), Swing(H): 190 (Auto), Clock: 12:34, " "On Timer: Off, Off Timer: 20:00, Sleep Timer: 04:00, Beep: 2 (Loud), " "Light: 2 (Low), Mould: On, Clean: Off, Fresh: On, Eye: On, " - "Eye Auto: On, Quiet: Off, Powerful: On, Purify: On, Econo: Off", + "Eye Auto: On, Quiet: Off, Powerful: On, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); ac.setQuiet(true); ac.setMode(kDaikinHeat); @@ -1463,13 +1464,14 @@ TEST(TestDaikin2Class, HumanReadable) { "Swing(V): 15 (Auto), Swing(H): 190 (Auto), Clock: 23:45, " "On Timer: 09:11, Off Timer: 20:00, Sleep Timer: Off, Beep: 1 (Quiet), " "Light: 1 (High), Mould: On, Clean: Off, Fresh: On, Eye: On, " - "Eye Auto: On, Quiet: On, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: On, Quiet: On, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); } // See if we can construct a known state. TEST(TestDaikin2Class, KnownConstruction) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); uint8_t expectedState[kDaikin2StateLength] = { 0x11, 0xDA, 0x27, 0x00, 0x01, 0x7A, 0xC3, 0x70, 0x28, 0x0C, @@ -1505,7 +1507,7 @@ TEST(TestDaikin2Class, KnownConstruction) { "Clock: 14:50, On Timer: Off, Off Timer: Off, Sleep Timer: Off, " "Beep: 1 (Quiet), Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, " "Eye: Off, Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: Off, " - "Econo: Off", + "Econo: Off, Humid: 0 (Off)", ac.toString()); EXPECT_STATE_EQ(expectedState, ac.getRaw(), kDaikin2Bits); } @@ -1554,7 +1556,7 @@ TEST(TestUtils, Housekeeping) { // https://github.com/crankyoldgit/IRremoteESP8266/issues/582#issuecomment-453863879 TEST(TestDecodeDaikin2, Issue582DeepDecodeExample) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); const uint8_t state[kDaikin2StateLength] = { 0x11, 0xDA, 0x27, 0x00, 0x01, 0x30, 0x42, 0xF0, 0x28, 0x0C, @@ -1571,13 +1573,14 @@ TEST(TestDecodeDaikin2, Issue582DeepDecodeExample) { "Swing(V): 14 (Off), Swing(H): 190 (Auto), Clock: 09:20, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 3 (Off), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: On, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); } // https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit?ts=5c317775#gid=1023395743 TEST(TestDecodeDaikin2, Issue582PowerfulEconoFix) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); const uint8_t PowerfulOn[39] = { 0x11, 0xDA, 0x27, 0x00, 0x01, 0x3A, 0x43, 0xF0, 0x28, 0x0C, @@ -1596,7 +1599,8 @@ TEST(TestDecodeDaikin2, Issue582PowerfulEconoFix) { "Swing(V): 14 (Off), Swing(H): 190 (Auto), Clock: 13:46, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 3 (Off), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: On, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: On, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); ac.setRaw(PowerfulOff); ASSERT_FALSE(ac.getPowerful()); @@ -1605,7 +1609,8 @@ TEST(TestDecodeDaikin2, Issue582PowerfulEconoFix) { "Swing(V): 14 (Off), Swing(H): 190 (Auto), Clock: 13:46, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 3 (Off), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); const uint8_t EconoOn[39] = { @@ -1625,7 +1630,8 @@ TEST(TestDecodeDaikin2, Issue582PowerfulEconoFix) { "Swing(V): 14 (Off), Swing(H): 190 (Auto), Clock: 13:47, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 3 (Off), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: On", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: On, " + "Humid: 0 (Off)", ac.toString()); ac.setRaw(EconoOff); ASSERT_FALSE(ac.getEcono()); @@ -1634,14 +1640,15 @@ TEST(TestDecodeDaikin2, Issue582PowerfulEconoFix) { "Swing(V): 14 (Off), Swing(H): 190 (Auto), Clock: 13:47, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 3 (Off), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); } // Tests for IRDaikin216 class. TEST(TestDaikin216Class, Power) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); ac.on(); @@ -1658,7 +1665,7 @@ TEST(TestDaikin216Class, Power) { } TEST(TestDaikin216Class, Temperature) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); ac.setTemp(0); @@ -1693,7 +1700,7 @@ TEST(TestDaikin216Class, Temperature) { } TEST(TestDaikin216Class, OperatingMode) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikinAuto); @@ -1722,7 +1729,7 @@ TEST(TestDaikin216Class, OperatingMode) { } TEST(TestDaikin216Class, VaneSwing) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); ac.setSwingHorizontal(true); @@ -1746,7 +1753,7 @@ TEST(TestDaikin216Class, VaneSwing) { } TEST(TestDaikin216Class, FanSpeed) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); // Unexpected value should default to Auto. @@ -1788,7 +1795,7 @@ TEST(TestDaikin216Class, FanSpeed) { } TEST(TestDaikin216Class, QuietAndPowerful) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); ac.setQuiet(false); @@ -1821,7 +1828,7 @@ TEST(TestDaikin216Class, QuietAndPowerful) { } TEST(TestDaikin216Class, ExampleStates) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); // https://github.com/crankyoldgit/IRremoteESP8266/pull/690#issuecomment-487770194 uint8_t state[kDaikin216StateLength] = { @@ -1837,7 +1844,7 @@ TEST(TestDaikin216Class, ExampleStates) { } TEST(TestDaikin216Class, ReconstructKnownState) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.begin(); // https://github.com/crankyoldgit/IRremoteESP8266/issues/689#issue-438086949 uint8_t expectedState[kDaikin216StateLength] = { @@ -1862,8 +1869,8 @@ TEST(TestDaikin216Class, ReconstructKnownState) { // https://github.com/crankyoldgit/IRremoteESP8266/issues/689 TEST(TestDecodeDaikin216, RealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); // https://github.com/crankyoldgit/IRremoteESP8266/issues/689#issue-438086949 uint16_t rawData[439] = { 3402, 1770, 382, 1340, 382, 480, 382, 478, 382, 480, 380, 1342, 382, 478, @@ -1913,7 +1920,7 @@ TEST(TestDecodeDaikin216, RealExample) { ASSERT_EQ(kDaikin216Bits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: Off, Mode: 0 (Auto), Temp: 19C, Fan: 10 (Auto), " @@ -1924,8 +1931,8 @@ TEST(TestDecodeDaikin216, RealExample) { // https://github.com/crankyoldgit/IRremoteESP8266/issues/689 TEST(TestDecodeDaikin216, SyntheticExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); // https://github.com/crankyoldgit/IRremoteESP8266/issues/689#issue-438086949 uint8_t expectedState[kDaikin216StateLength] = { // 8 bytes @@ -1945,7 +1952,7 @@ TEST(TestDecodeDaikin216, SyntheticExample) { } TEST(TestDaikinClass, toCommon) { - IRDaikinESP ac(0); + IRDaikinESP ac(kGpioUnused); ac.setPower(true); ac.setMode(kDaikinCool); ac.setTemp(20); @@ -1979,7 +1986,7 @@ TEST(TestDaikinClass, toCommon) { } TEST(TestDaikin2Class, toCommon) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); ac.setPower(true); ac.setMode(kDaikinCool); ac.setTemp(20); @@ -2017,7 +2024,7 @@ TEST(TestDaikin2Class, toCommon) { } TEST(TestDaikin216Class, toCommon) { - IRDaikin216 ac(0); + IRDaikin216 ac(kGpioUnused); ac.setPower(true); ac.setMode(kDaikinCool); ac.setTemp(20); @@ -2050,8 +2057,8 @@ TEST(TestDaikin216Class, toCommon) { // https://github.com/crankyoldgit/IRremoteESP8266/issues/731 TEST(TestDecodeDaikin160, RealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); uint16_t rawData[327] = { 5024, 2144, 342, 1786, 344, 706, 342, 706, 344, 706, 342, 1786, 342, 706, 342, 708, 342, 708, 342, 708, 342, 1786, 342, 708, 342, 1786, 342, 1788, @@ -2093,15 +2100,15 @@ TEST(TestDecodeDaikin160, RealExample) { ASSERT_EQ(DAIKIN160, irsend.capture.decode_type); ASSERT_EQ(kDaikin160Bits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.setRaw(irsend.capture.state); EXPECT_EQ("Power: Off, Mode: 3 (Cool), Temp: 25C, Fan: 10 (Auto), " "Swing(V): 1 (Lowest)", ac.toString()); } TEST(TestDecodeDaikin160, SyntheticExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); uint8_t expectedState[kDaikin160StateLength] = { // 7 bytes @@ -2121,7 +2128,7 @@ TEST(TestDecodeDaikin160, SyntheticExample) { } TEST(TestDaikin160Class, toCommon) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.setPower(true); ac.setMode(kDaikinCool); ac.setTemp(20); @@ -2150,7 +2157,7 @@ TEST(TestDaikin160Class, toCommon) { } TEST(TestDaikin160Class, FanSpeed) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.begin(); // Unexpected value should default to Auto. @@ -2192,7 +2199,7 @@ TEST(TestDaikin160Class, FanSpeed) { } TEST(TestDaikin160Class, VaneSwing) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.begin(); ac.setSwingVertical(kDaikin160SwingVAuto); @@ -2213,7 +2220,7 @@ TEST(TestDaikin160Class, VaneSwing) { } TEST(TestDaikin160Class, Power) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.begin(); ac.on(); @@ -2230,7 +2237,7 @@ TEST(TestDaikin160Class, Power) { } TEST(TestDaikin160Class, Temperature) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.begin(); ac.setTemp(0); @@ -2265,7 +2272,7 @@ TEST(TestDaikin160Class, Temperature) { } TEST(TestDaikin160Class, OperatingMode) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikinAuto); @@ -2294,7 +2301,7 @@ TEST(TestDaikin160Class, OperatingMode) { } TEST(TestDaikin160Class, HumanReadable) { - IRDaikin160 ac(0); + IRDaikin160 ac(kGpioUnused); EXPECT_EQ( "Power: Off, Mode: 3 (Cool), Temp: 25C, Fan: 10 (Auto), " @@ -2312,23 +2319,27 @@ TEST(TestDaikin160Class, HumanReadable) { } TEST(TestDaikin176Class, FanControl) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); EXPECT_EQ( - "Power: Off, Mode: 2 (Cool), Temp: 9C, Fan: 1 (Low), Swing(H): 6 (Off)", + "Power: Off, Mode: 2 (Cool), Temp: 9C, Fan: 1 (Low), Swing(H): 6 (Off), " + "Id: 0", ac.toString()); ac.setFan(kDaikinFanMin); ac.setPower(true); EXPECT_EQ( - "Power: On, Mode: 2 (Cool), Temp: 9C, Fan: 1 (Low), Swing(H): 6 (Off)", + "Power: On, Mode: 2 (Cool), Temp: 9C, Fan: 1 (Low), Swing(H): 6 (Off), " + "Id: 0", ac.toString()); ac.setFan(kDaikinFanMin + 1); EXPECT_EQ( - "Power: On, Mode: 2 (Cool), Temp: 9C, Fan: 3 (High), Swing(H): 6 (Off)", + "Power: On, Mode: 2 (Cool), Temp: 9C, Fan: 3 (High), Swing(H): 6 (Off), " + "Id: 0", ac.toString()); ac.setFan(kDaikin176FanMax); EXPECT_EQ( - "Power: On, Mode: 2 (Cool), Temp: 9C, Fan: 3 (High), Swing(H): 6 (Off)", + "Power: On, Mode: 2 (Cool), Temp: 9C, Fan: 3 (High), Swing(H): 6 (Off), " + "Id: 0", ac.toString()); // Real state from remote @@ -2340,7 +2351,7 @@ TEST(TestDaikin176Class, FanControl) { ac.setRaw(state); EXPECT_EQ( "Power: On, Mode: 2 (Cool), Temp: 26C, Fan: 3 (High), " - "Swing(H): 5 (Auto)", + "Swing(H): 5 (Auto), Id: 0", ac.toString()); } @@ -2357,25 +2368,28 @@ TEST(TestDaikin176Class, convertFan) { } TEST(TestDaikin176Class, SimulateIRacDaikin176) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); ac.setPower(true); ac.setMode(ac.convertMode(stdAc::opmode_t::kCool)); ac.setTemp(26); ac.setFan(ac.convertFan(stdAc::fanspeed_t::kMax)); ac.setSwingHorizontal(kDaikin176SwingHOff); + ac.setId(0); EXPECT_EQ( - "Power: On, Mode: 2 (Cool), Temp: 26C, Fan: 3 (High), Swing(H): 6 (Off)", + "Power: On, Mode: 2 (Cool), Temp: 26C, Fan: 3 (High), Swing(H): 6 (Off), " + "Id: 0", ac.toString()); ac.setSwingHorizontal(ac.convertSwingH(stdAc::swingh_t::kAuto)); + ac.setId(1); EXPECT_EQ( "Power: On, Mode: 2 (Cool), Temp: 26C, Fan: 3 (High), " - "Swing(H): 5 (Auto)", + "Swing(H): 5 (Auto), Id: 1", ac.toString()); } TEST(TestDaikin176Class, OperatingMode) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikin176Auto); @@ -2404,7 +2418,7 @@ TEST(TestDaikin176Class, OperatingMode) { } TEST(TestDaikin176Class, Temperature) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikin176Auto); ac.setTemp(0); @@ -2455,7 +2469,7 @@ TEST(TestDaikin176Class, Temperature) { } TEST(TestDaikin176Class, Power) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); ac.begin(); ac.on(); @@ -2472,7 +2486,7 @@ TEST(TestDaikin176Class, Power) { } TEST(TestDaikin176Class, VaneSwing) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); ac.begin(); ac.setSwingHorizontal(kDaikin176SwingHAuto); @@ -2496,7 +2510,7 @@ TEST(TestDaikin176Class, VaneSwing) { } TEST(TestDaikin176Class, ReconstructKnownStates) { - IRDaikin176 ac(0); + IRDaikin176 ac(kGpioUnused); ac.begin(); // Data from: // https://github.com/crankyoldgit/IRremoteESP8266/pull/826#issuecomment-513531138 @@ -2543,8 +2557,8 @@ TEST(TestDaikin176Class, ReconstructKnownStates) { // Data from: // https://docs.google.com/spreadsheets/d/1-YJnHyzy6bId5QmjTEZuw8_wSufESoIl-L_VEF-o8lM/edit?usp=sharing TEST(TestDecodeDaikin128, RealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); uint16_t rawData[265] = { 9846, 9794, 9848, 9796, 4638, 2512, 348, 382, 352, 954, 352, 956, 352, 382, 352, 956, 352, 384, 352, 382, 352, 386, 352, 382, 352, 954, 352, 384, @@ -2594,8 +2608,8 @@ TEST(TestDecodeDaikin128, RealExample) { // Data from: // https://docs.google.com/spreadsheets/d/1-YJnHyzy6bId5QmjTEZuw8_wSufESoIl-L_VEF-o8lM/edit?usp=sharing TEST(TestDecodeDaikin128, SyntheticSelfDecode) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); uint8_t expectedState[kDaikin128StateLength] = { // 8 bytes 0x16, 0x12, 0x20, 0x19, 0x47, 0x22, 0x26, 0xAD, @@ -2613,7 +2627,7 @@ TEST(TestDecodeDaikin128, SyntheticSelfDecode) { } TEST(TestDaikin128Class, Checksums) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); uint8_t knownGood[kDaikin128StateLength] = { 0x16, 0x12, 0x20, 0x19, 0x47, 0x22, 0x26, 0xAD, @@ -2629,7 +2643,7 @@ TEST(TestDaikin128Class, Checksums) { } TEST(TestDaikin128Class, PowerToggle) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setPowerToggle(true); @@ -2641,7 +2655,7 @@ TEST(TestDaikin128Class, PowerToggle) { } TEST(TestDaikin128Class, SwingVertical) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setSwingVertical(true); @@ -2653,7 +2667,7 @@ TEST(TestDaikin128Class, SwingVertical) { } TEST(TestDaikin128Class, Sleep) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setSleep(true); @@ -2665,7 +2679,7 @@ TEST(TestDaikin128Class, Sleep) { } TEST(TestDaikin128Class, Econo) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); // Econo works in some modes @@ -2684,7 +2698,7 @@ TEST(TestDaikin128Class, Econo) { } TEST(TestDaikin128Class, FanSpeed) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikin128Cool); @@ -2720,7 +2734,7 @@ TEST(TestDaikin128Class, FanSpeed) { } TEST(TestDaikin128Class, OperatingMode) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setMode(0); @@ -2744,7 +2758,7 @@ TEST(TestDaikin128Class, OperatingMode) { } TEST(TestDaikin128Class, Quiet) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); // Quiet works in some modes @@ -2763,7 +2777,7 @@ TEST(TestDaikin128Class, Quiet) { } TEST(TestDaikin128Class, Powerful) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); // Powerful works in some modes @@ -2782,7 +2796,7 @@ TEST(TestDaikin128Class, Powerful) { } TEST(TestDaikin128Class, Temperature) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setTemp(0); @@ -2818,7 +2832,7 @@ TEST(TestDaikin128Class, Temperature) { // Test human readable output. TEST(TestDaikin128Class, HumanReadable) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.setPowerToggle(false); ac.setMode(kDaikin128Auto); @@ -2859,7 +2873,7 @@ TEST(TestDaikin128Class, HumanReadable) { } TEST(TestDaikin128Class, Clock) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setClock(0); @@ -2873,7 +2887,7 @@ TEST(TestDaikin128Class, Clock) { } TEST(TestDaikin128Class, Timers) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); ac.begin(); ac.setOnTimerEnabled(false); @@ -2906,7 +2920,7 @@ TEST(TestDaikin128Class, Timers) { } TEST(TestDaikin128Class, ReconstructKnownState) { - IRDaikin128 ac(0); + IRDaikin128 ac(kGpioUnused); uint8_t expectedState[kDaikin128StateLength] = { 0x16, 0x12, 0x20, 0x19, 0x47, 0x22, 0x26, 0xAD, @@ -2936,8 +2950,8 @@ TEST(TestDaikin128Class, ReconstructKnownState) { // Data from: // https://github.com/crankyoldgit/IRremoteESP8266/issues/873#issue-485088080 TEST(TestDecodeDaikin152, RealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); uint16_t rawData[319] = { 450, 420, 448, 446, 422, 444, 422, 446, 422, 446, 422, 25182, 3492, 1718, 450, 1288, 448, 422, 446, 448, 420, 446, 422, 1290, 448, 422, 446, 446, @@ -2984,8 +2998,8 @@ TEST(TestDecodeDaikin152, RealExample) { // https://github.com/crankyoldgit/IRremoteESP8266/issues/873 TEST(TestDecodeDaikin152, SyntheticExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); uint8_t expectedState[kDaikin152StateLength] = { 0x11, 0xDA, 0x27, 0x00, 0x00, 0x00, 0x34, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xC5, 0x40, 0x00, 0xAB}; @@ -3020,7 +3034,7 @@ TEST(TestDecodeDaikin152, SyntheticExample) { } TEST(TestDaikin2ClassNew, Issue908) { - IRDaikin2 ac(0); + IRDaikin2 ac(kGpioUnused); // https://docs.google.com/spreadsheets/d/1f8EGfIbBUo2B-CzUFdrgKQprWakoYNKM80IKZN4KXQE/edit#gid=236366525&range=I8 uint8_t fanMedium[kDaikin2StateLength] = { 0x11, 0xDA, 0x27, 0x00, 0x01, 0x4A, 0x42, 0xB0, 0x28, 0x0C, 0x80, 0x04, @@ -3033,7 +3047,8 @@ TEST(TestDaikin2ClassNew, Issue908) { "Swing(V): 3 (Upper Middle), Swing(H): 170 (Middle), Clock: 09:46, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 2 (Loud), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); ASSERT_EQ(kDaikinFanMed, ac.getFan()); ASSERT_EQ(stdAc::fanspeed_t::kMedium, ac.toCommon().fanspeed); @@ -3051,7 +3066,8 @@ TEST(TestDaikin2ClassNew, Issue908) { "Swing(V): 3 (Upper Middle), Swing(H): 170 (Middle), Clock: 09:57, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 2 (Loud), " "Light: 3 (Off), Mould: On, Clean: On, Fresh: Off, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); ASSERT_EQ(3, ac.getSwingVertical()); ASSERT_EQ(stdAc::swingv_t::kMiddle, ac.toCommon().swingv); @@ -3075,7 +3091,7 @@ TEST(TestDaikin2ClassNew, Issue908) { // Tests for IRDaikin152 class. TEST(TestDaikin152Class, Power) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.on(); @@ -3092,7 +3108,7 @@ TEST(TestDaikin152Class, Power) { } TEST(TestDaikin152Class, Temperature) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikinHeat); // Heat has the widest temp range. ac.setTemp(0); @@ -3131,7 +3147,7 @@ TEST(TestDaikin152Class, Temperature) { } TEST(TestDaikin152Class, OperatingMode) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikinAuto); @@ -3164,7 +3180,7 @@ TEST(TestDaikin152Class, OperatingMode) { } TEST(TestDaikin152Class, Swing) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.setSwingV(false); @@ -3178,7 +3194,7 @@ TEST(TestDaikin152Class, Swing) { } TEST(TestDaikin152Class, QuietMode) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.setQuiet(true); @@ -3202,7 +3218,7 @@ TEST(TestDaikin152Class, QuietMode) { } TEST(TestDaikin152Class, PowerfulMode) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.setPowerful(true); @@ -3223,7 +3239,7 @@ TEST(TestDaikin152Class, PowerfulMode) { } TEST(TestDaikin152Class, EconoMode) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); ac.setEcono(true); @@ -3247,7 +3263,7 @@ TEST(TestDaikin152Class, EconoMode) { } TEST(TestDaikin152Class, FanSpeed) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); // Unexpected value should default to Auto. @@ -3289,7 +3305,7 @@ TEST(TestDaikin152Class, FanSpeed) { } TEST(TestDaikin152Class, Comfort) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.begin(); // Comfort mode should change these settings. @@ -3311,7 +3327,7 @@ TEST(TestDaikin152Class, Comfort) { } TEST(TestDaikin152Class, toCommon) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.setPower(true); ac.setMode(kDaikinCool); ac.setTemp(20); @@ -3355,7 +3371,7 @@ TEST(TestDaikin152Class, convertFan) { } TEST(TestDaikin152Class, BuildKnownState) { - IRDaikin152 ac(0); + IRDaikin152 ac(kGpioUnused); ac.setPower(true); ac.setMode(kDaikinCool); ac.setTemp(20); @@ -3396,7 +3412,8 @@ TEST(TestDaikin2Class, Issue1035) { "Swing(V): 1 (Highest), Swing(H): 190 (Auto), Clock: 13:09, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 2 (Loud), " "Light: 1 (High), Mould: On, Clean: On, Fresh: On, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); ASSERT_TRUE(ac.toCommon().power); ASSERT_NE(ac.toCommon().mode, stdAc::opmode_t::kOff); @@ -3407,7 +3424,8 @@ TEST(TestDaikin2Class, Issue1035) { "Swing(V): 1 (Highest), Swing(H): 190 (Auto), Clock: 13:09, " "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 2 (Loud), " "Light: 1 (High), Mould: On, Clean: On, Fresh: On, Eye: Off, " - "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off", + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 0 (Off)", ac.toString()); ASSERT_FALSE(ac.toCommon().power); } @@ -3477,7 +3495,7 @@ TEST(TestDaikin64Class, ChecksumAndSetGetRaw) { } TEST(TestDaikin64Class, Temperature) { - IRDaikin64 ac(0); + IRDaikin64 ac(kGpioUnused); ac.begin(); ac.setTemp(0); EXPECT_EQ(kDaikin64MinTemp, ac.getTemp()); @@ -3516,7 +3534,7 @@ TEST(TestDaikin64Class, Temperature) { } TEST(TestDaikin64Class, OperatingMode) { - IRDaikin64 ac(0); + IRDaikin64 ac(kGpioUnused); ac.begin(); ac.setMode(kDaikin64Cool); @@ -3545,7 +3563,7 @@ TEST(TestDaikin64Class, OperatingMode) { } TEST(TestDaikin64Class, PowerToggle) { - IRDaikin64 ac(0); + IRDaikin64 ac(kGpioUnused); ac.begin(); ac.setPowerToggle(true); @@ -3727,3 +3745,137 @@ TEST(TestDecodeDaikin64, Issue1092) { stdAc::state_t result, prev; ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &result, &prev)); } + +// Test the humidity modes & settings. +TEST(TestDaikin2Class, Humidity) { + IRDaikin2 ac(kGpioUnused); + + EXPECT_FALSE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityOff, ac.getHumidity()); + EXPECT_NE(kDaikinMaxTemp, ac.getTemp()); + + // Test it can't be changed when NOT in Heat or Dry mode. + EXPECT_NE(kDaikinHeat, ac.getMode()); + EXPECT_NE(kDaikinDry, ac.getMode()); + ac.setHumidity(kDaikin2HumidityAuto); + EXPECT_FALSE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityOff, ac.getHumidity()); + + // Turn on the setting. + ac.setMode(kDaikinHeat); + ac.setHumidity(kDaikin2HumidityAuto); + EXPECT_EQ(kDaikinHeat, ac.getMode()); + EXPECT_TRUE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityAuto, ac._.Humidity); + EXPECT_EQ(kDaikinMaxTemp, ac.getTemp()); + + // Check it doesn't allow Dry only percentages. + ac.setHumidity(kDaikin2HumidityDryMedium); // Invalid + EXPECT_EQ(kDaikinHeat, ac.getMode()); + EXPECT_FALSE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityOff, ac.getHumidity()); + + // Now Dry modes/settings. + ac.setMode(kDaikinDry); + ac.setHumidity(kDaikin2HumidityAuto); + EXPECT_EQ(kDaikinDry, ac.getMode()); + EXPECT_TRUE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityAuto, ac.getHumidity()); + EXPECT_EQ(kDaikinMaxTemp, ac.getTemp()); + + ac.setHumidity(kDaikin2HumidityDryMedium); // Valid + EXPECT_EQ(kDaikinDry, ac.getMode()); + EXPECT_TRUE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityDryMedium, ac.getHumidity()); + EXPECT_EQ(kDaikinMaxTemp, ac.getTemp()); + + // Confirm we can't change the temp while in Humidity mode etc. + ac.setTemp(kDaikinMaxTemp - 1); + EXPECT_EQ(kDaikinMaxTemp, ac.getTemp()); + EXPECT_TRUE(ac._.HumidOn); + + // Confirm we can if it's off. + ac.setHumidity(kDaikin2HumidityOff); + ac.setTemp(kDaikinMaxTemp - 1); + EXPECT_EQ(kDaikinMaxTemp -1 , ac.getTemp()); + EXPECT_FALSE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityOff, ac.getHumidity()); + + // Change to a mode that's incompatible + ac.setHumidity(kDaikin2HumidityAuto); + ac.setMode(kDaikinCool); + EXPECT_FALSE(ac._.HumidOn); + EXPECT_EQ(kDaikin2HumidityOff, ac.getHumidity()); + + // Test some real codes. + + // Ref: https://docs.google.com/spreadsheets/d/1kxHgFqiUB9ETXYEkszAIN5gE-t2ykvnPCnOV-sPUE0A/edit#gid=1167536015&range=B7:AN7 + const uint8_t stateHumidAuto[kDaikin2StateLength] = { + 0x11, 0xDA, 0x27, 0x00, 0x01, 0x00, 0x40, 0x50, 0x60, 0x0C, 0x80, 0x04, + 0xB0, 0x16, 0x24, 0x00, 0x00, 0x8B, 0xCE, 0xD6, 0x11, 0xDA, 0x27, 0x00, + 0x00, 0x49, 0xC0, 0xFF, 0xA0, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0xC1, + 0x90, 0x60, 0xD1}; + ac.stateReset(); + ac.setRaw(stateHumidAuto); + EXPECT_TRUE(ac._.HumidOn); + EXPECT_EQ(kDaikinHeat, ac.getMode()); + EXPECT_EQ(kDaikinMaxTemp, ac.getTemp()); + EXPECT_EQ(kDaikin2HumidityAuto, ac.getHumidity()); + EXPECT_EQ( + "Power: On, Mode: 4 (Heat), Temp: 32C, Fan: 10 (Auto), " + "Swing(V): 14 (Off), Swing(H): 139 (UNKNOWN), Clock: 00:00, " + "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 1 (Quiet), " + "Light: 1 (High), Mould: Off, Clean: On, Fresh: Off, Eye: Off, " + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 255 (Auto)", ac.toString()); + + // Ref: https://docs.google.com/spreadsheets/d/1kxHgFqiUB9ETXYEkszAIN5gE-t2ykvnPCnOV-sPUE0A/edit#gid=1966092848&range=B6:AN6 + const uint8_t stateDryStd[kDaikin2StateLength] = { + 0x11, 0xDA, 0x27, 0x00, 0x01, 0x00, 0x40, 0x50, 0x60, 0x0C, 0x80, 0x04, + 0xB0, 0x16, 0x24, 0x00, 0x00, 0x8B, 0xCE, 0xD6, 0x11, 0xDA, 0x27, 0x00, + 0x00, 0x29, 0xC0, 0x37, 0xA0, 0x00, 0x00, 0x06, 0x60, 0x00, 0x00, 0xC1, + 0x90, 0x60, 0xE9}; + ac.stateReset(); + ac.setRaw(stateDryStd); + EXPECT_TRUE(ac._.HumidOn); + EXPECT_EQ(kDaikinDry, ac.getMode()); + EXPECT_EQ(kDaikinMaxTemp, ac.getTemp()); + EXPECT_EQ(kDaikin2HumidityDryMedium, ac.getHumidity()); + EXPECT_EQ( + "Power: On, Mode: 2 (Dry), Temp: 32C, Fan: 10 (Auto), " + "Swing(V): 14 (Off), Swing(H): 139 (UNKNOWN), Clock: 00:00, " + "On Timer: Off, Off Timer: Off, Sleep Timer: Off, Beep: 1 (Quiet), " + "Light: 1 (High), Mould: Off, Clean: On, Fresh: Off, Eye: Off, " + "Eye Auto: Off, Quiet: Off, Powerful: Off, Purify: On, Econo: Off, " + "Humid: 55%", ac.toString()); +} + +TEST(TestDaikin176Class, UnitId) { + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1543 + IRDaikin176 ac(kGpioUnused); + EXPECT_EQ(0, ac.getId()); + ac.setId(1); + EXPECT_EQ(1, ac.getId()); + ac.setId(0); + EXPECT_EQ(0, ac.getId()); + + // Real example(s) + const uint8_t unita[22] = { + 0x11, 0xDA, 0x17, 0x18, 0x04, 0x00, 0x1E, + 0x11, 0xDA, 0x17, 0x18, 0x00, 0x73, 0x00, + 0x21, 0x00, 0x00, 0x1E, 0x36, 0x00, 0x20, 0x22}; + const uint8_t unitb[22] = { + 0x11, 0xDA, 0x17, 0x19, 0x04, 0x00, 0x1F, + 0x11, 0xDA, 0x17, 0x19, 0x00, 0x73, 0x00, + 0x21, 0x00, 0x00, 0x1E, 0x36, 0x00, 0x20, 0x23}; + ac.setRaw(unitb); + ASSERT_EQ(1, ac.getId()); + EXPECT_STATE_EQ(unitb, ac.getRaw(), kDaikin176Bits); + EXPECT_EQ( + "Power: On, Mode: 2 (Cool), Temp: 24C, Fan: 3 (High), Swing(H): 6 (Off), " + "Id: 1", ac.toString()); + // Check if we can successfully convert to a known-good Unit A message. + ac.setId(0); + ASSERT_EQ(0, ac.getId()); + EXPECT_STATE_EQ(unita, ac.getRaw(), kDaikin176Bits); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Haier_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Haier_test.cpp index 77b475f6e..8b89b1098 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Haier_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Haier_test.cpp @@ -675,7 +675,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 5 (Power), Mode: 0 (Auto), Temp: 25C," " Fan: 5 (Auto), Turbo: 0 (Off), Swing: 0 (Off), Sleep: Off," - " Health: On", + " Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); haier.setMode(kHaierAcYrw02Cool); haier.setTemp(21); @@ -683,7 +683,7 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { EXPECT_EQ( "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 21C," " Fan: 1 (High), Turbo: 0 (Off), Swing: 0 (Off), Sleep: Off," - " Health: On", + " Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); haier.setSwing(kHaierAcYrw02SwingMiddle); @@ -691,9 +691,10 @@ TEST(TestHaierACYRW02Class, MessageConstuction) { haier.setSleep(true); haier.setTurbo(kHaierAcYrw02TurboHigh); EXPECT_EQ( - "Power: On, Button: 8 (Turbo), Mode: 1 (Cool), Temp: 21C," - " Fan: 1 (High), Turbo: 1 (High), Swing: 2 (Middle)," - " Sleep: On, Health: Off", + "Power: On, Button: 8 (Turbo), Mode: 1 (Cool), Temp: 21C, " + "Fan: 1 (High), Turbo: 1 (High), Swing: 2 (Middle), " + "Sleep: On, Health: Off, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); } @@ -706,9 +707,9 @@ TEST(TestHaierACYRW02Class, RealStates) { IRHaierACYRW02 haier(kGpioUnused); haier.setRaw(expectedState1); EXPECT_EQ( - "Power: On, Button: 7 (Health), Mode: 4 (Heat), Temp: 30C," - " Fan: 1 (High), Turbo: 0 (Off), Swing: 1 (Highest), Sleep: Off," - " Health: Off", + "Power: On, Button: 7 (Health), Mode: 4 (Heat), Temp: 30C, " + "Fan: 1 (High), Turbo: 0 (Off), Swing: 1 (Highest), Sleep: Off, " + "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); uint8_t expectedState2[kHaierACYRW02StateLength] = { @@ -716,9 +717,9 @@ TEST(TestHaierACYRW02Class, RealStates) { 0x80, 0x00, 0x00, 0x00, 0x00, 0x05, 0x75}; haier.setRaw(expectedState2); EXPECT_EQ( - "Power: Off, Button: 5 (Power), Mode: 4 (Heat), Temp: 30C," - " Fan: 1 (High), Turbo: 0 (Off), Swing: 0 (Off), Sleep: Off," - " Health: Off", + "Power: Off, Button: 5 (Power), Mode: 4 (Heat), Temp: 30C, " + "Fan: 1 (High), Turbo: 0 (Off), Swing: 0 (Off), Sleep: Off, " + "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); uint8_t expectedState3[kHaierACYRW02StateLength] = { @@ -726,9 +727,9 @@ TEST(TestHaierACYRW02Class, RealStates) { 0x20, 0x00, 0x00, 0x00, 0x00, 0x01, 0x2B}; haier.setRaw(expectedState3); EXPECT_EQ( - "Power: On, Button: 1 (Temp Down), Mode: 1 (Cool), Temp: 16C," - " Fan: 1 (High), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off," - " Health: On", + "Power: On, Button: 1 (Temp Down), Mode: 1 (Cool), Temp: 16C, " + "Fan: 1 (High), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); // cool 25, health, fan auto, swing auto, sleep on @@ -737,9 +738,9 @@ TEST(TestHaierACYRW02Class, RealStates) { 0x20, 0x80, 0x00, 0x00, 0x00, 0x0B, 0xD7}; haier.setRaw(expectedState4); EXPECT_EQ( - "Power: On, Button: 11 (Sleep), Mode: 1 (Cool), Temp: 25C," - " Fan: 5 (Auto), Turbo: 0 (Off), Swing: 12 (Auto), Sleep: On," - " Health: On", + "Power: On, Button: 11 (Sleep), Mode: 1 (Cool), Temp: 25C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 12 (Auto), Sleep: On, " + "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); // cool 25, health, fan 3, swing auto, sleep on @@ -748,9 +749,9 @@ TEST(TestHaierACYRW02Class, RealStates) { 0x20, 0x80, 0x00, 0x00, 0x00, 0x04, 0x85}; haier.setRaw(expectedState5); EXPECT_EQ( - "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 25C," - " Fan: 1 (High), Turbo: 0 (Off), Swing: 12 (Auto), Sleep: On," - " Health: On", + "Power: On, Button: 4 (Fan), Mode: 1 (Cool), Temp: 25C, " + "Fan: 1 (High), Turbo: 0 (Off), Swing: 12 (Auto), Sleep: On, " + "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); } @@ -979,16 +980,16 @@ TEST(TestDecodeHaierAC_YRW02, RealExample) { IRHaierACYRW02 haier(kGpioUnused); haier.setRaw(irsend.capture.state); EXPECT_EQ( - "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 17C," - " Fan: 1 (High), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off," - " Health: On", + "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 17C, " + "Fan: 1 (High), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: On, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", haier.toString()); } // Default state of the remote needed to include hidden data. // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/668 TEST(TestHaierAcIssues, Issue668) { - IRHaierAC ac(0); + IRHaierAC ac(kGpioUnused); IRHaierAC acText(1); IRrecv irrecv(kGpioUnused); ac.begin(); @@ -1075,7 +1076,7 @@ TEST(TestHaierAcIssues, Issue668) { } TEST(TestHaierACClass, toCommon) { - IRHaierAC ac(0); + IRHaierAC ac(kGpioUnused); ac.setCommand(kHaierAcCmdOn); ac.setMode(kHaierAcCool); ac.setTemp(20); @@ -1106,7 +1107,7 @@ TEST(TestHaierACClass, toCommon) { } TEST(TestHaierACYRW02Class, toCommon) { - IRHaierACYRW02 ac(0); + IRHaierACYRW02 ac(kGpioUnused); ac.setPower(true); ac.setMode(kHaierAcYrw02Cool); ac.setTemp(20); @@ -1202,6 +1203,13 @@ TEST(TestDecodeHaierAC176, SyntheticDecode) { EXPECT_EQ(kHaierAC176Bits, irsend.capture.bits); EXPECT_FALSE(irsend.capture.repeat); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Button: 5 (Power), Mode: 1 (Cool), Temp: 24C, Fan: 5 (Auto), " + "Turbo: 0 (Off), Swing: 6 (UNKNOWN), Sleep: Off, Health: Off, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + stdAc::state_t result, prev; + ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &result, &prev)); } TEST(TestUtils, Housekeeping) { @@ -1223,7 +1231,148 @@ TEST(TestUtils, Housekeeping) { ASSERT_EQ("HAIER_AC176", typeToString(decode_type_t::HAIER_AC176)); ASSERT_EQ(decode_type_t::HAIER_AC176, strToDecodeType("HAIER_AC176")); ASSERT_TRUE(hasACState(decode_type_t::HAIER_AC176)); - ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::HAIER_AC176)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::HAIER_AC176)); ASSERT_EQ(kHaierAC176Bits, IRsend::defaultBits(decode_type_t::HAIER_AC176)); ASSERT_EQ(kNoRepeat, IRsend::minRepeats(decode_type_t::HAIER_AC176)); } + +TEST(TestHaierAC176Class, BuildKnownState) { + IRHaierAC176 ac(kGpioUnused); + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1480#issuecomment-884920033 + // heat, 24 C, fan max + ac.setTemp(24); + ac.setMode(kHaierAcYrw02Heat); + ac.setFan(kHaierAcYrw02FanHigh); + EXPECT_TRUE(ac.validChecksum(ac.getRaw())); + EXPECT_EQ( + "Power: On, Button: 4 (Fan), Mode: 4 (Heat), Temp: 24C, Fan: 1 (High), " + "Turbo: 0 (Off), Swing: 0 (Off), Sleep: Off, Health: On, " + "Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + ac.toString()); + /* Disabled pending: + https://github.com/crankyoldgit/IRremoteESP8266/issues/1480#issuecomment-885636790 + const uint8_t expectedState[kHaierAC176StateLength] = { + 0xA6, 0x0A, 0x00, 0x00, 0x40, 0x20, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 0x94, + 0xB7, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0xF7}; + EXPECT_STATE_EQ(expectedState, ac.getRaw(), kHaierAC176StateLength); + */ +} + +TEST(TestHaierAC176Class, Timers) { + IRHaierAC176 ac(kGpioUnused); + EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); + EXPECT_EQ(0, ac.getOnTimer()); + EXPECT_EQ(0, ac.getOffTimer()); + + // On Timer + ac.setOnTimer(1); + EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); + EXPECT_EQ(1, ac.getOnTimer()); + + ac.setOnTimer(0); + EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); + EXPECT_EQ(0, ac.getOnTimer()); + + ac.setOnTimer(1 * 60); + EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); + EXPECT_EQ(1 * 60, ac.getOnTimer()); + + ac.setOnTimer(2 * 60 + 37); + EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); + EXPECT_EQ(2 * 60 + 37, ac.getOnTimer()); + + ac.setOnTimer(23 * 60 + 59); // Max + EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); + EXPECT_EQ(23 * 60 + 59, ac.getOnTimer()); + + ac.setOnTimer(24 * 60); // Beyond max + EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); + EXPECT_EQ(23 * 60 + 59, ac.getOnTimer()); // Max + + ac.setOnTimer(0); + EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); + EXPECT_EQ(0, ac.getOnTimer()); + + // Off Timer + ac.setOffTimer(1); + EXPECT_EQ(kHaierAcYrw02OffTimer, ac.getTimerMode()); + EXPECT_EQ(1, ac.getOffTimer()); + + ac.setOffTimer(0); + EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); + EXPECT_EQ(0, ac.getOffTimer()); + + ac.setOffTimer(1 * 60); + EXPECT_EQ(kHaierAcYrw02OffTimer, ac.getTimerMode()); + EXPECT_EQ(1 * 60, ac.getOffTimer()); + + ac.setOffTimer(2 * 60 + 37); + EXPECT_EQ(kHaierAcYrw02OffTimer, ac.getTimerMode()); + ac.setOffTimer(23 * 60 + 59); // Max + EXPECT_EQ(kHaierAcYrw02OffTimer, ac.getTimerMode()); + EXPECT_EQ(23 * 60 + 59, ac.getOffTimer()); + + ac.setOffTimer(24 * 60); // Beyond max + EXPECT_EQ(kHaierAcYrw02OffTimer, ac.getTimerMode()); + EXPECT_EQ(23 * 60 + 59, ac.getOffTimer()); // Max + + ac.setOffTimer(0); + EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); + EXPECT_EQ(0, ac.getOffTimer()); + + // Real data. + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1480#issuecomment-894804106 + const uint8_t timer30m[22] = { + 0xA6, 0x82, 0x00, 0x40, 0x00, 0xA0, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x00, 0x10, 0x36, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7}; + const uint8_t timeroff[22] = { + 0xA6, 0x82, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x10, 0x18, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7}; + // https://docs.google.com/spreadsheets/d/1wdOVS08wgK2pEP7hTZLYMmrQ9FZVmLpZF2HjNQaVxlU/edit#gid=0&range=A65 + const uint8_t timeroffthenon[22] = { + 0xA6, 0x82, 0x00, 0xA0, 0x40, 0xA0, 0x1E, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x10, 0xDE, 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7}; + ac.setRaw(timer30m); + EXPECT_EQ(kHaierAcYrw02OnTimer, ac.getTimerMode()); + EXPECT_EQ( + "Power: Off, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: Off, Timer Mode: 2 (On), On Timer: 00:30, Off Timer: Off", + ac.toString()); + ac.setRaw(timeroff); + EXPECT_EQ(kHaierAcYrw02NoTimers, ac.getTimerMode()); + EXPECT_EQ( + "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + ac.toString()); + ac.setRaw(timeroffthenon); + EXPECT_EQ( + "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: Off, Timer Mode: 5 (Off-On), On Timer: 08:00, Off Timer: 00:30", + ac.toString()); + ac.setTimerMode(kHaierAcYrw02OnThenOffTimer); + EXPECT_EQ( + "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: Off, Timer Mode: 4 (On-Off), On Timer: 08:00, Off Timer: 00:30", + ac.toString()); + ac.setTimerMode(kHaierAcYrw02OffTimer); + EXPECT_EQ(0, ac.getOnTimer()); + EXPECT_EQ(30, ac.getOffTimer()); + EXPECT_EQ( + "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: Off, Timer Mode: 1 (Off), On Timer: Off, Off Timer: 00:30", + ac.toString()); + ac.setTimerMode(kHaierAcYrw02NoTimers); + EXPECT_EQ(0, ac.getOnTimer()); + EXPECT_EQ(0, ac.getOffTimer()); + EXPECT_EQ( + "Power: On, Button: 0 (Temp Up), Mode: 0 (Auto), Temp: 24C, " + "Fan: 5 (Auto), Turbo: 0 (Off), Swing: 2 (Middle), Sleep: Off, " + "Health: Off, Timer Mode: 0 (N/A), On Timer: Off, Off Timer: Off", + ac.toString()); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_LG_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_LG_test.cpp index c6ae33dda..808f7b83a 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_LG_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_LG_test.cpp @@ -518,6 +518,7 @@ TEST(TestIRLgAcClass, SetAndGetMode) { TEST(TestIRLgAcClass, SetAndGetFan) { IRLgAc ac(kGpioUnused); + ac.setModel(lg_ac_remote_model_t::AKB74955603); ac.setMode(kLgAcCool); ac.setFan(kLgAcFanAuto); EXPECT_EQ(kLgAcFanAuto, ac.getFan()); @@ -529,6 +530,10 @@ TEST(TestIRLgAcClass, SetAndGetFan) { EXPECT_EQ(kLgAcFanAuto, ac.getFan()); ac.setFan(kLgAcFanLowest - 1); EXPECT_EQ(kLgAcFanAuto, ac.getFan()); + ac.setFan(kLgAcFanMax); + EXPECT_EQ(kLgAcFanMax, ac.getFan()); + ac.setFan(kLgAcFanHigh + 1); + EXPECT_EQ(kLgAcFanAuto, ac.getFan()); } TEST(TestIRLgAcClass, toCommon) { @@ -536,7 +541,7 @@ TEST(TestIRLgAcClass, toCommon) { ac.setPower(true); ac.setMode(kLgAcCool); ac.setTemp(20); - ac.setFan(kLgAcFanHigh); + ac.setFan(kLgAcFanMax); // Now test it. ASSERT_EQ(decode_type_t::LG, ac.toCommon().protocol); ASSERT_EQ(lg_ac_remote_model_t::GE6711AR2853M, ac.toCommon().model); @@ -545,12 +550,12 @@ TEST(TestIRLgAcClass, toCommon) { ASSERT_EQ(20, ac.toCommon().degrees); ASSERT_EQ(stdAc::opmode_t::kCool, ac.toCommon().mode); ASSERT_EQ(stdAc::fanspeed_t::kMax, ac.toCommon().fanspeed); + ASSERT_TRUE(ac.toCommon().light); // Unsupported. ASSERT_EQ(stdAc::swingv_t::kOff, ac.toCommon().swingv); ASSERT_EQ(stdAc::swingh_t::kOff, ac.toCommon().swingh); ASSERT_FALSE(ac.toCommon().turbo); ASSERT_FALSE(ac.toCommon().clean); - ASSERT_FALSE(ac.toCommon().light); ASSERT_FALSE(ac.toCommon().quiet); ASSERT_FALSE(ac.toCommon().econo); ASSERT_FALSE(ac.toCommon().filter); @@ -576,7 +581,7 @@ TEST(TestIRLgAcClass, HumanReadable) { ac.setFan(kLgAcFanHigh); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 4 (Heat), Temp: 30C, Fan: 4 (High)", + "Power: On, Mode: 4 (Heat), Temp: 30C, Fan: 4 (Maximum)", ac.toString()); ac.setMode(kLgAcCool); ac.setFan(kLgAcFanLow); @@ -609,7 +614,7 @@ TEST(TestIRLgAcClass, SetAndGetRaw) { ASSERT_EQ(0x8800A4E, ac.getRaw()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 25C, Fan: 4 (High)", + "Power: On, Mode: 0 (Cool), Temp: 25C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x88C0051); @@ -630,7 +635,7 @@ TEST(TestIRLgAcClass, MessageConstruction) { ASSERT_EQ(0x8800A4E, ac.getRaw()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 25C, Fan: 4 (High)", + "Power: On, Mode: 0 (Cool), Temp: 25C, Fan: 4 (Maximum)", ac.toString()); } @@ -671,6 +676,23 @@ TEST(TestUtils, Housekeeping) { ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::LG2)); ASSERT_EQ(kLgBits, IRsendTest::defaultBits(decode_type_t::LG2)); ASSERT_EQ(kLgDefaultRepeat, IRsendTest::minRepeats(decode_type_t::LG2)); + + ASSERT_EQ(lg_ac_remote_model_t::GE6711AR2853M, + IRac::strToModel(irutils::modelToStr( + decode_type_t::LG, + lg_ac_remote_model_t::GE6711AR2853M).c_str())); + ASSERT_EQ(lg_ac_remote_model_t::AKB75215403, + IRac::strToModel(irutils::modelToStr( + decode_type_t::LG2, + lg_ac_remote_model_t::AKB75215403).c_str())); + ASSERT_EQ(lg_ac_remote_model_t::AKB74955603, + IRac::strToModel(irutils::modelToStr( + decode_type_t::LG2, + lg_ac_remote_model_t::AKB74955603).c_str())); + ASSERT_EQ(lg_ac_remote_model_t::AKB73757604, + IRac::strToModel(irutils::modelToStr( + decode_type_t::LG2, + lg_ac_remote_model_t::AKB73757604).c_str())); } TEST(TestIRLgAcClass, KnownExamples) { @@ -734,7 +756,7 @@ TEST(TestIRLgAcClass, KnownExamples) { ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 22C, Fan: 4 (High)", + "Power: On, Mode: 0 (Cool), Temp: 22C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x8808754); @@ -748,7 +770,7 @@ TEST(TestIRLgAcClass, KnownExamples) { ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 2 (Fan), Temp: 22C, Fan: 4 (High)", + "Power: On, Mode: 2 (Fan), Temp: 22C, Fan: 4 (Maximum)", ac.toString()); // https://github.com/crankyoldgit/IRremoteESP8266/issues/1008#issuecomment-570794029 @@ -756,13 +778,13 @@ TEST(TestIRLgAcClass, KnownExamples) { ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (High)", + "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x8808440); ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 19C, Fan: 4 (High)", + "Power: On, Mode: 0 (Cool), Temp: 19C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x8800459); ASSERT_TRUE(ac.isValidLgAc()); @@ -774,19 +796,19 @@ TEST(TestIRLgAcClass, KnownExamples) { ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 1 (Dry), Temp: 24C, Fan: 4 (High)", + "Power: On, Mode: 1 (Dry), Temp: 24C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x880A341); ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 2 (Fan), Temp: 18C, Fan: 4 (High)", + "Power: On, Mode: 2 (Fan), Temp: 18C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x8810045); ASSERT_TRUE(ac.isValidLgAc()); EXPECT_EQ( "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 15C, Fan: 4 (High)", + "Power: On, Mode: 0 (Cool), Temp: 15C, Fan: 4 (Maximum)", ac.toString()); ac.setRaw(0x8810056); ASSERT_TRUE(ac.isValidLgAc()); @@ -794,6 +816,20 @@ TEST(TestIRLgAcClass, KnownExamples) { "Model: 1 (GE6711AR2853M), " "Power: On, Mode: 0 (Cool), Temp: 15C, Fan: 5 (Auto)", ac.toString()); + + // https://docs.google.com/spreadsheets/d/17C_Ay7OjsYNSAxxj8uXbh0Vi2jrqyrncwzIyUOGSuNo/edit#gid=0&range=A56:E56 + ac.setRaw(0x881334B); + ASSERT_TRUE(ac.isValidLgAc()); + EXPECT_EQ( + "Model: 4 (AKB73757604), Vane: 2, Swing(V): 4 (Middle)", + ac.toString()); + + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1531#issuecomment-892070033 + ac.setRaw(0x88133B2); + ASSERT_TRUE(ac.isValidLgAc()); + EXPECT_EQ( + "Model: 4 (AKB73757604), Vane: 3, Swing(V): 3 (Upper Middle)", + ac.toString()); } // Verify decoding of LG2 message. @@ -827,7 +863,7 @@ TEST(TestDecodeLG2, Issue1008) { char expected[] = "Model: 2 (AKB75215403), " - "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (High)"; + "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (Maximum)"; ASSERT_EQ(expected, ac.toString()); ac._irsend.makeDecodeResult(); EXPECT_TRUE(capture.decode(&ac._irsend.capture)); @@ -850,7 +886,7 @@ TEST(TestIRLgAcClass, DifferentModels) { char expected1[] = "Model: 1 (GE6711AR2853M), " - "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (High)"; + "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (Maximum)"; ASSERT_EQ(expected1, ac.toString()); ac._irsend.makeDecodeResult(); EXPECT_TRUE(capture.decode(&ac._irsend.capture)); @@ -866,7 +902,7 @@ TEST(TestIRLgAcClass, DifferentModels) { char expected2[] = "Model: 2 (AKB75215403), " - "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (High)"; + "Power: On, Mode: 0 (Cool), Temp: 18C, Fan: 4 (Maximum)"; ASSERT_EQ(expected2, ac.toString()); ac._irsend.makeDecodeResult(); EXPECT_TRUE(capture.decode(&ac._irsend.capture)); @@ -881,6 +917,212 @@ TEST(TestIRLgAcClass, FanSpeedIssue1214) { EXPECT_EQ(kLgAcFanLow, IRLgAc::convertFan(stdAc::fanspeed_t::kLow)); EXPECT_EQ(kLgAcFanMedium, IRLgAc::convertFan(stdAc::fanspeed_t::kMedium)); EXPECT_EQ(kLgAcFanHigh, IRLgAc::convertFan(stdAc::fanspeed_t::kHigh)); - EXPECT_EQ(kLgAcFanHigh, IRLgAc::convertFan(stdAc::fanspeed_t::kMax)); + EXPECT_EQ(kLgAcFanMax, IRLgAc::convertFan(stdAc::fanspeed_t::kMax)); EXPECT_EQ(kLgAcFanAuto, IRLgAc::convertFan(stdAc::fanspeed_t::kAuto)); } + +TEST(TestIRLgAcClass, FanSpeedIssue1513) { + IRLgAc ac(kGpioUnused); + // Test for the new model's extra speed. + ac.setModel(lg_ac_remote_model_t::AKB74955603); + ac.setFan(kLgAcFanHigh); + EXPECT_EQ(kLgAcFanHigh, ac.getFan()); + ac.setFan(kLgAcFanLow); + EXPECT_EQ(kLgAcFanLowAlt, ac.getFan()); + // Check the old model can't do it. + ac.setModel(lg_ac_remote_model_t::AKB75215403); + ac.setFan(kLgAcFanHigh); + EXPECT_EQ(kLgAcFanMax, ac.getFan()); + + // Real examples. + ac.setRaw(0x880A3A7); + EXPECT_EQ(kLgAcFanHigh, ac.getFan()); + ac.setRaw(0x880A396); + EXPECT_EQ(kLgAcFanLowAlt, ac.getFan()); +} + +TEST(TestIRLgAcClass, DetectAKB74955603) { + IRLgAc ac(kGpioUnused); + IRrecv capture(kGpioUnused); + + ac.stateReset(); + ASSERT_NE(lg_ac_remote_model_t::AKB74955603, ac.getModel()); + ac.setRaw(0x880A3A7); + EXPECT_EQ(lg_ac_remote_model_t::AKB74955603, ac.getModel()); + + ac.stateReset(); + // https://docs.google.com/spreadsheets/d/1zF0FI2ENvbLdk4zaWBY9ZYVM3MB_4oxro9wCM7ETX4Y/edit#gid=1319765817&range=A2:C2 + ac.setRaw(0x880A396); + EXPECT_EQ(lg_ac_remote_model_t::AKB74955603, ac.getModel()); + char expected[] = + "Model: 3 (AKB74955603), Power: On, Mode: 2 (Fan), Temp: 18C, " + "Fan: 9 (Low)"; + ASSERT_EQ(expected, ac.toString()); + + ac._irsend.reset(); + ac.send(); + ac._irsend.makeDecodeResult(); + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&ac._irsend.capture, &r, &p)); + + ac.stateReset(); + ac.setRaw(0x881306A); + EXPECT_EQ(lg_ac_remote_model_t::AKB74955603, ac.getModel()); + + ac.stateReset(); + ac.setRaw(kLgAcSwingHOff); + EXPECT_NE(lg_ac_remote_model_t::AKB74955603, ac.getModel()); + + ac.stateReset(); + ac.setRaw(0x8813228); + EXPECT_NE(lg_ac_remote_model_t::AKB74955603, ac.getModel()); +} + +TEST(TestIRLgAcClass, DetectAKB73757604) { + IRLgAc ac(kGpioUnused); + IRrecv capture(kGpioUnused); + + ac.stateReset(); + ASSERT_NE(lg_ac_remote_model_t::AKB73757604, ac.getModel()); + ac.setRaw(0x880A3A7); + EXPECT_NE(lg_ac_remote_model_t::AKB73757604, ac.getModel()); + + // https://docs.google.com/spreadsheets/d/17C_Ay7OjsYNSAxxj8uXbh0Vi2jrqyrncwzIyUOGSuNo/edit?usp=sharing + ac.stateReset(); + ac.setRaw(kLgAcSwingHOff); + EXPECT_EQ(lg_ac_remote_model_t::AKB73757604, ac.getModel()); + + ac.setRaw(0x8813228); + EXPECT_EQ(lg_ac_remote_model_t::AKB73757604, ac.getModel()); + + ac.setRaw(0x881333A); + EXPECT_EQ(lg_ac_remote_model_t::AKB73757604, ac.getModel()); + ASSERT_EQ("Model: 4 (AKB73757604), Vane: 2, Swing(V): 3 (Upper Middle)", + ac.toString()); +} + +TEST(TestIRLgAcClass, Light) { + IRLgAc ac(kGpioUnused); + IRrecv capture(kGpioUnused); + ac.begin(); + + ASSERT_FALSE(ac.isLightToggle()); + EXPECT_TRUE(ac.getLight()); + ac.setLight(false); + EXPECT_FALSE(ac.getLight()); + ac.setLight(true); + EXPECT_TRUE(ac.getLight()); + + ac.setRaw(0x880A396); // A known state. + const char expected[] = + "Model: 3 (AKB74955603), Power: On, Mode: 2 (Fan), Temp: 18C, " + "Fan: 9 (Low)"; + ac.setLight(false); + ac._irsend.reset(); + ac.send(); + ac._irsend.makeDecodeResult(); + // First message should be normal. + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + // The next should be a light toggle. + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 61)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ("Model: 3 (AKB74955603), Light Toggle: On", + IRAcUtils::resultAcToString(&ac._irsend.capture)); +} + +TEST(TestIRLgAcClass, SwingV) { + IRLgAc ac(kGpioUnused); + IRrecv capture(kGpioUnused); + ac.begin(); + + EXPECT_EQ(kLgAcSwingVOff, ac.getSwingV()); + + // Ref: https://docs.google.com/spreadsheets/d/1zF0FI2ENvbLdk4zaWBY9ZYVM3MB_4oxro9wCM7ETX4Y/edit#gid=1912869597&range=D2:E9 + ac.setRaw(0x881306A); + EXPECT_TRUE(ac.isSwingV()); + const char expected_middle[] = + "Model: 3 (AKB74955603), Swing(V): 6 (Middle)"; + EXPECT_EQ(expected_middle, ac.toString()); + ac.setSwingV(kLgAcSwingVHigh); + EXPECT_EQ(kLgAcSwingVHigh, ac.getSwingV()); + ac.setSwingV(0x880A396); // Non SwingV code. + EXPECT_EQ(kLgAcSwingVHigh, ac.getSwingV()); // Last setting. + + // Test sending via the class method. + ac.stateReset(); + ac.setRaw(0x880A396); // A known normal state. + const char expected[] = + "Model: 3 (AKB74955603), Power: On, Mode: 2 (Fan), Temp: 18C, " + "Fan: 9 (Low)"; + ac.setSwingV(kLgAcSwingVMiddle_Short); + EXPECT_EQ(kLgAcSwingVMiddle, ac.getSwingV()); + + ac._irsend.reset(); + ac.send(); + ac._irsend.makeDecodeResult(); + // First message should be normal. + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ(expected, IRAcUtils::resultAcToString(&ac._irsend.capture)); + // The next should be a middle swing. + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 61)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + EXPECT_EQ(kLgAcSwingVMiddle, ac._irsend.capture.value); + ASSERT_EQ(expected_middle, + IRAcUtils::resultAcToString(&ac._irsend.capture)); +} + +// Ref: +// https://github.com/crankyoldgit/IRremoteESP8266/issues/1513#issuecomment-877960010 +// https://docs.google.com/spreadsheets/d/1zF0FI2ENvbLdk4zaWBY9ZYVM3MB_4oxro9wCM7ETX4Y/edit#gid=348220307&range=A49:C49 +TEST(TestIRLgAcClass, SwingVOffAfterAuto) { + // Simulate sending a state with a SwingV auto, then followed by a SwingV Off. + IRLgAc ac(kGpioUnused); + IRrecv capture(kGpioUnused); + ac.begin(); + // IRhvac {"Vendor":"LG2", "Model": 3, "Power": "On", "Mode": "Heat", + // "Temp": 26, "FanSpeed": "min", "SwingV": "Auto", "Light": "On"} + ac.setModel(lg_ac_remote_model_t::AKB74955603); + ac.setPower(true); + ac.setMode(kLgAcHeat); + ac.setTemp(26); + ac.setFan(kLgAcFanLowest); + ac.setSwingV(ac.convertSwingV(stdAc::swingv_t::kAuto)); + ac.setLight(true); + ac._irsend.reset(); + ac.send(); + // All sent, we assume the above works. Just need to switch to swing off now. + ac._irsend.reset(); + // IRhvac {"Vendor":"LG2", "Model": 3, "Power": "On", "Mode": "Heat", + // "Temp": 26, "FanSpeed": "min", "SwingV": "Off", "Light": "On"} + ac.setSwingV(ac.convertSwingV(stdAc::swingv_t::kOff)); + ac.send(); + ac._irsend.makeDecodeResult(); + // There should only be two messages. + EXPECT_EQ(121, ac._irsend.capture.rawlen); + // First message should be normal. + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + ASSERT_EQ( + "Model: 2 (AKB75215403), Power: On, Mode: 4 (Heat), Temp: 26C," + " Fan: 0 (Quiet)", + IRAcUtils::resultAcToString(&ac._irsend.capture)); + // The next should be a SwingV Off. + EXPECT_TRUE(capture.decodeLG(&ac._irsend.capture, 61)); + ASSERT_EQ(LG2, ac._irsend.capture.decode_type); // Not "LG" + ASSERT_EQ(kLgBits, ac._irsend.capture.bits); + EXPECT_EQ(kLgAcSwingVOff, ac._irsend.capture.value); + ASSERT_EQ("Model: 3 (AKB74955603), Swing(V): 21 (Off)", + IRAcUtils::resultAcToString(&ac._irsend.capture)); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Mitsubishi_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Mitsubishi_test.cpp index 2b28dc588..28cc04d8e 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Mitsubishi_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Mitsubishi_test.cpp @@ -652,6 +652,26 @@ TEST(TestMitsubishiACClass, VaneMode) { EXPECT_EQ(kMitsubishiAcVaneAutoMove - 1, ac.getVane()); } +TEST(TestMitsubishiACClass, VaneLeft) { + IRMitsubishiAC ac(kGpioUnused); + ac.begin(); + + ac.setVaneLeft(kMitsubishiAcVaneAuto); + EXPECT_EQ(kMitsubishiAcVaneAuto, ac.getVaneLeft()); + + ac.setVaneLeft(kMitsubishiAcVaneAuto + 1); + EXPECT_EQ(kMitsubishiAcVaneAuto + 1, ac.getVaneLeft()); + + ac.setVaneLeft(kMitsubishiAcVaneAutoMove); + EXPECT_EQ(kMitsubishiAcVaneAutoMove, ac.getVaneLeft()); + + ac.setVaneLeft(kMitsubishiAcVaneAutoMove + 1); + EXPECT_EQ(kMitsubishiAcVaneAutoMove, ac.getVaneLeft()); + + ac.setVaneLeft(kMitsubishiAcVaneAutoMove - 1); + EXPECT_EQ(kMitsubishiAcVaneAutoMove - 1, ac.getVaneLeft()); +} + TEST(TestMitsubishiACClass, FanSpeed) { IRMitsubishiAC ac(kGpioUnused); ac.begin(); @@ -697,6 +717,7 @@ TEST(TestMitsubishiACClass, MessageConstuction) { ac.setMode(kMitsubishiAcCool); ac.setTemp(27); ac.setVane(3); + ac.setVaneLeft(2); ac.on(); // Check everything for kicks. @@ -704,6 +725,7 @@ TEST(TestMitsubishiACClass, MessageConstuction) { EXPECT_EQ(kMitsubishiAcCool, ac.getMode()); EXPECT_EQ(27, ac.getTemp()); EXPECT_EQ(3, ac.getVane()); + EXPECT_EQ(2, ac.getVaneLeft()); EXPECT_TRUE(ac.getPower()); irsend.reset(); @@ -727,8 +749,8 @@ TEST(TestMitsubishiACClass, MessageConstuction) { "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" - "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" - "m450s420m450s1300m450s1300m450s1300m450s420m450s420m450s1300m450s420" + "m450s420m450s420m450s420m450s420m450s1300m450s420m450s420m450s420" + "m450s420m450s1300m450s1300m450s1300m450s1300m450s420m450s1300m450s420" "m440s17100" "m3400s1750" "m450s1300m450s1300m450s420m450s420m450s420m450s1300m450s420m450s420" @@ -747,8 +769,8 @@ TEST(TestMitsubishiACClass, MessageConstuction) { "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" - "m450s420m450s420m450s420m450s420m450s420m450s420m450s420m450s420" - "m450s420m450s1300m450s1300m450s1300m450s420m450s420m450s1300m450s420" + "m450s420m450s420m450s420m450s420m450s1300m450s420m450s420m450s420" + "m450s420m450s1300m450s1300m450s1300m450s1300m450s420m450s1300m450s420" "m440s17100", irsend.outputStr()); } @@ -824,134 +846,6 @@ TEST(TestDecodeMitsubishiAC, DecodeRealExample) { EXPECT_STATE_EQ(expected, irsend.capture.state, kMitsubishiACBits); } -// Tests for decodeMitsubishiAC() when the first payload has an error. -TEST(TestDecodeMitsubishiAC, DecodeRealExampleRepeatNeeded) { - IRsendTest irsend(kGpioUnused); - IRrecv irrecv(kGpioUnused); - irsend.begin(); - - irsend.reset(); - // Mitsubishi AC "Power On, 16C, low fan, vane auto move". - uint16_t rawData[583] = { - 3476, 1708, 416, 1264, 420, 1260, 414, 400, 448, 390, 446, 392, 444, 1236, - 440, 400, 446, 392, 446, 1234, 440, 1266, 418, 396, 442, 1264, 420, 394, - 444, 394, 442, 1264, 422, 1260, 414, 398, 440, 1266, 418, 1264, 420, 392, - 446, 392, 444, 1264, 422, 392, 446, 392, 446, 1260, 414, 400, 448, 390, - 446, 392, 444, 394, 442, 396, 442, 398, 440, 424, 412, 400, 448, 390, 446, - 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, 398, 438, 400, 448, 390, - 446, 392, 446, 392, 444, 396, 442, 396, 440, 398, 440, 400, 438, 400, 448, - 390, 446, 392, 444, 1236, 440, 1266, 418, 394, 442, 396, 440, 398, 438, - 402, 446, 1232, 444, 396, 440, 1268, 418, 394, 442, 396, 440, 398, - // space 699 is not recognizable: - 440, 400, 448, 390, 448, 1232, 442, 1266, 420, 394, 444, 1264, 699, 1260, - 416, 396, 440, 398, 450, 1230, 444, 396, 442, 398, 440, 1266, 418, 1264, - 422, 1258, 416, 1266, 418, 394, 442, 396, 440, 398, 440, 398, 438, 400, - 446, 392, 446, 392, 446, 392, 444, 396, 442, 396, 440, 398, 438, 398, 438, - 400, 448, 392, 446, 392, 444, 394, 444, 396, 442, 396, 440, 398, 438, 400, - 448, 390, 448, 392, 444, 394, 444, 394, 442, 396, 442, 396, 440, 398, 438, - 400, 448, 390, 446, 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, 398, - 438, 400, 448, 390, 446, 392, 444, 394, 444, 394, 442, 396, 440, 398, 440, - 398, 438, 400, 448, 390, 446, 392, 444, 394, 444, 394, 442, 396, 440, 398, - 438, 400, 438, 400, 448, 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, - 398, 438, 1240, 444, 1264, 422, 390, 446, 392, 446, 1260, 414, 1268, 418, - 1264, 422, 12984, 3478, 1708, 418, 1264, 422, 1234, 442, 398, 448, 390, - 446, 392, 446, 1234, 440, 400, 448, 390, 446, 1234, 442, 1266, 420, 392, - 444, 1264, 420, 392, 446, 394, 444, 1236, 448, 1260, 416, 398, 440, 1266, - 418, 1262, 422, 390, 446, 392, 444, 1234, 440, 400, 448, 392, 446, 1234, - 440, 398, 450, 390, 446, 392, 444, 394, 444, 394, 442, 396, 442, 398, 440, - 400, 438, 400, 448, 390, 446, 392, 444, 394, 442, 396, 442, 396, 440, 398, - 438, 400, 448, 390, 446, 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, - 398, 438, 400, 448, 416, 420, 392, 444, 1234, 440, 1240, 446, 394, 442, - 396, 440, 398, 438, 400, 448, 1232, 444, 396, 440, 1240, 446, 394, 442, - 396, 440, 398, 440, 400, 448, 390, 446, 1232, 444, 1238, 446, 394, 444, - 1236, 448, 1232, 442, 396, 440, 398, 448, 1232, 444, 396, 440, 398, 438, - 1242, 444, 1238, 448, 1234, 442, 1240, 444, 394, 442, 396, 440, 398, 438, - 400, 448, 390, 446, 394, 444, 420, 416, 394, 444, 396, 440, 398, 440, 398, - 438, 400, 448, 418, 420, 418, 418, 394, 442, 396, 442, 396, 440, 424, 412, - 400, 448, 390, 446, 392, 446, 420, 418, 420, 416, 396, 440, 398, 440, 424, - 412, 426, 420, 418, 420, 392, 444, 394, 444, 422, 416, 422, 414, 398, 440, - 426, 422, 388, 448, 416, 420, 418, 418, 422, 416, 422, 414, 424, 414, 398, - 438, 426, 422, 418, 420, 390, 446, 418, 418, 420, 416, 396, 440, 424, 412, - 426, 412, 400, 446, 418, 420, 420, 418, 420, 416, 422, 414, 422, 414, 424, - 412, 426, 422, 390, 446, 1232, 442, 1240, 446, 394, 444, 394, 442, 1238, - 446, 1234, 440, 1240, 444}; // UNKNOWN F6FDB82B - - irsend.sendRaw(rawData, 583, 33); - irsend.makeDecodeResult(); - - ASSERT_TRUE(irrecv.decode(&irsend.capture)); - EXPECT_EQ(MITSUBISHI_AC, irsend.capture.decode_type); - EXPECT_EQ(kMitsubishiACBits, irsend.capture.bits); - uint8_t expected[kMitsubishiACStateLength] = { - 0x23, 0xCB, 0x26, 0x01, 0x00, 0x00, 0x18, 0x0A, 0x36, - 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6}; - EXPECT_STATE_EQ(expected, irsend.capture.state, kMitsubishiACBits); -} - -// Tests for decodeMitsubishiAC() when the repeat mark is wrong. -TEST(TestDecodeMitsubishiAC, DecodeRealExampleRepeatMarkError) { - IRsendTest irsend(kGpioUnused); - IRrecv irrecv(kGpioUnused); - irsend.begin(); - - irsend.reset(); - // Mitsubishi AC "Power On, 16C, low fan, vane auto move". - uint16_t rawData[583] = { - 3476, 1708, 416, 1264, 420, 1260, 414, 400, 448, 390, 446, 392, 444, 1236, - 440, 400, 446, 392, 446, 1234, 440, 1266, 418, 396, 442, 1264, 420, 394, - 444, 394, 442, 1264, 422, 1260, 414, 398, 440, 1266, 418, 1264, 420, 392, - 446, 392, 444, 1264, 422, 392, 446, 392, 446, 1260, 414, 400, 448, 390, - 446, 392, 444, 394, 442, 396, 442, 398, 440, 424, 412, 400, 448, 390, 446, - 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, 398, 438, 400, 448, 390, - 446, 392, 446, 392, 444, 396, 442, 396, 440, 398, 440, 400, 438, 400, 448, - 390, 446, 392, 444, 1236, 440, 1266, 418, 394, 442, 396, 440, 398, 438, - 402, 446, 1232, 444, 396, 440, 1268, 418, 394, 442, 396, 440, 398, 440, - 400, 448, 390, 448, 1232, 442, 1266, 420, 394, 444, 1264, 422, 1260, 416, - 396, 440, 398, 450, 1230, 444, 396, 442, 398, 440, 1266, 418, 1264, 422, - 1258, 416, 1266, 418, 394, 442, 396, 440, 398, 440, 398, 438, 400, 446, - 392, 446, 392, 446, 392, 444, 396, 442, 396, 440, 398, 438, 398, 438, 400, - 448, 392, 446, 392, 444, 394, 444, 396, 442, 396, 440, 398, 438, 400, 448, - 390, 448, 392, 444, 394, 444, 394, 442, 396, 442, 396, 440, 398, 438, 400, - 448, 390, 446, 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, 398, 438, - 400, 448, 390, 446, 392, 444, 394, 444, 394, 442, 396, 440, 398, 440, 398, - 438, 400, 448, 390, 446, 392, 444, 394, 444, 394, 442, 396, 440, 398, 438, - 400, 438, 400, 448, 392, 446, 392, 444, 394, 442, 396, 442, 396, 440, 398, - 438, 1240, 444, 1264, 422, 390, 446, 392, 446, - // Repeat mark (1111) wrong: - 1260, 414, 1268, 418, 1264, 422, 1111, 347, 1708, 418, 1264, 422, 1234, - 442, 398, 448, 390, 446, 392, 446, 1234, 440, 400, 448, 390, 446, 1234, - 442, 1266, 420, 392, 444, 1264, 420, 392, 446, 394, 444, 1236, 448, 1260, - 416, 398, 440, 1266, 418, 1262, 422, 390, 446, 392, 444, 1234, 440, 400, - 448, 392, 446, 1234, 440, 398, 450, 390, 446, 392, 444, 394, 444, 394, - 442, 396, 442, 398, 440, 400, 438, 400, 448, 390, 446, 392, 444, 394, 442, - 396, 442, 396, 440, 398, 438, 400, 448, 390, 446, 392, 446, 392, 444, 394, - 442, 396, 442, 396, 440, 398, 438, 400, 448, 416, 420, 392, 444, 1234, - 440, 1240, 446, 394, 442, 396, 440, 398, 438, 400, 448, 1232, 444, 396, - 440, 1240, 446, 394, 442, 396, 440, 398, 440, 400, 448, 390, 446, 1232, - 444, 1238, 446, 394, 444, 1236, 448, 1232, 442, 396, 440, 398, 448, 1232, - 444, 396, 440, 398, 438, 1242, 444, 1238, 448, 1234, 442, 1240, 444, 394, - 442, 396, 440, 398, 438, 400, 448, 390, 446, 394, 444, 420, 416, 394, 444, - 396, 440, 398, 440, 398, 438, 400, 448, 418, 420, 418, 418, 394, 442, 396, - 442, 396, 440, 424, 412, 400, 448, 390, 446, 392, 446, 420, 418, 420, 416, - 396, 440, 398, 440, 424, 412, 426, 420, 418, 420, 392, 444, 394, 444, 422, - 416, 422, 414, 398, 440, 426, 422, 388, 448, 416, 420, 418, 418, 422, 416, - 422, 414, 424, 414, 398, 438, 426, 422, 418, 420, 390, 446, 418, 418, 420, - 416, 396, 440, 424, 412, 426, 412, 400, 446, 418, 420, 420, 418, 420, 416, - 422, 414, 422, 414, 424, 412, 426, 422, 390, 446, 1232, 442, 1240, 446, - 394, 444, 394, 442, 1238, 446, 1234, 440, 1240, 444}; // UNKNOWN F6FDB82B - - irsend.sendRaw(rawData, 583, 33); - irsend.makeDecodeResult(); - - ASSERT_TRUE(irrecv.decode(&irsend.capture)); - EXPECT_EQ(MITSUBISHI_AC, irsend.capture.decode_type); - EXPECT_EQ(kMitsubishiACBits, irsend.capture.bits); - uint8_t expected[kMitsubishiACStateLength] = { - 0x23, 0xCB, 0x26, 0x01, 0x00, 0x00, 0x18, 0x0A, 0x36, - 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6}; - EXPECT_STATE_EQ(expected, irsend.capture.state, kMitsubishiACBits); -} - // Tests for decodeMitsubishiAC() when first payload has an error and the // repeat mark is wrong. TEST(TestDecodeMitsubishiAC, DecodeRealExampleRepeatNeededButError) { diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Samsung_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Samsung_test.cpp index ee8afbaad..a4e0503cd 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Samsung_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Samsung_test.cpp @@ -321,7 +321,7 @@ TEST(TestSamsungAC, Housekeeping) { // Test sending typical data only. TEST(TestSendSamsungAC, SendDataOnly) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); uint8_t data[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, @@ -353,7 +353,7 @@ TEST(TestSendSamsungAC, SendDataOnly) { // Test sending extended data. TEST(TestSendSamsungAC, SendExtendedData) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); // "Off" message. uint8_t data[kSamsungAcExtendedStateLength] = { @@ -400,38 +400,38 @@ TEST(TestIRSamsungAcClass, SetAndGetRaw) { uint8_t expectedState[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xE2, 0xFE, 0x71, 0x40, 0x11, 0xF0}; - IRSamsungAc samsung(0); - samsung.setRaw(expectedState); - EXPECT_STATE_EQ(expectedState, samsung.getRaw(), kSamsungAcBits); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(expectedState); + EXPECT_STATE_EQ(expectedState, ac.getRaw(), kSamsungAcBits); uint8_t extendedState[kSamsungAcExtendedStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE2, 0xFE, 0x71, 0x40, 0x11, 0xF0}; - samsung.setRaw(extendedState, kSamsungAcExtendedStateLength); + ac.setRaw(extendedState, kSamsungAcExtendedStateLength); // We should NOT get the extended state back. - EXPECT_STATE_EQ(expectedState, samsung.getRaw(), kSamsungAcBits); + EXPECT_STATE_EQ(expectedState, ac.getRaw(), kSamsungAcBits); } TEST(TestIRSamsungAcClass, SetAndGetPower) { - IRSamsungAc samsung(0); - samsung.on(); - EXPECT_TRUE(samsung.getPower()); - samsung.off(); - EXPECT_FALSE(samsung.getPower()); - samsung.setPower(true); - EXPECT_TRUE(samsung.getPower()); - samsung.setPower(false); - EXPECT_FALSE(samsung.getPower()); + IRSamsungAc ac(kGpioUnused); + ac.on(); + EXPECT_TRUE(ac.getPower()); + ac.off(); + EXPECT_FALSE(ac.getPower()); + ac.setPower(true); + EXPECT_TRUE(ac.getPower()); + ac.setPower(false); + EXPECT_FALSE(ac.getPower()); } TEST(TestIRSamsungAcClass, SetAndGetSwing) { - IRSamsungAc samsung(0); - samsung.setSwing(true); - EXPECT_TRUE(samsung.getSwing()); - samsung.setSwing(false); - EXPECT_FALSE(samsung.getSwing()); - samsung.setSwing(true); - EXPECT_TRUE(samsung.getSwing()); + IRSamsungAc ac(kGpioUnused); + ac.setSwing(true); + EXPECT_TRUE(ac.getSwing()); + ac.setSwing(false); + EXPECT_FALSE(ac.getSwing()); + ac.setSwing(true); + EXPECT_TRUE(ac.getSwing()); // Real examples from: // https://github.com/crankyoldgit/IRremoteESP8266/issues/505#issuecomment-424036602 @@ -439,35 +439,35 @@ TEST(TestIRSamsungAcClass, SetAndGetSwing) { const uint8_t expected_off[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xE2, 0xFE, 0x71, 0x80, 0x11, 0xF0}; - samsung.setRaw(expected_off); - EXPECT_FALSE(samsung.getSwing()); + ac.setRaw(expected_off); + EXPECT_FALSE(ac.getSwing()); const uint8_t expected_on[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x02, 0xAF, 0x71, 0x80, 0x11, 0xF0}; - samsung.setRaw(expected_on); - EXPECT_TRUE(samsung.getSwing()); + ac.setRaw(expected_on); + EXPECT_TRUE(ac.getSwing()); } TEST(TestIRSamsungAcClass, SetAndGetClean) { - IRSamsungAc samsung(0); - samsung.setClean(true); - EXPECT_TRUE(samsung.getClean()); - samsung.setClean(false); - EXPECT_FALSE(samsung.getClean()); - samsung.setClean(true); - EXPECT_TRUE(samsung.getClean()); + IRSamsungAc ac(kGpioUnused); + ac.setClean(true); + EXPECT_TRUE(ac.getClean()); + ac.setClean(false); + EXPECT_FALSE(ac.getClean()); + ac.setClean(true); + EXPECT_TRUE(ac.getClean()); } TEST(TestIRSamsungAcClass, SetAndGetBeep) { - IRSamsungAc samsung(0); - samsung.setBeep(false); - EXPECT_FALSE(samsung.getBeep()); - samsung.setBeep(true); - EXPECT_TRUE(samsung.getBeep()); - samsung.setBeep(false); - EXPECT_FALSE(samsung.getBeep()); - samsung.setBeep(true); - EXPECT_TRUE(samsung.getBeep()); + IRSamsungAc ac(kGpioUnused); + ac.setBeep(false); + EXPECT_FALSE(ac.getBeep()); + ac.setBeep(true); + EXPECT_TRUE(ac.getBeep()); + ac.setBeep(false); + EXPECT_FALSE(ac.getBeep()); + ac.setBeep(true); + EXPECT_TRUE(ac.getBeep()); } TEST(TestIRSamsungAcClass, SetAndGetDisplay) { @@ -491,51 +491,51 @@ TEST(TestIRSamsungAcClass, SetAndGetIon) { } TEST(TestIRSamsungAcClass, SetAndGetTemp) { - IRSamsungAc samsung(0); - samsung.setTemp(25); - EXPECT_EQ(25, samsung.getTemp()); - samsung.setTemp(kSamsungAcMinTemp); - EXPECT_EQ(kSamsungAcMinTemp, samsung.getTemp()); - samsung.setTemp(kSamsungAcMinTemp - 1); - EXPECT_EQ(kSamsungAcMinTemp, samsung.getTemp()); - samsung.setTemp(kSamsungAcMaxTemp); - EXPECT_EQ(kSamsungAcMaxTemp, samsung.getTemp()); - samsung.setTemp(kSamsungAcMaxTemp + 1); - EXPECT_EQ(kSamsungAcMaxTemp, samsung.getTemp()); + IRSamsungAc ac(kGpioUnused); + ac.setTemp(25); + EXPECT_EQ(25, ac.getTemp()); + ac.setTemp(kSamsungAcMinTemp); + EXPECT_EQ(kSamsungAcMinTemp, ac.getTemp()); + ac.setTemp(kSamsungAcMinTemp - 1); + EXPECT_EQ(kSamsungAcMinTemp, ac.getTemp()); + ac.setTemp(kSamsungAcMaxTemp); + EXPECT_EQ(kSamsungAcMaxTemp, ac.getTemp()); + ac.setTemp(kSamsungAcMaxTemp + 1); + EXPECT_EQ(kSamsungAcMaxTemp, ac.getTemp()); } TEST(TestIRSamsungAcClass, SetAndGetMode) { - IRSamsungAc samsung(0); - samsung.setMode(kSamsungAcCool); - EXPECT_EQ(kSamsungAcCool, samsung.getMode()); - EXPECT_NE(kSamsungAcFanAuto2, samsung.getFan()); - samsung.setMode(kSamsungAcHeat); - EXPECT_EQ(kSamsungAcHeat, samsung.getMode()); - EXPECT_NE(kSamsungAcFanAuto2, samsung.getFan()); - samsung.setMode(kSamsungAcAuto); - EXPECT_EQ(kSamsungAcAuto, samsung.getMode()); - EXPECT_EQ(kSamsungAcFanAuto2, samsung.getFan()); - samsung.setMode(kSamsungAcDry); - EXPECT_EQ(kSamsungAcDry, samsung.getMode()); - EXPECT_NE(kSamsungAcFanAuto2, samsung.getFan()); + IRSamsungAc ac(kGpioUnused); + ac.setMode(kSamsungAcCool); + EXPECT_EQ(kSamsungAcCool, ac.getMode()); + EXPECT_NE(kSamsungAcFanAuto2, ac.getFan()); + ac.setMode(kSamsungAcHeat); + EXPECT_EQ(kSamsungAcHeat, ac.getMode()); + EXPECT_NE(kSamsungAcFanAuto2, ac.getFan()); + ac.setMode(kSamsungAcAuto); + EXPECT_EQ(kSamsungAcAuto, ac.getMode()); + EXPECT_EQ(kSamsungAcFanAuto2, ac.getFan()); + ac.setMode(kSamsungAcDry); + EXPECT_EQ(kSamsungAcDry, ac.getMode()); + EXPECT_NE(kSamsungAcFanAuto2, ac.getFan()); } TEST(TestIRSamsungAcClass, SetAndGetFan) { - IRSamsungAc samsung(0); - samsung.setMode(kSamsungAcCool); // Most fan modes avail in this setting. - samsung.setFan(kSamsungAcFanAuto); - EXPECT_EQ(kSamsungAcFanAuto, samsung.getFan()); - samsung.setFan(kSamsungAcFanLow); - EXPECT_EQ(kSamsungAcFanLow, samsung.getFan()); - samsung.setFan(kSamsungAcFanAuto2); // Not available in Cool mode. - EXPECT_EQ(kSamsungAcFanLow, samsung.getFan()); // Shouldn't change. - samsung.setMode(kSamsungAcAuto); // Has special fan setting. - EXPECT_EQ(kSamsungAcFanAuto2, samsung.getFan()); - samsung.setFan(kSamsungAcFanLow); // Shouldn't be available in Auto mode. - EXPECT_EQ(kSamsungAcFanAuto2, samsung.getFan()); - samsung.setMode(kSamsungAcHeat); // Most fan modes avail in this setting. - samsung.setFan(kSamsungAcFanHigh); - EXPECT_EQ(kSamsungAcFanHigh, samsung.getFan()); + IRSamsungAc ac(kGpioUnused); + ac.setMode(kSamsungAcCool); // Most fan modes avail in this setting. + ac.setFan(kSamsungAcFanAuto); + EXPECT_EQ(kSamsungAcFanAuto, ac.getFan()); + ac.setFan(kSamsungAcFanLow); + EXPECT_EQ(kSamsungAcFanLow, ac.getFan()); + ac.setFan(kSamsungAcFanAuto2); // Not available in Cool mode. + EXPECT_EQ(kSamsungAcFanLow, ac.getFan()); // Shouldn't change. + ac.setMode(kSamsungAcAuto); // Has special fan setting. + EXPECT_EQ(kSamsungAcFanAuto2, ac.getFan()); + ac.setFan(kSamsungAcFanLow); // Shouldn't be available in Auto mode. + EXPECT_EQ(kSamsungAcFanAuto2, ac.getFan()); + ac.setMode(kSamsungAcHeat); // Most fan modes avail in this setting. + ac.setFan(kSamsungAcFanHigh); + EXPECT_EQ(kSamsungAcFanHigh, ac.getFan()); } TEST(TestIRSamsungAcClass, SetAndGetQuiet) { @@ -634,7 +634,7 @@ TEST(TestIRSamsungAcClass, QuietAndPowerfulAreMutuallyExclusive) { } TEST(TestIRSamsungAcClass, ChecksumCalculation) { - IRSamsungAc samsung(0); + IRSamsungAc ac(kGpioUnused); const uint8_t originalstate[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, @@ -642,116 +642,108 @@ TEST(TestIRSamsungAcClass, ChecksumCalculation) { uint8_t examplestate[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x02, 0xAF, 0x71, 0x00, 0x15, 0xF0}; - const uint8_t extendedstate[kSamsungAcExtendedStateLength] = { 0x02, 0xA9, 0x0F, 0x00, 0x00, 0x00, 0xC0, 0x01, 0xC9, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF9, 0xCE, 0x71, 0xE0, 0x41, 0xC0}; - EXPECT_TRUE(IRSamsungAc::validChecksum(examplestate)); - EXPECT_EQ(0, IRSamsungAc::calcChecksum(examplestate)); examplestate[8] = 0x12; // Set an incorrect checksum. EXPECT_FALSE(IRSamsungAc::validChecksum(examplestate)); - EXPECT_EQ(0, IRSamsungAc::calcChecksum(examplestate)); - samsung.setRaw(examplestate); + ac.setRaw(examplestate); // Extracting the state from the object should have a correct checksum. - EXPECT_TRUE(IRSamsungAc::validChecksum(samsung.getRaw())); - EXPECT_STATE_EQ(originalstate, samsung.getRaw(), kSamsungAcBits); + EXPECT_TRUE(IRSamsungAc::validChecksum(ac.getRaw())); + EXPECT_STATE_EQ(originalstate, ac.getRaw(), kSamsungAcBits); examplestate[8] = 0x02; // Restore old checksum value. // Change the state to force a different checksum. examplestate[11] = 0x01; EXPECT_FALSE(IRSamsungAc::validChecksum(examplestate)); - EXPECT_EQ(0xF, IRSamsungAc::calcChecksum(examplestate)); // Check an extended state is valid. EXPECT_TRUE(IRSamsungAc::validChecksum(extendedstate, 21)); } TEST(TestIRSamsungAcClass, HumanReadable) { - IRSamsungAc samsung(0); + IRSamsungAc ac(kGpioUnused); EXPECT_EQ( "Power: On, Mode: 1 (Cool), Temp: 16C, Fan: 2 (Low), Swing: On, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); - samsung.setTemp(kSamsungAcMaxTemp); - samsung.setMode(kSamsungAcHeat); - samsung.off(); - samsung.setFan(kSamsungAcFanHigh); - samsung.setSwing(false); - samsung.setBeep(true); - samsung.setClean(true); + ac.toString()); + ac.setTemp(kSamsungAcMaxTemp); + ac.setMode(kSamsungAcHeat); + ac.off(); + ac.setFan(kSamsungAcFanHigh); + ac.setSwing(false); + ac.setBeep(true); + ac.setClean(true); EXPECT_EQ( "Power: Off, Mode: 4 (Heat), Temp: 30C, Fan: 5 (High), Swing: Off, " "Beep: On, Clean: On, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); - samsung.setQuiet(true); + ac.toString()); + ac.setQuiet(true); EXPECT_EQ( "Power: Off, Mode: 4 (Heat), Temp: 30C, Fan: 0 (Auto), Swing: Off, " "Beep: On, Clean: On, Quiet: On, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); - samsung.setQuiet(false); - samsung.setPowerful(true); + ac.toString()); + ac.setQuiet(false); + ac.setPowerful(true); EXPECT_EQ( "Power: Off, Mode: 4 (Heat), Temp: 30C, Fan: 7 (Turbo), Swing: Off, " "Beep: On, Clean: On, Quiet: Off, Powerful: On, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); - samsung.setIon(true); - samsung.setDisplay(false); + ac.toString()); + ac.setIon(true); + ac.setDisplay(false); EXPECT_EQ( "Power: Off, Mode: 4 (Heat), Temp: 30C, Fan: 7 (Turbo), Swing: Off, " "Beep: On, Clean: On, Quiet: Off, Powerful: On, Breeze: Off, " "Light: Off, Ion: On", - samsung.toString()); + ac.toString()); } TEST(TestIRSamsungAcClass, GeneralConstruction) { - IRSamsungAc samsung(0); + IRSamsungAc ac(kGpioUnused); uint8_t OnCoolFAutoBOffCOffQOffT20Soff[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0xE2, 0xFE, 0x71, 0x40, 0x11, 0xF0}; - samsung.setPower(true); - samsung.setMode(kSamsungAcCool); - samsung.setFan(kSamsungAcFanAuto); - samsung.setSwing(false); - samsung.setBeep(false); - samsung.setClean(false); - samsung.setQuiet(false); - samsung.setTemp(20); - EXPECT_STATE_EQ(OnCoolFAutoBOffCOffQOffT20Soff, samsung.getRaw(), + ac.setPower(true); + ac.setMode(kSamsungAcCool); + ac.setFan(kSamsungAcFanAuto); + ac.setSwing(false); + ac.setBeep(false); + ac.setClean(false); + ac.setQuiet(false); + ac.setTemp(20); + EXPECT_STATE_EQ(OnCoolFAutoBOffCOffQOffT20Soff, ac.getRaw(), kSamsungAcBits); - /* Disabled until we understand why LSB bit of the swing byte changes. - // TODO(Hollako): Explain why sometimes the LSB of state[9] is a 1. - // e.g. 0xAE or 0XAF for swing move. + uint8_t OnHeatFAutoBOffCOffQOffT17Son[kSamsungAcStateLength] = { 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x01, 0x02, 0xAF, 0x71, 0x10, 0x41, 0xF0}; - samsung.setPower(true); - samsung.setMode(kSamsungAcHeat); - samsung.setFan(kSamsungAcFanAuto); - samsung.setSwing(true); - samsung.setBeep(false); - samsung.setClean(false); - samsung.setQuiet(false); - samsung.setTemp(17); - EXPECT_STATE_EQ(OnHeatFAutoBOffCOffQOffT17Son, samsung.getRaw(), + ac.setPower(true); + ac.setMode(kSamsungAcHeat); + ac.setFan(kSamsungAcFanAuto); + ac.setSwing(true); + ac.setBeep(false); + ac.setClean(false); + ac.setQuiet(false); + ac.setTemp(17); + EXPECT_STATE_EQ(OnHeatFAutoBOffCOffQOffT17Son, ac.getRaw(), kSamsungAcBits); - */ } // Tests for decodeSamsungAC(). // Decode normal SamsungAC messages. TEST(TestDecodeSamsungAC, SyntheticDecode) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); uint8_t expectedState[kSamsungAcStateLength] = { @@ -807,13 +799,13 @@ TEST(TestDecodeSamsungAC, DecodeRealExample) { EXPECT_EQ(kSamsungAcBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRSamsungAc samsung(0); - samsung.setRaw(irsend.capture.state); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: On, Mode: 1 (Cool), Temp: 16C, Fan: 2 (Low), Swing: On, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); + ac.toString()); } // Decode a real Samsung A/C example from Issue #505 @@ -857,20 +849,20 @@ TEST(TestDecodeSamsungAC, DecodeRealExample2) { EXPECT_EQ(kSamsungAcBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRSamsungAc samsung(0); - samsung.setRaw(irsend.capture.state); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 0 (Auto), Swing: Off, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); + ac.toString()); } // Decode a real Samsung A/C example from: // https://github.com/crankyoldgit/IRremoteESP8266/issues/505#issuecomment-424036602 TEST(TestDecodeSamsungAC, DecodePowerOnSample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -917,20 +909,20 @@ TEST(TestDecodeSamsungAC, DecodePowerOnSample) { EXPECT_EQ(kSamsungAcExtendedBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRSamsungAc samsung(0); - samsung.setRaw(irsend.capture.state, kSamsungAcExtendedStateLength); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(irsend.capture.state, kSamsungAcExtendedStateLength); EXPECT_EQ( "Power: On, Mode: 1 (Cool), Temp: 24C, Fan: 0 (Auto), Swing: Off, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); + ac.toString()); } // Decode a real Samsung A/C example from: // https://github.com/crankyoldgit/IRremoteESP8266/issues/505#issuecomment-424036602 TEST(TestDecodeSamsungAC, DecodePowerOffSample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -978,18 +970,18 @@ TEST(TestDecodeSamsungAC, DecodePowerOffSample) { EXPECT_EQ(kSamsungAcExtendedBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRSamsungAc samsung(0); - samsung.setRaw(irsend.capture.state, kSamsungAcExtendedStateLength); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(irsend.capture.state, kSamsungAcExtendedStateLength); EXPECT_EQ( "Power: Off, Mode: 1 (Cool), Temp: 24C, Fan: 0 (Auto), Swing: Off, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); + ac.toString()); } TEST(TestDecodeSamsungAC, DecodeHeatSample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1026,18 +1018,18 @@ TEST(TestDecodeSamsungAC, DecodeHeatSample) { EXPECT_EQ(kSamsungAcBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRSamsungAc samsung(0); - samsung.setRaw(irsend.capture.state); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(irsend.capture.state); EXPECT_EQ( "Power: On, Mode: 4 (Heat), Temp: 17C, Fan: 0 (Auto), Swing: On, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); + ac.toString()); } TEST(TestDecodeSamsungAC, DecodeCoolSample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1083,8 +1075,8 @@ TEST(TestDecodeSamsungAC, DecodeCoolSample) { } TEST(TestDecodeSamsungAC, Issue604DecodeExtended) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1132,17 +1124,17 @@ TEST(TestDecodeSamsungAC, Issue604DecodeExtended) { EXPECT_EQ(kSamsungAcExtendedBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRSamsungAc samsung(0); - samsung.setRaw(irsend.capture.state, irsend.capture.bits / 8); + IRSamsungAc ac(kGpioUnused); + ac.setRaw(irsend.capture.state, irsend.capture.bits / 8); EXPECT_EQ( "Power: Off, Mode: 4 (Heat), Temp: 30C, Fan: 0 (Auto), Swing: Off, " "Beep: Off, Clean: Off, Quiet: Off, Powerful: Off, Breeze: Off, " "Light: On, Ion: Off", - samsung.toString()); + ac.toString()); } TEST(TestSendSamsung36, SendDataOnly) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1183,7 +1175,7 @@ TEST(TestSamsung36, Housekeeping) { // Test sending with different repeats. TEST(TestSendSamsung36, SendWithRepeats) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1238,8 +1230,8 @@ TEST(TestSendSamsung36, SendWithRepeats) { } TEST(TestDecodeSamsung36, RealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1262,8 +1254,8 @@ TEST(TestDecodeSamsung36, RealExample) { } TEST(TestDecodeSamsung36, SyntheticExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1278,6 +1270,8 @@ TEST(TestDecodeSamsung36, SyntheticExample) { } // https://github.com/crankyoldgit/IRremoteESP8266/issues/604 +// This has been superceeded in a way by the ability to calculate extended msg +// checksums correctly. See #1484, #1538, & #1554 TEST(TestIRSamsungAcClass, Issue604SendPowerHack) { IRSamsungAc ac(0); ac.begin(); @@ -1285,7 +1279,7 @@ TEST(TestIRSamsungAcClass, Issue604SendPowerHack) { std::string freqduty = "f38000d50"; - std::string poweron = + std::string settings_section1 = "m690s17844" "m3086s8864" "m586s436m586s1432m586s436m586s436m586s436m586s436m586s436m586s436" @@ -1295,36 +1289,8 @@ TEST(TestIRSamsungAcClass, Issue604SendPowerHack) { "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" "m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432" - "m586s2886" - "m3086s8864" - "m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s1432m586s436m586s436m586s1432m586s436m586s1432m586s1432" - "m586s1432m586s1432m586s1432m586s1432m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s2886" - "m3086s8864" - "m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s1432m586s436m586s436m586s436m586s1432m586s1432m586s1432" - "m586s436m586s1432m586s1432m586s1432m586s1432m586s1432m586s1432m586s1432" - "m586s1432m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s1432" - "m586s1432m586s436m586s436m586s436m586s1432m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432" - "m586s100000"; - std::string settings = - "m690s17844" - "m3086s8864" - "m586s436m586s1432m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s1432m586s436m586s436m586s1432m586s436m586s436m586s1432" - "m586s1432m586s1432m586s1432m586s1432m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" - "m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432" - "m586s2886" + "m586s2886"; + std::string settings_section2 = "m3086s8864" "m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436" "m586s436m586s1432m586s436m586s436m586s1432m586s436m586s1432m586s1432" @@ -1334,6 +1300,16 @@ TEST(TestIRSamsungAcClass, Issue604SendPowerHack) { "m586s1432m586s436m586s436m586s1432m586s1432m586s436m586s436m586s436" "m586s436m586s436m586s436m586s436m586s1432m586s1432m586s1432m586s1432" "m586s100000"; + std::string extended_section = + "m3086s8864" + "m586s1432m586s436m586s436m586s436m586s436m586s436m586s436m586s436" + "m586s436m586s1432m586s436m586s436m586s1432m586s436m586s1432m586s1432" + "m586s1432m586s1432m586s1432m586s1432m586s436m586s436m586s436m586s436" + "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" + "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" + "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" + "m586s436m586s436m586s436m586s436m586s436m586s436m586s436m586s436" + "m586s2886"; std::string text = "Power: On, Mode: 1 (Cool), Temp: 23C, Fan: 4 (Med), " "Swing: On, Beep: Off, Clean: Off, Quiet: Off, " "Powerful: Off, Breeze: Off, Light: On, Ion: Off"; @@ -1344,33 +1320,38 @@ TEST(TestIRSamsungAcClass, Issue604SendPowerHack) { ac.setFan(kSamsungAcFanMed); ac.send(); EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + settings_section2, + ac._irsend.outputStr()); // Ensure the power state is changed by changing it and sending it. ac.off(); ac.send(); ac._irsend.reset(); // Clear the capture buffer. // Now trigger a special power message by using a power method. ac.on(); - ac.send(); // This should result in two messages. 1 x extended + 1 x normal. + ac.send(); // This should result in an extended message. EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + poweron + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + extended_section + settings_section2, + ac._irsend.outputStr()); ac._irsend.reset(); // Clear the capture buffer. // Subsequent sending should be just the "settings" message. ac.send(); EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + settings_section2, + ac._irsend.outputStr()); ac._irsend.reset(); // Clear the capture buffer. ac.setPower(true); // Note: The power state hasn't changed from previous. ac.send(); // This should result in a normal setting message. EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + settings_section2, + ac._irsend.outputStr()); ac._irsend.reset(); // Clear the capture buffer. ac.setPower(false); ac.setPower(true); // Note: The power state hasn't changed from the last sent ac.send(); // This should result in a normal setting message. EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + settings_section2, + ac._irsend.outputStr()); ac.stateReset(); // Normal `stateReset` defaults to send the power message // on first send. @@ -1380,11 +1361,13 @@ TEST(TestIRSamsungAcClass, Issue604SendPowerHack) { ac.setFan(kSamsungAcFanMed); ac.send(); EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + poweron + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + extended_section + settings_section2, + ac._irsend.outputStr()); ac._irsend.reset(); // Clear the capture buffer. ac.send(); // Subsequent send() should just be a settings message. EXPECT_EQ(text, ac.toString()); - EXPECT_EQ(freqduty + settings, ac._irsend.outputStr()); + EXPECT_EQ(freqduty + settings_section1 + settings_section2, + ac._irsend.outputStr()); } TEST(TestIRSamsungAcClass, toCommon) { @@ -1422,8 +1405,8 @@ TEST(TestIRSamsungAcClass, toCommon) { } TEST(TestDecodeSamsungAC, Issue734QuietSetting) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1494,8 +1477,8 @@ TEST(TestDecodeSamsungAC, Issue734QuietSetting) { } TEST(TestDecodeSamsungAC, Issue734PowerfulOff) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -1638,3 +1621,53 @@ TEST(TestDecodeSamsungAC, Issue1227VeryPoorSignal) { stdAc::state_t r, p; ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p)); } + +TEST(TestIRSamsungAcClass, SectionChecksums) { + // Normal (14 bytes) + const uint8_t on[14] = { + 0x02, 0x82, 0x0F, 0x00, 0x00, 0x20, 0xF0, + 0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0}; + EXPECT_EQ(0xF8, IRSamsungAc::calcSectionChecksum(on)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(on), + IRSamsungAc::calcSectionChecksum(on)); + EXPECT_EQ(0xEF, IRSamsungAc::calcSectionChecksum(on + 7)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(on + 7), + IRSamsungAc::calcSectionChecksum(on + 7)); + const uint8_t off[14] = { + 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, + 0x01, 0xF2, 0xFE, 0x71, 0x00, 0x11, 0xF0}; + EXPECT_EQ(0xF9, IRSamsungAc::calcSectionChecksum(off)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(off), + IRSamsungAc::calcSectionChecksum(off)); + EXPECT_EQ(0xEF, IRSamsungAc::calcSectionChecksum(off + 7)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(off + 7), + IRSamsungAc::calcSectionChecksum(off + 7)); + + // Extended (21 bytes) + const uint8_t extended_on[kSamsungAcExtendedStateLength] = { + 0x02, 0x92, 0x0F, 0x00, 0x00, 0x00, 0xF0, + 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xE2, 0xFE, 0x71, 0x80, 0x11, 0xF0}; + EXPECT_EQ(0xF9, IRSamsungAc::calcSectionChecksum(extended_on)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(extended_on), + IRSamsungAc::calcSectionChecksum(extended_on)); + EXPECT_EQ(0xFD, IRSamsungAc::calcSectionChecksum(extended_on + 7)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(extended_on + 7), + IRSamsungAc::calcSectionChecksum(extended_on + 7)); + EXPECT_EQ(0xEE, IRSamsungAc::calcSectionChecksum(extended_on + 14)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(extended_on + 14), + IRSamsungAc::calcSectionChecksum(extended_on + 14)); + const uint8_t extended_off[kSamsungAcExtendedStateLength] = { + 0x02, 0xB2, 0x0F, 0x00, 0x00, 0x00, 0xC0, + 0x01, 0xD2, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x02, 0xFF, 0x71, 0x80, 0x11, 0xC0}; + EXPECT_EQ(0xFB, IRSamsungAc::calcSectionChecksum(extended_off)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(extended_off), + IRSamsungAc::calcSectionChecksum(extended_off)); + EXPECT_EQ(0xFD, IRSamsungAc::calcSectionChecksum(extended_off + 7)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(extended_off + 7), + IRSamsungAc::calcSectionChecksum(extended_off + 7)); + EXPECT_EQ(0xF0, IRSamsungAc::calcSectionChecksum(extended_off + 14)); + EXPECT_EQ(IRSamsungAc::getSectionChecksum(extended_off + 14), + IRSamsungAc::calcSectionChecksum(extended_off + 14)); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Sanyo_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Sanyo_test.cpp index c494e87d8..6378e7679 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Sanyo_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Sanyo_test.cpp @@ -1,4 +1,4 @@ -// Copyright 2017-2020 David Conran +// Copyright 2017-2021 David Conran #include "ir_Sanyo.h" #include "IRac.h" @@ -11,7 +11,7 @@ // Tests for encodeSanyoLC7461(). TEST(TestEncodeSanyoLC7461, NormalEncoding) { - IRsendTest irsend(4); + IRsendTest irsend(kGpioUnused); EXPECT_EQ(0x1FFF00FF, irsend.encodeSanyoLC7461(0, 0)); EXPECT_EQ(0x3FFE01FE, irsend.encodeSanyoLC7461(1, 1)); EXPECT_EQ(0x3FFE02FD, irsend.encodeSanyoLC7461(1, 2)); @@ -25,7 +25,7 @@ TEST(TestEncodeSanyoLC7461, NormalEncoding) { // Test sending typical data only. TEST(TestEncodeSanyoLC7461, SendDataOnly) { - IRsendTest irsend(4); + IRsendTest irsend(kGpioUnused); irsend.begin(); irsend.reset(); @@ -44,7 +44,7 @@ TEST(TestEncodeSanyoLC7461, SendDataOnly) { // Test sending with different repeats. TEST(TestEncodeSanyoLC7461, SendWithRepeats) { - IRsendTest irsend(4); + IRsendTest irsend(kGpioUnused); irsend.begin(); irsend.reset(); @@ -66,8 +66,8 @@ TEST(TestEncodeSanyoLC7461, SendWithRepeats) { // Decode normal Sanyo LC7461 messages. TEST(TestDecodeSanyoLC7461, NormalDecodeWithStrict) { - IRsendTest irsend(4); - IRrecv irrecv(4); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); // Normal Sanyo LC7461 42-bit message. @@ -115,8 +115,8 @@ TEST(TestDecodeSanyoLC7461, NormalDecodeWithStrict) { // Decode normal repeated Sanyo LC7461 messages. TEST(TestDecodeSanyoLC7461, NormalDecodeWithRepeatAndStrict) { - IRsendTest irsend(4); - IRrecv irrecv(4); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); // Normal Sanyo LC7461 16-bit message with 1 repeat. @@ -136,8 +136,8 @@ TEST(TestDecodeSanyoLC7461, NormalDecodeWithRepeatAndStrict) { // Decode unsupported Sanyo LC7461 messages. TEST(TestDecodeSanyoLC7461, DecodeWithNonStrictValues) { - IRsendTest irsend(4); - IRrecv irrecv(4); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -191,8 +191,8 @@ TEST(TestDecodeSanyoLC7461, DecodeWithNonStrictValues) { // Decode (non-standard) 64-bit messages. TEST(TestDecodeSanyoLC7461, Decode64BitMessages) { - IRsendTest irsend(4); - IRrecv irrecv(4); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -211,8 +211,8 @@ TEST(TestDecodeSanyoLC7461, Decode64BitMessages) { // Decode a 'real' example via GlobalCache TEST(TestDecodeSanyoLC7461, DecodeGlobalCacheExample) { - IRsendTest irsend(4); - IRrecv irrecv(4); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -243,8 +243,8 @@ TEST(TestDecodeSanyoLC7461, DecodeGlobalCacheExample) { // Fail to decode a non-Sanyo LC7461 example via GlobalCache TEST(TestDecodeSanyoLC7461, FailToDecodeNonSanyoLC7461Example) { - IRsendTest irsend(4); - IRrecv irrecv(4); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -277,6 +277,13 @@ TEST(TestUtils, Housekeeping) { ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::SANYO_AC)); ASSERT_EQ(kSanyoAcBits, IRsend::defaultBits(decode_type_t::SANYO_AC)); ASSERT_EQ(kNoRepeat, IRsend::minRepeats(decode_type_t::SANYO_AC)); + // Sanyo A/C 88 Bit. + ASSERT_EQ("SANYO_AC88", typeToString(decode_type_t::SANYO_AC88)); + ASSERT_EQ(decode_type_t::SANYO_AC88, strToDecodeType("SANYO_AC88")); + ASSERT_TRUE(hasACState(decode_type_t::SANYO_AC88)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::SANYO_AC88)); + ASSERT_EQ(kSanyoAc88Bits, IRsend::defaultBits(decode_type_t::SANYO_AC88)); + ASSERT_EQ(kSanyoAc88MinRepeat, IRsend::minRepeats(decode_type_t::SANYO_AC88)); } TEST(TestDecodeSanyoAc, DecodeRealExamples) { @@ -530,3 +537,286 @@ TEST(TestSanyoAcClass, Beep) { ac.setRaw(beep_on); EXPECT_TRUE(ac.getBeep()); } + +TEST(TestDecodeSanyoAc88, DecodeRealExamples) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + // Ref: "On" from https://github.com/crankyoldgit/IRremoteESP8266/issues/1503#issuecomment-868450739 + const uint16_t rawData[539] = {5374, 1972, 512, 762, 522, 1510, 498, 780, 578, + 1486, 462, 790, 462, 1550, 544, 708, 510, 1500, 544, 1470, 516, 762, 482, + 770, 516, 1496, 518, 1510, 498, 780, 468, 1544, 466, 786, 466, 786, 466, + 786, 466, 786, 486, 748, 526, 756, 506, 1520, 516, 764, 516, 1492, 518, + 762, 544, 708, 548, 704, 602, 1434, 556, 1456, 524, 726, 552, 700, 554, + 698, 648, 1438, 548, 684, 536, 1478, 568, 682, 568, 682, 578, 702, 568, + 684, 570, 712, 624, 724, 528, 1482, 528, 726, 528, 1482, 526, 724, 546, + 1524, 568, 682, 540, 710, 544, 734, 542, 1516, 492, 762, 488, 744, 546, + 1482, 492, 788, 544, 734, 494, 758, 492, 760, 490, 744, 548, 828, 494, + 760, 494, 758, 494, 758, 494, 786, 492, 760, 494, 758, 494, 742, 508, 746, + 508, 788, 492, 760, 494, 786, 494, 786, 494, 742, 508, 744, 508, 788, 570, + 760, 494, 784, 494, 788, 568, 786, 492, 744, 508, 772, 608, 768, 538, 714, + 490, 786, 628, 728, 494, 786, 494, 758, 494, 742, 508, 1390, 494, 3692, + 5394, 1960, 494, 784, 494, 1516, 494, 760, 494, 1516, 494, 760, 492, 1516, + 494, 760, 492, 1518, 524, 1486, 494, 790, 486, 764, 492, 1524, 538, 1472, + 540, 740, 538, 1546, 546, 728, 524, 726, 526, 728, 524, 728, 526, 728, + 524, 728, 524, 1486, 526, 726, 546, 1464, 550, 702, 550, 728, 552, 702, + 550, 1460, 550, 1460, 550, 702, 552, 728, 550, 702, 550, 1460, 550, 728, + 550, 1464, 548, 704, 546, 704, 548, 732, 546, 704, 548, 704, 548, 730, + 548, 1462, 548, 706, 518, 1492, 546, 706, 518, 1490, 546, 706, 520, 732, + 520, 732, 522, 1492, 518, 760, 518, 732, 546, 1468, 516, 736, 516, 732, + 520, 732, 520, 758, 520, 818, 478, 772, 480, 802, 454, 894, 520, 734, 518, + 734, 518, 760, 518, 734, 518, 734, 518, 718, 506, 746, 480, 818, 488, 790, + 490, 744, 508, 790, 490, 744, 510, 770, 508, 788, 490, 762, 544, 788, 490, + 788, 462, 818, 566, 788, 490, 744, 480, 770, 456, 794, 458, 894, 492, 762, + 492, 760, 490, 744, 508, 1390, 492, 3664, + 5398, 1960, 490, 746, 476, 1552, 492, 742, 508, 1504, 508, 746, 504, 1522, + 494, 786, 492, 1516, 494, 1516, 494, 760, 492, 786, 494, 1520, 490, 1520, + 458, 822, 458, 1554, 510, 788, 494, 784, 494, 760, 492, 742, 508, 770, + 512, 786, 492, 1516, 520, 760, 520, 1488, 520, 734, 520, 760, 518, 734, + 520, 1490, 520, 1494, 516, 734, 518, 732, 520, 762, 516, 762, 488, 1522, + 458, 1554, 506, 774, 506, 744, 508, 774, 508, 770, 510, 742, 506, 746, + 540, 1472, 506, 744, 508, 1522, 488, 764, 488, 1504, 538, 758, 520, 734, + 520, 760, 520, 1490, 518, 734, 520, 734, 520, 1490, 520, 760, 518, 760, + 538, 770, 488, 764, 516, 734, 518, 734, 518, 818, 476, 802, 476, 774, 478, + 904, 538, 734, 520, 762, 516, 818, 510, 748, 476, 772, 458, 794, 458, 792, + 516, 736, 516, 736, 516, 736, 516, 738, 514, 762, 516, 764, 514, 738, 516, + 738, 538, 766, 516, 738, 514, 738, 514, 766, 512, 794, 486, 768, 486, 794, + 486, 766, 512, 738, 488, 1398, 504}; // UNKNOWN ABF4C698 + + const uint8_t expectedState[kSanyoAc88StateLength] = { + 0xAA, 0x59, 0xA0, 0x18, 0x06, 0x2A, 0x12, 0x00, 0x00, 0x00, 0x80}; + irsend.begin(); + irsend.reset(); + irsend.sendRaw(rawData, 539, 38000); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(SANYO_AC88, irsend.capture.decode_type); + EXPECT_EQ(kSanyoAc88Bits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); + EXPECT_FALSE(irsend.capture.repeat); + EXPECT_EQ( + "Power: On, Mode: 2 (Cool), Temp: 24C, Fan: 0 (Auto), Swing(V): Off, " + "Turbo: Off, Sleep: Off, Clock: 18:42", + IRAcUtils::resultAcToString(&irsend.capture)); +} + +TEST(TestDecodeSanyoAc88, SyntheticSelfDecode) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + const uint8_t expectedState[kSanyoAc88StateLength] = { + 0xAA, 0x59, 0xA0, 0x18, 0x06, 0x2A, 0x12, 0x00, 0x00, 0x00, 0x80}; + irsend.begin(); + irsend.reset(); + irsend.sendSanyoAc88(expectedState); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(SANYO_AC88, irsend.capture.decode_type); + EXPECT_EQ(kSanyoAc88Bits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); + EXPECT_FALSE(irsend.capture.repeat); + EXPECT_EQ( + "Power: On, Mode: 2 (Cool), Temp: 24C, Fan: 0 (Auto), Swing(V): Off, " + "Turbo: Off, Sleep: Off, Clock: 18:42", + IRAcUtils::resultAcToString(&irsend.capture)); + EXPECT_EQ( + "f38000d50" + "m5400s2000" + "m500s750m500s1500m500s750m500s1500m500s750m500s1500m500s750m500s1500" + "m500s1500m500s750m500s750m500s1500m500s1500m500s750m500s1500m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s1500m500s750m500s1500" + "m500s750m500s750m500s750m500s1500m500s1500m500s750m500s750m500s750" + "m500s750m500s1500m500s1500m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s1500m500s750m500s1500m500s750m500s1500m500s750m500s750" + "m500s750m500s1500m500s750m500s750m500s1500m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s1500" + "m500s3675" + "m5400s2000" + "m500s750m500s1500m500s750m500s1500m500s750m500s1500m500s750m500s1500" + "m500s1500m500s750m500s750m500s1500m500s1500m500s750m500s1500m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s1500m500s750m500s1500" + "m500s750m500s750m500s750m500s1500m500s1500m500s750m500s750m500s750" + "m500s750m500s1500m500s1500m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s1500m500s750m500s1500m500s750m500s1500m500s750m500s750" + "m500s750m500s1500m500s750m500s750m500s1500m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s1500" + "m500s3675" + "m5400s2000" + "m500s750m500s1500m500s750m500s1500m500s750m500s1500m500s750m500s1500" + "m500s1500m500s750m500s750m500s1500m500s1500m500s750m500s1500m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s1500m500s750m500s1500" + "m500s750m500s750m500s750m500s1500m500s1500m500s750m500s750m500s750" + "m500s750m500s1500m500s1500m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s1500m500s750m500s1500m500s750m500s1500m500s750m500s750" + "m500s750m500s1500m500s750m500s750m500s1500m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s750" + "m500s750m500s750m500s750m500s750m500s750m500s750m500s750m500s1500" + "m500s103675", + irsend.outputStr()); +} + +// Tests for IRSanyoAc88 class. + +TEST(TestSanyoAc88Class, Power) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.on(); + EXPECT_TRUE(ac.getPower()); + + ac.off(); + EXPECT_FALSE(ac.getPower()); + + ac.setPower(true); + EXPECT_TRUE(ac.getPower()); + + ac.setPower(false); + EXPECT_FALSE(ac.getPower()); +} + +TEST(TestSanyoAc88Class, FanSpeed) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setFan(kSanyoAc88FanAuto); + EXPECT_EQ(kSanyoAc88FanAuto, ac.getFan()); + + ac.setFan(kSanyoAc88FanHigh); + EXPECT_EQ(kSanyoAc88FanHigh, ac.getFan()); + + ac.setFan(kSanyoAc88FanLow); + EXPECT_EQ(kSanyoAc88FanLow, ac.getFan()); + + ac.setFan(kSanyoAc88FanMedium); + EXPECT_EQ(kSanyoAc88FanMedium, ac.getFan()); +} + +TEST(TestSanyoAc88Class, Sleep) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setSleep(true); + EXPECT_TRUE(ac.getSleep()); + ac.setSleep(false); + EXPECT_FALSE(ac.getSleep()); + ac.setSleep(true); + EXPECT_TRUE(ac.getSleep()); +} + +TEST(TestSanyoAc88Class, SwingV) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setSwingV(true); + EXPECT_TRUE(ac.getSwingV()); + ac.setSwingV(false); + EXPECT_FALSE(ac.getSwingV()); + ac.setSwingV(true); + EXPECT_TRUE(ac.getSwingV()); +} + +TEST(TestSanyoAc88Class, Filter) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setFilter(true); + EXPECT_TRUE(ac.getFilter()); + ac.setFilter(false); + EXPECT_FALSE(ac.getFilter()); + ac.setFilter(true); + EXPECT_TRUE(ac.getFilter()); +} + +TEST(TestSanyoAc88Class, Turbo) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setTurbo(true); + EXPECT_TRUE(ac.getTurbo()); + ac.setTurbo(false); + EXPECT_FALSE(ac.getTurbo()); + ac.setTurbo(true); + EXPECT_TRUE(ac.getTurbo()); +} + +TEST(TestSanyoAc88Class, Temperature) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setTemp(0); + EXPECT_EQ(kSanyoAc88TempMin, ac.getTemp()); + + ac.setTemp(255); + EXPECT_EQ(kSanyoAc88TempMax, ac.getTemp()); + + ac.setTemp(kSanyoAc88TempMin); + EXPECT_EQ(kSanyoAc88TempMin, ac.getTemp()); + + ac.setTemp(kSanyoAc88TempMax); + EXPECT_EQ(kSanyoAc88TempMax, ac.getTemp()); + + ac.setTemp(kSanyoAc88TempMin - 1); + EXPECT_EQ(kSanyoAc88TempMin, ac.getTemp()); + + ac.setTemp(kSanyoAc88TempMax + 1); + EXPECT_EQ(kSanyoAc88TempMax, ac.getTemp()); + + ac.setTemp(17); + EXPECT_EQ(17, ac.getTemp()); + + ac.setTemp(21); + EXPECT_EQ(21, ac.getTemp()); + + ac.setTemp(25); + EXPECT_EQ(25, ac.getTemp()); +} + +TEST(TestSanyoAc88Class, OperatingMode) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + ac.setMode(kSanyoAc88Auto); + EXPECT_EQ(kSanyoAc88Auto, ac.getMode()); + + ac.setMode(kSanyoAc88Cool); + EXPECT_EQ(kSanyoAc88Cool, ac.getMode()); + + ac.setMode(kSanyoAc88Heat); + EXPECT_EQ(kSanyoAc88Heat, ac.getMode()); + + ac.setMode(kSanyoAc88Fan); + EXPECT_EQ(kSanyoAc88Fan, ac.getMode()); + + ac.setMode(kSanyoAc88Fan + 1); + EXPECT_EQ(kSanyoAc88Auto, ac.getMode()); + + ac.setMode(0); + EXPECT_EQ(kSanyoAc88Auto, ac.getMode()); + + ac.setMode(255); + EXPECT_EQ(kSanyoAc88Auto, ac.getMode()); +} + +TEST(TestSanyoAc88Class, Clock) { + IRSanyoAc88 ac(kGpioUnused); + ac.begin(); + + EXPECT_EQ(0, ac.getClock()); + + ac.setClock(21 * 60 + 19); + EXPECT_EQ(21 * 60 + 19, ac.getClock()); + + ac.setClock(0); + EXPECT_EQ(0, ac.getClock()); + + ac.setClock(25 * 60 + 61); + EXPECT_EQ(23 * 60 + 59, ac.getClock()); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Tcl_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Tcl_test.cpp index 99a9e7de7..da3fefc8c 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Tcl_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Tcl_test.cpp @@ -1,6 +1,7 @@ // Copyright 2019 David Conran #include "ir_Tcl.h" +#include "IRac.h" #include "IRrecv.h" #include "IRrecv_test.h" #include "IRsend.h" @@ -17,8 +18,8 @@ TEST(TestTcl112Ac, Housekeeping) { // Decode a real Tcl112Ac A/C example from Issue #619 TEST(TestDecodeTcl112Ac, DecodeRealExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -61,19 +62,17 @@ TEST(TestDecodeTcl112Ac, DecodeRealExample) { ASSERT_EQ(TCL112AC, irsend.capture.decode_type); EXPECT_EQ(kTcl112AcBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - - IRTcl112Ac ac(0); - ac.setRaw(irsend.capture.state); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 24C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", - ac.toString()); + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 24C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", + IRAcUtils::resultAcToString(&irsend.capture)); } // Decode a synthetic Tcl112Ac A/C example from Issue #619 TEST(TestDecodeTcl112Ac, DecodeSyntheticExample) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -104,26 +103,30 @@ TEST(TestTcl112AcClass, Temperature) { const uint8_t temp31C[kTcl112AcStateLength] = { 0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBC}; - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.setRaw(temp16C); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); ac.setRaw(temp16point5C); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 16.5C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 16.5C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); ac.setRaw(temp19point5C); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 19.5C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 19.5C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); ac.setRaw(temp31C); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 31C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 31C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); ac.setTemp(kTcl112AcTempMin); @@ -161,7 +164,7 @@ TEST(TestTcl112AcClass, Temperature) { } TEST(TestTcl112AcClass, OperatingMode) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setMode(kTcl112AcAuto); @@ -203,13 +206,14 @@ TEST(TestTcl112AcClass, OperatingMode) { 0x07, 0x00, 0x00, 0x00, 0x00, 0x80, 0x48}; ac.setRaw(automode); EXPECT_EQ( - "Power: On, Mode: 8 (Auto), Temp: 24C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 8 (Auto), Temp: 24C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); } TEST(TestTcl112AcClass, Power) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setPower(true); @@ -232,8 +236,9 @@ TEST(TestTcl112AcClass, Power) { 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xCB}; ac.setRaw(on); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); const uint8_t off[kTcl112AcStateLength] = { @@ -241,8 +246,9 @@ TEST(TestTcl112AcClass, Power) { 0x07, 0x40, 0x00, 0x00, 0x00, 0x80, 0xCB}; ac.setRaw(off); EXPECT_EQ( - "Power: Off, Mode: 3 (Cool), Temp: 24C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: Off, Mode: 3 (Cool), Temp: 24C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); } @@ -253,17 +259,19 @@ TEST(TestTcl112AcClass, Checksum) { uint8_t temp31C[kTcl112AcStateLength] = { 0x23, 0xCB, 0x26, 0x01, 0x00, 0x24, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBC}; - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); EXPECT_EQ(0xCB, ac.calcChecksum(temp16C)); ac.setRaw(temp16C); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 16C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); ac.setRaw(temp31C); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 31C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 31C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); EXPECT_EQ(0xBC, ac.calcChecksum(temp31C)); @@ -278,7 +286,7 @@ TEST(TestTcl112AcClass, Checksum) { } TEST(TestTcl112AcClass, Econo) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setEcono(true); @@ -290,7 +298,7 @@ TEST(TestTcl112AcClass, Econo) { } TEST(TestTcl112AcClass, Health) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setHealth(true); @@ -302,7 +310,7 @@ TEST(TestTcl112AcClass, Health) { } TEST(TestTcl112AcClass, Light) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setLight(true); @@ -314,7 +322,7 @@ TEST(TestTcl112AcClass, Light) { } TEST(TestTcl112AcClass, SwingHorizontal) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setSwingHorizontal(true); @@ -326,7 +334,7 @@ TEST(TestTcl112AcClass, SwingHorizontal) { } TEST(TestTcl112AcClass, SwingVertical) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setSwingVertical(true); @@ -338,7 +346,7 @@ TEST(TestTcl112AcClass, SwingVertical) { } TEST(TestTcl112AcClass, Turbo) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); ac.setFan(kTcl112AcFanLow); @@ -361,7 +369,7 @@ TEST(TestTcl112AcClass, Turbo) { } TEST(TestTcl112AcClass, FanSpeed) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.begin(); // Unexpected value should default to Auto. @@ -382,9 +390,21 @@ TEST(TestTcl112AcClass, FanSpeed) { EXPECT_EQ(kTcl112AcFanAuto, ac.getFan()); } +TEST(TestTcl112AcClass, Quiet_Mute) { + IRTcl112Ac ac(kGpioUnused); + ac.begin(); + + EXPECT_FALSE(ac.getQuiet()); + EXPECT_FALSE(ac.getQuiet(false)); + EXPECT_TRUE(ac.getQuiet(true)); + ac.setQuiet(true); + EXPECT_TRUE(ac.getQuiet()); + ac.setQuiet(false); + EXPECT_FALSE(ac.getQuiet()); +} TEST(TestTcl112AcClass, toCommon) { - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.setPower(true); ac.setMode(kTcl112AcCool); ac.setTemp(20); @@ -395,6 +415,7 @@ TEST(TestTcl112AcClass, toCommon) { ac.setHealth(true); ac.setEcono(true); ac.setLight(true); + ac.setQuiet(false); // Now test it. ASSERT_EQ(decode_type_t::TCL112AC, ac.toCommon().protocol); ASSERT_EQ(-1, ac.toCommon().model); @@ -409,17 +430,25 @@ TEST(TestTcl112AcClass, toCommon) { ASSERT_TRUE(ac.toCommon().econo); ASSERT_TRUE(ac.toCommon().light); ASSERT_TRUE(ac.toCommon().filter); + ASSERT_FALSE(ac.toCommon().quiet); // Unsupported. ASSERT_FALSE(ac.toCommon().clean); ASSERT_FALSE(ac.toCommon().beep); - ASSERT_FALSE(ac.toCommon().quiet); ASSERT_EQ(-1, ac.toCommon().sleep); ASSERT_EQ(-1, ac.toCommon().clock); + + // Tests for the quiet setting. + stdAc::state_t prev = ac.toCommon(); + prev.quiet = true; + ASSERT_FALSE(ac.toCommon(&prev).quiet); + ac.stateReset(); + // If the current quiet setting hasn't been explicitly set, use the previous. + ASSERT_TRUE(ac.toCommon(&prev).quiet); } TEST(TestDecodeTcl112Ac, Issue744) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); irsend.reset(); @@ -453,10 +482,93 @@ TEST(TestDecodeTcl112Ac, Issue744) { EXPECT_EQ(kTcl112AcBits, irsend.capture.bits); EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); - IRTcl112Ac ac(0); + IRTcl112Ac ac(kGpioUnused); ac.setRaw(irsend.capture.state); EXPECT_EQ( - "Power: On, Mode: 3 (Cool), Temp: 23C, Fan: 0 (Auto), Econo: Off, " - "Health: Off, Light: On, Turbo: Off, Swing(H): Off, Swing(V): Off", + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 23C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: On", ac.toString()); } + +TEST(TestDecodeTcl112Ac, Issue1528) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + + irsend.reset(); + const uint16_t rawData[227] = { + 3040, 1632, 500, 1084, 502, 1084, 500, 318, 474, 344, 474, 344, 472, 1110, + 474, 344, 474, 344, 472, 1110, 474, 1110, 474, 344, 472, 1112, 474, 344, + 472, 346, 470, 1112, 472, 1112, 472, 346, 470, 1114, 470, 1114, 470, 348, + 468, 348, 468, 1116, 470, 348, 468, 350, 464, 354, 424, 1158, 426, 392, + 424, 394, 424, 394, 424, 392, 424, 392, 424, 394, 424, 392, 424, 392, 424, + 394, 424, 392, 424, 392, 424, 394, 424, 392, 460, 358, 460, 358, 458, 358, + 458, 358, 460, 358, 460, 358, 460, 1124, 460, 1124, 460, 358, 460, 358, + 458, 358, 458, 360, 482, 334, 484, 334, 484, 334, 484, 334, 484, 334, 484, + 334, 484, 334, 486, 332, 484, 334, 484, 332, 484, 334, 484, 332, 484, 334, + 484, 332, 484, 332, 484, 332, 486, 332, 484, 332, 484, 334, 484, 334, 484, + 332, 484, 334, 484, 334, 484, 332, 484, 332, 486, 332, 484, 334, 484, 334, + 484, 334, 484, 334, 484, 334, 484, 334, 484, 334, 484, 334, 482, 334, 482, + 334, 482, 336, 482, 336, 482, 336, 482, 336, 482, 336, 482, 336, 482, 336, + 482, 336, 480, 336, 480, 338, 480, 338, 480, 338, 480, 336, 480, 338, 480, + 338, 480, 338, 480, 338, 478, 1104, 478, 340, 478, 1104, 480, 338, 478, + 340, 478, 340, 476, 340, 476, 1106, 478}; // UNKNOWN 2757C6B2 + + uint8_t expectedState[kTcl112AcStateLength] = { + 0x23, 0xCB, 0x26, 0x02, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85}; + + irsend.sendRaw(rawData, 227, 38000); + irsend.makeDecodeResult(); + + ASSERT_TRUE(irrecv.decode(&irsend.capture)); + ASSERT_EQ(TCL112AC, irsend.capture.decode_type); + EXPECT_EQ(kTcl112AcBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Type: 2, Quiet: On", + IRAcUtils::resultAcToString(&irsend.capture)); +} + +// Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1528#issuecomment-877640837 +TEST(TestTcl112AcClass, SendingQuiet) { + IRTcl112Ac ac(kGpioUnused); + IRrecv capture(kGpioUnused); + + + ac.begin(); + ac.on(); + ac.setTemp(24); + ac.setLight(false); + ac.setSwingHorizontal(true); + ac.send(); + ac.setSwingHorizontal(false); + EXPECT_FALSE(ac.getQuiet()); + ac.send(); + ac._irsend.reset(); + ac.setQuiet(true); + EXPECT_TRUE(ac.getQuiet()); + ac.send(); + EXPECT_TRUE(ac.getQuiet()); + ac._irsend.makeDecodeResult(); + // We are expecting two messages, confirm we got at least that much data. + EXPECT_EQ(1 + 228 + 228, ac._irsend.capture.rawlen); + // First message. + EXPECT_TRUE(capture.decode(&ac._irsend.capture)); + ASSERT_EQ(TCL112AC, ac._irsend.capture.decode_type); + ASSERT_EQ(kTcl112AcBits, ac._irsend.capture.bits); + ASSERT_EQ( + "Type: 2, Quiet: On", + IRAcUtils::resultAcToString(&ac._irsend.capture)); + // Second message. + // TCL112 uses the Mitsubishi112 decoder. + // Skip first message. + EXPECT_TRUE(capture.decodeMitsubishi112(&ac._irsend.capture, 229)); + ASSERT_EQ(TCL112AC, ac._irsend.capture.decode_type); + ASSERT_EQ(kTcl112AcBits, ac._irsend.capture.bits); + ASSERT_EQ( + "Type: 1, Power: On, Mode: 3 (Cool), Temp: 24C, Fan: 0 (Auto), " + "Econo: Off, Health: Off, Turbo: Off, Swing(H): Off, Swing(V): Off, " + "Light: Off", IRAcUtils::resultAcToString(&ac._irsend.capture)); +} diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Trotec_test.cpp b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Trotec_test.cpp index 4e8d639fe..b6658f3f5 100644 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Trotec_test.cpp +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/test/ir_Trotec_test.cpp @@ -9,7 +9,7 @@ TEST(TestTrotecESPClass, toCommon) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setPower(true); ac.setMode(kTrotecCool); ac.setTemp(20); @@ -38,7 +38,7 @@ TEST(TestTrotecESPClass, toCommon) { } TEST(TestTrotecESPClass, MessageConstructon) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setPower(true); ac.setTemp(20); ac.setMode(kTrotecCool); @@ -57,7 +57,7 @@ TEST(TestTrotecESPClass, MessageConstructon) { // Test sending typical data only. TEST(TestSendTrotec, SendDataOnly) { - IRsendTest irsend(0); + IRsendTest irsend(kGpioUnused); irsend.begin(); uint8_t data[kTrotecStateLength] = { 0x12, 0x34, 0x29, 0x82, 0x00, 0x00, 0x00, 0x00, 0xAB}; @@ -84,8 +84,8 @@ TEST(TestSendTrotec, SendDataOnly) { // Decode normal Trotec messages. TEST(TestDecodeTrotec, SyntheticDecode) { - IRsendTest irsend(0); - IRrecv irrecv(0); + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); irsend.begin(); // Synthesised Normal Trotec message. @@ -105,9 +105,8 @@ TEST(TestDecodeTrotec, SyntheticDecode) { ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p)); } - TEST(TestTrotecESPClass, SetAndGetTemp) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setTemp(25); EXPECT_EQ(25, ac.getTemp()); @@ -122,7 +121,7 @@ TEST(TestTrotecESPClass, SetAndGetTemp) { } TEST(TestTrotecESPClass, SetAndGetMode) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setMode(kTrotecFan); EXPECT_EQ(kTrotecFan, ac.getMode()); @@ -137,7 +136,7 @@ TEST(TestTrotecESPClass, SetAndGetMode) { } TEST(TestTrotecESPClass, SetAndGetFan) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setSpeed(kTrotecFanHigh); EXPECT_EQ(kTrotecFanHigh, ac.getSpeed()); @@ -154,7 +153,7 @@ TEST(TestTrotecESPClass, SetAndGetFan) { } TEST(TestTrotecESPClass, Sleep) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setSleep(false); ASSERT_FALSE(ac.getSleep()); ac.setSleep(true); @@ -164,7 +163,7 @@ TEST(TestTrotecESPClass, Sleep) { } TEST(TestTrotecESPClass, Power) { - IRTrotecESP ac(0); + IRTrotecESP ac(kGpioUnused); ac.setPower(false); ASSERT_FALSE(ac.getPower()); ac.setPower(true); @@ -178,4 +177,275 @@ TEST(TestUtils, Housekeeping) { ASSERT_EQ(decode_type_t::TROTEC, strToDecodeType("TROTEC")); ASSERT_TRUE(hasACState(decode_type_t::TROTEC)); ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::TROTEC)); + + ASSERT_EQ("TROTEC_3550", typeToString(decode_type_t::TROTEC_3550)); + ASSERT_EQ(decode_type_t::TROTEC_3550, strToDecodeType("TROTEC_3550")); + ASSERT_TRUE(hasACState(decode_type_t::TROTEC_3550)); + ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::TROTEC_3550)); +} + +TEST(TestDecodeTrotec3550, RealDecode) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + + // Data from: + // https://docs.google.com/spreadsheets/d/1j4H1TDJ2QRFLPnls_sxkTZ3c9922TWxqIxwyGWwBIn0/edit#gid=2015400244&range=F8:EV8 + const uint16_t rawData[147] = { + 12005, 5130, + 545, 500, 600, 1950, 540, 500, 595, 1950, 545, 500, 595, 1950, 545, 500, + 595, 1950, 550, 495, 545, 495, 595, 1950, 545, 500, 545, 500, 540, 500, + 600, 1950, 590, 1950, 545, 500, 540, 500, 545, 500, 545, 495, 545, 500, + 545, 500, 545, 500, 540, 500, 545, 495, 545, 500, 545, 500, 545, 500, + 540, 500, 595, 1950, 520, 520, 595, 1950, 545, 500, 540, 500, 545, 525, + 515, 500, 545, 520, 520, 525, 520, 500, 540, 525, 520, 500, 540, 500, + 545, 500, 540, 500, 545, 520, 525, 495, 520, 520, 545, 500, 570, 475, + 540, 505, 590, 1950, 595, 1950, 545, 500, 540, 500, 570, 470, 595, 1950, + 570, 1975, 545, 500, 545, 500, 545, 520, 570, 1950, 550, 495, 545, 500, + 545, 495, 570, 470, 550, 495, 595, 1950, 570, 1975, 545, 525, 570, 1950, + 595, 1950, 565, 475, 545}; + const uint8_t expectedState[kTrotecStateLength] = { + 0x55, 0x23, 0x00, 0x05, 0x00, 0x00, 0x31, 0x88, 0x36}; + irsend.reset(); + irsend.sendRaw(rawData, 147, 38000); + irsend.makeDecodeResult(); + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::TROTEC_3550, irsend.capture.decode_type); + EXPECT_EQ(kTrotecBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Mode: 1 (Cool), Temp: 18C, Fan: 3 (High), Swing(V): On, " + "Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p)); +} + +TEST(TestDecodeTrotec3550, SyntheticDecode) { + IRsendTest irsend(kGpioUnused); + IRrecv irrecv(kGpioUnused); + irsend.begin(); + + // Synthesised Normal Trotec message. + irsend.reset(); + const uint8_t expectedState[kTrotecStateLength] = { + 0x55, 0x23, 0x00, 0x05, 0x00, 0x00, 0x31, 0x88, 0x36}; + irsend.sendTrotec3550(expectedState); + irsend.makeDecodeResult(); + EXPECT_TRUE(irrecv.decode(&irsend.capture)); + EXPECT_EQ(decode_type_t::TROTEC_3550, irsend.capture.decode_type); + EXPECT_EQ(kTrotecBits, irsend.capture.bits); + EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits); + EXPECT_EQ( + "Power: On, Mode: 1 (Cool), Temp: 18C, Fan: 3 (High), Swing(V): On, " + "Timer: Off", + IRAcUtils::resultAcToString(&irsend.capture)); + stdAc::state_t r, p; + ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p)); +} + +TEST(TestTrotec3550Class, SetAndGetMode) { + IRTrotec3550 ac(kGpioUnused); + + ac.setMode(kTrotecFan); + EXPECT_EQ(kTrotecFan, ac.getMode()); + ac.setMode(kTrotecCool); + EXPECT_EQ(kTrotecCool, ac.getMode()); + ac.setMode(kTrotecAuto); + EXPECT_EQ(kTrotecAuto, ac.getMode()); + ac.setMode(kTrotecDry); + EXPECT_EQ(kTrotecDry, ac.getMode()); + ac.setMode(255); + EXPECT_EQ(kTrotecAuto, ac.getMode()); + const uint8_t fan[9] = {0x55, 0x23, 0x00, 0x05, 0x00, 0x00, 0x23, 0x88, 0x28}; + ac.setRaw(fan); + EXPECT_EQ(kTrotecFan, ac.getMode()); +} + +TEST(TestTrotec3550Class, SetAndGetFan) { + IRTrotec3550 ac(kGpioUnused); + + ac.setFan(kTrotecFanHigh); + EXPECT_EQ(kTrotecFanHigh, ac.getFan()); + ac.setFan(kTrotecFanLow); + EXPECT_EQ(kTrotecFanLow, ac.getFan()); + ac.setFan(kTrotecFanMed); + EXPECT_EQ(kTrotecFanMed, ac.getFan()); + ac.setFan(kTrotecFanHigh); + EXPECT_EQ(kTrotecFanHigh, ac.getFan()); + ASSERT_NE(7, kTrotecFanHigh); + // Now try some unexpected value. + ac.setFan(7); + EXPECT_EQ(kTrotecFanHigh, ac.getFan()); +} + +TEST(TestTrotec3550Class, SetAndGetTemp) { + IRTrotec3550 ac(kGpioUnused); + + // Celsius + ac.setTemp(25); + EXPECT_EQ(25, ac.getTemp()); + EXPECT_TRUE(ac.getTempUnit()); + ac.setTemp(kTrotec3550MinTempC); + EXPECT_EQ(kTrotec3550MinTempC, ac.getTemp()); + ac.setTemp(kTrotec3550MaxTempC); + EXPECT_EQ(kTrotec3550MaxTempC, ac.getTemp()); + ac.setTemp(kTrotec3550MinTempC - 1); + EXPECT_EQ(kTrotec3550MinTempC, ac.getTemp()); + ac.setTemp(kTrotec3550MaxTempC + 1); + EXPECT_EQ(kTrotec3550MaxTempC, ac.getTemp()); + // Fahrenheit + ac.setTemp(72, false); + EXPECT_EQ(72, ac.getTemp()); + EXPECT_FALSE(ac.getTempUnit()); + ac.setTemp(kTrotec3550MinTempF, false); + EXPECT_EQ(kTrotec3550MinTempF, ac.getTemp()); + ac.setTemp(kTrotec3550MaxTempF, false); + EXPECT_EQ(kTrotec3550MaxTempF, ac.getTemp()); + ac.setTemp(kTrotec3550MinTempF - 1, false); + EXPECT_EQ(kTrotec3550MinTempF, ac.getTemp()); + ac.setTemp(kTrotec3550MaxTempF + 1, false); + EXPECT_EQ(kTrotec3550MaxTempF, ac.getTemp()); + // Celsius + ac.setTemp(25, true); + EXPECT_EQ(25, ac.getTemp()); + EXPECT_TRUE(ac.getTempUnit()); + uint8_t deg79F[9] = {0x55, 0xA3, 0x00, 0x14, 0x00, 0x00, 0x31, 0x40, 0x7D}; + ac.setRaw(deg79F); + EXPECT_FALSE(ac.getTempUnit()); // Fahrenheit + EXPECT_EQ(79, ac.getTemp()); +} + +TEST(TestTrotec3550Class, SwingV) { + IRTrotec3550 ac(kGpioUnused); + ac.setSwingV(false); + ASSERT_FALSE(ac.getSwingV()); + ac.setSwingV(true); + ASSERT_TRUE(ac.getSwingV()); + ac.setSwingV(false); + ASSERT_FALSE(ac.getSwingV()); +} + +TEST(TestTrotec3550Class, Power) { + IRTrotec3550 ac(kGpioUnused); + ac.setPower(false); + ASSERT_FALSE(ac.getPower()); + ac.setPower(true); + ASSERT_TRUE(ac.getPower()); + ac.setPower(false); + ASSERT_FALSE(ac.getPower()); +} + +TEST(TestTrotec3550Class, Timer) { + IRTrotec3550 ac(kGpioUnused); + EXPECT_FALSE(ac._.TimerSet); + EXPECT_EQ(0, ac.getTimer()); + + ac.setTimer(1); + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(0, ac.getTimer()); + + ac.setTimer(0); + EXPECT_FALSE(ac._.TimerSet); + EXPECT_EQ(0, ac.getTimer()); + + ac.setTimer(1 * 60); + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(1 * 60, ac.getTimer()); + + ac.setTimer(2 * 60 + 37); + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(2 * 60, ac.getTimer()); + + ac.setTimer(7 * 60 + 59); + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(7 * 60, ac.getTimer()); + + ac.setTimer(8 * 60); // Max + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(8 * 60, ac.getTimer()); // Max + + ac.setTimer(9 * 60); // Beyond max + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(8 * 60, ac.getTimer()); // Max + + ac.setTimer(0); + EXPECT_FALSE(ac._.TimerSet); + EXPECT_EQ(0, ac.getTimer()); + + // Real data. + uint8_t onehour[9] = {0x55, 0xBB, 0x01, 0x15, 0x00, 0x00, 0x31, 0x02, 0x59}; + ac.setRaw(onehour); + EXPECT_TRUE(ac._.TimerSet); + EXPECT_EQ(1 * 60, ac.getTimer()); + EXPECT_EQ( + "Power: On, Mode: 1 (Cool), Temp: 80F, Fan: 3 (High), Swing(V): On, " + "Timer: 01:00", ac.toString()); +} + +TEST(TestTrotec3550Class, HumanReadable) { + IRTrotec3550 ac(kGpioUnused); + EXPECT_EQ( + "Power: Off, Mode: 0 (Auto), Temp: 22C, Fan: 1 (Low), Swing(V): Off, " + "Timer: Off", + ac.toString()); + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1563#issuecomment-898318429 + const uint8_t oncool18f3swing[9] = { + 0x55, 0x23, 0x00, 0x05, 0x00, 0x00, 0x31, 0x88, 0x36}; + ac.setRaw(oncool18f3swing); + EXPECT_EQ( + "Power: On, Mode: 1 (Cool), Temp: 18C, Fan: 3 (High), Swing(V): On, " + "Timer: Off", + ac.toString()); + const uint8_t offcool18f3swing[9] = { + 0x55, 0x21, 0x00, 0x05, 0x00, 0x00, 0x31, 0x88, 0x34}; + ac.setRaw(offcool18f3swing); + EXPECT_EQ( + "Power: Off, Mode: 1 (Cool), Temp: 18C, Fan: 3 (High), Swing(V): On, " + "Timer: Off", + ac.toString()); + const uint8_t modeauto[9] = { + 0x55, 0x60, 0x00, 0x0D, 0x00, 0x00, 0x10, 0x88, 0x5A}; + ac.setRaw(modeauto); + EXPECT_EQ( + "Power: Off, Mode: 0 (Auto), Temp: 22C, Fan: 1 (Low), Swing(V): Off, " + "Timer: Off", + ac.toString()); +} + +TEST(TestTrotec3550Class, Checksums) { + // Ref: https://github.com/crankyoldgit/IRremoteESP8266/issues/1563#issuecomment-898318429 + const uint8_t oncool18f3swing[9] = { + 0x55, 0x23, 0x00, 0x05, 0x00, 0x00, 0x31, 0x88, 0x36}; + EXPECT_EQ(0x36, IRTrotec3550::calcChecksum(oncool18f3swing)); + ASSERT_TRUE(IRTrotec3550::validChecksum(oncool18f3swing)); +} + +TEST(TestTrotec3550Class, toCommon) { + IRTrotec3550 ac(kGpioUnused); + ac.setPower(true); + ac.setMode(kTrotecCool); + ac.setTemp(20); + ac.setFan(kTrotecFanHigh); + ac.setSwingV(true); + // Now test it. + ASSERT_EQ(decode_type_t::TROTEC_3550, ac.toCommon().protocol); + ASSERT_TRUE(ac.toCommon().power); + ASSERT_TRUE(ac.toCommon().celsius); + ASSERT_EQ(20, ac.toCommon().degrees); + ASSERT_EQ(stdAc::opmode_t::kCool, ac.toCommon().mode); + ASSERT_EQ(stdAc::fanspeed_t::kMax, ac.toCommon().fanspeed); + ASSERT_EQ(stdAc::swingv_t::kAuto, ac.toCommon().swingv); + // Unsupported. + ASSERT_EQ(-1, ac.toCommon().model); + ASSERT_EQ(stdAc::swingh_t::kOff, ac.toCommon().swingh); + ASSERT_FALSE(ac.toCommon().turbo); + ASSERT_FALSE(ac.toCommon().econo); + ASSERT_FALSE(ac.toCommon().light); + ASSERT_FALSE(ac.toCommon().filter); + ASSERT_FALSE(ac.toCommon().clean); + ASSERT_FALSE(ac.toCommon().beep); + ASSERT_FALSE(ac.toCommon().quiet); + ASSERT_EQ(-1, ac.toCommon().sleep); + ASSERT_EQ(-1, ac.toCommon().clock); } diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/auto_analyse_raw_data.py b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/auto_analyse_raw_data.py index 3b22ea12d..aa5c990a9 100755 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/auto_analyse_raw_data.py +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/auto_analyse_raw_data.py @@ -1,9 +1,9 @@ -#!/usr/bin/python +#!/usr/bin/python3 """Attempt an automatic analysis of IRremoteESP8266's Raw data output. Makes suggestions on key values and tried to break down the message into likely chunks.""" # -# Copyright 2018 David Conran +# Copyright 2018-2021 David Conran import argparse import sys @@ -303,9 +303,10 @@ def convert_rawdata(data_str): for timing in [x.strip() for x in data_str.split(',')]: try: results.append(int(timing)) - except ValueError: + except ValueError as non_numeric: raise ValueError( - "Raw Data contains a non-numeric value of '%s'." % timing) + "Raw Data contains a non-numeric value of '%s'." % + timing) from non_numeric return results @@ -723,7 +724,7 @@ def get_rawdata(arg_options): if arg_options.stdin: return sys.stdin.read() if arg_options.file: - with open(arg_options.file) as input_file: + with open(arg_options.file, encoding="utf8") as input_file: return input_file.read() else: return arg_options.rawdata diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py index a9cd10f0a..22d2805ab 100755 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py +++ b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py @@ -93,9 +93,9 @@ def getallacs(): match = IRSEND_FN_RE.match(path.name) if match: rawmodels = getenums(path) - for acprotocol in rawmodels: + for acprotocol, acmodels in rawmodels.items(): models = set() - for model in rawmodels[acprotocol]: + for model in acmodels: model = model.upper() model = model.replace("K{}".format(acprotocol.upper()), "") if model and model not in EXCLUDED_PROTOCOLS: @@ -173,7 +173,7 @@ def getalldevices(): protocol = match.group(1) for brand, model in supports: protocolbrand = (protocol, brand) - pbset = sets.allcodes.get(protocolbrand, list()) + pbset = sets.allcodes.get(protocolbrand, []) if model in pbset: print("Model %s is duplicated for %s, %s" % (model, protocol, brand)) sets.allcodes[protocolbrand] = pbset + [model] From 547d47e2975f345767586c0d548e63c622ce2aef Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 30 Aug 2021 23:15:27 +0200 Subject: [PATCH 110/317] Berry strftime --- lib/libesp32/Berry/default/be_tasmotalib.c | 2 + lib/libesp32/Berry/generate/be_const_strtab.h | 1 + .../Berry/generate/be_const_strtab_def.h | 5 +- .../generate/be_fixed_be_class_tasmota.h | 117 +++++++++--------- tasmota/xdrv_52_3_berry_tasmota.ino | 14 +++ 5 files changed, 79 insertions(+), 60 deletions(-) diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index fef78e8ed..4498df7ec 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -15,6 +15,7 @@ extern int l_millis(bvm *vm); extern int l_timereached(bvm *vm); extern int l_rtc(bvm *vm); extern int l_time_dump(bvm *vm); +extern int l_strftime(bvm *vm); extern int l_memory(bvm *vm); extern int l_wifi(bvm *vm); extern int l_eth(bvm *vm); @@ -2216,6 +2217,7 @@ class be_class_tasmota (scope: global, name: Tasmota) { time_reached, func(l_timereached) rtc, func(l_rtc) time_dump, func(l_time_dump) + strftime, func(l_strftime) memory, func(l_memory) wifi, func(l_wifi) eth, func(l_eth) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 40a05da5a..7398085b4 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -599,6 +599,7 @@ extern const bcstring be_const_str_SYMBOL_UP; extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; extern const bcstring be_const_str_member; extern const bcstring be_const_str_set; +extern const bcstring be_const_str_strftime; extern const bcstring be_const_str_EPAPER29_CS; extern const bcstring be_const_str_SPI_MISO; extern const bcstring be_const_str_HIGH; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 239d3ac8c..34970c1f8 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -598,7 +598,8 @@ be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_lv_draw_mask_radius_param_cfg); be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_member); be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SPI_MISO); be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MAX7219DIN); @@ -992,6 +993,6 @@ static const bstring* const m_string_table[] = { static const struct bconststrtab m_const_string_table = { .size = 322, - .count = 644, + .count = 645, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h index 5aead845e..dba04014d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h @@ -1,72 +1,73 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_tasmota_map) { - { be_const_key(rtc, -1), be_const_func(l_rtc) }, - { be_const_key(publish, -1), be_const_func(l_publish) }, - { be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) }, - { be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) }, - { be_const_key(_cmd, -1), be_const_func(l_cmd) }, - { be_const_key(gc, -1), be_const_closure(gc_closure) }, { be_const_key(remove_rule, -1), be_const_closure(remove_rule_closure) }, - { be_const_key(event, -1), be_const_closure(event_closure) }, - { be_const_key(log, 25), be_const_func(l_logInfo) }, - { be_const_key(_drivers, -1), be_const_var(0) }, - { be_const_key(set_light, -1), be_const_closure(set_light_closure) }, - { be_const_key(wire2, 26), be_const_var(1) }, - { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, - { be_const_key(resp_cmnd_failed, -1), be_const_func(l_respCmndFailed) }, - { be_const_key(publish_result, -1), be_const_func(l_publish_result) }, - { be_const_key(wire1, -1), be_const_var(2) }, - { be_const_key(set_power, 46), be_const_func(l_setpower) }, - { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, - { be_const_key(get_light, 42), be_const_closure(get_light_closure) }, - { be_const_key(_rules, 54), be_const_var(3) }, - { be_const_key(run_deferred, 19), be_const_closure(run_deferred_closure) }, - { be_const_key(try_rule, 18), be_const_closure(try_rule_closure) }, - { be_const_key(remove_cmd, 41), be_const_closure(remove_cmd_closure) }, - { be_const_key(add_driver, 0), be_const_closure(add_driver_closure) }, - { be_const_key(get_power, 36), be_const_func(l_getpower) }, - { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, - { be_const_key(_timers, -1), be_const_var(4) }, - { be_const_key(add_rule, 33), be_const_closure(add_rule_closure) }, - { be_const_key(time_reached, -1), be_const_func(l_timereached) }, - { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, - { be_const_key(time_dump, -1), be_const_func(l_time_dump) }, - { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, - { be_const_key(millis, -1), be_const_func(l_millis) }, - { be_const_key(get_option, 52), be_const_func(l_getoption) }, - { be_const_key(eth, -1), be_const_func(l_eth) }, - { be_const_key(wifi, 22), be_const_func(l_wifi) }, - { be_const_key(response_append, 43), be_const_func(l_respAppend) }, - { be_const_key(find_op, -1), be_const_closure(find_op_closure) }, - { be_const_key(set_timer, 28), be_const_closure(set_timer_closure) }, - { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) }, - { be_const_key(gen_cb, -1), be_const_closure(gen_cb_closure) }, - { be_const_key(memory, 47), be_const_func(l_memory) }, - { be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) }, - { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, - { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, - { be_const_key(web_send_decimal, 44), be_const_func(l_webSendDecimal) }, - { be_const_key(load, -1), be_const_closure(load_closure) }, - { be_const_key(web_send, 56), be_const_func(l_webSend) }, - { be_const_key(_ccmd, -1), be_const_var(5) }, - { be_const_key(i2c_enabled, 48), be_const_func(l_i2cenabled) }, - { be_const_key(save, -1), be_const_func(l_save) }, - { be_const_key(exec_cmd, 2), be_const_closure(exec_cmd_closure) }, { be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) }, - { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, - { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, - { be_const_key(delay, -1), be_const_func(l_delay) }, - { be_const_key(_cb, -1), be_const_var(6) }, - { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, + { be_const_key(wire2, -1), be_const_var(0) }, + { be_const_key(_cb, -1), be_const_var(1) }, + { be_const_key(web_send, -1), be_const_func(l_webSend) }, + { be_const_key(wire_scan, 43), be_const_closure(wire_scan_closure) }, { be_const_key(_get_cb, -1), be_const_func(l_get_cb) }, + { be_const_key(eth, 11), be_const_func(l_eth) }, + { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, + { be_const_key(response_append, -1), be_const_func(l_respAppend) }, + { be_const_key(wifi, 2), be_const_func(l_wifi) }, + { be_const_key(get_light, -1), be_const_closure(get_light_closure) }, + { be_const_key(rtc, -1), be_const_func(l_rtc) }, + { be_const_key(cmd, 32), be_const_closure(cmd_closure) }, + { be_const_key(resp_cmnd_failed, 6), be_const_func(l_respCmndFailed) }, + { be_const_key(get_power, -1), be_const_func(l_getpower) }, + { be_const_key(event, -1), be_const_closure(event_closure) }, + { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, + { be_const_key(publish, 41), be_const_func(l_publish) }, + { be_const_key(_rules, -1), be_const_var(2) }, + { be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) }, + { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, + { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, + { be_const_key(time_dump, 50), be_const_func(l_time_dump) }, + { be_const_key(_timers, -1), be_const_var(3) }, + { be_const_key(wire1, -1), be_const_var(4) }, + { be_const_key(add_cmd, 35), be_const_closure(add_cmd_closure) }, + { be_const_key(add_driver, 56), be_const_closure(add_driver_closure) }, + { be_const_key(delay, -1), be_const_func(l_delay) }, + { be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) }, + { be_const_key(memory, -1), be_const_func(l_memory) }, + { be_const_key(exec_cmd, 16), be_const_closure(exec_cmd_closure) }, + { be_const_key(get_option, -1), be_const_func(l_getoption) }, + { be_const_key(try_rule, -1), be_const_closure(try_rule_closure) }, + { be_const_key(find_op, 24), be_const_closure(find_op_closure) }, + { be_const_key(set_timer, -1), be_const_closure(set_timer_closure) }, + { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, + { be_const_key(gc, -1), be_const_closure(gc_closure) }, + { be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) }, + { be_const_key(log, -1), be_const_func(l_logInfo) }, + { be_const_key(_cmd, -1), be_const_func(l_cmd) }, + { be_const_key(save, 58), be_const_func(l_save) }, + { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) }, + { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, + { be_const_key(set_light, -1), be_const_closure(set_light_closure) }, + { be_const_key(i2c_enabled, -1), be_const_func(l_i2cenabled) }, { be_const_key(yield, -1), be_const_func(l_yield) }, - { be_const_key(time_str, -1), be_const_closure(time_str_closure) }, + { be_const_key(_ccmd, -1), be_const_var(5) }, + { be_const_key(web_send_decimal, -1), be_const_func(l_webSendDecimal) }, + { be_const_key(millis, 8), be_const_func(l_millis) }, + { be_const_key(_drivers, -1), be_const_var(6) }, + { be_const_key(load, 29), be_const_closure(load_closure) }, + { be_const_key(run_deferred, 5), be_const_closure(run_deferred_closure) }, + { be_const_key(gen_cb, -1), be_const_closure(gen_cb_closure) }, + { be_const_key(time_str, 21), be_const_closure(time_str_closure) }, + { be_const_key(add_rule, 26), be_const_closure(add_rule_closure) }, + { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, + { be_const_key(set_power, -1), be_const_func(l_setpower) }, + { be_const_key(publish_result, -1), be_const_func(l_publish_result) }, + { be_const_key(time_reached, 22), be_const_func(l_timereached) }, + { be_const_key(chars_in_string, 7), be_const_closure(chars_in_string_closure) }, + { be_const_key(strftime, -1), be_const_func(l_strftime) }, }; static be_define_const_map( be_class_tasmota_map, - 61 + 62 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/tasmota/xdrv_52_3_berry_tasmota.ino b/tasmota/xdrv_52_3_berry_tasmota.ino index 72577ba2b..86e936018 100644 --- a/tasmota/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/xdrv_52_3_berry_tasmota.ino @@ -279,6 +279,20 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + int32_t l_strftime(bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc == 3 && be_isstring(vm, 2) && be_isint(vm, 3)) { + const char * format = be_tostring(vm, 2); + time_t ts = be_toint(vm, 3); + struct tm *t = gmtime(&ts); + char s[64] = {0}; + strftime(s, sizeof(s), format, t); + be_pushstring(vm, s); + be_return(vm); + } + be_raise(vm, kTypeError, nullptr); + } + // Berry: tasmota.delay(timer:int) -> nil // int32_t l_delay(struct bvm *vm); From f1c4eb3cfdb046b44573bfcd5db66718b4aae1e4 Mon Sep 17 00:00:00 2001 From: bovirus <1262554+bovirus@users.noreply.github.com> Date: Tue, 31 Aug 2021 11:51:22 +0200 Subject: [PATCH 111/317] Update it_IT.h Update for Italian language. Please check and merge. --- tasmota/language/it_IT.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 2d80dea18..413e70a26 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v9.5.0.3 - Last update 19.07.2021 + * Updated until v9.5.0.3 - Last update 31.08.2021 \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -328,8 +328,8 @@ #define D_WEB_ADMIN_PASSWORD "Password amministratore web" #define D_MQTT_ENABLE "Abilita MQTT" #define D_MQTT_TLS_ENABLE "MQTT TLS" -#define D_HTTP_API "HTTP API" -#define D_HTTP_API_ENABLE "Abilita HTTP API" +#define D_HTTP_API "API HTTP" +#define D_HTTP_API_ENABLE "Abilita API HTTP" #define D_FRIENDLY_NAME "Nome amichevole" #define D_BELKIN_WEMO "Belkin WeMo" #define D_HUE_BRIDGE "Bridge Hue" @@ -836,8 +836,8 @@ #define D_SENSOR_HALLEFFECT "Effetto hall" #define D_SENSOR_EPD_DATA "EPD - Dati" #define D_SENSOR_MCP2515_CS "MCP2515 - CS" -#define D_SENSOR_HRG15_RX "HRG15 Rx" -#define D_SENSOR_HRG15_TX "HRG15 Tx" +#define D_SENSOR_HRG15_RX "HRG15 - RX" +#define D_SENSOR_HRG15_TX "HRG15 - TX" #define D_SENSOR_VINDRIKTNING_RX "VINDRIKTNING" // Units From ef4431b8e65144d63b0af5c02ca9d2e338b29c7c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 31 Aug 2021 16:28:24 +0200 Subject: [PATCH 112/317] Fix VINDIKTNING PM2.5 measurement Fix VINDIKTNING PM2.5 measurement (#13012) --- tasmota/xsns_91_vindriktning.ino | 70 +++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/tasmota/xsns_91_vindriktning.ino b/tasmota/xsns_91_vindriktning.ino index 640eeede9..07bb58a89 100644 --- a/tasmota/xsns_91_vindriktning.ino +++ b/tasmota/xsns_91_vindriktning.ino @@ -19,25 +19,28 @@ #ifdef USE_VINDRIKTNING /*********************************************************************************************\ - * IKEA VINDRIKTNING particle concentration sensor + * IKEA VINDRIKTNING PM2.5 particle concentration sensor + * + * This sensor uses a subset of the PM1006K LED particle sensor + * To use Tasmota the user needs to add an ESP8266 or ESP32 \*********************************************************************************************/ -#define XSNS_91 91 +#define XSNS_91 91 + +//#define XSNS_91_XTRA_INFO // Display unverified data for PM1.0 and PM10 #include -#ifndef MIN_INTERVAL_PERIOD -#define MIN_INTERVAL_PERIOD 60 // minimum interval period in seconds required for passive mode -#endif - #define VINDRIKTNING_DATASET_SIZE 20 TasmotaSerial *VindriktningSerial; struct VINDRIKTNING { uint16_t pm2_5 = 0; +#ifdef XSNS_91_XTRA_INFO uint16_t pm1_0 = 0; uint16_t pm10 = 0; +#endif // XSNS_91_XTRA_INFO uint8_t type = 1; uint8_t valid = 0; bool discovery_triggered = false; @@ -48,26 +51,16 @@ bool VindriktningReadData(void) { return false; } - int serial_in_byte_counter = 0; uint8_t buffer[VINDRIKTNING_DATASET_SIZE]; - uint8_t crc = 0; - - while (VindriktningSerial->available()) { - uint8_t serial_in_byte = VindriktningSerial->read(); - if (serial_in_byte_counter <= VINDRIKTNING_DATASET_SIZE -1) { - buffer[serial_in_byte_counter++] = serial_in_byte; - crc += serial_in_byte; - } - } + VindriktningSerial->readBytes(buffer, VINDRIKTNING_DATASET_SIZE); VindriktningSerial->flush(); // Make room for another burst AddLogBuffer(LOG_LEVEL_DEBUG_MORE, buffer, VINDRIKTNING_DATASET_SIZE); - if (serial_in_byte_counter < VINDRIKTNING_DATASET_SIZE) { - AddLog(LOG_LEVEL_DEBUG, PSTR("VDN: Not enough data (%d < 20)"), serial_in_byte_counter); - return false; + uint8_t crc = 0; + for (uint32_t i = 0; i < VINDRIKTNING_DATASET_SIZE; i++) { + crc += buffer[i]; } - if (crc != 0) { AddLog(LOG_LEVEL_DEBUG, PSTR("VDN: " D_CHECKSUM_FAILURE)); return false; @@ -75,10 +68,12 @@ bool VindriktningReadData(void) { // sample data: // 16 11 0b 00 00 00 0c 00 00 03 cb 00 00 00 0c 01 00 00 00 e7 - // |pm2_5| |pm1_0| |pm10 | | CRC | + // |pm2_5| |pm1_0| |pm10 | | CRC | Vindriktning.pm2_5 = (buffer[5] << 8) | buffer[6]; +#ifdef XSNS_91_XTRA_INFO Vindriktning.pm1_0 = (buffer[9] << 8) | buffer[10]; Vindriktning.pm10 = (buffer[13] << 8) | buffer[14]; +#endif // XSNS_91_XTRA_INFO if (!Vindriktning.discovery_triggered) { TasmotaGlobal.discovery_counter = 1; // force TasDiscovery() @@ -91,7 +86,7 @@ bool VindriktningReadData(void) { void VindriktningSecond(void) { // Every second if (VindriktningReadData()) { - Vindriktning.valid = MIN_INTERVAL_PERIOD; + Vindriktning.valid = 60; } else { if (Vindriktning.valid) { Vindriktning.valid--; @@ -112,6 +107,8 @@ void VindriktningInit(void) { } } +#ifdef XSNS_91_XTRA_INFO + #ifdef USE_WEBSERVER const char HTTP_VINDRIKTNING_SNS[] PROGMEM = "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 1.0 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" @@ -122,8 +119,7 @@ const char HTTP_VINDRIKTNING_SNS[] PROGMEM = void VindriktningShow(bool json) { if (Vindriktning.valid) { if (json) { - ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{\"PM1\":%d,\"PM2.5\":%d,\"PM10\":%d}"), - Vindriktning.pm1_0, Vindriktning.pm2_5, Vindriktning.pm10); + ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{\"PM1\":%d,\"PM2.5\":%d,\"PM10\":%d}"), Vindriktning.pm1_0, Vindriktning.pm2_5, Vindriktning.pm10); #ifdef USE_DOMOTICZ if (0 == TasmotaGlobal.tele_period) { DomoticzSensor(DZ_COUNT, Vindriktning.pm1_0); // PM1.0 @@ -139,6 +135,32 @@ void VindriktningShow(bool json) { } } +#else // No XSNS_91_XTRA_INFO + +#ifdef USE_WEBSERVER +const char HTTP_VINDRIKTNING_SNS[] PROGMEM = + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; +#endif // USE_WEBSERVER + +void VindriktningShow(bool json) { + if (Vindriktning.valid) { + if (json) { + ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{\"PM2.5\":%d}"), Vindriktning.pm2_5); +#ifdef USE_DOMOTICZ + if (0 == TasmotaGlobal.tele_period) { + DomoticzSensor(DZ_VOLTAGE, Vindriktning.pm2_5); // PM2.5 + } +#endif // USE_DOMOTICZ +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_VINDRIKTNING_SNS, Vindriktning.pm2_5); +#endif // USE_WEBSERVER + } + } +} + +#endif // XSNS_91_XTRA_INFO + /*********************************************************************************************\ * Interface \*********************************************************************************************/ From 1affb8f20ca64df56248c26ecc9e8d33001f9c84 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 31 Aug 2021 16:41:19 +0200 Subject: [PATCH 113/317] Update release notes --- RELEASENOTES.md | 3 ++- tasmota/my_user_config.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index d7c6c6b6e..069725f2c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -113,6 +113,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Berry ESP32 partition manager [#12465](https://github.com/arendst/Tasmota/issues/12465) - Berry ESP32 support for I2S audio mp3 playback - Berry ESP32 support for vararg +- Berry ESP32 support for Curve 25519 EC crypto - Support for AM2320 Temperature and Humidity Sensor by Lars Wessels [#12485](https://github.com/arendst/Tasmota/issues/12485) - Rule event support as JSON payload [#12496](https://github.com/arendst/Tasmota/issues/12496) - MQTT minimum password length restriction in GUI [#12553](https://github.com/arendst/Tasmota/issues/12553) @@ -129,7 +130,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware - ESP32 core library from v1.0.6 to v1.0.7.3 -- IRremoteESP8266 library from v2.7.18 to v2.7.19 +- IRremoteESP8266 library from v2.7.18 to v2.7.20 - NeoPixelBus library from v2.6.3 to v2.6.7 - Message ``Upload buffer miscompare`` into ``Not enough space`` - ESP32 Ethernet Phy Type information to IDF v3+ diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 9c85c7549..cf2da8dd1 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -744,7 +744,7 @@ // #define USE_AS608_MESSAGES // Add verbose error messages (+0k4 code) //#define USE_TFMINIPLUS // Add support for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface (+0k8) //#define USE_HRG15 // Add support for Hydreon RG-15 Solid State Rain sensor (+1k5 code) -//#define USE_VINDRIKTNING // Add support for IKEA VINDRIKTNING particle concentration sensor (+1k code) +//#define USE_VINDRIKTNING // Add support for IKEA VINDRIKTNING particle concentration sensor (+0k6 code) // -- Power monitoring sensors -------------------- #define USE_ENERGY_SENSOR // Add support for Energy Monitors (+14k code) From f77690dd9aea3ea7c78bb10d3ff1c484e7ca79a8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 31 Aug 2021 17:00:45 +0200 Subject: [PATCH 114/317] Add some comms checks --- tasmota/xsns_91_vindriktning.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tasmota/xsns_91_vindriktning.ino b/tasmota/xsns_91_vindriktning.ino index 07bb58a89..e5a67095d 100644 --- a/tasmota/xsns_91_vindriktning.ino +++ b/tasmota/xsns_91_vindriktning.ino @@ -50,6 +50,12 @@ bool VindriktningReadData(void) { if (!VindriktningSerial->available()) { return false; } + while ((VindriktningSerial->peek() != 0x16) && VindriktningSerial->available()) { + VindriktningSerial->read(); + } + if (VindriktningSerial->available() < VINDRIKTNING_DATASET_SIZE) { + return false; + } uint8_t buffer[VINDRIKTNING_DATASET_SIZE]; VindriktningSerial->readBytes(buffer, VINDRIKTNING_DATASET_SIZE); @@ -67,6 +73,7 @@ bool VindriktningReadData(void) { } // sample data: + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // 16 11 0b 00 00 00 0c 00 00 03 cb 00 00 00 0c 01 00 00 00 e7 // |pm2_5| |pm1_0| |pm10 | | CRC | Vindriktning.pm2_5 = (buffer[5] << 8) | buffer[6]; From 8033917a362e0f68596f048f658fff71898e4de0 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Tue, 31 Aug 2021 17:51:18 +0200 Subject: [PATCH 115/317] fix opentherm json --- tasmota/xsns_69_opentherm.ino | 2 +- tasmota/xsns_69_opentherm_protocol.ino | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/tasmota/xsns_69_opentherm.ino b/tasmota/xsns_69_opentherm.ino index 4dee38c01..ed24d9ca0 100644 --- a/tasmota/xsns_69_opentherm.ino +++ b/tasmota/xsns_69_opentherm.ino @@ -237,7 +237,7 @@ void sns_opentherm_stat(bool json) { ResponseAppend_P(PSTR(",\"OPENTHERM\":{")); ResponseAppend_P(PSTR("\"conn\":\"%s\","), statusStr); - ResponseAppend_P(PSTR("\"settings\":%d,"), Settings->ot_flags); + ResponseAppend_P(PSTR("\"settings\":%d"), Settings->ot_flags); sns_opentherm_dump_telemetry(); ResponseJsonEnd(); #ifdef USE_WEBSERVER diff --git a/tasmota/xsns_69_opentherm_protocol.ino b/tasmota/xsns_69_opentherm_protocol.ino index 0047252af..d01c29bb7 100644 --- a/tasmota/xsns_69_opentherm_protocol.ino +++ b/tasmota/xsns_69_opentherm_protocol.ino @@ -549,7 +549,6 @@ void sns_opentherm_process_success_response(struct OT_BOILER_STATUS_T *boilerSta void sns_opentherm_dump_telemetry() { - bool add_coma = false; for (int i = 0; i < SNS_OT_COMMANDS_COUNT; ++i) { struct OpenThermCommandT *cmd = &sns_opentherm_commands[i]; @@ -558,11 +557,8 @@ void sns_opentherm_dump_telemetry() continue; } - ResponseAppend_P(PSTR("%s\"%s\":"), add_coma ? "," : "", cmd->m_command_name); - + ResponseAppend_P(PSTR(",\"%s\":"), cmd->m_command_name); cmd->m_ot_appent_telemetry(cmd); - - add_coma = true; } } From 62946c22b06800964d912b194a2678ed9518cc26 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Tue, 31 Aug 2021 18:01:01 +0200 Subject: [PATCH 116/317] refactor in single append --- tasmota/xsns_69_opentherm.ino | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tasmota/xsns_69_opentherm.ino b/tasmota/xsns_69_opentherm.ino index ed24d9ca0..095a1909a 100644 --- a/tasmota/xsns_69_opentherm.ino +++ b/tasmota/xsns_69_opentherm.ino @@ -235,9 +235,7 @@ void sns_opentherm_stat(bool json) if (json) { - ResponseAppend_P(PSTR(",\"OPENTHERM\":{")); - ResponseAppend_P(PSTR("\"conn\":\"%s\","), statusStr); - ResponseAppend_P(PSTR("\"settings\":%d"), Settings->ot_flags); + ResponseAppend_P(PSTR(",\"OPENTHERM\":{\"conn\":\"%s\",\"settings\":%d"), statusStr, Settings->ot_flags); sns_opentherm_dump_telemetry(); ResponseJsonEnd(); #ifdef USE_WEBSERVER From f0b53cb14527af6a4f480b24d59640b0deb5b77c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 31 Aug 2021 21:22:05 -0300 Subject: [PATCH 117/317] Add Key to set SO128 at compile time --- tasmota/my_user_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index cf2da8dd1..ca09bd7bd 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -457,6 +457,7 @@ #define USE_WEBSERVER // Enable web server and Wi-Fi Manager (+66k code, +8k mem) #define WEB_PORT 80 // Web server Port for User and Admin mode #define WEB_USERNAME "admin" // Web server Admin mode user name +// #define DISABLE_REFERER_CHK // [SetOption128] Disable HTTP API // #define USE_JAVASCRIPT_ES6 // Enable ECMAScript6 syntax using less JavaScript code bytes (fails on IE11) #define USE_ENHANCED_GUI_WIFI_SCAN // Enable Wi-Fi scan output with BSSID (+0k5 code) // #define USE_WEBSEND_RESPONSE // Enable command WebSend response message (+1k code) From 31c8567db301eb7fdbb6849d5fbb2b3a27867bf6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 31 Aug 2021 21:25:06 -0300 Subject: [PATCH 118/317] Add Key to set the default of SO128 --- tasmota/settings.ino | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tasmota/settings.ino b/tasmota/settings.ino index a722ee3b1..2795c2653 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -888,8 +888,11 @@ void SettingsDefaultSet2(void) { Settings->weblog_level = WEB_LOG_LEVEL; SettingsUpdateText(SET_WEBPWD, PSTR(WEB_PASSWORD)); SettingsUpdateText(SET_CORS, PSTR(CORS_DOMAIN)); - Settings->flag5.disable_referer_chk |= true; - +#ifdef DISABLE_REFERER_CHK + flag5.disable_referer_chk |= false; +#else + flag5.disable_referer_chk |= true; +#endif // Button flag.button_restrict |= KEY_DISABLE_MULTIPRESS; flag.button_swap |= KEY_SWAP_DOUBLE_PRESS; @@ -1397,7 +1400,11 @@ void SettingsDelta(void) { SettingsUpdateText(SET_RGX_PASSWORD, PSTR(WIFI_RGX_PASSWORD)); } if (Settings->version < 0x09050007) { - Settings->flag5.disable_referer_chk = true; +#ifdef DISABLE_REFERER_CHK + Settings->flag5.disable_referer_chk |= false; +#else + Settings->flag5.disable_referer_chk |= true; +#endif } Settings->version = VERSION; From 6e3c239e25753bcb6ac1258205bac11cd606e8e8 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 09:11:14 +0200 Subject: [PATCH 119/317] Update change logs --- CHANGELOG.md | 1 - RELEASENOTES.md | 1 - 2 files changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e9fc313..e86acef39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,6 @@ All notable changes to this project will be documented in this file. - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" (#12858) - Support for Hydreon RG-15 Solid State Rain sensor (#12974) - Support for IKEA VINDRIKTNING particle concentration sensor (#12976) -- Commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event (#12973) - Berry support for Curve 25519 EC crypto ### Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 069725f2c..ea38f6d5c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,7 +104,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver -- Commands ``SwitchMode 17`` PushHoldMultiDelay and ``SwitchMode 18`` PushHoldMultiDelayInverted adding delayed single press event [#12973](https://github.com/arendst/Tasmota/issues/12973) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server - Support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin From cb42e241e61208867024873ff44519998bd17772 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 1 Sep 2021 09:12:50 +0200 Subject: [PATCH 120/317] Berry introspect.vcall --- lib/libesp32/Berry/generate/be_const_strtab.h | 1325 +++++------ .../Berry/generate/be_const_strtab_def.h | 1942 +++++++++-------- .../Berry/generate/be_fixed_introspect.h | 5 +- lib/libesp32/Berry/src/be_byteslib.c | 34 +- lib/libesp32/Berry/src/be_introspectlib.c | 51 + lib/libesp32/Berry/src/be_solidifylib.c | 3 +- lib/libesp32/Berry/src/be_vm.c | 79 +- lib/libesp32/Berry/tests/class_const.be | 24 + lib/libesp32/Berry/tests/introspect.be | 28 + lib/libesp32/Berry/tests/introspect_vcall.be | 96 + lib/libesp32/Berry/tests/lexergc.be | 12 + 11 files changed, 1923 insertions(+), 1676 deletions(-) create mode 100644 lib/libesp32/Berry/tests/introspect.be create mode 100644 lib/libesp32/Berry/tests/introspect_vcall.be create mode 100644 lib/libesp32/Berry/tests/lexergc.be diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 7398085b4..ea86eeb84 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,667 +1,668 @@ -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SBR_RX; extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_WIEGAND_D1; extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_arg; extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_redirect; extern const bcstring be_const_str_while; -extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_vcall; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_lv_design_cb; extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_seti; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 34970c1f8..a3f04a988 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,998 +1,1000 @@ -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ETH_PHY_MDC); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_FTC532); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_P9813_DAT); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_IBEACON_RX); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_tostring); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SDM120_TX); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_tostring); be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_PMS5003_TX); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, NULL); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_CSE7761_TX); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_DDS2382_RX); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_INTERRUPT); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_MHZ_TXD); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_DDS2382_TX); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str__timers); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_I2S_IN_SLCT); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_DHT11_OUT); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_AudioFileSource); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MAX7219DIN); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_while); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_INPUT_PULLDOWN); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, &be_const_str_while); be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_vcall); +be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_MAX31855CLK); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_NRF24_DC); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, NULL); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_AS608_RX); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, NULL); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_CNTR1); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_I2S_OUT_CLK); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_KEY1); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_DEEPSLEEP); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_DCKI); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, NULL); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, NULL); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_EXS_ENABLE); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_EPD_DATA); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_FALLING); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_OPTION_A); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_HX711_SCK, NULL, - (const bstring *)&be_const_str_state, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_web_send_decimal, + (const bstring *)&be_const_str_lv_checkbox, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_sinh, NULL, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_get_power, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_find, - (const bstring *)&be_const_str_read8, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_content_stop, - (const bstring *)&be_const_str_geti, - (const bstring *)&be_const_str_lv_group, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_HPMA_RX, NULL, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_wire2, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, - (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_REL1, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str__write, + (const bstring *)&be_const_str__timers, (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_lv_color, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_encrypt, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_BUZZER_INV, NULL, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_WEBCAM_SIOD, - (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_load_freetype_font, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_SYMBOL_FILE, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_check_privileged_access, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_publish, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_depower, + (const bstring *)&be_const_str_read, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_TM1638STB, + NULL, + NULL, + (const bstring *)&be_const_str_SYMBOL_NEW_LINE, (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_WEBCAM_HSD, + (const bstring *)&be_const_str_srand, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_write_bytes, + (const bstring *)&be_const_str_PZEM0XX_TX, NULL, - (const bstring *)&be_const_str_dump, - (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_SSD1351_DC, + (const bstring *)&be_const_str_lv_gauge_format_cb, + (const bstring *)&be_const_str_isinstance, + (const bstring *)&be_const_str_content_stop, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_copy, + (const bstring *)&be_const_str_, + NULL, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_do, + (const bstring *)&be_const_str_lv_tileview, + (const bstring *)&be_const_str_NRG_SEL_INV, + NULL, + (const bstring *)&be_const_str_load_font, + (const bstring *)&be_const_str_reset_search, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_lv_draw_mask_map_param, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_setbits, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_concat, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_return, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_SDM630_RX, + NULL, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_lv_design_cb, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_get_power, + (const bstring *)&be_const_str_SOLAXX1_RX, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str__read, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_lv_draw_img_dsc, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_lv_win, + (const bstring *)&be_const_str_SYMBOL_POWER, + NULL, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_pin, + (const bstring *)&be_const_str_SYMBOL_SHUFFLE, + (const bstring *)&be_const_str_SYMBOL_CUT, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_exists, + NULL, + NULL, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_TM1638CLK, + (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_I2S_IN_DATA, + NULL, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_PULLDOWN, + NULL, + NULL, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_isrunning, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_OLED_RESET, + NULL, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_members, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_OUTPUT_HI, (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_response_append, - (const bstring *)&be_const_str_lv_textarea, + (const bstring *)&be_const_str_getbits, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_tanh, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_SSD1331_DC, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_AudioGeneratorMP3, + NULL, + NULL, + (const bstring *)&be_const_str_lv_draw_mask_map_param_cfg, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_resp_cmnd_error, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_ZIGBEE_TX, + NULL, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_ZIGBEE_RST, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_CC1101_GDO2, + NULL, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_EPAPER29_CS, (const bstring *)&be_const_str_LE01MR_TX, NULL, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_EXS_ENABLE, - NULL, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_SYMBOL_WIFI, - NULL, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_LED1_INV, - NULL, - (const bstring *)&be_const_str_WIEGAND_D0, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_RA8876_CS, - NULL, - NULL, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_ceil, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_module, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_MAX31855CLK, - NULL, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_DSB, - NULL, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str__write, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_SYMBOL_SETTINGS, - (const bstring *)&be_const_str_SYMBOL_GPS, - NULL, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_setbits, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_IBEACON_TX, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_STOP, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_lv_draw_rect_dsc, - (const bstring *)&be_const_str___upper__, - (const bstring *)&be_const_str_lv_table, - (const bstring *)&be_const_str_SYMBOL_EJECT, - NULL, - NULL, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_I2S_IN_CLK, - NULL, - (const bstring *)&be_const_str_SYMBOL_CALL, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_KEY1_TC, - NULL, - (const bstring *)&be_const_str_get_free_heap, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_gen_cb, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_lv_draw_label_dsc, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_web_send, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_lv_roller, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_get_light, - NULL, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_digital_write, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_item, - (const bstring *)&be_const_str_time_dump, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_on, - (const bstring *)&be_const_str_try_rule, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_elif, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_SENSOR_END, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_DEEPSLEEP, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_lv_event_cb, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_SYMBOL_HOME, - NULL, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - NULL, - (const bstring *)&be_const_str_return, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_lv_draw_mask_saved, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_SOLAXX1_RX, - NULL, - (const bstring *)&be_const_str_pin_mode, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_pop, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str___lower__, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_cb_dispatch, - (const bstring *)&be_const_str_ADC_INPUT, - NULL, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_wire1, - (const bstring *)&be_const_str_SYMBOL_CUT, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_delay, - (const bstring *)&be_const_str_opt_eq, - NULL, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_SSPI_CS, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_SSD1331_DC, - (const bstring *)&be_const_str_WINDMETER_SPEED, - (const bstring *)&be_const_str_collect, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_lv_dropdown, - (const bstring *)&be_const_str_HM10_TX, - NULL, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, - NULL, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_SSD1331_CS, - NULL, - (const bstring *)&be_const_str_publish, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - NULL, - NULL, - (const bstring *)&be_const_str_OLED_RESET, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - NULL, - (const bstring *)&be_const_str_EPD_DATA, - NULL, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_SSD1351_CS, - NULL, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_ADC_LIGHT, - NULL, - (const bstring *)&be_const_str_setitem, - (const bstring *)&be_const_str_SYMBOL_PREV, - (const bstring *)&be_const_str_OUTPUT_LO, - NULL, - NULL, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_if, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - NULL, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_HIGH, - NULL, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_LEDLNK_INV, - (const bstring *)&be_const_str_asstring, - (const bstring *)&be_const_str_toint, - (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_dot_p2, NULL, (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_cmd, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_open, + (const bstring *)&be_const_str_lv_draw_mask_fade_param, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_SAIR_RX, NULL, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_remove_timer, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_I2S_IN_DATA, + NULL, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str___iterator__, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_lv_img, (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_lv_list, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_SYMBOL_CLOSE, NULL, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_WEBCAM_PWDN, + (const bstring *)&be_const_str_read8, + (const bstring *)&be_const_str_lv_linemeter, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_CSE7761_RX, (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SYMBOL_DIRECTORY, + (const bstring *)&be_const_str_loop, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_lv_event_cb, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_item, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_call, NULL, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_erase + NULL, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_SPI_MISO, + NULL, + NULL, + (const bstring *)&be_const_str_BL0940_RX, + NULL, + (const bstring *)&be_const_str_SM16716_SEL, + NULL, + (const bstring *)&be_const_str_NEOPOOL_TX, + NULL, + (const bstring *)&be_const_str_SYMBOL_STOP, + NULL, + (const bstring *)&be_const_str_name, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_TCP_TX, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_read24, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_clear, + (const bstring *)&be_const_str_has_arg, + NULL, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_SM16716_DAT, + NULL, + (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_ADE7953_IRQ, + NULL, + (const bstring *)&be_const_str_resp_cmnd, + (const bstring *)&be_const_str_update, + (const bstring *)&be_const_str_web_send_decimal, + (const bstring *)&be_const_str_add_cmd, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + NULL, + (const bstring *)&be_const_str_pin_used, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_run_deferred, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_eth, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + NULL, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_ILI9341_CS }; static const struct bconststrtab m_const_string_table = { - .size = 322, - .count = 645, + .size = 323, + .count = 646, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_introspect.h b/lib/libesp32/Berry/generate/be_fixed_introspect.h index 78b840ab6..6e5705c9d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_introspect.h +++ b/lib/libesp32/Berry/generate/be_fixed_introspect.h @@ -2,13 +2,14 @@ static be_define_const_map_slots(m_libintrospect_map) { { be_const_key(members, -1), be_const_func(m_attrlist) }, - { be_const_key(set, -1), be_const_func(m_setmember) }, + { be_const_key(vcall, -1), be_const_func(m_vcall) }, { be_const_key(get, -1), be_const_func(m_findmember) }, + { be_const_key(set, 2), be_const_func(m_setmember) }, }; static be_define_const_map( m_libintrospect_map, - 3 + 4 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/src/be_byteslib.c b/lib/libesp32/Berry/src/be_byteslib.c index e63f1932f..2e26d6846 100644 --- a/lib/libesp32/Berry/src/be_byteslib.c +++ b/lib/libesp32/Berry/src/be_byteslib.c @@ -306,48 +306,48 @@ static uint8_t buf_get1(buf_impl* buf, int offset) return 0; } -static void buf_set1(buf_impl* buf, const size_t offset, const uint8_t data) +static void buf_set1(buf_impl* buf, size_t offset, uint8_t data) { if (offset < buf->len) { buf->buf[offset] = data; } } -static void buf_set2_le(buf_impl* buf, const size_t offset, const uint16_t data) +static void buf_set2_le(buf_impl* buf, size_t offset, uint16_t data) { - if ((offset >= 0) && (offset < buf->len - 1)) { + if (offset + 1 < buf->len) { buf->buf[offset] = data & 0xFF; buf->buf[offset+1] = data >> 8; } } -static void buf_set2_be(buf_impl* buf, const size_t offset, const uint16_t data) +static void buf_set2_be(buf_impl* buf, size_t offset, uint16_t data) { - if ((offset >= 0) && (offset < buf->len - 1)) { + if (offset + 1 < buf->len) { buf->buf[offset+1] = data & 0xFF; buf->buf[offset] = data >> 8; } } -static uint16_t buf_get2_le(buf_impl* buf, int offset) +static uint16_t buf_get2_le(buf_impl* buf, size_t offset) { - if ((offset >= 0) && (offset < buf->len - 1)) { + if (offset + 1 < buf->len) { return buf->buf[offset] | (buf->buf[offset+1] << 8); } return 0; } -static uint16_t buf_get2_be(buf_impl* buf, int offset) +static uint16_t buf_get2_be(buf_impl* buf, size_t offset) { - if (offset < buf->len - 1) { + if (offset + 1 < buf->len) { return buf->buf[offset+1] | (buf->buf[offset] << 8); } return 0; } -static void buf_set4_le(buf_impl* buf, const size_t offset, const uint32_t data) +static void buf_set4_le(buf_impl* buf, size_t offset, uint32_t data) { - if ((offset >= 0) && (offset < buf->len - 3)) { + if (offset + 3 < buf->len) { buf->buf[offset] = data & 0xFF; buf->buf[offset+1] = (data >> 8) & 0xFF; buf->buf[offset+2] = (data >> 16) & 0xFF; @@ -355,9 +355,9 @@ static void buf_set4_le(buf_impl* buf, const size_t offset, const uint32_t data) } } -static void buf_set4_be(buf_impl* buf, const size_t offset, const uint32_t data) +static void buf_set4_be(buf_impl* buf, size_t offset, uint32_t data) { - if ((offset >= 0) && (offset < buf->len - 3)) { + if (offset + 3 < buf->len) { buf->buf[offset+3] = data & 0xFF; buf->buf[offset+2] = (data >> 8) & 0xFF; buf->buf[offset+1] = (data >> 16) & 0xFF; @@ -365,18 +365,18 @@ static void buf_set4_be(buf_impl* buf, const size_t offset, const uint32_t data) } } -static uint32_t buf_get4_le(buf_impl* buf, int offset) +static uint32_t buf_get4_le(buf_impl* buf, size_t offset) { - if ((offset >= 0) && (offset < buf->len - 3)) { + if (offset + 3 < buf->len) { return buf->buf[offset] | (buf->buf[offset+1] << 8) | (buf->buf[offset+2] << 16) | (buf->buf[offset+3] << 24); } return 0; } -static uint32_t buf_get4_be(buf_impl* buf, int offset) +static uint32_t buf_get4_be(buf_impl* buf, size_t offset) { - if (offset < buf->len - 3) { + if (offset + 3 < buf->len) { return buf->buf[offset+3] | (buf->buf[offset+2] << 8) | (buf->buf[offset+1] << 16) | (buf->buf[offset] << 24); } diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index fc9dac898..5254b9791 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -76,12 +76,62 @@ static int m_setmember(bvm *vm) be_return_nil(vm); } +/* call a function with variable number of arguments */ +/* first argument is a callable object (function, closure, native function, native closure) */ +/* then all subsequent arguments are pushed except the last one */ +/* If the last argument is a 'list', then all elements are pushed as arguments */ +/* otherwise the last argument is pushed as well */ +static int m_vcall(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1 && be_isfunction(vm, 1)) { + size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ + /* test if last argument is a list */ + + if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { + int32_t list_size = be_data_size(vm, top + 1); + + if (list_size > 0) { + be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ + for (int i = 0; i < list_size; i++) { + be_pushnil(vm); + } + be_moveto(vm, top + 1, top + 1 + list_size); + be_moveto(vm, top, top + list_size); + + be_refpush(vm, -2); + be_pushiter(vm, -1); + while (be_iter_hasnext(vm, -2)) { + be_iter_next(vm, -2); + be_moveto(vm, -1, top); + top++; + be_pop(vm, 1); + } + be_pop(vm, 1); /* remove iterator */ + be_refpop(vm); + } + be_pop(vm, 2); + arg_count = arg_count - 1 + list_size; + } + /* actual call */ + be_call(vm, arg_count); + /* remove args */ + be_pop(vm, arg_count); + /* return value */ + + be_return(vm); + } + be_raise(vm, "value_error", "first argument must be a function"); + be_return_nil(vm); +} + #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(introspect) { be_native_module_function("members", m_attrlist), be_native_module_function("get", m_findmember), be_native_module_function("set", m_setmember), + be_native_module_function("vcall", m_vcall), }; be_define_native_module(introspect, NULL); @@ -92,6 +142,7 @@ module introspect (scope: global, depend: BE_USE_INTROSPECT_MODULE) { get, func(m_findmember) set, func(m_setmember) + vcall, func(m_vcall) } @const_object_info_end */ #include "../generate/be_fixed_introspect.h" diff --git a/lib/libesp32/Berry/src/be_solidifylib.c b/lib/libesp32/Berry/src/be_solidifylib.c index 9e2759702..eebc0ab9e 100644 --- a/lib/libesp32/Berry/src/be_solidifylib.c +++ b/lib/libesp32/Berry/src/be_solidifylib.c @@ -18,6 +18,7 @@ #include #if BE_USE_SOLIDIFY_MODULE +#include #ifndef INST_BUF_SIZE #define INST_BUF_SIZE 96 @@ -60,7 +61,7 @@ static void m_solidify_bvalue(bvm *vm, bvalue * value) #if BE_USE_SINGLE_FLOAT logfmt("be_const_real_hex(0x%08X)", (uint32_t) var_toobj(value)); #else - logfmt("be_const_real_hex(0x%016llX)", (uint64_t) var_toobj(value)); + logfmt("be_const_real_hex(0x%016" PRIx64 ")", (uint64_t)var_toobj(value)); #endif break; case BE_STRING: diff --git a/lib/libesp32/Berry/src/be_vm.c b/lib/libesp32/Berry/src/be_vm.c index 70857ef72..81004bbba 100644 --- a/lib/libesp32/Berry/src/be_vm.c +++ b/lib/libesp32/Berry/src/be_vm.c @@ -123,6 +123,8 @@ _vm->cf->status = PRIM_FUNC; \ } +static void prep_closure(bvm *vm, bvalue *reg, int argc, int mode); + static void attribute_error(bvm *vm, const char *t, bvalue *b, bvalue *c) { const char *attr = var_isstr(c) ? str(var_tostr(c)) : be_vtype2str(c); @@ -1011,29 +1013,31 @@ newframe: /* a new call frame */ goto recall; /* call '()' method */ } case BE_CLOSURE: { - bvalue *v, *end; - bproto *proto = var2cl(var)->proto; /* get proto for closure */ - push_closure(vm, var, proto->nstack, mode); /* prepare stack for closure */ + // bvalue *v, *end; + // bproto *proto = var2cl(var)->proto; /* get proto for closure */ + // push_closure(vm, var, proto->nstack, mode); /* prepare stack for closure */ + // reg = vm->reg; /* `reg` has changed, now new base register */ + // v = reg + argc; /* end of provided arguments */ + // end = reg + proto->argc; /* end of expected arguments */ + // for (; v < end; ++v) { /* set all not provided arguments to nil */ + // var_setnil(v); + // } + // if (proto->varg) { /* there are vararg at the last argument, build the list */ + // /* code below uses mostly low-level calls for performance */ + // be_stack_require(vm, argc + 2); /* make sure we don't overflow the stack */ + // bvalue *top_save = vm->top; /* save original stack, we need fresh slots to create the 'list' instance */ + // vm->top = v; /* move top of stack right after last argument */ + // be_newobject(vm, "list"); /* this creates 2 objects on stack: list instance, BE_LIST object */ + // blist *list = var_toobj(vm->top-1); /* get low-level BE_LIST structure */ + // v = reg + proto->argc - 1; /* last argument */ + // for (; v < reg + argc; v++) { + // be_list_push(vm, list, v); /* push all varargs into list */ + // } + // *(reg + proto->argc - 1) = *(vm->top-2); /* change the vararg argument to now contain the list instance */ + // vm->top = top_save; /* restore top of stack pointer */ + // } + prep_closure(vm, var, argc, mode); reg = vm->reg; /* `reg` has changed, now new base register */ - v = reg + argc; /* end of provided arguments */ - end = reg + proto->argc; /* end of expected arguments */ - for (; v < end; ++v) { /* set all not provided arguments to nil */ - var_setnil(v); - } - if (proto->varg) { /* there are vararg at the last argument, build the list */ - /* code below uses mostly low-level calls for performance */ - be_stack_require(vm, argc + 2); /* make sure we don't overflow the stack */ - bvalue *top_save = vm->top; /* save original stack, we need fresh slots to create the 'list' instance */ - vm->top = v; /* move top of stack right after last argument */ - be_newobject(vm, "list"); /* this creates 2 objects on stack: list instance, BE_LIST object */ - blist *list = var_toobj(vm->top-1); /* get low-level BE_LIST structure */ - v = reg + proto->argc - 1; /* last argument */ - for (; v < reg + argc; v++) { - be_list_push(vm, list, v); /* push all varargs into list */ - } - *(reg + proto->argc - 1) = *(vm->top-2); /* change the vararg argument to now contain the list instance */ - vm->top = top_save; /* restore top of stack pointer */ - } goto newframe; /* continue execution of the closure */ } case BE_NTVCLOS: { @@ -1094,16 +1098,43 @@ newframe: /* a new call frame */ } } -static void do_closure(bvm *vm, bvalue *reg, int argc) +static void prep_closure(bvm *vm, bvalue *reg, int argc, int mode) { bvalue *v, *end; bproto *proto = var2cl(reg)->proto; - push_closure(vm, reg, proto->nstack, 0); + push_closure(vm, reg, proto->nstack, mode); v = vm->reg + argc; end = vm->reg + proto->argc; for (; v <= end; ++v) { var_setnil(v); } + if (proto->varg) { /* there are vararg at the last argument, build the list */ + /* code below uses mostly low-level calls for performance */ + be_stack_require(vm, argc + 2); /* make sure we don't overflow the stack */ + bvalue *top_save = vm->top; /* save original stack, we need fresh slots to create the 'list' instance */ + vm->top = v; /* move top of stack right after last argument */ + be_newobject(vm, "list"); /* this creates 2 objects on stack: list instance, BE_LIST object */ + blist *list = var_toobj(vm->top-1); /* get low-level BE_LIST structure */ + v = vm->reg + proto->argc - 1; /* last argument */ + for (; v < vm->reg + argc; v++) { + be_list_push(vm, list, v); /* push all varargs into list */ + } + *(vm->reg + proto->argc - 1) = *(vm->top-2); /* change the vararg argument to now contain the list instance */ + vm->top = top_save; /* restore top of stack pointer */ + } +} + +static void do_closure(bvm *vm, bvalue *reg, int argc) +{ + // bvalue *v, *end; + // bproto *proto = var2cl(reg)->proto; + // push_closure(vm, reg, proto->nstack, 0); + // v = vm->reg + argc; + // end = vm->reg + proto->argc; + // for (; v <= end; ++v) { + // var_setnil(v); + // } + prep_closure(vm, reg, argc, 0); vm_exec(vm); } diff --git a/lib/libesp32/Berry/tests/class_const.be b/lib/libesp32/Berry/tests/class_const.be index a3abef400..dda433174 100644 --- a/lib/libesp32/Berry/tests/class_const.be +++ b/lib/libesp32/Berry/tests/class_const.be @@ -67,3 +67,27 @@ assert(type(a.h) == 'function') assert_attribute_error("a.g(1,2)") assert(a.h(1) == 'instance') # A.h(1) - error + +#- test static initializers -# +class A + static a = 1, b, c = 3.5, d = 42, e = "foo", f = [1], g = {} + var aa,ab +end + +assert(A.a == 1) +assert(A.b == nil) +assert(A.c == 3.5) +assert(A.d == 42) +assert(A.e == "foo") +assert(A.f == [1]) + +a = A() +assert(a.a == 1) +assert(a.b == nil) +assert(a.c == 3.5) +assert(a.d == 42) +assert(a.e == "foo") +assert(a.f == [1]) +assert(a.g == A.g) +assert(a.aa == nil) +assert(a.ab == nil) diff --git a/lib/libesp32/Berry/tests/introspect.be b/lib/libesp32/Berry/tests/introspect.be new file mode 100644 index 000000000..91531f57a --- /dev/null +++ b/lib/libesp32/Berry/tests/introspect.be @@ -0,0 +1,28 @@ +#- introspect -# +import introspect + +#- test for modules -# +m = module("m") +m.a = 1 +m.b = def () return "foo" end + +assert(introspect.members(m) == ['a', 'b']) +assert(introspect.get(m, 'a') == 1) +assert(type(introspect.get(m, 'b')) == 'function') + +introspect.set(m, 'a', 2) +assert(m.a == 2) + +#- test for instance -# +class A var a,b static c=1,d=2 def f() end end +a=A() + +assert(introspect.members(A) == ['a', 'f', 'b', 'c', 'd']) #- class members -# +assert(introspect.members(a) == ['a', 'f', 'b', 'c', 'd']) #- instance members -# + +assert(introspect.get(a, 'c') == 1) +assert(introspect.get(a, 'd') == 2) +assert(introspect.get(a, 'a') == nil) + +introspect.set(a, 'a', 3) +assert(a.a == 3) diff --git a/lib/libesp32/Berry/tests/introspect_vcall.be b/lib/libesp32/Berry/tests/introspect_vcall.be new file mode 100644 index 000000000..0f54eb03c --- /dev/null +++ b/lib/libesp32/Berry/tests/introspect_vcall.be @@ -0,0 +1,96 @@ +#- introspect vcall -# +import introspect + +#- -# +#- witness function dumping first 3 args -# +#- -# +def f(a,b,c) return [a,b,c] end + +#- simple calls with fixed args -# +assert(introspect.vcall(f) == [nil, nil, nil]) +assert(introspect.vcall(f, 1) == [1, nil, nil]) +assert(introspect.vcall(f, 1, 2) == [1, 2, nil]) +assert(introspect.vcall(f, 1, 2, 3, 4) == [1, 2, 3]) + +#- call with var args -# +assert(introspect.vcall(f, []) == [nil, nil, nil]) +assert(introspect.vcall(f, [1]) == [1, nil, nil]) +assert(introspect.vcall(f, [1, 2]) == [1, 2, nil]) +assert(introspect.vcall(f, [1, 2, 3, 4]) == [1, 2, 3]) + +#- mixed args -# +assert(introspect.vcall(f, 1, []) == [1, nil, nil]) +assert(introspect.vcall(f, 1, [2]) == [1, 2, nil]) +assert(introspect.vcall(f, 1, [2, "foo", 4]) == [1, 2, "foo"]) + +#- non terminal list -# +assert(introspect.vcall(f, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) + +#- -# +#- same tests with vararg function -# +#- -# +def g(a, *b) + if size(b) == 0 return [a, nil, nil] + elif size(b) == 1 return [a, b[0], nil] + elif size(b) > 1 return [a, b[0], b[1]] + end +end + +#- simple calls with fixed args -# +assert(introspect.vcall(g) == [nil, nil, nil]) +assert(introspect.vcall(g, 1) == [1, nil, nil]) +assert(introspect.vcall(g, 1, 2) == [1, 2, nil]) +assert(introspect.vcall(g, 1, 2, 3, 4) == [1, 2, 3]) + +#- call with var args -# +assert(introspect.vcall(g, []) == [nil, nil, nil]) +assert(introspect.vcall(g, [1]) == [1, nil, nil]) +assert(introspect.vcall(g, [1, 2]) == [1, 2, nil]) +assert(introspect.vcall(g, [1, 2, 3, 4]) == [1, 2, 3]) + +#- mixed args -# +assert(introspect.vcall(g, 1, []) == [1, nil, nil]) +assert(introspect.vcall(g, 1, [2]) == [1, 2, nil]) +assert(introspect.vcall(g, 1, [2, "foo", 4]) == [1, 2, "foo"]) + +#- non terminal list -# +assert(introspect.vcall(g, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) + +#- -# +#- test with vararg only -# +#- -# +def c(*a) return size(a) end + +#- simple calls with fixed args -# +assert(introspect.vcall(c) == 0) +assert(introspect.vcall(c, 1) == 1) +assert(introspect.vcall(c, 1, 2) == 2) +assert(introspect.vcall(c, 1, 2, 3, 4) == 4) + +#- call with var args -# +assert(introspect.vcall(c, []) == 0) +assert(introspect.vcall(c, [1]) == 1) +assert(introspect.vcall(c, [1, 2]) == 2) +assert(introspect.vcall(c, [1, 2, 3, 4]) == 4) + +#- mixed args -# +assert(introspect.vcall(c, 1, []) == 1) +assert(introspect.vcall(c, 1, [2]) == 2) +assert(introspect.vcall(c, 1, [2, "foo", 4]) == 4) + +#- non terminal list -# +assert(introspect.vcall(c, 1, [2, 3, 4], "foo") == 3) + +#- -# +#- test with native function -# +#- -# +import string + +assert(introspect.vcall(string.format, "a") == "a") +assert(introspect.vcall(string.format, "%i", 1) == "1") +assert(introspect.vcall(string.format, "%i - %i", 1, 2) == "1 - 2") + +assert(introspect.vcall(string.format, "%i - %i", [1, 2]) == "1 - 2") +assert(introspect.vcall(string.format, "%i - %i", [1, 2, 3]) == "1 - 2") + +assert(introspect.vcall(string.format, "%i - %i", 1, [1, 2, 3]) == "1 - 1") diff --git a/lib/libesp32/Berry/tests/lexergc.be b/lib/libesp32/Berry/tests/lexergc.be new file mode 100644 index 000000000..155800b95 --- /dev/null +++ b/lib/libesp32/Berry/tests/lexergc.be @@ -0,0 +1,12 @@ +#- check the gc bug fixed in #110 -# +#- Berry must be compiled with `#define BE_USE_DEBUG_GC 1` -# +#- for the initial bug to happen -# + +code = "()" #- this code triggers a lexer exception -# + +try + compile(code) + assert(false) #- this should never be reached -# +except .. as e, m + assert(m == "string:1: unexpected symbol near ')'") +end \ No newline at end of file From 6ddb14bc6a0cf8c947cab44c58e358ae35841509 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 09:42:10 +0200 Subject: [PATCH 121/317] Add Command ``SetOption2 1`` Add Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/settings.h | 2 +- tasmota/support_tasmota.ino | 2 +- tools/decode-status.py | 4 ++-- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e86acef39..0a6e3102d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Support for Hydreon RG-15 Solid State Rain sensor (#12974) - Support for IKEA VINDRIKTNING particle concentration sensor (#12976) - Berry support for Curve 25519 EC crypto +- Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message ### Changed - Shelly EM template needs to use GPIO ADE7953_IRQ_2 diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ea38f6d5c..efd6c2d38 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -101,6 +101,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo ## Changelog v9.5.0.7 ### Added - Release of [Tasmota WebInstaller](https://arendst.github.io/Tasmota-firmware/) +- Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver diff --git a/tasmota/settings.h b/tasmota/settings.h index 9fb21e886..2ceb536b4 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -28,7 +28,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu struct { // SetOption0 .. SetOption31 uint32_t save_state : 1; // bit 0 - SetOption0 - (Settings) Save power state (1) and use after restart uint32_t button_restrict : 1; // bit 1 - SetOption1 - (Button) Control button single press (1) or multipress (0) - uint32_t ex_value_units : 1; // bit 2 - SetOption2 - (not used) Add units to JSON status messages - removed 6.6.0.21 + uint32_t mqtt_add_global_info : 1; // bit 2 - SetOption2 - (MQTT) Add global temperature/humidity/pressure info to JSON sensor message uint32_t mqtt_enabled : 1; // bit 3 - SetOption3 - (MQTT) Enable (1) uint32_t mqtt_response : 1; // bit 4 - SetOption4 - (MQTT) Switch between RESULT (0) or COMMAND (1) uint32_t mqtt_power_retain : 1; // bit 5 - CMND_POWERRETAIN diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index af5a9075e..31b4e0e17 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -844,7 +844,7 @@ bool MqttShowSensor(void) XsnsCall(FUNC_JSON_APPEND); XdrvCall(FUNC_JSON_APPEND); - if (TasmotaGlobal.global_update) { + if (TasmotaGlobal.global_update && Settings->flag.mqtt_add_global_info) { if ((TasmotaGlobal.humidity > 0) || !isnan(TasmotaGlobal.temperature_celsius) || (TasmotaGlobal.pressure_hpa != 0)) { uint32_t add_comma = 0; ResponseAppend_P(PSTR(",\"Global\":{")); diff --git a/tools/decode-status.py b/tools/decode-status.py index ffbbca5b0..e406bd6e0 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -52,7 +52,7 @@ a_on_off = ["OFF","ON "] a_setoption = [[ "(Settings) Save power state (1) and use after restart", "(Button) Control button single press (1) or multipress (0)", - "(Not used) Add units to JSON status messages", + "(MQTT) Add global temperature/humidity/pressure info to JSON sensor message", "(MQTT) Enable (1)", "(MQTT) Switch between RESULT (0) or COMMAND (1)", "(MQTT) Retain on Power", @@ -288,7 +288,7 @@ else: obj = json.load(fp) def StartDecode(): - print ("\n*** decode-status.py v20210826 by Theo Arends and Jacek Ziolkowski ***") + print ("\n*** decode-status.py v20210901 by Theo Arends and Jacek Ziolkowski ***") # print("Decoding\n{}".format(obj)) From feab61627751c685bd4081330db201d05b806b97 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 11:14:30 +0200 Subject: [PATCH 122/317] Fix Sonoff L1 (lite) smoother color transitions --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xlgt_05_sonoff_l1.ino | 115 +++++++++++++++++++++++++--------- 3 files changed, 86 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a6e3102d..ca682600c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ All notable changes to this project will be documented in this file. - Hass and Tasmota discovery prefix topic notifications (#12972) - Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 (#12930) - Shelly Dimmer 2 Energy usage (#12815) +- Sonoff L1 (lite) smoother color transitions ## [9.5.0.6] 20210820 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index efd6c2d38..7d1db9225 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -157,6 +157,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - ESP32 core v2.0.0 setting hostname - ESP32-C3 settings layout for configuration backup and restore - ESP32-Solo OTA upgrade +- Sonoff L1 (lite) smoother color transitions - DDS238-2 wrong reactive power value [#12283](https://github.com/arendst/Tasmota/issues/12283) - ESP32 Webcam add boundary marker before sending mjpeg image [#12376](https://github.com/arendst/Tasmota/issues/12376) - NO VALID JSON regression from may 4th [#12440](https://github.com/arendst/Tasmota/issues/12440) diff --git a/tasmota/xlgt_05_sonoff_l1.ino b/tasmota/xlgt_05_sonoff_l1.ino index 6be1205f2..080bc9c7a 100644 --- a/tasmota/xlgt_05_sonoff_l1.ino +++ b/tasmota/xlgt_05_sonoff_l1.ino @@ -26,9 +26,11 @@ #define XLGT_05 5 #define SONOFF_L1_START_DELAY // Sync Nuvotron power state with Tasmota on power up -//#define SONOFF_L1_ALLOW_REMOTE_INTERRUPT // During schemes 2..4 +//#define SONOFF_L1_ALLOW_REMOTE_INTERRUPT // During schemes 2..4 or if fade is active #define SONOFF_L1_DEBUG1 // Add send and receive logging +#define SONOFF_L1_BUSY 200 // Time in milliseconds to handle a serial request + #define SONOFF_L1_BUFFER_SIZE 170 #define SONOFF_L1_MODE_COLORFUL 1 // [Color key] Colorful (static color) @@ -46,10 +48,10 @@ struct SNFL1 { char *buffer; -#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT + uint32_t process_time = 0; uint32_t unlock = 0; - bool receive_ready = true; -#endif + uint32_t busy = SONOFF_L1_BUSY; + uint16_t sequence; uint8_t color[3]; uint8_t dimmer; uint8_t power; @@ -75,18 +77,29 @@ void SnfL1SendDelayed(void) { } #endif // SONOFF_L1_START_DELAY +#include +Ticker SnfL1Backlog; + +void SnfL1SendBacklog(void) { +// AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: ++Exec backlog")); + + SnfL1SetChannels(true); +} + void SnfL1Send(void) { #ifdef SONOFF_L1_DEBUG1 - AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: Send %s"), Snfl1.buffer); + AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: Send '%s'"), Snfl1.buffer); #endif Serial.print(Snfl1.buffer); Serial.write(0x1B); Serial.flush(); + + Snfl1.process_time = millis(); + Snfl1.unlock = Snfl1.process_time + Snfl1.busy; // Wait for 'AT+RESULT="sequence":"1630250830439"' } -void SnfL1SerialSendOk(void) { +void SnfL1SendOk(void) { snprintf_P(Snfl1.buffer, SONOFF_L1_BUFFER_SIZE, PSTR("AT+SEND=ok")); - SnfL1Send(); } @@ -101,16 +114,47 @@ bool SnfL1SerialInput(void) { } else { TasmotaGlobal.serial_in_buffer[TasmotaGlobal.serial_in_byte_counter++] = 0x00; - // AT+RESULT="sequence":"1554682835320" - // AT+UPDATE="sequence":"34906","switch":"on","light_type":1,"colorR":0,"colorG":16,"colorB":0,"bright":6,"mode":1 + // AT+RESULT="sequence":"0458" = L1 + // AT+RESULT="sequence":"0458","switch" = L1 lite - just returns part of receive buffer + // AT+RESULT="sequence":"1554682835320" = L1 both + // AT+UPDATE="sequence":"1554682835320","switch":"on","light_type":1,"colorR":0,"colorG":16,"colorB":0,"bright":6,"mode":1 // AT+UPDATE="switch":"on","light_type":1,"colorR":255,"colorG":0,"colorB":0,"bright":6,"mode":1,"speed":100,"sensitive":10 #ifdef SONOFF_L1_DEBUG1 - AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd %s"), TasmotaGlobal.serial_in_buffer); + AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: Rcvd '%s'"), TasmotaGlobal.serial_in_buffer); #endif if (!strncmp(TasmotaGlobal.serial_in_buffer +3, "RESULT", 6)) { #ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT - Snfl1.receive_ready = true; -#endif + Snfl1.busy = 500; +#else +/* + // Read sequence number and calculate time it took from send of same sequence + // this indicates Nuvoton processing speed (50-60 for L1, 30-40 for L1 lite) + // Important for constant color change schemes and fade + char *end_str; + char *string = TasmotaGlobal.serial_in_buffer +10; + char *token = strtok_r(string, ",", &end_str); + if (token) { + char* end_token; + char* token2 = strtok_r(token, ":", &end_token); + char* token3 = strtok_r(nullptr, ":", &end_token); + if (!strncmp(token2, "\"sequence\"", 10) && (strlen(token3) > 3)) { + token3 = token3 + strlen(token3) - 4; // Last three digits + if (Snfl1.sequence == atoi(token3)) { + Snfl1.busy = (millis() - Snfl1.process_time) + 30; // Add some scatter time + if (Snfl1.busy > SONOFF_L1_BUSY) { + Snfl1.busy = SONOFF_L1_BUSY; + } + } + } + } +*/ + Snfl1.busy = 80; +#endif // SONOFF_L1_ALLOW_REMOTE_INTERRUPT +// AddLog(LOG_LEVEL_DEBUG, PSTR("Sl1: ++Busy %d"), Snfl1.busy); + + SnfL1SendOk(); + return true; + } else if (!strncmp(TasmotaGlobal.serial_in_buffer +3, "UPDATE", 6)) { char cmnd_dimmer[20]; @@ -190,6 +234,8 @@ bool SnfL1SerialInput(void) { token = strtok_r(nullptr, ",", &end_str); } + SnfL1SendOk(); + if (is_power_change) { if (Settings->light_scheme > 0) { if (!switch_state) { // If power off RC button pressed stop schemes @@ -197,9 +243,10 @@ bool SnfL1SerialInput(void) { snprintf_P(cmnd_scheme, sizeof(cmnd_scheme), PSTR(D_CMND_SCHEME " 0")); ExecuteCommand(cmnd_scheme, SRC_REMOTE); } - } else { - ExecuteCommandPower(1, switch_state, SRC_REMOTE); } +// else { + ExecuteCommandPower(1, switch_state, SRC_REMOTE); +// } } else if (is_brightness_change) { ExecuteCommand(cmnd_dimmer, SRC_REMOTE); @@ -221,8 +268,6 @@ bool SnfL1SerialInput(void) { } } - SnfL1SerialSendOk(); - return true; } TasmotaGlobal.serial_in_byte = 0; @@ -231,10 +276,10 @@ bool SnfL1SerialInput(void) { /********************************************************************************************/ -bool SnfL1SetChannels(void) { -#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT - if (Snfl1.receive_ready || TimeReached(Snfl1.unlock)) { -#endif +void SnfL1SetChannels(bool backlog) { + // Takes about 100ms at 9600 bps + + if (!backlog) { uint8_t power = Light.power; bool power_changed = (Snfl1.power != power); Snfl1.power = power; @@ -247,17 +292,23 @@ bool SnfL1SetChannels(void) { bool color_changed = false; if (!power_changed) { for (uint32_t i = 0; i < 3; i++) { - if ((Snfl1.color[i] < scale_col[i] -5) || (Snfl1.color[i] > scale_col[i] +5)) { - color_changed = true; // Allow scale-up margins of +/-5 + if (Snfl1.color[i] != scale_col[i]) { + color_changed = true; } Snfl1.color[i] = scale_col[i]; } } - if (!power_changed && !dimmer_changed && !color_changed && (Snfl1.old_music_sync == Settings->sbflag1.sonoff_l1_music_sync)) { return true; } + if (!power_changed && !dimmer_changed && !color_changed && (Snfl1.old_music_sync == Settings->sbflag1.sonoff_l1_music_sync)) { return; } + } + + if (TimeReached(Snfl1.unlock)) { + +// AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: ++SC snd")); uint32_t mode = (Settings->sbflag1.sonoff_l1_music_sync) ? SONOFF_L1_MODE_SYNC_TO_MUSIC : SONOFF_L1_MODE_COLORFUL; + Snfl1.sequence = millis()%1000; snprintf_P(Snfl1.buffer, SONOFF_L1_BUFFER_SIZE, PSTR("AT+UPDATE=\"sequence\":\"%d%03d\",\"switch\":\"%s\",\"light_type\":1,\"colorR\":%d,\"colorG\":%d,\"colorB\":%d,\"bright\":%d,\"mode\":%d"), - LocalTime(), millis()%1000, + LocalTime(), Snfl1.sequence, Snfl1.power ? "on" : "off", Snfl1.color[0], Snfl1.color[1], Snfl1.color[2], Snfl1.dimmer, @@ -277,13 +328,14 @@ bool SnfL1SetChannels(void) { } else #endif // SONOFF_L1_START_DELAY SnfL1Send(); + } else { + if (Settings->light_scheme == 0) { + // Fix last fade state +// AddLog(LOG_LEVEL_DEBUG, PSTR("SL1: ++SC bck")); -#ifdef SONOFF_L1_ALLOW_REMOTE_INTERRUPT - Snfl1.unlock = millis() + 500; // Allow time for the RC - Snfl1.receive_ready = false; + SnfL1Backlog.once_ms(SONOFF_L1_BUSY, SnfL1SendBacklog); // Set backlog + } } -#endif - return true; } bool SnfL1SetChannelsFromFunc(void) { @@ -293,7 +345,8 @@ bool SnfL1SetChannelsFromFunc(void) { } else { Settings->sbflag1.sonoff_l1_music_sync = 0; // Disable MusicSync on user color change } - return SnfL1SetChannels(); + SnfL1SetChannels(false); + return true; } bool SnfL1ModuleSelected(void) { @@ -336,7 +389,7 @@ void CmndMusicSync(void) { if ((parm[2] > 0) && (parm[2] < 101)) { Snfl1.speed = parm[2]; // 1..100 } - SnfL1SetChannels(); + SnfL1SetChannels(false); } Response_P(PSTR("{\"%s\":{\"Mode\":\"%s\",\"Sensitive\":%d,\"Speed\":%d}}"), XdrvMailbox.command, GetStateText(Settings->sbflag1.sonoff_l1_music_sync), Snfl1.sensitive, Snfl1.speed); From c26adde18343e7eb167fd346527cacfc55c48283 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 11:34:19 +0200 Subject: [PATCH 123/317] Bump version to v9.5.0.8 --- CHANGELOG.md | 5 ++++- RELEASENOTES.md | 2 +- tasmota/tasmota_version.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca682600c..5dc0877e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,10 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.5.0.7] +## [9.5.0.8] + + +## [9.5.0.7] 20210901 ### Added - Turn HTTP API (command ``SetOption128 1``) default on for backward compatibility - Support for IEM3155 Wattmeter (#12940) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7d1db9225..3b86bb78f 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -98,7 +98,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.5.0.7 +## Changelog v9.5.0.8 ### Added - Release of [Tasmota WebInstaller](https://arendst.github.io/Tasmota-firmware/) - Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 6988c52b6..713a71868 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09050007; +const uint32_t VERSION = 0x09050008; #endif // _TASMOTA_VERSION_H_ From 2b0845a697ab6c3ecfffa4beb70c6d46f72754cc Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 15:41:49 +0200 Subject: [PATCH 124/317] Add status comments to MQTT code --- tasmota/xdrv_02_9_mqtt.ino | 111 ++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/tasmota/xdrv_02_9_mqtt.ino b/tasmota/xdrv_02_9_mqtt.ino index 0277bbc46..78ac582ae 100644 --- a/tasmota/xdrv_02_9_mqtt.ino +++ b/tasmota/xdrv_02_9_mqtt.ino @@ -858,7 +858,8 @@ void MqttDisconnected(int state) { // Check if this solves intermittent MQTT re-connection failures when broker is restarted EspClient.stop(); - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CONNECT_FAILED_TO " %s:%d, rc %d. " D_RETRY_IN " %d " D_UNIT_SECOND), SettingsText(SET_MQTT_HOST), Settings->mqtt_port, state, Mqtt.retry_counter); + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT D_CONNECT_FAILED_TO " %s:%d, rc %d. " D_RETRY_IN " %d " D_UNIT_SECOND), + SettingsText(SET_MQTT_HOST), Settings->mqtt_port, state, Mqtt.retry_counter); TasmotaGlobal.rules_flag.mqtt_disconnected = 1; } @@ -1122,10 +1123,116 @@ void MqttReconnect(void) { } else { #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) { +/* + getLastError codes as documented in lib\lib_ssl\bearssl-esp8266\src\t_bearssl_ssl.h + SSL-level error codes + | Receive Fatal Alert + | | Send Fatal Alert + | | | + 0 : 256 : 512 : BR_ERR_OK + 1 : 257 : 513 : BR_ERR_BAD_PARAM - caller-provided parameter is incorrect + 2 : 258 : 514 : BR_ERR_BAD_STATE - operation requested by the caller cannot be applied with the current context state (e.g. reading data while outgoing data is waiting to be sent) + 3 : 259 : 515 : BR_ERR_UNSUPPORTED_VERSION - incoming protocol or record version is unsupported + 4 : 260 : 516 : BR_ERR_BAD_VERSION - incoming record version does not match the expected version + 5 : 261 : 517 : BR_ERR_BAD_LENGTH - incoming record length is invalid + 6 : 262 : 518 : BR_ERR_TOO_LARGE - incoming record is too large to be processed, or buffer is too small for the handshake message to send + 7 : 263 : 519 : BR_ERR_BAD_MAC - decryption found an invalid padding, or the record MAC is not correct + 8 : 264 : 520 : BR_ERR_NO_RANDOM - no initial entropy was provided, and none can be obtained from the OS + 9 : 265 : 521 : BR_ERR_UNKNOWN_TYPE - incoming record type is unknown + 10 : 266 : 522 : BR_ERR_UNEXPECTED - incoming record or message has wrong type with regards to the current engine state + 12 : 268 : 524 : BR_ERR_BAD_CCS - ChangeCipherSpec message from the peer has invalid contents + 13 : 269 : 525 : BR_ERR_BAD_ALERT - alert message from the peer has invalid contents (odd length) + 14 : 270 : 526 : BR_ERR_BAD_HANDSHAKE - incoming handshake message decoding failed + 15 : 271 : 527 : BR_ERR_OVERSIZED_ID - ServerHello contains a session ID which is larger than 32 bytes + 16 : 272 : 528 : BR_ERR_BAD_CIPHER_SUITE - server wants to use a cipher suite that we did not claim to support. This is also reported if we tried to advertise a cipher suite that we do not support + 17 : 273 : 529 : BR_ERR_BAD_COMPRESSION - server wants to use a compression that we did not claim to support + 18 : 274 : 530 : BR_ERR_BAD_FRAGLEN - server's max fragment length does not match client's + 19 : 275 : 531 : BR_ERR_BAD_SECRENEG - secure renegotiation failed + 20 : 276 : 532 : BR_ERR_EXTRA_EXTENSION - server sent an extension type that we did not announce, or used the same extension type several times in a single ServerHello + 21 : 277 : 533 : BR_ERR_BAD_SNI - invalid Server Name Indication contents (when used by the server, this extension shall be empty) + 22 : 278 : 534 : BR_ERR_BAD_HELLO_DONE - invalid ServerHelloDone from the server (length is not 0) + 23 : 279 : 535 : BR_ERR_LIMIT_EXCEEDED - internal limit exceeded (e.g. server's public key is too large) + 24 : 280 : 536 : BR_ERR_BAD_FINISHED - Finished message from peer does not match the expected value + 25 : 281 : 537 : BR_ERR_RESUME_MISMATCH - session resumption attempt with distinct version or cipher suite + 26 : 282 : 538 : BR_ERR_INVALID_ALGORITHM - unsupported or invalid algorithm (ECDHE curve, signature algorithm, hash function) + 27 : 283 : 539 : BR_ERR_BAD_SIGNATURE - invalid signature (on ServerKeyExchange from server, or in CertificateVerify from client) + 28 : 284 : 540 : BR_ERR_WRONG_KEY_USAGE - peer's public key does not have the proper type or is not allowed for requested operation + 29 : 285 : 541 : BR_ERR_NO_CLIENT_AUTH - client did not send a certificate upon request, or the client certificate could not be validated + 31 : 287 : 543 : BR_ERR_IO - I/O error or premature close on underlying transport stream. This error code is set only by the simplified I/O API ("br_sslio_*") + + getLastError codes as documented in lib\lib_ssl\bearssl-esp8266\src\t_bearssl_x509.h + 32 : BR_ERR_X509_OK - validation was successful; this is not actually an error + 33 : BR_ERR_X509_INVALID_VALUE - invalid value in an ASN.1 structure + 34 : BR_ERR_X509_TRUNCATED - truncated certificate + 35 : BR_ERR_X509_EMPTY_CHAIN - empty certificate chain (no certificate at all) + 36 : BR_ERR_X509_INNER_TRUNC - decoding error: inner element extends beyond outer element size + 37 : BR_ERR_X509_BAD_TAG_CLASS - decoding error: unsupported tag class (application or private) + 38 : BR_ERR_X509_BAD_TAG_VALUE - decoding error: unsupported tag value + 39 : BR_ERR_X509_INDEFINITE_LENGTH - decoding error: indefinite length + 40 : BR_ERR_X509_EXTRA_ELEMENT - decoding error: extraneous element + 41 : BR_ERR_X509_UNEXPECTED - decoding error: unexpected element + 42 : BR_ERR_X509_NOT_CONSTRUCTED - decoding error: expected constructed element, but is primitive + 43 : BR_ERR_X509_NOT_PRIMITIVE - decoding error: expected primitive element, but is constructed + 44 : BR_ERR_X509_PARTIAL_BYTE - decoding error: BIT STRING length is not multiple of 8 + 45 : BR_ERR_X509_BAD_BOOLEAN - decoding error: BOOLEAN value has invalid length + 46 : BR_ERR_X509_OVERFLOW - decoding error: value is off-limits + 47 : BR_ERR_X509_BAD_DN - invalid distinguished name + 48 : BR_ERR_X509_BAD_TIME - invalid date/time representation + 49 : BR_ERR_X509_UNSUPPORTED - certificate contains unsupported features that cannot be ignored + 50 : BR_ERR_X509_LIMIT_EXCEEDED - key or signature size exceeds internal limits + 51 : BR_ERR_X509_WRONG_KEY_TYPE - key type does not match that which was expected + 52 : BR_ERR_X509_BAD_SIGNATURE - signature is invalid + 53 : BR_ERR_X509_TIME_UNKNOWN - validation time is unknown + 54 : BR_ERR_X509_EXPIRED - certificate is expired or not yet valid + 55 : BR_ERR_X509_DN_MISMATCH - issuer/subject DN mismatch in the chain + 56 : BR_ERR_X509_BAD_SERVER_NAME - expected server name was not found in the chain + 57 : BR_ERR_X509_CRITICAL_EXTENSION - unknown critical extension in certificate + 58 : BR_ERR_X509_NOT_CA - not a CA, or path length constraint violation + 59 : BR_ERR_X509_FORBIDDEN_KEY_USAGE - Key Usage extension prohibits intended usage + 60 : BR_ERR_X509_WEAK_PUBLIC_KEY - public key found in certificate is too small + 62 : BR_ERR_X509_NOT_TRUSTED - chain could not be linked to a trust anchor + + getLastError codes as documented in lib\lib_ssl\bearssl-esp8266\src\t_bearssl_ssl.h + 10 : 266 : BR_ALERT_UNEXPECTED_MESSAGE + 20 : 276 : BR_ALERT_BAD_RECORD_MAC + 22 : 278 : BR_ALERT_RECORD_OVERFLOW + 30 : 286 : BR_ALERT_DECOMPRESSION_FAILURE + 40 : 296 : BR_ALERT_HANDSHAKE_FAILURE + 42 : 298 : BR_ALERT_BAD_CERTIFICATE + 43 : 299 : BR_ALERT_UNSUPPORTED_CERTIFICATE + 44 : 300 : BR_ALERT_CERTIFICATE_REVOKED + 45 : 301 : BR_ALERT_CERTIFICATE_EXPIRED + 46 : 302 : BR_ALERT_CERTIFICATE_UNKNOWN + 47 : 303 : BR_ALERT_ILLEGAL_PARAMETER + 48 : 304 : BR_ALERT_UNKNOWN_CA + 49 : 305 : BR_ALERT_ACCESS_DENIED + 50 : 306 : BR_ALERT_DECODE_ERROR + 51 : 307 : BR_ALERT_DECRYPT_ERROR + 70 : 326 : BR_ALERT_PROTOCOL_VERSION + 71 : 327 : BR_ALERT_INSUFFICIENT_SECURITY + 80 : 336 : BR_ALERT_INTERNAL_ERROR + 90 : 346 : BR_ALERT_USER_CANCELED + 100 : 356 : BR_ALERT_NO_RENEGOTIATION + 110 : 366 : BR_ALERT_UNSUPPORTED_EXTENSION + 120 : 376 : BR_ALERT_NO_APPLICATION_PROTOCOL +*/ AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_MQTT "TLS connection error: %d"), tlsClient->getLastError()); } #endif - MqttDisconnected(MqttClient.state()); // status codes are documented here http://pubsubclient.knolleary.net/api.html#state +/* + State codes as documented here http://pubsubclient.knolleary.net/api.html#state + -4 : MQTT_CONNECTION_TIMEOUT - the server didn't respond within the keepalive time + -3 : MQTT_CONNECTION_LOST - the network connection was broken + -2 : MQTT_CONNECT_FAILED - the network connection failed + -1 : MQTT_DISCONNECTED - the client is disconnected cleanly + 0 : MQTT_CONNECTED - the client is connected + 1 : MQTT_CONNECT_BAD_PROTOCOL - the server doesn't support the requested version of MQTT + 2 : MQTT_CONNECT_BAD_CLIENT_ID - the server rejected the client identifier + 3 : MQTT_CONNECT_UNAVAILABLE - the server was unable to accept the connection + 4 : MQTT_CONNECT_BAD_CREDENTIALS - the username/password were rejected + 5 : MQTT_CONNECT_UNAUTHORIZED - the client was not authorized to connect +*/ + MqttDisconnected(MqttClient.state()); } } From 44c0059a88814a0b59791b3710b1a8aac8d92437 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 17:32:25 +0200 Subject: [PATCH 125/317] Add VINDRIGTNING user compile time control Add user compile time control over VINDRIGTNING undocumented values --- tasmota/my_user_config.h | 2 + tasmota/xsns_91_vindriktning.ino | 79 ++++++++++++++++---------------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index ca09bd7bd..b3d60d277 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -746,6 +746,8 @@ //#define USE_TFMINIPLUS // Add support for TFmini Plus (TFmini, TFmini-S) LiDAR modules via UART interface (+0k8) //#define USE_HRG15 // Add support for Hydreon RG-15 Solid State Rain sensor (+1k5 code) //#define USE_VINDRIKTNING // Add support for IKEA VINDRIKTNING particle concentration sensor (+0k6 code) +// #define VINDRIKTNING_SHOW_PM1 // Display undocumented/supposed PM1.0 values +// #define VINDRIKTNING_SHOW_PM10 // Display undocumented/supposed PM10 values // -- Power monitoring sensors -------------------- #define USE_ENERGY_SENSOR // Add support for Energy Monitors (+14k code) diff --git a/tasmota/xsns_91_vindriktning.ino b/tasmota/xsns_91_vindriktning.ino index e5a67095d..0d752310a 100644 --- a/tasmota/xsns_91_vindriktning.ino +++ b/tasmota/xsns_91_vindriktning.ino @@ -27,7 +27,8 @@ #define XSNS_91 91 -//#define XSNS_91_XTRA_INFO // Display unverified data for PM1.0 and PM10 +//#define VINDRIKTNING_SHOW_PM1 // Display undocumented/supposed PM1.0 values +//#define VINDRIKTNING_SHOW_PM10 // Display undocumented/supposed PM10 values #include @@ -36,11 +37,13 @@ TasmotaSerial *VindriktningSerial; struct VINDRIKTNING { - uint16_t pm2_5 = 0; -#ifdef XSNS_91_XTRA_INFO +#ifdef VINDRIKTNING_SHOW_PM1 uint16_t pm1_0 = 0; +#endif // VINDRIKTNING_SHOW_PM1 + uint16_t pm2_5 = 0; +#ifdef VINDRIKTNING_SHOW_PM10 uint16_t pm10 = 0; -#endif // XSNS_91_XTRA_INFO +#endif // VINDRIKTNING_SHOW_PM10 uint8_t type = 1; uint8_t valid = 0; bool discovery_triggered = false; @@ -77,10 +80,12 @@ bool VindriktningReadData(void) { // 16 11 0b 00 00 00 0c 00 00 03 cb 00 00 00 0c 01 00 00 00 e7 // |pm2_5| |pm1_0| |pm10 | | CRC | Vindriktning.pm2_5 = (buffer[5] << 8) | buffer[6]; -#ifdef XSNS_91_XTRA_INFO +#ifdef VINDRIKTNING_SHOW_PM1 Vindriktning.pm1_0 = (buffer[9] << 8) | buffer[10]; +#endif // VINDRIKTNING_SHOW_PM1 +#ifdef VINDRIKTNING_SHOW_PM10 Vindriktning.pm10 = (buffer[13] << 8) | buffer[14]; -#endif // XSNS_91_XTRA_INFO +#endif // VINDRIKTNING_SHOW_PM10 if (!Vindriktning.discovery_triggered) { TasmotaGlobal.discovery_counter = 1; // force TasDiscovery() @@ -114,60 +119,56 @@ void VindriktningInit(void) { } } -#ifdef XSNS_91_XTRA_INFO - #ifdef USE_WEBSERVER -const char HTTP_VINDRIKTNING_SNS[] PROGMEM = - "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 1.0 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" - "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}" +#ifdef VINDRIKTNING_SHOW_PM1 +const char HTTP_VINDRIKTNING_SNS_PM1[] PROGMEM = + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 1 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = +#endif // VINDRIKTNING_SHOW_PM1 +const char HTTP_VINDRIKTNING_SNS_PM2_5[] PROGMEM = + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = +#ifdef VINDRIKTNING_SHOW_PM10 +const char HTTP_VINDRIKTNING_SNS_PM10[] PROGMEM = "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 10 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = +#endif // VINDRIKTNING_SHOW_PM10 #endif // USE_WEBSERVER void VindriktningShow(bool json) { if (Vindriktning.valid) { if (json) { - ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{\"PM1\":%d,\"PM2.5\":%d,\"PM10\":%d}"), Vindriktning.pm1_0, Vindriktning.pm2_5, Vindriktning.pm10); + ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{")); +#ifdef VINDRIKTNING_SHOW_PM1 + ResponseAppend_P(PSTR("\"PM1\":%d,"), Vindriktning.pm1_0); +#endif // VINDRIKTNING_SHOW_PM1 + ResponseAppend_P(PSTR("\"PM2.5\":%d"), Vindriktning.pm2_5); +#ifdef VINDRIKTNING_SHOW_PM10 + ResponseAppend_P(PSTR(",\"PM10\":%d"), Vindriktning.pm10); +#endif // VINDRIKTNING_SHOW_PM10 + ResponseJsonEnd(); #ifdef USE_DOMOTICZ if (0 == TasmotaGlobal.tele_period) { +#ifdef VINDRIKTNING_SHOW_PM1 DomoticzSensor(DZ_COUNT, Vindriktning.pm1_0); // PM1.0 +#endif // VINDRIKTNING_SHOW_PM1 DomoticzSensor(DZ_VOLTAGE, Vindriktning.pm2_5); // PM2.5 +#ifdef VINDRIKTNING_SHOW_PM10 DomoticzSensor(DZ_CURRENT, Vindriktning.pm10); // PM10 +#endif // VINDRIKTNING_SHOW_PM10 } #endif // USE_DOMOTICZ #ifdef USE_WEBSERVER } else { - WSContentSend_PD(HTTP_VINDRIKTNING_SNS, Vindriktning.pm1_0, Vindriktning.pm2_5, Vindriktning.pm10); +#ifdef VINDRIKTNING_SHOW_PM1 + WSContentSend_PD(HTTP_VINDRIKTNING_SNS_PM1, Vindriktning.pm1_0); +#endif // VINDRIKTNING_SHOW_PM1 + WSContentSend_PD(HTTP_VINDRIKTNING_SNS_PM2_5, Vindriktning.pm2_5); +#ifdef VINDRIKTNING_SHOW_PM10 + WSContentSend_PD(HTTP_VINDRIKTNING_SNS_PM10, Vindriktning.pm10); +#endif // VINDRIKTNING_SHOW_PM10 #endif // USE_WEBSERVER } } } -#else // No XSNS_91_XTRA_INFO - -#ifdef USE_WEBSERVER -const char HTTP_VINDRIKTNING_SNS[] PROGMEM = - "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; -#endif // USE_WEBSERVER - -void VindriktningShow(bool json) { - if (Vindriktning.valid) { - if (json) { - ResponseAppend_P(PSTR(",\"VINDRIKTNING\":{\"PM2.5\":%d}"), Vindriktning.pm2_5); -#ifdef USE_DOMOTICZ - if (0 == TasmotaGlobal.tele_period) { - DomoticzSensor(DZ_VOLTAGE, Vindriktning.pm2_5); // PM2.5 - } -#endif // USE_DOMOTICZ -#ifdef USE_WEBSERVER - } else { - WSContentSend_PD(HTTP_VINDRIKTNING_SNS, Vindriktning.pm2_5); -#endif // USE_WEBSERVER - } - } -} - -#endif // XSNS_91_XTRA_INFO - /*********************************************************************************************\ * Interface \*********************************************************************************************/ From 62983899b626c0c81a998de381471b90d169d648 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 1 Sep 2021 17:43:04 +0200 Subject: [PATCH 126/317] Refactor webinfo --- tasmota/xsns_91_vindriktning.ino | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/tasmota/xsns_91_vindriktning.ino b/tasmota/xsns_91_vindriktning.ino index 0d752310a..8e88bb596 100644 --- a/tasmota/xsns_91_vindriktning.ino +++ b/tasmota/xsns_91_vindriktning.ino @@ -120,16 +120,8 @@ void VindriktningInit(void) { } #ifdef USE_WEBSERVER -#ifdef VINDRIKTNING_SHOW_PM1 -const char HTTP_VINDRIKTNING_SNS_PM1[] PROGMEM = - "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 1 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = -#endif // VINDRIKTNING_SHOW_PM1 -const char HTTP_VINDRIKTNING_SNS_PM2_5[] PROGMEM = - "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 2.5 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = -#ifdef VINDRIKTNING_SHOW_PM10 -const char HTTP_VINDRIKTNING_SNS_PM10[] PROGMEM = - "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " 10 " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = -#endif // VINDRIKTNING_SHOW_PM10 +const char HTTP_VINDRIKTNING_SNS[] PROGMEM = + "{s}VINDRIKTNING " D_ENVIRONMENTAL_CONCENTRATION " %s " D_UNIT_MICROMETER "{m}%d " D_UNIT_MICROGRAM_PER_CUBIC_METER "{e}"; // {s} = , {m} = , {e} = #endif // USE_WEBSERVER void VindriktningShow(bool json) { @@ -158,11 +150,11 @@ void VindriktningShow(bool json) { #ifdef USE_WEBSERVER } else { #ifdef VINDRIKTNING_SHOW_PM1 - WSContentSend_PD(HTTP_VINDRIKTNING_SNS_PM1, Vindriktning.pm1_0); + WSContentSend_PD(HTTP_VINDRIKTNING_SNS, "1", Vindriktning.pm1_0); #endif // VINDRIKTNING_SHOW_PM1 - WSContentSend_PD(HTTP_VINDRIKTNING_SNS_PM2_5, Vindriktning.pm2_5); + WSContentSend_PD(HTTP_VINDRIKTNING_SNS, "2.5", Vindriktning.pm2_5); #ifdef VINDRIKTNING_SHOW_PM10 - WSContentSend_PD(HTTP_VINDRIKTNING_SNS_PM10, Vindriktning.pm10); + WSContentSend_PD(HTTP_VINDRIKTNING_SNS, "10", Vindriktning.pm10); #endif // VINDRIKTNING_SHOW_PM10 #endif // USE_WEBSERVER } From c21f6d455df4abf9ef6cb103b03a3e994921ec7b Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 1 Sep 2021 19:42:57 +0200 Subject: [PATCH 127/317] Fix ESP32 TLS reconnects --- lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp index 5f8bd999a..720ca2580 100755 --- a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp +++ b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp @@ -284,7 +284,7 @@ void WiFiClientSecure_light::stop(void) { void WiFiClientSecure_light::flush(void) { (void) _run_until(BR_SSL_SENDAPP); - WiFiClient::flush(); + // don't call flush on ESP32 - its behavior is different and empties the receive buffer - which we don't want } #endif From cc51a377386831c6b5b3dbabb61ca94f0e079f8f Mon Sep 17 00:00:00 2001 From: Barbudor Date: Wed, 1 Sep 2021 21:30:54 +0200 Subject: [PATCH 128/317] add command webgetconfig --- tasmota/i18n.h | 4 ++ tasmota/xdrv_01_webserver.ino | 107 +++++++++++++++++++++++++++++++--- 2 files changed, 103 insertions(+), 8 deletions(-) diff --git a/tasmota/i18n.h b/tasmota/i18n.h index abb5d163d..507e856f8 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -50,6 +50,7 @@ #define D_JSON_CONFIDENCE "Confidence" #define D_JSON_CONFIG_HOLDER "CfgHolder" #define D_JSON_CONNECT_FAILED "Connect failed" +#define D_JSON_CONNECTION_LOST "Connection lost" #define D_JSON_COREVERSION "Core" #define D_JSON_COUNT "Count" #define D_JSON_COUNTER "Counter" @@ -94,6 +95,8 @@ #define D_JSON_HEAPSIZE "Heap" #define D_JSON_HIGH "High" #define D_JSON_HOST_NOT_FOUND "Host not found" +#define D_JSON_FILE_NOT_FOUND "File not found" +#define D_JSON_OTHER_HTTP_ERROR "Other http error" #define D_JSON_HSBCOLOR "HSBColor" #define D_JSON_HUMIDITY "Humidity" #define D_JSON_I2CSCAN_DEVICES_FOUND_AT "Device(s) found at" @@ -415,6 +418,7 @@ #define D_CMND_WEBCOLOR "WebColor" #define D_CMND_WEBBUTTON "WebButton" #define D_CMND_WEBSENSOR "WebSensor" +#define D_CMND_WEBGETCONFIG "WebGetConfig" #define D_CMND_EMULATION "Emulation" #define D_CMND_SENDMAIL "Sendmail" #define D_CMND_CORS "CORS" diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 1057283c9..925f7f275 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -401,6 +401,12 @@ const uint16_t DNS_PORT = 53; enum HttpOptions {HTTP_OFF, HTTP_USER, HTTP_ADMIN, HTTP_MANAGER, HTTP_MANAGER_RESET_ONLY}; enum WifiTestOptions {WIFI_NOT_TESTING, WIFI_TESTING, WIFI_TEST_FINISHED, WIFI_TEST_FINISHED_BAD}; +enum WebCmndStatus { WEBCMND_DONE=0, WEBCMND_WRONG_PARAMETERS, WEBCMND_CONNECT_FAILED, WEBCMND_HOST_NOT_FOUND, WEBCMND_MEMORY_ERROR +#ifdef USE_WEBGETCONFIG + , WEBCMND_FILE_NOT_FOUND, WEBCMND_OTHER_HTTP_ERROR, WEBCMND_CONNECTION_LOST, WEBCMND_INVALID_FILE +#endif // USE_WEBGETCONFIG +}; + DNSServer *DnsServer; ESP8266WebServer *Webserver; @@ -3042,7 +3048,7 @@ int WebSend(char *buffer) char *user; char *password; char *command; - int status = 1; // Wrong parameters + int status = WEBCMND_WRONG_PARAMETERS; // buffer = | [ 192.168.178.86 : 80 , admin : joker ] POWER1 ON | host = strtok_r(buffer, "]", &command); // host = | [ 192.168.178.86 : 80 , admin : joker |, command = | POWER1 ON | @@ -3096,18 +3102,82 @@ int WebSend(char *buffer) MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_CMND_WEBSEND)); #endif // USE_WEBSEND_RESPONSE } - status = 0; // No error - Done + status = WEBCMND_DONE; } else { - status = 2; // Connection failed + status = WEBCMND_CONNECT_FAILED; } http.end(); // Clean up connection data } else { - status = 3; // Host not found or connection error + status = WEBCMND_HOST_NOT_FOUND; } } return status; } +#ifdef USE_WEBGETCONFIG +int WebGetConfig(char *buffer) +{ + // http://user:password@server:port/path/%id%.dmp : %id% will be expanded to MAC address + + int status = WEBCMND_WRONG_PARAMETERS; + + RemoveSpace(buffer); // host = |[192.168.178.86:80,admin:joker| + String url = ResolveToken(buffer); + + AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Config Uri |%s|"), url.c_str()); + + WiFiClient http_client; + HTTPClient http; + if (http.begin(http_client, UrlEncode(url))) { // UrlEncode(url) = |http://192.168.178.86/cm?cmnd=POWER1%20ON| + int http_code = http.GET(); // Start connection and send HTTP header + if (http_code > 0) { // http_code will be negative on error + status = WEBCMND_DONE; + if (http_code == HTTP_CODE_OK || http_code == HTTP_CODE_MOVED_PERMANENTLY) { + WiFiClient *stream = http.getStreamPtr(); + int len = http.getSize(); + if ((len <= sizeof(TSettings)) && SettingsBufferAlloc()) { + uint8_t *buff = settings_buffer; + if (len==-1) len = sizeof(TSettings); + while (http.connected() && (len > 0)) { + size_t size = stream->available(); + if (size) { + int read = stream->readBytes(buff, len); + len -= read; + } + delayMicroseconds(1); + } + if (len) { + AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Connection lost")); + status = WEBCMND_CONNECTION_LOST; + } else if (SettingsConfigRestore()) { + AddLog(LOG_LEVEL_INFO, PSTR("WEB: Settings applied, restarting")); + TasmotaGlobal.restart_flag = 2; // Always restart to re-enable disabled features during update + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Settings file invalid")); + status = WEBCMND_INVALID_FILE; + } + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Memory error (%d) or invalid file length (%d)"), settings_buffer, len); + status = WEBCMND_MEMORY_ERROR; + } + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: HTTP error %d"), http_code); + status = (http_code == HTTP_CODE_NOT_FOUND) ? WEBCMND_FILE_NOT_FOUND : WEBCMND_OTHER_HTTP_ERROR; + } + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Connection failed")); + status = 2; // Connection failed + } + http.end(); // Clean up connection data + } else { + status = 3; // Host not found or connection error + } + + return status; +} +#endif // USE_WEBGETCONFIG + + bool JsonWebColor(const char* dataBuf) { // Default (Dark theme) @@ -3132,7 +3202,11 @@ bool JsonWebColor(const char* dataBuf) return true; } -const char kWebSendStatus[] PROGMEM = D_JSON_DONE "|" D_JSON_WRONG_PARAMETERS "|" D_JSON_CONNECT_FAILED "|" D_JSON_HOST_NOT_FOUND "|" D_JSON_MEMORY_ERROR; +const char kWebCmndStatus[] PROGMEM = D_JSON_DONE "|" D_JSON_WRONG_PARAMETERS "|" D_JSON_CONNECT_FAILED "|" D_JSON_HOST_NOT_FOUND "|" D_JSON_MEMORY_ERROR +#ifdef USE_WEBGETCONFIG + "|" D_JSON_FILE_NOT_FOUND "|" D_JSON_OTHER_HTTP_ERROR "|" D_JSON_CONNECTION_LOST "|" D_JSON_INVALID_FILE_TYPE +#endif // USE_WEBGETCONFIG +; const char kWebCommands[] PROGMEM = "|" // No prefix #ifdef USE_EMULATION @@ -3143,10 +3217,13 @@ const char kWebCommands[] PROGMEM = "|" // No prefix #endif D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_WEBREFRESH "|" D_CMND_WEBSEND "|" D_CMND_WEBCOLOR "|" D_CMND_WEBSENSOR "|" D_CMND_WEBBUTTON +#ifdef USE_WEBGETCONFIG + "|" D_CMND_WEBGETCONFIG +#endif #ifdef USE_CORS "|" D_CMND_CORS #endif - ; +; void (* const WebCommand[])(void) PROGMEM = { #ifdef USE_EMULATION @@ -3157,6 +3234,9 @@ void (* const WebCommand[])(void) PROGMEM = { #endif &CmndWebServer, &CmndWebPassword, &CmndWeblog, &CmndWebRefresh, &CmndWebSend, &CmndWebColor, &CmndWebSensor, &CmndWebButton +#ifdef USE_WEBGETCONFIG + , &CmndWebGetConfig +#endif #ifdef USE_CORS , &CmndCors #endif @@ -3194,7 +3274,7 @@ void CmndSendmail(void) if (XdrvMailbox.data_len > 0) { uint8_t result = SendMail(XdrvMailbox.data); char stemp1[20]; - ResponseCmndChar(GetTextIndexed(stemp1, sizeof(stemp1), result, kWebSendStatus)); + ResponseCmndChar(GetTextIndexed(stemp1, sizeof(stemp1), result, kWebCmndStatus)); } } #endif // USE_SENDMAIL @@ -3250,10 +3330,21 @@ void CmndWebSend(void) if (XdrvMailbox.data_len > 0) { uint32_t result = WebSend(XdrvMailbox.data); char stemp1[20]; - ResponseCmndChar(GetTextIndexed(stemp1, sizeof(stemp1), result, kWebSendStatus)); + ResponseCmndChar(GetTextIndexed(stemp1, sizeof(stemp1), result, kWebCmndStatus)); } } +#ifdef USE_WEBGETCONFIG +void CmndWebGetConfig(void) +{ + if (XdrvMailbox.data_len > 0) { + uint32_t result = WebGetConfig(XdrvMailbox.data); + char stemp1[20]; + ResponseCmndChar(GetTextIndexed(stemp1, sizeof(stemp1), result, kWebCmndStatus)); + } +} +#endif // USE_WEBGETCONFIG + void CmndWebColor(void) { if (XdrvMailbox.data_len > 0) { From 8d736b160dd404889c9384e995538a7b5e14d5fe Mon Sep 17 00:00:00 2001 From: Barbudor Date: Wed, 1 Sep 2021 21:37:21 +0200 Subject: [PATCH 129/317] update logs --- tasmota/xdrv_01_webserver.ino | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 925f7f275..9c08bebfb 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -3124,7 +3124,7 @@ int WebGetConfig(char *buffer) RemoveSpace(buffer); // host = |[192.168.178.86:80,admin:joker| String url = ResolveToken(buffer); - AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Config Uri |%s|"), url.c_str()); + DEBUG_CORE_LOG(PSTR("WEB: Config Uri |%s|"), url.c_str()); WiFiClient http_client; HTTPClient http; @@ -3147,17 +3147,17 @@ int WebGetConfig(char *buffer) delayMicroseconds(1); } if (len) { - AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Connection lost")); + DEBUG_CORE_LOG(PSTR("WEB: Connection lost")); status = WEBCMND_CONNECTION_LOST; } else if (SettingsConfigRestore()) { AddLog(LOG_LEVEL_INFO, PSTR("WEB: Settings applied, restarting")); TasmotaGlobal.restart_flag = 2; // Always restart to re-enable disabled features during update } else { - AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Settings file invalid")); + DEBUG_CORE_LOG(PSTR("WEB: Settings file invalid")); status = WEBCMND_INVALID_FILE; } } else { - AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Memory error (%d) or invalid file length (%d)"), settings_buffer, len); + DEBUG_CORE_LOG(PSTR("WEB: Memory error (%d) or invalid file length (%d)"), settings_buffer, len); status = WEBCMND_MEMORY_ERROR; } } else { @@ -3165,7 +3165,7 @@ int WebGetConfig(char *buffer) status = (http_code == HTTP_CODE_NOT_FOUND) ? WEBCMND_FILE_NOT_FOUND : WEBCMND_OTHER_HTTP_ERROR; } } else { - AddLog(LOG_LEVEL_DEBUG, PSTR("WEB: Connection failed")); + DEBUG_CORE_LOG(PSTR("WEB: Connection failed")); status = 2; // Connection failed } http.end(); // Clean up connection data From a2fdeff9c5c2eaacd782c902d8449ff304f19712 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 1 Sep 2021 22:48:02 +0200 Subject: [PATCH 130/317] Fixed crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set --- CHANGELOG.md | 2 ++ lib/libesp32/Berry/default/be_port.cpp | 6 ++---- tasmota/support_esp.ino | 14 +++++++++++++- tasmota/tasmota.ino | 7 ++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dc0877e1..735667c1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ All notable changes to this project will be documented in this file. ## [9.5.0.8] +### Fixed +- Fixed crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set ## [9.5.0.7] 20210901 ### Added diff --git a/lib/libesp32/Berry/default/be_port.cpp b/lib/libesp32/Berry/default/be_port.cpp index c5458eabd..cca5b3f61 100644 --- a/lib/libesp32/Berry/default/be_port.cpp +++ b/lib/libesp32/Berry/default/be_port.cpp @@ -60,12 +60,10 @@ extern "C" { #ifndef BERRY_LOGSZ #define BERRY_LOGSZ 700 #endif -extern "C" { - extern void *berry_malloc(size_t size); -} + static char * log_berry_buffer = nullptr; static_block { - log_berry_buffer = (char*) berry_malloc(BERRY_LOGSZ); + log_berry_buffer = (char*) malloc(BERRY_LOGSZ); if (log_berry_buffer) log_berry_buffer[0] = 0; } extern void berry_log(const char * berry_buf); diff --git a/tasmota/support_esp.ino b/tasmota/support_esp.ino index babda7bef..7a8a26130 100644 --- a/tasmota/support_esp.ino +++ b/tasmota/support_esp.ino @@ -464,10 +464,21 @@ uint8_t* FlashDirectAccess(void) { return data; } +extern "C" { + bool esp_spiram_is_initialized(void); +} + +// this function is a replacement for `psramFound()`. +// `psramFound()` can return true even if no PSRAM is actually installed +// This new version also checks `esp_spiram_is_initialized` to know if the PSRAM is initialized +bool FoundPSRAM(void) { + return psramFound() && esp_spiram_is_initialized(); +} + // new function to check whether PSRAM is present and supported (i.e. required pacthes are present) bool UsePSRAM(void) { static bool can_use_psram = CanUsePSRAM(); - return psramFound() && can_use_psram; + return FoundPSRAM() && can_use_psram; } void *special_malloc(uint32_t size) { @@ -690,6 +701,7 @@ typedef struct { * patches are present. */ bool CanUsePSRAM(void) { + if (!FoundPSRAM()) return false; #ifdef HAS_PSRAM_FIX return true; #endif diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 15a5cf519..3dd6da220 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -275,12 +275,13 @@ void setup(void) { } // AddLog(LOG_LEVEL_INFO, PSTR("ADR: Settings %p, Log %p"), Settings, TasmotaGlobal.log_buffer); - AddLog(LOG_LEVEL_INFO, PSTR("HDW: %s"), GetDeviceHardware().c_str()); + AddLog(LOG_LEVEL_INFO, PSTR("HDW: %s %s"), GetDeviceHardware().c_str(), + FoundPSRAM() ? (CanUsePSRAM() ? "(PSRAM)" : "(PSRAM disabled)") : "" ); #ifdef ESP32 - AddLog(LOG_LEVEL_DEBUG, PSTR("HDW: psramFound=%i CanUsePSRAM=%i"), psramFound(), CanUsePSRAM()); + AddLog(LOG_LEVEL_DEBUG, PSTR("HDW: FoundPSRAM=%i CanUsePSRAM=%i"), FoundPSRAM(), CanUsePSRAM()); #endif // ESP32 #if defined(ESP32) && !defined(HAS_PSRAM_FIX) - if (psramFound() && !CanUsePSRAM()) { + if (FoundPSRAM() && !CanUsePSRAM()) { AddLog(LOG_LEVEL_INFO, PSTR("HDW: PSRAM is disabled, requires specific compilation on this hardware (see doc)")); } #endif // ESP32 From dcc25cf7e9a90b0a4dd2153a3c47575c90188414 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 1 Sep 2021 23:06:39 +0200 Subject: [PATCH 131/317] Fix compilation for ESP8266 --- tasmota/tasmota.ino | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 3dd6da220..f6c0275d3 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -275,15 +275,17 @@ void setup(void) { } // AddLog(LOG_LEVEL_INFO, PSTR("ADR: Settings %p, Log %p"), Settings, TasmotaGlobal.log_buffer); +#ifdef ESP32 AddLog(LOG_LEVEL_INFO, PSTR("HDW: %s %s"), GetDeviceHardware().c_str(), FoundPSRAM() ? (CanUsePSRAM() ? "(PSRAM)" : "(PSRAM disabled)") : "" ); -#ifdef ESP32 AddLog(LOG_LEVEL_DEBUG, PSTR("HDW: FoundPSRAM=%i CanUsePSRAM=%i"), FoundPSRAM(), CanUsePSRAM()); -#endif // ESP32 -#if defined(ESP32) && !defined(HAS_PSRAM_FIX) + #if !defined(HAS_PSRAM_FIX) if (FoundPSRAM() && !CanUsePSRAM()) { AddLog(LOG_LEVEL_INFO, PSTR("HDW: PSRAM is disabled, requires specific compilation on this hardware (see doc)")); } + #endif +#else // ESP32 + AddLog(LOG_LEVEL_INFO, PSTR("HDW: %s"), GetDeviceHardware().c_str()); #endif // ESP32 #ifdef USE_UFILESYS From 328041ad0e758357c285a00eeef11e751a26971c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 2 Sep 2021 10:09:23 +0200 Subject: [PATCH 132/317] Update changelogs --- CHANGELOG.md | 4 ++-- RELEASENOTES.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 735667c1f..990a8951a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.5.0.8] - ### Fixed -- Fixed crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set +- ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set (#13037) +- MQTT TLS related connection timing errors (#13033) ## [9.5.0.7] 20210901 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 3b86bb78f..bc67bca02 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -179,3 +179,5 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 [#12930](https://github.com/arendst/Tasmota/issues/12930) - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` [#12960](https://github.com/arendst/Tasmota/issues/12960) - Hass and Tasmota discovery prefix topic notifications [#12972](https://github.com/arendst/Tasmota/issues/12972) +- MQTT TLS related connection timing errors [#13033](https://github.com/arendst/Tasmota/issues/13033) +- ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set [#13037](https://github.com/arendst/Tasmota/issues/13037) From 1c4bca8a8ccc72f63b6af33976aa7125889495f5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 2 Sep 2021 10:46:29 +0200 Subject: [PATCH 133/317] Add command ``WebGetConfig `` Add command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) --- CHANGELOG.md | 3 +++ RELEASENOTES.md | 1 + tasmota/my_user_config.h | 1 + tasmota/xdrv_01_webserver.ino | 7 ++++--- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 990a8951a..7bcc60791 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.5.0.8] +### Added +- Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) + ### Fixed - ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set (#13037) - MQTT TLS related connection timing errors (#13033) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index bc67bca02..b09ab4f05 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -105,6 +105,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver +- Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server - Support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index b3d60d277..c0802790d 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -461,6 +461,7 @@ // #define USE_JAVASCRIPT_ES6 // Enable ECMAScript6 syntax using less JavaScript code bytes (fails on IE11) #define USE_ENHANCED_GUI_WIFI_SCAN // Enable Wi-Fi scan output with BSSID (+0k5 code) // #define USE_WEBSEND_RESPONSE // Enable command WebSend response message (+1k code) +// #define USE_WEBGETCONFIG // Enable restoring config from external webserver (+0k6) #define USE_EMULATION_HUE // Enable Hue Bridge emulation for Alexa (+14k code, +2k mem common) #define USE_EMULATION_WEMO // Enable Belkin WeMo emulation for Alexa (+6k code, +2k mem common) // #define USE_CCLOADER // Enable CCLoader FW upgrade tool (for CC25xx devices) diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 9c08bebfb..10ca8a7fb 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -3124,7 +3124,7 @@ int WebGetConfig(char *buffer) RemoveSpace(buffer); // host = |[192.168.178.86:80,admin:joker| String url = ResolveToken(buffer); - DEBUG_CORE_LOG(PSTR("WEB: Config Uri |%s|"), url.c_str()); + DEBUG_CORE_LOG(PSTR("WEB: Config Uri '%s'"), url.c_str()); WiFiClient http_client; HTTPClient http; @@ -3137,7 +3137,7 @@ int WebGetConfig(char *buffer) int len = http.getSize(); if ((len <= sizeof(TSettings)) && SettingsBufferAlloc()) { uint8_t *buff = settings_buffer; - if (len==-1) len = sizeof(TSettings); + if (len == -1) { len = sizeof(TSettings); } while (http.connected() && (len > 0)) { size_t size = stream->available(); if (size) { @@ -3177,7 +3177,6 @@ int WebGetConfig(char *buffer) } #endif // USE_WEBGETCONFIG - bool JsonWebColor(const char* dataBuf) { // Default (Dark theme) @@ -3337,6 +3336,8 @@ void CmndWebSend(void) #ifdef USE_WEBGETCONFIG void CmndWebGetConfig(void) { + // WebGetConfig http://myserver:8000/tasmota/conf/%id%.dmp where %id% is expanded to device mac address + // WebGetConfig http://myserver:8000/tasmota/conf/Config_demo_9.5.0.8.dmp if (XdrvMailbox.data_len > 0) { uint32_t result = WebGetConfig(XdrvMailbox.data); char stemp1[20]; From c9761665e337e3da8add7f62de279fcb6d39799d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 2 Sep 2021 10:56:20 +0200 Subject: [PATCH 134/317] Fixed OpenTherm invalid JSON (#13028) --- CHANGELOG.md | 1 + RELEASENOTES.md | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bcc60791..f8b14b070 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) ### Fixed +- OpenTherm invalid JSON (#13028) - ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set (#13037) - MQTT TLS related connection timing errors (#13033) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index b09ab4f05..3b4496ee8 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -105,28 +105,28 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver +- Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server - Support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin -- Initial support for influxdb using ``#define USE_INFLUXDB`` and several ``Ifx`` commands +- Support for influxdb using ``#define USE_INFLUXDB`` and several ``Ifx`` commands +- Support for AM2320 Temperature and Humidity Sensor by Lars Wessels [#12485](https://github.com/arendst/Tasmota/issues/12485) +- Support for Technoline WS2300-15 Anemometer [#12573](https://github.com/arendst/Tasmota/issues/12573) +- Support for Telaire T6700 Series CO2 sensor by Alexander Savchenko [#12618](https://github.com/arendst/Tasmota/issues/12618) +- Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651) +- Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) +- Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) +- Support for IKEA VINDRIKTNING particle concentration sensor [#12976](https://github.com/arendst/Tasmota/issues/12976) - Initial support for Tasmota Mesh (TasMesh) providing node/broker communication using ESP-NOW [#11939](https://github.com/arendst/Tasmota/issues/11939) +- Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) - Berry ESP32 partition manager [#12465](https://github.com/arendst/Tasmota/issues/12465) - Berry ESP32 support for I2S audio mp3 playback - Berry ESP32 support for vararg - Berry ESP32 support for Curve 25519 EC crypto -- Support for AM2320 Temperature and Humidity Sensor by Lars Wessels [#12485](https://github.com/arendst/Tasmota/issues/12485) - Rule event support as JSON payload [#12496](https://github.com/arendst/Tasmota/issues/12496) - MQTT minimum password length restriction in GUI [#12553](https://github.com/arendst/Tasmota/issues/12553) -- Support for Technoline WS2300-15 Anemometer [#12573](https://github.com/arendst/Tasmota/issues/12573) -- Support for Telaire T6700 Series CO2 sensor by Alexander Savchenko [#12618](https://github.com/arendst/Tasmota/issues/12618) -- Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651) - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) -- Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) -- Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) -- Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) -- Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) -- Support for IKEA VINDRIKTNING particle concentration sensor [#12976](https://github.com/arendst/Tasmota/issues/12976) ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware @@ -138,10 +138,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Speed up initial GUI console refresh - Enable UFILESYS, GUI_TRASH_FILE and GUI_EDIT_FILE for any device compiled with more than 1M flash size - ESP32 internal sensor driver id moved from 87 to 127 -- Extended supported sensor driver range to 128 +- Supported sensor driver range extended from 96 to 128 - Disable PSRAM on unsupported hardware - ESP32 remove GPIO initialization to INPUT from not used GPIOs to allow JTAG support - Relax NTP poll if no ntpserver can be resolved by DNS +- Shelly EM template needs to use GPIO ``ADE7953_IRQ 2`` - Make Sonoff L1 MusicSync persistent [#12008](https://github.com/arendst/Tasmota/issues/12008) - Simplified configuration for ir-full and removal of tasmota-ircustom [#12428](https://github.com/arendst/Tasmota/issues/12428) - Refactor platformio [#12442](https://github.com/arendst/Tasmota/issues/12442) @@ -152,7 +153,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Prometheus: All metrics are prefixed with ``tasmota_`` [#12842](https://github.com/arendst/Tasmota/issues/12842) Memory metrics have been cleaned up to work consistently between ESP8266 and ESP32 The device name is reported as an info metric -- Shelly EM template needs to use GPIO ADE7953_IRQ_2 ### Fixed - ESP32 core v2.0.0 setting hostname @@ -172,7 +172,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Wi-Fi initial setup workaround for 11n only routers [#12566](https://github.com/arendst/Tasmota/issues/12566) - ESP32 do not use chip temperature sensor as global temperature if external temperature sensor is used [#12630](https://github.com/arendst/Tasmota/issues/12630) - Discovery fails when using ``%hostname%`` in a topic [#12710](https://github.com/arendst/Tasmota/issues/12710) -- ESP32 buzzer in PWM mode exception (#12717)[#12717](https://github.com/arendst/Tasmota/issues/12717) +- ESP32 buzzer in PWM mode exception [#12717](https://github.com/arendst/Tasmota/issues/12717) - Neopool communication error [#12813](https://github.com/arendst/Tasmota/issues/12813) - Shelly Dimmer 2 Energy usage [#12815](https://github.com/arendst/Tasmota/issues/12815) - WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) @@ -180,5 +180,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Unable to disable MusicSync mode on Sonoff L1 Lite regression from 9.3.0 [#12930](https://github.com/arendst/Tasmota/issues/12930) - Wiegand support for keypad zero key in single key mode using ``SetOption124 1`` [#12960](https://github.com/arendst/Tasmota/issues/12960) - Hass and Tasmota discovery prefix topic notifications [#12972](https://github.com/arendst/Tasmota/issues/12972) +- OpenTherm invalid JSON [#13028](https://github.com/arendst/Tasmota/issues/13028) - MQTT TLS related connection timing errors [#13033](https://github.com/arendst/Tasmota/issues/13033) - ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set [#13037](https://github.com/arendst/Tasmota/issues/13037) From c47307bd5e6f54381034acdc916189d647563a62 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 2 Sep 2021 12:25:53 +0200 Subject: [PATCH 135/317] Add optional emergency reset Add optional emergency reset when Rx is connected to Tx at restart --- tasmota/settings.ino | 26 ++++++++++++++++++++++++++ tasmota/support.ino | 1 + tasmota/tasmota.ino | 8 +++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 2795c2653..132e438f2 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -276,6 +276,32 @@ void UpdateQuickPowerCycle(bool update) { #endif // FIRMWARE_MINIMAL } +#ifdef USE_EMERGENCY_RESET +/*********************************************************************************************\ + * Emergency reset if Rx and Tx are tied together +\*********************************************************************************************/ + +void EmergencyReset(void) { + Serial.begin(115200); + Serial.write(0xAA); + Serial.write(0x55); + delay(1); + if (Serial.available() == 2) { + if ((Serial.read() == 0xAA) && (Serial.read() == 0x55)) { + SettingsErase(3); // Reset all settings including QuickPowerCycle flag + + do { // Wait for user to remove Rx Tx jumper and power cycle + Serial.write(0xA5); + delay(1000); // Satisfy SDK + } while (Serial.read() == 0xA5); // Poll for removal of jumper + + ESP_Restart(); // Restart to init default settings + } + } + while (Serial.available()) { Serial.read(); } // Flush input buffer +} +#endif // USE_EMERGENCY_RESET + /*********************************************************************************************\ * Settings services \*********************************************************************************************/ diff --git a/tasmota/support.ino b/tasmota/support.ino index 22ff91854..7b7623301 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -2368,6 +2368,7 @@ bool GetLog(uint32_t req_loglevel, uint32_t* index_p, char** entry_pp, size_t* l } void AddLogData(uint32_t loglevel, const char* log_data, const char* log_data_payload = nullptr, const char* log_data_retained = nullptr) { + if (!TasmotaGlobal.enable_logging) { return; } // Store log_data in buffer // To lower heap usage log_data_payload may contain the payload data from MqttPublishPayload() // and log_data_retained may contain optional retained message from MqttPublishPayload() diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index f6c0275d3..980f0b7bf 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -133,7 +133,7 @@ struct { bool pwm_present; // Any PWM channel configured with SetOption15 0 bool i2c_enabled; // I2C configured #ifdef ESP32 - bool i2c_enabled_2; // I2C configured, second controller on ESP32, Wire1 + bool i2c_enabled_2; // I2C configured, second controller on ESP32, Wire1 #endif bool ntp_force_sync; // Force NTP sync bool skip_light_fade; // Temporarily skip light fading @@ -141,6 +141,7 @@ struct { bool module_changed; // Indicate module changed since last restart bool wifi_stay_asleep; // Allow sleep only incase of ESP32 BLE bool no_autoexec; // Disable autoexec + bool enable_logging; // Enable logging StateBitfield global_state; // Global states (currently Wifi and Mqtt) (8 bits) uint8_t spi_enabled; // SPI configured @@ -224,6 +225,10 @@ void setup(void) { RtcPreInit(); SettingsInit(); +#ifdef USE_EMERGENCY_RESET + EmergencyReset(); +#endif // USE_EMERGENCY_RESET + memset(&TasmotaGlobal, 0, sizeof(TasmotaGlobal)); TasmotaGlobal.baudrate = APP_BAUDRATE; TasmotaGlobal.seriallog_timer = SERIALLOG_TIMER; @@ -233,6 +238,7 @@ void setup(void) { TasmotaGlobal.tele_period = 9999; TasmotaGlobal.active_device = 1; TasmotaGlobal.global_state.data = 0xF; // Init global state (wifi_down, mqtt_down) to solve possible network issues + TasmotaGlobal.enable_logging = 1; RtcRebootLoad(); if (!RtcRebootValid()) { From c044fd22c43f623f3fa38c0a2be029c01ac0641f Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 2 Sep 2021 19:21:25 +0200 Subject: [PATCH 136/317] Tasmota ESP32 core 2.0.0 --- platformio_tasmota_cenv_sample.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index e8d84aed0..5c847f622 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -49,7 +49,7 @@ build_flags = ${env:tasmota32_base.build_flags} extends = env:tasmota32_base board = esp32s2 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/408/framework-arduinoespressif32-master-54caa4c74.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/424/framework-arduinoespressif32-master-cdcf92440.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -75,7 +75,7 @@ lib_ignore = extends = env:tasmota32_base board = esp32c3 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/408/framework-arduinoespressif32-master-54caa4c74.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/424/framework-arduinoespressif32-master-cdcf92440.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -108,7 +108,7 @@ lib_ignore = [env:tasmota32idf4] extends = env:tasmota32_base platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/408/framework-arduinoespressif32-master-54caa4c74.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/424/framework-arduinoespressif32-master-cdcf92440.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable From 19d313622a4a71c45f0695a2f5c5203895c93b1c Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 2 Sep 2021 20:54:50 +0200 Subject: [PATCH 137/317] Fix PSRAM compilation for Esp32c3 --- tasmota/support_esp.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tasmota/support_esp.ino b/tasmota/support_esp.ino index 7a8a26130..1547d04f8 100644 --- a/tasmota/support_esp.ino +++ b/tasmota/support_esp.ino @@ -472,7 +472,11 @@ extern "C" { // `psramFound()` can return true even if no PSRAM is actually installed // This new version also checks `esp_spiram_is_initialized` to know if the PSRAM is initialized bool FoundPSRAM(void) { +#if CONFIG_IDF_TARGET_ESP32C3 + return psramFound(); +#else return psramFound() && esp_spiram_is_initialized(); +#endif } // new function to check whether PSRAM is present and supported (i.e. required pacthes are present) From 3d5c68b8505ad7df5c502783617cb6e9f555ed4c Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 2 Sep 2021 21:58:08 +0200 Subject: [PATCH 138/317] Berry class ``webclient`` for HTTP/HTTPS requests --- CHANGELOG.md | 1 + lib/lib_ssl/tls_mini/src/HttpClientLight.cpp | 1505 +++++++++++++ lib/lib_ssl/tls_mini/src/HttpClientLight.h | 270 +++ .../src/WiFiClientSecureLightBearSSL.cpp | 33 + .../src/WiFiClientSecureLightBearSSL.h | 5 + lib/libesp32/Berry/default/be_modtab.c | 4 + lib/libesp32/Berry/default/be_webclient_lib.c | 55 + lib/libesp32/Berry/generate/be_const_strtab.h | 1336 +++++------ .../Berry/generate/be_const_strtab_def.h | 1958 +++++++++-------- .../generate/be_fixed_be_class_webclient.h | 31 + tasmota/my_user_config.h | 10 +- tasmota/xdrv_52_3_berry_webclient.ino | 306 +++ 12 files changed, 3879 insertions(+), 1635 deletions(-) create mode 100644 lib/lib_ssl/tls_mini/src/HttpClientLight.cpp create mode 100644 lib/lib_ssl/tls_mini/src/HttpClientLight.h create mode 100644 lib/libesp32/Berry/default/be_webclient_lib.c create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h create mode 100644 tasmota/xdrv_52_3_berry_webclient.ino diff --git a/CHANGELOG.md b/CHANGELOG.md index f8b14b070..eaf410195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file. ## [9.5.0.8] ### Added - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) +- Berry class ``webclient`` for HTTP/HTTPS requests ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp b/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp new file mode 100644 index 000000000..a194e091b --- /dev/null +++ b/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp @@ -0,0 +1,1505 @@ +/** + * HTTPClientLight.cpp + * + * Created on: 02.11.2015 + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the HTTPClient for Arduino. + * Port to ESP32 by Evandro Luis Copercini (2017), + * changed fingerprints to CA verification. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Adapted in October 2018 + */ + +#ifdef ESP32 +#include "tasmota_options.h" + +#ifdef USE_BERRY +#include + +#ifdef HTTPCLIENT_1_1_COMPATIBLE +#include +#include +#endif + +#include +#include + +#include "HTTPClientLight.h" +#include "WiFiClientSecureLightBearSSL.h" + +// #ifdef HTTPCLIENT_1_1_COMPATIBLE +class TransportTraits +{ +public: + virtual ~TransportTraits() + { + } + + virtual std::unique_ptr create() + { + return std::unique_ptr(new WiFiClient()); + } + + virtual bool verify(WiFiClient& client, const char* host) + { + return true; + } + + virtual int32_t getLastError(WiFiClient& client) + { + return 0; + } + +}; + +#ifdef USE_WEBCLIENT_HTTPS +static const uint8_t _fingerprint_any[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; +class BearSSLTraits : public TransportTraits +{ +public: + BearSSLTraits(int recv, int xmit) : + _recv(recv), _xmit(xmit) + { + } + + std::unique_ptr create() override + { + std::unique_ptr p = std::unique_ptr(new BearSSL::WiFiClientSecure_light(_recv, _xmit)); + return p; + } + + bool verify(WiFiClient& client, const char* host) override + { + BearSSL::WiFiClientSecure_light& wcs = static_cast(client); + wcs.setPubKeyFingerprint(_fingerprint_any, _fingerprint_any, true); // allow all fingerprints + return true; + } + + int32_t getLastError(WiFiClient& client) + { + BearSSL::WiFiClientSecure_light& wcs = static_cast(client); + return wcs.getLastError(); + } + + +protected: + int _recv; + int _xmit; +}; +#endif // USE_WEBCLIENT_HTTPS + +/** + * constructor + */ +HTTPClientLight::HTTPClientLight() +{ +} + +/** + * destructor + */ +HTTPClientLight::~HTTPClientLight() +{ + if(_client) { + _client->stop(); + } + if(_currentHeaders) { + delete[] _currentHeaders; + } + if(_tcpDeprecated) { + _tcpDeprecated.reset(nullptr); + } + if(_transportTraits) { + _transportTraits.reset(nullptr); + } +} + +void HTTPClientLight::clear() +{ + _returnCode = 0; + _size = -1; + _headers = ""; +} + + +/** + * parsing the url for all needed parameters + * @param client Client& + * @param url String + * @param https bool + * @return success bool + */ +// bool HTTPClientLight::begin(WiFiClient &client, String url) { +// #ifdef HTTPCLIENT_1_1_COMPATIBLE +// if(_tcpDeprecated) { +// log_d("mix up of new and deprecated api"); +// _canReuse = false; +// end(); +// } +// #endif + +// _client = &client; + +// // check for : (http: or https:) +// int index = url.indexOf(':'); +// if(index < 0) { +// log_d("failed to parse protocol"); +// return false; +// } + +// String protocol = url.substring(0, index); +// if(protocol != "http" && protocol != "https") { +// log_d("unknown protocol '%s'", protocol.c_str()); +// return false; +// } + +// _port = (protocol == "https" ? 443 : 80); +// return beginInternal(url, protocol.c_str()); +// } + + +/** + * directly supply all needed parameters + * @param client Client& + * @param host String + * @param port uint16_t + * @param uri String + * @param https bool + * @return success bool + */ +// bool HTTPClientLight::begin(WiFiClient &client, String host, uint16_t port, String uri, bool https) +// { +// #ifdef HTTPCLIENT_1_1_COMPATIBLE +// if(_tcpDeprecated) { +// log_d("mix up of new and deprecated api"); +// _canReuse = false; +// end(); +// } +// #endif + +// _client = &client; + +// clear(); +// _host = host; +// _port = port; +// _uri = uri; +// _protocol = (https ? "https" : "http"); +// return true; +// } + + +#ifdef HTTPCLIENT_1_1_COMPATIBLE +bool HTTPClientLight::begin(String url, const char* CAcert) +{ + if(_client && !_tcpDeprecated) { + log_d("mix up of new and deprecated api"); + _canReuse = false; + end(); + } + + _port = 443; + if (!beginInternal(url, "https")) { + return false; + } + _secure = true; +#ifdef USE_WEBCLIENT_HTTPS + _transportTraits = TransportTraitsPtr(new BearSSLTraits(16384, 0)); + // set buffer to 16KB half duplex, so we won't lose responses bigger than 16KB + // half duplex is well suited for HTTPS: one request followed by responses +#else + _transportTraits = nullptr; +#endif + if(!_transportTraits) { + log_e("could not create transport traits"); + return false; + } + + return true; +} + +/** + * parsing the url for all needed parameters + * @param url String + */ +bool HTTPClientLight::begin(String url) +{ + if(_client && !_tcpDeprecated) { + log_d("mix up of new and deprecated api"); + _canReuse = false; + end(); + } + + _port = 80; + if (!beginInternal(url, "http")) { + return begin(url, (const char*)NULL); + } + _transportTraits = TransportTraitsPtr(new TransportTraits()); + if(!_transportTraits) { + log_e("could not create transport traits"); + return false; + } + + return true; +} +#endif // HTTPCLIENT_1_1_COMPATIBLE + +bool HTTPClientLight::beginInternal(String url, const char* expectedProtocol) +{ + log_v("url: %s", url.c_str()); + clear(); + + // check for : (http: or https: + int index = url.indexOf(':'); + if(index < 0) { + log_e("failed to parse protocol"); + return false; + } + + _protocol = url.substring(0, index); + if (_protocol != expectedProtocol) { + log_w("unexpected protocol: %s, expected %s", _protocol.c_str(), expectedProtocol); + return false; + } + + url.remove(0, (index + 3)); // remove http:// or https:// + + index = url.indexOf('/'); + String host = url.substring(0, index); + url.remove(0, index); // remove host part + + // get Authorization + index = host.indexOf('@'); + if(index >= 0) { + // auth info + String auth = host.substring(0, index); + host.remove(0, index + 1); // remove auth part including @ + _base64Authorization = base64::encode(auth); + } + + // get port + index = host.indexOf(':'); + String the_host; + if(index >= 0) { + the_host = host.substring(0, index); // hostname + host.remove(0, (index + 1)); // remove hostname + : + _port = host.toInt(); // get port + } else { + the_host = host; + } + if(_host != the_host && connected()){ + log_d("switching host from '%s' to '%s'. disconnecting first", _host.c_str(), the_host.c_str()); + _canReuse = false; + disconnect(true); + } + _host = the_host; + _uri = url; + log_d("protocol: %s, host: %s port: %d url: %s", _protocol.c_str(), _host.c_str(), _port, _uri.c_str()); + return true; +} + +#ifdef HTTPCLIENT_1_1_COMPATIBLE +// bool HTTPClientLight::begin(String host, uint16_t port, String uri) +// { +// if(_client && !_tcpDeprecated) { +// log_d("mix up of new and deprecated api"); +// _canReuse = false; +// end(); +// } + +// clear(); +// _host = host; +// _port = port; +// _uri = uri; +// // _transportTraits = TransportTraitsPtr(new TransportTraits()); TODO +// _transportTraits = nullptr; +// log_d("host: %s port: %d uri: %s", host.c_str(), port, uri.c_str()); +// return true; +// } + +// bool HTTPClientLight::begin(String host, uint16_t port, String uri, const char* CAcert) +// { +// if(_client && !_tcpDeprecated) { +// log_d("mix up of new and deprecated api"); +// _canReuse = false; +// end(); +// } + +// clear(); +// _host = host; +// _port = port; +// _uri = uri; + +// if (strlen(CAcert) == 0) { +// return false; +// } +// _secure = true; +// _transportTraits = TransportTraitsPtr(new TLSTraits(CAcert)); +// return true; +// } + +// bool HTTPClientLight::begin(String host, uint16_t port, String uri, const char* CAcert, const char* cli_cert, const char* cli_key) +// { +// if(_client && !_tcpDeprecated) { +// log_d("mix up of new and deprecated api"); +// _canReuse = false; +// end(); +// } + +// clear(); +// _host = host; +// _port = port; +// _uri = uri; + +// if (strlen(CAcert) == 0) { +// return false; +// } +// _secure = true; +// _transportTraits = TransportTraitsPtr(new TLSTraits(CAcert, cli_cert, cli_key)); +// return true; +// } +#endif // HTTPCLIENT_1_1_COMPATIBLE + +/** + * end + * called after the payload is handled + */ +void HTTPClientLight::end(void) +{ + disconnect(false); + _tcpDeprecated.reset(nullptr); // release the TLS implementation + _client = _tcpDeprecated.get(); // update client + clear(); +} + + + +/** + * disconnect + * close the TCP socket + */ +void HTTPClientLight::disconnect(bool preserveClient) +{ + if(connected()) { + if(_client->available() > 0) { + log_d("still data in buffer (%d), clean up.\n", _client->available()); + while(_client->available() > 0) { + _client->read(); + } + } + + if(_reuse && _canReuse) { + log_d("tcp keep open for reuse"); + } else { + log_d("tcp stop"); + _client->stop(); + if(!preserveClient) { + _client = nullptr; +#ifdef HTTPCLIENT_1_1_COMPATIBLE + if(_tcpDeprecated) { + _transportTraits.reset(nullptr); + _tcpDeprecated.reset(nullptr); + _client = _tcpDeprecated.get(); // update client + } +#endif + } + } + } else { + log_d("tcp is closed\n"); + } +} + + +/** + * connected + * @return connected status + */ +bool HTTPClientLight::connected() +{ + if(_client) { + return ((_client->available() > 0) || _client->connected()); + } + return false; +} + +/** + * try to reuse the connection to the server + * keep-alive + * @param reuse bool + */ +void HTTPClientLight::setReuse(bool reuse) +{ + _reuse = reuse; +} + +/** + * set User Agent + * @param userAgent const char * + */ +void HTTPClientLight::setUserAgent(const String& userAgent) +{ + _userAgent = userAgent; +} + +/** + * set the Authorizatio for the http request + * @param user const char * + * @param password const char * + */ +void HTTPClientLight::setAuthorization(const char * user, const char * password) +{ + if(user && password) { + String auth = user; + auth += ":"; + auth += password; + _base64Authorization = base64::encode(auth); + } +} + +/** + * set the Authorizatio for the http request + * @param auth const char * base64 + */ +void HTTPClientLight::setAuthorization(const char * auth) +{ + if(auth) { + _base64Authorization = auth; + } +} + +/** + * set the timeout (ms) for establishing a connection to the server + * @param connectTimeout int32_t + */ +void HTTPClientLight::setConnectTimeout(int32_t connectTimeout) +{ + _connectTimeout = connectTimeout; +} + +/** + * set the timeout for the TCP connection + * @param timeout unsigned int + */ +void HTTPClientLight::setTimeout(uint16_t timeout) +{ + _tcpTimeout = timeout; + if(connected()) { + _client->setTimeout((timeout + 500) / 1000); + } +} + +/** + * use HTTP1.0 + * @param use + */ +void HTTPClientLight::useHTTP10(bool useHTTP10) +{ + _useHTTP10 = useHTTP10; + _reuse = !useHTTP10; +} + +/** + * send a GET request + * @return http code + */ +int HTTPClientLight::GET() +{ + return sendRequest("GET"); +} + +/** + * sends a post request to the server + * @param payload uint8_t * + * @param size size_t + * @return http code + */ +int HTTPClientLight::POST(uint8_t * payload, size_t size) +{ + return sendRequest("POST", payload, size); +} + +int HTTPClientLight::POST(String payload) +{ + return POST((uint8_t *) payload.c_str(), payload.length()); +} + +/** + * sends a patch request to the server + * @param payload uint8_t * + * @param size size_t + * @return http code + */ +int HTTPClientLight::PATCH(uint8_t * payload, size_t size) +{ + return sendRequest("PATCH", payload, size); +} + +int HTTPClientLight::PATCH(String payload) +{ + return PATCH((uint8_t *) payload.c_str(), payload.length()); +} + +/** + * sends a put request to the server + * @param payload uint8_t * + * @param size size_t + * @return http code + */ +int HTTPClientLight::PUT(uint8_t * payload, size_t size) { + return sendRequest("PUT", payload, size); +} + +int HTTPClientLight::PUT(String payload) { + return PUT((uint8_t *) payload.c_str(), payload.length()); +} + +/** + * sendRequest + * @param type const char * "GET", "POST", .... + * @param payload String data for the message body + * @return + */ +int HTTPClientLight::sendRequest(const char * type, String payload) +{ + return sendRequest(type, (uint8_t *) payload.c_str(), payload.length()); +} + +/** + * sendRequest + * @param type const char * "GET", "POST", .... + * @param payload uint8_t * data for the message body if null not send + * @param size size_t size for the message body if 0 not send + * @return -1 if no info or > 0 when Content-Length is set by server + */ +int HTTPClientLight::sendRequest(const char * type, uint8_t * payload, size_t size) +{ + int code; + bool redirect = false; + uint16_t redirectCount = 0; + do { + // wipe out any existing headers from previous request + for(size_t i = 0; i < _headerKeysCount; i++) { + if (_currentHeaders[i].value.length() > 0) { + _currentHeaders[i].value.clear(); + } + } + + log_d("request type: '%s' redirCount: %d\n", type, redirectCount); + + // connect to server + if(!connect()) { + if (_secure) { + int32_t ret = _transportTraits->getLastError(*_client); + if (ret) { + return returnError(-1000 - ret); // BearSSL error 46 transformed to -1046 + } + } + return returnError(HTTPC_ERROR_CONNECTION_REFUSED); + } + + if(payload && size > 0) { + addHeader(F("Content-Length"), String(size)); + } + + // send Header + if(!sendHeader(type)) { + return returnError(HTTPC_ERROR_SEND_HEADER_FAILED); + } + + // send Payload if needed + if(payload && size > 0) { + if(_client->write(&payload[0], size) != size) { + return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); + } + } + + code = handleHeaderResponse(); + log_d("sendRequest code=%d\n", code); + + // Handle redirections as stated in RFC document: + // https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html + // + // Implementing HTTP_CODE_FOUND as redirection with GET method, + // to follow most of existing user agent implementations. + // + redirect = false; + if ( + _followRedirects != HTTPC_DISABLE_FOLLOW_REDIRECTS && + redirectCount < _redirectLimit && + _location.length() > 0 + ) { + switch (code) { + // redirecting using the same method + case HTTP_CODE_MOVED_PERMANENTLY: + case HTTP_CODE_TEMPORARY_REDIRECT: { + if ( + // allow to force redirections on other methods + // (the RFC require user to accept the redirection) + _followRedirects == HTTPC_FORCE_FOLLOW_REDIRECTS || + // allow GET and HEAD methods without force + !strcmp(type, "GET") || + !strcmp(type, "HEAD") + ) { + redirectCount += 1; + log_d("following redirect (the same method): '%s' redirCount: %d\n", _location.c_str(), redirectCount); + if (!setURL(_location)) { + log_d("failed setting URL for redirection\n"); + // no redirection + break; + } + // redirect using the same request method and payload, diffrent URL + redirect = true; + } + break; + } + // redirecting with method dropped to GET or HEAD + // note: it does not need `HTTPC_FORCE_FOLLOW_REDIRECTS` for any method + case HTTP_CODE_FOUND: + case HTTP_CODE_SEE_OTHER: { + redirectCount += 1; + log_d("following redirect (dropped to GET/HEAD): '%s' redirCount: %d\n", _location.c_str(), redirectCount); + if (!setURL(_location)) { + log_d("failed setting URL for redirection\n"); + // no redirection + break; + } + // redirect after changing method to GET/HEAD and dropping payload + type = "GET"; + payload = nullptr; + size = 0; + redirect = true; + break; + } + + default: + break; + } + } + + } while (redirect); + // handle Server Response (Header) + return returnError(code); +} + +/** + * sendRequest + * @param type const char * "GET", "POST", .... + * @param stream Stream * data stream for the message body + * @param size size_t size for the message body if 0 not Content-Length is send + * @return -1 if no info or > 0 when Content-Length is set by server + */ +int HTTPClientLight::sendRequest(const char * type, Stream * stream, size_t size) +{ + + if(!stream) { + return returnError(HTTPC_ERROR_NO_STREAM); + } + + // connect to server + if(!connect()) { + return returnError(HTTPC_ERROR_CONNECTION_REFUSED); + } + + if(size > 0) { + addHeader("Content-Length", String(size)); + } + + // send Header + if(!sendHeader(type)) { + return returnError(HTTPC_ERROR_SEND_HEADER_FAILED); + } + + int buff_size = HTTP_TCP_BUFFER_SIZE; + + int len = size; + int bytesWritten = 0; + + if(len == 0) { + len = -1; + } + + // if possible create smaller buffer then HTTP_TCP_BUFFER_SIZE + if((len > 0) && (len < HTTP_TCP_BUFFER_SIZE)) { + buff_size = len; + } + + // create buffer for read + uint8_t * buff = (uint8_t *) malloc(buff_size); + + if(buff) { + // read all data from stream and send it to server + while(connected() && (stream->available() > -1) && (len > 0 || len == -1)) { + + // get available data size + int sizeAvailable = stream->available(); + + if(sizeAvailable) { + + int readBytes = sizeAvailable; + + // read only the asked bytes + if(len > 0 && readBytes > len) { + readBytes = len; + } + + // not read more the buffer can handle + if(readBytes > buff_size) { + readBytes = buff_size; + } + + // read data + int bytesRead = stream->readBytes(buff, readBytes); + + // write it to Stream + int bytesWrite = _client->write((const uint8_t *) buff, bytesRead); + bytesWritten += bytesWrite; + + // are all Bytes a writen to stream ? + if(bytesWrite != bytesRead) { + log_d("short write, asked for %d but got %d retry...", bytesRead, bytesWrite); + + // check for write error + if(_client->getWriteError()) { + log_d("stream write error %d", _client->getWriteError()); + + //reset write error for retry + _client->clearWriteError(); + } + + // some time for the stream + delay(1); + + int leftBytes = (readBytes - bytesWrite); + + // retry to send the missed bytes + bytesWrite = _client->write((const uint8_t *) (buff + bytesWrite), leftBytes); + bytesWritten += bytesWrite; + + if(bytesWrite != leftBytes) { + // failed again + log_d("short write, asked for %d but got %d failed.", leftBytes, bytesWrite); + free(buff); + return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); + } + } + + // check for write error + if(_client->getWriteError()) { + log_d("stream write error %d", _client->getWriteError()); + free(buff); + return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); + } + + // count bytes to read left + if(len > 0) { + len -= readBytes; + } + + delay(0); + } else { + delay(1); + } + } + + free(buff); + + if(size && (int) size != bytesWritten) { + log_d("Stream payload bytesWritten %d and size %d mismatch!.", bytesWritten, size); + log_d("ERROR SEND PAYLOAD FAILED!"); + return returnError(HTTPC_ERROR_SEND_PAYLOAD_FAILED); + } else { + log_d("Stream payload written: %d", bytesWritten); + } + + } else { + log_d("too less ram! need %d", HTTP_TCP_BUFFER_SIZE); + return returnError(HTTPC_ERROR_TOO_LESS_RAM); + } + + // handle Server Response (Header) + return returnError(handleHeaderResponse()); +} + +/** + * size of message body / payload + * @return -1 if no info or > 0 when Content-Length is set by server + */ +int HTTPClientLight::getSize(void) +{ + return _size; +} + +/** + * returns the stream of the tcp connection + * @return WiFiClient + */ +WiFiClient& HTTPClientLight::getStream(void) +{ + if (connected()) { + return *_client; + } + + log_w("getStream: not connected"); + static WiFiClient empty; + return empty; +} + +/** + * returns a pointer to the stream of the tcp connection + * @return WiFiClient* + */ +WiFiClient* HTTPClientLight::getStreamPtr(void) +{ + if(connected()) { + return _client; + } + + log_w("getStreamPtr: not connected"); + return nullptr; +} + +/** + * write all message body / payload to Stream + * @param stream Stream * + * @return bytes written ( negative values are error codes ) + */ +int HTTPClientLight::writeToStream(Stream * stream) +{ + + if(!stream) { + return returnError(HTTPC_ERROR_NO_STREAM); + } + + if(!connected()) { + return returnError(HTTPC_ERROR_NOT_CONNECTED); + } + + // get length of document (is -1 when Server sends no Content-Length header) + int len = _size; + int ret = 0; + + if(_transferEncoding == HTTPC_TE_IDENTITY) { + ret = writeToStreamDataBlock(stream, len); + + // have we an error? + if(ret < 0) { + return returnError(ret); + } + } else if(_transferEncoding == HTTPC_TE_CHUNKED) { + int size = 0; + while(1) { + if(!connected()) { + return returnError(HTTPC_ERROR_CONNECTION_LOST); + } + String chunkHeader = _client->readStringUntil('\n'); + + if(chunkHeader.length() <= 0) { + return returnError(HTTPC_ERROR_READ_TIMEOUT); + } + + chunkHeader.trim(); // remove \r + + // read size of chunk + len = (uint32_t) strtol((const char *) chunkHeader.c_str(), NULL, 16); + size += len; + log_d(" read chunk len: %d", len); + + // data left? + if(len > 0) { + int r = writeToStreamDataBlock(stream, len); + if(r < 0) { + // error in writeToStreamDataBlock + return returnError(r); + } + ret += r; + } else { + + // if no length Header use global chunk size + if(_size <= 0) { + _size = size; + } + + // check if we have write all data out + if(ret != _size) { + return returnError(HTTPC_ERROR_STREAM_WRITE); + } + break; + } + + // read trailing \r\n at the end of the chunk + char buf[2]; + auto trailing_seq_len = _client->readBytes((uint8_t*)buf, 2); + if (trailing_seq_len != 2 || buf[0] != '\r' || buf[1] != '\n') { + return returnError(HTTPC_ERROR_READ_TIMEOUT); + } + + delay(0); + } + } else { + return returnError(HTTPC_ERROR_ENCODING); + } + +// end(); + disconnect(true); + return ret; +} + +/** + * return all payload as String (may need lot of ram or trigger out of memory!) + * @return String + */ +String HTTPClientLight::getString(void) +{ + // _size can be -1 when Server sends no Content-Length header + if(_size > 0 || _size == -1) { + StreamString sstring; + // try to reserve needed memory (noop if _size == -1) + if(sstring.reserve((_size + 1))) { + writeToStream(&sstring); + return sstring; + } else { + log_d("not enough memory to reserve a string! need: %d", (_size + 1)); + } + } + + return ""; +} + +/** + * converts error code to String + * @param error int + * @return String + */ +String HTTPClientLight::errorToString(int error) +{ + switch(error) { + case HTTPC_ERROR_CONNECTION_REFUSED: + return F("connection refused"); + case HTTPC_ERROR_SEND_HEADER_FAILED: + return F("send header failed"); + case HTTPC_ERROR_SEND_PAYLOAD_FAILED: + return F("send payload failed"); + case HTTPC_ERROR_NOT_CONNECTED: + return F("not connected"); + case HTTPC_ERROR_CONNECTION_LOST: + return F("connection lost"); + case HTTPC_ERROR_NO_STREAM: + return F("no stream"); + case HTTPC_ERROR_NO_HTTP_SERVER: + return F("no HTTP server"); + case HTTPC_ERROR_TOO_LESS_RAM: + return F("too less ram"); + case HTTPC_ERROR_ENCODING: + return F("Transfer-Encoding not supported"); + case HTTPC_ERROR_STREAM_WRITE: + return F("Stream write error"); + case HTTPC_ERROR_READ_TIMEOUT: + return F("read Timeout"); + default: + return String(); + } +} + +/** + * adds Header to the request + * @param name + * @param value + * @param first + */ +void HTTPClientLight::addHeader(const String& name, const String& value, bool first, bool replace) +{ + // not allow set of Header handled by code + if(!name.equalsIgnoreCase(F("Connection")) && + !name.equalsIgnoreCase(F("User-Agent")) && + !name.equalsIgnoreCase(F("Host")) && + !(name.equalsIgnoreCase(F("Authorization")) && _base64Authorization.length())){ + + String headerLine = name; + headerLine += ": "; + + if (replace) { + int headerStart = _headers.indexOf(headerLine); + if (headerStart != -1 && (headerStart == 0 || _headers[headerStart - 1] == '\n')) { + int headerEnd = _headers.indexOf('\n', headerStart); + _headers = _headers.substring(0, headerStart) + _headers.substring(headerEnd + 1); + } + } + + headerLine += value; + headerLine += "\r\n"; + if(first) { + _headers = headerLine + _headers; + } else { + _headers += headerLine; + } + } +} + +void HTTPClientLight::collectHeaders(const char* headerKeys[], const size_t headerKeysCount) +{ + _headerKeysCount = headerKeysCount; + if(_currentHeaders) { + delete[] _currentHeaders; + } + _currentHeaders = new RequestArgument[_headerKeysCount]; + for(size_t i = 0; i < _headerKeysCount; i++) { + _currentHeaders[i].key = headerKeys[i]; + } +} + +String HTTPClientLight::header(const char* name) +{ + for(size_t i = 0; i < _headerKeysCount; ++i) { + if(_currentHeaders[i].key == name) { + return _currentHeaders[i].value; + } + } + return String(); +} + +String HTTPClientLight::header(size_t i) +{ + if(i < _headerKeysCount) { + return _currentHeaders[i].value; + } + return String(); +} + +String HTTPClientLight::headerName(size_t i) +{ + if(i < _headerKeysCount) { + return _currentHeaders[i].key; + } + return String(); +} + +int HTTPClientLight::headers() +{ + return _headerKeysCount; +} + +bool HTTPClientLight::hasHeader(const char* name) +{ + for(size_t i = 0; i < _headerKeysCount; ++i) { + if((_currentHeaders[i].key == name) && (_currentHeaders[i].value.length() > 0)) { + return true; + } + } + return false; +} + +/** + * init TCP connection and handle ssl verify if needed + * @return true if connection is ok + */ +bool HTTPClientLight::connect(void) +{ + if(connected()) { + if(_reuse) { + log_d("already connected, reusing connection"); + } else { + log_d("already connected, try reuse!"); + } + while(_client->available() > 0) { + _client->read(); + } + return true; + } + +#ifdef HTTPCLIENT_1_1_COMPATIBLE + if(_transportTraits && !_client) { + _tcpDeprecated = _transportTraits->create(); + if(!_tcpDeprecated) { + log_e("failed to create client"); + return false; + } + _client = _tcpDeprecated.get(); + } +#endif + + if (!_client) { + log_d("HTTPClientLight::begin was not called or returned error"); + return false; + } +#ifdef HTTPCLIENT_1_1_COMPATIBLE + if (_tcpDeprecated && !_transportTraits->verify(*_client, _host.c_str())) { + log_d("transport level verify failed"); + _client->stop(); + return false; + } +#endif + if(!_client->connect(_host.c_str(), _port, _connectTimeout)) { + log_d("failed connect to %s:%u", _host.c_str(), _port); + return false; + } + + // set Timeout for WiFiClient and for Stream::readBytesUntil() and Stream::readStringUntil() + _client->setTimeout((_tcpTimeout + 500) / 1000); + + log_d(" connected to %s:%u", _host.c_str(), _port); + + +/* +#ifdef ESP8266 + _client->setNoDelay(true); +#endif + */ + return connected(); +} + +/** + * sends HTTP request header + * @param type (GET, POST, ...) + * @return status + */ +bool HTTPClientLight::sendHeader(const char * type) +{ + if(!connected()) { + return false; + } + + String header = String(type) + " " + _uri + F(" HTTP/1."); + + if(_useHTTP10) { + header += "0"; + } else { + header += "1"; + } + + header += String(F("\r\nHost: ")) + _host; + if (_port != 80 && _port != 443) + { + header += ':'; + header += String(_port); + } + header += String(F("\r\nUser-Agent: ")) + _userAgent + + F("\r\nConnection: "); + + if(_reuse) { + header += F("keep-alive"); + } else { + header += F("close"); + } + header += "\r\n"; + + if(!_useHTTP10) { + header += F("Accept-Encoding: identity;q=1,chunked;q=0.1,*;q=0\r\n"); + } + + if(_base64Authorization.length()) { + _base64Authorization.replace("\n", ""); + header += F("Authorization: Basic "); + header += _base64Authorization; + header += "\r\n"; + } + + header += _headers + "\r\n"; + + return (_client->write((const uint8_t *) header.c_str(), header.length()) == header.length()); +} + +/** + * reads the response from the server + * @return int http code + */ +int HTTPClientLight::handleHeaderResponse() +{ + + if(!connected()) { + return HTTPC_ERROR_NOT_CONNECTED; + } + + clear(); + + _canReuse = _reuse; + + String transferEncoding; + + _transferEncoding = HTTPC_TE_IDENTITY; + unsigned long lastDataTime = millis(); + bool firstLine = true; + + while(connected()) { + size_t len = _client->available(); + if(len > 0) { + String headerLine = _client->readStringUntil('\n'); + headerLine.trim(); // remove \r + + lastDataTime = millis(); + + log_v("RX: '%s'", headerLine.c_str()); + + if(firstLine) { + firstLine = false; + if(_canReuse && headerLine.startsWith("HTTP/1.")) { + _canReuse = (headerLine[sizeof "HTTP/1." - 1] != '0'); + } + int codePos = headerLine.indexOf(' ') + 1; + _returnCode = headerLine.substring(codePos, headerLine.indexOf(' ', codePos)).toInt(); + } else if(headerLine.indexOf(':')) { + String headerName = headerLine.substring(0, headerLine.indexOf(':')); + String headerValue = headerLine.substring(headerLine.indexOf(':') + 1); + headerValue.trim(); + + if(headerName.equalsIgnoreCase("Content-Length")) { + _size = headerValue.toInt(); + } + + if(_canReuse && headerName.equalsIgnoreCase("Connection")) { + if(headerValue.indexOf("close") >= 0 && headerValue.indexOf("keep-alive") < 0) { + _canReuse = false; + } + } + + if(headerName.equalsIgnoreCase("Transfer-Encoding")) { + transferEncoding = headerValue; + } + + if (headerName.equalsIgnoreCase("Location")) { + _location = headerValue; + } + + for(size_t i = 0; i < _headerKeysCount; i++) { + if(_currentHeaders[i].key.equalsIgnoreCase(headerName)) { + _currentHeaders[i].value = headerValue; + break; + } + } + } + + if(headerLine == "") { + log_d("code: %d", _returnCode); + + if(_size > 0) { + log_d("size: %d", _size); + } + + if(transferEncoding.length() > 0) { + log_d("Transfer-Encoding: %s", transferEncoding.c_str()); + if(transferEncoding.equalsIgnoreCase("chunked")) { + _transferEncoding = HTTPC_TE_CHUNKED; + } else if(transferEncoding.equalsIgnoreCase("identity")) { + _transferEncoding = HTTPC_TE_IDENTITY; + } else { + return HTTPC_ERROR_ENCODING; + } + } else { + _transferEncoding = HTTPC_TE_IDENTITY; + } + + if(_returnCode) { + return _returnCode; + } else { + log_d("Remote host is not an HTTP Server!"); + return HTTPC_ERROR_NO_HTTP_SERVER; + } + } + + } else { + if((millis() - lastDataTime) > _tcpTimeout) { + return HTTPC_ERROR_READ_TIMEOUT; + } + delay(10); + } + } + + return HTTPC_ERROR_CONNECTION_LOST; +} + +/** + * write one Data Block to Stream + * @param stream Stream * + * @param size int + * @return < 0 = error >= 0 = size written + */ +int HTTPClientLight::writeToStreamDataBlock(Stream * stream, int size) +{ + int buff_size = HTTP_TCP_BUFFER_SIZE; + int len = size; + int bytesWritten = 0; + + // if possible create smaller buffer then HTTP_TCP_BUFFER_SIZE + if((len > 0) && (len < HTTP_TCP_BUFFER_SIZE)) { + buff_size = len; + } + + // create buffer for read + uint8_t * buff = (uint8_t *) malloc(buff_size); + + if(buff) { + // read all data from server + while(connected() && (len > 0 || len == -1)) { + + // get available data size + size_t sizeAvailable = _client->available(); + + if(sizeAvailable) { + + int readBytes = sizeAvailable; + + // read only the asked bytes + if(len > 0 && readBytes > len) { + readBytes = len; + } + + // not read more the buffer can handle + if(readBytes > buff_size) { + readBytes = buff_size; + } + + // stop if no more reading + if (readBytes == 0) + break; + + // read data + int bytesRead = _client->readBytes(buff, readBytes); + + // write it to Stream + int bytesWrite = stream->write(buff, bytesRead); + bytesWritten += bytesWrite; + + // are all Bytes a writen to stream ? + if(bytesWrite != bytesRead) { + log_d("short write asked for %d but got %d retry...", bytesRead, bytesWrite); + + // check for write error + if(stream->getWriteError()) { + log_d("stream write error %d", stream->getWriteError()); + + //reset write error for retry + stream->clearWriteError(); + } + + // some time for the stream + delay(1); + + int leftBytes = (readBytes - bytesWrite); + + // retry to send the missed bytes + bytesWrite = stream->write((buff + bytesWrite), leftBytes); + bytesWritten += bytesWrite; + + if(bytesWrite != leftBytes) { + // failed again + log_w("short write asked for %d but got %d failed.", leftBytes, bytesWrite); + free(buff); + return HTTPC_ERROR_STREAM_WRITE; + } + } + + // check for write error + if(stream->getWriteError()) { + log_w("stream write error %d", stream->getWriteError()); + free(buff); + return HTTPC_ERROR_STREAM_WRITE; + } + + // count bytes to read left + if(len > 0) { + len -= readBytes; + } + + delay(0); + } else { + delay(1); + } + } + + free(buff); + + log_d("connection closed or file end (written: %d).", bytesWritten); + + if((size > 0) && (size != bytesWritten)) { + log_d("bytesWritten %d and size %d mismatch!.", bytesWritten, size); + return HTTPC_ERROR_STREAM_WRITE; + } + + } else { + log_w("too less ram! need %d", HTTP_TCP_BUFFER_SIZE); + return HTTPC_ERROR_TOO_LESS_RAM; + } + + return bytesWritten; +} + +/** + * called to handle error return, may disconnect the connection if still exists + * @param error + * @return error + */ +int HTTPClientLight::returnError(int error) +{ + if(error < 0) { + log_w("error(%d): %s", error, errorToString(error).c_str()); + if(connected()) { + log_d("tcp stop"); + _client->stop(); + } + } + return error; +} + +void HTTPClientLight::setFollowRedirects(followRedirects_t follow) +{ + _followRedirects = follow; +} + +void HTTPClientLight::setRedirectLimit(uint16_t limit) +{ + _redirectLimit = limit; +} + +/** + * set the URL to a new value. Handy for following redirects. + * @param url + */ +bool HTTPClientLight::setURL(const String& url) +{ + // if the new location is only a path then only update the URI + if (url && url[0] == '/') { + _uri = url; + clear(); + return true; + } + + if (!url.startsWith(_protocol + ':')) { + log_d("new URL not the same protocol, expected '%s', URL: '%s'\n", _protocol.c_str(), url.c_str()); + return false; + } + + // check if the port is specified + int indexPort = url.indexOf(':', 6); // find the first ':' excluding the one from the protocol + int indexURI = url.indexOf('/', 7); // find where the URI starts to make sure the ':' is not part of it + if (indexPort == -1 || indexPort > indexURI) { + // the port is not specified + _port = (_protocol == "https" ? 443 : 80); + } + + // disconnect but preserve _client. + // Also have to keep the connection otherwise it will free some of the memory used by _client + // and will blow up later when trying to do _client->available() or similar + _canReuse = true; + disconnect(true); + return beginInternal(url, _protocol.c_str()); +} + +const String &HTTPClientLight::getLocation(void) +{ + return _location; +} +#endif // USE_BERRY +#endif // ESP32 diff --git a/lib/lib_ssl/tls_mini/src/HttpClientLight.h b/lib/lib_ssl/tls_mini/src/HttpClientLight.h new file mode 100644 index 000000000..dc2bc0e58 --- /dev/null +++ b/lib/lib_ssl/tls_mini/src/HttpClientLight.h @@ -0,0 +1,270 @@ +/** + * HTTPClientLight.h + * + * Created on: 02.11.2015 + * + * Copyright (c) 2015 Markus Sattler. All rights reserved. + * This file is part of the HTTPClient for Arduino. + * Port to ESP32 by Evandro Luis Copercini (2017), + * changed fingerprints to CA verification. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef HTTPClient_Light_H_ +#define HTTPClient_Light_H_ + +#define HTTPCLIENT_1_1_COMPATIBLE + +#include +#include +#include +#include + +#include // import definitions from the original code + +#include "tasmota_options.h" + +#define HTTPCLIENT_DEFAULT_TCP_TIMEOUT (5000) + +/// HTTP client errors +#define HTTPC_ERROR_CONNECTION_REFUSED (-1) +#define HTTPC_ERROR_SEND_HEADER_FAILED (-2) +#define HTTPC_ERROR_SEND_PAYLOAD_FAILED (-3) +#define HTTPC_ERROR_NOT_CONNECTED (-4) +#define HTTPC_ERROR_CONNECTION_LOST (-5) +#define HTTPC_ERROR_NO_STREAM (-6) +#define HTTPC_ERROR_NO_HTTP_SERVER (-7) +#define HTTPC_ERROR_TOO_LESS_RAM (-8) +#define HTTPC_ERROR_ENCODING (-9) +#define HTTPC_ERROR_STREAM_WRITE (-10) +#define HTTPC_ERROR_READ_TIMEOUT (-11) + +/// size for the stream handling +#define HTTP_TCP_BUFFER_SIZE (1460) + +/// HTTP codes see RFC7231 +// typedef enum { +// HTTP_CODE_CONTINUE = 100, +// HTTP_CODE_SWITCHING_PROTOCOLS = 101, +// HTTP_CODE_PROCESSING = 102, +// HTTP_CODE_OK = 200, +// HTTP_CODE_CREATED = 201, +// HTTP_CODE_ACCEPTED = 202, +// HTTP_CODE_NON_AUTHORITATIVE_INFORMATION = 203, +// HTTP_CODE_NO_CONTENT = 204, +// HTTP_CODE_RESET_CONTENT = 205, +// HTTP_CODE_PARTIAL_CONTENT = 206, +// HTTP_CODE_MULTI_STATUS = 207, +// HTTP_CODE_ALREADY_REPORTED = 208, +// HTTP_CODE_IM_USED = 226, +// HTTP_CODE_MULTIPLE_CHOICES = 300, +// HTTP_CODE_MOVED_PERMANENTLY = 301, +// HTTP_CODE_FOUND = 302, +// HTTP_CODE_SEE_OTHER = 303, +// HTTP_CODE_NOT_MODIFIED = 304, +// HTTP_CODE_USE_PROXY = 305, +// HTTP_CODE_TEMPORARY_REDIRECT = 307, +// HTTP_CODE_PERMANENT_REDIRECT = 308, +// HTTP_CODE_BAD_REQUEST = 400, +// HTTP_CODE_UNAUTHORIZED = 401, +// HTTP_CODE_PAYMENT_REQUIRED = 402, +// HTTP_CODE_FORBIDDEN = 403, +// HTTP_CODE_NOT_FOUND = 404, +// HTTP_CODE_METHOD_NOT_ALLOWED = 405, +// HTTP_CODE_NOT_ACCEPTABLE = 406, +// HTTP_CODE_PROXY_AUTHENTICATION_REQUIRED = 407, +// HTTP_CODE_REQUEST_TIMEOUT = 408, +// HTTP_CODE_CONFLICT = 409, +// HTTP_CODE_GONE = 410, +// HTTP_CODE_LENGTH_REQUIRED = 411, +// HTTP_CODE_PRECONDITION_FAILED = 412, +// HTTP_CODE_PAYLOAD_TOO_LARGE = 413, +// HTTP_CODE_URI_TOO_LONG = 414, +// HTTP_CODE_UNSUPPORTED_MEDIA_TYPE = 415, +// HTTP_CODE_RANGE_NOT_SATISFIABLE = 416, +// HTTP_CODE_EXPECTATION_FAILED = 417, +// HTTP_CODE_MISDIRECTED_REQUEST = 421, +// HTTP_CODE_UNPROCESSABLE_ENTITY = 422, +// HTTP_CODE_LOCKED = 423, +// HTTP_CODE_FAILED_DEPENDENCY = 424, +// HTTP_CODE_UPGRADE_REQUIRED = 426, +// HTTP_CODE_PRECONDITION_REQUIRED = 428, +// HTTP_CODE_TOO_MANY_REQUESTS = 429, +// HTTP_CODE_REQUEST_HEADER_FIELDS_TOO_LARGE = 431, +// HTTP_CODE_INTERNAL_SERVER_ERROR = 500, +// HTTP_CODE_NOT_IMPLEMENTED = 501, +// HTTP_CODE_BAD_GATEWAY = 502, +// HTTP_CODE_SERVICE_UNAVAILABLE = 503, +// HTTP_CODE_GATEWAY_TIMEOUT = 504, +// HTTP_CODE_HTTP_VERSION_NOT_SUPPORTED = 505, +// HTTP_CODE_VARIANT_ALSO_NEGOTIATES = 506, +// HTTP_CODE_INSUFFICIENT_STORAGE = 507, +// HTTP_CODE_LOOP_DETECTED = 508, +// HTTP_CODE_NOT_EXTENDED = 510, +// HTTP_CODE_NETWORK_AUTHENTICATION_REQUIRED = 511 +// } t_http_codes; + +// typedef enum { +// HTTPC_TE_IDENTITY, +// HTTPC_TE_CHUNKED +// } transferEncoding_t; + +/** + * redirection follow mode. + * + `HTTPC_DISABLE_FOLLOW_REDIRECTS` - no redirection will be followed. + * + `HTTPC_STRICT_FOLLOW_REDIRECTS` - strict RFC2616, only requests using + * GET or HEAD methods will be redirected (using the same method), + * since the RFC requires end-user confirmation in other cases. + * + `HTTPC_FORCE_FOLLOW_REDIRECTS` - all redirections will be followed, + * regardless of a used method. New request will use the same method, + * and they will include the same body data and the same headers. + * In the sense of the RFC, it's just like every redirection is confirmed. + */ +// typedef enum { +// HTTPC_DISABLE_FOLLOW_REDIRECTS, +// HTTPC_STRICT_FOLLOW_REDIRECTS, +// HTTPC_FORCE_FOLLOW_REDIRECTS +// } followRedirects_t; + + + +class HTTPClientLight +{ +public: + HTTPClientLight(); + ~HTTPClientLight(); + +/* + * Since both begin() functions take a reference to client as a parameter, you need to + * ensure the client object lives the entire time of the HTTPClientLight + */ + // bool begin(WiFiClient &client, String url); + // bool begin(WiFiClient &client, String host, uint16_t port, String uri = "/", bool https = false); + +#ifdef HTTPCLIENT_1_1_COMPATIBLE + bool begin(String url); + bool begin(String url, const char* CAcert); + // bool begin(String host, uint16_t port, String uri = "/"); + // bool begin(String host, uint16_t port, String uri, const char* CAcert); + // bool begin(String host, uint16_t port, String uri, const char* CAcert, const char* cli_cert, const char* cli_key); +#endif + + void end(void); + + bool connected(void); + + void setReuse(bool reuse); /// keep-alive + void setUserAgent(const String& userAgent); + void setAuthorization(const char * user, const char * password); + void setAuthorization(const char * auth); + void setConnectTimeout(int32_t connectTimeout); + void setTimeout(uint16_t timeout); + + // Redirections + void setFollowRedirects(followRedirects_t follow); + void setRedirectLimit(uint16_t limit); // max redirects to follow for a single request + + bool setURL(const String &url); + void useHTTP10(bool usehttp10 = true); + + /// request handling + int GET(); + int PATCH(uint8_t * payload, size_t size); + int PATCH(String payload); + int POST(uint8_t * payload, size_t size); + int POST(String payload); + int PUT(uint8_t * payload, size_t size); + int PUT(String payload); + int sendRequest(const char * type, String payload); + int sendRequest(const char * type, uint8_t * payload = NULL, size_t size = 0); + int sendRequest(const char * type, Stream * stream, size_t size = 0); + + void addHeader(const String& name, const String& value, bool first = false, bool replace = true); + + /// Response handling + void collectHeaders(const char* headerKeys[], const size_t headerKeysCount); + String header(const char* name); // get request header value by name + String header(size_t i); // get request header value by number + String headerName(size_t i); // get request header name by number + int headers(); // get header count + bool hasHeader(const char* name); // check if header exists + + + int getSize(void); + const String &getLocation(void); + + WiFiClient& getStream(void); + WiFiClient* getStreamPtr(void); + int writeToStream(Stream* stream); + String getString(void); + + static String errorToString(int error); + +protected: + struct RequestArgument { + String key; + String value; + }; + + bool beginInternal(String url, const char* expectedProtocol); + void disconnect(bool preserveClient = false); + void clear(); + int returnError(int error); + bool connect(void); + bool sendHeader(const char * type); + int handleHeaderResponse(); + int writeToStreamDataBlock(Stream * stream, int len); + + +#ifdef HTTPCLIENT_1_1_COMPATIBLE + TransportTraitsPtr _transportTraits; + std::unique_ptr _tcpDeprecated; +#endif + + WiFiClient* _client = nullptr; + + /// request handling + String _host; + uint16_t _port = 0; + int32_t _connectTimeout = -1; + bool _reuse = true; + uint16_t _tcpTimeout = HTTPCLIENT_DEFAULT_TCP_TIMEOUT; + bool _useHTTP10 = false; + bool _secure = false; + + String _uri; + String _protocol; + String _headers; + String _userAgent = "ESP32HTTPClient"; + String _base64Authorization; + + /// Response handling + RequestArgument* _currentHeaders = nullptr; + size_t _headerKeysCount = 0; + + int _returnCode = 0; + int _size = -1; + bool _canReuse = false; + followRedirects_t _followRedirects = HTTPC_DISABLE_FOLLOW_REDIRECTS; + uint16_t _redirectLimit = 10; + String _location; + transferEncoding_t _transferEncoding = HTTPC_TE_IDENTITY; +}; + + + +#endif /* HTTPClient_Light_H_ */ \ No newline at end of file diff --git a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp index 720ca2580..21317479c 100755 --- a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp +++ b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp @@ -288,6 +288,17 @@ void WiFiClientSecure_light::flush(void) { } #endif +#ifdef ESP32 +int WiFiClientSecure_light::connect(IPAddress ip, uint16_t port, int32_t timeout) { + DEBUG_BSSL("connect(%s,%d)", ip.toString().c_str(), port); + clearLastError(); + if (!WiFiClient::connect(ip, port, timeout)) { + setLastError(ERR_TCP_CONNECT); + return 0; + } + return _connectSSL(nullptr); +} +#else // ESP32 int WiFiClientSecure_light::connect(IPAddress ip, uint16_t port) { DEBUG_BSSL("connect(%s,%d)", ip.toString().c_str(), port); clearLastError(); @@ -297,7 +308,28 @@ int WiFiClientSecure_light::connect(IPAddress ip, uint16_t port) { } return _connectSSL(nullptr); } +#endif +#ifdef ESP32 +int WiFiClientSecure_light::connect(const char* name, uint16_t port, int32_t timeout) { + DEBUG_BSSL("connect(%s,%d)\n", name, port); + IPAddress remote_addr; + clearLastError(); + if (!WiFi.hostByName(name, remote_addr)) { + DEBUG_BSSL("connect: Name loopup failure\n"); + setLastError(ERR_CANT_RESOLVE_IP); + return 0; + } + DEBUG_BSSL("connect(%s,%d)\n", remote_addr.toString().c_str(), port); + if (!WiFiClient::connect(remote_addr, port, timeout)) { + DEBUG_BSSL("connect: Unable to connect TCP socket\n"); + _last_error = ERR_TCP_CONNECT; + return 0; + } + LOG_HEAP_SIZE("Before calling _connectSSL"); + return _connectSSL(name); +} +#else // ESP32 int WiFiClientSecure_light::connect(const char* name, uint16_t port) { DEBUG_BSSL("connect(%s,%d)\n", name, port); IPAddress remote_addr; @@ -316,6 +348,7 @@ int WiFiClientSecure_light::connect(const char* name, uint16_t port) { LOG_HEAP_SIZE("Before calling _connectSSL"); return _connectSSL(name); } +#endif void WiFiClientSecure_light::_freeSSL() { _ctx_present = false; diff --git a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h index f88a9f17f..2e140308d 100755 --- a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h +++ b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.h @@ -38,8 +38,13 @@ class WiFiClientSecure_light : public WiFiClient { void allocateBuffers(void); + #ifdef ESP32 // the method to override in ESP32 has timeout argument + int connect(IPAddress ip, uint16_t port, int32_t timeout) override; + int connect(const char* name, uint16_t port, int32_t timeout) override; + #else int connect(IPAddress ip, uint16_t port) override; int connect(const char* name, uint16_t port) override; + #endif uint8_t connected() override; size_t write(const uint8_t *buf, size_t size) override; diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 189da0e61..10ddb439f 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -109,6 +109,7 @@ extern void be_load_Driver_class(bvm *vm); extern void be_load_Timer_class(bvm *vm); extern void be_load_driver_i2c_lib(bvm *vm); extern void be_load_md5_lib(bvm *vm); +extern void be_load_webclient_lib(bvm *vm); extern void be_load_crypto_lib(bvm *vm); #ifdef USE_I2S_AUDIO_BERRY @@ -148,6 +149,9 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_wirelib(vm); be_load_driver_i2c_lib(vm); #endif // USE_I2C +#ifdef USE_WEBCLIENT + be_load_webclient_lib(vm); +#endif // USE_WEBCLIENT #if defined(USE_ONEWIRE) || defined(USE_DS18x20) be_load_onewirelib(vm); #endif diff --git a/lib/libesp32/Berry/default/be_webclient_lib.c b/lib/libesp32/Berry/default/be_webclient_lib.c new file mode 100644 index 000000000..bc24705d6 --- /dev/null +++ b/lib/libesp32/Berry/default/be_webclient_lib.c @@ -0,0 +1,55 @@ +/******************************************************************** + * Webclient mapped to Arduino framework + * + * To use: `d = webclient()` + * + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_WEBCLIENT + +extern int wc_init(bvm *vm); +extern int wc_deinit(bvm *vm); +extern int wc_urlencode(bvm *vm); +extern int wc_begin(bvm *vm); +extern int wc_set_timeouts(bvm *vm); +extern int wc_set_useragent(bvm *vm); +extern int wc_set_auth(bvm *vm); +extern int wc_connected(bvm *vm); +extern int wc_close(bvm *vm); +extern int wc_addheader(bvm *vm); +extern int wc_GET(bvm *vm); +extern int wc_POST(bvm *vm); +extern int wc_getstring(bvm *vm); +extern int wc_getsize(bvm *vm); + +#include "../generate/be_fixed_be_class_webclient.h" + +void be_load_webclient_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_webclient); + be_setglobal(vm, "webclient"); + be_pop(vm, 1); +} +/* @const_object_info_begin + +class be_class_webclient (scope: global, name: webclient) { + .p, var + .w, var + init, func(wc_init) + deinit, func(wc_deinit) + url_encode, func(wc_urlencode) + + begin, func(wc_begin) + set_timeouts, func(wc_set_timeouts) + set_useragent, func(wc_set_useragent) + set_auth, func(wc_set_auth) + close, func(wc_close) + add_header, func(wc_addheader) + GET, func(wc_GET) + POST, func(wc_POST) + get_string, func(wc_getstring) + get_size, func(wc_getsize) +} +@const_object_info_end */ + +#endif // USE_WEBCLIENT diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index ea86eeb84..19694bcc1 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,668 +1,680 @@ -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_vcall; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_CHANGE; extern const bcstring be_const_str_EXS_ENABLE; extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_lv_font; extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_isrunning; extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_vcall; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_write_bytes; extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_TUYA_RX; extern const bcstring be_const_str_seti; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_DSB; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index a3f04a988..24b50ecd5 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1000 +1,1018 @@ -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SDM120_TX); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_INTERRUPT); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_INPUT_PULLDOWN); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(srand, "srand", 465518633u, 0, 5, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_vcall); -be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_MAX31855CLK); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_NRF24_DC); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, NULL); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_AS608_RX); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, NULL); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SDM630_TX); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_CNTR1); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_I2S_OUT_CLK); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_KEY1); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_DEEPSLEEP); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_DCKI); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, NULL); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, NULL); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_EXS_ENABLE); be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_EPD_DATA); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_FALLING); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_raise); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_raise); be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_lv_obj); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_DDSU666_TX); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_EC_C25519); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DHT11_OUT); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_obj); be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); +be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_OPTION_A); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_seti); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2S_IN_SLCT); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_KEY1_TC); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_NRG_SEL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_seti); be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_CSE7766_TX); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_FALLING); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_BACKLIGHT); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_MAX31855DO); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_INTERRUPT); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_P9813_DAT); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_I2S_IN_DATA); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_KEY1_INV_PD); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_ARIRFRCV); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_IRRECV); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); static const bstring* const m_string_table[] = { - NULL, - (const bstring *)&be_const_str_lv_checkbox, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_sinh, - NULL, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_HPMA_RX, - NULL, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_REL1, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str__write, - (const bstring *)&be_const_str__timers, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_ROT1A_NP, - (const bstring *)&be_const_str_lv_color, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_encrypt, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_BUZZER_INV, - NULL, - (const bstring *)&be_const_str_load_freetype_font, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_publish, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_depower, - (const bstring *)&be_const_str_read, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str__end_transmission, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_TM1638STB, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_NEW_LINE, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_WEBCAM_HSD, - (const bstring *)&be_const_str_srand, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_write_bytes, - (const bstring *)&be_const_str_PZEM0XX_TX, - NULL, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str_lv_gauge_format_cb, - (const bstring *)&be_const_str_isinstance, - (const bstring *)&be_const_str_content_stop, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_copy, - (const bstring *)&be_const_str_, - NULL, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_do, - (const bstring *)&be_const_str_lv_tileview, - (const bstring *)&be_const_str_NRG_SEL_INV, - NULL, - (const bstring *)&be_const_str_load_font, - (const bstring *)&be_const_str_reset_search, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_delay, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_lv_draw_mask_map_param, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_setbits, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_concat, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_return, - (const bstring *)&be_const_str_asin, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_SDM630_RX, - NULL, - (const bstring *)&be_const_str_WEBCAM_DATA, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_lv_design_cb, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_get_power, - (const bstring *)&be_const_str_SOLAXX1_RX, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str__read, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_SYMBOL_CLOSE, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_lv_draw_img_dsc, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_stop, + (const bstring *)&be_const_str_gamma10, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_lv_draw_mask_angle_param, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_resp_cmnd_failed, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_LOW, (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_lv_win, - (const bstring *)&be_const_str_SYMBOL_POWER, NULL, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_pin, - (const bstring *)&be_const_str_SYMBOL_SHUFFLE, - (const bstring *)&be_const_str_SYMBOL_CUT, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_SYMBOL_LEFT, + NULL, + (const bstring *)&be_const_str_pin_mode, + (const bstring *)&be_const_str_OPEN_DRAIN, (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_exists, + (const bstring *)&be_const_str___upper__, NULL, - NULL, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_TM1638CLK, - (const bstring *)&be_const_str_SYMBOL_SAVE, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, - (const bstring *)&be_const_str_I2S_IN_DATA, - NULL, - (const bstring *)&be_const_str_PZEM016_RX, (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_PULLDOWN, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_LMT01, NULL, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_EPAPER29_CS, NULL, - (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_I2C_SCL, + NULL, + (const bstring *)&be_const_str_vcall, + (const bstring *)&be_const_str_set_power, + (const bstring *)&be_const_str_lv_area, (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_isrunning, - (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_lv_arc, + (const bstring *)&be_const_str_write_bytes, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_run_deferred, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_member, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str_content_send_style, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_arg_name, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_MP3_DFR562, + NULL, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_call, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_KEY1_INV, + NULL, + (const bstring *)&be_const_str_lv_chart, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_srand, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str__begin_transmission, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_keys, + (const bstring *)&be_const_str_GET, + NULL, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_lv_group, + NULL, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_ADC_CT_POWER, + NULL, + (const bstring *)&be_const_str_check_privileged_access, + (const bstring *)&be_const_str_lv_cont, + NULL, + NULL, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + NULL, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_SYMBOL_SAVE, + NULL, + NULL, + (const bstring *)&be_const_str_I2S_OUT_DATA, (const bstring *)&be_const_str_OLED_RESET, NULL, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_members, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_getbits, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_tanh, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_elif, - (const bstring *)&be_const_str_SSD1331_DC, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_AudioGeneratorMP3, - NULL, - NULL, - (const bstring *)&be_const_str_lv_draw_mask_map_param_cfg, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_resp_cmnd_error, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_ZIGBEE_TX, - NULL, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_LEDLNK_INV, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_ZIGBEE_RST, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_CC1101_GDO2, - NULL, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_LE01MR_TX, - NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_dot_p2, - NULL, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_open, - (const bstring *)&be_const_str_lv_draw_mask_fade_param, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_SAIR_RX, - NULL, - NULL, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str___iterator__, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_lv_img, - (const bstring *)&be_const_str_CHANGE, - NULL, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_read8, - (const bstring *)&be_const_str_lv_linemeter, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_SYMBOL_DIRECTORY, - (const bstring *)&be_const_str_loop, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_lv_event_cb, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_item, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_call, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_SPI_MISO, - NULL, - NULL, - (const bstring *)&be_const_str_BL0940_RX, - NULL, - (const bstring *)&be_const_str_SM16716_SEL, - NULL, - (const bstring *)&be_const_str_NEOPOOL_TX, - NULL, - (const bstring *)&be_const_str_SYMBOL_STOP, - NULL, - (const bstring *)&be_const_str_name, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_I2S_OUT_CLK, (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_TCP_TX, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_lv_roller, + (const bstring *)&be_const_str_SYMBOL_CUT, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_TX2X_TXD_BLACK, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_int, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + NULL, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_OUTPUT_LO, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_get_size, + (const bstring *)&be_const_str_read, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_acos, (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_read24, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_has_arg, - NULL, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_SM16716_DAT, - NULL, - (const bstring *)&be_const_str_WE517_TX, - (const bstring *)&be_const_str_MCP39F5_RX, (const bstring *)&be_const_str_ADE7953_IRQ, NULL, - (const bstring *)&be_const_str_resp_cmnd, - (const bstring *)&be_const_str_update, - (const bstring *)&be_const_str_web_send_decimal, - (const bstring *)&be_const_str_add_cmd, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_chars_in_string, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_lv_point, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_codedump, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_DCKI, NULL, - (const bstring *)&be_const_str_pin_used, + NULL, + NULL, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_open, (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_run_deferred, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_eth, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, NULL, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str__write, + NULL, + (const bstring *)&be_const_str_webclient, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_I2C_SDA, + NULL, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_start, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_allocated, + NULL, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_cosh, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_select, + (const bstring *)&be_const_str_lv_draw_line_dsc, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_log, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_TCP_RX, + NULL, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_TM1638CLK, + NULL, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_for, + NULL, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str__get_cb, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_SBR_RX, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_setrange, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_reset_search, + (const bstring *)&be_const_str_NRF24_DC, + NULL, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_resp_cmnd_str, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str__cb, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_lv_table, + (const bstring *)&be_const_str_SYMBOL_CALL, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_, + NULL, + (const bstring *)&be_const_str_exp, (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_ILI9341_CS + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_import, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_tan, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_SYMBOL_WIFI, + NULL, + (const bstring *)&be_const_str_content_button, + (const bstring *)&be_const_str_MD5, + (const bstring *)&be_const_str_lv_keyboard, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_setmember, + (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_SWT1_PD, + NULL, + NULL, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_real, + (const bstring *)&be_const_str_TXD, + (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_copy, + NULL, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_lv_msgbox, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_DDS2382_RX, + NULL, + NULL, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_read32, + NULL, + (const bstring *)&be_const_str_digital_read, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_issubclass, + NULL, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_clear, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_DSB }; static const struct bconststrtab m_const_string_table = { - .size = 323, - .count = 646, + .size = 329, + .count = 658, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h b/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h new file mode 100644 index 000000000..6a7044c15 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_webclient.h @@ -0,0 +1,31 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_webclient_map) { + { be_const_key(url_encode, 3), be_const_func(wc_urlencode) }, + { be_const_key(POST, -1), be_const_func(wc_POST) }, + { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(begin, 5), be_const_func(wc_begin) }, + { be_const_key(set_useragent, 2), be_const_func(wc_set_useragent) }, + { be_const_key(set_auth, 12), be_const_func(wc_set_auth) }, + { be_const_key(close, -1), be_const_func(wc_close) }, + { be_const_key(add_header, 9), be_const_func(wc_addheader) }, + { be_const_key(get_size, -1), be_const_func(wc_getsize) }, + { be_const_key(deinit, -1), be_const_func(wc_deinit) }, + { be_const_key(set_timeouts, -1), be_const_func(wc_set_timeouts) }, + { be_const_key(GET, 13), be_const_func(wc_GET) }, + { be_const_key(init, -1), be_const_func(wc_init) }, + { be_const_key(dot_w, -1), be_const_var(1) }, + { be_const_key(get_string, 11), be_const_func(wc_getstring) }, +}; + +static be_define_const_map( + be_class_webclient_map, + 15 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_webclient, + 2, + NULL, + webclient +); diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index c0802790d..17af39872 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -980,7 +980,11 @@ #define USE_BERRY // Enable Berry scripting language //#define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact - + #define USE_WEBCLIENT // Enable `webclient` to make HTTP/HTTPS requests. Can be disabled for security reasons. + #define USE_WEBCLIENT_HTTPS // Enable HTTPS outgoing requests based on BearSSL (much ligher then mbedTLS, 42KB vs 150KB) in insecure mode (no verification of server's certificate) + // Note that only one cipher is enabled: ECDHE_RSA_WITH_AES_128_GCM_SHA256 which is very commonly used and highly secure + #define USE_BERRY_WEBCLIENT_USERAGENT "TasmotaClient" // default user-agent used, can be changed with `wc.set_useragent()` + #define USE_BERRY_WEBCLIENT_TIMEOUT 5000 // Default timeout in milliseconds #define USE_CSE7761 // Add support for CSE7761 Energy monitor as used in Sonoff Dual R3 // -- LVGL Graphics Library --------------------------------- @@ -1075,10 +1079,10 @@ * Post-process compile options for TLS \*********************************************************************************************/ -#if defined(USE_MQTT_TLS) || defined(USE_SENDMAIL) || defined(USE_TELEGRAM) +#if defined(USE_MQTT_TLS) || defined(USE_SENDMAIL) || defined(USE_TELEGRAM) || defined(USE_WEBCLIENT_HTTPS) || defined(USE_ALEXA_AVS) #define USE_TLS // flag indicates we need to include TLS code - #if defined(USE_MQTT_AWS_IOT) || defined(USE_TELEGRAM) + #if defined(USE_MQTT_AWS_IOT) || defined(USE_TELEGRAM) || defined(USE_WEBCLIENT_HTTPS) #define USE_MQTT_TLS_FORCE_EC_CIPHER // AWS IoT and TELEGRAM require EC Cipher #endif #endif diff --git a/tasmota/xdrv_52_3_berry_webclient.ino b/tasmota/xdrv_52_3_berry_webclient.ino new file mode 100644 index 000000000..531a73d95 --- /dev/null +++ b/tasmota/xdrv_52_3_berry_webclient.ino @@ -0,0 +1,306 @@ +/* + xdrv_52_3_berry_webserver.ino - Berry scripting language, webserver module + + Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#ifdef USE_BERRY + +#ifdef USE_WEBCLIENT + +#include +#include + +String wc_UrlEncode(const String& text) { + const char hex[] = "0123456789ABCDEF"; + + String encoded = ""; + int len = text.length(); + int i = 0; + while (i < len) { + char decodedChar = text.charAt(i++); + + if (('a' <= decodedChar && decodedChar <= 'z') || + ('A' <= decodedChar && decodedChar <= 'Z') || + ('0' <= decodedChar && decodedChar <= '9') || + ('=' == decodedChar)) { + encoded += decodedChar; + } else { + encoded += '%'; + encoded += hex[decodedChar >> 4]; + encoded += hex[decodedChar & 0xF]; + } + + } + return encoded; +} + +/*********************************************************************************************\ + * Int constants + *********************************************************************************************/ +// const be_constint_t webserver_constants[] = { +// { "BUTTON_CONFIGURATION", BUTTON_CONFIGURATION }, +// { "BUTTON_INFORMATION", BUTTON_INFORMATION }, +// { "BUTTON_MAIN", BUTTON_MAIN }, +// { "BUTTON_MANAGEMENT", BUTTON_MANAGEMENT }, +// { "BUTTON_MODULE", BUTTON_MODULE }, +// { "HTTP_ADMIN", HTTP_ADMIN }, +// { "HTTP_ANY", HTTP_ANY }, +// { "HTTP_GET", HTTP_GET }, +// { "HTTP_MANAGER", HTTP_MANAGER }, +// { "HTTP_MANAGER_RESET_ONLY", HTTP_MANAGER_RESET_ONLY }, +// { "HTTP_OFF", HTTP_OFF }, +// { "HTTP_OPTIONS", HTTP_OPTIONS }, +// { "HTTP_POST", HTTP_POST }, +// { "HTTP_USER", HTTP_USER }, +// }; + +/*********************************************************************************************\ + * Native functions mapped to Berry functions + * + * import webclient + * +\*********************************************************************************************/ +extern "C" { + // Berry: `` + // + int32_t wc_init(struct bvm *vm); + int32_t wc_init(struct bvm *vm) { + // int32_t argc = be_top(vm); // Get the number of arguments + WiFiClient * wcl = new WiFiClient(); + be_pushcomptr(vm, (void*) wcl); + be_setmember(vm, 1, ".w"); + HTTPClientLight * cl = new HTTPClientLight(); + cl->setUserAgent(USE_BERRY_WEBCLIENT_USERAGENT); + cl->setConnectTimeout(USE_BERRY_WEBCLIENT_TIMEOUT); // set default timeout + be_pushcomptr(vm, (void*) cl); + be_setmember(vm, 1, ".p"); + be_return_nil(vm); + } + + HTTPClientLight * wc_getclient(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + void *p = be_tocomptr(vm, -1); + be_pop(vm, 1); + return (HTTPClientLight*) p; + } + + WiFiClient * wc_getwificlient(struct bvm *vm) { + be_getmember(vm, 1, ".w"); + void *p = be_tocomptr(vm, -1); + be_pop(vm, 1); + return (WiFiClient*) p; + } + + int32_t wc_deinit(struct bvm *vm); + int32_t wc_deinit(struct bvm *vm) { + // int32_t argc = be_top(vm); // Get the number of arguments + HTTPClientLight * cl = wc_getclient(vm); + if (cl != nullptr) { delete cl; } + be_pushnil(vm); + be_setmember(vm, 1, ".p"); + WiFiClient * wcl = wc_getwificlient(vm); + if (wcl != nullptr) { delete wcl; } + be_setmember(vm, 1, ".w"); + be_return_nil(vm); + } + + // wc.url_encode(string) -> string + int32_t wc_urlencode(struct bvm *vm); + int32_t wc_urlencode(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc >= 2 && be_isstring(vm, 2)) { + const char * s = be_tostring(vm, 2); + String url = wc_UrlEncode(String(s)); + be_pushstring(vm, url.c_str()); + be_return(vm); /* return self */ + } + be_raise(vm, kTypeError, nullptr); + } + + // wc.begin(url:string) -> self + int32_t wc_begin(struct bvm *vm); + int32_t wc_begin(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc == 1 || !be_tostring(vm, 2)) { be_raise(vm, "attribute_error", "missing URL as string"); } + const char * url = be_tostring(vm, 2); + HTTPClientLight * cl = wc_getclient(vm); + // open connection + if (!cl->begin(url)) { + be_raise(vm, "value_error", "unsupported protocol"); + } + be_pushvalue(vm, 1); + be_return(vm); /* return self */ + } + + // wc.close(void) -> nil + int32_t wc_close(struct bvm *vm); + int32_t wc_close(struct bvm *vm) { + HTTPClientLight * cl = wc_getclient(vm); + cl->end(); + be_return_nil(vm); + } + + // wc.wc_set_timeouts([http_timeout_ms:int, tcp_timeout_ms:int]) -> self + int32_t wc_set_timeouts(struct bvm *vm); + int32_t wc_set_timeouts(struct bvm *vm) { + int32_t argc = be_top(vm); + HTTPClientLight * cl = wc_getclient(vm); + if (argc >= 2) { + cl->setTimeout(be_toint(vm, 2)); + } + if (argc >= 3) { + cl->setConnectTimeout(be_toint(vm, 3)); + } + be_pushvalue(vm, 1); + be_return(vm); /* return self */ + } + + // wc.set_useragent(user_agent:string) -> self + int32_t wc_set_useragent(struct bvm *vm); + int32_t wc_set_useragent(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc >= 2 && be_isstring(vm, 2)) { + HTTPClientLight * cl = wc_getclient(vm); + const char * useragent = be_tostring(vm, 2); + cl->setUserAgent(String(useragent)); + be_pushvalue(vm, 1); + be_return(vm); /* return self */ + } + be_raise(vm, kTypeError, nullptr); + } + + // wc.wc_set_auth(auth:string | (user:string, password:string)) -> self + int32_t wc_set_auth(struct bvm *vm); + int32_t wc_set_auth(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc >= 2 && be_isstring(vm, 2) && (argc < 3 || be_isstring(vm, 3))) { + HTTPClientLight * cl = wc_getclient(vm); + const char * user = be_tostring(vm, 2); + if (argc == 2) { + cl->setAuthorization(user); + } else { + const char * password = be_tostring(vm, 3); + cl->setAuthorization(user, password); + } + be_pushvalue(vm, 1); + be_return(vm); /* return self */ + } + be_raise(vm, kTypeError, nullptr); + } + + // wc.addheader(name:string, value:string [, first:bool=false [, replace:bool=true]]) -> nil + int32_t wc_addheader(struct bvm *vm); + int32_t wc_addheader(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc >= 3 && (be_isstring(vm, 2) || be_isstring(vm, 2))) { + HTTPClientLight * cl = wc_getclient(vm); + + const char * name = be_tostring(vm, 2); + const char * value = be_tostring(vm, 3); + bool first = false; + bool replace = true; + if (argc >= 4) { + first = be_tobool(vm, 4); + } + if (argc >= 5) { + replace = be_tobool(vm, 5); + } + // do the call + cl->addHeader(String(name), String(value), first, replace); + be_return_nil(vm); + } + be_raise(vm, kTypeError, nullptr); + } + + // cw.connected(void) -> bool + int32_t wc_connected(struct bvm *vm); + int32_t wc_connected(struct bvm *vm) { + HTTPClientLight * cl = wc_getclient(vm); + be_pushbool(vm, cl->connected()); + be_return(vm); /* return code */ + } + + // cw.GET(void) -> httpCode:int + int32_t wc_GET(struct bvm *vm); + int32_t wc_GET(struct bvm *vm) { + HTTPClientLight * cl = wc_getclient(vm); + uint32_t http_connect_time = millis(); + int32_t httpCode = cl->GET(); + if (httpCode <= -1000) { + AddLog(LOG_LEVEL_INFO, D_LOG_HTTP "TLS connection error: %d", -httpCode - 1000); + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "TLS connected in %d ms, stack low mark %d"), + millis() - http_connect_time, uxTaskGetStackHighWaterMark(nullptr)); + } + be_pushint(vm, httpCode); + be_return(vm); /* return code */ + } + + // wc.POST(string | bytes) -> httpCode:int + int32_t wc_POST(struct bvm *vm); + int32_t wc_POST(struct bvm *vm) { + int32_t argc = be_top(vm); + if (argc >= 2 && (be_isstring(vm, 2) || be_isbytes(vm, 2))) { + HTTPClientLight * cl = wc_getclient(vm); + const char * buf = nullptr; + size_t buf_len = 0; + if (be_isstring(vm, 2)) { // string + buf = be_tostring(vm, 2); + buf_len = strlen(buf); + } else { // bytes + buf = (const char*) be_tobytes(vm, 2, &buf_len); + } + uint32_t http_connect_time = millis(); + int32_t httpCode = cl->POST((uint8_t*)buf, buf_len); + if (httpCode <= -1000) { + AddLog(LOG_LEVEL_INFO, D_LOG_HTTP "TLS connection error: %d", -httpCode - 1000); + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_HTTP "TLS connected in %d ms, stack low mark %d"), + millis() - http_connect_time, uxTaskGetStackHighWaterMark(nullptr)); + } + be_pushint(vm, httpCode); + be_return(vm); /* return code */ + } + be_raise(vm, kTypeError, nullptr); + } + + int32_t wc_getstring(struct bvm *vm); + int32_t wc_getstring(struct bvm *vm) { + HTTPClientLight * cl = wc_getclient(vm); + int32_t sz = cl->getSize(); + // abort if we exceed 32KB size, things will not go well otherwise + if (sz >= 32767) { + be_raise(vm, "value_error", "response size too big (>32KB)"); + } + String payload = cl->getString(); + be_pushstring(vm, payload.c_str()); + cl->end(); // free allocated memory ~16KB + be_return(vm); /* return code */ + } + + int32_t wc_getsize(struct bvm *vm); + int32_t wc_getsize(struct bvm *vm) { + HTTPClientLight * cl = wc_getclient(vm); + be_pushint(vm, cl->getSize()); + be_return(vm); /* return code */ + } + +} + +#endif // USE_WEBCLIENT +#endif // USE_BERRY From b1d4435e671b1ab657021a9ac6622634a362cbed Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Thu, 2 Sep 2021 21:32:12 +0000 Subject: [PATCH 139/317] Capitilization --- lib/lib_ssl/tls_mini/src/HttpClientLight.cpp | 2 +- tasmota/xdrv_52_3_berry_webclient.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp b/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp index a194e091b..02ea6c8c4 100644 --- a/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp +++ b/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp @@ -39,7 +39,7 @@ #include #include -#include "HTTPClientLight.h" +#include "HttpClientLight.h" #include "WiFiClientSecureLightBearSSL.h" // #ifdef HTTPCLIENT_1_1_COMPATIBLE diff --git a/tasmota/xdrv_52_3_berry_webclient.ino b/tasmota/xdrv_52_3_berry_webclient.ino index 531a73d95..513d2d56d 100644 --- a/tasmota/xdrv_52_3_berry_webclient.ino +++ b/tasmota/xdrv_52_3_berry_webclient.ino @@ -23,7 +23,7 @@ #ifdef USE_WEBCLIENT #include -#include +#include String wc_UrlEncode(const String& text) { const char hex[] = "0123456789ABCDEF"; From 8a1aca858eeb08656c05a4e97b06bd7e83738f96 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 3 Sep 2021 08:16:08 +0200 Subject: [PATCH 140/317] Disable TLS client by default --- tasmota/my_user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 17af39872..6f0378fc7 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -981,7 +981,7 @@ #define USE_BERRY // Enable Berry scripting language //#define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact #define USE_WEBCLIENT // Enable `webclient` to make HTTP/HTTPS requests. Can be disabled for security reasons. - #define USE_WEBCLIENT_HTTPS // Enable HTTPS outgoing requests based on BearSSL (much ligher then mbedTLS, 42KB vs 150KB) in insecure mode (no verification of server's certificate) + // #define USE_WEBCLIENT_HTTPS // Enable HTTPS outgoing requests based on BearSSL (much ligher then mbedTLS, 42KB vs 150KB) in insecure mode (no verification of server's certificate) // Note that only one cipher is enabled: ECDHE_RSA_WITH_AES_128_GCM_SHA256 which is very commonly used and highly secure #define USE_BERRY_WEBCLIENT_USERAGENT "TasmotaClient" // default user-agent used, can be changed with `wc.set_useragent()` #define USE_BERRY_WEBCLIENT_TIMEOUT 5000 // Default timeout in milliseconds From 9731b3ea539984d7199a3c63a6ceaa043433beea Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 3 Sep 2021 08:53:42 +0200 Subject: [PATCH 141/317] Moved HttpClient to its own lib --- lib/libesp32/Berry-HttpClientLight/library.json | 17 +++++++++++++++++ .../src/HttpClientLight.cpp | 3 +++ .../src/HttpClientLight.h | 0 tasmota/xdrv_52_3_berry_webclient.ino | 2 +- 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 lib/libesp32/Berry-HttpClientLight/library.json rename lib/{lib_ssl/tls_mini => libesp32/Berry-HttpClientLight}/src/HttpClientLight.cpp (99%) rename lib/{lib_ssl/tls_mini => libesp32/Berry-HttpClientLight}/src/HttpClientLight.h (100%) diff --git a/lib/libesp32/Berry-HttpClientLight/library.json b/lib/libesp32/Berry-HttpClientLight/library.json new file mode 100644 index 000000000..1e1479bbb --- /dev/null +++ b/lib/libesp32/Berry-HttpClientLight/library.json @@ -0,0 +1,17 @@ +{ + "name": "HttpClient light for Berry", + "version": "1.0", + "description": "Forked version of Arduino HttpClient to support BearSSL instead of mbedTLS", + "license": "MIT", + "homepage": "https://github.com/arendst/Tasmota", + "frameworks": "*", + "platforms": "*", + "authors": + { + "name": "Stephan Hadinger", + "maintainer": true + }, + "build": { + "flags": [ "-I$PROJECT_DIR/include" ] + } +} \ No newline at end of file diff --git a/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp b/lib/libesp32/Berry-HttpClientLight/src/HttpClientLight.cpp similarity index 99% rename from lib/lib_ssl/tls_mini/src/HttpClientLight.cpp rename to lib/libesp32/Berry-HttpClientLight/src/HttpClientLight.cpp index 02ea6c8c4..420cbfb71 100644 --- a/lib/lib_ssl/tls_mini/src/HttpClientLight.cpp +++ b/lib/libesp32/Berry-HttpClientLight/src/HttpClientLight.cpp @@ -40,7 +40,10 @@ #include #include "HttpClientLight.h" + +#ifdef USE_WEBCLIENT_HTTPS #include "WiFiClientSecureLightBearSSL.h" +#endif // USE_WEBCLIENT_HTTPS // #ifdef HTTPCLIENT_1_1_COMPATIBLE class TransportTraits diff --git a/lib/lib_ssl/tls_mini/src/HttpClientLight.h b/lib/libesp32/Berry-HttpClientLight/src/HttpClientLight.h similarity index 100% rename from lib/lib_ssl/tls_mini/src/HttpClientLight.h rename to lib/libesp32/Berry-HttpClientLight/src/HttpClientLight.h diff --git a/tasmota/xdrv_52_3_berry_webclient.ino b/tasmota/xdrv_52_3_berry_webclient.ino index 513d2d56d..5c98043a2 100644 --- a/tasmota/xdrv_52_3_berry_webclient.ino +++ b/tasmota/xdrv_52_3_berry_webclient.ino @@ -23,7 +23,7 @@ #ifdef USE_WEBCLIENT #include -#include +#include "HttpClientLight.h" String wc_UrlEncode(const String& text) { const char hex[] = "0123456789ABCDEF"; From 0f1ebe873425ed5d3be860da9d8cdbb9b3922678 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 3 Sep 2021 11:19:45 +0200 Subject: [PATCH 142/317] Workaround ESP32C3/S2 IDF temperature error message --- tasmota/support_esp.ino | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tasmota/support_esp.ino b/tasmota/support_esp.ino index 1547d04f8..5feba48e7 100644 --- a/tasmota/support_esp.ino +++ b/tasmota/support_esp.ino @@ -508,7 +508,16 @@ void *special_calloc(size_t num, size_t size) { } float CpuTemperature(void) { +#ifdef CONFIG_IDF_TARGET_ESP32 return (float)temperatureRead(); // In Celsius +#else + // Currently (20210801) repeated calls to temperatureRead() on ESP32C3 and ESP32S2 result in IDF error messages + static float t = NAN; + if (isnan(t)) { + t = (float)temperatureRead(); // In Celsius + } + return t; +#endif } /* @@ -700,8 +709,8 @@ typedef struct { * ESP32 v1 and v2 needs some special patches to use PSRAM. * Standard Tasmota 32 do not include those patches. * If using ESP32 v1, please add: `-mfix-esp32-psram-cache-issue -lc-psram-workaround -lm-psram-workaround` - * - * This function returns true if the chip supports PSRAM natively (v3) or if the + * + * This function returns true if the chip supports PSRAM natively (v3) or if the * patches are present. */ bool CanUsePSRAM(void) { From dd342d0e78d780947edfe1587287a0ad9cd66422 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Fri, 3 Sep 2021 12:57:51 +0200 Subject: [PATCH 143/317] Added new functionality if motor of shutter stops late I saw on my blind that if I move it in 5% steps it opens much more than it should. The reason is, that the motor runs to long. shuttermotordelay was only able to work with >0 values. Now also <0 is supported for standard shutters. --- tasmota/xdrv_27_shutter.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 7368ecef5..f5614d276 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -88,7 +88,7 @@ struct SHUTTER { int8_t direction; // 1 == UP , 0 == stop; -1 == down int8_t lastdirection; // last direction (1 == UP , -1 == down) uint8_t switch_mode; // how to switch relays: SHT_SWITCH, SHT_PULSE - int16_t motordelay; // initial motorstarttime in 0.05sec. Also uses for ramp at steppers and servos + int8_t motordelay; // initial motorstarttime in 0.05sec. Also uses for ramp at steppers and servos, negative if motor stops late int16_t pwm_velocity; // frequency of PWN for stepper motors or PWM duty cycle change for PWM servo uint16_t pwm_value; // dutyload of PWM 0..1023 on ESP8266 uint16_t close_velocity_max; // maximum of PWM change during closeing. Defines velocity on opening. Steppers and Servos only @@ -1186,11 +1186,11 @@ void CmndShutterMotorDelay(void) { if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= TasmotaGlobal.shutters_present)) { if (XdrvMailbox.data_len > 0) { - Settings->shutter_motordelay[XdrvMailbox.index -1] = (uint16_t)(STEPS_PER_SECOND * CharToFloat(XdrvMailbox.data)); + Settings->shutter_motordelay[XdrvMailbox.index -1] = (uint8_t)(STEPS_PER_SECOND * CharToFloat(XdrvMailbox.data)); ShutterInit(); } char time_chr[10]; - dtostrfd((float)(Settings->shutter_motordelay[XdrvMailbox.index -1]) / STEPS_PER_SECOND, 2, time_chr); + dtostrfd((float)(Shutter[XdrvMailbox.index -1].motordelay) / STEPS_PER_SECOND, 2, time_chr); ResponseCmndIdxChar(time_chr); } } From cbc13be1aa41f12cad4df6402c4b9ebf4df6d08c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=5FTeixeira=5F1998?= <47570249+AndreTeixeira1998@users.noreply.github.com> Date: Fri, 3 Sep 2021 15:21:24 +0100 Subject: [PATCH 144/317] Fixed 2 typos in Portuguese PT language file --- tasmota/language/pt_PT.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 831563664..1775cbd75 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -449,8 +449,8 @@ #define D_TIMER_TIME "Tempo" #define D_TIMER_DAYS "Dias" #define D_TIMER_REPEAT "Repetir" -#define D_TIMER_OUTPUT "Aaída" -#define D_TIMER_ACTION "Açao" +#define D_TIMER_OUTPUT "Saída" +#define D_TIMER_ACTION "Ação" // xdrv_10_knx.ino #define D_CONFIGURE_KNX "Configurar KNX" From 4b244e4717295c83a8800e9696afc4c188e9030b Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 3 Sep 2021 17:34:07 +0200 Subject: [PATCH 145/317] Tasmota github as source for Tasmota ESP32 v.2.0.0 --- platformio_tasmota_cenv_sample.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 5c847f622..7fd6a3d9f 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -49,7 +49,7 @@ build_flags = ${env:tasmota32_base.build_flags} extends = env:tasmota32_base board = esp32s2 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/424/framework-arduinoespressif32-master-cdcf92440.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.0/framework-arduinoespressif32-release_IDF4.4.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -75,7 +75,7 @@ lib_ignore = extends = env:tasmota32_base board = esp32c3 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/424/framework-arduinoespressif32-master-cdcf92440.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.0/framework-arduinoespressif32-release_IDF4.4.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -108,7 +108,7 @@ lib_ignore = [env:tasmota32idf4] extends = env:tasmota32_base platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/424/framework-arduinoespressif32-master-cdcf92440.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.0/framework-arduinoespressif32-release_IDF4.4.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable From 5b29c261cab5b03995a3759d47b7cb74b4321afd Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 3 Sep 2021 18:35:50 +0200 Subject: [PATCH 146/317] Berry fix for LVGL styles --- lib/libesp32/Berry/default/be_lv_lvgl_module.c | 1 + tasmota/lvgl_berry/be_lv_c_mapping.h | 6 +++--- tools/lv_berry/convert.py | 1 + tools/lv_berry/lv_module.h | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/libesp32/Berry/default/be_lv_lvgl_module.c b/lib/libesp32/Berry/default/be_lv_lvgl_module.c index 4785b3621..7995052de 100644 --- a/lib/libesp32/Berry/default/be_lv_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lv_lvgl_module.c @@ -461,6 +461,7 @@ const be_constint_t lv0_constants[] = { { "STYLE_PATTERN_RECOLOR", LV_STYLE_PATTERN_RECOLOR }, { "STYLE_PATTERN_RECOLOR_OPA", LV_STYLE_PATTERN_RECOLOR_OPA }, { "STYLE_PATTERN_REPEAT", LV_STYLE_PATTERN_REPEAT }, + { "STYLE_PROP_ALL", LV_STYLE_PROP_ALL }, { "STYLE_RADIUS", LV_STYLE_RADIUS }, { "STYLE_SCALE_BORDER_WIDTH", LV_STYLE_SCALE_BORDER_WIDTH }, { "STYLE_SCALE_END_BORDER_WIDTH", LV_STYLE_SCALE_END_BORDER_WIDTH }, diff --git a/tasmota/lvgl_berry/be_lv_c_mapping.h b/tasmota/lvgl_berry/be_lv_c_mapping.h index fe07625bf..455864aed 100644 --- a/tasmota/lvgl_berry/be_lv_c_mapping.h +++ b/tasmota/lvgl_berry/be_lv_c_mapping.h @@ -51,7 +51,7 @@ const lvbe_call_c_t lv_style_func[] = { { "list_get_local_style", (void*) &lv_style_list_get_local_style, "lv_style", "(lv_style_list)" }, { "list_get_style", (void*) &lv_style_list_get_style, "lv_style", "(lv_style_list)i" }, { "list_init", (void*) &lv_style_list_init, "", "(lv_style_list)" }, - { "remove_prop", (void*) &lv_style_remove_prop, "b", "(lv_style)(lv_style_property)" }, + { "remove_prop", (void*) &lv_style_remove_prop, "b", "(lv_style)i" }, { "reset", (void*) &lv_style_reset, "", "(lv_style)" }, { "set_bg_blend_mode", (void*) &lv_style_set_bg_blend_mode, "", "(lv_style)ii" }, { "set_bg_color", (void*) &lv_style_set_bg_color, "", "(lv_style)i(lv_color)" }, @@ -358,9 +358,9 @@ const lvbe_call_c_t lv_obj_func[] = { { "move_foreground", (void*) &lv_obj_move_foreground, "", "(lv_obj)" }, { "realign", (void*) &lv_obj_realign, "", "(lv_obj)" }, { "refresh_ext_draw_pad", (void*) &lv_obj_refresh_ext_draw_pad, "", "(lv_obj)" }, - { "refresh_style", (void*) &lv_obj_refresh_style, "", "(lv_obj)i(lv_style_property)" }, + { "refresh_style", (void*) &lv_obj_refresh_style, "", "(lv_obj)ii" }, { "remove_style", (void*) &lv_obj_remove_style, "", "(lv_obj)i(lv_style)" }, - { "remove_style_local_prop", (void*) &lv_obj_remove_style_local_prop, "b", "(lv_obj)i(lv_style_property)" }, + { "remove_style_local_prop", (void*) &lv_obj_remove_style_local_prop, "b", "(lv_obj)ii" }, { "report_style_mod", (void*) &lv_obj_report_style_mod, "", "(lv_style)" }, { "reset_style_list", (void*) &lv_obj_reset_style_list, "", "(lv_obj)i" }, { "set_adv_hittest", (void*) &lv_obj_set_adv_hittest, "", "(lv_obj)b" }, diff --git a/tools/lv_berry/convert.py b/tools/lv_berry/convert.py index 62e022ac4..7ab085135 100644 --- a/tools/lv_berry/convert.py +++ b/tools/lv_berry/convert.py @@ -82,6 +82,7 @@ return_types = { "lv_signal_t": "i", "lv_img_cf_t": "i", "lv_draw_mask_line_side_t": "i", + "lv_style_property_t": "i", # "lv_signal_cb_t": "c", # "lv_design_cb_t": "c", diff --git a/tools/lv_berry/lv_module.h b/tools/lv_berry/lv_module.h index 8874892ec..e5ae54589 100644 --- a/tools/lv_berry/lv_module.h +++ b/tools/lv_berry/lv_module.h @@ -19,6 +19,7 @@ MAGENTA=0xFF00FF PURPLE=0x800080 LV_RADIUS_CIRCLE=0x7FFF +LV_STYLE_PROP_ALL // LV_SCR_LOAD_ANIM_NONE LV_SCR_LOAD_ANIM_OVER_LEFT From aacf3ff2a92122b0fd3281f52b4abdbfe73b083c Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 4 Sep 2021 11:08:13 +0200 Subject: [PATCH 147/317] Lvgl color names (#13056) * LVGL Berry change in color names * Minor fix * Fix --- .../Berry/default/be_lv_lvgl_module.c | 36 +++++++++---------- tools/lv_berry/lv_module.h | 36 +++++++++---------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/lib/libesp32/Berry/default/be_lv_lvgl_module.c b/lib/libesp32/Berry/default/be_lv_lvgl_module.c index 7995052de..eb95f38e4 100644 --- a/lib/libesp32/Berry/default/be_lv_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lv_lvgl_module.c @@ -107,7 +107,6 @@ const be_constint_t lv0_constants[] = { { "ALIGN_OUT_TOP_RIGHT", LV_ALIGN_OUT_TOP_RIGHT }, { "ANIM_OFF", LV_ANIM_OFF }, { "ANIM_ON", LV_ANIM_ON }, - { "AQUA", 65535 }, { "ARC_PART_BG", LV_ARC_PART_BG }, { "ARC_PART_INDIC", LV_ARC_PART_INDIC }, { "ARC_PART_KNOB", LV_ARC_PART_KNOB }, @@ -117,11 +116,9 @@ const be_constint_t lv0_constants[] = { { "BAR_TYPE_CUSTOM", LV_BAR_TYPE_CUSTOM }, { "BAR_TYPE_NORMAL", LV_BAR_TYPE_NORMAL }, { "BAR_TYPE_SYMMETRICAL", LV_BAR_TYPE_SYMMETRICAL }, - { "BLACK", 0 }, { "BLEND_MODE_ADDITIVE", LV_BLEND_MODE_ADDITIVE }, { "BLEND_MODE_NORMAL", LV_BLEND_MODE_NORMAL }, { "BLEND_MODE_SUBTRACTIVE", LV_BLEND_MODE_SUBTRACTIVE }, - { "BLUE", 255 }, { "BORDER_SIDE_BOTTOM", LV_BORDER_SIDE_BOTTOM }, { "BORDER_SIDE_FULL", LV_BORDER_SIDE_FULL }, { "BORDER_SIDE_INTERNAL", LV_BORDER_SIDE_INTERNAL }, @@ -166,6 +163,23 @@ const be_constint_t lv0_constants[] = { { "CHART_UPDATE_MODE_SHIFT", LV_CHART_UPDATE_MODE_SHIFT }, { "CHECKBOX_PART_BG", LV_CHECKBOX_PART_BG }, { "CHECKBOX_PART_BULLET", LV_CHECKBOX_PART_BULLET }, + { "COLOR_AQUA", 65535 }, + { "COLOR_BLACK", 0 }, + { "COLOR_BLUE", 255 }, + { "COLOR_CYAN", 65535 }, + { "COLOR_GRAY", 8421504 }, + { "COLOR_GREEN", 32768 }, + { "COLOR_LIME", 65280 }, + { "COLOR_MAGENTA", 16711935 }, + { "COLOR_MAROON", 8388608 }, + { "COLOR_NAVY", 128 }, + { "COLOR_OLIVE", 8421376 }, + { "COLOR_PURPLE", 8388736 }, + { "COLOR_RED", 16711680 }, + { "COLOR_SILVER", 12632256 }, + { "COLOR_TEAL", 32896 }, + { "COLOR_WHITE", 16777215 }, + { "COLOR_YELLOW", 16776960 }, { "CPICKER_COLOR_MODE_HUE", LV_CPICKER_COLOR_MODE_HUE }, { "CPICKER_COLOR_MODE_SATURATION", LV_CPICKER_COLOR_MODE_SATURATION }, { "CPICKER_COLOR_MODE_VALUE", LV_CPICKER_COLOR_MODE_VALUE }, @@ -173,7 +187,6 @@ const be_constint_t lv0_constants[] = { { "CPICKER_PART_MAIN", LV_CPICKER_PART_MAIN }, { "CPICKER_TYPE_DISC", LV_CPICKER_TYPE_DISC }, { "CPICKER_TYPE_RECT", LV_CPICKER_TYPE_RECT }, - { "CYAN", 65535 }, { "DESIGN_COVER_CHK", LV_DESIGN_COVER_CHK }, { "DESIGN_DRAW_MAIN", LV_DESIGN_DRAW_MAIN }, { "DESIGN_DRAW_POST", LV_DESIGN_DRAW_POST }, @@ -265,8 +278,6 @@ const be_constint_t lv0_constants[] = { { "GRAD_DIR_HOR", LV_GRAD_DIR_HOR }, { "GRAD_DIR_NONE", LV_GRAD_DIR_NONE }, { "GRAD_DIR_VER", LV_GRAD_DIR_VER }, - { "GRAY", 8421504 }, - { "GREEN", 32768 }, { "IMG_CF_ALPHA_1BIT", LV_IMG_CF_ALPHA_1BIT }, { "IMG_CF_ALPHA_2BIT", LV_IMG_CF_ALPHA_2BIT }, { "IMG_CF_ALPHA_4BIT", LV_IMG_CF_ALPHA_4BIT }, @@ -325,21 +336,16 @@ const be_constint_t lv0_constants[] = { { "LAYOUT_ROW_MID", LV_LAYOUT_ROW_MID }, { "LAYOUT_ROW_TOP", LV_LAYOUT_ROW_TOP }, { "LED_PART_MAIN", LV_LED_PART_MAIN }, - { "LIME", 65280 }, { "LINEMETER_PART_MAIN", LV_LINEMETER_PART_MAIN }, { "LIST_PART_BG", LV_LIST_PART_BG }, { "LIST_PART_EDGE_FLASH", LV_LIST_PART_EDGE_FLASH }, { "LIST_PART_SCROLLBAR", LV_LIST_PART_SCROLLBAR }, - { "MAGENTA", 16711935 }, - { "MAROON", 8388608 }, { "MSGBOX_PART_BG", LV_MSGBOX_PART_BG }, { "MSGBOX_PART_BTN", LV_MSGBOX_PART_BTN }, { "MSGBOX_PART_BTN_BG", LV_MSGBOX_PART_BTN_BG }, - { "NAVY", 128 }, { "OBJMASK_PART_MAIN", LV_OBJMASK_PART_MAIN }, { "OBJ_PART_ALL", LV_OBJ_PART_ALL }, { "OBJ_PART_MAIN", LV_OBJ_PART_MAIN }, - { "OLIVE", 8421376 }, { "OPA_0", LV_OPA_0 }, { "OPA_10", LV_OPA_10 }, { "OPA_100", LV_OPA_100 }, @@ -369,9 +375,7 @@ const be_constint_t lv0_constants[] = { { "PROTECT_PARENT", LV_PROTECT_PARENT }, { "PROTECT_POS", LV_PROTECT_POS }, { "PROTECT_PRESS_LOST", LV_PROTECT_PRESS_LOST }, - { "PURPLE", 8388736 }, - { "RADIUS_CIRCLE", 32767 }, - { "RED", 16711680 }, + { "RADIUS_CIRCLE", LV_RADIUS_CIRCLE }, { "ROLLER_MODE_INFINITE", LV_ROLLER_MODE_INFINITE }, { "ROLLER_MODE_NORMAL", LV_ROLLER_MODE_NORMAL }, { "ROLLER_PART_BG", LV_ROLLER_PART_BG }, @@ -392,7 +396,6 @@ const be_constint_t lv0_constants[] = { { "SCR_LOAD_ANIM_OVER_LEFT", LV_SCR_LOAD_ANIM_OVER_LEFT }, { "SCR_LOAD_ANIM_OVER_RIGHT", LV_SCR_LOAD_ANIM_OVER_RIGHT }, { "SCR_LOAD_ANIM_OVER_TOP", LV_SCR_LOAD_ANIM_OVER_TOP }, - { "SILVER", 12632256 }, { "SLIDER_PART_BG", LV_SLIDER_PART_BG }, { "SLIDER_PART_INDIC", LV_SLIDER_PART_INDIC }, { "SLIDER_PART_KNOB", LV_SLIDER_PART_KNOB }, @@ -527,7 +530,6 @@ const be_constint_t lv0_constants[] = { { "TABVIEW_TAB_POS_NONE", LV_TABVIEW_TAB_POS_NONE }, { "TABVIEW_TAB_POS_RIGHT", LV_TABVIEW_TAB_POS_RIGHT }, { "TABVIEW_TAB_POS_TOP", LV_TABVIEW_TAB_POS_TOP }, - { "TEAL", 32896 }, { "TEXTAREA_CURSOR_LAST", LV_TEXTAREA_CURSOR_LAST }, { "TEXTAREA_PART_BG", LV_TEXTAREA_PART_BG }, { "TEXTAREA_PART_CURSOR", LV_TEXTAREA_PART_CURSOR }, @@ -549,12 +551,10 @@ const be_constint_t lv0_constants[] = { { "TXT_FLAG_NONE", LV_TXT_FLAG_NONE }, { "TXT_FLAG_RECOLOR", LV_TXT_FLAG_RECOLOR }, { "TXT_FLAG_RIGHT", LV_TXT_FLAG_RIGHT }, - { "WHITE", 16777215 }, { "WIN_PART_BG", LV_WIN_PART_BG }, { "WIN_PART_CONTENT_SCROLLABLE", LV_WIN_PART_CONTENT_SCROLLABLE }, { "WIN_PART_HEADER", LV_WIN_PART_HEADER }, { "WIN_PART_SCROLLBAR", LV_WIN_PART_SCROLLBAR }, - { "YELLOW", 16776960 }, }; diff --git a/tools/lv_berry/lv_module.h b/tools/lv_berry/lv_module.h index e5ae54589..392dfb2ec 100644 --- a/tools/lv_berry/lv_module.h +++ b/tools/lv_berry/lv_module.h @@ -1,24 +1,24 @@ // LV Colors - we store in 24 bits format and will convert at runtime // This is specific treatment because we keep colors in 24 bits format -WHITE=0xFFFFFF -SILVER=0xC0C0C0 -GRAY=0x808080 -BLACK=0x000000 -RED=0xFF0000 -MAROON=0x800000 -YELLOW=0xFFFF00 -OLIVE=0x808000 -LIME=0x00FF00 -GREEN=0x008000 -CYAN=0x00FFFF -AQUA=0x00FFFF -TEAL=0x008080 -BLUE=0x0000FF -NAVY=0x000080 -MAGENTA=0xFF00FF -PURPLE=0x800080 +COLOR_WHITE=0xFFFFFF +COLOR_SILVER=0xC0C0C0 +COLOR_GRAY=0x808080 +COLOR_BLACK=0x000000 +COLOR_RED=0xFF0000 +COLOR_MAROON=0x800000 +COLOR_YELLOW=0xFFFF00 +COLOR_OLIVE=0x808000 +COLOR_LIME=0x00FF00 +COLOR_GREEN=0x008000 +COLOR_CYAN=0x00FFFF +COLOR_AQUA=0x00FFFF +COLOR_TEAL=0x008080 +COLOR_BLUE=0x0000FF +COLOR_NAVY=0x000080 +COLOR_MAGENTA=0xFF00FF +COLOR_PURPLE=0x800080 -LV_RADIUS_CIRCLE=0x7FFF +LV_RADIUS_CIRCLE LV_STYLE_PROP_ALL // LV_SCR_LOAD_ANIM_NONE From f730c664c26515d62bf923e42f2a0190d2576dbc Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 4 Sep 2021 11:12:18 +0200 Subject: [PATCH 148/317] LVGL cleaning --- .../Berry/default/be_lv_extern_libs.h | 1023 ----------------- .../{be_lv_lvgl_module.c => be_lvgl_module.c} | 0 tools/lv_berry/convert.py | 3 +- 3 files changed, 1 insertion(+), 1025 deletions(-) delete mode 100644 lib/libesp32/Berry/default/be_lv_extern_libs.h rename lib/libesp32/Berry/default/{be_lv_lvgl_module.c => be_lvgl_module.c} (100%) diff --git a/lib/libesp32/Berry/default/be_lv_extern_libs.h b/lib/libesp32/Berry/default/be_lv_extern_libs.h deleted file mode 100644 index f5d0f55e6..000000000 --- a/lib/libesp32/Berry/default/be_lv_extern_libs.h +++ /dev/null @@ -1,1023 +0,0 @@ -/******************************************************************** - * Generated code, don't edit - *******************************************************************/ -/* `lv_style` external functions definitions */ -extern int lvbe_style_init(bvm *vm); -extern int lvbe_style_copy(bvm *vm); -extern int lvbe_style_list_init(bvm *vm); -extern int lvbe_style_list_copy(bvm *vm); -extern int lvbe_style_list_get_style(bvm *vm); -extern int lvbe_style_reset(bvm *vm); -extern int lvbe_style_remove_prop(bvm *vm); -extern int lvbe_style_list_get_local_style(bvm *vm); -extern int lvbe_style_set_radius(bvm *vm); -extern int lvbe_style_set_clip_corner(bvm *vm); -extern int lvbe_style_set_size(bvm *vm); -extern int lvbe_style_set_transform_width(bvm *vm); -extern int lvbe_style_set_transform_height(bvm *vm); -extern int lvbe_style_set_transform_angle(bvm *vm); -extern int lvbe_style_set_transform_zoom(bvm *vm); -extern int lvbe_style_set_opa_scale(bvm *vm); -extern int lvbe_style_set_pad_top(bvm *vm); -extern int lvbe_style_set_pad_bottom(bvm *vm); -extern int lvbe_style_set_pad_left(bvm *vm); -extern int lvbe_style_set_pad_right(bvm *vm); -extern int lvbe_style_set_pad_inner(bvm *vm); -extern int lvbe_style_set_margin_top(bvm *vm); -extern int lvbe_style_set_margin_bottom(bvm *vm); -extern int lvbe_style_set_margin_left(bvm *vm); -extern int lvbe_style_set_margin_right(bvm *vm); -extern int lvbe_style_set_bg_blend_mode(bvm *vm); -extern int lvbe_style_set_bg_main_stop(bvm *vm); -extern int lvbe_style_set_bg_grad_stop(bvm *vm); -extern int lvbe_style_set_bg_grad_dir(bvm *vm); -extern int lvbe_style_set_bg_color(bvm *vm); -extern int lvbe_style_set_bg_grad_color(bvm *vm); -extern int lvbe_style_set_bg_opa(bvm *vm); -extern int lvbe_style_set_border_width(bvm *vm); -extern int lvbe_style_set_border_side(bvm *vm); -extern int lvbe_style_set_border_blend_mode(bvm *vm); -extern int lvbe_style_set_border_post(bvm *vm); -extern int lvbe_style_set_border_color(bvm *vm); -extern int lvbe_style_set_border_opa(bvm *vm); -extern int lvbe_style_set_outline_width(bvm *vm); -extern int lvbe_style_set_outline_pad(bvm *vm); -extern int lvbe_style_set_outline_blend_mode(bvm *vm); -extern int lvbe_style_set_outline_color(bvm *vm); -extern int lvbe_style_set_outline_opa(bvm *vm); -extern int lvbe_style_set_shadow_width(bvm *vm); -extern int lvbe_style_set_shadow_ofs_x(bvm *vm); -extern int lvbe_style_set_shadow_ofs_y(bvm *vm); -extern int lvbe_style_set_shadow_spread(bvm *vm); -extern int lvbe_style_set_shadow_blend_mode(bvm *vm); -extern int lvbe_style_set_shadow_color(bvm *vm); -extern int lvbe_style_set_shadow_opa(bvm *vm); -extern int lvbe_style_set_pattern_repeat(bvm *vm); -extern int lvbe_style_set_pattern_blend_mode(bvm *vm); -extern int lvbe_style_set_pattern_recolor(bvm *vm); -extern int lvbe_style_set_pattern_opa(bvm *vm); -extern int lvbe_style_set_pattern_recolor_opa(bvm *vm); -extern int lvbe_style_set_pattern_image(bvm *vm); -extern int lvbe_style_set_value_letter_space(bvm *vm); -extern int lvbe_style_set_value_line_space(bvm *vm); -extern int lvbe_style_set_value_blend_mode(bvm *vm); -extern int lvbe_style_set_value_ofs_x(bvm *vm); -extern int lvbe_style_set_value_ofs_y(bvm *vm); -extern int lvbe_style_set_value_align(bvm *vm); -extern int lvbe_style_set_value_color(bvm *vm); -extern int lvbe_style_set_value_opa(bvm *vm); -extern int lvbe_style_set_value_font(bvm *vm); -extern int lvbe_style_set_value_str(bvm *vm); -extern int lvbe_style_set_text_letter_space(bvm *vm); -extern int lvbe_style_set_text_line_space(bvm *vm); -extern int lvbe_style_set_text_decor(bvm *vm); -extern int lvbe_style_set_text_blend_mode(bvm *vm); -extern int lvbe_style_set_text_color(bvm *vm); -extern int lvbe_style_set_text_sel_color(bvm *vm); -extern int lvbe_style_set_text_sel_bg_color(bvm *vm); -extern int lvbe_style_set_text_opa(bvm *vm); -extern int lvbe_style_set_text_font(bvm *vm); -extern int lvbe_style_set_line_width(bvm *vm); -extern int lvbe_style_set_line_blend_mode(bvm *vm); -extern int lvbe_style_set_line_dash_width(bvm *vm); -extern int lvbe_style_set_line_dash_gap(bvm *vm); -extern int lvbe_style_set_line_rounded(bvm *vm); -extern int lvbe_style_set_line_color(bvm *vm); -extern int lvbe_style_set_line_opa(bvm *vm); -extern int lvbe_style_set_image_blend_mode(bvm *vm); -extern int lvbe_style_set_image_recolor(bvm *vm); -extern int lvbe_style_set_image_opa(bvm *vm); -extern int lvbe_style_set_image_recolor_opa(bvm *vm); -extern int lvbe_style_set_transition_time(bvm *vm); -extern int lvbe_style_set_transition_delay(bvm *vm); -extern int lvbe_style_set_transition_prop_1(bvm *vm); -extern int lvbe_style_set_transition_prop_2(bvm *vm); -extern int lvbe_style_set_transition_prop_3(bvm *vm); -extern int lvbe_style_set_transition_prop_4(bvm *vm); -extern int lvbe_style_set_transition_prop_5(bvm *vm); -extern int lvbe_style_set_transition_prop_6(bvm *vm); -extern int lvbe_style_set_transition_path(bvm *vm); -extern int lvbe_style_set_scale_width(bvm *vm); -extern int lvbe_style_set_scale_border_width(bvm *vm); -extern int lvbe_style_set_scale_end_border_width(bvm *vm); -extern int lvbe_style_set_scale_end_line_width(bvm *vm); -extern int lvbe_style_set_scale_grad_color(bvm *vm); -extern int lvbe_style_set_scale_end_color(bvm *vm); - -/* `lv_group` external functions definitions */ -extern int lvbe_group_create(bvm *vm); -extern int lvbe_group_del(bvm *vm); -extern int lvbe_group_add_obj(bvm *vm); -extern int lvbe_group_remove_obj(bvm *vm); -extern int lvbe_group_remove_all_objs(bvm *vm); -extern int lvbe_group_focus_obj(bvm *vm); -extern int lvbe_group_focus_next(bvm *vm); -extern int lvbe_group_focus_prev(bvm *vm); -extern int lvbe_group_focus_freeze(bvm *vm); -extern int lvbe_group_send_data(bvm *vm); -extern int lvbe_group_set_focus_cb(bvm *vm); -extern int lvbe_group_set_refocus_policy(bvm *vm); -extern int lvbe_group_set_editing(bvm *vm); -extern int lvbe_group_set_click_focus(bvm *vm); -extern int lvbe_group_set_wrap(bvm *vm); -extern int lvbe_group_get_focused(bvm *vm); -extern int lvbe_group_get_focus_cb(bvm *vm); -extern int lvbe_group_get_editing(bvm *vm); -extern int lvbe_group_get_click_focus(bvm *vm); -extern int lvbe_group_get_wrap(bvm *vm); - -/* `lv_obj` external functions definitions */ -extern int lvbe_obj_create(bvm *vm); -extern int lvbe_obj_del(bvm *vm); -extern int lvbe_obj_del_anim_ready_cb(bvm *vm); -extern int lvbe_obj_del_async(bvm *vm); -extern int lvbe_obj_clean(bvm *vm); -extern int lvbe_obj_invalidate_area(bvm *vm); -extern int lvbe_obj_invalidate(bvm *vm); -extern int lvbe_obj_area_is_visible(bvm *vm); -extern int lvbe_obj_is_visible(bvm *vm); -extern int lvbe_obj_set_parent(bvm *vm); -extern int lvbe_obj_move_foreground(bvm *vm); -extern int lvbe_obj_move_background(bvm *vm); -extern int lvbe_obj_set_pos(bvm *vm); -extern int lvbe_obj_set_x(bvm *vm); -extern int lvbe_obj_set_y(bvm *vm); -extern int lvbe_obj_set_size(bvm *vm); -extern int lvbe_obj_set_width(bvm *vm); -extern int lvbe_obj_set_height(bvm *vm); -extern int lvbe_obj_set_width_fit(bvm *vm); -extern int lvbe_obj_set_height_fit(bvm *vm); -extern int lvbe_obj_set_width_margin(bvm *vm); -extern int lvbe_obj_set_height_margin(bvm *vm); -extern int lvbe_obj_align(bvm *vm); -extern int lvbe_obj_align_x(bvm *vm); -extern int lvbe_obj_align_y(bvm *vm); -extern int lvbe_obj_align_mid(bvm *vm); -extern int lvbe_obj_align_mid_x(bvm *vm); -extern int lvbe_obj_align_mid_y(bvm *vm); -extern int lvbe_obj_realign(bvm *vm); -extern int lvbe_obj_set_auto_realign(bvm *vm); -extern int lvbe_obj_set_ext_click_area(bvm *vm); -extern int lvbe_obj_add_style(bvm *vm); -extern int lvbe_obj_remove_style(bvm *vm); -extern int lvbe_obj_clean_style_list(bvm *vm); -extern int lvbe_obj_reset_style_list(bvm *vm); -extern int lvbe_obj_refresh_style(bvm *vm); -extern int lvbe_obj_report_style_mod(bvm *vm); -extern int lvbe_obj_remove_style_local_prop(bvm *vm); -extern int lvbe_obj_set_hidden(bvm *vm); -extern int lvbe_obj_set_adv_hittest(bvm *vm); -extern int lvbe_obj_set_click(bvm *vm); -extern int lvbe_obj_set_top(bvm *vm); -extern int lvbe_obj_set_drag(bvm *vm); -extern int lvbe_obj_set_drag_dir(bvm *vm); -extern int lvbe_obj_set_drag_throw(bvm *vm); -extern int lvbe_obj_set_drag_parent(bvm *vm); -extern int lvbe_obj_set_focus_parent(bvm *vm); -extern int lvbe_obj_set_gesture_parent(bvm *vm); -extern int lvbe_obj_set_parent_event(bvm *vm); -extern int lvbe_obj_set_base_dir(bvm *vm); -extern int lvbe_obj_add_protect(bvm *vm); -extern int lvbe_obj_clear_protect(bvm *vm); -extern int lvbe_obj_set_state(bvm *vm); -extern int lvbe_obj_add_state(bvm *vm); -extern int lvbe_obj_clear_state(bvm *vm); -extern int lvbe_obj_finish_transitions(bvm *vm); -extern int lvbe_obj_set_event_cb(bvm *vm); -extern int lvbe_obj_set_signal_cb(bvm *vm); -extern int lvbe_obj_set_design_cb(bvm *vm); -extern int lvbe_obj_allocate_ext_attr(bvm *vm); -extern int lvbe_obj_refresh_ext_draw_pad(bvm *vm); -extern int lvbe_obj_get_screen(bvm *vm); -extern int lvbe_obj_get_parent(bvm *vm); -extern int lvbe_obj_get_child(bvm *vm); -extern int lvbe_obj_get_child_back(bvm *vm); -extern int lvbe_obj_count_children(bvm *vm); -extern int lvbe_obj_count_children_recursive(bvm *vm); -extern int lvbe_obj_get_coords(bvm *vm); -extern int lvbe_obj_get_inner_coords(bvm *vm); -extern int lvbe_obj_get_x(bvm *vm); -extern int lvbe_obj_get_y(bvm *vm); -extern int lvbe_obj_get_width(bvm *vm); -extern int lvbe_obj_get_height(bvm *vm); -extern int lvbe_obj_get_width_fit(bvm *vm); -extern int lvbe_obj_get_height_fit(bvm *vm); -extern int lvbe_obj_get_height_margin(bvm *vm); -extern int lvbe_obj_get_width_margin(bvm *vm); -extern int lvbe_obj_get_width_grid(bvm *vm); -extern int lvbe_obj_get_height_grid(bvm *vm); -extern int lvbe_obj_get_auto_realign(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_left(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_right(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_top(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_bottom(bvm *vm); -extern int lvbe_obj_get_ext_draw_pad(bvm *vm); -extern int lvbe_obj_get_local_style(bvm *vm); -extern int lvbe_obj_get_hidden(bvm *vm); -extern int lvbe_obj_get_adv_hittest(bvm *vm); -extern int lvbe_obj_get_click(bvm *vm); -extern int lvbe_obj_get_top(bvm *vm); -extern int lvbe_obj_get_drag(bvm *vm); -extern int lvbe_obj_get_drag_dir(bvm *vm); -extern int lvbe_obj_get_drag_throw(bvm *vm); -extern int lvbe_obj_get_drag_parent(bvm *vm); -extern int lvbe_obj_get_focus_parent(bvm *vm); -extern int lvbe_obj_get_parent_event(bvm *vm); -extern int lvbe_obj_get_gesture_parent(bvm *vm); -extern int lvbe_obj_get_base_dir(bvm *vm); -extern int lvbe_obj_get_protect(bvm *vm); -extern int lvbe_obj_is_protected(bvm *vm); -extern int lvbe_obj_get_state(bvm *vm); -extern int lvbe_obj_is_point_on_coords(bvm *vm); -extern int lvbe_obj_hittest(bvm *vm); -extern int lvbe_obj_get_ext_attr(bvm *vm); -extern int lvbe_obj_get_type(bvm *vm); -extern int lvbe_obj_get_user_data(bvm *vm); -extern int lvbe_obj_set_user_data(bvm *vm); -extern int lvbe_obj_get_group(bvm *vm); -extern int lvbe_obj_is_focused(bvm *vm); -extern int lvbe_obj_get_focused_obj(bvm *vm); -extern int lvbe_obj_handle_get_type_signal(bvm *vm); -extern int lvbe_obj_init_draw_rect_dsc(bvm *vm); -extern int lvbe_obj_init_draw_label_dsc(bvm *vm); -extern int lvbe_obj_init_draw_img_dsc(bvm *vm); -extern int lvbe_obj_init_draw_line_dsc(bvm *vm); -extern int lvbe_obj_get_draw_rect_ext_pad_size(bvm *vm); -extern int lvbe_obj_fade_in(bvm *vm); -extern int lvbe_obj_fade_out(bvm *vm); -extern int lvbe_obj_get_style_radius(bvm *vm); -extern int lvbe_obj_set_style_local_radius(bvm *vm); -extern int lvbe_obj_get_style_clip_corner(bvm *vm); -extern int lvbe_obj_set_style_local_clip_corner(bvm *vm); -extern int lvbe_obj_get_style_size(bvm *vm); -extern int lvbe_obj_set_style_local_size(bvm *vm); -extern int lvbe_obj_get_style_transform_width(bvm *vm); -extern int lvbe_obj_set_style_local_transform_width(bvm *vm); -extern int lvbe_obj_get_style_transform_height(bvm *vm); -extern int lvbe_obj_set_style_local_transform_height(bvm *vm); -extern int lvbe_obj_get_style_transform_angle(bvm *vm); -extern int lvbe_obj_set_style_local_transform_angle(bvm *vm); -extern int lvbe_obj_get_style_transform_zoom(bvm *vm); -extern int lvbe_obj_set_style_local_transform_zoom(bvm *vm); -extern int lvbe_obj_get_style_opa_scale(bvm *vm); -extern int lvbe_obj_set_style_local_opa_scale(bvm *vm); -extern int lvbe_obj_get_style_pad_top(bvm *vm); -extern int lvbe_obj_set_style_local_pad_top(bvm *vm); -extern int lvbe_obj_get_style_pad_bottom(bvm *vm); -extern int lvbe_obj_set_style_local_pad_bottom(bvm *vm); -extern int lvbe_obj_get_style_pad_left(bvm *vm); -extern int lvbe_obj_set_style_local_pad_left(bvm *vm); -extern int lvbe_obj_get_style_pad_right(bvm *vm); -extern int lvbe_obj_set_style_local_pad_right(bvm *vm); -extern int lvbe_obj_get_style_pad_inner(bvm *vm); -extern int lvbe_obj_set_style_local_pad_inner(bvm *vm); -extern int lvbe_obj_get_style_margin_top(bvm *vm); -extern int lvbe_obj_set_style_local_margin_top(bvm *vm); -extern int lvbe_obj_get_style_margin_bottom(bvm *vm); -extern int lvbe_obj_set_style_local_margin_bottom(bvm *vm); -extern int lvbe_obj_get_style_margin_left(bvm *vm); -extern int lvbe_obj_set_style_local_margin_left(bvm *vm); -extern int lvbe_obj_get_style_margin_right(bvm *vm); -extern int lvbe_obj_set_style_local_margin_right(bvm *vm); -extern int lvbe_obj_set_style_local_bg_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_bg_main_stop(bvm *vm); -extern int lvbe_obj_set_style_local_bg_main_stop(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_stop(bvm *vm); -extern int lvbe_obj_set_style_local_bg_grad_stop(bvm *vm); -extern int lvbe_obj_set_style_local_bg_grad_dir(bvm *vm); -extern int lvbe_obj_get_style_bg_color(bvm *vm); -extern int lvbe_obj_set_style_local_bg_color(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_color(bvm *vm); -extern int lvbe_obj_set_style_local_bg_grad_color(bvm *vm); -extern int lvbe_obj_get_style_bg_opa(bvm *vm); -extern int lvbe_obj_set_style_local_bg_opa(bvm *vm); -extern int lvbe_obj_get_style_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_border_side(bvm *vm); -extern int lvbe_obj_set_style_local_border_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_border_post(bvm *vm); -extern int lvbe_obj_set_style_local_border_post(bvm *vm); -extern int lvbe_obj_get_style_border_color(bvm *vm); -extern int lvbe_obj_set_style_local_border_color(bvm *vm); -extern int lvbe_obj_get_style_border_opa(bvm *vm); -extern int lvbe_obj_set_style_local_border_opa(bvm *vm); -extern int lvbe_obj_get_style_outline_width(bvm *vm); -extern int lvbe_obj_set_style_local_outline_width(bvm *vm); -extern int lvbe_obj_get_style_outline_pad(bvm *vm); -extern int lvbe_obj_set_style_local_outline_pad(bvm *vm); -extern int lvbe_obj_set_style_local_outline_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_outline_color(bvm *vm); -extern int lvbe_obj_set_style_local_outline_color(bvm *vm); -extern int lvbe_obj_get_style_outline_opa(bvm *vm); -extern int lvbe_obj_set_style_local_outline_opa(bvm *vm); -extern int lvbe_obj_get_style_shadow_width(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_width(bvm *vm); -extern int lvbe_obj_get_style_shadow_ofs_x(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_ofs_x(bvm *vm); -extern int lvbe_obj_get_style_shadow_ofs_y(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_ofs_y(bvm *vm); -extern int lvbe_obj_get_style_shadow_spread(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_spread(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_shadow_color(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_color(bvm *vm); -extern int lvbe_obj_get_style_shadow_opa(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_opa(bvm *vm); -extern int lvbe_obj_get_style_pattern_repeat(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_repeat(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_pattern_recolor(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_recolor(bvm *vm); -extern int lvbe_obj_get_style_pattern_opa(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_opa(bvm *vm); -extern int lvbe_obj_get_style_pattern_recolor_opa(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_recolor_opa(bvm *vm); -extern int lvbe_obj_get_style_pattern_image(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_image(bvm *vm); -extern int lvbe_obj_get_style_value_letter_space(bvm *vm); -extern int lvbe_obj_set_style_local_value_letter_space(bvm *vm); -extern int lvbe_obj_get_style_value_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_value_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_value_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_value_ofs_x(bvm *vm); -extern int lvbe_obj_set_style_local_value_ofs_x(bvm *vm); -extern int lvbe_obj_get_style_value_ofs_y(bvm *vm); -extern int lvbe_obj_set_style_local_value_ofs_y(bvm *vm); -extern int lvbe_obj_set_style_local_value_align(bvm *vm); -extern int lvbe_obj_get_style_value_color(bvm *vm); -extern int lvbe_obj_set_style_local_value_color(bvm *vm); -extern int lvbe_obj_get_style_value_opa(bvm *vm); -extern int lvbe_obj_set_style_local_value_opa(bvm *vm); -extern int lvbe_obj_set_style_local_value_font(bvm *vm); -extern int lvbe_obj_get_style_value_str(bvm *vm); -extern int lvbe_obj_set_style_local_value_str(bvm *vm); -extern int lvbe_obj_get_style_text_letter_space(bvm *vm); -extern int lvbe_obj_set_style_local_text_letter_space(bvm *vm); -extern int lvbe_obj_get_style_text_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_text_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_text_decor(bvm *vm); -extern int lvbe_obj_set_style_local_text_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_text_color(bvm *vm); -extern int lvbe_obj_set_style_local_text_color(bvm *vm); -extern int lvbe_obj_get_style_text_sel_color(bvm *vm); -extern int lvbe_obj_set_style_local_text_sel_color(bvm *vm); -extern int lvbe_obj_get_style_text_sel_bg_color(bvm *vm); -extern int lvbe_obj_set_style_local_text_sel_bg_color(bvm *vm); -extern int lvbe_obj_get_style_text_opa(bvm *vm); -extern int lvbe_obj_set_style_local_text_opa(bvm *vm); -extern int lvbe_obj_set_style_local_text_font(bvm *vm); -extern int lvbe_obj_get_style_line_width(bvm *vm); -extern int lvbe_obj_set_style_local_line_width(bvm *vm); -extern int lvbe_obj_set_style_local_line_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_line_dash_width(bvm *vm); -extern int lvbe_obj_set_style_local_line_dash_width(bvm *vm); -extern int lvbe_obj_get_style_line_dash_gap(bvm *vm); -extern int lvbe_obj_set_style_local_line_dash_gap(bvm *vm); -extern int lvbe_obj_get_style_line_rounded(bvm *vm); -extern int lvbe_obj_set_style_local_line_rounded(bvm *vm); -extern int lvbe_obj_get_style_line_color(bvm *vm); -extern int lvbe_obj_set_style_local_line_color(bvm *vm); -extern int lvbe_obj_get_style_line_opa(bvm *vm); -extern int lvbe_obj_set_style_local_line_opa(bvm *vm); -extern int lvbe_obj_set_style_local_image_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_image_recolor(bvm *vm); -extern int lvbe_obj_set_style_local_image_recolor(bvm *vm); -extern int lvbe_obj_get_style_image_opa(bvm *vm); -extern int lvbe_obj_set_style_local_image_opa(bvm *vm); -extern int lvbe_obj_get_style_image_recolor_opa(bvm *vm); -extern int lvbe_obj_set_style_local_image_recolor_opa(bvm *vm); -extern int lvbe_obj_get_style_transition_time(bvm *vm); -extern int lvbe_obj_set_style_local_transition_time(bvm *vm); -extern int lvbe_obj_get_style_transition_delay(bvm *vm); -extern int lvbe_obj_set_style_local_transition_delay(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_1(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_1(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_2(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_2(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_3(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_3(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_4(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_4(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_5(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_5(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_6(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_6(bvm *vm); -extern int lvbe_obj_set_style_local_transition_path(bvm *vm); -extern int lvbe_obj_get_style_scale_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_width(bvm *vm); -extern int lvbe_obj_get_style_scale_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_border_width(bvm *vm); -extern int lvbe_obj_get_style_scale_end_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_end_border_width(bvm *vm); -extern int lvbe_obj_get_style_scale_end_line_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_end_line_width(bvm *vm); -extern int lvbe_obj_get_style_scale_grad_color(bvm *vm); -extern int lvbe_obj_set_style_local_scale_grad_color(bvm *vm); -extern int lvbe_obj_get_style_scale_end_color(bvm *vm); -extern int lvbe_obj_set_style_local_scale_end_color(bvm *vm); - -/* `lv_arc` external functions definitions */ -extern int lvbe_arc_create(bvm *vm); -extern int lvbe_arc_set_start_angle(bvm *vm); -extern int lvbe_arc_set_end_angle(bvm *vm); -extern int lvbe_arc_set_angles(bvm *vm); -extern int lvbe_arc_set_bg_start_angle(bvm *vm); -extern int lvbe_arc_set_bg_end_angle(bvm *vm); -extern int lvbe_arc_set_bg_angles(bvm *vm); -extern int lvbe_arc_set_rotation(bvm *vm); -extern int lvbe_arc_set_type(bvm *vm); -extern int lvbe_arc_set_value(bvm *vm); -extern int lvbe_arc_set_range(bvm *vm); -extern int lvbe_arc_set_chg_rate(bvm *vm); -extern int lvbe_arc_set_adjustable(bvm *vm); -extern int lvbe_arc_get_angle_start(bvm *vm); -extern int lvbe_arc_get_angle_end(bvm *vm); -extern int lvbe_arc_get_bg_angle_start(bvm *vm); -extern int lvbe_arc_get_bg_angle_end(bvm *vm); -extern int lvbe_arc_get_type(bvm *vm); -extern int lvbe_arc_get_value(bvm *vm); -extern int lvbe_arc_get_min_value(bvm *vm); -extern int lvbe_arc_get_max_value(bvm *vm); -extern int lvbe_arc_is_dragged(bvm *vm); -extern int lvbe_arc_get_adjustable(bvm *vm); - -/* `lv_bar` external functions definitions */ -extern int lvbe_bar_create(bvm *vm); -extern int lvbe_bar_set_value(bvm *vm); -extern int lvbe_bar_set_start_value(bvm *vm); -extern int lvbe_bar_set_range(bvm *vm); -extern int lvbe_bar_set_type(bvm *vm); -extern int lvbe_bar_set_anim_time(bvm *vm); -extern int lvbe_bar_get_value(bvm *vm); -extern int lvbe_bar_get_start_value(bvm *vm); -extern int lvbe_bar_get_min_value(bvm *vm); -extern int lvbe_bar_get_max_value(bvm *vm); -extern int lvbe_bar_get_type(bvm *vm); -extern int lvbe_bar_get_anim_time(bvm *vm); - -/* `lv_btn` external functions definitions */ -extern int lvbe_btn_create(bvm *vm); -extern int lvbe_btn_set_checkable(bvm *vm); -extern int lvbe_btn_set_state(bvm *vm); -extern int lvbe_btn_toggle(bvm *vm); -extern int lvbe_btn_set_layout(bvm *vm); -extern int lvbe_btn_set_fit4(bvm *vm); -extern int lvbe_btn_set_fit2(bvm *vm); -extern int lvbe_btn_set_fit(bvm *vm); -extern int lvbe_btn_get_state(bvm *vm); -extern int lvbe_btn_get_checkable(bvm *vm); -extern int lvbe_btn_get_layout(bvm *vm); -extern int lvbe_btn_get_fit_left(bvm *vm); -extern int lvbe_btn_get_fit_right(bvm *vm); -extern int lvbe_btn_get_fit_top(bvm *vm); -extern int lvbe_btn_get_fit_bottom(bvm *vm); - -/* `lv_btnmatrix` external functions definitions */ -extern int lvbe_btnmatrix_create(bvm *vm); -extern int lvbe_btnmatrix_set_map(bvm *vm); -extern int lvbe_btnmatrix_set_ctrl_map(bvm *vm); -extern int lvbe_btnmatrix_set_focused_btn(bvm *vm); -extern int lvbe_btnmatrix_set_recolor(bvm *vm); -extern int lvbe_btnmatrix_set_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_clear_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_set_btn_ctrl_all(bvm *vm); -extern int lvbe_btnmatrix_clear_btn_ctrl_all(bvm *vm); -extern int lvbe_btnmatrix_set_btn_width(bvm *vm); -extern int lvbe_btnmatrix_set_one_check(bvm *vm); -extern int lvbe_btnmatrix_set_align(bvm *vm); -extern int lvbe_btnmatrix_get_recolor(bvm *vm); -extern int lvbe_btnmatrix_get_active_btn(bvm *vm); -extern int lvbe_btnmatrix_get_active_btn_text(bvm *vm); -extern int lvbe_btnmatrix_get_focused_btn(bvm *vm); -extern int lvbe_btnmatrix_get_btn_text(bvm *vm); -extern int lvbe_btnmatrix_get_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_get_one_check(bvm *vm); -extern int lvbe_btnmatrix_get_align(bvm *vm); - -/* `lv_calendar` external functions definitions */ -extern int lvbe_calendar_create(bvm *vm); -extern int lvbe_calendar_set_today_date(bvm *vm); -extern int lvbe_calendar_set_showed_date(bvm *vm); -extern int lvbe_calendar_set_highlighted_dates(bvm *vm); -extern int lvbe_calendar_set_day_names(bvm *vm); -extern int lvbe_calendar_set_month_names(bvm *vm); -extern int lvbe_calendar_get_highlighted_dates_num(bvm *vm); -extern int lvbe_calendar_get_day_of_week(bvm *vm); - -/* `lv_canvas` external functions definitions */ -extern int lvbe_canvas_create(bvm *vm); -extern int lvbe_canvas_set_buffer(bvm *vm); -extern int lvbe_canvas_set_px(bvm *vm); -extern int lvbe_canvas_set_palette(bvm *vm); -extern int lvbe_canvas_get_px(bvm *vm); -extern int lvbe_canvas_copy_buf(bvm *vm); -extern int lvbe_canvas_transform(bvm *vm); -extern int lvbe_canvas_blur_hor(bvm *vm); -extern int lvbe_canvas_blur_ver(bvm *vm); -extern int lvbe_canvas_fill_bg(bvm *vm); -extern int lvbe_canvas_draw_rect(bvm *vm); -extern int lvbe_canvas_draw_text(bvm *vm); -extern int lvbe_canvas_draw_img(bvm *vm); -extern int lvbe_canvas_draw_line(bvm *vm); -extern int lvbe_canvas_draw_polygon(bvm *vm); -extern int lvbe_canvas_draw_arc(bvm *vm); - -/* `lv_chart` external functions definitions */ -extern int lvbe_chart_create(bvm *vm); -extern int lvbe_chart_remove_series(bvm *vm); -extern int lvbe_chart_clear_series(bvm *vm); -extern int lvbe_chart_hide_series(bvm *vm); -extern int lvbe_chart_set_div_line_count(bvm *vm); -extern int lvbe_chart_set_y_range(bvm *vm); -extern int lvbe_chart_set_type(bvm *vm); -extern int lvbe_chart_set_point_count(bvm *vm); -extern int lvbe_chart_init_points(bvm *vm); -extern int lvbe_chart_set_points(bvm *vm); -extern int lvbe_chart_set_next(bvm *vm); -extern int lvbe_chart_set_update_mode(bvm *vm); -extern int lvbe_chart_set_x_tick_length(bvm *vm); -extern int lvbe_chart_set_y_tick_length(bvm *vm); -extern int lvbe_chart_set_secondary_y_tick_length(bvm *vm); -extern int lvbe_chart_set_x_tick_texts(bvm *vm); -extern int lvbe_chart_set_secondary_y_tick_texts(bvm *vm); -extern int lvbe_chart_set_y_tick_texts(bvm *vm); -extern int lvbe_chart_set_x_start_point(bvm *vm); -extern int lvbe_chart_set_ext_array(bvm *vm); -extern int lvbe_chart_set_point_id(bvm *vm); -extern int lvbe_chart_set_series_axis(bvm *vm); -extern int lvbe_chart_set_cursor_point(bvm *vm); -extern int lvbe_chart_get_type(bvm *vm); -extern int lvbe_chart_get_point_count(bvm *vm); -extern int lvbe_chart_get_x_start_point(bvm *vm); -extern int lvbe_chart_get_point_id(bvm *vm); -extern int lvbe_chart_get_series_axis(bvm *vm); -extern int lvbe_chart_get_series_area(bvm *vm); -extern int lvbe_chart_get_cursor_point(bvm *vm); -extern int lvbe_chart_get_nearest_index_from_coord(bvm *vm); -extern int lvbe_chart_get_x_from_index(bvm *vm); -extern int lvbe_chart_get_y_from_index(bvm *vm); -extern int lvbe_chart_refresh(bvm *vm); - -/* `lv_checkbox` external functions definitions */ -extern int lvbe_checkbox_create(bvm *vm); -extern int lvbe_checkbox_set_text(bvm *vm); -extern int lvbe_checkbox_set_text_static(bvm *vm); -extern int lvbe_checkbox_set_checked(bvm *vm); -extern int lvbe_checkbox_set_disabled(bvm *vm); -extern int lvbe_checkbox_set_state(bvm *vm); -extern int lvbe_checkbox_get_text(bvm *vm); -extern int lvbe_checkbox_is_checked(bvm *vm); -extern int lvbe_checkbox_is_inactive(bvm *vm); -extern int lvbe_checkbox_get_state(bvm *vm); - -/* `lv_cont` external functions definitions */ -extern int lvbe_cont_create(bvm *vm); -extern int lvbe_cont_set_layout(bvm *vm); -extern int lvbe_cont_set_fit4(bvm *vm); -extern int lvbe_cont_set_fit2(bvm *vm); -extern int lvbe_cont_set_fit(bvm *vm); -extern int lvbe_cont_get_layout(bvm *vm); -extern int lvbe_cont_get_fit_left(bvm *vm); -extern int lvbe_cont_get_fit_right(bvm *vm); -extern int lvbe_cont_get_fit_top(bvm *vm); -extern int lvbe_cont_get_fit_bottom(bvm *vm); - -/* `lv_cpicker` external functions definitions */ -extern int lvbe_cpicker_create(bvm *vm); -extern int lvbe_cpicker_set_type(bvm *vm); -extern int lvbe_cpicker_set_hue(bvm *vm); -extern int lvbe_cpicker_set_saturation(bvm *vm); -extern int lvbe_cpicker_set_value(bvm *vm); -extern int lvbe_cpicker_set_hsv(bvm *vm); -extern int lvbe_cpicker_set_color(bvm *vm); -extern int lvbe_cpicker_set_color_mode(bvm *vm); -extern int lvbe_cpicker_set_color_mode_fixed(bvm *vm); -extern int lvbe_cpicker_set_knob_colored(bvm *vm); -extern int lvbe_cpicker_get_color_mode(bvm *vm); -extern int lvbe_cpicker_get_color_mode_fixed(bvm *vm); -extern int lvbe_cpicker_get_hue(bvm *vm); -extern int lvbe_cpicker_get_saturation(bvm *vm); -extern int lvbe_cpicker_get_value(bvm *vm); -extern int lvbe_cpicker_get_hsv(bvm *vm); -extern int lvbe_cpicker_get_color(bvm *vm); -extern int lvbe_cpicker_get_knob_colored(bvm *vm); - -/* `lv_dropdown` external functions definitions */ -extern int lvbe_dropdown_create(bvm *vm); -extern int lvbe_dropdown_set_text(bvm *vm); -extern int lvbe_dropdown_clear_options(bvm *vm); -extern int lvbe_dropdown_set_options(bvm *vm); -extern int lvbe_dropdown_set_options_static(bvm *vm); -extern int lvbe_dropdown_add_option(bvm *vm); -extern int lvbe_dropdown_set_selected(bvm *vm); -extern int lvbe_dropdown_set_dir(bvm *vm); -extern int lvbe_dropdown_set_max_height(bvm *vm); -extern int lvbe_dropdown_set_symbol(bvm *vm); -extern int lvbe_dropdown_set_show_selected(bvm *vm); -extern int lvbe_dropdown_get_text(bvm *vm); -extern int lvbe_dropdown_get_options(bvm *vm); -extern int lvbe_dropdown_get_selected(bvm *vm); -extern int lvbe_dropdown_get_option_cnt(bvm *vm); -extern int lvbe_dropdown_get_selected_str(bvm *vm); -extern int lvbe_dropdown_get_max_height(bvm *vm); -extern int lvbe_dropdown_get_symbol(bvm *vm); -extern int lvbe_dropdown_get_dir(bvm *vm); -extern int lvbe_dropdown_get_show_selected(bvm *vm); -extern int lvbe_dropdown_open(bvm *vm); -extern int lvbe_dropdown_close(bvm *vm); - -/* `lv_gauge` external functions definitions */ -extern int lvbe_gauge_create(bvm *vm); -extern int lvbe_gauge_set_needle_count(bvm *vm); -extern int lvbe_gauge_set_value(bvm *vm); -extern int lvbe_gauge_set_range(bvm *vm); -extern int lvbe_gauge_set_critical_value(bvm *vm); -extern int lvbe_gauge_set_scale(bvm *vm); -extern int lvbe_gauge_set_angle_offset(bvm *vm); -extern int lvbe_gauge_set_needle_img(bvm *vm); -extern int lvbe_gauge_set_formatter_cb(bvm *vm); -extern int lvbe_gauge_get_value(bvm *vm); -extern int lvbe_gauge_get_needle_count(bvm *vm); -extern int lvbe_gauge_get_min_value(bvm *vm); -extern int lvbe_gauge_get_max_value(bvm *vm); -extern int lvbe_gauge_get_critical_value(bvm *vm); -extern int lvbe_gauge_get_label_count(bvm *vm); -extern int lvbe_gauge_get_line_count(bvm *vm); -extern int lvbe_gauge_get_scale_angle(bvm *vm); -extern int lvbe_gauge_get_angle_offset(bvm *vm); -extern int lvbe_gauge_get_needle_img(bvm *vm); -extern int lvbe_gauge_get_needle_img_pivot_x(bvm *vm); -extern int lvbe_gauge_get_needle_img_pivot_y(bvm *vm); - -/* `lv_img` external functions definitions */ -extern int lvbe_img_create(bvm *vm); -extern int lvbe_img_set_src(bvm *vm); -extern int lvbe_img_set_auto_size(bvm *vm); -extern int lvbe_img_set_offset_x(bvm *vm); -extern int lvbe_img_set_offset_y(bvm *vm); -extern int lvbe_img_set_pivot(bvm *vm); -extern int lvbe_img_set_angle(bvm *vm); -extern int lvbe_img_set_zoom(bvm *vm); -extern int lvbe_img_set_antialias(bvm *vm); -extern int lvbe_img_get_src(bvm *vm); -extern int lvbe_img_get_file_name(bvm *vm); -extern int lvbe_img_get_auto_size(bvm *vm); -extern int lvbe_img_get_offset_x(bvm *vm); -extern int lvbe_img_get_offset_y(bvm *vm); -extern int lvbe_img_get_angle(bvm *vm); -extern int lvbe_img_get_pivot(bvm *vm); -extern int lvbe_img_get_zoom(bvm *vm); -extern int lvbe_img_get_antialias(bvm *vm); - -/* `lv_imgbtn` external functions definitions */ -extern int lvbe_imgbtn_create(bvm *vm); -extern int lvbe_imgbtn_set_src(bvm *vm); -extern int lvbe_imgbtn_set_state(bvm *vm); -extern int lvbe_imgbtn_toggle(bvm *vm); -extern int lvbe_imgbtn_set_checkable(bvm *vm); -extern int lvbe_imgbtn_get_src(bvm *vm); -extern int lvbe_imgbtn_get_state(bvm *vm); - -/* `lv_keyboard` external functions definitions */ -extern int lvbe_keyboard_create(bvm *vm); -extern int lvbe_keyboard_set_textarea(bvm *vm); -extern int lvbe_keyboard_set_mode(bvm *vm); -extern int lvbe_keyboard_set_cursor_manage(bvm *vm); -extern int lvbe_keyboard_set_map(bvm *vm); -extern int lvbe_keyboard_set_ctrl_map(bvm *vm); -extern int lvbe_keyboard_get_textarea(bvm *vm); -extern int lvbe_keyboard_get_cursor_manage(bvm *vm); -extern int lvbe_keyboard_def_event_cb(bvm *vm); - -/* `lv_label` external functions definitions */ -extern int lvbe_label_create(bvm *vm); -extern int lvbe_label_set_text(bvm *vm); -extern int lvbe_label_set_text_fmt(bvm *vm); -extern int lvbe_label_set_text_static(bvm *vm); -extern int lvbe_label_set_long_mode(bvm *vm); -extern int lvbe_label_set_align(bvm *vm); -extern int lvbe_label_set_recolor(bvm *vm); -extern int lvbe_label_set_anim_speed(bvm *vm); -extern int lvbe_label_set_text_sel_start(bvm *vm); -extern int lvbe_label_set_text_sel_end(bvm *vm); -extern int lvbe_label_get_text(bvm *vm); -extern int lvbe_label_get_long_mode(bvm *vm); -extern int lvbe_label_get_align(bvm *vm); -extern int lvbe_label_get_recolor(bvm *vm); -extern int lvbe_label_get_anim_speed(bvm *vm); -extern int lvbe_label_get_letter_pos(bvm *vm); -extern int lvbe_label_get_letter_on(bvm *vm); -extern int lvbe_label_is_char_under_pos(bvm *vm); -extern int lvbe_label_get_text_sel_start(bvm *vm); -extern int lvbe_label_get_text_sel_end(bvm *vm); -extern int lvbe_label_ins_text(bvm *vm); -extern int lvbe_label_cut_text(bvm *vm); -extern int lvbe_label_refr_text(bvm *vm); - -/* `lv_led` external functions definitions */ -extern int lvbe_led_create(bvm *vm); -extern int lvbe_led_set_bright(bvm *vm); -extern int lvbe_led_on(bvm *vm); -extern int lvbe_led_off(bvm *vm); -extern int lvbe_led_toggle(bvm *vm); -extern int lvbe_led_get_bright(bvm *vm); - -/* `lv_line` external functions definitions */ -extern int lvbe_line_create(bvm *vm); -extern int lvbe_line_set_points(bvm *vm); -extern int lvbe_line_set_auto_size(bvm *vm); -extern int lvbe_line_set_y_invert(bvm *vm); -extern int lvbe_line_get_auto_size(bvm *vm); -extern int lvbe_line_get_y_invert(bvm *vm); - -/* `lv_linemeter` external functions definitions */ -extern int lvbe_linemeter_create(bvm *vm); -extern int lvbe_linemeter_set_value(bvm *vm); -extern int lvbe_linemeter_set_range(bvm *vm); -extern int lvbe_linemeter_set_scale(bvm *vm); -extern int lvbe_linemeter_set_angle_offset(bvm *vm); -extern int lvbe_linemeter_set_mirror(bvm *vm); -extern int lvbe_linemeter_get_value(bvm *vm); -extern int lvbe_linemeter_get_min_value(bvm *vm); -extern int lvbe_linemeter_get_max_value(bvm *vm); -extern int lvbe_linemeter_get_line_count(bvm *vm); -extern int lvbe_linemeter_get_scale_angle(bvm *vm); -extern int lvbe_linemeter_get_angle_offset(bvm *vm); -extern int lvbe_linemeter_draw_scale(bvm *vm); -extern int lvbe_linemeter_get_mirror(bvm *vm); - -/* `lv_list` external functions definitions */ -extern int lvbe_list_create(bvm *vm); -extern int lvbe_list_clean(bvm *vm); -extern int lvbe_list_add_btn(bvm *vm); -extern int lvbe_list_remove(bvm *vm); -extern int lvbe_list_focus_btn(bvm *vm); -extern int lvbe_list_set_scrollbar_mode(bvm *vm); -extern int lvbe_list_set_scroll_propagation(bvm *vm); -extern int lvbe_list_set_edge_flash(bvm *vm); -extern int lvbe_list_set_anim_time(bvm *vm); -extern int lvbe_list_set_layout(bvm *vm); -extern int lvbe_list_get_btn_text(bvm *vm); -extern int lvbe_list_get_btn_label(bvm *vm); -extern int lvbe_list_get_btn_img(bvm *vm); -extern int lvbe_list_get_prev_btn(bvm *vm); -extern int lvbe_list_get_next_btn(bvm *vm); -extern int lvbe_list_get_btn_index(bvm *vm); -extern int lvbe_list_get_size(bvm *vm); -extern int lvbe_list_get_btn_selected(bvm *vm); -extern int lvbe_list_get_layout(bvm *vm); -extern int lvbe_list_get_scrollbar_mode(bvm *vm); -extern int lvbe_list_get_scroll_propagation(bvm *vm); -extern int lvbe_list_get_edge_flash(bvm *vm); -extern int lvbe_list_get_anim_time(bvm *vm); -extern int lvbe_list_up(bvm *vm); -extern int lvbe_list_down(bvm *vm); -extern int lvbe_list_focus(bvm *vm); - -/* `lv_msgbox` external functions definitions */ -extern int lvbe_msgbox_create(bvm *vm); -extern int lvbe_msgbox_add_btns(bvm *vm); -extern int lvbe_msgbox_set_text(bvm *vm); -extern int lvbe_msgbox_set_text_fmt(bvm *vm); -extern int lvbe_msgbox_set_anim_time(bvm *vm); -extern int lvbe_msgbox_start_auto_close(bvm *vm); -extern int lvbe_msgbox_stop_auto_close(bvm *vm); -extern int lvbe_msgbox_set_recolor(bvm *vm); -extern int lvbe_msgbox_get_text(bvm *vm); -extern int lvbe_msgbox_get_active_btn(bvm *vm); -extern int lvbe_msgbox_get_active_btn_text(bvm *vm); -extern int lvbe_msgbox_get_anim_time(bvm *vm); -extern int lvbe_msgbox_get_recolor(bvm *vm); -extern int lvbe_msgbox_get_btnmatrix(bvm *vm); - -/* `lv_objmask` external functions definitions */ -extern int lvbe_objmask_create(bvm *vm); -extern int lvbe_objmask_update_mask(bvm *vm); -extern int lvbe_objmask_remove_mask(bvm *vm); - -/* `lv_page` external functions definitions */ -extern int lvbe_page_create(bvm *vm); -extern int lvbe_page_clean(bvm *vm); -extern int lvbe_page_get_scrollable(bvm *vm); -extern int lvbe_page_get_anim_time(bvm *vm); -extern int lvbe_page_set_scrollbar_mode(bvm *vm); -extern int lvbe_page_set_anim_time(bvm *vm); -extern int lvbe_page_set_scroll_propagation(bvm *vm); -extern int lvbe_page_set_edge_flash(bvm *vm); -extern int lvbe_page_set_scrollable_fit2(bvm *vm); -extern int lvbe_page_set_scrollable_fit(bvm *vm); -extern int lvbe_page_set_scrl_width(bvm *vm); -extern int lvbe_page_set_scrl_height(bvm *vm); -extern int lvbe_page_set_scrl_layout(bvm *vm); -extern int lvbe_page_get_scrollbar_mode(bvm *vm); -extern int lvbe_page_get_scroll_propagation(bvm *vm); -extern int lvbe_page_get_edge_flash(bvm *vm); -extern int lvbe_page_get_width_fit(bvm *vm); -extern int lvbe_page_get_height_fit(bvm *vm); -extern int lvbe_page_get_width_grid(bvm *vm); -extern int lvbe_page_get_height_grid(bvm *vm); -extern int lvbe_page_get_scrl_width(bvm *vm); -extern int lvbe_page_get_scrl_height(bvm *vm); -extern int lvbe_page_get_scrl_layout(bvm *vm); -extern int lvbe_page_get_scrl_fit_left(bvm *vm); -extern int lvbe_page_get_scrl_fit_right(bvm *vm); -extern int lvbe_page_get_scrl_fit_top(bvm *vm); -extern int lvbe_page_get_scrl_fit_bottom(bvm *vm); -extern int lvbe_page_on_edge(bvm *vm); -extern int lvbe_page_glue_obj(bvm *vm); -extern int lvbe_page_focus(bvm *vm); -extern int lvbe_page_scroll_hor(bvm *vm); -extern int lvbe_page_scroll_ver(bvm *vm); -extern int lvbe_page_start_edge_flash(bvm *vm); - -/* `lv_roller` external functions definitions */ -extern int lvbe_roller_create(bvm *vm); -extern int lvbe_roller_set_options(bvm *vm); -extern int lvbe_roller_set_align(bvm *vm); -extern int lvbe_roller_set_selected(bvm *vm); -extern int lvbe_roller_set_visible_row_count(bvm *vm); -extern int lvbe_roller_set_auto_fit(bvm *vm); -extern int lvbe_roller_set_anim_time(bvm *vm); -extern int lvbe_roller_get_selected(bvm *vm); -extern int lvbe_roller_get_option_cnt(bvm *vm); -extern int lvbe_roller_get_selected_str(bvm *vm); -extern int lvbe_roller_get_align(bvm *vm); -extern int lvbe_roller_get_auto_fit(bvm *vm); -extern int lvbe_roller_get_options(bvm *vm); -extern int lvbe_roller_get_anim_time(bvm *vm); - -/* `lv_slider` external functions definitions */ -extern int lvbe_slider_create(bvm *vm); -extern int lvbe_slider_set_value(bvm *vm); -extern int lvbe_slider_set_left_value(bvm *vm); -extern int lvbe_slider_set_range(bvm *vm); -extern int lvbe_slider_set_anim_time(bvm *vm); -extern int lvbe_slider_set_type(bvm *vm); -extern int lvbe_slider_get_value(bvm *vm); -extern int lvbe_slider_get_left_value(bvm *vm); -extern int lvbe_slider_get_min_value(bvm *vm); -extern int lvbe_slider_get_max_value(bvm *vm); -extern int lvbe_slider_is_dragged(bvm *vm); -extern int lvbe_slider_get_anim_time(bvm *vm); -extern int lvbe_slider_get_type(bvm *vm); - -/* `lv_spinbox` external functions definitions */ -extern int lvbe_spinbox_create(bvm *vm); -extern int lvbe_spinbox_set_rollover(bvm *vm); -extern int lvbe_spinbox_set_value(bvm *vm); -extern int lvbe_spinbox_set_digit_format(bvm *vm); -extern int lvbe_spinbox_set_step(bvm *vm); -extern int lvbe_spinbox_set_range(bvm *vm); -extern int lvbe_spinbox_set_padding_left(bvm *vm); -extern int lvbe_spinbox_get_rollover(bvm *vm); -extern int lvbe_spinbox_get_value(bvm *vm); -extern int lvbe_spinbox_get_step(bvm *vm); -extern int lvbe_spinbox_step_next(bvm *vm); -extern int lvbe_spinbox_step_prev(bvm *vm); -extern int lvbe_spinbox_increment(bvm *vm); -extern int lvbe_spinbox_decrement(bvm *vm); - -/* `lv_spinner` external functions definitions */ -extern int lvbe_spinner_create(bvm *vm); -extern int lvbe_spinner_set_arc_length(bvm *vm); -extern int lvbe_spinner_set_spin_time(bvm *vm); -extern int lvbe_spinner_set_type(bvm *vm); -extern int lvbe_spinner_set_dir(bvm *vm); -extern int lvbe_spinner_get_arc_length(bvm *vm); -extern int lvbe_spinner_get_spin_time(bvm *vm); -extern int lvbe_spinner_get_type(bvm *vm); -extern int lvbe_spinner_get_dir(bvm *vm); -extern int lvbe_spinner_anim_cb(bvm *vm); - -/* `lv_switch` external functions definitions */ -extern int lvbe_switch_create(bvm *vm); -extern int lvbe_switch_on(bvm *vm); -extern int lvbe_switch_off(bvm *vm); -extern int lvbe_switch_toggle(bvm *vm); -extern int lvbe_switch_set_anim_time(bvm *vm); -extern int lvbe_switch_get_state(bvm *vm); -extern int lvbe_switch_get_anim_time(bvm *vm); - -/* `lv_table` external functions definitions */ -extern int lvbe_table_create(bvm *vm); -extern int lvbe_table_set_cell_value(bvm *vm); -extern int lvbe_table_set_cell_value_fmt(bvm *vm); -extern int lvbe_table_set_row_cnt(bvm *vm); -extern int lvbe_table_set_col_cnt(bvm *vm); -extern int lvbe_table_set_col_width(bvm *vm); -extern int lvbe_table_set_cell_align(bvm *vm); -extern int lvbe_table_set_cell_type(bvm *vm); -extern int lvbe_table_set_cell_crop(bvm *vm); -extern int lvbe_table_set_cell_merge_right(bvm *vm); -extern int lvbe_table_get_cell_value(bvm *vm); -extern int lvbe_table_get_row_cnt(bvm *vm); -extern int lvbe_table_get_col_cnt(bvm *vm); -extern int lvbe_table_get_col_width(bvm *vm); -extern int lvbe_table_get_cell_align(bvm *vm); -extern int lvbe_table_get_cell_type(bvm *vm); -extern int lvbe_table_get_cell_crop(bvm *vm); -extern int lvbe_table_get_cell_merge_right(bvm *vm); -extern int lvbe_table_get_pressed_cell(bvm *vm); - -/* `lv_tabview` external functions definitions */ -extern int lvbe_tabview_create(bvm *vm); -extern int lvbe_tabview_add_tab(bvm *vm); -extern int lvbe_tabview_clean_tab(bvm *vm); -extern int lvbe_tabview_set_tab_act(bvm *vm); -extern int lvbe_tabview_set_tab_name(bvm *vm); -extern int lvbe_tabview_set_anim_time(bvm *vm); -extern int lvbe_tabview_set_btns_pos(bvm *vm); -extern int lvbe_tabview_get_tab_act(bvm *vm); -extern int lvbe_tabview_get_tab_count(bvm *vm); -extern int lvbe_tabview_get_tab(bvm *vm); -extern int lvbe_tabview_get_anim_time(bvm *vm); -extern int lvbe_tabview_get_btns_pos(bvm *vm); - -/* `lv_textarea` external functions definitions */ -extern int lvbe_textarea_create(bvm *vm); -extern int lvbe_textarea_add_char(bvm *vm); -extern int lvbe_textarea_add_text(bvm *vm); -extern int lvbe_textarea_del_char(bvm *vm); -extern int lvbe_textarea_del_char_forward(bvm *vm); -extern int lvbe_textarea_set_text(bvm *vm); -extern int lvbe_textarea_set_placeholder_text(bvm *vm); -extern int lvbe_textarea_set_cursor_pos(bvm *vm); -extern int lvbe_textarea_set_cursor_hidden(bvm *vm); -extern int lvbe_textarea_set_cursor_click_pos(bvm *vm); -extern int lvbe_textarea_set_pwd_mode(bvm *vm); -extern int lvbe_textarea_set_one_line(bvm *vm); -extern int lvbe_textarea_set_text_align(bvm *vm); -extern int lvbe_textarea_set_accepted_chars(bvm *vm); -extern int lvbe_textarea_set_max_length(bvm *vm); -extern int lvbe_textarea_set_insert_replace(bvm *vm); -extern int lvbe_textarea_set_scrollbar_mode(bvm *vm); -extern int lvbe_textarea_set_scroll_propagation(bvm *vm); -extern int lvbe_textarea_set_edge_flash(bvm *vm); -extern int lvbe_textarea_set_text_sel(bvm *vm); -extern int lvbe_textarea_set_pwd_show_time(bvm *vm); -extern int lvbe_textarea_set_cursor_blink_time(bvm *vm); -extern int lvbe_textarea_get_text(bvm *vm); -extern int lvbe_textarea_get_placeholder_text(bvm *vm); -extern int lvbe_textarea_get_label(bvm *vm); -extern int lvbe_textarea_get_cursor_pos(bvm *vm); -extern int lvbe_textarea_get_cursor_hidden(bvm *vm); -extern int lvbe_textarea_get_cursor_click_pos(bvm *vm); -extern int lvbe_textarea_get_pwd_mode(bvm *vm); -extern int lvbe_textarea_get_one_line(bvm *vm); -extern int lvbe_textarea_get_accepted_chars(bvm *vm); -extern int lvbe_textarea_get_max_length(bvm *vm); -extern int lvbe_textarea_get_scrollbar_mode(bvm *vm); -extern int lvbe_textarea_get_scroll_propagation(bvm *vm); -extern int lvbe_textarea_get_edge_flash(bvm *vm); -extern int lvbe_textarea_text_is_selected(bvm *vm); -extern int lvbe_textarea_get_text_sel_en(bvm *vm); -extern int lvbe_textarea_get_pwd_show_time(bvm *vm); -extern int lvbe_textarea_get_cursor_blink_time(bvm *vm); -extern int lvbe_textarea_clear_selection(bvm *vm); -extern int lvbe_textarea_cursor_right(bvm *vm); -extern int lvbe_textarea_cursor_left(bvm *vm); -extern int lvbe_textarea_cursor_down(bvm *vm); -extern int lvbe_textarea_cursor_up(bvm *vm); - -/* `lv_tileview` external functions definitions */ -extern int lvbe_tileview_create(bvm *vm); -extern int lvbe_tileview_add_element(bvm *vm); -extern int lvbe_tileview_set_valid_positions(bvm *vm); -extern int lvbe_tileview_set_tile_act(bvm *vm); -extern int lvbe_tileview_set_edge_flash(bvm *vm); -extern int lvbe_tileview_set_anim_time(bvm *vm); -extern int lvbe_tileview_get_tile_act(bvm *vm); -extern int lvbe_tileview_get_edge_flash(bvm *vm); -extern int lvbe_tileview_get_anim_time(bvm *vm); - -/* `lv_win` external functions definitions */ -extern int lvbe_win_create(bvm *vm); -extern int lvbe_win_clean(bvm *vm); -extern int lvbe_win_add_btn_right(bvm *vm); -extern int lvbe_win_add_btn_left(bvm *vm); -extern int lvbe_win_close_event_cb(bvm *vm); -extern int lvbe_win_set_title(bvm *vm); -extern int lvbe_win_set_header_height(bvm *vm); -extern int lvbe_win_set_btn_width(bvm *vm); -extern int lvbe_win_set_content_size(bvm *vm); -extern int lvbe_win_set_layout(bvm *vm); -extern int lvbe_win_set_scrollbar_mode(bvm *vm); -extern int lvbe_win_set_anim_time(bvm *vm); -extern int lvbe_win_set_drag(bvm *vm); -extern int lvbe_win_title_set_alignment(bvm *vm); -extern int lvbe_win_get_title(bvm *vm); -extern int lvbe_win_get_content(bvm *vm); -extern int lvbe_win_get_header_height(bvm *vm); -extern int lvbe_win_get_btn_width(bvm *vm); -extern int lvbe_win_get_from_btn(bvm *vm); -extern int lvbe_win_get_layout(bvm *vm); -extern int lvbe_win_get_sb_mode(bvm *vm); -extern int lvbe_win_get_anim_time(bvm *vm); -extern int lvbe_win_get_width(bvm *vm); -extern int lvbe_win_get_drag(bvm *vm); -extern int lvbe_win_title_get_alignment(bvm *vm); -extern int lvbe_win_focus(bvm *vm); -extern int lvbe_win_scroll_hor(bvm *vm); -extern int lvbe_win_scroll_ver(bvm *vm); - -/********************************************************************/ diff --git a/lib/libesp32/Berry/default/be_lv_lvgl_module.c b/lib/libesp32/Berry/default/be_lvgl_module.c similarity index 100% rename from lib/libesp32/Berry/default/be_lv_lvgl_module.c rename to lib/libesp32/Berry/default/be_lvgl_module.c diff --git a/tools/lv_berry/convert.py b/tools/lv_berry/convert.py index 7ab085135..14d71a71c 100644 --- a/tools/lv_berry/convert.py +++ b/tools/lv_berry/convert.py @@ -6,12 +6,11 @@ lv_module_file = "lv_module.h" out_prefix = "../../tasmota/lvgl_berry/" lvgl_prefix = "../../lib/libesp32/Berry/default/" -lvgl_prefix = "../../lib/libesp32/Berry/default/" be_lv_defines = "be_lv_defines.h" be_lv_c_mapping = "be_lv_c_mapping.h" be_lv_widgets_libs = "be_lvgl_widgets_lib.c" -be_lv_lvgl_module = "be_lv_lvgl_module.c" +be_lv_lvgl_module = "be_lvgl_module.c" # detect a function definition all # Ex: 'void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent);' From a0693c6ed15b74c995a9f9b342c3eb2e6e27f998 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 4 Sep 2021 14:20:09 +0200 Subject: [PATCH 149/317] Support for ESP32S2 GPIOs --- CHANGELOG.md | 1 + tasmota/support.ino | 16 +++++- tasmota/tasmota_template.h | 100 ++++++++++++++++++++++++++++++++-- tasmota/xdrv_01_webserver.ino | 18 +++++- 4 files changed, 126 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eaf410195..588ce7715 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) - Berry class ``webclient`` for HTTP/HTTPS requests +- Support for ESP32S2 GPIOs ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/tasmota/support.ino b/tasmota/support.ino index 7b7623301..d3dea0732 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1565,6 +1565,10 @@ void TemplateGpios(myio *gp) for (uint32_t i = 0; i < nitems(Settings->user_template.gp.io); i++) { #if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 dest[i] = src[i]; +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + if (22 == i) { j = 33; } // skip 22-32 + dest[j] = src[i]; + j++; #else if (6 == i) { j = 9; } if (8 == i) { j = 12; } @@ -1623,6 +1627,8 @@ bool FlashPin(uint32_t pin) { #if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 return (pin > 10) && (pin < 18); // ESP32C3 has GPIOs 11-17 reserved for Flash +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + return (pin > 21) && (pin < 33); // ESP32S2 skip 22-32 #else // ESP32 and ESP8266 return (((pin > 5) && (pin < 9)) || (11 == pin)); #endif @@ -1632,6 +1638,8 @@ bool RedPin(uint32_t pin) // pin may be dangerous to change, display in RED in t { #if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 return false; // no red pin on ESP32C3 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + return false; // no red pin on ESP32S3 #else // ESP32 and ESP8266 #ifdef CONFIG_IDF_TARGET_ESP32 @@ -1648,13 +1656,17 @@ uint32_t ValidPin(uint32_t pin, uint32_t gpio) { return GPIO_NONE; // Disable flash pins GPIO6, GPIO7, GPIO8 and GPIO11 } -#ifndef CONFIG_IDF_TARGET_ESP32C3 +#if defined(CONFIG_IDF_TARGET_ESP32C3) +// ignore +#elif defined(CONFIG_IDF_TARGET_ESP32S2) +// ignore +#else // not ESP32C3 and not ESP32S2 if ((WEMOS == Settings->module) && !Settings->flag3.user_esp8285_enable) { // SetOption51 - Enable ESP8285 user GPIO's if ((9 == pin) || (10 == pin)) { return GPIO_NONE; // Disable possible flash GPIO9 and GPIO10 } } -#endif // not ESP32C3 +#endif return gpio; } diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index cb8b664af..63e77ae70 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -1005,7 +1005,17 @@ typedef struct MYTMPLT8266 { // 0 1 2 3 4 5 6 7 8 9101112131415161718192021 const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOIOIOIOIOIOFLFLFLFLFLFLFLIOIORXTX"; -#else // not CONFIG_IDF_TARGET_ESP32C3 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + +#define MAX_GPIO_PIN 47 // Number of supported GPIO +#define MIN_FLASH_PINS 11 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI) +#define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS +#define WEMOS_MODULE 0 // Wemos module + +// 0 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546 +const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOIO--------FLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOI "; + +#else // not CONFIG_IDF_TARGET_ESP32C3 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32 #define MAX_GPIO_PIN 40 // Number of supported GPIO #define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) @@ -1015,7 +1025,7 @@ const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOIOIOIOIOIOFLFLFLFLFLFLFLIOIORXTX" // 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOIAIAIAIAIAIA"; -#endif // not CONFIG_IDF_TARGET_ESP32C3 +#endif // ESP32/S2/C3 selection #endif // ESP32 /********************************************************************************************\ @@ -2527,11 +2537,89 @@ const mytmplt kModules[] PROGMEM = { /*********************************************************************************************\ Known templates - - \*********************************************************************************************/ -#else // not CONFIG_IDF_TARGET_ESP32C3 - now ESP32 +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + +/********************************************************************************************\ + * ESP32-C3 Module templates +\********************************************************************************************/ + +#define USER_MODULE 255 + +// Supported hardware modules +enum SupportedModules { + WEMOS, + MAXMODULE }; + +// Default module settings +const uint8_t kModuleNiceList[] PROGMEM = { + WEMOS, +}; + +// !!! Update this list in the same order as kModuleNiceList !!! +const char kModuleNames[] PROGMEM = + "ESP32S2|" + ; + +// !!! Update this list in the same order as SupportedModules !!! +const mytmplt kModules[] PROGMEM = { + { // Generic ESP32C3 device + AGPIO(GPIO_USER), // 0 IO GPIO0, RTC_GPIO0, Strapping + AGPIO(GPIO_USER), // 1 AO GPIO1, ADC1_CH0, RTC_GPIO1 + AGPIO(GPIO_USER), // 2 AO GPIO2, ADC1_CH1, RTC_GPIO2 + AGPIO(GPIO_USER), // 3 AO GPIO3, ADC1_CH2, RTC_GPIO3 + AGPIO(GPIO_USER), // 4 AO GPIO4, ADC1_CH3, RTC_GPIO4 + AGPIO(GPIO_USER), // 5 AO GPIO5, ADC1_CH4, RTC_GPIO5 + AGPIO(GPIO_USER), // 6 AO GPIO6, ADC1_CH5, RTC_GPIO6 + AGPIO(GPIO_USER), // 7 AO GPIO7, ADC1_CH6, RTC_GPIO7 + AGPIO(GPIO_USER), // 8 AO GPIO8, ADC1_CH7, RTC_GPIO8 + AGPIO(GPIO_USER), // 9 AO GPIO9, ADC1_CH8, RTC_GPIO9 + AGPIO(GPIO_USER), // 10 AO GPIO10, ADC1_CH9, RTC_GPIO10 + AGPIO(GPIO_USER), // 11 AO GPIO11, ADC2_CH0, RTC_GPIO11 + AGPIO(GPIO_USER), // 12 AO GPIO12, ADC2_CH1, RTC_GPIO12 + AGPIO(GPIO_USER), // 13 AO GPIO13, ADC2_CH2, RTC_GPIO13 + AGPIO(GPIO_USER), // 14 AO GPIO14, ADC2_CH3, RTC_GPIO14 + AGPIO(GPIO_USER), // 15 AO GPIO15, ADC2_CH4, RTC_GPIO15, XTAL_32K_P + AGPIO(GPIO_USER), // 16 AO GPIO16, ADC2_CH5, RTC_GPIO16, XTAL_32K_N + AGPIO(GPIO_USER), // 17 AO GPIO17, ADC2_CH6, RTC_GPIO17, DAC_1 + AGPIO(GPIO_USER), // 18 AO GPIO18, ADC2_CH7, RTC_GPIO18, DAC_2 + AGPIO(GPIO_USER), // 19 AO GPIO19, ADC2_CH8, RTC_GPIO19 + AGPIO(GPIO_USER), // 20 AO GPIO20, ADC2_CH9, RTC_GPIO20 + AGPIO(GPIO_USER), // 21 IO GPIO21, RTC_GPIO21 + // 22 -- Unused + // 23 -- Unused + // 24 -- Unused + // 25 -- Unused + // 26 FL SPICS1, PSRAM + // 27 FL SPIHD + // 28 FL SPIWP + // 29 FL SPICS0 + // 30 FL SPICLK + // 31 FL SPIQ + // 32 FL SPID + AGPIO(GPIO_USER), // 33 IO GPIO33 + AGPIO(GPIO_USER), // 34 IO GPIO34 + AGPIO(GPIO_USER), // 35 IO GPIO35 + AGPIO(GPIO_USER), // 36 IO GPIO36 + AGPIO(GPIO_USER), // 37 IO GPIO37 + AGPIO(GPIO_USER), // 38 IO GPIO38 + AGPIO(GPIO_USER), // 39 IO GPIO39, JTAG MTCK + AGPIO(GPIO_USER), // 40 IO GPIO40, JTAG MTDO + AGPIO(GPIO_USER), // 41 IO GPIO41, JTAG MTDI + AGPIO(GPIO_USER), // 42 IO GPIO42, JTAG MTMS + AGPIO(GPIO_USER), // 43 IO GPIO43, U0TXD + AGPIO(GPIO_USER), // 44 IO GPIO44, U0RXD + AGPIO(GPIO_USER), // 45 IO GPIO45, Strapping + AGPIO(GPIO_USER), // 46 I GPIO46, Input only, Strapping + }, +}; + +/*********************************************************************************************\ + Known templates +\*********************************************************************************************/ + +#else // not CONFIG_IDF_TARGET_ESP32C3 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32 /********************************************************************************************\ * ESP32 Module templates \********************************************************************************************/ @@ -2846,7 +2934,7 @@ const mytmplt kModules[] PROGMEM = { \*********************************************************************************************/ -#endif // Not CONFIG_IDF_TARGET_ESP32C3 +#endif // ESP32/S2/C3 selection #endif // ESP32 #endif // _TASMOTA_TEMPLATE_H_ diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 10ca8a7fb..097640562 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -150,6 +150,14 @@ const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = "for(i=0;i<" STR(MAX_USER_PINS) ";i++){" "sk(g[i],i);" // Set GPIO "}"; +#elif defined(CONFIG_IDF_TARGET_ESP32S2) +const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = + "j=0;" + "for(i=0;i<" STR(MAX_USER_PINS) ";i++){" // Skip 22-32 + "if(22==i){j=33;}" + "sk(g[i],j);" // Set GPIO + "j++;" + "}"; #else // Now ESP32 and ESP8266 const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = "j=0;" @@ -1584,6 +1592,10 @@ void HandleTemplateConfiguration(void) { #if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 // ESP32C3 we always send all GPIOs, Flash are just hidden WSContentSend_P(PSTR("%s%d"), (i>0)?",":"", template_gp.io[i]); +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + if (!FlashPin(i)) { + WSContentSend_P(PSTR("%s%d"), (i>0)?",":"", template_gp.io[i]); + } #else if (!FlashPin(i)) { WSContentSend_P(PSTR("%s%d"), (i>0)?",":"", template_gp.io[i]); @@ -1636,7 +1648,7 @@ void HandleTemplateConfiguration(void) { hidden ? PSTR(" hidden") : "", RedPin(i) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? PSTR(" style='width:146px'") : "", i, i); WSContentSend_P(PSTR(""), i); -#else +#else // also works for ESP32S2 if (!FlashPin(i)) { WSContentSend_P(PSTR("" D_GPIO "%d"), RedPin(i) ? WebColor(COL_TEXT_WARNING) : WebColor(COL_TEXT), i, (0==i) ? PSTR(" style='width:146px'") : "", i, i); @@ -1682,6 +1694,10 @@ void TemplateSaveSettings(void) { for (uint32_t i = 0; i < nitems(Settings->user_template.gp.io); i++) { #if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 snprintf_P(command, sizeof(command), PSTR("%s%s%d"), command, (i>0)?",":"", WebGetGpioArg(i)); +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + if (22 == i) { j = 33; } // skip 22-32 + snprintf_P(command, sizeof(command), PSTR("%s%s%d"), command, (i>0)?",":"", WebGetGpioArg(j)); + j++; #else if (6 == i) { j = 9; } if (8 == i) { j = 12; } From 75ec8816f6202ab995183ad6402b7d20fd70f06d Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 4 Sep 2021 14:56:09 +0200 Subject: [PATCH 150/317] Fix LVGO color names --- tasmota/berry/examples/watch_renaissance/autoexec.be | 4 ++-- tasmota/berry/lvgl_examples/drawing_2.be | 10 +++++----- tasmota/berry/lvgl_examples/lvgl_demo.be | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tasmota/berry/examples/watch_renaissance/autoexec.be b/tasmota/berry/examples/watch_renaissance/autoexec.be index 37adda377..6acdc8860 100644 --- a/tasmota/berry/examples/watch_renaissance/autoexec.be +++ b/tasmota/berry/examples/watch_renaissance/autoexec.be @@ -11,13 +11,13 @@ lv.start() scr = lv.scr_act() -scr.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.BLACK)) +scr.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) ren_back = lv_img(scr) ren_back.set_src("A:/watch_ren_back_240.png") ren_back.align(0, lv.ALIGN_CENTER, 0, 0) ren_day = lv_label(ren_back) -ren_day.set_style_local_text_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.BLACK)) +ren_day.set_style_local_text_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) ren_day.set_long_mode(lv.LABEL_LONG_CROP) ren_day.set_align(lv.LABEL_ALIGN_CENTER) ren_day.set_text("") diff --git a/tasmota/berry/lvgl_examples/drawing_2.be b/tasmota/berry/lvgl_examples/drawing_2.be index 8903b389d..94cdcb9af 100644 --- a/tasmota/berry/lvgl_examples/drawing_2.be +++ b/tasmota/berry/lvgl_examples/drawing_2.be @@ -16,13 +16,13 @@ mask_map.resize(MASK_WIDTH * MASK_HEIGHT * 4) # Create a "8 bit alpha" canvas and clear it canvas = lv_canvas(lv.scr_act()) canvas.set_buffer(mask_map, MASK_WIDTH, MASK_HEIGHT, lv.IMG_CF_ALPHA_8BIT) -canvas.fill_bg(lv_color(lv.BLACK), lv.OPA_TRANSP) -canvas.fill_bg(lv_color(lv.BLACK), lv.OPA_50) +canvas.fill_bg(lv_color(lv.COLOR_BLACK), lv.OPA_TRANSP) +canvas.fill_bg(lv_color(lv.COLOR_BLACK), lv.OPA_50) # Draw a label to the canvas. The result "image" will be used as mask label_dsc = lv_draw_label_dsc() lv.draw_label_dsc_init(label_dsc) -label_dsc.color = lv_color(lv.WHITE) +label_dsc.color = lv_color(lv.COLOR_WHITE) canvas.draw_text(5, 5, MASK_WIDTH, label_dsc, "Text with gradient", lv.LABEL_ALIGN_CENTER) # The mask is read, the canvas is not required anymore @@ -46,8 +46,8 @@ om.add_mask(m) # Create a style with gradient style_bg = lv_style() style_bg.set_bg_opa(lv.STATE_DEFAULT, lv.OPA_COVER) -style_bg.set_bg_color(lv.STATE_DEFAULT, lv_color(lv.RED)) -style_bg.set_bg_grad_color(lv.STATE_DEFAULT, lv_color(lv.BLUE)) +style_bg.set_bg_color(lv.STATE_DEFAULT, lv_color(lv.COLOR_RED)) +style_bg.set_bg_grad_color(lv.STATE_DEFAULT, lv_color(lv.COLOR_BLUE)) style_bg.set_bg_grad_dir(lv.STATE_DEFAULT, lv.GRAD_DIR_HOR) # Create and object with the gradient style on the object mask. diff --git a/tasmota/berry/lvgl_examples/lvgl_demo.be b/tasmota/berry/lvgl_examples/lvgl_demo.be index b3ff41869..823f3b472 100644 --- a/tasmota/berry/lvgl_examples/lvgl_demo.be +++ b/tasmota/berry/lvgl_examples/lvgl_demo.be @@ -59,7 +59,7 @@ log.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, log_height+1) bars = lv_wifi_bars(log) -bars.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.BLACK)) +bars.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) bars.set_height(log_height) bars.set_width(log_height) From e357f3aa7515144dc5bef214819576e980dd0d41 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 4 Sep 2021 15:07:03 +0200 Subject: [PATCH 151/317] USE_BERRY_PSRAM as default --- tasmota/my_user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 6f0378fc7..0bf113f9e 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -979,7 +979,7 @@ //#define USE_WEBCAM // Add support for webcam #define USE_BERRY // Enable Berry scripting language -//#define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact + #define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact #define USE_WEBCLIENT // Enable `webclient` to make HTTP/HTTPS requests. Can be disabled for security reasons. // #define USE_WEBCLIENT_HTTPS // Enable HTTPS outgoing requests based on BearSSL (much ligher then mbedTLS, 42KB vs 150KB) in insecure mode (no verification of server's certificate) // Note that only one cipher is enabled: ECDHE_RSA_WITH_AES_128_GCM_SHA256 which is very commonly used and highly secure From 2b9828ab35eabbc128fb63c32c7db57b1ea4c2a8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 4 Sep 2021 15:10:18 +0200 Subject: [PATCH 152/317] redundant removed since it is default --- tasmota/tasmota_configurations_ESP32.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index c25f42de9..d272028e9 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -58,10 +58,6 @@ #define USE_ODROID_GO // Add support for Odroid Go #define USE_SDCARD -#ifdef USE_BERRY // Berry scripting language - #define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact -#endif - #define USE_ADC #define USE_SPI #define USE_DISPLAY // Add SPI Display Support (+2k code) From 745c7092492bb29bd6b59bdef5627ebdb7b38b0f Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sat, 4 Sep 2021 15:11:40 +0200 Subject: [PATCH 153/317] core2 too --- tasmota/tasmota_configurations_ESP32.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index d272028e9..2913667b0 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -88,10 +88,6 @@ #define USE_I2S_WEBRADIO #define USE_SDCARD -#ifdef USE_BERRY // Berry scripting language - #define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact -#endif - #define USE_I2C #define USE_BMA423 #define USE_MPU_ACCEL From 53ac07baa95821999f2a4b510c9d7f46362e6793 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Sun, 5 Sep 2021 12:24:54 +0200 Subject: [PATCH 154/317] shutter: fixed stepper wrong position #12849 follow up Position was wrongly calculated on emergency stop --- tasmota/xdrv_27_shutter.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index f5614d276..3431cb7d8 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -1084,7 +1084,7 @@ void CmndShutterPosition(void) } int8_t new_shutterdirection = Shutter[index].real_position < Shutter[index].target_position ? 1 : -1; if (Shutter[index].direction == -new_shutterdirection) { - Shutter[index].start_position = Shutter[index].target_position; + Shutter[index].target_position = Shutter[index].start_position; ShutterPowerOff(index); } if (Shutter[index].direction != new_shutterdirection) { From b58958b8c603e5303fd855221da695548789fa2c Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 5 Sep 2021 19:43:53 +0200 Subject: [PATCH 155/317] ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) --- CHANGELOG.md | 1 + tasmota/support.ino | 27 ++++++--- tasmota/tasmota_template.h | 109 +++++++++++++++++++++------------- tasmota/xdrv_01_webserver.ino | 14 ++++- 4 files changed, 99 insertions(+), 52 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 588ce7715..3dfd6e705 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file. - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) - Berry class ``webclient`` for HTTP/HTTPS requests - Support for ESP32S2 GPIOs +- ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/tasmota/support.ino b/tasmota/support.ino index d3dea0732..3c792c84e 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1541,6 +1541,11 @@ void GetInternalTemplate(void* ptr, uint32_t module, uint32_t option) { } #endif // ESP8266 +#ifdef CONFIG_IDF_TARGET_ESP32 +// Conversion table from gpio template to physical gpio +const uint8_t Esp32TemplateToPhy[MAX_USER_PINS] = { ESP32_TEMPLATE_TO_PHY }; +#endif // CONFIG_IDF_TARGET_ESP32 + void TemplateGpios(myio *gp) { uint16_t *dest = (uint16_t *)gp; @@ -1561,6 +1566,7 @@ void TemplateGpios(myio *gp) // AddLogBuffer(LOG_LEVEL_DEBUG, (uint8_t *)&src, sizeof(mycfgio)); + // Expand template to physical GPIO array, j=phy_GPIO, i=template_GPIO uint32_t j = 0; for (uint32_t i = 0; i < nitems(Settings->user_template.gp.io); i++) { #if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 @@ -1569,7 +1575,9 @@ void TemplateGpios(myio *gp) if (22 == i) { j = 33; } // skip 22-32 dest[j] = src[i]; j++; -#else +#elif defined(CONFIG_IDF_TARGET_ESP32) + dest[Esp32TemplateToPhy[i]] = src[i]; +#else // ESP8266 if (6 == i) { j = 9; } if (8 == i) { j = 12; } dest[j] = src[i]; @@ -1629,7 +1637,9 @@ bool FlashPin(uint32_t pin) return (pin > 10) && (pin < 18); // ESP32C3 has GPIOs 11-17 reserved for Flash #elif defined(CONFIG_IDF_TARGET_ESP32S2) return (pin > 21) && (pin < 33); // ESP32S2 skip 22-32 -#else // ESP32 and ESP8266 +#elif defined(CONFIG_IDF_TARGET_ESP32) + return (pin >= 28) && (pin <= 31); // ESP21 skip 28-31 +#else // ESP8266 return (((pin > 5) && (pin < 9)) || (11 == pin)); #endif } @@ -1640,15 +1650,12 @@ bool RedPin(uint32_t pin) // pin may be dangerous to change, display in RED in t return false; // no red pin on ESP32C3 #elif defined(CONFIG_IDF_TARGET_ESP32S2) return false; // no red pin on ESP32S3 -#else // ESP32 and ESP8266 - -#ifdef CONFIG_IDF_TARGET_ESP32 - return (16==pin)||(17==pin)||(9==pin)||(10==pin); -#else +#elif defined(CONFIG_IDF_TARGET_ESP32) // red pins are 6-11 for original ESP32, other models like PICO are not impacted if flash pins are condfigured + // PICO can also have 16/17/18/23 not available + return ((6<=pin) && (11>=pin)) || (16==pin) || (17==pin); // TODO adapt depending on the exact type of ESP32 +#else // ESP8266 return (9==pin)||(10==pin); #endif - -#endif } uint32_t ValidPin(uint32_t pin, uint32_t gpio) { @@ -1660,6 +1667,8 @@ uint32_t ValidPin(uint32_t pin, uint32_t gpio) { // ignore #elif defined(CONFIG_IDF_TARGET_ESP32S2) // ignore +#elif defined(CONFIG_IDF_TARGET_ESP32) +// ignore #else // not ESP32C3 and not ESP32S2 if ((WEMOS == Settings->module) && !Settings->flag3.user_esp8285_enable) { // SetOption51 - Enable ESP8285 user GPIO's if ((9 == pin) || (10 == pin)) { diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index 63e77ae70..e5af29d0c 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -997,6 +997,9 @@ typedef struct MYTMPLT8266 { #ifdef ESP32 #ifdef CONFIG_IDF_TARGET_ESP32C3 +/* **************************************** + * ESP32C3 + * ****************************************/ #define MAX_GPIO_PIN 22 // Number of supported GPIO #define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO11 to 17) #define MAX_USER_PINS 22 // MAX_GPIO_PIN - MIN_FLASH_PINS @@ -1007,6 +1010,9 @@ const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOIOIOIOIOIOFLFLFLFLFLFLFLIOIORXTX" #elif defined(CONFIG_IDF_TARGET_ESP32S2) +/* **************************************** + * ESP32S2 + * ****************************************/ #define MAX_GPIO_PIN 47 // Number of supported GPIO #define MIN_FLASH_PINS 11 // Number of flash chip pins unusable for configuration (22-25 don't exist, 26-32 for SPI) #define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS @@ -1017,13 +1023,34 @@ const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOAOIO- #else // not CONFIG_IDF_TARGET_ESP32C3 nor CONFIG_IDF_TARGET_ESP32S2 - ESP32 +/* **************************************** + * ESP32 - including Pico + * + * The initial template was 0-5 9-10 12-39 + * New template covers 0-27 32-39 + * However to maintain backwards compatibility, the following mapping occures + * Template GPIO | Phyiscal GPIO + * 28 | 6 + * 29 | 7 + * 30 | 8 + * 31 | 11 + * ****************************************/ +// Conversion table +#define ESP32_TEMPLATE_TO_PHY \ + 0, 1, 2, 3, 4, 5, \ + 9, 10, \ + 12, 13, 14, 15, 16, 17, 18, 19, \ + 20, 21, 22, 23, 24, 25, 26, 27, \ + 6, 7, 8, 11, /* 28-31 */ \ + 32, 33, 34, 35, 36, 37, 38, 39 + #define MAX_GPIO_PIN 40 // Number of supported GPIO #define MIN_FLASH_PINS 4 // Number of flash chip pins unusable for configuration (GPIO6, 7, 8 and 11) #define MAX_USER_PINS 36 // MAX_GPIO_PIN - MIN_FLASH_PINS #define WEMOS_MODULE 0 // Wemos module // 0 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839 -const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOflashcFLFLolIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOAOAOIAIAIAIAIAIA"; +const char PINS_WEMOS[] PROGMEM = "IOTXIORXIOIOFLFLFLFLFLFLIOIOIOIOIOIOIOIOIOIOIOIOIOIOIOIO--------AOAOIAIAIAIAIAIA"; #endif // ESP32/S2/C3 selection #endif // ESP32 @@ -2692,12 +2719,12 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER AGPIO(GPIO_USER), // 5 IO GPIO5, VSPICS0, HS1_DATA6, EMAC_RX_CLK - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 + // 6 IO Remapped to 28 + // 7 IO Remapped to 29 + // 8 IO Remapped to 30 AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD - // 11 IO GPIO11, Flash CMD + // 11 IO Remapped to 31 AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 @@ -2714,10 +2741,10 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 + 0, // 6 IO GPIO6, Flash CLK + 0, // 7 IO GPIO7, Flash D0 + 0, // 8 IO GPIO8, Flash D1 + 0, // 11 IO GPIO11, Flash CMD AGPIO(GPIO_USER), // 32 IO GPIO32, XTAL_32K_P (32.768 kHz crystal oscillator input), ADC1_CH4, TOUCH9, RTC_GPIO9 AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 @@ -2737,12 +2764,12 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 AGPIO(GPIO_PWM1), // 4 IO GPIO4, Flashlight AGPIO(GPIO_WEBCAM_DATA), // 5 IO GPIO5, CAM_DATA1 - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 + // 6 IO Remapped to 28 + // 7 IO Remapped to 29 + // 8 IO Remapped to 30 AGPIO(GPIO_USER), // 9 IO GPIO9, Flash D2, U1RXD AGPIO(GPIO_USER), // 10 IO GPIO10, Flash D3, U1TXD - // 11 IO GPIO11, Flash CMD + // 11 IO Remapped to 31 AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) AGPIO(GPIO_SDCARD_CS), // 13 IO GPIO13, VSPI_CS_TFLASH AGPIO(GPIO_SPI_CLK), // 14 IO GPIO14, VSPI_CLK @@ -2759,10 +2786,10 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_WEBCAM_VSYNC), // 25 IO GPIO25, CAM_VSYNC AGPIO(GPIO_WEBCAM_SIOD), // 26 IO GPIO26, CAM_SIOD AGPIO(GPIO_WEBCAM_SIOC), // 27 IO GPIO27, CAM_SIOC - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 + 0, // 6 IO GPIO6, Flash CLK + 0, // 7 IO GPIO7, Flash D0 + 0, // 8 IO GPIO8, Flash D1 + 0, // 11 IO GPIO11, Flash CMD AGPIO(GPIO_WEBCAM_PWDN), // 32 IO GPIO32, CAM_PWDN AGPIO(GPIO_USER), // 33 IO GPIO33, XTAL_32K_N (32.768 kHz crystal oscillator output), ADC1_CH5, TOUCH8, RTC_GPIO8 AGPIO(GPIO_WEBCAM_DATA) +6, // 34 I NO PULLUP GPIO34, CAM_DATA7 @@ -2783,12 +2810,12 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_RXD), // 3 IO RXD0 GPIO3, RXD0 AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER AGPIO(GPIO_ILI9341_CS), // 5 IO GPIO5, VSPI_CS0_LCD - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 + // 6 IO Remapped to 28 + // 7 IO Remapped to 29 + // 8 IO Remapped to 30 0, // 9 IO GPIO9, Flash D2, U1RXD 0, // 10 IO GPIO10, Flash D3, U1TXD - // 11 IO GPIO11, Flash CMD + // 11 IO Remapped to 31 AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) AGPIO(GPIO_KEY1) +1, // 13 IO GPIO13, BTN-MENU AGPIO(GPIO_PWM1), // 14 IO GPIO14, LCD Backlight @@ -2805,10 +2832,10 @@ const mytmplt kModules[] PROGMEM = { 0, // 25 IO GPIO25, DAC_1 (PAM8304A) 0, // 26 IO GPIO26, DAC_2 (PAM8304A) AGPIO(GPIO_KEY1) +2, // 27 IO GPIO27, BTN-SELECT - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 + 0, // 6 IO GPIO6, Flash CLK + 0, // 7 IO GPIO7, Flash D0 + 0, // 8 IO GPIO8, Flash D1 + 0, // 11 IO GPIO11, Flash CMD AGPIO(GPIO_SWT1) +4, // 32 IO GPIO32, BTN-A AGPIO(GPIO_SWT1) +5, // 33 IO GPIO33, BTN-B AGPIO(GPIO_ADC_JOY), // 34 I NO PULLUP GPIO34, JOY-X (LEFT-RIGHT) @@ -2834,12 +2861,12 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD, CLK_OUT2 AGPIO(GPIO_USER), // 4 IO GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER AGPIO(GPIO_USER), // 5 IO GPIO5, RXD Led green - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 + // 6 IO Remapped to 28 + // 7 IO Remapped to 29 + // 8 IO Remapped to 30 0, // 9 IO GPIO9, Flash D2, U1RXD 0, // 10 IO GPIO10, Flash D3, U1TXD - // 11 IO GPIO11, Flash CMD + // 11 IO Remapped to 31 AGPIO(GPIO_USER), // 12 (I)O GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 (If driven High, flash voltage (VDD_SDIO) is 1.8V not default 3.3V. Has internal pull-down, so unconnected = Low = 3.3V. May prevent flashing and/or booting if 3.3V flash is connected and pulled high. See ESP32 datasheet for more details.) 0, // 13 IO GPIO13, Ethernet EMAC_RX_ER AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 @@ -2856,10 +2883,10 @@ const mytmplt kModules[] PROGMEM = { 0, // 25 IO GPIO25, Ethernet EMAC_RXD0 0, // 26 IO GPIO26, Ethernet EMAC_RXD1 0, // 27 IO GPIO27, Ethernet EMAC_RX_DV - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 + 0, // 6 IO GPIO6, Flash CLK + 0, // 7 IO GPIO7, Flash D0 + 0, // 8 IO GPIO8, Flash D1 + 0, // 11 IO GPIO11, Flash CMD AGPIO(GPIO_USER), // 32 IO GPIO32, CFG AGPIO(GPIO_USER), // 33 IO GPIO33, 485_EN 0, // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 @@ -2885,12 +2912,12 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 3 IO RXD0 GPIO3, U0RXD AGPIO(GPIO_SDCARD_CS), // 4 IO GPIO4, SPI_CS_CARD AGPIO(GPIO_ILI9341_CS), // 5 IO GPIO5, SPI_CS_LCD - // 6 IO GPIO6, Flash CLK - // 7 IO GPIO7, Flash D0 - // 8 IO GPIO8, Flash D1 + // 6 IO Remapped to 28 + // 7 IO Remapped to 29 + // 8 IO Remapped to 30 0, // 9 IO GPIO9, Flash D2, PSRAM_D3 0, // 10 IO GPIO10, Flash D3, PSRAM_D2 - // 11 IO GPIO11, Flash CMD + // 11 IO Remapped to 31 0, // 12 (I)O GPIO12, SPKR_CLK AGPIO(GPIO_USER), // 13 IO GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER AGPIO(GPIO_USER), // 14 IO GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 @@ -2907,10 +2934,10 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 25 IO GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0 AGPIO(GPIO_USER), // 26 IO GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1 AGPIO(GPIO_USER), // 27 IO GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV - 0, // 28 - 0, // 29 - 0, // 30 - 0, // 31 + 0, // 6 IO GPIO6, Flash CLK + 0, // 7 IO GPIO7, Flash D0 + 0, // 8 IO GPIO8, Flash D1 + 0, // 11 IO GPIO11, Flash CMD AGPIO(GPIO_I2C_SDA), // 32 IO GPIO32, I2C_SDA AGPIO(GPIO_I2C_SCL), // 33 IO GPIO33, I2C_SCL AGPIO(GPIO_USER), // 34 I NO PULLUP GPIO34, ADC1_CH6, RTC_GPIO4 diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 097640562..9d7feaf9f 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -158,7 +158,15 @@ const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = "sk(g[i],j);" // Set GPIO "j++;" "}"; -#else // Now ESP32 and ESP8266 +#elif defined(CONFIG_IDF_TARGET_ESP32) +const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = + "j=0;" + "for(i=0;i<" STR(MAX_USER_PINS) ";i++){" // Skip 28-31 + "if(28==i){j=32;}" + "sk(g[i],j);" // Set GPIO + "j++;" + "}"; +#else // ESP8266 const char HTTP_SCRIPT_TEMPLATE2[] PROGMEM = "j=0;" "for(i=0;i<" STR(MAX_USER_PINS) ";i++){" // Supports 13 GPIOs @@ -1698,7 +1706,9 @@ void TemplateSaveSettings(void) { if (22 == i) { j = 33; } // skip 22-32 snprintf_P(command, sizeof(command), PSTR("%s%s%d"), command, (i>0)?",":"", WebGetGpioArg(j)); j++; -#else +#elif defined(CONFIG_IDF_TARGET_ESP32) + snprintf_P(command, sizeof(command), PSTR("%s%s%d"), command, (i>0)?",":"", WebGetGpioArg(Esp32TemplateToPhy[i])); +#else // ESP8266 if (6 == i) { j = 9; } if (8 == i) { j = 12; } snprintf_P(command, sizeof(command), PSTR("%s%s%d"), command, (i>0)?",":"", WebGetGpioArg(j)); From cf23dade9a86f0fdfb1320fff916e8e3d140db82 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 5 Sep 2021 20:46:12 +0200 Subject: [PATCH 156/317] Forgot flag in ESP32S2/C3 templates --- tasmota/tasmota_template.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index e5af29d0c..e38041af6 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -2559,6 +2559,7 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 19 IO GPIO19, USB_D+ AGPIO(GPIO_USER), // 20 IO RXD0 GPIO20, U0RXD AGPIO(GPIO_USER), // 21 IO TXD0 GPIO21, U0TXD + 0 // Flag }, }; @@ -2639,6 +2640,7 @@ const mytmplt kModules[] PROGMEM = { AGPIO(GPIO_USER), // 44 IO GPIO44, U0RXD AGPIO(GPIO_USER), // 45 IO GPIO45, Strapping AGPIO(GPIO_USER), // 46 I GPIO46, Input only, Strapping + 0 // Flag }, }; From 5ef1ec5d0d0fc5dad444a80e96a032a5c3487478 Mon Sep 17 00:00:00 2001 From: stefanbode Date: Sun, 5 Sep 2021 22:07:50 +0200 Subject: [PATCH 157/317] Update xdrv_27_shutter.ino #12849 Additional side effect correction --- tasmota/xdrv_27_shutter.ino | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index 3431cb7d8..ecac96197 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -431,7 +431,7 @@ void ShutterDecellerateForStop(uint8_t i) //prepare for stop PWM Shutter[i].accelerator = 0; Shutter[i].pwm_velocity = 0; - while (RtcSettings.pulse_counter[i] < (uint32_t)(Shutter[i].target_position-Shutter[i].start_position)*Shutter[i].direction*ShutterGlobal.open_velocity_max/RESOLUTION/STEPS_PER_SECOND) { + while (RtcSettings.pulse_counter[i] < (uint32_t)(Shutter[i].target_position-Shutter[i].start_position)*Shutter[i].direction*ShutterGlobal.open_velocity_max/RESOLUTION/STEPS_PER_SECOND && missing_steps > 0) { } analogWrite(Pin(GPIO_PWM1, i), 0); // removed with 8.3 because of reset caused by watchog Shutter[i].real_position = ShutterCalculatePosition(i); @@ -1084,7 +1084,6 @@ void CmndShutterPosition(void) } int8_t new_shutterdirection = Shutter[index].real_position < Shutter[index].target_position ? 1 : -1; if (Shutter[index].direction == -new_shutterdirection) { - Shutter[index].target_position = Shutter[index].start_position; ShutterPowerOff(index); } if (Shutter[index].direction != new_shutterdirection) { From 8217c1330a0a101df9f23c3db278a3d3d5aec4be Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 6 Sep 2021 14:45:10 +0200 Subject: [PATCH 158/317] Add Tuya Window Covering attributes --- tasmota/xdrv_23_zigbee_5__constants.ino | 122 +++++++++++++----------- tasmota/xdrv_23_zigbee_5_converters.ino | 5 + 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/tasmota/xdrv_23_zigbee_5__constants.ino b/tasmota/xdrv_23_zigbee_5__constants.ino index 0b5f025c5..eaec0d99d 100644 --- a/tasmota/xdrv_23_zigbee_5__constants.ino +++ b/tasmota/xdrv_23_zigbee_5__constants.ino @@ -444,6 +444,8 @@ const char Z_strings[] PROGMEM = "TuyaAwayTemp" "\x00" "TuyaBattery" "\x00" "TuyaBoostTime" "\x00" + "TuyaCalibration" "\x00" + "TuyaCalibrationTime" "\x00" "TuyaChildLock" "\x00" "TuyaComfortTemp" "\x00" "TuyaEcoTemp" "\x00" @@ -451,6 +453,8 @@ const char Z_strings[] PROGMEM = "TuyaForceMode" "\x00" "TuyaMaxTemp" "\x00" "TuyaMinTemp" "\x00" + "TuyaMotorReversal" "\x00" + "TuyaMovingState" "\x00" "TuyaPreset" "\x00" "TuyaScheduleHolidays" "\x00" "TuyaScheduleWorkdays" "\x00" @@ -873,63 +877,67 @@ enum Z_offsets { Zo_TuyaAwayTemp = 5754, Zo_TuyaBattery = 5767, Zo_TuyaBoostTime = 5779, - Zo_TuyaChildLock = 5793, - Zo_TuyaComfortTemp = 5807, - Zo_TuyaEcoTemp = 5823, - Zo_TuyaFanMode = 5835, - Zo_TuyaForceMode = 5847, - Zo_TuyaMaxTemp = 5861, - Zo_TuyaMinTemp = 5873, - Zo_TuyaPreset = 5885, - Zo_TuyaScheduleHolidays = 5896, - Zo_TuyaScheduleWorkdays = 5917, - Zo_TuyaTempTarget = 5938, - Zo_TuyaValveDetection = 5953, - Zo_TuyaValvePosition = 5972, - Zo_TuyaWeekSelect = 5990, - Zo_TuyaWindowDetection = 6005, - Zo_UnoccupiedCoolingSetpoint = 6025, - Zo_UnoccupiedHeatingSetpoint = 6051, - Zo_UtilityName = 6077, - Zo_ValidUntilTime = 6089, - Zo_ValvePosition = 6104, - Zo_VelocityLift = 6118, - Zo_ViewGroup = 6131, - Zo_ViewScene = 6141, - Zo_Water = 6151, - Zo_WhitePointX = 6157, - Zo_WhitePointY = 6169, - Zo_WindowCoveringType = 6181, - Zo_X = 6200, - Zo_Y = 6202, - Zo_ZCLVersion = 6204, - Zo_ZoneState = 6215, - Zo_ZoneStatus = 6225, - Zo_ZoneStatusChange = 6236, - Zo_ZoneType = 6253, - Zo__ = 6262, - Zo_xx = 6264, - Zo_xx000A00 = 6267, - Zo_xx0A = 6276, - Zo_xx0A00 = 6281, - Zo_xx19 = 6288, - Zo_xx190A = 6293, - Zo_xx190A00 = 6300, - Zo_xxxx = 6309, - Zo_xxxx00 = 6314, - Zo_xxxx0A00 = 6321, - Zo_xxxxyy = 6330, - Zo_xxxxyyyy = 6337, - Zo_xxxxyyyy0A00 = 6346, - Zo_xxxxyyzz = 6359, - Zo_xxyy = 6368, - Zo_xxyy0A00 = 6373, - Zo_xxyyyy = 6382, - Zo_xxyyyy000000000000 = 6389, - Zo_xxyyyy0A0000000000 = 6408, - Zo_xxyyyyzz = 6427, - Zo_xxyyyyzzzz = 6436, - Zo_xxyyzzzz = 6447, + Zo_TuyaCalibration = 5793, + Zo_TuyaCalibrationTime = 5809, + Zo_TuyaChildLock = 5829, + Zo_TuyaComfortTemp = 5843, + Zo_TuyaEcoTemp = 5859, + Zo_TuyaFanMode = 5871, + Zo_TuyaForceMode = 5883, + Zo_TuyaMaxTemp = 5897, + Zo_TuyaMinTemp = 5909, + Zo_TuyaMotorReversal = 5921, + Zo_TuyaMovingState = 5939, + Zo_TuyaPreset = 5955, + Zo_TuyaScheduleHolidays = 5966, + Zo_TuyaScheduleWorkdays = 5987, + Zo_TuyaTempTarget = 6008, + Zo_TuyaValveDetection = 6023, + Zo_TuyaValvePosition = 6042, + Zo_TuyaWeekSelect = 6060, + Zo_TuyaWindowDetection = 6075, + Zo_UnoccupiedCoolingSetpoint = 6095, + Zo_UnoccupiedHeatingSetpoint = 6121, + Zo_UtilityName = 6147, + Zo_ValidUntilTime = 6159, + Zo_ValvePosition = 6174, + Zo_VelocityLift = 6188, + Zo_ViewGroup = 6201, + Zo_ViewScene = 6211, + Zo_Water = 6221, + Zo_WhitePointX = 6227, + Zo_WhitePointY = 6239, + Zo_WindowCoveringType = 6251, + Zo_X = 6270, + Zo_Y = 6272, + Zo_ZCLVersion = 6274, + Zo_ZoneState = 6285, + Zo_ZoneStatus = 6295, + Zo_ZoneStatusChange = 6306, + Zo_ZoneType = 6323, + Zo__ = 6332, + Zo_xx = 6334, + Zo_xx000A00 = 6337, + Zo_xx0A = 6346, + Zo_xx0A00 = 6351, + Zo_xx19 = 6358, + Zo_xx190A = 6363, + Zo_xx190A00 = 6370, + Zo_xxxx = 6379, + Zo_xxxx00 = 6384, + Zo_xxxx0A00 = 6391, + Zo_xxxxyy = 6400, + Zo_xxxxyyyy = 6407, + Zo_xxxxyyyy0A00 = 6416, + Zo_xxxxyyzz = 6429, + Zo_xxyy = 6438, + Zo_xxyy0A00 = 6443, + Zo_xxyyyy = 6452, + Zo_xxyyyy000000000000 = 6459, + Zo_xxyyyy0A0000000000 = 6478, + Zo_xxyyyyzz = 6497, + Zo_xxyyyyzzzz = 6506, + Zo_xxyyzzzz = 6517, }; diff --git a/tasmota/xdrv_23_zigbee_5_converters.ino b/tasmota/xdrv_23_zigbee_5_converters.ino index 567e7dc0b..494d26fb8 100644 --- a/tasmota/xdrv_23_zigbee_5_converters.ino +++ b/tasmota/xdrv_23_zigbee_5_converters.ino @@ -448,6 +448,11 @@ const Z_AttributeConverter Z_PostProcess[] PROGMEM = { { Zmap8, Cx0102, 0x0017, Z_(Mode), Cm1, 0 }, { Zoctstr, Cx0102, 0x0018, Z_(IntermediateSetpointsLift),Cm1, 0 }, { Zoctstr, Cx0102, 0x0019, Z_(IntermediateSetpointsTilt),Cm1, 0 }, + // Tuya specific, from Zigbee2MQTT https://github.com/Koenkk/zigbee-herdsman/blob/4fed7310d1e1e9d81e5148cf5b4d8ec98d03c687/src/zcl/definition/cluster.ts#L1772 + { Zenum8, Cx0102, 0xF000, Z_(TuyaMovingState),Cm1, 0 }, + { Zenum8, Cx0102, 0xF001, Z_(TuyaCalibration),Cm1, 0 }, + { Zenum8, Cx0102, 0xF002, Z_(TuyaMotorReversal),Cm1, 0 }, + { Zuint16, Cx0102, 0xF003, Z_(TuyaCalibrationTime),Cm1, 0 }, // Thermostat { Zint16, Cx0201, 0x0000, Z_(LocalTemperature), Cm_100, Z_MAPPING(Z_Data_Thermo, temperature) }, From 2815211321dee5ae8dcfc01529ec906eed9c9ad6 Mon Sep 17 00:00:00 2001 From: Ajith Vasudevan Date: Mon, 6 Sep 2021 19:26:01 +0530 Subject: [PATCH 159/317] Enhanced 7-Segment command DisplayScrollText for indefinite as well as finite scrolling --- tasmota/xdsp_15_tm1637.ino | 46 +++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/tasmota/xdsp_15_tm1637.ino b/tasmota/xdsp_15_tm1637.ino index 038698f3c..96aabe861 100644 --- a/tasmota/xdsp_15_tm1637.ino +++ b/tasmota/xdsp_15_tm1637.ino @@ -120,9 +120,10 @@ - DisplayScrollText text + DisplayScrollText text [, num_loops] - Displays scrolling text. + Displays scrolling text indefinitely, until another Display- command (other than DisplayScrollText + or DisplayScrollDelay is issued). Optionally, stop scrolling after num_loops iterations. @@ -189,6 +190,8 @@ struct uint8_t scroll_delay = 4; uint8_t scroll_index = 0; uint8_t iteration = 0; + uint8_t scroll_counter = 0; + uint8_t scroll_counter_max = 3; uint8_t display_type = TM1637; uint8_t digit_order[6] = { 0, 1, 2, 3, 4, 5 }; @@ -560,9 +563,27 @@ void TM1637ClearDisplay(void) bool CmndTM1637ScrollText(void) { - AddLog(LOG_LEVEL_DEBUG, PSTR("TM7: Text %s"), XdrvMailbox.data); + char sString[SCROLL_MAX_LEN + 1]; + char sMaxLoopCount[CMD_MAX_LEN]; + uint8_t maxLoopCount = 0; - if (XdrvMailbox.data_len > SCROLL_MAX_LEN) + switch (ArgC()) + { + case 2: + subStr(sMaxLoopCount, XdrvMailbox.data, ",", 2); + maxLoopCount = atoi(sMaxLoopCount); + case 1: + subStr(sString, XdrvMailbox.data, ",", 1); + } + + if (maxLoopCount < 0) + maxLoopCount = 0; + + AddLog(LOG_LEVEL_DEBUG, PSTR("TM7: sString %s, maxLoopCount %d"), sString, maxLoopCount); + + TM1637Data.scroll_counter_max = maxLoopCount; + + if (strlen(sString) > SCROLL_MAX_LEN) { snprintf(TM1637Data.msg, sizeof(TM1637Data.msg), PSTR("Text too long. Length should be less than %d"), SCROLL_MAX_LEN); XdrvMailbox.data = TM1637Data.msg; @@ -570,11 +591,12 @@ bool CmndTM1637ScrollText(void) } else { - snprintf(TM1637Data.scroll_text, sizeof(TM1637Data.scroll_text), PSTR(" ")); - snprintf(TM1637Data.scroll_text, sizeof(TM1637Data.scroll_text), PSTR("%s"), XdrvMailbox.data); - TM1637Data.scroll_text[XdrvMailbox.data_len] = 0; + snprintf(TM1637Data.scroll_text, sizeof(TM1637Data.scroll_text), PSTR(" ")); + snprintf(TM1637Data.scroll_text, Settings->display_width + sizeof(TM1637Data.scroll_text), PSTR(" %s"), &sString); + TM1637Data.scroll_text[strlen(sString) + Settings->display_width] = 0; TM1637Data.scroll_index = 0; TM1637Data.scroll = true; + TM1637Data.scroll_counter = 0; return true; } } @@ -601,6 +623,7 @@ bool CmndTM1637ScrollDelay(void) \*********************************************************************************************/ void TM1637ScrollText(void) { + if(!TM1637Data.scroll) return; TM1637Data.iteration++; if (TM1637Data.scroll_delay) TM1637Data.iteration = TM1637Data.iteration % TM1637Data.scroll_delay; @@ -611,9 +634,12 @@ void TM1637ScrollText(void) if (TM1637Data.scroll_index > strlen(TM1637Data.scroll_text)) { - TM1637Data.scroll = false; TM1637Data.scroll_index = 0; - return; + TM1637Data.scroll_counter++; + if(TM1637Data.scroll_counter_max != 0 && (TM1637Data.scroll_counter >= TM1637Data.scroll_counter_max)) { + TM1637Data.scroll = false; + return; + } } uint8_t rawBytes[1]; for (uint32_t i = 0, j = TM1637Data.scroll_index; i < 1 + strlen(TM1637Data.scroll_text); i++, j++) @@ -1022,7 +1048,7 @@ void TM1637ShowTime() bool TM1637MainFunc(uint8_t fn) { bool result = false; - + if(fn != FUNC_DISPLAY_SCROLLDELAY) TM1637Data.scroll = false; if (XdrvMailbox.data_len > CMD_MAX_LEN) { Response_P(PSTR("{\"Error\":\"Command text too long. Please limit it to %d characters\"}"), CMD_MAX_LEN); From 018337655519cdb68cb714483f21febad1931a3d Mon Sep 17 00:00:00 2001 From: Simon Hailes Date: Mon, 6 Sep 2021 18:52:20 +0100 Subject: [PATCH 160/317] use type SemaphoreHandle_t where TasAutoMutex is used to silence new compiler warnings --- tasmota/support.ino | 18 +++++++++--------- tasmota/xsns_62_esp32_mi_ble.ino | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index 3c792c84e..fad51a83e 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -136,20 +136,20 @@ class TasAutoMutex { int maxWait; const char *name; public: - TasAutoMutex(void ** mutex, const char *name = "", int maxWait = 40, bool take=true); + TasAutoMutex(SemaphoreHandle_t* mutex, const char *name = "", int maxWait = 40, bool take=true); ~TasAutoMutex(); void give(); void take(); - static void init(void ** ptr); + static void init(SemaphoreHandle_t* ptr); }; ////////////////////////////////////////// -TasAutoMutex::TasAutoMutex(void **mutex, const char *name, int maxWait, bool take) { +TasAutoMutex::TasAutoMutex(SemaphoreHandle_t*mutex, const char *name, int maxWait, bool take) { if (mutex) { if (!(*mutex)){ TasAutoMutex::init(mutex); } - this->mutex = (SemaphoreHandle_t)*mutex; + this->mutex = *mutex; this->maxWait = maxWait; this->name = name; if (take) { @@ -172,9 +172,9 @@ TasAutoMutex::~TasAutoMutex() { } } -void TasAutoMutex::init(void ** ptr) { +void TasAutoMutex::init(SemaphoreHandle_t* ptr) { SemaphoreHandle_t mutex = xSemaphoreCreateRecursiveMutex(); - (*ptr) = (void *) mutex; + (*ptr) = mutex; // needed, else for ESP8266 as we will initialis more than once in logging // (*ptr) = (void *) 1; } @@ -2327,7 +2327,7 @@ bool NeedLogRefresh(uint32_t req_loglevel, uint32_t index) { #ifdef ESP32 // this takes the mutex, and will be release when the class is destroyed - // i.e. when the functon leaves You CAN call mutex.give() to leave early. - TasAutoMutex mutex(&TasmotaGlobal.log_buffer_mutex); + TasAutoMutex mutex((SemaphoreHandle_t *)&TasmotaGlobal.log_buffer_mutex); #endif // ESP32 // Skip initial buffer fill @@ -2349,7 +2349,7 @@ bool GetLog(uint32_t req_loglevel, uint32_t* index_p, char** entry_pp, size_t* l #ifdef ESP32 // this takes the mutex, and will be release when the class is destroyed - // i.e. when the functon leaves You CAN call mutex.give() to leave early. - TasAutoMutex mutex(&TasmotaGlobal.log_buffer_mutex); + TasAutoMutex mutex((SemaphoreHandle_t *)&TasmotaGlobal.log_buffer_mutex); #endif // ESP32 if (!index) { // Dump all @@ -2396,7 +2396,7 @@ void AddLogData(uint32_t loglevel, const char* log_data, const char* log_data_pa #ifdef ESP32 // this takes the mutex, and will be release when the class is destroyed - // i.e. when the functon leaves You CAN call mutex.give() to leave early. - TasAutoMutex mutex(&TasmotaGlobal.log_buffer_mutex); + TasAutoMutex mutex((SemaphoreHandle_t *)&TasmotaGlobal.log_buffer_mutex); #endif // ESP32 char mxtime[14]; // "13:45:21.999 " diff --git a/tasmota/xsns_62_esp32_mi_ble.ino b/tasmota/xsns_62_esp32_mi_ble.ino index 635204cb0..a0f0f0d31 100644 --- a/tasmota/xsns_62_esp32_mi_ble.ino +++ b/tasmota/xsns_62_esp32_mi_ble.ino @@ -343,7 +343,7 @@ std::vector MIBLEsensors; std::vector MIBLEbindKeys; std::vector MIBLEBlockList; -void *slotmutex = nullptr; +SemaphoreHandle_t slotmutex = (SemaphoreHandle_t) nullptr; /*********************************************************************************************\ * constants From 439ff99962993451cf2903212b6d4ce38c0d6ee0 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 6 Sep 2021 21:00:36 +0200 Subject: [PATCH 161/317] No cxx compile flag script --- platformio_tasmota_cenv_sample.ini | 2 -- 1 file changed, 2 deletions(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 7fd6a3d9f..e48875231 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -90,8 +90,6 @@ build_flags = ${env:tasmota32_base.build_flags} -DUSE_BLE_ESP32 -DUSE_MI_ESP32 ;-DESP32_STAGE=true -extra_scripts = ${env:tasmota32_base.extra_scripts} - pre:pio-tools/cxx_flags.py lib_extra_dirs = lib/libesp32 lib/libesp32_div lib/libesp32_lvgl From e42915dd615fb81d54381f272d210d781d6fe2ae Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 6 Sep 2021 21:01:08 +0200 Subject: [PATCH 162/317] Delete cxx_flags.py --- pio-tools/cxx_flags.py | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 pio-tools/cxx_flags.py diff --git a/pio-tools/cxx_flags.py b/pio-tools/cxx_flags.py deleted file mode 100644 index 74cf99e7c..000000000 --- a/pio-tools/cxx_flags.py +++ /dev/null @@ -1,4 +0,0 @@ -Import("env") - -# General options that are passed to the C++ compiler -env.Append(CXXFLAGS=["-fpermissive"]) \ No newline at end of file From 6e1b775f28f6a4fc3539b9ba70927affa1a17b86 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 6 Sep 2021 23:12:39 +0200 Subject: [PATCH 163/317] LVGL update example to match doc --- tasmota/berry/lvgl_examples/lvgl_demo.be | 105 +++++++++++++---------- 1 file changed, 60 insertions(+), 45 deletions(-) diff --git a/tasmota/berry/lvgl_examples/lvgl_demo.be b/tasmota/berry/lvgl_examples/lvgl_demo.be index 823f3b472..6ec17bb7a 100644 --- a/tasmota/berry/lvgl_examples/lvgl_demo.be +++ b/tasmota/berry/lvgl_examples/lvgl_demo.be @@ -1,66 +1,81 @@ +#- start LVGL and init environment -# lv.start() -hres = lv.get_hor_res() -vres = lv.get_ver_res() +hres = lv.get_hor_res() # should be 320 +vres = lv.get_ver_res() # should be 240 -scr = lv.scr_act() -f20 = lv.montserrat_font(20) +scr = lv.scr_act() # default screean object +f20 = lv.montserrat_font(20) # load embedded Montserrat 20 +#- Background with a gradient from black #000000 (bottom) to dark blue #0000A0 (top) -# scr.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0x0000A0)) scr.set_style_local_bg_grad_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0x000000)) scr.set_style_local_bg_grad_dir(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv.GRAD_DIR_VER) -log = lv_label(scr) -if f20 != nil log.set_style_local_text_font(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, f20) end -log.set_long_mode(lv.LABEL_LONG_SROLL) -log.set_width(hres) -log.set_align(lv.LABEL_ALIGN_LEFT) -log.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0xD00000)) -log.set_style_local_bg_opa(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv.OPA_COVER) -log.set_style_local_text_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0xFFFFFF)) -log.set_text("Welcome to Tasmota") +#- Upper state line -# +stat_line = lv_label(scr) +if f20 != nil stat_line.set_style_local_text_font(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, f20) end +stat_line.set_long_mode(lv.LABEL_LONG_SROLL) # auto scrolling if text does not fit +stat_line.set_width(hres) +stat_line.set_align(lv.LABEL_ALIGN_LEFT) # align text left +stat_line.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0xD00000)) # background #000088 +stat_line.set_style_local_bg_opa(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv.OPA_COVER) # 100% background opacity +stat_line.set_style_local_text_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0xFFFFFF)) # text color #FFFFFF +stat_line.set_text("Welcome to Tasmota") +stat_line_height = stat_line.get_height() -tastyle = lv_style() -tastyle.set_bg_color(lv.STATE_DEFAULT, lv_color(0x1fa3ec)) -tastyle.set_border_color(lv.STATE_DEFAULT, lv_color(0x0000FF)) -tastyle.set_bg_color(lv.STATE_FOCUSED, lv_color(0x0000FF)) -tastyle.set_border_color(lv.STATE_FOCUSED, lv_color(0xFFFFFF)) -tastyle.set_text_color(lv.STATE_DEFAULT, lv_color(0xFFFFFF)) -tastyle.set_radius(lv.STATE_DEFAULT, 10) -tastyle.set_bg_opa(lv.STATE_DEFAULT, lv.OPA_COVER) -if f20 != nil tastyle.set_text_font(lv.STATE_DEFAULT, f20) end +#- display wifi strength indicator icon (for professionals ;) -# +stat_line.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, stat_line_height + 1) +wifi_bars = lv_wifi_bars(stat_line) +wifi_bars.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) +wifi_bars.set_height(stat_line_height) +wifi_bars.set_width(stat_line_height) +wifi_bars.set_x(stat_line.get_width() - stat_line_height) -prev_btn = lv_btn(scr) -prev_btn.set_pos(20,vres-40) -prev_btn.set_size(80, 30) -prev_btn.add_style(lv.OBJ_PART_MAIN, tastyle) -prev_label = lv_label(prev_btn) -prev_label.set_text("<") +#- create a style for the buttons -# +btn_style = lv_style() +btn_style.set_radius(lv.STATE_DEFAULT, 10) # radius of rounded corners +btn_style.set_bg_opa(lv.STATE_DEFAULT, lv.OPA_COVER) # 100% backgrond opacity +if f20 != nil btn_style.set_text_font(lv.STATE_DEFAULT, f20) end # set font to Montserrat 20 +btn_style.set_bg_color(lv.STATE_DEFAULT, lv_color(0x1fa3ec)) # background color #1FA3EC (Tasmota Blue) +btn_style.set_border_color(lv.STATE_DEFAULT, lv_color(0x0000FF)) # border color #0000FF +btn_style.set_text_color(lv.STATE_DEFAULT, lv_color(0xFFFFFF)) # text color white #FFFFFF -next_btn = lv_btn(scr) +#- create buttons -# +prev_btn = lv_btn(scr) # create button with main screen as parent +prev_btn.set_pos(20,vres-40) # position of button +prev_btn.set_size(80, 30) # size of button +prev_btn.add_style(lv.OBJ_PART_MAIN, btn_style) # style of button +prev_label = lv_label(prev_btn) # create a label as sub-object +prev_label.set_text("<") # set label text + +next_btn = lv_btn(scr) # right button next_btn.set_pos(220,vres-40) next_btn.set_size(80, 30) -next_btn.add_style(lv.OBJ_PART_MAIN, tastyle) +next_btn.add_style(lv.OBJ_PART_MAIN, btn_style) next_label = lv_label(next_btn) next_label.set_text(">") -home_btn = lv_btn(scr) +home_btn = lv_btn(scr) # center button home_btn.set_pos(120,vres-40) home_btn.set_size(80, 30) -home_btn.add_style(lv.OBJ_PART_MAIN, tastyle) +home_btn.add_style(lv.OBJ_PART_MAIN, btn_style) home_label = lv_label(home_btn) -home_label.set_text(lv.SYMBOL_OK) +home_label.set_text(lv.SYMBOL_OK) # set text as Home icon +#- callback function when a button is pressed, react to EVENT_CLICKED event -# +def btn_event_cb(o, event) + if lv.EVENT_CLICKED + var btn = "Unknown" + if o == prev_btn btn = "Prev" + elif o == next_btn btn = "Next" + elif o == home_btn btn = "Home" + end + print(btn, "button pressed") + end +end -log_height = log.get_height() - -# log.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) -log.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, log_height+1) - -bars = lv_wifi_bars(log) - -bars.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) - -bars.set_height(log_height) -bars.set_width(log_height) -bars.set_x(log.get_width() - log_height) +# associate callbacks to buttons +prev_btn.set_event_cb(btn_event_cb) +next_btn.set_event_cb(btn_event_cb) +home_btn.set_event_cb(btn_event_cb) \ No newline at end of file From 605f1f2d4b50fcaddf7eb421866fd674129ed54c Mon Sep 17 00:00:00 2001 From: Simon Hailes Date: Mon, 6 Sep 2021 22:23:03 +0100 Subject: [PATCH 164/317] change link displayed in TAS for MI BLE sensors which need a key to point to the new repo https://github.com/tasmota/ble_key_extractor/blob/gh-pages/index.html --- tasmota/xsns_62_esp32_mi_ble.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xsns_62_esp32_mi_ble.ino b/tasmota/xsns_62_esp32_mi_ble.ino index 635204cb0..3fa417c77 100644 --- a/tasmota/xsns_62_esp32_mi_ble.ino +++ b/tasmota/xsns_62_esp32_mi_ble.ino @@ -2389,7 +2389,7 @@ const char HTTP_MI32_LIGHT[] PROGMEM = "{s}%s" " Light" "{m}%d{e}"; // "http://127.0.0.1:8887/keys/TelinkFlasher.html?mac=%s&cb=http%%3A%%2F%%2F%s%%2Fmikey" // "\">%s{m} {e}"; const char HTTP_NEEDKEY[] PROGMEM = "{s}%s %s{m} {e}"; From 4a0788f33c3c4a5b3b249ad873a8e5584fc8df10 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Tue, 7 Sep 2021 17:44:02 +0200 Subject: [PATCH 165/317] Improve documentation of protocol format --- lib/lib_rf/rc-switch/src/RCSwitch.cpp | 51 ++++++++++++++++++++------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/lib/lib_rf/rc-switch/src/RCSwitch.cpp b/lib/lib_rf/rc-switch/src/RCSwitch.cpp index d222551b3..aed787bea 100644 --- a/lib/lib_rf/rc-switch/src/RCSwitch.cpp +++ b/lib/lib_rf/rc-switch/src/RCSwitch.cpp @@ -56,33 +56,58 @@ /* Protocol description format * - * {Pulse length, Preamble, Sync bit, "0" bit, "1" bit, Inverted Signal, Guard time} - * - * Pulse length: pulse duration Te in microseconds, - * example 350 - * Preamble: Alternating high and low levels - * {20, 1} means 20 alternations of 1 Te duration - * _ _ _ _ _ _ _ _ _ _ - * | |_| |_| |_| |_| |_| |_| |_| |_| |_| |_ - * Sync bit: Header and clock - * {1, 31} means 1 pulse long Te high and 31 low + * { + * Pulse length, + * + * PreambleFactor, + * Preamble {high,low}, + * + * HeaderFactor, + * Header {high,low}, + * + * "0" bit {high,low}, + * "1" bit {high,low}, + * + * Inverted Signal, + * Guard time + * } + * + * Pulse length: pulse duration (Te) in microseconds, + * for example 350 + * PreambleFactor: Number of high and low states to send + * (One pulse = 2 states, in orther words, number of pulses is + * ceil(PreambleFactor/2).) + * Preamble: Pulse shape which defines a preamble bit. + * Sent ceil(PreambleFactor/2) times. + * For example, {1, 2} with factor 3 would send + * _ _ + * | |__| |__ (each horizontal bar has a duration of Te, + * vertical bars are ignored) + * HeaderFactor: Number of times to send the header pulse. + * Header: Pulse shape which defines a header (or "sync"/"clock") pulse. + * {1, 31} means one pulse of duration 1 Te high and 31 Te low * _ * | |_______________________________ (don't count the vertical bars) + * * "0" bit: pulse shape defining a data bit, which is a logical "0" * {1, 3} means 1 pulse duration Te high level and 3 low * _ * | |___ + * * "1" bit: pulse shape that defines the data bit, which is a logical "1" * {3, 1} means 3 pulses with a duration of Te high level and 1 low * ___ * | |_ * - * (note: to form the state bit Z (Tri-State bit), these two codes are combined) + * (note: to form the state bit Z (Tri-State bit), two codes are combined) + * * Inverted Signal: Signal inversion - if true the signal is inverted * replacing high to low in a transmitted / received packet - * Guard time: Safety time, followed by the next preamble of the next packet - * for example 39 pulses of low duration Te + * Guard time: Separation time between two retries. It will be followed by the + * next preamble of the next packet. In number of Te. + * e.g. 39 pulses of duration Te low level */ + #if defined(ESP8266) || defined(ESP32) static const VAR_ISR_ATTR RCSwitch::Protocol proto[] = { #else From 70e11bd6a561fd50457244bb2ef4f6efc10b4478 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 7 Sep 2021 19:27:57 +0200 Subject: [PATCH 166/317] Berry add `math.atan2()` and change `list.find()` --- lib/libesp32/Berry/generate/be_const_strtab.h | 1 + .../Berry/generate/be_const_strtab_def.h | 5 ++- lib/libesp32/Berry/generate/be_fixed_math.h | 41 ++++++++++--------- lib/libesp32/Berry/src/be_listlib.c | 26 +++++++++--- lib/libesp32/Berry/src/be_mathlib.c | 14 +++++++ 5 files changed, 60 insertions(+), 27 deletions(-) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 19694bcc1..1f9279137 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -550,6 +550,7 @@ extern const bcstring be_const_str_SYMBOL_NEXT; extern const bcstring be_const_str_strftime; extern const bcstring be_const_str_import; extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_atan2; extern const bcstring be_const_str_tan; extern const bcstring be_const_str_CHANGE; extern const bcstring be_const_str_range; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 24b50ecd5..97afcd637 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -550,6 +550,7 @@ be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_st be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); be_define_const_str(import, "import", 288002260u, 66, 6, NULL); be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_tan); be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_range); be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); @@ -948,7 +949,7 @@ static const bstring* const m_string_table[] = { (const bstring *)&be_const_str_SYMBOL_NEXT, (const bstring *)&be_const_str_import, (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_tan, + (const bstring *)&be_const_str_atan2, (const bstring *)&be_const_str_CHANGE, (const bstring *)&be_const_str_SYMBOL_WIFI, NULL, @@ -1013,6 +1014,6 @@ static const bstring* const m_string_table[] = { static const struct bconststrtab m_const_string_table = { .size = 329, - .count = 658, + .count = 659, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_math.h b/lib/libesp32/Berry/generate/be_fixed_math.h index 028e6e006..473625f1c 100644 --- a/lib/libesp32/Berry/generate/be_fixed_math.h +++ b/lib/libesp32/Berry/generate/be_fixed_math.h @@ -1,35 +1,36 @@ #include "be_constobj.h" static be_define_const_map_slots(m_libmath_map) { - { be_const_key(tanh, 11), be_const_func(m_tanh) }, + { be_const_key(asin, 13), be_const_func(m_asin) }, { be_const_key(acos, -1), be_const_func(m_acos) }, - { be_const_key(pi, -1), be_const_real(M_PI) }, - { be_const_key(log10, -1), be_const_func(m_log10) }, - { be_const_key(deg, 18), be_const_func(m_deg) }, - { be_const_key(pow, -1), be_const_func(m_pow) }, - { be_const_key(asin, -1), be_const_func(m_asin) }, - { be_const_key(rad, -1), be_const_func(m_rad) }, - { be_const_key(ceil, 14), be_const_func(m_ceil) }, - { be_const_key(log, -1), be_const_func(m_log) }, - { be_const_key(imax, -1), be_const_int(M_IMAX) }, - { be_const_key(imin, 3), be_const_int(M_IMIN) }, - { be_const_key(cos, -1), be_const_func(m_cos) }, - { be_const_key(sin, -1), be_const_func(m_sin) }, - { be_const_key(exp, -1), be_const_func(m_exp) }, - { be_const_key(atan, 1), be_const_func(m_atan) }, - { be_const_key(tan, 7), be_const_func(m_tan) }, + { be_const_key(tanh, 5), be_const_func(m_tanh) }, + { be_const_key(atan2, -1), be_const_func(m_atan2) }, + { be_const_key(cos, 20), be_const_func(m_cos) }, + { be_const_key(pi, 24), be_const_real(M_PI) }, + { be_const_key(abs, 17), be_const_func(m_abs) }, + { be_const_key(sinh, -1), be_const_func(m_sinh) }, { be_const_key(srand, -1), be_const_func(m_srand) }, - { be_const_key(sqrt, -1), be_const_func(m_sqrt) }, - { be_const_key(abs, -1), be_const_func(m_abs) }, { be_const_key(cosh, -1), be_const_func(m_cosh) }, + { be_const_key(imax, 6), be_const_int(M_IMAX) }, { be_const_key(floor, -1), be_const_func(m_floor) }, + { be_const_key(log, -1), be_const_func(m_log) }, + { be_const_key(exp, 22), be_const_func(m_exp) }, + { be_const_key(imin, 9), be_const_int(M_IMIN) }, + { be_const_key(ceil, 1), be_const_func(m_ceil) }, + { be_const_key(sin, 12), be_const_func(m_sin) }, { be_const_key(rand, -1), be_const_func(m_rand) }, - { be_const_key(sinh, 4), be_const_func(m_sinh) }, + { be_const_key(pow, -1), be_const_func(m_pow) }, + { be_const_key(atan, -1), be_const_func(m_atan) }, + { be_const_key(sqrt, -1), be_const_func(m_sqrt) }, + { be_const_key(deg, -1), be_const_func(m_deg) }, + { be_const_key(log10, -1), be_const_func(m_log10) }, + { be_const_key(rad, -1), be_const_func(m_rad) }, + { be_const_key(tan, -1), be_const_func(m_tan) }, }; static be_define_const_map( m_libmath_map, - 24 + 25 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/src/be_listlib.c b/lib/libesp32/Berry/src/be_listlib.c index 3733c78c0..cc8c8d8d4 100644 --- a/lib/libesp32/Berry/src/be_listlib.c +++ b/lib/libesp32/Berry/src/be_listlib.c @@ -209,15 +209,31 @@ static int m_item(bvm *vm) static int m_find(bvm *vm) { + bbool found = bfalse; + int idx; be_getmember(vm, 1, ".p"); list_check_data(vm, 2); - if (be_isint(vm, 2)) { - be_pushvalue(vm, 2); - if (be_getindex(vm, -2)) { - be_return(vm); + list_check_ref(vm); + be_refpush(vm, 1); + be_pushiter(vm, -1); + for (idx=0; be_iter_hasnext(vm, -2); idx++) { + be_iter_next(vm, -2); + be_pushvalue(vm, 2); /* push needle to compare */ + if (be_iseq(vm)) { + found = btrue; + be_pop(vm, 2); + break; } + be_pop(vm, 2); + } + be_pop(vm, 1); /* pop iterator */ + be_refpop(vm); + if (found) { + be_pushint(vm, idx); + be_return(vm); + } else { + be_return_nil(vm); } - be_return_nil(vm); } static int m_setitem(bvm *vm) diff --git a/lib/libesp32/Berry/src/be_mathlib.c b/lib/libesp32/Berry/src/be_mathlib.c index 4ee24b1cf..c6d4139e1 100644 --- a/lib/libesp32/Berry/src/be_mathlib.c +++ b/lib/libesp32/Berry/src/be_mathlib.c @@ -133,6 +133,18 @@ static int m_atan(bvm *vm) be_return(vm); } +static int m_atan2(bvm *vm) +{ + if (be_top(vm) >= 2 && be_isnumber(vm, 1) && be_isnumber(vm, 2)) { + breal y = be_toreal(vm, 1); + breal x = be_toreal(vm, 2); + be_pushreal(vm, mathfunc(atan2)(y, x)); + } else { + be_pushreal(vm, (breal)0.0); + } + be_return(vm); +} + static int m_sinh(bvm *vm) { if (be_top(vm) >= 1 && be_isnumber(vm, 1)) { @@ -269,6 +281,7 @@ be_native_module_attr_table(math) { be_native_module_function("asin", m_asin), be_native_module_function("acos", m_acos), be_native_module_function("atan", m_atan), + be_native_module_function("atan2", m_atan2), be_native_module_function("sinh", m_sinh), be_native_module_function("cosh", m_cosh), be_native_module_function("tanh", m_tanh), @@ -299,6 +312,7 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) { asin, func(m_asin) acos, func(m_acos) atan, func(m_atan) + atan2, func(m_atan2) sinh, func(m_sinh) cosh, func(m_cosh) tanh, func(m_tanh) From 86602cc6f37f823010ff39f9587a5bb20757e464 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 7 Sep 2021 19:34:18 +0200 Subject: [PATCH 167/317] LVGL improve lv_wifi_bars --- .../Berry/default/be_lvgl_signal_bars_lib.c | 364 +++++++++--------- .../Berry/default/be_lvgl_signal_wifi_lib.c | 85 ++-- .../Berry/default/embedded/lv_signal_bars.be | 27 +- 3 files changed, 243 insertions(+), 233 deletions(-) diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c index 7eade5edb..d38f8400d 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c @@ -29,132 +29,132 @@ be_local_closure(my_design_cb, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - be_const_int(1), /* R256 - K0 */ + /* K0 */ be_const_int(1), }), (be_nested_const_str("atleast1", 1956331672, 8)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[ 6]) { /* code */ - 0x28040100, // 0000 GE R1 R0 R256 + 0x28040100, // 0000 GE R1 R0 K0 0x78060001, // 0001 JMPF R1 #0004 0x80040000, // 0002 RET 1 R0 0x70020000, // 0003 JMP #0005 - 0x80060000, // 0004 RET 1 R256 - 0x80000000, // 0005 RET 0 R0 + 0x80060000, // 0004 RET 1 K0 + 0x80000000, // 0005 RET 0 }) ), }), 1, /* has constants */ ( &(const bvalue[33]) { /* constants */ - be_nested_string("get_height", -723211773, 10), /* R256 - K0 */ - be_nested_string("get_width", -1001549996, 9), /* R257 - K1 */ - be_const_int(3), /* R258 - K2 */ - be_const_int(2), /* R259 - K3 */ - be_nested_string("lv", 1529997255, 2), /* R260 - K4 */ - be_nested_string("DESIGN_COVER_CHK", -1298406708, 16), /* R261 - K5 */ - be_nested_string("ancestor_design", 421545719, 15), /* R262 - K6 */ - be_nested_string("call", -1276017495, 4), /* R263 - K7 */ - be_nested_string("DESIGN_DRAW_MAIN", -904475754, 16), /* R264 - K8 */ - be_nested_string("get_coords", 1044089006, 10), /* R265 - K9 */ - be_nested_string("x1", 274927234, 2), /* R266 - K10 */ - be_nested_string("y1", -1939865569, 2), /* R267 - K11 */ - be_nested_string("draw_line_dsc_init", -428273650, 18), /* R268 - K12 */ - be_nested_string("line_dsc", -200476318, 8), /* R269 - K13 */ - be_nested_string("init_draw_line_dsc", -1787031256, 18), /* R270 - K14 */ - be_nested_string("OBJ_PART_MAIN", 658062838, 13), /* R271 - K15 */ - be_nested_string("round_start", -1345482912, 11), /* R272 - K16 */ - be_const_int(1), /* R273 - K17 */ - be_nested_string("round_end", 985288225, 9), /* R274 - K18 */ - be_nested_string("width", -1786286561, 5), /* R275 - K19 */ - be_nested_string("get_style_line_color", 805371932, 20), /* R276 - K20 */ - be_nested_string("STATE_DEFAULT", 712406428, 13), /* R277 - K21 */ - be_nested_string("get_style_bg_color", 964794381, 18), /* R278 - K22 */ - be_const_int(0), /* R279 - K23 */ - be_nested_string("color", 1031692888, 5), /* R280 - K24 */ - be_nested_string("percentage", -1756136011, 10), /* R281 - K25 */ - be_nested_string("p1", -1605446022, 2), /* R282 - K26 */ - be_nested_string("y", -66302220, 1), /* R283 - K27 */ - be_nested_string("x", -49524601, 1), /* R284 - K28 */ - be_nested_string("p2", -1622223641, 2), /* R285 - K29 */ - be_nested_string("draw_line", 1634465686, 9), /* R286 - K30 */ - be_nested_string("stop_iteration", -121173395, 14), /* R287 - K31 */ - be_nested_string("DESIGN_RES_OK", -1265307123, 13), /* R288 - K32 */ + /* K0 */ be_nested_string("get_height", -723211773, 10), + /* K1 */ be_nested_string("get_width", -1001549996, 9), + /* K2 */ be_const_int(3), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_string("lv", 1529997255, 2), + /* K5 */ be_nested_string("DESIGN_COVER_CHK", -1298406708, 16), + /* K6 */ be_nested_string("ancestor_design", 421545719, 15), + /* K7 */ be_nested_string("call", -1276017495, 4), + /* K8 */ be_nested_string("DESIGN_DRAW_MAIN", -904475754, 16), + /* K9 */ be_nested_string("get_coords", 1044089006, 10), + /* K10 */ be_nested_string("x1", 274927234, 2), + /* K11 */ be_nested_string("y1", -1939865569, 2), + /* K12 */ be_nested_string("draw_line_dsc_init", -428273650, 18), + /* K13 */ be_nested_string("line_dsc", -200476318, 8), + /* K14 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), + /* K15 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), + /* K16 */ be_nested_string("round_start", -1345482912, 11), + /* K17 */ be_const_int(1), + /* K18 */ be_nested_string("round_end", 985288225, 9), + /* K19 */ be_nested_string("width", -1786286561, 5), + /* K20 */ be_nested_string("get_style_line_color", 805371932, 20), + /* K21 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K22 */ be_nested_string("get_style_bg_color", 964794381, 18), + /* K23 */ be_const_int(0), + /* K24 */ be_nested_string("color", 1031692888, 5), + /* K25 */ be_nested_string("percentage", -1756136011, 10), + /* K26 */ be_nested_string("p1", -1605446022, 2), + /* K27 */ be_nested_string("y", -66302220, 1), + /* K28 */ be_nested_string("x", -49524601, 1), + /* K29 */ be_nested_string("p2", -1622223641, 2), + /* K30 */ be_nested_string("draw_line", 1634465686, 9), + /* K31 */ be_nested_string("stop_iteration", -121173395, 14), + /* K32 */ be_nested_string("DESIGN_RES_OK", -1265307123, 13), }), (be_nested_const_str("my_design_cb", -1173588798, 12)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[119]) { /* code */ 0x840C0000, // 0000 CLOSURE R3 P0 - 0x8C100100, // 0001 GETMET R4 R0 R256 + 0x8C100100, // 0001 GETMET R4 R0 K0 0x7C100200, // 0002 CALL R4 1 - 0x8C140101, // 0003 GETMET R5 R0 R257 + 0x8C140101, // 0003 GETMET R5 R0 K1 0x7C140200, // 0004 CALL R5 1 0x5C180600, // 0005 MOVE R6 R3 0x541E000E, // 0006 LDINT R7 15 0x0C1C0A07, // 0007 DIV R7 R5 R7 0x7C180200, // 0008 CALL R6 1 0x5C1C0600, // 0009 MOVE R7 R3 - 0x08200D02, // 000A MUL R8 R6 R258 + 0x08200D02, // 000A MUL R8 R6 K2 0x04200A08, // 000B SUB R8 R5 R8 0x54260003, // 000C LDINT R9 4 0x0C201009, // 000D DIV R8 R8 R9 0x7C1C0200, // 000E CALL R7 1 - 0x0C200F03, // 000F DIV R8 R7 R259 - 0xB8260800, // 0010 GETNGBL R9 R260 - 0x88241305, // 0011 GETMBR R9 R9 R261 + 0x0C200F03, // 000F DIV R8 R7 K3 + 0xB8260800, // 0010 GETNGBL R9 K4 + 0x88241305, // 0011 GETMBR R9 R9 K5 0x1C240409, // 0012 EQ R9 R2 R9 0x78260007, // 0013 JMPF R9 #001C - 0x88240106, // 0014 GETMBR R9 R0 R262 - 0x8C241307, // 0015 GETMET R9 R9 R263 + 0x88240106, // 0014 GETMBR R9 R0 K6 + 0x8C241307, // 0015 GETMET R9 R9 K7 0x5C2C0000, // 0016 MOVE R11 R0 0x5C300200, // 0017 MOVE R12 R1 0x5C340400, // 0018 MOVE R13 R2 0x7C240800, // 0019 CALL R9 4 0x80041200, // 001A RET 1 R9 0x70020057, // 001B JMP #0074 - 0xB8260800, // 001C GETNGBL R9 R260 - 0x88241308, // 001D GETMBR R9 R9 R264 + 0xB8260800, // 001C GETNGBL R9 K4 + 0x88241308, // 001D GETMBR R9 R9 K8 0x1C240409, // 001E EQ R9 R2 R9 0x78260053, // 001F JMPF R9 #0074 - 0x8C240109, // 0020 GETMET R9 R0 R265 + 0x8C240109, // 0020 GETMET R9 R0 K9 0x5C2C0200, // 0021 MOVE R11 R1 0x7C240400, // 0022 CALL R9 2 - 0x8824030A, // 0023 GETMBR R9 R1 R266 - 0x8828030B, // 0024 GETMBR R10 R1 R267 - 0xB82E0800, // 0025 GETNGBL R11 R260 - 0x8C2C170C, // 0026 GETMET R11 R11 R268 - 0x8834010D, // 0027 GETMBR R13 R0 R269 + 0x8824030A, // 0023 GETMBR R9 R1 K10 + 0x8828030B, // 0024 GETMBR R10 R1 K11 + 0xB82E0800, // 0025 GETNGBL R11 K4 + 0x8C2C170C, // 0026 GETMET R11 R11 K12 + 0x8834010D, // 0027 GETMBR R13 R0 K13 0x7C2C0400, // 0028 CALL R11 2 - 0x8C2C010E, // 0029 GETMET R11 R0 R270 - 0xB8360800, // 002A GETNGBL R13 R260 - 0x88341B0F, // 002B GETMBR R13 R13 R271 - 0x8838010D, // 002C GETMBR R14 R0 R269 + 0x8C2C010E, // 0029 GETMET R11 R0 K14 + 0xB8360800, // 002A GETNGBL R13 K4 + 0x88341B0F, // 002B GETMBR R13 R13 K15 + 0x8838010D, // 002C GETMBR R14 R0 K13 0x7C2C0600, // 002D CALL R11 3 - 0x882C010D, // 002E GETMBR R11 R0 R269 - 0x902E2111, // 002F SETMBR R11 R272 R273 - 0x882C010D, // 0030 GETMBR R11 R0 R269 - 0x902E2511, // 0031 SETMBR R11 R274 R273 - 0x882C010D, // 0032 GETMBR R11 R0 R269 - 0x902E2607, // 0033 SETMBR R11 R275 R7 - 0x8C2C0114, // 0034 GETMET R11 R0 R276 - 0xB8360800, // 0035 GETNGBL R13 R260 - 0x88341B0F, // 0036 GETMBR R13 R13 R271 - 0xB83A0800, // 0037 GETNGBL R14 R260 - 0x88381D15, // 0038 GETMBR R14 R14 R277 + 0x882C010D, // 002E GETMBR R11 R0 K13 + 0x902E2111, // 002F SETMBR R11 K16 K17 + 0x882C010D, // 0030 GETMBR R11 R0 K13 + 0x902E2511, // 0031 SETMBR R11 K18 K17 + 0x882C010D, // 0032 GETMBR R11 R0 K13 + 0x902E2607, // 0033 SETMBR R11 K19 R7 + 0x8C2C0114, // 0034 GETMET R11 R0 K20 + 0xB8360800, // 0035 GETNGBL R13 K4 + 0x88341B0F, // 0036 GETMBR R13 R13 K15 + 0xB83A0800, // 0037 GETNGBL R14 K4 + 0x88381D15, // 0038 GETMBR R14 R14 K21 0x7C2C0600, // 0039 CALL R11 3 - 0x8C300116, // 003A GETMET R12 R0 R278 - 0xB83A0800, // 003B GETNGBL R14 R260 - 0x88381D0F, // 003C GETMBR R14 R14 R271 - 0xB83E0800, // 003D GETNGBL R15 R260 - 0x883C1F15, // 003E GETMBR R15 R15 R277 + 0x8C300116, // 003A GETMET R12 R0 K22 + 0xB83A0800, // 003B GETNGBL R14 K4 + 0x88381D0F, // 003C GETMBR R14 R14 K15 + 0xB83E0800, // 003D GETNGBL R15 K4 + 0x883C1F15, // 003E GETMBR R15 R15 K21 0x7C300600, // 003F CALL R12 3 0x60340000, // 0040 GETGBL R13 G0 - 0x403A2F02, // 0041 CONNECT R14 R279 R258 + 0x403A2F02, // 0041 CONNECT R14 K23 K2 0x7C340200, // 0042 CALL R13 1 0xA802002C, // 0043 EXBLK 0 #0071 0x5C381A00, // 0044 MOVE R14 R13 0x7C380000, // 0045 CALL R14 0 - 0x883C010D, // 0046 GETMBR R15 R0 R269 - 0x88400119, // 0047 GETMBR R16 R0 R281 - 0x00441D11, // 0048 ADD R17 R14 R273 + 0x883C010D, // 0046 GETMBR R15 R0 K13 + 0x88400119, // 0047 GETMBR R16 R0 K25 + 0x00441D11, // 0048 ADD R17 R14 K17 0x544A0013, // 0049 LDINT R18 20 0x08442212, // 004A MUL R17 R17 R18 0x28402011, // 004B GE R16 R16 R17 @@ -162,44 +162,44 @@ be_local_closure(my_design_cb, /* name */ 0x5C401600, // 004D MOVE R16 R11 0x70020000, // 004E JMP #0050 0x5C401800, // 004F MOVE R16 R12 - 0x903E3010, // 0050 SETMBR R15 R280 R16 - 0x883C011A, // 0051 GETMBR R15 R0 R282 + 0x903E3010, // 0050 SETMBR R15 K24 R16 + 0x883C011A, // 0051 GETMBR R15 R0 K26 0x00401404, // 0052 ADD R16 R10 R4 - 0x04402111, // 0053 SUB R16 R16 R273 + 0x04402111, // 0053 SUB R16 R16 K17 0x04402008, // 0054 SUB R16 R16 R8 - 0x903E3610, // 0055 SETMBR R15 R283 R16 - 0x883C011A, // 0056 GETMBR R15 R0 R282 + 0x903E3610, // 0055 SETMBR R15 K27 R16 + 0x883C011A, // 0056 GETMBR R15 R0 K26 0x00400E06, // 0057 ADD R16 R7 R6 0x08401C10, // 0058 MUL R16 R14 R16 0x00401210, // 0059 ADD R16 R9 R16 0x00402008, // 005A ADD R16 R16 R8 - 0x903E3810, // 005B SETMBR R15 R284 R16 - 0x883C011D, // 005C GETMBR R15 R0 R285 - 0x0442040E, // 005D SUB R16 R258 R14 + 0x903E3810, // 005B SETMBR R15 K28 R16 + 0x883C011D, // 005C GETMBR R15 R0 K29 + 0x0442040E, // 005D SUB R16 K2 R14 0x04440807, // 005E SUB R17 R4 R7 0x08402011, // 005F MUL R16 R16 R17 0x54460003, // 0060 LDINT R17 4 0x0C402011, // 0061 DIV R16 R16 R17 0x00401410, // 0062 ADD R16 R10 R16 0x00402008, // 0063 ADD R16 R16 R8 - 0x903E3610, // 0064 SETMBR R15 R283 R16 - 0x883C011D, // 0065 GETMBR R15 R0 R285 - 0x8840011A, // 0066 GETMBR R16 R0 R282 - 0x8840211C, // 0067 GETMBR R16 R16 R284 - 0x903E3810, // 0068 SETMBR R15 R284 R16 - 0xB83E0800, // 0069 GETNGBL R15 R260 - 0x8C3C1F1E, // 006A GETMET R15 R15 R286 - 0x8844011A, // 006B GETMBR R17 R0 R282 - 0x8848011D, // 006C GETMBR R18 R0 R285 + 0x903E3610, // 0064 SETMBR R15 K27 R16 + 0x883C011D, // 0065 GETMBR R15 R0 K29 + 0x8840011A, // 0066 GETMBR R16 R0 K26 + 0x8840211C, // 0067 GETMBR R16 R16 K28 + 0x903E3810, // 0068 SETMBR R15 K28 R16 + 0xB83E0800, // 0069 GETNGBL R15 K4 + 0x8C3C1F1E, // 006A GETMET R15 R15 K30 + 0x8844011A, // 006B GETMBR R17 R0 K26 + 0x8848011D, // 006C GETMBR R18 R0 K29 0x5C4C0200, // 006D MOVE R19 R1 - 0x8850010D, // 006E GETMBR R20 R0 R269 + 0x8850010D, // 006E GETMBR R20 R0 K13 0x7C3C0A00, // 006F CALL R15 5 0x7001FFD2, // 0070 JMP #0044 0x5834001F, // 0071 LDCONST R13 K31 0xAC340200, // 0072 CATCH R13 1 0 0xB0080000, // 0073 RAISE 2 R0 R0 - 0xB8260800, // 0074 GETNGBL R9 R260 - 0x88241320, // 0075 GETMBR R9 R9 R288 + 0xB8260800, // 0074 GETNGBL R9 K4 + 0x88241320, // 0075 GETMBR R9 R9 K32 0x80041200, // 0076 RET 1 R9 }) ) @@ -207,33 +207,6 @@ be_local_closure(my_design_cb, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_percentage -********************************************************************/ -be_local_closure(get_percentage, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - be_nested_string("percentage", -1756136011, 10), /* R256 - K0 */ - }), - (be_nested_const_str("get_percentage", -1414483304, 14)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 R256 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: init ********************************************************************/ @@ -247,54 +220,47 @@ be_local_closure(init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[14]) { /* constants */ - be_nested_string("lv_obj", -37134147, 6), /* R256 - K0 */ - be_nested_string("init", 380752755, 4), /* R257 - K1 */ - be_nested_string("ancestor_design", 421545719, 15), /* R258 - K2 */ - be_nested_string("get_design_cb", -825649242, 13), /* R259 - K3 */ - be_nested_string("set_design_cb", 1469311634, 13), /* R260 - K4 */ - be_nested_string("my_design_cb", -1173588798, 12), /* R261 - K5 */ - be_nested_string("percentage", -1756136011, 10), /* R262 - K6 */ - be_nested_string("p1", -1605446022, 2), /* R263 - K7 */ - be_nested_string("lv_point", -174745506, 8), /* R264 - K8 */ - be_nested_string("p2", -1622223641, 2), /* R265 - K9 */ - be_nested_string("line_dsc", -200476318, 8), /* R266 - K10 */ - be_nested_string("lv_draw_line_dsc", -1872162060, 16), /* R267 - K11 */ - be_nested_string("area", -1693507260, 4), /* R268 - K12 */ - be_nested_string("lv_area", -1773816895, 7), /* R269 - K13 */ + ( &(const bvalue[11]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("ancestor_design", 421545719, 15), + /* K2 */ be_nested_string("get_design_cb", -825649242, 13), + /* K3 */ be_nested_string("set_design_cb", 1469311634, 13), + /* K4 */ be_nested_string("my_design_cb", -1173588798, 12), + /* K5 */ be_nested_string("percentage", -1756136011, 10), + /* K6 */ be_nested_string("p1", -1605446022, 2), + /* K7 */ be_nested_string("lv_point", -174745506, 8), + /* K8 */ be_nested_string("p2", -1622223641, 2), + /* K9 */ be_nested_string("line_dsc", -200476318, 8), + /* K10 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[29]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0x600C0014, // 0000 GETGBL R3 G20 0x5C100000, // 0001 MOVE R4 R0 - 0xB8160000, // 0002 GETNGBL R5 R256 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C0C0701, // 0004 GETMET R3 R3 R257 - 0x5C140200, // 0005 MOVE R5 R1 - 0x5C180400, // 0006 MOVE R6 R2 - 0x7C0C0600, // 0007 CALL R3 3 - 0x8C0C0103, // 0008 GETMET R3 R0 R259 - 0x7C0C0200, // 0009 CALL R3 1 - 0x90020403, // 000A SETMBR R0 R258 R3 - 0x8C0C0104, // 000B GETMET R3 R0 R260 - 0x88140105, // 000C GETMBR R5 R0 R261 - 0x7C0C0400, // 000D CALL R3 2 - 0x540E0063, // 000E LDINT R3 100 - 0x90020C03, // 000F SETMBR R0 R262 R3 - 0xB80E1000, // 0010 GETNGBL R3 R264 - 0x7C0C0000, // 0011 CALL R3 0 - 0x90020E03, // 0012 SETMBR R0 R263 R3 - 0xB80E1000, // 0013 GETNGBL R3 R264 - 0x7C0C0000, // 0014 CALL R3 0 - 0x90021203, // 0015 SETMBR R0 R265 R3 - 0xB80E1600, // 0016 GETNGBL R3 R267 - 0x7C0C0000, // 0017 CALL R3 0 - 0x90021403, // 0018 SETMBR R0 R266 R3 - 0xB80E1A00, // 0019 GETNGBL R3 R269 - 0x7C0C0000, // 001A CALL R3 0 - 0x90021803, // 001B SETMBR R0 R268 R3 - 0x80000000, // 001C RET 0 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x8C0C0102, // 0007 GETMET R3 R0 K2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x90020203, // 0009 SETMBR R0 K1 R3 + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x88140104, // 000B GETMBR R5 R0 K4 + 0x7C0C0400, // 000C CALL R3 2 + 0x540E0063, // 000D LDINT R3 100 + 0x90020A03, // 000E SETMBR R0 K5 R3 + 0xB80E0E00, // 000F GETNGBL R3 K7 + 0x7C0C0000, // 0010 CALL R3 0 + 0x90020C03, // 0011 SETMBR R0 K6 R3 + 0xB80E0E00, // 0012 GETNGBL R3 K7 + 0x7C0C0000, // 0013 CALL R3 0 + 0x90021003, // 0014 SETMBR R0 K8 R3 + 0xB80E1400, // 0015 GETNGBL R3 K10 + 0x7C0C0000, // 0016 CALL R3 0 + 0x90021203, // 0017 SETMBR R0 K9 R3 + 0x80000000, // 0018 RET 0 }) ) ); @@ -315,31 +281,58 @@ be_local_closure(set_percentage, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ - be_nested_string("percentage", -1756136011, 10), /* R256 - K0 */ - be_const_int(0), /* R257 - K1 */ - be_nested_string("invalidate", -1645232368, 10), /* R258 - K2 */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("invalidate", -1645232368, 10), }), (be_nested_const_str("set_percentage", -1342944572, 14)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 + 0x88080100, // 0000 GETMBR R2 R0 K0 0x540E0004, // 0001 LDINT R3 5 0x0C080403, // 0002 DIV R2 R2 R3 0x540E0063, // 0003 LDINT R3 100 0x240C0203, // 0004 GT R3 R1 R3 0x780E0000, // 0005 JMPF R3 #0007 0x54060063, // 0006 LDINT R1 100 - 0x140C0301, // 0007 LT R3 R1 R257 + 0x140C0301, // 0007 LT R3 R1 K1 0x780E0000, // 0008 JMPF R3 #000A 0x58040001, // 0009 LDCONST R1 K1 - 0x90020001, // 000A SETMBR R0 R256 R1 + 0x90020001, // 000A SETMBR R0 K0 R1 0x540E0004, // 000B LDINT R3 5 0x0C0C0203, // 000C DIV R3 R1 R3 0x200C0403, // 000D NE R3 R2 R3 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C0102, // 000F GETMET R3 R0 R258 + 0x8C0C0102, // 000F GETMET R3 R0 K2 0x7C0C0200, // 0010 CALL R3 1 - 0x80000000, // 0011 RET 0 R0 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_percentage +********************************************************************/ +be_local_closure(get_percentage, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + }), + (be_nested_const_str("get_percentage", -1414483304, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -351,20 +344,19 @@ be_local_closure(set_percentage, /* name */ ********************************************************************/ extern const bclass be_class_lv_obj; be_local_class(lv_signal_bars, - 6, + 5, &be_class_lv_obj, - be_nested_map(10, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("p1", -1605446022, 2, -1), be_const_var(2) }, - { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, - { be_nested_key("get_percentage", -1414483304, 14, -1), be_const_closure(get_percentage_closure) }, - { be_nested_key("init", 380752755, 4, 7), be_const_closure(init_closure) }, - { be_nested_key("set_percentage", -1342944572, 14, 0), be_const_closure(set_percentage_closure) }, - { be_nested_key("percentage", -1756136011, 10, 3), be_const_var(1) }, - { be_nested_key("area", -1693507260, 4, -1), be_const_var(5) }, - { be_nested_key("p2", -1622223641, 2, -1), be_const_var(3) }, - { be_nested_key("line_dsc", -200476318, 8, 1), be_const_var(4) }, + { be_nested_key("line_dsc", -200476318, 8, 5), be_const_var(4) }, + { be_nested_key("p1", -1605446022, 2, 4), be_const_var(2) }, + { be_nested_key("p2", -1622223641, 2, 3), be_const_var(3) }, { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, + { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, + { be_nested_key("percentage", -1756136011, 10, -1), be_const_var(1) }, + { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, + { be_nested_key("set_percentage", -1342944572, 14, -1), be_const_closure(set_percentage_closure) }, + { be_nested_key("get_percentage", -1414483304, 14, 7), be_const_closure(get_percentage_closure) }, })), (be_nested_const_str("lv_signal_bars", -780994737, 14)) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c index 304a9ab86..90454c647 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c @@ -20,28 +20,31 @@ be_local_closure(init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - be_nested_string("lv_signal_bars", -780994737, 14), /* R256 - K0 */ - be_nested_string("init", 380752755, 4), /* R257 - K1 */ - be_nested_string("tasmota", 424643812, 7), /* R258 - K2 */ - be_nested_string("add_driver", 1654458371, 10), /* R259 - K3 */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("add_driver", 1654458371, 10), + /* K3 */ be_nested_string("set_percentage", -1342944572, 14), + /* K4 */ be_const_int(0), }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[13]) { /* code */ + ( &(const binstruction[15]) { /* code */ 0x600C0014, // 0000 GETGBL R3 G20 0x5C100000, // 0001 MOVE R4 R0 - 0xB8160000, // 0002 GETNGBL R5 R256 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C0C0701, // 0004 GETMET R3 R3 R257 - 0x5C140200, // 0005 MOVE R5 R1 - 0x5C180400, // 0006 MOVE R6 R2 - 0x7C0C0600, // 0007 CALL R3 3 - 0xB80E0400, // 0008 GETNGBL R3 R258 - 0x8C0C0703, // 0009 GETMET R3 R3 R259 - 0x5C140000, // 000A MOVE R5 R0 - 0x7C0C0400, // 000B CALL R3 2 - 0x80000000, // 000C RET 0 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0xB80E0200, // 0007 GETNGBL R3 K1 + 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x5C140000, // 0009 MOVE R5 R0 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x58140004, // 000C LDCONST R5 K4 + 0x7C0C0400, // 000D CALL R3 2 + 0x80000000, // 000E RET 0 }) ) ); @@ -53,7 +56,7 @@ be_local_closure(init, /* name */ ********************************************************************/ be_local_closure(every_second, /* name */ be_nested_proto( - 6, /* nstack */ + 7, /* nstack */ 1, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -61,29 +64,41 @@ be_local_closure(every_second, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - be_nested_string("tasmota", 424643812, 7), /* R256 - K0 */ - be_nested_string("wifi", 120087624, 4), /* R257 - K1 */ - be_nested_string("find", -1108310694, 4), /* R258 - K2 */ - be_nested_string("quality", -1697296346, 7), /* R259 - K3 */ - be_nested_string("set_percentage", -1342944572, 14), /* R260 - K4 */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_string("tasmota", 424643812, 7), + /* K1 */ be_nested_string("wifi", 120087624, 4), + /* K2 */ be_nested_string("find", -1108310694, 4), + /* K3 */ be_nested_string("quality", -1697296346, 7), + /* K4 */ be_nested_string("ip", 1261996636, 2), + /* K5 */ be_nested_string("set_percentage", -1342944572, 14), + /* K6 */ be_const_int(0), }), (be_nested_const_str("every_second", 2075451465, 12)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[13]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 R256 - 0x8C040301, // 0001 GETMET R1 R1 R257 + ( &(const binstruction[23]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 0x7C040200, // 0002 CALL R1 1 - 0x8C080302, // 0003 GETMET R2 R1 R258 + 0x8C080302, // 0003 GETMET R2 R1 K2 0x58100003, // 0004 LDCONST R4 K3 0x7C080400, // 0005 CALL R2 2 - 0x4C0C0000, // 0006 LDNIL 3 - 0x200C0403, // 0007 NE R3 R2 R3 - 0x780E0002, // 0008 JMPF R3 #000C - 0x8C0C0104, // 0009 GETMET R3 R0 R260 - 0x5C140400, // 000A MOVE R5 R2 - 0x7C0C0400, // 000B CALL R3 2 - 0x80000000, // 000C RET 0 R0 + 0x8C0C0302, // 0006 GETMET R3 R1 K2 + 0x58140004, // 0007 LDCONST R5 K4 + 0x7C0C0400, // 0008 CALL R3 2 + 0x4C100000, // 0009 LDNIL R4 + 0x1C100604, // 000A EQ R4 R3 R4 + 0x78120003, // 000B JMPF R4 #0010 + 0x8C100105, // 000C GETMET R4 R0 K5 + 0x58180006, // 000D LDCONST R6 K6 + 0x7C100400, // 000E CALL R4 2 + 0x70020005, // 000F JMP #0016 + 0x4C100000, // 0010 LDNIL R4 + 0x20100404, // 0011 NE R4 R2 R4 + 0x78120002, // 0012 JMPF R4 #0016 + 0x8C100105, // 0013 GETMET R4 R0 K5 + 0x5C180400, // 0014 MOVE R6 R2 + 0x7C100400, // 0015 CALL R4 2 + 0x80000000, // 0016 RET 0 }) ) ); diff --git a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be index 59985cf7d..9200c406f 100644 --- a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be +++ b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be @@ -3,13 +3,13 @@ --# class lv_signal_bars : lv_obj - var ancestor_design # previous design_cb - var percentage - var p1, p2, line_dsc, area + var ancestor_design # previous design_cb + var percentage # value to display, range 0..100 + var p1, p2, line_dsc # instances of objects kept to avoid re-instanciating at each call def init(parent, copy) # init parent object - super(self, lv_obj).init(parent, copy) + super(self).init(parent, copy) # keep a copy of self.ancestor_design = self.get_design_cb() self.set_design_cb(self.my_design_cb) @@ -19,7 +19,6 @@ class lv_signal_bars : lv_obj self.p1 = lv_point() self.p2 = lv_point() self.line_dsc = lv_draw_line_dsc() - self.area = lv_area() end def my_design_cb(area, mode) @@ -37,14 +36,14 @@ class lv_signal_bars : lv_obj return self.ancestor_design.call(self, area, mode) elif mode == lv.DESIGN_DRAW_MAIN - #self.ancestor_design.call(self, area, mode) - don't draw a background + #self.ancestor_design.call(self, area, mode) # commented since we don't draw a background # get coordinates of area self.get_coords(area) var x_ofs = area.x1 var y_ofs = area.y1 - lv.draw_line_dsc_init(self.line_dsc) + lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure self.init_draw_line_dsc(lv.OBJ_PART_MAIN, self.line_dsc) self.line_dsc.round_start = 1 @@ -53,7 +52,7 @@ class lv_signal_bars : lv_obj var on_color = self.get_style_line_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) var off_color = self.get_style_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) - for i:0..3 + for i:0..3 # 4 bars self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color self.p1.y = y_ofs + height - 1 - bar_offset self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset @@ -61,7 +60,7 @@ class lv_signal_bars : lv_obj self.p2.x = self.p1.x lv.draw_line(self.p1, self.p2, area, self.line_dsc) end - #elif mode == lv.DESIGN_DRAW_POST # we don't want a frame around this object + #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object #self.ancestor_design.call(self, area, mode) end return lv.DESIGN_RES_OK @@ -84,15 +83,19 @@ end class lv_wifi_bars: lv_signal_bars def init(parent, copy) - super(self, lv_signal_bars).init(parent, copy) + super(self).init(parent, copy) tasmota.add_driver(self) + self.set_percentage(0) # we generally start with 0, meaning not connected end def every_second() var wifi = tasmota.wifi() var quality = wifi.find("quality") - if quality != nil + var ip = wifi.find("ip") + if ip == nil + self.set_percentage(0) + elif quality != nil self.set_percentage(quality) end end -end \ No newline at end of file +end From 71d97e72a83e017281710fdff261f0605d4c578f Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 8 Sep 2021 12:41:28 +0200 Subject: [PATCH 168/317] Fix lv_signal_bars to avoid crash --- lib/libesp32/Berry/default/be_lvgl_ctypes.c | 15 + .../Berry/default/be_lvgl_signal_bars_lib.c | 317 +++++++++--------- .../Berry/default/embedded/lv_signal_bars.be | 27 +- .../generate/be_fixed_be_class_lv_ctypes.h | 9 +- 4 files changed, 197 insertions(+), 171 deletions(-) diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes.c b/lib/libesp32/Berry/default/be_lvgl_ctypes.c index a8932a39f..1c5e52b46 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes.c +++ b/lib/libesp32/Berry/default/be_lvgl_ctypes.c @@ -154,6 +154,19 @@ int be_ctypes_init(bvm *vm) { be_return(vm); } +// +// copy ctypes_bytes, with same class and same content +// +int be_ctypes_copy(bvm *vm) { + size_t len; + const void * src = be_tobytes(vm, 1, &len); + be_classof(vm, 1); + be_pushint(vm, (int32_t) src); // skip first 4 bytes + be_call(vm, 1); + be_pop(vm, 1); + be_return(vm); +} + int be_ctypes_member(bvm *vm) { int argc = be_top(vm); be_getmember(vm, 1, ".def"); @@ -307,6 +320,7 @@ void be_load_lvgl_ctypes_lib(bvm *vm) { static const bnfuncinfo members[] = { { ".def", NULL }, // pointer to definition { "init", be_ctypes_init }, + { "copy", be_ctypes_copy }, { "member", be_ctypes_member }, { "setmember", be_ctypes_setmember }, { NULL, NULL } @@ -327,6 +341,7 @@ void be_load_lvgl_ctypes_lib(bvm *vm) { /* @const_object_info_begin class be_class_lv_ctypes (scope: global, name: ctypes_bytes, super: be_class_bytes) { .def, var + copy, func(be_ctypes_copy) init, func(be_ctypes_init) member, func(be_ctypes_member) setmember, func(be_ctypes_setmember) diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c index d38f8400d..4c3e09bda 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c @@ -44,7 +44,7 @@ be_local_closure(my_design_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[33]) { /* constants */ + ( &(const bvalue[34]) { /* constants */ /* K0 */ be_nested_string("get_height", -723211773, 10), /* K1 */ be_nested_string("get_width", -1001549996, 9), /* K2 */ be_const_int(3), @@ -55,33 +55,34 @@ be_local_closure(my_design_cb, /* name */ /* K7 */ be_nested_string("call", -1276017495, 4), /* K8 */ be_nested_string("DESIGN_DRAW_MAIN", -904475754, 16), /* K9 */ be_nested_string("get_coords", 1044089006, 10), - /* K10 */ be_nested_string("x1", 274927234, 2), - /* K11 */ be_nested_string("y1", -1939865569, 2), - /* K12 */ be_nested_string("draw_line_dsc_init", -428273650, 18), - /* K13 */ be_nested_string("line_dsc", -200476318, 8), - /* K14 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), - /* K15 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), - /* K16 */ be_nested_string("round_start", -1345482912, 11), - /* K17 */ be_const_int(1), - /* K18 */ be_nested_string("round_end", 985288225, 9), - /* K19 */ be_nested_string("width", -1786286561, 5), - /* K20 */ be_nested_string("get_style_line_color", 805371932, 20), - /* K21 */ be_nested_string("STATE_DEFAULT", 712406428, 13), - /* K22 */ be_nested_string("get_style_bg_color", 964794381, 18), - /* K23 */ be_const_int(0), - /* K24 */ be_nested_string("color", 1031692888, 5), - /* K25 */ be_nested_string("percentage", -1756136011, 10), - /* K26 */ be_nested_string("p1", -1605446022, 2), - /* K27 */ be_nested_string("y", -66302220, 1), - /* K28 */ be_nested_string("x", -49524601, 1), - /* K29 */ be_nested_string("p2", -1622223641, 2), - /* K30 */ be_nested_string("draw_line", 1634465686, 9), - /* K31 */ be_nested_string("stop_iteration", -121173395, 14), - /* K32 */ be_nested_string("DESIGN_RES_OK", -1265307123, 13), + /* K10 */ be_nested_string("area", -1693507260, 4), + /* K11 */ be_nested_string("x1", 274927234, 2), + /* K12 */ be_nested_string("y1", -1939865569, 2), + /* K13 */ be_nested_string("draw_line_dsc_init", -428273650, 18), + /* K14 */ be_nested_string("line_dsc", -200476318, 8), + /* K15 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), + /* K16 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), + /* K17 */ be_nested_string("round_start", -1345482912, 11), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_string("round_end", 985288225, 9), + /* K20 */ be_nested_string("width", -1786286561, 5), + /* K21 */ be_nested_string("get_style_line_color", 805371932, 20), + /* K22 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K23 */ be_nested_string("get_style_bg_color", 964794381, 18), + /* K24 */ be_const_int(0), + /* K25 */ be_nested_string("color", 1031692888, 5), + /* K26 */ be_nested_string("percentage", -1756136011, 10), + /* K27 */ be_nested_string("p1", -1605446022, 2), + /* K28 */ be_nested_string("y", -66302220, 1), + /* K29 */ be_nested_string("x", -49524601, 1), + /* K30 */ be_nested_string("p2", -1622223641, 2), + /* K31 */ be_nested_string("draw_line", 1634465686, 9), + /* K32 */ be_nested_string("stop_iteration", -121173395, 14), + /* K33 */ be_nested_string("DESIGN_RES_OK", -1265307123, 13), }), (be_nested_const_str("my_design_cb", -1173588798, 12)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[119]) { /* code */ + ( &(const binstruction[121]) { /* code */ 0x840C0000, // 0000 CLOSURE R3 P0 0x8C100100, // 0001 GETMET R4 R0 K0 0x7C100200, // 0002 CALL R4 1 @@ -109,98 +110,127 @@ be_local_closure(my_design_cb, /* name */ 0x5C340400, // 0018 MOVE R13 R2 0x7C240800, // 0019 CALL R9 4 0x80041200, // 001A RET 1 R9 - 0x70020057, // 001B JMP #0074 + 0x70020059, // 001B JMP #0076 0xB8260800, // 001C GETNGBL R9 K4 0x88241308, // 001D GETMBR R9 R9 K8 0x1C240409, // 001E EQ R9 R2 R9 - 0x78260053, // 001F JMPF R9 #0074 + 0x78260055, // 001F JMPF R9 #0076 0x8C240109, // 0020 GETMET R9 R0 K9 - 0x5C2C0200, // 0021 MOVE R11 R1 + 0x882C010A, // 0021 GETMBR R11 R0 K10 0x7C240400, // 0022 CALL R9 2 - 0x8824030A, // 0023 GETMBR R9 R1 K10 - 0x8828030B, // 0024 GETMBR R10 R1 K11 - 0xB82E0800, // 0025 GETNGBL R11 K4 - 0x8C2C170C, // 0026 GETMET R11 R11 K12 - 0x8834010D, // 0027 GETMBR R13 R0 K13 - 0x7C2C0400, // 0028 CALL R11 2 - 0x8C2C010E, // 0029 GETMET R11 R0 K14 - 0xB8360800, // 002A GETNGBL R13 K4 - 0x88341B0F, // 002B GETMBR R13 R13 K15 - 0x8838010D, // 002C GETMBR R14 R0 K13 - 0x7C2C0600, // 002D CALL R11 3 - 0x882C010D, // 002E GETMBR R11 R0 K13 - 0x902E2111, // 002F SETMBR R11 K16 K17 - 0x882C010D, // 0030 GETMBR R11 R0 K13 - 0x902E2511, // 0031 SETMBR R11 K18 K17 - 0x882C010D, // 0032 GETMBR R11 R0 K13 - 0x902E2607, // 0033 SETMBR R11 K19 R7 - 0x8C2C0114, // 0034 GETMET R11 R0 K20 - 0xB8360800, // 0035 GETNGBL R13 K4 - 0x88341B0F, // 0036 GETMBR R13 R13 K15 - 0xB83A0800, // 0037 GETNGBL R14 K4 - 0x88381D15, // 0038 GETMBR R14 R14 K21 - 0x7C2C0600, // 0039 CALL R11 3 - 0x8C300116, // 003A GETMET R12 R0 K22 - 0xB83A0800, // 003B GETNGBL R14 K4 - 0x88381D0F, // 003C GETMBR R14 R14 K15 - 0xB83E0800, // 003D GETNGBL R15 K4 - 0x883C1F15, // 003E GETMBR R15 R15 K21 - 0x7C300600, // 003F CALL R12 3 - 0x60340000, // 0040 GETGBL R13 G0 - 0x403A2F02, // 0041 CONNECT R14 K23 K2 - 0x7C340200, // 0042 CALL R13 1 - 0xA802002C, // 0043 EXBLK 0 #0071 - 0x5C381A00, // 0044 MOVE R14 R13 - 0x7C380000, // 0045 CALL R14 0 - 0x883C010D, // 0046 GETMBR R15 R0 K13 - 0x88400119, // 0047 GETMBR R16 R0 K25 - 0x00441D11, // 0048 ADD R17 R14 K17 - 0x544A0013, // 0049 LDINT R18 20 - 0x08442212, // 004A MUL R17 R17 R18 - 0x28402011, // 004B GE R16 R16 R17 - 0x78420001, // 004C JMPF R16 #004F - 0x5C401600, // 004D MOVE R16 R11 - 0x70020000, // 004E JMP #0050 - 0x5C401800, // 004F MOVE R16 R12 - 0x903E3010, // 0050 SETMBR R15 K24 R16 - 0x883C011A, // 0051 GETMBR R15 R0 K26 - 0x00401404, // 0052 ADD R16 R10 R4 - 0x04402111, // 0053 SUB R16 R16 K17 - 0x04402008, // 0054 SUB R16 R16 R8 - 0x903E3610, // 0055 SETMBR R15 K27 R16 - 0x883C011A, // 0056 GETMBR R15 R0 K26 - 0x00400E06, // 0057 ADD R16 R7 R6 - 0x08401C10, // 0058 MUL R16 R14 R16 - 0x00401210, // 0059 ADD R16 R9 R16 - 0x00402008, // 005A ADD R16 R16 R8 - 0x903E3810, // 005B SETMBR R15 K28 R16 - 0x883C011D, // 005C GETMBR R15 R0 K29 - 0x0442040E, // 005D SUB R16 K2 R14 - 0x04440807, // 005E SUB R17 R4 R7 - 0x08402011, // 005F MUL R16 R16 R17 - 0x54460003, // 0060 LDINT R17 4 - 0x0C402011, // 0061 DIV R16 R16 R17 - 0x00401410, // 0062 ADD R16 R10 R16 - 0x00402008, // 0063 ADD R16 R16 R8 - 0x903E3610, // 0064 SETMBR R15 K27 R16 - 0x883C011D, // 0065 GETMBR R15 R0 K29 - 0x8840011A, // 0066 GETMBR R16 R0 K26 - 0x8840211C, // 0067 GETMBR R16 R16 K28 - 0x903E3810, // 0068 SETMBR R15 K28 R16 - 0xB83E0800, // 0069 GETNGBL R15 K4 - 0x8C3C1F1E, // 006A GETMET R15 R15 K30 - 0x8844011A, // 006B GETMBR R17 R0 K26 - 0x8848011D, // 006C GETMBR R18 R0 K29 - 0x5C4C0200, // 006D MOVE R19 R1 - 0x8850010D, // 006E GETMBR R20 R0 K13 - 0x7C3C0A00, // 006F CALL R15 5 - 0x7001FFD2, // 0070 JMP #0044 - 0x5834001F, // 0071 LDCONST R13 K31 - 0xAC340200, // 0072 CATCH R13 1 0 - 0xB0080000, // 0073 RAISE 2 R0 R0 - 0xB8260800, // 0074 GETNGBL R9 K4 - 0x88241320, // 0075 GETMBR R9 R9 K32 - 0x80041200, // 0076 RET 1 R9 + 0x8824010A, // 0023 GETMBR R9 R0 K10 + 0x8824130B, // 0024 GETMBR R9 R9 K11 + 0x8828010A, // 0025 GETMBR R10 R0 K10 + 0x8828150C, // 0026 GETMBR R10 R10 K12 + 0xB82E0800, // 0027 GETNGBL R11 K4 + 0x8C2C170D, // 0028 GETMET R11 R11 K13 + 0x8834010E, // 0029 GETMBR R13 R0 K14 + 0x7C2C0400, // 002A CALL R11 2 + 0x8C2C010F, // 002B GETMET R11 R0 K15 + 0xB8360800, // 002C GETNGBL R13 K4 + 0x88341B10, // 002D GETMBR R13 R13 K16 + 0x8838010E, // 002E GETMBR R14 R0 K14 + 0x7C2C0600, // 002F CALL R11 3 + 0x882C010E, // 0030 GETMBR R11 R0 K14 + 0x902E2312, // 0031 SETMBR R11 K17 K18 + 0x882C010E, // 0032 GETMBR R11 R0 K14 + 0x902E2712, // 0033 SETMBR R11 K19 K18 + 0x882C010E, // 0034 GETMBR R11 R0 K14 + 0x902E2807, // 0035 SETMBR R11 K20 R7 + 0x8C2C0115, // 0036 GETMET R11 R0 K21 + 0xB8360800, // 0037 GETNGBL R13 K4 + 0x88341B10, // 0038 GETMBR R13 R13 K16 + 0xB83A0800, // 0039 GETNGBL R14 K4 + 0x88381D16, // 003A GETMBR R14 R14 K22 + 0x7C2C0600, // 003B CALL R11 3 + 0x8C300117, // 003C GETMET R12 R0 K23 + 0xB83A0800, // 003D GETNGBL R14 K4 + 0x88381D10, // 003E GETMBR R14 R14 K16 + 0xB83E0800, // 003F GETNGBL R15 K4 + 0x883C1F16, // 0040 GETMBR R15 R15 K22 + 0x7C300600, // 0041 CALL R12 3 + 0x60340000, // 0042 GETGBL R13 G0 + 0x403A3102, // 0043 CONNECT R14 K24 K2 + 0x7C340200, // 0044 CALL R13 1 + 0xA802002C, // 0045 EXBLK 0 #0073 + 0x5C381A00, // 0046 MOVE R14 R13 + 0x7C380000, // 0047 CALL R14 0 + 0x883C010E, // 0048 GETMBR R15 R0 K14 + 0x8840011A, // 0049 GETMBR R16 R0 K26 + 0x00441D12, // 004A ADD R17 R14 K18 + 0x544A0013, // 004B LDINT R18 20 + 0x08442212, // 004C MUL R17 R17 R18 + 0x28402011, // 004D GE R16 R16 R17 + 0x78420001, // 004E JMPF R16 #0051 + 0x5C401600, // 004F MOVE R16 R11 + 0x70020000, // 0050 JMP #0052 + 0x5C401800, // 0051 MOVE R16 R12 + 0x903E3210, // 0052 SETMBR R15 K25 R16 + 0x883C011B, // 0053 GETMBR R15 R0 K27 + 0x00401404, // 0054 ADD R16 R10 R4 + 0x04402112, // 0055 SUB R16 R16 K18 + 0x04402008, // 0056 SUB R16 R16 R8 + 0x903E3810, // 0057 SETMBR R15 K28 R16 + 0x883C011B, // 0058 GETMBR R15 R0 K27 + 0x00400E06, // 0059 ADD R16 R7 R6 + 0x08401C10, // 005A MUL R16 R14 R16 + 0x00401210, // 005B ADD R16 R9 R16 + 0x00402008, // 005C ADD R16 R16 R8 + 0x903E3A10, // 005D SETMBR R15 K29 R16 + 0x883C011E, // 005E GETMBR R15 R0 K30 + 0x0442040E, // 005F SUB R16 K2 R14 + 0x04440807, // 0060 SUB R17 R4 R7 + 0x08402011, // 0061 MUL R16 R16 R17 + 0x54460003, // 0062 LDINT R17 4 + 0x0C402011, // 0063 DIV R16 R16 R17 + 0x00401410, // 0064 ADD R16 R10 R16 + 0x00402008, // 0065 ADD R16 R16 R8 + 0x903E3810, // 0066 SETMBR R15 K28 R16 + 0x883C011E, // 0067 GETMBR R15 R0 K30 + 0x8840011B, // 0068 GETMBR R16 R0 K27 + 0x8840211D, // 0069 GETMBR R16 R16 K29 + 0x903E3A10, // 006A SETMBR R15 K29 R16 + 0xB83E0800, // 006B GETNGBL R15 K4 + 0x8C3C1F1F, // 006C GETMET R15 R15 K31 + 0x8844011B, // 006D GETMBR R17 R0 K27 + 0x8848011E, // 006E GETMBR R18 R0 K30 + 0x5C4C0200, // 006F MOVE R19 R1 + 0x8850010E, // 0070 GETMBR R20 R0 K14 + 0x7C3C0A00, // 0071 CALL R15 5 + 0x7001FFD2, // 0072 JMP #0046 + 0x58340020, // 0073 LDCONST R13 K32 + 0xAC340200, // 0074 CATCH R13 1 0 + 0xB0080000, // 0075 RAISE 2 R0 R0 + 0xB8260800, // 0076 GETNGBL R9 K4 + 0x88241321, // 0077 GETMBR R9 R9 K33 + 0x80041200, // 0078 RET 1 R9 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_percentage +********************************************************************/ +be_local_closure(get_percentage, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + }), + (be_nested_const_str("get_percentage", -1414483304, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -220,7 +250,7 @@ be_local_closure(init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[11]) { /* constants */ + ( &(const bvalue[13]) { /* constants */ /* K0 */ be_nested_string("init", 380752755, 4), /* K1 */ be_nested_string("ancestor_design", 421545719, 15), /* K2 */ be_nested_string("get_design_cb", -825649242, 13), @@ -230,12 +260,14 @@ be_local_closure(init, /* name */ /* K6 */ be_nested_string("p1", -1605446022, 2), /* K7 */ be_nested_string("lv_point", -174745506, 8), /* K8 */ be_nested_string("p2", -1622223641, 2), - /* K9 */ be_nested_string("line_dsc", -200476318, 8), - /* K10 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), + /* K9 */ be_nested_string("area", -1693507260, 4), + /* K10 */ be_nested_string("lv_area", -1773816895, 7), + /* K11 */ be_nested_string("line_dsc", -200476318, 8), + /* K12 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[25]) { /* code */ + ( &(const binstruction[28]) { /* code */ 0x600C0014, // 0000 GETGBL R3 G20 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 @@ -260,7 +292,10 @@ be_local_closure(init, /* name */ 0xB80E1400, // 0015 GETNGBL R3 K10 0x7C0C0000, // 0016 CALL R3 0 0x90021203, // 0017 SETMBR R0 K9 R3 - 0x80000000, // 0018 RET 0 + 0xB80E1800, // 0018 GETNGBL R3 K12 + 0x7C0C0000, // 0019 CALL R3 0 + 0x90021603, // 001A SETMBR R0 K11 R3 + 0x80000000, // 001B RET 0 }) ) ); @@ -312,51 +347,25 @@ be_local_closure(set_percentage, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: get_percentage -********************************************************************/ -be_local_closure(get_percentage, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_string("percentage", -1756136011, 10), - }), - (be_nested_const_str("get_percentage", -1414483304, 14)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: lv_signal_bars ********************************************************************/ extern const bclass be_class_lv_obj; be_local_class(lv_signal_bars, - 5, + 6, &be_class_lv_obj, - be_nested_map(9, + be_nested_map(10, ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("line_dsc", -200476318, 8, 5), be_const_var(4) }, - { be_nested_key("p1", -1605446022, 2, 4), be_const_var(2) }, - { be_nested_key("p2", -1622223641, 2, 3), be_const_var(3) }, - { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, + { be_nested_key("p1", -1605446022, 2, -1), be_const_var(2) }, { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, - { be_nested_key("percentage", -1756136011, 10, -1), be_const_var(1) }, - { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, - { be_nested_key("set_percentage", -1342944572, 14, -1), be_const_closure(set_percentage_closure) }, - { be_nested_key("get_percentage", -1414483304, 14, 7), be_const_closure(get_percentage_closure) }, + { be_nested_key("get_percentage", -1414483304, 14, -1), be_const_closure(get_percentage_closure) }, + { be_nested_key("init", 380752755, 4, 7), be_const_closure(init_closure) }, + { be_nested_key("set_percentage", -1342944572, 14, 0), be_const_closure(set_percentage_closure) }, + { be_nested_key("percentage", -1756136011, 10, 3), be_const_var(1) }, + { be_nested_key("area", -1693507260, 4, -1), be_const_var(4) }, + { be_nested_key("p2", -1622223641, 2, -1), be_const_var(3) }, + { be_nested_key("line_dsc", -200476318, 8, 1), be_const_var(5) }, + { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, })), (be_nested_const_str("lv_signal_bars", -780994737, 14)) ); diff --git a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be index 9200c406f..121ca89eb 100644 --- a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be +++ b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be @@ -3,9 +3,9 @@ --# class lv_signal_bars : lv_obj - var ancestor_design # previous design_cb - var percentage # value to display, range 0..100 - var p1, p2, line_dsc # instances of objects kept to avoid re-instanciating at each call + var ancestor_design # previous design_cb + var percentage # value to display, range 0..100 + var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call def init(parent, copy) # init parent object @@ -18,10 +18,11 @@ class lv_signal_bars : lv_obj # pre-allocate buffers self.p1 = lv_point() self.p2 = lv_point() + self.area = lv_area() self.line_dsc = lv_draw_line_dsc() end - def my_design_cb(area, mode) + def my_design_cb(clip_area, mode) def atleast1(x) if x >= 1 return x else return 1 end end # the model is that we have 4 bars and inter-bar (1/4 of width) var height = self.get_height() @@ -32,16 +33,16 @@ class lv_signal_bars : lv_obj var bar_offset = bar / 2 if mode == lv.DESIGN_COVER_CHK - #- Return false if the object is not covers the clip_area area -# - return self.ancestor_design.call(self, area, mode) + #- Return false if the object is not covers the clip_area clip_area -# + return self.ancestor_design.call(self, clip_area, mode) elif mode == lv.DESIGN_DRAW_MAIN - #self.ancestor_design.call(self, area, mode) # commented since we don't draw a background + #self.ancestor_design.call(self, clip_area, mode) # commented since we don't draw a background - # get coordinates of area - self.get_coords(area) - var x_ofs = area.x1 - var y_ofs = area.y1 + # get coordinates of object + self.get_coords(self.area) + var x_ofs = self.area.x1 + var y_ofs = self.area.y1 lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure self.init_draw_line_dsc(lv.OBJ_PART_MAIN, self.line_dsc) @@ -58,10 +59,10 @@ class lv_signal_bars : lv_obj self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset self.p2.y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset self.p2.x = self.p1.x - lv.draw_line(self.p1, self.p2, area, self.line_dsc) + lv.draw_line(self.p1, self.p2, clip_area, self.line_dsc) end #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object - #self.ancestor_design.call(self, area, mode) + #self.ancestor_design.call(self, clip_area, mode) end return lv.DESIGN_RES_OK end diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h index 0fea061de..8d79a9bbe 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_ctypes_map) { - { be_const_key(dot_def, -1), be_const_var(0) }, - { be_const_key(setmember, -1), be_const_func(be_ctypes_setmember) }, { be_const_key(init, -1), be_const_func(be_ctypes_init) }, - { be_const_key(member, 2), be_const_func(be_ctypes_member) }, + { be_const_key(setmember, 2), be_const_func(be_ctypes_setmember) }, + { be_const_key(member, -1), be_const_func(be_ctypes_member) }, + { be_const_key(dot_def, -1), be_const_var(0) }, + { be_const_key(copy, -1), be_const_func(be_ctypes_copy) }, }; static be_define_const_map( be_class_lv_ctypes_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( From 04c0f429815d308179266ae7c27deaca7c355603 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 8 Sep 2021 19:40:18 +0200 Subject: [PATCH 169/317] Improved wifi widgets --- .../Berry/default/be_lvgl_signal_arcs_lib.c | 439 ++++ .../default/be_lvgl_wifi_arcs_icon_lib.c | 123 + .../Berry/default/be_lvgl_wifi_arcs_lib.c | 168 ++ .../default/be_lvgl_wifi_bars_icon_lib.c | 119 + ...nal_wifi_lib.c => be_lvgl_wifi_bars_lib.c} | 130 +- lib/libesp32/Berry/default/be_modtab.c | 8 + lib/libesp32/Berry/default/be_tasmotalib.c | 122 +- .../Berry/default/embedded/Tasmota.be | 9 + .../Berry/default/embedded/lv_signal_arcs.be | 135 ++ .../Berry/default/embedded/lv_signal_bars.be | 20 + lib/libesp32/Berry/generate/be_const_strtab.h | 1349 +++++------ .../Berry/generate/be_const_strtab_def.h | 1988 +++++++++-------- .../generate/be_fixed_be_class_tasmota.h | 119 +- tasmota/berry/lvgl_examples/lvgl_demo.be | 9 +- 14 files changed, 2878 insertions(+), 1860 deletions(-) create mode 100644 lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c create mode 100644 lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c create mode 100644 lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c create mode 100644 lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c rename lib/libesp32/Berry/default/{be_lvgl_signal_wifi_lib.c => be_lvgl_wifi_bars_lib.c} (75%) create mode 100644 lib/libesp32/Berry/default/embedded/lv_signal_arcs.be diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c new file mode 100644 index 000000000..e33b5c205 --- /dev/null +++ b/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c @@ -0,0 +1,439 @@ +/******************************************************************** + * Tasmota LVGL lv_signal_bars widget + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_LVGL + +#include "lvgl.h" + +/******************************************************************** +** Solidified function: my_design_cb +********************************************************************/ +be_local_closure(my_design_cb, /* name */ + be_nested_proto( + 26, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_const_int(1), + }), + (be_nested_const_str("atleast1", 1956331672, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0x28040100, // 0000 GE R1 R0 K0 + 0x78060001, // 0001 JMPF R1 #0004 + 0x80040000, // 0002 RET 1 R0 + 0x70020000, // 0003 JMP #0005 + 0x80060000, // 0004 RET 1 K0 + 0x80000000, // 0005 RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[35]) { /* constants */ + /* K0 */ be_nested_string("math", -293037681, 4), + /* K1 */ be_nested_string("get_height", -723211773, 10), + /* K2 */ be_nested_string("get_width", -1001549996, 9), + /* K3 */ be_const_int(2), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_string("lv", 1529997255, 2), + /* K6 */ be_nested_string("DESIGN_COVER_CHK", -1298406708, 16), + /* K7 */ be_nested_string("ancestor_design", 421545719, 15), + /* K8 */ be_nested_string("call", -1276017495, 4), + /* K9 */ be_nested_string("DESIGN_DRAW_MAIN", -904475754, 16), + /* K10 */ be_nested_string("get_coords", 1044089006, 10), + /* K11 */ be_nested_string("area", -1693507260, 4), + /* K12 */ be_nested_string("x1", 274927234, 2), + /* K13 */ be_nested_string("y1", -1939865569, 2), + /* K14 */ be_nested_string("draw_line_dsc_init", -428273650, 18), + /* K15 */ be_nested_string("line_dsc", -200476318, 8), + /* K16 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), + /* K17 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), + /* K18 */ be_nested_string("round_start", -1345482912, 11), + /* K19 */ be_const_int(1), + /* K20 */ be_nested_string("round_end", 985288225, 9), + /* K21 */ be_nested_string("width", -1786286561, 5), + /* K22 */ be_nested_string("get_style_line_color", 805371932, 20), + /* K23 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K24 */ be_nested_string("get_style_bg_color", 964794381, 18), + /* K25 */ be_nested_string("deg", -967213025, 3), + /* K26 */ be_nested_string("acos", 1006755615, 4), + /* K27 */ be_nested_string("p1", -1605446022, 2), + /* K28 */ be_nested_string("x", -49524601, 1), + /* K29 */ be_nested_string("y", -66302220, 1), + /* K30 */ be_nested_string("color", 1031692888, 5), + /* K31 */ be_nested_string("percentage", -1756136011, 10), + /* K32 */ be_nested_string("draw_arc", 1828251676, 8), + /* K33 */ be_const_int(0), + /* K34 */ be_nested_string("DESIGN_RES_OK", -1265307123, 13), + }), + (be_nested_const_str("my_design_cb", -1173588798, 12)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[179]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x84100000, // 0001 CLOSURE R4 P0 + 0x8C140101, // 0002 GETMET R5 R0 K1 + 0x7C140200, // 0003 CALL R5 1 + 0x8C180102, // 0004 GETMET R6 R0 K2 + 0x7C180200, // 0005 CALL R6 1 + 0x5C1C0800, // 0006 MOVE R7 R4 + 0x54220007, // 0007 LDINT R8 8 + 0x0C200A08, // 0008 DIV R8 R5 R8 + 0x7C1C0200, // 0009 CALL R7 1 + 0x5C200800, // 000A MOVE R8 R4 + 0x08240F03, // 000B MUL R9 R7 K3 + 0x04240A09, // 000C SUB R9 R5 R9 + 0x0C241304, // 000D DIV R9 R9 K4 + 0x7C200200, // 000E CALL R8 1 + 0x0C241103, // 000F DIV R9 R8 K3 + 0xB82A0A00, // 0010 GETNGBL R10 K5 + 0x88281506, // 0011 GETMBR R10 R10 K6 + 0x1C28040A, // 0012 EQ R10 R2 R10 + 0x782A0007, // 0013 JMPF R10 #001C + 0x88280107, // 0014 GETMBR R10 R0 K7 + 0x8C281508, // 0015 GETMET R10 R10 K8 + 0x5C300000, // 0016 MOVE R12 R0 + 0x5C340200, // 0017 MOVE R13 R1 + 0x5C380400, // 0018 MOVE R14 R2 + 0x7C280800, // 0019 CALL R10 4 + 0x80041400, // 001A RET 1 R10 + 0x70020093, // 001B JMP #00B0 + 0xB82A0A00, // 001C GETNGBL R10 K5 + 0x88281509, // 001D GETMBR R10 R10 K9 + 0x1C28040A, // 001E EQ R10 R2 R10 + 0x782A008F, // 001F JMPF R10 #00B0 + 0x8C28010A, // 0020 GETMET R10 R0 K10 + 0x8830010B, // 0021 GETMBR R12 R0 K11 + 0x7C280400, // 0022 CALL R10 2 + 0x8828010B, // 0023 GETMBR R10 R0 K11 + 0x8828150C, // 0024 GETMBR R10 R10 K12 + 0x882C010B, // 0025 GETMBR R11 R0 K11 + 0x882C170D, // 0026 GETMBR R11 R11 K13 + 0xB8320A00, // 0027 GETNGBL R12 K5 + 0x8C30190E, // 0028 GETMET R12 R12 K14 + 0x8838010F, // 0029 GETMBR R14 R0 K15 + 0x7C300400, // 002A CALL R12 2 + 0x8C300110, // 002B GETMET R12 R0 K16 + 0xB83A0A00, // 002C GETNGBL R14 K5 + 0x88381D11, // 002D GETMBR R14 R14 K17 + 0x883C010F, // 002E GETMBR R15 R0 K15 + 0x7C300600, // 002F CALL R12 3 + 0x8830010F, // 0030 GETMBR R12 R0 K15 + 0x90322513, // 0031 SETMBR R12 K18 K19 + 0x8830010F, // 0032 GETMBR R12 R0 K15 + 0x90322913, // 0033 SETMBR R12 K20 K19 + 0x8830010F, // 0034 GETMBR R12 R0 K15 + 0x08341104, // 0035 MUL R13 R8 K4 + 0x00341B13, // 0036 ADD R13 R13 K19 + 0x543A0003, // 0037 LDINT R14 4 + 0x0C341A0E, // 0038 DIV R13 R13 R14 + 0x90322A0D, // 0039 SETMBR R12 K21 R13 + 0x8C300116, // 003A GETMET R12 R0 K22 + 0xB83A0A00, // 003B GETNGBL R14 K5 + 0x88381D11, // 003C GETMBR R14 R14 K17 + 0xB83E0A00, // 003D GETNGBL R15 K5 + 0x883C1F17, // 003E GETMBR R15 R15 K23 + 0x7C300600, // 003F CALL R12 3 + 0x8C340118, // 0040 GETMET R13 R0 K24 + 0xB83E0A00, // 0041 GETNGBL R15 K5 + 0x883C1F11, // 0042 GETMBR R15 R15 K17 + 0xB8420A00, // 0043 GETNGBL R16 K5 + 0x88402117, // 0044 GETMBR R16 R16 K23 + 0x7C340600, // 0045 CALL R13 3 + 0x04380A08, // 0046 SUB R14 R5 R8 + 0x0C3C0D03, // 0047 DIV R15 R6 K3 + 0x043C1E09, // 0048 SUB R15 R15 R9 + 0x60400007, // 0049 GETGBL R16 G7 + 0x54460059, // 004A LDINT R17 90 + 0x8C480719, // 004B GETMET R18 R3 K25 + 0x8C50071A, // 004C GETMET R20 R3 K26 + 0x60580011, // 004D GETGBL R22 G17 + 0x5C5C1E00, // 004E MOVE R23 R15 + 0x7C580200, // 004F CALL R22 1 + 0x605C0011, // 0050 GETGBL R23 G17 + 0x5C601C00, // 0051 MOVE R24 R14 + 0x7C5C0200, // 0052 CALL R23 1 + 0x0C582C17, // 0053 DIV R22 R22 R23 + 0x7C500400, // 0054 CALL R20 2 + 0x7C480400, // 0055 CALL R18 2 + 0x04442212, // 0056 SUB R17 R17 R18 + 0x7C400200, // 0057 CALL R16 1 + 0x5446002C, // 0058 LDINT R17 45 + 0x24442011, // 0059 GT R17 R16 R17 + 0x78460000, // 005A JMPF R17 #005C + 0x5442002C, // 005B LDINT R16 45 + 0x8844011B, // 005C GETMBR R17 R0 K27 + 0x0C480D03, // 005D DIV R18 R6 K3 + 0x00481412, // 005E ADD R18 R10 R18 + 0x90463812, // 005F SETMBR R17 K28 R18 + 0x8844011B, // 0060 GETMBR R17 R0 K27 + 0x00481605, // 0061 ADD R18 R11 R5 + 0x04482513, // 0062 SUB R18 R18 K19 + 0x04482409, // 0063 SUB R18 R18 R9 + 0x90463A12, // 0064 SETMBR R17 K29 R18 + 0x8844010F, // 0065 GETMBR R17 R0 K15 + 0x8848011F, // 0066 GETMBR R18 R0 K31 + 0x544E0018, // 0067 LDINT R19 25 + 0x28482413, // 0068 GE R18 R18 R19 + 0x784A0001, // 0069 JMPF R18 #006C + 0x5C481800, // 006A MOVE R18 R12 + 0x70020000, // 006B JMP #006D + 0x5C481A00, // 006C MOVE R18 R13 + 0x90463C12, // 006D SETMBR R17 K30 R18 + 0xB8460A00, // 006E GETNGBL R17 K5 + 0x8C442320, // 006F GETMET R17 R17 K32 + 0x884C011B, // 0070 GETMBR R19 R0 K27 + 0x884C271C, // 0071 GETMBR R19 R19 K28 + 0x8850011B, // 0072 GETMBR R20 R0 K27 + 0x8850291D, // 0073 GETMBR R20 R20 K29 + 0x00541007, // 0074 ADD R21 R8 R7 + 0x08564215, // 0075 MUL R21 K33 R21 + 0x00542A09, // 0076 ADD R21 R21 R9 + 0x58580021, // 0077 LDCONST R22 K33 + 0x545E0167, // 0078 LDINT R23 360 + 0x5C600200, // 0079 MOVE R24 R1 + 0x8864010F, // 007A GETMBR R25 R0 K15 + 0x7C441000, // 007B CALL R17 8 + 0x8844010F, // 007C GETMBR R17 R0 K15 + 0x8848011F, // 007D GETMBR R18 R0 K31 + 0x544E0031, // 007E LDINT R19 50 + 0x28482413, // 007F GE R18 R18 R19 + 0x784A0001, // 0080 JMPF R18 #0083 + 0x5C481800, // 0081 MOVE R18 R12 + 0x70020000, // 0082 JMP #0084 + 0x5C481A00, // 0083 MOVE R18 R13 + 0x90463C12, // 0084 SETMBR R17 K30 R18 + 0xB8460A00, // 0085 GETNGBL R17 K5 + 0x8C442320, // 0086 GETMET R17 R17 K32 + 0x884C011B, // 0087 GETMBR R19 R0 K27 + 0x884C271C, // 0088 GETMBR R19 R19 K28 + 0x8850011B, // 0089 GETMBR R20 R0 K27 + 0x8850291D, // 008A GETMBR R20 R20 K29 + 0x00541007, // 008B ADD R21 R8 R7 + 0x08562615, // 008C MUL R21 K19 R21 + 0x00542A09, // 008D ADD R21 R21 R9 + 0x04542B13, // 008E SUB R21 R21 K19 + 0x545A010D, // 008F LDINT R22 270 + 0x04582C10, // 0090 SUB R22 R22 R16 + 0x545E010D, // 0091 LDINT R23 270 + 0x005C2E10, // 0092 ADD R23 R23 R16 + 0x5C600200, // 0093 MOVE R24 R1 + 0x8864010F, // 0094 GETMBR R25 R0 K15 + 0x7C441000, // 0095 CALL R17 8 + 0x8844010F, // 0096 GETMBR R17 R0 K15 + 0x8848011F, // 0097 GETMBR R18 R0 K31 + 0x544E004A, // 0098 LDINT R19 75 + 0x28482413, // 0099 GE R18 R18 R19 + 0x784A0001, // 009A JMPF R18 #009D + 0x5C481800, // 009B MOVE R18 R12 + 0x70020000, // 009C JMP #009E + 0x5C481A00, // 009D MOVE R18 R13 + 0x90463C12, // 009E SETMBR R17 K30 R18 + 0xB8460A00, // 009F GETNGBL R17 K5 + 0x8C442320, // 00A0 GETMET R17 R17 K32 + 0x884C011B, // 00A1 GETMBR R19 R0 K27 + 0x884C271C, // 00A2 GETMBR R19 R19 K28 + 0x8850011B, // 00A3 GETMBR R20 R0 K27 + 0x8850291D, // 00A4 GETMBR R20 R20 K29 + 0x00541007, // 00A5 ADD R21 R8 R7 + 0x08560615, // 00A6 MUL R21 K3 R21 + 0x00542A09, // 00A7 ADD R21 R21 R9 + 0x04542B03, // 00A8 SUB R21 R21 K3 + 0x545A010D, // 00A9 LDINT R22 270 + 0x04582C10, // 00AA SUB R22 R22 R16 + 0x545E010D, // 00AB LDINT R23 270 + 0x005C2E10, // 00AC ADD R23 R23 R16 + 0x5C600200, // 00AD MOVE R24 R1 + 0x8864010F, // 00AE GETMBR R25 R0 K15 + 0x7C441000, // 00AF CALL R17 8 + 0xB82A0A00, // 00B0 GETNGBL R10 K5 + 0x88281522, // 00B1 GETMBR R10 R10 K34 + 0x80041400, // 00B2 RET 1 R10 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_percentage +********************************************************************/ +be_local_closure(get_percentage, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + }), + (be_nested_const_str("get_percentage", -1414483304, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("ancestor_design", 421545719, 15), + /* K2 */ be_nested_string("get_design_cb", -825649242, 13), + /* K3 */ be_nested_string("set_design_cb", 1469311634, 13), + /* K4 */ be_nested_string("my_design_cb", -1173588798, 12), + /* K5 */ be_nested_string("percentage", -1756136011, 10), + /* K6 */ be_nested_string("p1", -1605446022, 2), + /* K7 */ be_nested_string("lv_point", -174745506, 8), + /* K8 */ be_nested_string("p2", -1622223641, 2), + /* K9 */ be_nested_string("area", -1693507260, 4), + /* K10 */ be_nested_string("lv_area", -1773816895, 7), + /* K11 */ be_nested_string("line_dsc", -200476318, 8), + /* K12 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[28]) { /* code */ + 0x600C0014, // 0000 GETGBL R3 G20 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x8C0C0102, // 0007 GETMET R3 R0 K2 + 0x7C0C0200, // 0008 CALL R3 1 + 0x90020203, // 0009 SETMBR R0 K1 R3 + 0x8C0C0103, // 000A GETMET R3 R0 K3 + 0x88140104, // 000B GETMBR R5 R0 K4 + 0x7C0C0400, // 000C CALL R3 2 + 0x540E0063, // 000D LDINT R3 100 + 0x90020A03, // 000E SETMBR R0 K5 R3 + 0xB80E0E00, // 000F GETNGBL R3 K7 + 0x7C0C0000, // 0010 CALL R3 0 + 0x90020C03, // 0011 SETMBR R0 K6 R3 + 0xB80E0E00, // 0012 GETNGBL R3 K7 + 0x7C0C0000, // 0013 CALL R3 0 + 0x90021003, // 0014 SETMBR R0 K8 R3 + 0xB80E1400, // 0015 GETNGBL R3 K10 + 0x7C0C0000, // 0016 CALL R3 0 + 0x90021203, // 0017 SETMBR R0 K9 R3 + 0xB80E1800, // 0018 GETNGBL R3 K12 + 0x7C0C0000, // 0019 CALL R3 0 + 0x90021603, // 001A SETMBR R0 K11 R3 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_percentage +********************************************************************/ +be_local_closure(set_percentage, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("invalidate", -1645232368, 10), + }), + (be_nested_const_str("set_percentage", -1342944572, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[18]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x540E0003, // 0001 LDINT R3 4 + 0x0C080403, // 0002 DIV R2 R2 R3 + 0x540E0063, // 0003 LDINT R3 100 + 0x240C0203, // 0004 GT R3 R1 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x54060063, // 0006 LDINT R1 100 + 0x140C0301, // 0007 LT R3 R1 K1 + 0x780E0000, // 0008 JMPF R3 #000A + 0x58040001, // 0009 LDCONST R1 K1 + 0x90020001, // 000A SETMBR R0 K0 R1 + 0x540E0003, // 000B LDINT R3 4 + 0x0C0C0203, // 000C DIV R3 R1 R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0001, // 000E JMPF R3 #0011 + 0x8C0C0102, // 000F GETMET R3 R0 K2 + 0x7C0C0200, // 0010 CALL R3 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: lv_signal_arcs +********************************************************************/ +extern const bclass be_class_lv_obj; +be_local_class(lv_signal_arcs, + 6, + &be_class_lv_obj, + be_nested_map(10, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("p1", -1605446022, 2, -1), be_const_var(2) }, + { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, + { be_nested_key("get_percentage", -1414483304, 14, -1), be_const_closure(get_percentage_closure) }, + { be_nested_key("init", 380752755, 4, 7), be_const_closure(init_closure) }, + { be_nested_key("set_percentage", -1342944572, 14, 0), be_const_closure(set_percentage_closure) }, + { be_nested_key("percentage", -1756136011, 10, 3), be_const_var(1) }, + { be_nested_key("area", -1693507260, 4, -1), be_const_var(4) }, + { be_nested_key("p2", -1622223641, 2, -1), be_const_var(3) }, + { be_nested_key("line_dsc", -200476318, 8, 1), be_const_var(5) }, + { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, + })), + (be_nested_const_str("lv_signal_arcs", -1455810308, 14)) +); +/*******************************************************************/ + +void be_load_lv_signal_arcs_class(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_signal_arcs); + be_setglobal(vm, "lv_signal_arcs"); + be_pop(vm, 1); +} + +#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c new file mode 100644 index 000000000..c46b09034 --- /dev/null +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c @@ -0,0 +1,123 @@ +/******************************************************************** + * Tasmota LVGL lv_signal_bars widget + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_LVGL + +#include "lvgl.h" + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("set_style_local_bg_color", -498263023, 24), + /* K2 */ be_nested_string("lv", 1529997255, 2), + /* K3 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), + /* K4 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K5 */ be_nested_string("lv_color", 1419148319, 8), + /* K6 */ be_nested_string("COLOR_BLACK", 264427940, 11), + /* K7 */ be_nested_string("get_height", -723211773, 10), + /* K8 */ be_nested_string("get_style_pad_right", -1144679830, 19), + /* K9 */ be_nested_string("set_height", 1080207399, 10), + /* K10 */ be_const_int(3), + /* K11 */ be_nested_string("set_width", 484671920, 9), + /* K12 */ be_nested_string("set_x", 1849400772, 5), + /* K13 */ be_nested_string("get_width", -1001549996, 9), + /* K14 */ be_nested_string("set_style_local_pad_right", 1126712366, 25), + /* K15 */ be_const_int(1), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[52]) { /* code */ + 0x600C0014, // 0000 GETGBL R3 G20 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x8C0C0101, // 0007 GETMET R3 R0 K1 + 0xB8160400, // 0008 GETNGBL R5 K2 + 0x88140B03, // 0009 GETMBR R5 R5 K3 + 0xB81A0400, // 000A GETNGBL R6 K2 + 0x88180D04, // 000B GETMBR R6 R6 K4 + 0xB81E0A00, // 000C GETNGBL R7 K5 + 0xB8220400, // 000D GETNGBL R8 K2 + 0x88201106, // 000E GETMBR R8 R8 K6 + 0x7C1C0200, // 000F CALL R7 1 + 0x7C0C0800, // 0010 CALL R3 4 + 0x4C0C0000, // 0011 LDNIL R3 + 0x200C0203, // 0012 NE R3 R1 R3 + 0x780E001E, // 0013 JMPF R3 #0033 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C100308, // 0016 GETMET R4 R1 K8 + 0xB81A0400, // 0017 GETNGBL R6 K2 + 0x88180D03, // 0018 GETMBR R6 R6 K3 + 0xB81E0400, // 0019 GETNGBL R7 K2 + 0x881C0F04, // 001A GETMBR R7 R7 K4 + 0x7C100600, // 001B CALL R4 3 + 0x8C140109, // 001C GETMET R5 R0 K9 + 0x5C1C0600, // 001D MOVE R7 R3 + 0x7C140400, // 001E CALL R5 2 + 0x54160003, // 001F LDINT R5 4 + 0x08140605, // 0020 MUL R5 R3 R5 + 0x0C140B0A, // 0021 DIV R5 R5 K10 + 0x8C18010B, // 0022 GETMET R6 R0 K11 + 0x5C200A00, // 0023 MOVE R8 R5 + 0x7C180400, // 0024 CALL R6 2 + 0x8C18010C, // 0025 GETMET R6 R0 K12 + 0x8C20030D, // 0026 GETMET R8 R1 K13 + 0x7C200200, // 0027 CALL R8 1 + 0x04201005, // 0028 SUB R8 R8 R5 + 0x04201004, // 0029 SUB R8 R8 R4 + 0x7C180400, // 002A CALL R6 2 + 0x8C18030E, // 002B GETMET R6 R1 K14 + 0xB8220400, // 002C GETNGBL R8 K2 + 0x88201103, // 002D GETMBR R8 R8 K3 + 0xB8260400, // 002E GETNGBL R9 K2 + 0x88241304, // 002F GETMBR R9 R9 K4 + 0x00280805, // 0030 ADD R10 R4 R5 + 0x0028150F, // 0031 ADD R10 R10 K15 + 0x7C180800, // 0032 CALL R6 4 + 0x80000000, // 0033 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: lv_wifi_arcs_icon +********************************************************************/ +extern const bclass be_class_lv_wifi_arcs; +be_local_class(lv_wifi_arcs_icon, + 0, + &be_class_lv_wifi_arcs, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, + })), + (be_nested_const_str("lv_wifi_arcs_icon", 1507982909, 17)) +); +/*******************************************************************/ + +void be_load_lv_wifi_arcs_icon_class(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_wifi_arcs_icon); + be_setglobal(vm, "lv_wifi_arcs_icon"); + be_pop(vm, 1); +} + +#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c new file mode 100644 index 000000000..300b019d1 --- /dev/null +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c @@ -0,0 +1,168 @@ +/******************************************************************** + * Tasmota LVGL lv_signal_bars widget + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_LVGL + +#include "lvgl.h" + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(every_second, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_string("tasmota", 424643812, 7), + /* K1 */ be_nested_string("wifi", 120087624, 4), + /* K2 */ be_nested_string("find", -1108310694, 4), + /* K3 */ be_nested_string("quality", -1697296346, 7), + /* K4 */ be_nested_string("ip", 1261996636, 2), + /* K5 */ be_nested_string("set_percentage", -1342944572, 14), + /* K6 */ be_const_int(0), + }), + (be_nested_const_str("every_second", 2075451465, 12)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[23]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x58100003, // 0004 LDCONST R4 K3 + 0x7C080400, // 0005 CALL R2 2 + 0x8C0C0302, // 0006 GETMET R3 R1 K2 + 0x58140004, // 0007 LDCONST R5 K4 + 0x7C0C0400, // 0008 CALL R3 2 + 0x4C100000, // 0009 LDNIL R4 + 0x1C100604, // 000A EQ R4 R3 R4 + 0x78120003, // 000B JMPF R4 #0010 + 0x8C100105, // 000C GETMET R4 R0 K5 + 0x58180006, // 000D LDCONST R6 K6 + 0x7C100400, // 000E CALL R4 2 + 0x70020005, // 000F JMP #0016 + 0x4C100000, // 0010 LDNIL R4 + 0x20100404, // 0011 NE R4 R2 R4 + 0x78120002, // 0012 JMPF R4 #0016 + 0x8C100105, // 0013 GETMET R4 R0 K5 + 0x5C180400, // 0014 MOVE R6 R2 + 0x7C100400, // 0015 CALL R4 2 + 0x80000000, // 0016 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("add_driver", 1654458371, 10), + /* K3 */ be_nested_string("set_percentage", -1342944572, 14), + /* K4 */ be_const_int(0), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[15]) { /* code */ + 0x600C0014, // 0000 GETGBL R3 G20 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0xB80E0200, // 0007 GETNGBL R3 K1 + 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x5C140000, // 0009 MOVE R5 R0 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x58140004, // 000C LDCONST R5 K4 + 0x7C0C0400, // 000D CALL R3 2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: del +********************************************************************/ +be_local_closure(del, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("del", -816214454, 3), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("remove_driver", 1030243768, 13), + }), + (be_nested_const_str("del", -816214454, 3)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[10]) { /* code */ + 0x60040014, // 0000 GETGBL R1 G20 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x5C0C0000, // 0007 MOVE R3 R0 + 0x7C040400, // 0008 CALL R1 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: lv_wifi_arcs +********************************************************************/ +extern const bclass be_class_lv_signal_arcs; +be_local_class(lv_wifi_arcs, + 0, + &be_class_lv_signal_arcs, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("every_second", 2075451465, 12, 1), be_const_closure(every_second_closure) }, + { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, + { be_nested_key("del", -816214454, 3, -1), be_const_closure(del_closure) }, + })), + (be_nested_const_str("lv_wifi_arcs", 2082091963, 12)) +); +/*******************************************************************/ + +void be_load_lv_wifi_arcs_class(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_wifi_arcs); + be_setglobal(vm, "lv_wifi_arcs"); + be_pop(vm, 1); +} + +#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c new file mode 100644 index 000000000..a96a71e66 --- /dev/null +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c @@ -0,0 +1,119 @@ +/******************************************************************** + * Tasmota LVGL lv_signal_bars widget + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_LVGL + +#include "lvgl.h" + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("set_style_local_bg_color", -498263023, 24), + /* K2 */ be_nested_string("lv", 1529997255, 2), + /* K3 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), + /* K4 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K5 */ be_nested_string("lv_color", 1419148319, 8), + /* K6 */ be_nested_string("COLOR_BLACK", 264427940, 11), + /* K7 */ be_nested_string("get_height", -723211773, 10), + /* K8 */ be_nested_string("get_style_pad_right", -1144679830, 19), + /* K9 */ be_nested_string("set_height", 1080207399, 10), + /* K10 */ be_nested_string("set_width", 484671920, 9), + /* K11 */ be_nested_string("set_x", 1849400772, 5), + /* K12 */ be_nested_string("get_width", -1001549996, 9), + /* K13 */ be_nested_string("set_style_local_pad_right", 1126712366, 25), + /* K14 */ be_const_int(1), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[49]) { /* code */ + 0x600C0014, // 0000 GETGBL R3 G20 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0x8C0C0101, // 0007 GETMET R3 R0 K1 + 0xB8160400, // 0008 GETNGBL R5 K2 + 0x88140B03, // 0009 GETMBR R5 R5 K3 + 0xB81A0400, // 000A GETNGBL R6 K2 + 0x88180D04, // 000B GETMBR R6 R6 K4 + 0xB81E0A00, // 000C GETNGBL R7 K5 + 0xB8220400, // 000D GETNGBL R8 K2 + 0x88201106, // 000E GETMBR R8 R8 K6 + 0x7C1C0200, // 000F CALL R7 1 + 0x7C0C0800, // 0010 CALL R3 4 + 0x4C0C0000, // 0011 LDNIL R3 + 0x200C0203, // 0012 NE R3 R1 R3 + 0x780E001B, // 0013 JMPF R3 #0030 + 0x8C0C0307, // 0014 GETMET R3 R1 K7 + 0x7C0C0200, // 0015 CALL R3 1 + 0x8C100308, // 0016 GETMET R4 R1 K8 + 0xB81A0400, // 0017 GETNGBL R6 K2 + 0x88180D03, // 0018 GETMBR R6 R6 K3 + 0xB81E0400, // 0019 GETNGBL R7 K2 + 0x881C0F04, // 001A GETMBR R7 R7 K4 + 0x7C100600, // 001B CALL R4 3 + 0x8C140109, // 001C GETMET R5 R0 K9 + 0x5C1C0600, // 001D MOVE R7 R3 + 0x7C140400, // 001E CALL R5 2 + 0x8C14010A, // 001F GETMET R5 R0 K10 + 0x5C1C0600, // 0020 MOVE R7 R3 + 0x7C140400, // 0021 CALL R5 2 + 0x8C14010B, // 0022 GETMET R5 R0 K11 + 0x8C1C030C, // 0023 GETMET R7 R1 K12 + 0x7C1C0200, // 0024 CALL R7 1 + 0x041C0E03, // 0025 SUB R7 R7 R3 + 0x041C0E04, // 0026 SUB R7 R7 R4 + 0x7C140400, // 0027 CALL R5 2 + 0x8C14030D, // 0028 GETMET R5 R1 K13 + 0xB81E0400, // 0029 GETNGBL R7 K2 + 0x881C0F03, // 002A GETMBR R7 R7 K3 + 0xB8220400, // 002B GETNGBL R8 K2 + 0x88201104, // 002C GETMBR R8 R8 K4 + 0x00240803, // 002D ADD R9 R4 R3 + 0x0024130E, // 002E ADD R9 R9 K14 + 0x7C140800, // 002F CALL R5 4 + 0x80000000, // 0030 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: lv_wifi_bars_icon +********************************************************************/ +extern const bclass be_class_lv_wifi_bars; +be_local_class(lv_wifi_bars_icon, + 0, + &be_class_lv_wifi_bars, + be_nested_map(1, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, + })), + (be_nested_const_str("lv_wifi_bars_icon", -1489151756, 17)) +); +/*******************************************************************/ + +void be_load_lv_wifi_bars_icon_class(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_wifi_bars_icon); + be_setglobal(vm, "lv_wifi_bars_icon"); + be_pop(vm, 1); +} + +#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c similarity index 75% rename from lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c rename to lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c index 90454c647..6e4540b2b 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_wifi_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c @@ -7,50 +7,6 @@ #include "lvgl.h" -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(init, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_string("init", 380752755, 4), - /* K1 */ be_nested_string("tasmota", 424643812, 7), - /* K2 */ be_nested_string("add_driver", 1654458371, 10), - /* K3 */ be_nested_string("set_percentage", -1342944572, 14), - /* K4 */ be_const_int(0), - }), - (be_nested_const_str("init", 380752755, 4)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[15]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0xB80E0200, // 0007 GETNGBL R3 K1 - 0x8C0C0702, // 0008 GETMET R3 R3 K2 - 0x5C140000, // 0009 MOVE R5 R0 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x58140004, // 000C LDCONST R5 K4 - 0x7C0C0400, // 000D CALL R3 2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: every_second ********************************************************************/ @@ -105,6 +61,87 @@ be_local_closure(every_second, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("add_driver", 1654458371, 10), + /* K3 */ be_nested_string("set_percentage", -1342944572, 14), + /* K4 */ be_const_int(0), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[15]) { /* code */ + 0x600C0014, // 0000 GETGBL R3 G20 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0xB80E0200, // 0007 GETNGBL R3 K1 + 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x5C140000, // 0009 MOVE R5 R0 + 0x7C0C0400, // 000A CALL R3 2 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x58140004, // 000C LDCONST R5 K4 + 0x7C0C0400, // 000D CALL R3 2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: del +********************************************************************/ +be_local_closure(del, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("del", -816214454, 3), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("remove_driver", 1030243768, 13), + }), + (be_nested_const_str("del", -816214454, 3)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[10]) { /* code */ + 0x60040014, // 0000 GETGBL R1 G20 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x5C0C0000, // 0007 MOVE R3 R0 + 0x7C040400, // 0008 CALL R1 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: lv_wifi_bars ********************************************************************/ @@ -112,10 +149,11 @@ extern const bclass be_class_lv_signal_bars; be_local_class(lv_wifi_bars, 0, &be_class_lv_signal_bars, - be_nested_map(2, + be_nested_map(3, ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("every_second", 2075451465, 12, 1), be_const_closure(every_second_closure) }, { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, - { be_nested_key("every_second", 2075451465, 12, 0), be_const_closure(every_second_closure) }, + { be_nested_key("del", -816214454, 3, -1), be_const_closure(del_closure) }, })), (be_nested_const_str("lv_wifi_bars", 2109539196, 12)) ); diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 10ddb439f..6382d0855 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -127,6 +127,10 @@ extern void be_load_ctypes_definitions_lib(bvm *vm); // custom widgets extern void be_load_lv_signal_bars_class(bvm *vm); extern void be_load_lv_wifi_bars_class(bvm *vm); +extern void be_load_lv_wifi_bars_icon_class(bvm *vm); +extern void be_load_lv_signal_arcs_class(bvm *vm); +extern void be_load_lv_wifi_arcs_class(bvm *vm); +extern void be_load_lv_wifi_arcs_icon_class(bvm *vm); #endif// USE_LVGL /* this code loads the native class definitions */ @@ -171,6 +175,10 @@ BERRY_API void be_load_custom_libs(bvm *vm) // custom widgets be_load_lv_signal_bars_class(vm); be_load_lv_wifi_bars_class(vm); + be_load_lv_wifi_bars_icon_class(vm); + be_load_lv_signal_arcs_class(vm); + be_load_lv_wifi_arcs_class(vm); + be_load_lv_wifi_arcs_icon_class(vm); #endif // USE_LVGL } #endif diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 4498df7ec..662a4b72d 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -1462,6 +1462,46 @@ be_local_closure(add_driver, /* name */ ); /*******************************************************************/ +/******************************************************************** +** Solidified function: remove_driver +********************************************************************/ +be_local_closure(remove_driver, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("_drivers", -1034638311, 8), + /* K1 */ be_nested_string("find", -1108310694, 4), + /* K2 */ be_nested_string("pop", 1362321360, 3), + }), + (be_nested_const_str("remove_driver", 1030243768, 13)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[14]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A000A, // 0001 JMPF R2 #000D + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x4C0C0000, // 0006 LDNIL R3 + 0x200C0403, // 0007 NE R3 R2 R3 + 0x780E0003, // 0008 JMPF R3 #000D + 0x880C0100, // 0009 GETMBR R3 R0 K0 + 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C0C0400, // 000C CALL R3 2 + 0x80000000, // 000D RET 0 + }) + ) +); +/*******************************************************************/ + /******************************************************************** ** Solidified function: load ********************************************************************/ @@ -2105,96 +2145,15 @@ be_local_closure(gen_cb, /* name */ /*******************************************************************/ -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_class_tasmota.h" -#endif // Class definition void be_load_tasmota_ntvlib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { "_rules", NULL }, - { "_timers", NULL }, - { "_ccmd", NULL }, - { "_drivers", NULL }, - { "_cb", NULL}, - { "wire1", NULL }, - { "wire2", NULL }, - { "get_free_heap", l_getFreeHeap }, - { "publish", l_publish }, - { "publish_result", l_publish_result }, - { "_cmd", l_cmd }, - { "_get_cb", l_get_cb }, - { "get_option", l_getoption }, - { "millis", l_millis }, - { "time_reached", l_timereached }, - { "rtc", l_rtc }, - { "time_dump", l_time_dump }, - { "memory", l_memory }, - { "wifi", l_wifi }, - { "eth", l_eth }, - { "yield", l_yield }, - { "delay", l_delay }, - { "scale_uint", l_scaleuint }, - { "log", l_logInfo }, - { "save", l_save }, - - { "resp_cmnd", l_respCmnd }, - { "resp_cmnd_str", l_respCmndStr }, - { "resp_cmnd_done", l_respCmndDone }, - { "resp_cmnd_error", l_respCmndError }, - { "resp_cmnd_failed", l_respCmndFailed }, - { "resolvecmnd", l_resolveCmnd }, - - { "response_append", l_respAppend }, - { "web_send", l_webSend }, - { "web_send_decimal", l_webSendDecimal }, - - { "get_power", l_getpower }, - { "set_power", l_setpower }, - - { "i2c_enabled", l_i2cenabled }, - - { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - { "cmd", (bntvfunc) &cmd_closure }, - { "chars_in_string", (bntvfunc) &chars_in_string_closure }, - { "find_key_i", (bntvfunc) &find_key_i_closure }, - { "find_op", (bntvfunc) &find_op_closure }, - { "add_rule", (bntvfunc) &add_rule_closure }, - { "remove_rule", (bntvfunc) &remove_rule_closure }, - { "try_rule", (bntvfunc) &try_rule_closure }, - { "exec_rules", (bntvfunc) &exec_rules_closure }, - { "set_timer", (bntvfunc) &set_timer_closure }, - { "run_deferred", (bntvfunc) &run_deferred_closure }, - { "remove_timer", (bntvfunc) &remove_timer_closure }, - { "add_cmd", (bntvfunc) &add_cmd_closure }, - { "remove_cmd", (bntvfunc) &remove_cmd_closure }, - { "exec_cmd", (bntvfunc) &exec_cmd_closure }, - { "gc", (bntvfunc) &gc_closure }, - { "event", (bntvfunc) &event_closure }, - { "add_driver", (bntvfunc) &add_driver_closure }, - { "load", (bntvfunc) &load_closure }, - { "wire_scan", (bntvfunc) &wire_scan_closure }, - { "time_str", (bntvfunc) &time_str_closure }, - - // callbacks - { "cb_dispatch", (bntvfunc) &cb_dispatch_closure }, - { "gen_cb", (bntvfunc) &gen_cb_closure }, - - // deprecated - { "get_light", (bntvfunc) &get_light_closure }, - { "set_light", (bntvfunc) &set_light_closure }, - - { NULL, NULL } - }; - be_regclass(vm, "Tasmota", members); -#else be_pushntvclass(vm, &be_class_tasmota); be_setglobal(vm, "Tasmota"); be_pop(vm, 1); -#endif } /* @const_object_info_begin @@ -2260,6 +2219,7 @@ class be_class_tasmota (scope: global, name: Tasmota) { gc, closure(gc_closure) event, closure(event_closure) add_driver, closure(add_driver_closure) + remove_driver, closure(remove_driver_closure) load, closure(load_closure) wire_scan, closure(wire_scan_closure) time_str, closure(time_str_closure) diff --git a/lib/libesp32/Berry/default/embedded/Tasmota.be b/lib/libesp32/Berry/default/embedded/Tasmota.be index b0cffc511..4390310c2 100644 --- a/lib/libesp32/Berry/default/embedded/Tasmota.be +++ b/lib/libesp32/Berry/default/embedded/Tasmota.be @@ -302,6 +302,15 @@ class Tasmota end end + def remove_driver(d) + if self._drivers + var idx = self._drivers.find(d) + if idx != nil + self._drivers.pop(idx) + end + end + end + # cmd high-level function def cmd(command) import json diff --git a/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be b/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be new file mode 100644 index 000000000..240e1a298 --- /dev/null +++ b/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be @@ -0,0 +1,135 @@ +#- LVGL lv_signal_bars and lv_wifi_bars + - +--# + +class lv_signal_arcs : lv_obj + var ancestor_design # previous design_cb + var percentage # value to display, range 0..100 + var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call + + def init(parent, copy) + # init parent object + super(self).init(parent, copy) + # keep a copy of + self.ancestor_design = self.get_design_cb() + self.set_design_cb(self.my_design_cb) + # own values + self.percentage = 100 + # pre-allocate buffers + self.p1 = lv_point() + self.p2 = lv_point() + self.area = lv_area() + self.line_dsc = lv_draw_line_dsc() + end + + def my_design_cb(clip_area, mode) + import math + def atleast1(x) if x >= 1 return x else return 1 end end + # the model is that we have 4 bars and inter-bar (1/4 of width) + var height = self.get_height() + var width = self.get_width() + + var inter_bar = atleast1(height / 8) + var bar = atleast1((height - inter_bar * 2) / 3) + var bar_offset = bar / 2 + #print("inter_bar", inter_bar, "bar", bar, "bar_offset", bar_offset) + if mode == lv.DESIGN_COVER_CHK + #- Return false if the object is not covers the clip_area clip_area -# + return self.ancestor_design.call(self, clip_area, mode) + + elif mode == lv.DESIGN_DRAW_MAIN + #self.ancestor_design.call(self, clip_area, mode) # commented since we don't draw a background + + # get coordinates of object + self.get_coords(self.area) + var x_ofs = self.area.x1 + var y_ofs = self.area.y1 + lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure + self.init_draw_line_dsc(lv.OBJ_PART_MAIN, self.line_dsc) # copy the current values + + self.line_dsc.round_start = 1 + self.line_dsc.round_end = 1 + self.line_dsc.width = (bar * 3 + 1) / 4 + var on_color = self.get_style_line_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + var off_color = self.get_style_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + + # initial calculation, but does not take into account bounding box + # var angle = int(math.deg(math.atan2(width / 2, height))) + + # better calculation + var hypotenuse = height - bar # center if at bar/2 from bottom and circle stops at bar/2 from top + var adjacent = width / 2 - bar_offset # stop at bar_offset from side + var angle = int(90 - math.deg(math.acos(real(adjacent) / real(hypotenuse)))) + if (angle > 45) angle = 45 end + + # print("hypotenuse",hypotenuse,"adjacent",adjacent,"angle",angle) + self.p1.x = x_ofs + width / 2 + self.p1.y = y_ofs + height - 1 - bar_offset + + self.line_dsc.color = self.percentage >= 25 ? on_color : off_color + lv.draw_arc(self.p1.x, self.p1.y, 0 * (bar + inter_bar) + bar_offset, 0, 360, clip_area, self.line_dsc) + self.line_dsc.color = self.percentage >= 50 ? on_color : off_color + lv.draw_arc(self.p1.x, self.p1.y, 1 * (bar + inter_bar) + bar_offset - 1, 270 - angle, 270 + angle, clip_area, self.line_dsc) + self.line_dsc.color = self.percentage >= 75 ? on_color : off_color + lv.draw_arc(self.p1.x, self.p1.y, 2 * (bar + inter_bar) + bar_offset - 2, 270 - angle, 270 + angle, clip_area, self.line_dsc) + + #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object + # self.ancestor_design.call(self, clip_area, mode) + end + return lv.DESIGN_RES_OK + end + + def set_percentage(v) + var old_bars = self.percentage / 4 + if v > 100 v = 100 end + if v < 0 v = 0 end + self.percentage = v + if old_bars != v / 4 + self.invalidate() # be frugal and avoid updating the widget if it's not needed + end + end + + def get_percentage() + return self.percentage + end +end + +class lv_wifi_arcs: lv_signal_arcs + def init(parent, copy) + super(self).init(parent, copy) + tasmota.add_driver(self) + self.set_percentage(0) # we generally start with 0, meaning not connected + end + + def every_second() + var wifi = tasmota.wifi() + var quality = wifi.find("quality") + var ip = wifi.find("ip") + if ip == nil + self.set_percentage(0) + elif quality != nil + self.set_percentage(quality) + end + end + + def del() + super(self).del() + tasmota.remove_driver(self) + end +end + +class lv_wifi_arcs_icon: lv_wifi_arcs + def init(parent, copy) + super(self).init(parent, copy) + self.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) + if parent != nil + var parent_height = parent.get_height() + var pad_right = parent.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + self.set_height(parent_height) + var w = (parent_height*4)/3 + self.set_width(w) # 130% + self.set_x(parent.get_width() - w - pad_right) + parent.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, pad_right + w + 1) + end + end +end \ No newline at end of file diff --git a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be index 121ca89eb..ca82014ea 100644 --- a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be +++ b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be @@ -99,4 +99,24 @@ class lv_wifi_bars: lv_signal_bars self.set_percentage(quality) end end + + def del() + super(self).del() + tasmota.remove_driver(self) + end end + +class lv_wifi_bars_icon: lv_wifi_bars + def init(parent, copy) + super(self).init(parent, copy) + self.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) + if parent != nil + var parent_height = parent.get_height() + var pad_right = parent.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + self.set_height(parent_height) + self.set_width(parent_height) + self.set_x(parent.get_width() - parent_height - pad_right) + parent.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, pad_right + parent_height + 1) + end + end +end \ No newline at end of file diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 1f9279137..26bebb7f8 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,681 +1,682 @@ -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_vcall; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_EPAPER42_CS; extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_VL53L0X_XSHUT1; extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_toupper; extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lower; extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_lv_style; extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_vcall; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_lv_switch; extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_ILI9488_CS; extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_lv_spinbox; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 97afcd637..91c1697fc 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1019 +1,1021 @@ -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_DDSU666_TX); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_EC_C25519); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DHT11_OUT); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); -be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_MHZ_TXD); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2S_IN_SLCT); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_KEY1_TC); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_do); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_do); be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_CSE7766_TX); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_VL53L0X_XSHUT1); be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_FALLING); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_BACKLIGHT); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_MAX7219DIN); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_MAX31855DO); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_INTERRUPT); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_P9813_DAT); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_I2S_IN_DATA); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_KEY1_INV_PD); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, NULL); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_false); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SHELLY_DIMMER_BOOT0); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_tostring); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_tostring); be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_set_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_HM10_TX); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_vcall); +be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_ADE7953_IRQ); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_set_light); be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_ARIRFRCV); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_IRRECV); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_super); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_ADC_RANGE); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DSB_OUT); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_super); be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_continue); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_NONE); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_continue); be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_POST); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_ETH_PHY_MDIO); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_HJL_CF); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_AS608_TX); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_MGC3130_RESET); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_AudioFileSource); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2C_SCL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_ADC_TEMP); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OPTION_A); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_HALLEFFECT); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, NULL); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_BL0940_RX); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_INPUT_PULLDOWN); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_stop, - (const bstring *)&be_const_str_gamma10, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_lv_draw_mask_angle_param, - (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_resp_cmnd_failed, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_dot_def, NULL, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_SYMBOL_LEFT, - NULL, - (const bstring *)&be_const_str_pin_mode, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str___upper__, - NULL, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_LMT01, - NULL, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_EPAPER29_CS, - NULL, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_I2C_SCL, - NULL, - (const bstring *)&be_const_str_vcall, - (const bstring *)&be_const_str_set_power, - (const bstring *)&be_const_str_lv_area, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_lv_arc, - (const bstring *)&be_const_str_write_bytes, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_run_deferred, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_member, - (const bstring *)&be_const_str_load, - (const bstring *)&be_const_str_content_send_style, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_arg_name, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_MP3_DFR562, - NULL, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_call, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_KEY1_INV, - NULL, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_srand, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str__begin_transmission, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_keys, - (const bstring *)&be_const_str_GET, - NULL, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_lv_group, - NULL, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_ADC_CT_POWER, - NULL, - (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_lv_cont, - NULL, - NULL, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - NULL, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_SYMBOL_SAVE, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_OLED_RESET, - NULL, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_lv_roller, - (const bstring *)&be_const_str_SYMBOL_CUT, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_TX2X_TXD_BLACK, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_int, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - NULL, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_OUTPUT_LO, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_SYMBOL_EJECT, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_get_size, - (const bstring *)&be_const_str_read, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_acos, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_ADE7953_IRQ, - NULL, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_chars_in_string, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_lv_point, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_codedump, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_DCKI, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_open, - (const bstring *)&be_const_str_AS3935, - NULL, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str__write, - NULL, - (const bstring *)&be_const_str_webclient, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_I2C_SDA, - NULL, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_SYMBOL_PAUSE, + (const bstring *)&be_const_str_RC522_RST, (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_asin, - (const bstring *)&be_const_str_start, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_i2c_enabled, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_PULLDOWN, NULL, - (const bstring *)&be_const_str_WEBCAM_SIOC, - (const bstring *)&be_const_str_SYMBOL_CLOSE, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_select, - (const bstring *)&be_const_str_lv_draw_line_dsc, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_TCP_RX, - NULL, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_TM1638CLK, - NULL, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_for, - NULL, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str__get_cb, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_SBR_RX, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_setrange, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_SYMBOL_PREV, - (const bstring *)&be_const_str_reset_search, - (const bstring *)&be_const_str_NRF24_DC, - NULL, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_resp_cmnd_str, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str__cb, (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_lv_table, - (const bstring *)&be_const_str_SYMBOL_CALL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_, - NULL, - (const bstring *)&be_const_str_exp, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_import, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_atan2, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_SYMBOL_WIFI, - NULL, - (const bstring *)&be_const_str_content_button, - (const bstring *)&be_const_str_MD5, - (const bstring *)&be_const_str_lv_keyboard, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - NULL, - (const bstring *)&be_const_str_setmember, - (const bstring *)&be_const_str_WS2812, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_SWT1_PD, - NULL, - NULL, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_real, - (const bstring *)&be_const_str_TXD, - (const bstring *)&be_const_str_SYMBOL_PLAY, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_copy, - NULL, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_lv_msgbox, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_atan, - (const bstring *)&be_const_str_DDS2382_RX, - NULL, NULL, (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_read32, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_search, + (const bstring *)&be_const_str_copy, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_false, + (const bstring *)&be_const_str_dot_p, NULL, - (const bstring *)&be_const_str_digital_read, - (const bstring *)&be_const_str__end_transmission, - (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_arg, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, + (const bstring *)&be_const_str_get_light, + (const bstring *)&be_const_str_upper, + (const bstring *)&be_const_str_GPS_TX, + NULL, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_lv_font, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_ZIGBEE_RX, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_attrdump, + NULL, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_SSPI_MOSI, + (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_SYMBOL_GPS, + NULL, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_ctypes_bytes, + (const bstring *)&be_const_str_ADC_PH, + NULL, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SYMBOL_FILE, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_lv_tabview, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_SYMBOL_LOOP, + NULL, + NULL, + (const bstring *)&be_const_str_EPAPER42_CS, + NULL, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_LEDLNK_INV, + NULL, + (const bstring *)&be_const_str_SYMBOL_MUTE, + NULL, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_DHT22, + NULL, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_ADC_INPUT, (const bstring *)&be_const_str_issubclass, NULL, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_list, + (const bstring *)&be_const_str_BS814_CLK, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_close, + (const bstring *)&be_const_str_deinit, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_lv_sqrt_res, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_MHZ_RXD, + NULL, + (const bstring *)&be_const_str_WE517_RX, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_setrange, + (const bstring *)&be_const_str_atan2, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_lv_group_focus_cb, + (const bstring *)&be_const_str_static, + NULL, + (const bstring *)&be_const_str_remove, + (const bstring *)&be_const_str_bytes, + (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_opt_connect, + NULL, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_TXD, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_ARIRFSEL, + NULL, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_var, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_opt_neq, + NULL, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_ARIRFRCV, + NULL, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_MAX31855CLK, + NULL, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + NULL, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_BACKLIGHT, + NULL, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_iter, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_MHZ_TXD, (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_cb_dispatch, + (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_OLED_RESET, + NULL, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_CSE7761_TX, + NULL, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_TM1638CLK, + NULL, + NULL, (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_DSB + (const bstring *)&be_const_str_public_key, + (const bstring *)&be_const_str_strftime, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_TM1638STB, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, + (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_GET, + NULL, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_millis, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_try_rule, + NULL, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_DSB, + NULL, + (const bstring *)&be_const_str__timers, + NULL, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_load_font, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_add_header, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_cos, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_isinstance, + NULL, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_pi, + (const bstring *)&be_const_str_BOILER_OT_TX, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + NULL, + (const bstring *)&be_const_str_reset, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_PZEM016_RX, + NULL, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_lv_draw_mask_radius_param, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_IRRECV, + NULL, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_AS3935, + NULL, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_setmember, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_AZ_TXD, + NULL, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_SYMBOL_VIDEO, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_KEY1_NP, + NULL, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_SYMBOL_REFRESH, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_SYMBOL_POWER, + (const bstring *)&be_const_str_CNTR1_NP, + NULL, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_lv_slider, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_set_power, + (const bstring *)&be_const_str_DDS2382_TX, + NULL, + (const bstring *)&be_const_str_SYMBOL_WARNING, + NULL, + (const bstring *)&be_const_str_decrypt, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_byte, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_FTC532, + NULL, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_lv_msgbox, + NULL, + (const bstring *)&be_const_str_check_privileged_access, + (const bstring *)&be_const_str_RXD }; static const struct bconststrtab m_const_string_table = { - .size = 329, - .count = 659, + .size = 330, + .count = 660, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h index dba04014d..ee9c2dd43 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h @@ -1,73 +1,74 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_tasmota_map) { - { be_const_key(remove_rule, -1), be_const_closure(remove_rule_closure) }, - { be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) }, - { be_const_key(wire2, -1), be_const_var(0) }, - { be_const_key(_cb, -1), be_const_var(1) }, - { be_const_key(web_send, -1), be_const_func(l_webSend) }, - { be_const_key(wire_scan, 43), be_const_closure(wire_scan_closure) }, - { be_const_key(_get_cb, -1), be_const_func(l_get_cb) }, - { be_const_key(eth, 11), be_const_func(l_eth) }, - { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, - { be_const_key(response_append, -1), be_const_func(l_respAppend) }, - { be_const_key(wifi, 2), be_const_func(l_wifi) }, - { be_const_key(get_light, -1), be_const_closure(get_light_closure) }, - { be_const_key(rtc, -1), be_const_func(l_rtc) }, - { be_const_key(cmd, 32), be_const_closure(cmd_closure) }, - { be_const_key(resp_cmnd_failed, 6), be_const_func(l_respCmndFailed) }, - { be_const_key(get_power, -1), be_const_func(l_getpower) }, - { be_const_key(event, -1), be_const_closure(event_closure) }, - { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, - { be_const_key(publish, 41), be_const_func(l_publish) }, - { be_const_key(_rules, -1), be_const_var(2) }, - { be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) }, - { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, - { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, - { be_const_key(time_dump, 50), be_const_func(l_time_dump) }, - { be_const_key(_timers, -1), be_const_var(3) }, - { be_const_key(wire1, -1), be_const_var(4) }, - { be_const_key(add_cmd, 35), be_const_closure(add_cmd_closure) }, - { be_const_key(add_driver, 56), be_const_closure(add_driver_closure) }, - { be_const_key(delay, -1), be_const_func(l_delay) }, - { be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) }, - { be_const_key(memory, -1), be_const_func(l_memory) }, - { be_const_key(exec_cmd, 16), be_const_closure(exec_cmd_closure) }, - { be_const_key(get_option, -1), be_const_func(l_getoption) }, - { be_const_key(try_rule, -1), be_const_closure(try_rule_closure) }, - { be_const_key(find_op, 24), be_const_closure(find_op_closure) }, - { be_const_key(set_timer, -1), be_const_closure(set_timer_closure) }, - { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, - { be_const_key(gc, -1), be_const_closure(gc_closure) }, - { be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) }, { be_const_key(log, -1), be_const_func(l_logInfo) }, - { be_const_key(_cmd, -1), be_const_func(l_cmd) }, - { be_const_key(save, 58), be_const_func(l_save) }, - { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) }, + { be_const_key(gc, -1), be_const_closure(gc_closure) }, + { be_const_key(_cmd, 45), be_const_func(l_cmd) }, + { be_const_key(millis, 53), be_const_func(l_millis) }, + { be_const_key(web_send, -1), be_const_func(l_webSend) }, + { be_const_key(wire1, -1), be_const_var(0) }, + { be_const_key(response_append, -1), be_const_func(l_respAppend) }, + { be_const_key(_get_cb, 30), be_const_func(l_get_cb) }, + { be_const_key(get_free_heap, 22), be_const_func(l_getFreeHeap) }, + { be_const_key(resp_cmnd_failed, 2), be_const_func(l_respCmndFailed) }, + { be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) }, + { be_const_key(set_light, 8), be_const_closure(set_light_closure) }, + { be_const_key(resp_cmnd, 16), be_const_func(l_respCmnd) }, + { be_const_key(find_op, 34), be_const_closure(find_op_closure) }, + { be_const_key(eth, -1), be_const_func(l_eth) }, + { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, + { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, + { be_const_key(remove_rule, 1), be_const_closure(remove_rule_closure) }, + { be_const_key(get_power, -1), be_const_func(l_getpower) }, + { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, + { be_const_key(get_light, -1), be_const_closure(get_light_closure) }, + { be_const_key(exec_rules, 37), be_const_closure(exec_rules_closure) }, + { be_const_key(time_str, -1), be_const_closure(time_str_closure) }, + { be_const_key(remove_driver, 29), be_const_closure(remove_driver_closure) }, + { be_const_key(publish_result, 38), be_const_func(l_publish_result) }, + { be_const_key(rtc, -1), be_const_func(l_rtc) }, + { be_const_key(try_rule, -1), be_const_closure(try_rule_closure) }, + { be_const_key(gen_cb, 42), be_const_closure(gen_cb_closure) }, + { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, + { be_const_key(add_rule, -1), be_const_closure(add_rule_closure) }, + { be_const_key(_timers, -1), be_const_var(1) }, + { be_const_key(wire2, -1), be_const_var(2) }, + { be_const_key(run_deferred, 20), be_const_closure(run_deferred_closure) }, + { be_const_key(get_option, -1), be_const_func(l_getoption) }, + { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, - { be_const_key(set_light, -1), be_const_closure(set_light_closure) }, - { be_const_key(i2c_enabled, -1), be_const_func(l_i2cenabled) }, - { be_const_key(yield, -1), be_const_func(l_yield) }, - { be_const_key(_ccmd, -1), be_const_var(5) }, - { be_const_key(web_send_decimal, -1), be_const_func(l_webSendDecimal) }, - { be_const_key(millis, 8), be_const_func(l_millis) }, - { be_const_key(_drivers, -1), be_const_var(6) }, - { be_const_key(load, 29), be_const_closure(load_closure) }, - { be_const_key(run_deferred, 5), be_const_closure(run_deferred_closure) }, - { be_const_key(gen_cb, -1), be_const_closure(gen_cb_closure) }, - { be_const_key(time_str, 21), be_const_closure(time_str_closure) }, - { be_const_key(add_rule, 26), be_const_closure(add_rule_closure) }, + { be_const_key(resp_cmnd_str, 51), be_const_func(l_respCmndStr) }, + { be_const_key(memory, -1), be_const_func(l_memory) }, + { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, - { be_const_key(set_power, -1), be_const_func(l_setpower) }, - { be_const_key(publish_result, -1), be_const_func(l_publish_result) }, - { be_const_key(time_reached, 22), be_const_func(l_timereached) }, - { be_const_key(chars_in_string, 7), be_const_closure(chars_in_string_closure) }, + { be_const_key(load, -1), be_const_closure(load_closure) }, + { be_const_key(publish, 55), be_const_func(l_publish) }, + { be_const_key(_ccmd, -1), be_const_var(3) }, + { be_const_key(resp_cmnd_error, 23), be_const_func(l_respCmndError) }, + { be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) }, + { be_const_key(save, -1), be_const_func(l_save) }, + { be_const_key(_drivers, -1), be_const_var(4) }, + { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) }, + { be_const_key(wifi, 36), be_const_func(l_wifi) }, + { be_const_key(set_timer, 40), be_const_closure(set_timer_closure) }, + { be_const_key(i2c_enabled, 44), be_const_func(l_i2cenabled) }, + { be_const_key(set_power, 54), be_const_func(l_setpower) }, + { be_const_key(_rules, 14), be_const_var(5) }, + { be_const_key(delay, -1), be_const_func(l_delay) }, { be_const_key(strftime, -1), be_const_func(l_strftime) }, + { be_const_key(time_dump, -1), be_const_func(l_time_dump) }, + { be_const_key(time_reached, 26), be_const_func(l_timereached) }, + { be_const_key(web_send_decimal, 58), be_const_func(l_webSendDecimal) }, + { be_const_key(_cb, -1), be_const_var(6) }, + { be_const_key(yield, 56), be_const_func(l_yield) }, + { be_const_key(event, -1), be_const_closure(event_closure) }, + { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, + { be_const_key(add_driver, -1), be_const_closure(add_driver_closure) }, }; static be_define_const_map( be_class_tasmota_map, - 62 + 63 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/tasmota/berry/lvgl_examples/lvgl_demo.be b/tasmota/berry/lvgl_examples/lvgl_demo.be index 6ec17bb7a..2a47a5ce3 100644 --- a/tasmota/berry/lvgl_examples/lvgl_demo.be +++ b/tasmota/berry/lvgl_examples/lvgl_demo.be @@ -21,16 +21,11 @@ stat_line.set_align(lv.LABEL_ALIGN_LEFT) stat_line.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0xD00000)) # background #000088 stat_line.set_style_local_bg_opa(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv.OPA_COVER) # 100% background opacity stat_line.set_style_local_text_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(0xFFFFFF)) # text color #FFFFFF -stat_line.set_text("Welcome to Tasmota") +stat_line.set_text("Tasmota") stat_line_height = stat_line.get_height() #- display wifi strength indicator icon (for professionals ;) -# -stat_line.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, stat_line_height + 1) -wifi_bars = lv_wifi_bars(stat_line) -wifi_bars.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) -wifi_bars.set_height(stat_line_height) -wifi_bars.set_width(stat_line_height) -wifi_bars.set_x(stat_line.get_width() - stat_line_height) +wifi_icon = lv_wifi_arcs_icon(stat_line) # the widget takes care of positioning and driver stuff #- create a style for the buttons -# btn_style = lv_style() From 5995724a49313c7aca66a9050f50e88805c6b211 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 9 Sep 2021 20:24:08 +0200 Subject: [PATCH 170/317] LVGL updated enum parsing (#13099) * LVGL updated enum parsing * Fix --- lib/libesp32/Berry/default/be_lvgl_module.c | 25 + tools/lv_berry/convert.py | 2 +- tools/lv_berry/lv_enum.h | 577 +++++++++++++++++ tools/lv_berry/lv_module.h | 670 -------------------- tools/lv_berry/preprocessor.py | 107 ++++ 5 files changed, 710 insertions(+), 671 deletions(-) create mode 100644 tools/lv_berry/lv_enum.h delete mode 100644 tools/lv_berry/lv_module.h create mode 100644 tools/lv_berry/preprocessor.py diff --git a/lib/libesp32/Berry/default/be_lvgl_module.c b/lib/libesp32/Berry/default/be_lvgl_module.c index eb95f38e4..53d3be12a 100644 --- a/lib/libesp32/Berry/default/be_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lvgl_module.c @@ -113,6 +113,8 @@ const be_constint_t lv0_constants[] = { { "ARC_TYPE_NORMAL", LV_ARC_TYPE_NORMAL }, { "ARC_TYPE_REVERSE", LV_ARC_TYPE_REVERSE }, { "ARC_TYPE_SYMMETRIC", LV_ARC_TYPE_SYMMETRIC }, + { "BAR_PART_BG", LV_BAR_PART_BG }, + { "BAR_PART_INDIC", LV_BAR_PART_INDIC }, { "BAR_TYPE_CUSTOM", LV_BAR_TYPE_CUSTOM }, { "BAR_TYPE_NORMAL", LV_BAR_TYPE_NORMAL }, { "BAR_TYPE_SYMMETRICAL", LV_BAR_TYPE_SYMMETRICAL }, @@ -132,6 +134,9 @@ const be_constint_t lv0_constants[] = { { "BTNMATRIX_CTRL_DISABLED", LV_BTNMATRIX_CTRL_DISABLED }, { "BTNMATRIX_CTRL_HIDDEN", LV_BTNMATRIX_CTRL_HIDDEN }, { "BTNMATRIX_CTRL_NO_REPEAT", LV_BTNMATRIX_CTRL_NO_REPEAT }, + { "BTNMATRIX_PART_BG", LV_BTNMATRIX_PART_BG }, + { "BTNMATRIX_PART_BTN", LV_BTNMATRIX_PART_BTN }, + { "BTN_PART_MAIN", LV_BTN_PART_MAIN }, { "BTN_STATE_CHECKED_DISABLED", LV_BTN_STATE_CHECKED_DISABLED }, { "BTN_STATE_CHECKED_PRESSED", LV_BTN_STATE_CHECKED_PRESSED }, { "BTN_STATE_CHECKED_RELEASED", LV_BTN_STATE_CHECKED_RELEASED }, @@ -142,6 +147,7 @@ const be_constint_t lv0_constants[] = { { "CALENDAR_PART_DATE", LV_CALENDAR_PART_DATE }, { "CALENDAR_PART_DAY_NAMES", LV_CALENDAR_PART_DAY_NAMES }, { "CALENDAR_PART_HEADER", LV_CALENDAR_PART_HEADER }, + { "CANVAS_PART_MAIN", LV_CANVAS_PART_MAIN }, { "CHART_AXIS_DRAW_LAST_TICK", LV_CHART_AXIS_DRAW_LAST_TICK }, { "CHART_AXIS_INVERSE_LABELS_ORDER", LV_CHART_AXIS_INVERSE_LABELS_ORDER }, { "CHART_AXIS_PRIMARY_Y", LV_CHART_AXIS_PRIMARY_Y }, @@ -180,6 +186,7 @@ const be_constint_t lv0_constants[] = { { "COLOR_TEAL", 32896 }, { "COLOR_WHITE", 16777215 }, { "COLOR_YELLOW", 16776960 }, + { "CONT_PART_MAIN", LV_CONT_PART_MAIN }, { "CPICKER_COLOR_MODE_HUE", LV_CPICKER_COLOR_MODE_HUE }, { "CPICKER_COLOR_MODE_SATURATION", LV_CPICKER_COLOR_MODE_SATURATION }, { "CPICKER_COLOR_MODE_VALUE", LV_CPICKER_COLOR_MODE_VALUE }, @@ -278,6 +285,9 @@ const be_constint_t lv0_constants[] = { { "GRAD_DIR_HOR", LV_GRAD_DIR_HOR }, { "GRAD_DIR_NONE", LV_GRAD_DIR_NONE }, { "GRAD_DIR_VER", LV_GRAD_DIR_VER }, + { "GROUP_REFOCUS_POLICY_NEXT", LV_GROUP_REFOCUS_POLICY_NEXT }, + { "GROUP_REFOCUS_POLICY_PREV", LV_GROUP_REFOCUS_POLICY_PREV }, + { "IMGBTN_PART_MAIN", LV_IMGBTN_PART_MAIN }, { "IMG_CF_ALPHA_1BIT", LV_IMG_CF_ALPHA_1BIT }, { "IMG_CF_ALPHA_2BIT", LV_IMG_CF_ALPHA_2BIT }, { "IMG_CF_ALPHA_4BIT", LV_IMG_CF_ALPHA_4BIT }, @@ -293,8 +303,18 @@ const be_constint_t lv0_constants[] = { { "IMG_CF_TRUE_COLOR_ALPHA", LV_IMG_CF_TRUE_COLOR_ALPHA }, { "IMG_CF_TRUE_COLOR_CHROMA_KEYED", LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED }, { "IMG_CF_UNKNOWN", LV_IMG_CF_UNKNOWN }, + { "IMG_PART_MAIN", LV_IMG_PART_MAIN }, + { "IMG_SRC_FILE", LV_IMG_SRC_FILE }, + { "IMG_SRC_SYMBOL", LV_IMG_SRC_SYMBOL }, + { "IMG_SRC_UNKNOWN", LV_IMG_SRC_UNKNOWN }, + { "IMG_SRC_VARIABLE", LV_IMG_SRC_VARIABLE }, { "INDEV_STATE_PR", LV_INDEV_STATE_PR }, { "INDEV_STATE_REL", LV_INDEV_STATE_REL }, + { "INDEV_TYPE_BUTTON", LV_INDEV_TYPE_BUTTON }, + { "INDEV_TYPE_ENCODER", LV_INDEV_TYPE_ENCODER }, + { "INDEV_TYPE_KEYPAD", LV_INDEV_TYPE_KEYPAD }, + { "INDEV_TYPE_NONE", LV_INDEV_TYPE_NONE }, + { "INDEV_TYPE_POINTER", LV_INDEV_TYPE_POINTER }, { "KEYBOARD_MODE_NUM", LV_KEYBOARD_MODE_NUM }, { "KEYBOARD_MODE_SPECIAL", LV_KEYBOARD_MODE_SPECIAL }, { "KEYBOARD_MODE_TEXT_LOWER", LV_KEYBOARD_MODE_TEXT_LOWER }, @@ -323,6 +343,7 @@ const be_constint_t lv0_constants[] = { { "LABEL_LONG_EXPAND", LV_LABEL_LONG_EXPAND }, { "LABEL_LONG_SROLL", LV_LABEL_LONG_SROLL }, { "LABEL_LONG_SROLL_CIRC", LV_LABEL_LONG_SROLL_CIRC }, + { "LABEL_PART_MAIN", LV_LABEL_PART_MAIN }, { "LAYOUT_CENTER", LV_LAYOUT_CENTER }, { "LAYOUT_COLUMN_LEFT", LV_LAYOUT_COLUMN_LEFT }, { "LAYOUT_COLUMN_MID", LV_LAYOUT_COLUMN_MID }, @@ -337,8 +358,10 @@ const be_constint_t lv0_constants[] = { { "LAYOUT_ROW_TOP", LV_LAYOUT_ROW_TOP }, { "LED_PART_MAIN", LV_LED_PART_MAIN }, { "LINEMETER_PART_MAIN", LV_LINEMETER_PART_MAIN }, + { "LINE_PART_MAIN", LV_LINE_PART_MAIN }, { "LIST_PART_BG", LV_LIST_PART_BG }, { "LIST_PART_EDGE_FLASH", LV_LIST_PART_EDGE_FLASH }, + { "LIST_PART_SCROLLABLE", LV_LIST_PART_SCROLLABLE }, { "LIST_PART_SCROLLBAR", LV_LIST_PART_SCROLLBAR }, { "MSGBOX_PART_BG", LV_MSGBOX_PART_BG }, { "MSGBOX_PART_BTN", LV_MSGBOX_PART_BTN }, @@ -376,6 +399,8 @@ const be_constint_t lv0_constants[] = { { "PROTECT_POS", LV_PROTECT_POS }, { "PROTECT_PRESS_LOST", LV_PROTECT_PRESS_LOST }, { "RADIUS_CIRCLE", LV_RADIUS_CIRCLE }, + { "RES_INV", LV_RES_INV }, + { "RES_OK", LV_RES_OK }, { "ROLLER_MODE_INFINITE", LV_ROLLER_MODE_INFINITE }, { "ROLLER_MODE_NORMAL", LV_ROLLER_MODE_NORMAL }, { "ROLLER_PART_BG", LV_ROLLER_PART_BG }, diff --git a/tools/lv_berry/convert.py b/tools/lv_berry/convert.py index 14d71a71c..9d712521c 100644 --- a/tools/lv_berry/convert.py +++ b/tools/lv_berry/convert.py @@ -2,7 +2,7 @@ import re import sys lv_widgets_file = "lv_widgets.h" -lv_module_file = "lv_module.h" +lv_module_file = "lv_enum.h" out_prefix = "../../tasmota/lvgl_berry/" lvgl_prefix = "../../lib/libesp32/Berry/default/" diff --git a/tools/lv_berry/lv_enum.h b/tools/lv_berry/lv_enum.h new file mode 100644 index 000000000..777d7a07d --- /dev/null +++ b/tools/lv_berry/lv_enum.h @@ -0,0 +1,577 @@ + +// LV Colors - we store in 24 bits format and will convert at runtime +// This is specific treatment because we keep colors in 24 bits format +COLOR_WHITE=0xFFFFFF +COLOR_SILVER=0xC0C0C0 +COLOR_GRAY=0x808080 +COLOR_BLACK=0x000000 +COLOR_RED=0xFF0000 +COLOR_MAROON=0x800000 +COLOR_YELLOW=0xFFFF00 +COLOR_OLIVE=0x808000 +COLOR_LIME=0x00FF00 +COLOR_GREEN=0x008000 +COLOR_CYAN=0x00FFFF +COLOR_AQUA=0x00FFFF +COLOR_TEAL=0x008080 +COLOR_BLUE=0x0000FF +COLOR_NAVY=0x000080 +COLOR_MAGENTA=0xFF00FF +COLOR_PURPLE=0x800080 + +// following are #define, not enum +LV_RADIUS_CIRCLE +LV_TEXTAREA_CURSOR_LAST +LV_STYLE_PROP_ALL + +LV_KEY_UP +LV_KEY_DOWN +LV_KEY_RIGHT +LV_KEY_LEFT +LV_KEY_ESC +LV_KEY_DEL +LV_KEY_BACKSPACE +LV_KEY_ENTER +LV_KEY_NEXT +LV_KEY_PREV +LV_KEY_HOME +LV_KEY_END + +LV_GROUP_REFOCUS_POLICY_NEXT +LV_GROUP_REFOCUS_POLICY_PREV +LV_DESIGN_DRAW_MAIN +LV_DESIGN_DRAW_POST +LV_DESIGN_COVER_CHK + +LV_DESIGN_RES_OK +LV_DESIGN_RES_COVER +LV_DESIGN_RES_NOT_COVER +LV_DESIGN_RES_MASKED + +LV_EVENT_PRESSED +LV_EVENT_PRESSING +LV_EVENT_PRESS_LOST +LV_EVENT_SHORT_CLICKED +LV_EVENT_LONG_PRESSED +LV_EVENT_LONG_PRESSED_REPEAT +LV_EVENT_CLICKED +LV_EVENT_RELEASED +LV_EVENT_DRAG_BEGIN +LV_EVENT_DRAG_END +LV_EVENT_DRAG_THROW_BEGIN +LV_EVENT_GESTURE +LV_EVENT_KEY +LV_EVENT_FOCUSED +LV_EVENT_DEFOCUSED +LV_EVENT_LEAVE +LV_EVENT_VALUE_CHANGED +LV_EVENT_INSERT +LV_EVENT_REFRESH +LV_EVENT_APPLY +LV_EVENT_CANCEL +LV_EVENT_DELETE + +LV_PROTECT_NONE +LV_PROTECT_CHILD_CHG +LV_PROTECT_PARENT +LV_PROTECT_POS +LV_PROTECT_FOLLOW +LV_PROTECT_PRESS_LOST +LV_PROTECT_CLICK_FOCUS +LV_PROTECT_EVENT_TO_DISABLED + +LV_STATE_DEFAULT +LV_STATE_CHECKED +LV_STATE_FOCUSED +LV_STATE_EDITED +LV_STATE_HOVERED +LV_STATE_PRESSED +LV_STATE_DISABLED + +LV_OBJ_PART_MAIN +LV_OBJ_PART_ALL + +LV_SCR_LOAD_ANIM_NONE +LV_SCR_LOAD_ANIM_OVER_LEFT +LV_SCR_LOAD_ANIM_OVER_RIGHT +LV_SCR_LOAD_ANIM_OVER_TOP +LV_SCR_LOAD_ANIM_OVER_BOTTOM +LV_SCR_LOAD_ANIM_MOVE_LEFT +LV_SCR_LOAD_ANIM_MOVE_RIGHT +LV_SCR_LOAD_ANIM_MOVE_TOP +LV_SCR_LOAD_ANIM_MOVE_BOTTOM +LV_SCR_LOAD_ANIM_FADE_ON + +LV_BORDER_SIDE_NONE +LV_BORDER_SIDE_BOTTOM +LV_BORDER_SIDE_TOP +LV_BORDER_SIDE_LEFT +LV_BORDER_SIDE_RIGHT +LV_BORDER_SIDE_FULL +LV_BORDER_SIDE_INTERNAL +LV_GRAD_DIR_NONE +LV_GRAD_DIR_VER +LV_GRAD_DIR_HOR +LV_TEXT_DECOR_NONE +LV_TEXT_DECOR_UNDERLINE +LV_TEXT_DECOR_STRIKETHROUGH +LV_STYLE_RADIUS +LV_STYLE_CLIP_CORNER +LV_STYLE_SIZE +LV_STYLE_TRANSFORM_WIDTH +LV_STYLE_TRANSFORM_HEIGHT +LV_STYLE_TRANSFORM_ANGLE +LV_STYLE_TRANSFORM_ZOOM +LV_STYLE_OPA_SCALE +LV_STYLE_PAD_TOP +LV_STYLE_PAD_BOTTOM +LV_STYLE_PAD_LEFT +LV_STYLE_PAD_RIGHT +LV_STYLE_PAD_INNER +LV_STYLE_MARGIN_TOP +LV_STYLE_MARGIN_BOTTOM +LV_STYLE_MARGIN_LEFT +LV_STYLE_MARGIN_RIGHT +LV_STYLE_BG_BLEND_MODE +LV_STYLE_BG_MAIN_STOP +LV_STYLE_BG_GRAD_STOP +LV_STYLE_BG_GRAD_DIR +LV_STYLE_BG_COLOR +LV_STYLE_BG_GRAD_COLOR +LV_STYLE_BG_OPA +LV_STYLE_BORDER_WIDTH +LV_STYLE_BORDER_SIDE +LV_STYLE_BORDER_BLEND_MODE +LV_STYLE_BORDER_POST +LV_STYLE_BORDER_COLOR +LV_STYLE_BORDER_OPA +LV_STYLE_OUTLINE_WIDTH +LV_STYLE_OUTLINE_PAD +LV_STYLE_OUTLINE_BLEND_MODE +LV_STYLE_OUTLINE_COLOR +LV_STYLE_OUTLINE_OPA +LV_STYLE_SHADOW_WIDTH +LV_STYLE_SHADOW_OFS_X +LV_STYLE_SHADOW_OFS_Y +LV_STYLE_SHADOW_SPREAD +LV_STYLE_SHADOW_BLEND_MODE +LV_STYLE_SHADOW_COLOR +LV_STYLE_SHADOW_OPA +LV_STYLE_PATTERN_BLEND_MODE +LV_STYLE_PATTERN_REPEAT +LV_STYLE_PATTERN_RECOLOR +LV_STYLE_PATTERN_OPA +LV_STYLE_PATTERN_RECOLOR_OPA +LV_STYLE_PATTERN_IMAGE +LV_STYLE_VALUE_LETTER_SPACE +LV_STYLE_VALUE_LINE_SPACE +LV_STYLE_VALUE_BLEND_MODE +LV_STYLE_VALUE_OFS_X +LV_STYLE_VALUE_OFS_Y +LV_STYLE_VALUE_ALIGN +LV_STYLE_VALUE_COLOR +LV_STYLE_VALUE_OPA +LV_STYLE_VALUE_FONT +LV_STYLE_VALUE_STR +LV_STYLE_TEXT_LETTER_SPACE +LV_STYLE_TEXT_LINE_SPACE +LV_STYLE_TEXT_DECOR +LV_STYLE_TEXT_BLEND_MODE +LV_STYLE_TEXT_COLOR +LV_STYLE_TEXT_SEL_COLOR +LV_STYLE_TEXT_SEL_BG_COLOR +LV_STYLE_TEXT_OPA +LV_STYLE_TEXT_FONT +LV_STYLE_LINE_WIDTH +LV_STYLE_LINE_BLEND_MODE +LV_STYLE_LINE_DASH_WIDTH +LV_STYLE_LINE_DASH_GAP +LV_STYLE_LINE_ROUNDED +LV_STYLE_LINE_COLOR +LV_STYLE_LINE_OPA +LV_STYLE_IMAGE_BLEND_MODE +LV_STYLE_IMAGE_RECOLOR +LV_STYLE_IMAGE_OPA +LV_STYLE_IMAGE_RECOLOR_OPA +LV_STYLE_TRANSITION_TIME +LV_STYLE_TRANSITION_DELAY +LV_STYLE_TRANSITION_PROP_1 +LV_STYLE_TRANSITION_PROP_2 +LV_STYLE_TRANSITION_PROP_3 +LV_STYLE_TRANSITION_PROP_4 +LV_STYLE_TRANSITION_PROP_5 +LV_STYLE_TRANSITION_PROP_6 +LV_STYLE_TRANSITION_PATH +LV_STYLE_SCALE_WIDTH +LV_STYLE_SCALE_BORDER_WIDTH +LV_STYLE_SCALE_END_BORDER_WIDTH +LV_STYLE_SCALE_END_LINE_WIDTH +LV_STYLE_SCALE_GRAD_COLOR +LV_STYLE_SCALE_END_COLOR + +LV_ANIM_OFF +LV_ANIM_ON + + + +LV_TXT_FLAG_NONE +LV_TXT_FLAG_RECOLOR +LV_TXT_FLAG_EXPAND +LV_TXT_FLAG_CENTER +LV_TXT_FLAG_RIGHT +LV_TXT_FLAG_FIT + +LV_TXT_CMD_STATE_WAIT +LV_TXT_CMD_STATE_PAR +LV_TXT_CMD_STATE_IN + +LV_RES_INV +LV_RES_OK + +LV_FS_RES_OK +LV_FS_RES_HW_ERR +LV_FS_RES_FS_ERR +LV_FS_RES_NOT_EX +LV_FS_RES_FULL +LV_FS_RES_LOCKED +LV_FS_RES_DENIED +LV_FS_RES_BUSY +LV_FS_RES_TOUT +LV_FS_RES_NOT_IMP +LV_FS_RES_OUT_OF_MEM +LV_FS_RES_INV_PARAM +LV_FS_RES_UNKNOWN + +LV_FS_MODE_WR +LV_FS_MODE_RD + +LV_ALIGN_CENTER +LV_ALIGN_IN_TOP_LEFT +LV_ALIGN_IN_TOP_MID +LV_ALIGN_IN_TOP_RIGHT +LV_ALIGN_IN_BOTTOM_LEFT +LV_ALIGN_IN_BOTTOM_MID +LV_ALIGN_IN_BOTTOM_RIGHT +LV_ALIGN_IN_LEFT_MID +LV_ALIGN_IN_RIGHT_MID +LV_ALIGN_OUT_TOP_LEFT +LV_ALIGN_OUT_TOP_MID +LV_ALIGN_OUT_TOP_RIGHT +LV_ALIGN_OUT_BOTTOM_LEFT +LV_ALIGN_OUT_BOTTOM_MID +LV_ALIGN_OUT_BOTTOM_RIGHT +LV_ALIGN_OUT_LEFT_TOP +LV_ALIGN_OUT_LEFT_MID +LV_ALIGN_OUT_LEFT_BOTTOM +LV_ALIGN_OUT_RIGHT_TOP +LV_ALIGN_OUT_RIGHT_MID +LV_ALIGN_OUT_RIGHT_BOTTOM + +LV_OPA_TRANSP +LV_OPA_0 +LV_OPA_10 +LV_OPA_20 +LV_OPA_30 +LV_OPA_40 +LV_OPA_50 +LV_OPA_60 +LV_OPA_70 +LV_OPA_80 +LV_OPA_90 +LV_OPA_100 +LV_OPA_COVER + +LV_LINEMETER_PART_MAIN + +LV_SLIDER_TYPE_NORMAL +LV_SLIDER_TYPE_SYMMETRICAL +LV_SLIDER_TYPE_RANGE +LV_SLIDER_PART_BG +LV_SLIDER_PART_INDIC +LV_SLIDER_PART_KNOB + +LV_IMG_PART_MAIN + +LV_IMGBTN_PART_MAIN + +LV_LIST_PART_BG +LV_LIST_PART_SCROLLBAR +LV_LIST_PART_EDGE_FLASH +LV_LIST_PART_SCROLLABLE + +LV_TABLE_PART_BG +LV_TABLE_PART_CELL1 +LV_TABLE_PART_CELL2 +LV_TABLE_PART_CELL3 +LV_TABLE_PART_CELL4 + +LV_ARC_TYPE_NORMAL +LV_ARC_TYPE_SYMMETRIC +LV_ARC_TYPE_REVERSE +LV_ARC_PART_BG +LV_ARC_PART_INDIC +LV_ARC_PART_KNOB + +LV_BAR_TYPE_NORMAL +LV_BAR_TYPE_SYMMETRICAL +LV_BAR_TYPE_CUSTOM +LV_BAR_PART_BG +LV_BAR_PART_INDIC +LV_DROPDOWN_DIR_DOWN +LV_DROPDOWN_DIR_UP +LV_DROPDOWN_DIR_LEFT +LV_DROPDOWN_DIR_RIGHT + +LV_DROPDOWN_PART_MAIN +LV_DROPDOWN_PART_LIST +LV_DROPDOWN_PART_SCROLLBAR +LV_DROPDOWN_PART_SELECTED + +LV_CANVAS_PART_MAIN + + +LV_CALENDAR_PART_BG +LV_CALENDAR_PART_HEADER +LV_CALENDAR_PART_DAY_NAMES +LV_CALENDAR_PART_DATE + +LV_SWITCH_PART_BG +LV_SWITCH_PART_INDIC +LV_SWITCH_PART_KNOB +LV_TABVIEW_TAB_POS_NONE +LV_TABVIEW_TAB_POS_TOP +LV_TABVIEW_TAB_POS_BOTTOM +LV_TABVIEW_TAB_POS_LEFT +LV_TABVIEW_TAB_POS_RIGHT +LV_TABVIEW_PART_BG +LV_TABVIEW_PART_BG_SCROLLABLE +LV_TABVIEW_PART_TAB_BG +LV_TABVIEW_PART_TAB_BTN +LV_TABVIEW_PART_INDIC + +LV_CHECKBOX_PART_BG +LV_CHECKBOX_PART_BULLET +LV_LINE_PART_MAIN + +LV_SPINNER_TYPE_SPINNING_ARC +LV_SPINNER_TYPE_FILLSPIN_ARC +LV_SPINNER_TYPE_CONSTANT_ARC + +LV_SPINNER_DIR_FORWARD +LV_SPINNER_DIR_BACKWARD + +LV_SPINNER_PART_BG +LV_SPINNER_PART_INDIC + +LV_LABEL_LONG_EXPAND +LV_LABEL_LONG_BREAK +LV_LABEL_LONG_DOT +LV_LABEL_LONG_SROLL +LV_LABEL_LONG_SROLL_CIRC +LV_LABEL_LONG_CROP + +LV_LABEL_ALIGN_LEFT +LV_LABEL_ALIGN_CENTER +LV_LABEL_ALIGN_RIGHT +LV_LABEL_ALIGN_AUTO + +LV_LABEL_PART_MAIN + +LV_KEYBOARD_MODE_TEXT_LOWER +LV_KEYBOARD_MODE_TEXT_UPPER +LV_KEYBOARD_MODE_SPECIAL +LV_KEYBOARD_MODE_NUM +LV_KEYBOARD_PART_BG +LV_KEYBOARD_PART_BTN + +LV_SCROLLBAR_MODE_OFF +LV_SCROLLBAR_MODE_ON +LV_SCROLLBAR_MODE_DRAG +LV_SCROLLBAR_MODE_AUTO +LV_SCROLLBAR_MODE_HIDE +LV_SCROLLBAR_MODE_UNHIDE + +LV_PAGE_EDGE_LEFT +LV_PAGE_EDGE_TOP +LV_PAGE_EDGE_RIGHT +LV_PAGE_EDGE_BOTTOM +LV_PAGE_PART_BG +LV_PAGE_PART_SCROLLBAR +LV_PAGE_PART_EDGE_FLASH +LV_PAGE_PART_SCROLLABLE + +LV_CPICKER_TYPE_RECT +LV_CPICKER_TYPE_DISC + +LV_CPICKER_COLOR_MODE_HUE +LV_CPICKER_COLOR_MODE_SATURATION +LV_CPICKER_COLOR_MODE_VALUE +LV_CPICKER_PART_MAIN +LV_CPICKER_PART_KNOB + +LV_GAUGE_PART_MAIN +LV_GAUGE_PART_MAJOR +LV_GAUGE_PART_NEEDLE + +LV_WIN_PART_BG +LV_WIN_PART_HEADER +LV_WIN_PART_CONTENT_SCROLLABLE +LV_WIN_PART_SCROLLBAR +LV_BTN_STATE_RELEASED +LV_BTN_STATE_PRESSED +LV_BTN_STATE_DISABLED +LV_BTN_STATE_CHECKED_RELEASED +LV_BTN_STATE_CHECKED_PRESSED +LV_BTN_STATE_CHECKED_DISABLED + +LV_BTN_PART_MAIN + +LV_ROLLER_MODE_NORMAL +LV_ROLLER_MODE_INFINITE + +LV_ROLLER_PART_BG +LV_ROLLER_PART_SELECTED + +LV_OBJMASK_PART_MAIN + +LV_CHART_TYPE_NONE +LV_CHART_TYPE_LINE +LV_CHART_TYPE_COLUMN + +LV_CHART_UPDATE_MODE_SHIFT +LV_CHART_UPDATE_MODE_CIRCULAR + +LV_CHART_AXIS_PRIMARY_Y +LV_CHART_AXIS_SECONDARY_Y + +LV_CHART_CURSOR_NONE +LV_CHART_CURSOR_RIGHT +LV_CHART_CURSOR_UP +LV_CHART_CURSOR_LEFT +LV_CHART_CURSOR_DOWN +LV_CHART_AXIS_SKIP_LAST_TICK +LV_CHART_AXIS_DRAW_LAST_TICK +LV_CHART_AXIS_INVERSE_LABELS_ORDER +LV_CHART_PART_BG +LV_CHART_PART_SERIES_BG +LV_CHART_PART_SERIES +LV_CHART_PART_CURSOR +LV_TEXTAREA_PART_BG +LV_TEXTAREA_PART_SCROLLBAR +LV_TEXTAREA_PART_EDGE_FLASH +LV_TEXTAREA_PART_CURSOR +LV_TEXTAREA_PART_PLACEHOLDER + +LV_MSGBOX_PART_BG +LV_MSGBOX_PART_BTN_BG +LV_MSGBOX_PART_BTN + +LV_SPINBOX_PART_BG +LV_SPINBOX_PART_CURSOR + +LV_LED_PART_MAIN + +LV_TILEVIEW_PART_BG +LV_TILEVIEW_PART_SCROLLBAR +LV_TILEVIEW_PART_EDGE_FLASH +LV_BTNMATRIX_CTRL_HIDDEN +LV_BTNMATRIX_CTRL_NO_REPEAT +LV_BTNMATRIX_CTRL_DISABLED +LV_BTNMATRIX_CTRL_CHECKABLE +LV_BTNMATRIX_CTRL_CHECK_STATE +LV_BTNMATRIX_CTRL_CLICK_TRIG + +LV_BTNMATRIX_PART_BG +LV_BTNMATRIX_PART_BTN + +LV_LAYOUT_OFF +LV_LAYOUT_CENTER +LV_LAYOUT_COLUMN_LEFT +LV_LAYOUT_COLUMN_MID +LV_LAYOUT_COLUMN_RIGHT +LV_LAYOUT_ROW_TOP +LV_LAYOUT_ROW_MID +LV_LAYOUT_ROW_BOTTOM +LV_LAYOUT_PRETTY_TOP +LV_LAYOUT_PRETTY_MID +LV_LAYOUT_PRETTY_BOTTOM +LV_LAYOUT_GRID +LV_FIT_NONE +LV_FIT_TIGHT +LV_FIT_PARENT +LV_FIT_MAX +LV_CONT_PART_MAIN + + + +LV_INDEV_TYPE_NONE +LV_INDEV_TYPE_POINTER +LV_INDEV_TYPE_KEYPAD +LV_INDEV_TYPE_BUTTON +LV_INDEV_TYPE_ENCODER + +LV_INDEV_STATE_REL +LV_INDEV_STATE_PR +LV_DRAG_DIR_HOR +LV_DRAG_DIR_VER +LV_DRAG_DIR_BOTH +LV_DRAG_DIR_ONE + +LV_GESTURE_DIR_TOP +LV_GESTURE_DIR_BOTTOM +LV_GESTURE_DIR_LEFT +LV_GESTURE_DIR_RIGHT + +LV_DISP_ROT_NONE +LV_DISP_ROT_90 +LV_DISP_ROT_180 +LV_DISP_ROT_270 +LV_DISP_SIZE_SMALL +LV_DISP_SIZE_MEDIUM +LV_DISP_SIZE_LARGE +LV_DISP_SIZE_EXTRA_LARGE + +LV_BLEND_MODE_NORMAL +LV_BLEND_MODE_ADDITIVE +LV_BLEND_MODE_SUBTRACTIVE + +LV_DRAW_MASK_RES_TRANSP +LV_DRAW_MASK_RES_FULL_COVER +LV_DRAW_MASK_RES_CHANGED +LV_DRAW_MASK_RES_UNKNOWN +LV_DRAW_MASK_TYPE_LINE +LV_DRAW_MASK_TYPE_ANGLE +LV_DRAW_MASK_TYPE_RADIUS +LV_DRAW_MASK_TYPE_FADE +LV_DRAW_MASK_TYPE_MAP + +LV_DRAW_MASK_LINE_SIDE_LEFT +LV_DRAW_MASK_LINE_SIDE_RIGHT +LV_DRAW_MASK_LINE_SIDE_TOP +LV_DRAW_MASK_LINE_SIDE_BOTTOM + +LV_IMG_CF_UNKNOWN +LV_IMG_CF_RAW +LV_IMG_CF_RAW_ALPHA +LV_IMG_CF_RAW_CHROMA_KEYED +LV_IMG_CF_TRUE_COLOR +LV_IMG_CF_TRUE_COLOR_ALPHA +LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED +LV_IMG_CF_INDEXED_1BIT +LV_IMG_CF_INDEXED_2BIT +LV_IMG_CF_INDEXED_4BIT +LV_IMG_CF_INDEXED_8BIT +LV_IMG_CF_ALPHA_1BIT +LV_IMG_CF_ALPHA_2BIT +LV_IMG_CF_ALPHA_4BIT +LV_IMG_CF_ALPHA_8BIT + +LV_IMG_SRC_VARIABLE +LV_IMG_SRC_FILE +LV_IMG_SRC_SYMBOL +LV_IMG_SRC_UNKNOWN + + + + + diff --git a/tools/lv_berry/lv_module.h b/tools/lv_berry/lv_module.h deleted file mode 100644 index 392dfb2ec..000000000 --- a/tools/lv_berry/lv_module.h +++ /dev/null @@ -1,670 +0,0 @@ -// LV Colors - we store in 24 bits format and will convert at runtime -// This is specific treatment because we keep colors in 24 bits format -COLOR_WHITE=0xFFFFFF -COLOR_SILVER=0xC0C0C0 -COLOR_GRAY=0x808080 -COLOR_BLACK=0x000000 -COLOR_RED=0xFF0000 -COLOR_MAROON=0x800000 -COLOR_YELLOW=0xFFFF00 -COLOR_OLIVE=0x808000 -COLOR_LIME=0x00FF00 -COLOR_GREEN=0x008000 -COLOR_CYAN=0x00FFFF -COLOR_AQUA=0x00FFFF -COLOR_TEAL=0x008080 -COLOR_BLUE=0x0000FF -COLOR_NAVY=0x000080 -COLOR_MAGENTA=0xFF00FF -COLOR_PURPLE=0x800080 - -LV_RADIUS_CIRCLE -LV_STYLE_PROP_ALL -// -LV_SCR_LOAD_ANIM_NONE -LV_SCR_LOAD_ANIM_OVER_LEFT -LV_SCR_LOAD_ANIM_OVER_RIGHT -LV_SCR_LOAD_ANIM_OVER_TOP -LV_SCR_LOAD_ANIM_OVER_BOTTOM -LV_SCR_LOAD_ANIM_MOVE_LEFT -LV_SCR_LOAD_ANIM_MOVE_RIGHT -LV_SCR_LOAD_ANIM_MOVE_TOP -LV_SCR_LOAD_ANIM_MOVE_BOTTOM -LV_SCR_LOAD_ANIM_FADE_ON - -LV_ALIGN_CENTER -LV_ALIGN_IN_TOP_LEFT -LV_ALIGN_IN_TOP_MID -LV_ALIGN_IN_TOP_RIGHT -LV_ALIGN_IN_BOTTOM_LEFT -LV_ALIGN_IN_BOTTOM_MID -LV_ALIGN_IN_BOTTOM_RIGHT -LV_ALIGN_IN_LEFT_MID -LV_ALIGN_IN_RIGHT_MID -LV_ALIGN_OUT_TOP_LEFT -LV_ALIGN_OUT_TOP_MID -LV_ALIGN_OUT_TOP_RIGHT -LV_ALIGN_OUT_BOTTOM_LEFT -LV_ALIGN_OUT_BOTTOM_MID -LV_ALIGN_OUT_BOTTOM_RIGHT -LV_ALIGN_OUT_LEFT_TOP -LV_ALIGN_OUT_LEFT_MID -LV_ALIGN_OUT_LEFT_BOTTOM -LV_ALIGN_OUT_RIGHT_TOP -LV_ALIGN_OUT_RIGHT_MID -LV_ALIGN_OUT_RIGHT_BOTTOM - -LV_INDEV_STATE_REL -LV_INDEV_STATE_PR -LV_DRAG_DIR_HOR -LV_DRAG_DIR_VER -LV_DRAG_DIR_BOTH -LV_DRAG_DIR_ONE -LV_GESTURE_DIR_TOP -LV_GESTURE_DIR_BOTTOM -LV_GESTURE_DIR_LEFT -LV_GESTURE_DIR_RIGHT - -LV_DISP_ROT_NONE -LV_DISP_ROT_90 -LV_DISP_ROT_180 -LV_DISP_ROT_270 - -LV_DISP_SIZE_SMALL -LV_DISP_SIZE_MEDIUM -LV_DISP_SIZE_LARGE -LV_DISP_SIZE_EXTRA_LARGE - -LV_DRAG_DIR_HOR -LV_DRAG_DIR_VER -LV_DRAG_DIR_BOTH -LV_DRAG_DIR_ONE - -LV_GESTURE_DIR_TOP -LV_GESTURE_DIR_BOTTOM -LV_GESTURE_DIR_LEFT -LV_GESTURE_DIR_RIGHT - -LV_ANIM_OFF -LV_ANIM_ON - -LV_BLEND_MODE_NORMAL -LV_BLEND_MODE_ADDITIVE -LV_BLEND_MODE_SUBTRACTIVE - -// Obj parts -OBJ_PART_MAIN -// OBJ_PART_VIRTUAL_FIRST -// OBJ_PART_REAL_FIRST -OBJ_PART_ALL -// LV State -STATE_DEFAULT -STATE_CHECKED -STATE_FOCUSED -STATE_EDITED -STATE_HOVERED -STATE_PRESSED -STATE_DISABLED -// OPA opacity -OPA_TRANSP -OPA_0 -OPA_10 -OPA_20 -OPA_30 -OPA_40 -OPA_50 -OPA_60 -OPA_70 -OPA_80 -OPA_90 -OPA_100 -OPA_COVER - -// LV Groups -KEY_UP -KEY_DOWN -KEY_RIGHT -KEY_LEFT -KEY_ESC -KEY_DEL -KEY_BACKSPACE -KEY_ENTER -KEY_NEXT -KEY_PREV -KEY_HOME -KEY_END - -// LV Style -BORDER_SIDE_NONE -BORDER_SIDE_BOTTOM -BORDER_SIDE_TOP -BORDER_SIDE_LEFT -BORDER_SIDE_RIGHT -BORDER_SIDE_FULL -BORDER_SIDE_INTERNAL - -GRAD_DIR_NONE -GRAD_DIR_VER -GRAD_DIR_HOR - -LV_TEXT_DECOR_NONE -LV_TEXT_DECOR_UNDERLINE -LV_TEXT_DECOR_STRIKETHROUGH - -// LV Styles parts - -LV_STYLE_RADIUS -LV_STYLE_CLIP_CORNER -LV_STYLE_SIZE -LV_STYLE_TRANSFORM_WIDTH -LV_STYLE_TRANSFORM_HEIGHT -LV_STYLE_TRANSFORM_ANGLE -LV_STYLE_TRANSFORM_ZOOM -LV_STYLE_OPA_SCALE - -LV_STYLE_PAD_TOP -LV_STYLE_PAD_BOTTOM -LV_STYLE_PAD_LEFT -LV_STYLE_PAD_RIGHT -LV_STYLE_PAD_INNER -LV_STYLE_MARGIN_TOP -LV_STYLE_MARGIN_BOTTOM -LV_STYLE_MARGIN_LEFT -LV_STYLE_MARGIN_RIGHT - -LV_STYLE_BG_BLEND_MODE -LV_STYLE_BG_MAIN_STOP -LV_STYLE_BG_GRAD_STOP -LV_STYLE_BG_GRAD_DIR -LV_STYLE_BG_COLOR -LV_STYLE_BG_GRAD_COLOR -LV_STYLE_BG_OPA - -LV_STYLE_BORDER_WIDTH -LV_STYLE_BORDER_SIDE -LV_STYLE_BORDER_BLEND_MODE -LV_STYLE_BORDER_POST -LV_STYLE_BORDER_COLOR -LV_STYLE_BORDER_OPA - -LV_STYLE_OUTLINE_WIDTH -LV_STYLE_OUTLINE_PAD -LV_STYLE_OUTLINE_BLEND_MODE -LV_STYLE_OUTLINE_COLOR -LV_STYLE_OUTLINE_OPA - -LV_STYLE_SHADOW_WIDTH -LV_STYLE_SHADOW_OFS_X -LV_STYLE_SHADOW_OFS_Y -LV_STYLE_SHADOW_SPREAD -LV_STYLE_SHADOW_BLEND_MODE -LV_STYLE_SHADOW_COLOR -LV_STYLE_SHADOW_OPA - -LV_STYLE_PATTERN_BLEND_MODE -LV_STYLE_PATTERN_REPEAT -LV_STYLE_PATTERN_RECOLOR -LV_STYLE_PATTERN_OPA -LV_STYLE_PATTERN_RECOLOR_OPA -LV_STYLE_PATTERN_IMAGE - -LV_STYLE_VALUE_LETTER_SPACE -LV_STYLE_VALUE_LINE_SPACE -LV_STYLE_VALUE_BLEND_MODE -LV_STYLE_VALUE_OFS_X -LV_STYLE_VALUE_OFS_Y -LV_STYLE_VALUE_ALIGN -LV_STYLE_VALUE_COLOR -LV_STYLE_VALUE_OPA -LV_STYLE_VALUE_FONT -LV_STYLE_VALUE_STR - -LV_STYLE_TEXT_LETTER_SPACE -LV_STYLE_TEXT_LINE_SPACE -LV_STYLE_TEXT_DECOR -LV_STYLE_TEXT_BLEND_MODE -LV_STYLE_TEXT_COLOR -LV_STYLE_TEXT_SEL_COLOR -LV_STYLE_TEXT_SEL_BG_COLOR -LV_STYLE_TEXT_OPA -LV_STYLE_TEXT_FONT - -LV_STYLE_LINE_WIDTH -LV_STYLE_LINE_BLEND_MODE -LV_STYLE_LINE_DASH_WIDTH -LV_STYLE_LINE_DASH_GAP -LV_STYLE_LINE_ROUNDED -LV_STYLE_LINE_COLOR -LV_STYLE_LINE_OPA - -LV_STYLE_IMAGE_BLEND_MODE -LV_STYLE_IMAGE_RECOLOR -LV_STYLE_IMAGE_OPA -LV_STYLE_IMAGE_RECOLOR_OPA - -LV_STYLE_TRANSITION_TIME -LV_STYLE_TRANSITION_DELAY -LV_STYLE_TRANSITION_PROP_1 -LV_STYLE_TRANSITION_PROP_2 -LV_STYLE_TRANSITION_PROP_3 -LV_STYLE_TRANSITION_PROP_4 -LV_STYLE_TRANSITION_PROP_5 -LV_STYLE_TRANSITION_PROP_6 -LV_STYLE_TRANSITION_PATH - -LV_STYLE_SCALE_WIDTH -LV_STYLE_SCALE_BORDER_WIDTH -LV_STYLE_SCALE_END_BORDER_WIDTH -LV_STYLE_SCALE_END_LINE_WIDTH -LV_STYLE_SCALE_GRAD_COLOR -LV_STYLE_SCALE_END_COLOR - -LV_TXT_FLAG_NONE -LV_TXT_FLAG_RECOLOR -LV_TXT_FLAG_EXPAND -LV_TXT_FLAG_CENTER -LV_TXT_FLAG_RIGHT -LV_TXT_FLAG_FIT - -LV_TXT_CMD_STATE_WAIT -LV_TXT_CMD_STATE_PAR -LV_TXT_CMD_STATE_IN - -LV_FS_RES_OK -LV_FS_RES_HW_ERR -LV_FS_RES_FS_ERR -LV_FS_RES_NOT_EX -LV_FS_RES_FULL -LV_FS_RES_LOCKED -LV_FS_RES_DENIED -LV_FS_RES_BUSY -LV_FS_RES_TOUT -LV_FS_RES_NOT_IMP -LV_FS_RES_OUT_OF_MEM -LV_FS_RES_INV_PARAM -LV_FS_RES_UNKNOWN - -LV_FS_MODE_WR -LV_FS_MODE_RD - - -LV_EVENT_PRESSED -LV_EVENT_PRESSING -LV_EVENT_PRESS_LOST -LV_EVENT_SHORT_CLICKED -LV_EVENT_LONG_PRESSED -LV_EVENT_LONG_PRESSED_REPEAT - -LV_EVENT_CLICKED -LV_EVENT_RELEASED -LV_EVENT_DRAG_BEGIN -LV_EVENT_DRAG_END -LV_EVENT_DRAG_THROW_BEGIN -LV_EVENT_GESTURE -LV_EVENT_KEY -LV_EVENT_FOCUSED -LV_EVENT_DEFOCUSED -LV_EVENT_LEAVE -LV_EVENT_VALUE_CHANGED -LV_EVENT_INSERT -LV_EVENT_REFRESH -LV_EVENT_APPLY -LV_EVENT_CANCEL -LV_EVENT_DELETE - - -LV_PROTECT_NONE -LV_PROTECT_CHILD_CHG -LV_PROTECT_PARENT -LV_PROTECT_POS -LV_PROTECT_FOLLOW - -LV_PROTECT_PRESS_LOST - -LV_PROTECT_CLICK_FOCUS -LV_PROTECT_EVENT_TO_DISABLED - -// LV Widgets -// LV Arc -ARC_TYPE_NORMAL -ARC_TYPE_SYMMETRIC -ARC_TYPE_REVERSE - -ARC_PART_BG -ARC_PART_INDIC -ARC_PART_KNOB - -// LV Bar -BAR_TYPE_NORMAL -BAR_TYPE_SYMMETRICAL -BAR_TYPE_CUSTOM - -// Lv Btn -BTN_STATE_RELEASED -BTN_STATE_PRESSED -BTN_STATE_DISABLED -BTN_STATE_CHECKED_RELEASED -BTN_STATE_CHECKED_PRESSED -BTN_STATE_CHECKED_DISABLED - -// Lv BtnMatrix -BTNMATRIX_CTRL_HIDDEN -BTNMATRIX_CTRL_NO_REPEAT -BTNMATRIX_CTRL_DISABLED -BTNMATRIX_CTRL_CHECKABLE -BTNMATRIX_CTRL_CHECK_STATE -BTNMATRIX_CTRL_CLICK_TRIG - -// LV Calendar -CALENDAR_PART_BG -CALENDAR_PART_HEADER -CALENDAR_PART_DAY_NAMES -CALENDAR_PART_DATE - -// LV Chart -CHART_TYPE_NONE -CHART_TYPE_LINE -CHART_TYPE_COLUMN - -CHART_UPDATE_MODE_SHIFT -CHART_UPDATE_MODE_CIRCULAR - -CHART_AXIS_PRIMARY_Y -CHART_AXIS_SECONDARY_Y - -CHART_CURSOR_NONE -CHART_CURSOR_RIGHT -CHART_CURSOR_UP -CHART_CURSOR_LEFT -CHART_CURSOR_DOWN - -CHART_AXIS_SKIP_LAST_TICK -CHART_AXIS_DRAW_LAST_TICK -CHART_AXIS_INVERSE_LABELS_ORDER - -CHART_PART_BG -CHART_PART_SERIES_BG -CHART_PART_SERIES -CHART_PART_CURSOR - -// LV Checkbox -CHECKBOX_PART_BG -CHECKBOX_PART_BULLET - -// LV Cont -LAYOUT_OFF -LAYOUT_CENTER -LAYOUT_COLUMN_LEFT -LAYOUT_COLUMN_MID -LAYOUT_COLUMN_RIGHT -LAYOUT_ROW_TOP -LAYOUT_ROW_MID -LAYOUT_ROW_BOTTOM -LAYOUT_PRETTY_TOP -LAYOUT_PRETTY_MID -LAYOUT_PRETTY_BOTTOM -LAYOUT_GRID - -FIT_NONE -FIT_TIGHT -FIT_PARENT -FIT_MAX - -// LV Cpicker -CPICKER_TYPE_RECT -CPICKER_TYPE_DISC - -CPICKER_COLOR_MODE_HUE -CPICKER_COLOR_MODE_SATURATION -CPICKER_COLOR_MODE_VALUE - -CPICKER_PART_MAIN -CPICKER_PART_KNOB - -// LV Dropdown -DROPDOWN_DIR_DOWN -DROPDOWN_DIR_UP -DROPDOWN_DIR_LEFT -DROPDOWN_DIR_RIGHT - -DROPDOWN_PART_MAIN -DROPDOWN_PART_LIST -DROPDOWN_PART_SCROLLBAR -DROPDOWN_PART_SELECTED - -// LV Gauge -GAUGE_PART_MAIN -GAUGE_PART_MAJOR -GAUGE_PART_NEEDLE - -// LV Img -// LV Imgbtn - -// LV Keyboard -KEYBOARD_MODE_TEXT_LOWER -KEYBOARD_MODE_TEXT_UPPER -KEYBOARD_MODE_SPECIAL -KEYBOARD_MODE_NUM - -KEYBOARD_PART_BG -KEYBOARD_PART_BTN - -// LV Label -LABEL_LONG_EXPAND -LABEL_LONG_BREAK -LABEL_LONG_DOT -LABEL_LONG_SROLL -LV_LABEL_LONG_SROLL_CIRC -LABEL_LONG_CROP - -LABEL_ALIGN_LEFT -LABEL_ALIGN_CENTER -LABEL_ALIGN_RIGHT -LABEL_ALIGN_AUTO - -// LV Led -LED_PART_MAIN - -// LV Line -LINEMETER_PART_MAIN - -// LV List -LIST_PART_BG -LIST_PART_SCROLLBAR -LIST_PART_EDGE_FLASH - -// LV Msgbox -// enum { - LV_MSGBOX_PART_BG - - LV_MSGBOX_PART_BTN_BG - LV_MSGBOX_PART_BTN, -// }; - -// LV Objmask -OBJMASK_PART_MAIN - -// // LV Templ -// TEMPL_STYLE_X -// TEMPL_STYLE_Y - -// LV Page -SCROLLBAR_MODE_OFF -SCROLLBAR_MODE_ON -SCROLLBAR_MODE_DRAG -SCROLLBAR_MODE_AUTO -SCROLLBAR_MODE_HIDE -SCROLLBAR_MODE_UNHIDE - -PAGE_EDGE_LEFT -PAGE_EDGE_TOP -PAGE_EDGE_RIGHT -PAGE_EDGE_BOTTOM -// enum { - LV_PAGE_PART_BG - LV_PAGE_PART_SCROLLBAR - LV_PAGE_PART_EDGE_FLASH, - _LV_PAGE_PART_VIRTUAL_LAST, - - LV_PAGE_PART_SCROLLABLE - _LV_PAGE_PART_REAL_LAST, -// }; - -// LV Roller -ROLLER_MODE_NORMAL -ROLLER_MODE_INFINITE -// enum { - LV_ROLLER_PART_BG - LV_ROLLER_PART_SELECTED -// _LV_ROLLER_PART_VIRTUAL_LAST, -// }; - -// LV Slider -SLIDER_TYPE_NORMAL -SLIDER_TYPE_SYMMETRICAL -SLIDER_TYPE_RANGE -// enum { - LV_SLIDER_PART_BG, /** Slider background style. */ - LV_SLIDER_PART_INDIC, /** Slider indicator (filled area) style. */ - LV_SLIDER_PART_KNOB, /** Slider knob style. */ -// }; - -// LV Spinbox -// enum { - LV_SPINBOX_PART_BG - LV_SPINBOX_PART_CURSOR - _LV_SPINBOX_PART_VIRTUAL_LAST - _LV_SPINBOX_PART_REAL_LAST -// }; - -// LV Spinner -SPINNER_TYPE_SPINNING_ARC -SPINNER_TYPE_FILLSPIN_ARC -SPINNER_TYPE_CONSTANT_ARC - -SPINNER_DIR_FORWARD -SPINNER_DIR_BACKWARD -// enum { - LV_SPINNER_PART_BG - LV_SPINNER_PART_INDIC - _LV_SPINNER_PART_VIRTUAL_LAST, - - _LV_SPINNER_PART_REAL_LAST -// }; - -// LV Switch -// enum { - LV_SWITCH_PART_BG - LV_SWITCH_PART_INDIC - LV_SWITCH_PART_KNOB - _LV_SWITCH_PART_VIRTUAL_LAST -// }; - -// LV Table -// enum { - LV_TABLE_PART_BG, /* Because of this member, LV_PART.*CELL1 has enum value of 1, */ - LV_TABLE_PART_CELL1, /* LV_PART.*CELL2 has an enum value of 2 and so on up to the maximum */ - LV_TABLE_PART_CELL2, /* number of styles specified by LV_TABLE_CELL_STYLE_CNT */ - LV_TABLE_PART_CELL3, - LV_TABLE_PART_CELL4, /* CELL 5-16 are not needed to be defined, the values in this enum -// are there for backward compatibility */ -// }; - -// LV Tabview -TABVIEW_TAB_POS_NONE -TABVIEW_TAB_POS_TOP -TABVIEW_TAB_POS_BOTTOM -TABVIEW_TAB_POS_LEFT -TABVIEW_TAB_POS_RIGHT -// enum { - LV_TABVIEW_PART_BG - _LV_TABVIEW_PART_VIRTUAL_LAST - - LV_TABVIEW_PART_BG_SCROLLABLE - LV_TABVIEW_PART_TAB_BG, - LV_TABVIEW_PART_TAB_BTN, - LV_TABVIEW_PART_INDIC, - _LV_TABVIEW_PART_REAL_LAST, -// }; - -// LV Textarea -TEXTAREA_CURSOR_LAST -// enum { - LV_TEXTAREA_PART_BG - LV_TEXTAREA_PART_SCROLLBAR - LV_TEXTAREA_PART_EDGE_FLASH - LV_TEXTAREA_PART_CURSOR - LV_TEXTAREA_PART_PLACEHOLDER, /**< Placeholder style */ - _LV_TEXTAREA_PART_VIRTUAL_LAST, - - _LV_TEXTAREA_PART_REAL_LAST -// }; - -// LV Tileview -// enum { - LV_TILEVIEW_PART_BG - LV_TILEVIEW_PART_SCROLLBAR - LV_TILEVIEW_PART_EDGE_FLASH - _LV_TILEVIEW_PART_VIRTUAL_LAST - _LV_TILEVIEW_PART_REAL_LAST -// }; - -// LV Win -// enum { - LV_WIN_PART_BG - _LV_WIN_PART_VIRTUAL_LAST, - LV_WIN_PART_HEADER - LV_WIN_PART_CONTENT_SCROLLABLE, /**< Window content style. */ - LV_WIN_PART_SCROLLBAR, /**< Window scrollbar style. */ - _LV_WIN_PART_REAL_LAST -// }; - - -LV_DRAW_MASK_RES_TRANSP -LV_DRAW_MASK_RES_FULL_COVER -LV_DRAW_MASK_RES_CHANGED -LV_DRAW_MASK_RES_UNKNOWN - -LV_DRAW_MASK_TYPE_LINE -LV_DRAW_MASK_TYPE_ANGLE -LV_DRAW_MASK_TYPE_RADIUS -LV_DRAW_MASK_TYPE_FADE -LV_DRAW_MASK_TYPE_MAP - -LV_DRAW_MASK_LINE_SIDE_LEFT -LV_DRAW_MASK_LINE_SIDE_RIGHT -LV_DRAW_MASK_LINE_SIDE_TOP -LV_DRAW_MASK_LINE_SIDE_BOTTOM - -// LV IMG - -LV_IMG_CF_UNKNOWN - -LV_IMG_CF_RAW -LV_IMG_CF_RAW_ALPHA -LV_IMG_CF_RAW_CHROMA_KEYED - -LV_IMG_CF_TRUE_COLOR -LV_IMG_CF_TRUE_COLOR_ALPHA -LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED - -LV_IMG_CF_INDEXED_1BIT -LV_IMG_CF_INDEXED_2BIT -LV_IMG_CF_INDEXED_4BIT -LV_IMG_CF_INDEXED_8BIT - -LV_IMG_CF_ALPHA_1BIT -LV_IMG_CF_ALPHA_2BIT -LV_IMG_CF_ALPHA_4BIT -LV_IMG_CF_ALPHA_8BIT - -// Design modes - -LV_DESIGN_DRAW_MAIN -LV_DESIGN_DRAW_POST -LV_DESIGN_COVER_CHK - -LV_DESIGN_RES_OK -LV_DESIGN_RES_COVER -LV_DESIGN_RES_NOT_COVER -LV_DESIGN_RES_MASKED diff --git a/tools/lv_berry/preprocessor.py b/tools/lv_berry/preprocessor.py new file mode 100644 index 000000000..32be6b8ec --- /dev/null +++ b/tools/lv_berry/preprocessor.py @@ -0,0 +1,107 @@ +import re +import sys +import glob + +# https://stackoverflow.com/a/241506 +def comment_remover(text): + def replacer(match): + s = match.group(0) + if s.startswith('/'): + return " " # note: a space and not an empty string + else: + return s + pattern = re.compile( + r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', + re.DOTALL | re.MULTILINE + ) + return re.sub(pattern, replacer, text) + +lv_src_prefix = "../../lib/libesp32_lvgl/LVGL/src/" +# find all headers +headers_names = glob.glob(lv_src_prefix + "**/*.h", recursive=True) + +def clean_source(raw): + raw = comment_remover(raw) # remove comments + # convert cr/lf or cr to lf + raw = re.sub('\r\n ', '\n', raw) + raw = re.sub('\r', '\n', raw) + # group multilines into a single line, i.e. if line ends with '\', put in a single line + raw = re.sub('\\\\\n', ' ', raw) + # remove preprocessor directives + raw = re.sub('\n[ \t]*#[^\n]*(?=\n)', '', raw) + raw = re.sub('^[ \t]*#[^\n]*\n', '', raw) + raw = re.sub('\n[ \t]*#[^\n]*$', '', raw) + + # remove extern "C" {} + raw = re.sub('extern\s+"C"\s+{(.*)}', '\\1', raw, flags=re.DOTALL) + + # remove empty lines + raw = re.sub('\n[ \t]*(?=\n)', '', raw) + raw = re.sub('^[ \t]*\n', '', raw) # remove first empty line + raw = re.sub('\n[ \t]*$', '', raw) # remove last empty line + return raw + +# ################################################################################ +# Parse 'enum' +# ################################################################################ +output_filename = "lv_enum.h" +sys.stdout = open(output_filename, 'w') +print(""" +// LV Colors - we store in 24 bits format and will convert at runtime +// This is specific treatment because we keep colors in 24 bits format +COLOR_WHITE=0xFFFFFF +COLOR_SILVER=0xC0C0C0 +COLOR_GRAY=0x808080 +COLOR_BLACK=0x000000 +COLOR_RED=0xFF0000 +COLOR_MAROON=0x800000 +COLOR_YELLOW=0xFFFF00 +COLOR_OLIVE=0x808000 +COLOR_LIME=0x00FF00 +COLOR_GREEN=0x008000 +COLOR_CYAN=0x00FFFF +COLOR_AQUA=0x00FFFF +COLOR_TEAL=0x008080 +COLOR_BLUE=0x0000FF +COLOR_NAVY=0x000080 +COLOR_MAGENTA=0xFF00FF +COLOR_PURPLE=0x800080 + +// following are #define, not enum +LV_RADIUS_CIRCLE +LV_TEXTAREA_CURSOR_LAST +LV_STYLE_PROP_ALL +""") + + + +# unit test +#headers_names = [ '../../lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_btn.h' ] +#headers_names = [ '../../lib/libesp32_lvgl/LVGL/src/lv_core/lv_style.h' ] +# +for header_name in headers_names: + with open(header_name) as f: + raw = clean_source(f.read()) + + # extract enums + enums = re.findall('enum\s+{(.*?)}', raw, flags=re.DOTALL) + for enum in enums: # iterate on all matches + # remove enums defined via a macro + enum = re.sub('\S+\((.*?),.*?\),', '\\1,', enum) # turn 'LV_STYLE_PROP_INIT(LV_STYLE_SIZE, 0x0, LV_STYLE_ID_VALUE + 3, LV_STYLE_ATTR_NONE),' into 'LV_STYLE_SIZE' + # + enum_elt = enum.split(",") + for enum_item in enum_elt: + # remove any space + enum_item = re.sub('[ \t\n]', '', enum_item) + # remove anything after '=' + enum_item = re.sub('=.*$', '', enum_item) + + # item is ready + exclude = False + for exclude_prefix in ["_", "LV_BIDI_DIR_", "LV_FONT_", "LV_IMG_CF_RESERVED_", "LV_IMG_CF_USER_", + "LV_SIGNAL_", "LV_TEMPL_", "LV_TASK_PRIO_", "LV_THEME_", "LV_KEYBOARD_MODE_TEXT_ARABIC"]: + if enum_item.startswith(exclude_prefix): exclude = True + if exclude: continue + + print(enum_item) +sys.stdout.close() From b2da0b2ed781a97a525c76ad6b894d73708da7b7 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 9 Sep 2021 20:32:19 +0200 Subject: [PATCH 171/317] LVGL add lv_clock_icon --- .../Berry/default/be_lvgl_clock_icon_lib.c | 306 ++++++++++++++++++ lib/libesp32/Berry/default/be_modtab.c | 2 + .../Berry/default/embedded/lv_clock_icon.be | 53 +++ tasmota/berry/lvgl_examples/lvgl_demo.be | 1 + 4 files changed, 362 insertions(+) create mode 100644 lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c create mode 100644 lib/libesp32/Berry/default/embedded/lv_clock_icon.be diff --git a/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c new file mode 100644 index 000000000..888456745 --- /dev/null +++ b/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c @@ -0,0 +1,306 @@ +/******************************************************************** + * Tasmota LVGL lv_signal_bars widget + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_LVGL + +#include "lvgl.h" + +/******************************************************************** +** Solidified function: set_time +********************************************************************/ +be_local_closure(set_time, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_string("string", 398550328, 6), + /* K1 */ be_nested_string("hour", -1241306097, 4), + /* K2 */ be_nested_string("minute", 954666857, 6), + /* K3 */ be_nested_string("sec", -1155074638, 3), + /* K4 */ be_nested_string("format", -1180859054, 6), + /* K5 */ be_nested_string("%02d%s%02d", 1587999717, 10), + /* K6 */ be_const_int(2), + /* K7 */ be_nested_string(":", 1057798253, 1), + /* K8 */ be_nested_string(" ", 621580159, 1), + /* K9 */ be_nested_string("set_text", 1849641155, 8), + }), + (be_nested_const_str("set_time", 900236405, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[27]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x88140101, // 0001 GETMBR R5 R0 K1 + 0x20140205, // 0002 NE R5 R1 R5 + 0x74160005, // 0003 JMPT R5 #000A + 0x88140102, // 0004 GETMBR R5 R0 K2 + 0x20140405, // 0005 NE R5 R2 R5 + 0x74160002, // 0006 JMPT R5 #000A + 0x88140103, // 0007 GETMBR R5 R0 K3 + 0x20140605, // 0008 NE R5 R3 R5 + 0x7816000F, // 0009 JMPF R5 #001A + 0x8C140904, // 000A GETMET R5 R4 K4 + 0x581C0005, // 000B LDCONST R7 K5 + 0x5C200200, // 000C MOVE R8 R1 + 0x10240706, // 000D MOD R9 R3 K6 + 0x78260001, // 000E JMPF R9 #0011 + 0x58240007, // 000F LDCONST R9 K7 + 0x70020000, // 0010 JMP #0012 + 0x58240008, // 0011 LDCONST R9 K8 + 0x5C280400, // 0012 MOVE R10 R2 + 0x7C140A00, // 0013 CALL R5 5 + 0x90020201, // 0014 SETMBR R0 K1 R1 + 0x90020402, // 0015 SETMBR R0 K2 R2 + 0x90020603, // 0016 SETMBR R0 K3 R3 + 0x8C180109, // 0017 GETMET R6 R0 K9 + 0x5C200A00, // 0018 MOVE R8 R5 + 0x7C180400, // 0019 CALL R6 2 + 0x80000000, // 001A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(every_second, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_string("tasmota", 424643812, 7), + /* K1 */ be_nested_string("time_dump", -964556549, 9), + /* K2 */ be_nested_string("rtc", 1070575216, 3), + /* K3 */ be_nested_string("local", -1673304312, 5), + /* K4 */ be_nested_string("year", -1367388900, 4), + /* K5 */ be_nested_string("set_time", 900236405, 8), + /* K6 */ be_nested_string("hour", -1241306097, 4), + /* K7 */ be_nested_string("min", -913357481, 3), + /* K8 */ be_nested_string("sec", -1155074638, 3), + }), + (be_nested_const_str("every_second", 2075451465, 12)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[17]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0xB80E0000, // 0002 GETNGBL R3 K0 + 0x8C0C0702, // 0003 GETMET R3 R3 K2 + 0x7C0C0200, // 0004 CALL R3 1 + 0x940C0703, // 0005 GETIDX R3 R3 K3 + 0x7C040400, // 0006 CALL R1 2 + 0x94080304, // 0007 GETIDX R2 R1 K4 + 0x540E07B1, // 0008 LDINT R3 1970 + 0x20080403, // 0009 NE R2 R2 R3 + 0x780A0004, // 000A JMPF R2 #0010 + 0x8C080105, // 000B GETMET R2 R0 K5 + 0x94100306, // 000C GETIDX R4 R1 K6 + 0x94140307, // 000D GETIDX R5 R1 K7 + 0x94180308, // 000E GETIDX R6 R1 K8 + 0x7C080800, // 000F CALL R2 4 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 13, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_nested_string("init", 380752755, 4), + /* K1 */ be_nested_string("lv", 1529997255, 2), + /* K2 */ be_nested_string("seg7_font", -195276607, 9), + /* K3 */ be_nested_string("set_style_local_text_font", 954295699, 25), + /* K4 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), + /* K5 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K6 */ be_nested_string("get_height", -723211773, 10), + /* K7 */ be_nested_string("set_text", 1849641155, 8), + /* K8 */ be_nested_string("--:--", 1370615441, 5), + /* K9 */ be_nested_string("get_width", -1001549996, 9), + /* K10 */ be_nested_string("set_y", 1866178391, 5), + /* K11 */ be_const_int(2), + /* K12 */ be_nested_string("get_style_pad_right", -1144679830, 19), + /* K13 */ be_nested_string("set_x", 1849400772, 5), + /* K14 */ be_const_int(3), + /* K15 */ be_nested_string("set_style_local_pad_right", 1126712366, 25), + /* K16 */ be_nested_string("set_style_local_bg_color", -498263023, 24), + /* K17 */ be_nested_string("lv_color", 1419148319, 8), + /* K18 */ be_nested_string("COLOR_BLACK", 264427940, 11), + /* K19 */ be_nested_string("tasmota", 424643812, 7), + /* K20 */ be_nested_string("add_driver", 1654458371, 10), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[76]) { /* code */ + 0x600C0014, // 0000 GETGBL R3 G20 + 0x5C100000, // 0001 MOVE R4 R0 + 0x7C0C0200, // 0002 CALL R3 1 + 0x8C0C0700, // 0003 GETMET R3 R3 K0 + 0x5C140200, // 0004 MOVE R5 R1 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C0C0600, // 0006 CALL R3 3 + 0xB80E0200, // 0007 GETNGBL R3 K1 + 0x8C0C0702, // 0008 GETMET R3 R3 K2 + 0x5416000F, // 0009 LDINT R5 16 + 0x7C0C0400, // 000A CALL R3 2 + 0x4C100000, // 000B LDNIL R4 + 0x20100604, // 000C NE R4 R3 R4 + 0x78120006, // 000D JMPF R4 #0015 + 0x8C100103, // 000E GETMET R4 R0 K3 + 0xB81A0200, // 000F GETNGBL R6 K1 + 0x88180D04, // 0010 GETMBR R6 R6 K4 + 0xB81E0200, // 0011 GETNGBL R7 K1 + 0x881C0F05, // 0012 GETMBR R7 R7 K5 + 0x5C200600, // 0013 MOVE R8 R3 + 0x7C100800, // 0014 CALL R4 4 + 0x4C100000, // 0015 LDNIL R4 + 0x20100204, // 0016 NE R4 R1 R4 + 0x7812002E, // 0017 JMPF R4 #0047 + 0x8C100306, // 0018 GETMET R4 R1 K6 + 0x7C100200, // 0019 CALL R4 1 + 0x8C140107, // 001A GETMET R5 R0 K7 + 0x581C0008, // 001B LDCONST R7 K8 + 0x7C140400, // 001C CALL R5 2 + 0x8C140109, // 001D GETMET R5 R0 K9 + 0x7C140200, // 001E CALL R5 1 + 0x8C18010A, // 001F GETMET R6 R0 K10 + 0x8C200306, // 0020 GETMET R8 R1 K6 + 0x7C200200, // 0021 CALL R8 1 + 0x8C240106, // 0022 GETMET R9 R0 K6 + 0x7C240200, // 0023 CALL R9 1 + 0x04201009, // 0024 SUB R8 R8 R9 + 0x0C20110B, // 0025 DIV R8 R8 K11 + 0x7C180400, // 0026 CALL R6 2 + 0x8C18030C, // 0027 GETMET R6 R1 K12 + 0xB8220200, // 0028 GETNGBL R8 K1 + 0x88201104, // 0029 GETMBR R8 R8 K4 + 0xB8260200, // 002A GETNGBL R9 K1 + 0x88241305, // 002B GETMBR R9 R9 K5 + 0x7C180600, // 002C CALL R6 3 + 0x8C1C010D, // 002D GETMET R7 R0 K13 + 0x8C240309, // 002E GETMET R9 R1 K9 + 0x7C240200, // 002F CALL R9 1 + 0x04241205, // 0030 SUB R9 R9 R5 + 0x04241206, // 0031 SUB R9 R9 R6 + 0x0424130E, // 0032 SUB R9 R9 K14 + 0x7C1C0400, // 0033 CALL R7 2 + 0x8C1C030F, // 0034 GETMET R7 R1 K15 + 0xB8260200, // 0035 GETNGBL R9 K1 + 0x88241304, // 0036 GETMBR R9 R9 K4 + 0xB82A0200, // 0037 GETNGBL R10 K1 + 0x88281505, // 0038 GETMBR R10 R10 K5 + 0x002C0C05, // 0039 ADD R11 R6 R5 + 0x54320005, // 003A LDINT R12 6 + 0x002C160C, // 003B ADD R11 R11 R12 + 0x7C1C0800, // 003C CALL R7 4 + 0x8C1C0110, // 003D GETMET R7 R0 K16 + 0xB8260200, // 003E GETNGBL R9 K1 + 0x88241304, // 003F GETMBR R9 R9 K4 + 0xB82A0200, // 0040 GETNGBL R10 K1 + 0x88281505, // 0041 GETMBR R10 R10 K5 + 0xB82E2200, // 0042 GETNGBL R11 K17 + 0xB8320200, // 0043 GETNGBL R12 K1 + 0x88301912, // 0044 GETMBR R12 R12 K18 + 0x7C2C0200, // 0045 CALL R11 1 + 0x7C1C0800, // 0046 CALL R7 4 + 0xB8122600, // 0047 GETNGBL R4 K19 + 0x8C100914, // 0048 GETMET R4 R4 K20 + 0x5C180000, // 0049 MOVE R6 R0 + 0x7C100400, // 004A CALL R4 2 + 0x80000000, // 004B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: del +********************************************************************/ +be_local_closure(del, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("del", -816214454, 3), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("remove_driver", 1030243768, 13), + }), + (be_nested_const_str("del", -816214454, 3)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[10]) { /* code */ + 0x60040014, // 0000 GETGBL R1 G20 + 0x5C080000, // 0001 MOVE R2 R0 + 0x7C040200, // 0002 CALL R1 1 + 0x8C040300, // 0003 GETMET R1 R1 K0 + 0x7C040200, // 0004 CALL R1 1 + 0xB8060200, // 0005 GETNGBL R1 K1 + 0x8C040302, // 0006 GETMET R1 R1 K2 + 0x5C0C0000, // 0007 MOVE R3 R0 + 0x7C040400, // 0008 CALL R1 2 + 0x80000000, // 0009 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: lv_clock_icon +********************************************************************/ +extern const bclass be_class_lv_label; +be_local_class(lv_clock_icon, + 3, + &be_class_lv_label, + be_nested_map(7, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("sec", -1155074638, 3, -1), be_const_var(2) }, + { be_nested_key("hour", -1241306097, 4, -1), be_const_var(0) }, + { be_nested_key("set_time", 900236405, 8, 6), be_const_closure(set_time_closure) }, + { be_nested_key("every_second", 2075451465, 12, -1), be_const_closure(every_second_closure) }, + { be_nested_key("minute", 954666857, 6, -1), be_const_var(1) }, + { be_nested_key("init", 380752755, 4, 2), be_const_closure(init_closure) }, + { be_nested_key("del", -816214454, 3, -1), be_const_closure(del_closure) }, + })), + (be_nested_const_str("lv_clock_icon", -1037751086, 13)) +); +/*******************************************************************/ + +void be_load_lv_clock_icon_class(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_clock_icon); + be_setglobal(vm, "lv_clock_icon"); + be_pop(vm, 1); +} + +#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 6382d0855..f259d2076 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -131,6 +131,7 @@ extern void be_load_lv_wifi_bars_icon_class(bvm *vm); extern void be_load_lv_signal_arcs_class(bvm *vm); extern void be_load_lv_wifi_arcs_class(bvm *vm); extern void be_load_lv_wifi_arcs_icon_class(bvm *vm); +extern void be_load_lv_clock_icon_class(bvm *vm); #endif// USE_LVGL /* this code loads the native class definitions */ @@ -179,6 +180,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_lv_signal_arcs_class(vm); be_load_lv_wifi_arcs_class(vm); be_load_lv_wifi_arcs_icon_class(vm); + be_load_lv_clock_icon_class(vm); #endif // USE_LVGL } #endif diff --git a/lib/libesp32/Berry/default/embedded/lv_clock_icon.be b/lib/libesp32/Berry/default/embedded/lv_clock_icon.be new file mode 100644 index 000000000..c13660608 --- /dev/null +++ b/lib/libesp32/Berry/default/embedded/lv_clock_icon.be @@ -0,0 +1,53 @@ +#- LVGL lv_clock_icon + - +--# + +class lv_clock_icon: lv_label + var hour, minute, sec + + def init(parent, copy) + super(self).init(parent, copy) + var f_s7_16 = lv.seg7_font(16) + if f_s7_16 != nil self.set_style_local_text_font(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, f_s7_16) end + + if parent != nil + var parent_height = parent.get_height() + + self.set_text("--:--") + var w = self.get_width() + self.set_y((parent.get_height() - self.get_height()) / 2) # center vertically + + var pad_right = parent.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + self.set_x(parent.get_width() - w - pad_right - 3) + parent.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, pad_right + w + 6) + + self.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) + end + + tasmota.add_driver(self) + end + + def set_time(hour, minute, sec) + import string + if hour != self.hour || minute != self.minute || sec != self.sec + var txt = string.format("%02d%s%02d", hour, sec % 2 ? ":" : " ", minute) + self.hour = hour + self.minute = minute + self.sec = sec + #if txt[0] == '0' txt = '!' .. string.split(txt,1)[1] end # replace first char with '!' + self.set_text(txt) + end + end + + def every_second() + var now = tasmota.time_dump(tasmota.rtc()['local']) + if now['year'] != 1970 + self.set_time(now['hour'], now['min'], now['sec']) + end + end + + def del() + super(self).del() + tasmota.remove_driver(self) + end +end \ No newline at end of file diff --git a/tasmota/berry/lvgl_examples/lvgl_demo.be b/tasmota/berry/lvgl_examples/lvgl_demo.be index 2a47a5ce3..1d6c2f723 100644 --- a/tasmota/berry/lvgl_examples/lvgl_demo.be +++ b/tasmota/berry/lvgl_examples/lvgl_demo.be @@ -26,6 +26,7 @@ stat_line_height = stat_line.get_height() #- display wifi strength indicator icon (for professionals ;) -# wifi_icon = lv_wifi_arcs_icon(stat_line) # the widget takes care of positioning and driver stuff +clock_icon = lv_clock_icon(stat_line) #- create a style for the buttons -# btn_style = lv_style() From 840d9fdc2ba2fad19bdace35fea6be8ade8d9050 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 10 Sep 2021 08:36:26 +0200 Subject: [PATCH 172/317] Berry move introspect.vcall to call --- lib/libesp32/Berry/generate/be_const_strtab.h | 1353 ++++++----- .../Berry/generate/be_const_strtab_def.h | 1974 ++++++++--------- .../Berry/generate/be_fixed_introspect.h | 5 +- .../Berry/generate/be_fixed_m_builtin.h | 48 +- lib/libesp32/Berry/src/be_baselib.c | 51 + lib/libesp32/Berry/src/be_introspectlib.c | 51 - lib/libesp32/Berry/tests/call.be | 102 + lib/libesp32/Berry/tests/introspect_vcall.be | 96 - 8 files changed, 1842 insertions(+), 1838 deletions(-) create mode 100644 lib/libesp32/Berry/tests/call.be delete mode 100644 lib/libesp32/Berry/tests/introspect_vcall.be diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 26bebb7f8..6f54e22e3 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,682 +1,681 @@ -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_vcall; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_set_light; extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_WEBCAM_HREF; extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_lv_draw_mask_angle_param; extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_ROT1B; extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_HJL_CF; extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_DSB; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 91c1697fc..9c1087041 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1021 +1,1019 @@ -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SHELLY_DIMMER_BOOT0); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_HM10_TX); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_HPMA_RX); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_vcall); -be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_ADE7953_IRQ); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_ADC_RANGE); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DSB_OUT); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_NONE); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_POST); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_ETH_PHY_MDIO); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_raise); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_raise); be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_stop); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_HJL_CF); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_AS608_TX); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_MGC3130_RESET); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_AudioFileSource); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_I2C_Driver); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2C_SCL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_ADC_TEMP); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OPTION_A); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ILI9341_DC); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_HALLEFFECT); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_time_dump); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_time_dump); be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_remove_driver); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_remove_driver); be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, NULL); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_BL0940_RX); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_POWER); be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_DDSU666_TX); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_EC_C25519); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DHT11_OUT); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_byte); be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_INPUT_PULLDOWN); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_lv_objmask); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_objmask); be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2S_IN_SLCT); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_KEY1_TC); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_NRG_SEL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_lv_spinbox); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_CSE7766_TX); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_FALLING); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_BACKLIGHT); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_spinbox); be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_MAX31855DO); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_INTERRUPT); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_P9813_DAT); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_I2S_IN_DATA); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_KEY1_INV_PD); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_ARIRFRCV); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_IRRECV); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); static const bstring* const m_string_table[] = { - NULL, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_PULLDOWN, - NULL, - (const bstring *)&be_const_str__buffer, - NULL, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_search, - (const bstring *)&be_const_str_copy, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_false, - (const bstring *)&be_const_str_dot_p, - NULL, - (const bstring *)&be_const_str_arg, - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, - (const bstring *)&be_const_str_get_light, - (const bstring *)&be_const_str_upper, - (const bstring *)&be_const_str_GPS_TX, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_lv_font, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_i2c_enabled, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_attrdump, - NULL, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_lv_switch, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_SYMBOL_GPS, - NULL, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_ctypes_bytes, - (const bstring *)&be_const_str_ADC_PH, - NULL, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_allocated, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_SM2135_DAT, (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_WEBCAM_SIOC, - (const bstring *)&be_const_str_SYMBOL_LOOP, - NULL, - NULL, - (const bstring *)&be_const_str_EPAPER42_CS, - NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_LEDLNK_INV, - NULL, - (const bstring *)&be_const_str_SYMBOL_MUTE, - NULL, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_DHT22, - NULL, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_issubclass, - NULL, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_list, - (const bstring *)&be_const_str_BS814_CLK, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_close, - (const bstring *)&be_const_str_deinit, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_lv_sqrt_res, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_MHZ_RXD, - NULL, - (const bstring *)&be_const_str_WE517_RX, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_setrange, - (const bstring *)&be_const_str_atan2, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_lv_group_focus_cb, - (const bstring *)&be_const_str_static, - NULL, - (const bstring *)&be_const_str_remove, - (const bstring *)&be_const_str_bytes, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_dot_w, (const bstring *)&be_const_str_opt_connect, - NULL, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_TXD, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_ARIRFSEL, - NULL, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_var, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_opt_neq, - NULL, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_ARIRFRCV, - NULL, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_MAX31855CLK, - NULL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_WIEGAND_D1, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - NULL, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_BACKLIGHT, - NULL, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_iter, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_cb_dispatch, - (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_stop, + (const bstring *)&be_const_str_gamma10, + (const bstring *)&be_const_str_HRXL_RX, (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_lv_draw_mask_angle_param, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_resp_cmnd_failed, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_dot_def, + NULL, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_SYMBOL_LEFT, + NULL, + (const bstring *)&be_const_str_pin_mode, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str___upper__, + NULL, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_LMT01, NULL, (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_EPAPER29_CS, NULL, - (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_I2C_SCL, + NULL, + NULL, + (const bstring *)&be_const_str_set_power, + (const bstring *)&be_const_str_lv_area, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_lv_arc, + (const bstring *)&be_const_str_write_bytes, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_run_deferred, (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_TM1638CLK, + (const bstring *)&be_const_str_member, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str_content_send_style, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_arg_name, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_MP3_DFR562, NULL, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_call, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_KEY1_INV, NULL, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_public_key, - (const bstring *)&be_const_str_strftime, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_TM1638STB, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, - (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_lv_chart, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_srand, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str__begin_transmission, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_keys, (const bstring *)&be_const_str_GET, NULL, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_millis, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_try_rule, - NULL, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_DSB, - NULL, - (const bstring *)&be_const_str__timers, - NULL, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_load_font, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_add_header, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_cos, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_isinstance, - NULL, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_pi, - (const bstring *)&be_const_str_BOILER_OT_TX, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - NULL, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - NULL, - (const bstring *)&be_const_str_reset, - (const bstring *)&be_const_str_ROT1A_NP, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_PZEM016_RX, - NULL, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_lv_draw_mask_radius_param, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_IRRECV, - NULL, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_AS3935, - NULL, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_setmember, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_addr, - (const bstring *)&be_const_str_AZ_TXD, - NULL, - (const bstring *)&be_const_str_CHANGE, (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_KEY1_NP, - NULL, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str_CNTR1_NP, - NULL, - (const bstring *)&be_const_str_asin, - (const bstring *)&be_const_str_lv_slider, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_set_power, - (const bstring *)&be_const_str_DDS2382_TX, - NULL, - (const bstring *)&be_const_str_SYMBOL_WARNING, - NULL, - (const bstring *)&be_const_str_decrypt, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_HIGH, (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_push, - (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_lv_group, NULL, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_lv_msgbox, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_ADC_CT_POWER, NULL, (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_RXD + (const bstring *)&be_const_str_lv_cont, + NULL, + NULL, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + NULL, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_SYMBOL_SAVE, + NULL, + NULL, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_OLED_RESET, + NULL, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_lv_roller, + (const bstring *)&be_const_str_SYMBOL_CUT, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_TX2X_TXD_BLACK, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_int, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + NULL, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_OUTPUT_LO, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_get_size, + (const bstring *)&be_const_str_read, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_acos, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_ADE7953_IRQ, + NULL, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_chars_in_string, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_lv_point, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_codedump, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_DCKI, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_open, + (const bstring *)&be_const_str_AS3935, + NULL, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str__write, + NULL, + (const bstring *)&be_const_str_webclient, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_I2C_SDA, + NULL, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_start, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_allocated, + NULL, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_cosh, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_select, + (const bstring *)&be_const_str_lv_draw_line_dsc, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_log, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_TCP_RX, + NULL, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_TM1638CLK, + NULL, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_for, + NULL, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str__get_cb, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_SBR_RX, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_setrange, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_reset_search, + (const bstring *)&be_const_str_NRF24_DC, + NULL, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_resp_cmnd_str, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str__cb, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_lv_table, + (const bstring *)&be_const_str_SYMBOL_CALL, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_, + NULL, + (const bstring *)&be_const_str_exp, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_import, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_atan2, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_SYMBOL_WIFI, + NULL, + (const bstring *)&be_const_str_content_button, + (const bstring *)&be_const_str_MD5, + (const bstring *)&be_const_str_lv_keyboard, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_setmember, + (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_SWT1_PD, + NULL, + NULL, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_real, + (const bstring *)&be_const_str_TXD, + (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_copy, + NULL, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_lv_msgbox, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_DDS2382_RX, + NULL, + NULL, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_read32, + NULL, + (const bstring *)&be_const_str_digital_read, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_issubclass, + NULL, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_clear, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_DSB }; static const struct bconststrtab m_const_string_table = { - .size = 330, - .count = 660, + .size = 329, + .count = 659, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_introspect.h b/lib/libesp32/Berry/generate/be_fixed_introspect.h index 6e5705c9d..78b840ab6 100644 --- a/lib/libesp32/Berry/generate/be_fixed_introspect.h +++ b/lib/libesp32/Berry/generate/be_fixed_introspect.h @@ -2,14 +2,13 @@ static be_define_const_map_slots(m_libintrospect_map) { { be_const_key(members, -1), be_const_func(m_attrlist) }, - { be_const_key(vcall, -1), be_const_func(m_vcall) }, + { be_const_key(set, -1), be_const_func(m_setmember) }, { be_const_key(get, -1), be_const_func(m_findmember) }, - { be_const_key(set, 2), be_const_func(m_setmember) }, }; static be_define_const_map( m_libintrospect_map, - 4 + 3 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/generate/be_fixed_m_builtin.h b/lib/libesp32/Berry/generate/be_fixed_m_builtin.h index 423be6100..038f428f1 100644 --- a/lib/libesp32/Berry/generate/be_fixed_m_builtin.h +++ b/lib/libesp32/Berry/generate/be_fixed_m_builtin.h @@ -1,39 +1,41 @@ #include "be_constobj.h" static be_define_const_map_slots(m_builtin_map) { - { be_const_key(print, 19), be_const_int(15) }, - { be_const_key(isinstance, -1), be_const_int(8) }, - { be_const_key(classname, -1), be_const_int(3) }, - { be_const_key(module, -1), be_const_int(12) }, - { be_const_key(size, -1), be_const_int(18) }, - { be_const_key(type, 9), be_const_int(21) }, - { be_const_key(compile, -1), be_const_int(5) }, - { be_const_key(open, -1), be_const_int(14) }, - { be_const_key(real, -1), be_const_int(17) }, - { be_const_key(__iterator__, -1), be_const_int(0) }, - { be_const_key(super, -1), be_const_int(20) }, - { be_const_key(issubclass, -1), be_const_int(9) }, - { be_const_key(classof, -1), be_const_int(4) }, - { be_const_key(map, 8), be_const_int(11) }, - { be_const_key(int, 2), be_const_int(7) }, - { be_const_key(input, 3), be_const_int(6) }, - { be_const_key(number, -1), be_const_int(13) }, - { be_const_key(list, 7), be_const_int(10) }, - { be_const_key(str, 1), be_const_int(19) }, - { be_const_key(range, -1), be_const_int(16) }, - { be_const_key(bytes, -1), be_const_int(2) }, + { be_const_key(number, 16), be_const_int(14) }, + { be_const_key(map, -1), be_const_int(12) }, + { be_const_key(classname, 22), be_const_int(4) }, + { be_const_key(bytes, 2), be_const_int(2) }, + { be_const_key(int, 12), be_const_int(8) }, + { be_const_key(module, -1), be_const_int(13) }, + { be_const_key(print, 20), be_const_int(16) }, + { be_const_key(issubclass, -1), be_const_int(10) }, { be_const_key(assert, -1), be_const_int(1) }, + { be_const_key(list, -1), be_const_int(11) }, + { be_const_key(__iterator__, -1), be_const_int(0) }, + { be_const_key(real, -1), be_const_int(18) }, + { be_const_key(super, 21), be_const_int(21) }, + { be_const_key(isinstance, 8), be_const_int(9) }, + { be_const_key(classof, 4), be_const_int(5) }, + { be_const_key(input, -1), be_const_int(7) }, + { be_const_key(call, 19), be_const_int(3) }, + { be_const_key(compile, -1), be_const_int(6) }, + { be_const_key(open, -1), be_const_int(15) }, + { be_const_key(size, -1), be_const_int(19) }, + { be_const_key(range, -1), be_const_int(17) }, + { be_const_key(str, -1), be_const_int(20) }, + { be_const_key(type, -1), be_const_int(22) }, }; static be_define_const_map( m_builtin_map, - 22 + 23 ); static const bvalue __vlist_array[] = { be_const_func(l_iterator), be_const_func(l_assert), be_const_class(be_class_bytes), + be_const_func(l_call), be_const_func(l_classname), be_const_func(l_classof), be_const_func(l_compile), @@ -58,5 +60,5 @@ static const bvalue __vlist_array[] = { static be_define_const_vector( m_builtin_vector, __vlist_array, - 22 + 23 ); diff --git a/lib/libesp32/Berry/src/be_baselib.c b/lib/libesp32/Berry/src/be_baselib.c index 27a650827..ad8d39525 100644 --- a/lib/libesp32/Berry/src/be_baselib.c +++ b/lib/libesp32/Berry/src/be_baselib.c @@ -277,6 +277,55 @@ static int l_iterator(bvm *vm) be_return_nil(vm); } +/* call a function with variable number of arguments */ +/* first argument is a callable object (function, closure, native function, native closure) */ +/* then all subsequent arguments are pushed except the last one */ +/* If the last argument is a 'list', then all elements are pushed as arguments */ +/* otherwise the last argument is pushed as well */ +static int l_call(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1 && be_isfunction(vm, 1)) { + size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ + /* test if last argument is a list */ + + if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { + int32_t list_size = be_data_size(vm, top + 1); + + if (list_size > 0) { + be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ + for (int i = 0; i < list_size; i++) { + be_pushnil(vm); + } + be_moveto(vm, top + 1, top + 1 + list_size); + be_moveto(vm, top, top + list_size); + + be_refpush(vm, -2); + be_pushiter(vm, -1); + while (be_iter_hasnext(vm, -2)) { + be_iter_next(vm, -2); + be_moveto(vm, -1, top); + top++; + be_pop(vm, 1); + } + be_pop(vm, 1); /* remove iterator */ + be_refpop(vm); + } + be_pop(vm, 2); + arg_count = arg_count - 1 + list_size; + } + /* actual call */ + be_call(vm, arg_count); + /* remove args */ + be_pop(vm, arg_count); + /* return value */ + + be_return(vm); + } + be_raise(vm, "value_error", "first argument must be a function"); + be_return_nil(vm); +} + static int l_str(bvm *vm) { if (be_top(vm)) { @@ -406,6 +455,7 @@ void be_load_baselib(bvm *vm) be_regfunc(vm, "issubclass", l_issubclass); be_regfunc(vm, "isinstance", l_isinstance); be_regfunc(vm, "__iterator__", l_iterator); + be_regfunc(vm, "call", l_call); } #else extern const bclass be_class_list; @@ -432,6 +482,7 @@ vartab m_builtin (scope: local) { issubclass, func(l_issubclass) isinstance, func(l_isinstance) __iterator__, func(l_iterator) + call, func(l_call) open, func(be_nfunc_open) list, class(be_class_list) map, class(be_class_map) diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index 5254b9791..fc9dac898 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -76,62 +76,12 @@ static int m_setmember(bvm *vm) be_return_nil(vm); } -/* call a function with variable number of arguments */ -/* first argument is a callable object (function, closure, native function, native closure) */ -/* then all subsequent arguments are pushed except the last one */ -/* If the last argument is a 'list', then all elements are pushed as arguments */ -/* otherwise the last argument is pushed as well */ -static int m_vcall(bvm *vm) -{ - int top = be_top(vm); - if (top >= 1 && be_isfunction(vm, 1)) { - size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ - /* test if last argument is a list */ - - if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { - int32_t list_size = be_data_size(vm, top + 1); - - if (list_size > 0) { - be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ - for (int i = 0; i < list_size; i++) { - be_pushnil(vm); - } - be_moveto(vm, top + 1, top + 1 + list_size); - be_moveto(vm, top, top + list_size); - - be_refpush(vm, -2); - be_pushiter(vm, -1); - while (be_iter_hasnext(vm, -2)) { - be_iter_next(vm, -2); - be_moveto(vm, -1, top); - top++; - be_pop(vm, 1); - } - be_pop(vm, 1); /* remove iterator */ - be_refpop(vm); - } - be_pop(vm, 2); - arg_count = arg_count - 1 + list_size; - } - /* actual call */ - be_call(vm, arg_count); - /* remove args */ - be_pop(vm, arg_count); - /* return value */ - - be_return(vm); - } - be_raise(vm, "value_error", "first argument must be a function"); - be_return_nil(vm); -} - #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(introspect) { be_native_module_function("members", m_attrlist), be_native_module_function("get", m_findmember), be_native_module_function("set", m_setmember), - be_native_module_function("vcall", m_vcall), }; be_define_native_module(introspect, NULL); @@ -142,7 +92,6 @@ module introspect (scope: global, depend: BE_USE_INTROSPECT_MODULE) { get, func(m_findmember) set, func(m_setmember) - vcall, func(m_vcall) } @const_object_info_end */ #include "../generate/be_fixed_introspect.h" diff --git a/lib/libesp32/Berry/tests/call.be b/lib/libesp32/Berry/tests/call.be new file mode 100644 index 000000000..c0964d7d8 --- /dev/null +++ b/lib/libesp32/Berry/tests/call.be @@ -0,0 +1,102 @@ +#- -# +#- witness function dumping first 3 args -# +#- -# +def f(a,b,c) return [a,b,c] end + +#- simple calls with fixed args -# +assert(call(f) == [nil, nil, nil]) +assert(call(f, 1) == [1, nil, nil]) +assert(call(f, 1, 2) == [1, 2, nil]) +assert(call(f, 1, 2, 3, 4) == [1, 2, 3]) + +#- call with var args -# +assert(call(f, []) == [nil, nil, nil]) +assert(call(f, [1]) == [1, nil, nil]) +assert(call(f, [1, 2]) == [1, 2, nil]) +assert(call(f, [1, 2, 3, 4]) == [1, 2, 3]) + +#- mixed args -# +assert(call(f, 1, []) == [1, nil, nil]) +assert(call(f, 1, [2]) == [1, 2, nil]) +assert(call(f, 1, [2, "foo", 4]) == [1, 2, "foo"]) + +#- non terminal list -# +assert(call(f, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) + +#- -# +#- same tests with vararg function -# +#- -# +def g(a, *b) + if size(b) == 0 return [a, nil, nil] + elif size(b) == 1 return [a, b[0], nil] + elif size(b) > 1 return [a, b[0], b[1]] + end +end + +#- simple calls with fixed args -# +assert(call(g) == [nil, nil, nil]) +assert(call(g, 1) == [1, nil, nil]) +assert(call(g, 1, 2) == [1, 2, nil]) +assert(call(g, 1, 2, 3, 4) == [1, 2, 3]) + +#- call with var args -# +assert(call(g, []) == [nil, nil, nil]) +assert(call(g, [1]) == [1, nil, nil]) +assert(call(g, [1, 2]) == [1, 2, nil]) +assert(call(g, [1, 2, 3, 4]) == [1, 2, 3]) + +#- mixed args -# +assert(call(g, 1, []) == [1, nil, nil]) +assert(call(g, 1, [2]) == [1, 2, nil]) +assert(call(g, 1, [2, "foo", 4]) == [1, 2, "foo"]) + +#- non terminal list -# +assert(call(g, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) + +#- -# +#- test with vararg only -# +#- -# +def c(*a) return size(a) end + +#- simple calls with fixed args -# +assert(call(c) == 0) +assert(call(c, 1) == 1) +assert(call(c, 1, 2) == 2) +assert(call(c, 1, 2, 3, 4) == 4) + +#- call with var args -# +assert(call(c, []) == 0) +assert(call(c, [1]) == 1) +assert(call(c, [1, 2]) == 2) +assert(call(c, [1, 2, 3, 4]) == 4) + +#- mixed args -# +assert(call(c, 1, []) == 1) +assert(call(c, 1, [2]) == 2) +assert(call(c, 1, [2, "foo", 4]) == 4) + +#- non terminal list -# +assert(call(c, 1, [2, 3, 4], "foo") == 3) + +#- -# +#- test with native function -# +#- -# +import string + +assert(call(string.format, "a") == "a") +assert(call(string.format, "%i", 1) == "1") +assert(call(string.format, "%i - %i", 1, 2) == "1 - 2") + +assert(call(string.format, "%i - %i", [1, 2]) == "1 - 2") +assert(call(string.format, "%i - %i", [1, 2, 3]) == "1 - 2") + +assert(call(string.format, "%i - %i", 1, [1, 2, 3]) == "1 - 1") + +#- -# +#- try with an insanely high number of arguments to check that we don't blow up the stack -# +#- -# +l50 = [] +for i:1..50 l50.push(i) end + +assert(call(g, l50) == [1, 2, 3]) +assert(call(c, l50) == 50) diff --git a/lib/libesp32/Berry/tests/introspect_vcall.be b/lib/libesp32/Berry/tests/introspect_vcall.be deleted file mode 100644 index 0f54eb03c..000000000 --- a/lib/libesp32/Berry/tests/introspect_vcall.be +++ /dev/null @@ -1,96 +0,0 @@ -#- introspect vcall -# -import introspect - -#- -# -#- witness function dumping first 3 args -# -#- -# -def f(a,b,c) return [a,b,c] end - -#- simple calls with fixed args -# -assert(introspect.vcall(f) == [nil, nil, nil]) -assert(introspect.vcall(f, 1) == [1, nil, nil]) -assert(introspect.vcall(f, 1, 2) == [1, 2, nil]) -assert(introspect.vcall(f, 1, 2, 3, 4) == [1, 2, 3]) - -#- call with var args -# -assert(introspect.vcall(f, []) == [nil, nil, nil]) -assert(introspect.vcall(f, [1]) == [1, nil, nil]) -assert(introspect.vcall(f, [1, 2]) == [1, 2, nil]) -assert(introspect.vcall(f, [1, 2, 3, 4]) == [1, 2, 3]) - -#- mixed args -# -assert(introspect.vcall(f, 1, []) == [1, nil, nil]) -assert(introspect.vcall(f, 1, [2]) == [1, 2, nil]) -assert(introspect.vcall(f, 1, [2, "foo", 4]) == [1, 2, "foo"]) - -#- non terminal list -# -assert(introspect.vcall(f, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) - -#- -# -#- same tests with vararg function -# -#- -# -def g(a, *b) - if size(b) == 0 return [a, nil, nil] - elif size(b) == 1 return [a, b[0], nil] - elif size(b) > 1 return [a, b[0], b[1]] - end -end - -#- simple calls with fixed args -# -assert(introspect.vcall(g) == [nil, nil, nil]) -assert(introspect.vcall(g, 1) == [1, nil, nil]) -assert(introspect.vcall(g, 1, 2) == [1, 2, nil]) -assert(introspect.vcall(g, 1, 2, 3, 4) == [1, 2, 3]) - -#- call with var args -# -assert(introspect.vcall(g, []) == [nil, nil, nil]) -assert(introspect.vcall(g, [1]) == [1, nil, nil]) -assert(introspect.vcall(g, [1, 2]) == [1, 2, nil]) -assert(introspect.vcall(g, [1, 2, 3, 4]) == [1, 2, 3]) - -#- mixed args -# -assert(introspect.vcall(g, 1, []) == [1, nil, nil]) -assert(introspect.vcall(g, 1, [2]) == [1, 2, nil]) -assert(introspect.vcall(g, 1, [2, "foo", 4]) == [1, 2, "foo"]) - -#- non terminal list -# -assert(introspect.vcall(g, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) - -#- -# -#- test with vararg only -# -#- -# -def c(*a) return size(a) end - -#- simple calls with fixed args -# -assert(introspect.vcall(c) == 0) -assert(introspect.vcall(c, 1) == 1) -assert(introspect.vcall(c, 1, 2) == 2) -assert(introspect.vcall(c, 1, 2, 3, 4) == 4) - -#- call with var args -# -assert(introspect.vcall(c, []) == 0) -assert(introspect.vcall(c, [1]) == 1) -assert(introspect.vcall(c, [1, 2]) == 2) -assert(introspect.vcall(c, [1, 2, 3, 4]) == 4) - -#- mixed args -# -assert(introspect.vcall(c, 1, []) == 1) -assert(introspect.vcall(c, 1, [2]) == 2) -assert(introspect.vcall(c, 1, [2, "foo", 4]) == 4) - -#- non terminal list -# -assert(introspect.vcall(c, 1, [2, 3, 4], "foo") == 3) - -#- -# -#- test with native function -# -#- -# -import string - -assert(introspect.vcall(string.format, "a") == "a") -assert(introspect.vcall(string.format, "%i", 1) == "1") -assert(introspect.vcall(string.format, "%i - %i", 1, 2) == "1 - 2") - -assert(introspect.vcall(string.format, "%i - %i", [1, 2]) == "1 - 2") -assert(introspect.vcall(string.format, "%i - %i", [1, 2, 3]) == "1 - 2") - -assert(introspect.vcall(string.format, "%i - %i", 1, [1, 2, 3]) == "1 - 1") From acd611cfdcdff6d451c0ce44c67af38f23f513b4 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 10 Sep 2021 13:07:24 +0200 Subject: [PATCH 173/317] Platformio as source for core 2.0.0+tasmota --- platformio_tasmota_cenv_sample.ini | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index e48875231..58d541811 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -49,7 +49,7 @@ build_flags = ${env:tasmota32_base.build_flags} extends = env:tasmota32_base board = esp32s2 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.0/framework-arduinoespressif32-release_IDF4.4.tar.gz +platform_packages = tasmota/framework-arduinoespressif32 @ 2.0.0+tasmota platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -75,7 +75,7 @@ lib_ignore = extends = env:tasmota32_base board = esp32c3 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.0/framework-arduinoespressif32-release_IDF4.4.tar.gz +platform_packages = tasmota/framework-arduinoespressif32 @ 2.0.0+tasmota platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -106,7 +106,7 @@ lib_ignore = [env:tasmota32idf4] extends = env:tasmota32_base platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/2.0.0/framework-arduinoespressif32-release_IDF4.4.tar.gz +platform_packages = tasmota/framework-arduinoespressif32 @ 2.0.0+tasmota platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -119,8 +119,6 @@ build_flags = ${env:tasmota32_base.build_flags} ;-DUSE_BLE_ESP32 ;-DUSE_MI_ESP32 ;-DESP32_STAGE=true -extra_scripts = ${common.extra_scripts} - pre:pio-tools/cxx_flags.py lib_extra_dirs = lib/libesp32 lib/libesp32_div lib/libesp32_lvgl From e1111ca98e4c0443cc29c876e245cec59fc6fa54 Mon Sep 17 00:00:00 2001 From: Simon Hailes Date: Fri, 10 Sep 2021 13:56:24 +0100 Subject: [PATCH 174/317] Add driver xdrv_85_BLE_EQ3_TRV --- tasmota/xdrv_85_BLE_EQ3_TRV.ino | 1767 +++++++++++++++++++++++++++++++ 1 file changed, 1767 insertions(+) create mode 100644 tasmota/xdrv_85_BLE_EQ3_TRV.ino diff --git a/tasmota/xdrv_85_BLE_EQ3_TRV.ino b/tasmota/xdrv_85_BLE_EQ3_TRV.ino new file mode 100644 index 000000000..3427869ac --- /dev/null +++ b/tasmota/xdrv_85_BLE_EQ3_TRV.ino @@ -0,0 +1,1767 @@ +/* + xdrv_85_BLE_EQ3_TRV.ino - EQ3 radiator valve sense and control via BLE_ESP32 support for Tasmota + + Copyright (C) 2020 Simon Hailes + + 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 . + + -------------------------------------------------------------------------------------------- + Version yyyymmdd Action Description + -------------------------------------------------------------------------------------------- + 1.0.0.0 20210910 publish - renamed to xdrv_85, and checked with TAS latest dev branch + 0.0.0.0 20201213 created - initial version +*/ + + +/* + +Commands: +e.g. +trv 001A22092EE0 settemp 22.5 + +trvperiod n - set polling period in seconds (default teleperiod at boot) +trvonlyaliased *0/1 - only hear devices with BLEAlias set +trvMatchPrefix 0/*1 - if set, then it will add trvs to the seen list which have mac starting with : + macs in macprefixes, currently only 001a22 +Note: anything with BLEAlias starting "EQ3" will be added to the seen list. +trvHideFailedPoll 0/*1 - if set, then failed polls will not be sent to EQ3 +trvMinRSSI -n - the minimum RSSI value at which to attempt to poll + + +trv reset - clear device list +trv devlist - report seen devices. Active scanning required, not passive, as it looks for names +trv scan - same as devlist +trv state - report general state (see below for MQTT) +trv raw - send a raw command +trv on - set temp to 30 -> display ON on EQ3 +trv off - set temp to 4.5 -> display OFF on EQ3 +trv boost - set boost +trv unboost - turn off boost +trv lock - manual lock of physical buttons +trv unlock - manual unlock of physical buttons +trv auto - set EQ3 to auto mode +trv manual - set EQ3 to manual mode +trv mode auto|manual - set EQ3 to mode auto|manual? +trv day - set EQ3 to day temp +trv night - set EQ3 to night temp +trv settemp 20.5 - set EQ3 to temp +trv settime - set time to Tasmota time (untested) +trv settime - set time +trv offset 1.5 - set offset temp +trv setdaynight 22 17.5 - set day and night mode temps +trv setwindowtempdur 12.5 30 - set window open temp and duration in mins + +trv reqprofile <0-6> - request a profile for a day fo the week. +trv setprofile <0-6> 20.5-07:30,17-17:00,22.5-22:00,17-24:00 (up to 7 temp-HH:MM) - set a profile for a day fo the week. + +Responses: +normal: +stat/EQ3/001A22092C9A = { + "cmd":"state", + "result":"ok", + "RSSI":-83, + "stattime":1613814193, + "temp":21.0, + "posn":0, + "mode":"auto", + "boost":"inactive", + "dst":"set", + "window":"closed", + "state":"unlocked", + "battery":"GOOD" +} + +holiday: +as above, but adds ,"holidayend":"YY-MM-DD HH:MM" + +when trv reqprofile is used, adds: + "profiledayN":"20.5-07:30,17.0-17:00,22.5-22:00,17.0-24:00" +where N is the day (0-6) (0 = saturday?). + +when trv setprofile is used, adds: +"profiledayset":N +where N is the day (0-6) (0 = saturday?). + +on error: + "result":"fail", + +The driver will try a command three times before reporting + + +4 digit pin calculation: (just for info) +serialno = "REQ0123456" +pin = [] + +x = str((ord(serialno[3]) ^ ord(serialno[7])) % 10) +pin.append(x) +x = str((ord(serialno[4]) ^ ord(serialno[8])) % 10) +pin.append(x) +x = str((ord(serialno[5]) ^ ord(serialno[9])) % 10) +pin.append(x) +x = str((ord(serialno[0]) - ord('A') ^ ord(serialno[6]) - ord('0')) % 10) +pin.append(x) +print("".join(pin)) + +*/ + + + + +//#define VSCODE_DEV + +#ifdef VSCODE_DEV +#define ESP32 +#define USE_BLE_ESP32 +#define USE_EQ3_ESP32 +#endif + +// for testing of BLE_ESP32, we remove xsns_62_MI_ESP32.ino completely, and instead add this modified xsns_52_ibeacon_BLE_ESP32.ino +#if CONFIG_IDF_TARGET_ESP32 +#ifdef USE_EQ3_ESP32 +#ifdef ESP32 // ESP32 only. Use define USE_HM10 for ESP8266 support +#ifdef USE_BLE_ESP32 + +#define XDRV_85 85 +#define D_CMND_EQ3 "trv" + +// uncomment for more debug messages +//#define EQ3_DEBUG + +namespace EQ3_ESP32 { + +void CmndTrv(void); +void CmndTrvPeriod(void); +void CmndTrvOnlyAliased(void); +void CmndTrvMatchPrefix(void); +void CmndTrvMinRSSI(void); +void CmndTrvHideFailedPoll(void); + +const char kEQ3_Commands[] PROGMEM = D_CMND_EQ3"|" + "|" + "period|" + "onlyaliased|" + "MatchPrefix|" + "MinRSSI|" + "HideFailedPoll"; + +void (*const EQ3_Commands[])(void) PROGMEM = { + &CmndTrv, + &CmndTrvPeriod, + &CmndTrvOnlyAliased, + &CmndTrvMatchPrefix, + &CmndTrvMinRSSI, + &CmndTrvHideFailedPoll +}; + + +const char *cmdnames[] = { + "poll", + "raw", + "state", + "settime", + "settemp", + "offset", + "setdaynight", + "setwindowtempdur", + "setholiday", + "boost", + "unboost", + "unlock", + "auto", + "manual", + "eco", + "on", + "off", + "valve", + "mode", + "day", + "night", + "reqprofile", + "setprofile" +}; + +const uint8_t *macprefixes[1] = { + (uint8_t *)"\x00\x1a\x22" +}; + +int EQ3GenericOpCompleteFn(BLE_ESP32::generic_sensor_t *pStruct); + +const char EQ3_Svc[] PROGMEM = "3e135142-654f-9090-134a-a6ff5bb77046"; +const char EQ3_rw_Char[] PROGMEM = "3fa4585a-ce4a-3bad-db4b-b8df8179ea09"; +const char EQ3_notify_Char[] PROGMEM = "d0e8434d-cd29-0996-af41-6c90f4e0eb2a"; + +struct eq3_device_tag{ + uint8_t addr[7]; + int8_t RSSI; + uint64_t timeoutTime; + uint8_t pairing; + uint8_t lastStatus[10]; // last received 02 stat + uint8_t lastStatusLen; + uint32_t lastStatusTime; // in utc + uint8_t nextDiscoveryData; +} eq3_device_t; + +/*********************************************************************************************\ + * variables to control operation +\*********************************************************************************************/ +int retries = 0; +// allow 240s before timeout of sa device - based on that we restart BLE if we don't see adverts for 120s +#define EQ3_TIMEOUT 240L + +uint8_t pairingaddr[7] = {0,0,0,0,0,0}; +char pairingserial[20]; +uint8_t pairing = 0; + +#define EQ3_NUM_DEVICESLOTS 16 +eq3_device_tag EQ3Devices[EQ3_NUM_DEVICESLOTS]; +void *EQ3mutex = nullptr; + +int EQ3Period = 300; +uint8_t EQ3OnlyAliased = 0; +uint8_t EQ3MatchPrefix = 1; +uint8_t opInProgress = 0; +int seconds = 20; +int EQ3CurrentSingleSlot = 0; + +uint8_t EQ3TopicStyle = 1; +uint8_t EQ3HideFailedPoll = 1; +int8_t trvMinRSSI = -99; + +// control of timing of sending polling. +// we leave an interval between polls to allow scans to take place +int intervalSeconds = 10; // min seconds between operations +int intervalSecondsCounter = 0; // set when an operation is over to intervalSeconds +int nextEQ3Poll = EQ3_NUM_DEVICESLOTS; // set to zero to start a poll cycle + +#pragma pack( push, 1 ) // aligned structures for size +struct op_t { + uint8_t addr[7]; + uint8_t towrite[16]; + uint8_t writelen; + uint8_t cmdtype; +}; +#pragma pack(pop) + +std::deque opQueue; + + +/*********************************************************************************************\ + * Functions +\*********************************************************************************************/ + +const char *addrStr(const uint8_t *addr, int useAlias = 0){ + static char addrstr[32]; + + const char *id = nullptr; + if (useAlias){ + id = BLE_ESP32::getAlias(addr); + } + if (!id || !(*id)){ + id = addrstr; + BLE_ESP32::dump(addrstr, 13, addr, 6); + } else { + } + + return id; +} + +char *topicPrefix(int prefix, const uint8_t *addr, int useAlias){ + static char stopic[TOPSZ]; + const char *id = addrStr(addr, useAlias); + if (!EQ3TopicStyle){ + GetTopic_P(stopic, prefix, TasmotaGlobal.mqtt_topic, PSTR("")); + strcat(stopic, PSTR("EQ3/")); + strcat(stopic, id); + } else { + char p[] = "EQ3"; + GetTopic_P(stopic, prefix, p, id); + } + return stopic; +} + + + +// return 0+ if we find the addr has one of our listed prefixes +// return -1 if we don't recognise the mac +int matchPrefix(const uint8_t *addr){ + for (int i = 0; i < sizeof(macprefixes)/sizeof(*macprefixes); i++){ + if (!memcmp(addr, macprefixes[i], 3)){ + return i; + } + } + return -1; +} + + +bool EQ3Operation(const uint8_t *MAC, const uint8_t *data, int datalen, int cmdtype, int retries_in = 0) { + BLE_ESP32::generic_sensor_t *op = nullptr; + + // ALWAYS use this function to create a new one. + int res = BLE_ESP32::newOperation(&op); + if (!res){ + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 %s:Can't get a newOperation from BLE"), addrStr(MAC, cmdtype & 0x80)); + retries = 0; + return 0; + } else { +#ifdef EQ3_DEBUG + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 %s:got a newOperation from BLE"), addrStr(MAC, cmdtype & 0x80)); +#endif + } + + NimBLEAddress addr((uint8_t *)MAC); + op->addr = addr; + + bool havechar = false; + op->serviceUUID = NimBLEUUID(EQ3_Svc); + op->characteristicUUID = NimBLEUUID(EQ3_rw_Char); + op->notificationCharacteristicUUID = NimBLEUUID(EQ3_notify_Char); + + if (data && datalen) { + op->writelen = datalen; + memcpy(op->dataToWrite, data, datalen); + } else { + op->writelen = 1; + op->dataToWrite[0] = 0x03; // just request status + } + + // this op will call us back on complete or failure. + op->completecallback = (void *)EQ3GenericOpCompleteFn; + // store this away for later + op->context = (void *)cmdtype; + + res = BLE_ESP32::extQueueOperation(&op); + if (!res){ + // if it fails to add to the queue, do please delete it + BLE_ESP32::freeOperation(&op); + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 %s:Failed to queue new operation - deleted"), addrStr(MAC, cmdtype & 0x80)); + retries = 0; + } else { + if (retries_in){ + retries = retries_in; + } + } + + return res; +} + +int EQ3DoOp(){ + if (!opInProgress){ + if (opQueue.size()){ + op_t* op = opQueue[0]; + if (EQ3Operation(op->addr, op->towrite, op->writelen, op->cmdtype, 4)){ + opQueue.pop_front(); + opInProgress = 1; + AddLog(LOG_LEVEL_DEBUG, PSTR("EQ3 %s:Op dequeued len now %d"), addrStr(op->addr, (op->cmdtype & 0x80)), opQueue.size()); + delete op; + return 1; + } else { + AddLog(LOG_LEVEL_ERROR, PSTR("EQ3 %s:Op BLE could not start op queue len %d"), addrStr(op->addr, (op->cmdtype & 0x80)), opQueue.size()); + } + } + } + return 0; +} + +int EQ3QueueOp(const uint8_t *MAC, const uint8_t *data, int datalen, int cmdtype, int useAlias) { + op_t* newop = new op_t; + memcpy(newop->addr, MAC, 6); + memcpy(newop->towrite, data, datalen); + newop->writelen = datalen; + newop->cmdtype = cmdtype | (useAlias?0x80:0); + opQueue.push_back(newop); + int qlen = opQueue.size(); + AddLog(LOG_LEVEL_DEBUG, PSTR("EQ3 %s: Op queued len now %d"), addrStr(newop->addr, (newop->cmdtype & 0x80)), qlen); + EQ3DoOp(); + return qlen; +} + +int EQ3ParseOp(BLE_ESP32::generic_sensor_t *op, bool success, int retries){ + int res = 0; + opInProgress = 0; + ResponseClear(); + + uint8_t addrev[7]; + const uint8_t *native = op->addr.getNative(); + memcpy(addrev, native, 6); + BLE_ESP32::ReverseMAC(addrev); + + eq3_device_tag *eq3 = nullptr; + + int free = -1; + for (int i = 0; i < EQ3_NUM_DEVICESLOTS; i++){ + if (!memcmp(EQ3Devices[i].addr, addrev, 6)){ + eq3 = &EQ3Devices[i]; + break; + } + } + + int cmdtype = (((uint32_t)op->context) & 0xff); + const char *cmdType = PSTR("invalid"); + int useAlias = cmdtype & 0x80; + cmdtype &= 0x7f; + if ((cmdtype >= 0) && (cmdtype < sizeof(cmdnames)/sizeof(*cmdnames))){ + cmdType = cmdnames[cmdtype]; + } + + ResponseAppend_P(PSTR("{")); + ResponseAppend_P(PSTR("\"cmd\":\"%s\""), cmdType); + ResponseAppend_P(PSTR(",\"result\":\"%s\""), success? "ok":"fail"); + ResponseAppend_P(PSTR(",\"MAC\":\"%s\""), addrStr(addrev)); + const char *host = NetworkHostname(); + ResponseAppend_P(PSTR(",\"tas\":\"%s\""), host); + if (cmdtype == 1){ + char raw[40]; + BLE_ESP32::dump(raw, 40, op->dataNotify, op->notifylen); + ResponseAppend_P(PSTR(",\"raw\":\"%s\""), raw); + } + + uint8_t *status = {0}; + uint8_t statlen = 0; + uint32_t stattime = 0; + + if (success){ + if ((op->notifylen >= 6) && (op->dataNotify[0] == 2) && (op->dataNotify[1] == 1)){ + if (eq3){ + memcpy(eq3->lastStatus, op->dataNotify, (op->notifylen <= 10)?op->notifylen:10); + eq3->lastStatusLen = (op->notifylen <= 10)?op->notifylen:10; + eq3->lastStatusTime = UtcTime(); + } + } + + status = op->dataNotify; + statlen = op->notifylen; + stattime = UtcTime(); + } + + if (eq3){ + status = eq3->lastStatus; + statlen = eq3->lastStatusLen; + stattime = eq3->lastStatusTime; + ResponseAppend_P(PSTR(",\"RSSI\":%d"), eq3->RSSI); + } + + if ((statlen >= 6) && (status[0] == 2) && (status[1] == 1)){ + ResponseAppend_P(PSTR(",\"stattime\":%u"), stattime); + ResponseAppend_P(PSTR(",\"temp\":%2.1f"), ((float)status[5])/2); + ResponseAppend_P(PSTR(",\"posn\":%d"), status[3]); + int stat = status[2]; + ResponseAppend_P(PSTR(",\"mode\":")); + switch (stat & 3){ + case 0: + ResponseAppend_P(PSTR("\"auto\"")); + break; + case 1: + ResponseAppend_P(PSTR("\"manual\"")); + break; + case 2: + ResponseAppend_P(PSTR("\"holiday\"")); + break; + case 3: + ResponseAppend_P(PSTR("\"manualholiday\"")); + break; + } + + ResponseAppend_P(PSTR(",\"hassmode\":")); + do { + //0201283B042A + // its in auto + if ((stat & 3) == 0) { ResponseAppend_P(PSTR("\"auto\"")); break; } + // it's set to 'OFF' + if (((stat & 3) == 1) && (status[5] == 9)) { ResponseAppend_P(PSTR("\"off\"")); break; } + // it's actively heating (valve open) + if (((stat & 3) == 1) && (status[5] > 9) && (status[3] > 0)) { ResponseAppend_P(PSTR("\"heat\"")); break; } + // it's achieved temp (valve closed) + if (((stat & 3) == 1) && (status[5] > 9)) { ResponseAppend_P(PSTR("\"idle\"")); break; } + ResponseAppend_P(PSTR("\"idle\"")); + break; + } while (0); + + ResponseAppend_P(PSTR(",\"boost\":\"%s\""), (stat & 4)?"active":"inactive"); + ResponseAppend_P(PSTR(",\"dst\":\"%s\""), (stat & 8)?"set":"unset"); + ResponseAppend_P(PSTR(",\"window\":\"%s\""), (stat & 16)?"open":"closed"); + ResponseAppend_P(PSTR(",\"state\":\"%s\""), (stat & 32)?"locked":"unlocked"); + ResponseAppend_P(PSTR(",\"battery\":\"%s\""), (stat & 128)?"LOW":"GOOD"); + } + + if ((statlen >= 10) && (status[0] == 2) && (status[1] == 1)){ + int mm = status[8] * 30; + int hh = mm/60; + mm = mm % 60; + ResponseAppend_P(PSTR(",\"holidayend\":\"%02d-%02d-%02d %02d:%02d\""), + status[7], + status[9], + status[6], + hh, mm + ); + } + + if (success) { + // now to parse other data - this may not have been a stat message + if ((op->notifylen >= 3) && (op->dataNotify[0] == 2) && (op->dataNotify[1] == 2)){ + ResponseAppend_P(PSTR(",\"profiledayset\":%d"), op->dataNotify[2]); + } + + if ((op->notifylen >= 16) && (op->dataNotify[0] == 0x21)){ +//YY is the time, coded as (minutes/10), up to which to maintain the temperature declared in XX +//XX represents the temperature to be maintained until then, codified as (temperature*2) +// byte 0: 21 (default value) +// byte 1: 02 (Monday = 0x02) +// byte (2,3): 22 24 (17°C up to 06:00) +// byte (4,5): 2A 36 (21°C up to 09:00) +// byte (6,7): 22 66 (17°C up to 17:00) +// byte (8,9): 2A 8A (21°C up to 23:00) +// byte (10,11): 22 90 (17°C up to 24:00) +// byte (12,13): 22 90 (unused) +// byte (14,15): 22 90 (unused) + ResponseAppend_P(PSTR(",\"profileday%d\":\""), op->dataNotify[1]); + uint8_t *data = op->dataNotify + 2; + for (int i = 0; i < 7; i++){ + float t = *(data++); + t /= 2; + int mm = *(data++); + mm *= 10; + int hh = mm / 60; + mm = mm % 60; + ResponseAppend_P(PSTR("%2.1f-%02d:%02d"), t, hh, mm); + // stop if the last one is 24. + if (hh == 24){ + break; + } + + if (i < 6){ + ResponseAppend_P(PSTR(",")); + } + } + ResponseAppend_P(PSTR("\"")); + } + + res = 1; + } + + ResponseAppend_P(PSTR("}")); + + int type = STAT; + if (cmdtype){ + type = STAT; + } else { + // it IS a poll command + if (EQ3HideFailedPoll){ + if (!success){ + AddLog(LOG_LEVEL_DEBUG, PSTR("EQ3 %s poll fail not sent because EQ3HideFailedPoll"), addrStr(addrev)); + return res; + } + } + } + + char *topic = topicPrefix(type, addrev, useAlias); + MqttPublish(topic, false); + return res; +} + +int EQ3GenericOpCompleteFn(BLE_ESP32::generic_sensor_t *op){ + uint32_t context = (uint32_t) op->context; + opInProgress = 0; + + if (op->state <= GEN_STATE_FAILED){ + uint8_t addrev[7]; + const uint8_t *native = op->addr.getNative(); + memcpy(addrev, native, 6); + BLE_ESP32::ReverseMAC(addrev); + + if (retries > 1){ + retries--; + + if (EQ3Operation(addrev, op->dataToWrite, op->writelen, (int)op->context)){ + //EQ3ParseOp(op, false, retries); + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 %s: trv operation failed - retrying %d"), addrStr(addrev), op->state); + opInProgress = 1; + } else { + retries = 0; + EQ3ParseOp(op, false, 0); + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 %s: trv operation failed to send op %d"), addrStr(addrev), op->state); + } + } else { + retries = 0; + EQ3ParseOp(op, false, 0); + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 %s: trv operation failed - no more retries %d"), addrStr(addrev), op->state); + } + return 0; + } + + retries = 0; + + EQ3ParseOp(op, true, 0); + return 0; +} + + + +/*********************************************************************************************\ + * Functons actualy called from within the BLE task +\*********************************************************************************************/ + +int ispairing2(const uint8_t *payload, int len, char *name, int namelen, char *serial, int seriallen ){ + while (len){ + int l = *payload; + //BLE_ESP32::dump(temp, 40, payload, l+1); + //AddLog(LOG_LEVEL_ERROR,PSTR("EQ3: %s"), temp); + + payload++; + len--; + if (len < l){ + //AddLog(LOG_LEVEL_ERROR,PSTR("EQ3: part len er %d<%d"),len, l); + return 0; + } + switch (*payload){ + case 0xff: {// parse the EQ3 advert payload looking for nnFF01ssssssss + payload++; + len--; + l--; + if (*payload == 1){ + payload++; + len--; + l--; + //char serialstr[20]; + //strncpy(serialstr, (const char *)payload, l); + //AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3: adv part FF01 detected %s"), serialstr); + // we don;t use these, but that's what they seem to be.... + uint8_t copylen = (l > seriallen)?seriallen:l; + strncpy(serial, (const char *)payload, copylen); + serial[seriallen-1] = 0; + payload += l; + len -= l; + return 1; + } else { + payload += l; + len -= l; + } + } break; + case 0x09: { + payload++; + len--; + l--; + if (*payload == 1){ + payload++; + len--; + l--; + //char serialstr[20]; + //strncpy(serialstr, (const char *)payload, l); + //AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3: adv part FF01 detected %s"), serialstr); + // we don;t use these, but that's what they seem to be.... + uint8_t copylen = (l > namelen)?namelen:l; + strncpy(name, (const char *)payload, copylen); + name[namelen-1] = 0; + payload += l; + len -= l; + //return 1; + } else { + payload += l; + len -= l; + } + } break; + default:{ + payload += l; + len -= l; + } break; + } + } + return 0; +} + +int ispairing(const uint8_t *payload, int len){ + //char temp[40]; + //BLE_ESP32::dump(temp, 40, payload, len); + //AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3: pair%d %s"), len, temp); + while (len){ + int l = *payload; + //BLE_ESP32::dump(temp, 40, payload, l+1); + //AddLog(LOG_LEVEL_ERROR,PSTR("EQ3: %s"), temp); + + payload++; + len--; + if (len < l){ + //AddLog(LOG_LEVEL_ERROR,PSTR("EQ3: part len er %d<%d"),len, l); + return 0; + } + if (*payload == 0xff){ + payload++; + len--; + l--; + if (*payload == 1){ + payload++; + len--; + l--; + //char serialstr[20]; + //strncpy(serialstr, (const char *)payload, l); + //AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3: adv part FF01 detected %s"), serialstr); + // we don;t use these, but that's what they seem to be.... + const uint8_t *serial = payload; + uint8_t seriallen = l; + payload += l; + len -= l; + return 1; + } else { + payload += l; + len -= l; + } + } else { + payload += l; + len -= l; + } + } + return 0; +} + +int TaskEQ3AddDevice(int8_t RSSI, const uint8_t* addr, char *serial){ + int free = -1; + int i = 0; + uint64_t now = esp_timer_get_time(); + + if (serial && serial[0] && !pairing){ + memcpy(pairingaddr, addr, 6); + strncpy(pairingserial, serial, sizeof(pairingserial)); + pairingserial[sizeof(pairingserial)-1] = 0; + pairing = 1; + } + + for(i = 0; i < EQ3_NUM_DEVICESLOTS; i++){ + if(memcmp(addr,EQ3Devices[i].addr,6)==0){ + break; + } + if (EQ3Devices[i].timeoutTime && (EQ3Devices[i].timeoutTime < now)) { +#ifdef EQ3_DEBUG + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 %s timeout at %d"), addrStr(EQ3Devices[i].addr), i); +#endif + EQ3Devices[i].timeoutTime = 0L; + } + if (!EQ3Devices[i].timeoutTime){ + if (free == -1){ + free = i; + } + } + } + + if (i == EQ3_NUM_DEVICESLOTS){ + if (free >= 0){ + i = free; + } else { + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 lost %s: > %d devices"), addrStr(addr), EQ3_NUM_DEVICESLOTS); + return 0; + } + } + +#ifdef EQ3_DEBUG + if (!EQ3Devices[i].timeoutTime) + AddLog(LOG_LEVEL_INFO,PSTR("EQ3 %s: added at %d"), addrStr(addr), i); +#endif + + EQ3Devices[i].timeoutTime = now + (1000L*1000L)*EQ3_TIMEOUT; + memcpy(EQ3Devices[i].addr, addr, 6); + EQ3Devices[i].RSSI = RSSI; + + EQ3Devices[i].pairing = (serial && serial[0])?1:0; + + return 1; +} + + +const char *EQ3Names[] = { + "CC-RT-BLE", + "CC-RT-BLE-EQ", + "CC-RT-M-BLE" +}; + +int TaskEQ3advertismentCallback(BLE_ESP32::ble_advertisment_t *pStruct) +{ + // we will try not to use this... + BLEAdvertisedDevice *advertisedDevice = pStruct->advertisedDevice; + + std::string sname = advertisedDevice->getName(); + + bool found = false; + const char *nameStr = sname.c_str(); + int8_t RSSI = pStruct->RSSI; + const uint8_t *addr = pStruct->addr; + + + const char *alias = BLE_ESP32::getAlias(addr); + if (EQ3OnlyAliased){ + // ignore unless we have an alias. + if (!alias || !(*alias)){ + return 0; + } + } + if (!alias) alias = ""; + + for (int i = 0; i < sizeof(EQ3Names)/sizeof(*EQ3Names); i++){ + if (!strcmp(nameStr, EQ3Names[i])){ + found = true; + break; + } + } + + if (!found && !strncmp(alias, "EQ3", 3)){ + found = true; + } + + // if the addr matches the EQ2 mfg prefix, add it? + if (!found && EQ3MatchPrefix && (matchPrefix(addr) >= 0)){ + found = true; + } + + if (!found) return 0; + +#ifdef EQ3_DEBUG + if (BLE_ESP32::BLEDebugMode > 0) AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3Device: saw %s"),advertisedDevice->getAddress().toString().c_str()); +#endif + + uint8_t* payload = advertisedDevice->getPayload(); + size_t payloadlen = advertisedDevice->getPayloadLength(); + + char name[20] = {0}; + char serial[20] = {0}; + int pairing = 0; + ispairing2(payload, payloadlen, name, 20, serial, 20); + + // this will take and keep the mutex until the function is over + TasAutoMutex localmutex(&EQ3mutex); + TaskEQ3AddDevice(RSSI, addr, serial); + return 0; +} + + + + +/*********************************************************************************************\ + * Helper functions +\*********************************************************************************************/ + + + +/*********************************************************************************************\ + * init +\*********************************************************************************************/ +void EQ3Init(void) { + memset(&EQ3Devices, 0, sizeof(EQ3Devices)); + BLE_ESP32::registerForAdvertismentCallbacks((const char *)"EQ3", TaskEQ3advertismentCallback); +#ifdef EQ3_DEBUG + AddLog(LOG_LEVEL_INFO,PSTR("EQ3: init: request callbacks")); +#endif + + EQ3Period = Settings->tele_period; + + return; +} + +/***********************************************************************\ + * Regular +\***********************************************************************/ + +void EQ3Every50mSecond(){ + +} + +/** + * @brief Main loop of the driver, "high level"-loop + * + */ +int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int useAlias); + +void EQ3EverySecond(bool restart){ + if (pairing){ + char p[40]; // used in dump + BLE_ESP32::dump(p, 20, pairingaddr, 6); + Response_P(PSTR("{\"pairing\":\"%s\",\"serial\":\"%s\"}"), p, pairingserial); + char addrstr[4+8*2+2] = "EQ3/"; + BLE_ESP32::dump(&addrstr[4], 8*2+2, pairingaddr, 6); + char *topic = topicPrefix(STAT, pairingaddr, 1); + MqttPublish(topic, false); + pairing = 0; + } + + seconds --; + if (seconds <= 0){ + if (EQ3Period){ + if (nextEQ3Poll >= EQ3_NUM_DEVICESLOTS){ + AddLog(LOG_LEVEL_DEBUG, PSTR("EQ3 poll cycle starting")); + nextEQ3Poll = 0; + } else { + AddLog(LOG_LEVEL_ERROR, PSTR("EQ3 poll overrun, deferred - last loop only got to %d, not %d"), nextEQ3Poll, EQ3_NUM_DEVICESLOTS); + } + } + seconds = EQ3Period; + } + + if (EQ3Period){ + int qlen = opQueue.size(); + if ((nextEQ3Poll < EQ3_NUM_DEVICESLOTS) && (qlen == 0) && (!opInProgress)){ + if (intervalSecondsCounter){ + intervalSecondsCounter--; + } else { + // queue a EQ3Status op against each known EQ3. + // mark it as a regular stat rather than a use cmd. + for(int i = nextEQ3Poll; i < EQ3_NUM_DEVICESLOTS; i++){ + if (!EQ3Devices[i].timeoutTime){ + nextEQ3Poll = i+1; + continue; + } + + // trvMinRSSI + // find the device in BLE to get RSSI + if (EQ3Devices[i].RSSI < trvMinRSSI){ + AddLog(LOG_LEVEL_DEBUG, PSTR("EQ3 %s RSSI %d < min %d, poll suppressed"), addrStr(EQ3Devices[i].addr), EQ3Devices[i].RSSI, trvMinRSSI); + nextEQ3Poll = i+1; + continue; + } + + EQ3Send(EQ3Devices[i].addr, PSTR("poll"), nullptr, nullptr, 1); + nextEQ3Poll = i+1; + intervalSecondsCounter = intervalSeconds; + break; + } + } + } + } + + // start next op now, if we have any queued + EQ3DoOp(); + +} + + +/*********************************************************************************************\ + * Presentation +\*********************************************************************************************/ +int EQ3SendCurrentDevices(){ + // send the active devices + ResponseClear(); + ResponseAppend_P(PSTR("{\"devices\":{")); + int added = 0; + for(int i = 0; i < EQ3_NUM_DEVICESLOTS; i++){ + char p[40]; + if (!EQ3Devices[i].timeoutTime) + continue; + if (added){ + ResponseAppend_P(PSTR(",")); + } + BLE_ESP32::dump(p, 20, EQ3Devices[i].addr, 6); + ResponseAppend_P(PSTR("\"%s\":%d"), p, EQ3Devices[i].RSSI); + added = 1; + } + ResponseAppend_P(PSTR("}}")); + MqttPublishPrefixTopic_P(STAT, PSTR("EQ3"), false); + return 0; +} + +int EQ3SendResult(char *requested, const char *result){ + // send the result + Response_P(PSTR("{\"result\":\"%s\"}"), result); + static char stopic[TOPSZ]; + GetTopic_P(stopic, STAT, TasmotaGlobal.mqtt_topic, PSTR("")); + strcat(stopic, PSTR("EQ3/")); + strcat(stopic, requested); + MqttPublish(stopic, false); + return 0; +} + + +/*********************************************************************************************\ + * Commands +\*********************************************************************************************/ + +void simpletolower(char *p){ + if (!p) return; + while (*p){ + *p = *p | 0x20; + p++; + } +} + +// +// great description here: +// https://reverse-engineering-ble-devices.readthedocs.io/en/latest/protocol_description/00_protocol_description.html +// not all implemented yet. +// +int EQ3Send(const uint8_t* addr, const char *cmd, char* param, char* param2, int useAlias){ + + char p[] = ""; + if (!param) param = p; + if (!param2) param2 = p; + uint8_t d[20]; + memset(d, 0, sizeof(d)); + int dlen = 0; +#ifdef EQ3_DEBUG + AddLog(LOG_LEVEL_INFO,PSTR("EQ3 %s: cmd: [%s] [%s] [%s]"), addrStr(addr), cmd, param, param2); +#endif + +/* done on whole string before here. + simpletolower(cmd); + simpletolower(param); + simpletolower(param2); +*/ + + int cmdtype = 0; + + do { + if (!strcmp(cmd, "raw")){ + cmdtype = 1; + if (!param || param[0] == 0){ + return -1; + } + int len = strlen(param) / 2; + if (len > 20){ + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 raw len of %s = %d > 20"), param, len); + return -1; + } + BLE_ESP32::fromHex(d, param, len); + dlen = len; + break; + } + +/* if (!strcmp(cmd, "state")){ + d[0] = 0x03; + dlen = 1; + break; + } +*/ + if (!strcmp(cmd, "settime") || !strcmp(cmd, "state") || !strcmp(cmd, "poll")){ + if (!strcmp(cmd, "poll")){ + cmdtype = 0; + } + if (!strcmp(cmd, "state")){ + cmdtype = 2; + } + if (!strcmp(cmd, "settime")){ + cmdtype = 3; + } + if (!param || param[0] == 0){ + + if (RtcTime.valid) { + d[0] = 0x03; + d[1] = (RtcTime.year % 100); + d[2] = RtcTime.month; + d[3] = RtcTime.day_of_month; + d[4] = RtcTime.hour; + d[5] = RtcTime.minute; + d[6] = RtcTime.second; + } else { + return -1; + } + + // time_t now = 0; + // struct tm timeinfo = { 0 }; + // time(&now); + // localtime_r(&now, &timeinfo); + // d[0] = 0x03; + // d[1] = timeinfo.tm_year % 100; + // d[2] = timeinfo.tm_mon + 1; + // d[3] = timeinfo.tm_mday; + // d[4] = timeinfo.tm_hour; + // d[5] = timeinfo.tm_min; + // d[6] = timeinfo.tm_sec; + + } else { + d[0] = 0x03; + BLE_ESP32::fromHex(d+1, param, 6); + } + dlen = 7; + break; + } + + if (!strcmp(cmd, "settemp")){ + cmdtype = 4; + if (!param || param[0] == 0){ + return -1; + } + float ftemp = 20; + sscanf(param, "%f", &ftemp); + if (ftemp < 4.5) ftemp = 4.5; + if (ftemp > 30) ftemp = 30; + ftemp *= 2; + uint8_t ctemp = (uint8_t) ftemp; + d[0] = 0x41; d[1] = ctemp; dlen = 2; + break; + } + + if (!strcmp(cmd, "offset")){ + cmdtype = 5; + if (!param || param[0] == 0){ + return 0; + } + float ftemp = 20; + sscanf(param, "%f", &ftemp); + ftemp *= 2; + int8_t ctemp = (int8_t) ftemp; + ctemp += 7; + d[0] = 0x13; d[1] = ctemp; dlen = 2; + break; + } + + if (!strcmp(cmd, "setdaynight")){ + cmdtype = 6; + if (!param || param[0] == 0){ + return -1; + } + if (!param2 || param2[0] == 0){ + return -1; + } + float ftemp = 15; + sscanf(param, "%f", &ftemp); + if (ftemp < 5) ftemp = 5; + ftemp *= 2; + uint8_t dtemp = (uint8_t) ftemp; + + ftemp = 20; + sscanf(param2, "%f", &ftemp); + if (ftemp < 5) ftemp = 5; + ftemp *= 2; + uint8_t ntemp = (uint8_t) ftemp; + + d[0] = 0x11; d[1] = dtemp; d[2] = ntemp; dlen = 3; + break; + } + + if (!strcmp(cmd, "setwindowtempdur")){ + cmdtype = 7; + if (!param || param[0] == 0){ + return -1; + } + if (!param2 || param2[0] == 0){ + return -1; + } + float ftemp = 15; + sscanf(param, "%f", &ftemp); + if (ftemp < 5) ftemp = 5; + ftemp *= 2; + uint8_t temp = (uint8_t) ftemp; + + int dur = 0; + sscanf(param2, "%d", &dur); + d[0] = 0x14; d[1] = temp; d[2] = (dur/5); dlen = 3; + break; + } + + if (!strcmp(cmd, "setholiday")){ + cmdtype = 8; + //40941C152402 + // 40 94 + if (!param || param[0] == 0){ + return -1; + } + if (!param2 || param2[0] == 0){ + return -1; + } + + int yy = 0; + int mm = 0; + int dd = 0; + int hour = 0; + int min = 0; + char *p = param; + p = strtok(p, "-"); + if (!p || p[0] == 0) return -1; + sscanf(p, "%d", &yy); + p = strtok(nullptr, "-"); + if (!p || p[0] == 0) return -1; + sscanf(p, "%d", &mm); + p = strtok(nullptr, ","); + if (!p || p[0] == 0) return -1; + sscanf(p, "%d", &dd); + p = strtok(nullptr, ":"); + if (!p || p[0] == 0) return -1; + sscanf(p, "%d", &hour); + p = strtok(nullptr, ""); + if (!p || p[0] == 0) return -1; + sscanf(p, "%d", &min); + + min += hour*60; + int tt = min / 30; + + float ftemp = 15; + sscanf(param2, "%f", &ftemp); + if (ftemp < 5) ftemp = 5; + ftemp *= 2; + uint8_t temp = (uint8_t) ftemp + 128; + + d[0] = 0x40; + d[1] = temp; + d[2] = dd; + d[3] = yy; + d[4] = tt; + d[5] = mm; + dlen = 6; + break; + } + + + if (!strcmp(cmd, "boost")) { + cmdtype = 9; + d[0] = 0x45; d[1] = 0x01; + if (param && (!strcmp(param, "off") || param[0] == '0')){ + d[1] = 0x00; + } + dlen = 2; break; + } + if (!strcmp(cmd, "unboost")) { + cmdtype = 10; + d[0] = 0x45; d[1] = 0x00; dlen = 2; break; } + if (!strcmp(cmd, "lock")) { d[0] = 0x80; d[1] = 0x01; + if (param && (!strcmp(param, "off") || param[0] == '0')){ + d[1] = 0x00; + } + dlen = 2; break; + } + if (!strcmp(cmd, "unlock")) { cmdtype = 11; d[0] = 0x80; d[1] = 0x00; dlen = 2; break; } + if (!strcmp(cmd, "auto")) { cmdtype = 12; d[0] = 0x40; d[1] = 0x00; dlen = 2; break; } + if (!strcmp(cmd, "manual")) { cmdtype = 13; d[0] = 0x40; d[1] = 0x40; dlen = 2; break; } + // this is basically 'cancel holiday' - mode auto does that. + //if (!strcmp(cmd, "eco")) { cmdtype = 14; d[0] = 0x40; d[1] = 0x80; dlen = 2; break; } + if (!strcmp(cmd, "on")) { + int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias); + char tmp[] = "30"; + int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias); + return res2; + } + if (!strcmp(cmd, "off")) { + int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias); + char tmp[] = "4.5"; + int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias); + return res2; + } + if (!strcmp(cmd, "valve")) { cmdtype = 17; d[0] = 0x41; d[1] = 0x3c; + if (!param || param[0] == 0){ + return -1; + } + if ((!strcmp(param, "off") || param[0] == '0')){ + d[1] = 0x09; + } + dlen = 2; break; + } + if (!strcmp(cmd, "mode")) { cmdtype = 18; d[0] = 0x40; d[1] = 0xff;// invlaid + + if (!param || param[0] == 0){ + return -1; + } + if (!strcmp(param, "auto")){ + d[1] = 0x00; + } + if (!strcmp(param, "manual")){ + d[1] = 0x40; + } + if (!strcmp(param, "on") || !strcmp(param, "heat")) { + int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias); + char tmp[] = "30"; + int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias); + return res2; + } + if (!strcmp(param, "off") || !strcmp(param, "cool")) { + int res = EQ3Send(addr, "manual", nullptr, nullptr, useAlias); + char tmp[] = "4.5"; + int res2 = EQ3Send(addr, "settemp", tmp, nullptr, useAlias); + return res2; + } + + if (d[1] == 0xff){ // no valid mode selection found + return -1; + } + // this is basically 'cancel holiday' - mode auto does that. + //if (!strcmp(param, "eco")){ + // d[1] = 0x80; + //} + dlen = 2; break; + } + if (!strcmp(cmd, "day")) { cmdtype = 19; d[0] = 0x43; dlen = 1; break; } + if (!strcmp(cmd, "night")) { cmdtype = 20; d[0] = 0x44; dlen = 1; break; } + + if (!strcmp(cmd, "reqprofile")) { cmdtype = 21; + if (!param || param[0] == 0){ + return -1; + } + d[0] = 0x20; d[1] = atoi(param); dlen = 2; + break; + } + + if (!strcmp(cmd, "setprofile")) { cmdtype = 22; + if (!param || param[0] == 0){ + return -1; + } + if (!param2 || param2[0] == 0){ + return -1; + } + d[0] = 0x10; d[1] = atoi(param); + + // default + uint8_t temps[7] = {0x22,0x22,0x22,0x22,0x22,0x22,0x22}; + uint8_t times[7] = {0x90,0x90,0x90,0x90,0x90,0x90,0x90}; + + // 20.5-17:30, + const char *p = strtok(param2, ","); + int i = 0; + while (p){ + float t = 17; + int mm = 0; + int hh = 24; + sscanf(p, "%f-%d:%d", &t, &hh, &mm); + t *= 2; + temps[i] = (uint8_t) t; + int time = hh*60+mm; + time = time / 10; + times[i] = time; + p = strtok(nullptr, ","); + i++; + if (i >= 7) break; + } + + // remaining left at 00 00 + for (int j = 0; j < 7; j++){ + d[2+j*2] = temps[j]; + d[2+j*2+1] = times[j]; + } + + dlen = 2+14; + break; + } + + break; + } while(0); + + if (dlen){ + dlen = 16; + return EQ3QueueOp(addr, d, dlen, cmdtype, useAlias); + + //return EQ3Operation(addr, d, dlen, 4); + } + + return -1; +} + + +const char *responses[] = { + PSTR("Done"), + PSTR("queued"), + PSTR("ignoredbusy"), + PSTR("invcmd"), + PSTR("cmdfail"), + PSTR("invidx"), + PSTR("invaddr") +}; + + +int CmndTrvNext(int index, char *data){ + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 cmd index: %d"), index); + //simpletolower(data); + + switch(index){ + case 0: + case 1: { + + char *p = strtok(data, " "); + bool trigger = false; + if (!strcmp(p, "reset")){ + retries = 0; + for (int i = 0; i < EQ3_NUM_DEVICESLOTS; i++){ + EQ3Devices[i].timeoutTime = 0L; + } + return 0; + } + + if (!strcmp(p, "scan")){ +#ifdef EQ3_DEBUG + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 cmd: %s"), p); +#endif + EQ3SendCurrentDevices(); + return 0; + } + if (!strcmp(p, "devlist")){ +#ifdef EQ3_DEBUG + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 cmd: %s"), p); +#endif + EQ3SendCurrentDevices(); + return 0; + } + + // only allow one command in progress + if (retries){ + //return 2; + } + + + int useAlias = 0; + uint8_t addrbin[7]; + int addrres = BLE_ESP32::getAddr(addrbin, p); + if (addrres){ + if (addrres == 2){ + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 addr used alias: %s"), p); + useAlias = 1; + } + NimBLEAddress addr(addrbin, addrbin[6]); + +#ifdef EQ3_DEBUG + //AddLog(LOG_LEVEL_INFO,PSTR("EQ3 cmd addr: %s -> %s"), p, addr.toString().c_str()); +#endif + } else { + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 addr invalid: %s"), p); + return 3; + } + + // get next part of cmd + char *cmd = strtok(nullptr, " "); + if (!cmd){ + return 3; + } + + char *param = strtok(nullptr, " "); + char *param2 = nullptr; + if (param){ + param2 = strtok(nullptr, " "); + } + int res = EQ3Send(addrbin, cmd, param, param2, useAlias); + if (res > 0) { + // succeeded to queue + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 queued")); + return 1; + } + + if (res < 0) { // invalid in some way + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 invalid")); + return 3; + } + + AddLog(LOG_LEVEL_ERROR,PSTR("EQ3 failed to queue")); + // failed to queue + return 4; + } break; + + case 2: + retries = 0; + return 0; + break; + } + + return 4; +} + +void CmndTrv(void) { + int res = CmndTrvNext(XdrvMailbox.index, XdrvMailbox.data); + ResponseCmndChar(responses[res]); +} + +void CmndTrvPeriod(void) { + if (XdrvMailbox.data_len > 0) { + if (1 == XdrvMailbox.payload){ + seconds = 0; + } else { + EQ3Period = XdrvMailbox.payload; + if (seconds > EQ3Period){ + seconds = EQ3Period; + } + } + } + ResponseCmndNumber(EQ3Period); +} + +void CmndTrvOnlyAliased(void){ + if (XdrvMailbox.data_len > 0) { + EQ3OnlyAliased = XdrvMailbox.payload; + } + ResponseCmndNumber(EQ3OnlyAliased); +} + +void CmndTrvMatchPrefix(void){ + if (XdrvMailbox.data_len > 0) { + EQ3MatchPrefix = XdrvMailbox.payload; + } + ResponseCmndNumber(EQ3MatchPrefix); +} + +void CmndTrvMinRSSI(void){ + if (XdrvMailbox.data_len > 0) { + trvMinRSSI = atoi(XdrvMailbox.data); + } + // signed number + Response_P(PSTR("{\"%s\":%d}"), XdrvMailbox.command, trvMinRSSI); +} + +void CmndTrvHideFailedPoll(void){ + if (XdrvMailbox.data_len > 0) { + EQ3HideFailedPoll = XdrvMailbox.payload; + } + ResponseCmndNumber(EQ3HideFailedPoll); +} + + +#define EQ3_TOPIC "EQ3" +static char tmp[120]; + +bool mqtt_direct(){ + char stopic[TOPSZ]; + strncpy(stopic, XdrvMailbox.topic, TOPSZ); + XdrvMailbox.topic[TOPSZ-1] = 0; + + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3 mqtt: %s:%s"), stopic, XdrvMailbox.data); + + char *items[10]; + char *p = stopic; + int cnt = 0; + do { + items[cnt] = strtok(p, "/"); + cnt++; + p = nullptr; + } while (items[cnt-1]); + cnt--; // repreents the number of items + + if (cnt < 4){ // not for us? + //AddLog(LOG_LEVEL_INFO,PSTR("cnt: %d < 4"), cnt); + return false; + } + + for (int i = 0; i < cnt; i++){ + //AddLog(LOG_LEVEL_INFO,PSTR("cnt %d:%s"), i, items[i]); + } + + + int EQ3index = 0; + int MACindex = 0; + int CMDindex = 0; + if (strcasecmp_P(items[cnt-3], PSTR(EQ3_TOPIC)) != 0) { + //AddLog(LOG_LEVEL_INFO,PSTR("cnt-3 not %s"), PSTR(EQ3_TOPIC)); + if (strcasecmp_P(items[cnt-2], PSTR(EQ3_TOPIC)) != 0) { + //AddLog(LOG_LEVEL_INFO,PSTR("cnt-2 not %s"), PSTR(EQ3_TOPIC)); + return false; // not for us + } else { + EQ3index = cnt-2; + MACindex = cnt-1; + } + } else { + EQ3index = cnt-3; + MACindex = cnt-2; + CMDindex = cnt-1; + } + + int remains = 120; + memset(tmp, 0, sizeof(tmp)); + p = tmp; + uint8_t addr[7]; + int useAlias = BLE_ESP32::getAddr(addr, items[MACindex]); + int res = 6; // invalid address/alias + + // if address or alias valid + if (useAlias){ + strncpy(p, items[MACindex], remains-6); + p += strlen(p); + *(p++) = 0x20; + remains = 120 - (p-tmp); + + if (CMDindex){ + strncpy(p, items[CMDindex], remains-6); + p += strlen(p); + *(p++) = 0x20; + remains = 120 - (p-tmp); + } + + strncpy(p, XdrvMailbox.data, remains-6); + p += strlen(p); + *(p++) = 0x20; + remains = 120 - (p-tmp); + *(p++) = 0; + + AddLog(LOG_LEVEL_DEBUG,PSTR("EQ3:mqtt->cmdstr %s"), tmp); + res = CmndTrvNext(1, tmp); + } + + // post result to stat/tas/EQ3/ {"result":""} + EQ3SendResult(items[MACindex], responses[res]); + + return true; +} + + +/////////////////////////////////////////////// +// starts a completely fresh MQTT message. +// sends ONE sensor's worth of HA discovery msg +const char EQ3_HA_DISCOVERY_TEMPLATE[] PROGMEM = + "{\"availability\":[],\"device\":" + "{\"identifiers\":[\"BLE%s\"]," + "\"name\":\"%s\"," + "\"manufacturer\":\"tas\"," + "\"model\":\"%s\"," + "\"via_device\":\"%s\"" + "}," + "\"dev_cla\":\"%s\"," + "\"expire_after\":600," + "\"json_attr_t\":\"%s\"," + "\"name\":\"%s_%s\"," + "\"state_topic\":\"%s\"," + "\"uniq_id\":\"%s_%s\"," + "\"unit_of_meas\":\"%s\"," + "\"val_tpl\":\"{{ value_json.%s }}\"}"; + +///////////TODO - unfinished..... +void EQ3DiscoveryOneEQ3(){ + // don't detect half-added ones here + if (EQ3CurrentSingleSlot >= EQ3_NUM_DEVICESLOTS){ + // if we got to the end of the sensors, then don't send more + return; + } + +#ifdef USE_HOME_ASSISTANT + if(Settings->flag.hass_discovery){ + eq3_device_tag *p; + do { + p = &EQ3Devices[EQ3CurrentSingleSlot]; + if (0 == p->timeoutTime){ + EQ3CurrentSingleSlot++; + } + } while ((0 == p->timeoutTime) && (EQ3CurrentSingleSlot <= EQ3_NUM_DEVICESLOTS)); + + if (EQ3CurrentSingleSlot >= EQ3_NUM_DEVICESLOTS){ + return; + } + + // careful - a missing comma causes a crash!!!! + // because of the way we loop? + const char *classes[] = { + "temperature", + "temp", + "°C", + "signal_strength", + "RSSI", + "dB" + }; + + int datacount = (sizeof(classes)/sizeof(*classes))/3; + + if (p->nextDiscoveryData >= datacount){ + p->nextDiscoveryData = 0; + } + + char DiscoveryTopic[80]; + const char *host = NetworkHostname(); + const char *devtype = PSTR("EQ3"); + char idstr[32]; + const char *alias = BLE_ESP32::getAlias(p->addr); + const char *id = idstr; + if (alias && *alias){ + id = alias; + } else { + sprintf(idstr, PSTR("%s%02x%02x%02x"), + devtype, + p->addr[3], p->addr[4], p->addr[5]); + } + + char SensorTopic[60]; + sprintf(SensorTopic, "stat/%s/EQ3/%s", + host, id); + + //int i = p->nextDiscoveryData*3; + for (int i = 0; i < datacount*3; i += 3){ + if (!classes[i] || !classes[i+1] || !classes[i+2]){ + return; + } + + ResponseClear(); + + /* + {"availability":[],"device":{"identifiers":["TasmotaBLEa4c1387fc1e1"],"manufacturer":"simon","model":"someBLEsensor","name":"TASBLEa4c1387fc1e1","sw_version":"0.0.0"},"dev_cla":"temperature","json_attr_t":"stat/tasmota_esp32/SENSOR","name":"TASLYWSD037fc1e1Temp","state_topic":"tele/tasmota_esp32/SENSOR","uniq_id":"Tasmotaa4c1387fc1e1temp","unit_of_meas":"°C","val_tpl":"{{ value_json.LYWSD037fc1e1.Temperature }}"} + {"availability":[],"device":{"identifiers":["TasmotaBLEa4c1387fc1e1"], + "name":"TASBLEa4c1387fc1e1"},"dev_cla":"temperature", + "json_attr_t":"tele/tasmota_esp32/SENSOR", + "name":"TASLYWSD037fc1e1Temp","state_topic": "tele/tasmota_esp32/SENSOR", + "uniq_id":"Tasmotaa4c1387fc1e1temp","unit_of_meas":"°C", + "val_tpl":"{{ value_json.LYWSD037fc1e1.Temperature }}"} + */ + + ResponseAppend_P(EQ3_HA_DISCOVERY_TEMPLATE, + //"{\"identifiers\":[\"BLE%s\"]," + id, + //"\"name\":\"%s\"}," + id, + //\"model\":\"%s\", + devtype, + //\"via_device\":\"%s\" + host, + //"\"dev_cla\":\"%s\"," + classes[i], + //"\"json_attr_t\":\"%s\"," - the topic the sensor publishes on + SensorTopic, + //"\"name\":\"%s_%s\"," - the name of this DATA + id, classes[i+1], + //"\"state_topic\":\"%s\"," - the topic the sensor publishes on? + SensorTopic, + //"\"uniq_id\":\"%s_%s\"," - unique for this data, + id, classes[i+1], + //"\"unit_of_meas\":\"%s\"," - the measure of this type of data + classes[i+2], + //"\"val_tpl\":\"{{ value_json.%s }}") // e.g. Temperature + classes[i+1] + // + ); + + sprintf(DiscoveryTopic, "homeassistant/sensor/%s/%s/config", + id, classes[i+1]); + + MqttPublish(DiscoveryTopic); + p->nextDiscoveryData++; + //vTaskDelay(100/ portTICK_PERIOD_MS); + } + } // end if hass discovery + //AddLog_P(LOG_LEVEL_DEBUG,PSTR("M32: %s: show some %d %s"),D_CMND_MI32, MI32.mqttCurrentSlot, TasmotaGlobal.mqtt_data); +#endif //USE_HOME_ASSISTANT + +} + + + + +} // end namespace EQ3_ESP32 + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xdrv85(uint8_t function) +{ + bool result = false; + + switch (function) { + case FUNC_INIT: + EQ3_ESP32::EQ3Init(); + break; + case FUNC_EVERY_50_MSECOND: + EQ3_ESP32::EQ3Every50mSecond(); + break; + case FUNC_EVERY_SECOND: + EQ3_ESP32::EQ3EverySecond(false); + break; + case FUNC_COMMAND: + result = DecodeCommand(EQ3_ESP32::kEQ3_Commands, EQ3_ESP32::EQ3_Commands); + break; + case FUNC_MQTT_DATA: + //AddLog(LOG_LEVEL_INFO,PSTR("topic %s"), XdrvMailbox.topic); + result = EQ3_ESP32::mqtt_direct(); + break; + case FUNC_JSON_APPEND: + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + break; +#endif // USE_WEBSERVER + } + return result; +} +#endif // +#endif // ESP32 + +#endif +#endif // CONFIG_IDF_TARGET_ESP32 From ffca8591a4cb482fcc26be3e1a60b7cfc9be9a99 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 10 Sep 2021 19:41:40 +0200 Subject: [PATCH 175/317] Fix GLITCH_RTC_RST for esp32-c3 revision 3 used for example in board "LilyGo-T-OI-PLUS" --- platformio_tasmota_cenv_sample.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 58d541811..627f646b5 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -75,7 +75,7 @@ lib_ignore = extends = env:tasmota32_base board = esp32c3 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = tasmota/framework-arduinoespressif32 @ 2.0.0+tasmota +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/427/framework-arduinoespressif32-master-583026f04.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable From 751234e05de46b4b7e46262b2cf4c866af1a10e9 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sat, 11 Sep 2021 11:27:30 +0200 Subject: [PATCH 176/317] Revert "Berry move introspect.vcall to call" --- lib/libesp32/Berry/generate/be_const_strtab.h | 1349 +++++------ .../Berry/generate/be_const_strtab_def.h | 1988 +++++++++-------- .../Berry/generate/be_fixed_introspect.h | 5 +- .../Berry/generate/be_fixed_m_builtin.h | 48 +- lib/libesp32/Berry/src/be_baselib.c | 51 - lib/libesp32/Berry/src/be_introspectlib.c | 51 + lib/libesp32/Berry/tests/call.be | 102 - lib/libesp32/Berry/tests/introspect_vcall.be | 96 + 8 files changed, 1843 insertions(+), 1847 deletions(-) delete mode 100644 lib/libesp32/Berry/tests/call.be create mode 100644 lib/libesp32/Berry/tests/introspect_vcall.be diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 6f54e22e3..26bebb7f8 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,681 +1,682 @@ -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_EPAPER42_CS; extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_VL53L0X_XSHUT1; extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_toupper; extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lower; extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_lv_style; extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_vcall; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_lv_switch; extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_ILI9488_CS; extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_lv_spinbox; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 9c1087041..91c1697fc 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1019 +1,1021 @@ -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_DDSU666_TX); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_EC_C25519); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DHT11_OUT); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SDM120_TX); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_MHZ_TXD); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2S_IN_SLCT); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_KEY1_TC); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_do); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_do); be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_CSE7766_TX); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_VL53L0X_XSHUT1); be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_FALLING); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_BACKLIGHT); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_MAX7219DIN); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_MAX31855DO); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_ADC_RANGE); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_INTERRUPT); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_P9813_DAT); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_I2S_IN_DATA); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_KEY1_INV_PD); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, NULL); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_false); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SHELLY_DIMMER_BOOT0); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_tostring); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_tostring); be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_set_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_HM10_TX); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_vcall); +be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_ADE7953_IRQ); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_set_light); be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_ARIRFRCV); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_IRRECV); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_super); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_ADC_RANGE); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DSB_OUT); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_super); be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_continue); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_NONE); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_continue); be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_POST); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_ETH_PHY_MDIO); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_HJL_CF); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_AS608_TX); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_MGC3130_RESET); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_AudioFileSource); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2C_SCL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_ADC_TEMP); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OPTION_A); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_HALLEFFECT); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, NULL); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_BL0940_RX); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_INPUT_PULLDOWN); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_stop, - (const bstring *)&be_const_str_gamma10, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_lv_draw_mask_angle_param, - (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_resp_cmnd_failed, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_dot_def, NULL, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_SYMBOL_LEFT, - NULL, - (const bstring *)&be_const_str_pin_mode, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str___upper__, - NULL, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_LMT01, - NULL, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_EPAPER29_CS, - NULL, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_I2C_SCL, - NULL, - NULL, - (const bstring *)&be_const_str_set_power, - (const bstring *)&be_const_str_lv_area, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_lv_arc, - (const bstring *)&be_const_str_write_bytes, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_run_deferred, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_member, - (const bstring *)&be_const_str_load, - (const bstring *)&be_const_str_content_send_style, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_arg_name, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_MP3_DFR562, - NULL, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_call, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_KEY1_INV, - NULL, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_srand, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str__begin_transmission, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_keys, - (const bstring *)&be_const_str_GET, - NULL, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_lv_group, - NULL, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_ADC_CT_POWER, - NULL, - (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_lv_cont, - NULL, - NULL, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - NULL, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_SYMBOL_SAVE, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_OLED_RESET, - NULL, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_lv_roller, - (const bstring *)&be_const_str_SYMBOL_CUT, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_TX2X_TXD_BLACK, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_int, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - NULL, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_OUTPUT_LO, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_SYMBOL_EJECT, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_get_size, - (const bstring *)&be_const_str_read, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_acos, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_ADE7953_IRQ, - NULL, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_chars_in_string, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_lv_point, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_codedump, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_DCKI, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_open, - (const bstring *)&be_const_str_AS3935, - NULL, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str__write, - NULL, - (const bstring *)&be_const_str_webclient, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_I2C_SDA, - NULL, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_SYMBOL_PAUSE, + (const bstring *)&be_const_str_RC522_RST, (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_asin, - (const bstring *)&be_const_str_start, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_i2c_enabled, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_PULLDOWN, NULL, - (const bstring *)&be_const_str_WEBCAM_SIOC, - (const bstring *)&be_const_str_SYMBOL_CLOSE, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_select, - (const bstring *)&be_const_str_lv_draw_line_dsc, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_TCP_RX, - NULL, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_TM1638CLK, - NULL, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_for, - NULL, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str__get_cb, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_SBR_RX, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_setrange, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_SYMBOL_PREV, - (const bstring *)&be_const_str_reset_search, - (const bstring *)&be_const_str_NRF24_DC, - NULL, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_resp_cmnd_str, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str__cb, (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_lv_table, - (const bstring *)&be_const_str_SYMBOL_CALL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_, - NULL, - (const bstring *)&be_const_str_exp, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_import, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_atan2, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_SYMBOL_WIFI, - NULL, - (const bstring *)&be_const_str_content_button, - (const bstring *)&be_const_str_MD5, - (const bstring *)&be_const_str_lv_keyboard, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - NULL, - (const bstring *)&be_const_str_setmember, - (const bstring *)&be_const_str_WS2812, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_SWT1_PD, - NULL, - NULL, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_real, - (const bstring *)&be_const_str_TXD, - (const bstring *)&be_const_str_SYMBOL_PLAY, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_copy, - NULL, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_lv_msgbox, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_atan, - (const bstring *)&be_const_str_DDS2382_RX, - NULL, NULL, (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_read32, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_search, + (const bstring *)&be_const_str_copy, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_false, + (const bstring *)&be_const_str_dot_p, NULL, - (const bstring *)&be_const_str_digital_read, - (const bstring *)&be_const_str__end_transmission, - (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_arg, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, + (const bstring *)&be_const_str_get_light, + (const bstring *)&be_const_str_upper, + (const bstring *)&be_const_str_GPS_TX, + NULL, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_lv_font, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_ZIGBEE_RX, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_attrdump, + NULL, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_SSPI_MOSI, + (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_SYMBOL_GPS, + NULL, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_ctypes_bytes, + (const bstring *)&be_const_str_ADC_PH, + NULL, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SYMBOL_FILE, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_lv_tabview, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_SYMBOL_LOOP, + NULL, + NULL, + (const bstring *)&be_const_str_EPAPER42_CS, + NULL, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_LEDLNK_INV, + NULL, + (const bstring *)&be_const_str_SYMBOL_MUTE, + NULL, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_DHT22, + NULL, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_ADC_INPUT, (const bstring *)&be_const_str_issubclass, NULL, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_list, + (const bstring *)&be_const_str_BS814_CLK, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_close, + (const bstring *)&be_const_str_deinit, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_lv_sqrt_res, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_MHZ_RXD, + NULL, + (const bstring *)&be_const_str_WE517_RX, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_setrange, + (const bstring *)&be_const_str_atan2, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_lv_group_focus_cb, + (const bstring *)&be_const_str_static, + NULL, + (const bstring *)&be_const_str_remove, + (const bstring *)&be_const_str_bytes, + (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_opt_connect, + NULL, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_TXD, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_ARIRFSEL, + NULL, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_var, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_opt_neq, + NULL, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_ARIRFRCV, + NULL, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_MAX31855CLK, + NULL, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + NULL, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_BACKLIGHT, + NULL, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_iter, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_MHZ_TXD, (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_cb_dispatch, + (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_OLED_RESET, + NULL, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_CSE7761_TX, + NULL, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_TM1638CLK, + NULL, + NULL, (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_DSB + (const bstring *)&be_const_str_public_key, + (const bstring *)&be_const_str_strftime, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_TM1638STB, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, + (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_GET, + NULL, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_millis, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_try_rule, + NULL, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_DSB, + NULL, + (const bstring *)&be_const_str__timers, + NULL, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_load_font, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_add_header, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_cos, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_isinstance, + NULL, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_pi, + (const bstring *)&be_const_str_BOILER_OT_TX, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + NULL, + (const bstring *)&be_const_str_reset, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_PZEM016_RX, + NULL, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_lv_draw_mask_radius_param, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_IRRECV, + NULL, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_AS3935, + NULL, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_setmember, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_AZ_TXD, + NULL, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_SYMBOL_VIDEO, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_KEY1_NP, + NULL, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_SYMBOL_REFRESH, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_SYMBOL_POWER, + (const bstring *)&be_const_str_CNTR1_NP, + NULL, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_lv_slider, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_set_power, + (const bstring *)&be_const_str_DDS2382_TX, + NULL, + (const bstring *)&be_const_str_SYMBOL_WARNING, + NULL, + (const bstring *)&be_const_str_decrypt, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_byte, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_FTC532, + NULL, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_lv_msgbox, + NULL, + (const bstring *)&be_const_str_check_privileged_access, + (const bstring *)&be_const_str_RXD }; static const struct bconststrtab m_const_string_table = { - .size = 329, - .count = 659, + .size = 330, + .count = 660, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_introspect.h b/lib/libesp32/Berry/generate/be_fixed_introspect.h index 78b840ab6..6e5705c9d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_introspect.h +++ b/lib/libesp32/Berry/generate/be_fixed_introspect.h @@ -2,13 +2,14 @@ static be_define_const_map_slots(m_libintrospect_map) { { be_const_key(members, -1), be_const_func(m_attrlist) }, - { be_const_key(set, -1), be_const_func(m_setmember) }, + { be_const_key(vcall, -1), be_const_func(m_vcall) }, { be_const_key(get, -1), be_const_func(m_findmember) }, + { be_const_key(set, 2), be_const_func(m_setmember) }, }; static be_define_const_map( m_libintrospect_map, - 3 + 4 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/generate/be_fixed_m_builtin.h b/lib/libesp32/Berry/generate/be_fixed_m_builtin.h index 038f428f1..423be6100 100644 --- a/lib/libesp32/Berry/generate/be_fixed_m_builtin.h +++ b/lib/libesp32/Berry/generate/be_fixed_m_builtin.h @@ -1,41 +1,39 @@ #include "be_constobj.h" static be_define_const_map_slots(m_builtin_map) { - { be_const_key(number, 16), be_const_int(14) }, - { be_const_key(map, -1), be_const_int(12) }, - { be_const_key(classname, 22), be_const_int(4) }, - { be_const_key(bytes, 2), be_const_int(2) }, - { be_const_key(int, 12), be_const_int(8) }, - { be_const_key(module, -1), be_const_int(13) }, - { be_const_key(print, 20), be_const_int(16) }, - { be_const_key(issubclass, -1), be_const_int(10) }, - { be_const_key(assert, -1), be_const_int(1) }, - { be_const_key(list, -1), be_const_int(11) }, + { be_const_key(print, 19), be_const_int(15) }, + { be_const_key(isinstance, -1), be_const_int(8) }, + { be_const_key(classname, -1), be_const_int(3) }, + { be_const_key(module, -1), be_const_int(12) }, + { be_const_key(size, -1), be_const_int(18) }, + { be_const_key(type, 9), be_const_int(21) }, + { be_const_key(compile, -1), be_const_int(5) }, + { be_const_key(open, -1), be_const_int(14) }, + { be_const_key(real, -1), be_const_int(17) }, { be_const_key(__iterator__, -1), be_const_int(0) }, - { be_const_key(real, -1), be_const_int(18) }, - { be_const_key(super, 21), be_const_int(21) }, - { be_const_key(isinstance, 8), be_const_int(9) }, - { be_const_key(classof, 4), be_const_int(5) }, - { be_const_key(input, -1), be_const_int(7) }, - { be_const_key(call, 19), be_const_int(3) }, - { be_const_key(compile, -1), be_const_int(6) }, - { be_const_key(open, -1), be_const_int(15) }, - { be_const_key(size, -1), be_const_int(19) }, - { be_const_key(range, -1), be_const_int(17) }, - { be_const_key(str, -1), be_const_int(20) }, - { be_const_key(type, -1), be_const_int(22) }, + { be_const_key(super, -1), be_const_int(20) }, + { be_const_key(issubclass, -1), be_const_int(9) }, + { be_const_key(classof, -1), be_const_int(4) }, + { be_const_key(map, 8), be_const_int(11) }, + { be_const_key(int, 2), be_const_int(7) }, + { be_const_key(input, 3), be_const_int(6) }, + { be_const_key(number, -1), be_const_int(13) }, + { be_const_key(list, 7), be_const_int(10) }, + { be_const_key(str, 1), be_const_int(19) }, + { be_const_key(range, -1), be_const_int(16) }, + { be_const_key(bytes, -1), be_const_int(2) }, + { be_const_key(assert, -1), be_const_int(1) }, }; static be_define_const_map( m_builtin_map, - 23 + 22 ); static const bvalue __vlist_array[] = { be_const_func(l_iterator), be_const_func(l_assert), be_const_class(be_class_bytes), - be_const_func(l_call), be_const_func(l_classname), be_const_func(l_classof), be_const_func(l_compile), @@ -60,5 +58,5 @@ static const bvalue __vlist_array[] = { static be_define_const_vector( m_builtin_vector, __vlist_array, - 23 + 22 ); diff --git a/lib/libesp32/Berry/src/be_baselib.c b/lib/libesp32/Berry/src/be_baselib.c index ad8d39525..27a650827 100644 --- a/lib/libesp32/Berry/src/be_baselib.c +++ b/lib/libesp32/Berry/src/be_baselib.c @@ -277,55 +277,6 @@ static int l_iterator(bvm *vm) be_return_nil(vm); } -/* call a function with variable number of arguments */ -/* first argument is a callable object (function, closure, native function, native closure) */ -/* then all subsequent arguments are pushed except the last one */ -/* If the last argument is a 'list', then all elements are pushed as arguments */ -/* otherwise the last argument is pushed as well */ -static int l_call(bvm *vm) -{ - int top = be_top(vm); - if (top >= 1 && be_isfunction(vm, 1)) { - size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ - /* test if last argument is a list */ - - if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { - int32_t list_size = be_data_size(vm, top + 1); - - if (list_size > 0) { - be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ - for (int i = 0; i < list_size; i++) { - be_pushnil(vm); - } - be_moveto(vm, top + 1, top + 1 + list_size); - be_moveto(vm, top, top + list_size); - - be_refpush(vm, -2); - be_pushiter(vm, -1); - while (be_iter_hasnext(vm, -2)) { - be_iter_next(vm, -2); - be_moveto(vm, -1, top); - top++; - be_pop(vm, 1); - } - be_pop(vm, 1); /* remove iterator */ - be_refpop(vm); - } - be_pop(vm, 2); - arg_count = arg_count - 1 + list_size; - } - /* actual call */ - be_call(vm, arg_count); - /* remove args */ - be_pop(vm, arg_count); - /* return value */ - - be_return(vm); - } - be_raise(vm, "value_error", "first argument must be a function"); - be_return_nil(vm); -} - static int l_str(bvm *vm) { if (be_top(vm)) { @@ -455,7 +406,6 @@ void be_load_baselib(bvm *vm) be_regfunc(vm, "issubclass", l_issubclass); be_regfunc(vm, "isinstance", l_isinstance); be_regfunc(vm, "__iterator__", l_iterator); - be_regfunc(vm, "call", l_call); } #else extern const bclass be_class_list; @@ -482,7 +432,6 @@ vartab m_builtin (scope: local) { issubclass, func(l_issubclass) isinstance, func(l_isinstance) __iterator__, func(l_iterator) - call, func(l_call) open, func(be_nfunc_open) list, class(be_class_list) map, class(be_class_map) diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index fc9dac898..5254b9791 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -76,12 +76,62 @@ static int m_setmember(bvm *vm) be_return_nil(vm); } +/* call a function with variable number of arguments */ +/* first argument is a callable object (function, closure, native function, native closure) */ +/* then all subsequent arguments are pushed except the last one */ +/* If the last argument is a 'list', then all elements are pushed as arguments */ +/* otherwise the last argument is pushed as well */ +static int m_vcall(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1 && be_isfunction(vm, 1)) { + size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ + /* test if last argument is a list */ + + if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { + int32_t list_size = be_data_size(vm, top + 1); + + if (list_size > 0) { + be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ + for (int i = 0; i < list_size; i++) { + be_pushnil(vm); + } + be_moveto(vm, top + 1, top + 1 + list_size); + be_moveto(vm, top, top + list_size); + + be_refpush(vm, -2); + be_pushiter(vm, -1); + while (be_iter_hasnext(vm, -2)) { + be_iter_next(vm, -2); + be_moveto(vm, -1, top); + top++; + be_pop(vm, 1); + } + be_pop(vm, 1); /* remove iterator */ + be_refpop(vm); + } + be_pop(vm, 2); + arg_count = arg_count - 1 + list_size; + } + /* actual call */ + be_call(vm, arg_count); + /* remove args */ + be_pop(vm, arg_count); + /* return value */ + + be_return(vm); + } + be_raise(vm, "value_error", "first argument must be a function"); + be_return_nil(vm); +} + #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(introspect) { be_native_module_function("members", m_attrlist), be_native_module_function("get", m_findmember), be_native_module_function("set", m_setmember), + be_native_module_function("vcall", m_vcall), }; be_define_native_module(introspect, NULL); @@ -92,6 +142,7 @@ module introspect (scope: global, depend: BE_USE_INTROSPECT_MODULE) { get, func(m_findmember) set, func(m_setmember) + vcall, func(m_vcall) } @const_object_info_end */ #include "../generate/be_fixed_introspect.h" diff --git a/lib/libesp32/Berry/tests/call.be b/lib/libesp32/Berry/tests/call.be deleted file mode 100644 index c0964d7d8..000000000 --- a/lib/libesp32/Berry/tests/call.be +++ /dev/null @@ -1,102 +0,0 @@ -#- -# -#- witness function dumping first 3 args -# -#- -# -def f(a,b,c) return [a,b,c] end - -#- simple calls with fixed args -# -assert(call(f) == [nil, nil, nil]) -assert(call(f, 1) == [1, nil, nil]) -assert(call(f, 1, 2) == [1, 2, nil]) -assert(call(f, 1, 2, 3, 4) == [1, 2, 3]) - -#- call with var args -# -assert(call(f, []) == [nil, nil, nil]) -assert(call(f, [1]) == [1, nil, nil]) -assert(call(f, [1, 2]) == [1, 2, nil]) -assert(call(f, [1, 2, 3, 4]) == [1, 2, 3]) - -#- mixed args -# -assert(call(f, 1, []) == [1, nil, nil]) -assert(call(f, 1, [2]) == [1, 2, nil]) -assert(call(f, 1, [2, "foo", 4]) == [1, 2, "foo"]) - -#- non terminal list -# -assert(call(f, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) - -#- -# -#- same tests with vararg function -# -#- -# -def g(a, *b) - if size(b) == 0 return [a, nil, nil] - elif size(b) == 1 return [a, b[0], nil] - elif size(b) > 1 return [a, b[0], b[1]] - end -end - -#- simple calls with fixed args -# -assert(call(g) == [nil, nil, nil]) -assert(call(g, 1) == [1, nil, nil]) -assert(call(g, 1, 2) == [1, 2, nil]) -assert(call(g, 1, 2, 3, 4) == [1, 2, 3]) - -#- call with var args -# -assert(call(g, []) == [nil, nil, nil]) -assert(call(g, [1]) == [1, nil, nil]) -assert(call(g, [1, 2]) == [1, 2, nil]) -assert(call(g, [1, 2, 3, 4]) == [1, 2, 3]) - -#- mixed args -# -assert(call(g, 1, []) == [1, nil, nil]) -assert(call(g, 1, [2]) == [1, 2, nil]) -assert(call(g, 1, [2, "foo", 4]) == [1, 2, "foo"]) - -#- non terminal list -# -assert(call(g, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) - -#- -# -#- test with vararg only -# -#- -# -def c(*a) return size(a) end - -#- simple calls with fixed args -# -assert(call(c) == 0) -assert(call(c, 1) == 1) -assert(call(c, 1, 2) == 2) -assert(call(c, 1, 2, 3, 4) == 4) - -#- call with var args -# -assert(call(c, []) == 0) -assert(call(c, [1]) == 1) -assert(call(c, [1, 2]) == 2) -assert(call(c, [1, 2, 3, 4]) == 4) - -#- mixed args -# -assert(call(c, 1, []) == 1) -assert(call(c, 1, [2]) == 2) -assert(call(c, 1, [2, "foo", 4]) == 4) - -#- non terminal list -# -assert(call(c, 1, [2, 3, 4], "foo") == 3) - -#- -# -#- test with native function -# -#- -# -import string - -assert(call(string.format, "a") == "a") -assert(call(string.format, "%i", 1) == "1") -assert(call(string.format, "%i - %i", 1, 2) == "1 - 2") - -assert(call(string.format, "%i - %i", [1, 2]) == "1 - 2") -assert(call(string.format, "%i - %i", [1, 2, 3]) == "1 - 2") - -assert(call(string.format, "%i - %i", 1, [1, 2, 3]) == "1 - 1") - -#- -# -#- try with an insanely high number of arguments to check that we don't blow up the stack -# -#- -# -l50 = [] -for i:1..50 l50.push(i) end - -assert(call(g, l50) == [1, 2, 3]) -assert(call(c, l50) == 50) diff --git a/lib/libesp32/Berry/tests/introspect_vcall.be b/lib/libesp32/Berry/tests/introspect_vcall.be new file mode 100644 index 000000000..0f54eb03c --- /dev/null +++ b/lib/libesp32/Berry/tests/introspect_vcall.be @@ -0,0 +1,96 @@ +#- introspect vcall -# +import introspect + +#- -# +#- witness function dumping first 3 args -# +#- -# +def f(a,b,c) return [a,b,c] end + +#- simple calls with fixed args -# +assert(introspect.vcall(f) == [nil, nil, nil]) +assert(introspect.vcall(f, 1) == [1, nil, nil]) +assert(introspect.vcall(f, 1, 2) == [1, 2, nil]) +assert(introspect.vcall(f, 1, 2, 3, 4) == [1, 2, 3]) + +#- call with var args -# +assert(introspect.vcall(f, []) == [nil, nil, nil]) +assert(introspect.vcall(f, [1]) == [1, nil, nil]) +assert(introspect.vcall(f, [1, 2]) == [1, 2, nil]) +assert(introspect.vcall(f, [1, 2, 3, 4]) == [1, 2, 3]) + +#- mixed args -# +assert(introspect.vcall(f, 1, []) == [1, nil, nil]) +assert(introspect.vcall(f, 1, [2]) == [1, 2, nil]) +assert(introspect.vcall(f, 1, [2, "foo", 4]) == [1, 2, "foo"]) + +#- non terminal list -# +assert(introspect.vcall(f, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) + +#- -# +#- same tests with vararg function -# +#- -# +def g(a, *b) + if size(b) == 0 return [a, nil, nil] + elif size(b) == 1 return [a, b[0], nil] + elif size(b) > 1 return [a, b[0], b[1]] + end +end + +#- simple calls with fixed args -# +assert(introspect.vcall(g) == [nil, nil, nil]) +assert(introspect.vcall(g, 1) == [1, nil, nil]) +assert(introspect.vcall(g, 1, 2) == [1, 2, nil]) +assert(introspect.vcall(g, 1, 2, 3, 4) == [1, 2, 3]) + +#- call with var args -# +assert(introspect.vcall(g, []) == [nil, nil, nil]) +assert(introspect.vcall(g, [1]) == [1, nil, nil]) +assert(introspect.vcall(g, [1, 2]) == [1, 2, nil]) +assert(introspect.vcall(g, [1, 2, 3, 4]) == [1, 2, 3]) + +#- mixed args -# +assert(introspect.vcall(g, 1, []) == [1, nil, nil]) +assert(introspect.vcall(g, 1, [2]) == [1, 2, nil]) +assert(introspect.vcall(g, 1, [2, "foo", 4]) == [1, 2, "foo"]) + +#- non terminal list -# +assert(introspect.vcall(g, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) + +#- -# +#- test with vararg only -# +#- -# +def c(*a) return size(a) end + +#- simple calls with fixed args -# +assert(introspect.vcall(c) == 0) +assert(introspect.vcall(c, 1) == 1) +assert(introspect.vcall(c, 1, 2) == 2) +assert(introspect.vcall(c, 1, 2, 3, 4) == 4) + +#- call with var args -# +assert(introspect.vcall(c, []) == 0) +assert(introspect.vcall(c, [1]) == 1) +assert(introspect.vcall(c, [1, 2]) == 2) +assert(introspect.vcall(c, [1, 2, 3, 4]) == 4) + +#- mixed args -# +assert(introspect.vcall(c, 1, []) == 1) +assert(introspect.vcall(c, 1, [2]) == 2) +assert(introspect.vcall(c, 1, [2, "foo", 4]) == 4) + +#- non terminal list -# +assert(introspect.vcall(c, 1, [2, 3, 4], "foo") == 3) + +#- -# +#- test with native function -# +#- -# +import string + +assert(introspect.vcall(string.format, "a") == "a") +assert(introspect.vcall(string.format, "%i", 1) == "1") +assert(introspect.vcall(string.format, "%i - %i", 1, 2) == "1 - 2") + +assert(introspect.vcall(string.format, "%i - %i", [1, 2]) == "1 - 2") +assert(introspect.vcall(string.format, "%i - %i", [1, 2, 3]) == "1 - 2") + +assert(introspect.vcall(string.format, "%i - %i", 1, [1, 2, 3]) == "1 - 1") From bc5f3469263c7a8411e390b9f36eff95050b2ab1 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 12 Sep 2021 12:24:09 +0200 Subject: [PATCH 177/317] Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 --- CHANGELOG.md | 1 + platformio_tasmota32.ini | 2 + tasmota/support_crash_recorder.ino | 292 ++++++++++++++++++++++++++--- tasmota/support_esp.ino | 38 ---- 4 files changed, 269 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3dfd6e705..7a6e2f8f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Berry class ``webclient`` for HTTP/HTTPS requests - Support for ESP32S2 GPIOs - ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) +- Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index ad2a50d08..62dfd7739 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -23,6 +23,8 @@ build_flags = ${esp_defaults.build_flags} -I$PROJECT_DIR/include -include "sdkconfig.h" -include "esp32x_fixes.h" + ; wrappers for the crash-recorder + -Wl,--wrap=panicHandler -Wl,--wrap=xt_unhandled_exception [core32] diff --git a/tasmota/support_crash_recorder.ino b/tasmota/support_crash_recorder.ino index b9d81b53f..9981a9d7f 100644 --- a/tasmota/support_crash_recorder.ino +++ b/tasmota/support_crash_recorder.ino @@ -17,6 +17,31 @@ along with this program. If not, see . */ +// Generate a crash to test the crash recorder +void CmndCrash(void) +{ + volatile uint32_t dummy; + dummy = *((uint32_t*) 0x00000000); + (void)dummy; +} + +// Do an infinite loop to trigger WDT watchdog +void CmndWDT(void) +{ + volatile uint32_t dummy = 0; + while (1) { + dummy++; + } +} + +// This will trigger the os watch after OSWATCH_RESET_TIME (=120) seconds +void CmndBlockedLoop(void) +{ + while (1) { + delay(1000); + } +} + #ifdef ESP8266 const uint32_t crash_magic = 0x53415400; // Stack trace magic number (TASx) @@ -45,31 +70,6 @@ extern "C" void custom_crash_callback(struct rst_info * rst_info, uint32_t stack ESP.rtcUserMemoryWrite(crash_rtc_offset + crash_dump_max_len, (uint32_t*)&value, sizeof(value)); } -// Generate a crash to test the crash recorder -void CmndCrash(void) -{ - volatile uint32_t dummy; - dummy = *((uint32_t*) 0x00000000); - (void)dummy; -} - -// Do an infinite loop to trigger WDT watchdog -void CmndWDT(void) -{ - volatile uint32_t dummy = 0; - while (1) { - dummy++; - } -} - -// This will trigger the os watch after OSWATCH_RESET_TIME (=120) seconds -void CmndBlockedLoop(void) -{ - while (1) { - delay(1000); - } -} - // Clear the RTC dump counter when we do a normal reboot, this avoids garbage data to stay in RTC void CrashDumpClear(void) { @@ -113,4 +113,244 @@ void CrashDump(void) ResponseJsonEnd(); } -#endif // ESP8266 \ No newline at end of file +#endif // ESP8266 + +#ifdef ESP32 + +const uint32_t crash_magic = 0x53415400; // Stack trace magic number (TASx) +const uint32_t crash_dump_max_len = 48; // Dump only 48 call addresses + +// RTC_NOINIT_ATTR: store in RTC slow memory that survices a boot/crash +// needs to be volatile and have no intializer +RTC_NOINIT_ATTR volatile struct { + uint32_t magic; + uint32_t stack[crash_dump_max_len]; + uint32_t pc; + uint32_t exccause; + uint32_t excvaddr; +} crash_recorder; + +bool CrashFlag(void) +{ + return crash_recorder.magic == crash_magic; +} + +// Clear the RTC dump counter when we do a normal reboot, this avoids garbage data to stay in RTC +void CrashDumpClear(void) +{ + crash_recorder.magic = 0; + for (uint32_t i=0; ipc; + crash_recorder.exccause = exc_frame->exccause; + crash_recorder.excvaddr = exc_frame->excvaddr; + for (uint32_t i=0; ipc, .sp = exc_frame->a1, .next_pc = exc_frame->a0}; + esp_backtrace_frame_t stk_frame; + stk_frame.pc = exc_frame->pc; + stk_frame.sp = exc_frame->a1; + stk_frame.next_pc = exc_frame->a0; + crash_recorder.stack[idx++] = esp_cpu_process_stack_pc(stk_frame.pc); + + static const uint32_t depth = 100; + //Check if first frame is valid + bool corrupted = (esp_stack_ptr_is_sane(stk_frame.sp) && + esp_ptr_executable((void*)esp_cpu_process_stack_pc(stk_frame.pc))) ? + false : true; + uint32_t i = ((depth <= 0) ? INT32_MAX : depth) - 1; //Account for stack frame that's already printed + while (i-- > 0 && stk_frame.next_pc != 0 && !corrupted) { + if (!esp_backtrace_get_next_frame(&stk_frame)) { //Get next stack frame + corrupted = true; + } + crash_recorder.stack[idx++] = esp_cpu_process_stack_pc(stk_frame.pc); + if (idx >= crash_dump_max_len) break; // no more slots + } +} + +extern "C" IRAM_ATTR void __wrap_panicHandler(XtExcFrame *frame) { + custom_crash_recorder(frame); + __real_panicHandler(frame); // call the actual panic handler +} + +extern "C" IRAM_ATTR void __wrap_xt_unhandled_exception(XtExcFrame *frame) { + crash_recorder.magic = crash_magic; // crash occured + custom_crash_recorder(frame); + __real_xt_unhandled_exception(frame); // call the actual panic handler +} + +// taken in panic.c, but orginal array is 'static' so can't be called +static const char *edesc[] = { + "IllegalInstruction", "Syscall", "InstructionFetchError", "LoadStoreError", + "Level1Interrupt", "Alloca", "IntegerDivideByZero", "PCValue", + "Privileged", "LoadStoreAlignment", "res", "res", + "InstrPDAddrError", "LoadStorePIFDataError", "InstrPIFAddrError", "LoadStorePIFAddrError", + "InstTLBMiss", "InstTLBMultiHit", "InstFetchPrivilege", "res", + "InstrFetchProhibited", "res", "res", "res", + "LoadStoreTLBMiss", "LoadStoreTLBMultihit", "LoadStorePrivilege", "res", + "LoadProhibited", "StoreProhibited", "res", "res", + "Cp0Dis", "Cp1Dis", "Cp2Dis", "Cp3Dis", + "Cp4Dis", "Cp5Dis", "Cp6Dis", "Cp7Dis" +}; +#define NUM_EDESCS (sizeof(edesc) / sizeof(char *)) + +void CrashDump(void) +{ + if (crash_recorder.magic == crash_magic) { + ResponseAppend_P("{\"Exception\":%d,\"Reason\":\"%s\",\"EPC\":\"%08x\",\"EXCVADDR\":\"%08x\"", + crash_recorder.exccause, // Exception Cause + crash_recorder.exccause < NUM_EDESCS ? edesc[crash_recorder.exccause] : "Unknown", + crash_recorder.pc, // Exception Progam Counter + crash_recorder.excvaddr // Exception Virtual Address Register - Virtual address that caused last fetch, load, or store exception + ); + // crash dump present + ResponseAppend_P(PSTR(",\"CallChain\":[")); + for (uint32_t i = 0; i < crash_dump_max_len; i++) { + uint32_t return_addr = crash_recorder.stack[i]; + if (!return_addr) { break; } + if (i > 0) { ResponseAppend_P(PSTR(",")); } + ResponseAppend_P(PSTR("\"%08x\""), return_addr); + } + ResponseAppend_P(PSTR("]")); + } + ResponseJsonEnd(); +} +#elif CONFIG_IDF_TARGET_ESP32C3 + +extern "C" { + // esp-idf 3.x + void __real_panicHandler(void *frame); + void __real_xt_unhandled_exception(void *frame); +} + +// from panic_arch.c +const char *esp32c3_crash_reason[] = { + "Instruction address misaligned", + "Instruction access fault", + "Illegal instruction", + "Breakpoint", + "Load address misaligned", + "Load access fault", + "Store address misaligned", + "Store access fault", + "Environment call from U-mode", + "Environment call from S-mode", + "", + "Environment call from M-mode", + "Instruction page fault", + "Load page fault", + "", + "Store page fault", +}; +#define NUM_C3_REASONS (sizeof(esp32c3_crash_reason) / sizeof(char *)) + +#include +extern "C" IRAM_ATTR void custom_crash_recorder(void *exc_frame) { + RvExcFrame *regs = (RvExcFrame *)exc_frame; + + crash_recorder.magic = crash_magic; // crash occured + crash_recorder.pc = regs->mepc; + crash_recorder.exccause = regs->mcause; + crash_recorder.excvaddr = regs->mtval; + for (uint32_t i=0; ira; // push return address as first value + + // // code copied from panic_print_basic_backtrace() + uint32_t * sp = (uint32_t*) regs->sp; + uint32_t i = 0; + for (uint32_t i = 0; ((uint32_t) sp) < 0x3FCDFFF0 && i < 320 && idx < crash_dump_max_len; i++, sp++) { + uint32_t value = *sp; + if ((value >= 0x40000000) && (value < 0x42800000)) { // keep only addresses in code area + crash_recorder.stack[idx++] = value; + } + } +} + +extern "C" IRAM_ATTR void __wrap_panicHandler(void *frame) { + custom_crash_recorder(frame); + __real_panicHandler(frame); // call the actual panic handler +} + +extern "C" IRAM_ATTR void __wrap_xt_unhandled_exception(void *frame) { + crash_recorder.magic = crash_magic; // crash occured + custom_crash_recorder(frame); + __real_xt_unhandled_exception(frame); // call the actual panic handler +} + +void CrashDump(void) +{ + if (crash_recorder.magic == crash_magic) { + ResponseAppend_P("{\"Exception\":%d,\"Reason\":\"%s\",\"EPC\":\"%08x\",\"EXCVADDR\":\"%08x\"", + crash_recorder.exccause, // Exception Cause + crash_recorder.exccause < NUM_C3_REASONS ? esp32c3_crash_reason[crash_recorder.exccause] : "Unknown", + crash_recorder.pc, // Exception Progam Counter + crash_recorder.excvaddr // Exception Virtual Address Register - Virtual address that caused last fetch, load, or store exception + ); + // crash dump present + ResponseAppend_P(PSTR(",\"CallChain\":[")); + for (uint32_t i = 0; i < crash_dump_max_len; i++) { + uint32_t return_addr = crash_recorder.stack[i]; + if (!return_addr) { break; } + if (i > 0) { ResponseAppend_P(PSTR(",")); } + ResponseAppend_P(PSTR("\"%08x\""), return_addr); + } + ResponseAppend_P(PSTR("]")); + } + ResponseJsonEnd(); +} +#else // unknown + +bool CrashFlag(void) +{ + return false; +} + +// Clear the RTC dump counter when we do a normal reboot, this avoids garbage data to stay in RTC +void CrashDumpClear(void) +{ +} + +void CrashDump(void) +{ +} + +#endif +#endif \ No newline at end of file diff --git a/tasmota/support_esp.ino b/tasmota/support_esp.ino index 5feba48e7..6f94bf3f7 100644 --- a/tasmota/support_esp.ino +++ b/tasmota/support_esp.ino @@ -311,44 +311,6 @@ int32_t EspPartitionMmap(uint32_t action) { } */ -// -// Crash stuff -// - -void CrashDump(void) { -} - -bool CrashFlag(void) { - return false; -} - -void CrashDumpClear(void) { -} - -void CmndCrash(void) { - /* - volatile uint32_t dummy; - dummy = *((uint32_t*) 0x00000000); -*/ -} - -// Do an infinite loop to trigger WDT watchdog -void CmndWDT(void) { - /* - volatile uint32_t dummy = 0; - while (1) { - dummy++; - } -*/ -} -// This will trigger the os watch after OSWATCH_RESET_TIME (=120) seconds -void CmndBlockedLoop(void) { - /* - while (1) { - delay(1000); - } -*/ -} // // ESP32 specific From 807d013a34e40df495c96f53f768deede0422edc Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 12 Sep 2021 17:51:20 +0200 Subject: [PATCH 178/317] Use Universal Display Driver for Core2 build --- platformio_tasmota_env32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 6145ec8ae..c069c0a49 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -70,7 +70,7 @@ lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, [env:tasmota32-core2] extends = env:tasmota32_base board = esp32-m5core2 -build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_M5STACK_CORE2 +build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_M5STACK_CORE2 -DUSE_UNIVERSAL_DISPLAY lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display, lib/lib_audio [env:tasmota32-bluetooth] From a97a03db62a34ad3868854753c6bf8860616fdf4 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 12 Sep 2021 18:01:39 +0200 Subject: [PATCH 179/317] Lvgl lib needed --- platformio_tasmota_env32.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index c069c0a49..400e1f3cf 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -71,7 +71,7 @@ lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, extends = env:tasmota32_base board = esp32-m5core2 build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_M5STACK_CORE2 -DUSE_UNIVERSAL_DISPLAY -lib_extra_dirs = lib/libesp32, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display, lib/lib_audio +lib_extra_dirs = lib/libesp32, lib/libesp32_lvgl, lib/lib_basic, lib/lib_i2c, lib/lib_rf, lib/lib_div, lib/lib_ssl, lib/lib_display, lib/lib_audio [env:tasmota32-bluetooth] extends = env:tasmota32_base From 3333875308c3f1623ea25a0d9561c7061e735b1c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 12 Sep 2021 18:19:46 +0200 Subject: [PATCH 180/317] Fix compile error when using lvgl driver --- tasmota/tasmota_configurations_ESP32.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 2913667b0..00c1dc9f5 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -104,6 +104,8 @@ #define JPEG_PICTS #define USE_FT5206 +#define USE_LIGHT + #define USE_SENDMAIL #define USE_ESP32MAIL From 6403dc8fccd864a343b6961efe047b4dbe694e6e Mon Sep 17 00:00:00 2001 From: Jason2866 Date: Sun, 12 Sep 2021 16:40:37 +0000 Subject: [PATCH 181/317] touch buttons always needed --- tasmota/tasmota_configurations_ESP32.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 00c1dc9f5..d229e25cd 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -99,13 +99,11 @@ #else #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code) #define USE_DISPLAY_MODES1TO5 - #define USE_TOUCH_BUTTONS #endif + #define USE_TOUCH_BUTTONS #define JPEG_PICTS #define USE_FT5206 -#define USE_LIGHT - #define USE_SENDMAIL #define USE_ESP32MAIL From e65391cbe40b5a71221f369efdf3aeb7725d225c Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 12 Sep 2021 19:21:40 +0200 Subject: [PATCH 182/317] core 2 uses Universal Display driver --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a6e2f8f1..e4b83b4aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ All notable changes to this project will be documented in this file. - ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) - Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 +### Changed +- M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now + ### Fixed - OpenTherm invalid JSON (#13028) - ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set (#13037) From 3d46daa83050cb5e6718791bfedc2b5aeb7acbc9 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 12 Sep 2021 19:31:47 +0200 Subject: [PATCH 183/317] Berry setlight fix --- tasmota/xdrv_52_3_berry_light.ino | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/tasmota/xdrv_52_3_berry_light.ino b/tasmota/xdrv_52_3_berry_light.ino index 44c383866..19aa3cfb6 100644 --- a/tasmota/xdrv_52_3_berry_light.ino +++ b/tasmota/xdrv_52_3_berry_light.ino @@ -216,6 +216,7 @@ extern "C" { uint8_t channels[LST_MAX] = {}; // initialized with all zeroes if (list_size > LST_MAX) { list_size = LST_MAX; } // no more than 5 channels, no need to test for positive, any negative will be discarded by loop + bool on = false; // if all are zero, then only set power off for (uint32_t i = 0; i < list_size; i++) { // be_dumpstack(vm); get_list_item(vm, i); @@ -223,16 +224,12 @@ extern "C" { int32_t val = be_toint(vm, -1); be_pop(vm, 1); // remove result from stack channels[i] = to_u8(val); - - bool on = false; // if all are zero, then only set power off - for (uint32_t i = 0; i < LST_MAX; i++) { - if (channels[i] != 0) { on = true; } - } - if (on) { - light_controller.changeChannels(channels); - } else { - ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY); - } + if (channels[i]) { on = true; } + } + if (on) { + light_controller.changeChannels(channels); + } else { + ExecuteCommandPower(idx + 1, POWER_OFF, SRC_BERRY); } } else { be_pop(vm, 1); // remove "list" class from top From 16b0970a65c9fb10a7353dcdfae3c6a711df111a Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 12 Sep 2021 19:44:01 +0200 Subject: [PATCH 184/317] Fix Teleinfo for Denky D4 --- tasmota/xnrg_15_teleinfo.ino | 56 +++++++++++------------------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/tasmota/xnrg_15_teleinfo.ino b/tasmota/xnrg_15_teleinfo.ino index 87cf793b4..978e4ddb4 100755 --- a/tasmota/xnrg_15_teleinfo.ino +++ b/tasmota/xnrg_15_teleinfo.ino @@ -562,21 +562,9 @@ void TInfoDrvInit(void) { // If one TInfo RX pin declared use it if (PinUsed(GPIO_TELEINFO_RX)) { tic_rx_pin = Pin(GPIO_TELEINFO_RX); - } else { - // Case we are on denky V4 board without any TInfo RX pin selected - #ifdef ARDUINO_DENKY_PICOV3 - tic_rx_pin = 8; - AddLog(LOG_LEVEL_INFO, PSTR("TIC: Denky D4 board, RX on GPIO%d"), tic_rx_pin); - #endif - } - - // Enable teleinfo - if (tic_rx_pin != NOT_A_PIN) { TasmotaGlobal.energy_driver = XNRG_15; Energy.voltage_available = false; Energy.phase_count = 1; - } else { - AddLog(LOG_LEVEL_ERROR, PSTR("TIC: Device has no RX pin")); } } @@ -589,6 +577,7 @@ Comments: - ====================================================================== */ void TInfoInit(void) { + if (!PinUsed(GPIO_TELEINFO_RX)) { return; } // ignore if pin not set int baudrate; // Deprecated SetOption102 - Set Baud rate for Teleinfo serial communication (0 = 1200 or 1 = 9600) @@ -611,8 +600,6 @@ void TInfoInit(void) pinMode(en_pin, OUTPUT); digitalWrite(en_pin, HIGH); AddLog(LOG_LEVEL_INFO, PSTR("TIC: Enable with GPIO%d"), en_pin); - } else { - AddLog(LOG_LEVEL_INFO, PSTR("TIC: always enabled")); } #ifdef ESP8266 @@ -626,11 +613,7 @@ void TInfoInit(void) TInfoSerial = new TasmotaSerial(tic_rx_pin, -1, 1, 0, serial_buffer_size); #endif // ESP32 - // Trick here even using SERIAL_7E1 or TS_SERIAL_7E1 - // this is not working, need to call SetSerialConfig after - if (TInfoSerial->begin(baudrate)) { - - + if (TInfoSerial->begin(baudrate, SERIAL_7E1)) { #ifdef ESP8266 if (TInfoSerial->hardwareSerial() ) { ClaimSerial(); @@ -647,10 +630,6 @@ void TInfoInit(void) AddLog(LOG_LEVEL_INFO, PSTR("TIC: using software serial")); } #endif // ESP8266 -#ifdef ESP32 - SetSerialConfig(TS_SERIAL_7E1); - AddLog(LOG_LEVEL_INFO, PSTR("TIC: using ESP32 hardware serial")); -#endif // ESP32 // Init teleinfo tinfo.init(tinfo_mode); // Attach needed callbacks @@ -666,7 +645,6 @@ void TInfoInit(void) AddLog(LOG_LEVEL_INFO, PSTR("TIC: Sending only one frame over %d "), raw_skip+1); } } - AddLog(LOG_LEVEL_INFO, PSTR("TIC: Ready")); } } @@ -1029,27 +1007,27 @@ bool Xnrg15(uint8_t function) bool result = false; switch (function) { - case FUNC_EVERY_250_MSECOND: - TInfoProcess(); - break; - case FUNC_COMMAND: - result = TInfoCmd(); - break; - - case FUNC_JSON_APPEND: - TInfoShow(1); - break; - #ifdef USE_WEBSERVER - case FUNC_WEB_SENSOR: - TInfoShow(0); - break; - #endif // USE_WEBSERVER case FUNC_INIT: TInfoInit(); break; case FUNC_PRE_INIT: TInfoDrvInit(); break; + case FUNC_EVERY_250_MSECOND: + if (tinfo_found) { TInfoProcess(); } + break; + case FUNC_COMMAND: + if (tinfo_found) { result = TInfoCmd(); } + break; + + case FUNC_JSON_APPEND: + if (tinfo_found) { TInfoShow(1); } + break; + #ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + if (tinfo_found) { TInfoShow(0); } + break; + #endif // USE_WEBSERVER } return result; } From 983d13efa3f1ec87d846ec06031a46d2bba1d195 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sun, 12 Sep 2021 19:55:15 +0200 Subject: [PATCH 185/317] Remove warning in crashrecorder --- tasmota/support_crash_recorder.ino | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tasmota/support_crash_recorder.ino b/tasmota/support_crash_recorder.ino index 9981a9d7f..403a6d599 100644 --- a/tasmota/support_crash_recorder.ino +++ b/tasmota/support_crash_recorder.ino @@ -160,7 +160,11 @@ void CrashDumpClear(void) // esp_err_t IRAM_ATTR esp_backtrace_print(int depth) #include "freertos/xtensa_api.h" -#include "esp_panic.h" +#if ESP_IDF_VERSION_MAJOR >= 4 + #include "esp_debug_helpers.h" +#else // IDF 3.x + #include "esp_panic.h" +#endif extern "C" { // esp-idf 3.x void __real_panicHandler(XtExcFrame *frame); From d3cc32cdc8db199f045f30af2a50ed1b81ccebcf Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 12 Sep 2021 21:17:32 +0200 Subject: [PATCH 186/317] FreeType fonts for core2 --- tasmota/tasmota_configurations_ESP32.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index d229e25cd..4a205158b 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -95,6 +95,7 @@ #define USE_DISPLAY #ifdef USE_UNIVERSAL_DISPLAY #define USE_LVGL + #define USE_LVGL_FREETYPE // #define USE_DISPLAY_LVGL_ONLY #else #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code) From fb7a9a89709519c7c82415b8aefb351eb4eec981 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 12 Sep 2021 22:01:21 +0200 Subject: [PATCH 187/317] Revert "lv_freetype patch #10" --- .../lv_lib_freetype/lv_freetype.c | 580 +++++++++--------- .../lv_lib_freetype/lv_freetype.h | 49 +- 2 files changed, 327 insertions(+), 302 deletions(-) diff --git a/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.c b/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.c index 1eba378d1..3c00d8b65 100644 --- a/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.c +++ b/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.c @@ -6,12 +6,43 @@ /********************* * INCLUDES *********************/ + #include "lv_freetype.h" -#include "ft2build.h" -#include FT_FREETYPE_H -#include FT_GLYPH_H -#include FT_CACHE_H -#include FT_SIZES_H +#include "freertos/FreeRTOS.h" +#include "freertos/queue.h" +#include "freertos/task.h" + +#if CONFIG_FREERTOS_UNICORE +#define ARDUINO_RUNNING_CORE 0 +#else +#define ARDUINO_RUNNING_CORE 1 +#endif + +/* + * FreeType requires up to 32KB of stack to run, which overflows the stack of 8KB. + * + * We delegate to a FreeRTOS sub-task with a bigger stack. + * + * Parameters are passed via a RequestQueue, and response back via ResponseQueue + * + * The function that uses this scheme is `get_glyph_dsc_cb()`` + * + */ + +QueueHandle_t FTRequestQueue; +QueueHandle_t FTResponseQueue; +TaskHandle_t FTTaskHandle; +void FT_loop_task(void *pvParameters); + +typedef struct FT_glyph_dsc_request { + const lv_font_t * font; + lv_font_glyph_dsc_t * dsc_out; + uint32_t unicode_letter; + uint32_t unicode_letter_next; +} FT_glyph_dsc_request; + +typedef bool FT_glyph_dsc_response; + /********************* * DEFINES @@ -20,58 +51,38 @@ /********************** * TYPEDEFS **********************/ -typedef struct { - char * name; -} lv_face_info_t; - -typedef struct { - lv_ll_t face_ll; -} lv_faces_control_t; - -typedef struct { -#if LV_USE_FT_CACHE_MANAGER - void * face_id; -#else - FT_Size size; -#endif - lv_font_t * font; - uint16_t style; - uint16_t height; -} lv_font_fmt_ft_dsc_t; /********************** * STATIC PROTOTYPES **********************/ -#if LV_USE_FT_CACHE_MANAGER -static FT_Error font_face_requester(FTC_FaceID face_id, - FT_Library library_is, FT_Pointer req_data, FT_Face * aface); -static bool lv_ft_font_init_cache(lv_ft_info_t * info); -static void lv_ft_font_destroy_cache(lv_font_t * font); -static bool lv_ft_font_init_cache(lv_ft_info_t * info); -static void lv_ft_font_destroy_cache(lv_font_t * font); -#else -static FT_Face face_find_in_list(lv_ft_info_t * info); +static FT_Face face_find_in_list(lv_ft_info_t *info); static void face_add_to_list(FT_Face face); static void face_remove_from_list(FT_Face face); -static void face_generic_finalizer(void * object); -static bool lv_ft_font_init_nocache(lv_ft_info_t * info); -static void lv_ft_font_destroy_nocache(lv_font_t * font); + +static void face_generic_finalizer(void* object); +static bool get_glyph_dsc_cb(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, + uint32_t unicode_letter, uint32_t unicode_letter_next); +static const uint8_t * get_glyph_bitmap_cb(const lv_font_t * font, uint32_t unicode_letter); + +#if LV_USE_FT_CACHE_MANAGER +static FT_Error font_face_requester(FTC_FaceID face_id, + FT_Library library_is,FT_Pointer req_data,FT_Face* aface); #endif -/********************** -* STATIC VARIABLES -**********************/ + /********************** + * STATIC VARIABLES + **********************/ static FT_Library library; #if LV_USE_FT_CACHE_MANAGER - static FTC_Manager cache_manager; - static FTC_CMapCache cmap_cache; - static FTC_SBitCache sbit_cache; - static FTC_SBit sbit; -#else - static lv_faces_control_t face_control; +static FTC_Manager cache_manager; +static FTC_CMapCache cmap_cache; +static FTC_SBitCache sbit_cache; +static FTC_SBit sbit; #endif +static lv_faces_control_t face_control; + /********************** * MACROS **********************/ @@ -79,18 +90,22 @@ static FT_Library library; /********************** * GLOBAL FUNCTIONS **********************/ -bool lv_freetype_init(uint16_t max_faces, uint16_t max_sizes, uint32_t max_bytes) +bool lv_freetype_init(FT_UInt max_faces, FT_UInt max_sizes, FT_ULong max_bytes) { + face_control.cnt = 0; + face_control.num = max_faces; + _lv_ll_init(&face_control.face_ll, sizeof(FT_Face *)); + FT_Error error = FT_Init_FreeType(&library); - if(error) { + if (error) { LV_LOG_ERROR("init freeType error(%d)", error); return false; } #if LV_USE_FT_CACHE_MANAGER error = FTC_Manager_New(library, max_faces, max_sizes, - max_bytes, font_face_requester, NULL, &cache_manager); - if(error) { + max_bytes, font_face_requester, NULL, &cache_manager); + if (error) { FT_Done_FreeType(library); LV_LOG_ERROR("Failed to open cache manager"); return false; @@ -103,21 +118,27 @@ bool lv_freetype_init(uint16_t max_faces, uint16_t max_sizes, uint32_t max_bytes } error = FTC_SBitCache_New(cache_manager, &sbit_cache); - if(error) { + if(error){ LV_LOG_ERROR("Failed to open sbit cache"); goto Fail; } - return true; + // initialize the queues to send request and receive response + FTRequestQueue = xQueueCreate(1, sizeof(FT_glyph_dsc_request)); + FTResponseQueue = xQueueCreate(1, sizeof(FT_glyph_dsc_response)); + + xTaskCreatePinnedToCore(FT_loop_task, "FreeType_task", LV_USE_FT_STACK_SIZE, NULL, 1, &FTTaskHandle, ARDUINO_RUNNING_CORE); + + if (FTRequestQueue && FTResponseQueue) { + return true; + } Fail: FTC_Manager_Done(cache_manager); FT_Done_FreeType(library); return false; #else - LV_UNUSED(max_faces); LV_UNUSED(max_sizes); LV_UNUSED(max_bytes); - _lv_ll_init(&face_control.face_ll, sizeof(FT_Face *)); return true; #endif/* LV_USE_FT_CACHE_MANAGER */ } @@ -130,46 +151,168 @@ void lv_freetype_destroy(void) FT_Done_FreeType(library); } -bool lv_ft_font_init(lv_ft_info_t * info) +bool lv_ft_font_init(lv_ft_info_t *info) { -#if LV_USE_FT_CACHE_MANAGER - return lv_ft_font_init_cache(info); + lv_font_fmt_ft_dsc_t * dsc = lv_mem_alloc(sizeof(lv_font_fmt_ft_dsc_t)); + if(dsc == NULL) return false; + + dsc->font = lv_mem_alloc(sizeof(lv_font_t)); + if(dsc->font == NULL) { + lv_mem_free(dsc); + return false; + } + + lv_face_info_t *face_info = NULL; + FT_Face face = face_find_in_list(info); + if (face == NULL) { + if (face_control.cnt == face_control.num - 1) { + LV_LOG_WARN("face full"); + goto Fail; + } + face_info = lv_mem_alloc(sizeof(lv_face_info_t) + strlen(info->name) + 1); + if(face_info == NULL) { + goto Fail; + } + FT_Error error = FT_New_Face(library, info->name, 0, &face); + if(error){ + lv_mem_free(face_info); + LV_LOG_WARN("create face error(%d)", error); + goto Fail; + } + + face_info->name = ((char *)face_info) + sizeof(lv_face_info_t); + strcpy(face_info->name, info->name); + face_info->cnt = 1; + face->generic.data = face_info; + face->generic.finalizer = face_generic_finalizer; + face_add_to_list(face); + } + else { +#if LV_USE_FT_CACHE_MANAGER == 0 + FT_Size size; + FT_Error error = FT_New_Size(face, &size); + if (error) { + goto Fail; + } + FT_Activate_Size(size); + FT_Reference_Face(face); #else - return lv_ft_font_init_nocache(info); + face_info = (lv_face_info_t *)face->generic.data; + face_info->cnt++; #endif + } + FT_Set_Pixel_Sizes(face, 0, info->weight); + + dsc->face = face; + dsc->size = face->size; + dsc->weight = info->weight; + dsc->style = info->style; + lv_font_t *font = dsc->font; + font->user_data = dsc; + font->get_glyph_dsc = get_glyph_dsc_cb; + font->get_glyph_bitmap = get_glyph_bitmap_cb; + font->line_height = (dsc->face->size->metrics.height >> 6); + font->base_line = -(dsc->face->size->metrics.descender >> 6); + font->subpx = LV_FONT_SUBPX_NONE; + font->underline_position = dsc->face->underline_position; + font->underline_thickness = dsc->face->underline_thickness; + font->dsc = NULL; + info->font = font; + return true; + +Fail: + lv_mem_free(dsc->font); + lv_mem_free(dsc); + return false; } -void lv_ft_font_destroy(lv_font_t * font) +void lv_ft_font_destroy(lv_font_t* font) { -#if LV_USE_FT_CACHE_MANAGER - lv_ft_font_destroy_cache(font); + if (font == NULL) { + return; + } + + lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->user_data); + if (dsc) { +#if LV_USE_FT_CACHE_MANAGER == 0 + FT_Done_Size(dsc->size); + FT_Done_Face(dsc->face); #else - lv_ft_font_destroy_nocache(font); + lv_face_info_t *face_info = (lv_face_info_t *)dsc->face->generic.data; + face_info->cnt--; + if(face_info->cnt == 0){ + FTC_Manager_RemoveFaceID(cache_manager, (FTC_FaceID)dsc->face); + } #endif + lv_mem_free(dsc->font); + lv_mem_free(dsc); + } } /********************** * STATIC FUNCTIONS **********************/ +static void face_generic_finalizer(void* object) +{ + FT_Face face = (FT_Face)object; + face_remove_from_list(face); + if(face->generic.data){ + lv_face_info_t *face_info = (lv_face_info_t *)face->generic.data; + lv_mem_free(face_info); + } + LV_LOG_INFO("face finalizer(%p)\n", face); +} + +static FT_Face face_find_in_list(lv_ft_info_t *info) +{ + lv_face_info_t *face_info; + FT_Face *pface = _lv_ll_get_head(&face_control.face_ll); + while(pface) { + face_info = (lv_face_info_t *)(*pface)->generic.data; + if (strcmp(face_info->name, info->name) == 0) { + return *pface; + } + pface = _lv_ll_get_next(&face_control.face_ll, pface); + } + + return NULL; +} + +static void face_add_to_list(FT_Face face) +{ + FT_Face *pface; + pface = (FT_Face *)_lv_ll_ins_tail(&face_control.face_ll); + *pface = face; + face_control.cnt++; +} + +static void face_remove_from_list(FT_Face face) +{ + FT_Face *pface = _lv_ll_get_head(&face_control.face_ll); + while(pface) { + if (*pface == face) { + _lv_ll_remove(&face_control.face_ll, pface); + lv_mem_free(pface); + face_control.cnt--; + break; + } + pface = _lv_ll_get_next(&face_control.face_ll, pface); + } +} + #if LV_USE_FT_CACHE_MANAGER static FT_Error font_face_requester(FTC_FaceID face_id, - FT_Library library_is, FT_Pointer req_data, FT_Face * aface) + FT_Library library_is,FT_Pointer req_data,FT_Face* aface) { LV_UNUSED(library_is); LV_UNUSED(req_data); - - lv_face_info_t * info = (lv_face_info_t *)face_id; - FT_Error error = FT_New_Face(library, info->name, 0, aface); - if(error) { - LV_LOG_ERROR("FT_New_Face error:%d\n", error); - return error; - } + *aface = face_id; return FT_Err_Ok; } -static bool get_glyph_dsc_cb_cache(const lv_font_t * font, - lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) +static bool get_glyph_dsc_cb_cache(const lv_font_t * font, + lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) { LV_UNUSED(unicode_letter_next); if(unicode_letter < 0x20) { @@ -182,23 +325,17 @@ static bool get_glyph_dsc_cb_cache(const lv_font_t * font, return true; } - lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->dsc); + lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->user_data); + FT_Face face = dsc->face; - FT_Face face; - FTC_ImageTypeRec desc_sbit_type; - FTC_FaceID face_id = (FTC_FaceID)dsc->face_id; - FTC_Manager_LookupFace(cache_manager, face_id, &face); - - desc_sbit_type.face_id = face_id; + static FTC_ImageTypeRec desc_sbit_type; + desc_sbit_type.face_id = (FTC_FaceID)face; desc_sbit_type.flags = FT_LOAD_RENDER | FT_LOAD_TARGET_NORMAL; - desc_sbit_type.height = dsc->height; - desc_sbit_type.width = dsc->height; + desc_sbit_type.height = dsc->weight; + desc_sbit_type.width = dsc->weight; FT_UInt charmap_index = FT_Get_Charmap_Index(face->charmap); - FT_UInt glyph_index = FTC_CMapCache_Lookup(cmap_cache, face_id, charmap_index, unicode_letter); + FT_UInt glyph_index = FTC_CMapCache_Lookup(cmap_cache, (FTC_FaceID)face, charmap_index, unicode_letter); FT_Error error = FTC_SBitCache_Lookup(sbit_cache, &desc_sbit_type, glyph_index, &sbit, NULL); - if(error) { - LV_LOG_ERROR("SBitCache_Lookup error"); - } dsc_out->adv_w = sbit->xadvance; dsc_out->box_h = sbit->height; /*Height of the bitmap in [px]*/ @@ -217,129 +354,13 @@ static const uint8_t * get_glyph_bitmap_cb_cache(const lv_font_t * font, uint32_ return (const uint8_t *)sbit->buffer; } -static bool lv_ft_font_init_cache(lv_ft_info_t * info) -{ - lv_font_fmt_ft_dsc_t * dsc = lv_mem_alloc(sizeof(lv_font_fmt_ft_dsc_t)); - if(dsc == NULL) return false; - - dsc->font = lv_mem_alloc(sizeof(lv_font_t)); - if(dsc->font == NULL) { - lv_mem_free(dsc); - return false; - } - - lv_face_info_t * face_info = NULL; - face_info = lv_mem_alloc(sizeof(lv_face_info_t) + strlen(info->name) + 1); - if(face_info == NULL) { - goto Fail; - } - face_info->name = ((char *)face_info) + sizeof(lv_face_info_t); - strcpy(face_info->name, info->name); - - dsc->face_id = face_info; - dsc->height = info->weight; - dsc->style = info->style; - - /* use to get font info */ - FT_Size face_size; - struct FTC_ScalerRec_ scaler; - scaler.face_id = (FTC_FaceID)dsc->face_id; - scaler.width = info->weight; - scaler.height = info->weight; - scaler.pixel = 1; - FT_Error error = FTC_Manager_LookupSize(cache_manager, &scaler, &face_size); - if(error) { - lv_mem_free(face_info); - LV_LOG_ERROR("Failed to LookupSize"); - goto Fail; - } - - lv_font_t * font = dsc->font; - font->dsc = dsc; - font->get_glyph_dsc = get_glyph_dsc_cb_cache; - font->get_glyph_bitmap = get_glyph_bitmap_cb_cache; - font->subpx = LV_FONT_SUBPX_NONE; - font->line_height = (face_size->face->size->metrics.height >> 6); - font->base_line = -(face_size->face->size->metrics.descender >> 6); - font->underline_position = face_size->face->underline_position; - font->underline_thickness = face_size->face->underline_thickness; - - /* return to user */ - info->font = font; - - return true; - -Fail: - lv_mem_free(dsc->font); - lv_mem_free(dsc); - return false; -} - -void lv_ft_font_destroy_cache(lv_font_t * font) -{ - if(font == NULL) { - return; - } - - lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->dsc); - if(dsc) { - lv_mem_free(dsc->face_id); - lv_mem_free(dsc->font); - lv_mem_free(dsc); - } -} - #else/* LV_USE_FT_CACHE_MANAGER */ +// extern void berry_log_C(const char * berry_buf, ...); -static FT_Face face_find_in_list(lv_ft_info_t * info) -{ - lv_face_info_t * face_info; - FT_Face * pface = _lv_ll_get_head(&face_control.face_ll); - while(pface) { - face_info = (lv_face_info_t *)(*pface)->generic.data; - if(strcmp(face_info->name, info->name) == 0) { - return *pface; - } - pface = _lv_ll_get_next(&face_control.face_ll, pface); - } - - return NULL; -} - -static void face_add_to_list(FT_Face face) -{ - FT_Face * pface; - pface = (FT_Face *)_lv_ll_ins_tail(&face_control.face_ll); - *pface = face; -} - -static void face_remove_from_list(FT_Face face) -{ - FT_Face * pface = _lv_ll_get_head(&face_control.face_ll); - while(pface) { - if(*pface == face) { - _lv_ll_remove(&face_control.face_ll, pface); - lv_mem_free(pface); - break; - } - pface = _lv_ll_get_next(&face_control.face_ll, pface); - } -} - -static void face_generic_finalizer(void * object) -{ - FT_Face face = (FT_Face)object; - face_remove_from_list(face); - if(face->generic.data) { - lv_face_info_t * face_info = (lv_face_info_t *)face->generic.data; - lv_mem_free(face_info); - } - LV_LOG_INFO("face finalizer(%p)\n", face); -} - -static bool get_glyph_dsc_cb_nocache(const lv_font_t * font, - lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) +static bool get_glyph_dsc_cb_nocache(const lv_font_t * font, + lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) { + // berry_log_C(">> get_glyph_dsc_cb_nocache %i %i", unicode_letter, unicode_letter_next); LV_UNUSED(unicode_letter_next); if(unicode_letter < 0x20) { dsc_out->adv_w = 0; @@ -352,22 +373,26 @@ static bool get_glyph_dsc_cb_nocache(const lv_font_t * font, } FT_Error error; - lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->dsc); - FT_Face face = dsc->size->face; + FT_Face face; + lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->user_data); + face = dsc->face; - FT_UInt glyph_index = FT_Get_Char_Index(face, unicode_letter); + FT_UInt glyph_index = FT_Get_Char_Index( face, unicode_letter ); - if(face->size != dsc->size) { + if (face->size != dsc->size) { + // berry_log_C(">> FT_Activate_Size %i", dsc->size); FT_Activate_Size(dsc->size); } - error = FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT); - if(error) { + error = FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT ); + // berry_log_C(">> after FT_Load_Glyph error = %i", error); + if (error){ return false; } - error = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL); - if(error) { + error = FT_Render_Glyph( face->glyph, FT_RENDER_MODE_NORMAL); + // berry_log_C(">> after FT_Render_Glyph error = %i", error); + if (error){ return false; } @@ -375,101 +400,70 @@ static bool get_glyph_dsc_cb_nocache(const lv_font_t * font, dsc_out->box_h = face->glyph->bitmap.rows; /*Height of the bitmap in [px]*/ dsc_out->box_w = face->glyph->bitmap.width; /*Width of the bitmap in [px]*/ dsc_out->ofs_x = face->glyph->bitmap_left; /*X offset of the bitmap in [pf]*/ - dsc_out->ofs_y = face->glyph->bitmap_top - - face->glyph->bitmap.rows; /*Y offset of the bitmap measured from the as line*/ + dsc_out->ofs_y = face->glyph->bitmap_top - face->glyph->bitmap.rows; /*Y offset of the bitmap measured from the as line*/ dsc_out->bpp = 8; /*Bit per pixel: 1/2/4/8*/ + // berry_log_C("+++ adv_w %i, h %i, w %i, x %i, y %i", dsc_out->adv_w, dsc_out->box_h, dsc_out->box_w, dsc_out->ofs_x, dsc_out->ofs_y); + return true; } static const uint8_t * get_glyph_bitmap_cb_nocache(const lv_font_t * font, uint32_t unicode_letter) { LV_UNUSED(unicode_letter); - lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->dsc); - FT_Face face = dsc->size->face; + lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->user_data); + FT_Face face = dsc->face; return (const uint8_t *)(face->glyph->bitmap.buffer); } -static bool lv_ft_font_init_nocache(lv_ft_info_t * info) +#endif/* LV_USE_FT_CACHE_MANAGER */ + +static bool get_glyph_dsc_cb(const lv_font_t * font, + lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) { - lv_font_fmt_ft_dsc_t * dsc = lv_mem_alloc(sizeof(lv_font_fmt_ft_dsc_t)); - if(dsc == NULL) return false; +// #if LV_USE_FT_CACHE_MANAGER +// return get_glyph_dsc_cb_cache(font, dsc_out, unicode_letter, unicode_letter_next); +// #else +// return get_glyph_dsc_cb_nocache(font, dsc_out, unicode_letter, unicode_letter_next); +// #endif + static FT_glyph_dsc_request request; + static FT_glyph_dsc_response response; - dsc->font = lv_mem_alloc(sizeof(lv_font_t)); - if(dsc->font == NULL) { - lv_mem_free(dsc); - return false; - } - - lv_face_info_t * face_info = NULL; - FT_Face face = face_find_in_list(info); - if(face == NULL) { - face_info = lv_mem_alloc(sizeof(lv_face_info_t) + strlen(info->name) + 1); - if(face_info == NULL) { - goto Fail; - } - FT_Error error = FT_New_Face(library, info->name, 0, &face); - if(error) { - lv_mem_free(face_info); - LV_LOG_WARN("create face error(%d)", error); - goto Fail; - } - - /* link face and face info */ - face_info->name = ((char *)face_info) + sizeof(lv_face_info_t); - strcpy(face_info->name, info->name); - face->generic.data = face_info; - face->generic.finalizer = face_generic_finalizer; - face_add_to_list(face); - } - else { - FT_Size size; - FT_Error error = FT_New_Size(face, &size); - if(error) { - goto Fail; - } - FT_Activate_Size(size); - FT_Reference_Face(face); - } - - FT_Set_Pixel_Sizes(face, 0, info->weight); - dsc->size = face->size; - dsc->height = info->weight; - dsc->style = info->style; - - lv_font_t * font = dsc->font; - font->dsc = dsc; - font->get_glyph_dsc = get_glyph_dsc_cb_nocache; - font->get_glyph_bitmap = get_glyph_bitmap_cb_nocache; - font->line_height = (face->size->metrics.height >> 6); - font->base_line = -(face->size->metrics.descender >> 6); - font->underline_position = face->underline_position; - font->underline_thickness = face->underline_thickness; - font->subpx = LV_FONT_SUBPX_NONE; - - info->font = font; - return true; - -Fail: - lv_mem_free(dsc->font); - lv_mem_free(dsc); - return false; -} - -static void lv_ft_font_destroy_nocache(lv_font_t * font) -{ - if(font == NULL) { - return; - } - - lv_font_fmt_ft_dsc_t * dsc = (lv_font_fmt_ft_dsc_t *)(font->dsc); - if(dsc) { - FT_Face face = dsc->size->face; - FT_Done_Size(dsc->size); - FT_Done_Face(face); - lv_mem_free(dsc->font); - lv_mem_free(dsc); + request.font = font; + request.dsc_out = dsc_out; + request.unicode_letter = unicode_letter; + request.unicode_letter_next = unicode_letter_next; + xQueueSendToBack(FTRequestQueue, &request, portMAX_DELAY); + if (xQueueReceive(FTResponseQueue, &response, portMAX_DELAY)) { + return response; + } else { + return false; // should never happen } } -#endif/* LV_USE_FT_CACHE_MANAGER */ \ No newline at end of file +static const uint8_t * get_glyph_bitmap_cb(const lv_font_t * font, uint32_t unicode_letter) +{ +#if LV_USE_FT_CACHE_MANAGER + return get_glyph_bitmap_cb_cache(font, unicode_letter); +#else + return get_glyph_bitmap_cb_nocache(font, unicode_letter); +#endif +} + +void FT_loop_task(void *pvParameters) { + (void) pvParameters; + + while (1) { + FT_glyph_dsc_request request; + FT_glyph_dsc_response response; + + if (xQueueReceive(FTRequestQueue, &request, portMAX_DELAY)) { + #if LV_USE_FT_CACHE_MANAGER + response = get_glyph_dsc_cb_cache(request.font, request.dsc_out, request.unicode_letter, request.unicode_letter_next); + #else + response = get_glyph_dsc_cb_nocache(request.font, request.dsc_out, request.unicode_letter, request.unicode_letter_next); + #endif + xQueueSendToBack(FTResponseQueue, &response, portMAX_DELAY); // send back response + } + } +} \ No newline at end of file diff --git a/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.h b/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.h index b8d147c57..1b419b99a 100644 --- a/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.h +++ b/lib/libesp32_lvgl/lv_lib_freetype/lv_freetype.h @@ -2,8 +2,8 @@ * @file lv_freetype.h * */ -#ifndef LV_FONT_FREETYPE_H -#define LV_FONT_FREETYPE_H +#ifndef _LV_FONT_TTF_H +#define _LV_FONT_TTF_H #ifdef __cplusplus extern "C" { @@ -12,16 +12,37 @@ extern "C" { /********************* * INCLUDES *********************/ +// #include "lvgl/lvgl.h" // TODO #include "lvgl.h" +#include "ft2build.h" +#include FT_FREETYPE_H +#include FT_GLYPH_H +#include FT_CACHE_H +#include FT_SIZES_H /********************* * DEFINES *********************/ -#define LV_USE_FT_CACHE_MANAGER 1 +#ifndef LV_USE_FT_CACHE_MANAGER +#define LV_USE_FT_CACHE_MANAGER 0 +#endif + +#define LV_USE_FT_STACK_SIZE 24*1024 // FreeType consumes a large amount of stack /********************** * TYPEDEFS **********************/ +typedef struct { + uint16_t cnt; + char* name; +} lv_face_info_t; + +typedef struct { + uint16_t num; + uint16_t cnt; + lv_ll_t face_ll; +} lv_faces_control_t; + typedef enum { FT_FONT_STYLE_NORMAL = 0, FT_FONT_STYLE_ITALIC = 1 << 0, @@ -29,12 +50,22 @@ typedef enum { } LV_FT_FONT_STYLE; typedef struct { - const char * name; /* The name of the font file */ - lv_font_t * font; /* point to lvgl font */ + const char* name; /* The name of the font file */ + lv_font_t* font; /* point to lvgl font */ uint16_t weight; /* font size */ uint16_t style; /* font style */ } lv_ft_info_t; +typedef struct { + FT_Face face; + FT_Size size; + lv_font_t* font; + uint16_t style; + uint16_t weight; +} lv_font_fmt_freetype_dsc_t; + +typedef lv_font_fmt_freetype_dsc_t lv_font_fmt_ft_dsc_t; + /********************** * GLOBAL PROTOTYPES **********************/ @@ -47,7 +78,7 @@ typedef struct { * Note that this value does not account for managed FT_Face and FT_Size objects. * @return true on success, otherwise false. */ -bool lv_freetype_init(uint16_t max_faces, uint16_t max_sizes, uint32_t max_bytes); +bool lv_freetype_init(FT_UInt max_faces, FT_UInt max_sizes, FT_ULong max_bytes); /** * Destroy freetype library @@ -60,13 +91,13 @@ void lv_freetype_destroy(void); * when success, lv_ft_info_t->font point to the font you created. * @return true on success, otherwise false. */ -bool lv_ft_font_init(lv_ft_info_t * info); +bool lv_ft_font_init(lv_ft_info_t *info); /** * Destroy a font that has been created. * @param font pointer to font. */ -void lv_ft_font_destroy(lv_font_t * font); +void lv_ft_font_destroy(lv_font_t* font); /********************** * MACROS @@ -76,4 +107,4 @@ void lv_ft_font_destroy(lv_font_t * font); } /* extern "C" */ #endif -#endif /* LV_FONT_FREETYPE_H */ \ No newline at end of file +#endif From 8ee3bae70d215d6521924d7eac2ff8067d09fea1 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 13 Sep 2021 13:44:39 +0200 Subject: [PATCH 188/317] Support for ESP32/ESP32S2 DAC gpio via Berry --- CHANGELOG.md | 1 + lib/libesp32/Berry/default/be_gpio_lib.c | 287 +-- lib/libesp32/Berry/generate/be_const_strtab.h | 1346 +++++------ .../Berry/generate/be_const_strtab_def.h | 1963 +++++++++-------- lib/libesp32/Berry/generate/be_fixed_gpio.h | 522 ++--- tasmota/xdrv_52_2_berry_native.ino | 14 + tasmota/xdrv_52_3_berry_gpio.ino | 76 +- 7 files changed, 2011 insertions(+), 2198 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4b83b4aa..0e29e7c10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file. - Support for ESP32S2 GPIOs - ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) - Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 +- Support for ESP32/ESP32S2 DAC gpio via Berry ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now diff --git a/lib/libesp32/Berry/default/be_gpio_lib.c b/lib/libesp32/Berry/default/be_gpio_lib.c index 045fbd23e..650360101 100644 --- a/lib/libesp32/Berry/default/be_gpio_lib.c +++ b/lib/libesp32/Berry/default/be_gpio_lib.c @@ -12,293 +12,11 @@ extern int gp_pin_mode(bvm *vm); extern int gp_digital_write(bvm *vm); extern int gp_digital_read(bvm *vm); +extern int gp_dac_voltage(bvm *vm); extern int gp_pin_used(bvm *vm); extern int gp_pin(bvm *vm); -#if !BE_USE_PRECOMPILED_OBJECT -be_native_module_attr_table(gpio) { - // HIGH/LOW - be_native_module_int("LOW", 0), - be_native_module_int("HIGH", 1), - // GPIO states - be_native_module_int("INPUT", 1), - be_native_module_int("OUTPUT", 2), - be_native_module_int("PULLUP", 4), - be_native_module_int("INPUT_PULLUP", 5), - be_native_module_int("PULLDOWN", 8), - be_native_module_int("INPUT_PULLDOWN", 9), - be_native_module_int("OPEN_DRAIN", 16), - be_native_module_int("OUTPUT_OPEN_DRAIN", 18), - // Interrupt trigger - be_native_module_int("RISING", 1), - be_native_module_int("FALLING", 2), - be_native_module_int("CHANGE", 4), - // Tasmota GPIOs - be_native_module_int("NONE", 0), - be_native_module_int("KEY1", 1), - be_native_module_int("KEY1_NP", 2), - be_native_module_int("KEY1_INV", 3), - be_native_module_int("KEY1_INV_NP", 4), - be_native_module_int("SWT1", 5), - be_native_module_int("SWT1_NP", 6), - be_native_module_int("REL1", 7), - be_native_module_int("REL1_INV", 8), - be_native_module_int("LED1", 9), - be_native_module_int("LED1_INV", 10), - be_native_module_int("CNTR1", 11), - be_native_module_int("CNTR1_NP", 12), - be_native_module_int("PWM1", 13), - be_native_module_int("PWM1_INV", 14), - be_native_module_int("BUZZER", 15), - be_native_module_int("BUZZER_INV", 16), - be_native_module_int("LEDLNK", 17), - be_native_module_int("LEDLNK_INV", 18), - be_native_module_int("I2C_SCL", 19), - be_native_module_int("I2C_SDA", 20), - be_native_module_int("SPI_MISO", 21), - be_native_module_int("SPI_MOSI", 22), - be_native_module_int("SPI_CLK", 23), - be_native_module_int("SPI_CS", 24), - be_native_module_int("SPI_DC", 25), - be_native_module_int("SSPI_MISO", 26), - be_native_module_int("SSPI_MOSI", 27), - be_native_module_int("SSPI_SCLK", 28), - be_native_module_int("SSPI_CS", 29), - be_native_module_int("SSPI_DC", 30), - be_native_module_int("BACKLIGHT", 31), - be_native_module_int("OLED_RESET", 32), - be_native_module_int("IRSEND", 33), - be_native_module_int("IRRECV", 34), - be_native_module_int("RFSEND", 35), - be_native_module_int("RFRECV", 36), - be_native_module_int("DHT11", 37), - be_native_module_int("DHT22", 38), - be_native_module_int("SI7021", 39), - be_native_module_int("DHT11_OUT", 40), - be_native_module_int("DSB", 41), - be_native_module_int("DSB_OUT", 42), - be_native_module_int("WS2812", 43), - be_native_module_int("MHZ_TXD", 44), - be_native_module_int("MHZ_RXD", 45), - be_native_module_int("PZEM0XX_TX", 46), - be_native_module_int("PZEM004_RX", 47), - be_native_module_int("PZEM016_RX", 48), - be_native_module_int("PZEM017_RX", 49), - be_native_module_int("SAIR_TX", 50), - be_native_module_int("SAIR_RX", 51), - be_native_module_int("PMS5003_TX", 52), - be_native_module_int("PMS5003_RX", 53), - be_native_module_int("SDS0X1_TX", 54), - be_native_module_int("SDS0X1_RX", 55), - be_native_module_int("SBR_TX", 56), - be_native_module_int("SBR_RX", 57), - be_native_module_int("SR04_TRIG", 58), - be_native_module_int("SR04_ECHO", 59), - be_native_module_int("SDM120_TX", 60), - be_native_module_int("SDM120_RX", 61), - be_native_module_int("SDM630_TX", 62), - be_native_module_int("SDM630_RX", 63), - be_native_module_int("TM1638CLK", 64), - be_native_module_int("TM1638DIO", 65), - be_native_module_int("TM1638STB", 66), - be_native_module_int("MP3_DFR562", 67), - be_native_module_int("HX711_SCK", 68), - be_native_module_int("HX711_DAT", 69), - be_native_module_int("TX2X_TXD_BLACK", 70), - be_native_module_int("TUYA_TX", 71), - be_native_module_int("TUYA_RX", 72), - be_native_module_int("MGC3130_XFER", 73), - be_native_module_int("MGC3130_RESET", 74), - be_native_module_int("RF_SENSOR", 75), - be_native_module_int("AZ_TXD", 76), - be_native_module_int("AZ_RXD", 77), - be_native_module_int("MAX31855CS", 78), - be_native_module_int("MAX31855CLK", 79), - be_native_module_int("MAX31855DO", 80), - be_native_module_int("NRG_SEL", 81), - be_native_module_int("NRG_SEL_INV", 82), - be_native_module_int("NRG_CF1", 83), - be_native_module_int("HLW_CF", 84), - be_native_module_int("HJL_CF", 85), - be_native_module_int("MCP39F5_TX", 86), - be_native_module_int("MCP39F5_RX", 87), - be_native_module_int("MCP39F5_RST", 88), - be_native_module_int("PN532_TXD", 89), - be_native_module_int("PN532_RXD", 90), - be_native_module_int("SM16716_CLK", 91), - be_native_module_int("SM16716_DAT", 92), - be_native_module_int("SM16716_SEL", 93), - be_native_module_int("DI", 94), - be_native_module_int("DCKI", 95), - be_native_module_int("CSE7766_TX", 96), - be_native_module_int("CSE7766_RX", 97), - be_native_module_int("ARIRFRCV", 98), - be_native_module_int("ARIRFSEL", 99), - be_native_module_int("TXD", 100), - be_native_module_int("RXD", 101), - be_native_module_int("ROT1A", 102), - be_native_module_int("ROT1B", 103), - be_native_module_int("ADC_JOY", 104), - be_native_module_int("SSPI_MAX31865_CS1", 105), - be_native_module_int("HRE_CLOCK", 106), - be_native_module_int("HRE_DATA", 107), - be_native_module_int("ADE7953_IRQ", 108), - be_native_module_int("SOLAXX1_TX", 109), - be_native_module_int("SOLAXX1_RX", 110), - be_native_module_int("ZIGBEE_TX", 111), - be_native_module_int("ZIGBEE_RX", 112), - be_native_module_int("RDM6300_RX", 113), - be_native_module_int("IBEACON_TX", 114), - be_native_module_int("IBEACON_RX", 115), - be_native_module_int("A4988_DIR", 116), - be_native_module_int("A4988_STP", 117), - be_native_module_int("A4988_ENA", 118), - be_native_module_int("A4988_MS1", 119), - be_native_module_int("OUTPUT_HI", 120), - be_native_module_int("OUTPUT_LO", 121), - be_native_module_int("DDS2382_TX", 122), - be_native_module_int("DDS2382_RX", 123), - be_native_module_int("DDSU666_TX", 124), - be_native_module_int("DDSU666_RX", 125), - be_native_module_int("SM2135_CLK", 126), - be_native_module_int("SM2135_DAT", 127), - be_native_module_int("DEEPSLEEP", 128), - be_native_module_int("EXS_ENABLE", 129), - be_native_module_int("TASMOTACLIENT_TXD", 130), - be_native_module_int("TASMOTACLIENT_RXD", 131), - be_native_module_int("TASMOTACLIENT_RST", 132), - be_native_module_int("TASMOTACLIENT_RST_INV", 133), - be_native_module_int("HPMA_RX", 134), - be_native_module_int("HPMA_TX", 135), - be_native_module_int("GPS_RX", 136), - be_native_module_int("GPS_TX", 137), - be_native_module_int("HM10_RX", 138), - be_native_module_int("HM10_TX", 139), - be_native_module_int("LE01MR_RX", 140), - be_native_module_int("LE01MR_TX", 141), - be_native_module_int("CC1101_GDO0", 142), - be_native_module_int("CC1101_GDO2", 143), - be_native_module_int("HRXL_RX", 144), - be_native_module_int("ELECTRIQ_MOODL_TX", 145), - be_native_module_int("AS3935", 146), - be_native_module_int("ADC_INPUT", 147), - be_native_module_int("ADC_TEMP", 148), - be_native_module_int("ADC_LIGHT", 149), - be_native_module_int("ADC_BUTTON", 150), - be_native_module_int("ADC_BUTTON_INV", 151), - be_native_module_int("ADC_RANGE", 152), - be_native_module_int("ADC_CT_POWER", 153), - be_native_module_int("WEBCAM_PWDN", 154), - be_native_module_int("WEBCAM_RESET", 155), - be_native_module_int("WEBCAM_XCLK", 156), - be_native_module_int("WEBCAM_SIOD", 157), - be_native_module_int("WEBCAM_SIOC", 158), - be_native_module_int("WEBCAM_DATA", 159), - be_native_module_int("WEBCAM_VSYNC", 160), - be_native_module_int("WEBCAM_HREF", 161), - be_native_module_int("WEBCAM_PCLK", 162), - be_native_module_int("WEBCAM_PSCLK", 163), - be_native_module_int("WEBCAM_HSD", 164), - be_native_module_int("WEBCAM_PSRCS", 165), - be_native_module_int("BOILER_OT_RX", 166), - be_native_module_int("BOILER_OT_TX", 167), - be_native_module_int("WINDMETER_SPEED", 168), - be_native_module_int("KEY1_TC", 169), - be_native_module_int("BL0940_RX", 170), - be_native_module_int("TCP_TX", 171), - be_native_module_int("TCP_RX", 172), - be_native_module_int("ETH_PHY_POWER", 173), - be_native_module_int("ETH_PHY_MDC", 174), - be_native_module_int("ETH_PHY_MDIO", 175), - be_native_module_int("TELEINFO_RX", 176), - be_native_module_int("TELEINFO_ENABLE", 177), - be_native_module_int("LMT01", 178), - be_native_module_int("IEM3000_TX", 179), - be_native_module_int("IEM3000_RX", 180), - be_native_module_int("ZIGBEE_RST", 181), - be_native_module_int("DYP_RX", 182), - be_native_module_int("MIEL_HVAC_TX", 183), - be_native_module_int("MIEL_HVAC_RX", 184), - be_native_module_int("WE517_TX", 185), - be_native_module_int("WE517_RX", 186), - be_native_module_int("AS608_TX", 187), - be_native_module_int("AS608_RX", 188), - be_native_module_int("SHELLY_DIMMER_BOOT0", 189), - be_native_module_int("SHELLY_DIMMER_RST_INV", 190), - be_native_module_int("RC522_RST", 191), - be_native_module_int("P9813_CLK", 192), - be_native_module_int("P9813_DAT", 193), - be_native_module_int("OPTION_A", 194), - be_native_module_int("FTC532", 195), - be_native_module_int("RC522_CS", 196), - be_native_module_int("NRF24_CS", 197), - be_native_module_int("NRF24_DC", 198), - be_native_module_int("ILI9341_CS", 199), - be_native_module_int("ILI9341_DC", 200), - be_native_module_int("ILI9488_CS", 201), - be_native_module_int("EPAPER29_CS", 202), - be_native_module_int("EPAPER42_CS", 203), - be_native_module_int("SSD1351_CS", 204), - be_native_module_int("RA8876_CS", 205), - be_native_module_int("ST7789_CS", 206), - be_native_module_int("ST7789_DC", 207), - be_native_module_int("SSD1331_CS", 208), - be_native_module_int("SSD1331_DC", 209), - be_native_module_int("SDCARD_CS", 210), - be_native_module_int("ROT1A_NP", 211), - be_native_module_int("ROT1B_NP", 212), - be_native_module_int("ADC_PH", 213), - be_native_module_int("BS814_CLK", 214), - be_native_module_int("BS814_DAT", 215), - be_native_module_int("WIEGAND_D0", 216), - be_native_module_int("WIEGAND_D1", 217), - be_native_module_int("NEOPOOL_TX", 218), - be_native_module_int("NEOPOOL_RX", 219), - be_native_module_int("SDM72_TX", 220), - be_native_module_int("SDM72_RX", 221), - be_native_module_int("TM1637CLK", 222), - be_native_module_int("TM1637DIO", 223), - be_native_module_int("PROJECTOR_CTRL_TX", 224), - be_native_module_int("PROJECTOR_CTRL_RX", 225), - be_native_module_int("SSD1351_DC", 226), - be_native_module_int("XPT2046_CS", 227), - be_native_module_int("CSE7761_TX", 228), - be_native_module_int("CSE7761_RX", 229), - be_native_module_int("VL53L0X_XSHUT1", 230), - be_native_module_int("MAX7219CLK", 231), - be_native_module_int("MAX7219DIN", 232), - be_native_module_int("MAX7219CS", 233), - be_native_module_int("TFMINIPLUS_TX", 234), - be_native_module_int("TFMINIPLUS_RX", 235), - be_native_module_int("ZEROCROSS", 236), - be_native_module_int("HALLEFFECT", 237), - be_native_module_int("EPD_DATA", 238), - be_native_module_int("INPUT", 239), - be_native_module_int("KEY1_PD", 240), - be_native_module_int("KEY1_INV_PD", 241), - be_native_module_int("SWT1_PD", 242), - be_native_module_int("I2S_OUT_DATA", 243), - be_native_module_int("I2S_OUT_CLK", 244), - be_native_module_int("I2S_OUT_SLCT", 245), - be_native_module_int("I2S_IN_DATA", 246), - be_native_module_int("I2S_IN_CLK", 247), - be_native_module_int("I2S_IN_SLCT", 248), - be_native_module_int("INTERRUPT", 249), - - be_native_module_int("SENSOR_END", 250), - - be_native_module_function("pin_mode", gp_pin_mode), - be_native_module_function("digital_write", gp_digital_write), - be_native_module_function("digital_read", gp_digital_read), - - be_native_module_function("pin_used", gp_pin_used), - be_native_module_function("pin", gp_pin), - -}; - -be_define_native_module(gpio, NULL); -#else /* @const_object_info_begin module gpio (scope: global) { LOW, int(0) @@ -312,6 +30,7 @@ module gpio (scope: global) { INPUT_PULLDOWN, int(9) OPEN_DRAIN, int(16) OUTPUT_OPEN_DRAIN, int(18) + DAC, int(-1) RISING, int(1) FALLING, int(2) @@ -573,10 +292,10 @@ module gpio (scope: global) { pin_mode, func(gp_pin_mode) digital_write, func(gp_digital_write) digital_read, func(gp_digital_read) + dac_voltage, func(gp_dac_voltage) pin_used, func(gp_pin_used) pin, func(gp_pin) } @const_object_info_end */ #include "../generate/be_fixed_gpio.h" -#endif diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 26bebb7f8..535a363f2 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,682 +1,684 @@ -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_vcall; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_strftime; extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_screenshot; extern const bcstring be_const_str_format; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_vcall; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_setbits; extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_SYMBOL_PLUS; extern const bcstring be_const_str_SYMBOL_WARNING; extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_SSD1351_CS; extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_REL1; extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_RDM6300_RX; extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_LED1_INV; extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_pin; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 91c1697fc..ae7b627a7 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1021 +1,1024 @@ -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SHELLY_DIMMER_BOOT0); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_HM10_TX); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_HPMA_RX); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_vcall); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_vcall); be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_ADE7953_IRQ); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_ADC_RANGE); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_DSB_OUT); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_NONE); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_POST); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_ETH_PHY_MDIO); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_HJL_CF); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_wire1); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_wire1); be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_AS608_TX); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_MGC3130_RESET); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_AudioFileSource); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_cb_dispatch); be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_PZEM016_RX); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_BUZZER); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DI); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, NULL); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_IBEACON_TX); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_NRF24_DC); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_OneWire); be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_WEBCAM_SIOD); be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_I2C_Driver); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_I2C_SCL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_ADC_TEMP); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OPTION_A); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_ILI9341_DC); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_HALLEFFECT); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, NULL); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_BL0940_RX); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_set_power); be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_INPUT_PULLDOWN); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, &be_const_str_setitem); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, NULL); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_KEY1_INV_NP); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_ADE7953_IRQ); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_lv_spinbox); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_CC1101_GDO2); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_DAC); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_P9813_DAT); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SDM120_TX); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_MAX31855CLK); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_INPUT_PULLUP); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SYMBOL_GPS); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_get_string); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_dac_voltage); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_lv_spinbox); be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_LEDLNK); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_BATTERY_FULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, NULL); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); static const bstring* const m_string_table[] = { - NULL, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_PULLDOWN, - NULL, - (const bstring *)&be_const_str__buffer, - NULL, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_search, - (const bstring *)&be_const_str_copy, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_false, - (const bstring *)&be_const_str_dot_p, - NULL, - (const bstring *)&be_const_str_arg, - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, - (const bstring *)&be_const_str_get_light, - (const bstring *)&be_const_str_upper, - (const bstring *)&be_const_str_GPS_TX, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_lv_font, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_ADC_JOY, (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_attrdump, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_WEBCAM_XCLK, NULL, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_lv_switch, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_reverse, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_pin_mode, + (const bstring *)&be_const_str_WEBCAM_VSYNC, + (const bstring *)&be_const_str_HLW_CF, NULL, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_ctypes_bytes, - (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, + (const bstring *)&be_const_str_remove_cmd, + (const bstring *)&be_const_str_wire, + (const bstring *)&be_const_str_lv_keyboard, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_IBEACON_RX, NULL, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_allocated, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_WEBCAM_SIOC, - (const bstring *)&be_const_str_SYMBOL_LOOP, - NULL, - NULL, - (const bstring *)&be_const_str_EPAPER42_CS, - NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_DHT11_OUT, (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_lv_page, + (const bstring *)&be_const_str_lv_btn, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_lv_arc, + (const bstring *)&be_const_str_lv_bar, + (const bstring *)&be_const_str_NRG_SEL, (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_ZIGBEE_RST, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_TX2X_TXD_BLACK, + (const bstring *)&be_const_str_publish_result, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_keys, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_REL1, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, + (const bstring *)&be_const_str_SBR_TX, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_publish, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_codedump, NULL, - (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_get_free_heap, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_elif, + NULL, + (const bstring *)&be_const_str_SSPI_MOSI, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_SYMBOL_OK, + NULL, + NULL, + (const bstring *)&be_const_str_AudioGeneratorMP3, NULL, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_KEY1_PD, (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_lv_draw_rect_dsc, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_find, + NULL, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_SYMBOL_TRASH, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_NRG_SEL_INV, (const bstring *)&be_const_str_DHT22, NULL, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_issubclass, + (const bstring *)&be_const_str_OPTION_A, NULL, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_list, - (const bstring *)&be_const_str_BS814_CLK, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_close, - (const bstring *)&be_const_str_deinit, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_lv_sqrt_res, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_MHZ_RXD, - NULL, - (const bstring *)&be_const_str_WE517_RX, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_setrange, - (const bstring *)&be_const_str_atan2, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_lv_group_focus_cb, - (const bstring *)&be_const_str_static, - NULL, - (const bstring *)&be_const_str_remove, - (const bstring *)&be_const_str_bytes, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_opt_connect, - NULL, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_TXD, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_ARIRFSEL, - NULL, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_var, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_opt_neq, - NULL, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_ARIRFRCV, - NULL, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_MAX31855CLK, - NULL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_WIEGAND_D1, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - NULL, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_BACKLIGHT, - NULL, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_iter, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_cb_dispatch, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_OLED_RESET, - NULL, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_CSE7761_TX, - NULL, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_TM1638CLK, - NULL, - NULL, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_public_key, - (const bstring *)&be_const_str_strftime, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_TM1638STB, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_GET, - NULL, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_millis, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_try_rule, - NULL, - (const bstring *)&be_const_str_LED1_INV, (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_DSB, - NULL, - (const bstring *)&be_const_str__timers, - NULL, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_load_font, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_add_header, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_cos, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_isinstance, - NULL, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_pi, - (const bstring *)&be_const_str_BOILER_OT_TX, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - NULL, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - NULL, - (const bstring *)&be_const_str_reset, - (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_time_reached, + (const bstring *)&be_const_str_OUTPUT_LO, (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_SPI_CS, NULL, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_lv_draw_mask_radius_param, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_XPT2046_CS, + (const bstring *)&be_const_str_byte, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_lv_draw_mask_common_dsc, + (const bstring *)&be_const_str_count, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_concat, + (const bstring *)&be_const_str_SYMBOL_POWER, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_A4988_MS1, NULL, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_toint, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_lv_dropdown, + (const bstring *)&be_const_str_map, + (const bstring *)&be_const_str_import, + (const bstring *)&be_const_str_sqrt, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_SWT1_PD, NULL, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_setmember, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_addr, - (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_setitem, + (const bstring *)&be_const_str_WEBCAM_PWDN, + NULL, + NULL, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_get_light, + (const bstring *)&be_const_str__drivers, + NULL, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_SYMBOL_REFRESH, + (const bstring *)&be_const_str_opt_eq, NULL, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_CNTR1, (const bstring *)&be_const_str_KEY1_NP, NULL, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str_CNTR1_NP, NULL, - (const bstring *)&be_const_str_asin, - (const bstring *)&be_const_str_lv_slider, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_set_power, - (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_bytes, + (const bstring *)&be_const_str_opt_neq, NULL, - (const bstring *)&be_const_str_SYMBOL_WARNING, + (const bstring *)&be_const_str_SSD1351_DC, + (const bstring *)&be_const_str_MGC3130_RESET, NULL, - (const bstring *)&be_const_str_decrypt, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_SM16716_CLK, + NULL, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_break, + NULL, + (const bstring *)&be_const_str_on, + (const bstring *)&be_const_str_SYMBOL_LOOP, (const bstring *)&be_const_str_FTC532, - NULL, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_AS3935, (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_lv_msgbox, + (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_add_driver, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_wire2, + (const bstring *)&be_const_str__get_cb, + (const bstring *)&be_const_str_HPMA_RX, NULL, - (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_RXD + (const bstring *)&be_const_str_SSD1331_DC, + NULL, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_find_op, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_fromstring, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_ZIGBEE_RX, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_acos, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_content_start, + (const bstring *)&be_const_str_ctypes_bytes, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_opt_call, + NULL, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_target_search, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_DHT11, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_LE01MR_TX, + NULL, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_lv_design_cb, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_SYMBOL_WIFI, + (const bstring *)&be_const_str_strftime, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_lv_spinner, + NULL, + (const bstring *)&be_const_str_lv_draw_mask_saved, + (const bstring *)&be_const_str_insert, + (const bstring *)&be_const_str_TM1638STB, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + NULL, + (const bstring *)&be_const_str_content_button, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_A4988_STP, + NULL, + (const bstring *)&be_const_str_lv_sqrt_res, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_SYMBOL_VIDEO, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str___iterator__, + NULL, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_try, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_KEY1, + NULL, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_TM1638CLK, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + NULL, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_ST7789_DC, + NULL, + (const bstring *)&be_const_str_compile }; static const struct bconststrtab m_const_string_table = { - .size = 330, - .count = 660, + .size = 331, + .count = 662, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_gpio.h b/lib/libesp32/Berry/generate/be_fixed_gpio.h index 8638ff65e..891d18896 100644 --- a/lib/libesp32/Berry/generate/be_fixed_gpio.h +++ b/lib/libesp32/Berry/generate/be_fixed_gpio.h @@ -1,279 +1,281 @@ #include "be_constobj.h" static be_define_const_map_slots(m_libgpio_map) { - { be_const_key(ADC_BUTTON, -1), be_const_int(150) }, - { be_const_key(ZIGBEE_RST, -1), be_const_int(181) }, - { be_const_key(SPI_CLK, 231), be_const_int(23) }, - { be_const_key(MHZ_RXD, -1), be_const_int(45) }, - { be_const_key(SDM72_RX, -1), be_const_int(221) }, - { be_const_key(A4988_MS1, -1), be_const_int(119) }, - { be_const_key(DEEPSLEEP, -1), be_const_int(128) }, - { be_const_key(WIEGAND_D1, 192), be_const_int(217) }, - { be_const_key(WEBCAM_HSD, -1), be_const_int(164) }, - { be_const_key(TM1637DIO, -1), be_const_int(223) }, - { be_const_key(KEY1_INV_NP, 252), be_const_int(4) }, - { be_const_key(IBEACON_RX, -1), be_const_int(115) }, - { be_const_key(OUTPUT_LO, 243), be_const_int(121) }, - { be_const_key(RISING, 87), be_const_int(1) }, - { be_const_key(WEBCAM_PWDN, 10), be_const_int(154) }, - { be_const_key(BOILER_OT_TX, 32), be_const_int(167) }, - { be_const_key(CNTR1_NP, -1), be_const_int(12) }, - { be_const_key(MAX7219DIN, -1), be_const_int(232) }, - { be_const_key(I2C_SDA, 42), be_const_int(20) }, - { be_const_key(DCKI, 188), be_const_int(95) }, - { be_const_key(I2S_IN_CLK, -1), be_const_int(247) }, - { be_const_key(CHANGE, -1), be_const_int(4) }, - { be_const_key(pin_used, -1), be_const_func(gp_pin_used) }, - { be_const_key(HALLEFFECT, -1), be_const_int(237) }, - { be_const_key(ADC_TEMP, 112), be_const_int(148) }, - { be_const_key(SSPI_MOSI, 254), be_const_int(27) }, - { be_const_key(TASMOTACLIENT_RST, -1), be_const_int(132) }, - { be_const_key(ZIGBEE_RX, -1), be_const_int(112) }, - { be_const_key(ROT1B_NP, 107), be_const_int(212) }, - { be_const_key(SSD1351_CS, 149), be_const_int(204) }, - { be_const_key(MAX7219CLK, -1), be_const_int(231) }, - { be_const_key(SSD1331_DC, -1), be_const_int(209) }, - { be_const_key(SR04_TRIG, -1), be_const_int(58) }, - { be_const_key(TCP_RX, 187), be_const_int(172) }, - { be_const_key(SM16716_DAT, 91), be_const_int(92) }, - { be_const_key(OLED_RESET, 264), be_const_int(32) }, - { be_const_key(RDM6300_RX, -1), be_const_int(113) }, - { be_const_key(LOW, -1), be_const_int(0) }, - { be_const_key(ADC_BUTTON_INV, 79), be_const_int(151) }, - { be_const_key(SM16716_CLK, 76), be_const_int(91) }, - { be_const_key(SSPI_DC, -1), be_const_int(30) }, - { be_const_key(TFMINIPLUS_RX, -1), be_const_int(235) }, - { be_const_key(TM1638CLK, -1), be_const_int(64) }, - { be_const_key(BL0940_RX, -1), be_const_int(170) }, - { be_const_key(WEBCAM_PSCLK, -1), be_const_int(163) }, - { be_const_key(RFRECV, -1), be_const_int(36) }, - { be_const_key(GPS_RX, 124), be_const_int(136) }, - { be_const_key(DSB_OUT, -1), be_const_int(42) }, - { be_const_key(HPMA_TX, -1), be_const_int(135) }, - { be_const_key(SHELLY_DIMMER_RST_INV, -1), be_const_int(190) }, - { be_const_key(SDM72_TX, -1), be_const_int(220) }, - { be_const_key(HJL_CF, -1), be_const_int(85) }, - { be_const_key(IEM3000_RX, 24), be_const_int(180) }, - { be_const_key(KEY1_NP, -1), be_const_int(2) }, - { be_const_key(DDS2382_RX, -1), be_const_int(123) }, - { be_const_key(INPUT_PULLDOWN, -1), be_const_int(9) }, - { be_const_key(SSPI_MISO, -1), be_const_int(26) }, - { be_const_key(DDS2382_TX, -1), be_const_int(122) }, - { be_const_key(SDM630_RX, -1), be_const_int(63) }, - { be_const_key(SDS0X1_TX, 63), be_const_int(54) }, - { be_const_key(HPMA_RX, -1), be_const_int(134) }, - { be_const_key(DYP_RX, -1), be_const_int(182) }, - { be_const_key(NRG_CF1, 138), be_const_int(83) }, - { be_const_key(REL1_INV, 169), be_const_int(8) }, - { be_const_key(MCP39F5_RST, 131), be_const_int(88) }, - { be_const_key(I2S_OUT_SLCT, 170), be_const_int(245) }, - { be_const_key(ADE7953_IRQ, -1), be_const_int(108) }, - { be_const_key(REL1, -1), be_const_int(7) }, - { be_const_key(SOLAXX1_TX, 154), be_const_int(109) }, - { be_const_key(CSE7766_RX, -1), be_const_int(97) }, - { be_const_key(PROJECTOR_CTRL_TX, 29), be_const_int(224) }, - { be_const_key(PULLUP, -1), be_const_int(4) }, - { be_const_key(SPI_DC, 90), be_const_int(25) }, - { be_const_key(IBEACON_TX, -1), be_const_int(114) }, - { be_const_key(IEM3000_TX, 157), be_const_int(179) }, - { be_const_key(WEBCAM_PSRCS, -1), be_const_int(165) }, - { be_const_key(ELECTRIQ_MOODL_TX, -1), be_const_int(145) }, - { be_const_key(LED1_INV, -1), be_const_int(10) }, - { be_const_key(TASMOTACLIENT_RXD, 109), be_const_int(131) }, - { be_const_key(PN532_RXD, -1), be_const_int(90) }, - { be_const_key(ROT1A, 197), be_const_int(102) }, + { be_const_key(SENSOR_END, 167), be_const_int(250) }, + { be_const_key(DHT11_OUT, -1), be_const_int(40) }, + { be_const_key(HM10_TX, 199), be_const_int(139) }, + { be_const_key(DHT22, 6), be_const_int(38) }, + { be_const_key(ARIRFRCV, 226), be_const_int(98) }, + { be_const_key(WEBCAM_HREF, 183), be_const_int(161) }, + { be_const_key(SM16716_CLK, 168), be_const_int(91) }, + { be_const_key(ZIGBEE_RST, 264), be_const_int(181) }, + { be_const_key(KEY1_INV_NP, 223), be_const_int(4) }, + { be_const_key(KEY1_TC, 81), be_const_int(169) }, { be_const_key(PROJECTOR_CTRL_RX, -1), be_const_int(225) }, - { be_const_key(EPAPER29_CS, -1), be_const_int(202) }, - { be_const_key(VL53L0X_XSHUT1, -1), be_const_int(230) }, - { be_const_key(DDSU666_RX, 22), be_const_int(125) }, - { be_const_key(SSPI_CS, -1), be_const_int(29) }, - { be_const_key(BACKLIGHT, 60), be_const_int(31) }, - { be_const_key(CC1101_GDO0, 225), be_const_int(142) }, - { be_const_key(INTERRUPT, -1), be_const_int(249) }, - { be_const_key(MP3_DFR562, -1), be_const_int(67) }, - { be_const_key(ROT1A_NP, -1), be_const_int(211) }, - { be_const_key(PZEM017_RX, -1), be_const_int(49) }, - { be_const_key(RC522_CS, 81), be_const_int(196) }, - { be_const_key(TASMOTACLIENT_RST_INV, -1), be_const_int(133) }, - { be_const_key(ETH_PHY_MDIO, -1), be_const_int(175) }, - { be_const_key(WE517_RX, -1), be_const_int(186) }, - { be_const_key(LMT01, -1), be_const_int(178) }, - { be_const_key(ILI9488_CS, -1), be_const_int(201) }, - { be_const_key(I2C_SCL, 0), be_const_int(19) }, - { be_const_key(TM1638STB, -1), be_const_int(66) }, - { be_const_key(ETH_PHY_MDC, -1), be_const_int(174) }, - { be_const_key(WE517_TX, 96), be_const_int(185) }, - { be_const_key(IRSEND, -1), be_const_int(33) }, - { be_const_key(I2S_OUT_CLK, -1), be_const_int(244) }, - { be_const_key(SPI_CS, -1), be_const_int(24) }, - { be_const_key(SWT1, -1), be_const_int(5) }, - { be_const_key(HM10_RX, -1), be_const_int(138) }, - { be_const_key(WEBCAM_HREF, -1), be_const_int(161) }, - { be_const_key(OPEN_DRAIN, -1), be_const_int(16) }, - { be_const_key(AS608_TX, -1), be_const_int(187) }, - { be_const_key(SSPI_SCLK, -1), be_const_int(28) }, - { be_const_key(A4988_DIR, -1), be_const_int(116) }, - { be_const_key(SHELLY_DIMMER_BOOT0, -1), be_const_int(189) }, - { be_const_key(I2S_OUT_DATA, -1), be_const_int(243) }, - { be_const_key(MIEL_HVAC_TX, -1), be_const_int(183) }, - { be_const_key(WEBCAM_SIOC, 41), be_const_int(158) }, - { be_const_key(RF_SENSOR, 57), be_const_int(75) }, - { be_const_key(AZ_TXD, -1), be_const_int(76) }, - { be_const_key(A4988_ENA, -1), be_const_int(118) }, - { be_const_key(DHT22, -1), be_const_int(38) }, - { be_const_key(TASMOTACLIENT_TXD, -1), be_const_int(130) }, - { be_const_key(TELEINFO_ENABLE, 62), be_const_int(177) }, - { be_const_key(NRF24_CS, -1), be_const_int(197) }, - { be_const_key(HRE_CLOCK, -1), be_const_int(106) }, - { be_const_key(NEOPOOL_RX, 158), be_const_int(219) }, - { be_const_key(HIGH, 237), be_const_int(1) }, - { be_const_key(HLW_CF, 53), be_const_int(84) }, - { be_const_key(AZ_RXD, -1), be_const_int(77) }, - { be_const_key(HM10_TX, 167), be_const_int(139) }, - { be_const_key(LEDLNK, 155), be_const_int(17) }, - { be_const_key(PWM1, -1), be_const_int(13) }, - { be_const_key(BS814_CLK, -1), be_const_int(214) }, - { be_const_key(TFMINIPLUS_TX, 99), be_const_int(234) }, - { be_const_key(WEBCAM_PCLK, -1), be_const_int(162) }, - { be_const_key(DSB, -1), be_const_int(41) }, - { be_const_key(NONE, -1), be_const_int(0) }, - { be_const_key(pin, 19), be_const_func(gp_pin) }, - { be_const_key(PN532_TXD, -1), be_const_int(89) }, - { be_const_key(SENSOR_END, 222), be_const_int(250) }, - { be_const_key(SM2135_CLK, -1), be_const_int(126) }, - { be_const_key(TX2X_TXD_BLACK, -1), be_const_int(70) }, - { be_const_key(ZEROCROSS, -1), be_const_int(236) }, - { be_const_key(ADC_INPUT, -1), be_const_int(147) }, - { be_const_key(RC522_RST, -1), be_const_int(191) }, + { be_const_key(TFMINIPLUS_RX, -1), be_const_int(235) }, { be_const_key(SSD1331_CS, -1), be_const_int(208) }, - { be_const_key(BS814_DAT, -1), be_const_int(215) }, - { be_const_key(PULLDOWN, -1), be_const_int(8) }, - { be_const_key(I2S_IN_SLCT, 105), be_const_int(248) }, - { be_const_key(OPTION_A, -1), be_const_int(194) }, + { be_const_key(MP3_DFR562, 162), be_const_int(67) }, + { be_const_key(WEBCAM_VSYNC, 140), be_const_int(160) }, + { be_const_key(CNTR1, 246), be_const_int(11) }, + { be_const_key(ROT1B_NP, -1), be_const_int(212) }, + { be_const_key(ELECTRIQ_MOODL_TX, -1), be_const_int(145) }, + { be_const_key(TASMOTACLIENT_RXD, -1), be_const_int(131) }, + { be_const_key(NONE, -1), be_const_int(0) }, + { be_const_key(RF_SENSOR, -1), be_const_int(75) }, + { be_const_key(MAX31855CS, -1), be_const_int(78) }, + { be_const_key(SPI_MOSI, 233), be_const_int(22) }, + { be_const_key(I2S_OUT_DATA, -1), be_const_int(243) }, + { be_const_key(HPMA_TX, 108), be_const_int(135) }, + { be_const_key(TASMOTACLIENT_RST_INV, 156), be_const_int(133) }, + { be_const_key(IEM3000_RX, -1), be_const_int(180) }, + { be_const_key(BS814_DAT, 196), be_const_int(215) }, + { be_const_key(OUTPUT_LO, -1), be_const_int(121) }, + { be_const_key(SSD1351_CS, 236), be_const_int(204) }, + { be_const_key(TM1637DIO, -1), be_const_int(223) }, + { be_const_key(INTERRUPT, 240), be_const_int(249) }, + { be_const_key(PN532_RXD, 195), be_const_int(90) }, + { be_const_key(SM2135_CLK, -1), be_const_int(126) }, { be_const_key(DI, -1), be_const_int(94) }, - { be_const_key(PZEM004_RX, -1), be_const_int(47) }, - { be_const_key(SDCARD_CS, -1), be_const_int(210) }, - { be_const_key(ZIGBEE_TX, 94), be_const_int(111) }, - { be_const_key(ST7789_DC, 50), be_const_int(207) }, - { be_const_key(P9813_DAT, 214), be_const_int(193) }, - { be_const_key(EXS_ENABLE, 56), be_const_int(129) }, - { be_const_key(SSPI_MAX31865_CS1, 147), be_const_int(105) }, - { be_const_key(PMS5003_RX, -1), be_const_int(53) }, - { be_const_key(pin_mode, -1), be_const_func(gp_pin_mode) }, - { be_const_key(SAIR_TX, 4), be_const_int(50) }, - { be_const_key(CSE7761_RX, 102), be_const_int(229) }, - { be_const_key(SBR_RX, 47), be_const_int(57) }, - { be_const_key(SOLAXX1_RX, -1), be_const_int(110) }, - { be_const_key(KEY1, 5), be_const_int(1) }, - { be_const_key(GPS_TX, 227), be_const_int(137) }, - { be_const_key(EPD_DATA, -1), be_const_int(238) }, - { be_const_key(WS2812, -1), be_const_int(43) }, - { be_const_key(PZEM0XX_TX, -1), be_const_int(46) }, - { be_const_key(WINDMETER_SPEED, -1), be_const_int(168) }, - { be_const_key(TUYA_RX, 199), be_const_int(72) }, - { be_const_key(NRG_SEL, -1), be_const_int(81) }, - { be_const_key(PZEM016_RX, 13), be_const_int(48) }, - { be_const_key(KEY1_PD, -1), be_const_int(240) }, - { be_const_key(LE01MR_RX, -1), be_const_int(140) }, - { be_const_key(ADC_PH, -1), be_const_int(213) }, - { be_const_key(SDM120_TX, -1), be_const_int(60) }, - { be_const_key(HX711_DAT, -1), be_const_int(69) }, - { be_const_key(CNTR1, 132), be_const_int(11) }, - { be_const_key(PWM1_INV, 184), be_const_int(14) }, - { be_const_key(RFSEND, 182), be_const_int(35) }, - { be_const_key(RXD, 194), be_const_int(101) }, - { be_const_key(SDM120_RX, -1), be_const_int(61) }, - { be_const_key(SWT1_NP, -1), be_const_int(6) }, + { be_const_key(TM1638CLK, 87), be_const_int(64) }, + { be_const_key(DSB_OUT, 65), be_const_int(42) }, + { be_const_key(I2S_OUT_SLCT, -1), be_const_int(245) }, + { be_const_key(RDM6300_RX, -1), be_const_int(113) }, + { be_const_key(TUYA_RX, 59), be_const_int(72) }, + { be_const_key(WIEGAND_D1, -1), be_const_int(217) }, + { be_const_key(EPAPER42_CS, 133), be_const_int(203) }, + { be_const_key(INPUT_PULLDOWN, -1), be_const_int(9) }, + { be_const_key(A4988_DIR, 75), be_const_int(116) }, + { be_const_key(NEOPOOL_RX, -1), be_const_int(219) }, + { be_const_key(PZEM016_RX, 36), be_const_int(48) }, + { be_const_key(digital_write, 225), be_const_func(gp_digital_write) }, + { be_const_key(NRG_CF1, -1), be_const_int(83) }, + { be_const_key(FTC532, -1), be_const_int(195) }, + { be_const_key(DDS2382_TX, -1), be_const_int(122) }, + { be_const_key(WEBCAM_RESET, 230), be_const_int(155) }, + { be_const_key(TELEINFO_ENABLE, 42), be_const_int(177) }, + { be_const_key(IRRECV, 89), be_const_int(34) }, + { be_const_key(SDM120_RX, 148), be_const_int(61) }, + { be_const_key(PMS5003_TX, -1), be_const_int(52) }, + { be_const_key(CC1101_GDO2, -1), be_const_int(143) }, + { be_const_key(HPMA_RX, 238), be_const_int(134) }, + { be_const_key(MAX7219CS, -1), be_const_int(233) }, + { be_const_key(CSE7766_RX, 46), be_const_int(97) }, + { be_const_key(RISING, 103), be_const_int(1) }, + { be_const_key(SPI_MISO, -1), be_const_int(21) }, + { be_const_key(RFRECV, -1), be_const_int(36) }, + { be_const_key(SHELLY_DIMMER_RST_INV, 228), be_const_int(190) }, + { be_const_key(TASMOTACLIENT_RST, -1), be_const_int(132) }, + { be_const_key(PULLDOWN, 189), be_const_int(8) }, + { be_const_key(SSPI_CS, -1), be_const_int(29) }, + { be_const_key(TUYA_TX, -1), be_const_int(71) }, + { be_const_key(LED1_INV, 0), be_const_int(10) }, + { be_const_key(digital_read, -1), be_const_func(gp_digital_read) }, + { be_const_key(CSE7766_TX, 215), be_const_int(96) }, + { be_const_key(DCKI, -1), be_const_int(95) }, + { be_const_key(ILI9341_CS, -1), be_const_int(199) }, + { be_const_key(pin_used, -1), be_const_func(gp_pin_used) }, + { be_const_key(ADC_RANGE, 237), be_const_int(152) }, + { be_const_key(PZEM0XX_TX, 31), be_const_int(46) }, + { be_const_key(ROT1A_NP, -1), be_const_int(211) }, + { be_const_key(ROT1A, 202), be_const_int(102) }, + { be_const_key(HALLEFFECT, -1), be_const_int(237) }, + { be_const_key(OPEN_DRAIN, -1), be_const_int(16) }, + { be_const_key(TM1638DIO, 220), be_const_int(65) }, + { be_const_key(IEM3000_TX, -1), be_const_int(179) }, + { be_const_key(MAX7219DIN, 118), be_const_int(232) }, + { be_const_key(A4988_ENA, -1), be_const_int(118) }, + { be_const_key(MHZ_TXD, 23), be_const_int(44) }, + { be_const_key(WEBCAM_PWDN, -1), be_const_int(154) }, + { be_const_key(SDS0X1_RX, -1), be_const_int(55) }, + { be_const_key(SPI_CS, -1), be_const_int(24) }, + { be_const_key(BS814_CLK, -1), be_const_int(214) }, + { be_const_key(CSE7761_RX, -1), be_const_int(229) }, + { be_const_key(ADC_JOY, -1), be_const_int(104) }, + { be_const_key(OPTION_A, 171), be_const_int(194) }, + { be_const_key(RFSEND, -1), be_const_int(35) }, + { be_const_key(HRE_DATA, 135), be_const_int(107) }, + { be_const_key(BOILER_OT_TX, 221), be_const_int(167) }, + { be_const_key(ETH_PHY_MDC, 30), be_const_int(174) }, + { be_const_key(LED1, 11), be_const_int(9) }, + { be_const_key(DDSU666_RX, 64), be_const_int(125) }, { be_const_key(MAX31855CLK, -1), be_const_int(79) }, + { be_const_key(RA8876_CS, -1), be_const_int(205) }, + { be_const_key(AZ_TXD, -1), be_const_int(76) }, + { be_const_key(SBR_TX, -1), be_const_int(56) }, + { be_const_key(REL1_INV, 212), be_const_int(8) }, + { be_const_key(CC1101_GDO0, -1), be_const_int(142) }, + { be_const_key(AZ_RXD, 149), be_const_int(77) }, + { be_const_key(EPAPER29_CS, 229), be_const_int(202) }, + { be_const_key(P9813_DAT, 177), be_const_int(193) }, + { be_const_key(PWM1, -1), be_const_int(13) }, + { be_const_key(INPUT, -1), be_const_int(239) }, + { be_const_key(PN532_TXD, -1), be_const_int(89) }, + { be_const_key(I2S_IN_DATA, -1), be_const_int(246) }, + { be_const_key(SOLAXX1_TX, -1), be_const_int(109) }, + { be_const_key(LEDLNK_INV, 208), be_const_int(18) }, + { be_const_key(ADC_LIGHT, -1), be_const_int(149) }, + { be_const_key(SDS0X1_TX, 92), be_const_int(54) }, + { be_const_key(ADC_PH, 1), be_const_int(213) }, + { be_const_key(WEBCAM_XCLK, 267), be_const_int(156) }, + { be_const_key(ADC_BUTTON_INV, -1), be_const_int(151) }, + { be_const_key(IBEACON_TX, 13), be_const_int(114) }, + { be_const_key(SWT1_NP, -1), be_const_int(6) }, + { be_const_key(SDCARD_CS, 62), be_const_int(210) }, + { be_const_key(KEY1_PD, -1), be_const_int(240) }, + { be_const_key(BUZZER, 69), be_const_int(15) }, + { be_const_key(SM2135_DAT, -1), be_const_int(127) }, + { be_const_key(CNTR1_NP, -1), be_const_int(12) }, + { be_const_key(NRF24_CS, 49), be_const_int(197) }, + { be_const_key(DYP_RX, -1), be_const_int(182) }, + { be_const_key(IRSEND, -1), be_const_int(33) }, + { be_const_key(WEBCAM_SIOC, 258), be_const_int(158) }, + { be_const_key(MAX7219CLK, 56), be_const_int(231) }, + { be_const_key(WIEGAND_D0, 165), be_const_int(216) }, + { be_const_key(ZIGBEE_RX, -1), be_const_int(112) }, + { be_const_key(CHANGE, 33), be_const_int(4) }, + { be_const_key(AS608_RX, -1), be_const_int(188) }, + { be_const_key(TCP_RX, -1), be_const_int(172) }, + { be_const_key(PZEM017_RX, -1), be_const_int(49) }, + { be_const_key(NRF24_DC, -1), be_const_int(198) }, + { be_const_key(BACKLIGHT, 35), be_const_int(31) }, + { be_const_key(SSPI_MOSI, -1), be_const_int(27) }, + { be_const_key(MAX31855DO, -1), be_const_int(80) }, + { be_const_key(LE01MR_RX, -1), be_const_int(140) }, + { be_const_key(I2S_IN_SLCT, -1), be_const_int(248) }, + { be_const_key(ETH_PHY_POWER, -1), be_const_int(173) }, + { be_const_key(ADE7953_IRQ, 29), be_const_int(108) }, + { be_const_key(SSPI_MISO, -1), be_const_int(26) }, + { be_const_key(WINDMETER_SPEED, 79), be_const_int(168) }, + { be_const_key(IBEACON_RX, -1), be_const_int(115) }, + { be_const_key(TX2X_TXD_BLACK, 8), be_const_int(70) }, + { be_const_key(TM1637CLK, 102), be_const_int(222) }, + { be_const_key(KEY1_INV, -1), be_const_int(3) }, + { be_const_key(BOILER_OT_RX, -1), be_const_int(166) }, { be_const_key(DDSU666_TX, -1), be_const_int(124) }, - { be_const_key(MHZ_TXD, -1), be_const_int(44) }, - { be_const_key(OUTPUT_HI, -1), be_const_int(120) }, + { be_const_key(WEBCAM_DATA, -1), be_const_int(159) }, + { be_const_key(DDS2382_RX, -1), be_const_int(123) }, + { be_const_key(EXS_ENABLE, 53), be_const_int(129) }, + { be_const_key(AS608_TX, -1), be_const_int(187) }, + { be_const_key(OLED_RESET, 100), be_const_int(32) }, + { be_const_key(AS3935, -1), be_const_int(146) }, + { be_const_key(LMT01, -1), be_const_int(178) }, + { be_const_key(ADC_INPUT, -1), be_const_int(147) }, + { be_const_key(SDM72_TX, 235), be_const_int(220) }, + { be_const_key(ADC_TEMP, -1), be_const_int(148) }, + { be_const_key(LEDLNK, 7), be_const_int(17) }, + { be_const_key(DAC, -1), be_const_int(-1) }, + { be_const_key(SAIR_RX, -1), be_const_int(51) }, + { be_const_key(SOLAXX1_RX, -1), be_const_int(110) }, + { be_const_key(WEBCAM_PCLK, -1), be_const_int(162) }, + { be_const_key(KEY1_NP, 14), be_const_int(2) }, + { be_const_key(TFMINIPLUS_TX, -1), be_const_int(234) }, + { be_const_key(SR04_TRIG, -1), be_const_int(58) }, + { be_const_key(A4988_STP, 182), be_const_int(117) }, + { be_const_key(TASMOTACLIENT_TXD, -1), be_const_int(130) }, + { be_const_key(HX711_DAT, 207), be_const_int(69) }, + { be_const_key(HM10_RX, -1), be_const_int(138) }, + { be_const_key(ARIRFSEL, 249), be_const_int(99) }, + { be_const_key(MIEL_HVAC_TX, 141), be_const_int(183) }, + { be_const_key(NRG_SEL, -1), be_const_int(81) }, + { be_const_key(DEEPSLEEP, 132), be_const_int(128) }, + { be_const_key(CSE7761_TX, -1), be_const_int(228) }, + { be_const_key(WS2812, 18), be_const_int(43) }, + { be_const_key(WE517_RX, 188), be_const_int(186) }, + { be_const_key(PROJECTOR_CTRL_TX, -1), be_const_int(224) }, + { be_const_key(SI7021, 242), be_const_int(39) }, { be_const_key(SM16716_SEL, -1), be_const_int(93) }, { be_const_key(KEY1_INV_PD, -1), be_const_int(241) }, - { be_const_key(BOILER_OT_RX, 9), be_const_int(166) }, - { be_const_key(WEBCAM_SIOD, 78), be_const_int(157) }, - { be_const_key(SI7021, -1), be_const_int(39) }, - { be_const_key(MIEL_HVAC_RX, -1), be_const_int(184) }, - { be_const_key(P9813_CLK, -1), be_const_int(192) }, - { be_const_key(NRG_SEL_INV, 232), be_const_int(82) }, - { be_const_key(INPUT, 85), be_const_int(239) }, - { be_const_key(AS608_RX, -1), be_const_int(188) }, - { be_const_key(SR04_ECHO, -1), be_const_int(59) }, - { be_const_key(CSE7761_TX, -1), be_const_int(228) }, - { be_const_key(digital_write, -1), be_const_func(gp_digital_write) }, - { be_const_key(MAX31855DO, -1), be_const_int(80) }, - { be_const_key(CC1101_GDO2, -1), be_const_int(143) }, - { be_const_key(ETH_PHY_POWER, -1), be_const_int(173) }, - { be_const_key(ILI9341_CS, -1), be_const_int(199) }, + { be_const_key(SPI_CLK, -1), be_const_int(23) }, + { be_const_key(ZEROCROSS, -1), be_const_int(236) }, { be_const_key(OUTPUT_OPEN_DRAIN, -1), be_const_int(18) }, - { be_const_key(TM1637CLK, -1), be_const_int(222) }, - { be_const_key(SPI_MISO, 176), be_const_int(21) }, - { be_const_key(KEY1_INV, -1), be_const_int(3) }, - { be_const_key(PMS5003_TX, 75), be_const_int(52) }, - { be_const_key(A4988_STP, -1), be_const_int(117) }, - { be_const_key(WEBCAM_VSYNC, -1), be_const_int(160) }, - { be_const_key(SWT1_PD, -1), be_const_int(242) }, - { be_const_key(AS3935, -1), be_const_int(146) }, - { be_const_key(CSE7766_TX, 100), be_const_int(96) }, - { be_const_key(NEOPOOL_TX, 148), be_const_int(218) }, - { be_const_key(ADC_RANGE, 72), be_const_int(152) }, - { be_const_key(ILI9341_DC, -1), be_const_int(200) }, - { be_const_key(DHT11, -1), be_const_int(37) }, - { be_const_key(SM2135_DAT, 238), be_const_int(127) }, - { be_const_key(MCP39F5_RX, 211), be_const_int(87) }, - { be_const_key(HX711_SCK, 7), be_const_int(68) }, - { be_const_key(SAIR_RX, -1), be_const_int(51) }, - { be_const_key(SDS0X1_RX, -1), be_const_int(55) }, - { be_const_key(ARIRFSEL, 266), be_const_int(99) }, - { be_const_key(WEBCAM_RESET, -1), be_const_int(155) }, - { be_const_key(BUZZER_INV, -1), be_const_int(16) }, - { be_const_key(DHT11_OUT, -1), be_const_int(40) }, - { be_const_key(FALLING, -1), be_const_int(2) }, - { be_const_key(MAX7219CS, -1), be_const_int(233) }, - { be_const_key(ARIRFRCV, -1), be_const_int(98) }, - { be_const_key(ADC_CT_POWER, -1), be_const_int(153) }, - { be_const_key(HRXL_RX, -1), be_const_int(144) }, - { be_const_key(WEBCAM_DATA, 58), be_const_int(159) }, - { be_const_key(TUYA_TX, -1), be_const_int(71) }, - { be_const_key(SPI_MOSI, -1), be_const_int(22) }, - { be_const_key(WIEGAND_D0, 33), be_const_int(216) }, - { be_const_key(digital_read, 137), be_const_func(gp_digital_read) }, - { be_const_key(ROT1B, -1), be_const_int(103) }, - { be_const_key(FTC532, -1), be_const_int(195) }, - { be_const_key(HRE_DATA, 35), be_const_int(107) }, - { be_const_key(I2S_IN_DATA, -1), be_const_int(246) }, - { be_const_key(TCP_TX, 26), be_const_int(171) }, - { be_const_key(ST7789_CS, -1), be_const_int(206) }, - { be_const_key(ADC_JOY, -1), be_const_int(104) }, - { be_const_key(OUTPUT, 229), be_const_int(2) }, - { be_const_key(NRF24_DC, -1), be_const_int(198) }, - { be_const_key(IRRECV, 27), be_const_int(34) }, - { be_const_key(MCP39F5_TX, 230), be_const_int(86) }, - { be_const_key(TELEINFO_RX, 52), be_const_int(176) }, - { be_const_key(SSD1351_DC, -1), be_const_int(226) }, - { be_const_key(TM1638DIO, -1), be_const_int(65) }, - { be_const_key(TXD, 139), be_const_int(100) }, - { be_const_key(XPT2046_CS, -1), be_const_int(227) }, - { be_const_key(LED1, 212), be_const_int(9) }, - { be_const_key(LEDLNK_INV, -1), be_const_int(18) }, - { be_const_key(SBR_TX, -1), be_const_int(56) }, - { be_const_key(RA8876_CS, -1), be_const_int(205) }, - { be_const_key(KEY1_TC, 180), be_const_int(169) }, - { be_const_key(INPUT_PULLUP, -1), be_const_int(5) }, - { be_const_key(EPAPER42_CS, -1), be_const_int(203) }, - { be_const_key(BUZZER, -1), be_const_int(15) }, - { be_const_key(WEBCAM_XCLK, -1), be_const_int(156) }, - { be_const_key(ADC_LIGHT, 134), be_const_int(149) }, - { be_const_key(SDM630_TX, 69), be_const_int(62) }, - { be_const_key(MGC3130_XFER, 260), be_const_int(73) }, - { be_const_key(MGC3130_RESET, 219), be_const_int(74) }, - { be_const_key(MAX31855CS, -1), be_const_int(78) }, + { be_const_key(REL1, -1), be_const_int(7) }, + { be_const_key(NRG_SEL_INV, -1), be_const_int(82) }, + { be_const_key(RC522_CS, -1), be_const_int(196) }, + { be_const_key(ADC_BUTTON, -1), be_const_int(150) }, + { be_const_key(SAIR_TX, -1), be_const_int(50) }, + { be_const_key(OUTPUT_HI, 105), be_const_int(120) }, { be_const_key(LE01MR_TX, -1), be_const_int(141) }, + { be_const_key(ILI9341_DC, 22), be_const_int(200) }, + { be_const_key(SR04_ECHO, 263), be_const_int(59) }, + { be_const_key(HJL_CF, 241), be_const_int(85) }, + { be_const_key(I2S_OUT_CLK, -1), be_const_int(244) }, + { be_const_key(MIEL_HVAC_RX, 12), be_const_int(184) }, + { be_const_key(GPS_RX, 247), be_const_int(136) }, + { be_const_key(pin_mode, -1), be_const_func(gp_pin_mode) }, + { be_const_key(P9813_CLK, -1), be_const_int(192) }, + { be_const_key(ZIGBEE_TX, 262), be_const_int(111) }, + { be_const_key(dac_voltage, -1), be_const_func(gp_dac_voltage) }, + { be_const_key(INPUT_PULLUP, -1), be_const_int(5) }, + { be_const_key(SDM120_TX, -1), be_const_int(60) }, + { be_const_key(HRXL_RX, -1), be_const_int(144) }, + { be_const_key(pin, -1), be_const_func(gp_pin) }, + { be_const_key(HRE_CLOCK, -1), be_const_int(106) }, + { be_const_key(DHT11, -1), be_const_int(37) }, + { be_const_key(PWM1_INV, 109), be_const_int(14) }, + { be_const_key(A4988_MS1, 94), be_const_int(119) }, + { be_const_key(SBR_RX, -1), be_const_int(57) }, + { be_const_key(SWT1_PD, -1), be_const_int(242) }, + { be_const_key(FALLING, 5), be_const_int(2) }, + { be_const_key(PULLUP, -1), be_const_int(4) }, + { be_const_key(TELEINFO_RX, -1), be_const_int(176) }, + { be_const_key(MCP39F5_RX, -1), be_const_int(87) }, + { be_const_key(ETH_PHY_MDIO, -1), be_const_int(175) }, + { be_const_key(BL0940_RX, -1), be_const_int(170) }, + { be_const_key(NEOPOOL_TX, 248), be_const_int(218) }, + { be_const_key(VL53L0X_XSHUT1, -1), be_const_int(230) }, + { be_const_key(MCP39F5_RST, 203), be_const_int(88) }, + { be_const_key(HLW_CF, 231), be_const_int(84) }, + { be_const_key(WEBCAM_PSRCS, -1), be_const_int(165) }, + { be_const_key(SSD1331_DC, -1), be_const_int(209) }, + { be_const_key(ST7789_CS, -1), be_const_int(206) }, + { be_const_key(SDM72_RX, 66), be_const_int(221) }, + { be_const_key(SSD1351_DC, -1), be_const_int(226) }, + { be_const_key(SSPI_SCLK, -1), be_const_int(28) }, + { be_const_key(I2S_IN_CLK, -1), be_const_int(247) }, + { be_const_key(SM16716_DAT, -1), be_const_int(92) }, + { be_const_key(I2C_SDA, -1), be_const_int(20) }, + { be_const_key(PZEM004_RX, -1), be_const_int(47) }, + { be_const_key(TCP_TX, -1), be_const_int(171) }, + { be_const_key(SDM630_RX, -1), be_const_int(63) }, + { be_const_key(SWT1, -1), be_const_int(5) }, + { be_const_key(ROT1B, -1), be_const_int(103) }, + { be_const_key(I2C_SCL, -1), be_const_int(19) }, + { be_const_key(RXD, -1), be_const_int(101) }, + { be_const_key(DSB, 261), be_const_int(41) }, + { be_const_key(MCP39F5_TX, 252), be_const_int(86) }, + { be_const_key(HIGH, 266), be_const_int(1) }, + { be_const_key(RC522_RST, -1), be_const_int(191) }, + { be_const_key(SSPI_DC, -1), be_const_int(30) }, + { be_const_key(LOW, -1), be_const_int(0) }, + { be_const_key(BUZZER_INV, -1), be_const_int(16) }, + { be_const_key(XPT2046_CS, -1), be_const_int(227) }, + { be_const_key(WEBCAM_HSD, -1), be_const_int(164) }, + { be_const_key(TM1638STB, -1), be_const_int(66) }, + { be_const_key(PMS5003_RX, -1), be_const_int(53) }, + { be_const_key(SPI_DC, -1), be_const_int(25) }, + { be_const_key(MHZ_RXD, -1), be_const_int(45) }, + { be_const_key(ILI9488_CS, 119), be_const_int(201) }, + { be_const_key(HX711_SCK, 57), be_const_int(68) }, + { be_const_key(SDM630_TX, 227), be_const_int(62) }, + { be_const_key(SHELLY_DIMMER_BOOT0, -1), be_const_int(189) }, + { be_const_key(EPD_DATA, -1), be_const_int(238) }, + { be_const_key(WE517_TX, -1), be_const_int(185) }, + { be_const_key(TXD, 234), be_const_int(100) }, + { be_const_key(OUTPUT, -1), be_const_int(2) }, + { be_const_key(SSPI_MAX31865_CS1, -1), be_const_int(105) }, + { be_const_key(WEBCAM_PSCLK, -1), be_const_int(163) }, + { be_const_key(WEBCAM_SIOD, -1), be_const_int(157) }, + { be_const_key(MGC3130_RESET, -1), be_const_int(74) }, + { be_const_key(KEY1, -1), be_const_int(1) }, + { be_const_key(MGC3130_XFER, -1), be_const_int(73) }, + { be_const_key(ST7789_DC, 245), be_const_int(207) }, + { be_const_key(GPS_TX, 123), be_const_int(137) }, + { be_const_key(ADC_CT_POWER, 58), be_const_int(153) }, }; static be_define_const_map( m_libgpio_map, - 268 + 270 ); static be_define_const_module( diff --git a/tasmota/xdrv_52_2_berry_native.ino b/tasmota/xdrv_52_2_berry_native.ino index e900ce6ac..c87e2f398 100644 --- a/tasmota/xdrv_52_2_berry_native.ino +++ b/tasmota/xdrv_52_2_berry_native.ino @@ -65,6 +65,20 @@ extern "C" { if (v > 0xFF) { return 0xFF; } return v; } + + // variant of be_raise with string format + [[ noreturn ]] void be_raisef(bvm *vm, const char *except, const char *msg, ...) { + // To save stack space support logging for max text length of 128 characters + char log_data[128]; + + va_list arg; + va_start(arg, msg); + uint32_t len = ext_vsnprintf_P(log_data, sizeof(log_data)-3, msg, arg); + va_end(arg); + if (len+3 > sizeof(log_data)) { strcat(log_data, "..."); } // Actual data is more + be_raise(vm, except, log_data); + } + static void map_insert_int(bvm *vm, const char *key, int value) { be_pushstring(vm, key); diff --git a/tasmota/xdrv_52_3_berry_gpio.ino b/tasmota/xdrv_52_3_berry_gpio.ino index 778bacc74..3672e341e 100644 --- a/tasmota/xdrv_52_3_berry_gpio.ino +++ b/tasmota/xdrv_52_3_berry_gpio.ino @@ -22,7 +22,7 @@ #include - +#include /*********************************************************************************************\ * Native functions mapped to Berry functions * @@ -39,7 +39,40 @@ extern "C" { int32_t pin = be_toint(vm, 1); int32_t mode = be_toint(vm, 2); if (pin >= 0) { - pinMode(pin, mode); + if (mode > 0) { + // standard ESP mode + pinMode(pin, mode); + } else { + // synthetic mode + if (-1 == mode) { + // DAC +#if defined(CONFIG_IDF_TARGET_ESP32) + if (25 == pin || 26 == pin) { + uint32_t channel = pin - 25; // 1 or 2 + esp_err_t err = dac_output_enable((dac_channel_t) channel); + if (err) { + be_raisef(vm, "value_error", "Error: dac_output_enable(%i) -> %i", channel, err); + } + } else { + be_raise(vm, "value_error", "DAC only supported on GPIO25-26"); + } +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + if (17 == pin || 18 == pin) { + uint32_t channel = pin - 17; // 1 or 2 + esp_err_t err = dac_output_enable((dac_channel_t) channel); + if (err) { + be_raisef(vm, "value_error", "Error: dac_output_enable(%i) -> %i", channel, err); + } + } else { + be_raise(vm, "value_error", "DAC only supported on GPIO17-18"); + } +#elif defined(CONFIG_IDF_TARGET_ESP32C3) + be_raise(vm, "value_error", "DAC unsupported in this chip"); +#else + be_raise(vm, "value_error", "DAC unsupported in this chip"); +#endif + } + } } be_return_nil(vm); } @@ -76,6 +109,45 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + int gp_dac_voltage(bvm *vm); + int gp_dac_voltage(bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc == 2 && be_isint(vm, 1) && be_isint(vm, 2)) { + int32_t pin = be_toint(vm, 1); + int32_t mV = be_toint(vm, 2); + if (mV < 0) { mV = 0; } + uint32_t dac_value = changeUIntScale(mV, 0, 3300, 0, 255); // convert from 0..3300 ms to 0..255 +#if defined(CONFIG_IDF_TARGET_ESP32) + if (25 == pin || 26 == pin) { + uint32_t channel = pin - 25; // 1 or 2 + esp_err_t err = dac_output_voltage((dac_channel_t) channel, dac_value); + if (err) { + be_raisef(vm, "internal_error", "Error: esp_err_tdac_output_voltage(%i, %i) -> %i", channel, dac_value, err); + } + } else { + be_raise(vm, "value_error", "DAC only supported on GPIO25-26"); + } +#elif defined(CONFIG_IDF_TARGET_ESP32S2) + if (17 == pin || 18 == pin) { + uint32_t channel = pin - 17; // 1 or 2 + esp_err_t err = dac_output_voltage((dac_channel_t) channel, dac_value); + if (err) { + be_raisef(vm, "internal_error", "Error: esp_err_tdac_output_voltage(%i, %i) -> %i", channel, dac_value, err); + } + } else { + be_raise(vm, "value_error", "DAC only supported on GPIO17-18"); + } +#elif defined(CONFIG_IDF_TARGET_ESP32C3) + be_raise(vm, "value_error", "DAC unsupported in this chip"); +#else + be_raise(vm, "value_error", "DAC unsupported in this chip"); +#endif + be_pushint(vm, changeUIntScale(dac_value, 0, 255, 0, 3300)); + be_return(vm); + } + be_raise(vm, kTypeError, nullptr); + } + // Tasmota specific int gp_pin_used(bvm *vm); From 7b13bfc404acf8e6b30a302afde4cf2b6eb72132 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 13 Sep 2021 14:12:41 +0200 Subject: [PATCH 189/317] Fix DAC on ESP32C3 --- tasmota/xdrv_52_3_berry_gpio.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdrv_52_3_berry_gpio.ino b/tasmota/xdrv_52_3_berry_gpio.ino index 3672e341e..62a41db41 100644 --- a/tasmota/xdrv_52_3_berry_gpio.ino +++ b/tasmota/xdrv_52_3_berry_gpio.ino @@ -22,7 +22,9 @@ #include +#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) #include +#endif /*********************************************************************************************\ * Native functions mapped to Berry functions * From eb4c0d62297e895fd171006a4ffa0e11044bdbf8 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Mon, 13 Sep 2021 15:47:04 +0200 Subject: [PATCH 190/317] SHOW_SPLASH and remove redundant code --- tasmota/tasmota_configurations_ESP32.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 4a205158b..383621de6 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -61,6 +61,7 @@ #define USE_ADC #define USE_SPI #define USE_DISPLAY // Add SPI Display Support (+2k code) + #define SHOW_SPLASH #ifndef USE_UNIVERSAL_DISPLAY #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code) #endif @@ -93,6 +94,7 @@ #define USE_MPU_ACCEL #define USE_SPI #define USE_DISPLAY + #define SHOW_SPLASH #ifdef USE_UNIVERSAL_DISPLAY #define USE_LVGL #define USE_LVGL_FREETYPE @@ -101,7 +103,7 @@ #define USE_DISPLAY_ILI9341 // [DisplayModel 4] Enable ILI9341 Tft 480x320 display (+19k code) #define USE_DISPLAY_MODES1TO5 #endif - #define USE_TOUCH_BUTTONS + #define USE_TOUCH_BUTTONS #define JPEG_PICTS #define USE_FT5206 @@ -173,6 +175,7 @@ #define USE_SPI #define USE_LVGL #define USE_DISPLAY +#define SHOW_SPLASH #define USE_XPT2046 #define USE_FT5206 #define USE_MPU_ACCEL @@ -191,9 +194,6 @@ #define USE_ENHANCED_GUI_WIFI_SCAN -#define USE_BERRY // Enable Berry scripting language -//#define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact - #define USE_SDCARD #define ROTARY_V1 // Add support for Rotary Encoder as used in MI Desk Lamp From 0c879ebe256004f3b8c25b39797637c99295e70e Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 14 Sep 2021 08:44:54 +0200 Subject: [PATCH 191/317] Berry solidified AXP192 driver --- .../Berry/default/be_i2c_axp192_lib.c | 899 ++++++++++++++++++ lib/libesp32/Berry/default/be_i2c_driverlib.c | 34 +- lib/libesp32/Berry/default/be_modtab.c | 2 + .../Berry/default/embedded/i2c_axp192.be | 176 ++++ ...river.h => be_fixed_be_class_I2C_Driver.h} | 6 +- tasmota/berry/drivers/axp192.be | 393 -------- .../berry/drivers/i2c_axp192_M5StackCore2.be | 122 +++ tasmota/berry/drivers/i2c_axp192_M5StickC.be | 91 ++ 8 files changed, 1296 insertions(+), 427 deletions(-) create mode 100644 lib/libesp32/Berry/default/be_i2c_axp192_lib.c create mode 100644 lib/libesp32/Berry/default/embedded/i2c_axp192.be rename lib/libesp32/Berry/generate/{be_fixed_be_class_tasmota_i2c_driver.h => be_fixed_be_class_I2C_Driver.h} (86%) delete mode 100644 tasmota/berry/drivers/axp192.be create mode 100644 tasmota/berry/drivers/i2c_axp192_M5StackCore2.be create mode 100644 tasmota/berry/drivers/i2c_axp192_M5StickC.be diff --git a/lib/libesp32/Berry/default/be_i2c_axp192_lib.c b/lib/libesp32/Berry/default/be_i2c_axp192_lib.c new file mode 100644 index 000000000..b81c47775 --- /dev/null +++ b/lib/libesp32/Berry/default/be_i2c_axp192_lib.c @@ -0,0 +1,899 @@ +/******************************************************************** + * Tasmota LVGL lv_signal_bars widget + *******************************************************************/ +#include "be_constobj.h" + +/******************************************************************** +** Solidified function: get_warning_level +********************************************************************/ +be_local_closure(get_warning_level, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read12", -3890326, 6), + /* K1 */ be_const_int(1), + }), + (be_nested_const_str("get_warning_level", 1737834441, 17)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0046, // 0001 LDINT R3 71 + 0x7C040400, // 0002 CALL R1 2 + 0x2C040301, // 0003 AND R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_vbus_current +********************************************************************/ +be_local_closure(get_vbus_current, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read12", -3890326, 6), + /* K1 */ be_const_real_hex(0x3EC00000), + }), + (be_nested_const_str("get_vbus_current", 1205347942, 16)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E005B, // 0001 LDINT R3 92 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_chg_current +********************************************************************/ +be_local_closure(set_chg_current, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("write8", -1160975764, 6), + /* K1 */ be_nested_string("read8", -1492179129, 5), + }), + (be_nested_const_str("set_chg_current", 336304386, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[12]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x54120032, // 0001 LDINT R4 51 + 0x8C140101, // 0002 GETMET R5 R0 K1 + 0x541E0032, // 0003 LDINT R7 51 + 0x7C140400, // 0004 CALL R5 2 + 0x541A00EF, // 0005 LDINT R6 240 + 0x2C140A06, // 0006 AND R5 R5 R6 + 0x541A000E, // 0007 LDINT R6 15 + 0x2C180206, // 0008 AND R6 R1 R6 + 0x30140A06, // 0009 OR R5 R5 R6 + 0x7C080600, // 000A CALL R2 3 + 0x80000000, // 000B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_bat_current +********************************************************************/ +be_local_closure(get_bat_current, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read13", 12887293, 6), + /* K1 */ be_const_real_hex(0x3F000000), + }), + (be_nested_const_str("get_bat_current", 1912106073, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 9]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0079, // 0001 LDINT R3 122 + 0x7C040400, // 0002 CALL R1 2 + 0x8C080100, // 0003 GETMET R2 R0 K0 + 0x5412007B, // 0004 LDINT R4 124 + 0x7C080400, // 0005 CALL R2 2 + 0x04040202, // 0006 SUB R1 R1 R2 + 0x08040301, // 0007 MUL R1 R1 K1 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_bat_power +********************************************************************/ +be_local_closure(get_bat_power, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read24", 1808533811, 6), + /* K1 */ be_const_real_hex(0x3A102DE1), + }), + (be_nested_const_str("get_bat_power", -1227592443, 13)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E006F, // 0001 LDINT R3 112 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: json_append +********************************************************************/ +be_local_closure(json_append, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + }), + (be_nested_const_str("json_append", -1292948012, 11)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060001, // 0001 JMPT R1 #0004 + 0x4C040000, // 0002 LDNIL R1 + 0x80040200, // 0003 RET 1 R1 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_vbus_voltage +********************************************************************/ +be_local_closure(get_vbus_voltage, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read12", -3890326, 6), + /* K1 */ be_const_real_hex(0x3ADED28A), + }), + (be_nested_const_str("get_vbus_voltage", -1896756895, 16)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0059, // 0001 LDINT R3 90 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_temp +********************************************************************/ +be_local_closure(get_temp, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("read12", -3890326, 6), + /* K1 */ be_const_real_hex(0x3DCCCCCD), + /* K2 */ be_const_real_hex(0x4310B333), + }), + (be_nested_const_str("get_temp", -924047810, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E005D, // 0001 LDINT R3 94 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x04040302, // 0004 SUB R1 R1 K2 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: battery_present +********************************************************************/ +be_local_closure(battery_present, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read", -824204347, 4), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(1), + }), + (be_nested_const_str("battery_present", -706570238, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[15]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x58100003, // 0003 LDCONST R4 K3 + 0x58140003, // 0004 LDCONST R5 K3 + 0x7C040800, // 0005 CALL R1 4 + 0x540A001F, // 0006 LDINT R2 32 + 0x2C040202, // 0007 AND R1 R1 R2 + 0x78060002, // 0008 JMPF R1 #000C + 0x50040200, // 0009 LDBOOL R1 1 0 + 0x80040200, // 000A RET 1 R1 + 0x70020001, // 000B JMP #000E + 0x50040000, // 000C LDBOOL R1 0 0 + 0x80040200, // 000D RET 1 R1 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_aps_voltage +********************************************************************/ +be_local_closure(get_aps_voltage, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read12", -3890326, 6), + /* K1 */ be_const_real_hex(0x3AB78035), + }), + (be_nested_const_str("get_aps_voltage", -2001930861, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E007D, // 0001 LDINT R3 126 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_dcdc_enable +********************************************************************/ +be_local_closure(set_dcdc_enable, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_nested_string("write_bit", -1633976860, 9), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(2), + /* K4 */ be_const_int(3), + }), + (be_nested_const_str("set_dcdc_enable", 1594690786, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[22]) { /* code */ + 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x780E0004, // 0001 JMPF R3 #0007 + 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x54160011, // 0003 LDINT R5 18 + 0x58180002, // 0004 LDCONST R6 K2 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x7C0C0800, // 0006 CALL R3 4 + 0x1C0C0303, // 0007 EQ R3 R1 K3 + 0x780E0004, // 0008 JMPF R3 #000E + 0x8C0C0101, // 0009 GETMET R3 R0 K1 + 0x54160011, // 000A LDINT R5 18 + 0x541A0003, // 000B LDINT R6 4 + 0x5C1C0400, // 000C MOVE R7 R2 + 0x7C0C0800, // 000D CALL R3 4 + 0x1C0C0304, // 000E EQ R3 R1 K4 + 0x780E0004, // 000F JMPF R3 #0015 + 0x8C0C0101, // 0010 GETMET R3 R0 K1 + 0x54160011, // 0011 LDINT R5 18 + 0x58180000, // 0012 LDCONST R6 K0 + 0x5C1C0400, // 0013 MOVE R7 R2 + 0x7C0C0800, // 0014 CALL R3 4 + 0x80000000, // 0015 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_ldo_voltage +********************************************************************/ +be_local_closure(set_ldo_voltage, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(2), + /* K1 */ be_nested_string("write8", -1160975764, 6), + /* K2 */ be_nested_string("read8", -1492179129, 5), + /* K3 */ be_const_int(3), + }), + (be_nested_const_str("set_ldo_voltage", -204466136, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[39]) { /* code */ + 0x540E0CE3, // 0000 LDINT R3 3300 + 0x240C0403, // 0001 GT R3 R2 R3 + 0x780E0001, // 0002 JMPF R3 #0005 + 0x540A000E, // 0003 LDINT R2 15 + 0x70020004, // 0004 JMP #000A + 0x540E0063, // 0005 LDINT R3 100 + 0x0C0C0403, // 0006 DIV R3 R2 R3 + 0x54120011, // 0007 LDINT R4 18 + 0x040C0604, // 0008 SUB R3 R3 R4 + 0x5C080600, // 0009 MOVE R2 R3 + 0x1C0C0300, // 000A EQ R3 R1 K0 + 0x780E000C, // 000B JMPF R3 #0019 + 0x8C0C0101, // 000C GETMET R3 R0 K1 + 0x54160027, // 000D LDINT R5 40 + 0x8C180102, // 000E GETMET R6 R0 K2 + 0x54220027, // 000F LDINT R8 40 + 0x7C180400, // 0010 CALL R6 2 + 0x541E000E, // 0011 LDINT R7 15 + 0x2C180C07, // 0012 AND R6 R6 R7 + 0x541E000E, // 0013 LDINT R7 15 + 0x2C1C0407, // 0014 AND R7 R2 R7 + 0x54220003, // 0015 LDINT R8 4 + 0x381C0E08, // 0016 SHL R7 R7 R8 + 0x30180C07, // 0017 OR R6 R6 R7 + 0x7C0C0600, // 0018 CALL R3 3 + 0x1C0C0303, // 0019 EQ R3 R1 K3 + 0x780E000A, // 001A JMPF R3 #0026 + 0x8C0C0101, // 001B GETMET R3 R0 K1 + 0x54160027, // 001C LDINT R5 40 + 0x8C180102, // 001D GETMET R6 R0 K2 + 0x54220027, // 001E LDINT R8 40 + 0x7C180400, // 001F CALL R6 2 + 0x541E00EF, // 0020 LDINT R7 240 + 0x2C180C07, // 0021 AND R6 R6 R7 + 0x541E000E, // 0022 LDINT R7 15 + 0x2C1C0407, // 0023 AND R7 R2 R7 + 0x30180C07, // 0024 OR R6 R6 R7 + 0x7C0C0600, // 0025 CALL R3 3 + 0x80000000, // 0026 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("I2C_Driver", 1714501658, 10), + /* K1 */ be_nested_string("init", 380752755, 4), + /* K2 */ be_nested_string("AXP192", 757230128, 6), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 9]) { /* code */ + 0x60040014, // 0000 GETGBL R1 G20 + 0x5C080000, // 0001 MOVE R2 R0 + 0xB80E0000, // 0002 GETNGBL R3 K0 + 0x7C040400, // 0003 CALL R1 2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x580C0002, // 0005 LDCONST R3 K2 + 0x54120033, // 0006 LDINT R4 52 + 0x7C040600, // 0007 CALL R1 3 + 0x80000000, // 0008 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_bat_voltage +********************************************************************/ +be_local_closure(get_bat_voltage, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read12", -3890326, 6), + /* K1 */ be_const_real_hex(0x3A902DE0), + }), + (be_nested_const_str("get_bat_voltage", 706676538, 15)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0077, // 0001 LDINT R3 120 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_ldo_enable +********************************************************************/ +be_local_closure(set_ldo_enable, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(2), + /* K1 */ be_nested_string("write_bit", -1633976860, 9), + /* K2 */ be_const_int(3), + }), + (be_nested_const_str("set_ldo_enable", -1378465255, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[15]) { /* code */ + 0x1C0C0300, // 0000 EQ R3 R1 K0 + 0x780E0004, // 0001 JMPF R3 #0007 + 0x8C0C0101, // 0002 GETMET R3 R0 K1 + 0x54160011, // 0003 LDINT R5 18 + 0x58180000, // 0004 LDCONST R6 K0 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x7C0C0800, // 0006 CALL R3 4 + 0x1C0C0302, // 0007 EQ R3 R1 K2 + 0x780E0004, // 0008 JMPF R3 #000E + 0x8C0C0101, // 0009 GETMET R3 R0 K1 + 0x54160011, // 000A LDINT R5 18 + 0x58180002, // 000B LDCONST R6 K2 + 0x5C1C0400, // 000C MOVE R7 R2 + 0x7C0C0800, // 000D CALL R3 4 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_dc_voltage +********************************************************************/ +be_local_closure(set_dc_voltage, /* name */ + be_nested_proto( + 11, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_int(1), + /* K1 */ be_const_int(3), + /* K2 */ be_const_int(0), + /* K3 */ be_const_int(2), + /* K4 */ be_nested_string("write8", -1160975764, 6), + /* K5 */ be_nested_string("read8", -1492179129, 5), + }), + (be_nested_const_str("set_dc_voltage", -2112985360, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[48]) { /* code */ + 0x140C0300, // 0000 LT R3 R1 K0 + 0x740E0001, // 0001 JMPT R3 #0004 + 0x240C0301, // 0002 GT R3 R1 K1 + 0x780E0000, // 0003 JMPF R3 #0005 + 0x80000600, // 0004 RET 0 + 0x4C0C0000, // 0005 LDNIL R3 + 0x541202BB, // 0006 LDINT R4 700 + 0x14100404, // 0007 LT R4 R2 R4 + 0x78120001, // 0008 JMPF R4 #000B + 0x580C0002, // 0009 LDCONST R3 K2 + 0x70020010, // 000A JMP #001C + 0x54120DAB, // 000B LDINT R4 3500 + 0x24100404, // 000C GT R4 R2 R4 + 0x78120001, // 000D JMPF R4 #0010 + 0x540E006F, // 000E LDINT R3 112 + 0x7002000B, // 000F JMP #001C + 0x1C100303, // 0010 EQ R4 R1 K3 + 0x78120004, // 0011 JMPF R4 #0017 + 0x541208E2, // 0012 LDINT R4 2275 + 0x24100404, // 0013 GT R4 R2 R4 + 0x78120001, // 0014 JMPF R4 #0017 + 0x540E003E, // 0015 LDINT R3 63 + 0x70020004, // 0016 JMP #001C + 0x541202BB, // 0017 LDINT R4 700 + 0x04100404, // 0018 SUB R4 R2 R4 + 0x54160018, // 0019 LDINT R5 25 + 0x0C100805, // 001A DIV R4 R4 R5 + 0x5C0C0800, // 001B MOVE R3 R4 + 0x54120025, // 001C LDINT R4 38 + 0x1C140301, // 001D EQ R5 R1 K1 + 0x78160001, // 001E JMPF R5 #0021 + 0x54120026, // 001F LDINT R4 39 + 0x70020002, // 0020 JMP #0024 + 0x1C140303, // 0021 EQ R5 R1 K3 + 0x78160000, // 0022 JMPF R5 #0024 + 0x54120022, // 0023 LDINT R4 35 + 0x8C140104, // 0024 GETMET R5 R0 K4 + 0x5C1C0800, // 0025 MOVE R7 R4 + 0x8C200105, // 0026 GETMET R8 R0 K5 + 0x5C280800, // 0027 MOVE R10 R4 + 0x7C200400, // 0028 CALL R8 2 + 0x5426007F, // 0029 LDINT R9 128 + 0x2C201009, // 002A AND R8 R8 R9 + 0x5426007E, // 002B LDINT R9 127 + 0x2C240609, // 002C AND R9 R3 R9 + 0x30201009, // 002D OR R8 R8 R9 + 0x7C140600, // 002E CALL R5 3 + 0x80000000, // 002F RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_gpio +********************************************************************/ +be_local_closure(write_gpio, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(2), + /* K2 */ be_nested_string("write_bit", -1633976860, 9), + /* K3 */ be_const_int(3), + }), + (be_nested_const_str("write_gpio", -2027026962, 10)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[21]) { /* code */ + 0x280C0300, // 0000 GE R3 R1 K0 + 0x780E0007, // 0001 JMPF R3 #000A + 0x180C0301, // 0002 LE R3 R1 K1 + 0x780E0005, // 0003 JMPF R3 #000A + 0x8C0C0102, // 0004 GETMET R3 R0 K2 + 0x54160093, // 0005 LDINT R5 148 + 0x5C180200, // 0006 MOVE R6 R1 + 0x5C1C0400, // 0007 MOVE R7 R2 + 0x7C0C0800, // 0008 CALL R3 4 + 0x70020009, // 0009 JMP #0014 + 0x280C0303, // 000A GE R3 R1 K3 + 0x780E0007, // 000B JMPF R3 #0014 + 0x540E0003, // 000C LDINT R3 4 + 0x180C0203, // 000D LE R3 R1 R3 + 0x780E0004, // 000E JMPF R3 #0014 + 0x8C0C0102, // 000F GETMET R3 R0 K2 + 0x54160095, // 0010 LDINT R5 150 + 0x04180303, // 0011 SUB R6 R1 K3 + 0x5C1C0400, // 0012 MOVE R7 R2 + 0x7C0C0800, // 0013 CALL R3 4 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: web_sensor +********************************************************************/ +be_local_closure(web_sensor, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("string", 398550328, 6), + /* K2 */ be_nested_string("format", -1180859054, 6), + /* K3 */ be_nested_string("{s}VBus Voltage{m}%.3f V{e}", 165651270, 27), + /* K4 */ be_nested_string("{s}VBus Current{m}%.1f mA{e}", 1032721155, 28), + /* K5 */ be_nested_string("{s}Batt Voltage{m}%.3f V{e}", -1110659097, 27), + /* K6 */ be_nested_string("{s}Batt Current{m}%.1f mA{e}", 866537156, 28), + /* K7 */ be_nested_string("{s}Temp AXP{m}%.1f °C{e}", -1990510004, 25), + /* K8 */ be_nested_string("get_vbus_voltage", -1896756895, 16), + /* K9 */ be_nested_string("get_bat_voltage", 706676538, 15), + /* K10 */ be_nested_string("get_bat_current", 1912106073, 15), + /* K11 */ be_nested_string("get_temp", -924047810, 8), + /* K12 */ be_nested_string("tasmota", 424643812, 7), + /* K13 */ be_nested_string("web_send_decimal", 1407210204, 16), + }), + (be_nested_const_str("web_sensor", -1394870324, 10)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[26]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060001, // 0001 JMPT R1 #0004 + 0x4C040000, // 0002 LDNIL R1 + 0x80040200, // 0003 RET 1 R1 + 0xA4060200, // 0004 IMPORT R1 K1 + 0x8C080302, // 0005 GETMET R2 R1 K2 + 0x40120704, // 0006 CONNECT R4 K3 K4 + 0x40100905, // 0007 CONNECT R4 R4 K5 + 0x40100906, // 0008 CONNECT R4 R4 K6 + 0x40100907, // 0009 CONNECT R4 R4 K7 + 0x8C140108, // 000A GETMET R5 R0 K8 + 0x7C140200, // 000B CALL R5 1 + 0x8C180108, // 000C GETMET R6 R0 K8 + 0x7C180200, // 000D CALL R6 1 + 0x8C1C0109, // 000E GETMET R7 R0 K9 + 0x7C1C0200, // 000F CALL R7 1 + 0x8C20010A, // 0010 GETMET R8 R0 K10 + 0x7C200200, // 0011 CALL R8 1 + 0x8C24010B, // 0012 GETMET R9 R0 K11 + 0x7C240200, // 0013 CALL R9 1 + 0x7C080E00, // 0014 CALL R2 7 + 0xB80E1800, // 0015 GETNGBL R3 K12 + 0x8C0C070D, // 0016 GETMET R3 R3 K13 + 0x5C140400, // 0017 MOVE R5 R2 + 0x7C0C0400, // 0018 CALL R3 2 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_bat_charge_current +********************************************************************/ +be_local_closure(get_bat_charge_current, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("read13", 12887293, 6), + /* K1 */ be_const_real_hex(0x3F000000), + }), + (be_nested_const_str("get_bat_charge_current", 1385293050, 22)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x540E0079, // 0001 LDINT R3 122 + 0x7C040400, // 0002 CALL R1 2 + 0x08040301, // 0003 MUL R1 R1 K1 + 0x80040200, // 0004 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_battery_chargin_status +********************************************************************/ +be_local_closure(get_battery_chargin_status, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read", -824204347, 4), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(1), + }), + (be_nested_const_str("get_battery_chargin_status", -2061725725, 26)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x58100003, // 0003 LDCONST R4 K3 + 0x58140003, // 0004 LDCONST R5 K3 + 0x7C040800, // 0005 CALL R1 4 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_input_power_status +********************************************************************/ +be_local_closure(get_input_power_status, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read", -824204347, 4), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + }), + (be_nested_const_str("get_input_power_status", -192138119, 22)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x58100003, // 0003 LDCONST R4 K3 + 0x58140004, // 0004 LDCONST R5 K4 + 0x7C040800, // 0005 CALL R1 4 + 0x80040200, // 0006 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: AXP192 +********************************************************************/ +extern const bclass be_class_I2C_Driver; +be_local_class(AXP192, + 0, + &be_class_I2C_Driver, + be_nested_map(21, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("get_warning_level", 1737834441, 17, -1), be_const_closure(get_warning_level_closure) }, + { be_nested_key("get_vbus_current", 1205347942, 16, -1), be_const_closure(get_vbus_current_closure) }, + { be_nested_key("set_chg_current", 336304386, 15, 14), be_const_closure(set_chg_current_closure) }, + { be_nested_key("get_bat_current", 1912106073, 15, -1), be_const_closure(get_bat_current_closure) }, + { be_nested_key("get_bat_power", -1227592443, 13, 9), be_const_closure(get_bat_power_closure) }, + { be_nested_key("json_append", -1292948012, 11, -1), be_const_closure(json_append_closure) }, + { be_nested_key("get_vbus_voltage", -1896756895, 16, -1), be_const_closure(get_vbus_voltage_closure) }, + { be_nested_key("get_temp", -924047810, 8, -1), be_const_closure(get_temp_closure) }, + { be_nested_key("battery_present", -706570238, 15, -1), be_const_closure(battery_present_closure) }, + { be_nested_key("get_aps_voltage", -2001930861, 15, -1), be_const_closure(get_aps_voltage_closure) }, + { be_nested_key("set_dcdc_enable", 1594690786, 15, -1), be_const_closure(set_dcdc_enable_closure) }, + { be_nested_key("set_ldo_voltage", -204466136, 15, 7), be_const_closure(set_ldo_voltage_closure) }, + { be_nested_key("init", 380752755, 4, 2), be_const_closure(init_closure) }, + { be_nested_key("get_bat_voltage", 706676538, 15, 18), be_const_closure(get_bat_voltage_closure) }, + { be_nested_key("set_ldo_enable", -1378465255, 14, -1), be_const_closure(set_ldo_enable_closure) }, + { be_nested_key("set_dc_voltage", -2112985360, 14, 13), be_const_closure(set_dc_voltage_closure) }, + { be_nested_key("write_gpio", -2027026962, 10, -1), be_const_closure(write_gpio_closure) }, + { be_nested_key("web_sensor", -1394870324, 10, -1), be_const_closure(web_sensor_closure) }, + { be_nested_key("get_bat_charge_current", 1385293050, 22, 19), be_const_closure(get_bat_charge_current_closure) }, + { be_nested_key("get_battery_chargin_status", -2061725725, 26, -1), be_const_closure(get_battery_chargin_status_closure) }, + { be_nested_key("get_input_power_status", -192138119, 22, -1), be_const_closure(get_input_power_status_closure) }, + })), + (be_nested_const_str("AXP192", 757230128, 6)) +); +/*******************************************************************/ + +void be_load_AXP192_class(bvm *vm) { + be_pushntvclass(vm, &be_class_AXP192); + be_setglobal(vm, "AXP192"); + be_pop(vm, 1); +} diff --git a/lib/libesp32/Berry/default/be_i2c_driverlib.c b/lib/libesp32/Berry/default/be_i2c_driverlib.c index 75e003210..88d9ded34 100644 --- a/lib/libesp32/Berry/default/be_i2c_driverlib.c +++ b/lib/libesp32/Berry/default/be_i2c_driverlib.c @@ -389,44 +389,16 @@ be_local_closure(read32, /* name */ /*******************************************************************/ -#if BE_USE_PRECOMPILED_OBJECT -#include "../generate/be_fixed_be_class_tasmota_i2c_driver.h" -#endif +#include "../generate/be_fixed_be_class_I2C_Driver.h" void be_load_driver_i2c_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { "wire", NULL }, - { "addr", NULL }, - { "name", NULL }, - - { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - { "init", (bntvfunc) &init_closure }, - { "write8", (bntvfunc) &write8_closure }, - { "write_bit", (bntvfunc) &write_bit_closure }, - { "read8", (bntvfunc) &read8_closure }, - { "read12", (bntvfunc) &read12_closure }, - { "read13", (bntvfunc) &read13_closure }, - { "read24", (bntvfunc) &read24_closure }, - { "read32", (bntvfunc) &read32_closure }, - - { NULL, NULL } - }; - - be_regclass(vm, "I2C_Driver", members); - be_getglobal(vm, "I2C_Driver"); - be_getglobal(vm, "Driver"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_tasmota_i2c_driver); + be_pushntvclass(vm, &be_class_I2C_Driver); be_setglobal(vm, "I2C_Driver"); be_pop(vm, 1); -#endif } /* @const_object_info_begin -class be_class_tasmota_i2c_driver (scope: global, name: I2C_Driver, super: be_class_Driver) { +class be_class_I2C_Driver (scope: global, name: I2C_Driver, super: be_class_Driver) { wire, var addr, var name, var diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index f259d2076..1b6e8378a 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -108,6 +108,7 @@ extern void be_load_onewirelib(bvm *vm); extern void be_load_Driver_class(bvm *vm); extern void be_load_Timer_class(bvm *vm); extern void be_load_driver_i2c_lib(bvm *vm); +extern void be_load_AXP192_class(bvm *vm); extern void be_load_md5_lib(bvm *vm); extern void be_load_webclient_lib(bvm *vm); extern void be_load_crypto_lib(bvm *vm); @@ -153,6 +154,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) #ifdef USE_I2C be_load_wirelib(vm); be_load_driver_i2c_lib(vm); + be_load_AXP192_class(vm); #endif // USE_I2C #ifdef USE_WEBCLIENT be_load_webclient_lib(vm); diff --git a/lib/libesp32/Berry/default/embedded/i2c_axp192.be b/lib/libesp32/Berry/default/embedded/i2c_axp192.be new file mode 100644 index 000000000..3d958334f --- /dev/null +++ b/lib/libesp32/Berry/default/embedded/i2c_axp192.be @@ -0,0 +1,176 @@ +#------------------------------------------------------------- + - Generic driver for AXP192 - solidified + -------------------------------------------------------------# +class AXP192 : I2C_Driver + def init() + super(self, I2C_Driver).init("AXP192", 0x34) + end + + # Return True = Battery Exist + def battery_present() + if self.wire.read(self.addr, 0x01, 1) & 0x20 return true + else return false + end + end + + # Input Power Status ??? + def get_input_power_status() + return self.wire.read(self.addr, 0x00, 1) + end + + # Battery Charging Status + def get_battery_chargin_status() + return self.wire.read(self.addr, 0x01, 1) + end + + # AXP chip temperature in °C + def get_temp() + return self.read12(0x5E) * 0.1 - 144.7 + end + + def get_bat_power() + return self.read24(0x70) * 0.00055 + end + + def get_bat_voltage() + return self.read12(0x78) * 0.0011 + end + def get_bat_current() + return (self.read13(0x7A) - self.read13(0x7C)) * 0.5 + end + def get_bat_charge_current() + return self.read13(0x7A) * 0.5 + end + def get_aps_voltage() + return self.read12(0x7E) * 0.0014 + end + def get_vbus_voltage() + return self.read12(0x5A) * 0.0017 + end + def get_vbus_current() + return self.read12(0x5C) * 0.375 + end + + # set LDO voltage + # ldo: 2/3 + # voltage: (mV) 1800mV - 3300mV in 100mV steps + def set_ldo_voltage(ldo, voltage) + if voltage > 3300 voltage = 15 + else voltage = (voltage / 100) - 18 + end + + if ldo == 2 + self.write8(0x28, self.read8(0x28) & 0x0F | ((voltage & 0x0F) << 4)) + end + if ldo == 3 + self.write8(0x28, self.read8(0x28) & 0xF0 | (voltage & 0x0F)) + end + end + + # set DCDC enable, 1/2/3 + def set_dcdc_enable(dcdc, state) + if dcdc == 1 self.write_bit(0x12, 0, state) end + if dcdc == 2 self.write_bit(0x12, 4, state) end + if dcdc == 3 self.write_bit(0x12, 1, state) end + end + + # set LDO enable, 2/3 (LDO 1 is always on) + def set_ldo_enable(ldo, state) + if ldo == 2 self.write_bit(0x12, 2, state) end + if ldo == 3 self.write_bit(0x12, 3, state) end + end + + # set GPIO output state 0/1/2 and 3/4 + def write_gpio(gpio, state) + if gpio >= 0 && gpio <= 2 + self.write_bit(0x94, gpio, state) + elif gpio >= 3 && gpio <= 4 + self.write_bit(0x96, gpio - 3, state) + end + end + + # Set voltage on DC-DC1/2/3 + # dcdc: 1/2/3 (warning some C libs start at 0) + # voltage: + def set_dc_voltage(dcdc, voltage) + if dcdc < 1 || dcdc > 3 return end + var v + if voltage < 700 v = 0 + elif voltage > 3500 v = 112 + elif dcdc == 2 && voltage > 2275 v = 63 # dcdc2 is limited to 2.275V + else v = (voltage - 700) / 25 + end + + var addr = 0x26 + if dcdc == 3 addr = 0x27 + elif dcdc == 2 addr = 0x23 + end + + self.write8(addr, self.read8(addr) & 0x80 | (v & 0x7F)) + end + + # Set charging current + # 100mA = 0 + # 190mA = 1 + # 280mA = 2 + # 360mA = 3 + # 450mA = 4 + # 550mA = 5 + # 630mA = 6 + # 700mA = 7 + # 780mA = 8 + # 880mA = 9 + # 960mA = 10 + # 1000mA = 11 + # 1080mA = 12 + # 1160mA = 13 + # 1240mA = 14 + # 1320mA = 15 + def set_chg_current(current_code) + self.write8(0x33, self.read8(0x33) & 0xF0 | (current_code & 0x0F)) + end + + # // Low Volt Level 1, when APS Volt Output < 3.4496 V + # // Low Volt Level 2, when APS Volt Output < 3.3992 V, then this flag is SET (0x01) + # // Flag will reset once battery volt is charged above Low Volt Level 1 + # // Note: now AXP192 have the Shutdown Voltage of 3.0V (B100) Def in REG 31H + def get_warning_level() + return self.read12(0x47) & 1 + end + + #- trigger a read every second -# + # def every_second() + # if !self.wire return nil end #- exit if not initialized -# + # end + + #- display sensor value in the web UI -# + def web_sensor() + if !self.wire return nil end #- exit if not initialized -# + import string + var msg = string.format( + "{s}VBus Voltage{m}%.3f V{e}".. + "{s}VBus Current{m}%.1f mA{e}".. + "{s}Batt Voltage{m}%.3f V{e}".. + "{s}Batt Current{m}%.1f mA{e}".. + #"{s}Batt Power{m}%.3f{e}".. + "{s}Temp AXP{m}%.1f °C{e}", + self.get_vbus_voltage(), self.get_vbus_voltage(), + self.get_bat_voltage(), self.get_bat_current(), + #self.get_bat_power(), + self.get_temp() + ) + tasmota.web_send_decimal(msg) + end + + #- add sensor value to teleperiod -# + def json_append() + if !self.wire return nil end #- exit if not initialized -# + # import string + # var ax = int(self.accel[0] * 1000) + # var ay = int(self.accel[1] * 1000) + # var az = int(self.accel[2] * 1000) + # var msg = string.format(",\"MPU6886\":{\"AX\":%i,\"AY\":%i,\"AZ\":%i,\"GX\":%i,\"GY\":%i,\"GZ\":%i}", + # ax, ay, az, self.gyro[0], self.gyro[1], self.gyro[2]) + # tasmota.response_append(msg) + end +end diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h b/lib/libesp32/Berry/generate/be_fixed_be_class_I2C_Driver.h similarity index 86% rename from lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h rename to lib/libesp32/Berry/generate/be_fixed_be_class_I2C_Driver.h index 131e02766..4257b0850 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_i2c_driver.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_I2C_Driver.h @@ -1,6 +1,6 @@ #include "be_constobj.h" -static be_define_const_map_slots(be_class_tasmota_i2c_driver_map) { +static be_define_const_map_slots(be_class_I2C_Driver_map) { { be_const_key(read32, -1), be_const_closure(read32_closure) }, { be_const_key(write8, 6), be_const_closure(write8_closure) }, { be_const_key(name, -1), be_const_var(0) }, @@ -15,12 +15,12 @@ static be_define_const_map_slots(be_class_tasmota_i2c_driver_map) { }; static be_define_const_map( - be_class_tasmota_i2c_driver_map, + be_class_I2C_Driver_map, 11 ); BE_EXPORT_VARIABLE be_define_const_class( - be_class_tasmota_i2c_driver, + be_class_I2C_Driver, 3, (bclass *)&be_class_Driver, I2C_Driver diff --git a/tasmota/berry/drivers/axp192.be b/tasmota/berry/drivers/axp192.be deleted file mode 100644 index f2222a769..000000000 --- a/tasmota/berry/drivers/axp192.be +++ /dev/null @@ -1,393 +0,0 @@ -#------------------------------------------------------------- - - Generic driver for AXP192 - -------------------------------------------------------------# -class AXP192 : I2C_Driver - def init() - super(self, I2C_Driver).init("AXP192", 0x34) - end - - # Return True = Battery Exist - def battery_present() - if self.wire.read(self.addr, 0x01, 1) & 0x20 return true - else return false - end - end - - # Input Power Status ??? - def get_input_power_status() - return self.wire.read(self.addr, 0x00, 1) - end - - # Battery Charging Status - def get_battery_chargin_status() - return self.wire.read(self.addr, 0x01, 1) - end - - # AXP chip temperature in °C - def get_temp() - return self.read12(0x5E) * 0.1 - 144.7 - end - - def get_bat_power() - return self.read24(0x70) * 0.00055 - end - - def get_bat_voltage() - return self.read12(0x78) * 0.0011 - end - def get_bat_current() - return (self.read13(0x7A) - self.read13(0x7C)) * 0.5 - end - def get_bat_charge_current() - return self.read13(0x7A) * 0.5 - end - def get_aps_voltage() - return self.read12(0x7E) * 0.0014 - end - def get_vbus_voltage() - return self.read12(0x5A) * 0.0017 - end - def get_vbus_current() - return self.read12(0x5C) * 0.375 - end - - # set LDO voltage - # ldo: 2/3 - # voltage: (mV) 1800mV - 3300mV in 100mV steps - def set_ldo_voltage(ldo, voltage) - if voltage > 3300 voltage = 15 - else voltage = (voltage / 100) - 18 - end - - if ldo == 2 - self.write8(0x28, self.read8(0x28) & 0x0F | ((voltage & 0x0F) << 4)) - end - if ldo == 3 - self.write8(0x28, self.read8(0x28) & 0xF0 | (voltage & 0x0F)) - end - end - - # set DCDC enable, 1/2/3 - def set_dcdc_enable(dcdc, state) - if dcdc == 1 self.write_bit(0x12, 0, state) end - if dcdc == 2 self.write_bit(0x12, 4, state) end - if dcdc == 3 self.write_bit(0x12, 1, state) end - end - - # set LDO enable, 2/3 (LDO 1 is always on) - def set_ldo_enable(ldo, state) - if ldo == 2 self.write_bit(0x12, 2, state) end - if ldo == 3 self.write_bit(0x12, 3, state) end - end - - # set GPIO output state 0/1/2 and 3/4 - def write_gpio(gpio, state) - if gpio >= 0 && gpio <= 2 - self.write_bit(0x94, gpio, state) - elif gpio >= 3 && gpio <= 4 - self.write_bit(0x96, gpio - 3, state) - end - end - - # Set voltage on DC-DC1/2/3 - # dcdc: 1/2/3 (warning some C libs start at 0) - # voltage: - def set_dc_voltage(dcdc, voltage) - if dcdc < 1 || dcdc > 3 return end - var v - if voltage < 700 v = 0 - elif voltage > 3500 v = 112 - elif dcdc == 2 && voltage > 2275 v = 63 # dcdc2 is limited to 2.275V - else v = (voltage - 700) / 25 - end - - var addr = 0x26 - if dcdc == 3 addr = 0x27 - elif dcdc == 2 addr = 0x23 - end - - self.write8(addr, self.read8(addr) & 0x80 | (v & 0x7F)) - end - - # Set charging current - # 100mA = 0 - # 190mA = 1 - # 280mA = 2 - # 360mA = 3 - # 450mA = 4 - # 550mA = 5 - # 630mA = 6 - # 700mA = 7 - # 780mA = 8 - # 880mA = 9 - # 960mA = 10 - # 1000mA = 11 - # 1080mA = 12 - # 1160mA = 13 - # 1240mA = 14 - # 1320mA = 15 - def set_chg_current(current_code) - self.write8(0x33, self.read8(0x33) & 0xF0 | (current_code & 0x0F)) - end - - # // Low Volt Level 1, when APS Volt Output < 3.4496 V - # // Low Volt Level 2, when APS Volt Output < 3.3992 V, then this flag is SET (0x01) - # // Flag will reset once battery volt is charged above Low Volt Level 1 - # // Note: now AXP192 have the Shutdown Voltage of 3.0V (B100) Def in REG 31H - def get_warning_level() - return self.read12(0x47) & 1 - end - - #- trigger a read every second -# - # def every_second() - # if !self.wire return nil end #- exit if not initialized -# - # end - - #- display sensor value in the web UI -# - def web_sensor() - if !self.wire return nil end #- exit if not initialized -# - import string - var msg = string.format( - "{s}VBus Voltage{m}%.3f V{e}".. - "{s}VBus Current{m}%.1f mA{e}".. - "{s}Batt Voltage{m}%.3f V{e}".. - "{s}Batt Current{m}%.1f mA{e}".. - #"{s}Batt Power{m}%.3f{e}".. - "{s}Temp AXP{m}%.1f °C{e}", - self.get_vbus_voltage(), self.get_vbus_voltage(), - self.get_bat_voltage(), self.get_bat_current(), - #self.get_bat_power(), - self.get_temp() - ) - tasmota.web_send_decimal(msg) - end - - #- add sensor value to teleperiod -# - def json_append() - if !self.wire return nil end #- exit if not initialized -# - # import string - # var ax = int(self.accel[0] * 1000) - # var ay = int(self.accel[1] * 1000) - # var az = int(self.accel[2] * 1000) - # var msg = string.format(",\"MPU6886\":{\"AX\":%i,\"AY\":%i,\"AZ\":%i,\"GX\":%i,\"GY\":%i,\"GZ\":%i}", - # ax, ay, az, self.gyro[0], self.gyro[1], self.gyro[2]) - # tasmota.response_append(msg) - end -end - -#------------------------------------------------------------- - - Specialized driver for AXP192 of M5Stack Core 2 - -------------------------------------------------------------# -class AXP192_M5Stack_Core2 : AXP192 - def init() - super(self, AXP192).init() - - if self.wire - # Disable vbus hold limit - self.write8(0x30, self.read8(0x30) & 0x04 | 0x02) - - # AXP192 GPIO1:OD OUTPUT - self.write8(0x92, self.read8(0x92) & 0xF8) - - # AXP192 GPIO2:OD OUTPUT - self.write8(0x93, self.read8(0x93) & 0xF8) - - # AXP192 RTC CHG rtc battery charging enabled - self.write8(0x35, self.read8(0x35) & 0x1C | 0xA2) - - # esp32 power voltage was set to 3.35v - self.set_esp_voltage(3350) - - # lcd backlight voltage was set to 2.80v - self.set_lcd_voltage(2800) - - # lcd logic and sdcard voltage preset to 3.3v - self.set_ldo_voltage(2, 3300) - - # vibrator voltage preset to 2v - self.set_ldo_voltage(3, 2000) - - # turn on logic and sdcard - self.set_ldo_enable(2, true) - - # turn on lcd backlight - self.set_dcdc_enable(3, true) - - # turn green led on - self.set_led(true) - - # set charging current to 100mA - self.set_chg_current(0) # 0 = 100mA - - # AXP192 GPIO4 - TBC what this does really? - self.write8(0x95, self.read8(0X95) & 0x72 | 0x84) - - # Button parameter setting - # Current: - # Boot time = 512ms - # Long key press time setting = 1s - # Automatic shutdown function setting when the key duration is longer than the shutdown duration = turn on - # PWROK signal delay after power on = 64ms - # Shutdown duration setting = 4s - self.write8(0x34, 0x4C) - - # ADC all-on - # Bit 7: Battery voltage ADC enable - # Bit 6: Battery current ADC enable - # Bit 5: ACIN voltage ADC enable - # Bit 4: ACIN current ADC enable - # Bit 3: VBUS voltage ADC enable - # Bit 2: VBUS current ADC enable - # Bit 1: APS voltage ADC enable - # Bit 0: TS pin ADC function enable - self.write8(0x82, 0xFF) - - # Reset LCD Controller - self.set_lcd_reset(false) - self.get_tasmota().delay(100) # wait for 100ms - self.set_lcd_reset(true) - self.get_tasmota().delay(100) # wait for 100ms - - # bus power mode_output - self.set_buf_power_mode(false) - end - end - - # set ESP voltage on DCDC1 - def set_esp_voltage(voltage) - if voltage >= 3000 && voltage <= 3400 - self.set_dc_voltage(1, voltage) - end - end - - # set LCD backlight voltage on DCDC3 - def set_lcd_voltage(voltage) - if voltage < 2500 voltage = 2500 end - if voltage > 3300 voltage = 3300 end - self.set_dc_voltage(3, voltage) - end - - # set state of the green led, GPIO 1 - def set_led(state) - self.write_gpio(1, !state) - end - - # LCD Controller Reset pin - def set_lcd_reset(state) - self.write_gpio(4, state) - end - - # Speaker enable - def set_speaker_enable(state) - self.write_gpio(2, state) - end - - # Bus Power Mode - def set_buf_power_mode(state) - if (state) - self.write8(0x12, self.read8(0x12) & 0xBF) # set EXTEN to disable 5v boost - self.write8(0x90, self.read8(0x90) & 0xF8 | 0x01) # set GPIO0 to float, using enternal pulldown resistor to enable supply from BUS_5VS - else - self.write8(0x91, self.read8(0x91) & 0x0F | 0xF0) - self.write8(0x90, self.read8(0x90) & 0xF8 | 0x02) # set GPIO0 to LDO OUTPUT , pullup N_VBUSEN to disable supply from BUS_5V - self.write8(0x12, self.read8(0x12) | 0x40) # set EXTEN to enable 5v boost - end - end -end - -#------------------------------------------------------------- - - Specialized driver for AXP192 of M5StickC - -------------------------------------------------------------# -class AXP192_M5StickC : AXP192 - def init() - super(self, AXP192).init() - if self.wire - # Disable vbus hold limit - self.write8(0x30, 0x80) - - # lcd backlight voltage was set to 2.80v - self.set_lcd_voltage(2800) - - # set LDO3 3.0V TFT - self.set_ldo_voltage(3, 3000) - - # Set ADC sample rate to 200hz - self.write8(0x84, 0xF2) - - # set charging current to 100mA - self.set_chg_current(0) # 0 = 100mA - - # esp32 power voltage was set to 3.3v - self.set_esp_voltage(3300) - - # PEK key parameter setting - # Current: - # Boot time setting = 512ms - # Long press time setting = 1s - # Automatic shutdown function setting when the key duration is longer than the shutdown duration = turn on - # PWROK signal delay after power on = 64ms - # Shutdown duration setting = 4s - self.write8(0x36, 0x4C) - - # Mic GPIO0 - floating - self.write8(0x90, 0x07) - - # enable LDO2, LDO3, DCDC1, DCDC3 - self.set_ldo_enable(2, true) - self.set_ldo_enable(3, true) - self.set_dcdc_enable(1, true) - self.set_dcdc_enable(3, true) - - # Set temperature protection - self.write8(0x39, 0xFC) - - # Enable RTC BAT charge - self.write8(0x35, 0xA2) - # Write1Byte(0x35, 0xa2 & (disableRTC ? 0x7F : 0xFF)); - - # Enable bat detection - self.write8(0x32, 0x46) - - # Set Power off voltage 3.0v - self.write8(0x31, self.read8(0x31) & 0xF8 | 0x04) - - # ADC all-on - # Bit 7: Battery voltage ADC enable - # Bit 6: Battery current ADC enable - # Bit 5: ACIN voltage ADC enable - # Bit 4: ACIN current ADC enable - # Bit 3: VBUS voltage ADC enable - # Bit 2: VBUS current ADC enable - # Bit 1: APS voltage ADC enable - # Bit 0: TS pin ADC function enable - self.write8(0x82, 0xFF) - end - end - - # set ESP voltage on DCDC1 - def set_esp_voltage(voltage) - if voltage >= 3000 && voltage <= 3400 - self.set_dc_voltage(1, voltage) - end - end - - # set LCD backlight voltage on DCDC3 - def set_lcd_voltage(voltage) - if voltage < 2500 voltage = 2500 end - if voltage > 3300 voltage = 3300 end - self.set_ldo_voltage(2, voltage) - end - - # LCD Controller Reset pin - def set_lcd_reset(state) - self.set_ldo_enable(3, state) - end - -end - -# axp = AXP192_M5Stack_Core2() -# tasmota.add_driver(axp) - - -axp = AXP192_M5StickC() -tasmota.add_driver(axp) diff --git a/tasmota/berry/drivers/i2c_axp192_M5StackCore2.be b/tasmota/berry/drivers/i2c_axp192_M5StackCore2.be new file mode 100644 index 000000000..057c3d4e1 --- /dev/null +++ b/tasmota/berry/drivers/i2c_axp192_M5StackCore2.be @@ -0,0 +1,122 @@ +#------------------------------------------------------------- + - Specialized driver for AXP192 of M5Stack Core 2 + -------------------------------------------------------------# +class AXP192_M5Stack_Core2 : AXP192 + def init() + super(self, AXP192).init() + + if self.wire + # Disable vbus hold limit + self.write8(0x30, self.read8(0x30) & 0x04 | 0x02) + + # AXP192 GPIO1:OD OUTPUT + self.write8(0x92, self.read8(0x92) & 0xF8) + + # AXP192 GPIO2:OD OUTPUT + self.write8(0x93, self.read8(0x93) & 0xF8) + + # AXP192 RTC CHG rtc battery charging enabled + self.write8(0x35, self.read8(0x35) & 0x1C | 0xA2) + + # esp32 power voltage was set to 3.35v + self.set_esp_voltage(3350) + + # lcd backlight voltage was set to 2.80v + self.set_lcd_voltage(2800) + + # lcd logic and sdcard voltage preset to 3.3v + self.set_ldo_voltage(2, 3300) + + # vibrator voltage preset to 2v + self.set_ldo_voltage(3, 2000) + + # turn on logic and sdcard + self.set_ldo_enable(2, true) + + # turn on lcd backlight + self.set_dcdc_enable(3, true) + + # turn green led on + self.set_led(true) + + # set charging current to 100mA + self.set_chg_current(0) # 0 = 100mA + + # AXP192 GPIO4 - TBC what this does really? + self.write8(0x95, self.read8(0X95) & 0x72 | 0x84) + + # Button parameter setting + # Current: + # Boot time = 512ms + # Long key press time setting = 1s + # Automatic shutdown function setting when the key duration is longer than the shutdown duration = turn on + # PWROK signal delay after power on = 64ms + # Shutdown duration setting = 4s + self.write8(0x34, 0x4C) + + # ADC all-on + # Bit 7: Battery voltage ADC enable + # Bit 6: Battery current ADC enable + # Bit 5: ACIN voltage ADC enable + # Bit 4: ACIN current ADC enable + # Bit 3: VBUS voltage ADC enable + # Bit 2: VBUS current ADC enable + # Bit 1: APS voltage ADC enable + # Bit 0: TS pin ADC function enable + self.write8(0x82, 0xFF) + + # Reset LCD Controller + self.set_lcd_reset(false) + self.get_tasmota().delay(100) # wait for 100ms + self.set_lcd_reset(true) + self.get_tasmota().delay(100) # wait for 100ms + + # bus power mode_output + self.set_buf_power_mode(false) + end + end + + # set ESP voltage on DCDC1 + def set_esp_voltage(voltage) + if voltage >= 3000 && voltage <= 3400 + self.set_dc_voltage(1, voltage) + end + end + + # set LCD backlight voltage on DCDC3 + def set_lcd_voltage(voltage) + if voltage < 2500 voltage = 2500 end + if voltage > 3300 voltage = 3300 end + self.set_dc_voltage(3, voltage) + end + + # set state of the green led, GPIO 1 + def set_led(state) + self.write_gpio(1, !state) + end + + # LCD Controller Reset pin + def set_lcd_reset(state) + self.write_gpio(4, state) + end + + # Speaker enable + def set_speaker_enable(state) + self.write_gpio(2, state) + end + + # Bus Power Mode + def set_buf_power_mode(state) + if (state) + self.write8(0x12, self.read8(0x12) & 0xBF) # set EXTEN to disable 5v boost + self.write8(0x90, self.read8(0x90) & 0xF8 | 0x01) # set GPIO0 to float, using enternal pulldown resistor to enable supply from BUS_5VS + else + self.write8(0x91, self.read8(0x91) & 0x0F | 0xF0) + self.write8(0x90, self.read8(0x90) & 0xF8 | 0x02) # set GPIO0 to LDO OUTPUT , pullup N_VBUSEN to disable supply from BUS_5V + self.write8(0x12, self.read8(0x12) | 0x40) # set EXTEN to enable 5v boost + end + end +end + +axp = AXP192_M5Stack_Core2() +tasmota.add_driver(axp) diff --git a/tasmota/berry/drivers/i2c_axp192_M5StickC.be b/tasmota/berry/drivers/i2c_axp192_M5StickC.be new file mode 100644 index 000000000..9d38bea3a --- /dev/null +++ b/tasmota/berry/drivers/i2c_axp192_M5StickC.be @@ -0,0 +1,91 @@ +#------------------------------------------------------------- + - Specialized driver for AXP192 of M5StickC + -------------------------------------------------------------# +class AXP192_M5StickC : AXP192 + def init() + super(self, AXP192).init() + if self.wire + # Disable vbus hold limit + self.write8(0x30, 0x80) + + # lcd backlight voltage was set to 2.80v + self.set_lcd_voltage(2800) + + # set LDO3 3.0V TFT + self.set_ldo_voltage(3, 3000) + + # Set ADC sample rate to 200hz + self.write8(0x84, 0xF2) + + # set charging current to 100mA + self.set_chg_current(0) # 0 = 100mA + + # esp32 power voltage was set to 3.3v + self.set_esp_voltage(3300) + + # PEK key parameter setting + # Current: + # Boot time setting = 512ms + # Long press time setting = 1s + # Automatic shutdown function setting when the key duration is longer than the shutdown duration = turn on + # PWROK signal delay after power on = 64ms + # Shutdown duration setting = 4s + self.write8(0x36, 0x4C) + + # Mic GPIO0 - floating + self.write8(0x90, 0x07) + + # enable LDO2, LDO3, DCDC1, DCDC3 + self.set_ldo_enable(2, true) + self.set_ldo_enable(3, true) + self.set_dcdc_enable(1, true) + self.set_dcdc_enable(3, true) + + # Set temperature protection + self.write8(0x39, 0xFC) + + # Enable RTC BAT charge + self.write8(0x35, 0xA2) + # Write1Byte(0x35, 0xa2 & (disableRTC ? 0x7F : 0xFF)); + + # Enable bat detection + self.write8(0x32, 0x46) + + # Set Power off voltage 3.0v + self.write8(0x31, self.read8(0x31) & 0xF8 | 0x04) + + # ADC all-on + # Bit 7: Battery voltage ADC enable + # Bit 6: Battery current ADC enable + # Bit 5: ACIN voltage ADC enable + # Bit 4: ACIN current ADC enable + # Bit 3: VBUS voltage ADC enable + # Bit 2: VBUS current ADC enable + # Bit 1: APS voltage ADC enable + # Bit 0: TS pin ADC function enable + self.write8(0x82, 0xFF) + end + end + + # set ESP voltage on DCDC1 + def set_esp_voltage(voltage) + if voltage >= 3000 && voltage <= 3400 + self.set_dc_voltage(1, voltage) + end + end + + # set LCD backlight voltage on DCDC3 + def set_lcd_voltage(voltage) + if voltage < 2500 voltage = 2500 end + if voltage > 3300 voltage = 3300 end + self.set_ldo_voltage(2, voltage) + end + + # LCD Controller Reset pin + def set_lcd_reset(state) + self.set_ldo_enable(3, state) + end +end + +axp = AXP192_M5StickC() +tasmota.add_driver(axp) From 99cfd1dcfccd9a65789942d545b78d5201cbbc51 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 14 Sep 2021 08:58:27 +0200 Subject: [PATCH 192/317] quick fix since this causes a crash on ESP32 --- tasmota/xdrv_23_zigbee_A_impl.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdrv_23_zigbee_A_impl.ino b/tasmota/xdrv_23_zigbee_A_impl.ino index ebc71e9cc..bb241d5e4 100644 --- a/tasmota/xdrv_23_zigbee_A_impl.ino +++ b/tasmota/xdrv_23_zigbee_A_impl.ino @@ -1491,6 +1491,7 @@ void CmndZbEZSPListen(void) { } void ZigbeeGlowPermitJoinLight(void) { +#ifdef ESP8266 // quick fix since this causes a crash on ESP32 static const uint16_t cycle_time = 1000; // cycle up and down in 1000 ms static const uint16_t half_cycle_time = cycle_time / 2; // cycle up and down in 1000 ms @@ -1511,6 +1512,7 @@ void ZigbeeGlowPermitJoinLight(void) { if (led_pin >= 0) { analogWrite(led_pin, TasmotaGlobal.ledlnk_inverted ? 1023 - led_power : led_power); } +#endif } #endif // USE_ZIGBEE_EZSP From c7d7e2f4da9e1428edb434f7b58516cdc16c3235 Mon Sep 17 00:00:00 2001 From: Christopher BRAVO CERCAS Date: Tue, 14 Sep 2021 20:45:20 +0200 Subject: [PATCH 193/317] support AHT20 without enabling AHT1x --- tasmota/xsns_63_aht1x.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tasmota/xsns_63_aht1x.ino b/tasmota/xsns_63_aht1x.ino index bb47873eb..315930c0b 100644 --- a/tasmota/xsns_63_aht1x.ino +++ b/tasmota/xsns_63_aht1x.ino @@ -19,7 +19,7 @@ */ #ifdef USE_I2C -#ifdef USE_AHT1x +#if defined(USE_AHT1x) || defined(USE_AHT2x) /*********************************************************************************************\ * AHT10/15/20 - Temperature and Humidity @@ -38,6 +38,7 @@ * * 27.08.2020 support for AHT20 added. Now, the AHT20 should support standard I2C Protokoll * and allows other I2C Devices on the bus but have only one I2C Address (0x38) + * 14.09.2021 support AHT20 without enabling AHT1x * * AHT20 I2C Address: 0x38 \*********************************************************************************************/ From 55202aa7f5b23ccb8092e02499a2db7d0e060b61 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 14 Sep 2021 22:07:20 +0200 Subject: [PATCH 194/317] Berry support for Serial --- CHANGELOG.md | 1 + lib/libesp32/Berry/default/be_modtab.c | 2 + lib/libesp32/Berry/default/be_serial_lib.c | 66 + lib/libesp32/Berry/generate/be_const_strtab.h | 1379 +++++------ .../Berry/generate/be_const_strtab_def.h | 2010 +++++++++-------- .../be_fixed_be_class_tasmota_serial.h | 47 + tasmota/xdrv_52_3_berry_serial.ino | 155 ++ 7 files changed, 1999 insertions(+), 1661 deletions(-) create mode 100644 lib/libesp32/Berry/default/be_serial_lib.c create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h create mode 100644 tasmota/xdrv_52_3_berry_serial.ino diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e29e7c10..1bea88447 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file. - ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) - Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 - Support for ESP32/ESP32S2 DAC gpio via Berry +- Berry support for Serial ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 1b6e8378a..bfc02961f 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -105,6 +105,7 @@ BERRY_LOCAL const bntvmodule* const be_module_table[] = { extern void be_load_tasmota_ntvlib(bvm *vm); extern void be_load_wirelib(bvm *vm); extern void be_load_onewirelib(bvm *vm); +extern void be_load_serial_lib(bvm *vm); extern void be_load_Driver_class(bvm *vm); extern void be_load_Timer_class(bvm *vm); extern void be_load_driver_i2c_lib(bvm *vm); @@ -148,6 +149,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_tasmota_ntvlib(vm); be_load_Driver_class(vm); be_load_md5_lib(vm); + be_load_serial_lib(vm); #ifdef USE_ALEXA_AVS be_load_crypto_lib(vm); #endif diff --git a/lib/libesp32/Berry/default/be_serial_lib.c b/lib/libesp32/Berry/default/be_serial_lib.c new file mode 100644 index 000000000..3cbcbb0bf --- /dev/null +++ b/lib/libesp32/Berry/default/be_serial_lib.c @@ -0,0 +1,66 @@ +/******************************************************************** + * Tasmota lib + * + * To use: `import wire` + * + * 2 wire communication - I2C + *******************************************************************/ +#include "be_constobj.h" + +#include "esp32-hal.h" + +extern int b_serial_init(bvm *vm); +extern int b_serial_deinit(bvm *vm); + +extern int b_serial_write(bvm *vm); +extern int b_serial_read(bvm *vm); +extern int b_serial_available(bvm *vm); +extern int b_serial_flush(bvm *vm); + +#include "../generate/be_fixed_be_class_tasmota_serial.h" + +void be_load_serial_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_tasmota_serial); + be_setglobal(vm, "Serial"); + be_pop(vm, 1); +} + +/* @const_object_info_begin + +class be_class_tasmota_serial (scope: global, name: Serial) { + .p, var + + SERIAL_5N1, int(SERIAL_5N1) + SERIAL_6N1, int(SERIAL_6N1) + SERIAL_7N1, int(SERIAL_7N1) + SERIAL_8N1, int(SERIAL_8N1) + SERIAL_5N2, int(SERIAL_5N2) + SERIAL_6N2, int(SERIAL_6N2) + SERIAL_7N2, int(SERIAL_7N2) + SERIAL_8N2, int(SERIAL_8N2) + SERIAL_5E1, int(SERIAL_5E1) + SERIAL_6E1, int(SERIAL_6E1) + SERIAL_7E1, int(SERIAL_7E1) + SERIAL_8E1, int(SERIAL_8E1) + SERIAL_5E2, int(SERIAL_5E2) + SERIAL_6E2, int(SERIAL_6E2) + SERIAL_7E2, int(SERIAL_7E2) + SERIAL_8E2, int(SERIAL_8E2) + SERIAL_5O1, int(SERIAL_5O1) + SERIAL_6O1, int(SERIAL_6O1) + SERIAL_7O1, int(SERIAL_7O1) + SERIAL_8O1, int(SERIAL_8O1) + SERIAL_5O2, int(SERIAL_5O2) + SERIAL_6O2, int(SERIAL_6O2) + SERIAL_7O2, int(SERIAL_7O2) + SERIAL_8O2, int(SERIAL_8O2) + + init, func(b_serial_init) + deinit, func(b_serial_deinit) + + write, func(b_serial_write) + read, func(b_serial_read) + available, func(b_serial_available) + flush, func(b_serial_flush) +} +@const_object_info_end */ diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 535a363f2..c9bcb0e43 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,684 +1,711 @@ -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_vcall; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_tostring; extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_list; extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_ADC_JOY; extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_vcall; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_PWM1_INV; extern const bcstring be_const_str_lv_draw_mask_saved; extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_RXD; extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_detect; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_cosh; extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_Serial; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_memory; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index ae7b627a7..b5829772b 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1024 +1,1064 @@ -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_vcall); -be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_MHZ_TXD); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_PZEM016_RX); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_LEFT); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_tabview); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_PZEM004_RX); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_lv_tabview); be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, NULL); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_BUZZER); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DI); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, NULL); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_IBEACON_TX); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_NRF24_DC); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_I2C_Driver); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, NULL); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, NULL); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_ADE7953_IRQ); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SERIAL_7N2); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_setitem); be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_CC1101_GDO2); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_DAC); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_P9813_DAT); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SDM120_TX); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_MAX31855CLK); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_INPUT_PULLUP); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SYMBOL_GPS); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_get_string); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_dac_voltage); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_exec_rules); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_LEDLNK); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_BATTERY_FULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, NULL); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_read8); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_read8); be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, NULL); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_dot_p); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_ILI9341_CS); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_NONE); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_I2S_IN_DATA); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_KEY1_INV); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_SERIAL_8N2); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_ROT1B); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_I2S_IN_CLK); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_DDS2382_TX); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_KEY1_NP); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_KEY1_INV_NP); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, NULL); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_I2S_IN_SLCT); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_KEY1_PD); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SERIAL_6O1); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_LMT01); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_get_string); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_HRE_DATA); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_vcall); +be_define_const_str(vcall, "vcall", 2639337069u, 0, 5, NULL); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SERIAL_5N2); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HX711_DAT); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_AES_GCM); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_TASMOTACLIENT_RXD); be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, NULL); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_pin); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_I2S_OUT_CLK); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DDSU666_TX); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, NULL); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_pin); be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_INPUT_PULLUP); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_available); +be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(Serial, "Serial", 143954585u, 0, 6, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_DSB); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_CNTR1_NP); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_MIEL_HVAC_RX); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_A4988_MS1); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_AZ_RXD); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_HM10_RX); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SERIAL_6O2); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SERIAL_8E2); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_ADC_BUTTON); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_DI); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_SERIAL_8N1); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SERIAL_7E1); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_DHT11_OUT); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_LED1_INV); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_WEBCAM_XCLK, - NULL, - (const bstring *)&be_const_str_reverse, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_pin_mode, - (const bstring *)&be_const_str_WEBCAM_VSYNC, - (const bstring *)&be_const_str_HLW_CF, - NULL, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, - (const bstring *)&be_const_str_remove_cmd, - (const bstring *)&be_const_str_wire, - (const bstring *)&be_const_str_lv_keyboard, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_IBEACON_RX, - NULL, - (const bstring *)&be_const_str_SYMBOL_PREV, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_lv_page, - (const bstring *)&be_const_str_lv_btn, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_WINDMETER_SPEED, - (const bstring *)&be_const_str_lv_arc, - (const bstring *)&be_const_str_lv_bar, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_delay, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_ZIGBEE_RST, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_TX2X_TXD_BLACK, - (const bstring *)&be_const_str_publish_result, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_keys, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_REL1, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, - (const bstring *)&be_const_str_SBR_TX, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_publish, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_WS2812, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_codedump, - NULL, (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_get_free_heap, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_WIEGAND_D1, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_bytes, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_gc, + (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, + (const bstring *)&be_const_str_SWT1_PD, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_loop, NULL, - (const bstring *)&be_const_str_SSPI_MOSI, (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_IRRECV, NULL, + (const bstring *)&be_const_str_SERIAL_5N1, + (const bstring *)&be_const_str_SSPI_MOSI, NULL, - (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_DSB_OUT, NULL, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_lv_draw_rect_dsc, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_find, + (const bstring *)&be_const_str_SYMBOL_SETTINGS, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_decrypt, NULL, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_SENSOR_END, - (const bstring *)&be_const_str_SYMBOL_TRASH, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_SERIAL_8O1, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_ZIGBEE_TX, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_SERIAL_7O2, NULL, (const bstring *)&be_const_str_OPTION_A, NULL, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_time_reached, - (const bstring *)&be_const_str_OUTPUT_LO, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_push, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_SPI_CS, - NULL, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_XPT2046_CS, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_lv_draw_mask_common_dsc, - (const bstring *)&be_const_str_count, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_concat, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_A4988_MS1, - NULL, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_toint, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_lv_dropdown, - (const bstring *)&be_const_str_map, - (const bstring *)&be_const_str_import, - (const bstring *)&be_const_str_sqrt, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_SWT1_PD, - NULL, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_setitem, - (const bstring *)&be_const_str_WEBCAM_PWDN, NULL, NULL, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_get_light, - (const bstring *)&be_const_str__drivers, - NULL, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_opt_eq, - NULL, - (const bstring *)&be_const_str_KEY1_NP, - NULL, - NULL, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_bytes, - (const bstring *)&be_const_str_opt_neq, - NULL, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str_MGC3130_RESET, - NULL, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_seti, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_asstring, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str_lower, (const bstring *)&be_const_str_SM16716_CLK, - NULL, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_break, - NULL, - (const bstring *)&be_const_str_on, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str___upper__, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_allocated, - (const bstring *)&be_const_str_add_driver, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_wire2, - (const bstring *)&be_const_str__get_cb, - (const bstring *)&be_const_str_HPMA_RX, - NULL, - (const bstring *)&be_const_str_SSD1331_DC, - NULL, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_SERIAL_5O2, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_SERIAL_7N1, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_find_op, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_fromstring, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_acos, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_content_start, - (const bstring *)&be_const_str_ctypes_bytes, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_opt_call, - NULL, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_target_search, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_atan, - (const bstring *)&be_const_str_DHT11, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_arg_size, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_SERIAL_6N1, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_lv_draw_mask_angle_param, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_lv_page, + (const bstring *)&be_const_str_top, + (const bstring *)&be_const_str_TM1637DIO, + (const bstring *)&be_const_str_MAX7219CLK, (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_SDS0X1_RX, NULL, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_lv_design_cb, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_lv_style, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_get_free_heap, + (const bstring *)&be_const_str_begin, + NULL, + (const bstring *)&be_const_str_rtc, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + NULL, + (const bstring *)&be_const_str_getbits, + (const bstring *)&be_const_str_lv_draw_mask_fade_param, + (const bstring *)&be_const_str_lv_bar, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_HALLEFFECT, + NULL, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_SYMBOL_POWER, (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_SYMBOL_WIFI, - (const bstring *)&be_const_str_strftime, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_lv_label, + (const bstring *)&be_const_str_DAC, NULL, - (const bstring *)&be_const_str_lv_draw_mask_saved, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_TM1638STB, - (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_redirect, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_load_font, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, NULL, - (const bstring *)&be_const_str_content_button, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str___lower__, + NULL, + (const bstring *)&be_const_str_MAX31855DO, + NULL, + (const bstring *)&be_const_str_skip, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_time_reached, + (const bstring *)&be_const_str__read, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_TX2X_TXD_BLACK, + NULL, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_set_timer, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + NULL, + (const bstring *)&be_const_str_SERIAL_8E1, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_WIEGAND_D1, + NULL, + (const bstring *)&be_const_str_calldepth, + (const bstring *)&be_const_str_remove_timer, + (const bstring *)&be_const_str_DDSU666_RX, (const bstring *)&be_const_str_A4988_STP, NULL, - (const bstring *)&be_const_str_lv_sqrt_res, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str___iterator__, + (const bstring *)&be_const_str_response_append, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_wire1, NULL, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_try, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_WIEGAND_D0, - (const bstring *)&be_const_str_WEBCAM_DATA, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_AudioFileSourceFS, NULL, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_XPT2046_CS, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_lv_draw_line_dsc, + (const bstring *)&be_const_str_lv_dropdown, + (const bstring *)&be_const_str_SERIAL_6E1, + (const bstring *)&be_const_str_SI7021, + NULL, + (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_DEEPSLEEP, + NULL, + (const bstring *)&be_const_str_classname, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_SYMBOL_DIRECTORY, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_SERIAL_7E2, + (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_lv_draw_mask_saved, + (const bstring *)&be_const_str_insert, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_SERIAL_5E1, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, (const bstring *)&be_const_str_TM1638CLK, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_cosh, NULL, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_MD5, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_SERIAL_5O1, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_depower, + (const bstring *)&be_const_str_SPI_CS, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_remove_cmd, + (const bstring *)&be_const_str_TUYA_RX, + NULL, + (const bstring *)&be_const_str_Serial, + (const bstring *)&be_const_str_clear, + (const bstring *)&be_const_str_content_flush, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_dac_voltage, + NULL, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_SYMBOL_STOP, + (const bstring *)&be_const_str_PULLUP, + NULL, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_CC1101_GDO2, + NULL, + (const bstring *)&be_const_str_input, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_SERIAL_5E2, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_save, + (const bstring *)&be_const_str_SSD1351_DC, + (const bstring *)&be_const_str__get_cb, + NULL, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_get, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_MGC3130_RESET, + NULL, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_SERIAL_6N2, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_lv_cb, + (const bstring *)&be_const_str_codedump, + (const bstring *)&be_const_str_resp_cmnd_done, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_BS814_DAT, + NULL, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_SYMBOL_VIDEO, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_lv_keyboard, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_add_cmd, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_dot_w, + NULL, + (const bstring *)&be_const_str_size, + NULL, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_resp_cmnd_failed, + (const bstring *)&be_const_str_gamma10, + (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, + (const bstring *)&be_const_str_sin, + (const bstring *)&be_const_str_yield, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_ILI9488_CS, + NULL, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_do, + (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_lv_indev, + NULL, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_call, + (const bstring *)&be_const_str_opt_call, + NULL, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_NRG_SEL, + NULL, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_tan, + (const bstring *)&be_const_str_TM1638STB, + NULL, + (const bstring *)&be_const_str_arg_name, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, + NULL, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_OPEN_DRAIN, (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_ADC_PH, NULL, - (const bstring *)&be_const_str_compile + (const bstring *)&be_const_str_eth, + (const bstring *)&be_const_str_floor, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_CHANGE, + NULL, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_SYMBOL_USB, + NULL, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_SERIAL_7O1, + NULL, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_members, + (const bstring *)&be_const_str_BOILER_OT_RX, + NULL, + NULL, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_AS608_TX, + NULL }; static const struct bconststrtab m_const_string_table = { - .size = 331, - .count = 662, + .size = 344, + .count = 689, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h new file mode 100644 index 000000000..6e89d6fc0 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h @@ -0,0 +1,47 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_tasmota_serial_map) { + { be_const_key(SERIAL_5E2, 3), be_const_int(SERIAL_5E2) }, + { be_const_key(SERIAL_8E1, -1), be_const_int(SERIAL_8E1) }, + { be_const_key(SERIAL_8O1, 22), be_const_int(SERIAL_8O1) }, + { be_const_key(SERIAL_5O1, -1), be_const_int(SERIAL_5O1) }, + { be_const_key(read, 0), be_const_func(b_serial_read) }, + { be_const_key(flush, -1), be_const_func(b_serial_flush) }, + { be_const_key(SERIAL_7E2, -1), be_const_int(SERIAL_7E2) }, + { be_const_key(SERIAL_5N2, -1), be_const_int(SERIAL_5N2) }, + { be_const_key(SERIAL_6N2, -1), be_const_int(SERIAL_6N2) }, + { be_const_key(SERIAL_6E2, -1), be_const_int(SERIAL_6E2) }, + { be_const_key(available, -1), be_const_func(b_serial_available) }, + { be_const_key(SERIAL_6N1, 12), be_const_int(SERIAL_6N1) }, + { be_const_key(SERIAL_7O1, -1), be_const_int(SERIAL_7O1) }, + { be_const_key(SERIAL_7N1, 14), be_const_int(SERIAL_7N1) }, + { be_const_key(SERIAL_6O1, -1), be_const_int(SERIAL_6O1) }, + { be_const_key(SERIAL_6E1, -1), be_const_int(SERIAL_6E1) }, + { be_const_key(write, -1), be_const_func(b_serial_write) }, + { be_const_key(SERIAL_8O2, -1), be_const_int(SERIAL_8O2) }, + { be_const_key(SERIAL_5O2, 24), be_const_int(SERIAL_5O2) }, + { be_const_key(SERIAL_5E1, 26), be_const_int(SERIAL_5E1) }, + { be_const_key(deinit, -1), be_const_func(b_serial_deinit) }, + { be_const_key(SERIAL_5N1, -1), be_const_int(SERIAL_5N1) }, + { be_const_key(SERIAL_8N1, 1), be_const_int(SERIAL_8N1) }, + { be_const_key(SERIAL_7E1, -1), be_const_int(SERIAL_7E1) }, + { be_const_key(SERIAL_8N2, -1), be_const_int(SERIAL_8N2) }, + { be_const_key(dot_p, 8), be_const_var(0) }, + { be_const_key(SERIAL_8E2, -1), be_const_int(SERIAL_8E2) }, + { be_const_key(SERIAL_7O2, -1), be_const_int(SERIAL_7O2) }, + { be_const_key(SERIAL_7N2, -1), be_const_int(SERIAL_7N2) }, + { be_const_key(init, -1), be_const_func(b_serial_init) }, + { be_const_key(SERIAL_6O2, 9), be_const_int(SERIAL_6O2) }, +}; + +static be_define_const_map( + be_class_tasmota_serial_map, + 31 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_tasmota_serial, + 1, + NULL, + Serial +); diff --git a/tasmota/xdrv_52_3_berry_serial.ino b/tasmota/xdrv_52_3_berry_serial.ino new file mode 100644 index 000000000..5f20c8a8a --- /dev/null +++ b/tasmota/xdrv_52_3_berry_serial.ino @@ -0,0 +1,155 @@ +/* + xdrv_52_3_berry_serial.ino - Berry scripting language, native fucnctions + + Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#ifdef USE_BERRY + +#include +#include + +/*********************************************************************************************\ + * Native functions mapped to Berry functions + * + * import wire + * + * wire.get_free_heap() -> int + * +\*********************************************************************************************/ +extern "C" { + TasmotaSerial * b_serial_get(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + TasmotaSerial * ow = (TasmotaSerial *) be_tocomptr(vm, -1); + be_pop(vm, 1); + return ow; + } + + // Berry: `init(rx_gpio:int, tx_gpio:int, speed:int [, config:int])` + int32_t b_serial_init(struct bvm *vm); + int32_t b_serial_init(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc >= 4 && be_isint(vm, 2) && be_isint(vm, 3) && be_isint(vm, 4)) { + int32_t rx = be_toint(vm, 2); + int32_t tx = be_toint(vm, 3); + int32_t speed = be_toint(vm, 4); + int32_t mode = SERIAL_8N1; + if (argc >= 5 && be_isint(vm, 5)) { + mode = be_toint(vm, 5); + } + TasmotaSerial * ser = new TasmotaSerial(rx, tx); + bool ok = ser->begin(speed, mode); + if (!ok) { + delete ser; + be_raise(vm, "internal_error", "Unable to start serial"); + } + be_pushcomptr(vm, (void*) ser); + be_setmember(vm, 1, ".p"); + be_return_nil(vm); + } + be_raise(vm, kTypeError, nullptr); + } + + // Berry: `deinit(void)` + int32_t b_serial_deinit(struct bvm *vm); + int32_t b_serial_deinit(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + TasmotaSerial * ser = (TasmotaSerial *) be_tocomptr(vm, -1); + if (ser) { + delete ser; + // clear + be_pushcomptr(vm, (void*) NULL); + be_setmember(vm, 1, ".p"); + } + be_return_nil(vm); + } + + // Berry: `available(void) -> int` (how many bytes are waiting in RX buffer) + int32_t b_serial_available(struct bvm *vm); + int32_t b_serial_available(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + TasmotaSerial * ser = (TasmotaSerial *) be_tocomptr(vm, -1); + if (ser) { + be_pushint(vm, ser->available()); + be_return(vm); + } + be_return_nil(vm); + } + + // Berry: `flush(void) -> nil` (wait for all bytes to be sent, and clear rx buffer) + int32_t b_serial_flush(struct bvm *vm); + int32_t b_serial_flush(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + TasmotaSerial * ser = (TasmotaSerial *) be_tocomptr(vm, -1); + if (ser) { + ser->flush(); + } + be_return_nil(vm); + } + + // Berry: `read(void) -> bytes()` (read all bytes in RX buffer) + int32_t b_serial_read(struct bvm *vm); + int32_t b_serial_read(struct bvm *vm) { + be_getmember(vm, 1, ".p"); + TasmotaSerial * ser = (TasmotaSerial *) be_tocomptr(vm, -1); + if (ser) { + int32_t len = ser->available(); + if (len < 0) { len = 0; } + if (len > 0) { + // read bytes on stack + char * rx_buf = new char[len]; + len = ser->read(rx_buf, len); + be_pushbytes(vm, rx_buf, len); + delete[] rx_buf; + be_return(vm); + } else { + be_pushbytes(vm, nullptr, 0); + be_return(vm); + } + } + be_return_nil(vm); + } + + // Berry: `write(int || bytes) -> nil` (write bytes, blocking until all sent) + int32_t b_serial_write(struct bvm *vm); + int32_t b_serial_write(struct bvm *vm) { + int32_t argc = be_top(vm); // Get the number of arguments + if (argc >= 2 && (be_isint(vm, 2) || be_isbytes(vm, 2))) { + be_getmember(vm, 1, ".p"); + TasmotaSerial * ser = (TasmotaSerial *) be_tocomptr(vm, -1); + if (ser) { + if (be_isint(vm, 2)) { + int32_t val = be_toint(vm, 2); + ser->write(val); + be_pushint(vm, 1); + } else { + size_t len; + const uint8_t * buf = (const uint8_t *) be_tobytes(vm, 2, &len); + for (uint32_t i=0; iwrite(buf[i]); + } + be_pushint(vm, len); + } + be_return(vm); + } + be_return_nil(vm); + } + be_raise(vm, kTypeError, nullptr); + } +} + +#endif // USE_BERRY From f3592b1326e7771b892b0ce12aac4c34a189e34e Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 14 Sep 2021 22:29:27 +0200 Subject: [PATCH 195/317] Change berry class from `Serial` to `serial` --- lib/libesp32/Berry/default/be_serial_lib.c | 4 ++-- lib/libesp32/Berry/generate/be_const_strtab.h | 2 +- lib/libesp32/Berry/generate/be_const_strtab_def.h | 6 +++--- .../Berry/generate/be_fixed_be_class_tasmota_serial.h | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/libesp32/Berry/default/be_serial_lib.c b/lib/libesp32/Berry/default/be_serial_lib.c index 3cbcbb0bf..4f1c4b577 100644 --- a/lib/libesp32/Berry/default/be_serial_lib.c +++ b/lib/libesp32/Berry/default/be_serial_lib.c @@ -21,13 +21,13 @@ extern int b_serial_flush(bvm *vm); void be_load_serial_lib(bvm *vm) { be_pushntvclass(vm, &be_class_tasmota_serial); - be_setglobal(vm, "Serial"); + be_setglobal(vm, "serial"); be_pop(vm, 1); } /* @const_object_info_begin -class be_class_tasmota_serial (scope: global, name: Serial) { +class be_class_tasmota_serial (scope: global, name: serial) { .p, var SERIAL_5N1, int(SERIAL_5N1) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index c9bcb0e43..3008f5901 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -449,7 +449,6 @@ extern const bcstring be_const_str_remove_cmd; extern const bcstring be_const_str_TUYA_RX; extern const bcstring be_const_str_VL53L0X_XSHUT1; extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_Serial; extern const bcstring be_const_str_open; extern const bcstring be_const_str_target_search; extern const bcstring be_const_str_clear; @@ -498,6 +497,7 @@ extern const bcstring be_const_str_find_key_i; extern const bcstring be_const_str_PZEM016_RX; extern const bcstring be_const_str_save; extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_serial; extern const bcstring be_const_str__get_cb; extern const bcstring be_const_str_ROT1A; extern const bcstring be_const_str_I2S_OUT_DATA; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index b5829772b..6e5038cd8 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -449,7 +449,6 @@ be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_VL53L0X_XSHUT1); be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_WE517_RX); be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(Serial, "Serial", 143954585u, 0, 6, &be_const_str_open); be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_target_search); be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_find); @@ -497,7 +496,8 @@ be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_ be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); @@ -928,7 +928,7 @@ static const bstring* const m_string_table[] = { (const bstring *)&be_const_str_remove_cmd, (const bstring *)&be_const_str_TUYA_RX, NULL, - (const bstring *)&be_const_str_Serial, + (const bstring *)&be_const_str_open, (const bstring *)&be_const_str_clear, (const bstring *)&be_const_str_content_flush, (const bstring *)&be_const_str_RF_SENSOR, diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h index 6e89d6fc0..630b45973 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota_serial.h @@ -43,5 +43,5 @@ BE_EXPORT_VARIABLE be_define_const_class( be_class_tasmota_serial, 1, NULL, - Serial + serial ); From f4dadc625bc8ffc66138678bf2b02ca28066cb85 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 14 Sep 2021 22:40:26 +0200 Subject: [PATCH 196/317] ``DisplayDimmer`` has now range 0..100 instead of 0..15 (#13132) * ``DisplayDimmer`` has now resolution of 8 bits instead of 4, and uses Gamma for LED * Fix changelog --- CHANGELOG.md | 1 + .../src/renderer.cpp | 5 ++ .../Display_Renderer-gemu-1.0/src/renderer.h | 3 +- lib/lib_display/UDisplay/uDisplay.cpp | 41 ++++++------- lib/lib_display/UDisplay/uDisplay.h | 8 ++- tasmota/settings.h | 2 +- tasmota/settings.ino | 2 +- tasmota/xdrv_13_display.ino | 61 ++++++++++++++----- tasmota/xdsp_03_matrix.ino | 10 +-- tasmota/xdsp_04_ili9341.ino | 2 +- tasmota/xdsp_08_ILI9488.ino | 2 +- tasmota/xdsp_09_SSD1351.ino | 2 +- tasmota/xdsp_10_RA8876.ino | 2 +- tasmota/xdsp_11_sevenseg.ino | 4 +- tasmota/xdsp_12_ST7789.ino | 2 +- tasmota/xdsp_14_SSD1331.ino | 2 +- tasmota/xdsp_15_tm1637.ino | 7 ++- tasmota/xdsp_17_universal.ino | 2 +- 18 files changed, 100 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bea88447..f5a49ac34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now +- ``DisplayDimmer`` has now range 0..100 instead of 0..15 ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp index 7449ff647..fb223680b 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.cpp @@ -58,6 +58,11 @@ uint16_t Renderer::GetColorFromIndex(uint8_t index) { } void Renderer::dim(uint8_t contrast) { + uint8_t contrast8 = ((uint32_t)contrast * 255) / 15; + dim8(contrast8, contrast8); +} + +void Renderer::dim8(uint8_t contrast, uint8_t contrast_gamma) { } diff --git a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h index 8ec0f3cde..49f4d7b5e 100644 --- a/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h +++ b/lib/lib_display/Display_Renderer-gemu-1.0/src/renderer.h @@ -71,7 +71,8 @@ public: virtual void DisplayInit(int8_t p,int8_t size,int8_t rot,int8_t font); virtual void Begin(int16_t p1,int16_t p2,int16_t p3); virtual void Updateframe(); - virtual void dim(uint8_t contrast); + virtual void dim(uint8_t contrast); // input has range 0..15 + virtual void dim8(uint8_t contrast, uint8_t contrast_gamma); // input has range 0..255, second arg has gamma correction for PWM virtual void pushColors(uint16_t *data, uint16_t len, boolean first); virtual void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); virtual void invertDisplay(boolean i); diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 0a089b6f1..7bca0f723 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -423,9 +423,9 @@ Renderer *uDisplay::Init(void) { if (bpanel >= 0) { #ifdef ESP32 - ledcSetup(ESP32_PWM_CHANNEL, 4000, 8); + ledcSetup(ESP32_PWM_CHANNEL, 977, 8); // use 10 bits resolution like in Light ledcAttachPin(bpanel, ESP32_PWM_CHANNEL); - ledcWrite(ESP32_PWM_CHANNEL, 128); + ledcWrite(ESP32_PWM_CHANNEL, 8); // 38/255 correspond roughly to 50% visual brighness (with Gamma) #else pinMode(bpanel, OUTPUT); digitalWrite(bpanel, HIGH); @@ -1343,7 +1343,7 @@ void uDisplay::DisplayOnff(int8_t on) { if (dsp_on != 0xff) spi_command_one(dsp_on); if (bpanel >= 0) { #ifdef ESP32 - ledcWrite(ESP32_PWM_CHANNEL, dimmer); + ledcWrite(ESP32_PWM_CHANNEL, dimmer8_gamma); #else digitalWrite(bpanel, HIGH); #endif @@ -1386,39 +1386,38 @@ void uDisplay::invertDisplay(boolean i) { void udisp_dimm(uint8_t dim); -void uDisplay::dim(uint8_t dim) { - dimmer = dim; +// input value is 0..15 +// void uDisplay::dim(uint8_t dim) { +// dim8(((uint32_t)dim * 255) / 15); +// } +// dim is 0..255 +void uDisplay::dim8(uint8_t dim, uint8_t dim_gamma) { // dimmer with 8 bits resolution, 0..255. Gamma correction must be done by caller + dimmer8 = dim; + dimmer8_gamma = dim_gamma; if (ep_mode) { return; } - if (interface == _UDSP_SPI) { - if (dimmer > 15) dimmer = 15; - dimmer = ((float)dimmer / 15.0) * 255.0; -#ifdef ESP32 - if (bpanel >= 0) { - ledcWrite(ESP32_PWM_CHANNEL, dimmer); - } else { - //udisp_dimm(dim); - if (dim_cbp) { - dim_cbp(dim); - } - } +#ifdef ESP32 // TODO should we also add a ESP8266 version for bpanel? + if (bpanel >= 0) { // is the BaclPanel GPIO configured + ledcWrite(ESP32_PWM_CHANNEL, dimmer8_gamma); + } else if (dim_cbp) { + dim_cbp(dim); + } #endif - - if (dim_op != 0xff) { + if (interface == _UDSP_SPI) { + if (dim_op != 0xff) { // send SPI command if dim configured SPI_BEGIN_TRANSACTION SPI_CS_LOW spi_command(dim_op); - spi_data8(dim); + spi_data8(dimmer8); SPI_CS_HIGH SPI_END_TRANSACTION } } } - // the cases are PSEUDO_OPCODES from MODULE_DESCRIPTOR // and may be exapnded with more opcodes void uDisplay::TS_RotConvert(int16_t *x, int16_t *y) { diff --git a/lib/lib_display/UDisplay/uDisplay.h b/lib/lib_display/UDisplay/uDisplay.h index 42b8f47a3..8ce012bf5 100755 --- a/lib/lib_display/UDisplay/uDisplay.h +++ b/lib/lib_display/UDisplay/uDisplay.h @@ -90,7 +90,8 @@ class uDisplay : public Renderer { uint16_t fgcol(void); uint16_t bgcol(void); int8_t color_type(void); - void dim(uint8_t dim); +// void dim(uint8_t dim); // original version with 4 bits resolution 0..15 + virtual void dim8(uint8_t dim, uint8_t dim_gamma); // dimmer with 8 bits resolution, 0..255. Gamma correction must be done by caller uint16_t GetColorFromIndex(uint8_t index); void setRotation(uint8_t m); void fillScreen(uint16_t color); @@ -180,9 +181,10 @@ class uDisplay : public Renderer { int8_t spi_clk; int8_t spi_mosi; int8_t spi_dc; - int8_t bpanel; + int8_t bpanel; // backbanel GPIO, -1 if none int8_t spi_miso; - uint8_t dimmer; + uint8_t dimmer8; // 8 bits resolution, 0..255 + uint8_t dimmer8_gamma; // 8 bits resolution, 0..255, gamma corrected SPIClass *uspi; uint8_t sspi; SPISettings spiSettings; diff --git a/tasmota/settings.h b/tasmota/settings.h index 2ceb536b4..a2d6dfefe 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -469,7 +469,7 @@ typedef struct { uint8_t display_rows; // 2D5 uint8_t display_cols[2]; // 2D6 uint8_t display_address[8]; // 2D8 - uint8_t display_dimmer; // 2E0 + int8_t display_dimmer_protected; // 2E0 - if positive range 0..15, if negative range 0..100 (neg) - don't use directly uint8_t display_size; // 2E1 TimeRule tflag[2]; // 2E2 uint16_t pwm_frequency; // 2E6 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 132e438f2..e56c9743d 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -1116,7 +1116,7 @@ void SettingsDefaultSet2(void) { Settings->display_rows = 2; Settings->display_cols[0] = 16; Settings->display_cols[1] = 8; - Settings->display_dimmer = 1; + Settings->display_dimmer_protected = -10; // 10% Settings->display_size = 1; Settings->display_font = 1; // Settings->display_rotate = 0; diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 24f9cf567..609be6015 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -395,6 +395,30 @@ uint32_t decode_te(char *line) { return skip; } +/*-------------------------------------------------------------------------------------------*/ +// Getter and Setter for DisplayDimer +// Original encoding is range 0..15 +// New encoding is range 0..100 using negative numbers, i.e. 0..-100 +uint8_t GetDisplayDimmer(void) { + if (Settings->display_dimmer_protected > 0) { + return changeUIntScale(Settings->display_dimmer_protected, 0, 15, 0, 100); + } else { + if (Settings->display_dimmer_protected < -100) { Settings->display_dimmer_protected = -100; } + return - Settings->display_dimmer_protected; + } +} + +// retro-compatible call to get range 0..15 +uint8_t GetDisplayDimmer16(void) { + return changeUIntScale(GetDisplayDimmer(), 0, 100, 0, 15); +} + +// In: 0..100 +void SetDisplayDimmer(uint8_t dimmer) { + if (dimmer > 100) { dimmer = 100; } + Settings->display_dimmer_protected = - dimmer; +} + /*-------------------------------------------------------------------------------------------*/ #define DISPLAY_BUFFER_COLS 128 // Max number of characters in linebuf @@ -1750,6 +1774,7 @@ void DisplayLocalSensor(void) void DisplayInitDriver(void) { XdspCall(FUNC_DISPLAY_INIT_DRIVER); + ApplyDisplayDimmer(); #ifdef USE_MULTI_DISPLAY Set_display(0); @@ -1821,7 +1846,7 @@ void CmndDisplay(void) { D_CMND_DISP_MODE "\":%d,\"" D_CMND_DISP_DIMMER "\":%d,\"" D_CMND_DISP_SIZE "\":%d,\"" D_CMND_DISP_FONT "\":%d,\"" D_CMND_DISP_ROTATE "\":%d,\"" D_CMND_DISP_INVERT "\":%d,\"" D_CMND_DISP_REFRESH "\":%d,\"" D_CMND_DISP_COLS "\":[%d,%d],\"" D_CMND_DISP_ROWS "\":%d}}"), Settings->display_model, Settings->display_options.type, Settings->display_width, Settings->display_height, - Settings->display_mode, changeUIntScale(Settings->display_dimmer, 0, 15, 0, 100), Settings->display_size, Settings->display_font, + Settings->display_mode, GetDisplayDimmer(), Settings->display_size, Settings->display_font, Settings->display_rotate, Settings->display_options.invert, Settings->display_refresh, Settings->display_cols[0], Settings->display_cols[1], Settings->display_rows); } @@ -1896,22 +1921,30 @@ void CmndDisplayMode(void) { ResponseCmndNumber(Settings->display_mode); } +// Apply the current display dimmer +void ApplyDisplayDimmer(void) { + uint8_t dimmer8 = changeUIntScale(GetDisplayDimmer(), 0, 100, 0, 255); + uint8_t dimmer8_gamma = ledGamma(dimmer8); + if (dimmer8 && !(disp_power)) { + ExecuteCommandPower(disp_device, POWER_ON, SRC_DISPLAY); + } + else if (!dimmer8 && disp_power) { + ExecuteCommandPower(disp_device, POWER_OFF, SRC_DISPLAY); + } + if (renderer) { + renderer->dim8(dimmer8, dimmer8_gamma); // provide 8 bits and gamma corrected dimmer in 8 bits + } else { + XdspCall(FUNC_DISPLAY_DIM); + } +} + void CmndDisplayDimmer(void) { if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) { - Settings->display_dimmer = changeUIntScale(XdrvMailbox.payload, 0, 100, 0, 15); // Correction for Domoticz (0 - 15) - if (Settings->display_dimmer && !(disp_power)) { - ExecuteCommandPower(disp_device, POWER_ON, SRC_DISPLAY); - } - else if (!Settings->display_dimmer && disp_power) { - ExecuteCommandPower(disp_device, POWER_OFF, SRC_DISPLAY); - } - if (renderer) { - renderer->dim(Settings->display_dimmer); - } else { - XdspCall(FUNC_DISPLAY_DIM); - } + uint8_t dimmer = XdrvMailbox.payload; + SetDisplayDimmer(dimmer); + ApplyDisplayDimmer(); } - ResponseCmndNumber(changeUIntScale(Settings->display_dimmer, 0, 15, 0, 100)); + ResponseCmndNumber(GetDisplayDimmer()); } void CmndDisplaySize(void) { diff --git a/tasmota/xdsp_03_matrix.ino b/tasmota/xdsp_03_matrix.ino index 5a133debc..09d8b8587 100644 --- a/tasmota/xdsp_03_matrix.ino +++ b/tasmota/xdsp_03_matrix.ino @@ -67,7 +67,7 @@ void MatrixFixed(char* txt) matrix[i]->clear(); matrix[i]->setCursor(-i *8, 0); matrix[i]->print(txt); - matrix[i]->setBrightness(Settings->display_dimmer); + matrix[i]->setBrightness(GetDisplayDimmer16()); } MatrixWrite(); } @@ -82,7 +82,7 @@ void MatrixCenter(char* txt) matrix[i]->clear(); matrix[i]->setCursor(-(i *8)+offset, 0); matrix[i]->print(txt); - matrix[i]->setBrightness(Settings->display_dimmer); + matrix[i]->setBrightness(GetDisplayDimmer16()); } MatrixWrite(); } @@ -106,7 +106,7 @@ void MatrixScrollLeft(char* txt, int loop) matrix[i]->clear(); matrix[i]->setCursor(mtx_x - i *8, 0); matrix[i]->print(txt); - matrix[i]->setBrightness(Settings->display_dimmer); + matrix[i]->setBrightness(GetDisplayDimmer16()); } MatrixWrite(); // Move text position left by 1 pixel. @@ -151,7 +151,7 @@ void MatrixScrollUp(char* txt, int loop) matrix[i]->setCursor(-i *8, mtx_y + (j *8)); matrix[i]->println(words[j]); } - matrix[i]->setBrightness(Settings->display_dimmer); + matrix[i]->setBrightness(GetDisplayDimmer16()); } MatrixWrite(); if (((mtx_y %8) == 0) && mtx_counter) { @@ -172,7 +172,7 @@ void MatrixInitMode(void) { for (uint32_t i = 0; i < mtx_matrices; i++) { matrix[i]->setRotation(Settings->display_rotate); // 1 - matrix[i]->setBrightness(Settings->display_dimmer); + matrix[i]->setBrightness(GetDisplayDimmer16()); matrix[i]->blinkRate(0); // 0 - 3 matrix[i]->setTextWrap(false); // Allow text to run off edges // matrix[i]->setTextSize(Settings->display_size); diff --git a/tasmota/xdsp_04_ili9341.ino b/tasmota/xdsp_04_ili9341.ino index 7e638cf5a..e4142b6c0 100755 --- a/tasmota/xdsp_04_ili9341.ino +++ b/tasmota/xdsp_04_ili9341.ino @@ -97,7 +97,7 @@ void ILI9341_InitDriver() #endif renderer->DisplayInit(DISPLAY_INIT_MODE, Settings->display_size, Settings->display_rotate, Settings->display_font); - renderer->dim(Settings->display_dimmer); + renderer->dim(GetDisplayDimmer16()); #ifdef SHOW_SPLASH // Welcome text diff --git a/tasmota/xdsp_08_ILI9488.ino b/tasmota/xdsp_08_ILI9488.ino index 4fdf6c178..5c3cd2f5d 100644 --- a/tasmota/xdsp_08_ILI9488.ino +++ b/tasmota/xdsp_08_ILI9488.ino @@ -72,7 +72,7 @@ void ILI9488_InitDriver(void) { ili9488->begin(); renderer = ili9488; renderer->DisplayInit(DISPLAY_INIT_MODE,Settings->display_size,Settings->display_rotate,Settings->display_font); - renderer->dim(Settings->display_dimmer); + renderer->dim(GetDisplayDimmer16()); #ifdef SHOW_SPLASH // Welcome text diff --git a/tasmota/xdsp_09_SSD1351.ino b/tasmota/xdsp_09_SSD1351.ino index 9a5eed7e1..7d6d28d31 100644 --- a/tasmota/xdsp_09_SSD1351.ino +++ b/tasmota/xdsp_09_SSD1351.ino @@ -68,7 +68,7 @@ void SSD1351_InitDriver() { ssd1351->begin(); renderer = ssd1351; renderer->DisplayInit(DISPLAY_INIT_MODE,Settings->display_size,Settings->display_rotate,Settings->display_font); - renderer->dim(Settings->display_dimmer); + renderer->dim(GetDisplayDimmer16()); #ifdef SHOW_SPLASH // Welcome text diff --git a/tasmota/xdsp_10_RA8876.ino b/tasmota/xdsp_10_RA8876.ino index 8524f48f5..305f26c7f 100644 --- a/tasmota/xdsp_10_RA8876.ino +++ b/tasmota/xdsp_10_RA8876.ino @@ -61,7 +61,7 @@ void RA8876_InitDriver(void) { ra8876->begin(); renderer = ra8876; renderer->DisplayInit(DISPLAY_INIT_MODE,Settings->display_size,Settings->display_rotate,Settings->display_font); - renderer->dim(Settings->display_dimmer); + renderer->dim(GetDisplayDimmer16()); //testall(); #ifdef SHOW_SPLASH diff --git a/tasmota/xdsp_11_sevenseg.ino b/tasmota/xdsp_11_sevenseg.ino index 7f200e44a..f2c48adb9 100644 --- a/tasmota/xdsp_11_sevenseg.ino +++ b/tasmota/xdsp_11_sevenseg.ino @@ -106,7 +106,7 @@ void SevensegLog(void) void SevensegDim(void) { for (uint32_t i = 0; i < sevensegs; i++) { - sevenseg[i]->setBrightness(Settings->display_dimmer); + sevenseg[i]->setBrightness(GetDisplayDimmer16()); } } @@ -130,7 +130,7 @@ void SevensegClear(void) void SevensegInitMode(void) { for (uint32_t i = 0; i < sevensegs; i++) { - sevenseg[i]->setBrightness(Settings->display_dimmer); + sevenseg[i]->setBrightness(GetDisplayDimmer16()); sevenseg[i]->blinkRate(0); } SevensegClear(); diff --git a/tasmota/xdsp_12_ST7789.ino b/tasmota/xdsp_12_ST7789.ino index 9b982090b..fb55f6d91 100644 --- a/tasmota/xdsp_12_ST7789.ino +++ b/tasmota/xdsp_12_ST7789.ino @@ -93,7 +93,7 @@ void ST7789_InitDriver(void) { st7789->init(Settings->display_width,Settings->display_height); renderer = st7789; renderer->DisplayInit(DISPLAY_INIT_MODE,Settings->display_size,Settings->display_rotate,Settings->display_font); - renderer->dim(Settings->display_dimmer); + renderer->dim(GetDisplayDimmer16()); #ifdef SHOW_SPLASH // Welcome text diff --git a/tasmota/xdsp_14_SSD1331.ino b/tasmota/xdsp_14_SSD1331.ino index b939bedeb..aaefeedd4 100644 --- a/tasmota/xdsp_14_SSD1331.ino +++ b/tasmota/xdsp_14_SSD1331.ino @@ -73,7 +73,7 @@ void SSD1331_InitDriver() { renderer = ssd1331; // Rotation is currently broken, https://github.com/adafruit/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino/issues/26 renderer->DisplayInit(DISPLAY_INIT_MODE, Settings->display_size, Settings->display_rotate, Settings->display_font); - renderer->dim(Settings->display_dimmer); + renderer->dim(GetDisplayDimmer16()); #ifdef SHOW_SPLASH // Welcome text diff --git a/tasmota/xdsp_15_tm1637.ino b/tasmota/xdsp_15_tm1637.ino index 038698f3c..75bacdf89 100644 --- a/tasmota/xdsp_15_tm1637.ino +++ b/tasmota/xdsp_15_tm1637.ino @@ -233,7 +233,8 @@ void TM1637Init(void) Settings->display_cols[0] = Settings->display_width; Settings->display_height = 1; Settings->display_rows = Settings->display_height; - if(!Settings->display_dimmer || Settings->display_dimmer < 2 || Settings->display_dimmer > 15) Settings->display_dimmer = 8; + uint8_t dimmer16 = GetDisplayDimmer16(); + if(!dimmer16 || dimmer16 < 2 || dimmer16 > 15) SetDisplayDimmer(50); if (TM1637 == TM1637Data.display_type) { @@ -1074,8 +1075,8 @@ bool TM1637MainFunc(uint8_t fn) void TM1637Dim(void) { - // Settings->display_dimmer = 0 - 15 - uint8_t brightness = Settings->display_dimmer >> 1; // 0 - 7 + // GetDisplayDimmer16() = 0 - 15 + uint8_t brightness = GetDisplayDimmer16() >> 1; // 0 - 7 if (TM1637 == TM1637Data.display_type) { diff --git a/tasmota/xdsp_17_universal.ino b/tasmota/xdsp_17_universal.ino index 6151e2c95..013f45175 100644 --- a/tasmota/xdsp_17_universal.ino +++ b/tasmota/xdsp_17_universal.ino @@ -312,7 +312,7 @@ uDisplay *udisp; #endif renderer->DisplayInit(DISPLAY_INIT_MODE, Settings->display_size, Settings->display_rotate, Settings->display_font); - renderer->dim(Settings->display_dimmer); + ApplyDisplayDimmer(); #ifdef SHOW_SPLASH renderer->Splash(); From 147f285035e0eb782a81eb0b77ab06c1bfa7466d Mon Sep 17 00:00:00 2001 From: stefanbode Date: Wed, 15 Sep 2021 10:08:09 +0200 Subject: [PATCH 197/317] Implemented new PWM_MIN value for ESP32 and ESP8266 New minimum value for PWM_MIN now in code. Before it was hard coded 100Hz --- tasmota/xdrv_27_shutter.ino | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tasmota/xdrv_27_shutter.ino b/tasmota/xdrv_27_shutter.ino index ecac96197..9e57438a8 100644 --- a/tasmota/xdrv_27_shutter.ino +++ b/tasmota/xdrv_27_shutter.ino @@ -34,8 +34,8 @@ const uint16_t MOTOR_STOP_TIME = 500; // in mS const uint16_t RESOLUTION = 1000; // incresed to 1000 in 8.5 to ramp servos const uint8_t STEPS_PER_SECOND = 20; // FUNC_EVERY_50_MSECOND -const uint16_t pwm_max = 500; -const uint16_t pwm_min = 90; +const uint16_t pwm_servo_max = 500; +const uint16_t pwm_servo_min = 90; uint8_t calibrate_pos[6] = {0,30,50,70,90,100}; uint16_t messwerte[5] = {30,50,70,90,100}; @@ -128,9 +128,9 @@ void ShutterUpdateVelocity(uint8_t i) // do not allow accellerator to stop movement Shutter[i].pwm_velocity = tmax(velocity_change_per_step_max, Shutter[i].pwm_velocity+Shutter[i].accelerator); Shutter[i].pwm_velocity = tmin(Shutter[i].direction==1 ? ShutterGlobal.open_velocity_max : Shutter[i].close_velocity_max,Shutter[i].pwm_velocity); - // respect hard coded SDK limit of 100Hz on PWM frequency. + // respect hard coded SDK limit of PWM_MIN on PWM frequency. if (ShutterGlobal.position_mode == SHT_COUNTER) { - Shutter[i].pwm_velocity = tmax(100,Shutter[i].pwm_velocity); + Shutter[i].pwm_velocity = tmax(PWM_MIN,Shutter[i].pwm_velocity); } } @@ -316,8 +316,8 @@ void ShutterInit(void) case SHT_PWM_VALUE: ShutterGlobal.open_velocity_max = RESOLUTION; // Initiate pwm range with defaults if not already set. - Settings->shutter_pwmrange[0][i] = Settings->shutter_pwmrange[0][i] > 0 ? Settings->shutter_pwmrange[0][i] : pwm_min; - Settings->shutter_pwmrange[1][i] = Settings->shutter_pwmrange[1][i] > 0 ? Settings->shutter_pwmrange[1][i] : pwm_max; + Settings->shutter_pwmrange[0][i] = Settings->shutter_pwmrange[0][i] > 0 ? Settings->shutter_pwmrange[0][i] : pwm_servo_min; + Settings->shutter_pwmrange[1][i] = Settings->shutter_pwmrange[1][i] > 0 ? Settings->shutter_pwmrange[1][i] : pwm_servo_max; break; } Shutter[i].close_velocity_max = ShutterGlobal.open_velocity_max*Shutter[i].open_time / Shutter[i].close_time; @@ -420,7 +420,7 @@ void ShutterDecellerateForStop(uint8_t i) int16_t missing_steps; Shutter[i].accelerator = -(ShutterGlobal.open_velocity_max / (Shutter[i].motordelay>4 ? (Shutter[i].motordelay*11)/10 : 4) ); - while (Shutter[i].pwm_velocity > -2*Shutter[i].accelerator && Shutter[i].pwm_velocity != 100) { + while (Shutter[i].pwm_velocity > -2*Shutter[i].accelerator && Shutter[i].pwm_velocity != PWM_MIN) { delay(50); AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("SHT: Velocity %ld, Delta %d"), Shutter[i].pwm_velocity, Shutter[i].accelerator ); // Control will be done in RTC Ticker. @@ -505,7 +505,7 @@ void ShutterUpdatePosition(void) Shutter[i].time, current_stop_way, current_pwm_velocity, velocity_max, Shutter[i].accelerator, min_runtime_ms, current_real_position, next_possible_stop_position, Shutter[i].target_position, velocity_change_per_step_max, Shutter[i].direction); - if ( Shutter[i].real_position * Shutter[i].direction >= Shutter[i].target_position * Shutter[i].direction || (ShutterGlobal.position_mode == SHT_COUNTER && Shutter[i].accelerator <0 && Shutter[i].pwm_velocity+Shutter[i].accelerator<100)) { + if ( Shutter[i].real_position * Shutter[i].direction >= Shutter[i].target_position * Shutter[i].direction || (ShutterGlobal.position_mode == SHT_COUNTER && Shutter[i].accelerator <0 && Shutter[i].pwm_velocity+Shutter[i].accelerator Date: Wed, 15 Sep 2021 11:10:48 +0200 Subject: [PATCH 198/317] Minimum PWM Frequency lowered to 2Hz on ESP32 (#13123) (#13135) * Minimum PWM Frequency lowered to 2Hz on ESP32 (#13123) * Forgot main file --- CHANGELOG.md | 1 + tasmota/tasmota.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5a49ac34..466d8c005 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ All notable changes to this project will be documented in this file. ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now - ``DisplayDimmer`` has now range 0..100 instead of 0..15 +- Minimum PWM Frequency lowered to 2Hz on ESP32 (#13123) ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index 6adc7ffb3..393da4c96 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -137,10 +137,11 @@ const uint32_t PWM_RANGE = 1023; // 255..1023 needs to be devisible b const uint16_t PWM_FREQ = 977; // 100..4000 Hz led refresh #ifdef ESP32 const uint16_t PWM_MAX = 50000; // [PWM_MAX] Maximum frequency for ESP32 - Default: 50000 +const uint16_t PWM_MIN = 2; // [PWM_MIN] Minimum frequency for ESP32 - Default: 2 #else const uint16_t PWM_MAX = 4000; // [PWM_MAX] Maximum frequency - Default: 4000 -#endif const uint16_t PWM_MIN = 40; // [PWM_MIN] Minimum frequency - Default: 40 +#endif // For Dimmers use double of your mains AC frequecy (100 for 50Hz and 120 for 60Hz) // For Controlling Servos use 50 and also set PWM_FREQ as 50 (DO NOT USE THESE VALUES FOR DIMMERS) From 0fea60d8ee305a797f98b0f140f00c30ee55a2e1 Mon Sep 17 00:00:00 2001 From: Arnold Niessen Date: Wed, 15 Sep 2021 12:02:27 +0200 Subject: [PATCH 199/317] Add SCD40/41 support --- I2CDEVICES.md | 1 + lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.cpp | 779 +++++++++++++++++++ lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.h | 118 +++ lib/lib_i2c/FrogmoreScd40/library.properties | 9 + tasmota/xsns_92_scd40.ino | 501 ++++++++++++ 5 files changed, 1408 insertions(+) create mode 100644 lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.cpp create mode 100644 lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.h create mode 100644 lib/lib_i2c/FrogmoreScd40/library.properties create mode 100644 tasmota/xsns_92_scd40.ino diff --git a/I2CDEVICES.md b/I2CDEVICES.md index 730d24113..975a748dc 100644 --- a/I2CDEVICES.md +++ b/I2CDEVICES.md @@ -95,3 +95,4 @@ Index | Define | Driver | Device | Address(es) | Description 59 | USE_BM8563 | xdrv_56 | BM8563 | 0x51 | BM8563 RTC from M5Stack 60 | USE_AM2320 | xsns_88 | AM2320 | 0x5C | Temperature and Humidity sensor 61 | USE_T67XX | xsns_89 | T67XX | 0x15 | CO2 sensor + 62 | USE_SCD40 | xsns_42 | SCD40 | 0x62 | CO2 sensor Sensirion SCD40/SCD41 diff --git a/lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.cpp b/lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.cpp new file mode 100644 index 000000000..ee7e3c232 --- /dev/null +++ b/lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.cpp @@ -0,0 +1,779 @@ +/* + FrogmoreScd40.h - SCD40/SCD41 I2C CO2(+temp+RH) sensor support for Tasmota, + based on frogmore42's FrogmoreScd30.h + + Copyright (C) 2019-2021 Frogmore42, Arnold-n + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ +#include +#include +#include +#include +#include + +// References are made to Sensirion datasheet at +// https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9.5_CO2/Sensirion_CO2_Sensors_SCD4x_Datasheet.pdf +// +// Basic Commands Chapter 3.5 +#define COMMAND_SCD40_START_PERIODIC_MEASUREMENT 0x21b1 +#define COMMAND_SCD40_READ_MEASUREMENT 0xec05 +#define COMMAND_SCD40_STOP_PERIODIC_MEASUREMENT 0x3f86 + +// On-chip output signal compensation Chapter 3.6 +#define COMMAND_SCD40_SET_TEMPERATURE_OFFSET 0x241d +#define COMMAND_SCD40_GET_TEMPERATURE_OFFSET 0x2318 +#define COMMAND_SCD40_SET_SENSOR_ALTITUDE 0x2427 +#define COMMAND_SCD40_GET_SENSOR_ALTITUDE 0x2322 +#define COMMAND_SCD40_SET_AMBIENT_PRESSURE 0xe000 + +// Field calibration Chapter 3.7 +#define COMMAND_SCD40_PERFORM_FORCED_RECALIBRATION 0x362f +#define COMMAND_SCD40_SET_AUTOMATIC_SELF_CALIBRATION_ENABLED 0x2416 +#define COMMAND_SCD40_GET_AUTOMATIC_SELF_CALIBRATION_ENABLED 0x2313 + +// Low power Chapter 3.8 +#define COMMAND_SCD40_START_LOW_POWER_PERIODIC_MEASUREMENT 0x21ac +#define COMMAND_SCD40_GET_DATA_READY_STATUS 0xe4b8 + +// Advanced features Chapter 3.9 +#define COMMAND_SCD40_PERSIST_SETTINGS 0x3615 +#define COMMAND_SCD40_GET_SERIAL_NUMBER 0x3682 +#define COMMAND_SCD40_PERFORM_SELF_TEST 0x3639 +#define COMMAND_SCD40_PERFORM_FACTORY_RESET 0x3632 +#define COMMAND_SCD40_REINIT 0x3646 + +// Low power single shot (SCD41 only) Chapter 3.10 +// only for SCD41 +#define COMMAND_SCD40_MEASURE_SINGLE_SHOT 0x219d +#define COMMAND_SCD40_MEASURE_SINGLE_SHOT_RHT_ONLY 0x2196 + +#define SCD40_DATA_REGISTER_BYTES 2 +#define SCD40_DATA_REGISTER_WITH_CRC 3 +#define SCD40_MEAS_BYTES 9 + +#ifdef SCD40_DEBUG +enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE, LOG_LEVEL_ALL}; +char scd40log_data[180]; +#define SCD40_DEBUG_LOG_LEVEL LOG_LEVEL_INFO +#endif + +// helper and private functions + +/*--------------------------------------------------------------------------- + Function : medianfilter() + In : pointer to array of SCD40_MEDIAN_FILTER_SIZE values + Out : a uint16_t which is the middle value of the array + Job : search of the median + Notice : replaced SCD30 alg by partial bubble-sort, slightly slower, but not fixed-size + ---------------------------------------------------------------------------*/ +#define PIX_SORT(a,b) { if ((a)>(b)) PIX_SWAP((a),(b)); } +#define PIX_SWAP(a,b) { uint16_t temp=(a);(a)=(b);(b)=temp; } + +uint16_t FrogmoreScd40::medianfilter(uint16_t * p) +{ + for (int8_t i = SCD40_MEDIAN_FILTER_SIZE-1; i >= (SCD40_MEDIAN_FILTER_SIZE-1)/2; i--) + { + for (uint8_t j=0; j < i; j++) + { + PIX_SORT(p[j], p[j+1]); + } + } + return(p[(SCD40_MEDIAN_FILTER_SIZE-1)/2]); +} + +#ifdef SCD40_DEBUG +void FrogmoreScd40::AddLog(uint8_t loglevel) +{ + if (loglevel <= SCD40_DEBUG_LOG_LEVEL) + { + Serial.printf("%s\r\n", scd40log_data); + } +} +#endif + +uint8_t FrogmoreScd40::computeCRC8(uint8_t data[], uint8_t len) +// Computes the CRC that the SCD40 uses +{ + uint8_t crc = 0xFF; //Init with 0xFF + + for (uint8_t x = 0 ; x < len ; x++) + { + crc ^= data[x]; // XOR-in the next input byte + for (uint8_t i = 0 ; i < 8 ; i++) + { + if ((crc & 0x80) != 0) + crc = (uint8_t)((crc << 1) ^ 0x31); + else + crc <<= 1; + } + } + return crc; //No output reflection +} + +// Sends stream of bytes to device +int FrogmoreScd40::sendBytes(void *pInput, uint8_t len) +{ + uint8_t *pBytes = (uint8_t *) pInput; + int result; + uint8_t errorBytes = 0; // number of bytes that had an error in transmission +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40SendBytes: len: %d data: 0x %02X %02X %02X | 0x %02X %02X %02X | 0x %02X %02X %02X", len, pBytes[0], pBytes[1], pBytes[2], pBytes[3], pBytes[4], pBytes[5], pBytes[6], pBytes[7], pBytes[8]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + pWire->beginTransmission(this->i2cAddress); + errorBytes = len - (pWire->write(pBytes, len)); + result = pWire->endTransmission(); + if (errorBytes || result) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40SendBytes: errorBytes: %d | Wire.end: %d", errorBytes, result); + AddLog(LOG_LEVEL_INFO); +#endif + } + result <<= 8; // leave room for error bytes number + result |= errorBytes; // low byte has number of bytes that were not written correctly + return (result); +} + +// Gets a number of bytes from device +int FrogmoreScd40::getBytes(void *pOutput, uint8_t len) +{ + uint8_t *pBytes = (uint8_t *) pOutput; + uint8_t result; + + result = pWire->requestFrom(this->i2cAddress, len); + if (len != result) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40GetBytes: wire request expected %d got: %d", len, result); + AddLog(LOG_LEVEL_INFO); +#endif + return (ERROR_SCD40_NOT_ENOUGH_BYTES_ERROR); + } + + if (pWire->available()) + { + for (int x = 0; x < len; x++) + { + pBytes[x] = pWire->read(); + } +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40GetBytes: len: %d data: 0x %02X %02X %02X | 0x %02X %02X %02X | 0x %02X %02X %02X", len, pBytes[0], pBytes[1], pBytes[2], pBytes[3], pBytes[4], pBytes[5], pBytes[6], pBytes[7], pBytes[8]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + return (ERROR_SCD40_NO_ERROR); + } + return (ERROR_SCD40_UNKNOWN_ERROR); +} + +//Sends just a command, no arguments, no CRC +int FrogmoreScd40::sendCommand(uint16_t command) +{ + uint8_t data[2]; + data[0] = command >> 8; + data[1] = command & 0xFF; + int error = sendBytes(data, sizeof(data)); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40SendCommand: sendBytes failed, error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + } + return (error); +} + +//Sends a command along with arguments and CRC +int FrogmoreScd40::sendCommandArguments(uint16_t command, uint16_t arguments) +{ + uint8_t data[5]; + data[0] = command >> 8; + data[1] = command & 0xFF; + data[2] = arguments >> 8; + data[3] = arguments & 0xFF; + data[4] = computeCRC8(&data[2], 2); //Calc CRC on the arguments only, not the command + int error = sendBytes(data, sizeof(data)); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40SendCommandArguments: sendBytes failed, error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + } + return (error); +} + +// Sends a command along with arguments and CRC, wait 400ms, fetch results +// NOT TESTED - not sure whether this works +int FrogmoreScd40::sendCommandArgumentsFetchResult(uint16_t command, uint16_t arguments, uint16_t* pData) +{ + sendCommandArguments(command, arguments); + delay(400); // the SCD30 uses clock stretching to give it time to prepare data, waiting here makes it work, seems this works also for SCD40 + uint8_t data[SCD40_DATA_REGISTER_WITH_CRC]; + int error = getBytes(data, sizeof(data)); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadRegister: Scd40GetBytes error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + uint16 regValue; + error = get16BitRegCheckCRC(data, ®Value); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadRegister: Scd40get16BitRegCheckCRC error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + *pData = regValue; + return (ERROR_SCD40_NO_ERROR); +} + +int FrogmoreScd40::get16BitRegCheckCRC(void* pInput, uint16_t *pData) +{ + uint8_t *pBytes = (uint8_t *) pInput; + uint8_t expectedCRC = computeCRC8(pBytes, SCD40_DATA_REGISTER_BYTES); + if (expectedCRC != pBytes[SCD40_DATA_REGISTER_BYTES]) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40get16BitRegCheckCRC: expected: 0x%02X, but got: 0x%02X", expectedCRC, pBytes[SCD40_DATA_REGISTER_BYTES]); + AddLog(LOG_LEVEL_INFO); + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40get16BitRegCheckCRC: data: 0x%02X, 0x%02X, 0x%02X", pBytes[0], pBytes[1], pBytes[2]); + AddLog(LOG_LEVEL_INFO); +#endif + return (ERROR_SCD40_CRC_ERROR); + } + *pData = (uint16_t) pBytes[0] << 8 | pBytes[1]; // data from SCD40 is Big-Endian + return (ERROR_SCD40_NO_ERROR); +} + +//Gets two bytes (and check CRC) from SCD40 +int FrogmoreScd40::readRegisterCnt(uint16_t registerAddress, uint16_t* pData, uint8_t cnt) +{ + int error = sendCommand(registerAddress); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadRegister: SendCommand error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + delay(1); // the SCD30 uses clock stretching to give it time to prepare data, waiting here makes it work, seems this works also for SCD40 + uint8_t data[SCD40_DATA_REGISTER_WITH_CRC]; + for (uint8_t c = 0; c < cnt; c++) { + error = getBytes(data, sizeof(data)); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadRegister: Scd40GetBytes error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + uint16 regValue; + error = get16BitRegCheckCRC(data, ®Value); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadRegister: Scd40get16BitRegCheckCRC error: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + pData[c] = regValue; + } + return (ERROR_SCD40_NO_ERROR); +} + +int FrogmoreScd40::readRegister(uint16_t registerAddress, uint16_t* pData) +{ + int error=readRegisterCnt(registerAddress, pData, 1); + return (error); +} + +// public functions + +void FrogmoreScd40::begin(TwoWire *pWire, uint8_t i2cAddress) +{ + this->duringMeasurement = 0; + this->i2cAddress = i2cAddress; + this->co2EAverage = 0; + if (pWire == NULL) + { + this->pWire = &Wire; + } + else + { + this->pWire = pWire; + } + co2NewDataLocation = -1; // indicates there is no data, so the 1st non-zero data point needs to fill up the median filter +#ifdef ESP8266 + this->pWire->setClockStretchLimit(200000); +#endif +} + +void FrogmoreScd40::begin(uint8_t i2cAddress) +{ + begin(NULL, i2cAddress); +} + +void FrogmoreScd40::begin(TwoWire *pWire) +{ + begin(pWire, SCD40_ADDRESS); +} + +void FrogmoreScd40::begin(void) +{ + begin(NULL, SCD40_ADDRESS); +} + +// twi_status() attempts to read out any data left that is holding SDA low, so a new transaction can take place +// something like (http://www.forward.com.au/pfod/ArduinoProgramming/I2C_ClearBus/index.html) +int FrogmoreScd40::clearI2CBus(void) +{ +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "clearI2CBus"); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif +#ifdef ESP8266 + return (twi_status()); +#else + return 0; +#endif +} + +// Function order below follows SCD40 datasheet +// Basic Commands Chapter 3.5 + +int FrogmoreScd40::startPeriodicMeasurement(void) +{ +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Start periodic measurement"); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + DuringMeasurement = 1; + return(sendCommand(COMMAND_SCD40_START_PERIODIC_MEASUREMENT)); +} + +int FrogmoreScd40::readMeasurement( + uint16 *pCO2_ppm, + uint16 *pCO2EAvg_ppm, + float *pTemperature, + float *pHumidity +) +{ +// Should only be called in DuringMeasurement mode or +// after calling measure_single_hot{,_rht_only} +// but this is currently not verified + bool isAvailable = false; + int error = 0; + uint16 tempCO2; + uint16 tempHumidity; + uint16 tempTemperature; + + error = getDataReadyStatus(&isAvailable); + if (error) + { + return (error); + } + if (!isAvailable) + { + return (ERROR_SCD40_NO_DATA); + } +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: have data"); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + error = sendCommand(COMMAND_SCD40_READ_MEASUREMENT); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: send command failed: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + delay(1); // the SCD40 uses clock streching to give it time to prepare data, waiting here makes it work + uint8_t bytes[SCD40_MEAS_BYTES]; + // there are (3) 16-bit values, each with a CRC in the measurement data + // the chip sends all of these, unless stopped by an early NACK - not supported here + error = getBytes(bytes, SCD40_MEAS_BYTES); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: Scd40GetBytes command failed: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: Scd40GetBytes data: 0x %02X %02X %02X | 0x %02X %02X %02X | 0x %02X %02X %02X", bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7], bytes[8]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + error = get16BitRegCheckCRC(&bytes[0], &tempCO2); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: Scd40Get16BitsCheckCRC 1st command failed: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + error = get16BitRegCheckCRC(&bytes[3], &tempTemperature); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: Scd40Get16BitsCheckCRC 2nd command failed: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + error = get16BitRegCheckCRC(&bytes[6], &tempHumidity); + if (error) + { +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: Scd40Get16BitsCheckCRC 3rd command failed: 0x%lX", error); + AddLog(LOG_LEVEL_INFO); +#endif + return (error); + } + // tempCO2 = 0 occurs after Measure_single_shot_RHT_only; no reason for error like for SCD30, but don't add to history, + // and take care to handle special case where no CO2 measurement was seen yet + if (tempCO2 > 0) + { + // add tempCO2 measurement to history + if (co2NewDataLocation < 0) + { + co2EAverage = tempCO2; + for (int x = 0; x < SCD40_MEDIAN_FILTER_SIZE; x++) + { + co2History[x] = tempCO2; + co2NewDataLocation = 1; + } + } + else + { + co2History[co2NewDataLocation++] = tempCO2; + if (co2NewDataLocation >= SCD40_MEDIAN_FILTER_SIZE) + { + co2NewDataLocation = 0; + } + } +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: co2History: %ld, %ld, %ld, %ld, %ld", co2History[0], co2History[1], co2History[2], co2History[3], co2History[4]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + } + if ((tempCO2 > 0) || (co2NewDataLocation >= 0)) { + // find median of history; copy array since the median filter function will re-arrange it + uint16_t temp[SCD40_MEDIAN_FILTER_SIZE]; + for (int x = 0; x < SCD40_MEDIAN_FILTER_SIZE; x++) + { + temp[x] = co2History[x]; + } +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: temp: %ld, %ld, %ld, %ld, %ld", temp[0], temp[1], temp[2], temp[3], temp[4]); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + *pCO2_ppm = medianfilter(temp); + } else { + *pCO2_ppm = 0; // never seen real CO2 measurement, but need to return something: return 0 + } +#ifdef SCD40_DEBUG + snprintf_P(scd40log_data, sizeof(scd40log_data), "Scd40ReadMeasurement: CO2_ppm: %ld", *pCO2_ppm); + AddLog(LOG_LEVEL_DEBUG_MORE); +#endif + if ((pCO2EAvg_ppm) && (tempCO2 > 0)) + { + int16_t delta = (int16_t) *pCO2_ppm - (int16_t) co2EAverage; + int16_t change = delta / 32; + co2EAverage += change; + *pCO2EAvg_ppm = co2EAverage; + } + *pTemperature = (175.0 * tempTemperature) / 65536 - 45; + *pHumidity = (100.0 * tempHumidity) / 65536; + return (ERROR_SCD40_NO_ERROR); +} + +int FrogmoreScd40::forceStopPeriodicMeasurement(void) +{ + DuringMeasurement = 0; + return (sendCommand(COMMAND_SCD40_STOP_PERIODIC_MEASUREMENT)); +} + +int FrogmoreScd40::stopPeriodicMeasurement(void) +{ + if (!DuringMeasurement) { + return (ERROR_SCD40_NOT_IN_MEASUREMENT_MODE); + } + DuringMeasurement = 0; + return (sendCommand(COMMAND_SCD40_STOP_PERIODIC_MEASUREMENT)); +} + +// On-chip output signal compensation Chapter 3.6 + +int FrogmoreScd40::setTemperatureOffset(float offset_degC) +// influences RH and T readings. Does not influence CO2 measurement. Default is 4 degrees Celcius. +// to save setting to the EEPROM, call persistSetting() +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + if (offset_degC >= 0) + { + uint16_t offset_xDegC = (uint16_t) (offset_degC * 374.491); + return (sendCommandArguments(COMMAND_SCD40_SET_TEMPERATURE_OFFSET, offset_xDegC)); + } + else + { + return (ERROR_SCD40_INVALID_VALUE); + } +} + +int FrogmoreScd40::setTemperatureOffset(uint16_t offset_centiDegC) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + uint16_t offset_xDegC = (uint16_t) (offset_centiDegC * 3.74491); + return (sendCommandArguments(COMMAND_SCD40_SET_TEMPERATURE_OFFSET, offset_xDegC)); +} + +int FrogmoreScd40::getTemperatureOffset(float *pOffset_degC) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + uint16_t value; + int error = readRegister(COMMAND_SCD40_GET_TEMPERATURE_OFFSET, &value); + if (!error) + { + // result is 175 * value/2^16, need to convert to degrees + *pOffset_degC = (float) value / 374.491; + } + return (error); +} + +int FrogmoreScd40::getTemperatureOffset(uint16_t *pOffset_centiDegC) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + uint16_t value; + int error = readRegister(COMMAND_SCD40_GET_TEMPERATURE_OFFSET, &value); + if (!error) + { + // result is 175 * value/2^16, need to convert to degrees + *pOffset_centiDegC = (uint16_t) (value / 3.74491); + } + return (error); +} + +int FrogmoreScd40::setSensorAltitude(uint16_t height_meter) +// Default is 0 meter above sea-level; +// to save setting to the EEPROM, call persistSetting() +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommandArguments(COMMAND_SCD40_SET_SENSOR_ALTITUDE, height_meter)); +} + +int FrogmoreScd40::getSensorAltitude(uint16_t *pHeight_meter) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (readRegister(COMMAND_SCD40_GET_SENSOR_ALTITUDE, pHeight_meter)); +} + +int FrogmoreScd40::setAmbientPressure(uint16_t airPressure_mbar) +// Overrides any pressure compensation based on a previously set sensor altitude +{ + // allowed DuringMeasurement + return (sendCommandArguments(COMMAND_SCD40_SET_AMBIENT_PRESSURE, airPressure_mbar)); +} + +// Field calibration Chapter 3.7 + +int FrogmoreScd40::performForcedRecalibration(uint16_t co2_ppm) +// Calibrates with a CO2 reference value immediately +// Use only in planned operation mode, for >3 minutes in constant CO2 environment +// issue stop_periodic_measurement, and then wait 500ms, before calling this function +// it takes 400ms for this command to complete +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + uint16_t FRC_result; + sendCommandArgumentsFetchResult(COMMAND_SCD40_PERFORM_FORCED_RECALIBRATION, co2_ppm, &FRC_result); + if (FRC_result == 0xffff) { + // a return value of 0xffff indicates failure + return(ERROR_SCD40_FRC_FAILED); + } + return (ERROR_SCD40_NO_ERROR); +} + +int FrogmoreScd40::setAutomaticSelfCalibrationDisabled(void) +// to save setting to the EEPROM, call persistSetting() +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + bool isAuto = false; + return (setAutomaticSelfCalibrationEnabled(isAuto)); +} + +int FrogmoreScd40::setAutomaticSelfCalibrationEnabled(void) +// to save setting to the EEPROM, call persistSetting() +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + bool isAuto = true; + return (setAutomaticSelfCalibrationEnabled(isAuto)); +} + +int FrogmoreScd40::setAutomaticSelfCalibrationEnabled(bool isAuto) +// to save setting to the EEPROM, call persistSetting() +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + bool value = !!isAuto; // using NOT operator twice makes sure value is 0 or 1 + return (sendCommandArguments(COMMAND_SCD40_SET_AUTOMATIC_SELF_CALIBRATION_ENABLED, value)); +} + +int FrogmoreScd40::getAutomaticSelfCalibrationEnabled(uint16_t *pIsAuto) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + uint16_t value = 0; + int error = readRegister(COMMAND_SCD40_GET_AUTOMATIC_SELF_CALIBRATION_ENABLED, &value); + if (!error) + { + *pIsAuto = value != 0; + } + return (error); +} + +// Low power Chapter 3.8 + +int FrogmoreScd40::startLowPowerPeriodicMeasurement(void) +// Comment: unclear how to stop this operation mode? +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommand(COMMAND_SCD40_START_LOW_POWER_PERIODIC_MEASUREMENT)); + DuringMeasurement = 1; +} + +int FrogmoreScd40::getDataReadyStatus(bool *pIsAvailable) +{ + // allowed DuringMeasurement + uint16_t isDataAvailable = false; + int error = readRegister(COMMAND_SCD40_GET_DATA_READY_STATUS, &isDataAvailable); + if (!error) + { + *pIsAvailable = (isDataAvailable & 0x07ff) != 0; + } + return (error); +} + +// Advanced features Chapter 3.9 + +int FrogmoreScd40::persistSettings(void) +// Store configuration settings such as temperature offset, +// sensor altitude, and ASC enable/disabled parameter +// EEPROM is guaranteed to endure at least 2000 write cycles before failure. +// The field calibration history (FRC and ASC) is stored in a separate EEPROM. +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommand(COMMAND_SCD40_PERSIST_SETTINGS)); +} + +int FrogmoreScd40::getSerialNumber(uint16_t *pSerialNumberArray) +// Serialnr is 48 bits = 3 16-bit words +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + uint16_t value; + int error = readRegisterCnt(COMMAND_SCD40_GET_SERIAL_NUMBER, pSerialNumberArray, 3); + return (error); +} + +int FrogmoreScd40::performSelfTest(uint16_t *pMalfunction) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (readRegister(COMMAND_SCD40_PERFORM_SELF_TEST, pMalfunction)); +} + +int FrogmoreScd40::performFactoryReset(void) +// resets all configuration settings in EEPROM and +// erases FRC and ASC algorithm history +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommand(COMMAND_SCD40_PERFORM_FACTORY_RESET)); +} + +int FrogmoreScd40::reinit(void) +// reinitailizes sensor from EEPROM user settings +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommand(COMMAND_SCD40_REINIT)); +} + +// Low power single shot (SCD41 only) Chapter 3.10 +// (on-demand measurements) + +int FrogmoreScd40::measureSingleShot(void) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommand(COMMAND_SCD40_MEASURE_SINGLE_SHOT)); +} + +int FrogmoreScd40::measureSingleShotRhtOnly(void) +{ + if (DuringMeasurement) { + return (ERROR_SCD40_BUSY_MEASURING); + } + return (sendCommand(COMMAND_SCD40_MEASURE_SINGLE_SHOT_RHT_ONLY)); +} diff --git a/lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.h b/lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.h new file mode 100644 index 000000000..454c8ab5d --- /dev/null +++ b/lib/lib_i2c/FrogmoreScd40/FrogmoreScd40.h @@ -0,0 +1,118 @@ +/* + FrogmoreScd40.cpp - SCD40/SCD41 I2C CO2(+temp+RH) sensor support for Tasmota, + based on frogmore42's FrogmoreScd30.cpp + + Copyright (C) 2019-2021 Frogmore42, Arnold-n + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +// SCD40/SCD41 code based on SCD30 code + +#pragma once + +#include "Arduino.h" + +//#define SCD40_DEBUG + +#define SCD40_ADDRESS 0x62 +#define ERROR_SCD40_NO_ERROR 0 +#define ERROR_SCD40_NO_DATA 0x80000000 +#define ERROR_SCD40_UNKNOWN_ERROR 0x1000000 +#define ERROR_SCD40_CRC_ERROR 0x2000000 +#define ERROR_SCD40_NOT_ENOUGH_BYTES_ERROR 0x3000000 +#define ERROR_SCD40_INVALID_VALUE 0x6000000 +#define ERROR_SCD40_BUSY_MEASURING 0x7000000 +#define ERROR_SCD40_NOT_IN_MEASUREMENT_MODE 0x8000000 +#define ERROR_SCD40_FRC_FAILED 0x9000000 + +#define SCD40_MEDIAN_FILTER_SIZE 1 + +class FrogmoreScd40 +{ + public: + FrogmoreScd40() {}; + // Constructors + // the SCD40 only lists a single i2c address, so not necesary to specify + // + void begin(void); + void begin(uint8_t _i2cAddress); + void begin(TwoWire *pWire); + void begin(TwoWire *pWire, uint8_t _i2cAddress); + + int reinit(void); + int clearI2CBus(void); // this is a HARD reset of the IC2 bus to restore communication, it will disrupt the bus + + int getSensorAltitude(uint16_t *pHeight_meter); + int getAutomaticSelfCalibrationEnabled(uint16_t *pIsAuto); + int getTemperatureOffset(float *pOffset_degC); + int getTemperatureOffset(uint16_t *pOffset_centiDegC); + + int setSensorAltitude(uint16_t height_meter); + int setAmbientPressure(uint16_t airPressure_mbar); + int setTemperatureOffset(float offset_degC); + int setTemperatureOffset(uint16_t offset_centiDegC); + int setAutomaticSelfCalibrationDisabled(void); + int setAutomaticSelfCalibrationEnabled(void); + int setAutomaticSelfCalibrationEnabled(bool isAuto); + int performForcedRecalibration(uint16_t co2_ppm); + int getSerialNumber(uint16_t *pSerialNumberArray); + int startLowPowerPeriodicMeasurement(void); + int persistSettings(void); + int performSelfTest(uint16_t *pMalfunction); + int performFactoryReset(void); + + int startPeriodicMeasurement(void); + int getDataReadyStatus(bool *pIsAvailable); + int readMeasurement( + uint16 *pCO2_ppm, + uint16 *pCO2EAvg_ppm, + float *pTemperature, + float *pHumidity + ); + int stopPeriodicMeasurement(void); + int forceStopPeriodicMeasurement(void); +// SCD41 only: + int measureSingleShot(void); + int measureSingleShotRhtOnly(void); + + private: + uint8_t duringMeasurement; + uint8_t i2cAddress; + TwoWire *pWire; + uint16_t co2AvgExtra; + uint16_t co2History[SCD40_MEDIAN_FILTER_SIZE]; + uint16_t co2EAverage; + int8_t co2NewDataLocation; // location to put new CO2 data for median filter + bool DuringMeasurement; + + uint8_t computeCRC8(uint8_t data[], uint8_t len); + uint16_t medianfilter(uint16_t * p); + int sendBytes(void *pInput, uint8_t len); + int getBytes(void *pOutput, uint8_t len); + int sendCommand(uint16_t command); + int sendCommandArguments(uint16_t command, uint16_t arguments); + int sendCommandArgumentsFetchResult(uint16_t command, uint16_t arguments, uint16_t* pData); + int get16BitRegCheckCRC(void* pInput, uint16_t* pData); + int readRegisterCnt(uint16_t registerAddress, uint16_t* pData, uint8_t cnt); + int readRegister(uint16_t registerAddress, uint16_t* pData); +#ifdef SCD40_DEBUG + void AddLog(uint8_t loglevel); +#endif +}; diff --git a/lib/lib_i2c/FrogmoreScd40/library.properties b/lib/lib_i2c/FrogmoreScd40/library.properties new file mode 100644 index 000000000..5dead8f63 --- /dev/null +++ b/lib/lib_i2c/FrogmoreScd40/library.properties @@ -0,0 +1,9 @@ +name=FrogmoreScd40 +version= +author=Frogmore42,Arnold-n +maintainer=Arnold-n +sentence=SCD40 +paragraph=SCD40 +category=Sensor +url= +architectures=esp8266,esp32 diff --git a/tasmota/xsns_92_scd40.ino b/tasmota/xsns_92_scd40.ino new file mode 100644 index 000000000..88ac61aea --- /dev/null +++ b/tasmota/xsns_92_scd40.ino @@ -0,0 +1,501 @@ +/* + xsns_92_scd40.ino - SCD40/SCD41 I2C CO2(+temp+RH) sensor support for Tasmota, + based on frogmore42's xsns_42_scd30.ino + + Copyright (C) 2021 Frogmore42, Arnold-n + + 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 . + +*/ + +// define USE_SCD40 to use SCD40 (or SCD41 device without additional SCD41 functions) +// define USE_SCD41 to use SCD41 device (including low-power options) +// define USE_SCD40_LOWPOWER to use low-power periodic measurement mode +// define SCD40_DEBUG (or SCD41_DEBUG) to debug + +// Console instructions supported: (errorvalue=-1 in case of error, errorvalue=0 otherwise) +// (data=-1 in case of error, value otherwise) +// (third colum: time in ms needed for execution) +// (DPM: may be executed during periodic measurements) +// +// Instruction Returns Exec(ms) DPM Function +// ------------------------------------------------------------------------------------ +// SCD40Alt data 1 no get Sensor Altitude (in m) +// SCD40Alt x errorvalue 1 no set Sensor Altitude (in m) +// SCD40Auto data 1 no get CalibrationEnabled status (bool) +// SCD40Auto x errorvalue 1 no set CalibrationEnabled status (bool) +// SCD40Toff data 1 no get Temperature offset (centigrades) +// SCD40Toff x errorvalue 1 no set Temperature offset (centigrades) (some rounding may occur) +// SCD40Pres x errorvalue 1 yes set Ambient Pressure (mbar) (overrides Sensor Altitude setting) +// SCD40Cal x errorvalue 400 no perform forced recalibration (ppm CO2) +// SCD40Test errorvalue 10000 no perform selftest +// SCD40StLp errorvalue 0 no start periodic measurement in low-power mode (1/30s) +// SCD40Strt errorvalue 0 no start periodic measurement (1/5s) +// SCD40Stop errorvalue 500 yes stop periodic measurement +// SCD40Pers errorvalue 800 no persist settings in EEPROM (2000 write cycles guaranteed) +// SCD40Rein errorvalue 20 no reinit sensor +// SCD40Fact errorvalue 1200 no factory reset sensor +// +// SCD40Sing errorvalue 5000 no (SCD41 only) measure single shot +// SCD40SRHT errorvalue 50 no (SCD41 only) measure single shot, RHT only + +//#define SCD40_DEBUG + +#ifdef USE_I2C + +#ifdef USE_SCD41 +#define USE_SCD40 +#ifdef SCD41_DEBUG +#define SCD40_DEBUG +#endif +#endif + +#ifdef USE_SCD40 + +#define XSNS_92 92 +#define XI2C_62 62 // See I2CDEVICES.md + +// #define SCD40_ADDRESS 0x62 // already defined in lib + +#define SCD40_MAX_MISSED_READS 30 // in seconds (at 1 read/second) +#define SCD40_STATE_NO_ERROR 0 +#define SCD40_STATE_ERROR_DATA_CRC 1 +#define SCD40_STATE_ERROR_READ_MEAS 2 +#define SCD40_STATE_ERROR_SOFT_RESET 3 +#define SCD40_STATE_ERROR_I2C_RESET 4 + +#include "Arduino.h" +#include + +#define D_CMND_SCD40 "SCD40" + +const char S_JSON_SCD40_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_SCD40 "%s\":%d}"; +//const char S_JSON_SCD40_COMMAND[] PROGMEM = "{\"" D_CMND_SCD40 "%s\"}"; +const char kSCD40_Commands[] PROGMEM = "Alt|Auto|Toff|Pres|Cal|Test|StLP|Strt|Stop|Pers|Rein|Fact|Sing|SRHT"; + +/*********************************************************************************************\ + * enumerations +\*********************************************************************************************/ + +enum SCD40_Commands { // commands useable in console or rules + CMND_SCD40_ALTITUDE, + CMND_SCD40_AUTOMODE, + CMND_SCD40_TEMPOFFSET, + CMND_SCD40_PRESSURE, + CMND_SCD40_FORCEDRECALIBRATION, + CMND_SCD40_SELFTEST, + CMND_SCD40_START_MEASUREMENT_LOW_POWER, + CMND_SCD40_START_MEASUREMENT, + CMND_SCD40_STOP_MEASUREMENT, + CMND_SCD40_PERSIST, + CMND_SCD40_REINIT, + CMND_SCD40_FACTORYRESET, + CMND_SCD40_SINGLESHOT, + CMND_SCD40_SINGLESHOT_RHT_ONLY +}; + +FrogmoreScd40 scd40; + +bool scd40Found = false; +bool scd40IsDataValid = false; +int scd40ErrorState = SCD40_STATE_NO_ERROR; +int scd40Loop_count = 0; +int scd40DataNotAvailable_count = 0; +int scd40GoodMeas_count = 0; +int scd40Reset_count = 0; +int scd40CrcError_count = 0; +int i2cReset_count = 0; +uint16_t scd40_CO2 = 0; +uint16_t scd40_CO2EAvg = 0; +float scd40_Humid = 0.0; +float scd40_Temp = 0.0; + +void Scd40Detect(void) +{ + if (I2cActive(SCD40_ADDRESS)) { + AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40 I2c already active in Scd40Detect()") ); + return; + } + + scd40.begin(); + + // don't stop in case of error, try to continue + delay(10); // not sure whether this is needed + int error = scd40.forceStopPeriodicMeasurement(); // after reboot, stop (if any) periodic measurement, or reinit may not work +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40 force-stop error: %d"), error); +#endif + delay(550); // wait >500ms after stopPeriodicMeasurement before SCD40 allows any other command + + error = scd40.reinit(); // just in case +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40 reinit error: %d"), error); +#endif + delay(20); // not sure whether this is needed + + uint16_t sn[3]; + error = scd40.getSerialNumber(sn); + AddLog(LOG_LEVEL_NONE, PSTR("SCD40 serial nr 0x%X 0x%X 0x%X") ,sn[0], sn[1], sn[2]); + + // by default, start measurements, only register device if this succeeds +#ifdef USE_SCD40_LOWPOWER + if (scd40.startLowPowerPeriodicMeasurement()) { return; } +#else + if (scd40.startPeriodicMeasurement()) { return; } +#endif + I2cSetActiveFound(SCD40_ADDRESS, "SCD40"); + scd40Found = true; +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40 found, measurements started.")); +#endif +} + +// gets data from the sensor +void Scd40Update(void) +{ + bool isAvailable; + + scd40Loop_count++; + + uint32_t error = 0; + switch (scd40ErrorState) { + case SCD40_STATE_NO_ERROR: { + error = scd40.readMeasurement(&scd40_CO2, &scd40_CO2EAvg, &scd40_Temp, &scd40_Humid); + switch (error) { + case ERROR_SCD40_NO_ERROR: + scd40Loop_count = 0; + scd40IsDataValid = true; + scd40GoodMeas_count++; + break; + + case ERROR_SCD40_NO_DATA: + scd40DataNotAvailable_count++; + AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40: no data available.")); + break; + + case ERROR_SCD40_CRC_ERROR: + scd40CrcError_count++; +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: CRC error, CRC error: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"), + scd40CrcError_count, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, i2cReset_count); +#endif + break; + + default: { + scd40ErrorState = SCD40_STATE_ERROR_READ_MEAS; +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: Update: ReadMeasurement error: 0x%lX, counter: %ld"), error, scd40Loop_count); +#endif + return; + } + break; + } + } + break; + + case SCD40_STATE_ERROR_READ_MEAS: { +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: (rd) in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), + scd40ErrorState, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, i2cReset_count); + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: not answering, sending soft reset, counter: %ld"), scd40Loop_count); +#endif + scd40Reset_count++; + error = scd40.stopPeriodicMeasurement(); + if (error) { + scd40ErrorState = SCD40_STATE_ERROR_SOFT_RESET; +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: stopPeriodicMeasurement got error: 0x%lX"), error); +#endif + } else { + error = scd40.reinit(); + if (error) { +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: resetting got error: 0x%lX"), error); +#endif + scd40ErrorState = SCD40_STATE_ERROR_SOFT_RESET; + } else { + scd40ErrorState = ERROR_SCD40_NO_ERROR; + } + } + } + break; + + case SCD40_STATE_ERROR_SOFT_RESET: { +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: (rst) in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), + scd40ErrorState, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, i2cReset_count); + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: clearing i2c bus")); +#endif + i2cReset_count++; + error = scd40.clearI2CBus(); + if (error) { + scd40ErrorState = SCD40_STATE_ERROR_I2C_RESET; +#ifdef SCD40_DEBUG + AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: error clearing i2c bus: 0x%lX"), error); +#endif + } else { + scd40ErrorState = ERROR_SCD40_NO_ERROR; + } + } + break; + + case SCD40_STATE_ERROR_I2C_RESET: { + // Give up + } + break; + } + + if (scd40Loop_count > SCD40_MAX_MISSED_READS) { + AddLog(LOG_LEVEL_DEBUG, PSTR("SCD40: max-missed-reads.")); + scd40IsDataValid = false; + } +} + +int Scd40GetCommand(int command_code, uint16_t *pvalue) +{ + switch (command_code) + { + case CMND_SCD40_ALTITUDE: + return scd40.getSensorAltitude(pvalue); + break; + + case CMND_SCD40_AUTOMODE: + return scd40.getAutomaticSelfCalibrationEnabled(pvalue); + break; + + case CMND_SCD40_TEMPOFFSET: + return scd40.getTemperatureOffset(pvalue); + break; + + case CMND_SCD40_SELFTEST: + return scd40.performSelfTest(pvalue); + break; + + default: + // else for Unknown command + break; + } + return 0; // Fix GCC 10.1 warning +} + +int Scd40SetCommand(int command_code, uint16_t *pvalue) +{ + switch (command_code) + { + case CMND_SCD40_ALTITUDE: + return scd40.setSensorAltitude(*pvalue); + break; + + case CMND_SCD40_AUTOMODE: + return scd40.setAutomaticSelfCalibrationEnabled((bool) (*pvalue)); + break; + + case CMND_SCD40_TEMPOFFSET: + return scd40.setTemperatureOffset(*pvalue); + break; + + case CMND_SCD40_PRESSURE: + return scd40.setAmbientPressure(*pvalue); + break; + + case CMND_SCD40_FORCEDRECALIBRATION: + return scd40.performForcedRecalibration(*pvalue); + break; + + default: + // else for Unknown command + break; + } + return 0; // Fix GCC 10.1 warning +} + +/*********************************************************************************************\ + * Command Sensor42 +\*********************************************************************************************/ + +bool Scd40CommandSensor() +{ + char command[CMDSZ]; + bool serviced = true; + uint8_t prefix_len = strlen(D_CMND_SCD40); + int error; + + if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_SCD40), prefix_len)) { // prefix + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + prefix_len, kSCD40_Commands); + +// not supported here: readMeasurement, getDataReadyStatus, getSerialNumber, measure_single_shot, measure_single_shot_rht_only + + switch (command_code) { + case CMND_SCD40_ALTITUDE: + case CMND_SCD40_AUTOMODE: + case CMND_SCD40_TEMPOFFSET: + case CMND_SCD40_PRESSURE: // write-only + case CMND_SCD40_FORCEDRECALIBRATION: // write-only + case CMND_SCD40_SELFTEST: // read-only + { + uint16_t value = 0; + if (XdrvMailbox.data_len > 0) + { + if (command_code != CMND_SCD40_SELFTEST) { + value = XdrvMailbox.payload; + error = Scd40SetCommand(command_code, &value); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } else { + serviced = false; + break; + } + } + else + { + if ((command_code != CMND_SCD40_PRESSURE) && (command_code != CMND_SCD40_FORCEDRECALIBRATION)) { + error = Scd40GetCommand(command_code, &value); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:value); + } else { + serviced = false; + break; + } + } + } + break; + + case CMND_SCD40_START_MEASUREMENT_LOW_POWER: + { + error = scd40.startLowPowerPeriodicMeasurement(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + + case CMND_SCD40_START_MEASUREMENT: + { + error = scd40.startPeriodicMeasurement(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + + case CMND_SCD40_STOP_MEASUREMENT: + { + error = scd40.stopPeriodicMeasurement(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + + case CMND_SCD40_PERSIST: + { + error = scd40.persistSettings(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + + case CMND_SCD40_REINIT: + { + error = scd40.reinit(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + + case CMND_SCD40_FACTORYRESET: + { + error = scd40.performFactoryReset(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + +#ifdef USE_SCD41 + case CMND_SCD40_SINGLESHOT: + { + error = scd40.measureSingleShot(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; + + case CMND_SCD40_SINGLESHOT_RHT_ONLY: + { + error = scd40.measureSingleShotRhtOnly(); + Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); + } + break; +#endif + + default: + // else for Unknown command + serviced = false; + break; + } + } + return serviced; +} + +void Scd40Show(bool json) +{ + if (scd40IsDataValid) + { + float t = ConvertTemp(scd40_Temp); + float h = ConvertHumidity(scd40_Humid); + + if (json) { + ResponseAppend_P(PSTR(",\"SCD40\":{\"" D_JSON_CO2 "\":%d,\"" D_JSON_ECO2 "\":%d,"), scd40_CO2, scd40_CO2EAvg); + ResponseAppendTHD(t, h); + ResponseJsonEnd(); +#ifdef USE_DOMOTICZ + if (0 == TasmotaGlobal.tele_period) { + DomoticzSensor(DZ_AIRQUALITY, scd40_CO2); + DomoticzTempHumPressureSensor(t, h); + } +#endif // USE_DOMOTICZ +#ifdef USE_WEBSERVER + } else { + WSContentSend_PD(HTTP_SNS_CO2EAVG, "SCD40", scd40_CO2EAvg); + WSContentSend_PD(HTTP_SNS_CO2, "SCD40", scd40_CO2); + WSContentSend_THD("SCD40", t, h); +#endif // USE_WEBSERVER + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xsns92(byte function) +{ + if (!I2cEnabled(XI2C_62)) { return false; } + + bool result = false; + + if (FUNC_INIT == function) { + Scd40Detect(); + } + else if (scd40Found) { + switch (function) { + case FUNC_EVERY_SECOND: + Scd40Update(); + break; + case FUNC_COMMAND: + result = Scd40CommandSensor(); + break; + case FUNC_JSON_APPEND: + Scd40Show(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + Scd40Show(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_SCD40 +#endif // USE_I2C From a260fa85a3bc6763969ada9b98560c840be1731f Mon Sep 17 00:00:00 2001 From: Arnold Niessen Date: Wed, 15 Sep 2021 13:26:39 +0200 Subject: [PATCH 200/317] configuration files updated for SCD40/41 --- BUILDS.md | 1 + tasmota/my_user_config.h | 1 + tasmota/support_features.ino | 4 +++- tasmota/tasmota_configurations.h | 1 + tasmota/tasmota_configurations_ESP32.h | 2 ++ tools/decode-status.py | 2 +- 6 files changed, 9 insertions(+), 2 deletions(-) diff --git a/BUILDS.md b/BUILDS.md index cbf0198f7..fec3cfac9 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -122,6 +122,7 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display | USE_MGC3130 | - | - | - / - | - | - | - | - | | USE_MAX44009 | - | - | - / - | - | - | - | - | | USE_SCD30 | - | - | - / x | - | x | - | - | +| USE_SCD40 | - | - | - / x | - | x | - | - | | USE_SPS30 | - | - | - / - | - | - | - | - | | USE_ADE7953 | - | - | x / x | x | x | - | x | | USE_VL53L0X | - | - | - / x | - | x | - | - | diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 0bf113f9e..ce9d0212b 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -606,6 +606,7 @@ // #define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) // #define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) // #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) +// #define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40/Scd41 CO2 sensor (I2C address 0x62) (+tbd code) // #define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) // #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index 114809a00..a02f76645 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -768,7 +768,9 @@ void ResponseAppendFeatures(void) #ifdef USE_VINDRIKTNING feature8 |= 0x00002000; // xsns_91_vindriktning.ino #endif -// feature8 |= 0x00004000; +#if defined(USE_I2C) && defined(USE_SCD40) + feature8 |= 0x00004000; // xsns_92_scd40.ino +#endif // feature8 |= 0x00008000; // feature8 |= 0x00010000; diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index bdcb005cc..298d4db01 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -107,6 +107,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) +#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+tbd code) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 383621de6..850aa5b28 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -259,6 +259,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) //#define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) +//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+tbd code) (not tested yet on ESP32) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) //#define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) //#define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) @@ -393,6 +394,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) +//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+tbd code) (not tested yet on ESP32) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) diff --git a/tools/decode-status.py b/tools/decode-status.py index e406bd6e0..a626cd8ae 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -256,7 +256,7 @@ a_features = [[ "USE_MPU_ACCEL","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY", "USE_BM8563","USE_ENERGY_DUMMY","USE_AM2320","USE_T67XX", "USE_MCP2515","USE_TASMESH","USE_WIFI_RANGE_EXTENDER","USE_INFLUXDB", - "USE_HRG15","USE_VINDRIKTNING","","", + "USE_HRG15","USE_VINDRIKTNING","USE_SCD40","", "","","","", "","","","", "","","","", From 6148f666ce5e7554356e49aeadfd2b4c341833e0 Mon Sep 17 00:00:00 2001 From: Arnold-n <48472227+Arnold-n@users.noreply.github.com> Date: Wed, 15 Sep 2021 14:05:25 +0200 Subject: [PATCH 201/317] Not in ESP32 (not tested yet) --- BUILDS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDS.md b/BUILDS.md index fec3cfac9..36067c822 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -122,7 +122,7 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display | USE_MGC3130 | - | - | - / - | - | - | - | - | | USE_MAX44009 | - | - | - / - | - | - | - | - | | USE_SCD30 | - | - | - / x | - | x | - | - | -| USE_SCD40 | - | - | - / x | - | x | - | - | +| USE_SCD40 | - | - | - / - | - | x | - | - | | USE_SPS30 | - | - | - / - | - | - | - | - | | USE_ADE7953 | - | - | x / x | x | x | - | x | | USE_VL53L0X | - | - | - / x | - | x | - | - | From 8fcf9bea57559db0c35e26c7e2028530ebff2de2 Mon Sep 17 00:00:00 2001 From: Arnold-n <48472227+Arnold-n@users.noreply.github.com> Date: Wed, 15 Sep 2021 18:20:44 +0200 Subject: [PATCH 202/317] resolving conflict with scd30 driver and removing USE_SCD41 to simplify and align with config files --- tasmota/xsns_92_scd40.ino | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/tasmota/xsns_92_scd40.ino b/tasmota/xsns_92_scd40.ino index 88ac61aea..99b43f817 100644 --- a/tasmota/xsns_92_scd40.ino +++ b/tasmota/xsns_92_scd40.ino @@ -19,10 +19,9 @@ */ -// define USE_SCD40 to use SCD40 (or SCD41 device without additional SCD41 functions) -// define USE_SCD41 to use SCD41 device (including low-power options) -// define USE_SCD40_LOWPOWER to use low-power periodic measurement mode -// define SCD40_DEBUG (or SCD41_DEBUG) to debug +// define USE_SCD40 to use SCD40 or SCD41 device; use SCD41-functions only if you use SCD41 sensor +// define USE_SCD40_LOWPOWER to use low-power periodic measurement mode (both SCD40 and SCD41) +// define SCD40_DEBUG to debug // Console instructions supported: (errorvalue=-1 in case of error, errorvalue=0 otherwise) // (data=-1 in case of error, value otherwise) @@ -54,13 +53,6 @@ #ifdef USE_I2C -#ifdef USE_SCD41 -#define USE_SCD40 -#ifdef SCD41_DEBUG -#define SCD40_DEBUG -#endif -#endif - #ifdef USE_SCD40 #define XSNS_92 92 @@ -115,7 +107,7 @@ int scd40DataNotAvailable_count = 0; int scd40GoodMeas_count = 0; int scd40Reset_count = 0; int scd40CrcError_count = 0; -int i2cReset_count = 0; +int scd40i2cReset_count = 0; uint16_t scd40_CO2 = 0; uint16_t scd40_CO2EAvg = 0; float scd40_Humid = 0.0; @@ -188,7 +180,7 @@ void Scd40Update(void) scd40CrcError_count++; #ifdef SCD40_DEBUG AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: CRC error, CRC error: %ld, good: %ld, no data: %ld, sc30_reset: %ld, i2c_reset: %ld"), - scd40CrcError_count, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, i2cReset_count); + scd40CrcError_count, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, scd40i2cReset_count); #endif break; @@ -207,7 +199,7 @@ void Scd40Update(void) case SCD40_STATE_ERROR_READ_MEAS: { #ifdef SCD40_DEBUG AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: (rd) in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), - scd40ErrorState, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, i2cReset_count); + scd40ErrorState, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, scd40i2cReset_count); AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: not answering, sending soft reset, counter: %ld"), scd40Loop_count); #endif scd40Reset_count++; @@ -234,10 +226,10 @@ void Scd40Update(void) case SCD40_STATE_ERROR_SOFT_RESET: { #ifdef SCD40_DEBUG AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: (rst) in error state: %d, good: %ld, no data: %ld, sc30 reset: %ld, i2c reset: %ld"), - scd40ErrorState, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, i2cReset_count); + scd40ErrorState, scd40GoodMeas_count, scd40DataNotAvailable_count, scd40Reset_count, scd40i2cReset_count); AddLog(LOG_LEVEL_ERROR, PSTR("SCD40: clearing i2c bus")); #endif - i2cReset_count++; + scd40i2cReset_count++; error = scd40.clearI2CBus(); if (error) { scd40ErrorState = SCD40_STATE_ERROR_I2C_RESET; @@ -411,7 +403,6 @@ bool Scd40CommandSensor() } break; -#ifdef USE_SCD41 case CMND_SCD40_SINGLESHOT: { error = scd40.measureSingleShot(); @@ -425,7 +416,6 @@ bool Scd40CommandSensor() Response_P(S_JSON_SCD40_COMMAND_NVALUE, command, error?-1:0); } break; -#endif default: // else for Unknown command From 418ebf1e4ef07f5e23d26c69dde599a6990345b5 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 15 Sep 2021 19:36:48 +0200 Subject: [PATCH 203/317] Berry update and global resolidify --- lib/libesp32/Berry/default/be_driverlib.c | 18 +- lib/libesp32/Berry/default/be_energylib.c | 8 - lib/libesp32/Berry/default/be_flash_lib.c | 11 - .../Berry/default/be_i2c_axp192_lib.c | 2 +- lib/libesp32/Berry/default/be_i2c_driverlib.c | 688 ++-- lib/libesp32/Berry/default/be_i2s_audio_lib.c | 2 - lib/libesp32/Berry/default/be_light_lib.c | 17 - lib/libesp32/Berry/default/be_lvgl_cb.c | 64 +- .../Berry/default/be_lvgl_clock_icon_lib.c | 4 +- .../Berry/default/be_lvgl_color_lib.c | 16 - lib/libesp32/Berry/default/be_lvgl_ctypes.c | 19 - lib/libesp32/Berry/default/be_lvgl_font_lib.c | 15 - .../Berry/default/be_lvgl_signal_arcs_lib.c | 8 +- .../Berry/default/be_lvgl_signal_bars_lib.c | 4 +- .../default/be_lvgl_wifi_arcs_icon_lib.c | 2 +- .../Berry/default/be_lvgl_wifi_arcs_lib.c | 4 +- .../default/be_lvgl_wifi_bars_icon_lib.c | 2 +- .../Berry/default/be_lvgl_wifi_bars_lib.c | 4 +- lib/libesp32/Berry/default/be_md5_lib.c | 15 - .../Berry/default/be_path_tasmota_lib.c | 10 - lib/libesp32/Berry/default/be_tasmotalib.c | 3152 +++++++---------- lib/libesp32/Berry/default/be_timer_class.c | 68 +- lib/libesp32/Berry/default/be_webserver_lib.c | 26 - lib/libesp32/Berry/default/be_wirelib.c | 150 +- lib/libesp32/Berry/default/embedded/Wire.be | 25 + .../Berry/default/embedded}/i2c_driver.be | 0 lib/libesp32/Berry/generate/be_const_strtab.h | 1 - .../Berry/generate/be_const_strtab_def.h | 5 +- .../Berry/generate/be_fixed_introspect.h | 5 +- .../Berry/generate/be_fixed_m_builtin.h | 86 +- lib/libesp32/Berry/src/be_baselib.c | 56 + lib/libesp32/Berry/src/be_introspectlib.c | 51 - lib/libesp32/Berry/src/be_libs.c | 2 + .../Berry/tools/coc/block_builder.cpp | 17 +- lib/libesp32/Berry/tools/coc/block_builder.h | 1 + lib/libesp32/Berry/tools/coc/coc_parser.cpp | 1 + lib/libesp32/Berry/tools/coc/object_block.h | 1 + .../Berry/tools/grammar/berry.bytecode | 2 +- lib/libesp32/Berry/tools/grammar/berry.ebnf | 2 +- tasmota/berry/modules/partition.bec | Bin 15648 -> 15584 bytes 40 files changed, 1883 insertions(+), 2681 deletions(-) create mode 100644 lib/libesp32/Berry/default/embedded/Wire.be rename {tasmota/berry/drivers => lib/libesp32/Berry/default/embedded}/i2c_driver.be (100%) diff --git a/lib/libesp32/Berry/default/be_driverlib.c b/lib/libesp32/Berry/default/be_driverlib.c index 72874c08b..dbef17a94 100644 --- a/lib/libesp32/Berry/default/be_driverlib.c +++ b/lib/libesp32/Berry/default/be_driverlib.c @@ -23,7 +23,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 R0 + 0x80000000, // 0000 RET 0 }) ) ); @@ -44,12 +44,12 @@ be_local_closure(get_tasmota, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - be_nested_string("tasmota", 424643812, 7), /* R256 - K0 */ + /* K0 */ be_nested_string("tasmota", 424643812, 7), }), (be_nested_const_str("get_tasmota", 334356779, 11)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[ 2]) { /* code */ - 0xB8060000, // 0000 GETNGBL R1 R256 + 0xB8060000, // 0000 GETNGBL R1 K0 0x80040200, // 0001 RET 1 R1 }) ) @@ -98,19 +98,19 @@ be_local_closure(add_cmd, /* name */ }), 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - be_nested_string("tasmota", 424643812, 7), /* R256 - K0 */ - be_nested_string("add_cmd", -933336417, 7), /* R257 - K1 */ + /* K0 */ be_nested_string("tasmota", 424643812, 7), + /* K1 */ be_nested_string("add_cmd", -933336417, 7), }), (be_nested_const_str("add_cmd", -933336417, 7)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[ 7]) { /* code */ - 0xB80E0000, // 0000 GETNGBL R3 R256 - 0x8C0C0701, // 0001 GETMET R3 R3 R257 + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 0x5C140200, // 0002 MOVE R5 R1 0x84180000, // 0003 CLOSURE R6 P0 0x7C0C0600, // 0004 CALL R3 3 - 0xA0000000, // 0005 CLOSE 0 - 0x80000000, // 0006 RET 0 R0 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); diff --git a/lib/libesp32/Berry/default/be_energylib.c b/lib/libesp32/Berry/default/be_energylib.c index eb267f5db..1cbb0822e 100644 --- a/lib/libesp32/Berry/default/be_energylib.c +++ b/lib/libesp32/Berry/default/be_energylib.c @@ -11,19 +11,11 @@ extern int b_nrg_read(bvm *vm); -#if !BE_USE_PRECOMPILED_OBJECT -be_native_module_attr_table(energy) { - be_native_module_function("read", b_nrg_read), -}; - -be_define_native_module(energy, NULL); -#else /* @const_object_info_begin module energy (scope: global) { read, func(b_nrg_read) } @const_object_info_end */ #include "../generate/be_fixed_energy.h" -#endif #endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_flash_lib.c b/lib/libesp32/Berry/default/be_flash_lib.c index b05b23637..539805d5d 100644 --- a/lib/libesp32/Berry/default/be_flash_lib.c +++ b/lib/libesp32/Berry/default/be_flash_lib.c @@ -11,16 +11,6 @@ extern int p_flash_read(bvm *vm); extern int p_flash_write(bvm *vm); extern int p_flash_erase(bvm *vm); -#if !BE_USE_PRECOMPILED_OBJECT -be_native_module_attr_table(flash) { - be_native_module_function("read", p_flash_read), - be_native_module_function("write", p_flash_write), - be_native_module_function("erase", p_flash_erase), - -}; - -be_define_native_module(flash, NULL); -#else /* @const_object_info_begin module flash (scope: global) { read, func(p_flash_read) @@ -29,4 +19,3 @@ module flash (scope: global) { } @const_object_info_end */ #include "../generate/be_fixed_flash.h" -#endif diff --git a/lib/libesp32/Berry/default/be_i2c_axp192_lib.c b/lib/libesp32/Berry/default/be_i2c_axp192_lib.c index b81c47775..5eba55476 100644 --- a/lib/libesp32/Berry/default/be_i2c_axp192_lib.c +++ b/lib/libesp32/Berry/default/be_i2c_axp192_lib.c @@ -476,7 +476,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[ 9]) { /* code */ - 0x60040014, // 0000 GETGBL R1 G20 + 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0xB80E0000, // 0002 GETNGBL R3 K0 0x7C040400, // 0003 CALL R1 2 diff --git a/lib/libesp32/Berry/default/be_i2c_driverlib.c b/lib/libesp32/Berry/default/be_i2c_driverlib.c index 88d9ded34..2ac5627d9 100644 --- a/lib/libesp32/Berry/default/be_i2c_driverlib.c +++ b/lib/libesp32/Berry/default/be_i2c_driverlib.c @@ -11,333 +11,6 @@ extern bclass* be_class_Driver; // Parent class -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(init, /* name */ - be_nested_proto( - 10, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - be_nested_string("get_tasmota", 334356779, 11), - be_nested_string("i2c_enabled", 218388101, 11), - be_nested_string("addr", 1087856498, 4), - be_nested_string("wire", -212213352, 4), - be_nested_string("wire_scan", -1623691416, 9), - be_nested_string("function", -1630125495, 8), - be_nested_string("name", -1925595674, 4), - be_nested_string("I2C:", 813483371, 4), - be_nested_string("detected on bus", 1432002650, 15), - be_nested_string("bus", 1607822841, 3), - }), - (be_nested_const_str("init", 380752755, 4)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[44]) { /* code */ - 0x8C100100, // 0000 GETMET R4 R0 R256 - 0x7C100200, // 0001 CALL R4 1 - 0x4C140000, // 0002 LDNIL 5 - 0x20140605, // 0003 NE R5 R3 R5 - 0x78160004, // 0004 JMPF R5 #000A - 0x8C140901, // 0005 GETMET R5 R4 R257 - 0x5C1C0600, // 0006 MOVE R7 R3 - 0x7C140400, // 0007 CALL R5 2 - 0x74160000, // 0008 JMPT R5 #000A - 0x80000A00, // 0009 RET 0 R5 - 0x90020402, // 000A SETMBR R0 R258 R2 - 0x8C140904, // 000B GETMET R5 R4 R260 - 0x881C0102, // 000C GETMBR R7 R0 R258 - 0x7C140400, // 000D CALL R5 2 - 0x90020605, // 000E SETMBR R0 R259 R5 - 0x88140103, // 000F GETMBR R5 R0 R259 - 0x78160019, // 0010 JMPF R5 #002B - 0x60140015, // 0011 GETGBL R5 G21 - 0x5C180200, // 0012 MOVE R6 R1 - 0x7C140200, // 0013 CALL R5 1 - 0x1C140B05, // 0014 EQ R5 R5 R261 - 0x78160004, // 0015 JMPF R5 #001B - 0x5C140200, // 0016 MOVE R5 R1 - 0x5C180000, // 0017 MOVE R6 R0 - 0x7C140200, // 0018 CALL R5 1 - 0x90020C05, // 0019 SETMBR R0 R262 R5 - 0x70020000, // 001A JMP #001C - 0x90020C01, // 001B SETMBR R0 R262 R1 - 0x88140106, // 001C GETMBR R5 R0 R262 - 0x4C180000, // 001D LDNIL 6 - 0x1C140A06, // 001E EQ R5 R5 R6 - 0x78160001, // 001F JMPF R5 #0022 - 0x4C140000, // 0020 LDNIL 5 - 0x90020605, // 0021 SETMBR R0 R259 R5 - 0x88140103, // 0022 GETMBR R5 R0 R259 - 0x78160006, // 0023 JMPF R5 #002B - 0x6014000F, // 0024 GETGBL R5 G15 - 0x58180007, // 0025 LDCONST R6 K7 - 0x881C0106, // 0026 GETMBR R7 R0 R262 - 0x58200008, // 0027 LDCONST R8 K8 - 0x88240103, // 0028 GETMBR R9 R0 R259 - 0x88241309, // 0029 GETMBR R9 R9 R265 - 0x7C140800, // 002A CALL R5 4 - 0x80000000, // 002B RET 0 R0 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: write8 -********************************************************************/ -be_local_closure(write8, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - be_nested_string("wire", -212213352, 4), - be_nested_string("write", -1104765092, 5), - be_nested_string("addr", 1087856498, 4), - be_const_int(1), - }), - (be_nested_const_str("write8", -1160975764, 6)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[ 8]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 R256 - 0x8C0C0701, // 0001 GETMET R3 R3 R257 - 0x88140102, // 0002 GETMBR R5 R0 R258 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x58200003, // 0005 LDCONST R8 K3 - 0x7C0C0A00, // 0006 CALL R3 5 - 0x80040600, // 0007 RET 1 R3 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: write_bit -********************************************************************/ -be_local_closure(write_bit, /* name */ - be_nested_proto( - 11, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - be_const_int(0), - be_const_int(1), - be_nested_string("write8", -1160975764, 6), - be_nested_string("read8", -1492179129, 5), - }), - (be_nested_const_str("write_bit", -1633976860, 9)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[26]) { /* code */ - 0x14100500, // 0000 LT R4 R2 R256 - 0x74120002, // 0001 JMPT R4 #0005 - 0x54120006, // 0002 LDINT R4 7 - 0x24100404, // 0003 GT R4 R2 R4 - 0x78120000, // 0004 JMPF R4 #0006 - 0x80000800, // 0005 RET 0 R4 - 0x38120202, // 0006 SHL R4 R257 R2 - 0x780E0007, // 0007 JMPF R3 #0010 - 0x8C140102, // 0008 GETMET R5 R0 R258 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x8C200103, // 000A GETMET R8 R0 R259 - 0x5C280200, // 000B MOVE R10 R1 - 0x7C200400, // 000C CALL R8 2 - 0x30201004, // 000D OR R8 R8 R4 - 0x7C140600, // 000E CALL R5 3 - 0x70020008, // 000F JMP #0019 - 0x8C140102, // 0010 GETMET R5 R0 R258 - 0x5C1C0200, // 0011 MOVE R7 R1 - 0x8C200103, // 0012 GETMET R8 R0 R259 - 0x5C280200, // 0013 MOVE R10 R1 - 0x7C200400, // 0014 CALL R8 2 - 0x542600FE, // 0015 LDINT R9 255 - 0x04241204, // 0016 SUB R9 R9 R4 - 0x2C201009, // 0017 AND R8 R8 R9 - 0x7C140600, // 0018 CALL R5 3 - 0x80000000, // 0019 RET 0 R0 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: read8 -********************************************************************/ -be_local_closure(read8, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - be_nested_string("wire", -212213352, 4), - be_nested_string("read", -824204347, 4), - be_nested_string("addr", 1087856498, 4), - be_const_int(1), - }), - (be_nested_const_str("read8", -1492179129, 5)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x8C080501, // 0001 GETMET R2 R2 R257 - 0x88100102, // 0002 GETMBR R4 R0 R258 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x80040400, // 0006 RET 1 R2 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: read12 -********************************************************************/ -be_local_closure(read12, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - be_nested_string("wire", -212213352, 4), - be_nested_string("read_bytes", -718234123, 10), - be_nested_string("addr", 1087856498, 4), - be_const_int(2), - be_const_int(0), - be_const_int(1), - }), - (be_nested_const_str("read12", -3890326, 6)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x8C080501, // 0001 GETMET R2 R2 R257 - 0x88100102, // 0002 GETMBR R4 R0 R258 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 R260 - 0x54120003, // 0007 LDINT R4 4 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 R261 - 0x000C0604, // 000A ADD R3 R3 R4 - 0x80040600, // 000B RET 1 R3 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: read13 -********************************************************************/ -be_local_closure(read13, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - be_nested_string("wire", -212213352, 4), - be_nested_string("read_bytes", -718234123, 10), - be_nested_string("addr", 1087856498, 4), - be_const_int(2), - be_const_int(0), - be_const_int(1), - }), - (be_nested_const_str("read13", 12887293, 6)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x8C080501, // 0001 GETMET R2 R2 R257 - 0x88100102, // 0002 GETMBR R4 R0 R258 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 R260 - 0x54120004, // 0007 LDINT R4 5 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 R261 - 0x000C0604, // 000A ADD R3 R3 R4 - 0x80040600, // 000B RET 1 R3 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: read24 -********************************************************************/ -be_local_closure(read24, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - be_nested_string("wire", -212213352, 4), - be_nested_string("read_bytes", -718234123, 10), - be_nested_string("addr", 1087856498, 4), - be_const_int(3), - be_const_int(0), - be_const_int(1), - be_const_int(2), - }), - (be_nested_const_str("read24", 1808533811, 6)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[16]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x8C080501, // 0001 GETMET R2 R2 R257 - 0x88100102, // 0002 GETMBR R4 R0 R258 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180003, // 0004 LDCONST R6 K3 - 0x7C080800, // 0005 CALL R2 4 - 0x940C0504, // 0006 GETIDX R3 R2 R260 - 0x5412000F, // 0007 LDINT R4 16 - 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100505, // 0009 GETIDX R4 R2 R261 - 0x54160007, // 000A LDINT R5 8 - 0x38100805, // 000B SHL R4 R4 R5 - 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100506, // 000D GETIDX R4 R2 R262 - 0x000C0604, // 000E ADD R3 R3 R4 - 0x80040600, // 000F RET 1 R3 - }) - ) -); -/*******************************************************************/ - /******************************************************************** ** Solidified function: read32 ********************************************************************/ @@ -352,35 +25,35 @@ be_local_closure(read32, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - be_nested_string("wire", -212213352, 4), - be_nested_string("read_bytes", -718234123, 10), - be_nested_string("addr", 1087856498, 4), - be_const_int(0), - be_const_int(1), - be_const_int(2), - be_const_int(3), + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read_bytes", -718234123, 10), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(0), + /* K4 */ be_const_int(1), + /* K5 */ be_const_int(2), + /* K6 */ be_const_int(3), }), (be_nested_const_str("read32", 1741276240, 6)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[20]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x8C080501, // 0001 GETMET R2 R2 R257 - 0x88100102, // 0002 GETMBR R4 R0 R258 + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 0x5C140200, // 0003 MOVE R5 R1 0x541A0003, // 0004 LDINT R6 4 0x7C080800, // 0005 CALL R2 4 - 0x940C0503, // 0006 GETIDX R3 R2 R259 + 0x940C0503, // 0006 GETIDX R3 R2 K3 0x54120017, // 0007 LDINT R4 24 0x380C0604, // 0008 SHL R3 R3 R4 - 0x94100504, // 0009 GETIDX R4 R2 R260 + 0x94100504, // 0009 GETIDX R4 R2 K4 0x5416000F, // 000A LDINT R5 16 0x38100805, // 000B SHL R4 R4 R5 0x000C0604, // 000C ADD R3 R3 R4 - 0x94100505, // 000D GETIDX R4 R2 R261 + 0x94100505, // 000D GETIDX R4 R2 K5 0x54160007, // 000E LDINT R5 8 0x38100805, // 000F SHL R4 R4 R5 0x000C0604, // 0010 ADD R3 R3 R4 - 0x94100506, // 0011 GETIDX R4 R2 R262 + 0x94100506, // 0011 GETIDX R4 R2 K6 0x000C0604, // 0012 ADD R3 R3 R4 0x80040600, // 0013 RET 1 R3 }) @@ -389,6 +62,339 @@ be_local_closure(read32, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: write8 +********************************************************************/ +be_local_closure(write8, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("write", -1104765092, 5), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(1), + }), + (be_nested_const_str("write8", -1160975764, 6)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 8]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x88140102, // 0002 GETMBR R5 R0 K2 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x58200003, // 0005 LDCONST R8 K3 + 0x7C0C0A00, // 0006 CALL R3 5 + 0x80040600, // 0007 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read12 +********************************************************************/ +be_local_closure(read12, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read_bytes", -718234123, 10), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(2), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(1), + }), + (be_nested_const_str("read12", -3890326, 6)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[12]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x58180003, // 0004 LDCONST R6 K3 + 0x7C080800, // 0005 CALL R2 4 + 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x54120003, // 0007 LDINT R4 4 + 0x380C0604, // 0008 SHL R3 R3 R4 + 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x000C0604, // 000A ADD R3 R3 R4 + 0x80040600, // 000B RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: write_bit +********************************************************************/ +be_local_closure(write_bit, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_string("write8", -1160975764, 6), + /* K3 */ be_nested_string("read8", -1492179129, 5), + }), + (be_nested_const_str("write_bit", -1633976860, 9)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[26]) { /* code */ + 0x14100500, // 0000 LT R4 R2 K0 + 0x74120002, // 0001 JMPT R4 #0005 + 0x54120006, // 0002 LDINT R4 7 + 0x24100404, // 0003 GT R4 R2 R4 + 0x78120000, // 0004 JMPF R4 #0006 + 0x80000800, // 0005 RET 0 + 0x38120202, // 0006 SHL R4 K1 R2 + 0x780E0007, // 0007 JMPF R3 #0010 + 0x8C140102, // 0008 GETMET R5 R0 K2 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x8C200103, // 000A GETMET R8 R0 K3 + 0x5C280200, // 000B MOVE R10 R1 + 0x7C200400, // 000C CALL R8 2 + 0x30201004, // 000D OR R8 R8 R4 + 0x7C140600, // 000E CALL R5 3 + 0x70020008, // 000F JMP #0019 + 0x8C140102, // 0010 GETMET R5 R0 K2 + 0x5C1C0200, // 0011 MOVE R7 R1 + 0x8C200103, // 0012 GETMET R8 R0 K3 + 0x5C280200, // 0013 MOVE R10 R1 + 0x7C200400, // 0014 CALL R8 2 + 0x542600FE, // 0015 LDINT R9 255 + 0x04241204, // 0016 SUB R9 R9 R4 + 0x2C201009, // 0017 AND R8 R8 R9 + 0x7C140600, // 0018 CALL R5 3 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read24 +********************************************************************/ +be_local_closure(read24, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read_bytes", -718234123, 10), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(3), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(1), + /* K6 */ be_const_int(2), + }), + (be_nested_const_str("read24", 1808533811, 6)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[16]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x58180003, // 0004 LDCONST R6 K3 + 0x7C080800, // 0005 CALL R2 4 + 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x5412000F, // 0007 LDINT R4 16 + 0x380C0604, // 0008 SHL R3 R3 R4 + 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x54160007, // 000A LDINT R5 8 + 0x38100805, // 000B SHL R4 R4 R5 + 0x000C0604, // 000C ADD R3 R3 R4 + 0x94100506, // 000D GETIDX R4 R2 K6 + 0x000C0604, // 000E ADD R3 R3 R4 + 0x80040600, // 000F RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read8 +********************************************************************/ +be_local_closure(read8, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read", -824204347, 4), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(1), + }), + (be_nested_const_str("read8", -1492179129, 5)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x58180003, // 0004 LDCONST R6 K3 + 0x7C080800, // 0005 CALL R2 4 + 0x80040400, // 0006 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 10, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_string("get_tasmota", 334356779, 11), + /* K1 */ be_nested_string("i2c_enabled", 218388101, 11), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_nested_string("wire", -212213352, 4), + /* K4 */ be_nested_string("wire_scan", -1623691416, 9), + /* K5 */ be_nested_string("function", -1630125495, 8), + /* K6 */ be_nested_string("name", -1925595674, 4), + /* K7 */ be_nested_string("I2C:", 813483371, 4), + /* K8 */ be_nested_string("detected on bus", 1432002650, 15), + /* K9 */ be_nested_string("bus", 1607822841, 3), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[44]) { /* code */ + 0x8C100100, // 0000 GETMET R4 R0 K0 + 0x7C100200, // 0001 CALL R4 1 + 0x4C140000, // 0002 LDNIL R5 + 0x20140605, // 0003 NE R5 R3 R5 + 0x78160004, // 0004 JMPF R5 #000A + 0x8C140901, // 0005 GETMET R5 R4 K1 + 0x5C1C0600, // 0006 MOVE R7 R3 + 0x7C140400, // 0007 CALL R5 2 + 0x74160000, // 0008 JMPT R5 #000A + 0x80000A00, // 0009 RET 0 + 0x90020402, // 000A SETMBR R0 K2 R2 + 0x8C140904, // 000B GETMET R5 R4 K4 + 0x881C0102, // 000C GETMBR R7 R0 K2 + 0x7C140400, // 000D CALL R5 2 + 0x90020605, // 000E SETMBR R0 K3 R5 + 0x88140103, // 000F GETMBR R5 R0 K3 + 0x78160019, // 0010 JMPF R5 #002B + 0x60140004, // 0011 GETGBL R5 G4 + 0x5C180200, // 0012 MOVE R6 R1 + 0x7C140200, // 0013 CALL R5 1 + 0x1C140B05, // 0014 EQ R5 R5 K5 + 0x78160004, // 0015 JMPF R5 #001B + 0x5C140200, // 0016 MOVE R5 R1 + 0x5C180000, // 0017 MOVE R6 R0 + 0x7C140200, // 0018 CALL R5 1 + 0x90020C05, // 0019 SETMBR R0 K6 R5 + 0x70020000, // 001A JMP #001C + 0x90020C01, // 001B SETMBR R0 K6 R1 + 0x88140106, // 001C GETMBR R5 R0 K6 + 0x4C180000, // 001D LDNIL R6 + 0x1C140A06, // 001E EQ R5 R5 R6 + 0x78160001, // 001F JMPF R5 #0022 + 0x4C140000, // 0020 LDNIL R5 + 0x90020605, // 0021 SETMBR R0 K3 R5 + 0x88140103, // 0022 GETMBR R5 R0 K3 + 0x78160006, // 0023 JMPF R5 #002B + 0x60140001, // 0024 GETGBL R5 G1 + 0x58180007, // 0025 LDCONST R6 K7 + 0x881C0106, // 0026 GETMBR R7 R0 K6 + 0x58200008, // 0027 LDCONST R8 K8 + 0x88240103, // 0028 GETMBR R9 R0 K3 + 0x88241309, // 0029 GETMBR R9 R9 K9 + 0x7C140800, // 002A CALL R5 4 + 0x80000000, // 002B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read13 +********************************************************************/ +be_local_closure(read13, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_string("wire", -212213352, 4), + /* K1 */ be_nested_string("read_bytes", -718234123, 10), + /* K2 */ be_nested_string("addr", 1087856498, 4), + /* K3 */ be_const_int(2), + /* K4 */ be_const_int(0), + /* K5 */ be_const_int(1), + }), + (be_nested_const_str("read13", 12887293, 6)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[12]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x58180003, // 0004 LDCONST R6 K3 + 0x7C080800, // 0005 CALL R2 4 + 0x940C0504, // 0006 GETIDX R3 R2 K4 + 0x54120004, // 0007 LDINT R4 5 + 0x380C0604, // 0008 SHL R3 R3 R4 + 0x94100505, // 0009 GETIDX R4 R2 K5 + 0x000C0604, // 000A ADD R3 R3 R4 + 0x80040600, // 000B RET 1 R3 + }) + ) +); +/*******************************************************************/ + #include "../generate/be_fixed_be_class_I2C_Driver.h" void be_load_driver_i2c_lib(bvm *vm) { diff --git a/lib/libesp32/Berry/default/be_i2s_audio_lib.c b/lib/libesp32/Berry/default/be_i2s_audio_lib.c index 888cb2d42..ef8720b23 100644 --- a/lib/libesp32/Berry/default/be_i2s_audio_lib.c +++ b/lib/libesp32/Berry/default/be_i2s_audio_lib.c @@ -32,7 +32,6 @@ extern int i2s_file_source_fs_deinit(bvm *vm); #endif // USE_UFILESYS -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_class_audio_output.h" #include "../generate/be_fixed_be_class_audio_output_i2s.h" #include "../generate/be_fixed_be_class_audio_generator.h" @@ -40,7 +39,6 @@ extern int i2s_file_source_fs_deinit(bvm *vm); #include "../generate/be_fixed_be_class_audio_generator_mp3.h" #include "../generate/be_fixed_be_class_audio_file_source.h" #include "../generate/be_fixed_be_class_audio_file_source_fs.h" -#endif void be_load_driver_audio_lib(bvm *vm) { be_pushntvclass(vm, &be_class_audio_output); diff --git a/lib/libesp32/Berry/default/be_light_lib.c b/lib/libesp32/Berry/default/be_light_lib.c index a536fd6df..6d020eca8 100644 --- a/lib/libesp32/Berry/default/be_light_lib.c +++ b/lib/libesp32/Berry/default/be_light_lib.c @@ -13,22 +13,6 @@ extern int l_gamma8(bvm *vm); extern int l_gamma10(bvm *vm); extern int l_rev_gamma10(bvm *vm); -#if !BE_USE_PRECOMPILED_OBJECT - -be_native_module_attr_table(light) { - - be_native_module_function("get", l_getlight), - be_native_module_function("set", l_setlight), - - be_native_module_function("gamma8", l_gamma8), - be_native_module_function("gamma10", l_gamma10), - be_native_module_function("reverse_gamma10", l_rev_gamma10), - -}; - -be_define_native_module(light, NULL); - -#else /* @const_object_info_begin module light (scope: global) { get, func(l_getlight) @@ -40,6 +24,5 @@ module light (scope: global) { } @const_object_info_end */ #include "../generate/be_fixed_light.h" -#endif #endif // USE_LIGHT \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_cb.c b/lib/libesp32/Berry/default/be_lvgl_cb.c index 01c5e8d76..f226b2679 100644 --- a/lib/libesp32/Berry/default/be_lvgl_cb.c +++ b/lib/libesp32/Berry/default/be_lvgl_cb.c @@ -102,94 +102,32 @@ class be_lvgl_cb (scope: global, name: lv_cb) { // 'lv_gauge_format_cb' // -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_lv_group_focus_cb.h" #include "../generate/be_fixed_be_lv_event_cb.h" #include "../generate/be_fixed_be_lv_signal_cb.h" #include "../generate/be_fixed_be_lv_design_cb.h" #include "../generate/be_fixed_be_lv_gauge_format_cb.h" -#endif void be_load_lvgl_cb_all_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members_lv_group_focus_cb[] = { - { "()", lv_group_focus_cb_call }, - { NULL, NULL } - }; - be_regclass(vm, "lv_group_focus_cb", members); - be_getglobal(vm, "lv_group_focus_cb"); - be_getglobal(vm, "lv_cb"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_lv_group_focus_cb); be_setglobal(vm, "lv_group_focus_cb"); be_pop(vm, 1); -#endif -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members_lv_event_cb[] = { - { "()", lv_event_cb_call }, - { NULL, NULL } - }; - be_regclass(vm, "lv_event_cb", members); - be_getglobal(vm, "lv_event_cb"); - be_getglobal(vm, "lv_cb"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_lv_event_cb); be_setglobal(vm, "lv_event_cb"); be_pop(vm, 1); -#endif - -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members_lv_signal_cb[] = { - { "()", lv_signal_cb_call }, - { NULL, NULL } - }; - be_regclass(vm, "lv_signal_cb", members); - be_getglobal(vm, "lv_signal_cb"); - be_getglobal(vm, "lv_cb"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else + be_pushntvclass(vm, &be_lv_signal_cb); be_setglobal(vm, "lv_signal_cb"); be_pop(vm, 1); -#endif -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members_lv_design_cb[] = { - { "()", lv_design_cb_call }, - { NULL, NULL } - }; - be_regclass(vm, "lv_design_cb", members); - be_getglobal(vm, "lv_design_cb"); - be_getglobal(vm, "lv_cb"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_lv_design_cb); be_setglobal(vm, "lv_design_cb"); be_pop(vm, 1); -#endif -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members_lv_gauge_format_cb[] = { - { "()", lv_gauge_format_cb_call }, - { NULL, NULL } - }; - be_regclass(vm, "lv_gauge_format_cb", members); - be_getglobal(vm, "lv_gauge_format_cb"); - be_getglobal(vm, "lv_cb"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_lv_gauge_format_cb); be_setglobal(vm, "lv_gauge_format_cb"); be_pop(vm, 1); -#endif } /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c index 888456745..1969e6172 100644 --- a/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_clock_icon_lib.c @@ -157,7 +157,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[76]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 @@ -260,7 +260,7 @@ be_local_closure(del, /* name */ (be_nested_const_str("del", -816214454, 3)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[10]) { /* code */ - 0x60040014, // 0000 GETGBL R1 G20 + 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 0x8C040300, // 0003 GETMET R1 R1 K0 diff --git a/lib/libesp32/Berry/default/be_lvgl_color_lib.c b/lib/libesp32/Berry/default/be_lvgl_color_lib.c index 27eabbbd1..ebc53821d 100644 --- a/lib/libesp32/Berry/default/be_lvgl_color_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_color_lib.c @@ -12,28 +12,12 @@ extern int lco_tostring(bvm *vm); // generic function extern int lco_toint(bvm *vm); // generic function -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_class_lv_color.h" -#endif void be_load_lvgl_color_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, // keeping track of styles to avoid GC - { "init", lco_init }, - { "tostring", lco_tostring }, - { "toint", lco_toint }, - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_color", members); -#else be_pushntvclass(vm, &be_class_lv_color); be_setglobal(vm, "lv_color"); be_pop(vm, 1); -#endif } /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes.c b/lib/libesp32/Berry/default/be_lvgl_ctypes.c index 1c5e52b46..1a4c3b046 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes.c +++ b/lib/libesp32/Berry/default/be_lvgl_ctypes.c @@ -311,31 +311,12 @@ int be_ctypes_setmember(bvm *vm) { BE_EXPORT_VARIABLE extern const bclass be_class_bytes; -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_class_lv_ctypes.h" -#endif void be_load_lvgl_ctypes_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".def", NULL }, // pointer to definition - { "init", be_ctypes_init }, - { "copy", be_ctypes_copy }, - { "member", be_ctypes_member }, - { "setmember", be_ctypes_setmember }, - { NULL, NULL } - }; - be_regclass(vm, "ctypes_bytes", members); - - be_getglobal(vm, "ctypes_bytes"); - be_getglobal(vm, "bytes"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_ctypes); be_setglobal(vm, "ctypes_bytes"); be_pop(vm, 1); -#endif } /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_lvgl_font_lib.c b/lib/libesp32/Berry/default/be_lvgl_font_lib.c index 0bf03c3f9..115f5c2c6 100644 --- a/lib/libesp32/Berry/default/be_lvgl_font_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_font_lib.c @@ -10,27 +10,12 @@ extern int lvx_init(bvm *vm); // generic function extern int lvx_tostring(bvm *vm); // generic function -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_class_lv_font.h" -#endif void be_load_lvgl_font_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, // keeping track of styles to avoid GC - { "init", lvx_init }, - { "tostring", lvx_tostring }, - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_font", members); -#else be_pushntvclass(vm, &be_class_lv_font); be_setglobal(vm, "lv_font"); be_pop(vm, 1); -#endif } /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c index e33b5c205..0ff6d9951 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c @@ -157,14 +157,14 @@ be_local_closure(my_design_cb, /* name */ 0x04380A08, // 0046 SUB R14 R5 R8 0x0C3C0D03, // 0047 DIV R15 R6 K3 0x043C1E09, // 0048 SUB R15 R15 R9 - 0x60400007, // 0049 GETGBL R16 G7 + 0x60400009, // 0049 GETGBL R16 G9 0x54460059, // 004A LDINT R17 90 0x8C480719, // 004B GETMET R18 R3 K25 0x8C50071A, // 004C GETMET R20 R3 K26 - 0x60580011, // 004D GETGBL R22 G17 + 0x6058000A, // 004D GETGBL R22 G10 0x5C5C1E00, // 004E MOVE R23 R15 0x7C580200, // 004F CALL R22 1 - 0x605C0011, // 0050 GETGBL R23 G17 + 0x605C000A, // 0050 GETGBL R23 G10 0x5C601C00, // 0051 MOVE R24 R14 0x7C5C0200, // 0052 CALL R23 1 0x0C582C17, // 0053 DIV R22 R22 R23 @@ -327,7 +327,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[28]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c index 4c3e09bda..56f88987e 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c @@ -149,7 +149,7 @@ be_local_closure(my_design_cb, /* name */ 0xB83E0800, // 003F GETNGBL R15 K4 0x883C1F16, // 0040 GETMBR R15 R15 K22 0x7C300600, // 0041 CALL R12 3 - 0x60340000, // 0042 GETGBL R13 G0 + 0x60340010, // 0042 GETGBL R13 G16 0x403A3102, // 0043 CONNECT R14 K24 K2 0x7C340200, // 0044 CALL R13 1 0xA802002C, // 0045 EXBLK 0 #0073 @@ -268,7 +268,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[28]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c index c46b09034..17538a88e 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c @@ -41,7 +41,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[52]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c index 300b019d1..b820e2b1f 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c @@ -84,7 +84,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[15]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 @@ -126,7 +126,7 @@ be_local_closure(del, /* name */ (be_nested_const_str("del", -816214454, 3)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[10]) { /* code */ - 0x60040014, // 0000 GETGBL R1 G20 + 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 0x8C040300, // 0003 GETMET R1 R1 K0 diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c index a96a71e66..d65bb3ec5 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c @@ -40,7 +40,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[49]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c index 6e4540b2b..57e3e0cf2 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c @@ -84,7 +84,7 @@ be_local_closure(init, /* name */ (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[15]) { /* code */ - 0x600C0014, // 0000 GETGBL R3 G20 + 0x600C0003, // 0000 GETGBL R3 G3 0x5C100000, // 0001 MOVE R4 R0 0x7C0C0200, // 0002 CALL R3 1 0x8C0C0700, // 0003 GETMET R3 R3 K0 @@ -126,7 +126,7 @@ be_local_closure(del, /* name */ (be_nested_const_str("del", -816214454, 3)), (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[10]) { /* code */ - 0x60040014, // 0000 GETGBL R1 G20 + 0x60040003, // 0000 GETGBL R1 G3 0x5C080000, // 0001 MOVE R2 R0 0x7C040200, // 0002 CALL R1 1 0x8C040300, // 0003 GETMET R1 R1 K0 diff --git a/lib/libesp32/Berry/default/be_md5_lib.c b/lib/libesp32/Berry/default/be_md5_lib.c index 3f55dd6a1..2c8dfd77b 100644 --- a/lib/libesp32/Berry/default/be_md5_lib.c +++ b/lib/libesp32/Berry/default/be_md5_lib.c @@ -11,27 +11,12 @@ extern int m_md5_init(bvm *vm); extern int m_md5_update(bvm *vm); extern int m_md5_finish(bvm *vm); -#if BE_USE_PRECOMPILED_OBJECT #include "../generate/be_fixed_be_class_md5.h" -#endif void be_load_md5_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - - { "init", m_md5_init }, - { "update", m_md5_update }, - { "finish", m_md5_finish }, - - { NULL, NULL } - }; - be_regclass(vm, "MD5", members); -#else be_pushntvclass(vm, &be_class_md5); be_setglobal(vm, "MD5"); be_pop(vm, 1); -#endif } /* @const_object_info_begin diff --git a/lib/libesp32/Berry/default/be_path_tasmota_lib.c b/lib/libesp32/Berry/default/be_path_tasmota_lib.c index 22e0f7baa..810a8e712 100644 --- a/lib/libesp32/Berry/default/be_path_tasmota_lib.c +++ b/lib/libesp32/Berry/default/be_path_tasmota_lib.c @@ -27,19 +27,9 @@ static int m_path_exists(bvm *vm) be_return(vm); } -#if !BE_USE_PRECOMPILED_OBJECT -be_native_module_attr_table(path) { - be_native_module_function("exists", m_path_exists), -}; - -static be_define_native_module(path, NULL); - -#else /* @const_object_info_begin module path (scope: global, file: tasmota_path) { exists, func(m_path_exists) } @const_object_info_end */ #include "../generate/be_fixed_tasmota_path.h" - -#endif diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 662a4b72d..ad6bfaa90 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -45,459 +45,152 @@ extern int l_i2cenabled(bvm *vm); /******************************************************************** - // add `chars_in_string(s:string,c:string) -> int`` - // looks for any char in c, and return the position of the first char - // or -1 if not found - // inv is optional and inverses the behavior, i.e. look for chars not in the list - "def chars_in_string(s,c,inv) " - "var inverted = inv ? true : false " - "for i:0..size(s)-1 " - "var found = false " - "for j:0..size(c)-1 " - "if s[i] == c[j] found = true end " - "end " - "if inverted != found return i end " - "end " - "return -1 " - "end " +** Solidified function: add_driver ********************************************************************/ -/******************************************************************** -** Solidified function: chars_in_string -********************************************************************/ - -be_define_local_const_str(chars_in_string_str_name, "chars_in_string", -1146182164, 15); -be_define_local_const_str(chars_in_string_str_source, "string", 398550328, 6); -be_define_local_const_str(chars_in_string_str_2, "stop_iteration", -121173395, 14); - -static const bvalue chars_in_string_ktab[3] = { - { { .i=0 }, BE_INT}, - { { .i=1 }, BE_INT}, - { { .s=be_local_const_str(chars_in_string_str_2) }, BE_STRING}, -}; - -static const uint32_t chars_in_string_code[44] = { - 0x780E0001, // 0000 JMPF R3 #0003 - 0x50100200, // 0001 LDBOOL R4 1 0 - 0x70020000, // 0002 JMP #0004 - 0x50100000, // 0003 LDBOOL R4 0 0 - 0x60140000, // 0004 GETGBL R5 G0 - 0x60180012, // 0005 GETGBL R6 G18 - 0x5C1C0200, // 0006 MOVE R7 R1 - 0x7C180200, // 0007 CALL R6 1 - 0x4180D01, // 0008 SUB R6 R6 R257 - 0x401A0006, // 0009 CONNECT R6 R256 R6 - 0x7C140200, // 000A CALL R5 1 - 0xA802001A, // 000B EXBLK 0 #0027 - 0x5C180A00, // 000C MOVE R6 R5 - 0x7C180000, // 000D CALL R6 0 - 0x501C0000, // 000E LDBOOL R7 0 0 - 0x60200000, // 000F GETGBL R8 G0 - 0x60240012, // 0010 GETGBL R9 G18 - 0x5C280400, // 0011 MOVE R10 R2 - 0x7C240200, // 0012 CALL R9 1 - 0x4241301, // 0013 SUB R9 R9 R257 - 0x40260009, // 0014 CONNECT R9 R256 R9 - 0x7C200200, // 0015 CALL R8 1 - 0xA8020007, // 0016 EXBLK 0 #001F - 0x5C241000, // 0017 MOVE R9 R8 - 0x7C240000, // 0018 CALL R9 0 - 0x94280206, // 0019 GETIDX R10 R1 R6 - 0x942C0409, // 001A GETIDX R11 R2 R9 - 0x1C28140B, // 001B EQ R10 R10 R11 - 0x782A0000, // 001C JMPF R10 #001E - 0x501C0200, // 001D LDBOOL R7 1 0 - 0x7001FFF7, // 001E JMP #0017 - 0x58200002, // 001F LDCONST R8 K2 - 0xAC200200, // 0020 CATCH R8 1 0 - 0xB0080000, // 0021 RAISE 2 R0 R0 - 0x20200807, // 0022 NE R8 R4 R7 - 0x78220001, // 0023 JMPF R8 #0026 - 0xA8040001, // 0024 EXBLK 1 1 - 0x80040C00, // 0025 RET 1 R6 - 0x7001FFE4, // 0026 JMP #000C - 0x58140002, // 0027 LDCONST R5 K2 - 0xAC140200, // 0028 CATCH R5 1 0 - 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x5415FFFE, // 002A LDINT R5 -1 - 0x80040A00, // 002B RET 1 R5 -}; - -static const bproto chars_in_string_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked 0x08 - 12, // nstack - 0, // nupvals - 4, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &chars_in_string_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &chars_in_string_code, // code - be_local_const_str(chars_in_string_str_name), // name - 44, // codesize - 3, // nconst - 0, // nproto - be_local_const_str(chars_in_string_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -const bclosure chars_in_string_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &chars_in_string_proto, // proto - { NULL } // upvals -}; - +be_local_closure(add_driver, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("_drivers", -1034638311, 8), + /* K1 */ be_nested_string("push", -2022703139, 4), + }), + (be_nested_const_str("add_driver", 1654458371, 10)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[12]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0004, // 0001 JMPF R2 #0007 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x70020003, // 0006 JMP #000B + 0x60080012, // 0007 GETGBL R2 G18 + 0x7C080000, // 0008 CALL R2 0 + 0x400C0401, // 0009 CONNECT R3 R2 R1 + 0x90020002, // 000A SETMBR R0 K0 R2 + 0x80000000, // 000B RET 0 + }) + ) +); /*******************************************************************/ /******************************************************************** -// find a key in map, case insensitive, return actual key or nil if not found -def find_key_i(m,keyi) - import string - var keyu = string.toupper(keyi) - if classof(m) == map - for k:m.keys() - if string.toupper(k)==keyu || keyi=='?' - return k - end - end - end -end +** Solidified function: gen_cb ********************************************************************/ -/******************************************************************** -** Solidified function: find_key_i -********************************************************************/ - -be_define_local_const_str(find_key_i_str_name, "find_key_i", 850136726, 10); -be_define_local_const_str(find_key_i_str_source, "string", 398550328, 6); -be_define_local_const_str(find_key_i_str_0, "string", 398550328, 6); -be_define_local_const_str(find_key_i_str_1, "toupper", -602983720, 7); -be_define_local_const_str(find_key_i_str_2, "keys", -112588595, 4); -be_define_local_const_str(find_key_i_str_3, "?", 973910158, 1); -be_define_local_const_str(find_key_i_str_4, "stop_iteration", -121173395, 14); - -static const bvalue find_key_i_ktab[5] = { - { { .s=be_local_const_str(find_key_i_str_0) }, BE_STRING}, - { { .s=be_local_const_str(find_key_i_str_1) }, BE_STRING}, - { { .s=be_local_const_str(find_key_i_str_2) }, BE_STRING}, - { { .s=be_local_const_str(find_key_i_str_3) }, BE_STRING}, - { { .s=be_local_const_str(find_key_i_str_4) }, BE_STRING}, -}; - -static const uint32_t find_key_i_code[31] = { - 0xA40E0000, // 0000 IMPORT R3 R256 - 0x8C100701, // 0001 GETMET R4 R3 R257 - 0x5C180400, // 0002 MOVE R6 R2 - 0x7C100400, // 0003 CALL R4 2 - 0x60140004, // 0004 GETGBL R5 G4 - 0x5C180200, // 0005 MOVE R6 R1 - 0x7C140200, // 0006 CALL R5 1 - 0x6018000B, // 0007 GETGBL R6 G11 - 0x1C140A06, // 0008 EQ R5 R5 R6 - 0x78160013, // 0009 JMPF R5 #001E - 0x60140000, // 000A GETGBL R5 G0 - 0x8C180302, // 000B GETMET R6 R1 R258 - 0x7C180200, // 000C CALL R6 1 - 0x7C140200, // 000D CALL R5 1 - 0xA802000B, // 000E EXBLK 0 #001B - 0x5C180A00, // 000F MOVE R6 R5 - 0x7C180000, // 0010 CALL R6 0 - 0x8C1C0701, // 0011 GETMET R7 R3 R257 - 0x5C240C00, // 0012 MOVE R9 R6 - 0x7C1C0400, // 0013 CALL R7 2 - 0x1C1C0E04, // 0014 EQ R7 R7 R4 - 0x741E0001, // 0015 JMPT R7 #0018 - 0x1C1C0503, // 0016 EQ R7 R2 R259 - 0x781E0001, // 0017 JMPF R7 #001A - 0xA8040001, // 0018 EXBLK 1 1 - 0x80040C00, // 0019 RET 1 R6 - 0x7001FFF3, // 001A JMP #000F - 0x58140004, // 001B LDCONST R5 K4 - 0xAC140200, // 001C CATCH R5 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x80000000, // 001E RET 0 R0 -}; - -static const bproto find_key_i_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 10, // nstack - 0, // nupvals - 3, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &find_key_i_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &find_key_i_code, // code - be_local_const_str(find_key_i_str_name), // name - 31, // codesize - 5, // nconst - 0, // nproto - be_local_const_str(find_key_i_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -const bclosure find_key_i_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &find_key_i_proto, // proto - { NULL } // upvals -}; - -/*******************************************************************/ - - - -/******************************************************************** - // # split the item when there is an operator, returns a list of (left,op,right) - // # ex: "Dimmer>50" -> ["Dimmer",tasmota_gt,"50"] - "def find_op(item) " - "import string " - "var op_chars = '=<>!' " - "var pos = self.chars_in_string(item, op_chars) " - "if pos >= 0 " - "var op_split = string.split(item,pos) " - "var op_left = op_split[0] " - "var op_rest = op_split[1] " - "pos = self.chars_in_string(op_rest, op_chars, true) " - "if pos >= 0 " - "var op_split2 = string.split(op_rest,pos) " - "var op_middle = op_split2[0] " - "var op_right = op_split2[1] " - "return [op_left,op_middle,op_right] " - "end " - "end " - "return [item, nil, nil] " - "end " -********************************************************************/ -/******************************************************************** -** Solidified function: find_op -********************************************************************/ - -be_define_local_const_str(find_op_str_name, "find_op", -528253920, 7); -be_define_local_const_str(find_op_str_source, "string", 398550328, 6); -be_define_local_const_str(find_op_str_0, "string", 398550328, 6); -be_define_local_const_str(find_op_str_1, "=<>!", -1630497019, 4); -be_define_local_const_str(find_op_str_2, "chars_in_string", -1146182164, 15); -be_define_local_const_str(find_op_str_4, "split", -2017972765, 5); - -static const bvalue find_op_ktab[6] = { - { { .s=be_local_const_str(find_op_str_0) }, BE_STRING}, - { { .s=be_local_const_str(find_op_str_1) }, BE_STRING}, - { { .s=be_local_const_str(find_op_str_2) }, BE_STRING}, - { { .i=0 }, BE_INT}, - { { .s=be_local_const_str(find_op_str_4) }, BE_STRING}, - { { .i=1 }, BE_INT}, -}; - -static const uint32_t find_op_code[42] = { - 0xA40A0000, // 0000 IMPORT R2 R256 - 0x580C0001, // 0001 LDCONST R3 K1 - 0x8C100102, // 0002 GETMET R4 R0 R258 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0600, // 0004 MOVE R7 R3 - 0x7C100600, // 0005 CALL R4 3 - 0x28140903, // 0006 GE R5 R4 R259 - 0x78160019, // 0007 JMPF R5 #0022 - 0x8C140504, // 0008 GETMET R5 R2 R260 - 0x5C1C0200, // 0009 MOVE R7 R1 - 0x5C200800, // 000A MOVE R8 R4 - 0x7C140600, // 000B CALL R5 3 - 0x94180B03, // 000C GETIDX R6 R5 R259 - 0x941C0B05, // 000D GETIDX R7 R5 R261 - 0x8C200102, // 000E GETMET R8 R0 R258 - 0x5C280E00, // 000F MOVE R10 R7 - 0x5C2C0600, // 0010 MOVE R11 R3 - 0x50300200, // 0011 LDBOOL R12 1 0 - 0x7C200800, // 0012 CALL R8 4 - 0x5C101000, // 0013 MOVE R4 R8 - 0x28200903, // 0014 GE R8 R4 R259 - 0x7822000B, // 0015 JMPF R8 #0022 - 0x8C200504, // 0016 GETMET R8 R2 R260 - 0x5C280E00, // 0017 MOVE R10 R7 - 0x5C2C0800, // 0018 MOVE R11 R4 - 0x7C200600, // 0019 CALL R8 3 - 0x94241103, // 001A GETIDX R9 R8 R259 - 0x94281105, // 001B GETIDX R10 R8 R261 - 0x602C000A, // 001C GETGBL R11 G10 - 0x7C2C0000, // 001D CALL R11 0 - 0x40301606, // 001E CONNECT R12 R11 R6 - 0x40301609, // 001F CONNECT R12 R11 R9 - 0x4030160A, // 0020 CONNECT R12 R11 R10 - 0x80041600, // 0021 RET 1 R11 - 0x6014000A, // 0022 GETGBL R5 G10 - 0x7C140000, // 0023 CALL R5 0 - 0x40180A01, // 0024 CONNECT R6 R5 R1 - 0x4C180000, // 0025 LDNIL 6 - 0x40180A06, // 0026 CONNECT R6 R5 R6 - 0x4C180000, // 0027 LDNIL 6 - 0x40180A06, // 0028 CONNECT R6 R5 R6 - 0x80040A00, // 0029 RET 1 R5 -}; - -static const bproto find_op_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 13, // nstack - 0, // nupvals - 2, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &find_op_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &find_op_code, // code - be_local_const_str(find_op_str_name), // name - 42, // codesize - 6, // nconst - 0, // nproto - be_local_const_str(find_op_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -const bclosure find_op_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &find_op_proto, // proto - { NULL } // upvals -}; - +be_local_closure(gen_cb, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_string("_cb", -251666929, 3), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("find", -1108310694, 4), + /* K3 */ be_nested_string("_get_cb", 1448849122, 7), + /* K4 */ be_nested_string("stop_iteration", -121173395, 14), + /* K5 */ be_nested_string("internal_error", -1775809127, 14), + /* K6 */ be_nested_string("No callback available", 633786138, 21), + }), + (be_nested_const_str("gen_cb", -1049739745, 6)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[34]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x1C080403, // 0002 EQ R2 R2 R3 + 0x780A0002, // 0003 JMPF R2 #0007 + 0x60080013, // 0004 GETGBL R2 G19 + 0x7C080000, // 0005 CALL R2 0 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x60080010, // 0007 GETGBL R2 G16 + 0x540E0012, // 0008 LDINT R3 19 + 0x400E0203, // 0009 CONNECT R3 K1 R3 + 0x7C080200, // 000A CALL R2 1 + 0xA8020010, // 000B EXBLK 0 #001D + 0x5C0C0400, // 000C MOVE R3 R2 + 0x7C0C0000, // 000D CALL R3 0 + 0x88100100, // 000E GETMBR R4 R0 K0 + 0x8C100902, // 000F GETMET R4 R4 K2 + 0x5C180600, // 0010 MOVE R6 R3 + 0x7C100400, // 0011 CALL R4 2 + 0x4C140000, // 0012 LDNIL R5 + 0x1C100805, // 0013 EQ R4 R4 R5 + 0x78120006, // 0014 JMPF R4 #001C + 0x88100100, // 0015 GETMBR R4 R0 K0 + 0x98100601, // 0016 SETIDX R4 R3 R1 + 0x8C100103, // 0017 GETMET R4 R0 K3 + 0x5C180600, // 0018 MOVE R6 R3 + 0x7C100400, // 0019 CALL R4 2 + 0xA8040001, // 001A EXBLK 1 1 + 0x80040800, // 001B RET 1 R4 + 0x7001FFEE, // 001C JMP #000C + 0x58080004, // 001D LDCONST R2 K4 + 0xAC080200, // 001E CATCH R2 1 0 + 0xB0080000, // 001F RAISE 2 R0 R0 + 0xB0060B06, // 0020 RAISE 1 K5 K6 + 0x80000000, // 0021 RET 0 + }) + ) +); /*******************************************************************/ /******************************************************************** - // Rules - "def add_rule(pat,f) " - "if !self._rules " - "self._rules={} " - "end " - "if type(f) == 'function' " - "self._rules[pat] = f " - "else " - "raise 'value_error', 'the second argument is not a function' " - "end " - "end " +** Solidified function: set_light ********************************************************************/ - -/******************************************************************** -** Solidified function: add_rule -********************************************************************/ - -be_define_local_const_str(add_rule_str_name, "add_rule", 596540743, 8); -be_define_local_const_str(add_rule_str_source, "string", 398550328, 6); -be_define_local_const_str(add_rule_str_0, "_rules", -28750191, 6); -be_define_local_const_str(add_rule_str_1, "function", -1630125495, 8); -be_define_local_const_str(add_rule_str_2, "value_error", 773297791, 11); -be_define_local_const_str(add_rule_str_3, "the second argument is not a function", -340392827, 37); - -static const bvalue add_rule_ktab[4] = { - { { .s=be_local_const_str(add_rule_str_0) }, BE_STRING}, - { { .s=be_local_const_str(add_rule_str_1) }, BE_STRING}, - { { .s=be_local_const_str(add_rule_str_2) }, BE_STRING}, - { { .s=be_local_const_str(add_rule_str_3) }, BE_STRING}, -}; - -static const uint32_t add_rule_code[15] = { - 0x880C0100, // 0000 GETMBR R3 R0 R256 - 0x740E0002, // 0001 JMPT R3 #0005 - 0x600C000B, // 0002 GETGBL R3 G11 - 0x7C0C0000, // 0003 CALL R3 0 - 0x90020003, // 0004 SETMBR R0 R256 R3 - 0x600C0015, // 0005 GETGBL R3 G21 - 0x5C100400, // 0006 MOVE R4 R2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x1C0C0701, // 0008 EQ R3 R3 R257 - 0x780E0002, // 0009 JMPF R3 #000D - 0x880C0100, // 000A GETMBR R3 R0 R256 - 0x980C0202, // 000B SETIDX R3 R1 R2 - 0x70020000, // 000C JMP #000E - 0xB0060503, // 000D RAISE 1 R258 R259 - 0x80000000, // 000E RET 0 R0 -}; - -static const bproto add_rule_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 5, // nstack - 0, // nupvals - 3, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &add_rule_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &add_rule_code, // code - be_local_const_str(add_rule_str_name), // name - 15, // codesize - 4, // nconst - 0, // nproto - be_local_const_str(add_rule_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure add_rule_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &add_rule_proto, // proto - { NULL } // upvals -}; - +be_local_closure(set_light, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("tasmota.set_light() is deprecated, use light.set()", 2124937871, 50), + /* K1 */ be_nested_string("light", -493019601, 5), + /* K2 */ be_nested_string("set", -970520829, 3), + }), + (be_nested_const_str("set_light", -1118891144, 9)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[18]) { /* code */ + 0x600C0001, // 0000 GETGBL R3 G1 + 0x58100000, // 0001 LDCONST R4 K0 + 0x7C0C0200, // 0002 CALL R3 1 + 0xA40E0200, // 0003 IMPORT R3 K1 + 0x4C100000, // 0004 LDNIL R4 + 0x20100404, // 0005 NE R4 R2 R4 + 0x78120005, // 0006 JMPF R4 #000D + 0x8C100702, // 0007 GETMET R4 R3 K2 + 0x5C180200, // 0008 MOVE R6 R1 + 0x5C1C0400, // 0009 MOVE R7 R2 + 0x7C100600, // 000A CALL R4 3 + 0x80040800, // 000B RET 1 R4 + 0x70020003, // 000C JMP #0011 + 0x8C100702, // 000D GETMET R4 R3 K2 + 0x5C180200, // 000E MOVE R6 R1 + 0x7C100400, // 000F CALL R4 2 + 0x80040800, // 0010 RET 1 R4 + 0x80000000, // 0011 RET 0 + }) + ) +); /*******************************************************************/ -/******************************************************************** - "def remove_rule(pat) " - "if self._rules " - "self._rules.remove(pat) " - "end " - "end " -********************************************************************/ /******************************************************************** ** Solidified function: remove_rule @@ -512,20 +205,20 @@ be_local_closure(remove_rule, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* upvals */ - { { .s=be_nested_const_str("_rules", -28750191, 6) }, BE_STRING}, - { { .s=be_nested_const_str("remove", -611183107, 6) }, BE_STRING}, + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("_rules", -28750191, 6), + /* K1 */ be_nested_string("remove", -611183107, 6), }), (be_nested_const_str("remove_rule", -838755968, 11)), - (be_nested_const_str("string", 398550328, 6)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x780A0003, // 0001 JMPF R2 #0006 - 0x88080100, // 0002 GETMBR R2 R0 R256 - 0x8C080501, // 0003 GETMET R2 R2 R257 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x80000000, // 0006 RET 0 R0 + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0003, // 0001 JMPF R2 #0006 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x80000000, // 0006 RET 0 }) ) ); @@ -533,400 +226,232 @@ be_local_closure(remove_rule, /* name */ /******************************************************************** - // Rules trigger if match. return true if match, false if not - "def try_rule(event, rule, f) " - "import string " - "var rl_list = self.find_op(rule) " - "var sub_event = event " - "var rl = string.split(rl_list[0],'#') " - "for it:rl " - "found=self.find_key_i(sub_event,it) " - "if found == nil return false end " - "sub_event = sub_event[found] " - "end " - "var op=rl_list[1]" - "var op2=rl_list[2]" - "if op " - "if op=='==' " - "if str(sub_event) != str(op2) return false end " - "elif op=='!==' " - "if str(sub_event) == str(op2) return false end " - "elif op=='=' " - "if real(sub_event) != real(op2) return false end " - "elif op=='!=' " - "if real(sub_event) == real(op2) return false end " - "elif op=='>' " - "if real(sub_event) <= real(op2) return false end " - "elif op=='>=' " - "if real(sub_event) < real(op2) return false end " - "elif op=='<' " - "if real(sub_event) >= real(op2) return false end " - "elif op=='<=' " - "if real(sub_event) > real(op2) return false end " - "end " - "end " - "f(sub_event, rl_list[0], event) " - "return true " - "end " +** Solidified function: add_cmd ********************************************************************/ -/******************************************************************** -** Solidified function: try_rule -********************************************************************/ - -be_define_local_const_str(try_rule_str_name, "try_rule", 1986449405, 8); -be_define_local_const_str(try_rule_str_source, "string", 398550328, 6); -be_define_local_const_str(try_rule_str_0, "string", 398550328, 6); -be_define_local_const_str(try_rule_str_1, "find_op", -528253920, 7); -be_define_local_const_str(try_rule_str_2, "split", -2017972765, 5); -be_define_local_const_str(try_rule_str_4, "#", 638357778, 1); -be_define_local_const_str(try_rule_str_5, "find_key_i", 850136726, 10); -be_define_local_const_str(try_rule_str_6, "stop_iteration", -121173395, 14); -be_define_local_const_str(try_rule_str_9, "==", -1863000881, 2); -be_define_local_const_str(try_rule_str_10, "!==", 559817114, 3); -be_define_local_const_str(try_rule_str_11, "=", 940354920, 1); -be_define_local_const_str(try_rule_str_12, "!=", -1866252285, 2); -be_define_local_const_str(try_rule_str_13, ">", 990687777, 1); -be_define_local_const_str(try_rule_str_14, ">=", 284975636, 2); -be_define_local_const_str(try_rule_str_15, "<", 957132539, 1); -be_define_local_const_str(try_rule_str_16, "<=", -1795743310, 2); - -static const bvalue try_rule_ktab[17] = { - { { .s=be_local_const_str(try_rule_str_0) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_1) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_2) }, BE_STRING}, - { { .i=0 }, BE_INT}, - { { .s=be_local_const_str(try_rule_str_4) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_5) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_6) }, BE_STRING}, - { { .i=1 }, BE_INT}, - { { .i=2 }, BE_INT}, - { { .s=be_local_const_str(try_rule_str_9) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_10) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_11) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_12) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_13) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_14) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_15) }, BE_STRING}, - { { .s=be_local_const_str(try_rule_str_16) }, BE_STRING}, -}; - -static const uint32_t try_rule_code[143] = { - 0xA4120000, // 0000 IMPORT R4 R256 - 0x8C140101, // 0001 GETMET R5 R0 R257 - 0x5C1C0400, // 0002 MOVE R7 R2 - 0x7C140400, // 0003 CALL R5 2 - 0x5C180200, // 0004 MOVE R6 R1 - 0x8C1C0902, // 0005 GETMET R7 R4 R258 - 0x94240B03, // 0006 GETIDX R9 R5 R259 - 0x58280004, // 0007 LDCONST R10 K4 - 0x7C1C0600, // 0008 CALL R7 3 - 0x60200000, // 0009 GETGBL R8 G0 - 0x5C240E00, // 000A MOVE R9 R7 - 0x7C200200, // 000B CALL R8 1 - 0xA802000D, // 000C EXBLK 0 #001B - 0x5C241000, // 000D MOVE R9 R8 - 0x7C240000, // 000E CALL R9 0 - 0x8C280105, // 000F GETMET R10 R0 R261 - 0x5C300C00, // 0010 MOVE R12 R6 - 0x5C341200, // 0011 MOVE R13 R9 - 0x7C280600, // 0012 CALL R10 3 - 0x4C2C0000, // 0013 LDNIL 11 - 0x1C2C140B, // 0014 EQ R11 R10 R11 - 0x782E0002, // 0015 JMPF R11 #0019 - 0x502C0000, // 0016 LDBOOL R11 0 0 - 0xA8040001, // 0017 EXBLK 1 1 - 0x80041600, // 0018 RET 1 R11 - 0x94180C0A, // 0019 GETIDX R6 R6 R10 - 0x7001FFF1, // 001A JMP #000D - 0x58200006, // 001B LDCONST R8 K6 - 0xAC200200, // 001C CATCH R8 1 0 - 0xB0080000, // 001D RAISE 2 R0 R0 - 0x94200B07, // 001E GETIDX R8 R5 R263 - 0x94240B08, // 001F GETIDX R9 R5 R264 - 0x78220066, // 0020 JMPF R8 #0088 - 0x1C281109, // 0021 EQ R10 R8 R265 - 0x782A000A, // 0022 JMPF R10 #002E - 0x60280013, // 0023 GETGBL R10 G19 - 0x5C2C0C00, // 0024 MOVE R11 R6 - 0x7C280200, // 0025 CALL R10 1 - 0x602C0013, // 0026 GETGBL R11 G19 - 0x5C301200, // 0027 MOVE R12 R9 - 0x7C2C0200, // 0028 CALL R11 1 - 0x2028140B, // 0029 NE R10 R10 R11 - 0x782A0001, // 002A JMPF R10 #002D - 0x50280000, // 002B LDBOOL R10 0 0 - 0x80041400, // 002C RET 1 R10 - 0x70020059, // 002D JMP #0088 - 0x1C28110A, // 002E EQ R10 R8 R266 - 0x782A000A, // 002F JMPF R10 #003B - 0x60280013, // 0030 GETGBL R10 G19 - 0x5C2C0C00, // 0031 MOVE R11 R6 - 0x7C280200, // 0032 CALL R10 1 - 0x602C0013, // 0033 GETGBL R11 G19 - 0x5C301200, // 0034 MOVE R12 R9 - 0x7C2C0200, // 0035 CALL R11 1 - 0x1C28140B, // 0036 EQ R10 R10 R11 - 0x782A0001, // 0037 JMPF R10 #003A - 0x50280000, // 0038 LDBOOL R10 0 0 - 0x80041400, // 0039 RET 1 R10 - 0x7002004C, // 003A JMP #0088 - 0x1C28110B, // 003B EQ R10 R8 R267 - 0x782A000A, // 003C JMPF R10 #0048 - 0x60280011, // 003D GETGBL R10 G17 - 0x5C2C0C00, // 003E MOVE R11 R6 - 0x7C280200, // 003F CALL R10 1 - 0x602C0011, // 0040 GETGBL R11 G17 - 0x5C301200, // 0041 MOVE R12 R9 - 0x7C2C0200, // 0042 CALL R11 1 - 0x2028140B, // 0043 NE R10 R10 R11 - 0x782A0001, // 0044 JMPF R10 #0047 - 0x50280000, // 0045 LDBOOL R10 0 0 - 0x80041400, // 0046 RET 1 R10 - 0x7002003F, // 0047 JMP #0088 - 0x1C28110C, // 0048 EQ R10 R8 R268 - 0x782A000A, // 0049 JMPF R10 #0055 - 0x60280011, // 004A GETGBL R10 G17 - 0x5C2C0C00, // 004B MOVE R11 R6 - 0x7C280200, // 004C CALL R10 1 - 0x602C0011, // 004D GETGBL R11 G17 - 0x5C301200, // 004E MOVE R12 R9 - 0x7C2C0200, // 004F CALL R11 1 - 0x1C28140B, // 0050 EQ R10 R10 R11 - 0x782A0001, // 0051 JMPF R10 #0054 - 0x50280000, // 0052 LDBOOL R10 0 0 - 0x80041400, // 0053 RET 1 R10 - 0x70020032, // 0054 JMP #0088 - 0x1C28110D, // 0055 EQ R10 R8 R269 - 0x782A000A, // 0056 JMPF R10 #0062 - 0x60280011, // 0057 GETGBL R10 G17 - 0x5C2C0C00, // 0058 MOVE R11 R6 - 0x7C280200, // 0059 CALL R10 1 - 0x602C0011, // 005A GETGBL R11 G17 - 0x5C301200, // 005B MOVE R12 R9 - 0x7C2C0200, // 005C CALL R11 1 - 0x1828140B, // 005D LE R10 R10 R11 - 0x782A0001, // 005E JMPF R10 #0061 - 0x50280000, // 005F LDBOOL R10 0 0 - 0x80041400, // 0060 RET 1 R10 - 0x70020025, // 0061 JMP #0088 - 0x1C28110E, // 0062 EQ R10 R8 R270 - 0x782A000A, // 0063 JMPF R10 #006F - 0x60280011, // 0064 GETGBL R10 G17 - 0x5C2C0C00, // 0065 MOVE R11 R6 - 0x7C280200, // 0066 CALL R10 1 - 0x602C0011, // 0067 GETGBL R11 G17 - 0x5C301200, // 0068 MOVE R12 R9 - 0x7C2C0200, // 0069 CALL R11 1 - 0x1428140B, // 006A LT R10 R10 R11 - 0x782A0001, // 006B JMPF R10 #006E - 0x50280000, // 006C LDBOOL R10 0 0 - 0x80041400, // 006D RET 1 R10 - 0x70020018, // 006E JMP #0088 - 0x1C28110F, // 006F EQ R10 R8 R271 - 0x782A000A, // 0070 JMPF R10 #007C - 0x60280011, // 0071 GETGBL R10 G17 - 0x5C2C0C00, // 0072 MOVE R11 R6 - 0x7C280200, // 0073 CALL R10 1 - 0x602C0011, // 0074 GETGBL R11 G17 - 0x5C301200, // 0075 MOVE R12 R9 - 0x7C2C0200, // 0076 CALL R11 1 - 0x2828140B, // 0077 GE R10 R10 R11 - 0x782A0001, // 0078 JMPF R10 #007B - 0x50280000, // 0079 LDBOOL R10 0 0 - 0x80041400, // 007A RET 1 R10 - 0x7002000B, // 007B JMP #0088 - 0x1C281110, // 007C EQ R10 R8 R272 - 0x782A0009, // 007D JMPF R10 #0088 - 0x60280011, // 007E GETGBL R10 G17 - 0x5C2C0C00, // 007F MOVE R11 R6 - 0x7C280200, // 0080 CALL R10 1 - 0x602C0011, // 0081 GETGBL R11 G17 - 0x5C301200, // 0082 MOVE R12 R9 - 0x7C2C0200, // 0083 CALL R11 1 - 0x2428140B, // 0084 GT R10 R10 R11 - 0x782A0001, // 0085 JMPF R10 #0088 - 0x50280000, // 0086 LDBOOL R10 0 0 - 0x80041400, // 0087 RET 1 R10 - 0x5C280600, // 0088 MOVE R10 R3 - 0x5C2C0C00, // 0089 MOVE R11 R6 - 0x94300B03, // 008A GETIDX R12 R5 R259 - 0x5C340200, // 008B MOVE R13 R1 - 0x7C280600, // 008C CALL R10 3 - 0x50280200, // 008D LDBOOL R10 1 0 - 0x80041400, // 008E RET 1 R10 -}; - -static const bproto try_rule_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 14, // nstack - 0, // nupvals - 4, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &try_rule_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &try_rule_code, // code - be_local_const_str(try_rule_str_name), // name - 143, // codesize - 17, // nconst - 0, // nproto - be_local_const_str(try_rule_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure try_rule_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &try_rule_proto, // proto - { NULL } // upvals -}; - +be_local_closure(add_cmd, /* name */ + be_nested_proto( + 5, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("_ccmd", -2131545883, 5), + /* K1 */ be_nested_string("function", -1630125495, 8), + /* K2 */ be_nested_string("value_error", 773297791, 11), + /* K3 */ be_nested_string("the second argument is not a function", -340392827, 37), + }), + (be_nested_const_str("add_cmd", -933336417, 7)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[15]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x740E0002, // 0001 JMPT R3 #0005 + 0x600C0013, // 0002 GETGBL R3 G19 + 0x7C0C0000, // 0003 CALL R3 0 + 0x90020003, // 0004 SETMBR R0 K0 R3 + 0x600C0004, // 0005 GETGBL R3 G4 + 0x5C100400, // 0006 MOVE R4 R2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x1C0C0701, // 0008 EQ R3 R3 K1 + 0x780E0002, // 0009 JMPF R3 #000D + 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x980C0202, // 000B SETIDX R3 R1 R2 + 0x70020000, // 000C JMP #000E + 0xB0060503, // 000D RAISE 1 K2 K3 + 0x80000000, // 000E RET 0 + }) + ) +); /*******************************************************************/ /******************************************************************** - // Run rules, i.e. check each individual rule - // Returns true if at least one rule matched, false if none - "def exec_rules(ev_json) " - "if self._rules " - "import json " - "var ev = json.load(ev_json) " - "var ret = false " - "if ev == nil " - "print('BRY: ERROR, bad json: '+ev_json, 3) " - "else " - "for r: self._rules.keys() " - "ret = self.try_rule(ev,r,self._rules[r]) || ret " - "end " - "end " - "return ret " - "end " - "return false " - "end " - +** Solidified function: wire_scan ********************************************************************/ +be_local_closure(wire_scan, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("i2c_enabled", 218388101, 11), + /* K1 */ be_nested_string("wire1", -1082245877, 5), + /* K2 */ be_nested_string("detect", 8884370, 6), + /* K3 */ be_nested_string("wire2", -1065468258, 5), + }), + (be_nested_const_str("wire_scan", -1623691416, 9)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[25]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x200C0403, // 0001 NE R3 R2 R3 + 0x780E0005, // 0002 JMPF R3 #0009 + 0x8C0C0100, // 0003 GETMET R3 R0 K0 + 0x5C140400, // 0004 MOVE R5 R2 + 0x7C0C0400, // 0005 CALL R3 2 + 0x740E0001, // 0006 JMPT R3 #0009 + 0x4C0C0000, // 0007 LDNIL R3 + 0x80040600, // 0008 RET 1 R3 + 0x880C0101, // 0009 GETMBR R3 R0 K1 + 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x5C140200, // 000B MOVE R5 R1 + 0x7C0C0400, // 000C CALL R3 2 + 0x780E0001, // 000D JMPF R3 #0010 + 0x880C0101, // 000E GETMBR R3 R0 K1 + 0x80040600, // 000F RET 1 R3 + 0x880C0103, // 0010 GETMBR R3 R0 K3 + 0x8C0C0702, // 0011 GETMET R3 R3 K2 + 0x5C140200, // 0012 MOVE R5 R1 + 0x7C0C0400, // 0013 CALL R3 2 + 0x780E0001, // 0014 JMPF R3 #0017 + 0x880C0103, // 0015 GETMBR R3 R0 K3 + 0x80040600, // 0016 RET 1 R3 + 0x4C0C0000, // 0017 LDNIL R3 + 0x80040600, // 0018 RET 1 R3 + }) + ) +); +/*******************************************************************/ + /******************************************************************** -** Solidified function: exec_rules +** Solidified function: find_key_i ********************************************************************/ - -be_define_local_const_str(exec_rules_str_name, "exec_rules", 1445221092, 10); -be_define_local_const_str(exec_rules_str_source, "string", 398550328, 6); -be_define_local_const_str(exec_rules_str_0, "_rules", -28750191, 6); -be_define_local_const_str(exec_rules_str_1, "json", 916562499, 4); -be_define_local_const_str(exec_rules_str_2, "load", -435725847, 4); -be_define_local_const_str(exec_rules_str_3, "BRY: ERROR, bad json: ", -1579831487, 22); -be_define_local_const_str(exec_rules_str_5, "keys", -112588595, 4); -be_define_local_const_str(exec_rules_str_6, "try_rule", 1986449405, 8); -be_define_local_const_str(exec_rules_str_7, "stop_iteration", -121173395, 14); - -static const bvalue exec_rules_ktab[8] = { - { { .s=be_local_const_str(exec_rules_str_0) }, BE_STRING}, - { { .s=be_local_const_str(exec_rules_str_1) }, BE_STRING}, - { { .s=be_local_const_str(exec_rules_str_2) }, BE_STRING}, - { { .s=be_local_const_str(exec_rules_str_3) }, BE_STRING}, - { { .i=3 }, BE_INT}, - { { .s=be_local_const_str(exec_rules_str_5) }, BE_STRING}, - { { .s=be_local_const_str(exec_rules_str_6) }, BE_STRING}, - { { .s=be_local_const_str(exec_rules_str_7) }, BE_STRING}, -}; - -static const uint32_t exec_rules_code[40] = { - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x780A0023, // 0001 JMPF R2 #0026 - 0xA40A0200, // 0002 IMPORT R2 R257 - 0x8C0C0502, // 0003 GETMET R3 R2 R258 - 0x5C140200, // 0004 MOVE R5 R1 - 0x7C0C0400, // 0005 CALL R3 2 - 0x50100000, // 0006 LDBOOL R4 0 0 - 0x4C140000, // 0007 LDNIL 5 - 0x1C140605, // 0008 EQ R5 R3 R5 - 0x78160004, // 0009 JMPF R5 #000F - 0x6014000F, // 000A GETGBL R5 G15 - 0x1A0601, // 000B ADD R6 R259 R1 - 0x581C0004, // 000C LDCONST R7 K4 - 0x7C140400, // 000D CALL R5 2 - 0x70020015, // 000E JMP #0025 - 0x60140000, // 000F GETGBL R5 G0 - 0x88180100, // 0010 GETMBR R6 R0 R256 - 0x8C180D05, // 0011 GETMET R6 R6 R261 - 0x7C180200, // 0012 CALL R6 1 - 0x7C140200, // 0013 CALL R5 1 - 0xA802000C, // 0014 EXBLK 0 #0022 - 0x5C180A00, // 0015 MOVE R6 R5 - 0x7C180000, // 0016 CALL R6 0 - 0x8C1C0106, // 0017 GETMET R7 R0 R262 - 0x5C240600, // 0018 MOVE R9 R3 - 0x5C280C00, // 0019 MOVE R10 R6 - 0x882C0100, // 001A GETMBR R11 R0 R256 - 0x942C1606, // 001B GETIDX R11 R11 R6 - 0x7C1C0800, // 001C CALL R7 4 - 0x741E0001, // 001D JMPT R7 #0020 - 0x74120000, // 001E JMPT R4 #0020 - 0x50100001, // 001F LDBOOL R4 0 1 - 0x50100200, // 0020 LDBOOL R4 1 0 - 0x7001FFF2, // 0021 JMP #0015 - 0x58140007, // 0022 LDCONST R5 K7 - 0xAC140200, // 0023 CATCH R5 1 0 - 0xB0080000, // 0024 RAISE 2 R0 R0 - 0x80040800, // 0025 RET 1 R4 - 0x50080000, // 0026 LDBOOL R2 0 0 - 0x80040400, // 0027 RET 1 R2 -}; - -static const bproto exec_rules_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 12, // nstack - 0, // nupvals - 2, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &exec_rules_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &exec_rules_code, // code - be_local_const_str(exec_rules_str_name), // name - 40, // codesize - 8, // nconst - 0, // nproto - be_local_const_str(exec_rules_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -const bclosure exec_rules_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &exec_rules_proto, // proto - { NULL } // upvals -}; - +be_local_closure(find_key_i, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("string", 398550328, 6), + /* K1 */ be_nested_string("toupper", -602983720, 7), + /* K2 */ be_nested_string("keys", -112588595, 4), + /* K3 */ be_nested_string("?", 973910158, 1), + /* K4 */ be_nested_string("stop_iteration", -121173395, 14), + }), + (be_nested_const_str("find_key_i", 850136726, 10)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[31]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x8C100701, // 0001 GETMET R4 R3 K1 + 0x5C180400, // 0002 MOVE R6 R2 + 0x7C100400, // 0003 CALL R4 2 + 0x60140006, // 0004 GETGBL R5 G6 + 0x5C180200, // 0005 MOVE R6 R1 + 0x7C140200, // 0006 CALL R5 1 + 0x60180013, // 0007 GETGBL R6 G19 + 0x1C140A06, // 0008 EQ R5 R5 R6 + 0x78160013, // 0009 JMPF R5 #001E + 0x60140010, // 000A GETGBL R5 G16 + 0x8C180302, // 000B GETMET R6 R1 K2 + 0x7C180200, // 000C CALL R6 1 + 0x7C140200, // 000D CALL R5 1 + 0xA802000B, // 000E EXBLK 0 #001B + 0x5C180A00, // 000F MOVE R6 R5 + 0x7C180000, // 0010 CALL R6 0 + 0x8C1C0701, // 0011 GETMET R7 R3 K1 + 0x5C240C00, // 0012 MOVE R9 R6 + 0x7C1C0400, // 0013 CALL R7 2 + 0x1C1C0E04, // 0014 EQ R7 R7 R4 + 0x741E0001, // 0015 JMPT R7 #0018 + 0x1C1C0503, // 0016 EQ R7 R2 K3 + 0x781E0001, // 0017 JMPF R7 #001A + 0xA8040001, // 0018 EXBLK 1 1 + 0x80040C00, // 0019 RET 1 R6 + 0x7001FFF3, // 001A JMP #000F + 0x58140004, // 001B LDCONST R5 K4 + 0xAC140200, // 001C CATCH R5 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x80000000, // 001E RET 0 + }) + ) +); /*******************************************************************/ + +/******************************************************************** +** Solidified function: chars_in_string +********************************************************************/ +be_local_closure(chars_in_string, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_const_int(1), + /* K2 */ be_nested_string("stop_iteration", -121173395, 14), + }), + (be_nested_const_str("chars_in_string", -1146182164, 15)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[44]) { /* code */ + 0x780E0001, // 0000 JMPF R3 #0003 + 0x50100200, // 0001 LDBOOL R4 1 0 + 0x70020000, // 0002 JMP #0004 + 0x50100000, // 0003 LDBOOL R4 0 0 + 0x60140010, // 0004 GETGBL R5 G16 + 0x6018000C, // 0005 GETGBL R6 G12 + 0x5C1C0200, // 0006 MOVE R7 R1 + 0x7C180200, // 0007 CALL R6 1 + 0x04180D01, // 0008 SUB R6 R6 K1 + 0x401A0006, // 0009 CONNECT R6 K0 R6 + 0x7C140200, // 000A CALL R5 1 + 0xA802001A, // 000B EXBLK 0 #0027 + 0x5C180A00, // 000C MOVE R6 R5 + 0x7C180000, // 000D CALL R6 0 + 0x501C0000, // 000E LDBOOL R7 0 0 + 0x60200010, // 000F GETGBL R8 G16 + 0x6024000C, // 0010 GETGBL R9 G12 + 0x5C280400, // 0011 MOVE R10 R2 + 0x7C240200, // 0012 CALL R9 1 + 0x04241301, // 0013 SUB R9 R9 K1 + 0x40260009, // 0014 CONNECT R9 K0 R9 + 0x7C200200, // 0015 CALL R8 1 + 0xA8020007, // 0016 EXBLK 0 #001F + 0x5C241000, // 0017 MOVE R9 R8 + 0x7C240000, // 0018 CALL R9 0 + 0x94280206, // 0019 GETIDX R10 R1 R6 + 0x942C0409, // 001A GETIDX R11 R2 R9 + 0x1C28140B, // 001B EQ R10 R10 R11 + 0x782A0000, // 001C JMPF R10 #001E + 0x501C0200, // 001D LDBOOL R7 1 0 + 0x7001FFF7, // 001E JMP #0017 + 0x58200002, // 001F LDCONST R8 K2 + 0xAC200200, // 0020 CATCH R8 1 0 + 0xB0080000, // 0021 RAISE 2 R0 R0 + 0x20200807, // 0022 NE R8 R4 R7 + 0x78220001, // 0023 JMPF R8 #0026 + 0xA8040001, // 0024 EXBLK 1 1 + 0x80040C00, // 0025 RET 1 R6 + 0x7001FFE4, // 0026 JMP #000C + 0x58140002, // 0027 LDCONST R5 K2 + 0xAC140200, // 0028 CATCH R5 1 0 + 0xB0080000, // 0029 RAISE 2 R0 R0 + 0x5415FFFE, // 002A LDINT R5 -1 + 0x80040A00, // 002B RET 1 R5 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: set_timer ********************************************************************/ @@ -941,35 +466,79 @@ be_local_closure(set_timer, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 4]) { /* constants */ - be_nested_string("_timers", -1694866380, 7), /* R256 - K0 */ - be_nested_string("push", -2022703139, 4), /* R257 - K1 */ - be_nested_string("Timer", -346839614, 5), /* R258 - K2 */ - be_nested_string("millis", 1214679063, 6), /* R259 - K3 */ + /* K0 */ be_nested_string("_timers", -1694866380, 7), + /* K1 */ be_nested_string("push", -2022703139, 4), + /* K2 */ be_nested_string("Timer", -346839614, 5), + /* K3 */ be_nested_string("millis", 1214679063, 6), }), (be_nested_const_str("set_timer", 2135414533, 9)), - (be_nested_const_str("input", -103256197, 5)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), ( &(const binstruction[16]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 R256 - 0x74120002, // 0001 JMPT R4 #0005 - 0x6010000A, // 0002 GETGBL R4 G10 - 0x7C100000, // 0003 CALL R4 0 - 0x90020004, // 0004 SETMBR R0 R256 R4 - 0x88100100, // 0005 GETMBR R4 R0 R256 - 0x8C100901, // 0006 GETMET R4 R4 R257 - 0xB81A0400, // 0007 GETNGBL R6 R258 - 0x8C1C0103, // 0008 GETMET R7 R0 R259 - 0x5C240200, // 0009 MOVE R9 R1 - 0x7C1C0400, // 000A CALL R7 2 - 0x5C200400, // 000B MOVE R8 R2 - 0x5C240600, // 000C MOVE R9 R3 - 0x7C180600, // 000D CALL R6 3 - 0x7C100400, // 000E CALL R4 2 - 0x80000000, // 000F RET 0 R0 + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x74120002, // 0001 JMPT R4 #0005 + 0x60100012, // 0002 GETGBL R4 G18 + 0x7C100000, // 0003 CALL R4 0 + 0x90020004, // 0004 SETMBR R0 K0 R4 + 0x88100100, // 0005 GETMBR R4 R0 K0 + 0x8C100901, // 0006 GETMET R4 R4 K1 + 0xB81A0400, // 0007 GETNGBL R6 K2 + 0x8C1C0103, // 0008 GETMET R7 R0 K3 + 0x5C240200, // 0009 MOVE R9 R1 + 0x7C1C0400, // 000A CALL R7 2 + 0x5C200400, // 000B MOVE R8 R2 + 0x5C240600, // 000C MOVE R9 R3 + 0x7C180600, // 000D CALL R6 3 + 0x7C100400, // 000E CALL R4 2 + 0x80000000, // 000F RET 0 }) ) ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: add_rule +********************************************************************/ +be_local_closure(add_rule, /* name */ + be_nested_proto( + 5, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("_rules", -28750191, 6), + /* K1 */ be_nested_string("function", -1630125495, 8), + /* K2 */ be_nested_string("value_error", 773297791, 11), + /* K3 */ be_nested_string("the second argument is not a function", -340392827, 37), + }), + (be_nested_const_str("add_rule", 596540743, 8)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[15]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x740E0002, // 0001 JMPT R3 #0005 + 0x600C0013, // 0002 GETGBL R3 G19 + 0x7C0C0000, // 0003 CALL R3 0 + 0x90020003, // 0004 SETMBR R0 K0 R3 + 0x600C0004, // 0005 GETGBL R3 G4 + 0x5C100400, // 0006 MOVE R4 R2 + 0x7C0C0200, // 0007 CALL R3 1 + 0x1C0C0701, // 0008 EQ R3 R3 K1 + 0x780E0002, // 0009 JMPF R3 #000D + 0x880C0100, // 000A GETMBR R3 R0 K0 + 0x980C0202, // 000B SETIDX R3 R1 R2 + 0x70020000, // 000C JMP #000E + 0xB0060503, // 000D RAISE 1 K2 K3 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: run_deferred ********************************************************************/ @@ -984,50 +553,327 @@ be_local_closure(run_deferred, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 8]) { /* constants */ - be_nested_string("_timers", -1694866380, 7), /* R256 - K0 */ - be_const_int(0), /* R257 - K1 */ - be_nested_string("size", 597743964, 4), /* R258 - K2 */ - be_nested_string("time_reached", 2075136773, 12), /* R259 - K3 */ - be_nested_string("due", -399437003, 3), /* R260 - K4 */ - be_nested_string("f", -485742695, 1), /* R261 - K5 */ - be_nested_string("remove", -611183107, 6), /* R262 - K6 */ - be_const_int(1), /* R263 - K7 */ + /* K0 */ be_nested_string("_timers", -1694866380, 7), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("size", 597743964, 4), + /* K3 */ be_nested_string("time_reached", 2075136773, 12), + /* K4 */ be_nested_string("due", -399437003, 3), + /* K5 */ be_nested_string("f", -485742695, 1), + /* K6 */ be_nested_string("remove", -611183107, 6), + /* K7 */ be_const_int(1), }), (be_nested_const_str("run_deferred", 371594696, 12)), - (be_nested_const_str("input", -103256197, 5)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), ( &(const binstruction[27]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 R256 - 0x78060017, // 0001 JMPF R1 #001A - 0x58040001, // 0002 LDCONST R1 K1 - 0x88080100, // 0003 GETMBR R2 R0 R256 - 0x8C080502, // 0004 GETMET R2 R2 R258 - 0x7C080200, // 0005 CALL R2 1 - 0x14080202, // 0006 LT R2 R1 R2 - 0x780A0011, // 0007 JMPF R2 #001A - 0x8C080103, // 0008 GETMET R2 R0 R259 - 0x88100100, // 0009 GETMBR R4 R0 R256 - 0x94100801, // 000A GETIDX R4 R4 R1 - 0x88100904, // 000B GETMBR R4 R4 R260 - 0x7C080400, // 000C CALL R2 2 - 0x780A0009, // 000D JMPF R2 #0018 - 0x88080100, // 000E GETMBR R2 R0 R256 - 0x94080401, // 000F GETIDX R2 R2 R1 - 0x88080505, // 0010 GETMBR R2 R2 R261 - 0x880C0100, // 0011 GETMBR R3 R0 R256 - 0x8C0C0706, // 0012 GETMET R3 R3 R262 - 0x5C140200, // 0013 MOVE R5 R1 - 0x7C0C0400, // 0014 CALL R3 2 - 0x5C0C0400, // 0015 MOVE R3 R2 - 0x7C0C0000, // 0016 CALL R3 0 - 0x70020000, // 0017 JMP #0019 - 0x00040307, // 0018 ADD R1 R1 R263 - 0x7001FFE8, // 0019 JMP #0003 - 0x80000000, // 001A RET 0 R0 + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060017, // 0001 JMPF R1 #001A + 0x58040001, // 0002 LDCONST R1 K1 + 0x88080100, // 0003 GETMBR R2 R0 K0 + 0x8C080502, // 0004 GETMET R2 R2 K2 + 0x7C080200, // 0005 CALL R2 1 + 0x14080202, // 0006 LT R2 R1 R2 + 0x780A0011, // 0007 JMPF R2 #001A + 0x8C080103, // 0008 GETMET R2 R0 K3 + 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x94100801, // 000A GETIDX R4 R4 R1 + 0x88100904, // 000B GETMBR R4 R4 K4 + 0x7C080400, // 000C CALL R2 2 + 0x780A0009, // 000D JMPF R2 #0018 + 0x88080100, // 000E GETMBR R2 R0 K0 + 0x94080401, // 000F GETIDX R2 R2 R1 + 0x88080505, // 0010 GETMBR R2 R2 K5 + 0x880C0100, // 0011 GETMBR R3 R0 K0 + 0x8C0C0706, // 0012 GETMET R3 R3 K6 + 0x5C140200, // 0013 MOVE R5 R1 + 0x7C0C0400, // 0014 CALL R3 2 + 0x5C0C0400, // 0015 MOVE R3 R2 + 0x7C0C0000, // 0016 CALL R3 0 + 0x70020000, // 0017 JMP #0019 + 0x00040307, // 0018 ADD R1 R1 K7 + 0x7001FFE8, // 0019 JMP #0003 + 0x80000000, // 001A RET 0 }) ) ); /*******************************************************************/ + +/******************************************************************** +** Solidified function: cmd +********************************************************************/ +be_local_closure(cmd, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("json", 916562499, 4), + /* K1 */ be_nested_string("_cmd", -875145154, 4), + /* K2 */ be_nested_string("load", -435725847, 4), + /* K3 */ be_nested_string("instance", 193386898, 8), + /* K4 */ be_nested_string("response", 1499316702, 8), + }), + (be_nested_const_str("cmd", -158181397, 3)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[19]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0101, // 0001 GETMET R3 R0 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100502, // 0004 GETMET R4 R2 K2 + 0x5C180600, // 0005 MOVE R6 R3 + 0x7C100400, // 0006 CALL R4 2 + 0x60140004, // 0007 GETGBL R5 G4 + 0x5C180800, // 0008 MOVE R6 R4 + 0x7C140200, // 0009 CALL R5 1 + 0x1C140B03, // 000A EQ R5 R5 K3 + 0x78160001, // 000B JMPF R5 #000E + 0x80040800, // 000C RET 1 R4 + 0x70020003, // 000D JMP #0012 + 0x60140013, // 000E GETGBL R5 G19 + 0x7C140000, // 000F CALL R5 0 + 0x98160804, // 0010 SETIDX R5 K4 R4 + 0x80040A00, // 0011 RET 1 R5 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: time_str +********************************************************************/ +be_local_closure(time_str, /* name */ + be_nested_proto( + 13, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_string("string", 398550328, 6), + /* K1 */ be_nested_string("time_dump", -964556549, 9), + /* K2 */ be_nested_string("format", -1180859054, 6), + /* K3 */ be_nested_string("%04d-%02d-%02dT%02d:%02d:%02d", -869438695, 29), + /* K4 */ be_nested_string("year", -1367388900, 4), + /* K5 */ be_nested_string("month", -696646139, 5), + /* K6 */ be_nested_string("day", -464576003, 3), + /* K7 */ be_nested_string("hour", -1241306097, 4), + /* K8 */ be_nested_string("min", -913357481, 3), + /* K9 */ be_nested_string("sec", -1155074638, 3), + }), + (be_nested_const_str("time_str", -1681139684, 8)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[14]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0101, // 0001 GETMET R3 R0 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x8C100502, // 0004 GETMET R4 R2 K2 + 0x58180003, // 0005 LDCONST R6 K3 + 0x941C0704, // 0006 GETIDX R7 R3 K4 + 0x94200705, // 0007 GETIDX R8 R3 K5 + 0x94240706, // 0008 GETIDX R9 R3 K6 + 0x94280707, // 0009 GETIDX R10 R3 K7 + 0x942C0708, // 000A GETIDX R11 R3 K8 + 0x94300709, // 000B GETIDX R12 R3 K9 + 0x7C101000, // 000C CALL R4 8 + 0x80040800, // 000D RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: load +********************************************************************/ +be_local_closure(load, /* name */ + be_nested_proto( + 14, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[16]) { /* constants */ + /* K0 */ be_nested_string("string", 398550328, 6), + /* K1 */ be_nested_string("split", -2017972765, 5), + /* K2 */ be_nested_string(".", 722245873, 1), + /* K3 */ be_const_int(1), + /* K4 */ be_nested_string("be", 942383232, 2), + /* K5 */ be_nested_string("bec", 1336821081, 3), + /* K6 */ be_nested_string("io_error", 1970281036, 8), + /* K7 */ be_nested_string("file extension is not '.be' or '.bec'", -1199247657, 37), + /* K8 */ be_nested_string("c", -435409838, 1), + /* K9 */ be_nested_string("r", -150190315, 1), + /* K10 */ be_nested_string("close", 667630371, 5), + /* K11 */ be_nested_string("file", -1427482813, 4), + /* K12 */ be_nested_string("save", -855671224, 4), + /* K13 */ be_nested_string("log", 1062293841, 3), + /* K14 */ be_nested_string("format", -1180859054, 6), + /* K15 */ be_nested_string("BRY: could not save compiled file %s (%s)", 736659787, 41), + }), + (be_nested_const_str("load", -435725847, 4)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[68]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x8C0C0501, // 0001 GETMET R3 R2 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x58180002, // 0003 LDCONST R6 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x6010000C, // 0005 GETGBL R4 G12 + 0x5C140600, // 0006 MOVE R5 R3 + 0x7C100200, // 0007 CALL R4 1 + 0x18100903, // 0008 LE R4 R4 K3 + 0x74120007, // 0009 JMPT R4 #0012 + 0x5411FFFE, // 000A LDINT R4 -1 + 0x94100604, // 000B GETIDX R4 R3 R4 + 0x20100904, // 000C NE R4 R4 K4 + 0x78120004, // 000D JMPF R4 #0013 + 0x5411FFFE, // 000E LDINT R4 -1 + 0x94100604, // 000F GETIDX R4 R3 R4 + 0x20100905, // 0010 NE R4 R4 K5 + 0x78120000, // 0011 JMPF R4 #0013 + 0xB0060D07, // 0012 RAISE 1 K6 K7 + 0x6010000C, // 0013 GETGBL R4 G12 + 0x5C140200, // 0014 MOVE R5 R1 + 0x7C100200, // 0015 CALL R4 1 + 0x04100903, // 0016 SUB R4 R4 K3 + 0x94100204, // 0017 GETIDX R4 R1 R4 + 0x1C100908, // 0018 EQ R4 R4 K8 + 0xA8020007, // 0019 EXBLK 0 #0022 + 0x60140011, // 001A GETGBL R5 G17 + 0x5C180200, // 001B MOVE R6 R1 + 0x581C0009, // 001C LDCONST R7 K9 + 0x7C140400, // 001D CALL R5 2 + 0x8C180B0A, // 001E GETMET R6 R5 K10 + 0x7C180200, // 001F CALL R6 1 + 0xA8040001, // 0020 EXBLK 1 1 + 0x70020006, // 0021 JMP #0029 + 0x58140006, // 0022 LDCONST R5 K6 + 0xAC140200, // 0023 CATCH R5 1 0 + 0x70020002, // 0024 JMP #0028 + 0x50140000, // 0025 LDBOOL R5 0 0 + 0x80040A00, // 0026 RET 1 R5 + 0x70020000, // 0027 JMP #0029 + 0xB0080000, // 0028 RAISE 2 R0 R0 + 0x6014000D, // 0029 GETGBL R5 G13 + 0x5C180200, // 002A MOVE R6 R1 + 0x581C000B, // 002B LDCONST R7 K11 + 0x7C140400, // 002C CALL R5 2 + 0x74120011, // 002D JMPT R4 #0040 + 0xA8020005, // 002E EXBLK 0 #0035 + 0x8C18010C, // 002F GETMET R6 R0 K12 + 0x00200308, // 0030 ADD R8 R1 K8 + 0x5C240A00, // 0031 MOVE R9 R5 + 0x7C180600, // 0032 CALL R6 3 + 0xA8040001, // 0033 EXBLK 1 1 + 0x7002000A, // 0034 JMP #0040 + 0xAC180001, // 0035 CATCH R6 0 1 + 0x70020007, // 0036 JMP #003F + 0x8C1C010D, // 0037 GETMET R7 R0 K13 + 0x8C24050E, // 0038 GETMET R9 R2 K14 + 0x582C000F, // 0039 LDCONST R11 K15 + 0x00300308, // 003A ADD R12 R1 K8 + 0x5C340C00, // 003B MOVE R13 R6 + 0x7C240800, // 003C CALL R9 4 + 0x7C1C0400, // 003D CALL R7 2 + 0x70020000, // 003E JMP #0040 + 0xB0080000, // 003F RAISE 2 R0 R0 + 0x5C180A00, // 0040 MOVE R6 R5 + 0x7C180000, // 0041 CALL R6 0 + 0x50180200, // 0042 LDBOOL R6 1 0 + 0x80040C00, // 0043 RET 1 R6 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_op +********************************************************************/ +be_local_closure(find_op, /* name */ + be_nested_proto( + 13, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_string("string", 398550328, 6), + /* K1 */ be_nested_string("=<>!", -1630497019, 4), + /* K2 */ be_nested_string("chars_in_string", -1146182164, 15), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_string("split", -2017972765, 5), + /* K5 */ be_const_int(1), + }), + (be_nested_const_str("find_op", -528253920, 7)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[42]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x580C0001, // 0001 LDCONST R3 K1 + 0x8C100102, // 0002 GETMET R4 R0 K2 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0600, // 0004 MOVE R7 R3 + 0x7C100600, // 0005 CALL R4 3 + 0x28140903, // 0006 GE R5 R4 K3 + 0x78160019, // 0007 JMPF R5 #0022 + 0x8C140504, // 0008 GETMET R5 R2 K4 + 0x5C1C0200, // 0009 MOVE R7 R1 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C140600, // 000B CALL R5 3 + 0x94180B03, // 000C GETIDX R6 R5 K3 + 0x941C0B05, // 000D GETIDX R7 R5 K5 + 0x8C200102, // 000E GETMET R8 R0 K2 + 0x5C280E00, // 000F MOVE R10 R7 + 0x5C2C0600, // 0010 MOVE R11 R3 + 0x50300200, // 0011 LDBOOL R12 1 0 + 0x7C200800, // 0012 CALL R8 4 + 0x5C101000, // 0013 MOVE R4 R8 + 0x28200903, // 0014 GE R8 R4 K3 + 0x7822000B, // 0015 JMPF R8 #0022 + 0x8C200504, // 0016 GETMET R8 R2 K4 + 0x5C280E00, // 0017 MOVE R10 R7 + 0x5C2C0800, // 0018 MOVE R11 R4 + 0x7C200600, // 0019 CALL R8 3 + 0x94241103, // 001A GETIDX R9 R8 K3 + 0x94281105, // 001B GETIDX R10 R8 K5 + 0x602C0012, // 001C GETGBL R11 G18 + 0x7C2C0000, // 001D CALL R11 0 + 0x40301606, // 001E CONNECT R12 R11 R6 + 0x40301609, // 001F CONNECT R12 R11 R9 + 0x4030160A, // 0020 CONNECT R12 R11 R10 + 0x80041600, // 0021 RET 1 R11 + 0x60140012, // 0022 GETGBL R5 G18 + 0x7C140000, // 0023 CALL R5 0 + 0x40180A01, // 0024 CONNECT R6 R5 R1 + 0x4C180000, // 0025 LDNIL R6 + 0x40180A06, // 0026 CONNECT R6 R5 R6 + 0x4C180000, // 0027 LDNIL R6 + 0x40180A06, // 0028 CONNECT R6 R5 R6 + 0x80040A00, // 0029 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: remove_timer ********************************************************************/ @@ -1042,150 +888,52 @@ be_local_closure(remove_timer, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - be_nested_string("tasmota", 424643812, 7), /* R256 - K0 */ - be_nested_string("_timers", -1694866380, 7), /* R257 - K1 */ - be_const_int(0), /* R258 - K2 */ - be_nested_string("size", 597743964, 4), /* R259 - K3 */ - be_nested_string("id", 926444256, 2), /* R260 - K4 */ - be_nested_string("remove", -611183107, 6), /* R261 - K5 */ - be_const_int(1), /* R262 - K6 */ + /* K0 */ be_nested_string("tasmota", 424643812, 7), + /* K1 */ be_nested_string("_timers", -1694866380, 7), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_string("size", 597743964, 4), + /* K4 */ be_nested_string("id", 926444256, 2), + /* K5 */ be_nested_string("remove", -611183107, 6), + /* K6 */ be_const_int(1), }), (be_nested_const_str("remove_timer", -153495081, 12)), - (be_nested_const_str("input", -103256197, 5)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), ( &(const binstruction[23]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 R256 - 0x88080501, // 0001 GETMBR R2 R2 R257 - 0x780A0012, // 0002 JMPF R2 #0016 - 0x58080002, // 0003 LDCONST R2 K2 - 0xB80E0000, // 0004 GETNGBL R3 R256 - 0x880C0701, // 0005 GETMBR R3 R3 R257 - 0x8C0C0703, // 0006 GETMET R3 R3 R259 - 0x7C0C0200, // 0007 CALL R3 1 - 0x140C0403, // 0008 LT R3 R2 R3 - 0x780E000B, // 0009 JMPF R3 #0016 - 0x880C0101, // 000A GETMBR R3 R0 R257 - 0x940C0602, // 000B GETIDX R3 R3 R2 - 0x880C0704, // 000C GETMBR R3 R3 R260 - 0x1C0C0601, // 000D EQ R3 R3 R1 - 0x780E0004, // 000E JMPF R3 #0014 - 0x880C0101, // 000F GETMBR R3 R0 R257 - 0x8C0C0705, // 0010 GETMET R3 R3 R261 - 0x5C140400, // 0011 MOVE R5 R2 - 0x7C0C0400, // 0012 CALL R3 2 - 0x70020000, // 0013 JMP #0015 - 0x00080506, // 0014 ADD R2 R2 R262 - 0x7001FFED, // 0015 JMP #0004 - 0x80000000, // 0016 RET 0 R0 + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x88080501, // 0001 GETMBR R2 R2 K1 + 0x780A0012, // 0002 JMPF R2 #0016 + 0x58080002, // 0003 LDCONST R2 K2 + 0xB80E0000, // 0004 GETNGBL R3 K0 + 0x880C0701, // 0005 GETMBR R3 R3 K1 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x7C0C0200, // 0007 CALL R3 1 + 0x140C0403, // 0008 LT R3 R2 R3 + 0x780E000B, // 0009 JMPF R3 #0016 + 0x880C0101, // 000A GETMBR R3 R0 K1 + 0x940C0602, // 000B GETIDX R3 R3 R2 + 0x880C0704, // 000C GETMBR R3 R3 K4 + 0x1C0C0601, // 000D EQ R3 R3 R1 + 0x780E0004, // 000E JMPF R3 #0014 + 0x880C0101, // 000F GETMBR R3 R0 K1 + 0x8C0C0705, // 0010 GETMET R3 R3 K5 + 0x5C140400, // 0011 MOVE R5 R2 + 0x7C0C0400, // 0012 CALL R3 2 + 0x70020000, // 0013 JMP #0015 + 0x00080506, // 0014 ADD R2 R2 K6 + 0x7001FFED, // 0015 JMP #0004 + 0x80000000, // 0016 RET 0 }) ) ); /*******************************************************************/ -/******************************************************************** - // Add command to list - "def add_cmd(c,f) " - "if !self._ccmd " - "self._ccmd={} " - "end " - "if type(f) == 'function' " - "self._ccmd[c]=f " - "else " - "raise 'value_error', 'the second argument is not a function' " - "end " - "end " -********************************************************************/ -/******************************************************************** -** Solidified function: add_cmd -********************************************************************/ - -be_define_local_const_str(add_cmd_str_name, "add_cmd", -933336417, 7); -be_define_local_const_str(add_cmd_str_source, "string", 398550328, 6); -be_define_local_const_str(add_cmd_str_0, "_ccmd", -2131545883, 5); -be_define_local_const_str(add_cmd_str_1, "function", -1630125495, 8); -be_define_local_const_str(add_cmd_str_2, "value_error", 773297791, 11); -be_define_local_const_str(add_cmd_str_3, "the second argument is not a function", -340392827, 37); - -static const bvalue add_cmd_ktab[4] = { - { { .s=be_local_const_str(add_cmd_str_0) }, BE_STRING}, - { { .s=be_local_const_str(add_cmd_str_1) }, BE_STRING}, - { { .s=be_local_const_str(add_cmd_str_2) }, BE_STRING}, - { { .s=be_local_const_str(add_cmd_str_3) }, BE_STRING}, -}; - -static const uint32_t add_cmd_code[15] = { - 0x880C0100, // 0000 GETMBR R3 R0 R256 - 0x740E0002, // 0001 JMPT R3 #0005 - 0x600C000B, // 0002 GETGBL R3 G11 - 0x7C0C0000, // 0003 CALL R3 0 - 0x90020003, // 0004 SETMBR R0 R256 R3 - 0x600C0015, // 0005 GETGBL R3 G21 - 0x5C100400, // 0006 MOVE R4 R2 - 0x7C0C0200, // 0007 CALL R3 1 - 0x1C0C0701, // 0008 EQ R3 R3 R257 - 0x780E0002, // 0009 JMPF R3 #000D - 0x880C0100, // 000A GETMBR R3 R0 R256 - 0x980C0202, // 000B SETIDX R3 R1 R2 - 0x70020000, // 000C JMP #000E - 0xB0060503, // 000D RAISE 1 R258 R259 - 0x80000000, // 000E RET 0 R0 -}; - -static const bproto add_cmd_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 5, // nstack - 0, // nupvals - 3, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &add_cmd_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &add_cmd_code, // code - be_local_const_str(add_cmd_str_name), // name - 15, // codesize - 4, // nconst - 0, // nproto - be_local_const_str(add_cmd_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure add_cmd_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &add_cmd_proto, // proto - { NULL } // upvals -}; - -/*******************************************************************/ - /******************************************************************** - // Remove command from list - "def remove_cmd(c) " - "if self._ccmd " - "self._ccmd.remove(c) " - "end " - "end " +** Solidified function: get_light ********************************************************************/ - -/******************************************************************** -** Solidified function: remove_cmd -********************************************************************/ -be_local_closure(remove_cmd, /* name */ +be_local_closure(get_light, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -1193,244 +941,42 @@ be_local_closure(remove_cmd, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* upvals */ - { { .s=be_nested_const_str("_ccmd", -2131545883, 5) }, BE_STRING}, - { { .s=be_nested_const_str("remove", -611183107, 6) }, BE_STRING}, + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("tasmota.get_light() is deprecated, use light.get()", -769213649, 50), + /* K1 */ be_nested_string("light", -493019601, 5), + /* K2 */ be_nested_string("get", 1410115415, 3), }), - (be_nested_const_str("remove_cmd", -462651594, 10)), - (be_nested_const_str("string", 398550328, 6)), - ( &(const binstruction[ 7]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x780A0003, // 0001 JMPF R2 #0006 - 0x88080100, // 0002 GETMBR R2 R0 R256 - 0x8C080501, // 0003 GETMET R2 R2 R257 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x80000000, // 0006 RET 0 R0 + (be_nested_const_str("get_light", 381930476, 9)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[16]) { /* code */ + 0x60080001, // 0000 GETGBL R2 G1 + 0x580C0000, // 0001 LDCONST R3 K0 + 0x7C080200, // 0002 CALL R2 1 + 0xA40A0200, // 0003 IMPORT R2 K1 + 0x4C0C0000, // 0004 LDNIL R3 + 0x200C0203, // 0005 NE R3 R1 R3 + 0x780E0004, // 0006 JMPF R3 #000C + 0x8C0C0502, // 0007 GETMET R3 R2 K2 + 0x5C140200, // 0008 MOVE R5 R1 + 0x7C0C0400, // 0009 CALL R3 2 + 0x80040600, // 000A RET 1 R3 + 0x70020002, // 000B JMP #000F + 0x8C0C0502, // 000C GETMET R3 R2 K2 + 0x7C0C0200, // 000D CALL R3 1 + 0x80040600, // 000E RET 1 R3 + 0x80000000, // 000F RET 0 }) ) ); /*******************************************************************/ + /******************************************************************** -** Solidified function: exec_cmd +** Solidified function: exec_rules ********************************************************************/ -be_local_closure(exec_cmd, /* name */ +be_local_closure(exec_rules, /* name */ be_nested_proto( 12, /* nstack */ - 4, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - be_nested_string("_ccmd", -2131545883, 5), /* R256 - K0 */ - be_nested_string("json", 916562499, 4), /* R257 - K1 */ - be_nested_string("load", -435725847, 4), /* R258 - K2 */ - be_nested_string("find_key_i", 850136726, 10), /* R259 - K3 */ - be_nested_string("resolvecmnd", 993361485, 11), /* R260 - K4 */ - }), - (be_nested_const_str("exec_cmd", 493567399, 8)), - (be_nested_const_str("string", 398550328, 6)), - ( &(const binstruction[27]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 R256 - 0x78120016, // 0001 JMPF R4 #0019 - 0xA4120200, // 0002 IMPORT R4 R257 - 0x8C140902, // 0003 GETMET R5 R4 R258 - 0x5C1C0600, // 0004 MOVE R7 R3 - 0x7C140400, // 0005 CALL R5 2 - 0x8C180103, // 0006 GETMET R6 R0 R259 - 0x88200100, // 0007 GETMBR R8 R0 R256 - 0x5C240200, // 0008 MOVE R9 R1 - 0x7C180600, // 0009 CALL R6 3 - 0x4C1C0000, // 000A LDNIL 7 - 0x201C0C07, // 000B NE R7 R6 R7 - 0x781E000B, // 000C JMPF R7 #0019 - 0x8C1C0104, // 000D GETMET R7 R0 R260 - 0x5C240C00, // 000E MOVE R9 R6 - 0x7C1C0400, // 000F CALL R7 2 - 0x881C0100, // 0010 GETMBR R7 R0 R256 - 0x941C0E06, // 0011 GETIDX R7 R7 R6 - 0x5C200C00, // 0012 MOVE R8 R6 - 0x5C240400, // 0013 MOVE R9 R2 - 0x5C280600, // 0014 MOVE R10 R3 - 0x5C2C0A00, // 0015 MOVE R11 R5 - 0x7C1C0800, // 0016 CALL R7 4 - 0x501C0200, // 0017 LDBOOL R7 1 0 - 0x80040E00, // 0018 RET 1 R7 - 0x50100000, // 0019 LDBOOL R4 0 0 - 0x80040800, // 001A RET 1 R4 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** - // Force gc and return allocated memory - "def gc() " - "import gc " - "gc.collect() " - "return gc.allocated() " - "end " -********************************************************************/ - -/******************************************************************** -** Solidified function: gc -********************************************************************/ -be_local_closure(gc, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* upvals */ - { { .s=be_nested_const_str("gc", 1042313471, 2) }, BE_STRING}, - { { .s=be_nested_const_str("collect", -1895928271, 7) }, BE_STRING}, - { { .s=be_nested_const_str("allocated", 429986098, 9) }, BE_STRING}, - }), - (be_nested_const_str("gc", 1042313471, 2)), - (be_nested_const_str("string", 398550328, 6)), - ( &(const binstruction[ 6]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 R256 - 0x8C080301, // 0001 GETMET R2 R1 R257 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080302, // 0003 GETMET R2 R1 R258 - 0x7C080200, // 0004 CALL R2 1 - 0x80040400, // 0005 RET 1 R2 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: event -********************************************************************/ -be_local_closure(event, /* name */ - be_nested_proto( - 19, /* nstack */ - 6, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - be_nested_string("introspect", 164638290, 10), /* R256 - K0 */ - be_nested_string("every_50ms", -1911083288, 10), /* R257 - K1 */ - be_nested_string("run_deferred", 371594696, 12), /* R258 - K2 */ - be_nested_string("cmd", -158181397, 3), /* R259 - K3 */ - be_nested_string("exec_cmd", 493567399, 8), /* R260 - K4 */ - be_nested_string("rule", -64077613, 4), /* R261 - K5 */ - be_nested_string("exec_rules", 1445221092, 10), /* R262 - K6 */ - be_nested_string("gc", 1042313471, 2), /* R263 - K7 */ - be_nested_string("_drivers", -1034638311, 8), /* R264 - K8 */ - be_nested_string("get", 1410115415, 3), /* R265 - K9 */ - be_nested_string("function", -1630125495, 8), /* R266 - K10 */ - be_nested_string("string", 398550328, 6), /* R267 - K11 */ - be_nested_string("format", -1180859054, 6), /* R268 - K12 */ - be_nested_string("BRY: Exception> '%s' - %s", -2047976332, 25), /* R269 - K13 */ - be_nested_string("stop_iteration", -121173395, 14), /* R270 - K14 */ - }), - (be_nested_const_str("event", -30355297, 5)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[79]) { /* code */ - 0xA41A0000, // 0000 IMPORT R6 R256 - 0x1C1C0301, // 0001 EQ R7 R1 R257 - 0x781E0001, // 0002 JMPF R7 #0005 - 0x8C1C0102, // 0003 GETMET R7 R0 R258 - 0x7C1C0200, // 0004 CALL R7 1 - 0x1C1C0303, // 0005 EQ R7 R1 R259 - 0x781E0006, // 0006 JMPF R7 #000E - 0x8C1C0104, // 0007 GETMET R7 R0 R260 - 0x5C240400, // 0008 MOVE R9 R2 - 0x5C280600, // 0009 MOVE R10 R3 - 0x5C2C0800, // 000A MOVE R11 R4 - 0x7C1C0800, // 000B CALL R7 4 - 0x80040E00, // 000C RET 1 R7 - 0x7002003F, // 000D JMP #004E - 0x1C1C0305, // 000E EQ R7 R1 R261 - 0x781E0004, // 000F JMPF R7 #0015 - 0x8C1C0106, // 0010 GETMET R7 R0 R262 - 0x5C240800, // 0011 MOVE R9 R4 - 0x7C1C0400, // 0012 CALL R7 2 - 0x80040E00, // 0013 RET 1 R7 - 0x70020038, // 0014 JMP #004E - 0x1C1C0307, // 0015 EQ R7 R1 R263 - 0x781E0003, // 0016 JMPF R7 #001B - 0x8C1C0107, // 0017 GETMET R7 R0 R263 - 0x7C1C0200, // 0018 CALL R7 1 - 0x80040E00, // 0019 RET 1 R7 - 0x70020032, // 001A JMP #004E - 0x881C0108, // 001B GETMBR R7 R0 R264 - 0x781E0030, // 001C JMPF R7 #004E - 0x601C0000, // 001D GETGBL R7 G0 - 0x88200108, // 001E GETMBR R8 R0 R264 - 0x7C1C0200, // 001F CALL R7 1 - 0xA8020027, // 0020 EXBLK 0 #0049 - 0x5C200E00, // 0021 MOVE R8 R7 - 0x7C200000, // 0022 CALL R8 0 - 0x8C240D09, // 0023 GETMET R9 R6 R265 - 0x5C2C1000, // 0024 MOVE R11 R8 - 0x5C300200, // 0025 MOVE R12 R1 - 0x7C240600, // 0026 CALL R9 3 - 0x60280015, // 0027 GETGBL R10 G21 - 0x5C2C1200, // 0028 MOVE R11 R9 - 0x7C280200, // 0029 CALL R10 1 - 0x1C28150A, // 002A EQ R10 R10 R266 - 0x782A001B, // 002B JMPF R10 #0048 - 0xA802000E, // 002C EXBLK 0 #003C - 0x5C281200, // 002D MOVE R10 R9 - 0x5C2C1000, // 002E MOVE R11 R8 - 0x5C300400, // 002F MOVE R12 R2 - 0x5C340600, // 0030 MOVE R13 R3 - 0x5C380800, // 0031 MOVE R14 R4 - 0x5C3C0A00, // 0032 MOVE R15 R5 - 0x7C280A00, // 0033 CALL R10 5 - 0x502C0200, // 0034 LDBOOL R11 1 0 - 0x1C2C140B, // 0035 EQ R11 R10 R11 - 0x782E0002, // 0036 JMPF R11 #003A - 0x502C0200, // 0037 LDBOOL R11 1 0 - 0xA8040002, // 0038 EXBLK 1 2 - 0x80041600, // 0039 RET 1 R11 - 0xA8040001, // 003A EXBLK 1 1 - 0x7002000B, // 003B JMP #0048 - 0xAC280002, // 003C CATCH R10 0 2 - 0x70020008, // 003D JMP #0047 - 0xA4321600, // 003E IMPORT R12 R267 - 0x6034000F, // 003F GETGBL R13 G15 - 0x8C38190C, // 0040 GETMET R14 R12 R268 - 0x5840000D, // 0041 LDCONST R16 K13 - 0x5C441400, // 0042 MOVE R17 R10 - 0x5C481600, // 0043 MOVE R18 R11 - 0x7C380800, // 0044 CALL R14 4 - 0x7C340200, // 0045 CALL R13 1 - 0x70020000, // 0046 JMP #0048 - 0xB0080000, // 0047 RAISE 2 R0 R0 - 0x7001FFD7, // 0048 JMP #0021 - 0x581C000E, // 0049 LDCONST R7 K14 - 0xAC1C0200, // 004A CATCH R7 1 0 - 0xB0080000, // 004B RAISE 2 R0 R0 - 0x501C0000, // 004C LDBOOL R7 0 0 - 0x80040E00, // 004D RET 1 R7 - 0x80000000, // 004E RET 0 R0 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** -** Solidified function: add_driver -********************************************************************/ -be_local_closure(add_driver, /* name */ - be_nested_proto( - 5, /* nstack */ 2, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -1438,30 +984,65 @@ be_local_closure(add_driver, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - be_nested_string("_drivers", -1034638311, 8), /* R256 - K0 */ - be_nested_string("push", -2022703139, 4), /* R257 - K1 */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_string("_rules", -28750191, 6), + /* K1 */ be_nested_string("json", 916562499, 4), + /* K2 */ be_nested_string("load", -435725847, 4), + /* K3 */ be_nested_string("BRY: ERROR, bad json: ", -1579831487, 22), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_string("keys", -112588595, 4), + /* K6 */ be_nested_string("try_rule", 1986449405, 8), + /* K7 */ be_nested_string("stop_iteration", -121173395, 14), }), - (be_nested_const_str("add_driver", 1654458371, 10)), - (be_nested_const_str("string", 398550328, 6)), - ( &(const binstruction[12]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x780A0004, // 0001 JMPF R2 #0007 - 0x88080100, // 0002 GETMBR R2 R0 R256 - 0x8C080501, // 0003 GETMET R2 R2 R257 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x70020003, // 0006 JMP #000B - 0x6008000A, // 0007 GETGBL R2 G10 - 0x7C080000, // 0008 CALL R2 0 - 0x400C0401, // 0009 CONNECT R3 R2 R1 - 0x90020002, // 000A SETMBR R0 R256 R2 - 0x80000000, // 000B RET 0 R0 + (be_nested_const_str("exec_rules", 1445221092, 10)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[40]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0023, // 0001 JMPF R2 #0026 + 0xA40A0200, // 0002 IMPORT R2 K1 + 0x8C0C0502, // 0003 GETMET R3 R2 K2 + 0x5C140200, // 0004 MOVE R5 R1 + 0x7C0C0400, // 0005 CALL R3 2 + 0x50100000, // 0006 LDBOOL R4 0 0 + 0x4C140000, // 0007 LDNIL R5 + 0x1C140605, // 0008 EQ R5 R3 R5 + 0x78160004, // 0009 JMPF R5 #000F + 0x60140001, // 000A GETGBL R5 G1 + 0x001A0601, // 000B ADD R6 K3 R1 + 0x581C0004, // 000C LDCONST R7 K4 + 0x7C140400, // 000D CALL R5 2 + 0x70020015, // 000E JMP #0025 + 0x60140010, // 000F GETGBL R5 G16 + 0x88180100, // 0010 GETMBR R6 R0 K0 + 0x8C180D05, // 0011 GETMET R6 R6 K5 + 0x7C180200, // 0012 CALL R6 1 + 0x7C140200, // 0013 CALL R5 1 + 0xA802000C, // 0014 EXBLK 0 #0022 + 0x5C180A00, // 0015 MOVE R6 R5 + 0x7C180000, // 0016 CALL R6 0 + 0x8C1C0106, // 0017 GETMET R7 R0 K6 + 0x5C240600, // 0018 MOVE R9 R3 + 0x5C280C00, // 0019 MOVE R10 R6 + 0x882C0100, // 001A GETMBR R11 R0 K0 + 0x942C1606, // 001B GETIDX R11 R11 R6 + 0x7C1C0800, // 001C CALL R7 4 + 0x741E0001, // 001D JMPT R7 #0020 + 0x74120000, // 001E JMPT R4 #0020 + 0x50100001, // 001F LDBOOL R4 0 1 + 0x50100200, // 0020 LDBOOL R4 1 0 + 0x7001FFF2, // 0021 JMP #0015 + 0x58140007, // 0022 LDCONST R5 K7 + 0xAC140200, // 0023 CATCH R5 1 0 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80040800, // 0025 RET 1 R4 + 0x50080000, // 0026 LDBOOL R2 0 0 + 0x80040400, // 0027 RET 1 R2 }) ) ); /*******************************************************************/ + /******************************************************************** ** Solidified function: remove_driver ********************************************************************/ @@ -1481,558 +1062,211 @@ be_local_closure(remove_driver, /* name */ /* K2 */ be_nested_string("pop", 1362321360, 3), }), (be_nested_const_str("remove_driver", 1030243768, 13)), - (be_nested_const_str("input", -103256197, 5)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), ( &(const binstruction[14]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A000A, // 0001 JMPF R2 #000D - 0x88080100, // 0002 GETMBR R2 R0 K0 - 0x8C080501, // 0003 GETMET R2 R2 K1 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x4C0C0000, // 0006 LDNIL R3 - 0x200C0403, // 0007 NE R3 R2 R3 - 0x780E0003, // 0008 JMPF R3 #000D - 0x880C0100, // 0009 GETMBR R3 R0 K0 - 0x8C0C0702, // 000A GETMET R3 R3 K2 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C0C0400, // 000C CALL R3 2 - 0x80000000, // 000D RET 0 + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A000A, // 0001 JMPF R2 #000D + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x4C0C0000, // 0006 LDNIL R3 + 0x200C0403, // 0007 NE R3 R2 R3 + 0x780E0003, // 0008 JMPF R3 #000D + 0x880C0100, // 0009 GETMBR R3 R0 K0 + 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C0C0400, // 000C CALL R3 2 + 0x80000000, // 000D RET 0 }) ) ); /*******************************************************************/ + /******************************************************************** -** Solidified function: load +** Solidified function: try_rule ********************************************************************/ -be_local_closure(load, /* name */ +be_local_closure(try_rule, /* name */ be_nested_proto( 14, /* nstack */ - 2, /* argc */ + 4, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* upvals */ - { { .s=be_nested_const_str("string", 398550328, 6) }, BE_STRING}, - { { .s=be_nested_const_str("split", -2017972765, 5) }, BE_STRING}, - { { .s=be_nested_const_str(".", 722245873, 1) }, BE_STRING}, - { { .i=1 }, BE_INT}, - { { .s=be_nested_const_str("be", 942383232, 2) }, BE_STRING}, - { { .s=be_nested_const_str("bec", 1336821081, 3) }, BE_STRING}, - { { .s=be_nested_const_str("io_error", 1970281036, 8) }, BE_STRING}, - { { .s=be_nested_const_str("file extension is not '.be' or '.bec'", -1199247657, 37) }, BE_STRING}, - { { .s=be_nested_const_str("c", -435409838, 1) }, BE_STRING}, - { { .s=be_nested_const_str("r", -150190315, 1) }, BE_STRING}, - { { .s=be_nested_const_str("close", 667630371, 5) }, BE_STRING}, - { { .s=be_nested_const_str("file", -1427482813, 4) }, BE_STRING}, - { { .s=be_nested_const_str("save", -855671224, 4) }, BE_STRING}, - { { .s=be_nested_const_str("log", 1062293841, 3) }, BE_STRING}, - { { .s=be_nested_const_str("format", -1180859054, 6) }, BE_STRING}, - { { .s=be_nested_const_str("BRY: could not save compiled file %s (%s)", 736659787, 41) }, BE_STRING}, + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_string("string", 398550328, 6), + /* K1 */ be_nested_string("find_op", -528253920, 7), + /* K2 */ be_nested_string("split", -2017972765, 5), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_string("#", 638357778, 1), + /* K5 */ be_nested_string("find_key_i", 850136726, 10), + /* K6 */ be_nested_string("stop_iteration", -121173395, 14), + /* K7 */ be_const_int(1), + /* K8 */ be_const_int(2), + /* K9 */ be_nested_string("==", -1863000881, 2), + /* K10 */ be_nested_string("!==", 559817114, 3), + /* K11 */ be_nested_string("=", 940354920, 1), + /* K12 */ be_nested_string("!=", -1866252285, 2), + /* K13 */ be_nested_string(">", 990687777, 1), + /* K14 */ be_nested_string(">=", 284975636, 2), + /* K15 */ be_nested_string("<", 957132539, 1), + /* K16 */ be_nested_string("<=", -1795743310, 2), }), - (be_nested_const_str("load", -435725847, 4)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[68]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 R256 - 0x8C0C0501, // 0001 GETMET R3 R2 R257 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x60100012, // 0005 GETGBL R4 G18 - 0x5C140600, // 0006 MOVE R5 R3 - 0x7C100200, // 0007 CALL R4 1 - 0x18100903, // 0008 LE R4 R4 R259 - 0x74120007, // 0009 JMPT R4 #0012 - 0x5411FFFE, // 000A LDINT R4 -1 - 0x94100604, // 000B GETIDX R4 R3 R4 - 0x20100904, // 000C NE R4 R4 R260 - 0x78120004, // 000D JMPF R4 #0013 - 0x5411FFFE, // 000E LDINT R4 -1 - 0x94100604, // 000F GETIDX R4 R3 R4 - 0x20100905, // 0010 NE R4 R4 R261 - 0x78120000, // 0011 JMPF R4 #0013 - 0xB0060D07, // 0012 RAISE 1 R262 R263 - 0x60100012, // 0013 GETGBL R4 G18 - 0x5C140200, // 0014 MOVE R5 R1 - 0x7C100200, // 0015 CALL R4 1 - 0x04100903, // 0016 SUB R4 R4 R259 - 0x94100204, // 0017 GETIDX R4 R1 R4 - 0x1C100908, // 0018 EQ R4 R4 R264 - 0xA8020007, // 0019 EXBLK 0 #0022 - 0x6014000E, // 001A GETGBL R5 G14 - 0x5C180200, // 001B MOVE R6 R1 - 0x581C0009, // 001C LDCONST R7 K9 - 0x7C140400, // 001D CALL R5 2 - 0x8C180B0A, // 001E GETMET R6 R5 R266 - 0x7C180200, // 001F CALL R6 1 - 0xA8040001, // 0020 EXBLK 1 1 - 0x70020006, // 0021 JMP #0029 - 0x58140006, // 0022 LDCONST R5 K6 - 0xAC140200, // 0023 CATCH R5 1 0 - 0x70020002, // 0024 JMP #0028 - 0x50140000, // 0025 LDBOOL R5 0 0 - 0x80040A00, // 0026 RET 1 R5 - 0x70020000, // 0027 JMP #0029 - 0xB0080000, // 0028 RAISE 2 R0 R0 - 0x60140005, // 0029 GETGBL R5 G5 - 0x5C180200, // 002A MOVE R6 R1 - 0x581C000B, // 002B LDCONST R7 K11 - 0x7C140400, // 002C CALL R5 2 - 0x74120011, // 002D JMPT R4 #0040 - 0xA8020005, // 002E EXBLK 0 #0035 - 0x8C18010C, // 002F GETMET R6 R0 R268 - 0x00200308, // 0030 ADD R8 R1 R264 - 0x5C240A00, // 0031 MOVE R9 R5 - 0x7C180600, // 0032 CALL R6 3 - 0xA8040001, // 0033 EXBLK 1 1 - 0x7002000A, // 0034 JMP #0040 - 0xAC180001, // 0035 CATCH R6 0 1 - 0x70020007, // 0036 JMP #003F - 0x8C1C010D, // 0037 GETMET R7 R0 R269 - 0x8C24050E, // 0038 GETMET R9 R2 R270 - 0x582C000F, // 0039 LDCONST R11 K15 - 0x00300308, // 003A ADD R12 R1 R264 - 0x5C340C00, // 003B MOVE R13 R6 - 0x7C240800, // 003C CALL R9 4 - 0x7C1C0400, // 003D CALL R7 2 - 0x70020000, // 003E JMP #0040 - 0xB0080000, // 003F RAISE 2 R0 R0 - 0x5C180A00, // 0040 MOVE R6 R5 - 0x7C180000, // 0041 CALL R6 0 - 0x50180200, // 0042 LDBOOL R6 1 0 - 0x80040C00, // 0043 RET 1 R6 + (be_nested_const_str("try_rule", 1986449405, 8)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[143]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0x8C140101, // 0001 GETMET R5 R0 K1 + 0x5C1C0400, // 0002 MOVE R7 R2 + 0x7C140400, // 0003 CALL R5 2 + 0x5C180200, // 0004 MOVE R6 R1 + 0x8C1C0902, // 0005 GETMET R7 R4 K2 + 0x94240B03, // 0006 GETIDX R9 R5 K3 + 0x58280004, // 0007 LDCONST R10 K4 + 0x7C1C0600, // 0008 CALL R7 3 + 0x60200010, // 0009 GETGBL R8 G16 + 0x5C240E00, // 000A MOVE R9 R7 + 0x7C200200, // 000B CALL R8 1 + 0xA802000D, // 000C EXBLK 0 #001B + 0x5C241000, // 000D MOVE R9 R8 + 0x7C240000, // 000E CALL R9 0 + 0x8C280105, // 000F GETMET R10 R0 K5 + 0x5C300C00, // 0010 MOVE R12 R6 + 0x5C341200, // 0011 MOVE R13 R9 + 0x7C280600, // 0012 CALL R10 3 + 0x4C2C0000, // 0013 LDNIL R11 + 0x1C2C140B, // 0014 EQ R11 R10 R11 + 0x782E0002, // 0015 JMPF R11 #0019 + 0x502C0000, // 0016 LDBOOL R11 0 0 + 0xA8040001, // 0017 EXBLK 1 1 + 0x80041600, // 0018 RET 1 R11 + 0x94180C0A, // 0019 GETIDX R6 R6 R10 + 0x7001FFF1, // 001A JMP #000D + 0x58200006, // 001B LDCONST R8 K6 + 0xAC200200, // 001C CATCH R8 1 0 + 0xB0080000, // 001D RAISE 2 R0 R0 + 0x94200B07, // 001E GETIDX R8 R5 K7 + 0x94240B08, // 001F GETIDX R9 R5 K8 + 0x78220066, // 0020 JMPF R8 #0088 + 0x1C281109, // 0021 EQ R10 R8 K9 + 0x782A000A, // 0022 JMPF R10 #002E + 0x60280008, // 0023 GETGBL R10 G8 + 0x5C2C0C00, // 0024 MOVE R11 R6 + 0x7C280200, // 0025 CALL R10 1 + 0x602C0008, // 0026 GETGBL R11 G8 + 0x5C301200, // 0027 MOVE R12 R9 + 0x7C2C0200, // 0028 CALL R11 1 + 0x2028140B, // 0029 NE R10 R10 R11 + 0x782A0001, // 002A JMPF R10 #002D + 0x50280000, // 002B LDBOOL R10 0 0 + 0x80041400, // 002C RET 1 R10 + 0x70020059, // 002D JMP #0088 + 0x1C28110A, // 002E EQ R10 R8 K10 + 0x782A000A, // 002F JMPF R10 #003B + 0x60280008, // 0030 GETGBL R10 G8 + 0x5C2C0C00, // 0031 MOVE R11 R6 + 0x7C280200, // 0032 CALL R10 1 + 0x602C0008, // 0033 GETGBL R11 G8 + 0x5C301200, // 0034 MOVE R12 R9 + 0x7C2C0200, // 0035 CALL R11 1 + 0x1C28140B, // 0036 EQ R10 R10 R11 + 0x782A0001, // 0037 JMPF R10 #003A + 0x50280000, // 0038 LDBOOL R10 0 0 + 0x80041400, // 0039 RET 1 R10 + 0x7002004C, // 003A JMP #0088 + 0x1C28110B, // 003B EQ R10 R8 K11 + 0x782A000A, // 003C JMPF R10 #0048 + 0x6028000A, // 003D GETGBL R10 G10 + 0x5C2C0C00, // 003E MOVE R11 R6 + 0x7C280200, // 003F CALL R10 1 + 0x602C000A, // 0040 GETGBL R11 G10 + 0x5C301200, // 0041 MOVE R12 R9 + 0x7C2C0200, // 0042 CALL R11 1 + 0x2028140B, // 0043 NE R10 R10 R11 + 0x782A0001, // 0044 JMPF R10 #0047 + 0x50280000, // 0045 LDBOOL R10 0 0 + 0x80041400, // 0046 RET 1 R10 + 0x7002003F, // 0047 JMP #0088 + 0x1C28110C, // 0048 EQ R10 R8 K12 + 0x782A000A, // 0049 JMPF R10 #0055 + 0x6028000A, // 004A GETGBL R10 G10 + 0x5C2C0C00, // 004B MOVE R11 R6 + 0x7C280200, // 004C CALL R10 1 + 0x602C000A, // 004D GETGBL R11 G10 + 0x5C301200, // 004E MOVE R12 R9 + 0x7C2C0200, // 004F CALL R11 1 + 0x1C28140B, // 0050 EQ R10 R10 R11 + 0x782A0001, // 0051 JMPF R10 #0054 + 0x50280000, // 0052 LDBOOL R10 0 0 + 0x80041400, // 0053 RET 1 R10 + 0x70020032, // 0054 JMP #0088 + 0x1C28110D, // 0055 EQ R10 R8 K13 + 0x782A000A, // 0056 JMPF R10 #0062 + 0x6028000A, // 0057 GETGBL R10 G10 + 0x5C2C0C00, // 0058 MOVE R11 R6 + 0x7C280200, // 0059 CALL R10 1 + 0x602C000A, // 005A GETGBL R11 G10 + 0x5C301200, // 005B MOVE R12 R9 + 0x7C2C0200, // 005C CALL R11 1 + 0x1828140B, // 005D LE R10 R10 R11 + 0x782A0001, // 005E JMPF R10 #0061 + 0x50280000, // 005F LDBOOL R10 0 0 + 0x80041400, // 0060 RET 1 R10 + 0x70020025, // 0061 JMP #0088 + 0x1C28110E, // 0062 EQ R10 R8 K14 + 0x782A000A, // 0063 JMPF R10 #006F + 0x6028000A, // 0064 GETGBL R10 G10 + 0x5C2C0C00, // 0065 MOVE R11 R6 + 0x7C280200, // 0066 CALL R10 1 + 0x602C000A, // 0067 GETGBL R11 G10 + 0x5C301200, // 0068 MOVE R12 R9 + 0x7C2C0200, // 0069 CALL R11 1 + 0x1428140B, // 006A LT R10 R10 R11 + 0x782A0001, // 006B JMPF R10 #006E + 0x50280000, // 006C LDBOOL R10 0 0 + 0x80041400, // 006D RET 1 R10 + 0x70020018, // 006E JMP #0088 + 0x1C28110F, // 006F EQ R10 R8 K15 + 0x782A000A, // 0070 JMPF R10 #007C + 0x6028000A, // 0071 GETGBL R10 G10 + 0x5C2C0C00, // 0072 MOVE R11 R6 + 0x7C280200, // 0073 CALL R10 1 + 0x602C000A, // 0074 GETGBL R11 G10 + 0x5C301200, // 0075 MOVE R12 R9 + 0x7C2C0200, // 0076 CALL R11 1 + 0x2828140B, // 0077 GE R10 R10 R11 + 0x782A0001, // 0078 JMPF R10 #007B + 0x50280000, // 0079 LDBOOL R10 0 0 + 0x80041400, // 007A RET 1 R10 + 0x7002000B, // 007B JMP #0088 + 0x1C281110, // 007C EQ R10 R8 K16 + 0x782A0009, // 007D JMPF R10 #0088 + 0x6028000A, // 007E GETGBL R10 G10 + 0x5C2C0C00, // 007F MOVE R11 R6 + 0x7C280200, // 0080 CALL R10 1 + 0x602C000A, // 0081 GETGBL R11 G10 + 0x5C301200, // 0082 MOVE R12 R9 + 0x7C2C0200, // 0083 CALL R11 1 + 0x2428140B, // 0084 GT R10 R10 R11 + 0x782A0001, // 0085 JMPF R10 #0088 + 0x50280000, // 0086 LDBOOL R10 0 0 + 0x80041400, // 0087 RET 1 R10 + 0x5C280600, // 0088 MOVE R10 R3 + 0x5C2C0C00, // 0089 MOVE R11 R6 + 0x94300B03, // 008A GETIDX R12 R5 K3 + 0x5C340200, // 008B MOVE R13 R1 + 0x7C280600, // 008C CALL R10 3 + 0x50280200, // 008D LDBOOL R10 1 0 + 0x80041400, // 008E RET 1 R10 }) ) ); /*******************************************************************/ -/******************************************************************** - // tasmota.wire_scan(addr:int [, index:int]) -> wire1 or wire2 or nil - // scan for the first occurrence of the addr, starting with bus1 then bus2 - // optional: skip if index is disabled via I2CEnable - "def wire_scan(addr,idx) " - // skip if the I2C index is disabled - "if idx != nil && !self.i2c_enabled(idx) return nil end " - "if self.wire1.detect(addr) return self.wire1 end " - "if self.wire2.detect(addr) return self.wire2 end " - "return nil " - "end " -********************************************************************/ -/******************************************************************** -** Solidified function: wire_scan -********************************************************************/ - -be_define_local_const_str(wire_scan_str_name, "wire_scan", -1623691416, 9); -be_define_local_const_str(wire_scan_str_source, "string", 398550328, 6); -be_define_local_const_str(wire_scan_str_0, "i2c_enabled", 218388101, 11); -be_define_local_const_str(wire_scan_str_1, "wire1", -1082245877, 5); -be_define_local_const_str(wire_scan_str_2, "detect", 8884370, 6); -be_define_local_const_str(wire_scan_str_3, "wire2", -1065468258, 5); - -static const bvalue wire_scan_ktab[4] = { - { { .s=be_local_const_str(wire_scan_str_0) }, BE_STRING}, - { { .s=be_local_const_str(wire_scan_str_1) }, BE_STRING}, - { { .s=be_local_const_str(wire_scan_str_2) }, BE_STRING}, - { { .s=be_local_const_str(wire_scan_str_3) }, BE_STRING}, -}; - -static const uint32_t wire_scan_code[25] = { - 0x4C0C0000, // 0000 LDNIL 3 - 0x200C0403, // 0001 NE R3 R2 R3 - 0x780E0005, // 0002 JMPF R3 #0009 - 0x8C0C0100, // 0003 GETMET R3 R0 R256 - 0x5C140400, // 0004 MOVE R5 R2 - 0x7C0C0400, // 0005 CALL R3 2 - 0x740E0001, // 0006 JMPT R3 #0009 - 0x4C0C0000, // 0007 LDNIL 3 - 0x80040600, // 0008 RET 1 R3 - 0x880C0101, // 0009 GETMBR R3 R0 R257 - 0x8C0C0702, // 000A GETMET R3 R3 R258 - 0x5C140200, // 000B MOVE R5 R1 - 0x7C0C0400, // 000C CALL R3 2 - 0x780E0001, // 000D JMPF R3 #0010 - 0x880C0101, // 000E GETMBR R3 R0 R257 - 0x80040600, // 000F RET 1 R3 - 0x880C0103, // 0010 GETMBR R3 R0 R259 - 0x8C0C0702, // 0011 GETMET R3 R3 R258 - 0x5C140200, // 0012 MOVE R5 R1 - 0x7C0C0400, // 0013 CALL R3 2 - 0x780E0001, // 0014 JMPF R3 #0017 - 0x880C0103, // 0015 GETMBR R3 R0 R259 - 0x80040600, // 0016 RET 1 R3 - 0x4C0C0000, // 0017 LDNIL 3 - 0x80040600, // 0018 RET 1 R3 -}; - -static const bproto wire_scan_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 6, // nstack - 0, // nupvals - 3, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &wire_scan_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &wire_scan_code, // code - be_local_const_str(wire_scan_str_name), // name - 25, // codesize - 4, // nconst - 0, // nproto - be_local_const_str(wire_scan_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure wire_scan_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &wire_scan_proto, // proto - { NULL } // upvals -}; - -/*******************************************************************/ - -/******************************************************************** - def time_str(time) - import string - var tm = self.time_dump(time) - return string.format("%04d-%02d-%02dT%02d:%02d:%02d", tm['year'], tm['month'], tm['day'], tm['hour'], tm['min'], tm['sec']) - end -********************************************************************/ -/******************************************************************** -** Solidified function: time_str -********************************************************************/ -be_local_closure(time_str, /* name */ - be_nested_proto( - 13, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - be_nested_string("string", 398550328, 6), - be_nested_string("time_dump", -964556549, 9), - be_nested_string("format", -1180859054, 6), - be_nested_string("%04d-%02d-%02dT%02d:%02d:%02d", -869438695, 29), - be_nested_string("year", -1367388900, 4), - be_nested_string("month", -696646139, 5), - be_nested_string("day", -464576003, 3), - be_nested_string("hour", -1241306097, 4), - be_nested_string("min", -913357481, 3), - be_nested_string("sec", -1155074638, 3), - }), - (be_nested_const_str("time_str", -1681139684, 8)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[14]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 R256 - 0x8C0C0101, // 0001 GETMET R3 R0 R257 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100502, // 0004 GETMET R4 R2 R258 - 0x58180003, // 0005 LDCONST R6 K3 - 0x941C0704, // 0006 GETIDX R7 R3 R260 - 0x94200705, // 0007 GETIDX R8 R3 R261 - 0x94240706, // 0008 GETIDX R9 R3 R262 - 0x94280707, // 0009 GETIDX R10 R3 R263 - 0x942C0708, // 000A GETIDX R11 R3 R264 - 0x94300709, // 000B GETIDX R12 R3 R265 - 0x7C101000, // 000C CALL R4 8 - 0x80040800, // 000D RET 1 R4 - }) - ) -); -/*******************************************************************/ - -/******************************************************************** - // cmd high-level function - "def cmd(command) " - "import json " - "var ret = self._cmd(command) " - "var j = json.load(ret) " - "if type(j) == 'instance' " - "return j " - "else " - "return {'response':j} " - "end " - "end " -********************************************************************/ -/******************************************************************** -** Solidified function: cmd -********************************************************************/ - -be_define_local_const_str(cmd_str_name, "cmd", -158181397, 3); -be_define_local_const_str(cmd_str_source, "string", 398550328, 6); -be_define_local_const_str(cmd_str_0, "json", 916562499, 4); -be_define_local_const_str(cmd_str_1, "_cmd", -875145154, 4); -be_define_local_const_str(cmd_str_2, "load", -435725847, 4); -be_define_local_const_str(cmd_str_3, "instance", 193386898, 8); -be_define_local_const_str(cmd_str_4, "response", 1499316702, 8); - -static const bvalue cmd_ktab[5] = { - { { .s=be_local_const_str(cmd_str_0) }, BE_STRING}, - { { .s=be_local_const_str(cmd_str_1) }, BE_STRING}, - { { .s=be_local_const_str(cmd_str_2) }, BE_STRING}, - { { .s=be_local_const_str(cmd_str_3) }, BE_STRING}, - { { .s=be_local_const_str(cmd_str_4) }, BE_STRING}, -}; - -static const uint32_t cmd_code[19] = { - 0xA40A0000, // 0000 IMPORT R2 R256 - 0x8C0C0101, // 0001 GETMET R3 R0 R257 - 0x5C140200, // 0002 MOVE R5 R1 - 0x7C0C0400, // 0003 CALL R3 2 - 0x8C100502, // 0004 GETMET R4 R2 R258 - 0x5C180600, // 0005 MOVE R6 R3 - 0x7C100400, // 0006 CALL R4 2 - 0x60140015, // 0007 GETGBL R5 G21 - 0x5C180800, // 0008 MOVE R6 R4 - 0x7C140200, // 0009 CALL R5 1 - 0x1C140B03, // 000A EQ R5 R5 R259 - 0x78160001, // 000B JMPF R5 #000E - 0x80040800, // 000C RET 1 R4 - 0x70020003, // 000D JMP #0012 - 0x6014000B, // 000E GETGBL R5 G11 - 0x7C140000, // 000F CALL R5 0 - 0x98160804, // 0010 SETIDX R5 R260 R4 - 0x80040A00, // 0011 RET 1 R5 - 0x80000000, // 0012 RET 0 R0 -}; - -static const bproto cmd_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 7, // nstack - 0, // nupvals - 2, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &cmd_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &cmd_code, // code - be_local_const_str(cmd_str_name), // name - 19, // codesize - 5, // nconst - 0, // nproto - be_local_const_str(cmd_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure cmd_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &cmd_proto, // proto - { NULL } // upvals -}; - -/*******************************************************************/ - - -/******************************************************************** - "def get_light(l) " - "print('tasmota.get_light() is deprecated, use light.get()') " - "import light " - "if l != nil " - "return light.get(l) " - "else " - "return light.get() " - "end " - "end " -********************************************************************/ -/******************************************************************** -** Solidified function: get_light -********************************************************************/ - -be_define_local_const_str(get_light_str_name, "get_light", 381930476, 9); -be_define_local_const_str(get_light_str_source, "string", 398550328, 6); -be_define_local_const_str(get_light_str_0, "tasmota.get_light() is deprecated, use light.get()", -769213649, 50); -be_define_local_const_str(get_light_str_1, "light", -493019601, 5); -be_define_local_const_str(get_light_str_2, "get", 1410115415, 3); - -static const bvalue get_light_ktab[3] = { - { { .s=be_local_const_str(get_light_str_0) }, BE_STRING}, - { { .s=be_local_const_str(get_light_str_1) }, BE_STRING}, - { { .s=be_local_const_str(get_light_str_2) }, BE_STRING}, -}; - -static const uint32_t get_light_code[16] = { - 0x6008000F, // 0000 GETGBL R2 G15 - 0x580C0000, // 0001 LDCONST R3 K0 - 0x7C080200, // 0002 CALL R2 1 - 0xA40A0200, // 0003 IMPORT R2 R257 - 0x4C0C0000, // 0004 LDNIL 3 - 0x200C0203, // 0005 NE R3 R1 R3 - 0x780E0004, // 0006 JMPF R3 #000C - 0x8C0C0502, // 0007 GETMET R3 R2 R258 - 0x5C140200, // 0008 MOVE R5 R1 - 0x7C0C0400, // 0009 CALL R3 2 - 0x80040600, // 000A RET 1 R3 - 0x70020002, // 000B JMP #000F - 0x8C0C0502, // 000C GETMET R3 R2 R258 - 0x7C0C0200, // 000D CALL R3 1 - 0x80040600, // 000E RET 1 R3 - 0x80000000, // 000F RET 0 R0 -}; - -static const bproto get_light_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 6, // nstack - 0, // nupvals - 2, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &get_light_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &get_light_code, // code - be_local_const_str(get_light_str_name), // name - 16, // codesize - 3, // nconst - 0, // nproto - be_local_const_str(get_light_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure get_light_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &get_light_proto, // proto - { NULL } // upvals -}; - -/*******************************************************************/ - -/******************************************************************** - - // set_light and get_light deprecetaion - "def set_light(v,l) " - "print('tasmota.set_light() is deprecated, use light.set()') " - "import light " - "if l != nil " - "return light.set(v,l) " - "else " - "return light.set(v) " - "end " - "end " - -********************************************************************/ -/******************************************************************** -** Solidified function: set_light -********************************************************************/ - -be_define_local_const_str(set_light_str_name, "set_light", -1118891144, 9); -be_define_local_const_str(set_light_str_source, "string", 398550328, 6); -be_define_local_const_str(set_light_str_0, "tasmota.set_light() is deprecated, use light.set()", 2124937871, 50); -be_define_local_const_str(set_light_str_1, "light", -493019601, 5); -be_define_local_const_str(set_light_str_2, "set", -970520829, 3); - -static const bvalue set_light_ktab[3] = { - { { .s=be_local_const_str(set_light_str_0) }, BE_STRING}, - { { .s=be_local_const_str(set_light_str_1) }, BE_STRING}, - { { .s=be_local_const_str(set_light_str_2) }, BE_STRING}, -}; - -static const uint32_t set_light_code[18] = { - 0x600C000F, // 0000 GETGBL R3 G15 - 0x58100000, // 0001 LDCONST R4 K0 - 0x7C0C0200, // 0002 CALL R3 1 - 0xA40E0200, // 0003 IMPORT R3 R257 - 0x4C100000, // 0004 LDNIL 4 - 0x20100404, // 0005 NE R4 R2 R4 - 0x78120005, // 0006 JMPF R4 #000D - 0x8C100702, // 0007 GETMET R4 R3 R258 - 0x5C180200, // 0008 MOVE R6 R1 - 0x5C1C0400, // 0009 MOVE R7 R2 - 0x7C100600, // 000A CALL R4 3 - 0x80040800, // 000B RET 1 R4 - 0x70020003, // 000C JMP #0011 - 0x8C100702, // 000D GETMET R4 R3 R258 - 0x5C180200, // 000E MOVE R6 R1 - 0x7C100400, // 000F CALL R4 2 - 0x80040800, // 0010 RET 1 R4 - 0x80000000, // 0011 RET 0 R0 -}; - -static const bproto set_light_proto = { - NULL, // bgcobject *next - 8, // type - 0x08, // marked - 8, // nstack - 0, // nupvals - 3, // argc - 0, // varg - NULL, // bgcobject *gray - NULL, // bupvaldesc *upvals - (bvalue*) &set_light_ktab, // ktab - NULL, // bproto **ptab - (binstruction*) &set_light_code, // code - be_local_const_str(set_light_str_name), // name - 18, // codesize - 3, // nconst - 0, // nproto - be_local_const_str(set_light_str_source), // source -#if BE_DEBUG_RUNTIME_INFO /* debug information */ - NULL, // lineinfo - 0, // nlineinfo -#endif -#if BE_DEBUG_VAR_INFO - NULL, // varinfo - 0, // nvarinfo -#endif -}; - -static const bclosure set_light_closure = { - NULL, // bgcobject *next - 36, // type - 0x08, // marked - 0, // nupvals - NULL, // bgcobject *gray - (bproto*) &set_light_proto, // proto - { NULL } // upvals -}; - -/*******************************************************************/ /******************************************************************** ** Solidified function: cb_dispatch @@ -2048,44 +1282,196 @@ be_local_closure(cb_dispatch, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 3]) { /* constants */ - be_nested_string("_cb", -251666929, 3), - be_const_int(0), - be_nested_string("find", -1108310694, 4), + /* K0 */ be_nested_string("_cb", -251666929, 3), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("find", -1108310694, 4), }), (be_nested_const_str("cb_dispatch", 1741510499, 11)), - (be_nested_const_str("input", -103256197, 5)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), ( &(const binstruction[20]) { /* code */ - 0x88180100, // 0000 GETMBR R6 R0 R256 - 0x4C1C0000, // 0001 LDNIL 7 - 0x1C180C07, // 0002 EQ R6 R6 R7 - 0x781A0000, // 0003 JMPF R6 #0005 - 0x80060200, // 0004 RET 1 R257 - 0x88180100, // 0005 GETMBR R6 R0 R256 - 0x8C180D02, // 0006 GETMET R6 R6 R258 - 0x5C200200, // 0007 MOVE R8 R1 - 0x7C180400, // 0008 CALL R6 2 - 0x4C1C0000, // 0009 LDNIL 7 - 0x201C0C07, // 000A NE R7 R6 R7 - 0x781E0006, // 000B JMPF R7 #0013 - 0x5C1C0C00, // 000C MOVE R7 R6 - 0x5C200400, // 000D MOVE R8 R2 - 0x5C240600, // 000E MOVE R9 R3 - 0x5C280800, // 000F MOVE R10 R4 - 0x5C2C0A00, // 0010 MOVE R11 R5 - 0x7C1C0800, // 0011 CALL R7 4 - 0x80040E00, // 0012 RET 1 R7 - 0x80060200, // 0013 RET 1 R257 + 0x88180100, // 0000 GETMBR R6 R0 K0 + 0x4C1C0000, // 0001 LDNIL R7 + 0x1C180C07, // 0002 EQ R6 R6 R7 + 0x781A0000, // 0003 JMPF R6 #0005 + 0x80060200, // 0004 RET 1 K1 + 0x88180100, // 0005 GETMBR R6 R0 K0 + 0x8C180D02, // 0006 GETMET R6 R6 K2 + 0x5C200200, // 0007 MOVE R8 R1 + 0x7C180400, // 0008 CALL R6 2 + 0x4C1C0000, // 0009 LDNIL R7 + 0x201C0C07, // 000A NE R7 R6 R7 + 0x781E0006, // 000B JMPF R7 #0013 + 0x5C1C0C00, // 000C MOVE R7 R6 + 0x5C200400, // 000D MOVE R8 R2 + 0x5C240600, // 000E MOVE R9 R3 + 0x5C280800, // 000F MOVE R10 R4 + 0x5C2C0A00, // 0010 MOVE R11 R5 + 0x7C1C0800, // 0011 CALL R7 4 + 0x80040E00, // 0012 RET 1 R7 + 0x80060200, // 0013 RET 1 K1 }) ) ); /*******************************************************************/ + /******************************************************************** -** Solidified function: gen_cb +** Solidified function: gc ********************************************************************/ -be_local_closure(gen_cb, /* name */ +be_local_closure(gc, /* name */ be_nested_proto( - 7, /* nstack */ + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("gc", 1042313471, 2), + /* K1 */ be_nested_string("collect", -1895928271, 7), + /* K2 */ be_nested_string("allocated", 429986098, 9), + }), + (be_nested_const_str("gc", 1042313471, 2)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[ 6]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080301, // 0001 GETMET R2 R1 K1 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x7C080200, // 0004 CALL R2 1 + 0x80040400, // 0005 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: event +********************************************************************/ +be_local_closure(event, /* name */ + be_nested_proto( + 19, /* nstack */ + 6, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_string("introspect", 164638290, 10), + /* K1 */ be_nested_string("every_50ms", -1911083288, 10), + /* K2 */ be_nested_string("run_deferred", 371594696, 12), + /* K3 */ be_nested_string("cmd", -158181397, 3), + /* K4 */ be_nested_string("exec_cmd", 493567399, 8), + /* K5 */ be_nested_string("rule", -64077613, 4), + /* K6 */ be_nested_string("exec_rules", 1445221092, 10), + /* K7 */ be_nested_string("gc", 1042313471, 2), + /* K8 */ be_nested_string("_drivers", -1034638311, 8), + /* K9 */ be_nested_string("get", 1410115415, 3), + /* K10 */ be_nested_string("function", -1630125495, 8), + /* K11 */ be_nested_string("string", 398550328, 6), + /* K12 */ be_nested_string("format", -1180859054, 6), + /* K13 */ be_nested_string("BRY: Exception> '%s' - %s", -2047976332, 25), + /* K14 */ be_nested_string("stop_iteration", -121173395, 14), + }), + (be_nested_const_str("event", -30355297, 5)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[79]) { /* code */ + 0xA41A0000, // 0000 IMPORT R6 K0 + 0x1C1C0301, // 0001 EQ R7 R1 K1 + 0x781E0001, // 0002 JMPF R7 #0005 + 0x8C1C0102, // 0003 GETMET R7 R0 K2 + 0x7C1C0200, // 0004 CALL R7 1 + 0x1C1C0303, // 0005 EQ R7 R1 K3 + 0x781E0006, // 0006 JMPF R7 #000E + 0x8C1C0104, // 0007 GETMET R7 R0 K4 + 0x5C240400, // 0008 MOVE R9 R2 + 0x5C280600, // 0009 MOVE R10 R3 + 0x5C2C0800, // 000A MOVE R11 R4 + 0x7C1C0800, // 000B CALL R7 4 + 0x80040E00, // 000C RET 1 R7 + 0x7002003F, // 000D JMP #004E + 0x1C1C0305, // 000E EQ R7 R1 K5 + 0x781E0004, // 000F JMPF R7 #0015 + 0x8C1C0106, // 0010 GETMET R7 R0 K6 + 0x5C240800, // 0011 MOVE R9 R4 + 0x7C1C0400, // 0012 CALL R7 2 + 0x80040E00, // 0013 RET 1 R7 + 0x70020038, // 0014 JMP #004E + 0x1C1C0307, // 0015 EQ R7 R1 K7 + 0x781E0003, // 0016 JMPF R7 #001B + 0x8C1C0107, // 0017 GETMET R7 R0 K7 + 0x7C1C0200, // 0018 CALL R7 1 + 0x80040E00, // 0019 RET 1 R7 + 0x70020032, // 001A JMP #004E + 0x881C0108, // 001B GETMBR R7 R0 K8 + 0x781E0030, // 001C JMPF R7 #004E + 0x601C0010, // 001D GETGBL R7 G16 + 0x88200108, // 001E GETMBR R8 R0 K8 + 0x7C1C0200, // 001F CALL R7 1 + 0xA8020027, // 0020 EXBLK 0 #0049 + 0x5C200E00, // 0021 MOVE R8 R7 + 0x7C200000, // 0022 CALL R8 0 + 0x8C240D09, // 0023 GETMET R9 R6 K9 + 0x5C2C1000, // 0024 MOVE R11 R8 + 0x5C300200, // 0025 MOVE R12 R1 + 0x7C240600, // 0026 CALL R9 3 + 0x60280004, // 0027 GETGBL R10 G4 + 0x5C2C1200, // 0028 MOVE R11 R9 + 0x7C280200, // 0029 CALL R10 1 + 0x1C28150A, // 002A EQ R10 R10 K10 + 0x782A001B, // 002B JMPF R10 #0048 + 0xA802000E, // 002C EXBLK 0 #003C + 0x5C281200, // 002D MOVE R10 R9 + 0x5C2C1000, // 002E MOVE R11 R8 + 0x5C300400, // 002F MOVE R12 R2 + 0x5C340600, // 0030 MOVE R13 R3 + 0x5C380800, // 0031 MOVE R14 R4 + 0x5C3C0A00, // 0032 MOVE R15 R5 + 0x7C280A00, // 0033 CALL R10 5 + 0x502C0200, // 0034 LDBOOL R11 1 0 + 0x1C2C140B, // 0035 EQ R11 R10 R11 + 0x782E0002, // 0036 JMPF R11 #003A + 0x502C0200, // 0037 LDBOOL R11 1 0 + 0xA8040002, // 0038 EXBLK 1 2 + 0x80041600, // 0039 RET 1 R11 + 0xA8040001, // 003A EXBLK 1 1 + 0x7002000B, // 003B JMP #0048 + 0xAC280002, // 003C CATCH R10 0 2 + 0x70020008, // 003D JMP #0047 + 0xA4321600, // 003E IMPORT R12 K11 + 0x60340001, // 003F GETGBL R13 G1 + 0x8C38190C, // 0040 GETMET R14 R12 K12 + 0x5840000D, // 0041 LDCONST R16 K13 + 0x5C441400, // 0042 MOVE R17 R10 + 0x5C481600, // 0043 MOVE R18 R11 + 0x7C380800, // 0044 CALL R14 4 + 0x7C340200, // 0045 CALL R13 1 + 0x70020000, // 0046 JMP #0048 + 0xB0080000, // 0047 RAISE 2 R0 R0 + 0x7001FFD7, // 0048 JMP #0021 + 0x581C000E, // 0049 LDCONST R7 K14 + 0xAC1C0200, // 004A CATCH R7 1 0 + 0xB0080000, // 004B RAISE 2 R0 R0 + 0x501C0000, // 004C LDBOOL R7 0 0 + 0x80040E00, // 004D RET 1 R7 + 0x80000000, // 004E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_cmd +********************************************************************/ +be_local_closure(remove_cmd, /* name */ + be_nested_proto( + 5, /* nstack */ 2, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -2093,52 +1479,76 @@ be_local_closure(gen_cb, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - be_nested_string("_cb", -251666929, 3), - be_const_int(0), - be_nested_string("find", -1108310694, 4), - be_nested_string("_get_cb", 1448849122, 7), - be_nested_string("stop_iteration", -121173395, 14), - be_nested_string("internal_error", -1775809127, 14), - be_nested_string("No callback available", 633786138, 21), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("_ccmd", -2131545883, 5), + /* K1 */ be_nested_string("remove", -611183107, 6), }), - (be_nested_const_str("gen_cb", -1049739745, 6)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[34]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 R256 - 0x4C0C0000, // 0001 LDNIL 3 - 0x1C080403, // 0002 EQ R2 R2 R3 - 0x780A0002, // 0003 JMPF R2 #0007 - 0x6008000B, // 0004 GETGBL R2 G11 - 0x7C080000, // 0005 CALL R2 0 - 0x90020002, // 0006 SETMBR R0 R256 R2 - 0x60080000, // 0007 GETGBL R2 G0 - 0x540E0012, // 0008 LDINT R3 19 - 0x400E0203, // 0009 CONNECT R3 R257 R3 - 0x7C080200, // 000A CALL R2 1 - 0xA8020010, // 000B EXBLK 0 #001D - 0x5C0C0400, // 000C MOVE R3 R2 - 0x7C0C0000, // 000D CALL R3 0 - 0x88100100, // 000E GETMBR R4 R0 R256 - 0x8C100902, // 000F GETMET R4 R4 R258 - 0x5C180600, // 0010 MOVE R6 R3 - 0x7C100400, // 0011 CALL R4 2 - 0x4C140000, // 0012 LDNIL 5 - 0x1C100805, // 0013 EQ R4 R4 R5 - 0x78120006, // 0014 JMPF R4 #001C - 0x88100100, // 0015 GETMBR R4 R0 R256 - 0x98100601, // 0016 SETIDX R4 R3 R1 - 0x8C100103, // 0017 GETMET R4 R0 R259 - 0x5C180600, // 0018 MOVE R6 R3 - 0x7C100400, // 0019 CALL R4 2 - 0xA8040001, // 001A EXBLK 1 1 - 0x80040800, // 001B RET 1 R4 - 0x7001FFEE, // 001C JMP #000C - 0x58080004, // 001D LDCONST R2 K4 - 0xAC080200, // 001E CATCH R2 1 0 - 0xB0080000, // 001F RAISE 2 R0 R0 - 0xB0060B06, // 0020 RAISE 1 R261 R262 - 0x80000000, // 0021 RET 0 R0 + (be_nested_const_str("remove_cmd", -462651594, 10)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[ 7]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0003, // 0001 JMPF R2 #0006 + 0x88080100, // 0002 GETMBR R2 R0 K0 + 0x8C080501, // 0003 GETMET R2 R2 K1 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: exec_cmd +********************************************************************/ +be_local_closure(exec_cmd, /* name */ + be_nested_proto( + 12, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_string("_ccmd", -2131545883, 5), + /* K1 */ be_nested_string("json", 916562499, 4), + /* K2 */ be_nested_string("load", -435725847, 4), + /* K3 */ be_nested_string("find_key_i", 850136726, 10), + /* K4 */ be_nested_string("resolvecmnd", 993361485, 11), + }), + (be_nested_const_str("exec_cmd", 493567399, 8)), + (be_nested_const_str("Tasmota.be", 825809411, 10)), + ( &(const binstruction[27]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x78120016, // 0001 JMPF R4 #0019 + 0xA4120200, // 0002 IMPORT R4 K1 + 0x8C140902, // 0003 GETMET R5 R4 K2 + 0x5C1C0600, // 0004 MOVE R7 R3 + 0x7C140400, // 0005 CALL R5 2 + 0x8C180103, // 0006 GETMET R6 R0 K3 + 0x88200100, // 0007 GETMBR R8 R0 K0 + 0x5C240200, // 0008 MOVE R9 R1 + 0x7C180600, // 0009 CALL R6 3 + 0x4C1C0000, // 000A LDNIL R7 + 0x201C0C07, // 000B NE R7 R6 R7 + 0x781E000B, // 000C JMPF R7 #0019 + 0x8C1C0104, // 000D GETMET R7 R0 K4 + 0x5C240C00, // 000E MOVE R9 R6 + 0x7C1C0400, // 000F CALL R7 2 + 0x881C0100, // 0010 GETMBR R7 R0 K0 + 0x941C0E06, // 0011 GETIDX R7 R7 R6 + 0x5C200C00, // 0012 MOVE R8 R6 + 0x5C240400, // 0013 MOVE R9 R2 + 0x5C280600, // 0014 MOVE R10 R3 + 0x5C2C0A00, // 0015 MOVE R11 R5 + 0x7C1C0800, // 0016 CALL R7 4 + 0x501C0200, // 0017 LDBOOL R7 1 0 + 0x80040E00, // 0018 RET 1 R7 + 0x50100000, // 0019 LDBOOL R4 0 0 + 0x80040800, // 001A RET 1 R4 }) ) ); diff --git a/lib/libesp32/Berry/default/be_timer_class.c b/lib/libesp32/Berry/default/be_timer_class.c index 4ee9d0ade..e6c495851 100644 --- a/lib/libesp32/Berry/default/be_timer_class.c +++ b/lib/libesp32/Berry/default/be_timer_class.c @@ -19,35 +19,35 @@ be_local_closure(tostring, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 6]) { /* constants */ - be_nested_string("string", 398550328, 6), /* R256 - K0 */ - be_nested_string("format", -1180859054, 6), /* R257 - K1 */ - be_nested_string("= 1 && be_isfunction(vm, 1)) { + size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ + /* test if last argument is a list */ + + if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { + int32_t list_size = be_data_size(vm, top + 1); + + if (list_size > 0) { + be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ + for (int i = 0; i < list_size; i++) { + be_pushnil(vm); + } + be_moveto(vm, top + 1, top + 1 + list_size); + be_moveto(vm, top, top + list_size); + + be_refpush(vm, -2); + be_pushiter(vm, -1); + while (be_iter_hasnext(vm, -2)) { + be_iter_next(vm, -2); + be_moveto(vm, -1, top); + top++; + be_pop(vm, 1); + } + be_pop(vm, 1); /* remove iterator */ + be_refpop(vm); + } + be_pop(vm, 2); + arg_count = arg_count - 1 + list_size; + } + /* actual call */ + be_call(vm, arg_count); + /* remove args */ + be_pop(vm, arg_count); + /* return value */ + + be_return(vm); + } + be_raise(vm, "value_error", "first argument must be a function"); + be_return_nil(vm); +} + static int l_str(bvm *vm) { if (be_top(vm)) { @@ -407,6 +456,12 @@ void be_load_baselib(bvm *vm) be_regfunc(vm, "isinstance", l_isinstance); be_regfunc(vm, "__iterator__", l_iterator); } + +/* call must be added later to respect order of builtins */ +void be_load_baselib_call(bvm *vm) +{ + be_regfunc(vm, "call", l_call); +} #else extern const bclass be_class_list; extern const bclass be_class_map; @@ -437,6 +492,7 @@ vartab m_builtin (scope: local) { map, class(be_class_map) range, class(be_class_range) bytes, class(be_class_bytes) + call, func(l_call) } @const_object_info_end */ #include "../generate/be_fixed_m_builtin.h" diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index 5254b9791..fc9dac898 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -76,62 +76,12 @@ static int m_setmember(bvm *vm) be_return_nil(vm); } -/* call a function with variable number of arguments */ -/* first argument is a callable object (function, closure, native function, native closure) */ -/* then all subsequent arguments are pushed except the last one */ -/* If the last argument is a 'list', then all elements are pushed as arguments */ -/* otherwise the last argument is pushed as well */ -static int m_vcall(bvm *vm) -{ - int top = be_top(vm); - if (top >= 1 && be_isfunction(vm, 1)) { - size_t arg_count = top - 1; /* we have at least 'top - 1' arguments */ - /* test if last argument is a list */ - - if (top > 1 && be_isinstance(vm, top) && be_getmember(vm, top, ".p") && be_islist(vm, top + 1)) { - int32_t list_size = be_data_size(vm, top + 1); - - if (list_size > 0) { - be_stack_require(vm, list_size + 3); /* make sure we don't overflow the stack */ - for (int i = 0; i < list_size; i++) { - be_pushnil(vm); - } - be_moveto(vm, top + 1, top + 1 + list_size); - be_moveto(vm, top, top + list_size); - - be_refpush(vm, -2); - be_pushiter(vm, -1); - while (be_iter_hasnext(vm, -2)) { - be_iter_next(vm, -2); - be_moveto(vm, -1, top); - top++; - be_pop(vm, 1); - } - be_pop(vm, 1); /* remove iterator */ - be_refpop(vm); - } - be_pop(vm, 2); - arg_count = arg_count - 1 + list_size; - } - /* actual call */ - be_call(vm, arg_count); - /* remove args */ - be_pop(vm, arg_count); - /* return value */ - - be_return(vm); - } - be_raise(vm, "value_error", "first argument must be a function"); - be_return_nil(vm); -} - #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(introspect) { be_native_module_function("members", m_attrlist), be_native_module_function("get", m_findmember), be_native_module_function("set", m_setmember), - be_native_module_function("vcall", m_vcall), }; be_define_native_module(introspect, NULL); @@ -142,7 +92,6 @@ module introspect (scope: global, depend: BE_USE_INTROSPECT_MODULE) { get, func(m_findmember) set, func(m_setmember) - vcall, func(m_vcall) } @const_object_info_end */ #include "../generate/be_fixed_introspect.h" diff --git a/lib/libesp32/Berry/src/be_libs.c b/lib/libesp32/Berry/src/be_libs.c index a4c774df4..0c55717f3 100644 --- a/lib/libesp32/Berry/src/be_libs.c +++ b/lib/libesp32/Berry/src/be_libs.c @@ -8,6 +8,7 @@ #include "be_libs.h" extern void be_load_baselib(bvm *vm); +extern void be_load_baselib_call(bvm *vm); extern void be_load_listlib(bvm *vm); extern void be_load_maplib(bvm *vm); extern void be_load_rangelib(bvm *vm); @@ -23,5 +24,6 @@ void be_loadlibs(bvm *vm) be_load_rangelib(vm); be_load_filelib(vm); be_load_byteslib(vm); + be_load_baselib_call(vm); #endif } diff --git a/lib/libesp32/Berry/tools/coc/block_builder.cpp b/lib/libesp32/Berry/tools/coc/block_builder.cpp index 9cf05be95..acea6777c 100755 --- a/lib/libesp32/Berry/tools/coc/block_builder.cpp +++ b/lib/libesp32/Berry/tools/coc/block_builder.cpp @@ -33,10 +33,12 @@ block_builder::block_builder(const object_block *object, const macro_table *macr m_strtab.push_back(it->second); } - for (auto i : object->data) { - if (i.second.depend.empty() || macro->query(i.second.depend)) { - m_block.data[i.first] = i.second.value; - m_strtab.push_back(i.first); + for (auto key : object->data_ordered) { + auto second = object->data.at(key); + if (second.depend.empty() || macro->query(second.depend)) { + m_block.data[key] = second.value; + m_strtab.push_back(key); + m_block.data_ordered.push_back(key); /* record insertion order */ } } } @@ -106,10 +108,9 @@ std::string block_builder::vartab_tostring(const block &block) idxblk = block; idxblk.data.clear(); - for (auto it : block.data) { - varvec.push_back(it.second); - it.second = "int(" + std::to_string(index++) + ")"; - idxblk.data.insert(it); + for (auto key : block.data_ordered) { + varvec.push_back(block.data.at(key)); + idxblk.data[key] = "int(" + std::to_string(index++) + ")"; } ostr << map_tostring(idxblk, block.name + "_map", true) << std::endl; diff --git a/lib/libesp32/Berry/tools/coc/block_builder.h b/lib/libesp32/Berry/tools/coc/block_builder.h index 7eb82bd3e..1a45ada3e 100755 --- a/lib/libesp32/Berry/tools/coc/block_builder.h +++ b/lib/libesp32/Berry/tools/coc/block_builder.h @@ -28,6 +28,7 @@ private: std::string name; std::map attr; std::map data; + std::vector data_ordered; /* used to retrieve in insertion order */ }; std::string block_tostring(const block &block); diff --git a/lib/libesp32/Berry/tools/coc/coc_parser.cpp b/lib/libesp32/Berry/tools/coc/coc_parser.cpp index f1e86ecb5..2bbd69965 100644 --- a/lib/libesp32/Berry/tools/coc/coc_parser.cpp +++ b/lib/libesp32/Berry/tools/coc/coc_parser.cpp @@ -186,4 +186,5 @@ void coc_parser::parse_body_item(object_block *object) if (parse_char_continue(',')) value.depend = parse_tonewline(); object->data[key] = value; + object->data_ordered.push_back(key); } diff --git a/lib/libesp32/Berry/tools/coc/object_block.h b/lib/libesp32/Berry/tools/coc/object_block.h index 474545457..c437f2b62 100644 --- a/lib/libesp32/Berry/tools/coc/object_block.h +++ b/lib/libesp32/Berry/tools/coc/object_block.h @@ -20,6 +20,7 @@ struct object_block { std::string name; std::map attr; std::map data; + std::vector data_ordered; /* preserve order of keys */ }; #endif diff --git a/lib/libesp32/Berry/tools/grammar/berry.bytecode b/lib/libesp32/Berry/tools/grammar/berry.bytecode index 2c265fb5c..2d71dde22 100755 --- a/lib/libesp32/Berry/tools/grammar/berry.bytecode +++ b/lib/libesp32/Berry/tools/grammar/berry.bytecode @@ -80,7 +80,7 @@ class: method_count: 4 -- number of method method_table: [ string -- method name - function -- method function body + function | nil -- method function body or nil (static member) if the first byte is null (which would be an empty func name) ](method_count) member_index_table -> [ string -- member name diff --git a/lib/libesp32/Berry/tools/grammar/berry.ebnf b/lib/libesp32/Berry/tools/grammar/berry.ebnf index dedf72a90..1ca79a763 100644 --- a/lib/libesp32/Berry/tools/grammar/berry.ebnf +++ b/lib/libesp32/Berry/tools/grammar/berry.ebnf @@ -17,7 +17,7 @@ func_body = '(' [arg_field {',' arg_field}] ')' block 'end'; arg_field = ['*'] ID; (* class define statement *) class_stmt = 'class' ID [':' ID] class_block 'end'; -class_block = {'var' ID {',' ID} | func_stmt}; +class_block = {'var' ID {',' ID} | 'static' ID ['=' expr] {',' ID ['=' expr] } | func_stmt}; import_stmt = 'import' (ID (['as' ID] | {',' ID}) | STRING 'as' ID); (* exceptional handling statement *) try_stmt = 'try' block except_block {except_block} 'end'; diff --git a/tasmota/berry/modules/partition.bec b/tasmota/berry/modules/partition.bec index 712196d537203ebf1a12c8c9b9340ee9b65e5f35..48ce1d2abfe586533deb754b170042627960b504 100644 GIT binary patch delta 5739 zcmaJ_Z){sv6+iF2`~LX(*?xI>b{xk|+{8`1H0{zh+e+81)hJBsS{TFHqRCt0wr+`N zlj3+=HZ0jg6Zk`h%3cLu01atKAO>{mK0JwNF!5&+XiV?{!MJLkUe^gB=4ufB0jCj5=?5B|J&a`1NPt=wg_3Fy`mDO`gPuJ>ewRP2@)AiE__Ai~T*QyN+ zS5KX*jtx;WCuYE~P(gW3cW2LdOwz{;kdUj2_i9ntvCZXtK z&<>GtLY9rZAhVGqV>#{JCB8LE*`yyQr<|iqSvBmVLbflHY&8?!zr=wZlu!C8-P*Lt zT_lmMkY+WNN$m<2YdhXAVx!(~HQU>=3~yB}On>ZA4XUoMH|jXNs*(4+dRix%!5V4r zL-n+j_8!xI3A1@S^`}LGsO)`5pV)PndoXE9~>C20JL zWVk}aU6M#(BhltILGneJ#7ibxiL7O^9X}ScH%;#iV`c{~0YObG>r1e+s?vG`Mn-$~ ze0BW`UM#j-3svduiyddJeL42kR*L8XrV(i`N@Ofz(M4IZJ4(#XkCC$>KvSc>guaGx z7n?IJ6&k(-C)nWrMA&zA^bN9?RmlZUuB@4^fDM`=>EK)zY!S|9{uVqZPr(Fhae+^V zg>a($KG4j8&Ewd7cQl!KSRf0u>4=tyXi3m^MzmB!vq8&8G$j<2=eIV7Fp!A`#Pxv< z2Xs54xBBSAptJh<#O*%13wrNl&qQ=SSQ>OmwF@%7n+oSL&5USdfFJ8YvUc1{B_A6Z3_d-FJfHl;9YirO!uxzl5t}k} zr9iI&o})_Hj>c-RM3ZFE#>Hpnjy(7e$?x)k)>1#>CTG9R%?I{}fP+1K3wGa5miYpc zhDFHqC0zgRza7vrpczd?!R5!DQ{bjSgc9;4MIE4-pn-1;b9#JaIlc@b1Gm-O65h_~j*R!ATQ+l({RHa*Gx zeBuUY@lLu6y#6!p15h^5j~wq$?pN@QdrP+WX!@IoFd_JgMceyt`rX|`Qy8;IEMr@o zRx}?YvnClYSRvW}R{;GxKfIKf!>&6baO zt0SLN6*_tBHt*GuhboW-dy*uu0{e#P%WT$`Q|_ihvoeh%KhuI;U}^#RIQp|{FuSec zN7bpZcIv4HFtw-mv)OxaNSqm9togF{a&}}K2?1gMdiBX3n<{|K)icaR-uu~M{7>B< z>gHNkWfOEHAudaB8$K1m`ijcBFqQ>;JdnXm`WmoCSKvkwKvIw9Jvurf8Q$Zg_o-p< z{@LhVY?}X!zS+WsIf!j-==D+7HJQL8(cH^;Bpc9<(VU=USrL{Yt2RYZ*^pzl0C*jh zaK9A8x~%B%Jjx?x6@Yv2K+~@L@BxN$H?LD>gUpOi8t@I?slk)=M0S(RLS+TQHaRf< z^SzMS0&}p5aE&P3Q-Q<2$Qp72fN8qeG}}=v_p%D_lQ9>{4gUWK%wt?*S}aK4M1Xxb zA3XHOV-xmZV&eU7>?91dgEfx{wzo6?+Kn;qLUpxzu2%Q{nm-;ThrRH^YLZC9A#ZEWHDNE7Pl~P9{ z6G%U|$mWc3YjQ4h^IQ{i<2+Xh=fbZ7J_~S1Eu;pCm|Jq$=_un%0g#OQ0tr=;ii^P{ zqhxVHMS?@+jXWvv#377uOQNgnEyvyKyn5hgA-@f0@1H*u^;>al(LY{abeF^>*x*juotjokJ)wZ~x2ei!ks zPM(TVzpKvFYYL*Zmf~J{=GGw# z=@`6l`+_FC%QFwg5JIc#7m#Rpf1CLl@ccpcB_;G%z-<9V!$vO?7ttNK7Y9?pBSn49 z`(A0Pr2|A6P`gS{P*_L8EXp#FF-6}7IZ>toY2%Rg=Q@Bp%Dyeuy{o#RrZ$sC6?v|0;dtwAG!Q0~gW$>e#bgtG| zs-AAFJW)d(I$*2c-|}3aP9K>))U(_-X5W$?imwCIeNR5SpD= zkWMA_&~@~f?W#z$$#HxW!7CL6vpg(|@&ogskma5Wh4COtR^fI-9E^A`1TaUjJHs6O zK*#wV-$f@KMaG{5*D{2QOyt3L4V*I5cgkzsM0o@YGV0QN#vhGtTMqs^hFjKE#>=>6 z7S~A;fLc*&0F_&nAaT^(yiA!!o?$yk7&DC>qo}6`7Sz=&o*HruA+kk{a?nK1Hxa(a z8RkW?LI#49k!@hn{dN~+FOBIK(|co1IF>9KW3hlH%)1?^xdh2d zEvPy8z%`!rT?mq9K|~3C`QjdI%GuHszGX6ADxmH6=)D03ut&3m$Ec2$gzvupJW)rNY^ zyEvZqN>fu;GY3cHX^oE60XB7%d)ukvQj{li4HNd*=vk7mG$@^BdqO1wjNPDr-*$eq7IJ<4wr*Saw-1{Z7q zfaUEweB=bDlR+h5*b9KG%KNAQ_>rlXScEf-1!SxNOa;gz@vqeFcIk#^PVeRXi1+Km w6DPxJm64AtEUtjK&<8-^bt9|@IR*zwFw%bD8nFt4H`M5XRH5pbu$-g+0kZuePXGV_ delta 5763 zcmaJ_Z){uFbwBUD`~L9piF~A~p?z!jReLsHd-Ou$t{JTdQ;je(-bNJa*sdY9syETiRZ#VAN z+XgK>|CFHD8tuAEFP;DNatwB;d3Skrv$@%}dG`8dt84M3v9YdDo$g!Bx|*%GH{aY+ zvqo#JepgX#uKbZ2YrXcWnyl2?@z`y7%x0zA+NgEgjqQ|@Q)}I=bz+fsYVB@X0q@jT z-&on)R`ORN-&N49#_AjOwxU>TZ*Hw^-fP8b)ZSdLD{fE`>=m%ttF6?VN^-NlrZ_bl zt-4ZyCmZ!{Jw9Nw(dnw)8=Z9sRkCo3jaugowQZ}GaBpumoAtIL?KB%}^|m7IY&BZL zZ9H!!B)!hPMtAj&Ql?v5X~M=hJ!W?s^?T|N-THR7)~?s$MWb0~j7{D6mJDict_%FD zt?Ah5&~o$cdUJVo#rySa8EWPpuhtr!tr|p{bPrd0`CL4n7qq_B*fgoxSiggVZo$fp zZez1$((BDy=Z-}k+(v6XMfd6}oq8LNAx|6OD|uRNuUDybMg1Ez~lpr)oBt{DDf9OXU4AqcNKF-qutlYsgh8z zY6|N_+3IcV(E|NG6vrO1lYZxybMhVSsj26|fykNHb*CuE#oahnUH(Y>(!N*7tEMSm znV~|(bo^^V_aBh%MV|aK{lbBHU?*&EH$%Z9iExQ5FES2VdtkQX%OB~l3WsVPSus}4 z6M*URLt|Cby*diXvJ zxTiUxFeXCMNI;O-;c{T5`-8*PXazX z*&ioxf`S3yWO%bW=Gw^&6>JYy5KCmnFdeXKG0<6JXP<_%g>WoQ3;U!OmxMOkCsA73 zr`6g{KqJQAq$1*Yb_tTAA>DP**=g*xic5oRyq9540wV|X;0M7w%C`g|37%E; z*Ayi8dGqq~-qUl8o97&2h+U1mMI8=dXhC1#WTsZ^!+Rsr#SW4W$^Y`cB6lagA)m>7 zEN8O6>YW1cda`-&ai+rFg5x5lka!TWgP-LAD*)z1x`B9A@i~JvJWbc{>*g5D0St8e zvB#j8?j{VSK_O&=2%cQjO&|Cf;150vMt*b?r)F(QR~BQB=@JF=CIo1dkLO@)YOoe) z*dppQKlBgFbndczG550ka_(Ag2AILeR)sXqJx)aO=ebYstKhmx_%MF3L;`yI`h8}R zlJogn@?rjz{7L?X=>p`+XD0u|%wtCKqscF(rg_FSLaqk?Y#zltFRxGSPaz3Z0SEuh zsS8hqY%6ji6Sf%2&>_=8wo?(Q3$hiCZH5|w%W&lPr(Tt(3%76j;7Xdn&e-Z2TfLXB z46?D+hq;ttiaTz?(40Q!Q*}n11T}_CRQb)7x4QL?{J8MkNgE)(SPfn==w-kzzF3Xo z!=rSOX;8a%Pu`w>uEr;QG%(q6eNBi5nla?=b`8_o({V-t=VFPRyG?|TW#CSeS}_V6 zWM?Xt8^Azu9RcedTmEYLC3!u(EdMn8`=0wWV8GAAY}G%Y3|t|DwC+TwIIRm0Y2AzB z#N|7>9nc}T3s^dOI>5R8YwS+K^&c1$7fE--<~-nTQl=1P9Cuz{q4-R!>Jz-;dx@G48fv#Kdkwoc_Ow z6|D!_1qAX$%EzV0ievyAx?mOul)ZBY9{#NOFItfua(Fz>NhA;~FbR8|{O^O`>9rLB z5-7^2#${Ld5EHNGadG-Yh%?VF3Zv8?WKq}iCC@a?)N{M6Kscg+KSrDzTj$5tLxm@y44N5~iccyVB=q?a zg{Bf%`WA$X5#fadVT=$@j|m(y9G)&r@O-cP_+J0=@XAB)$cKh`1}l>PaO|~XS7AAe z>lv~(YTbi@5y!D(hy9dY>~pBOa^d)y9CsL_!GpH+_)YoI`F&D9u^~TuA~-xA3NJ!e zfi$Hh9&F05o;cdGP+Yjs3=Gv0c~|4s$U~n-$=qSBRF#ERDQNXgd#19G+`r4_6h+*5 z><{x)s-`DP@C!Jba~5VU!6$wbKf!qKZ0|P+GGh$0V{3nGJrtN53iK|5=hI8%eo}Bg z*~jLe#6J|U^?Fx+r#vBlT;7#;pLpisUqA7E?RU7od?FOdf19rmskBcHXPC#W15BxK zMuNlEck$an%_8})Pku(8ntKVqWAe*$C*-&1uJ%H7BSQxNUmE)lS{qq-q0DC$(`hW4-vDs=ZvT6^rxQ!2)KK~#V{n`RhjG}9F#ELo^+oKJ1!(-|(3 zXmQCwws6A8f+hAN5C?{;d7dT0B7wdLrb-zRI@YDkecuRSfiOCdj0@nG1HZiD7e;Rk zEpZ$5;9wGsby(t1(nO%n%%Zv4o&{qUFn$Jd4RLY1hZ74u8suP|xT=R-)m5KY=pKDR ze*VnNzS0ZU9{LRhKAaA~uCRR!u>ErH%+X%jj5QpdOC$ zQ{xz0VQyTS?u}y{UFmzNy3$hkM+yb$V<))Y)Tc&{_9qX<)>9ThLq2 zm*l@)I{c|2zlpK^@uwE#1|(SSo=klF!gtAftBa3at+j`@KK1+hX_sniYs+iu+p3x6 z&uPmHxKnGb;k%(Z^7TvQXnbUonalox5d89-*vUcvi{8r+r5st?_&Bqhm(N~4s^w+v za%18I=(cRT}0_v z`URR_W2A1!JDiK?_EgDGPgRZoYlFdnIy%zUWI0G)G9bf{K&*B8n5U0xx-mf Rb&F_(c_-c|I4~yo`yZYeLPY=o From e8b30eadfeec4c4cb4db06af87c2963e64563ff3 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Wed, 15 Sep 2021 19:54:55 +0200 Subject: [PATCH 204/317] Force PWM reapply after frequency change (#13141) * Force PWM reapply after frequency change * Fix compilation is USE_LIGHT is not defined --- tasmota/support_command.ino | 4 ++++ tasmota/xdrv_04_light.ino | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/tasmota/support_command.ino b/tasmota/support_command.ino index f55d35d28..4878def08 100644 --- a/tasmota/support_command.ino +++ b/tasmota/support_command.ino @@ -1450,6 +1450,10 @@ void CmndPwmfrequency(void) if ((1 == XdrvMailbox.payload) || ((XdrvMailbox.payload >= PWM_MIN) && (XdrvMailbox.payload <= PWM_MAX))) { Settings->pwm_frequency = (1 == XdrvMailbox.payload) ? PWM_FREQ : XdrvMailbox.payload; analogWriteFreq(Settings->pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c) +#ifdef USE_LIGHT + LightReapplyColor(); + LightAnimate(); +#endif // USE_LIGHT } ResponseCmndNumber(Settings->pwm_frequency); } diff --git a/tasmota/xdrv_04_light.ino b/tasmota/xdrv_04_light.ino index ff344df17..342e4fafa 100644 --- a/tasmota/xdrv_04_light.ino +++ b/tasmota/xdrv_04_light.ino @@ -1656,6 +1656,13 @@ uint8_t LightGetSpeedSetting(void) { return Settings->light_speed; } +// Force to reapply color, for example when PWM Frequency changed +void LightReapplyColor(void) { + for (uint32_t i = 0; i < LST_MAX; i++) { + Light.last_color[i] = 0; + } +} + // On entry Light.new_color[5] contains the color to be displayed // and Light.last_color[5] the color currently displayed // Light.power tells which lights or channels (SetOption68) are on/off From 4fa80c1609a4964d8d8fb7d826ae8d3627720e8c Mon Sep 17 00:00:00 2001 From: Barbudor Date: Wed, 15 Sep 2021 21:02:24 +0200 Subject: [PATCH 205/317] Serial.swap if TXD/RXD on GPIO13/15 (ESP8266) --- tasmota/support.ino | 5 +++++ tasmota/tasmota.ino | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/tasmota/support.ino b/tasmota/support.ino index fad51a83e..c13b2d502 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -1017,6 +1017,11 @@ void SetSerialBegin(void) { Serial.flush(); #ifdef ESP8266 Serial.begin(TasmotaGlobal.baudrate, (SerialConfig)pgm_read_byte(kTasmotaSerialConfig + Settings->serial_config)); + if (15==Pin(GPIO_TXD,0) && 13==Pin(GPIO_RXD,0)) { + Serial.flush(); + Serial.swap(); + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL "Serial pins swapped to alternate")); + } #endif // ESP8266 #ifdef ESP32 delay(10); // Allow time to cleanup queues - if not used hangs ESP32 diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 980f0b7bf..2dbb8f948 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -408,6 +408,14 @@ void setup(void) { BerryInit(); #endif // USE_BERRY +#ifdef ESP8266 + if (15==Pin(GPIO_TXD,0) && 13==Pin(GPIO_RXD,0)) { + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL "Swapping Serial pins to alternate")); + Serial.flush(); + Serial.swap(); + } +#endif + XdrvCall(FUNC_PRE_INIT); XsnsCall(FUNC_PRE_INIT); From 9fa3cb4544f73baaf7028261ff9c21b978972de7 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 15 Sep 2021 22:25:36 +0200 Subject: [PATCH 206/317] Berry add `path.last_modified()` --- lib/libesp32/Berry/default/be_path_tasmota_lib.c | 16 ++++++++++++++++ lib/libesp32/Berry/default/be_port.cpp | 11 +++++++++++ lib/libesp32/Berry/generate/be_const_strtab.h | 1 + .../Berry/generate/be_const_strtab_def.h | 5 +++-- .../Berry/generate/be_fixed_tasmota_path.h | 3 ++- 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/libesp32/Berry/default/be_path_tasmota_lib.c b/lib/libesp32/Berry/default/be_path_tasmota_lib.c index 810a8e712..c722f01e1 100644 --- a/lib/libesp32/Berry/default/be_path_tasmota_lib.c +++ b/lib/libesp32/Berry/default/be_path_tasmota_lib.c @@ -16,6 +16,7 @@ #include "be_strlib.h" #include "be_mem.h" #include "be_sys.h" +#include static int m_path_exists(bvm *vm) { @@ -26,10 +27,25 @@ static int m_path_exists(bvm *vm) be_pushbool(vm, be_isexist(path)); be_return(vm); } +extern time_t be_last_modified(void *hfile); + +static int m_path_last_modified(bvm *vm) +{ + if (be_top(vm) >= 1 && be_isstring(vm, 1)) { + const char *path = be_tostring(vm, 1); + void * f = be_fopen(path, "r"); + if (f) { + be_pushint(vm, be_last_modified(f)); + be_return(vm); + } + } + be_return_nil(vm); +} /* @const_object_info_begin module path (scope: global, file: tasmota_path) { exists, func(m_path_exists) + last_modified, func(m_path_last_modified) } @const_object_info_end */ #include "../generate/be_fixed_tasmota_path.h" diff --git a/lib/libesp32/Berry/default/be_port.cpp b/lib/libesp32/Berry/default/be_port.cpp index cca5b3f61..88815a000 100644 --- a/lib/libesp32/Berry/default/be_port.cpp +++ b/lib/libesp32/Berry/default/be_port.cpp @@ -248,6 +248,17 @@ size_t be_fsize(void *hfile) return 0; } +extern "C" time_t be_last_modified(void *hfile) +{ +#ifdef USE_UFILESYS + if (ufsp != nullptr && hfile != nullptr) { + File * f_ptr = (File*) hfile; + return f_ptr->getLastWrite(); + } +#endif // USE_UFILESYS + return 0; +} + int be_isexist(const char *filename) { #ifdef USE_UFILESYS diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index c8862b6bd..e91b8a6ce 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,6 +1,7 @@ extern const bcstring be_const_str_PZEM0XX_TX; extern const bcstring be_const_str__begin_transmission; extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_last_modified; extern const bcstring be_const_str_list; extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; extern const bcstring be_const_str_screenshot; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index d8614a757..b6a50513e 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,6 +1,7 @@ be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str__begin_transmission); be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_list); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, &be_const_str_list); be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_mask_line_param_cfg); be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_screenshot); be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); @@ -1058,6 +1059,6 @@ static const bstring* const m_string_table[] = { static const struct bconststrtab m_const_string_table = { .size = 344, - .count = 688, + .count = 689, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h b/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h index 92e49ecf9..7ff9e3d66 100644 --- a/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h +++ b/lib/libesp32/Berry/generate/be_fixed_tasmota_path.h @@ -2,11 +2,12 @@ static be_define_const_map_slots(m_libpath_map) { { be_const_key(exists, -1), be_const_func(m_path_exists) }, + { be_const_key(last_modified, 0), be_const_func(m_path_last_modified) }, }; static be_define_const_map( m_libpath_map, - 1 + 2 ); static be_define_const_module( From 7bbf54fa00e94a6716c4826d88eefebcf3c4bb01 Mon Sep 17 00:00:00 2001 From: Arnold-n <48472227+Arnold-n@users.noreply.github.com> Date: Wed, 15 Sep 2021 23:47:14 +0200 Subject: [PATCH 207/317] correct filename --- I2CDEVICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/I2CDEVICES.md b/I2CDEVICES.md index 975a748dc..5264557ca 100644 --- a/I2CDEVICES.md +++ b/I2CDEVICES.md @@ -95,4 +95,4 @@ Index | Define | Driver | Device | Address(es) | Description 59 | USE_BM8563 | xdrv_56 | BM8563 | 0x51 | BM8563 RTC from M5Stack 60 | USE_AM2320 | xsns_88 | AM2320 | 0x5C | Temperature and Humidity sensor 61 | USE_T67XX | xsns_89 | T67XX | 0x15 | CO2 sensor - 62 | USE_SCD40 | xsns_42 | SCD40 | 0x62 | CO2 sensor Sensirion SCD40/SCD41 + 62 | USE_SCD40 | xsns_92 | SCD40 | 0x62 | CO2 sensor Sensirion SCD40/SCD41 From 7d3df14640a241354c71ae742433f719e29e91f1 Mon Sep 17 00:00:00 2001 From: Arnold-n <48472227+Arnold-n@users.noreply.github.com> Date: Thu, 16 Sep 2021 08:08:50 +0200 Subject: [PATCH 208/317] add code size info and enable in ESP32 build --- BUILDS.md | 2 +- tasmota/my_user_config.h | 2 +- tasmota/tasmota_configurations.h | 2 +- tasmota/tasmota_configurations_ESP32.h | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/BUILDS.md b/BUILDS.md index 36067c822..fec3cfac9 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -122,7 +122,7 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display | USE_MGC3130 | - | - | - / - | - | - | - | - | | USE_MAX44009 | - | - | - / - | - | - | - | - | | USE_SCD30 | - | - | - / x | - | x | - | - | -| USE_SCD40 | - | - | - / - | - | x | - | - | +| USE_SCD40 | - | - | - / x | - | x | - | - | | USE_SPS30 | - | - | - / - | - | - | - | - | | USE_ADE7953 | - | - | x / x | x | x | - | x | | USE_VL53L0X | - | - | - / x | - | x | - | - | diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index ce9d0212b..ea19a48a8 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -606,7 +606,7 @@ // #define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) // #define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) // #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) -// #define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40/Scd41 CO2 sensor (I2C address 0x62) (+tbd code) +// #define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40/Scd41 CO2 sensor (I2C address 0x62) (+3k5 code) // #define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) // #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 298d4db01..35a903c58 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -107,7 +107,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) -#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+tbd code) +#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k5 code) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 850aa5b28..6e3b075a0 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -259,7 +259,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) //#define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) -//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+tbd code) (not tested yet on ESP32) +//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k5 code) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) //#define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) //#define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) @@ -394,7 +394,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) -//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+tbd code) (not tested yet on ESP32) +#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k5 code) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) From 0d7b049509353d21c24aa131d3500cd4708a50be Mon Sep 17 00:00:00 2001 From: Arnold-n <48472227+Arnold-n@users.noreply.github.com> Date: Thu, 16 Sep 2021 09:06:52 +0200 Subject: [PATCH 209/317] Correcting SCD40 on ESP32 code size --- tasmota/tasmota_configurations_ESP32.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 6e3b075a0..7bc48b672 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -259,7 +259,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) //#define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) -//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k5 code) +//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k3 code) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) //#define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) //#define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) From b02560fd8f2d22d9a4b5c7fd7d4a0250a860f728 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Thu, 16 Sep 2021 19:24:01 +0200 Subject: [PATCH 210/317] Webcam compile time optimization * Optimize compile time (1) --- .../LinkedList-1.2.3/LICENSE.txt | 0 .../LinkedList-1.2.3/LinkedList.h | 0 .../LinkedList-1.2.3/README.md | 0 .../examples/ClassList/ClassList.pde | 0 .../SimpleIntegerList/SimpleIntegerList.pde | 0 .../LinkedList-1.2.3/keywords.txt | 0 .../LinkedList-1.2.3/library.json | 0 .../LinkedList-1.2.3/library.properties | 0 platformio_tasmota_env32.ini | 2 +- tasmota/tasmota_configurations_ESP32.h | 18 ++++++++++++++++-- 10 files changed, 17 insertions(+), 3 deletions(-) rename lib/{lib_basic => default}/LinkedList-1.2.3/LICENSE.txt (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/LinkedList.h (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/README.md (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/examples/ClassList/ClassList.pde (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/examples/SimpleIntegerList/SimpleIntegerList.pde (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/keywords.txt (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/library.json (100%) rename lib/{lib_basic => default}/LinkedList-1.2.3/library.properties (100%) diff --git a/lib/lib_basic/LinkedList-1.2.3/LICENSE.txt b/lib/default/LinkedList-1.2.3/LICENSE.txt similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/LICENSE.txt rename to lib/default/LinkedList-1.2.3/LICENSE.txt diff --git a/lib/lib_basic/LinkedList-1.2.3/LinkedList.h b/lib/default/LinkedList-1.2.3/LinkedList.h similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/LinkedList.h rename to lib/default/LinkedList-1.2.3/LinkedList.h diff --git a/lib/lib_basic/LinkedList-1.2.3/README.md b/lib/default/LinkedList-1.2.3/README.md similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/README.md rename to lib/default/LinkedList-1.2.3/README.md diff --git a/lib/lib_basic/LinkedList-1.2.3/examples/ClassList/ClassList.pde b/lib/default/LinkedList-1.2.3/examples/ClassList/ClassList.pde similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/examples/ClassList/ClassList.pde rename to lib/default/LinkedList-1.2.3/examples/ClassList/ClassList.pde diff --git a/lib/lib_basic/LinkedList-1.2.3/examples/SimpleIntegerList/SimpleIntegerList.pde b/lib/default/LinkedList-1.2.3/examples/SimpleIntegerList/SimpleIntegerList.pde similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/examples/SimpleIntegerList/SimpleIntegerList.pde rename to lib/default/LinkedList-1.2.3/examples/SimpleIntegerList/SimpleIntegerList.pde diff --git a/lib/lib_basic/LinkedList-1.2.3/keywords.txt b/lib/default/LinkedList-1.2.3/keywords.txt similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/keywords.txt rename to lib/default/LinkedList-1.2.3/keywords.txt diff --git a/lib/lib_basic/LinkedList-1.2.3/library.json b/lib/default/LinkedList-1.2.3/library.json similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/library.json rename to lib/default/LinkedList-1.2.3/library.json diff --git a/lib/lib_basic/LinkedList-1.2.3/library.properties b/lib/default/LinkedList-1.2.3/library.properties similarity index 100% rename from lib/lib_basic/LinkedList-1.2.3/library.properties rename to lib/default/LinkedList-1.2.3/library.properties diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 400e1f3cf..bbac82a7c 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -59,7 +59,7 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 extends = env:tasmota32_base board = esp32-cam build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_WEBCAM -lib_extra_dirs = lib/libesp32, lib/lib_basic +lib_extra_dirs = lib/libesp32 [env:tasmota32-odroidgo] extends = env:tasmota32_base diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 383621de6..04f9e47b7 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -34,10 +34,24 @@ #define USE_WEBCAM #define ENABLE_RTSPSERVER -#define USE_SDCARD #define USE_SPI +#define USE_SDCARD + +#undef USE_I2C +#undef USE_HOME_ASSISTANT +#undef USE_COUNTER +#undef USE_IR_REMOTE +#undef USE_AC_ZERO_CROSS_DIMMER +#undef USE_PWM_DIMMER +#undef USE_TUYA_MCU +#undef USE_EMULATION_HUE +#undef USE_EMULATION_WEMO +#undef USE_ARILUX_RF +#undef USE_DS18x20 +#undef USE_WS2812 +#undef USE_ENERGY_SENSOR #undef USE_BERRY // Disable Berry scripting language -#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) +#undef USE_MI_ESP32 // (ESP32 only) Disable support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #endif // FIRMWARE_WEBCAM /*********************************************************************************************\ From 0de562567b134872da517662a46df27ea4f82ad3 Mon Sep 17 00:00:00 2001 From: Arnold <48472227+Arnold-n@users.noreply.github.com> Date: Thu, 16 Sep 2021 23:44:54 +0200 Subject: [PATCH 211/317] Add PRECONFIGURED_SCRIPT and START_SCRIPT_FROM_BOOT options Change allows to define a PRECONFIGURED_SCRIPT in user_config_override.h and to start a script from boot by defining START_SCRIPT_FROM_BOOT. --- tasmota/xdrv_10_scripter.ino | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index f1083c823..ac6e46113 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -8383,8 +8383,16 @@ bool Xdrv10(uint8_t function) if (glob_script_mem.script_ram[0]!='>' && glob_script_mem.script_ram[1]!='D') { // clr all memset(glob_script_mem.script_ram, 0 ,glob_script_mem.script_size); +#ifdef PRECONFIGURED_SCRIPT + strcpy_P(glob_script_mem.script_ram, PSTR(PRECONFIGURED_SCRIPT)); +#else strcpy_P(glob_script_mem.script_ram, PSTR(">D\nscript error must start with >D")); +#endif +#ifdef START_SCRIPT_FROM_BOOT + bitWrite(Settings->rule_enabled, 0, 1); +#else bitWrite(Settings->rule_enabled, 0, 0); +#endif } // assure permanent memory is 4 byte aligned From 2b0c723cd7361b0abe65e84b42c79d63323c804a Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 17 Sep 2021 09:47:03 +0200 Subject: [PATCH 212/317] IDF4.4 framework-arduinoespressif32 with i2c fix https://github.com/espressif/arduino-esp32/pull/5664 --- platformio_tasmota_cenv_sample.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index 627f646b5..d5b3442bf 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -49,7 +49,7 @@ build_flags = ${env:tasmota32_base.build_flags} extends = env:tasmota32_base board = esp32s2 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = tasmota/framework-arduinoespressif32 @ 2.0.0+tasmota +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/arduino-esp32/releases/download/v.2.0-post/framework-arduinoespressif32_i2c.zip platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -75,7 +75,7 @@ lib_ignore = extends = env:tasmota32_base board = esp32c3 platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/427/framework-arduinoespressif32-master-583026f04.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/arduino-esp32/releases/download/v.2.0-post/framework-arduinoespressif32_i2c.zip platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable @@ -106,7 +106,7 @@ lib_ignore = [env:tasmota32idf4] extends = env:tasmota32_base platform = https://github.com/platformio/platform-espressif32.git#feature/arduino-idf-master -platform_packages = tasmota/framework-arduinoespressif32 @ 2.0.0+tasmota +platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/arduino-esp32/releases/download/v.2.0-post/framework-arduinoespressif32_i2c.zip platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} -Wswitch-unreachable From cb2e190ff46cedcda6e11e5a27b7dcc7a1d5fac9 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 17 Sep 2021 11:04:03 +0200 Subject: [PATCH 213/317] Core32 1074 --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- platformio_tasmota32.ini | 2 +- platformio_tasmota_cenv_sample.ini | 5 +++-- platformio_tasmota_env32.ini | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a217911ee..609d4ea86 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -7,7 +7,7 @@ - [ ] 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 with Tasmota core ESP8266 V.2.7.4.9 - - [ ] The code change is tested and works with Tasmota core ESP32 V.1.0.7.3 + - [ ] The code change is tested and works with Tasmota core ESP32 V.1.0.7.4 - [ ] 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**_ diff --git a/platformio_tasmota32.ini b/platformio_tasmota32.ini index 62dfd7739..ee02571e7 100644 --- a/platformio_tasmota32.ini +++ b/platformio_tasmota32.ini @@ -29,7 +29,7 @@ build_flags = ${esp_defaults.build_flags} [core32] platform = espressif32 @ 3.3.1 -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.3/tasmota-arduinoespressif32-release_v3.3.5.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.4/tasmota-arduinoespressif32-release_v3.3.5.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${esp32_defaults.build_unflags} build_flags = ${esp32_defaults.build_flags} diff --git a/platformio_tasmota_cenv_sample.ini b/platformio_tasmota_cenv_sample.ini index d5b3442bf..9ecaea203 100644 --- a/platformio_tasmota_cenv_sample.ini +++ b/platformio_tasmota_cenv_sample.ini @@ -38,7 +38,7 @@ build_flags = ${env.build_flags} [env:tasmota32idf3] extends = env:tasmota32_base platform = espressif32 @ 3.3.0 -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.3/tasmota-arduinoespressif32-release_v3.3.5.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.4/tasmota-arduinoespressif32-release_v3.3.5.tar.gz platformio/tool-mklittlefs @ ~1.203.200522 build_unflags = ${env:tasmota32_base.build_unflags} build_flags = ${env:tasmota32_base.build_flags} @@ -149,6 +149,7 @@ build_flags = ${env:tasmota32_base.build_flags} ; -Wstack-usage=300 ; *** JTAG Debug version, needs esp-prog or FT2232H or FT232H +; *** Install howto for Windows https://community.platformio.org/t/esp32-pio-unified-debugger/4541/20 [env:tasmota32-ocd] ;build_type = debug extends = env:tasmota32_base @@ -162,7 +163,7 @@ build_flags = ${env:tasmota32_base.build_flags} [env:tasmota32solo1-ocd] ;build_type = debug extends = env:tasmota32_base -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.3/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.4/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz platformio/tool-esptoolpy @ ~1.30100 platformio/tool-mklittlefs @ ~1.203.200522 board = esp32_solo1_4M diff --git a/platformio_tasmota_env32.ini b/platformio_tasmota_env32.ini index 400e1f3cf..881e28ad3 100644 --- a/platformio_tasmota_env32.ini +++ b/platformio_tasmota_env32.ini @@ -50,7 +50,7 @@ build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 [env:tasmota32solo1] extends = env:tasmota32_base -platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.3/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz +platform_packages = framework-arduinoespressif32 @ https://github.com/tasmota/arduino-esp32/releases/download/1.0.7.4/tasmota-arduinoespressif32-solo1-release_v3.3.5.tar.gz platformio/tool-esptoolpy @ ~1.30100 platformio/tool-mklittlefs @ ~1.203.200522 build_flags = ${env:tasmota32_base.build_flags} -DFIRMWARE_TASMOTA32 From 4bd919fc80657db876976187fde3a71fa6daff89 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 17 Sep 2021 12:39:53 +0200 Subject: [PATCH 214/317] Core 1.0.7.4 for ESP32 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 466d8c005..1e0502050 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file. - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now - ``DisplayDimmer`` has now range 0..100 instead of 0..15 - Minimum PWM Frequency lowered to 2Hz on ESP32 (#13123) +- Use Tasmota Arduino Core32 1.0.7.4 for ESP32 builds (#13154) ### Fixed - OpenTherm invalid JSON (#13028) From 7231f63129ea3320bdf02537359d6584d157847d Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 17 Sep 2021 14:35:13 +0200 Subject: [PATCH 215/317] USE_TASMOTA_DISCOVERY for Webcam --- tasmota/tasmota_configurations_ESP32.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 04f9e47b7..701441148 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -33,6 +33,7 @@ #define CODE_IMAGE_STR "webcam" #define USE_WEBCAM +#define USE_TASMOTA_DISCOVERY #define ENABLE_RTSPSERVER #define USE_SPI #define USE_SDCARD From e4d3dedd8c0d18c0474114887e4f00a4443d9e04 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 17 Sep 2021 14:43:48 +0200 Subject: [PATCH 216/317] Webcam --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e0502050..332924be3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ All notable changes to this project will be documented in this file. - ``DisplayDimmer`` has now range 0..100 instead of 0..15 - Minimum PWM Frequency lowered to 2Hz on ESP32 (#13123) - Use Tasmota Arduino Core32 1.0.7.4 for ESP32 builds (#13154) +- Shrinked Webcam build, uses now `USE_TASMOTA_DISCOVERY` (#13148) ### Fixed - OpenTherm invalid JSON (#13028) From 3c449cf8e086daa6ad5ae8204796ced8a9d72e86 Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Fri, 17 Sep 2021 20:26:36 +0200 Subject: [PATCH 217/317] Update tasmota_configurations_ESP32.h --- tasmota/tasmota_configurations_ESP32.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 701441148..658835b2f 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -73,6 +73,8 @@ #define USE_ODROID_GO // Add support for Odroid Go #define USE_SDCARD +#undef USE_HOME_ASSISTANT + #define USE_ADC #define USE_SPI #define USE_DISPLAY // Add SPI Display Support (+2k code) @@ -99,6 +101,8 @@ #undef FALLBACK_MODULE #define FALLBACK_MODULE M5STACK_CORE2 // [Module2] Select default module on fast reboot where USER_MODULE is user template +#undef USE_HOME_ASSISTANT + #define USE_M5STACK_CORE2 // Add support for M5Stack Core2 #define USE_I2S_SAY_TIME #define USE_I2S_WEBRADIO @@ -160,6 +164,9 @@ #undef FALLBACK_MODULE #define FALLBACK_MODULE WEMOS // [Module2] Select default module on fast reboot where USER_MODULE is user template +#define USE_TASMOTA_DISCOVERY +#undef USE_HOME_ASSISTANT + #define USE_SDCARD #define USE_ADC From 60d9b95ff46bee5d3d52902241613bf1d73eee70 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 18 Sep 2021 16:00:56 +0200 Subject: [PATCH 218/317] Berry fix compiler bug in complex compound assignments --- lib/libesp32/Berry/src/be_parser.c | 6 ++++-- lib/libesp32/Berry/tests/compound.be | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 lib/libesp32/Berry/tests/compound.be diff --git a/lib/libesp32/Berry/src/be_parser.c b/lib/libesp32/Berry/src/be_parser.c index bb455df68..cc4ae7969 100644 --- a/lib/libesp32/Berry/src/be_parser.c +++ b/lib/libesp32/Berry/src/be_parser.c @@ -900,10 +900,12 @@ static void suffix_expr(bparser *parser, bexpdesc *e) static void suffix_alloc_reg(bparser *parser, bexpdesc *l) { bfuncinfo *finfo = parser->finfo; - bbool suffix = l->type == ETINDEX || l->type == ETMEMBER; + bbool is_suffix = l->type == ETINDEX || l->type == ETMEMBER; /* is suffix */ + bbool is_suffix_reg = l->v.ss.tt == ETREG || l->v.ss.tt == ETLOCAL || l->v.ss.tt == ETGLOBAL || l->v.ss.tt == ETNGLOBAL; /* if suffix, does it need a register */ + bbool is_global = l->type == ETGLOBAL || l->type == ETNGLOBAL; /* in the suffix expression, if the object is a temporary * variable (l->v.ss.tt == ETREG), it needs to be cached. */ - if (suffix && l->v.ss.tt == ETREG) { + if (is_global || (is_suffix && is_suffix_reg)) { be_code_allocregs(finfo, 1); } } diff --git a/lib/libesp32/Berry/tests/compound.be b/lib/libesp32/Berry/tests/compound.be new file mode 100644 index 000000000..bda74c9e2 --- /dev/null +++ b/lib/libesp32/Berry/tests/compound.be @@ -0,0 +1,19 @@ +# test bug in compound statements + +a = 0 +assert(a == 0) +a += 1 +assert(a == 1) +a += 10/2 +assert(a == 6) + +class A var a def init() self.a = 1 end def f(x) self.a+=x/2 end def g(x) self.a = self.a + x/2 end end + +a = A() +assert(a.a == 1) +a.f(10) +assert(a.a == 6) +b=A() +assert(b.a == 1) +b.g(10) +assert(b.a == 6) \ No newline at end of file From f7613ee0c86394690f0552ecbd5ee46072531fda Mon Sep 17 00:00:00 2001 From: Jason2866 <24528715+Jason2866@users.noreply.github.com> Date: Sun, 19 Sep 2021 13:22:28 +0200 Subject: [PATCH 219/317] No PSRAM with C3 --- boards/esp32c3.json | 1 - 1 file changed, 1 deletion(-) diff --git a/boards/esp32c3.json b/boards/esp32c3.json index b68f06d92..cedcf1500 100644 --- a/boards/esp32c3.json +++ b/boards/esp32c3.json @@ -4,7 +4,6 @@ "ldscript": "esp32c3_out.ld" }, "core": "esp32", - "extra_flags": "-DBOARD_HAS_PSRAM", "f_cpu": "160000000L", "f_flash": "80000000L", "flash_mode": "dout", From 5e2686407d6ff7f30d144dfbe4fd8d8b2d66a976 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 19 Sep 2021 15:35:51 +0200 Subject: [PATCH 220/317] Berry introspect toptr (#13172) * Berry introspect, add `toptr` and `fromptr` * Remove warning --- lib/libesp32/Berry/generate/be_const_strtab.h | 1408 +++++------ .../Berry/generate/be_const_strtab_def.h | 2073 +++++++++-------- .../Berry/generate/be_fixed_introspect.h | 8 +- lib/libesp32/Berry/src/be_introspectlib.c | 39 + 4 files changed, 1787 insertions(+), 1741 deletions(-) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index e91b8a6ce..e862dbf93 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,711 +1,713 @@ -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_register_button_encoder; extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_SPI_MISO; extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_size; +extern const bcstring be_const_str_RFRECV; extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_CNTR1; extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_yield; extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_lv_linemeter; extern const bcstring be_const_str_AS608_TX; extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_lv_spinbox; extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_lv_draw_mask_radius_param; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_wire1; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index b6a50513e..8b7d4ce94 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1064 +1,1067 @@ -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_PZEM004_RX); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SERIAL_7N2); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, NULL); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_dot_p); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_ILI9341_CS); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_NONE); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_I2S_IN_DATA); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_KEY1_INV); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_exec_rules); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_SERIAL_8N2); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_LEDLNK_INV); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, NULL); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_NRG_CF1); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_lower); be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_return); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_I2S_IN_CLK); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_continue); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, NULL); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_draw_mask_fade_param_cfg); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_available); +be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SERIAL_8O2); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_get_string); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_HM10_TX); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_HRE_CLOCK); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_ILI9341_CS); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_ILI9488_CS); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SERIAL_6N1); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SERIAL_8E1); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_BL0940_RX); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_lv_draw_mask_angle_param_cfg); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_mask_common_dsc); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_continue); be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_read); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, NULL); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_AudioFileSource); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SERIAL_7O2); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SERIAL_5N1); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_KEY1_NP); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_read); be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_LE01MR_TX); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SERIAL_5O2); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_DDSU666_TX); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_DCKI); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SERIAL_5E1); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_SERIAL_7O1); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, NULL); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_I2C_SCL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SYMBOL_NEXT); be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_DDS2382_TX); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_lv_spinbox); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_IBEACON_TX); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, NULL); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_lv_spinbox); be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SDM630_TX); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, NULL); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_I2S_IN_SLCT); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_KEY1_PD); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SERIAL_6O1); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PMS5003_TX); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_MAX7219DIN); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_LMT01); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_get_string); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_HRE_DATA); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SERIAL_5N2); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HX711_DAT); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_AES_GCM); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_I2S_OUT_CLK); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DDSU666_TX); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, NULL); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_INPUT_PULLUP); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_available); -be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_DSB); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_CNTR1_NP); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_A4988_MS1); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_AZ_RXD); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_HM10_RX); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SERIAL_6O2); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SERIAL_8E2); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_ADC_BUTTON); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, NULL); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_DI); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_SERIAL_8N1); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SERIAL_7E1); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_DHT11_OUT); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_LED1_INV); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_memory); be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_DHT11_OUT); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_HM10_RX); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SERIAL_5N2); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SERIAL_6O1); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SHELLY_DIMMER_BOOT0); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, NULL); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SERIAL_5O1); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_lv_point); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_CHANGE); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_HRE_DATA); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_lv_draw_mask_map_param); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_DHT22); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_bytes, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_gc, - (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, - (const bstring *)&be_const_str_SWT1_PD, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_loop, - NULL, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_IRRECV, - NULL, - (const bstring *)&be_const_str_SERIAL_5N1, - (const bstring *)&be_const_str_SSPI_MOSI, - NULL, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_DSB_OUT, - NULL, - (const bstring *)&be_const_str_SYMBOL_SETTINGS, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_decrypt, - NULL, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_SERIAL_8O1, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_ZIGBEE_TX, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_SERIAL_7O2, - NULL, - (const bstring *)&be_const_str_OPTION_A, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_seti, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - (const bstring *)&be_const_str_asstring, - (const bstring *)&be_const_str_load, - (const bstring *)&be_const_str_lower, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_SERIAL_5O2, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_SERIAL_7N1, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_arg_size, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_SERIAL_6N1, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_lv_draw_mask_angle_param, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_lv_page, - (const bstring *)&be_const_str_top, - (const bstring *)&be_const_str_TM1637DIO, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_SDS0X1_RX, - NULL, - (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_lv_style, - (const bstring *)&be_const_str_HLW_CF, (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str__end_transmission, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_get_free_heap, - (const bstring *)&be_const_str_begin, - NULL, - (const bstring *)&be_const_str_rtc, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - NULL, - (const bstring *)&be_const_str_getbits, - (const bstring *)&be_const_str_lv_draw_mask_fade_param, - (const bstring *)&be_const_str_lv_bar, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_HALLEFFECT, - NULL, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_lv_label, - (const bstring *)&be_const_str_DAC, - NULL, - (const bstring *)&be_const_str_redirect, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_load_font, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - NULL, - (const bstring *)&be_const_str___lower__, - NULL, - (const bstring *)&be_const_str_MAX31855DO, - NULL, - (const bstring *)&be_const_str_skip, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_time_reached, - (const bstring *)&be_const_str__read, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_TX2X_TXD_BLACK, - NULL, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_set_timer, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - NULL, - (const bstring *)&be_const_str_SERIAL_8E1, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_WIEGAND_D1, - NULL, - (const bstring *)&be_const_str_calldepth, - (const bstring *)&be_const_str_remove_timer, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_A4988_STP, - NULL, - (const bstring *)&be_const_str_response_append, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_wire1, - NULL, - (const bstring *)&be_const_str_AudioFileSourceFS, - NULL, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_XPT2046_CS, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_lv_draw_line_dsc, - (const bstring *)&be_const_str_lv_dropdown, - (const bstring *)&be_const_str_SERIAL_6E1, - (const bstring *)&be_const_str_SI7021, - NULL, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_DEEPSLEEP, - NULL, - (const bstring *)&be_const_str_classname, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_SYMBOL_DIRECTORY, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_SERIAL_7E2, - (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_lv_draw_mask_saved, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_addr, - (const bstring *)&be_const_str_SERIAL_5E1, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, - (const bstring *)&be_const_str_TM1638CLK, - (const bstring *)&be_const_str_WIEGAND_D0, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_cosh, - NULL, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_ceil, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_MD5, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_SERIAL_5O1, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_depower, - (const bstring *)&be_const_str_SPI_CS, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_remove_cmd, - (const bstring *)&be_const_str_TUYA_RX, - NULL, - (const bstring *)&be_const_str_open, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_content_flush, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_dac_voltage, - NULL, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_collect, - (const bstring *)&be_const_str_SYMBOL_STOP, - (const bstring *)&be_const_str_PULLUP, - NULL, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_CC1101_GDO2, - NULL, - (const bstring *)&be_const_str_input, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_SERIAL_5E2, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str__get_cb, - NULL, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_get, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_MGC3130_RESET, - NULL, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_SERIAL_6N2, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str_lv_cb, - (const bstring *)&be_const_str_codedump, - (const bstring *)&be_const_str_resp_cmnd_done, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_BS814_DAT, - NULL, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_lv_keyboard, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_add_cmd, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_dot_w, - NULL, - (const bstring *)&be_const_str_size, - NULL, + (const bstring *)&be_const_str_RFRECV, (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_lv_btnmatrix, (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_resp_cmnd_failed, - (const bstring *)&be_const_str_gamma10, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_sin, - (const bstring *)&be_const_str_yield, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_ILI9488_CS, - NULL, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_do, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_lv_indev, - NULL, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_call, - (const bstring *)&be_const_str_opt_call, - NULL, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_NRG_SEL, - NULL, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_tan, - (const bstring *)&be_const_str_TM1638STB, - NULL, - (const bstring *)&be_const_str_arg_name, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_lv_draw_mask_radius_param_cfg, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_I2C_Driver, NULL, (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_ADC_PH, - NULL, - (const bstring *)&be_const_str_eth, - (const bstring *)&be_const_str_floor, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_MCP39F5_TX, (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_SERIAL_8O2, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_content_start, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str_return, NULL, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_get, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_I2C_SDA, + NULL, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_MGC3130_XFER, + NULL, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_SERIAL_6O2, (const bstring *)&be_const_str_OLED_RESET, + NULL, + (const bstring *)&be_const_str_add_header, + NULL, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_SYMBOL_SETTINGS, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_MD5, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_do, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_register_button_encoder, + (const bstring *)&be_const_str_floor, + NULL, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_SYMBOL_TRASH, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_init, + (const bstring *)&be_const_str_SYMBOL_CALL, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_lv_sqrt_res, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_SERIAL_8N1, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_PULLDOWN, + NULL, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_AS3935, + NULL, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_clear, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_asstring, + NULL, + (const bstring *)&be_const_str_exp, + (const bstring *)&be_const_str_IRSEND, + NULL, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_SERIAL_7E1, + (const bstring *)&be_const_str_dac_voltage, + NULL, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_lv_area, + NULL, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_SERIAL_5E2, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_ZIGBEE_RST, + NULL, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_module, + (const bstring *)&be_const_str_content_stop, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_dot_p1, + NULL, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_count, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_reverse_gamma10, + (const bstring *)&be_const_str_search, + (const bstring *)&be_const_str_lv_color, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_WEBCAM_XCLK, + (const bstring *)&be_const_str_find_key_i, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, + (const bstring *)&be_const_str_SSD1331_DC, + (const bstring *)&be_const_str_url_encode, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + NULL, + (const bstring *)&be_const_str_lv_imgbtn, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_item, + (const bstring *)&be_const_str_load_freetype_font, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_AudioOutput, + NULL, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_add_driver, + NULL, + (const bstring *)&be_const_str_SYMBOL_VIDEO, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_WEBCAM_VSYNC, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_read_bytes, + (const bstring *)&be_const_str_SYMBOL_CUT, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + NULL, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_MHZ_TXD, + NULL, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_rtc, (const bstring *)&be_const_str_SYMBOL_USB, NULL, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_SERIAL_7O1, + (const bstring *)&be_const_str_DDS2382_TX, + NULL, + (const bstring *)&be_const_str_log, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_attrdump, + (const bstring *)&be_const_str_memory, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_setrange, + (const bstring *)&be_const_str_SERIAL_8E2, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + NULL, NULL, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_members, (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_opt_neq, NULL, NULL, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_AS608_TX, - NULL + (const bstring *)&be_const_str_erase, + NULL, + (const bstring *)&be_const_str_gen_cb, + (const bstring *)&be_const_str_ADC_LIGHT, + NULL, + (const bstring *)&be_const_str_WEBCAM_PCLK, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_lv_event_cb, + (const bstring *)&be_const_str_concat, + NULL, + (const bstring *)&be_const_str_on, + (const bstring *)&be_const_str_content_flush, + (const bstring *)&be_const_str_real, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str__ccmd, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_webclient, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_KEY1_PD, + NULL, + (const bstring *)&be_const_str_sinh, + (const bstring *)&be_const_str_lv_draw_rect_dsc, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_write_bit, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_cmd, + (const bstring *)&be_const_str_ZIGBEE_RX, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_WE517_RX, + NULL, + (const bstring *)&be_const_str_ETH_PHY_MDC, + NULL, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_detect, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_MCP39F5_RX, + NULL, + (const bstring *)&be_const_str_NEOPOOL_TX, + NULL, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_lv_page, + (const bstring *)&be_const_str_rad, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_name, + NULL, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_lv_draw_mask_radius_param, + (const bstring *)&be_const_str_lv_label, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + NULL, + NULL, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_lv_draw_line_dsc, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_DI, + NULL, + (const bstring *)&be_const_str_SYMBOL_PASTE, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + NULL, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str__read, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_DAC, + (const bstring *)&be_const_str_SSD1351_DC, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_lv_indev, + (const bstring *)&be_const_str_ZEROCROSS, + NULL, + (const bstring *)&be_const_str_SERIAL_8O1, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str_setitem, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_OUTPUT_LO, + (const bstring *)&be_const_str_SERIAL_7E2, + (const bstring *)&be_const_str_for, + (const bstring *)&be_const_str_A4988_MS1, + NULL, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + NULL, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_lv_draw_mask_line_param_cfg, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_exists, + (const bstring *)&be_const_str_SERIAL_8N2 }; static const struct bconststrtab m_const_string_table = { - .size = 344, - .count = 689, + .size = 345, + .count = 691, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_introspect.h b/lib/libesp32/Berry/generate/be_fixed_introspect.h index 78b840ab6..c5bc4a6aa 100644 --- a/lib/libesp32/Berry/generate/be_fixed_introspect.h +++ b/lib/libesp32/Berry/generate/be_fixed_introspect.h @@ -1,14 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(m_libintrospect_map) { - { be_const_key(members, -1), be_const_func(m_attrlist) }, - { be_const_key(set, -1), be_const_func(m_setmember) }, { be_const_key(get, -1), be_const_func(m_findmember) }, + { be_const_key(toptr, 3), be_const_func(m_toptr) }, + { be_const_key(set, -1), be_const_func(m_setmember) }, + { be_const_key(fromptr, -1), be_const_func(m_fromptr) }, + { be_const_key(members, 1), be_const_func(m_attrlist) }, }; static be_define_const_map( m_libintrospect_map, - 3 + 5 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index fc9dac898..dcabd309b 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -13,6 +13,8 @@ #include "be_debug.h" #include "be_map.h" #include "be_vm.h" +#include "be_exec.h" +#include "be_gc.h" #include #if BE_USE_INTROSPECT_MODULE @@ -76,6 +78,40 @@ static int m_setmember(bvm *vm) be_return_nil(vm); } +static int m_toptr(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1) { + bvalue *v = be_indexof(vm, 1); + if (var_basetype(v) >= BE_GCOBJECT) { + be_pushint(vm, (int) var_toobj(v)); + be_return(vm); + } else { + be_raise(vm, "value_error", "unsupported for this type"); + } + } + be_return_nil(vm); +} + +static int m_fromptr(bvm *vm) +{ + int top = be_top(vm); + if (top >= 1) { + int v = be_toint(vm, 1); + if (v) { + bgcobject * ptr = (bgcobject*) v; + if (var_basetype(ptr) >= BE_GCOBJECT) { + bvalue *top = be_incrtop(vm); + var_setobj(top, ptr->type, ptr); + } else { + be_raise(vm, "value_error", "unsupported for this type"); + } + } + be_return(vm); + } + be_return_nil(vm); +} + #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(introspect) { be_native_module_function("members", m_attrlist), @@ -92,6 +128,9 @@ module introspect (scope: global, depend: BE_USE_INTROSPECT_MODULE) { get, func(m_findmember) set, func(m_setmember) + + toptr, func(m_toptr) + fromptr, func(m_fromptr) } @const_object_info_end */ #include "../generate/be_fixed_introspect.h" From 74bd4cfd531801897ca526a249df8ea89ba4a139 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 19 Sep 2021 15:52:13 +0200 Subject: [PATCH 221/317] Berry add `tasmota.get_switch()` (#13173) --- lib/libesp32/Berry/default/be_tasmotalib.c | 4 +- lib/libesp32/Berry/generate/be_const_strtab.h | 1399 +++++------ .../Berry/generate/be_const_strtab_def.h | 2072 +++++++++-------- .../generate/be_fixed_be_class_tasmota.h | 127 +- tasmota/xdrv_52_3_berry_tasmota.ino | 15 + 5 files changed, 1819 insertions(+), 1798 deletions(-) diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index ad6bfaa90..28d0f6d1f 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -37,9 +37,10 @@ extern int l_webSend(bvm *vm); extern int l_webSendDecimal(bvm *vm); extern int l_getlight(bvm *vm); -extern int l_getpower(bvm *vm); extern int l_setlight(bvm *vm); +extern int l_getpower(bvm *vm); extern int l_setpower(bvm *vm); +extern int l_getswitch(bvm *vm); extern int l_i2cenabled(bvm *vm); @@ -1609,6 +1610,7 @@ class be_class_tasmota (scope: global, name: Tasmota) { get_power, func(l_getpower) set_power, func(l_setpower) + get_switch, func(l_getswitch) i2c_enabled, func(l_i2cenabled) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index e862dbf93..5fb3c118e 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,713 +1,714 @@ -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_DHT11; extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_PZEM017_RX; extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_for; extern const bcstring be_const_str_map; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_rtc; extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_MAX7219CLK; extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_lv_draw_mask_line_param; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_toint; extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_lv_draw_mask_common_dsc; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_lv_draw_line_dsc; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_set_timer; extern const bcstring be_const_str_Wire; extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_MHZ_TXD; extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_NRF24_CS; extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SERIAL_8E2; extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_lv_draw_mask_saved; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_AudioGeneratorWAV; extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_lv_draw_label_dsc; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_lv_point; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_lv_sqrt_res; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_lv_draw_mask_fade_param; +extern const bcstring be_const_str_lv_draw_rect_dsc; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_exec_rules; extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_lv_draw_mask_angle_param; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_lv_draw_img_dsc; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_dot_def; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_lv_area; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_lv_draw_mask_map_param; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_SERIAL_7O1; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 8b7d4ce94..ae1456191 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1067 +1,1069 @@ -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_NRG_CF1); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, NULL); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, NULL); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_draw_mask_fade_param_cfg); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_available); -be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SERIAL_8O2); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_get_string); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_HM10_TX); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_HRE_CLOCK); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_ILI9341_CS); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_ILI9488_CS); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SERIAL_6N1); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SERIAL_8E1); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_BL0940_RX); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_lv_draw_mask_angle_param_cfg); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_draw_mask_common_dsc); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, NULL); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_AudioFileSource); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SERIAL_7O2); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SERIAL_5N1); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_LE01MR_TX); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SERIAL_5O2); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_DDSU666_TX); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_DCKI); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SERIAL_5E1); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_SERIAL_7O1); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_I2C_SCL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_IBEACON_TX); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_DHT11_OUT); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_exec_rules); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_HM10_RX); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SERIAL_5N2); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SERIAL_6O1); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SHELLY_DIMMER_BOOT0); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, NULL); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, NULL); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SERIAL_5O1); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_lv_point); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_CHANGE); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SDM630_TX); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_HPMA_RX); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_HRE_DATA); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_SERIAL_6N2); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_lv_draw_mask_map_param); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_I2S_IN_DATA); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_for); be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_DHT22); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_wire1); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_AZ_TXD); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_IBEACON_TX); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_wire1); be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_lv_draw_mask_radius_param); +be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_NRF24_DC); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, NULL); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SERIAL_6O1); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_lv_draw_mask_line_param); +be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_I2S_OUT_DATA); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_NRG_SEL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SERIAL_7O2); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_lv_draw_mask_radius_param_cfg); +be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, NULL); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_BS814_CLK); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_DDSU666_RX); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_IBEACON_RX); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_lv_draw_line_dsc); +be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_LE01MR_RX); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_MHZ_TXD); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_I2S_IN_SLCT); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_MCP39F5_RST); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_NRF24_CS); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_KEY1); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SERIAL_5O1); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SERIAL_8E2); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_TFMINIPLUS_RX); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_draw_mask_saved); +be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_lv_draw_label_dsc); +be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_KEY1_INV_NP); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SYMBOL_GPS); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, NULL); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_INPUT_PULLDOWN); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, NULL); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_lv_sqrt_res); +be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_lv_draw_mask_fade_param); +be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_draw_rect_dsc); +be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, NULL); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_EPD_DATA); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_LED1_INV); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_ROT1B); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_INPUT_PULLUP); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MAX31855DO); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_SERIAL_5O2); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SERIAL_8E1); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_draw_mask_map_param_cfg); +be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, NULL); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SERIAL_5N2); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, NULL); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SERIAL_7E1); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_SERIAL_7N2); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_draw_mask_angle_param); +be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_lv_draw_img_dsc); +be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, &be_const_str_lv_area); +be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_AudioGeneratorMP3); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_OPTION_A); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_lv_draw_mask_line_param_cfg); +be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_DAC); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SERIAL_7O1); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_lv_btnmatrix, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_I2C_Driver, NULL, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_content_start, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str_return, NULL, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_get, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_I2C_SDA, - NULL, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_WIEGAND_D1, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_geti, - (const bstring *)&be_const_str_MGC3130_XFER, - NULL, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_SERIAL_6O2, - (const bstring *)&be_const_str_OLED_RESET, - NULL, - (const bstring *)&be_const_str_add_header, - NULL, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_SYMBOL_SETTINGS, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_MD5, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_do, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_register_button_encoder, - (const bstring *)&be_const_str_floor, - NULL, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str__end_transmission, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_SYMBOL_TRASH, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_init, - (const bstring *)&be_const_str_SYMBOL_CALL, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_lv_sqrt_res, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_SERIAL_8N1, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_PULLDOWN, - NULL, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_atan, - (const bstring *)&be_const_str_AS3935, - NULL, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_clear, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_SERIAL_7N2, - (const bstring *)&be_const_str_asstring, - NULL, - (const bstring *)&be_const_str_exp, - (const bstring *)&be_const_str_IRSEND, - NULL, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_SERIAL_7E1, - (const bstring *)&be_const_str_dac_voltage, - NULL, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_collect, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_lv_area, - NULL, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_SERIAL_5E2, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_ZIGBEE_RST, - NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_module, - (const bstring *)&be_const_str_content_stop, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_dot_p1, - NULL, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_count, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_reverse_gamma10, - (const bstring *)&be_const_str_search, - (const bstring *)&be_const_str_lv_color, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_ceil, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_find_key_i, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MAX, - (const bstring *)&be_const_str_SSD1331_DC, - (const bstring *)&be_const_str_url_encode, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - NULL, - (const bstring *)&be_const_str_lv_imgbtn, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_SYMBOL_VOLUME_MID, - (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_map, + (const bstring *)&be_const_str_DDS2382_TX, (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_item, - (const bstring *)&be_const_str_load_freetype_font, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_AudioOutput, NULL, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_add_driver, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_lv_page, NULL, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_WEBCAM_VSYNC, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_MAX7219CLK, + NULL, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str__ccmd, + (const bstring *)&be_const_str_SYMBOL_PAUSE, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_rand, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_save, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_SERIAL_6N1, + (const bstring *)&be_const_str_SERIAL_5N1, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_get, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_has_arg, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_SERIAL_8N2, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_DDSU666_TX, (const bstring *)&be_const_str_read_bytes, - (const bstring *)&be_const_str_SYMBOL_CUT, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + NULL, + (const bstring *)&be_const_str_SYMBOL_SHUFFLE, + (const bstring *)&be_const_str_gamma8, + (const bstring *)&be_const_str_time_reached, + (const bstring *)&be_const_str_SERIAL_7E2, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str___lower__, + NULL, + NULL, + (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str_cosh, + (const bstring *)&be_const_str_EC_C25519, + NULL, + (const bstring *)&be_const_str_MGC3130_RESET, + NULL, + (const bstring *)&be_const_str_static, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_DHT11, + NULL, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_find, + (const bstring *)&be_const_str_add_cmd, + (const bstring *)&be_const_str_imin, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_add_rule, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_event, + (const bstring *)&be_const_str__get_cb, + (const bstring *)&be_const_str_RFRECV, + NULL, NULL, (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_MHZ_TXD, - NULL, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_SYMBOL_EJECT, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_rtc, - (const bstring *)&be_const_str_SYMBOL_USB, - NULL, - (const bstring *)&be_const_str_DDS2382_TX, - NULL, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_attrdump, - (const bstring *)&be_const_str_memory, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_setrange, - (const bstring *)&be_const_str_SERIAL_8E2, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - NULL, - NULL, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_opt_neq, - NULL, - NULL, - (const bstring *)&be_const_str_erase, - NULL, - (const bstring *)&be_const_str_gen_cb, - (const bstring *)&be_const_str_ADC_LIGHT, - NULL, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_lv_event_cb, - (const bstring *)&be_const_str_concat, - NULL, - (const bstring *)&be_const_str_on, (const bstring *)&be_const_str_content_flush, - (const bstring *)&be_const_str_real, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str__ccmd, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_webclient, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_KEY1_NP, + NULL, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_get_string, + NULL, + (const bstring *)&be_const_str_SERIAL_5E1, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_as, + (const bstring *)&be_const_str_lv_draw_mask_common_dsc, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_RF_SENSOR, (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_SYMBOL_BACKSPACE, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_KEY1_PD, - NULL, - (const bstring *)&be_const_str_sinh, - (const bstring *)&be_const_str_lv_draw_rect_dsc, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_write_bit, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_ROT1A_NP, - (const bstring *)&be_const_str_WE517_RX, - NULL, - (const bstring *)&be_const_str_ETH_PHY_MDC, - NULL, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_detect, - (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_AudioGenerator, (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_classof, NULL, - (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_TCP_RX, + (const bstring *)&be_const_str_SYMBOL_OK, NULL, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_lv_page, - (const bstring *)&be_const_str_rad, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_name, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_Wire, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_opt_call, NULL, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_lv_draw_mask_radius_param, - (const bstring *)&be_const_str_lv_label, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, - (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_scan, NULL, NULL, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_lv_draw_line_dsc, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_TM1638CLK, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_AudioGeneratorWAV, + NULL, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_lv_tabview, + (const bstring *)&be_const_str_CHANGE, + NULL, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_detect, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_ADC_TEMP, + NULL, (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_DSB_OUT, NULL, (const bstring *)&be_const_str_SYMBOL_PASTE, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - NULL, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str__read, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_DAC, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_lv_indev, - (const bstring *)&be_const_str_ZEROCROSS, - NULL, - (const bstring *)&be_const_str_SERIAL_8O1, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str__drivers, - (const bstring *)&be_const_str_setitem, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_OUTPUT_LO, - (const bstring *)&be_const_str_SERIAL_7E2, - (const bstring *)&be_const_str_for, + (const bstring *)&be_const_str_SR04_ECHO, (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_log, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_encrypt, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_CC1101_GDO2, + NULL, + (const bstring *)&be_const_str_WEBCAM_XCLK, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_push, + (const bstring *)&be_const_str_PULLDOWN, + (const bstring *)&be_const_str_LOW, + NULL, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_lv_point, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_SERIAL_5E2, + NULL, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_count, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_cos, + (const bstring *)&be_const_str_sinh, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_TELEINFO_RX, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_SYMBOL_DIRECTORY, + (const bstring *)&be_const_str_CSE7761_RX, + NULL, + (const bstring *)&be_const_str_update, + NULL, + (const bstring *)&be_const_str_WEBCAM_PWDN, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_dac_voltage, + (const bstring *)&be_const_str_I2S_OUT_CLK, NULL, (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_check_privileged_access, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_srand, NULL, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_lv_draw_mask_line_param_cfg, - (const bstring *)&be_const_str_i2c_enabled, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_exists, - (const bstring *)&be_const_str_SERIAL_8N2 + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_insert, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_add_driver, + (const bstring *)&be_const_str_HM10_TX, + NULL, + (const bstring *)&be_const_str_pin, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_fromstring, + (const bstring *)&be_const_str_cmd, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_erase, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_asstring, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_atan, + NULL, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_ADC_RANGE, + NULL, + (const bstring *)&be_const_str_SYMBOL_WIFI, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_traceback, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str_LMT01, + NULL, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_lv_cb, + NULL, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_ARIRFSEL, + NULL, + NULL, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_isinstance, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_ROT1A_NP, + NULL, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_SYMBOL_LOOP, + NULL, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_toupper, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str__end_transmission, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_SERIAL_6O2, + (const bstring *)&be_const_str_add, + (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + NULL, + (const bstring *)&be_const_str_available, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_REL1, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_dot_def, + (const bstring *)&be_const_str_SYMBOL_POWER, + (const bstring *)&be_const_str_PWM1_INV, + NULL, + NULL, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_SERIAL_8O1, + (const bstring *)&be_const_str_arg, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_SERIAL_8N1, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, + NULL, + (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_I2C_SCL, + NULL, + (const bstring *)&be_const_str_PMS5003_RX, + NULL, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_fromb64, + (const bstring *)&be_const_str_lv_draw_mask_map_param, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_url_encode, + (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_finish, + NULL, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_resolvecmnd, + (const bstring *)&be_const_str_AudioOutput, + NULL, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_SYMBOL_CUT, + NULL, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_lv_indev, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_SYMBOL_WARNING, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str_MHZ_RXD }; static const struct bconststrtab m_const_string_table = { - .size = 345, - .count = 691, + .size = 346, + .count = 692, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h index ee9c2dd43..b33546c18 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h @@ -1,74 +1,75 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_tasmota_map) { - { be_const_key(log, -1), be_const_func(l_logInfo) }, - { be_const_key(gc, -1), be_const_closure(gc_closure) }, - { be_const_key(_cmd, 45), be_const_func(l_cmd) }, - { be_const_key(millis, 53), be_const_func(l_millis) }, - { be_const_key(web_send, -1), be_const_func(l_webSend) }, - { be_const_key(wire1, -1), be_const_var(0) }, - { be_const_key(response_append, -1), be_const_func(l_respAppend) }, - { be_const_key(_get_cb, 30), be_const_func(l_get_cb) }, - { be_const_key(get_free_heap, 22), be_const_func(l_getFreeHeap) }, - { be_const_key(resp_cmnd_failed, 2), be_const_func(l_respCmndFailed) }, - { be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) }, - { be_const_key(set_light, 8), be_const_closure(set_light_closure) }, - { be_const_key(resp_cmnd, 16), be_const_func(l_respCmnd) }, - { be_const_key(find_op, 34), be_const_closure(find_op_closure) }, - { be_const_key(eth, -1), be_const_func(l_eth) }, - { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, - { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, - { be_const_key(remove_rule, 1), be_const_closure(remove_rule_closure) }, - { be_const_key(get_power, -1), be_const_func(l_getpower) }, - { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, - { be_const_key(get_light, -1), be_const_closure(get_light_closure) }, - { be_const_key(exec_rules, 37), be_const_closure(exec_rules_closure) }, - { be_const_key(time_str, -1), be_const_closure(time_str_closure) }, - { be_const_key(remove_driver, 29), be_const_closure(remove_driver_closure) }, - { be_const_key(publish_result, 38), be_const_func(l_publish_result) }, - { be_const_key(rtc, -1), be_const_func(l_rtc) }, - { be_const_key(try_rule, -1), be_const_closure(try_rule_closure) }, - { be_const_key(gen_cb, 42), be_const_closure(gen_cb_closure) }, - { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, - { be_const_key(add_rule, -1), be_const_closure(add_rule_closure) }, - { be_const_key(_timers, -1), be_const_var(1) }, - { be_const_key(wire2, -1), be_const_var(2) }, - { be_const_key(run_deferred, 20), be_const_closure(run_deferred_closure) }, - { be_const_key(get_option, -1), be_const_func(l_getoption) }, - { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, - { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, - { be_const_key(resp_cmnd_str, 51), be_const_func(l_respCmndStr) }, - { be_const_key(memory, -1), be_const_func(l_memory) }, - { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, - { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, - { be_const_key(load, -1), be_const_closure(load_closure) }, - { be_const_key(publish, 55), be_const_func(l_publish) }, - { be_const_key(_ccmd, -1), be_const_var(3) }, - { be_const_key(resp_cmnd_error, 23), be_const_func(l_respCmndError) }, - { be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) }, - { be_const_key(save, -1), be_const_func(l_save) }, - { be_const_key(_drivers, -1), be_const_var(4) }, - { be_const_key(find_key_i, -1), be_const_closure(find_key_i_closure) }, - { be_const_key(wifi, 36), be_const_func(l_wifi) }, - { be_const_key(set_timer, 40), be_const_closure(set_timer_closure) }, - { be_const_key(i2c_enabled, 44), be_const_func(l_i2cenabled) }, - { be_const_key(set_power, 54), be_const_func(l_setpower) }, - { be_const_key(_rules, 14), be_const_var(5) }, - { be_const_key(delay, -1), be_const_func(l_delay) }, - { be_const_key(strftime, -1), be_const_func(l_strftime) }, - { be_const_key(time_dump, -1), be_const_func(l_time_dump) }, - { be_const_key(time_reached, 26), be_const_func(l_timereached) }, - { be_const_key(web_send_decimal, 58), be_const_func(l_webSendDecimal) }, - { be_const_key(_cb, -1), be_const_var(6) }, - { be_const_key(yield, 56), be_const_func(l_yield) }, - { be_const_key(event, -1), be_const_closure(event_closure) }, - { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, + { be_const_key(remove_rule, -1), be_const_closure(remove_rule_closure) }, { be_const_key(add_driver, -1), be_const_closure(add_driver_closure) }, + { be_const_key(web_send, -1), be_const_func(l_webSend) }, + { be_const_key(response_append, 1), be_const_func(l_respAppend) }, + { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, + { be_const_key(i2c_enabled, 55), be_const_func(l_i2cenabled) }, + { be_const_key(wifi, 57), be_const_func(l_wifi) }, + { be_const_key(add_rule, -1), be_const_closure(add_rule_closure) }, + { be_const_key(save, 21), be_const_func(l_save) }, + { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, + { be_const_key(add_cmd, 19), be_const_closure(add_cmd_closure) }, + { be_const_key(wire1, -1), be_const_var(0) }, + { be_const_key(_rules, 16), be_const_var(1) }, + { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, + { be_const_key(remove_driver, -1), be_const_closure(remove_driver_closure) }, + { be_const_key(_cb, -1), be_const_var(2) }, + { be_const_key(log, -1), be_const_func(l_logInfo) }, + { be_const_key(get_power, 12), be_const_func(l_getpower) }, + { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, + { be_const_key(event, 47), be_const_closure(event_closure) }, + { be_const_key(publish_result, -1), be_const_func(l_publish_result) }, + { be_const_key(run_deferred, 6), be_const_closure(run_deferred_closure) }, + { be_const_key(find_key_i, 38), be_const_closure(find_key_i_closure) }, + { be_const_key(millis, 33), be_const_func(l_millis) }, + { be_const_key(delay, -1), be_const_func(l_delay) }, + { be_const_key(_drivers, -1), be_const_var(3) }, + { be_const_key(resp_cmnd_failed, -1), be_const_func(l_respCmndFailed) }, + { be_const_key(get_switch, -1), be_const_func(l_getswitch) }, + { be_const_key(web_send_decimal, 53), be_const_func(l_webSendDecimal) }, + { be_const_key(set_power, -1), be_const_func(l_setpower) }, + { be_const_key(wire2, -1), be_const_var(4) }, + { be_const_key(gen_cb, 10), be_const_closure(gen_cb_closure) }, + { be_const_key(find_op, -1), be_const_closure(find_op_closure) }, + { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, + { be_const_key(_get_cb, -1), be_const_func(l_get_cb) }, + { be_const_key(strftime, 51), be_const_func(l_strftime) }, + { be_const_key(exec_rules, 27), be_const_closure(exec_rules_closure) }, + { be_const_key(_ccmd, -1), be_const_var(5) }, + { be_const_key(resp_cmnd_str, 18), be_const_func(l_respCmndStr) }, + { be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) }, + { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, + { be_const_key(load, -1), be_const_closure(load_closure) }, + { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, + { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, + { be_const_key(get_light, 50), be_const_closure(get_light_closure) }, + { be_const_key(memory, -1), be_const_func(l_memory) }, + { be_const_key(yield, 45), be_const_func(l_yield) }, + { be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) }, + { be_const_key(rtc, -1), be_const_func(l_rtc) }, + { be_const_key(get_option, -1), be_const_func(l_getoption) }, + { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, + { be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) }, + { be_const_key(_timers, -1), be_const_var(6) }, + { be_const_key(time_str, -1), be_const_closure(time_str_closure) }, + { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, + { be_const_key(set_timer, 58), be_const_closure(set_timer_closure) }, + { be_const_key(set_light, 14), be_const_closure(set_light_closure) }, + { be_const_key(publish, 2), be_const_func(l_publish) }, + { be_const_key(time_reached, -1), be_const_func(l_timereached) }, + { be_const_key(time_dump, 9), be_const_func(l_time_dump) }, + { be_const_key(eth, -1), be_const_func(l_eth) }, + { be_const_key(try_rule, 4), be_const_closure(try_rule_closure) }, + { be_const_key(_cmd, -1), be_const_func(l_cmd) }, + { be_const_key(gc, -1), be_const_closure(gc_closure) }, }; static be_define_const_map( be_class_tasmota_map, - 63 + 64 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/tasmota/xdrv_52_3_berry_tasmota.ino b/tasmota/xdrv_52_3_berry_tasmota.ino index 86e936018..ea6912b30 100644 --- a/tasmota/xdrv_52_3_berry_tasmota.ino +++ b/tasmota/xdrv_52_3_berry_tasmota.ino @@ -451,6 +451,21 @@ extern "C" { be_raise(vm, kTypeError, nullptr); } + // get power + int32_t l_getswitch(bvm *vm); + int32_t l_getswitch(bvm *vm) { + be_newobject(vm, "list"); + for (uint32_t i = 0; i < MAX_SWITCHES; i++) { + if (PinUsed(GPIO_SWT1, i)) { + be_pushbool(vm, Switch.virtual_state[i] == PRESSED); + be_data_push(vm, -2); + be_pop(vm, 1); + } + } + be_pop(vm, 1); + be_return(vm); // Return + } + #ifdef USE_I2C // I2C specific // Berry: `i2c_enabled(index:int) -> bool` is I2C device enabled From 036430ec6591e4e61f6e0537c7dc1589cff589d8 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Sun, 19 Sep 2021 23:27:51 +0200 Subject: [PATCH 222/317] Berry improve `introspect.toptr()` (#13178) * Berry improve `introspect.toptr()` * Fix unwanted change --- lib/libesp32/Berry/default/be_lvgl_ctypes.c | 15 ++++++++++++--- lib/libesp32/Berry/src/be_introspectlib.c | 11 ++++++++--- lib/libesp32/Berry/src/be_strlib.c | 3 +++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes.c b/lib/libesp32/Berry/default/be_lvgl_ctypes.c index 1a4c3b046..119f5982c 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes.c +++ b/lib/libesp32/Berry/default/be_lvgl_ctypes.c @@ -6,7 +6,7 @@ #ifdef USE_LVGL #include "lvgl.h" - +extern __attribute__((noreturn)) void be_raisef(bvm *vm, const char *except, const char *msg, ...); // binary search within an array of sorted strings // the first 4 bytes are a pointer to a string @@ -259,6 +259,14 @@ int be_ctypes_setmember(bvm *vm) { be_pop(vm, 1); } + // If the value is a pointer, replace with an int of same value (works only on 32 bits CPU) + if (be_iscomptr(vm, 3)) { + void * v = be_tocomptr(vm, 3); + be_pushint(vm, (int32_t) v); + be_moveto(vm, -1, 3); + be_pop(vm, 1); + } + be_getmember(vm, 1, ".def"); const be_ctypes_structure_t *definitions; definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); @@ -304,9 +312,10 @@ int be_ctypes_setmember(bvm *vm) { be_pop(vm, 5); be_return_nil(vm); } + } else { + be_raisef(vm, "attribute_error", "class '%s' cannot assign to attribute '%s'", + be_classname(vm, 1), be_tostring(vm, 2)); } - - be_return_nil(vm); } BE_EXPORT_VARIABLE extern const bclass be_class_bytes; diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index dcabd309b..171c5a03f 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -84,7 +84,7 @@ static int m_toptr(bvm *vm) if (top >= 1) { bvalue *v = be_indexof(vm, 1); if (var_basetype(v) >= BE_GCOBJECT) { - be_pushint(vm, (int) var_toobj(v)); + be_pushcomptr(vm, var_toobj(v)); be_return(vm); } else { be_raise(vm, "value_error", "unsupported for this type"); @@ -97,7 +97,12 @@ static int m_fromptr(bvm *vm) { int top = be_top(vm); if (top >= 1) { - int v = be_toint(vm, 1); + void* v; + if (be_iscomptr(vm, 1)) { + v = be_tocomptr(vm, 1); + } else { + v = (void*) be_toint(vm, 1); + } if (v) { bgcobject * ptr = (bgcobject*) v; if (var_basetype(ptr) >= BE_GCOBJECT) { @@ -106,8 +111,8 @@ static int m_fromptr(bvm *vm) } else { be_raise(vm, "value_error", "unsupported for this type"); } + be_return(vm); } - be_return(vm); } be_return_nil(vm); } diff --git a/lib/libesp32/Berry/src/be_strlib.c b/lib/libesp32/Berry/src/be_strlib.c index 257bd8c1a..16cdaee9a 100644 --- a/lib/libesp32/Berry/src/be_strlib.c +++ b/lib/libesp32/Berry/src/be_strlib.c @@ -97,6 +97,9 @@ static bstring* sim2str(bvm *vm, bvalue *v) case BE_MODULE: module2str(sbuf, v); break; + case BE_COMPTR: + sprintf(sbuf, "", var_toobj(v)); + break; default: strcpy(sbuf, "(unknow value)"); break; From 2143491b377cdc09b2125bad89a3da1e88378f59 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 20 Sep 2021 14:31:00 +0200 Subject: [PATCH 223/317] Refactor Serial.swap --- tasmota/support.ino | 238 +++++++++++++++++++----------------- tasmota/support_tasmota.ino | 1 + tasmota/tasmota.ino | 8 -- 3 files changed, 125 insertions(+), 122 deletions(-) diff --git a/tasmota/support.ino b/tasmota/support.ino index c13b2d502..cae47b453 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -981,120 +981,6 @@ int GetStateNumber(const char *state_text) return state_number; } -String GetSerialConfig(void) { - // Settings->serial_config layout - // b000000xx - 5, 6, 7 or 8 data bits - // b00000x00 - 1 or 2 stop bits - // b000xx000 - None, Even or Odd parity - - const static char kParity[] PROGMEM = "NEOI"; - - char config[4]; - config[0] = '5' + (Settings->serial_config & 0x3); - config[1] = pgm_read_byte(&kParity[(Settings->serial_config >> 3) & 0x3]); - config[2] = '1' + ((Settings->serial_config >> 2) & 0x1); - config[3] = '\0'; - return String(config); -} - -#if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 -// temporary workaround, see https://github.com/espressif/arduino-esp32/issues/5287 -#include -uint32_t GetSerialBaudrate(void) { - uint32_t br; - uart_get_baudrate(0, &br); - return (br / 300) * 300; // Fix ESP32 strange results like 115201 -} -#else -uint32_t GetSerialBaudrate(void) { - return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201 -} -#endif - -void SetSerialBegin(void) { - TasmotaGlobal.baudrate = Settings->baudrate * 300; - AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_SERIAL "Set to %s %d bit/s"), GetSerialConfig().c_str(), TasmotaGlobal.baudrate); - Serial.flush(); -#ifdef ESP8266 - Serial.begin(TasmotaGlobal.baudrate, (SerialConfig)pgm_read_byte(kTasmotaSerialConfig + Settings->serial_config)); - if (15==Pin(GPIO_TXD,0) && 13==Pin(GPIO_RXD,0)) { - Serial.flush(); - Serial.swap(); - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL "Serial pins swapped to alternate")); - } -#endif // ESP8266 -#ifdef ESP32 - delay(10); // Allow time to cleanup queues - if not used hangs ESP32 - Serial.end(); - delay(10); // Allow time to cleanup queues - if not used hangs ESP32 - uint32_t config = pgm_read_dword(kTasmotaSerialConfig + Settings->serial_config); - Serial.begin(TasmotaGlobal.baudrate, config); -#endif // ESP32 -} - -void SetSerialConfig(uint32_t serial_config) { - if (serial_config > TS_SERIAL_8O2) { - serial_config = TS_SERIAL_8N1; - } - if (serial_config != Settings->serial_config) { - Settings->serial_config = serial_config; - SetSerialBegin(); - } -} - -void SetSerialBaudrate(uint32_t baudrate) { - TasmotaGlobal.baudrate = baudrate; - Settings->baudrate = TasmotaGlobal.baudrate / 300; - if (GetSerialBaudrate() != TasmotaGlobal.baudrate) { - SetSerialBegin(); - } -} - -void SetSerial(uint32_t baudrate, uint32_t serial_config) { - Settings->flag.mqtt_serial = 0; // CMND_SERIALSEND and CMND_SERIALLOG - Settings->serial_config = serial_config; - TasmotaGlobal.baudrate = baudrate; - Settings->baudrate = TasmotaGlobal.baudrate / 300; - SetSeriallog(LOG_LEVEL_NONE); - SetSerialBegin(); -} - -void ClaimSerial(void) { - TasmotaGlobal.serial_local = true; - AddLog(LOG_LEVEL_INFO, PSTR("SNS: Hardware Serial")); - SetSeriallog(LOG_LEVEL_NONE); - TasmotaGlobal.baudrate = GetSerialBaudrate(); - Settings->baudrate = TasmotaGlobal.baudrate / 300; -} - -void SerialSendRaw(char *codes) -{ - char *p; - char stemp[3]; - uint8_t code; - - int size = strlen(codes); - - while (size > 1) { - strlcpy(stemp, codes, sizeof(stemp)); - code = strtol(stemp, &p, 16); - Serial.write(code); - size -= 2; - codes += 2; - } -} - -// values is a comma-delimited string: e.g. "72,101,108,108,111,32,87,111,114,108,100,33,10" -void SerialSendDecimal(char *values) -{ - char *p; - uint8_t code; - for (char* str = strtok_r(values, ",", &p); str; str = strtok_r(nullptr, ",", &p)) { - code = (uint8_t)atoi(str); - Serial.write(code); - } -} - uint32_t GetHash(const char *buffer, size_t size) { uint32_t hash = 0; @@ -1899,6 +1785,130 @@ uint32_t JsonParsePath(JsonParserObject *jobj, const char *spath, char delim, fl #endif // USE_SCRIPT +/*********************************************************************************************\ + * Serial +\*********************************************************************************************/ + +String GetSerialConfig(void) { + // Settings->serial_config layout + // b000000xx - 5, 6, 7 or 8 data bits + // b00000x00 - 1 or 2 stop bits + // b000xx000 - None, Even or Odd parity + + const static char kParity[] PROGMEM = "NEOI"; + + char config[4]; + config[0] = '5' + (Settings->serial_config & 0x3); + config[1] = pgm_read_byte(&kParity[(Settings->serial_config >> 3) & 0x3]); + config[2] = '1' + ((Settings->serial_config >> 2) & 0x1); + config[3] = '\0'; + return String(config); +} + +#if defined(ESP32) && CONFIG_IDF_TARGET_ESP32C3 +// temporary workaround, see https://github.com/espressif/arduino-esp32/issues/5287 +#include +uint32_t GetSerialBaudrate(void) { + uint32_t br; + uart_get_baudrate(0, &br); + return (br / 300) * 300; // Fix ESP32 strange results like 115201 +} +#else +uint32_t GetSerialBaudrate(void) { + return (Serial.baudRate() / 300) * 300; // Fix ESP32 strange results like 115201 +} +#endif + +#ifdef ESP8266 +void SetSerialSwap(void) { + if ((15 == Pin(GPIO_TXD)) && (13 == Pin(GPIO_RXD))) { + Serial.flush(); + Serial.swap(); + AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL "Serial pins swapped to alternate")); + } +} +#endif + +void SetSerialBegin(void) { + TasmotaGlobal.baudrate = Settings->baudrate * 300; + AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_SERIAL "Set to %s %d bit/s"), GetSerialConfig().c_str(), TasmotaGlobal.baudrate); + Serial.flush(); +#ifdef ESP8266 + Serial.begin(TasmotaGlobal.baudrate, (SerialConfig)pgm_read_byte(kTasmotaSerialConfig + Settings->serial_config)); + SetSerialSwap(); +#endif // ESP8266 +#ifdef ESP32 + delay(10); // Allow time to cleanup queues - if not used hangs ESP32 + Serial.end(); + delay(10); // Allow time to cleanup queues - if not used hangs ESP32 + uint32_t config = pgm_read_dword(kTasmotaSerialConfig + Settings->serial_config); + Serial.begin(TasmotaGlobal.baudrate, config); +#endif // ESP32 +} + +void SetSerialConfig(uint32_t serial_config) { + if (serial_config > TS_SERIAL_8O2) { + serial_config = TS_SERIAL_8N1; + } + if (serial_config != Settings->serial_config) { + Settings->serial_config = serial_config; + SetSerialBegin(); + } +} + +void SetSerialBaudrate(uint32_t baudrate) { + TasmotaGlobal.baudrate = baudrate; + Settings->baudrate = TasmotaGlobal.baudrate / 300; + if (GetSerialBaudrate() != TasmotaGlobal.baudrate) { + SetSerialBegin(); + } +} + +void SetSerial(uint32_t baudrate, uint32_t serial_config) { + Settings->flag.mqtt_serial = 0; // CMND_SERIALSEND and CMND_SERIALLOG + Settings->serial_config = serial_config; + TasmotaGlobal.baudrate = baudrate; + Settings->baudrate = TasmotaGlobal.baudrate / 300; + SetSeriallog(LOG_LEVEL_NONE); + SetSerialBegin(); +} + +void ClaimSerial(void) { + TasmotaGlobal.serial_local = true; + AddLog(LOG_LEVEL_INFO, PSTR("SNS: Hardware Serial")); + SetSeriallog(LOG_LEVEL_NONE); + TasmotaGlobal.baudrate = GetSerialBaudrate(); + Settings->baudrate = TasmotaGlobal.baudrate / 300; +} + +void SerialSendRaw(char *codes) +{ + char *p; + char stemp[3]; + uint8_t code; + + int size = strlen(codes); + + while (size > 1) { + strlcpy(stemp, codes, sizeof(stemp)); + code = strtol(stemp, &p, 16); + Serial.write(code); + size -= 2; + codes += 2; + } +} + +// values is a comma-delimited string: e.g. "72,101,108,108,111,32,87,111,114,108,100,33,10" +void SerialSendDecimal(char *values) +{ + char *p; + uint8_t code; + for (char* str = strtok_r(values, ",", &p); str; str = strtok_r(nullptr, ",", &p)) { + code = (uint8_t)atoi(str); + Serial.write(code); + } +} + /*********************************************************************************************\ * Sleep aware time scheduler functions borrowed from ESPEasy \*********************************************************************************************/ diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 31b4e0e17..f76d8cba3 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -1779,6 +1779,7 @@ void GpioInit(void) #ifdef ESP8266 if ((2 == Pin(GPIO_TXD)) || (H801 == TasmotaGlobal.module_type)) { Serial.set_tx(2); } + SetSerialSwap(); #endif uint32_t sspi_mosi = (PinUsed(GPIO_SSPI_SCLK) && PinUsed(GPIO_SSPI_MOSI)) ? SPI_MOSI : SPI_NONE; diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 2dbb8f948..980f0b7bf 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -408,14 +408,6 @@ void setup(void) { BerryInit(); #endif // USE_BERRY -#ifdef ESP8266 - if (15==Pin(GPIO_TXD,0) && 13==Pin(GPIO_RXD,0)) { - AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_SERIAL "Swapping Serial pins to alternate")); - Serial.flush(); - Serial.swap(); - } -#endif - XdrvCall(FUNC_PRE_INIT); XsnsCall(FUNC_PRE_INIT); From 2d53743ed2f40a2448972908d850d815ab285b58 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 20 Sep 2021 15:10:30 +0200 Subject: [PATCH 224/317] Update RELEASENOTES.md --- RELEASENOTES.md | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 3b4496ee8..7849c82ce 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -107,9 +107,9 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) +- Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server -- Support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin - Support for influxdb using ``#define USE_INFLUXDB`` and several ``Ifx`` commands - Support for AM2320 Temperature and Humidity Sensor by Lars Wessels [#12485](https://github.com/arendst/Tasmota/issues/12485) - Support for Technoline WS2300-15 Anemometer [#12573](https://github.com/arendst/Tasmota/issues/12573) @@ -119,28 +119,30 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) - Support for IKEA VINDRIKTNING particle concentration sensor [#12976](https://github.com/arendst/Tasmota/issues/12976) - Initial support for Tasmota Mesh (TasMesh) providing node/broker communication using ESP-NOW [#11939](https://github.com/arendst/Tasmota/issues/11939) -- Inital support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) -- Berry ESP32 partition manager [#12465](https://github.com/arendst/Tasmota/issues/12465) -- Berry ESP32 support for I2S audio mp3 playback -- Berry ESP32 support for vararg -- Berry ESP32 support for Curve 25519 EC crypto +- Initial support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) - Rule event support as JSON payload [#12496](https://github.com/arendst/Tasmota/issues/12496) - MQTT minimum password length restriction in GUI [#12553](https://github.com/arendst/Tasmota/issues/12553) -- Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) +- ESP32 Berry partition manager [#12465](https://github.com/arendst/Tasmota/issues/12465) +- ESP32 Berry class ``webclient`` for HTTP/HTTPS requests +- ESP32 Berry support for I2S audio mp3 playback +- ESP32 Berry support for vararg +- ESP32 Berry support for Curve 25519 EC crypto +- ESP32 Berry support for ESP32/ESP32S2 DAC gpio +- ESP32 Berry support for Serial +- ESP32 support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin +- ESP32-S2 support for GPIOs +- ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) +- ESP32 crash recorder ``Status 12`` for ESP32/ESP32-S2/ESP32-C3, supporting Esp-idf 3.3/4.4 ### Changed - Move firmware binaries to https://github.com/arendst/Tasmota-firmware/tree/main/release-firmware -- ESP32 core library from v1.0.6 to v1.0.7.3 - IRremoteESP8266 library from v2.7.18 to v2.7.20 - NeoPixelBus library from v2.6.3 to v2.6.7 - Message ``Upload buffer miscompare`` into ``Not enough space`` -- ESP32 Ethernet Phy Type information to IDF v3+ +- Command ``DisplayDimmer`` has now range 0..100 instead of 0..15 - Speed up initial GUI console refresh - Enable UFILESYS, GUI_TRASH_FILE and GUI_EDIT_FILE for any device compiled with more than 1M flash size -- ESP32 internal sensor driver id moved from 87 to 127 - Supported sensor driver range extended from 96 to 128 -- Disable PSRAM on unsupported hardware -- ESP32 remove GPIO initialization to INPUT from not used GPIOs to allow JTAG support - Relax NTP poll if no ntpserver can be resolved by DNS - Shelly EM template needs to use GPIO ``ADE7953_IRQ 2`` - Make Sonoff L1 MusicSync persistent [#12008](https://github.com/arendst/Tasmota/issues/12008) @@ -153,26 +155,27 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Prometheus: All metrics are prefixed with ``tasmota_`` [#12842](https://github.com/arendst/Tasmota/issues/12842) Memory metrics have been cleaned up to work consistently between ESP8266 and ESP32 The device name is reported as an info metric +- ESP32 core library from v1.0.6 to v1.0.7.4 +- ESP32 Ethernet Phy Type information to IDF v3+ +- ESP32 internal sensor driver id moved from 87 to 127 +- ESP32 disable PSRAM on unsupported hardware +- ESP32 remove GPIO initialization to INPUT from not used GPIOs to allow JTAG support +- ESP32 M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now +- ESP32 minimum PWM Frequency lowered to 2Hz [#13123](https://github.com/arendst/Tasmota/issues/13123) +- ESP32 shrinked Webcam build, uses now `USE_TASMOTA_DISCOVERY` [#13148](https://github.com/arendst/Tasmota/issues/13148) ### Fixed -- ESP32 core v2.0.0 setting hostname -- ESP32-C3 settings layout for configuration backup and restore -- ESP32-Solo OTA upgrade - Sonoff L1 (lite) smoother color transitions - DDS238-2 wrong reactive power value [#12283](https://github.com/arendst/Tasmota/issues/12283) -- ESP32 Webcam add boundary marker before sending mjpeg image [#12376](https://github.com/arendst/Tasmota/issues/12376) - NO VALID JSON regression from may 4th [#12440](https://github.com/arendst/Tasmota/issues/12440) - Telegram response decoding stopped working after 20210621 and exception on long result message [#12451](https://github.com/arendst/Tasmota/issues/12451) - Neopool compile error on DEBUG_TASMOTA_SENSOR [#12464](https://github.com/arendst/Tasmota/issues/12464) -- Berry button handlers and error messages [#12521](https://github.com/arendst/Tasmota/issues/12521) - Scripter and Display MQTT errors due to MQTT_DATA move to String [#12525](https://github.com/arendst/Tasmota/issues/12525) - Scripter moving average and sml input validation [#12541](https://github.com/arendst/Tasmota/issues/12541) - Zigbee Hue angle encoding [#12545](https://github.com/arendst/Tasmota/issues/12545) - Exception 28 when unable to send MQTT message and a topic name without a slash '/' [#12555](https://github.com/arendst/Tasmota/issues/12555) - Wi-Fi initial setup workaround for 11n only routers [#12566](https://github.com/arendst/Tasmota/issues/12566) -- ESP32 do not use chip temperature sensor as global temperature if external temperature sensor is used [#12630](https://github.com/arendst/Tasmota/issues/12630) - Discovery fails when using ``%hostname%`` in a topic [#12710](https://github.com/arendst/Tasmota/issues/12710) -- ESP32 buzzer in PWM mode exception [#12717](https://github.com/arendst/Tasmota/issues/12717) - Neopool communication error [#12813](https://github.com/arendst/Tasmota/issues/12813) - Shelly Dimmer 2 Energy usage [#12815](https://github.com/arendst/Tasmota/issues/12815) - WDT reset on shutters with stepper motors during deceleration [#12849](https://github.com/arendst/Tasmota/issues/12849) @@ -182,4 +185,11 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Hass and Tasmota discovery prefix topic notifications [#12972](https://github.com/arendst/Tasmota/issues/12972) - OpenTherm invalid JSON [#13028](https://github.com/arendst/Tasmota/issues/13028) - MQTT TLS related connection timing errors [#13033](https://github.com/arendst/Tasmota/issues/13033) +- ESP32 core v2.0.0 setting hostname +- ESP32-C3 settings layout for configuration backup and restore +- ESP32-Solo OTA upgrade +- ESP32 Webcam add boundary marker before sending mjpeg image [#12376](https://github.com/arendst/Tasmota/issues/12376) +- ESP32 Berry button handlers and error messages [#12521](https://github.com/arendst/Tasmota/issues/12521) +- ESP32 do not use chip temperature sensor as global temperature if external temperature sensor is used [#12630](https://github.com/arendst/Tasmota/issues/12630) +- ESP32 buzzer in PWM mode exception [#12717](https://github.com/arendst/Tasmota/issues/12717) - ESP32 crash when PSRAM is absent and ``BOARD_HAS_PSRAM`` set [#13037](https://github.com/arendst/Tasmota/issues/13037) From 84b7acc0598350fa4ac627e51afed8f2e9d5ea30 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 20 Sep 2021 15:30:12 +0200 Subject: [PATCH 225/317] Refactor USE_AHT2x --- tasmota/my_user_config.h | 2 +- tasmota/support_features.ino | 2 +- tasmota/tasmota_configurations.h | 2 +- tasmota/tasmota_configurations_ESP32.h | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 768e60a09..fd68aeb96 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -623,7 +623,7 @@ // #define USE_DHT12 // [I2cDriver41] Enable DHT12 humidity and temperature sensor (I2C address 0x5C) (+0k7 code) // #define USE_DS1624 // [I2cDriver42] Enable DS1624, DS1621 temperature sensor (I2C addresses 0x48 - 0x4F) (+1k2 code) // #define USE_AHT1x // [I2cDriver43] Enable AHT10/15 humidity and temperature sensor (I2C address 0x38, 0x39) (+0k8 code) -// #define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) +// #define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) // #define USE_WEMOS_MOTOR_V1 // [I2cDriver44] Enable Wemos motor driver V1 (I2C addresses 0x2D - 0x30) (+0k7 code) // #define WEMOS_MOTOR_V1_ADDR 0x30 // Default I2C address 0x30 // #define WEMOS_MOTOR_V1_FREQ 1000 // Default frequency diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index 114809a00..a4311ea74 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -509,7 +509,7 @@ void ResponseAppendFeatures(void) #if defined(USE_ENERGY_SENSOR) && defined(USE_LE01MR) feature5 |= 0x08000000; // xnrg_13_fif_le01mr.ino #endif -#if defined(USE_I2C) && defined(USE_AHT1x) +#if defined(USE_I2C) && (defined(USE_AHT1x) || defined(USE_AHT2x)) feature5 |= 0x10000000; // xsns_63_aht1x.ino #endif #if defined(USE_I2C) && defined(USE_WEMOS_MOTOR_V1) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index e00ed0c22..c7c315cbb 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -120,7 +120,7 @@ #define USE_DHT12 // [I2cDriver41] Enable DHT12 humidity and temperature sensor (I2C address 0x5C) (+0k7 code) #define USE_DS1624 // [I2cDriver42] Enable DS1624, DS1621 temperature sensor (I2C addresses 0x48 - 0x4F) (+1k2 code) //#define USE_AHT1x // [I2cDriver43] Enable AHT10/15 humidity and temperature sensor (I2C address 0x38, 0x39) (+0k8 code) -// #define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) +//#define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) #define USE_WEMOS_MOTOR_V1 // [I2cDriver44] Enable Wemos motor driver V1 (I2C addresses 0x2D - 0x30) (+0k7 code) #define WEMOS_MOTOR_V1_ADDR 0x30 // Default I2C address 0x30 #define WEMOS_MOTOR_V1_FREQ 1000 // Default frequency diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 658835b2f..76587649d 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -294,7 +294,7 @@ //#define USE_DHT12 // [I2cDriver41] Enable DHT12 humidity and temperature sensor (I2C address 0x5C) (+0k7 code) //#define USE_DS1624 // [I2cDriver42] Enable DS1624, DS1621 temperature sensor (I2C addresses 0x48 - 0x4F) (+1k2 code) //#define USE_AHT1x // [I2cDriver43] Enable AHT10/15 humidity and temperature sensor (I2C address 0x38, 0x39) (+0k8 code) -// #define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) +//#define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) //#define USE_WEMOS_MOTOR_V1 // [I2cDriver44] Enable Wemos motor driver V1 (I2C addresses 0x2D - 0x30) (+0k7 code) #define WEMOS_MOTOR_V1_ADDR 0x30 // Default I2C address 0x30 #define WEMOS_MOTOR_V1_FREQ 1000 // Default frequency @@ -428,7 +428,7 @@ #define USE_DHT12 // [I2cDriver41] Enable DHT12 humidity and temperature sensor (I2C address 0x5C) (+0k7 code) #define USE_DS1624 // [I2cDriver42] Enable DS1624, DS1621 temperature sensor (I2C addresses 0x48 - 0x4F) (+1k2 code) //#define USE_AHT1x // [I2cDriver43] Enable AHT10/15 humidity and temperature sensor (I2C address 0x38, 0x39) (+0k8 code) -// #define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) +//#define USE_AHT2x // [I2cDriver43] Enable AHT20 instead of AHT1x humidity and temperature sensor (I2C address 0x38) (+0k8 code) #define USE_WEMOS_MOTOR_V1 // [I2cDriver44] Enable Wemos motor driver V1 (I2C addresses 0x2D - 0x30) (+0k7 code) #define WEMOS_MOTOR_V1_ADDR 0x30 // Default I2C address 0x30 #define WEMOS_MOTOR_V1_FREQ 1000 // Default frequency From 68b06ceb47561725d06029b4a9db381e0bda164b Mon Sep 17 00:00:00 2001 From: Ziding Zhang Date: Mon, 20 Sep 2021 15:01:45 +0100 Subject: [PATCH 226/317] Create SECURITY.md I'd like to report a security issue but cannot find contact instructions on your repository. If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub [recommends](https://docs.github.com/en/code-security/getting-started/adding-a-security-policy-to-your-repository) this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future. Thank you for your consideration! --- SECURITY.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..5041b2f20 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,5 @@ +# Security Policy + +## Reporting a Vulnerability + +Please report security issues to From 0f0ea206b5cba00b7af461adaafcfc6a33dd723d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 20 Sep 2021 16:07:40 +0200 Subject: [PATCH 227/317] Update SECURITY.md --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 5041b2f20..f0a8de1ed 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,4 +2,4 @@ ## Reporting a Vulnerability -Please report security issues to +Please report security issues to https://sidweb.nl/cms3/en/contact From 6a3dd401dc2743212a474a34730af02f9a22a132 Mon Sep 17 00:00:00 2001 From: Arnold <48472227+Arnold-n@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:31:21 +0200 Subject: [PATCH 228/317] SCD40 disabled by default in sensors image --- tasmota/tasmota_configurations.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 35a903c58..fa3fecf4d 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -107,7 +107,7 @@ //#define USE_MGC3130 // [I2cDriver27] Enable MGC3130 Electric Field Effect Sensor (I2C address 0x42) (+2k7 code, 0k3 mem) //#define USE_MAX44009 // [I2cDriver28] Enable MAX44009 Ambient Light sensor (I2C addresses 0x4A and 0x4B) (+0k8 code) #define USE_SCD30 // [I2cDriver29] Enable Sensiron SCd30 CO2 sensor (I2C address 0x61) (+3k3 code) -#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k5 code) +//#define USE_SCD40 // [I2cDriver62] Enable Sensiron SCd40 CO2 sensor (I2C address 0x62) (+3k5 code) //#define USE_SPS30 // [I2cDriver30] Enable Sensiron SPS30 particle sensor (I2C address 0x69) (+1.7 code) #define USE_ADE7953 // [I2cDriver7] Enable ADE7953 Energy monitor as used on Shelly 2.5 (I2C address 0x38) (+1k5) #define USE_VL53L0X // [I2cDriver31] Enable VL53L0x time of flight sensor (I2C address 0x29) (+4k code) From f66c25ee5407c239052524f618160834d00b6cb7 Mon Sep 17 00:00:00 2001 From: Arnold <48472227+Arnold-n@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:32:52 +0200 Subject: [PATCH 229/317] SCD40 disabled by default in sensors image --- BUILDS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDS.md b/BUILDS.md index fec3cfac9..2a236c205 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -122,7 +122,7 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display | USE_MGC3130 | - | - | - / - | - | - | - | - | | USE_MAX44009 | - | - | - / - | - | - | - | - | | USE_SCD30 | - | - | - / x | - | x | - | - | -| USE_SCD40 | - | - | - / x | - | x | - | - | +| USE_SCD40 | - | - | - / x | - | - | - | - | | USE_SPS30 | - | - | - / - | - | - | - | - | | USE_ADE7953 | - | - | x / x | x | x | - | x | | USE_VL53L0X | - | - | - / x | - | x | - | - | From fc7dd13293c98aa25c48cf5553b105f207613680 Mon Sep 17 00:00:00 2001 From: Arnold <48472227+Arnold-n@users.noreply.github.com> Date: Mon, 20 Sep 2021 21:54:13 +0200 Subject: [PATCH 230/317] Add SCD40/SCD41 support --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 466d8c005..9dbd2f8bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 - Support for ESP32/ESP32S2 DAC gpio via Berry - Berry support for Serial +- Support for Sensirion SCD40/SCD41 CO2 sensor ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now From 176e2d8facb282d2732d955deb290532c1b9b490 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Tue, 21 Sep 2021 11:59:40 +0200 Subject: [PATCH 231/317] Berry string range (#13194) * Berry string range * Fix regressions --- lib/libesp32/Berry/src/be_strlib.c | 34 +++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/lib/libesp32/Berry/src/be_strlib.c b/lib/libesp32/Berry/src/be_strlib.c index 16cdaee9a..7b9bf8acf 100644 --- a/lib/libesp32/Berry/src/be_strlib.c +++ b/lib/libesp32/Berry/src/be_strlib.c @@ -326,15 +326,47 @@ BERRY_API const char *be_str2num(bvm *vm, const char *str) return sout; } +static bstring* string_range(bvm *vm, bstring *str, binstance *range) +{ + bint lower, upper; + bint size = str_len(str); /* size of source string */ + // bint size = be_data_size(vm, -1); /* get source list size */ + /* get index range */ + bvalue temp; + be_instance_member(vm, range, be_newstr(vm, "__lower__"), &temp); + lower = var_toint(&temp); + be_instance_member(vm, range, be_newstr(vm, "__upper__"), &temp); + upper = var_toint(&temp); + /* protection scope */ + if (upper < 0) { upper = size + upper; } + if (lower < 0) { lower = size + lower; } + upper = upper < size ? upper : size - 1; + lower = lower < 0 ? 0 : lower; + if (lower > upper) { + return be_newstrn(vm, "", 0); /* empty string */ + } + return be_newstrn(vm, str(str) + lower, upper - lower + 1); + +} + /* string subscript operation */ bstring* be_strindex(bvm *vm, bstring *str, bvalue *idx) { if (var_isint(idx)) { int pos = var_toidx(idx); - if (pos < str_len(str)) { + int size = str_len(str); + if (pos < 0) { pos = size + pos; } + if ((pos < size) && (pos >= 0)) { return be_newstrn(vm, str(str) + pos, 1); } be_raise(vm, "index_error", "string index out of range"); + } else if (var_isinstance(idx)) { + binstance * ins = var_toobj(idx); + const char *cname = str(be_instance_name(ins)); + if (!strcmp(cname, "range")) { + return string_range(vm, str, ins); + } + // str(be_instance_name(i)) } be_raise(vm, "index_error", "string indices must be integers"); return NULL; From 4087f15aa86b4008949419f4789da3114725e46b Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Tue, 21 Sep 2021 14:37:45 +0200 Subject: [PATCH 232/317] Rename xnrg_x0_dummy.ino --- tasmota/{xnrg_20_dummy.ino => xnrg_30_dummy.ino} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename tasmota/{xnrg_20_dummy.ino => xnrg_30_dummy.ino} (97%) diff --git a/tasmota/xnrg_20_dummy.ino b/tasmota/xnrg_30_dummy.ino similarity index 97% rename from tasmota/xnrg_20_dummy.ino rename to tasmota/xnrg_30_dummy.ino index 893a05bf8..dd8c77848 100644 --- a/tasmota/xnrg_20_dummy.ino +++ b/tasmota/xnrg_30_dummy.ino @@ -1,5 +1,5 @@ /* - xnrg_20_dummy.ino - Dummy energy sensor support for Tasmota + xnrg_30_dummy.ino - Dummy energy sensor support for Tasmota Copyright (C) 2021 Theo Arends @@ -28,7 +28,7 @@ * Enable by selecting any GPIO as Option A2 \*********************************************************************************************/ -#define XNRG_20 20 +#define XNRG_30 30 #define NRG_DUMMY_U_COMMON true // Phase voltage = false, Common voltage = true #define NRG_DUMMY_F_COMMON true // Phase frequency = false, Common frequency = true @@ -124,7 +124,7 @@ void NrgDummyDrvInit(void) { Energy.type_dc = NRG_DUMMY_DC; // AC = false, DC = true; Energy.use_overtemp = NRG_DUMMY_OVERTEMP; // Use global temperature for overtemp detection - TasmotaGlobal.energy_driver = XNRG_20; + TasmotaGlobal.energy_driver = XNRG_30; } } @@ -132,7 +132,7 @@ void NrgDummyDrvInit(void) { * Interface \*********************************************************************************************/ -bool Xnrg20(uint8_t function) { +bool Xnrg30(uint8_t function) { bool result = false; switch (function) { From 65989d25529816e2d9853aaaa1b8225b1a110699 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Tue, 21 Sep 2021 18:25:52 +0200 Subject: [PATCH 233/317] bl09xx driver for both bl0939 and bl0940 --- BUILDS.md | 2 +- tasmota/language/af_AF.h | 1 + tasmota/language/bg_BG.h | 1 + tasmota/language/cs_CZ.h | 1 + tasmota/language/de_DE.h | 1 + tasmota/language/el_GR.h | 1 + tasmota/language/en_GB.h | 1 + tasmota/language/es_ES.h | 1 + tasmota/language/fr_FR.h | 3 +- tasmota/language/fy_NL.h | 1 + tasmota/language/he_HE.h | 1 + tasmota/language/hu_HU.h | 1 + tasmota/language/ko_KO.h | 1 + tasmota/language/nl_NL.h | 1 + tasmota/language/pl_PL.h | 1 + tasmota/language/pt_BR.h | 1 + tasmota/language/pt_PT.h | 1 + tasmota/language/ro_RO.h | 1 + tasmota/language/ru_RU.h | 1 + tasmota/language/sk_SK.h | 1 + tasmota/language/sv_SE.h | 1 + tasmota/language/tr_TR.h | 1 + tasmota/language/uk_UA.h | 1 + tasmota/language/vi_VN.h | 1 + tasmota/language/zh_CN.h | 1 + tasmota/language/zh_TW.h | 1 + tasmota/my_user_config.h | 2 +- tasmota/support_features.ino | 2 +- tasmota/tasmota_configurations.h | 2 +- tasmota/tasmota_template.h | 7 +- tasmota/xnrg_14_bl0940.ino | 326 -------------------------- tasmota/xnrg_14_bl09xx.ino | 388 +++++++++++++++++++++++++++++++ tools/decode-status.py | 2 +- 33 files changed, 424 insertions(+), 334 deletions(-) delete mode 100644 tasmota/xnrg_14_bl0940.ino create mode 100644 tasmota/xnrg_14_bl09xx.ino diff --git a/BUILDS.md b/BUILDS.md index 5939ba1d6..6512304ab 100644 --- a/BUILDS.md +++ b/BUILDS.md @@ -80,7 +80,7 @@ m = minimal, l = lite, t = tasmota, k = knx, s = sensors, i = ir, d = display | USE_DDSU666 | - | - | - / x | - | x | - | - | | USE_SOLAX_X1 | - | - | - / - | - | - | - | - | | USE_LE01MR | - | - | - / - | - | - | - | - | -| USE_BL0940 | - | x | x / - | x | x | - | - | +| USE_BL09XX | - | x | x / x | x | x | - | - | | USE_TELEINFO | - | - | - / - | - | - | - | - | | USE_IEM3000 | - | - | - / - | - | - | - | - | | USE_WE517 | - | - | - / - | - | - | - | - | diff --git a/tasmota/language/af_AF.h b/tasmota/language/af_AF.h index 766f31d6a..69ed9612e 100644 --- a/tasmota/language/af_AF.h +++ b/tasmota/language/af_AF.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/bg_BG.h b/tasmota/language/bg_BG.h index 358390bc9..1fde089d9 100644 --- a/tasmota/language/bg_BG.h +++ b/tasmota/language/bg_BG.h @@ -709,6 +709,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/cs_CZ.h b/tasmota/language/cs_CZ.h index be7396a92..4809e6ccf 100644 --- a/tasmota/language/cs_CZ.h +++ b/tasmota/language/cs_CZ.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/de_DE.h b/tasmota/language/de_DE.h index 2e94554d1..0cc13b3db 100644 --- a/tasmota/language/de_DE.h +++ b/tasmota/language/de_DE.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/el_GR.h b/tasmota/language/el_GR.h index d18aa9bce..37b10413d 100644 --- a/tasmota/language/el_GR.h +++ b/tasmota/language/el_GR.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/en_GB.h b/tasmota/language/en_GB.h index 2caab6abc..dbcfb9a6f 100644 --- a/tasmota/language/en_GB.h +++ b/tasmota/language/en_GB.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/es_ES.h b/tasmota/language/es_ES.h index c5d98d79e..9f8144dd0 100644 --- a/tasmota/language/es_ES.h +++ b/tasmota/language/es_ES.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/fr_FR.h b/tasmota/language/fr_FR.h index bd63fc53f..dbdca0efe 100644 --- a/tasmota/language/fr_FR.h +++ b/tasmota/language/fr_FR.h @@ -709,7 +709,8 @@ #define D_SENSOR_CSE7761_TX "CSE7761 TX" #define D_SENSOR_CSE7761_RX "CSE7761 RX" #define D_SENSOR_CSE7766_TX "CSE7766 TX" -#define D_SENSOR_CSE7766_RX "CSE7766 RX" +#define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 TX" #define D_SENSOR_PN532_RX "PN532 RX" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/fy_NL.h b/tasmota/language/fy_NL.h index 86e0fb7d2..7703bfcee 100644 --- a/tasmota/language/fy_NL.h +++ b/tasmota/language/fy_NL.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/he_HE.h b/tasmota/language/he_HE.h index efd02b2f4..9ebd39c51 100644 --- a/tasmota/language/he_HE.h +++ b/tasmota/language/he_HE.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/hu_HU.h b/tasmota/language/hu_HU.h index 3da61ccc6..5f1c511ab 100644 --- a/tasmota/language/hu_HU.h +++ b/tasmota/language/hu_HU.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/ko_KO.h b/tasmota/language/ko_KO.h index d427966cd..4ebb63250 100644 --- a/tasmota/language/ko_KO.h +++ b/tasmota/language/ko_KO.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/nl_NL.h b/tasmota/language/nl_NL.h index 56015b023..56e0a5faf 100644 --- a/tasmota/language/nl_NL.h +++ b/tasmota/language/nl_NL.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/pl_PL.h b/tasmota/language/pl_PL.h index 7f9b79727..be85b7f5b 100644 --- a/tasmota/language/pl_PL.h +++ b/tasmota/language/pl_PL.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/pt_BR.h b/tasmota/language/pt_BR.h index 83a9d88c3..e0822795f 100644 --- a/tasmota/language/pt_BR.h +++ b/tasmota/language/pt_BR.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/pt_PT.h b/tasmota/language/pt_PT.h index 1775cbd75..32b4c9ace 100644 --- a/tasmota/language/pt_PT.h +++ b/tasmota/language/pt_PT.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/ro_RO.h b/tasmota/language/ro_RO.h index b1058e60d..6ea846aea 100644 --- a/tasmota/language/ro_RO.h +++ b/tasmota/language/ro_RO.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/ru_RU.h b/tasmota/language/ru_RU.h index b6fb1bc35..b34629afb 100644 --- a/tasmota/language/ru_RU.h +++ b/tasmota/language/ru_RU.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/sk_SK.h b/tasmota/language/sk_SK.h index 3ac233b00..bb38d0625 100644 --- a/tasmota/language/sk_SK.h +++ b/tasmota/language/sk_SK.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/sv_SE.h b/tasmota/language/sv_SE.h index c026d53b6..2c4b4bb29 100644 --- a/tasmota/language/sv_SE.h +++ b/tasmota/language/sv_SE.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/tr_TR.h b/tasmota/language/tr_TR.h index 5d2d969b4..547b14a43 100644 --- a/tasmota/language/tr_TR.h +++ b/tasmota/language/tr_TR.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/uk_UA.h b/tasmota/language/uk_UA.h index 3be6240c2..829dc18cd 100644 --- a/tasmota/language/uk_UA.h +++ b/tasmota/language/uk_UA.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/vi_VN.h b/tasmota/language/vi_VN.h index d1e855bec..f60e26634 100644 --- a/tasmota/language/vi_VN.h +++ b/tasmota/language/vi_VN.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/zh_CN.h b/tasmota/language/zh_CN.h index c9a64adac..30332b22b 100644 --- a/tasmota/language/zh_CN.h +++ b/tasmota/language/zh_CN.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/language/zh_TW.h b/tasmota/language/zh_TW.h index 2074f04f7..f9aebfe20 100644 --- a/tasmota/language/zh_TW.h +++ b/tasmota/language/zh_TW.h @@ -710,6 +710,7 @@ #define D_SENSOR_CSE7761_RX "CSE7761 Rx" #define D_SENSOR_CSE7766_TX "CSE7766 Tx" #define D_SENSOR_CSE7766_RX "CSE7766 Rx" +#define D_SENSOR_BL0939_RX "BL0939 Rx" #define D_SENSOR_PN532_TX "PN532 Tx" #define D_SENSOR_PN532_RX "PN532 Rx" #define D_SENSOR_SM16716_CLK "SM16716 CLK" diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index fd68aeb96..64545b496 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -780,7 +780,7 @@ //#define USE_LE01MR // Add support for F&F LE-01MR Modbus energy monitor (+1k code) #define LE01MR_SPEED 9600 // LE-01MR modbus baudrate (default: 9600) #define LE01MR_ADDR 1 // LE-01MR modbus address (default: 0x01) -#define USE_BL0940 // Add support for BL0940 Energy monitor as used in Blitzwolf SHP-10 (+1k6 code) +#define USE_BL09XX // Add support for various BL09XX Energy monitor as used in Blitzwolf SHP-10 or Sonoff Dual R3 v2 (+1k6 code) //#define USE_TELEINFO // Add support for Teleinfo via serial RX interface (+5k2 code, +168 RAM + SmartMeter LinkedList Values RAM) //#define USE_IEM3000 // Add support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) #define IEM3000_SPEED 19200 // iEM3000-Modbus RS485 serial speed (default: 19200 baud) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index a4311ea74..a726b028d 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -567,7 +567,7 @@ void ResponseAppendFeatures(void) #if defined(USE_I2C) && defined(USE_MCP9808) feature6 |= 0x00002000; // xsns_72_mcp9808.ino #endif -#if defined(USE_ENERGY_SENSOR) && defined(USE_BL0940) +#if defined(USE_ENERGY_SENSOR) && (defined(USE_BL0940) || defined(USE_BL09XX)) feature6 |= 0x00004000; // xnrg_14_bl0940.ino #endif #ifdef USE_TELEGRAM diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index c7c315cbb..4d34f22e3 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -876,7 +876,7 @@ #undef USE_DDSU666 // Disable support for Chint DDSU666 Modbus energy monitor (+0k6 code) #undef USE_SOLAX_X1 // Disable support for Solax X1 series Modbus log info (+3k1 code) #undef USE_LE01MR // Disable support for F&F LE-01MR Modbus energy meter (+2k code) -#undef USE_BL0940 // Disable support for BL0940 Energy monitor as used in Blitzwolf SHP-10 (+1k6 code) +#undef USE_BL09XX // Add support for various BL09XX Energy monitor as used in Blitzwolf SHP-10 or Sonoff Dual R3 v2 (+1k6 code) #undef USE_TELEINFO // Disable support for French Energy Provider metering telemetry #undef USE_IEM3000 // Disable support for Schneider Electric iEM3000-Modbus series energy monitor (+0k8 code) #undef USE_WE517 // Disable support for Orno WE517-Modbus energy monitor (+1k code) diff --git a/tasmota/tasmota_template.h b/tasmota/tasmota_template.h index e38041af6..e8ba6c5f2 100644 --- a/tasmota/tasmota_template.h +++ b/tasmota/tasmota_template.h @@ -172,6 +172,7 @@ enum UserSelectablePins { GPIO_MCP2515_CS, // MCP2515 Chip Select GPIO_HRG15_TX, GPIO_HRG15_RX, // Hydreon RG-15 rain sensor serial interface GPIO_VINDRIKTNING_RX, // IKEA VINDRIKTNING Serial interface + GPIO_BL0939_RX, // BL0939 Serial interface (Dual R3 v2) GPIO_SENSOR_END }; enum ProgramSelectablePins { @@ -363,7 +364,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_INTERRUPT "|" D_SENSOR_MCP2515_CS "|" D_SENSOR_HRG15_TX "|" D_SENSOR_HRG15_RX "|" - D_SENSOR_VINDRIKTNING_RX + D_SENSOR_VINDRIKTNING_RX "|" + D_SENSOR_BL0939_RX ; const char kSensorNamesFixed[] PROGMEM = @@ -694,7 +696,8 @@ const uint16_t kGpioNiceList[] PROGMEM = { AGPIO(GPIO_LE01MR_TX), // F7F LE-01MR energy meter tx pin AGPIO(GPIO_LE01MR_RX), // F7F LE-01MR energy meter rx pin #endif // IFDEF:USE_LE01MR -#ifdef USE_BL0940 +#if defined(USE_BL0940) || defined(USE_BL09XX) + AGPIO(GPIO_BL0939_RX), // BL0939 Serial interface (Dual R3 v2) AGPIO(GPIO_BL0940_RX), // BL0940 Serial interface #endif #ifdef USE_IEM3000 diff --git a/tasmota/xnrg_14_bl0940.ino b/tasmota/xnrg_14_bl0940.ino deleted file mode 100644 index ecd30c543..000000000 --- a/tasmota/xnrg_14_bl0940.ino +++ /dev/null @@ -1,326 +0,0 @@ -/* - xnrg_14_bl0940.ino - BL0940 energy sensor support for Tasmota - - Copyright (C) 2021 Theo Arends - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifdef USE_ENERGY_SENSOR -#ifdef USE_BL0940 -/*********************************************************************************************\ - * BL0940 - Energy (Blitzwolf SHP10) - * - * Template {"NAME":"BW-SHP10","GPIO":[0,148,0,207,158,21,0,0,0,17,0,0,0],"FLAG":0,"BASE":18} - * - * Based on datasheet from http://www.belling.com.cn/media/file_object/bel_product/BL0940/datasheet/BL0940_V1.1_en.pdf -\*********************************************************************************************/ - -#define XNRG_14 14 - -#define BL0940_PREF 1430 -#define BL0940_UREF 33000 -#define BL0940_IREF 2750 - -#define BL0940_PULSES_NOT_INITIALIZED -1 - -#define BL0940_BUFFER_SIZE 36 - -#define BL0940_WRITE_COMMAND 0xA0 // 0xA8 according to documentation -#define BL0940_REG_I_FAST_RMS_CTRL 0x10 -#define BL0940_REG_MODE 0x18 -#define BL0940_REG_SOFT_RESET 0x19 -#define BL0940_REG_USR_WRPROT 0x1A -#define BL0940_REG_TPS_CTRL 0x1B - -#define BL0940_READ_COMMAND 0x50 // 0x58 according to documentation -#define BL0940_FULL_PACKET 0xAA - -#define BL0940_PACKET_HEADER 0x55 // 0x58 according to documentation - -#include - -TasmotaSerial *Bl0940Serial = nullptr; - -struct BL0940 { - long voltage = 0; - long current = 0; - long power = 0; - long power_cycle_first = 0; - long cf_pulses = 0; - long cf_pulses_last_time = BL0940_PULSES_NOT_INITIALIZED; - float temperature; - - int byte_counter = 0; - uint16_t tps1 = 0; - uint8_t *rx_buffer = nullptr; - bool received = false; -} Bl0940; - -const uint8_t bl0940_init[5][6] = { - { BL0940_WRITE_COMMAND, BL0940_REG_SOFT_RESET, 0x5A, 0x5A, 0x5A, 0x38 }, // Reset to default - { BL0940_WRITE_COMMAND, BL0940_REG_USR_WRPROT, 0x55, 0x00, 0x00, 0xF0 }, // Enable User Operation Write - { BL0940_WRITE_COMMAND, BL0940_REG_MODE, 0x00, 0x10, 0x00, 0x37 }, // 0x0100 = CF_UNABLE energy pulse, AC_FREQ_SEL 50Hz, RMS_UPDATE_SEL 800mS - { BL0940_WRITE_COMMAND, BL0940_REG_TPS_CTRL, 0xFF, 0x47, 0x00, 0xFE }, // 0x47FF = Over-current and leakage alarm on, Automatic temperature measurement, Interval 100mS - { BL0940_WRITE_COMMAND, BL0940_REG_I_FAST_RMS_CTRL, 0x1C, 0x18, 0x00, 0x1B }}; // 0x181C = Half cycle, Fast RMS threshold 6172 - -void Bl0940Received(void) { - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 - // 55 F2 03 00 00 00 00 7E 02 00 D4 B0 72 AC 01 00 00 00 00 02 01 00 00 00 00 00 00 00 BA 01 00 FE 03 00 83 - // 55 88 02 00 49 00 00 FE 02 00 AF EF 71 D2 01 00 EB FF FF 49 01 00 00 00 00 02 00 00 CF 01 00 FE 03 00 9F - // 55 B9 33 00 DE 45 00 94 02 00 CF E4 70 63 02 00 6C 4C 00 13 01 00 09 00 00 00 00 00 E4 01 00 FE 03 00 72 - // Hd IFRms--- Current- Reserved Voltage- Reserved Power--- Reserved CF------ Reserved TPS1---- TPS2---- Ck - - uint16_t tps1 = Bl0940.rx_buffer[29] << 8 | Bl0940.rx_buffer[28]; // TPS1 unsigned - if ((Bl0940.rx_buffer[0] != BL0940_PACKET_HEADER) || // Bad header - (Bl0940.tps1 && ((tps1 < (Bl0940.tps1 -10)) || (tps1 > (Bl0940.tps1 +10)))) // Invalid temperature change - ) { - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Invalid data")); - return; - } - - Bl0940.tps1 = tps1; - float t = ((170.0f/448.0f)*(((float)Bl0940.tps1/2.0f)-32.0f))-45.0f; - Bl0940.temperature = ConvertTemp(t); - - Bl0940.voltage = Bl0940.rx_buffer[12] << 16 | Bl0940.rx_buffer[11] << 8 | Bl0940.rx_buffer[10]; // V_RMS unsigned - Bl0940.current = Bl0940.rx_buffer[6] << 16 | Bl0940.rx_buffer[5] << 8 | Bl0940.rx_buffer[4]; // I_RMS unsigned - int32_t power = Bl0940.rx_buffer[18] << 24 | Bl0940.rx_buffer[17] << 16 | Bl0940.rx_buffer[16] << 8; // WATT signed - Bl0940.power = abs(power) >> 8; // WATT unsigned - int32_t cf_cnt = Bl0940.rx_buffer[24] << 24 | Bl0940.rx_buffer[23] << 16 | Bl0940.rx_buffer[22] << 8; // CF_CNT signed - Bl0940.cf_pulses = abs(cf_cnt) >> 8; - - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: U %d, I %d, P %d, C %d, T %d"), - Bl0940.voltage, Bl0940.current, Bl0940.power, Bl0940.cf_pulses, Bl0940.tps1); - - if (Energy.power_on) { // Powered on - Energy.voltage[0] = (float)Bl0940.voltage / Settings->energy_voltage_calibration; - if (power && (Bl0940.power > Settings->energy_power_calibration)) { // We need at least 1W - Energy.active_power[0] = (float)Bl0940.power / Settings->energy_power_calibration; - Energy.current[0] = (float)Bl0940.current / (Settings->energy_current_calibration * 100); - } else { - Energy.active_power[0] = 0; - Energy.current[0] = 0; - } - } else { // Powered off -// Bl0940.power_cycle_first = 0; - Energy.voltage[0] = 0; - Energy.active_power[0] = 0; - Energy.current[0] = 0; - } -} - -void Bl0940SerialInput(void) { - while (Bl0940Serial->available()) { - yield(); - uint8_t serial_in_byte = Bl0940Serial->read(); - if (!Bl0940.received && (BL0940_PACKET_HEADER == serial_in_byte)) { - Bl0940.received = true; - Bl0940.byte_counter = 0; - } - if (Bl0940.received) { - Bl0940.rx_buffer[Bl0940.byte_counter++] = serial_in_byte; - if (BL0940_BUFFER_SIZE == Bl0940.byte_counter) { - - AddLogBuffer(LOG_LEVEL_DEBUG_MORE, Bl0940.rx_buffer, BL0940_BUFFER_SIZE -1); - - uint8_t checksum = BL0940_READ_COMMAND; - for (uint32_t i = 0; i < BL0940_BUFFER_SIZE -2; i++) { checksum += Bl0940.rx_buffer[i]; } - checksum ^= 0xFF; - if (checksum == Bl0940.rx_buffer[34]) { - Energy.data_valid[0] = 0; - Bl0940Received(); - Bl0940.received = false; - return; - } else { - do { // Sync buffer with data (issue #1907 and #3425) - memmove(Bl0940.rx_buffer, Bl0940.rx_buffer +1, BL0940_BUFFER_SIZE -1); - Bl0940.byte_counter--; - } while ((Bl0940.byte_counter > 1) && (BL0940_PACKET_HEADER != Bl0940.rx_buffer[0])); - if (BL0940_PACKET_HEADER != Bl0940.rx_buffer[0]) { - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: " D_CHECKSUM_FAILURE)); - Bl0940.received = false; - Bl0940.byte_counter = 0; - } - } - } - } - } -} - -/********************************************************************************************/ - -void Bl0940EverySecond(void) { - if (Energy.data_valid[0] > ENERGY_WATCHDOG) { - Bl0940.voltage = 0; - Bl0940.current = 0; - Bl0940.power = 0; - } else { -/* - // Calculate energy by using active power - if (Energy.active_power[0]) { - Energy.kWhtoday_delta += (Energy.active_power[0] * 1000) / 36; - EnergyUpdateToday(); - } -*/ - // Calculate energy by using active energy pulse count - if (BL0940_PULSES_NOT_INITIALIZED == Bl0940.cf_pulses_last_time) { - Bl0940.cf_pulses_last_time = Bl0940.cf_pulses; // Init after restart - } else { - uint32_t cf_pulses = 0; - if (Bl0940.cf_pulses < Bl0940.cf_pulses_last_time) { // Rolled over after 0xFFFFFF (16777215) pulses - cf_pulses = (0x1000000 - Bl0940.cf_pulses_last_time) + Bl0940.cf_pulses; - } else { - cf_pulses = Bl0940.cf_pulses - Bl0940.cf_pulses_last_time; - } - if (cf_pulses && Energy.active_power[0]) { - uint32_t watt256 = (1638400 * 256) / Settings->energy_power_calibration; - uint32_t delta = (cf_pulses * watt256) / 36; - if (delta <= (4000 * 1000 / 36)) { // max load for SHP10: 4.00kW (3.68kW) - Bl0940.cf_pulses_last_time = Bl0940.cf_pulses; - Energy.kWhtoday_delta += delta; - } else { - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Overload")); - Bl0940.cf_pulses_last_time = BL0940_PULSES_NOT_INITIALIZED; - } - EnergyUpdateToday(); - } - } - - } - -// AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); - - Bl0940Serial->flush(); - Bl0940Serial->write(BL0940_READ_COMMAND); - Bl0940Serial->write(BL0940_FULL_PACKET); -} - -void Bl0940SnsInit(void) { - // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions - Bl0940Serial = new TasmotaSerial(Pin(GPIO_BL0940_RX), Pin(GPIO_TXD), 1); - if (Bl0940Serial->begin(4800, 1)) { - if (Bl0940Serial->hardwareSerial()) { - ClaimSerial(); - } - if (HLW_UREF_PULSE == Settings->energy_voltage_calibration) { - Settings->energy_voltage_calibration = BL0940_UREF; - Settings->energy_current_calibration = BL0940_IREF; - Settings->energy_power_calibration = BL0940_PREF; - } - Energy.use_overtemp = true; // Use global temperature for overtemp detection - - for (uint32_t i = 0; i < 5; i++) { - for (uint32_t j = 0; j < 6; j++) { - Bl0940Serial->write(bl0940_init[i][j]); -// Bl0940Serial->write(pgm_read_byte(bl0940_init + (6 * i) + j)); // Wrong byte order! - } - delay(1); - } - - } else { - TasmotaGlobal.energy_driver = ENERGY_NONE; - } -} - -void Bl0940DrvInit(void) { - if (PinUsed(GPIO_BL0940_RX) && PinUsed(GPIO_TXD)) { - Bl0940.rx_buffer = (uint8_t*)(malloc(BL0940_BUFFER_SIZE)); - if (Bl0940.rx_buffer != nullptr) { - TasmotaGlobal.energy_driver = XNRG_14; - } - } -} - -bool Bl0940Command(void) { - bool serviced = true; - - uint32_t value = (uint32_t)(CharToFloat(XdrvMailbox.data) * 100); // 1.23 = 123 - - if (CMND_POWERSET == Energy.command_code) { - if (XdrvMailbox.data_len && Bl0940.power) { - Settings->energy_power_calibration = (Bl0940.power * 100) / value; - } - } - else if (CMND_VOLTAGESET == Energy.command_code) { - if (XdrvMailbox.data_len && Bl0940.voltage) { - Settings->energy_voltage_calibration = (Bl0940.voltage * 100) / value; - } - } - else if (CMND_CURRENTSET == Energy.command_code) { - if (XdrvMailbox.data_len && Bl0940.current) { - Settings->energy_current_calibration = Bl0940.current / value; - } - } - else serviced = false; // Unknown command - - return serviced; -} - -void Bl0940Show(bool json) { - if (json) { - ResponseAppend_P(JSON_SNS_F_TEMP, "BL0940", Settings->flag2.temperature_resolution, &Bl0940.temperature); - if (0 == TasmotaGlobal.tele_period) { -#ifdef USE_DOMOTICZ - DomoticzFloatSensor(DZ_TEMP, Bl0940.temperature); -#endif // USE_DOMOTICZ -#ifdef USE_KNX - KnxSensor(KNX_TEMPERATURE, Bl0940.temperature); -#endif // USE_KNX - } -#ifdef USE_WEBSERVER - } else { - WSContentSend_Temp("", Bl0940.temperature); -#endif // USE_WEBSERVER - - } -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -bool Xnrg14(uint8_t function) { - bool result = false; - - switch (function) { - case FUNC_LOOP: - if (Bl0940Serial) { Bl0940SerialInput(); } - break; - case FUNC_EVERY_SECOND: - Bl0940EverySecond(); - break; - case FUNC_JSON_APPEND: - Bl0940Show(1); - break; -#ifdef USE_WEBSERVER - case FUNC_WEB_SENSOR: - Bl0940Show(0); - break; -#endif // USE_WEBSERVER - case FUNC_COMMAND: - result = Bl0940Command(); - break; - case FUNC_INIT: - Bl0940SnsInit(); - break; - case FUNC_PRE_INIT: - Bl0940DrvInit(); - break; - } - return result; -} - -#endif // USE_BL0940 -#endif // USE_ENERGY_SENSOR diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino new file mode 100644 index 000000000..20f3f80d7 --- /dev/null +++ b/tasmota/xnrg_14_bl09xx.ino @@ -0,0 +1,388 @@ +/* + xnrg_14_bl09xx.ino - BL09XX energy sensor support for Tasmota + + Copyright (C) 2021 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_ENERGY_SENSOR +#if defined(USE_BL0940) || defined(USE_BL09XX) +#ifdef USE_BL0940 +#warning **** USE_BL0940 is obsolete. Please replace with USE_BLE0939 **** +#endif +/*********************************************************************************************\ + * Support the following Shangai Belling energy sensors: + * + * BL09XX - Energy (as in Blitzwolf SHP10 + * Template {"NAME":"BW-SHP10","GPIO":[0,148,0,207,158,21,0,0,0,17,0,0,0],"FLAG":0,"BASE":18} + * Based on datasheet from http://www.belling.com.cn/media/file_object/bel_product/BL09XX/datasheet/BL09XX_V1.1_en.pdf + * + * BL0939 - Energy (as in Sonoff Dual R3 v2) + * {"NAME":"Sonoff Dual R3 v2","GPIO":[32,0,0,0,0,0,0,0,0,576,225,0,0,0,0,0,0,0,0,0,0,3200,8128,224,0,0,0,0,160,161,0,0,0,0,0,0],"FLAG":0,"BASE":1} + * Based on datasheet from https://www.belling.com.cn/product_info.html?id=368 + * See https://github.com/arendst/Tasmota/discussions/10793 + \*********************************************************************************************/ + +#define XNRG_14 14 + +#define BL09XX_PREF 713 // =(4046*1*0,51*1000)/(1,218*1,218*(390*5+0,51)) = 713,105 +#define BL09XX_UREF 17159 // =(79931*0,51*1000)/(1,218*(390*5+0,51)) = 17158,92 +#define BL09XX_IREF 266013 // =(324004*1)/1,218 = 266013,14 + +#define BL09XX_PULSES_NOT_INITIALIZED -1 + +#define BL09XX_BUFFER_SIZE 36 + +#define BL0939_MODEL 39 +#define BL0940_MODEL 40 + +#define BL0939_ADDRESS 0x05 +#define BL0940_ADDRESS 0x00 + +#define BL09XX_WRITE_COMMAND 0xA0 // 0xA8 according to documentation +#define BL09XX_REG_I_FAST_RMS_CTRL 0x10 +#define BL09XX_REG_MODE 0x18 +#define BL09XX_REG_SOFT_RESET 0x19 +#define BL09XX_REG_USR_WRPROT 0x1A +#define BL09XX_REG_TPS_CTRL 0x1B + +#define BL09XX_READ_COMMAND 0x50 // 0x58 according to documentation +#define BL09XX_FULL_PACKET 0xAA + +#define BL09XX_PACKET_HEADER 0x55 // 0x58 according to documentation + +#include + +TasmotaSerial *Bl09XXSerial = nullptr; + +struct BL09XX { + long voltage = 0; + long current[2] = { 0, }; + long power[2] = { 0, }; + long power_cycle_first = 0; + long cf_pulses[2] = { 0, }; + long cf_pulses_last_time[2] = { BL09XX_PULSES_NOT_INITIALIZED, BL09XX_PULSES_NOT_INITIALIZED}; + float temperature; + uint8_t address; + uint8_t model; + int byte_counter = 0; + uint16_t tps1 = 0; + uint8_t *rx_buffer = nullptr; + bool received = false; +} Bl09XX; + +const uint8_t bl09xx_init[5][6] = { + { BL09XX_WRITE_COMMAND, BL09XX_REG_SOFT_RESET, 0x5A, 0x5A, 0x5A, 0x38 }, // Reset to default + { BL09XX_WRITE_COMMAND, BL09XX_REG_USR_WRPROT, 0x55, 0x00, 0x00, 0xF0 }, // Enable User Operation Write + { BL09XX_WRITE_COMMAND, BL09XX_REG_MODE, 0x00, 0x10, 0x00, 0x37 }, // 0x0100 = CF_UNABLE energy pulse, AC_FREQ_SEL 50Hz, RMS_UPDATE_SEL 800mS + { BL09XX_WRITE_COMMAND, BL09XX_REG_TPS_CTRL, 0xFF, 0x47, 0x00, 0xFE }, // 0x47FF = Over-current and leakage alarm on, Automatic temperature measurement, Interval 100mS + { BL09XX_WRITE_COMMAND, BL09XX_REG_I_FAST_RMS_CTRL, 0x1C, 0x18, 0x00, 0x1B }}; // 0x181C = Half cycle, Fast RMS threshold 6172 + +void Bl09XXReceived(void) { + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 + // Sample from BL0940 (single channel) + // 55 F2 03 00 00 00 00 7E 02 00 D4 B0 72 AC 01 00 00 00 00 02 01 00 00 00 00 00 00 00 BA 01 00 FE 03 00 83 + // 55 88 02 00 49 00 00 FE 02 00 AF EF 71 D2 01 00 EB FF FF 49 01 00 00 00 00 02 00 00 CF 01 00 FE 03 00 9F + // 55 B9 33 00 DE 45 00 94 02 00 CF E4 70 63 02 00 6C 4C 00 13 01 00 09 00 00 00 00 00 E4 01 00 FE 03 00 72 + // Hd IFRms--- Current- Reserved Voltage- Reserved Power--- Reserved CF------ Reserved TPS1---- TPS2---- Ck + // Sample from BL0939 (dual channel) + // 55 82 03 00 00 00 00 1E 15 01 65 80 3E E5 C6 00 00 00 00 50 B1 00 00 00 00 00 00 00 F9 01 00 FE 03 00 D2 = U 4096101, I 0/70942, P 0/45392, C 0/0, T 505 + // 55 E6 02 00 00 00 00 37 15 01 0F 83 3E F4 C7 00 00 00 00 69 B1 00 00 00 00 01 00 00 FA 01 00 FE 03 00 7E = U 4096783, I 0/70967, P 0/45417, C 0/1, T 506 + // 55 29 03 00 00 00 00 27 15 01 3A 86 3E AF C8 00 00 00 00 67 B1 00 00 00 00 01 00 00 FA 01 00 FE 03 00 62 = U 4097594, I 0/70951, P 0/45415, C 0/1, T 506 + // 55 04 03 00 00 00 00 D6 14 01 7D 8E 3E 25 C7 00 00 00 00 53 B1 00 00 00 00 01 00 00 F9 01 00 FE 03 00 2E = U 4099709, I 0/70870, P 0/45395, C 0/1, T 505 + // Hd IFRms-A- CurrentA CurrentB Voltage- IFRms-B- PowerA-- PowerB-- CF-A---- CF-B---- TPS1---- TPS2---- Ck + + uint16_t tps1 = Bl09XX.rx_buffer[29] << 8 | Bl09XX.rx_buffer[28]; // TPS1 unsigned + if ((Bl09XX.rx_buffer[0] != BL09XX_PACKET_HEADER) || // Bad header + (Bl09XX.tps1 && ((tps1 < (Bl09XX.tps1 -10)) || (tps1 > (Bl09XX.tps1 +10)))) // Invalid temperature change + ) { + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: Invalid data")); + return; + } + + Bl09XX.tps1 = tps1; + float t = ((170.0f/448.0f)*(((float)Bl09XX.tps1/2.0f)-32.0f))-45.0f; + Bl09XX.temperature = ConvertTemp(t); + + Bl09XX.voltage = Bl09XX.rx_buffer[12] << 16 | Bl09XX.rx_buffer[11] << 8 | Bl09XX.rx_buffer[10]; // V_RMS unsigned + + int32_t tmp; + Bl09XX.current[0] = Bl09XX.rx_buffer[6] << 16 | Bl09XX.rx_buffer[5] << 8 | Bl09XX.rx_buffer[4]; // IA_RMS unsigned + tmp = Bl09XX.rx_buffer[18] << 24 | Bl09XX.rx_buffer[17] << 16 | Bl09XX.rx_buffer[16] << 8; // WATT_A signed + Bl09XX.power[0] = abs(tmp >> 8); // WATT_A unsigned + tmp = Bl09XX.rx_buffer[24] << 24 | Bl09XX.rx_buffer[23] << 16 | Bl09XX.rx_buffer[22] << 8; // CFA_CNT signed + Bl09XX.cf_pulses[0] = abs(tmp >> 8); // CFA_CNT unsigned + + if (Energy.phase_count > 1) { + Bl09XX.current[1] = Bl09XX.rx_buffer[9] << 16 | Bl09XX.rx_buffer[8] << 8 | Bl09XX.rx_buffer[7]; // IB_RMS unsigned + tmp = Bl09XX.rx_buffer[21] << 24 | Bl09XX.rx_buffer[20] << 16 | Bl09XX.rx_buffer[19] << 8; // WATT_B signed + Bl09XX.power[1] = abs(tmp >> 8); // WATT_B unsigned + tmp = Bl09XX.rx_buffer[27] << 24 | Bl09XX.rx_buffer[26] << 16 | Bl09XX.rx_buffer[25] << 8; // CFB_CNT signed + Bl09XX.cf_pulses[1] = abs(tmp >> 8); // CFB_CNT unsigned + } + + //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: U %d, I %d/%d, P %d/%d, C %d/%d, T %d"), + // Bl09XX.voltage, Bl09XX.current[0], Bl09XX.current[1], Bl09XX.power[0], Bl09XX.power[1], Bl09XX.cf_pulses[0], Bl09XX.cf_pulses[1], Bl09XX.tps1); + + if (Energy.power_on) { // Powered on + Energy.voltage[0] = (float)Bl09XX.voltage / Settings->energy_voltage_calibration; + //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: Voltage %f, Temp %f"), Energy.voltage[0], Bl09XX.temperature); + for ( int chan = 0 ; chan < Energy.phase_count ; chan++ ) { + if (Bl09XX.power[chan] > Settings->energy_power_calibration) { // We need at least 1W + Energy.active_power[chan] = (float)Bl09XX.power[chan] / Settings->energy_power_calibration; + Energy.current[chan] = (float)Bl09XX.current[chan] / Settings->energy_current_calibration; + //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: Chan[%d] I %f, P %f"), chan, Energy.current[chan], Energy.active_power[chan]); + } else { + Energy.active_power[chan] = 0; + Energy.current[chan] = 0; + //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: Chan[%d] I zero, P zero"), chan); + } + } + } else { // Powered off + // Bl09XX.power_cycle_first = 0; + Energy.voltage[0] = 0; + Energy.active_power[0] = Energy.active_power[1] = 0; + Energy.current[0] = Energy.current[1] = 0; + } +} + +void Bl09XXSerialInput(void) { + while (Bl09XXSerial->available()) { + yield(); + uint8_t serial_in_byte = Bl09XXSerial->read(); + if (!Bl09XX.received && (BL09XX_PACKET_HEADER == serial_in_byte)) { + Bl09XX.received = true; + Bl09XX.byte_counter = 0; + } + if (Bl09XX.received) { + Bl09XX.rx_buffer[Bl09XX.byte_counter++] = serial_in_byte; + if (BL09XX_BUFFER_SIZE == Bl09XX.byte_counter) { + + AddLogBuffer(LOG_LEVEL_DEBUG_MORE, Bl09XX.rx_buffer, BL09XX_BUFFER_SIZE -1); + + uint8_t checksum = BL09XX_READ_COMMAND | Bl09XX.address; + for (uint32_t i = 0; i < BL09XX_BUFFER_SIZE -2; i++) { checksum += Bl09XX.rx_buffer[i]; } + checksum ^= 0xFF; + if (checksum == Bl09XX.rx_buffer[34]) { + Energy.data_valid[0] = 0; + Bl09XXReceived(); + Bl09XX.received = false; + return; + } else { + //AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: " D_CHECKSUM_FAILURE "received 0x%02X instead of 0x%02X"), Bl09XX.rx_buffer[34], checksum); + do { // Sync buffer with data (issue #1907 and #3425) + memmove(Bl09XX.rx_buffer, Bl09XX.rx_buffer +1, BL09XX_BUFFER_SIZE -1); + Bl09XX.byte_counter--; + } while ((Bl09XX.byte_counter > 1) && (BL09XX_PACKET_HEADER != Bl09XX.rx_buffer[0])); + if (BL09XX_PACKET_HEADER != Bl09XX.rx_buffer[0]) { + //AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: " D_CHECKSUM_FAILURE)); + Bl09XX.received = false; + Bl09XX.byte_counter = 0; + } + } + } + } + } +} + +/********************************************************************************************/ + +void Bl09XXEverySecond(void) { + if (Energy.data_valid[0] > ENERGY_WATCHDOG) { + Bl09XX.voltage = 0; + memset(Bl09XX.current,0,sizeof(Bl09XX.current)); + memset(Bl09XX.power,0,sizeof(Bl09XX.power)); + } else { +/* + // Calculate energy by using active power + if (Energy.active_power[0]) { + Energy.kWhtoday_delta += (Energy.active_power[0] * 1000) / 36; + EnergyUpdateToday(); + } +*/ + // Calculate energy by using active energy pulse count + bool update_today = false; + for (int chan = 0 ; chan < Energy.phase_count ; chan++ ) { + if (BL09XX_PULSES_NOT_INITIALIZED == Bl09XX.cf_pulses_last_time[chan]) { + Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; // Init after restart + } else { + uint32_t cf_pulses = 0; + if (Bl09XX.cf_pulses[chan] < Bl09XX.cf_pulses_last_time[chan]) { // Rolled over after 0xFFFFFF (16777215) pulses + cf_pulses = (0x1000000 - Bl09XX.cf_pulses_last_time[chan]) + Bl09XX.cf_pulses[chan]; + } else { + cf_pulses = Bl09XX.cf_pulses[chan] - Bl09XX.cf_pulses_last_time[chan]; + } + if (cf_pulses && Energy.active_power[chan]) { + uint32_t watt256 = (1638400 * 256) / Settings->energy_power_calibration; + uint32_t delta = (cf_pulses * watt256) / 36; + if (delta <= (4000 * 1000 / 36)) { // max load for SHP10: 4.00kW (3.68kW) + Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Overload [%d] %d"), chan, delta); + Bl09XX.cf_pulses_last_time[chan] = BL09XX_PULSES_NOT_INITIALIZED; + } + update_today = true; + } + } + } + if (update_today) + EnergyUpdateToday(); + } + +// AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); + + Bl09XXSerial->flush(); + Bl09XXSerial->write(BL09XX_READ_COMMAND | Bl09XX.address); + Bl09XXSerial->write(BL09XX_FULL_PACKET); +} + +void Bl09XXSnsInit(void) { + // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions + if (XNRG_14 != TasmotaGlobal.energy_driver) return; + int rx_pin = Pin((BL0939_MODEL == Bl09XX.model) ? GPIO_BL0939_RX : GPIO_BL0940_RX); + Bl09XXSerial = new TasmotaSerial(rx_pin, Pin(GPIO_TXD), 1); + if (Bl09XXSerial->begin(4800, 1)) { + if (Bl09XXSerial->hardwareSerial()) { + ClaimSerial(); + } + if (HLW_UREF_PULSE == Settings->energy_voltage_calibration) { + Settings->energy_voltage_calibration = BL09XX_UREF; + Settings->energy_current_calibration = BL09XX_IREF; + Settings->energy_power_calibration = BL09XX_PREF; + } + Energy.use_overtemp = true; // Use global temperature for overtemp detection + + for (uint32_t i = 0; i < 5; i++) { + Bl09XXSerial->write(bl09xx_init[i][0] | Bl09XX.address); + for (uint32_t j = 1; j < 6; j++) { + Bl09XXSerial->write(bl09xx_init[i][j]); +// Bl09XXSerial->write(pgm_read_byte(bl09xx_init + (6 * i) + j)); // Wrong byte order! + } + delay(1); + } + + } else { + TasmotaGlobal.energy_driver = ENERGY_NONE; + } +} + +void Bl09XXDrvInit(void) { + if (PinUsed(GPIO_BL0939_RX) && PinUsed(GPIO_TXD)) { + Bl09XX.model = BL0939_MODEL; + Bl09XX.address = BL0939_ADDRESS; + } else if (PinUsed(GPIO_BL0940_RX) && PinUsed(GPIO_TXD)) { + Bl09XX.model = BL0940_MODEL; + Bl09XX.address = BL0940_ADDRESS; + } + if (Bl09XX.model) { + Bl09XX.rx_buffer = (uint8_t*)(malloc(BL09XX_BUFFER_SIZE)); + if (Bl09XX.rx_buffer != nullptr) { + TasmotaGlobal.energy_driver = XNRG_14; + Energy.voltage_common = true; // Use common voltage + Energy.frequency_common = true; // Use common frequency + Energy.use_overtemp = true; // Use global temperature for overtemp detection + if (BL0939_MODEL == Bl09XX.model) { + Energy.phase_count = 2; // Handle two channels as two phases + AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: BL0939 driver enabled, TX:%d, RX:%d"), Pin(GPIO_TXD), Pin(GPIO_BL0939_RX)); + } else { + Energy.phase_count = 1; // Handle 1 channel + AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: BL0940 driver enabled, TX:%d, RX:%d"), Pin(GPIO_TXD), Pin(GPIO_BL0940_RX)); + } + } + } +} + +bool Bl09XXCommand(void) { + bool serviced = true; + + uint32_t channel = (2 == XdrvMailbox.index) && (Energy.phase_count > 1) ? 1 : 0; + uint32_t value = (uint32_t)(CharToFloat(XdrvMailbox.data) * 100); // 1.23 = 123 + + if (CMND_POWERSET == Energy.command_code) { + if (XdrvMailbox.data_len && Bl09XX.power[channel]) { + Settings->energy_power_calibration = (Bl09XX.power[channel] * 100) / value; + } + } + else if (CMND_VOLTAGESET == Energy.command_code) { + if (XdrvMailbox.data_len && Bl09XX.voltage) { + Settings->energy_voltage_calibration = (Bl09XX.voltage * 100) / value; + } + } + else if (CMND_CURRENTSET == Energy.command_code) { + if (XdrvMailbox.data_len && Bl09XX.current[channel]) { + Settings->energy_current_calibration = Bl09XX.current[channel] / value; + } + } + else serviced = false; // Unknown command + + return serviced; +} + +void Bl09XXShow(bool json) { + if (json) { + ResponseAppend_P(JSON_SNS_F_TEMP, "BL09XX", Settings->flag2.temperature_resolution, &Bl09XX.temperature); + if (0 == TasmotaGlobal.tele_period) { +#ifdef USE_DOMOTICZ + DomoticzFloatSensor(DZ_TEMP, Bl09XX.temperature); +#endif // USE_DOMOTICZ +#ifdef USE_KNX + KnxSensor(KNX_TEMPERATURE, Bl09XX.temperature); +#endif // USE_KNX + } +#ifdef USE_WEBSERVER + } else { + WSContentSend_Temp("", Bl09XX.temperature); +#endif // USE_WEBSERVER + + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +bool Xnrg14(uint8_t function) { + bool result = false; + + switch (function) { + case FUNC_LOOP: + if (Bl09XXSerial) { Bl09XXSerialInput(); } + break; + case FUNC_EVERY_SECOND: + Bl09XXEverySecond(); + break; + case FUNC_JSON_APPEND: + Bl09XXShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_SENSOR: + Bl09XXShow(0); + break; +#endif // USE_WEBSERVER + case FUNC_COMMAND: + result = Bl09XXCommand(); + break; + case FUNC_INIT: + Bl09XXSnsInit(); + break; + case FUNC_PRE_INIT: + Bl09XXDrvInit(); + break; + } + return result; +} + +#endif // USE_BL09XX +#endif // USE_ENERGY_SENSOR diff --git a/tools/decode-status.py b/tools/decode-status.py index e406bd6e0..7b4c4a777 100755 --- a/tools/decode-status.py +++ b/tools/decode-status.py @@ -238,7 +238,7 @@ a_features = [[ "USE_KEELOQ","USE_HRXL","USE_SONOFF_D1","USE_HDC1080", "USE_IAQ","USE_DISPLAY_SEVENSEG","USE_AS3935","USE_PING", "USE_WINDMETER","USE_OPENTHERM","USE_THERMOSTAT","USE_VEML6075", - "USE_VEML7700","USE_MCP9808","USE_BL0940","USE_TELEGRAM", + "USE_VEML7700","USE_MCP9808","USE_BL09XX","USE_TELEGRAM", "USE_HP303B","USE_TCP_BRIDGE","USE_TELEINFO","USE_LMT01", "USE_PROMETHEUS","USE_IEM3000","USE_DYP","USE_I2S_AUDIO", "USE_MLX90640","USE_VL53L1X","USE_MIEL_HVAC","USE_WE517", From 85e04ab0c27fb45ea5df55742352f02ad1378432 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Tue, 21 Sep 2021 18:43:40 +0200 Subject: [PATCH 234/317] fix it_IT --- tasmota/language/it_IT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/language/it_IT.h b/tasmota/language/it_IT.h index 413e70a26..7b3335658 100644 --- a/tasmota/language/it_IT.h +++ b/tasmota/language/it_IT.h @@ -764,6 +764,7 @@ #define D_SENSOR_LE01MR_RX "LE-01MR - RX" #define D_SENSOR_LE01MR_TX "LE-01MR - TX" #define D_SENSOR_BL0940_RX "BL0940 - RX" +#define D_SENSOR_BL0939_RX "BL0939 - RX" #define D_SENSOR_CC1101_GDO0 "CC1101 - GDO0" #define D_SENSOR_CC1101_GDO2 "CC1101 - GDO2" #define D_SENSOR_HRXL_RX "HRXL - RX" From 4cb51c00afca0a7a8ef1da72033fad884e063b45 Mon Sep 17 00:00:00 2001 From: Barbudor Date: Tue, 21 Sep 2021 18:54:43 +0200 Subject: [PATCH 235/317] typo fix --- tasmota/support_features.ino | 2 +- tasmota/xnrg_14_bl09xx.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tasmota/support_features.ino b/tasmota/support_features.ino index a726b028d..e696f9cc8 100644 --- a/tasmota/support_features.ino +++ b/tasmota/support_features.ino @@ -568,7 +568,7 @@ void ResponseAppendFeatures(void) feature6 |= 0x00002000; // xsns_72_mcp9808.ino #endif #if defined(USE_ENERGY_SENSOR) && (defined(USE_BL0940) || defined(USE_BL09XX)) - feature6 |= 0x00004000; // xnrg_14_bl0940.ino + feature6 |= 0x00004000; // xnrg_14_bl09xx.ino #endif #ifdef USE_TELEGRAM feature6 |= 0x00008000; // xdrv_40_telegram.ino diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino index 20f3f80d7..a21f820f8 100644 --- a/tasmota/xnrg_14_bl09xx.ino +++ b/tasmota/xnrg_14_bl09xx.ino @@ -20,7 +20,7 @@ #ifdef USE_ENERGY_SENSOR #if defined(USE_BL0940) || defined(USE_BL09XX) #ifdef USE_BL0940 -#warning **** USE_BL0940 is obsolete. Please replace with USE_BLE0939 **** +#warning **** USE_BL0940 is obsolete. Please replace with USE_BLE09XX **** #endif /*********************************************************************************************\ * Support the following Shangai Belling energy sensors: From f537534df06ce760e166d95e304593330e7ed8e7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 22 Sep 2021 11:56:28 +0200 Subject: [PATCH 236/317] Fix SHP10 legacy support --- tasmota/xnrg_14_bl09xx.ino | 39 +++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino index a21f820f8..9db68260a 100644 --- a/tasmota/xnrg_14_bl09xx.ino +++ b/tasmota/xnrg_14_bl09xx.ino @@ -25,7 +25,7 @@ /*********************************************************************************************\ * Support the following Shangai Belling energy sensors: * - * BL09XX - Energy (as in Blitzwolf SHP10 + * BL0940 - Energy (as in Blitzwolf SHP10) * Template {"NAME":"BW-SHP10","GPIO":[0,148,0,207,158,21,0,0,0,17,0,0,0],"FLAG":0,"BASE":18} * Based on datasheet from http://www.belling.com.cn/media/file_object/bel_product/BL09XX/datasheet/BL09XX_V1.1_en.pdf * @@ -37,9 +37,13 @@ #define XNRG_14 14 -#define BL09XX_PREF 713 // =(4046*1*0,51*1000)/(1,218*1,218*(390*5+0,51)) = 713,105 -#define BL09XX_UREF 17159 // =(79931*0,51*1000)/(1,218*(390*5+0,51)) = 17158,92 -#define BL09XX_IREF 266013 // =(324004*1)/1,218 = 266013,14 +#define BL0939_PREF 713 // =(4046*1*0,51*1000)/(1,218*1,218*(390*5+0,51)) = 713,105 +#define BL0939_UREF 17159 // =(79931*0,51*1000)/(1,218*(390*5+0,51)) = 17158,92 +#define BL0939_IREF 266013 // =(324004*1)/1,218 = 266013,14 + +#define BL0940_PREF 1430 +#define BL0940_UREF 33000 +#define BL0940_IREF 275000 #define BL09XX_PULSES_NOT_INITIALIZED -1 @@ -75,11 +79,11 @@ struct BL09XX { long cf_pulses[2] = { 0, }; long cf_pulses_last_time[2] = { BL09XX_PULSES_NOT_INITIALIZED, BL09XX_PULSES_NOT_INITIALIZED}; float temperature; - uint8_t address; - uint8_t model; int byte_counter = 0; uint16_t tps1 = 0; uint8_t *rx_buffer = nullptr; + uint8_t address; + uint8_t model; bool received = false; } Bl09XX; @@ -96,7 +100,9 @@ void Bl09XXReceived(void) { // 55 F2 03 00 00 00 00 7E 02 00 D4 B0 72 AC 01 00 00 00 00 02 01 00 00 00 00 00 00 00 BA 01 00 FE 03 00 83 // 55 88 02 00 49 00 00 FE 02 00 AF EF 71 D2 01 00 EB FF FF 49 01 00 00 00 00 02 00 00 CF 01 00 FE 03 00 9F // 55 B9 33 00 DE 45 00 94 02 00 CF E4 70 63 02 00 6C 4C 00 13 01 00 09 00 00 00 00 00 E4 01 00 FE 03 00 72 + // 55 B8 55 00 2F 73 00 D2 02 00 00 C6 74 F9 01 00 97 89 00 37 01 00 AB 00 00 2D 00 00 02 02 00 FE 03 00 6E = U 7652864, I 29487/0, P 35223/0, C 171/0, T 514 // Hd IFRms--- Current- Reserved Voltage- Reserved Power--- Reserved CF------ Reserved TPS1---- TPS2---- Ck + // // Sample from BL0939 (dual channel) // 55 82 03 00 00 00 00 1E 15 01 65 80 3E E5 C6 00 00 00 00 50 B1 00 00 00 00 00 00 00 F9 01 00 FE 03 00 D2 = U 4096101, I 0/70942, P 0/45392, C 0/0, T 505 // 55 E6 02 00 00 00 00 37 15 01 0F 83 3E F4 C7 00 00 00 00 69 B1 00 00 00 00 01 00 00 FA 01 00 FE 03 00 7E = U 4096783, I 0/70967, P 0/45417, C 0/1, T 506 @@ -104,7 +110,7 @@ void Bl09XXReceived(void) { // 55 04 03 00 00 00 00 D6 14 01 7D 8E 3E 25 C7 00 00 00 00 53 B1 00 00 00 00 01 00 00 F9 01 00 FE 03 00 2E = U 4099709, I 0/70870, P 0/45395, C 0/1, T 505 // Hd IFRms-A- CurrentA CurrentB Voltage- IFRms-B- PowerA-- PowerB-- CF-A---- CF-B---- TPS1---- TPS2---- Ck - uint16_t tps1 = Bl09XX.rx_buffer[29] << 8 | Bl09XX.rx_buffer[28]; // TPS1 unsigned + uint16_t tps1 = Bl09XX.rx_buffer[29] << 8 | Bl09XX.rx_buffer[28]; // TPS1 unsigned if ((Bl09XX.rx_buffer[0] != BL09XX_PACKET_HEADER) || // Bad header (Bl09XX.tps1 && ((tps1 < (Bl09XX.tps1 -10)) || (tps1 > (Bl09XX.tps1 +10)))) // Invalid temperature change ) { @@ -133,8 +139,8 @@ void Bl09XXReceived(void) { Bl09XX.cf_pulses[1] = abs(tmp >> 8); // CFB_CNT unsigned } - //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: U %d, I %d/%d, P %d/%d, C %d/%d, T %d"), - // Bl09XX.voltage, Bl09XX.current[0], Bl09XX.current[1], Bl09XX.power[0], Bl09XX.power[1], Bl09XX.cf_pulses[0], Bl09XX.cf_pulses[1], Bl09XX.tps1); + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: U %d, I %d/%d, P %d/%d, C %d/%d, T %d"), + Bl09XX.voltage, Bl09XX.current[0], Bl09XX.current[1], Bl09XX.power[0], Bl09XX.power[1], Bl09XX.cf_pulses[0], Bl09XX.cf_pulses[1], Bl09XX.tps1); if (Energy.power_on) { // Powered on Energy.voltage[0] = (float)Bl09XX.voltage / Settings->energy_voltage_calibration; @@ -250,7 +256,6 @@ void Bl09XXEverySecond(void) { void Bl09XXSnsInit(void) { // Software serial init needs to be done here as earlier (serial) interrupts may lead to Exceptions - if (XNRG_14 != TasmotaGlobal.energy_driver) return; int rx_pin = Pin((BL0939_MODEL == Bl09XX.model) ? GPIO_BL0939_RX : GPIO_BL0940_RX); Bl09XXSerial = new TasmotaSerial(rx_pin, Pin(GPIO_TXD), 1); if (Bl09XXSerial->begin(4800, 1)) { @@ -258,10 +263,14 @@ void Bl09XXSnsInit(void) { ClaimSerial(); } if (HLW_UREF_PULSE == Settings->energy_voltage_calibration) { - Settings->energy_voltage_calibration = BL09XX_UREF; - Settings->energy_current_calibration = BL09XX_IREF; - Settings->energy_power_calibration = BL09XX_PREF; + Settings->energy_voltage_calibration = (BL0939_MODEL == Bl09XX.model) ? BL0939_UREF : BL0940_UREF; + Settings->energy_current_calibration = (BL0939_MODEL == Bl09XX.model) ? BL0939_IREF : BL0940_IREF; + Settings->energy_power_calibration = (BL0939_MODEL == Bl09XX.model) ? BL0939_PREF : BL0940_PREF; } + if ((BL0940_MODEL == Bl09XX.model) && (Settings->energy_current_calibration < (BL0940_IREF / 20))) { + Settings->energy_current_calibration *= 100; + } + Energy.use_overtemp = true; // Use global temperature for overtemp detection for (uint32_t i = 0; i < 5; i++) { @@ -322,7 +331,7 @@ bool Bl09XXCommand(void) { } else if (CMND_CURRENTSET == Energy.command_code) { if (XdrvMailbox.data_len && Bl09XX.current[channel]) { - Settings->energy_current_calibration = Bl09XX.current[channel] / value; + Settings->energy_current_calibration = (Bl09XX.current[channel] * 100) / value; } } else serviced = false; // Unknown command @@ -385,4 +394,4 @@ bool Xnrg14(uint8_t function) { } #endif // USE_BL09XX -#endif // USE_ENERGY_SENSOR +#endif // USE_ENERGY_SENSOR \ No newline at end of file From e89eb985bb101ee46ec3d59417da24b9c4b248e9 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 22 Sep 2021 12:45:56 +0200 Subject: [PATCH 237/317] Add support for BL0939 energy monitor Add support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow (#13195) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/xnrg_14_bl09xx.ino | 28 +++++++++++++--------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 332924be3..9c6047288 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ All notable changes to this project will be documented in this file. - Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 - Support for ESP32/ESP32S2 DAC gpio via Berry - Berry support for Serial +- Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow (#13195) ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7849c82ce..c0c887c15 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -118,6 +118,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) - Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) - Support for IKEA VINDRIKTNING particle concentration sensor [#12976](https://github.com/arendst/Tasmota/issues/12976) +- Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow [#13195](https://github.com/arendst/Tasmota/issues/13195) - Initial support for Tasmota Mesh (TasMesh) providing node/broker communication using ESP-NOW [#11939](https://github.com/arendst/Tasmota/issues/11939) - Initial support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) - Rule event support as JSON payload [#12496](https://github.com/arendst/Tasmota/issues/12496) diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino index 9db68260a..68534d425 100644 --- a/tasmota/xnrg_14_bl09xx.ino +++ b/tasmota/xnrg_14_bl09xx.ino @@ -145,7 +145,7 @@ void Bl09XXReceived(void) { if (Energy.power_on) { // Powered on Energy.voltage[0] = (float)Bl09XX.voltage / Settings->energy_voltage_calibration; //AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("BL9: Voltage %f, Temp %f"), Energy.voltage[0], Bl09XX.temperature); - for ( int chan = 0 ; chan < Energy.phase_count ; chan++ ) { + for (uint32_t chan = 0; chan < Energy.phase_count; chan++) { if (Bl09XX.power[chan] > Settings->energy_power_calibration) { // We need at least 1W Energy.active_power[chan] = (float)Bl09XX.power[chan] / Settings->energy_power_calibration; Energy.current[chan] = (float)Bl09XX.current[chan] / Settings->energy_current_calibration; @@ -208,16 +208,19 @@ void Bl09XXSerialInput(void) { void Bl09XXEverySecond(void) { if (Energy.data_valid[0] > ENERGY_WATCHDOG) { Bl09XX.voltage = 0; - memset(Bl09XX.current,0,sizeof(Bl09XX.current)); - memset(Bl09XX.power,0,sizeof(Bl09XX.power)); + memset(Bl09XX.current, 0, sizeof(Bl09XX.current)); + memset(Bl09XX.power, 0, sizeof(Bl09XX.power)); } else { -/* // Calculate energy by using active power - if (Energy.active_power[0]) { - Energy.kWhtoday_delta += (Energy.active_power[0] * 1000) / 36; + uint32_t energy_sum = 0; + for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { + energy_sum += (Energy.active_power[channel] * 1000); + } + if (energy_sum) { + Energy.kWhtoday_delta += energy_sum / 36; EnergyUpdateToday(); } -*/ +/* // Calculate energy by using active energy pulse count bool update_today = false; for (int chan = 0 ; chan < Energy.phase_count ; chan++ ) { @@ -245,6 +248,7 @@ void Bl09XXEverySecond(void) { } if (update_today) EnergyUpdateToday(); +*/ } // AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); @@ -298,17 +302,11 @@ void Bl09XXDrvInit(void) { if (Bl09XX.model) { Bl09XX.rx_buffer = (uint8_t*)(malloc(BL09XX_BUFFER_SIZE)); if (Bl09XX.rx_buffer != nullptr) { - TasmotaGlobal.energy_driver = XNRG_14; Energy.voltage_common = true; // Use common voltage Energy.frequency_common = true; // Use common frequency Energy.use_overtemp = true; // Use global temperature for overtemp detection - if (BL0939_MODEL == Bl09XX.model) { - Energy.phase_count = 2; // Handle two channels as two phases - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: BL0939 driver enabled, TX:%d, RX:%d"), Pin(GPIO_TXD), Pin(GPIO_BL0939_RX)); - } else { - Energy.phase_count = 1; // Handle 1 channel - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: BL0940 driver enabled, TX:%d, RX:%d"), Pin(GPIO_TXD), Pin(GPIO_BL0940_RX)); - } + Energy.phase_count = (BL0939_MODEL == Bl09XX.model) ? 2 : 1; // Handle two channels as two phases + TasmotaGlobal.energy_driver = XNRG_14; } } } From 28c65dd0c12e5934d5b1f39b51a1821444ecae33 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 22 Sep 2021 13:54:20 +0200 Subject: [PATCH 238/317] Berry simplification of `ctypes` --- .../default/{be_lvgl_ctypes.c => be_ctypes.c} | 70 +- .../default/be_lvgl_ctypes_definitions.c | 127 +- lib/libesp32/Berry/default/be_modtab.c | 5 +- lib/libesp32/Berry/generate/be_const_strtab.h | 1387 ++++++----- .../Berry/generate/be_const_strtab_def.h | 2025 ++++++++--------- ...lv_ctypes.h => be_fixed_be_class_ctypes.h} | 10 +- .../be_fixed_be_class_ctypes_classes.h | 35 - lib/libesp32/Berry/src/be_baselib.c | 2 + lib/libesp32/Berry/src/be_constobj.h | 10 + lib/libesp32/Berry/src/be_introspectlib.c | 3 + tasmota/berry/modules/ctypes.be | 44 +- 11 files changed, 1806 insertions(+), 1912 deletions(-) rename lib/libesp32/Berry/default/{be_lvgl_ctypes.c => be_ctypes.c} (83%) rename lib/libesp32/Berry/generate/{be_fixed_be_class_lv_ctypes.h => be_fixed_be_class_ctypes.h} (71%) delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_classes.h diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes.c b/lib/libesp32/Berry/default/be_ctypes.c similarity index 83% rename from lib/libesp32/Berry/default/be_lvgl_ctypes.c rename to lib/libesp32/Berry/default/be_ctypes.c index 119f5982c..16aeff8d7 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes.c +++ b/lib/libesp32/Berry/default/be_ctypes.c @@ -1,11 +1,9 @@ /******************************************************************** - * Tasmota LVGL ctypes mapping + * Tasmota ctypes mapping *******************************************************************/ #include "be_constobj.h" +#include -#ifdef USE_LVGL - -#include "lvgl.h" extern __attribute__((noreturn)) void be_raisef(bvm *vm, const char *except, const char *msg, ...); // binary search within an array of sorted strings @@ -68,6 +66,7 @@ typedef struct be_ctypes_structure_item_t { typedef struct be_ctypes_structure_t { uint16_t size_bytes; /* size in bytes */ uint16_t size_elt; /* number of elements */ + const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ const be_ctypes_structure_item_t * items; } be_ctypes_structure_t; @@ -97,14 +96,6 @@ int be_ctypes_init(bvm *vm) { src_data = (void*) be_toint(vm, 2); } - // get global array of classes from global variable '.ctypes_classes' - be_getglobal(vm, ".ctypes_classes"); - const be_ctypes_classes_t * be_ctypes_classes = (const be_ctypes_classes_t *) be_tocomptr(vm, -1); - be_pop(vm, 1); - // berry_log_C("be_ctypes_init> be_ctypes_class = %p", be_ctypes_classes); - const char * class_name = be_classname(vm, 1); - // berry_log_C("be_ctypes_init> class_name = %s", class_name); - // call super(self, bytes) be_getglobal(vm, "super"); // push super function be_pushvalue(vm, 1); // push self instance @@ -121,16 +112,10 @@ int be_ctypes_init(bvm *vm) { // berry_log_C("be_ctypes_init> init called"); // look for class definition - int32_t class_idx = bin_search_ctypes(class_name, &be_ctypes_classes->classes[0], sizeof(be_ctypes_class_t), be_ctypes_classes->size); - if (class_idx >= 0) { - // found - const be_ctypes_structure_t * definitions = be_ctypes_classes->classes[class_idx].definitions; - // store definition in '.def' - // berry_log_C("Found definitions = %p", definitions); - be_pushcomptr(vm, (void*) definitions); - be_setmember(vm, 1, ".def"); - be_pop(vm, 1); - + be_getmember(vm, 1, "_def"); // static class comptr + const be_ctypes_structure_t *definitions; + definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); + if (definitions) { // call self.resize(definitions->size_bytes) be_getmember(vm, 1, "resize"); be_pushvalue(vm, 1); @@ -167,9 +152,13 @@ int be_ctypes_copy(bvm *vm) { be_return(vm); } +// get an attribute from a ctypes structure +// arg1: ctypes instance +// arg2: name of the argument +// The class has a `_def` static class attribute with the C low-level mapping definition int be_ctypes_member(bvm *vm) { int argc = be_top(vm); - be_getmember(vm, 1, ".def"); + be_getmember(vm, 1, "_def"); const be_ctypes_structure_t *definitions; definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); be_pop(vm, 1); @@ -194,14 +183,14 @@ int be_ctypes_member(bvm *vm) { } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian - int sign = false; // signed int + int sign = bfalse; // signed int if (size >= ctypes_i8) { size -= ctypes_i8 - 1; - sign = true; + sign = btrue; } if (size <= ctypes_be_i8) { size += ctypes_be_i8 - 1; - sign = true; + sign = btrue; } // get be_getmember(vm, 1, sign ? "geti" : "get"); // self.get or self.geti @@ -215,14 +204,7 @@ int be_ctypes_member(bvm *vm) { // the int result is at top of the stack // check if we need an instance mapping if (member->mapping > 0) { - // find the name of the class - - // get global array of classes from global variable '.ctypes_classes' - be_getglobal(vm, ".ctypes_classes"); - const be_ctypes_classes_t * be_ctypes_classes = (const be_ctypes_classes_t *) be_tocomptr(vm, -1); - be_pop(vm, 1); - - const char * mapping_name = be_ctypes_classes->instance_mapping[member->mapping - 1]; + const char * mapping_name = definitions->instance_mapping[member->mapping - 1]; if (mapping_name) { be_getglobal(vm, mapping_name); // stack: class be_pushvalue(vm, -2); // stack: class, value @@ -267,7 +249,7 @@ int be_ctypes_setmember(bvm *vm) { be_pop(vm, 1); } - be_getmember(vm, 1, ".def"); + be_getmember(vm, 1, "_def"); const be_ctypes_structure_t *definitions; definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); be_pop(vm, 1); @@ -293,14 +275,14 @@ int be_ctypes_setmember(bvm *vm) { } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian - int sign = false; // signed int + int sign = bfalse; // signed int if (size >= ctypes_i8) { size -= ctypes_i8 - 1; - sign = true; + sign = btrue; } if (size <= ctypes_be_i8) { size += ctypes_be_i8 - 1; - sign = true; + sign = btrue; } // set be_getmember(vm, 1, sign ? "seti" : "set"); // self.get or self.geti @@ -320,22 +302,20 @@ int be_ctypes_setmember(bvm *vm) { BE_EXPORT_VARIABLE extern const bclass be_class_bytes; -#include "../generate/be_fixed_be_class_lv_ctypes.h" +#include "../generate/be_fixed_be_class_ctypes.h" -void be_load_lvgl_ctypes_lib(bvm *vm) { - be_pushntvclass(vm, &be_class_lv_ctypes); +void be_load_ctypes_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_ctypes); be_setglobal(vm, "ctypes_bytes"); be_pop(vm, 1); } /* @const_object_info_begin -class be_class_lv_ctypes (scope: global, name: ctypes_bytes, super: be_class_bytes) { - .def, var +class be_class_ctypes (scope: global, name: ctypes_bytes, super: be_class_bytes) { + _def, nil() copy, func(be_ctypes_copy) init, func(be_ctypes_init) member, func(be_ctypes_member) setmember, func(be_ctypes_setmember) } @const_object_info_end */ - -#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c b/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c index e40f4edde..6492336bc 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c +++ b/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c @@ -42,6 +42,7 @@ typedef struct be_ctypes_structure_item_t { typedef struct be_ctypes_structure_t { uint16_t size_bytes; /* size in bytes */ uint16_t size_elt; /* number of elements */ + const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ const be_ctypes_structure_item_t * items; } be_ctypes_structure_t; @@ -56,7 +57,7 @@ typedef struct be_ctypes_classes_t { const be_ctypes_class_t * classes; } be_ctypes_classes_t; -BE_EXPORT_VARIABLE extern const bclass be_class_lv_ctypes; +BE_EXPORT_VARIABLE extern const bclass be_class_ctypes; void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { be_pushntvclass(vm, ctypes_class); @@ -64,10 +65,26 @@ void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes be_pop(vm, 1); } +const char * be_ctypes_instance_mappings[]; /* forward definition */ + +// Define a sub-class of ctypes with only one member which points to the ctypes defintion +#define be_define_ctypes_class(_c_name, _def, _super, _name) \ + be_local_class(_c_name, \ + 0, \ + _super, \ + be_nested_map(1, \ + ( (struct bmapnode*) &(const bmapnode[]) { \ + { be_nested_key("_def", 1985022181, 4, -1), be_const_comptr(_def) },\ + })), \ + (be_nested_const_str(_name, 0, sizeof(_name)-1)) \ + ) + /********************************************************************/ + const be_ctypes_structure_t be_lv_point = { 4, /* size in bytes */ 2, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[2]) { { "x", 0, 0, 0, 12, 0 }, { "y", 2, 0, 0, 12, 0 }, @@ -76,6 +93,7 @@ const be_ctypes_structure_t be_lv_point = { const be_ctypes_structure_t be_lv_area = { 8, /* size in bytes */ 4, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[4]) { { "x1", 0, 0, 0, 12, 0 }, { "x2", 4, 0, 0, 12, 0 }, @@ -86,6 +104,7 @@ const be_ctypes_structure_t be_lv_area = { const be_ctypes_structure_t be_lv_draw_rect_dsc = { 77, /* size in bytes */ 43, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[43]) { { "bg_blend_mode", 12, 0, 0, 1, 0 }, { "bg_color", 2, 0, 0, 2, 1 }, @@ -135,6 +154,7 @@ const be_ctypes_structure_t be_lv_draw_rect_dsc = { const be_ctypes_structure_t be_lv_draw_line_dsc = { 10, /* size in bytes */ 9, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[9]) { { "blend_mode", 9, 0, 2, 0, 0 }, { "color", 0, 0, 0, 2, 1 }, @@ -150,6 +170,7 @@ const be_ctypes_structure_t be_lv_draw_line_dsc = { const be_ctypes_structure_t be_lv_draw_img_dsc = { 14, /* size in bytes */ 9, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[9]) { { "angle", 1, 0, 0, 2, 0 }, { "antialias", 13, 0, 1, 0, 0 }, @@ -165,6 +186,7 @@ const be_ctypes_structure_t be_lv_draw_img_dsc = { const be_ctypes_structure_t be_lv_draw_label_dsc = { 31, /* size in bytes */ 15, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[15]) { { "bidi_dir", 27, 0, 0, 1, 0 }, { "blend_mode", 30, 0, 0, 1, 0 }, @@ -186,6 +208,7 @@ const be_ctypes_structure_t be_lv_draw_label_dsc = { const be_ctypes_structure_t be_lv_draw_mask_common_dsc = { 5, /* size in bytes */ 2, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[2]) { { "cb", 0, 0, 0, 4, 0 }, { "type", 4, 0, 0, 1, 0 }, @@ -194,6 +217,7 @@ const be_ctypes_structure_t be_lv_draw_mask_common_dsc = { const be_ctypes_structure_t be_lv_draw_mask_line_param_cfg = { 9, /* size in bytes */ 5, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[5]) { { "p1_x", 0, 0, 0, 12, 0 }, { "p1_y", 2, 0, 0, 12, 0 }, @@ -205,6 +229,7 @@ const be_ctypes_structure_t be_lv_draw_mask_line_param_cfg = { const be_ctypes_structure_t be_lv_draw_mask_line_param = { 35, /* size in bytes */ 15, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[15]) { { "cfg_p1_x", 5, 0, 0, 12, 0 }, { "cfg_p1_y", 7, 0, 0, 12, 0 }, @@ -226,6 +251,7 @@ const be_ctypes_structure_t be_lv_draw_mask_line_param = { const be_ctypes_structure_t be_lv_draw_mask_angle_param_cfg = { 8, /* size in bytes */ 4, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[4]) { { "end_angle", 6, 0, 0, 12, 0 }, { "start_angle", 4, 0, 0, 12, 0 }, @@ -236,6 +262,7 @@ const be_ctypes_structure_t be_lv_draw_mask_angle_param_cfg = { const be_ctypes_structure_t be_lv_draw_mask_angle_param = { 85, /* size in bytes */ 37, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[37]) { { "cfg_end_angle", 11, 0, 0, 12, 0 }, { "cfg_start_angle", 9, 0, 0, 12, 0 }, @@ -279,6 +306,7 @@ const be_ctypes_structure_t be_lv_draw_mask_angle_param = { const be_ctypes_structure_t be_lv_draw_mask_radius_param_cfg = { 11, /* size in bytes */ 6, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[6]) { { "outer", 10, 0, 1, 0, 0 }, { "radius", 8, 0, 0, 12, 0 }, @@ -291,6 +319,7 @@ const be_ctypes_structure_t be_lv_draw_mask_radius_param_cfg = { const be_ctypes_structure_t be_lv_sqrt_res = { 4, /* size in bytes */ 2, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[2]) { { "f", 2, 0, 0, 2, 0 }, { "i", 0, 0, 0, 2, 0 }, @@ -299,6 +328,7 @@ const be_ctypes_structure_t be_lv_sqrt_res = { const be_ctypes_structure_t be_lv_draw_mask_radius_param = { 24, /* size in bytes */ 11, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[11]) { { "cfg_outer", 15, 0, 1, 0, 0 }, { "cfg_radius", 13, 0, 0, 12, 0 }, @@ -316,6 +346,7 @@ const be_ctypes_structure_t be_lv_draw_mask_radius_param = { const be_ctypes_structure_t be_lv_draw_mask_fade_param_cfg = { 14, /* size in bytes */ 8, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[8]) { { "coords_x1", 0, 0, 0, 12, 0 }, { "coords_x2", 4, 0, 0, 12, 0 }, @@ -330,6 +361,7 @@ const be_ctypes_structure_t be_lv_draw_mask_fade_param_cfg = { const be_ctypes_structure_t be_lv_draw_mask_fade_param = { 19, /* size in bytes */ 10, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[10]) { { "cfg_coords_x1", 5, 0, 0, 12, 0 }, { "cfg_coords_x2", 9, 0, 0, 12, 0 }, @@ -346,6 +378,7 @@ const be_ctypes_structure_t be_lv_draw_mask_fade_param = { const be_ctypes_structure_t be_lv_draw_mask_map_param_cfg = { 12, /* size in bytes */ 5, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[5]) { { "coords_x1", 0, 0, 0, 12, 0 }, { "coords_x2", 4, 0, 0, 12, 0 }, @@ -357,6 +390,7 @@ const be_ctypes_structure_t be_lv_draw_mask_map_param_cfg = { const be_ctypes_structure_t be_lv_draw_mask_map_param = { 17, /* size in bytes */ 7, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[7]) { { "cfg_coords_x1", 5, 0, 0, 12, 0 }, { "cfg_coords_x2", 9, 0, 0, 12, 0 }, @@ -370,6 +404,7 @@ const be_ctypes_structure_t be_lv_draw_mask_map_param = { const be_ctypes_structure_t be_lv_draw_mask_saved = { 8, /* size in bytes */ 2, /* number of elements */ + be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[2]) { { "custom_id", 4, 0, 0, 4, 0 }, { "param", 0, 0, 0, 4, 0 }, @@ -380,97 +415,45 @@ const char * be_ctypes_instance_mappings[] = { NULL }; -const be_ctypes_classes_t be_ctypes_classes[] = { - 19, - be_ctypes_instance_mappings, - (const be_ctypes_class_t[19]) { - { "lv_area", &be_lv_area }, - { "lv_draw_img_dsc", &be_lv_draw_img_dsc }, - { "lv_draw_label_dsc", &be_lv_draw_label_dsc }, - { "lv_draw_line_dsc", &be_lv_draw_line_dsc }, - { "lv_draw_mask_angle_param", &be_lv_draw_mask_angle_param }, - { "lv_draw_mask_angle_param_cfg", &be_lv_draw_mask_angle_param_cfg }, - { "lv_draw_mask_common_dsc", &be_lv_draw_mask_common_dsc }, - { "lv_draw_mask_fade_param", &be_lv_draw_mask_fade_param }, - { "lv_draw_mask_fade_param_cfg", &be_lv_draw_mask_fade_param_cfg }, - { "lv_draw_mask_line_param", &be_lv_draw_mask_line_param }, - { "lv_draw_mask_line_param_cfg", &be_lv_draw_mask_line_param_cfg }, - { "lv_draw_mask_map_param", &be_lv_draw_mask_map_param }, - { "lv_draw_mask_map_param_cfg", &be_lv_draw_mask_map_param_cfg }, - { "lv_draw_mask_radius_param", &be_lv_draw_mask_radius_param }, - { "lv_draw_mask_radius_param_cfg", &be_lv_draw_mask_radius_param_cfg }, - { "lv_draw_mask_saved", &be_lv_draw_mask_saved }, - { "lv_draw_rect_dsc", &be_lv_draw_rect_dsc }, - { "lv_point", &be_lv_point }, - { "lv_sqrt_res", &be_lv_sqrt_res }, -}}; - -/* @const_object_info_begin -class be_class_ctypes_classes (scope: global) { - lv_area, int(0) - lv_draw_img_dsc, int(0) - lv_draw_label_dsc, int(0) - lv_draw_line_dsc, int(0) - lv_draw_mask_angle_param, int(0) - lv_draw_mask_angle_param_cfg, int(0) - lv_draw_mask_common_dsc, int(0) - lv_draw_mask_fade_param, int(0) - lv_draw_mask_fade_param_cfg, int(0) - lv_draw_mask_line_param, int(0) - lv_draw_mask_line_param_cfg, int(0) - lv_draw_mask_map_param, int(0) - lv_draw_mask_map_param_cfg, int(0) - lv_draw_mask_radius_param, int(0) - lv_draw_mask_radius_param_cfg, int(0) - lv_draw_mask_saved, int(0) - lv_draw_rect_dsc, int(0) - lv_point, int(0) - lv_sqrt_res, int(0) -} -@const_object_info_end */ +static be_define_ctypes_class(lv_area, &be_lv_area, &be_class_ctypes, "lv_area"); +static be_define_ctypes_class(lv_draw_img_dsc, &be_lv_draw_img_dsc, &be_class_ctypes, "lv_draw_img_dsc"); +static be_define_ctypes_class(lv_draw_label_dsc, &be_lv_draw_label_dsc, &be_class_ctypes, "lv_draw_label_dsc"); +static be_define_ctypes_class(lv_draw_line_dsc, &be_lv_draw_line_dsc, &be_class_ctypes, "lv_draw_line_dsc"); +static be_define_ctypes_class(lv_draw_mask_angle_param, &be_lv_draw_mask_angle_param, &be_class_ctypes, "lv_draw_mask_angle_param"); +static be_define_ctypes_class(lv_draw_mask_angle_param_cfg, &be_lv_draw_mask_angle_param_cfg, &be_class_ctypes, "lv_draw_mask_angle_param_cfg"); +static be_define_ctypes_class(lv_draw_mask_common_dsc, &be_lv_draw_mask_common_dsc, &be_class_ctypes, "lv_draw_mask_common_dsc"); +static be_define_ctypes_class(lv_draw_mask_fade_param, &be_lv_draw_mask_fade_param, &be_class_ctypes, "lv_draw_mask_fade_param"); +static be_define_ctypes_class(lv_draw_mask_fade_param_cfg, &be_lv_draw_mask_fade_param_cfg, &be_class_ctypes, "lv_draw_mask_fade_param_cfg"); +static be_define_ctypes_class(lv_draw_mask_line_param, &be_lv_draw_mask_line_param, &be_class_ctypes, "lv_draw_mask_line_param"); +static be_define_ctypes_class(lv_draw_mask_line_param_cfg, &be_lv_draw_mask_line_param_cfg, &be_class_ctypes, "lv_draw_mask_line_param_cfg"); +static be_define_ctypes_class(lv_draw_mask_map_param, &be_lv_draw_mask_map_param, &be_class_ctypes, "lv_draw_mask_map_param"); +static be_define_ctypes_class(lv_draw_mask_map_param_cfg, &be_lv_draw_mask_map_param_cfg, &be_class_ctypes, "lv_draw_mask_map_param_cfg"); +static be_define_ctypes_class(lv_draw_mask_radius_param, &be_lv_draw_mask_radius_param, &be_class_ctypes, "lv_draw_mask_radius_param"); +static be_define_ctypes_class(lv_draw_mask_radius_param_cfg, &be_lv_draw_mask_radius_param_cfg, &be_class_ctypes, "lv_draw_mask_radius_param_cfg"); +static be_define_ctypes_class(lv_draw_mask_saved, &be_lv_draw_mask_saved, &be_class_ctypes, "lv_draw_mask_saved"); +static be_define_ctypes_class(lv_draw_rect_dsc, &be_lv_draw_rect_dsc, &be_class_ctypes, "lv_draw_rect_dsc"); +static be_define_ctypes_class(lv_point, &be_lv_point, &be_class_ctypes, "lv_point"); +static be_define_ctypes_class(lv_sqrt_res, &be_lv_sqrt_res, &be_class_ctypes, "lv_sqrt_res"); void be_load_ctypes_definitions_lib(bvm *vm) { - be_pushcomptr(vm, (void*) be_ctypes_classes); - be_setglobal(vm, ".ctypes_classes"); - be_pop(vm, 1); - - static be_define_const_empty_class(be_class_lv_area, &be_class_lv_ctypes, lv_area); ctypes_register_class(vm, &be_class_lv_area, &be_lv_area); - static be_define_const_empty_class(be_class_lv_draw_img_dsc, &be_class_lv_ctypes, lv_draw_img_dsc); ctypes_register_class(vm, &be_class_lv_draw_img_dsc, &be_lv_draw_img_dsc); - static be_define_const_empty_class(be_class_lv_draw_label_dsc, &be_class_lv_ctypes, lv_draw_label_dsc); ctypes_register_class(vm, &be_class_lv_draw_label_dsc, &be_lv_draw_label_dsc); - static be_define_const_empty_class(be_class_lv_draw_line_dsc, &be_class_lv_ctypes, lv_draw_line_dsc); ctypes_register_class(vm, &be_class_lv_draw_line_dsc, &be_lv_draw_line_dsc); - static be_define_const_empty_class(be_class_lv_draw_mask_angle_param, &be_class_lv_ctypes, lv_draw_mask_angle_param); ctypes_register_class(vm, &be_class_lv_draw_mask_angle_param, &be_lv_draw_mask_angle_param); - static be_define_const_empty_class(be_class_lv_draw_mask_angle_param_cfg, &be_class_lv_ctypes, lv_draw_mask_angle_param_cfg); ctypes_register_class(vm, &be_class_lv_draw_mask_angle_param_cfg, &be_lv_draw_mask_angle_param_cfg); - static be_define_const_empty_class(be_class_lv_draw_mask_common_dsc, &be_class_lv_ctypes, lv_draw_mask_common_dsc); ctypes_register_class(vm, &be_class_lv_draw_mask_common_dsc, &be_lv_draw_mask_common_dsc); - static be_define_const_empty_class(be_class_lv_draw_mask_fade_param, &be_class_lv_ctypes, lv_draw_mask_fade_param); ctypes_register_class(vm, &be_class_lv_draw_mask_fade_param, &be_lv_draw_mask_fade_param); - static be_define_const_empty_class(be_class_lv_draw_mask_fade_param_cfg, &be_class_lv_ctypes, lv_draw_mask_fade_param_cfg); ctypes_register_class(vm, &be_class_lv_draw_mask_fade_param_cfg, &be_lv_draw_mask_fade_param_cfg); - static be_define_const_empty_class(be_class_lv_draw_mask_line_param, &be_class_lv_ctypes, lv_draw_mask_line_param); ctypes_register_class(vm, &be_class_lv_draw_mask_line_param, &be_lv_draw_mask_line_param); - static be_define_const_empty_class(be_class_lv_draw_mask_line_param_cfg, &be_class_lv_ctypes, lv_draw_mask_line_param_cfg); ctypes_register_class(vm, &be_class_lv_draw_mask_line_param_cfg, &be_lv_draw_mask_line_param_cfg); - static be_define_const_empty_class(be_class_lv_draw_mask_map_param, &be_class_lv_ctypes, lv_draw_mask_map_param); ctypes_register_class(vm, &be_class_lv_draw_mask_map_param, &be_lv_draw_mask_map_param); - static be_define_const_empty_class(be_class_lv_draw_mask_map_param_cfg, &be_class_lv_ctypes, lv_draw_mask_map_param_cfg); ctypes_register_class(vm, &be_class_lv_draw_mask_map_param_cfg, &be_lv_draw_mask_map_param_cfg); - static be_define_const_empty_class(be_class_lv_draw_mask_radius_param, &be_class_lv_ctypes, lv_draw_mask_radius_param); ctypes_register_class(vm, &be_class_lv_draw_mask_radius_param, &be_lv_draw_mask_radius_param); - static be_define_const_empty_class(be_class_lv_draw_mask_radius_param_cfg, &be_class_lv_ctypes, lv_draw_mask_radius_param_cfg); ctypes_register_class(vm, &be_class_lv_draw_mask_radius_param_cfg, &be_lv_draw_mask_radius_param_cfg); - static be_define_const_empty_class(be_class_lv_draw_mask_saved, &be_class_lv_ctypes, lv_draw_mask_saved); ctypes_register_class(vm, &be_class_lv_draw_mask_saved, &be_lv_draw_mask_saved); - static be_define_const_empty_class(be_class_lv_draw_rect_dsc, &be_class_lv_ctypes, lv_draw_rect_dsc); ctypes_register_class(vm, &be_class_lv_draw_rect_dsc, &be_lv_draw_rect_dsc); - static be_define_const_empty_class(be_class_lv_point, &be_class_lv_ctypes, lv_point); ctypes_register_class(vm, &be_class_lv_point, &be_lv_point); - static be_define_const_empty_class(be_class_lv_sqrt_res, &be_class_lv_ctypes, lv_sqrt_res); ctypes_register_class(vm, &be_class_lv_sqrt_res, &be_lv_sqrt_res); } /********************************************************************/ diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index bfc02961f..f6c082670 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -114,6 +114,8 @@ extern void be_load_md5_lib(bvm *vm); extern void be_load_webclient_lib(bvm *vm); extern void be_load_crypto_lib(bvm *vm); +extern void be_load_ctypes_lib(bvm *vm); + #ifdef USE_I2S_AUDIO_BERRY extern void be_load_driver_audio_lib(bvm *vm); #endif @@ -124,7 +126,6 @@ extern void be_load_lvgl_font_lib(bvm *vm); extern void be_load_lv_all_lib(bvm *vm); extern void be_load_lvgl_cb_lib(bvm *vm); extern void be_load_lvgl_cb_all_lib(bvm *vm); -extern void be_load_lvgl_ctypes_lib(bvm *vm); extern void be_load_ctypes_definitions_lib(bvm *vm); // custom widgets extern void be_load_lv_signal_bars_class(bvm *vm); @@ -150,6 +151,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_Driver_class(vm); be_load_md5_lib(vm); be_load_serial_lib(vm); + be_load_ctypes_lib(vm); #ifdef USE_ALEXA_AVS be_load_crypto_lib(vm); #endif @@ -175,7 +177,6 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_lv_all_lib(vm); be_load_lvgl_cb_lib(vm); be_load_lvgl_cb_all_lib(vm); - be_load_lvgl_ctypes_lib(vm); be_load_ctypes_definitions_lib(vm); // custom widgets be_load_lv_signal_bars_class(vm); diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 5fb3c118e..feefc74f8 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,714 +1,695 @@ -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_lv_draw_mask_radius_param; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_get_option; extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_lv_draw_mask_line_param; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_lv_draw_mask_radius_param_cfg; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_lv_draw_mask_common_dsc; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_lv_draw_mask_fade_param_cfg; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_lv_draw_line_dsc; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_lv_draw_mask_saved; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_lv_draw_label_dsc; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_KEY1_INV_NP; extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_lv_point; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_lv_sqrt_res; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_lv_draw_mask_fade_param; -extern const bcstring be_const_str_lv_draw_rect_dsc; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_draw_mask_map_param_cfg; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_draw_mask_angle_param; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_lv_draw_img_dsc; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_dot_def; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_lv_area; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_IEM3000_RX; extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_lv_draw_mask_map_param; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_lv_draw_mask_line_param_cfg; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_AudioGeneratorWAV; extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_lv_draw_mask_angle_param_cfg; -extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_SDCARD_CS; extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_MD5; extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_get_option; extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_; +extern const bcstring be_const_str__def; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_GPS_TX; extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_type; extern const bcstring be_const_str_DI; extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_SDM72_RX; extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_start; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index ae1456191..1b441ebd6 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1069 +1,1040 @@ -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_I2S_IN_DATA); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_AZ_TXD); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_IBEACON_TX); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_lv_draw_mask_radius_param); -be_define_const_str(lv_draw_mask_radius_param, "lv_draw_mask_radius_param", 3777679220u, 0, 25, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_NRF24_DC); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, NULL); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_serial); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_OPTION_A); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SERIAL_6O2); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_serial); be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_SERIAL_6O1); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_lv_draw_mask_line_param); -be_define_const_str(lv_draw_mask_line_param, "lv_draw_mask_line_param", 2692990704u, 0, 23, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_I2S_OUT_DATA); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_find); be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, NULL); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str__cb); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str__cb); be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SERIAL_7O2); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_lv_draw_mask_radius_param_cfg); -be_define_const_str(lv_draw_mask_radius_param_cfg, "lv_draw_mask_radius_param_cfg", 3889386773u, 0, 29, NULL); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_BS814_CLK); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_DDSU666_RX); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_HPMA_RX); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_PMS5003_TX); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(lv_draw_mask_common_dsc, "lv_draw_mask_common_dsc", 1429224708u, 0, 23, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(lv_draw_mask_fade_param_cfg, "lv_draw_mask_fade_param_cfg", 4158595197u, 0, 27, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_IBEACON_RX); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_lv_draw_line_dsc); -be_define_const_str(lv_draw_line_dsc, "lv_draw_line_dsc", 2422805236u, 0, 16, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_LE01MR_RX); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_MHZ_TXD); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_set_auth); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_set_auth); be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_I2S_IN_SLCT); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_MCP39F5_RST); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_NRF24_CS); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_KEY1); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SERIAL_5O1); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SERIAL_8E2); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_TFMINIPLUS_RX); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_draw_mask_saved); -be_define_const_str(lv_draw_mask_saved, "lv_draw_mask_saved", 2063709159u, 0, 18, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_get_switch); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SERIAL_6N2); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_lv_draw_label_dsc); -be_define_const_str(lv_draw_label_dsc, "lv_draw_label_dsc", 265601842u, 0, 17, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SYMBOL_GPS); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, NULL); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_SYMBOL_BULLET); be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, NULL); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_write_bytes); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__def); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_write_bytes); be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_else); be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(lv_point, "lv_point", 4120221790u, 0, 8, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_INPUT_PULLDOWN); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, NULL); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_lv_sqrt_res); -be_define_const_str(lv_sqrt_res, "lv_sqrt_res", 2904473995u, 0, 11, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_lv_draw_mask_fade_param); -be_define_const_str(lv_draw_mask_fade_param, "lv_draw_mask_fade_param", 2743309964u, 0, 23, &be_const_str_lv_draw_rect_dsc); -be_define_const_str(lv_draw_rect_dsc, "lv_draw_rect_dsc", 3246772488u, 0, 16, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_SDM630_TX); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_resize); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_resize); be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_TM1637CLK); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SERIAL_7O1); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DDSU666_TX); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SERIAL_5E2); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_dac_voltage); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_POST); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_TM1637CLK); be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, NULL); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_EPD_DATA); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_LED1_INV); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_INPUT_PULLUP); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MAX31855DO); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_ILI9341_DC); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_SERIAL_5O2); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SERIAL_8E1); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_draw_mask_map_param_cfg); -be_define_const_str(lv_draw_mask_map_param_cfg, "lv_draw_mask_map_param_cfg", 3822900597u, 0, 26, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, NULL); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, NULL); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_def); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_def); be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SERIAL_5N2); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_SERIAL_7E1); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_SERIAL_7N2); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_draw_mask_angle_param); -be_define_const_str(lv_draw_mask_angle_param, "lv_draw_mask_angle_param", 4192166041u, 0, 24, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_lv_draw_img_dsc); -be_define_const_str(lv_draw_img_dsc, "lv_draw_img_dsc", 999847907u, 0, 15, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(dot_def, ".def", 4095748648u, 0, 4, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, &be_const_str_lv_area); -be_define_const_str(lv_area, "lv_area", 2521150401u, 0, 7, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_AudioGeneratorMP3); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_OPTION_A); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(lv_draw_mask_map_param, "lv_draw_mask_map_param", 1666886804u, 0, 22, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_LEFT); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_lv_draw_mask_line_param_cfg); -be_define_const_str(lv_draw_mask_line_param_cfg, "lv_draw_mask_line_param_cfg", 2154874825u, 0, 27, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(lv_draw_mask_angle_param_cfg, "lv_draw_mask_angle_param_cfg", 3599767368u, 0, 28, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_DAC); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_load_font); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_load_font); be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_TCP_TX); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); +be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_TCP_TX); be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_write8); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_FTC532); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SERIAL_5N1); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SERIAL_8O1); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_KEY1_INV_NP); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_BS814_DAT); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_AudioFileSource); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_NRF24_CS); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_lv_gauge); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SERIAL_5O1); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SERIAL_5N2); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SERIAL_7O2); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_KEY1_INV_PD); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_RDM6300_RX); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, NULL); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, NULL); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_INTERRUPT); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_DEEPSLEEP); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_SERIAL_7O1); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_A4988_DIR); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SERIAL_5E1); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_BS814_CLK); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_DCKI); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SERIAL_6O1); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_MAX31855DO); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SERIAL_8N1); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_EPAPER42_CS); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_A4988_MS1); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SERIAL_7E2); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, NULL); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); static const bstring* const m_string_table[] = { - NULL, - NULL, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_map, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_ADC_CT_POWER, - NULL, - (const bstring *)&be_const_str_load, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_lv_page, - NULL, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_MAX7219CLK, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str__ccmd, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_rand, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_SERIAL_6N1, - (const bstring *)&be_const_str_SERIAL_5N1, - (const bstring *)&be_const_str_get_option, (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_get, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_has_arg, + (const bstring *)&be_const_str_A4988_STP, NULL, NULL, - NULL, - (const bstring *)&be_const_str_SERIAL_8N2, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_read_bytes, - NULL, - (const bstring *)&be_const_str_SYMBOL_SHUFFLE, - (const bstring *)&be_const_str_gamma8, - (const bstring *)&be_const_str_time_reached, - (const bstring *)&be_const_str_SERIAL_7E2, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_add, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_A4988_ENA, NULL, NULL, - (const bstring *)&be_const_str__drivers, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_EC_C25519, - NULL, - (const bstring *)&be_const_str_MGC3130_RESET, - NULL, - (const bstring *)&be_const_str_static, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_DHT11, - NULL, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_find, - (const bstring *)&be_const_str_add_cmd, - (const bstring *)&be_const_str_imin, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_add_rule, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_event, - (const bstring *)&be_const_str__get_cb, - (const bstring *)&be_const_str_RFRECV, - NULL, - NULL, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_content_flush, - (const bstring *)&be_const_str_KEY1_NP, - NULL, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_get_string, - NULL, - (const bstring *)&be_const_str_SERIAL_5E1, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_as, - (const bstring *)&be_const_str_lv_draw_mask_common_dsc, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_lv_draw_mask_fade_param_cfg, + (const bstring *)&be_const_str_ETH_PHY_MDC, (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_classof, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_encrypt, + (const bstring *)&be_const_str_SDCARD_CS, NULL, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_TCP_RX, - (const bstring *)&be_const_str_SYMBOL_OK, - NULL, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_Wire, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_LE01MR_RX, (const bstring *)&be_const_str_opt_call, NULL, - (const bstring *)&be_const_str_scan, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_SERIAL_7E1, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_collect, + (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_, + NULL, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_lv_cb, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_type, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + NULL, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_MAX7219DIN, + NULL, + (const bstring *)&be_const_str_SM2135_CLK, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_MGC3130_RESET, + NULL, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str__ccmd, + NULL, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_save, + (const bstring *)&be_const_str_SAIR_RX, + NULL, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_ARIRFRCV, + NULL, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_get_power, + NULL, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_TM1637DIO, + (const bstring *)&be_const_str_SERIAL_8N2, + (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_lv_cont, + (const bstring *)&be_const_str_last_modified, NULL, NULL, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_TM1638CLK, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_AudioGeneratorWAV, - NULL, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_CHANGE, - NULL, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_detect, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_cosh, + (const bstring *)&be_const_str_floor, + (const bstring *)&be_const_str_wire2, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_reset, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_SERIAL_5O2, + (const bstring *)&be_const_str_ZIGBEE_RST, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_available, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_select, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_DHT22, (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_SYMBOL_DOWN, + NULL, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_dump, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_WIEGAND_D1, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_imax, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_reverse, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_rad, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_read12, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_write, + (const bstring *)&be_const_str_opt_connect, + NULL, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_lv_list, + (const bstring *)&be_const_str_SSD1351_DC, + NULL, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_ROT1A, + NULL, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_arg_size, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_lv_group_focus_cb, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_find_op, + (const bstring *)&be_const_str_TM1638STB, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_opt_neq, + NULL, + (const bstring *)&be_const_str_SERIAL_6N1, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_imin, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_SYMBOL_POWER, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_content_start, + (const bstring *)&be_const_str_ETH_PHY_POWER, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_gamma10, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_erase, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_arg, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_webclient, + (const bstring *)&be_const_str_WEBCAM_SIOC, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_concat, + NULL, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_SERIAL_8E1, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str__timers, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_gamma8, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_exp, + (const bstring *)&be_const_str_open, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_event, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_classof, + NULL, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_wifi, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_eth, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_REL1, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_isinstance, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_assert, NULL, - (const bstring *)&be_const_str_FTC532, (const bstring *)&be_const_str_DSB_OUT, NULL, - (const bstring *)&be_const_str_SYMBOL_PASTE, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_SYMBOL_CLOSE, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_encrypt, (const bstring *)&be_const_str_SYMBOL_PREV, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_CC1101_GDO2, - NULL, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_push, - (const bstring *)&be_const_str_PULLDOWN, - (const bstring *)&be_const_str_LOW, - NULL, - (const bstring *)&be_const_str_OLED_RESET, - (const bstring *)&be_const_str_lv_point, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_SERIAL_5E2, - NULL, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_i2c_enabled, - (const bstring *)&be_const_str_count, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_cos, - (const bstring *)&be_const_str_sinh, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_TELEINFO_RX, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str_SYMBOL_DIRECTORY, - (const bstring *)&be_const_str_CSE7761_RX, - NULL, - (const bstring *)&be_const_str_update, - NULL, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_dac_voltage, - (const bstring *)&be_const_str_I2S_OUT_CLK, - NULL, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_srand, - NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_add_driver, - (const bstring *)&be_const_str_HM10_TX, - NULL, - (const bstring *)&be_const_str_pin, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_fromstring, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_erase, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_asstring, - (const bstring *)&be_const_str_SERIAL_8O2, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_SYMBOL_VIDEO, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_SDM630_TX, NULL, (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_ADC_RANGE, - NULL, - (const bstring *)&be_const_str_SYMBOL_WIFI, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_traceback, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_delay, - (const bstring *)&be_const_str_LMT01, - NULL, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_lv_cb, - NULL, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_ARIRFSEL, - NULL, - NULL, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_isinstance, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_ROT1A_NP, - NULL, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_SYMBOL_LOOP, - NULL, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_toupper, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str__end_transmission, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_SERIAL_6O2, - (const bstring *)&be_const_str_add, - (const bstring *)&be_const_str_collect, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - NULL, - (const bstring *)&be_const_str_available, - (const bstring *)&be_const_str_LEDLNK_INV, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_REL1, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_dot_def, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str_PWM1_INV, - NULL, - NULL, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_SERIAL_8O1, - (const bstring *)&be_const_str_arg, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_SERIAL_8N1, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - NULL, - (const bstring *)&be_const_str_TASMOTACLIENT_RST_INV, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_I2C_SCL, - NULL, - (const bstring *)&be_const_str_PMS5003_RX, - NULL, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_lv_label, + (const bstring *)&be_const_str_IBEACON_RX, (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_fromb64, - (const bstring *)&be_const_str_lv_draw_mask_map_param, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_url_encode, - (const bstring *)&be_const_str_lv_draw_mask_angle_param_cfg, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_SERIAL_8E2, NULL, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_resolvecmnd, - (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_write8, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_read32, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_SYMBOL_STOP, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_KEY1_TC, NULL, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_SYMBOL_CUT, NULL, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_lv_indev, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_SYMBOL_WARNING, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - (const bstring *)&be_const_str_MHZ_RXD + NULL, + (const bstring *)&be_const_str_lv_btnmatrix, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_WEBCAM_PWDN, + (const bstring *)&be_const_str_add_cmd, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_HPMA_RX, + NULL, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_LEDLNK_INV, + NULL, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_XPT2046_CS, + (const bstring *)&be_const_str_KEY1_INV, + NULL, + NULL, + (const bstring *)&be_const_str_PWM1_INV, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_WEBCAM_PCLK, + NULL, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_DAC, + (const bstring *)&be_const_str_check_privileged_access, + (const bstring *)&be_const_str_ZEROCROSS, + NULL, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_AS608_TX, + NULL, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_MCP39F5_RX, + NULL, + NULL, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_LEDLNK, + NULL, + (const bstring *)&be_const_str_SYMBOL_SETTINGS, + NULL, + (const bstring *)&be_const_str_SYMBOL_REFRESH, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_SSPI_MOSI, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_isrunning, + (const bstring *)&be_const_str_SYMBOL_PASTE, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_HALLEFFECT }; static const struct bconststrtab m_const_string_table = { - .size = 346, - .count = 692, + .size = 336, + .count = 673, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h similarity index 71% rename from lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h rename to lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h index 8d79a9bbe..dbf8fcdd3 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_ctypes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h @@ -1,21 +1,21 @@ #include "be_constobj.h" -static be_define_const_map_slots(be_class_lv_ctypes_map) { +static be_define_const_map_slots(be_class_ctypes_map) { { be_const_key(init, -1), be_const_func(be_ctypes_init) }, { be_const_key(setmember, 2), be_const_func(be_ctypes_setmember) }, + { be_const_key(_def, 3), be_const_nil() }, { be_const_key(member, -1), be_const_func(be_ctypes_member) }, - { be_const_key(dot_def, -1), be_const_var(0) }, { be_const_key(copy, -1), be_const_func(be_ctypes_copy) }, }; static be_define_const_map( - be_class_lv_ctypes_map, + be_class_ctypes_map, 5 ); BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_ctypes, - 1, + be_class_ctypes, + 0, (bclass *)&be_class_bytes, ctypes_bytes ); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_classes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_classes.h deleted file mode 100644 index 7f559c508..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_classes.h +++ /dev/null @@ -1,35 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_ctypes_classes_map) { - { be_const_key(lv_draw_mask_radius_param_cfg, -1), be_const_int(0) }, - { be_const_key(lv_draw_img_dsc, 14), be_const_int(0) }, - { be_const_key(lv_draw_mask_radius_param, -1), be_const_int(0) }, - { be_const_key(lv_point, 4), be_const_int(0) }, - { be_const_key(lv_draw_mask_fade_param_cfg, 5), be_const_int(0) }, - { be_const_key(lv_draw_mask_map_param, -1), be_const_int(0) }, - { be_const_key(lv_draw_label_dsc, -1), be_const_int(0) }, - { be_const_key(lv_area, 17), be_const_int(0) }, - { be_const_key(lv_draw_mask_angle_param_cfg, 3), be_const_int(0) }, - { be_const_key(lv_draw_mask_line_param_cfg, -1), be_const_int(0) }, - { be_const_key(lv_draw_mask_saved, 12), be_const_int(0) }, - { be_const_key(lv_draw_mask_map_param_cfg, -1), be_const_int(0) }, - { be_const_key(lv_draw_rect_dsc, -1), be_const_int(0) }, - { be_const_key(lv_draw_mask_angle_param, -1), be_const_int(0) }, - { be_const_key(lv_draw_line_dsc, 15), be_const_int(0) }, - { be_const_key(lv_draw_mask_common_dsc, -1), be_const_int(0) }, - { be_const_key(lv_draw_mask_line_param, -1), be_const_int(0) }, - { be_const_key(lv_sqrt_res, -1), be_const_int(0) }, - { be_const_key(lv_draw_mask_fade_param, 13), be_const_int(0) }, -}; - -static be_define_const_map( - be_class_ctypes_classes_map, - 19 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_ctypes_classes, - 0, - NULL, - be_class_ctypes_classes -); diff --git a/lib/libesp32/Berry/src/be_baselib.c b/lib/libesp32/Berry/src/be_baselib.c index 8c269e526..3ae2a80ca 100644 --- a/lib/libesp32/Berry/src/be_baselib.c +++ b/lib/libesp32/Berry/src/be_baselib.c @@ -231,6 +231,8 @@ static int l_int(bvm *vm) be_pushint(vm, (bint)be_toreal(vm, 1)); } else if (be_isint(vm, 1)) { be_pushvalue(vm, 1); + } else if (be_iscomptr(vm, 1)) { + be_pushint(vm, (int) be_tocomptr(vm, 1)); } else { be_return_nil(vm); } diff --git a/lib/libesp32/Berry/src/be_constobj.h b/lib/libesp32/Berry/src/be_constobj.h index 8dcf17d78..d94dd2729 100644 --- a/lib/libesp32/Berry/src/be_constobj.h +++ b/lib/libesp32/Berry/src/be_constobj.h @@ -72,6 +72,11 @@ extern "C" { .type = BE_STRING \ } +#define be_const_comptr(_val) { \ + .v.p = (void*)(_val), \ + .type = BE_COMPTR \ +} + #define be_const_class(_class) { \ .v.c = &(_class), \ .type = BE_CLASS \ @@ -218,6 +223,11 @@ const bntvmodule be_native_module(_module) = { \ BE_REAL \ } +#define be_const_comptr(_val) { \ + bvaldata((void*)(_val)), \ + BE_COMPTR \ +} + #define be_const_str(_string) { \ bvaldata(bstring(_string)), \ BE_STRING \ diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index 171c5a03f..4115e9f7e 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -86,6 +86,9 @@ static int m_toptr(bvm *vm) if (var_basetype(v) >= BE_GCOBJECT) { be_pushcomptr(vm, var_toobj(v)); be_return(vm); + } else if (var_type(v) == BE_INT) { + be_pushcomptr(vm, (void*) var_toint(v)); + be_return(vm); } else { be_raise(vm, "value_error", "unsupported for this type"); } diff --git a/tasmota/berry/modules/ctypes.be b/tasmota/berry/modules/ctypes.be index 15ec12853..090d3cea0 100644 --- a/tasmota/berry/modules/ctypes.be +++ b/tasmota/berry/modules/ctypes.be @@ -58,6 +58,7 @@ ctypes.bf_12 = 112 ctypes.bf_13 = 113 ctypes.bf_14 = 114 ctypes.bf_15 = 115 +ctypes.bf_16 = 116 def findinlist(l, x) for i:0..size(l)-1 @@ -193,6 +194,7 @@ ctypes.print_types = def () print("typedef struct be_ctypes_structure_t {") print(" uint16_t size_bytes; /* size in bytes */") print(" uint16_t size_elt; /* number of elements */") + print(" const char **instance_mapping; /* array of instance class names for automatic instanciation of class */") print(" const be_ctypes_structure_item_t * items;") print("} be_ctypes_structure_t;") print() @@ -207,7 +209,7 @@ ctypes.print_types = def () print(" const be_ctypes_class_t * classes;") print("} be_ctypes_classes_t;") print() - print("BE_EXPORT_VARIABLE extern const bclass be_class_lv_ctypes;") + print("BE_EXPORT_VARIABLE extern const bclass be_class_ctypes;") print() print("void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) {") print(" be_pushntvclass(vm, ctypes_class);") @@ -215,7 +217,23 @@ ctypes.print_types = def () print(" be_pop(vm, 1);") print("}") print() + print("const char * be_ctypes_instance_mappings[]; /* forward definition */") + print() + + print("// Define a sub-class of ctypes with only one member which points to the ctypes defintion") + print("#define be_define_ctypes_class(_c_name, _def, _super, _name) \\") + print(" be_local_class(_c_name, \\") + print(" 0, \\") + print(" _super, \\") + print(" be_nested_map(1, \\") + print(" ( (struct bmapnode*) &(const bmapnode[]) { \\") + print(" { be_nested_key(\"_def\", 1985022181, 4, -1), be_const_comptr(_def) },\\") + print(" })), \\") + print(" (be_nested_const_str(_name, 0, sizeof(_name)-1)) \\") + print(" )") + print() print("/********************************************************************/") + print() end global_classes = [] # track the list of all classes and @@ -236,33 +254,13 @@ ctypes.print_classes = def () ctypes.sort(global_classes) - print("const be_ctypes_classes_t be_ctypes_classes[] = {") - print(string.format(" %i,", size(global_classes))) - print(string.format(" be_ctypes_instance_mappings,")) - print(string.format(" (const be_ctypes_class_t[%i]) {", size(global_classes))) - for elt:global_classes - print(string.format(" { \"%s\", &be_%s },", elt, elt)) + print(string.format("static be_define_ctypes_class(%s, &be_%s, &be_class_ctypes, \"%s\");", elt, elt, elt)) end - print("}};") print() - print("/* @const_object_info_begin") - print("class be_class_ctypes_classes (scope: global) {") - for elt:global_classes - print(string.format(" %s, int(0)", elt)) - end - print("}") - print("@const_object_info_end */") - print() - print("void be_load_ctypes_definitions_lib(bvm *vm) {") - print(" be_pushcomptr(vm, (void*) be_ctypes_classes);") - print(" be_setglobal(vm, \".ctypes_classes\");") - print(" be_pop(vm, 1);") - print() for elt:global_classes - print(string.format(" static be_define_const_empty_class(be_class_%s, &be_class_lv_ctypes, %s);", elt, elt)) print(string.format(" ctypes_register_class(vm, &be_class_%s, &be_%s);", elt, elt)) end print("}") @@ -316,6 +314,7 @@ class structure print(string.format("const be_ctypes_structure_t be_%s = {", name)) print(string.format(" %i, /* size in bytes */", self.size_bytes)) print(string.format(" %i, /* number of elements */", size(self.mapping))) + print(string.format(" be_ctypes_instance_mappings,")) print(string.format(" (const be_ctypes_structure_item_t[%i]) {", size(self.mapping))) # list keys for future binary search var names = [] @@ -447,7 +446,6 @@ class structure self.get_closures[name] = def (b, p) return ctypes.get_bits(b, cur_offset + p, bit_offset, size_in_bits) end self.set_closures[name] = def (b, p, v) return ctypes.set_bits(b, cur_offset+ p, bit_offset, size_in_bits, v) end - self.cur_offset += size_in_bits / 8 self.cur_offset += (self.bit_offset + size_in_bits) / 8 self.bit_offset = (self.bit_offset + size_in_bits) % 8 end From db1036e8b92461bde3a9385146619704ded1fcbc Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Wed, 22 Sep 2021 16:40:52 +0200 Subject: [PATCH 239/317] fix sml obis --- tasmota/xsns_53_sml.ino | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/tasmota/xsns_53_sml.ino b/tasmota/xsns_53_sml.ino index 5c3644d1f..771b0bd0c 100755 --- a/tasmota/xsns_53_sml.ino +++ b/tasmota/xsns_53_sml.ino @@ -1287,7 +1287,11 @@ void sml_empty_receiver(uint32_t meters) { void sml_shift_in(uint32_t meters,uint32_t shard) { uint32_t count; +#ifndef SML_OBIS_LINE if (meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='M' && meter_desc_p[meters].type!='p' && meter_desc_p[meters].type!='R' && meter_desc_p[meters].type!='v') { +#else + if (meter_desc_p[meters].type!='o' && meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='M' && meter_desc_p[meters].type!='p' && meter_desc_p[meters].type!='R' && meter_desc_p[meters].type!='v') { +#endif // shift in for (count=0; countread(); - if (meter_desc_p[meters].type=='o') { - smltbuf[meters][SML_BSIZ-1]=iob&0x7f; + if (meter_desc_p[meters].type == 'o') { +#ifndef SML_OBIS_LINE + smltbuf[meters][SML_BSIZ-1] = iob & 0x7f; +#else + iob &= 0x7f; + smltbuf[meters][meter_spos[meters]] = iob; + meter_spos[meters]++; + if (meter_spos[meters] >= SML_BSIZ) { + meter_spos[meters] = 0; + } + if (iob == 0x0a) { + SML_Decode(meters); + meter_spos[meters] = 0; + } +#endif } else if (meter_desc_p[meters].type=='s') { smltbuf[meters][SML_BSIZ-1]=iob; } else if (meter_desc_p[meters].type=='r') { @@ -1369,7 +1386,11 @@ void sml_shift_in(uint32_t meters,uint32_t shard) { } } sb_counter++; +#ifndef SML_OBIS_LINE if (meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='M' && meter_desc_p[meters].type!='p' && meter_desc_p[meters].type!='R' && meter_desc_p[meters].type!='v') SML_Decode(meters); +#else + if (meter_desc_p[meters].type!='o' && meter_desc_p[meters].type!='e' && meter_desc_p[meters].type!='m' && meter_desc_p[meters].type!='M' && meter_desc_p[meters].type!='p' && meter_desc_p[meters].type!='R' && meter_desc_p[meters].type!='v') SML_Decode(meters); +#endif } From 21cce994673bb8ec9a3b60394622fa4d8d5fb6dc Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Thu, 23 Sep 2021 08:18:58 +0200 Subject: [PATCH 240/317] ws2812 RGBW --- tasmota/xdrv_10_scripter.ino | 83 +++++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 16 deletions(-) diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index ac6e46113..7d8578129 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -69,9 +69,6 @@ keywords if then else endif, or, and are better readable for beginners (others m #define MAX_SARRAY_NUM 32 #endif -#include -extern Renderer *renderer; - uint32_t EncodeLightId(uint8_t relay_id); uint32_t DecodeLightId(uint32_t hue_id); @@ -210,6 +207,10 @@ void alt_eeprom_readBytes(uint32_t adr, uint32_t len, uint8_t *buf) { #endif // LITTLEFS_SCRIPT_SIZE +#ifdef TESLA_POWERWALL +#include "powerwall.h" +#endif + // offsets epoch readings by 1.1.2019 00:00:00 to fit into float with second resolution #ifndef EPOCH_OFFSET #define EPOCH_OFFSET 1546300800 @@ -871,7 +872,7 @@ char *script; } // variables usage info - AddLog(LOG_LEVEL_INFO, PSTR("Script: nv=%d, tv=%d, vns=%d, ram=%d"), nvars, svars, index, glob_script_mem.script_mem_size); + AddLog(LOG_LEVEL_INFO, PSTR("Script: nv=%d, tv=%d, vns=%d, vmem=%d, smem=%d"), nvars, svars, index, glob_script_mem.script_mem_size, glob_script_mem.script_size); // copy string variables char *cp1 = glob_script_mem.glob_snp; @@ -1082,11 +1083,23 @@ void script_udp_sendvar(char *vname,float *fp,char *sp) { void ws2812_set_array(float *array ,uint32_t len, uint32_t offset) { Ws2812ForceSuspend(); - for (uint32_t cnt = 0; cntSettings->light_pixels) break; - uint32_t col = array[cnt]; - Ws2812SetColor(index + 1, col>>16, col>>8, col, 0); + for (uint32_t cnt = 0; cnt < len; cnt++) { + uint32_t index; + if (! (offset & 0x1000)) { + index = cnt + (offset & 0x7ff); + } else { + index = cnt/2 + (offset & 0x7ff); + } + if (index > Settings->light_pixels) break; + if (! (offset & 0x1000)) { + uint32_t col = array[cnt]; + Ws2812SetColor(index + 1, col>>16, col>>8, col, 0); + } else { + uint32_t hcol = array[cnt]; + cnt++; + uint32_t lcol = array[cnt]; + Ws2812SetColor(index + 1, hcol>>8, hcol, lcol>>8, lcol); + } } Ws2812ForceUpdate(); } @@ -1641,6 +1654,16 @@ char *isvar(char *lp, uint8_t *vtype, struct T_INDEX *tind, float *fp, char *sp, if (gv && gv->jo) { // look for json input + +#if 0 + char sbuf[SCRIPT_MAXSSIZE]; + sbuf[0]=0; + char tmp[128]; + Replace_Cmd_Vars(lp, 1, tmp, sizeof(tmp)); + uint32_t res = JsonParsePath(gv->jo, tmp, '#', NULL, sbuf, sizeof(sbuf)); // software_version + AddLog(LOG_LEVEL_INFO, PSTR("json string: %s %s"),tmp, sbuf); +#endif + JsonParserObject *jpo = gv->jo; char jvname[64]; strcpy(jvname, vname); @@ -2404,6 +2427,7 @@ chknext: rstring[0] = 0; int8_t index = fvar; char *wd = ResponseData(); + strlcpy(rstring, wd, glob_script_mem.max_ssize); if (index) { if (strlen(wd) && index) { @@ -2550,12 +2574,11 @@ chknext: if (!TasmotaGlobal.global_state.wifi_down) { // erase nvs lp = GetNumericArgument(lp + 4, OPER_EQU, &fvar, gv); - - homekit_main(0, fvar); - if (fvar >= 98) { + int32_t sel = fvar; + fvar = homekit_main(0, sel); + if (sel >= 98) { glob_script_mem.homekit_running == false; } - } lp++; len = 0; @@ -6515,6 +6538,10 @@ char buff[512]; if (sflg) { #ifdef USE_DISPLAY_DUMP + +#include +extern Renderer *renderer; + // screen copy #define fileHeaderSize 14 #define infoHeaderSize 40 @@ -7691,7 +7718,6 @@ uint32_t scripter_create_task(uint32_t num, uint32_t time, uint32_t core, uint32 #endif // USE_SCRIPT_TASK #endif // ESP32 - int32_t http_req(char *host, char *request) { WiFiClient http_client; HTTPClient http; @@ -7706,6 +7732,10 @@ int32_t http_req(char *host, char *request) { request++; } +#ifdef HTTP_DEBUG + AddLog(LOG_LEVEL_INFO, PSTR("HTTP heap %d"), ESP_getFreeHeap()); +#endif + if (!mode) { // GET strcat(hbuff, request); @@ -7720,13 +7750,23 @@ int32_t http_req(char *host, char *request) { httpCode = http.POST(request); } +#ifdef HTTP_DEBUG + AddLog(LOG_LEVEL_INFO, PSTR("HTTP RESULT %s"), http.getString().c_str()); +#endif + #ifdef USE_WEBSEND_RESPONSE #ifdef MQTT_DATA_STRING TasmotaGlobal.mqtt_data = http.getString(); #else strlcpy(TasmotaGlobal.mqtt_data, http.getString().c_str(), ResponseSize()); #endif - //AddLog(LOG_LEVEL_INFO, PSTR("HTTP RESULT %s"), ResponseData()); + +#ifdef HTTP_DEBUG + AddLog(LOG_LEVEL_INFO, PSTR("HTTP MQTT BUFFER %s"), ResponseData()); +#endif + +// AddLog(LOG_LEVEL_INFO, PSTR("JSON %s"), wd_jstr); +// TasmotaGlobal.mqtt_data = wd_jstr; Run_Scripter(">E", 2, ResponseData()); glob_script_mem.glob_error = 0; @@ -7746,10 +7786,21 @@ int32_t http_req(char *host, char *request) { #include #endif //ESP8266 +#ifdef TESLA_POWERWALL +Powerwall powerwall = Powerwall(); +String authCookie = ""; +#endif + // get tesla powerwall info page json string uint32_t call2https(const char *host, const char *path) { if (TasmotaGlobal.global_state.wifi_down) return 1; uint32_t status = 0; + +#ifdef TESLA_POWERWALL + authCookie = powerwall.getAuthCookie(); + return 0; +#endif + #ifdef ESP32 WiFiClientSecure *httpsClient; httpsClient = new WiFiClientSecure; @@ -8385,7 +8436,7 @@ bool Xdrv10(uint8_t function) memset(glob_script_mem.script_ram, 0 ,glob_script_mem.script_size); #ifdef PRECONFIGURED_SCRIPT strcpy_P(glob_script_mem.script_ram, PSTR(PRECONFIGURED_SCRIPT)); -#else +#else strcpy_P(glob_script_mem.script_ram, PSTR(">D\nscript error must start with >D")); #endif #ifdef START_SCRIPT_FROM_BOOT From 038809e5c15ac5e53e4880c3c7e3a38e78b303a2 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Thu, 23 Sep 2021 09:51:51 +0200 Subject: [PATCH 241/317] fix graph colors --- tasmota/xdrv_13_display.ino | 41 +++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index 609be6015..f4c280b4b 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -50,6 +50,11 @@ int16_t disp_xpos = 0; int16_t disp_ypos = 0; #ifdef USE_MULTI_DISPLAY + +#ifndef MAX_MULTI_DISPLAYS +#define MAX_MULTI_DISPLAYS 3 +#endif + struct MULTI_DISP { Renderer *display; uint16_t fg_color; @@ -58,7 +63,7 @@ struct MULTI_DISP { int16_t disp_ypos; uint8_t color_type; uint8_t auto_draw; -} displays[3]; +} displays[MAX_MULTI_DISPLAYS]; uint8_t cur_display; Renderer *Init_uDisplay(const char *desc, int8_t cs); @@ -204,6 +209,8 @@ struct GRAPH { uint8_t yticks; uint8_t last_val; uint8_t color_index; + uint16_t bg_color; + uint16_t fg_color; GFLAGS flags; }; @@ -583,7 +590,7 @@ void DisplayText(void) { var = atoiv(cp, &temp); cp += var; - if (temp < 1 || temp > 3) { + if (temp < 1 || temp > MAX_MULTI_DISPLAYS) { temp = 1; } temp--; @@ -612,6 +619,7 @@ void DisplayText(void) renderer = Init_uDisplay(fdesc, -1); Set_display(temp); AddLog(LOG_LEVEL_INFO, PSTR("DSP: File descriptor loaded %x"),renderer); + free(fdesc); } } } @@ -2378,12 +2386,12 @@ void ClrGraph(uint16_t num) { // clr inside, but only 1.graph if overlapped if (gp->flags.overlay) return; - renderer->fillRect(gp->xp+1,gp->yp+1,gp->xs-2,gp->ys-2,bg_color); + renderer->fillRect(gp->xp+1,gp->yp+1,gp->xs-2,gp->ys-2,gp->bg_color); if (xticks) { float cxp=gp->xp,xd=(float)gp->xs/(float)xticks; for (count=0; countwriteFastVLine(cxp,gp->yp+gp->ys-TICKLEN,TICKLEN,fg_color); + renderer->writeFastVLine(cxp,gp->yp+gp->ys-TICKLEN,TICKLEN,gp->fg_color); cxp+=xd; } } @@ -2393,27 +2401,27 @@ void ClrGraph(uint16_t num) { float cxp=0; float czp=gp->yp+(gp->ymax/gp->range); while (cxpxs) { - renderer->writeFastHLine(gp->xp+cxp,czp,2,fg_color); + renderer->writeFastHLine(gp->xp+cxp,czp,2,gp->fg_color); cxp+=6.0; } // align ticks to zero line float cyp=0,yd=gp->ys/yticks; for (count=0; countgp->yp) { - renderer->writeFastHLine(gp->xp,czp-cyp,TICKLEN,fg_color); - renderer->writeFastHLine(gp->xp+gp->xs-TICKLEN,czp-cyp,TICKLEN,fg_color); + renderer->writeFastHLine(gp->xp,czp-cyp,TICKLEN,gp->fg_color); + renderer->writeFastHLine(gp->xp+gp->xs-TICKLEN,czp-cyp,TICKLEN,gp->fg_color); } if ((czp+cyp)<(gp->yp+gp->ys)) { renderer->writeFastHLine(gp->xp,czp+cyp,TICKLEN,fg_color); - renderer->writeFastHLine(gp->xp+gp->xs-TICKLEN,czp+cyp,TICKLEN,fg_color); + renderer->writeFastHLine(gp->xp+gp->xs-TICKLEN,czp+cyp,TICKLEN,gp->fg_color); } cyp+=yd; } } else { float cyp=gp->yp,yd=gp->ys/yticks; for (count=0; countwriteFastHLine(gp->xp,cyp,TICKLEN,fg_color); - renderer->writeFastHLine(gp->xp+gp->xs-TICKLEN,cyp,TICKLEN,fg_color); + renderer->writeFastHLine(gp->xp,cyp,TICKLEN,gp->fg_color); + renderer->writeFastHLine(gp->xp+gp->xs-TICKLEN,cyp,TICKLEN,gp->fg_color); cyp+=yd; } } @@ -2443,6 +2451,9 @@ void DefineGraph(uint16_t num,uint16_t xp,uint16_t yp,int16_t xs,uint16_t ys,int } } + gp->bg_color=bg_color; + gp->fg_color=fg_color; + // 6 bits per axis gp->xticks=(num>>4)&0x3f; gp->yticks=(num>>10)&0x3f; @@ -2496,7 +2507,7 @@ void DefineGraph(uint16_t num,uint16_t xp,uint16_t yp,int16_t xs,uint16_t ys,int } // draw rectangle - renderer->drawRect(xp,yp,xs,ys,fg_color); + renderer->drawRect(xp,yp,xs,ys,gp->fg_color); // clr inside ClrGraph(index); @@ -2611,7 +2622,7 @@ void RedrawGraph(uint8_t num, uint8_t flags) { if (!renderer) return; gp->flags.draw=1; - uint16_t linecol=fg_color; + uint16_t linecol=gp->fg_color; if (color_type==COLOR_COLOR) { linecol = GetColorFromIndex(gp->color_index); @@ -2619,7 +2630,7 @@ void RedrawGraph(uint8_t num, uint8_t flags) { if (!gp->flags.overlay) { // draw rectangle - renderer->drawRect(gp->xp,gp->yp,gp->xs,gp->ys,fg_color); + renderer->drawRect(gp->xp,gp->yp,gp->xs,gp->ys,gp->fg_color); // clr inside ClrGraph(index); } @@ -2634,7 +2645,7 @@ void AddGraph(uint8_t num,uint8_t val) { struct GRAPH *gp=graph[num]; if (!renderer) return; - uint16_t linecol=fg_color; + uint16_t linecol=gp->fg_color; if (color_type==COLOR_COLOR) { linecol = GetColorFromIndex(gp->color_index); } @@ -2656,7 +2667,7 @@ void AddGraph(uint8_t num,uint8_t val) { // clr area and redraw graph if (!gp->flags.overlay) { // draw rectangle - renderer->drawRect(gp->xp,gp->yp,gp->xs,gp->ys,fg_color); + renderer->drawRect(gp->xp,gp->yp,gp->xs,gp->ys,gp->fg_color); // clr inner and draw ticks ClrGraph(num); } From 5eb8f7804694d548f2620736461994d42b699480 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Thu, 23 Sep 2021 14:47:43 +0200 Subject: [PATCH 242/317] Add support for Sensirion SCD40/SCD41 CO2 sensor Add support for Sensirion SCD40/SCD41 CO2 sensor (#13139) --- CHANGELOG.md | 2 +- RELEASENOTES.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dad1692a2..b5fcf2f94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ All notable changes to this project will be documented in this file. - Crash recorder ``Status 12`` for ESP32/ESP32S2/ESP32C3, supporting Esp-idf 3.3/4.4 - Support for ESP32/ESP32S2 DAC gpio via Berry - Berry support for Serial -- Support for Sensirion SCD40/SCD41 CO2 sensor +- Support for Sensirion SCD40/SCD41 CO2 sensor (#13139) - Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow (#13195) ### Changed diff --git a/RELEASENOTES.md b/RELEASENOTES.md index c0c887c15..6909a665d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -118,6 +118,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Support for IEM3155 Wattmeter [#12940](https://github.com/arendst/Tasmota/issues/12940) - Support for Hydreon RG-15 Solid State Rain sensor [#12974](https://github.com/arendst/Tasmota/issues/12974) - Support for IKEA VINDRIKTNING particle concentration sensor [#12976](https://github.com/arendst/Tasmota/issues/12976) +- Support for Sensirion SCD40/SCD41 CO2 sensor [#13139](https://github.com/arendst/Tasmota/issues/13139) - Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow [#13195](https://github.com/arendst/Tasmota/issues/13195) - Initial support for Tasmota Mesh (TasMesh) providing node/broker communication using ESP-NOW [#11939](https://github.com/arendst/Tasmota/issues/11939) - Initial support for Wi-Fi extender [#12784](https://github.com/arendst/Tasmota/issues/12784) From 883a9fb12c763ec743eb1e60cf7ac6d3cd7e9584 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Fri, 24 Sep 2021 08:04:55 +0200 Subject: [PATCH 243/317] Berry refactored bytes class (#13208) * Berry refactored bytes class * Fix --- lib/libesp32/Berry/generate/be_const_strtab.h | 1384 +++++------ .../Berry/generate/be_const_strtab_def.h | 2021 +++++++++-------- .../Berry/generate/be_fixed_be_class_bytes.h | 50 +- lib/libesp32/Berry/src/be_byteslib.c | 684 +++--- lib/libesp32/Berry/tests/bytes.be | 2 - lib/libesp32/Berry/tests/bytes_fixed.be | 67 + 6 files changed, 2203 insertions(+), 2005 deletions(-) create mode 100644 lib/libesp32/Berry/tests/bytes_fixed.be diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index feefc74f8..d954c8189 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,695 +1,697 @@ -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_; -extern const bcstring be_const_str__def; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str__read; extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_set_power; extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_dot_size; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_pin; extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_dot_len; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_lv_spinbox; extern const bcstring be_const_str_start; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str__def; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_ILI9488_CS; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 1b441ebd6..bd0806599 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1040 +1,1043 @@ -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_OPTION_A); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SERIAL_6O2); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, NULL); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_SYMBOL_BULLET); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str__def); -be_define_const_str(_def, "_def", 1985022181u, 0, 4, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_SYMBOL_LEFT); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_SERIAL_7O1); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DDSU666_TX); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SERIAL_5E2); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_dac_voltage); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_POST); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, NULL); -be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_FTC532); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, NULL); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, NULL); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SERIAL_6N2); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SERIAL_5N1); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SERIAL_8O1); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_KEY1_INV_NP); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, NULL); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_BS814_DAT); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_AudioFileSource); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_NRF24_CS); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_lv_gauge); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SERIAL_5O1); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SERIAL_5N2); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_SERIAL_7O2); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_KEY1_INV_PD); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_RDM6300_RX); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, NULL); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, NULL); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_INTERRUPT); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_set_power); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, &be_const_str_set_power); be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_DEEPSLEEP); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_A4988_DIR); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SERIAL_5E1); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_get_switch); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_BS814_CLK); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_DCKI); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SERIAL_6O1); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_time_str); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str___lower__); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_time_str); be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_MAX31855DO); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SERIAL_8N1); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_EPAPER42_CS); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_A4988_MS1); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SERIAL_7E2); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, NULL); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_while); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_LMT01); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_CSE7766_TX); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_I2C_SCL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_ROT1A); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, NULL); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_INPUT_PULLUP); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_WEBCAM_PSCLK); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_while); be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_start); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_PULLDOWN); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_LE01MR_TX); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SERIAL_5N2); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_IBEACON_TX); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(read13, "read13", 12887293u, 0, 6, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SENSOR_END); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SHELLY_DIMMER_BOOT0); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_CHANGE); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_LE01MR_RX); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_PZEM016_RX); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_start); be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, NULL); +be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_INTERRUPT); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_OPTION_A); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, NULL); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_get_string); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_POST); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_ADC_BUTTON); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_HJL_CF); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, NULL); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_dac_voltage); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_CSE7766_RX); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SERIAL_5O2); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SPI_CLK); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_HRE_CLOCK); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SERIAL_7O2); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_SERIAL_8N1); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_FTC532); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_AudioGenerator); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_ILI9341_CS); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_MIEL_HVAC_RX); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_EPD_DATA); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_ETH_PHY_MDC); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_ROT1B); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_I2S_IN_DATA); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SM16716_SEL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SWT1_NP); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_NONE); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SERIAL_5E1); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_MAX31855CLK); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_OUTPUT); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_A4988_STP, - NULL, - NULL, - (const bstring *)&be_const_str_add, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_A4988_ENA, - NULL, - NULL, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_encrypt, - (const bstring *)&be_const_str_SDCARD_CS, - NULL, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_SSD1331_CS, (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, NULL, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_SERIAL_7E1, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_collect, - (const bstring *)&be_const_str_WS2812, - (const bstring *)&be_const_str_SERIAL_7N2, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_, - NULL, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_AudioOutputI2S, - (const bstring *)&be_const_str_lv_cb, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_type, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_addr, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - NULL, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_MAX7219DIN, - NULL, - (const bstring *)&be_const_str_SM2135_CLK, - (const bstring *)&be_const_str_WINDMETER_SPEED, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_MGC3130_RESET, - NULL, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str__ccmd, - NULL, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_save, - (const bstring *)&be_const_str_SAIR_RX, - NULL, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_ARIRFRCV, - NULL, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_get_power, - NULL, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_TM1637DIO, - (const bstring *)&be_const_str_SERIAL_8N2, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, - (const bstring *)&be_const_str_lv_cont, - (const bstring *)&be_const_str_last_modified, - NULL, - NULL, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_floor, - (const bstring *)&be_const_str_wire2, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_reset, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_SERIAL_5O2, - (const bstring *)&be_const_str_ZIGBEE_RST, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_available, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_select, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_SYMBOL_DOWN, - NULL, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_dump, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_WIEGAND_D1, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_imax, - (const bstring *)&be_const_str_elif, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_reverse, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_rad, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_read12, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_write, - (const bstring *)&be_const_str_opt_connect, - NULL, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_lv_list, - (const bstring *)&be_const_str_SSD1351_DC, - NULL, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_ROT1A, - NULL, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_arg_size, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_lv_group_focus_cb, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_find_op, - (const bstring *)&be_const_str_TM1638STB, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_opt_neq, - NULL, - (const bstring *)&be_const_str_SERIAL_6N1, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_OLED_RESET, - (const bstring *)&be_const_str_imin, - (const bstring *)&be_const_str_LED1_INV, (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_SYMBOL_POWER, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_content_start, - (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_add_driver, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_SYMBOL_LEFT, NULL, + (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str_static, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, NULL, - NULL, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_gamma10, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_erase, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_arg, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_webclient, - (const bstring *)&be_const_str_WEBCAM_SIOC, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_concat, - NULL, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_SERIAL_8E1, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str__timers, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_gamma8, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_exp, - (const bstring *)&be_const_str_open, - (const bstring *)&be_const_str_PWM1, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_event, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_classof, - NULL, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_wifi, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_eth, - (const bstring *)&be_const_str_DYP_RX, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_REL1, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_isinstance, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_WEBCAM_DATA, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_NEOPOOL_TX, (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_assert, + (const bstring *)&be_const_str_dot_size, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_SYMBOL_PAUSE, + (const bstring *)&be_const_str_lv_spinner, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_register_button_encoder, NULL, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_dot_len, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_content_start, + (const bstring *)&be_const_str_KEY1_INV_NP, + NULL, + NULL, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_PN532_RXD, (const bstring *)&be_const_str_DSB_OUT, NULL, - (const bstring *)&be_const_str_SYMBOL_PREV, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_SYMBOL_VIDEO, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_SDM630_TX, - NULL, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_lv_label, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_SERIAL_8E2, - NULL, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_write8, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_read32, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_SYMBOL_STOP, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_KEY1_TC, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_lv_btnmatrix, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_add_cmd, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_HPMA_RX, - NULL, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_pow, (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_opt_connect, NULL, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_WE517_TX, - (const bstring *)&be_const_str_XPT2046_CS, - (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_read24, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_SERIAL_8E1, + (const bstring *)&be_const_str_SYMBOL_CLOSE, + (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_SERIAL_5E2, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_SERIAL_5O1, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_MD5, + NULL, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_ctypes_bytes, + (const bstring *)&be_const_str_read13, NULL, NULL, - (const bstring *)&be_const_str_PWM1_INV, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_WEBCAM_PCLK, NULL, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_DAC, - (const bstring *)&be_const_str_check_privileged_access, - (const bstring *)&be_const_str_ZEROCROSS, - NULL, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_SDM630_RX, - (const bstring *)&be_const_str_AS608_TX, - NULL, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_MCP39F5_RX, - NULL, - NULL, - (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_yield, (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_RFRECV, + NULL, + (const bstring *)&be_const_str_CSE7761_RX, + (const bstring *)&be_const_str_seg7_font, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str__begin_transmission, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_arg_size, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_lv_cpicker, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_as, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_set_light, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_SERIAL_6O1, + (const bstring *)&be_const_str_available, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_split, + NULL, NULL, - (const bstring *)&be_const_str_SYMBOL_SETTINGS, NULL, (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_SERIAL_8O2, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_gen_cb, + (const bstring *)&be_const_str_reverse, + (const bstring *)&be_const_str_MGC3130_RESET, (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str___iterator__, + NULL, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_SERIAL_7O1, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_acos, + (const bstring *)&be_const_str_AudioOutputI2S, + NULL, + (const bstring *)&be_const_str_WEBCAM_VSYNC, + (const bstring *)&be_const_str_atan2, + (const bstring *)&be_const_str_bytes, + NULL, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_Wire, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_OUTPUT_HI, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_AS3935, + NULL, + (const bstring *)&be_const_str_item, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_time_dump, + (const bstring *)&be_const_str_SYMBOL_NEXT, + (const bstring *)&be_const_str_lv_tileview, + NULL, + (const bstring *)&be_const_str_deinit, + (const bstring *)&be_const_str_opt_add, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_SOLAXX1_RX, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_SBR_TX, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_setitem, + (const bstring *)&be_const_str_get_size, + (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_SERIAL_7E1, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_SYMBOL_SHUFFLE, + (const bstring *)&be_const_str__def, + NULL, + (const bstring *)&be_const_str_SERIAL_5N1, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_SSPI_CS, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_TCP_TX, + NULL, + (const bstring *)&be_const_str_strftime, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_IRRECV, + NULL, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_TX2X_TXD_BLACK, + (const bstring *)&be_const_str_lv_color, + (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_DYP_RX, + NULL, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_set_timer, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_eth, + NULL, + NULL, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_RF_SENSOR, + NULL, + (const bstring *)&be_const_str_LEDLNK_INV, + NULL, + (const bstring *)&be_const_str_DAC, + NULL, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_WINDMETER_SPEED, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_KEY1_INV_PD, + NULL, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_get, + NULL, + (const bstring *)&be_const_str_DDSU666_TX, + NULL, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_HPMA_RX, + NULL, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_SYMBOL_DIRECTORY, + NULL, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_lv_tabview, + (const bstring *)&be_const_str_IEM3000_TX, + NULL, + NULL, + (const bstring *)&be_const_str_setmember, + NULL, + (const bstring *)&be_const_str_EC_C25519, + NULL, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_SERIAL_8N2, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_nil, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_dump, + (const bstring *)&be_const_str_read8, + (const bstring *)&be_const_str_search, + (const bstring *)&be_const_str_BACKLIGHT, + NULL, + (const bstring *)&be_const_str_SERIAL_8E2, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_TM1638DIO, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_load_font, + (const bstring *)&be_const_str_member, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_SERIAL_7E2, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_WEBCAM_HSD, + (const bstring *)&be_const_str_toupper, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_lv_design_cb, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_KEY1_PD, + NULL, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_hex, + (const bstring *)&be_const_str_find_key_i, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_srand, (const bstring *)&be_const_str_isrunning, - (const bstring *)&be_const_str_SYMBOL_PASTE, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_HALLEFFECT + (const bstring *)&be_const_str_lv_gauge, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_count, + (const bstring *)&be_const_str_SM16716_CLK, + NULL, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_WEBCAM_XCLK, + (const bstring *)&be_const_str_SERIAL_6N1, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_asstring, + NULL, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_lv_canvas, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_SERIAL_6O2, + NULL, + (const bstring *)&be_const_str_SERIAL_8O1, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_MHZ_TXD, + NULL, + (const bstring *)&be_const_str_ILI9488_CS }; static const struct bconststrtab m_const_string_table = { - .size = 336, - .count = 673, + .size = 337, + .count = 675, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h index 76f24a936..cb188a521 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_bytes.h @@ -1,42 +1,44 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_bytes_map) { - { be_const_key(deinit, -1), be_const_func(m_deinit) }, - { be_const_key(opt_connect, -1), be_const_func(m_connect) }, - { be_const_key(item, 3), be_const_func(m_item) }, - { be_const_key(seti, 22), be_const_func(m_set) }, - { be_const_key(asstring, -1), be_const_func(m_asstring) }, - { be_const_key(getbits, -1), be_const_closure(getbits_closure) }, - { be_const_key(copy, -1), be_const_func(m_copy) }, - { be_const_key(get, -1), be_const_func(m_getu) }, - { be_const_key(_buffer, -1), be_const_func(m_buffer) }, - { be_const_key(fromb64, -1), be_const_func(m_fromb64) }, - { be_const_key(add, -1), be_const_func(m_add) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(size, 0), be_const_func(m_size) }, - { be_const_key(tostring, -1), be_const_func(m_tostring) }, - { be_const_key(opt_add, 10), be_const_func(m_merge) }, - { be_const_key(resize, -1), be_const_func(m_resize) }, { be_const_key(setitem, -1), be_const_func(m_setitem) }, - { be_const_key(set, -1), be_const_func(m_set) }, + { be_const_key(opt_connect, -1), be_const_func(m_connect) }, { be_const_key(geti, -1), be_const_func(m_geti) }, - { be_const_key(init, -1), be_const_func(m_init) }, - { be_const_key(clear, -1), be_const_func(m_clear) }, - { be_const_key(opt_neq, 23), be_const_func(m_nequal) }, - { be_const_key(tob64, 24), be_const_func(m_tob64) }, + { be_const_key(deinit, -1), be_const_func(m_deinit) }, + { be_const_key(add, 18), be_const_func(m_add) }, + { be_const_key(get, -1), be_const_func(m_getu) }, + { be_const_key(asstring, 9), be_const_func(m_asstring) }, + { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(copy, 25), be_const_func(m_copy) }, + { be_const_key(size, -1), be_const_func(m_size) }, + { be_const_key(getbits, -1), be_const_closure(getbits_closure) }, { be_const_key(opt_eq, -1), be_const_func(m_equal) }, - { be_const_key(fromstring, -1), be_const_func(m_fromstring) }, + { be_const_key(tob64, 3), be_const_func(m_tob64) }, + { be_const_key(init, -1), be_const_func(m_init) }, + { be_const_key(opt_add, -1), be_const_func(m_merge) }, { be_const_key(setbits, -1), be_const_closure(setbits_closure) }, + { be_const_key(_buffer, -1), be_const_func(m_buffer) }, + { be_const_key(tostring, -1), be_const_func(m_tostring) }, + { be_const_key(dot_len, -1), be_const_var(1) }, + { be_const_key(fromb64, 13), be_const_func(m_fromb64) }, + { be_const_key(dot_size, 6), be_const_var(2) }, + { be_const_key(resize, -1), be_const_func(m_resize) }, + { be_const_key(seti, -1), be_const_func(m_set) }, + { be_const_key(opt_neq, 5), be_const_func(m_nequal) }, + { be_const_key(item, -1), be_const_func(m_item) }, + { be_const_key(fromstring, -1), be_const_func(m_fromstring) }, + { be_const_key(clear, 24), be_const_func(m_clear) }, + { be_const_key(set, 10), be_const_func(m_set) }, }; static be_define_const_map( be_class_bytes_map, - 26 + 28 ); BE_EXPORT_VARIABLE be_define_const_class( be_class_bytes, - 1, + 3, NULL, bytes ); diff --git a/lib/libesp32/Berry/src/be_byteslib.c b/lib/libesp32/Berry/src/be_byteslib.c index 2e26d6846..3a219d2ea 100644 --- a/lib/libesp32/Berry/src/be_byteslib.c +++ b/lib/libesp32/Berry/src/be_byteslib.c @@ -22,10 +22,22 @@ #define BYTES_OVERHEAD 4 // bytes overhead to be added when allocating (used to store len and size) #define BYTES_HEADROOM 8 // keep a natural headroom of 8 bytes when resizing +#define BYTES_SIZE_FIXED -1 // if size is -1, then the bytes object cannot be reized +#define BYTES_SIZE_MAPPED -2 // if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized + +#define BYTES_RESIZE_ERROR "attribute_error" +#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized" +/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */ + typedef struct buf_impl { - uint16_t size; // size in bytes of the buffer - uint16_t len; // current size of the data in buffer. Invariant: len <= size - uint8_t buf[]; // the actual data + int32_t size; // size in bytes of the buffer + int32_t len; // current size of the data in buffer. Invariant: len <= size + uint8_t *bufptr; // the actual data + int32_t prev_size; // previous value read from the instance + int32_t prev_len; // previous value read from the instance + uint8_t *prev_bufptr; + bbool fixed; // is size fixed? (actually encoded as negative size) + bbool mapped; } buf_impl; /******************************************************************** @@ -225,160 +237,160 @@ static unsigned int decode_base64(unsigned char input[], unsigned char output[]) ** ** Extracted from Tasmota SBuffer lib ********************************************************************/ -static inline uint8_t* buf_get_buf(buf_impl* buf) -{ - return &buf->buf[0]; -} +// static inline uint8_t* buf_get_buf(buf_impl* attr) +// { +// return &attr->bufptr[0]; +// } // shrink or increase. If increase, fill with zeores. Cannot go beyond `size` -static void buf_set_len(buf_impl* buf, const size_t len) +static void buf_set_len(buf_impl* attr, const size_t len) { - uint16_t old_len = buf->len; - buf->len = (len <= buf->size) ? len : buf->size; - if (old_len < buf->len) { - memset((void*) &buf->buf[old_len], 0, buf->len - old_len); + uint16_t old_len = attr->len; + attr->len = ((int32_t)len <= attr->size) ? len : attr->size; + if (old_len < attr->len) { + memset((void*) &attr->bufptr[old_len], 0, attr->len - old_len); } } -static size_t buf_add1(buf_impl* buf, const uint8_t data) // append 8 bits value +static size_t buf_add1(buf_impl* attr, const uint8_t data) // append 8 bits value { - if (buf->len < buf->size) { // do we have room for 1 byte - buf->buf[buf->len++] = data; + if (attr->len < attr->size) { // do we have room for 1 byte + attr->bufptr[attr->len++] = data; } - return buf->len; + return attr->len; } -static size_t buf_add2_le(buf_impl* buf, const uint16_t data) // append 16 bits value +static size_t buf_add2_le(buf_impl* attr, const uint16_t data) // append 16 bits value { - if (buf->len < buf->size - 1) { // do we have room for 2 bytes - buf->buf[buf->len++] = data; - buf->buf[buf->len++] = data >> 8; + if (attr->len < attr->size - 1) { // do we have room for 2 bytes + attr->bufptr[attr->len++] = data; + attr->bufptr[attr->len++] = data >> 8; } - return buf->len; + return attr->len; } -static size_t buf_add2_be(buf_impl* buf, const uint16_t data) // append 16 bits value +static size_t buf_add2_be(buf_impl* attr, const uint16_t data) // append 16 bits value { - if (buf->len < buf->size - 1) { // do we have room for 2 bytes - buf->buf[buf->len++] = data >> 8; - buf->buf[buf->len++] = data; + if (attr->len < attr->size - 1) { // do we have room for 2 bytes + attr->bufptr[attr->len++] = data >> 8; + attr->bufptr[attr->len++] = data; } - return buf->len; + return attr->len; } -static size_t buf_add4_le(buf_impl* buf, const uint32_t data) // append 32 bits value +static size_t buf_add4_le(buf_impl* attr, const uint32_t data) // append 32 bits value { - if (buf->len < buf->size - 3) { // do we have room for 4 bytes - buf->buf[buf->len++] = data; - buf->buf[buf->len++] = data >> 8; - buf->buf[buf->len++] = data >> 16; - buf->buf[buf->len++] = data >> 24; + if (attr->len < attr->size - 3) { // do we have room for 4 bytes + attr->bufptr[attr->len++] = data; + attr->bufptr[attr->len++] = data >> 8; + attr->bufptr[attr->len++] = data >> 16; + attr->bufptr[attr->len++] = data >> 24; } - return buf->len; + return attr->len; } -size_t buf_add4_be(buf_impl* buf, const uint32_t data) // append 32 bits value +size_t buf_add4_be(buf_impl* attr, const uint32_t data) // append 32 bits value { - if (buf->len < buf->size - 3) { // do we have room for 4 bytes - buf->buf[buf->len++] = data >> 24; - buf->buf[buf->len++] = data >> 16; - buf->buf[buf->len++] = data >> 8; - buf->buf[buf->len++] = data; + if (attr->len < attr->size - 3) { // do we have room for 4 bytes + attr->bufptr[attr->len++] = data >> 24; + attr->bufptr[attr->len++] = data >> 16; + attr->bufptr[attr->len++] = data >> 8; + attr->bufptr[attr->len++] = data; } - return buf->len; + return attr->len; } -static size_t buf_add_buf(buf_impl* buf, buf_impl* buf2) +static size_t buf_add_buf(buf_impl* attr, buf_impl* attr2) { - if (buf->len + buf2->len <= buf->size) { - for (uint32_t i = 0; i < buf2->len; i++) { - buf->buf[buf->len++] = buf2->buf[i]; + if (attr->len + attr2->len <= attr->size) { + for (int32_t i = 0; i < attr2->len; i++) { + attr->bufptr[attr->len++] = attr2->bufptr[i]; } } - return buf->len; + return attr->len; } -static uint8_t buf_get1(buf_impl* buf, int offset) +static uint8_t buf_get1(buf_impl* attr, int offset) { - if ((offset >= 0) && (offset < buf->len)) { - return buf->buf[offset]; + if ((offset >= 0) && (offset < attr->len)) { + return attr->bufptr[offset]; } return 0; } -static void buf_set1(buf_impl* buf, size_t offset, uint8_t data) +static void buf_set1(buf_impl* attr, size_t offset, uint8_t data) { - if (offset < buf->len) { - buf->buf[offset] = data; + if ((int32_t)offset < attr->len) { + attr->bufptr[offset] = data; } } -static void buf_set2_le(buf_impl* buf, size_t offset, uint16_t data) +static void buf_set2_le(buf_impl* attr, size_t offset, uint16_t data) { - if (offset + 1 < buf->len) { - buf->buf[offset] = data & 0xFF; - buf->buf[offset+1] = data >> 8; + if ((int32_t)offset + 1 < attr->len) { + attr->bufptr[offset] = data & 0xFF; + attr->bufptr[offset+1] = data >> 8; } } -static void buf_set2_be(buf_impl* buf, size_t offset, uint16_t data) +static void buf_set2_be(buf_impl* attr, size_t offset, uint16_t data) { - if (offset + 1 < buf->len) { - buf->buf[offset+1] = data & 0xFF; - buf->buf[offset] = data >> 8; + if ((int32_t)offset + 1 < attr->len) { + attr->bufptr[offset+1] = data & 0xFF; + attr->bufptr[offset] = data >> 8; } } -static uint16_t buf_get2_le(buf_impl* buf, size_t offset) +static uint16_t buf_get2_le(buf_impl* attr, size_t offset) { - if (offset + 1 < buf->len) { - return buf->buf[offset] | (buf->buf[offset+1] << 8); + if ((int32_t)offset + 1 < attr->len) { + return attr->bufptr[offset] | (attr->bufptr[offset+1] << 8); } return 0; } -static uint16_t buf_get2_be(buf_impl* buf, size_t offset) +static uint16_t buf_get2_be(buf_impl* attr, size_t offset) { - if (offset + 1 < buf->len) { - return buf->buf[offset+1] | (buf->buf[offset] << 8); + if ((int32_t)offset + 1 < attr->len) { + return attr->bufptr[offset+1] | (attr->bufptr[offset] << 8); } return 0; } -static void buf_set4_le(buf_impl* buf, size_t offset, uint32_t data) +static void buf_set4_le(buf_impl* attr, size_t offset, uint32_t data) { - if (offset + 3 < buf->len) { - buf->buf[offset] = data & 0xFF; - buf->buf[offset+1] = (data >> 8) & 0xFF; - buf->buf[offset+2] = (data >> 16) & 0xFF; - buf->buf[offset+3] = data >> 24; + if ((int32_t)offset + 3 < attr->len) { + attr->bufptr[offset] = data & 0xFF; + attr->bufptr[offset+1] = (data >> 8) & 0xFF; + attr->bufptr[offset+2] = (data >> 16) & 0xFF; + attr->bufptr[offset+3] = data >> 24; } } -static void buf_set4_be(buf_impl* buf, size_t offset, uint32_t data) +static void buf_set4_be(buf_impl* attr, size_t offset, uint32_t data) { - if (offset + 3 < buf->len) { - buf->buf[offset+3] = data & 0xFF; - buf->buf[offset+2] = (data >> 8) & 0xFF; - buf->buf[offset+1] = (data >> 16) & 0xFF; - buf->buf[offset] = data >> 24; + if ((int32_t)offset + 3 < attr->len) { + attr->bufptr[offset+3] = data & 0xFF; + attr->bufptr[offset+2] = (data >> 8) & 0xFF; + attr->bufptr[offset+1] = (data >> 16) & 0xFF; + attr->bufptr[offset] = data >> 24; } } -static uint32_t buf_get4_le(buf_impl* buf, size_t offset) +static uint32_t buf_get4_le(buf_impl* attr, size_t offset) { - if (offset + 3 < buf->len) { - return buf->buf[offset] | (buf->buf[offset+1] << 8) | - (buf->buf[offset+2] << 16) | (buf->buf[offset+3] << 24); + if ((int32_t)offset + 3 < attr->len) { + return attr->bufptr[offset] | (attr->bufptr[offset+1] << 8) | + (attr->bufptr[offset+2] << 16) | (attr->bufptr[offset+3] << 24); } return 0; } -static uint32_t buf_get4_be(buf_impl* buf, size_t offset) +static uint32_t buf_get4_be(buf_impl* attr, size_t offset) { - if (offset + 3 < buf->len) { - return buf->buf[offset+3] | (buf->buf[offset+2] << 8) | - (buf->buf[offset+1] << 16) | (buf->buf[offset] << 24); + if ((int32_t)offset + 3 < attr->len) { + return attr->bufptr[offset+3] | (attr->bufptr[offset+2] << 8) | + (attr->bufptr[offset+1] << 16) | (attr->bufptr[offset] << 24); } return 0; } @@ -387,7 +399,7 @@ static uint32_t buf_get4_be(buf_impl* buf, size_t offset) static bbool buf_equals(buf_impl* buf1, buf_impl* buf2) { if (buf1 == buf2) { return btrue; } - if (!buf1 || !buf2) { return bfalse; } // at least one buf is not empty + if (!buf1 || !buf2) { return bfalse; } // at least one attr is not empty // we know that both buf1 and buf2 are non-null if (buf1->len != buf2->len) { return bfalse; } size_t len = buf1->len; @@ -405,14 +417,15 @@ static uint8_t asc2byte(char chr) else if (chr >= 'a' && chr <= 'f') { rVal = chr + 10 - 'a'; } return rVal; } + // does not check if there is enough room before hand, truncated if buffer too small -static void buf_add_hex(buf_impl* buf, const char *hex, size_t len) +static void buf_add_hex(buf_impl* attr, const char *hex, size_t len) { uint8_t val; for (; len > 1; len -= 2) { val = asc2byte(*hex++) << 4; val |= asc2byte(*hex++); - buf_add1(buf, val); + buf_add1(attr, val); } } @@ -420,114 +433,224 @@ static void buf_add_hex(buf_impl* buf, const char *hex, size_t len) ** Wrapping into lib ********************************************************************/ -buf_impl * bytes_realloc(bvm *vm, buf_impl *oldbuf, int32_t size) +/* load instance attribute into a single structure, and store 'previous' values in order to later update only the changed ones */ +/* stack item 1 must contain the instance */ +buf_impl m_read_attributes(bvm *vm, int idx) { - if (size < 4) { size = 4; } - if (size > BYTES_MAX_SIZE) { size = BYTES_MAX_SIZE; } - size_t oldsize = oldbuf ? oldbuf->size + BYTES_OVERHEAD : 0; - buf_impl * next = (buf_impl*) be_realloc(vm, oldbuf, oldsize, size + BYTES_OVERHEAD); /* malloc */ - next->size = size; - if (!oldbuf) { - next->len = 0; /* allocate a new buffer */ + buf_impl attr; + be_getmember(vm, idx, ".p"); + attr.bufptr = attr.prev_bufptr = be_tocomptr(vm, -1); + be_pop(vm, 1); + + be_getmember(vm, idx, ".len"); + attr.len = attr.prev_len = be_toint(vm, -1); + be_pop(vm, 1); + + be_getmember(vm, idx, ".size"); + int32_t signed_size = be_toint(vm, -1); + attr.fixed = bfalse; + attr.mapped = bfalse; + if (signed_size < 0) { + if (signed_size == BYTES_SIZE_MAPPED) { + attr.mapped = btrue; + } + signed_size = attr.len; + attr.fixed = btrue; + } + attr.size = attr.prev_size = signed_size; + be_pop(vm, 1); + return attr; +} + +/* Write back attributes to the bytes instance, only if values changed after loading */ +/* stack item 1 must contain the instance */ +void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr) +{ + int idx = be_absindex(vm, rel_idx); + if (attr->bufptr != attr->prev_bufptr) { + be_pushcomptr(vm, attr->bufptr); + be_setmember(vm, idx, ".p"); + be_pop(vm, 1); + } + + if (attr->len != attr->prev_len) { + be_pushint(vm, attr->len); + be_setmember(vm, idx, ".len"); + be_pop(vm, 1); + } + + int32_t new_size = attr->size; + if (attr->mapped) { + new_size = BYTES_SIZE_MAPPED; + } else if (attr->fixed) { + new_size = BYTES_SIZE_FIXED; + } + if (new_size != attr->prev_size) { + be_pushint(vm, new_size); + be_setmember(vm, idx, ".size"); + be_pop(vm, 1); + } +} + +// buf_impl * bytes_realloc(bvm *vm, buf_impl *oldbuf, int32_t size) +void bytes_realloc(bvm *vm, buf_impl * attr, int32_t size) +{ + if (!attr->fixed && size < 4) { size = 4; } + if (size > BYTES_MAX_SIZE) { size = BYTES_MAX_SIZE; } + size_t oldsize = attr->bufptr ? attr->size : 0; + attr->bufptr = (uint8_t*) be_realloc(vm, attr->bufptr, oldsize, size); /* malloc */ + attr->size = size; + if (!attr->bufptr) { + attr->len = 0; /* allocate a new buffer */ } - return next; } /* allocate a new `bytes` object with pre-allocated size */ static void bytes_new_object(bvm *vm, size_t size) { - be_getglobal(vm, "bytes"); /* eventually change with be_getbuiltin */ - be_call(vm, 0); /* stack has only instance */ - be_getmember(vm, -1, "init"); - be_pushvalue(vm, -2); - be_pushint(vm, size); /* stack: instance, init func, instance, size */ - be_call(vm, 2); /* stack: instance, ret, instance, size */ - be_pop(vm, 3); /* remove ret, instance, size */ + be_getbuiltin(vm, "bytes"); + be_pushint(vm, size); + be_call(vm, 1); + be_pop(vm, 1); } +/* + * constructor for bytes() + * Arg0 is always self + * + * Option 1: main use + * Arg1: string - a string representing the bytes in HEX + * + * Option 2: + * Arg1: string - a string representing the bytes in HEX + * Arg2: int - pre-reserved buffer size. If negative, size is fixed and cannot be later changed + * + * Option 3: used by subclasses like ctypes + * Arg1: int - pre-reserved buffer size. If negative, size is fixed and cannot be later changed + * + * Option 4: mapped buffer + * Arg1: comptr - buffer address of the mapped buffer + * Arg2: int - buffer size. Always fixed (negative or positive) + * + * */ static int m_init(bvm *vm) { int argc = be_top(vm); - int size = BYTES_DEFAULT_SIZE; + buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */ + /* size cannot be 0, len cannot be negative */ const char * hex_in = NULL; + + int32_t size_arg = 0; if (argc > 1 && be_isint(vm, 2)) { - int new_size = be_toint(vm, 2) + BYTES_HEADROOM; - if (new_size > size) { - size = new_size; - } - } else if (argc > 1 && be_isstring(vm, 2)) { - hex_in = be_tostring(vm, 2); - if (hex_in) { - size = strlen(hex_in) / 2 + BYTES_HEADROOM; /* allocate headroom */ + size_arg = be_toint(vm, 2); /* raw size arg, can be positive or negative */ + } else if (argc > 2 && be_isint(vm, 3)) { + size_arg = be_toint(vm, 3); /* raw size arg, can be positive or negative */ + } + + if (argc > 1 && be_iscomptr(vm, 2)) { + if (size_arg) { + attr.len = (size_arg < 0) ? -size_arg : size_arg; + attr.bufptr = be_tocomptr(vm, 2); + attr.fixed = btrue; + attr.mapped = btrue; + m_write_attributes(vm, 1, &attr); /* write attributes back to instance */ + be_return_nil(vm); + } else { + be_raise(vm, "value_error", "size is required"); } } - buf_impl * buf = bytes_realloc(vm, NULL, size); /* allocate new buffer */ - if (!buf) { + if (size_arg == 0) { size_arg = BYTES_DEFAULT_SIZE; } /* if not specified, use default size */ + + /* compute actual size to be reserved */ + if (size_arg >= 0) { + size_arg += BYTES_HEADROOM; /* add automatic headroom to slightly overallocate */ + if (size_arg > attr.size) { + attr.size = size_arg; + } + } else { + attr.size = -size_arg; /* set the size to a fixed negative value */ + attr.fixed = btrue; + } + size_arg = attr.size; + + /* if arg1 is string, we convert hex */ + if (argc > 1 && be_isstring(vm, 2)) { + hex_in = be_tostring(vm, 2); + if (hex_in) { + size_arg = strlen(hex_in) / 2; /* allocate headroom */ + } + } + + /* check if fixed size that we have the right size */ + if (attr.fixed && size_arg > attr.size) { + be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); + } + + /* allocate */ + bytes_realloc(vm, &attr, attr.size); /* allocate new buffer */ + if (!attr.bufptr) { be_throw(vm, BE_MALLOC_FAIL); } if (hex_in) { - buf_add_hex(buf, hex_in, strlen(hex_in)); - } - be_pushcomptr(vm, buf); - be_setmember(vm, 1, ".p"); + buf_add_hex(&attr, hex_in, strlen(hex_in)); + } + + /* if fixed size, set len to size */ + if (attr.fixed) { + buf_set_len(&attr, attr.size); + } + + m_write_attributes(vm, 1, &attr); /* write attributes back to instance */ be_return_nil(vm); } /* deallocate buffer */ -static int m_deinit(bvm *vm) { +static int m_deinit(bvm *vm) { - be_getmember(vm, 1, ".p"); - buf_impl * buf = be_tocomptr(vm, -1); - be_pop(vm, 1); - if (buf != NULL) { - be_realloc(vm, buf, buf->size + BYTES_OVERHEAD, 0); + buf_impl attr = m_read_attributes(vm, 1); + if (attr.bufptr != NULL && !attr.mapped) { + be_realloc(vm, attr.bufptr, attr.size, 0); } - be_pushcomptr(vm, NULL); /* push NULL pointer instead, just in case */ - be_setmember(vm, 1, ".p"); + attr.size = 0; + attr.len = 0; + attr.bufptr = NULL; + m_write_attributes(vm, 1, &attr); be_return_nil(vm); } -} /* grow or shrink to the exact value */ /* stack item 1 must contain the instance */ -static buf_impl * _bytes_resize(bvm *vm, buf_impl * buf, size_t new_size) { - buf_impl *new_buf = bytes_realloc(vm, buf, new_size); - if (!new_buf) { +void _bytes_resize(bvm *vm, buf_impl * attr, size_t new_size) { + bytes_realloc(vm, attr, new_size); + if (!attr->bufptr) { be_throw(vm, BE_MALLOC_FAIL); } - /* replace the .p attribute since address may have changed */ - be_pushcomptr(vm, new_buf); - be_setmember(vm, 1, ".p"); - be_pop(vm, 1); /* remove comobj from stack */ - /* the old buffer will be garbage collected later */ - return new_buf; } /* grow if needed but don't shrink */ /* if grow, then add some headroom */ /* stack item 1 must contain the instance */ -static buf_impl * bytes_resize(bvm *vm, buf_impl * buf, size_t new_size) { +void bytes_resize(bvm *vm, buf_impl * attr, size_t new_size) { + if (attr->mapped) { return; } /* if mapped, don't bother with allocation */ /* when resized to smaller, we introduce a new heurstic */ /* If the buffer is 64 bytes or smaller, don't shrink */ /* Shrink buffer only if target size is smaller than half the original size */ - if (buf->size >= new_size) { /* enough room, consider if need to shrink */ - if (buf->size <= 64) { return buf; } /* don't shrink if below 64 bytes */ - if (buf->size < new_size * 2) { return buf; } + if (attr->size >= (int32_t)new_size) { /* enough room, consider if need to shrink */ + if (attr->size <= 64) { return; } /* don't shrink if below 64 bytes */ + if (attr->size < (int32_t)new_size * 2) { return; } } - return _bytes_resize(vm, buf, new_size + BYTES_HEADROOM); + _bytes_resize(vm, attr, new_size); } -static buf_impl * bytes_check_data(bvm *vm, size_t add_size) { - be_getmember(vm, 1, ".p"); - buf_impl * buf = be_tocomptr(vm, -1); - be_pop(vm, 1); /* remove member from stack */ +buf_impl bytes_check_data(bvm *vm, size_t add_size) { + buf_impl attr = m_read_attributes(vm, 1); /* check if the `size` is big enough */ - if (buf->len + add_size > buf->size) { + if (attr.len + (int32_t)add_size > attr.size) { /* it does not fit so we need to realocate the buffer */ - buf = bytes_resize(vm, buf, buf->len + add_size); + bytes_resize(vm, &attr, attr.len + add_size); } - return buf; + return attr; } static size_t tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) { @@ -546,13 +669,13 @@ static size_t tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) { static int m_tostring(bvm *vm) { int argc = be_top(vm); - size_t max_len = 32; /* limit to 32 bytes by default */ + int32_t max_len = 32; /* limit to 32 bytes by default */ int truncated = 0; if (argc > 1 && be_isint(vm, 2)) { max_len = be_toint(vm, 2); /* you can specify the len as second argument, or 0 for unlimited */ } - buf_impl * buf = bytes_check_data(vm, 0); - size_t len = buf->len; + buf_impl attr = m_read_attributes(vm, 1); + int32_t len = attr.len; if (max_len > 0 && len > max_len) { len = max_len; /* limit output size */ truncated = 1; @@ -561,7 +684,7 @@ static int m_tostring(bvm *vm) char * hex_out = be_pushbuffer(vm, hex_len); size_t l = be_strlcpy(hex_out, "bytes('", hex_len); - l += tohex(&hex_out[l], hex_len - l, buf_get_buf(buf), len); + l += tohex(&hex_out[l], hex_len - l, attr.bufptr, len); if (truncated) { l += be_strlcpy(&hex_out[l], "...", hex_len - l); } @@ -577,8 +700,8 @@ static int m_tostring(bvm *vm) */ static int m_asstring(bvm *vm) { - buf_impl * buf = bytes_check_data(vm, 0); - be_pushnstring(vm, (const char*) buf_get_buf(buf), buf->len); + buf_impl attr = bytes_check_data(vm, 0); + be_pushnstring(vm, (const char*) attr.bufptr, attr.len); be_return(vm); } @@ -587,13 +710,17 @@ static int m_fromstring(bvm *vm) int argc = be_top(vm); if (argc >= 2 && be_isstring(vm, 2)) { const char *s = be_tostring(vm, 2); - size_t len = be_strlen(vm, 2); - buf_impl * buf = bytes_check_data(vm, 0); - buf = bytes_resize(vm, buf, len); /* resize if needed */ - if (len > buf->size) { len = buf->size; } /* avoid overflow */ - memmove(buf_get_buf(buf), s, len); - buf->len = len; + int32_t len = be_strlen(vm, 2); /* calling be_strlen to support null chars in string */ + buf_impl attr = bytes_check_data(vm, 0); + if (attr.fixed && attr.len != len) { + be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); + } + bytes_resize(vm, &attr, len); /* resize if needed */ + if (len > attr.size) { len = attr.size; } /* avoid overflow */ + memmove(attr.bufptr, s, len); + attr.len = len; be_pop(vm, 1); /* remove arg to leave instance */ + m_write_attributes(vm, 1, &attr); /* update attributes */ be_return(vm); } be_raise(vm, "type_error", "operand must be a string"); @@ -611,7 +738,8 @@ static int m_fromstring(bvm *vm) static int m_add(bvm *vm) { int argc = be_top(vm); - buf_impl * buf = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */ + buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */ + if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } if (argc >= 2 && be_isint(vm, 2)) { int32_t v = be_toint(vm, 2); int vsize = 1; @@ -619,16 +747,17 @@ static int m_add(bvm *vm) vsize = be_toint(vm, 3); } switch (vsize) { - case 0: break; + case 0: break; case -1: /* fallback below */ - case 1: buf_add1(buf, v); break; - case 2: buf_add2_le(buf, v); break; - case 4: buf_add4_le(buf, v); break; - case -2: buf_add2_be(buf, v); break; - case -4: buf_add4_be(buf, v); break; + case 1: buf_add1(&attr, v); break; + case 2: buf_add2_le(&attr, v); break; + case 4: buf_add4_le(&attr, v); break; + case -2: buf_add2_be(&attr, v); break; + case -4: buf_add4_be(&attr, v); break; default: be_raise(vm, "type_error", "size must be -4, -2, -1, 0, 1, 2 or 4."); } be_pop(vm, argc - 1); + m_write_attributes(vm, 1, &attr); /* update attributes */ be_return(vm); } be_return_nil(vm); @@ -645,7 +774,7 @@ static int m_add(bvm *vm) static int m_get(bvm *vm, bbool sign) { int argc = be_top(vm); - buf_impl * buf = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ + buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ if (argc >=2 && be_isint(vm, 2)) { int32_t idx = be_toint(vm, 2); int vsize = 1; @@ -656,17 +785,17 @@ static int m_get(bvm *vm, bbool sign) switch (vsize) { case 0: break; case -1: /* fallback below */ - case 1: ret = buf_get1(buf, idx); + case 1: ret = buf_get1(&attr, idx); if (sign) { ret = (int8_t)(uint8_t) ret; } break; - case 2: ret = buf_get2_le(buf, idx); + case 2: ret = buf_get2_le(&attr, idx); if (sign) { ret = (int16_t)(uint16_t) ret; } break; - case 4: ret = buf_get4_le(buf, idx); break; - case -2: ret = buf_get2_be(buf, idx); + case 4: ret = buf_get4_le(&attr, idx); break; + case -2: ret = buf_get2_be(&attr, idx); if (sign) { ret = (int16_t)(uint16_t) ret; } break; - case -4: ret = buf_get4_be(buf, idx); break; + case -4: ret = buf_get4_be(&attr, idx); break; default: be_raise(vm, "type_error", "size must be -4, -2, -1, 0, 1, 2 or 4."); } be_pop(vm, argc - 1); @@ -703,7 +832,7 @@ static int m_getu(bvm *vm) static int m_set(bvm *vm) { int argc = be_top(vm); - buf_impl * buf = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ + buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) { int32_t idx = be_toint(vm, 2); int32_t value = be_toint(vm, 3); @@ -712,16 +841,17 @@ static int m_set(bvm *vm) vsize = be_toint(vm, 4); } switch (vsize) { - case 0: break; + case 0: break; case -1: /* fallback below */ - case 1: buf_set1(buf, idx, value); break; - case 2: buf_set2_le(buf, idx, value); break; - case 4: buf_set4_le(buf, idx, value); break; - case -2: buf_set2_be(buf, idx, value); break; - case -4: buf_set4_be(buf, idx, value); break; + case 1: buf_set1(&attr, idx, value); break; + case 2: buf_set2_le(&attr, idx, value); break; + case 4: buf_set4_le(&attr, idx, value); break; + case -2: buf_set2_be(&attr, idx, value); break; + case -4: buf_set4_be(&attr, idx, value); break; default: be_raise(vm, "type_error", "size must be -4, -2, -1, 0, 1, 2 or 4."); } be_pop(vm, argc - 1); + m_write_attributes(vm, 1, &attr); /* update attributes */ be_return_nil(vm); } be_return_nil(vm); @@ -730,12 +860,13 @@ static int m_set(bvm *vm) static int m_setitem(bvm *vm) { int argc = be_top(vm); - buf_impl * buf = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ + buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) { int index = be_toint(vm, 2); int val = be_toint(vm, 3); - if (index >= 0 && index < buf->len) { - buf_set1(buf, index, val); + if (index >= 0 && index < attr.len) { + buf_set1(&attr, index, val); + m_write_attributes(vm, 1, &attr); /* update attributes */ be_return_nil(vm); } } @@ -746,11 +877,11 @@ static int m_setitem(bvm *vm) static int m_item(bvm *vm) { int argc = be_top(vm); - buf_impl * buf = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ - if (argc >=2 && be_isint(vm, 2)) { + buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */ + if (argc >=2 && be_isint(vm, 2)) { /* single byte */ int index = be_toint(vm,2); - if (index >= 0 && index < buf->len) { - be_pushint(vm, buf_get1(buf, index)); + if (index >= 0 && index < attr.len) { + be_pushint(vm, buf_get1(&attr, index)); be_return(vm); } } @@ -758,7 +889,7 @@ static int m_item(bvm *vm) const char *cname = be_classname(vm, 2); if (!strcmp(cname, "range")) { bint lower, upper; - bint size = buf->len; + bint size = attr.len; /* get index range */ be_getmember(vm, 2, "__lower__"); lower = be_toint(vm, -1); @@ -771,12 +902,12 @@ static int m_item(bvm *vm) lower = lower < 0 ? 0 : lower; /* construction result list instance */ bytes_new_object(vm, upper > lower ? upper-lower : 0); - be_getmember(vm, -1, ".p"); - buf_impl * buf2 = be_tocomptr(vm, -1); - be_pop(vm, 1); /* remove .p and leave bytes instance */ + buf_impl attr2 = m_read_attributes(vm, -1); + for (; lower <= upper; ++lower) { - buf_add1(buf2, buf->buf[lower]); + buf_add1(&attr2, attr.bufptr[lower]); } + m_write_attributes(vm, -1, &attr2); /* update instance */ be_return(vm); } } @@ -786,17 +917,15 @@ static int m_item(bvm *vm) static int m_size(bvm *vm) { - buf_impl * buf = bytes_check_data(vm, 0); - be_pushint(vm, buf->len); + buf_impl attr = m_read_attributes(vm, 1); + be_pushint(vm, attr.len); be_return(vm); } static int m_resize(bvm *vm) { int argc = be_top(vm); - be_getmember(vm, 1, ".p"); - buf_impl * buf = be_tocomptr(vm, -1); - be_pop(vm, 1); + buf_impl attr = m_read_attributes(vm, 1); if (argc <= 1 || !be_isint(vm, 2)) { be_raise(vm, "type_error", "size must be of type 'int'"); @@ -805,42 +934,42 @@ static int m_resize(bvm *vm) if (new_len < 0) { new_len = 0; } + if (attr.fixed && attr.len != new_len) { + be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); + } - buf = bytes_resize(vm, buf, new_len); - buf_set_len(buf, new_len); + bytes_resize(vm, &attr, new_len); + buf_set_len(&attr, new_len); be_pop(vm, 1); + m_write_attributes(vm, 1, &attr); /* update instance */ be_return(vm); } static int m_clear(bvm *vm) { - buf_impl * buf = bytes_check_data(vm, 0); - buf->len = 0; + buf_impl attr = m_read_attributes(vm, 1); + if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } + attr.len = 0; + m_write_attributes(vm, 1, &attr); /* update instance */ be_return_nil(vm); } static int m_merge(bvm *vm) { int argc = be_top(vm); - buf_impl * buf1 = bytes_check_data(vm, 0); /* no resize yet */ - if (argc >= 2 && be_isinstance(vm, 2)) { - be_getglobal(vm, "bytes"); /* get the bytes class */ /* TODO eventually replace with be_getbuiltin */ - if (be_isderived(vm, 2)) { - be_getmember(vm, 2, ".p"); - buf_impl * buf2 = be_tocomptr(vm, -1); - be_pop(vm, 4); /* remove class, member, and 2 operands */ + buf_impl attr = m_read_attributes(vm, 1); /* no resize yet */ + if (argc >= 2 && be_isbytes(vm, 2)) { + buf_impl attr2 = m_read_attributes(vm, 2); - /* allocate new object */ - bytes_new_object(vm, buf1->len + buf2->len); - be_getmember(vm, -1, ".p"); - /* .p is on top of stack, then instance */ - buf_impl * buf3 = be_tocomptr(vm, -1); - be_pop(vm, 1); - buf_add_buf(buf3, buf1); - buf_add_buf(buf3, buf2); + /* allocate new object */ + bytes_new_object(vm, attr.len + attr2.len); + buf_impl attr3 = m_read_attributes(vm, -1); - be_return(vm); /* return self */ - } + buf_add_buf(&attr3, &attr); + buf_add_buf(&attr3, &attr2); + + m_write_attributes(vm, -1, &attr3); /* update instance */ + be_return(vm); /* return self */ } be_raise(vm, "type_error", "operand must be bytes"); be_return_nil(vm); /* return self */ @@ -848,12 +977,11 @@ static int m_merge(bvm *vm) static int m_copy(bvm *vm) { - buf_impl * buf1 = bytes_check_data(vm, 0); /* no resize */ - bytes_new_object(vm, buf1->len); - be_getmember(vm, -1, ".p"); - buf_impl * buf2 = be_tocomptr(vm, -1); - be_pop(vm, 1); - buf_add_buf(buf2, buf1); + buf_impl attr = m_read_attributes(vm, 1); + bytes_new_object(vm, attr.len); + buf_impl attr2 = m_read_attributes(vm, -1); + buf_add_buf(&attr2, &attr); + m_write_attributes(vm, -1, &attr2); /* update instance */ be_return(vm); /* return self */ } @@ -861,23 +989,22 @@ static int m_copy(bvm *vm) static int m_connect(bvm *vm) { int argc = be_top(vm); - buf_impl * buf1 = bytes_check_data(vm, 0); /* don't resize yet */ - if (argc >= 2 && (be_isinstance(vm, 2) || be_isint(vm, 2))) { + buf_impl attr = m_read_attributes(vm, 1); + if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); } + if (argc >= 2 && (be_isbytes(vm, 2) || be_isint(vm, 2))) { if (be_isint(vm, 2)) { - buf1 = bytes_resize(vm, buf1, buf1->len + 1); /* resize */ - buf_add1(buf1, be_toint(vm, 2)); - be_pop(vm, 1); /* remove operand */ + bytes_resize(vm, &attr, attr.len + 1); /* resize */ + buf_add1(&attr, be_toint(vm, 2)); + m_write_attributes(vm, 1, &attr); /* update instance */ + be_pushvalue(vm, 1); be_return(vm); /* return self */ } else { - be_getglobal(vm, "bytes"); /* get the bytes class */ /* TODO eventually replace with be_getbuiltin */ - if (be_isderived(vm, 2)) { - be_getmember(vm, 2, ".p"); - buf_impl * buf2 = be_tocomptr(vm, -1); - buf1 = bytes_resize(vm, buf1, buf1->len + buf2->len); /* resize buf1 for total size */ - buf_add_buf(buf1, buf2); - be_pop(vm, 3); /* remove class, member, and last operand */ - be_return(vm); /* return self */ - } + buf_impl attr2 = m_read_attributes(vm, 2); + bytes_resize(vm, &attr, attr.len + attr2.len); /* resize buf1 for total size */ + buf_add_buf(&attr, &attr2); + m_write_attributes(vm, 1, &attr); /* update instance */ + be_pushvalue(vm, 1); + be_return(vm); /* return self */ } } be_raise(vm, "type_error", "operand must be bytes or int"); @@ -886,19 +1013,18 @@ static int m_connect(bvm *vm) static int bytes_equal(bvm *vm, bbool iseq) { - be_getmember(vm, 1, ".p"); - buf_impl * buf1 = be_tocomptr(vm, -1); - be_pop(vm, 1); - - be_getmember(vm, 2, ".p"); - buf_impl * buf2 = be_tocomptr(vm, -1); - be_pop(vm, 1); - bbool ret; - if (buf_equals(buf1, buf2)) { - ret = iseq; - } else { + buf_impl attr1 = m_read_attributes(vm, 1); + if (!be_isbytes(vm, 2)) { ret = !iseq; + } else { + buf_impl attr2 = m_read_attributes(vm, 2); + + if (buf_equals(&attr1, &attr2)) { + ret = iseq; + } else { + ret = !iseq; + } } be_pushbool(vm, ret); be_return(vm); @@ -923,12 +1049,12 @@ static int m_nequal(bvm *vm) */ static int m_tob64(bvm *vm) { - buf_impl * buf = bytes_check_data(vm, 0); - size_t len = buf->len; - size_t b64_len = encode_base64_length(len) + 1; /* size of base64 encoded string for this binary length, add NULL terminator */ + buf_impl attr = m_read_attributes(vm, 1); + int32_t len = attr.len; + int32_t b64_len = encode_base64_length(len) + 1; /* size of base64 encoded string for this binary length, add NULL terminator */ char * b64_out = be_pushbuffer(vm, b64_len); - size_t converted = encode_base64(buf_get_buf(buf), len, (unsigned char*)b64_out); + size_t converted = encode_base64(attr.bufptr, len, (unsigned char*)b64_out); be_pushnstring(vm, b64_out, converted); /* make string from buffer */ be_remove(vm, -2); /* remove buffer */ @@ -945,17 +1071,21 @@ static int m_fromb64(bvm *vm) int argc = be_top(vm); if (argc >= 2 && be_isstring(vm, 2)) { const char *s = be_tostring(vm, 2); - size_t bin_len = decode_base64_length((unsigned char*)s); /* do a first pass to calculate the buffer size */ + int32_t bin_len = decode_base64_length((unsigned char*)s); /* do a first pass to calculate the buffer size */ - buf_impl * buf = bytes_check_data(vm, 0); - buf = bytes_resize(vm, buf, bin_len); /* resize if needed */ - if (bin_len > buf->size) { /* avoid overflow */ + buf_impl attr = m_read_attributes(vm, 1); + if (attr.fixed && attr.len != bin_len) { + be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); + } + bytes_resize(vm, &attr, bin_len); /* resize if needed */ + if (bin_len > attr.size) { /* avoid overflow */ be_raise(vm, "memory_error", "cannot allocate buffer"); } - size_t bin_len_final = decode_base64((unsigned char*)s, buf_get_buf(buf)); /* decode */ - buf->len = bin_len_final; + int32_t bin_len_final = decode_base64((unsigned char*)s, attr.bufptr); /* decode */ + attr.len = bin_len_final; be_pop(vm, 1); /* remove arg to leave instance */ + m_write_attributes(vm, 1, &attr); /* update instance */ be_return(vm); } be_raise(vm, "type_error", "operand must be a string"); @@ -978,8 +1108,8 @@ static int m_fromb64(bvm *vm) */ static int m_buffer(bvm *vm) { - buf_impl * buf = bytes_check_data(vm, 0); - be_pushcomptr(vm, &buf->buf); + buf_impl attr = m_read_attributes(vm, 1); + be_pushcomptr(vm, attr.bufptr); be_return(vm); } @@ -989,29 +1119,21 @@ static int m_buffer(bvm *vm) BERRY_API void be_pushbytes(bvm *vm, const void * bytes, size_t len) { bytes_new_object(vm, len); - be_getmember(vm, -1, ".p"); - buf_impl * buf = be_tocomptr(vm, -1); - be_pop(vm, 1); /* remove .p1 and leave instance */ - if (len > buf->size) { len = buf->size; } /* double check if the buffer allocated was smaller */ - memmove((void*)buf_get_buf(buf), bytes, len); - buf->len = len; + buf_impl attr = m_read_attributes(vm, -1); + if ((int32_t)len > attr.size) { len = attr.size; } /* double check if the buffer allocated was smaller */ + memmove((void*)attr.bufptr, bytes, len); + attr.len = len; + m_write_attributes(vm, -1, &attr); /* update instance */ /* bytes instance is on top of stack */ } BERRY_API const void *be_tobytes(bvm *vm, int rel_index, size_t *len) { int index = be_absindex(vm, rel_index); - if (be_isinstance(vm, index)) { - be_getglobal(vm, "bytes"); /* get the bytes class */ /* TODO eventually replace with be_getbuiltin */ - if (be_isderived(vm, index)) { - be_getmember(vm, index, ".p"); - buf_impl * buf = be_tocomptr(vm, -1); - be_pop(vm, 2); /* class and .p */ - if (len) { *len = buf->len; } - return (void*) buf_get_buf(buf); - } else { - be_pop(vm, 1); /* remove class */ - } + if (be_isbytes(vm, index)) { + buf_impl attr = m_read_attributes(vm, index); + if (len) { *len = attr.len; } + return (void*) attr.bufptr; } if (len) { *len = 0; } return NULL; @@ -1234,6 +1356,8 @@ void be_load_byteslib(bvm *vm) { static const bnfuncinfo members[] = { { ".p", NULL }, + { ".size", NULL }, + { ".len", NULL }, { "_buffer", m_buffer }, { "init", m_init }, { "deinit", m_deinit }, @@ -1270,6 +1394,8 @@ void be_load_byteslib(bvm *vm) /* @const_object_info_begin class be_class_bytes (scope: global, name: bytes) { .p, var + .size, var + .len, var _buffer, func(m_buffer) init, func(m_init) deinit, func(m_deinit) diff --git a/lib/libesp32/Berry/tests/bytes.be b/lib/libesp32/Berry/tests/bytes.be index 57b3f12a2..edb6c012e 100644 --- a/lib/libesp32/Berry/tests/bytes.be +++ b/lib/libesp32/Berry/tests/bytes.be @@ -7,8 +7,6 @@ b=bytes(0) assert(str(b) == "bytes('')") b=bytes(1) assert(str(b) == "bytes('')") -b=bytes(-1) -assert(str(b) == "bytes('')") assert(b.size() == 0) b=bytes("a") diff --git a/lib/libesp32/Berry/tests/bytes_fixed.be b/lib/libesp32/Berry/tests/bytes_fixed.be new file mode 100644 index 000000000..e4a64f67f --- /dev/null +++ b/lib/libesp32/Berry/tests/bytes_fixed.be @@ -0,0 +1,67 @@ +#- test for bytes with fixed sizes -# +def assert_attribute_error(f) + try + f() + assert(false, 'unexpected execution flow') + except .. as e, m + assert(e == 'attribute_error') + end +end + +#- simple initialization -# +b=bytes(-1) +assert(str(b) == "bytes('00')") +b=bytes(-5) +assert(str(b) == "bytes('0000000000')") + +#- initialization with hex -# +b=bytes("11", -1) +assert(str(b) == "bytes('11')") +b=bytes("11", -5) +assert(str(b) == "bytes('1100000000')") +b=bytes("11223344", -4) +assert(str(b) == "bytes('11223344')") +assert(str(bytes(-3).fromb64('RFVm')) == "bytes('445566')") + +#- check that get and set still works -# +b=bytes("11223344",-4) +assert(b.get(0,2) == 0x2211) +b.set(0,0x5566,2) +assert(b.get(0,2) == 0x5566) +assert(b[0] == 0x66) +b[0]=12 +assert(b[0] == 12) + +#- resize -# +b=bytes("11223344",-4) +assert(b.resize(4) == bytes('11223344')) + +#- check that changing size raises an exception -# +b=bytes("112233", -3) +assert_attribute_error(/-> b.add(1)) +assert_attribute_error(/-> b.add(2,2)) +assert_attribute_error(/-> b.resize(4)) +assert_attribute_error(/-> b.fromstring("aaaaa")) +assert_attribute_error(/-> b.fromb64('RFVmdw==')) +assert_attribute_error(/-> b.clear()) +assert_attribute_error(/-> b.bytes()) + +#- add -# +b=bytes("112233", -3) +assert(b+b == bytes("112233112233")) + +#- bytes mapped -# +b1=bytes("112233445566") +ptr=b1._buffer() +b2=bytes(ptr, -4) +assert(b2 == bytes("11223344")) +b2=bytes(ptr, 4) +assert(b2 == bytes("11223344")) +b2=bytes(ptr, 6) +assert(b2 == bytes("112233445566")) +assert(b1 == b2) + +b2.set(0,0xAABB,2) +assert(b2 == bytes("BBAA33445566")) +assert(b1 == bytes("BBAA33445566")) +assert(b1 == b2) \ No newline at end of file From 7c71c3bdd87482968f57803db89ea76a12cc1660 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 24 Sep 2021 11:34:44 +0200 Subject: [PATCH 244/317] Add command ``WebQuery GET|POST|PUT|PATCH [] `` Add command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests (#13209) --- CHANGELOG.md | 1 + RELEASENOTES.md | 1 + tasmota/i18n.h | 1 + tasmota/xdrv_01_webserver.ino | 86 ++++++++++++++++++++++++++++++----- 4 files changed, 77 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5fcf2f94..904543dc0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file. - Berry support for Serial - Support for Sensirion SCD40/SCD41 CO2 sensor (#13139) - Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow (#13195) +- Command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests (#13209) ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 6909a665d..2f78e5dca 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -107,6 +107,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) +- Command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests [#13209](https://github.com/arendst/Tasmota/issues/13209) - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 507e856f8..41c52f10b 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -415,6 +415,7 @@ #define D_CMND_WEBLOG "WebLog" #define D_CMND_WEBREFRESH "WebRefresh" #define D_CMND_WEBSEND "WebSend" +#define D_CMND_WEBQUERY "WebQuery" #define D_CMND_WEBCOLOR "WebColor" #define D_CMND_WEBBUTTON "WebButton" #define D_CMND_WEBSENSOR "WebSensor" diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index 9d7feaf9f..58baf3a53 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -3098,14 +3098,67 @@ int WebSend(char *buffer) } url += F("cmnd="); // url = |http://192.168.178.86/cm?cmnd=| or |http://192.168.178.86/cm?user=admin&password=joker&cmnd=| } - url += command; // url = |http://192.168.178.86/cm?cmnd=POWER1 ON| + url += UrlEncode(command); // url = |http://192.168.178.86/cm?cmnd=POWER1%20ON| + url += F(" GET"); // url = |http://192.168.178.86/cm?cmnd=POWER1%20ON GET| - DEBUG_CORE_LOG(PSTR("WEB: Uri |%s|"), url.c_str()); + DEBUG_CORE_LOG(PSTR("WEB: Uri '%s'"), url.c_str()); + status = WebQuery(const_cast(url.c_str())); + } + return status; +} + +int WebQuery(char *buffer) +{ + // http://192.168.1.1/path GET -> Sends HTTP GET http://192.168.1.1/path + // http://192.168.1.1/path POST {"some":"message"} -> Sends HTTP POST to http://192.168.1.1/path with body {"some":"message"} + // http://192.168.1.1/path PUT [Autorization: Bearer abcdxyz] potato -> Sends HTTP PUT to http://192.168.1.1/path with authorization header and body "potato" + // http://192.168.1.1/path PATCH patchInfo -> Sends HTTP PATCH to http://192.168.1.1/path with body "potato" + + // Valid HTTP Commands: GET, POST, PUT, and PATCH + // An unlimited number of headers can be sent per request, and a body can be sent for all command types + // The body will be ignored if sending a GET command + + WiFiClient http_client; + HTTPClient http; + + int status = WEBCMND_WRONG_PARAMETERS; + + char *temp; + char *url = strtok_r(buffer, " ", &temp); + char *method = strtok_r(temp, " ", &temp); + + if (url && method) { + if (http.begin(http_client, UrlEncode(url))) { + char empty_body[1] = { 0 }; + char *body = empty_body; + if (temp) { // There is a body and/or header + if (temp[0] == '[') { // Header information was sent; decode it + temp += 1; + temp = strtok_r(temp, "]", &body); + bool headerFound = true; + while (headerFound) { + char *header = strtok_r(temp, ":", &temp); + if (header) { + char *headerBody = strtok_r(temp, "|", &temp); + if (headerBody) { + http.addHeader(header, headerBody); + } + else headerFound = false; + } + else headerFound = false; + } + } else { // No header information was sent, but there was a body + body = temp; + } + } + + int http_code; + if (0 == strcasecmp_P(method, PSTR("GET"))) { http_code = http.GET(); } + else if (0 == strcasecmp_P(method, PSTR("POST"))) { http_code = http.POST(body); } + else if (0 == strcasecmp_P(method, PSTR("PUT"))) { http_code = http.PUT(body); } + else if (0 == strcasecmp_P(method, PSTR("PATCH"))) { http_code = http.PATCH(body); } + else return status; - WiFiClient http_client; - HTTPClient http; - if (http.begin(http_client, UrlEncode(url))) { // UrlEncode(url) = |http://192.168.178.86/cm?cmnd=POWER1%20ON| - int http_code = http.GET(); // Start connection and send HTTP header if (http_code > 0) { // http_code will be negative on error if (http_code == HTTP_CODE_OK || http_code == HTTP_CODE_MOVED_PERMANENTLY) { #ifdef USE_WEBSEND_RESPONSE @@ -3125,7 +3178,7 @@ int WebSend(char *buffer) // recursive call must be possible in this case tasm_cmd_activ = 0; #endif // USE_SCRIPT - MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_CMND_WEBSEND)); + MqttPublishPrefixTopicRulesProcess_P(RESULT_OR_STAT, PSTR(D_CMND_WEBQUERY)); #endif // USE_WEBSEND_RESPONSE } status = WEBCMND_DONE; @@ -3240,8 +3293,8 @@ const char kWebCommands[] PROGMEM = "|" // No prefix #if defined(USE_SENDMAIL) || defined(USE_ESP32MAIL) D_CMND_SENDMAIL "|" #endif - D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_WEBREFRESH "|" D_CMND_WEBSEND "|" D_CMND_WEBCOLOR "|" - D_CMND_WEBSENSOR "|" D_CMND_WEBBUTTON + D_CMND_WEBSERVER "|" D_CMND_WEBPASSWORD "|" D_CMND_WEBLOG "|" D_CMND_WEBREFRESH "|" D_CMND_WEBSEND "|" D_CMND_WEBQUERY "|" + D_CMND_WEBCOLOR "|" D_CMND_WEBSENSOR "|" D_CMND_WEBBUTTON #ifdef USE_WEBGETCONFIG "|" D_CMND_WEBGETCONFIG #endif @@ -3257,8 +3310,8 @@ void (* const WebCommand[])(void) PROGMEM = { #if defined(USE_SENDMAIL) || defined(USE_ESP32MAIL) &CmndSendmail, #endif - &CmndWebServer, &CmndWebPassword, &CmndWeblog, &CmndWebRefresh, &CmndWebSend, &CmndWebColor, - &CmndWebSensor, &CmndWebButton + &CmndWebServer, &CmndWebPassword, &CmndWeblog, &CmndWebRefresh, &CmndWebSend, &CmndWebQuery, + &CmndWebColor, &CmndWebSensor, &CmndWebButton #ifdef USE_WEBGETCONFIG , &CmndWebGetConfig #endif @@ -3359,6 +3412,15 @@ void CmndWebSend(void) } } +void CmndWebQuery(void) +{ + if (XdrvMailbox.data_len > 0) { + uint32_t result = WebQuery(XdrvMailbox.data); + char stemp1[20]; + ResponseCmndChar(GetTextIndexed(stemp1, sizeof(stemp1), result, kWebCmndStatus)); + } +} + #ifdef USE_WEBGETCONFIG void CmndWebGetConfig(void) { @@ -3519,4 +3581,4 @@ bool Xdrv01(uint8_t function) } return result; } -#endif // USE_WEBSERVER +#endif // USE_WEBSERVER \ No newline at end of file From 509daa24dc75ef1604a502d5c846d795a14d4022 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Fri, 24 Sep 2021 18:05:16 +0200 Subject: [PATCH 245/317] Berry revamped ``energy`` module to expose all C variables to Berry (read/write) --- CHANGELOG.md | 1 + lib/libesp32/Berry/default/be_ctypes.c | 144 +- .../default/be_energy_ctypes_definitions.c | 162 ++ lib/libesp32/Berry/default/be_energylib.c | 150 +- .../default/be_lvgl_ctypes_definitions.c | 8 +- lib/libesp32/Berry/default/be_modtab.c | 8 +- lib/libesp32/Berry/generate/be_const_strtab.h | 1360 +++++------ .../Berry/generate/be_const_strtab_def.h | 2027 +++++++++-------- .../Berry/generate/be_fixed_be_class_ctypes.h | 11 +- lib/libesp32/Berry/generate/be_fixed_energy.h | 8 +- lib/libesp32/Berry/src/be_module.c | 8 +- tasmota/berry/examples/denky.be | 4 +- tasmota/berry/modules/ctypes.be | 39 +- tasmota/berry/modules/energy_ctypes.be | 157 ++ tasmota/berry/modules/lvgl_ctypes.be | 2 +- tasmota/xdrv_52_3_berry_energy.ino | 69 - 16 files changed, 2339 insertions(+), 1819 deletions(-) create mode 100644 lib/libesp32/Berry/default/be_energy_ctypes_definitions.c create mode 100644 tasmota/berry/modules/energy_ctypes.be delete mode 100644 tasmota/xdrv_52_3_berry_energy.ino diff --git a/CHANGELOG.md b/CHANGELOG.md index 904543dc0..0d5af56bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable changes to this project will be documented in this file. - Minimum PWM Frequency lowered to 2Hz on ESP32 (#13123) - Use Tasmota Arduino Core32 1.0.7.4 for ESP32 builds (#13154) - Shrinked Webcam build, uses now `USE_TASMOTA_DISCOVERY` (#13148) +- Berry revamped ``energy`` module to expose all C variables to Berry (read/write) ### Fixed - OpenTherm invalid JSON (#13028) diff --git a/lib/libesp32/Berry/default/be_ctypes.c b/lib/libesp32/Berry/default/be_ctypes.c index 16aeff8d7..a462f8470 100644 --- a/lib/libesp32/Berry/default/be_ctypes.c +++ b/lib/libesp32/Berry/default/be_ctypes.c @@ -51,6 +51,10 @@ enum { ctypes_be_u16 = -2, ctypes_be_u8 = -1, + // floating point + ctypes_float = 5, + ctypes_double = 10, + ctypes_bf = 0, //bif-field }; @@ -88,14 +92,24 @@ typedef struct be_ctypes_classes_t { // // If no arg: allocate a bytes() structure of the right size, filled with zeroes // Arg1 is instance self -// If arg 2 is int (and not null): copy the data to the bytes structure +// If arg 2 is int or comptr (and not null): create a mapped bytes buffer to read/write at a specific location (can be copied if need a snapshot) int be_ctypes_init(bvm *vm) { int argc = be_top(vm); void * src_data = NULL; - if (argc > 1 && (be_isint(vm, 2) || be_iscomptr(vm,2))) { - src_data = (void*) be_toint(vm, 2); + if (argc > 1 && (be_isint(vm, 2) || be_iscomptr(vm, 2))) { + if (be_iscomptr(vm, 2)) { + src_data = be_tocomptr(vm, 2); + } else { + src_data = (void*) be_toint(vm, 2); + } } + // look for class definition + be_getmember(vm, 1, "_def"); // static class comptr + const be_ctypes_structure_t *definitions; + definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); + be_pop(vm, 1); + // call super(self, bytes) be_getglobal(vm, "super"); // push super function be_pushvalue(vm, 1); // push self instance @@ -107,34 +121,13 @@ int be_ctypes_init(bvm *vm) { // call bytes.init(self) be_getmember(vm, -1, "init"); be_pushvalue(vm, -2); - be_call(vm, 1); - be_pop(vm, 3); - // berry_log_C("be_ctypes_init> init called"); + if (src_data) { be_pushcomptr(vm, src_data); } // if mapped, push address + be_pushint(vm, definitions ? -definitions->size_bytes : 0); // negative size signals a fixed size + be_call(vm, src_data ? 3 : 2); // call with 2 or 3 arguments depending on provided address + be_pop(vm, src_data ? 4 : 3); + // super(self, bytes) still on top of stack - // look for class definition - be_getmember(vm, 1, "_def"); // static class comptr - const be_ctypes_structure_t *definitions; - definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); - if (definitions) { - // call self.resize(definitions->size_bytes) - be_getmember(vm, 1, "resize"); - be_pushvalue(vm, 1); - be_pushint(vm, definitions->size_bytes); - be_call(vm, 2); - be_pop(vm, 3); - - // if src_data then copy source data to the new structure - if (src_data) { - // call self._buffer() - be_getmember(vm, 1, "_buffer"); - be_pushvalue(vm, 1); - be_call(vm, 1); // call with 1 parameter - void * dst_data = be_tocomptr(vm, -2); - be_pop(vm, 2); - // copy data - memmove(dst_data, src_data, definitions->size_bytes); - } - } + be_pop(vm, 1); be_return(vm); } @@ -146,9 +139,35 @@ int be_ctypes_copy(bvm *vm) { size_t len; const void * src = be_tobytes(vm, 1, &len); be_classof(vm, 1); - be_pushint(vm, (int32_t) src); // skip first 4 bytes - be_call(vm, 1); + // stack: 1/self + class_object + be_call(vm, 0); // call empty constructor to build empty resizable copy + // stack: 1/ self + new_empty_instance + + // source object (self) + be_getmember(vm, 1, ".p"); + const void* src_buf = be_tocomptr(vm, -1); be_pop(vm, 1); + + be_getmember(vm, 1, ".len"); + int32_t src_len = be_toint(vm, -1); + be_pop(vm, 1); + + // dest object + be_getmember(vm, -1, ".p"); + const void* dst_buf = be_tocomptr(vm, -1); + be_pop(vm, 1); + + be_getmember(vm, -1, ".len"); + int32_t dst_len = be_toint(vm, -1); + be_pop(vm, 1); + + if (src_len != dst_len) { + be_raisef(vm, "internal_error", "new object has wrong size %i (should be %i)", dst_len, src_len); + } + + // copy bytes + memmove((void*)dst_buf, src_buf, src_len); + be_return(vm); } @@ -180,6 +199,20 @@ int be_ctypes_member(bvm *vm) { be_call(vm, 3); be_pop(vm, 3); // int result at top of stack + } else if (ctypes_float == member->type) { + // Note: double not supported (no need identified) + // get raw int32_t + be_getmember(vm, 1, "geti"); // self.get or self.geti + be_pushvalue(vm, 1); // push self + be_pushint(vm, member->offset_bytes); + be_pushint(vm, 4); // size is 4 bytes + be_call(vm, 3); + be_pop(vm, 3); + // get int and convert to float + int32_t val = be_toint(vm, -1); + be_pop(vm, 1); + float *fval = (float*) &val; // type wizardry + be_pushreal(vm, *fval); } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian @@ -272,6 +305,19 @@ int be_ctypes_setmember(bvm *vm) { be_call(vm, 4); be_pop(vm, 5); be_return_nil(vm); + } else if (ctypes_float == member->type) { + // Note: double not supported (no need identified) + float val = be_toreal(vm, 3); + int32_t *ival = (int32_t*) &val; + // set + be_getmember(vm, 1, "seti"); + be_pushvalue(vm, 1); // push self + be_pushint(vm, member->offset_bytes); + be_pushint(vm, *ival); + be_pushint(vm, 4); // size is 4 bytes + be_call(vm, 4); + be_pop(vm, 5); + be_return_nil(vm); } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian @@ -300,6 +346,38 @@ int be_ctypes_setmember(bvm *vm) { } } +// +// tomap, create a map instance containing all values decoded +// +int be_ctypes_tomap(bvm *vm) { + // don't need argc + be_getmember(vm, 1, "_def"); + const be_ctypes_structure_t *definitions; + definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, -1); + be_pop(vm, 1); + + // create empty map + be_newobject(vm, "map"); + + for (uint32_t i = 0; i < definitions->size_elt; i++) { + const be_ctypes_structure_item_t * item = &definitions->items[i]; + + be_pushstring(vm, item->name); // stack: map - key + + be_getmember(vm, 1, "member"); + be_pushvalue(vm, 1); + be_pushstring(vm, item->name); + be_call(vm, 2); + be_pop(vm, 2); // stack: map - key - value + + be_data_insert(vm, -3); + be_pop(vm, 2); // stack: map + } + + be_pop(vm, 1); // remove map struct, to leave map instance + be_return(vm); +} + BE_EXPORT_VARIABLE extern const bclass be_class_bytes; #include "../generate/be_fixed_be_class_ctypes.h" @@ -317,5 +395,7 @@ class be_class_ctypes (scope: global, name: ctypes_bytes, super: be_class_bytes) init, func(be_ctypes_init) member, func(be_ctypes_member) setmember, func(be_ctypes_setmember) + + tomap, func(be_ctypes_tomap) } @const_object_info_end */ diff --git a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c new file mode 100644 index 000000000..25d7bdf79 --- /dev/null +++ b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c @@ -0,0 +1,162 @@ +/******************************************************************** + * Tasmota LVGL ctypes mapping + *******************************************************************/ +#include "be_constobj.h" + +#ifdef USE_ENERGY_SENSOR + +/******************************************************************** + * Generated code, don't edit + *******************************************************************/ + +enum { + ctypes_i32 = 14, + ctypes_i16 = 12, + ctypes_i8 = 11, + ctypes_u32 = 4, + ctypes_u16 = 2, + ctypes_u8 = 1, + + // big endian + ctypes_be_i32 = -14, + ctypes_be_i16 = -12, + ctypes_be_i8 = -11, + ctypes_be_u32 = -4, + ctypes_be_u16 = -2, + ctypes_be_u8 = -1, + + ctypes_bf = 0, //bif-field +}; + +typedef struct be_ctypes_structure_item_t { + const char * name; + uint16_t offset_bytes; + uint8_t offset_bits : 3; + uint8_t len_bits : 5; + int8_t type : 5; + uint8_t mapping : 3; +} be_ctypes_structure_item_t; + +typedef struct be_ctypes_structure_t { + uint16_t size_bytes; /* size in bytes */ + uint16_t size_elt; /* number of elements */ + const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ + const be_ctypes_structure_item_t * items; +} be_ctypes_structure_t; + +typedef struct be_ctypes_class_t { + const char * name; + const be_ctypes_structure_t * definitions; +} be_ctypes_class_t; + +typedef struct be_ctypes_classes_t { + uint16_t size; + const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ + const be_ctypes_class_t * classes; +} be_ctypes_classes_t; + +BE_EXPORT_VARIABLE extern const bclass be_class_ctypes; + +static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { + be_pushntvclass(vm, ctypes_class); + be_setglobal(vm, str(ctypes_class->name)); + be_pop(vm, 1); +} + +static const char * be_ctypes_instance_mappings[]; /* forward definition */ + +// Define a sub-class of ctypes with only one member which points to the ctypes defintion +#define be_define_ctypes_class(_c_name, _def, _super, _name) \ + be_local_class(_c_name, \ + 0, \ + _super, \ + be_nested_map(1, \ + ( (struct bmapnode*) &(const bmapnode[]) { \ + { be_nested_key("_def", 1985022181, 4, -1), be_const_comptr(_def) },\ + })), \ + (be_nested_const_str(_name, 0, sizeof(_name)-1)) \ + ) + +/********************************************************************/ + +const be_ctypes_structure_t be_energy_struct = { + 146, /* size in bytes */ + 62, /* number of elements */ + be_ctypes_instance_mappings, + (const be_ctypes_structure_item_t[62]) { + { "active_power", 24, 0, 0, 5, 0 }, + { "active_power_2", 28, 0, 0, 5, 0 }, + { "active_power_3", 32, 0, 0, 5, 0 }, + { "command_code", 113, 0, 0, 1, 0 }, + { "current", 12, 0, 0, 5, 0 }, + { "current_2", 16, 0, 0, 5, 0 }, + { "current_3", 20, 0, 0, 5, 0 }, + { "current_available", 118, 5, 1, 0, 0 }, + { "daily", 88, 0, 0, 5, 0 }, + { "data_valid", 114, 0, 0, 1, 0 }, + { "data_valid_2", 115, 0, 0, 1, 0 }, + { "data_valid_3", 116, 0, 0, 1, 0 }, + { "export_active", 72, 0, 0, 5, 0 }, + { "export_active_2", 76, 0, 0, 5, 0 }, + { "export_active_3", 80, 0, 0, 5, 0 }, + { "fifth_second", 112, 0, 0, 1, 0 }, + { "frequency", 60, 0, 0, 5, 0 }, + { "frequency_2", 64, 0, 0, 5, 0 }, + { "frequency_3", 68, 0, 0, 5, 0 }, + { "frequency_common", 118, 1, 1, 0, 0 }, + { "max_current_flag", 138, 5, 1, 0, 0 }, + { "max_energy_state", 145, 0, 0, 1, 0 }, + { "max_power_flag", 138, 1, 1, 0, 0 }, + { "max_voltage_flag", 138, 3, 1, 0, 0 }, + { "min_current_flag", 138, 4, 1, 0, 0 }, + { "min_power_flag", 138, 0, 1, 0, 0 }, + { "min_voltage_flag", 138, 2, 1, 0, 0 }, + { "mplh_counter", 140, 0, 0, 2, 0 }, + { "mplr_counter", 144, 0, 0, 1, 0 }, + { "mplw_counter", 142, 0, 0, 2, 0 }, + { "period", 108, 0, 0, 4, 0 }, + { "phase_count", 117, 0, 0, 1, 0 }, + { "power_factor", 48, 0, 0, 5, 0 }, + { "power_factor_2", 52, 0, 0, 5, 0 }, + { "power_factor_3", 56, 0, 0, 5, 0 }, + { "power_history_0", 119, 0, 0, 2, 0 }, + { "power_history_0_2", 121, 0, 0, 2, 0 }, + { "power_history_0_3", 123, 0, 0, 2, 0 }, + { "power_history_1", 125, 0, 0, 2, 0 }, + { "power_history_1_2", 127, 0, 0, 2, 0 }, + { "power_history_1_3", 129, 0, 0, 2, 0 }, + { "power_history_2", 131, 0, 0, 2, 0 }, + { "power_history_2_2", 133, 0, 0, 2, 0 }, + { "power_history_2_3", 135, 0, 0, 2, 0 }, + { "power_on", 118, 7, 1, 0, 0 }, + { "power_steady_counter", 137, 0, 0, 1, 0 }, + { "reactive_power", 36, 0, 0, 5, 0 }, + { "reactive_power_2", 40, 0, 0, 5, 0 }, + { "reactive_power_3", 44, 0, 0, 5, 0 }, + { "start_energy", 84, 0, 0, 5, 0 }, + { "today_delta_kwh", 96, 0, 0, 4, 0 }, + { "today_kwh", 104, 0, 0, 4, 0 }, + { "today_offset_init_kwh", 118, 3, 1, 0, 0 }, + { "today_offset_kwh", 100, 0, 0, 4, 0 }, + { "total", 92, 0, 0, 5, 0 }, + { "type_dc", 118, 6, 1, 0, 0 }, + { "use_overtemp", 118, 2, 1, 0, 0 }, + { "voltage", 0, 0, 0, 5, 0 }, + { "voltage_2", 4, 0, 0, 5, 0 }, + { "voltage_3", 8, 0, 0, 5, 0 }, + { "voltage_available", 118, 4, 1, 0, 0 }, + { "voltage_common", 118, 0, 1, 0, 0 }, +}}; + +static const char * be_ctypes_instance_mappings[] = { + NULL +}; + +static be_define_ctypes_class(energy_struct, &be_energy_struct, &be_class_ctypes, "energy_struct"); + +void be_load_ctypes_energy_definitions_lib(bvm *vm) { + ctypes_register_class(vm, &be_class_energy_struct, &be_energy_struct); +} +/********************************************************************/ + +#endif // USE_ENERGY_SENSOR \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_energylib.c b/lib/libesp32/Berry/default/be_energylib.c index 1cbb0822e..eb207e4f7 100644 --- a/lib/libesp32/Berry/default/be_energylib.c +++ b/lib/libesp32/Berry/default/be_energylib.c @@ -9,11 +9,157 @@ #ifdef USE_ENERGY_SENSOR -extern int b_nrg_read(bvm *vm); +extern struct ENERGY Energy; +/* + +def init(m) + import global + global._energy = energy_struct(m._ptr) +end + +def read() + return _energy.tomap() +end + +def member(k) + return _energy.(k) +end + +def setmember(k, v) + _energy.(k) = v +end + +import solidify +solidify.dump(m.init) +*/ + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("global", 503252654, 6), + /* K1 */ be_nested_string("_energy", 535372070, 7), + /* K2 */ be_nested_string("energy_struct", 1655792843, 13), + /* K3 */ be_nested_string("_ptr", 306235816, 4), + }), + (be_nested_const_str("", 1160973142, 11)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xB80A0400, // 0001 GETNGBL R2 K2 + 0x880C0103, // 0002 GETMBR R3 R0 K3 + 0x7C080200, // 0003 CALL R2 1 + 0x90060202, // 0004 SETMBR R1 K1 R2 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: read +********************************************************************/ +be_local_closure(read, /* name */ + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_string("_energy", 535372070, 7), + /* K1 */ be_nested_string("tomap", 612167626, 5), + }), + (be_nested_const_str("", 1160973142, 11)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 4]) { /* code */ + 0xB8020000, // 0000 GETNGBL R0 K0 + 0x8C000101, // 0001 GETMET R0 R0 K1 + 0x7C000200, // 0002 CALL R0 1 + 0x80040000, // 0003 RET 1 R0 + }) + ) +); +/*******************************************************************/ + +/******************************************************************** +** Solidified function: member +********************************************************************/ +be_local_closure(member, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("_energy", 535372070, 7), + }), + (be_nested_const_str("member", 719708611, 6)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 3]) { /* code */ + 0xB8060000, // 0000 GETNGBL R1 K0 + 0x88040200, // 0001 GETMBR R1 R1 R0 + 0x80040200, // 0002 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: setmember +********************************************************************/ +be_local_closure(setmember, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("_energy", 535372070, 7), + }), + (be_nested_const_str("setmember", 1432909441, 9)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 3]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x90080001, // 0001 SETMBR R2 R0 R1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + /* @const_object_info_begin module energy (scope: global) { - read, func(b_nrg_read) + _ptr, comptr(&Energy) + init, closure(init_closure) + + read, closure(read_closure) + member, closure(member_closure) + setmember, closure(setmember_closure) } @const_object_info_end */ #include "../generate/be_fixed_energy.h" diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c b/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c index 6492336bc..cb190949e 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c +++ b/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c @@ -59,13 +59,13 @@ typedef struct be_ctypes_classes_t { BE_EXPORT_VARIABLE extern const bclass be_class_ctypes; -void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { +static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { be_pushntvclass(vm, ctypes_class); be_setglobal(vm, str(ctypes_class->name)); be_pop(vm, 1); } -const char * be_ctypes_instance_mappings[]; /* forward definition */ +static const char * be_ctypes_instance_mappings[]; /* forward definition */ // Define a sub-class of ctypes with only one member which points to the ctypes defintion #define be_define_ctypes_class(_c_name, _def, _super, _name) \ @@ -410,7 +410,7 @@ const be_ctypes_structure_t be_lv_draw_mask_saved = { { "param", 0, 0, 0, 4, 0 }, }}; -const char * be_ctypes_instance_mappings[] = { +static const char * be_ctypes_instance_mappings[] = { "lv_color", NULL }; @@ -435,7 +435,7 @@ static be_define_ctypes_class(lv_draw_rect_dsc, &be_lv_draw_rect_dsc, &be_class_ static be_define_ctypes_class(lv_point, &be_lv_point, &be_class_ctypes, "lv_point"); static be_define_ctypes_class(lv_sqrt_res, &be_lv_sqrt_res, &be_class_ctypes, "lv_sqrt_res"); -void be_load_ctypes_definitions_lib(bvm *vm) { +void be_load_ctypes_lvgl_definitions_lib(bvm *vm) { ctypes_register_class(vm, &be_class_lv_area, &be_lv_area); ctypes_register_class(vm, &be_class_lv_draw_img_dsc, &be_lv_draw_img_dsc); ctypes_register_class(vm, &be_class_lv_draw_label_dsc, &be_lv_draw_label_dsc); diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index f6c082670..4c9ea6ca1 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -115,6 +115,7 @@ extern void be_load_webclient_lib(bvm *vm); extern void be_load_crypto_lib(bvm *vm); extern void be_load_ctypes_lib(bvm *vm); +extern void be_load_ctypes_energy_definitions_lib(bvm *vm); #ifdef USE_I2S_AUDIO_BERRY extern void be_load_driver_audio_lib(bvm *vm); @@ -126,7 +127,7 @@ extern void be_load_lvgl_font_lib(bvm *vm); extern void be_load_lv_all_lib(bvm *vm); extern void be_load_lvgl_cb_lib(bvm *vm); extern void be_load_lvgl_cb_all_lib(bvm *vm); -extern void be_load_ctypes_definitions_lib(bvm *vm); +extern void be_load_ctypes_lvgl_definitions_lib(bvm *vm); // custom widgets extern void be_load_lv_signal_bars_class(bvm *vm); extern void be_load_lv_wifi_bars_class(bvm *vm); @@ -160,6 +161,9 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_driver_i2c_lib(vm); be_load_AXP192_class(vm); #endif // USE_I2C +#ifdef USE_ENERGY_SENSOR + be_load_ctypes_energy_definitions_lib(vm); +#endif // USE_ENERGY_SENSOR #ifdef USE_WEBCLIENT be_load_webclient_lib(vm); #endif // USE_WEBCLIENT @@ -177,7 +181,7 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_lv_all_lib(vm); be_load_lvgl_cb_lib(vm); be_load_lvgl_cb_all_lib(vm); - be_load_ctypes_definitions_lib(vm); + be_load_ctypes_lvgl_definitions_lib(vm); // custom widgets be_load_lv_signal_bars_class(vm); be_load_lv_wifi_bars_class(vm); diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index d954c8189..3a9815874 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,697 +1,699 @@ -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_dot_size; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_dot_len; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_acos; extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_GPS_RX; extern const bcstring be_const_str_item; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_set_light; extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_TM1637CLK; extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str__ptr; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_TASMOTACLIENT_RST; extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_gamma8; extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_dot_size; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_dot_len; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_wire; extern const bcstring be_const_str_HJL_CF; extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_assert; extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_ZEROCROSS; extern const bcstring be_const_str__def; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_BL0940_RX; extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_OneWire; extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_SYMBOL_MINUS; extern const bcstring be_const_str_range; extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str___iterator__; extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_wire1; extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_publish; extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_tomap; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_var; extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_SYMBOL_BELL; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index bd0806599..ae61fa083 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1043 +1,1046 @@ -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str___lower__); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, NULL); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_LMT01); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_CSE7766_TX); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, NULL); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_I2C_SCL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_ROT1A); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, NULL); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_INPUT_PULLUP); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, NULL); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_WEBCAM_PSCLK); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_PULLDOWN); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_get_switch); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_LE01MR_TX); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SERIAL_5N2); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_IBEACON_TX); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, NULL); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(read13, "read13", 12887293u, 0, 6, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SENSOR_END); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_SHELLY_DIMMER_BOOT0); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_CHANGE); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_LE01MR_RX); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_PZEM016_RX); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, NULL); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_format); -be_define_const_str(format, "format", 3114108242u, 0, 6, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, NULL); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SERIAL_6N2); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_loop); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, NULL); -be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_INTERRUPT); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, NULL); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_OPTION_A); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, NULL); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, NULL); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_get_string); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_POST); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, NULL); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_tob64); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_GPS_RX); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, &be_const_str_tob64); be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_MIEL_HVAC_TX); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_ADC_BUTTON); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_MUTE); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_HJL_CF); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, NULL); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, NULL); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_dac_voltage); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_CSE7766_RX); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_assert); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SERIAL_5O2); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SPI_CLK); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_ILI9341_DC); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_HRE_CLOCK); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_SERIAL_7O2); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_SERIAL_8N1); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_FTC532); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_push); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SYMBOL_GPS); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_push); be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_AudioGenerator); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_ILI9341_CS); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_MAX31855CS); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_exec_cmd); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_EPD_DATA); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_skip); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_skip); be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_ETH_PHY_MDC); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_I2S_IN_DATA); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_SM16716_SEL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_HPMA_TX); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SWT1_NP); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SYMBOL_BATTERY_1); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_NONE); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_NEOPOOL_RX); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_pi); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_pi); be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_SERIAL_5E1); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_select); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_PMS5003_TX); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SERIAL_8N2); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_MGC3130_XFER); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SWT1_PD); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_EPAPER29_CS); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str__ptr); +be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SERIAL_8N1); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, NULL); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_BUZZER_INV); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_BOILER_OT_TX); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_EPAPER42_CS); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_USB); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_select); be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_MAX31855CLK); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_AudioFileSourceFS); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_OPEN_DRAIN); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); +be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_OUTPUT); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); +be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_DOWN); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_SYMBOL_SAVE); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_MCP39F5_RST); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_I2C_SCL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_P9813_DAT); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_SHELLY_DIMMER_BOOT0); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_KEY1_TC); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, NULL); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_LMT01); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_SERIAL_6O2); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_AES_GCM); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_NRG_SEL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_DHT22); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DCKI); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SYMBOL_BATTERY_FULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_RF_SENSOR); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_available); +be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_MGC3130_RESET); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SERIAL_7E1); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str__def); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SERIAL_8E1); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_MHZ_RXD); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDS0X1_TX); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SERIAL_8O2); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_SERIAL_6N1); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, NULL); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_tomap); +be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SERIAL_5O2); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_MCP39F5_RX); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SM16716_SEL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_ETH_PHY_MDC); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SYMBOL_PAUSE); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SERIAL_6E2); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_HALLEFFECT); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SERIAL_7O1); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_NRF24_CS); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SERIAL_7E2); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_ROT1A_NP); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SERIAL_5E2); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_I2S_OUT_CLK); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_LE01MR_RX); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_KEY1_PD); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_OUTPUT_OPEN_DRAIN); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, NULL); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_dac_voltage); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SERIAL_5E1); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - NULL, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_add_driver, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_SYMBOL_LEFT, - NULL, - (const bstring *)&be_const_str_SHELLY_DIMMER_RST_INV, - (const bstring *)&be_const_str_SDCARD_CS, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_load, - (const bstring *)&be_const_str_static, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - NULL, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_dot_size, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_lv_spinner, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_register_button_encoder, - NULL, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_SYMBOL_UPLOAD, - (const bstring *)&be_const_str_dot_len, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_content_start, - (const bstring *)&be_const_str_KEY1_INV_NP, - NULL, - NULL, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_PN532_RXD, - (const bstring *)&be_const_str_DSB_OUT, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_opt_connect, - NULL, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_read24, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_SERIAL_8E1, - (const bstring *)&be_const_str_SYMBOL_CLOSE, - (const bstring *)&be_const_str_SYMBOL_PLAY, - (const bstring *)&be_const_str_SERIAL_5E2, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_SERIAL_5O1, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_lv_switch, - (const bstring *)&be_const_str_MD5, - NULL, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_ctypes_bytes, - (const bstring *)&be_const_str_read13, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_yield, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_RFRECV, - NULL, - (const bstring *)&be_const_str_CSE7761_RX, - (const bstring *)&be_const_str_seg7_font, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str__begin_transmission, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str_arg_size, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_lv_cpicker, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_as, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_set_light, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_SERIAL_6O1, - (const bstring *)&be_const_str_available, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_split, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_gen_cb, - (const bstring *)&be_const_str_reverse, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str___iterator__, - NULL, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_SERIAL_7O1, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_IRSEND, - (const bstring *)&be_const_str_acos, (const bstring *)&be_const_str_AudioOutputI2S, NULL, - (const bstring *)&be_const_str_WEBCAM_VSYNC, - (const bstring *)&be_const_str_atan2, - (const bstring *)&be_const_str_bytes, - NULL, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_Wire, - (const bstring *)&be_const_str_elif, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_OUTPUT_HI, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_AS3935, - NULL, (const bstring *)&be_const_str_item, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_time_dump, - (const bstring *)&be_const_str_SYMBOL_NEXT, - (const bstring *)&be_const_str_lv_tileview, - NULL, - (const bstring *)&be_const_str_deinit, - (const bstring *)&be_const_str_opt_add, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_SOLAXX1_RX, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_SBR_TX, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_setitem, - (const bstring *)&be_const_str_get_size, - (const bstring *)&be_const_str_SERIAL_7N2, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_SERIAL_7E1, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_SYMBOL_SHUFFLE, - (const bstring *)&be_const_str__def, - NULL, - (const bstring *)&be_const_str_SERIAL_5N1, - (const bstring *)&be_const_str_print, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_SSPI_CS, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_TCP_TX, - NULL, - (const bstring *)&be_const_str_strftime, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_IRRECV, - NULL, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_TX2X_TXD_BLACK, - (const bstring *)&be_const_str_lv_color, - (const bstring *)&be_const_str_WE517_TX, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_DYP_RX, - NULL, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_set_timer, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_eth, - NULL, - NULL, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_RF_SENSOR, - NULL, - (const bstring *)&be_const_str_LEDLNK_INV, - NULL, - (const bstring *)&be_const_str_DAC, - NULL, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_WINDMETER_SPEED, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_BUZZER, (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_decrypt, NULL, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_get, - NULL, - (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_set_power, NULL, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_SERIAL_6N2, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_SYMBOL_LOOP, + (const bstring *)&be_const_str_SYMBOL_PASTE, + (const bstring *)&be_const_str_INTERRUPT, (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_HPMA_RX, - NULL, - (const bstring *)&be_const_str_SERIAL_8O2, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_SYMBOL_DIRECTORY, - NULL, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_IEM3000_TX, - NULL, - NULL, - (const bstring *)&be_const_str_setmember, - NULL, - (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_lv_arc, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_yield, + (const bstring *)&be_const_str_redirect, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_read13, NULL, (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_SERIAL_8N2, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_nil, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_dump, - (const bstring *)&be_const_str_read8, - (const bstring *)&be_const_str_search, + (const bstring *)&be_const_str_imin, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_TX2X_TXD_BLACK, + (const bstring *)&be_const_str_arg_size, (const bstring *)&be_const_str_BACKLIGHT, - NULL, - (const bstring *)&be_const_str_SERIAL_8E2, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_TM1638DIO, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_load_font, - (const bstring *)&be_const_str_member, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_SERIAL_7E2, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_WEBCAM_HSD, - (const bstring *)&be_const_str_toupper, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_lv_design_cb, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_KEY1_PD, - NULL, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_hex, - (const bstring *)&be_const_str_find_key_i, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_load, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_detect, + (const bstring *)&be_const_str__cb, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_input, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_remove_cmd, + (const bstring *)&be_const_str_lv_cb, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_lv_bar, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_WEBCAM_PSRCS, + (const bstring *)&be_const_str_log, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_add, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_srand, - (const bstring *)&be_const_str_isrunning, - (const bstring *)&be_const_str_lv_gauge, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_KEY1_TC, - (const bstring *)&be_const_str_count, - (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_allocated, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_SDM72_RX, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_fromstring, NULL, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_SERIAL_6N1, + NULL, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_opt_call, + NULL, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_event, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_SDM120_RX, + NULL, + (const bstring *)&be_const_str_search, + (const bstring *)&be_const_str_lv_design_cb, + NULL, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + (const bstring *)&be_const_str_lower, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_lv_tabview, + (const bstring *)&be_const_str_resolvecmnd, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_bus, + (const bstring *)&be_const_str_SOLAXX1_RX, + NULL, + (const bstring *)&be_const_str_number, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_ZIGBEE_TX, + NULL, + (const bstring *)&be_const_str_cosh, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_SM16716_DAT, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_dot_size, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_addr, + (const bstring *)&be_const_str_assert, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_AudioGeneratorWAV, + NULL, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_ILI9341_DC, + (const bstring *)&be_const_str_REL1_INV, + (const bstring *)&be_const_str_MAX7219CLK, + NULL, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_PZEM0XX_TX, + (const bstring *)&be_const_str_byte, (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_ZIGBEE_RX, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_dot_len, + (const bstring *)&be_const_str_ADC_RANGE, + NULL, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_SYMBOL_BATTERY_1, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_AudioFileSource, + NULL, + (const bstring *)&be_const_str_try, + (const bstring *)&be_const_str_EC_C25519, + NULL, + (const bstring *)&be_const_str_digital_write, + NULL, + (const bstring *)&be_const_str_lv_cpicker, + NULL, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_remove_driver, + (const bstring *)&be_const_str_SERIAL_8E2, + NULL, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_WEBCAM_XCLK, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_IEM3000_TX, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_DDSU666_RX, + NULL, + (const bstring *)&be_const_str_TM1638CLK, + (const bstring *)&be_const_str_EXS_ENABLE, + NULL, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_has_arg, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_public_key, + (const bstring *)&be_const_str_loop, + (const bstring *)&be_const_str_scan, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_DSB, + NULL, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str_IRSEND, + NULL, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_DDS2382_TX, + NULL, + NULL, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_SYMBOL_TRASH, + (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + NULL, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_lv_gauge, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_SERIAL_5O1, + (const bstring *)&be_const_str_RC522_CS, + NULL, + NULL, + (const bstring *)&be_const_str_SAIR_TX, (const bstring *)&be_const_str_asstring, NULL, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_lv_canvas, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_SERIAL_6O2, + (const bstring *)&be_const_str_HPMA_RX, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_insert, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_SERIAL_5N2, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_RC522_RST, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_gc, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_HRE_DATA, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_DAC, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_OneWire, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_SYMBOL_AUDIO, NULL, + (const bstring *)&be_const_str_PULLDOWN, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_SERIAL_6O1, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_KEY1_INV, (const bstring *)&be_const_str_SERIAL_8O1, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_tostring, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_RA8876_CS, + (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str_SYMBOL_WARNING, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, NULL, - (const bstring *)&be_const_str_ILI9488_CS + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_ST7789_CS, + (const bstring *)&be_const_str_last_modified, + (const bstring *)&be_const_str_OUTPUT_LO, + (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_cos, + (const bstring *)&be_const_str_close, + (const bstring *)&be_const_str_time_str, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_RFSEND, + (const bstring *)&be_const_str_I2S_IN_SLCT, + NULL, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_classof, + (const bstring *)&be_const_str_SSD1331_DC, + (const bstring *)&be_const_str_SERIAL_7O2, + NULL, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_get_size, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_static, + (const bstring *)&be_const_str_SWT1, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_SYMBOL_DRIVE, + (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_SERIAL_5N1, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_wire2, + (const bstring *)&be_const_str_depower, + (const bstring *)&be_const_str_opt_add, + NULL, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_opt_eq, + (const bstring *)&be_const_str_def, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_upper, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_A4988_DIR, + NULL, + (const bstring *)&be_const_str_issubclass, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + NULL, + (const bstring *)&be_const_str_gen_cb, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_ILI9341_CS, + NULL, + (const bstring *)&be_const_str_BS814_DAT, + NULL, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_Wire, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_lv_dropdown, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_LOW, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_A4988_MS1 }; static const struct bconststrtab m_const_string_table = { - .size = 337, - .count = 675, + .size = 338, + .count = 677, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h index dbf8fcdd3..cf75e6d9a 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes.h @@ -1,16 +1,17 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_ctypes_map) { - { be_const_key(init, -1), be_const_func(be_ctypes_init) }, - { be_const_key(setmember, 2), be_const_func(be_ctypes_setmember) }, - { be_const_key(_def, 3), be_const_nil() }, - { be_const_key(member, -1), be_const_func(be_ctypes_member) }, + { be_const_key(_def, 5), be_const_nil() }, + { be_const_key(setmember, 0), be_const_func(be_ctypes_setmember) }, { be_const_key(copy, -1), be_const_func(be_ctypes_copy) }, + { be_const_key(init, -1), be_const_func(be_ctypes_init) }, + { be_const_key(tomap, -1), be_const_func(be_ctypes_tomap) }, + { be_const_key(member, -1), be_const_func(be_ctypes_member) }, }; static be_define_const_map( be_class_ctypes_map, - 5 + 6 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_energy.h b/lib/libesp32/Berry/generate/be_fixed_energy.h index 0608b0ba2..719d24f2d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_energy.h +++ b/lib/libesp32/Berry/generate/be_fixed_energy.h @@ -1,12 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(m_libenergy_map) { - { be_const_key(read, -1), be_const_func(b_nrg_read) }, + { be_const_key(init, -1), be_const_closure(init_closure) }, + { be_const_key(_ptr, 3), be_const_comptr(&Energy) }, + { be_const_key(setmember, -1), be_const_closure(setmember_closure) }, + { be_const_key(member, 2), be_const_closure(member_closure) }, + { be_const_key(read, -1), be_const_closure(read_closure) }, }; static be_define_const_map( m_libenergy_map, - 1 + 5 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/src/be_module.c b/lib/libesp32/Berry/src/be_module.c index 4cbc86a95..afd7e146d 100644 --- a/lib/libesp32/Berry/src/be_module.c +++ b/lib/libesp32/Berry/src/be_module.c @@ -255,9 +255,11 @@ static void cache_module(bvm *vm, bstring *name) /* Try to run '()' function of module. Module is already loaded. */ static void module_init(bvm *vm) { if (be_getmember(vm, -1, "init")) { - /* found, call it with no parameter */ - be_call(vm, 0); + /* found, call it with current module as parameter */ + be_pushvalue(vm, -2); + be_call(vm, 1); /* we don't care about the result */ + be_pop(vm, 1); } be_pop(vm, 1); } @@ -339,7 +341,7 @@ bbool be_module_setmember(bvm *vm, bmodule *module, bstring *attr, bvalue *src) } else { /* if not writable, try 'setmember' */ int type = be_module_attr(vm, module, str_literal(vm, "setmember"), vm->top); - if (type == BE_FUNCTION) { + if (basetype(type) == BE_FUNCTION) { bvalue *top = vm->top; // top[0] already has 'member' var_setstr(&top[1], attr); /* attribute name */ diff --git a/tasmota/berry/examples/denky.be b/tasmota/berry/examples/denky.be index a05a7a8bb..2b9c0c6cf 100644 --- a/tasmota/berry/examples/denky.be +++ b/tasmota/berry/examples/denky.be @@ -8,8 +8,8 @@ runcolor = nil def runcolor() - var pwr = energy.read().find('activepower',0) - print(pwr) + var pwr = energy.active_power + #print(pwr) var red = tasmota.scale_uint(int(pwr), 0, 2500, 0, 255) var green = 255 - red var channels = [red, green, 0] diff --git a/tasmota/berry/modules/ctypes.be b/tasmota/berry/modules/ctypes.be index 090d3cea0..334edc188 100644 --- a/tasmota/berry/modules/ctypes.be +++ b/tasmota/berry/modules/ctypes.be @@ -40,6 +40,10 @@ ctypes.be_u32 = -4 ctypes.be_u16 = -2 ctypes.be_u8 = -1 +# floating point +ctypes.float = 5 +ctypes.double = 10 + ctypes.bf_x = 0 # generic bitfield # bitfields (always unsigned) ctypes.bf_0 = 100 # serves as base @@ -211,13 +215,13 @@ ctypes.print_types = def () print() print("BE_EXPORT_VARIABLE extern const bclass be_class_ctypes;") print() - print("void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) {") + print("static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) {") print(" be_pushntvclass(vm, ctypes_class);") print(" be_setglobal(vm, str(ctypes_class->name));") print(" be_pop(vm, 1);") print("}") print() - print("const char * be_ctypes_instance_mappings[]; /* forward definition */") + print("static const char * be_ctypes_instance_mappings[]; /* forward definition */") print() print("// Define a sub-class of ctypes with only one member which points to the ctypes defintion") @@ -239,12 +243,12 @@ end global_classes = [] # track the list of all classes and global_mappings = [] # mapping to Berry classes, ex: lv_color -ctypes.print_classes = def () +ctypes.print_classes = def (module_name) # print mappings if size(global_mappings) > 7 raise "internal_error", "too many mappings, 7 max" end - print("const char * be_ctypes_instance_mappings[] = {") + print("static const char * be_ctypes_instance_mappings[] = {") for n:global_mappings.iter() print(string.format(" \"%s\",", n)) end @@ -259,7 +263,7 @@ ctypes.print_classes = def () end print() - print("void be_load_ctypes_definitions_lib(bvm *vm) {") + print(string.format("void be_load_ctypes_%s_definitions_lib(bvm *vm) {", module_name)) for elt:global_classes print(string.format(" ctypes_register_class(vm, &be_class_%s, &be_%s);", elt, elt)) end @@ -341,7 +345,7 @@ class structure var type_obj = map_line[0] var name = map_line[1] var bits = 0 - if size(map_line) >= 3 bits = map_line[2] end + if size(map_line) >= 3 bits = map_line[2] end if isinstance(type_obj, ctypes.structure) # nested structure @@ -366,6 +370,9 @@ class structure if type_obj > ctypes.bf_0 # bit field self.get_bitfield_closure(name, type_obj - ctypes.bf_0, mapping_idx) + elif (type_obj == ctypes.float) || (type_obj == ctypes.double) + # multi-bytes + self.get_float_closure(name, type_obj, mapping_idx) else # multi-bytes self.get_int_closure(name, type_obj, mapping_idx) @@ -438,6 +445,26 @@ class structure self.cur_offset += size_in_bytes # next offset end + def get_float_closure(name, type, instance_mapping) # can be 1/2/4 + #- abs size -# + var size_in_bytes = (type == ctypes.float) ? 4 : 8 + + self.align(size_in_bytes) # force alignment + var offset = self.cur_offset # prepare variable for capture in closure + + self.mapping[name] = [offset, 0, 0, type, instance_mapping] + + #- add closures -# + # TODO no closure yet, anyways need to rethink closures, they are too heavy + # if signed + # self.get_closures[name] = def (b, p) return b.geti(offset + p, size_in_bytes_le_be) end + # else + # self.get_closures[name] = def (b, p) return b.get(offset + p, size_in_bytes_le_be) end + # end + # self.set_closures[name] = def (b, p, v) return b.set(offset+ p, v, size_in_bytes_le_be) end + + self.cur_offset += size_in_bytes # next offset + end def get_bitfield_closure(name, size_in_bits, instance_mapping) # can be 1..32 var cur_offset = self.cur_offset # prepare variable for capture in closure diff --git a/tasmota/berry/modules/energy_ctypes.be b/tasmota/berry/modules/energy_ctypes.be new file mode 100644 index 000000000..21eb378e4 --- /dev/null +++ b/tasmota/berry/modules/energy_ctypes.be @@ -0,0 +1,157 @@ +# +# ctype buidings for Tasmota Energy driver +# +# To generate C bindings, do: +# > compile("energy_ctypes.be","file")() +# +# and copy/paste output in C format +# +import ctypes + +ctypes.print_types() + +float = ctypes.float +uint8 = ctypes.u8 +uint16 = ctypes.u16 +uint32 = ctypes.u32 +int32 = ctypes.i32 +bool = ctypes.bf_1 + +energy_struct = [ + [float, "voltage"], + [float, "voltage_2"], + [float, "voltage_3"], + [float, "current"], + [float, "current_2"], + [float, "current_3"], + [float, "active_power"], + [float, "active_power_2"], + [float, "active_power_3"], + [float, "reactive_power"], + [float, "reactive_power_2"], + [float, "reactive_power_3"], + [float, "power_factor"], + [float, "power_factor_2"], + [float, "power_factor_3"], + [float, "frequency"], + [float, "frequency_2"], + [float, "frequency_3"], +# relocate SDM630_IMPORT and SDM72_IMPEXP + [float, "export_active"], + [float, "export_active_2"], + [float, "export_active_3"], + + [float, "start_energy"], + [float, "daily"], + [float, "total"], + + [uint32, "today_delta_kwh"], + [uint32, "today_offset_kwh"], + [uint32, "today_kwh"], + [uint32, "period"], + + [uint8, "fifth_second"], + [uint8, "command_code"], + [uint8, "data_valid"], + [uint8, "data_valid_2"], + [uint8, "data_valid_3"], + + [uint8, "phase_count"], + + [bool, "voltage_common"], + [bool, "frequency_common"], + [bool, "use_overtemp"], + [bool, "today_offset_init_kwh"], + + [bool, "voltage_available"], + [bool, "current_available"], + + [bool, "type_dc"], + [bool, "power_on"], +# #ifdef USE_ENERGY_MARGIN_DETECTION + [uint16, "power_history_0"], + [uint16, "power_history_0_2"], + [uint16, "power_history_0_3"], + [uint16, "power_history_1"], + [uint16, "power_history_1_2"], + [uint16, "power_history_1_3"], + [uint16, "power_history_2"], + [uint16, "power_history_2_2"], + [uint16, "power_history_2_3"], + + [uint8, "power_steady_counter"], + + [bool, "min_power_flag"], + [bool, "max_power_flag"], + [bool, "min_voltage_flag"], + [bool, "max_voltage_flag"], + [bool, "min_current_flag"], + [bool, "max_current_flag"], + +# #ifdef USE_ENERGY_POWER_LIMIT + [uint16, "mplh_counter"], + [uint16, "mplw_counter"], + [uint8, "mplr_counter"], + [uint8, "max_energy_state"], +] +energy_struct = ctypes.structure(energy_struct, "energy_struct") + +# struct ENERGY { +# float voltage[ENERGY_MAX_PHASES]; // 123.1 V +# float current[ENERGY_MAX_PHASES]; // 123.123 A +# float active_power[ENERGY_MAX_PHASES]; // 123.1 W +# float apparent_power[ENERGY_MAX_PHASES]; // 123.1 VA +# float reactive_power[ENERGY_MAX_PHASES]; // 123.1 VAr +# float power_factor[ENERGY_MAX_PHASES]; // 0.12 +# float frequency[ENERGY_MAX_PHASES]; // 123.1 Hz +# #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) +# float import_active[ENERGY_MAX_PHASES]; // 123.123 kWh +# #endif // SDM630_IMPORT || SDM72_IMPEXP +# float export_active[ENERGY_MAX_PHASES]; // 123.123 kWh + +# float start_energy; // 12345.12345 kWh total previous +# float daily; // 123.123 kWh +# float total; // 12345.12345 kWh total energy + +# unsigned long kWhtoday_delta; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) +# unsigned long kWhtoday_offset; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily +# unsigned long kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily +# unsigned long period; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + +# uint8_t fifth_second; +# uint8_t command_code; +# uint8_t data_valid[ENERGY_MAX_PHASES]; + +# uint8_t phase_count; // Number of phases active +# bool voltage_common; // Use single voltage +# bool frequency_common; // Use single frequency +# bool use_overtemp; // Use global temperature as overtemp trigger on internal energy monitor hardware +# bool kWhtoday_offset_init; + +# bool voltage_available; // Enable if voltage is measured +# bool current_available; // Enable if current is measured + +# bool type_dc; +# bool power_on; + +# #ifdef USE_ENERGY_MARGIN_DETECTION +# uint16_t power_history[ENERGY_MAX_PHASES][3]; +# uint8_t power_steady_counter; // Allow for power on stabilization +# bool min_power_flag; +# bool max_power_flag; +# bool min_voltage_flag; +# bool max_voltage_flag; +# bool min_current_flag; +# bool max_current_flag; + +# #ifdef USE_ENERGY_POWER_LIMIT +# uint16_t mplh_counter; +# uint16_t mplw_counter; +# uint8_t mplr_counter; +# uint8_t max_energy_state; +# #endif // USE_ENERGY_POWER_LIMIT +# #endif // USE_ENERGY_MARGIN_DETECTION +# } Energy; + +# +ctypes.print_classes("energy") diff --git a/tasmota/berry/modules/lvgl_ctypes.be b/tasmota/berry/modules/lvgl_ctypes.be index 7238ad621..6941a616b 100644 --- a/tasmota/berry/modules/lvgl_ctypes.be +++ b/tasmota/berry/modules/lvgl_ctypes.be @@ -276,7 +276,7 @@ lv_draw_mask_saved = [ lv_draw_mask_saved = ctypes.structure(lv_draw_mask_saved, "lv_draw_mask_saved") # -ctypes.print_classes() +ctypes.print_classes("lvgl") # Ex: # bb = ctypes.buffer(test_t, bytes("0101020203030404FFFFFEFEFCFC8080")) diff --git a/tasmota/xdrv_52_3_berry_energy.ino b/tasmota/xdrv_52_3_berry_energy.ino deleted file mode 100644 index 35676f484..000000000 --- a/tasmota/xdrv_52_3_berry_energy.ino +++ /dev/null @@ -1,69 +0,0 @@ -/* - xdrv_52_3_berry_native.ino - Berry scripting language, native fucnctions - - Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - - -#ifdef USE_BERRY - -#ifdef USE_ENERGY_SENSOR - -#include - - -/*********************************************************************************************\ - * Native functions mapped to Berry functions - * - * import power - * - * power.read() -> map - * -\*********************************************************************************************/ -extern "C" { - // Berry: `begintransmission(address:int) -> nil` - int32_t b_nrg_read(struct bvm *vm); - int32_t b_nrg_read(struct bvm *vm) { - be_newobject(vm, "map"); - map_insert_float(vm, "total", Energy.total); - // Energy.phase_count - map_insert_float(vm, "power", Energy.active_power[0]); - map_insert_float(vm, "yesterday", (float)Settings->energy_kWhyesterday / 100000); - map_insert_float(vm, "today", Energy.daily); - map_insert_float(vm, "activepower", Energy.active_power[0]); - map_insert_float(vm, "apparentpower", Energy.active_power[0]); - map_insert_float(vm, "reactivepower", Energy.reactive_power[0]); - // map_insert_float(vm, "powerfactor", ); - map_insert_float(vm, "frequency", Energy.frequency[0]); - map_insert_float(vm, "voltage", Energy.voltage[0]); - map_insert_float(vm, "current", Energy.current[0]); - - be_pop(vm, 1); - be_return(vm); // Return - } -} - -extern "C" { - // - int32_t b_wire_energymissing(struct bvm *vm); - int32_t b_wire_energymissing(struct bvm *vm) { - be_raise(vm, "feature_error", "Energy sensor is not enabled, use '#define USE_ENERGY_SENSOR'"); - } - -} - -#endif // USE_ENERGY_SENSOR -#endif // USE_BERRY From 939ac5da3349f0cad56f6c1b3d4867de0addfacb Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 25 Sep 2021 13:19:14 +0200 Subject: [PATCH 246/317] Satisfy security police --- .../tools/scrape_supported_devices.py | 406 ------------------ 1 file changed, 406 deletions(-) delete mode 100755 lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py diff --git a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py b/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py deleted file mode 100755 index 22d2805ab..000000000 --- a/lib/lib_basic/IRremoteESP8266/IRremoteESP8266/tools/scrape_supported_devices.py +++ /dev/null @@ -1,406 +0,0 @@ -#!/usr/bin/env python3 -"""Generate SupportedProtocols.md by scraping source code files""" -import pathlib -import argparse -import subprocess -from io import StringIO -import sys -import re -import time - -CODE_URL = "https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_" - -BRAND_MODEL = re.compile(r"Brand: *(?P.+), *Model: *(?P.+)") -ENUMS = re.compile(r"enum (\w+) {(.+?)};", re.DOTALL) -ENUM_ENTRY = re.compile(r"^\s+(\w+)", re.MULTILINE) -DECODED_PROTOCOLS = re.compile(r".*(?:results->decode_type *=.*?|" - r"typeguess\s*=\s*decode_type_t::)(\w+);") -AC_FN = re.compile(r"ir_(.+)\.h") -AC_MODEL_ENUM_RE = re.compile(r"(.+)_ac_remote_model_t") -IRSEND_FN_RE = re.compile(r"IRsend\.h") -ALL_FN = re.compile(r"ir_(.+)\.(h|cpp)") - -EXCLUDED_PROTOCOLS = ["UNKNOWN", "UNUSED", "kLastDecodeType", "typeguess"] -EXCLUDED_ACS = ["Magiquest", "NEC"] - -def getgitcommittime(): - """Call git to get time of last commit - """ - try: - label = subprocess.check_output(\ - ["git", "show", "-s", "--format=%ct", "HEAD"]).strip() - return int(label) - except FileNotFoundError as err: - print("Git failed, which is ok, no git binary found?:", err) - return None - except subprocess.SubprocessError as err: - print("Git failed, which is ok, see output, maybe no git checkout?:", err) - return None - -def getmarkdownheader(): - """Get the generated header - """ - srctime = getgitcommittime() - return """""".format( - time.strftime("%a %d %b %Y %H:%M:%S +0000", time.gmtime(srctime))) - - -def getallprotocols(): - """Return all protocls configured in IRremoteESP8266.h - """ - irremote = ARGS.directory / "IRremoteESP8266.h" - enums = getenums(irremote)["decode_type_t"] - if not enums: - errorexit("Error getting ENUMS from IRremoteESP8266.h") - return enums - - -def getdecodedprotocols(): - """All protocols that include decoding support""" - ret = set() - for path in ARGS.directory.iterdir(): - if path.suffix != ".cpp": - continue - matches = DECODED_PROTOCOLS.finditer(path.open(encoding="utf-8").read()) - for match in matches: - protocol = match.group(1) - if protocol not in EXCLUDED_PROTOCOLS: - ret.add(protocol) - return ret - - -def getallacs(): - """All supported A/C codes""" - ret = {} - for path in ARGS.directory.iterdir(): - match = AC_FN.match(path.name) - if match: - acprotocol = match.group(1) - rawmodels = getenums(path) - models = set() - for model in rawmodels: - model = model.upper() - model = model.replace("K{}".format(acprotocol.upper()), "") - if model and model not in EXCLUDED_PROTOCOLS: - models.add(model) - if acprotocol in ret: - ret[acprotocol].update(models) - else: - ret[acprotocol] = models - # Parse IRsend.h's enums - match = IRSEND_FN_RE.match(path.name) - if match: - rawmodels = getenums(path) - for acprotocol, acmodels in rawmodels.items(): - models = set() - for model in acmodels: - model = model.upper() - model = model.replace("K{}".format(acprotocol.upper()), "") - if model and model not in EXCLUDED_PROTOCOLS: - models.add(model) - if acprotocol in ret: - ret[acprotocol].update(models) - else: - ret[acprotocol] = models - return ret - -class FnSets(): - """Container for getalldevices""" - def __init__(self): - self.allcodes = {} - self.fnnomatch = set() - self.allhfileprotos = set() - self.fnhmatch = set() - self.fncppmatch = set() - - def add(self, supports, path): - """add the path to correct set based on supports""" - if path.suffix == ".h": - self.allhfileprotos.add(path.stem) - if supports: - if path.suffix == ".h": - self.fnhmatch.add(path.stem) - elif path.suffix == ".cpp": - self.fncppmatch.add(path.stem) - else: - self.fnnomatch.add(path.stem) - - def printwarnings(self): - """print warnings""" - # all protos with support in .cpp file, when there is a .h file - # meaning that the documentation should probably be moved to .h - # in the future, with doxygen, that might change - protosincppwithh = list(self.fncppmatch & self.allhfileprotos) - if protosincppwithh: - protosincppwithh.sort() - print("The following files has supports section in .cpp, expected in .h") - for path in protosincppwithh: - print("\t{}".format(path)) - - protosincppandh = list(self.fncppmatch & self.fnhmatch) - if protosincppandh: - protosincppandh.sort() - print("The following files has supports section in both .h and .cpp") - for path in protosincppandh: - print("\t{}".format(path)) - - nosupports = self.getnosupports() - if nosupports: - nosupports.sort() - print("The following files had no supports section:") - for path in nosupports: - print("\t{}".format(path)) - - return protosincppwithh or protosincppandh or nosupports - - def getnosupports(self): - """get protos without supports sections""" - return list(self.fnnomatch - self.fnhmatch - self.fncppmatch) - - -def getalldevices(): - """All devices and associated branding and model information (if available) - """ - sets = FnSets() - for path in ARGS.directory.iterdir(): - match = ALL_FN.match(path.name) - if not match: - continue - supports = extractsupports(path) - sets.add(supports, path) - protocol = match.group(1) - for brand, model in supports: - protocolbrand = (protocol, brand) - pbset = sets.allcodes.get(protocolbrand, []) - if model in pbset: - print("Model %s is duplicated for %s, %s" % (model, protocol, brand)) - sets.allcodes[protocolbrand] = pbset + [model] - - for fnprotocol in sets.getnosupports(): - sets.allcodes[(fnprotocol[3:], "Unknown")] = [] - return sets - - -def getenums(path): - """Returns the keys for the first enum type in path - """ - ret = {} - for enums in ENUMS.finditer(path.open(encoding="utf-8").read()): - if enums: - enum_name = AC_MODEL_ENUM_RE.search(enums.group(1)) - if enum_name: - enum_name = enum_name.group(1).capitalize() - else: - enum_name = enums.group(1) - ret[enum_name] = set() - for enum in ENUM_ENTRY.finditer(enums.group(2)): - enum = enum.group(1) - if enum in EXCLUDED_PROTOCOLS: - continue - ret[enum_name].add(enum) - return ret - - -ARGS = None - - -def initargs(): - """Init the command line arguments""" - global ARGS # pylint: disable=global-statement - parser = argparse.ArgumentParser() - parser.add_argument( - "-n", - "--noout", - help="generate no output data, combine with --alert to only check", - action="store_true", - ) - parser.add_argument( - "-s", - "--stdout", - help="output to stdout rather than SupportedProtocols.md", - action="store_true", - ) - parser.add_argument("-v", - "--verbose", - help="increase output verbosity", - action="store_true") - parser.add_argument( - "-a", - "--alert", - help="alert if a file does not have a supports section, " - "non zero exit code if issues where found", - action="store_true", - ) - parser.add_argument( - "directory", - nargs="?", - help="directory of the source git checkout", - default=None, - ) - ARGS = parser.parse_args() - if ARGS.directory is None: - src = pathlib.Path("../src") - if not src.is_dir(): - src = pathlib.Path("./src") - else: - src = pathlib.Path(ARGS.directory) / "src" - if not src.is_dir(): - errorexit("Directory not valid: {}".format(str(src))) - ARGS.directory = src - return ARGS - -def getmdfile(): - """Resolves SupportedProtocols.md path""" - foutpath = ARGS.directory / "../SupportedProtocols.md" - return foutpath.resolve() - -def errorexit(msg): - """Print an error and exit on critical error""" - sys.stderr.write("{}\n".format(msg)) - sys.exit(1) - - -def extractsupports(path): - """Extract all of the Supports: sections and associated brands and models - """ - supports = [] - insupports = False - for line in path.open(encoding="utf-8"): - if not line.startswith("//"): - continue - line = line[2:].strip() - if line == "Supports:": - insupports = True - continue - if insupports: - match = BRAND_MODEL.match(line) - if match: - supports.append((match.group("brand"), match.group("model"))) - else: - insupports = False - continue - # search and inform about any legacy formated supports data - elif any(x in line for x in [ \ - "seems compatible with", - "be compatible with", - "it working with here"]): - print("\t%s Legacy supports format found\n\t\t%s" % (path.name, line)) - return supports - - -def makeurl(txt, path): - """Make a Markup URL from given filename""" - return "[{}]({})".format(txt, CODE_URL + path) - - -def outputprotocols(fout, protocols): - """For a given protocol set, sort and output the markdown""" - protocols = list(protocols) - protocols.sort() - for protocol in protocols: - fout.write("- {}\n".format(protocol)) - - -def generate(fout): - """Generate data to fout - return True on any issues (when alert is active)""" - decodedprotocols = getdecodedprotocols() - sendonly = getallprotocols() - decodedprotocols - allacs = getallacs() - - sets = getalldevices() - allcodes = sets.allcodes - allbrands = list(allcodes.keys()) - allbrands.sort() - - fout.write("\n# IR Protocols supported by this library\n\n") - fout.write( - "| Protocol | Brand | Model | A/C Model | Detailed A/C Support |\n") - fout.write("| --- | --- | --- | --- | --- |\n") - - for protocolbrand in allbrands: - protocol, brand = protocolbrand - codes = allcodes[protocolbrand] - codes.sort() - acmodels = [] - acsupport = "-" - if protocol in allacs: - acmodels = list(allacs[protocol]) - acmodels.sort() - brand = makeurl(brand, protocol + ".h") - if protocol not in EXCLUDED_ACS: - acsupport = "Yes" - - fout.write("| {} | **{}** | {} | {} | {} |\n".format( - makeurl(protocol, protocol + ".cpp"), - brand, - "
    ".join(codes).replace("|", "\\|"), - "
    ".join(acmodels), - acsupport, - )) - - fout.write("\n\n## Send only protocols:\n\n") - outputprotocols(fout, sendonly) - - fout.write("\n\n## Send & decodable protocols:\n\n") - outputprotocols(fout, decodedprotocols) - - return ARGS.alert and sets.printwarnings() - -def generatenone(): - """No out write - return True on any issues""" - return generate(StringIO()) - -def generatestdout(): - """Standard out write - return True on any issues""" - fout = sys.stdout - fout.write(getmarkdownheader()) - return generate(fout) - -def generatefile(): - """File write, extra detection of changes in existing file - return True on any issues, but only if there is changes""" - # get file path - foutpath = getmdfile() - if ARGS.verbose: - print("Output path: {}".format(str(foutpath))) - # write data to temp memorystream - ftemp = StringIO() - ret = generate(ftemp) - # get old filedata, skipping header - with getmdfile().open("r", encoding="utf-8") as forg: - olddata = forg.readlines()[3:] - # get new data, skip first empty line - ftemp.seek(0) - newdata = ftemp.readlines()[1:] - # if new data is same as old we don't need to write anything - if newdata == olddata: - print("No changes, exit without write") - return False - # write output - with foutpath.open("w", encoding="utf-8") as fout: - fout.write(getmarkdownheader()) - fout.write(ftemp.getvalue()) - - return ret - -def main(): - """Default main function - return True on any issues""" - initargs() - if ARGS.verbose: - print("Looking for files in: {}".format(str(ARGS.directory.resolve()))) - if ARGS.noout: - return generatenone() - if ARGS.stdout: - return generatestdout() - # default file - return generatefile() - - -if __name__ == "__main__": - sys.exit(1 if main() else 0) From 1a53f9a757c0edd5768c3bf007a6d805abaab4a0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 25 Sep 2021 13:47:01 +0200 Subject: [PATCH 247/317] Default enable EQ3 in ESP32 bluetooth image Default enable EQ3 in ESP32 bluetooth image (#13103) --- tasmota/tasmota_configurations_ESP32.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index 0912d4785..e8266e7e2 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -172,6 +172,7 @@ #define USE_ADC #undef USE_BERRY // Disable Berry scripting language #define USE_BLE_ESP32 // Enable new BLE driver +#define USE_EQ3_ESP32 #define USE_MI_ESP32 // (ESP32 only) Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #endif // FIRMWARE_BLUETOOTH From 7c8d966206487799b390b6beccc31e2cca776dbd Mon Sep 17 00:00:00 2001 From: Barbudor Date: Sat, 25 Sep 2021 17:20:36 +0000 Subject: [PATCH 248/317] easier to disable PID_USE_TIMPROP --- tasmota/tasmota_globals.h | 2 +- tasmota/xdrv_48_timeprop.ino | 9 ++++----- tasmota/xdrv_49_pid.ino | 25 +++++++++++++++---------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/tasmota/tasmota_globals.h b/tasmota/tasmota_globals.h index 52cd5b39f..44342081b 100644 --- a/tasmota/tasmota_globals.h +++ b/tasmota/tasmota_globals.h @@ -160,7 +160,7 @@ String EthernetMacAddress(void); * Fallback parameters \*********************************************************************************************/ -#ifdef USE_PID +#if defined(USE_PID) && (!defined(PID_USE_TIMPROP) || (PID_USE_TIMPROP > 0)) #define USE_TIMEPROP #endif // See https://github.com/esp8266/Arduino/pull/4889 diff --git a/tasmota/xdrv_48_timeprop.ino b/tasmota/xdrv_48_timeprop.ino index 68b1696e0..934501079 100644 --- a/tasmota/xdrv_48_timeprop.ino +++ b/tasmota/xdrv_48_timeprop.ino @@ -93,11 +93,6 @@ enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; -static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; -static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; -static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay - - #ifndef TIMEPROP_NUM_OUTPUTS #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) #endif @@ -120,6 +115,10 @@ static long currentRelayStates = 0; // current actual relay states. Bit 0 first #define TIMEPROP_RELAYS 1 // which relay to control 1:8 #endif +static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; +static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; +static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay + struct { Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; int relay_nos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; diff --git a/tasmota/xdrv_49_pid.ino b/tasmota/xdrv_49_pid.ino index f54003bac..581016470 100644 --- a/tasmota/xdrv_49_pid.ino +++ b/tasmota/xdrv_49_pid.ino @@ -103,20 +103,21 @@ #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the // process, set this to indicate which timeprop output to use. For a device // with just one relay then this will be 1. - // It is then also necessary to define USE_TIMEPROP and set the output up as - // explained in xdrv_49_timeprop.ino - // To disable this feature leave this undefined (undefined, not defined to nothing). + // USE_TIMEPROP will be automativally included. You must set the output as + // explained in xdrv_48_timeprop.ino + // To disable, override to false in user_config_override.h. If USE_TIMEPROP is + // not explicitly defined, then it will not be added by default. #define PID_USE_LOCAL_SENSOR // If defined then the local sensor will be used for pv. Leave undefined if // this is not required. The rate that the sensor is read is defined by TELE_PERIOD // If not using the sensor then you can supply process values via MQTT using // cmnd PidPv - #define PID_SHUTTER 1 // if using the PID to control a 3-way valve, create Tasmota Shutter and define the + #define PID_SHUTTER 1 // if using the PID to control a 3-way valve, create Tasmota Shutter and define the // number of the shutter here. Otherwise leave this commented out - #define PID_REPORT_MORE_SETTINGS // If defined, the SENSOR output will provide more extensive json - // output in the PID section + #define PID_REPORT_MORE_SETTINGS true // If defined to true, the SENSOR output will provide more extensive json + // output in the PID section. Override to false to reduce json output * Help with using the PID algorithm and with loop tuning can be found at * http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html @@ -155,10 +156,14 @@ #define PID_UPDATE_SECS 0 // [PidUpdateSecs] How often to run the pid algorithm #endif -#define PID_USE_TIMPROP 1 // To disable this feature leave this undefined +#ifndef PID_USE_TIMPROP +#define PID_USE_TIMPROP 1 // To disable this feature define as false in user_config_override +#endif //#define PID_USE_LOCAL_SENSOR // [PidPv] If defined then the local sensor will be used for pv. //#define PID_SHUTTER 1 // Number of the shutter here. Otherwise leave this commented out -#define PID_REPORT_MORE_SETTINGS // If defined, the SENSOR output will provide more extensive json +#ifndef PID_REPORT_MORE_SETTINGS +#define PID_REPORT_MORE_SETTINGS true // Override to false if less details are required in SENSOR JSON +#endif #include "PID.h" @@ -342,7 +347,7 @@ void PIDShowValues(void) { dtostrfd(d_buf, 2, str_buf); ResponseAppend_P(PSTR("\"PidSp\":%s,"), str_buf); -#ifdef PID_REPORT_MORE_SETTINGS +#if PID_REPORT_MORE_SETTINGS // #define D_CMND_PID_SETPROPBAND "Pb" d_buf = Pid.pid.getPb(); dtostrfd(d_buf, 2, str_buf); @@ -403,7 +408,7 @@ void PIDRun(void) { ShutterSetPosition(PID_SHUTTER, pos); #endif //PID_SHUTTER -#if defined PID_USE_TIMPROP +#if defined(PID_USE_TIMPROP) && (PID_USE_TIMPROP > 0) // send power to appropriate timeprop output TimepropSetPower( PID_USE_TIMPROP-1, power ); #endif // PID_USE_TIMPROP From 7e93d5c370b15182445ae5cdee0bd69f691fd4dc Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 27 Sep 2021 12:13:11 +0200 Subject: [PATCH 249/317] Berry fix flip --- lib/libesp32/Berry/src/be_vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libesp32/Berry/src/be_vm.c b/lib/libesp32/Berry/src/be_vm.c index 81004bbba..cbf9b3856 100644 --- a/lib/libesp32/Berry/src/be_vm.c +++ b/lib/libesp32/Berry/src/be_vm.c @@ -743,7 +743,7 @@ newframe: /* a new call frame */ opcase(FLIP): { bvalue *dst = RA(), *a = RKB(); if (var_isint(a)) { - var_setint(dst, -a->v.i); + var_setint(dst, ~a->v.i); } else if (var_isinstance(a)) { ins_unop(vm, "~", *RKB()); reg = vm->reg; From 735aea937aa9358acea9384ecae163837f3a4172 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 27 Sep 2021 12:53:28 +0200 Subject: [PATCH 250/317] Berry ctypes accepts `bool` as parameter --- lib/libesp32/Berry/src/be_baselib.c | 2 + lib/libesp32/Berry/src/be_byteslib.c | 161 ++++++++++++++------------- 2 files changed, 85 insertions(+), 78 deletions(-) diff --git a/lib/libesp32/Berry/src/be_baselib.c b/lib/libesp32/Berry/src/be_baselib.c index 3ae2a80ca..f80b321b1 100644 --- a/lib/libesp32/Berry/src/be_baselib.c +++ b/lib/libesp32/Berry/src/be_baselib.c @@ -231,6 +231,8 @@ static int l_int(bvm *vm) be_pushint(vm, (bint)be_toreal(vm, 1)); } else if (be_isint(vm, 1)) { be_pushvalue(vm, 1); + } else if (be_isbool(vm, 1)) { + be_pushint(vm, be_tobool(vm, 1) ? 1 : 0); } else if (be_iscomptr(vm, 1)) { be_pushint(vm, (int) be_tocomptr(vm, 1)); } else { diff --git a/lib/libesp32/Berry/src/be_byteslib.c b/lib/libesp32/Berry/src/be_byteslib.c index 3a219d2ea..ecc665c31 100644 --- a/lib/libesp32/Berry/src/be_byteslib.c +++ b/lib/libesp32/Berry/src/be_byteslib.c @@ -1207,6 +1207,7 @@ class Bytes : bytes def setbits(offset_bits, len_bits, val) if len_bits < 0 || len_bits > 32 raise "value_error", "length in bits must be between 0 and 32" end + val = int(val) #- convert bool or others to int -# var offset_bytes = offset_bits >> 3 offset_bits = offset_bits % 8 @@ -1244,47 +1245,47 @@ be_local_closure(getbits, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - { { .i=0 }, BE_INT}, - { { .s=be_nested_const_str("value_error", 773297791, 11) }, BE_STRING}, - { { .s=be_nested_const_str("length in bits must be between 0 and 32", -1710458168, 39) }, BE_STRING}, - { { .i=3 }, BE_INT}, - { { .i=1 }, BE_INT}, + /* K0 */ be_const_int(0), + /* K1 */ be_nested_string("value_error", 773297791, 11), + /* K2 */ be_nested_string("length in bits must be between 0 and 32", -1710458168, 39), + /* K3 */ be_const_int(3), + /* K4 */ be_const_int(1), }), (be_nested_const_str("getbits", -1200798317, 7)), - (be_nested_const_str("stdin", -1529146723, 5)), + (be_nested_const_str("input", -103256197, 5)), ( &(const binstruction[32]) { /* code */ - 0x180C0500, // 0000 LE R3 R2 R256 - 0x740E0002, // 0001 JMPT R3 #0005 - 0x540E001F, // 0002 LDINT R3 32 - 0x240C0403, // 0003 GT R3 R2 R3 - 0x780E0000, // 0004 JMPF R3 #0006 - 0xB0060302, // 0005 RAISE 1 R257 R258 - 0x580C0000, // 0006 LDCONST R3 K0 - 0x3C100303, // 0007 SHR R4 R1 R259 - 0x54160007, // 0008 LDINT R5 8 - 0x10040205, // 0009 MOD R1 R1 R5 - 0x58140000, // 000A LDCONST R5 K0 - 0x24180500, // 000B GT R6 R2 R256 - 0x781A0011, // 000C JMPF R6 #001F - 0x541A0007, // 000D LDINT R6 8 - 0x04180C01, // 000E SUB R6 R6 R1 - 0x241C0C02, // 000F GT R7 R6 R2 - 0x781E0000, // 0010 JMPF R7 #0012 - 0x5C180400, // 0011 MOVE R6 R2 - 0x381E0806, // 0012 SHL R7 R260 R6 - 0x041C0F04, // 0013 SUB R7 R7 R260 - 0x381C0E01, // 0014 SHL R7 R7 R1 - 0x94200004, // 0015 GETIDX R8 R0 R4 - 0x2C201007, // 0016 AND R8 R8 R7 - 0x3C201001, // 0017 SHR R8 R8 R1 - 0x38201005, // 0018 SHL R8 R8 R5 - 0x300C0608, // 0019 OR R3 R3 R8 - 0x00140A06, // 001A ADD R5 R5 R6 - 0x04080406, // 001B SUB R2 R2 R6 - 0x58040000, // 001C LDCONST R1 K0 - 0x00100904, // 001D ADD R4 R4 R260 - 0x7001FFEB, // 001E JMP #000B - 0x80040600, // 001F RET 1 R3 + 0x180C0500, // 0000 LE R3 R2 K0 + 0x740E0002, // 0001 JMPT R3 #0005 + 0x540E001F, // 0002 LDINT R3 32 + 0x240C0403, // 0003 GT R3 R2 R3 + 0x780E0000, // 0004 JMPF R3 #0006 + 0xB0060302, // 0005 RAISE 1 K1 K2 + 0x580C0000, // 0006 LDCONST R3 K0 + 0x3C100303, // 0007 SHR R4 R1 K3 + 0x54160007, // 0008 LDINT R5 8 + 0x10040205, // 0009 MOD R1 R1 R5 + 0x58140000, // 000A LDCONST R5 K0 + 0x24180500, // 000B GT R6 R2 K0 + 0x781A0011, // 000C JMPF R6 #001F + 0x541A0007, // 000D LDINT R6 8 + 0x04180C01, // 000E SUB R6 R6 R1 + 0x241C0C02, // 000F GT R7 R6 R2 + 0x781E0000, // 0010 JMPF R7 #0012 + 0x5C180400, // 0011 MOVE R6 R2 + 0x381E0806, // 0012 SHL R7 K4 R6 + 0x041C0F04, // 0013 SUB R7 R7 K4 + 0x381C0E01, // 0014 SHL R7 R7 R1 + 0x94200004, // 0015 GETIDX R8 R0 R4 + 0x2C201007, // 0016 AND R8 R8 R7 + 0x3C201001, // 0017 SHR R8 R8 R1 + 0x38201005, // 0018 SHL R8 R8 R5 + 0x300C0608, // 0019 OR R3 R3 R8 + 0x00140A06, // 001A ADD R5 R5 R6 + 0x04080406, // 001B SUB R2 R2 R6 + 0x58040000, // 001C LDCONST R1 K0 + 0x00100904, // 001D ADD R4 R4 K4 + 0x7001FFEB, // 001E JMP #000B + 0x80040600, // 001F RET 1 R3 }) ) ); @@ -1304,48 +1305,52 @@ be_local_closure(setbits, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 5]) { /* constants */ - { { .i=0 }, BE_INT}, - { { .s=be_nested_const_str("value_error", 773297791, 11) }, BE_STRING}, - { { .s=be_nested_const_str("length in bits must be between 0 and 32", -1710458168, 39) }, BE_STRING}, - { { .i=3 }, BE_INT}, - { { .i=1 }, BE_INT}, + /* K0 */ be_const_int(0), + /* K1 */ be_nested_string("value_error", 773297791, 11), + /* K2 */ be_nested_string("length in bits must be between 0 and 32", -1710458168, 39), + /* K3 */ be_const_int(3), + /* K4 */ be_const_int(1), }), (be_nested_const_str("setbits", -1532559129, 7)), - (be_nested_const_str("stdin", -1529146723, 5)), - ( &(const binstruction[33]) { /* code */ - 0x14100500, // 0000 LT R4 R2 R256 - 0x74120002, // 0001 JMPT R4 #0005 - 0x5412001F, // 0002 LDINT R4 32 - 0x24100404, // 0003 GT R4 R2 R4 - 0x78120000, // 0004 JMPF R4 #0006 - 0xB0060302, // 0005 RAISE 1 R257 R258 - 0x3C100303, // 0006 SHR R4 R1 R259 - 0x54160007, // 0007 LDINT R5 8 - 0x10040205, // 0008 MOD R1 R1 R5 - 0x24140500, // 0009 GT R5 R2 R256 - 0x78160014, // 000A JMPF R5 #0020 - 0x54160007, // 000B LDINT R5 8 - 0x04140A01, // 000C SUB R5 R5 R1 - 0x24180A02, // 000D GT R6 R5 R2 - 0x781A0000, // 000E JMPF R6 #0010 - 0x5C140400, // 000F MOVE R5 R2 - 0x381A0805, // 0010 SHL R6 R260 R5 - 0x04180D04, // 0011 SUB R6 R6 R260 - 0x541E00FE, // 0012 LDINT R7 255 - 0x38200C01, // 0013 SHL R8 R6 R1 - 0x041C0E08, // 0014 SUB R7 R7 R8 - 0x94200004, // 0015 GETIDX R8 R0 R4 - 0x2C201007, // 0016 AND R8 R8 R7 - 0x2C240606, // 0017 AND R9 R3 R6 - 0x38241201, // 0018 SHL R9 R9 R1 - 0x30201009, // 0019 OR R8 R8 R9 - 0x98000808, // 001A SETIDX R0 R4 R8 - 0x3C0C0605, // 001B SHR R3 R3 R5 - 0x04080405, // 001C SUB R2 R2 R5 - 0x58040000, // 001D LDCONST R1 K0 - 0x00100904, // 001E ADD R4 R4 R260 - 0x7001FFE8, // 001F JMP #0009 - 0x80040000, // 0020 RET 1 R0 + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[37]) { /* code */ + 0x14100500, // 0000 LT R4 R2 K0 + 0x74120002, // 0001 JMPT R4 #0005 + 0x5412001F, // 0002 LDINT R4 32 + 0x24100404, // 0003 GT R4 R2 R4 + 0x78120000, // 0004 JMPF R4 #0006 + 0xB0060302, // 0005 RAISE 1 K1 K2 + 0x60100009, // 0006 GETGBL R4 G9 + 0x5C140600, // 0007 MOVE R5 R3 + 0x7C100200, // 0008 CALL R4 1 + 0x5C0C0800, // 0009 MOVE R3 R4 + 0x3C100303, // 000A SHR R4 R1 K3 + 0x54160007, // 000B LDINT R5 8 + 0x10040205, // 000C MOD R1 R1 R5 + 0x24140500, // 000D GT R5 R2 K0 + 0x78160014, // 000E JMPF R5 #0024 + 0x54160007, // 000F LDINT R5 8 + 0x04140A01, // 0010 SUB R5 R5 R1 + 0x24180A02, // 0011 GT R6 R5 R2 + 0x781A0000, // 0012 JMPF R6 #0014 + 0x5C140400, // 0013 MOVE R5 R2 + 0x381A0805, // 0014 SHL R6 K4 R5 + 0x04180D04, // 0015 SUB R6 R6 K4 + 0x541E00FE, // 0016 LDINT R7 255 + 0x38200C01, // 0017 SHL R8 R6 R1 + 0x041C0E08, // 0018 SUB R7 R7 R8 + 0x94200004, // 0019 GETIDX R8 R0 R4 + 0x2C201007, // 001A AND R8 R8 R7 + 0x2C240606, // 001B AND R9 R3 R6 + 0x38241201, // 001C SHL R9 R9 R1 + 0x30201009, // 001D OR R8 R8 R9 + 0x98000808, // 001E SETIDX R0 R4 R8 + 0x3C0C0605, // 001F SHR R3 R3 R5 + 0x04080405, // 0020 SUB R2 R2 R5 + 0x58040000, // 0021 LDCONST R1 K0 + 0x00100904, // 0022 ADD R4 R4 K4 + 0x7001FFE8, // 0023 JMP #000D + 0x80040000, // 0024 RET 1 R0 }) ) ); From e5be88ad15427f9a0ee31f4bb15a1434b9c52f79 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Mon, 27 Sep 2021 13:39:12 +0200 Subject: [PATCH 251/317] Berry print stack trace when exception, more detailed with line numbers if `#define USE_BERRY_DEBUG` --- CHANGELOG.md | 1 + lib/libesp32/Berry/default/berry_conf.h | 6 ++++++ tasmota/my_user_config.h | 1 + tasmota/xdrv_52_9_berry.ino | 3 +++ 4 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d5af56bc..daad6c405 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file. - Support for Sensirion SCD40/SCD41 CO2 sensor (#13139) - Support for BL0939 energy monitor as used in ESP32 based Sonoff Dual R3 V2 Pow (#13195) - Command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests (#13209) +- Berry print stack trace when exception, more detailed with line numbers if `#define USE_BERRY_DEBUG` ### Changed - M5 Stack Core2 uses UNIVERSAL_DISPLAY with enabled LVGL as default now diff --git a/lib/libesp32/Berry/default/berry_conf.h b/lib/libesp32/Berry/default/berry_conf.h index 6f0f4a807..2514013b9 100644 --- a/lib/libesp32/Berry/default/berry_conf.h +++ b/lib/libesp32/Berry/default/berry_conf.h @@ -216,4 +216,10 @@ extern "C" { **/ #define be_assert(expr) assert(expr) +/* Tasmota debug specific */ +#ifdef USE_BERRY_DEBUG + #undef BE_DEBUG_RUNTIME_INFO + #define BE_DEBUG_RUNTIME_INFO 2 /* record line information in 16 bits */ +#endif // USE_BERRY_DEBUG + #endif diff --git a/tasmota/my_user_config.h b/tasmota/my_user_config.h index 956913606..e0ac83ae7 100644 --- a/tasmota/my_user_config.h +++ b/tasmota/my_user_config.h @@ -982,6 +982,7 @@ #define USE_BERRY // Enable Berry scripting language #define USE_BERRY_PSRAM // Allocate Berry memory in PSRAM if PSRAM is connected - this might be slightly slower but leaves main memory intact + // #define USE_BERRY_DEBUG // Compile Berry bytecode with line number information, makes exceptions easier to debug. Adds +8% of memory consumption for compiled code #define USE_WEBCLIENT // Enable `webclient` to make HTTP/HTTPS requests. Can be disabled for security reasons. // #define USE_WEBCLIENT_HTTPS // Enable HTTPS outgoing requests based on BearSSL (much ligher then mbedTLS, 42KB vs 150KB) in insecure mode (no verification of server's certificate) // Note that only one cipher is enabled: ECDHE_RSA_WITH_AES_128_GCM_SHA256 which is very commonly used and highly secure diff --git a/tasmota/xdrv_52_9_berry.ino b/tasmota/xdrv_52_9_berry.ino index 36d006618..c3ec98c21 100644 --- a/tasmota/xdrv_52_9_berry.ino +++ b/tasmota/xdrv_52_9_berry.ino @@ -27,6 +27,7 @@ extern "C" { extern void be_load_custom_libs(bvm *vm); + extern void be_tracestack(bvm *vm); } const char kBrCommands[] PROGMEM = D_PRFX_BR "|" // prefix @@ -115,6 +116,8 @@ void BerryDumpErrorAndClear(bvm *vm, bool berry_console) { if (top >= 2 && be_isstring(vm, -1) && be_isstring(vm, -2)) { if (berry_console) { berry_log_C(PSTR(D_LOG_BERRY "Exception> '%s' - %s"), be_tostring(berry.vm, -2), be_tostring(berry.vm, -1)); + be_tracestack(vm); + top = be_top(vm); // update top after dump } else { AddLog(LOG_LEVEL_ERROR, PSTR(D_LOG_BERRY "Exception> '%s' - %s"), be_tostring(berry.vm, -2), be_tostring(berry.vm, -1)); } From 2455d4bfecc9be17a43074ba3fafae4fcadd9be7 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 27 Sep 2021 14:31:16 +0200 Subject: [PATCH 252/317] Prep energy total by phase --- tasmota/settings.h | 54 ++++++++++++++++++++++----------------- tasmota/settings.ino | 8 ++++++ tasmota/tasmota_version.h | 2 +- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/tasmota/settings.h b/tasmota/settings.h index a2d6dfefe..ee83f44d3 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -441,8 +441,8 @@ const uint8_t MAX_TUYA_FUNCTIONS = 16; typedef struct { uint16_t cfg_holder; // 000 v6 header uint16_t cfg_size; // 002 - unsigned long save_flag; // 004 - unsigned long version; // 008 + uint32_t save_flag; // 004 + uint32_t version; // 008 uint16_t bootcount; // 00C uint16_t cfg_crc; // 00E SOBitfield flag; // 010 @@ -483,19 +483,22 @@ typedef struct { int16_t toffset[2]; // 30E uint8_t display_font; // 312 DisplayOptions display_options; // 313 + uint32_t energy_kWhtoday_ph[3]; // 314 + uint32_t energy_kWhyesterday_ph[3]; // 320 + uint32_t energy_kWhtotal_ph[3]; // 32C - uint8_t free_314[43]; // 314 + uint8_t free_338[7]; // 338 uint8_t tuyamcu_topic; // 33F Manage tuyaSend topic. ex_energy_power_delta on 6.6.0.20, replaced on 8.5.0.1 uint16_t domoticz_update_timer; // 340 uint16_t pwm_range; // 342 - unsigned long domoticz_relay_idx[MAX_DOMOTICZ_IDX]; // 344 - unsigned long domoticz_key_idx[MAX_DOMOTICZ_IDX]; // 354 - unsigned long energy_power_calibration; // 364 - unsigned long energy_voltage_calibration; // 368 - unsigned long energy_current_calibration; // 36C - unsigned long energy_kWhtoday; // 370 - unsigned long energy_kWhyesterday; // 374 + uint32_t domoticz_relay_idx[MAX_DOMOTICZ_IDX]; // 344 + uint32_t domoticz_key_idx[MAX_DOMOTICZ_IDX]; // 354 + uint32_t energy_power_calibration; // 364 + uint32_t energy_voltage_calibration; // 368 + uint32_t energy_current_calibration; // 36C + uint32_t energy_kWhtoday; // 370 + uint32_t energy_kWhyesterday; // 374 uint16_t energy_kWhdoy; // 378 uint16_t energy_min_power; // 37A uint16_t energy_max_power; // 37C @@ -603,7 +606,7 @@ typedef struct { uint8_t free_560[92]; // 560 SysMBitfield1 flag2; // 5BC - unsigned long pulse_counter[MAX_COUNTERS]; // 5C0 + uint32_t pulse_counter[MAX_COUNTERS]; // 5C0 uint16_t pulse_counter_type; // 5D0 uint16_t pulse_counter_debounce; // 5D2 uint8_t rf_code[17][9]; // 5D4 @@ -643,12 +646,12 @@ typedef struct { EnergyUsage energy_usage; // 77C uint32_t sensors[2][4]; // 794 Disable individual (0) sensor drivers / (1) GUI sensor output uint32_t energy_kWhtotal_time; // 7B4 - unsigned long weight_item; // 7B8 Weight of one item in gram * 10 + uint32_t weight_item; // 7B8 Weight of one item in gram * 10 uint16_t ledmask; // 7BC uint16_t weight_max; // 7BE Total max weight in kilogram - unsigned long weight_reference; // 7C0 Reference weight in gram - unsigned long weight_calibration; // 7C4 - unsigned long energy_frequency_calibration; // 7C8 Also used by HX711 to save last weight + uint32_t weight_reference; // 7C0 Reference weight in gram + uint32_t weight_calibration; // 7C4 + uint32_t energy_frequency_calibration; // 7C8 Also used by HX711 to save last weight uint16_t web_refresh; // 7CC char script_pram[5][10]; // 7CE char rules[MAX_RULE_SETS][MAX_RULE_SIZE]; // 800 Uses 512 bytes in v5.12.0m, 3 x 512 bytes in v5.14.0b @@ -735,7 +738,7 @@ typedef struct { // Only 32 bit boundary variables below - unsigned long energy_kWhtotal; // F9C + uint32_t energy_kWhtotal; // F9C SBitfield1 sbflag1; // FA0 TeleinfoCfg teleinfo; // FA4 uint64_t rf_protocol_mask; // FA8 @@ -771,19 +774,22 @@ typedef struct { uint16_t valid; // 290 (RTC memory offset 100) uint8_t oswatch_blocked_loop; // 292 uint8_t ota_loader; // 293 - unsigned long energy_kWhtoday; // 294 - unsigned long energy_kWhtotal; // 298 - volatile unsigned long pulse_counter[MAX_COUNTERS]; // 29C - See #9521 why volatile + uint32_t energy_kWhtoday; // 294 + uint32_t energy_kWhtotal; // 298 + volatile uint32_t pulse_counter[MAX_COUNTERS]; // 29C - See #9521 why volatile power_t power; // 2AC EnergyUsage energy_usage; // 2B0 - unsigned long nextwakeup; // 2C8 + uint32_t nextwakeup; // 2C8 uint32_t baudrate; // 2CC uint32_t ultradeepsleep; // 2D0 uint16_t deepsleep_slip; // 2D4 - uint8_t free_2d6[22]; // 2D6 + uint8_t free_2d6[2]; // 2D6 - // 2EC - 2FF free locations + uint32_t energy_kWhtoday_ph[3]; // 2D8 + uint32_t energy_kWhtotal_ph[3]; // 2E4 + + // 2F0 - 2FF free locations } TRtcSettings; TRtcSettings RtcSettings; #ifdef ESP32 @@ -800,8 +806,8 @@ struct TIME_T { char name_of_month[4]; uint16_t day_of_year; uint16_t year; - unsigned long days; - unsigned long valid; + uint32_t days; + uint32_t valid; } RtcTime; struct XDRVMAILBOX { diff --git a/tasmota/settings.ino b/tasmota/settings.ino index e56c9743d..bd3312cac 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -64,6 +64,10 @@ bool RtcSettingsLoad(uint32_t update) { RtcSettings.valid = RTC_MEM_VALID; RtcSettings.energy_kWhtoday = Settings->energy_kWhtoday; RtcSettings.energy_kWhtotal = Settings->energy_kWhtotal; + for (uint32_t i = 0; i < 3; i++) { + RtcSettings.energy_kWhtoday_ph[i] = Settings->energy_kWhtoday_ph[i]; + RtcSettings.energy_kWhtotal_ph[i] = Settings->energy_kWhtotal_ph[i]; + } RtcSettings.energy_usage = Settings->energy_usage; for (uint32_t i = 0; i < MAX_COUNTERS; i++) { RtcSettings.pulse_counter[i] = Settings->pulse_counter[i]; @@ -1432,6 +1436,10 @@ void SettingsDelta(void) { Settings->flag5.disable_referer_chk |= true; #endif } + if (Settings->version < 0x09050009) { + memset(&Settings->energy_kWhtoday_ph, 0, 36); + memset(&RtcSettings.energy_kWhtoday_ph, 0, 24); + } Settings->version = VERSION; SettingsSave(1); diff --git a/tasmota/tasmota_version.h b/tasmota/tasmota_version.h index 713a71868..86ad57d2e 100644 --- a/tasmota/tasmota_version.h +++ b/tasmota/tasmota_version.h @@ -20,6 +20,6 @@ #ifndef _TASMOTA_VERSION_H_ #define _TASMOTA_VERSION_H_ -const uint32_t VERSION = 0x09050008; +const uint32_t VERSION = 0x09050009; #endif // _TASMOTA_VERSION_H_ From 2e06937b6f039f2ed31fa9bbbe8bc5b5c508baf6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Mon, 27 Sep 2021 14:36:19 +0200 Subject: [PATCH 253/317] Bump version 9.5.0.9 --- CHANGELOG.md | 4 +++- RELEASENOTES.md | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index daad6c405..a1b9bc5f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development -## [9.5.0.8] +## [9.5.0.9] + +## [9.5.0.8] 20210927 ### Added - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver (#13034) - Berry class ``webclient`` for HTTP/HTTPS requests diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 2f78e5dca..f75ecbb9e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -98,7 +98,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo [Complete list](BUILDS.md) of available feature and sensors. -## Changelog v9.5.0.8 +## Changelog v9.5.0.9 ### Added - Release of [Tasmota WebInstaller](https://arendst.github.io/Tasmota-firmware/) - Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message @@ -132,6 +132,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - ESP32 Berry support for Curve 25519 EC crypto - ESP32 Berry support for ESP32/ESP32S2 DAC gpio - ESP32 Berry support for Serial +- ESP32 Berry print stack trace when exception, more detailed with line numbers if `#define USE_BERRY_DEBUG` - ESP32 support for (Yeelight) Mi Desk Pro using binary tasmota32solo1.bin - ESP32-S2 support for GPIOs - ESP32 add GPIO 6/7/8/11 to template and remove GPIO 28-31 (remapping so backwards compatible) From 27dbe91a1c6bc7d024bbac6b2a6ba9f9916ce3f3 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 28 Sep 2021 20:03:24 +0200 Subject: [PATCH 254/317] Berry fix Energy mapping --- .../default/be_energy_ctypes_definitions.c | 116 +++++++++--------- tasmota/berry/modules/energy_ctypes.be | 6 +- 2 files changed, 65 insertions(+), 57 deletions(-) diff --git a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c index 25d7bdf79..58be289e6 100644 --- a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c +++ b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c @@ -80,72 +80,76 @@ static const char * be_ctypes_instance_mappings[]; /* forward definition */ /********************************************************************/ const be_ctypes_structure_t be_energy_struct = { - 146, /* size in bytes */ - 62, /* number of elements */ + 158, /* size in bytes */ + 66, /* number of elements */ be_ctypes_instance_mappings, - (const be_ctypes_structure_item_t[62]) { + (const be_ctypes_structure_item_t[66]) { { "active_power", 24, 0, 0, 5, 0 }, { "active_power_2", 28, 0, 0, 5, 0 }, { "active_power_3", 32, 0, 0, 5, 0 }, - { "command_code", 113, 0, 0, 1, 0 }, + { "apparent_power", 36, 0, 0, 5, 0 }, + { "apparent_power_2", 40, 0, 0, 5, 0 }, + { "apparent_power_3", 44, 0, 0, 5, 0 }, + { "command_code", 125, 0, 0, 1, 0 }, { "current", 12, 0, 0, 5, 0 }, { "current_2", 16, 0, 0, 5, 0 }, { "current_3", 20, 0, 0, 5, 0 }, - { "current_available", 118, 5, 1, 0, 0 }, - { "daily", 88, 0, 0, 5, 0 }, - { "data_valid", 114, 0, 0, 1, 0 }, - { "data_valid_2", 115, 0, 0, 1, 0 }, - { "data_valid_3", 116, 0, 0, 1, 0 }, - { "export_active", 72, 0, 0, 5, 0 }, - { "export_active_2", 76, 0, 0, 5, 0 }, - { "export_active_3", 80, 0, 0, 5, 0 }, - { "fifth_second", 112, 0, 0, 1, 0 }, - { "frequency", 60, 0, 0, 5, 0 }, - { "frequency_2", 64, 0, 0, 5, 0 }, - { "frequency_3", 68, 0, 0, 5, 0 }, - { "frequency_common", 118, 1, 1, 0, 0 }, - { "max_current_flag", 138, 5, 1, 0, 0 }, - { "max_energy_state", 145, 0, 0, 1, 0 }, - { "max_power_flag", 138, 1, 1, 0, 0 }, - { "max_voltage_flag", 138, 3, 1, 0, 0 }, - { "min_current_flag", 138, 4, 1, 0, 0 }, - { "min_power_flag", 138, 0, 1, 0, 0 }, - { "min_voltage_flag", 138, 2, 1, 0, 0 }, - { "mplh_counter", 140, 0, 0, 2, 0 }, - { "mplr_counter", 144, 0, 0, 1, 0 }, - { "mplw_counter", 142, 0, 0, 2, 0 }, - { "period", 108, 0, 0, 4, 0 }, - { "phase_count", 117, 0, 0, 1, 0 }, - { "power_factor", 48, 0, 0, 5, 0 }, - { "power_factor_2", 52, 0, 0, 5, 0 }, - { "power_factor_3", 56, 0, 0, 5, 0 }, - { "power_history_0", 119, 0, 0, 2, 0 }, - { "power_history_0_2", 121, 0, 0, 2, 0 }, - { "power_history_0_3", 123, 0, 0, 2, 0 }, - { "power_history_1", 125, 0, 0, 2, 0 }, - { "power_history_1_2", 127, 0, 0, 2, 0 }, - { "power_history_1_3", 129, 0, 0, 2, 0 }, - { "power_history_2", 131, 0, 0, 2, 0 }, - { "power_history_2_2", 133, 0, 0, 2, 0 }, - { "power_history_2_3", 135, 0, 0, 2, 0 }, - { "power_on", 118, 7, 1, 0, 0 }, - { "power_steady_counter", 137, 0, 0, 1, 0 }, - { "reactive_power", 36, 0, 0, 5, 0 }, - { "reactive_power_2", 40, 0, 0, 5, 0 }, - { "reactive_power_3", 44, 0, 0, 5, 0 }, - { "start_energy", 84, 0, 0, 5, 0 }, - { "today_delta_kwh", 96, 0, 0, 4, 0 }, - { "today_kwh", 104, 0, 0, 4, 0 }, - { "today_offset_init_kwh", 118, 3, 1, 0, 0 }, - { "today_offset_kwh", 100, 0, 0, 4, 0 }, - { "total", 92, 0, 0, 5, 0 }, - { "type_dc", 118, 6, 1, 0, 0 }, - { "use_overtemp", 118, 2, 1, 0, 0 }, + { "current_available", 130, 5, 1, 0, 0 }, + { "daily", 100, 0, 0, 5, 0 }, + { "data_valid", 126, 0, 0, 1, 0 }, + { "data_valid_2", 127, 0, 0, 1, 0 }, + { "data_valid_3", 128, 0, 0, 1, 0 }, + { "export_active", 84, 0, 0, 5, 0 }, + { "export_active_2", 88, 0, 0, 5, 0 }, + { "export_active_3", 92, 0, 0, 5, 0 }, + { "fifth_second", 124, 0, 0, 1, 0 }, + { "frequency", 72, 0, 0, 5, 0 }, + { "frequency_2", 76, 0, 0, 5, 0 }, + { "frequency_3", 80, 0, 0, 5, 0 }, + { "frequency_common", 130, 1, 1, 0, 0 }, + { "max_current_flag", 150, 5, 1, 0, 0 }, + { "max_energy_state", 157, 0, 0, 1, 0 }, + { "max_power_flag", 150, 1, 1, 0, 0 }, + { "max_voltage_flag", 150, 3, 1, 0, 0 }, + { "min_current_flag", 150, 4, 1, 0, 0 }, + { "min_power_flag", 150, 0, 1, 0, 0 }, + { "min_voltage_flag", 150, 2, 1, 0, 0 }, + { "mplh_counter", 152, 0, 0, 2, 0 }, + { "mplr_counter", 156, 0, 0, 1, 0 }, + { "mplw_counter", 154, 0, 0, 2, 0 }, + { "period", 120, 0, 0, 4, 0 }, + { "phase_count", 129, 0, 0, 1, 0 }, + { "power_factor", 60, 0, 0, 5, 0 }, + { "power_factor_2", 64, 0, 0, 5, 0 }, + { "power_factor_3", 68, 0, 0, 5, 0 }, + { "power_history_0", 131, 0, 0, 2, 0 }, + { "power_history_0_2", 133, 0, 0, 2, 0 }, + { "power_history_0_3", 135, 0, 0, 2, 0 }, + { "power_history_1", 137, 0, 0, 2, 0 }, + { "power_history_1_2", 139, 0, 0, 2, 0 }, + { "power_history_1_3", 141, 0, 0, 2, 0 }, + { "power_history_2", 143, 0, 0, 2, 0 }, + { "power_history_2_2", 145, 0, 0, 2, 0 }, + { "power_history_2_3", 147, 0, 0, 2, 0 }, + { "power_on", 130, 7, 1, 0, 0 }, + { "power_steady_counter", 149, 0, 0, 1, 0 }, + { "reactive_power", 48, 0, 0, 5, 0 }, + { "reactive_power_2", 52, 0, 0, 5, 0 }, + { "reactive_power_3", 56, 0, 0, 5, 0 }, + { "start_energy", 96, 0, 0, 5, 0 }, + { "suff", 151, 0, 0, 1, 0 }, + { "today_delta_kwh", 108, 0, 0, 4, 0 }, + { "today_kwh", 116, 0, 0, 4, 0 }, + { "today_offset_init_kwh", 130, 3, 1, 0, 0 }, + { "today_offset_kwh", 112, 0, 0, 4, 0 }, + { "total", 104, 0, 0, 5, 0 }, + { "type_dc", 130, 6, 1, 0, 0 }, + { "use_overtemp", 130, 2, 1, 0, 0 }, { "voltage", 0, 0, 0, 5, 0 }, { "voltage_2", 4, 0, 0, 5, 0 }, { "voltage_3", 8, 0, 0, 5, 0 }, - { "voltage_available", 118, 4, 1, 0, 0 }, - { "voltage_common", 118, 0, 1, 0, 0 }, + { "voltage_available", 130, 4, 1, 0, 0 }, + { "voltage_common", 130, 0, 1, 0, 0 }, }}; static const char * be_ctypes_instance_mappings[] = { diff --git a/tasmota/berry/modules/energy_ctypes.be b/tasmota/berry/modules/energy_ctypes.be index 21eb378e4..a7109e69c 100644 --- a/tasmota/berry/modules/energy_ctypes.be +++ b/tasmota/berry/modules/energy_ctypes.be @@ -15,7 +15,7 @@ uint8 = ctypes.u8 uint16 = ctypes.u16 uint32 = ctypes.u32 int32 = ctypes.i32 -bool = ctypes.bf_1 +bool = ctypes.u8 energy_struct = [ [float, "voltage"], @@ -27,6 +27,9 @@ energy_struct = [ [float, "active_power"], [float, "active_power_2"], [float, "active_power_3"], + [float, "apparent_power"], + [float, "apparent_power_2"], + [float, "apparent_power_3"], [float, "reactive_power"], [float, "reactive_power_2"], [float, "reactive_power_3"], @@ -88,6 +91,7 @@ energy_struct = [ [bool, "min_current_flag"], [bool, "max_current_flag"], + [uint8, "stuff"], # #ifdef USE_ENERGY_POWER_LIMIT [uint16, "mplh_counter"], [uint16, "mplw_counter"], From e28a3342cb7bddeaf1da73d7e06875acfc193852 Mon Sep 17 00:00:00 2001 From: Adrian Scillato Date: Tue, 28 Sep 2021 15:53:14 -0300 Subject: [PATCH 255/317] Allow KNX and Zigbee --- tasmota/tasmota_configurations.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_configurations.h b/tasmota/tasmota_configurations.h index 64d1ac0de..59810fccd 100644 --- a/tasmota/tasmota_configurations.h +++ b/tasmota/tasmota_configurations.h @@ -503,7 +503,7 @@ #define USE_TLS // flag indicates we need to include TLS code #endif // USE_ZBBRIDGE_TLS -#undef USE_KNX // Disable KNX IP Protocol Support +//#undef USE_KNX // Disable KNX IP Protocol Support //#undef USE_WEBSERVER // Disable Webserver #undef USE_ENHANCED_GUI_WIFI_SCAN // Disable wifi scan output with BSSID (+0k5 code) //#undef USE_WEBSEND_RESPONSE // Disable command WebSend response message (+1k code) From e49dfa72965e75f6ae39b9cb816655ae1ed6dbf4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato Date: Tue, 28 Sep 2021 15:55:38 -0300 Subject: [PATCH 256/317] KNX: Fix Energy Driver dependency --- tasmota/xdrv_11_knx.ino | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino index 12d663d9d..428286dcf 100644 --- a/tasmota/xdrv_11_knx.ino +++ b/tasmota/xdrv_11_knx.ino @@ -644,6 +644,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) knx.answer_4byte_float(msg.received_on, last_hum); } } +#if defined(USE_ENERGY_SENSOR) else if (chan->type == KNX_ENERGY_VOLTAGE) // Reply KNX_ENERGY_VOLTAGE { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); @@ -701,6 +702,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) knx.answer_4byte_float(msg.received_on, Energy.total); } } +#endif #ifdef USE_RULES else if ((chan->type >= KNX_SLOT1) && (chan->type <= KNX_SLOT5)) // KNX RX SLOTs (read command) { From b10772562006dbe0c738a608832438b5566e24d4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato Date: Tue, 28 Sep 2021 15:56:39 -0300 Subject: [PATCH 257/317] Allow KNX and Zigbee to be compiled together --- platformio_tasmota_env.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio_tasmota_env.ini b/platformio_tasmota_env.ini index 082112834..68d4b17e4 100644 --- a/platformio_tasmota_env.ini +++ b/platformio_tasmota_env.ini @@ -61,7 +61,7 @@ lib_extra_dirs = lib/lib_basic [env:tasmota-zbbridge] build_flags = ${env.build_flags} -DFIRMWARE_ZBBRIDGE board = esp8266_zbbridge -lib_extra_dirs = lib/lib_basic, lib/lib_ssl +lib_extra_dirs = lib/lib_basic, lib/lib_ssl, lib/lib_div [env:tasmota-zigbee] build_flags = ${env.build_flags} -DUSE_ZIGBEE -DUSE_CCLOADER -DUSE_UFILESYS From 2f494feb805e41f0bc47df81753c6abe31235518 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 28 Sep 2021 22:17:11 +0200 Subject: [PATCH 258/317] Berry smart compile to bytecode --- .../Berry/default/be_path_tasmota_lib.c | 1 + lib/libesp32/Berry/default/be_tasmotalib.c | 196 ++++++++++-------- .../Berry/default/embedded/Tasmota.be | 39 ++-- 3 files changed, 135 insertions(+), 101 deletions(-) diff --git a/lib/libesp32/Berry/default/be_path_tasmota_lib.c b/lib/libesp32/Berry/default/be_path_tasmota_lib.c index c722f01e1..c4208203f 100644 --- a/lib/libesp32/Berry/default/be_path_tasmota_lib.c +++ b/lib/libesp32/Berry/default/be_path_tasmota_lib.c @@ -36,6 +36,7 @@ static int m_path_last_modified(bvm *vm) void * f = be_fopen(path, "r"); if (f) { be_pushint(vm, be_last_modified(f)); + be_fclose(f); be_return(vm); } } diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 28d0f6d1f..6a562246b 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -700,7 +700,7 @@ be_local_closure(time_str, /* name */ ********************************************************************/ be_local_closure(load, /* name */ be_nested_proto( - 14, /* nstack */ + 15, /* nstack */ 2, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -708,95 +708,117 @@ be_local_closure(load, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_string("string", 398550328, 6), - /* K1 */ be_nested_string("split", -2017972765, 5), - /* K2 */ be_nested_string(".", 722245873, 1), - /* K3 */ be_const_int(1), - /* K4 */ be_nested_string("be", 942383232, 2), - /* K5 */ be_nested_string("bec", 1336821081, 3), - /* K6 */ be_nested_string("io_error", 1970281036, 8), - /* K7 */ be_nested_string("file extension is not '.be' or '.bec'", -1199247657, 37), - /* K8 */ be_nested_string("c", -435409838, 1), - /* K9 */ be_nested_string("r", -150190315, 1), - /* K10 */ be_nested_string("close", 667630371, 5), - /* K11 */ be_nested_string("file", -1427482813, 4), - /* K12 */ be_nested_string("save", -855671224, 4), - /* K13 */ be_nested_string("log", 1062293841, 3), - /* K14 */ be_nested_string("format", -1180859054, 6), - /* K15 */ be_nested_string("BRY: could not save compiled file %s (%s)", 736659787, 41), + /* K1 */ be_nested_string("path", -2071507658, 4), + /* K2 */ be_nested_string("find", -1108310694, 4), + /* K3 */ be_nested_string(".", 722245873, 1), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_string(".be", 1325797348, 3), + /* K6 */ be_nested_string("split", -2017972765, 5), + /* K7 */ be_const_int(1), + /* K8 */ be_nested_string("be", 942383232, 2), + /* K9 */ be_nested_string("bec", 1336821081, 3), + /* K10 */ be_nested_string("io_error", 1970281036, 8), + /* K11 */ be_nested_string("file extension is not '.be' or '.bec'", -1199247657, 37), + /* K12 */ be_nested_string("c", -435409838, 1), + /* K13 */ be_nested_string("last_modified", 772177145, 13), + /* K14 */ be_nested_string("file", -1427482813, 4), + /* K15 */ be_nested_string("save", -855671224, 4), + /* K16 */ be_nested_string("format", -1180859054, 6), + /* K17 */ be_nested_string("BRY: could not save compiled file %s (%s)", 736659787, 41), }), (be_nested_const_str("load", -435725847, 4)), - (be_nested_const_str("Tasmota.be", 825809411, 10)), - ( &(const binstruction[68]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0x8C0C0501, // 0001 GETMET R3 R2 K1 - 0x5C140200, // 0002 MOVE R5 R1 - 0x58180002, // 0003 LDCONST R6 K2 - 0x7C0C0600, // 0004 CALL R3 3 - 0x6010000C, // 0005 GETGBL R4 G12 - 0x5C140600, // 0006 MOVE R5 R3 - 0x7C100200, // 0007 CALL R4 1 - 0x18100903, // 0008 LE R4 R4 K3 - 0x74120007, // 0009 JMPT R4 #0012 - 0x5411FFFE, // 000A LDINT R4 -1 - 0x94100604, // 000B GETIDX R4 R3 R4 - 0x20100904, // 000C NE R4 R4 K4 - 0x78120004, // 000D JMPF R4 #0013 - 0x5411FFFE, // 000E LDINT R4 -1 - 0x94100604, // 000F GETIDX R4 R3 R4 - 0x20100905, // 0010 NE R4 R4 K5 - 0x78120000, // 0011 JMPF R4 #0013 - 0xB0060D07, // 0012 RAISE 1 K6 K7 - 0x6010000C, // 0013 GETGBL R4 G12 - 0x5C140200, // 0014 MOVE R5 R1 - 0x7C100200, // 0015 CALL R4 1 - 0x04100903, // 0016 SUB R4 R4 K3 - 0x94100204, // 0017 GETIDX R4 R1 R4 - 0x1C100908, // 0018 EQ R4 R4 K8 - 0xA8020007, // 0019 EXBLK 0 #0022 - 0x60140011, // 001A GETGBL R5 G17 - 0x5C180200, // 001B MOVE R6 R1 - 0x581C0009, // 001C LDCONST R7 K9 - 0x7C140400, // 001D CALL R5 2 - 0x8C180B0A, // 001E GETMET R6 R5 K10 - 0x7C180200, // 001F CALL R6 1 - 0xA8040001, // 0020 EXBLK 1 1 - 0x70020006, // 0021 JMP #0029 - 0x58140006, // 0022 LDCONST R5 K6 - 0xAC140200, // 0023 CATCH R5 1 0 - 0x70020002, // 0024 JMP #0028 - 0x50140000, // 0025 LDBOOL R5 0 0 - 0x80040A00, // 0026 RET 1 R5 - 0x70020000, // 0027 JMP #0029 - 0xB0080000, // 0028 RAISE 2 R0 R0 - 0x6014000D, // 0029 GETGBL R5 G13 - 0x5C180200, // 002A MOVE R6 R1 - 0x581C000B, // 002B LDCONST R7 K11 - 0x7C140400, // 002C CALL R5 2 - 0x74120011, // 002D JMPT R4 #0040 - 0xA8020005, // 002E EXBLK 0 #0035 - 0x8C18010C, // 002F GETMET R6 R0 K12 - 0x00200308, // 0030 ADD R8 R1 K8 - 0x5C240A00, // 0031 MOVE R9 R5 - 0x7C180600, // 0032 CALL R6 3 - 0xA8040001, // 0033 EXBLK 1 1 - 0x7002000A, // 0034 JMP #0040 - 0xAC180001, // 0035 CATCH R6 0 1 - 0x70020007, // 0036 JMP #003F - 0x8C1C010D, // 0037 GETMET R7 R0 K13 - 0x8C24050E, // 0038 GETMET R9 R2 K14 - 0x582C000F, // 0039 LDCONST R11 K15 - 0x00300308, // 003A ADD R12 R1 K8 - 0x5C340C00, // 003B MOVE R13 R6 - 0x7C240800, // 003C CALL R9 4 - 0x7C1C0400, // 003D CALL R7 2 - 0x70020000, // 003E JMP #0040 - 0xB0080000, // 003F RAISE 2 R0 R0 - 0x5C180A00, // 0040 MOVE R6 R5 - 0x7C180000, // 0041 CALL R6 0 - 0x50180200, // 0042 LDBOOL R6 1 0 - 0x80040C00, // 0043 RET 1 R6 + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[88]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0x8C100502, // 0002 GETMET R4 R2 K2 + 0x5C180200, // 0003 MOVE R6 R1 + 0x581C0003, // 0004 LDCONST R7 K3 + 0x7C100600, // 0005 CALL R4 3 + 0x14100904, // 0006 LT R4 R4 K4 + 0x78120000, // 0007 JMPF R4 #0009 + 0x00040305, // 0008 ADD R1 R1 K5 + 0x8C100506, // 0009 GETMET R4 R2 K6 + 0x5C180200, // 000A MOVE R6 R1 + 0x581C0003, // 000B LDCONST R7 K3 + 0x7C100600, // 000C CALL R4 3 + 0x6014000C, // 000D GETGBL R5 G12 + 0x5C180800, // 000E MOVE R6 R4 + 0x7C140200, // 000F CALL R5 1 + 0x18140B07, // 0010 LE R5 R5 K7 + 0x74160007, // 0011 JMPT R5 #001A + 0x5415FFFE, // 0012 LDINT R5 -1 + 0x94140805, // 0013 GETIDX R5 R4 R5 + 0x20140B08, // 0014 NE R5 R5 K8 + 0x78160004, // 0015 JMPF R5 #001B + 0x5415FFFE, // 0016 LDINT R5 -1 + 0x94140805, // 0017 GETIDX R5 R4 R5 + 0x20140B09, // 0018 NE R5 R5 K9 + 0x78160000, // 0019 JMPF R5 #001B + 0xB006150B, // 001A RAISE 1 K10 K11 + 0x5415FFFE, // 001B LDINT R5 -1 + 0x94140205, // 001C GETIDX R5 R1 R5 + 0x1C140B0C, // 001D EQ R5 R5 K12 + 0x8C18070D, // 001E GETMET R6 R3 K13 + 0x5C200200, // 001F MOVE R8 R1 + 0x7C180400, // 0020 CALL R6 2 + 0x78160005, // 0021 JMPF R5 #0028 + 0x4C1C0000, // 0022 LDNIL R7 + 0x1C1C0C07, // 0023 EQ R7 R6 R7 + 0x781E0001, // 0024 JMPF R7 #0027 + 0x501C0000, // 0025 LDBOOL R7 0 0 + 0x80040E00, // 0026 RET 1 R7 + 0x70020014, // 0027 JMP #003D + 0x8C1C070D, // 0028 GETMET R7 R3 K13 + 0x0024030C, // 0029 ADD R9 R1 K12 + 0x7C1C0400, // 002A CALL R7 2 + 0x4C200000, // 002B LDNIL R8 + 0x1C200C08, // 002C EQ R8 R6 R8 + 0x78220004, // 002D JMPF R8 #0033 + 0x4C200000, // 002E LDNIL R8 + 0x1C200E08, // 002F EQ R8 R7 R8 + 0x78220001, // 0030 JMPF R8 #0033 + 0x50200000, // 0031 LDBOOL R8 0 0 + 0x80041000, // 0032 RET 1 R8 + 0x4C200000, // 0033 LDNIL R8 + 0x20200E08, // 0034 NE R8 R7 R8 + 0x78220006, // 0035 JMPF R8 #003D + 0x4C200000, // 0036 LDNIL R8 + 0x1C200C08, // 0037 EQ R8 R6 R8 + 0x74220001, // 0038 JMPT R8 #003B + 0x28200E06, // 0039 GE R8 R7 R6 + 0x78220001, // 003A JMPF R8 #003D + 0x0004030C, // 003B ADD R1 R1 K12 + 0x50140200, // 003C LDBOOL R5 1 0 + 0x601C000D, // 003D GETGBL R7 G13 + 0x5C200200, // 003E MOVE R8 R1 + 0x5824000E, // 003F LDCONST R9 K14 + 0x7C1C0400, // 0040 CALL R7 2 + 0x74160011, // 0041 JMPT R5 #0054 + 0xA8020005, // 0042 EXBLK 0 #0049 + 0x8C20010F, // 0043 GETMET R8 R0 K15 + 0x0028030C, // 0044 ADD R10 R1 K12 + 0x5C2C0E00, // 0045 MOVE R11 R7 + 0x7C200600, // 0046 CALL R8 3 + 0xA8040001, // 0047 EXBLK 1 1 + 0x7002000A, // 0048 JMP #0054 + 0xAC200001, // 0049 CATCH R8 0 1 + 0x70020007, // 004A JMP #0053 + 0x60240001, // 004B GETGBL R9 G1 + 0x8C280510, // 004C GETMET R10 R2 K16 + 0x58300011, // 004D LDCONST R12 K17 + 0x0034030C, // 004E ADD R13 R1 K12 + 0x5C381000, // 004F MOVE R14 R8 + 0x7C280800, // 0050 CALL R10 4 + 0x7C240200, // 0051 CALL R9 1 + 0x70020000, // 0052 JMP #0054 + 0xB0080000, // 0053 RAISE 2 R0 R0 + 0x5C200E00, // 0054 MOVE R8 R7 + 0x7C200000, // 0055 CALL R8 0 + 0x50200200, // 0056 LDBOOL R8 1 0 + 0x80041000, // 0057 RET 1 R8 }) ) ); diff --git a/lib/libesp32/Berry/default/embedded/Tasmota.be b/lib/libesp32/Berry/default/embedded/Tasmota.be index 4390310c2..7e3d3a9d3 100644 --- a/lib/libesp32/Berry/default/embedded/Tasmota.be +++ b/lib/libesp32/Berry/default/embedded/Tasmota.be @@ -237,37 +237,48 @@ class Tasmota def load(f) import string + import path + + # if the filename has no '.' append '.be' + if string.find(f, '.') < 0 + f += ".be" + end # check that the file ends with '.be' of '.bec' var fl = string.split(f,'.') if (size(fl) <= 1 || (fl[-1] != 'be' && fl[-1] != 'bec')) raise "io_error", "file extension is not '.be' or '.bec'" end - var native = f[size(f)-1] == 'c' - # load - works the same for .be and .bec - # try if file exists - try - var ff = open(f, 'r') - ff.close() - except 'io_error' - return false # signals that file does not exist + var is_bytecode = f[-1] == 'c' # file is Berry source and not bytecode + var f_time = path.last_modified(f) + + if is_bytecode + if f_time == nil return false end # file does not exist + # f is the right file, continue + else + var f_time_bc = path.last_modified(f + "c") # timestamp for bytecode + if f_time == nil && f_time_bc == nil return false end + if f_time_bc != nil && (f_time == nil || f_time_bc >= f_time) + # bytecode exists and is more recent than berry source, use bytecode + f = f + "c" # use bytecode name + is_bytecode = true + end end - - var c = compile(f,'file') + + var c = compile(f, 'file') # save the compiled bytecode - if !native + if !is_bytecode try - self.save(f+'c', c) + self.save(f + 'c', c) except .. as e - self.log(string.format('BRY: could not save compiled file %s (%s)',f+'c',e)) + print(string.format('BRY: could not save compiled file %s (%s)',f+'c',e)) end end # call the compiled code c() # call successfuls return true - end def event(event_type, cmd, idx, payload, raw) From b5c58d02731a9f83923a53bd5eefd4f2bd73ed6d Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Tue, 28 Sep 2021 22:47:40 +0200 Subject: [PATCH 259/317] Berry support for NAN --- lib/libesp32/Berry/generate/be_const_strtab.h | 1378 +++++------ .../Berry/generate/be_const_strtab_def.h | 2023 +++++++++-------- lib/libesp32/Berry/generate/be_fixed_math.h | 46 +- lib/libesp32/Berry/src/be_mathlib.c | 15 + 4 files changed, 1742 insertions(+), 1720 deletions(-) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 3a9815874..2480d1dde 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,699 +1,701 @@ -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str__ptr; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_asin; extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_dot_size; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_ROT1B_NP; extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_dot_len; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_lv_tabview; extern const bcstring be_const_str_try; extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str__def; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_SERIAL_6O1; extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_tomap; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_resp_cmnd_error; extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_ILI9488_CS; extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_hex; extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_format; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_on; extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_isnan; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_tomap; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_list; extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_dot_size; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_init; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str__ptr; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_serial; extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_nan; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str__def; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_dot_len; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_read24; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index ae61fa083..7f502367e 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1046 +1,1049 @@ -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_GPS_RX); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_SYMBOL_GPS); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, &be_const_str_type); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_WEBCAM_VSYNC); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MAX7219DIN); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_exec_rules); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, NULL); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_PMS5003_TX); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SERIAL_8N2); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_MGC3130_XFER); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, NULL); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_SWT1_PD); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_pin_used); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, NULL); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_I2C_Driver); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_EPAPER29_CS); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str__ptr); -be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_SYMBOL_EYE_OPEN); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_SERIAL_8N1); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, NULL); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_BUZZER_INV); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_BOILER_OT_TX); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_EPAPER42_CS); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, NULL); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_get_switch); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_USB); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); -be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_print); -be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_AudioFileSourceFS); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_OPEN_DRAIN); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_ROT1B_NP); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_RXD); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, NULL); -be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_content_flush); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SYMBOL_UP); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_toupper); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_toupper); be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); -be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_log10); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_SYMBOL_BATTERY_2); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_SYMBOL_DOWN); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_SYMBOL_SAVE); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_MCP39F5_RST); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_I2C_SCL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_P9813_DAT); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_P9813_CLK); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_SHELLY_DIMMER_BOOT0); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_lv_line); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_KEY1_TC); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, NULL); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_LMT01); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_SERIAL_6O2); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_AES_GCM); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, NULL); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_DHT22); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_DCKI); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_TUYA_RX); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SYMBOL_DOWNLOAD); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, NULL); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SYMBOL_BATTERY_FULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_target_search); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_RF_SENSOR); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_available); -be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_TXD); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SSD1351_DC); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_TXD); be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, NULL); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_sqrt); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_MGC3130_RESET); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SERIAL_7E1); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str__def); -be_define_const_str(_def, "_def", 1985022181u, 0, 4, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SERIAL_8E1); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_MHZ_RXD); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_SDS0X1_TX); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str_SYMBOL_PLAY); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, NULL); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SERIAL_8O2); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_lv_chart); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_SERIAL_6N1); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, NULL); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_tomap); -be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, NULL); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SERIAL_5O2); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, NULL); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_MCP39F5_RX); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_SM16716_SEL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_ETH_PHY_MDC); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_RIGHT); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, NULL); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SYMBOL_PAUSE); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_SERIAL_6E2); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_HALLEFFECT); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_WE517_RX); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_SERIAL_7O1); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_NRF24_CS); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_SERIAL_7E2); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_SERIAL_5E2); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SM2135_DAT); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, &be_const_str_get_option); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_I2S_OUT_CLK); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_LE01MR_RX); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_lv_keyboard); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_SYMBOL_REFRESH); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_SR04_ECHO); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_keyboard); be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_PROJECTOR_CTRL_RX); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_SYMBOL_NEW_LINE); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_KEY1_PD); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_OUTPUT_OPEN_DRAIN); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, NULL); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_HIGH); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_INPUT); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_lv_dropdown); be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_dac_voltage); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_exists); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_AudioGeneratorMP3); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_PULLUP); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, NULL); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_write_bytes); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_eth); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_AUDIO); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SBR_RX); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_RF_SENSOR); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_isnan); +be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_NRG_SEL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_tomap); +be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, NULL); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_SPI_DC); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_AZ_TXD); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_KEY1_TC); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_exists); be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SDM630_TX); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SERIAL_5E1); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SERIAL_7N2); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SI7021); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, NULL); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_response_append); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, NULL); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); +be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_BACKLIGHT); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_available); +be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SERIAL_8O1); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_LE01MR_RX); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_NRG_SEL_INV); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_KEY1_NP); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_MINUS); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SAIR_TX); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HRE_DATA); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_CHARGE); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_nan); +be_define_const_str(nan, "nan", 797905850u, 0, 3, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_detect); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_pow); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, NULL); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SYMBOL_BATTERY_3); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SDS0X1_RX); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SYMBOL_BATTERY_FULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_ADC_BUTTON_INV); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_get_string); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str__def); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str__buffer); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_resp_cmnd); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_top); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SYMBOL_BLUETOOTH); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_ELECTRIQ_MOODL_TX); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_FTC532); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_SERIAL_5E2); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_real); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_SERIAL_5N1); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_OK); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SDM630_RX); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_PZEM017_RX); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_seg7_font); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SERIAL_8N2); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_TM1637DIO); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_finish); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RFRECV); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SERIAL_5O1); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SDM120_RX); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_geti); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MGC3130_RESET); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SERIAL_6N1); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); static const bstring* const m_string_table[] = { - (const bstring *)&be_const_str_AudioOutputI2S, NULL, - (const bstring *)&be_const_str_item, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_decrypt, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_set_power, - NULL, - (const bstring *)&be_const_str_SENSOR_END, - (const bstring *)&be_const_str_SERIAL_6N2, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_SYMBOL_LOOP, - (const bstring *)&be_const_str_SYMBOL_PASTE, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_lv_arc, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_yield, - (const bstring *)&be_const_str_redirect, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_read13, - NULL, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_imin, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_TX2X_TXD_BLACK, - (const bstring *)&be_const_str_arg_size, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_load, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_detect, - (const bstring *)&be_const_str__cb, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_input, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_remove_cmd, - (const bstring *)&be_const_str_lv_cb, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_PN532_TXD, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_lv_bar, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_atan, - (const bstring *)&be_const_str_WEBCAM_PSRCS, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_add, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_SSD1351_CS, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_allocated, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_SDM72_RX, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_WIEGAND_D0, - (const bstring *)&be_const_str_fromstring, NULL, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_I2C_Driver, NULL, (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_opt_call, - NULL, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_event, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_SDM120_RX, - NULL, - (const bstring *)&be_const_str_search, - (const bstring *)&be_const_str_lv_design_cb, - NULL, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - (const bstring *)&be_const_str_lower, - (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_remove, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_SPI_MOSI, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_target_search, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_SERIAL_8E1, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_var, (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_resolvecmnd, - (const bstring *)&be_const_str_WEBCAM_RESET, - (const bstring *)&be_const_str_bus, - (const bstring *)&be_const_str_SOLAXX1_RX, - NULL, - (const bstring *)&be_const_str_number, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_ZIGBEE_TX, - NULL, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_SM16716_DAT, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_dot_size, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_addr, - (const bstring *)&be_const_str_assert, - (const bstring *)&be_const_str_SR04_ECHO, - (const bstring *)&be_const_str_elif, - (const bstring *)&be_const_str_AudioGeneratorWAV, - NULL, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_ILI9341_DC, - (const bstring *)&be_const_str_REL1_INV, - (const bstring *)&be_const_str_MAX7219CLK, - NULL, - (const bstring *)&be_const_str_SYMBOL_PLUS, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_PZEM0XX_TX, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_ZIGBEE_RX, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_dot_len, - (const bstring *)&be_const_str_ADC_RANGE, - NULL, - (const bstring *)&be_const_str_HRE_CLOCK, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_SYMBOL_BATTERY_1, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_AudioFileSource, - NULL, (const bstring *)&be_const_str_try, (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_RDM6300_RX, NULL, - (const bstring *)&be_const_str_digital_write, - NULL, - (const bstring *)&be_const_str_lv_cpicker, - NULL, - (const bstring *)&be_const_str_LEDLNK_INV, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_remove_driver, - (const bstring *)&be_const_str_SERIAL_8E2, - NULL, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - (const bstring *)&be_const_str_WEBCAM_XCLK, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_IEM3000_TX, - (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_HLW_CF, (const bstring *)&be_const_str_DDSU666_RX, - NULL, - (const bstring *)&be_const_str_TM1638CLK, - (const bstring *)&be_const_str_EXS_ENABLE, - NULL, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_type, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_SYMBOL_IMAGE, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_WEBCAM_PWDN, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_SSPI_MOSI, (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_has_arg, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_public_key, - (const bstring *)&be_const_str_loop, - (const bstring *)&be_const_str_scan, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_SYMBOL_NEW_LINE, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_pin_used, + (const bstring *)&be_const_str_dot_p, NULL, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_POST, - (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_on, + (const bstring *)&be_const_str_read12, + (const bstring *)&be_const_str_remove_driver, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_false, NULL, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_add_driver, + (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_import, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_set_light, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_return, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_WEBCAM_HREF, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_delay, + (const bstring *)&be_const_str__rules, + (const bstring *)&be_const_str_opt_eq, NULL, - NULL, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_SYMBOL_TRASH, - (const bstring *)&be_const_str_SBR_RX, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - NULL, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_lv_gauge, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_SERIAL_5O1, - (const bstring *)&be_const_str_RC522_CS, - NULL, - NULL, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_asstring, - NULL, - (const bstring *)&be_const_str_HPMA_RX, - (const bstring *)&be_const_str_WEBCAM_DATA, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_SERIAL_5N2, - (const bstring *)&be_const_str___lower__, - (const bstring *)&be_const_str_RC522_RST, - (const bstring *)&be_const_str_begin, - (const bstring *)&be_const_str_gc, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_HRE_DATA, - (const bstring *)&be_const_str_SYMBOL_LIST, - (const bstring *)&be_const_str_DAC, - (const bstring *)&be_const_str_SSPI_DC, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_OneWire, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str_BUZZER, NULL, (const bstring *)&be_const_str_PULLDOWN, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_SERIAL_6O1, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_SERIAL_8O1, - (const bstring *)&be_const_str_tostring, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_RA8876_CS, - (const bstring *)&be_const_str__drivers, - (const bstring *)&be_const_str_SYMBOL_WARNING, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - NULL, - (const bstring *)&be_const_str_asin, + (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_HRXL_RX, (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_ST7789_CS, - (const bstring *)&be_const_str_last_modified, - (const bstring *)&be_const_str_OUTPUT_LO, - (const bstring *)&be_const_str_WE517_TX, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str___upper__, - (const bstring *)&be_const_str_cos, - (const bstring *)&be_const_str_close, - (const bstring *)&be_const_str_time_str, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_I2S_IN_DATA, + (const bstring *)&be_const_str__available, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_for, + (const bstring *)&be_const_str_SM16716_SEL, (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_SAIR_RX, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_RFSEND, - (const bstring *)&be_const_str_I2S_IN_SLCT, - NULL, - (const bstring *)&be_const_str_ceil, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_classof, - (const bstring *)&be_const_str_SSD1331_DC, - (const bstring *)&be_const_str_SERIAL_7O2, - NULL, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_get_size, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_static, - (const bstring *)&be_const_str_SWT1, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_SYMBOL_DRIVE, - (const bstring *)&be_const_str_SERIAL_7N2, - (const bstring *)&be_const_str_SERIAL_5N1, - (const bstring *)&be_const_str_I2S_OUT_DATA, - (const bstring *)&be_const_str_wire2, - (const bstring *)&be_const_str_depower, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_add_cmd, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_SERIAL_5E1, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_P9813_CLK, (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_write_bit, + (const bstring *)&be_const_str_SERIAL_5N2, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_char, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_IRSEND, + NULL, + (const bstring *)&be_const_str_wire1, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_SM16716_CLK, + (const bstring *)&be_const_str_I2S_OUT_SLCT, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_CNTR1_NP, + NULL, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_SWT1, + NULL, + (const bstring *)&be_const_str_arg_size, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_tolower, + (const bstring *)&be_const_str_content_stop, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_SERIAL_8N1, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_SERIAL_7O2, + (const bstring *)&be_const_str_SYMBOL_EDIT, + (const bstring *)&be_const_str_SERIAL_6O2, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_gamma8, + (const bstring *)&be_const_str_dot_size, + (const bstring *)&be_const_str_lv_calendar, + (const bstring *)&be_const_str_SWT1_PD, + (const bstring *)&be_const_str_KEY1_INV_PD, + (const bstring *)&be_const_str_lv_gauge, + (const bstring *)&be_const_str_atan2, + NULL, + NULL, + NULL, + (const bstring *)&be_const_str_SERIAL_5O2, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_ADC_TEMP, + NULL, + (const bstring *)&be_const_str_nil, + (const bstring *)&be_const_str_iter, + NULL, + (const bstring *)&be_const_str_MP3_DFR562, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_P9813_DAT, + NULL, + NULL, + (const bstring *)&be_const_str_PZEM016_RX, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str__ptr, + (const bstring *)&be_const_str_SERIAL_7E1, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_lv_chart, + (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, + (const bstring *)&be_const_str_WS2812, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str__begin_transmission, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_WE517_RX, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_DAC, + (const bstring *)&be_const_str_while, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_SERIAL_8E2, + (const bstring *)&be_const_str__request_from, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_atan, + (const bstring *)&be_const_str_WEBCAM_VSYNC, + (const bstring *)&be_const_str_get_light, + (const bstring *)&be_const_str_acos, + (const bstring *)&be_const_str_bytes, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, + (const bstring *)&be_const_str_AudioFileSource, + NULL, + (const bstring *)&be_const_str_content_flush, + (const bstring *)&be_const_str_lv_tileview, + (const bstring *)&be_const_str_SYMBOL_BATTERY_1, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_OUTPUT_LO, + NULL, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_POST, + NULL, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_loop, + (const bstring *)&be_const_str_call, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_dot_w, + NULL, + (const bstring *)&be_const_str_AudioOutputI2S, + NULL, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_KEY1_INV_NP, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_SOLAXX1_TX, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_GET, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_ADC_CT_POWER, + NULL, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_insert, + (const bstring *)&be_const_str_NEOPOOL_TX, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_lv_indev, + (const bstring *)&be_const_str_REL1_INV, + NULL, + (const bstring *)&be_const_str_SSD1351_CS, + NULL, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_WEBCAM_HSD, + NULL, + (const bstring *)&be_const_str_ZEROCROSS, + (const bstring *)&be_const_str_state, + (const bstring *)&be_const_str_SENSOR_END, + NULL, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_sqrt, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_ROT1A_NP, NULL, (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_TASMOTACLIENT_RXD, + NULL, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, + (const bstring *)&be_const_str_dot_len, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_SYMBOL_COPY, + (const bstring *)&be_const_str_cosh, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_HX711_SCK, + (const bstring *)&be_const_str_TELEINFO_RX, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_HPMA_RX, + NULL, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_dac_voltage, + NULL, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_lv_cpicker, + (const bstring *)&be_const_str_AudioGenerator, + (const bstring *)&be_const_str_lv_slider, + NULL, + (const bstring *)&be_const_str_SDM630_TX, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_SERIAL_7O1, + (const bstring *)&be_const_str_SERIAL_6O1, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + NULL, + (const bstring *)&be_const_str_assert, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_WEBCAM_PCLK, (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_opt_eq, - (const bstring *)&be_const_str_def, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_upper, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_SYMBOL_PAUSE, + (const bstring *)&be_const_str_TM1638DIO, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_attrdump, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_int, + (const bstring *)&be_const_str_lv_line, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_TM1637CLK, + (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_floor, + (const bstring *)&be_const_str_SYMBOL_CUT, NULL, - (const bstring *)&be_const_str_issubclass, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_abs, + (const bstring *)&be_const_str_I2S_OUT_DATA, NULL, - (const bstring *)&be_const_str_gen_cb, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_WE517_TX, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_rtc, + (const bstring *)&be_const_str_SERIAL_7E2, + (const bstring *)&be_const_str_HRE_CLOCK, NULL, - (const bstring *)&be_const_str_BS814_DAT, - NULL, - (const bstring *)&be_const_str_ST7789_DC, - (const bstring *)&be_const_str_Wire, - NULL, - NULL, - NULL, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_lv_dropdown, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_LOW, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_A4988_MS1 + (const bstring *)&be_const_str_SM2135_CLK }; static const struct bconststrtab m_const_string_table = { - .size = 338, - .count = 677, + .size = 339, + .count = 679, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_math.h b/lib/libesp32/Berry/generate/be_fixed_math.h index 473625f1c..111c556c8 100644 --- a/lib/libesp32/Berry/generate/be_fixed_math.h +++ b/lib/libesp32/Berry/generate/be_fixed_math.h @@ -1,36 +1,38 @@ #include "be_constobj.h" static be_define_const_map_slots(m_libmath_map) { - { be_const_key(asin, 13), be_const_func(m_asin) }, - { be_const_key(acos, -1), be_const_func(m_acos) }, - { be_const_key(tanh, 5), be_const_func(m_tanh) }, - { be_const_key(atan2, -1), be_const_func(m_atan2) }, - { be_const_key(cos, 20), be_const_func(m_cos) }, - { be_const_key(pi, 24), be_const_real(M_PI) }, - { be_const_key(abs, 17), be_const_func(m_abs) }, - { be_const_key(sinh, -1), be_const_func(m_sinh) }, - { be_const_key(srand, -1), be_const_func(m_srand) }, - { be_const_key(cosh, -1), be_const_func(m_cosh) }, - { be_const_key(imax, 6), be_const_int(M_IMAX) }, - { be_const_key(floor, -1), be_const_func(m_floor) }, - { be_const_key(log, -1), be_const_func(m_log) }, - { be_const_key(exp, 22), be_const_func(m_exp) }, - { be_const_key(imin, 9), be_const_int(M_IMIN) }, - { be_const_key(ceil, 1), be_const_func(m_ceil) }, - { be_const_key(sin, 12), be_const_func(m_sin) }, + { be_const_key(asin, 7), be_const_func(m_asin) }, + { be_const_key(isnan, -1), be_const_func(m_isnan) }, + { be_const_key(sinh, 22), be_const_func(m_sinh) }, + { be_const_key(cos, -1), be_const_func(m_cos) }, { be_const_key(rand, -1), be_const_func(m_rand) }, + { be_const_key(deg, -1), be_const_func(m_deg) }, + { be_const_key(log10, 16), be_const_func(m_log10) }, + { be_const_key(acos, -1), be_const_func(m_acos) }, + { be_const_key(cosh, -1), be_const_func(m_cosh) }, + { be_const_key(tanh, 21), be_const_func(m_tanh) }, + { be_const_key(rad, 11), be_const_func(m_rad) }, + { be_const_key(abs, -1), be_const_func(m_abs) }, + { be_const_key(atan2, -1), be_const_func(m_atan2) }, + { be_const_key(tan, 19), be_const_func(m_tan) }, + { be_const_key(ceil, 15), be_const_func(m_ceil) }, + { be_const_key(nan, -1), be_const_real(NAN) }, + { be_const_key(imin, -1), be_const_int(M_IMIN) }, { be_const_key(pow, -1), be_const_func(m_pow) }, { be_const_key(atan, -1), be_const_func(m_atan) }, + { be_const_key(imax, 25), be_const_int(M_IMAX) }, + { be_const_key(exp, 17), be_const_func(m_exp) }, + { be_const_key(log, 1), be_const_func(m_log) }, { be_const_key(sqrt, -1), be_const_func(m_sqrt) }, - { be_const_key(deg, -1), be_const_func(m_deg) }, - { be_const_key(log10, -1), be_const_func(m_log10) }, - { be_const_key(rad, -1), be_const_func(m_rad) }, - { be_const_key(tan, -1), be_const_func(m_tan) }, + { be_const_key(srand, -1), be_const_func(m_srand) }, + { be_const_key(floor, -1), be_const_func(m_floor) }, + { be_const_key(sin, -1), be_const_func(m_sin) }, + { be_const_key(pi, 8), be_const_real(M_PI) }, }; static be_define_const_map( m_libmath_map, - 25 + 27 ); static be_define_const_module( diff --git a/lib/libesp32/Berry/src/be_mathlib.c b/lib/libesp32/Berry/src/be_mathlib.c index c6d4139e1..b9598f525 100644 --- a/lib/libesp32/Berry/src/be_mathlib.c +++ b/lib/libesp32/Berry/src/be_mathlib.c @@ -34,6 +34,17 @@ #define mathfunc(func) func #endif +static int m_isnan(bvm *vm) +{ + if (be_top(vm) >= 1 && be_isreal(vm, 1)) { + breal x = be_toreal(vm, 1); + be_pushbool(vm, isnan(x)); + } else { + be_pushbool(vm, bfalse); + } + be_return(vm); +} + static int m_abs(bvm *vm) { if (be_top(vm) >= 1 && be_isnumber(vm, 1)) { @@ -272,6 +283,7 @@ static int m_rand(bvm *vm) #if !BE_USE_PRECOMPILED_OBJECT be_native_module_attr_table(math) { + be_native_module_function("isnan", m_isnan), be_native_module_function("abs", m_abs), be_native_module_function("ceil", m_ceil), be_native_module_function("floor", m_floor), @@ -295,6 +307,7 @@ be_native_module_attr_table(math) { be_native_module_function("srand", m_srand), be_native_module_function("rand", m_rand), be_native_module_real("pi", M_PI), + be_native_module_real("nan", NAN), be_native_module_int("imax", M_IMAX), be_native_module_int("imin", M_IMIN), }; @@ -303,6 +316,7 @@ be_define_native_module(math, NULL); #else /* @const_object_info_begin module math (scope: global, depend: BE_USE_MATH_MODULE) { + isnan, func(m_isnan) abs, func(m_abs) ceil, func(m_ceil) floor, func(m_floor) @@ -326,6 +340,7 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) { srand, func(m_srand) rand, func(m_rand) pi, real(M_PI) + nan, real(NAN) imax, int(M_IMAX) imin, int(M_IMIN) } From d3fc03d3980c25cd8b66063405bcab12adadaff5 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 29 Sep 2021 12:08:03 +0200 Subject: [PATCH 260/317] Add support for split energy totals Add command ``SetOption129 1`` to enable split total energy results (#13030) --- CHANGELOG.md | 3 + RELEASENOTES.md | 2 + tasmota/i18n.h | 3 + tasmota/settings.h | 2 +- tasmota/xdrv_03_energy.ino | 511 +++++++++++++++++------------- tasmota/xdrv_10_scripter.ino | 8 +- tasmota/xdrv_11_knx.ino | 21 +- tasmota/xdrv_16_tuyamcu.ino | 4 +- tasmota/xdrv_45_shelly_dimmer.ino | 2 +- tasmota/xnrg_01_hlw8012.ino | 2 +- tasmota/xnrg_02_cse7766.ino | 2 +- tasmota/xnrg_03_pzem004t.ino | 5 + tasmota/xnrg_04_mcp39f501.ino | 2 +- tasmota/xnrg_05_pzem_ac.ino | 7 +- tasmota/xnrg_06_pzem_dc.ino | 7 +- tasmota/xnrg_07_ade7953.ino | 12 +- tasmota/xnrg_14_bl09xx.ino | 37 +-- tasmota/xnrg_19_cse7761.ino | 18 +- tasmota/xnrg_30_dummy.ino | 9 +- tasmota/xsns_75_prometheus.ino | 4 +- 20 files changed, 353 insertions(+), 308 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1b9bc5f7..0418b3302 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.5.0.9] +### Added +- Command ``SetOption129 1`` to enable split total energy results (#13030) +- Commands ``EnergyTotal``, ``EnergyToday`` and ``EnergyYesterday`` to (re)set energy values ## [9.5.0.8] 20210927 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f75ecbb9e..8e93548ab 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,10 +104,12 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) +- Command ``SetOption129 1`` to enable split total energy results [#13030](https://github.com/arendst/Tasmota/issues/13030) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) - Command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests [#13209](https://github.com/arendst/Tasmota/issues/13209) +- Commands ``EnergyTotal``, ``EnergyToday`` and ``EnergyYesterday`` to (re)set energy values - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 41c52f10b..1e025318d 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -433,6 +433,9 @@ #define D_CMND_CURRENTLOW "CurrentLow" #define D_CMND_CURRENTHIGH "CurrentHigh" #define D_CMND_ENERGYRESET "EnergyReset" +#define D_CMND_ENERGYTODAY "EnergyToday" +#define D_CMND_ENERGYYESTERDAY "EnergyYesterday" +#define D_CMND_ENERGYTOTAL "EnergyTotal" #define D_CMND_POWERSET "PowerSet" #define D_CMND_VOLTAGESET "VoltageSet" #define D_CMND_CURRENTSET "CurrentSet" diff --git a/tasmota/settings.h b/tasmota/settings.h index ee83f44d3..91b1ff552 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -158,7 +158,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t ds18x20_mean : 1; // bit 12 (v9.3.1.2) - SetOption126 - (DS18x20) Enable arithmetic mean over teleperiod for JSON temperature (1) uint32_t wifi_no_sleep : 1; // bit 13 (v9.5.0.2) - SetOption127 - (Wifi) Keep wifi in no-sleep mode, prevents some occasional unresponsiveness uint32_t disable_referer_chk : 1; // bit 14 (v9.5.0.5) - SetOption128 - (Web) Allow access without referer check - uint32_t spare15 : 1; // bit 15 + uint32_t energy_phase : 1; // bit 15 (v9.5.0.9) - SetOption129 - (Energy) Show phase information uint32_t spare16 : 1; // bit 16 uint32_t spare17 : 1; // bit 17 uint32_t spare18 : 1; // bit 18 diff --git a/tasmota/xdrv_03_energy.ino b/tasmota/xdrv_03_energy.ino index 2e679a497..e0a73321c 100644 --- a/tasmota/xdrv_03_energy.ino +++ b/tasmota/xdrv_03_energy.ino @@ -56,7 +56,7 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|" #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION - D_CMND_ENERGYRESET "|" D_CMND_TARIFF; + D_CMND_ENERGYRESET "|" D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_TARIFF; void (* const EnergyCommand[])(void) PROGMEM = { &CmndPowerCal, &CmndVoltageCal, &CmndCurrentCal, &CmndFrequencyCal, @@ -69,9 +69,9 @@ void (* const EnergyCommand[])(void) PROGMEM = { &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow, #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION - &CmndEnergyReset, &CmndTariff}; + &CmndEnergyReset, &CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndTariff}; -const char kEnergyPhases[] PROGMEM = "|%s / %s|%s / %s / %s||[%s,%s]|[%s,%s,%s]"; +const char kEnergyPhases[] PROGMEM = "|%*_f / %*_f|%*_f / %*_f / %*_f||[%*_f,%*_f]|[%*_f,%*_f,%*_f]"; struct ENERGY { float voltage[ENERGY_MAX_PHASES]; // 123.1 V @@ -85,15 +85,17 @@ struct ENERGY { float import_active[ENERGY_MAX_PHASES]; // 123.123 kWh #endif // SDM630_IMPORT || SDM72_IMPEXP float export_active[ENERGY_MAX_PHASES]; // 123.123 kWh + float start_energy[ENERGY_MAX_PHASES]; // 12345.12345 kWh total previous + float daily[ENERGY_MAX_PHASES]; // 123.123 kWh + float total[ENERGY_MAX_PHASES]; // 12345.12345 kWh total energy + float daily_sum; // 123.123 kWh + float total_sum; // 12345.12345 kWh total energy + float yesterday_sum; // 123.123 kWh - float start_energy; // 12345.12345 kWh total previous - float daily; // 123.123 kWh - float total; // 12345.12345 kWh total energy - - unsigned long kWhtoday_delta; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) - unsigned long kWhtoday_offset; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily - unsigned long kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily - unsigned long period; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + uint32_t kWhtoday_delta[ENERGY_MAX_PHASES]; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) + uint32_t kWhtoday_offset[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + uint32_t kWhtoday[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + uint32_t period[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily uint8_t fifth_second; uint8_t command_code; @@ -134,27 +136,38 @@ Ticker ticker_energy; /********************************************************************************************/ -char* EnergyFormatIndex(char* result, char* input, bool json, uint32_t index, bool single = false) -{ - char layout[16]; +char* EnergyFormatIndex(char* result, float* input, uint32_t resolution, bool json, uint32_t index, bool single = false) { + char layout[20]; GetTextIndexed(layout, sizeof(layout), (index -1) + (ENERGY_MAX_PHASES * json), kEnergyPhases); switch (index) { case 2: - snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, input, input + FLOATSZ); // Dirty + ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, resolution, &input[0], resolution, &input[1]); break; case 3: - snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, input, input + FLOATSZ, input + FLOATSZ + FLOATSZ); // Even dirtier + ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, resolution, &input[0], resolution, &input[1], resolution, &input[2]); break; default: - snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, input); + ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, PSTR("%*_f"), resolution, &input[0]); } return result; } -char* EnergyFormat(char* result, char* input, bool json, bool single = false) -{ +char* EnergyFormat(char* result, float* input, uint32_t resolution, bool json, bool single = false) { uint8_t index = (single) ? 1 : Energy.phase_count; // 1,2,3 - return EnergyFormatIndex(result, input, json, index, single); + return EnergyFormatIndex(result, input, resolution, json, index, single); +} + +char* EnergyFormatSum(char* result, float* input, uint32_t resolution, bool json, bool single = false) { + uint8_t index = (single) ? 1 : Energy.phase_count; // 1,2,3 + float input_sum = 0.0; + if (!Settings->flag5.energy_phase) { + for (uint32_t i = 0; i < index; i++) { + input_sum += input[i]; + } + input = &input_sum; + index = 1; + } + return EnergyFormatIndex(result, input, resolution, json, index, single); } /********************************************************************************************/ @@ -183,22 +196,30 @@ bool EnergyTariff1Active() // Off-Peak hours } } -void EnergyUpdateToday(void) -{ - if (Energy.kWhtoday_delta > 1000) { - unsigned long delta = Energy.kWhtoday_delta / 1000; - Energy.kWhtoday_delta -= (delta * 1000); - Energy.kWhtoday += delta; - } +void EnergyUpdateToday(void) { + Energy.total_sum = 0.0; + Energy.yesterday_sum = 0.0; + Energy.daily_sum = 0.0; + for (uint32_t i = 0; i < Energy.phase_count; i++) { + if (Energy.kWhtoday_delta[i] > 1000) { + uint32_t delta = Energy.kWhtoday_delta[i] / 1000; + Energy.kWhtoday_delta[i] -= (delta * 1000); + Energy.kWhtoday[i] += delta; + } - RtcSettings.energy_kWhtoday = Energy.kWhtoday_offset + Energy.kWhtoday; - Energy.daily = (float)(RtcSettings.energy_kWhtoday) / 100000; - Energy.total = (float)(RtcSettings.energy_kWhtotal + RtcSettings.energy_kWhtoday) / 100000; + RtcSettings.energy_kWhtoday_ph[i] = Energy.kWhtoday_offset[i] + Energy.kWhtoday[i]; + Energy.daily[i] = (float)(RtcSettings.energy_kWhtoday_ph[i]) / 100000; + Energy.total[i] = (float)(RtcSettings.energy_kWhtotal_ph[i] + RtcSettings.energy_kWhtoday_ph[i]) / 100000; + + Energy.total_sum += Energy.total[i]; + Energy.yesterday_sum += (float)Settings->energy_kWhyesterday_ph[i] / 100000; + Energy.daily_sum += Energy.daily[i]; + } if (RtcTime.valid){ // We calc the difference only if we have a valid RTC time. - uint32_t energy_diff = (uint32_t)(Energy.total * 100000) - RtcSettings.energy_usage.last_usage_kWhtotal; - RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total * 100000); + uint32_t energy_diff = (uint32_t)(Energy.total_sum * 100000) - RtcSettings.energy_usage.last_usage_kWhtotal; + RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total_sum * 100000); uint32_t return_diff = 0; if (!isnan(Energy.export_active[0])) { @@ -225,25 +246,26 @@ void EnergyUpdateToday(void) } } -void EnergyUpdateTotal(float value, bool kwh) +void EnergyUpdateTotal(float value, bool kwh, uint32_t phase = 0); +void EnergyUpdateTotal(float value, bool kwh, uint32_t phase) { // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total %4_f %sWh"), &value, (kwh) ? "k" : ""); uint32_t multiplier = (kwh) ? 100000 : 100; // kWh or Wh to deca milli Wh - if (0 == Energy.start_energy || (value < Energy.start_energy)) { - Energy.start_energy = value; // Init after restart and handle roll-over if any + if (0 == Energy.start_energy[phase] || (value < Energy.start_energy[phase])) { + Energy.start_energy[phase] = value; // Init after restart and handle roll-over if any } - else if (value != Energy.start_energy) { - Energy.kWhtoday = (unsigned long)((value - Energy.start_energy) * multiplier); + else if (value != Energy.start_energy[phase]) { + Energy.kWhtoday[phase] = (unsigned long)((value - Energy.start_energy[phase]) * multiplier); } - if ((Energy.total < (value - 0.01)) && // We subtract a little offset to avoid continuous updates + if ((Energy.total[phase] < (value - 0.01)) && // We subtract a little offset to avoid continuous updates Settings->flag3.hardware_energy_total) { // SetOption72 - Enable hardware energy total counter as reference (#6561) - RtcSettings.energy_kWhtotal = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset - Energy.kWhtoday); - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; - Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; - Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); + RtcSettings.energy_kWhtotal_ph[phase] = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset[phase] - Energy.kWhtoday[phase]); + Settings->energy_kWhtotal_ph[phase] = RtcSettings.energy_kWhtotal_ph[phase]; + Energy.total[phase] = (float)(RtcSettings.energy_kWhtotal_ph[phase] + Energy.kWhtoday_offset[phase] + Energy.kWhtoday[phase]) / 100000; + Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset[phase]) ? LocalTime() : Midnight(); // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total updated with hardware value")); } EnergyUpdateToday(); @@ -264,23 +286,26 @@ void Energy200ms(void) if (RtcTime.valid) { if (!Energy.kWhtoday_offset_init && (RtcTime.day_of_year == Settings->energy_kWhdoy)) { - Energy.kWhtoday_offset = Settings->energy_kWhtoday; + for (uint32_t i = 0; i < 3; i++) { + Energy.kWhtoday_offset[i] = Settings->energy_kWhtoday_ph[i]; + } Energy.kWhtoday_offset_init = true; } if (LocalTime() == Midnight()) { - Settings->energy_kWhyesterday = RtcSettings.energy_kWhtoday; + for (uint32_t i = 0; i < 3; i++) { + Settings->energy_kWhyesterday_ph[i] = RtcSettings.energy_kWhtoday_ph[i]; - RtcSettings.energy_kWhtotal += RtcSettings.energy_kWhtoday; - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; + RtcSettings.energy_kWhtotal_ph[i] += RtcSettings.energy_kWhtoday_ph[i]; + Settings->energy_kWhtotal_ph[i] = RtcSettings.energy_kWhtotal_ph[i]; - Energy.period -= RtcSettings.energy_kWhtoday; // this becomes a large unsigned, effectively a negative for EnergyShow calculation - Energy.kWhtoday = 0; - Energy.kWhtoday_offset = 0; - RtcSettings.energy_kWhtoday = 0; - Energy.start_energy = 0; + Energy.period[i] -= RtcSettings.energy_kWhtoday_ph[i]; // this becomes a large unsigned, effectively a negative for EnergyShow calculation + Energy.kWhtoday[i] = 0; + Energy.kWhtoday_offset[i] = 0; + RtcSettings.energy_kWhtoday_ph[i] = 0; + Energy.start_energy[i] = 0; // Energy.kWhtoday_delta = 0; // dont zero this, we need to carry the remainder over to tomorrow - + } EnergyUpdateToday(); #if defined(USE_ENERGY_MARGIN_DETECTION) && defined(USE_ENERGY_POWER_LIMIT) Energy.max_energy_state = 3; @@ -302,8 +327,10 @@ void EnergySaveState(void) { Settings->energy_kWhdoy = (RtcTime.valid) ? RtcTime.day_of_year : 0; - Settings->energy_kWhtoday = RtcSettings.energy_kWhtoday; - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; + for (uint32_t i = 0; i < 3; i++) { + Settings->energy_kWhtoday_ph[i] = RtcSettings.energy_kWhtoday_ph[i]; + Settings->energy_kWhtotal_ph[i] = RtcSettings.energy_kWhtotal_ph[i]; + } Settings->energy_usage = RtcSettings.energy_usage; } @@ -371,12 +398,20 @@ void EnergyMarginCheck(void) Energy.power_history[phase][2] = active_power; } if (jsonflg) { +/* char power_diff_chr[Energy.phase_count][FLOATSZ]; for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { dtostrfd(power_diff[phase], 0, power_diff_chr[phase]); } char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFormat(value_chr, power_diff_chr[0], 1)); +*/ + float power_diff_f[Energy.phase_count]; + for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { + power_diff_f[phase] = power_diff[phase]; + } + char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; + ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFormat(value_chr, power_diff_f, 0, 1)); } uint16_t energy_power_u = (uint16_t)(Energy.active_power[0]); @@ -467,7 +502,7 @@ void EnergyMarginCheck(void) // Max Energy if (Settings->energy_max_energy) { - uint16_t energy_daily_u = (uint16_t)(Energy.daily * 1000); + uint16_t energy_daily_u = (uint16_t)(Energy.daily_sum * 1000); if (!Energy.max_energy_state && (RtcTime.hour == Settings->energy_max_energy_start)) { Energy.max_energy_state = 1; ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); @@ -476,7 +511,7 @@ void EnergyMarginCheck(void) } else if ((1 == Energy.max_energy_state ) && (energy_daily_u >= Settings->energy_max_energy)) { Energy.max_energy_state = 2; - ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy.daily); + ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy.daily_sum); MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); SetAllPower(POWER_ALL_OFF, SRC_MAXENERGY); @@ -559,48 +594,9 @@ void CmndEnergyReset(void) { uint32_t params = ParseParameters(2, values); values[0] *= 100; - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 5)) { + if ((XdrvMailbox.index > 3) && (XdrvMailbox.index <= 5)) { if (params > 0) { switch (XdrvMailbox.index) { - case 1: - // Reset Energy Today - Energy.kWhtoday_offset = values[0]; - Energy.kWhtoday = 0; - Energy.kWhtoday_delta = 0; - Energy.start_energy = 0; - Energy.period = Energy.kWhtoday_offset; - Settings->energy_kWhtoday = Energy.kWhtoday_offset; - RtcSettings.energy_kWhtoday = Energy.kWhtoday_offset; - Energy.daily = (float)Energy.kWhtoday_offset / 100000; - if( params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - else { - if (!RtcSettings.energy_kWhtotal && !Energy.kWhtoday_offset) { - Settings->energy_kWhtotal_time = LocalTime(); - } - } - break; - case 2: - // Reset Energy Yesterday - Settings->energy_kWhyesterday = values[0]; - if( params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - break; - case 3: - // Reset Energy Total - RtcSettings.energy_kWhtotal = values[0]; - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; -// Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; - if( params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - else { - Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); - } - RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total * 1000); - break; case 4: // Reset energy_usage.usage totals RtcSettings.energy_usage.usage1_kWhtotal = values[0]; @@ -623,24 +619,100 @@ void CmndEnergyReset(void) { } } - Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; - float energy_kWhyesterday = (float)Settings->energy_kWhyesterday / 100000; float usage1_kWhtotal = (float)Settings->energy_usage.usage1_kWhtotal / 100000; float usage2_kWhtotal = (float)Settings->energy_usage.usage2_kWhtotal / 100000; float return1_kWhtotal = (float)Settings->energy_usage.return1_kWhtotal / 100000; float return2_kWhtotal = (float)Settings->energy_usage.return2_kWhtotal / 100000; - Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%*_f,\"" D_JSON_YESTERDAY "\":%*_f,\"" D_JSON_TODAY "\":%*_f,\"" D_JSON_USAGE "\":[%*_f,%*_f],\"" D_JSON_EXPORT "\":[%*_f,%*_f]}}"), + Response_P(PSTR("{\"%s\":{\"" D_JSON_USAGE "\":[%*_f,%*_f],\"" D_JSON_EXPORT "\":[%*_f,%*_f]}}"), XdrvMailbox.command, - Settings->flag2.energy_resolution, &Energy.total, - Settings->flag2.energy_resolution, &energy_kWhyesterday, - Settings->flag2.energy_resolution, &Energy.daily, Settings->flag2.energy_resolution, &usage1_kWhtotal, Settings->flag2.energy_resolution, &usage2_kWhtotal, Settings->flag2.energy_resolution, &return1_kWhtotal, Settings->flag2.energy_resolution, &return2_kWhtotal); } +void CmndEnergyResponse(void) { + char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; // Used by EnergyFormatIndex + char value2_chr[FLOATSZ * ENERGY_MAX_PHASES]; + char value3_chr[FLOATSZ * ENERGY_MAX_PHASES]; + + float energy_yesterday_ph[3]; + for (uint32_t i = 0; i < Energy.phase_count; i++) { + energy_yesterday_ph[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000; + Energy.total[i] = (float)(RtcSettings.energy_kWhtotal_ph[i] + Energy.kWhtoday_offset[i] + Energy.kWhtoday[i]) / 100000; + } + + Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s}"), + XdrvMailbox.command, + EnergyFormat(value_chr, Energy.total, Settings->flag2.energy_resolution, true), + EnergyFormat(value2_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, true), + EnergyFormat(value3_chr, Energy.daily, Settings->flag2.energy_resolution, true)); +} + +void CmndEnergyTotal(void) { + uint32_t values[2] = { 0 }; + uint32_t params = ParseParameters(2, values); + values[0] *= 100; + + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { + uint32_t phase = XdrvMailbox.index -1; + // Reset Energy Total + RtcSettings.energy_kWhtotal_ph[phase] = values[0]; + Settings->energy_kWhtotal_ph[phase] = RtcSettings.energy_kWhtotal_ph[phase]; + if (params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } else { + Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset[phase]) ? LocalTime() : Midnight(); + } + RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total[phase] * 1000); + } + CmndEnergyResponse(); +} + +void CmndEnergyYesterday(void) { + uint32_t values[2] = { 0 }; + uint32_t params = ParseParameters(2, values); + values[0] *= 100; + + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { + uint32_t phase = XdrvMailbox.index -1; + // Reset Energy Yesterday + Settings->energy_kWhyesterday_ph[phase] = values[0]; + if (params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + } + CmndEnergyResponse(); +} +void CmndEnergyToday(void) { + uint32_t values[2] = { 0 }; + uint32_t params = ParseParameters(2, values); + values[0] *= 100; + + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { + uint32_t phase = XdrvMailbox.index -1; + // Reset Energy Today + Energy.kWhtoday_offset[phase] = values[0]; + Energy.kWhtoday[phase] = 0; + Energy.kWhtoday_delta[phase] = 0; + Energy.start_energy[phase] = 0; + Energy.period[phase] = Energy.kWhtoday_offset[phase]; + Settings->energy_kWhtoday_ph[phase] = Energy.kWhtoday_offset[phase]; + RtcSettings.energy_kWhtoday_ph[phase] = Energy.kWhtoday_offset[phase]; + Energy.daily[phase] = (float)Energy.kWhtoday_offset[phase] / 100000; + if (params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + else { + if (!RtcSettings.energy_kWhtotal_ph[phase] && !Energy.kWhtoday_offset[phase]) { + Settings->energy_kWhtotal_time = LocalTime(); + } + } + } + CmndEnergyResponse(); +} + void CmndTariff(void) { // Tariff1 22:00,23:00 - Tariff1 start hour for Standard Time and Daylight Savings Time // Tariff2 6:00,7:00 - Tariff2 start hour for Standard Time and Daylight Savings Time @@ -910,15 +982,30 @@ void EnergySnsInit(void) XnrgCall(FUNC_INIT); if (TasmotaGlobal.energy_driver) { + + // Update for split phase totals (v9.5.0.9) + if ((Settings->energy_kWhtoday > 0) && (0 == Settings->energy_kWhtoday_ph[0])) { + Settings->energy_kWhtoday_ph[0] = Settings->energy_kWhtoday; + Settings->energy_kWhyesterday_ph[0] = Settings->energy_kWhyesterday; + Settings->energy_kWhtotal_ph[0] = Settings->energy_kWhtotal; + RtcSettings.energy_kWhtoday_ph[0] = RtcSettings.energy_kWhtoday; + RtcSettings.energy_kWhtotal_ph[0] = RtcSettings.energy_kWhtotal; + Settings->energy_kWhtoday = 0; + } + // Energy.kWhtoday_offset = 0; // Do not use at Power On as Rtc was invalid (but has been restored from Settings already) if ((ResetReason() != REASON_DEFAULT_RST) && RtcSettingsValid()) { - Energy.kWhtoday_offset = RtcSettings.energy_kWhtoday; + for (uint32_t i = 0; i < 3; i++) { + Energy.kWhtoday_offset[i] = RtcSettings.energy_kWhtoday_ph[i]; + } Energy.kWhtoday_offset_init = true; } -// Energy.kWhtoday = 0; -// Energy.kWhtoday_delta = 0; - Energy.period = Energy.kWhtoday_offset; + for (uint32_t i = 0; i < 3; i++) { +// Energy.kWhtoday_ph[i] = 0; +// Energy.kWhtoday_delta[i] = 0; + Energy.period[i] = Energy.kWhtoday_offset[i]; + } EnergyUpdateToday(); ticker_energy.attach_ms(200, Energy200ms); } @@ -944,103 +1031,71 @@ const char HTTP_ENERGY_SNS4[] PROGMEM = #endif // SDM630_IMPORT || SDM72_IMPEXP #endif // USE_WEBSERVER -void EnergyShow(bool json) -{ - for (uint32_t i = 0; i < Energy.phase_count; i++) { - if (Energy.voltage_common) { +void EnergyShow(bool json) { + if (Energy.voltage_common) { + for (uint32_t i = 0; i < Energy.phase_count; i++) { Energy.voltage[i] = Energy.voltage[0]; } } - float power_factor_knx = Energy.power_factor[0]; - - char apparent_power_chr[Energy.phase_count][FLOATSZ]; - char reactive_power_chr[Energy.phase_count][FLOATSZ]; - char power_factor_chr[Energy.phase_count][FLOATSZ]; - char frequency_chr[Energy.phase_count][FLOATSZ]; + float apparent_power[Energy.phase_count]; + float reactive_power[Energy.phase_count]; + float power_factor[Energy.phase_count]; if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { for (uint32_t i = 0; i < Energy.phase_count; i++) { - float apparent_power = Energy.apparent_power[i]; - if (isnan(apparent_power)) { - apparent_power = Energy.voltage[i] * Energy.current[i]; + apparent_power[i] = Energy.apparent_power[i]; + if (isnan(apparent_power[i])) { + apparent_power[i] = Energy.voltage[i] * Energy.current[i]; } - if (apparent_power < Energy.active_power[i]) { // Should be impossible - Energy.active_power[i] = apparent_power; + if (apparent_power[i] < Energy.active_power[i]) { // Should be impossible + Energy.active_power[i] = apparent_power[i]; } - float power_factor = Energy.power_factor[i]; - if (isnan(power_factor)) { - power_factor = (Energy.active_power[i] && apparent_power) ? Energy.active_power[i] / apparent_power : 0; - if (power_factor > 1) { - power_factor = 1; + power_factor[i] = Energy.power_factor[i]; + if (isnan(power_factor[i])) { + power_factor[i] = (Energy.active_power[i] && apparent_power[i]) ? Energy.active_power[i] / apparent_power[i] : 0; + if (power_factor[i] > 1) { + power_factor[i] = 1; } } - if (0 == i) { power_factor_knx = power_factor; } - float reactive_power = Energy.reactive_power[i]; - if (isnan(reactive_power)) { - reactive_power = 0; - uint32_t difference = ((uint32_t)(apparent_power * 100) - (uint32_t)(Energy.active_power[i] * 100)) / 10; - if ((Energy.current[i] > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power * 100 / 1000)))) { + reactive_power[i] = Energy.reactive_power[i]; + if (isnan(reactive_power[i])) { + reactive_power[i] = 0; + uint32_t difference = ((uint32_t)(apparent_power[i] * 100) - (uint32_t)(Energy.active_power[i] * 100)) / 10; + if ((Energy.current[i] > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power[i] * 100 / 1000)))) { // calculating reactive power only if current is greater than 0.005A and // difference between active and apparent power is greater than 1.5W or 1% - //reactive_power = (float)(RoundSqrtInt((uint64_t)(apparent_power * apparent_power * 100) - (uint64_t)(Energy.active_power[i] * Energy.active_power[i] * 100))) / 10; - float power_diff = apparent_power * apparent_power - Energy.active_power[i] * Energy.active_power[i]; + //reactive_power[i] = (float)(RoundSqrtInt((uint64_t)(apparent_power[i] * apparent_power[i] * 100) - (uint64_t)(Energy.active_power[i] * Energy.active_power[i] * 100))) / 10; + float power_diff = apparent_power[i] * apparent_power[i] - Energy.active_power[i] * Energy.active_power[i]; if (power_diff < 10737418) // 2^30 / 100 (RoundSqrtInt is limited to 2^30-1) - reactive_power = (float)(RoundSqrtInt((uint32_t)(power_diff * 100.0))) / 10.0; + reactive_power[i] = (float)(RoundSqrtInt((uint32_t)(power_diff * 100.0))) / 10.0; else - reactive_power = (float)(SqrtInt((uint32_t)(power_diff))); + reactive_power[i] = (float)(SqrtInt((uint32_t)(power_diff))); } } - dtostrfd(apparent_power, Settings->flag2.wattage_resolution, apparent_power_chr[i]); - dtostrfd(reactive_power, Settings->flag2.wattage_resolution, reactive_power_chr[i]); - dtostrfd(power_factor, 2, power_factor_chr[i]); } } - for (uint32_t i = 0; i < Energy.phase_count; i++) { - float frequency = Energy.frequency[i]; - if (isnan(Energy.frequency[i])) { - frequency = 0; - } - dtostrfd(frequency, Settings->flag2.frequency_resolution, frequency_chr[i]); - } } - char voltage_chr[Energy.phase_count][FLOATSZ]; - char current_chr[Energy.phase_count][FLOATSZ]; - char active_power_chr[Energy.phase_count][FLOATSZ]; -#if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) - char import_active_chr[Energy.phase_count][FLOATSZ]; -#endif // SDM630_IMPORT || SDM72_IMPEXP - char export_active_chr[Energy.phase_count][FLOATSZ]; + float active_power_sum = 0.0; + float energy_yesterday_ph[Energy.phase_count]; for (uint32_t i = 0; i < Energy.phase_count; i++) { - dtostrfd(Energy.voltage[i], Settings->flag2.voltage_resolution, voltage_chr[i]); - dtostrfd(Energy.current[i], Settings->flag2.current_resolution, current_chr[i]); - dtostrfd(Energy.active_power[i], Settings->flag2.wattage_resolution, active_power_chr[i]); -#if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) - dtostrfd(Energy.import_active[i], Settings->flag2.energy_resolution, import_active_chr[i]); -#endif // SDM630_IMPORT || SDM72_IMPEXP - dtostrfd(Energy.export_active[i], Settings->flag2.energy_resolution, export_active_chr[i]); + energy_yesterday_ph[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000; + + active_power_sum += Energy.active_power[i]; } - char energy_total_chr[FLOATSZ]; - dtostrfd(Energy.total, Settings->flag2.energy_resolution, energy_total_chr); - char energy_daily_chr[FLOATSZ]; - dtostrfd(Energy.daily, Settings->flag2.energy_resolution, energy_daily_chr); - char energy_yesterday_chr[FLOATSZ]; - dtostrfd((float)Settings->energy_kWhyesterday / 100000, Settings->flag2.energy_resolution, energy_yesterday_chr); - - bool energy_tariff = false; - char energy_usage_chr[2][FLOATSZ]; - char energy_return_chr[2][FLOATSZ]; + float energy_usage[2]; + float energy_return[2]; if (Settings->tariff[0][0] != Settings->tariff[1][0]) { - dtostrfd((float)RtcSettings.energy_usage.usage1_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_usage_chr[0]); // Tariff1 - dtostrfd((float)RtcSettings.energy_usage.usage2_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_usage_chr[1]); // Tariff2 - dtostrfd((float)RtcSettings.energy_usage.return1_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_return_chr[0]); // Tariff1 - dtostrfd((float)RtcSettings.energy_usage.return2_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_return_chr[1]); // Tariff2 + energy_usage[0] = (float)RtcSettings.energy_usage.usage1_kWhtotal / 100000; // Tariff1 + energy_usage[1] = (float)RtcSettings.energy_usage.usage2_kWhtotal / 100000; // Tariff2 + energy_return[0] = (float)RtcSettings.energy_usage.return1_kWhtotal / 100000; // Tariff1 + energy_return[1] = (float)RtcSettings.energy_usage.return2_kWhtotal / 100000; // Tariff2 energy_tariff = true; } @@ -1053,86 +1108,94 @@ void EnergyShow(bool json) ResponseAppend_P(PSTR(",\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL_START_TIME "\":\"%s\",\"" D_JSON_TOTAL "\":%s"), GetDateAndTime(DT_ENERGY).c_str(), - energy_total_chr); + EnergyFormatSum(value_chr, Energy.total, Settings->flag2.energy_resolution, json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_TOTAL D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_usage_chr[0], json, 2)); + EnergyFormatIndex(value_chr, energy_usage, Settings->flag2.energy_resolution, json, 2)); } ResponseAppend_P(PSTR(",\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s"), - energy_yesterday_chr, - energy_daily_chr); + EnergyFormatSum(value_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, json), + EnergyFormatSum(value2_chr, Energy.daily, Settings->flag2.energy_resolution, json)); #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) if (!isnan(Energy.import_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT_ACTIVE "\":%s"), - EnergyFormat(value_chr, import_active_chr[0], json)); + EnergyFormat(value_chr, Energy.import_active, Settings->flag2.energy_resolution, json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); + EnergyFormatIndex(value_chr, energy_return, Settings->flag2.energy_resolution, json, 2)); } } #endif // SDM630_IMPORT || SDM72_IMPEXP if (!isnan(Energy.export_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT_ACTIVE "\":%s"), - EnergyFormat(value_chr, export_active_chr[0], json)); + EnergyFormat(value_chr, Energy.export_active, Settings->flag2.energy_resolution, json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); + EnergyFormatIndex(value_chr, energy_return, Settings->flag2.energy_resolution, json, 2)); } } if (show_energy_period) { - float energy = (float)(RtcSettings.energy_kWhtoday - Energy.period) / 100; - Energy.period = RtcSettings.energy_kWhtoday; - char energy_period_chr[FLOATSZ]; - dtostrfd(energy, Settings->flag2.wattage_resolution, energy_period_chr); - ResponseAppend_P(PSTR(",\"" D_JSON_PERIOD "\":%s"), energy_period_chr); + float energy_period[Energy.phase_count]; + for (uint32_t i = 0; i < Energy.phase_count; i++) { + energy_period[i] = (float)(RtcSettings.energy_kWhtoday_ph[i] - Energy.period[i]) / 100; + Energy.period[i] = RtcSettings.energy_kWhtoday_ph[i]; + } + ResponseAppend_P(PSTR(",\"" D_JSON_PERIOD "\":%s"), + EnergyFormat(value_chr, energy_period, Settings->flag2.wattage_resolution, json)); } + ResponseAppend_P(PSTR(",\"" D_JSON_POWERUSAGE "\":%s"), - EnergyFormat(value_chr, active_power_chr[0], json)); + EnergyFormat(value_chr, Energy.active_power, Settings->flag2.wattage_resolution, json)); if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { ResponseAppend_P(PSTR(",\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s"), - EnergyFormat(value_chr, apparent_power_chr[0], json), - EnergyFormat(value2_chr, reactive_power_chr[0], json), - EnergyFormat(value3_chr, power_factor_chr[0], json)); + EnergyFormat(value_chr, apparent_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value2_chr, reactive_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value3_chr, power_factor, 2, json)); } if (!isnan(Energy.frequency[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"), - EnergyFormat(value_chr, frequency_chr[0], json, Energy.frequency_common)); + EnergyFormat(value_chr, Energy.frequency, Settings->flag2.frequency_resolution, json, Energy.frequency_common)); } } if (Energy.voltage_available) { ResponseAppend_P(PSTR(",\"" D_JSON_VOLTAGE "\":%s"), - EnergyFormat(value_chr, voltage_chr[0], json, Energy.voltage_common)); + EnergyFormat(value_chr, Energy.voltage, Settings->flag2.voltage_resolution, json, Energy.voltage_common)); } if (Energy.current_available) { ResponseAppend_P(PSTR(",\"" D_JSON_CURRENT "\":%s"), - EnergyFormat(value_chr, current_chr[0], json)); + EnergyFormat(value_chr, Energy.current, Settings->flag2.current_resolution, json)); } XnrgCall(FUNC_JSON_APPEND); ResponseJsonEnd(); #ifdef USE_DOMOTICZ if (show_energy_period) { // Only send if telemetry - dtostrfd(Energy.total * 1000, 1, energy_total_chr); - DomoticzSensorPowerEnergy((int)Energy.active_power[0], energy_total_chr); // PowerUsage, EnergyToday + char temp_chr[FLOATSZ]; + if (Energy.voltage_available) { + dtostrfd(Energy.voltage[0], Settings->flag2.voltage_resolution, temp_chr); + DomoticzSensor(DZ_VOLTAGE, temp_chr); // Voltage + } + if (Energy.current_available) { + dtostrfd(Energy.current[0], Settings->flag2.current_resolution, temp_chr); + DomoticzSensor(DZ_CURRENT, temp_chr); // Current + } + dtostrfd(Energy.total_sum * 1000, 1, temp_chr); + DomoticzSensorPowerEnergy((int)active_power_sum, temp_chr); // PowerUsage, EnergyToday + char energy_usage_chr[2][FLOATSZ]; + char energy_return_chr[2][FLOATSZ]; dtostrfd((float)RtcSettings.energy_usage.usage1_kWhtotal / 100, 1, energy_usage_chr[0]); // Tariff1 dtostrfd((float)RtcSettings.energy_usage.usage2_kWhtotal / 100, 1, energy_usage_chr[1]); // Tariff2 dtostrfd((float)RtcSettings.energy_usage.return1_kWhtotal / 100, 1, energy_return_chr[0]); dtostrfd((float)RtcSettings.energy_usage.return2_kWhtotal / 100, 1, energy_return_chr[1]); - DomoticzSensorP1SmartMeter(energy_usage_chr[0], energy_usage_chr[1], energy_return_chr[0], energy_return_chr[1], (int)Energy.active_power[0]); + DomoticzSensorP1SmartMeter(energy_usage_chr[0], energy_usage_chr[1], energy_return_chr[0], energy_return_chr[1], (int)active_power_sum); - if (Energy.voltage_available) { - DomoticzSensor(DZ_VOLTAGE, voltage_chr[0]); // Voltage - } - if (Energy.current_available) { - DomoticzSensor(DZ_CURRENT, current_chr[0]); // Current - } } #endif // USE_DOMOTICZ #ifdef USE_KNX @@ -1143,42 +1206,46 @@ void EnergyShow(bool json) if (Energy.current_available) { KnxSensor(KNX_ENERGY_CURRENT, Energy.current[0]); } - KnxSensor(KNX_ENERGY_POWER, Energy.active_power[0]); + KnxSensor(KNX_ENERGY_POWER, active_power_sum); if (!Energy.type_dc) { - KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor_knx); + KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor[0]); } - KnxSensor(KNX_ENERGY_DAILY, Energy.daily); - KnxSensor(KNX_ENERGY_TOTAL, Energy.total); - KnxSensor(KNX_ENERGY_YESTERDAY, (float)Settings->energy_kWhyesterday / 100000); + KnxSensor(KNX_ENERGY_DAILY, Energy.daily_sum); + KnxSensor(KNX_ENERGY_TOTAL, Energy.total_sum); + KnxSensor(KNX_ENERGY_YESTERDAY, Energy.yesterday_sum); } #endif // USE_KNX #ifdef USE_WEBSERVER } else { if (Energy.voltage_available) { - WSContentSend_PD(HTTP_SNS_VOLTAGE, EnergyFormat(value_chr, voltage_chr[0], json, Energy.voltage_common)); + WSContentSend_PD(HTTP_SNS_VOLTAGE, EnergyFormat(value_chr, Energy.voltage, Settings->flag2.voltage_resolution, json, Energy.voltage_common)); } - if (Energy.current_available) { - WSContentSend_PD(HTTP_SNS_CURRENT, EnergyFormat(value_chr, current_chr[0], json)); - } - WSContentSend_PD(HTTP_SNS_POWER, EnergyFormat(value_chr, active_power_chr[0], json)); if (!Energy.type_dc) { - if (Energy.current_available && Energy.voltage_available) { - WSContentSend_PD(HTTP_ENERGY_SNS1, EnergyFormat(value_chr, apparent_power_chr[0], json), - EnergyFormat(value2_chr, reactive_power_chr[0], json), - EnergyFormat(value3_chr, power_factor_chr[0], json)); - } if (!isnan(Energy.frequency[0])) { WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"), - EnergyFormat(value_chr, frequency_chr[0], json, Energy.frequency_common)); + EnergyFormat(value_chr, Energy.frequency, Settings->flag2.frequency_resolution, json, Energy.frequency_common)); } } - WSContentSend_PD(HTTP_ENERGY_SNS2, energy_daily_chr, energy_yesterday_chr, energy_total_chr); + if (Energy.current_available) { + WSContentSend_PD(HTTP_SNS_CURRENT, EnergyFormat(value_chr, Energy.current, Settings->flag2.current_resolution, json)); + } + WSContentSend_PD(HTTP_SNS_POWER, EnergyFormat(value_chr, Energy.active_power, Settings->flag2.wattage_resolution, json)); + if (!Energy.type_dc) { + if (Energy.current_available && Energy.voltage_available) { + WSContentSend_PD(HTTP_ENERGY_SNS1, EnergyFormat(value_chr, apparent_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value2_chr, reactive_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value3_chr, power_factor, 2, json)); + } + } + WSContentSend_PD(HTTP_ENERGY_SNS2, EnergyFormatSum(value_chr, Energy.daily, Settings->flag2.energy_resolution, json), + EnergyFormatSum(value2_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, json), + EnergyFormatSum(value3_chr, Energy.total, Settings->flag2.energy_resolution, json)); if (!isnan(Energy.export_active[0])) { - WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, export_active_chr[0], json)); + WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, Energy.export_active, Settings->flag2.energy_resolution, json)); } #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) if (!isnan(Energy.import_active[0])) { - WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, import_active_chr[0], json)); + WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, Energy.import_active, Settings->flag2.energy_resolution, json)); } #endif // SDM630_IMPORT || SDM72_IMPEXP diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 7d8578129..c4d21a723 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -1946,7 +1946,7 @@ chknext: while (*lp==' ') lp++; switch ((uint32_t)fvar) { case 0: - fvar = Energy.total; + fvar = Energy.total_sum; break; case 1: fvar = Energy.voltage[0]; @@ -1976,13 +1976,13 @@ chknext: fvar = Energy.active_power[2]; break; case 10: - fvar = Energy.start_energy; + fvar = Energy.start_energy[0]; break; case 11: - fvar = Energy.daily; + fvar = Energy.daily_sum; break; case 12: - fvar = (float)Settings->energy_kWhyesterday/100000.0; + fvar = Energy.yesterday_sum; break; default: diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino index 12d663d9d..84f5e867e 100644 --- a/tasmota/xdrv_11_knx.ino +++ b/tasmota/xdrv_11_knx.ino @@ -645,7 +645,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) } } else if (chan->type == KNX_ENERGY_VOLTAGE) // Reply KNX_ENERGY_VOLTAGE - { + { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); if (Settings->flag.knx_enable_enhancement) { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); @@ -678,27 +678,26 @@ void KNX_CB_Action(message_t const &msg, void *arg) } else if (chan->type == KNX_ENERGY_YESTERDAY) // Reply KNX_ENERGY_YESTERDAY { - float energy_kWhyesterday = (float)Settings->energy_kWhyesterday / 100000; - knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); + knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); - knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); + knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); + knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); } } else if (chan->type == KNX_ENERGY_DAILY) // Reply KNX_ENERGY_DAILY { - knx.answer_4byte_float(msg.received_on, Energy.daily); + knx.answer_4byte_float(msg.received_on, Energy.daily_sum); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.daily); - knx.answer_4byte_float(msg.received_on, Energy.daily); + knx.answer_4byte_float(msg.received_on, Energy.daily_sum); + knx.answer_4byte_float(msg.received_on, Energy.daily_sum); } } else if (chan->type == KNX_ENERGY_TOTAL) // Reply KNX_ENERGY_TOTAL { - knx.answer_4byte_float(msg.received_on, Energy.total); + knx.answer_4byte_float(msg.received_on, Energy.total_sum); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.total); - knx.answer_4byte_float(msg.received_on, Energy.total); + knx.answer_4byte_float(msg.received_on, Energy.total_sum); + knx.answer_4byte_float(msg.received_on, Energy.total_sum); } } #ifdef USE_RULES diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 53dcc770e..395fdef57 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -753,7 +753,7 @@ void TuyaProcessStatePacket(void) { if (RtcTime.valid) { if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { - Energy.kWhtoday += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; + Energy.kWhtoday[0] += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; EnergyUpdateToday(); } Tuya.lastPowerCheckTime = Rtc.utc_time; @@ -885,7 +885,7 @@ void TuyaProcessStatePacket(void) { if (RtcTime.valid) { if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { - Energy.kWhtoday += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; + Energy.kWhtoday[0] += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; EnergyUpdateToday(); } Tuya.lastPowerCheckTime = Rtc.utc_time; diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino index b96b83d4b..d1f317bfc 100644 --- a/tasmota/xdrv_45_shelly_dimmer.ino +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -540,7 +540,7 @@ bool ShdPacketProcess(void) #ifdef SHELLY_DIMMER_DEBUG AddLog(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME "%4_f W is %u dmWh during %u ms"), &Energy.active_power[0], deca_microWh, time_passed); #endif // SHELLY_DIMMER_DEBUG - Energy.kWhtoday_delta += deca_microWh; + Energy.kWhtoday_delta[0] += deca_microWh; EnergyUpdateToday(); } Shd.last_power_check = millis(); diff --git a/tasmota/xnrg_01_hlw8012.ino b/tasmota/xnrg_01_hlw8012.ino index c494a0b46..310e64360 100644 --- a/tasmota/xnrg_01_hlw8012.ino +++ b/tasmota/xnrg_01_hlw8012.ino @@ -214,7 +214,7 @@ void HlwEverySecond(void) { hlw_len = 10000 * 100 / Hlw.energy_period_counter; // Add *100 to fix rounding on loads at 3.6kW (#9160) Hlw.energy_period_counter = 0; if (hlw_len) { - Energy.kWhtoday_delta += (((Hlw.power_ratio * Settings->energy_power_calibration) / 36) * 100) / hlw_len; + Energy.kWhtoday_delta[0] += (((Hlw.power_ratio * Settings->energy_power_calibration) / 36) * 100) / hlw_len; EnergyUpdateToday(); } } diff --git a/tasmota/xnrg_02_cse7766.ino b/tasmota/xnrg_02_cse7766.ino index 9fc73549a..445781b37 100644 --- a/tasmota/xnrg_02_cse7766.ino +++ b/tasmota/xnrg_02_cse7766.ino @@ -205,7 +205,7 @@ void CseEverySecond(void) { // prevent invalid load delta steps even checksum is valid but allow up to 4kW (issue #7155): if (delta <= (4000 * 1000 / 36)) { // max load for S31/Pow R2: 4.00kW Cse.cf_pulses_last_time = Cse.cf_pulses; - Energy.kWhtoday_delta += delta; + Energy.kWhtoday_delta[0] += delta; } else { AddLog(LOG_LEVEL_DEBUG, PSTR("CSE: Overload")); diff --git a/tasmota/xnrg_03_pzem004t.ino b/tasmota/xnrg_03_pzem004t.ino index 1abd8d95a..d132fccfa 100644 --- a/tasmota/xnrg_03_pzem004t.ino +++ b/tasmota/xnrg_03_pzem004t.ino @@ -192,6 +192,7 @@ void PzemEvery250ms(void) Energy.active_power[Pzem.phase] = value; break; case 4: // Total energy as 99999Wh +/* Pzem.energy += value; if (Pzem.phase == Energy.phase_count -1) { if (Pzem.energy > Pzem.last_energy) { // Handle missed phase @@ -202,6 +203,10 @@ void PzemEvery250ms(void) } Pzem.energy = 0; } +*/ + if (TasmotaGlobal.uptime > PZEM_STABILIZE) { + EnergyUpdateTotal(value, false, Pzem.phase); + } break; } Pzem.read_state++; diff --git a/tasmota/xnrg_04_mcp39f501.ino b/tasmota/xnrg_04_mcp39f501.ino index 9f9ea562e..7601731a4 100644 --- a/tasmota/xnrg_04_mcp39f501.ino +++ b/tasmota/xnrg_04_mcp39f501.ino @@ -534,7 +534,7 @@ void McpEverySecond(void) } if (mcp_active_power) { - Energy.kWhtoday_delta += ((mcp_active_power * 10) / 36); + Energy.kWhtoday_delta[0] += ((mcp_active_power * 10) / 36); EnergyUpdateToday(); } diff --git a/tasmota/xnrg_05_pzem_ac.ino b/tasmota/xnrg_05_pzem_ac.ino index acf826c69..ecf67fab0 100644 --- a/tasmota/xnrg_05_pzem_ac.ino +++ b/tasmota/xnrg_05_pzem_ac.ino @@ -78,6 +78,7 @@ void PzemAcEverySecond(void) Energy.frequency[PzemAc.phase] = (float)((buffer[17] << 8) + buffer[18]) / 10.0; // 50.0 Hz Energy.power_factor[PzemAc.phase] = (float)((buffer[19] << 8) + buffer[20]) / 100.0; // 1.00 +/* PzemAc.energy += (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh if (PzemAc.phase == Energy.phase_count -1) { if (PzemAc.energy > PzemAc.last_energy) { // Handle missed phase @@ -88,7 +89,11 @@ void PzemAcEverySecond(void) } PzemAc.energy = 0; } - +*/ + float energy = (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh + if (TasmotaGlobal.uptime > PZEM_AC_STABILIZE) { + EnergyUpdateTotal(energy, false, PzemAc.phase); + } } } } diff --git a/tasmota/xnrg_06_pzem_dc.ino b/tasmota/xnrg_06_pzem_dc.ino index df17d2c82..dab53a2ec 100644 --- a/tasmota/xnrg_06_pzem_dc.ino +++ b/tasmota/xnrg_06_pzem_dc.ino @@ -74,7 +74,7 @@ void PzemDcEverySecond(void) Energy.voltage[PzemDc.channel] = (float)((buffer[3] << 8) + buffer[4]) / 100.0; // 655.00 V Energy.current[PzemDc.channel] = (float)((buffer[5] << 8) + buffer[6]) / 100.0; // 655.00 A Energy.active_power[PzemDc.channel] = (float)((buffer[9] << 24) + (buffer[10] << 16) + (buffer[7] << 8) + buffer[8]) / 10.0; // 429496729.0 W - +/* PzemDc.energy += (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh if (PzemDc.channel == Energy.phase_count -1) { if (PzemDc.energy > PzemDc.last_energy) { // Handle missed channel @@ -85,6 +85,11 @@ void PzemDcEverySecond(void) } PzemDc.energy = 0; } +*/ + float energy = (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh + if (TasmotaGlobal.uptime > PZEM_DC_STABILIZE) { + EnergyUpdateTotal(energy, false, PzemDc.channel); + } } } } diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index f4270deaf..a09e4f257 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -180,12 +180,11 @@ void Ade7953GetData(void) } uint32_t current_rms_sum = Ade7953.current_rms[0] + Ade7953.current_rms[1]; - uint32_t active_power_sum = Ade7953.active_power[0] + Ade7953.active_power[1]; - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d = %d"), + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d"), Ade7953.voltage_rms, Ade7953.period, Ade7953.current_rms[0], Ade7953.current_rms[1], current_rms_sum, - Ade7953.active_power[0], Ade7953.active_power[1], active_power_sum); + Ade7953.active_power[0], Ade7953.active_power[1]); if (Energy.power_on) { // Powered on Energy.voltage[0] = (float)Ade7953.voltage_rms / Settings->energy_voltage_calibration; @@ -208,19 +207,16 @@ void Ade7953GetData(void) Energy.current[channel] = 0; } else { Energy.current[channel] = (float)Ade7953.current_rms[channel] / (Settings->energy_current_calibration * 10); + Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } } + EnergyUpdateToday(); /* } else { // Powered off Energy.data_valid[0] = ENERGY_WATCHDOG; Energy.data_valid[1] = ENERGY_WATCHDOG; */ } - - if (active_power_sum) { - Energy.kWhtoday_delta += ((active_power_sum * (100000 / (Settings->energy_power_calibration / 10))) / 3600); - EnergyUpdateToday(); - } } void Ade7953EnergyEverySecond(void) diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino index 68534d425..db064af6a 100644 --- a/tasmota/xnrg_14_bl09xx.ino +++ b/tasmota/xnrg_14_bl09xx.ino @@ -212,43 +212,10 @@ void Bl09XXEverySecond(void) { memset(Bl09XX.power, 0, sizeof(Bl09XX.power)); } else { // Calculate energy by using active power - uint32_t energy_sum = 0; for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { - energy_sum += (Energy.active_power[channel] * 1000); + Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } - if (energy_sum) { - Energy.kWhtoday_delta += energy_sum / 36; - EnergyUpdateToday(); - } -/* - // Calculate energy by using active energy pulse count - bool update_today = false; - for (int chan = 0 ; chan < Energy.phase_count ; chan++ ) { - if (BL09XX_PULSES_NOT_INITIALIZED == Bl09XX.cf_pulses_last_time[chan]) { - Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; // Init after restart - } else { - uint32_t cf_pulses = 0; - if (Bl09XX.cf_pulses[chan] < Bl09XX.cf_pulses_last_time[chan]) { // Rolled over after 0xFFFFFF (16777215) pulses - cf_pulses = (0x1000000 - Bl09XX.cf_pulses_last_time[chan]) + Bl09XX.cf_pulses[chan]; - } else { - cf_pulses = Bl09XX.cf_pulses[chan] - Bl09XX.cf_pulses_last_time[chan]; - } - if (cf_pulses && Energy.active_power[chan]) { - uint32_t watt256 = (1638400 * 256) / Settings->energy_power_calibration; - uint32_t delta = (cf_pulses * watt256) / 36; - if (delta <= (4000 * 1000 / 36)) { // max load for SHP10: 4.00kW (3.68kW) - Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; - } else { - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Overload [%d] %d"), chan, delta); - Bl09XX.cf_pulses_last_time[chan] = BL09XX_PULSES_NOT_INITIALIZED; - } - update_today = true; - } - } - } - if (update_today) - EnergyUpdateToday(); -*/ + EnergyUpdateToday(); } // AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); diff --git a/tasmota/xnrg_19_cse7761.ino b/tasmota/xnrg_19_cse7761.ino index 2bf593a03..c61322d30 100644 --- a/tasmota/xnrg_19_cse7761.ino +++ b/tasmota/xnrg_19_cse7761.ino @@ -95,7 +95,7 @@ struct { uint32_t energy[2] = { 0 }; uint32_t active_power[2] = { 0 }; uint16_t coefficient[8] = { 0 }; - uint8_t energy_update = 0; + uint8_t energy_update[2] = { 0 }; uint8_t init = 4; uint8_t ready = 0; } CSE7761Data; @@ -476,7 +476,7 @@ void Cse7761GetData(void) { // Energy.current[channel] = (float)(((uint64_t)CSE7761Data.current_rms[channel] * CSE7761Data.coefficient[RmsIAC + channel]) >> 23) / 1000; // A Energy.current[channel] = (float)CSE7761Data.current_rms[channel] / Settings->energy_current_calibration; // A CSE7761Data.energy[channel] += Energy.active_power[channel]; - CSE7761Data.energy_update++; + CSE7761Data.energy_update[channel]++; } } } @@ -557,16 +557,14 @@ void Cse7761EverySecond(void) { } else { if (2 == CSE7761Data.ready) { - if (CSE7761Data.energy_update) { - uint32_t energy_sum = ((CSE7761Data.energy[0] + CSE7761Data.energy[1]) * 1000) / CSE7761Data.energy_update; - if (energy_sum) { - Energy.kWhtoday_delta += energy_sum / 36; - EnergyUpdateToday(); + for (uint32_t channel = 0; channel < 2; channel++) { + if (CSE7761Data.energy_update[channel]) { + Energy.kWhtoday_delta[channel] += ((CSE7761Data.energy[channel] * 1000) / CSE7761Data.energy_update[channel]) / 36; + CSE7761Data.energy[channel] = 0; + CSE7761Data.energy_update[channel] = 0; } + EnergyUpdateToday(); } - CSE7761Data.energy[0] = 0; - CSE7761Data.energy[1] = 0; - CSE7761Data.energy_update = 0; } } } diff --git a/tasmota/xnrg_30_dummy.ino b/tasmota/xnrg_30_dummy.ino index dd8c77848..4aa308fdb 100644 --- a/tasmota/xnrg_30_dummy.ino +++ b/tasmota/xnrg_30_dummy.ino @@ -44,7 +44,6 @@ void NrgDummyEverySecond(void) { if (Energy.power_on) { // Powered on - float energy = 0; for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { Energy.voltage[channel] = ((float)Settings->energy_voltage_calibration / 100); // V Energy.frequency[channel] = ((float)Settings->energy_frequency_calibration / 100); // Hz @@ -54,16 +53,12 @@ void NrgDummyEverySecond(void) { Energy.current[channel] = 0; } else { Energy.current[channel] = ((float)Settings->energy_current_calibration / 100000); // A - energy += Energy.active_power[channel]; + Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } Energy.data_valid[channel] = 0; } } - - if (energy > 0) { - Energy.kWhtoday_delta += energy * 1000 / 36; - EnergyUpdateToday(); - } + EnergyUpdateToday(); } } diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 1d38f7b03..caa2330fa 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -268,10 +268,10 @@ void HandleMetrics(void) { Energy.active_power[0], Settings->flag2.wattage_resolution, nullptr); WritePromMetricDec(PSTR("energy_power_kilowatts_daily"), kPromMetricCounter, - Energy.daily, Settings->flag2.energy_resolution, nullptr); + Energy.daily_sum, Settings->flag2.energy_resolution, nullptr); WritePromMetricDec(PSTR("energy_power_kilowatts_total"), kPromMetricCounter, - Energy.total, Settings->flag2.energy_resolution, nullptr); + Energy.total_sum, Settings->flag2.energy_resolution, nullptr); #endif for (uint32_t device = 0; device < TasmotaGlobal.devices_present; device++) { From 9b35c54ed1622e1f9200d01790a742c1b3f1e016 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 29 Sep 2021 14:53:23 +0200 Subject: [PATCH 261/317] Revert "Add support for split energy totals" This reverts commit d3fc03d3980c25cd8b66063405bcab12adadaff5. --- CHANGELOG.md | 3 - RELEASENOTES.md | 2 - tasmota/i18n.h | 3 - tasmota/settings.h | 2 +- tasmota/xdrv_03_energy.ino | 509 +++++++++++++----------------- tasmota/xdrv_10_scripter.ino | 8 +- tasmota/xdrv_11_knx.ino | 21 +- tasmota/xdrv_16_tuyamcu.ino | 4 +- tasmota/xdrv_45_shelly_dimmer.ino | 2 +- tasmota/xnrg_01_hlw8012.ino | 2 +- tasmota/xnrg_02_cse7766.ino | 2 +- tasmota/xnrg_03_pzem004t.ino | 5 - tasmota/xnrg_04_mcp39f501.ino | 2 +- tasmota/xnrg_05_pzem_ac.ino | 7 +- tasmota/xnrg_06_pzem_dc.ino | 7 +- tasmota/xnrg_07_ade7953.ino | 12 +- tasmota/xnrg_14_bl09xx.ino | 37 ++- tasmota/xnrg_19_cse7761.ino | 18 +- tasmota/xnrg_30_dummy.ino | 9 +- tasmota/xsns_75_prometheus.ino | 4 +- 20 files changed, 307 insertions(+), 352 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0418b3302..a1b9bc5f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,6 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.5.0.9] -### Added -- Command ``SetOption129 1`` to enable split total energy results (#13030) -- Commands ``EnergyTotal``, ``EnergyToday`` and ``EnergyYesterday`` to (re)set energy values ## [9.5.0.8] 20210927 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8e93548ab..f75ecbb9e 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,12 +104,10 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) -- Command ``SetOption129 1`` to enable split total energy results [#13030](https://github.com/arendst/Tasmota/issues/13030) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) - Command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests [#13209](https://github.com/arendst/Tasmota/issues/13209) -- Commands ``EnergyTotal``, ``EnergyToday`` and ``EnergyYesterday`` to (re)set energy values - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 1e025318d..41c52f10b 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -433,9 +433,6 @@ #define D_CMND_CURRENTLOW "CurrentLow" #define D_CMND_CURRENTHIGH "CurrentHigh" #define D_CMND_ENERGYRESET "EnergyReset" -#define D_CMND_ENERGYTODAY "EnergyToday" -#define D_CMND_ENERGYYESTERDAY "EnergyYesterday" -#define D_CMND_ENERGYTOTAL "EnergyTotal" #define D_CMND_POWERSET "PowerSet" #define D_CMND_VOLTAGESET "VoltageSet" #define D_CMND_CURRENTSET "CurrentSet" diff --git a/tasmota/settings.h b/tasmota/settings.h index 91b1ff552..ee83f44d3 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -158,7 +158,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t ds18x20_mean : 1; // bit 12 (v9.3.1.2) - SetOption126 - (DS18x20) Enable arithmetic mean over teleperiod for JSON temperature (1) uint32_t wifi_no_sleep : 1; // bit 13 (v9.5.0.2) - SetOption127 - (Wifi) Keep wifi in no-sleep mode, prevents some occasional unresponsiveness uint32_t disable_referer_chk : 1; // bit 14 (v9.5.0.5) - SetOption128 - (Web) Allow access without referer check - uint32_t energy_phase : 1; // bit 15 (v9.5.0.9) - SetOption129 - (Energy) Show phase information + uint32_t spare15 : 1; // bit 15 uint32_t spare16 : 1; // bit 16 uint32_t spare17 : 1; // bit 17 uint32_t spare18 : 1; // bit 18 diff --git a/tasmota/xdrv_03_energy.ino b/tasmota/xdrv_03_energy.ino index e0a73321c..2e679a497 100644 --- a/tasmota/xdrv_03_energy.ino +++ b/tasmota/xdrv_03_energy.ino @@ -56,7 +56,7 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|" #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION - D_CMND_ENERGYRESET "|" D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_TARIFF; + D_CMND_ENERGYRESET "|" D_CMND_TARIFF; void (* const EnergyCommand[])(void) PROGMEM = { &CmndPowerCal, &CmndVoltageCal, &CmndCurrentCal, &CmndFrequencyCal, @@ -69,9 +69,9 @@ void (* const EnergyCommand[])(void) PROGMEM = { &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow, #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION - &CmndEnergyReset, &CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndTariff}; + &CmndEnergyReset, &CmndTariff}; -const char kEnergyPhases[] PROGMEM = "|%*_f / %*_f|%*_f / %*_f / %*_f||[%*_f,%*_f]|[%*_f,%*_f,%*_f]"; +const char kEnergyPhases[] PROGMEM = "|%s / %s|%s / %s / %s||[%s,%s]|[%s,%s,%s]"; struct ENERGY { float voltage[ENERGY_MAX_PHASES]; // 123.1 V @@ -85,17 +85,15 @@ struct ENERGY { float import_active[ENERGY_MAX_PHASES]; // 123.123 kWh #endif // SDM630_IMPORT || SDM72_IMPEXP float export_active[ENERGY_MAX_PHASES]; // 123.123 kWh - float start_energy[ENERGY_MAX_PHASES]; // 12345.12345 kWh total previous - float daily[ENERGY_MAX_PHASES]; // 123.123 kWh - float total[ENERGY_MAX_PHASES]; // 12345.12345 kWh total energy - float daily_sum; // 123.123 kWh - float total_sum; // 12345.12345 kWh total energy - float yesterday_sum; // 123.123 kWh - uint32_t kWhtoday_delta[ENERGY_MAX_PHASES]; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) - uint32_t kWhtoday_offset[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily - uint32_t kWhtoday[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily - uint32_t period[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + float start_energy; // 12345.12345 kWh total previous + float daily; // 123.123 kWh + float total; // 12345.12345 kWh total energy + + unsigned long kWhtoday_delta; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) + unsigned long kWhtoday_offset; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + unsigned long kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + unsigned long period; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily uint8_t fifth_second; uint8_t command_code; @@ -136,38 +134,27 @@ Ticker ticker_energy; /********************************************************************************************/ -char* EnergyFormatIndex(char* result, float* input, uint32_t resolution, bool json, uint32_t index, bool single = false) { - char layout[20]; +char* EnergyFormatIndex(char* result, char* input, bool json, uint32_t index, bool single = false) +{ + char layout[16]; GetTextIndexed(layout, sizeof(layout), (index -1) + (ENERGY_MAX_PHASES * json), kEnergyPhases); switch (index) { case 2: - ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, resolution, &input[0], resolution, &input[1]); + snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, input, input + FLOATSZ); // Dirty break; case 3: - ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, resolution, &input[0], resolution, &input[1], resolution, &input[2]); + snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, input, input + FLOATSZ, input + FLOATSZ + FLOATSZ); // Even dirtier break; default: - ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, PSTR("%*_f"), resolution, &input[0]); + snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, input); } return result; } -char* EnergyFormat(char* result, float* input, uint32_t resolution, bool json, bool single = false) { +char* EnergyFormat(char* result, char* input, bool json, bool single = false) +{ uint8_t index = (single) ? 1 : Energy.phase_count; // 1,2,3 - return EnergyFormatIndex(result, input, resolution, json, index, single); -} - -char* EnergyFormatSum(char* result, float* input, uint32_t resolution, bool json, bool single = false) { - uint8_t index = (single) ? 1 : Energy.phase_count; // 1,2,3 - float input_sum = 0.0; - if (!Settings->flag5.energy_phase) { - for (uint32_t i = 0; i < index; i++) { - input_sum += input[i]; - } - input = &input_sum; - index = 1; - } - return EnergyFormatIndex(result, input, resolution, json, index, single); + return EnergyFormatIndex(result, input, json, index, single); } /********************************************************************************************/ @@ -196,30 +183,22 @@ bool EnergyTariff1Active() // Off-Peak hours } } -void EnergyUpdateToday(void) { - Energy.total_sum = 0.0; - Energy.yesterday_sum = 0.0; - Energy.daily_sum = 0.0; - for (uint32_t i = 0; i < Energy.phase_count; i++) { - if (Energy.kWhtoday_delta[i] > 1000) { - uint32_t delta = Energy.kWhtoday_delta[i] / 1000; - Energy.kWhtoday_delta[i] -= (delta * 1000); - Energy.kWhtoday[i] += delta; - } - - RtcSettings.energy_kWhtoday_ph[i] = Energy.kWhtoday_offset[i] + Energy.kWhtoday[i]; - Energy.daily[i] = (float)(RtcSettings.energy_kWhtoday_ph[i]) / 100000; - Energy.total[i] = (float)(RtcSettings.energy_kWhtotal_ph[i] + RtcSettings.energy_kWhtoday_ph[i]) / 100000; - - Energy.total_sum += Energy.total[i]; - Energy.yesterday_sum += (float)Settings->energy_kWhyesterday_ph[i] / 100000; - Energy.daily_sum += Energy.daily[i]; +void EnergyUpdateToday(void) +{ + if (Energy.kWhtoday_delta > 1000) { + unsigned long delta = Energy.kWhtoday_delta / 1000; + Energy.kWhtoday_delta -= (delta * 1000); + Energy.kWhtoday += delta; } + RtcSettings.energy_kWhtoday = Energy.kWhtoday_offset + Energy.kWhtoday; + Energy.daily = (float)(RtcSettings.energy_kWhtoday) / 100000; + Energy.total = (float)(RtcSettings.energy_kWhtotal + RtcSettings.energy_kWhtoday) / 100000; + if (RtcTime.valid){ // We calc the difference only if we have a valid RTC time. - uint32_t energy_diff = (uint32_t)(Energy.total_sum * 100000) - RtcSettings.energy_usage.last_usage_kWhtotal; - RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total_sum * 100000); + uint32_t energy_diff = (uint32_t)(Energy.total * 100000) - RtcSettings.energy_usage.last_usage_kWhtotal; + RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total * 100000); uint32_t return_diff = 0; if (!isnan(Energy.export_active[0])) { @@ -246,26 +225,25 @@ void EnergyUpdateToday(void) { } } -void EnergyUpdateTotal(float value, bool kwh, uint32_t phase = 0); -void EnergyUpdateTotal(float value, bool kwh, uint32_t phase) +void EnergyUpdateTotal(float value, bool kwh) { // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total %4_f %sWh"), &value, (kwh) ? "k" : ""); uint32_t multiplier = (kwh) ? 100000 : 100; // kWh or Wh to deca milli Wh - if (0 == Energy.start_energy[phase] || (value < Energy.start_energy[phase])) { - Energy.start_energy[phase] = value; // Init after restart and handle roll-over if any + if (0 == Energy.start_energy || (value < Energy.start_energy)) { + Energy.start_energy = value; // Init after restart and handle roll-over if any } - else if (value != Energy.start_energy[phase]) { - Energy.kWhtoday[phase] = (unsigned long)((value - Energy.start_energy[phase]) * multiplier); + else if (value != Energy.start_energy) { + Energy.kWhtoday = (unsigned long)((value - Energy.start_energy) * multiplier); } - if ((Energy.total[phase] < (value - 0.01)) && // We subtract a little offset to avoid continuous updates + if ((Energy.total < (value - 0.01)) && // We subtract a little offset to avoid continuous updates Settings->flag3.hardware_energy_total) { // SetOption72 - Enable hardware energy total counter as reference (#6561) - RtcSettings.energy_kWhtotal_ph[phase] = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset[phase] - Energy.kWhtoday[phase]); - Settings->energy_kWhtotal_ph[phase] = RtcSettings.energy_kWhtotal_ph[phase]; - Energy.total[phase] = (float)(RtcSettings.energy_kWhtotal_ph[phase] + Energy.kWhtoday_offset[phase] + Energy.kWhtoday[phase]) / 100000; - Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset[phase]) ? LocalTime() : Midnight(); + RtcSettings.energy_kWhtotal = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset - Energy.kWhtoday); + Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; + Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; + Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total updated with hardware value")); } EnergyUpdateToday(); @@ -286,26 +264,23 @@ void Energy200ms(void) if (RtcTime.valid) { if (!Energy.kWhtoday_offset_init && (RtcTime.day_of_year == Settings->energy_kWhdoy)) { - for (uint32_t i = 0; i < 3; i++) { - Energy.kWhtoday_offset[i] = Settings->energy_kWhtoday_ph[i]; - } + Energy.kWhtoday_offset = Settings->energy_kWhtoday; Energy.kWhtoday_offset_init = true; } if (LocalTime() == Midnight()) { - for (uint32_t i = 0; i < 3; i++) { - Settings->energy_kWhyesterday_ph[i] = RtcSettings.energy_kWhtoday_ph[i]; + Settings->energy_kWhyesterday = RtcSettings.energy_kWhtoday; - RtcSettings.energy_kWhtotal_ph[i] += RtcSettings.energy_kWhtoday_ph[i]; - Settings->energy_kWhtotal_ph[i] = RtcSettings.energy_kWhtotal_ph[i]; + RtcSettings.energy_kWhtotal += RtcSettings.energy_kWhtoday; + Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; - Energy.period[i] -= RtcSettings.energy_kWhtoday_ph[i]; // this becomes a large unsigned, effectively a negative for EnergyShow calculation - Energy.kWhtoday[i] = 0; - Energy.kWhtoday_offset[i] = 0; - RtcSettings.energy_kWhtoday_ph[i] = 0; - Energy.start_energy[i] = 0; + Energy.period -= RtcSettings.energy_kWhtoday; // this becomes a large unsigned, effectively a negative for EnergyShow calculation + Energy.kWhtoday = 0; + Energy.kWhtoday_offset = 0; + RtcSettings.energy_kWhtoday = 0; + Energy.start_energy = 0; // Energy.kWhtoday_delta = 0; // dont zero this, we need to carry the remainder over to tomorrow - } + EnergyUpdateToday(); #if defined(USE_ENERGY_MARGIN_DETECTION) && defined(USE_ENERGY_POWER_LIMIT) Energy.max_energy_state = 3; @@ -327,10 +302,8 @@ void EnergySaveState(void) { Settings->energy_kWhdoy = (RtcTime.valid) ? RtcTime.day_of_year : 0; - for (uint32_t i = 0; i < 3; i++) { - Settings->energy_kWhtoday_ph[i] = RtcSettings.energy_kWhtoday_ph[i]; - Settings->energy_kWhtotal_ph[i] = RtcSettings.energy_kWhtotal_ph[i]; - } + Settings->energy_kWhtoday = RtcSettings.energy_kWhtoday; + Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; Settings->energy_usage = RtcSettings.energy_usage; } @@ -398,20 +371,12 @@ void EnergyMarginCheck(void) Energy.power_history[phase][2] = active_power; } if (jsonflg) { -/* char power_diff_chr[Energy.phase_count][FLOATSZ]; for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { dtostrfd(power_diff[phase], 0, power_diff_chr[phase]); } char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFormat(value_chr, power_diff_chr[0], 1)); -*/ - float power_diff_f[Energy.phase_count]; - for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { - power_diff_f[phase] = power_diff[phase]; - } - char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; - ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFormat(value_chr, power_diff_f, 0, 1)); } uint16_t energy_power_u = (uint16_t)(Energy.active_power[0]); @@ -502,7 +467,7 @@ void EnergyMarginCheck(void) // Max Energy if (Settings->energy_max_energy) { - uint16_t energy_daily_u = (uint16_t)(Energy.daily_sum * 1000); + uint16_t energy_daily_u = (uint16_t)(Energy.daily * 1000); if (!Energy.max_energy_state && (RtcTime.hour == Settings->energy_max_energy_start)) { Energy.max_energy_state = 1; ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); @@ -511,7 +476,7 @@ void EnergyMarginCheck(void) } else if ((1 == Energy.max_energy_state ) && (energy_daily_u >= Settings->energy_max_energy)) { Energy.max_energy_state = 2; - ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy.daily_sum); + ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy.daily); MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); SetAllPower(POWER_ALL_OFF, SRC_MAXENERGY); @@ -594,9 +559,48 @@ void CmndEnergyReset(void) { uint32_t params = ParseParameters(2, values); values[0] *= 100; - if ((XdrvMailbox.index > 3) && (XdrvMailbox.index <= 5)) { + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 5)) { if (params > 0) { switch (XdrvMailbox.index) { + case 1: + // Reset Energy Today + Energy.kWhtoday_offset = values[0]; + Energy.kWhtoday = 0; + Energy.kWhtoday_delta = 0; + Energy.start_energy = 0; + Energy.period = Energy.kWhtoday_offset; + Settings->energy_kWhtoday = Energy.kWhtoday_offset; + RtcSettings.energy_kWhtoday = Energy.kWhtoday_offset; + Energy.daily = (float)Energy.kWhtoday_offset / 100000; + if( params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + else { + if (!RtcSettings.energy_kWhtotal && !Energy.kWhtoday_offset) { + Settings->energy_kWhtotal_time = LocalTime(); + } + } + break; + case 2: + // Reset Energy Yesterday + Settings->energy_kWhyesterday = values[0]; + if( params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + break; + case 3: + // Reset Energy Total + RtcSettings.energy_kWhtotal = values[0]; + Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; +// Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; + if( params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + else { + Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); + } + RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total * 1000); + break; case 4: // Reset energy_usage.usage totals RtcSettings.energy_usage.usage1_kWhtotal = values[0]; @@ -619,100 +623,24 @@ void CmndEnergyReset(void) { } } + Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; + float energy_kWhyesterday = (float)Settings->energy_kWhyesterday / 100000; float usage1_kWhtotal = (float)Settings->energy_usage.usage1_kWhtotal / 100000; float usage2_kWhtotal = (float)Settings->energy_usage.usage2_kWhtotal / 100000; float return1_kWhtotal = (float)Settings->energy_usage.return1_kWhtotal / 100000; float return2_kWhtotal = (float)Settings->energy_usage.return2_kWhtotal / 100000; - Response_P(PSTR("{\"%s\":{\"" D_JSON_USAGE "\":[%*_f,%*_f],\"" D_JSON_EXPORT "\":[%*_f,%*_f]}}"), + Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%*_f,\"" D_JSON_YESTERDAY "\":%*_f,\"" D_JSON_TODAY "\":%*_f,\"" D_JSON_USAGE "\":[%*_f,%*_f],\"" D_JSON_EXPORT "\":[%*_f,%*_f]}}"), XdrvMailbox.command, + Settings->flag2.energy_resolution, &Energy.total, + Settings->flag2.energy_resolution, &energy_kWhyesterday, + Settings->flag2.energy_resolution, &Energy.daily, Settings->flag2.energy_resolution, &usage1_kWhtotal, Settings->flag2.energy_resolution, &usage2_kWhtotal, Settings->flag2.energy_resolution, &return1_kWhtotal, Settings->flag2.energy_resolution, &return2_kWhtotal); } -void CmndEnergyResponse(void) { - char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; // Used by EnergyFormatIndex - char value2_chr[FLOATSZ * ENERGY_MAX_PHASES]; - char value3_chr[FLOATSZ * ENERGY_MAX_PHASES]; - - float energy_yesterday_ph[3]; - for (uint32_t i = 0; i < Energy.phase_count; i++) { - energy_yesterday_ph[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000; - Energy.total[i] = (float)(RtcSettings.energy_kWhtotal_ph[i] + Energy.kWhtoday_offset[i] + Energy.kWhtoday[i]) / 100000; - } - - Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s}"), - XdrvMailbox.command, - EnergyFormat(value_chr, Energy.total, Settings->flag2.energy_resolution, true), - EnergyFormat(value2_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, true), - EnergyFormat(value3_chr, Energy.daily, Settings->flag2.energy_resolution, true)); -} - -void CmndEnergyTotal(void) { - uint32_t values[2] = { 0 }; - uint32_t params = ParseParameters(2, values); - values[0] *= 100; - - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { - uint32_t phase = XdrvMailbox.index -1; - // Reset Energy Total - RtcSettings.energy_kWhtotal_ph[phase] = values[0]; - Settings->energy_kWhtotal_ph[phase] = RtcSettings.energy_kWhtotal_ph[phase]; - if (params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } else { - Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset[phase]) ? LocalTime() : Midnight(); - } - RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total[phase] * 1000); - } - CmndEnergyResponse(); -} - -void CmndEnergyYesterday(void) { - uint32_t values[2] = { 0 }; - uint32_t params = ParseParameters(2, values); - values[0] *= 100; - - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { - uint32_t phase = XdrvMailbox.index -1; - // Reset Energy Yesterday - Settings->energy_kWhyesterday_ph[phase] = values[0]; - if (params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - } - CmndEnergyResponse(); -} -void CmndEnergyToday(void) { - uint32_t values[2] = { 0 }; - uint32_t params = ParseParameters(2, values); - values[0] *= 100; - - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { - uint32_t phase = XdrvMailbox.index -1; - // Reset Energy Today - Energy.kWhtoday_offset[phase] = values[0]; - Energy.kWhtoday[phase] = 0; - Energy.kWhtoday_delta[phase] = 0; - Energy.start_energy[phase] = 0; - Energy.period[phase] = Energy.kWhtoday_offset[phase]; - Settings->energy_kWhtoday_ph[phase] = Energy.kWhtoday_offset[phase]; - RtcSettings.energy_kWhtoday_ph[phase] = Energy.kWhtoday_offset[phase]; - Energy.daily[phase] = (float)Energy.kWhtoday_offset[phase] / 100000; - if (params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - else { - if (!RtcSettings.energy_kWhtotal_ph[phase] && !Energy.kWhtoday_offset[phase]) { - Settings->energy_kWhtotal_time = LocalTime(); - } - } - } - CmndEnergyResponse(); -} - void CmndTariff(void) { // Tariff1 22:00,23:00 - Tariff1 start hour for Standard Time and Daylight Savings Time // Tariff2 6:00,7:00 - Tariff2 start hour for Standard Time and Daylight Savings Time @@ -982,30 +910,15 @@ void EnergySnsInit(void) XnrgCall(FUNC_INIT); if (TasmotaGlobal.energy_driver) { - - // Update for split phase totals (v9.5.0.9) - if ((Settings->energy_kWhtoday > 0) && (0 == Settings->energy_kWhtoday_ph[0])) { - Settings->energy_kWhtoday_ph[0] = Settings->energy_kWhtoday; - Settings->energy_kWhyesterday_ph[0] = Settings->energy_kWhyesterday; - Settings->energy_kWhtotal_ph[0] = Settings->energy_kWhtotal; - RtcSettings.energy_kWhtoday_ph[0] = RtcSettings.energy_kWhtoday; - RtcSettings.energy_kWhtotal_ph[0] = RtcSettings.energy_kWhtotal; - Settings->energy_kWhtoday = 0; - } - // Energy.kWhtoday_offset = 0; // Do not use at Power On as Rtc was invalid (but has been restored from Settings already) if ((ResetReason() != REASON_DEFAULT_RST) && RtcSettingsValid()) { - for (uint32_t i = 0; i < 3; i++) { - Energy.kWhtoday_offset[i] = RtcSettings.energy_kWhtoday_ph[i]; - } + Energy.kWhtoday_offset = RtcSettings.energy_kWhtoday; Energy.kWhtoday_offset_init = true; } - for (uint32_t i = 0; i < 3; i++) { -// Energy.kWhtoday_ph[i] = 0; -// Energy.kWhtoday_delta[i] = 0; - Energy.period[i] = Energy.kWhtoday_offset[i]; - } +// Energy.kWhtoday = 0; +// Energy.kWhtoday_delta = 0; + Energy.period = Energy.kWhtoday_offset; EnergyUpdateToday(); ticker_energy.attach_ms(200, Energy200ms); } @@ -1031,71 +944,103 @@ const char HTTP_ENERGY_SNS4[] PROGMEM = #endif // SDM630_IMPORT || SDM72_IMPEXP #endif // USE_WEBSERVER -void EnergyShow(bool json) { - if (Energy.voltage_common) { - for (uint32_t i = 0; i < Energy.phase_count; i++) { +void EnergyShow(bool json) +{ + for (uint32_t i = 0; i < Energy.phase_count; i++) { + if (Energy.voltage_common) { Energy.voltage[i] = Energy.voltage[0]; } } - float apparent_power[Energy.phase_count]; - float reactive_power[Energy.phase_count]; - float power_factor[Energy.phase_count]; + float power_factor_knx = Energy.power_factor[0]; + + char apparent_power_chr[Energy.phase_count][FLOATSZ]; + char reactive_power_chr[Energy.phase_count][FLOATSZ]; + char power_factor_chr[Energy.phase_count][FLOATSZ]; + char frequency_chr[Energy.phase_count][FLOATSZ]; if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { for (uint32_t i = 0; i < Energy.phase_count; i++) { - apparent_power[i] = Energy.apparent_power[i]; - if (isnan(apparent_power[i])) { - apparent_power[i] = Energy.voltage[i] * Energy.current[i]; + float apparent_power = Energy.apparent_power[i]; + if (isnan(apparent_power)) { + apparent_power = Energy.voltage[i] * Energy.current[i]; } - if (apparent_power[i] < Energy.active_power[i]) { // Should be impossible - Energy.active_power[i] = apparent_power[i]; + if (apparent_power < Energy.active_power[i]) { // Should be impossible + Energy.active_power[i] = apparent_power; } - power_factor[i] = Energy.power_factor[i]; - if (isnan(power_factor[i])) { - power_factor[i] = (Energy.active_power[i] && apparent_power[i]) ? Energy.active_power[i] / apparent_power[i] : 0; - if (power_factor[i] > 1) { - power_factor[i] = 1; + float power_factor = Energy.power_factor[i]; + if (isnan(power_factor)) { + power_factor = (Energy.active_power[i] && apparent_power) ? Energy.active_power[i] / apparent_power : 0; + if (power_factor > 1) { + power_factor = 1; } } + if (0 == i) { power_factor_knx = power_factor; } - reactive_power[i] = Energy.reactive_power[i]; - if (isnan(reactive_power[i])) { - reactive_power[i] = 0; - uint32_t difference = ((uint32_t)(apparent_power[i] * 100) - (uint32_t)(Energy.active_power[i] * 100)) / 10; - if ((Energy.current[i] > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power[i] * 100 / 1000)))) { + float reactive_power = Energy.reactive_power[i]; + if (isnan(reactive_power)) { + reactive_power = 0; + uint32_t difference = ((uint32_t)(apparent_power * 100) - (uint32_t)(Energy.active_power[i] * 100)) / 10; + if ((Energy.current[i] > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power * 100 / 1000)))) { // calculating reactive power only if current is greater than 0.005A and // difference between active and apparent power is greater than 1.5W or 1% - //reactive_power[i] = (float)(RoundSqrtInt((uint64_t)(apparent_power[i] * apparent_power[i] * 100) - (uint64_t)(Energy.active_power[i] * Energy.active_power[i] * 100))) / 10; - float power_diff = apparent_power[i] * apparent_power[i] - Energy.active_power[i] * Energy.active_power[i]; + //reactive_power = (float)(RoundSqrtInt((uint64_t)(apparent_power * apparent_power * 100) - (uint64_t)(Energy.active_power[i] * Energy.active_power[i] * 100))) / 10; + float power_diff = apparent_power * apparent_power - Energy.active_power[i] * Energy.active_power[i]; if (power_diff < 10737418) // 2^30 / 100 (RoundSqrtInt is limited to 2^30-1) - reactive_power[i] = (float)(RoundSqrtInt((uint32_t)(power_diff * 100.0))) / 10.0; + reactive_power = (float)(RoundSqrtInt((uint32_t)(power_diff * 100.0))) / 10.0; else - reactive_power[i] = (float)(SqrtInt((uint32_t)(power_diff))); + reactive_power = (float)(SqrtInt((uint32_t)(power_diff))); } } + dtostrfd(apparent_power, Settings->flag2.wattage_resolution, apparent_power_chr[i]); + dtostrfd(reactive_power, Settings->flag2.wattage_resolution, reactive_power_chr[i]); + dtostrfd(power_factor, 2, power_factor_chr[i]); } } + for (uint32_t i = 0; i < Energy.phase_count; i++) { + float frequency = Energy.frequency[i]; + if (isnan(Energy.frequency[i])) { + frequency = 0; + } + dtostrfd(frequency, Settings->flag2.frequency_resolution, frequency_chr[i]); + } } - float active_power_sum = 0.0; - float energy_yesterday_ph[Energy.phase_count]; + char voltage_chr[Energy.phase_count][FLOATSZ]; + char current_chr[Energy.phase_count][FLOATSZ]; + char active_power_chr[Energy.phase_count][FLOATSZ]; +#if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) + char import_active_chr[Energy.phase_count][FLOATSZ]; +#endif // SDM630_IMPORT || SDM72_IMPEXP + char export_active_chr[Energy.phase_count][FLOATSZ]; for (uint32_t i = 0; i < Energy.phase_count; i++) { - energy_yesterday_ph[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000; - - active_power_sum += Energy.active_power[i]; + dtostrfd(Energy.voltage[i], Settings->flag2.voltage_resolution, voltage_chr[i]); + dtostrfd(Energy.current[i], Settings->flag2.current_resolution, current_chr[i]); + dtostrfd(Energy.active_power[i], Settings->flag2.wattage_resolution, active_power_chr[i]); +#if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) + dtostrfd(Energy.import_active[i], Settings->flag2.energy_resolution, import_active_chr[i]); +#endif // SDM630_IMPORT || SDM72_IMPEXP + dtostrfd(Energy.export_active[i], Settings->flag2.energy_resolution, export_active_chr[i]); } + char energy_total_chr[FLOATSZ]; + dtostrfd(Energy.total, Settings->flag2.energy_resolution, energy_total_chr); + char energy_daily_chr[FLOATSZ]; + dtostrfd(Energy.daily, Settings->flag2.energy_resolution, energy_daily_chr); + char energy_yesterday_chr[FLOATSZ]; + dtostrfd((float)Settings->energy_kWhyesterday / 100000, Settings->flag2.energy_resolution, energy_yesterday_chr); + + bool energy_tariff = false; - float energy_usage[2]; - float energy_return[2]; + char energy_usage_chr[2][FLOATSZ]; + char energy_return_chr[2][FLOATSZ]; if (Settings->tariff[0][0] != Settings->tariff[1][0]) { - energy_usage[0] = (float)RtcSettings.energy_usage.usage1_kWhtotal / 100000; // Tariff1 - energy_usage[1] = (float)RtcSettings.energy_usage.usage2_kWhtotal / 100000; // Tariff2 - energy_return[0] = (float)RtcSettings.energy_usage.return1_kWhtotal / 100000; // Tariff1 - energy_return[1] = (float)RtcSettings.energy_usage.return2_kWhtotal / 100000; // Tariff2 + dtostrfd((float)RtcSettings.energy_usage.usage1_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_usage_chr[0]); // Tariff1 + dtostrfd((float)RtcSettings.energy_usage.usage2_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_usage_chr[1]); // Tariff2 + dtostrfd((float)RtcSettings.energy_usage.return1_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_return_chr[0]); // Tariff1 + dtostrfd((float)RtcSettings.energy_usage.return2_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_return_chr[1]); // Tariff2 energy_tariff = true; } @@ -1108,94 +1053,86 @@ void EnergyShow(bool json) { ResponseAppend_P(PSTR(",\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL_START_TIME "\":\"%s\",\"" D_JSON_TOTAL "\":%s"), GetDateAndTime(DT_ENERGY).c_str(), - EnergyFormatSum(value_chr, Energy.total, Settings->flag2.energy_resolution, json)); + energy_total_chr); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_TOTAL D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_usage, Settings->flag2.energy_resolution, json, 2)); + EnergyFormatIndex(value_chr, energy_usage_chr[0], json, 2)); } ResponseAppend_P(PSTR(",\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s"), - EnergyFormatSum(value_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, json), - EnergyFormatSum(value2_chr, Energy.daily, Settings->flag2.energy_resolution, json)); + energy_yesterday_chr, + energy_daily_chr); #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) if (!isnan(Energy.import_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT_ACTIVE "\":%s"), - EnergyFormat(value_chr, Energy.import_active, Settings->flag2.energy_resolution, json)); + EnergyFormat(value_chr, import_active_chr[0], json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_return, Settings->flag2.energy_resolution, json, 2)); + EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); } } #endif // SDM630_IMPORT || SDM72_IMPEXP if (!isnan(Energy.export_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT_ACTIVE "\":%s"), - EnergyFormat(value_chr, Energy.export_active, Settings->flag2.energy_resolution, json)); + EnergyFormat(value_chr, export_active_chr[0], json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_return, Settings->flag2.energy_resolution, json, 2)); + EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); } } if (show_energy_period) { - float energy_period[Energy.phase_count]; - for (uint32_t i = 0; i < Energy.phase_count; i++) { - energy_period[i] = (float)(RtcSettings.energy_kWhtoday_ph[i] - Energy.period[i]) / 100; - Energy.period[i] = RtcSettings.energy_kWhtoday_ph[i]; - } - ResponseAppend_P(PSTR(",\"" D_JSON_PERIOD "\":%s"), - EnergyFormat(value_chr, energy_period, Settings->flag2.wattage_resolution, json)); + float energy = (float)(RtcSettings.energy_kWhtoday - Energy.period) / 100; + Energy.period = RtcSettings.energy_kWhtoday; + char energy_period_chr[FLOATSZ]; + dtostrfd(energy, Settings->flag2.wattage_resolution, energy_period_chr); + ResponseAppend_P(PSTR(",\"" D_JSON_PERIOD "\":%s"), energy_period_chr); } - ResponseAppend_P(PSTR(",\"" D_JSON_POWERUSAGE "\":%s"), - EnergyFormat(value_chr, Energy.active_power, Settings->flag2.wattage_resolution, json)); + EnergyFormat(value_chr, active_power_chr[0], json)); if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { ResponseAppend_P(PSTR(",\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s"), - EnergyFormat(value_chr, apparent_power, Settings->flag2.wattage_resolution, json), - EnergyFormat(value2_chr, reactive_power, Settings->flag2.wattage_resolution, json), - EnergyFormat(value3_chr, power_factor, 2, json)); + EnergyFormat(value_chr, apparent_power_chr[0], json), + EnergyFormat(value2_chr, reactive_power_chr[0], json), + EnergyFormat(value3_chr, power_factor_chr[0], json)); } if (!isnan(Energy.frequency[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"), - EnergyFormat(value_chr, Energy.frequency, Settings->flag2.frequency_resolution, json, Energy.frequency_common)); + EnergyFormat(value_chr, frequency_chr[0], json, Energy.frequency_common)); } } if (Energy.voltage_available) { ResponseAppend_P(PSTR(",\"" D_JSON_VOLTAGE "\":%s"), - EnergyFormat(value_chr, Energy.voltage, Settings->flag2.voltage_resolution, json, Energy.voltage_common)); + EnergyFormat(value_chr, voltage_chr[0], json, Energy.voltage_common)); } if (Energy.current_available) { ResponseAppend_P(PSTR(",\"" D_JSON_CURRENT "\":%s"), - EnergyFormat(value_chr, Energy.current, Settings->flag2.current_resolution, json)); + EnergyFormat(value_chr, current_chr[0], json)); } XnrgCall(FUNC_JSON_APPEND); ResponseJsonEnd(); #ifdef USE_DOMOTICZ if (show_energy_period) { // Only send if telemetry - char temp_chr[FLOATSZ]; - if (Energy.voltage_available) { - dtostrfd(Energy.voltage[0], Settings->flag2.voltage_resolution, temp_chr); - DomoticzSensor(DZ_VOLTAGE, temp_chr); // Voltage - } - if (Energy.current_available) { - dtostrfd(Energy.current[0], Settings->flag2.current_resolution, temp_chr); - DomoticzSensor(DZ_CURRENT, temp_chr); // Current - } - dtostrfd(Energy.total_sum * 1000, 1, temp_chr); - DomoticzSensorPowerEnergy((int)active_power_sum, temp_chr); // PowerUsage, EnergyToday + dtostrfd(Energy.total * 1000, 1, energy_total_chr); + DomoticzSensorPowerEnergy((int)Energy.active_power[0], energy_total_chr); // PowerUsage, EnergyToday - char energy_usage_chr[2][FLOATSZ]; - char energy_return_chr[2][FLOATSZ]; dtostrfd((float)RtcSettings.energy_usage.usage1_kWhtotal / 100, 1, energy_usage_chr[0]); // Tariff1 dtostrfd((float)RtcSettings.energy_usage.usage2_kWhtotal / 100, 1, energy_usage_chr[1]); // Tariff2 dtostrfd((float)RtcSettings.energy_usage.return1_kWhtotal / 100, 1, energy_return_chr[0]); dtostrfd((float)RtcSettings.energy_usage.return2_kWhtotal / 100, 1, energy_return_chr[1]); - DomoticzSensorP1SmartMeter(energy_usage_chr[0], energy_usage_chr[1], energy_return_chr[0], energy_return_chr[1], (int)active_power_sum); + DomoticzSensorP1SmartMeter(energy_usage_chr[0], energy_usage_chr[1], energy_return_chr[0], energy_return_chr[1], (int)Energy.active_power[0]); + if (Energy.voltage_available) { + DomoticzSensor(DZ_VOLTAGE, voltage_chr[0]); // Voltage + } + if (Energy.current_available) { + DomoticzSensor(DZ_CURRENT, current_chr[0]); // Current + } } #endif // USE_DOMOTICZ #ifdef USE_KNX @@ -1206,46 +1143,42 @@ void EnergyShow(bool json) { if (Energy.current_available) { KnxSensor(KNX_ENERGY_CURRENT, Energy.current[0]); } - KnxSensor(KNX_ENERGY_POWER, active_power_sum); + KnxSensor(KNX_ENERGY_POWER, Energy.active_power[0]); if (!Energy.type_dc) { - KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor[0]); + KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor_knx); } - KnxSensor(KNX_ENERGY_DAILY, Energy.daily_sum); - KnxSensor(KNX_ENERGY_TOTAL, Energy.total_sum); - KnxSensor(KNX_ENERGY_YESTERDAY, Energy.yesterday_sum); + KnxSensor(KNX_ENERGY_DAILY, Energy.daily); + KnxSensor(KNX_ENERGY_TOTAL, Energy.total); + KnxSensor(KNX_ENERGY_YESTERDAY, (float)Settings->energy_kWhyesterday / 100000); } #endif // USE_KNX #ifdef USE_WEBSERVER } else { if (Energy.voltage_available) { - WSContentSend_PD(HTTP_SNS_VOLTAGE, EnergyFormat(value_chr, Energy.voltage, Settings->flag2.voltage_resolution, json, Energy.voltage_common)); - } - if (!Energy.type_dc) { - if (!isnan(Energy.frequency[0])) { - WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"), - EnergyFormat(value_chr, Energy.frequency, Settings->flag2.frequency_resolution, json, Energy.frequency_common)); - } + WSContentSend_PD(HTTP_SNS_VOLTAGE, EnergyFormat(value_chr, voltage_chr[0], json, Energy.voltage_common)); } if (Energy.current_available) { - WSContentSend_PD(HTTP_SNS_CURRENT, EnergyFormat(value_chr, Energy.current, Settings->flag2.current_resolution, json)); + WSContentSend_PD(HTTP_SNS_CURRENT, EnergyFormat(value_chr, current_chr[0], json)); } - WSContentSend_PD(HTTP_SNS_POWER, EnergyFormat(value_chr, Energy.active_power, Settings->flag2.wattage_resolution, json)); + WSContentSend_PD(HTTP_SNS_POWER, EnergyFormat(value_chr, active_power_chr[0], json)); if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { - WSContentSend_PD(HTTP_ENERGY_SNS1, EnergyFormat(value_chr, apparent_power, Settings->flag2.wattage_resolution, json), - EnergyFormat(value2_chr, reactive_power, Settings->flag2.wattage_resolution, json), - EnergyFormat(value3_chr, power_factor, 2, json)); + WSContentSend_PD(HTTP_ENERGY_SNS1, EnergyFormat(value_chr, apparent_power_chr[0], json), + EnergyFormat(value2_chr, reactive_power_chr[0], json), + EnergyFormat(value3_chr, power_factor_chr[0], json)); + } + if (!isnan(Energy.frequency[0])) { + WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"), + EnergyFormat(value_chr, frequency_chr[0], json, Energy.frequency_common)); } } - WSContentSend_PD(HTTP_ENERGY_SNS2, EnergyFormatSum(value_chr, Energy.daily, Settings->flag2.energy_resolution, json), - EnergyFormatSum(value2_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, json), - EnergyFormatSum(value3_chr, Energy.total, Settings->flag2.energy_resolution, json)); + WSContentSend_PD(HTTP_ENERGY_SNS2, energy_daily_chr, energy_yesterday_chr, energy_total_chr); if (!isnan(Energy.export_active[0])) { - WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, Energy.export_active, Settings->flag2.energy_resolution, json)); + WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, export_active_chr[0], json)); } #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) if (!isnan(Energy.import_active[0])) { - WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, Energy.import_active, Settings->flag2.energy_resolution, json)); + WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, import_active_chr[0], json)); } #endif // SDM630_IMPORT || SDM72_IMPEXP diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index c4d21a723..7d8578129 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -1946,7 +1946,7 @@ chknext: while (*lp==' ') lp++; switch ((uint32_t)fvar) { case 0: - fvar = Energy.total_sum; + fvar = Energy.total; break; case 1: fvar = Energy.voltage[0]; @@ -1976,13 +1976,13 @@ chknext: fvar = Energy.active_power[2]; break; case 10: - fvar = Energy.start_energy[0]; + fvar = Energy.start_energy; break; case 11: - fvar = Energy.daily_sum; + fvar = Energy.daily; break; case 12: - fvar = Energy.yesterday_sum; + fvar = (float)Settings->energy_kWhyesterday/100000.0; break; default: diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino index 84f5e867e..12d663d9d 100644 --- a/tasmota/xdrv_11_knx.ino +++ b/tasmota/xdrv_11_knx.ino @@ -645,7 +645,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) } } else if (chan->type == KNX_ENERGY_VOLTAGE) // Reply KNX_ENERGY_VOLTAGE - { + { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); if (Settings->flag.knx_enable_enhancement) { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); @@ -678,26 +678,27 @@ void KNX_CB_Action(message_t const &msg, void *arg) } else if (chan->type == KNX_ENERGY_YESTERDAY) // Reply KNX_ENERGY_YESTERDAY { - knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); + float energy_kWhyesterday = (float)Settings->energy_kWhyesterday / 100000; + knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); - knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); + knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); + knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); } } else if (chan->type == KNX_ENERGY_DAILY) // Reply KNX_ENERGY_DAILY { - knx.answer_4byte_float(msg.received_on, Energy.daily_sum); + knx.answer_4byte_float(msg.received_on, Energy.daily); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.daily_sum); - knx.answer_4byte_float(msg.received_on, Energy.daily_sum); + knx.answer_4byte_float(msg.received_on, Energy.daily); + knx.answer_4byte_float(msg.received_on, Energy.daily); } } else if (chan->type == KNX_ENERGY_TOTAL) // Reply KNX_ENERGY_TOTAL { - knx.answer_4byte_float(msg.received_on, Energy.total_sum); + knx.answer_4byte_float(msg.received_on, Energy.total); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.total_sum); - knx.answer_4byte_float(msg.received_on, Energy.total_sum); + knx.answer_4byte_float(msg.received_on, Energy.total); + knx.answer_4byte_float(msg.received_on, Energy.total); } } #ifdef USE_RULES diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 395fdef57..53dcc770e 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -753,7 +753,7 @@ void TuyaProcessStatePacket(void) { if (RtcTime.valid) { if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { - Energy.kWhtoday[0] += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; + Energy.kWhtoday += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; EnergyUpdateToday(); } Tuya.lastPowerCheckTime = Rtc.utc_time; @@ -885,7 +885,7 @@ void TuyaProcessStatePacket(void) { if (RtcTime.valid) { if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { - Energy.kWhtoday[0] += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; + Energy.kWhtoday += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; EnergyUpdateToday(); } Tuya.lastPowerCheckTime = Rtc.utc_time; diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino index d1f317bfc..b96b83d4b 100644 --- a/tasmota/xdrv_45_shelly_dimmer.ino +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -540,7 +540,7 @@ bool ShdPacketProcess(void) #ifdef SHELLY_DIMMER_DEBUG AddLog(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME "%4_f W is %u dmWh during %u ms"), &Energy.active_power[0], deca_microWh, time_passed); #endif // SHELLY_DIMMER_DEBUG - Energy.kWhtoday_delta[0] += deca_microWh; + Energy.kWhtoday_delta += deca_microWh; EnergyUpdateToday(); } Shd.last_power_check = millis(); diff --git a/tasmota/xnrg_01_hlw8012.ino b/tasmota/xnrg_01_hlw8012.ino index 310e64360..c494a0b46 100644 --- a/tasmota/xnrg_01_hlw8012.ino +++ b/tasmota/xnrg_01_hlw8012.ino @@ -214,7 +214,7 @@ void HlwEverySecond(void) { hlw_len = 10000 * 100 / Hlw.energy_period_counter; // Add *100 to fix rounding on loads at 3.6kW (#9160) Hlw.energy_period_counter = 0; if (hlw_len) { - Energy.kWhtoday_delta[0] += (((Hlw.power_ratio * Settings->energy_power_calibration) / 36) * 100) / hlw_len; + Energy.kWhtoday_delta += (((Hlw.power_ratio * Settings->energy_power_calibration) / 36) * 100) / hlw_len; EnergyUpdateToday(); } } diff --git a/tasmota/xnrg_02_cse7766.ino b/tasmota/xnrg_02_cse7766.ino index 445781b37..9fc73549a 100644 --- a/tasmota/xnrg_02_cse7766.ino +++ b/tasmota/xnrg_02_cse7766.ino @@ -205,7 +205,7 @@ void CseEverySecond(void) { // prevent invalid load delta steps even checksum is valid but allow up to 4kW (issue #7155): if (delta <= (4000 * 1000 / 36)) { // max load for S31/Pow R2: 4.00kW Cse.cf_pulses_last_time = Cse.cf_pulses; - Energy.kWhtoday_delta[0] += delta; + Energy.kWhtoday_delta += delta; } else { AddLog(LOG_LEVEL_DEBUG, PSTR("CSE: Overload")); diff --git a/tasmota/xnrg_03_pzem004t.ino b/tasmota/xnrg_03_pzem004t.ino index d132fccfa..1abd8d95a 100644 --- a/tasmota/xnrg_03_pzem004t.ino +++ b/tasmota/xnrg_03_pzem004t.ino @@ -192,7 +192,6 @@ void PzemEvery250ms(void) Energy.active_power[Pzem.phase] = value; break; case 4: // Total energy as 99999Wh -/* Pzem.energy += value; if (Pzem.phase == Energy.phase_count -1) { if (Pzem.energy > Pzem.last_energy) { // Handle missed phase @@ -203,10 +202,6 @@ void PzemEvery250ms(void) } Pzem.energy = 0; } -*/ - if (TasmotaGlobal.uptime > PZEM_STABILIZE) { - EnergyUpdateTotal(value, false, Pzem.phase); - } break; } Pzem.read_state++; diff --git a/tasmota/xnrg_04_mcp39f501.ino b/tasmota/xnrg_04_mcp39f501.ino index 7601731a4..9f9ea562e 100644 --- a/tasmota/xnrg_04_mcp39f501.ino +++ b/tasmota/xnrg_04_mcp39f501.ino @@ -534,7 +534,7 @@ void McpEverySecond(void) } if (mcp_active_power) { - Energy.kWhtoday_delta[0] += ((mcp_active_power * 10) / 36); + Energy.kWhtoday_delta += ((mcp_active_power * 10) / 36); EnergyUpdateToday(); } diff --git a/tasmota/xnrg_05_pzem_ac.ino b/tasmota/xnrg_05_pzem_ac.ino index ecf67fab0..acf826c69 100644 --- a/tasmota/xnrg_05_pzem_ac.ino +++ b/tasmota/xnrg_05_pzem_ac.ino @@ -78,7 +78,6 @@ void PzemAcEverySecond(void) Energy.frequency[PzemAc.phase] = (float)((buffer[17] << 8) + buffer[18]) / 10.0; // 50.0 Hz Energy.power_factor[PzemAc.phase] = (float)((buffer[19] << 8) + buffer[20]) / 100.0; // 1.00 -/* PzemAc.energy += (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh if (PzemAc.phase == Energy.phase_count -1) { if (PzemAc.energy > PzemAc.last_energy) { // Handle missed phase @@ -89,11 +88,7 @@ void PzemAcEverySecond(void) } PzemAc.energy = 0; } -*/ - float energy = (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh - if (TasmotaGlobal.uptime > PZEM_AC_STABILIZE) { - EnergyUpdateTotal(energy, false, PzemAc.phase); - } + } } } diff --git a/tasmota/xnrg_06_pzem_dc.ino b/tasmota/xnrg_06_pzem_dc.ino index dab53a2ec..df17d2c82 100644 --- a/tasmota/xnrg_06_pzem_dc.ino +++ b/tasmota/xnrg_06_pzem_dc.ino @@ -74,7 +74,7 @@ void PzemDcEverySecond(void) Energy.voltage[PzemDc.channel] = (float)((buffer[3] << 8) + buffer[4]) / 100.0; // 655.00 V Energy.current[PzemDc.channel] = (float)((buffer[5] << 8) + buffer[6]) / 100.0; // 655.00 A Energy.active_power[PzemDc.channel] = (float)((buffer[9] << 24) + (buffer[10] << 16) + (buffer[7] << 8) + buffer[8]) / 10.0; // 429496729.0 W -/* + PzemDc.energy += (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh if (PzemDc.channel == Energy.phase_count -1) { if (PzemDc.energy > PzemDc.last_energy) { // Handle missed channel @@ -85,11 +85,6 @@ void PzemDcEverySecond(void) } PzemDc.energy = 0; } -*/ - float energy = (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh - if (TasmotaGlobal.uptime > PZEM_DC_STABILIZE) { - EnergyUpdateTotal(energy, false, PzemDc.channel); - } } } } diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index a09e4f257..f4270deaf 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -180,11 +180,12 @@ void Ade7953GetData(void) } uint32_t current_rms_sum = Ade7953.current_rms[0] + Ade7953.current_rms[1]; + uint32_t active_power_sum = Ade7953.active_power[0] + Ade7953.active_power[1]; - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d"), + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d = %d"), Ade7953.voltage_rms, Ade7953.period, Ade7953.current_rms[0], Ade7953.current_rms[1], current_rms_sum, - Ade7953.active_power[0], Ade7953.active_power[1]); + Ade7953.active_power[0], Ade7953.active_power[1], active_power_sum); if (Energy.power_on) { // Powered on Energy.voltage[0] = (float)Ade7953.voltage_rms / Settings->energy_voltage_calibration; @@ -207,16 +208,19 @@ void Ade7953GetData(void) Energy.current[channel] = 0; } else { Energy.current[channel] = (float)Ade7953.current_rms[channel] / (Settings->energy_current_calibration * 10); - Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } } - EnergyUpdateToday(); /* } else { // Powered off Energy.data_valid[0] = ENERGY_WATCHDOG; Energy.data_valid[1] = ENERGY_WATCHDOG; */ } + + if (active_power_sum) { + Energy.kWhtoday_delta += ((active_power_sum * (100000 / (Settings->energy_power_calibration / 10))) / 3600); + EnergyUpdateToday(); + } } void Ade7953EnergyEverySecond(void) diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino index db064af6a..68534d425 100644 --- a/tasmota/xnrg_14_bl09xx.ino +++ b/tasmota/xnrg_14_bl09xx.ino @@ -212,10 +212,43 @@ void Bl09XXEverySecond(void) { memset(Bl09XX.power, 0, sizeof(Bl09XX.power)); } else { // Calculate energy by using active power + uint32_t energy_sum = 0; for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { - Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; + energy_sum += (Energy.active_power[channel] * 1000); } - EnergyUpdateToday(); + if (energy_sum) { + Energy.kWhtoday_delta += energy_sum / 36; + EnergyUpdateToday(); + } +/* + // Calculate energy by using active energy pulse count + bool update_today = false; + for (int chan = 0 ; chan < Energy.phase_count ; chan++ ) { + if (BL09XX_PULSES_NOT_INITIALIZED == Bl09XX.cf_pulses_last_time[chan]) { + Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; // Init after restart + } else { + uint32_t cf_pulses = 0; + if (Bl09XX.cf_pulses[chan] < Bl09XX.cf_pulses_last_time[chan]) { // Rolled over after 0xFFFFFF (16777215) pulses + cf_pulses = (0x1000000 - Bl09XX.cf_pulses_last_time[chan]) + Bl09XX.cf_pulses[chan]; + } else { + cf_pulses = Bl09XX.cf_pulses[chan] - Bl09XX.cf_pulses_last_time[chan]; + } + if (cf_pulses && Energy.active_power[chan]) { + uint32_t watt256 = (1638400 * 256) / Settings->energy_power_calibration; + uint32_t delta = (cf_pulses * watt256) / 36; + if (delta <= (4000 * 1000 / 36)) { // max load for SHP10: 4.00kW (3.68kW) + Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; + } else { + AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Overload [%d] %d"), chan, delta); + Bl09XX.cf_pulses_last_time[chan] = BL09XX_PULSES_NOT_INITIALIZED; + } + update_today = true; + } + } + } + if (update_today) + EnergyUpdateToday(); +*/ } // AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); diff --git a/tasmota/xnrg_19_cse7761.ino b/tasmota/xnrg_19_cse7761.ino index c61322d30..2bf593a03 100644 --- a/tasmota/xnrg_19_cse7761.ino +++ b/tasmota/xnrg_19_cse7761.ino @@ -95,7 +95,7 @@ struct { uint32_t energy[2] = { 0 }; uint32_t active_power[2] = { 0 }; uint16_t coefficient[8] = { 0 }; - uint8_t energy_update[2] = { 0 }; + uint8_t energy_update = 0; uint8_t init = 4; uint8_t ready = 0; } CSE7761Data; @@ -476,7 +476,7 @@ void Cse7761GetData(void) { // Energy.current[channel] = (float)(((uint64_t)CSE7761Data.current_rms[channel] * CSE7761Data.coefficient[RmsIAC + channel]) >> 23) / 1000; // A Energy.current[channel] = (float)CSE7761Data.current_rms[channel] / Settings->energy_current_calibration; // A CSE7761Data.energy[channel] += Energy.active_power[channel]; - CSE7761Data.energy_update[channel]++; + CSE7761Data.energy_update++; } } } @@ -557,14 +557,16 @@ void Cse7761EverySecond(void) { } else { if (2 == CSE7761Data.ready) { - for (uint32_t channel = 0; channel < 2; channel++) { - if (CSE7761Data.energy_update[channel]) { - Energy.kWhtoday_delta[channel] += ((CSE7761Data.energy[channel] * 1000) / CSE7761Data.energy_update[channel]) / 36; - CSE7761Data.energy[channel] = 0; - CSE7761Data.energy_update[channel] = 0; + if (CSE7761Data.energy_update) { + uint32_t energy_sum = ((CSE7761Data.energy[0] + CSE7761Data.energy[1]) * 1000) / CSE7761Data.energy_update; + if (energy_sum) { + Energy.kWhtoday_delta += energy_sum / 36; + EnergyUpdateToday(); } - EnergyUpdateToday(); } + CSE7761Data.energy[0] = 0; + CSE7761Data.energy[1] = 0; + CSE7761Data.energy_update = 0; } } } diff --git a/tasmota/xnrg_30_dummy.ino b/tasmota/xnrg_30_dummy.ino index 4aa308fdb..dd8c77848 100644 --- a/tasmota/xnrg_30_dummy.ino +++ b/tasmota/xnrg_30_dummy.ino @@ -44,6 +44,7 @@ void NrgDummyEverySecond(void) { if (Energy.power_on) { // Powered on + float energy = 0; for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { Energy.voltage[channel] = ((float)Settings->energy_voltage_calibration / 100); // V Energy.frequency[channel] = ((float)Settings->energy_frequency_calibration / 100); // Hz @@ -53,12 +54,16 @@ void NrgDummyEverySecond(void) { Energy.current[channel] = 0; } else { Energy.current[channel] = ((float)Settings->energy_current_calibration / 100000); // A - Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; + energy += Energy.active_power[channel]; } Energy.data_valid[channel] = 0; } } - EnergyUpdateToday(); + + if (energy > 0) { + Energy.kWhtoday_delta += energy * 1000 / 36; + EnergyUpdateToday(); + } } } diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index caa2330fa..1d38f7b03 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -268,10 +268,10 @@ void HandleMetrics(void) { Energy.active_power[0], Settings->flag2.wattage_resolution, nullptr); WritePromMetricDec(PSTR("energy_power_kilowatts_daily"), kPromMetricCounter, - Energy.daily_sum, Settings->flag2.energy_resolution, nullptr); + Energy.daily, Settings->flag2.energy_resolution, nullptr); WritePromMetricDec(PSTR("energy_power_kilowatts_total"), kPromMetricCounter, - Energy.total_sum, Settings->flag2.energy_resolution, nullptr); + Energy.total, Settings->flag2.energy_resolution, nullptr); #endif for (uint32_t device = 0; device < TasmotaGlobal.devices_present; device++) { From b47e91c8ab59ce65d6cb578b44df8c219bc8bd0e Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 29 Sep 2021 15:33:58 +0200 Subject: [PATCH 262/317] Add energy total spilt --- CHANGELOG.md | 3 + RELEASENOTES.md | 2 + tasmota/i18n.h | 3 + tasmota/settings.h | 2 +- tasmota/xdrv_03_energy.ino | 511 +++++++++++++++++------------- tasmota/xdrv_10_scripter.ino | 8 +- tasmota/xdrv_11_knx.ino | 21 +- tasmota/xdrv_16_tuyamcu.ino | 4 +- tasmota/xdrv_45_shelly_dimmer.ino | 2 +- tasmota/xnrg_01_hlw8012.ino | 2 +- tasmota/xnrg_02_cse7766.ino | 2 +- tasmota/xnrg_03_pzem004t.ino | 5 + tasmota/xnrg_04_mcp39f501.ino | 2 +- tasmota/xnrg_05_pzem_ac.ino | 7 +- tasmota/xnrg_06_pzem_dc.ino | 7 +- tasmota/xnrg_07_ade7953.ino | 12 +- tasmota/xnrg_14_bl09xx.ino | 37 +-- tasmota/xnrg_19_cse7761.ino | 18 +- tasmota/xnrg_30_dummy.ino | 9 +- tasmota/xsns_75_prometheus.ino | 4 +- 20 files changed, 353 insertions(+), 308 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1b9bc5f7..0418b3302 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.5.0.9] +### Added +- Command ``SetOption129 1`` to enable split total energy results (#13030) +- Commands ``EnergyTotal``, ``EnergyToday`` and ``EnergyYesterday`` to (re)set energy values ## [9.5.0.8] 20210927 ### Added diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f75ecbb9e..8e93548ab 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -104,10 +104,12 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo - Command ``SetOption2 1`` to enable display of global temperature/humidity/pressure info to JSON sensor message - Command ``SetOption127 1`` to force Wi-Fi in no-sleep mode even if ``Sleep 0`` is not enabled - Command ``SetOption128 0|1`` web referer check disabling HTTP API commands if set to 0. Default set to 1 for backward compatibility [#12828](https://github.com/arendst/Tasmota/issues/12828) +- Command ``SetOption129 1`` to enable split total energy results [#13030](https://github.com/arendst/Tasmota/issues/13030) - Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver - Command ``Subscribe2 ...`` to subscribe to a MQTT topic without appended "/#" [#12858](https://github.com/arendst/Tasmota/issues/12858) - Command ``WebGetConfig `` if ``#define USE_WEBGETCONFIG`` is enabled to restore/init configuration from external webserver [#13034](https://github.com/arendst/Tasmota/issues/13034) - Command ``WebQuery GET|POST|PUT|PATCH [] `` to extent HTTP requests [#13209](https://github.com/arendst/Tasmota/issues/13209) +- Commands ``EnergyTotal``, ``EnergyToday`` and ``EnergyYesterday`` to (re)set energy values - Optional IP filter to command ``TCPStart`` [#12806](https://github.com/arendst/Tasmota/issues/12806) - Neopool commands ``NPPHRes``, ``NPCLRes`` and ``NPIonRes`` [#12813](https://github.com/arendst/Tasmota/issues/12813) - Support for second DNS server diff --git a/tasmota/i18n.h b/tasmota/i18n.h index 41c52f10b..1e025318d 100644 --- a/tasmota/i18n.h +++ b/tasmota/i18n.h @@ -433,6 +433,9 @@ #define D_CMND_CURRENTLOW "CurrentLow" #define D_CMND_CURRENTHIGH "CurrentHigh" #define D_CMND_ENERGYRESET "EnergyReset" +#define D_CMND_ENERGYTODAY "EnergyToday" +#define D_CMND_ENERGYYESTERDAY "EnergyYesterday" +#define D_CMND_ENERGYTOTAL "EnergyTotal" #define D_CMND_POWERSET "PowerSet" #define D_CMND_VOLTAGESET "VoltageSet" #define D_CMND_CURRENTSET "CurrentSet" diff --git a/tasmota/settings.h b/tasmota/settings.h index ee83f44d3..91b1ff552 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -158,7 +158,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t ds18x20_mean : 1; // bit 12 (v9.3.1.2) - SetOption126 - (DS18x20) Enable arithmetic mean over teleperiod for JSON temperature (1) uint32_t wifi_no_sleep : 1; // bit 13 (v9.5.0.2) - SetOption127 - (Wifi) Keep wifi in no-sleep mode, prevents some occasional unresponsiveness uint32_t disable_referer_chk : 1; // bit 14 (v9.5.0.5) - SetOption128 - (Web) Allow access without referer check - uint32_t spare15 : 1; // bit 15 + uint32_t energy_phase : 1; // bit 15 (v9.5.0.9) - SetOption129 - (Energy) Show phase information uint32_t spare16 : 1; // bit 16 uint32_t spare17 : 1; // bit 17 uint32_t spare18 : 1; // bit 18 diff --git a/tasmota/xdrv_03_energy.ino b/tasmota/xdrv_03_energy.ino index 2e679a497..e0a73321c 100644 --- a/tasmota/xdrv_03_energy.ino +++ b/tasmota/xdrv_03_energy.ino @@ -56,7 +56,7 @@ const char kEnergyCommands[] PROGMEM = "|" // No prefix D_CMND_SAFEPOWER "|" D_CMND_SAFEPOWERHOLD "|" D_CMND_SAFEPOWERWINDOW "|" #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION - D_CMND_ENERGYRESET "|" D_CMND_TARIFF; + D_CMND_ENERGYRESET "|" D_CMND_ENERGYTODAY "|" D_CMND_ENERGYYESTERDAY "|" D_CMND_ENERGYTOTAL "|" D_CMND_TARIFF; void (* const EnergyCommand[])(void) PROGMEM = { &CmndPowerCal, &CmndVoltageCal, &CmndCurrentCal, &CmndFrequencyCal, @@ -69,9 +69,9 @@ void (* const EnergyCommand[])(void) PROGMEM = { &CmndSafePower, &CmndSafePowerHold, &CmndSafePowerWindow, #endif // USE_ENERGY_POWER_LIMIT #endif // USE_ENERGY_MARGIN_DETECTION - &CmndEnergyReset, &CmndTariff}; + &CmndEnergyReset, &CmndEnergyToday, &CmndEnergyYesterday, &CmndEnergyTotal, &CmndTariff}; -const char kEnergyPhases[] PROGMEM = "|%s / %s|%s / %s / %s||[%s,%s]|[%s,%s,%s]"; +const char kEnergyPhases[] PROGMEM = "|%*_f / %*_f|%*_f / %*_f / %*_f||[%*_f,%*_f]|[%*_f,%*_f,%*_f]"; struct ENERGY { float voltage[ENERGY_MAX_PHASES]; // 123.1 V @@ -85,15 +85,17 @@ struct ENERGY { float import_active[ENERGY_MAX_PHASES]; // 123.123 kWh #endif // SDM630_IMPORT || SDM72_IMPEXP float export_active[ENERGY_MAX_PHASES]; // 123.123 kWh + float start_energy[ENERGY_MAX_PHASES]; // 12345.12345 kWh total previous + float daily[ENERGY_MAX_PHASES]; // 123.123 kWh + float total[ENERGY_MAX_PHASES]; // 12345.12345 kWh total energy + float daily_sum; // 123.123 kWh + float total_sum; // 12345.12345 kWh total energy + float yesterday_sum; // 123.123 kWh - float start_energy; // 12345.12345 kWh total previous - float daily; // 123.123 kWh - float total; // 12345.12345 kWh total energy - - unsigned long kWhtoday_delta; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) - unsigned long kWhtoday_offset; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily - unsigned long kWhtoday; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily - unsigned long period; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + uint32_t kWhtoday_delta[ENERGY_MAX_PHASES]; // 1212312345 Wh 10^-5 (deca micro Watt hours) - Overflows to Energy.kWhtoday (HLW and CSE only) + uint32_t kWhtoday_offset[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + uint32_t kWhtoday[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily + uint32_t period[ENERGY_MAX_PHASES]; // 12312312 Wh * 10^-2 (deca milli Watt hours) - 5764 = 0.05764 kWh = 0.058 kWh = Energy.daily uint8_t fifth_second; uint8_t command_code; @@ -134,27 +136,38 @@ Ticker ticker_energy; /********************************************************************************************/ -char* EnergyFormatIndex(char* result, char* input, bool json, uint32_t index, bool single = false) -{ - char layout[16]; +char* EnergyFormatIndex(char* result, float* input, uint32_t resolution, bool json, uint32_t index, bool single = false) { + char layout[20]; GetTextIndexed(layout, sizeof(layout), (index -1) + (ENERGY_MAX_PHASES * json), kEnergyPhases); switch (index) { case 2: - snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, input, input + FLOATSZ); // Dirty + ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, resolution, &input[0], resolution, &input[1]); break; case 3: - snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, input, input + FLOATSZ, input + FLOATSZ + FLOATSZ); // Even dirtier + ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, layout, resolution, &input[0], resolution, &input[1], resolution, &input[2]); break; default: - snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, input); + ext_snprintf_P(result, FLOATSZ * ENERGY_MAX_PHASES, PSTR("%*_f"), resolution, &input[0]); } return result; } -char* EnergyFormat(char* result, char* input, bool json, bool single = false) -{ +char* EnergyFormat(char* result, float* input, uint32_t resolution, bool json, bool single = false) { uint8_t index = (single) ? 1 : Energy.phase_count; // 1,2,3 - return EnergyFormatIndex(result, input, json, index, single); + return EnergyFormatIndex(result, input, resolution, json, index, single); +} + +char* EnergyFormatSum(char* result, float* input, uint32_t resolution, bool json, bool single = false) { + uint8_t index = (single) ? 1 : Energy.phase_count; // 1,2,3 + float input_sum = 0.0; + if (!Settings->flag5.energy_phase) { + for (uint32_t i = 0; i < index; i++) { + input_sum += input[i]; + } + input = &input_sum; + index = 1; + } + return EnergyFormatIndex(result, input, resolution, json, index, single); } /********************************************************************************************/ @@ -183,22 +196,30 @@ bool EnergyTariff1Active() // Off-Peak hours } } -void EnergyUpdateToday(void) -{ - if (Energy.kWhtoday_delta > 1000) { - unsigned long delta = Energy.kWhtoday_delta / 1000; - Energy.kWhtoday_delta -= (delta * 1000); - Energy.kWhtoday += delta; - } +void EnergyUpdateToday(void) { + Energy.total_sum = 0.0; + Energy.yesterday_sum = 0.0; + Energy.daily_sum = 0.0; + for (uint32_t i = 0; i < Energy.phase_count; i++) { + if (Energy.kWhtoday_delta[i] > 1000) { + uint32_t delta = Energy.kWhtoday_delta[i] / 1000; + Energy.kWhtoday_delta[i] -= (delta * 1000); + Energy.kWhtoday[i] += delta; + } - RtcSettings.energy_kWhtoday = Energy.kWhtoday_offset + Energy.kWhtoday; - Energy.daily = (float)(RtcSettings.energy_kWhtoday) / 100000; - Energy.total = (float)(RtcSettings.energy_kWhtotal + RtcSettings.energy_kWhtoday) / 100000; + RtcSettings.energy_kWhtoday_ph[i] = Energy.kWhtoday_offset[i] + Energy.kWhtoday[i]; + Energy.daily[i] = (float)(RtcSettings.energy_kWhtoday_ph[i]) / 100000; + Energy.total[i] = (float)(RtcSettings.energy_kWhtotal_ph[i] + RtcSettings.energy_kWhtoday_ph[i]) / 100000; + + Energy.total_sum += Energy.total[i]; + Energy.yesterday_sum += (float)Settings->energy_kWhyesterday_ph[i] / 100000; + Energy.daily_sum += Energy.daily[i]; + } if (RtcTime.valid){ // We calc the difference only if we have a valid RTC time. - uint32_t energy_diff = (uint32_t)(Energy.total * 100000) - RtcSettings.energy_usage.last_usage_kWhtotal; - RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total * 100000); + uint32_t energy_diff = (uint32_t)(Energy.total_sum * 100000) - RtcSettings.energy_usage.last_usage_kWhtotal; + RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total_sum * 100000); uint32_t return_diff = 0; if (!isnan(Energy.export_active[0])) { @@ -225,25 +246,26 @@ void EnergyUpdateToday(void) } } -void EnergyUpdateTotal(float value, bool kwh) +void EnergyUpdateTotal(float value, bool kwh, uint32_t phase = 0); +void EnergyUpdateTotal(float value, bool kwh, uint32_t phase) { // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total %4_f %sWh"), &value, (kwh) ? "k" : ""); uint32_t multiplier = (kwh) ? 100000 : 100; // kWh or Wh to deca milli Wh - if (0 == Energy.start_energy || (value < Energy.start_energy)) { - Energy.start_energy = value; // Init after restart and handle roll-over if any + if (0 == Energy.start_energy[phase] || (value < Energy.start_energy[phase])) { + Energy.start_energy[phase] = value; // Init after restart and handle roll-over if any } - else if (value != Energy.start_energy) { - Energy.kWhtoday = (unsigned long)((value - Energy.start_energy) * multiplier); + else if (value != Energy.start_energy[phase]) { + Energy.kWhtoday[phase] = (unsigned long)((value - Energy.start_energy[phase]) * multiplier); } - if ((Energy.total < (value - 0.01)) && // We subtract a little offset to avoid continuous updates + if ((Energy.total[phase] < (value - 0.01)) && // We subtract a little offset to avoid continuous updates Settings->flag3.hardware_energy_total) { // SetOption72 - Enable hardware energy total counter as reference (#6561) - RtcSettings.energy_kWhtotal = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset - Energy.kWhtoday); - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; - Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; - Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); + RtcSettings.energy_kWhtotal_ph[phase] = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset[phase] - Energy.kWhtoday[phase]); + Settings->energy_kWhtotal_ph[phase] = RtcSettings.energy_kWhtotal_ph[phase]; + Energy.total[phase] = (float)(RtcSettings.energy_kWhtotal_ph[phase] + Energy.kWhtoday_offset[phase] + Energy.kWhtoday[phase]) / 100000; + Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset[phase]) ? LocalTime() : Midnight(); // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total updated with hardware value")); } EnergyUpdateToday(); @@ -264,23 +286,26 @@ void Energy200ms(void) if (RtcTime.valid) { if (!Energy.kWhtoday_offset_init && (RtcTime.day_of_year == Settings->energy_kWhdoy)) { - Energy.kWhtoday_offset = Settings->energy_kWhtoday; + for (uint32_t i = 0; i < 3; i++) { + Energy.kWhtoday_offset[i] = Settings->energy_kWhtoday_ph[i]; + } Energy.kWhtoday_offset_init = true; } if (LocalTime() == Midnight()) { - Settings->energy_kWhyesterday = RtcSettings.energy_kWhtoday; + for (uint32_t i = 0; i < 3; i++) { + Settings->energy_kWhyesterday_ph[i] = RtcSettings.energy_kWhtoday_ph[i]; - RtcSettings.energy_kWhtotal += RtcSettings.energy_kWhtoday; - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; + RtcSettings.energy_kWhtotal_ph[i] += RtcSettings.energy_kWhtoday_ph[i]; + Settings->energy_kWhtotal_ph[i] = RtcSettings.energy_kWhtotal_ph[i]; - Energy.period -= RtcSettings.energy_kWhtoday; // this becomes a large unsigned, effectively a negative for EnergyShow calculation - Energy.kWhtoday = 0; - Energy.kWhtoday_offset = 0; - RtcSettings.energy_kWhtoday = 0; - Energy.start_energy = 0; + Energy.period[i] -= RtcSettings.energy_kWhtoday_ph[i]; // this becomes a large unsigned, effectively a negative for EnergyShow calculation + Energy.kWhtoday[i] = 0; + Energy.kWhtoday_offset[i] = 0; + RtcSettings.energy_kWhtoday_ph[i] = 0; + Energy.start_energy[i] = 0; // Energy.kWhtoday_delta = 0; // dont zero this, we need to carry the remainder over to tomorrow - + } EnergyUpdateToday(); #if defined(USE_ENERGY_MARGIN_DETECTION) && defined(USE_ENERGY_POWER_LIMIT) Energy.max_energy_state = 3; @@ -302,8 +327,10 @@ void EnergySaveState(void) { Settings->energy_kWhdoy = (RtcTime.valid) ? RtcTime.day_of_year : 0; - Settings->energy_kWhtoday = RtcSettings.energy_kWhtoday; - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; + for (uint32_t i = 0; i < 3; i++) { + Settings->energy_kWhtoday_ph[i] = RtcSettings.energy_kWhtoday_ph[i]; + Settings->energy_kWhtotal_ph[i] = RtcSettings.energy_kWhtotal_ph[i]; + } Settings->energy_usage = RtcSettings.energy_usage; } @@ -371,12 +398,20 @@ void EnergyMarginCheck(void) Energy.power_history[phase][2] = active_power; } if (jsonflg) { +/* char power_diff_chr[Energy.phase_count][FLOATSZ]; for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { dtostrfd(power_diff[phase], 0, power_diff_chr[phase]); } char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFormat(value_chr, power_diff_chr[0], 1)); +*/ + float power_diff_f[Energy.phase_count]; + for (uint32_t phase = 0; phase < Energy.phase_count; phase++) { + power_diff_f[phase] = power_diff[phase]; + } + char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; + ResponseAppend_P(PSTR("\"" D_CMND_POWERDELTA "\":%s"), EnergyFormat(value_chr, power_diff_f, 0, 1)); } uint16_t energy_power_u = (uint16_t)(Energy.active_power[0]); @@ -467,7 +502,7 @@ void EnergyMarginCheck(void) // Max Energy if (Settings->energy_max_energy) { - uint16_t energy_daily_u = (uint16_t)(Energy.daily * 1000); + uint16_t energy_daily_u = (uint16_t)(Energy.daily_sum * 1000); if (!Energy.max_energy_state && (RtcTime.hour == Settings->energy_max_energy_start)) { Energy.max_energy_state = 1; ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); @@ -476,7 +511,7 @@ void EnergyMarginCheck(void) } else if ((1 == Energy.max_energy_state ) && (energy_daily_u >= Settings->energy_max_energy)) { Energy.max_energy_state = 2; - ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy.daily); + ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":%3_f}"), &Energy.daily_sum); MqttPublishPrefixTopicRulesProcess_P(STAT, S_RSLT_WARNING); EnergyMqttShow(); SetAllPower(POWER_ALL_OFF, SRC_MAXENERGY); @@ -559,48 +594,9 @@ void CmndEnergyReset(void) { uint32_t params = ParseParameters(2, values); values[0] *= 100; - if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= 5)) { + if ((XdrvMailbox.index > 3) && (XdrvMailbox.index <= 5)) { if (params > 0) { switch (XdrvMailbox.index) { - case 1: - // Reset Energy Today - Energy.kWhtoday_offset = values[0]; - Energy.kWhtoday = 0; - Energy.kWhtoday_delta = 0; - Energy.start_energy = 0; - Energy.period = Energy.kWhtoday_offset; - Settings->energy_kWhtoday = Energy.kWhtoday_offset; - RtcSettings.energy_kWhtoday = Energy.kWhtoday_offset; - Energy.daily = (float)Energy.kWhtoday_offset / 100000; - if( params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - else { - if (!RtcSettings.energy_kWhtotal && !Energy.kWhtoday_offset) { - Settings->energy_kWhtotal_time = LocalTime(); - } - } - break; - case 2: - // Reset Energy Yesterday - Settings->energy_kWhyesterday = values[0]; - if( params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - break; - case 3: - // Reset Energy Total - RtcSettings.energy_kWhtotal = values[0]; - Settings->energy_kWhtotal = RtcSettings.energy_kWhtotal; -// Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; - if( params > 1) { - Settings->energy_kWhtotal_time = values[1]; - } - else { - Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); - } - RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total * 1000); - break; case 4: // Reset energy_usage.usage totals RtcSettings.energy_usage.usage1_kWhtotal = values[0]; @@ -623,24 +619,100 @@ void CmndEnergyReset(void) { } } - Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; - float energy_kWhyesterday = (float)Settings->energy_kWhyesterday / 100000; float usage1_kWhtotal = (float)Settings->energy_usage.usage1_kWhtotal / 100000; float usage2_kWhtotal = (float)Settings->energy_usage.usage2_kWhtotal / 100000; float return1_kWhtotal = (float)Settings->energy_usage.return1_kWhtotal / 100000; float return2_kWhtotal = (float)Settings->energy_usage.return2_kWhtotal / 100000; - Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%*_f,\"" D_JSON_YESTERDAY "\":%*_f,\"" D_JSON_TODAY "\":%*_f,\"" D_JSON_USAGE "\":[%*_f,%*_f],\"" D_JSON_EXPORT "\":[%*_f,%*_f]}}"), + Response_P(PSTR("{\"%s\":{\"" D_JSON_USAGE "\":[%*_f,%*_f],\"" D_JSON_EXPORT "\":[%*_f,%*_f]}}"), XdrvMailbox.command, - Settings->flag2.energy_resolution, &Energy.total, - Settings->flag2.energy_resolution, &energy_kWhyesterday, - Settings->flag2.energy_resolution, &Energy.daily, Settings->flag2.energy_resolution, &usage1_kWhtotal, Settings->flag2.energy_resolution, &usage2_kWhtotal, Settings->flag2.energy_resolution, &return1_kWhtotal, Settings->flag2.energy_resolution, &return2_kWhtotal); } +void CmndEnergyResponse(void) { + char value_chr[FLOATSZ * ENERGY_MAX_PHASES]; // Used by EnergyFormatIndex + char value2_chr[FLOATSZ * ENERGY_MAX_PHASES]; + char value3_chr[FLOATSZ * ENERGY_MAX_PHASES]; + + float energy_yesterday_ph[3]; + for (uint32_t i = 0; i < Energy.phase_count; i++) { + energy_yesterday_ph[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000; + Energy.total[i] = (float)(RtcSettings.energy_kWhtotal_ph[i] + Energy.kWhtoday_offset[i] + Energy.kWhtoday[i]) / 100000; + } + + Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s}"), + XdrvMailbox.command, + EnergyFormat(value_chr, Energy.total, Settings->flag2.energy_resolution, true), + EnergyFormat(value2_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, true), + EnergyFormat(value3_chr, Energy.daily, Settings->flag2.energy_resolution, true)); +} + +void CmndEnergyTotal(void) { + uint32_t values[2] = { 0 }; + uint32_t params = ParseParameters(2, values); + values[0] *= 100; + + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { + uint32_t phase = XdrvMailbox.index -1; + // Reset Energy Total + RtcSettings.energy_kWhtotal_ph[phase] = values[0]; + Settings->energy_kWhtotal_ph[phase] = RtcSettings.energy_kWhtotal_ph[phase]; + if (params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } else { + Settings->energy_kWhtotal_time = (!Energy.kWhtoday_offset[phase]) ? LocalTime() : Midnight(); + } + RtcSettings.energy_usage.last_usage_kWhtotal = (uint32_t)(Energy.total[phase] * 1000); + } + CmndEnergyResponse(); +} + +void CmndEnergyYesterday(void) { + uint32_t values[2] = { 0 }; + uint32_t params = ParseParameters(2, values); + values[0] *= 100; + + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { + uint32_t phase = XdrvMailbox.index -1; + // Reset Energy Yesterday + Settings->energy_kWhyesterday_ph[phase] = values[0]; + if (params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + } + CmndEnergyResponse(); +} +void CmndEnergyToday(void) { + uint32_t values[2] = { 0 }; + uint32_t params = ParseParameters(2, values); + values[0] *= 100; + + if ((XdrvMailbox.index > 0) && (XdrvMailbox.index <= Energy.phase_count) && (params > 0)) { + uint32_t phase = XdrvMailbox.index -1; + // Reset Energy Today + Energy.kWhtoday_offset[phase] = values[0]; + Energy.kWhtoday[phase] = 0; + Energy.kWhtoday_delta[phase] = 0; + Energy.start_energy[phase] = 0; + Energy.period[phase] = Energy.kWhtoday_offset[phase]; + Settings->energy_kWhtoday_ph[phase] = Energy.kWhtoday_offset[phase]; + RtcSettings.energy_kWhtoday_ph[phase] = Energy.kWhtoday_offset[phase]; + Energy.daily[phase] = (float)Energy.kWhtoday_offset[phase] / 100000; + if (params > 1) { + Settings->energy_kWhtotal_time = values[1]; + } + else { + if (!RtcSettings.energy_kWhtotal_ph[phase] && !Energy.kWhtoday_offset[phase]) { + Settings->energy_kWhtotal_time = LocalTime(); + } + } + } + CmndEnergyResponse(); +} + void CmndTariff(void) { // Tariff1 22:00,23:00 - Tariff1 start hour for Standard Time and Daylight Savings Time // Tariff2 6:00,7:00 - Tariff2 start hour for Standard Time and Daylight Savings Time @@ -910,15 +982,30 @@ void EnergySnsInit(void) XnrgCall(FUNC_INIT); if (TasmotaGlobal.energy_driver) { + + // Update for split phase totals (v9.5.0.9) + if ((Settings->energy_kWhtoday > 0) && (0 == Settings->energy_kWhtoday_ph[0])) { + Settings->energy_kWhtoday_ph[0] = Settings->energy_kWhtoday; + Settings->energy_kWhyesterday_ph[0] = Settings->energy_kWhyesterday; + Settings->energy_kWhtotal_ph[0] = Settings->energy_kWhtotal; + RtcSettings.energy_kWhtoday_ph[0] = RtcSettings.energy_kWhtoday; + RtcSettings.energy_kWhtotal_ph[0] = RtcSettings.energy_kWhtotal; + Settings->energy_kWhtoday = 0; + } + // Energy.kWhtoday_offset = 0; // Do not use at Power On as Rtc was invalid (but has been restored from Settings already) if ((ResetReason() != REASON_DEFAULT_RST) && RtcSettingsValid()) { - Energy.kWhtoday_offset = RtcSettings.energy_kWhtoday; + for (uint32_t i = 0; i < 3; i++) { + Energy.kWhtoday_offset[i] = RtcSettings.energy_kWhtoday_ph[i]; + } Energy.kWhtoday_offset_init = true; } -// Energy.kWhtoday = 0; -// Energy.kWhtoday_delta = 0; - Energy.period = Energy.kWhtoday_offset; + for (uint32_t i = 0; i < 3; i++) { +// Energy.kWhtoday_ph[i] = 0; +// Energy.kWhtoday_delta[i] = 0; + Energy.period[i] = Energy.kWhtoday_offset[i]; + } EnergyUpdateToday(); ticker_energy.attach_ms(200, Energy200ms); } @@ -944,103 +1031,71 @@ const char HTTP_ENERGY_SNS4[] PROGMEM = #endif // SDM630_IMPORT || SDM72_IMPEXP #endif // USE_WEBSERVER -void EnergyShow(bool json) -{ - for (uint32_t i = 0; i < Energy.phase_count; i++) { - if (Energy.voltage_common) { +void EnergyShow(bool json) { + if (Energy.voltage_common) { + for (uint32_t i = 0; i < Energy.phase_count; i++) { Energy.voltage[i] = Energy.voltage[0]; } } - float power_factor_knx = Energy.power_factor[0]; - - char apparent_power_chr[Energy.phase_count][FLOATSZ]; - char reactive_power_chr[Energy.phase_count][FLOATSZ]; - char power_factor_chr[Energy.phase_count][FLOATSZ]; - char frequency_chr[Energy.phase_count][FLOATSZ]; + float apparent_power[Energy.phase_count]; + float reactive_power[Energy.phase_count]; + float power_factor[Energy.phase_count]; if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { for (uint32_t i = 0; i < Energy.phase_count; i++) { - float apparent_power = Energy.apparent_power[i]; - if (isnan(apparent_power)) { - apparent_power = Energy.voltage[i] * Energy.current[i]; + apparent_power[i] = Energy.apparent_power[i]; + if (isnan(apparent_power[i])) { + apparent_power[i] = Energy.voltage[i] * Energy.current[i]; } - if (apparent_power < Energy.active_power[i]) { // Should be impossible - Energy.active_power[i] = apparent_power; + if (apparent_power[i] < Energy.active_power[i]) { // Should be impossible + Energy.active_power[i] = apparent_power[i]; } - float power_factor = Energy.power_factor[i]; - if (isnan(power_factor)) { - power_factor = (Energy.active_power[i] && apparent_power) ? Energy.active_power[i] / apparent_power : 0; - if (power_factor > 1) { - power_factor = 1; + power_factor[i] = Energy.power_factor[i]; + if (isnan(power_factor[i])) { + power_factor[i] = (Energy.active_power[i] && apparent_power[i]) ? Energy.active_power[i] / apparent_power[i] : 0; + if (power_factor[i] > 1) { + power_factor[i] = 1; } } - if (0 == i) { power_factor_knx = power_factor; } - float reactive_power = Energy.reactive_power[i]; - if (isnan(reactive_power)) { - reactive_power = 0; - uint32_t difference = ((uint32_t)(apparent_power * 100) - (uint32_t)(Energy.active_power[i] * 100)) / 10; - if ((Energy.current[i] > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power * 100 / 1000)))) { + reactive_power[i] = Energy.reactive_power[i]; + if (isnan(reactive_power[i])) { + reactive_power[i] = 0; + uint32_t difference = ((uint32_t)(apparent_power[i] * 100) - (uint32_t)(Energy.active_power[i] * 100)) / 10; + if ((Energy.current[i] > 0.005) && ((difference > 15) || (difference > (uint32_t)(apparent_power[i] * 100 / 1000)))) { // calculating reactive power only if current is greater than 0.005A and // difference between active and apparent power is greater than 1.5W or 1% - //reactive_power = (float)(RoundSqrtInt((uint64_t)(apparent_power * apparent_power * 100) - (uint64_t)(Energy.active_power[i] * Energy.active_power[i] * 100))) / 10; - float power_diff = apparent_power * apparent_power - Energy.active_power[i] * Energy.active_power[i]; + //reactive_power[i] = (float)(RoundSqrtInt((uint64_t)(apparent_power[i] * apparent_power[i] * 100) - (uint64_t)(Energy.active_power[i] * Energy.active_power[i] * 100))) / 10; + float power_diff = apparent_power[i] * apparent_power[i] - Energy.active_power[i] * Energy.active_power[i]; if (power_diff < 10737418) // 2^30 / 100 (RoundSqrtInt is limited to 2^30-1) - reactive_power = (float)(RoundSqrtInt((uint32_t)(power_diff * 100.0))) / 10.0; + reactive_power[i] = (float)(RoundSqrtInt((uint32_t)(power_diff * 100.0))) / 10.0; else - reactive_power = (float)(SqrtInt((uint32_t)(power_diff))); + reactive_power[i] = (float)(SqrtInt((uint32_t)(power_diff))); } } - dtostrfd(apparent_power, Settings->flag2.wattage_resolution, apparent_power_chr[i]); - dtostrfd(reactive_power, Settings->flag2.wattage_resolution, reactive_power_chr[i]); - dtostrfd(power_factor, 2, power_factor_chr[i]); } } - for (uint32_t i = 0; i < Energy.phase_count; i++) { - float frequency = Energy.frequency[i]; - if (isnan(Energy.frequency[i])) { - frequency = 0; - } - dtostrfd(frequency, Settings->flag2.frequency_resolution, frequency_chr[i]); - } } - char voltage_chr[Energy.phase_count][FLOATSZ]; - char current_chr[Energy.phase_count][FLOATSZ]; - char active_power_chr[Energy.phase_count][FLOATSZ]; -#if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) - char import_active_chr[Energy.phase_count][FLOATSZ]; -#endif // SDM630_IMPORT || SDM72_IMPEXP - char export_active_chr[Energy.phase_count][FLOATSZ]; + float active_power_sum = 0.0; + float energy_yesterday_ph[Energy.phase_count]; for (uint32_t i = 0; i < Energy.phase_count; i++) { - dtostrfd(Energy.voltage[i], Settings->flag2.voltage_resolution, voltage_chr[i]); - dtostrfd(Energy.current[i], Settings->flag2.current_resolution, current_chr[i]); - dtostrfd(Energy.active_power[i], Settings->flag2.wattage_resolution, active_power_chr[i]); -#if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) - dtostrfd(Energy.import_active[i], Settings->flag2.energy_resolution, import_active_chr[i]); -#endif // SDM630_IMPORT || SDM72_IMPEXP - dtostrfd(Energy.export_active[i], Settings->flag2.energy_resolution, export_active_chr[i]); + energy_yesterday_ph[i] = (float)Settings->energy_kWhyesterday_ph[i] / 100000; + + active_power_sum += Energy.active_power[i]; } - char energy_total_chr[FLOATSZ]; - dtostrfd(Energy.total, Settings->flag2.energy_resolution, energy_total_chr); - char energy_daily_chr[FLOATSZ]; - dtostrfd(Energy.daily, Settings->flag2.energy_resolution, energy_daily_chr); - char energy_yesterday_chr[FLOATSZ]; - dtostrfd((float)Settings->energy_kWhyesterday / 100000, Settings->flag2.energy_resolution, energy_yesterday_chr); - - bool energy_tariff = false; - char energy_usage_chr[2][FLOATSZ]; - char energy_return_chr[2][FLOATSZ]; + float energy_usage[2]; + float energy_return[2]; if (Settings->tariff[0][0] != Settings->tariff[1][0]) { - dtostrfd((float)RtcSettings.energy_usage.usage1_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_usage_chr[0]); // Tariff1 - dtostrfd((float)RtcSettings.energy_usage.usage2_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_usage_chr[1]); // Tariff2 - dtostrfd((float)RtcSettings.energy_usage.return1_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_return_chr[0]); // Tariff1 - dtostrfd((float)RtcSettings.energy_usage.return2_kWhtotal / 100000, Settings->flag2.energy_resolution, energy_return_chr[1]); // Tariff2 + energy_usage[0] = (float)RtcSettings.energy_usage.usage1_kWhtotal / 100000; // Tariff1 + energy_usage[1] = (float)RtcSettings.energy_usage.usage2_kWhtotal / 100000; // Tariff2 + energy_return[0] = (float)RtcSettings.energy_usage.return1_kWhtotal / 100000; // Tariff1 + energy_return[1] = (float)RtcSettings.energy_usage.return2_kWhtotal / 100000; // Tariff2 energy_tariff = true; } @@ -1053,86 +1108,94 @@ void EnergyShow(bool json) ResponseAppend_P(PSTR(",\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL_START_TIME "\":\"%s\",\"" D_JSON_TOTAL "\":%s"), GetDateAndTime(DT_ENERGY).c_str(), - energy_total_chr); + EnergyFormatSum(value_chr, Energy.total, Settings->flag2.energy_resolution, json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_TOTAL D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_usage_chr[0], json, 2)); + EnergyFormatIndex(value_chr, energy_usage, Settings->flag2.energy_resolution, json, 2)); } ResponseAppend_P(PSTR(",\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s"), - energy_yesterday_chr, - energy_daily_chr); + EnergyFormatSum(value_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, json), + EnergyFormatSum(value2_chr, Energy.daily, Settings->flag2.energy_resolution, json)); #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) if (!isnan(Energy.import_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT_ACTIVE "\":%s"), - EnergyFormat(value_chr, import_active_chr[0], json)); + EnergyFormat(value_chr, Energy.import_active, Settings->flag2.energy_resolution, json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_IMPORT D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); + EnergyFormatIndex(value_chr, energy_return, Settings->flag2.energy_resolution, json, 2)); } } #endif // SDM630_IMPORT || SDM72_IMPEXP if (!isnan(Energy.export_active[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT_ACTIVE "\":%s"), - EnergyFormat(value_chr, export_active_chr[0], json)); + EnergyFormat(value_chr, Energy.export_active, Settings->flag2.energy_resolution, json)); if (energy_tariff) { ResponseAppend_P(PSTR(",\"" D_JSON_EXPORT D_CMND_TARIFF "\":%s"), - EnergyFormatIndex(value_chr, energy_return_chr[0], json, 2)); + EnergyFormatIndex(value_chr, energy_return, Settings->flag2.energy_resolution, json, 2)); } } if (show_energy_period) { - float energy = (float)(RtcSettings.energy_kWhtoday - Energy.period) / 100; - Energy.period = RtcSettings.energy_kWhtoday; - char energy_period_chr[FLOATSZ]; - dtostrfd(energy, Settings->flag2.wattage_resolution, energy_period_chr); - ResponseAppend_P(PSTR(",\"" D_JSON_PERIOD "\":%s"), energy_period_chr); + float energy_period[Energy.phase_count]; + for (uint32_t i = 0; i < Energy.phase_count; i++) { + energy_period[i] = (float)(RtcSettings.energy_kWhtoday_ph[i] - Energy.period[i]) / 100; + Energy.period[i] = RtcSettings.energy_kWhtoday_ph[i]; + } + ResponseAppend_P(PSTR(",\"" D_JSON_PERIOD "\":%s"), + EnergyFormat(value_chr, energy_period, Settings->flag2.wattage_resolution, json)); } + ResponseAppend_P(PSTR(",\"" D_JSON_POWERUSAGE "\":%s"), - EnergyFormat(value_chr, active_power_chr[0], json)); + EnergyFormat(value_chr, Energy.active_power, Settings->flag2.wattage_resolution, json)); if (!Energy.type_dc) { if (Energy.current_available && Energy.voltage_available) { ResponseAppend_P(PSTR(",\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s"), - EnergyFormat(value_chr, apparent_power_chr[0], json), - EnergyFormat(value2_chr, reactive_power_chr[0], json), - EnergyFormat(value3_chr, power_factor_chr[0], json)); + EnergyFormat(value_chr, apparent_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value2_chr, reactive_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value3_chr, power_factor, 2, json)); } if (!isnan(Energy.frequency[0])) { ResponseAppend_P(PSTR(",\"" D_JSON_FREQUENCY "\":%s"), - EnergyFormat(value_chr, frequency_chr[0], json, Energy.frequency_common)); + EnergyFormat(value_chr, Energy.frequency, Settings->flag2.frequency_resolution, json, Energy.frequency_common)); } } if (Energy.voltage_available) { ResponseAppend_P(PSTR(",\"" D_JSON_VOLTAGE "\":%s"), - EnergyFormat(value_chr, voltage_chr[0], json, Energy.voltage_common)); + EnergyFormat(value_chr, Energy.voltage, Settings->flag2.voltage_resolution, json, Energy.voltage_common)); } if (Energy.current_available) { ResponseAppend_P(PSTR(",\"" D_JSON_CURRENT "\":%s"), - EnergyFormat(value_chr, current_chr[0], json)); + EnergyFormat(value_chr, Energy.current, Settings->flag2.current_resolution, json)); } XnrgCall(FUNC_JSON_APPEND); ResponseJsonEnd(); #ifdef USE_DOMOTICZ if (show_energy_period) { // Only send if telemetry - dtostrfd(Energy.total * 1000, 1, energy_total_chr); - DomoticzSensorPowerEnergy((int)Energy.active_power[0], energy_total_chr); // PowerUsage, EnergyToday + char temp_chr[FLOATSZ]; + if (Energy.voltage_available) { + dtostrfd(Energy.voltage[0], Settings->flag2.voltage_resolution, temp_chr); + DomoticzSensor(DZ_VOLTAGE, temp_chr); // Voltage + } + if (Energy.current_available) { + dtostrfd(Energy.current[0], Settings->flag2.current_resolution, temp_chr); + DomoticzSensor(DZ_CURRENT, temp_chr); // Current + } + dtostrfd(Energy.total_sum * 1000, 1, temp_chr); + DomoticzSensorPowerEnergy((int)active_power_sum, temp_chr); // PowerUsage, EnergyToday + char energy_usage_chr[2][FLOATSZ]; + char energy_return_chr[2][FLOATSZ]; dtostrfd((float)RtcSettings.energy_usage.usage1_kWhtotal / 100, 1, energy_usage_chr[0]); // Tariff1 dtostrfd((float)RtcSettings.energy_usage.usage2_kWhtotal / 100, 1, energy_usage_chr[1]); // Tariff2 dtostrfd((float)RtcSettings.energy_usage.return1_kWhtotal / 100, 1, energy_return_chr[0]); dtostrfd((float)RtcSettings.energy_usage.return2_kWhtotal / 100, 1, energy_return_chr[1]); - DomoticzSensorP1SmartMeter(energy_usage_chr[0], energy_usage_chr[1], energy_return_chr[0], energy_return_chr[1], (int)Energy.active_power[0]); + DomoticzSensorP1SmartMeter(energy_usage_chr[0], energy_usage_chr[1], energy_return_chr[0], energy_return_chr[1], (int)active_power_sum); - if (Energy.voltage_available) { - DomoticzSensor(DZ_VOLTAGE, voltage_chr[0]); // Voltage - } - if (Energy.current_available) { - DomoticzSensor(DZ_CURRENT, current_chr[0]); // Current - } } #endif // USE_DOMOTICZ #ifdef USE_KNX @@ -1143,42 +1206,46 @@ void EnergyShow(bool json) if (Energy.current_available) { KnxSensor(KNX_ENERGY_CURRENT, Energy.current[0]); } - KnxSensor(KNX_ENERGY_POWER, Energy.active_power[0]); + KnxSensor(KNX_ENERGY_POWER, active_power_sum); if (!Energy.type_dc) { - KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor_knx); + KnxSensor(KNX_ENERGY_POWERFACTOR, power_factor[0]); } - KnxSensor(KNX_ENERGY_DAILY, Energy.daily); - KnxSensor(KNX_ENERGY_TOTAL, Energy.total); - KnxSensor(KNX_ENERGY_YESTERDAY, (float)Settings->energy_kWhyesterday / 100000); + KnxSensor(KNX_ENERGY_DAILY, Energy.daily_sum); + KnxSensor(KNX_ENERGY_TOTAL, Energy.total_sum); + KnxSensor(KNX_ENERGY_YESTERDAY, Energy.yesterday_sum); } #endif // USE_KNX #ifdef USE_WEBSERVER } else { if (Energy.voltage_available) { - WSContentSend_PD(HTTP_SNS_VOLTAGE, EnergyFormat(value_chr, voltage_chr[0], json, Energy.voltage_common)); + WSContentSend_PD(HTTP_SNS_VOLTAGE, EnergyFormat(value_chr, Energy.voltage, Settings->flag2.voltage_resolution, json, Energy.voltage_common)); } - if (Energy.current_available) { - WSContentSend_PD(HTTP_SNS_CURRENT, EnergyFormat(value_chr, current_chr[0], json)); - } - WSContentSend_PD(HTTP_SNS_POWER, EnergyFormat(value_chr, active_power_chr[0], json)); if (!Energy.type_dc) { - if (Energy.current_available && Energy.voltage_available) { - WSContentSend_PD(HTTP_ENERGY_SNS1, EnergyFormat(value_chr, apparent_power_chr[0], json), - EnergyFormat(value2_chr, reactive_power_chr[0], json), - EnergyFormat(value3_chr, power_factor_chr[0], json)); - } if (!isnan(Energy.frequency[0])) { WSContentSend_PD(PSTR("{s}" D_FREQUENCY "{m}%s " D_UNIT_HERTZ "{e}"), - EnergyFormat(value_chr, frequency_chr[0], json, Energy.frequency_common)); + EnergyFormat(value_chr, Energy.frequency, Settings->flag2.frequency_resolution, json, Energy.frequency_common)); } } - WSContentSend_PD(HTTP_ENERGY_SNS2, energy_daily_chr, energy_yesterday_chr, energy_total_chr); + if (Energy.current_available) { + WSContentSend_PD(HTTP_SNS_CURRENT, EnergyFormat(value_chr, Energy.current, Settings->flag2.current_resolution, json)); + } + WSContentSend_PD(HTTP_SNS_POWER, EnergyFormat(value_chr, Energy.active_power, Settings->flag2.wattage_resolution, json)); + if (!Energy.type_dc) { + if (Energy.current_available && Energy.voltage_available) { + WSContentSend_PD(HTTP_ENERGY_SNS1, EnergyFormat(value_chr, apparent_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value2_chr, reactive_power, Settings->flag2.wattage_resolution, json), + EnergyFormat(value3_chr, power_factor, 2, json)); + } + } + WSContentSend_PD(HTTP_ENERGY_SNS2, EnergyFormatSum(value_chr, Energy.daily, Settings->flag2.energy_resolution, json), + EnergyFormatSum(value2_chr, energy_yesterday_ph, Settings->flag2.energy_resolution, json), + EnergyFormatSum(value3_chr, Energy.total, Settings->flag2.energy_resolution, json)); if (!isnan(Energy.export_active[0])) { - WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, export_active_chr[0], json)); + WSContentSend_PD(HTTP_ENERGY_SNS3, EnergyFormat(value_chr, Energy.export_active, Settings->flag2.energy_resolution, json)); } #if defined(SDM630_IMPORT) || defined(SDM72_IMPEXP) if (!isnan(Energy.import_active[0])) { - WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, import_active_chr[0], json)); + WSContentSend_PD(HTTP_ENERGY_SNS4, EnergyFormat(value_chr, Energy.import_active, Settings->flag2.energy_resolution, json)); } #endif // SDM630_IMPORT || SDM72_IMPEXP diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 7d8578129..c4d21a723 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -1946,7 +1946,7 @@ chknext: while (*lp==' ') lp++; switch ((uint32_t)fvar) { case 0: - fvar = Energy.total; + fvar = Energy.total_sum; break; case 1: fvar = Energy.voltage[0]; @@ -1976,13 +1976,13 @@ chknext: fvar = Energy.active_power[2]; break; case 10: - fvar = Energy.start_energy; + fvar = Energy.start_energy[0]; break; case 11: - fvar = Energy.daily; + fvar = Energy.daily_sum; break; case 12: - fvar = (float)Settings->energy_kWhyesterday/100000.0; + fvar = Energy.yesterday_sum; break; default: diff --git a/tasmota/xdrv_11_knx.ino b/tasmota/xdrv_11_knx.ino index 12d663d9d..84f5e867e 100644 --- a/tasmota/xdrv_11_knx.ino +++ b/tasmota/xdrv_11_knx.ino @@ -645,7 +645,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) } } else if (chan->type == KNX_ENERGY_VOLTAGE) // Reply KNX_ENERGY_VOLTAGE - { + { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); if (Settings->flag.knx_enable_enhancement) { knx.answer_4byte_float(msg.received_on, Energy.voltage[0]); @@ -678,27 +678,26 @@ void KNX_CB_Action(message_t const &msg, void *arg) } else if (chan->type == KNX_ENERGY_YESTERDAY) // Reply KNX_ENERGY_YESTERDAY { - float energy_kWhyesterday = (float)Settings->energy_kWhyesterday / 100000; - knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); + knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); - knx.answer_4byte_float(msg.received_on, energy_kWhyesterday); + knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); + knx.answer_4byte_float(msg.received_on, Energy.yesterday_sum); } } else if (chan->type == KNX_ENERGY_DAILY) // Reply KNX_ENERGY_DAILY { - knx.answer_4byte_float(msg.received_on, Energy.daily); + knx.answer_4byte_float(msg.received_on, Energy.daily_sum); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.daily); - knx.answer_4byte_float(msg.received_on, Energy.daily); + knx.answer_4byte_float(msg.received_on, Energy.daily_sum); + knx.answer_4byte_float(msg.received_on, Energy.daily_sum); } } else if (chan->type == KNX_ENERGY_TOTAL) // Reply KNX_ENERGY_TOTAL { - knx.answer_4byte_float(msg.received_on, Energy.total); + knx.answer_4byte_float(msg.received_on, Energy.total_sum); if (Settings->flag.knx_enable_enhancement) { - knx.answer_4byte_float(msg.received_on, Energy.total); - knx.answer_4byte_float(msg.received_on, Energy.total); + knx.answer_4byte_float(msg.received_on, Energy.total_sum); + knx.answer_4byte_float(msg.received_on, Energy.total_sum); } } #ifdef USE_RULES diff --git a/tasmota/xdrv_16_tuyamcu.ino b/tasmota/xdrv_16_tuyamcu.ino index 53dcc770e..395fdef57 100644 --- a/tasmota/xdrv_16_tuyamcu.ino +++ b/tasmota/xdrv_16_tuyamcu.ino @@ -753,7 +753,7 @@ void TuyaProcessStatePacket(void) { if (RtcTime.valid) { if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { - Energy.kWhtoday += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; + Energy.kWhtoday[0] += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; EnergyUpdateToday(); } Tuya.lastPowerCheckTime = Rtc.utc_time; @@ -885,7 +885,7 @@ void TuyaProcessStatePacket(void) { if (RtcTime.valid) { if (Tuya.lastPowerCheckTime != 0 && Energy.active_power[0] > 0) { - Energy.kWhtoday += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; + Energy.kWhtoday[0] += Energy.active_power[0] * (float)(Rtc.utc_time - Tuya.lastPowerCheckTime) / 36.0; EnergyUpdateToday(); } Tuya.lastPowerCheckTime = Rtc.utc_time; diff --git a/tasmota/xdrv_45_shelly_dimmer.ino b/tasmota/xdrv_45_shelly_dimmer.ino index b96b83d4b..d1f317bfc 100644 --- a/tasmota/xdrv_45_shelly_dimmer.ino +++ b/tasmota/xdrv_45_shelly_dimmer.ino @@ -540,7 +540,7 @@ bool ShdPacketProcess(void) #ifdef SHELLY_DIMMER_DEBUG AddLog(LOG_LEVEL_DEBUG, PSTR(SHD_LOGNAME "%4_f W is %u dmWh during %u ms"), &Energy.active_power[0], deca_microWh, time_passed); #endif // SHELLY_DIMMER_DEBUG - Energy.kWhtoday_delta += deca_microWh; + Energy.kWhtoday_delta[0] += deca_microWh; EnergyUpdateToday(); } Shd.last_power_check = millis(); diff --git a/tasmota/xnrg_01_hlw8012.ino b/tasmota/xnrg_01_hlw8012.ino index c494a0b46..310e64360 100644 --- a/tasmota/xnrg_01_hlw8012.ino +++ b/tasmota/xnrg_01_hlw8012.ino @@ -214,7 +214,7 @@ void HlwEverySecond(void) { hlw_len = 10000 * 100 / Hlw.energy_period_counter; // Add *100 to fix rounding on loads at 3.6kW (#9160) Hlw.energy_period_counter = 0; if (hlw_len) { - Energy.kWhtoday_delta += (((Hlw.power_ratio * Settings->energy_power_calibration) / 36) * 100) / hlw_len; + Energy.kWhtoday_delta[0] += (((Hlw.power_ratio * Settings->energy_power_calibration) / 36) * 100) / hlw_len; EnergyUpdateToday(); } } diff --git a/tasmota/xnrg_02_cse7766.ino b/tasmota/xnrg_02_cse7766.ino index 9fc73549a..445781b37 100644 --- a/tasmota/xnrg_02_cse7766.ino +++ b/tasmota/xnrg_02_cse7766.ino @@ -205,7 +205,7 @@ void CseEverySecond(void) { // prevent invalid load delta steps even checksum is valid but allow up to 4kW (issue #7155): if (delta <= (4000 * 1000 / 36)) { // max load for S31/Pow R2: 4.00kW Cse.cf_pulses_last_time = Cse.cf_pulses; - Energy.kWhtoday_delta += delta; + Energy.kWhtoday_delta[0] += delta; } else { AddLog(LOG_LEVEL_DEBUG, PSTR("CSE: Overload")); diff --git a/tasmota/xnrg_03_pzem004t.ino b/tasmota/xnrg_03_pzem004t.ino index 1abd8d95a..d132fccfa 100644 --- a/tasmota/xnrg_03_pzem004t.ino +++ b/tasmota/xnrg_03_pzem004t.ino @@ -192,6 +192,7 @@ void PzemEvery250ms(void) Energy.active_power[Pzem.phase] = value; break; case 4: // Total energy as 99999Wh +/* Pzem.energy += value; if (Pzem.phase == Energy.phase_count -1) { if (Pzem.energy > Pzem.last_energy) { // Handle missed phase @@ -202,6 +203,10 @@ void PzemEvery250ms(void) } Pzem.energy = 0; } +*/ + if (TasmotaGlobal.uptime > PZEM_STABILIZE) { + EnergyUpdateTotal(value, false, Pzem.phase); + } break; } Pzem.read_state++; diff --git a/tasmota/xnrg_04_mcp39f501.ino b/tasmota/xnrg_04_mcp39f501.ino index 9f9ea562e..7601731a4 100644 --- a/tasmota/xnrg_04_mcp39f501.ino +++ b/tasmota/xnrg_04_mcp39f501.ino @@ -534,7 +534,7 @@ void McpEverySecond(void) } if (mcp_active_power) { - Energy.kWhtoday_delta += ((mcp_active_power * 10) / 36); + Energy.kWhtoday_delta[0] += ((mcp_active_power * 10) / 36); EnergyUpdateToday(); } diff --git a/tasmota/xnrg_05_pzem_ac.ino b/tasmota/xnrg_05_pzem_ac.ino index acf826c69..ecf67fab0 100644 --- a/tasmota/xnrg_05_pzem_ac.ino +++ b/tasmota/xnrg_05_pzem_ac.ino @@ -78,6 +78,7 @@ void PzemAcEverySecond(void) Energy.frequency[PzemAc.phase] = (float)((buffer[17] << 8) + buffer[18]) / 10.0; // 50.0 Hz Energy.power_factor[PzemAc.phase] = (float)((buffer[19] << 8) + buffer[20]) / 100.0; // 1.00 +/* PzemAc.energy += (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh if (PzemAc.phase == Energy.phase_count -1) { if (PzemAc.energy > PzemAc.last_energy) { // Handle missed phase @@ -88,7 +89,11 @@ void PzemAcEverySecond(void) } PzemAc.energy = 0; } - +*/ + float energy = (float)((buffer[15] << 24) + (buffer[16] << 16) + (buffer[13] << 8) + buffer[14]); // 4294967295 Wh + if (TasmotaGlobal.uptime > PZEM_AC_STABILIZE) { + EnergyUpdateTotal(energy, false, PzemAc.phase); + } } } } diff --git a/tasmota/xnrg_06_pzem_dc.ino b/tasmota/xnrg_06_pzem_dc.ino index df17d2c82..dab53a2ec 100644 --- a/tasmota/xnrg_06_pzem_dc.ino +++ b/tasmota/xnrg_06_pzem_dc.ino @@ -74,7 +74,7 @@ void PzemDcEverySecond(void) Energy.voltage[PzemDc.channel] = (float)((buffer[3] << 8) + buffer[4]) / 100.0; // 655.00 V Energy.current[PzemDc.channel] = (float)((buffer[5] << 8) + buffer[6]) / 100.0; // 655.00 A Energy.active_power[PzemDc.channel] = (float)((buffer[9] << 24) + (buffer[10] << 16) + (buffer[7] << 8) + buffer[8]) / 10.0; // 429496729.0 W - +/* PzemDc.energy += (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh if (PzemDc.channel == Energy.phase_count -1) { if (PzemDc.energy > PzemDc.last_energy) { // Handle missed channel @@ -85,6 +85,11 @@ void PzemDcEverySecond(void) } PzemDc.energy = 0; } +*/ + float energy = (float)((buffer[13] << 24) + (buffer[14] << 16) + (buffer[11] << 8) + buffer[12]); // 4294967295 Wh + if (TasmotaGlobal.uptime > PZEM_DC_STABILIZE) { + EnergyUpdateTotal(energy, false, PzemDc.channel); + } } } } diff --git a/tasmota/xnrg_07_ade7953.ino b/tasmota/xnrg_07_ade7953.ino index f4270deaf..a09e4f257 100644 --- a/tasmota/xnrg_07_ade7953.ino +++ b/tasmota/xnrg_07_ade7953.ino @@ -180,12 +180,11 @@ void Ade7953GetData(void) } uint32_t current_rms_sum = Ade7953.current_rms[0] + Ade7953.current_rms[1]; - uint32_t active_power_sum = Ade7953.active_power[0] + Ade7953.active_power[1]; - AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d = %d"), + AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("ADE: U %d, C %d, I %d + %d = %d, P %d + %d"), Ade7953.voltage_rms, Ade7953.period, Ade7953.current_rms[0], Ade7953.current_rms[1], current_rms_sum, - Ade7953.active_power[0], Ade7953.active_power[1], active_power_sum); + Ade7953.active_power[0], Ade7953.active_power[1]); if (Energy.power_on) { // Powered on Energy.voltage[0] = (float)Ade7953.voltage_rms / Settings->energy_voltage_calibration; @@ -208,19 +207,16 @@ void Ade7953GetData(void) Energy.current[channel] = 0; } else { Energy.current[channel] = (float)Ade7953.current_rms[channel] / (Settings->energy_current_calibration * 10); + Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } } + EnergyUpdateToday(); /* } else { // Powered off Energy.data_valid[0] = ENERGY_WATCHDOG; Energy.data_valid[1] = ENERGY_WATCHDOG; */ } - - if (active_power_sum) { - Energy.kWhtoday_delta += ((active_power_sum * (100000 / (Settings->energy_power_calibration / 10))) / 3600); - EnergyUpdateToday(); - } } void Ade7953EnergyEverySecond(void) diff --git a/tasmota/xnrg_14_bl09xx.ino b/tasmota/xnrg_14_bl09xx.ino index 68534d425..db064af6a 100644 --- a/tasmota/xnrg_14_bl09xx.ino +++ b/tasmota/xnrg_14_bl09xx.ino @@ -212,43 +212,10 @@ void Bl09XXEverySecond(void) { memset(Bl09XX.power, 0, sizeof(Bl09XX.power)); } else { // Calculate energy by using active power - uint32_t energy_sum = 0; for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { - energy_sum += (Energy.active_power[channel] * 1000); + Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } - if (energy_sum) { - Energy.kWhtoday_delta += energy_sum / 36; - EnergyUpdateToday(); - } -/* - // Calculate energy by using active energy pulse count - bool update_today = false; - for (int chan = 0 ; chan < Energy.phase_count ; chan++ ) { - if (BL09XX_PULSES_NOT_INITIALIZED == Bl09XX.cf_pulses_last_time[chan]) { - Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; // Init after restart - } else { - uint32_t cf_pulses = 0; - if (Bl09XX.cf_pulses[chan] < Bl09XX.cf_pulses_last_time[chan]) { // Rolled over after 0xFFFFFF (16777215) pulses - cf_pulses = (0x1000000 - Bl09XX.cf_pulses_last_time[chan]) + Bl09XX.cf_pulses[chan]; - } else { - cf_pulses = Bl09XX.cf_pulses[chan] - Bl09XX.cf_pulses_last_time[chan]; - } - if (cf_pulses && Energy.active_power[chan]) { - uint32_t watt256 = (1638400 * 256) / Settings->energy_power_calibration; - uint32_t delta = (cf_pulses * watt256) / 36; - if (delta <= (4000 * 1000 / 36)) { // max load for SHP10: 4.00kW (3.68kW) - Bl09XX.cf_pulses_last_time[chan] = Bl09XX.cf_pulses[chan]; - } else { - AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Overload [%d] %d"), chan, delta); - Bl09XX.cf_pulses_last_time[chan] = BL09XX_PULSES_NOT_INITIALIZED; - } - update_today = true; - } - } - } - if (update_today) - EnergyUpdateToday(); -*/ + EnergyUpdateToday(); } // AddLog(LOG_LEVEL_DEBUG, PSTR("BL9: Poll")); diff --git a/tasmota/xnrg_19_cse7761.ino b/tasmota/xnrg_19_cse7761.ino index 2bf593a03..c61322d30 100644 --- a/tasmota/xnrg_19_cse7761.ino +++ b/tasmota/xnrg_19_cse7761.ino @@ -95,7 +95,7 @@ struct { uint32_t energy[2] = { 0 }; uint32_t active_power[2] = { 0 }; uint16_t coefficient[8] = { 0 }; - uint8_t energy_update = 0; + uint8_t energy_update[2] = { 0 }; uint8_t init = 4; uint8_t ready = 0; } CSE7761Data; @@ -476,7 +476,7 @@ void Cse7761GetData(void) { // Energy.current[channel] = (float)(((uint64_t)CSE7761Data.current_rms[channel] * CSE7761Data.coefficient[RmsIAC + channel]) >> 23) / 1000; // A Energy.current[channel] = (float)CSE7761Data.current_rms[channel] / Settings->energy_current_calibration; // A CSE7761Data.energy[channel] += Energy.active_power[channel]; - CSE7761Data.energy_update++; + CSE7761Data.energy_update[channel]++; } } } @@ -557,16 +557,14 @@ void Cse7761EverySecond(void) { } else { if (2 == CSE7761Data.ready) { - if (CSE7761Data.energy_update) { - uint32_t energy_sum = ((CSE7761Data.energy[0] + CSE7761Data.energy[1]) * 1000) / CSE7761Data.energy_update; - if (energy_sum) { - Energy.kWhtoday_delta += energy_sum / 36; - EnergyUpdateToday(); + for (uint32_t channel = 0; channel < 2; channel++) { + if (CSE7761Data.energy_update[channel]) { + Energy.kWhtoday_delta[channel] += ((CSE7761Data.energy[channel] * 1000) / CSE7761Data.energy_update[channel]) / 36; + CSE7761Data.energy[channel] = 0; + CSE7761Data.energy_update[channel] = 0; } + EnergyUpdateToday(); } - CSE7761Data.energy[0] = 0; - CSE7761Data.energy[1] = 0; - CSE7761Data.energy_update = 0; } } } diff --git a/tasmota/xnrg_30_dummy.ino b/tasmota/xnrg_30_dummy.ino index dd8c77848..4aa308fdb 100644 --- a/tasmota/xnrg_30_dummy.ino +++ b/tasmota/xnrg_30_dummy.ino @@ -44,7 +44,6 @@ void NrgDummyEverySecond(void) { if (Energy.power_on) { // Powered on - float energy = 0; for (uint32_t channel = 0; channel < Energy.phase_count; channel++) { Energy.voltage[channel] = ((float)Settings->energy_voltage_calibration / 100); // V Energy.frequency[channel] = ((float)Settings->energy_frequency_calibration / 100); // Hz @@ -54,16 +53,12 @@ void NrgDummyEverySecond(void) { Energy.current[channel] = 0; } else { Energy.current[channel] = ((float)Settings->energy_current_calibration / 100000); // A - energy += Energy.active_power[channel]; + Energy.kWhtoday_delta[channel] += Energy.active_power[channel] * 1000 / 36; } Energy.data_valid[channel] = 0; } } - - if (energy > 0) { - Energy.kWhtoday_delta += energy * 1000 / 36; - EnergyUpdateToday(); - } + EnergyUpdateToday(); } } diff --git a/tasmota/xsns_75_prometheus.ino b/tasmota/xsns_75_prometheus.ino index 1d38f7b03..caa2330fa 100644 --- a/tasmota/xsns_75_prometheus.ino +++ b/tasmota/xsns_75_prometheus.ino @@ -268,10 +268,10 @@ void HandleMetrics(void) { Energy.active_power[0], Settings->flag2.wattage_resolution, nullptr); WritePromMetricDec(PSTR("energy_power_kilowatts_daily"), kPromMetricCounter, - Energy.daily, Settings->flag2.energy_resolution, nullptr); + Energy.daily_sum, Settings->flag2.energy_resolution, nullptr); WritePromMetricDec(PSTR("energy_power_kilowatts_total"), kPromMetricCounter, - Energy.total, Settings->flag2.energy_resolution, nullptr); + Energy.total_sum, Settings->flag2.energy_resolution, nullptr); #endif for (uint32_t device = 0; device < TasmotaGlobal.devices_present; device++) { From 0b944fddba3bb5c0e8df63ab3c00bd303a8bb54d Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Wed, 29 Sep 2021 16:36:33 +0200 Subject: [PATCH 263/317] Fix unwanted display interactions Fix unwanted display interactions when no display is configured --- tasmota/xdrv_13_display.ino | 57 +++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index f4c280b4b..dd3567822 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -1782,38 +1782,39 @@ void DisplayLocalSensor(void) void DisplayInitDriver(void) { XdspCall(FUNC_DISPLAY_INIT_DRIVER); - ApplyDisplayDimmer(); - -#ifdef USE_MULTI_DISPLAY - Set_display(0); -#endif // USE_MULTI_DISPLAY - - if (renderer) { - renderer->setTextFont(Settings->display_font); - renderer->setTextSize(Settings->display_size); - // force opaque mode - renderer->setDrawMode(0); - - for (uint32_t cnt = 0; cnt < (MAX_INDEXCOLORS - PREDEF_INDEXCOLORS); cnt++) { - index_colors[cnt] = 0; - } - } - -#ifdef USE_DT_VARS - free_dt_vars(); -#endif - -#ifdef USE_UFILESYS - Display_Text_From_File(DISP_BATCH_FILE); -#endif - -#ifdef USE_GRAPH - for (uint8_t count = 0; count < NUM_GRAPHS; count++) { graph[count] = 0; } -#endif // AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Display model %d"), Settings->display_model); if (Settings->display_model) { + ApplyDisplayDimmer(); + +#ifdef USE_MULTI_DISPLAY + Set_display(0); +#endif // USE_MULTI_DISPLAY + + if (renderer) { + renderer->setTextFont(Settings->display_font); + renderer->setTextSize(Settings->display_size); + // force opaque mode + renderer->setDrawMode(0); + + for (uint32_t cnt = 0; cnt < (MAX_INDEXCOLORS - PREDEF_INDEXCOLORS); cnt++) { + index_colors[cnt] = 0; + } + } + +#ifdef USE_DT_VARS + free_dt_vars(); +#endif + +#ifdef USE_UFILESYS + Display_Text_From_File(DISP_BATCH_FILE); +#endif + +#ifdef USE_GRAPH + for (uint8_t count = 0; count < NUM_GRAPHS; count++) { graph[count] = 0; } +#endif + TasmotaGlobal.devices_present++; if (!PinUsed(GPIO_BACKLIGHT)) { if (TasmotaGlobal.light_type && (4 == Settings->display_model)) { From 7e38e7511664bd66f135508dc4d51c9134adffa7 Mon Sep 17 00:00:00 2001 From: gemu2015 Date: Thu, 30 Sep 2021 19:09:38 +0200 Subject: [PATCH 264/317] fix multi display issues --- lib/lib_display/UDisplay/uDisplay.cpp | 1 + tasmota/xdrv_13_display.ino | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/lib_display/UDisplay/uDisplay.cpp b/lib/lib_display/UDisplay/uDisplay.cpp index 7bca0f723..44b19d6e9 100755 --- a/lib/lib_display/UDisplay/uDisplay.cpp +++ b/lib/lib_display/UDisplay/uDisplay.cpp @@ -70,6 +70,7 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) { bg_col = 0; splash_font = -1; rotmap_xmin = -1; + bpanel = -1; allcmd_mode = 0; startline = 0xA1; uint8_t section = 0; diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index dd3567822..b55ab7359 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -63,6 +63,8 @@ struct MULTI_DISP { int16_t disp_ypos; uint8_t color_type; uint8_t auto_draw; + uint8_t model; + uint8_t used; } displays[MAX_MULTI_DISPLAYS]; uint8_t cur_display; Renderer *Init_uDisplay(const char *desc, int8_t cs); @@ -75,6 +77,8 @@ void Set_display(uint8_t index) { displays[index].auto_draw = auto_draw; displays[index].disp_xpos = disp_xpos; displays[index].disp_ypos = disp_ypos; + displays[index].model = Settings->display_model; + displays[index].used = 1; cur_display = index; } @@ -87,6 +91,7 @@ void Get_display(uint8_t index) { disp_xpos = displays[index].disp_xpos; disp_ypos = displays[index].disp_ypos; if (renderer) renderer->setDrawMode(auto_draw >> 1); + //Settings->display_model = displays[index].model; cur_display = index; } #endif // USE_MULTI_DISPLAY @@ -587,16 +592,21 @@ void DisplayText(void) break; #ifdef USE_MULTI_DISPLAY case 'S': - { + { int16_t rot = -1, srot, model; var = atoiv(cp, &temp); cp += var; if (temp < 1 || temp > MAX_MULTI_DISPLAYS) { temp = 1; } temp--; + if (*cp == 'r') { + cp++; + var = atoiv(cp, &rot); + cp += var; + } if (*cp == ':') { cp++; - if (displays[temp].display) { + if (displays[temp].used) { Set_display(cur_display); Get_display(temp); } @@ -613,13 +623,22 @@ void DisplayText(void) uint32_t size = fp.size(); char *fdesc = (char *)calloc(size + 4, 1); if (fdesc) { + model = Settings->display_model; fp.read((uint8_t*)fdesc, size); fp.close(); Get_display(temp); + if (rot >= 0) { + srot = Settings->display_rotate; + Settings->display_rotate = rot; + } renderer = Init_uDisplay(fdesc, -1); + if (rot >= 0) { + Settings->display_rotate = srot; + } Set_display(temp); AddLog(LOG_LEVEL_INFO, PSTR("DSP: File descriptor loaded %x"),renderer); free(fdesc); + Settings->display_model = model; } } } From a21e4a58fc04fe06e1f8338d3ddddb7af313bec4 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Thu, 30 Sep 2021 19:51:40 +0200 Subject: [PATCH 265/317] Berry add `tasmota.global` --- lib/libesp32/Berry/default/be_ctypes.c | 59 +- .../default/be_energy_ctypes_definitions.c | 130 +- .../default/be_lvgl_ctypes_definitions.c | 70 +- lib/libesp32/Berry/default/be_tasmotalib.c | 42 + lib/libesp32/Berry/default/be_webserver_lib.c | 1 - .../Berry/default/embedded/Tasmota.be | 6 + lib/libesp32/Berry/generate/be_const_strtab.h | 1386 +++++------ .../Berry/generate/be_const_strtab_def.h | 2044 +++++++++-------- .../generate/be_fixed_be_class_ctypes_dyn.h | 18 + .../generate/be_fixed_be_class_tasmota.h | 130 +- lib/libesp32/Berry/include/be_ctypes.h | 83 + lib/libesp32/Berry/src/be_constobj.h | 2 +- tasmota/berry/modules/ctypes.be | 100 +- tasmota/tasmota.ino | 2 +- tasmota/xdrv_52_3_berry_tasmota_global.ino | 45 + 15 files changed, 2103 insertions(+), 2015 deletions(-) create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_dyn.h create mode 100644 lib/libesp32/Berry/include/be_ctypes.h create mode 100644 tasmota/xdrv_52_3_berry_tasmota_global.ino diff --git a/lib/libesp32/Berry/default/be_ctypes.c b/lib/libesp32/Berry/default/be_ctypes.c index a462f8470..7d81b64ca 100644 --- a/lib/libesp32/Berry/default/be_ctypes.c +++ b/lib/libesp32/Berry/default/be_ctypes.c @@ -236,7 +236,7 @@ int be_ctypes_member(bvm *vm) { } // the int result is at top of the stack // check if we need an instance mapping - if (member->mapping > 0) { + if (member->mapping > 0 && definitions->instance_mapping) { const char * mapping_name = definitions->instance_mapping[member->mapping - 1]; if (mapping_name) { be_getglobal(vm, mapping_name); // stack: class @@ -378,14 +378,64 @@ int be_ctypes_tomap(bvm *vm) { be_return(vm); } +// +// Constructor for ctypes_dyn structure +// +// Arg1 is instance self +// Arg2 is int or comptr (and not null): create a mapped bytes buffer to read/write at a specific location +// Arg3 is int or comptr (and not null): the binary definition of the struct (dynamic and not fixed as static member) +int be_ctypes_dyn_init(bvm *vm) { + int argc = be_top(vm); + void * src_data = NULL; + const be_ctypes_structure_t * definitions = NULL; + if (argc > 2 && (be_isint(vm, 2) || be_iscomptr(vm, 2)) && (be_isint(vm, 3) || be_iscomptr(vm, 3))) { + if (be_iscomptr(vm, 2)) { + src_data = be_tocomptr(vm, 2); + } else { + src_data = (void*) be_toint(vm, 2); + } + if (be_iscomptr(vm, 3)) { + definitions = (const be_ctypes_structure_t *) be_tocomptr(vm, 3); + } else { + definitions = (const be_ctypes_structure_t *) be_toint(vm, 3); + } + } + if (!src_data || !definitions) { + be_raise(vm, "value_error", "'address' and 'definition' cannot be null"); + } + + // store definition in member variable + be_pushcomptr(vm, (void*) definitions); + be_setmember(vm, 1, "_def"); // static class comptr + be_pop(vm, 1); + + // call bytes.init(self) + be_getbuiltin(vm, "bytes"); // shortcut `ctypes` init and call directly bytes.init() + be_getmember(vm, -1, "init"); + be_pushvalue(vm, 1); + be_pushcomptr(vm, src_data); + be_pushint(vm, -definitions->size_bytes); // negative size signals a fixed size + be_call(vm, 3); // call with 2 or 3 arguments depending on provided address + be_pop(vm, 4); + // super(self, bytes) still on top of stack + + be_pop(vm, 1); + + be_return(vm); +} + BE_EXPORT_VARIABLE extern const bclass be_class_bytes; #include "../generate/be_fixed_be_class_ctypes.h" +#include "../generate/be_fixed_be_class_ctypes_dyn.h" void be_load_ctypes_lib(bvm *vm) { be_pushntvclass(vm, &be_class_ctypes); be_setglobal(vm, "ctypes_bytes"); be_pop(vm, 1); + be_pushntvclass(vm, &be_class_ctypes_dyn); + be_setglobal(vm, "ctypes_bytes_dyn"); + be_pop(vm, 1); } /* @const_object_info_begin @@ -399,3 +449,10 @@ class be_class_ctypes (scope: global, name: ctypes_bytes, super: be_class_bytes) tomap, func(be_ctypes_tomap) } @const_object_info_end */ + +/* @const_object_info_begin +class be_class_ctypes_dyn (scope: global, name: ctypes_bytes_dyn, super: be_class_ctypes) { + _def, var + init, func(be_ctypes_dyn_init) +} +@const_object_info_end */ diff --git a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c index 58be289e6..ef5e964b3 100644 --- a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c +++ b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c @@ -1,7 +1,7 @@ /******************************************************************** * Tasmota LVGL ctypes mapping *******************************************************************/ -#include "be_constobj.h" +#include "be_ctypes.h" #ifdef USE_ENERGY_SENSOR @@ -9,78 +9,10 @@ * Generated code, don't edit *******************************************************************/ -enum { - ctypes_i32 = 14, - ctypes_i16 = 12, - ctypes_i8 = 11, - ctypes_u32 = 4, - ctypes_u16 = 2, - ctypes_u8 = 1, - - // big endian - ctypes_be_i32 = -14, - ctypes_be_i16 = -12, - ctypes_be_i8 = -11, - ctypes_be_u32 = -4, - ctypes_be_u16 = -2, - ctypes_be_u8 = -1, - - ctypes_bf = 0, //bif-field -}; - -typedef struct be_ctypes_structure_item_t { - const char * name; - uint16_t offset_bytes; - uint8_t offset_bits : 3; - uint8_t len_bits : 5; - int8_t type : 5; - uint8_t mapping : 3; -} be_ctypes_structure_item_t; - -typedef struct be_ctypes_structure_t { - uint16_t size_bytes; /* size in bytes */ - uint16_t size_elt; /* number of elements */ - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_structure_item_t * items; -} be_ctypes_structure_t; - -typedef struct be_ctypes_class_t { - const char * name; - const be_ctypes_structure_t * definitions; -} be_ctypes_class_t; - -typedef struct be_ctypes_classes_t { - uint16_t size; - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_class_t * classes; -} be_ctypes_classes_t; - -BE_EXPORT_VARIABLE extern const bclass be_class_ctypes; - -static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { - be_pushntvclass(vm, ctypes_class); - be_setglobal(vm, str(ctypes_class->name)); - be_pop(vm, 1); -} - static const char * be_ctypes_instance_mappings[]; /* forward definition */ -// Define a sub-class of ctypes with only one member which points to the ctypes defintion -#define be_define_ctypes_class(_c_name, _def, _super, _name) \ - be_local_class(_c_name, \ - 0, \ - _super, \ - be_nested_map(1, \ - ( (struct bmapnode*) &(const bmapnode[]) { \ - { be_nested_key("_def", 1985022181, 4, -1), be_const_comptr(_def) },\ - })), \ - (be_nested_const_str(_name, 0, sizeof(_name)-1)) \ - ) - -/********************************************************************/ - const be_ctypes_structure_t be_energy_struct = { - 158, /* size in bytes */ + 170, /* size in bytes */ 66, /* number of elements */ be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[66]) { @@ -94,7 +26,7 @@ const be_ctypes_structure_t be_energy_struct = { { "current", 12, 0, 0, 5, 0 }, { "current_2", 16, 0, 0, 5, 0 }, { "current_3", 20, 0, 0, 5, 0 }, - { "current_available", 130, 5, 1, 0, 0 }, + { "current_available", 135, 0, 0, 1, 0 }, { "daily", 100, 0, 0, 5, 0 }, { "data_valid", 126, 0, 0, 1, 0 }, { "data_valid_2", 127, 0, 0, 1, 0 }, @@ -106,50 +38,50 @@ const be_ctypes_structure_t be_energy_struct = { { "frequency", 72, 0, 0, 5, 0 }, { "frequency_2", 76, 0, 0, 5, 0 }, { "frequency_3", 80, 0, 0, 5, 0 }, - { "frequency_common", 130, 1, 1, 0, 0 }, - { "max_current_flag", 150, 5, 1, 0, 0 }, - { "max_energy_state", 157, 0, 0, 1, 0 }, - { "max_power_flag", 150, 1, 1, 0, 0 }, - { "max_voltage_flag", 150, 3, 1, 0, 0 }, - { "min_current_flag", 150, 4, 1, 0, 0 }, - { "min_power_flag", 150, 0, 1, 0, 0 }, - { "min_voltage_flag", 150, 2, 1, 0, 0 }, - { "mplh_counter", 152, 0, 0, 2, 0 }, - { "mplr_counter", 156, 0, 0, 1, 0 }, - { "mplw_counter", 154, 0, 0, 2, 0 }, + { "frequency_common", 131, 0, 0, 1, 0 }, + { "max_current_flag", 162, 0, 0, 1, 0 }, + { "max_energy_state", 169, 0, 0, 1, 0 }, + { "max_power_flag", 158, 0, 0, 1, 0 }, + { "max_voltage_flag", 160, 0, 0, 1, 0 }, + { "min_current_flag", 161, 0, 0, 1, 0 }, + { "min_power_flag", 157, 0, 0, 1, 0 }, + { "min_voltage_flag", 159, 0, 0, 1, 0 }, + { "mplh_counter", 164, 0, 0, 2, 0 }, + { "mplr_counter", 168, 0, 0, 1, 0 }, + { "mplw_counter", 166, 0, 0, 2, 0 }, { "period", 120, 0, 0, 4, 0 }, { "phase_count", 129, 0, 0, 1, 0 }, { "power_factor", 60, 0, 0, 5, 0 }, { "power_factor_2", 64, 0, 0, 5, 0 }, { "power_factor_3", 68, 0, 0, 5, 0 }, - { "power_history_0", 131, 0, 0, 2, 0 }, - { "power_history_0_2", 133, 0, 0, 2, 0 }, - { "power_history_0_3", 135, 0, 0, 2, 0 }, - { "power_history_1", 137, 0, 0, 2, 0 }, - { "power_history_1_2", 139, 0, 0, 2, 0 }, - { "power_history_1_3", 141, 0, 0, 2, 0 }, - { "power_history_2", 143, 0, 0, 2, 0 }, - { "power_history_2_2", 145, 0, 0, 2, 0 }, - { "power_history_2_3", 147, 0, 0, 2, 0 }, - { "power_on", 130, 7, 1, 0, 0 }, - { "power_steady_counter", 149, 0, 0, 1, 0 }, + { "power_history_0", 138, 0, 0, 2, 0 }, + { "power_history_0_2", 140, 0, 0, 2, 0 }, + { "power_history_0_3", 142, 0, 0, 2, 0 }, + { "power_history_1", 144, 0, 0, 2, 0 }, + { "power_history_1_2", 146, 0, 0, 2, 0 }, + { "power_history_1_3", 148, 0, 0, 2, 0 }, + { "power_history_2", 150, 0, 0, 2, 0 }, + { "power_history_2_2", 152, 0, 0, 2, 0 }, + { "power_history_2_3", 154, 0, 0, 2, 0 }, + { "power_on", 137, 0, 0, 1, 0 }, + { "power_steady_counter", 156, 0, 0, 1, 0 }, { "reactive_power", 48, 0, 0, 5, 0 }, { "reactive_power_2", 52, 0, 0, 5, 0 }, { "reactive_power_3", 56, 0, 0, 5, 0 }, { "start_energy", 96, 0, 0, 5, 0 }, - { "suff", 151, 0, 0, 1, 0 }, + { "stuff", 163, 0, 0, 1, 0 }, { "today_delta_kwh", 108, 0, 0, 4, 0 }, { "today_kwh", 116, 0, 0, 4, 0 }, - { "today_offset_init_kwh", 130, 3, 1, 0, 0 }, + { "today_offset_init_kwh", 133, 0, 0, 1, 0 }, { "today_offset_kwh", 112, 0, 0, 4, 0 }, { "total", 104, 0, 0, 5, 0 }, - { "type_dc", 130, 6, 1, 0, 0 }, - { "use_overtemp", 130, 2, 1, 0, 0 }, + { "type_dc", 136, 0, 0, 1, 0 }, + { "use_overtemp", 132, 0, 0, 1, 0 }, { "voltage", 0, 0, 0, 5, 0 }, { "voltage_2", 4, 0, 0, 5, 0 }, { "voltage_3", 8, 0, 0, 5, 0 }, - { "voltage_available", 130, 4, 1, 0, 0 }, - { "voltage_common", 130, 0, 1, 0, 0 }, + { "voltage_available", 134, 0, 0, 1, 0 }, + { "voltage_common", 130, 0, 0, 1, 0 }, }}; static const char * be_ctypes_instance_mappings[] = { diff --git a/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c b/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c index cb190949e..7b49fa4bc 100644 --- a/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c +++ b/lib/libesp32/Berry/default/be_lvgl_ctypes_definitions.c @@ -1,7 +1,7 @@ /******************************************************************** * Tasmota LVGL ctypes mapping *******************************************************************/ -#include "be_constobj.h" +#include "be_ctypes.h" #ifdef USE_LVGL @@ -11,76 +11,8 @@ * Generated code, don't edit *******************************************************************/ -enum { - ctypes_i32 = 14, - ctypes_i16 = 12, - ctypes_i8 = 11, - ctypes_u32 = 4, - ctypes_u16 = 2, - ctypes_u8 = 1, - - // big endian - ctypes_be_i32 = -14, - ctypes_be_i16 = -12, - ctypes_be_i8 = -11, - ctypes_be_u32 = -4, - ctypes_be_u16 = -2, - ctypes_be_u8 = -1, - - ctypes_bf = 0, //bif-field -}; - -typedef struct be_ctypes_structure_item_t { - const char * name; - uint16_t offset_bytes; - uint8_t offset_bits : 3; - uint8_t len_bits : 5; - int8_t type : 5; - uint8_t mapping : 3; -} be_ctypes_structure_item_t; - -typedef struct be_ctypes_structure_t { - uint16_t size_bytes; /* size in bytes */ - uint16_t size_elt; /* number of elements */ - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_structure_item_t * items; -} be_ctypes_structure_t; - -typedef struct be_ctypes_class_t { - const char * name; - const be_ctypes_structure_t * definitions; -} be_ctypes_class_t; - -typedef struct be_ctypes_classes_t { - uint16_t size; - const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ - const be_ctypes_class_t * classes; -} be_ctypes_classes_t; - -BE_EXPORT_VARIABLE extern const bclass be_class_ctypes; - -static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { - be_pushntvclass(vm, ctypes_class); - be_setglobal(vm, str(ctypes_class->name)); - be_pop(vm, 1); -} - static const char * be_ctypes_instance_mappings[]; /* forward definition */ -// Define a sub-class of ctypes with only one member which points to the ctypes defintion -#define be_define_ctypes_class(_c_name, _def, _super, _name) \ - be_local_class(_c_name, \ - 0, \ - _super, \ - be_nested_map(1, \ - ( (struct bmapnode*) &(const bmapnode[]) { \ - { be_nested_key("_def", 1985022181, 4, -1), be_const_comptr(_def) },\ - })), \ - (be_nested_const_str(_name, 0, sizeof(_name)-1)) \ - ) - -/********************************************************************/ - const be_ctypes_structure_t be_lv_point = { 4, /* size in bytes */ 2, /* number of elements */ diff --git a/lib/libesp32/Berry/default/be_tasmotalib.c b/lib/libesp32/Berry/default/be_tasmotalib.c index 6a562246b..556647998 100644 --- a/lib/libesp32/Berry/default/be_tasmotalib.c +++ b/lib/libesp32/Berry/default/be_tasmotalib.c @@ -5,6 +5,10 @@ *******************************************************************/ #include "be_constobj.h" +struct dummy_struct {}; // we need a struct name but don't need any meaningful content, we just take the address +extern struct TasmotaGlobal_t TasmotaGlobal; +extern struct dummy_struct be_tasmota_global_struct; + extern int l_getFreeHeap(bvm *vm); extern int l_publish(bvm *vm); extern int l_publish_result(bvm *vm); @@ -44,6 +48,38 @@ extern int l_getswitch(bvm *vm); extern int l_i2cenabled(bvm *vm); +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_string("global", 503252654, 6), + /* K1 */ be_nested_string("ctypes_bytes_dyn", 915205307, 16), + /* K2 */ be_nested_string("_global_addr", 533766721, 12), + /* K3 */ be_nested_string("_global_def", 646007001, 11), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0xB8060200, // 0000 GETNGBL R1 K1 + 0x88080102, // 0001 GETMBR R2 R0 K2 + 0x880C0103, // 0002 GETMBR R3 R0 K3 + 0x7C040400, // 0003 CALL R1 2 + 0x90020001, // 0004 SETMBR R0 K0 R1 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ /******************************************************************** ** Solidified function: add_driver @@ -1598,6 +1634,12 @@ class be_class_tasmota (scope: global, name: Tasmota) { _cb, var wire1, var wire2, var + global, var + + _global_def, comptr(&be_tasmota_global_struct) + _global_addr, comptr(&TasmotaGlobal) + + init, closure(init_closure) get_free_heap, func(l_getFreeHeap) publish, func(l_publish) diff --git a/lib/libesp32/Berry/default/be_webserver_lib.c b/lib/libesp32/Berry/default/be_webserver_lib.c index 4d2e7514c..0f3e45d05 100644 --- a/lib/libesp32/Berry/default/be_webserver_lib.c +++ b/lib/libesp32/Berry/default/be_webserver_lib.c @@ -37,7 +37,6 @@ module webserver (scope: global) { check_privileged_access, func(w_webserver_check_privileged_access) redirect, func(w_webserver_redirect) - content_start, func(w_webserver_content_start) content_send, func(w_webserver_content_send) content_send_style, func(w_webserver_content_send_style) content_flush, func(w_webserver_content_flush) diff --git a/lib/libesp32/Berry/default/embedded/Tasmota.be b/lib/libesp32/Berry/default/embedded/Tasmota.be index 7e3d3a9d3..f2a2f20cb 100644 --- a/lib/libesp32/Berry/default/embedded/Tasmota.be +++ b/lib/libesp32/Berry/default/embedded/Tasmota.be @@ -17,6 +17,12 @@ end tasmota = nil class Tasmota + var global # mapping to TasmotaGlobal + + def init() + # instanciate the mapping object to TasmotaGlobal + self.global = ctypes_bytes_dyn(self._global_addr, self._global_def) + end # add `chars_in_string(s:string,c:string) -> int`` # looks for any char in c, and return the position of the first char diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index 2480d1dde..b69b0b7b2 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,701 +1,705 @@ -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str_target_search; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_remove_cmd; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_PMS5003_TX; extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str__read; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_BOILER_OT_RX; extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_lv_page; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_lv_event_cb; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_CSE7761_TX; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_KEY1_NP; extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_RC522_CS; extern const bcstring be_const_str_search; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_WE517_TX; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_lv_win; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_lv_list; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_SERIAL_6N2; extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_except; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_isnan; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_tomap; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_BUZZER; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_SPI_DC; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_SERIAL_7N2; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_scan; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_MAX31855DO; extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_dot_size; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_init; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_EPAPER42_CS; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str__ptr; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_SERIAL_7E1; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_setmember; -extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_size; extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_MHZ_TXD; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_nan; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_TCP_RX; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str__def; -extern const bcstring be_const_str_setbits; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_lv_font; -extern const bcstring be_const_str_DCKI; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_chars_in_string; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_REL1_INV; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_try_rule; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_dot_len; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_DHT22; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_PMS5003_TX; extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_except; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_lv_gauge_format_cb; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_isinstance; extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_redirect; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_dot_len; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_global; +extern const bcstring be_const_str_lv_cont; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str__ptr; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_CNTR1_NP; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_lv_gauge; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str__global_addr; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_dot_size; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_log10; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_seg7_font; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_isnan; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str__def; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_lv_tabview; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str_lv_linemeter; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_encrypt; +extern const bcstring be_const_str_lv_calendar; +extern const bcstring be_const_str_for; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_lv_design_cb; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_setmember; +extern const bcstring be_const_str_DI; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_A4988_ENA; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str_module; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_ctypes_bytes_dyn; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_lv_keyboard; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_lv_imgbtn; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_time_str; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_lv_group_focus_cb; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_SYMBOL_SHUFFLE; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_MCP39F5_RST; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_lv_tileview; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_RDM6300_RX; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str__global_def; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_GPS_RX; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_setbits; +extern const bcstring be_const_str_FALLING; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_ILI9341_DC; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_rtc; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_TXD; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_lv_objmask; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_ADC_RANGE; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_lv_signal_cb; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_lv_spinner; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_lv_cpicker; +extern const bcstring be_const_str_SWT1_PD; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_nan; +extern const bcstring be_const_str_PULLDOWN; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_HX711_DAT; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_lv_cb; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_tomap; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_HPMA_RX; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_SYMBOL_BATTERY_3; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_init; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 7f502367e..3cf575ec6 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1049 +1,1055 @@ -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_SSD1351_DC); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_str); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_SYMBOL_REFRESH); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, NULL); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_SR04_ECHO); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, NULL); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_HIGH); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, NULL); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, &be_const_str_INPUT); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_exec_rules); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_SYMBOL_LIST); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_page); +be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_event_cb); +be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_RISING); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_AudioGeneratorMP3); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_PULLUP); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_SYMBOL_SETTINGS); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SR04_TRIG); -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str__read); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_digital_read); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_cb_dispatch); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, NULL); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, NULL); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_getbits); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, &be_const_str_resp_cmnd_done); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_Tasmota); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_NEOPOOL_TX); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_HLW_CF); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SWT1); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_pi); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_I2S_IN_DATA); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_I2S_OUT_CLK); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SERIAL_8O2); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_str); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_MAX7219CLK); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str__drivers); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_ceil); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_SYMBOL_PREV); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_OLED_RESET); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_content_start); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_RC522_CS); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_HJL_CF); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_SERIAL_7E2); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_pin_mode); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_wifi); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, &be_const_str_load_font); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SSPI_MISO); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_PN532_RXD); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_win); +be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_list); +be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, NULL); be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_write_bytes); be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, &be_const_str_except); -be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_eth); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_log); -be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_SYMBOL_AUDIO); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, NULL); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_reverse_gamma10); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_SBR_RX); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_RF_SENSOR); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_remove_timer); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_isnan); -be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_NRG_SEL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, &be_const_str_tomap); -be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, NULL); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, NULL); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_SSD1331_CS); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SYMBOL_LEFT); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_TASMOTACLIENT_RST); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, &be_const_str_SPI_DC); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_SSPI_SCLK); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, NULL); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, &be_const_str_cmd); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_yield); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_digital_write); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, NULL); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, &be_const_str_deg); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_AZ_TXD); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str_KEY1_TC); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_PMS5003_RX); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_REL1); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_list); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SERIAL_7N2); -be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_tostring); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, NULL); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_MD5); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_MAX7219CS); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SI7021); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, NULL); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_response_append); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, NULL); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, NULL); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, NULL); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, NULL); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str_event); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_TFMINIPLUS_TX); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_content_send); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_tag); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); -be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_BACKLIGHT); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, NULL); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); -be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, NULL); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_available); -be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SDM72_TX); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_SERIAL_8O1); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, NULL); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_LE01MR_RX); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_has_arg); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SOLAXX1_RX); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SERIAL_6N2); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_NRG_SEL_INV); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_redirect); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_setmember); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, NULL); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_imax); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, NULL); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, &be_const_str_raise); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SERIAL_7O2); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_raise); be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_KEY1_NP); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_MINUS); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_rand); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SAIR_TX); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, NULL); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_VL53L0X_XSHUT1); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_set_power); -be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_SYMBOL_FILE); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HRE_DATA); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_SYMBOL_CHARGE); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_TM1638STB); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_classname); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_nan); -be_define_const_str(nan, "nan", 797905850u, 0, 3, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, NULL); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_detect); -be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_shared_key); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_pow); -be_define_const_str(pow, "pow", 1479764693u, 0, 3, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, NULL); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_SYMBOL_BATTERY_3); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, NULL); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_SDS0X1_RX); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, NULL); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SYMBOL_BATTERY_FULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, NULL); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SYMBOL_SD_CARD); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_TELEINFO_ENABLE); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_ADC_BUTTON_INV); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_TCP_RX); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_get_string); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str__def); -be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_setbits); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, &be_const_str_end); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str__buffer); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, &be_const_str_resp_cmnd); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str__end_transmission); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_lv_btnmatrix); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_top); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_TM1638DIO); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_top); be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_lv_checkbox); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_SYMBOL_BLUETOOTH); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_ILI9341_DC); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_i2c_enabled); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, NULL); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_ELECTRIQ_MOODL_TX); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, NULL); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_SYMBOL_WARNING); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_get_switch); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, &be_const_str_lv_msgbox); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str___upper__); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_PN532_TXD); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_SYMBOL_BATTERY_EMPTY); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, NULL); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_rad); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_FTC532); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_break); -be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_INTERRUPT); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, NULL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_GET); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_ROT1A_NP); be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_SERIAL_5E2); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_real); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, NULL); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); -be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_SERIAL_5N1); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_byte); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_OK); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SDM630_RX); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, NULL); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, NULL); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_BOILER_OT_RX); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_map); -be_define_const_str(map, "map", 3751997361u, 0, 3, &be_const_str_true); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_SYMBOL_CALL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_SYMBOL_KEYBOARD); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, NULL); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_select); -be_define_const_str(select, "select", 297952813u, 0, 6, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_PZEM017_RX); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, &be_const_str_seg7_font); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, &be_const_str_public_key); -be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, NULL); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_SPI_MISO); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_SERIAL_8N2); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, NULL); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_lv_canvas); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_find_op); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_Wire); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_WEBCAM_SIOD); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, NULL); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, &be_const_str__cmd); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_TM1637DIO); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, NULL); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_CSE7761_RX); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_finish); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(int, "int", 2515107422u, 0, 3, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_RFRECV); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_SERIAL_5O1); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, NULL); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SBR_TX); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_find_key_i); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SDM120_RX); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_geti); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_find); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_MGC3130_RESET); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_SPI_CS); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SERIAL_6N1); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SYMBOL_STOP); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, NULL); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_TUYA_TX); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, &be_const_str_read24); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_except); +be_define_const_str(except, "except", 950914032u, 69, 6, NULL); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); +be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_gauge_format_cb); +be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_read24); be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_KEY1_INV_PD); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_decrypt); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); +be_define_const_str(dot_len, ".len", 850842136u, 0, 4, NULL); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_IRSEND); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_global); +be_define_const_str(global, "global", 503252654u, 0, 6, &be_const_str_lv_cont); +be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_save); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_PZEM0XX_TX); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); +be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_imin); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_OUTPUT_LO); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); +be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_PLUS); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_OneWire); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_sin); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_srand); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_BELL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str__global_addr); +be_define_const_str(_global_addr, "_global_addr", 533766721u, 0, 12, &be_const_str_lv_switch); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_set_light); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_split); +be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); +be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_opt_eq); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str__ccmd); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, NULL); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_ST7789_DC); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_pin); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_isnan); +be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, &be_const_str_tanh); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(print, "print", 372738696u, 0, 5, NULL); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_DUMMY); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_I2S_OUT_SLCT); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_WIFI); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_HRXL_RX); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); +be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); +be_define_const_str(break, "break", 3378807160u, 58, 5, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_IEM3000_RX); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_DAC); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_sinh); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str__def); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_lv_tabview); +be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_SERIAL_5N1); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_lv_linemeter); +be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_MAX31855CLK); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_GPS_TX); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_resize); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_PWM1); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_lv_calendar); +be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_for); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_lv_design_cb); +be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SYMBOL_TRASH); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); +be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_classof); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_ZIGBEE_TX); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_acos); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SAIR_RX); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SSD1331_DC); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_DIRECTORY); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_ctypes_bytes_dyn); +be_define_const_str(ctypes_bytes_dyn, "ctypes_bytes_dyn", 915205307u, 0, 16, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_WEBCAM_RESET); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_keyboard); +be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_lv_indev); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); +be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_calldepth); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_INPUT_PULLUP); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SSPI_MAX31865_CS1); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_SYMBOL_UPLOAD); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_wire_scan); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_begin); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_SDCARD_CS); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_lv_group_focus_cb); +be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_WEBCAM_DATA); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SYMBOL_BACKSPACE); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SYMBOL_SHUFFLE); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_lv_tileview); +be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, NULL); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str__global_def); +be_define_const_str(_global_def, "_global_def", 646007001u, 0, 11, &be_const_str_write); +be_define_const_str(write, "write", 3190202204u, 0, 5, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_asstring); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_elif); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_GPS_RX); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SSPI_DC); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_set_timer); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_remove_driver); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_MIEL_HVAC_RX); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_SERIAL_8N1); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, NULL); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_else); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_ARIRFRCV); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ILI9341_DC); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_public_key); +be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, NULL); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WIEGAND_D0); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MCP39F5_TX); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SERIAL_5O2); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_ZIGBEE_RST); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_IBEACON_TX); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_I2S_OUT_DATA); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_IBEACON_RX); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_TXD); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_map); +be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SERIAL_6O2); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SERIAL_8E1); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_lv_objmask); +be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_DYP_RX); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_I2C_SDA); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str__cb); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, NULL); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_signal_cb); +be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_ROT1B); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_lv_spinner); +be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_lv_cpicker); +be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_AudioGenerator); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SERIAL_6N1); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SSD1351_CS); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(nan, "nan", 797905850u, 0, 3, NULL); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_PZEM016_RX); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_PASTE); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_KEY1_TC); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); +be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_HRE_CLOCK); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_select); +be_define_const_str(select, "select", 297952813u, 0, 6, NULL); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_EC_C25519); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, NULL); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SYMBOL_EJECT); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SERIAL_7O1); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SERIAL_8N2); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SM16716_SEL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_lv_cb); +be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, &be_const_str_tomap); +be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_EPAPER42_CS); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_SHELLY_DIMMER_BOOT0); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_set_power); +be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, NULL); static const bstring* const m_string_table[] = { NULL, + (const bstring *)&be_const_str_SR04_TRIG, + (const bstring *)&be_const_str_BOILER_OT_RX, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_SOLAXX1_RX, + (const bstring *)&be_const_str_TM1638STB, NULL, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_asin, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_I2C_Driver, - NULL, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_remove, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_SPI_MOSI, - (const bstring *)&be_const_str_SYMBOL_EJECT, - (const bstring *)&be_const_str_target_search, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_SERIAL_8E1, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_var, - (const bstring *)&be_const_str_lv_tabview, - (const bstring *)&be_const_str_try, - (const bstring *)&be_const_str_EC_C25519, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_RDM6300_RX, - NULL, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_HLW_CF, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_AS608_TX, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_type, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_SYMBOL_IMAGE, - (const bstring *)&be_const_str_INTERRUPT, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_WEBCAM_PWDN, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_SSPI_MOSI, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_SYMBOL_NEW_LINE, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_SYMBOL_SAVE, - (const bstring *)&be_const_str_pin_used, - (const bstring *)&be_const_str_dot_p, - NULL, - (const bstring *)&be_const_str_WIEGAND_D0, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_on, - (const bstring *)&be_const_str_read12, - (const bstring *)&be_const_str_remove_driver, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_false, - NULL, - (const bstring *)&be_const_str_add_driver, - (const bstring *)&be_const_str_print, + (const bstring *)&be_const_str_exec_rules, + (const bstring *)&be_const_str_find, (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_import, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_ARIRFRCV, - (const bstring *)&be_const_str_set_light, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_IBEACON_RX, - (const bstring *)&be_const_str_return, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_WEBCAM_HREF, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_delay, - (const bstring *)&be_const_str__rules, - (const bstring *)&be_const_str_opt_eq, - NULL, - (const bstring *)&be_const_str_BUZZER, - NULL, - (const bstring *)&be_const_str_PULLDOWN, - (const bstring *)&be_const_str_SYMBOL_UP, - (const bstring *)&be_const_str_HRXL_RX, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_I2S_IN_DATA, - (const bstring *)&be_const_str__available, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_for, - (const bstring *)&be_const_str_SM16716_SEL, - (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_add_cmd, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_SERIAL_5E1, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_write_bit, - (const bstring *)&be_const_str_SERIAL_5N2, - (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_char, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_IRSEND, - NULL, - (const bstring *)&be_const_str_wire1, - (const bstring *)&be_const_str_BS814_DAT, - (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_SM16716_CLK, - (const bstring *)&be_const_str_I2S_OUT_SLCT, - (const bstring *)&be_const_str_SYMBOL_USB, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_CNTR1_NP, - NULL, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_SWT1, - NULL, - (const bstring *)&be_const_str_arg_size, - (const bstring *)&be_const_str_DI, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_tolower, - (const bstring *)&be_const_str_content_stop, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_SERIAL_8N1, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_SERIAL_7O2, - (const bstring *)&be_const_str_SYMBOL_EDIT, - (const bstring *)&be_const_str_SERIAL_6O2, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_gamma8, - (const bstring *)&be_const_str_dot_size, - (const bstring *)&be_const_str_lv_calendar, - (const bstring *)&be_const_str_SWT1_PD, - (const bstring *)&be_const_str_KEY1_INV_PD, - (const bstring *)&be_const_str_lv_gauge, - (const bstring *)&be_const_str_atan2, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_CSE7761_RX, NULL, NULL, - NULL, - (const bstring *)&be_const_str_SERIAL_5O2, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_ADC_TEMP, - NULL, - (const bstring *)&be_const_str_nil, - (const bstring *)&be_const_str_iter, - NULL, - (const bstring *)&be_const_str_MP3_DFR562, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_P9813_DAT, - NULL, - NULL, - (const bstring *)&be_const_str_PZEM016_RX, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_EPAPER42_CS, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str__ptr, - (const bstring *)&be_const_str_SERIAL_7E1, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_HM10_RX, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, - (const bstring *)&be_const_str_WS2812, - (const bstring *)&be_const_str_GPS_RX, - (const bstring *)&be_const_str_IBEACON_TX, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str__begin_transmission, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_WE517_RX, - (const bstring *)&be_const_str_MCP39F5_TX, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_DAC, - (const bstring *)&be_const_str_while, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_SERIAL_8E2, - (const bstring *)&be_const_str__request_from, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str_SYMBOL_BELL, - (const bstring *)&be_const_str_MHZ_TXD, - (const bstring *)&be_const_str_atan, - (const bstring *)&be_const_str_WEBCAM_VSYNC, - (const bstring *)&be_const_str_get_light, - (const bstring *)&be_const_str_acos, - (const bstring *)&be_const_str_bytes, - (const bstring *)&be_const_str_I2S_OUT_CLK, - (const bstring *)&be_const_str_HJL_CF, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_SSPI_MISO, - (const bstring *)&be_const_str_SYMBOL_EYE_CLOSE, - (const bstring *)&be_const_str_AudioFileSource, - NULL, - (const bstring *)&be_const_str_content_flush, - (const bstring *)&be_const_str_lv_tileview, - (const bstring *)&be_const_str_SYMBOL_BATTERY_1, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_OUTPUT_LO, - NULL, - (const bstring *)&be_const_str_LEDLNK_INV, (const bstring *)&be_const_str_POST, NULL, - (const bstring *)&be_const_str_SYMBOL_DUMMY, - (const bstring *)&be_const_str_ROT1B, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_loop, - (const bstring *)&be_const_str_call, - (const bstring *)&be_const_str_ceil, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_CSE7761_TX, + (const bstring *)&be_const_str_BS814_DAT, NULL, + NULL, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_SYMBOL_USB, + NULL, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_REL1, + (const bstring *)&be_const_str_SYMBOL_STOP, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_AS608_RX, + (const bstring *)&be_const_str_SYMBOL_KEYBOARD, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_TASMOTACLIENT_RST, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_I2C_Driver, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_NRF24_DC, + (const bstring *)&be_const_str_CC1101_GDO0, + (const bstring *)&be_const_str_SERIAL_5N2, + (const bstring *)&be_const_str_list, + NULL, + (const bstring *)&be_const_str_P9813_CLK, + (const bstring *)&be_const_str_IRRECV, + (const bstring *)&be_const_str_assert, + (const bstring *)&be_const_str_SERIAL_6O1, + (const bstring *)&be_const_str_SSD1331_CS, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_VL53L0X_XSHUT1, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_lv_canvas, + (const bstring *)&be_const_str_TFMINIPLUS_TX, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_ADC_CT_POWER, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_byte, + (const bstring *)&be_const_str_deg, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_SYMBOL_CALL, + (const bstring *)&be_const_str_content_flush, + (const bstring *)&be_const_str_RXD, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_rad, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_lv_chart, + (const bstring *)&be_const_str_log, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_redirect, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_ROT1B_NP, + (const bstring *)&be_const_str_dot_len, + (const bstring *)&be_const_str_INPUT_PULLDOWN, + (const bstring *)&be_const_str_format, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_SR04_ECHO, + NULL, + (const bstring *)&be_const_str__ptr, + (const bstring *)&be_const_str_ADE7953_IRQ, + (const bstring *)&be_const_str_KEY1_INV_NP, + NULL, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_SYMBOL_PLAY, + (const bstring *)&be_const_str_lv_gauge, + (const bstring *)&be_const_str_SSD1351_DC, + (const bstring *)&be_const_str_type, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_SERIAL_8O1, + (const bstring *)&be_const_str_find_op, + NULL, + (const bstring *)&be_const_str_TUYA_RX, + (const bstring *)&be_const_str_SPI_CS, + NULL, + (const bstring *)&be_const_str_real, + (const bstring *)&be_const_str_LEDLNK, + (const bstring *)&be_const_str_SYMBOL_OK, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_MAX7219DIN, + (const bstring *)&be_const_str_get_option, + (const bstring *)&be_const_str_i2c_enabled, + (const bstring *)&be_const_str_SYMBOL_WARNING, + (const bstring *)&be_const_str_dot_size, + (const bstring *)&be_const_str_getbits, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + NULL, + (const bstring *)&be_const_str___upper__, + (const bstring *)&be_const_str_log10, + (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_seg7_font, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_HM10_TX, + (const bstring *)&be_const_str_print, + NULL, + (const bstring *)&be_const_str_PMS5003_RX, + (const bstring *)&be_const_str_SYMBOL_RIGHT, + (const bstring *)&be_const_str_NRF24_CS, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_SSPI_SCLK, + (const bstring *)&be_const_str_rand, + (const bstring *)&be_const_str_I2S_IN_CLK, + (const bstring *)&be_const_str_SYMBOL_DOWN, + NULL, + NULL, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_available, + (const bstring *)&be_const_str_break, + NULL, + NULL, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_yield, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_Wire, + (const bstring *)&be_const_str_SYMBOL_AUDIO, + (const bstring *)&be_const_str__end_transmission, + NULL, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_ILI9488_CS, + (const bstring *)&be_const_str_LEDLNK_INV, + (const bstring *)&be_const_str_sqrt, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_TM1637DIO, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, + (const bstring *)&be_const_str_true, + (const bstring *)&be_const_str_MIEL_HVAC_TX, + (const bstring *)&be_const_str_lv_line, + (const bstring *)&be_const_str_ADC_JOY, + (const bstring *)&be_const_str_SERIAL_5O1, + (const bstring *)&be_const_str_RFRECV, + (const bstring *)&be_const_str_setmember, + (const bstring *)&be_const_str_DI, + NULL, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str__read, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_get_string, + (const bstring *)&be_const_str_digital_write, + (const bstring *)&be_const_str_str, + (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, + (const bstring *)&be_const_str_SERIAL_8E2, + (const bstring *)&be_const_str_SYMBOL_SD_CARD, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_SYMBOL_LEFT, + (const bstring *)&be_const_str_SBR_TX, + (const bstring *)&be_const_str_Tasmota, + (const bstring *)&be_const_str_SYMBOL_BATTERY_1, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_SERIAL_6E2, + (const bstring *)&be_const_str_event, + (const bstring *)&be_const_str_shared_key, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_SPI_MISO, + (const bstring *)&be_const_str_has_arg, + (const bstring *)&be_const_str_tag, + NULL, + (const bstring *)&be_const_str_CC1101_GDO2, + NULL, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_find_key_i, + NULL, + (const bstring *)&be_const_str_SI7021, + (const bstring *)&be_const_str_SYMBOL_PAUSE, + (const bstring *)&be_const_str_classname, + (const bstring *)&be_const_str_loop, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_resp_cmnd_done, + (const bstring *)&be_const_str_SERIAL_5E1, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_resp_cmnd, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_tostring, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str_eth, + (const bstring *)&be_const_str_SYMBOL_SETTINGS, + (const bstring *)&be_const_str_LED1_INV, + (const bstring *)&be_const_str_reverse_gamma10, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_TUYA_TX, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_MCP39F5_RST, + (const bstring *)&be_const_str_LED1, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_pin_used, + (const bstring *)&be_const_str__buffer, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_DEEPSLEEP, + (const bstring *)&be_const_str_TCP_RX, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_SDM630_RX, + NULL, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_SYMBOL_FILE, + (const bstring *)&be_const_str_SYMBOL_MUTE, + (const bstring *)&be_const_str_SM2135_DAT, + (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, + (const bstring *)&be_const_str_lv_checkbox, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_AS608_TX, + NULL, + (const bstring *)&be_const_str_setbits, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_HALLEFFECT, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_exec_cmd, + (const bstring *)&be_const_str_lv_msgbox, + (const bstring *)&be_const_str_ADC_LIGHT, + (const bstring *)&be_const_str_imax, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_AS3935, + (const bstring *)&be_const_str_digital_read, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_SYMBOL_NEW_LINE, + (const bstring *)&be_const_str_SYMBOL_REFRESH, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_SYMBOL_BATTERY_2, + (const bstring *)&be_const_str_OPTION_A, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_RISING, + (const bstring *)&be_const_str_WEBCAM_SIOD, + (const bstring *)&be_const_str_SERIAL_7E1, + NULL, + (const bstring *)&be_const_str_PZEM004_RX, + NULL, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_remove_timer, + (const bstring *)&be_const_str_SDS0X1_RX, + (const bstring *)&be_const_str_SDS0X1_TX, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_content_send, + (const bstring *)&be_const_str_MAX31855CS, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_SERIAL_5E2, + (const bstring *)&be_const_str_lv_btnmatrix, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_SWT1_PD, + (const bstring *)&be_const_str_response_append, + (const bstring *)&be_const_str_opt_connect, + (const bstring *)&be_const_str_DSB, + (const bstring *)&be_const_str_nan, + (const bstring *)&be_const_str_PULLDOWN, + (const bstring *)&be_const_str_HRE_DATA, + NULL, + (const bstring *)&be_const_str_WE517_RX, + (const bstring *)&be_const_str_TASMOTACLIENT_TXD, + (const bstring *)&be_const_str_detect, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_AudioFileSourceFS, + (const bstring *)&be_const_str_SYMBOL_UP, + NULL, + (const bstring *)&be_const_str_TELEINFO_ENABLE, + (const bstring *)&be_const_str_SBR_RX, + NULL, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_HX711_DAT, + (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_pow, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_cb_dispatch, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_WEBCAM_VSYNC, + NULL, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_PN532_TXD, + NULL, + (const bstring *)&be_const_str_MAX7219CS, + (const bstring *)&be_const_str__cmd, + (const bstring *)&be_const_str_SDM72_TX, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_SYMBOL_BULLET, + (const bstring *)&be_const_str_cmd, (const bstring *)&be_const_str_AudioOutputI2S, NULL, - (const bstring *)&be_const_str_RC522_CS, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_KEY1_INV_NP, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_GPS_TX, - (const bstring *)&be_const_str_SOLAXX1_TX, - (const bstring *)&be_const_str_SYMBOL_DOWN, - (const bstring *)&be_const_str_DCKI, - (const bstring *)&be_const_str_GET, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_MAX31855CLK, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_MIEL_HVAC_RX, - (const bstring *)&be_const_str_WEBCAM_DATA, - (const bstring *)&be_const_str_ADC_CT_POWER, - NULL, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_insert, - (const bstring *)&be_const_str_NEOPOOL_TX, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str___lower__, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_lv_indev, - (const bstring *)&be_const_str_REL1_INV, - NULL, - (const bstring *)&be_const_str_SSD1351_CS, - NULL, - (const bstring *)&be_const_str_INPUT_PULLUP, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_opt_call, - (const bstring *)&be_const_str_WEBCAM_HSD, - NULL, - (const bstring *)&be_const_str_ZEROCROSS, - (const bstring *)&be_const_str_state, - (const bstring *)&be_const_str_SENSOR_END, - NULL, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_sqrt, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_ROT1A_NP, - NULL, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_TASMOTACLIENT_RXD, - NULL, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_CC1101_GDO2, - (const bstring *)&be_const_str_PZEM004_RX, - (const bstring *)&be_const_str_PROJECTOR_CTRL_TX, - (const bstring *)&be_const_str_dot_len, - (const bstring *)&be_const_str_NEOPOOL_RX, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_end, (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_SYMBOL_COPY, - (const bstring *)&be_const_str_cosh, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_HX711_SCK, - (const bstring *)&be_const_str_TELEINFO_RX, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_HPMA_RX, - NULL, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_OUTPUT, (const bstring *)&be_const_str_dac_voltage, + (const bstring *)&be_const_str_HPMA_TX, + (const bstring *)&be_const_str_MD5, NULL, - (const bstring *)&be_const_str_IEM3000_RX, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_lv_cpicker, - (const bstring *)&be_const_str_AudioGenerator, - (const bstring *)&be_const_str_lv_slider, - NULL, - (const bstring *)&be_const_str_SDM630_TX, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_SERIAL_7O1, - (const bstring *)&be_const_str_SERIAL_6O1, - (const bstring *)&be_const_str_SSPI_MAX31865_CS1, - NULL, - (const bstring *)&be_const_str_assert, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_WEBCAM_PCLK, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_TM1638DIO, - (const bstring *)&be_const_str_I2C_SDA, - (const bstring *)&be_const_str_attrdump, - (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_int, - (const bstring *)&be_const_str_lv_line, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_SERIAL_8O2, - (const bstring *)&be_const_str_TM1637CLK, - (const bstring *)&be_const_str_SYMBOL_PLAY, - (const bstring *)&be_const_str_MAX7219CLK, - (const bstring *)&be_const_str_floor, - (const bstring *)&be_const_str_SYMBOL_CUT, NULL, + (const bstring *)&be_const_str_target_search, (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_abs, - (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_opt_call, NULL, - (const bstring *)&be_const_str_WE517_TX, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_rtc, - (const bstring *)&be_const_str_SERIAL_7E2, - (const bstring *)&be_const_str_HRE_CLOCK, - NULL, - (const bstring *)&be_const_str_SM2135_CLK + (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_SYMBOL_BATTERY_3, + NULL }; static const struct bconststrtab m_const_string_table = { - .size = 339, - .count = 679, + .size = 341, + .count = 683, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_dyn.h b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_dyn.h new file mode 100644 index 000000000..101f9d66a --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_ctypes_dyn.h @@ -0,0 +1,18 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_ctypes_dyn_map) { + { be_const_key(_def, -1), be_const_var(0) }, + { be_const_key(init, 0), be_const_func(be_ctypes_dyn_init) }, +}; + +static be_define_const_map( + be_class_ctypes_dyn_map, + 2 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_ctypes_dyn, + 1, + (bclass *)&be_class_ctypes, + ctypes_bytes_dyn +); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h index b33546c18..71c9ec7aa 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_tasmota.h @@ -1,80 +1,84 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_tasmota_map) { - { be_const_key(remove_rule, -1), be_const_closure(remove_rule_closure) }, - { be_const_key(add_driver, -1), be_const_closure(add_driver_closure) }, - { be_const_key(web_send, -1), be_const_func(l_webSend) }, - { be_const_key(response_append, 1), be_const_func(l_respAppend) }, - { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, - { be_const_key(i2c_enabled, 55), be_const_func(l_i2cenabled) }, - { be_const_key(wifi, 57), be_const_func(l_wifi) }, - { be_const_key(add_rule, -1), be_const_closure(add_rule_closure) }, - { be_const_key(save, 21), be_const_func(l_save) }, - { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, - { be_const_key(add_cmd, 19), be_const_closure(add_cmd_closure) }, - { be_const_key(wire1, -1), be_const_var(0) }, - { be_const_key(_rules, 16), be_const_var(1) }, - { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, - { be_const_key(remove_driver, -1), be_const_closure(remove_driver_closure) }, - { be_const_key(_cb, -1), be_const_var(2) }, - { be_const_key(log, -1), be_const_func(l_logInfo) }, - { be_const_key(get_power, 12), be_const_func(l_getpower) }, - { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, - { be_const_key(event, 47), be_const_closure(event_closure) }, - { be_const_key(publish_result, -1), be_const_func(l_publish_result) }, - { be_const_key(run_deferred, 6), be_const_closure(run_deferred_closure) }, - { be_const_key(find_key_i, 38), be_const_closure(find_key_i_closure) }, - { be_const_key(millis, 33), be_const_func(l_millis) }, - { be_const_key(delay, -1), be_const_func(l_delay) }, - { be_const_key(_drivers, -1), be_const_var(3) }, - { be_const_key(resp_cmnd_failed, -1), be_const_func(l_respCmndFailed) }, - { be_const_key(get_switch, -1), be_const_func(l_getswitch) }, - { be_const_key(web_send_decimal, 53), be_const_func(l_webSendDecimal) }, - { be_const_key(set_power, -1), be_const_func(l_setpower) }, - { be_const_key(wire2, -1), be_const_var(4) }, - { be_const_key(gen_cb, 10), be_const_closure(gen_cb_closure) }, - { be_const_key(find_op, -1), be_const_closure(find_op_closure) }, - { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, - { be_const_key(_get_cb, -1), be_const_func(l_get_cb) }, - { be_const_key(strftime, 51), be_const_func(l_strftime) }, - { be_const_key(exec_rules, 27), be_const_closure(exec_rules_closure) }, - { be_const_key(_ccmd, -1), be_const_var(5) }, - { be_const_key(resp_cmnd_str, 18), be_const_func(l_respCmndStr) }, - { be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) }, - { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, - { be_const_key(load, -1), be_const_closure(load_closure) }, - { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, - { be_const_key(cmd, -1), be_const_closure(cmd_closure) }, - { be_const_key(get_light, 50), be_const_closure(get_light_closure) }, - { be_const_key(memory, -1), be_const_func(l_memory) }, - { be_const_key(yield, 45), be_const_func(l_yield) }, - { be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) }, - { be_const_key(rtc, -1), be_const_func(l_rtc) }, - { be_const_key(get_option, -1), be_const_func(l_getoption) }, - { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, { be_const_key(cb_dispatch, -1), be_const_closure(cb_dispatch_closure) }, - { be_const_key(_timers, -1), be_const_var(6) }, - { be_const_key(time_str, -1), be_const_closure(time_str_closure) }, - { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, - { be_const_key(set_timer, 58), be_const_closure(set_timer_closure) }, - { be_const_key(set_light, 14), be_const_closure(set_light_closure) }, - { be_const_key(publish, 2), be_const_func(l_publish) }, - { be_const_key(time_reached, -1), be_const_func(l_timereached) }, - { be_const_key(time_dump, 9), be_const_func(l_time_dump) }, - { be_const_key(eth, -1), be_const_func(l_eth) }, - { be_const_key(try_rule, 4), be_const_closure(try_rule_closure) }, + { be_const_key(get_option, -1), be_const_func(l_getoption) }, + { be_const_key(publish_result, 63), be_const_func(l_publish_result) }, + { be_const_key(try_rule, 18), be_const_closure(try_rule_closure) }, + { be_const_key(eth, 26), be_const_func(l_eth) }, + { be_const_key(resp_cmnd, -1), be_const_func(l_respCmnd) }, { be_const_key(_cmd, -1), be_const_func(l_cmd) }, + { be_const_key(exec_cmd, -1), be_const_closure(exec_cmd_closure) }, + { be_const_key(add_cmd, -1), be_const_closure(add_cmd_closure) }, + { be_const_key(resolvecmnd, -1), be_const_func(l_resolveCmnd) }, + { be_const_key(find_op, -1), be_const_closure(find_op_closure) }, + { be_const_key(add_driver, 40), be_const_closure(add_driver_closure) }, + { be_const_key(remove_rule, 4), be_const_closure(remove_rule_closure) }, + { be_const_key(load, -1), be_const_closure(load_closure) }, + { be_const_key(response_append, -1), be_const_func(l_respAppend) }, + { be_const_key(wire1, 20), be_const_var(0) }, + { be_const_key(set_light, -1), be_const_closure(set_light_closure) }, + { be_const_key(time_reached, 3), be_const_func(l_timereached) }, + { be_const_key(log, -1), be_const_func(l_logInfo) }, { be_const_key(gc, -1), be_const_closure(gc_closure) }, + { be_const_key(init, 8), be_const_closure(init_closure) }, + { be_const_key(get_free_heap, -1), be_const_func(l_getFreeHeap) }, + { be_const_key(global, 36), be_const_var(1) }, + { be_const_key(event, -1), be_const_closure(event_closure) }, + { be_const_key(time_str, 45), be_const_closure(time_str_closure) }, + { be_const_key(set_power, -1), be_const_func(l_setpower) }, + { be_const_key(rtc, 42), be_const_func(l_rtc) }, + { be_const_key(millis, -1), be_const_func(l_millis) }, + { be_const_key(save, -1), be_const_func(l_save) }, + { be_const_key(resp_cmnd_error, -1), be_const_func(l_respCmndError) }, + { be_const_key(resp_cmnd_str, -1), be_const_func(l_respCmndStr) }, + { be_const_key(strftime, -1), be_const_func(l_strftime) }, + { be_const_key(wifi, -1), be_const_func(l_wifi) }, + { be_const_key(_drivers, -1), be_const_var(2) }, + { be_const_key(chars_in_string, -1), be_const_closure(chars_in_string_closure) }, + { be_const_key(_cb, 0), be_const_var(3) }, + { be_const_key(resp_cmnd_failed, 59), be_const_func(l_respCmndFailed) }, + { be_const_key(get_power, -1), be_const_func(l_getpower) }, + { be_const_key(get_light, 2), be_const_closure(get_light_closure) }, + { be_const_key(gen_cb, -1), be_const_closure(gen_cb_closure) }, + { be_const_key(remove_timer, -1), be_const_closure(remove_timer_closure) }, + { be_const_key(_global_addr, -1), be_const_comptr(&TasmotaGlobal) }, + { be_const_key(web_send, 54), be_const_func(l_webSend) }, + { be_const_key(time_dump, -1), be_const_func(l_time_dump) }, + { be_const_key(get_switch, 38), be_const_func(l_getswitch) }, + { be_const_key(exec_rules, -1), be_const_closure(exec_rules_closure) }, + { be_const_key(find_key_i, 5), be_const_closure(find_key_i_closure) }, + { be_const_key(yield, -1), be_const_func(l_yield) }, + { be_const_key(web_send_decimal, 34), be_const_func(l_webSendDecimal) }, + { be_const_key(i2c_enabled, 13), be_const_func(l_i2cenabled) }, + { be_const_key(_get_cb, -1), be_const_func(l_get_cb) }, + { be_const_key(cmd, 14), be_const_closure(cmd_closure) }, + { be_const_key(publish, 10), be_const_func(l_publish) }, + { be_const_key(_ccmd, -1), be_const_var(4) }, + { be_const_key(_timers, -1), be_const_var(5) }, + { be_const_key(resp_cmnd_done, -1), be_const_func(l_respCmndDone) }, + { be_const_key(wire_scan, -1), be_const_closure(wire_scan_closure) }, + { be_const_key(_rules, -1), be_const_var(6) }, + { be_const_key(remove_cmd, -1), be_const_closure(remove_cmd_closure) }, + { be_const_key(scale_uint, -1), be_const_func(l_scaleuint) }, + { be_const_key(run_deferred, -1), be_const_closure(run_deferred_closure) }, + { be_const_key(set_timer, -1), be_const_closure(set_timer_closure) }, + { be_const_key(wire2, 47), be_const_var(7) }, + { be_const_key(remove_driver, -1), be_const_closure(remove_driver_closure) }, + { be_const_key(delay, -1), be_const_func(l_delay) }, + { be_const_key(_global_def, -1), be_const_comptr(&be_tasmota_global_struct) }, + { be_const_key(memory, -1), be_const_func(l_memory) }, + { be_const_key(add_rule, 29), be_const_closure(add_rule_closure) }, }; static be_define_const_map( be_class_tasmota_map, - 64 + 68 ); BE_EXPORT_VARIABLE be_define_const_class( be_class_tasmota, - 7, + 8, NULL, Tasmota ); diff --git a/lib/libesp32/Berry/include/be_ctypes.h b/lib/libesp32/Berry/include/be_ctypes.h new file mode 100644 index 000000000..4faa3e376 --- /dev/null +++ b/lib/libesp32/Berry/include/be_ctypes.h @@ -0,0 +1,83 @@ +/******************************************************************** + * Tasmota ctypes mapping headers + *******************************************************************/ +#ifndef __BE_CONSTOBJ_H__ +#define __BE_CONSTOBJ_H__ + +#include "be_constobj.h" + +enum { + ctypes_i32 = 14, + ctypes_i16 = 12, + ctypes_i8 = 11, + ctypes_u32 = 4, + ctypes_u16 = 2, + ctypes_u8 = 1, + + // big endian + ctypes_be_i32 = -14, + ctypes_be_i16 = -12, + ctypes_be_i8 = -11, + ctypes_be_u32 = -4, + ctypes_be_u16 = -2, + ctypes_be_u8 = -1, + + // floating point + ctypes_float = 5, + ctypes_double = 10, + + // pointer + ctypes_ptr32 = 9, + ctypes_ptr64 = -9, + + ctypes_bf = 0, //bif-field +}; + +typedef struct be_ctypes_structure_item_t { + const char * name; + uint16_t offset_bytes; + uint8_t offset_bits : 3; + uint8_t len_bits : 5; + int8_t type : 5; + uint8_t mapping : 3; +} be_ctypes_structure_item_t; + +typedef struct be_ctypes_structure_t { + uint16_t size_bytes; /* size in bytes */ + uint16_t size_elt; /* number of elements */ + const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ + const be_ctypes_structure_item_t * items; +} be_ctypes_structure_t; + +typedef struct be_ctypes_class_t { + const char * name; + const be_ctypes_structure_t * definitions; +} be_ctypes_class_t; + +typedef struct be_ctypes_classes_t { + uint16_t size; + const char **instance_mapping; /* array of instance class names for automatic instanciation of class */ + const be_ctypes_class_t * classes; +} be_ctypes_classes_t; + +BE_EXPORT_VARIABLE const bclass be_class_ctypes; + +static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) { + be_pushntvclass(vm, ctypes_class); + be_setglobal(vm, str(ctypes_class->name)); + be_pop(vm, 1); +} + +// Define a sub-class of ctypes with only one member which points to the ctypes defintion +#define be_define_ctypes_class(_c_name, _def, _super, _name) \ + be_local_class(_c_name, \ + 0, \ + _super, \ + be_nested_map(1, \ + ( (struct bmapnode*) &(const bmapnode[]) { \ + { be_nested_key("_def", 1985022181, 4, -1), be_const_comptr(_def) },\ + })), \ + (be_nested_const_str(_name, 0, sizeof(_name)-1)) \ + ) + +#endif // __BE_CONSTOBJ_H__ diff --git a/lib/libesp32/Berry/src/be_constobj.h b/lib/libesp32/Berry/src/be_constobj.h index d94dd2729..49f9c97b6 100644 --- a/lib/libesp32/Berry/src/be_constobj.h +++ b/lib/libesp32/Berry/src/be_constobj.h @@ -73,7 +73,7 @@ extern "C" { } #define be_const_comptr(_val) { \ - .v.p = (void*)(_val), \ + .v.c = (const void*)(_val), \ .type = BE_COMPTR \ } diff --git a/tasmota/berry/modules/ctypes.be b/tasmota/berry/modules/ctypes.be index 334edc188..ea3ea58df 100644 --- a/tasmota/berry/modules/ctypes.be +++ b/tasmota/berry/modules/ctypes.be @@ -44,6 +44,10 @@ ctypes.be_u8 = -1 ctypes.float = 5 ctypes.double = 10 +# pointer +ctypes.ptr32 = 9 +ctypes.ptr64 = -9 + ctypes.bf_x = 0 # generic bitfield # bitfields (always unsigned) ctypes.bf_0 = 100 # serves as base @@ -167,77 +171,8 @@ ctypes.print_types = def () print(" * Generated code, don't edit") print(" *******************************************************************/") print() - print("enum {") - print(" ctypes_i32 = 14,") - print(" ctypes_i16 = 12,") - print(" ctypes_i8 = 11,") - print(" ctypes_u32 = 4,") - print(" ctypes_u16 = 2,") - print(" ctypes_u8 = 1,") - print("") - print(" // big endian") - print(" ctypes_be_i32 = -14,") - print(" ctypes_be_i16 = -12,") - print(" ctypes_be_i8 = -11,") - print(" ctypes_be_u32 = -4,") - print(" ctypes_be_u16 = -2,") - print(" ctypes_be_u8 = -1,") - print() - print(" ctypes_bf = 0, //bif-field") - print("};") - print() - print("typedef struct be_ctypes_structure_item_t {") - print(" const char * name;") - print(" uint16_t offset_bytes;") - print(" uint8_t offset_bits : 3;") - print(" uint8_t len_bits : 5;") - print(" int8_t type : 5;") - print(" uint8_t mapping : 3;") - print("} be_ctypes_structure_item_t;") - print() - print("typedef struct be_ctypes_structure_t {") - print(" uint16_t size_bytes; /* size in bytes */") - print(" uint16_t size_elt; /* number of elements */") - print(" const char **instance_mapping; /* array of instance class names for automatic instanciation of class */") - print(" const be_ctypes_structure_item_t * items;") - print("} be_ctypes_structure_t;") - print() - print("typedef struct be_ctypes_class_t {") - print(" const char * name;") - print(" const be_ctypes_structure_t * definitions;") - print("} be_ctypes_class_t;") - print("") - print("typedef struct be_ctypes_classes_t {") - print(" uint16_t size;") - print(" const char **instance_mapping; /* array of instance class names for automatic instanciation of class */") - print(" const be_ctypes_class_t * classes;") - print("} be_ctypes_classes_t;") - print() - print("BE_EXPORT_VARIABLE extern const bclass be_class_ctypes;") - print() - print("static void ctypes_register_class(bvm *vm, const bclass * ctypes_class, const be_ctypes_structure_t * definitions) {") - print(" be_pushntvclass(vm, ctypes_class);") - print(" be_setglobal(vm, str(ctypes_class->name));") - print(" be_pop(vm, 1);") - print("}") - print() print("static const char * be_ctypes_instance_mappings[]; /* forward definition */") print() - - print("// Define a sub-class of ctypes with only one member which points to the ctypes defintion") - print("#define be_define_ctypes_class(_c_name, _def, _super, _name) \\") - print(" be_local_class(_c_name, \\") - print(" 0, \\") - print(" _super, \\") - print(" be_nested_map(1, \\") - print(" ( (struct bmapnode*) &(const bmapnode[]) { \\") - print(" { be_nested_key(\"_def\", 1985022181, 4, -1), be_const_comptr(_def) },\\") - print(" })), \\") - print(" (be_nested_const_str(_name, 0, sizeof(_name)-1)) \\") - print(" )") - print() - print("/********************************************************************/") - print() end global_classes = [] # track the list of all classes and @@ -370,6 +305,9 @@ class structure if type_obj > ctypes.bf_0 # bit field self.get_bitfield_closure(name, type_obj - ctypes.bf_0, mapping_idx) + elif (type_obj == ctypes.ptr32) || (type_obj == ctypes.ptr64) + # pointer + self.get_ptr_closure(name, type_obj, mapping_idx) elif (type_obj == ctypes.float) || (type_obj == ctypes.double) # multi-bytes self.get_float_closure(name, type_obj, mapping_idx) @@ -445,8 +383,30 @@ class structure self.cur_offset += size_in_bytes # next offset end + def get_ptr_closure(name, type, instance_mapping) # can be 1/2/4 + #- actual size -# + import introspect + var size_in_bytes = (type == ctypes.ptr32) ? 4 : 8 + + self.align(size_in_bytes) # force alignment + var offset = self.cur_offset # prepare variable for capture in closure + + self.mapping[name] = [offset, 0, 0, type, instance_mapping] + + #- add closures -# + # TODO no closure yet, anyways need to rethink closures, they are too heavy + # if signed + # self.get_closures[name] = def (b, p) return b.geti(offset + p, size_in_bytes_le_be) end + # else + # self.get_closures[name] = def (b, p) return b.get(offset + p, size_in_bytes_le_be) end + # end + # self.set_closures[name] = def (b, p, v) return b.set(offset+ p, v, size_in_bytes_le_be) end + + self.cur_offset += size_in_bytes # next offset + end + def get_float_closure(name, type, instance_mapping) # can be 1/2/4 - #- abs size -# + #- actual size -# var size_in_bytes = (type == ctypes.float) ? 4 : 8 self.align(size_in_bytes) # force alignment diff --git a/tasmota/tasmota.ino b/tasmota/tasmota.ino index 980f0b7bf..7a89ea689 100644 --- a/tasmota/tasmota.ino +++ b/tasmota/tasmota.ino @@ -86,7 +86,7 @@ const uint32_t VERSION_MARKER[] PROGMEM = { 0x5AA55AA5, 0xFFFFFFFF, 0xA55AA55A } WiFiUDP PortUdp; // UDP Syslog and Alexa -struct { +struct TasmotaGlobal_t { uint32_t global_update; // Timestamp of last global temperature and humidity update uint32_t baudrate; // Current Serial baudrate uint32_t pulse_timer[MAX_PULSETIMERS]; // Power off timer diff --git a/tasmota/xdrv_52_3_berry_tasmota_global.ino b/tasmota/xdrv_52_3_berry_tasmota_global.ino new file mode 100644 index 000000000..33ba0bf32 --- /dev/null +++ b/tasmota/xdrv_52_3_berry_tasmota_global.ino @@ -0,0 +1,45 @@ +/* + xdrv_52_3_berry_tasmota_global.ino - Berry scripting language, mapping to TasmotaGlobal + + Copyright (C) 2021 Stephan Hadinger, Berry language by Guan Wenliang https://github.com/Skiars/berry + + 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 . +*/ +/******************************************************************** + * Tasmota LVGL ctypes mapping + *******************************************************************/ + +#ifdef USE_BERRY + +#include +#include "be_ctypes.h" + +/******************************************************************** + * Generated code, don't edit + *******************************************************************/ + +extern "C" { + + extern const be_ctypes_structure_t be_tasmota_global_struct = { + sizeof(TasmotaGlobal), /* size in bytes */ + 2, /* number of elements */ + nullptr, + (const be_ctypes_structure_item_t[2]) { + { "energy_driver", offsetof(TasmotaGlobal_t, energy_driver), 0, 0, ctypes_u8, 0 }, + { "uptime", offsetof(TasmotaGlobal_t, uptime), 0, 0, ctypes_u32, 0 }, + }}; + +} + +#endif // USE_BERRY \ No newline at end of file From a45c2ca66b60490275cd5d62f57848bfacc8f3b3 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 1 Oct 2021 16:19:23 +0200 Subject: [PATCH 266/317] Fix unwanted pre-init functionality toggling non-display relays. --- tasmota/xdrv_13_display.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/xdrv_13_display.ino b/tasmota/xdrv_13_display.ino index b55ab7359..123d40276 100755 --- a/tasmota/xdrv_13_display.ino +++ b/tasmota/xdrv_13_display.ino @@ -1805,7 +1805,7 @@ void DisplayInitDriver(void) // AddLog(LOG_LEVEL_DEBUG, PSTR(D_LOG_DEBUG "Display model %d"), Settings->display_model); if (Settings->display_model) { - ApplyDisplayDimmer(); +// ApplyDisplayDimmer(); // Not allowed here. Way too early in initi sequence. IE power state has not even been set at this point in time #ifdef USE_MULTI_DISPLAY Set_display(0); From 789c3acf388491186df7cd9bc0a54c09835539a6 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 1 Oct 2021 17:15:28 +0200 Subject: [PATCH 267/317] Chk if this fixes memory leak (#13251) --- tasmota/tasmota_configurations_ESP32.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasmota/tasmota_configurations_ESP32.h b/tasmota/tasmota_configurations_ESP32.h index e8266e7e2..880a20085 100644 --- a/tasmota/tasmota_configurations_ESP32.h +++ b/tasmota/tasmota_configurations_ESP32.h @@ -172,7 +172,7 @@ #define USE_ADC #undef USE_BERRY // Disable Berry scripting language #define USE_BLE_ESP32 // Enable new BLE driver -#define USE_EQ3_ESP32 +//#define USE_EQ3_ESP32 #define USE_MI_ESP32 // (ESP32 only) Add support for ESP32 as a BLE-bridge (+9k2 mem, +292k flash) #endif // FIRMWARE_BLUETOOTH From 6783f91566b1ce97b2a538e5e93a3a9ca98ef88e Mon Sep 17 00:00:00 2001 From: Barbudor Date: Fri, 1 Oct 2021 17:57:02 +0000 Subject: [PATCH 268/317] prepend OPTH_ to conflicting symbols --- lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.cpp | 110 +++++++++--------- lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.h | 46 ++++---- tasmota/xsns_69_opentherm.ino | 10 +- tasmota/xsns_69_opentherm_protocol.ino | 14 +-- 4 files changed, 90 insertions(+), 90 deletions(-) diff --git a/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.cpp b/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.cpp index a08608649..24c3590db 100644 --- a/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.cpp +++ b/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.cpp @@ -6,12 +6,12 @@ Copyright 2018, Ihor Melnyk #include "OpenTherm.h" OpenTherm::OpenTherm(int inPin, int outPin, bool isSlave): - status(OpenThermStatus::NOT_INITIALIZED), + status(OpenThermStatus::OPTH_NOT_INITIALIZED), inPin(inPin), outPin(outPin), isSlave(isSlave), response(0), - responseStatus(OpenThermResponseStatus::NONE), + responseStatus(OpenThermResponseStatus::OPTH_NONE), responseTimestamp(0), handleInterruptCallback(NULL), processResponseCallback(NULL) @@ -27,7 +27,7 @@ void OpenTherm::begin(void(*handleInterruptCallback)(void), void(*processRespons attachInterrupt(digitalPinToInterrupt(inPin), handleInterruptCallback, CHANGE); } activateBoiler(); - status = OpenThermStatus::READY; + status = OpenThermStatus::OPTH_READY; this->processResponseCallback = processResponseCallback; } @@ -38,7 +38,7 @@ void OpenTherm::begin(void(*handleInterruptCallback)(void)) bool ICACHE_RAM_ATTR OpenTherm::isReady() { - return status == OpenThermStatus::READY; + return status == OpenThermStatus::OPTH_READY; } int ICACHE_RAM_ATTR OpenTherm::readState() { @@ -75,9 +75,9 @@ bool OpenTherm::sendRequestAync(unsigned long request) if (!ready) return false; - status = OpenThermStatus::REQUEST_SENDING; + status = OpenThermStatus::OPTH_REQUEST_SENDING; response = 0; - responseStatus = OpenThermResponseStatus::NONE; + responseStatus = OpenThermResponseStatus::OPTH_NONE; sendBit(HIGH); //start bit for (int i = 31; i >= 0; i--) { @@ -86,7 +86,7 @@ bool OpenTherm::sendRequestAync(unsigned long request) sendBit(HIGH); //stop bit setIdleState(); - status = OpenThermStatus::RESPONSE_WAITING; + status = OpenThermStatus::OPTH_RESPONSE_WAITING; responseTimestamp = micros(); return true; } @@ -103,9 +103,9 @@ unsigned long OpenTherm::sendRequest(unsigned long request) bool OpenTherm::sendResponse(unsigned long request) { - status = OpenThermStatus::REQUEST_SENDING; + status = OpenThermStatus::OPTH_REQUEST_SENDING; response = 0; - responseStatus = OpenThermResponseStatus::NONE; + responseStatus = OpenThermResponseStatus::OPTH_NONE; sendBit(HIGH); //start bit for (int i = 31; i >= 0; i--) { @@ -113,7 +113,7 @@ bool OpenTherm::sendResponse(unsigned long request) } sendBit(HIGH); //stop bit setIdleState(); - status = OpenThermStatus::READY; + status = OpenThermStatus::OPTH_READY; return true; } @@ -127,7 +127,7 @@ void ICACHE_RAM_ATTR OpenTherm::handleInterrupt() if (isReady()) { if (isSlave && readState() == HIGH) { - status = OpenThermStatus::RESPONSE_WAITING; + status = OpenThermStatus::OPTH_RESPONSE_WAITING; } else { return; @@ -135,28 +135,28 @@ void ICACHE_RAM_ATTR OpenTherm::handleInterrupt() } unsigned long newTs = micros(); - if (status == OpenThermStatus::RESPONSE_WAITING) { + if (status == OpenThermStatus::OPTH_RESPONSE_WAITING) { if (readState() == HIGH) { - status = OpenThermStatus::RESPONSE_START_BIT; + status = OpenThermStatus::OPTH_RESPONSE_START_BIT; responseTimestamp = newTs; } else { - status = OpenThermStatus::RESPONSE_INVALID; + status = OpenThermStatus::OPTH_RESPONSE_INVALID; responseTimestamp = newTs; } } - else if (status == OpenThermStatus::RESPONSE_START_BIT) { + else if (status == OpenThermStatus::OPTH_RESPONSE_START_BIT) { if ((newTs - responseTimestamp < 750) && readState() == LOW) { - status = OpenThermStatus::RESPONSE_RECEIVING; + status = OpenThermStatus::OPTH_RESPONSE_RECEIVING; responseTimestamp = newTs; responseBitIndex = 0; } else { - status = OpenThermStatus::RESPONSE_INVALID; + status = OpenThermStatus::OPTH_RESPONSE_INVALID; responseTimestamp = newTs; } } - else if (status == OpenThermStatus::RESPONSE_RECEIVING) { + else if (status == OpenThermStatus::OPTH_RESPONSE_RECEIVING) { if ((newTs - responseTimestamp) > 750) { if (responseBitIndex < 32) { response = (response << 1) | !readState(); @@ -164,7 +164,7 @@ void ICACHE_RAM_ATTR OpenTherm::handleInterrupt() responseBitIndex++; } else { //stop bit - status = OpenThermStatus::RESPONSE_READY; + status = OpenThermStatus::OPTH_RESPONSE_READY; responseTimestamp = newTs; } } @@ -178,32 +178,32 @@ void OpenTherm::process() unsigned long ts = responseTimestamp; interrupts(); - if (st == OpenThermStatus::READY) return; + if (st == OpenThermStatus::OPTH_READY) return; unsigned long newTs = micros(); - if (st != OpenThermStatus::NOT_INITIALIZED && (newTs - ts) > 1000000) { - status = OpenThermStatus::READY; - responseStatus = OpenThermResponseStatus::TIMEOUT; + if (st != OpenThermStatus::OPTH_NOT_INITIALIZED && (newTs - ts) > 1000000) { + status = OpenThermStatus::OPTH_READY; + responseStatus = OpenThermResponseStatus::OPTH_TIMEOUT; if (processResponseCallback != NULL) { processResponseCallback(response, responseStatus); } } - else if (st == OpenThermStatus::RESPONSE_INVALID) { - status = OpenThermStatus::DELAY; - responseStatus = OpenThermResponseStatus::INVALID; + else if (st == OpenThermStatus::OPTH_RESPONSE_INVALID) { + status = OpenThermStatus::OPTH_DELAY; + responseStatus = OpenThermResponseStatus::OPTH_INVALID; if (processResponseCallback != NULL) { processResponseCallback(response, responseStatus); } } - else if (st == OpenThermStatus::RESPONSE_READY) { - status = OpenThermStatus::DELAY; - responseStatus = (isSlave ? isValidRequest(response) : isValidResponse(response)) ? OpenThermResponseStatus::SUCCESS : OpenThermResponseStatus::INVALID; + else if (st == OpenThermStatus::OPTH_RESPONSE_READY) { + status = OpenThermStatus::OPTH_DELAY; + responseStatus = (isSlave ? isValidRequest(response) : isValidResponse(response)) ? OpenThermResponseStatus::OPTH_SUCCESS : OpenThermResponseStatus::OPTH_INVALID; if (processResponseCallback != NULL) { processResponseCallback(response, responseStatus); } } - else if (st == OpenThermStatus::DELAY) { + else if (st == OpenThermStatus::OPTH_DELAY) { if ((newTs - ts) > 100000) { - status = OpenThermStatus::READY; + status = OpenThermStatus::OPTH_READY; } } } @@ -233,7 +233,7 @@ OpenThermMessageID OpenTherm::getDataID(unsigned long frame) unsigned long OpenTherm::buildRequest(OpenThermMessageType type, OpenThermMessageID id, unsigned int data) { unsigned long request = data; - if (type == OpenThermMessageType::WRITE_DATA) { + if (type == OpenThermMessageType::OPTH_WRITE_DATA) { request |= 1ul << 28; } request |= ((unsigned long)id) << 16; @@ -254,14 +254,14 @@ bool OpenTherm::isValidResponse(unsigned long response) { if (OpenTherm::parity(response)) return false; byte msgType = (response << 1) >> 29; - return msgType == READ_ACK || msgType == WRITE_ACK; + return msgType == OPTH_READ_ACK || msgType == OPTH_WRITE_ACK; } bool OpenTherm::isValidRequest(unsigned long request) { if (OpenTherm::parity(request)) return false; byte msgType = (request << 1) >> 29; - return msgType == READ_DATA || msgType == WRITE_DATA; + return msgType == OPTH_READ_DATA || msgType == OPTH_WRITE_DATA; } void OpenTherm::end() { @@ -273,10 +273,10 @@ void OpenTherm::end() { const char *OpenTherm::statusToString(OpenThermResponseStatus status) { switch (status) { - case NONE: return "NONE"; - case SUCCESS: return "SUCCESS"; - case INVALID: return "INVALID"; - case TIMEOUT: return "TIMEOUT"; + case OPTH_NONE: return "NONE"; + case OPTH_SUCCESS: return "SUCCESS"; + case OPTH_INVALID: return "INVALID"; + case OPTH_TIMEOUT: return "TIMEOUT"; default: return "UNKNOWN"; } } @@ -284,14 +284,14 @@ const char *OpenTherm::statusToString(OpenThermResponseStatus status) const char *OpenTherm::messageTypeToString(OpenThermMessageType message_type) { switch (message_type) { - case READ_DATA: return "READ_DATA"; - case WRITE_DATA: return "WRITE_DATA"; - case INVALID_DATA: return "INVALID_DATA"; - case RESERVED: return "RESERVED"; - case READ_ACK: return "READ_ACK"; - case WRITE_ACK: return "WRITE_ACK"; - case DATA_INVALID: return "DATA_INVALID"; - case UNKNOWN_DATA_ID: return "UNKNOWN_DATA_ID"; + case OPTH_READ_DATA: return "READ_DATA"; + case OPTH_WRITE_DATA: return "WRITE_DATA"; + case OPTH_INVALID_DATA: return "INVALID_DATA"; + case OPTH_RESERVED: return "RESERVED"; + case OPTH_READ_ACK: return "READ_ACK"; + case OPTH_WRITE_ACK: return "WRITE_ACK"; + case OPTH_DATA_INVALID: return "DATA_INVALID"; + case OPTH_UNKNOWN_DATA_ID: return "UNKNOWN_DATA_ID"; default: return "UNKNOWN"; } } @@ -301,25 +301,25 @@ const char *OpenTherm::messageTypeToString(OpenThermMessageType message_type) unsigned long OpenTherm::buildSetBoilerStatusRequest(bool enableCentralHeating, bool enableHotWater, bool enableCooling, bool enableOutsideTemperatureCompensation, bool enableCentralHeating2) { unsigned int data = enableCentralHeating | (enableHotWater << 1) | (enableCooling << 2) | (enableOutsideTemperatureCompensation << 3) | (enableCentralHeating2 << 4); data <<= 8; - return buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::Status, data); + return buildRequest(OpenThermMessageType::OPTH_READ_DATA, OpenThermMessageID::Status, data); } unsigned long OpenTherm::buildSetBoilerTemperatureRequest(float temperature) { unsigned int data = temperatureToData(temperature); - return buildRequest(OpenThermMessageType::WRITE_DATA, OpenThermMessageID::TSet, data); + return buildRequest(OpenThermMessageType::OPTH_WRITE_DATA, OpenThermMessageID::TSet, data); } unsigned long OpenTherm::buildSetHotWaterTemperatureRequest(float temperature) { unsigned int data = temperatureToData(temperature); - return buildRequest(OpenThermMessageType::WRITE_DATA, OpenThermMessageID::TdhwSet, data); + return buildRequest(OpenThermMessageType::OPTH_WRITE_DATA, OpenThermMessageID::TdhwSet, data); } unsigned long OpenTherm::buildGetBoilerTemperatureRequest() { - return buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::Tboiler, 0); + return buildRequest(OpenThermMessageType::OPTH_READ_DATA, OpenThermMessageID::Tboiler, 0); } unsigned long OpenTherm::buildSlaveConfigurationRequest() { - return buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::SConfigSMemberIDcode, 0); + return buildRequest(OpenThermMessageType::OPTH_READ_DATA, OpenThermMessageID::SConfigSMemberIDcode, 0); } //parsing responses @@ -387,22 +387,22 @@ float OpenTherm::getBoilerTemperature() { } float OpenTherm::getReturnTemperature() { - unsigned long response = sendRequest(buildRequest(OpenThermRequestType::READ, OpenThermMessageID::Tret, 0)); + unsigned long response = sendRequest(buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::Tret, 0)); return isValidResponse(response) ? getFloat(response) : 0; } float OpenTherm::getModulation() { - unsigned long response = sendRequest(buildRequest(OpenThermRequestType::READ, OpenThermMessageID::RelModLevel, 0)); + unsigned long response = sendRequest(buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::RelModLevel, 0)); return isValidResponse(response) ? getFloat(response) : 0; } float OpenTherm::getPressure() { - unsigned long response = sendRequest(buildRequest(OpenThermRequestType::READ, OpenThermMessageID::CHPressure, 0)); + unsigned long response = sendRequest(buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::CHPressure, 0)); return isValidResponse(response) ? getFloat(response) : 0; } unsigned char OpenTherm::getFault() { - return ((sendRequest(buildRequest(OpenThermRequestType::READ, OpenThermMessageID::ASFflags, 0)) >> 8) & 0xff); + return ((sendRequest(buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::ASFflags, 0)) >> 8) & 0xff); } unsigned long OpenTherm::getSlaveConfiguration() { diff --git a/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.h b/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.h index 22bf965ad..7f975ace1 100644 --- a/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.h +++ b/lib/lib_div/OpenTherm-0.9.0/src/OpenTherm.h @@ -17,26 +17,26 @@ P MGS-TYPE SPARE DATA-ID DATA-VALUE #include enum OpenThermResponseStatus { - NONE, - SUCCESS, - INVALID, - TIMEOUT + OPTH_NONE, + OPTH_SUCCESS, + OPTH_INVALID, + OPTH_TIMEOUT }; enum OpenThermMessageType { /* Master to Slave */ - READ_DATA = B000, - READ = READ_DATA, // for backwared compatibility - WRITE_DATA = B001, - WRITE = WRITE_DATA, // for backwared compatibility - INVALID_DATA = B010, - RESERVED = B011, + OPTH_READ_DATA = B000, + OPTH_READ = OPTH_READ_DATA, // for backwared compatibility + OPTH_WRITE_DATA = B001, + OPTH_WRITE = OPTH_WRITE_DATA, // for backwared compatibility + OPTH_INVALID_DATA = B010, + OPTH_RESERVED = B011, /* Slave to Master */ - READ_ACK = B100, - WRITE_ACK = B101, - DATA_INVALID = B110, - UNKNOWN_DATA_ID = B111 + OPTH_READ_ACK = B100, + OPTH_WRITE_ACK = B101, + OPTH_DATA_INVALID = B110, + OPTH_UNKNOWN_DATA_ID = B111 }; typedef OpenThermMessageType OpenThermRequestType; // for backwared compatibility @@ -99,15 +99,15 @@ enum OpenThermMessageID { }; enum OpenThermStatus { - NOT_INITIALIZED, - READY, - DELAY, - REQUEST_SENDING, - RESPONSE_WAITING, - RESPONSE_START_BIT, - RESPONSE_RECEIVING, - RESPONSE_READY, - RESPONSE_INVALID + OPTH_NOT_INITIALIZED, + OPTH_READY, + OPTH_DELAY, + OPTH_REQUEST_SENDING, + OPTH_RESPONSE_WAITING, + OPTH_RESPONSE_START_BIT, + OPTH_RESPONSE_RECEIVING, + OPTH_RESPONSE_READY, + OPTH_RESPONSE_INVALID }; class OpenTherm diff --git a/tasmota/xsns_69_opentherm.ino b/tasmota/xsns_69_opentherm.ino index 095a1909a..cfcc0384d 100644 --- a/tasmota/xsns_69_opentherm.ino +++ b/tasmota/xsns_69_opentherm.ino @@ -179,7 +179,7 @@ void sns_opentherm_processResponseCallback(unsigned long response, int st) switch (status) { - case OpenThermResponseStatus::SUCCESS: + case OpenThermResponseStatus::OPTH_SUCCESS: if (sns_ot_master->isValidResponse(response)) { sns_opentherm_process_success_response(&sns_ot_boiler_status, response); @@ -188,7 +188,7 @@ void sns_opentherm_processResponseCallback(unsigned long response, int st) sns_ot_timeout_before_disconnect = SNS_OT_MAX_TIMEOUTS_BEFORE_DISCONNECT; break; - case OpenThermResponseStatus::INVALID: + case OpenThermResponseStatus::OPTH_INVALID: sns_opentherm_check_retry_request(); sns_ot_connection_status = OpenThermConnectionStatus::OTC_READY; sns_ot_timeout_before_disconnect = SNS_OT_MAX_TIMEOUTS_BEFORE_DISCONNECT; @@ -198,7 +198,7 @@ void sns_opentherm_processResponseCallback(unsigned long response, int st) // In this case we do reconnect. // If this command will timeout multiple times, it will be excluded from the rotation later on // after couple of failed attempts. See sns_opentherm_check_retry_request logic - case OpenThermResponseStatus::TIMEOUT: + case OpenThermResponseStatus::OPTH_TIMEOUT: sns_opentherm_check_retry_request(); if (--sns_ot_timeout_before_disconnect == 0) { @@ -315,7 +315,7 @@ void sns_ot_start_handshake() sns_opentherm_protocol_reset(); sns_ot_master->sendRequestAync( - OpenTherm::buildRequest(OpenThermMessageType::READ_DATA, OpenThermMessageID::SConfigSMemberIDcode, 0)); + OpenTherm::buildRequest(OpenThermMessageType::OPTH_READ_DATA, OpenThermMessageID::SConfigSMemberIDcode, 0)); sns_ot_connection_status = OpenThermConnectionStatus::OTC_HANDSHAKE; } @@ -324,7 +324,7 @@ void sns_ot_process_handshake(unsigned long response, int st) { OpenThermResponseStatus status = (OpenThermResponseStatus)st; - if (status != OpenThermResponseStatus::SUCCESS || !sns_ot_master->isValidResponse(response)) + if (status != OpenThermResponseStatus::OPTH_SUCCESS || !sns_ot_master->isValidResponse(response)) { AddLog(LOG_LEVEL_ERROR, PSTR("[OTH]: getSlaveConfiguration failed. Status=%s"), diff --git a/tasmota/xsns_69_opentherm_protocol.ino b/tasmota/xsns_69_opentherm_protocol.ino index d01c29bb7..bc821640a 100644 --- a/tasmota/xsns_69_opentherm_protocol.ino +++ b/tasmota/xsns_69_opentherm_protocol.ino @@ -274,7 +274,7 @@ unsigned long sns_opentherm_set_slave_flags(struct OpenThermCommandT *self, stru data <<= 8; - return OpenTherm::buildRequest(OpenThermRequestType::READ, OpenThermMessageID::Status, data); + return OpenTherm::buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::Status, data); } void sns_opentherm_parse_slave_flags(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) @@ -320,7 +320,7 @@ unsigned long sns_opentherm_set_boiler_temperature(struct OpenThermCommandT *sel self->m_results[0].m_float = status->m_boilerSetpoint; unsigned int data = OpenTherm::temperatureToData(status->m_boilerSetpoint); - return OpenTherm::buildRequest(OpenThermMessageType::WRITE_DATA, OpenThermMessageID::TSet, data); + return OpenTherm::buildRequest(OpenThermMessageType::OPTH_WRITE_DATA, OpenThermMessageID::TSet, data); } void sns_opentherm_parse_set_boiler_temperature(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) { @@ -360,7 +360,7 @@ unsigned long sns_opentherm_set_boiler_dhw_temperature(struct OpenThermCommandT self->m_results[0].m_float = status->m_hotWaterSetpoint; unsigned int data = OpenTherm::temperatureToData(status->m_hotWaterSetpoint); - return OpenTherm::buildRequest(OpenThermMessageType::WRITE_DATA, OpenThermMessageID::TdhwSet, data); + return OpenTherm::buildRequest(OpenThermMessageType::OPTH_WRITE_DATA, OpenThermMessageID::TdhwSet, data); } void sns_opentherm_parse_boiler_dhw_temperature(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) { @@ -381,7 +381,7 @@ void sns_opentherm_tele_boiler_dhw_temperature(struct OpenThermCommandT *self) /////////////////////////////////// App Specific Fault Flags ////////////////////////////////////////////////// unsigned long sns_opentherm_get_flags(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *) { - return OpenTherm::buildRequest(OpenThermRequestType::READ, OpenThermMessageID::ASFflags, 0); + return OpenTherm::buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::ASFflags, 0); } void sns_opentherm_parse_flags(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) @@ -416,7 +416,7 @@ void sns_opentherm_tele_u16(struct OpenThermCommandT *self) /////////////////////////////////// OEM Diag Code ////////////////////////////////////////////////// unsigned long sns_opentherm_get_oem_diag(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *) { - return OpenTherm::buildRequest(OpenThermRequestType::READ, OpenThermMessageID::OEMDiagnosticCode, 0); + return OpenTherm::buildRequest(OpenThermRequestType::OPTH_READ, OpenThermMessageID::OEMDiagnosticCode, 0); } void sns_opentherm_parse_oem_diag(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) @@ -434,7 +434,7 @@ void sns_opentherm_tele_oem_diag(struct OpenThermCommandT *self) /////////////////////////////////// Generic Single Float ///////////////////////////////////////////////// unsigned long sns_opentherm_get_generic_float(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *) { - return OpenTherm::buildRequest(OpenThermRequestType::READ, (OpenThermMessageID)self->m_command_code, 0); + return OpenTherm::buildRequest(OpenThermRequestType::OPTH_READ, (OpenThermMessageID)self->m_command_code, 0); } void sns_opentherm_parse_generic_float(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) @@ -452,7 +452,7 @@ void sns_opentherm_tele_generic_float(struct OpenThermCommandT *self) /////////////////////////////////// Generic U16 ///////////////////////////////////////////////// unsigned long sns_opentherm_get_generic_u16(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *) { - return OpenTherm::buildRequest(OpenThermRequestType::READ, (OpenThermMessageID)self->m_command_code, 0); + return OpenTherm::buildRequest(OpenThermRequestType::OPTH_READ, (OpenThermMessageID)self->m_command_code, 0); } void sns_opentherm_parse_generic_u16(struct OpenThermCommandT *self, struct OT_BOILER_STATUS_T *boilerStatus, unsigned long response) From 98acc6fe2d150f1e96f4f9e1adea533f636037c0 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Sat, 2 Oct 2021 09:33:59 +0200 Subject: [PATCH 269/317] LVGL updated to v8.0.2 **breaking changes** --- CHANGELOG.md | 2 + lib/libesp32/Berry/default/be_ctypes.c | 58 +- .../default/be_energy_ctypes_definitions.c | 132 +- lib/libesp32/Berry/default/be_lvgl_cb.c | 154 - .../Berry/default/be_lvgl_clock_icon_lib.c | 165 +- .../Berry/default/be_lvgl_color_lib.c | 2 +- .../default/be_lvgl_ctypes_definitions.c | 528 +- lib/libesp32/Berry/default/be_lvgl_font_lib.c | 11 +- lib/libesp32/Berry/default/be_lvgl_glob_lib.c | 816 ++ lib/libesp32/Berry/default/be_lvgl_module.c | 648 +- .../Berry/default/be_lvgl_signal_arcs_lib.c | 675 +- .../Berry/default/be_lvgl_signal_bars_lib.c | 574 +- .../Berry/default/be_lvgl_widgets_lib.c | 2624 +--- .../default/be_lvgl_wifi_arcs_icon_lib.c | 157 +- .../Berry/default/be_lvgl_wifi_arcs_lib.c | 35 +- .../default/be_lvgl_wifi_bars_icon_lib.c | 149 +- .../Berry/default/be_lvgl_wifi_bars_lib.c | 35 +- lib/libesp32/Berry/default/be_modtab.c | 6 +- .../Berry/default/embedded/lv_clock_icon.be | 9 +- .../Berry/default/embedded/lv_signal_arcs.be | 52 +- .../Berry/default/embedded/lv_signal_bars.be | 58 +- .../Berry/default/embedded/lvgl_glob.be | 257 + lib/libesp32/Berry/generate/be_const_strtab.h | 1359 +- .../Berry/generate/be_const_strtab_def.h | 2026 ++- .../Berry/generate/be_fixed_be_class_lv_arc.h | 11 +- .../Berry/generate/be_fixed_be_class_lv_bar.h | 11 +- .../Berry/generate/be_fixed_be_class_lv_btn.h | 11 +- .../generate/be_fixed_be_class_lv_btnmatrix.h | 11 +- .../generate/be_fixed_be_class_lv_calendar.h | 20 - .../generate/be_fixed_be_class_lv_canvas.h | 11 +- .../generate/be_fixed_be_class_lv_chart.h | 11 +- .../generate/be_fixed_be_class_lv_checkbox.h | 11 +- .../generate/be_fixed_be_class_lv_color.h | 6 +- .../be_fixed_be_class_lv_colorwheel.h | 21 + .../generate/be_fixed_be_class_lv_cont.h | 20 - .../generate/be_fixed_be_class_lv_cpicker.h | 20 - .../generate/be_fixed_be_class_lv_dropdown.h | 11 +- .../generate/be_fixed_be_class_lv_font.h | 6 +- .../generate/be_fixed_be_class_lv_gauge.h | 20 - .../generate/be_fixed_be_class_lv_group.h | 4 +- .../Berry/generate/be_fixed_be_class_lv_img.h | 11 +- .../generate/be_fixed_be_class_lv_imgbtn.h | 11 +- .../generate/be_fixed_be_class_lv_indev.h | 4 +- .../generate/be_fixed_be_class_lv_keyboard.h | 20 - .../generate/be_fixed_be_class_lv_label.h | 11 +- .../Berry/generate/be_fixed_be_class_lv_led.h | 11 +- .../generate/be_fixed_be_class_lv_line.h | 11 +- .../generate/be_fixed_be_class_lv_linemeter.h | 20 - .../generate/be_fixed_be_class_lv_list.h | 20 - .../generate/be_fixed_be_class_lv_meter.h | 21 + .../generate/be_fixed_be_class_lv_msgbox.h | 11 +- .../Berry/generate/be_fixed_be_class_lv_obj.h | 11 +- .../generate/be_fixed_be_class_lv_objmask.h | 20 - .../generate/be_fixed_be_class_lv_page.h | 20 - .../generate/be_fixed_be_class_lv_roller.h | 11 +- .../generate/be_fixed_be_class_lv_slider.h | 11 +- .../generate/be_fixed_be_class_lv_spinbox.h | 11 +- .../generate/be_fixed_be_class_lv_spinner.h | 20 - .../generate/be_fixed_be_class_lv_style.h | 4 +- .../generate/be_fixed_be_class_lv_switch.h | 11 +- .../generate/be_fixed_be_class_lv_table.h | 11 +- .../generate/be_fixed_be_class_lv_tabview.h | 20 - .../generate/be_fixed_be_class_lv_textarea.h | 11 +- .../generate/be_fixed_be_class_lv_tileview.h | 20 - .../Berry/generate/be_fixed_be_class_lv_win.h | 20 - .../Berry/generate/be_fixed_be_lv_design_cb.h | 17 - .../Berry/generate/be_fixed_be_lv_event_cb.h | 17 - .../generate/be_fixed_be_lv_gauge_format_cb.h | 17 - .../generate/be_fixed_be_lv_group_focus_cb.h | 17 - .../Berry/generate/be_fixed_be_lv_signal_cb.h | 17 - .../Berry/generate/be_fixed_be_lvgl_cb.h | 20 - lib/libesp32/Berry/src/be_introspectlib.c | 5 +- lib/libesp32/Berry/tests/introspect_vcall.be | 96 - .../Adafruit_LvGL_Glue.cpp | 16 +- .../Adafruit_LvGL_Glue.h | 2 +- lib/libesp32_lvgl/LVGL/CHANGELOG.md | 417 - lib/libesp32_lvgl/LVGL/CMakeLists.txt | 67 - lib/libesp32_lvgl/LVGL/Kconfig | 1222 -- lib/libesp32_lvgl/LVGL/component.mk | 23 - .../LVGL/docs/CODE_OF_CONDUCT.md | 46 - lib/libesp32_lvgl/LVGL/docs/CODING_STYLE.md | 89 - lib/libesp32_lvgl/LVGL/docs/CONTRIBUTING.md | 5 - lib/libesp32_lvgl/LVGL/docs/ROADMAP.md | 63 - .../LVGL/examples/LVGL_Arduino.ino | 102 - .../examples/porting/lv_port_disp_template.c | 196 - .../examples/porting/lv_port_fs_template.c | 377 - .../examples/porting/lv_port_indev_template.c | 423 - lib/libesp32_lvgl/LVGL/library.json | 17 - lib/libesp32_lvgl/LVGL/lvgl.h | 151 - lib/libesp32_lvgl/LVGL/scripts/Doxyfile | 2455 ---- .../LVGL/scripts/built_in_font/DejaVuSans.ttf | Bin 756072 -> 0 bytes .../FontAwesome5-Solid+Brands+Regular.woff | Bin 353228 -> 0 bytes .../built_in_font/Montserrat-Medium.ttf | Bin 243180 -> 0 bytes .../LVGL/scripts/built_in_font/SimSun.woff | Bin 4801180 -> 0 bytes .../built_in_font/built_in_font_gen.py | 59 - .../scripts/built_in_font/generate_all.py | 103 - .../LVGL/scripts/code-format.cfg | 49 - lib/libesp32_lvgl/LVGL/scripts/code-format.sh | 1 - .../LVGL/scripts/cppcheck_run.sh | 1 - lib/libesp32_lvgl/LVGL/scripts/infer_run.sh | 9 - .../LVGL/scripts/lv_conf_checker.py | 145 - lib/libesp32_lvgl/LVGL/scripts/release/com.py | 110 - lib/libesp32_lvgl/LVGL/scripts/release/dev.py | 72 - .../LVGL/scripts/release/main.py | 65 - .../LVGL/scripts/release/proj.py | 62 - .../LVGL/scripts/release/release.py | 173 - lib/libesp32_lvgl/LVGL/src/lv_api_map.h | 232 - lib/libesp32_lvgl/LVGL/src/lv_conf_internal.h | 2028 --- lib/libesp32_lvgl/LVGL/src/lv_conf_kconfig.h | 420 - lib/libesp32_lvgl/LVGL/src/lv_core/lv_core.mk | 11 - lib/libesp32_lvgl/LVGL/src/lv_core/lv_indev.c | 1579 -- lib/libesp32_lvgl/LVGL/src/lv_core/lv_obj.c | 4834 ------- lib/libesp32_lvgl/LVGL/src/lv_core/lv_obj.h | 1528 -- .../LVGL/src/lv_core/lv_obj_style_dec.h | 283 - lib/libesp32_lvgl/LVGL/src/lv_core/lv_style.c | 1134 -- lib/libesp32_lvgl/LVGL/src/lv_core/lv_style.h | 632 - .../LVGL/src/lv_draw/lv_draw_arc.c | 421 - .../LVGL/src/lv_draw/lv_draw_arc.h | 52 - .../src/lv_font/lv_font_montserrat_12_subpx.c | 1874 --- lib/libesp32_lvgl/LVGL/src/lv_gpu/lv_gpu.mk | 6 - .../LVGL/src/lv_gpu/lv_gpu_nxp_vglite.c | 299 - lib/libesp32_lvgl/LVGL/src/lv_hal/lv_hal.mk | 8 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_color.c | 263 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_debug.c | 138 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_debug.h | 131 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_fs.c | 666 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_gc.h | 80 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_mem.c | 832 -- lib/libesp32_lvgl/LVGL/src/lv_misc/lv_task.c | 415 - lib/libesp32_lvgl/LVGL/src/lv_misc/lv_task.h | 183 - .../LVGL/src/lv_themes/lv_theme.c | 473 - .../LVGL/src/lv_themes/lv_theme.h | 275 - .../LVGL/src/lv_themes/lv_theme_empty.c | 103 - .../LVGL/src/lv_themes/lv_theme_empty.h | 56 - .../LVGL/src/lv_themes/lv_theme_material.c | 1380 -- .../LVGL/src/lv_themes/lv_theme_material.h | 62 - .../LVGL/src/lv_themes/lv_theme_mono.c | 1009 -- .../LVGL/src/lv_themes/lv_theme_mono.h | 56 - .../LVGL/src/lv_themes/lv_theme_template.c | 838 -- .../LVGL/src/lv_themes/lv_theme_template.h | 56 - .../LVGL/src/lv_themes/lv_themes.mk | 11 - .../LVGL/src/lv_widgets/lv_arc.c | 1120 -- .../LVGL/src/lv_widgets/lv_arc.h | 266 - .../LVGL/src/lv_widgets/lv_bar.c | 797 - .../LVGL/src/lv_widgets/lv_bar.h | 199 - .../LVGL/src/lv_widgets/lv_btn.c | 319 - .../LVGL/src/lv_widgets/lv_btn.h | 228 - .../LVGL/src/lv_widgets/lv_btnmatrix.c | 1305 -- .../LVGL/src/lv_widgets/lv_btnmatrix.h | 265 - .../LVGL/src/lv_widgets/lv_calendar.c | 1084 -- .../LVGL/src/lv_widgets/lv_calendar.h | 208 - .../LVGL/src/lv_widgets/lv_chart.c | 1859 --- .../LVGL/src/lv_widgets/lv_chart.h | 465 - .../LVGL/src/lv_widgets/lv_checkbox.c | 291 - .../LVGL/src/lv_widgets/lv_checkbox.h | 160 - .../LVGL/src/lv_widgets/lv_cont.c | 817 -- .../LVGL/src/lv_widgets/lv_cont.h | 222 - .../LVGL/src/lv_widgets/lv_cpicker.c | 1037 -- .../LVGL/src/lv_widgets/lv_cpicker.h | 226 - .../LVGL/src/lv_widgets/lv_dropdown.c | 1347 -- .../LVGL/src/lv_widgets/lv_dropdown.h | 260 - .../LVGL/src/lv_widgets/lv_gauge.c | 673 - .../LVGL/src/lv_widgets/lv_gauge.h | 275 - .../LVGL/src/lv_widgets/lv_img.c | 887 -- .../LVGL/src/lv_widgets/lv_img.h | 218 - .../LVGL/src/lv_widgets/lv_imgbtn.c | 571 - .../LVGL/src/lv_widgets/lv_imgbtn.h | 198 - .../LVGL/src/lv_widgets/lv_keyboard.c | 534 - .../LVGL/src/lv_widgets/lv_label.c | 1541 -- .../LVGL/src/lv_widgets/lv_label.h | 308 - .../LVGL/src/lv_widgets/lv_led.c | 244 - .../LVGL/src/lv_widgets/lv_line.c | 293 - .../LVGL/src/lv_widgets/lv_line.h | 118 - .../LVGL/src/lv_widgets/lv_linemeter.c | 555 - .../LVGL/src/lv_widgets/lv_linemeter.h | 169 - .../LVGL/src/lv_widgets/lv_list.c | 932 -- .../LVGL/src/lv_widgets/lv_list.h | 311 - .../LVGL/src/lv_widgets/lv_msgbox.c | 637 - .../LVGL/src/lv_widgets/lv_msgbox.h | 195 - .../LVGL/src/lv_widgets/lv_objmask.c | 365 - .../LVGL/src/lv_widgets/lv_objmask.h | 111 - .../LVGL/src/lv_widgets/lv_objx_templ.c | 238 - .../LVGL/src/lv_widgets/lv_objx_templ.h | 103 - .../LVGL/src/lv_widgets/lv_page.c | 1397 -- .../LVGL/src/lv_widgets/lv_page.h | 426 - .../LVGL/src/lv_widgets/lv_roller.c | 1037 -- .../LVGL/src/lv_widgets/lv_roller.h | 194 - .../LVGL/src/lv_widgets/lv_slider.c | 533 - .../LVGL/src/lv_widgets/lv_slider.h | 221 - .../LVGL/src/lv_widgets/lv_spinbox.c | 593 - .../LVGL/src/lv_widgets/lv_spinner.c | 326 - .../LVGL/src/lv_widgets/lv_spinner.h | 180 - .../LVGL/src/lv_widgets/lv_switch.c | 355 - .../LVGL/src/lv_widgets/lv_switch.h | 137 - .../LVGL/src/lv_widgets/lv_table.c | 1191 -- .../LVGL/src/lv_widgets/lv_table.h | 276 - .../LVGL/src/lv_widgets/lv_tabview.c | 1031 -- .../LVGL/src/lv_widgets/lv_tabview.h | 192 - .../LVGL/src/lv_widgets/lv_textarea.c | 1924 --- .../LVGL/src/lv_widgets/lv_textarea.h | 450 - .../LVGL/src/lv_widgets/lv_tileview.c | 474 - .../LVGL/src/lv_widgets/lv_tileview.h | 164 - .../LVGL/src/lv_widgets/lv_widgets.mk | 38 - .../LVGL/src/lv_widgets/lv_win.c | 855 -- .../LVGL/src/lv_widgets/lv_win.h | 313 - lib/libesp32_lvgl/LVGL/tests/Makefile | 59 - lib/libesp32_lvgl/LVGL/tests/build.py | 375 - lib/libesp32_lvgl/LVGL/tests/font_1.fnt | Bin 6876 -> 0 bytes lib/libesp32_lvgl/LVGL/tests/font_2.fnt | Bin 7252 -> 0 bytes lib/libesp32_lvgl/LVGL/tests/font_3.fnt | Bin 4892 -> 0 bytes lib/libesp32_lvgl/LVGL/tests/icon.png | Bin 2739 -> 0 bytes lib/libesp32_lvgl/LVGL/tests/icon2.png | Bin 1853 -> 0 bytes lib/libesp32_lvgl/LVGL/tests/lv_test_assert.c | 376 - lib/libesp32_lvgl/LVGL/tests/lv_test_assert.h | 53 - lib/libesp32_lvgl/LVGL/tests/lv_test_conf.h | 50 - .../tests/lv_test_core/lv_test_font_loader.c | 223 - .../tests/lv_test_core/lv_test_font_loader.h | 38 - .../LVGL/tests/lv_test_core/lv_test_obj.c | 88 - .../LVGL/tests/lv_test_core/lv_test_obj.h | 38 - .../LVGL/tests/lv_test_core/lv_test_style.c | 624 - .../LVGL/tests/lv_test_core/lv_test_style.h | 38 - .../LVGL/tests/lv_test_fonts/font_1.c | 1378 -- .../LVGL/tests/lv_test_fonts/font_2.c | 1408 -- .../LVGL/tests/lv_test_fonts/font_3.c | 946 -- lib/libesp32_lvgl/LVGL/tests/lv_test_main.c | 145 - .../lv_test_img32_label_1.png | Bin 2533 -> 0 bytes .../tests/lv_test_widgets/lv_test_label.c | 69 - .../tests/lv_test_widgets/lv_test_label.h | 38 - lib/libesp32_lvgl/LVGL/zephyr/module.yml | 2 - lib/libesp32_lvgl/LVGL8/Kconfig | 714 + lib/libesp32_lvgl/{LVGL => LVGL8}/LICENCE.txt | 0 lib/libesp32_lvgl/{LVGL => LVGL8}/README.md | 4 + lib/libesp32_lvgl/LVGL8/library.json | 20 + lib/libesp32_lvgl/LVGL8/library.properties | 10 + lib/libesp32_lvgl/LVGL8/lv_conf_template.h | 512 + lib/libesp32_lvgl/LVGL8/lvgl.h | 140 + lib/libesp32_lvgl/LVGL8/lvgl.mk | 9 + lib/libesp32_lvgl/LVGL8/src/core/lv_core.mk | 20 + .../src/lv_core => LVGL8/src/core}/lv_disp.c | 128 +- .../src/lv_core => LVGL8/src/core}/lv_disp.h | 63 +- lib/libesp32_lvgl/LVGL8/src/core/lv_event.c | 429 + lib/libesp32_lvgl/LVGL8/src/core/lv_event.h | 318 + .../src/lv_core => LVGL8/src/core}/lv_group.c | 293 +- .../src/lv_core => LVGL8/src/core}/lv_group.h | 140 +- lib/libesp32_lvgl/LVGL8/src/core/lv_indev.c | 1110 ++ .../src/lv_core => LVGL8/src/core}/lv_indev.h | 79 +- .../LVGL8/src/core/lv_indev_scroll.c | 641 + .../LVGL8/src/core/lv_indev_scroll.h | 65 + lib/libesp32_lvgl/LVGL8/src/core/lv_obj.c | 831 ++ lib/libesp32_lvgl/LVGL8/src/core/lv_obj.h | 387 + .../LVGL8/src/core/lv_obj_class.c | 197 + .../LVGL8/src/core/lv_obj_class.h | 93 + .../LVGL8/src/core/lv_obj_draw.c | 365 + .../LVGL8/src/core/lv_obj_draw.h | 145 + lib/libesp32_lvgl/LVGL8/src/core/lv_obj_pos.c | 956 ++ lib/libesp32_lvgl/LVGL8/src/core/lv_obj_pos.h | 386 + .../LVGL8/src/core/lv_obj_scroll.c | 722 + .../LVGL8/src/core/lv_obj_scroll.h | 284 + .../LVGL8/src/core/lv_obj_style.c | 811 ++ .../LVGL8/src/core/lv_obj_style.h | 231 + .../LVGL8/src/core/lv_obj_style_gen.c | 713 + .../LVGL8/src/core/lv_obj_style_gen.h | 623 + .../LVGL8/src/core/lv_obj_tree.c | 422 + .../LVGL8/src/core/lv_obj_tree.h | 163 + .../src/lv_core => LVGL8/src/core}/lv_refr.c | 652 +- .../src/lv_core => LVGL8/src/core}/lv_refr.h | 10 +- lib/libesp32_lvgl/LVGL8/src/core/lv_theme.c | 118 + lib/libesp32_lvgl/LVGL8/src/core/lv_theme.h | 115 + .../src/lv_draw => LVGL8/src/draw}/lv_draw.h | 7 +- .../src/lv_draw => LVGL8/src/draw}/lv_draw.mk | 18 +- .../LVGL8/src/draw/lv_draw_arc.c | 541 + .../LVGL8/src/draw/lv_draw_arc.h | 75 + .../src/draw}/lv_draw_blend.c | 253 +- .../src/draw}/lv_draw_blend.h | 16 +- .../lv_draw => LVGL8/src/draw}/lv_draw_img.c | 120 +- .../lv_draw => LVGL8/src/draw}/lv_draw_img.h | 13 +- .../src/draw}/lv_draw_label.c | 193 +- .../src/draw}/lv_draw_label.h | 39 +- .../lv_draw => LVGL8/src/draw}/lv_draw_line.c | 157 +- .../lv_draw => LVGL8/src/draw}/lv_draw_line.h | 10 +- .../lv_draw => LVGL8/src/draw}/lv_draw_mask.c | 171 +- .../lv_draw => LVGL8/src/draw}/lv_draw_mask.h | 82 +- .../lv_draw => LVGL8/src/draw}/lv_draw_rect.c | 638 +- .../lv_draw => LVGL8/src/draw}/lv_draw_rect.h | 70 +- .../src/draw}/lv_draw_triangle.c | 45 +- .../src/draw}/lv_draw_triangle.h | 2 +- .../lv_draw => LVGL8/src/draw}/lv_img_buf.c | 232 +- .../lv_draw => LVGL8/src/draw}/lv_img_buf.h | 144 +- .../lv_draw => LVGL8/src/draw}/lv_img_cache.c | 46 +- .../lv_draw => LVGL8/src/draw}/lv_img_cache.h | 11 +- .../src/draw}/lv_img_decoder.c | 198 +- .../src/draw}/lv_img_decoder.h | 54 +- lib/libesp32_lvgl/LVGL8/src/extra/extra.mk | 1 + .../LVGL8/src/extra/layouts/flex/lv_flex.c | 580 + .../LVGL8/src/extra/layouts/flex/lv_flex.h | 152 + .../LVGL8/src/extra/layouts/grid/lv_grid.c | 743 + .../LVGL8/src/extra/layouts/grid/lv_grid.h | 194 + .../src/extra/layouts/lv_layouts.h} | 25 +- .../src/extra/lv_extra.c} | 26 +- .../lv_hal.h => LVGL8/src/extra/lv_extra.h} | 18 +- .../src/extra/themes/basic/lv_theme_basic.c | 424 + .../src/extra/themes/basic/lv_theme_basic.h} | 29 +- .../extra/themes/default/lv_theme_default.c | 1002 ++ .../extra/themes/default/lv_theme_default.h | 54 + .../src/extra/themes/lv_themes.h} | 14 +- .../src/extra/themes/mono/lv_theme_mono.c | 494 + .../src/extra/themes/mono/lv_theme_mono.h | 51 + .../src/extra/widgets/animimg/lv_animimg.c | 132 + .../src/extra/widgets/animimg/lv_animimg.h | 103 + .../src/extra/widgets/calendar/lv_calendar.c | 367 + .../src/extra/widgets/calendar/lv_calendar.h | 154 + .../calendar/lv_calendar_header_arrow.c | 142 + .../calendar/lv_calendar_header_arrow.h | 49 + .../calendar/lv_calendar_header_dropdown.c | 141 + .../calendar/lv_calendar_header_dropdown.h | 49 + .../LVGL8/src/extra/widgets/chart/lv_chart.c | 1678 +++ .../LVGL8/src/extra/widgets/chart/lv_chart.h | 439 + .../extra/widgets/colorwheel/lv_colorwheel.c | 690 + .../extra/widgets/colorwheel/lv_colorwheel.h | 142 + .../src/extra/widgets/imgbtn/lv_imgbtn.c | 356 + .../src/extra/widgets/imgbtn/lv_imgbtn.h | 124 + .../src/extra/widgets/keyboard/lv_keyboard.c | 349 + .../src/extra/widgets/keyboard}/lv_keyboard.h | 76 +- .../LVGL8/src/extra/widgets/led/lv_led.c | 207 + .../src/extra/widgets/led}/lv_led.h | 36 +- .../LVGL8/src/extra/widgets/list/lv_list.c | 118 + .../LVGL8/src/extra/widgets/list/lv_list.h | 54 + .../LVGL8/src/extra/widgets/lv_widgets.h | 55 + .../LVGL8/src/extra/widgets/meter/lv_meter.c | 661 + .../LVGL8/src/extra/widgets/meter/lv_meter.h | 243 + .../src/extra/widgets/msgbox/lv_msgbox.c | 155 + .../src/extra/widgets/msgbox/lv_msgbox.h | 75 + .../LVGL8/src/extra/widgets/span/lv_span.c | 985 ++ .../LVGL8/src/extra/widgets/span/lv_span.h | 206 + .../src/extra/widgets/spinbox/lv_spinbox.c | 463 + .../src/extra/widgets/spinbox}/lv_spinbox.h | 85 +- .../src/extra/widgets/spinner/lv_spinner.c | 104 + .../src/extra/widgets/spinner/lv_spinner.h | 50 + .../src/extra/widgets/tabview/lv_tabview.c | 303 + .../src/extra/widgets/tabview/lv_tabview.h | 64 + .../src/extra/widgets/tileview/lv_tileview.c | 183 + .../src/extra/widgets/tileview/lv_tileview.h | 72 + .../LVGL8/src/extra/widgets/win/lv_win.c | 110 + .../LVGL8/src/extra/widgets/win/lv_win.h | 51 + lib/libesp32_lvgl/LVGL8/src/font/korean.ttf | Bin 0 -> 3371440 bytes .../src/lv_font => LVGL8/src/font}/lv_font.c | 4 +- .../src/lv_font => LVGL8/src/font}/lv_font.h | 33 +- .../src/lv_font => LVGL8/src/font}/lv_font.mk | 6 +- .../font}/lv_font_dejavu_16_persian_hebrew.c | 1258 +- .../src/font}/lv_font_fmt_txt.c | 73 +- .../src/font}/lv_font_fmt_txt.h | 39 +- .../src/font}/lv_font_loader.c | 81 +- .../src/font}/lv_font_loader.h | 6 +- .../src/font}/lv_font_montserrat_10.c | 371 +- .../src/font}/lv_font_montserrat_12.c | 361 +- .../src/font/lv_font_montserrat_12_subpx.c | 3870 +++++ .../src/font}/lv_font_montserrat_14.c | 368 +- .../src/font}/lv_font_montserrat_16.c | 374 +- .../src/font}/lv_font_montserrat_18.c | 385 +- .../src/font}/lv_font_montserrat_20.c | 396 +- .../src/font}/lv_font_montserrat_22.c | 408 +- .../src/font}/lv_font_montserrat_24.c | 418 +- .../src/font}/lv_font_montserrat_26.c | 433 +- .../src/font}/lv_font_montserrat_28.c | 448 +- .../font}/lv_font_montserrat_28_compressed.c | 388 +- .../src/font}/lv_font_montserrat_30.c | 464 +- .../src/font}/lv_font_montserrat_32.c | 476 +- .../src/font}/lv_font_montserrat_34.c | 498 +- .../src/font}/lv_font_montserrat_36.c | 515 +- .../src/font}/lv_font_montserrat_38.c | 537 +- .../src/font}/lv_font_montserrat_40.c | 553 +- .../src/font}/lv_font_montserrat_42.c | 577 +- .../src/font}/lv_font_montserrat_44.c | 603 +- .../src/font}/lv_font_montserrat_46.c | 626 +- .../src/font}/lv_font_montserrat_48.c | 645 +- .../src/font}/lv_font_montserrat_8.c | 365 +- .../src/font}/lv_font_simsun_16_cjk.c | 11986 ++++++++++++++-- .../src/font}/lv_font_unscii_16.c | 234 +- .../src/font}/lv_font_unscii_8.c | 234 +- .../src/font}/lv_symbol_def.h | 13 +- lib/libesp32_lvgl/LVGL8/src/gpu/lv_gpu.mk | 9 + .../lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_pxp.c | 140 +- .../lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_pxp.h | 31 +- .../src/gpu}/lv_gpu_nxp_pxp_osa.c | 19 +- .../src/gpu}/lv_gpu_nxp_pxp_osa.h | 4 +- .../LVGL8/src/gpu/lv_gpu_nxp_vglite.c | 759 + .../src/gpu}/lv_gpu_nxp_vglite.h | 48 +- .../src/gpu}/lv_gpu_stm32_dma2d.c | 40 +- .../src/gpu}/lv_gpu_stm32_dma2d.h | 8 +- lib/libesp32_lvgl/LVGL8/src/hal/lv_hal.h | 48 + lib/libesp32_lvgl/LVGL8/src/hal/lv_hal.mk | 8 + .../lv_hal => LVGL8/src/hal}/lv_hal_disp.c | 327 +- .../lv_hal => LVGL8/src/hal}/lv_hal_disp.h | 203 +- .../lv_hal => LVGL8/src/hal}/lv_hal_indev.c | 81 +- .../lv_hal => LVGL8/src/hal}/lv_hal_indev.h | 148 +- .../lv_hal => LVGL8/src/hal}/lv_hal_tick.c | 12 +- .../lv_hal => LVGL8/src/hal}/lv_hal_tick.h | 2 +- .../src/lv_api_map.h} | 26 +- .../LVGL8/src/lv_conf_internal.h | 1526 ++ lib/libesp32_lvgl/LVGL8/src/lv_conf_kconfig.h | 147 + lib/libesp32_lvgl/{LVGL => LVGL8}/src/lvgl.h | 2 +- .../src/lv_misc => LVGL8/src/misc}/lv_anim.c | 311 +- .../src/lv_misc => LVGL8/src/misc}/lv_anim.h | 266 +- .../src/lv_misc => LVGL8/src/misc}/lv_area.c | 159 +- .../src/lv_misc => LVGL8/src/misc}/lv_area.h | 102 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_assert.h | 78 + .../src/lv_misc => LVGL8/src/misc}/lv_async.c | 18 +- .../src/lv_misc => LVGL8/src/misc}/lv_async.h | 6 +- .../src/lv_misc => LVGL8/src/misc}/lv_bidi.c | 164 +- .../src/lv_misc => LVGL8/src/misc}/lv_bidi.h | 38 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_color.c | 371 + .../src/lv_misc => LVGL8/src/misc}/lv_color.h | 144 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_fs.c | 382 + .../src/lv_misc => LVGL8/src/misc}/lv_fs.h | 81 +- .../src/lv_misc => LVGL8/src/misc}/lv_gc.c | 4 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_gc.h | 92 + .../src/lv_misc => LVGL8/src/misc}/lv_ll.c | 36 +- .../src/lv_misc => LVGL8/src/misc}/lv_ll.h | 7 +- .../src/lv_misc => LVGL8/src/misc}/lv_log.c | 26 +- .../src/lv_misc => LVGL8/src/misc}/lv_log.h | 29 +- .../src/lv_misc => LVGL8/src/misc}/lv_math.c | 39 +- .../src/lv_misc => LVGL8/src/misc}/lv_math.h | 64 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_mem.c | 543 + .../src/lv_misc => LVGL8/src/misc}/lv_mem.h | 58 +- .../src/lv_misc => LVGL8/src/misc}/lv_misc.mk | 32 +- .../lv_misc => LVGL8/src/misc}/lv_printf.c | 37 +- .../lv_misc => LVGL8/src/misc}/lv_printf.h | 4 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_style.c | 285 + lib/libesp32_lvgl/LVGL8/src/misc/lv_style.h | 472 + .../LVGL8/src/misc/lv_style_gen.c | 714 + .../LVGL8/src/misc/lv_style_gen.h | 801 ++ .../src/lv_misc => LVGL8/src/misc}/lv_templ.c | 4 +- .../src/lv_misc => LVGL8/src/misc}/lv_templ.h | 2 +- lib/libesp32_lvgl/LVGL8/src/misc/lv_timer.c | 344 + lib/libesp32_lvgl/LVGL8/src/misc/lv_timer.h | 167 + lib/libesp32_lvgl/LVGL8/src/misc/lv_tlsf.c | 1288 ++ lib/libesp32_lvgl/LVGL8/src/misc/lv_tlsf.h | 95 + .../src/lv_misc => LVGL8/src/misc}/lv_txt.c | 184 +- .../src/lv_misc => LVGL8/src/misc}/lv_txt.h | 90 +- .../lv_misc => LVGL8/src/misc}/lv_txt_ap.c | 16 +- .../lv_misc => LVGL8/src/misc}/lv_txt_ap.h | 15 +- .../src/lv_misc => LVGL8/src/misc}/lv_types.h | 8 +- .../src/lv_misc => LVGL8/src/misc}/lv_utils.c | 37 - .../src/lv_misc => LVGL8/src/misc}/lv_utils.h | 9 +- lib/libesp32_lvgl/LVGL8/src/widgets/lv_arc.c | 974 ++ lib/libesp32_lvgl/LVGL8/src/widgets/lv_arc.h | 230 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_bar.c | 593 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_bar.h | 156 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_btn.c | 72 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_btn.h | 56 + .../LVGL8/src/widgets/lv_btnmatrix.c | 975 ++ .../LVGL8/src/widgets/lv_btnmatrix.h | 215 + .../src/widgets}/lv_canvas.c | 707 +- .../src/widgets}/lv_canvas.h | 100 +- .../LVGL8/src/widgets/lv_checkbox.c | 266 + .../LVGL8/src/widgets/lv_checkbox.h | 89 + .../LVGL8/src/widgets/lv_dropdown.c | 1060 ++ .../LVGL8/src/widgets/lv_dropdown.h | 240 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_img.c | 648 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_img.h | 192 + .../LVGL8/src/widgets/lv_label.c | 1259 ++ .../LVGL8/src/widgets/lv_label.h | 245 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_line.c | 200 + lib/libesp32_lvgl/LVGL8/src/widgets/lv_line.h | 93 + .../LVGL8/src/widgets/lv_objx_templ.c | 140 + .../LVGL8/src/widgets/lv_objx_templ.h | 81 + .../LVGL8/src/widgets/lv_roller.c | 767 + .../LVGL8/src/widgets/lv_roller.h | 133 + .../LVGL8/src/widgets/lv_slider.c | 445 + .../LVGL8/src/widgets/lv_slider.h | 186 + .../LVGL8/src/widgets/lv_switch.c | 188 + .../LVGL8/src/widgets/lv_switch.h | 62 + .../LVGL8/src/widgets/lv_table.c | 901 ++ .../LVGL8/src/widgets/lv_table.h | 202 + .../LVGL8/src/widgets/lv_textarea.c | 1336 ++ .../LVGL8/src/widgets/lv_textarea.h | 342 + .../LVGL8/src/widgets/lv_widgets.mk | 20 + lib/libesp32_lvgl/lv_conf.h | 2 +- lib/libesp32_lvgl/lv_lib_png/src/lodepng.c | 11 +- lib/libesp32_lvgl/lv_lib_png/src/lodepng.h | 6 +- lib/libesp32_lvgl/lv_lib_png/src/lv_png.c | 44 +- tasmota/berry/lvgl_examples/buttons_demo.be | 101 + tasmota/berry/lvgl_examples/drawing_1.be | 108 +- tasmota/berry/lvgl_examples/drawing_2.be | 96 +- tasmota/berry/lvgl_examples/lvgl_demo.be | 61 +- tasmota/berry/lvgl_examples/widget_test.be | 150 + tasmota/berry/modules/ctypes.be | 33 +- tasmota/berry/modules/lvgl_ctypes.be | 272 +- tasmota/lvgl_berry/be_lv_c_mapping.h | 1941 +-- tasmota/lvgl_berry/be_lv_defines.h | 107 - tasmota/lvgl_berry/tasmota_lv_conf.h | 988 +- tasmota/lvgl_berry/tasmota_lv_conf8.h | 524 + tasmota/my_user_config.h | 58 +- tasmota/xdrv_10_scripter.ino | 131 +- tasmota/xdrv_52_2_berry_native.ino | 126 +- tasmota/xdrv_52_3_berry_lvgl.ino | 247 +- tasmota/xdrv_52_7_berry_embedded.ino | 32 +- tasmota/xdrv_54_lvgl.ino | 50 +- tools/lv_berry/convert.py | 254 +- tools/lv_berry/lv_enum.h | 925 +- tools/lv_berry/lv_funcs.h | 901 ++ tools/lv_berry/lv_pre_style.h | 280 + tools/lv_berry/lv_widgets.h | 1251 -- tools/lv_berry/preprocessor.py | 141 +- 504 files changed, 81594 insertions(+), 89196 deletions(-) delete mode 100644 lib/libesp32/Berry/default/be_lvgl_cb.c create mode 100644 lib/libesp32/Berry/default/be_lvgl_glob_lib.c create mode 100644 lib/libesp32/Berry/default/embedded/lvgl_glob.be delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_colorwheel.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h create mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_meter.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_lv_design_cb.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_lv_event_cb.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_lv_gauge_format_cb.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_lv_group_focus_cb.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_lv_signal_cb.h delete mode 100644 lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h delete mode 100644 lib/libesp32/Berry/tests/introspect_vcall.be delete mode 100644 lib/libesp32_lvgl/LVGL/CHANGELOG.md delete mode 100644 lib/libesp32_lvgl/LVGL/CMakeLists.txt delete mode 100644 lib/libesp32_lvgl/LVGL/Kconfig delete mode 100644 lib/libesp32_lvgl/LVGL/component.mk delete mode 100644 lib/libesp32_lvgl/LVGL/docs/CODE_OF_CONDUCT.md delete mode 100644 lib/libesp32_lvgl/LVGL/docs/CODING_STYLE.md delete mode 100644 lib/libesp32_lvgl/LVGL/docs/CONTRIBUTING.md delete mode 100644 lib/libesp32_lvgl/LVGL/docs/ROADMAP.md delete mode 100644 lib/libesp32_lvgl/LVGL/examples/LVGL_Arduino.ino delete mode 100644 lib/libesp32_lvgl/LVGL/examples/porting/lv_port_disp_template.c delete mode 100644 lib/libesp32_lvgl/LVGL/examples/porting/lv_port_fs_template.c delete mode 100644 lib/libesp32_lvgl/LVGL/examples/porting/lv_port_indev_template.c delete mode 100644 lib/libesp32_lvgl/LVGL/library.json delete mode 100644 lib/libesp32_lvgl/LVGL/lvgl.h delete mode 100644 lib/libesp32_lvgl/LVGL/scripts/Doxyfile delete mode 100644 lib/libesp32_lvgl/LVGL/scripts/built_in_font/DejaVuSans.ttf delete mode 100644 lib/libesp32_lvgl/LVGL/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff delete mode 100644 lib/libesp32_lvgl/LVGL/scripts/built_in_font/Montserrat-Medium.ttf delete mode 100644 lib/libesp32_lvgl/LVGL/scripts/built_in_font/SimSun.woff delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/built_in_font/built_in_font_gen.py delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/built_in_font/generate_all.py delete mode 100644 lib/libesp32_lvgl/LVGL/scripts/code-format.cfg delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/code-format.sh delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/cppcheck_run.sh delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/infer_run.sh delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/lv_conf_checker.py delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/release/com.py delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/release/dev.py delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/release/main.py delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/release/proj.py delete mode 100755 lib/libesp32_lvgl/LVGL/scripts/release/release.py delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_api_map.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_conf_internal.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_conf_kconfig.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_core.mk delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_indev.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_obj.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_obj.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_obj_style_dec.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_style.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_core/lv_style.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_draw/lv_draw_arc.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_draw/lv_draw_arc.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_font/lv_font_montserrat_12_subpx.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_gpu/lv_gpu.mk delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_gpu/lv_gpu_nxp_vglite.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_hal/lv_hal.mk delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_color.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_debug.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_debug.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_fs.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_gc.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_mem.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_task.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_misc/lv_task.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_empty.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_empty.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_material.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_material.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_mono.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_mono.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_template.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_theme_template.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_themes/lv_themes.mk delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_arc.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_arc.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_bar.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_bar.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_btn.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_btn.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_btnmatrix.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_btnmatrix.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_calendar.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_calendar.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_chart.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_chart.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_checkbox.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_checkbox.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_cont.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_cont.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_cpicker.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_cpicker.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_dropdown.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_dropdown.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_gauge.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_gauge.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_img.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_img.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_imgbtn.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_imgbtn.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_keyboard.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_label.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_label.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_led.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_line.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_line.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_linemeter.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_linemeter.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_list.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_list.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_msgbox.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_msgbox.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_objmask.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_objmask.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_objx_templ.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_objx_templ.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_page.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_page.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_roller.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_roller.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_slider.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_slider.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_spinbox.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_spinner.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_spinner.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_switch.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_switch.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_table.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_table.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_tabview.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_tabview.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_textarea.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_textarea.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_tileview.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_tileview.h delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_widgets.mk delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_win.c delete mode 100644 lib/libesp32_lvgl/LVGL/src/lv_widgets/lv_win.h delete mode 100644 lib/libesp32_lvgl/LVGL/tests/Makefile delete mode 100755 lib/libesp32_lvgl/LVGL/tests/build.py delete mode 100644 lib/libesp32_lvgl/LVGL/tests/font_1.fnt delete mode 100644 lib/libesp32_lvgl/LVGL/tests/font_2.fnt delete mode 100644 lib/libesp32_lvgl/LVGL/tests/font_3.fnt delete mode 100644 lib/libesp32_lvgl/LVGL/tests/icon.png delete mode 100644 lib/libesp32_lvgl/LVGL/tests/icon2.png delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_assert.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_assert.h delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_conf.h delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_core/lv_test_font_loader.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_core/lv_test_font_loader.h delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_core/lv_test_obj.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_core/lv_test_obj.h delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_core/lv_test_style.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_core/lv_test_style.h delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_fonts/font_1.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_fonts/font_2.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_fonts/font_3.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_main.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_ref_imgs/lv_test_img32_label_1.png delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_widgets/lv_test_label.c delete mode 100644 lib/libesp32_lvgl/LVGL/tests/lv_test_widgets/lv_test_label.h delete mode 100644 lib/libesp32_lvgl/LVGL/zephyr/module.yml create mode 100644 lib/libesp32_lvgl/LVGL8/Kconfig rename lib/libesp32_lvgl/{LVGL => LVGL8}/LICENCE.txt (100%) rename lib/libesp32_lvgl/{LVGL => LVGL8}/README.md (98%) create mode 100644 lib/libesp32_lvgl/LVGL8/library.json create mode 100644 lib/libesp32_lvgl/LVGL8/library.properties create mode 100644 lib/libesp32_lvgl/LVGL8/lv_conf_template.h create mode 100644 lib/libesp32_lvgl/LVGL8/lvgl.h create mode 100644 lib/libesp32_lvgl/LVGL8/lvgl.mk create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_core.mk rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_disp.c (75%) rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_disp.h (75%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_event.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_event.h rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_group.c (55%) rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_group.h (61%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_indev.c rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_indev.h (71%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_indev_scroll.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_indev_scroll.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_class.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_class.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_draw.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_draw.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_pos.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_pos.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_scroll.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_scroll.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_style.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_style.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_style_gen.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_style_gen.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_tree.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_obj_tree.h rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_refr.c (51%) rename lib/libesp32_lvgl/{LVGL/src/lv_core => LVGL8/src/core}/lv_refr.h (87%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_theme.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/core/lv_theme.h rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw.h (89%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw.mk (61%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/draw/lv_draw_arc.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/draw/lv_draw_arc.h rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_blend.c (85%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_blend.h (82%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_img.c (89%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_img.h (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_label.c (84%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_label.h (76%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_line.c (76%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_line.h (90%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_mask.c (89%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_mask.h (87%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_rect.c (71%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_rect.h (53%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_triangle.c (83%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_draw_triangle.h (98%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_img_buf.c (73%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_img_buf.h (74%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_img_cache.c (82%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_img_cache.h (85%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_img_decoder.c (80%) rename lib/libesp32_lvgl/{LVGL/src/lv_draw => LVGL8/src/draw}/lv_img_decoder.h (88%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/extra.mk create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/layouts/flex/lv_flex.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/layouts/flex/lv_flex.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/layouts/grid/lv_grid.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/layouts/grid/lv_grid.h rename lib/libesp32_lvgl/{LVGL/examples/porting/lv_port_disp_template.h => LVGL8/src/extra/layouts/lv_layouts.h} (58%) rename lib/libesp32_lvgl/{LVGL/tests/lv_test_core/lv_test_core.c => LVGL8/src/extra/lv_extra.c} (57%) rename lib/libesp32_lvgl/{LVGL/src/lv_hal/lv_hal.h => LVGL8/src/extra/lv_extra.h} (71%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/themes/basic/lv_theme_basic.c rename lib/libesp32_lvgl/{LVGL/examples/porting/lv_port_indev_template.h => LVGL8/src/extra/themes/basic/lv_theme_basic.h} (52%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/themes/default/lv_theme_default.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/themes/default/lv_theme_default.h rename lib/libesp32_lvgl/{LVGL/tests/lv_test_core/lv_test_core.h => LVGL8/src/extra/themes/lv_themes.h} (66%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/themes/mono/lv_theme_mono.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/themes/mono/lv_theme_mono.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/animimg/lv_animimg.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/animimg/lv_animimg.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/calendar/lv_calendar.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/calendar/lv_calendar.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/calendar/lv_calendar_header_arrow.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/calendar/lv_calendar_header_arrow.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/calendar/lv_calendar_header_dropdown.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/calendar/lv_calendar_header_dropdown.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/chart/lv_chart.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/chart/lv_chart.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/colorwheel/lv_colorwheel.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/colorwheel/lv_colorwheel.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/imgbtn/lv_imgbtn.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/imgbtn/lv_imgbtn.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/keyboard/lv_keyboard.c rename lib/libesp32_lvgl/{LVGL/src/lv_widgets => LVGL8/src/extra/widgets/keyboard}/lv_keyboard.h (58%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/led/lv_led.c rename lib/libesp32_lvgl/{LVGL/src/lv_widgets => LVGL8/src/extra/widgets/led}/lv_led.h (68%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/list/lv_list.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/list/lv_list.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/lv_widgets.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/meter/lv_meter.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/meter/lv_meter.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/msgbox/lv_msgbox.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/msgbox/lv_msgbox.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/span/lv_span.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/span/lv_span.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/spinbox/lv_spinbox.c rename lib/libesp32_lvgl/{LVGL/src/lv_widgets => LVGL8/src/extra/widgets/spinbox}/lv_spinbox.h (59%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/spinner/lv_spinner.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/spinner/lv_spinner.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/tabview/lv_tabview.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/tabview/lv_tabview.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/tileview/lv_tileview.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/tileview/lv_tileview.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/win/lv_win.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/extra/widgets/win/lv_win.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/font/korean.ttf rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font.c (96%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font.h (86%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font.mk (85%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_dejavu_16_persian_hebrew.c (90%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_fmt_txt.c (89%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_fmt_txt.h (92%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_loader.c (91%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_loader.h (92%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_10.c (88%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_12.c (90%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/font/lv_font_montserrat_12_subpx.c rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_14.c (91%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_16.c (92%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_18.c (92%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_20.c (93%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_22.c (93%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_24.c (94%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_26.c (94%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_28.c (94%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_28_compressed.c (93%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_30.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_32.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_34.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_36.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_38.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_40.c (96%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_42.c (96%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_44.c (96%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_46.c (96%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_48.c (96%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_montserrat_8.c (86%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_simsun_16_cjk.c (52%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_unscii_16.c (88%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_font_unscii_8.c (83%) rename lib/libesp32_lvgl/{LVGL/src/lv_font => LVGL8/src/font}/lv_symbol_def.h (93%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/gpu/lv_gpu.mk rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_pxp.c (75%) rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_pxp.h (90%) rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_pxp_osa.c (92%) rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_pxp_osa.h (95%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/gpu/lv_gpu_nxp_vglite.c rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_nxp_vglite.h (78%) rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_stm32_dma2d.c (87%) rename lib/libesp32_lvgl/{LVGL/src/lv_gpu => LVGL8/src/gpu}/lv_gpu_stm32_dma2d.h (96%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/hal/lv_hal.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/hal/lv_hal.mk rename lib/libesp32_lvgl/{LVGL/src/lv_hal => LVGL8/src/hal}/lv_hal_disp.c (52%) rename lib/libesp32_lvgl/{LVGL/src/lv_hal => LVGL8/src/hal}/lv_hal_disp.h (57%) rename lib/libesp32_lvgl/{LVGL/src/lv_hal => LVGL8/src/hal}/lv_hal_indev.c (62%) rename lib/libesp32_lvgl/{LVGL/src/lv_hal => LVGL8/src/hal}/lv_hal_indev.h (67%) rename lib/libesp32_lvgl/{LVGL/src/lv_hal => LVGL8/src/hal}/lv_hal_tick.c (85%) rename lib/libesp32_lvgl/{LVGL/src/lv_hal => LVGL8/src/hal}/lv_hal_tick.h (98%) rename lib/libesp32_lvgl/{LVGL/examples/porting/lv_port_fs_template.h => LVGL8/src/lv_api_map.h} (52%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/lv_conf_internal.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/lv_conf_kconfig.h rename lib/libesp32_lvgl/{LVGL => LVGL8}/src/lvgl.h (97%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_anim.c (50%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_anim.h (51%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_area.c (68%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_area.h (65%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_assert.h rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_async.c (71%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_async.h (87%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_bidi.c (78%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_bidi.h (75%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_color.c rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_color.h (81%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_fs.c rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_fs.h (74%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_gc.c (84%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_gc.h rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_ll.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_ll.h (94%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_log.c (80%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_log.h (77%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_math.c (88%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_math.h (68%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_mem.c rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_mem.h (74%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_misc.mk (53%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_printf.c (97%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_printf.h (97%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_style.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_style.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_style_gen.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_style_gen.h rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_templ.c (85%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_templ.h (96%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_timer.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_timer.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_tlsf.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/misc/lv_tlsf.h rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_txt.c (83%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_txt.h (69%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_txt_ap.c (95%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_txt_ap.h (71%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_types.h (87%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_utils.c (68%) rename lib/libesp32_lvgl/{LVGL/src/lv_misc => LVGL8/src/misc}/lv_utils.h (83%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_arc.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_arc.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_bar.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_bar.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_btn.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_btn.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_btnmatrix.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_btnmatrix.h rename lib/libesp32_lvgl/{LVGL/src/lv_widgets => LVGL8/src/widgets}/lv_canvas.c (50%) rename lib/libesp32_lvgl/{LVGL/src/lv_widgets => LVGL8/src/widgets}/lv_canvas.h (73%) create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_checkbox.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_checkbox.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_dropdown.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_dropdown.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_img.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_img.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_label.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_label.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_line.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_line.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_objx_templ.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_objx_templ.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_roller.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_roller.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_slider.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_slider.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_switch.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_switch.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_table.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_table.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_textarea.c create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_textarea.h create mode 100644 lib/libesp32_lvgl/LVGL8/src/widgets/lv_widgets.mk create mode 100644 tasmota/berry/lvgl_examples/buttons_demo.be create mode 100644 tasmota/berry/lvgl_examples/widget_test.be delete mode 100644 tasmota/lvgl_berry/be_lv_defines.h create mode 100644 tasmota/lvgl_berry/tasmota_lv_conf8.h create mode 100644 tools/lv_berry/lv_funcs.h create mode 100644 tools/lv_berry/lv_pre_style.h delete mode 100644 tools/lv_berry/lv_widgets.h diff --git a/CHANGELOG.md b/CHANGELOG.md index a1b9bc5f7..9095fe62b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Development ## [9.5.0.9] +### Changed +- LVGL updated to v8.0.2 **breaking changes** ## [9.5.0.8] 20210927 ### Added diff --git a/lib/libesp32/Berry/default/be_ctypes.c b/lib/libesp32/Berry/default/be_ctypes.c index 7d81b64ca..18e655d8b 100644 --- a/lib/libesp32/Berry/default/be_ctypes.c +++ b/lib/libesp32/Berry/default/be_ctypes.c @@ -34,14 +34,13 @@ int32_t bin_search_ctypes(const char * needle, const void * table, size_t elt_si } } - enum { - ctypes_i32 = 14, - ctypes_i16 = 12, - ctypes_i8 = 11, - ctypes_u32 = 4, - ctypes_u16 = 2, - ctypes_u8 = 1, + ctypes_i32 = 14, + ctypes_i16 = 12, + ctypes_i8 = 11, + ctypes_u32 = 4, + ctypes_u16 = 2, + ctypes_u8 = 1, // big endian ctypes_be_i32 = -14, @@ -52,10 +51,14 @@ enum { ctypes_be_u8 = -1, // floating point - ctypes_float = 5, - ctypes_double = 10, + ctypes_float = 5, + ctypes_double = 10, - ctypes_bf = 0, //bif-field + // pointer + ctypes_ptr32 = 9, + ctypes_ptr64 = -9, + + ctypes_bf = 0, //bif-field }; typedef struct be_ctypes_structure_item_t { @@ -93,12 +96,17 @@ typedef struct be_ctypes_classes_t { // If no arg: allocate a bytes() structure of the right size, filled with zeroes // Arg1 is instance self // If arg 2 is int or comptr (and not null): create a mapped bytes buffer to read/write at a specific location (can be copied if need a snapshot) +// If arg 2 is a bytes object, consider it's comptr and map the buffer (it's basically casting). WARNING no size check is done so you can easily corrupt memory int be_ctypes_init(bvm *vm) { int argc = be_top(vm); void * src_data = NULL; - if (argc > 1 && (be_isint(vm, 2) || be_iscomptr(vm, 2))) { + if (argc > 1 && (be_isint(vm, 2) || be_iscomptr(vm, 2) || be_isbytes(vm, 2))) { if (be_iscomptr(vm, 2)) { src_data = be_tocomptr(vm, 2); + } else if (be_isbytes(vm, 2)) { + be_getmember(vm, 2, ".p"); + src_data = be_tocomptr(vm, -1); + be_pop(vm, 1); } else { src_data = (void*) be_toint(vm, 2); } @@ -213,6 +221,17 @@ int be_ctypes_member(bvm *vm) { be_pop(vm, 1); float *fval = (float*) &val; // type wizardry be_pushreal(vm, *fval); + } else if (ctypes_ptr32 == member->type) { + be_getmember(vm, 1, "geti"); // self.get or self.geti + be_pushvalue(vm, 1); // push self + be_pushint(vm, member->offset_bytes); + be_pushint(vm, 4); // size is 4 bytes TODO 32 bits only supported here + be_call(vm, 3); + be_pop(vm, 3); + // convert to ptr + int32_t val = be_toint(vm, -1); + be_pop(vm, 1); + be_pushcomptr(vm, (void*) val); } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian @@ -318,6 +337,23 @@ int be_ctypes_setmember(bvm *vm) { be_call(vm, 4); be_pop(vm, 5); be_return_nil(vm); + } else if (ctypes_ptr32 == member->type) { + // Note: 64 bits pointer not supported + int32_t ptr; + if (be_iscomptr(vm, 3)) { + ptr = (int32_t) be_tocomptr(vm, 3); + } else { + ptr = be_toint(vm, 3); + } + // set + be_getmember(vm, 1, "seti"); + be_pushvalue(vm, 1); // push self + be_pushint(vm, member->offset_bytes); + be_pushint(vm, ptr); + be_pushint(vm, 4); // size is 4 bytes - 64 bits not suppported + be_call(vm, 4); + be_pop(vm, 5); + be_return_nil(vm); } else { // general int support int size = member->type; // eventually 1/2/4, positive if little endian, negative if big endian diff --git a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c index ef5e964b3..90db5c10f 100644 --- a/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c +++ b/lib/libesp32/Berry/default/be_energy_ctypes_definitions.c @@ -16,72 +16,72 @@ const be_ctypes_structure_t be_energy_struct = { 66, /* number of elements */ be_ctypes_instance_mappings, (const be_ctypes_structure_item_t[66]) { - { "active_power", 24, 0, 0, 5, 0 }, - { "active_power_2", 28, 0, 0, 5, 0 }, - { "active_power_3", 32, 0, 0, 5, 0 }, - { "apparent_power", 36, 0, 0, 5, 0 }, - { "apparent_power_2", 40, 0, 0, 5, 0 }, - { "apparent_power_3", 44, 0, 0, 5, 0 }, - { "command_code", 125, 0, 0, 1, 0 }, - { "current", 12, 0, 0, 5, 0 }, - { "current_2", 16, 0, 0, 5, 0 }, - { "current_3", 20, 0, 0, 5, 0 }, - { "current_available", 135, 0, 0, 1, 0 }, - { "daily", 100, 0, 0, 5, 0 }, - { "data_valid", 126, 0, 0, 1, 0 }, - { "data_valid_2", 127, 0, 0, 1, 0 }, - { "data_valid_3", 128, 0, 0, 1, 0 }, - { "export_active", 84, 0, 0, 5, 0 }, - { "export_active_2", 88, 0, 0, 5, 0 }, - { "export_active_3", 92, 0, 0, 5, 0 }, - { "fifth_second", 124, 0, 0, 1, 0 }, - { "frequency", 72, 0, 0, 5, 0 }, - { "frequency_2", 76, 0, 0, 5, 0 }, - { "frequency_3", 80, 0, 0, 5, 0 }, - { "frequency_common", 131, 0, 0, 1, 0 }, - { "max_current_flag", 162, 0, 0, 1, 0 }, - { "max_energy_state", 169, 0, 0, 1, 0 }, - { "max_power_flag", 158, 0, 0, 1, 0 }, - { "max_voltage_flag", 160, 0, 0, 1, 0 }, - { "min_current_flag", 161, 0, 0, 1, 0 }, - { "min_power_flag", 157, 0, 0, 1, 0 }, - { "min_voltage_flag", 159, 0, 0, 1, 0 }, - { "mplh_counter", 164, 0, 0, 2, 0 }, - { "mplr_counter", 168, 0, 0, 1, 0 }, - { "mplw_counter", 166, 0, 0, 2, 0 }, - { "period", 120, 0, 0, 4, 0 }, - { "phase_count", 129, 0, 0, 1, 0 }, - { "power_factor", 60, 0, 0, 5, 0 }, - { "power_factor_2", 64, 0, 0, 5, 0 }, - { "power_factor_3", 68, 0, 0, 5, 0 }, - { "power_history_0", 138, 0, 0, 2, 0 }, - { "power_history_0_2", 140, 0, 0, 2, 0 }, - { "power_history_0_3", 142, 0, 0, 2, 0 }, - { "power_history_1", 144, 0, 0, 2, 0 }, - { "power_history_1_2", 146, 0, 0, 2, 0 }, - { "power_history_1_3", 148, 0, 0, 2, 0 }, - { "power_history_2", 150, 0, 0, 2, 0 }, - { "power_history_2_2", 152, 0, 0, 2, 0 }, - { "power_history_2_3", 154, 0, 0, 2, 0 }, - { "power_on", 137, 0, 0, 1, 0 }, - { "power_steady_counter", 156, 0, 0, 1, 0 }, - { "reactive_power", 48, 0, 0, 5, 0 }, - { "reactive_power_2", 52, 0, 0, 5, 0 }, - { "reactive_power_3", 56, 0, 0, 5, 0 }, - { "start_energy", 96, 0, 0, 5, 0 }, - { "stuff", 163, 0, 0, 1, 0 }, - { "today_delta_kwh", 108, 0, 0, 4, 0 }, - { "today_kwh", 116, 0, 0, 4, 0 }, - { "today_offset_init_kwh", 133, 0, 0, 1, 0 }, - { "today_offset_kwh", 112, 0, 0, 4, 0 }, - { "total", 104, 0, 0, 5, 0 }, - { "type_dc", 136, 0, 0, 1, 0 }, - { "use_overtemp", 132, 0, 0, 1, 0 }, - { "voltage", 0, 0, 0, 5, 0 }, - { "voltage_2", 4, 0, 0, 5, 0 }, - { "voltage_3", 8, 0, 0, 5, 0 }, - { "voltage_available", 134, 0, 0, 1, 0 }, - { "voltage_common", 130, 0, 0, 1, 0 }, + { "active_power", 24, 0, 0, ctypes_float, 0 }, + { "active_power_2", 28, 0, 0, ctypes_float, 0 }, + { "active_power_3", 32, 0, 0, ctypes_float, 0 }, + { "apparent_power", 36, 0, 0, ctypes_float, 0 }, + { "apparent_power_2", 40, 0, 0, ctypes_float, 0 }, + { "apparent_power_3", 44, 0, 0, ctypes_float, 0 }, + { "command_code", 125, 0, 0, ctypes_u8, 0 }, + { "current", 12, 0, 0, ctypes_float, 0 }, + { "current_2", 16, 0, 0, ctypes_float, 0 }, + { "current_3", 20, 0, 0, ctypes_float, 0 }, + { "current_available", 135, 0, 0, ctypes_u8, 0 }, + { "daily", 100, 0, 0, ctypes_float, 0 }, + { "data_valid", 126, 0, 0, ctypes_u8, 0 }, + { "data_valid_2", 127, 0, 0, ctypes_u8, 0 }, + { "data_valid_3", 128, 0, 0, ctypes_u8, 0 }, + { "export_active", 84, 0, 0, ctypes_float, 0 }, + { "export_active_2", 88, 0, 0, ctypes_float, 0 }, + { "export_active_3", 92, 0, 0, ctypes_float, 0 }, + { "fifth_second", 124, 0, 0, ctypes_u8, 0 }, + { "frequency", 72, 0, 0, ctypes_float, 0 }, + { "frequency_2", 76, 0, 0, ctypes_float, 0 }, + { "frequency_3", 80, 0, 0, ctypes_float, 0 }, + { "frequency_common", 131, 0, 0, ctypes_u8, 0 }, + { "max_current_flag", 162, 0, 0, ctypes_u8, 0 }, + { "max_energy_state", 169, 0, 0, ctypes_u8, 0 }, + { "max_power_flag", 158, 0, 0, ctypes_u8, 0 }, + { "max_voltage_flag", 160, 0, 0, ctypes_u8, 0 }, + { "min_current_flag", 161, 0, 0, ctypes_u8, 0 }, + { "min_power_flag", 157, 0, 0, ctypes_u8, 0 }, + { "min_voltage_flag", 159, 0, 0, ctypes_u8, 0 }, + { "mplh_counter", 164, 0, 0, ctypes_u16, 0 }, + { "mplr_counter", 168, 0, 0, ctypes_u8, 0 }, + { "mplw_counter", 166, 0, 0, ctypes_u16, 0 }, + { "period", 120, 0, 0, ctypes_u32, 0 }, + { "phase_count", 129, 0, 0, ctypes_u8, 0 }, + { "power_factor", 60, 0, 0, ctypes_float, 0 }, + { "power_factor_2", 64, 0, 0, ctypes_float, 0 }, + { "power_factor_3", 68, 0, 0, ctypes_float, 0 }, + { "power_history_0", 138, 0, 0, ctypes_u16, 0 }, + { "power_history_0_2", 140, 0, 0, ctypes_u16, 0 }, + { "power_history_0_3", 142, 0, 0, ctypes_u16, 0 }, + { "power_history_1", 144, 0, 0, ctypes_u16, 0 }, + { "power_history_1_2", 146, 0, 0, ctypes_u16, 0 }, + { "power_history_1_3", 148, 0, 0, ctypes_u16, 0 }, + { "power_history_2", 150, 0, 0, ctypes_u16, 0 }, + { "power_history_2_2", 152, 0, 0, ctypes_u16, 0 }, + { "power_history_2_3", 154, 0, 0, ctypes_u16, 0 }, + { "power_on", 137, 0, 0, ctypes_u8, 0 }, + { "power_steady_counter", 156, 0, 0, ctypes_u8, 0 }, + { "reactive_power", 48, 0, 0, ctypes_float, 0 }, + { "reactive_power_2", 52, 0, 0, ctypes_float, 0 }, + { "reactive_power_3", 56, 0, 0, ctypes_float, 0 }, + { "start_energy", 96, 0, 0, ctypes_float, 0 }, + { "stuff", 163, 0, 0, ctypes_u8, 0 }, + { "today_delta_kwh", 108, 0, 0, ctypes_u32, 0 }, + { "today_kwh", 116, 0, 0, ctypes_u32, 0 }, + { "today_offset_init_kwh", 133, 0, 0, ctypes_u8, 0 }, + { "today_offset_kwh", 112, 0, 0, ctypes_u32, 0 }, + { "total", 104, 0, 0, ctypes_float, 0 }, + { "type_dc", 136, 0, 0, ctypes_u8, 0 }, + { "use_overtemp", 132, 0, 0, ctypes_u8, 0 }, + { "voltage", 0, 0, 0, ctypes_float, 0 }, + { "voltage_2", 4, 0, 0, ctypes_float, 0 }, + { "voltage_3", 8, 0, 0, ctypes_float, 0 }, + { "voltage_available", 134, 0, 0, ctypes_u8, 0 }, + { "voltage_common", 130, 0, 0, ctypes_u8, 0 }, }}; static const char * be_ctypes_instance_mappings[] = { diff --git a/lib/libesp32/Berry/default/be_lvgl_cb.c b/lib/libesp32/Berry/default/be_lvgl_cb.c deleted file mode 100644 index f226b2679..000000000 --- a/lib/libesp32/Berry/default/be_lvgl_cb.c +++ /dev/null @@ -1,154 +0,0 @@ -/******************************************************************** - * Tasmota LVGL callbacks - * - *******************************************************************/ -#include "be_constobj.h" - -extern int lv0_init(bvm *vm); -extern int lvx_tostring(bvm *vm); -extern int be_call_c_func(bvm *vm, void * func, const char * return_type, const char * arg_type); - - -int lv_cb_call_any(bvm *vm, const char * return_type, const char * arg_type) { - int argc = be_top(vm); - // get pointer to callback - be_getmember(vm, 1, ".p"); - void * cb = be_tocomptr(vm, -1); - be_pop(vm, 1); - // remove first argument which is the instance `self` - for (int i=1; i", 607256038, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 5]) { /* code */ + 0x68040000, // 0000 GETUPV R1 U0 + 0x8C040300, // 0001 GETMET R1 R1 K0 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C040400, // 0003 CALL R1 2 + 0x80040200, // 0004 RET 1 R1 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_string("lv_event_cb", -1814236280, 11), + /* K1 */ be_nested_string("cb_event_closure", -466699971, 16), + /* K2 */ be_nested_string("event_cb", -1166269279, 8), + /* K3 */ be_nested_string("tasmota", 424643812, 7), + /* K4 */ be_nested_string("gen_cb", -1049739745, 6), + /* K5 */ be_nested_string("register_obj", -312352526, 12), + /* K6 */ be_nested_string("null_cb", -1961430836, 7), + /* K7 */ be_nested_string("cb_do_nothing", 1488730702, 13), + }), + (be_nested_const_str("gen_cb", -1049739745, 6)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[41]) { /* code */ + 0x1C140300, // 0000 EQ R5 R1 K0 + 0x78160018, // 0001 JMPF R5 #001B + 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x4C180000, // 0003 LDNIL R6 + 0x1C140A06, // 0004 EQ R5 R5 R6 + 0x78160002, // 0005 JMPF R5 #0009 + 0x60140013, // 0006 GETGBL R5 G19 + 0x7C140000, // 0007 CALL R5 0 + 0x90020205, // 0008 SETMBR R0 K1 R5 + 0x88140102, // 0009 GETMBR R5 R0 K2 + 0x4C180000, // 000A LDNIL R6 + 0x1C140A06, // 000B EQ R5 R5 R6 + 0x78160004, // 000C JMPF R5 #0012 + 0xB8160600, // 000D GETNGBL R5 K3 + 0x8C140B04, // 000E GETMET R5 R5 K4 + 0x841C0000, // 000F CLOSURE R7 P0 + 0x7C140400, // 0010 CALL R5 2 + 0x90020405, // 0011 SETMBR R0 K2 R5 + 0x8C140105, // 0012 GETMET R5 R0 K5 + 0x5C1C0600, // 0013 MOVE R7 R3 + 0x7C140400, // 0014 CALL R5 2 + 0x88140101, // 0015 GETMBR R5 R0 K1 + 0x98140802, // 0016 SETIDX R5 R4 R2 + 0x88140102, // 0017 GETMBR R5 R0 K2 + 0xA0000000, // 0018 CLOSE R0 + 0x80040A00, // 0019 RET 1 R5 + 0x7002000B, // 001A JMP #0027 + 0x88140106, // 001B GETMBR R5 R0 K6 + 0x4C180000, // 001C LDNIL R6 + 0x1C140A06, // 001D EQ R5 R5 R6 + 0x78160004, // 001E JMPF R5 #0024 + 0xB8160600, // 001F GETNGBL R5 K3 + 0x8C140B04, // 0020 GETMET R5 R5 K4 + 0x881C0107, // 0021 GETMBR R7 R0 K7 + 0x7C140400, // 0022 CALL R5 2 + 0x90020C05, // 0023 SETMBR R0 K6 R5 + 0x88140106, // 0024 GETMBR R5 R0 K6 + 0xA0000000, // 0025 CLOSE R0 + 0x80040A00, // 0026 RET 1 R5 + 0xA0000000, // 0027 CLOSE R0 + 0x80000000, // 0028 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: deregister_obj +********************************************************************/ +be_local_closure(deregister_obj, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("cb_obj", 1195696482, 6), + /* K1 */ be_nested_string("remove", -611183107, 6), + /* K2 */ be_nested_string("cb_event_closure", -466699971, 16), + }), + (be_nested_const_str("deregister_obj", -385000303, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[17]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x4C0C0000, // 0001 LDNIL R3 + 0x20080403, // 0002 NE R2 R2 R3 + 0x780A0003, // 0003 JMPF R2 #0008 + 0x88080100, // 0004 GETMBR R2 R0 K0 + 0x8C080501, // 0005 GETMET R2 R2 K1 + 0x5C100200, // 0006 MOVE R4 R1 + 0x7C080400, // 0007 CALL R2 2 + 0x88080102, // 0008 GETMBR R2 R0 K2 + 0x4C0C0000, // 0009 LDNIL R3 + 0x20080403, // 000A NE R2 R2 R3 + 0x780A0003, // 000B JMPF R2 #0010 + 0x88080102, // 000C GETMBR R2 R0 K2 + 0x8C080501, // 000D GETMET R2 R2 K1 + 0x5C100200, // 000E MOVE R4 R1 + 0x7C080400, // 000F CALL R2 2 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: widget_cb +********************************************************************/ +be_local_closure(widget_cb, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 3]) { + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("widget_ctor_impl", 194252479, 16), + }), + (be_nested_const_str("", 607256038, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x8C080500, // 0001 GETMET R2 R2 K0 + 0x5C100000, // 0002 MOVE R4 R0 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 + }) + ), + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("widget_dtor_impl", 520430610, 16), + }), + (be_nested_const_str("", 607256038, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x8C080500, // 0001 GETMET R2 R2 K0 + 0x5C100000, // 0002 MOVE R4 R0 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 + }) + ), + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("widget_event_impl", -2116536735, 17), + }), + (be_nested_const_str("", 607256038, 8)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 6]) { /* code */ + 0x68080000, // 0000 GETUPV R2 U0 + 0x8C080500, // 0001 GETMET R2 R2 K0 + 0x5C100000, // 0002 MOVE R4 R0 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C080600, // 0004 CALL R2 3 + 0x80040400, // 0005 RET 1 R2 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_string("widget_ctor_cb", 876007560, 14), + /* K1 */ be_nested_string("tasmota", 424643812, 7), + /* K2 */ be_nested_string("gen_cb", -1049739745, 6), + /* K3 */ be_nested_string("widget_dtor_cb", -1143421451, 14), + /* K4 */ be_nested_string("widget_event_cb", 1508466754, 15), + /* K5 */ be_nested_string("widget_struct_default", 781673633, 21), + /* K6 */ be_nested_string("lv_obj_class", -255311002, 12), + /* K7 */ be_nested_string("lv_obj", -37134147, 6), + /* K8 */ be_nested_string("_class", -1562820946, 6), + /* K9 */ be_nested_string("copy", -446502332, 4), + /* K10 */ be_nested_string("base_class", 1107737279, 10), + /* K11 */ be_nested_string("constructor_cb", -1805861999, 14), + /* K12 */ be_nested_string("destructor_cb", 1930283190, 13), + /* K13 */ be_nested_string("event_cb", -1166269279, 8), + }), + (be_nested_const_str("widget_cb", -1531384241, 9)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[53]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x78060004, // 0003 JMPF R1 #0009 + 0xB8060200, // 0004 GETNGBL R1 K1 + 0x8C040302, // 0005 GETMET R1 R1 K2 + 0x840C0000, // 0006 CLOSURE R3 P0 + 0x7C040400, // 0007 CALL R1 2 + 0x90020001, // 0008 SETMBR R0 K0 R1 + 0x88040103, // 0009 GETMBR R1 R0 K3 + 0x4C080000, // 000A LDNIL R2 + 0x1C040202, // 000B EQ R1 R1 R2 + 0x78060004, // 000C JMPF R1 #0012 + 0xB8060200, // 000D GETNGBL R1 K1 + 0x8C040302, // 000E GETMET R1 R1 K2 + 0x840C0001, // 000F CLOSURE R3 P1 + 0x7C040400, // 0010 CALL R1 2 + 0x90020601, // 0011 SETMBR R0 K3 R1 + 0x88040104, // 0012 GETMBR R1 R0 K4 + 0x4C080000, // 0013 LDNIL R2 + 0x1C040202, // 0014 EQ R1 R1 R2 + 0x78060004, // 0015 JMPF R1 #001B + 0xB8060200, // 0016 GETNGBL R1 K1 + 0x8C040302, // 0017 GETMET R1 R1 K2 + 0x840C0002, // 0018 CLOSURE R3 P2 + 0x7C040400, // 0019 CALL R1 2 + 0x90020801, // 001A SETMBR R0 K4 R1 + 0x88040105, // 001B GETMBR R1 R0 K5 + 0x4C080000, // 001C LDNIL R2 + 0x1C040202, // 001D EQ R1 R1 R2 + 0x78060013, // 001E JMPF R1 #0033 + 0xB8060C00, // 001F GETNGBL R1 K6 + 0xB80A0E00, // 0020 GETNGBL R2 K7 + 0x88080508, // 0021 GETMBR R2 R2 K8 + 0x7C040200, // 0022 CALL R1 1 + 0x8C040309, // 0023 GETMET R1 R1 K9 + 0x7C040200, // 0024 CALL R1 1 + 0x90020A01, // 0025 SETMBR R0 K5 R1 + 0x88040105, // 0026 GETMBR R1 R0 K5 + 0xB80A0E00, // 0027 GETNGBL R2 K7 + 0x88080508, // 0028 GETMBR R2 R2 K8 + 0x90061402, // 0029 SETMBR R1 K10 R2 + 0x88040105, // 002A GETMBR R1 R0 K5 + 0x88080100, // 002B GETMBR R2 R0 K0 + 0x90061602, // 002C SETMBR R1 K11 R2 + 0x88040105, // 002D GETMBR R1 R0 K5 + 0x88080103, // 002E GETMBR R2 R0 K3 + 0x90061802, // 002F SETMBR R1 K12 R2 + 0x88040105, // 0030 GETMBR R1 R0 K5 + 0x88080104, // 0031 GETMBR R2 R0 K4 + 0x90061A02, // 0032 SETMBR R1 K13 R2 + 0xA0000000, // 0033 CLOSE R0 + 0x80000000, // 0034 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: +********************************************************************/ +be_local_closure(anonymous, /* name */ + be_nested_proto( + 2, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_string("LVG: call to unsupported callback", 504176819, 33), + }), + (be_nested_const_str("", 1160973142, 11)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[ 4]) { /* code */ + 0x60000001, // 0000 GETGBL R0 G1 + 0x58040000, // 0001 LDCONST R1 K0 + 0x7C000200, // 0002 CALL R0 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_custom_widget +********************************************************************/ +be_local_closure(create_custom_widget, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[27]) { /* constants */ + /* K0 */ be_nested_string("introspect", 164638290, 10), + /* K1 */ be_nested_string("lv_obj", -37134147, 6), + /* K2 */ be_nested_string("value_error", 773297791, 11), + /* K3 */ be_nested_string("arg must be a subclass of lv_obj", 1641882079, 32), + /* K4 */ be_nested_string("widget_struct_by_class", -488593454, 22), + /* K5 */ be_nested_string("find", -1108310694, 4), + /* K6 */ be_nested_string("widget_cb", -1531384241, 9), + /* K7 */ be_nested_string("widget_struct_default", 781673633, 21), + /* K8 */ be_nested_string("copy", -446502332, 4), + /* K9 */ be_nested_string("base_class", 1107737279, 10), + /* K10 */ be_nested_string("_class", -1562820946, 6), + /* K11 */ be_nested_string("get", 1410115415, 3), + /* K12 */ be_nested_string("widget_width_def", -308888434, 16), + /* K13 */ be_nested_string("width_def", 1143717879, 9), + /* K14 */ be_nested_string("widget_height_def", -1163299483, 17), + /* K15 */ be_nested_string("height_def", -1946728458, 10), + /* K16 */ be_nested_string("widget_editable", -473174010, 15), + /* K17 */ be_nested_string("editable", 60532369, 8), + /* K18 */ be_nested_string("widget_group_def", 1246968785, 16), + /* K19 */ be_nested_string("group_def", 1524213328, 9), + /* K20 */ be_nested_string("widget_instance_size", 2055354779, 20), + /* K21 */ be_nested_string("instance_size", -14697778, 13), + /* K22 */ be_nested_string("lv", 1529997255, 2), + /* K23 */ be_nested_string("obj_class_create_obj", -990576664, 20), + /* K24 */ be_nested_string("_p", 1594591802, 2), + /* K25 */ be_nested_string("register_obj", -312352526, 12), + /* K26 */ be_nested_string("class_init_obj", 178410604, 14), + }), + (be_nested_const_str("create_custom_widget", 1140594778, 20)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[85]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x6010000F, // 0001 GETGBL R4 G15 + 0x5C140200, // 0002 MOVE R5 R1 + 0xB81A0200, // 0003 GETNGBL R6 K1 + 0x7C100400, // 0004 CALL R4 2 + 0x74120000, // 0005 JMPT R4 #0007 + 0xB0060503, // 0006 RAISE 1 K2 K3 + 0x88100104, // 0007 GETMBR R4 R0 K4 + 0x4C140000, // 0008 LDNIL R5 + 0x1C100805, // 0009 EQ R4 R4 R5 + 0x78120002, // 000A JMPF R4 #000E + 0x60100013, // 000B GETGBL R4 G19 + 0x7C100000, // 000C CALL R4 0 + 0x90020804, // 000D SETMBR R0 K4 R4 + 0x60100005, // 000E GETGBL R4 G5 + 0x5C140200, // 000F MOVE R5 R1 + 0x7C100200, // 0010 CALL R4 1 + 0x88140104, // 0011 GETMBR R5 R0 K4 + 0x8C140B05, // 0012 GETMET R5 R5 K5 + 0x5C1C0800, // 0013 MOVE R7 R4 + 0x7C140400, // 0014 CALL R5 2 + 0x4C180000, // 0015 LDNIL R6 + 0x1C180A06, // 0016 EQ R6 R5 R6 + 0x781A002F, // 0017 JMPF R6 #0048 + 0x8C180106, // 0018 GETMET R6 R0 K6 + 0x7C180200, // 0019 CALL R6 1 + 0x88180107, // 001A GETMBR R6 R0 K7 + 0x8C180D08, // 001B GETMET R6 R6 K8 + 0x7C180200, // 001C CALL R6 1 + 0x5C140C00, // 001D MOVE R5 R6 + 0x60180003, // 001E GETGBL R6 G3 + 0x5C1C0200, // 001F MOVE R7 R1 + 0x7C180200, // 0020 CALL R6 1 + 0x88180D0A, // 0021 GETMBR R6 R6 K10 + 0x90161206, // 0022 SETMBR R5 K9 R6 + 0x8C18070B, // 0023 GETMET R6 R3 K11 + 0x5C200200, // 0024 MOVE R8 R1 + 0x5824000C, // 0025 LDCONST R9 K12 + 0x7C180600, // 0026 CALL R6 3 + 0x781A0001, // 0027 JMPF R6 #002A + 0x8818030C, // 0028 GETMBR R6 R1 K12 + 0x90161A06, // 0029 SETMBR R5 K13 R6 + 0x8C18070B, // 002A GETMET R6 R3 K11 + 0x5C200200, // 002B MOVE R8 R1 + 0x5824000E, // 002C LDCONST R9 K14 + 0x7C180600, // 002D CALL R6 3 + 0x781A0001, // 002E JMPF R6 #0031 + 0x8818030E, // 002F GETMBR R6 R1 K14 + 0x90161E06, // 0030 SETMBR R5 K15 R6 + 0x8C18070B, // 0031 GETMET R6 R3 K11 + 0x5C200200, // 0032 MOVE R8 R1 + 0x58240010, // 0033 LDCONST R9 K16 + 0x7C180600, // 0034 CALL R6 3 + 0x781A0001, // 0035 JMPF R6 #0038 + 0x88180310, // 0036 GETMBR R6 R1 K16 + 0x90162206, // 0037 SETMBR R5 K17 R6 + 0x8C18070B, // 0038 GETMET R6 R3 K11 + 0x5C200200, // 0039 MOVE R8 R1 + 0x58240012, // 003A LDCONST R9 K18 + 0x7C180600, // 003B CALL R6 3 + 0x781A0001, // 003C JMPF R6 #003F + 0x88180312, // 003D GETMBR R6 R1 K18 + 0x90162606, // 003E SETMBR R5 K19 R6 + 0x8C18070B, // 003F GETMET R6 R3 K11 + 0x5C200200, // 0040 MOVE R8 R1 + 0x58240014, // 0041 LDCONST R9 K20 + 0x7C180600, // 0042 CALL R6 3 + 0x781A0001, // 0043 JMPF R6 #0046 + 0x88180314, // 0044 GETMBR R6 R1 K20 + 0x90162A06, // 0045 SETMBR R5 K21 R6 + 0x88180104, // 0046 GETMBR R6 R0 K4 + 0x98180805, // 0047 SETIDX R6 R4 R5 + 0xB81A2C00, // 0048 GETNGBL R6 K22 + 0x8C180D17, // 0049 GETMET R6 R6 K23 + 0x5C200A00, // 004A MOVE R8 R5 + 0x5C240400, // 004B MOVE R9 R2 + 0x7C180600, // 004C CALL R6 3 + 0x881C0D18, // 004D GETMBR R7 R6 K24 + 0x90063007, // 004E SETMBR R1 K24 R7 + 0x8C1C0119, // 004F GETMET R7 R0 K25 + 0x5C240200, // 0050 MOVE R9 R1 + 0x7C1C0400, // 0051 CALL R7 2 + 0x8C1C031A, // 0052 GETMET R7 R1 K26 + 0x7C1C0200, // 0053 CALL R7 1 + 0x80000000, // 0054 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: widget_ctor_impl +********************************************************************/ +be_local_closure(widget_ctor_impl, /* name */ + be_nested_proto( + 10, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_string("introspect", 164638290, 10), + /* K1 */ be_nested_string("lv_obj_class", -255311002, 12), + /* K2 */ be_nested_string("get_object_from_ptr", -1949948095, 19), + /* K3 */ be_nested_string("cb_obj", 1195696482, 6), + /* K4 */ be_nested_string("find", -1108310694, 4), + /* K5 */ be_nested_string("instance", 193386898, 8), + /* K6 */ be_nested_string("get", 1410115415, 3), + /* K7 */ be_nested_string("widget_constructor", -1751181362, 18), + }), + (be_nested_const_str("widget_ctor_impl", 194252479, 16)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[28]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C100200, // 0003 CALL R4 1 + 0x8C140102, // 0004 GETMET R5 R0 K2 + 0x5C1C0400, // 0005 MOVE R7 R2 + 0x7C140400, // 0006 CALL R5 2 + 0x88180103, // 0007 GETMBR R6 R0 K3 + 0x8C180D04, // 0008 GETMET R6 R6 K4 + 0x5C200A00, // 0009 MOVE R8 R5 + 0x7C180400, // 000A CALL R6 2 + 0x781A0001, // 000B JMPF R6 #000E + 0x88180103, // 000C GETMBR R6 R0 K3 + 0x94140C05, // 000D GETIDX R5 R6 R5 + 0x60180004, // 000E GETGBL R6 G4 + 0x5C1C0A00, // 000F MOVE R7 R5 + 0x7C180200, // 0010 CALL R6 1 + 0x1C180D05, // 0011 EQ R6 R6 K5 + 0x781A0007, // 0012 JMPF R6 #001B + 0x8C180706, // 0013 GETMET R6 R3 K6 + 0x5C200A00, // 0014 MOVE R8 R5 + 0x58240007, // 0015 LDCONST R9 K7 + 0x7C180600, // 0016 CALL R6 3 + 0x781A0002, // 0017 JMPF R6 #001B + 0x8C180B07, // 0018 GETMET R6 R5 K7 + 0x5C200800, // 0019 MOVE R8 R4 + 0x7C180400, // 001A CALL R6 2 + 0x80000000, // 001B RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified class: LVGL_glob +********************************************************************/ +be_local_class(LVGL_glob, + 9, + NULL, + be_nested_map(20, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_nested_key("widget_ctor_cb", 876007560, 14, 9), be_const_var(4) }, + { be_nested_key("get_object_from_ptr", -1949948095, 19, 4), be_const_closure(get_object_from_ptr_closure) }, + { be_nested_key("cb_obj", 1195696482, 6, 7), be_const_var(0) }, + { be_nested_key("widget_struct_by_class", -488593454, 22, -1), be_const_var(8) }, + { be_nested_key("widget_event_impl", -2116536735, 17, -1), be_const_closure(widget_event_impl_closure) }, + { be_nested_key("widget_dtor_cb", -1143421451, 14, 6), be_const_var(5) }, + { be_nested_key("cb_event_closure", -466699971, 16, -1), be_const_var(1) }, + { be_nested_key("lvgl_event_dispatch", 2104396622, 19, 16), be_const_closure(lvgl_event_dispatch_closure) }, + { be_nested_key("widget_dtor_impl", 520430610, 16, -1), be_const_closure(widget_dtor_impl_closure) }, + { be_nested_key("null_cb", -1961430836, 7, -1), be_const_var(3) }, + { be_nested_key("register_obj", -312352526, 12, 8), be_const_closure(register_obj_closure) }, + { be_nested_key("gen_cb", -1049739745, 6, -1), be_const_closure(gen_cb_closure) }, + { be_nested_key("widget_struct_default", 781673633, 21, -1), be_const_var(7) }, + { be_nested_key("deregister_obj", -385000303, 14, 12), be_const_closure(deregister_obj_closure) }, + { be_nested_key("widget_event_cb", 1508466754, 15, -1), be_const_var(6) }, + { be_nested_key("widget_cb", -1531384241, 9, -1), be_const_closure(widget_cb_closure) }, + { be_nested_key("cb_do_nothing", 1488730702, 13, 3), be_const_closure(anonymous_closure) }, + { be_nested_key("event_cb", -1166269279, 8, -1), be_const_var(2) }, + { be_nested_key("create_custom_widget", 1140594778, 20, -1), be_const_closure(create_custom_widget_closure) }, + { be_nested_key("widget_ctor_impl", 194252479, 16, -1), be_const_closure(widget_ctor_impl_closure) }, + })), + (be_nested_const_str("LVGL_glob", 315437079, 9)) +); +/*******************************************************************/ + +void be_load_LVGL_glob_class(bvm *vm) { + be_pushntvclass(vm, &be_class_LVGL_glob); + be_setglobal(vm, "LVGL_glob"); + be_pop(vm, 1); +} + +#endif // USE_LVGL \ No newline at end of file diff --git a/lib/libesp32/Berry/default/be_lvgl_module.c b/lib/libesp32/Berry/default/be_lvgl_module.c index 53d3be12a..3e8c7fa4e 100644 --- a/lib/libesp32/Berry/default/be_lvgl_module.c +++ b/lib/libesp32/Berry/default/be_lvgl_module.c @@ -34,12 +34,18 @@ static int lv_get_ver_res(void) { /* `lv` methods */ const lvbe_call_c_t lv_func[] = { + { "clamp_height", (void*) &lv_clamp_height, "i", "iiii" }, + { "clamp_width", (void*) &lv_clamp_width, "i", "iiii" }, { "color_mix", (void*) &lv_color_mix, "lv_color", "(lv_color)(lv_color)i" }, - { "draw_arc", (void*) &lv_draw_arc, "", "iiiii(lv_area)(lv_draw_line_dsc)" }, + { "dpx", (void*) &lv_dpx, "i", "i" }, + { "draw_arc", (void*) &lv_draw_arc, "", "iiiii(lv_area)(lv_draw_arc_dsc)" }, + { "draw_arc_dsc_init", (void*) &lv_draw_arc_dsc_init, "", "(lv_draw_arc_dsc)" }, + { "draw_arc_get_area", (void*) &lv_draw_arc_get_area, "", "iiiiiib(lv_area)" }, { "draw_img", (void*) &lv_draw_img, "", "(lv_area)(lv_area).(lv_draw_img_dsc)" }, { "draw_img_dsc_init", (void*) &lv_draw_img_dsc_init, "", "(lv_draw_img_dsc)" }, { "draw_label", (void*) &lv_draw_label, "", "(lv_area)(lv_area)(lv_draw_label_dsc)s(lv_draw_label_hint)" }, { "draw_label_dsc_init", (void*) &lv_draw_label_dsc_init, "", "(lv_draw_label_dsc)" }, + { "draw_letter", (void*) &lv_draw_letter, "", "(lv_point)(lv_area)(lv_font)i(lv_color)ii" }, { "draw_line", (void*) &lv_draw_line, "", "(lv_point)(lv_point)(lv_area)(lv_draw_line_dsc)" }, { "draw_line_dsc_init", (void*) &lv_draw_line_dsc_init, "", "(lv_draw_line_dsc)" }, { "draw_mask_add", (void*) &lv_draw_mask_add, "i", ".." }, @@ -53,23 +59,42 @@ const lvbe_call_c_t lv_func[] = { { "draw_mask_remove_custom", (void*) &lv_draw_mask_remove_custom, ".", "." }, { "draw_mask_remove_id", (void*) &lv_draw_mask_remove_id, ".", "i" }, { "draw_polygon", (void*) &lv_draw_polygon, "", "ii(lv_area)(lv_draw_rect_dsc)" }, - { "draw_px", (void*) &lv_draw_px, "", "(lv_point)(lv_area)(lv_style)" }, { "draw_rect", (void*) &lv_draw_rect, "", "(lv_area)(lv_area)(lv_draw_rect_dsc)" }, { "draw_rect_dsc_init", (void*) &lv_draw_rect_dsc_init, "", "(lv_draw_rect_dsc)" }, { "draw_triangle", (void*) &lv_draw_triangle, "", "i(lv_area)(lv_draw_rect_dsc)" }, - { "event_get_data", (void*) &lv_event_get_data, ".", "" }, + { "event_register_id", (void*) &lv_event_register_id, "i", "" }, { "event_send", (void*) &lv_event_send, "i", "(lv_obj)i." }, - { "event_send_refresh", (void*) &lv_event_send_refresh, "i", "(lv_obj)" }, - { "event_send_refresh_recursive", (void*) &lv_event_send_refresh_recursive, "", "(lv_obj)" }, + { "event_set_cover_res", (void*) &lv_event_set_cover_res, "", "(lv_event)(lv_cover_res)" }, + { "event_set_ext_draw_size", (void*) &lv_event_set_ext_draw_size, "", "(lv_event)i" }, { "get_hor_res", (void*) &lv_get_hor_res, "i", "" }, { "get_ver_res", (void*) &lv_get_ver_res, "i", "" }, + { "group_get_default", (void*) &lv_group_get_default, "lv_group", "" }, + { "img_src_get_type", (void*) &lv_img_src_get_type, "i", "." }, + { "indev_get_obj_act", (void*) &lv_indev_get_obj_act, "lv_obj", "" }, + { "indev_read_timer_cb", (void*) &lv_indev_read_timer_cb, "", "(lv_timer)" }, { "layer_sys", (void*) &lv_layer_sys, "lv_obj", "" }, { "layer_top", (void*) &lv_layer_top, "lv_obj", "" }, - { "refr_now", (void*) &lv_refr_now, "", "" }, + { "layout_register", (void*) &lv_layout_register, "i", "^lv_layout_update_cb^." }, + { "obj_class_create_obj", (void*) &lv_obj_class_create_obj, "lv_obj", "(_lv_obj_class)(lv_obj)" }, + { "obj_del_anim_ready_cb", (void*) &lv_obj_del_anim_ready_cb, "", "(lv_anim)" }, + { "obj_draw_dsc_init", (void*) &lv_obj_draw_dsc_init, "", "(lv_obj_draw_part_dsc)(lv_area)" }, + { "obj_enable_style_refresh", (void*) &lv_obj_enable_style_refresh, "", "b" }, + { "obj_event_base", (void*) &lv_obj_event_base, "i", "(lv_obj_class)(lv_event)" }, + { "obj_report_style_change", (void*) &lv_obj_report_style_change, "", "(lv_style)" }, + { "obj_style_get_selector_part", (void*) &lv_obj_style_get_selector_part, "i", "(lv_style_selector)" }, + { "obj_style_get_selector_state", (void*) &lv_obj_style_get_selector_state, "i", "(lv_style_selector)" }, + { "refr_now", (void*) &lv_refr_now, "", "(lv_disp)" }, { "scr_act", (void*) &lv_scr_act, "lv_obj", "" }, { "scr_load", (void*) &lv_scr_load, "", "(lv_obj)" }, { "scr_load_anim", (void*) &lv_scr_load_anim, "", "(lv_obj)(lv_scr_load_anim)iib" }, - { "signal_send", (void*) &lv_signal_send, "i", "(lv_obj)i." }, + { "theme_apply", (void*) &lv_theme_apply, "", "(lv_obj)" }, + { "theme_get_color_primary", (void*) &lv_theme_get_color_primary, "lv_color", "(lv_obj)" }, + { "theme_get_color_secondary", (void*) &lv_theme_get_color_secondary, "lv_color", "(lv_obj)" }, + { "theme_get_font_large", (void*) &lv_theme_get_font_large, "lv_font", "(lv_obj)" }, + { "theme_get_font_normal", (void*) &lv_theme_get_font_normal, "lv_font", "(lv_obj)" }, + { "theme_get_font_small", (void*) &lv_theme_get_font_small, "lv_font", "(lv_obj)" }, + { "theme_set_apply_cb", (void*) &lv_theme_set_apply_cb, "", "(lv_theme)^lv_theme_apply_cb^" }, + { "theme_set_parent", (void*) &lv_theme_set_parent, "", "(lv_theme)(lv_theme)" }, }; const size_t lv_func_size = sizeof(lv_func) / sizeof(lv_func[0]); @@ -84,15 +109,12 @@ typedef struct be_constint_t { const be_constint_t lv0_constants[] = { + { "ALIGN_BOTTOM_LEFT", LV_ALIGN_BOTTOM_LEFT }, + { "ALIGN_BOTTOM_MID", LV_ALIGN_BOTTOM_MID }, + { "ALIGN_BOTTOM_RIGHT", LV_ALIGN_BOTTOM_RIGHT }, { "ALIGN_CENTER", LV_ALIGN_CENTER }, - { "ALIGN_IN_BOTTOM_LEFT", LV_ALIGN_IN_BOTTOM_LEFT }, - { "ALIGN_IN_BOTTOM_MID", LV_ALIGN_IN_BOTTOM_MID }, - { "ALIGN_IN_BOTTOM_RIGHT", LV_ALIGN_IN_BOTTOM_RIGHT }, - { "ALIGN_IN_LEFT_MID", LV_ALIGN_IN_LEFT_MID }, - { "ALIGN_IN_RIGHT_MID", LV_ALIGN_IN_RIGHT_MID }, - { "ALIGN_IN_TOP_LEFT", LV_ALIGN_IN_TOP_LEFT }, - { "ALIGN_IN_TOP_MID", LV_ALIGN_IN_TOP_MID }, - { "ALIGN_IN_TOP_RIGHT", LV_ALIGN_IN_TOP_RIGHT }, + { "ALIGN_DEFAULT", LV_ALIGN_DEFAULT }, + { "ALIGN_LEFT_MID", LV_ALIGN_LEFT_MID }, { "ALIGN_OUT_BOTTOM_LEFT", LV_ALIGN_OUT_BOTTOM_LEFT }, { "ALIGN_OUT_BOTTOM_MID", LV_ALIGN_OUT_BOTTOM_MID }, { "ALIGN_OUT_BOTTOM_RIGHT", LV_ALIGN_OUT_BOTTOM_RIGHT }, @@ -105,19 +127,24 @@ const be_constint_t lv0_constants[] = { { "ALIGN_OUT_TOP_LEFT", LV_ALIGN_OUT_TOP_LEFT }, { "ALIGN_OUT_TOP_MID", LV_ALIGN_OUT_TOP_MID }, { "ALIGN_OUT_TOP_RIGHT", LV_ALIGN_OUT_TOP_RIGHT }, + { "ALIGN_RIGHT_MID", LV_ALIGN_RIGHT_MID }, + { "ALIGN_TOP_LEFT", LV_ALIGN_TOP_LEFT }, + { "ALIGN_TOP_MID", LV_ALIGN_TOP_MID }, + { "ALIGN_TOP_RIGHT", LV_ALIGN_TOP_RIGHT }, + { "ANIM_IMG_PART_MAIN", LV_ANIM_IMG_PART_MAIN }, { "ANIM_OFF", LV_ANIM_OFF }, { "ANIM_ON", LV_ANIM_ON }, - { "ARC_PART_BG", LV_ARC_PART_BG }, - { "ARC_PART_INDIC", LV_ARC_PART_INDIC }, - { "ARC_PART_KNOB", LV_ARC_PART_KNOB }, - { "ARC_TYPE_NORMAL", LV_ARC_TYPE_NORMAL }, - { "ARC_TYPE_REVERSE", LV_ARC_TYPE_REVERSE }, - { "ARC_TYPE_SYMMETRIC", LV_ARC_TYPE_SYMMETRIC }, - { "BAR_PART_BG", LV_BAR_PART_BG }, - { "BAR_PART_INDIC", LV_BAR_PART_INDIC }, - { "BAR_TYPE_CUSTOM", LV_BAR_TYPE_CUSTOM }, - { "BAR_TYPE_NORMAL", LV_BAR_TYPE_NORMAL }, - { "BAR_TYPE_SYMMETRICAL", LV_BAR_TYPE_SYMMETRICAL }, + { "ARC_MODE_NORMAL", LV_ARC_MODE_NORMAL }, + { "ARC_MODE_REVERSE", LV_ARC_MODE_REVERSE }, + { "ARC_MODE_SYMMETRICAL", LV_ARC_MODE_SYMMETRICAL }, + { "BAR_MODE_NORMAL", LV_BAR_MODE_NORMAL }, + { "BAR_MODE_RANGE", LV_BAR_MODE_RANGE }, + { "BAR_MODE_SYMMETRICAL", LV_BAR_MODE_SYMMETRICAL }, + { "BASE_DIR_AUTO", LV_BASE_DIR_AUTO }, + { "BASE_DIR_LTR", LV_BASE_DIR_LTR }, + { "BASE_DIR_NEUTRAL", LV_BASE_DIR_NEUTRAL }, + { "BASE_DIR_RTL", LV_BASE_DIR_RTL }, + { "BASE_DIR_WEAK", LV_BASE_DIR_WEAK }, { "BLEND_MODE_ADDITIVE", LV_BLEND_MODE_ADDITIVE }, { "BLEND_MODE_NORMAL", LV_BLEND_MODE_NORMAL }, { "BLEND_MODE_SUBTRACTIVE", LV_BLEND_MODE_SUBTRACTIVE }, @@ -129,46 +156,27 @@ const be_constint_t lv0_constants[] = { { "BORDER_SIDE_RIGHT", LV_BORDER_SIDE_RIGHT }, { "BORDER_SIDE_TOP", LV_BORDER_SIDE_TOP }, { "BTNMATRIX_CTRL_CHECKABLE", LV_BTNMATRIX_CTRL_CHECKABLE }, - { "BTNMATRIX_CTRL_CHECK_STATE", LV_BTNMATRIX_CTRL_CHECK_STATE }, + { "BTNMATRIX_CTRL_CHECKED", LV_BTNMATRIX_CTRL_CHECKED }, { "BTNMATRIX_CTRL_CLICK_TRIG", LV_BTNMATRIX_CTRL_CLICK_TRIG }, + { "BTNMATRIX_CTRL_CUSTOM_1", LV_BTNMATRIX_CTRL_CUSTOM_1 }, + { "BTNMATRIX_CTRL_CUSTOM_2", LV_BTNMATRIX_CTRL_CUSTOM_2 }, { "BTNMATRIX_CTRL_DISABLED", LV_BTNMATRIX_CTRL_DISABLED }, { "BTNMATRIX_CTRL_HIDDEN", LV_BTNMATRIX_CTRL_HIDDEN }, { "BTNMATRIX_CTRL_NO_REPEAT", LV_BTNMATRIX_CTRL_NO_REPEAT }, - { "BTNMATRIX_PART_BG", LV_BTNMATRIX_PART_BG }, - { "BTNMATRIX_PART_BTN", LV_BTNMATRIX_PART_BTN }, - { "BTN_PART_MAIN", LV_BTN_PART_MAIN }, - { "BTN_STATE_CHECKED_DISABLED", LV_BTN_STATE_CHECKED_DISABLED }, - { "BTN_STATE_CHECKED_PRESSED", LV_BTN_STATE_CHECKED_PRESSED }, - { "BTN_STATE_CHECKED_RELEASED", LV_BTN_STATE_CHECKED_RELEASED }, - { "BTN_STATE_DISABLED", LV_BTN_STATE_DISABLED }, - { "BTN_STATE_PRESSED", LV_BTN_STATE_PRESSED }, - { "BTN_STATE_RELEASED", LV_BTN_STATE_RELEASED }, - { "CALENDAR_PART_BG", LV_CALENDAR_PART_BG }, - { "CALENDAR_PART_DATE", LV_CALENDAR_PART_DATE }, - { "CALENDAR_PART_DAY_NAMES", LV_CALENDAR_PART_DAY_NAMES }, - { "CALENDAR_PART_HEADER", LV_CALENDAR_PART_HEADER }, - { "CANVAS_PART_MAIN", LV_CANVAS_PART_MAIN }, - { "CHART_AXIS_DRAW_LAST_TICK", LV_CHART_AXIS_DRAW_LAST_TICK }, - { "CHART_AXIS_INVERSE_LABELS_ORDER", LV_CHART_AXIS_INVERSE_LABELS_ORDER }, + { "BTNMATRIX_CTRL_RECOLOR", LV_BTNMATRIX_CTRL_RECOLOR }, + { "CHART_AXIS_PRIMARY_X", LV_CHART_AXIS_PRIMARY_X }, { "CHART_AXIS_PRIMARY_Y", LV_CHART_AXIS_PRIMARY_Y }, + { "CHART_AXIS_SECONDARY_X", LV_CHART_AXIS_SECONDARY_X }, { "CHART_AXIS_SECONDARY_Y", LV_CHART_AXIS_SECONDARY_Y }, - { "CHART_AXIS_SKIP_LAST_TICK", LV_CHART_AXIS_SKIP_LAST_TICK }, - { "CHART_CURSOR_DOWN", LV_CHART_CURSOR_DOWN }, - { "CHART_CURSOR_LEFT", LV_CHART_CURSOR_LEFT }, - { "CHART_CURSOR_NONE", LV_CHART_CURSOR_NONE }, - { "CHART_CURSOR_RIGHT", LV_CHART_CURSOR_RIGHT }, - { "CHART_CURSOR_UP", LV_CHART_CURSOR_UP }, - { "CHART_PART_BG", LV_CHART_PART_BG }, - { "CHART_PART_CURSOR", LV_CHART_PART_CURSOR }, - { "CHART_PART_SERIES", LV_CHART_PART_SERIES }, - { "CHART_PART_SERIES_BG", LV_CHART_PART_SERIES_BG }, - { "CHART_TYPE_COLUMN", LV_CHART_TYPE_COLUMN }, + { "CHART_TYPE_BAR", LV_CHART_TYPE_BAR }, { "CHART_TYPE_LINE", LV_CHART_TYPE_LINE }, { "CHART_TYPE_NONE", LV_CHART_TYPE_NONE }, + { "CHART_TYPE_SCATTER", LV_CHART_TYPE_SCATTER }, { "CHART_UPDATE_MODE_CIRCULAR", LV_CHART_UPDATE_MODE_CIRCULAR }, { "CHART_UPDATE_MODE_SHIFT", LV_CHART_UPDATE_MODE_SHIFT }, - { "CHECKBOX_PART_BG", LV_CHECKBOX_PART_BG }, - { "CHECKBOX_PART_BULLET", LV_CHECKBOX_PART_BULLET }, + { "COLORWHEEL_MODE_HUE", LV_COLORWHEEL_MODE_HUE }, + { "COLORWHEEL_MODE_SATURATION", LV_COLORWHEEL_MODE_SATURATION }, + { "COLORWHEEL_MODE_VALUE", LV_COLORWHEEL_MODE_VALUE }, { "COLOR_AQUA", 65535 }, { "COLOR_BLACK", 0 }, { "COLOR_BLUE", 255 }, @@ -186,33 +194,21 @@ const be_constint_t lv0_constants[] = { { "COLOR_TEAL", 32896 }, { "COLOR_WHITE", 16777215 }, { "COLOR_YELLOW", 16776960 }, - { "CONT_PART_MAIN", LV_CONT_PART_MAIN }, - { "CPICKER_COLOR_MODE_HUE", LV_CPICKER_COLOR_MODE_HUE }, - { "CPICKER_COLOR_MODE_SATURATION", LV_CPICKER_COLOR_MODE_SATURATION }, - { "CPICKER_COLOR_MODE_VALUE", LV_CPICKER_COLOR_MODE_VALUE }, - { "CPICKER_PART_KNOB", LV_CPICKER_PART_KNOB }, - { "CPICKER_PART_MAIN", LV_CPICKER_PART_MAIN }, - { "CPICKER_TYPE_DISC", LV_CPICKER_TYPE_DISC }, - { "CPICKER_TYPE_RECT", LV_CPICKER_TYPE_RECT }, - { "DESIGN_COVER_CHK", LV_DESIGN_COVER_CHK }, - { "DESIGN_DRAW_MAIN", LV_DESIGN_DRAW_MAIN }, - { "DESIGN_DRAW_POST", LV_DESIGN_DRAW_POST }, - { "DESIGN_RES_COVER", LV_DESIGN_RES_COVER }, - { "DESIGN_RES_MASKED", LV_DESIGN_RES_MASKED }, - { "DESIGN_RES_NOT_COVER", LV_DESIGN_RES_NOT_COVER }, - { "DESIGN_RES_OK", LV_DESIGN_RES_OK }, + { "COVER_RES_COVER", LV_COVER_RES_COVER }, + { "COVER_RES_MASKED", LV_COVER_RES_MASKED }, + { "COVER_RES_NOT_COVER", LV_COVER_RES_NOT_COVER }, + { "DIR_ALL", LV_DIR_ALL }, + { "DIR_BOTTOM", LV_DIR_BOTTOM }, + { "DIR_HOR", LV_DIR_HOR }, + { "DIR_LEFT", LV_DIR_LEFT }, + { "DIR_NONE", LV_DIR_NONE }, + { "DIR_RIGHT", LV_DIR_RIGHT }, + { "DIR_TOP", LV_DIR_TOP }, + { "DIR_VER", LV_DIR_VER }, { "DISP_ROT_180", LV_DISP_ROT_180 }, { "DISP_ROT_270", LV_DISP_ROT_270 }, { "DISP_ROT_90", LV_DISP_ROT_90 }, { "DISP_ROT_NONE", LV_DISP_ROT_NONE }, - { "DISP_SIZE_EXTRA_LARGE", LV_DISP_SIZE_EXTRA_LARGE }, - { "DISP_SIZE_LARGE", LV_DISP_SIZE_LARGE }, - { "DISP_SIZE_MEDIUM", LV_DISP_SIZE_MEDIUM }, - { "DISP_SIZE_SMALL", LV_DISP_SIZE_SMALL }, - { "DRAG_DIR_BOTH", LV_DRAG_DIR_BOTH }, - { "DRAG_DIR_HOR", LV_DRAG_DIR_HOR }, - { "DRAG_DIR_ONE", LV_DRAG_DIR_ONE }, - { "DRAG_DIR_VER", LV_DRAG_DIR_VER }, { "DRAW_MASK_LINE_SIDE_BOTTOM", LV_DRAW_MASK_LINE_SIDE_BOTTOM }, { "DRAW_MASK_LINE_SIDE_LEFT", LV_DRAW_MASK_LINE_SIDE_LEFT }, { "DRAW_MASK_LINE_SIDE_RIGHT", LV_DRAW_MASK_LINE_SIDE_RIGHT }, @@ -226,40 +222,59 @@ const be_constint_t lv0_constants[] = { { "DRAW_MASK_TYPE_LINE", LV_DRAW_MASK_TYPE_LINE }, { "DRAW_MASK_TYPE_MAP", LV_DRAW_MASK_TYPE_MAP }, { "DRAW_MASK_TYPE_RADIUS", LV_DRAW_MASK_TYPE_RADIUS }, - { "DROPDOWN_DIR_DOWN", LV_DROPDOWN_DIR_DOWN }, - { "DROPDOWN_DIR_LEFT", LV_DROPDOWN_DIR_LEFT }, - { "DROPDOWN_DIR_RIGHT", LV_DROPDOWN_DIR_RIGHT }, - { "DROPDOWN_DIR_UP", LV_DROPDOWN_DIR_UP }, - { "DROPDOWN_PART_LIST", LV_DROPDOWN_PART_LIST }, - { "DROPDOWN_PART_MAIN", LV_DROPDOWN_PART_MAIN }, - { "DROPDOWN_PART_SCROLLBAR", LV_DROPDOWN_PART_SCROLLBAR }, - { "DROPDOWN_PART_SELECTED", LV_DROPDOWN_PART_SELECTED }, - { "EVENT_APPLY", LV_EVENT_APPLY }, + { "EVENT_ALL", LV_EVENT_ALL }, { "EVENT_CANCEL", LV_EVENT_CANCEL }, + { "EVENT_CHILD_CHANGED", LV_EVENT_CHILD_CHANGED }, { "EVENT_CLICKED", LV_EVENT_CLICKED }, + { "EVENT_COVER_CHECK", LV_EVENT_COVER_CHECK }, { "EVENT_DEFOCUSED", LV_EVENT_DEFOCUSED }, { "EVENT_DELETE", LV_EVENT_DELETE }, - { "EVENT_DRAG_BEGIN", LV_EVENT_DRAG_BEGIN }, - { "EVENT_DRAG_END", LV_EVENT_DRAG_END }, - { "EVENT_DRAG_THROW_BEGIN", LV_EVENT_DRAG_THROW_BEGIN }, + { "EVENT_DRAW_MAIN", LV_EVENT_DRAW_MAIN }, + { "EVENT_DRAW_MAIN_BEGIN", LV_EVENT_DRAW_MAIN_BEGIN }, + { "EVENT_DRAW_MAIN_END", LV_EVENT_DRAW_MAIN_END }, + { "EVENT_DRAW_PART_BEGIN", LV_EVENT_DRAW_PART_BEGIN }, + { "EVENT_DRAW_PART_END", LV_EVENT_DRAW_PART_END }, + { "EVENT_DRAW_POST", LV_EVENT_DRAW_POST }, + { "EVENT_DRAW_POST_BEGIN", LV_EVENT_DRAW_POST_BEGIN }, + { "EVENT_DRAW_POST_END", LV_EVENT_DRAW_POST_END }, { "EVENT_FOCUSED", LV_EVENT_FOCUSED }, { "EVENT_GESTURE", LV_EVENT_GESTURE }, + { "EVENT_GET_SELF_SIZE", LV_EVENT_GET_SELF_SIZE }, + { "EVENT_HIT_TEST", LV_EVENT_HIT_TEST }, { "EVENT_INSERT", LV_EVENT_INSERT }, { "EVENT_KEY", LV_EVENT_KEY }, + { "EVENT_LAYOUT_CHANGED", LV_EVENT_LAYOUT_CHANGED }, { "EVENT_LEAVE", LV_EVENT_LEAVE }, { "EVENT_LONG_PRESSED", LV_EVENT_LONG_PRESSED }, { "EVENT_LONG_PRESSED_REPEAT", LV_EVENT_LONG_PRESSED_REPEAT }, { "EVENT_PRESSED", LV_EVENT_PRESSED }, { "EVENT_PRESSING", LV_EVENT_PRESSING }, { "EVENT_PRESS_LOST", LV_EVENT_PRESS_LOST }, + { "EVENT_READY", LV_EVENT_READY }, { "EVENT_REFRESH", LV_EVENT_REFRESH }, + { "EVENT_REFR_EXT_DRAW_SIZE", LV_EVENT_REFR_EXT_DRAW_SIZE }, { "EVENT_RELEASED", LV_EVENT_RELEASED }, + { "EVENT_SCROLL", LV_EVENT_SCROLL }, + { "EVENT_SCROLL_BEGIN", LV_EVENT_SCROLL_BEGIN }, + { "EVENT_SCROLL_END", LV_EVENT_SCROLL_END }, { "EVENT_SHORT_CLICKED", LV_EVENT_SHORT_CLICKED }, + { "EVENT_SIZE_CHANGED", LV_EVENT_SIZE_CHANGED }, + { "EVENT_STYLE_CHANGED", LV_EVENT_STYLE_CHANGED }, { "EVENT_VALUE_CHANGED", LV_EVENT_VALUE_CHANGED }, - { "FIT_MAX", LV_FIT_MAX }, - { "FIT_NONE", LV_FIT_NONE }, - { "FIT_PARENT", LV_FIT_PARENT }, - { "FIT_TIGHT", LV_FIT_TIGHT }, + { "FLEX_ALIGN_CENTER", LV_FLEX_ALIGN_CENTER }, + { "FLEX_ALIGN_END", LV_FLEX_ALIGN_END }, + { "FLEX_ALIGN_SPACE_AROUND", LV_FLEX_ALIGN_SPACE_AROUND }, + { "FLEX_ALIGN_SPACE_BETWEEN", LV_FLEX_ALIGN_SPACE_BETWEEN }, + { "FLEX_ALIGN_SPACE_EVENLY", LV_FLEX_ALIGN_SPACE_EVENLY }, + { "FLEX_ALIGN_START", LV_FLEX_ALIGN_START }, + { "FLEX_FLOW_COLUMN", LV_FLEX_FLOW_COLUMN }, + { "FLEX_FLOW_COLUMN_REVERSE", LV_FLEX_FLOW_COLUMN_REVERSE }, + { "FLEX_FLOW_COLUMN_WRAP", LV_FLEX_FLOW_COLUMN_WRAP }, + { "FLEX_FLOW_COLUMN_WRAP_REVERSE", LV_FLEX_FLOW_COLUMN_WRAP_REVERSE }, + { "FLEX_FLOW_ROW", LV_FLEX_FLOW_ROW }, + { "FLEX_FLOW_ROW_REVERSE", LV_FLEX_FLOW_ROW_REVERSE }, + { "FLEX_FLOW_ROW_WRAP", LV_FLEX_FLOW_ROW_WRAP }, + { "FLEX_FLOW_ROW_WRAP_REVERSE", LV_FLEX_FLOW_ROW_WRAP_REVERSE }, { "FS_MODE_RD", LV_FS_MODE_RD }, { "FS_MODE_WR", LV_FS_MODE_WR }, { "FS_RES_BUSY", LV_FS_RES_BUSY }, @@ -275,19 +290,27 @@ const be_constint_t lv0_constants[] = { { "FS_RES_OUT_OF_MEM", LV_FS_RES_OUT_OF_MEM }, { "FS_RES_TOUT", LV_FS_RES_TOUT }, { "FS_RES_UNKNOWN", LV_FS_RES_UNKNOWN }, - { "GAUGE_PART_MAIN", LV_GAUGE_PART_MAIN }, - { "GAUGE_PART_MAJOR", LV_GAUGE_PART_MAJOR }, - { "GAUGE_PART_NEEDLE", LV_GAUGE_PART_NEEDLE }, - { "GESTURE_DIR_BOTTOM", LV_GESTURE_DIR_BOTTOM }, - { "GESTURE_DIR_LEFT", LV_GESTURE_DIR_LEFT }, - { "GESTURE_DIR_RIGHT", LV_GESTURE_DIR_RIGHT }, - { "GESTURE_DIR_TOP", LV_GESTURE_DIR_TOP }, + { "FS_SEEK_CUR", LV_FS_SEEK_CUR }, + { "FS_SEEK_END", LV_FS_SEEK_END }, + { "FS_SEEK_SET", LV_FS_SEEK_SET }, { "GRAD_DIR_HOR", LV_GRAD_DIR_HOR }, { "GRAD_DIR_NONE", LV_GRAD_DIR_NONE }, { "GRAD_DIR_VER", LV_GRAD_DIR_VER }, + { "GRID_ALIGN_CENTER", LV_GRID_ALIGN_CENTER }, + { "GRID_ALIGN_END", LV_GRID_ALIGN_END }, + { "GRID_ALIGN_SPACE_AROUND", LV_GRID_ALIGN_SPACE_AROUND }, + { "GRID_ALIGN_SPACE_BETWEEN", LV_GRID_ALIGN_SPACE_BETWEEN }, + { "GRID_ALIGN_SPACE_EVENLY", LV_GRID_ALIGN_SPACE_EVENLY }, + { "GRID_ALIGN_START", LV_GRID_ALIGN_START }, + { "GRID_ALIGN_STRETCH", LV_GRID_ALIGN_STRETCH }, { "GROUP_REFOCUS_POLICY_NEXT", LV_GROUP_REFOCUS_POLICY_NEXT }, { "GROUP_REFOCUS_POLICY_PREV", LV_GROUP_REFOCUS_POLICY_PREV }, - { "IMGBTN_PART_MAIN", LV_IMGBTN_PART_MAIN }, + { "IMGBTN_STATE_CHECKED_DISABLED", LV_IMGBTN_STATE_CHECKED_DISABLED }, + { "IMGBTN_STATE_CHECKED_PRESSED", LV_IMGBTN_STATE_CHECKED_PRESSED }, + { "IMGBTN_STATE_CHECKED_RELEASED", LV_IMGBTN_STATE_CHECKED_RELEASED }, + { "IMGBTN_STATE_DISABLED", LV_IMGBTN_STATE_DISABLED }, + { "IMGBTN_STATE_PRESSED", LV_IMGBTN_STATE_PRESSED }, + { "IMGBTN_STATE_RELEASED", LV_IMGBTN_STATE_RELEASED }, { "IMG_CF_ALPHA_1BIT", LV_IMG_CF_ALPHA_1BIT }, { "IMG_CF_ALPHA_2BIT", LV_IMG_CF_ALPHA_2BIT }, { "IMG_CF_ALPHA_4BIT", LV_IMG_CF_ALPHA_4BIT }, @@ -303,24 +326,17 @@ const be_constint_t lv0_constants[] = { { "IMG_CF_TRUE_COLOR_ALPHA", LV_IMG_CF_TRUE_COLOR_ALPHA }, { "IMG_CF_TRUE_COLOR_CHROMA_KEYED", LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED }, { "IMG_CF_UNKNOWN", LV_IMG_CF_UNKNOWN }, - { "IMG_PART_MAIN", LV_IMG_PART_MAIN }, { "IMG_SRC_FILE", LV_IMG_SRC_FILE }, { "IMG_SRC_SYMBOL", LV_IMG_SRC_SYMBOL }, { "IMG_SRC_UNKNOWN", LV_IMG_SRC_UNKNOWN }, { "IMG_SRC_VARIABLE", LV_IMG_SRC_VARIABLE }, - { "INDEV_STATE_PR", LV_INDEV_STATE_PR }, - { "INDEV_STATE_REL", LV_INDEV_STATE_REL }, + { "INDEV_STATE_PRESSED", LV_INDEV_STATE_PRESSED }, + { "INDEV_STATE_RELEASED", LV_INDEV_STATE_RELEASED }, { "INDEV_TYPE_BUTTON", LV_INDEV_TYPE_BUTTON }, { "INDEV_TYPE_ENCODER", LV_INDEV_TYPE_ENCODER }, { "INDEV_TYPE_KEYPAD", LV_INDEV_TYPE_KEYPAD }, { "INDEV_TYPE_NONE", LV_INDEV_TYPE_NONE }, { "INDEV_TYPE_POINTER", LV_INDEV_TYPE_POINTER }, - { "KEYBOARD_MODE_NUM", LV_KEYBOARD_MODE_NUM }, - { "KEYBOARD_MODE_SPECIAL", LV_KEYBOARD_MODE_SPECIAL }, - { "KEYBOARD_MODE_TEXT_LOWER", LV_KEYBOARD_MODE_TEXT_LOWER }, - { "KEYBOARD_MODE_TEXT_UPPER", LV_KEYBOARD_MODE_TEXT_UPPER }, - { "KEYBOARD_PART_BG", LV_KEYBOARD_PART_BG }, - { "KEYBOARD_PART_BTN", LV_KEYBOARD_PART_BTN }, { "KEY_BACKSPACE", LV_KEY_BACKSPACE }, { "KEY_DEL", LV_KEY_DEL }, { "KEY_DOWN", LV_KEY_DOWN }, @@ -333,42 +349,49 @@ const be_constint_t lv0_constants[] = { { "KEY_PREV", LV_KEY_PREV }, { "KEY_RIGHT", LV_KEY_RIGHT }, { "KEY_UP", LV_KEY_UP }, - { "LABEL_ALIGN_AUTO", LV_LABEL_ALIGN_AUTO }, - { "LABEL_ALIGN_CENTER", LV_LABEL_ALIGN_CENTER }, - { "LABEL_ALIGN_LEFT", LV_LABEL_ALIGN_LEFT }, - { "LABEL_ALIGN_RIGHT", LV_LABEL_ALIGN_RIGHT }, - { "LABEL_LONG_BREAK", LV_LABEL_LONG_BREAK }, - { "LABEL_LONG_CROP", LV_LABEL_LONG_CROP }, + { "LABEL_LONG_CLIP", LV_LABEL_LONG_CLIP }, { "LABEL_LONG_DOT", LV_LABEL_LONG_DOT }, - { "LABEL_LONG_EXPAND", LV_LABEL_LONG_EXPAND }, - { "LABEL_LONG_SROLL", LV_LABEL_LONG_SROLL }, - { "LABEL_LONG_SROLL_CIRC", LV_LABEL_LONG_SROLL_CIRC }, - { "LABEL_PART_MAIN", LV_LABEL_PART_MAIN }, - { "LAYOUT_CENTER", LV_LAYOUT_CENTER }, - { "LAYOUT_COLUMN_LEFT", LV_LAYOUT_COLUMN_LEFT }, - { "LAYOUT_COLUMN_MID", LV_LAYOUT_COLUMN_MID }, - { "LAYOUT_COLUMN_RIGHT", LV_LAYOUT_COLUMN_RIGHT }, - { "LAYOUT_GRID", LV_LAYOUT_GRID }, - { "LAYOUT_OFF", LV_LAYOUT_OFF }, - { "LAYOUT_PRETTY_BOTTOM", LV_LAYOUT_PRETTY_BOTTOM }, - { "LAYOUT_PRETTY_MID", LV_LAYOUT_PRETTY_MID }, - { "LAYOUT_PRETTY_TOP", LV_LAYOUT_PRETTY_TOP }, - { "LAYOUT_ROW_BOTTOM", LV_LAYOUT_ROW_BOTTOM }, - { "LAYOUT_ROW_MID", LV_LAYOUT_ROW_MID }, - { "LAYOUT_ROW_TOP", LV_LAYOUT_ROW_TOP }, - { "LED_PART_MAIN", LV_LED_PART_MAIN }, - { "LINEMETER_PART_MAIN", LV_LINEMETER_PART_MAIN }, - { "LINE_PART_MAIN", LV_LINE_PART_MAIN }, - { "LIST_PART_BG", LV_LIST_PART_BG }, - { "LIST_PART_EDGE_FLASH", LV_LIST_PART_EDGE_FLASH }, - { "LIST_PART_SCROLLABLE", LV_LIST_PART_SCROLLABLE }, - { "LIST_PART_SCROLLBAR", LV_LIST_PART_SCROLLBAR }, - { "MSGBOX_PART_BG", LV_MSGBOX_PART_BG }, - { "MSGBOX_PART_BTN", LV_MSGBOX_PART_BTN }, - { "MSGBOX_PART_BTN_BG", LV_MSGBOX_PART_BTN_BG }, - { "OBJMASK_PART_MAIN", LV_OBJMASK_PART_MAIN }, - { "OBJ_PART_ALL", LV_OBJ_PART_ALL }, - { "OBJ_PART_MAIN", LV_OBJ_PART_MAIN }, + { "LABEL_LONG_SCROLL", LV_LABEL_LONG_SCROLL }, + { "LABEL_LONG_SCROLL_CIRCULAR", LV_LABEL_LONG_SCROLL_CIRCULAR }, + { "LABEL_LONG_WRAP", LV_LABEL_LONG_WRAP }, + { "METER_INDICATOR_TYPE_ARC", LV_METER_INDICATOR_TYPE_ARC }, + { "METER_INDICATOR_TYPE_NEEDLE_IMG", LV_METER_INDICATOR_TYPE_NEEDLE_IMG }, + { "METER_INDICATOR_TYPE_NEEDLE_LINE", LV_METER_INDICATOR_TYPE_NEEDLE_LINE }, + { "METER_INDICATOR_TYPE_SCALE_LINES", LV_METER_INDICATOR_TYPE_SCALE_LINES }, + { "OBJ_CLASS_EDITABLE_FALSE", LV_OBJ_CLASS_EDITABLE_FALSE }, + { "OBJ_CLASS_EDITABLE_INHERIT", LV_OBJ_CLASS_EDITABLE_INHERIT }, + { "OBJ_CLASS_EDITABLE_TRUE", LV_OBJ_CLASS_EDITABLE_TRUE }, + { "OBJ_CLASS_GROUP_DEF_FALSE", LV_OBJ_CLASS_GROUP_DEF_FALSE }, + { "OBJ_CLASS_GROUP_DEF_INHERIT", LV_OBJ_CLASS_GROUP_DEF_INHERIT }, + { "OBJ_CLASS_GROUP_DEF_TRUE", LV_OBJ_CLASS_GROUP_DEF_TRUE }, + { "OBJ_FLAG_ADV_HITTEST", LV_OBJ_FLAG_ADV_HITTEST }, + { "OBJ_FLAG_CHECKABLE", LV_OBJ_FLAG_CHECKABLE }, + { "OBJ_FLAG_CLICKABLE", LV_OBJ_FLAG_CLICKABLE }, + { "OBJ_FLAG_CLICK_FOCUSABLE", LV_OBJ_FLAG_CLICK_FOCUSABLE }, + { "OBJ_FLAG_EVENT_BUBBLE", LV_OBJ_FLAG_EVENT_BUBBLE }, + { "OBJ_FLAG_FLOATING", LV_OBJ_FLAG_FLOATING }, + { "OBJ_FLAG_GESTURE_BUBBLE", LV_OBJ_FLAG_GESTURE_BUBBLE }, + { "OBJ_FLAG_HIDDEN", LV_OBJ_FLAG_HIDDEN }, + { "OBJ_FLAG_IGNORE_LAYOUT", LV_OBJ_FLAG_IGNORE_LAYOUT }, + { "OBJ_FLAG_LAYOUT_1", LV_OBJ_FLAG_LAYOUT_1 }, + { "OBJ_FLAG_LAYOUT_2", LV_OBJ_FLAG_LAYOUT_2 }, + { "OBJ_FLAG_PRESS_LOCK", LV_OBJ_FLAG_PRESS_LOCK }, + { "OBJ_FLAG_SCROLLABLE", LV_OBJ_FLAG_SCROLLABLE }, + { "OBJ_FLAG_SCROLL_CHAIN", LV_OBJ_FLAG_SCROLL_CHAIN }, + { "OBJ_FLAG_SCROLL_ELASTIC", LV_OBJ_FLAG_SCROLL_ELASTIC }, + { "OBJ_FLAG_SCROLL_MOMENTUM", LV_OBJ_FLAG_SCROLL_MOMENTUM }, + { "OBJ_FLAG_SCROLL_ONE", LV_OBJ_FLAG_SCROLL_ONE }, + { "OBJ_FLAG_SCROLL_ON_FOCUS", LV_OBJ_FLAG_SCROLL_ON_FOCUS }, + { "OBJ_FLAG_SNAPABLE", LV_OBJ_FLAG_SNAPABLE }, + { "OBJ_FLAG_USER_1", LV_OBJ_FLAG_USER_1 }, + { "OBJ_FLAG_USER_2", LV_OBJ_FLAG_USER_2 }, + { "OBJ_FLAG_USER_3", LV_OBJ_FLAG_USER_3 }, + { "OBJ_FLAG_USER_4", LV_OBJ_FLAG_USER_4 }, + { "OBJ_FLAG_WIDGET_1", LV_OBJ_FLAG_WIDGET_1 }, + { "OBJ_FLAG_WIDGET_2", LV_OBJ_FLAG_WIDGET_2 }, + { "OBJ_TREE_WALK_END", LV_OBJ_TREE_WALK_END }, + { "OBJ_TREE_WALK_NEXT", LV_OBJ_TREE_WALK_NEXT }, + { "OBJ_TREE_WALK_SKIP_CHILDREN", LV_OBJ_TREE_WALK_SKIP_CHILDREN }, { "OPA_0", LV_OPA_0 }, { "OPA_10", LV_OPA_10 }, { "OPA_100", LV_OPA_100 }, @@ -382,35 +405,50 @@ const be_constint_t lv0_constants[] = { { "OPA_90", LV_OPA_90 }, { "OPA_COVER", LV_OPA_COVER }, { "OPA_TRANSP", LV_OPA_TRANSP }, - { "PAGE_EDGE_BOTTOM", LV_PAGE_EDGE_BOTTOM }, - { "PAGE_EDGE_LEFT", LV_PAGE_EDGE_LEFT }, - { "PAGE_EDGE_RIGHT", LV_PAGE_EDGE_RIGHT }, - { "PAGE_EDGE_TOP", LV_PAGE_EDGE_TOP }, - { "PAGE_PART_BG", LV_PAGE_PART_BG }, - { "PAGE_PART_EDGE_FLASH", LV_PAGE_PART_EDGE_FLASH }, - { "PAGE_PART_SCROLLABLE", LV_PAGE_PART_SCROLLABLE }, - { "PAGE_PART_SCROLLBAR", LV_PAGE_PART_SCROLLBAR }, - { "PROTECT_CHILD_CHG", LV_PROTECT_CHILD_CHG }, - { "PROTECT_CLICK_FOCUS", LV_PROTECT_CLICK_FOCUS }, - { "PROTECT_EVENT_TO_DISABLED", LV_PROTECT_EVENT_TO_DISABLED }, - { "PROTECT_FOLLOW", LV_PROTECT_FOLLOW }, - { "PROTECT_NONE", LV_PROTECT_NONE }, - { "PROTECT_PARENT", LV_PROTECT_PARENT }, - { "PROTECT_POS", LV_PROTECT_POS }, - { "PROTECT_PRESS_LOST", LV_PROTECT_PRESS_LOST }, + { "PALETTE_AMBER", LV_PALETTE_AMBER }, + { "PALETTE_BLUE", LV_PALETTE_BLUE }, + { "PALETTE_BLUE_GREY", LV_PALETTE_BLUE_GREY }, + { "PALETTE_BROWN", LV_PALETTE_BROWN }, + { "PALETTE_CYAN", LV_PALETTE_CYAN }, + { "PALETTE_DEEP_ORANGE", LV_PALETTE_DEEP_ORANGE }, + { "PALETTE_DEEP_PURPLE", LV_PALETTE_DEEP_PURPLE }, + { "PALETTE_GREEN", LV_PALETTE_GREEN }, + { "PALETTE_GREY", LV_PALETTE_GREY }, + { "PALETTE_INDIGO", LV_PALETTE_INDIGO }, + { "PALETTE_LIGHT_BLUE", LV_PALETTE_LIGHT_BLUE }, + { "PALETTE_LIGHT_GREEN", LV_PALETTE_LIGHT_GREEN }, + { "PALETTE_LIME", LV_PALETTE_LIME }, + { "PALETTE_NONE", LV_PALETTE_NONE }, + { "PALETTE_ORANGE", LV_PALETTE_ORANGE }, + { "PALETTE_PINK", LV_PALETTE_PINK }, + { "PALETTE_PURPLE", LV_PALETTE_PURPLE }, + { "PALETTE_RED", LV_PALETTE_RED }, + { "PALETTE_TEAL", LV_PALETTE_TEAL }, + { "PALETTE_YELLOW", LV_PALETTE_YELLOW }, + { "PART_ANY", LV_PART_ANY }, + { "PART_CURSOR", LV_PART_CURSOR }, + { "PART_CUSTOM_FIRST", LV_PART_CUSTOM_FIRST }, + { "PART_INDICATOR", LV_PART_INDICATOR }, + { "PART_ITEMS", LV_PART_ITEMS }, + { "PART_KNOB", LV_PART_KNOB }, + { "PART_MAIN", LV_PART_MAIN }, + { "PART_SCROLLBAR", LV_PART_SCROLLBAR }, + { "PART_SELECTED", LV_PART_SELECTED }, + { "PART_TEXTAREA_PLACEHOLDER", LV_PART_TEXTAREA_PLACEHOLDER }, + { "PART_TICKS", LV_PART_TICKS }, { "RADIUS_CIRCLE", LV_RADIUS_CIRCLE }, { "RES_INV", LV_RES_INV }, { "RES_OK", LV_RES_OK }, { "ROLLER_MODE_INFINITE", LV_ROLLER_MODE_INFINITE }, { "ROLLER_MODE_NORMAL", LV_ROLLER_MODE_NORMAL }, - { "ROLLER_PART_BG", LV_ROLLER_PART_BG }, - { "ROLLER_PART_SELECTED", LV_ROLLER_PART_SELECTED }, + { "SCROLLBAR_MODE_ACTIVE", LV_SCROLLBAR_MODE_ACTIVE }, { "SCROLLBAR_MODE_AUTO", LV_SCROLLBAR_MODE_AUTO }, - { "SCROLLBAR_MODE_DRAG", LV_SCROLLBAR_MODE_DRAG }, - { "SCROLLBAR_MODE_HIDE", LV_SCROLLBAR_MODE_HIDE }, { "SCROLLBAR_MODE_OFF", LV_SCROLLBAR_MODE_OFF }, { "SCROLLBAR_MODE_ON", LV_SCROLLBAR_MODE_ON }, - { "SCROLLBAR_MODE_UNHIDE", LV_SCROLLBAR_MODE_UNHIDE }, + { "SCROLL_SNAP_CENTER", LV_SCROLL_SNAP_CENTER }, + { "SCROLL_SNAP_END", LV_SCROLL_SNAP_END }, + { "SCROLL_SNAP_NONE", LV_SCROLL_SNAP_NONE }, + { "SCROLL_SNAP_START", LV_SCROLL_SNAP_START }, { "SCR_LOAD_ANIM_FADE_ON", LV_SCR_LOAD_ANIM_FADE_ON }, { "SCR_LOAD_ANIM_MOVE_BOTTOM", LV_SCR_LOAD_ANIM_MOVE_BOTTOM }, { "SCR_LOAD_ANIM_MOVE_LEFT", LV_SCR_LOAD_ANIM_MOVE_LEFT }, @@ -421,256 +459,145 @@ const be_constint_t lv0_constants[] = { { "SCR_LOAD_ANIM_OVER_LEFT", LV_SCR_LOAD_ANIM_OVER_LEFT }, { "SCR_LOAD_ANIM_OVER_RIGHT", LV_SCR_LOAD_ANIM_OVER_RIGHT }, { "SCR_LOAD_ANIM_OVER_TOP", LV_SCR_LOAD_ANIM_OVER_TOP }, - { "SLIDER_PART_BG", LV_SLIDER_PART_BG }, - { "SLIDER_PART_INDIC", LV_SLIDER_PART_INDIC }, - { "SLIDER_PART_KNOB", LV_SLIDER_PART_KNOB }, - { "SLIDER_TYPE_NORMAL", LV_SLIDER_TYPE_NORMAL }, - { "SLIDER_TYPE_RANGE", LV_SLIDER_TYPE_RANGE }, - { "SLIDER_TYPE_SYMMETRICAL", LV_SLIDER_TYPE_SYMMETRICAL }, - { "SPINBOX_PART_BG", LV_SPINBOX_PART_BG }, - { "SPINBOX_PART_CURSOR", LV_SPINBOX_PART_CURSOR }, - { "SPINNER_DIR_BACKWARD", LV_SPINNER_DIR_BACKWARD }, - { "SPINNER_DIR_FORWARD", LV_SPINNER_DIR_FORWARD }, - { "SPINNER_PART_BG", LV_SPINNER_PART_BG }, - { "SPINNER_PART_INDIC", LV_SPINNER_PART_INDIC }, - { "SPINNER_TYPE_CONSTANT_ARC", LV_SPINNER_TYPE_CONSTANT_ARC }, - { "SPINNER_TYPE_FILLSPIN_ARC", LV_SPINNER_TYPE_FILLSPIN_ARC }, - { "SPINNER_TYPE_SPINNING_ARC", LV_SPINNER_TYPE_SPINNING_ARC }, + { "SIZE_CONTENT", LV_SIZE_CONTENT }, + { "SLIDER_MODE_NORMAL", LV_SLIDER_MODE_NORMAL }, + { "SLIDER_MODE_RANGE", LV_SLIDER_MODE_RANGE }, + { "SLIDER_MODE_SYMMETRICAL", LV_SLIDER_MODE_SYMMETRICAL }, + { "SPAN_MODE_BREAK", LV_SPAN_MODE_BREAK }, + { "SPAN_MODE_EXPAND", LV_SPAN_MODE_EXPAND }, + { "SPAN_MODE_FIXED", LV_SPAN_MODE_FIXED }, + { "SPAN_OVERFLOW_CLIP", LV_SPAN_OVERFLOW_CLIP }, + { "SPAN_OVERFLOW_ELLIPSIS", LV_SPAN_OVERFLOW_ELLIPSIS }, + { "STATE_ANY", LV_STATE_ANY }, { "STATE_CHECKED", LV_STATE_CHECKED }, { "STATE_DEFAULT", LV_STATE_DEFAULT }, { "STATE_DISABLED", LV_STATE_DISABLED }, { "STATE_EDITED", LV_STATE_EDITED }, { "STATE_FOCUSED", LV_STATE_FOCUSED }, + { "STATE_FOCUS_KEY", LV_STATE_FOCUS_KEY }, { "STATE_HOVERED", LV_STATE_HOVERED }, { "STATE_PRESSED", LV_STATE_PRESSED }, - { "STYLE_BG_BLEND_MODE", LV_STYLE_BG_BLEND_MODE }, + { "STATE_SCROLLED", LV_STATE_SCROLLED }, + { "STATE_USER_1", LV_STATE_USER_1 }, + { "STATE_USER_2", LV_STATE_USER_2 }, + { "STATE_USER_3", LV_STATE_USER_3 }, + { "STATE_USER_4", LV_STATE_USER_4 }, + { "STYLE_ALIGN", LV_STYLE_ALIGN }, + { "STYLE_ANIM_SPEED", LV_STYLE_ANIM_SPEED }, + { "STYLE_ANIM_TIME", LV_STYLE_ANIM_TIME }, + { "STYLE_ARC_COLOR", LV_STYLE_ARC_COLOR }, + { "STYLE_ARC_COLOR_FILTERED", LV_STYLE_ARC_COLOR_FILTERED }, + { "STYLE_ARC_IMG_SRC", LV_STYLE_ARC_IMG_SRC }, + { "STYLE_ARC_OPA", LV_STYLE_ARC_OPA }, + { "STYLE_ARC_ROUNDED", LV_STYLE_ARC_ROUNDED }, + { "STYLE_ARC_WIDTH", LV_STYLE_ARC_WIDTH }, + { "STYLE_BASE_DIR", LV_STYLE_BASE_DIR }, { "STYLE_BG_COLOR", LV_STYLE_BG_COLOR }, + { "STYLE_BG_COLOR_FILTERED", LV_STYLE_BG_COLOR_FILTERED }, { "STYLE_BG_GRAD_COLOR", LV_STYLE_BG_GRAD_COLOR }, + { "STYLE_BG_GRAD_COLOR_FILTERED", LV_STYLE_BG_GRAD_COLOR_FILTERED }, { "STYLE_BG_GRAD_DIR", LV_STYLE_BG_GRAD_DIR }, { "STYLE_BG_GRAD_STOP", LV_STYLE_BG_GRAD_STOP }, + { "STYLE_BG_IMG_OPA", LV_STYLE_BG_IMG_OPA }, + { "STYLE_BG_IMG_RECOLOR", LV_STYLE_BG_IMG_RECOLOR }, + { "STYLE_BG_IMG_RECOLOR_FILTERED", LV_STYLE_BG_IMG_RECOLOR_FILTERED }, + { "STYLE_BG_IMG_RECOLOR_OPA", LV_STYLE_BG_IMG_RECOLOR_OPA }, + { "STYLE_BG_IMG_SRC", LV_STYLE_BG_IMG_SRC }, + { "STYLE_BG_IMG_TILED", LV_STYLE_BG_IMG_TILED }, { "STYLE_BG_MAIN_STOP", LV_STYLE_BG_MAIN_STOP }, { "STYLE_BG_OPA", LV_STYLE_BG_OPA }, - { "STYLE_BORDER_BLEND_MODE", LV_STYLE_BORDER_BLEND_MODE }, + { "STYLE_BLEND_MODE", LV_STYLE_BLEND_MODE }, { "STYLE_BORDER_COLOR", LV_STYLE_BORDER_COLOR }, + { "STYLE_BORDER_COLOR_FILTERED", LV_STYLE_BORDER_COLOR_FILTERED }, { "STYLE_BORDER_OPA", LV_STYLE_BORDER_OPA }, { "STYLE_BORDER_POST", LV_STYLE_BORDER_POST }, { "STYLE_BORDER_SIDE", LV_STYLE_BORDER_SIDE }, { "STYLE_BORDER_WIDTH", LV_STYLE_BORDER_WIDTH }, { "STYLE_CLIP_CORNER", LV_STYLE_CLIP_CORNER }, - { "STYLE_IMAGE_BLEND_MODE", LV_STYLE_IMAGE_BLEND_MODE }, - { "STYLE_IMAGE_OPA", LV_STYLE_IMAGE_OPA }, - { "STYLE_IMAGE_RECOLOR", LV_STYLE_IMAGE_RECOLOR }, - { "STYLE_IMAGE_RECOLOR_OPA", LV_STYLE_IMAGE_RECOLOR_OPA }, - { "STYLE_LINE_BLEND_MODE", LV_STYLE_LINE_BLEND_MODE }, + { "STYLE_COLOR_FILTER_DSC", LV_STYLE_COLOR_FILTER_DSC }, + { "STYLE_COLOR_FILTER_OPA", LV_STYLE_COLOR_FILTER_OPA }, + { "STYLE_HEIGHT", LV_STYLE_HEIGHT }, + { "STYLE_IMG_OPA", LV_STYLE_IMG_OPA }, + { "STYLE_IMG_RECOLOR", LV_STYLE_IMG_RECOLOR }, + { "STYLE_IMG_RECOLOR_FILTERED", LV_STYLE_IMG_RECOLOR_FILTERED }, + { "STYLE_IMG_RECOLOR_OPA", LV_STYLE_IMG_RECOLOR_OPA }, + { "STYLE_LAYOUT", LV_STYLE_LAYOUT }, { "STYLE_LINE_COLOR", LV_STYLE_LINE_COLOR }, + { "STYLE_LINE_COLOR_FILTERED", LV_STYLE_LINE_COLOR_FILTERED }, { "STYLE_LINE_DASH_GAP", LV_STYLE_LINE_DASH_GAP }, { "STYLE_LINE_DASH_WIDTH", LV_STYLE_LINE_DASH_WIDTH }, { "STYLE_LINE_OPA", LV_STYLE_LINE_OPA }, { "STYLE_LINE_ROUNDED", LV_STYLE_LINE_ROUNDED }, { "STYLE_LINE_WIDTH", LV_STYLE_LINE_WIDTH }, - { "STYLE_MARGIN_BOTTOM", LV_STYLE_MARGIN_BOTTOM }, - { "STYLE_MARGIN_LEFT", LV_STYLE_MARGIN_LEFT }, - { "STYLE_MARGIN_RIGHT", LV_STYLE_MARGIN_RIGHT }, - { "STYLE_MARGIN_TOP", LV_STYLE_MARGIN_TOP }, - { "STYLE_OPA_SCALE", LV_STYLE_OPA_SCALE }, - { "STYLE_OUTLINE_BLEND_MODE", LV_STYLE_OUTLINE_BLEND_MODE }, + { "STYLE_MAX_HEIGHT", LV_STYLE_MAX_HEIGHT }, + { "STYLE_MAX_WIDTH", LV_STYLE_MAX_WIDTH }, + { "STYLE_MIN_HEIGHT", LV_STYLE_MIN_HEIGHT }, + { "STYLE_MIN_WIDTH", LV_STYLE_MIN_WIDTH }, + { "STYLE_OPA", LV_STYLE_OPA }, { "STYLE_OUTLINE_COLOR", LV_STYLE_OUTLINE_COLOR }, + { "STYLE_OUTLINE_COLOR_FILTERED", LV_STYLE_OUTLINE_COLOR_FILTERED }, { "STYLE_OUTLINE_OPA", LV_STYLE_OUTLINE_OPA }, { "STYLE_OUTLINE_PAD", LV_STYLE_OUTLINE_PAD }, { "STYLE_OUTLINE_WIDTH", LV_STYLE_OUTLINE_WIDTH }, { "STYLE_PAD_BOTTOM", LV_STYLE_PAD_BOTTOM }, - { "STYLE_PAD_INNER", LV_STYLE_PAD_INNER }, + { "STYLE_PAD_COLUMN", LV_STYLE_PAD_COLUMN }, { "STYLE_PAD_LEFT", LV_STYLE_PAD_LEFT }, { "STYLE_PAD_RIGHT", LV_STYLE_PAD_RIGHT }, + { "STYLE_PAD_ROW", LV_STYLE_PAD_ROW }, { "STYLE_PAD_TOP", LV_STYLE_PAD_TOP }, - { "STYLE_PATTERN_BLEND_MODE", LV_STYLE_PATTERN_BLEND_MODE }, - { "STYLE_PATTERN_IMAGE", LV_STYLE_PATTERN_IMAGE }, - { "STYLE_PATTERN_OPA", LV_STYLE_PATTERN_OPA }, - { "STYLE_PATTERN_RECOLOR", LV_STYLE_PATTERN_RECOLOR }, - { "STYLE_PATTERN_RECOLOR_OPA", LV_STYLE_PATTERN_RECOLOR_OPA }, - { "STYLE_PATTERN_REPEAT", LV_STYLE_PATTERN_REPEAT }, - { "STYLE_PROP_ALL", LV_STYLE_PROP_ALL }, + { "STYLE_PROP_ANY", LV_STYLE_PROP_ANY }, + { "STYLE_PROP_INV", LV_STYLE_PROP_INV }, { "STYLE_RADIUS", LV_STYLE_RADIUS }, - { "STYLE_SCALE_BORDER_WIDTH", LV_STYLE_SCALE_BORDER_WIDTH }, - { "STYLE_SCALE_END_BORDER_WIDTH", LV_STYLE_SCALE_END_BORDER_WIDTH }, - { "STYLE_SCALE_END_COLOR", LV_STYLE_SCALE_END_COLOR }, - { "STYLE_SCALE_END_LINE_WIDTH", LV_STYLE_SCALE_END_LINE_WIDTH }, - { "STYLE_SCALE_GRAD_COLOR", LV_STYLE_SCALE_GRAD_COLOR }, - { "STYLE_SCALE_WIDTH", LV_STYLE_SCALE_WIDTH }, - { "STYLE_SHADOW_BLEND_MODE", LV_STYLE_SHADOW_BLEND_MODE }, { "STYLE_SHADOW_COLOR", LV_STYLE_SHADOW_COLOR }, + { "STYLE_SHADOW_COLOR_FILTERED", LV_STYLE_SHADOW_COLOR_FILTERED }, { "STYLE_SHADOW_OFS_X", LV_STYLE_SHADOW_OFS_X }, { "STYLE_SHADOW_OFS_Y", LV_STYLE_SHADOW_OFS_Y }, { "STYLE_SHADOW_OPA", LV_STYLE_SHADOW_OPA }, { "STYLE_SHADOW_SPREAD", LV_STYLE_SHADOW_SPREAD }, { "STYLE_SHADOW_WIDTH", LV_STYLE_SHADOW_WIDTH }, - { "STYLE_SIZE", LV_STYLE_SIZE }, - { "STYLE_TEXT_BLEND_MODE", LV_STYLE_TEXT_BLEND_MODE }, + { "STYLE_TEXT_ALIGN", LV_STYLE_TEXT_ALIGN }, { "STYLE_TEXT_COLOR", LV_STYLE_TEXT_COLOR }, + { "STYLE_TEXT_COLOR_FILTERED", LV_STYLE_TEXT_COLOR_FILTERED }, { "STYLE_TEXT_DECOR", LV_STYLE_TEXT_DECOR }, { "STYLE_TEXT_FONT", LV_STYLE_TEXT_FONT }, { "STYLE_TEXT_LETTER_SPACE", LV_STYLE_TEXT_LETTER_SPACE }, { "STYLE_TEXT_LINE_SPACE", LV_STYLE_TEXT_LINE_SPACE }, { "STYLE_TEXT_OPA", LV_STYLE_TEXT_OPA }, - { "STYLE_TEXT_SEL_BG_COLOR", LV_STYLE_TEXT_SEL_BG_COLOR }, - { "STYLE_TEXT_SEL_COLOR", LV_STYLE_TEXT_SEL_COLOR }, { "STYLE_TRANSFORM_ANGLE", LV_STYLE_TRANSFORM_ANGLE }, { "STYLE_TRANSFORM_HEIGHT", LV_STYLE_TRANSFORM_HEIGHT }, { "STYLE_TRANSFORM_WIDTH", LV_STYLE_TRANSFORM_WIDTH }, { "STYLE_TRANSFORM_ZOOM", LV_STYLE_TRANSFORM_ZOOM }, - { "STYLE_TRANSITION_DELAY", LV_STYLE_TRANSITION_DELAY }, - { "STYLE_TRANSITION_PATH", LV_STYLE_TRANSITION_PATH }, - { "STYLE_TRANSITION_PROP_1", LV_STYLE_TRANSITION_PROP_1 }, - { "STYLE_TRANSITION_PROP_2", LV_STYLE_TRANSITION_PROP_2 }, - { "STYLE_TRANSITION_PROP_3", LV_STYLE_TRANSITION_PROP_3 }, - { "STYLE_TRANSITION_PROP_4", LV_STYLE_TRANSITION_PROP_4 }, - { "STYLE_TRANSITION_PROP_5", LV_STYLE_TRANSITION_PROP_5 }, - { "STYLE_TRANSITION_PROP_6", LV_STYLE_TRANSITION_PROP_6 }, - { "STYLE_TRANSITION_TIME", LV_STYLE_TRANSITION_TIME }, - { "STYLE_VALUE_ALIGN", LV_STYLE_VALUE_ALIGN }, - { "STYLE_VALUE_BLEND_MODE", LV_STYLE_VALUE_BLEND_MODE }, - { "STYLE_VALUE_COLOR", LV_STYLE_VALUE_COLOR }, - { "STYLE_VALUE_FONT", LV_STYLE_VALUE_FONT }, - { "STYLE_VALUE_LETTER_SPACE", LV_STYLE_VALUE_LETTER_SPACE }, - { "STYLE_VALUE_LINE_SPACE", LV_STYLE_VALUE_LINE_SPACE }, - { "STYLE_VALUE_OFS_X", LV_STYLE_VALUE_OFS_X }, - { "STYLE_VALUE_OFS_Y", LV_STYLE_VALUE_OFS_Y }, - { "STYLE_VALUE_OPA", LV_STYLE_VALUE_OPA }, - { "STYLE_VALUE_STR", LV_STYLE_VALUE_STR }, - { "SWITCH_PART_BG", LV_SWITCH_PART_BG }, - { "SWITCH_PART_INDIC", LV_SWITCH_PART_INDIC }, - { "SWITCH_PART_KNOB", LV_SWITCH_PART_KNOB }, - { "TABLE_PART_BG", LV_TABLE_PART_BG }, - { "TABLE_PART_CELL1", LV_TABLE_PART_CELL1 }, - { "TABLE_PART_CELL2", LV_TABLE_PART_CELL2 }, - { "TABLE_PART_CELL3", LV_TABLE_PART_CELL3 }, - { "TABLE_PART_CELL4", LV_TABLE_PART_CELL4 }, - { "TABVIEW_PART_BG", LV_TABVIEW_PART_BG }, - { "TABVIEW_PART_BG_SCROLLABLE", LV_TABVIEW_PART_BG_SCROLLABLE }, - { "TABVIEW_PART_INDIC", LV_TABVIEW_PART_INDIC }, - { "TABVIEW_PART_TAB_BG", LV_TABVIEW_PART_TAB_BG }, - { "TABVIEW_PART_TAB_BTN", LV_TABVIEW_PART_TAB_BTN }, - { "TABVIEW_TAB_POS_BOTTOM", LV_TABVIEW_TAB_POS_BOTTOM }, - { "TABVIEW_TAB_POS_LEFT", LV_TABVIEW_TAB_POS_LEFT }, - { "TABVIEW_TAB_POS_NONE", LV_TABVIEW_TAB_POS_NONE }, - { "TABVIEW_TAB_POS_RIGHT", LV_TABVIEW_TAB_POS_RIGHT }, - { "TABVIEW_TAB_POS_TOP", LV_TABVIEW_TAB_POS_TOP }, + { "STYLE_TRANSITION", LV_STYLE_TRANSITION }, + { "STYLE_TRANSLATE_X", LV_STYLE_TRANSLATE_X }, + { "STYLE_TRANSLATE_Y", LV_STYLE_TRANSLATE_Y }, + { "STYLE_WIDTH", LV_STYLE_WIDTH }, + { "STYLE_X", LV_STYLE_X }, + { "STYLE_Y", LV_STYLE_Y }, + { "TABLE_CELL_CTRL_CUSTOM_1", LV_TABLE_CELL_CTRL_CUSTOM_1 }, + { "TABLE_CELL_CTRL_CUSTOM_2", LV_TABLE_CELL_CTRL_CUSTOM_2 }, + { "TABLE_CELL_CTRL_CUSTOM_3", LV_TABLE_CELL_CTRL_CUSTOM_3 }, + { "TABLE_CELL_CTRL_CUSTOM_4", LV_TABLE_CELL_CTRL_CUSTOM_4 }, + { "TABLE_CELL_CTRL_MERGE_RIGHT", LV_TABLE_CELL_CTRL_MERGE_RIGHT }, + { "TABLE_CELL_CTRL_TEXT_CROP", LV_TABLE_CELL_CTRL_TEXT_CROP }, { "TEXTAREA_CURSOR_LAST", LV_TEXTAREA_CURSOR_LAST }, - { "TEXTAREA_PART_BG", LV_TEXTAREA_PART_BG }, - { "TEXTAREA_PART_CURSOR", LV_TEXTAREA_PART_CURSOR }, - { "TEXTAREA_PART_EDGE_FLASH", LV_TEXTAREA_PART_EDGE_FLASH }, - { "TEXTAREA_PART_PLACEHOLDER", LV_TEXTAREA_PART_PLACEHOLDER }, - { "TEXTAREA_PART_SCROLLBAR", LV_TEXTAREA_PART_SCROLLBAR }, + { "TEXT_ALIGN_AUTO", LV_TEXT_ALIGN_AUTO }, + { "TEXT_ALIGN_CENTER", LV_TEXT_ALIGN_CENTER }, + { "TEXT_ALIGN_LEFT", LV_TEXT_ALIGN_LEFT }, + { "TEXT_ALIGN_RIGHT", LV_TEXT_ALIGN_RIGHT }, + { "TEXT_CMD_STATE_IN", LV_TEXT_CMD_STATE_IN }, + { "TEXT_CMD_STATE_PAR", LV_TEXT_CMD_STATE_PAR }, + { "TEXT_CMD_STATE_WAIT", LV_TEXT_CMD_STATE_WAIT }, { "TEXT_DECOR_NONE", LV_TEXT_DECOR_NONE }, { "TEXT_DECOR_STRIKETHROUGH", LV_TEXT_DECOR_STRIKETHROUGH }, { "TEXT_DECOR_UNDERLINE", LV_TEXT_DECOR_UNDERLINE }, - { "TILEVIEW_PART_BG", LV_TILEVIEW_PART_BG }, - { "TILEVIEW_PART_EDGE_FLASH", LV_TILEVIEW_PART_EDGE_FLASH }, - { "TILEVIEW_PART_SCROLLBAR", LV_TILEVIEW_PART_SCROLLBAR }, - { "TXT_CMD_STATE_IN", LV_TXT_CMD_STATE_IN }, - { "TXT_CMD_STATE_PAR", LV_TXT_CMD_STATE_PAR }, - { "TXT_CMD_STATE_WAIT", LV_TXT_CMD_STATE_WAIT }, - { "TXT_FLAG_CENTER", LV_TXT_FLAG_CENTER }, - { "TXT_FLAG_EXPAND", LV_TXT_FLAG_EXPAND }, - { "TXT_FLAG_FIT", LV_TXT_FLAG_FIT }, - { "TXT_FLAG_NONE", LV_TXT_FLAG_NONE }, - { "TXT_FLAG_RECOLOR", LV_TXT_FLAG_RECOLOR }, - { "TXT_FLAG_RIGHT", LV_TXT_FLAG_RIGHT }, - { "WIN_PART_BG", LV_WIN_PART_BG }, - { "WIN_PART_CONTENT_SCROLLABLE", LV_WIN_PART_CONTENT_SCROLLABLE }, - { "WIN_PART_HEADER", LV_WIN_PART_HEADER }, - { "WIN_PART_SCROLLBAR", LV_WIN_PART_SCROLLBAR }, + { "TEXT_FLAG_EXPAND", LV_TEXT_FLAG_EXPAND }, + { "TEXT_FLAG_FIT", LV_TEXT_FLAG_FIT }, + { "TEXT_FLAG_NONE", LV_TEXT_FLAG_NONE }, + { "TEXT_FLAG_RECOLOR", LV_TEXT_FLAG_RECOLOR }, }; const size_t lv0_constants_size = sizeof(lv0_constants)/sizeof(lv0_constants[0]); -#if !BE_USE_PRECOMPILED_OBJECT - -be_native_module_attr_table(lvgl) { - // Symbols - be_native_module_str("SYMBOL_AUDIO", "\xef\x80\x81"), - be_native_module_str("SYMBOL_VIDEO", "\xef\x80\x88"), - be_native_module_str("SYMBOL_LIST", "\xef\x80\x8b"), - be_native_module_str("SYMBOL_OK", "\xef\x80\x8c"), - be_native_module_str("SYMBOL_CLOSE", "\xef\x80\x8d"), - be_native_module_str("SYMBOL_POWER", "\xef\x80\x91"), - be_native_module_str("SYMBOL_SETTINGS", "\xef\x80\x93"), - be_native_module_str("SYMBOL_HOME", "\xef\x80\x95"), - be_native_module_str("SYMBOL_DOWNLOAD", "\xef\x80\x99"), - be_native_module_str("SYMBOL_DRIVE", "\xef\x80\x9c"), - be_native_module_str("SYMBOL_REFRESH", "\xef\x80\xa1"), - be_native_module_str("SYMBOL_MUTE", "\xef\x80\xa6"), - be_native_module_str("SYMBOL_VOLUME_MID", "\xef\x80\xa7"), - be_native_module_str("SYMBOL_VOLUME_MAX", "\xef\x80\xa8"), - be_native_module_str("SYMBOL_IMAGE", "\xef\x80\xbe"), - be_native_module_str("SYMBOL_EDIT", "\xef\x8C\x84"), - be_native_module_str("SYMBOL_PREV", "\xef\x81\x88"), - be_native_module_str("SYMBOL_PLAY", "\xef\x81\x8b"), - be_native_module_str("SYMBOL_PAUSE", "\xef\x81\x8c"), - be_native_module_str("SYMBOL_STOP", "\xef\x81\x8d"), - be_native_module_str("SYMBOL_NEXT", "\xef\x81\x91"), - be_native_module_str("SYMBOL_EJECT", "\xef\x81\x92"), - be_native_module_str("SYMBOL_LEFT", "\xef\x81\x93"), - be_native_module_str("SYMBOL_RIGHT", "\xef\x81\x94"), - be_native_module_str("SYMBOL_PLUS", "\xef\x81\xa7"), - be_native_module_str("SYMBOL_MINUS", "\xef\x81\xa8"), - be_native_module_str("SYMBOL_EYE_OPEN", "\xef\x81\xae"), - be_native_module_str("SYMBOL_EYE_CLOSE", "\xef\x81\xb0"), - be_native_module_str("SYMBOL_WARNING", "\xef\x81\xb1"), - be_native_module_str("SYMBOL_SHUFFLE", "\xef\x81\xb4"), - be_native_module_str("SYMBOL_UP", "\xef\x81\xb7"), - be_native_module_str("SYMBOL_DOWN", "\xef\x81\xb8"), - be_native_module_str("SYMBOL_LOOP", "\xef\x81\xb9"), - be_native_module_str("SYMBOL_DIRECTORY", "\xef\x81\xbb"), - be_native_module_str("SYMBOL_UPLOAD", "\xef\x82\x93"), - be_native_module_str("SYMBOL_CALL", "\xef\x82\x95"), - be_native_module_str("SYMBOL_CUT", "\xef\x83\x84"), - be_native_module_str("SYMBOL_COPY", "\xef\x83\x85"), - be_native_module_str("SYMBOL_SAVE", "\xef\x83\x87"), - be_native_module_str("SYMBOL_CHARGE", "\xef\x83\xa7"), - be_native_module_str("SYMBOL_PASTE", "\xef\x83\xAA"), - be_native_module_str("SYMBOL_BELL", "\xef\x83\xb3"), - be_native_module_str("SYMBOL_KEYBOARD", "\xef\x84\x9c"), - be_native_module_str("SYMBOL_GPS", "\xef\x84\xa4"), - be_native_module_str("SYMBOL_FILE", "\xef\x85\x9b"), - be_native_module_str("SYMBOL_WIFI", "\xef\x87\xab"), - be_native_module_str("SYMBOL_BATTERY_FULL", "\xef\x89\x80"), - be_native_module_str("SYMBOL_BATTERY_3", "\xef\x89\x81"), - be_native_module_str("SYMBOL_BATTERY_2", "\xef\x89\x82"), - be_native_module_str("SYMBOL_BATTERY_1", "\xef\x89\x83"), - be_native_module_str("SYMBOL_BATTERY_EMPTY", "\xef\x89\x84"), - be_native_module_str("SYMBOL_USB", "\xef\x8a\x87"), - be_native_module_str("SYMBOL_BLUETOOTH", "\xef\x8a\x93"), - be_native_module_str("SYMBOL_TRASH", "\xef\x8B\xAD"), - be_native_module_str("SYMBOL_BACKSPACE", "\xef\x95\x9A"), - be_native_module_str("SYMBOL_SD_CARD", "\xef\x9F\x82"), - be_native_module_str("SYMBOL_NEW_LINE", "\xef\xA2\xA2"), - - be_native_module_str("SYMBOL_DUMMY", "\xEF\xA3\xBF"), - - be_native_module_str("SYMBOL_BULLET", "\xE2\x80\xA2"), - - -/* `lvgl` module functions */ - - - - be_native_module_function("member", lv0_member), - be_native_module_function("start", lv0_start), - - be_native_module_function("register_button_encoder", lv0_register_button_encoder), - - be_native_module_function("montserrat_font", lv0_load_montserrat_font), - be_native_module_function("seg7_font", lv0_load_seg7_font), - be_native_module_function("load_font", lv0_load_font), - be_native_module_function("load_freetype_font", lv0_load_freetype_font), - - be_native_module_function("screenshot", lv0_screenshot), -}; - -be_define_native_module(lvgl, NULL); - -#else be_define_local_const_str(SYMBOL_AUDIO, "\xef\x80\x81", 0, 3); be_define_local_const_str(SYMBOL_VIDEO, "\xef\x80\x88", 0, 3); @@ -814,7 +741,6 @@ module lvgl (scope: global) { } @const_object_info_end */ #include "../generate/be_fixed_lvgl.h" -#endif #endif // USE_LVGL diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c index 0ff6d9951..c74b25481 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_arcs_lib.c @@ -8,11 +8,110 @@ #include "lvgl.h" /******************************************************************** -** Solidified function: my_design_cb +** Solidified function: set_percentage ********************************************************************/ -be_local_closure(my_design_cb, /* name */ +be_local_closure(set_percentage, /* name */ be_nested_proto( - 26, /* nstack */ + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("invalidate", -1645232368, 10), + }), + (be_nested_const_str("set_percentage", -1342944572, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[18]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x540E0018, // 0001 LDINT R3 25 + 0x0C080403, // 0002 DIV R2 R2 R3 + 0x540E0063, // 0003 LDINT R3 100 + 0x240C0203, // 0004 GT R3 R1 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x54060063, // 0006 LDINT R1 100 + 0x140C0301, // 0007 LT R3 R1 K1 + 0x780E0000, // 0008 JMPF R3 #000A + 0x58040001, // 0009 LDCONST R1 K1 + 0x90020001, // 000A SETMBR R0 K0 R1 + 0x540E0018, // 000B LDINT R3 25 + 0x0C0C0203, // 000C DIV R3 R1 R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0001, // 000E JMPF R3 #0011 + 0x8C0C0102, // 000F GETMET R3 R0 K2 + 0x7C0C0200, // 0010 CALL R3 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_string("_lvgl", -1605747813, 5), + /* K1 */ be_nested_string("create_custom_widget", 1140594778, 20), + /* K2 */ be_nested_string("percentage", -1756136011, 10), + /* K3 */ be_nested_string("p1", -1605446022, 2), + /* K4 */ be_nested_string("lv_point", -174745506, 8), + /* K5 */ be_nested_string("p2", -1622223641, 2), + /* K6 */ be_nested_string("area", -1693507260, 4), + /* K7 */ be_nested_string("lv_area", -1773816895, 7), + /* K8 */ be_nested_string("line_dsc", -200476318, 8), + /* K9 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[20]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C080600, // 0004 CALL R2 3 + 0x540A0063, // 0005 LDINT R2 100 + 0x90020402, // 0006 SETMBR R0 K2 R2 + 0xB80A0800, // 0007 GETNGBL R2 K4 + 0x7C080000, // 0008 CALL R2 0 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0xB80A0800, // 000A GETNGBL R2 K4 + 0x7C080000, // 000B CALL R2 0 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0xB80A0E00, // 000D GETNGBL R2 K7 + 0x7C080000, // 000E CALL R2 0 + 0x90020C02, // 000F SETMBR R0 K6 R2 + 0xB80A1200, // 0010 GETNGBL R2 K9 + 0x7C080000, // 0011 CALL R2 0 + 0x90021002, // 0012 SETMBR R0 K8 R2 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: widget_event +********************************************************************/ +be_local_closure(widget_event, /* name */ + be_nested_proto( + 28, /* nstack */ 3, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -44,225 +143,228 @@ be_local_closure(my_design_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[35]) { /* constants */ - /* K0 */ be_nested_string("math", -293037681, 4), - /* K1 */ be_nested_string("get_height", -723211773, 10), - /* K2 */ be_nested_string("get_width", -1001549996, 9), - /* K3 */ be_const_int(2), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_string("lv", 1529997255, 2), - /* K6 */ be_nested_string("DESIGN_COVER_CHK", -1298406708, 16), - /* K7 */ be_nested_string("ancestor_design", 421545719, 15), - /* K8 */ be_nested_string("call", -1276017495, 4), - /* K9 */ be_nested_string("DESIGN_DRAW_MAIN", -904475754, 16), - /* K10 */ be_nested_string("get_coords", 1044089006, 10), - /* K11 */ be_nested_string("area", -1693507260, 4), - /* K12 */ be_nested_string("x1", 274927234, 2), - /* K13 */ be_nested_string("y1", -1939865569, 2), - /* K14 */ be_nested_string("draw_line_dsc_init", -428273650, 18), - /* K15 */ be_nested_string("line_dsc", -200476318, 8), - /* K16 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), - /* K17 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), - /* K18 */ be_nested_string("round_start", -1345482912, 11), - /* K19 */ be_const_int(1), - /* K20 */ be_nested_string("round_end", 985288225, 9), - /* K21 */ be_nested_string("width", -1786286561, 5), - /* K22 */ be_nested_string("get_style_line_color", 805371932, 20), - /* K23 */ be_nested_string("STATE_DEFAULT", 712406428, 13), - /* K24 */ be_nested_string("get_style_bg_color", 964794381, 18), - /* K25 */ be_nested_string("deg", -967213025, 3), - /* K26 */ be_nested_string("acos", 1006755615, 4), - /* K27 */ be_nested_string("p1", -1605446022, 2), - /* K28 */ be_nested_string("x", -49524601, 1), - /* K29 */ be_nested_string("y", -66302220, 1), - /* K30 */ be_nested_string("color", 1031692888, 5), - /* K31 */ be_nested_string("percentage", -1756136011, 10), - /* K32 */ be_nested_string("draw_arc", 1828251676, 8), - /* K33 */ be_const_int(0), - /* K34 */ be_nested_string("DESIGN_RES_OK", -1265307123, 13), + ( &(const bvalue[36]) { /* constants */ + /* K0 */ be_nested_string("lv", 1529997255, 2), + /* K1 */ be_nested_string("obj_event_base", 1624064363, 14), + /* K2 */ be_nested_string("RES_OK", 1233817284, 6), + /* K3 */ be_nested_string("code", -114201356, 4), + /* K4 */ be_nested_string("math", -293037681, 4), + /* K5 */ be_nested_string("get_height", -723211773, 10), + /* K6 */ be_nested_string("get_width", -1001549996, 9), + /* K7 */ be_const_int(2), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_string("EVENT_DRAW_MAIN", 1955620614, 15), + /* K10 */ be_nested_string("lv_area", -1773816895, 7), + /* K11 */ be_nested_string("param", 1309554226, 5), + /* K12 */ be_nested_string("get_coords", 1044089006, 10), + /* K13 */ be_nested_string("area", -1693507260, 4), + /* K14 */ be_nested_string("x1", 274927234, 2), + /* K15 */ be_nested_string("y1", -1939865569, 2), + /* K16 */ be_nested_string("draw_line_dsc_init", -428273650, 18), + /* K17 */ be_nested_string("line_dsc", -200476318, 8), + /* K18 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), + /* K19 */ be_nested_string("PART_MAIN", -1821475788, 9), + /* K20 */ be_nested_string("round_start", -1345482912, 11), + /* K21 */ be_const_int(1), + /* K22 */ be_nested_string("round_end", 985288225, 9), + /* K23 */ be_nested_string("width", -1786286561, 5), + /* K24 */ be_nested_string("get_style_line_color", 805371932, 20), + /* K25 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K26 */ be_nested_string("get_style_bg_color", 964794381, 18), + /* K27 */ be_nested_string("deg", -967213025, 3), + /* K28 */ be_nested_string("acos", 1006755615, 4), + /* K29 */ be_nested_string("p1", -1605446022, 2), + /* K30 */ be_nested_string("x", -49524601, 1), + /* K31 */ be_nested_string("y", -66302220, 1), + /* K32 */ be_nested_string("color", 1031692888, 5), + /* K33 */ be_nested_string("percentage", -1756136011, 10), + /* K34 */ be_nested_string("draw_arc", 1828251676, 8), + /* K35 */ be_const_int(0), }), - (be_nested_const_str("my_design_cb", -1173588798, 12)), + (be_nested_const_str("widget_event", 1951408186, 12)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[179]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x84100000, // 0001 CLOSURE R4 P0 - 0x8C140101, // 0002 GETMET R5 R0 K1 - 0x7C140200, // 0003 CALL R5 1 - 0x8C180102, // 0004 GETMET R6 R0 K2 - 0x7C180200, // 0005 CALL R6 1 - 0x5C1C0800, // 0006 MOVE R7 R4 - 0x54220007, // 0007 LDINT R8 8 - 0x0C200A08, // 0008 DIV R8 R5 R8 - 0x7C1C0200, // 0009 CALL R7 1 - 0x5C200800, // 000A MOVE R8 R4 - 0x08240F03, // 000B MUL R9 R7 K3 - 0x04240A09, // 000C SUB R9 R5 R9 - 0x0C241304, // 000D DIV R9 R9 K4 - 0x7C200200, // 000E CALL R8 1 - 0x0C241103, // 000F DIV R9 R8 K3 - 0xB82A0A00, // 0010 GETNGBL R10 K5 - 0x88281506, // 0011 GETMBR R10 R10 K6 - 0x1C28040A, // 0012 EQ R10 R2 R10 - 0x782A0007, // 0013 JMPF R10 #001C - 0x88280107, // 0014 GETMBR R10 R0 K7 - 0x8C281508, // 0015 GETMET R10 R10 K8 - 0x5C300000, // 0016 MOVE R12 R0 - 0x5C340200, // 0017 MOVE R13 R1 - 0x5C380400, // 0018 MOVE R14 R2 - 0x7C280800, // 0019 CALL R10 4 - 0x80041400, // 001A RET 1 R10 - 0x70020093, // 001B JMP #00B0 - 0xB82A0A00, // 001C GETNGBL R10 K5 - 0x88281509, // 001D GETMBR R10 R10 K9 - 0x1C28040A, // 001E EQ R10 R2 R10 - 0x782A008F, // 001F JMPF R10 #00B0 - 0x8C28010A, // 0020 GETMET R10 R0 K10 - 0x8830010B, // 0021 GETMBR R12 R0 K11 - 0x7C280400, // 0022 CALL R10 2 - 0x8828010B, // 0023 GETMBR R10 R0 K11 - 0x8828150C, // 0024 GETMBR R10 R10 K12 - 0x882C010B, // 0025 GETMBR R11 R0 K11 - 0x882C170D, // 0026 GETMBR R11 R11 K13 - 0xB8320A00, // 0027 GETNGBL R12 K5 - 0x8C30190E, // 0028 GETMET R12 R12 K14 - 0x8838010F, // 0029 GETMBR R14 R0 K15 - 0x7C300400, // 002A CALL R12 2 - 0x8C300110, // 002B GETMET R12 R0 K16 - 0xB83A0A00, // 002C GETNGBL R14 K5 - 0x88381D11, // 002D GETMBR R14 R14 K17 - 0x883C010F, // 002E GETMBR R15 R0 K15 - 0x7C300600, // 002F CALL R12 3 - 0x8830010F, // 0030 GETMBR R12 R0 K15 - 0x90322513, // 0031 SETMBR R12 K18 K19 - 0x8830010F, // 0032 GETMBR R12 R0 K15 - 0x90322913, // 0033 SETMBR R12 K20 K19 - 0x8830010F, // 0034 GETMBR R12 R0 K15 - 0x08341104, // 0035 MUL R13 R8 K4 - 0x00341B13, // 0036 ADD R13 R13 K19 - 0x543A0003, // 0037 LDINT R14 4 - 0x0C341A0E, // 0038 DIV R13 R13 R14 - 0x90322A0D, // 0039 SETMBR R12 K21 R13 - 0x8C300116, // 003A GETMET R12 R0 K22 - 0xB83A0A00, // 003B GETNGBL R14 K5 - 0x88381D11, // 003C GETMBR R14 R14 K17 - 0xB83E0A00, // 003D GETNGBL R15 K5 - 0x883C1F17, // 003E GETMBR R15 R15 K23 - 0x7C300600, // 003F CALL R12 3 - 0x8C340118, // 0040 GETMET R13 R0 K24 - 0xB83E0A00, // 0041 GETNGBL R15 K5 - 0x883C1F11, // 0042 GETMBR R15 R15 K17 - 0xB8420A00, // 0043 GETNGBL R16 K5 - 0x88402117, // 0044 GETMBR R16 R16 K23 - 0x7C340600, // 0045 CALL R13 3 - 0x04380A08, // 0046 SUB R14 R5 R8 - 0x0C3C0D03, // 0047 DIV R15 R6 K3 - 0x043C1E09, // 0048 SUB R15 R15 R9 - 0x60400009, // 0049 GETGBL R16 G9 - 0x54460059, // 004A LDINT R17 90 - 0x8C480719, // 004B GETMET R18 R3 K25 - 0x8C50071A, // 004C GETMET R20 R3 K26 - 0x6058000A, // 004D GETGBL R22 G10 - 0x5C5C1E00, // 004E MOVE R23 R15 - 0x7C580200, // 004F CALL R22 1 - 0x605C000A, // 0050 GETGBL R23 G10 - 0x5C601C00, // 0051 MOVE R24 R14 - 0x7C5C0200, // 0052 CALL R23 1 - 0x0C582C17, // 0053 DIV R22 R22 R23 - 0x7C500400, // 0054 CALL R20 2 - 0x7C480400, // 0055 CALL R18 2 - 0x04442212, // 0056 SUB R17 R17 R18 - 0x7C400200, // 0057 CALL R16 1 - 0x5446002C, // 0058 LDINT R17 45 - 0x24442011, // 0059 GT R17 R16 R17 - 0x78460000, // 005A JMPF R17 #005C - 0x5442002C, // 005B LDINT R16 45 - 0x8844011B, // 005C GETMBR R17 R0 K27 - 0x0C480D03, // 005D DIV R18 R6 K3 - 0x00481412, // 005E ADD R18 R10 R18 - 0x90463812, // 005F SETMBR R17 K28 R18 - 0x8844011B, // 0060 GETMBR R17 R0 K27 - 0x00481605, // 0061 ADD R18 R11 R5 - 0x04482513, // 0062 SUB R18 R18 K19 - 0x04482409, // 0063 SUB R18 R18 R9 - 0x90463A12, // 0064 SETMBR R17 K29 R18 - 0x8844010F, // 0065 GETMBR R17 R0 K15 - 0x8848011F, // 0066 GETMBR R18 R0 K31 - 0x544E0018, // 0067 LDINT R19 25 - 0x28482413, // 0068 GE R18 R18 R19 - 0x784A0001, // 0069 JMPF R18 #006C - 0x5C481800, // 006A MOVE R18 R12 - 0x70020000, // 006B JMP #006D - 0x5C481A00, // 006C MOVE R18 R13 - 0x90463C12, // 006D SETMBR R17 K30 R18 - 0xB8460A00, // 006E GETNGBL R17 K5 - 0x8C442320, // 006F GETMET R17 R17 K32 - 0x884C011B, // 0070 GETMBR R19 R0 K27 - 0x884C271C, // 0071 GETMBR R19 R19 K28 - 0x8850011B, // 0072 GETMBR R20 R0 K27 - 0x8850291D, // 0073 GETMBR R20 R20 K29 - 0x00541007, // 0074 ADD R21 R8 R7 - 0x08564215, // 0075 MUL R21 K33 R21 - 0x00542A09, // 0076 ADD R21 R21 R9 - 0x58580021, // 0077 LDCONST R22 K33 - 0x545E0167, // 0078 LDINT R23 360 - 0x5C600200, // 0079 MOVE R24 R1 - 0x8864010F, // 007A GETMBR R25 R0 K15 - 0x7C441000, // 007B CALL R17 8 - 0x8844010F, // 007C GETMBR R17 R0 K15 - 0x8848011F, // 007D GETMBR R18 R0 K31 - 0x544E0031, // 007E LDINT R19 50 - 0x28482413, // 007F GE R18 R18 R19 - 0x784A0001, // 0080 JMPF R18 #0083 - 0x5C481800, // 0081 MOVE R18 R12 - 0x70020000, // 0082 JMP #0084 - 0x5C481A00, // 0083 MOVE R18 R13 - 0x90463C12, // 0084 SETMBR R17 K30 R18 - 0xB8460A00, // 0085 GETNGBL R17 K5 - 0x8C442320, // 0086 GETMET R17 R17 K32 - 0x884C011B, // 0087 GETMBR R19 R0 K27 - 0x884C271C, // 0088 GETMBR R19 R19 K28 - 0x8850011B, // 0089 GETMBR R20 R0 K27 - 0x8850291D, // 008A GETMBR R20 R20 K29 - 0x00541007, // 008B ADD R21 R8 R7 - 0x08562615, // 008C MUL R21 K19 R21 - 0x00542A09, // 008D ADD R21 R21 R9 - 0x04542B13, // 008E SUB R21 R21 K19 - 0x545A010D, // 008F LDINT R22 270 - 0x04582C10, // 0090 SUB R22 R22 R16 - 0x545E010D, // 0091 LDINT R23 270 - 0x005C2E10, // 0092 ADD R23 R23 R16 - 0x5C600200, // 0093 MOVE R24 R1 - 0x8864010F, // 0094 GETMBR R25 R0 K15 - 0x7C441000, // 0095 CALL R17 8 - 0x8844010F, // 0096 GETMBR R17 R0 K15 - 0x8848011F, // 0097 GETMBR R18 R0 K31 - 0x544E004A, // 0098 LDINT R19 75 - 0x28482413, // 0099 GE R18 R18 R19 - 0x784A0001, // 009A JMPF R18 #009D - 0x5C481800, // 009B MOVE R18 R12 - 0x70020000, // 009C JMP #009E - 0x5C481A00, // 009D MOVE R18 R13 - 0x90463C12, // 009E SETMBR R17 K30 R18 - 0xB8460A00, // 009F GETNGBL R17 K5 - 0x8C442320, // 00A0 GETMET R17 R17 K32 - 0x884C011B, // 00A1 GETMBR R19 R0 K27 - 0x884C271C, // 00A2 GETMBR R19 R19 K28 - 0x8850011B, // 00A3 GETMBR R20 R0 K27 - 0x8850291D, // 00A4 GETMBR R20 R20 K29 - 0x00541007, // 00A5 ADD R21 R8 R7 - 0x08560615, // 00A6 MUL R21 K3 R21 - 0x00542A09, // 00A7 ADD R21 R21 R9 - 0x04542B03, // 00A8 SUB R21 R21 K3 - 0x545A010D, // 00A9 LDINT R22 270 - 0x04582C10, // 00AA SUB R22 R22 R16 - 0x545E010D, // 00AB LDINT R23 270 - 0x005C2E10, // 00AC ADD R23 R23 R16 - 0x5C600200, // 00AD MOVE R24 R1 - 0x8864010F, // 00AE GETMBR R25 R0 K15 - 0x7C441000, // 00AF CALL R17 8 - 0xB82A0A00, // 00B0 GETNGBL R10 K5 - 0x88281522, // 00B1 GETMBR R10 R10 K34 - 0x80041400, // 00B2 RET 1 R10 + ( &(const binstruction[181]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x7C0C0600, // 0004 CALL R3 3 + 0xB8120000, // 0005 GETNGBL R4 K0 + 0x88100902, // 0006 GETMBR R4 R4 K2 + 0x200C0604, // 0007 NE R3 R3 R4 + 0x780E0000, // 0008 JMPF R3 #000A + 0x80000600, // 0009 RET 0 + 0x880C0503, // 000A GETMBR R3 R2 K3 + 0xA4120800, // 000B IMPORT R4 K4 + 0x84140000, // 000C CLOSURE R5 P0 + 0x8C180105, // 000D GETMET R6 R0 K5 + 0x7C180200, // 000E CALL R6 1 + 0x8C1C0106, // 000F GETMET R7 R0 K6 + 0x7C1C0200, // 0010 CALL R7 1 + 0x5C200A00, // 0011 MOVE R8 R5 + 0x54260007, // 0012 LDINT R9 8 + 0x0C240C09, // 0013 DIV R9 R6 R9 + 0x7C200200, // 0014 CALL R8 1 + 0x5C240A00, // 0015 MOVE R9 R5 + 0x08281107, // 0016 MUL R10 R8 K7 + 0x04280C0A, // 0017 SUB R10 R6 R10 + 0x0C281508, // 0018 DIV R10 R10 K8 + 0x7C240200, // 0019 CALL R9 1 + 0x0C281307, // 001A DIV R10 R9 K7 + 0xB82E0000, // 001B GETNGBL R11 K0 + 0x882C1709, // 001C GETMBR R11 R11 K9 + 0x1C2C060B, // 001D EQ R11 R3 R11 + 0x782E0094, // 001E JMPF R11 #00B4 + 0xB82E1400, // 001F GETNGBL R11 K10 + 0x8830050B, // 0020 GETMBR R12 R2 K11 + 0x7C2C0200, // 0021 CALL R11 1 + 0x8C30010C, // 0022 GETMET R12 R0 K12 + 0x8838010D, // 0023 GETMBR R14 R0 K13 + 0x7C300400, // 0024 CALL R12 2 + 0x8830010D, // 0025 GETMBR R12 R0 K13 + 0x8830190E, // 0026 GETMBR R12 R12 K14 + 0x8834010D, // 0027 GETMBR R13 R0 K13 + 0x88341B0F, // 0028 GETMBR R13 R13 K15 + 0xB83A0000, // 0029 GETNGBL R14 K0 + 0x8C381D10, // 002A GETMET R14 R14 K16 + 0x88400111, // 002B GETMBR R16 R0 K17 + 0x7C380400, // 002C CALL R14 2 + 0x8C380112, // 002D GETMET R14 R0 K18 + 0xB8420000, // 002E GETNGBL R16 K0 + 0x88402113, // 002F GETMBR R16 R16 K19 + 0x88440111, // 0030 GETMBR R17 R0 K17 + 0x7C380600, // 0031 CALL R14 3 + 0x88380111, // 0032 GETMBR R14 R0 K17 + 0x903A2915, // 0033 SETMBR R14 K20 K21 + 0x88380111, // 0034 GETMBR R14 R0 K17 + 0x903A2D15, // 0035 SETMBR R14 K22 K21 + 0x88380111, // 0036 GETMBR R14 R0 K17 + 0x083C1308, // 0037 MUL R15 R9 K8 + 0x003C1F15, // 0038 ADD R15 R15 K21 + 0x54420003, // 0039 LDINT R16 4 + 0x0C3C1E10, // 003A DIV R15 R15 R16 + 0x903A2E0F, // 003B SETMBR R14 K23 R15 + 0x8C380118, // 003C GETMET R14 R0 K24 + 0xB8420000, // 003D GETNGBL R16 K0 + 0x88402113, // 003E GETMBR R16 R16 K19 + 0xB8460000, // 003F GETNGBL R17 K0 + 0x88442319, // 0040 GETMBR R17 R17 K25 + 0x30402011, // 0041 OR R16 R16 R17 + 0x7C380400, // 0042 CALL R14 2 + 0x8C3C011A, // 0043 GETMET R15 R0 K26 + 0xB8460000, // 0044 GETNGBL R17 K0 + 0x88442313, // 0045 GETMBR R17 R17 K19 + 0xB84A0000, // 0046 GETNGBL R18 K0 + 0x88482519, // 0047 GETMBR R18 R18 K25 + 0x30442212, // 0048 OR R17 R17 R18 + 0x7C3C0400, // 0049 CALL R15 2 + 0x04400C09, // 004A SUB R16 R6 R9 + 0x0C440F07, // 004B DIV R17 R7 K7 + 0x0444220A, // 004C SUB R17 R17 R10 + 0x60480009, // 004D GETGBL R18 G9 + 0x544E0059, // 004E LDINT R19 90 + 0x8C50091B, // 004F GETMET R20 R4 K27 + 0x8C58091C, // 0050 GETMET R22 R4 K28 + 0x6060000A, // 0051 GETGBL R24 G10 + 0x5C642200, // 0052 MOVE R25 R17 + 0x7C600200, // 0053 CALL R24 1 + 0x6064000A, // 0054 GETGBL R25 G10 + 0x5C682000, // 0055 MOVE R26 R16 + 0x7C640200, // 0056 CALL R25 1 + 0x0C603019, // 0057 DIV R24 R24 R25 + 0x7C580400, // 0058 CALL R22 2 + 0x7C500400, // 0059 CALL R20 2 + 0x044C2614, // 005A SUB R19 R19 R20 + 0x7C480200, // 005B CALL R18 1 + 0x544E002C, // 005C LDINT R19 45 + 0x244C2413, // 005D GT R19 R18 R19 + 0x784E0000, // 005E JMPF R19 #0060 + 0x544A002C, // 005F LDINT R18 45 + 0x884C011D, // 0060 GETMBR R19 R0 K29 + 0x0C500F07, // 0061 DIV R20 R7 K7 + 0x00501814, // 0062 ADD R20 R12 R20 + 0x904E3C14, // 0063 SETMBR R19 K30 R20 + 0x884C011D, // 0064 GETMBR R19 R0 K29 + 0x00501A06, // 0065 ADD R20 R13 R6 + 0x04502915, // 0066 SUB R20 R20 K21 + 0x0450280A, // 0067 SUB R20 R20 R10 + 0x904E3E14, // 0068 SETMBR R19 K31 R20 + 0x884C0111, // 0069 GETMBR R19 R0 K17 + 0x88500121, // 006A GETMBR R20 R0 K33 + 0x54560018, // 006B LDINT R21 25 + 0x28502815, // 006C GE R20 R20 R21 + 0x78520001, // 006D JMPF R20 #0070 + 0x5C501C00, // 006E MOVE R20 R14 + 0x70020000, // 006F JMP #0071 + 0x5C501E00, // 0070 MOVE R20 R15 + 0x904E4014, // 0071 SETMBR R19 K32 R20 + 0xB84E0000, // 0072 GETNGBL R19 K0 + 0x8C4C2722, // 0073 GETMET R19 R19 K34 + 0x8854011D, // 0074 GETMBR R21 R0 K29 + 0x88542B1E, // 0075 GETMBR R21 R21 K30 + 0x8858011D, // 0076 GETMBR R22 R0 K29 + 0x88582D1F, // 0077 GETMBR R22 R22 K31 + 0x005C1208, // 0078 ADD R23 R9 R8 + 0x085E4617, // 0079 MUL R23 K35 R23 + 0x005C2E0A, // 007A ADD R23 R23 R10 + 0x58600023, // 007B LDCONST R24 K35 + 0x54660167, // 007C LDINT R25 360 + 0x5C681600, // 007D MOVE R26 R11 + 0x886C0111, // 007E GETMBR R27 R0 K17 + 0x7C4C1000, // 007F CALL R19 8 + 0x884C0111, // 0080 GETMBR R19 R0 K17 + 0x88500121, // 0081 GETMBR R20 R0 K33 + 0x54560031, // 0082 LDINT R21 50 + 0x28502815, // 0083 GE R20 R20 R21 + 0x78520001, // 0084 JMPF R20 #0087 + 0x5C501C00, // 0085 MOVE R20 R14 + 0x70020000, // 0086 JMP #0088 + 0x5C501E00, // 0087 MOVE R20 R15 + 0x904E4014, // 0088 SETMBR R19 K32 R20 + 0xB84E0000, // 0089 GETNGBL R19 K0 + 0x8C4C2722, // 008A GETMET R19 R19 K34 + 0x8854011D, // 008B GETMBR R21 R0 K29 + 0x88542B1E, // 008C GETMBR R21 R21 K30 + 0x8858011D, // 008D GETMBR R22 R0 K29 + 0x88582D1F, // 008E GETMBR R22 R22 K31 + 0x005C1208, // 008F ADD R23 R9 R8 + 0x085E2A17, // 0090 MUL R23 K21 R23 + 0x005C2E0A, // 0091 ADD R23 R23 R10 + 0x045C2F15, // 0092 SUB R23 R23 K21 + 0x5462010D, // 0093 LDINT R24 270 + 0x04603012, // 0094 SUB R24 R24 R18 + 0x5466010D, // 0095 LDINT R25 270 + 0x00643212, // 0096 ADD R25 R25 R18 + 0x5C681600, // 0097 MOVE R26 R11 + 0x886C0111, // 0098 GETMBR R27 R0 K17 + 0x7C4C1000, // 0099 CALL R19 8 + 0x884C0111, // 009A GETMBR R19 R0 K17 + 0x88500121, // 009B GETMBR R20 R0 K33 + 0x5456004A, // 009C LDINT R21 75 + 0x28502815, // 009D GE R20 R20 R21 + 0x78520001, // 009E JMPF R20 #00A1 + 0x5C501C00, // 009F MOVE R20 R14 + 0x70020000, // 00A0 JMP #00A2 + 0x5C501E00, // 00A1 MOVE R20 R15 + 0x904E4014, // 00A2 SETMBR R19 K32 R20 + 0xB84E0000, // 00A3 GETNGBL R19 K0 + 0x8C4C2722, // 00A4 GETMET R19 R19 K34 + 0x8854011D, // 00A5 GETMBR R21 R0 K29 + 0x88542B1E, // 00A6 GETMBR R21 R21 K30 + 0x8858011D, // 00A7 GETMBR R22 R0 K29 + 0x88582D1F, // 00A8 GETMBR R22 R22 K31 + 0x005C1208, // 00A9 ADD R23 R9 R8 + 0x085E0E17, // 00AA MUL R23 K7 R23 + 0x005C2E0A, // 00AB ADD R23 R23 R10 + 0x045C2F07, // 00AC SUB R23 R23 K7 + 0x5462010D, // 00AD LDINT R24 270 + 0x04603012, // 00AE SUB R24 R24 R18 + 0x5466010D, // 00AF LDINT R25 270 + 0x00643212, // 00B0 ADD R25 R25 R18 + 0x5C681600, // 00B1 MOVE R26 R11 + 0x886C0111, // 00B2 GETMBR R27 R0 K17 + 0x7C4C1000, // 00B3 CALL R19 8 + 0x80000000, // 00B4 RET 0 }) ) ); @@ -296,135 +398,24 @@ be_local_closure(get_percentage, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(init, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_string("init", 380752755, 4), - /* K1 */ be_nested_string("ancestor_design", 421545719, 15), - /* K2 */ be_nested_string("get_design_cb", -825649242, 13), - /* K3 */ be_nested_string("set_design_cb", 1469311634, 13), - /* K4 */ be_nested_string("my_design_cb", -1173588798, 12), - /* K5 */ be_nested_string("percentage", -1756136011, 10), - /* K6 */ be_nested_string("p1", -1605446022, 2), - /* K7 */ be_nested_string("lv_point", -174745506, 8), - /* K8 */ be_nested_string("p2", -1622223641, 2), - /* K9 */ be_nested_string("area", -1693507260, 4), - /* K10 */ be_nested_string("lv_area", -1773816895, 7), - /* K11 */ be_nested_string("line_dsc", -200476318, 8), - /* K12 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), - }), - (be_nested_const_str("init", 380752755, 4)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[28]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x8C0C0102, // 0007 GETMET R3 R0 K2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x90020203, // 0009 SETMBR R0 K1 R3 - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x88140104, // 000B GETMBR R5 R0 K4 - 0x7C0C0400, // 000C CALL R3 2 - 0x540E0063, // 000D LDINT R3 100 - 0x90020A03, // 000E SETMBR R0 K5 R3 - 0xB80E0E00, // 000F GETNGBL R3 K7 - 0x7C0C0000, // 0010 CALL R3 0 - 0x90020C03, // 0011 SETMBR R0 K6 R3 - 0xB80E0E00, // 0012 GETNGBL R3 K7 - 0x7C0C0000, // 0013 CALL R3 0 - 0x90021003, // 0014 SETMBR R0 K8 R3 - 0xB80E1400, // 0015 GETNGBL R3 K10 - 0x7C0C0000, // 0016 CALL R3 0 - 0x90021203, // 0017 SETMBR R0 K9 R3 - 0xB80E1800, // 0018 GETNGBL R3 K12 - 0x7C0C0000, // 0019 CALL R3 0 - 0x90021603, // 001A SETMBR R0 K11 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_percentage -********************************************************************/ -be_local_closure(set_percentage, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_string("percentage", -1756136011, 10), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_string("invalidate", -1645232368, 10), - }), - (be_nested_const_str("set_percentage", -1342944572, 14)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x540E0003, // 0001 LDINT R3 4 - 0x0C080403, // 0002 DIV R2 R2 R3 - 0x540E0063, // 0003 LDINT R3 100 - 0x240C0203, // 0004 GT R3 R1 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x54060063, // 0006 LDINT R1 100 - 0x140C0301, // 0007 LT R3 R1 K1 - 0x780E0000, // 0008 JMPF R3 #000A - 0x58040001, // 0009 LDCONST R1 K1 - 0x90020001, // 000A SETMBR R0 K0 R1 - 0x540E0003, // 000B LDINT R3 4 - 0x0C0C0203, // 000C DIV R3 R1 R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C0102, // 000F GETMET R3 R0 K2 - 0x7C0C0200, // 0010 CALL R3 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: lv_signal_arcs ********************************************************************/ extern const bclass be_class_lv_obj; be_local_class(lv_signal_arcs, - 6, + 5, &be_class_lv_obj, - be_nested_map(10, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("p1", -1605446022, 2, -1), be_const_var(2) }, - { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, - { be_nested_key("get_percentage", -1414483304, 14, -1), be_const_closure(get_percentage_closure) }, - { be_nested_key("init", 380752755, 4, 7), be_const_closure(init_closure) }, - { be_nested_key("set_percentage", -1342944572, 14, 0), be_const_closure(set_percentage_closure) }, - { be_nested_key("percentage", -1756136011, 10, 3), be_const_var(1) }, - { be_nested_key("area", -1693507260, 4, -1), be_const_var(4) }, - { be_nested_key("p2", -1622223641, 2, -1), be_const_var(3) }, - { be_nested_key("line_dsc", -200476318, 8, 1), be_const_var(5) }, - { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, + { be_nested_key("percentage", -1756136011, 10, 4), be_const_var(0) }, + { be_nested_key("p1", -1605446022, 2, 3), be_const_var(1) }, + { be_nested_key("p2", -1622223641, 2, -1), be_const_var(2) }, + { be_nested_key("area", -1693507260, 4, -1), be_const_var(3) }, + { be_nested_key("line_dsc", -200476318, 8, -1), be_const_var(4) }, + { be_nested_key("set_percentage", -1342944572, 14, -1), be_const_closure(set_percentage_closure) }, + { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, + { be_nested_key("widget_event", 1951408186, 12, -1), be_const_closure(widget_event_closure) }, + { be_nested_key("get_percentage", -1414483304, 14, 5), be_const_closure(get_percentage_closure) }, })), (be_nested_const_str("lv_signal_arcs", -1455810308, 14)) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c index 56f88987e..2bf2afa96 100644 --- a/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_signal_bars_lib.c @@ -8,11 +8,110 @@ #include "lvgl.h" /******************************************************************** -** Solidified function: my_design_cb +** Solidified function: set_percentage ********************************************************************/ -be_local_closure(my_design_cb, /* name */ +be_local_closure(set_percentage, /* name */ be_nested_proto( - 21, /* nstack */ + 5, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_string("percentage", -1756136011, 10), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_string("invalidate", -1645232368, 10), + }), + (be_nested_const_str("set_percentage", -1342944572, 14)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[18]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x540E0013, // 0001 LDINT R3 20 + 0x0C080403, // 0002 DIV R2 R2 R3 + 0x540E0063, // 0003 LDINT R3 100 + 0x240C0203, // 0004 GT R3 R1 R3 + 0x780E0000, // 0005 JMPF R3 #0007 + 0x54060063, // 0006 LDINT R1 100 + 0x140C0301, // 0007 LT R3 R1 K1 + 0x780E0000, // 0008 JMPF R3 #000A + 0x58040001, // 0009 LDCONST R1 K1 + 0x90020001, // 000A SETMBR R0 K0 R1 + 0x540E0013, // 000B LDINT R3 20 + 0x0C0C0203, // 000C DIV R3 R1 R3 + 0x200C0403, // 000D NE R3 R2 R3 + 0x780E0001, // 000E JMPF R3 #0011 + 0x8C0C0102, // 000F GETMET R3 R0 K2 + 0x7C0C0200, // 0010 CALL R3 1 + 0x80000000, // 0011 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(init, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 0, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_string("_lvgl", -1605747813, 5), + /* K1 */ be_nested_string("create_custom_widget", 1140594778, 20), + /* K2 */ be_nested_string("percentage", -1756136011, 10), + /* K3 */ be_nested_string("p1", -1605446022, 2), + /* K4 */ be_nested_string("lv_point", -174745506, 8), + /* K5 */ be_nested_string("p2", -1622223641, 2), + /* K6 */ be_nested_string("area", -1693507260, 4), + /* K7 */ be_nested_string("lv_area", -1773816895, 7), + /* K8 */ be_nested_string("line_dsc", -200476318, 8), + /* K9 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), + }), + (be_nested_const_str("init", 380752755, 4)), + (be_nested_const_str("input", -103256197, 5)), + ( &(const binstruction[20]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100000, // 0002 MOVE R4 R0 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C080600, // 0004 CALL R2 3 + 0x540A0063, // 0005 LDINT R2 100 + 0x90020402, // 0006 SETMBR R0 K2 R2 + 0xB80A0800, // 0007 GETNGBL R2 K4 + 0x7C080000, // 0008 CALL R2 0 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0xB80A0800, // 000A GETNGBL R2 K4 + 0x7C080000, // 000B CALL R2 0 + 0x90020A02, // 000C SETMBR R0 K5 R2 + 0xB80A0E00, // 000D GETNGBL R2 K7 + 0x7C080000, // 000E CALL R2 0 + 0x90020C02, // 000F SETMBR R0 K6 R2 + 0xB80A1200, // 0010 GETNGBL R2 K9 + 0x7C080000, // 0011 CALL R2 0 + 0x90021002, // 0012 SETMBR R0 K8 R2 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: widget_event +********************************************************************/ +be_local_closure(widget_event, /* name */ + be_nested_proto( + 23, /* nstack */ 3, /* argc */ 0, /* varg */ 0, /* has upvals */ @@ -44,166 +143,186 @@ be_local_closure(my_design_cb, /* name */ ), }), 1, /* has constants */ - ( &(const bvalue[34]) { /* constants */ - /* K0 */ be_nested_string("get_height", -723211773, 10), - /* K1 */ be_nested_string("get_width", -1001549996, 9), - /* K2 */ be_const_int(3), - /* K3 */ be_const_int(2), - /* K4 */ be_nested_string("lv", 1529997255, 2), - /* K5 */ be_nested_string("DESIGN_COVER_CHK", -1298406708, 16), - /* K6 */ be_nested_string("ancestor_design", 421545719, 15), - /* K7 */ be_nested_string("call", -1276017495, 4), - /* K8 */ be_nested_string("DESIGN_DRAW_MAIN", -904475754, 16), - /* K9 */ be_nested_string("get_coords", 1044089006, 10), - /* K10 */ be_nested_string("area", -1693507260, 4), - /* K11 */ be_nested_string("x1", 274927234, 2), - /* K12 */ be_nested_string("y1", -1939865569, 2), - /* K13 */ be_nested_string("draw_line_dsc_init", -428273650, 18), - /* K14 */ be_nested_string("line_dsc", -200476318, 8), - /* K15 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), - /* K16 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), - /* K17 */ be_nested_string("round_start", -1345482912, 11), - /* K18 */ be_const_int(1), - /* K19 */ be_nested_string("round_end", 985288225, 9), - /* K20 */ be_nested_string("width", -1786286561, 5), - /* K21 */ be_nested_string("get_style_line_color", 805371932, 20), - /* K22 */ be_nested_string("STATE_DEFAULT", 712406428, 13), - /* K23 */ be_nested_string("get_style_bg_color", 964794381, 18), - /* K24 */ be_const_int(0), - /* K25 */ be_nested_string("color", 1031692888, 5), - /* K26 */ be_nested_string("percentage", -1756136011, 10), - /* K27 */ be_nested_string("p1", -1605446022, 2), - /* K28 */ be_nested_string("y", -66302220, 1), - /* K29 */ be_nested_string("x", -49524601, 1), - /* K30 */ be_nested_string("p2", -1622223641, 2), - /* K31 */ be_nested_string("draw_line", 1634465686, 9), - /* K32 */ be_nested_string("stop_iteration", -121173395, 14), - /* K33 */ be_nested_string("DESIGN_RES_OK", -1265307123, 13), + ( &(const bvalue[38]) { /* constants */ + /* K0 */ be_nested_string("lv", 1529997255, 2), + /* K1 */ be_nested_string("obj_event_base", 1624064363, 14), + /* K2 */ be_nested_string("RES_OK", 1233817284, 6), + /* K3 */ be_nested_string("code", -114201356, 4), + /* K4 */ be_nested_string("get_height", -723211773, 10), + /* K5 */ be_nested_string("get_width", -1001549996, 9), + /* K6 */ be_const_int(3), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_string("EVENT_DRAW_MAIN", 1955620614, 15), + /* K9 */ be_nested_string("lv_area", -1773816895, 7), + /* K10 */ be_nested_string("param", 1309554226, 5), + /* K11 */ be_nested_string("get_coords", 1044089006, 10), + /* K12 */ be_nested_string("area", -1693507260, 4), + /* K13 */ be_nested_string("x1", 274927234, 2), + /* K14 */ be_nested_string("y1", -1939865569, 2), + /* K15 */ be_nested_string("draw_line_dsc_init", -428273650, 18), + /* K16 */ be_nested_string("line_dsc", -200476318, 8), + /* K17 */ be_nested_string("init_draw_line_dsc", -1787031256, 18), + /* K18 */ be_nested_string("PART_MAIN", -1821475788, 9), + /* K19 */ be_nested_string("round_start", -1345482912, 11), + /* K20 */ be_const_int(1), + /* K21 */ be_nested_string("round_end", 985288225, 9), + /* K22 */ be_nested_string("width", -1786286561, 5), + /* K23 */ be_nested_string("get_style_line_color", 805371932, 20), + /* K24 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K25 */ be_nested_string("get_style_bg_color", 964794381, 18), + /* K26 */ be_nested_string("event_send", 598925582, 10), + /* K27 */ be_nested_string("EVENT_DRAW_PART_BEGIN", -903102272, 21), + /* K28 */ be_const_int(0), + /* K29 */ be_nested_string("color", 1031692888, 5), + /* K30 */ be_nested_string("percentage", -1756136011, 10), + /* K31 */ be_nested_string("p1", -1605446022, 2), + /* K32 */ be_nested_string("y", -66302220, 1), + /* K33 */ be_nested_string("x", -49524601, 1), + /* K34 */ be_nested_string("p2", -1622223641, 2), + /* K35 */ be_nested_string("draw_line", 1634465686, 9), + /* K36 */ be_nested_string("stop_iteration", -121173395, 14), + /* K37 */ be_nested_string("EVENT_DRAW_PART_END", -993342004, 19), }), - (be_nested_const_str("my_design_cb", -1173588798, 12)), + (be_nested_const_str("widget_event", 1951408186, 12)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[121]) { /* code */ - 0x840C0000, // 0000 CLOSURE R3 P0 - 0x8C100100, // 0001 GETMET R4 R0 K0 - 0x7C100200, // 0002 CALL R4 1 - 0x8C140101, // 0003 GETMET R5 R0 K1 - 0x7C140200, // 0004 CALL R5 1 - 0x5C180600, // 0005 MOVE R6 R3 - 0x541E000E, // 0006 LDINT R7 15 - 0x0C1C0A07, // 0007 DIV R7 R5 R7 - 0x7C180200, // 0008 CALL R6 1 - 0x5C1C0600, // 0009 MOVE R7 R3 - 0x08200D02, // 000A MUL R8 R6 K2 - 0x04200A08, // 000B SUB R8 R5 R8 - 0x54260003, // 000C LDINT R9 4 - 0x0C201009, // 000D DIV R8 R8 R9 - 0x7C1C0200, // 000E CALL R7 1 - 0x0C200F03, // 000F DIV R8 R7 K3 - 0xB8260800, // 0010 GETNGBL R9 K4 - 0x88241305, // 0011 GETMBR R9 R9 K5 - 0x1C240409, // 0012 EQ R9 R2 R9 - 0x78260007, // 0013 JMPF R9 #001C - 0x88240106, // 0014 GETMBR R9 R0 K6 - 0x8C241307, // 0015 GETMET R9 R9 K7 - 0x5C2C0000, // 0016 MOVE R11 R0 - 0x5C300200, // 0017 MOVE R12 R1 - 0x5C340400, // 0018 MOVE R13 R2 - 0x7C240800, // 0019 CALL R9 4 - 0x80041200, // 001A RET 1 R9 - 0x70020059, // 001B JMP #0076 - 0xB8260800, // 001C GETNGBL R9 K4 - 0x88241308, // 001D GETMBR R9 R9 K8 - 0x1C240409, // 001E EQ R9 R2 R9 - 0x78260055, // 001F JMPF R9 #0076 - 0x8C240109, // 0020 GETMET R9 R0 K9 - 0x882C010A, // 0021 GETMBR R11 R0 K10 - 0x7C240400, // 0022 CALL R9 2 - 0x8824010A, // 0023 GETMBR R9 R0 K10 - 0x8824130B, // 0024 GETMBR R9 R9 K11 - 0x8828010A, // 0025 GETMBR R10 R0 K10 - 0x8828150C, // 0026 GETMBR R10 R10 K12 - 0xB82E0800, // 0027 GETNGBL R11 K4 - 0x8C2C170D, // 0028 GETMET R11 R11 K13 - 0x8834010E, // 0029 GETMBR R13 R0 K14 - 0x7C2C0400, // 002A CALL R11 2 - 0x8C2C010F, // 002B GETMET R11 R0 K15 - 0xB8360800, // 002C GETNGBL R13 K4 - 0x88341B10, // 002D GETMBR R13 R13 K16 - 0x8838010E, // 002E GETMBR R14 R0 K14 - 0x7C2C0600, // 002F CALL R11 3 - 0x882C010E, // 0030 GETMBR R11 R0 K14 - 0x902E2312, // 0031 SETMBR R11 K17 K18 - 0x882C010E, // 0032 GETMBR R11 R0 K14 - 0x902E2712, // 0033 SETMBR R11 K19 K18 - 0x882C010E, // 0034 GETMBR R11 R0 K14 - 0x902E2807, // 0035 SETMBR R11 K20 R7 - 0x8C2C0115, // 0036 GETMET R11 R0 K21 - 0xB8360800, // 0037 GETNGBL R13 K4 - 0x88341B10, // 0038 GETMBR R13 R13 K16 - 0xB83A0800, // 0039 GETNGBL R14 K4 - 0x88381D16, // 003A GETMBR R14 R14 K22 - 0x7C2C0600, // 003B CALL R11 3 - 0x8C300117, // 003C GETMET R12 R0 K23 - 0xB83A0800, // 003D GETNGBL R14 K4 - 0x88381D10, // 003E GETMBR R14 R14 K16 - 0xB83E0800, // 003F GETNGBL R15 K4 - 0x883C1F16, // 0040 GETMBR R15 R15 K22 - 0x7C300600, // 0041 CALL R12 3 - 0x60340010, // 0042 GETGBL R13 G16 - 0x403A3102, // 0043 CONNECT R14 K24 K2 - 0x7C340200, // 0044 CALL R13 1 - 0xA802002C, // 0045 EXBLK 0 #0073 - 0x5C381A00, // 0046 MOVE R14 R13 - 0x7C380000, // 0047 CALL R14 0 - 0x883C010E, // 0048 GETMBR R15 R0 K14 - 0x8840011A, // 0049 GETMBR R16 R0 K26 - 0x00441D12, // 004A ADD R17 R14 K18 - 0x544A0013, // 004B LDINT R18 20 - 0x08442212, // 004C MUL R17 R17 R18 - 0x28402011, // 004D GE R16 R16 R17 - 0x78420001, // 004E JMPF R16 #0051 - 0x5C401600, // 004F MOVE R16 R11 - 0x70020000, // 0050 JMP #0052 - 0x5C401800, // 0051 MOVE R16 R12 - 0x903E3210, // 0052 SETMBR R15 K25 R16 - 0x883C011B, // 0053 GETMBR R15 R0 K27 - 0x00401404, // 0054 ADD R16 R10 R4 - 0x04402112, // 0055 SUB R16 R16 K18 - 0x04402008, // 0056 SUB R16 R16 R8 - 0x903E3810, // 0057 SETMBR R15 K28 R16 - 0x883C011B, // 0058 GETMBR R15 R0 K27 - 0x00400E06, // 0059 ADD R16 R7 R6 - 0x08401C10, // 005A MUL R16 R14 R16 - 0x00401210, // 005B ADD R16 R9 R16 - 0x00402008, // 005C ADD R16 R16 R8 - 0x903E3A10, // 005D SETMBR R15 K29 R16 - 0x883C011E, // 005E GETMBR R15 R0 K30 - 0x0442040E, // 005F SUB R16 K2 R14 - 0x04440807, // 0060 SUB R17 R4 R7 - 0x08402011, // 0061 MUL R16 R16 R17 - 0x54460003, // 0062 LDINT R17 4 - 0x0C402011, // 0063 DIV R16 R16 R17 - 0x00401410, // 0064 ADD R16 R10 R16 - 0x00402008, // 0065 ADD R16 R16 R8 - 0x903E3810, // 0066 SETMBR R15 K28 R16 - 0x883C011E, // 0067 GETMBR R15 R0 K30 - 0x8840011B, // 0068 GETMBR R16 R0 K27 - 0x8840211D, // 0069 GETMBR R16 R16 K29 - 0x903E3A10, // 006A SETMBR R15 K29 R16 - 0xB83E0800, // 006B GETNGBL R15 K4 - 0x8C3C1F1F, // 006C GETMET R15 R15 K31 - 0x8844011B, // 006D GETMBR R17 R0 K27 - 0x8848011E, // 006E GETMBR R18 R0 K30 - 0x5C4C0200, // 006F MOVE R19 R1 - 0x8850010E, // 0070 GETMBR R20 R0 K14 - 0x7C3C0A00, // 0071 CALL R15 5 - 0x7001FFD2, // 0072 JMP #0046 - 0x58340020, // 0073 LDCONST R13 K32 - 0xAC340200, // 0074 CATCH R13 1 0 - 0xB0080000, // 0075 RAISE 2 R0 R0 - 0xB8260800, // 0076 GETNGBL R9 K4 - 0x88241321, // 0077 GETMBR R9 R9 K33 - 0x80041200, // 0078 RET 1 R9 + ( &(const binstruction[137]) { /* code */ + 0xB80E0000, // 0000 GETNGBL R3 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x5C180400, // 0003 MOVE R6 R2 + 0x7C0C0600, // 0004 CALL R3 3 + 0xB8120000, // 0005 GETNGBL R4 K0 + 0x88100902, // 0006 GETMBR R4 R4 K2 + 0x200C0604, // 0007 NE R3 R3 R4 + 0x780E0000, // 0008 JMPF R3 #000A + 0x80000600, // 0009 RET 0 + 0x880C0503, // 000A GETMBR R3 R2 K3 + 0x84100000, // 000B CLOSURE R4 P0 + 0x8C140104, // 000C GETMET R5 R0 K4 + 0x7C140200, // 000D CALL R5 1 + 0x8C180105, // 000E GETMET R6 R0 K5 + 0x7C180200, // 000F CALL R6 1 + 0x5C1C0800, // 0010 MOVE R7 R4 + 0x5422000E, // 0011 LDINT R8 15 + 0x0C200C08, // 0012 DIV R8 R6 R8 + 0x7C1C0200, // 0013 CALL R7 1 + 0x5C200800, // 0014 MOVE R8 R4 + 0x08240F06, // 0015 MUL R9 R7 K6 + 0x04240C09, // 0016 SUB R9 R6 R9 + 0x542A0003, // 0017 LDINT R10 4 + 0x0C24120A, // 0018 DIV R9 R9 R10 + 0x7C200200, // 0019 CALL R8 1 + 0x0C241107, // 001A DIV R9 R8 K7 + 0xB82A0000, // 001B GETNGBL R10 K0 + 0x88281508, // 001C GETMBR R10 R10 K8 + 0x1C28060A, // 001D EQ R10 R3 R10 + 0x782A0068, // 001E JMPF R10 #0088 + 0xB82A1200, // 001F GETNGBL R10 K9 + 0x882C050A, // 0020 GETMBR R11 R2 K10 + 0x7C280200, // 0021 CALL R10 1 + 0x8C2C010B, // 0022 GETMET R11 R0 K11 + 0x8834010C, // 0023 GETMBR R13 R0 K12 + 0x7C2C0400, // 0024 CALL R11 2 + 0x882C010C, // 0025 GETMBR R11 R0 K12 + 0x882C170D, // 0026 GETMBR R11 R11 K13 + 0x8830010C, // 0027 GETMBR R12 R0 K12 + 0x8830190E, // 0028 GETMBR R12 R12 K14 + 0xB8360000, // 0029 GETNGBL R13 K0 + 0x8C341B0F, // 002A GETMET R13 R13 K15 + 0x883C0110, // 002B GETMBR R15 R0 K16 + 0x7C340400, // 002C CALL R13 2 + 0x8C340111, // 002D GETMET R13 R0 K17 + 0xB83E0000, // 002E GETNGBL R15 K0 + 0x883C1F12, // 002F GETMBR R15 R15 K18 + 0x88400110, // 0030 GETMBR R16 R0 K16 + 0x7C340600, // 0031 CALL R13 3 + 0x88340110, // 0032 GETMBR R13 R0 K16 + 0x90362714, // 0033 SETMBR R13 K19 K20 + 0x88340110, // 0034 GETMBR R13 R0 K16 + 0x90362B14, // 0035 SETMBR R13 K21 K20 + 0x88340110, // 0036 GETMBR R13 R0 K16 + 0x90362C08, // 0037 SETMBR R13 K22 R8 + 0x8C340117, // 0038 GETMET R13 R0 K23 + 0xB83E0000, // 0039 GETNGBL R15 K0 + 0x883C1F12, // 003A GETMBR R15 R15 K18 + 0xB8420000, // 003B GETNGBL R16 K0 + 0x88402118, // 003C GETMBR R16 R16 K24 + 0x303C1E10, // 003D OR R15 R15 R16 + 0x7C340400, // 003E CALL R13 2 + 0x8C380119, // 003F GETMET R14 R0 K25 + 0xB8420000, // 0040 GETNGBL R16 K0 + 0x88402112, // 0041 GETMBR R16 R16 K18 + 0xB8460000, // 0042 GETNGBL R17 K0 + 0x88442318, // 0043 GETMBR R17 R17 K24 + 0x30402011, // 0044 OR R16 R16 R17 + 0x7C380400, // 0045 CALL R14 2 + 0xB83E0000, // 0046 GETNGBL R15 K0 + 0x8C3C1F1A, // 0047 GETMET R15 R15 K26 + 0x5C440000, // 0048 MOVE R17 R0 + 0xB84A0000, // 0049 GETNGBL R18 K0 + 0x8848251B, // 004A GETMBR R18 R18 K27 + 0x884C0110, // 004B GETMBR R19 R0 K16 + 0x7C3C0800, // 004C CALL R15 4 + 0x603C0010, // 004D GETGBL R15 G16 + 0x40423906, // 004E CONNECT R16 K28 K6 + 0x7C3C0200, // 004F CALL R15 1 + 0xA802002C, // 0050 EXBLK 0 #007E + 0x5C401E00, // 0051 MOVE R16 R15 + 0x7C400000, // 0052 CALL R16 0 + 0x88440110, // 0053 GETMBR R17 R0 K16 + 0x8848011E, // 0054 GETMBR R18 R0 K30 + 0x004C2114, // 0055 ADD R19 R16 K20 + 0x54520013, // 0056 LDINT R20 20 + 0x084C2614, // 0057 MUL R19 R19 R20 + 0x28482413, // 0058 GE R18 R18 R19 + 0x784A0001, // 0059 JMPF R18 #005C + 0x5C481A00, // 005A MOVE R18 R13 + 0x70020000, // 005B JMP #005D + 0x5C481C00, // 005C MOVE R18 R14 + 0x90463A12, // 005D SETMBR R17 K29 R18 + 0x8844011F, // 005E GETMBR R17 R0 K31 + 0x00481805, // 005F ADD R18 R12 R5 + 0x04482514, // 0060 SUB R18 R18 K20 + 0x04482409, // 0061 SUB R18 R18 R9 + 0x90464012, // 0062 SETMBR R17 K32 R18 + 0x8844011F, // 0063 GETMBR R17 R0 K31 + 0x00481007, // 0064 ADD R18 R8 R7 + 0x08482012, // 0065 MUL R18 R16 R18 + 0x00481612, // 0066 ADD R18 R11 R18 + 0x00482409, // 0067 ADD R18 R18 R9 + 0x90464212, // 0068 SETMBR R17 K33 R18 + 0x88440122, // 0069 GETMBR R17 R0 K34 + 0x044A0C10, // 006A SUB R18 K6 R16 + 0x044C0A08, // 006B SUB R19 R5 R8 + 0x08482413, // 006C MUL R18 R18 R19 + 0x544E0003, // 006D LDINT R19 4 + 0x0C482413, // 006E DIV R18 R18 R19 + 0x00481812, // 006F ADD R18 R12 R18 + 0x00482409, // 0070 ADD R18 R18 R9 + 0x90464012, // 0071 SETMBR R17 K32 R18 + 0x88440122, // 0072 GETMBR R17 R0 K34 + 0x8848011F, // 0073 GETMBR R18 R0 K31 + 0x88482521, // 0074 GETMBR R18 R18 K33 + 0x90464212, // 0075 SETMBR R17 K33 R18 + 0xB8460000, // 0076 GETNGBL R17 K0 + 0x8C442323, // 0077 GETMET R17 R17 K35 + 0x884C011F, // 0078 GETMBR R19 R0 K31 + 0x88500122, // 0079 GETMBR R20 R0 K34 + 0x5C541400, // 007A MOVE R21 R10 + 0x88580110, // 007B GETMBR R22 R0 K16 + 0x7C440A00, // 007C CALL R17 5 + 0x7001FFD2, // 007D JMP #0051 + 0x583C0024, // 007E LDCONST R15 K36 + 0xAC3C0200, // 007F CATCH R15 1 0 + 0xB0080000, // 0080 RAISE 2 R0 R0 + 0xB83E0000, // 0081 GETNGBL R15 K0 + 0x8C3C1F1A, // 0082 GETMET R15 R15 K26 + 0x5C440000, // 0083 MOVE R17 R0 + 0xB84A0000, // 0084 GETNGBL R18 K0 + 0x88482525, // 0085 GETMBR R18 R18 K37 + 0x884C0110, // 0086 GETMBR R19 R0 K16 + 0x7C3C0800, // 0087 CALL R15 4 + 0x80000000, // 0088 RET 0 }) ) ); @@ -237,135 +356,24 @@ be_local_closure(get_percentage, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(init, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_string("init", 380752755, 4), - /* K1 */ be_nested_string("ancestor_design", 421545719, 15), - /* K2 */ be_nested_string("get_design_cb", -825649242, 13), - /* K3 */ be_nested_string("set_design_cb", 1469311634, 13), - /* K4 */ be_nested_string("my_design_cb", -1173588798, 12), - /* K5 */ be_nested_string("percentage", -1756136011, 10), - /* K6 */ be_nested_string("p1", -1605446022, 2), - /* K7 */ be_nested_string("lv_point", -174745506, 8), - /* K8 */ be_nested_string("p2", -1622223641, 2), - /* K9 */ be_nested_string("area", -1693507260, 4), - /* K10 */ be_nested_string("lv_area", -1773816895, 7), - /* K11 */ be_nested_string("line_dsc", -200476318, 8), - /* K12 */ be_nested_string("lv_draw_line_dsc", -1872162060, 16), - }), - (be_nested_const_str("init", 380752755, 4)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[28]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x8C0C0102, // 0007 GETMET R3 R0 K2 - 0x7C0C0200, // 0008 CALL R3 1 - 0x90020203, // 0009 SETMBR R0 K1 R3 - 0x8C0C0103, // 000A GETMET R3 R0 K3 - 0x88140104, // 000B GETMBR R5 R0 K4 - 0x7C0C0400, // 000C CALL R3 2 - 0x540E0063, // 000D LDINT R3 100 - 0x90020A03, // 000E SETMBR R0 K5 R3 - 0xB80E0E00, // 000F GETNGBL R3 K7 - 0x7C0C0000, // 0010 CALL R3 0 - 0x90020C03, // 0011 SETMBR R0 K6 R3 - 0xB80E0E00, // 0012 GETNGBL R3 K7 - 0x7C0C0000, // 0013 CALL R3 0 - 0x90021003, // 0014 SETMBR R0 K8 R3 - 0xB80E1400, // 0015 GETNGBL R3 K10 - 0x7C0C0000, // 0016 CALL R3 0 - 0x90021203, // 0017 SETMBR R0 K9 R3 - 0xB80E1800, // 0018 GETNGBL R3 K12 - 0x7C0C0000, // 0019 CALL R3 0 - 0x90021603, // 001A SETMBR R0 K11 R3 - 0x80000000, // 001B RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_percentage -********************************************************************/ -be_local_closure(set_percentage, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 0, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_string("percentage", -1756136011, 10), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_string("invalidate", -1645232368, 10), - }), - (be_nested_const_str("set_percentage", -1342944572, 14)), - (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[18]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x540E0004, // 0001 LDINT R3 5 - 0x0C080403, // 0002 DIV R2 R2 R3 - 0x540E0063, // 0003 LDINT R3 100 - 0x240C0203, // 0004 GT R3 R1 R3 - 0x780E0000, // 0005 JMPF R3 #0007 - 0x54060063, // 0006 LDINT R1 100 - 0x140C0301, // 0007 LT R3 R1 K1 - 0x780E0000, // 0008 JMPF R3 #000A - 0x58040001, // 0009 LDCONST R1 K1 - 0x90020001, // 000A SETMBR R0 K0 R1 - 0x540E0004, // 000B LDINT R3 5 - 0x0C0C0203, // 000C DIV R3 R1 R3 - 0x200C0403, // 000D NE R3 R2 R3 - 0x780E0001, // 000E JMPF R3 #0011 - 0x8C0C0102, // 000F GETMET R3 R0 K2 - 0x7C0C0200, // 0010 CALL R3 1 - 0x80000000, // 0011 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: lv_signal_bars ********************************************************************/ extern const bclass be_class_lv_obj; be_local_class(lv_signal_bars, - 6, + 5, &be_class_lv_obj, - be_nested_map(10, + be_nested_map(9, ( (struct bmapnode*) &(const bmapnode[]) { - { be_nested_key("p1", -1605446022, 2, -1), be_const_var(2) }, - { be_nested_key("my_design_cb", -1173588798, 12, -1), be_const_closure(my_design_cb_closure) }, - { be_nested_key("get_percentage", -1414483304, 14, -1), be_const_closure(get_percentage_closure) }, - { be_nested_key("init", 380752755, 4, 7), be_const_closure(init_closure) }, - { be_nested_key("set_percentage", -1342944572, 14, 0), be_const_closure(set_percentage_closure) }, - { be_nested_key("percentage", -1756136011, 10, 3), be_const_var(1) }, - { be_nested_key("area", -1693507260, 4, -1), be_const_var(4) }, - { be_nested_key("p2", -1622223641, 2, -1), be_const_var(3) }, - { be_nested_key("line_dsc", -200476318, 8, 1), be_const_var(5) }, - { be_nested_key("ancestor_design", 421545719, 15, -1), be_const_var(0) }, + { be_nested_key("percentage", -1756136011, 10, 4), be_const_var(0) }, + { be_nested_key("p1", -1605446022, 2, 3), be_const_var(1) }, + { be_nested_key("p2", -1622223641, 2, -1), be_const_var(2) }, + { be_nested_key("area", -1693507260, 4, -1), be_const_var(3) }, + { be_nested_key("line_dsc", -200476318, 8, -1), be_const_var(4) }, + { be_nested_key("set_percentage", -1342944572, 14, -1), be_const_closure(set_percentage_closure) }, + { be_nested_key("init", 380752755, 4, -1), be_const_closure(init_closure) }, + { be_nested_key("widget_event", 1951408186, 12, -1), be_const_closure(widget_event_closure) }, + { be_nested_key("get_percentage", -1414483304, 14, 5), be_const_closure(get_percentage_closure) }, })), (be_nested_const_str("lv_signal_bars", -780994737, 14)) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c b/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c index 9bf31a2ca..70bca472b 100644 --- a/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_widgets_lib.c @@ -18,7 +18,6 @@ extern int lv0_init(bvm *vm); extern int lco_init(bvm *vm); extern int lco_tostring(bvm *vm); -extern int lvx_init_2(bvm *vm); // generic function extern int lvx_member(bvm *vm); extern int lvx_tostring(bvm *vm); // generic function @@ -27,142 +26,421 @@ extern int lvs_tostring(bvm *vm); BE_EXPORT_VARIABLE extern const bclass be_class_lv_obj; +/* `lv_style` external functions definitions */ +extern int lvbe_style_set_width(bvm *vm); +extern int lvbe_style_set_min_width(bvm *vm); +extern int lvbe_style_set_max_width(bvm *vm); +extern int lvbe_style_set_height(bvm *vm); +extern int lvbe_style_set_min_height(bvm *vm); +extern int lvbe_style_set_max_height(bvm *vm); +extern int lvbe_style_set_x(bvm *vm); +extern int lvbe_style_set_y(bvm *vm); +extern int lvbe_style_set_align(bvm *vm); +extern int lvbe_style_set_transform_width(bvm *vm); +extern int lvbe_style_set_transform_height(bvm *vm); +extern int lvbe_style_set_translate_x(bvm *vm); +extern int lvbe_style_set_translate_y(bvm *vm); +extern int lvbe_style_set_transform_zoom(bvm *vm); +extern int lvbe_style_set_transform_angle(bvm *vm); +extern int lvbe_style_set_pad_top(bvm *vm); +extern int lvbe_style_set_pad_bottom(bvm *vm); +extern int lvbe_style_set_pad_left(bvm *vm); +extern int lvbe_style_set_pad_right(bvm *vm); +extern int lvbe_style_set_pad_row(bvm *vm); +extern int lvbe_style_set_pad_column(bvm *vm); +extern int lvbe_style_set_radius(bvm *vm); +extern int lvbe_style_set_clip_corner(bvm *vm); +extern int lvbe_style_set_opa(bvm *vm); +extern int lvbe_style_set_color_filter_dsc(bvm *vm); +extern int lvbe_style_set_color_filter_opa(bvm *vm); +extern int lvbe_style_set_anim_time(bvm *vm); +extern int lvbe_style_set_anim_speed(bvm *vm); +extern int lvbe_style_set_transition(bvm *vm); +extern int lvbe_style_set_blend_mode(bvm *vm); +extern int lvbe_style_set_layout(bvm *vm); +extern int lvbe_style_set_base_dir(bvm *vm); +extern int lvbe_style_set_bg_color(bvm *vm); +extern int lvbe_style_set_bg_color_filtered(bvm *vm); +extern int lvbe_style_set_bg_opa(bvm *vm); +extern int lvbe_style_set_bg_grad_color(bvm *vm); +extern int lvbe_style_set_bg_grad_color_filtered(bvm *vm); +extern int lvbe_style_set_bg_grad_dir(bvm *vm); +extern int lvbe_style_set_bg_main_stop(bvm *vm); +extern int lvbe_style_set_bg_grad_stop(bvm *vm); +extern int lvbe_style_set_bg_img_src(bvm *vm); +extern int lvbe_style_set_bg_img_opa(bvm *vm); +extern int lvbe_style_set_bg_img_recolor(bvm *vm); +extern int lvbe_style_set_bg_img_recolor_filtered(bvm *vm); +extern int lvbe_style_set_bg_img_recolor_opa(bvm *vm); +extern int lvbe_style_set_bg_img_tiled(bvm *vm); +extern int lvbe_style_set_border_color(bvm *vm); +extern int lvbe_style_set_border_color_filtered(bvm *vm); +extern int lvbe_style_set_border_opa(bvm *vm); +extern int lvbe_style_set_border_width(bvm *vm); +extern int lvbe_style_set_border_side(bvm *vm); +extern int lvbe_style_set_border_post(bvm *vm); +extern int lvbe_style_set_text_color(bvm *vm); +extern int lvbe_style_set_text_color_filtered(bvm *vm); +extern int lvbe_style_set_text_opa(bvm *vm); +extern int lvbe_style_set_text_font(bvm *vm); +extern int lvbe_style_set_text_letter_space(bvm *vm); +extern int lvbe_style_set_text_line_space(bvm *vm); +extern int lvbe_style_set_text_decor(bvm *vm); +extern int lvbe_style_set_text_align(bvm *vm); +extern int lvbe_style_set_img_opa(bvm *vm); +extern int lvbe_style_set_img_recolor(bvm *vm); +extern int lvbe_style_set_img_recolor_filtered(bvm *vm); +extern int lvbe_style_set_img_recolor_opa(bvm *vm); +extern int lvbe_style_set_outline_width(bvm *vm); +extern int lvbe_style_set_outline_color(bvm *vm); +extern int lvbe_style_set_outline_color_filtered(bvm *vm); +extern int lvbe_style_set_outline_opa(bvm *vm); +extern int lvbe_style_set_outline_pad(bvm *vm); +extern int lvbe_style_set_shadow_width(bvm *vm); +extern int lvbe_style_set_shadow_ofs_x(bvm *vm); +extern int lvbe_style_set_shadow_ofs_y(bvm *vm); +extern int lvbe_style_set_shadow_spread(bvm *vm); +extern int lvbe_style_set_shadow_color(bvm *vm); +extern int lvbe_style_set_shadow_color_filtered(bvm *vm); +extern int lvbe_style_set_shadow_opa(bvm *vm); +extern int lvbe_style_set_line_width(bvm *vm); +extern int lvbe_style_set_line_dash_width(bvm *vm); +extern int lvbe_style_set_line_dash_gap(bvm *vm); +extern int lvbe_style_set_line_rounded(bvm *vm); +extern int lvbe_style_set_line_color(bvm *vm); +extern int lvbe_style_set_line_color_filtered(bvm *vm); +extern int lvbe_style_set_line_opa(bvm *vm); +extern int lvbe_style_set_arc_width(bvm *vm); +extern int lvbe_style_set_arc_rounded(bvm *vm); +extern int lvbe_style_set_arc_color(bvm *vm); +extern int lvbe_style_set_arc_color_filtered(bvm *vm); +extern int lvbe_style_set_arc_opa(bvm *vm); +extern int lvbe_style_set_arc_img_src(bvm *vm); + /* `lv_img` external functions definitions */ extern int lvbe_img_set_tasmota_logo(bvm *vm); extern int lvbe_img_create(bvm *vm); extern int lvbe_img_set_src(bvm *vm); -extern int lvbe_img_set_auto_size(bvm *vm); extern int lvbe_img_set_offset_x(bvm *vm); extern int lvbe_img_set_offset_y(bvm *vm); -extern int lvbe_img_set_pivot(bvm *vm); extern int lvbe_img_set_angle(bvm *vm); +extern int lvbe_img_set_pivot(bvm *vm); extern int lvbe_img_set_zoom(bvm *vm); extern int lvbe_img_set_antialias(bvm *vm); extern int lvbe_img_get_src(bvm *vm); -extern int lvbe_img_get_file_name(bvm *vm); -extern int lvbe_img_get_auto_size(bvm *vm); extern int lvbe_img_get_offset_x(bvm *vm); extern int lvbe_img_get_offset_y(bvm *vm); extern int lvbe_img_get_angle(bvm *vm); extern int lvbe_img_get_pivot(bvm *vm); extern int lvbe_img_get_zoom(bvm *vm); extern int lvbe_img_get_antialias(bvm *vm); -extern int lvbe_img_cf_get_px_size(bvm *vm); -extern int lvbe_img_cf_is_chroma_keyed(bvm *vm); -extern int lvbe_img_cf_has_alpha(bvm *vm); -extern int lvbe_img_buf_get_px_color(bvm *vm); -extern int lvbe_img_buf_get_px_alpha(bvm *vm); -extern int lvbe_img_buf_set_px_color(bvm *vm); -extern int lvbe_img_buf_set_px_alpha(bvm *vm); -extern int lvbe_img_buf_set_palette(bvm *vm); -extern int lvbe_img_buf_free(bvm *vm); -extern int lvbe_img_buf_get_img_size(bvm *vm); -/* `lv_style` external functions definitions */ -extern int lvbe_style_copy(bvm *vm); -extern int lvbe_style_list_init(bvm *vm); -extern int lvbe_style_list_copy(bvm *vm); -extern int lvbe_style_list_get_style(bvm *vm); -extern int lvbe_style_reset(bvm *vm); -extern int lvbe_style_remove_prop(bvm *vm); -extern int lvbe_style_list_get_local_style(bvm *vm); -extern int lvbe_style_set_radius(bvm *vm); -extern int lvbe_style_set_clip_corner(bvm *vm); -extern int lvbe_style_set_size(bvm *vm); -extern int lvbe_style_set_transform_width(bvm *vm); -extern int lvbe_style_set_transform_height(bvm *vm); -extern int lvbe_style_set_transform_angle(bvm *vm); -extern int lvbe_style_set_transform_zoom(bvm *vm); -extern int lvbe_style_set_opa_scale(bvm *vm); -extern int lvbe_style_set_pad_top(bvm *vm); -extern int lvbe_style_set_pad_bottom(bvm *vm); -extern int lvbe_style_set_pad_left(bvm *vm); -extern int lvbe_style_set_pad_right(bvm *vm); -extern int lvbe_style_set_pad_inner(bvm *vm); -extern int lvbe_style_set_margin_top(bvm *vm); -extern int lvbe_style_set_margin_bottom(bvm *vm); -extern int lvbe_style_set_margin_left(bvm *vm); -extern int lvbe_style_set_margin_right(bvm *vm); -extern int lvbe_style_set_bg_blend_mode(bvm *vm); -extern int lvbe_style_set_bg_main_stop(bvm *vm); -extern int lvbe_style_set_bg_grad_stop(bvm *vm); -extern int lvbe_style_set_bg_grad_dir(bvm *vm); -extern int lvbe_style_set_bg_color(bvm *vm); -extern int lvbe_style_set_bg_grad_color(bvm *vm); -extern int lvbe_style_set_bg_opa(bvm *vm); -extern int lvbe_style_set_border_width(bvm *vm); -extern int lvbe_style_set_border_side(bvm *vm); -extern int lvbe_style_set_border_blend_mode(bvm *vm); -extern int lvbe_style_set_border_post(bvm *vm); -extern int lvbe_style_set_border_color(bvm *vm); -extern int lvbe_style_set_border_opa(bvm *vm); -extern int lvbe_style_set_outline_width(bvm *vm); -extern int lvbe_style_set_outline_pad(bvm *vm); -extern int lvbe_style_set_outline_blend_mode(bvm *vm); -extern int lvbe_style_set_outline_color(bvm *vm); -extern int lvbe_style_set_outline_opa(bvm *vm); -extern int lvbe_style_set_shadow_width(bvm *vm); -extern int lvbe_style_set_shadow_ofs_x(bvm *vm); -extern int lvbe_style_set_shadow_ofs_y(bvm *vm); -extern int lvbe_style_set_shadow_spread(bvm *vm); -extern int lvbe_style_set_shadow_blend_mode(bvm *vm); -extern int lvbe_style_set_shadow_color(bvm *vm); -extern int lvbe_style_set_shadow_opa(bvm *vm); -extern int lvbe_style_set_pattern_repeat(bvm *vm); -extern int lvbe_style_set_pattern_blend_mode(bvm *vm); -extern int lvbe_style_set_pattern_recolor(bvm *vm); -extern int lvbe_style_set_pattern_opa(bvm *vm); -extern int lvbe_style_set_pattern_recolor_opa(bvm *vm); -extern int lvbe_style_set_pattern_image(bvm *vm); -extern int lvbe_style_set_value_letter_space(bvm *vm); -extern int lvbe_style_set_value_line_space(bvm *vm); -extern int lvbe_style_set_value_blend_mode(bvm *vm); -extern int lvbe_style_set_value_ofs_x(bvm *vm); -extern int lvbe_style_set_value_ofs_y(bvm *vm); -extern int lvbe_style_set_value_align(bvm *vm); -extern int lvbe_style_set_value_color(bvm *vm); -extern int lvbe_style_set_value_opa(bvm *vm); -extern int lvbe_style_set_value_font(bvm *vm); -extern int lvbe_style_set_value_str(bvm *vm); -extern int lvbe_style_set_text_letter_space(bvm *vm); -extern int lvbe_style_set_text_line_space(bvm *vm); -extern int lvbe_style_set_text_decor(bvm *vm); -extern int lvbe_style_set_text_blend_mode(bvm *vm); -extern int lvbe_style_set_text_color(bvm *vm); -extern int lvbe_style_set_text_sel_color(bvm *vm); -extern int lvbe_style_set_text_sel_bg_color(bvm *vm); -extern int lvbe_style_set_text_opa(bvm *vm); -extern int lvbe_style_set_text_font(bvm *vm); -extern int lvbe_style_set_line_width(bvm *vm); -extern int lvbe_style_set_line_blend_mode(bvm *vm); -extern int lvbe_style_set_line_dash_width(bvm *vm); -extern int lvbe_style_set_line_dash_gap(bvm *vm); -extern int lvbe_style_set_line_rounded(bvm *vm); -extern int lvbe_style_set_line_color(bvm *vm); -extern int lvbe_style_set_line_opa(bvm *vm); -extern int lvbe_style_set_image_blend_mode(bvm *vm); -extern int lvbe_style_set_image_recolor(bvm *vm); -extern int lvbe_style_set_image_opa(bvm *vm); -extern int lvbe_style_set_image_recolor_opa(bvm *vm); -extern int lvbe_style_set_transition_time(bvm *vm); -extern int lvbe_style_set_transition_delay(bvm *vm); -extern int lvbe_style_set_transition_prop_1(bvm *vm); -extern int lvbe_style_set_transition_prop_2(bvm *vm); -extern int lvbe_style_set_transition_prop_3(bvm *vm); -extern int lvbe_style_set_transition_prop_4(bvm *vm); -extern int lvbe_style_set_transition_prop_5(bvm *vm); -extern int lvbe_style_set_transition_prop_6(bvm *vm); -extern int lvbe_style_set_transition_path(bvm *vm); -extern int lvbe_style_set_scale_width(bvm *vm); -extern int lvbe_style_set_scale_border_width(bvm *vm); -extern int lvbe_style_set_scale_end_border_width(bvm *vm); -extern int lvbe_style_set_scale_end_line_width(bvm *vm); -extern int lvbe_style_set_scale_grad_color(bvm *vm); -extern int lvbe_style_set_scale_end_color(bvm *vm); +/* `lv_obj` external functions definitions */ +extern int lvbe_obj_add_event_cb(bvm *vm); +extern int lvbe_obj_remove_event_cb(bvm *vm); +extern int lvbe_obj_remove_event_dsc(bvm *vm); +extern int lvbe_obj_create(bvm *vm); +extern int lvbe_obj_add_flag(bvm *vm); +extern int lvbe_obj_clear_flag(bvm *vm); +extern int lvbe_obj_add_state(bvm *vm); +extern int lvbe_obj_clear_state(bvm *vm); +extern int lvbe_obj_set_user_data(bvm *vm); +extern int lvbe_obj_has_flag(bvm *vm); +extern int lvbe_obj_has_flag_any(bvm *vm); +extern int lvbe_obj_get_state(bvm *vm); +extern int lvbe_obj_has_state(bvm *vm); +extern int lvbe_obj_get_group(bvm *vm); +extern int lvbe_obj_get_user_data(bvm *vm); +extern int lvbe_obj_allocate_spec_attr(bvm *vm); +extern int lvbe_obj_check_type(bvm *vm); +extern int lvbe_obj_has_class(bvm *vm); +extern int lvbe_obj_get_class(bvm *vm); +extern int lvbe_obj_is_valid(bvm *vm); +extern int lvbe_obj_dpx(bvm *vm); +extern int lvbe_obj_class_init_obj(bvm *vm); +extern int lvbe_obj_is_editable(bvm *vm); +extern int lvbe_obj_is_group_def(bvm *vm); +extern int lvbe_obj_init_draw_rect_dsc(bvm *vm); +extern int lvbe_obj_init_draw_label_dsc(bvm *vm); +extern int lvbe_obj_init_draw_img_dsc(bvm *vm); +extern int lvbe_obj_init_draw_line_dsc(bvm *vm); +extern int lvbe_obj_init_draw_arc_dsc(bvm *vm); +extern int lvbe_obj_calculate_ext_draw_size(bvm *vm); +extern int lvbe_obj_refresh_ext_draw_size(bvm *vm); +extern int lvbe_obj_set_pos(bvm *vm); +extern int lvbe_obj_set_x(bvm *vm); +extern int lvbe_obj_set_y(bvm *vm); +extern int lvbe_obj_set_size(bvm *vm); +extern int lvbe_obj_refr_size(bvm *vm); +extern int lvbe_obj_set_width(bvm *vm); +extern int lvbe_obj_set_height(bvm *vm); +extern int lvbe_obj_set_content_width(bvm *vm); +extern int lvbe_obj_set_content_height(bvm *vm); +extern int lvbe_obj_set_layout(bvm *vm); +extern int lvbe_obj_is_layout_positioned(bvm *vm); +extern int lvbe_obj_mark_layout_as_dirty(bvm *vm); +extern int lvbe_obj_update_layout(bvm *vm); +extern int lvbe_obj_set_align(bvm *vm); +extern int lvbe_obj_align(bvm *vm); +extern int lvbe_obj_align_to(bvm *vm); +extern int lvbe_obj_center(bvm *vm); +extern int lvbe_obj_get_coords(bvm *vm); +extern int lvbe_obj_get_x(bvm *vm); +extern int lvbe_obj_get_x2(bvm *vm); +extern int lvbe_obj_get_y(bvm *vm); +extern int lvbe_obj_get_y2(bvm *vm); +extern int lvbe_obj_get_width(bvm *vm); +extern int lvbe_obj_get_height(bvm *vm); +extern int lvbe_obj_get_content_width(bvm *vm); +extern int lvbe_obj_get_content_height(bvm *vm); +extern int lvbe_obj_get_content_coords(bvm *vm); +extern int lvbe_obj_get_self_width(bvm *vm); +extern int lvbe_obj_get_self_height(bvm *vm); +extern int lvbe_obj_refresh_self_size(bvm *vm); +extern int lvbe_obj_refr_pos(bvm *vm); +extern int lvbe_obj_move_to(bvm *vm); +extern int lvbe_obj_move_children_by(bvm *vm); +extern int lvbe_obj_invalidate_area(bvm *vm); +extern int lvbe_obj_invalidate(bvm *vm); +extern int lvbe_obj_area_is_visible(bvm *vm); +extern int lvbe_obj_is_visible(bvm *vm); +extern int lvbe_obj_set_ext_click_area(bvm *vm); +extern int lvbe_obj_get_click_area(bvm *vm); +extern int lvbe_obj_hit_test(bvm *vm); +extern int lvbe_obj_set_scrollbar_mode(bvm *vm); +extern int lvbe_obj_set_scroll_dir(bvm *vm); +extern int lvbe_obj_set_scroll_snap_x(bvm *vm); +extern int lvbe_obj_set_scroll_snap_y(bvm *vm); +extern int lvbe_obj_get_scrollbar_mode(bvm *vm); +extern int lvbe_obj_get_scroll_dir(bvm *vm); +extern int lvbe_obj_get_scroll_snap_x(bvm *vm); +extern int lvbe_obj_get_scroll_snap_y(bvm *vm); +extern int lvbe_obj_get_scroll_x(bvm *vm); +extern int lvbe_obj_get_scroll_y(bvm *vm); +extern int lvbe_obj_get_scroll_top(bvm *vm); +extern int lvbe_obj_get_scroll_bottom(bvm *vm); +extern int lvbe_obj_get_scroll_left(bvm *vm); +extern int lvbe_obj_get_scroll_right(bvm *vm); +extern int lvbe_obj_get_scroll_end(bvm *vm); +extern int lvbe_obj_scroll_by(bvm *vm); +extern int lvbe_obj_scroll_to(bvm *vm); +extern int lvbe_obj_scroll_to_x(bvm *vm); +extern int lvbe_obj_scroll_to_y(bvm *vm); +extern int lvbe_obj_scroll_to_view(bvm *vm); +extern int lvbe_obj_scroll_to_view_recursive(bvm *vm); +extern int lvbe_obj_is_scrolling(bvm *vm); +extern int lvbe_obj_update_snap(bvm *vm); +extern int lvbe_obj_get_scrollbar_area(bvm *vm); +extern int lvbe_obj_scrollbar_invalidate(bvm *vm); +extern int lvbe_obj_readjust_scroll(bvm *vm); +extern int lvbe_obj_add_style(bvm *vm); +extern int lvbe_obj_remove_style(bvm *vm); +extern int lvbe_obj_remove_style_all(bvm *vm); +extern int lvbe_obj_refresh_style(bvm *vm); +extern int lvbe_obj_get_style_prop(bvm *vm); +extern int lvbe_obj_set_local_style_prop(bvm *vm); +extern int lvbe_obj_get_local_style_prop(bvm *vm); +extern int lvbe_obj_remove_local_style_prop(bvm *vm); +extern int lvbe_obj_fade_in(bvm *vm); +extern int lvbe_obj_fade_out(bvm *vm); +extern int lvbe_obj_set_style_pad_all(bvm *vm); +extern int lvbe_obj_set_style_pad_hor(bvm *vm); +extern int lvbe_obj_set_style_pad_ver(bvm *vm); +extern int lvbe_obj_set_style_pad_gap(bvm *vm); +extern int lvbe_obj_set_style_size(bvm *vm); +extern int lvbe_obj_get_style_width(bvm *vm); +extern int lvbe_obj_get_style_min_width(bvm *vm); +extern int lvbe_obj_get_style_max_width(bvm *vm); +extern int lvbe_obj_get_style_height(bvm *vm); +extern int lvbe_obj_get_style_min_height(bvm *vm); +extern int lvbe_obj_get_style_max_height(bvm *vm); +extern int lvbe_obj_get_style_x(bvm *vm); +extern int lvbe_obj_get_style_y(bvm *vm); +extern int lvbe_obj_get_style_align(bvm *vm); +extern int lvbe_obj_get_style_transform_width(bvm *vm); +extern int lvbe_obj_get_style_transform_height(bvm *vm); +extern int lvbe_obj_get_style_translate_x(bvm *vm); +extern int lvbe_obj_get_style_translate_y(bvm *vm); +extern int lvbe_obj_get_style_transform_zoom(bvm *vm); +extern int lvbe_obj_get_style_transform_angle(bvm *vm); +extern int lvbe_obj_get_style_pad_top(bvm *vm); +extern int lvbe_obj_get_style_pad_bottom(bvm *vm); +extern int lvbe_obj_get_style_pad_left(bvm *vm); +extern int lvbe_obj_get_style_pad_right(bvm *vm); +extern int lvbe_obj_get_style_pad_row(bvm *vm); +extern int lvbe_obj_get_style_pad_column(bvm *vm); +extern int lvbe_obj_get_style_radius(bvm *vm); +extern int lvbe_obj_get_style_clip_corner(bvm *vm); +extern int lvbe_obj_get_style_opa(bvm *vm); +extern int lvbe_obj_get_style_color_filter_opa(bvm *vm); +extern int lvbe_obj_get_style_anim_time(bvm *vm); +extern int lvbe_obj_get_style_anim_speed(bvm *vm); +extern int lvbe_obj_get_style_blend_mode(bvm *vm); +extern int lvbe_obj_get_style_layout(bvm *vm); +extern int lvbe_obj_get_style_base_dir(bvm *vm); +extern int lvbe_obj_get_style_bg_color(bvm *vm); +extern int lvbe_obj_get_style_bg_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_bg_opa(bvm *vm); +extern int lvbe_obj_get_style_bg_grad_color(bvm *vm); +extern int lvbe_obj_get_style_bg_grad_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_bg_grad_dir(bvm *vm); +extern int lvbe_obj_get_style_bg_main_stop(bvm *vm); +extern int lvbe_obj_get_style_bg_grad_stop(bvm *vm); +extern int lvbe_obj_get_style_bg_img_src(bvm *vm); +extern int lvbe_obj_get_style_bg_img_opa(bvm *vm); +extern int lvbe_obj_get_style_bg_img_recolor(bvm *vm); +extern int lvbe_obj_get_style_bg_img_recolor_filtered(bvm *vm); +extern int lvbe_obj_get_style_bg_img_recolor_opa(bvm *vm); +extern int lvbe_obj_get_style_bg_img_tiled(bvm *vm); +extern int lvbe_obj_get_style_border_color(bvm *vm); +extern int lvbe_obj_get_style_border_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_border_opa(bvm *vm); +extern int lvbe_obj_get_style_border_width(bvm *vm); +extern int lvbe_obj_get_style_border_side(bvm *vm); +extern int lvbe_obj_get_style_border_post(bvm *vm); +extern int lvbe_obj_get_style_text_color(bvm *vm); +extern int lvbe_obj_get_style_text_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_text_opa(bvm *vm); +extern int lvbe_obj_get_style_text_font(bvm *vm); +extern int lvbe_obj_get_style_text_letter_space(bvm *vm); +extern int lvbe_obj_get_style_text_line_space(bvm *vm); +extern int lvbe_obj_get_style_text_decor(bvm *vm); +extern int lvbe_obj_get_style_text_align(bvm *vm); +extern int lvbe_obj_get_style_img_opa(bvm *vm); +extern int lvbe_obj_get_style_img_recolor(bvm *vm); +extern int lvbe_obj_get_style_img_recolor_filtered(bvm *vm); +extern int lvbe_obj_get_style_img_recolor_opa(bvm *vm); +extern int lvbe_obj_get_style_outline_width(bvm *vm); +extern int lvbe_obj_get_style_outline_color(bvm *vm); +extern int lvbe_obj_get_style_outline_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_outline_opa(bvm *vm); +extern int lvbe_obj_get_style_outline_pad(bvm *vm); +extern int lvbe_obj_get_style_shadow_width(bvm *vm); +extern int lvbe_obj_get_style_shadow_ofs_x(bvm *vm); +extern int lvbe_obj_get_style_shadow_ofs_y(bvm *vm); +extern int lvbe_obj_get_style_shadow_spread(bvm *vm); +extern int lvbe_obj_get_style_shadow_color(bvm *vm); +extern int lvbe_obj_get_style_shadow_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_shadow_opa(bvm *vm); +extern int lvbe_obj_get_style_line_width(bvm *vm); +extern int lvbe_obj_get_style_line_dash_width(bvm *vm); +extern int lvbe_obj_get_style_line_dash_gap(bvm *vm); +extern int lvbe_obj_get_style_line_rounded(bvm *vm); +extern int lvbe_obj_get_style_line_color(bvm *vm); +extern int lvbe_obj_get_style_line_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_line_opa(bvm *vm); +extern int lvbe_obj_get_style_arc_width(bvm *vm); +extern int lvbe_obj_get_style_arc_rounded(bvm *vm); +extern int lvbe_obj_get_style_arc_color(bvm *vm); +extern int lvbe_obj_get_style_arc_color_filtered(bvm *vm); +extern int lvbe_obj_get_style_arc_opa(bvm *vm); +extern int lvbe_obj_get_style_arc_img_src(bvm *vm); +extern int lvbe_obj_set_style_width(bvm *vm); +extern int lvbe_obj_set_style_min_width(bvm *vm); +extern int lvbe_obj_set_style_max_width(bvm *vm); +extern int lvbe_obj_set_style_height(bvm *vm); +extern int lvbe_obj_set_style_min_height(bvm *vm); +extern int lvbe_obj_set_style_max_height(bvm *vm); +extern int lvbe_obj_set_style_x(bvm *vm); +extern int lvbe_obj_set_style_y(bvm *vm); +extern int lvbe_obj_set_style_align(bvm *vm); +extern int lvbe_obj_set_style_transform_width(bvm *vm); +extern int lvbe_obj_set_style_transform_height(bvm *vm); +extern int lvbe_obj_set_style_translate_x(bvm *vm); +extern int lvbe_obj_set_style_translate_y(bvm *vm); +extern int lvbe_obj_set_style_transform_zoom(bvm *vm); +extern int lvbe_obj_set_style_transform_angle(bvm *vm); +extern int lvbe_obj_set_style_pad_top(bvm *vm); +extern int lvbe_obj_set_style_pad_bottom(bvm *vm); +extern int lvbe_obj_set_style_pad_left(bvm *vm); +extern int lvbe_obj_set_style_pad_right(bvm *vm); +extern int lvbe_obj_set_style_pad_row(bvm *vm); +extern int lvbe_obj_set_style_pad_column(bvm *vm); +extern int lvbe_obj_set_style_radius(bvm *vm); +extern int lvbe_obj_set_style_clip_corner(bvm *vm); +extern int lvbe_obj_set_style_opa(bvm *vm); +extern int lvbe_obj_set_style_color_filter_dsc(bvm *vm); +extern int lvbe_obj_set_style_color_filter_opa(bvm *vm); +extern int lvbe_obj_set_style_anim_time(bvm *vm); +extern int lvbe_obj_set_style_anim_speed(bvm *vm); +extern int lvbe_obj_set_style_transition(bvm *vm); +extern int lvbe_obj_set_style_blend_mode(bvm *vm); +extern int lvbe_obj_set_style_layout(bvm *vm); +extern int lvbe_obj_set_style_base_dir(bvm *vm); +extern int lvbe_obj_set_style_bg_color(bvm *vm); +extern int lvbe_obj_set_style_bg_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_bg_opa(bvm *vm); +extern int lvbe_obj_set_style_bg_grad_color(bvm *vm); +extern int lvbe_obj_set_style_bg_grad_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_bg_grad_dir(bvm *vm); +extern int lvbe_obj_set_style_bg_main_stop(bvm *vm); +extern int lvbe_obj_set_style_bg_grad_stop(bvm *vm); +extern int lvbe_obj_set_style_bg_img_src(bvm *vm); +extern int lvbe_obj_set_style_bg_img_opa(bvm *vm); +extern int lvbe_obj_set_style_bg_img_recolor(bvm *vm); +extern int lvbe_obj_set_style_bg_img_recolor_filtered(bvm *vm); +extern int lvbe_obj_set_style_bg_img_recolor_opa(bvm *vm); +extern int lvbe_obj_set_style_bg_img_tiled(bvm *vm); +extern int lvbe_obj_set_style_border_color(bvm *vm); +extern int lvbe_obj_set_style_border_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_border_opa(bvm *vm); +extern int lvbe_obj_set_style_border_width(bvm *vm); +extern int lvbe_obj_set_style_border_side(bvm *vm); +extern int lvbe_obj_set_style_border_post(bvm *vm); +extern int lvbe_obj_set_style_text_color(bvm *vm); +extern int lvbe_obj_set_style_text_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_text_opa(bvm *vm); +extern int lvbe_obj_set_style_text_font(bvm *vm); +extern int lvbe_obj_set_style_text_letter_space(bvm *vm); +extern int lvbe_obj_set_style_text_line_space(bvm *vm); +extern int lvbe_obj_set_style_text_decor(bvm *vm); +extern int lvbe_obj_set_style_text_align(bvm *vm); +extern int lvbe_obj_set_style_img_opa(bvm *vm); +extern int lvbe_obj_set_style_img_recolor(bvm *vm); +extern int lvbe_obj_set_style_img_recolor_filtered(bvm *vm); +extern int lvbe_obj_set_style_img_recolor_opa(bvm *vm); +extern int lvbe_obj_set_style_outline_width(bvm *vm); +extern int lvbe_obj_set_style_outline_color(bvm *vm); +extern int lvbe_obj_set_style_outline_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_outline_opa(bvm *vm); +extern int lvbe_obj_set_style_outline_pad(bvm *vm); +extern int lvbe_obj_set_style_shadow_width(bvm *vm); +extern int lvbe_obj_set_style_shadow_ofs_x(bvm *vm); +extern int lvbe_obj_set_style_shadow_ofs_y(bvm *vm); +extern int lvbe_obj_set_style_shadow_spread(bvm *vm); +extern int lvbe_obj_set_style_shadow_color(bvm *vm); +extern int lvbe_obj_set_style_shadow_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_shadow_opa(bvm *vm); +extern int lvbe_obj_set_style_line_width(bvm *vm); +extern int lvbe_obj_set_style_line_dash_width(bvm *vm); +extern int lvbe_obj_set_style_line_dash_gap(bvm *vm); +extern int lvbe_obj_set_style_line_rounded(bvm *vm); +extern int lvbe_obj_set_style_line_color(bvm *vm); +extern int lvbe_obj_set_style_line_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_line_opa(bvm *vm); +extern int lvbe_obj_set_style_arc_width(bvm *vm); +extern int lvbe_obj_set_style_arc_rounded(bvm *vm); +extern int lvbe_obj_set_style_arc_color(bvm *vm); +extern int lvbe_obj_set_style_arc_color_filtered(bvm *vm); +extern int lvbe_obj_set_style_arc_opa(bvm *vm); +extern int lvbe_obj_set_style_arc_img_src(bvm *vm); +extern int lvbe_obj_del(bvm *vm); +extern int lvbe_obj_clean(bvm *vm); +extern int lvbe_obj_del_async(bvm *vm); +extern int lvbe_obj_set_parent(bvm *vm); +extern int lvbe_obj_move_foreground(bvm *vm); +extern int lvbe_obj_move_background(bvm *vm); +extern int lvbe_obj_get_screen(bvm *vm); +extern int lvbe_obj_get_parent(bvm *vm); +extern int lvbe_obj_get_child(bvm *vm); +extern int lvbe_obj_get_child_cnt(bvm *vm); +extern int lvbe_obj_get_child_id(bvm *vm); +extern int lvbe_obj_tree_walk(bvm *vm); /* `lv_group` external functions definitions */ extern int lvbe_group_create(bvm *vm); extern int lvbe_group_del(bvm *vm); +extern int lvbe_group_set_default(bvm *vm); extern int lvbe_group_add_obj(bvm *vm); extern int lvbe_group_remove_obj(bvm *vm); extern int lvbe_group_remove_all_objs(bvm *vm); @@ -174,326 +452,124 @@ extern int lvbe_group_send_data(bvm *vm); extern int lvbe_group_set_focus_cb(bvm *vm); extern int lvbe_group_set_refocus_policy(bvm *vm); extern int lvbe_group_set_editing(bvm *vm); -extern int lvbe_group_set_click_focus(bvm *vm); extern int lvbe_group_set_wrap(bvm *vm); extern int lvbe_group_get_focused(bvm *vm); extern int lvbe_group_get_focus_cb(bvm *vm); extern int lvbe_group_get_editing(bvm *vm); -extern int lvbe_group_get_click_focus(bvm *vm); extern int lvbe_group_get_wrap(bvm *vm); +extern int lvbe_group_get_obj_count(bvm *vm); /* `lv_indev` external functions definitions */ -extern int lvbe_indev_get_type(bvm *vm); extern int lvbe_indev_enable(bvm *vm); +extern int lvbe_indev_get_type(bvm *vm); +extern int lvbe_indev_reset(bvm *vm); +extern int lvbe_indev_reset_long_press(bvm *vm); +extern int lvbe_indev_set_cursor(bvm *vm); extern int lvbe_indev_set_group(bvm *vm); -extern int lvbe_indev_get_obj_act(bvm *vm); +extern int lvbe_indev_set_button_points(bvm *vm); +extern int lvbe_indev_get_point(bvm *vm); +extern int lvbe_indev_get_gesture_dir(bvm *vm); +extern int lvbe_indev_get_key(bvm *vm); +extern int lvbe_indev_get_scroll_dir(bvm *vm); +extern int lvbe_indev_get_scroll_obj(bvm *vm); +extern int lvbe_indev_get_vect(bvm *vm); +extern int lvbe_indev_wait_release(bvm *vm); extern int lvbe_indev_search_obj(bvm *vm); -/* `lv_obj` external functions definitions */ -extern int lvbe_obj_create(bvm *vm); -extern int lvbe_obj_del(bvm *vm); -extern int lvbe_obj_del_anim_ready_cb(bvm *vm); -extern int lvbe_obj_del_async(bvm *vm); -extern int lvbe_obj_clean(bvm *vm); -extern int lvbe_obj_invalidate_area(bvm *vm); -extern int lvbe_obj_invalidate(bvm *vm); -extern int lvbe_obj_area_is_visible(bvm *vm); -extern int lvbe_obj_is_visible(bvm *vm); -extern int lvbe_obj_set_parent(bvm *vm); -extern int lvbe_obj_move_foreground(bvm *vm); -extern int lvbe_obj_move_background(bvm *vm); -extern int lvbe_obj_set_pos(bvm *vm); -extern int lvbe_obj_set_x(bvm *vm); -extern int lvbe_obj_set_y(bvm *vm); -extern int lvbe_obj_set_size(bvm *vm); -extern int lvbe_obj_set_width(bvm *vm); -extern int lvbe_obj_set_height(bvm *vm); -extern int lvbe_obj_set_width_fit(bvm *vm); -extern int lvbe_obj_set_height_fit(bvm *vm); -extern int lvbe_obj_set_width_margin(bvm *vm); -extern int lvbe_obj_set_height_margin(bvm *vm); -extern int lvbe_obj_align(bvm *vm); -extern int lvbe_obj_align_x(bvm *vm); -extern int lvbe_obj_align_y(bvm *vm); -extern int lvbe_obj_align_mid(bvm *vm); -extern int lvbe_obj_align_mid_x(bvm *vm); -extern int lvbe_obj_align_mid_y(bvm *vm); -extern int lvbe_obj_realign(bvm *vm); -extern int lvbe_obj_set_auto_realign(bvm *vm); -extern int lvbe_obj_set_ext_click_area(bvm *vm); -extern int lvbe_obj_add_style(bvm *vm); -extern int lvbe_obj_remove_style(bvm *vm); -extern int lvbe_obj_clean_style_list(bvm *vm); -extern int lvbe_obj_reset_style_list(bvm *vm); -extern int lvbe_obj_refresh_style(bvm *vm); -extern int lvbe_obj_report_style_mod(bvm *vm); -extern int lvbe_obj_remove_style_local_prop(bvm *vm); -extern int lvbe_obj_set_hidden(bvm *vm); -extern int lvbe_obj_set_adv_hittest(bvm *vm); -extern int lvbe_obj_set_click(bvm *vm); -extern int lvbe_obj_set_top(bvm *vm); -extern int lvbe_obj_set_drag(bvm *vm); -extern int lvbe_obj_set_drag_dir(bvm *vm); -extern int lvbe_obj_set_drag_throw(bvm *vm); -extern int lvbe_obj_set_drag_parent(bvm *vm); -extern int lvbe_obj_set_focus_parent(bvm *vm); -extern int lvbe_obj_set_gesture_parent(bvm *vm); -extern int lvbe_obj_set_parent_event(bvm *vm); -extern int lvbe_obj_set_base_dir(bvm *vm); -extern int lvbe_obj_add_protect(bvm *vm); -extern int lvbe_obj_clear_protect(bvm *vm); -extern int lvbe_obj_set_state(bvm *vm); -extern int lvbe_obj_add_state(bvm *vm); -extern int lvbe_obj_clear_state(bvm *vm); -extern int lvbe_obj_finish_transitions(bvm *vm); -extern int lvbe_obj_set_event_cb(bvm *vm); -extern int lvbe_obj_set_signal_cb(bvm *vm); -extern int lvbe_obj_set_design_cb(bvm *vm); -extern int lvbe_obj_allocate_ext_attr(bvm *vm); -extern int lvbe_obj_refresh_ext_draw_pad(bvm *vm); -extern int lvbe_obj_get_screen(bvm *vm); -extern int lvbe_obj_get_parent(bvm *vm); -extern int lvbe_obj_get_child(bvm *vm); -extern int lvbe_obj_get_child_back(bvm *vm); -extern int lvbe_obj_count_children(bvm *vm); -extern int lvbe_obj_count_children_recursive(bvm *vm); -extern int lvbe_obj_get_coords(bvm *vm); -extern int lvbe_obj_get_inner_coords(bvm *vm); -extern int lvbe_obj_get_x(bvm *vm); -extern int lvbe_obj_get_y(bvm *vm); -extern int lvbe_obj_get_width(bvm *vm); -extern int lvbe_obj_get_height(bvm *vm); -extern int lvbe_obj_get_width_fit(bvm *vm); -extern int lvbe_obj_get_height_fit(bvm *vm); -extern int lvbe_obj_get_height_margin(bvm *vm); -extern int lvbe_obj_get_width_margin(bvm *vm); -extern int lvbe_obj_get_width_grid(bvm *vm); -extern int lvbe_obj_get_height_grid(bvm *vm); -extern int lvbe_obj_get_auto_realign(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_left(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_right(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_top(bvm *vm); -extern int lvbe_obj_get_ext_click_pad_bottom(bvm *vm); -extern int lvbe_obj_get_ext_draw_pad(bvm *vm); -extern int lvbe_obj_get_local_style(bvm *vm); -extern int lvbe_obj_get_hidden(bvm *vm); -extern int lvbe_obj_get_adv_hittest(bvm *vm); -extern int lvbe_obj_get_click(bvm *vm); -extern int lvbe_obj_get_top(bvm *vm); -extern int lvbe_obj_get_drag(bvm *vm); -extern int lvbe_obj_get_drag_dir(bvm *vm); -extern int lvbe_obj_get_drag_throw(bvm *vm); -extern int lvbe_obj_get_drag_parent(bvm *vm); -extern int lvbe_obj_get_focus_parent(bvm *vm); -extern int lvbe_obj_get_parent_event(bvm *vm); -extern int lvbe_obj_get_gesture_parent(bvm *vm); -extern int lvbe_obj_get_base_dir(bvm *vm); -extern int lvbe_obj_get_protect(bvm *vm); -extern int lvbe_obj_is_protected(bvm *vm); -extern int lvbe_obj_get_state(bvm *vm); -extern int lvbe_obj_get_signal_cb(bvm *vm); -extern int lvbe_obj_get_design_cb(bvm *vm); -extern int lvbe_obj_get_event_cb(bvm *vm); -extern int lvbe_obj_is_point_on_coords(bvm *vm); -extern int lvbe_obj_hittest(bvm *vm); -extern int lvbe_obj_get_ext_attr(bvm *vm); -extern int lvbe_obj_get_type(bvm *vm); -extern int lvbe_obj_get_user_data(bvm *vm); -extern int lvbe_obj_set_user_data(bvm *vm); -extern int lvbe_obj_get_group(bvm *vm); -extern int lvbe_obj_is_focused(bvm *vm); -extern int lvbe_obj_get_focused_obj(bvm *vm); -extern int lvbe_obj_handle_get_type_signal(bvm *vm); -extern int lvbe_obj_init_draw_rect_dsc(bvm *vm); -extern int lvbe_obj_init_draw_label_dsc(bvm *vm); -extern int lvbe_obj_init_draw_img_dsc(bvm *vm); -extern int lvbe_obj_init_draw_line_dsc(bvm *vm); -extern int lvbe_obj_get_draw_rect_ext_pad_size(bvm *vm); -extern int lvbe_obj_fade_in(bvm *vm); -extern int lvbe_obj_fade_out(bvm *vm); -extern int lvbe_obj_get_style_radius(bvm *vm); -extern int lvbe_obj_set_style_local_radius(bvm *vm); -extern int lvbe_obj_get_style_clip_corner(bvm *vm); -extern int lvbe_obj_set_style_local_clip_corner(bvm *vm); -extern int lvbe_obj_get_style_size(bvm *vm); -extern int lvbe_obj_set_style_local_size(bvm *vm); -extern int lvbe_obj_get_style_transform_width(bvm *vm); -extern int lvbe_obj_set_style_local_transform_width(bvm *vm); -extern int lvbe_obj_get_style_transform_height(bvm *vm); -extern int lvbe_obj_set_style_local_transform_height(bvm *vm); -extern int lvbe_obj_get_style_transform_angle(bvm *vm); -extern int lvbe_obj_set_style_local_transform_angle(bvm *vm); -extern int lvbe_obj_get_style_transform_zoom(bvm *vm); -extern int lvbe_obj_set_style_local_transform_zoom(bvm *vm); -extern int lvbe_obj_get_style_opa_scale(bvm *vm); -extern int lvbe_obj_set_style_local_opa_scale(bvm *vm); -extern int lvbe_obj_get_style_pad_top(bvm *vm); -extern int lvbe_obj_set_style_local_pad_top(bvm *vm); -extern int lvbe_obj_get_style_pad_bottom(bvm *vm); -extern int lvbe_obj_set_style_local_pad_bottom(bvm *vm); -extern int lvbe_obj_get_style_pad_left(bvm *vm); -extern int lvbe_obj_set_style_local_pad_left(bvm *vm); -extern int lvbe_obj_get_style_pad_right(bvm *vm); -extern int lvbe_obj_set_style_local_pad_right(bvm *vm); -extern int lvbe_obj_get_style_pad_inner(bvm *vm); -extern int lvbe_obj_set_style_local_pad_inner(bvm *vm); -extern int lvbe_obj_get_style_margin_top(bvm *vm); -extern int lvbe_obj_set_style_local_margin_top(bvm *vm); -extern int lvbe_obj_get_style_margin_bottom(bvm *vm); -extern int lvbe_obj_set_style_local_margin_bottom(bvm *vm); -extern int lvbe_obj_get_style_margin_left(bvm *vm); -extern int lvbe_obj_set_style_local_margin_left(bvm *vm); -extern int lvbe_obj_get_style_margin_right(bvm *vm); -extern int lvbe_obj_set_style_local_margin_right(bvm *vm); -extern int lvbe_obj_get_style_bg_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_bg_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_bg_main_stop(bvm *vm); -extern int lvbe_obj_set_style_local_bg_main_stop(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_stop(bvm *vm); -extern int lvbe_obj_set_style_local_bg_grad_stop(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_dir(bvm *vm); -extern int lvbe_obj_set_style_local_bg_grad_dir(bvm *vm); -extern int lvbe_obj_get_style_bg_color(bvm *vm); -extern int lvbe_obj_set_style_local_bg_color(bvm *vm); -extern int lvbe_obj_get_style_bg_grad_color(bvm *vm); -extern int lvbe_obj_set_style_local_bg_grad_color(bvm *vm); -extern int lvbe_obj_get_style_bg_opa(bvm *vm); -extern int lvbe_obj_set_style_local_bg_opa(bvm *vm); -extern int lvbe_obj_get_style_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_border_width(bvm *vm); -extern int lvbe_obj_get_style_border_side(bvm *vm); -extern int lvbe_obj_set_style_local_border_side(bvm *vm); -extern int lvbe_obj_get_style_border_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_border_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_border_post(bvm *vm); -extern int lvbe_obj_set_style_local_border_post(bvm *vm); -extern int lvbe_obj_get_style_border_color(bvm *vm); -extern int lvbe_obj_set_style_local_border_color(bvm *vm); -extern int lvbe_obj_get_style_border_opa(bvm *vm); -extern int lvbe_obj_set_style_local_border_opa(bvm *vm); -extern int lvbe_obj_get_style_outline_width(bvm *vm); -extern int lvbe_obj_set_style_local_outline_width(bvm *vm); -extern int lvbe_obj_get_style_outline_pad(bvm *vm); -extern int lvbe_obj_set_style_local_outline_pad(bvm *vm); -extern int lvbe_obj_get_style_outline_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_outline_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_outline_color(bvm *vm); -extern int lvbe_obj_set_style_local_outline_color(bvm *vm); -extern int lvbe_obj_get_style_outline_opa(bvm *vm); -extern int lvbe_obj_set_style_local_outline_opa(bvm *vm); -extern int lvbe_obj_get_style_shadow_width(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_width(bvm *vm); -extern int lvbe_obj_get_style_shadow_ofs_x(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_ofs_x(bvm *vm); -extern int lvbe_obj_get_style_shadow_ofs_y(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_ofs_y(bvm *vm); -extern int lvbe_obj_get_style_shadow_spread(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_spread(bvm *vm); -extern int lvbe_obj_get_style_shadow_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_shadow_color(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_color(bvm *vm); -extern int lvbe_obj_get_style_shadow_opa(bvm *vm); -extern int lvbe_obj_set_style_local_shadow_opa(bvm *vm); -extern int lvbe_obj_get_style_pattern_repeat(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_repeat(bvm *vm); -extern int lvbe_obj_get_style_pattern_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_pattern_recolor(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_recolor(bvm *vm); -extern int lvbe_obj_get_style_pattern_opa(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_opa(bvm *vm); -extern int lvbe_obj_get_style_pattern_recolor_opa(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_recolor_opa(bvm *vm); -extern int lvbe_obj_get_style_pattern_image(bvm *vm); -extern int lvbe_obj_set_style_local_pattern_image(bvm *vm); -extern int lvbe_obj_get_style_value_letter_space(bvm *vm); -extern int lvbe_obj_set_style_local_value_letter_space(bvm *vm); -extern int lvbe_obj_get_style_value_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_value_line_space(bvm *vm); -extern int lvbe_obj_get_style_value_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_value_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_value_ofs_x(bvm *vm); -extern int lvbe_obj_set_style_local_value_ofs_x(bvm *vm); -extern int lvbe_obj_get_style_value_ofs_y(bvm *vm); -extern int lvbe_obj_set_style_local_value_ofs_y(bvm *vm); -extern int lvbe_obj_get_style_value_align(bvm *vm); -extern int lvbe_obj_set_style_local_value_align(bvm *vm); -extern int lvbe_obj_get_style_value_color(bvm *vm); -extern int lvbe_obj_set_style_local_value_color(bvm *vm); -extern int lvbe_obj_get_style_value_opa(bvm *vm); -extern int lvbe_obj_set_style_local_value_opa(bvm *vm); -extern int lvbe_obj_set_style_local_value_font(bvm *vm); -extern int lvbe_obj_get_style_value_str(bvm *vm); -extern int lvbe_obj_set_style_local_value_str(bvm *vm); -extern int lvbe_obj_get_style_text_letter_space(bvm *vm); -extern int lvbe_obj_set_style_local_text_letter_space(bvm *vm); -extern int lvbe_obj_get_style_text_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_text_line_space(bvm *vm); -extern int lvbe_obj_set_style_local_text_decor(bvm *vm); -extern int lvbe_obj_get_style_text_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_text_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_text_color(bvm *vm); -extern int lvbe_obj_set_style_local_text_color(bvm *vm); -extern int lvbe_obj_get_style_text_sel_color(bvm *vm); -extern int lvbe_obj_set_style_local_text_sel_color(bvm *vm); -extern int lvbe_obj_get_style_text_sel_bg_color(bvm *vm); -extern int lvbe_obj_set_style_local_text_sel_bg_color(bvm *vm); -extern int lvbe_obj_get_style_text_opa(bvm *vm); -extern int lvbe_obj_set_style_local_text_opa(bvm *vm); -extern int lvbe_obj_set_style_local_text_font(bvm *vm); -extern int lvbe_obj_get_style_line_width(bvm *vm); -extern int lvbe_obj_set_style_local_line_width(bvm *vm); -extern int lvbe_obj_get_style_line_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_line_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_line_dash_width(bvm *vm); -extern int lvbe_obj_set_style_local_line_dash_width(bvm *vm); -extern int lvbe_obj_get_style_line_dash_gap(bvm *vm); -extern int lvbe_obj_set_style_local_line_dash_gap(bvm *vm); -extern int lvbe_obj_get_style_line_rounded(bvm *vm); -extern int lvbe_obj_set_style_local_line_rounded(bvm *vm); -extern int lvbe_obj_get_style_line_color(bvm *vm); -extern int lvbe_obj_set_style_local_line_color(bvm *vm); -extern int lvbe_obj_get_style_line_opa(bvm *vm); -extern int lvbe_obj_set_style_local_line_opa(bvm *vm); -extern int lvbe_obj_get_style_image_blend_mode(bvm *vm); -extern int lvbe_obj_set_style_local_image_blend_mode(bvm *vm); -extern int lvbe_obj_get_style_image_recolor(bvm *vm); -extern int lvbe_obj_set_style_local_image_recolor(bvm *vm); -extern int lvbe_obj_get_style_image_opa(bvm *vm); -extern int lvbe_obj_set_style_local_image_opa(bvm *vm); -extern int lvbe_obj_get_style_image_recolor_opa(bvm *vm); -extern int lvbe_obj_set_style_local_image_recolor_opa(bvm *vm); -extern int lvbe_obj_get_style_transition_time(bvm *vm); -extern int lvbe_obj_set_style_local_transition_time(bvm *vm); -extern int lvbe_obj_get_style_transition_delay(bvm *vm); -extern int lvbe_obj_set_style_local_transition_delay(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_1(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_1(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_2(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_2(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_3(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_3(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_4(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_4(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_5(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_5(bvm *vm); -extern int lvbe_obj_get_style_transition_prop_6(bvm *vm); -extern int lvbe_obj_set_style_local_transition_prop_6(bvm *vm); -extern int lvbe_obj_set_style_local_transition_path(bvm *vm); -extern int lvbe_obj_get_style_scale_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_width(bvm *vm); -extern int lvbe_obj_get_style_scale_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_border_width(bvm *vm); -extern int lvbe_obj_get_style_scale_end_border_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_end_border_width(bvm *vm); -extern int lvbe_obj_get_style_scale_end_line_width(bvm *vm); -extern int lvbe_obj_set_style_local_scale_end_line_width(bvm *vm); -extern int lvbe_obj_get_style_scale_grad_color(bvm *vm); -extern int lvbe_obj_set_style_local_scale_grad_color(bvm *vm); -extern int lvbe_obj_get_style_scale_end_color(bvm *vm); -extern int lvbe_obj_set_style_local_scale_end_color(bvm *vm); -extern int lvbe_obj_signal_send(bvm *vm); +/* `lv_chart` external functions definitions */ +extern int lvbe_chart_create(bvm *vm); +extern int lvbe_chart_set_type(bvm *vm); +extern int lvbe_chart_set_point_count(bvm *vm); +extern int lvbe_chart_set_range(bvm *vm); +extern int lvbe_chart_set_update_mode(bvm *vm); +extern int lvbe_chart_set_div_line_count(bvm *vm); +extern int lvbe_chart_set_zoom_x(bvm *vm); +extern int lvbe_chart_set_zoom_y(bvm *vm); +extern int lvbe_chart_get_zoom_x(bvm *vm); +extern int lvbe_chart_get_zoom_y(bvm *vm); +extern int lvbe_chart_set_axis_tick(bvm *vm); +extern int lvbe_chart_get_type(bvm *vm); +extern int lvbe_chart_get_point_count(bvm *vm); +extern int lvbe_chart_get_x_start_point(bvm *vm); +extern int lvbe_chart_get_point_pos_by_id(bvm *vm); +extern int lvbe_chart_refresh(bvm *vm); +extern int lvbe_chart_remove_series(bvm *vm); +extern int lvbe_chart_hide_series(bvm *vm); +extern int lvbe_chart_set_series_color(bvm *vm); +extern int lvbe_chart_set_x_start_point(bvm *vm); +extern int lvbe_chart_set_cursor_pos(bvm *vm); +extern int lvbe_chart_set_cursor_point(bvm *vm); +extern int lvbe_chart_get_cursor_point(bvm *vm); +extern int lvbe_chart_set_all_value(bvm *vm); +extern int lvbe_chart_set_next_value(bvm *vm); +extern int lvbe_chart_set_next_value2(bvm *vm); +extern int lvbe_chart_set_value_by_id(bvm *vm); +extern int lvbe_chart_set_value_by_id2(bvm *vm); +extern int lvbe_chart_set_ext_y_array(bvm *vm); +extern int lvbe_chart_set_ext_x_array(bvm *vm); +extern int lvbe_chart_get_pressed_point(bvm *vm); + +/* `lv_colorwheel` external functions definitions */ +extern int lvbe_colorwheel_create(bvm *vm); +extern int lvbe_colorwheel_set_hsv(bvm *vm); +extern int lvbe_colorwheel_set_rgb(bvm *vm); +extern int lvbe_colorwheel_set_mode(bvm *vm); +extern int lvbe_colorwheel_set_mode_fixed(bvm *vm); +extern int lvbe_colorwheel_get_hsv(bvm *vm); +extern int lvbe_colorwheel_get_rgb(bvm *vm); +extern int lvbe_colorwheel_get_color_mode(bvm *vm); +extern int lvbe_colorwheel_get_color_mode_fixed(bvm *vm); + +/* `lv_imgbtn` external functions definitions */ +extern int lvbe_imgbtn_create(bvm *vm); +extern int lvbe_imgbtn_set_src(bvm *vm); + +/* `lv_led` external functions definitions */ +extern int lvbe_led_create(bvm *vm); +extern int lvbe_led_set_color(bvm *vm); +extern int lvbe_led_set_brightness(bvm *vm); +extern int lvbe_led_on(bvm *vm); +extern int lvbe_led_off(bvm *vm); +extern int lvbe_led_toggle(bvm *vm); +extern int lvbe_led_get_brightness(bvm *vm); + +/* `lv_meter` external functions definitions */ +extern int lvbe_meter_create(bvm *vm); +extern int lvbe_meter_add_scale(bvm *vm); +extern int lvbe_meter_set_scale_ticks(bvm *vm); +extern int lvbe_meter_set_scale_major_ticks(bvm *vm); +extern int lvbe_meter_set_scale_range(bvm *vm); +extern int lvbe_meter_add_needle_line(bvm *vm); +extern int lvbe_meter_add_needle_img(bvm *vm); +extern int lvbe_meter_add_arc(bvm *vm); +extern int lvbe_meter_add_scale_lines(bvm *vm); +extern int lvbe_meter_set_indicator_value(bvm *vm); +extern int lvbe_meter_set_indicator_start_value(bvm *vm); +extern int lvbe_meter_set_indicator_end_value(bvm *vm); + +/* `lv_msgbox` external functions definitions */ +extern int lvbe_msgbox_create(bvm *vm); +extern int lvbe_msgbox_get_title(bvm *vm); +extern int lvbe_msgbox_get_close_btn(bvm *vm); +extern int lvbe_msgbox_get_text(bvm *vm); +extern int lvbe_msgbox_get_btns(bvm *vm); +extern int lvbe_msgbox_get_active_btn_text(bvm *vm); +extern int lvbe_msgbox_close(bvm *vm); + +/* `lv_spinbox` external functions definitions */ +extern int lvbe_spinbox_create(bvm *vm); +extern int lvbe_spinbox_set_value(bvm *vm); +extern int lvbe_spinbox_set_rollover(bvm *vm); +extern int lvbe_spinbox_set_digit_format(bvm *vm); +extern int lvbe_spinbox_set_step(bvm *vm); +extern int lvbe_spinbox_set_range(bvm *vm); +extern int lvbe_spinbox_get_rollover(bvm *vm); +extern int lvbe_spinbox_get_value(bvm *vm); +extern int lvbe_spinbox_get_step(bvm *vm); +extern int lvbe_spinbox_step_next(bvm *vm); +extern int lvbe_spinbox_step_prev(bvm *vm); +extern int lvbe_spinbox_increment(bvm *vm); +extern int lvbe_spinbox_decrement(bvm *vm); /* `lv_arc` external functions definitions */ extern int lvbe_arc_create(bvm *vm); @@ -504,84 +580,49 @@ extern int lvbe_arc_set_bg_start_angle(bvm *vm); extern int lvbe_arc_set_bg_end_angle(bvm *vm); extern int lvbe_arc_set_bg_angles(bvm *vm); extern int lvbe_arc_set_rotation(bvm *vm); -extern int lvbe_arc_set_type(bvm *vm); +extern int lvbe_arc_set_mode(bvm *vm); extern int lvbe_arc_set_value(bvm *vm); extern int lvbe_arc_set_range(bvm *vm); -extern int lvbe_arc_set_chg_rate(bvm *vm); -extern int lvbe_arc_set_adjustable(bvm *vm); +extern int lvbe_arc_set_change_rate(bvm *vm); extern int lvbe_arc_get_angle_start(bvm *vm); extern int lvbe_arc_get_angle_end(bvm *vm); extern int lvbe_arc_get_bg_angle_start(bvm *vm); extern int lvbe_arc_get_bg_angle_end(bvm *vm); -extern int lvbe_arc_get_type(bvm *vm); extern int lvbe_arc_get_value(bvm *vm); extern int lvbe_arc_get_min_value(bvm *vm); extern int lvbe_arc_get_max_value(bvm *vm); -extern int lvbe_arc_is_dragged(bvm *vm); -extern int lvbe_arc_get_adjustable(bvm *vm); +extern int lvbe_arc_get_mode(bvm *vm); /* `lv_bar` external functions definitions */ extern int lvbe_bar_create(bvm *vm); extern int lvbe_bar_set_value(bvm *vm); extern int lvbe_bar_set_start_value(bvm *vm); extern int lvbe_bar_set_range(bvm *vm); -extern int lvbe_bar_set_type(bvm *vm); -extern int lvbe_bar_set_anim_time(bvm *vm); +extern int lvbe_bar_set_mode(bvm *vm); extern int lvbe_bar_get_value(bvm *vm); extern int lvbe_bar_get_start_value(bvm *vm); extern int lvbe_bar_get_min_value(bvm *vm); extern int lvbe_bar_get_max_value(bvm *vm); -extern int lvbe_bar_get_type(bvm *vm); -extern int lvbe_bar_get_anim_time(bvm *vm); +extern int lvbe_bar_get_mode(bvm *vm); /* `lv_btn` external functions definitions */ extern int lvbe_btn_create(bvm *vm); -extern int lvbe_btn_set_checkable(bvm *vm); -extern int lvbe_btn_set_state(bvm *vm); -extern int lvbe_btn_toggle(bvm *vm); -extern int lvbe_btn_set_layout(bvm *vm); -extern int lvbe_btn_set_fit4(bvm *vm); -extern int lvbe_btn_set_fit2(bvm *vm); -extern int lvbe_btn_set_fit(bvm *vm); -extern int lvbe_btn_get_state(bvm *vm); -extern int lvbe_btn_get_checkable(bvm *vm); -extern int lvbe_btn_get_layout(bvm *vm); -extern int lvbe_btn_get_fit_left(bvm *vm); -extern int lvbe_btn_get_fit_right(bvm *vm); -extern int lvbe_btn_get_fit_top(bvm *vm); -extern int lvbe_btn_get_fit_bottom(bvm *vm); /* `lv_btnmatrix` external functions definitions */ extern int lvbe_btnmatrix_create(bvm *vm); extern int lvbe_btnmatrix_set_map(bvm *vm); extern int lvbe_btnmatrix_set_ctrl_map(bvm *vm); -extern int lvbe_btnmatrix_set_focused_btn(bvm *vm); -extern int lvbe_btnmatrix_set_recolor(bvm *vm); +extern int lvbe_btnmatrix_set_selected_btn(bvm *vm); extern int lvbe_btnmatrix_set_btn_ctrl(bvm *vm); extern int lvbe_btnmatrix_clear_btn_ctrl(bvm *vm); extern int lvbe_btnmatrix_set_btn_ctrl_all(bvm *vm); extern int lvbe_btnmatrix_clear_btn_ctrl_all(bvm *vm); extern int lvbe_btnmatrix_set_btn_width(bvm *vm); -extern int lvbe_btnmatrix_set_one_check(bvm *vm); -extern int lvbe_btnmatrix_set_align(bvm *vm); -extern int lvbe_btnmatrix_get_recolor(bvm *vm); -extern int lvbe_btnmatrix_get_active_btn(bvm *vm); -extern int lvbe_btnmatrix_get_active_btn_text(bvm *vm); -extern int lvbe_btnmatrix_get_focused_btn(bvm *vm); +extern int lvbe_btnmatrix_set_one_checked(bvm *vm); +extern int lvbe_btnmatrix_get_selected_btn(bvm *vm); extern int lvbe_btnmatrix_get_btn_text(bvm *vm); -extern int lvbe_btnmatrix_get_btn_ctrl(bvm *vm); -extern int lvbe_btnmatrix_get_one_check(bvm *vm); -extern int lvbe_btnmatrix_get_align(bvm *vm); - -/* `lv_calendar` external functions definitions */ -extern int lvbe_calendar_create(bvm *vm); -extern int lvbe_calendar_set_today_date(bvm *vm); -extern int lvbe_calendar_set_showed_date(bvm *vm); -extern int lvbe_calendar_set_highlighted_dates(bvm *vm); -extern int lvbe_calendar_set_day_names(bvm *vm); -extern int lvbe_calendar_set_month_names(bvm *vm); -extern int lvbe_calendar_get_highlighted_dates_num(bvm *vm); -extern int lvbe_calendar_get_day_of_week(bvm *vm); +extern int lvbe_btnmatrix_has_btn_ctrl(bvm *vm); +extern int lvbe_btnmatrix_get_one_checked(bvm *vm); /* `lv_canvas` external functions definitions */ extern int lvbe_canvas_create(bvm *vm); @@ -601,363 +642,86 @@ extern int lvbe_canvas_draw_line(bvm *vm); extern int lvbe_canvas_draw_polygon(bvm *vm); extern int lvbe_canvas_draw_arc(bvm *vm); -/* `lv_chart` external functions definitions */ -extern int lvbe_chart_create(bvm *vm); -extern int lvbe_chart_remove_series(bvm *vm); -extern int lvbe_chart_clear_series(bvm *vm); -extern int lvbe_chart_hide_series(bvm *vm); -extern int lvbe_chart_set_div_line_count(bvm *vm); -extern int lvbe_chart_set_y_range(bvm *vm); -extern int lvbe_chart_set_type(bvm *vm); -extern int lvbe_chart_set_point_count(bvm *vm); -extern int lvbe_chart_init_points(bvm *vm); -extern int lvbe_chart_set_points(bvm *vm); -extern int lvbe_chart_set_next(bvm *vm); -extern int lvbe_chart_set_update_mode(bvm *vm); -extern int lvbe_chart_set_x_tick_length(bvm *vm); -extern int lvbe_chart_set_y_tick_length(bvm *vm); -extern int lvbe_chart_set_secondary_y_tick_length(bvm *vm); -extern int lvbe_chart_set_x_tick_texts(bvm *vm); -extern int lvbe_chart_set_secondary_y_tick_texts(bvm *vm); -extern int lvbe_chart_set_y_tick_texts(bvm *vm); -extern int lvbe_chart_set_x_start_point(bvm *vm); -extern int lvbe_chart_set_ext_array(bvm *vm); -extern int lvbe_chart_set_point_id(bvm *vm); -extern int lvbe_chart_set_series_axis(bvm *vm); -extern int lvbe_chart_set_cursor_point(bvm *vm); -extern int lvbe_chart_get_type(bvm *vm); -extern int lvbe_chart_get_point_count(bvm *vm); -extern int lvbe_chart_get_x_start_point(bvm *vm); -extern int lvbe_chart_get_point_id(bvm *vm); -extern int lvbe_chart_get_series_axis(bvm *vm); -extern int lvbe_chart_get_series_area(bvm *vm); -extern int lvbe_chart_get_cursor_point(bvm *vm); -extern int lvbe_chart_get_nearest_index_from_coord(bvm *vm); -extern int lvbe_chart_get_x_from_index(bvm *vm); -extern int lvbe_chart_get_y_from_index(bvm *vm); -extern int lvbe_chart_refresh(bvm *vm); - /* `lv_checkbox` external functions definitions */ extern int lvbe_checkbox_create(bvm *vm); extern int lvbe_checkbox_set_text(bvm *vm); extern int lvbe_checkbox_set_text_static(bvm *vm); -extern int lvbe_checkbox_set_checked(bvm *vm); -extern int lvbe_checkbox_set_disabled(bvm *vm); -extern int lvbe_checkbox_set_state(bvm *vm); extern int lvbe_checkbox_get_text(bvm *vm); -extern int lvbe_checkbox_is_checked(bvm *vm); -extern int lvbe_checkbox_is_inactive(bvm *vm); -extern int lvbe_checkbox_get_state(bvm *vm); - -/* `lv_cont` external functions definitions */ -extern int lvbe_cont_create(bvm *vm); -extern int lvbe_cont_set_layout(bvm *vm); -extern int lvbe_cont_set_fit4(bvm *vm); -extern int lvbe_cont_set_fit2(bvm *vm); -extern int lvbe_cont_set_fit(bvm *vm); -extern int lvbe_cont_get_layout(bvm *vm); -extern int lvbe_cont_get_fit_left(bvm *vm); -extern int lvbe_cont_get_fit_right(bvm *vm); -extern int lvbe_cont_get_fit_top(bvm *vm); -extern int lvbe_cont_get_fit_bottom(bvm *vm); - -/* `lv_cpicker` external functions definitions */ -extern int lvbe_cpicker_create(bvm *vm); -extern int lvbe_cpicker_set_type(bvm *vm); -extern int lvbe_cpicker_set_hue(bvm *vm); -extern int lvbe_cpicker_set_saturation(bvm *vm); -extern int lvbe_cpicker_set_value(bvm *vm); -extern int lvbe_cpicker_set_hsv(bvm *vm); -extern int lvbe_cpicker_set_color(bvm *vm); -extern int lvbe_cpicker_set_color_mode(bvm *vm); -extern int lvbe_cpicker_set_color_mode_fixed(bvm *vm); -extern int lvbe_cpicker_set_knob_colored(bvm *vm); -extern int lvbe_cpicker_get_color_mode(bvm *vm); -extern int lvbe_cpicker_get_color_mode_fixed(bvm *vm); -extern int lvbe_cpicker_get_hue(bvm *vm); -extern int lvbe_cpicker_get_saturation(bvm *vm); -extern int lvbe_cpicker_get_value(bvm *vm); -extern int lvbe_cpicker_get_hsv(bvm *vm); -extern int lvbe_cpicker_get_color(bvm *vm); -extern int lvbe_cpicker_get_knob_colored(bvm *vm); /* `lv_dropdown` external functions definitions */ extern int lvbe_dropdown_create(bvm *vm); extern int lvbe_dropdown_set_text(bvm *vm); -extern int lvbe_dropdown_clear_options(bvm *vm); extern int lvbe_dropdown_set_options(bvm *vm); extern int lvbe_dropdown_set_options_static(bvm *vm); extern int lvbe_dropdown_add_option(bvm *vm); +extern int lvbe_dropdown_clear_options(bvm *vm); extern int lvbe_dropdown_set_selected(bvm *vm); extern int lvbe_dropdown_set_dir(bvm *vm); -extern int lvbe_dropdown_set_max_height(bvm *vm); extern int lvbe_dropdown_set_symbol(bvm *vm); -extern int lvbe_dropdown_set_show_selected(bvm *vm); +extern int lvbe_dropdown_set_selected_highlight(bvm *vm); +extern int lvbe_dropdown_get_list(bvm *vm); extern int lvbe_dropdown_get_text(bvm *vm); extern int lvbe_dropdown_get_options(bvm *vm); extern int lvbe_dropdown_get_selected(bvm *vm); extern int lvbe_dropdown_get_option_cnt(bvm *vm); extern int lvbe_dropdown_get_selected_str(bvm *vm); -extern int lvbe_dropdown_get_max_height(bvm *vm); extern int lvbe_dropdown_get_symbol(bvm *vm); +extern int lvbe_dropdown_get_selected_highlight(bvm *vm); extern int lvbe_dropdown_get_dir(bvm *vm); -extern int lvbe_dropdown_get_show_selected(bvm *vm); extern int lvbe_dropdown_open(bvm *vm); extern int lvbe_dropdown_close(bvm *vm); -/* `lv_gauge` external functions definitions */ -extern int lvbe_gauge_create(bvm *vm); -extern int lvbe_gauge_set_needle_count(bvm *vm); -extern int lvbe_gauge_set_value(bvm *vm); -extern int lvbe_gauge_set_range(bvm *vm); -extern int lvbe_gauge_set_critical_value(bvm *vm); -extern int lvbe_gauge_set_scale(bvm *vm); -extern int lvbe_gauge_set_angle_offset(bvm *vm); -extern int lvbe_gauge_set_needle_img(bvm *vm); -extern int lvbe_gauge_set_formatter_cb(bvm *vm); -extern int lvbe_gauge_get_value(bvm *vm); -extern int lvbe_gauge_get_needle_count(bvm *vm); -extern int lvbe_gauge_get_min_value(bvm *vm); -extern int lvbe_gauge_get_max_value(bvm *vm); -extern int lvbe_gauge_get_critical_value(bvm *vm); -extern int lvbe_gauge_get_label_count(bvm *vm); -extern int lvbe_gauge_get_line_count(bvm *vm); -extern int lvbe_gauge_get_scale_angle(bvm *vm); -extern int lvbe_gauge_get_angle_offset(bvm *vm); -extern int lvbe_gauge_get_needle_img(bvm *vm); -extern int lvbe_gauge_get_needle_img_pivot_x(bvm *vm); -extern int lvbe_gauge_get_needle_img_pivot_y(bvm *vm); - -/* `lv_imgbtn` external functions definitions */ -extern int lvbe_imgbtn_create(bvm *vm); -extern int lvbe_imgbtn_set_src(bvm *vm); -extern int lvbe_imgbtn_set_state(bvm *vm); -extern int lvbe_imgbtn_toggle(bvm *vm); -extern int lvbe_imgbtn_set_checkable(bvm *vm); -extern int lvbe_imgbtn_get_src(bvm *vm); -extern int lvbe_imgbtn_get_state(bvm *vm); - -/* `lv_keyboard` external functions definitions */ -extern int lvbe_keyboard_create(bvm *vm); -extern int lvbe_keyboard_set_textarea(bvm *vm); -extern int lvbe_keyboard_set_mode(bvm *vm); -extern int lvbe_keyboard_set_cursor_manage(bvm *vm); -extern int lvbe_keyboard_set_map(bvm *vm); -extern int lvbe_keyboard_set_ctrl_map(bvm *vm); -extern int lvbe_keyboard_get_textarea(bvm *vm); -extern int lvbe_keyboard_get_mode(bvm *vm); -extern int lvbe_keyboard_get_cursor_manage(bvm *vm); -extern int lvbe_keyboard_def_event_cb(bvm *vm); - /* `lv_label` external functions definitions */ extern int lvbe_label_create(bvm *vm); extern int lvbe_label_set_text(bvm *vm); extern int lvbe_label_set_text_fmt(bvm *vm); extern int lvbe_label_set_text_static(bvm *vm); extern int lvbe_label_set_long_mode(bvm *vm); -extern int lvbe_label_set_align(bvm *vm); extern int lvbe_label_set_recolor(bvm *vm); -extern int lvbe_label_set_anim_speed(bvm *vm); extern int lvbe_label_set_text_sel_start(bvm *vm); extern int lvbe_label_set_text_sel_end(bvm *vm); extern int lvbe_label_get_text(bvm *vm); extern int lvbe_label_get_long_mode(bvm *vm); -extern int lvbe_label_get_align(bvm *vm); extern int lvbe_label_get_recolor(bvm *vm); -extern int lvbe_label_get_anim_speed(bvm *vm); extern int lvbe_label_get_letter_pos(bvm *vm); extern int lvbe_label_get_letter_on(bvm *vm); extern int lvbe_label_is_char_under_pos(bvm *vm); -extern int lvbe_label_get_text_sel_start(bvm *vm); -extern int lvbe_label_get_text_sel_end(bvm *vm); +extern int lvbe_label_get_text_selection_start(bvm *vm); +extern int lvbe_label_get_text_selection_end(bvm *vm); extern int lvbe_label_ins_text(bvm *vm); extern int lvbe_label_cut_text(bvm *vm); -extern int lvbe_label_refr_text(bvm *vm); - -/* `lv_led` external functions definitions */ -extern int lvbe_led_create(bvm *vm); -extern int lvbe_led_set_bright(bvm *vm); -extern int lvbe_led_on(bvm *vm); -extern int lvbe_led_off(bvm *vm); -extern int lvbe_led_toggle(bvm *vm); -extern int lvbe_led_get_bright(bvm *vm); /* `lv_line` external functions definitions */ extern int lvbe_line_create(bvm *vm); extern int lvbe_line_set_points(bvm *vm); -extern int lvbe_line_set_auto_size(bvm *vm); extern int lvbe_line_set_y_invert(bvm *vm); -extern int lvbe_line_get_auto_size(bvm *vm); extern int lvbe_line_get_y_invert(bvm *vm); -/* `lv_linemeter` external functions definitions */ -extern int lvbe_linemeter_create(bvm *vm); -extern int lvbe_linemeter_set_value(bvm *vm); -extern int lvbe_linemeter_set_range(bvm *vm); -extern int lvbe_linemeter_set_scale(bvm *vm); -extern int lvbe_linemeter_set_angle_offset(bvm *vm); -extern int lvbe_linemeter_set_mirror(bvm *vm); -extern int lvbe_linemeter_get_value(bvm *vm); -extern int lvbe_linemeter_get_min_value(bvm *vm); -extern int lvbe_linemeter_get_max_value(bvm *vm); -extern int lvbe_linemeter_get_line_count(bvm *vm); -extern int lvbe_linemeter_get_scale_angle(bvm *vm); -extern int lvbe_linemeter_get_angle_offset(bvm *vm); -extern int lvbe_linemeter_draw_scale(bvm *vm); -extern int lvbe_linemeter_get_mirror(bvm *vm); - -/* `lv_list` external functions definitions */ -extern int lvbe_list_create(bvm *vm); -extern int lvbe_list_clean(bvm *vm); -extern int lvbe_list_add_btn(bvm *vm); -extern int lvbe_list_remove(bvm *vm); -extern int lvbe_list_focus_btn(bvm *vm); -extern int lvbe_list_set_scrollbar_mode(bvm *vm); -extern int lvbe_list_set_scroll_propagation(bvm *vm); -extern int lvbe_list_set_edge_flash(bvm *vm); -extern int lvbe_list_set_anim_time(bvm *vm); -extern int lvbe_list_set_layout(bvm *vm); -extern int lvbe_list_get_btn_text(bvm *vm); -extern int lvbe_list_get_btn_label(bvm *vm); -extern int lvbe_list_get_btn_img(bvm *vm); -extern int lvbe_list_get_prev_btn(bvm *vm); -extern int lvbe_list_get_next_btn(bvm *vm); -extern int lvbe_list_get_btn_index(bvm *vm); -extern int lvbe_list_get_size(bvm *vm); -extern int lvbe_list_get_btn_selected(bvm *vm); -extern int lvbe_list_get_layout(bvm *vm); -extern int lvbe_list_get_scrollbar_mode(bvm *vm); -extern int lvbe_list_get_scroll_propagation(bvm *vm); -extern int lvbe_list_get_edge_flash(bvm *vm); -extern int lvbe_list_get_anim_time(bvm *vm); -extern int lvbe_list_up(bvm *vm); -extern int lvbe_list_down(bvm *vm); -extern int lvbe_list_focus(bvm *vm); - -/* `lv_msgbox` external functions definitions */ -extern int lvbe_msgbox_create(bvm *vm); -extern int lvbe_msgbox_add_btns(bvm *vm); -extern int lvbe_msgbox_set_text(bvm *vm); -extern int lvbe_msgbox_set_text_fmt(bvm *vm); -extern int lvbe_msgbox_set_anim_time(bvm *vm); -extern int lvbe_msgbox_start_auto_close(bvm *vm); -extern int lvbe_msgbox_stop_auto_close(bvm *vm); -extern int lvbe_msgbox_set_recolor(bvm *vm); -extern int lvbe_msgbox_get_text(bvm *vm); -extern int lvbe_msgbox_get_active_btn(bvm *vm); -extern int lvbe_msgbox_get_active_btn_text(bvm *vm); -extern int lvbe_msgbox_get_anim_time(bvm *vm); -extern int lvbe_msgbox_get_recolor(bvm *vm); -extern int lvbe_msgbox_get_btnmatrix(bvm *vm); - -/* `lv_objmask` external functions definitions */ -extern int lvbe_objmask_create(bvm *vm); -extern int lvbe_objmask_add_mask(bvm *vm); -extern int lvbe_objmask_update_mask(bvm *vm); -extern int lvbe_objmask_remove_mask(bvm *vm); - -/* `lv_page` external functions definitions */ -extern int lvbe_page_create(bvm *vm); -extern int lvbe_page_clean(bvm *vm); -extern int lvbe_page_get_scrollable(bvm *vm); -extern int lvbe_page_get_anim_time(bvm *vm); -extern int lvbe_page_set_scrollbar_mode(bvm *vm); -extern int lvbe_page_set_anim_time(bvm *vm); -extern int lvbe_page_set_scroll_propagation(bvm *vm); -extern int lvbe_page_set_edge_flash(bvm *vm); -extern int lvbe_page_set_scrollable_fit2(bvm *vm); -extern int lvbe_page_set_scrollable_fit(bvm *vm); -extern int lvbe_page_set_scrl_width(bvm *vm); -extern int lvbe_page_set_scrl_height(bvm *vm); -extern int lvbe_page_set_scrl_layout(bvm *vm); -extern int lvbe_page_get_scrollbar_mode(bvm *vm); -extern int lvbe_page_get_scroll_propagation(bvm *vm); -extern int lvbe_page_get_edge_flash(bvm *vm); -extern int lvbe_page_get_width_fit(bvm *vm); -extern int lvbe_page_get_height_fit(bvm *vm); -extern int lvbe_page_get_width_grid(bvm *vm); -extern int lvbe_page_get_height_grid(bvm *vm); -extern int lvbe_page_get_scrl_width(bvm *vm); -extern int lvbe_page_get_scrl_height(bvm *vm); -extern int lvbe_page_get_scrl_layout(bvm *vm); -extern int lvbe_page_get_scrl_fit_left(bvm *vm); -extern int lvbe_page_get_scrl_fit_right(bvm *vm); -extern int lvbe_page_get_scrl_fit_top(bvm *vm); -extern int lvbe_page_get_scrl_fit_bottom(bvm *vm); -extern int lvbe_page_on_edge(bvm *vm); -extern int lvbe_page_glue_obj(bvm *vm); -extern int lvbe_page_focus(bvm *vm); -extern int lvbe_page_scroll_hor(bvm *vm); -extern int lvbe_page_scroll_ver(bvm *vm); -extern int lvbe_page_start_edge_flash(bvm *vm); - /* `lv_roller` external functions definitions */ extern int lvbe_roller_create(bvm *vm); extern int lvbe_roller_set_options(bvm *vm); -extern int lvbe_roller_set_align(bvm *vm); extern int lvbe_roller_set_selected(bvm *vm); extern int lvbe_roller_set_visible_row_count(bvm *vm); -extern int lvbe_roller_set_auto_fit(bvm *vm); -extern int lvbe_roller_set_anim_time(bvm *vm); extern int lvbe_roller_get_selected(bvm *vm); -extern int lvbe_roller_get_option_cnt(bvm *vm); extern int lvbe_roller_get_selected_str(bvm *vm); -extern int lvbe_roller_get_align(bvm *vm); -extern int lvbe_roller_get_auto_fit(bvm *vm); extern int lvbe_roller_get_options(bvm *vm); -extern int lvbe_roller_get_anim_time(bvm *vm); +extern int lvbe_roller_get_option_cnt(bvm *vm); /* `lv_slider` external functions definitions */ extern int lvbe_slider_create(bvm *vm); extern int lvbe_slider_set_value(bvm *vm); extern int lvbe_slider_set_left_value(bvm *vm); extern int lvbe_slider_set_range(bvm *vm); -extern int lvbe_slider_set_anim_time(bvm *vm); -extern int lvbe_slider_set_type(bvm *vm); +extern int lvbe_slider_set_mode(bvm *vm); extern int lvbe_slider_get_value(bvm *vm); extern int lvbe_slider_get_left_value(bvm *vm); extern int lvbe_slider_get_min_value(bvm *vm); extern int lvbe_slider_get_max_value(bvm *vm); extern int lvbe_slider_is_dragged(bvm *vm); -extern int lvbe_slider_get_anim_time(bvm *vm); -extern int lvbe_slider_get_type(bvm *vm); - -/* `lv_spinbox` external functions definitions */ -extern int lvbe_spinbox_create(bvm *vm); -extern int lvbe_spinbox_set_rollover(bvm *vm); -extern int lvbe_spinbox_set_value(bvm *vm); -extern int lvbe_spinbox_set_digit_format(bvm *vm); -extern int lvbe_spinbox_set_step(bvm *vm); -extern int lvbe_spinbox_set_range(bvm *vm); -extern int lvbe_spinbox_set_padding_left(bvm *vm); -extern int lvbe_spinbox_get_rollover(bvm *vm); -extern int lvbe_spinbox_get_value(bvm *vm); -extern int lvbe_spinbox_get_step(bvm *vm); -extern int lvbe_spinbox_step_next(bvm *vm); -extern int lvbe_spinbox_step_prev(bvm *vm); -extern int lvbe_spinbox_increment(bvm *vm); -extern int lvbe_spinbox_decrement(bvm *vm); - -/* `lv_spinner` external functions definitions */ -extern int lvbe_spinner_create(bvm *vm); -extern int lvbe_spinner_set_arc_length(bvm *vm); -extern int lvbe_spinner_set_spin_time(bvm *vm); -extern int lvbe_spinner_set_type(bvm *vm); -extern int lvbe_spinner_set_dir(bvm *vm); -extern int lvbe_spinner_get_arc_length(bvm *vm); -extern int lvbe_spinner_get_spin_time(bvm *vm); -extern int lvbe_spinner_get_type(bvm *vm); -extern int lvbe_spinner_get_dir(bvm *vm); -extern int lvbe_spinner_anim_cb(bvm *vm); +extern int lvbe_slider_get_mode(bvm *vm); /* `lv_switch` external functions definitions */ extern int lvbe_switch_create(bvm *vm); -extern int lvbe_switch_on(bvm *vm); -extern int lvbe_switch_off(bvm *vm); -extern int lvbe_switch_toggle(bvm *vm); -extern int lvbe_switch_set_anim_time(bvm *vm); -extern int lvbe_switch_get_state(bvm *vm); -extern int lvbe_switch_get_anim_time(bvm *vm); /* `lv_table` external functions definitions */ extern int lvbe_table_create(bvm *vm); @@ -966,33 +730,14 @@ extern int lvbe_table_set_cell_value_fmt(bvm *vm); extern int lvbe_table_set_row_cnt(bvm *vm); extern int lvbe_table_set_col_cnt(bvm *vm); extern int lvbe_table_set_col_width(bvm *vm); -extern int lvbe_table_set_cell_align(bvm *vm); -extern int lvbe_table_set_cell_type(bvm *vm); -extern int lvbe_table_set_cell_crop(bvm *vm); -extern int lvbe_table_set_cell_merge_right(bvm *vm); +extern int lvbe_table_add_cell_ctrl(bvm *vm); +extern int lvbe_table_clear_cell_ctrl(bvm *vm); extern int lvbe_table_get_cell_value(bvm *vm); extern int lvbe_table_get_row_cnt(bvm *vm); extern int lvbe_table_get_col_cnt(bvm *vm); extern int lvbe_table_get_col_width(bvm *vm); -extern int lvbe_table_get_cell_align(bvm *vm); -extern int lvbe_table_get_cell_type(bvm *vm); -extern int lvbe_table_get_cell_crop(bvm *vm); -extern int lvbe_table_get_cell_merge_right(bvm *vm); -extern int lvbe_table_get_pressed_cell(bvm *vm); - -/* `lv_tabview` external functions definitions */ -extern int lvbe_tabview_create(bvm *vm); -extern int lvbe_tabview_add_tab(bvm *vm); -extern int lvbe_tabview_clean_tab(bvm *vm); -extern int lvbe_tabview_set_tab_act(bvm *vm); -extern int lvbe_tabview_set_tab_name(bvm *vm); -extern int lvbe_tabview_set_anim_time(bvm *vm); -extern int lvbe_tabview_set_btns_pos(bvm *vm); -extern int lvbe_tabview_get_tab_act(bvm *vm); -extern int lvbe_tabview_get_tab_count(bvm *vm); -extern int lvbe_tabview_get_tab(bvm *vm); -extern int lvbe_tabview_get_anim_time(bvm *vm); -extern int lvbe_tabview_get_btns_pos(bvm *vm); +extern int lvbe_table_has_cell_ctrl(bvm *vm); +extern int lvbe_table_get_selected_cell(bvm *vm); /* `lv_textarea` external functions definitions */ extern int lvbe_textarea_create(bvm *vm); @@ -1003,188 +748,69 @@ extern int lvbe_textarea_del_char_forward(bvm *vm); extern int lvbe_textarea_set_text(bvm *vm); extern int lvbe_textarea_set_placeholder_text(bvm *vm); extern int lvbe_textarea_set_cursor_pos(bvm *vm); -extern int lvbe_textarea_set_cursor_hidden(bvm *vm); extern int lvbe_textarea_set_cursor_click_pos(bvm *vm); -extern int lvbe_textarea_set_pwd_mode(bvm *vm); +extern int lvbe_textarea_set_password_mode(bvm *vm); extern int lvbe_textarea_set_one_line(bvm *vm); -extern int lvbe_textarea_set_text_align(bvm *vm); extern int lvbe_textarea_set_accepted_chars(bvm *vm); extern int lvbe_textarea_set_max_length(bvm *vm); extern int lvbe_textarea_set_insert_replace(bvm *vm); -extern int lvbe_textarea_set_scrollbar_mode(bvm *vm); -extern int lvbe_textarea_set_scroll_propagation(bvm *vm); -extern int lvbe_textarea_set_edge_flash(bvm *vm); -extern int lvbe_textarea_set_text_sel(bvm *vm); -extern int lvbe_textarea_set_pwd_show_time(bvm *vm); -extern int lvbe_textarea_set_cursor_blink_time(bvm *vm); +extern int lvbe_textarea_set_text_selection(bvm *vm); +extern int lvbe_textarea_set_password_show_time(bvm *vm); +extern int lvbe_textarea_set_align(bvm *vm); extern int lvbe_textarea_get_text(bvm *vm); extern int lvbe_textarea_get_placeholder_text(bvm *vm); extern int lvbe_textarea_get_label(bvm *vm); extern int lvbe_textarea_get_cursor_pos(bvm *vm); -extern int lvbe_textarea_get_cursor_hidden(bvm *vm); extern int lvbe_textarea_get_cursor_click_pos(bvm *vm); -extern int lvbe_textarea_get_pwd_mode(bvm *vm); +extern int lvbe_textarea_get_password_mode(bvm *vm); extern int lvbe_textarea_get_one_line(bvm *vm); extern int lvbe_textarea_get_accepted_chars(bvm *vm); extern int lvbe_textarea_get_max_length(bvm *vm); -extern int lvbe_textarea_get_scrollbar_mode(bvm *vm); -extern int lvbe_textarea_get_scroll_propagation(bvm *vm); -extern int lvbe_textarea_get_edge_flash(bvm *vm); extern int lvbe_textarea_text_is_selected(bvm *vm); -extern int lvbe_textarea_get_text_sel_en(bvm *vm); -extern int lvbe_textarea_get_pwd_show_time(bvm *vm); -extern int lvbe_textarea_get_cursor_blink_time(bvm *vm); +extern int lvbe_textarea_get_text_selection(bvm *vm); +extern int lvbe_textarea_get_password_show_time(bvm *vm); extern int lvbe_textarea_clear_selection(bvm *vm); extern int lvbe_textarea_cursor_right(bvm *vm); extern int lvbe_textarea_cursor_left(bvm *vm); extern int lvbe_textarea_cursor_down(bvm *vm); extern int lvbe_textarea_cursor_up(bvm *vm); -/* `lv_tileview` external functions definitions */ -extern int lvbe_tileview_create(bvm *vm); -extern int lvbe_tileview_add_element(bvm *vm); -extern int lvbe_tileview_set_valid_positions(bvm *vm); -extern int lvbe_tileview_set_tile_act(bvm *vm); -extern int lvbe_tileview_set_edge_flash(bvm *vm); -extern int lvbe_tileview_set_anim_time(bvm *vm); -extern int lvbe_tileview_get_tile_act(bvm *vm); -extern int lvbe_tileview_get_edge_flash(bvm *vm); -extern int lvbe_tileview_get_anim_time(bvm *vm); - -/* `lv_win` external functions definitions */ -extern int lvbe_win_create(bvm *vm); -extern int lvbe_win_clean(bvm *vm); -extern int lvbe_win_add_btn_right(bvm *vm); -extern int lvbe_win_add_btn_left(bvm *vm); -extern int lvbe_win_close_event_cb(bvm *vm); -extern int lvbe_win_set_title(bvm *vm); -extern int lvbe_win_set_header_height(bvm *vm); -extern int lvbe_win_set_btn_width(bvm *vm); -extern int lvbe_win_set_content_size(bvm *vm); -extern int lvbe_win_set_layout(bvm *vm); -extern int lvbe_win_set_scrollbar_mode(bvm *vm); -extern int lvbe_win_set_anim_time(bvm *vm); -extern int lvbe_win_set_drag(bvm *vm); -extern int lvbe_win_title_set_alignment(bvm *vm); -extern int lvbe_win_get_title(bvm *vm); -extern int lvbe_win_get_content(bvm *vm); -extern int lvbe_win_get_header_height(bvm *vm); -extern int lvbe_win_get_btn_width(bvm *vm); -extern int lvbe_win_get_from_btn(bvm *vm); -extern int lvbe_win_get_layout(bvm *vm); -extern int lvbe_win_get_sb_mode(bvm *vm); -extern int lvbe_win_get_anim_time(bvm *vm); -extern int lvbe_win_get_width(bvm *vm); -extern int lvbe_win_get_drag(bvm *vm); -extern int lvbe_win_title_get_alignment(bvm *vm); -extern int lvbe_win_focus(bvm *vm); -extern int lvbe_win_scroll_hor(bvm *vm); -extern int lvbe_win_scroll_ver(bvm *vm); - - -#if BE_USE_PRECOMPILED_OBJECT - -#include "../generate/be_fixed_be_class_lv_img.h" #include "../generate/be_fixed_be_class_lv_style.h" +#include "../generate/be_fixed_be_class_lv_img.h" +#include "../generate/be_fixed_be_class_lv_obj.h" #include "../generate/be_fixed_be_class_lv_group.h" #include "../generate/be_fixed_be_class_lv_indev.h" -#include "../generate/be_fixed_be_class_lv_obj.h" +#include "../generate/be_fixed_be_class_lv_chart.h" +#include "../generate/be_fixed_be_class_lv_colorwheel.h" +#include "../generate/be_fixed_be_class_lv_imgbtn.h" +#include "../generate/be_fixed_be_class_lv_led.h" +#include "../generate/be_fixed_be_class_lv_meter.h" +#include "../generate/be_fixed_be_class_lv_msgbox.h" +#include "../generate/be_fixed_be_class_lv_spinbox.h" #include "../generate/be_fixed_be_class_lv_arc.h" #include "../generate/be_fixed_be_class_lv_bar.h" #include "../generate/be_fixed_be_class_lv_btn.h" #include "../generate/be_fixed_be_class_lv_btnmatrix.h" -#include "../generate/be_fixed_be_class_lv_calendar.h" #include "../generate/be_fixed_be_class_lv_canvas.h" -#include "../generate/be_fixed_be_class_lv_chart.h" #include "../generate/be_fixed_be_class_lv_checkbox.h" -#include "../generate/be_fixed_be_class_lv_cont.h" -#include "../generate/be_fixed_be_class_lv_cpicker.h" #include "../generate/be_fixed_be_class_lv_dropdown.h" -#include "../generate/be_fixed_be_class_lv_gauge.h" -#include "../generate/be_fixed_be_class_lv_imgbtn.h" -#include "../generate/be_fixed_be_class_lv_keyboard.h" #include "../generate/be_fixed_be_class_lv_label.h" -#include "../generate/be_fixed_be_class_lv_led.h" #include "../generate/be_fixed_be_class_lv_line.h" -#include "../generate/be_fixed_be_class_lv_linemeter.h" -#include "../generate/be_fixed_be_class_lv_list.h" -#include "../generate/be_fixed_be_class_lv_msgbox.h" -#include "../generate/be_fixed_be_class_lv_objmask.h" -#include "../generate/be_fixed_be_class_lv_page.h" #include "../generate/be_fixed_be_class_lv_roller.h" #include "../generate/be_fixed_be_class_lv_slider.h" -#include "../generate/be_fixed_be_class_lv_spinbox.h" -#include "../generate/be_fixed_be_class_lv_spinner.h" #include "../generate/be_fixed_be_class_lv_switch.h" #include "../generate/be_fixed_be_class_lv_table.h" -#include "../generate/be_fixed_be_class_lv_tabview.h" #include "../generate/be_fixed_be_class_lv_textarea.h" -#include "../generate/be_fixed_be_class_lv_tileview.h" -#include "../generate/be_fixed_be_class_lv_win.h" - -#endif - - -void be_load_lv_img_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_img_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_img", members); - - be_getglobal(vm, "lv_img"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_img); - be_setglobal(vm, "lv_img"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_img (scope: global, name: lv_img, super: be_class_lv_obj) { - .p, var - init, func(lvbe_img_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ void be_load_lv_style_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvs_init }, - { "tostring", lvs_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_style", members); -#else be_pushntvclass(vm, &be_class_lv_style); be_setglobal(vm, "lv_style"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_style (scope: global, name: lv_style) { - .p, var + _p, var init, func(lvs_init) tostring, func(lvs_tostring) member, func(lvx_member) @@ -1192,30 +818,49 @@ class be_class_lv_style (scope: global, name: lv_style) { } @const_object_info_end */ +void be_load_lv_img_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_img); + be_setglobal(vm, "lv_img"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_img (scope: global, name: lv_img, super: be_class_lv_obj) { + _p, var + _class, int(&lv_img_class) + init, func(lvbe_img_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_obj_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_obj); + be_setglobal(vm, "lv_obj"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_obj (scope: global, name: lv_obj) { + _p, var + _class, int(&lv_obj_class) + init, func(lvbe_obj_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + void be_load_lv_group_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_group_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_group", members); -#else be_pushntvclass(vm, &be_class_lv_group); be_setglobal(vm, "lv_group"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_group (scope: global, name: lv_group) { - .p, var + _p, var init, func(lvbe_group_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1224,29 +869,14 @@ class be_class_lv_group (scope: global, name: lv_group) { @const_object_info_end */ void be_load_lv_indev_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lv0_init }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_indev", members); -#else be_pushntvclass(vm, &be_class_lv_indev); be_setglobal(vm, "lv_indev"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_indev (scope: global, name: lv_indev) { - .p, var + _p, var init, func(lv0_init) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1254,31 +884,119 @@ class be_class_lv_indev (scope: global, name: lv_indev) { } @const_object_info_end */ -void be_load_lv_obj_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_obj_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_obj", members); -#else - be_pushntvclass(vm, &be_class_lv_obj); - be_setglobal(vm, "lv_obj"); +void be_load_lv_chart_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_chart); + be_setglobal(vm, "lv_chart"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin -class be_class_lv_obj (scope: global, name: lv_obj) { - .p, var - init, func(lvbe_obj_create) +class be_class_lv_chart (scope: global, name: lv_chart, super: be_class_lv_obj) { + _p, var + _class, int(&lv_chart_class) + init, func(lvbe_chart_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_colorwheel_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_colorwheel); + be_setglobal(vm, "lv_colorwheel"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_colorwheel (scope: global, name: lv_colorwheel, super: be_class_lv_obj) { + _p, var + _class, int(&lv_colorwheel_class) + init, func(lvbe_colorwheel_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_imgbtn_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_imgbtn); + be_setglobal(vm, "lv_imgbtn"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_imgbtn (scope: global, name: lv_imgbtn, super: be_class_lv_obj) { + _p, var + _class, int(&lv_imgbtn_class) + init, func(lvbe_imgbtn_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_led_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_led); + be_setglobal(vm, "lv_led"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_led (scope: global, name: lv_led, super: be_class_lv_obj) { + _p, var + _class, int(&lv_led_class) + init, func(lvbe_led_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_meter_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_meter); + be_setglobal(vm, "lv_meter"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_meter (scope: global, name: lv_meter, super: be_class_lv_obj) { + _p, var + _class, int(&lv_meter_class) + init, func(lvbe_meter_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_msgbox_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_msgbox); + be_setglobal(vm, "lv_msgbox"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_msgbox (scope: global, name: lv_msgbox, super: be_class_lv_obj) { + _p, var + _class, int(&lv_msgbox_class) + init, func(lvbe_msgbox_create) + tostring, func(lvx_tostring) + member, func(lvx_member) + +} +@const_object_info_end */ + +void be_load_lv_spinbox_lib(bvm *vm) { + be_pushntvclass(vm, &be_class_lv_spinbox); + be_setglobal(vm, "lv_spinbox"); + be_pop(vm, 1); +}; + +/* @const_object_info_begin +class be_class_lv_spinbox (scope: global, name: lv_spinbox, super: be_class_lv_obj) { + _p, var + _class, int(&lv_spinbox_class) + init, func(lvbe_spinbox_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1286,34 +1004,15 @@ class be_class_lv_obj (scope: global, name: lv_obj) { @const_object_info_end */ void be_load_lv_arc_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_arc_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_arc", members); - - be_getglobal(vm, "lv_arc"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_arc); be_setglobal(vm, "lv_arc"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_arc (scope: global, name: lv_arc, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_arc_class) init, func(lvbe_arc_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1322,34 +1021,15 @@ class be_class_lv_arc (scope: global, name: lv_arc, super: be_class_lv_obj) { @const_object_info_end */ void be_load_lv_bar_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_bar_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_bar", members); - - be_getglobal(vm, "lv_bar"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_bar); be_setglobal(vm, "lv_bar"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_bar (scope: global, name: lv_bar, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_bar_class) init, func(lvbe_bar_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1358,34 +1038,15 @@ class be_class_lv_bar (scope: global, name: lv_bar, super: be_class_lv_obj) { @const_object_info_end */ void be_load_lv_btn_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_btn_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_btn", members); - - be_getglobal(vm, "lv_btn"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_btn); be_setglobal(vm, "lv_btn"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_btn (scope: global, name: lv_btn, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_btn_class) init, func(lvbe_btn_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1394,34 +1055,15 @@ class be_class_lv_btn (scope: global, name: lv_btn, super: be_class_lv_obj) { @const_object_info_end */ void be_load_lv_btnmatrix_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_btnmatrix_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_btnmatrix", members); - - be_getglobal(vm, "lv_btnmatrix"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_btnmatrix); be_setglobal(vm, "lv_btnmatrix"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_btnmatrix (scope: global, name: lv_btnmatrix, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_btnmatrix_class) init, func(lvbe_btnmatrix_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1429,71 +1071,16 @@ class be_class_lv_btnmatrix (scope: global, name: lv_btnmatrix, super: be_class_ } @const_object_info_end */ -void be_load_lv_calendar_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_calendar_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_calendar", members); - - be_getglobal(vm, "lv_calendar"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_calendar); - be_setglobal(vm, "lv_calendar"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_calendar (scope: global, name: lv_calendar, super: be_class_lv_obj) { - .p, var - init, func(lvbe_calendar_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_canvas_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_canvas_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_canvas", members); - - be_getglobal(vm, "lv_canvas"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_canvas); be_setglobal(vm, "lv_canvas"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_canvas (scope: global, name: lv_canvas, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_canvas_class) init, func(lvbe_canvas_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1501,71 +1088,16 @@ class be_class_lv_canvas (scope: global, name: lv_canvas, super: be_class_lv_obj } @const_object_info_end */ -void be_load_lv_chart_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_chart_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_chart", members); - - be_getglobal(vm, "lv_chart"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_chart); - be_setglobal(vm, "lv_chart"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_chart (scope: global, name: lv_chart, super: be_class_lv_obj) { - .p, var - init, func(lvbe_chart_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_checkbox_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_checkbox_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_checkbox", members); - - be_getglobal(vm, "lv_checkbox"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_checkbox); be_setglobal(vm, "lv_checkbox"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_checkbox (scope: global, name: lv_checkbox, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_checkbox_class) init, func(lvbe_checkbox_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1573,107 +1105,16 @@ class be_class_lv_checkbox (scope: global, name: lv_checkbox, super: be_class_lv } @const_object_info_end */ -void be_load_lv_cont_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_cont_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_cont", members); - - be_getglobal(vm, "lv_cont"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_cont); - be_setglobal(vm, "lv_cont"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_cont (scope: global, name: lv_cont, super: be_class_lv_obj) { - .p, var - init, func(lvbe_cont_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_cpicker_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_cpicker_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_cpicker", members); - - be_getglobal(vm, "lv_cpicker"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_cpicker); - be_setglobal(vm, "lv_cpicker"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_cpicker (scope: global, name: lv_cpicker, super: be_class_lv_obj) { - .p, var - init, func(lvbe_cpicker_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_dropdown_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_dropdown_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_dropdown", members); - - be_getglobal(vm, "lv_dropdown"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_dropdown); be_setglobal(vm, "lv_dropdown"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_dropdown (scope: global, name: lv_dropdown, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_dropdown_class) init, func(lvbe_dropdown_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1681,143 +1122,16 @@ class be_class_lv_dropdown (scope: global, name: lv_dropdown, super: be_class_lv } @const_object_info_end */ -void be_load_lv_gauge_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_gauge_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_gauge", members); - - be_getglobal(vm, "lv_gauge"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_gauge); - be_setglobal(vm, "lv_gauge"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_gauge (scope: global, name: lv_gauge, super: be_class_lv_obj) { - .p, var - init, func(lvbe_gauge_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_imgbtn_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_imgbtn_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_imgbtn", members); - - be_getglobal(vm, "lv_imgbtn"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_imgbtn); - be_setglobal(vm, "lv_imgbtn"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_imgbtn (scope: global, name: lv_imgbtn, super: be_class_lv_obj) { - .p, var - init, func(lvbe_imgbtn_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_keyboard_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_keyboard_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_keyboard", members); - - be_getglobal(vm, "lv_keyboard"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_keyboard); - be_setglobal(vm, "lv_keyboard"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_keyboard (scope: global, name: lv_keyboard, super: be_class_lv_obj) { - .p, var - init, func(lvbe_keyboard_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_label_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_label_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_label", members); - - be_getglobal(vm, "lv_label"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_label); be_setglobal(vm, "lv_label"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_label (scope: global, name: lv_label, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_label_class) init, func(lvbe_label_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1825,71 +1139,16 @@ class be_class_lv_label (scope: global, name: lv_label, super: be_class_lv_obj) } @const_object_info_end */ -void be_load_lv_led_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_led_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_led", members); - - be_getglobal(vm, "lv_led"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_led); - be_setglobal(vm, "lv_led"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_led (scope: global, name: lv_led, super: be_class_lv_obj) { - .p, var - init, func(lvbe_led_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_line_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_line_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_line", members); - - be_getglobal(vm, "lv_line"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_line); be_setglobal(vm, "lv_line"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_line (scope: global, name: lv_line, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_line_class) init, func(lvbe_line_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -1897,215 +1156,16 @@ class be_class_lv_line (scope: global, name: lv_line, super: be_class_lv_obj) { } @const_object_info_end */ -void be_load_lv_linemeter_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_linemeter_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_linemeter", members); - - be_getglobal(vm, "lv_linemeter"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_linemeter); - be_setglobal(vm, "lv_linemeter"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_linemeter (scope: global, name: lv_linemeter, super: be_class_lv_obj) { - .p, var - init, func(lvbe_linemeter_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_list_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_list_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_list", members); - - be_getglobal(vm, "lv_list"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_list); - be_setglobal(vm, "lv_list"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_list (scope: global, name: lv_list, super: be_class_lv_obj) { - .p, var - init, func(lvbe_list_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_msgbox_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_msgbox_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_msgbox", members); - - be_getglobal(vm, "lv_msgbox"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_msgbox); - be_setglobal(vm, "lv_msgbox"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_msgbox (scope: global, name: lv_msgbox, super: be_class_lv_obj) { - .p, var - init, func(lvbe_msgbox_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_objmask_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_objmask_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_objmask", members); - - be_getglobal(vm, "lv_objmask"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_objmask); - be_setglobal(vm, "lv_objmask"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_objmask (scope: global, name: lv_objmask, super: be_class_lv_obj) { - .p, var - init, func(lvbe_objmask_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_page_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_page_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_page", members); - - be_getglobal(vm, "lv_page"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_page); - be_setglobal(vm, "lv_page"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_page (scope: global, name: lv_page, super: be_class_lv_obj) { - .p, var - init, func(lvbe_page_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_roller_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_roller_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_roller", members); - - be_getglobal(vm, "lv_roller"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_roller); be_setglobal(vm, "lv_roller"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_roller (scope: global, name: lv_roller, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_roller_class) init, func(lvbe_roller_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -2114,34 +1174,15 @@ class be_class_lv_roller (scope: global, name: lv_roller, super: be_class_lv_obj @const_object_info_end */ void be_load_lv_slider_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_slider_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_slider", members); - - be_getglobal(vm, "lv_slider"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_slider); be_setglobal(vm, "lv_slider"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_slider (scope: global, name: lv_slider, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_slider_class) init, func(lvbe_slider_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -2149,107 +1190,16 @@ class be_class_lv_slider (scope: global, name: lv_slider, super: be_class_lv_obj } @const_object_info_end */ -void be_load_lv_spinbox_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_spinbox_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_spinbox", members); - - be_getglobal(vm, "lv_spinbox"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_spinbox); - be_setglobal(vm, "lv_spinbox"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_spinbox (scope: global, name: lv_spinbox, super: be_class_lv_obj) { - .p, var - init, func(lvbe_spinbox_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_spinner_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_spinner_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_spinner", members); - - be_getglobal(vm, "lv_spinner"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_spinner); - be_setglobal(vm, "lv_spinner"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_spinner (scope: global, name: lv_spinner, super: be_class_lv_obj) { - .p, var - init, func(lvbe_spinner_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_switch_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_switch_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_switch", members); - - be_getglobal(vm, "lv_switch"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_switch); be_setglobal(vm, "lv_switch"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_switch (scope: global, name: lv_switch, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_switch_class) init, func(lvbe_switch_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -2258,34 +1208,15 @@ class be_class_lv_switch (scope: global, name: lv_switch, super: be_class_lv_obj @const_object_info_end */ void be_load_lv_table_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_table_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_table", members); - - be_getglobal(vm, "lv_table"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_table); be_setglobal(vm, "lv_table"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_table (scope: global, name: lv_table, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_table_class) init, func(lvbe_table_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -2293,71 +1224,16 @@ class be_class_lv_table (scope: global, name: lv_table, super: be_class_lv_obj) } @const_object_info_end */ -void be_load_lv_tabview_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_tabview_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_tabview", members); - - be_getglobal(vm, "lv_tabview"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_tabview); - be_setglobal(vm, "lv_tabview"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_tabview (scope: global, name: lv_tabview, super: be_class_lv_obj) { - .p, var - init, func(lvbe_tabview_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - void be_load_lv_textarea_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_textarea_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_textarea", members); - - be_getglobal(vm, "lv_textarea"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else be_pushntvclass(vm, &be_class_lv_textarea); be_setglobal(vm, "lv_textarea"); be_pop(vm, 1); -#endif }; /* @const_object_info_begin class be_class_lv_textarea (scope: global, name: lv_textarea, super: be_class_lv_obj) { - .p, var + _p, var + _class, int(&lv_textarea_class) init, func(lvbe_textarea_create) tostring, func(lvx_tostring) member, func(lvx_member) @@ -2365,78 +1241,6 @@ class be_class_lv_textarea (scope: global, name: lv_textarea, super: be_class_lv } @const_object_info_end */ -void be_load_lv_tileview_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_tileview_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_tileview", members); - - be_getglobal(vm, "lv_tileview"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_tileview); - be_setglobal(vm, "lv_tileview"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_tileview (scope: global, name: lv_tileview, super: be_class_lv_obj) { - .p, var - init, func(lvbe_tileview_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - -void be_load_lv_win_lib(bvm *vm) { -#if !BE_USE_PRECOMPILED_OBJECT - static const bnfuncinfo members[] = { - { ".p", NULL }, - { "init", lvbe_win_create }, - { "tostring", lvx_tostring }, - { "member", lvx_member }, - - - // { NULL, (bntvfunc) BE_CLOSURE }, /* mark section for berry closures */ - - { NULL, NULL } - }; - be_regclass(vm, "lv_win", members); - - be_getglobal(vm, "lv_win"); - be_getglobal(vm, "lv_obj"); - be_setsuper(vm, -2); - be_pop(vm, 2); -#else - be_pushntvclass(vm, &be_class_lv_win); - be_setglobal(vm, "lv_win"); - be_pop(vm, 1); -#endif -}; - -/* @const_object_info_begin -class be_class_lv_win (scope: global, name: lv_win, super: be_class_lv_obj) { - .p, var - init, func(lvbe_win_create) - tostring, func(lvx_tostring) - member, func(lvx_member) - -} -@const_object_info_end */ - #endif // USE_LVGL diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c index 17538a88e..2ea1663c3 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_icon_lib.c @@ -12,87 +12,102 @@ ********************************************************************/ be_local_closure(init, /* name */ be_nested_proto( - 11, /* nstack */ - 3, /* argc */ + 10, /* nstack */ + 2, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[16]) { /* constants */ + ( &(const bvalue[18]) { /* constants */ /* K0 */ be_nested_string("init", 380752755, 4), - /* K1 */ be_nested_string("set_style_local_bg_color", -498263023, 24), - /* K2 */ be_nested_string("lv", 1529997255, 2), - /* K3 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), - /* K4 */ be_nested_string("STATE_DEFAULT", 712406428, 13), - /* K5 */ be_nested_string("lv_color", 1419148319, 8), - /* K6 */ be_nested_string("COLOR_BLACK", 264427940, 11), - /* K7 */ be_nested_string("get_height", -723211773, 10), - /* K8 */ be_nested_string("get_style_pad_right", -1144679830, 19), - /* K9 */ be_nested_string("set_height", 1080207399, 10), - /* K10 */ be_const_int(3), - /* K11 */ be_nested_string("set_width", 484671920, 9), - /* K12 */ be_nested_string("set_x", 1849400772, 5), - /* K13 */ be_nested_string("get_width", -1001549996, 9), - /* K14 */ be_nested_string("set_style_local_pad_right", 1126712366, 25), - /* K15 */ be_const_int(1), + /* K1 */ be_nested_string("set_style_line_color", -629728320, 20), + /* K2 */ be_nested_string("lv_color", 1419148319, 8), + /* K3 */ be_nested_string("lv", 1529997255, 2), + /* K4 */ be_nested_string("COLOR_WHITE", -1758096026, 11), + /* K5 */ be_nested_string("PART_MAIN", -1821475788, 9), + /* K6 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K7 */ be_nested_string("set_style_bg_color", 1689513089, 18), + /* K8 */ be_nested_string("COLOR_BLACK", 264427940, 11), + /* K9 */ be_nested_string("get_height", -723211773, 10), + /* K10 */ be_nested_string("get_style_pad_right", -1144679830, 19), + /* K11 */ be_nested_string("set_height", 1080207399, 10), + /* K12 */ be_const_int(3), + /* K13 */ be_nested_string("set_width", 484671920, 9), + /* K14 */ be_nested_string("set_x", 1849400772, 5), + /* K15 */ be_nested_string("get_width", -1001549996, 9), + /* K16 */ be_nested_string("set_style_pad_right", -980898242, 19), + /* K17 */ be_const_int(1), }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[52]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x8C0C0101, // 0007 GETMET R3 R0 K1 - 0xB8160400, // 0008 GETNGBL R5 K2 - 0x88140B03, // 0009 GETMBR R5 R5 K3 - 0xB81A0400, // 000A GETNGBL R6 K2 - 0x88180D04, // 000B GETMBR R6 R6 K4 - 0xB81E0A00, // 000C GETNGBL R7 K5 - 0xB8220400, // 000D GETNGBL R8 K2 - 0x88201106, // 000E GETMBR R8 R8 K6 - 0x7C1C0200, // 000F CALL R7 1 - 0x7C0C0800, // 0010 CALL R3 4 - 0x4C0C0000, // 0011 LDNIL R3 - 0x200C0203, // 0012 NE R3 R1 R3 - 0x780E001E, // 0013 JMPF R3 #0033 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x7C0C0200, // 0015 CALL R3 1 - 0x8C100308, // 0016 GETMET R4 R1 K8 - 0xB81A0400, // 0017 GETNGBL R6 K2 - 0x88180D03, // 0018 GETMBR R6 R6 K3 - 0xB81E0400, // 0019 GETNGBL R7 K2 - 0x881C0F04, // 001A GETMBR R7 R7 K4 - 0x7C100600, // 001B CALL R4 3 - 0x8C140109, // 001C GETMET R5 R0 K9 - 0x5C1C0600, // 001D MOVE R7 R3 - 0x7C140400, // 001E CALL R5 2 - 0x54160003, // 001F LDINT R5 4 - 0x08140605, // 0020 MUL R5 R3 R5 - 0x0C140B0A, // 0021 DIV R5 R5 K10 - 0x8C18010B, // 0022 GETMET R6 R0 K11 - 0x5C200A00, // 0023 MOVE R8 R5 - 0x7C180400, // 0024 CALL R6 2 - 0x8C18010C, // 0025 GETMET R6 R0 K12 - 0x8C20030D, // 0026 GETMET R8 R1 K13 - 0x7C200200, // 0027 CALL R8 1 - 0x04201005, // 0028 SUB R8 R8 R5 - 0x04201004, // 0029 SUB R8 R8 R4 - 0x7C180400, // 002A CALL R6 2 - 0x8C18030E, // 002B GETMET R6 R1 K14 - 0xB8220400, // 002C GETNGBL R8 K2 - 0x88201103, // 002D GETMBR R8 R8 K3 - 0xB8260400, // 002E GETNGBL R9 K2 - 0x88241304, // 002F GETMBR R9 R9 K4 - 0x00280805, // 0030 ADD R10 R4 R5 - 0x0028150F, // 0031 ADD R10 R10 K15 - 0x7C180800, // 0032 CALL R6 4 - 0x80000000, // 0033 RET 0 + ( &(const binstruction[65]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x8C080101, // 0006 GETMET R2 R0 K1 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0xB8160600, // 0008 GETNGBL R5 K3 + 0x88140B04, // 0009 GETMBR R5 R5 K4 + 0x7C100200, // 000A CALL R4 1 + 0xB8160600, // 000B GETNGBL R5 K3 + 0x88140B05, // 000C GETMBR R5 R5 K5 + 0xB81A0600, // 000D GETNGBL R6 K3 + 0x88180D06, // 000E GETMBR R6 R6 K6 + 0x30140A06, // 000F OR R5 R5 R6 + 0x7C080600, // 0010 CALL R2 3 + 0x8C080107, // 0011 GETMET R2 R0 K7 + 0xB8120400, // 0012 GETNGBL R4 K2 + 0xB8160600, // 0013 GETNGBL R5 K3 + 0x88140B08, // 0014 GETMBR R5 R5 K8 + 0x7C100200, // 0015 CALL R4 1 + 0xB8160600, // 0016 GETNGBL R5 K3 + 0x88140B05, // 0017 GETMBR R5 R5 K5 + 0xB81A0600, // 0018 GETNGBL R6 K3 + 0x88180D06, // 0019 GETMBR R6 R6 K6 + 0x30140A06, // 001A OR R5 R5 R6 + 0x7C080600, // 001B CALL R2 3 + 0x4C080000, // 001C LDNIL R2 + 0x20080202, // 001D NE R2 R1 R2 + 0x780A0020, // 001E JMPF R2 #0040 + 0x8C080309, // 001F GETMET R2 R1 K9 + 0x7C080200, // 0020 CALL R2 1 + 0x8C0C030A, // 0021 GETMET R3 R1 K10 + 0xB8160600, // 0022 GETNGBL R5 K3 + 0x88140B05, // 0023 GETMBR R5 R5 K5 + 0xB81A0600, // 0024 GETNGBL R6 K3 + 0x88180D06, // 0025 GETMBR R6 R6 K6 + 0x30140A06, // 0026 OR R5 R5 R6 + 0x7C0C0400, // 0027 CALL R3 2 + 0x8C10010B, // 0028 GETMET R4 R0 K11 + 0x5C180400, // 0029 MOVE R6 R2 + 0x7C100400, // 002A CALL R4 2 + 0x54120003, // 002B LDINT R4 4 + 0x08100404, // 002C MUL R4 R2 R4 + 0x0C10090C, // 002D DIV R4 R4 K12 + 0x8C14010D, // 002E GETMET R5 R0 K13 + 0x5C1C0800, // 002F MOVE R7 R4 + 0x7C140400, // 0030 CALL R5 2 + 0x8C14010E, // 0031 GETMET R5 R0 K14 + 0x8C1C030F, // 0032 GETMET R7 R1 K15 + 0x7C1C0200, // 0033 CALL R7 1 + 0x041C0E04, // 0034 SUB R7 R7 R4 + 0x041C0E03, // 0035 SUB R7 R7 R3 + 0x7C140400, // 0036 CALL R5 2 + 0x8C140310, // 0037 GETMET R5 R1 K16 + 0x001C0604, // 0038 ADD R7 R3 R4 + 0x001C0F11, // 0039 ADD R7 R7 K17 + 0xB8220600, // 003A GETNGBL R8 K3 + 0x88201105, // 003B GETMBR R8 R8 K5 + 0xB8260600, // 003C GETNGBL R9 K3 + 0x88241306, // 003D GETMBR R9 R9 K6 + 0x30201009, // 003E OR R8 R8 R9 + 0x7C140600, // 003F CALL R5 3 + 0x80000000, // 0040 RET 0 }) ) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c index b820e2b1f..91c207196 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_arcs_lib.c @@ -66,8 +66,8 @@ be_local_closure(every_second, /* name */ ********************************************************************/ be_local_closure(init, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ + 5, /* nstack */ + 2, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -83,22 +83,21 @@ be_local_closure(init, /* name */ }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[15]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0xB80E0200, // 0007 GETNGBL R3 K1 - 0x8C0C0702, // 0008 GETMET R3 R3 K2 - 0x5C140000, // 0009 MOVE R5 R0 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x58140004, // 000C LDCONST R5 K4 - 0x7C0C0400, // 000D CALL R3 2 - 0x80000000, // 000E RET 0 + ( &(const binstruction[14]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0xB80A0200, // 0006 GETNGBL R2 K1 + 0x8C080502, // 0007 GETMET R2 R2 K2 + 0x5C100000, // 0008 MOVE R4 R0 + 0x7C080400, // 0009 CALL R2 2 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x58100004, // 000B LDCONST R4 K4 + 0x7C080400, // 000C CALL R2 2 + 0x80000000, // 000D RET 0 }) ) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c index d65bb3ec5..e9738f746 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_icon_lib.c @@ -12,83 +12,98 @@ ********************************************************************/ be_local_closure(init, /* name */ be_nested_proto( - 10, /* nstack */ - 3, /* argc */ + 9, /* nstack */ + 2, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ + ( &(const bvalue[17]) { /* constants */ /* K0 */ be_nested_string("init", 380752755, 4), - /* K1 */ be_nested_string("set_style_local_bg_color", -498263023, 24), - /* K2 */ be_nested_string("lv", 1529997255, 2), - /* K3 */ be_nested_string("OBJ_PART_MAIN", 658062838, 13), - /* K4 */ be_nested_string("STATE_DEFAULT", 712406428, 13), - /* K5 */ be_nested_string("lv_color", 1419148319, 8), - /* K6 */ be_nested_string("COLOR_BLACK", 264427940, 11), - /* K7 */ be_nested_string("get_height", -723211773, 10), - /* K8 */ be_nested_string("get_style_pad_right", -1144679830, 19), - /* K9 */ be_nested_string("set_height", 1080207399, 10), - /* K10 */ be_nested_string("set_width", 484671920, 9), - /* K11 */ be_nested_string("set_x", 1849400772, 5), - /* K12 */ be_nested_string("get_width", -1001549996, 9), - /* K13 */ be_nested_string("set_style_local_pad_right", 1126712366, 25), - /* K14 */ be_const_int(1), + /* K1 */ be_nested_string("set_style_line_color", -629728320, 20), + /* K2 */ be_nested_string("lv_color", 1419148319, 8), + /* K3 */ be_nested_string("lv", 1529997255, 2), + /* K4 */ be_nested_string("COLOR_WHITE", -1758096026, 11), + /* K5 */ be_nested_string("PART_MAIN", -1821475788, 9), + /* K6 */ be_nested_string("STATE_DEFAULT", 712406428, 13), + /* K7 */ be_nested_string("set_style_bg_color", 1689513089, 18), + /* K8 */ be_nested_string("COLOR_BLACK", 264427940, 11), + /* K9 */ be_nested_string("get_height", -723211773, 10), + /* K10 */ be_nested_string("get_style_pad_right", -1144679830, 19), + /* K11 */ be_nested_string("set_height", 1080207399, 10), + /* K12 */ be_nested_string("set_width", 484671920, 9), + /* K13 */ be_nested_string("set_x", 1849400772, 5), + /* K14 */ be_nested_string("get_width", -1001549996, 9), + /* K15 */ be_nested_string("set_style_pad_right", -980898242, 19), + /* K16 */ be_const_int(1), }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[49]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0x8C0C0101, // 0007 GETMET R3 R0 K1 - 0xB8160400, // 0008 GETNGBL R5 K2 - 0x88140B03, // 0009 GETMBR R5 R5 K3 - 0xB81A0400, // 000A GETNGBL R6 K2 - 0x88180D04, // 000B GETMBR R6 R6 K4 - 0xB81E0A00, // 000C GETNGBL R7 K5 - 0xB8220400, // 000D GETNGBL R8 K2 - 0x88201106, // 000E GETMBR R8 R8 K6 - 0x7C1C0200, // 000F CALL R7 1 - 0x7C0C0800, // 0010 CALL R3 4 - 0x4C0C0000, // 0011 LDNIL R3 - 0x200C0203, // 0012 NE R3 R1 R3 - 0x780E001B, // 0013 JMPF R3 #0030 - 0x8C0C0307, // 0014 GETMET R3 R1 K7 - 0x7C0C0200, // 0015 CALL R3 1 - 0x8C100308, // 0016 GETMET R4 R1 K8 - 0xB81A0400, // 0017 GETNGBL R6 K2 - 0x88180D03, // 0018 GETMBR R6 R6 K3 - 0xB81E0400, // 0019 GETNGBL R7 K2 - 0x881C0F04, // 001A GETMBR R7 R7 K4 - 0x7C100600, // 001B CALL R4 3 - 0x8C140109, // 001C GETMET R5 R0 K9 - 0x5C1C0600, // 001D MOVE R7 R3 - 0x7C140400, // 001E CALL R5 2 - 0x8C14010A, // 001F GETMET R5 R0 K10 - 0x5C1C0600, // 0020 MOVE R7 R3 - 0x7C140400, // 0021 CALL R5 2 - 0x8C14010B, // 0022 GETMET R5 R0 K11 - 0x8C1C030C, // 0023 GETMET R7 R1 K12 - 0x7C1C0200, // 0024 CALL R7 1 - 0x041C0E03, // 0025 SUB R7 R7 R3 - 0x041C0E04, // 0026 SUB R7 R7 R4 - 0x7C140400, // 0027 CALL R5 2 - 0x8C14030D, // 0028 GETMET R5 R1 K13 - 0xB81E0400, // 0029 GETNGBL R7 K2 - 0x881C0F03, // 002A GETMBR R7 R7 K3 - 0xB8220400, // 002B GETNGBL R8 K2 - 0x88201104, // 002C GETMBR R8 R8 K4 - 0x00240803, // 002D ADD R9 R4 R3 - 0x0024130E, // 002E ADD R9 R9 K14 - 0x7C140800, // 002F CALL R5 4 - 0x80000000, // 0030 RET 0 + ( &(const binstruction[62]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x8C080101, // 0006 GETMET R2 R0 K1 + 0xB8120400, // 0007 GETNGBL R4 K2 + 0xB8160600, // 0008 GETNGBL R5 K3 + 0x88140B04, // 0009 GETMBR R5 R5 K4 + 0x7C100200, // 000A CALL R4 1 + 0xB8160600, // 000B GETNGBL R5 K3 + 0x88140B05, // 000C GETMBR R5 R5 K5 + 0xB81A0600, // 000D GETNGBL R6 K3 + 0x88180D06, // 000E GETMBR R6 R6 K6 + 0x30140A06, // 000F OR R5 R5 R6 + 0x7C080600, // 0010 CALL R2 3 + 0x8C080107, // 0011 GETMET R2 R0 K7 + 0xB8120400, // 0012 GETNGBL R4 K2 + 0xB8160600, // 0013 GETNGBL R5 K3 + 0x88140B08, // 0014 GETMBR R5 R5 K8 + 0x7C100200, // 0015 CALL R4 1 + 0xB8160600, // 0016 GETNGBL R5 K3 + 0x88140B05, // 0017 GETMBR R5 R5 K5 + 0xB81A0600, // 0018 GETNGBL R6 K3 + 0x88180D06, // 0019 GETMBR R6 R6 K6 + 0x30140A06, // 001A OR R5 R5 R6 + 0x7C080600, // 001B CALL R2 3 + 0x4C080000, // 001C LDNIL R2 + 0x20080202, // 001D NE R2 R1 R2 + 0x780A001D, // 001E JMPF R2 #003D + 0x8C080309, // 001F GETMET R2 R1 K9 + 0x7C080200, // 0020 CALL R2 1 + 0x8C0C030A, // 0021 GETMET R3 R1 K10 + 0xB8160600, // 0022 GETNGBL R5 K3 + 0x88140B05, // 0023 GETMBR R5 R5 K5 + 0xB81A0600, // 0024 GETNGBL R6 K3 + 0x88180D06, // 0025 GETMBR R6 R6 K6 + 0x30140A06, // 0026 OR R5 R5 R6 + 0x7C0C0400, // 0027 CALL R3 2 + 0x8C10010B, // 0028 GETMET R4 R0 K11 + 0x5C180400, // 0029 MOVE R6 R2 + 0x7C100400, // 002A CALL R4 2 + 0x8C10010C, // 002B GETMET R4 R0 K12 + 0x5C180400, // 002C MOVE R6 R2 + 0x7C100400, // 002D CALL R4 2 + 0x8C10010D, // 002E GETMET R4 R0 K13 + 0x8C18030E, // 002F GETMET R6 R1 K14 + 0x7C180200, // 0030 CALL R6 1 + 0x04180C02, // 0031 SUB R6 R6 R2 + 0x04180C03, // 0032 SUB R6 R6 R3 + 0x7C100400, // 0033 CALL R4 2 + 0x8C10030F, // 0034 GETMET R4 R1 K15 + 0x00180602, // 0035 ADD R6 R3 R2 + 0x00180D10, // 0036 ADD R6 R6 K16 + 0xB81E0600, // 0037 GETNGBL R7 K3 + 0x881C0F05, // 0038 GETMBR R7 R7 K5 + 0xB8220600, // 0039 GETNGBL R8 K3 + 0x88201106, // 003A GETMBR R8 R8 K6 + 0x301C0E08, // 003B OR R7 R7 R8 + 0x7C100600, // 003C CALL R4 3 + 0x80000000, // 003D RET 0 }) ) ); diff --git a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c index 57e3e0cf2..15abf0a57 100644 --- a/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c +++ b/lib/libesp32/Berry/default/be_lvgl_wifi_bars_lib.c @@ -66,8 +66,8 @@ be_local_closure(every_second, /* name */ ********************************************************************/ be_local_closure(init, /* name */ be_nested_proto( - 7, /* nstack */ - 3, /* argc */ + 5, /* nstack */ + 2, /* argc */ 0, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -83,22 +83,21 @@ be_local_closure(init, /* name */ }), (be_nested_const_str("init", 380752755, 4)), (be_nested_const_str("input", -103256197, 5)), - ( &(const binstruction[15]) { /* code */ - 0x600C0003, // 0000 GETGBL R3 G3 - 0x5C100000, // 0001 MOVE R4 R0 - 0x7C0C0200, // 0002 CALL R3 1 - 0x8C0C0700, // 0003 GETMET R3 R3 K0 - 0x5C140200, // 0004 MOVE R5 R1 - 0x5C180400, // 0005 MOVE R6 R2 - 0x7C0C0600, // 0006 CALL R3 3 - 0xB80E0200, // 0007 GETNGBL R3 K1 - 0x8C0C0702, // 0008 GETMET R3 R3 K2 - 0x5C140000, // 0009 MOVE R5 R0 - 0x7C0C0400, // 000A CALL R3 2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x58140004, // 000C LDCONST R5 K4 - 0x7C0C0400, // 000D CALL R3 2 - 0x80000000, // 000E RET 0 + ( &(const binstruction[14]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0xB80A0200, // 0006 GETNGBL R2 K1 + 0x8C080502, // 0007 GETMET R2 R2 K2 + 0x5C100000, // 0008 MOVE R4 R0 + 0x7C080400, // 0009 CALL R2 2 + 0x8C080103, // 000A GETMET R2 R0 K3 + 0x58100004, // 000B LDCONST R4 K4 + 0x7C080400, // 000C CALL R2 2 + 0x80000000, // 000D RET 0 }) ) ); diff --git a/lib/libesp32/Berry/default/be_modtab.c b/lib/libesp32/Berry/default/be_modtab.c index 4c9ea6ca1..44737b5ba 100644 --- a/lib/libesp32/Berry/default/be_modtab.c +++ b/lib/libesp32/Berry/default/be_modtab.c @@ -125,9 +125,8 @@ extern void be_load_driver_audio_lib(bvm *vm); extern void be_load_lvgl_color_lib(bvm *vm); extern void be_load_lvgl_font_lib(bvm *vm); extern void be_load_lv_all_lib(bvm *vm); -extern void be_load_lvgl_cb_lib(bvm *vm); -extern void be_load_lvgl_cb_all_lib(bvm *vm); extern void be_load_ctypes_lvgl_definitions_lib(bvm *vm); +extern void be_load_LVGL_glob_class(bvm *vm); // custom widgets extern void be_load_lv_signal_bars_class(bvm *vm); extern void be_load_lv_wifi_bars_class(bvm *vm); @@ -179,9 +178,8 @@ BERRY_API void be_load_custom_libs(bvm *vm) be_load_lvgl_font_lib(vm); be_load_lv_all_lib(vm); - be_load_lvgl_cb_lib(vm); - be_load_lvgl_cb_all_lib(vm); be_load_ctypes_lvgl_definitions_lib(vm); + be_load_LVGL_glob_class(vm); // custom widgets be_load_lv_signal_bars_class(vm); be_load_lv_wifi_bars_class(vm); diff --git a/lib/libesp32/Berry/default/embedded/lv_clock_icon.be b/lib/libesp32/Berry/default/embedded/lv_clock_icon.be index c13660608..9dde54e40 100644 --- a/lib/libesp32/Berry/default/embedded/lv_clock_icon.be +++ b/lib/libesp32/Berry/default/embedded/lv_clock_icon.be @@ -8,20 +8,21 @@ class lv_clock_icon: lv_label def init(parent, copy) super(self).init(parent, copy) var f_s7_16 = lv.seg7_font(16) - if f_s7_16 != nil self.set_style_local_text_font(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, f_s7_16) end + if f_s7_16 != nil self.set_style_text_font(f_s7_16, lv.PART_MAIN | lv.STATE_DEFAULT) end if parent != nil var parent_height = parent.get_height() self.set_text("--:--") + self.refr_size() var w = self.get_width() self.set_y((parent.get_height() - self.get_height()) / 2) # center vertically - var pad_right = parent.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + var pad_right = parent.get_style_pad_right(lv.PART_MAIN | lv.STATE_DEFAULT) self.set_x(parent.get_width() - w - pad_right - 3) - parent.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, pad_right + w + 6) + parent.set_style_pad_right(pad_right + w + 6, lv.PART_MAIN | lv.STATE_DEFAULT) - self.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) + self.set_style_bg_color(lv_color(lv.COLOR_BLACK), lv.PART_MAIN | lv.STATE_DEFAULT) end tasmota.add_driver(self) diff --git a/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be b/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be index 240e1a298..1170035d4 100644 --- a/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be +++ b/lib/libesp32/Berry/default/embedded/lv_signal_arcs.be @@ -3,16 +3,12 @@ --# class lv_signal_arcs : lv_obj - var ancestor_design # previous design_cb var percentage # value to display, range 0..100 var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call - def init(parent, copy) - # init parent object - super(self).init(parent, copy) - # keep a copy of - self.ancestor_design = self.get_design_cb() - self.set_design_cb(self.my_design_cb) + def init(parent) + # init custom widget (don't call super constructor) + _lvgl.create_custom_widget(self, parent) # own values self.percentage = 100 # pre-allocate buffers @@ -22,7 +18,11 @@ class lv_signal_arcs : lv_obj self.line_dsc = lv_draw_line_dsc() end - def my_design_cb(clip_area, mode) + def widget_event(cl, event) + # Call the ancestor's event handler + if lv.obj_event_base(cl, event) != lv.RES_OK return end + var code = event.code + import math def atleast1(x) if x >= 1 return x else return 1 end end # the model is that we have 4 bars and inter-bar (1/4 of width) @@ -33,25 +33,23 @@ class lv_signal_arcs : lv_obj var bar = atleast1((height - inter_bar * 2) / 3) var bar_offset = bar / 2 #print("inter_bar", inter_bar, "bar", bar, "bar_offset", bar_offset) - if mode == lv.DESIGN_COVER_CHK - #- Return false if the object is not covers the clip_area clip_area -# - return self.ancestor_design.call(self, clip_area, mode) - elif mode == lv.DESIGN_DRAW_MAIN - #self.ancestor_design.call(self, clip_area, mode) # commented since we don't draw a background + if code == lv.EVENT_DRAW_MAIN + var clip_area = lv_area(event.param) # get coordinates of object self.get_coords(self.area) var x_ofs = self.area.x1 var y_ofs = self.area.y1 - lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure - self.init_draw_line_dsc(lv.OBJ_PART_MAIN, self.line_dsc) # copy the current values + + lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure + self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) # copy the current values self.line_dsc.round_start = 1 self.line_dsc.round_end = 1 self.line_dsc.width = (bar * 3 + 1) / 4 - var on_color = self.get_style_line_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) - var off_color = self.get_style_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT) + var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT) # initial calculation, but does not take into account bounding box # var angle = int(math.deg(math.atan2(width / 2, height))) @@ -76,15 +74,14 @@ class lv_signal_arcs : lv_obj #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object # self.ancestor_design.call(self, clip_area, mode) end - return lv.DESIGN_RES_OK end def set_percentage(v) - var old_bars = self.percentage / 4 + var old_bars = self.percentage / 25 if v > 100 v = 100 end if v < 0 v = 0 end self.percentage = v - if old_bars != v / 4 + if old_bars != v / 25 self.invalidate() # be frugal and avoid updating the widget if it's not needed end end @@ -95,8 +92,8 @@ class lv_signal_arcs : lv_obj end class lv_wifi_arcs: lv_signal_arcs - def init(parent, copy) - super(self).init(parent, copy) + def init(parent) + super(self).init(parent) tasmota.add_driver(self) self.set_percentage(0) # we generally start with 0, meaning not connected end @@ -119,17 +116,18 @@ class lv_wifi_arcs: lv_signal_arcs end class lv_wifi_arcs_icon: lv_wifi_arcs - def init(parent, copy) - super(self).init(parent, copy) - self.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) + def init(parent) + super(self).init(parent) + self.set_style_line_color(lv_color(lv.COLOR_WHITE), lv.PART_MAIN | lv.STATE_DEFAULT) + self.set_style_bg_color(lv_color(lv.COLOR_BLACK), lv.PART_MAIN | lv.STATE_DEFAULT) if parent != nil var parent_height = parent.get_height() - var pad_right = parent.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + var pad_right = parent.get_style_pad_right(lv.PART_MAIN | lv.STATE_DEFAULT) self.set_height(parent_height) var w = (parent_height*4)/3 self.set_width(w) # 130% self.set_x(parent.get_width() - w - pad_right) - parent.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, pad_right + w + 1) + parent.set_style_pad_right(pad_right + w + 1, lv.PART_MAIN | lv.STATE_DEFAULT) end end end \ No newline at end of file diff --git a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be index ca82014ea..acce47f93 100644 --- a/lib/libesp32/Berry/default/embedded/lv_signal_bars.be +++ b/lib/libesp32/Berry/default/embedded/lv_signal_bars.be @@ -3,16 +3,12 @@ --# class lv_signal_bars : lv_obj - var ancestor_design # previous design_cb var percentage # value to display, range 0..100 var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call - def init(parent, copy) - # init parent object - super(self).init(parent, copy) - # keep a copy of - self.ancestor_design = self.get_design_cb() - self.set_design_cb(self.my_design_cb) + def init(parent) + # init custom widget (don't call super constructor) + _lvgl.create_custom_widget(self, parent) # own values self.percentage = 100 # pre-allocate buffers @@ -22,7 +18,11 @@ class lv_signal_bars : lv_obj self.line_dsc = lv_draw_line_dsc() end - def my_design_cb(clip_area, mode) + def widget_event(cl, event) + # Call the ancestor's event handler + if lv.obj_event_base(cl, event) != lv.RES_OK return end + var code = event.code + def atleast1(x) if x >= 1 return x else return 1 end end # the model is that we have 4 bars and inter-bar (1/4 of width) var height = self.get_height() @@ -32,27 +32,24 @@ class lv_signal_bars : lv_obj var bar = atleast1((width - inter_bar * 3) / 4) var bar_offset = bar / 2 - if mode == lv.DESIGN_COVER_CHK - #- Return false if the object is not covers the clip_area clip_area -# - return self.ancestor_design.call(self, clip_area, mode) + if code == lv.EVENT_DRAW_MAIN + var clip_area = lv_area(event.param) - elif mode == lv.DESIGN_DRAW_MAIN - #self.ancestor_design.call(self, clip_area, mode) # commented since we don't draw a background - # get coordinates of object self.get_coords(self.area) var x_ofs = self.area.x1 var y_ofs = self.area.y1 - lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure - self.init_draw_line_dsc(lv.OBJ_PART_MAIN, self.line_dsc) + lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure + self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) # copy the current values self.line_dsc.round_start = 1 self.line_dsc.round_end = 1 self.line_dsc.width = bar - var on_color = self.get_style_line_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) - var off_color = self.get_style_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT) + var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT) + lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, self.line_dsc) for i:0..3 # 4 bars self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color self.p1.y = y_ofs + height - 1 - bar_offset @@ -61,18 +58,16 @@ class lv_signal_bars : lv_obj self.p2.x = self.p1.x lv.draw_line(self.p1, self.p2, clip_area, self.line_dsc) end - #elif mode == lv.DESIGN_DRAW_POST # commented since we don't want a frame around this object - #self.ancestor_design.call(self, clip_area, mode) + lv.event_send(self, lv.EVENT_DRAW_PART_END, self.line_dsc) end - return lv.DESIGN_RES_OK end def set_percentage(v) - var old_bars = self.percentage / 5 + var old_bars = self.percentage / 20 if v > 100 v = 100 end if v < 0 v = 0 end self.percentage = v - if old_bars != v / 5 + if old_bars != v / 20 self.invalidate() # be frugal and avoid updating the widget if it's not needed end end @@ -83,8 +78,8 @@ class lv_signal_bars : lv_obj end class lv_wifi_bars: lv_signal_bars - def init(parent, copy) - super(self).init(parent, copy) + def init(parent) + super(self).init(parent) tasmota.add_driver(self) self.set_percentage(0) # we generally start with 0, meaning not connected end @@ -107,16 +102,17 @@ class lv_wifi_bars: lv_signal_bars end class lv_wifi_bars_icon: lv_wifi_bars - def init(parent, copy) - super(self).init(parent, copy) - self.set_style_local_bg_color(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, lv_color(lv.COLOR_BLACK)) + def init(parent) + super(self).init(parent) + self.set_style_line_color(lv_color(lv.COLOR_WHITE), lv.PART_MAIN | lv.STATE_DEFAULT) + self.set_style_bg_color(lv_color(lv.COLOR_BLACK), lv.PART_MAIN | lv.STATE_DEFAULT) if parent != nil var parent_height = parent.get_height() - var pad_right = parent.get_style_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT) + var pad_right = parent.get_style_pad_right(lv.PART_MAIN | lv.STATE_DEFAULT) self.set_height(parent_height) self.set_width(parent_height) self.set_x(parent.get_width() - parent_height - pad_right) - parent.set_style_local_pad_right(lv.OBJ_PART_MAIN, lv.STATE_DEFAULT, pad_right + parent_height + 1) + parent.set_style_pad_right(pad_right + parent_height + 1, lv.PART_MAIN | lv.STATE_DEFAULT) end end -end \ No newline at end of file +end diff --git a/lib/libesp32/Berry/default/embedded/lvgl_glob.be b/lib/libesp32/Berry/default/embedded/lvgl_glob.be new file mode 100644 index 000000000..ebc5b21b0 --- /dev/null +++ b/lib/libesp32/Berry/default/embedded/lvgl_glob.be @@ -0,0 +1,257 @@ +#- embedded class for LVGL globals -# + +#- This class stores all globals used by LVGL and cannot be stored in the solidified module -# +#- this limits the globals to a single value '_lvgl' -# +class LVGL_glob + # all variables are lazily initialized to reduce the memory pressure. Until they are used, they consume zero memory + var cb_obj # map between a native C pointer (as int) and the corresponding lv_* berry object, also helps marking the objects as non-gc-able + var cb_event_closure # mapping for event closures per LVGL native pointer (int) + var event_cb # native callback for lv_event + + #- below are native callbacks mapped to a closure to a method of this instance -# + var null_cb # cb called if type is not supported + var widget_ctor_cb + var widget_dtor_cb + var widget_event_cb + + var widget_struct_default + var widget_struct_by_class + + #- this is the fallback callback, if the event is unknown or unsupported -# + static cb_do_nothing = def() print("LVG: call to unsupported callback") end + + #- register an lv_* object in the mapping -# + def register_obj(obj) + if self.cb_obj == nil self.cb_obj = {} end + var native_ptr = int(obj._p) + self.cb_obj[native_ptr] = obj + end + + def get_object_from_ptr(ptr) + if self.cb_obj != nil + return self.cb_obj.find(ptr) # raise an exception if something is wrong + end + end + + def lvgl_event_dispatch(event_ptr) + import introspect + + var event = lv_event(introspect.toptr(event_ptr)) + + var target = event.target + var f = self.cb_event_closure[target] + var obj = self.get_object_from_ptr(target) + #print('>> lvgl_event_dispatch', f, obj, event) + f(obj, event) + end + + def gen_cb(name, f, obj, ptr) + #print('>> gen_cb', name, obj, ptr) + # record the object, whatever the callback + + if name == "lv_event_cb" + if self.cb_event_closure == nil self.cb_event_closure = {} end + if self.event_cb == nil self.event_cb = tasmota.gen_cb(/ event_ptr -> self.lvgl_event_dispatch(event_ptr)) end # encapsulate 'self' in closure + + self.register_obj(obj) + self.cb_event_closure[ptr] = f + return self.event_cb + # elif name == "" + else + if self.null_cb == nil self.null_cb = tasmota.gen_cb(self.cb_do_nothing) end + return self.null_cb + end + end + + def widget_ctor_impl(cl_ptr, obj_ptr) + import introspect + var cl = lv_obj_class(cl_ptr) + var obj = self.get_object_from_ptr(obj_ptr) + if self.cb_obj.find(obj) obj = self.cb_obj[obj] end + # print("widget_ctor_impl", cl, obj) + if type(obj) == 'instance' && introspect.get(obj, 'widget_constructor') + obj.widget_constructor(cl) + end + end + def widget_dtor_impl(cl_ptr, obj_ptr) + import introspect + var cl = lv_obj_class(cl_ptr) + var obj = self.get_object_from_ptr(obj_ptr) + # print("widget_dtor_impl", cl, obj) + if type(obj) == 'instance' && introspect.get(obj, 'widget_destructor') + obj.widget_destructor(cl) + end + end + def widget_event_impl(cl_ptr, e_ptr) + import introspect + var cl = lv_obj_class(cl_ptr) + var event = lv_event(e_ptr) + var obj_ptr = event.target + var obj = self.get_object_from_ptr(int(obj_ptr)) + if type(obj) == 'instance' && introspect.get(obj, 'widget_event') + obj.widget_event(cl, event) + end + # print("widget_event_impl", cl, obj_ptr, obj, event) + end + + + def widget_cb() + if self.widget_ctor_cb == nil self.widget_ctor_cb = tasmota.gen_cb(/ cl, obj -> self.widget_ctor_impl(cl, obj)) end + if self.widget_dtor_cb == nil self.widget_dtor_cb = tasmota.gen_cb(/ cl, obj -> self.widget_dtor_impl(cl, obj)) end + if self.widget_event_cb == nil self.widget_event_cb = tasmota.gen_cb(/ cl, e -> self.widget_event_impl(cl, e)) end + + if self.widget_struct_default == nil + self.widget_struct_default = lv_obj_class(lv_obj._class).copy() + self.widget_struct_default.base_class = lv_obj._class # by default, inherit from base class `lv_obj`, this can be overriden + self.widget_struct_default.constructor_cb = self.widget_ctor_cb # set the berry cb dispatchers + self.widget_struct_default.destructor_cb = self.widget_dtor_cb + self.widget_struct_default.event_cb = self.widget_event_cb + end + end + + #- deregister_obj all information linked to a specific LVGL native object (int) -# + def deregister_obj(obj) + if self.cb_obj != nil self.cb_obj.remove(obj) end + if self.cb_event_closure != nil self.cb_event_closure.remove(obj) end + end + + #- initialize a custom widget -# + #- arg must be a subclass of lv_obj -# + def create_custom_widget(obj, parent) + import introspect + + if !isinstance(obj, lv_obj) raise "value_error", "arg must be a subclass of lv_obj" end + if self.widget_struct_by_class == nil self.widget_struct_by_class = {} end + + var obj_classname = classname(obj) + var obj_class_struct = self.widget_struct_by_class.find(obj_classname) + # print("classname=",obj_classname,"_class",super(obj)._class) + #- not already built, create a new one for this class -# + if obj_class_struct == nil + self.widget_cb() # set up all structures + obj_class_struct = self.widget_struct_default.copy() # get a copy of the structure with pre-defined callbacks + obj_class_struct.base_class = super(obj)._class + if introspect.get(obj, 'widget_width_def') obj_class_struct.width_def = obj.widget_width_def end + if introspect.get(obj, 'widget_height_def') obj_class_struct.height_def = obj.widget_height_def end + if introspect.get(obj, 'widget_editable') obj_class_struct.editable = obj.widget_editable end + if introspect.get(obj, 'widget_group_def') obj_class_struct.group_def = obj.widget_group_def end + if introspect.get(obj, 'widget_instance_size') obj_class_struct.instance_size = obj.widget_instance_size end + + #- keep a copy of the structure to avoid GC and reuse if needed -# + self.widget_struct_by_class[obj_classname] = obj_class_struct + end + + var lv_obj_ptr = lv.obj_class_create_obj(obj_class_struct, parent) + obj._p = lv_obj_ptr._p + self.register_obj(obj) + obj.class_init_obj() + end +end + +_lvgl = LVGL_glob() + +# class lv_custom_widget : lv_obj +# # static widget_width_def +# # static widget_height_def +# # static widget_editable +# # static widget_group_def +# # static widget_instance_size +# # +# var percentage # value to display, range 0..100 +# var p1, p2, area, line_dsc # instances of objects kept to avoid re-instanciating at each call + +# def init(parent) +# _lvgl.create_custom_widget(self, parent) +# # own values +# self.percentage = 100 +# # pre-allocate buffers +# self.p1 = lv_point() +# self.p2 = lv_point() +# self.area = lv_area() +# self.line_dsc = lv_draw_line_dsc() +# end + +# # def widget_constructor(cl) +# # print("widget_constructor", cl) +# # end + +# # def widget_destructor(cl) +# # print("widget_destructor", cl) +# # end + +# def widget_event(cl, event) +# var res = lv.obj_event_base(cl, event) +# if res != lv.RES_OK return end + +# def atleast1(x) if x >= 1 return x else return 1 end end +# # the model is that we have 4 bars and inter-bar (1/4 of width) +# var height = self.get_height() +# var width = self.get_width() + +# var inter_bar = atleast1(width / 15) +# var bar = atleast1((width - inter_bar * 3) / 4) +# var bar_offset = bar / 2 + +# var code = event.code +# if code == lv.EVENT_DRAW_MAIN +# var clip_area = lv_area(event.param) +# print("widget_event DRAW", clip_area.tomap()) +# # lv.event_send(self, lv.EVENT_DRAW_MAIN, clip_area) + +# # get coordinates of object +# self.get_coords(self.area) +# var x_ofs = self.area.x1 +# var y_ofs = self.area.y1 + +# lv.draw_line_dsc_init(self.line_dsc) # initialize lv_draw_line_dsc structure +# self.init_draw_line_dsc(lv.PART_MAIN, self.line_dsc) + +# self.line_dsc.round_start = 1 +# self.line_dsc.round_end = 1 +# self.line_dsc.width = bar + +# var on_color = self.get_style_line_color(lv.PART_MAIN | lv.STATE_DEFAULT) +# var off_color = self.get_style_bg_color(lv.PART_MAIN | lv.STATE_DEFAULT) + +# lv.event_send(self, lv.EVENT_DRAW_PART_BEGIN, self.line_dsc) +# for i:0..3 # 4 bars +# self.line_dsc.color = self.percentage >= (i+1)*20 ? on_color : off_color +# self.p1.y = y_ofs + height - 1 - bar_offset +# self.p1.x = x_ofs + i * (bar + inter_bar) + bar_offset +# self.p2.y = y_ofs + ((3 - i) * (height - bar)) / 4 + bar_offset +# self.p2.x = self.p1.x +# lv.draw_line(self.p1, self.p2, clip_area, self.line_dsc) +# end +# lv.event_send(self, lv.EVENT_DRAW_PART_END, self.line_dsc) + +# end +# end + +# def set_percentage(v) +# var old_bars = self.percentage / 5 +# if v > 100 v = 100 end +# if v < 0 v = 0 end +# self.percentage = v +# if old_bars != v / 5 +# self.invalidate() # be frugal and avoid updating the widget if it's not needed +# end +# end + +# def get_percentage() +# return self.percentage +# end +# end + +# ########## ########## ########## ########## ########## ########## ########## ########## + +# lv.start() + +# hres = lv.get_hor_res() # should be 320 +# vres = lv.get_ver_res() # should be 240 + +# scr = lv.scr_act() # default screean object +# f20 = lv.montserrat_font(20) # load embedded Montserrat 20 + +# scr.set_style_bg_color(lv_color(0x0000A0), lv.PART_MAIN | lv.STATE_DEFAULT) + +# w = lv_custom_widget(scr) diff --git a/lib/libesp32/Berry/generate/be_const_strtab.h b/lib/libesp32/Berry/generate/be_const_strtab.h index b69b0b7b2..3773618bf 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab.h +++ b/lib/libesp32/Berry/generate/be_const_strtab.h @@ -1,705 +1,690 @@ -extern const bcstring be_const_str_SR04_TRIG; -extern const bcstring be_const_str_get_size; -extern const bcstring be_const_str_write8; -extern const bcstring be_const_str_BOILER_OT_RX; -extern const bcstring be_const_str_content_send_style; -extern const bcstring be_const_str_serial; -extern const bcstring be_const_str_set_auth; -extern const bcstring be_const_str_HIGH; -extern const bcstring be_const_str_SYMBOL_HOME; -extern const bcstring be_const_str_SYMBOL_LIST; -extern const bcstring be_const_str_addr; -extern const bcstring be_const_str_copy; -extern const bcstring be_const_str_SOLAXX1_RX; -extern const bcstring be_const_str_atan; -extern const bcstring be_const_str_lv_page; -extern const bcstring be_const_str_TM1638STB; -extern const bcstring be_const_str_lv_event_cb; -extern const bcstring be_const_str_write_bit; -extern const bcstring be_const_str_exec_rules; -extern const bcstring be_const_str_find; -extern const bcstring be_const_str_MGC3130_XFER; -extern const bcstring be_const_str_NEOPOOL_TX; -extern const bcstring be_const_str_OUTPUT_HI; -extern const bcstring be_const_str_ADC_BUTTON; -extern const bcstring be_const_str_HLW_CF; -extern const bcstring be_const_str_montserrat_font; -extern const bcstring be_const_str_reset; -extern const bcstring be_const_str_CSE7761_RX; -extern const bcstring be_const_str_SWT1; -extern const bcstring be_const_str_pi; -extern const bcstring be_const_str_POST; -extern const bcstring be_const_str_skip; -extern const bcstring be_const_str_CSE7761_TX; -extern const bcstring be_const_str_IEM3000_TX; -extern const bcstring be_const_str_BS814_DAT; -extern const bcstring be_const_str_I2S_IN_DATA; -extern const bcstring be_const_str_I2S_OUT_CLK; -extern const bcstring be_const_str_SERIAL_8O2; -extern const bcstring be_const_str_PULLUP; -extern const bcstring be_const_str_collect; -extern const bcstring be_const_str_resp_cmnd_str; -extern const bcstring be_const_str_SYMBOL_USB; -extern const bcstring be_const_str_I2C_SCL; -extern const bcstring be_const_str_MAX7219CLK; -extern const bcstring be_const_str__drivers; -extern const bcstring be_const_str_REL1; -extern const bcstring be_const_str_add_cmd; -extern const bcstring be_const_str_dump; -extern const bcstring be_const_str_register_button_encoder; -extern const bcstring be_const_str_do; -extern const bcstring be_const_str_SYMBOL_STOP; -extern const bcstring be_const_str_CSE7766_RX; -extern const bcstring be_const_str_nil; -extern const bcstring be_const_str_AS608_RX; -extern const bcstring be_const_str_add_driver; -extern const bcstring be_const_str_ceil; -extern const bcstring be_const_str_SYMBOL_KEYBOARD; -extern const bcstring be_const_str_SYMBOL_PREV; -extern const bcstring be_const_str_TASMOTACLIENT_RXD; -extern const bcstring be_const_str_floor; -extern const bcstring be_const_str_time_reached; -extern const bcstring be_const_str_url_encode; -extern const bcstring be_const_str_SDM120_TX; -extern const bcstring be_const_str_state; -extern const bcstring be_const_str_PROJECTOR_CTRL_RX; -extern const bcstring be_const_str_SPI_MOSI; -extern const bcstring be_const_str_KEY1_INV; -extern const bcstring be_const_str_OLED_RESET; -extern const bcstring be_const_str_SSPI_CS; -extern const bcstring be_const_str_gamma10; -extern const bcstring be_const_str_remove_rule; -extern const bcstring be_const_str_TASMOTACLIENT_RST; -extern const bcstring be_const_str_KEY1_NP; -extern const bcstring be_const_str_SYMBOL_POWER; -extern const bcstring be_const_str_content_start; -extern const bcstring be_const_str_members; -extern const bcstring be_const_str_I2C_Driver; -extern const bcstring be_const_str_TX2X_TXD_BLACK; -extern const bcstring be_const_str_add_header; -extern const bcstring be_const_str_LMT01; -extern const bcstring be_const_str_RC522_CS; -extern const bcstring be_const_str_search; -extern const bcstring be_const_str_NRF24_DC; -extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; -extern const bcstring be_const_str_flush; -extern const bcstring be_const_str_last_modified; -extern const bcstring be_const_str_CC1101_GDO0; -extern const bcstring be_const_str_HJL_CF; -extern const bcstring be_const_str_SERIAL_7E2; -extern const bcstring be_const_str_iter; -extern const bcstring be_const_str_lv_group; -extern const bcstring be_const_str_pin_mode; -extern const bcstring be_const_str_SERIAL_5N2; -extern const bcstring be_const_str_load_freetype_font; -extern const bcstring be_const_str_tob64; -extern const bcstring be_const_str_toptr; -extern const bcstring be_const_str_list; -extern const bcstring be_const_str_P9813_CLK; -extern const bcstring be_const_str_wifi; -extern const bcstring be_const_str_IRRECV; -extern const bcstring be_const_str_bytes; -extern const bcstring be_const_str_get_switch; -extern const bcstring be_const_str_load_font; -extern const bcstring be_const_str_assert; -extern const bcstring be_const_str_SERIAL_6O1; -extern const bcstring be_const_str_WE517_TX; -extern const bcstring be_const_str_SSD1331_CS; -extern const bcstring be_const_str_SSPI_MISO; -extern const bcstring be_const_str_LE01MR_RX; -extern const bcstring be_const_str_atan2; -extern const bcstring be_const_str_get_power; -extern const bcstring be_const_str_VL53L0X_XSHUT1; -extern const bcstring be_const_str_isrunning; -extern const bcstring be_const_str_read8; -extern const bcstring be_const_str_set_useragent; -extern const bcstring be_const_str_ILI9341_CS; -extern const bcstring be_const_str_PN532_RXD; -extern const bcstring be_const_str_SYMBOL_COPY; -extern const bcstring be_const_str_get_free_heap; -extern const bcstring be_const_str_lv_win; -extern const bcstring be_const_str_update; -extern const bcstring be_const_str_web_send_decimal; -extern const bcstring be_const_str_ETH_PHY_POWER; -extern const bcstring be_const_str_NRG_CF1; -extern const bcstring be_const_str_ROT1A; -extern const bcstring be_const_str_WEBCAM_PCLK; -extern const bcstring be_const_str_ZIGBEE_RX; -extern const bcstring be_const_str_lv_canvas; -extern const bcstring be_const_str_scale_uint; -extern const bcstring be_const_str_TFMINIPLUS_TX; -extern const bcstring be_const_str_TFMINIPLUS_RX; -extern const bcstring be_const_str_abs; -extern const bcstring be_const_str_lv_list; -extern const bcstring be_const_str_P9813_DAT; -extern const bcstring be_const_str_issubclass; -extern const bcstring be_const_str_tan; -extern const bcstring be_const_str_ADC_CT_POWER; -extern const bcstring be_const_str_SERIAL_6N2; -extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; -extern const bcstring be_const_str_write_bytes; -extern const bcstring be_const_str_MAX31855DO; -extern const bcstring be_const_str_SERIAL_7O2; -extern const bcstring be_const_str_raise; -extern const bcstring be_const_str_PMS5003_TX; -extern const bcstring be_const_str_SM2135_CLK; -extern const bcstring be_const_str_TM1638DIO; -extern const bcstring be_const_str_byte; -extern const bcstring be_const_str_top; -extern const bcstring be_const_str_deg; -extern const bcstring be_const_str_keys; -extern const bcstring be_const_str_DDSU666_TX; -extern const bcstring be_const_str_INTERRUPT; -extern const bcstring be_const_str_SYMBOL_CALL; -extern const bcstring be_const_str_remove; -extern const bcstring be_const_str_content_flush; -extern const bcstring be_const_str_RXD; -extern const bcstring be_const_str_A4988_MS1; -extern const bcstring be_const_str_GET; -extern const bcstring be_const_str_ROT1A_NP; -extern const bcstring be_const_str_rad; -extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_MCP39F5_RST; extern const bcstring be_const_str_except; -extern const bcstring be_const_str_lv_chart; -extern const bcstring be_const_str_log; -extern const bcstring be_const_str_lv_gauge_format_cb; -extern const bcstring be_const_str_on; -extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; -extern const bcstring be_const_str_RFSEND; -extern const bcstring be_const_str_OPEN_DRAIN; -extern const bcstring be_const_str_MHZ_RXD; -extern const bcstring be_const_str_isinstance; -extern const bcstring be_const_str_read24; -extern const bcstring be_const_str_redirect; -extern const bcstring be_const_str_DSB_OUT; -extern const bcstring be_const_str_KEY1_INV_PD; -extern const bcstring be_const_str_SERIAL_7N1; -extern const bcstring be_const_str_lv_obj; -extern const bcstring be_const_str_ADC_PH; -extern const bcstring be_const_str_call; -extern const bcstring be_const_str_seti; -extern const bcstring be_const_str_ROT1B_NP; -extern const bcstring be_const_str_decrypt; -extern const bcstring be_const_str_dot_len; -extern const bcstring be_const_str_INPUT_PULLDOWN; -extern const bcstring be_const_str_IRSEND; -extern const bcstring be_const_str_SYMBOL_IMAGE; -extern const bcstring be_const_str_arg_size; -extern const bcstring be_const_str_format; -extern const bcstring be_const_str_global; -extern const bcstring be_const_str_lv_cont; -extern const bcstring be_const_str_save; -extern const bcstring be_const_str_EPD_DATA; -extern const bcstring be_const_str_PZEM0XX_TX; -extern const bcstring be_const_str_SR04_ECHO; -extern const bcstring be_const_str__ptr; -extern const bcstring be_const_str_setitem; -extern const bcstring be_const_str_ADE7953_IRQ; -extern const bcstring be_const_str_imin; -extern const bcstring be_const_str_KEY1_INV_NP; -extern const bcstring be_const_str_push; -extern const bcstring be_const_str_reset_search; -extern const bcstring be_const_str_dot_p2; -extern const bcstring be_const_str_OUTPUT_LO; -extern const bcstring be_const_str_ZEROCROSS; -extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_PULLDOWN; extern const bcstring be_const_str_CNTR1_NP; -extern const bcstring be_const_str_WEBCAM_PSRCS; -extern const bcstring be_const_str_SYMBOL_PLAY; -extern const bcstring be_const_str_lv_gauge; -extern const bcstring be_const_str_SSD1351_DC; -extern const bcstring be_const_str_SYMBOL_PLUS; -extern const bcstring be_const_str_type; -extern const bcstring be_const_str_INPUT; -extern const bcstring be_const_str_OneWire; -extern const bcstring be_const_str_lv_color; -extern const bcstring be_const_str_open; -extern const bcstring be_const_str_sin; -extern const bcstring be_const_str_SERIAL_8O1; -extern const bcstring be_const_str_find_op; -extern const bcstring be_const_str_srand; -extern const bcstring be_const_str_TUYA_RX; -extern const bcstring be_const_str_SPI_CS; -extern const bcstring be_const_str_real; -extern const bcstring be_const_str_LEDLNK; -extern const bcstring be_const_str_SSPI_MOSI; -extern const bcstring be_const_str_SYMBOL_BELL; -extern const bcstring be_const_str_allocated; -extern const bcstring be_const_str_SYMBOL_OK; -extern const bcstring be_const_str__global_addr; -extern const bcstring be_const_str_lv_switch; -extern const bcstring be_const_str_pop; -extern const bcstring be_const_str_I2S_IN_SLCT; -extern const bcstring be_const_str_stop; -extern const bcstring be_const_str_MAX7219DIN; -extern const bcstring be_const_str_toint; -extern const bcstring be_const_str_toupper; -extern const bcstring be_const_str_get_option; -extern const bcstring be_const_str_set_light; -extern const bcstring be_const_str_i2c_enabled; -extern const bcstring be_const_str_resp_cmnd_failed; -extern const bcstring be_const_str_SYMBOL_WARNING; -extern const bcstring be_const_str_split; -extern const bcstring be_const_str_dot_size; -extern const bcstring be_const_str_opt_eq; -extern const bcstring be_const_str_PWM1_INV; -extern const bcstring be_const_str_TM1637CLK; -extern const bcstring be_const_str__ccmd; -extern const bcstring be_const_str_add; -extern const bcstring be_const_str_getbits; -extern const bcstring be_const_str_ADC_BUTTON_INV; -extern const bcstring be_const_str_close; -extern const bcstring be_const_str___upper__; -extern const bcstring be_const_str_log10; -extern const bcstring be_const_str_SYMBOL_SAVE; -extern const bcstring be_const_str_gen_cb; -extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_montserrat_font; +extern const bcstring be_const_str_name; +extern const bcstring be_const_str_public_key; +extern const bcstring be_const_str_DSB_OUT; +extern const bcstring be_const_str_gc; +extern const bcstring be_const_str_P9813_DAT; +extern const bcstring be_const_str_pin_used; +extern const bcstring be_const_str_rtc; extern const bcstring be_const_str_seg7_font; -extern const bcstring be_const_str_PZEM017_RX; -extern const bcstring be_const_str_add_rule; -extern const bcstring be_const_str_dot_p; -extern const bcstring be_const_str_ST7789_DC; -extern const bcstring be_const_str_pin; -extern const bcstring be_const_str_SDM120_RX; -extern const bcstring be_const_str_cosh; -extern const bcstring be_const_str_ctypes_bytes; -extern const bcstring be_const_str_HM10_TX; -extern const bcstring be_const_str_isnan; -extern const bcstring be_const_str_tanh; -extern const bcstring be_const_str_print; -extern const bcstring be_const_str_PMS5003_RX; -extern const bcstring be_const_str_SYMBOL_DUMMY; -extern const bcstring be_const_str_memory; -extern const bcstring be_const_str_SYMBOL_RIGHT; -extern const bcstring be_const_str_cos; -extern const bcstring be_const_str_NRF24_CS; -extern const bcstring be_const_str_lv_textarea; -extern const bcstring be_const_str_AudioOutput; -extern const bcstring be_const_str_I2S_OUT_SLCT; -extern const bcstring be_const_str_SOLAXX1_TX; -extern const bcstring be_const_str_webclient; -extern const bcstring be_const_str_SSPI_SCLK; -extern const bcstring be_const_str__timers; -extern const bcstring be_const_str_rand; -extern const bcstring be_const_str_I2S_IN_CLK; -extern const bcstring be_const_str_SYMBOL_DRIVE; -extern const bcstring be_const_str_SYMBOL_WIFI; -extern const bcstring be_const_str_SYMBOL_DOWN; -extern const bcstring be_const_str_check_privileged_access; -extern const bcstring be_const_str_BACKLIGHT; -extern const bcstring be_const_str_HRXL_RX; -extern const bcstring be_const_str_available; -extern const bcstring be_const_str_break; -extern const bcstring be_const_str_var; -extern const bcstring be_const_str_DHT11; -extern const bcstring be_const_str_IEM3000_RX; -extern const bcstring be_const_str__get_cb; -extern const bcstring be_const_str_while; -extern const bcstring be_const_str_yield; -extern const bcstring be_const_str_import; -extern const bcstring be_const_str_opt_neq; -extern const bcstring be_const_str_DAC; -extern const bcstring be_const_str_SYMBOL_CUT; -extern const bcstring be_const_str_Wire; -extern const bcstring be_const_str_sinh; -extern const bcstring be_const_str_SYMBOL_AUDIO; -extern const bcstring be_const_str__def; -extern const bcstring be_const_str_lv_img; -extern const bcstring be_const_str__end_transmission; -extern const bcstring be_const_str_lv_tabview; -extern const bcstring be_const_str_AudioFileSource; -extern const bcstring be_const_str_SERIAL_5N1; -extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; -extern const bcstring be_const_str_lv_linemeter; -extern const bcstring be_const_str_ILI9488_CS; -extern const bcstring be_const_str_MAX31855CLK; -extern const bcstring be_const_str_LEDLNK_INV; -extern const bcstring be_const_str__write; -extern const bcstring be_const_str_read12; -extern const bcstring be_const_str_time_dump; -extern const bcstring be_const_str_sqrt; -extern const bcstring be_const_str_CHANGE; -extern const bcstring be_const_str_GPS_TX; -extern const bcstring be_const_str_member; -extern const bcstring be_const_str_resize; -extern const bcstring be_const_str_wire1; -extern const bcstring be_const_str_DDS2382_TX; -extern const bcstring be_const_str_DDS2382_RX; -extern const bcstring be_const_str_PWM1; -extern const bcstring be_const_str_WEBCAM_PWDN; -extern const bcstring be_const_str_TM1637DIO; -extern const bcstring be_const_str_delay; -extern const bcstring be_const_str_encrypt; -extern const bcstring be_const_str_lv_calendar; -extern const bcstring be_const_str_for; -extern const bcstring be_const_str_FTC532; -extern const bcstring be_const_str_lv_design_cb; -extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; -extern const bcstring be_const_str_SYMBOL_CLOSE; -extern const bcstring be_const_str_fromptr; -extern const bcstring be_const_str_true; -extern const bcstring be_const_str_MIEL_HVAC_TX; -extern const bcstring be_const_str_lv_line; -extern const bcstring be_const_str_ADC_JOY; -extern const bcstring be_const_str_SERIAL_5O1; -extern const bcstring be_const_str_SYMBOL_TRASH; -extern const bcstring be_const_str_lv_bar; -extern const bcstring be_const_str_read; -extern const bcstring be_const_str_start; -extern const bcstring be_const_str_wire; -extern const bcstring be_const_str_RFRECV; -extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_ETH_PHY_POWER; +extern const bcstring be_const_str_SERIAL_7N1; +extern const bcstring be_const_str_rad; +extern const bcstring be_const_str__drivers; +extern const bcstring be_const_str_abs; +extern const bcstring be_const_str_issubclass; +extern const bcstring be_const_str_module; extern const bcstring be_const_str_setmember; extern const bcstring be_const_str_DI; -extern const bcstring be_const_str_SYMBOL_CHARGE; -extern const bcstring be_const_str_lv_spinbox; -extern const bcstring be_const_str__read; -extern const bcstring be_const_str_char; -extern const bcstring be_const_str_lower; -extern const bcstring be_const_str_dot_p1; -extern const bcstring be_const_str_classof; -extern const bcstring be_const_str_dot_w; -extern const bcstring be_const_str_A4988_ENA; -extern const bcstring be_const_str_continue; -extern const bcstring be_const_str_MCP39F5_RX; -extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; -extern const bcstring be_const_str_module; -extern const bcstring be_const_str_get_string; -extern const bcstring be_const_str_digital_write; -extern const bcstring be_const_str_str; -extern const bcstring be_const_str_SYMBOL_EYE_OPEN; -extern const bcstring be_const_str_ZIGBEE_TX; -extern const bcstring be_const_str__available; -extern const bcstring be_const_str_acos; -extern const bcstring be_const_str_SERIAL_8E2; -extern const bcstring be_const_str_TELEINFO_RX; -extern const bcstring be_const_str_SYMBOL_SD_CARD; -extern const bcstring be_const_str_WEBCAM_HSD; -extern const bcstring be_const_str_OUTPUT; -extern const bcstring be_const_str_SAIR_RX; -extern const bcstring be_const_str_SSD1331_DC; -extern const bcstring be_const_str_run_deferred; -extern const bcstring be_const_str_SAIR_TX; -extern const bcstring be_const_str_setrange; -extern const bcstring be_const_str_WEBCAM_PSCLK; -extern const bcstring be_const_str_count; -extern const bcstring be_const_str_SPI_CLK; -extern const bcstring be_const_str_SYMBOL_LEFT; -extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; -extern const bcstring be_const_str_fromb64; -extern const bcstring be_const_str_SBR_TX; -extern const bcstring be_const_str_SYMBOL_DIRECTORY; -extern const bcstring be_const_str_content_button; -extern const bcstring be_const_str_ctypes_bytes_dyn; -extern const bcstring be_const_str_upper; -extern const bcstring be_const_str_Tasmota; -extern const bcstring be_const_str_WEBCAM_RESET; -extern const bcstring be_const_str_WIEGAND_D1; -extern const bcstring be_const_str_lv_keyboard; -extern const bcstring be_const_str_resolvecmnd; -extern const bcstring be_const_str_SYMBOL_BATTERY_1; -extern const bcstring be_const_str_DDSU666_RX; -extern const bcstring be_const_str_SM16716_CLK; -extern const bcstring be_const_str__begin_transmission; -extern const bcstring be_const_str_lv_indev; -extern const bcstring be_const_str_SERIAL_6E2; -extern const bcstring be_const_str_event; -extern const bcstring be_const_str_tolower; -extern const bcstring be_const_str_shared_key; -extern const bcstring be_const_str_EPAPER29_CS; -extern const bcstring be_const_str_erase; -extern const bcstring be_const_str_lv_led; -extern const bcstring be_const_str_SPI_MISO; -extern const bcstring be_const_str_calldepth; -extern const bcstring be_const_str_screenshot; -extern const bcstring be_const_str_has_arg; -extern const bcstring be_const_str_tag; -extern const bcstring be_const_str_CC1101_GDO2; -extern const bcstring be_const_str_INPUT_PULLUP; -extern const bcstring be_const_str_EXS_ENABLE; -extern const bcstring be_const_str_SDM630_TX; -extern const bcstring be_const_str_NEOPOOL_RX; -extern const bcstring be_const_str_clear; -extern const bcstring be_const_str_find_key_i; -extern const bcstring be_const_str_SI7021; -extern const bcstring be_const_str_codedump; -extern const bcstring be_const_str_SYMBOL_PAUSE; -extern const bcstring be_const_str_read_bytes; -extern const bcstring be_const_str_classname; -extern const bcstring be_const_str_int; -extern const bcstring be_const_str_loop; -extern const bcstring be_const_str_ETH_PHY_MDC; -extern const bcstring be_const_str_SSPI_MAX31865_CS1; -extern const bcstring be_const_str_SYMBOL_UPLOAD; -extern const bcstring be_const_str_resp_cmnd_done; -extern const bcstring be_const_str_SERIAL_5E1; -extern const bcstring be_const_str__rules; -extern const bcstring be_const_str_lv_imgbtn; -extern const bcstring be_const_str_SENSOR_END; -extern const bcstring be_const_str_content_stop; -extern const bcstring be_const_str_load; -extern const bcstring be_const_str_NRG_SEL; -extern const bcstring be_const_str_wire_scan; -extern const bcstring be_const_str_AudioGeneratorMP3; -extern const bcstring be_const_str_begin; -extern const bcstring be_const_str_insert; -extern const bcstring be_const_str_super; -extern const bcstring be_const_str_resp_cmnd; -extern const bcstring be_const_str_time_str; -extern const bcstring be_const_str_AES_GCM; -extern const bcstring be_const_str_SDCARD_CS; -extern const bcstring be_const_str_NONE; -extern const bcstring be_const_str_tostring; -extern const bcstring be_const_str_AZ_TXD; -extern const bcstring be_const_str_SYMBOL_MINUS; -extern const bcstring be_const_str_lv_group_focus_cb; -extern const bcstring be_const_str_eth; -extern const bcstring be_const_str_SYMBOL_SETTINGS; -extern const bcstring be_const_str_LED1_INV; -extern const bcstring be_const_str_PROJECTOR_CTRL_TX; -extern const bcstring be_const_str_WEBCAM_DATA; -extern const bcstring be_const_str_reverse_gamma10; -extern const bcstring be_const_str_CNTR1; -extern const bcstring be_const_str_arg; -extern const bcstring be_const_str_TUYA_TX; -extern const bcstring be_const_str_range; -extern const bcstring be_const_str_BOILER_OT_TX; -extern const bcstring be_const_str_WEBCAM_SIOC; -extern const bcstring be_const_str_read13; -extern const bcstring be_const_str_KEY1_PD; -extern const bcstring be_const_str_SYMBOL_BACKSPACE; -extern const bcstring be_const_str_lv_btn; -extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_find; +extern const bcstring be_const_str_log10; extern const bcstring be_const_str_SYMBOL_SHUFFLE; -extern const bcstring be_const_str_asin; -extern const bcstring be_const_str_MCP39F5_RST; -extern const bcstring be_const_str_reverse; -extern const bcstring be_const_str_LED1; -extern const bcstring be_const_str_SYMBOL_BLUETOOTH; -extern const bcstring be_const_str_pin_used; -extern const bcstring be_const_str_wire2; -extern const bcstring be_const_str_class; -extern const bcstring be_const_str__buffer; -extern const bcstring be_const_str_lv_tileview; -extern const bcstring be_const_str_AudioGeneratorWAV; -extern const bcstring be_const_str_DEEPSLEEP; -extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_TFMINIPLUS_TX; +extern const bcstring be_const_str_map; +extern const bcstring be_const_str_set_light; +extern const bcstring be_const_str_SAIR_TX; +extern const bcstring be_const_str_redirect; extern const bcstring be_const_str_RDM6300_RX; -extern const bcstring be_const_str_SDM630_RX; -extern const bcstring be_const_str__global_def; -extern const bcstring be_const_str_write; -extern const bcstring be_const_str_try; -extern const bcstring be_const_str_NRG_SEL_INV; -extern const bcstring be_const_str_millis; -extern const bcstring be_const_str_SYMBOL_FILE; -extern const bcstring be_const_str_gamma8; -extern const bcstring be_const_str_SYMBOL_MUTE; -extern const bcstring be_const_str_asstring; -extern const bcstring be_const_str_elif; -extern const bcstring be_const_str_static; -extern const bcstring be_const_str_SM2135_DAT; -extern const bcstring be_const_str_lv_arc; -extern const bcstring be_const_str_SYMBOL_DOWNLOAD; -extern const bcstring be_const_str_SYMBOL_VIDEO; -extern const bcstring be_const_str_lv_checkbox; -extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_isinstance; +extern const bcstring be_const_str_toupper; +extern const bcstring be_const_str_TM1637DIO; +extern const bcstring be_const_str_TUYA_TX; +extern const bcstring be_const_str_WEBCAM_PSCLK; +extern const bcstring be_const_str__begin_transmission; +extern const bcstring be_const_str_lv_label; +extern const bcstring be_const_str_SERIAL_7O1; +extern const bcstring be_const_str_loop; +extern const bcstring be_const_str_SYMBOL_LIST; +extern const bcstring be_const_str_ELECTRIQ_MOODL_TX; +extern const bcstring be_const_str_CHANGE; +extern const bcstring be_const_str_P9813_CLK; +extern const bcstring be_const_str_SYMBOL_NEW_LINE; +extern const bcstring be_const_str_SYMBOL_VOLUME_MID; +extern const bcstring be_const_str_lv_color; +extern const bcstring be_const_str_tanh; +extern const bcstring be_const_str_SYMBOL_REFRESH; +extern const bcstring be_const_str_get_string; +extern const bcstring be_const_str_SYMBOL_BELL; +extern const bcstring be_const_str_dot_size; +extern const bcstring be_const_str_SYMBOL_DRIVE; +extern const bcstring be_const_str_WIEGAND_D1; +extern const bcstring be_const_str_imax; +extern const bcstring be_const_str_SWT1_PD; extern const bcstring be_const_str_GPS_RX; -extern const bcstring be_const_str_SSPI_DC; -extern const bcstring be_const_str_set_timer; -extern const bcstring be_const_str_AS608_TX; -extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_SERIAL_6O1; +extern const bcstring be_const_str_TELEINFO_RX; +extern const bcstring be_const_str_codedump; +extern const bcstring be_const_str_elif; +extern const bcstring be_const_str_dot_w; +extern const bcstring be_const_str_SYMBOL_EDIT; +extern const bcstring be_const_str__end_transmission; +extern const bcstring be_const_str_ZIGBEE_RST; +extern const bcstring be_const_str_OPTION_A; +extern const bcstring be_const_str_AudioFileSourceFS; +extern const bcstring be_const_str_I2S_OUT_SLCT; +extern const bcstring be_const_str_SYMBOL_KEYBOARD; +extern const bcstring be_const_str_push; +extern const bcstring be_const_str_DHT11_OUT; +extern const bcstring be_const_str_break; +extern const bcstring be_const_str_LE01MR_RX; +extern const bcstring be_const_str_SERIAL_5O1; +extern const bcstring be_const_str_SHELLY_DIMMER_RST_INV; +extern const bcstring be_const_str__rules; +extern const bcstring be_const_str_DDS2382_TX; +extern const bcstring be_const_str_SYMBOL_FILE; +extern const bcstring be_const_str_remove_cmd; +extern const bcstring be_const_str_remove_rule; +extern const bcstring be_const_str_SERIAL_6N1; +extern const bcstring be_const_str_add_cmd; +extern const bcstring be_const_str_arg; +extern const bcstring be_const_str_calldepth; +extern const bcstring be_const_str_MGC3130_XFER; +extern const bcstring be_const_str_PZEM016_RX; +extern const bcstring be_const_str_SM2135_CLK; +extern const bcstring be_const_str_load; +extern const bcstring be_const_str___lower__; +extern const bcstring be_const_str_print; +extern const bcstring be_const_str_try; +extern const bcstring be_const_str_SYMBOL_PASTE; +extern const bcstring be_const_str_dot_p; +extern const bcstring be_const_str_add_rule; +extern const bcstring be_const_str_IRSEND; +extern const bcstring be_const_str_SPI_CS; +extern const bcstring be_const_str_WEBCAM_SIOD; +extern const bcstring be_const_str_get_switch; +extern const bcstring be_const_str_MGC3130_RESET; +extern const bcstring be_const_str_SYMBOL_SETTINGS; +extern const bcstring be_const_str_WE517_TX; extern const bcstring be_const_str_setbits; extern const bcstring be_const_str_FALLING; -extern const bcstring be_const_str_HALLEFFECT; -extern const bcstring be_const_str_get_light; -extern const bcstring be_const_str_remove_driver; -extern const bcstring be_const_str_geti; -extern const bcstring be_const_str_exec_cmd; -extern const bcstring be_const_str_lv_msgbox; -extern const bcstring be_const_str_ADC_LIGHT; -extern const bcstring be_const_str_MIEL_HVAC_RX; -extern const bcstring be_const_str_SERIAL_8N1; -extern const bcstring be_const_str_imax; -extern const bcstring be_const_str_else; -extern const bcstring be_const_str_SWT1_NP; -extern const bcstring be_const_str_web_send; -extern const bcstring be_const_str_ADC_TEMP; -extern const bcstring be_const_str_ARIRFRCV; -extern const bcstring be_const_str_SM16716_DAT; -extern const bcstring be_const_str_AS3935; -extern const bcstring be_const_str_ILI9341_DC; -extern const bcstring be_const_str_gc; -extern const bcstring be_const_str_digital_read; -extern const bcstring be_const_str_public_key; -extern const bcstring be_const_str_; -extern const bcstring be_const_str_SYMBOL_NEW_LINE; -extern const bcstring be_const_str_SYMBOL_REFRESH; -extern const bcstring be_const_str___iterator__; -extern const bcstring be_const_str_SYMBOL_GPS; -extern const bcstring be_const_str_return; -extern const bcstring be_const_str_MGC3130_RESET; -extern const bcstring be_const_str_WEBCAM_HREF; -extern const bcstring be_const_str_WIEGAND_D0; -extern const bcstring be_const_str_rtc; -extern const bcstring be_const_str_false; -extern const bcstring be_const_str_SYMBOL_BATTERY_2; -extern const bcstring be_const_str_OPTION_A; -extern const bcstring be_const_str_WINDMETER_SPEED; -extern const bcstring be_const_str_ETH_PHY_MDIO; -extern const bcstring be_const_str_SERIAL_6E1; -extern const bcstring be_const_str__request_from; -extern const bcstring be_const_str_lv_roller; -extern const bcstring be_const_str_opt_add; -extern const bcstring be_const_str_LE01MR_TX; -extern const bcstring be_const_str_MCP39F5_TX; -extern const bcstring be_const_str_SYMBOL_EDIT; -extern const bcstring be_const_str_AZ_RXD; -extern const bcstring be_const_str_SERIAL_5O2; -extern const bcstring be_const_str_SYMBOL_LOOP; -extern const bcstring be_const_str_WS2812; -extern const bcstring be_const_str_ZIGBEE_RST; -extern const bcstring be_const_str_publish; -extern const bcstring be_const_str_A4988_STP; -extern const bcstring be_const_str_IBEACON_TX; -extern const bcstring be_const_str_RC522_RST; -extern const bcstring be_const_str_hex; -extern const bcstring be_const_str_if; -extern const bcstring be_const_str_BL0940_RX; -extern const bcstring be_const_str_I2S_OUT_DATA; -extern const bcstring be_const_str_IBEACON_RX; -extern const bcstring be_const_str_depower; -extern const bcstring be_const_str_RISING; -extern const bcstring be_const_str_WEBCAM_SIOD; -extern const bcstring be_const_str_WEBCAM_XCLK; -extern const bcstring be_const_str_compile; -extern const bcstring be_const_str_as; -extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_PWM1_INV; +extern const bcstring be_const_str_HIGH; +extern const bcstring be_const_str_deg; +extern const bcstring be_const_str_SYMBOL_OK; +extern const bcstring be_const_str_for; extern const bcstring be_const_str_TXD; -extern const bcstring be_const_str_exists; -extern const bcstring be_const_str_lv_dropdown; -extern const bcstring be_const_str_PZEM004_RX; -extern const bcstring be_const_str_TM1638CLK; -extern const bcstring be_const_str_ARIRFSEL; -extern const bcstring be_const_str_remove_timer; -extern const bcstring be_const_str_SDS0X1_RX; -extern const bcstring be_const_str_map; -extern const bcstring be_const_str_SDS0X1_TX; -extern const bcstring be_const_str_SERIAL_6O2; -extern const bcstring be_const_str_concat; -extern const bcstring be_const_str_strftime; -extern const bcstring be_const_str_finish; -extern const bcstring be_const_str_content_send; -extern const bcstring be_const_str_get; -extern const bcstring be_const_str_MAX31855CS; -extern const bcstring be_const_str_SERIAL_8E1; -extern const bcstring be_const_str_lv_objmask; -extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_gen_cb; +extern const bcstring be_const_str_get_option; +extern const bcstring be_const_str_SR04_ECHO; +extern const bcstring be_const_str_add_header; +extern const bcstring be_const_str_BUZZER; +extern const bcstring be_const_str_ADC_TEMP; +extern const bcstring be_const_str_PMS5003_RX; +extern const bcstring be_const_str_ROT1B_NP; +extern const bcstring be_const_str_Wire; +extern const bcstring be_const_str_members; +extern const bcstring be_const_str_MCP39F5_TX; +extern const bcstring be_const_str_reverse; +extern const bcstring be_const_str_KEY1_NP; +extern const bcstring be_const_str_EXS_ENABLE; +extern const bcstring be_const_str_WEBCAM_SIOC; +extern const bcstring be_const_str_list; +extern const bcstring be_const_str_SYMBOL_GPS; +extern const bcstring be_const_str_time_str; extern const bcstring be_const_str_ADC_RANGE; -extern const bcstring be_const_str_DYP_RX; -extern const bcstring be_const_str_I2C_SDA; -extern const bcstring be_const_str_SDM72_RX; -extern const bcstring be_const_str__cb; -extern const bcstring be_const_str_SERIAL_5E2; -extern const bcstring be_const_str_lv_btnmatrix; -extern const bcstring be_const_str_lv_signal_cb; -extern const bcstring be_const_str_set_timeouts; -extern const bcstring be_const_str_ADC_INPUT; -extern const bcstring be_const_str_ROT1B; -extern const bcstring be_const_str_XPT2046_CS; -extern const bcstring be_const_str_lv_spinner; -extern const bcstring be_const_str_DHT11_OUT; -extern const bcstring be_const_str_lv_cpicker; -extern const bcstring be_const_str_SWT1_PD; -extern const bcstring be_const_str_response_append; -extern const bcstring be_const_str_opt_connect; -extern const bcstring be_const_str_AudioGenerator; -extern const bcstring be_const_str_DSB; -extern const bcstring be_const_str_SERIAL_6N1; -extern const bcstring be_const_str_SSD1351_CS; -extern const bcstring be_const_str_lv_slider; -extern const bcstring be_const_str_size; -extern const bcstring be_const_str_nan; -extern const bcstring be_const_str_PULLDOWN; -extern const bcstring be_const_str_traceback; -extern const bcstring be_const_str_HRE_DATA; -extern const bcstring be_const_str_WE517_RX; -extern const bcstring be_const_str_TASMOTACLIENT_TXD; -extern const bcstring be_const_str_detect; -extern const bcstring be_const_str_publish_result; -extern const bcstring be_const_str___lower__; -extern const bcstring be_const_str_set; -extern const bcstring be_const_str_AudioFileSourceFS; -extern const bcstring be_const_str_LOW; -extern const bcstring be_const_str_MP3_DFR562; -extern const bcstring be_const_str_PZEM016_RX; -extern const bcstring be_const_str_SYMBOL_PASTE; -extern const bcstring be_const_str_arg_name; -extern const bcstring be_const_str_deinit; -extern const bcstring be_const_str_name; -extern const bcstring be_const_str_SYMBOL_UP; -extern const bcstring be_const_str_TELEINFO_ENABLE; -extern const bcstring be_const_str_SBR_RX; -extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_SYMBOL_MUTE; +extern const bcstring be_const_str_add_driver; +extern const bcstring be_const_str_erase; +extern const bcstring be_const_str_remove_driver; +extern const bcstring be_const_str_write8; +extern const bcstring be_const_str_MCP39F5_RX; +extern const bcstring be_const_str__def; +extern const bcstring be_const_str_lv_font; +extern const bcstring be_const_str_resolvecmnd; +extern const bcstring be_const_str_ILI9341_DC; extern const bcstring be_const_str_HX711_DAT; -extern const bcstring be_const_str_HX711_SCK; -extern const bcstring be_const_str_HM10_RX; -extern const bcstring be_const_str_KEY1_TC; -extern const bcstring be_const_str_pow; -extern const bcstring be_const_str_RF_SENSOR; -extern const bcstring be_const_str_CSE7766_TX; -extern const bcstring be_const_str_HRE_CLOCK; -extern const bcstring be_const_str_cb_dispatch; -extern const bcstring be_const_str_lv_table; -extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; -extern const bcstring be_const_str_input; -extern const bcstring be_const_str_select; -extern const bcstring be_const_str_WEBCAM_VSYNC; -extern const bcstring be_const_str_A4988_DIR; -extern const bcstring be_const_str_EC_C25519; -extern const bcstring be_const_str_PN532_TXD; -extern const bcstring be_const_str_ST7789_CS; -extern const bcstring be_const_str_lv_label; -extern const bcstring be_const_str_lv_style; -extern const bcstring be_const_str_MAX7219CS; -extern const bcstring be_const_str_RA8876_CS; -extern const bcstring be_const_str_item; -extern const bcstring be_const_str__cmd; -extern const bcstring be_const_str_attrdump; -extern const bcstring be_const_str_read32; -extern const bcstring be_const_str_SDM72_TX; -extern const bcstring be_const_str_SYMBOL_EJECT; -extern const bcstring be_const_str_KEY1; -extern const bcstring be_const_str_SERIAL_7O1; -extern const bcstring be_const_str_TCP_TX; -extern const bcstring be_const_str_SYMBOL_BULLET; -extern const bcstring be_const_str_fromstring; -extern const bcstring be_const_str_cmd; -extern const bcstring be_const_str_AudioOutputI2S; -extern const bcstring be_const_str_def; -extern const bcstring be_const_str_BS814_CLK; -extern const bcstring be_const_str_SYMBOL_VOLUME_MID; -extern const bcstring be_const_str_end; -extern const bcstring be_const_str_BUZZER_INV; -extern const bcstring be_const_str_SERIAL_8N2; -extern const bcstring be_const_str_SYMBOL_NEXT; -extern const bcstring be_const_str_dac_voltage; -extern const bcstring be_const_str_HPMA_TX; -extern const bcstring be_const_str_resp_cmnd_error; -extern const bcstring be_const_str_MD5; -extern const bcstring be_const_str_SM16716_SEL; -extern const bcstring be_const_str_exp; -extern const bcstring be_const_str_lv_cb; -extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_copy; +extern const bcstring be_const_str_RFRECV; +extern const bcstring be_const_str_SSPI_MISO; +extern const bcstring be_const_str_member; +extern const bcstring be_const_str_A4988_ENA; extern const bcstring be_const_str_tomap; -extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_web_send_decimal; +extern const bcstring be_const_str_wire; +extern const bcstring be_const_str_SDM120_RX; +extern const bcstring be_const_str__available; +extern const bcstring be_const_str_lv_indev; +extern const bcstring be_const_str_continue; +extern const bcstring be_const_str_pow; +extern const bcstring be_const_str_SYMBOL_PAUSE; +extern const bcstring be_const_str_WEBCAM_HSD; +extern const bcstring be_const_str_reset; +extern const bcstring be_const_str_import; +extern const bcstring be_const_str_var; +extern const bcstring be_const_str_SYMBOL_USB; +extern const bcstring be_const_str_WEBCAM_DATA; +extern const bcstring be_const_str_tostring; +extern const bcstring be_const_str_pin_mode; +extern const bcstring be_const_str_shared_key; +extern const bcstring be_const_str_SYMBOL_WIFI; +extern const bcstring be_const_str_WE517_RX; +extern const bcstring be_const_str__write; +extern const bcstring be_const_str_input; +extern const bcstring be_const_str_WEBCAM_RESET; +extern const bcstring be_const_str_XPT2046_CS; +extern const bcstring be_const_str_ZIGBEE_RX; +extern const bcstring be_const_str_lv_chart; +extern const bcstring be_const_str_write_bit; +extern const bcstring be_const_str_I2S_OUT_DATA; +extern const bcstring be_const_str_RISING; +extern const bcstring be_const_str_floor; +extern const bcstring be_const_str_AS608_RX; +extern const bcstring be_const_str_NRF24_CS; +extern const bcstring be_const_str_classname; +extern const bcstring be_const_str_lv_btn; +extern const bcstring be_const_str_SYMBOL_AUDIO; +extern const bcstring be_const_str_rand; +extern const bcstring be_const_str_top; +extern const bcstring be_const_str_SWT1_NP; +extern const bcstring be_const_str_SYMBOL_HOME; +extern const bcstring be_const_str_INPUT_PULLUP; +extern const bcstring be_const_str_KEY1_INV_NP; +extern const bcstring be_const_str_TASMOTACLIENT_TXD; +extern const bcstring be_const_str_exec_rules; +extern const bcstring be_const_str_SAIR_RX; +extern const bcstring be_const_str_SERIAL_6O2; +extern const bcstring be_const_str_open; +extern const bcstring be_const_str_SPI_CLK; +extern const bcstring be_const_str_encrypt; extern const bcstring be_const_str_EPAPER42_CS; +extern const bcstring be_const_str_TM1637CLK; +extern const bcstring be_const_str_AudioGenerator; +extern const bcstring be_const_str_PROJECTOR_CTRL_RX; +extern const bcstring be_const_str_WEBCAM_PSRCS; +extern const bcstring be_const_str__timers; +extern const bcstring be_const_str_ROT1A_NP; +extern const bcstring be_const_str_SDM630_TX; +extern const bcstring be_const_str_assert; +extern const bcstring be_const_str_CSE7761_TX; extern const bcstring be_const_str_HPMA_RX; -extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; -extern const bcstring be_const_str_number; -extern const bcstring be_const_str_opt_call; -extern const bcstring be_const_str_set_power; -extern const bcstring be_const_str_SERIAL_7N2; extern const bcstring be_const_str_SYMBOL_BATTERY_3; -extern const bcstring be_const_str_bus; -extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_cb_dispatch; +extern const bcstring be_const_str_select; +extern const bcstring be_const_str_SERIAL_8N1; +extern const bcstring be_const_str_TASMOTACLIENT_RST; +extern const bcstring be_const_str_arg_name; +extern const bcstring be_const_str_lv_img; +extern const bcstring be_const_str_lv_switch; +extern const bcstring be_const_str_set_timeouts; +extern const bcstring be_const_str_SDM120_TX; +extern const bcstring be_const_str_class; +extern const bcstring be_const_str_SSPI_DC; +extern const bcstring be_const_str_SYMBOL_UPLOAD; +extern const bcstring be_const_str_SYMBOL_VOLUME_MAX; extern const bcstring be_const_str_init; +extern const bcstring be_const_str_try_rule; +extern const bcstring be_const_str_eth; +extern const bcstring be_const_str_LED1_INV; +extern const bcstring be_const_str_HALLEFFECT; +extern const bcstring be_const_str_lv_led; +extern const bcstring be_const_str_IBEACON_RX; +extern const bcstring be_const_str_close; +extern const bcstring be_const_str_imin; +extern const bcstring be_const_str_content_start; +extern const bcstring be_const_str_serial; +extern const bcstring be_const_str_classof; +extern const bcstring be_const_str_SYMBOL_SAVE; +extern const bcstring be_const_str_fromb64; +extern const bcstring be_const_str_get_free_heap; +extern const bcstring be_const_str_read8; +extern const bcstring be_const_str_set_power; +extern const bcstring be_const_str_MAX31855DO; +extern const bcstring be_const_str_bytes; +extern const bcstring be_const_str_lv_arc; +extern const bcstring be_const_str_nil; +extern const bcstring be_const_str_NRG_SEL_INV; +extern const bcstring be_const_str_SYMBOL_LEFT; +extern const bcstring be_const_str_DDSU666_TX; +extern const bcstring be_const_str_sin; +extern const bcstring be_const_str_sqrt; +extern const bcstring be_const_str_time_reached; +extern const bcstring be_const_str_ZIGBEE_TX; +extern const bcstring be_const_str_HRE_CLOCK; +extern const bcstring be_const_str_RXD; +extern const bcstring be_const_str_PZEM017_RX; +extern const bcstring be_const_str_WEBCAM_PWDN; +extern const bcstring be_const_str_lv_msgbox; +extern const bcstring be_const_str_srand; +extern const bcstring be_const_str_FTC532; +extern const bcstring be_const_str_SSPI_SCLK; +extern const bcstring be_const_str_item; +extern const bcstring be_const_str_acos; +extern const bcstring be_const_str_strftime; +extern const bcstring be_const_str_PWM1; +extern const bcstring be_const_str_SYMBOL_CALL; +extern const bcstring be_const_str_format; +extern const bcstring be_const_str_while; +extern const bcstring be_const_str_SSD1351_DC; +extern const bcstring be_const_str_as; +extern const bcstring be_const_str_CSE7766_RX; +extern const bcstring be_const_str_atan; +extern const bcstring be_const_str_get_power; +extern const bcstring be_const_str_true; +extern const bcstring be_const_str_SERIAL_5E2; +extern const bcstring be_const_str_SYMBOL_LOOP; +extern const bcstring be_const_str_add; +extern const bcstring be_const_str_addr; +extern const bcstring be_const_str_INPUT; +extern const bcstring be_const_str_SSPI_CS; +extern const bcstring be_const_str___iterator__; +extern const bcstring be_const_str_pi; +extern const bcstring be_const_str_yield; +extern const bcstring be_const_str_MHZ_TXD; +extern const bcstring be_const_str_type; +extern const bcstring be_const_str_SYMBOL_DUMMY; +extern const bcstring be_const_str_chars_in_string; +extern const bcstring be_const_str_seti; +extern const bcstring be_const_str_MHZ_RXD; +extern const bcstring be_const_str_event; +extern const bcstring be_const_str_PMS5003_TX; +extern const bcstring be_const_str_SPI_MOSI; +extern const bcstring be_const_str_WINDMETER_SPEED; +extern const bcstring be_const_str_setitem; +extern const bcstring be_const_str_SDCARD_CS; +extern const bcstring be_const_str_SDM72_TX; +extern const bcstring be_const_str_SYMBOL_POWER; +extern const bcstring be_const_str_wire1; +extern const bcstring be_const_str_AudioOutput; +extern const bcstring be_const_str__request_from; +extern const bcstring be_const_str_DYP_RX; +extern const bcstring be_const_str_GET; +extern const bcstring be_const_str_lv_dropdown; +extern const bcstring be_const_str_remove_timer; +extern const bcstring be_const_str_url_encode; +extern const bcstring be_const_str_available; +extern const bcstring be_const_str_super; +extern const bcstring be_const_str_BL0940_RX; +extern const bcstring be_const_str_INPUT_PULLDOWN; +extern const bcstring be_const_str_SBR_TX; +extern const bcstring be_const_str_DEEPSLEEP; +extern const bcstring be_const_str_HM10_RX; +extern const bcstring be_const_str_MIEL_HVAC_TX; +extern const bcstring be_const_str_get_light; +extern const bcstring be_const_str_setrange; +extern const bcstring be_const_str_DCKI; +extern const bcstring be_const_str_set_auth; +extern const bcstring be_const_str_response_append; +extern const bcstring be_const_str_ADC_LIGHT; +extern const bcstring be_const_str_scale_uint; +extern const bcstring be_const_str_HLW_CF; +extern const bcstring be_const_str_scan; +extern const bcstring be_const_str_NRG_SEL; +extern const bcstring be_const_str_get; +extern const bcstring be_const_str_lv_obj; +extern const bcstring be_const_str_EPAPER29_CS; +extern const bcstring be_const_str_SERIAL_7O2; +extern const bcstring be_const_str_update; +extern const bcstring be_const_str_BS814_DAT; +extern const bcstring be_const_str_ctypes_bytes; +extern const bcstring be_const_str_opt_call; +extern const bcstring be_const_str__cmd; +extern const bcstring be_const_str_BOILER_OT_TX; +extern const bcstring be_const_str_WEBCAM_XCLK; +extern const bcstring be_const_str_stop; +extern const bcstring be_const_str_SYMBOL_TRASH; +extern const bcstring be_const_str_load_freetype_font; +extern const bcstring be_const_str_asstring; +extern const bcstring be_const_str_CC1101_GDO2; +extern const bcstring be_const_str_HRE_DATA; +extern const bcstring be_const_str_MP3_DFR562; +extern const bcstring be_const_str_content_flush; +extern const bcstring be_const_str_DDSU666_RX; +extern const bcstring be_const_str_PN532_TXD; +extern const bcstring be_const_str_SERIAL_7E2; +extern const bcstring be_const_str_SYMBOL_EYE_OPEN; +extern const bcstring be_const_str_number; +extern const bcstring be_const_str_pop; +extern const bcstring be_const_str_WIEGAND_D0; +extern const bcstring be_const_str_global; +extern const bcstring be_const_str_lower; +extern const bcstring be_const_str_end; +extern const bcstring be_const_str_LMT01; +extern const bcstring be_const_str_depower; +extern const bcstring be_const_str_lv_btnmatrix; +extern const bcstring be_const_str_SYMBOL_PLUS; +extern const bcstring be_const_str_load_font; +extern const bcstring be_const_str_log; +extern const bcstring be_const_str_resp_cmnd; +extern const bcstring be_const_str_lv_meter; +extern const bcstring be_const_str_NRG_CF1; +extern const bcstring be_const_str_lv_slider; +extern const bcstring be_const_str_upper; +extern const bcstring be_const_str_DSB; +extern const bcstring be_const_str_I2C_Driver; +extern const bcstring be_const_str_SSD1351_CS; +extern const bcstring be_const_str_WEBCAM_VSYNC; +extern const bcstring be_const_str_web_send; +extern const bcstring be_const_str_SYMBOL_BATTERY_1; +extern const bcstring be_const_str_SYMBOL_NEXT; +extern const bcstring be_const_str_ADC_BUTTON_INV; +extern const bcstring be_const_str_KEY1_INV_PD; +extern const bcstring be_const_str_SM16716_DAT; +extern const bcstring be_const_str_deinit; +extern const bcstring be_const_str_hex; +extern const bcstring be_const_str_register_button_encoder; +extern const bcstring be_const_str_DAC; +extern const bcstring be_const_str_tolower; +extern const bcstring be_const_str_PZEM004_RX; +extern const bcstring be_const_str_SERIAL_8E1; +extern const bcstring be_const_str_tan; +extern const bcstring be_const_str_ST7789_DC; +extern const bcstring be_const_str_KEY1_PD; +extern const bcstring be_const_str_KEY1_TC; +extern const bcstring be_const_str_LEDLNK; +extern const bcstring be_const_str_cmd; +extern const bcstring be_const_str_content_send_style; +extern const bcstring be_const_str_OUTPUT_OPEN_DRAIN; +extern const bcstring be_const_str_SERIAL_5N1; +extern const bcstring be_const_str_SYMBOL_BULLET; +extern const bcstring be_const_str_allocated; +extern const bcstring be_const_str_check_privileged_access; +extern const bcstring be_const_str_fromstring; +extern const bcstring be_const_str_OLED_RESET; +extern const bcstring be_const_str_dump; +extern const bcstring be_const_str_resp_cmnd_str; +extern const bcstring be_const_str_SBR_RX; +extern const bcstring be_const_str_lv_spinbox; +extern const bcstring be_const_str_resp_cmnd_done; +extern const bcstring be_const_str_set; +extern const bcstring be_const_str_ETH_PHY_MDIO; +extern const bcstring be_const_str_exp; +extern const bcstring be_const_str_find_key_i; +extern const bcstring be_const_str_A4988_STP; +extern const bcstring be_const_str_TASMOTACLIENT_RST_INV; +extern const bcstring be_const_str_dot_len; +extern const bcstring be_const_str_ADE7953_IRQ; +extern const bcstring be_const_str_NEOPOOL_RX; +extern const bcstring be_const_str_SYMBOL_STOP; +extern const bcstring be_const_str_IBEACON_TX; +extern const bcstring be_const_str_ADC_JOY; +extern const bcstring be_const_str_SYMBOL_DOWNLOAD; +extern const bcstring be_const_str_SERIAL_8O2; +extern const bcstring be_const_str_lv_colorwheel; +extern const bcstring be_const_str_opt_eq; +extern const bcstring be_const_str_BOILER_OT_RX; +extern const bcstring be_const_str_SERIAL_6E2; +extern const bcstring be_const_str_collect; +extern const bcstring be_const_str_SM16716_SEL; +extern const bcstring be_const_str_SYMBOL_COPY; +extern const bcstring be_const_str_flush; +extern const bcstring be_const_str_decrypt; +extern const bcstring be_const_str_resp_cmnd_failed; +extern const bcstring be_const_str_A4988_DIR; +extern const bcstring be_const_str_MAX7219DIN; +extern const bcstring be_const_str_SR04_TRIG; +extern const bcstring be_const_str_ceil; +extern const bcstring be_const_str_size; +extern const bcstring be_const_str_KEY1_INV; +extern const bcstring be_const_str_byte; +extern const bcstring be_const_str_content_send; +extern const bcstring be_const_str_i2c_enabled; +extern const bcstring be_const_str_SYMBOL_BLUETOOTH; +extern const bcstring be_const_str_lv_line; +extern const bcstring be_const_str_publish; +extern const bcstring be_const_str_dot_p2; +extern const bcstring be_const_str_ADC_CT_POWER; +extern const bcstring be_const_str_TM1638STB; +extern const bcstring be_const_str_AS608_TX; +extern const bcstring be_const_str_MAX7219CS; +extern const bcstring be_const_str_SOLAXX1_RX; +extern const bcstring be_const_str_WEBCAM_HREF; +extern const bcstring be_const_str_WS2812; +extern const bcstring be_const_str_DHT11; +extern const bcstring be_const_str_lv_bar; +extern const bcstring be_const_str_reset_search; +extern const bcstring be_const_str_write; +extern const bcstring be_const_str_finish; +extern const bcstring be_const_str_SYMBOL_DIRECTORY; +extern const bcstring be_const_str_SYMBOL_IMAGE; +extern const bcstring be_const_str_SYMBOL_MINUS; +extern const bcstring be_const_str_SYMBOL_RIGHT; +extern const bcstring be_const_str_TASMOTACLIENT_RXD; +extern const bcstring be_const_str__ccmd; +extern const bcstring be_const_str_last_modified; +extern const bcstring be_const_str_GPS_TX; +extern const bcstring be_const_str__get_cb; +extern const bcstring be_const_str_SYMBOL_BATTERY_FULL; +extern const bcstring be_const_str_exists; +extern const bcstring be_const_str_save; +extern const bcstring be_const_str_SERIAL_7N2; +extern const bcstring be_const_str_SWT1; +extern const bcstring be_const_str_MAX7219CLK; +extern const bcstring be_const_str_SYMBOL_SD_CARD; +extern const bcstring be_const_str_set_useragent; +extern const bcstring be_const_str_SERIAL_7E1; +extern const bcstring be_const_str_ROT1A; +extern const bcstring be_const_str_ST7789_CS; +extern const bcstring be_const_str_SDS0X1_TX; +extern const bcstring be_const_str_ctypes_bytes_dyn; +extern const bcstring be_const_str_pin; +extern const bcstring be_const_str_range; +extern const bcstring be_const_str_ETH_PHY_MDC; +extern const bcstring be_const_str_NRF24_DC; +extern const bcstring be_const_str_millis; +extern const bcstring be_const_str_time_dump; +extern const bcstring be_const_str_begin; +extern const bcstring be_const_str_DHT22; +extern const bcstring be_const_str_SYMBOL_UP; +extern const bcstring be_const_str_I2S_IN_CLK; +extern const bcstring be_const_str_nan; +extern const bcstring be_const_str_AES_GCM; +extern const bcstring be_const_str_HX711_SCK; +extern const bcstring be_const_str_cos; +extern const bcstring be_const_str_CC1101_GDO0; +extern const bcstring be_const_str_set_timer; +extern const bcstring be_const_str_BS814_CLK; +extern const bcstring be_const_str_IEM3000_TX; +extern const bcstring be_const_str_SERIAL_8N2; +extern const bcstring be_const_str_SSD1331_CS; +extern const bcstring be_const_str_clear; +extern const bcstring be_const_str_A4988_MS1; +extern const bcstring be_const_str_LED1; +extern const bcstring be_const_str_SERIAL_8E2; +extern const bcstring be_const_str_SYMBOL_BATTERY_EMPTY; +extern const bcstring be_const_str___upper__; +extern const bcstring be_const_str_I2S_IN_SLCT; +extern const bcstring be_const_str_AZ_TXD; +extern const bcstring be_const_str__global_def; +extern const bcstring be_const_str_lv_style; +extern const bcstring be_const_str__ptr; +extern const bcstring be_const_str_SERIAL_5N2; +extern const bcstring be_const_str_ZEROCROSS; +extern const bcstring be_const_str_exec_cmd; +extern const bcstring be_const_str_OPEN_DRAIN; +extern const bcstring be_const_str_attrdump; +extern const bcstring be_const_str_lv_roller; +extern const bcstring be_const_str_KEY1; +extern const bcstring be_const_str_read13; +extern const bcstring be_const_str_SYMBOL_CHARGE; +extern const bcstring be_const_str_TM1638CLK; +extern const bcstring be_const_str_dac_voltage; +extern const bcstring be_const_str_POST; +extern const bcstring be_const_str_RFSEND; +extern const bcstring be_const_str_gamma10; +extern const bcstring be_const_str_INTERRUPT; +extern const bcstring be_const_str_SOLAXX1_TX; +extern const bcstring be_const_str_lv_textarea; +extern const bcstring be_const_str__cb; +extern const bcstring be_const_str_return; +extern const bcstring be_const_str_else; +extern const bcstring be_const_str_ADC_INPUT; +extern const bcstring be_const_str_asin; +extern const bcstring be_const_str_tob64; +extern const bcstring be_const_str_AS3935; +extern const bcstring be_const_str_SYMBOL_PREV; +extern const bcstring be_const_str_traceback; +extern const bcstring be_const_str_AudioFileSource; +extern const bcstring be_const_str_compile; +extern const bcstring be_const_str_digital_read; +extern const bcstring be_const_str_int; +extern const bcstring be_const_str_CNTR1; +extern const bcstring be_const_str_SSPI_MAX31865_CS1; +extern const bcstring be_const_str_def; +extern const bcstring be_const_str_PULLUP; +extern const bcstring be_const_str_start; +extern const bcstring be_const_str_OneWire; +extern const bcstring be_const_str_lv_canvas; +extern const bcstring be_const_str_toptr; +extern const bcstring be_const_str_HM10_TX; +extern const bcstring be_const_str_publish_result; +extern const bcstring be_const_str_SSD1331_DC; +extern const bcstring be_const_str_screenshot; +extern const bcstring be_const_str_tag; +extern const bcstring be_const_str_PZEM0XX_TX; +extern const bcstring be_const_str_Tasmota; +extern const bcstring be_const_str_SENSOR_END; +extern const bcstring be_const_str_VL53L0X_XSHUT1; +extern const bcstring be_const_str_concat; +extern const bcstring be_const_str_wifi; +extern const bcstring be_const_str_ILI9341_CS; +extern const bcstring be_const_str_SDM72_RX; +extern const bcstring be_const_str_TCP_TX; +extern const bcstring be_const_str_ADC_PH; +extern const bcstring be_const_str_SYMBOL_CLOSE; +extern const bcstring be_const_str_CSE7766_TX; +extern const bcstring be_const_str_SHELLY_DIMMER_BOOT0; +extern const bcstring be_const_str_wire2; +extern const bcstring be_const_str_AudioOutputI2S; +extern const bcstring be_const_str_str; +extern const bcstring be_const_str_resize; +extern const bcstring be_const_str_IEM3000_RX; +extern const bcstring be_const_str_TFMINIPLUS_RX; +extern const bcstring be_const_str_content_stop; +extern const bcstring be_const_str_write_bytes; +extern const bcstring be_const_str_SI7021; +extern const bcstring be_const_str_digital_write; +extern const bcstring be_const_str_ROT1B; +extern const bcstring be_const_str_PN532_RXD; +extern const bcstring be_const_str_TX2X_TXD_BLACK; +extern const bcstring be_const_str_opt_neq; +extern const bcstring be_const_str_LOW; +extern const bcstring be_const_str_TELEINFO_ENABLE; +extern const bcstring be_const_str_TM1638DIO; +extern const bcstring be_const_str_BUZZER_INV; +extern const bcstring be_const_str_LEDLNK_INV; +extern const bcstring be_const_str_MAX31855CS; +extern const bcstring be_const_str_SYMBOL_VIDEO; +extern const bcstring be_const_str_content_button; +extern const bcstring be_const_str_read; +extern const bcstring be_const_str_I2C_SDA; +extern const bcstring be_const_str_read12; +extern const bcstring be_const_str_SYMBOL_EJECT; +extern const bcstring be_const_str_bus; +extern const bcstring be_const_str_MIEL_HVAC_RX; +extern const bcstring be_const_str_do; +extern const bcstring be_const_str_ILI9488_CS; +extern const bcstring be_const_str_SSPI_MOSI; +extern const bcstring be_const_str_get_size; +extern const bcstring be_const_str_resp_cmnd_error; +extern const bcstring be_const_str_ARIRFRCV; +extern const bcstring be_const_str_SYMBOL_PLAY; +extern const bcstring be_const_str_count; +extern const bcstring be_const_str_I2S_OUT_CLK; +extern const bcstring be_const_str_call; +extern const bcstring be_const_str__buffer; +extern const bcstring be_const_str_cosh; +extern const bcstring be_const_str_on; +extern const bcstring be_const_str_OUTPUT_LO; +extern const bcstring be_const_str_false; +extern const bcstring be_const_str_SDS0X1_RX; +extern const bcstring be_const_str_atan2; +extern const bcstring be_const_str_sinh; +extern const bcstring be_const_str_RC522_CS; +extern const bcstring be_const_str_has_arg; +extern const bcstring be_const_str_ARIRFSEL; +extern const bcstring be_const_str_TCP_RX; +extern const bcstring be_const_str_lv_checkbox; +extern const bcstring be_const_str_raise; +extern const bcstring be_const_str_DDS2382_RX; +extern const bcstring be_const_str_NEOPOOL_TX; +extern const bcstring be_const_str_SYMBOL_CUT; +extern const bcstring be_const_str_MAX31855CLK; +extern const bcstring be_const_str_RC522_RST; +extern const bcstring be_const_str_REL1_INV; +extern const bcstring be_const_str_read24; +extern const bcstring be_const_str_SYMBOL_DOWN; +extern const bcstring be_const_str_SYMBOL_EYE_CLOSE; +extern const bcstring be_const_str__class; +extern const bcstring be_const_str_split; +extern const bcstring be_const_str_static; +extern const bcstring be_const_str_AudioGeneratorMP3; +extern const bcstring be_const_str_SYMBOL_BATTERY_2; +extern const bcstring be_const_str_delay; +extern const bcstring be_const_str_state; +extern const bcstring be_const_str_SDM630_RX; +extern const bcstring be_const_str_toint; +extern const bcstring be_const_str_BACKLIGHT; +extern const bcstring be_const_str_; +extern const bcstring be_const_str_REL1; +extern const bcstring be_const_str_fromptr; +extern const bcstring be_const_str_target_search; +extern const bcstring be_const_str_detect; +extern const bcstring be_const_str_HRXL_RX; +extern const bcstring be_const_str_OUTPUT_HI; +extern const bcstring be_const_str_SYMBOL_WARNING; +extern const bcstring be_const_str_read32; +extern const bcstring be_const_str_SPI_DC; +extern const bcstring be_const_str_keys; +extern const bcstring be_const_str_search; +extern const bcstring be_const_str_OUTPUT; +extern const bcstring be_const_str_isnan; +extern const bcstring be_const_str_webclient; +extern const bcstring be_const_str_HJL_CF; +extern const bcstring be_const_str_TUYA_RX; +extern const bcstring be_const_str_SERIAL_5O2; +extern const bcstring be_const_str_SPI_MISO; +extern const bcstring be_const_str_isrunning; +extern const bcstring be_const_str_IRRECV; +extern const bcstring be_const_str_SERIAL_6N2; +extern const bcstring be_const_str_AudioGeneratorWAV; +extern const bcstring be_const_str_PROJECTOR_CTRL_TX; +extern const bcstring be_const_str__read; +extern const bcstring be_const_str_EPD_DATA; +extern const bcstring be_const_str_geti; +extern const bcstring be_const_str_SYMBOL_BACKSPACE; +extern const bcstring be_const_str_RF_SENSOR; +extern const bcstring be_const_str_SERIAL_8O1; +extern const bcstring be_const_str__p; +extern const bcstring be_const_str_AZ_RXD; +extern const bcstring be_const_str__global_addr; +extern const bcstring be_const_str_arg_size; +extern const bcstring be_const_str_char; +extern const bcstring be_const_str_iter; +extern const bcstring be_const_str_lv_group; +extern const bcstring be_const_str_read_bytes; +extern const bcstring be_const_str_I2C_SCL; +extern const bcstring be_const_str_RA8876_CS; +extern const bcstring be_const_str_find_op; +extern const bcstring be_const_str_EC_C25519; +extern const bcstring be_const_str_I2S_IN_DATA; +extern const bcstring be_const_str_SERIAL_6E1; +extern const bcstring be_const_str_reverse_gamma10; +extern const bcstring be_const_str_opt_add; +extern const bcstring be_const_str_gamma8; +extern const bcstring be_const_str_memory; +extern const bcstring be_const_str_run_deferred; +extern const bcstring be_const_str_real; +extern const bcstring be_const_str_wire_scan; +extern const bcstring be_const_str_NONE; +extern const bcstring be_const_str_SM16716_CLK; +extern const bcstring be_const_str_getbits; +extern const bcstring be_const_str_remove; +extern const bcstring be_const_str_ADC_BUTTON; +extern const bcstring be_const_str_insert; +extern const bcstring be_const_str_lv_table; +extern const bcstring be_const_str_if; +extern const bcstring be_const_str_LE01MR_TX; +extern const bcstring be_const_str_MD5; +extern const bcstring be_const_str_dot_p1; +extern const bcstring be_const_str_CSE7761_RX; +extern const bcstring be_const_str_HPMA_TX; +extern const bcstring be_const_str_SM2135_DAT; +extern const bcstring be_const_str_skip; +extern const bcstring be_const_str_SERIAL_5E1; +extern const bcstring be_const_str_opt_connect; +extern const bcstring be_const_str_WEBCAM_PCLK; +extern const bcstring be_const_str_lv_imgbtn; diff --git a/lib/libesp32/Berry/generate/be_const_strtab_def.h b/lib/libesp32/Berry/generate/be_const_strtab_def.h index 3cf575ec6..797453583 100644 --- a/lib/libesp32/Berry/generate/be_const_strtab_def.h +++ b/lib/libesp32/Berry/generate/be_const_strtab_def.h @@ -1,1055 +1,1033 @@ -be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, &be_const_str_get_size); -be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_write8); -be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); -be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_content_send_style); -be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, &be_const_str_serial); -be_define_const_str(serial, "serial", 3687697785u, 0, 6, &be_const_str_set_auth); -be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); -be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_SYMBOL_HOME); -be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, &be_const_str_SYMBOL_LIST); -be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, &be_const_str_addr); -be_define_const_str(addr, "addr", 1087856498u, 0, 4, &be_const_str_copy); -be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); -be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_atan); -be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_lv_page); -be_define_const_str(lv_page, "lv_page", 2373170067u, 0, 7, NULL); -be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, &be_const_str_lv_event_cb); -be_define_const_str(lv_event_cb, "lv_event_cb", 2480731016u, 0, 11, &be_const_str_write_bit); -be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); -be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); -be_define_const_str(find, "find", 3186656602u, 0, 4, NULL); -be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_NEOPOOL_TX); -be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_OUTPUT_HI); -be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, NULL); -be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_HLW_CF); -be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_montserrat_font); -be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_reset); -be_define_const_str(reset, "reset", 1695364032u, 0, 5, NULL); -be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_SWT1); -be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, &be_const_str_pi); -be_define_const_str(pi, "pi", 1213090802u, 0, 2, NULL); -be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_skip); -be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); -be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_IEM3000_TX); -be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, NULL); -be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_I2S_IN_DATA); -be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_I2S_OUT_CLK); -be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_SERIAL_8O2); -be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); -be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_collect); -be_define_const_str(collect, "collect", 2399039025u, 0, 7, &be_const_str_resp_cmnd_str); -be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); -be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); -be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_MAX7219CLK); -be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str__drivers); -be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, NULL); -be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_add_cmd); -be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_dump); -be_define_const_str(dump, "dump", 3663001223u, 0, 4, &be_const_str_register_button_encoder); -be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, &be_const_str_do); -be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); -be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); -be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_nil); -be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); -be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_add_driver); -be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_ceil); -be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, NULL); -be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_SYMBOL_PREV); -be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_TASMOTACLIENT_RXD); -be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, &be_const_str_floor); -be_define_const_str(floor, "floor", 3102149661u, 0, 5, &be_const_str_time_reached); -be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, &be_const_str_url_encode); -be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); -be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_state); -be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); -be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_SPI_MOSI); -be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, NULL); -be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_OLED_RESET); -be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_SSPI_CS); -be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str_gamma10); -be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, &be_const_str_remove_rule); -be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); -be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, NULL); -be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, &be_const_str_SYMBOL_POWER); -be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_content_start); -be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_members); -be_define_const_str(members, "members", 937576464u, 0, 7, NULL); -be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, &be_const_str_TX2X_TXD_BLACK); -be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, &be_const_str_add_header); -be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); -be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_RC522_CS); -be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_search); -be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); -be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_TASMOTACLIENT_RST_INV); -be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, &be_const_str_flush); -be_define_const_str(flush, "flush", 3002334877u, 0, 5, &be_const_str_last_modified); -be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); -be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, &be_const_str_HJL_CF); -be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_SERIAL_7E2); -be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_iter); -be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_group); -be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_pin_mode); -be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, NULL); -be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_load_freetype_font); -be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, &be_const_str_tob64); -be_define_const_str(tob64, "tob64", 373777640u, 0, 5, &be_const_str_toptr); -be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); -be_define_const_str(list, "list", 217798785u, 0, 4, NULL); -be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_wifi); -be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); -be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_bytes); -be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_get_switch); -be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, &be_const_str_load_font); -be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, NULL); -be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); -be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_WE517_TX); -be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, NULL); -be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_SSPI_MISO); -be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, NULL); -be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_atan2); -be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, &be_const_str_get_power); -be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, NULL); -be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_isrunning); -be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, &be_const_str_read8); -be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_set_useragent); -be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); -be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_PN532_RXD); -be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_SYMBOL_COPY); -be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_get_free_heap); -be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_lv_win); -be_define_const_str(lv_win, "lv_win", 780927558u, 0, 6, &be_const_str_update); -be_define_const_str(update, "update", 672109684u, 0, 6, &be_const_str_web_send_decimal); -be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, NULL); -be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, NULL); -be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, NULL); -be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_WEBCAM_PCLK); -be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_ZIGBEE_RX); -be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, NULL); -be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_scale_uint); -be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); -be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, NULL); -be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_abs); -be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_lv_list); -be_define_const_str(lv_list, "lv_list", 2876551248u, 0, 7, NULL); -be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_issubclass); -be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_tan); -be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); -be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_SERIAL_6N2); -be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, NULL); -be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_write_bytes); -be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); -be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_SERIAL_7O2); -be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_raise); -be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); -be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SM2135_CLK); -be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_TM1638DIO); -be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); -be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_top); -be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); -be_define_const_str(deg, "deg", 3327754271u, 0, 3, &be_const_str_keys); -be_define_const_str(keys, "keys", 4182378701u, 0, 4, NULL); -be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, &be_const_str_INTERRUPT); -be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, NULL); -be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_remove); -be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); -be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); -be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); -be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_GET); -be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_ROT1A_NP); -be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, NULL); -be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); -be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_except); +be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_except); be_define_const_str(except, "except", 950914032u, 69, 6, NULL); -be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, NULL); -be_define_const_str(log, "log", 1062293841u, 0, 3, &be_const_str_lv_gauge_format_cb); -be_define_const_str(lv_gauge_format_cb, "lv_gauge_format_cb", 4073149249u, 0, 18, &be_const_str_on); -be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); -be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, &be_const_str_RFSEND); -be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, NULL); -be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, NULL); -be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_isinstance); -be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_read24); -be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); -be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); -be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_KEY1_INV_PD); -be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SERIAL_7N1); -be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_lv_obj); -be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); -be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_call); -be_define_const_str(call, "call", 3018949801u, 0, 4, &be_const_str_seti); -be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); -be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_decrypt); -be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, NULL); -be_define_const_str(dot_len, ".len", 850842136u, 0, 4, NULL); -be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_IRSEND); -be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SYMBOL_IMAGE); -be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, &be_const_str_arg_size); -be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, NULL); -be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_global); -be_define_const_str(global, "global", 503252654u, 0, 6, &be_const_str_lv_cont); -be_define_const_str(lv_cont, "lv_cont", 1391686552u, 0, 7, &be_const_str_save); -be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); -be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, &be_const_str_PZEM0XX_TX); -be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, NULL); -be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, NULL); -be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, &be_const_str_setitem); -be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); -be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_imin); -be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); -be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_push); -be_define_const_str(push, "push", 2272264157u, 0, 4, &be_const_str_reset_search); -be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); -be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_OUTPUT_LO); -be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_ZEROCROSS); -be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_lv_font); -be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, NULL); -be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_WEBCAM_PSRCS); -be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, NULL); -be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, NULL); -be_define_const_str(lv_gauge, "lv_gauge", 118613531u, 0, 8, NULL); -be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_SYMBOL_PLUS); -be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); -be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); -be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_OneWire); -be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_lv_color); -be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, &be_const_str_open); -be_define_const_str(open, "open", 3546203337u, 0, 4, &be_const_str_sin); -be_define_const_str(sin, "sin", 3761252941u, 0, 3, NULL); -be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, NULL); -be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, &be_const_str_srand); -be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); -be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL); -be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, NULL); -be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); -be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_SSPI_MOSI); -be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_SYMBOL_BELL); -be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, &be_const_str_allocated); -be_define_const_str(allocated, "allocated", 429986098u, 0, 9, NULL); -be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, &be_const_str__global_addr); -be_define_const_str(_global_addr, "_global_addr", 533766721u, 0, 12, &be_const_str_lv_switch); -be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_pop); -be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); -be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, &be_const_str_stop); -be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); -be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_toint); -be_define_const_str(toint, "toint", 3613182909u, 0, 5, &be_const_str_toupper); -be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); -be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, &be_const_str_set_light); -be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); -be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, &be_const_str_resp_cmnd_failed); -be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); -be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_split); -be_define_const_str(split, "split", 2276994531u, 0, 5, NULL); -be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_opt_eq); -be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_PWM1_INV); -be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, &be_const_str_TM1637CLK); -be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, &be_const_str__ccmd); -be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_add); -be_define_const_str(add, "add", 993596020u, 0, 3, NULL); -be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, NULL); -be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_close); -be_define_const_str(close, "close", 667630371u, 0, 5, NULL); -be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); -be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); -be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_gen_cb); -be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_scan); -be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); -be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); -be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_add_rule); -be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, NULL); -be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_ST7789_DC); -be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, &be_const_str_pin); -be_define_const_str(pin, "pin", 1866532500u, 0, 3, NULL); -be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str_cosh); -be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_ctypes_bytes); -be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); -be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_isnan); -be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, &be_const_str_tanh); -be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); -be_define_const_str(print, "print", 372738696u, 0, 5, NULL); -be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_SYMBOL_DUMMY); -be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_memory); -be_define_const_str(memory, "memory", 2229924270u, 0, 6, NULL); -be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_cos); -be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); -be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_lv_textarea); -be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); -be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str_I2S_OUT_SLCT); -be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SOLAXX1_TX); -be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_webclient); -be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); -be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str__timers); -be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); -be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); -be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_SYMBOL_DRIVE); -be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_SYMBOL_WIFI); -be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, NULL); -be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_check_privileged_access); -be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, NULL); -be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, &be_const_str_HRXL_RX); -be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, NULL); -be_define_const_str(available, "available", 1727918744u, 0, 9, NULL); -be_define_const_str(break, "break", 3378807160u, 58, 5, &be_const_str_var); -be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); -be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_IEM3000_RX); -be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, &be_const_str__get_cb); -be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, &be_const_str_while); -be_define_const_str(while, "while", 231090382u, 53, 5, NULL); -be_define_const_str(yield, "yield", 1821831854u, 0, 5, &be_const_str_import); -be_define_const_str(import, "import", 288002260u, 66, 6, NULL); -be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_DAC); -be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_SYMBOL_CUT); -be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); -be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_sinh); -be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); -be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str__def); -be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_lv_img); -be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); -be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, &be_const_str_lv_tabview); -be_define_const_str(lv_tabview, "lv_tabview", 2109024786u, 0, 10, NULL); -be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_SERIAL_5N1); -be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SYMBOL_EYE_CLOSE); -be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str_lv_linemeter); -be_define_const_str(lv_linemeter, "lv_linemeter", 1413069363u, 0, 12, NULL); -be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_MAX31855CLK); -be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, NULL); -be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str__write); -be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_read12); -be_define_const_str(read12, "read12", 4291076970u, 0, 6, &be_const_str_time_dump); -be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); -be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, NULL); -be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_GPS_TX); -be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str_member); -be_define_const_str(member, "member", 719708611u, 0, 6, &be_const_str_resize); -be_define_const_str(resize, "resize", 3514612129u, 0, 6, &be_const_str_wire1); -be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); -be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, NULL); -be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_PWM1); -be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_WEBCAM_PWDN); -be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, NULL); -be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_delay); -be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_encrypt); -be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, &be_const_str_lv_calendar); -be_define_const_str(lv_calendar, "lv_calendar", 3284396894u, 0, 11, &be_const_str_for); -be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); -be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_lv_design_cb); -be_define_const_str(lv_design_cb, "lv_design_cb", 3822640502u, 0, 12, NULL); -be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str_SYMBOL_CLOSE); -be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, &be_const_str_fromptr); -be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, NULL); -be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); -be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, NULL); -be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, NULL); -be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, NULL); -be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SYMBOL_TRASH); -be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_lv_bar); -be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_read); -be_define_const_str(read, "read", 3470762949u, 0, 4, &be_const_str_start); -be_define_const_str(start, "start", 1697318111u, 0, 5, &be_const_str_wire); -be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); -be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, &be_const_str_remove_cmd); -be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, NULL); -be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); -be_define_const_str(DI, "DI", 1070498734u, 0, 2, NULL); -be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_lv_spinbox); -be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, NULL); -be_define_const_str(_read, "_read", 346717030u, 0, 5, &be_const_str_char); -be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_lower); -be_define_const_str(lower, "lower", 3038577850u, 0, 5, NULL); -be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_classof); -be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); -be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, NULL); -be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_continue); -be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); -be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str_SHELLY_DIMMER_RST_INV); -be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str_module); -be_define_const_str(module, "module", 3617558685u, 0, 6, NULL); -be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); -be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); -be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); -be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_ZIGBEE_TX); -be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, &be_const_str__available); -be_define_const_str(_available, "_available", 1306196581u, 0, 10, &be_const_str_acos); -be_define_const_str(acos, "acos", 1006755615u, 0, 4, NULL); -be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_TELEINFO_RX); -be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, NULL); -be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_WEBCAM_HSD); -be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, NULL); -be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_SAIR_RX); -be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SSD1331_DC); -be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_run_deferred); -be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); -be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_setrange); -be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); -be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str_count); -be_define_const_str(count, "count", 967958004u, 0, 5, NULL); -be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, NULL); -be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, &be_const_str_SYMBOL_VOLUME_MAX); -be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_fromb64); -be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, NULL); -be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, &be_const_str_SYMBOL_DIRECTORY); -be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_content_button); -be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_ctypes_bytes_dyn); -be_define_const_str(ctypes_bytes_dyn, "ctypes_bytes_dyn", 915205307u, 0, 16, &be_const_str_upper); -be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); -be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, &be_const_str_WEBCAM_RESET); -be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_WIEGAND_D1); -be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_lv_keyboard); -be_define_const_str(lv_keyboard, "lv_keyboard", 197530229u, 0, 11, &be_const_str_resolvecmnd); -be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); -be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, NULL); -be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_SM16716_CLK); -be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str__begin_transmission); -be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_lv_indev); -be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, NULL); -be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, NULL); -be_define_const_str(event, "event", 4264611999u, 0, 5, &be_const_str_tolower); -be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); -be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); -be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_erase); -be_define_const_str(erase, "erase", 1010949589u, 0, 5, &be_const_str_lv_led); -be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); -be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_calldepth); -be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, &be_const_str_screenshot); -be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, NULL); -be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); -be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); -be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_INPUT_PULLUP); -be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, NULL); -be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_SDM630_TX); -be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, NULL); -be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_clear); -be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); -be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); -be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_codedump); -be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); -be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_read_bytes); -be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); -be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_int); -be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); -be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); -be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_SSPI_MAX31865_CS1); -be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_SYMBOL_UPLOAD); -be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, NULL); -be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, NULL); -be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, &be_const_str__rules); -be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, &be_const_str_lv_imgbtn); -be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); -be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_content_stop); -be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, &be_const_str_load); -be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); -be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_wire_scan); -be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); -be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_begin); -be_define_const_str(begin, "begin", 1748273790u, 0, 5, &be_const_str_insert); -be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_super); -be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); -be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, &be_const_str_time_str); -be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); -be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_SDCARD_CS); -be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, NULL); -be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, NULL); -be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); -be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, NULL); -be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_lv_group_focus_cb); -be_define_const_str(lv_group_focus_cb, "lv_group_focus_cb", 4288873836u, 0, 17, NULL); -be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); -be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, NULL); -be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, &be_const_str_PROJECTOR_CTRL_TX); -be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str_WEBCAM_DATA); -be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, NULL); -be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); -be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, &be_const_str_arg); -be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); -be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, &be_const_str_range); -be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); -be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_WEBCAM_SIOC); -be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_read13); -be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); -be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, &be_const_str_SYMBOL_BACKSPACE); -be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, &be_const_str_lv_btn); -be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); -be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_SYMBOL_SHUFFLE); -be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_asin); -be_define_const_str(asin, "asin", 4272848550u, 0, 4, NULL); -be_define_const_str(MCP39F5_RST, "MCP39F5_RST", 3657125652u, 0, 11, &be_const_str_reverse); -be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); -be_define_const_str(LED1, "LED1", 21005825u, 0, 4, NULL); -be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, NULL); -be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_wire2); -be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, &be_const_str_class); -be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); -be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_lv_tileview); -be_define_const_str(lv_tileview, "lv_tileview", 2419887973u, 0, 11, NULL); -be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, NULL); -be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, NULL); -be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, NULL); -be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, NULL); -be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str__global_def); -be_define_const_str(_global_def, "_global_def", 646007001u, 0, 11, &be_const_str_write); -be_define_const_str(write, "write", 3190202204u, 0, 5, &be_const_str_try); -be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); -be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_millis); -be_define_const_str(millis, "millis", 1214679063u, 0, 6, NULL); -be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_gamma8); -be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, NULL); -be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_asstring); -be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, &be_const_str_elif); -be_define_const_str(elif, "elif", 3232090307u, 51, 4, &be_const_str_static); -be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); -be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_lv_arc); -be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, NULL); -be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, &be_const_str_SYMBOL_VIDEO); -be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, NULL); -be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, NULL); -be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, &be_const_str_GPS_RX); -be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SSPI_DC); -be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, &be_const_str_set_timer); -be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); -be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_REL1_INV); -be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, NULL); -be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); -be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, NULL); -be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_get_light); -be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_remove_driver); -be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, NULL); -be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); -be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); -be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); -be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_MIEL_HVAC_RX); -be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_SERIAL_8N1); -be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, NULL); -be_define_const_str(imax, "imax", 3084515410u, 0, 4, &be_const_str_else); -be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); -be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_web_send); -be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); -be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_ARIRFRCV); -be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_SM16716_DAT); -be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, NULL); -be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, &be_const_str_ILI9341_DC); -be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, &be_const_str_gc); -be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); -be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_public_key); +be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, NULL); +be_define_const_str(CNTR1_NP, "CNTR1_NP", 4288381648u, 0, 8, &be_const_str_montserrat_font); +be_define_const_str(montserrat_font, "montserrat_font", 1819065874u, 0, 15, &be_const_str_name); +be_define_const_str(name, "name", 2369371622u, 0, 4, &be_const_str_public_key); be_define_const_str(public_key, "public_key", 4169142980u, 0, 10, NULL); -be_define_const_str(, "", 2166136261u, 0, 0, NULL); -be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, NULL); -be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str___iterator__); -be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); -be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_return); -be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); -be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_WEBCAM_HREF); -be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WIEGAND_D0); -be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, &be_const_str_rtc); -be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, &be_const_str_false); -be_define_const_str(false, "false", 184981848u, 62, 5, NULL); -be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, NULL); -be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, &be_const_str_WINDMETER_SPEED); -be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, NULL); -be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_SERIAL_6E1); -be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str__request_from); -be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, &be_const_str_lv_roller); -be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); -be_define_const_str(opt_add, "+", 772578730u, 0, 1, NULL); -be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MCP39F5_TX); -be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_SYMBOL_EDIT); -be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, NULL); -be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str_SERIAL_5O2); -be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SYMBOL_LOOP); -be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_WS2812); -be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, &be_const_str_ZIGBEE_RST); -be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, &be_const_str_publish); -be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); -be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_IBEACON_TX); -be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, &be_const_str_RC522_RST); -be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_hex); -be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_if); -be_define_const_str(if, "if", 959999494u, 50, 2, NULL); -be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_I2S_OUT_DATA); -be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_IBEACON_RX); -be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_depower); -be_define_const_str(depower, "depower", 3563819571u, 0, 7, NULL); -be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, NULL); -be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_WEBCAM_XCLK); -be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_compile); -be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_as); -be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); -be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, &be_const_str_TXD); -be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_exists); -be_define_const_str(exists, "exists", 1002329533u, 0, 6, &be_const_str_lv_dropdown); -be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, NULL); -be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_TM1638CLK); -be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, NULL); -be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, NULL); -be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, NULL); -be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_map); +be_define_const_str(DSB_OUT, "DSB_OUT", 732335085u, 0, 7, &be_const_str_gc); +be_define_const_str(gc, "gc", 1042313471u, 0, 2, NULL); +be_define_const_str(P9813_DAT, "P9813_DAT", 778577052u, 0, 9, &be_const_str_pin_used); +be_define_const_str(pin_used, "pin_used", 4033854612u, 0, 8, &be_const_str_rtc); +be_define_const_str(rtc, "rtc", 1070575216u, 0, 3, NULL); +be_define_const_str(seg7_font, "seg7_font", 4099690689u, 0, 9, NULL); +be_define_const_str(ETH_PHY_POWER, "ETH_PHY_POWER", 487529454u, 0, 13, &be_const_str_SERIAL_7N1); +be_define_const_str(SERIAL_7N1, "SERIAL_7N1", 1891060246u, 0, 10, &be_const_str_rad); +be_define_const_str(rad, "rad", 1358899048u, 0, 3, NULL); +be_define_const_str(_drivers, "_drivers", 3260328985u, 0, 8, &be_const_str_abs); +be_define_const_str(abs, "abs", 709362235u, 0, 3, &be_const_str_issubclass); +be_define_const_str(issubclass, "issubclass", 4078395519u, 0, 10, &be_const_str_module); +be_define_const_str(module, "module", 3617558685u, 0, 6, &be_const_str_setmember); +be_define_const_str(setmember, "setmember", 1432909441u, 0, 9, NULL); +be_define_const_str(DI, "DI", 1070498734u, 0, 2, &be_const_str_find); +be_define_const_str(find, "find", 3186656602u, 0, 4, &be_const_str_log10); +be_define_const_str(log10, "log10", 2346846000u, 0, 5, NULL); +be_define_const_str(SYMBOL_SHUFFLE, "SYMBOL_SHUFFLE", 1123310147u, 0, 14, &be_const_str_TFMINIPLUS_TX); +be_define_const_str(TFMINIPLUS_TX, "TFMINIPLUS_TX", 2527875337u, 0, 13, &be_const_str_map); be_define_const_str(map, "map", 3751997361u, 0, 3, NULL); -be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_SERIAL_6O2); -be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_concat); -be_define_const_str(concat, "concat", 4124019837u, 0, 6, &be_const_str_strftime); -be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); -be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); -be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_get); -be_define_const_str(get, "get", 1410115415u, 0, 3, NULL); -be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SERIAL_8E1); -be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_lv_objmask); -be_define_const_str(lv_objmask, "lv_objmask", 1311221665u, 0, 10, &be_const_str_try_rule); -be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); -be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_DYP_RX); -be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_I2C_SDA); -be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_SDM72_RX); -be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str__cb); -be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, NULL); -be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, NULL); -be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, &be_const_str_lv_signal_cb); -be_define_const_str(lv_signal_cb, "lv_signal_cb", 3295792564u, 0, 12, &be_const_str_set_timeouts); -be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); -be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_ROT1B); -be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, &be_const_str_XPT2046_CS); -be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_lv_spinner); -be_define_const_str(lv_spinner, "lv_spinner", 3361501901u, 0, 10, NULL); -be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_lv_cpicker); -be_define_const_str(lv_cpicker, "lv_cpicker", 1935129251u, 0, 10, NULL); +be_define_const_str(set_light, "set_light", 3176076152u, 0, 9, NULL); +be_define_const_str(SAIR_TX, "SAIR_TX", 268017311u, 0, 7, &be_const_str_redirect); +be_define_const_str(redirect, "redirect", 389758641u, 0, 8, NULL); +be_define_const_str(RDM6300_RX, "RDM6300_RX", 1522345628u, 0, 10, &be_const_str_isinstance); +be_define_const_str(isinstance, "isinstance", 3669352738u, 0, 10, &be_const_str_toupper); +be_define_const_str(toupper, "toupper", 3691983576u, 0, 7, NULL); +be_define_const_str(TM1637DIO, "TM1637DIO", 1574659381u, 0, 9, &be_const_str_TUYA_TX); +be_define_const_str(TUYA_TX, "TUYA_TX", 1541301465u, 0, 7, NULL); +be_define_const_str(WEBCAM_PSCLK, "WEBCAM_PSCLK", 3150007456u, 0, 12, &be_const_str__begin_transmission); +be_define_const_str(_begin_transmission, "_begin_transmission", 2779461176u, 0, 19, &be_const_str_lv_label); +be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, NULL); +be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_loop); +be_define_const_str(loop, "loop", 3723446379u, 0, 4, NULL); +be_define_const_str(SYMBOL_LIST, "SYMBOL_LIST", 70793990u, 0, 11, NULL); +be_define_const_str(ELECTRIQ_MOODL_TX, "ELECTRIQ_MOODL_TX", 31009247u, 0, 17, NULL); +be_define_const_str(CHANGE, "CHANGE", 4280911421u, 0, 6, &be_const_str_P9813_CLK); +be_define_const_str(P9813_CLK, "P9813_CLK", 2455391001u, 0, 9, &be_const_str_SYMBOL_NEW_LINE); +be_define_const_str(SYMBOL_NEW_LINE, "SYMBOL_NEW_LINE", 2014334315u, 0, 15, &be_const_str_SYMBOL_VOLUME_MID); +be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, &be_const_str_lv_color); +be_define_const_str(lv_color, "lv_color", 1419148319u, 0, 8, NULL); +be_define_const_str(tanh, "tanh", 153638352u, 0, 4, NULL); +be_define_const_str(SYMBOL_REFRESH, "SYMBOL_REFRESH", 1266229761u, 0, 14, &be_const_str_get_string); +be_define_const_str(get_string, "get_string", 4195847969u, 0, 10, NULL); +be_define_const_str(SYMBOL_BELL, "SYMBOL_BELL", 1736196487u, 0, 11, NULL); +be_define_const_str(dot_size, ".size", 1965188224u, 0, 5, &be_const_str_SYMBOL_DRIVE); +be_define_const_str(SYMBOL_DRIVE, "SYMBOL_DRIVE", 567203502u, 0, 12, &be_const_str_WIEGAND_D1); +be_define_const_str(WIEGAND_D1, "WIEGAND_D1", 4175558140u, 0, 10, &be_const_str_imax); +be_define_const_str(imax, "imax", 3084515410u, 0, 4, NULL); be_define_const_str(SWT1_PD, "SWT1_PD", 4166278953u, 0, 7, NULL); -be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); -be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_AudioGenerator); -be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); -be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_SERIAL_6N1); -be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_SSD1351_CS); -be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_lv_slider); -be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_size); -be_define_const_str(size, "size", 597743964u, 0, 4, NULL); -be_define_const_str(nan, "nan", 797905850u, 0, 3, NULL); -be_define_const_str(PULLDOWN, "PULLDOWN", 1853074086u, 0, 8, &be_const_str_traceback); -be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); -be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, NULL); -be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, NULL); -be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, NULL); -be_define_const_str(detect, "detect", 8884370u, 0, 6, &be_const_str_publish_result); -be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); -be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_set); -be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); -be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_LOW); -be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_MP3_DFR562); -be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_PZEM016_RX); -be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SYMBOL_PASTE); -be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, &be_const_str_arg_name); -be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_deinit); -be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_name); -be_define_const_str(name, "name", 2369371622u, 0, 4, NULL); -be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); -be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); -be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, NULL); -be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, NULL); -be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_HX711_SCK); -be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, NULL); -be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_KEY1_TC); -be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, NULL); +be_define_const_str(GPS_RX, "GPS_RX", 1075637342u, 0, 6, &be_const_str_SERIAL_6O1); +be_define_const_str(SERIAL_6O1, "SERIAL_6O1", 266153272u, 0, 10, &be_const_str_TELEINFO_RX); +be_define_const_str(TELEINFO_RX, "TELEINFO_RX", 1195717356u, 0, 11, &be_const_str_codedump); +be_define_const_str(codedump, "codedump", 1786337906u, 0, 8, NULL); +be_define_const_str(elif, "elif", 3232090307u, 51, 4, NULL); +be_define_const_str(dot_w, ".w", 1255414514u, 0, 2, &be_const_str_SYMBOL_EDIT); +be_define_const_str(SYMBOL_EDIT, "SYMBOL_EDIT", 1396182822u, 0, 11, &be_const_str__end_transmission); +be_define_const_str(_end_transmission, "_end_transmission", 3237480400u, 0, 17, NULL); +be_define_const_str(ZIGBEE_RST, "ZIGBEE_RST", 721588661u, 0, 10, NULL); +be_define_const_str(OPTION_A, "OPTION_A", 1133299440u, 0, 8, NULL); +be_define_const_str(AudioFileSourceFS, "AudioFileSourceFS", 1839147653u, 0, 17, &be_const_str_I2S_OUT_SLCT); +be_define_const_str(I2S_OUT_SLCT, "I2S_OUT_SLCT", 4037293837u, 0, 12, &be_const_str_SYMBOL_KEYBOARD); +be_define_const_str(SYMBOL_KEYBOARD, "SYMBOL_KEYBOARD", 1621492879u, 0, 15, &be_const_str_push); +be_define_const_str(push, "push", 2272264157u, 0, 4, NULL); +be_define_const_str(DHT11_OUT, "DHT11_OUT", 1645300734u, 0, 9, &be_const_str_break); +be_define_const_str(break, "break", 3378807160u, 58, 5, NULL); +be_define_const_str(LE01MR_RX, "LE01MR_RX", 1521590809u, 0, 9, &be_const_str_SERIAL_5O1); +be_define_const_str(SERIAL_5O1, "SERIAL_5O1", 3782657917u, 0, 10, &be_const_str_SHELLY_DIMMER_RST_INV); +be_define_const_str(SHELLY_DIMMER_RST_INV, "SHELLY_DIMMER_RST_INV", 2366759773u, 0, 21, &be_const_str__rules); +be_define_const_str(_rules, "_rules", 4266217105u, 0, 6, NULL); +be_define_const_str(DDS2382_TX, "DDS2382_TX", 1438117864u, 0, 10, &be_const_str_SYMBOL_FILE); +be_define_const_str(SYMBOL_FILE, "SYMBOL_FILE", 237085260u, 0, 11, &be_const_str_remove_cmd); +be_define_const_str(remove_cmd, "remove_cmd", 3832315702u, 0, 10, &be_const_str_remove_rule); +be_define_const_str(remove_rule, "remove_rule", 3456211328u, 0, 11, NULL); +be_define_const_str(SERIAL_6N1, "SERIAL_6N1", 198895701u, 0, 10, &be_const_str_add_cmd); +be_define_const_str(add_cmd, "add_cmd", 3361630879u, 0, 7, &be_const_str_arg); +be_define_const_str(arg, "arg", 1047474471u, 0, 3, NULL); +be_define_const_str(calldepth, "calldepth", 3122364302u, 0, 9, NULL); +be_define_const_str(MGC3130_XFER, "MGC3130_XFER", 4178219131u, 0, 12, &be_const_str_PZEM016_RX); +be_define_const_str(PZEM016_RX, "PZEM016_RX", 1004012055u, 0, 10, &be_const_str_SM2135_CLK); +be_define_const_str(SM2135_CLK, "SM2135_CLK", 2383410011u, 0, 10, &be_const_str_load); +be_define_const_str(load, "load", 3859241449u, 0, 4, NULL); +be_define_const_str(__lower__, "__lower__", 123855590u, 0, 9, &be_const_str_print); +be_define_const_str(print, "print", 372738696u, 0, 5, &be_const_str_try); +be_define_const_str(try, "try", 2887626766u, 68, 3, NULL); +be_define_const_str(SYMBOL_PASTE, "SYMBOL_PASTE", 2281577421u, 0, 12, NULL); +be_define_const_str(dot_p, ".p", 1171526419u, 0, 2, &be_const_str_add_rule); +be_define_const_str(add_rule, "add_rule", 596540743u, 0, 8, NULL); +be_define_const_str(IRSEND, "IRSEND", 184848336u, 0, 6, &be_const_str_SPI_CS); +be_define_const_str(SPI_CS, "SPI_CS", 553701236u, 0, 6, &be_const_str_WEBCAM_SIOD); +be_define_const_str(WEBCAM_SIOD, "WEBCAM_SIOD", 302703242u, 0, 11, &be_const_str_get_switch); +be_define_const_str(get_switch, "get_switch", 164821028u, 0, 10, NULL); +be_define_const_str(MGC3130_RESET, "MGC3130_RESET", 405013121u, 0, 13, &be_const_str_SYMBOL_SETTINGS); +be_define_const_str(SYMBOL_SETTINGS, "SYMBOL_SETTINGS", 339656335u, 0, 15, &be_const_str_WE517_TX); +be_define_const_str(WE517_TX, "WE517_TX", 2954817217u, 0, 8, &be_const_str_setbits); +be_define_const_str(setbits, "setbits", 2762408167u, 0, 7, NULL); +be_define_const_str(FALLING, "FALLING", 2851701064u, 0, 7, &be_const_str_PWM1_INV); +be_define_const_str(PWM1_INV, "PWM1_INV", 3939021030u, 0, 8, NULL); +be_define_const_str(HIGH, "HIGH", 2066738941u, 0, 4, &be_const_str_deg); +be_define_const_str(deg, "deg", 3327754271u, 0, 3, NULL); +be_define_const_str(SYMBOL_OK, "SYMBOL_OK", 4033162940u, 0, 9, NULL); +be_define_const_str(for, "for", 2901640080u, 54, 3, NULL); +be_define_const_str(TXD, "TXD", 3614562079u, 0, 3, &be_const_str_gen_cb); +be_define_const_str(gen_cb, "gen_cb", 3245227551u, 0, 6, &be_const_str_get_option); +be_define_const_str(get_option, "get_option", 2123730033u, 0, 10, NULL); +be_define_const_str(SR04_ECHO, "SR04_ECHO", 1906909592u, 0, 9, &be_const_str_add_header); +be_define_const_str(add_header, "add_header", 927130612u, 0, 10, NULL); +be_define_const_str(BUZZER, "BUZZER", 1550039611u, 0, 6, NULL); +be_define_const_str(ADC_TEMP, "ADC_TEMP", 3771053440u, 0, 8, &be_const_str_PMS5003_RX); +be_define_const_str(PMS5003_RX, "PMS5003_RX", 3934985650u, 0, 10, &be_const_str_ROT1B_NP); +be_define_const_str(ROT1B_NP, "ROT1B_NP", 3710079736u, 0, 8, &be_const_str_Wire); +be_define_const_str(Wire, "Wire", 1938276536u, 0, 4, &be_const_str_members); +be_define_const_str(members, "members", 937576464u, 0, 7, NULL); +be_define_const_str(MCP39F5_TX, "MCP39F5_TX", 1332322047u, 0, 10, &be_const_str_reverse); +be_define_const_str(reverse, "reverse", 558918661u, 0, 7, NULL); +be_define_const_str(KEY1_NP, "KEY1_NP", 709918726u, 0, 7, NULL); +be_define_const_str(EXS_ENABLE, "EXS_ENABLE", 1896914313u, 0, 10, &be_const_str_WEBCAM_SIOC); +be_define_const_str(WEBCAM_SIOC, "WEBCAM_SIOC", 218815147u, 0, 11, &be_const_str_list); +be_define_const_str(list, "list", 217798785u, 0, 4, NULL); +be_define_const_str(SYMBOL_GPS, "SYMBOL_GPS", 3044165570u, 0, 10, &be_const_str_time_str); +be_define_const_str(time_str, "time_str", 2613827612u, 0, 8, NULL); +be_define_const_str(ADC_RANGE, "ADC_RANGE", 3467329543u, 0, 9, &be_const_str_SYMBOL_MUTE); +be_define_const_str(SYMBOL_MUTE, "SYMBOL_MUTE", 563116043u, 0, 11, &be_const_str_add_driver); +be_define_const_str(add_driver, "add_driver", 1654458371u, 0, 10, &be_const_str_erase); +be_define_const_str(erase, "erase", 1010949589u, 0, 5, NULL); +be_define_const_str(remove_driver, "remove_driver", 1030243768u, 0, 13, &be_const_str_write8); +be_define_const_str(write8, "write8", 3133991532u, 0, 6, NULL); +be_define_const_str(MCP39F5_RX, "MCP39F5_RX", 190458217u, 0, 10, &be_const_str__def); +be_define_const_str(_def, "_def", 1985022181u, 0, 4, &be_const_str_lv_font); +be_define_const_str(lv_font, "lv_font", 1550958453u, 0, 7, &be_const_str_resolvecmnd); +be_define_const_str(resolvecmnd, "resolvecmnd", 993361485u, 0, 11, NULL); +be_define_const_str(ILI9341_DC, "ILI9341_DC", 28838624u, 0, 10, NULL); +be_define_const_str(HX711_DAT, "HX711_DAT", 2935118250u, 0, 9, &be_const_str_copy); +be_define_const_str(copy, "copy", 3848464964u, 0, 4, NULL); +be_define_const_str(RFRECV, "RFRECV", 354742801u, 0, 6, NULL); +be_define_const_str(SSPI_MISO, "SSPI_MISO", 2485347173u, 0, 9, &be_const_str_member); +be_define_const_str(member, "member", 719708611u, 0, 6, NULL); +be_define_const_str(A4988_ENA, "A4988_ENA", 1517502682u, 0, 9, &be_const_str_tomap); +be_define_const_str(tomap, "tomap", 612167626u, 0, 5, &be_const_str_web_send_decimal); +be_define_const_str(web_send_decimal, "web_send_decimal", 1407210204u, 0, 16, &be_const_str_wire); +be_define_const_str(wire, "wire", 4082753944u, 0, 4, NULL); +be_define_const_str(SDM120_RX, "SDM120_RX", 1367571753u, 0, 9, &be_const_str__available); +be_define_const_str(_available, "_available", 1306196581u, 0, 10, NULL); +be_define_const_str(lv_indev, "lv_indev", 225602374u, 0, 8, &be_const_str_continue); +be_define_const_str(continue, "continue", 2977070660u, 59, 8, NULL); be_define_const_str(pow, "pow", 1479764693u, 0, 3, NULL); -be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, NULL); -be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, &be_const_str_HRE_CLOCK); -be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, NULL); -be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_lv_table); -be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, NULL); -be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_input); -be_define_const_str(input, "input", 4191711099u, 0, 5, &be_const_str_select); +be_define_const_str(SYMBOL_PAUSE, "SYMBOL_PAUSE", 641998172u, 0, 12, &be_const_str_WEBCAM_HSD); +be_define_const_str(WEBCAM_HSD, "WEBCAM_HSD", 2648502504u, 0, 10, &be_const_str_reset); +be_define_const_str(reset, "reset", 1695364032u, 0, 5, &be_const_str_import); +be_define_const_str(import, "import", 288002260u, 66, 6, &be_const_str_var); +be_define_const_str(var, "var", 2317739966u, 64, 3, NULL); +be_define_const_str(SYMBOL_USB, "SYMBOL_USB", 1962656552u, 0, 10, NULL); +be_define_const_str(WEBCAM_DATA, "WEBCAM_DATA", 1476954421u, 0, 11, &be_const_str_tostring); +be_define_const_str(tostring, "tostring", 2299708645u, 0, 8, NULL); +be_define_const_str(pin_mode, "pin_mode", 3258314030u, 0, 8, &be_const_str_shared_key); +be_define_const_str(shared_key, "shared_key", 2200833624u, 0, 10, NULL); +be_define_const_str(SYMBOL_WIFI, "SYMBOL_WIFI", 682141303u, 0, 11, &be_const_str_WE517_RX); +be_define_const_str(WE517_RX, "WE517_RX", 4096577879u, 0, 8, &be_const_str__write); +be_define_const_str(_write, "_write", 2215462825u, 0, 6, &be_const_str_input); +be_define_const_str(input, "input", 4191711099u, 0, 5, NULL); +be_define_const_str(WEBCAM_RESET, "WEBCAM_RESET", 2171221520u, 0, 12, &be_const_str_XPT2046_CS); +be_define_const_str(XPT2046_CS, "XPT2046_CS", 4049231042u, 0, 10, &be_const_str_ZIGBEE_RX); +be_define_const_str(ZIGBEE_RX, "ZIGBEE_RX", 93215470u, 0, 9, &be_const_str_lv_chart); +be_define_const_str(lv_chart, "lv_chart", 2652494144u, 0, 8, &be_const_str_write_bit); +be_define_const_str(write_bit, "write_bit", 2660990436u, 0, 9, NULL); +be_define_const_str(I2S_OUT_DATA, "I2S_OUT_DATA", 1176288293u, 0, 12, &be_const_str_RISING); +be_define_const_str(RISING, "RISING", 1256404539u, 0, 6, &be_const_str_floor); +be_define_const_str(floor, "floor", 3102149661u, 0, 5, NULL); +be_define_const_str(AS608_RX, "AS608_RX", 4275502016u, 0, 8, &be_const_str_NRF24_CS); +be_define_const_str(NRF24_CS, "NRF24_CS", 555833194u, 0, 8, &be_const_str_classname); +be_define_const_str(classname, "classname", 1998589948u, 0, 9, &be_const_str_lv_btn); +be_define_const_str(lv_btn, "lv_btn", 1612829968u, 0, 6, NULL); +be_define_const_str(SYMBOL_AUDIO, "SYMBOL_AUDIO", 3056537956u, 0, 12, &be_const_str_rand); +be_define_const_str(rand, "rand", 2711325910u, 0, 4, NULL); +be_define_const_str(top, "top", 2802900028u, 0, 3, NULL); +be_define_const_str(SWT1_NP, "SWT1_NP", 4033043739u, 0, 7, &be_const_str_SYMBOL_HOME); +be_define_const_str(SYMBOL_HOME, "SYMBOL_HOME", 730845525u, 0, 11, NULL); +be_define_const_str(INPUT_PULLUP, "INPUT_PULLUP", 2912931654u, 0, 12, &be_const_str_KEY1_INV_NP); +be_define_const_str(KEY1_INV_NP, "KEY1_INV_NP", 3160558586u, 0, 11, &be_const_str_TASMOTACLIENT_TXD); +be_define_const_str(TASMOTACLIENT_TXD, "TASMOTACLIENT_TXD", 1386193940u, 0, 17, &be_const_str_exec_rules); +be_define_const_str(exec_rules, "exec_rules", 1445221092u, 0, 10, NULL); +be_define_const_str(SAIR_RX, "SAIR_RX", 1273688713u, 0, 7, &be_const_str_SERIAL_6O2); +be_define_const_str(SERIAL_6O2, "SERIAL_6O2", 316486129u, 0, 10, &be_const_str_open); +be_define_const_str(open, "open", 3546203337u, 0, 4, NULL); +be_define_const_str(SPI_CLK, "SPI_CLK", 3943233814u, 0, 7, &be_const_str_encrypt); +be_define_const_str(encrypt, "encrypt", 2194327650u, 0, 7, NULL); +be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_TM1637CLK); +be_define_const_str(TM1637CLK, "TM1637CLK", 2797300857u, 0, 9, NULL); +be_define_const_str(AudioGenerator, "AudioGenerator", 1839297342u, 0, 14, NULL); +be_define_const_str(PROJECTOR_CTRL_RX, "PROJECTOR_CTRL_RX", 1542762460u, 0, 17, &be_const_str_WEBCAM_PSRCS); +be_define_const_str(WEBCAM_PSRCS, "WEBCAM_PSRCS", 624464864u, 0, 12, &be_const_str__timers); +be_define_const_str(_timers, "_timers", 2600100916u, 0, 7, NULL); +be_define_const_str(ROT1A_NP, "ROT1A_NP", 2322706903u, 0, 8, &be_const_str_SDM630_TX); +be_define_const_str(SDM630_TX, "SDM630_TX", 696213075u, 0, 9, &be_const_str_assert); +be_define_const_str(assert, "assert", 2774883451u, 0, 6, NULL); +be_define_const_str(CSE7761_TX, "CSE7761_TX", 3354719142u, 0, 10, &be_const_str_HPMA_RX); +be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, NULL); +be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_cb_dispatch); +be_define_const_str(cb_dispatch, "cb_dispatch", 1741510499u, 0, 11, &be_const_str_select); be_define_const_str(select, "select", 297952813u, 0, 6, NULL); -be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, NULL); -be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_EC_C25519); -be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, NULL); -be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_ST7789_CS); -be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, &be_const_str_lv_label); -be_define_const_str(lv_label, "lv_label", 4199664246u, 0, 8, &be_const_str_lv_style); -be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); -be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_RA8876_CS); -be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_item); -be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); -be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, &be_const_str_attrdump); -be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_read32); -be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); -be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SYMBOL_EJECT); -be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, NULL); -be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_SERIAL_7O1); -be_define_const_str(SERIAL_7O1, "SERIAL_7O1", 1823802675u, 0, 10, &be_const_str_TCP_TX); -be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); -be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_fromstring); -be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); -be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, NULL); -be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_def); -be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); -be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_SYMBOL_VOLUME_MID); -be_define_const_str(SYMBOL_VOLUME_MID, "SYMBOL_VOLUME_MID", 158835057u, 0, 17, NULL); -be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); -be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_SERIAL_8N2); -be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_SYMBOL_NEXT); -be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); -be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); -be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_resp_cmnd_error); -be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); -be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, &be_const_str_SM16716_SEL); -be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_exp); -be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_lv_cb); -be_define_const_str(lv_cb, "lv_cb", 1389787433u, 0, 5, NULL); -be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, &be_const_str_tomap); -be_define_const_str(tomap, "tomap", 612167626u, 0, 5, NULL); -be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_EPAPER42_CS); -be_define_const_str(EPAPER42_CS, "EPAPER42_CS", 3274717451u, 0, 11, &be_const_str_HPMA_RX); -be_define_const_str(HPMA_RX, "HPMA_RX", 3462528998u, 0, 7, &be_const_str_SHELLY_DIMMER_BOOT0); -be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_number); -be_define_const_str(number, "number", 467038368u, 0, 6, NULL); -be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str_set_power); +be_define_const_str(SERIAL_8N1, "SERIAL_8N1", 2369297235u, 0, 10, &be_const_str_TASMOTACLIENT_RST); +be_define_const_str(TASMOTACLIENT_RST, "TASMOTACLIENT_RST", 3326196213u, 0, 17, &be_const_str_arg_name); +be_define_const_str(arg_name, "arg_name", 1345046155u, 0, 8, &be_const_str_lv_img); +be_define_const_str(lv_img, "lv_img", 2474052327u, 0, 6, NULL); +be_define_const_str(lv_switch, "lv_switch", 3407171508u, 0, 9, &be_const_str_set_timeouts); +be_define_const_str(set_timeouts, "set_timeouts", 3732850900u, 0, 12, NULL); +be_define_const_str(SDM120_TX, "SDM120_TX", 2509332415u, 0, 9, &be_const_str_class); +be_define_const_str(class, "class", 2872970239u, 57, 5, NULL); +be_define_const_str(SSPI_DC, "SSPI_DC", 1782271864u, 0, 7, NULL); +be_define_const_str(SYMBOL_UPLOAD, "SYMBOL_UPLOAD", 3293679647u, 0, 13, &be_const_str_SYMBOL_VOLUME_MAX); +be_define_const_str(SYMBOL_VOLUME_MAX, "SYMBOL_VOLUME_MAX", 3582646093u, 0, 17, &be_const_str_init); +be_define_const_str(init, "init", 380752755u, 0, 4, &be_const_str_try_rule); +be_define_const_str(try_rule, "try_rule", 1986449405u, 0, 8, NULL); +be_define_const_str(eth, "eth", 2191266556u, 0, 3, NULL); +be_define_const_str(LED1_INV, "LED1_INV", 2112045097u, 0, 8, NULL); +be_define_const_str(HALLEFFECT, "HALLEFFECT", 3334305407u, 0, 10, &be_const_str_lv_led); +be_define_const_str(lv_led, "lv_led", 3192184733u, 0, 6, NULL); +be_define_const_str(IBEACON_RX, "IBEACON_RX", 2466155575u, 0, 10, &be_const_str_close); +be_define_const_str(close, "close", 667630371u, 0, 5, NULL); +be_define_const_str(imin, "imin", 2714127864u, 0, 4, NULL); +be_define_const_str(content_start, "content_start", 2937509069u, 0, 13, &be_const_str_serial); +be_define_const_str(serial, "serial", 3687697785u, 0, 6, NULL); +be_define_const_str(classof, "classof", 1796577762u, 0, 7, NULL); +be_define_const_str(SYMBOL_SAVE, "SYMBOL_SAVE", 2439821015u, 0, 11, &be_const_str_fromb64); +be_define_const_str(fromb64, "fromb64", 2717019639u, 0, 7, &be_const_str_get_free_heap); +be_define_const_str(get_free_heap, "get_free_heap", 625069757u, 0, 13, &be_const_str_read8); +be_define_const_str(read8, "read8", 2802788167u, 0, 5, &be_const_str_set_power); be_define_const_str(set_power, "set_power", 549820893u, 0, 9, NULL); +be_define_const_str(MAX31855DO, "MAX31855DO", 552730368u, 0, 10, &be_const_str_bytes); +be_define_const_str(bytes, "bytes", 1706151940u, 0, 5, &be_const_str_lv_arc); +be_define_const_str(lv_arc, "lv_arc", 4170125384u, 0, 6, &be_const_str_nil); +be_define_const_str(nil, "nil", 228849900u, 63, 3, NULL); +be_define_const_str(NRG_SEL_INV, "NRG_SEL_INV", 3567431069u, 0, 11, &be_const_str_SYMBOL_LEFT); +be_define_const_str(SYMBOL_LEFT, "SYMBOL_LEFT", 1563517575u, 0, 11, NULL); +be_define_const_str(DDSU666_TX, "DDSU666_TX", 1880604150u, 0, 10, NULL); +be_define_const_str(sin, "sin", 3761252941u, 0, 3, &be_const_str_sqrt); +be_define_const_str(sqrt, "sqrt", 2112764879u, 0, 4, &be_const_str_time_reached); +be_define_const_str(time_reached, "time_reached", 2075136773u, 0, 12, NULL); +be_define_const_str(ZIGBEE_TX, "ZIGBEE_TX", 25119256u, 0, 9, NULL); +be_define_const_str(HRE_CLOCK, "HRE_CLOCK", 2870559111u, 0, 9, &be_const_str_RXD); +be_define_const_str(RXD, "RXD", 2311579049u, 0, 3, NULL); +be_define_const_str(PZEM017_RX, "PZEM017_RX", 3227495894u, 0, 10, &be_const_str_WEBCAM_PWDN); +be_define_const_str(WEBCAM_PWDN, "WEBCAM_PWDN", 2219597454u, 0, 11, &be_const_str_lv_msgbox); +be_define_const_str(lv_msgbox, "lv_msgbox", 689085206u, 0, 9, NULL); +be_define_const_str(srand, "srand", 465518633u, 0, 5, NULL); +be_define_const_str(FTC532, "FTC532", 3182343438u, 0, 6, &be_const_str_SSPI_SCLK); +be_define_const_str(SSPI_SCLK, "SSPI_SCLK", 136688954u, 0, 9, &be_const_str_item); +be_define_const_str(item, "item", 2671260646u, 0, 4, NULL); +be_define_const_str(acos, "acos", 1006755615u, 0, 4, &be_const_str_strftime); +be_define_const_str(strftime, "strftime", 187738851u, 0, 8, NULL); +be_define_const_str(PWM1, "PWM1", 1353352426u, 0, 4, &be_const_str_SYMBOL_CALL); +be_define_const_str(SYMBOL_CALL, "SYMBOL_CALL", 1444504366u, 0, 11, &be_const_str_format); +be_define_const_str(format, "format", 3114108242u, 0, 6, &be_const_str_while); +be_define_const_str(while, "while", 231090382u, 53, 5, NULL); +be_define_const_str(SSD1351_DC, "SSD1351_DC", 84950353u, 0, 10, &be_const_str_as); +be_define_const_str(as, "as", 1579491469u, 67, 2, NULL); +be_define_const_str(CSE7766_RX, "CSE7766_RX", 1546766819u, 0, 10, &be_const_str_atan); +be_define_const_str(atan, "atan", 108579519u, 0, 4, &be_const_str_get_power); +be_define_const_str(get_power, "get_power", 3009799377u, 0, 9, &be_const_str_true); +be_define_const_str(true, "true", 1303515621u, 61, 4, NULL); +be_define_const_str(SERIAL_5E2, "SERIAL_5E2", 1180552854u, 0, 10, &be_const_str_SYMBOL_LOOP); +be_define_const_str(SYMBOL_LOOP, "SYMBOL_LOOP", 2762053208u, 0, 11, &be_const_str_add); +be_define_const_str(add, "add", 993596020u, 0, 3, &be_const_str_addr); +be_define_const_str(addr, "addr", 1087856498u, 0, 4, NULL); +be_define_const_str(INPUT, "INPUT", 1638025307u, 0, 5, &be_const_str_SSPI_CS); +be_define_const_str(SSPI_CS, "SSPI_CS", 977784795u, 0, 7, &be_const_str___iterator__); +be_define_const_str(__iterator__, "__iterator__", 3884039703u, 0, 12, NULL); +be_define_const_str(pi, "pi", 1213090802u, 0, 2, &be_const_str_yield); +be_define_const_str(yield, "yield", 1821831854u, 0, 5, NULL); +be_define_const_str(MHZ_TXD, "MHZ_TXD", 3310158233u, 0, 7, &be_const_str_type); +be_define_const_str(type, "type", 1361572173u, 0, 4, NULL); +be_define_const_str(SYMBOL_DUMMY, "SYMBOL_DUMMY", 3621732138u, 0, 12, &be_const_str_chars_in_string); +be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_seti); +be_define_const_str(seti, "seti", 1500556254u, 0, 4, NULL); +be_define_const_str(MHZ_RXD, "MHZ_RXD", 328619727u, 0, 7, &be_const_str_event); +be_define_const_str(event, "event", 4264611999u, 0, 5, NULL); +be_define_const_str(PMS5003_TX, "PMS5003_TX", 3868169364u, 0, 10, &be_const_str_SPI_MOSI); +be_define_const_str(SPI_MOSI, "SPI_MOSI", 2494218614u, 0, 8, &be_const_str_WINDMETER_SPEED); +be_define_const_str(WINDMETER_SPEED, "WINDMETER_SPEED", 1980822204u, 0, 15, &be_const_str_setitem); +be_define_const_str(setitem, "setitem", 1554834596u, 0, 7, NULL); +be_define_const_str(SDCARD_CS, "SDCARD_CS", 3348952003u, 0, 9, &be_const_str_SDM72_TX); +be_define_const_str(SDM72_TX, "SDM72_TX", 2042143269u, 0, 8, &be_const_str_SYMBOL_POWER); +be_define_const_str(SYMBOL_POWER, "SYMBOL_POWER", 1125993627u, 0, 12, &be_const_str_wire1); +be_define_const_str(wire1, "wire1", 3212721419u, 0, 5, NULL); +be_define_const_str(AudioOutput, "AudioOutput", 3257792048u, 0, 11, &be_const_str__request_from); +be_define_const_str(_request_from, "_request_from", 3965148604u, 0, 13, NULL); +be_define_const_str(DYP_RX, "DYP_RX", 2122310285u, 0, 6, &be_const_str_GET); +be_define_const_str(GET, "GET", 2531704439u, 0, 3, &be_const_str_lv_dropdown); +be_define_const_str(lv_dropdown, "lv_dropdown", 2797165301u, 0, 11, &be_const_str_remove_timer); +be_define_const_str(remove_timer, "remove_timer", 4141472215u, 0, 12, &be_const_str_url_encode); +be_define_const_str(url_encode, "url_encode", 528392145u, 0, 10, NULL); +be_define_const_str(available, "available", 1727918744u, 0, 9, &be_const_str_super); +be_define_const_str(super, "super", 4152230356u, 0, 5, NULL); +be_define_const_str(BL0940_RX, "BL0940_RX", 2908993179u, 0, 9, &be_const_str_INPUT_PULLDOWN); +be_define_const_str(INPUT_PULLDOWN, "INPUT_PULLDOWN", 1172232591u, 0, 14, &be_const_str_SBR_TX); +be_define_const_str(SBR_TX, "SBR_TX", 3419096015u, 0, 6, NULL); +be_define_const_str(DEEPSLEEP, "DEEPSLEEP", 189922226u, 0, 9, &be_const_str_HM10_RX); +be_define_const_str(HM10_RX, "HM10_RX", 515085922u, 0, 7, &be_const_str_MIEL_HVAC_TX); +be_define_const_str(MIEL_HVAC_TX, "MIEL_HVAC_TX", 567403014u, 0, 12, &be_const_str_get_light); +be_define_const_str(get_light, "get_light", 381930476u, 0, 9, &be_const_str_setrange); +be_define_const_str(setrange, "setrange", 3794019032u, 0, 8, NULL); +be_define_const_str(DCKI, "DCKI", 3846847480u, 0, 4, &be_const_str_set_auth); +be_define_const_str(set_auth, "set_auth", 1057170930u, 0, 8, NULL); +be_define_const_str(response_append, "response_append", 450346371u, 0, 15, NULL); +be_define_const_str(ADC_LIGHT, "ADC_LIGHT", 3982461502u, 0, 9, &be_const_str_scale_uint); +be_define_const_str(scale_uint, "scale_uint", 3090811094u, 0, 10, NULL); +be_define_const_str(HLW_CF, "HLW_CF", 3982619486u, 0, 6, &be_const_str_scan); +be_define_const_str(scan, "scan", 3974641896u, 0, 4, NULL); +be_define_const_str(NRG_SEL, "NRG_SEL", 1771358125u, 0, 7, &be_const_str_get); +be_define_const_str(get, "get", 1410115415u, 0, 3, &be_const_str_lv_obj); +be_define_const_str(lv_obj, "lv_obj", 4257833149u, 0, 6, NULL); +be_define_const_str(EPAPER29_CS, "EPAPER29_CS", 3916373594u, 0, 11, &be_const_str_SERIAL_7O2); +be_define_const_str(SERIAL_7O2, "SERIAL_7O2", 1840580294u, 0, 10, &be_const_str_update); +be_define_const_str(update, "update", 672109684u, 0, 6, NULL); +be_define_const_str(BS814_DAT, "BS814_DAT", 3620403837u, 0, 9, &be_const_str_ctypes_bytes); +be_define_const_str(ctypes_bytes, "ctypes_bytes", 3879019703u, 0, 12, NULL); +be_define_const_str(opt_call, "()", 685372826u, 0, 2, &be_const_str__cmd); +be_define_const_str(_cmd, "_cmd", 3419822142u, 0, 4, NULL); +be_define_const_str(BOILER_OT_TX, "BOILER_OT_TX", 671743623u, 0, 12, &be_const_str_WEBCAM_XCLK); +be_define_const_str(WEBCAM_XCLK, "WEBCAM_XCLK", 536207425u, 0, 11, &be_const_str_stop); +be_define_const_str(stop, "stop", 3411225317u, 0, 4, NULL); +be_define_const_str(SYMBOL_TRASH, "SYMBOL_TRASH", 3169100368u, 0, 12, &be_const_str_load_freetype_font); +be_define_const_str(load_freetype_font, "load_freetype_font", 2368447592u, 0, 18, NULL); +be_define_const_str(asstring, "asstring", 1298225088u, 0, 8, NULL); +be_define_const_str(CC1101_GDO2, "CC1101_GDO2", 974166265u, 0, 11, &be_const_str_HRE_DATA); +be_define_const_str(HRE_DATA, "HRE_DATA", 1820377643u, 0, 8, &be_const_str_MP3_DFR562); +be_define_const_str(MP3_DFR562, "MP3_DFR562", 2859952977u, 0, 10, &be_const_str_content_flush); +be_define_const_str(content_flush, "content_flush", 214922475u, 0, 13, NULL); +be_define_const_str(DDSU666_RX, "DDSU666_RX", 1812507936u, 0, 10, &be_const_str_PN532_TXD); +be_define_const_str(PN532_TXD, "PN532_TXD", 3093418644u, 0, 9, &be_const_str_SERIAL_7E2); +be_define_const_str(SERIAL_7E2, "SERIAL_7E2", 97385204u, 0, 10, &be_const_str_SYMBOL_EYE_OPEN); +be_define_const_str(SYMBOL_EYE_OPEN, "SYMBOL_EYE_OPEN", 3449311676u, 0, 15, &be_const_str_number); +be_define_const_str(number, "number", 467038368u, 0, 6, &be_const_str_pop); +be_define_const_str(pop, "pop", 1362321360u, 0, 3, NULL); +be_define_const_str(WIEGAND_D0, "WIEGAND_D0", 4192335759u, 0, 10, NULL); +be_define_const_str(global, "global", 503252654u, 0, 6, &be_const_str_lower); +be_define_const_str(lower, "lower", 3038577850u, 0, 5, &be_const_str_end); +be_define_const_str(end, "end", 1787721130u, 56, 3, NULL); +be_define_const_str(LMT01, "LMT01", 2490623797u, 0, 5, &be_const_str_depower); +be_define_const_str(depower, "depower", 3563819571u, 0, 7, &be_const_str_lv_btnmatrix); +be_define_const_str(lv_btnmatrix, "lv_btnmatrix", 626248489u, 0, 12, NULL); +be_define_const_str(SYMBOL_PLUS, "SYMBOL_PLUS", 2860093262u, 0, 11, NULL); +be_define_const_str(load_font, "load_font", 1875840019u, 0, 9, &be_const_str_log); +be_define_const_str(log, "log", 1062293841u, 0, 3, NULL); +be_define_const_str(resp_cmnd, "resp_cmnd", 2869459626u, 0, 9, NULL); +be_define_const_str(lv_meter, "lv_meter", 2603676121u, 0, 8, NULL); +be_define_const_str(NRG_CF1, "NRG_CF1", 3292534757u, 0, 7, &be_const_str_lv_slider); +be_define_const_str(lv_slider, "lv_slider", 2274180781u, 0, 9, &be_const_str_upper); +be_define_const_str(upper, "upper", 176974407u, 0, 5, NULL); +be_define_const_str(DSB, "DSB", 98073254u, 0, 3, &be_const_str_I2C_Driver); +be_define_const_str(I2C_Driver, "I2C_Driver", 1714501658u, 0, 10, NULL); +be_define_const_str(SSD1351_CS, "SSD1351_CS", 488746042u, 0, 10, &be_const_str_WEBCAM_VSYNC); +be_define_const_str(WEBCAM_VSYNC, "WEBCAM_VSYNC", 4032882166u, 0, 12, &be_const_str_web_send); +be_define_const_str(web_send, "web_send", 2989941448u, 0, 8, NULL); +be_define_const_str(SYMBOL_BATTERY_1, "SYMBOL_BATTERY_1", 629036063u, 0, 16, &be_const_str_SYMBOL_NEXT); +be_define_const_str(SYMBOL_NEXT, "SYMBOL_NEXT", 1102844455u, 0, 11, NULL); +be_define_const_str(ADC_BUTTON_INV, "ADC_BUTTON_INV", 2027625326u, 0, 14, &be_const_str_KEY1_INV_PD); +be_define_const_str(KEY1_INV_PD, "KEY1_INV_PD", 3828014584u, 0, 11, &be_const_str_SM16716_DAT); +be_define_const_str(SM16716_DAT, "SM16716_DAT", 1905621806u, 0, 11, &be_const_str_deinit); +be_define_const_str(deinit, "deinit", 2345559592u, 0, 6, &be_const_str_hex); +be_define_const_str(hex, "hex", 4273249610u, 0, 3, &be_const_str_register_button_encoder); +be_define_const_str(register_button_encoder, "register_button_encoder", 2811301550u, 0, 23, NULL); +be_define_const_str(DAC, "DAC", 788912847u, 0, 3, &be_const_str_tolower); +be_define_const_str(tolower, "tolower", 1042520049u, 0, 7, NULL); +be_define_const_str(PZEM004_RX, "PZEM004_RX", 3411153194u, 0, 10, &be_const_str_SERIAL_8E1); +be_define_const_str(SERIAL_8E1, "SERIAL_8E1", 2371121616u, 0, 10, &be_const_str_tan); +be_define_const_str(tan, "tan", 2633446552u, 0, 3, NULL); +be_define_const_str(ST7789_DC, "ST7789_DC", 2533509745u, 0, 9, NULL); +be_define_const_str(KEY1_PD, "KEY1_PD", 3934075620u, 0, 7, NULL); +be_define_const_str(KEY1_TC, "KEY1_TC", 25685109u, 0, 7, &be_const_str_LEDLNK); +be_define_const_str(LEDLNK, "LEDLNK", 2862810701u, 0, 6, &be_const_str_cmd); +be_define_const_str(cmd, "cmd", 4136785899u, 0, 3, &be_const_str_content_send_style); +be_define_const_str(content_send_style, "content_send_style", 1087907647u, 0, 18, NULL); +be_define_const_str(OUTPUT_OPEN_DRAIN, "OUTPUT_OPEN_DRAIN", 2147249436u, 0, 17, &be_const_str_SERIAL_5N1); +be_define_const_str(SERIAL_5N1, "SERIAL_5N1", 3313031680u, 0, 10, &be_const_str_SYMBOL_BULLET); +be_define_const_str(SYMBOL_BULLET, "SYMBOL_BULLET", 587181862u, 0, 13, &be_const_str_allocated); +be_define_const_str(allocated, "allocated", 429986098u, 0, 9, &be_const_str_check_privileged_access); +be_define_const_str(check_privileged_access, "check_privileged_access", 3692933968u, 0, 23, &be_const_str_fromstring); +be_define_const_str(fromstring, "fromstring", 610302344u, 0, 10, NULL); +be_define_const_str(OLED_RESET, "OLED_RESET", 4048987655u, 0, 10, &be_const_str_dump); +be_define_const_str(dump, "dump", 3663001223u, 0, 4, NULL); +be_define_const_str(resp_cmnd_str, "resp_cmnd_str", 737845590u, 0, 13, NULL); +be_define_const_str(SBR_RX, "SBR_RX", 3350999801u, 0, 6, &be_const_str_lv_spinbox); +be_define_const_str(lv_spinbox, "lv_spinbox", 2666096729u, 0, 10, &be_const_str_resp_cmnd_done); +be_define_const_str(resp_cmnd_done, "resp_cmnd_done", 2601874875u, 0, 14, &be_const_str_set); +be_define_const_str(set, "set", 3324446467u, 0, 3, NULL); +be_define_const_str(ETH_PHY_MDIO, "ETH_PHY_MDIO", 3261871568u, 0, 12, &be_const_str_exp); +be_define_const_str(exp, "exp", 1923516200u, 0, 3, &be_const_str_find_key_i); +be_define_const_str(find_key_i, "find_key_i", 850136726u, 0, 10, NULL); +be_define_const_str(A4988_STP, "A4988_STP", 1622172049u, 0, 9, &be_const_str_TASMOTACLIENT_RST_INV); +be_define_const_str(TASMOTACLIENT_RST_INV, "TASMOTACLIENT_RST_INV", 2601785365u, 0, 21, NULL); +be_define_const_str(dot_len, ".len", 850842136u, 0, 4, &be_const_str_ADE7953_IRQ); +be_define_const_str(ADE7953_IRQ, "ADE7953_IRQ", 2329185922u, 0, 11, &be_const_str_NEOPOOL_RX); +be_define_const_str(NEOPOOL_RX, "NEOPOOL_RX", 1917974474u, 0, 10, &be_const_str_SYMBOL_STOP); +be_define_const_str(SYMBOL_STOP, "SYMBOL_STOP", 2836505202u, 0, 11, NULL); +be_define_const_str(IBEACON_TX, "IBEACON_TX", 3471826977u, 0, 10, NULL); +be_define_const_str(ADC_JOY, "ADC_JOY", 1116943612u, 0, 7, &be_const_str_SYMBOL_DOWNLOAD); +be_define_const_str(SYMBOL_DOWNLOAD, "SYMBOL_DOWNLOAD", 2607324090u, 0, 15, NULL); +be_define_const_str(SERIAL_8O2, "SERIAL_8O2", 272345123u, 0, 10, NULL); +be_define_const_str(lv_colorwheel, "lv_colorwheel", 1107232566u, 0, 13, NULL); +be_define_const_str(opt_eq, "==", 2431966415u, 0, 2, &be_const_str_BOILER_OT_RX); +be_define_const_str(BOILER_OT_RX, "BOILER_OT_RX", 603647409u, 0, 12, &be_const_str_SERIAL_6E2); +be_define_const_str(SERIAL_6E2, "SERIAL_6E2", 317471867u, 0, 10, &be_const_str_collect); +be_define_const_str(collect, "collect", 2399039025u, 0, 7, NULL); +be_define_const_str(SM16716_SEL, "SM16716_SEL", 142377379u, 0, 11, &be_const_str_SYMBOL_COPY); +be_define_const_str(SYMBOL_COPY, "SYMBOL_COPY", 4193681815u, 0, 11, &be_const_str_flush); +be_define_const_str(flush, "flush", 3002334877u, 0, 5, NULL); +be_define_const_str(decrypt, "decrypt", 2886974618u, 0, 7, &be_const_str_resp_cmnd_failed); +be_define_const_str(resp_cmnd_failed, "resp_cmnd_failed", 2136281562u, 0, 16, NULL); +be_define_const_str(A4988_DIR, "A4988_DIR", 2223595843u, 0, 9, &be_const_str_MAX7219DIN); +be_define_const_str(MAX7219DIN, "MAX7219DIN", 380687049u, 0, 10, &be_const_str_SR04_TRIG); +be_define_const_str(SR04_TRIG, "SR04_TRIG", 68671263u, 0, 9, NULL); +be_define_const_str(ceil, "ceil", 1659167240u, 0, 4, &be_const_str_size); +be_define_const_str(size, "size", 597743964u, 0, 4, NULL); +be_define_const_str(KEY1_INV, "KEY1_INV", 263542563u, 0, 8, &be_const_str_byte); +be_define_const_str(byte, "byte", 1683620383u, 0, 4, &be_const_str_content_send); +be_define_const_str(content_send, "content_send", 1673733649u, 0, 12, &be_const_str_i2c_enabled); +be_define_const_str(i2c_enabled, "i2c_enabled", 218388101u, 0, 11, NULL); +be_define_const_str(SYMBOL_BLUETOOTH, "SYMBOL_BLUETOOTH", 679376572u, 0, 16, &be_const_str_lv_line); +be_define_const_str(lv_line, "lv_line", 2692732914u, 0, 7, &be_const_str_publish); +be_define_const_str(publish, "publish", 264247304u, 0, 7, NULL); +be_define_const_str(dot_p2, ".p2", 232398067u, 0, 3, &be_const_str_ADC_CT_POWER); +be_define_const_str(ADC_CT_POWER, "ADC_CT_POWER", 3382284599u, 0, 12, &be_const_str_TM1638STB); +be_define_const_str(TM1638STB, "TM1638STB", 823674593u, 0, 9, NULL); +be_define_const_str(AS608_TX, "AS608_TX", 48630934u, 0, 8, &be_const_str_MAX7219CS); +be_define_const_str(MAX7219CS, "MAX7219CS", 2593198244u, 0, 9, &be_const_str_SOLAXX1_RX); +be_define_const_str(SOLAXX1_RX, "SOLAXX1_RX", 971867054u, 0, 10, &be_const_str_WEBCAM_HREF); +be_define_const_str(WEBCAM_HREF, "WEBCAM_HREF", 3161890024u, 0, 11, &be_const_str_WS2812); +be_define_const_str(WS2812, "WS2812", 3539741218u, 0, 6, NULL); +be_define_const_str(DHT11, "DHT11", 367083569u, 0, 5, &be_const_str_lv_bar); +be_define_const_str(lv_bar, "lv_bar", 1582673229u, 0, 6, &be_const_str_reset_search); +be_define_const_str(reset_search, "reset_search", 1350414305u, 0, 12, NULL); +be_define_const_str(write, "write", 3190202204u, 0, 5, NULL); +be_define_const_str(finish, "finish", 1494643858u, 0, 6, NULL); +be_define_const_str(SYMBOL_DIRECTORY, "SYMBOL_DIRECTORY", 1886053449u, 0, 16, &be_const_str_SYMBOL_IMAGE); +be_define_const_str(SYMBOL_IMAGE, "SYMBOL_IMAGE", 815601151u, 0, 12, NULL); +be_define_const_str(SYMBOL_MINUS, "SYMBOL_MINUS", 1806749158u, 0, 12, &be_const_str_SYMBOL_RIGHT); +be_define_const_str(SYMBOL_RIGHT, "SYMBOL_RIGHT", 2984010648u, 0, 12, &be_const_str_TASMOTACLIENT_RXD); +be_define_const_str(TASMOTACLIENT_RXD, "TASMOTACLIENT_RXD", 72868318u, 0, 17, NULL); +be_define_const_str(_ccmd, "_ccmd", 2163421413u, 0, 5, &be_const_str_last_modified); +be_define_const_str(last_modified, "last_modified", 772177145u, 0, 13, NULL); +be_define_const_str(GPS_TX, "GPS_TX", 4228740808u, 0, 6, &be_const_str__get_cb); +be_define_const_str(_get_cb, "_get_cb", 1448849122u, 0, 7, NULL); +be_define_const_str(SYMBOL_BATTERY_FULL, "SYMBOL_BATTERY_FULL", 2638935545u, 0, 19, &be_const_str_exists); +be_define_const_str(exists, "exists", 1002329533u, 0, 6, NULL); +be_define_const_str(save, "save", 3439296072u, 0, 4, NULL); be_define_const_str(SERIAL_7N2, "SERIAL_7N2", 1874282627u, 0, 10, NULL); -be_define_const_str(SYMBOL_BATTERY_3, "SYMBOL_BATTERY_3", 662591301u, 0, 16, &be_const_str_bus); -be_define_const_str(bus, "bus", 1607822841u, 0, 3, &be_const_str_chars_in_string); -be_define_const_str(chars_in_string, "chars_in_string", 3148785132u, 0, 15, &be_const_str_init); -be_define_const_str(init, "init", 380752755u, 0, 4, NULL); +be_define_const_str(SWT1, "SWT1", 805224112u, 0, 4, NULL); +be_define_const_str(MAX7219CLK, "MAX7219CLK", 963568838u, 0, 10, &be_const_str_SYMBOL_SD_CARD); +be_define_const_str(SYMBOL_SD_CARD, "SYMBOL_SD_CARD", 2542376484u, 0, 14, &be_const_str_set_useragent); +be_define_const_str(set_useragent, "set_useragent", 612237244u, 0, 13, NULL); +be_define_const_str(SERIAL_7E1, "SERIAL_7E1", 147718061u, 0, 10, NULL); +be_define_const_str(ROT1A, "ROT1A", 759599716u, 0, 5, &be_const_str_ST7789_CS); +be_define_const_str(ST7789_CS, "ST7789_CS", 2937305434u, 0, 9, NULL); +be_define_const_str(SDS0X1_TX, "SDS0X1_TX", 165045983u, 0, 9, &be_const_str_ctypes_bytes_dyn); +be_define_const_str(ctypes_bytes_dyn, "ctypes_bytes_dyn", 915205307u, 0, 16, NULL); +be_define_const_str(pin, "pin", 1866532500u, 0, 3, &be_const_str_range); +be_define_const_str(range, "range", 4208725202u, 0, 5, NULL); +be_define_const_str(ETH_PHY_MDC, "ETH_PHY_MDC", 1519379581u, 0, 11, &be_const_str_NRF24_DC); +be_define_const_str(NRF24_DC, "NRF24_DC", 688921313u, 0, 8, &be_const_str_millis); +be_define_const_str(millis, "millis", 1214679063u, 0, 6, &be_const_str_time_dump); +be_define_const_str(time_dump, "time_dump", 3330410747u, 0, 9, NULL); +be_define_const_str(begin, "begin", 1748273790u, 0, 5, NULL); +be_define_const_str(DHT22, "DHT22", 215937903u, 0, 5, &be_const_str_SYMBOL_UP); +be_define_const_str(SYMBOL_UP, "SYMBOL_UP", 3886401511u, 0, 9, NULL); +be_define_const_str(I2S_IN_CLK, "I2S_IN_CLK", 2996930120u, 0, 10, &be_const_str_nan); +be_define_const_str(nan, "nan", 797905850u, 0, 3, NULL); +be_define_const_str(AES_GCM, "AES_GCM", 3832208678u, 0, 7, &be_const_str_HX711_SCK); +be_define_const_str(HX711_SCK, "HX711_SCK", 3785979404u, 0, 9, &be_const_str_cos); +be_define_const_str(cos, "cos", 4220379804u, 0, 3, NULL); +be_define_const_str(CC1101_GDO0, "CC1101_GDO0", 940611027u, 0, 11, NULL); +be_define_const_str(set_timer, "set_timer", 2135414533u, 0, 9, NULL); +be_define_const_str(BS814_CLK, "BS814_CLK", 3002713336u, 0, 9, &be_const_str_IEM3000_TX); +be_define_const_str(IEM3000_TX, "IEM3000_TX", 1185907310u, 0, 10, &be_const_str_SERIAL_8N2); +be_define_const_str(SERIAL_8N2, "SERIAL_8N2", 2386074854u, 0, 10, &be_const_str_SSD1331_CS); +be_define_const_str(SSD1331_CS, "SSD1331_CS", 4191047928u, 0, 10, &be_const_str_clear); +be_define_const_str(clear, "clear", 1550717474u, 0, 5, NULL); +be_define_const_str(A4988_MS1, "A4988_MS1", 1729976611u, 0, 9, &be_const_str_LED1); +be_define_const_str(LED1, "LED1", 21005825u, 0, 4, &be_const_str_SERIAL_8E2); +be_define_const_str(SERIAL_8E2, "SERIAL_8E2", 2421454473u, 0, 10, &be_const_str_SYMBOL_BATTERY_EMPTY); +be_define_const_str(SYMBOL_BATTERY_EMPTY, "SYMBOL_BATTERY_EMPTY", 3945064277u, 0, 20, &be_const_str___upper__); +be_define_const_str(__upper__, "__upper__", 3612202883u, 0, 9, NULL); +be_define_const_str(I2S_IN_SLCT, "I2S_IN_SLCT", 706051516u, 0, 11, NULL); +be_define_const_str(AZ_TXD, "AZ_TXD", 850268709u, 0, 6, &be_const_str__global_def); +be_define_const_str(_global_def, "_global_def", 646007001u, 0, 11, &be_const_str_lv_style); +be_define_const_str(lv_style, "lv_style", 4151611549u, 0, 8, NULL); +be_define_const_str(_ptr, "_ptr", 306235816u, 0, 4, NULL); +be_define_const_str(SERIAL_5N2, "SERIAL_5N2", 3363364537u, 0, 10, &be_const_str_ZEROCROSS); +be_define_const_str(ZEROCROSS, "ZEROCROSS", 1747596785u, 0, 9, &be_const_str_exec_cmd); +be_define_const_str(exec_cmd, "exec_cmd", 493567399u, 0, 8, NULL); +be_define_const_str(OPEN_DRAIN, "OPEN_DRAIN", 677872608u, 0, 10, &be_const_str_attrdump); +be_define_const_str(attrdump, "attrdump", 1521571304u, 0, 8, &be_const_str_lv_roller); +be_define_const_str(lv_roller, "lv_roller", 661902064u, 0, 9, NULL); +be_define_const_str(KEY1, "KEY1", 6715975u, 0, 4, &be_const_str_read13); +be_define_const_str(read13, "read13", 12887293u, 0, 6, NULL); +be_define_const_str(SYMBOL_CHARGE, "SYMBOL_CHARGE", 2106391946u, 0, 13, &be_const_str_TM1638CLK); +be_define_const_str(TM1638CLK, "TM1638CLK", 3045182446u, 0, 9, &be_const_str_dac_voltage); +be_define_const_str(dac_voltage, "dac_voltage", 1552257222u, 0, 11, NULL); +be_define_const_str(POST, "POST", 1929554311u, 0, 4, &be_const_str_RFSEND); +be_define_const_str(RFSEND, "RFSEND", 1862630731u, 0, 6, &be_const_str_gamma10); +be_define_const_str(gamma10, "gamma10", 3472052483u, 0, 7, NULL); +be_define_const_str(INTERRUPT, "INTERRUPT", 3809502704u, 0, 9, &be_const_str_SOLAXX1_TX); +be_define_const_str(SOLAXX1_TX, "SOLAXX1_TX", 903770840u, 0, 10, &be_const_str_lv_textarea); +be_define_const_str(lv_textarea, "lv_textarea", 2864635074u, 0, 11, NULL); +be_define_const_str(_cb, "_cb", 4043300367u, 0, 3, &be_const_str_return); +be_define_const_str(return, "return", 2246981567u, 60, 6, NULL); +be_define_const_str(else, "else", 3183434736u, 52, 4, NULL); +be_define_const_str(ADC_INPUT, "ADC_INPUT", 2207556878u, 0, 9, &be_const_str_asin); +be_define_const_str(asin, "asin", 4272848550u, 0, 4, &be_const_str_tob64); +be_define_const_str(tob64, "tob64", 373777640u, 0, 5, NULL); +be_define_const_str(AS3935, "AS3935", 603621745u, 0, 6, NULL); +be_define_const_str(SYMBOL_PREV, "SYMBOL_PREV", 2952615023u, 0, 11, &be_const_str_traceback); +be_define_const_str(traceback, "traceback", 3385188109u, 0, 9, NULL); +be_define_const_str(AudioFileSource, "AudioFileSource", 2959980058u, 0, 15, &be_const_str_compile); +be_define_const_str(compile, "compile", 1000265118u, 0, 7, &be_const_str_digital_read); +be_define_const_str(digital_read, "digital_read", 3585496928u, 0, 12, &be_const_str_int); +be_define_const_str(int, "int", 2515107422u, 0, 3, NULL); +be_define_const_str(CNTR1, "CNTR1", 510376965u, 0, 5, NULL); +be_define_const_str(SSPI_MAX31865_CS1, "SSPI_MAX31865_CS1", 1256578724u, 0, 17, &be_const_str_def); +be_define_const_str(def, "def", 3310976652u, 55, 3, NULL); +be_define_const_str(PULLUP, "PULLUP", 3417628531u, 0, 6, &be_const_str_start); +be_define_const_str(start, "start", 1697318111u, 0, 5, NULL); +be_define_const_str(OneWire, "OneWire", 2298990722u, 0, 7, &be_const_str_lv_canvas); +be_define_const_str(lv_canvas, "lv_canvas", 142865412u, 0, 9, &be_const_str_toptr); +be_define_const_str(toptr, "toptr", 3379847454u, 0, 5, NULL); +be_define_const_str(HM10_TX, "HM10_TX", 1522037252u, 0, 7, &be_const_str_publish_result); +be_define_const_str(publish_result, "publish_result", 2013351252u, 0, 14, NULL); +be_define_const_str(SSD1331_DC, "SSD1331_DC", 3386560859u, 0, 10, &be_const_str_screenshot); +be_define_const_str(screenshot, "screenshot", 3894592561u, 0, 10, &be_const_str_tag); +be_define_const_str(tag, "tag", 2516003219u, 0, 3, NULL); +be_define_const_str(PZEM0XX_TX, "PZEM0XX_TX", 944775704u, 0, 10, &be_const_str_Tasmota); +be_define_const_str(Tasmota, "Tasmota", 4047617668u, 0, 7, NULL); +be_define_const_str(SENSOR_END, "SENSOR_END", 3512542657u, 0, 10, &be_const_str_VL53L0X_XSHUT1); +be_define_const_str(VL53L0X_XSHUT1, "VL53L0X_XSHUT1", 2341134183u, 0, 14, &be_const_str_concat); +be_define_const_str(concat, "concat", 4124019837u, 0, 6, NULL); +be_define_const_str(wifi, "wifi", 120087624u, 0, 4, NULL); +be_define_const_str(ILI9341_CS, "ILI9341_CS", 3519318851u, 0, 10, &be_const_str_SDM72_RX); +be_define_const_str(SDM72_RX, "SDM72_RX", 766750035u, 0, 8, &be_const_str_TCP_TX); +be_define_const_str(TCP_TX, "TCP_TX", 2762594089u, 0, 6, NULL); +be_define_const_str(ADC_PH, "ADC_PH", 3820290594u, 0, 6, &be_const_str_SYMBOL_CLOSE); +be_define_const_str(SYMBOL_CLOSE, "SYMBOL_CLOSE", 2654402806u, 0, 12, NULL); +be_define_const_str(CSE7766_TX, "CSE7766_TX", 674624821u, 0, 10, NULL); +be_define_const_str(SHELLY_DIMMER_BOOT0, "SHELLY_DIMMER_BOOT0", 2948777716u, 0, 19, &be_const_str_wire2); +be_define_const_str(wire2, "wire2", 3229499038u, 0, 5, NULL); +be_define_const_str(AudioOutputI2S, "AudioOutputI2S", 638031784u, 0, 14, &be_const_str_str); +be_define_const_str(str, "str", 3259748752u, 0, 3, NULL); +be_define_const_str(resize, "resize", 3514612129u, 0, 6, NULL); +be_define_const_str(IEM3000_RX, "IEM3000_RX", 1117811096u, 0, 10, NULL); +be_define_const_str(TFMINIPLUS_RX, "TFMINIPLUS_RX", 1522203935u, 0, 13, &be_const_str_content_stop); +be_define_const_str(content_stop, "content_stop", 658554751u, 0, 12, NULL); +be_define_const_str(write_bytes, "write_bytes", 1227543792u, 0, 11, NULL); +be_define_const_str(SI7021, "SI7021", 864377911u, 0, 6, &be_const_str_digital_write); +be_define_const_str(digital_write, "digital_write", 3435877979u, 0, 13, NULL); +be_define_const_str(ROT1B, "ROT1B", 809932573u, 0, 5, NULL); +be_define_const_str(PN532_RXD, "PN532_RXD", 1780093022u, 0, 9, &be_const_str_TX2X_TXD_BLACK); +be_define_const_str(TX2X_TXD_BLACK, "TX2X_TXD_BLACK", 956526176u, 0, 14, NULL); +be_define_const_str(opt_neq, "!=", 2428715011u, 0, 2, &be_const_str_LOW); +be_define_const_str(LOW, "LOW", 3526092385u, 0, 3, &be_const_str_TELEINFO_ENABLE); +be_define_const_str(TELEINFO_ENABLE, "TELEINFO_ENABLE", 1600974501u, 0, 15, NULL); +be_define_const_str(TM1638DIO, "TM1638DIO", 1408212414u, 0, 9, NULL); +be_define_const_str(BUZZER_INV, "BUZZER_INV", 3274564335u, 0, 10, &be_const_str_LEDLNK_INV); +be_define_const_str(LEDLNK_INV, "LEDLNK_INV", 3559015101u, 0, 10, &be_const_str_MAX31855CS); +be_define_const_str(MAX31855CS, "MAX31855CS", 753620511u, 0, 10, &be_const_str_SYMBOL_VIDEO); +be_define_const_str(SYMBOL_VIDEO, "SYMBOL_VIDEO", 789726913u, 0, 12, &be_const_str_content_button); +be_define_const_str(content_button, "content_button", 1956476087u, 0, 14, &be_const_str_read); +be_define_const_str(read, "read", 3470762949u, 0, 4, NULL); +be_define_const_str(I2C_SDA, "I2C_SDA", 1052592262u, 0, 7, &be_const_str_read12); +be_define_const_str(read12, "read12", 4291076970u, 0, 6, NULL); +be_define_const_str(SYMBOL_EJECT, "SYMBOL_EJECT", 873760647u, 0, 12, &be_const_str_bus); +be_define_const_str(bus, "bus", 1607822841u, 0, 3, NULL); +be_define_const_str(MIEL_HVAC_RX, "MIEL_HVAC_RX", 3720609648u, 0, 12, &be_const_str_do); +be_define_const_str(do, "do", 1646057492u, 65, 2, NULL); +be_define_const_str(ILI9488_CS, "ILI9488_CS", 2363112073u, 0, 10, &be_const_str_SSPI_MOSI); +be_define_const_str(SSPI_MOSI, "SSPI_MOSI", 3745917497u, 0, 9, &be_const_str_get_size); +be_define_const_str(get_size, "get_size", 2803644713u, 0, 8, &be_const_str_resp_cmnd_error); +be_define_const_str(resp_cmnd_error, "resp_cmnd_error", 2404088863u, 0, 15, NULL); +be_define_const_str(ARIRFRCV, "ARIRFRCV", 1120816444u, 0, 8, &be_const_str_SYMBOL_PLAY); +be_define_const_str(SYMBOL_PLAY, "SYMBOL_PLAY", 1750902100u, 0, 11, &be_const_str_count); +be_define_const_str(count, "count", 967958004u, 0, 5, NULL); +be_define_const_str(I2S_OUT_CLK, "I2S_OUT_CLK", 2580200387u, 0, 11, &be_const_str_call); +be_define_const_str(call, "call", 3018949801u, 0, 4, NULL); +be_define_const_str(_buffer, "_buffer", 2044888568u, 0, 7, &be_const_str_cosh); +be_define_const_str(cosh, "cosh", 4099687964u, 0, 4, &be_const_str_on); +be_define_const_str(on, "on", 1630810064u, 0, 2, NULL); +be_define_const_str(OUTPUT_LO, "OUTPUT_LO", 3724620328u, 0, 9, &be_const_str_false); +be_define_const_str(false, "false", 184981848u, 62, 5, NULL); +be_define_const_str(SDS0X1_RX, "SDS0X1_RX", 1170717385u, 0, 9, &be_const_str_atan2); +be_define_const_str(atan2, "atan2", 3173440503u, 0, 5, NULL); +be_define_const_str(sinh, "sinh", 282220607u, 0, 4, NULL); +be_define_const_str(RC522_CS, "RC522_CS", 2639619996u, 0, 8, &be_const_str_has_arg); +be_define_const_str(has_arg, "has_arg", 424878688u, 0, 7, NULL); +be_define_const_str(ARIRFSEL, "ARIRFSEL", 233874443u, 0, 8, &be_const_str_TCP_RX); +be_define_const_str(TCP_RX, "TCP_RX", 3904354751u, 0, 6, &be_const_str_lv_checkbox); +be_define_const_str(lv_checkbox, "lv_checkbox", 7454841u, 0, 11, &be_const_str_raise); +be_define_const_str(raise, "raise", 1593437475u, 70, 5, NULL); +be_define_const_str(DDS2382_RX, "DDS2382_RX", 432446462u, 0, 10, &be_const_str_NEOPOOL_TX); +be_define_const_str(NEOPOOL_TX, "NEOPOOL_TX", 2924925804u, 0, 10, &be_const_str_SYMBOL_CUT); +be_define_const_str(SYMBOL_CUT, "SYMBOL_CUT", 3455112394u, 0, 10, NULL); +be_define_const_str(MAX31855CLK, "MAX31855CLK", 715977727u, 0, 11, &be_const_str_RC522_RST); +be_define_const_str(RC522_RST, "RC522_RST", 720511443u, 0, 9, &be_const_str_REL1_INV); +be_define_const_str(REL1_INV, "REL1_INV", 3733155371u, 0, 8, &be_const_str_read24); +be_define_const_str(read24, "read24", 1808533811u, 0, 6, NULL); +be_define_const_str(SYMBOL_DOWN, "SYMBOL_DOWN", 1107513570u, 0, 11, &be_const_str_SYMBOL_EYE_CLOSE); +be_define_const_str(SYMBOL_EYE_CLOSE, "SYMBOL_EYE_CLOSE", 404721792u, 0, 16, &be_const_str__class); +be_define_const_str(_class, "_class", 2732146350u, 0, 6, NULL); +be_define_const_str(split, "split", 2276994531u, 0, 5, &be_const_str_static); +be_define_const_str(static, "static", 3532702267u, 71, 6, NULL); +be_define_const_str(AudioGeneratorMP3, "AudioGeneratorMP3", 2199818488u, 0, 17, &be_const_str_SYMBOL_BATTERY_2); +be_define_const_str(SYMBOL_BATTERY_2, "SYMBOL_BATTERY_2", 645813682u, 0, 16, &be_const_str_delay); +be_define_const_str(delay, "delay", 1322381784u, 0, 5, &be_const_str_state); +be_define_const_str(state, "state", 2016490230u, 0, 5, NULL); +be_define_const_str(SDM630_RX, "SDM630_RX", 1971606309u, 0, 9, &be_const_str_toint); +be_define_const_str(toint, "toint", 3613182909u, 0, 5, NULL); +be_define_const_str(BACKLIGHT, "BACKLIGHT", 3147761926u, 0, 9, NULL); +be_define_const_str(, "", 2166136261u, 0, 0, &be_const_str_REL1); +be_define_const_str(REL1, "REL1", 3142397887u, 0, 4, &be_const_str_fromptr); +be_define_const_str(fromptr, "fromptr", 666189689u, 0, 7, &be_const_str_target_search); +be_define_const_str(target_search, "target_search", 1947846553u, 0, 13, NULL); +be_define_const_str(detect, "detect", 8884370u, 0, 6, NULL); +be_define_const_str(HRXL_RX, "HRXL_RX", 92702006u, 0, 7, &be_const_str_OUTPUT_HI); +be_define_const_str(OUTPUT_HI, "OUTPUT_HI", 3153592902u, 0, 9, &be_const_str_SYMBOL_WARNING); +be_define_const_str(SYMBOL_WARNING, "SYMBOL_WARNING", 4119913686u, 0, 14, &be_const_str_read32); +be_define_const_str(read32, "read32", 1741276240u, 0, 6, NULL); +be_define_const_str(SPI_DC, "SPI_DC", 553259951u, 0, 6, &be_const_str_keys); +be_define_const_str(keys, "keys", 4182378701u, 0, 4, &be_const_str_search); +be_define_const_str(search, "search", 2150836393u, 0, 6, NULL); +be_define_const_str(OUTPUT, "OUTPUT", 1469629700u, 0, 6, &be_const_str_isnan); +be_define_const_str(isnan, "isnan", 2981347434u, 0, 5, &be_const_str_webclient); +be_define_const_str(webclient, "webclient", 4076389146u, 0, 9, NULL); +be_define_const_str(HJL_CF, "HJL_CF", 786158487u, 0, 6, &be_const_str_TUYA_RX); +be_define_const_str(TUYA_RX, "TUYA_RX", 1609397679u, 0, 7, NULL); +be_define_const_str(SERIAL_5O2, "SERIAL_5O2", 3732325060u, 0, 10, &be_const_str_SPI_MISO); +be_define_const_str(SPI_MISO, "SPI_MISO", 150818010u, 0, 8, &be_const_str_isrunning); +be_define_const_str(isrunning, "isrunning", 1688182268u, 0, 9, NULL); +be_define_const_str(IRRECV, "IRRECV", 1743648982u, 0, 6, &be_const_str_SERIAL_6N2); +be_define_const_str(SERIAL_6N2, "SERIAL_6N2", 148562844u, 0, 10, NULL); +be_define_const_str(AudioGeneratorWAV, "AudioGeneratorWAV", 2746509368u, 0, 17, &be_const_str_PROJECTOR_CTRL_TX); +be_define_const_str(PROJECTOR_CTRL_TX, "PROJECTOR_CTRL_TX", 535811130u, 0, 17, &be_const_str__read); +be_define_const_str(_read, "_read", 346717030u, 0, 5, NULL); +be_define_const_str(EPD_DATA, "EPD_DATA", 3799141097u, 0, 8, NULL); +be_define_const_str(geti, "geti", 2381006490u, 0, 4, NULL); +be_define_const_str(SYMBOL_BACKSPACE, "SYMBOL_BACKSPACE", 1997168681u, 0, 16, NULL); +be_define_const_str(RF_SENSOR, "RF_SENSOR", 2289628100u, 0, 9, &be_const_str_SERIAL_8O1); +be_define_const_str(SERIAL_8O1, "SERIAL_8O1", 289122742u, 0, 10, &be_const_str__p); +be_define_const_str(_p, "_p", 1594591802u, 0, 2, NULL); +be_define_const_str(AZ_RXD, "AZ_RXD", 699914019u, 0, 6, &be_const_str__global_addr); +be_define_const_str(_global_addr, "_global_addr", 533766721u, 0, 12, &be_const_str_arg_size); +be_define_const_str(arg_size, "arg_size", 3310243257u, 0, 8, &be_const_str_char); +be_define_const_str(char, "char", 2823553821u, 0, 4, &be_const_str_iter); +be_define_const_str(iter, "iter", 3124256359u, 0, 4, &be_const_str_lv_group); +be_define_const_str(lv_group, "lv_group", 3852039019u, 0, 8, &be_const_str_read_bytes); +be_define_const_str(read_bytes, "read_bytes", 3576733173u, 0, 10, NULL); +be_define_const_str(I2C_SCL, "I2C_SCL", 164217098u, 0, 7, &be_const_str_RA8876_CS); +be_define_const_str(RA8876_CS, "RA8876_CS", 2529944108u, 0, 9, &be_const_str_find_op); +be_define_const_str(find_op, "find_op", 3766713376u, 0, 7, NULL); +be_define_const_str(EC_C25519, "EC_C25519", 95492591u, 0, 9, NULL); +be_define_const_str(I2S_IN_DATA, "I2S_IN_DATA", 4125971460u, 0, 11, &be_const_str_SERIAL_6E1); +be_define_const_str(SERIAL_6E1, "SERIAL_6E1", 334249486u, 0, 10, &be_const_str_reverse_gamma10); +be_define_const_str(reverse_gamma10, "reverse_gamma10", 739112262u, 0, 15, NULL); +be_define_const_str(opt_add, "+", 772578730u, 0, 1, &be_const_str_gamma8); +be_define_const_str(gamma8, "gamma8", 3802843830u, 0, 6, &be_const_str_memory); +be_define_const_str(memory, "memory", 2229924270u, 0, 6, &be_const_str_run_deferred); +be_define_const_str(run_deferred, "run_deferred", 371594696u, 0, 12, NULL); +be_define_const_str(real, "real", 3604983901u, 0, 4, NULL); +be_define_const_str(wire_scan, "wire_scan", 2671275880u, 0, 9, NULL); +be_define_const_str(NONE, "NONE", 1932136219u, 0, 4, &be_const_str_SM16716_CLK); +be_define_const_str(SM16716_CLK, "SM16716_CLK", 3037641483u, 0, 11, &be_const_str_getbits); +be_define_const_str(getbits, "getbits", 3094168979u, 0, 7, &be_const_str_remove); +be_define_const_str(remove, "remove", 3683784189u, 0, 6, NULL); +be_define_const_str(ADC_BUTTON, "ADC_BUTTON", 3393454690u, 0, 10, &be_const_str_insert); +be_define_const_str(insert, "insert", 3332609576u, 0, 6, &be_const_str_lv_table); +be_define_const_str(lv_table, "lv_table", 1675691020u, 0, 8, &be_const_str_if); +be_define_const_str(if, "if", 959999494u, 50, 2, NULL); +be_define_const_str(LE01MR_TX, "LE01MR_TX", 1589687023u, 0, 9, &be_const_str_MD5); +be_define_const_str(MD5, "MD5", 1935726387u, 0, 3, NULL); +be_define_const_str(dot_p1, ".p1", 249175686u, 0, 3, &be_const_str_CSE7761_RX); +be_define_const_str(CSE7761_RX, "CSE7761_RX", 65423248u, 0, 10, &be_const_str_HPMA_TX); +be_define_const_str(HPMA_TX, "HPMA_TX", 173233104u, 0, 7, &be_const_str_SM2135_DAT); +be_define_const_str(SM2135_DAT, "SM2135_DAT", 2882726942u, 0, 10, &be_const_str_skip); +be_define_const_str(skip, "skip", 1097563074u, 0, 4, NULL); +be_define_const_str(SERIAL_5E1, "SERIAL_5E1", 1163775235u, 0, 10, NULL); +be_define_const_str(opt_connect, "..", 2748622605u, 0, 2, &be_const_str_WEBCAM_PCLK); +be_define_const_str(WEBCAM_PCLK, "WEBCAM_PCLK", 3813770649u, 0, 11, &be_const_str_lv_imgbtn); +be_define_const_str(lv_imgbtn, "lv_imgbtn", 2402844429u, 0, 9, NULL); static const bstring* const m_string_table[] = { - NULL, - (const bstring *)&be_const_str_SR04_TRIG, - (const bstring *)&be_const_str_BOILER_OT_RX, - (const bstring *)&be_const_str_HIGH, - (const bstring *)&be_const_str_SOLAXX1_RX, - (const bstring *)&be_const_str_TM1638STB, - NULL, - (const bstring *)&be_const_str_exec_rules, - (const bstring *)&be_const_str_find, - (const bstring *)&be_const_str_MGC3130_XFER, - (const bstring *)&be_const_str_ADC_BUTTON, - (const bstring *)&be_const_str_CSE7761_RX, - NULL, - NULL, - (const bstring *)&be_const_str_POST, - NULL, - (const bstring *)&be_const_str_CSE7761_TX, - (const bstring *)&be_const_str_BS814_DAT, - NULL, - NULL, - (const bstring *)&be_const_str_PULLUP, - (const bstring *)&be_const_str_SYMBOL_USB, - NULL, - (const bstring *)&be_const_str_I2C_SCL, - (const bstring *)&be_const_str_REL1, - (const bstring *)&be_const_str_SYMBOL_STOP, - (const bstring *)&be_const_str_CSE7766_RX, - (const bstring *)&be_const_str_AS608_RX, - (const bstring *)&be_const_str_SYMBOL_KEYBOARD, - (const bstring *)&be_const_str_SDM120_TX, - (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, - (const bstring *)&be_const_str_KEY1_INV, - (const bstring *)&be_const_str_TASMOTACLIENT_RST, - (const bstring *)&be_const_str_KEY1_NP, - (const bstring *)&be_const_str_I2C_Driver, - (const bstring *)&be_const_str_LMT01, - (const bstring *)&be_const_str_NRF24_DC, - (const bstring *)&be_const_str_CC1101_GDO0, - (const bstring *)&be_const_str_SERIAL_5N2, - (const bstring *)&be_const_str_list, - NULL, - (const bstring *)&be_const_str_P9813_CLK, - (const bstring *)&be_const_str_IRRECV, - (const bstring *)&be_const_str_assert, - (const bstring *)&be_const_str_SERIAL_6O1, - (const bstring *)&be_const_str_SSD1331_CS, - (const bstring *)&be_const_str_LE01MR_RX, - (const bstring *)&be_const_str_VL53L0X_XSHUT1, - (const bstring *)&be_const_str_ILI9341_CS, - (const bstring *)&be_const_str_ETH_PHY_POWER, - (const bstring *)&be_const_str_NRG_CF1, - (const bstring *)&be_const_str_ROT1A, - (const bstring *)&be_const_str_lv_canvas, - (const bstring *)&be_const_str_TFMINIPLUS_TX, - (const bstring *)&be_const_str_TFMINIPLUS_RX, - (const bstring *)&be_const_str_P9813_DAT, - (const bstring *)&be_const_str_ADC_CT_POWER, - (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, - (const bstring *)&be_const_str_MAX31855DO, - (const bstring *)&be_const_str_PMS5003_TX, - (const bstring *)&be_const_str_byte, - (const bstring *)&be_const_str_deg, - (const bstring *)&be_const_str_DDSU666_TX, - (const bstring *)&be_const_str_SYMBOL_CALL, - (const bstring *)&be_const_str_content_flush, - (const bstring *)&be_const_str_RXD, - (const bstring *)&be_const_str_A4988_MS1, - (const bstring *)&be_const_str_rad, - (const bstring *)&be_const_str_SPI_DC, - (const bstring *)&be_const_str_lv_chart, - (const bstring *)&be_const_str_log, - (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, - (const bstring *)&be_const_str_OPEN_DRAIN, - (const bstring *)&be_const_str_MHZ_RXD, - (const bstring *)&be_const_str_redirect, - (const bstring *)&be_const_str_DSB_OUT, - (const bstring *)&be_const_str_ADC_PH, - (const bstring *)&be_const_str_ROT1B_NP, - (const bstring *)&be_const_str_dot_len, - (const bstring *)&be_const_str_INPUT_PULLDOWN, - (const bstring *)&be_const_str_format, - (const bstring *)&be_const_str_EPD_DATA, - (const bstring *)&be_const_str_SR04_ECHO, - NULL, - (const bstring *)&be_const_str__ptr, - (const bstring *)&be_const_str_ADE7953_IRQ, - (const bstring *)&be_const_str_KEY1_INV_NP, - NULL, - (const bstring *)&be_const_str_dot_p2, - (const bstring *)&be_const_str_CNTR1_NP, - (const bstring *)&be_const_str_SYMBOL_PLAY, - (const bstring *)&be_const_str_lv_gauge, - (const bstring *)&be_const_str_SSD1351_DC, - (const bstring *)&be_const_str_type, - (const bstring *)&be_const_str_INPUT, - (const bstring *)&be_const_str_SERIAL_8O1, - (const bstring *)&be_const_str_find_op, - NULL, - (const bstring *)&be_const_str_TUYA_RX, - (const bstring *)&be_const_str_SPI_CS, - NULL, - (const bstring *)&be_const_str_real, - (const bstring *)&be_const_str_LEDLNK, - (const bstring *)&be_const_str_SYMBOL_OK, - (const bstring *)&be_const_str_I2S_IN_SLCT, - (const bstring *)&be_const_str_MAX7219DIN, - (const bstring *)&be_const_str_get_option, - (const bstring *)&be_const_str_i2c_enabled, - (const bstring *)&be_const_str_SYMBOL_WARNING, - (const bstring *)&be_const_str_dot_size, - (const bstring *)&be_const_str_getbits, - (const bstring *)&be_const_str_ADC_BUTTON_INV, - NULL, - (const bstring *)&be_const_str___upper__, - (const bstring *)&be_const_str_log10, - (const bstring *)&be_const_str_SYMBOL_SAVE, - (const bstring *)&be_const_str_seg7_font, - (const bstring *)&be_const_str_PZEM017_RX, - (const bstring *)&be_const_str_dot_p, - (const bstring *)&be_const_str_SDM120_RX, - (const bstring *)&be_const_str_HM10_TX, - (const bstring *)&be_const_str_print, - NULL, - (const bstring *)&be_const_str_PMS5003_RX, - (const bstring *)&be_const_str_SYMBOL_RIGHT, - (const bstring *)&be_const_str_NRF24_CS, - (const bstring *)&be_const_str_AudioOutput, - (const bstring *)&be_const_str_SSPI_SCLK, - (const bstring *)&be_const_str_rand, - (const bstring *)&be_const_str_I2S_IN_CLK, - (const bstring *)&be_const_str_SYMBOL_DOWN, - NULL, - NULL, - (const bstring *)&be_const_str_BACKLIGHT, - (const bstring *)&be_const_str_available, - (const bstring *)&be_const_str_break, - NULL, - NULL, - (const bstring *)&be_const_str_DHT11, - (const bstring *)&be_const_str_yield, - (const bstring *)&be_const_str_opt_neq, - (const bstring *)&be_const_str_Wire, - (const bstring *)&be_const_str_SYMBOL_AUDIO, - (const bstring *)&be_const_str__end_transmission, - NULL, - (const bstring *)&be_const_str_AudioFileSource, - (const bstring *)&be_const_str_ILI9488_CS, - (const bstring *)&be_const_str_LEDLNK_INV, - (const bstring *)&be_const_str_sqrt, - (const bstring *)&be_const_str_CHANGE, - (const bstring *)&be_const_str_DDS2382_TX, - (const bstring *)&be_const_str_DDS2382_RX, - (const bstring *)&be_const_str_TM1637DIO, - (const bstring *)&be_const_str_FTC532, - (const bstring *)&be_const_str_SYMBOL_BATTERY_EMPTY, - (const bstring *)&be_const_str_true, - (const bstring *)&be_const_str_MIEL_HVAC_TX, - (const bstring *)&be_const_str_lv_line, - (const bstring *)&be_const_str_ADC_JOY, - (const bstring *)&be_const_str_SERIAL_5O1, - (const bstring *)&be_const_str_RFRECV, - (const bstring *)&be_const_str_setmember, - (const bstring *)&be_const_str_DI, - NULL, - (const bstring *)&be_const_str_SYMBOL_CHARGE, - (const bstring *)&be_const_str__read, - (const bstring *)&be_const_str_dot_p1, - (const bstring *)&be_const_str_dot_w, - (const bstring *)&be_const_str_A4988_ENA, - (const bstring *)&be_const_str_MCP39F5_RX, - (const bstring *)&be_const_str_get_string, - (const bstring *)&be_const_str_digital_write, - (const bstring *)&be_const_str_str, - (const bstring *)&be_const_str_SYMBOL_EYE_OPEN, - (const bstring *)&be_const_str_SERIAL_8E2, - (const bstring *)&be_const_str_SYMBOL_SD_CARD, - (const bstring *)&be_const_str_OUTPUT, - (const bstring *)&be_const_str_SAIR_TX, - (const bstring *)&be_const_str_WEBCAM_PSCLK, - (const bstring *)&be_const_str_SPI_CLK, - (const bstring *)&be_const_str_SYMBOL_LEFT, - (const bstring *)&be_const_str_SBR_TX, - (const bstring *)&be_const_str_Tasmota, - (const bstring *)&be_const_str_SYMBOL_BATTERY_1, - (const bstring *)&be_const_str_DDSU666_RX, - (const bstring *)&be_const_str_SERIAL_6E2, - (const bstring *)&be_const_str_event, - (const bstring *)&be_const_str_shared_key, - (const bstring *)&be_const_str_EPAPER29_CS, - (const bstring *)&be_const_str_SPI_MISO, - (const bstring *)&be_const_str_has_arg, - (const bstring *)&be_const_str_tag, - NULL, - (const bstring *)&be_const_str_CC1101_GDO2, - NULL, - (const bstring *)&be_const_str_EXS_ENABLE, - (const bstring *)&be_const_str_NEOPOOL_RX, - (const bstring *)&be_const_str_find_key_i, - NULL, - (const bstring *)&be_const_str_SI7021, - (const bstring *)&be_const_str_SYMBOL_PAUSE, - (const bstring *)&be_const_str_classname, - (const bstring *)&be_const_str_loop, - (const bstring *)&be_const_str_ETH_PHY_MDC, - (const bstring *)&be_const_str_resp_cmnd_done, - (const bstring *)&be_const_str_SERIAL_5E1, - (const bstring *)&be_const_str_SENSOR_END, - (const bstring *)&be_const_str_NRG_SEL, - (const bstring *)&be_const_str_AudioGeneratorMP3, - (const bstring *)&be_const_str_resp_cmnd, - (const bstring *)&be_const_str_AES_GCM, - (const bstring *)&be_const_str_NONE, - (const bstring *)&be_const_str_tostring, - (const bstring *)&be_const_str_AZ_TXD, - (const bstring *)&be_const_str_SYMBOL_MINUS, - (const bstring *)&be_const_str_eth, - (const bstring *)&be_const_str_SYMBOL_SETTINGS, - (const bstring *)&be_const_str_LED1_INV, - (const bstring *)&be_const_str_reverse_gamma10, - (const bstring *)&be_const_str_CNTR1, - (const bstring *)&be_const_str_TUYA_TX, - (const bstring *)&be_const_str_BOILER_OT_TX, - (const bstring *)&be_const_str_KEY1_PD, - (const bstring *)&be_const_str_DCKI, (const bstring *)&be_const_str_MCP39F5_RST, - (const bstring *)&be_const_str_LED1, - (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, - (const bstring *)&be_const_str_pin_used, - (const bstring *)&be_const_str__buffer, - (const bstring *)&be_const_str_AudioGeneratorWAV, - (const bstring *)&be_const_str_DEEPSLEEP, - (const bstring *)&be_const_str_TCP_RX, - (const bstring *)&be_const_str_RDM6300_RX, - (const bstring *)&be_const_str_SDM630_RX, NULL, - (const bstring *)&be_const_str_NRG_SEL_INV, - (const bstring *)&be_const_str_SYMBOL_FILE, - (const bstring *)&be_const_str_SYMBOL_MUTE, - (const bstring *)&be_const_str_SM2135_DAT, - (const bstring *)&be_const_str_SYMBOL_DOWNLOAD, - (const bstring *)&be_const_str_lv_checkbox, - (const bstring *)&be_const_str_BUZZER, - (const bstring *)&be_const_str_AS608_TX, - NULL, - (const bstring *)&be_const_str_setbits, - (const bstring *)&be_const_str_FALLING, - (const bstring *)&be_const_str_HALLEFFECT, - (const bstring *)&be_const_str_geti, - (const bstring *)&be_const_str_exec_cmd, - (const bstring *)&be_const_str_lv_msgbox, - (const bstring *)&be_const_str_ADC_LIGHT, - (const bstring *)&be_const_str_imax, - (const bstring *)&be_const_str_SWT1_NP, - (const bstring *)&be_const_str_ADC_TEMP, - (const bstring *)&be_const_str_AS3935, - (const bstring *)&be_const_str_digital_read, - (const bstring *)&be_const_str_, - (const bstring *)&be_const_str_SYMBOL_NEW_LINE, - (const bstring *)&be_const_str_SYMBOL_REFRESH, - (const bstring *)&be_const_str_SYMBOL_GPS, - (const bstring *)&be_const_str_MGC3130_RESET, - (const bstring *)&be_const_str_SYMBOL_BATTERY_2, - (const bstring *)&be_const_str_OPTION_A, - (const bstring *)&be_const_str_ETH_PHY_MDIO, - (const bstring *)&be_const_str_opt_add, - (const bstring *)&be_const_str_LE01MR_TX, - (const bstring *)&be_const_str_AZ_RXD, - (const bstring *)&be_const_str_A4988_STP, - (const bstring *)&be_const_str_BL0940_RX, - (const bstring *)&be_const_str_RISING, - (const bstring *)&be_const_str_WEBCAM_SIOD, - (const bstring *)&be_const_str_SERIAL_7E1, - NULL, - (const bstring *)&be_const_str_PZEM004_RX, - NULL, - (const bstring *)&be_const_str_ARIRFSEL, - (const bstring *)&be_const_str_remove_timer, - (const bstring *)&be_const_str_SDS0X1_RX, - (const bstring *)&be_const_str_SDS0X1_TX, - (const bstring *)&be_const_str_finish, - (const bstring *)&be_const_str_content_send, - (const bstring *)&be_const_str_MAX31855CS, - (const bstring *)&be_const_str_ADC_RANGE, - (const bstring *)&be_const_str_SERIAL_5E2, - (const bstring *)&be_const_str_lv_btnmatrix, - (const bstring *)&be_const_str_ADC_INPUT, - (const bstring *)&be_const_str_DHT11_OUT, - (const bstring *)&be_const_str_SWT1_PD, - (const bstring *)&be_const_str_response_append, - (const bstring *)&be_const_str_opt_connect, - (const bstring *)&be_const_str_DSB, - (const bstring *)&be_const_str_nan, (const bstring *)&be_const_str_PULLDOWN, - (const bstring *)&be_const_str_HRE_DATA, NULL, - (const bstring *)&be_const_str_WE517_RX, - (const bstring *)&be_const_str_TASMOTACLIENT_TXD, - (const bstring *)&be_const_str_detect, - (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_CNTR1_NP, + (const bstring *)&be_const_str_DSB_OUT, + (const bstring *)&be_const_str_P9813_DAT, + (const bstring *)&be_const_str_seg7_font, + (const bstring *)&be_const_str_ETH_PHY_POWER, + (const bstring *)&be_const_str__drivers, + (const bstring *)&be_const_str_DI, + (const bstring *)&be_const_str_SYMBOL_SHUFFLE, + (const bstring *)&be_const_str_set_light, + (const bstring *)&be_const_str_SAIR_TX, + (const bstring *)&be_const_str_RDM6300_RX, + (const bstring *)&be_const_str_TM1637DIO, + (const bstring *)&be_const_str_WEBCAM_PSCLK, + (const bstring *)&be_const_str_SERIAL_7O1, + (const bstring *)&be_const_str_SYMBOL_LIST, + (const bstring *)&be_const_str_ELECTRIQ_MOODL_TX, + NULL, + (const bstring *)&be_const_str_CHANGE, + (const bstring *)&be_const_str_tanh, + (const bstring *)&be_const_str_SYMBOL_REFRESH, + NULL, + (const bstring *)&be_const_str_SYMBOL_BELL, + (const bstring *)&be_const_str_dot_size, + (const bstring *)&be_const_str_SWT1_PD, + (const bstring *)&be_const_str_GPS_RX, + (const bstring *)&be_const_str_elif, + (const bstring *)&be_const_str_dot_w, + (const bstring *)&be_const_str_ZIGBEE_RST, + (const bstring *)&be_const_str_OPTION_A, (const bstring *)&be_const_str_AudioFileSourceFS, - (const bstring *)&be_const_str_SYMBOL_UP, + (const bstring *)&be_const_str_DHT11_OUT, + (const bstring *)&be_const_str_LE01MR_RX, + (const bstring *)&be_const_str_DDS2382_TX, + (const bstring *)&be_const_str_SERIAL_6N1, + (const bstring *)&be_const_str_calldepth, + (const bstring *)&be_const_str_MGC3130_XFER, + (const bstring *)&be_const_str___lower__, + (const bstring *)&be_const_str_SYMBOL_PASTE, NULL, - (const bstring *)&be_const_str_TELEINFO_ENABLE, - (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_dot_p, + (const bstring *)&be_const_str_IRSEND, + (const bstring *)&be_const_str_MGC3130_RESET, + (const bstring *)&be_const_str_FALLING, + (const bstring *)&be_const_str_HIGH, + (const bstring *)&be_const_str_SYMBOL_OK, + NULL, + (const bstring *)&be_const_str_for, + (const bstring *)&be_const_str_TXD, + (const bstring *)&be_const_str_SR04_ECHO, + (const bstring *)&be_const_str_BUZZER, + (const bstring *)&be_const_str_ADC_TEMP, + (const bstring *)&be_const_str_MCP39F5_TX, + (const bstring *)&be_const_str_KEY1_NP, + (const bstring *)&be_const_str_EXS_ENABLE, + (const bstring *)&be_const_str_SYMBOL_GPS, + (const bstring *)&be_const_str_ADC_RANGE, + (const bstring *)&be_const_str_remove_driver, + (const bstring *)&be_const_str_MCP39F5_RX, + (const bstring *)&be_const_str_ILI9341_DC, NULL, - (const bstring *)&be_const_str_MHZ_TXD, (const bstring *)&be_const_str_HX711_DAT, - (const bstring *)&be_const_str_HM10_RX, + (const bstring *)&be_const_str_RFRECV, + NULL, + (const bstring *)&be_const_str_SSPI_MISO, + (const bstring *)&be_const_str_A4988_ENA, + (const bstring *)&be_const_str_SDM120_RX, + (const bstring *)&be_const_str_lv_indev, (const bstring *)&be_const_str_pow, - (const bstring *)&be_const_str_RF_SENSOR, - (const bstring *)&be_const_str_CSE7766_TX, - (const bstring *)&be_const_str_cb_dispatch, - (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, - (const bstring *)&be_const_str_WEBCAM_VSYNC, + (const bstring *)&be_const_str_SYMBOL_PAUSE, NULL, - (const bstring *)&be_const_str_A4988_DIR, - (const bstring *)&be_const_str_PN532_TXD, + (const bstring *)&be_const_str_SYMBOL_USB, + (const bstring *)&be_const_str_WEBCAM_DATA, + (const bstring *)&be_const_str_pin_mode, + (const bstring *)&be_const_str_SYMBOL_WIFI, + (const bstring *)&be_const_str_WEBCAM_RESET, + (const bstring *)&be_const_str_I2S_OUT_DATA, + (const bstring *)&be_const_str_AS608_RX, NULL, - (const bstring *)&be_const_str_MAX7219CS, - (const bstring *)&be_const_str__cmd, - (const bstring *)&be_const_str_SDM72_TX, - (const bstring *)&be_const_str_KEY1, - (const bstring *)&be_const_str_SYMBOL_BULLET, - (const bstring *)&be_const_str_cmd, - (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_SYMBOL_AUDIO, NULL, - (const bstring *)&be_const_str_BS814_CLK, - (const bstring *)&be_const_str_end, - (const bstring *)&be_const_str_BUZZER_INV, - (const bstring *)&be_const_str_dac_voltage, - (const bstring *)&be_const_str_HPMA_TX, - (const bstring *)&be_const_str_MD5, + (const bstring *)&be_const_str_top, + (const bstring *)&be_const_str_SWT1_NP, + (const bstring *)&be_const_str_INPUT_PULLUP, + (const bstring *)&be_const_str_SAIR_RX, + (const bstring *)&be_const_str_SPI_CLK, + (const bstring *)&be_const_str_EPAPER42_CS, + (const bstring *)&be_const_str_AudioGenerator, NULL, NULL, - (const bstring *)&be_const_str_target_search, - (const bstring *)&be_const_str_DHT22, - (const bstring *)&be_const_str_opt_call, NULL, - (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_PROJECTOR_CTRL_RX, + (const bstring *)&be_const_str_ROT1A_NP, + (const bstring *)&be_const_str_CSE7761_TX, (const bstring *)&be_const_str_SYMBOL_BATTERY_3, - NULL + NULL, + (const bstring *)&be_const_str_SERIAL_8N1, + (const bstring *)&be_const_str_lv_switch, + (const bstring *)&be_const_str_SDM120_TX, + (const bstring *)&be_const_str_SSPI_DC, + (const bstring *)&be_const_str_SYMBOL_UPLOAD, + (const bstring *)&be_const_str_eth, + (const bstring *)&be_const_str_LED1_INV, + NULL, + (const bstring *)&be_const_str_HALLEFFECT, + NULL, + (const bstring *)&be_const_str_IBEACON_RX, + (const bstring *)&be_const_str_imin, + (const bstring *)&be_const_str_content_start, + (const bstring *)&be_const_str_classof, + (const bstring *)&be_const_str_SYMBOL_SAVE, + (const bstring *)&be_const_str_MAX31855DO, + (const bstring *)&be_const_str_NRG_SEL_INV, + (const bstring *)&be_const_str_DDSU666_TX, + (const bstring *)&be_const_str_sin, + (const bstring *)&be_const_str_ZIGBEE_TX, + (const bstring *)&be_const_str_HRE_CLOCK, + (const bstring *)&be_const_str_PZEM017_RX, + (const bstring *)&be_const_str_srand, + (const bstring *)&be_const_str_FTC532, + (const bstring *)&be_const_str_acos, + (const bstring *)&be_const_str_PWM1, + (const bstring *)&be_const_str_SSD1351_DC, + NULL, + (const bstring *)&be_const_str_CSE7766_RX, + (const bstring *)&be_const_str_SERIAL_5E2, + (const bstring *)&be_const_str_INPUT, + (const bstring *)&be_const_str_pi, + (const bstring *)&be_const_str_MHZ_TXD, + (const bstring *)&be_const_str_SYMBOL_DUMMY, + (const bstring *)&be_const_str_MHZ_RXD, + (const bstring *)&be_const_str_PMS5003_TX, + (const bstring *)&be_const_str_SDCARD_CS, + (const bstring *)&be_const_str_AudioOutput, + (const bstring *)&be_const_str_DYP_RX, + (const bstring *)&be_const_str_available, + (const bstring *)&be_const_str_BL0940_RX, + (const bstring *)&be_const_str_DEEPSLEEP, + NULL, + (const bstring *)&be_const_str_DCKI, + (const bstring *)&be_const_str_response_append, + (const bstring *)&be_const_str_ADC_LIGHT, + NULL, + (const bstring *)&be_const_str_HLW_CF, + (const bstring *)&be_const_str_NRG_SEL, + (const bstring *)&be_const_str_EPAPER29_CS, + (const bstring *)&be_const_str_BS814_DAT, + (const bstring *)&be_const_str_opt_call, + (const bstring *)&be_const_str_BOILER_OT_TX, + (const bstring *)&be_const_str_SYMBOL_TRASH, + NULL, + (const bstring *)&be_const_str_asstring, + (const bstring *)&be_const_str_CC1101_GDO2, + (const bstring *)&be_const_str_DDSU666_RX, + (const bstring *)&be_const_str_WIEGAND_D0, + (const bstring *)&be_const_str_global, + (const bstring *)&be_const_str_LMT01, + (const bstring *)&be_const_str_SYMBOL_PLUS, + (const bstring *)&be_const_str_load_font, + (const bstring *)&be_const_str_resp_cmnd, + (const bstring *)&be_const_str_lv_meter, + NULL, + (const bstring *)&be_const_str_NRG_CF1, + (const bstring *)&be_const_str_DSB, + NULL, + (const bstring *)&be_const_str_SSD1351_CS, + (const bstring *)&be_const_str_SYMBOL_BATTERY_1, + (const bstring *)&be_const_str_ADC_BUTTON_INV, + (const bstring *)&be_const_str_DAC, + (const bstring *)&be_const_str_PZEM004_RX, + (const bstring *)&be_const_str_ST7789_DC, + (const bstring *)&be_const_str_KEY1_PD, + (const bstring *)&be_const_str_KEY1_TC, + (const bstring *)&be_const_str_OUTPUT_OPEN_DRAIN, + (const bstring *)&be_const_str_OLED_RESET, + (const bstring *)&be_const_str_resp_cmnd_str, + (const bstring *)&be_const_str_SBR_RX, + (const bstring *)&be_const_str_ETH_PHY_MDIO, + (const bstring *)&be_const_str_A4988_STP, + (const bstring *)&be_const_str_dot_len, + (const bstring *)&be_const_str_IBEACON_TX, + (const bstring *)&be_const_str_ADC_JOY, + NULL, + NULL, + (const bstring *)&be_const_str_SERIAL_8O2, + (const bstring *)&be_const_str_lv_colorwheel, + NULL, + NULL, + (const bstring *)&be_const_str_opt_eq, + NULL, + (const bstring *)&be_const_str_SM16716_SEL, + (const bstring *)&be_const_str_decrypt, + (const bstring *)&be_const_str_A4988_DIR, + (const bstring *)&be_const_str_ceil, + (const bstring *)&be_const_str_KEY1_INV, + (const bstring *)&be_const_str_SYMBOL_BLUETOOTH, + (const bstring *)&be_const_str_dot_p2, + (const bstring *)&be_const_str_AS608_TX, + (const bstring *)&be_const_str_DHT11, + (const bstring *)&be_const_str_write, + NULL, + (const bstring *)&be_const_str_finish, + (const bstring *)&be_const_str_SYMBOL_DIRECTORY, + (const bstring *)&be_const_str_SYMBOL_MINUS, + (const bstring *)&be_const_str__ccmd, + (const bstring *)&be_const_str_GPS_TX, + (const bstring *)&be_const_str_SYMBOL_BATTERY_FULL, + (const bstring *)&be_const_str_save, + (const bstring *)&be_const_str_SERIAL_7N2, + (const bstring *)&be_const_str_SWT1, + NULL, + (const bstring *)&be_const_str_MAX7219CLK, + (const bstring *)&be_const_str_SERIAL_7E1, + (const bstring *)&be_const_str_ROT1A, + (const bstring *)&be_const_str_SDS0X1_TX, + NULL, + NULL, + (const bstring *)&be_const_str_pin, + (const bstring *)&be_const_str_ETH_PHY_MDC, + (const bstring *)&be_const_str_begin, + (const bstring *)&be_const_str_DHT22, + (const bstring *)&be_const_str_I2S_IN_CLK, + NULL, + (const bstring *)&be_const_str_AES_GCM, + (const bstring *)&be_const_str_CC1101_GDO0, + NULL, + (const bstring *)&be_const_str_set_timer, + (const bstring *)&be_const_str_BS814_CLK, + (const bstring *)&be_const_str_A4988_MS1, + (const bstring *)&be_const_str_I2S_IN_SLCT, + (const bstring *)&be_const_str_AZ_TXD, + (const bstring *)&be_const_str__ptr, + (const bstring *)&be_const_str_SERIAL_5N2, + (const bstring *)&be_const_str_OPEN_DRAIN, + (const bstring *)&be_const_str_KEY1, + (const bstring *)&be_const_str_SYMBOL_CHARGE, + (const bstring *)&be_const_str_POST, + (const bstring *)&be_const_str_INTERRUPT, + (const bstring *)&be_const_str__cb, + (const bstring *)&be_const_str_else, + NULL, + (const bstring *)&be_const_str_ADC_INPUT, + (const bstring *)&be_const_str_AS3935, + NULL, + (const bstring *)&be_const_str_SYMBOL_PREV, + (const bstring *)&be_const_str_AudioFileSource, + (const bstring *)&be_const_str_CNTR1, + (const bstring *)&be_const_str_SSPI_MAX31865_CS1, + (const bstring *)&be_const_str_PULLUP, + (const bstring *)&be_const_str_OneWire, + NULL, + (const bstring *)&be_const_str_HM10_TX, + NULL, + NULL, + (const bstring *)&be_const_str_SSD1331_DC, + (const bstring *)&be_const_str_PZEM0XX_TX, + NULL, + NULL, + (const bstring *)&be_const_str_SENSOR_END, + (const bstring *)&be_const_str_wifi, + (const bstring *)&be_const_str_ILI9341_CS, + (const bstring *)&be_const_str_ADC_PH, + (const bstring *)&be_const_str_CSE7766_TX, + (const bstring *)&be_const_str_SHELLY_DIMMER_BOOT0, + NULL, + (const bstring *)&be_const_str_AudioOutputI2S, + (const bstring *)&be_const_str_resize, + (const bstring *)&be_const_str_IEM3000_RX, + (const bstring *)&be_const_str_TFMINIPLUS_RX, + (const bstring *)&be_const_str_write_bytes, + (const bstring *)&be_const_str_SI7021, + NULL, + (const bstring *)&be_const_str_ROT1B, + (const bstring *)&be_const_str_PN532_RXD, + (const bstring *)&be_const_str_opt_neq, + (const bstring *)&be_const_str_TM1638DIO, + (const bstring *)&be_const_str_BUZZER_INV, + (const bstring *)&be_const_str_I2C_SDA, + (const bstring *)&be_const_str_SYMBOL_EJECT, + (const bstring *)&be_const_str_MIEL_HVAC_RX, + (const bstring *)&be_const_str_ILI9488_CS, + NULL, + NULL, + (const bstring *)&be_const_str_ARIRFRCV, + (const bstring *)&be_const_str_I2S_OUT_CLK, + (const bstring *)&be_const_str__buffer, + NULL, + (const bstring *)&be_const_str_OUTPUT_LO, + (const bstring *)&be_const_str_SDS0X1_RX, + NULL, + (const bstring *)&be_const_str_sinh, + (const bstring *)&be_const_str_RC522_CS, + (const bstring *)&be_const_str_ARIRFSEL, + (const bstring *)&be_const_str_DDS2382_RX, + (const bstring *)&be_const_str_MAX31855CLK, + (const bstring *)&be_const_str_SYMBOL_DOWN, + (const bstring *)&be_const_str_split, + (const bstring *)&be_const_str_AudioGeneratorMP3, + (const bstring *)&be_const_str_SDM630_RX, + (const bstring *)&be_const_str_BACKLIGHT, + (const bstring *)&be_const_str_, + (const bstring *)&be_const_str_detect, + NULL, + (const bstring *)&be_const_str_HRXL_RX, + (const bstring *)&be_const_str_SPI_DC, + (const bstring *)&be_const_str_OUTPUT, + (const bstring *)&be_const_str_HJL_CF, + (const bstring *)&be_const_str_SERIAL_5O2, + NULL, + (const bstring *)&be_const_str_IRRECV, + NULL, + (const bstring *)&be_const_str_AudioGeneratorWAV, + (const bstring *)&be_const_str_EPD_DATA, + (const bstring *)&be_const_str_geti, + (const bstring *)&be_const_str_SYMBOL_BACKSPACE, + (const bstring *)&be_const_str_RF_SENSOR, + (const bstring *)&be_const_str_AZ_RXD, + (const bstring *)&be_const_str_I2C_SCL, + (const bstring *)&be_const_str_EC_C25519, + (const bstring *)&be_const_str_I2S_IN_DATA, + NULL, + (const bstring *)&be_const_str_opt_add, + (const bstring *)&be_const_str_real, + (const bstring *)&be_const_str_wire_scan, + (const bstring *)&be_const_str_NONE, + (const bstring *)&be_const_str_ADC_BUTTON, + (const bstring *)&be_const_str_LE01MR_TX, + (const bstring *)&be_const_str_dot_p1, + (const bstring *)&be_const_str_SERIAL_5E1, + NULL, + (const bstring *)&be_const_str_opt_connect }; static const struct bconststrtab m_const_string_table = { - .size = 341, - .count = 683, + .size = 334, + .count = 668, .table = m_string_table }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h index d0512204e..f09506e53 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_arc.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_arc_map) { - { be_const_key(init, 2), be_const_func(lvbe_arc_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_arc_create) }, + { be_const_key(_class, -1), be_const_int(&lv_arc_class) }, }; static be_define_const_map( be_class_lv_arc_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h index c96c467db..76964a962 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_bar.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_bar_map) { - { be_const_key(init, 2), be_const_func(lvbe_bar_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_bar_create) }, + { be_const_key(_class, -1), be_const_int(&lv_bar_class) }, }; static be_define_const_map( be_class_lv_bar_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h index 29590fa55..b2ee1f2ad 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btn.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_btn_map) { - { be_const_key(init, 2), be_const_func(lvbe_btn_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_btn_create) }, + { be_const_key(_class, -1), be_const_int(&lv_btn_class) }, }; static be_define_const_map( be_class_lv_btn_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h index 3a029c9c3..10cd47c67 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_btnmatrix.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_btnmatrix_map) { - { be_const_key(init, 2), be_const_func(lvbe_btnmatrix_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_btnmatrix_create) }, + { be_const_key(_class, -1), be_const_int(&lv_btnmatrix_class) }, }; static be_define_const_map( be_class_lv_btnmatrix_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h deleted file mode 100644 index 80f07efb6..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_calendar.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_calendar_map) { - { be_const_key(init, 2), be_const_func(lvbe_calendar_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_calendar_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_calendar, - 1, - (bclass *)&be_class_lv_obj, - lv_calendar -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h index 4fd9bb5ea..ab1cd13f7 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_canvas.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_canvas_map) { - { be_const_key(init, 2), be_const_func(lvbe_canvas_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_canvas_create) }, + { be_const_key(_class, -1), be_const_int(&lv_canvas_class) }, }; static be_define_const_map( be_class_lv_canvas_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h index 6b09657c2..fbb9a5a35 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_chart.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_chart_map) { - { be_const_key(init, 2), be_const_func(lvbe_chart_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_chart_create) }, + { be_const_key(_class, -1), be_const_int(&lv_chart_class) }, }; static be_define_const_map( be_class_lv_chart_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h index 3165be40a..db6ef87c0 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_checkbox.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_checkbox_map) { - { be_const_key(init, 2), be_const_func(lvbe_checkbox_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_checkbox_create) }, + { be_const_key(_class, -1), be_const_int(&lv_checkbox_class) }, }; static be_define_const_map( be_class_lv_checkbox_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h index 1e16b7dd2..7eaaf4687 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_color.h @@ -1,10 +1,10 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_color_map) { - { be_const_key(init, -1), be_const_func(lco_init) }, - { be_const_key(tostring, 2), be_const_func(lco_tostring) }, { be_const_key(toint, -1), be_const_func(lco_toint) }, - { be_const_key(dot_p, 0), be_const_var(0) }, + { be_const_key(tostring, 0), be_const_func(lco_tostring) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, -1), be_const_func(lco_init) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_colorwheel.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_colorwheel.h new file mode 100644 index 000000000..ab8ca8e55 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_colorwheel.h @@ -0,0 +1,21 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_lv_colorwheel_map) { + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_colorwheel_create) }, + { be_const_key(_class, -1), be_const_int(&lv_colorwheel_class) }, +}; + +static be_define_const_map( + be_class_lv_colorwheel_map, + 5 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_lv_colorwheel, + 1, + (bclass *)&be_class_lv_obj, + lv_colorwheel +); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h deleted file mode 100644 index 609766430..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cont.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_cont_map) { - { be_const_key(init, 2), be_const_func(lvbe_cont_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_cont_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_cont, - 1, - (bclass *)&be_class_lv_obj, - lv_cont -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h deleted file mode 100644 index e9be78a9a..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_cpicker.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_cpicker_map) { - { be_const_key(init, 2), be_const_func(lvbe_cpicker_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_cpicker_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_cpicker, - 1, - (bclass *)&be_class_lv_obj, - lv_cpicker -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h index b5011f491..e54e7444b 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_dropdown.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_dropdown_map) { - { be_const_key(init, 2), be_const_func(lvbe_dropdown_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_dropdown_create) }, + { be_const_key(_class, -1), be_const_int(&lv_dropdown_class) }, }; static be_define_const_map( be_class_lv_dropdown_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h index 1e1ebc351..dcecfbacb 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_font.h @@ -1,9 +1,9 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_font_map) { - { be_const_key(init, -1), be_const_func(lvx_init) }, - { be_const_key(tostring, 2), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(init, -1), be_const_func(lvbe_font_create) }, + { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, + { be_const_key(_p, -1), be_const_var(0) }, }; static be_define_const_map( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h deleted file mode 100644 index cb86f23c3..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_gauge.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_gauge_map) { - { be_const_key(init, 2), be_const_func(lvbe_gauge_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_gauge_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_gauge, - 1, - (bclass *)&be_class_lv_obj, - lv_gauge -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h index f939812a2..2fc1565ef 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_group.h @@ -1,9 +1,9 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_group_map) { - { be_const_key(init, 2), be_const_func(lvbe_group_create) }, + { be_const_key(init, -1), be_const_func(lvbe_group_create) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h index e00cc4a9a..9d045bff5 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_img.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_img_map) { - { be_const_key(init, 2), be_const_func(lvbe_img_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_img_create) }, + { be_const_key(_class, -1), be_const_int(&lv_img_class) }, }; static be_define_const_map( be_class_lv_img_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h index c35b0d8cd..5c503e9f7 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_imgbtn.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_imgbtn_map) { - { be_const_key(init, 2), be_const_func(lvbe_imgbtn_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_imgbtn_create) }, + { be_const_key(_class, -1), be_const_int(&lv_imgbtn_class) }, }; static be_define_const_map( be_class_lv_imgbtn_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h index 591758d8f..e3cc68685 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_indev.h @@ -1,9 +1,9 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_indev_map) { - { be_const_key(init, 2), be_const_func(lv0_init) }, + { be_const_key(init, -1), be_const_func(lv0_init) }, { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h deleted file mode 100644 index f1ffefb5b..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_keyboard.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_keyboard_map) { - { be_const_key(init, 2), be_const_func(lvbe_keyboard_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_keyboard_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_keyboard, - 1, - (bclass *)&be_class_lv_obj, - lv_keyboard -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h index c05287a03..293667015 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_label.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_label_map) { - { be_const_key(init, 2), be_const_func(lvbe_label_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_label_create) }, + { be_const_key(_class, -1), be_const_int(&lv_label_class) }, }; static be_define_const_map( be_class_lv_label_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h index e3995f1e0..4aec12410 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_led.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_led_map) { - { be_const_key(init, 2), be_const_func(lvbe_led_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_led_create) }, + { be_const_key(_class, -1), be_const_int(&lv_led_class) }, }; static be_define_const_map( be_class_lv_led_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h index e12a41e8b..23d07c9d6 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_line.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_line_map) { - { be_const_key(init, 2), be_const_func(lvbe_line_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_line_create) }, + { be_const_key(_class, -1), be_const_int(&lv_line_class) }, }; static be_define_const_map( be_class_lv_line_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h deleted file mode 100644 index 72d00f372..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_linemeter.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_linemeter_map) { - { be_const_key(init, 2), be_const_func(lvbe_linemeter_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_linemeter_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_linemeter, - 1, - (bclass *)&be_class_lv_obj, - lv_linemeter -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h deleted file mode 100644 index ddbf5a12d..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_list.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_list_map) { - { be_const_key(init, 2), be_const_func(lvbe_list_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_list_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_list, - 1, - (bclass *)&be_class_lv_obj, - lv_list -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_meter.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_meter.h new file mode 100644 index 000000000..e013f2a04 --- /dev/null +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_meter.h @@ -0,0 +1,21 @@ +#include "be_constobj.h" + +static be_define_const_map_slots(be_class_lv_meter_map) { + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_meter_create) }, + { be_const_key(_class, -1), be_const_int(&lv_meter_class) }, +}; + +static be_define_const_map( + be_class_lv_meter_map, + 5 +); + +BE_EXPORT_VARIABLE be_define_const_class( + be_class_lv_meter, + 1, + (bclass *)&be_class_lv_obj, + lv_meter +); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h index f4402002b..26c557b78 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_msgbox.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_msgbox_map) { - { be_const_key(init, 2), be_const_func(lvbe_msgbox_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_msgbox_create) }, + { be_const_key(_class, -1), be_const_int(&lv_msgbox_class) }, }; static be_define_const_map( be_class_lv_msgbox_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h index 242fd7edb..71fe9af2b 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_obj.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_obj_map) { - { be_const_key(init, 2), be_const_func(lvbe_obj_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_obj_create) }, + { be_const_key(_class, -1), be_const_int(&lv_obj_class) }, }; static be_define_const_map( be_class_lv_obj_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h deleted file mode 100644 index 76ec1d349..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_objmask.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_objmask_map) { - { be_const_key(init, 2), be_const_func(lvbe_objmask_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_objmask_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_objmask, - 1, - (bclass *)&be_class_lv_obj, - lv_objmask -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h deleted file mode 100644 index 99b08a995..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_page.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_page_map) { - { be_const_key(init, 2), be_const_func(lvbe_page_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_page_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_page, - 1, - (bclass *)&be_class_lv_obj, - lv_page -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h index 32c3b9ec3..feb05546e 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_roller.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_roller_map) { - { be_const_key(init, 2), be_const_func(lvbe_roller_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_roller_create) }, + { be_const_key(_class, -1), be_const_int(&lv_roller_class) }, }; static be_define_const_map( be_class_lv_roller_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h index 2b5f13dee..84e65fe66 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_slider.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_slider_map) { - { be_const_key(init, 2), be_const_func(lvbe_slider_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_slider_create) }, + { be_const_key(_class, -1), be_const_int(&lv_slider_class) }, }; static be_define_const_map( be_class_lv_slider_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h index b511ad385..f847eb1da 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinbox.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_spinbox_map) { - { be_const_key(init, 2), be_const_func(lvbe_spinbox_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_spinbox_create) }, + { be_const_key(_class, -1), be_const_int(&lv_spinbox_class) }, }; static be_define_const_map( be_class_lv_spinbox_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h deleted file mode 100644 index d4c71b01e..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_spinner.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_spinner_map) { - { be_const_key(init, 2), be_const_func(lvbe_spinner_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_spinner_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_spinner, - 1, - (bclass *)&be_class_lv_obj, - lv_spinner -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h index 0cec3423e..72b469a6b 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_style.h @@ -1,9 +1,9 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_style_map) { - { be_const_key(init, 2), be_const_func(lvs_init) }, + { be_const_key(init, -1), be_const_func(lvs_init) }, { be_const_key(tostring, -1), be_const_func(lvs_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, + { be_const_key(_p, -1), be_const_var(0) }, { be_const_key(member, 0), be_const_func(lvx_member) }, }; diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h index c84d70737..c21de2f9d 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_switch.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_switch_map) { - { be_const_key(init, 2), be_const_func(lvbe_switch_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_switch_create) }, + { be_const_key(_class, -1), be_const_int(&lv_switch_class) }, }; static be_define_const_map( be_class_lv_switch_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h index b9449ea7d..d69ab1791 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_table.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_table_map) { - { be_const_key(init, 2), be_const_func(lvbe_table_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_table_create) }, + { be_const_key(_class, -1), be_const_int(&lv_table_class) }, }; static be_define_const_map( be_class_lv_table_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h deleted file mode 100644 index 39c793ba8..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tabview.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_tabview_map) { - { be_const_key(init, 2), be_const_func(lvbe_tabview_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_tabview_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_tabview, - 1, - (bclass *)&be_class_lv_obj, - lv_tabview -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h index 290a439bc..1153745fc 100644 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h +++ b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_textarea.h @@ -1,15 +1,16 @@ #include "be_constobj.h" static be_define_const_map_slots(be_class_lv_textarea_map) { - { be_const_key(init, 2), be_const_func(lvbe_textarea_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, + { be_const_key(tostring, 3), be_const_func(lvx_tostring) }, + { be_const_key(member, -1), be_const_func(lvx_member) }, + { be_const_key(_p, -1), be_const_var(0) }, + { be_const_key(init, 4), be_const_func(lvbe_textarea_create) }, + { be_const_key(_class, -1), be_const_int(&lv_textarea_class) }, }; static be_define_const_map( be_class_lv_textarea_map, - 4 + 5 ); BE_EXPORT_VARIABLE be_define_const_class( diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h deleted file mode 100644 index 88b478d11..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_tileview.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_tileview_map) { - { be_const_key(init, 2), be_const_func(lvbe_tileview_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_tileview_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_tileview, - 1, - (bclass *)&be_class_lv_obj, - lv_tileview -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h b/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h deleted file mode 100644 index edca478bd..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_class_lv_win.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_class_lv_win_map) { - { be_const_key(init, 2), be_const_func(lvbe_win_create) }, - { be_const_key(tostring, -1), be_const_func(lvx_tostring) }, - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(member, 0), be_const_func(lvx_member) }, -}; - -static be_define_const_map( - be_class_lv_win_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_class_lv_win, - 1, - (bclass *)&be_class_lv_obj, - lv_win -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lv_design_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lv_design_cb.h deleted file mode 100644 index 57553ca9b..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_lv_design_cb.h +++ /dev/null @@ -1,17 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_lv_design_cb_map) { - { be_const_key(call, -1), be_const_func(lv_design_cb_call) }, -}; - -static be_define_const_map( - be_lv_design_cb_map, - 1 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_lv_design_cb, - 0, - (bclass *)&be_lvgl_cb, - lv_design_cb -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lv_event_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lv_event_cb.h deleted file mode 100644 index 80882b52b..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_lv_event_cb.h +++ /dev/null @@ -1,17 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_lv_event_cb_map) { - { be_const_key(call, -1), be_const_func(lv_event_cb_call) }, -}; - -static be_define_const_map( - be_lv_event_cb_map, - 1 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_lv_event_cb, - 0, - (bclass *)&be_lvgl_cb, - lv_event_cb -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lv_gauge_format_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lv_gauge_format_cb.h deleted file mode 100644 index a04edfe20..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_lv_gauge_format_cb.h +++ /dev/null @@ -1,17 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_lv_gauge_format_cb_map) { - { be_const_key(call, -1), be_const_func(lv_gauge_format_cb_call) }, -}; - -static be_define_const_map( - be_lv_gauge_format_cb_map, - 1 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_lv_gauge_format_cb, - 0, - (bclass *)&be_lvgl_cb, - lv_gauge_format_cb -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lv_group_focus_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lv_group_focus_cb.h deleted file mode 100644 index b1f6902e4..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_lv_group_focus_cb.h +++ /dev/null @@ -1,17 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_lv_group_focus_cb_map) { - { be_const_key(call, -1), be_const_func(lv_group_focus_cb_call) }, -}; - -static be_define_const_map( - be_lv_group_focus_cb_map, - 1 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_lv_group_focus_cb, - 0, - (bclass *)&be_lvgl_cb, - lv_group_focus_cb -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lv_signal_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lv_signal_cb.h deleted file mode 100644 index c7841a809..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_lv_signal_cb.h +++ /dev/null @@ -1,17 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_lv_signal_cb_map) { - { be_const_key(call, -1), be_const_func(lv_signal_cb_call) }, -}; - -static be_define_const_map( - be_lv_signal_cb_map, - 1 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_lv_signal_cb, - 0, - (bclass *)&be_lvgl_cb, - lv_signal_cb -); diff --git a/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h b/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h deleted file mode 100644 index 433187e60..000000000 --- a/lib/libesp32/Berry/generate/be_fixed_be_lvgl_cb.h +++ /dev/null @@ -1,20 +0,0 @@ -#include "be_constobj.h" - -static be_define_const_map_slots(be_lvgl_cb_map) { - { be_const_key(dot_p, -1), be_const_var(0) }, - { be_const_key(tostring, 2), be_const_func(lvx_tostring) }, - { be_const_key(call, -1), be_const_func(lv_cb_call) }, - { be_const_key(init, 0), be_const_func(lv0_init) }, -}; - -static be_define_const_map( - be_lvgl_cb_map, - 4 -); - -BE_EXPORT_VARIABLE be_define_const_class( - be_lvgl_cb, - 1, - NULL, - lv_cb -); diff --git a/lib/libesp32/Berry/src/be_introspectlib.c b/lib/libesp32/Berry/src/be_introspectlib.c index 4115e9f7e..067d9ca3a 100644 --- a/lib/libesp32/Berry/src/be_introspectlib.c +++ b/lib/libesp32/Berry/src/be_introspectlib.c @@ -83,7 +83,7 @@ static int m_toptr(bvm *vm) int top = be_top(vm); if (top >= 1) { bvalue *v = be_indexof(vm, 1); - if (var_basetype(v) >= BE_GCOBJECT) { + if (var_basetype(v) >= BE_FUNCTION || var_type(v) == BE_COMPTR) { be_pushcomptr(vm, var_toobj(v)); be_return(vm); } else if (var_type(v) == BE_INT) { @@ -126,6 +126,9 @@ be_native_module_attr_table(introspect) { be_native_module_function("get", m_findmember), be_native_module_function("set", m_setmember), + + be_native_module_function("toptr", m_toptr), + be_native_module_function("fromptr", m_fromptr), }; be_define_native_module(introspect, NULL); diff --git a/lib/libesp32/Berry/tests/introspect_vcall.be b/lib/libesp32/Berry/tests/introspect_vcall.be deleted file mode 100644 index 0f54eb03c..000000000 --- a/lib/libesp32/Berry/tests/introspect_vcall.be +++ /dev/null @@ -1,96 +0,0 @@ -#- introspect vcall -# -import introspect - -#- -# -#- witness function dumping first 3 args -# -#- -# -def f(a,b,c) return [a,b,c] end - -#- simple calls with fixed args -# -assert(introspect.vcall(f) == [nil, nil, nil]) -assert(introspect.vcall(f, 1) == [1, nil, nil]) -assert(introspect.vcall(f, 1, 2) == [1, 2, nil]) -assert(introspect.vcall(f, 1, 2, 3, 4) == [1, 2, 3]) - -#- call with var args -# -assert(introspect.vcall(f, []) == [nil, nil, nil]) -assert(introspect.vcall(f, [1]) == [1, nil, nil]) -assert(introspect.vcall(f, [1, 2]) == [1, 2, nil]) -assert(introspect.vcall(f, [1, 2, 3, 4]) == [1, 2, 3]) - -#- mixed args -# -assert(introspect.vcall(f, 1, []) == [1, nil, nil]) -assert(introspect.vcall(f, 1, [2]) == [1, 2, nil]) -assert(introspect.vcall(f, 1, [2, "foo", 4]) == [1, 2, "foo"]) - -#- non terminal list -# -assert(introspect.vcall(f, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) - -#- -# -#- same tests with vararg function -# -#- -# -def g(a, *b) - if size(b) == 0 return [a, nil, nil] - elif size(b) == 1 return [a, b[0], nil] - elif size(b) > 1 return [a, b[0], b[1]] - end -end - -#- simple calls with fixed args -# -assert(introspect.vcall(g) == [nil, nil, nil]) -assert(introspect.vcall(g, 1) == [1, nil, nil]) -assert(introspect.vcall(g, 1, 2) == [1, 2, nil]) -assert(introspect.vcall(g, 1, 2, 3, 4) == [1, 2, 3]) - -#- call with var args -# -assert(introspect.vcall(g, []) == [nil, nil, nil]) -assert(introspect.vcall(g, [1]) == [1, nil, nil]) -assert(introspect.vcall(g, [1, 2]) == [1, 2, nil]) -assert(introspect.vcall(g, [1, 2, 3, 4]) == [1, 2, 3]) - -#- mixed args -# -assert(introspect.vcall(g, 1, []) == [1, nil, nil]) -assert(introspect.vcall(g, 1, [2]) == [1, 2, nil]) -assert(introspect.vcall(g, 1, [2, "foo", 4]) == [1, 2, "foo"]) - -#- non terminal list -# -assert(introspect.vcall(g, 1, [2, 3, 4], "foo") == [1, [2, 3, 4], "foo"]) - -#- -# -#- test with vararg only -# -#- -# -def c(*a) return size(a) end - -#- simple calls with fixed args -# -assert(introspect.vcall(c) == 0) -assert(introspect.vcall(c, 1) == 1) -assert(introspect.vcall(c, 1, 2) == 2) -assert(introspect.vcall(c, 1, 2, 3, 4) == 4) - -#- call with var args -# -assert(introspect.vcall(c, []) == 0) -assert(introspect.vcall(c, [1]) == 1) -assert(introspect.vcall(c, [1, 2]) == 2) -assert(introspect.vcall(c, [1, 2, 3, 4]) == 4) - -#- mixed args -# -assert(introspect.vcall(c, 1, []) == 1) -assert(introspect.vcall(c, 1, [2]) == 2) -assert(introspect.vcall(c, 1, [2, "foo", 4]) == 4) - -#- non terminal list -# -assert(introspect.vcall(c, 1, [2, 3, 4], "foo") == 3) - -#- -# -#- test with native function -# -#- -# -import string - -assert(introspect.vcall(string.format, "a") == "a") -assert(introspect.vcall(string.format, "%i", 1) == "1") -assert(introspect.vcall(string.format, "%i - %i", 1, 2) == "1 - 2") - -assert(introspect.vcall(string.format, "%i - %i", [1, 2]) == "1 - 2") -assert(introspect.vcall(string.format, "%i - %i", [1, 2, 3]) == "1 - 2") - -assert(introspect.vcall(string.format, "%i - %i", 1, [1, 2, 3]) == "1 - 1") diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp index 9d7414f6e..cc64444a0 100755 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.cpp @@ -28,13 +28,13 @@ static void lv_tick_handler(void) { lv_tick_inc(lv_tick_interval_ms); } uint32_t Touch_Status(uint32_t sel); -static bool touchscreen_read(struct _lv_indev_drv_t *indev_drv, lv_indev_data_t *data) { +static void touchscreen_read(lv_indev_drv_t *indev_drv, lv_indev_data_t *data) { //lv_coord_t last_x = 0, last_y = 0; //static uint8_t release_count = 0; data->point.x = Touch_Status(1); // Last-pressed coordinates data->point.y = Touch_Status(2); - data->state = Touch_Status(0); - return false; /*No buffering now so no more data read*/ + data->state = Touch_Status(0) ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED; + data->continue_reading = false; /*No buffering now so no more data read*/ } // OTHER LITTLEVGL VITALS -------------------------------------------------- @@ -231,7 +231,7 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { // LV_HOR_RES_MAX * LV_BUFFER_ROWS); // Initialize LvGL display buffers - lv_disp_buf_init( + lv_disp_draw_buf_init( &lv_disp_buf, lv_pixel_buf, // 1st half buf lv_pixel_buf2, // 2nd half buf lvgl_buffer_size); @@ -241,16 +241,16 @@ LvGLStatus Adafruit_LvGL_Glue::begin(Renderer *tft, void *touch, bool debug) { lv_disp_drv.hor_res = tft->width(); lv_disp_drv.ver_res = tft->height(); lv_disp_drv.flush_cb = lv_flush_callback; - lv_disp_drv.buffer = &lv_disp_buf; - lv_disp_drv.user_data = (lv_disp_drv_user_data_t)this; + lv_disp_drv.draw_buf = &lv_disp_buf; + lv_disp_drv.user_data = (void*)this; lv_disp_drv_register(&lv_disp_drv); // Initialize LvGL input device (touchscreen already started) - if ((touch)) { // Can also pass NULL if passive widget display + if (touch) { // Can also pass NULL if passive widget display lv_indev_drv_init(&lv_indev_drv); // Basic init lv_indev_drv.type = LV_INDEV_TYPE_POINTER; // Is pointer dev lv_indev_drv.read_cb = touchscreen_read; // Read callback - lv_indev_drv.user_data = (lv_indev_drv_user_data_t)this; + lv_indev_drv.user_data = (void*)this; lv_input_dev_ptr = lv_indev_drv_register(&lv_indev_drv); } diff --git a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h index 7969bb890..2074e0c7a 100755 --- a/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h +++ b/lib/libesp32_lvgl/Adafruit_LvGL_Glue-shadinger/Adafruit_LvGL_Glue.h @@ -42,7 +42,7 @@ public: private: lv_disp_drv_t lv_disp_drv; - lv_disp_buf_t lv_disp_buf; + lv_disp_draw_buf_t lv_disp_buf; lv_color_t *lv_pixel_buf; lv_color_t *lv_pixel_buf2; lv_indev_drv_t lv_indev_drv; diff --git a/lib/libesp32_lvgl/LVGL/CHANGELOG.md b/lib/libesp32_lvgl/LVGL/CHANGELOG.md deleted file mode 100644 index 04a973b94..000000000 --- a/lib/libesp32_lvgl/LVGL/CHANGELOG.md +++ /dev/null @@ -1,417 +0,0 @@ -# Changelog - -## v7.11.0 (Planned for 19.02.2021) - -### New features -- Add better screen orientation management with software rotation support -- Decide text animation's direction based on base_dir (when using LV_USE_BIDI) - -### Bugfixes -- fix(gauge) fix needle invalidation -- fix(bar) correct symmetric handling for vertical sliders - -## v7.10.1 (Planned for 16.02.2021) - -### Bugfixes -- fix(draw) overlap outline with background to prevent aliasing artifacts -- fix(indev) clear the indev's `act_obj` in `lv_indev_reset` -- fix(text) fix out of bounds read in `_lv_txt_get_width` -- fix(list) scroll list when button is focused using LV_KEY_NEXT/PREV -- fix(text) improve Arabic contextual analysis by adding hyphen processing and proper handling of lam-alef sequence -- fix(delete) delete animation after the children are deleted -- fix(gauge) consider paddigns for needle images - -## v7.10.0 - -### New features -- feat(indev) allow input events to be passed to disabled objects -- feat(spinbox) add inline get_step function for MicroPython support - -### Bugfixes -- fix(btnmatrix) fix lv_btnmatrix_get_active_btn_text() when used in a group - -## v7.9.1 - -### Bugfixes -- fix(cpicker) fix division by zero -- fix(dropdown) fix selecting options after the last one -- fix(msgbox) use the animation time provided -- fix(gpu_nxp_pxp) fix incorrect define name -- fix(indev) don't leave edit mode if there is only one object in the group -- fix(draw_rect) fix draw pattern stack-use-after-scope error - - -## v7.9.0 - -### New features -- feat(chart) add lv_chart_remove_series and lv_chart_hide_series -- feat(img_cahce) allow disabling image caching -- calendar: make get_day_of_week() public -- Added support for Zephyr integration - -### Bugfixes -- fix(draw_rect) free buffer used for arabic processing -- fix(win) arabic process the title of the window -- fix(dropdown) arabic process the option in lv_dropdown_add_option -- fix(textarea) buffer overflow in password mode with UTF-8 characters -- fix(textarea) cursor position after hiding character in password mode -- fix(linemeter) draw critical lines with correct color -- fix(kconfig) handle disable sprintf float correctly. -- fix(layout) stop layout after recursion threshold is reached -- fix(gauge) fix redraw with image needle - -## v7.8.1 - -### Bugfixes -- fix(lv_scr_load_anim) fix when multiple screen are loaded at tsame time with delay -- fix(page) fix LV_SCOLLBAR_MODE_DRAG - -## v7.8.0 (01.12.2020) - -### New features -- make DMA2D non blocking -- add unscii-16 built-in font -- add KConfig -- add lv_refr_get_fps_avg() - -### Bugfixes -- fix(btnmatrix) handle arabic texts in button matrices -- fix(indev) disabled object shouldn't absorb clicks but let the parent to be clicked -- fix(arabic) support processing again already processed texts with _lv_txt_ap_proc -- fix(textarea) support Arabic letter connections -- fix(dropdown) support Arabic letter connections -- fix(value_str) support Arabic letter connections in value string property -- fix(indev) in LV_INDEV_TYPE_BUTTON recognize 1 cycle long presses too -- fix(arc) make arc work with encoder -- fix(slider) adjusting the left knob too with encoder -- fix reference to LV_DRAW_BUF_MAX_NUM in lv_mem.c -- fix(polygon draw) join adjacent points if they are on the same coordinate -- fix(linemeter) fix invalidation when setting new value -- fix(table) add missing invalidation when changing cell type -- refactor(roller) rename LV_ROLLER_MODE_INIFINITE -> LV_ROLLER_MODE_INFINITE - -## v7.7.2 (17.11.2020) -### Bugfixes -- fix(draw_triangle): fix polygon/triangle drawing when the order of points is counter-clockwise -- fix(btnmatrix): fix setting the same map with modified pointers -- fix(arc) fix and improve arc dragging -- label: Repair calculate back `dot` character logical error which cause infinite loop. -- fix(theme_material): remove the bottom border from tabview header -- fix(imgbtn) guess a the closest available state with valid src -- fix(spinbox) update cursor position in lv_spinbox_set_step - -## v7.7.1 (03.11.2020) -### Bugfixes -- Respect btnmatrix's `one_check` in `lv_btnmatrix_set_btn_ctrl` -- Gauge: make the needle images to use the styles from `LV_GAUGE_PART_PART` -- Group: fix in `lv_group_remove_obj` to handle deleting hidden obejcts correctly - -## v7.7.0 (20.10.2020) - -### New features -- Add PXP GPU support (for NXP MCUs) -- Add VG-Lite GPU support (for NXP MCUs) -- Allow max. 16 cell types for table -- Add `lv_table_set_text_fmt()` -- Use margin on calendar header to set distances and padding to the size of the header -- Add `text_sel_bg` style property - -### Bugfixes -- Theme update to support text selection background -- Fix imgbtn state change -- Support RTL in table (draw columns right to left) -- Support RTL in pretty layout (draw columns right to left) -- Skip objects in groups if they are in disabled state -- Fix dropdown selection with RTL basedirection -- Fix rectangle border drawing with large width -- Fix `lv_win_clean()` - -## v7.6.1 (06.10.2020) - -### Bugfixes -- Fix BIDI support in dropdown list -- Fix copying base dir in `lv_obj_create` -- Handle sub pixel rendering in font loader -- Fix transitions with style caching -- Fix click focus -- Fix imgbtn image switching with empty style -- Material theme: do not set the text font to allow easy global font change - -## v7.6.0 (22.09.2020) - -### New features -- Check whether any style property has changed on a state change to decide if any redraw is required - -### Bugfixes -- Fix selection of options with non-ASCII letters in dropdown list -- Fix font loader to support LV_FONT_FMT_TXT_LARGE - -## v7.5.0 (15.09.2020) - -### New features -- Add `clean_dcache_cb` and `lv_disp_clean_dcache` to enable users to use their own cache management function -- Add `gpu_wait_cb` to wait until the GPU is working. It allows to run CPU a wait only when the rendered data is needed. -- Add 10px and 8ox built in fonts - -### Bugfixes -- Fix unexpected DEFOCUS on lv_page when clicking to bg after the scrollable -- Fix `lv_obj_del` and `lv_obj_clean` if the children list changed during deletion. -- Adjust button matrix button width to include padding when spanning multiple units. -- Add rounding to btnmatrix line height calculation -- Add `decmopr_buf` to GC roots -- Fix divisioin by zero in draw_pattern (lv_draw_rect.c) if the image or letter is not found -- Fix drawing images with 1 px height or width - -## v7.4.0 (01.09.2020) - -The main new features of v7.4 are run-time font loading, style caching and arc knob with value setting by click. - -### New features -- Add `lv_font_load()` function - Loads a `lv_font_t` object from a binary font file -- Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function -- Add style caching to reduce access time of properties with default value -- arc: add set value by click feature -- arc: add `LV_ARC_PART_KNOB` similarly to slider -- send gestures event if the object was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function. - -### Bugfixes -- Fix color bleeding on border drawing -- Fix using 'LV_SCROLLBAR_UNHIDE' after 'LV_SCROLLBAR_ON' -- Fix croping of last column/row if an image is zoomed -- Fix zooming and rotateing mosaic images -- Fix deleting tabview with LEFT/RIGHT tab position -- Fix btnmatrix to not send event when CLICK_TRIG = true and the cursor slid from a pressed button -- Fix roller width if selected text is larger than the normal - -## v7.3.1 (18.08.2020) - -### Bugfixes -- Fix drawing value string twice -- Rename `lv_chart_clear_serie` to `lv_chart_clear_series` and `lv_obj_align_origo` to `lv_obj_align_mid` -- Add linemeter's mirror feature again -- Fix text decor (udnerline strikethrough) with older versions of font converter -- Fix setting local style property multiple times -- Add missing background drawing and radius handling to image button -- Allow adding extra label to list buttons -- Fix crash if `lv_table_set_col_cnt` is called before `lv_table_set_row_cnt` for the first time -- Fix overflow in large image transformations -- Limit extra button click area of button matrix's buttons. With large paddings it was counter intuitive. (Gaps are mapped to button when clicked). -- Fix `lv_btnmatrix_set_one_check` not forcing exactly one button to be checked -- Fix color picker invalidation in rectangle mode -- Init disabled days to gray color in calendar - -## v7.3.0 (04.08.2020) - -### New features -- Add `lv_task_get_next` -- Add `lv_event_send_refresh`, `lv_event_send_refresh_recursive` to easily send `LV_EVENT_REFRESH` to object -- Add `lv_tabview_set_tab_name()` function - used to change a tab's name -- Add `LV_THEME_MATERIAL_FLAG_NO_TRANSITION` and `LV_THEME_MATERIAL_FLAG_NO_FOCUS` flags -- Reduce code size by adding: `LV_USE_FONT_COMPRESSED` and `LV_FONT_USE_SUBPX` and applying some optimization -- Add `LV_MEMCPY_MEMSET_STD` to use standard `memcpy` and `memset` - -### Bugfixes -- Do not print warning for missing glyph if its height OR width is zero. -- Prevent duplicated sending of `LV_EVENT_INSERT` from text area -- Tidy outer edges of cpicker widget. -- Remove duplicated lines from `lv_tabview_add_tab` -- btnmatrix: hadle combined states of buttons (e.g. chacked + disabled) -- textarea: fix typo in lv_textarea_set_sscrollbar_mode -- gauge: fix image needle drawing -- fix using freed memory in _lv_style_list_remove_style - -## v7.2.0 (21.07.2020) - -### New features -- Add screen transitions with `lv_scr_load_anim()` -- Add display background color, wallpaper and opacity. Shown when the screen is transparent. Can be used with `lv_disp_set_bg_opa/color/image()`. -- Add `LV_CALENDAR_WEEK_STARTS_MONDAY` -- Add `lv_chart_set_x_start_point()` function - Set the index of the x-axis start point in the data array -- Add `lv_chart_set_ext_array()` function - Set an external array of data points to use for the chart -- Add `lv_chart_set_point_id()` function - Set an individual point value in the chart series directly based on index -- Add `lv_chart_get_x_start_point()` function - Get the current index of the x-axis start point in the data array -- Add `lv_chart_get_point_id()` function - Get an individual point value in the chart series directly based on index -- Add `ext_buf_assigned` bit field to `lv_chart_series_t` structure - it's true if external buffer is assigned to series -- Add `lv_chart_set_series_axis()` to assign series to primary or secondary axis -- Add `lv_chart_set_y_range()` to allow setting range of secondary y axis (based on `lv_chart_set_range` but extended with an axis parameter) -- Allow setting different font for the selected text in `lv_roller` -- Add `theme->apply_cb` to replace `theme->apply_xcb` to make it compatible with the MicroPython binding -- Add `lv_theme_set_base()` to allow easy extension of built-in (or any) themes -- Add `lv_obj_align_x()` and `lv_obj_align_y()` functions -- Add `lv_obj_align_origo_x()` and `lv_obj_align_origo_y()` functions - -### Bugfixes -- `tileview` fix navigation when not screen sized -- Use 14px font by default to for better compatibility with smaller displays -- `linemeter` fix conversation of current value to "level" -- Fix drawing on right border -- Set the cursor image non clickable by default -- Improve mono theme when used with keyboard or encoder - -## v7.1.0 (07.07.2020) - -### New features -- Add `focus_parent` attribute to `lv_obj` -- Allow using buttons in encoder input device -- Add lv_btnmatrix_set/get_align capability -- DMA2D: Remove dependency on ST CubeMX HAL -- Added `max_used` propriety to `lv_mem_monitor_t` struct -- In `lv_init` test if the strings are UTF-8 encoded. -- Add `user_data` to themes -- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems. -- Add inline function lv_checkbox_get_state(const lv_obj_t * cb) to extend the checkbox functionality. -- Add inline function lv_checkbox_set_state(const lv_obj_t * cb, lv_btn_state_t state ) to extend the checkbox functionality. - -### Bugfixes -- `lv_img` fix invalidation area when angle or zoom changes -- Update the style handling to support Big endian MCUs -- Change some methods to support big endian hardware. -- remove use of c++ keyword 'new' in parameter of function lv_theme_set_base(). -- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems. -- Fix inserting chars in text area in big endian hardware. - -## v7.0.2 (16.06.2020) - -### Bugfixes -- `lv_textarea` fix wrong cursor position when clicked after the last character -- Change all text related indices from 16-bit to 32-bit integers throughout whole library. #1545 -- Fix gestures -- Do not call `set_px_cb` for transparent pixel -- Fix list button focus in material theme -- Fix crash when the a text area is cleared with the backspace of a keyboard -- Add version number to `lv_conf_template.h` -- Add log in true double buffering mode with `set_px_cb` -- `lv_dropdown`: fix missing `LV_EVENT_VALUE_CHANGED` event when used with encoder -- `lv_tileview`: fix if not the {0;0} tile is created first -- `lv_debug`: restructure to allow asserting in from `lv_misc` too -- add assert if `_lv_mem_buf_get()` fails -- `lv_textarea`: fix character delete in password mode -- Update `LV_OPA_MIN` and `LV_OPA_MAX` to widen the opacity processed range -- `lv_btnm` fix sending events for hidden buttons -- `lv_gaguge` make `lv_gauge_set_angle_offset` offset the labels and needles too -- Fix typo in the API `scrllable` -> `scrollable` -- `tabview` by default allow auto expanding the page only to right and bottom (#1573) -- fix crash when drawing gradient to the same color -- chart: fix memory leak -- `img`: improve hit test for transformed images - -## v7.0.1 (01.06.2020) - -### Bugfixes -- Make the Microptyhon working by adding the required variables as GC_ROOT -- Prefix some internal API functions with `_` to reduce the API of LVGL -- Fix built-in SimSun CJK font -- Fix UTF-8 encoding when `LV_USE_ARABIC_PERSIAN_CHARS` is enabled -- Fix DMA2D usage when 32 bit images directly blended -- Fix lv_roller in infinite mode when used with encoder -- Add `lv_theme_get_color_secondary()` -- Add `LV_COLOR_MIX_ROUND_OFS` to adjust color mixing to make it compatible with the GPU -- Improve DMA2D blending -- Remove memcpy from `lv_ll` (caused issues with some optimization settings) -- `lv_chart` fix X tick drawing -- Fix vertical dashed line drawing -- Some additional minor fixes and formattings - -## v7.0.0 (18.05.2020) - -### Documentation -The docs for v7 is available at https://docs.littlevgl.com/v7/en/html/index.html - -### Legal changes - -The name of the project is changed to LVGL and the new website is on https://lvgl.io - -LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services. - -### New drawing system -Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects. -A possible use-case of this system is to remove the overflowing content from the rounded edges. -It also allows drawing perfectly anti-aliased circles, lines, and arcs. -Internally, the drawings happen by defining masks (such as rounded rectangle, line, angle). -When something is drawn the currently active masks can make some pixels transparent. -For example, rectangle borders are drawn by using 2 rectangle masks: one mask removes the inner part and another the outer part. - -The API in this regard remained the same but some new functions were added: -- `lv_img_set_zoom`: set image object's zoom factor -- `lv_img_set_angle`: set image object's angle without using canvas -- `lv_img_set_pivot`: set the pivot point of rotation - -The new drawing engine brought new drawing features too. They are highlighted in the "style" section. - -### New style system -The old style system is replaced with a new more flexible and lightweighted one. -It uses an approach similar to CSS: support cascading styles, inheriting properties and local style properties per object. -As part of these updates, a lot of objects were reworked and the APIs have been changed. - -- more shadows options: *offset* and *spread* -- gradient stop position to shift the gradient area and horizontal gradient -- `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE` blending modes -- *clip corner*: crop the content on the rounded corners -- *text underline* and *strikethrough* -- dashed vertical and horizontal lines (*dash gap*, *dash_width*) -- *outline*: a border-like part drawn out of the background. Can have spacing to the background. -- *pattern*: display and image in the middle of the background or repeat it -- *value* display a text which is stored in the style. It can be used e.g. as a lighweighted text on buttons too. -- *margin*: similar to *padding* but used to keep space outside of the object - -Read the [Style](https://docs.littlevgl.com/v7/en/html/overview/style.html) section of the documentation to learn how the new styles system works. - -### GPU integration -To better utilize GPUs, from this version GPU usage can be integrated into LVGL. In `lv_conf.h` any supported GPUs can be enabled with a single configuration option. - -Right now, only ST's DMA2D (Chrom-ART) is integrated. More will in the upcoming releases. - -### Renames -The following object types are renamed: -- sw -> switch -- ta -> textarea -- cb -> checkbox -- lmeter -> linemeter -- mbox -> msgbox -- ddlist -> dropdown -- btnm -> btnmatrix -- kb -> keyboard -- preload -> spinner -- lv_objx folder -> lv_widgets -- LV_FIT_FILL -> LV_FIT_PARENT -- LV_FIT_FLOOD -> LV_FLOOD_MAX -- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT -- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM - -### Reworked and improved object -- `dropdown`: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right. -- `label`: `body_draw` is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before) -- `arc`: can draw bacground too. -- `btn`: doesn't store styles for each state because it's done naturally in the new style system. -- `calendar`: highlight the pressed datum. The used styles are changed: use `LV_CALENDAR_PART_DATE` normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work) -- `chart`: only has `LINE` and `COLUMN` types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. `LV_CHART_PART_SERIES_BG` also added to set a different style for the series area. Padding in `LV_CHART_PART_BG` makes the series area smaller, and it ensures space for axis labels/numbers. -- `linemeter`, `gauge`: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines. -- `gauge`: `lv_gauge_set_needle_img` allows use image as needle -- `canvas`: allow drawing to true color alpha and alpha only canvas, add `lv_canvas_blur_hor/ver` and rename `lv_canvas_rotate` to `lv_canvas_transform` -- `textarea`: If available in the font use bullet (`U+2022`) character in text area password - -### New object types -- `lv_objmask`: masks can be added to it. The children will be masked accordingly. - -### Others -- Change the built-in fonts to [Montserrat](https://fonts.google.com/specimen/Montserrat) and add built-in fonts from 12 px to 48 px for every 2nd size. -- Add example CJK and Arabic/Persian/Hebrew built-in font -- Add ° and "bullet" to the built-in fonts -- Add Arabic/Persian script support: change the character according to its position in the text. -- Add `playback_time` to animations. -- Add `repeat_count` to animations instead of the current "repeat forever". -- Replace `LV_LAYOUT_PRETTY` with `LV_LAYOUT_PRETTY_TOP/MID/BOTTOM` - -### Demos -- [lv_examples](https://github.com/littlevgl/lv_examples) was reworked and new examples and demos were added - -### New release policy -- Maintain this Changelog for every release -- Save old major version in new branches. E.g. `release/v6` -- Merge new features and fixes directly into `master` and release a patch or minor releases every 2 weeks. - -### Migrating from v6 to v7 -- First and foremost, create a new `lv_conf.h` based on `lv_conf_template.h`. -- To try the new version it suggested using a simulator project and see the examples. -- If you have a running project, the most difficult part of the migration is updating to the new style system. Unfortunately, there is no better way than manually updating to the new format. -- The other parts are mainly minor renames and refactoring as described above. diff --git a/lib/libesp32_lvgl/LVGL/CMakeLists.txt b/lib/libesp32_lvgl/LVGL/CMakeLists.txt deleted file mode 100644 index 0a65216f6..000000000 --- a/lib/libesp32_lvgl/LVGL/CMakeLists.txt +++ /dev/null @@ -1,67 +0,0 @@ -if(ESP_PLATFORM) - -file(GLOB_RECURSE SOURCES src/*.c) - -idf_component_register(SRCS ${SOURCES} - INCLUDE_DIRS . src - REQUIRES main) - -target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_CONF_INCLUDE_SIMPLE") - -if (CONFIG_LV_MEM_CUSTOM) - if (CONFIG_LV_MEM_CUSTOM_ALLOC) - target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_MEM_CUSTOM_ALLOC=${CONFIG_LV_MEM_CUSTOM_ALLOC}") - endif() - - if (CONFIG_LV_MEM_CUSTOM_FREE) - target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_MEM_CUSTOM_FREE=${CONFIG_LV_MEM_CUSTOM_FREE}") - endif() -endif() - -if (CONFIG_LV_TICK_CUSTOM) - if (CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR) - target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_TICK_CUSTOM_SYS_TIME_EXPR=${CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR}") - endif() -endif() - -if (CONFIG_LV_USER_DATA_FREE) - target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_USER_DATA_FREE=${CONFIG_LV_USER_DATA_FREE}") -endif() - -if (CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM) - target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_ATTRIBUTE_FAST_MEM=IRAM_ATTR") -endif() - -elseif(ZEPHYR_BASE) - -if(CONFIG_LVGL) - -zephyr_include_directories(${ZEPHYR_BASE}/lib/gui/lvgl) - -target_include_directories(lvgl INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) - -zephyr_compile_definitions(LV_CONF_KCONFIG_EXTERNAL_INCLUDE=) - -zephyr_compile_definitions_ifdef(CONFIG_LV_MEM_CUSTOM - LV_MEM_CUSTOM_ALLOC=${CONFIG_LV_MEM_CUSTOM_ALLOC} - ) -zephyr_compile_definitions_ifdef(CONFIG_LV_MEM_CUSTOM - LV_MEM_CUSTOM_FREE=${CONFIG_LV_MEM_CUSTOM_FREE} - ) -zephyr_compile_definitions_ifdef(CONFIG_LV_TICK_CUSTOM - LV_TICK_CUSTOM_SYS_TIME_EXPR=${CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR} - ) - -zephyr_library() - -file(GLOB_RECURSE SOURCES src/*.c) -zephyr_library_sources(${SOURCES}) - -endif() # CONFIG_LVGL - -else() - -file(GLOB_RECURSE SOURCES src/*.c) -add_library(lvgl STATIC ${SOURCES}) - -endif() diff --git a/lib/libesp32_lvgl/LVGL/Kconfig b/lib/libesp32_lvgl/LVGL/Kconfig deleted file mode 100644 index 0e48abbb9..000000000 --- a/lib/libesp32_lvgl/LVGL/Kconfig +++ /dev/null @@ -1,1222 +0,0 @@ -# Kconfig file for LVGL v7.11.0 - -menu "LVGL configuration" - - config LV_ATTRIBUTE_FAST_MEM_USE_IRAM - bool "Set IRAM as LV_ATTRIBUTE_FAST_MEM" - help - Set this option to configure IRAM as LV_ATTRIBUTE_FAST_MEM - - config LV_CONF_MINIMAL - bool "LVGL minimal configuration." - - # Define CONFIG_LV_CONF_SKIP so we can use LVGL - # without lv_conf.h file, the lv_conf_internal.h and - # lv_conf_kconfig.h files are used instead. - config LV_CONF_SKIP - bool - default y - - config LV_HOR_RES_MAX - int "Maximal horizontal resolution to support by the library." - default 480 - - config LV_VER_RES_MAX - int "Maximal vertical resolution to support by the library." - default 320 - - choice - prompt "Color depth." - default LV_COLOR_DEPTH_16 - help - Color depth to be used. - - config LV_COLOR_DEPTH_32 - bool "32: ARGB8888" - config LV_COLOR_DEPTH_16 - bool "16: RGB565" - config LV_COLOR_DEPTH_8 - bool "8: RGB232" - config LV_COLOR_DEPTH_1 - bool "1: 1 byte per pixel" - endchoice - - config LV_COLOR_DEPTH - int - default 1 if LV_COLOR_DEPTH_1 - default 8 if LV_COLOR_DEPTH_8 - default 16 if LV_COLOR_DEPTH_16 - default 32 if LV_COLOR_DEPTH_32 - - config LV_COLOR_16_SWAP - bool "Swap the 2 bytes of RGB565 color. Useful if the display has a 8 bit interface (e.g. SPI)." - depends on LV_COLOR_DEPTH_16 - - config LV_COLOR_SCREEN_TRANSP - bool "Enable screen transparency." - depends on LV_COLOR_DEPTH_32 - help - Useful for OSD or other overlapping GUIs. - Requires `LV_COLOR_DEPTH = 32` colors and the screen's style - should be modified: `style.body.opa = ...`. - - config LV_COLOR_TRANSP_HEX - hex "Images pixels with this color will not be drawn (with chroma keying)." - depends on LV_COLOR_SCREEN_TRANSP - range 0x000000 0xFFFFFF - default 0x00FF00 - help - See lv_misc/lv_color.h for some color values examples. - - config LV_ANTIALIAS - bool "Enable anti-aliasing (lines, and radiuses will be smoothed)." - default y if !LV_CONF_MINIMAL - - config LV_DISP_DEF_REFR_PERIOD - int "Default display refresh period (ms)." - default 30 - help - Can be changed in the display driver (`lv_disp_drv_t`). - - config LV_DPI - int "DPI (Dots per inch in px)." - default 130 - - config LV_DISP_SMALL_LIMIT - int "Small display limit" - default 30 - help - According to the width of the display (hor. res. / dpi) the - displays fall in 4 categories. This is the upper limit for small - displays. - - config LV_DISP_MEDIUM_LIMIT - int "Medium display limit" - default 50 - help - According to the width of the display (hor. res. / dpi) the - displays fall in 4 categories. This is the upper limit for medium - displays. - - config LV_DISP_LARGE_LIMIT - int "Large display limit" - default 70 - help - According to the width of the display (hor. res. / dpi) the - displays fall in 4 categories. This is the upper limit for large - displays. - - menu "Memory manager settings" - config LV_MEM_CUSTOM - bool - prompt "If true use custom malloc/free, otherwise use the built-in `lv_mem_alloc` and `lv_mem_free`" - - config LV_MEM_CUSTOM_INCLUDE - string - prompt "Header to include for the custom memory function" - default "stdlib.h" - depends on LV_MEM_CUSTOM - - config LV_MEM_CUSTOM_ALLOC - string - prompt "Wrapper to malloc" - default "malloc" - depends on LV_MEM_CUSTOM - - config LV_MEM_CUSTOM_FREE - string - prompt "Wrapper to free" - default "free" - depends on LV_MEM_CUSTOM - - config LV_MEM_SIZE_KILOBYTES - int - prompt "Size of the memory used by `lv_mem_alloc` in kilobytes (>= 2kB)" - range 2 128 - default 32 - depends on !LV_MEM_CUSTOM - - config LV_MEMCPY_MEMSET_STD - bool - prompt "Use the standard memcpy and memset instead of LVGL's own functions" - endmenu - - menu "Indev device settings" - config LV_INDEV_DEF_READ_PERIOD - int "Input device read period [ms]." - default 30 - config LV_INDEV_DEF_DRAG_LIMIT - int "Drag threshold in pixels." - default 10 - config LV_INDEV_DEF_DRAG_THROW - int "Drag throw slow-down in [%]. Greater value -> faster slow down." - default 10 - config LV_INDEV_DEF_LONG_PRESS_TIME - int "Long press time [ms]. Time to send 'LV_EVENT_LONG_PRESSED'." - default 400 - config LV_INDEV_DEF_LONG_PRESS_REP_TIME - int "Repeated trigger period in long press [ms]. Time between 'LV_EVENT_LONG_PRESSED_REPEAT'." - default 100 - config LV_INDEV_DEF_GESTURE_LIMIT - int "Gesture threshold in pixels." - default 50 - config LV_INDEV_DEF_GESTURE_MIN_VELOCITY - int "Gesture min velocity at release before swipe (pixels)." - default 3 - - endmenu - - menu "Feature usage" - config LV_USE_ANIMATION - bool "Enable the Animations." - default y if !LV_CONF_MINIMAL - config LV_USE_SHADOW - bool "Enable shadow drawing." - default y if !LV_CONF_MINIMAL - config LV_SHADOW_CACHE_SIZE - int "Shadow cache size" - depends on LV_USE_SHADOW - default 0 - help - Allow buffering some shadow calculation - LV_SHADOW_CACHE_SIZE is the max. shadow size to buffer, - where shadow size is `shadow_width + radius` - Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost. - config LV_USE_OUTLINE - bool "Enable outline drawing on rectangles." - default y if !LV_CONF_MINIMAL - config LV_USE_PATTERN - bool "Enable pattern drawing on rectangles." - default y if !LV_CONF_MINIMAL - config LV_USE_VALUE_STR - bool "Enable value string drawing on rectangles." - default y if !LV_CONF_MINIMAL - config LV_USE_BLEND_MODES - bool "Use other blend modes then normal (LV_BLEND_MODE_...)." - default y if !LV_CONF_MINIMAL - config LV_USE_OPA_SCALE - bool "Use the 'opa_scale' style property to set the opacity of an object and it's children at once." - default y if !LV_CONF_MINIMAL - config LV_USE_IMG_TRANSFORM - bool "Use image zoom and rotation." - default y if !LV_CONF_MINIMAL - config LV_USE_GROUP - bool "Enable object groups (for keyboard/encoder navigation)." - default y if !LV_CONF_MINIMAL - config LV_USE_GPU - bool "Enable GPU interface (only enabled 'gpu_fill_cb' and 'gpu_blend_cb' in the disp. drv." - default y if !LV_CONF_MINIMAL - config LV_USE_GPU_STM32_DMA2D - bool "Enable STM32 DMA2D." - config LV_GPU_DMA2D_CMSIS_INCLUDE - string "include path of CMSIS header of target processor" - depends on LV_USE_GPU_STM32_DMA2D - default "" - help - e.g. "stm32f769xx.h" or "stm32f429xx.h" - config LV_USE_GPU_NXP_PXP - bool "Use PXP for CPU off-load on NXP RTxxx platforms." - config LV_USE_GPU_NXP_PXP_AUTO_INIT - bool "Call lv_gpu_nxp_pxp_init() automatically or manually." - depends on LV_USE_GPU_NXP_PXP - help - 1: Add default bare metal and FreeRTOS interrupt handling - routines for PXP (lv_gpu_nxp_pxp_osa.c) and call - lv_gpu_nxp_pxp_init() automatically during lv_init(). - Note that symbol FSL_RTOS_FREE_RTOS has to be defined in order - to use FreeRTOS OSA, otherwise bare-metal implementation is - selected. - 0: lv_gpu_nxp_pxp_init() has to be called manually before - lv_init(). - config LV_USE_GPU_NXP_VG_LITE - bool "Use VG-Lite for CPU off-load on NXP RTxxx platforms." - config LV_USE_FILESYSTEM - bool "Enable file system (might be required for images." - default y if !LV_CONF_MINIMAL - config LV_USE_USER_DATA - bool "Add a 'user_data' to drivers and objects." - config LV_USE_USER_DATA_FREE - bool "Free the user data field upon object deletion" - depends on LV_USE_USER_DATA - config LV_USER_DATA_FREE_INCLUDE - string "Header for user data free function" - default "something.h" - depends on LV_USE_USER_DATA_FREE - config LV_USER_DATA_FREE - string "Invoking for user data free function. It has the lv_obj_t pointer as single parameter." - default "(user_data_free)" - depends on LV_USE_USER_DATA_FREE - config LV_USE_PERF_MONITOR - bool "Show CPU usage and FPS count in the right bottom corner." - config LV_USE_API_EXTENSION_V6 - bool "Use the functions and types from the older (v6) API if possible." - default y if !LV_CONF_MINIMAL - config LV_USE_API_EXTENSION_V7 - bool "Use the functions and types from the older (v7) API if possible." - default y if !LV_CONF_MINIMAL - endmenu - - menu "Image decoder and cache" - config LV_IMG_CF_INDEXED - bool "Enable indexed (palette) images." - default y if !LV_CONF_MINIMAL - config LV_IMG_CF_ALPHA - bool "Enable alpha indexed images." - default y if !LV_CONF_MINIMAL - config LV_IMG_CACHE_DEF_SIZE - int "Default image cache size." - default 1 - help - Image caching keeps the images opened. If only the built-in - image formats are used there is no real advantage of caching. - (I.e. no new image decoder is added) - - With complex image decoders (e.g. PNG or JPG) caching can - save the continuous open/decode of images. - However the opened images might consume additional RAM. - LV_IMG_CACHE_DEF_SIZE must be >= 1 - endmenu - - menu "Compiler Settings" - config LV_BIG_ENDIAN_SYSTEM - bool "For big endian systems set to 1" - endmenu - - menu "HAL Settings" - config LV_TICK_CUSTOM - bool - prompt "Use a custom tick source" - - config LV_TICK_CUSTOM_INCLUDE - string - prompt "Header for the system time function" - default "Arduino.h" - depends on LV_TICK_CUSTOM - - config LV_TICK_CUSTOM_SYS_TIME_EXPR - string - prompt "Expression evaluating to current system time in ms" - default "millis()" - depends on LV_TICK_CUSTOM - endmenu - - menu "Log Settings" - config LV_USE_LOG - bool "Enable the log module" - - choice - bool "Default log verbosity" if LV_USE_LOG - default LV_LOG_LEVEL_INFO - help - Specify how important log should be added. - - config LV_LOG_LEVEL_TRACE - bool "Trace - Detailed information" - config LV_LOG_LEVEL_INFO - bool "Info - Log important events" - config LV_LOG_LEVEL_WARN - bool "Warn - Log if something unwanted happened" - config LV_LOG_LEVEL_ERROR - bool "Error - Only critical issues" - config LV_LOG_LEVEL_NONE - bool "None - Do not log anything" - endchoice - - config LV_LOG_LEVEL - int - default 0 if LV_LOG_LEVEL_TRACE - default 1 if LV_LOG_LEVEL_INFO - default 2 if LV_LOG_LEVEL_WARN - default 3 if LV_LOG_LEVEL_ERROR - default 4 if LV_LOG_LEVEL_USER - default 5 if LV_LOG_LEVEL_NONE - - config LV_LOG_PRINTF - bool "Print the log with 'printf'" if LV_USE_LOG - help - Use printf for log output. - If not set the user needs to register a callback with `lv_log_register_print_cb`. - - endmenu - - menu "Debug Settings" - config LV_USE_DEBUG - bool "Enable Debug" - - config LV_USE_ASSERT_NULL - bool "Check if the parameter is NULL. (Quite fast)" - default y if !LV_CONF_MINIMAL - - config LV_USE_ASSERT_MEM - bool "Checks is the memory is successfully allocated or no. (Quite fast)" - default y if !LV_CONF_MINIMAL - - config LV_USE_ASSERT_MEM_INTEGRITY - bool "Check the integrity of `lv_mem` after critical operations. (Slow)" - - config LV_USE_ASSERT_STR - bool "Search for NULL, very long strings, invalid characters, and unnatural repetitions. (Slow)" - help - If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled). - - config LV_USE_ASSERT_OBJ - bool "Check NULL, the object's type and existence (e.g. not deleted). (Quite slow)." - help - If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled) - - config LV_USE_ASSERT_STYLE - bool "Check if the styles are properly initialized. (Fast)" - endmenu - - menu "Font usage" - config LV_FONT_FMT_TXT_LARGE - bool "Enable it if you have fonts with a lot of characters." - help - The limit depends on the font size, font face and bpp - but with > 10,000 characters if you see issues probably you - need to enable it. - - config LV_USE_FONT_SUBPX - bool "Enable subpixel rendering." - - config LV_FONT_SUBPX_BGR - bool "Use BGR instead RGB for sub-pixel rendering." - depends on LV_USE_FONT_SUBPX - help - Set the pixel order of the display. - Important only if "subpx fonts" are used. - With "normal" font it doesn't matter. - - menu "Enable built-in fonts" - config LV_FONT_MONTSERRAT_8 - bool "Enable Montserrat 8" - config LV_FONT_MONTSERRAT_10 - bool "Enable Montserrat 10" - config LV_FONT_MONTSERRAT_12 - bool "Enable Montserrat 12" - config LV_FONT_MONTSERRAT_14 - bool "Enable Montserrat 14" - default y if !LV_CONF_MINIMAL - config LV_FONT_MONTSERRAT_16 - bool "Enable Montserrat 16" - config LV_FONT_MONTSERRAT_18 - bool "Enable Montserrat 18" - config LV_FONT_MONTSERRAT_20 - bool "Enable Montserrat 20" - config LV_FONT_MONTSERRAT_22 - bool "Enable Montserrat 22" - config LV_FONT_MONTSERRAT_24 - bool "Enable Montserrat 24" - config LV_FONT_MONTSERRAT_26 - bool "Enable Montserrat 26" - config LV_FONT_MONTSERRAT_28 - bool "Enable Montserrat 28" - config LV_FONT_MONTSERRAT_30 - bool "Enable Montserrat 30" - config LV_FONT_MONTSERRAT_32 - bool "Enable Montserrat 32" - config LV_FONT_MONTSERRAT_34 - bool "Enable Montserrat 34" - config LV_FONT_MONTSERRAT_36 - bool "Enable Montserrat 36" - config LV_FONT_MONTSERRAT_38 - bool "Enable Montserrat 38" - config LV_FONT_MONTSERRAT_40 - bool "Enable Montserrat 40" - config LV_FONT_MONTSERRAT_42 - bool "Enable Montserrat 42" - config LV_FONT_MONTSERRAT_44 - bool "Enable Montserrat 44" - config LV_FONT_MONTSERRAT_46 - bool "Enable Montserrat 46" - config LV_FONT_MONTSERRAT_48 - bool "Enable Montserrat 48" - config LV_FONT_UNSCII_8 - bool "Enable UNSCII 8 (Perfect monospace font)" - default y if LV_CONF_MINIMAL - config LV_FONT_UNSCII_16 - bool "Enable UNSCII 16 (Perfect monospace font)" - config LV_FONT_MONTSERRAT12SUBPX - bool "Enable Montserrat 12 sub-pixel" - config LV_FONT_MONTSERRAT28COMPRESSED - bool "Enable Montserrat 28 compressed" - config LV_FONT_DEJAVU_16_PERSIAN_HEBREW - bool "Enable Dejavu 16 Persian, Hebrew, Arabic letters" - config LV_FONT_SIMSUN_16_CJK - bool "Enable Simsun 16 CJK" - endmenu - - choice LV_FONT_DEFAULT_SMALL - prompt "Select theme default small font" - default LV_FONT_DEFAULT_SMALL_MONTSERRAT_16 if !LV_CONF_MINIMAL - default LV_FONT_DEFAULT_SMALL_UNSCII_8 if LV_CONF_MINIMAL - help - Select theme default small font - - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_8 - bool "Montserrat 8" - select LV_FONT_MONTSERRAT_8 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_10 - bool "Montserrat 10" - select LV_FONT_MONTSERRAT_10 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_12 - bool "Montserrat 12" - select LV_FONT_MONTSERRAT_12 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_14 - bool "Montserrat 14" - select LV_FONT_MONTSERRAT_14 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_16 - bool "Montserrat 16" - select LV_FONT_MONTSERRAT_16 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_18 - bool "Montserrat 18" - select LV_FONT_MONTSERRAT_18 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_20 - bool "Montserrat 20" - select LV_FONT_MONTSERRAT_20 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_22 - bool "Montserrat 22" - select LV_FONT_MONTSERRAT_22 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_24 - bool "Montserrat 24" - select LV_FONT_MONTSERRAT_24 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_26 - bool "Montserrat 26" - select LV_FONT_MONTSERRAT_26 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_28 - bool "Montserrat 28" - select LV_FONT_MONTSERRAT_28 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_30 - bool "Montserrat 30" - select LV_FONT_MONTSERRAT_30 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_32 - bool "Montserrat 32" - select LV_FONT_MONTSERRAT_32 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_34 - bool "Montserrat 34" - select LV_FONT_MONTSERRAT_34 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_36 - bool "Montserrat 36" - select LV_FONT_MONTSERRAT_36 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_38 - bool "Montserrat 38" - select LV_FONT_MONTSERRAT_38 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_40 - bool "Montserrat 40" - select LV_FONT_MONTSERRAT_40 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_42 - bool "Montserrat 42" - select LV_FONT_MONTSERRAT_42 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_44 - bool "Montserrat 44" - select LV_FONT_MONTSERRAT_44 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_46 - bool "Montserrat 46" - select LV_FONT_MONTSERRAT_46 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT_48 - bool "Montserrat 48" - select LV_FONT_MONTSERRAT_48 - config LV_FONT_DEFAULT_SMALL_UNSCII_8 - bool "UNSCII 8 (Perfect monospace font)" - select LV_FONT_UNSCII_8 - config LV_FONT_DEFAULT_SMALL_UNSCII_16 - bool "UNSCII 16 (Perfect monospace font)" - select LV_FONT_UNSCII_16 - config LV_FONT_DEFAULT_SMALL_MONTSERRAT12SUBPX - bool "Montserrat 12 sub-pixel" - select LV_FONT_MONTSERRAT12SUBPX - config LV_FONT_DEFAULT_SMALL_MONTSERRAT28COMPRESSED - bool "Montserrat 28 compressed" - select LV_FONT_MONTSERRAT28COMPRESSED - config LV_FONT_DEFAULT_SMALL_DEJAVU_16_PERSIAN_HEBREW - bool "Dejavu 16 Persian, Hebrew, Arabic letters" - select LV_FONT_DEJAVU_16_PERSIAN_HEBREW - config LV_FONT_DEFAULT_SMALL_SIMSUN_16_CJK - bool "Simsun 16 CJK" - select LV_FONT_SIMSUN_16_CJK - endchoice - - choice LV_FONT_DEFAULT_NORMAL - prompt "Select theme default normal font" - default LV_FONT_DEFAULT_NORMAL_MONTSERRAT_16 if !LV_CONF_MINIMAL - default LV_FONT_DEFAULT_NORMAL_UNSCII_8 if LV_CONF_MINIMAL - help - Select theme default normal font - - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_8 - bool "Montserrat 8" - select LV_FONT_MONTSERRAT_8 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_10 - bool "Montserrat 10" - select LV_FONT_MONTSERRAT_10 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_12 - bool "Montserrat 12" - select LV_FONT_MONTSERRAT_12 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_14 - bool "Montserrat 14" - select LV_FONT_MONTSERRAT_14 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_16 - bool "Montserrat 16" - select LV_FONT_MONTSERRAT_16 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_18 - bool "Montserrat 18" - select LV_FONT_MONTSERRAT_18 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_20 - bool "Montserrat 20" - select LV_FONT_MONTSERRAT_20 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_22 - bool "Montserrat 22" - select LV_FONT_MONTSERRAT_22 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_24 - bool "Montserrat 24" - select LV_FONT_MONTSERRAT_24 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_26 - bool "Montserrat 26" - select LV_FONT_MONTSERRAT_26 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_28 - bool "Montserrat 28" - select LV_FONT_MONTSERRAT_28 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_30 - bool "Montserrat 30" - select LV_FONT_MONTSERRAT_30 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_32 - bool "Montserrat 32" - select LV_FONT_MONTSERRAT_32 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_34 - bool "Montserrat 34" - select LV_FONT_MONTSERRAT_34 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_36 - bool "Montserrat 36" - select LV_FONT_MONTSERRAT_36 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_38 - bool "Montserrat 38" - select LV_FONT_MONTSERRAT_38 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_40 - bool "Montserrat 40" - select LV_FONT_MONTSERRAT_40 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_42 - bool "Montserrat 42" - select LV_FONT_MONTSERRAT_42 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_44 - bool "Montserrat 44" - select LV_FONT_MONTSERRAT_44 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_46 - bool "Montserrat 46" - select LV_FONT_MONTSERRAT_46 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT_48 - bool "Montserrat 48" - select LV_FONT_MONTSERRAT_48 - config LV_FONT_DEFAULT_NORMAL_UNSCII_8 - bool "UNSCII 8 (Perfect monospace font)" - select LV_FONT_UNSCII_8 - config LV_FONT_DEFAULT_NORMAL_UNSCII_16 - bool "UNSCII 16 (Perfect monospace font)" - select LV_FONT_UNSCII_16 - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT12SUBPX - bool "Montserrat 12 sub-pixel" - select LV_FONT_MONTSERRAT12SUBPX - config LV_FONT_DEFAULT_NORMAL_MONTSERRAT28COMPRESSED - bool "Montserrat 28 compressed" - select LV_FONT_MONTSERRAT28COMPRESSED - config LV_FONT_DEFAULT_NORMAL_DEJAVU_16_PERSIAN_HEBREW - bool "Dejavu 16 Persian, Hebrew, Arabic letters" - select LV_FONT_DEJAVU_16_PERSIAN_HEBREW - config LV_FONT_DEFAULT_NORMAL_SIMSUN_16_CJK - bool "Simsun 16 CJK" - select LV_FONT_SIMSUN_16_CJK - endchoice - - choice LV_FONT_DEFAULT_SUBTITLE - prompt "Select theme default subtitle font" - default LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_16 if !LV_CONF_MINIMAL - default LV_FONT_DEFAULT_SUBTITLE_UNSCII_8 if LV_CONF_MINIMAL - help - Select theme default subtitle font - - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_8 - bool "Montserrat 8" - select LV_FONT_MONTSERRAT_8 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_10 - bool "Montserrat 10" - select LV_FONT_MONTSERRAT_10 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_12 - bool "Montserrat 12" - select LV_FONT_MONTSERRAT_12 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_14 - bool "Montserrat 14" - select LV_FONT_MONTSERRAT_14 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_16 - bool "Montserrat 16" - select LV_FONT_MONTSERRAT_16 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_18 - bool "Montserrat 18" - select LV_FONT_MONTSERRAT_18 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_20 - bool "Montserrat 20" - select LV_FONT_MONTSERRAT_20 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_22 - bool "Montserrat 22" - select LV_FONT_MONTSERRAT_22 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_24 - bool "Montserrat 24" - select LV_FONT_MONTSERRAT_24 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_26 - bool "Montserrat 26" - select LV_FONT_MONTSERRAT_26 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_28 - bool "Montserrat 28" - select LV_FONT_MONTSERRAT_28 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_30 - bool "Montserrat 30" - select LV_FONT_MONTSERRAT_30 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_32 - bool "Montserrat 32" - select LV_FONT_MONTSERRAT_32 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_34 - bool "Montserrat 34" - select LV_FONT_MONTSERRAT_34 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_36 - bool "Montserrat 36" - select LV_FONT_MONTSERRAT_36 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_38 - bool "Montserrat 38" - select LV_FONT_MONTSERRAT_38 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_40 - bool "Montserrat 40" - select LV_FONT_MONTSERRAT_40 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_42 - bool "Montserrat 42" - select LV_FONT_MONTSERRAT_42 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_44 - bool "Montserrat 44" - select LV_FONT_MONTSERRAT_44 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_46 - bool "Montserrat 46" - select LV_FONT_MONTSERRAT_46 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_48 - bool "Montserrat 48" - select LV_FONT_MONTSERRAT_48 - config LV_FONT_DEFAULT_SUBTITLE_UNSCII_8 - bool "UNSCII 8 (Perfect monospace font)" - select LV_FONT_UNSCII_8 - config LV_FONT_DEFAULT_SUBTITLE_UNSCII_16 - bool "UNSCII 16 (Perfect monospace font)" - select LV_FONT_UNSCII_16 - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT12SUBPX - bool "Montserrat 12 sub-pixel" - select LV_FONT_MONTSERRAT12SUBPX - config LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT28COMPRESSED - bool "Montserrat 28 compressed" - select LV_FONT_MONTSERRAT28COMPRESSED - config LV_FONT_DEFAULT_SUBTITLE_DEJAVU_16_PERSIAN_HEBREW - bool "Dejavu 16 Persian, Hebrew, Arabic letters" - select LV_FONT_DEJAVU_16_PERSIAN_HEBREW - config LV_FONT_DEFAULT_SUBTITLE_SIMSUN_16_CJK - bool "Simsun 16 CJK" - select LV_FONT_SIMSUN_16_CJK - endchoice - - choice LV_FONT_DEFAULT_TITLE - prompt "Select theme default title font" - default LV_FONT_DEFAULT_TITLE_MONTSERRAT_16 if !LV_CONF_MINIMAL - default LV_FONT_DEFAULT_TITLE_UNSCII_8 if LV_CONF_MINIMAL - help - Select theme default title font - - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_8 - bool "Montserrat 8" - select LV_FONT_MONTSERRAT_8 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_12 - bool "Montserrat 12" - select LV_FONT_MONTSERRAT_12 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_14 - bool "Montserrat 14" - select LV_FONT_MONTSERRAT_14 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_16 - bool "Montserrat 16" - select LV_FONT_MONTSERRAT_16 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_18 - bool "Montserrat 18" - select LV_FONT_MONTSERRAT_18 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_20 - bool "Montserrat 20" - select LV_FONT_MONTSERRAT_20 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_22 - bool "Montserrat 22" - select LV_FONT_MONTSERRAT_22 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_24 - bool "Montserrat 24" - select LV_FONT_MONTSERRAT_24 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_26 - bool "Montserrat 26" - select LV_FONT_MONTSERRAT_26 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_28 - bool "Montserrat 28" - select LV_FONT_MONTSERRAT_28 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_30 - bool "Montserrat 30" - select LV_FONT_MONTSERRAT_30 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_32 - bool "Montserrat 32" - select LV_FONT_MONTSERRAT_32 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_34 - bool "Montserrat 34" - select LV_FONT_MONTSERRAT_34 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_36 - bool "Montserrat 36" - select LV_FONT_MONTSERRAT_36 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_38 - bool "Montserrat 38" - select LV_FONT_MONTSERRAT_38 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_40 - bool "Montserrat 40" - select LV_FONT_MONTSERRAT_40 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_42 - bool "Montserrat 42" - select LV_FONT_MONTSERRAT_42 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_44 - bool "Montserrat 44" - select LV_FONT_MONTSERRAT_44 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_46 - bool "Montserrat 46" - select LV_FONT_MONTSERRAT_46 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT_48 - bool "Montserrat 48" - select LV_FONT_MONTSERRAT_48 - config LV_FONT_DEFAULT_TITLE_UNSCII_8 - bool "UNSCII 8 (Perfect monospace font)" - select LV_FONT_UNSCII_8 - config LV_FONT_DEFAULT_TITLE_UNSCII_16 - bool "UNSCII 16 (Perfect monospace font)" - select LV_FONT_UNSCII_16 - config LV_FONT_DEFAULT_TITLE_MONTSERRAT12SUBPX - bool "Montserrat 12 sub-pixel" - select LV_FONT_MONTSERRAT12SUBPX - config LV_FONT_DEFAULT_TITLE_MONTSERRAT28COMPRESSED - bool "Montserrat 28 compressed" - select LV_FONT_MONTSERRAT28COMPRESSED - config LV_FONT_DEFAULT_TITLE_DEJAVU_16_PERSIAN_HEBREW - bool "Dejavu 16 Persian, Hebrew, Arabic letters" - select LV_FONT_DEJAVU_16_PERSIAN_HEBREW - config LV_FONT_DEFAULT_TITLE_SIMSUN_16_CJK - bool "Simsun 16 CJK" - select LV_FONT_SIMSUN_16_CJK - endchoice - endmenu - - menu "Theme usage" - menu "Enable theme usage, always enable at least one theme" - config LV_THEME_EMPTY - bool "Empty: No theme, you can apply your styles as you need." - default y if LV_CONF_MINIMAL - config LV_THEME_TEMPLATE - bool "Template: Simple to create your theme based on it." - config LV_THEME_MATERIAL - bool "Material: A fast and impressive theme." - default y if !LV_CONF_MINIMAL - config LV_THEME_MONO - bool "Mono: Mono-color theme for monochrome displays" - endmenu - - choice LV_THEME_DEFAULT_INIT - prompt "Select theme default init" - default LV_THEME_DEFAULT_INIT_MATERIAL if !LV_CONF_MINIMAL - default LV_THEME_DEFAULT_INIT_EMPTY if LV_CONF_MINIMAL - help - Select theme default init - - config LV_THEME_DEFAULT_INIT_EMPTY - bool "Default init for empty theme" - select LV_THEME_EMPTY - config LV_THEME_DEFAULT_INIT_TEMPLATE - bool "Default init for template theme" - select LV_THEME_TEMPLATE - config LV_THEME_DEFAULT_INIT_MATERIAL - bool "Default init for material theme" - select LV_THEME_MATERIAL - config LV_THEME_DEFAULT_INIT_MONO - bool "Default init for mono theme" - select LV_THEME_MONO - endchoice - - config LV_THEME_DEFAULT_COLOR_PRIMARY - hex "Select theme default primary color" - range 0x000000 0xFFFFFF - default 0xFF0000 if !LV_THEME_DEFAULT_INIT_MONO - default 0x000000 if LV_THEME_DEFAULT_INIT_MONO - help - See lv_misc/lv_color.h for some color values examples. - When using LV_THEME_MONO the suggested values to use are - 0x000000 (LV_COLOR_BLACK) or 0xFFFFFF (LV_COLOR_WHITE). - If LV_THEME_DEFAULT_COLOR_PRIMARY is 0x000000 (LV_COLOR_BLACK) - the texts and borders will be black and the background will be - white, otherwise the colors are inverted. - - config LV_THEME_DEFAULT_COLOR_SECONDARY - hex "Select theme default secondary color" - range 0x000000 0xFFFFFF - default 0x0000FF if !LV_THEME_DEFAULT_INIT_MONO - default 0xFFFFFF if LV_THEME_DEFAULT_INIT_MONO - help - See lv_misc/lv_color.h for some color values examples. - When using LV_THEME_MONO the suggested values to use are - 0x000000 (LV_COLOR_BLACK) or 0xFFFFFF (LV_COLOR_WHITE). - If LV_THEME_DEFAULT_COLOR_PRIMARY is 0x000000 (LV_COLOR_BLACK) - the texts and borders will be black and the background will be - white, otherwise the colors are inverted. - - choice LV_THEME_DEFAULT_FLAG - depends on LV_THEME_MATERIAL - - prompt "Select theme default flag" - default LV_THEME_DEFAULT_FLAG_LIGHT - help - Select theme default flag - - config LV_THEME_DEFAULT_FLAG_LIGHT - bool "Light theme" - config LV_THEME_DEFAULT_FLAG_DARK - bool "Dark theme" - endchoice - - endmenu - - menu "Text Settings" - choice LV_TXT_ENC - prompt "Select a character encoding for strings" - help - Select a character encoding for strings. Your IDE or editor should have the same character encoding. - default LV_TXT_ENC_UTF8 if !LV_CONF_MINIMAL - default LV_TXT_ENC_ASCII if LV_CONF_MINIMAL - - config LV_TXT_ENC_UTF8 - bool "UTF8" - config LV_TXT_ENC_ASCII - bool "ASCII" - endchoice - - config LV_TXT_BREAK_CHARS - string "Can break (wrap) texts on these chars" - default " ,.;:-_" - - config LV_TXT_LINE_BREAK_LONG_LEN - int "Line break long length" - default 0 - help - If a word is at least this long, will break wherever 'prettiest'. - To disable, set to a value <= 0. - - config LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN - int "Min num chars before break" - default 3 - depends on LV_TXT_LINE_BREAK_LONG_LEN > 0 - help - Minimum number of characters in a long word to put on a line before a break. - - config LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN - int "Min num chars after break" - default 3 - depends on LV_TXT_LINE_BREAK_LONG_LEN > 0 - help - Minimum number of characters in a long word to put on a line after a break. - - config LV_TXT_COLOR_CMD - string "The control character to use for signalling text recoloring" - default "#" - - config LV_USE_BIDI - bool "Support bidirectional texts" - help - Allows mixing Left-to-Right and Right-to-Left texts. - The direction will be processed according to the Unicode Bidirectional Algorithm: - https://www.w3.org/International/articles/inline-bidi-markup/uba-basics - - choice - prompt "Set the default BIDI direction" - default LV_BIDI_DIR_AUTO - depends on LV_USE_BIDI - - config LV_BIDI_DIR_LTR - bool "Left-to-Right" - config LV_BIDI_DIR_RTL - bool "Right-to-Left" - config LV_BIDI_DIR_AUTO - bool "Detect texts base direction" - endchoice - - config LV_USE_ARABIC_PERSIAN_CHARS - bool "Enable Arabic/Persian processing" - help - In these languages characters should be replaced with - an other form based on their position in the text. - - config LV_SPRINTF_CUSTOM - bool "Change the built-in (v)snprintf functions" - - config LV_SPRINTF_DISABLE_FLOAT - bool "Disable float in built-in (v)snprintf functions" if !LV_SPRINTF_CUSTOM - endmenu - - menu "Widgets" - config LV_USE_OBJ_REALIGN - bool "Enable `lv_obj_realign()` based on `lv_obj_align()` parameters." - default y if !LV_CONF_MINIMAL - - choice - prompt "Enable to make the object clickable on a larger area." - default LV_USE_EXT_CLICK_AREA_TINY - - config LV_USE_EXT_CLICK_AREA_OFF - bool "Disable this feature." - config LV_USE_EXT_CLICK_AREA_TINY - bool "The extra area can be adjusted horizontally and vertically (0..255px)." - config LV_USE_EXT_CLICK_AREA_FULL - bool "The extra area can be adjusted in all 4 directions (-32k..+32k px)." - endchoice - - config LV_USE_ARC - bool "Arc." - default y if !LV_CONF_MINIMAL - config LV_USE_BAR - bool "Bar." - default y if !LV_CONF_MINIMAL - config LV_USE_BTN - bool "Button. Dependencies: lv_cont." - select LV_USE_CONT - default y if !LV_CONF_MINIMAL - config LV_USE_BTNMATRIX - bool "Button matrix." - default y if !LV_CONF_MINIMAL - config LV_USE_CALENDAR - bool "Calendar." - default y if !LV_CONF_MINIMAL - config LV_CALENDAR_WEEK_STARTS_MONDAY - bool "Calendar week starts monday." - depends on LV_USE_CALENDAR - config LV_USE_CANVAS - bool "Canvas. Dependencies: lv_img." - select LV_USE_IMG - default y if !LV_CONF_MINIMAL - config LV_USE_CHECKBOX - bool "Check Box. Dependencies: lv_btn, lv_label." - select LV_USE_BTN - select LV_USE_LABEL - default y if !LV_CONF_MINIMAL - config LV_USE_CHART - bool "Chart." - default y if !LV_CONF_MINIMAL - config LV_CHART_AXIS_TICK_MAX_LEN - int "Chart axis tick label max len." - depends on LV_USE_CHART - default 256 - config LV_USE_CONT - bool "Container." - default y if !LV_CONF_MINIMAL - config LV_USE_CPICKER - bool "Color picker." - default y if !LV_CONF_MINIMAL - config LV_USE_DROPDOWN - bool "Drop down list. Dependencies: lv_page, lv_label, lv_symbol_def.h." - select LV_USE_PAGE - select LV_USE_LABEL - default y if !LV_CONF_MINIMAL - config LV_DROPDOWN_DEF_ANIM_TIME - int "Drop down animation time. 0: no animation." - depends on LV_USE_DROPDOWN - default 200 - config LV_USE_GAUGE - bool "Gauge. Dependencies: lv_bar, lv_linemeter." - select LV_USE_BAR - select LV_USE_LINEMETER - default y if !LV_CONF_MINIMAL - config LV_USE_IMG - bool "Image. Dependencies: lv_label." - select LV_USE_LABEL - default y if !LV_CONF_MINIMAL - config LV_USE_IMGBTN - bool "Image button. Dependencies: lv_btn." - select LV_USE_BTN - default y if !LV_CONF_MINIMAL - config LV_IMGBTN_TILED - bool "Use imgbtn tiled." - depends on LV_USE_IMGBTN - config LV_USE_KEYBOARD - bool "Keyboard. Dependencies: lv_btnm." - select LV_USE_BTNM - default y if !LV_CONF_MINIMAL - config LV_USE_LABEL - bool "Label." - default y if !LV_CONF_MINIMAL - config LV_LABEL_DEF_SCROLL_SPEED - int "Hor. or ver. scroll speed [px/sec] in LV_LABEL_LONG_ROLL/ROLL_CIRC mode." - default 25 - depends on LV_USE_LABEL - config LV_LABEL_WAIT_CHAR_COUNT - int "Waiting period at beginning/end of animation cycle." - default 3 - depends on LV_USE_LABEL - config LV_LABEL_TEXT_SEL - bool "Enable selecting text of the label." - depends on LV_USE_LABEL - config LV_LABEL_LONG_TXT_HINT - bool "Store extra some info in labels (12 bytes) to speed up drawing of very long texts." - depends on LV_USE_LABEL - config LV_USE_LED - bool "LED." - default y if !LV_CONF_MINIMAL - config LV_LED_BRIGHT_MIN - int "LED minimal brightness." - range 0 255 - default 120 - depends on LV_USE_LED - config LV_LED_BRIGHT_MAX - int "LED maximal brightness." - range 0 255 - default 255 - depends on LV_USE_LED - config LV_USE_LINE - bool "Line." - default y if !LV_CONF_MINIMAL - config LV_USE_LIST - bool "List. Dependencies: lv_page, lv_btn, lv_label, lv_img." - select LV_USE_PAGE - select LV_USE_BTN - select LV_USE_LABEL - select LV_USE_IMG - default y if !LV_CONF_MINIMAL - config LV_LIST_DEF_ANIM_TIME - int "List default animation time of focusing to a list element [ms]. 0: no animation." - default 100 - depends on LV_USE_LIST - config LV_USE_LINEMETER - bool "Line meter." - default y if !LV_CONF_MINIMAL - choice - prompt "Draw line more precisely at cost of performance." - default LV_LINEMETER_PRECISE_NO_EXTRA_PRECISION - depends on LV_USE_LINEMETER - config LV_LINEMETER_PRECISE_NO_EXTRA_PRECISION - bool "0: No extra precision." - config LV_LINEMETER_PRECISE_SOME_EXTRA_PRECISION - bool "1: Some extra precision." - config LV_LINEMETER_PRECISE_BEST_PRECISION - bool "2: Best precision." - endchoice - config LV_USE_OBJMASK - bool "Mask." - default y if !LV_CONF_MINIMAL - config LV_USE_MSGBOX - bool "Message box. Dependencies: lv_rect, lv_btnm, lv_label." - select LV_USE_RECT - select LV_USE_BTNM - select LV_USE_LABEL - default y if !LV_CONF_MINIMAL - config LV_USE_PAGE - bool "Page. Dependencies: lv_cont." - select LV_USE_CONT - default y if !LV_CONF_MINIMAL - config LV_PAGE_DEF_ANIM_TIME - int "Focus default animation time [ms]. 0: No animation." - default 100 - depends on LV_USE_PAGE - config LV_USE_SPINNER - bool "Spinner. Dependencies: lv_arc, lv_anim." - select LV_USE_ARC - select LV_USE_ANIM - default y if !LV_CONF_MINIMAL - config LV_SPINNER_DEF_ARC_LENGTH - int "Spinner def. arc length [deg]." - default 60 - depends on LV_USE_SPINNER - config LV_SPINNER_DEF_SPIN_TIME - int "Spinner def. spin time [ms]." - default 1000 - depends on LV_USE_SPINNER - choice - prompt "Type of spinner (animation type)." - default LV_SPINNER_TYPE_SPINNING_ARC - depends on LV_USE_SPINNER - config LV_SPINNER_TYPE_SPINNING_ARC - bool "0: Spinner type spinning arc." - config LV_SPINNER_TYPE_FILLSPIN_ARC - bool "0: Spinner type fillspin arc." - config LV_SPINNER_TYPE_CONSTANT_ARC - bool "0: Spinner type constant arc." - endchoice - config LV_USE_ROLLER - bool "Roller. Dependencies: lv_page." - select LV_USE_PAGE - default y if !LV_CONF_MINIMAL - config LV_ROLLER_DEF_ANIM_TIME - int "Focus animation time [ms]. 0: no animation." - default 200 - depends on LV_USE_ROLLER - config LV_ROLLER_INF_PAGES - int "Number of extra 'pages' when the controller is infinite." - default 7 - depends on LV_USE_ROLLER - config LV_USE_SLIDER - bool "Slider. Dependencies: lv_bar." - select LV_USE_BAR - default y if !LV_CONF_MINIMAL - config LV_USE_SPINBOX - bool "Spinbox. Dependencies: lv_ta." - select LV_USE_TEXTAREA - default y if !LV_CONF_MINIMAL - config LV_USE_SWITCH - bool "Switch. Dependencies: lv_slider." - select LV_USE_SLIDER - default y if !LV_CONF_MINIMAL - config LV_USE_TEXTAREA - bool "Text area. Dependencies: lv_label, lv_page." - select LV_USE_LABEL - select LV_USE_PAGE - default y if !LV_CONF_MINIMAL - config LV_TEXTAREA_DEF_CURSOR_BLINK_TIME - int "Text area def. cursor blink time [ms]." - default 400 - depends on LV_USE_TEXTAREA - config LV_TEXTAREA_DEF_PWN_SHOW_TIME - int "Text area def. pwn show time [ms]." - default 1500 - depends on LV_USE_TEXTAREA - config LV_USE_TABLE - bool "Table. Dependencies: lv_label." - select LV_USE_LABEL - default y if !LV_CONF_MINIMAL - config LV_TABLE_COL_MAX - int "Table col max." - default 12 - depends on LV_USE_TABLE - config LV_TABLE_CELL_STYLE_CNT - int "Table cell style count." - default 4 - depends on LV_USE_TABLE - config LV_USE_TABVIEW - bool "Tab. Dependencies: lv_page, lv_btnm." - select LV_USE_PAGE - select LV_USE_BTNM - default y if !LV_CONF_MINIMAL - config LV_TABVIEW_DEF_ANIM_TIME - int "Time of slide animation [ms]. 0: No animation." - default 300 - depends on LV_USE_TABVIEW - config LV_USE_TILEVIEW - bool "Tileview. Dependencies: lv_page." - select LV_USE_PAGE - default y if !LV_CONF_MINIMAL - config LV_TILEVIEW_DEF_ANIM_TIME - int "Time of slide animation [ms]. 0: No animation." - default 300 - depends on LV_USE_TILEVIEW - config LV_USE_WIN - bool "Window. Dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page." - select LV_USE_CONT - select LV_USE_BTN - select LV_USE_LABEL - select LV_USE_IMG - select LV_USE_PAGE - default y if !LV_CONF_MINIMAL - endmenu - -endmenu diff --git a/lib/libesp32_lvgl/LVGL/component.mk b/lib/libesp32_lvgl/LVGL/component.mk deleted file mode 100644 index 5d07eb7ef..000000000 --- a/lib/libesp32_lvgl/LVGL/component.mk +++ /dev/null @@ -1,23 +0,0 @@ -# ESP-IDF component file for make based commands - -COMPONENT_SRCDIRS := . -COMPONENT_SRCDIRS += src -COMPONENT_SRCDIRS += src/lv_core -COMPONENT_SRCDIRS += src/lv_draw -COMPONENT_SRCDIRS += src/lv_font -COMPONENT_SRCDIRS += src/lv_gpu -COMPONENT_SRCDIRS += src/lv_hal -COMPONENT_SRCDIRS += src/lv_misc -COMPONENT_SRCDIRS += src/lv_themes -COMPONENT_SRCDIRS += src/lv_widgets - -COMPONENT_ADD_INCLUDEDIRS := . -COMPONENT_ADD_INCLUDEDIRS += src -COMPONENT_ADD_INCLUDEDIRS += src/lv_core -COMPONENT_ADD_INCLUDEDIRS += src/lv_draw -COMPONENT_ADD_INCLUDEDIRS += src/lv_font -COMPONENT_ADD_INCLUDEDIRS += src/lv_gpu -COMPONENT_ADD_INCLUDEDIRS += src/lv_hal -COMPONENT_ADD_INCLUDEDIRS += src/lv_misc -COMPONENT_ADD_INCLUDEDIRS += src/lv_themes -COMPONENT_ADD_INCLUDEDIRS += src/lv_widgets diff --git a/lib/libesp32_lvgl/LVGL/docs/CODE_OF_CONDUCT.md b/lib/libesp32_lvgl/LVGL/docs/CODE_OF_CONDUCT.md deleted file mode 100644 index c7d7eeb14..000000000 --- a/lib/libesp32_lvgl/LVGL/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [atom@github.com](mailto:atom@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/lib/libesp32_lvgl/LVGL/docs/CODING_STYLE.md b/lib/libesp32_lvgl/LVGL/docs/CODING_STYLE.md deleted file mode 100644 index 46bc63757..000000000 --- a/lib/libesp32_lvgl/LVGL/docs/CODING_STYLE.md +++ /dev/null @@ -1,89 +0,0 @@ -# Coding style - -## File format -Use [lv_misc/lv_templ.c](https://github.com/lvgl/lvgl/blob/master/src/lv_misc/lv_templ.c) and [lv_misc/lv_templ.h](https://github.com/lvgl/lvgl/blob/master/src/lv_misc/lv_templ.h) - -## Naming conventions -* Words are separated by '_' -* In variable and function names use only lower case letters (e.g. *height_tmp*) -* In enums and defines use only upper case letters (e.g. *e.g. MAX_LINE_NUM*) -* Global names (API): - * starts with *lv* - * followed by module name: *btn*, *label*, *style* etc. - * followed by the action (for functions): *set*, *get*, *refr* etc. - * closed with the subject: *name*, *size*, *state* etc. -* Typedefs - * prefer `typedef struct` and `typedef enum` instead of `struct name` and `enum name` - * always end `typedef struct` and `typedef enum` type names with `_t` -* Abbreviations: - * Only words longer or equal than 6 characters can be abbreviated. - * Abbreviate only if it makes the word at least half as long - * Use only very straightforward and well-known abbreviations (e.g. pos: position, def: default, btn: button) - -## Coding guide -* Functions: - * Try to write function shorter than is 50 lines - * Always shorter than 200 lines (except very straightforwards) -* Variables: - * One line, one declaration (BAD: char x, y;) - * Use `` (*uint8_t*, *int32_t* etc) - * Declare variables where needed (not all at function start) - * Use the smallest required scope - * Variables in a file (outside functions) are always *static* - * Do not use global variables (use functions to set/get static variables) - -## Comments -Before every function have a comment like this: - -```c -/** - * Return with the screen of an object - * @param obj pointer to an object - * @return pointer to a screen - */ -lv_obj_t * lv_obj_get_scr(lv_obj_t * obj); -``` - -Always use `/* Something */` format and NOT `//Something` - -Write readable code to avoid descriptive comments like: -`x++; /* Add 1 to x */`. -The code should show clearly what you are doing. - -You should write **why** have you done this: -`x++; /*Because of closing '\0' of the string */` - -Short "code summaries" of a few lines are accepted. E.g. `/*Calculate the new coordinates*/` - -In comments use \` \` when referring to a variable. E.g. ``/*Update the value of `x_act`*/`` - -### Formatting -Here is example to show bracket placing and using of white spaces: -```c -/** - * Set a new text for a label. Memory will be allocated to store the text by the label. - * @param label pointer to a label object - * @param text '\0' terminated character string. NULL to refresh with the current text. - */ -void lv_label_set_text(lv_obj_t * label, const char * text) -{ /* Main brackets of functions in new line*/ - - if(label == NULL) return; /*No bracket only if the command is inline with the if statement*/ - - lv_obj_inv(label); - - lv_label_ext_t * ext = lv_obj_get_ext(label); - - /*Comment before a section */ - if(text == ext->txt || text == NULL) { /*Bracket of statements start inline*/ - lv_label_refr_text(label); - return; - } - - ... -} -``` - -Use 4 spaces indentation instead of tab. - -You can use **astyle** to format the code. Run `code-formatter.sh` from the `scrips` folder. diff --git a/lib/libesp32_lvgl/LVGL/docs/CONTRIBUTING.md b/lib/libesp32_lvgl/LVGL/docs/CONTRIBUTING.md deleted file mode 100644 index 553cfa51f..000000000 --- a/lib/libesp32_lvgl/LVGL/docs/CONTRIBUTING.md +++ /dev/null @@ -1,5 +0,0 @@ -# Contributing to LVGL - -Thank you for considering contributing to LVGL. - -For a detailed description of contribution opportunities, please visit the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) section of the documentation. diff --git a/lib/libesp32_lvgl/LVGL/docs/ROADMAP.md b/lib/libesp32_lvgl/LVGL/docs/ROADMAP.md deleted file mode 100644 index a606894f9..000000000 --- a/lib/libesp32_lvgl/LVGL/docs/ROADMAP.md +++ /dev/null @@ -1,63 +0,0 @@ -# Roadmap - -This is a summary for thenew fatures of the major releases and a collection of ideas. - -This list indicates only the current intention and can be changed. - -## v8 -Planned to November/December 2020 -- Create an `lv_components` repository for compley widgets - - It makes the core LVGL leaner - - In `lv_components` we can have a lot and specific widgets - - Good place for contribution -- New scrolling: - - See [feat/new-scroll](https://github.com/lvgl/lvgl/tree/feat/new-scroll) branch and [#1614](https://github.com/lvgl/lvgl/issues/1614)) issue. - - Remove `lv_page` and support scrolling on `lv_obj` - - Support "elastic" scrolling when scrolled in - - Support scroll chaining among any objects types (not only `lv_pages`s) - - Remove `lv_drag`. Similar effect can be achieved by setting the position in `LV_EVENT_PRESSING` - - Add snapping - - Add snap stop to scroll max 1 snap point - - Already working -- New layouts: - - See [#1615](https://github.com/lvgl/lvgl/issues/1615) issue - - [CSS Grid](https://css-tricks.com/snippets/css/a-guide-to-grid/)-like layout support - - [CSS Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)-like layout support - - Remove `lv_cont` and support layouts on `lv_obj` -- Simplified File system interface ([feat/new_fs_api](https://github.com/lvgl/lvgl/tree/feat/new-fs-api) branch) to make porting easier - - Work in progress -- Remove the align parameter from `lv_canvas_draw_text` -- Make the copy parameter obsolate in create functions -- Optimize and simplifie styles [#1832](https://github.com/lvgl/lvgl/issues/1832) -- Use a more generic inheritenace [#1919](https://github.com/lvgl/lvgl/issues/1919) - -## v8.x -- Add radio button widget -- Unit testing (gtest?). See [#1658](https://github.com/lvgl/lvgl/issues/1658) -- Benchmarking (gem5?). See [#1660](https://github.com/lvgl/lvgl/issues/1660) -- chart: pre-delete `X` pint after the lastly set -- chart: autoscroll to the right - -## v9 -- Simplify `group`s. Discussion is [here](https://forum.lvgl.io/t/lv-group-tabindex/2927/3). -- Consider direct binary font format support -- Optimize line and circle drawing and masking -- Reconsider color format management for run time color format setting, and custom color format usage. (Also [RGB888](https://github.com/lvgl/lvgl/issues/1722)) -- 9-patch support for `lv_imgbtn`. -- Handle stride. See [#1858](https://github.com/lvgl/lvgl/issues/1858) -- Make gradients more versatile -- Make image transformations more versatile -- Allow snapshoting object to tranfrom them to images - -## Ideas -- Use [generate-changelog](https://github.com/lob/generate-changelog) to automatically generate changelog -- lv_mem_alloc_aligned(size, align) -- Text node. See [#1701](https://github.com/lvgl/lvgl/issues/1701#issuecomment-699479408) -- CPP binding. See [Forum](https://forum.lvgl.io/t/is-it-possible-to-officially-support-optional-cpp-api/2736) -- Optimize font decompression -- Switch to RGBA colors in styles -- Need coverage report for tests -- Need static analyze (via coverity.io or somehing else) -- Support dot_begin and dot_middle long modes for labels -- Add new label alignment modes. [#1656](https://github.com/lvgl/lvgl/issues/1656) -- Support larger images: [#1892](https://github.com/lvgl/lvgl/issues/1892) diff --git a/lib/libesp32_lvgl/LVGL/examples/LVGL_Arduino.ino b/lib/libesp32_lvgl/LVGL/examples/LVGL_Arduino.ino deleted file mode 100644 index 6e76e15dc..000000000 --- a/lib/libesp32_lvgl/LVGL/examples/LVGL_Arduino.ino +++ /dev/null @@ -1,102 +0,0 @@ -#include -#include - -TFT_eSPI tft = TFT_eSPI(); /* TFT instance */ -static lv_disp_buf_t disp_buf; -static lv_color_t buf[LV_HOR_RES_MAX * 10]; - -#if USE_LV_LOG != 0 -/* Serial debugging */ -void my_print(lv_log_level_t level, const char * file, uint32_t line, const char * dsc) -{ - - Serial.printf("%s@%d->%s\r\n", file, line, dsc); - Serial.flush(); -} -#endif - -/* Display flushing */ -void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) -{ - uint32_t w = (area->x2 - area->x1 + 1); - uint32_t h = (area->y2 - area->y1 + 1); - - tft.startWrite(); - tft.setAddrWindow(area->x1, area->y1, w, h); - tft.pushColors(&color_p->full, w * h, true); - tft.endWrite(); - - lv_disp_flush_ready(disp); -} - -/*Read the touchpad*/ -bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) -{ - uint16_t touchX, touchY; - - bool touched = tft.getTouch(&touchX, &touchY, 600); - - if(!touched) { - data->state = LV_INDEV_STATE_REL; - } else { - data->state = LV_INDEV_STATE_PR; - - /*Set the coordinates*/ - data->point.x = touchX; - data->point.y = touchY; - - Serial.print("Data x"); - Serial.println(touchX); - - Serial.print("Data y"); - Serial.println(touchY); - } - - return false; /*Return `false` because we are not buffering and no more data to read*/ -} - -void setup() -{ - Serial.begin(115200); /* prepare for possible serial debug */ - - lv_init(); - -#if USE_LV_LOG != 0 - lv_log_register_print_cb(my_print); /* register print function for debugging */ -#endif - - tft.begin(); /* TFT init */ - tft.setRotation(1); /* Landscape orientation */ - - uint16_t calData[5] = { 275, 3620, 264, 3532, 1 }; - tft.setTouch(calData); - - lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); - - /*Initialize the display*/ - lv_disp_drv_t disp_drv; - lv_disp_drv_init(&disp_drv); - disp_drv.hor_res = 320; - disp_drv.ver_res = 240; - disp_drv.flush_cb = my_disp_flush; - disp_drv.buffer = &disp_buf; - lv_disp_drv_register(&disp_drv); - - /*Initialize the (dummy) input device driver*/ - lv_indev_drv_t indev_drv; - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_POINTER; - indev_drv.read_cb = my_touchpad_read; - lv_indev_drv_register(&indev_drv); - - /* Try an example from the lv_examples repository - * https://github.com/lvgl/lv_examples*/ - lv_ex_btn_1(); -} - -void loop() -{ - - lv_task_handler(); /* let the GUI do its work */ - delay(5); -} diff --git a/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_disp_template.c b/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_disp_template.c deleted file mode 100644 index 20ce22ae8..000000000 --- a/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_disp_template.c +++ /dev/null @@ -1,196 +0,0 @@ -/** - * @file lv_port_disp_templ.c - * - */ - - /*Copy this file as "lv_port_disp.c" and set this value to "1" to enable content*/ -#if 0 - -/********************* - * INCLUDES - *********************/ -#include "lv_port_disp_template.h" - -/********************* - * DEFINES - *********************/ - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ -static void disp_init(void); - -static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p); -#if LV_USE_GPU -static void gpu_blend(lv_disp_drv_t * disp_drv, lv_color_t * dest, const lv_color_t * src, uint32_t length, lv_opa_t opa); -static void gpu_fill(lv_disp_drv_t * disp_drv, lv_color_t * dest_buf, lv_coord_t dest_width, - const lv_area_t * fill_area, lv_color_t color); -#endif - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -void lv_port_disp_init(void) -{ - /*------------------------- - * Initialize your display - * -----------------------*/ - disp_init(); - - /*----------------------------- - * Create a buffer for drawing - *----------------------------*/ - - /* LVGL requires a buffer where it internally draws the widgets. - * Later this buffer will passed your display drivers `flush_cb` to copy its content to your display. - * The buffer has to be greater than 1 display row - * - * There are three buffering configurations: - * 1. Create ONE buffer with some rows: - * LVGL will draw the display's content here and writes it to your display - * - * 2. Create TWO buffer with some rows: - * LVGL will draw the display's content to a buffer and writes it your display. - * You should use DMA to write the buffer's content to the display. - * It will enable LVGL to draw the next part of the screen to the other buffer while - * the data is being sent form the first buffer. It makes rendering and flushing parallel. - * - * 3. Create TWO screen-sized buffer: - * Similar to 2) but the buffer have to be screen sized. When LVGL is ready it will give the - * whole frame to display. This way you only need to change the frame buffer's address instead of - * copying the pixels. - * */ - - /* Example for 1) */ - static lv_disp_buf_t draw_buf_dsc_1; - static lv_color_t draw_buf_1[LV_HOR_RES_MAX * 10]; /*A buffer for 10 rows*/ - lv_disp_buf_init(&draw_buf_dsc_1, draw_buf_1, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/ - - /* Example for 2) */ - static lv_disp_buf_t draw_buf_dsc_2; - static lv_color_t draw_buf_2_1[LV_HOR_RES_MAX * 10]; /*A buffer for 10 rows*/ - static lv_color_t draw_buf_2_2[LV_HOR_RES_MAX * 10]; /*An other buffer for 10 rows*/ - lv_disp_buf_init(&draw_buf_dsc_2, draw_buf_2_1, draw_buf_2_2, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/ - - /* Example for 3) */ - static lv_disp_buf_t draw_buf_dsc_3; - static lv_color_t draw_buf_3_1[LV_HOR_RES_MAX * LV_VER_RES_MAX]; /*A screen sized buffer*/ - static lv_color_t draw_buf_3_2[LV_HOR_RES_MAX * LV_VER_RES_MAX]; /*An other screen sized buffer*/ - lv_disp_buf_init(&draw_buf_dsc_3, draw_buf_3_1, draw_buf_3_2, LV_HOR_RES_MAX * LV_VER_RES_MAX); /*Initialize the display buffer*/ - - /*----------------------------------- - * Register the display in LVGL - *----------------------------------*/ - - lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/ - lv_disp_drv_init(&disp_drv); /*Basic initialization*/ - - /*Set up the functions to access to your display*/ - - /*Set the resolution of the display*/ - disp_drv.hor_res = 480; - disp_drv.ver_res = 320; - - /*Used to copy the buffer's content to the display*/ - disp_drv.flush_cb = disp_flush; - - /*Set a display buffer*/ - disp_drv.buffer = &draw_buf_dsc_1; - -#if LV_USE_GPU - /*Optionally add functions to access the GPU. (Only in buffered mode, LV_VDB_SIZE != 0)*/ - - /*Blend two color array using opacity*/ - disp_drv.gpu_blend_cb = gpu_blend; - - /*Fill a memory array with a color*/ - disp_drv.gpu_fill_cb = gpu_fill; -#endif - - /*Finally register the driver*/ - lv_disp_drv_register(&disp_drv); -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -/* Initialize your display and the required peripherals. */ -static void disp_init(void) -{ - /*You code here*/ -} - -/* Flush the content of the internal buffer the specific area on the display - * You can use DMA or any hardware acceleration to do this operation in the background but - * 'lv_disp_flush_ready()' has to be called when finished. */ -static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p) -{ - /*The most simple case (but also the slowest) to put all pixels to the screen one-by-one*/ - - int32_t x; - int32_t y; - for(y = area->y1; y <= area->y2; y++) { - for(x = area->x1; x <= area->x2; x++) { - /* Put a pixel to the display. For example: */ - /* put_px(x, y, *color_p)*/ - color_p++; - } - } - - /* IMPORTANT!!! - * Inform the graphics library that you are ready with the flushing*/ - lv_disp_flush_ready(disp_drv); -} - -/*OPTIONAL: GPU INTERFACE*/ -#if LV_USE_GPU - -/* If your MCU has hardware accelerator (GPU) then you can use it to blend to memories using opacity - * It can be used only in buffered mode (LV_VDB_SIZE != 0 in lv_conf.h)*/ -static void gpu_blend(lv_disp_drv_t * disp_drv, lv_color_t * dest, const lv_color_t * src, uint32_t length, lv_opa_t opa) -{ - /*It's an example code which should be done by your GPU*/ - uint32_t i; - for(i = 0; i < length; i++) { - dest[i] = lv_color_mix(dest[i], src[i], opa); - } -} - -/* If your MCU has hardware accelerator (GPU) then you can use it to fill a memory with a color - * It can be used only in buffered mode (LV_VDB_SIZE != 0 in lv_conf.h)*/ -static void gpu_fill(lv_disp_drv_t * disp_drv, lv_color_t * dest_buf, lv_coord_t dest_width, - const lv_area_t * fill_area, lv_color_t color) -{ - /*It's an example code which should be done by your GPU*/ - int32_t x, y; - dest_buf += dest_width * fill_area->y1; /*Go to the first line*/ - - for(y = fill_area->y1; y <= fill_area->y2; y++) { - for(x = fill_area->x1; x <= fill_area->x2; x++) { - dest_buf[x] = color; - } - dest_buf+=dest_width; /*Go to the next line*/ - } -} - -#endif /*LV_USE_GPU*/ - -#else /* Enable this file at the top */ - -/* This dummy typedef exists purely to silence -Wpedantic. */ -typedef int keep_pedantic_happy; -#endif diff --git a/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_fs_template.c b/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_fs_template.c deleted file mode 100644 index c8f5fe21b..000000000 --- a/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_fs_template.c +++ /dev/null @@ -1,377 +0,0 @@ -/** - * @file lv_port_fs_templ.c - * - */ - - /*Copy this file as "lv_port_fs.c" and set this value to "1" to enable content*/ -#if 0 - -/********************* - * INCLUDES - *********************/ -#include "lv_port_fs_template.h" - -/********************* - * DEFINES - *********************/ - -/********************** - * TYPEDEFS - **********************/ - -/* Create a type to store the required data about your file. - * If you are using a File System library - * it already should have a File type. - * For example FatFS has `FIL`. In this case use `typedef FIL file_t`*/ -typedef struct { - /*Add the data you need to store about a file*/ - uint32_t dummy1; - uint32_t dummy2; -}file_t; - -/*Similarly to `file_t` create a type for directory reading too */ -typedef struct { - /*Add the data you need to store about directory reading*/ - uint32_t dummy1; - uint32_t dummy2; -}dir_t; - -/********************** - * STATIC PROTOTYPES - **********************/ -static void fs_init(void); - -static lv_fs_res_t fs_open (lv_fs_drv_t * drv, void * file_p, const char * path, lv_fs_mode_t mode); -static lv_fs_res_t fs_close (lv_fs_drv_t * drv, void * file_p); -static lv_fs_res_t fs_read (lv_fs_drv_t * drv, void * file_p, void * buf, uint32_t btr, uint32_t * br); -static lv_fs_res_t fs_write(lv_fs_drv_t * drv, void * file_p, const void * buf, uint32_t btw, uint32_t * bw); -static lv_fs_res_t fs_seek (lv_fs_drv_t * drv, void * file_p, uint32_t pos); -static lv_fs_res_t fs_size (lv_fs_drv_t * drv, void * file_p, uint32_t * size_p); -static lv_fs_res_t fs_tell (lv_fs_drv_t * drv, void * file_p, uint32_t * pos_p); -static lv_fs_res_t fs_remove (lv_fs_drv_t * drv, const char *path); -static lv_fs_res_t fs_trunc (lv_fs_drv_t * drv, void * file_p); -static lv_fs_res_t fs_rename (lv_fs_drv_t * drv, const char * oldname, const char * newname); -static lv_fs_res_t fs_free (lv_fs_drv_t * drv, uint32_t * total_p, uint32_t * free_p); -static lv_fs_res_t fs_dir_open (lv_fs_drv_t * drv, void * rddir_p, const char *path); -static lv_fs_res_t fs_dir_read (lv_fs_drv_t * drv, void * rddir_p, char *fn); -static lv_fs_res_t fs_dir_close (lv_fs_drv_t * drv, void * rddir_p); - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * GLOBAL PROTOTYPES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -void lv_port_fs_init(void) -{ - /*---------------------------------------------------- - * Initialize your storage device and File System - * -------------------------------------------------*/ - fs_init(); - - /*--------------------------------------------------- - * Register the file system interface in LVGL - *--------------------------------------------------*/ - - /* Add a simple drive to open images */ - lv_fs_drv_t fs_drv; - lv_fs_drv_init(&fs_drv); - - /*Set up fields...*/ - fs_drv.file_size = sizeof(file_t); - fs_drv.letter = 'P'; - fs_drv.open_cb = fs_open; - fs_drv.close_cb = fs_close; - fs_drv.read_cb = fs_read; - fs_drv.write_cb = fs_write; - fs_drv.seek_cb = fs_seek; - fs_drv.tell_cb = fs_tell; - fs_drv.free_space_cb = fs_free; - fs_drv.size_cb = fs_size; - fs_drv.remove_cb = fs_remove; - fs_drv.rename_cb = fs_rename; - fs_drv.trunc_cb = fs_trunc; - - fs_drv.rddir_size = sizeof(dir_t); - fs_drv.dir_close_cb = fs_dir_close; - fs_drv.dir_open_cb = fs_dir_open; - fs_drv.dir_read_cb = fs_dir_read; - - lv_fs_drv_register(&fs_drv); -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -/* Initialize your Storage device and File system. */ -static void fs_init(void) -{ - /*E.g. for FatFS initialize the SD card and FatFS itself*/ - - /*You code here*/ -} - -/** - * Open a file - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable - * @param path path to the file beginning with the driver letter (e.g. S:/folder/file.txt) - * @param mode read: FS_MODE_RD, write: FS_MODE_WR, both: FS_MODE_RD | FS_MODE_WR - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_open (lv_fs_drv_t * drv, void * file_p, const char * path, lv_fs_mode_t mode) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - if(mode == LV_FS_MODE_WR) - { - /*Open a file for write*/ - - /* Add your code here*/ - } - else if(mode == LV_FS_MODE_RD) - { - /*Open a file for read*/ - - /* Add your code here*/ - } - else if(mode == (LV_FS_MODE_WR | LV_FS_MODE_RD)) - { - /*Open a file for read and write*/ - - /* Add your code here*/ - } - - return res; -} - -/** - * Close an opened file - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable. (opened with lv_ufs_open) - * @return LV_FS_RES_OK: no error, the file is read - * any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_close (lv_fs_drv_t * drv, void * file_p) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Read data from an opened file - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable. - * @param buf pointer to a memory block where to store the read data - * @param btr number of Bytes To Read - * @param br the real number of read bytes (Byte Read) - * @return LV_FS_RES_OK: no error, the file is read - * any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_read (lv_fs_drv_t * drv, void * file_p, void * buf, uint32_t btr, uint32_t * br) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Write into a file - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable - * @param buf pointer to a buffer with the bytes to write - * @param btr Bytes To Write - * @param br the number of real written bytes (Bytes Written). NULL if unused. - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_write(lv_fs_drv_t * drv, void * file_p, const void * buf, uint32_t btw, uint32_t * bw) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Set the read write pointer. Also expand the file size if necessary. - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable. (opened with lv_ufs_open ) - * @param pos the new position of read write pointer - * @return LV_FS_RES_OK: no error, the file is read - * any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_seek (lv_fs_drv_t * drv, void * file_p, uint32_t pos) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Give the size of a file bytes - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable - * @param size pointer to a variable to store the size - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_size (lv_fs_drv_t * drv, void * file_p, uint32_t * size_p) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} -/** - * Give the position of the read write pointer - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to a file_t variable. - * @param pos_p pointer to to store the result - * @return LV_FS_RES_OK: no error, the file is read - * any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_tell (lv_fs_drv_t * drv, void * file_p, uint32_t * pos_p) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Delete a file - * @param drv pointer to a driver where this function belongs - * @param path path of the file to delete - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_remove (lv_fs_drv_t * drv, const char *path) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Truncate the file size to the current position of the read write pointer - * @param drv pointer to a driver where this function belongs - * @param file_p pointer to an 'ufs_file_t' variable. (opened with lv_fs_open ) - * @return LV_FS_RES_OK: no error, the file is read - * any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_trunc (lv_fs_drv_t * drv, void * file_p) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Rename a file - * @param drv pointer to a driver where this function belongs - * @param oldname path to the file - * @param newname path with the new name - * @return LV_FS_RES_OK or any error from 'fs_res_t' - */ -static lv_fs_res_t fs_rename (lv_fs_drv_t * drv, const char * oldname, const char * newname) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Get the free and total size of a driver in kB - * @param drv pointer to a driver where this function belongs - * @param letter the driver letter - * @param total_p pointer to store the total size [kB] - * @param free_p pointer to store the free size [kB] - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_free (lv_fs_drv_t * drv, uint32_t * total_p, uint32_t * free_p) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Initialize a 'lv_fs_dir_t' variable for directory reading - * @param drv pointer to a driver where this function belongs - * @param rddir_p pointer to a 'lv_fs_dir_t' variable - * @param path path to a directory - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_dir_open (lv_fs_drv_t * drv, void * rddir_p, const char *path) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Read the next filename form a directory. - * The name of the directories will begin with '/' - * @param drv pointer to a driver where this function belongs - * @param rddir_p pointer to an initialized 'lv_fs_dir_t' variable - * @param fn pointer to a buffer to store the filename - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_dir_read (lv_fs_drv_t * drv, void * rddir_p, char *fn) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -/** - * Close the directory reading - * @param drv pointer to a driver where this function belongs - * @param rddir_p pointer to an initialized 'lv_fs_dir_t' variable - * @return LV_FS_RES_OK or any error from lv_fs_res_t enum - */ -static lv_fs_res_t fs_dir_close (lv_fs_drv_t * drv, void * rddir_p) -{ - lv_fs_res_t res = LV_FS_RES_NOT_IMP; - - /* Add your code here*/ - - return res; -} - -#else /* Enable this file at the top */ - -/* This dummy typedef exists purely to silence -Wpedantic. */ -typedef int keep_pedantic_happy; -#endif diff --git a/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_indev_template.c b/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_indev_template.c deleted file mode 100644 index 98788da43..000000000 --- a/lib/libesp32_lvgl/LVGL/examples/porting/lv_port_indev_template.c +++ /dev/null @@ -1,423 +0,0 @@ -/** - * @file lv_port_indev_templ.c - * - */ - - /*Copy this file as "lv_port_indev.c" and set this value to "1" to enable content*/ -#if 0 - -/********************* - * INCLUDES - *********************/ -#include "lv_port_indev_template.h" - -/********************* - * DEFINES - *********************/ - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ - -static void touchpad_init(void); -static bool touchpad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data); -static bool touchpad_is_pressed(void); -static void touchpad_get_xy(lv_coord_t * x, lv_coord_t * y); - -static void mouse_init(void); -static bool mouse_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data); -static bool mouse_is_pressed(void); -static void mouse_get_xy(lv_coord_t * x, lv_coord_t * y); - -static void keypad_init(void); -static bool keypad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data); -static uint32_t keypad_get_key(void); - -static void encoder_init(void); -static bool encoder_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data); -static void encoder_handler(void); - -static void button_init(void); -static bool button_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data); -static int8_t button_get_pressed_id(void); -static bool button_is_pressed(uint8_t id); - -/********************** - * STATIC VARIABLES - **********************/ -lv_indev_t * indev_touchpad; -lv_indev_t * indev_mouse; -lv_indev_t * indev_keypad; -lv_indev_t * indev_encoder; -lv_indev_t * indev_button; - -static int32_t encoder_diff; -static lv_indev_state_t encoder_state; - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -void lv_port_indev_init(void) -{ - /* Here you will find example implementation of input devices supported by LittelvGL: - * - Touchpad - * - Mouse (with cursor support) - * - Keypad (supports GUI usage only with key) - * - Encoder (supports GUI usage only with: left, right, push) - * - Button (external buttons to press points on the screen) - * - * The `..._read()` function are only examples. - * You should shape them according to your hardware - */ - - lv_indev_drv_t indev_drv; - - /*------------------ - * Touchpad - * -----------------*/ - - /*Initialize your touchpad if you have*/ - touchpad_init(); - - /*Register a touchpad input device*/ - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_POINTER; - indev_drv.read_cb = touchpad_read; - indev_touchpad = lv_indev_drv_register(&indev_drv); - - /*------------------ - * Mouse - * -----------------*/ - - /*Initialize your touchpad if you have*/ - mouse_init(); - - /*Register a mouse input device*/ - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_POINTER; - indev_drv.read_cb = mouse_read; - indev_mouse = lv_indev_drv_register(&indev_drv); - - /*Set cursor. For simplicity set a HOME symbol now.*/ - lv_obj_t * mouse_cursor = lv_img_create(lv_disp_get_scr_act(NULL), NULL); - lv_img_set_src(mouse_cursor, LV_SYMBOL_HOME); - lv_indev_set_cursor(indev_mouse, mouse_cursor); - - /*------------------ - * Keypad - * -----------------*/ - - /*Initialize your keypad or keyboard if you have*/ - keypad_init(); - - /*Register a keypad input device*/ - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_KEYPAD; - indev_drv.read_cb = keypad_read; - indev_keypad = lv_indev_drv_register(&indev_drv); - - /* Later you should create group(s) with `lv_group_t * group = lv_group_create()`, - * add objects to the group with `lv_group_add_obj(group, obj)` - * and assign this input device to group to navigate in it: - * `lv_indev_set_group(indev_keypad, group);` */ - - /*------------------ - * Encoder - * -----------------*/ - - /*Initialize your encoder if you have*/ - encoder_init(); - - /*Register a encoder input device*/ - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_ENCODER; - indev_drv.read_cb = encoder_read; - indev_encoder = lv_indev_drv_register(&indev_drv); - - /* Later you should create group(s) with `lv_group_t * group = lv_group_create()`, - * add objects to the group with `lv_group_add_obj(group, obj)` - * and assign this input device to group to navigate in it: - * `lv_indev_set_group(indev_encoder, group);` */ - - /*------------------ - * Button - * -----------------*/ - - /*Initialize your button if you have*/ - button_init(); - - /*Register a button input device*/ - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_BUTTON; - indev_drv.read_cb = button_read; - indev_button = lv_indev_drv_register(&indev_drv); - - /*Assign buttons to points on the screen*/ - static const lv_point_t btn_points[2] = { - {10, 10}, /*Button 0 -> x:10; y:10*/ - {40, 100}, /*Button 1 -> x:40; y:100*/ - }; - lv_indev_set_button_points(indev_button, btn_points); -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -/*------------------ - * Touchpad - * -----------------*/ - -/*Initialize your touchpad*/ -static void touchpad_init(void) -{ - /*Your code comes here*/ -} - -/* Will be called by the library to read the touchpad */ -static bool touchpad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data) -{ - static lv_coord_t last_x = 0; - static lv_coord_t last_y = 0; - - /*Save the pressed coordinates and the state*/ - if(touchpad_is_pressed()) { - touchpad_get_xy(&last_x, &last_y); - data->state = LV_INDEV_STATE_PR; - } else { - data->state = LV_INDEV_STATE_REL; - } - - /*Set the last pressed coordinates*/ - data->point.x = last_x; - data->point.y = last_y; - - /*Return `false` because we are not buffering and no more data to read*/ - return false; -} - -/*Return true is the touchpad is pressed*/ -static bool touchpad_is_pressed(void) -{ - /*Your code comes here*/ - - return false; -} - -/*Get the x and y coordinates if the touchpad is pressed*/ -static void touchpad_get_xy(lv_coord_t * x, lv_coord_t * y) -{ - /*Your code comes here*/ - - (*x) = 0; - (*y) = 0; -} - -/*------------------ - * Mouse - * -----------------*/ - -/* Initialize your mouse */ -static void mouse_init(void) -{ - /*Your code comes here*/ -} - -/* Will be called by the library to read the mouse */ -static bool mouse_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data) -{ - /*Get the current x and y coordinates*/ - mouse_get_xy(&data->point.x, &data->point.y); - - /*Get whether the mouse button is pressed or released*/ - if(mouse_is_pressed()) { - data->state = LV_INDEV_STATE_PR; - } else { - data->state = LV_INDEV_STATE_REL; - } - - /*Return `false` because we are not buffering and no more data to read*/ - return false; -} - -/*Return true is the mouse button is pressed*/ -static bool mouse_is_pressed(void) -{ - /*Your code comes here*/ - - return false; -} - -/*Get the x and y coordinates if the mouse is pressed*/ -static void mouse_get_xy(lv_coord_t * x, lv_coord_t * y) -{ - /*Your code comes here*/ - - (*x) = 0; - (*y) = 0; -} - -/*------------------ - * Keypad - * -----------------*/ - -/* Initialize your keypad */ -static void keypad_init(void) -{ - /*Your code comes here*/ -} - -/* Will be called by the library to read the mouse */ -static bool keypad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data) -{ - static uint32_t last_key = 0; - - /*Get the current x and y coordinates*/ - mouse_get_xy(&data->point.x, &data->point.y); - - /*Get whether the a key is pressed and save the pressed key*/ - uint32_t act_key = keypad_get_key(); - if(act_key != 0) { - data->state = LV_INDEV_STATE_PR; - - /*Translate the keys to LVGL control characters according to your key definitions*/ - switch(act_key) { - case 1: - act_key = LV_KEY_NEXT; - break; - case 2: - act_key = LV_KEY_PREV; - break; - case 3: - act_key = LV_KEY_LEFT; - break; - case 4: - act_key = LV_KEY_RIGHT; - break; - case 5: - act_key = LV_KEY_ENTER; - break; - } - - last_key = act_key; - } else { - data->state = LV_INDEV_STATE_REL; - } - - data->key = last_key; - - /*Return `false` because we are not buffering and no more data to read*/ - return false; -} - -/*Get the currently being pressed key. 0 if no key is pressed*/ -static uint32_t keypad_get_key(void) -{ - /*Your code comes here*/ - - return 0; -} - -/*------------------ - * Encoder - * -----------------*/ - -/* Initialize your keypad */ -static void encoder_init(void) -{ - /*Your code comes here*/ -} - -/* Will be called by the library to read the encoder */ -static bool encoder_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data) -{ - - data->enc_diff = encoder_diff; - data->state = encoder_state; - - /*Return `false` because we are not buffering and no more data to read*/ - return false; -} - -/*Call this function in an interrupt to process encoder events (turn, press)*/ -static void encoder_handler(void) -{ - /*Your code comes here*/ - - encoder_diff += 0; - encoder_state = LV_INDEV_STATE_REL; -} - -/*------------------ - * Button - * -----------------*/ - -/* Initialize your buttons */ -static void button_init(void) -{ - /*Your code comes here*/ -} - -/* Will be called by the library to read the button */ -static bool button_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data) -{ - - static uint8_t last_btn = 0; - - /*Get the pressed button's ID*/ - int8_t btn_act = button_get_pressed_id(); - - if(btn_act >= 0) { - data->state = LV_INDEV_STATE_PR; - last_btn = btn_act; - } else { - data->state = LV_INDEV_STATE_REL; - } - - /*Save the last pressed button's ID*/ - data->btn_id = last_btn; - - /*Return `false` because we are not buffering and no more data to read*/ - return false; -} - -/*Get ID (0, 1, 2 ..) of the pressed button*/ -static int8_t button_get_pressed_id(void) -{ - uint8_t i; - - /*Check to buttons see which is being pressed (assume there are 2 buttons)*/ - for(i = 0; i < 2; i++) { - /*Return the pressed button's ID*/ - if(button_is_pressed(i)) { - return i; - } - } - - /*No button pressed*/ - return -1; -} - -/*Test if `id` button is pressed or not*/ -static bool button_is_pressed(uint8_t id) -{ - - /*Your code comes here*/ - - return false; -} - -#else /* Enable this file at the top */ - -/* This dummy typedef exists purely to silence -Wpedantic. */ -typedef int keep_pedantic_happy; -#endif diff --git a/lib/libesp32_lvgl/LVGL/library.json b/lib/libesp32_lvgl/LVGL/library.json deleted file mode 100644 index a36029d34..000000000 --- a/lib/libesp32_lvgl/LVGL/library.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "lvgl", - "version": "7.11.0", - "keywords": "graphics, gui, embedded, tft, lvgl", - "description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.", - "repository": { - "type": "git", - "url": "https://github.com/lvgl/lvgl.git" - }, - "license": "MIT", - "homepage": "https://lvgl.io", - "frameworks": "*", - "platforms": "*", - "build": { - "flags": [ "-I$PROJECT_DIR/tasmota/lvgl_berry" ] - } -} \ No newline at end of file diff --git a/lib/libesp32_lvgl/LVGL/lvgl.h b/lib/libesp32_lvgl/LVGL/lvgl.h deleted file mode 100644 index 4aa1d7e2b..000000000 --- a/lib/libesp32_lvgl/LVGL/lvgl.h +++ /dev/null @@ -1,151 +0,0 @@ -/** - * @file lvgl.h - * Include all LittleV GL related headers - */ - -#ifndef LVGL_H -#define LVGL_H - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************** - * CURRENT VERSION OF LVGL - ***************************/ -#define LVGL_VERSION_MAJOR 7 -#define LVGL_VERSION_MINOR 11 -#define LVGL_VERSION_PATCH 0 -#define LVGL_VERSION_INFO "" - -/********************* - * INCLUDES - *********************/ - -#include "src/lv_misc/lv_log.h" -#include "src/lv_misc/lv_task.h" -#include "src/lv_misc/lv_math.h" -#include "src/lv_misc/lv_async.h" - -#include "src/lv_hal/lv_hal.h" - -#include "src/lv_core/lv_obj.h" -#include "src/lv_core/lv_group.h" -#include "src/lv_core/lv_indev.h" - -#include "src/lv_core/lv_refr.h" -#include "src/lv_core/lv_disp.h" - -#include "src/lv_themes/lv_theme.h" - -#include "src/lv_font/lv_font.h" -#include "src/lv_font/lv_font_loader.h" -#include "src/lv_font/lv_font_fmt_txt.h" -#include "src/lv_misc/lv_printf.h" - -#include "src/lv_widgets/lv_btn.h" -#include "src/lv_widgets/lv_imgbtn.h" -#include "src/lv_widgets/lv_img.h" -#include "src/lv_widgets/lv_label.h" -#include "src/lv_widgets/lv_line.h" -#include "src/lv_widgets/lv_page.h" -#include "src/lv_widgets/lv_cont.h" -#include "src/lv_widgets/lv_list.h" -#include "src/lv_widgets/lv_chart.h" -#include "src/lv_widgets/lv_table.h" -#include "src/lv_widgets/lv_checkbox.h" -#include "src/lv_widgets/lv_cpicker.h" -#include "src/lv_widgets/lv_bar.h" -#include "src/lv_widgets/lv_slider.h" -#include "src/lv_widgets/lv_led.h" -#include "src/lv_widgets/lv_btnmatrix.h" -#include "src/lv_widgets/lv_keyboard.h" -#include "src/lv_widgets/lv_dropdown.h" -#include "src/lv_widgets/lv_roller.h" -#include "src/lv_widgets/lv_textarea.h" -#include "src/lv_widgets/lv_canvas.h" -#include "src/lv_widgets/lv_win.h" -#include "src/lv_widgets/lv_tabview.h" -#include "src/lv_widgets/lv_tileview.h" -#include "src/lv_widgets/lv_msgbox.h" -#include "src/lv_widgets/lv_objmask.h" -#include "src/lv_widgets/lv_gauge.h" -#include "src/lv_widgets/lv_linemeter.h" -#include "src/lv_widgets/lv_switch.h" -#include "src/lv_widgets/lv_arc.h" -#include "src/lv_widgets/lv_spinner.h" -#include "src/lv_widgets/lv_calendar.h" -#include "src/lv_widgets/lv_spinbox.h" - -#include "src/lv_draw/lv_img_cache.h" - -#include "src/lv_api_map.h" - -/********************* - * DEFINES - *********************/ - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * GLOBAL PROTOTYPES - **********************/ - -/********************** - * MACROS - **********************/ - -/** Gives 1 if the x.y.z version is supported in the current version - * Usage: - * - * - Require v6 - * #if LV_VERSION_CHECK(6,0,0) - * new_func_in_v6(); - * #endif - * - * - * - Require at least v5.3 - * #if LV_VERSION_CHECK(5,3,0) - * new_feature_from_v5_3(); - * #endif - * - * - * - Require v5.3.2 bugfixes - * #if LV_VERSION_CHECK(5,3,2) - * bugfix_in_v5_3_2(); - * #endif - * - * */ -#define LV_VERSION_CHECK(x,y,z) (x == LVGL_VERSION_MAJOR && (y < LVGL_VERSION_MINOR || (y == LVGL_VERSION_MINOR && z <= LVGL_VERSION_PATCH))) - -/** - * Wrapper functions for VERSION macros - */ - -static inline int lv_version_major(void) -{ - return LVGL_VERSION_MAJOR; -} - -static inline int lv_version_minor(void) -{ - return LVGL_VERSION_MINOR; -} - -static inline int lv_version_patch(void) -{ - return LVGL_VERSION_PATCH; -} - -static inline const char *lv_version_info(void) -{ - return LVGL_VERSION_INFO; -} - -#ifdef __cplusplus -} -#endif - -#endif /*LVGL_H*/ diff --git a/lib/libesp32_lvgl/LVGL/scripts/Doxyfile b/lib/libesp32_lvgl/LVGL/scripts/Doxyfile deleted file mode 100644 index 7120f5d27..000000000 --- a/lib/libesp32_lvgl/LVGL/scripts/Doxyfile +++ /dev/null @@ -1,2455 +0,0 @@ -# Doxyfile 1.8.13 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "LittlevGL" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = ../docs/api_doc - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 0. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 0 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = YES - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = NO - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = NO - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = NO - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "WARNING: $file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = ../src - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. - -FILE_PATTERNS = *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse-libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /
    - -

    This is the complete list of members for IRDaikin64, including all inherited members.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    _IRDaikin64private
    _irsendIRDaikin64private
    begin(void)IRDaikin64
    calcChecksum(const uint64_t state)IRDaikin64static
    calibrate(void)IRDaikin64inline
    checksum(void)IRDaikin64private
    convertFan(const stdAc::fanspeed_t speed)IRDaikin64static
    convertMode(const stdAc::opmode_t mode)IRDaikin64static
    getClock(void) constIRDaikin64
    getFan(void) constIRDaikin64
    getMode(void) constIRDaikin64
    getOffTime(void) constIRDaikin64
    getOffTimeEnabled(void) constIRDaikin64
    getOnTime(void) constIRDaikin64
    getOnTimeEnabled(void) constIRDaikin64
    getPowerToggle(void) constIRDaikin64
    getQuiet(void) constIRDaikin64
    getRaw(void)IRDaikin64
    getSleep(void) constIRDaikin64
    getSwingVertical(void) constIRDaikin64
    getTemp(void) constIRDaikin64
    getTurbo(void) constIRDaikin64
    IRDaikin64(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)IRDaikin64explicit
    send(const uint16_t repeat=kDaikin64DefaultRepeat)IRDaikin64
    setClock(const uint16_t mins_since_midnight)IRDaikin64
    setFan(const uint8_t fan)IRDaikin64
    setMode(const uint8_t mode)IRDaikin64
    setOffTime(const uint16_t mins_since_midnight)IRDaikin64
    setOffTimeEnabled(const bool on)IRDaikin64
    setOnTime(const uint16_t mins_since_midnight)IRDaikin64
    setOnTimeEnabled(const bool on)IRDaikin64
    setPowerToggle(const bool on)IRDaikin64
    setQuiet(const bool on)IRDaikin64
    setRaw(const uint64_t new_state)IRDaikin64
    setSleep(const bool on)IRDaikin64
    setSwingVertical(const bool on)IRDaikin64
    setTemp(const uint8_t temp)IRDaikin64
    setTurbo(const bool on)IRDaikin64
    stateReset(void)IRDaikin64private
    toCommon(const stdAc::state_t *prev=NULL) constIRDaikin64
    toCommonFanSpeed(const uint8_t speed)IRDaikin64static
    toCommonMode(const uint8_t mode)IRDaikin64static
    toString(void) constIRDaikin64
    validChecksum(const uint64_t state)IRDaikin64static